{
  "version": 3,
  "sources": ["../cjs-shim.ts", "../node_modules/commander/lib/error.js", "../node_modules/commander/lib/argument.js", "../node_modules/commander/lib/help.js", "../node_modules/commander/lib/option.js", "../node_modules/commander/lib/suggestSimilar.js", "../node_modules/commander/lib/command.js", "../node_modules/commander/index.js", "../node_modules/isexe/windows.js", "../node_modules/isexe/mode.js", "../node_modules/isexe/index.js", "../node_modules/which/which.js", "../node_modules/path-key/index.js", "../node_modules/cross-spawn/lib/util/resolveCommand.js", "../node_modules/cross-spawn/lib/util/escape.js", "../node_modules/shebang-regex/index.js", "../node_modules/shebang-command/index.js", "../node_modules/cross-spawn/lib/util/readShebang.js", "../node_modules/cross-spawn/lib/parse.js", "../node_modules/cross-spawn/lib/enoent.js", "../node_modules/cross-spawn/index.js", "../node_modules/picomatch/lib/constants.js", "../node_modules/picomatch/lib/utils.js", "../node_modules/picomatch/lib/scan.js", "../node_modules/picomatch/lib/parse.js", "../node_modules/picomatch/lib/picomatch.js", "../node_modules/picomatch/index.js", "../node_modules/readdirp/index.js", "../node_modules/normalize-path/index.js", "../node_modules/anymatch/index.js", "../node_modules/is-extglob/index.js", "../node_modules/is-glob/index.js", "../node_modules/glob-parent/index.js", "../node_modules/braces/lib/utils.js", "../node_modules/braces/lib/stringify.js", "../node_modules/is-number/index.js", "../node_modules/to-regex-range/index.js", "../node_modules/fill-range/index.js", "../node_modules/braces/lib/compile.js", "../node_modules/braces/lib/expand.js", "../node_modules/braces/lib/constants.js", "../node_modules/braces/lib/parse.js", "../node_modules/braces/index.js", "../node_modules/binary-extensions/binary-extensions.json", "../node_modules/binary-extensions/index.js", "../node_modules/is-binary-path/index.js", "../node_modules/chokidar/lib/constants.js", "../node_modules/chokidar/lib/nodefs-handler.js", "../node_modules/chokidar/lib/fsevents-handler.js", "../node_modules/chokidar/index.js", "../node_modules/@iarna/toml/lib/parser.js", "../node_modules/@iarna/toml/lib/create-datetime.js", "../node_modules/@iarna/toml/lib/format-num.js", "../node_modules/@iarna/toml/lib/create-datetime-float.js", "../node_modules/@iarna/toml/lib/create-date.js", "../node_modules/@iarna/toml/lib/create-time.js", "../node_modules/@iarna/toml/lib/toml-parser.js", "../node_modules/@iarna/toml/parse-pretty-error.js", "../node_modules/@iarna/toml/parse-string.js", "../node_modules/@iarna/toml/parse-async.js", "../node_modules/@iarna/toml/parse-stream.js", "../node_modules/@iarna/toml/parse.js", "../node_modules/@iarna/toml/stringify.js", "../node_modules/@iarna/toml/toml.js", "../node_modules/supports-hyperlinks/node_modules/has-flag/index.js", "../node_modules/supports-hyperlinks/node_modules/supports-color/index.js", "../node_modules/supports-hyperlinks/index.js", "../node_modules/dotenv/package.json", "../node_modules/dotenv/lib/main.js", "../node_modules/@clerk/clerk-js/dist/clerk.headless.js", "../node_modules/@clerk/clerk-js/headless/index.js", "../node_modules/async-listen/dist/index.js", "../node_modules/restore-cursor/node_modules/mimic-fn/index.js", "../node_modules/restore-cursor/node_modules/onetime/index.js", "../node_modules/restore-cursor/node_modules/signal-exit/signals.js", "../node_modules/restore-cursor/node_modules/signal-exit/index.js", "../node_modules/cli-spinners/spinners.json", "../node_modules/cli-spinners/index.js", "../node_modules/ora/node_modules/emoji-regex/index.js", "../node_modules/undici/lib/core/symbols.js", "../node_modules/undici/lib/core/errors.js", "../node_modules/undici/lib/core/constants.js", "../node_modules/undici/lib/core/tree.js", "../node_modules/undici/lib/core/util.js", "../node_modules/undici/lib/core/diagnostics.js", "../node_modules/undici/lib/core/request.js", "../node_modules/undici/lib/dispatcher/dispatcher.js", "../node_modules/undici/lib/dispatcher/dispatcher-base.js", "../node_modules/undici/lib/core/connect.js", "../node_modules/undici/lib/util/timers.js", "../node_modules/undici/lib/llhttp/utils.js", "../node_modules/undici/lib/llhttp/constants.js", "../node_modules/undici/lib/llhttp/llhttp-wasm.js", "../node_modules/undici/lib/llhttp/llhttp_simd-wasm.js", "../node_modules/undici/lib/web/fetch/constants.js", "../node_modules/undici/lib/web/fetch/global.js", "../node_modules/undici/lib/web/fetch/data-url.js", "../node_modules/undici/lib/web/fetch/webidl.js", "../node_modules/undici/lib/web/fetch/util.js", "../node_modules/undici/lib/web/fetch/symbols.js", "../node_modules/undici/lib/web/fetch/file.js", "../node_modules/undici/lib/web/fetch/formdata.js", "../node_modules/undici/lib/web/fetch/formdata-parser.js", "../node_modules/undici/lib/web/fetch/body.js", "../node_modules/undici/lib/dispatcher/client-h1.js", "../node_modules/undici/lib/dispatcher/client-h2.js", "../node_modules/undici/lib/handler/redirect-handler.js", "../node_modules/undici/lib/interceptor/redirect-interceptor.js", "../node_modules/undici/lib/dispatcher/client.js", "../node_modules/undici/lib/dispatcher/fixed-queue.js", "../node_modules/undici/lib/dispatcher/pool-stats.js", "../node_modules/undici/lib/dispatcher/pool-base.js", "../node_modules/undici/lib/dispatcher/pool.js", "../node_modules/undici/lib/dispatcher/balanced-pool.js", "../node_modules/undici/lib/dispatcher/agent.js", "../node_modules/undici/lib/dispatcher/proxy-agent.js", "../node_modules/undici/lib/dispatcher/env-http-proxy-agent.js", "../node_modules/undici/lib/handler/retry-handler.js", "../node_modules/undici/lib/dispatcher/retry-agent.js", "../node_modules/undici/lib/api/readable.js", "../node_modules/undici/lib/api/util.js", "../node_modules/undici/lib/api/api-request.js", "../node_modules/undici/lib/api/abort-signal.js", "../node_modules/undici/lib/api/api-stream.js", "../node_modules/undici/lib/api/api-pipeline.js", "../node_modules/undici/lib/api/api-upgrade.js", "../node_modules/undici/lib/api/api-connect.js", "../node_modules/undici/lib/api/index.js", "../node_modules/undici/lib/mock/mock-errors.js", "../node_modules/undici/lib/mock/mock-symbols.js", "../node_modules/undici/lib/mock/mock-utils.js", "../node_modules/undici/lib/mock/mock-interceptor.js", "../node_modules/undici/lib/mock/mock-client.js", "../node_modules/undici/lib/mock/mock-pool.js", "../node_modules/undici/lib/mock/pluralizer.js", "../node_modules/undici/lib/mock/pending-interceptors-formatter.js", "../node_modules/undici/lib/mock/mock-agent.js", "../node_modules/undici/lib/global.js", "../node_modules/undici/lib/handler/decorator-handler.js", "../node_modules/undici/lib/interceptor/redirect.js", "../node_modules/undici/lib/interceptor/retry.js", "../node_modules/undici/lib/interceptor/dump.js", "../node_modules/undici/lib/web/fetch/headers.js", "../node_modules/undici/lib/web/fetch/response.js", "../node_modules/undici/lib/web/fetch/dispatcher-weakref.js", "../node_modules/undici/lib/web/fetch/request.js", "../node_modules/undici/lib/web/fetch/index.js", "../node_modules/undici/lib/web/fileapi/symbols.js", "../node_modules/undici/lib/web/fileapi/progressevent.js", "../node_modules/undici/lib/web/fileapi/encoding.js", "../node_modules/undici/lib/web/fileapi/util.js", "../node_modules/undici/lib/web/fileapi/filereader.js", "../node_modules/undici/lib/web/cache/symbols.js", "../node_modules/undici/lib/web/cache/util.js", "../node_modules/undici/lib/web/cache/cache.js", "../node_modules/undici/lib/web/cache/cachestorage.js", "../node_modules/undici/lib/web/cookies/constants.js", "../node_modules/undici/lib/web/cookies/util.js", "../node_modules/undici/lib/web/cookies/parse.js", "../node_modules/undici/lib/web/cookies/index.js", "../node_modules/undici/lib/web/websocket/events.js", "../node_modules/undici/lib/web/websocket/constants.js", "../node_modules/undici/lib/web/websocket/symbols.js", "../node_modules/undici/lib/web/websocket/util.js", "../node_modules/undici/lib/web/websocket/frame.js", "../node_modules/undici/lib/web/websocket/connection.js", "../node_modules/undici/lib/web/websocket/permessage-deflate.js", "../node_modules/undici/lib/web/websocket/receiver.js", "../node_modules/undici/lib/web/websocket/sender.js", "../node_modules/undici/lib/web/websocket/websocket.js", "../node_modules/undici/lib/web/eventsource/util.js", "../node_modules/undici/lib/web/eventsource/eventsource-stream.js", "../node_modules/undici/lib/web/eventsource/eventsource.js", "../node_modules/undici/index.js", "../src/bin.ts", "../node_modules/commander/esm.mjs", "../package.json", "../src/dev.ts", "../node_modules/execa/index.js", "../node_modules/execa/lib/methods/create.js", "../node_modules/is-plain-obj/index.js", "../node_modules/execa/lib/methods/parameters.js", "../node_modules/execa/lib/arguments/file-url.js", "../node_modules/execa/lib/methods/template.js", "../node_modules/execa/lib/utils/uint-array.js", "../node_modules/execa/lib/methods/main-sync.js", "../node_modules/execa/lib/arguments/command.js", "../node_modules/execa/lib/verbose/start.js", "../node_modules/yoctocolors/index.js", "../node_modules/execa/lib/verbose/info.js", "../node_modules/execa/lib/verbose/log.js", "../node_modules/figures/index.js", "../node_modules/is-unicode-supported/index.js", "../node_modules/execa/lib/return/duration.js", "../node_modules/execa/lib/arguments/escape.js", "../node_modules/execa/lib/arguments/specific.js", "../node_modules/execa/lib/utils/standard-stream.js", "../node_modules/execa/lib/arguments/options.js", "../node_modules/npm-run-path/index.js", "../node_modules/npm-run-path/node_modules/path-key/index.js", "../node_modules/execa/lib/terminate/kill.js", "../node_modules/execa/lib/return/final-error.js", "../node_modules/execa/lib/terminate/signal.js", "../node_modules/execa/lib/terminate/timeout.js", "../node_modules/execa/lib/methods/node.js", "../node_modules/execa/lib/arguments/encoding-option.js", "../node_modules/execa/lib/arguments/cwd.js", "../node_modules/execa/lib/return/result.js", "../node_modules/human-signals/build/src/main.js", "../node_modules/human-signals/build/src/realtime.js", "../node_modules/human-signals/build/src/signals.js", "../node_modules/human-signals/build/src/core.js", "../node_modules/execa/lib/return/message.js", "../node_modules/strip-final-newline/index.js", "../node_modules/execa/lib/io/max-buffer.js", "../node_modules/get-stream/source/index.js", "../node_modules/get-stream/source/stream.js", "../node_modules/is-stream/index.js", "../node_modules/@sec-ant/readable-stream/dist/ponyfill/index.js", "../node_modules/@sec-ant/readable-stream/dist/ponyfill/asyncIterator.js", "../node_modules/@sec-ant/readable-stream/dist/ponyfill/fromAnyIterable.js", "../node_modules/get-stream/source/exports.js", "../node_modules/get-stream/source/array.js", "../node_modules/get-stream/source/contents.js", "../node_modules/get-stream/source/utils.js", "../node_modules/get-stream/source/array-buffer.js", "../node_modules/get-stream/source/string.js", "../node_modules/execa/lib/return/reject.js", "../node_modules/execa/lib/verbose/complete.js", "../node_modules/pretty-ms/index.js", "../node_modules/parse-ms/index.js", "../node_modules/execa/lib/verbose/error.js", "../node_modules/execa/lib/stdio/handle-sync.js", "../node_modules/execa/lib/stdio/handle.js", "../node_modules/execa/lib/transform/normalize.js", "../node_modules/execa/lib/stdio/type.js", "../node_modules/execa/lib/transform/object-mode.js", "../node_modules/execa/lib/stdio/direction.js", "../node_modules/execa/lib/stdio/stdio-option.js", "../node_modules/execa/lib/stdio/native.js", "../node_modules/execa/lib/arguments/fd-options.js", "../node_modules/execa/lib/stdio/input-option.js", "../node_modules/execa/lib/stdio/duplicate.js", "../node_modules/execa/lib/io/strip-newline.js", "../node_modules/execa/lib/io/input-sync.js", "../node_modules/execa/lib/transform/generator.js", "../node_modules/execa/lib/transform/split.js", "../node_modules/execa/lib/transform/validate.js", "../node_modules/execa/lib/transform/encoding-transform.js", "../node_modules/execa/lib/transform/run-async.js", "../node_modules/execa/lib/transform/run-sync.js", "../node_modules/execa/lib/io/output-sync.js", "../node_modules/execa/lib/verbose/output.js", "../node_modules/execa/lib/resolve/all-sync.js", "../node_modules/execa/lib/resolve/exit-sync.js", "../node_modules/execa/lib/resolve/exit-async.js", "../node_modules/execa/lib/methods/main-async.js", "../node_modules/execa/lib/return/early-error.js", "../node_modules/execa/lib/stdio/handle-async.js", "../node_modules/execa/lib/io/output-async.js", "../node_modules/@sindresorhus/merge-streams/index.js", "../node_modules/execa/lib/utils/max-listeners.js", "../node_modules/execa/lib/io/pipeline.js", "../node_modules/execa/lib/terminate/cleanup.js", "../node_modules/signal-exit/src/index.ts", "../node_modules/signal-exit/src/signals.ts", "../node_modules/execa/lib/pipe/setup.js", "../node_modules/execa/lib/pipe/pipe-arguments.js", "../node_modules/execa/lib/pipe/throw.js", "../node_modules/execa/lib/pipe/sequence.js", "../node_modules/execa/lib/pipe/streaming.js", "../node_modules/execa/lib/pipe/abort.js", "../node_modules/execa/lib/resolve/all-async.js", "../node_modules/execa/lib/resolve/stdio.js", "../node_modules/execa/lib/io/contents.js", "../node_modules/execa/lib/io/iterate.js", "../node_modules/execa/lib/resolve/wait-stream.js", "../node_modules/execa/lib/resolve/wait-subprocess.js", "../node_modules/execa/lib/convert/add.js", "../node_modules/execa/lib/convert/concurrent.js", "../node_modules/execa/lib/utils/deferred.js", "../node_modules/execa/lib/convert/readable.js", "../node_modules/execa/lib/convert/shared.js", "../node_modules/execa/lib/convert/writable.js", "../node_modules/execa/lib/convert/duplex.js", "../node_modules/execa/lib/convert/iterable.js", "../node_modules/execa/lib/methods/promise.js", "../node_modules/execa/lib/methods/bind.js", "../node_modules/execa/lib/methods/command.js", "../node_modules/execa/lib/methods/script.js", "../src/code-gen/esbuild.ts", "../src/code-gen/getAssets.ts", "../node_modules/find-up/index.js", "../node_modules/locate-path/index.js", "../node_modules/p-locate/index.js", "../node_modules/p-limit/index.js", "../node_modules/yocto-queue/index.js", "../node_modules/unicorn-magic/node.js", "../node_modules/path-exists/index.js", "../src/constants.ts", "../src/utils/index.ts", "../src/config.ts", "../src/schema.ts", "../node_modules/zod/lib/index.mjs", "../src/utils/errror.ts", "../node_modules/chalk/source/index.js", "../node_modules/chalk/source/vendor/ansi-styles/index.js", "../node_modules/chalk/source/vendor/supports-color/index.js", "../node_modules/chalk/source/utilities.js", "../node_modules/terminal-link/index.js", "../node_modules/ansi-escapes/index.js", "../src/env.ts", "../src/deploy.ts", "../src/auth/auth.ts", "../src/auth/user.ts", "../src/auth/authServer.ts", "../node_modules/get-port/index.js", "../node_modules/open/index.js", "../node_modules/is-wsl/index.js", "../node_modules/is-inside-container/index.js", "../node_modules/is-docker/index.js", "../node_modules/define-lazy-prop/index.js", "../node_modules/default-browser/index.js", "../node_modules/default-browser-id/index.js", "../node_modules/bundle-name/index.js", "../node_modules/run-applescript/index.js", "../node_modules/default-browser/windows.js", "../src/errors/UserCancellationError.ts", "../src/errors/BaseError.ts", "../node_modules/ora/index.js", "../node_modules/cli-cursor/index.js", "../node_modules/restore-cursor/index.js", "../node_modules/log-symbols/index.js", "../node_modules/log-symbols/node_modules/is-unicode-supported/index.js", "../node_modules/strip-ansi/index.js", "../node_modules/ansi-regex/index.js", "../node_modules/ora/node_modules/string-width/index.js", "../node_modules/get-east-asian-width/index.js", "../node_modules/get-east-asian-width/lookup.js", "../node_modules/is-interactive/index.js", "../node_modules/stdin-discarder/index.js", "../src/utils/apiFetch.ts", "../src/errors/RescoketError.ts", "../node_modules/zod-validation-error/lib/isZodErrorLike.ts", "../node_modules/zod-validation-error/lib/ValidationError.ts", "../node_modules/zod-validation-error/lib/isValidationError.ts", "../node_modules/zod-validation-error/lib/isValidationErrorLike.ts", "../node_modules/zod-validation-error/lib/fromZodIssue.ts", "../node_modules/zod-validation-error/lib/config.ts", "../node_modules/zod-validation-error/lib/prefixMessage.ts", "../node_modules/zod-validation-error/lib/utils/joinPath.ts", "../node_modules/zod-validation-error/lib/utils/NonEmptyArray.ts", "../node_modules/zod-validation-error/lib/errorMap.ts", "../node_modules/zod-validation-error/lib/fromZodError.ts", "../node_modules/zod-validation-error/lib/toValidationError.ts", "../node_modules/zod-validation-error/lib/fromError.ts"],
  "sourcesContent": ["//* source https://github.com/evanw/esbuild/issues/1921#issuecomment-1898197331\r\n//* Life saver, thankx so much\r\n\r\nimport { createRequire } from \"node:module\";\r\nimport path from \"node:path\";\r\nimport url from \"node:url\";\r\n\r\nglobalThis.require = createRequire(import.meta.url);\r\nglobalThis.__filename = url.fileURLToPath(import.meta.url);\r\nglobalThis.__dirname = path.dirname(__filename);\r\n", "/**\n * CommanderError class\n */\nclass CommanderError extends Error {\n  /**\n   * Constructs the CommanderError class\n   * @param {number} exitCode suggested exit code which could be used with process.exit\n   * @param {string} code an id string representing the error\n   * @param {string} message human-readable description of the error\n   */\n  constructor(exitCode, code, message) {\n    super(message);\n    // properly capture stack trace in Node.js\n    Error.captureStackTrace(this, this.constructor);\n    this.name = this.constructor.name;\n    this.code = code;\n    this.exitCode = exitCode;\n    this.nestedError = undefined;\n  }\n}\n\n/**\n * InvalidArgumentError class\n */\nclass InvalidArgumentError extends CommanderError {\n  /**\n   * Constructs the InvalidArgumentError class\n   * @param {string} [message] explanation of why argument is invalid\n   */\n  constructor(message) {\n    super(1, 'commander.invalidArgument', message);\n    // properly capture stack trace in Node.js\n    Error.captureStackTrace(this, this.constructor);\n    this.name = this.constructor.name;\n  }\n}\n\nexports.CommanderError = CommanderError;\nexports.InvalidArgumentError = InvalidArgumentError;\n", "const { InvalidArgumentError } = require('./error.js');\n\nclass Argument {\n  /**\n   * Initialize a new command argument with the given name and description.\n   * The default is that the argument is required, and you can explicitly\n   * indicate this with <> around the name. Put [] around the name for an optional argument.\n   *\n   * @param {string} name\n   * @param {string} [description]\n   */\n\n  constructor(name, description) {\n    this.description = description || '';\n    this.variadic = false;\n    this.parseArg = undefined;\n    this.defaultValue = undefined;\n    this.defaultValueDescription = undefined;\n    this.argChoices = undefined;\n\n    switch (name[0]) {\n      case '<': // e.g. <required>\n        this.required = true;\n        this._name = name.slice(1, -1);\n        break;\n      case '[': // e.g. [optional]\n        this.required = false;\n        this._name = name.slice(1, -1);\n        break;\n      default:\n        this.required = true;\n        this._name = name;\n        break;\n    }\n\n    if (this._name.length > 3 && this._name.slice(-3) === '...') {\n      this.variadic = true;\n      this._name = this._name.slice(0, -3);\n    }\n  }\n\n  /**\n   * Return argument name.\n   *\n   * @return {string}\n   */\n\n  name() {\n    return this._name;\n  }\n\n  /**\n   * @package\n   */\n\n  _concatValue(value, previous) {\n    if (previous === this.defaultValue || !Array.isArray(previous)) {\n      return [value];\n    }\n\n    return previous.concat(value);\n  }\n\n  /**\n   * Set the default value, and optionally supply the description to be displayed in the help.\n   *\n   * @param {*} value\n   * @param {string} [description]\n   * @return {Argument}\n   */\n\n  default(value, description) {\n    this.defaultValue = value;\n    this.defaultValueDescription = description;\n    return this;\n  }\n\n  /**\n   * Set the custom handler for processing CLI command arguments into argument values.\n   *\n   * @param {Function} [fn]\n   * @return {Argument}\n   */\n\n  argParser(fn) {\n    this.parseArg = fn;\n    return this;\n  }\n\n  /**\n   * Only allow argument value to be one of choices.\n   *\n   * @param {string[]} values\n   * @return {Argument}\n   */\n\n  choices(values) {\n    this.argChoices = values.slice();\n    this.parseArg = (arg, previous) => {\n      if (!this.argChoices.includes(arg)) {\n        throw new InvalidArgumentError(\n          `Allowed choices are ${this.argChoices.join(', ')}.`,\n        );\n      }\n      if (this.variadic) {\n        return this._concatValue(arg, previous);\n      }\n      return arg;\n    };\n    return this;\n  }\n\n  /**\n   * Make argument required.\n   *\n   * @returns {Argument}\n   */\n  argRequired() {\n    this.required = true;\n    return this;\n  }\n\n  /**\n   * Make argument optional.\n   *\n   * @returns {Argument}\n   */\n  argOptional() {\n    this.required = false;\n    return this;\n  }\n}\n\n/**\n * Takes an argument and returns its human readable equivalent for help usage.\n *\n * @param {Argument} arg\n * @return {string}\n * @private\n */\n\nfunction humanReadableArgName(arg) {\n  const nameOutput = arg.name() + (arg.variadic === true ? '...' : '');\n\n  return arg.required ? '<' + nameOutput + '>' : '[' + nameOutput + ']';\n}\n\nexports.Argument = Argument;\nexports.humanReadableArgName = humanReadableArgName;\n", "const { humanReadableArgName } = require('./argument.js');\n\n/**\n * TypeScript import types for JSDoc, used by Visual Studio Code IntelliSense and `npm run typescript-checkJS`\n * https://www.typescriptlang.org/docs/handbook/jsdoc-supported-types.html#import-types\n * @typedef { import(\"./argument.js\").Argument } Argument\n * @typedef { import(\"./command.js\").Command } Command\n * @typedef { import(\"./option.js\").Option } Option\n */\n\n// Although this is a class, methods are static in style to allow override using subclass or just functions.\nclass Help {\n  constructor() {\n    this.helpWidth = undefined;\n    this.sortSubcommands = false;\n    this.sortOptions = false;\n    this.showGlobalOptions = false;\n  }\n\n  /**\n   * Get an array of the visible subcommands. Includes a placeholder for the implicit help command, if there is one.\n   *\n   * @param {Command} cmd\n   * @returns {Command[]}\n   */\n\n  visibleCommands(cmd) {\n    const visibleCommands = cmd.commands.filter((cmd) => !cmd._hidden);\n    const helpCommand = cmd._getHelpCommand();\n    if (helpCommand && !helpCommand._hidden) {\n      visibleCommands.push(helpCommand);\n    }\n    if (this.sortSubcommands) {\n      visibleCommands.sort((a, b) => {\n        // @ts-ignore: because overloaded return type\n        return a.name().localeCompare(b.name());\n      });\n    }\n    return visibleCommands;\n  }\n\n  /**\n   * Compare options for sort.\n   *\n   * @param {Option} a\n   * @param {Option} b\n   * @returns {number}\n   */\n  compareOptions(a, b) {\n    const getSortKey = (option) => {\n      // WYSIWYG for order displayed in help. Short used for comparison if present. No special handling for negated.\n      return option.short\n        ? option.short.replace(/^-/, '')\n        : option.long.replace(/^--/, '');\n    };\n    return getSortKey(a).localeCompare(getSortKey(b));\n  }\n\n  /**\n   * Get an array of the visible options. Includes a placeholder for the implicit help option, if there is one.\n   *\n   * @param {Command} cmd\n   * @returns {Option[]}\n   */\n\n  visibleOptions(cmd) {\n    const visibleOptions = cmd.options.filter((option) => !option.hidden);\n    // Built-in help option.\n    const helpOption = cmd._getHelpOption();\n    if (helpOption && !helpOption.hidden) {\n      // Automatically hide conflicting flags. Bit dubious but a historical behaviour that is convenient for single-command programs.\n      const removeShort = helpOption.short && cmd._findOption(helpOption.short);\n      const removeLong = helpOption.long && cmd._findOption(helpOption.long);\n      if (!removeShort && !removeLong) {\n        visibleOptions.push(helpOption); // no changes needed\n      } else if (helpOption.long && !removeLong) {\n        visibleOptions.push(\n          cmd.createOption(helpOption.long, helpOption.description),\n        );\n      } else if (helpOption.short && !removeShort) {\n        visibleOptions.push(\n          cmd.createOption(helpOption.short, helpOption.description),\n        );\n      }\n    }\n    if (this.sortOptions) {\n      visibleOptions.sort(this.compareOptions);\n    }\n    return visibleOptions;\n  }\n\n  /**\n   * Get an array of the visible global options. (Not including help.)\n   *\n   * @param {Command} cmd\n   * @returns {Option[]}\n   */\n\n  visibleGlobalOptions(cmd) {\n    if (!this.showGlobalOptions) return [];\n\n    const globalOptions = [];\n    for (\n      let ancestorCmd = cmd.parent;\n      ancestorCmd;\n      ancestorCmd = ancestorCmd.parent\n    ) {\n      const visibleOptions = ancestorCmd.options.filter(\n        (option) => !option.hidden,\n      );\n      globalOptions.push(...visibleOptions);\n    }\n    if (this.sortOptions) {\n      globalOptions.sort(this.compareOptions);\n    }\n    return globalOptions;\n  }\n\n  /**\n   * Get an array of the arguments if any have a description.\n   *\n   * @param {Command} cmd\n   * @returns {Argument[]}\n   */\n\n  visibleArguments(cmd) {\n    // Side effect! Apply the legacy descriptions before the arguments are displayed.\n    if (cmd._argsDescription) {\n      cmd.registeredArguments.forEach((argument) => {\n        argument.description =\n          argument.description || cmd._argsDescription[argument.name()] || '';\n      });\n    }\n\n    // If there are any arguments with a description then return all the arguments.\n    if (cmd.registeredArguments.find((argument) => argument.description)) {\n      return cmd.registeredArguments;\n    }\n    return [];\n  }\n\n  /**\n   * Get the command term to show in the list of subcommands.\n   *\n   * @param {Command} cmd\n   * @returns {string}\n   */\n\n  subcommandTerm(cmd) {\n    // Legacy. Ignores custom usage string, and nested commands.\n    const args = cmd.registeredArguments\n      .map((arg) => humanReadableArgName(arg))\n      .join(' ');\n    return (\n      cmd._name +\n      (cmd._aliases[0] ? '|' + cmd._aliases[0] : '') +\n      (cmd.options.length ? ' [options]' : '') + // simplistic check for non-help option\n      (args ? ' ' + args : '')\n    );\n  }\n\n  /**\n   * Get the option term to show in the list of options.\n   *\n   * @param {Option} option\n   * @returns {string}\n   */\n\n  optionTerm(option) {\n    return option.flags;\n  }\n\n  /**\n   * Get the argument term to show in the list of arguments.\n   *\n   * @param {Argument} argument\n   * @returns {string}\n   */\n\n  argumentTerm(argument) {\n    return argument.name();\n  }\n\n  /**\n   * Get the longest command term length.\n   *\n   * @param {Command} cmd\n   * @param {Help} helper\n   * @returns {number}\n   */\n\n  longestSubcommandTermLength(cmd, helper) {\n    return helper.visibleCommands(cmd).reduce((max, command) => {\n      return Math.max(max, helper.subcommandTerm(command).length);\n    }, 0);\n  }\n\n  /**\n   * Get the longest option term length.\n   *\n   * @param {Command} cmd\n   * @param {Help} helper\n   * @returns {number}\n   */\n\n  longestOptionTermLength(cmd, helper) {\n    return helper.visibleOptions(cmd).reduce((max, option) => {\n      return Math.max(max, helper.optionTerm(option).length);\n    }, 0);\n  }\n\n  /**\n   * Get the longest global option term length.\n   *\n   * @param {Command} cmd\n   * @param {Help} helper\n   * @returns {number}\n   */\n\n  longestGlobalOptionTermLength(cmd, helper) {\n    return helper.visibleGlobalOptions(cmd).reduce((max, option) => {\n      return Math.max(max, helper.optionTerm(option).length);\n    }, 0);\n  }\n\n  /**\n   * Get the longest argument term length.\n   *\n   * @param {Command} cmd\n   * @param {Help} helper\n   * @returns {number}\n   */\n\n  longestArgumentTermLength(cmd, helper) {\n    return helper.visibleArguments(cmd).reduce((max, argument) => {\n      return Math.max(max, helper.argumentTerm(argument).length);\n    }, 0);\n  }\n\n  /**\n   * Get the command usage to be displayed at the top of the built-in help.\n   *\n   * @param {Command} cmd\n   * @returns {string}\n   */\n\n  commandUsage(cmd) {\n    // Usage\n    let cmdName = cmd._name;\n    if (cmd._aliases[0]) {\n      cmdName = cmdName + '|' + cmd._aliases[0];\n    }\n    let ancestorCmdNames = '';\n    for (\n      let ancestorCmd = cmd.parent;\n      ancestorCmd;\n      ancestorCmd = ancestorCmd.parent\n    ) {\n      ancestorCmdNames = ancestorCmd.name() + ' ' + ancestorCmdNames;\n    }\n    return ancestorCmdNames + cmdName + ' ' + cmd.usage();\n  }\n\n  /**\n   * Get the description for the command.\n   *\n   * @param {Command} cmd\n   * @returns {string}\n   */\n\n  commandDescription(cmd) {\n    // @ts-ignore: because overloaded return type\n    return cmd.description();\n  }\n\n  /**\n   * Get the subcommand summary to show in the list of subcommands.\n   * (Fallback to description for backwards compatibility.)\n   *\n   * @param {Command} cmd\n   * @returns {string}\n   */\n\n  subcommandDescription(cmd) {\n    // @ts-ignore: because overloaded return type\n    return cmd.summary() || cmd.description();\n  }\n\n  /**\n   * Get the option description to show in the list of options.\n   *\n   * @param {Option} option\n   * @return {string}\n   */\n\n  optionDescription(option) {\n    const extraInfo = [];\n\n    if (option.argChoices) {\n      extraInfo.push(\n        // use stringify to match the display of the default value\n        `choices: ${option.argChoices.map((choice) => JSON.stringify(choice)).join(', ')}`,\n      );\n    }\n    if (option.defaultValue !== undefined) {\n      // default for boolean and negated more for programmer than end user,\n      // but show true/false for boolean option as may be for hand-rolled env or config processing.\n      const showDefault =\n        option.required ||\n        option.optional ||\n        (option.isBoolean() && typeof option.defaultValue === 'boolean');\n      if (showDefault) {\n        extraInfo.push(\n          `default: ${option.defaultValueDescription || JSON.stringify(option.defaultValue)}`,\n        );\n      }\n    }\n    // preset for boolean and negated are more for programmer than end user\n    if (option.presetArg !== undefined && option.optional) {\n      extraInfo.push(`preset: ${JSON.stringify(option.presetArg)}`);\n    }\n    if (option.envVar !== undefined) {\n      extraInfo.push(`env: ${option.envVar}`);\n    }\n    if (extraInfo.length > 0) {\n      return `${option.description} (${extraInfo.join(', ')})`;\n    }\n\n    return option.description;\n  }\n\n  /**\n   * Get the argument description to show in the list of arguments.\n   *\n   * @param {Argument} argument\n   * @return {string}\n   */\n\n  argumentDescription(argument) {\n    const extraInfo = [];\n    if (argument.argChoices) {\n      extraInfo.push(\n        // use stringify to match the display of the default value\n        `choices: ${argument.argChoices.map((choice) => JSON.stringify(choice)).join(', ')}`,\n      );\n    }\n    if (argument.defaultValue !== undefined) {\n      extraInfo.push(\n        `default: ${argument.defaultValueDescription || JSON.stringify(argument.defaultValue)}`,\n      );\n    }\n    if (extraInfo.length > 0) {\n      const extraDescripton = `(${extraInfo.join(', ')})`;\n      if (argument.description) {\n        return `${argument.description} ${extraDescripton}`;\n      }\n      return extraDescripton;\n    }\n    return argument.description;\n  }\n\n  /**\n   * Generate the built-in help text.\n   *\n   * @param {Command} cmd\n   * @param {Help} helper\n   * @returns {string}\n   */\n\n  formatHelp(cmd, helper) {\n    const termWidth = helper.padWidth(cmd, helper);\n    const helpWidth = helper.helpWidth || 80;\n    const itemIndentWidth = 2;\n    const itemSeparatorWidth = 2; // between term and description\n    function formatItem(term, description) {\n      if (description) {\n        const fullText = `${term.padEnd(termWidth + itemSeparatorWidth)}${description}`;\n        return helper.wrap(\n          fullText,\n          helpWidth - itemIndentWidth,\n          termWidth + itemSeparatorWidth,\n        );\n      }\n      return term;\n    }\n    function formatList(textArray) {\n      return textArray.join('\\n').replace(/^/gm, ' '.repeat(itemIndentWidth));\n    }\n\n    // Usage\n    let output = [`Usage: ${helper.commandUsage(cmd)}`, ''];\n\n    // Description\n    const commandDescription = helper.commandDescription(cmd);\n    if (commandDescription.length > 0) {\n      output = output.concat([\n        helper.wrap(commandDescription, helpWidth, 0),\n        '',\n      ]);\n    }\n\n    // Arguments\n    const argumentList = helper.visibleArguments(cmd).map((argument) => {\n      return formatItem(\n        helper.argumentTerm(argument),\n        helper.argumentDescription(argument),\n      );\n    });\n    if (argumentList.length > 0) {\n      output = output.concat(['Arguments:', formatList(argumentList), '']);\n    }\n\n    // Options\n    const optionList = helper.visibleOptions(cmd).map((option) => {\n      return formatItem(\n        helper.optionTerm(option),\n        helper.optionDescription(option),\n      );\n    });\n    if (optionList.length > 0) {\n      output = output.concat(['Options:', formatList(optionList), '']);\n    }\n\n    if (this.showGlobalOptions) {\n      const globalOptionList = helper\n        .visibleGlobalOptions(cmd)\n        .map((option) => {\n          return formatItem(\n            helper.optionTerm(option),\n            helper.optionDescription(option),\n          );\n        });\n      if (globalOptionList.length > 0) {\n        output = output.concat([\n          'Global Options:',\n          formatList(globalOptionList),\n          '',\n        ]);\n      }\n    }\n\n    // Commands\n    const commandList = helper.visibleCommands(cmd).map((cmd) => {\n      return formatItem(\n        helper.subcommandTerm(cmd),\n        helper.subcommandDescription(cmd),\n      );\n    });\n    if (commandList.length > 0) {\n      output = output.concat(['Commands:', formatList(commandList), '']);\n    }\n\n    return output.join('\\n');\n  }\n\n  /**\n   * Calculate the pad width from the maximum term length.\n   *\n   * @param {Command} cmd\n   * @param {Help} helper\n   * @returns {number}\n   */\n\n  padWidth(cmd, helper) {\n    return Math.max(\n      helper.longestOptionTermLength(cmd, helper),\n      helper.longestGlobalOptionTermLength(cmd, helper),\n      helper.longestSubcommandTermLength(cmd, helper),\n      helper.longestArgumentTermLength(cmd, helper),\n    );\n  }\n\n  /**\n   * Wrap the given string to width characters per line, with lines after the first indented.\n   * Do not wrap if insufficient room for wrapping (minColumnWidth), or string is manually formatted.\n   *\n   * @param {string} str\n   * @param {number} width\n   * @param {number} indent\n   * @param {number} [minColumnWidth=40]\n   * @return {string}\n   *\n   */\n\n  wrap(str, width, indent, minColumnWidth = 40) {\n    // Full \\s characters, minus the linefeeds.\n    const indents =\n      ' \\\\f\\\\t\\\\v\\u00a0\\u1680\\u2000-\\u200a\\u202f\\u205f\\u3000\\ufeff';\n    // Detect manually wrapped and indented strings by searching for line break followed by spaces.\n    const manualIndent = new RegExp(`[\\\\n][${indents}]+`);\n    if (str.match(manualIndent)) return str;\n    // Do not wrap if not enough room for a wrapped column of text (as could end up with a word per line).\n    const columnWidth = width - indent;\n    if (columnWidth < minColumnWidth) return str;\n\n    const leadingStr = str.slice(0, indent);\n    const columnText = str.slice(indent).replace('\\r\\n', '\\n');\n    const indentString = ' '.repeat(indent);\n    const zeroWidthSpace = '\\u200B';\n    const breaks = `\\\\s${zeroWidthSpace}`;\n    // Match line end (so empty lines don't collapse),\n    // or as much text as will fit in column, or excess text up to first break.\n    const regex = new RegExp(\n      `\\n|.{1,${columnWidth - 1}}([${breaks}]|$)|[^${breaks}]+?([${breaks}]|$)`,\n      'g',\n    );\n    const lines = columnText.match(regex) || [];\n    return (\n      leadingStr +\n      lines\n        .map((line, i) => {\n          if (line === '\\n') return ''; // preserve empty lines\n          return (i > 0 ? indentString : '') + line.trimEnd();\n        })\n        .join('\\n')\n    );\n  }\n}\n\nexports.Help = Help;\n", "const { InvalidArgumentError } = require('./error.js');\n\nclass Option {\n  /**\n   * Initialize a new `Option` with the given `flags` and `description`.\n   *\n   * @param {string} flags\n   * @param {string} [description]\n   */\n\n  constructor(flags, description) {\n    this.flags = flags;\n    this.description = description || '';\n\n    this.required = flags.includes('<'); // A value must be supplied when the option is specified.\n    this.optional = flags.includes('['); // A value is optional when the option is specified.\n    // variadic test ignores <value,...> et al which might be used to describe custom splitting of single argument\n    this.variadic = /\\w\\.\\.\\.[>\\]]$/.test(flags); // The option can take multiple values.\n    this.mandatory = false; // The option must have a value after parsing, which usually means it must be specified on command line.\n    const optionFlags = splitOptionFlags(flags);\n    this.short = optionFlags.shortFlag;\n    this.long = optionFlags.longFlag;\n    this.negate = false;\n    if (this.long) {\n      this.negate = this.long.startsWith('--no-');\n    }\n    this.defaultValue = undefined;\n    this.defaultValueDescription = undefined;\n    this.presetArg = undefined;\n    this.envVar = undefined;\n    this.parseArg = undefined;\n    this.hidden = false;\n    this.argChoices = undefined;\n    this.conflictsWith = [];\n    this.implied = undefined;\n  }\n\n  /**\n   * Set the default value, and optionally supply the description to be displayed in the help.\n   *\n   * @param {*} value\n   * @param {string} [description]\n   * @return {Option}\n   */\n\n  default(value, description) {\n    this.defaultValue = value;\n    this.defaultValueDescription = description;\n    return this;\n  }\n\n  /**\n   * Preset to use when option used without option-argument, especially optional but also boolean and negated.\n   * The custom processing (parseArg) is called.\n   *\n   * @example\n   * new Option('--color').default('GREYSCALE').preset('RGB');\n   * new Option('--donate [amount]').preset('20').argParser(parseFloat);\n   *\n   * @param {*} arg\n   * @return {Option}\n   */\n\n  preset(arg) {\n    this.presetArg = arg;\n    return this;\n  }\n\n  /**\n   * Add option name(s) that conflict with this option.\n   * An error will be displayed if conflicting options are found during parsing.\n   *\n   * @example\n   * new Option('--rgb').conflicts('cmyk');\n   * new Option('--js').conflicts(['ts', 'jsx']);\n   *\n   * @param {(string | string[])} names\n   * @return {Option}\n   */\n\n  conflicts(names) {\n    this.conflictsWith = this.conflictsWith.concat(names);\n    return this;\n  }\n\n  /**\n   * Specify implied option values for when this option is set and the implied options are not.\n   *\n   * The custom processing (parseArg) is not called on the implied values.\n   *\n   * @example\n   * program\n   *   .addOption(new Option('--log', 'write logging information to file'))\n   *   .addOption(new Option('--trace', 'log extra details').implies({ log: 'trace.txt' }));\n   *\n   * @param {object} impliedOptionValues\n   * @return {Option}\n   */\n  implies(impliedOptionValues) {\n    let newImplied = impliedOptionValues;\n    if (typeof impliedOptionValues === 'string') {\n      // string is not documented, but easy mistake and we can do what user probably intended.\n      newImplied = { [impliedOptionValues]: true };\n    }\n    this.implied = Object.assign(this.implied || {}, newImplied);\n    return this;\n  }\n\n  /**\n   * Set environment variable to check for option value.\n   *\n   * An environment variable is only used if when processed the current option value is\n   * undefined, or the source of the current value is 'default' or 'config' or 'env'.\n   *\n   * @param {string} name\n   * @return {Option}\n   */\n\n  env(name) {\n    this.envVar = name;\n    return this;\n  }\n\n  /**\n   * Set the custom handler for processing CLI option arguments into option values.\n   *\n   * @param {Function} [fn]\n   * @return {Option}\n   */\n\n  argParser(fn) {\n    this.parseArg = fn;\n    return this;\n  }\n\n  /**\n   * Whether the option is mandatory and must have a value after parsing.\n   *\n   * @param {boolean} [mandatory=true]\n   * @return {Option}\n   */\n\n  makeOptionMandatory(mandatory = true) {\n    this.mandatory = !!mandatory;\n    return this;\n  }\n\n  /**\n   * Hide option in help.\n   *\n   * @param {boolean} [hide=true]\n   * @return {Option}\n   */\n\n  hideHelp(hide = true) {\n    this.hidden = !!hide;\n    return this;\n  }\n\n  /**\n   * @package\n   */\n\n  _concatValue(value, previous) {\n    if (previous === this.defaultValue || !Array.isArray(previous)) {\n      return [value];\n    }\n\n    return previous.concat(value);\n  }\n\n  /**\n   * Only allow option value to be one of choices.\n   *\n   * @param {string[]} values\n   * @return {Option}\n   */\n\n  choices(values) {\n    this.argChoices = values.slice();\n    this.parseArg = (arg, previous) => {\n      if (!this.argChoices.includes(arg)) {\n        throw new InvalidArgumentError(\n          `Allowed choices are ${this.argChoices.join(', ')}.`,\n        );\n      }\n      if (this.variadic) {\n        return this._concatValue(arg, previous);\n      }\n      return arg;\n    };\n    return this;\n  }\n\n  /**\n   * Return option name.\n   *\n   * @return {string}\n   */\n\n  name() {\n    if (this.long) {\n      return this.long.replace(/^--/, '');\n    }\n    return this.short.replace(/^-/, '');\n  }\n\n  /**\n   * Return option name, in a camelcase format that can be used\n   * as a object attribute key.\n   *\n   * @return {string}\n   */\n\n  attributeName() {\n    return camelcase(this.name().replace(/^no-/, ''));\n  }\n\n  /**\n   * Check if `arg` matches the short or long flag.\n   *\n   * @param {string} arg\n   * @return {boolean}\n   * @package\n   */\n\n  is(arg) {\n    return this.short === arg || this.long === arg;\n  }\n\n  /**\n   * Return whether a boolean option.\n   *\n   * Options are one of boolean, negated, required argument, or optional argument.\n   *\n   * @return {boolean}\n   * @package\n   */\n\n  isBoolean() {\n    return !this.required && !this.optional && !this.negate;\n  }\n}\n\n/**\n * This class is to make it easier to work with dual options, without changing the existing\n * implementation. We support separate dual options for separate positive and negative options,\n * like `--build` and `--no-build`, which share a single option value. This works nicely for some\n * use cases, but is tricky for others where we want separate behaviours despite\n * the single shared option value.\n */\nclass DualOptions {\n  /**\n   * @param {Option[]} options\n   */\n  constructor(options) {\n    this.positiveOptions = new Map();\n    this.negativeOptions = new Map();\n    this.dualOptions = new Set();\n    options.forEach((option) => {\n      if (option.negate) {\n        this.negativeOptions.set(option.attributeName(), option);\n      } else {\n        this.positiveOptions.set(option.attributeName(), option);\n      }\n    });\n    this.negativeOptions.forEach((value, key) => {\n      if (this.positiveOptions.has(key)) {\n        this.dualOptions.add(key);\n      }\n    });\n  }\n\n  /**\n   * Did the value come from the option, and not from possible matching dual option?\n   *\n   * @param {*} value\n   * @param {Option} option\n   * @returns {boolean}\n   */\n  valueFromOption(value, option) {\n    const optionKey = option.attributeName();\n    if (!this.dualOptions.has(optionKey)) return true;\n\n    // Use the value to deduce if (probably) came from the option.\n    const preset = this.negativeOptions.get(optionKey).presetArg;\n    const negativeValue = preset !== undefined ? preset : false;\n    return option.negate === (negativeValue === value);\n  }\n}\n\n/**\n * Convert string from kebab-case to camelCase.\n *\n * @param {string} str\n * @return {string}\n * @private\n */\n\nfunction camelcase(str) {\n  return str.split('-').reduce((str, word) => {\n    return str + word[0].toUpperCase() + word.slice(1);\n  });\n}\n\n/**\n * Split the short and long flag out of something like '-m,--mixed <value>'\n *\n * @private\n */\n\nfunction splitOptionFlags(flags) {\n  let shortFlag;\n  let longFlag;\n  // Use original very loose parsing to maintain backwards compatibility for now,\n  // which allowed for example unintended `-sw, --short-word` [sic].\n  const flagParts = flags.split(/[ |,]+/);\n  if (flagParts.length > 1 && !/^[[<]/.test(flagParts[1]))\n    shortFlag = flagParts.shift();\n  longFlag = flagParts.shift();\n  // Add support for lone short flag without significantly changing parsing!\n  if (!shortFlag && /^-[^-]$/.test(longFlag)) {\n    shortFlag = longFlag;\n    longFlag = undefined;\n  }\n  return { shortFlag, longFlag };\n}\n\nexports.Option = Option;\nexports.DualOptions = DualOptions;\n", "const maxDistance = 3;\n\nfunction editDistance(a, b) {\n  // https://en.wikipedia.org/wiki/Damerau\u2013Levenshtein_distance\n  // Calculating optimal string alignment distance, no substring is edited more than once.\n  // (Simple implementation.)\n\n  // Quick early exit, return worst case.\n  if (Math.abs(a.length - b.length) > maxDistance)\n    return Math.max(a.length, b.length);\n\n  // distance between prefix substrings of a and b\n  const d = [];\n\n  // pure deletions turn a into empty string\n  for (let i = 0; i <= a.length; i++) {\n    d[i] = [i];\n  }\n  // pure insertions turn empty string into b\n  for (let j = 0; j <= b.length; j++) {\n    d[0][j] = j;\n  }\n\n  // fill matrix\n  for (let j = 1; j <= b.length; j++) {\n    for (let i = 1; i <= a.length; i++) {\n      let cost = 1;\n      if (a[i - 1] === b[j - 1]) {\n        cost = 0;\n      } else {\n        cost = 1;\n      }\n      d[i][j] = Math.min(\n        d[i - 1][j] + 1, // deletion\n        d[i][j - 1] + 1, // insertion\n        d[i - 1][j - 1] + cost, // substitution\n      );\n      // transposition\n      if (i > 1 && j > 1 && a[i - 1] === b[j - 2] && a[i - 2] === b[j - 1]) {\n        d[i][j] = Math.min(d[i][j], d[i - 2][j - 2] + 1);\n      }\n    }\n  }\n\n  return d[a.length][b.length];\n}\n\n/**\n * Find close matches, restricted to same number of edits.\n *\n * @param {string} word\n * @param {string[]} candidates\n * @returns {string}\n */\n\nfunction suggestSimilar(word, candidates) {\n  if (!candidates || candidates.length === 0) return '';\n  // remove possible duplicates\n  candidates = Array.from(new Set(candidates));\n\n  const searchingOptions = word.startsWith('--');\n  if (searchingOptions) {\n    word = word.slice(2);\n    candidates = candidates.map((candidate) => candidate.slice(2));\n  }\n\n  let similar = [];\n  let bestDistance = maxDistance;\n  const minSimilarity = 0.4;\n  candidates.forEach((candidate) => {\n    if (candidate.length <= 1) return; // no one character guesses\n\n    const distance = editDistance(word, candidate);\n    const length = Math.max(word.length, candidate.length);\n    const similarity = (length - distance) / length;\n    if (similarity > minSimilarity) {\n      if (distance < bestDistance) {\n        // better edit distance, throw away previous worse matches\n        bestDistance = distance;\n        similar = [candidate];\n      } else if (distance === bestDistance) {\n        similar.push(candidate);\n      }\n    }\n  });\n\n  similar.sort((a, b) => a.localeCompare(b));\n  if (searchingOptions) {\n    similar = similar.map((candidate) => `--${candidate}`);\n  }\n\n  if (similar.length > 1) {\n    return `\\n(Did you mean one of ${similar.join(', ')}?)`;\n  }\n  if (similar.length === 1) {\n    return `\\n(Did you mean ${similar[0]}?)`;\n  }\n  return '';\n}\n\nexports.suggestSimilar = suggestSimilar;\n", "const EventEmitter = require('node:events').EventEmitter;\nconst childProcess = require('node:child_process');\nconst path = require('node:path');\nconst fs = require('node:fs');\nconst process = require('node:process');\n\nconst { Argument, humanReadableArgName } = require('./argument.js');\nconst { CommanderError } = require('./error.js');\nconst { Help } = require('./help.js');\nconst { Option, DualOptions } = require('./option.js');\nconst { suggestSimilar } = require('./suggestSimilar');\n\nclass Command extends EventEmitter {\n  /**\n   * Initialize a new `Command`.\n   *\n   * @param {string} [name]\n   */\n\n  constructor(name) {\n    super();\n    /** @type {Command[]} */\n    this.commands = [];\n    /** @type {Option[]} */\n    this.options = [];\n    this.parent = null;\n    this._allowUnknownOption = false;\n    this._allowExcessArguments = true;\n    /** @type {Argument[]} */\n    this.registeredArguments = [];\n    this._args = this.registeredArguments; // deprecated old name\n    /** @type {string[]} */\n    this.args = []; // cli args with options removed\n    this.rawArgs = [];\n    this.processedArgs = []; // like .args but after custom processing and collecting variadic\n    this._scriptPath = null;\n    this._name = name || '';\n    this._optionValues = {};\n    this._optionValueSources = {}; // default, env, cli etc\n    this._storeOptionsAsProperties = false;\n    this._actionHandler = null;\n    this._executableHandler = false;\n    this._executableFile = null; // custom name for executable\n    this._executableDir = null; // custom search directory for subcommands\n    this._defaultCommandName = null;\n    this._exitCallback = null;\n    this._aliases = [];\n    this._combineFlagAndOptionalValue = true;\n    this._description = '';\n    this._summary = '';\n    this._argsDescription = undefined; // legacy\n    this._enablePositionalOptions = false;\n    this._passThroughOptions = false;\n    this._lifeCycleHooks = {}; // a hash of arrays\n    /** @type {(boolean | string)} */\n    this._showHelpAfterError = false;\n    this._showSuggestionAfterError = true;\n\n    // see .configureOutput() for docs\n    this._outputConfiguration = {\n      writeOut: (str) => process.stdout.write(str),\n      writeErr: (str) => process.stderr.write(str),\n      getOutHelpWidth: () =>\n        process.stdout.isTTY ? process.stdout.columns : undefined,\n      getErrHelpWidth: () =>\n        process.stderr.isTTY ? process.stderr.columns : undefined,\n      outputError: (str, write) => write(str),\n    };\n\n    this._hidden = false;\n    /** @type {(Option | null | undefined)} */\n    this._helpOption = undefined; // Lazy created on demand. May be null if help option is disabled.\n    this._addImplicitHelpCommand = undefined; // undecided whether true or false yet, not inherited\n    /** @type {Command} */\n    this._helpCommand = undefined; // lazy initialised, inherited\n    this._helpConfiguration = {};\n  }\n\n  /**\n   * Copy settings that are useful to have in common across root command and subcommands.\n   *\n   * (Used internally when adding a command using `.command()` so subcommands inherit parent settings.)\n   *\n   * @param {Command} sourceCommand\n   * @return {Command} `this` command for chaining\n   */\n  copyInheritedSettings(sourceCommand) {\n    this._outputConfiguration = sourceCommand._outputConfiguration;\n    this._helpOption = sourceCommand._helpOption;\n    this._helpCommand = sourceCommand._helpCommand;\n    this._helpConfiguration = sourceCommand._helpConfiguration;\n    this._exitCallback = sourceCommand._exitCallback;\n    this._storeOptionsAsProperties = sourceCommand._storeOptionsAsProperties;\n    this._combineFlagAndOptionalValue =\n      sourceCommand._combineFlagAndOptionalValue;\n    this._allowExcessArguments = sourceCommand._allowExcessArguments;\n    this._enablePositionalOptions = sourceCommand._enablePositionalOptions;\n    this._showHelpAfterError = sourceCommand._showHelpAfterError;\n    this._showSuggestionAfterError = sourceCommand._showSuggestionAfterError;\n\n    return this;\n  }\n\n  /**\n   * @returns {Command[]}\n   * @private\n   */\n\n  _getCommandAndAncestors() {\n    const result = [];\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    for (let command = this; command; command = command.parent) {\n      result.push(command);\n    }\n    return result;\n  }\n\n  /**\n   * Define a command.\n   *\n   * There are two styles of command: pay attention to where to put the description.\n   *\n   * @example\n   * // Command implemented using action handler (description is supplied separately to `.command`)\n   * program\n   *   .command('clone <source> [destination]')\n   *   .description('clone a repository into a newly created directory')\n   *   .action((source, destination) => {\n   *     console.log('clone command called');\n   *   });\n   *\n   * // Command implemented using separate executable file (description is second parameter to `.command`)\n   * program\n   *   .command('start <service>', 'start named service')\n   *   .command('stop [service]', 'stop named service, or all if no name supplied');\n   *\n   * @param {string} nameAndArgs - command name and arguments, args are `<required>` or `[optional]` and last may also be `variadic...`\n   * @param {(object | string)} [actionOptsOrExecDesc] - configuration options (for action), or description (for executable)\n   * @param {object} [execOpts] - configuration options (for executable)\n   * @return {Command} returns new command for action handler, or `this` for executable command\n   */\n\n  command(nameAndArgs, actionOptsOrExecDesc, execOpts) {\n    let desc = actionOptsOrExecDesc;\n    let opts = execOpts;\n    if (typeof desc === 'object' && desc !== null) {\n      opts = desc;\n      desc = null;\n    }\n    opts = opts || {};\n    const [, name, args] = nameAndArgs.match(/([^ ]+) *(.*)/);\n\n    const cmd = this.createCommand(name);\n    if (desc) {\n      cmd.description(desc);\n      cmd._executableHandler = true;\n    }\n    if (opts.isDefault) this._defaultCommandName = cmd._name;\n    cmd._hidden = !!(opts.noHelp || opts.hidden); // noHelp is deprecated old name for hidden\n    cmd._executableFile = opts.executableFile || null; // Custom name for executable file, set missing to null to match constructor\n    if (args) cmd.arguments(args);\n    this._registerCommand(cmd);\n    cmd.parent = this;\n    cmd.copyInheritedSettings(this);\n\n    if (desc) return this;\n    return cmd;\n  }\n\n  /**\n   * Factory routine to create a new unattached command.\n   *\n   * See .command() for creating an attached subcommand, which uses this routine to\n   * create the command. You can override createCommand to customise subcommands.\n   *\n   * @param {string} [name]\n   * @return {Command} new command\n   */\n\n  createCommand(name) {\n    return new Command(name);\n  }\n\n  /**\n   * You can customise the help with a subclass of Help by overriding createHelp,\n   * or by overriding Help properties using configureHelp().\n   *\n   * @return {Help}\n   */\n\n  createHelp() {\n    return Object.assign(new Help(), this.configureHelp());\n  }\n\n  /**\n   * You can customise the help by overriding Help properties using configureHelp(),\n   * or with a subclass of Help by overriding createHelp().\n   *\n   * @param {object} [configuration] - configuration options\n   * @return {(Command | object)} `this` command for chaining, or stored configuration\n   */\n\n  configureHelp(configuration) {\n    if (configuration === undefined) return this._helpConfiguration;\n\n    this._helpConfiguration = configuration;\n    return this;\n  }\n\n  /**\n   * The default output goes to stdout and stderr. You can customise this for special\n   * applications. You can also customise the display of errors by overriding outputError.\n   *\n   * The configuration properties are all functions:\n   *\n   *     // functions to change where being written, stdout and stderr\n   *     writeOut(str)\n   *     writeErr(str)\n   *     // matching functions to specify width for wrapping help\n   *     getOutHelpWidth()\n   *     getErrHelpWidth()\n   *     // functions based on what is being written out\n   *     outputError(str, write) // used for displaying errors, and not used for displaying help\n   *\n   * @param {object} [configuration] - configuration options\n   * @return {(Command | object)} `this` command for chaining, or stored configuration\n   */\n\n  configureOutput(configuration) {\n    if (configuration === undefined) return this._outputConfiguration;\n\n    Object.assign(this._outputConfiguration, configuration);\n    return this;\n  }\n\n  /**\n   * Display the help or a custom message after an error occurs.\n   *\n   * @param {(boolean|string)} [displayHelp]\n   * @return {Command} `this` command for chaining\n   */\n  showHelpAfterError(displayHelp = true) {\n    if (typeof displayHelp !== 'string') displayHelp = !!displayHelp;\n    this._showHelpAfterError = displayHelp;\n    return this;\n  }\n\n  /**\n   * Display suggestion of similar commands for unknown commands, or options for unknown options.\n   *\n   * @param {boolean} [displaySuggestion]\n   * @return {Command} `this` command for chaining\n   */\n  showSuggestionAfterError(displaySuggestion = true) {\n    this._showSuggestionAfterError = !!displaySuggestion;\n    return this;\n  }\n\n  /**\n   * Add a prepared subcommand.\n   *\n   * See .command() for creating an attached subcommand which inherits settings from its parent.\n   *\n   * @param {Command} cmd - new subcommand\n   * @param {object} [opts] - configuration options\n   * @return {Command} `this` command for chaining\n   */\n\n  addCommand(cmd, opts) {\n    if (!cmd._name) {\n      throw new Error(`Command passed to .addCommand() must have a name\n- specify the name in Command constructor or using .name()`);\n    }\n\n    opts = opts || {};\n    if (opts.isDefault) this._defaultCommandName = cmd._name;\n    if (opts.noHelp || opts.hidden) cmd._hidden = true; // modifying passed command due to existing implementation\n\n    this._registerCommand(cmd);\n    cmd.parent = this;\n    cmd._checkForBrokenPassThrough();\n\n    return this;\n  }\n\n  /**\n   * Factory routine to create a new unattached argument.\n   *\n   * See .argument() for creating an attached argument, which uses this routine to\n   * create the argument. You can override createArgument to return a custom argument.\n   *\n   * @param {string} name\n   * @param {string} [description]\n   * @return {Argument} new argument\n   */\n\n  createArgument(name, description) {\n    return new Argument(name, description);\n  }\n\n  /**\n   * Define argument syntax for command.\n   *\n   * The default is that the argument is required, and you can explicitly\n   * indicate this with <> around the name. Put [] around the name for an optional argument.\n   *\n   * @example\n   * program.argument('<input-file>');\n   * program.argument('[output-file]');\n   *\n   * @param {string} name\n   * @param {string} [description]\n   * @param {(Function|*)} [fn] - custom argument processing function\n   * @param {*} [defaultValue]\n   * @return {Command} `this` command for chaining\n   */\n  argument(name, description, fn, defaultValue) {\n    const argument = this.createArgument(name, description);\n    if (typeof fn === 'function') {\n      argument.default(defaultValue).argParser(fn);\n    } else {\n      argument.default(fn);\n    }\n    this.addArgument(argument);\n    return this;\n  }\n\n  /**\n   * Define argument syntax for command, adding multiple at once (without descriptions).\n   *\n   * See also .argument().\n   *\n   * @example\n   * program.arguments('<cmd> [env]');\n   *\n   * @param {string} names\n   * @return {Command} `this` command for chaining\n   */\n\n  arguments(names) {\n    names\n      .trim()\n      .split(/ +/)\n      .forEach((detail) => {\n        this.argument(detail);\n      });\n    return this;\n  }\n\n  /**\n   * Define argument syntax for command, adding a prepared argument.\n   *\n   * @param {Argument} argument\n   * @return {Command} `this` command for chaining\n   */\n  addArgument(argument) {\n    const previousArgument = this.registeredArguments.slice(-1)[0];\n    if (previousArgument && previousArgument.variadic) {\n      throw new Error(\n        `only the last argument can be variadic '${previousArgument.name()}'`,\n      );\n    }\n    if (\n      argument.required &&\n      argument.defaultValue !== undefined &&\n      argument.parseArg === undefined\n    ) {\n      throw new Error(\n        `a default value for a required argument is never used: '${argument.name()}'`,\n      );\n    }\n    this.registeredArguments.push(argument);\n    return this;\n  }\n\n  /**\n   * Customise or override default help command. By default a help command is automatically added if your command has subcommands.\n   *\n   * @example\n   *    program.helpCommand('help [cmd]');\n   *    program.helpCommand('help [cmd]', 'show help');\n   *    program.helpCommand(false); // suppress default help command\n   *    program.helpCommand(true); // add help command even if no subcommands\n   *\n   * @param {string|boolean} enableOrNameAndArgs - enable with custom name and/or arguments, or boolean to override whether added\n   * @param {string} [description] - custom description\n   * @return {Command} `this` command for chaining\n   */\n\n  helpCommand(enableOrNameAndArgs, description) {\n    if (typeof enableOrNameAndArgs === 'boolean') {\n      this._addImplicitHelpCommand = enableOrNameAndArgs;\n      return this;\n    }\n\n    enableOrNameAndArgs = enableOrNameAndArgs ?? 'help [command]';\n    const [, helpName, helpArgs] = enableOrNameAndArgs.match(/([^ ]+) *(.*)/);\n    const helpDescription = description ?? 'display help for command';\n\n    const helpCommand = this.createCommand(helpName);\n    helpCommand.helpOption(false);\n    if (helpArgs) helpCommand.arguments(helpArgs);\n    if (helpDescription) helpCommand.description(helpDescription);\n\n    this._addImplicitHelpCommand = true;\n    this._helpCommand = helpCommand;\n\n    return this;\n  }\n\n  /**\n   * Add prepared custom help command.\n   *\n   * @param {(Command|string|boolean)} helpCommand - custom help command, or deprecated enableOrNameAndArgs as for `.helpCommand()`\n   * @param {string} [deprecatedDescription] - deprecated custom description used with custom name only\n   * @return {Command} `this` command for chaining\n   */\n  addHelpCommand(helpCommand, deprecatedDescription) {\n    // If not passed an object, call through to helpCommand for backwards compatibility,\n    // as addHelpCommand was originally used like helpCommand is now.\n    if (typeof helpCommand !== 'object') {\n      this.helpCommand(helpCommand, deprecatedDescription);\n      return this;\n    }\n\n    this._addImplicitHelpCommand = true;\n    this._helpCommand = helpCommand;\n    return this;\n  }\n\n  /**\n   * Lazy create help command.\n   *\n   * @return {(Command|null)}\n   * @package\n   */\n  _getHelpCommand() {\n    const hasImplicitHelpCommand =\n      this._addImplicitHelpCommand ??\n      (this.commands.length &&\n        !this._actionHandler &&\n        !this._findCommand('help'));\n\n    if (hasImplicitHelpCommand) {\n      if (this._helpCommand === undefined) {\n        this.helpCommand(undefined, undefined); // use default name and description\n      }\n      return this._helpCommand;\n    }\n    return null;\n  }\n\n  /**\n   * Add hook for life cycle event.\n   *\n   * @param {string} event\n   * @param {Function} listener\n   * @return {Command} `this` command for chaining\n   */\n\n  hook(event, listener) {\n    const allowedValues = ['preSubcommand', 'preAction', 'postAction'];\n    if (!allowedValues.includes(event)) {\n      throw new Error(`Unexpected value for event passed to hook : '${event}'.\nExpecting one of '${allowedValues.join(\"', '\")}'`);\n    }\n    if (this._lifeCycleHooks[event]) {\n      this._lifeCycleHooks[event].push(listener);\n    } else {\n      this._lifeCycleHooks[event] = [listener];\n    }\n    return this;\n  }\n\n  /**\n   * Register callback to use as replacement for calling process.exit.\n   *\n   * @param {Function} [fn] optional callback which will be passed a CommanderError, defaults to throwing\n   * @return {Command} `this` command for chaining\n   */\n\n  exitOverride(fn) {\n    if (fn) {\n      this._exitCallback = fn;\n    } else {\n      this._exitCallback = (err) => {\n        if (err.code !== 'commander.executeSubCommandAsync') {\n          throw err;\n        } else {\n          // Async callback from spawn events, not useful to throw.\n        }\n      };\n    }\n    return this;\n  }\n\n  /**\n   * Call process.exit, and _exitCallback if defined.\n   *\n   * @param {number} exitCode exit code for using with process.exit\n   * @param {string} code an id string representing the error\n   * @param {string} message human-readable description of the error\n   * @return never\n   * @private\n   */\n\n  _exit(exitCode, code, message) {\n    if (this._exitCallback) {\n      this._exitCallback(new CommanderError(exitCode, code, message));\n      // Expecting this line is not reached.\n    }\n    process.exit(exitCode);\n  }\n\n  /**\n   * Register callback `fn` for the command.\n   *\n   * @example\n   * program\n   *   .command('serve')\n   *   .description('start service')\n   *   .action(function() {\n   *      // do work here\n   *   });\n   *\n   * @param {Function} fn\n   * @return {Command} `this` command for chaining\n   */\n\n  action(fn) {\n    const listener = (args) => {\n      // The .action callback takes an extra parameter which is the command or options.\n      const expectedArgsCount = this.registeredArguments.length;\n      const actionArgs = args.slice(0, expectedArgsCount);\n      if (this._storeOptionsAsProperties) {\n        actionArgs[expectedArgsCount] = this; // backwards compatible \"options\"\n      } else {\n        actionArgs[expectedArgsCount] = this.opts();\n      }\n      actionArgs.push(this);\n\n      return fn.apply(this, actionArgs);\n    };\n    this._actionHandler = listener;\n    return this;\n  }\n\n  /**\n   * Factory routine to create a new unattached option.\n   *\n   * See .option() for creating an attached option, which uses this routine to\n   * create the option. You can override createOption to return a custom option.\n   *\n   * @param {string} flags\n   * @param {string} [description]\n   * @return {Option} new option\n   */\n\n  createOption(flags, description) {\n    return new Option(flags, description);\n  }\n\n  /**\n   * Wrap parseArgs to catch 'commander.invalidArgument'.\n   *\n   * @param {(Option | Argument)} target\n   * @param {string} value\n   * @param {*} previous\n   * @param {string} invalidArgumentMessage\n   * @private\n   */\n\n  _callParseArg(target, value, previous, invalidArgumentMessage) {\n    try {\n      return target.parseArg(value, previous);\n    } catch (err) {\n      if (err.code === 'commander.invalidArgument') {\n        const message = `${invalidArgumentMessage} ${err.message}`;\n        this.error(message, { exitCode: err.exitCode, code: err.code });\n      }\n      throw err;\n    }\n  }\n\n  /**\n   * Check for option flag conflicts.\n   * Register option if no conflicts found, or throw on conflict.\n   *\n   * @param {Option} option\n   * @private\n   */\n\n  _registerOption(option) {\n    const matchingOption =\n      (option.short && this._findOption(option.short)) ||\n      (option.long && this._findOption(option.long));\n    if (matchingOption) {\n      const matchingFlag =\n        option.long && this._findOption(option.long)\n          ? option.long\n          : option.short;\n      throw new Error(`Cannot add option '${option.flags}'${this._name && ` to command '${this._name}'`} due to conflicting flag '${matchingFlag}'\n-  already used by option '${matchingOption.flags}'`);\n    }\n\n    this.options.push(option);\n  }\n\n  /**\n   * Check for command name and alias conflicts with existing commands.\n   * Register command if no conflicts found, or throw on conflict.\n   *\n   * @param {Command} command\n   * @private\n   */\n\n  _registerCommand(command) {\n    const knownBy = (cmd) => {\n      return [cmd.name()].concat(cmd.aliases());\n    };\n\n    const alreadyUsed = knownBy(command).find((name) =>\n      this._findCommand(name),\n    );\n    if (alreadyUsed) {\n      const existingCmd = knownBy(this._findCommand(alreadyUsed)).join('|');\n      const newCmd = knownBy(command).join('|');\n      throw new Error(\n        `cannot add command '${newCmd}' as already have command '${existingCmd}'`,\n      );\n    }\n\n    this.commands.push(command);\n  }\n\n  /**\n   * Add an option.\n   *\n   * @param {Option} option\n   * @return {Command} `this` command for chaining\n   */\n  addOption(option) {\n    this._registerOption(option);\n\n    const oname = option.name();\n    const name = option.attributeName();\n\n    // store default value\n    if (option.negate) {\n      // --no-foo is special and defaults foo to true, unless a --foo option is already defined\n      const positiveLongFlag = option.long.replace(/^--no-/, '--');\n      if (!this._findOption(positiveLongFlag)) {\n        this.setOptionValueWithSource(\n          name,\n          option.defaultValue === undefined ? true : option.defaultValue,\n          'default',\n        );\n      }\n    } else if (option.defaultValue !== undefined) {\n      this.setOptionValueWithSource(name, option.defaultValue, 'default');\n    }\n\n    // handler for cli and env supplied values\n    const handleOptionValue = (val, invalidValueMessage, valueSource) => {\n      // val is null for optional option used without an optional-argument.\n      // val is undefined for boolean and negated option.\n      if (val == null && option.presetArg !== undefined) {\n        val = option.presetArg;\n      }\n\n      // custom processing\n      const oldValue = this.getOptionValue(name);\n      if (val !== null && option.parseArg) {\n        val = this._callParseArg(option, val, oldValue, invalidValueMessage);\n      } else if (val !== null && option.variadic) {\n        val = option._concatValue(val, oldValue);\n      }\n\n      // Fill-in appropriate missing values. Long winded but easy to follow.\n      if (val == null) {\n        if (option.negate) {\n          val = false;\n        } else if (option.isBoolean() || option.optional) {\n          val = true;\n        } else {\n          val = ''; // not normal, parseArg might have failed or be a mock function for testing\n        }\n      }\n      this.setOptionValueWithSource(name, val, valueSource);\n    };\n\n    this.on('option:' + oname, (val) => {\n      const invalidValueMessage = `error: option '${option.flags}' argument '${val}' is invalid.`;\n      handleOptionValue(val, invalidValueMessage, 'cli');\n    });\n\n    if (option.envVar) {\n      this.on('optionEnv:' + oname, (val) => {\n        const invalidValueMessage = `error: option '${option.flags}' value '${val}' from env '${option.envVar}' is invalid.`;\n        handleOptionValue(val, invalidValueMessage, 'env');\n      });\n    }\n\n    return this;\n  }\n\n  /**\n   * Internal implementation shared by .option() and .requiredOption()\n   *\n   * @return {Command} `this` command for chaining\n   * @private\n   */\n  _optionEx(config, flags, description, fn, defaultValue) {\n    if (typeof flags === 'object' && flags instanceof Option) {\n      throw new Error(\n        'To add an Option object use addOption() instead of option() or requiredOption()',\n      );\n    }\n    const option = this.createOption(flags, description);\n    option.makeOptionMandatory(!!config.mandatory);\n    if (typeof fn === 'function') {\n      option.default(defaultValue).argParser(fn);\n    } else if (fn instanceof RegExp) {\n      // deprecated\n      const regex = fn;\n      fn = (val, def) => {\n        const m = regex.exec(val);\n        return m ? m[0] : def;\n      };\n      option.default(defaultValue).argParser(fn);\n    } else {\n      option.default(fn);\n    }\n\n    return this.addOption(option);\n  }\n\n  /**\n   * Define option with `flags`, `description`, and optional argument parsing function or `defaultValue` or both.\n   *\n   * The `flags` string contains the short and/or long flags, separated by comma, a pipe or space. A required\n   * option-argument is indicated by `<>` and an optional option-argument by `[]`.\n   *\n   * See the README for more details, and see also addOption() and requiredOption().\n   *\n   * @example\n   * program\n   *     .option('-p, --pepper', 'add pepper')\n   *     .option('-p, --pizza-type <TYPE>', 'type of pizza') // required option-argument\n   *     .option('-c, --cheese [CHEESE]', 'add extra cheese', 'mozzarella') // optional option-argument with default\n   *     .option('-t, --tip <VALUE>', 'add tip to purchase cost', parseFloat) // custom parse function\n   *\n   * @param {string} flags\n   * @param {string} [description]\n   * @param {(Function|*)} [parseArg] - custom option processing function or default value\n   * @param {*} [defaultValue]\n   * @return {Command} `this` command for chaining\n   */\n\n  option(flags, description, parseArg, defaultValue) {\n    return this._optionEx({}, flags, description, parseArg, defaultValue);\n  }\n\n  /**\n   * Add a required option which must have a value after parsing. This usually means\n   * the option must be specified on the command line. (Otherwise the same as .option().)\n   *\n   * The `flags` string contains the short and/or long flags, separated by comma, a pipe or space.\n   *\n   * @param {string} flags\n   * @param {string} [description]\n   * @param {(Function|*)} [parseArg] - custom option processing function or default value\n   * @param {*} [defaultValue]\n   * @return {Command} `this` command for chaining\n   */\n\n  requiredOption(flags, description, parseArg, defaultValue) {\n    return this._optionEx(\n      { mandatory: true },\n      flags,\n      description,\n      parseArg,\n      defaultValue,\n    );\n  }\n\n  /**\n   * Alter parsing of short flags with optional values.\n   *\n   * @example\n   * // for `.option('-f,--flag [value]'):\n   * program.combineFlagAndOptionalValue(true);  // `-f80` is treated like `--flag=80`, this is the default behaviour\n   * program.combineFlagAndOptionalValue(false) // `-fb` is treated like `-f -b`\n   *\n   * @param {boolean} [combine] - if `true` or omitted, an optional value can be specified directly after the flag.\n   * @return {Command} `this` command for chaining\n   */\n  combineFlagAndOptionalValue(combine = true) {\n    this._combineFlagAndOptionalValue = !!combine;\n    return this;\n  }\n\n  /**\n   * Allow unknown options on the command line.\n   *\n   * @param {boolean} [allowUnknown] - if `true` or omitted, no error will be thrown for unknown options.\n   * @return {Command} `this` command for chaining\n   */\n  allowUnknownOption(allowUnknown = true) {\n    this._allowUnknownOption = !!allowUnknown;\n    return this;\n  }\n\n  /**\n   * Allow excess command-arguments on the command line. Pass false to make excess arguments an error.\n   *\n   * @param {boolean} [allowExcess] - if `true` or omitted, no error will be thrown for excess arguments.\n   * @return {Command} `this` command for chaining\n   */\n  allowExcessArguments(allowExcess = true) {\n    this._allowExcessArguments = !!allowExcess;\n    return this;\n  }\n\n  /**\n   * Enable positional options. Positional means global options are specified before subcommands which lets\n   * subcommands reuse the same option names, and also enables subcommands to turn on passThroughOptions.\n   * The default behaviour is non-positional and global options may appear anywhere on the command line.\n   *\n   * @param {boolean} [positional]\n   * @return {Command} `this` command for chaining\n   */\n  enablePositionalOptions(positional = true) {\n    this._enablePositionalOptions = !!positional;\n    return this;\n  }\n\n  /**\n   * Pass through options that come after command-arguments rather than treat them as command-options,\n   * so actual command-options come before command-arguments. Turning this on for a subcommand requires\n   * positional options to have been enabled on the program (parent commands).\n   * The default behaviour is non-positional and options may appear before or after command-arguments.\n   *\n   * @param {boolean} [passThrough] for unknown options.\n   * @return {Command} `this` command for chaining\n   */\n  passThroughOptions(passThrough = true) {\n    this._passThroughOptions = !!passThrough;\n    this._checkForBrokenPassThrough();\n    return this;\n  }\n\n  /**\n   * @private\n   */\n\n  _checkForBrokenPassThrough() {\n    if (\n      this.parent &&\n      this._passThroughOptions &&\n      !this.parent._enablePositionalOptions\n    ) {\n      throw new Error(\n        `passThroughOptions cannot be used for '${this._name}' without turning on enablePositionalOptions for parent command(s)`,\n      );\n    }\n  }\n\n  /**\n   * Whether to store option values as properties on command object,\n   * or store separately (specify false). In both cases the option values can be accessed using .opts().\n   *\n   * @param {boolean} [storeAsProperties=true]\n   * @return {Command} `this` command for chaining\n   */\n\n  storeOptionsAsProperties(storeAsProperties = true) {\n    if (this.options.length) {\n      throw new Error('call .storeOptionsAsProperties() before adding options');\n    }\n    if (Object.keys(this._optionValues).length) {\n      throw new Error(\n        'call .storeOptionsAsProperties() before setting option values',\n      );\n    }\n    this._storeOptionsAsProperties = !!storeAsProperties;\n    return this;\n  }\n\n  /**\n   * Retrieve option value.\n   *\n   * @param {string} key\n   * @return {object} value\n   */\n\n  getOptionValue(key) {\n    if (this._storeOptionsAsProperties) {\n      return this[key];\n    }\n    return this._optionValues[key];\n  }\n\n  /**\n   * Store option value.\n   *\n   * @param {string} key\n   * @param {object} value\n   * @return {Command} `this` command for chaining\n   */\n\n  setOptionValue(key, value) {\n    return this.setOptionValueWithSource(key, value, undefined);\n  }\n\n  /**\n   * Store option value and where the value came from.\n   *\n   * @param {string} key\n   * @param {object} value\n   * @param {string} source - expected values are default/config/env/cli/implied\n   * @return {Command} `this` command for chaining\n   */\n\n  setOptionValueWithSource(key, value, source) {\n    if (this._storeOptionsAsProperties) {\n      this[key] = value;\n    } else {\n      this._optionValues[key] = value;\n    }\n    this._optionValueSources[key] = source;\n    return this;\n  }\n\n  /**\n   * Get source of option value.\n   * Expected values are default | config | env | cli | implied\n   *\n   * @param {string} key\n   * @return {string}\n   */\n\n  getOptionValueSource(key) {\n    return this._optionValueSources[key];\n  }\n\n  /**\n   * Get source of option value. See also .optsWithGlobals().\n   * Expected values are default | config | env | cli | implied\n   *\n   * @param {string} key\n   * @return {string}\n   */\n\n  getOptionValueSourceWithGlobals(key) {\n    // global overwrites local, like optsWithGlobals\n    let source;\n    this._getCommandAndAncestors().forEach((cmd) => {\n      if (cmd.getOptionValueSource(key) !== undefined) {\n        source = cmd.getOptionValueSource(key);\n      }\n    });\n    return source;\n  }\n\n  /**\n   * Get user arguments from implied or explicit arguments.\n   * Side-effects: set _scriptPath if args included script. Used for default program name, and subcommand searches.\n   *\n   * @private\n   */\n\n  _prepareUserArgs(argv, parseOptions) {\n    if (argv !== undefined && !Array.isArray(argv)) {\n      throw new Error('first parameter to parse must be array or undefined');\n    }\n    parseOptions = parseOptions || {};\n\n    // auto-detect argument conventions if nothing supplied\n    if (argv === undefined && parseOptions.from === undefined) {\n      if (process.versions?.electron) {\n        parseOptions.from = 'electron';\n      }\n      // check node specific options for scenarios where user CLI args follow executable without scriptname\n      const execArgv = process.execArgv ?? [];\n      if (\n        execArgv.includes('-e') ||\n        execArgv.includes('--eval') ||\n        execArgv.includes('-p') ||\n        execArgv.includes('--print')\n      ) {\n        parseOptions.from = 'eval'; // internal usage, not documented\n      }\n    }\n\n    // default to using process.argv\n    if (argv === undefined) {\n      argv = process.argv;\n    }\n    this.rawArgs = argv.slice();\n\n    // extract the user args and scriptPath\n    let userArgs;\n    switch (parseOptions.from) {\n      case undefined:\n      case 'node':\n        this._scriptPath = argv[1];\n        userArgs = argv.slice(2);\n        break;\n      case 'electron':\n        // @ts-ignore: because defaultApp is an unknown property\n        if (process.defaultApp) {\n          this._scriptPath = argv[1];\n          userArgs = argv.slice(2);\n        } else {\n          userArgs = argv.slice(1);\n        }\n        break;\n      case 'user':\n        userArgs = argv.slice(0);\n        break;\n      case 'eval':\n        userArgs = argv.slice(1);\n        break;\n      default:\n        throw new Error(\n          `unexpected parse option { from: '${parseOptions.from}' }`,\n        );\n    }\n\n    // Find default name for program from arguments.\n    if (!this._name && this._scriptPath)\n      this.nameFromFilename(this._scriptPath);\n    this._name = this._name || 'program';\n\n    return userArgs;\n  }\n\n  /**\n   * Parse `argv`, setting options and invoking commands when defined.\n   *\n   * Use parseAsync instead of parse if any of your action handlers are async.\n   *\n   * Call with no parameters to parse `process.argv`. Detects Electron and special node options like `node --eval`. Easy mode!\n   *\n   * Or call with an array of strings to parse, and optionally where the user arguments start by specifying where the arguments are `from`:\n   * - `'node'`: default, `argv[0]` is the application and `argv[1]` is the script being run, with user arguments after that\n   * - `'electron'`: `argv[0]` is the application and `argv[1]` varies depending on whether the electron application is packaged\n   * - `'user'`: just user arguments\n   *\n   * @example\n   * program.parse(); // parse process.argv and auto-detect electron and special node flags\n   * program.parse(process.argv); // assume argv[0] is app and argv[1] is script\n   * program.parse(my-args, { from: 'user' }); // just user supplied arguments, nothing special about argv[0]\n   *\n   * @param {string[]} [argv] - optional, defaults to process.argv\n   * @param {object} [parseOptions] - optionally specify style of options with from: node/user/electron\n   * @param {string} [parseOptions.from] - where the args are from: 'node', 'user', 'electron'\n   * @return {Command} `this` command for chaining\n   */\n\n  parse(argv, parseOptions) {\n    const userArgs = this._prepareUserArgs(argv, parseOptions);\n    this._parseCommand([], userArgs);\n\n    return this;\n  }\n\n  /**\n   * Parse `argv`, setting options and invoking commands when defined.\n   *\n   * Call with no parameters to parse `process.argv`. Detects Electron and special node options like `node --eval`. Easy mode!\n   *\n   * Or call with an array of strings to parse, and optionally where the user arguments start by specifying where the arguments are `from`:\n   * - `'node'`: default, `argv[0]` is the application and `argv[1]` is the script being run, with user arguments after that\n   * - `'electron'`: `argv[0]` is the application and `argv[1]` varies depending on whether the electron application is packaged\n   * - `'user'`: just user arguments\n   *\n   * @example\n   * await program.parseAsync(); // parse process.argv and auto-detect electron and special node flags\n   * await program.parseAsync(process.argv); // assume argv[0] is app and argv[1] is script\n   * await program.parseAsync(my-args, { from: 'user' }); // just user supplied arguments, nothing special about argv[0]\n   *\n   * @param {string[]} [argv]\n   * @param {object} [parseOptions]\n   * @param {string} parseOptions.from - where the args are from: 'node', 'user', 'electron'\n   * @return {Promise}\n   */\n\n  async parseAsync(argv, parseOptions) {\n    const userArgs = this._prepareUserArgs(argv, parseOptions);\n    await this._parseCommand([], userArgs);\n\n    return this;\n  }\n\n  /**\n   * Execute a sub-command executable.\n   *\n   * @private\n   */\n\n  _executeSubCommand(subcommand, args) {\n    args = args.slice();\n    let launchWithNode = false; // Use node for source targets so do not need to get permissions correct, and on Windows.\n    const sourceExt = ['.js', '.ts', '.tsx', '.mjs', '.cjs'];\n\n    function findFile(baseDir, baseName) {\n      // Look for specified file\n      const localBin = path.resolve(baseDir, baseName);\n      if (fs.existsSync(localBin)) return localBin;\n\n      // Stop looking if candidate already has an expected extension.\n      if (sourceExt.includes(path.extname(baseName))) return undefined;\n\n      // Try all the extensions.\n      const foundExt = sourceExt.find((ext) =>\n        fs.existsSync(`${localBin}${ext}`),\n      );\n      if (foundExt) return `${localBin}${foundExt}`;\n\n      return undefined;\n    }\n\n    // Not checking for help first. Unlikely to have mandatory and executable, and can't robustly test for help flags in external command.\n    this._checkForMissingMandatoryOptions();\n    this._checkForConflictingOptions();\n\n    // executableFile and executableDir might be full path, or just a name\n    let executableFile =\n      subcommand._executableFile || `${this._name}-${subcommand._name}`;\n    let executableDir = this._executableDir || '';\n    if (this._scriptPath) {\n      let resolvedScriptPath; // resolve possible symlink for installed npm binary\n      try {\n        resolvedScriptPath = fs.realpathSync(this._scriptPath);\n      } catch (err) {\n        resolvedScriptPath = this._scriptPath;\n      }\n      executableDir = path.resolve(\n        path.dirname(resolvedScriptPath),\n        executableDir,\n      );\n    }\n\n    // Look for a local file in preference to a command in PATH.\n    if (executableDir) {\n      let localFile = findFile(executableDir, executableFile);\n\n      // Legacy search using prefix of script name instead of command name\n      if (!localFile && !subcommand._executableFile && this._scriptPath) {\n        const legacyName = path.basename(\n          this._scriptPath,\n          path.extname(this._scriptPath),\n        );\n        if (legacyName !== this._name) {\n          localFile = findFile(\n            executableDir,\n            `${legacyName}-${subcommand._name}`,\n          );\n        }\n      }\n      executableFile = localFile || executableFile;\n    }\n\n    launchWithNode = sourceExt.includes(path.extname(executableFile));\n\n    let proc;\n    if (process.platform !== 'win32') {\n      if (launchWithNode) {\n        args.unshift(executableFile);\n        // add executable arguments to spawn\n        args = incrementNodeInspectorPort(process.execArgv).concat(args);\n\n        proc = childProcess.spawn(process.argv[0], args, { stdio: 'inherit' });\n      } else {\n        proc = childProcess.spawn(executableFile, args, { stdio: 'inherit' });\n      }\n    } else {\n      args.unshift(executableFile);\n      // add executable arguments to spawn\n      args = incrementNodeInspectorPort(process.execArgv).concat(args);\n      proc = childProcess.spawn(process.execPath, args, { stdio: 'inherit' });\n    }\n\n    if (!proc.killed) {\n      // testing mainly to avoid leak warnings during unit tests with mocked spawn\n      const signals = ['SIGUSR1', 'SIGUSR2', 'SIGTERM', 'SIGINT', 'SIGHUP'];\n      signals.forEach((signal) => {\n        process.on(signal, () => {\n          if (proc.killed === false && proc.exitCode === null) {\n            // @ts-ignore because signals not typed to known strings\n            proc.kill(signal);\n          }\n        });\n      });\n    }\n\n    // By default terminate process when spawned process terminates.\n    const exitCallback = this._exitCallback;\n    proc.on('close', (code) => {\n      code = code ?? 1; // code is null if spawned process terminated due to a signal\n      if (!exitCallback) {\n        process.exit(code);\n      } else {\n        exitCallback(\n          new CommanderError(\n            code,\n            'commander.executeSubCommandAsync',\n            '(close)',\n          ),\n        );\n      }\n    });\n    proc.on('error', (err) => {\n      // @ts-ignore: because err.code is an unknown property\n      if (err.code === 'ENOENT') {\n        const executableDirMessage = executableDir\n          ? `searched for local subcommand relative to directory '${executableDir}'`\n          : 'no directory for search for local subcommand, use .executableDir() to supply a custom directory';\n        const executableMissing = `'${executableFile}' does not exist\n - if '${subcommand._name}' is not meant to be an executable command, remove description parameter from '.command()' and use '.description()' instead\n - if the default executable name is not suitable, use the executableFile option to supply a custom name or path\n - ${executableDirMessage}`;\n        throw new Error(executableMissing);\n        // @ts-ignore: because err.code is an unknown property\n      } else if (err.code === 'EACCES') {\n        throw new Error(`'${executableFile}' not executable`);\n      }\n      if (!exitCallback) {\n        process.exit(1);\n      } else {\n        const wrappedError = new CommanderError(\n          1,\n          'commander.executeSubCommandAsync',\n          '(error)',\n        );\n        wrappedError.nestedError = err;\n        exitCallback(wrappedError);\n      }\n    });\n\n    // Store the reference to the child process\n    this.runningCommand = proc;\n  }\n\n  /**\n   * @private\n   */\n\n  _dispatchSubcommand(commandName, operands, unknown) {\n    const subCommand = this._findCommand(commandName);\n    if (!subCommand) this.help({ error: true });\n\n    let promiseChain;\n    promiseChain = this._chainOrCallSubCommandHook(\n      promiseChain,\n      subCommand,\n      'preSubcommand',\n    );\n    promiseChain = this._chainOrCall(promiseChain, () => {\n      if (subCommand._executableHandler) {\n        this._executeSubCommand(subCommand, operands.concat(unknown));\n      } else {\n        return subCommand._parseCommand(operands, unknown);\n      }\n    });\n    return promiseChain;\n  }\n\n  /**\n   * Invoke help directly if possible, or dispatch if necessary.\n   * e.g. help foo\n   *\n   * @private\n   */\n\n  _dispatchHelpCommand(subcommandName) {\n    if (!subcommandName) {\n      this.help();\n    }\n    const subCommand = this._findCommand(subcommandName);\n    if (subCommand && !subCommand._executableHandler) {\n      subCommand.help();\n    }\n\n    // Fallback to parsing the help flag to invoke the help.\n    return this._dispatchSubcommand(\n      subcommandName,\n      [],\n      [this._getHelpOption()?.long ?? this._getHelpOption()?.short ?? '--help'],\n    );\n  }\n\n  /**\n   * Check this.args against expected this.registeredArguments.\n   *\n   * @private\n   */\n\n  _checkNumberOfArguments() {\n    // too few\n    this.registeredArguments.forEach((arg, i) => {\n      if (arg.required && this.args[i] == null) {\n        this.missingArgument(arg.name());\n      }\n    });\n    // too many\n    if (\n      this.registeredArguments.length > 0 &&\n      this.registeredArguments[this.registeredArguments.length - 1].variadic\n    ) {\n      return;\n    }\n    if (this.args.length > this.registeredArguments.length) {\n      this._excessArguments(this.args);\n    }\n  }\n\n  /**\n   * Process this.args using this.registeredArguments and save as this.processedArgs!\n   *\n   * @private\n   */\n\n  _processArguments() {\n    const myParseArg = (argument, value, previous) => {\n      // Extra processing for nice error message on parsing failure.\n      let parsedValue = value;\n      if (value !== null && argument.parseArg) {\n        const invalidValueMessage = `error: command-argument value '${value}' is invalid for argument '${argument.name()}'.`;\n        parsedValue = this._callParseArg(\n          argument,\n          value,\n          previous,\n          invalidValueMessage,\n        );\n      }\n      return parsedValue;\n    };\n\n    this._checkNumberOfArguments();\n\n    const processedArgs = [];\n    this.registeredArguments.forEach((declaredArg, index) => {\n      let value = declaredArg.defaultValue;\n      if (declaredArg.variadic) {\n        // Collect together remaining arguments for passing together as an array.\n        if (index < this.args.length) {\n          value = this.args.slice(index);\n          if (declaredArg.parseArg) {\n            value = value.reduce((processed, v) => {\n              return myParseArg(declaredArg, v, processed);\n            }, declaredArg.defaultValue);\n          }\n        } else if (value === undefined) {\n          value = [];\n        }\n      } else if (index < this.args.length) {\n        value = this.args[index];\n        if (declaredArg.parseArg) {\n          value = myParseArg(declaredArg, value, declaredArg.defaultValue);\n        }\n      }\n      processedArgs[index] = value;\n    });\n    this.processedArgs = processedArgs;\n  }\n\n  /**\n   * Once we have a promise we chain, but call synchronously until then.\n   *\n   * @param {(Promise|undefined)} promise\n   * @param {Function} fn\n   * @return {(Promise|undefined)}\n   * @private\n   */\n\n  _chainOrCall(promise, fn) {\n    // thenable\n    if (promise && promise.then && typeof promise.then === 'function') {\n      // already have a promise, chain callback\n      return promise.then(() => fn());\n    }\n    // callback might return a promise\n    return fn();\n  }\n\n  /**\n   *\n   * @param {(Promise|undefined)} promise\n   * @param {string} event\n   * @return {(Promise|undefined)}\n   * @private\n   */\n\n  _chainOrCallHooks(promise, event) {\n    let result = promise;\n    const hooks = [];\n    this._getCommandAndAncestors()\n      .reverse()\n      .filter((cmd) => cmd._lifeCycleHooks[event] !== undefined)\n      .forEach((hookedCommand) => {\n        hookedCommand._lifeCycleHooks[event].forEach((callback) => {\n          hooks.push({ hookedCommand, callback });\n        });\n      });\n    if (event === 'postAction') {\n      hooks.reverse();\n    }\n\n    hooks.forEach((hookDetail) => {\n      result = this._chainOrCall(result, () => {\n        return hookDetail.callback(hookDetail.hookedCommand, this);\n      });\n    });\n    return result;\n  }\n\n  /**\n   *\n   * @param {(Promise|undefined)} promise\n   * @param {Command} subCommand\n   * @param {string} event\n   * @return {(Promise|undefined)}\n   * @private\n   */\n\n  _chainOrCallSubCommandHook(promise, subCommand, event) {\n    let result = promise;\n    if (this._lifeCycleHooks[event] !== undefined) {\n      this._lifeCycleHooks[event].forEach((hook) => {\n        result = this._chainOrCall(result, () => {\n          return hook(this, subCommand);\n        });\n      });\n    }\n    return result;\n  }\n\n  /**\n   * Process arguments in context of this command.\n   * Returns action result, in case it is a promise.\n   *\n   * @private\n   */\n\n  _parseCommand(operands, unknown) {\n    const parsed = this.parseOptions(unknown);\n    this._parseOptionsEnv(); // after cli, so parseArg not called on both cli and env\n    this._parseOptionsImplied();\n    operands = operands.concat(parsed.operands);\n    unknown = parsed.unknown;\n    this.args = operands.concat(unknown);\n\n    if (operands && this._findCommand(operands[0])) {\n      return this._dispatchSubcommand(operands[0], operands.slice(1), unknown);\n    }\n    if (\n      this._getHelpCommand() &&\n      operands[0] === this._getHelpCommand().name()\n    ) {\n      return this._dispatchHelpCommand(operands[1]);\n    }\n    if (this._defaultCommandName) {\n      this._outputHelpIfRequested(unknown); // Run the help for default command from parent rather than passing to default command\n      return this._dispatchSubcommand(\n        this._defaultCommandName,\n        operands,\n        unknown,\n      );\n    }\n    if (\n      this.commands.length &&\n      this.args.length === 0 &&\n      !this._actionHandler &&\n      !this._defaultCommandName\n    ) {\n      // probably missing subcommand and no handler, user needs help (and exit)\n      this.help({ error: true });\n    }\n\n    this._outputHelpIfRequested(parsed.unknown);\n    this._checkForMissingMandatoryOptions();\n    this._checkForConflictingOptions();\n\n    // We do not always call this check to avoid masking a \"better\" error, like unknown command.\n    const checkForUnknownOptions = () => {\n      if (parsed.unknown.length > 0) {\n        this.unknownOption(parsed.unknown[0]);\n      }\n    };\n\n    const commandEvent = `command:${this.name()}`;\n    if (this._actionHandler) {\n      checkForUnknownOptions();\n      this._processArguments();\n\n      let promiseChain;\n      promiseChain = this._chainOrCallHooks(promiseChain, 'preAction');\n      promiseChain = this._chainOrCall(promiseChain, () =>\n        this._actionHandler(this.processedArgs),\n      );\n      if (this.parent) {\n        promiseChain = this._chainOrCall(promiseChain, () => {\n          this.parent.emit(commandEvent, operands, unknown); // legacy\n        });\n      }\n      promiseChain = this._chainOrCallHooks(promiseChain, 'postAction');\n      return promiseChain;\n    }\n    if (this.parent && this.parent.listenerCount(commandEvent)) {\n      checkForUnknownOptions();\n      this._processArguments();\n      this.parent.emit(commandEvent, operands, unknown); // legacy\n    } else if (operands.length) {\n      if (this._findCommand('*')) {\n        // legacy default command\n        return this._dispatchSubcommand('*', operands, unknown);\n      }\n      if (this.listenerCount('command:*')) {\n        // skip option check, emit event for possible misspelling suggestion\n        this.emit('command:*', operands, unknown);\n      } else if (this.commands.length) {\n        this.unknownCommand();\n      } else {\n        checkForUnknownOptions();\n        this._processArguments();\n      }\n    } else if (this.commands.length) {\n      checkForUnknownOptions();\n      // This command has subcommands and nothing hooked up at this level, so display help (and exit).\n      this.help({ error: true });\n    } else {\n      checkForUnknownOptions();\n      this._processArguments();\n      // fall through for caller to handle after calling .parse()\n    }\n  }\n\n  /**\n   * Find matching command.\n   *\n   * @private\n   * @return {Command | undefined}\n   */\n  _findCommand(name) {\n    if (!name) return undefined;\n    return this.commands.find(\n      (cmd) => cmd._name === name || cmd._aliases.includes(name),\n    );\n  }\n\n  /**\n   * Return an option matching `arg` if any.\n   *\n   * @param {string} arg\n   * @return {Option}\n   * @package\n   */\n\n  _findOption(arg) {\n    return this.options.find((option) => option.is(arg));\n  }\n\n  /**\n   * Display an error message if a mandatory option does not have a value.\n   * Called after checking for help flags in leaf subcommand.\n   *\n   * @private\n   */\n\n  _checkForMissingMandatoryOptions() {\n    // Walk up hierarchy so can call in subcommand after checking for displaying help.\n    this._getCommandAndAncestors().forEach((cmd) => {\n      cmd.options.forEach((anOption) => {\n        if (\n          anOption.mandatory &&\n          cmd.getOptionValue(anOption.attributeName()) === undefined\n        ) {\n          cmd.missingMandatoryOptionValue(anOption);\n        }\n      });\n    });\n  }\n\n  /**\n   * Display an error message if conflicting options are used together in this.\n   *\n   * @private\n   */\n  _checkForConflictingLocalOptions() {\n    const definedNonDefaultOptions = this.options.filter((option) => {\n      const optionKey = option.attributeName();\n      if (this.getOptionValue(optionKey) === undefined) {\n        return false;\n      }\n      return this.getOptionValueSource(optionKey) !== 'default';\n    });\n\n    const optionsWithConflicting = definedNonDefaultOptions.filter(\n      (option) => option.conflictsWith.length > 0,\n    );\n\n    optionsWithConflicting.forEach((option) => {\n      const conflictingAndDefined = definedNonDefaultOptions.find((defined) =>\n        option.conflictsWith.includes(defined.attributeName()),\n      );\n      if (conflictingAndDefined) {\n        this._conflictingOption(option, conflictingAndDefined);\n      }\n    });\n  }\n\n  /**\n   * Display an error message if conflicting options are used together.\n   * Called after checking for help flags in leaf subcommand.\n   *\n   * @private\n   */\n  _checkForConflictingOptions() {\n    // Walk up hierarchy so can call in subcommand after checking for displaying help.\n    this._getCommandAndAncestors().forEach((cmd) => {\n      cmd._checkForConflictingLocalOptions();\n    });\n  }\n\n  /**\n   * Parse options from `argv` removing known options,\n   * and return argv split into operands and unknown arguments.\n   *\n   * Examples:\n   *\n   *     argv => operands, unknown\n   *     --known kkk op => [op], []\n   *     op --known kkk => [op], []\n   *     sub --unknown uuu op => [sub], [--unknown uuu op]\n   *     sub -- --unknown uuu op => [sub --unknown uuu op], []\n   *\n   * @param {string[]} argv\n   * @return {{operands: string[], unknown: string[]}}\n   */\n\n  parseOptions(argv) {\n    const operands = []; // operands, not options or values\n    const unknown = []; // first unknown option and remaining unknown args\n    let dest = operands;\n    const args = argv.slice();\n\n    function maybeOption(arg) {\n      return arg.length > 1 && arg[0] === '-';\n    }\n\n    // parse options\n    let activeVariadicOption = null;\n    while (args.length) {\n      const arg = args.shift();\n\n      // literal\n      if (arg === '--') {\n        if (dest === unknown) dest.push(arg);\n        dest.push(...args);\n        break;\n      }\n\n      if (activeVariadicOption && !maybeOption(arg)) {\n        this.emit(`option:${activeVariadicOption.name()}`, arg);\n        continue;\n      }\n      activeVariadicOption = null;\n\n      if (maybeOption(arg)) {\n        const option = this._findOption(arg);\n        // recognised option, call listener to assign value with possible custom processing\n        if (option) {\n          if (option.required) {\n            const value = args.shift();\n            if (value === undefined) this.optionMissingArgument(option);\n            this.emit(`option:${option.name()}`, value);\n          } else if (option.optional) {\n            let value = null;\n            // historical behaviour is optional value is following arg unless an option\n            if (args.length > 0 && !maybeOption(args[0])) {\n              value = args.shift();\n            }\n            this.emit(`option:${option.name()}`, value);\n          } else {\n            // boolean flag\n            this.emit(`option:${option.name()}`);\n          }\n          activeVariadicOption = option.variadic ? option : null;\n          continue;\n        }\n      }\n\n      // Look for combo options following single dash, eat first one if known.\n      if (arg.length > 2 && arg[0] === '-' && arg[1] !== '-') {\n        const option = this._findOption(`-${arg[1]}`);\n        if (option) {\n          if (\n            option.required ||\n            (option.optional && this._combineFlagAndOptionalValue)\n          ) {\n            // option with value following in same argument\n            this.emit(`option:${option.name()}`, arg.slice(2));\n          } else {\n            // boolean option, emit and put back remainder of arg for further processing\n            this.emit(`option:${option.name()}`);\n            args.unshift(`-${arg.slice(2)}`);\n          }\n          continue;\n        }\n      }\n\n      // Look for known long flag with value, like --foo=bar\n      if (/^--[^=]+=/.test(arg)) {\n        const index = arg.indexOf('=');\n        const option = this._findOption(arg.slice(0, index));\n        if (option && (option.required || option.optional)) {\n          this.emit(`option:${option.name()}`, arg.slice(index + 1));\n          continue;\n        }\n      }\n\n      // Not a recognised option by this command.\n      // Might be a command-argument, or subcommand option, or unknown option, or help command or option.\n\n      // An unknown option means further arguments also classified as unknown so can be reprocessed by subcommands.\n      if (maybeOption(arg)) {\n        dest = unknown;\n      }\n\n      // If using positionalOptions, stop processing our options at subcommand.\n      if (\n        (this._enablePositionalOptions || this._passThroughOptions) &&\n        operands.length === 0 &&\n        unknown.length === 0\n      ) {\n        if (this._findCommand(arg)) {\n          operands.push(arg);\n          if (args.length > 0) unknown.push(...args);\n          break;\n        } else if (\n          this._getHelpCommand() &&\n          arg === this._getHelpCommand().name()\n        ) {\n          operands.push(arg);\n          if (args.length > 0) operands.push(...args);\n          break;\n        } else if (this._defaultCommandName) {\n          unknown.push(arg);\n          if (args.length > 0) unknown.push(...args);\n          break;\n        }\n      }\n\n      // If using passThroughOptions, stop processing options at first command-argument.\n      if (this._passThroughOptions) {\n        dest.push(arg);\n        if (args.length > 0) dest.push(...args);\n        break;\n      }\n\n      // add arg\n      dest.push(arg);\n    }\n\n    return { operands, unknown };\n  }\n\n  /**\n   * Return an object containing local option values as key-value pairs.\n   *\n   * @return {object}\n   */\n  opts() {\n    if (this._storeOptionsAsProperties) {\n      // Preserve original behaviour so backwards compatible when still using properties\n      const result = {};\n      const len = this.options.length;\n\n      for (let i = 0; i < len; i++) {\n        const key = this.options[i].attributeName();\n        result[key] =\n          key === this._versionOptionName ? this._version : this[key];\n      }\n      return result;\n    }\n\n    return this._optionValues;\n  }\n\n  /**\n   * Return an object containing merged local and global option values as key-value pairs.\n   *\n   * @return {object}\n   */\n  optsWithGlobals() {\n    // globals overwrite locals\n    return this._getCommandAndAncestors().reduce(\n      (combinedOptions, cmd) => Object.assign(combinedOptions, cmd.opts()),\n      {},\n    );\n  }\n\n  /**\n   * Display error message and exit (or call exitOverride).\n   *\n   * @param {string} message\n   * @param {object} [errorOptions]\n   * @param {string} [errorOptions.code] - an id string representing the error\n   * @param {number} [errorOptions.exitCode] - used with process.exit\n   */\n  error(message, errorOptions) {\n    // output handling\n    this._outputConfiguration.outputError(\n      `${message}\\n`,\n      this._outputConfiguration.writeErr,\n    );\n    if (typeof this._showHelpAfterError === 'string') {\n      this._outputConfiguration.writeErr(`${this._showHelpAfterError}\\n`);\n    } else if (this._showHelpAfterError) {\n      this._outputConfiguration.writeErr('\\n');\n      this.outputHelp({ error: true });\n    }\n\n    // exit handling\n    const config = errorOptions || {};\n    const exitCode = config.exitCode || 1;\n    const code = config.code || 'commander.error';\n    this._exit(exitCode, code, message);\n  }\n\n  /**\n   * Apply any option related environment variables, if option does\n   * not have a value from cli or client code.\n   *\n   * @private\n   */\n  _parseOptionsEnv() {\n    this.options.forEach((option) => {\n      if (option.envVar && option.envVar in process.env) {\n        const optionKey = option.attributeName();\n        // Priority check. Do not overwrite cli or options from unknown source (client-code).\n        if (\n          this.getOptionValue(optionKey) === undefined ||\n          ['default', 'config', 'env'].includes(\n            this.getOptionValueSource(optionKey),\n          )\n        ) {\n          if (option.required || option.optional) {\n            // option can take a value\n            // keep very simple, optional always takes value\n            this.emit(`optionEnv:${option.name()}`, process.env[option.envVar]);\n          } else {\n            // boolean\n            // keep very simple, only care that envVar defined and not the value\n            this.emit(`optionEnv:${option.name()}`);\n          }\n        }\n      }\n    });\n  }\n\n  /**\n   * Apply any implied option values, if option is undefined or default value.\n   *\n   * @private\n   */\n  _parseOptionsImplied() {\n    const dualHelper = new DualOptions(this.options);\n    const hasCustomOptionValue = (optionKey) => {\n      return (\n        this.getOptionValue(optionKey) !== undefined &&\n        !['default', 'implied'].includes(this.getOptionValueSource(optionKey))\n      );\n    };\n    this.options\n      .filter(\n        (option) =>\n          option.implied !== undefined &&\n          hasCustomOptionValue(option.attributeName()) &&\n          dualHelper.valueFromOption(\n            this.getOptionValue(option.attributeName()),\n            option,\n          ),\n      )\n      .forEach((option) => {\n        Object.keys(option.implied)\n          .filter((impliedKey) => !hasCustomOptionValue(impliedKey))\n          .forEach((impliedKey) => {\n            this.setOptionValueWithSource(\n              impliedKey,\n              option.implied[impliedKey],\n              'implied',\n            );\n          });\n      });\n  }\n\n  /**\n   * Argument `name` is missing.\n   *\n   * @param {string} name\n   * @private\n   */\n\n  missingArgument(name) {\n    const message = `error: missing required argument '${name}'`;\n    this.error(message, { code: 'commander.missingArgument' });\n  }\n\n  /**\n   * `Option` is missing an argument.\n   *\n   * @param {Option} option\n   * @private\n   */\n\n  optionMissingArgument(option) {\n    const message = `error: option '${option.flags}' argument missing`;\n    this.error(message, { code: 'commander.optionMissingArgument' });\n  }\n\n  /**\n   * `Option` does not have a value, and is a mandatory option.\n   *\n   * @param {Option} option\n   * @private\n   */\n\n  missingMandatoryOptionValue(option) {\n    const message = `error: required option '${option.flags}' not specified`;\n    this.error(message, { code: 'commander.missingMandatoryOptionValue' });\n  }\n\n  /**\n   * `Option` conflicts with another option.\n   *\n   * @param {Option} option\n   * @param {Option} conflictingOption\n   * @private\n   */\n  _conflictingOption(option, conflictingOption) {\n    // The calling code does not know whether a negated option is the source of the\n    // value, so do some work to take an educated guess.\n    const findBestOptionFromValue = (option) => {\n      const optionKey = option.attributeName();\n      const optionValue = this.getOptionValue(optionKey);\n      const negativeOption = this.options.find(\n        (target) => target.negate && optionKey === target.attributeName(),\n      );\n      const positiveOption = this.options.find(\n        (target) => !target.negate && optionKey === target.attributeName(),\n      );\n      if (\n        negativeOption &&\n        ((negativeOption.presetArg === undefined && optionValue === false) ||\n          (negativeOption.presetArg !== undefined &&\n            optionValue === negativeOption.presetArg))\n      ) {\n        return negativeOption;\n      }\n      return positiveOption || option;\n    };\n\n    const getErrorMessage = (option) => {\n      const bestOption = findBestOptionFromValue(option);\n      const optionKey = bestOption.attributeName();\n      const source = this.getOptionValueSource(optionKey);\n      if (source === 'env') {\n        return `environment variable '${bestOption.envVar}'`;\n      }\n      return `option '${bestOption.flags}'`;\n    };\n\n    const message = `error: ${getErrorMessage(option)} cannot be used with ${getErrorMessage(conflictingOption)}`;\n    this.error(message, { code: 'commander.conflictingOption' });\n  }\n\n  /**\n   * Unknown option `flag`.\n   *\n   * @param {string} flag\n   * @private\n   */\n\n  unknownOption(flag) {\n    if (this._allowUnknownOption) return;\n    let suggestion = '';\n\n    if (flag.startsWith('--') && this._showSuggestionAfterError) {\n      // Looping to pick up the global options too\n      let candidateFlags = [];\n      // eslint-disable-next-line @typescript-eslint/no-this-alias\n      let command = this;\n      do {\n        const moreFlags = command\n          .createHelp()\n          .visibleOptions(command)\n          .filter((option) => option.long)\n          .map((option) => option.long);\n        candidateFlags = candidateFlags.concat(moreFlags);\n        command = command.parent;\n      } while (command && !command._enablePositionalOptions);\n      suggestion = suggestSimilar(flag, candidateFlags);\n    }\n\n    const message = `error: unknown option '${flag}'${suggestion}`;\n    this.error(message, { code: 'commander.unknownOption' });\n  }\n\n  /**\n   * Excess arguments, more than expected.\n   *\n   * @param {string[]} receivedArgs\n   * @private\n   */\n\n  _excessArguments(receivedArgs) {\n    if (this._allowExcessArguments) return;\n\n    const expected = this.registeredArguments.length;\n    const s = expected === 1 ? '' : 's';\n    const forSubcommand = this.parent ? ` for '${this.name()}'` : '';\n    const message = `error: too many arguments${forSubcommand}. Expected ${expected} argument${s} but got ${receivedArgs.length}.`;\n    this.error(message, { code: 'commander.excessArguments' });\n  }\n\n  /**\n   * Unknown command.\n   *\n   * @private\n   */\n\n  unknownCommand() {\n    const unknownName = this.args[0];\n    let suggestion = '';\n\n    if (this._showSuggestionAfterError) {\n      const candidateNames = [];\n      this.createHelp()\n        .visibleCommands(this)\n        .forEach((command) => {\n          candidateNames.push(command.name());\n          // just visible alias\n          if (command.alias()) candidateNames.push(command.alias());\n        });\n      suggestion = suggestSimilar(unknownName, candidateNames);\n    }\n\n    const message = `error: unknown command '${unknownName}'${suggestion}`;\n    this.error(message, { code: 'commander.unknownCommand' });\n  }\n\n  /**\n   * Get or set the program version.\n   *\n   * This method auto-registers the \"-V, --version\" option which will print the version number.\n   *\n   * You can optionally supply the flags and description to override the defaults.\n   *\n   * @param {string} [str]\n   * @param {string} [flags]\n   * @param {string} [description]\n   * @return {(this | string | undefined)} `this` command for chaining, or version string if no arguments\n   */\n\n  version(str, flags, description) {\n    if (str === undefined) return this._version;\n    this._version = str;\n    flags = flags || '-V, --version';\n    description = description || 'output the version number';\n    const versionOption = this.createOption(flags, description);\n    this._versionOptionName = versionOption.attributeName();\n    this._registerOption(versionOption);\n\n    this.on('option:' + versionOption.name(), () => {\n      this._outputConfiguration.writeOut(`${str}\\n`);\n      this._exit(0, 'commander.version', str);\n    });\n    return this;\n  }\n\n  /**\n   * Set the description.\n   *\n   * @param {string} [str]\n   * @param {object} [argsDescription]\n   * @return {(string|Command)}\n   */\n  description(str, argsDescription) {\n    if (str === undefined && argsDescription === undefined)\n      return this._description;\n    this._description = str;\n    if (argsDescription) {\n      this._argsDescription = argsDescription;\n    }\n    return this;\n  }\n\n  /**\n   * Set the summary. Used when listed as subcommand of parent.\n   *\n   * @param {string} [str]\n   * @return {(string|Command)}\n   */\n  summary(str) {\n    if (str === undefined) return this._summary;\n    this._summary = str;\n    return this;\n  }\n\n  /**\n   * Set an alias for the command.\n   *\n   * You may call more than once to add multiple aliases. Only the first alias is shown in the auto-generated help.\n   *\n   * @param {string} [alias]\n   * @return {(string|Command)}\n   */\n\n  alias(alias) {\n    if (alias === undefined) return this._aliases[0]; // just return first, for backwards compatibility\n\n    /** @type {Command} */\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    let command = this;\n    if (\n      this.commands.length !== 0 &&\n      this.commands[this.commands.length - 1]._executableHandler\n    ) {\n      // assume adding alias for last added executable subcommand, rather than this\n      command = this.commands[this.commands.length - 1];\n    }\n\n    if (alias === command._name)\n      throw new Error(\"Command alias can't be the same as its name\");\n    const matchingCommand = this.parent?._findCommand(alias);\n    if (matchingCommand) {\n      // c.f. _registerCommand\n      const existingCmd = [matchingCommand.name()]\n        .concat(matchingCommand.aliases())\n        .join('|');\n      throw new Error(\n        `cannot add alias '${alias}' to command '${this.name()}' as already have command '${existingCmd}'`,\n      );\n    }\n\n    command._aliases.push(alias);\n    return this;\n  }\n\n  /**\n   * Set aliases for the command.\n   *\n   * Only the first alias is shown in the auto-generated help.\n   *\n   * @param {string[]} [aliases]\n   * @return {(string[]|Command)}\n   */\n\n  aliases(aliases) {\n    // Getter for the array of aliases is the main reason for having aliases() in addition to alias().\n    if (aliases === undefined) return this._aliases;\n\n    aliases.forEach((alias) => this.alias(alias));\n    return this;\n  }\n\n  /**\n   * Set / get the command usage `str`.\n   *\n   * @param {string} [str]\n   * @return {(string|Command)}\n   */\n\n  usage(str) {\n    if (str === undefined) {\n      if (this._usage) return this._usage;\n\n      const args = this.registeredArguments.map((arg) => {\n        return humanReadableArgName(arg);\n      });\n      return []\n        .concat(\n          this.options.length || this._helpOption !== null ? '[options]' : [],\n          this.commands.length ? '[command]' : [],\n          this.registeredArguments.length ? args : [],\n        )\n        .join(' ');\n    }\n\n    this._usage = str;\n    return this;\n  }\n\n  /**\n   * Get or set the name of the command.\n   *\n   * @param {string} [str]\n   * @return {(string|Command)}\n   */\n\n  name(str) {\n    if (str === undefined) return this._name;\n    this._name = str;\n    return this;\n  }\n\n  /**\n   * Set the name of the command from script filename, such as process.argv[1],\n   * or require.main.filename, or __filename.\n   *\n   * (Used internally and public although not documented in README.)\n   *\n   * @example\n   * program.nameFromFilename(require.main.filename);\n   *\n   * @param {string} filename\n   * @return {Command}\n   */\n\n  nameFromFilename(filename) {\n    this._name = path.basename(filename, path.extname(filename));\n\n    return this;\n  }\n\n  /**\n   * Get or set the directory for searching for executable subcommands of this command.\n   *\n   * @example\n   * program.executableDir(__dirname);\n   * // or\n   * program.executableDir('subcommands');\n   *\n   * @param {string} [path]\n   * @return {(string|null|Command)}\n   */\n\n  executableDir(path) {\n    if (path === undefined) return this._executableDir;\n    this._executableDir = path;\n    return this;\n  }\n\n  /**\n   * Return program help documentation.\n   *\n   * @param {{ error: boolean }} [contextOptions] - pass {error:true} to wrap for stderr instead of stdout\n   * @return {string}\n   */\n\n  helpInformation(contextOptions) {\n    const helper = this.createHelp();\n    if (helper.helpWidth === undefined) {\n      helper.helpWidth =\n        contextOptions && contextOptions.error\n          ? this._outputConfiguration.getErrHelpWidth()\n          : this._outputConfiguration.getOutHelpWidth();\n    }\n    return helper.formatHelp(this, helper);\n  }\n\n  /**\n   * @private\n   */\n\n  _getHelpContext(contextOptions) {\n    contextOptions = contextOptions || {};\n    const context = { error: !!contextOptions.error };\n    let write;\n    if (context.error) {\n      write = (arg) => this._outputConfiguration.writeErr(arg);\n    } else {\n      write = (arg) => this._outputConfiguration.writeOut(arg);\n    }\n    context.write = contextOptions.write || write;\n    context.command = this;\n    return context;\n  }\n\n  /**\n   * Output help information for this command.\n   *\n   * Outputs built-in help, and custom text added using `.addHelpText()`.\n   *\n   * @param {{ error: boolean } | Function} [contextOptions] - pass {error:true} to write to stderr instead of stdout\n   */\n\n  outputHelp(contextOptions) {\n    let deprecatedCallback;\n    if (typeof contextOptions === 'function') {\n      deprecatedCallback = contextOptions;\n      contextOptions = undefined;\n    }\n    const context = this._getHelpContext(contextOptions);\n\n    this._getCommandAndAncestors()\n      .reverse()\n      .forEach((command) => command.emit('beforeAllHelp', context));\n    this.emit('beforeHelp', context);\n\n    let helpInformation = this.helpInformation(context);\n    if (deprecatedCallback) {\n      helpInformation = deprecatedCallback(helpInformation);\n      if (\n        typeof helpInformation !== 'string' &&\n        !Buffer.isBuffer(helpInformation)\n      ) {\n        throw new Error('outputHelp callback must return a string or a Buffer');\n      }\n    }\n    context.write(helpInformation);\n\n    if (this._getHelpOption()?.long) {\n      this.emit(this._getHelpOption().long); // deprecated\n    }\n    this.emit('afterHelp', context);\n    this._getCommandAndAncestors().forEach((command) =>\n      command.emit('afterAllHelp', context),\n    );\n  }\n\n  /**\n   * You can pass in flags and a description to customise the built-in help option.\n   * Pass in false to disable the built-in help option.\n   *\n   * @example\n   * program.helpOption('-?, --help' 'show help'); // customise\n   * program.helpOption(false); // disable\n   *\n   * @param {(string | boolean)} flags\n   * @param {string} [description]\n   * @return {Command} `this` command for chaining\n   */\n\n  helpOption(flags, description) {\n    // Support disabling built-in help option.\n    if (typeof flags === 'boolean') {\n      if (flags) {\n        this._helpOption = this._helpOption ?? undefined; // preserve existing option\n      } else {\n        this._helpOption = null; // disable\n      }\n      return this;\n    }\n\n    // Customise flags and description.\n    flags = flags ?? '-h, --help';\n    description = description ?? 'display help for command';\n    this._helpOption = this.createOption(flags, description);\n\n    return this;\n  }\n\n  /**\n   * Lazy create help option.\n   * Returns null if has been disabled with .helpOption(false).\n   *\n   * @returns {(Option | null)} the help option\n   * @package\n   */\n  _getHelpOption() {\n    // Lazy create help option on demand.\n    if (this._helpOption === undefined) {\n      this.helpOption(undefined, undefined);\n    }\n    return this._helpOption;\n  }\n\n  /**\n   * Supply your own option to use for the built-in help option.\n   * This is an alternative to using helpOption() to customise the flags and description etc.\n   *\n   * @param {Option} option\n   * @return {Command} `this` command for chaining\n   */\n  addHelpOption(option) {\n    this._helpOption = option;\n    return this;\n  }\n\n  /**\n   * Output help information and exit.\n   *\n   * Outputs built-in help, and custom text added using `.addHelpText()`.\n   *\n   * @param {{ error: boolean }} [contextOptions] - pass {error:true} to write to stderr instead of stdout\n   */\n\n  help(contextOptions) {\n    this.outputHelp(contextOptions);\n    let exitCode = process.exitCode || 0;\n    if (\n      exitCode === 0 &&\n      contextOptions &&\n      typeof contextOptions !== 'function' &&\n      contextOptions.error\n    ) {\n      exitCode = 1;\n    }\n    // message: do not have all displayed text available so only passing placeholder.\n    this._exit(exitCode, 'commander.help', '(outputHelp)');\n  }\n\n  /**\n   * Add additional text to be displayed with the built-in help.\n   *\n   * Position is 'before' or 'after' to affect just this command,\n   * and 'beforeAll' or 'afterAll' to affect this command and all its subcommands.\n   *\n   * @param {string} position - before or after built-in help\n   * @param {(string | Function)} text - string to add, or a function returning a string\n   * @return {Command} `this` command for chaining\n   */\n  addHelpText(position, text) {\n    const allowedValues = ['beforeAll', 'before', 'after', 'afterAll'];\n    if (!allowedValues.includes(position)) {\n      throw new Error(`Unexpected value for position to addHelpText.\nExpecting one of '${allowedValues.join(\"', '\")}'`);\n    }\n    const helpEvent = `${position}Help`;\n    this.on(helpEvent, (context) => {\n      let helpStr;\n      if (typeof text === 'function') {\n        helpStr = text({ error: context.error, command: context.command });\n      } else {\n        helpStr = text;\n      }\n      // Ignore falsy value when nothing to output.\n      if (helpStr) {\n        context.write(`${helpStr}\\n`);\n      }\n    });\n    return this;\n  }\n\n  /**\n   * Output help information if help flags specified\n   *\n   * @param {Array} args - array of options to search for help flags\n   * @private\n   */\n\n  _outputHelpIfRequested(args) {\n    const helpOption = this._getHelpOption();\n    const helpRequested = helpOption && args.find((arg) => helpOption.is(arg));\n    if (helpRequested) {\n      this.outputHelp();\n      // (Do not have all displayed text available so only passing placeholder.)\n      this._exit(0, 'commander.helpDisplayed', '(outputHelp)');\n    }\n  }\n}\n\n/**\n * Scan arguments and increment port number for inspect calls (to avoid conflicts when spawning new command).\n *\n * @param {string[]} args - array of arguments from node.execArgv\n * @returns {string[]}\n * @private\n */\n\nfunction incrementNodeInspectorPort(args) {\n  // Testing for these options:\n  //  --inspect[=[host:]port]\n  //  --inspect-brk[=[host:]port]\n  //  --inspect-port=[host:]port\n  return args.map((arg) => {\n    if (!arg.startsWith('--inspect')) {\n      return arg;\n    }\n    let debugOption;\n    let debugHost = '127.0.0.1';\n    let debugPort = '9229';\n    let match;\n    if ((match = arg.match(/^(--inspect(-brk)?)$/)) !== null) {\n      // e.g. --inspect\n      debugOption = match[1];\n    } else if (\n      (match = arg.match(/^(--inspect(-brk|-port)?)=([^:]+)$/)) !== null\n    ) {\n      debugOption = match[1];\n      if (/^\\d+$/.test(match[3])) {\n        // e.g. --inspect=1234\n        debugPort = match[3];\n      } else {\n        // e.g. --inspect=localhost\n        debugHost = match[3];\n      }\n    } else if (\n      (match = arg.match(/^(--inspect(-brk|-port)?)=([^:]+):(\\d+)$/)) !== null\n    ) {\n      // e.g. --inspect=localhost:1234\n      debugOption = match[1];\n      debugHost = match[3];\n      debugPort = match[4];\n    }\n\n    if (debugOption && debugPort !== '0') {\n      return `${debugOption}=${debugHost}:${parseInt(debugPort) + 1}`;\n    }\n    return arg;\n  });\n}\n\nexports.Command = Command;\n", "const { Argument } = require('./lib/argument.js');\nconst { Command } = require('./lib/command.js');\nconst { CommanderError, InvalidArgumentError } = require('./lib/error.js');\nconst { Help } = require('./lib/help.js');\nconst { Option } = require('./lib/option.js');\n\nexports.program = new Command();\n\nexports.createCommand = (name) => new Command(name);\nexports.createOption = (flags, description) => new Option(flags, description);\nexports.createArgument = (name, description) => new Argument(name, description);\n\n/**\n * Expose classes\n */\n\nexports.Command = Command;\nexports.Option = Option;\nexports.Argument = Argument;\nexports.Help = Help;\n\nexports.CommanderError = CommanderError;\nexports.InvalidArgumentError = InvalidArgumentError;\nexports.InvalidOptionArgumentError = InvalidArgumentError; // Deprecated\n", "module.exports = isexe\nisexe.sync = sync\n\nvar fs = require('fs')\n\nfunction checkPathExt (path, options) {\n  var pathext = options.pathExt !== undefined ?\n    options.pathExt : process.env.PATHEXT\n\n  if (!pathext) {\n    return true\n  }\n\n  pathext = pathext.split(';')\n  if (pathext.indexOf('') !== -1) {\n    return true\n  }\n  for (var i = 0; i < pathext.length; i++) {\n    var p = pathext[i].toLowerCase()\n    if (p && path.substr(-p.length).toLowerCase() === p) {\n      return true\n    }\n  }\n  return false\n}\n\nfunction checkStat (stat, path, options) {\n  if (!stat.isSymbolicLink() && !stat.isFile()) {\n    return false\n  }\n  return checkPathExt(path, options)\n}\n\nfunction isexe (path, options, cb) {\n  fs.stat(path, function (er, stat) {\n    cb(er, er ? false : checkStat(stat, path, options))\n  })\n}\n\nfunction sync (path, options) {\n  return checkStat(fs.statSync(path), path, options)\n}\n", "module.exports = isexe\nisexe.sync = sync\n\nvar fs = require('fs')\n\nfunction isexe (path, options, cb) {\n  fs.stat(path, function (er, stat) {\n    cb(er, er ? false : checkStat(stat, options))\n  })\n}\n\nfunction sync (path, options) {\n  return checkStat(fs.statSync(path), options)\n}\n\nfunction checkStat (stat, options) {\n  return stat.isFile() && checkMode(stat, options)\n}\n\nfunction checkMode (stat, options) {\n  var mod = stat.mode\n  var uid = stat.uid\n  var gid = stat.gid\n\n  var myUid = options.uid !== undefined ?\n    options.uid : process.getuid && process.getuid()\n  var myGid = options.gid !== undefined ?\n    options.gid : process.getgid && process.getgid()\n\n  var u = parseInt('100', 8)\n  var g = parseInt('010', 8)\n  var o = parseInt('001', 8)\n  var ug = u | g\n\n  var ret = (mod & o) ||\n    (mod & g) && gid === myGid ||\n    (mod & u) && uid === myUid ||\n    (mod & ug) && myUid === 0\n\n  return ret\n}\n", "var fs = require('fs')\nvar core\nif (process.platform === 'win32' || global.TESTING_WINDOWS) {\n  core = require('./windows.js')\n} else {\n  core = require('./mode.js')\n}\n\nmodule.exports = isexe\nisexe.sync = sync\n\nfunction isexe (path, options, cb) {\n  if (typeof options === 'function') {\n    cb = options\n    options = {}\n  }\n\n  if (!cb) {\n    if (typeof Promise !== 'function') {\n      throw new TypeError('callback not provided')\n    }\n\n    return new Promise(function (resolve, reject) {\n      isexe(path, options || {}, function (er, is) {\n        if (er) {\n          reject(er)\n        } else {\n          resolve(is)\n        }\n      })\n    })\n  }\n\n  core(path, options || {}, function (er, is) {\n    // ignore EACCES because that just means we aren't allowed to run it\n    if (er) {\n      if (er.code === 'EACCES' || options && options.ignoreErrors) {\n        er = null\n        is = false\n      }\n    }\n    cb(er, is)\n  })\n}\n\nfunction sync (path, options) {\n  // my kingdom for a filtered catch\n  try {\n    return core.sync(path, options || {})\n  } catch (er) {\n    if (options && options.ignoreErrors || er.code === 'EACCES') {\n      return false\n    } else {\n      throw er\n    }\n  }\n}\n", "const isWindows = process.platform === 'win32' ||\n    process.env.OSTYPE === 'cygwin' ||\n    process.env.OSTYPE === 'msys'\n\nconst path = require('path')\nconst COLON = isWindows ? ';' : ':'\nconst isexe = require('isexe')\n\nconst getNotFoundError = (cmd) =>\n  Object.assign(new Error(`not found: ${cmd}`), { code: 'ENOENT' })\n\nconst getPathInfo = (cmd, opt) => {\n  const colon = opt.colon || COLON\n\n  // If it has a slash, then we don't bother searching the pathenv.\n  // just check the file itself, and that's it.\n  const pathEnv = cmd.match(/\\//) || isWindows && cmd.match(/\\\\/) ? ['']\n    : (\n      [\n        // windows always checks the cwd first\n        ...(isWindows ? [process.cwd()] : []),\n        ...(opt.path || process.env.PATH ||\n          /* istanbul ignore next: very unusual */ '').split(colon),\n      ]\n    )\n  const pathExtExe = isWindows\n    ? opt.pathExt || process.env.PATHEXT || '.EXE;.CMD;.BAT;.COM'\n    : ''\n  const pathExt = isWindows ? pathExtExe.split(colon) : ['']\n\n  if (isWindows) {\n    if (cmd.indexOf('.') !== -1 && pathExt[0] !== '')\n      pathExt.unshift('')\n  }\n\n  return {\n    pathEnv,\n    pathExt,\n    pathExtExe,\n  }\n}\n\nconst which = (cmd, opt, cb) => {\n  if (typeof opt === 'function') {\n    cb = opt\n    opt = {}\n  }\n  if (!opt)\n    opt = {}\n\n  const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt)\n  const found = []\n\n  const step = i => new Promise((resolve, reject) => {\n    if (i === pathEnv.length)\n      return opt.all && found.length ? resolve(found)\n        : reject(getNotFoundError(cmd))\n\n    const ppRaw = pathEnv[i]\n    const pathPart = /^\".*\"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw\n\n    const pCmd = path.join(pathPart, cmd)\n    const p = !pathPart && /^\\.[\\\\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd\n      : pCmd\n\n    resolve(subStep(p, i, 0))\n  })\n\n  const subStep = (p, i, ii) => new Promise((resolve, reject) => {\n    if (ii === pathExt.length)\n      return resolve(step(i + 1))\n    const ext = pathExt[ii]\n    isexe(p + ext, { pathExt: pathExtExe }, (er, is) => {\n      if (!er && is) {\n        if (opt.all)\n          found.push(p + ext)\n        else\n          return resolve(p + ext)\n      }\n      return resolve(subStep(p, i, ii + 1))\n    })\n  })\n\n  return cb ? step(0).then(res => cb(null, res), cb) : step(0)\n}\n\nconst whichSync = (cmd, opt) => {\n  opt = opt || {}\n\n  const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt)\n  const found = []\n\n  for (let i = 0; i < pathEnv.length; i ++) {\n    const ppRaw = pathEnv[i]\n    const pathPart = /^\".*\"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw\n\n    const pCmd = path.join(pathPart, cmd)\n    const p = !pathPart && /^\\.[\\\\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd\n      : pCmd\n\n    for (let j = 0; j < pathExt.length; j ++) {\n      const cur = p + pathExt[j]\n      try {\n        const is = isexe.sync(cur, { pathExt: pathExtExe })\n        if (is) {\n          if (opt.all)\n            found.push(cur)\n          else\n            return cur\n        }\n      } catch (ex) {}\n    }\n  }\n\n  if (opt.all && found.length)\n    return found\n\n  if (opt.nothrow)\n    return null\n\n  throw getNotFoundError(cmd)\n}\n\nmodule.exports = which\nwhich.sync = whichSync\n", "'use strict';\n\nconst pathKey = (options = {}) => {\n\tconst environment = options.env || process.env;\n\tconst platform = options.platform || process.platform;\n\n\tif (platform !== 'win32') {\n\t\treturn 'PATH';\n\t}\n\n\treturn Object.keys(environment).reverse().find(key => key.toUpperCase() === 'PATH') || 'Path';\n};\n\nmodule.exports = pathKey;\n// TODO: Remove this for the next major release\nmodule.exports.default = pathKey;\n", "'use strict';\n\nconst path = require('path');\nconst which = require('which');\nconst getPathKey = require('path-key');\n\nfunction resolveCommandAttempt(parsed, withoutPathExt) {\n    const env = parsed.options.env || process.env;\n    const cwd = process.cwd();\n    const hasCustomCwd = parsed.options.cwd != null;\n    // Worker threads do not have process.chdir()\n    const shouldSwitchCwd = hasCustomCwd && process.chdir !== undefined && !process.chdir.disabled;\n\n    // If a custom `cwd` was specified, we need to change the process cwd\n    // because `which` will do stat calls but does not support a custom cwd\n    if (shouldSwitchCwd) {\n        try {\n            process.chdir(parsed.options.cwd);\n        } catch (err) {\n            /* Empty */\n        }\n    }\n\n    let resolved;\n\n    try {\n        resolved = which.sync(parsed.command, {\n            path: env[getPathKey({ env })],\n            pathExt: withoutPathExt ? path.delimiter : undefined,\n        });\n    } catch (e) {\n        /* Empty */\n    } finally {\n        if (shouldSwitchCwd) {\n            process.chdir(cwd);\n        }\n    }\n\n    // If we successfully resolved, ensure that an absolute path is returned\n    // Note that when a custom `cwd` was used, we need to resolve to an absolute path based on it\n    if (resolved) {\n        resolved = path.resolve(hasCustomCwd ? parsed.options.cwd : '', resolved);\n    }\n\n    return resolved;\n}\n\nfunction resolveCommand(parsed) {\n    return resolveCommandAttempt(parsed) || resolveCommandAttempt(parsed, true);\n}\n\nmodule.exports = resolveCommand;\n", "'use strict';\n\n// See http://www.robvanderwoude.com/escapechars.php\nconst metaCharsRegExp = /([()\\][%!^\"`<>&|;, *?])/g;\n\nfunction escapeCommand(arg) {\n    // Escape meta chars\n    arg = arg.replace(metaCharsRegExp, '^$1');\n\n    return arg;\n}\n\nfunction escapeArgument(arg, doubleEscapeMetaChars) {\n    // Convert to string\n    arg = `${arg}`;\n\n    // Algorithm below is based on https://qntm.org/cmd\n\n    // Sequence of backslashes followed by a double quote:\n    // double up all the backslashes and escape the double quote\n    arg = arg.replace(/(\\\\*)\"/g, '$1$1\\\\\"');\n\n    // Sequence of backslashes followed by the end of the string\n    // (which will become a double quote later):\n    // double up all the backslashes\n    arg = arg.replace(/(\\\\*)$/, '$1$1');\n\n    // All other backslashes occur literally\n\n    // Quote the whole thing:\n    arg = `\"${arg}\"`;\n\n    // Escape meta chars\n    arg = arg.replace(metaCharsRegExp, '^$1');\n\n    // Double escape meta chars if necessary\n    if (doubleEscapeMetaChars) {\n        arg = arg.replace(metaCharsRegExp, '^$1');\n    }\n\n    return arg;\n}\n\nmodule.exports.command = escapeCommand;\nmodule.exports.argument = escapeArgument;\n", "'use strict';\nmodule.exports = /^#!(.*)/;\n", "'use strict';\nconst shebangRegex = require('shebang-regex');\n\nmodule.exports = (string = '') => {\n\tconst match = string.match(shebangRegex);\n\n\tif (!match) {\n\t\treturn null;\n\t}\n\n\tconst [path, argument] = match[0].replace(/#! ?/, '').split(' ');\n\tconst binary = path.split('/').pop();\n\n\tif (binary === 'env') {\n\t\treturn argument;\n\t}\n\n\treturn argument ? `${binary} ${argument}` : binary;\n};\n", "'use strict';\n\nconst fs = require('fs');\nconst shebangCommand = require('shebang-command');\n\nfunction readShebang(command) {\n    // Read the first 150 bytes from the file\n    const size = 150;\n    const buffer = Buffer.alloc(size);\n\n    let fd;\n\n    try {\n        fd = fs.openSync(command, 'r');\n        fs.readSync(fd, buffer, 0, size, 0);\n        fs.closeSync(fd);\n    } catch (e) { /* Empty */ }\n\n    // Attempt to extract shebang (null is returned if not a shebang)\n    return shebangCommand(buffer.toString());\n}\n\nmodule.exports = readShebang;\n", "'use strict';\n\nconst path = require('path');\nconst resolveCommand = require('./util/resolveCommand');\nconst escape = require('./util/escape');\nconst readShebang = require('./util/readShebang');\n\nconst isWin = process.platform === 'win32';\nconst isExecutableRegExp = /\\.(?:com|exe)$/i;\nconst isCmdShimRegExp = /node_modules[\\\\/].bin[\\\\/][^\\\\/]+\\.cmd$/i;\n\nfunction detectShebang(parsed) {\n    parsed.file = resolveCommand(parsed);\n\n    const shebang = parsed.file && readShebang(parsed.file);\n\n    if (shebang) {\n        parsed.args.unshift(parsed.file);\n        parsed.command = shebang;\n\n        return resolveCommand(parsed);\n    }\n\n    return parsed.file;\n}\n\nfunction parseNonShell(parsed) {\n    if (!isWin) {\n        return parsed;\n    }\n\n    // Detect & add support for shebangs\n    const commandFile = detectShebang(parsed);\n\n    // We don't need a shell if the command filename is an executable\n    const needsShell = !isExecutableRegExp.test(commandFile);\n\n    // If a shell is required, use cmd.exe and take care of escaping everything correctly\n    // Note that `forceShell` is an hidden option used only in tests\n    if (parsed.options.forceShell || needsShell) {\n        // Need to double escape meta chars if the command is a cmd-shim located in `node_modules/.bin/`\n        // The cmd-shim simply calls execute the package bin file with NodeJS, proxying any argument\n        // Because the escape of metachars with ^ gets interpreted when the cmd.exe is first called,\n        // we need to double escape them\n        const needsDoubleEscapeMetaChars = isCmdShimRegExp.test(commandFile);\n\n        // Normalize posix paths into OS compatible paths (e.g.: foo/bar -> foo\\bar)\n        // This is necessary otherwise it will always fail with ENOENT in those cases\n        parsed.command = path.normalize(parsed.command);\n\n        // Escape command & arguments\n        parsed.command = escape.command(parsed.command);\n        parsed.args = parsed.args.map((arg) => escape.argument(arg, needsDoubleEscapeMetaChars));\n\n        const shellCommand = [parsed.command].concat(parsed.args).join(' ');\n\n        parsed.args = ['/d', '/s', '/c', `\"${shellCommand}\"`];\n        parsed.command = process.env.comspec || 'cmd.exe';\n        parsed.options.windowsVerbatimArguments = true; // Tell node's spawn that the arguments are already escaped\n    }\n\n    return parsed;\n}\n\nfunction parse(command, args, options) {\n    // Normalize arguments, similar to nodejs\n    if (args && !Array.isArray(args)) {\n        options = args;\n        args = null;\n    }\n\n    args = args ? args.slice(0) : []; // Clone array to avoid changing the original\n    options = Object.assign({}, options); // Clone object to avoid changing the original\n\n    // Build our parsed object\n    const parsed = {\n        command,\n        args,\n        options,\n        file: undefined,\n        original: {\n            command,\n            args,\n        },\n    };\n\n    // Delegate further parsing to shell or non-shell\n    return options.shell ? parsed : parseNonShell(parsed);\n}\n\nmodule.exports = parse;\n", "'use strict';\n\nconst isWin = process.platform === 'win32';\n\nfunction notFoundError(original, syscall) {\n    return Object.assign(new Error(`${syscall} ${original.command} ENOENT`), {\n        code: 'ENOENT',\n        errno: 'ENOENT',\n        syscall: `${syscall} ${original.command}`,\n        path: original.command,\n        spawnargs: original.args,\n    });\n}\n\nfunction hookChildProcess(cp, parsed) {\n    if (!isWin) {\n        return;\n    }\n\n    const originalEmit = cp.emit;\n\n    cp.emit = function (name, arg1) {\n        // If emitting \"exit\" event and exit code is 1, we need to check if\n        // the command exists and emit an \"error\" instead\n        // See https://github.com/IndigoUnited/node-cross-spawn/issues/16\n        if (name === 'exit') {\n            const err = verifyENOENT(arg1, parsed, 'spawn');\n\n            if (err) {\n                return originalEmit.call(cp, 'error', err);\n            }\n        }\n\n        return originalEmit.apply(cp, arguments); // eslint-disable-line prefer-rest-params\n    };\n}\n\nfunction verifyENOENT(status, parsed) {\n    if (isWin && status === 1 && !parsed.file) {\n        return notFoundError(parsed.original, 'spawn');\n    }\n\n    return null;\n}\n\nfunction verifyENOENTSync(status, parsed) {\n    if (isWin && status === 1 && !parsed.file) {\n        return notFoundError(parsed.original, 'spawnSync');\n    }\n\n    return null;\n}\n\nmodule.exports = {\n    hookChildProcess,\n    verifyENOENT,\n    verifyENOENTSync,\n    notFoundError,\n};\n", "'use strict';\n\nconst cp = require('child_process');\nconst parse = require('./lib/parse');\nconst enoent = require('./lib/enoent');\n\nfunction spawn(command, args, options) {\n    // Parse the arguments\n    const parsed = parse(command, args, options);\n\n    // Spawn the child process\n    const spawned = cp.spawn(parsed.command, parsed.args, parsed.options);\n\n    // Hook into child process \"exit\" event to emit an error if the command\n    // does not exists, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16\n    enoent.hookChildProcess(spawned, parsed);\n\n    return spawned;\n}\n\nfunction spawnSync(command, args, options) {\n    // Parse the arguments\n    const parsed = parse(command, args, options);\n\n    // Spawn the child process\n    const result = cp.spawnSync(parsed.command, parsed.args, parsed.options);\n\n    // Analyze if the command does not exist, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16\n    result.error = result.error || enoent.verifyENOENTSync(result.status, parsed);\n\n    return result;\n}\n\nmodule.exports = spawn;\nmodule.exports.spawn = spawn;\nmodule.exports.sync = spawnSync;\n\nmodule.exports._parse = parse;\nmodule.exports._enoent = enoent;\n", "'use strict';\n\nconst path = require('path');\nconst WIN_SLASH = '\\\\\\\\/';\nconst WIN_NO_SLASH = `[^${WIN_SLASH}]`;\n\n/**\n * Posix glob regex\n */\n\nconst DOT_LITERAL = '\\\\.';\nconst PLUS_LITERAL = '\\\\+';\nconst QMARK_LITERAL = '\\\\?';\nconst SLASH_LITERAL = '\\\\/';\nconst ONE_CHAR = '(?=.)';\nconst QMARK = '[^/]';\nconst END_ANCHOR = `(?:${SLASH_LITERAL}|$)`;\nconst START_ANCHOR = `(?:^|${SLASH_LITERAL})`;\nconst DOTS_SLASH = `${DOT_LITERAL}{1,2}${END_ANCHOR}`;\nconst NO_DOT = `(?!${DOT_LITERAL})`;\nconst NO_DOTS = `(?!${START_ANCHOR}${DOTS_SLASH})`;\nconst NO_DOT_SLASH = `(?!${DOT_LITERAL}{0,1}${END_ANCHOR})`;\nconst NO_DOTS_SLASH = `(?!${DOTS_SLASH})`;\nconst QMARK_NO_DOT = `[^.${SLASH_LITERAL}]`;\nconst STAR = `${QMARK}*?`;\n\nconst POSIX_CHARS = {\n  DOT_LITERAL,\n  PLUS_LITERAL,\n  QMARK_LITERAL,\n  SLASH_LITERAL,\n  ONE_CHAR,\n  QMARK,\n  END_ANCHOR,\n  DOTS_SLASH,\n  NO_DOT,\n  NO_DOTS,\n  NO_DOT_SLASH,\n  NO_DOTS_SLASH,\n  QMARK_NO_DOT,\n  STAR,\n  START_ANCHOR\n};\n\n/**\n * Windows glob regex\n */\n\nconst WINDOWS_CHARS = {\n  ...POSIX_CHARS,\n\n  SLASH_LITERAL: `[${WIN_SLASH}]`,\n  QMARK: WIN_NO_SLASH,\n  STAR: `${WIN_NO_SLASH}*?`,\n  DOTS_SLASH: `${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$)`,\n  NO_DOT: `(?!${DOT_LITERAL})`,\n  NO_DOTS: `(?!(?:^|[${WIN_SLASH}])${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`,\n  NO_DOT_SLASH: `(?!${DOT_LITERAL}{0,1}(?:[${WIN_SLASH}]|$))`,\n  NO_DOTS_SLASH: `(?!${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`,\n  QMARK_NO_DOT: `[^.${WIN_SLASH}]`,\n  START_ANCHOR: `(?:^|[${WIN_SLASH}])`,\n  END_ANCHOR: `(?:[${WIN_SLASH}]|$)`\n};\n\n/**\n * POSIX Bracket Regex\n */\n\nconst POSIX_REGEX_SOURCE = {\n  alnum: 'a-zA-Z0-9',\n  alpha: 'a-zA-Z',\n  ascii: '\\\\x00-\\\\x7F',\n  blank: ' \\\\t',\n  cntrl: '\\\\x00-\\\\x1F\\\\x7F',\n  digit: '0-9',\n  graph: '\\\\x21-\\\\x7E',\n  lower: 'a-z',\n  print: '\\\\x20-\\\\x7E ',\n  punct: '\\\\-!\"#$%&\\'()\\\\*+,./:;<=>?@[\\\\]^_`{|}~',\n  space: ' \\\\t\\\\r\\\\n\\\\v\\\\f',\n  upper: 'A-Z',\n  word: 'A-Za-z0-9_',\n  xdigit: 'A-Fa-f0-9'\n};\n\nmodule.exports = {\n  MAX_LENGTH: 1024 * 64,\n  POSIX_REGEX_SOURCE,\n\n  // regular expressions\n  REGEX_BACKSLASH: /\\\\(?![*+?^${}(|)[\\]])/g,\n  REGEX_NON_SPECIAL_CHARS: /^[^@![\\].,$*+?^{}()|\\\\/]+/,\n  REGEX_SPECIAL_CHARS: /[-*+?.^${}(|)[\\]]/,\n  REGEX_SPECIAL_CHARS_BACKREF: /(\\\\?)((\\W)(\\3*))/g,\n  REGEX_SPECIAL_CHARS_GLOBAL: /([-*+?.^${}(|)[\\]])/g,\n  REGEX_REMOVE_BACKSLASH: /(?:\\[.*?[^\\\\]\\]|\\\\(?=.))/g,\n\n  // Replace globs with equivalent patterns to reduce parsing time.\n  REPLACEMENTS: {\n    '***': '*',\n    '**/**': '**',\n    '**/**/**': '**'\n  },\n\n  // Digits\n  CHAR_0: 48, /* 0 */\n  CHAR_9: 57, /* 9 */\n\n  // Alphabet chars.\n  CHAR_UPPERCASE_A: 65, /* A */\n  CHAR_LOWERCASE_A: 97, /* a */\n  CHAR_UPPERCASE_Z: 90, /* Z */\n  CHAR_LOWERCASE_Z: 122, /* z */\n\n  CHAR_LEFT_PARENTHESES: 40, /* ( */\n  CHAR_RIGHT_PARENTHESES: 41, /* ) */\n\n  CHAR_ASTERISK: 42, /* * */\n\n  // Non-alphabetic chars.\n  CHAR_AMPERSAND: 38, /* & */\n  CHAR_AT: 64, /* @ */\n  CHAR_BACKWARD_SLASH: 92, /* \\ */\n  CHAR_CARRIAGE_RETURN: 13, /* \\r */\n  CHAR_CIRCUMFLEX_ACCENT: 94, /* ^ */\n  CHAR_COLON: 58, /* : */\n  CHAR_COMMA: 44, /* , */\n  CHAR_DOT: 46, /* . */\n  CHAR_DOUBLE_QUOTE: 34, /* \" */\n  CHAR_EQUAL: 61, /* = */\n  CHAR_EXCLAMATION_MARK: 33, /* ! */\n  CHAR_FORM_FEED: 12, /* \\f */\n  CHAR_FORWARD_SLASH: 47, /* / */\n  CHAR_GRAVE_ACCENT: 96, /* ` */\n  CHAR_HASH: 35, /* # */\n  CHAR_HYPHEN_MINUS: 45, /* - */\n  CHAR_LEFT_ANGLE_BRACKET: 60, /* < */\n  CHAR_LEFT_CURLY_BRACE: 123, /* { */\n  CHAR_LEFT_SQUARE_BRACKET: 91, /* [ */\n  CHAR_LINE_FEED: 10, /* \\n */\n  CHAR_NO_BREAK_SPACE: 160, /* \\u00A0 */\n  CHAR_PERCENT: 37, /* % */\n  CHAR_PLUS: 43, /* + */\n  CHAR_QUESTION_MARK: 63, /* ? */\n  CHAR_RIGHT_ANGLE_BRACKET: 62, /* > */\n  CHAR_RIGHT_CURLY_BRACE: 125, /* } */\n  CHAR_RIGHT_SQUARE_BRACKET: 93, /* ] */\n  CHAR_SEMICOLON: 59, /* ; */\n  CHAR_SINGLE_QUOTE: 39, /* ' */\n  CHAR_SPACE: 32, /*   */\n  CHAR_TAB: 9, /* \\t */\n  CHAR_UNDERSCORE: 95, /* _ */\n  CHAR_VERTICAL_LINE: 124, /* | */\n  CHAR_ZERO_WIDTH_NOBREAK_SPACE: 65279, /* \\uFEFF */\n\n  SEP: path.sep,\n\n  /**\n   * Create EXTGLOB_CHARS\n   */\n\n  extglobChars(chars) {\n    return {\n      '!': { type: 'negate', open: '(?:(?!(?:', close: `))${chars.STAR})` },\n      '?': { type: 'qmark', open: '(?:', close: ')?' },\n      '+': { type: 'plus', open: '(?:', close: ')+' },\n      '*': { type: 'star', open: '(?:', close: ')*' },\n      '@': { type: 'at', open: '(?:', close: ')' }\n    };\n  },\n\n  /**\n   * Create GLOB_CHARS\n   */\n\n  globChars(win32) {\n    return win32 === true ? WINDOWS_CHARS : POSIX_CHARS;\n  }\n};\n", "'use strict';\n\nconst path = require('path');\nconst win32 = process.platform === 'win32';\nconst {\n  REGEX_BACKSLASH,\n  REGEX_REMOVE_BACKSLASH,\n  REGEX_SPECIAL_CHARS,\n  REGEX_SPECIAL_CHARS_GLOBAL\n} = require('./constants');\n\nexports.isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val);\nexports.hasRegexChars = str => REGEX_SPECIAL_CHARS.test(str);\nexports.isRegexChar = str => str.length === 1 && exports.hasRegexChars(str);\nexports.escapeRegex = str => str.replace(REGEX_SPECIAL_CHARS_GLOBAL, '\\\\$1');\nexports.toPosixSlashes = str => str.replace(REGEX_BACKSLASH, '/');\n\nexports.removeBackslashes = str => {\n  return str.replace(REGEX_REMOVE_BACKSLASH, match => {\n    return match === '\\\\' ? '' : match;\n  });\n};\n\nexports.supportsLookbehinds = () => {\n  const segs = process.version.slice(1).split('.').map(Number);\n  if (segs.length === 3 && segs[0] >= 9 || (segs[0] === 8 && segs[1] >= 10)) {\n    return true;\n  }\n  return false;\n};\n\nexports.isWindows = options => {\n  if (options && typeof options.windows === 'boolean') {\n    return options.windows;\n  }\n  return win32 === true || path.sep === '\\\\';\n};\n\nexports.escapeLast = (input, char, lastIdx) => {\n  const idx = input.lastIndexOf(char, lastIdx);\n  if (idx === -1) return input;\n  if (input[idx - 1] === '\\\\') return exports.escapeLast(input, char, idx - 1);\n  return `${input.slice(0, idx)}\\\\${input.slice(idx)}`;\n};\n\nexports.removePrefix = (input, state = {}) => {\n  let output = input;\n  if (output.startsWith('./')) {\n    output = output.slice(2);\n    state.prefix = './';\n  }\n  return output;\n};\n\nexports.wrapOutput = (input, state = {}, options = {}) => {\n  const prepend = options.contains ? '' : '^';\n  const append = options.contains ? '' : '$';\n\n  let output = `${prepend}(?:${input})${append}`;\n  if (state.negated === true) {\n    output = `(?:^(?!${output}).*$)`;\n  }\n  return output;\n};\n", "'use strict';\n\nconst utils = require('./utils');\nconst {\n  CHAR_ASTERISK,             /* * */\n  CHAR_AT,                   /* @ */\n  CHAR_BACKWARD_SLASH,       /* \\ */\n  CHAR_COMMA,                /* , */\n  CHAR_DOT,                  /* . */\n  CHAR_EXCLAMATION_MARK,     /* ! */\n  CHAR_FORWARD_SLASH,        /* / */\n  CHAR_LEFT_CURLY_BRACE,     /* { */\n  CHAR_LEFT_PARENTHESES,     /* ( */\n  CHAR_LEFT_SQUARE_BRACKET,  /* [ */\n  CHAR_PLUS,                 /* + */\n  CHAR_QUESTION_MARK,        /* ? */\n  CHAR_RIGHT_CURLY_BRACE,    /* } */\n  CHAR_RIGHT_PARENTHESES,    /* ) */\n  CHAR_RIGHT_SQUARE_BRACKET  /* ] */\n} = require('./constants');\n\nconst isPathSeparator = code => {\n  return code === CHAR_FORWARD_SLASH || code === CHAR_BACKWARD_SLASH;\n};\n\nconst depth = token => {\n  if (token.isPrefix !== true) {\n    token.depth = token.isGlobstar ? Infinity : 1;\n  }\n};\n\n/**\n * Quickly scans a glob pattern and returns an object with a handful of\n * useful properties, like `isGlob`, `path` (the leading non-glob, if it exists),\n * `glob` (the actual pattern), `negated` (true if the path starts with `!` but not\n * with `!(`) and `negatedExtglob` (true if the path starts with `!(`).\n *\n * ```js\n * const pm = require('picomatch');\n * console.log(pm.scan('foo/bar/*.js'));\n * { isGlob: true, input: 'foo/bar/*.js', base: 'foo/bar', glob: '*.js' }\n * ```\n * @param {String} `str`\n * @param {Object} `options`\n * @return {Object} Returns an object with tokens and regex source string.\n * @api public\n */\n\nconst scan = (input, options) => {\n  const opts = options || {};\n\n  const length = input.length - 1;\n  const scanToEnd = opts.parts === true || opts.scanToEnd === true;\n  const slashes = [];\n  const tokens = [];\n  const parts = [];\n\n  let str = input;\n  let index = -1;\n  let start = 0;\n  let lastIndex = 0;\n  let isBrace = false;\n  let isBracket = false;\n  let isGlob = false;\n  let isExtglob = false;\n  let isGlobstar = false;\n  let braceEscaped = false;\n  let backslashes = false;\n  let negated = false;\n  let negatedExtglob = false;\n  let finished = false;\n  let braces = 0;\n  let prev;\n  let code;\n  let token = { value: '', depth: 0, isGlob: false };\n\n  const eos = () => index >= length;\n  const peek = () => str.charCodeAt(index + 1);\n  const advance = () => {\n    prev = code;\n    return str.charCodeAt(++index);\n  };\n\n  while (index < length) {\n    code = advance();\n    let next;\n\n    if (code === CHAR_BACKWARD_SLASH) {\n      backslashes = token.backslashes = true;\n      code = advance();\n\n      if (code === CHAR_LEFT_CURLY_BRACE) {\n        braceEscaped = true;\n      }\n      continue;\n    }\n\n    if (braceEscaped === true || code === CHAR_LEFT_CURLY_BRACE) {\n      braces++;\n\n      while (eos() !== true && (code = advance())) {\n        if (code === CHAR_BACKWARD_SLASH) {\n          backslashes = token.backslashes = true;\n          advance();\n          continue;\n        }\n\n        if (code === CHAR_LEFT_CURLY_BRACE) {\n          braces++;\n          continue;\n        }\n\n        if (braceEscaped !== true && code === CHAR_DOT && (code = advance()) === CHAR_DOT) {\n          isBrace = token.isBrace = true;\n          isGlob = token.isGlob = true;\n          finished = true;\n\n          if (scanToEnd === true) {\n            continue;\n          }\n\n          break;\n        }\n\n        if (braceEscaped !== true && code === CHAR_COMMA) {\n          isBrace = token.isBrace = true;\n          isGlob = token.isGlob = true;\n          finished = true;\n\n          if (scanToEnd === true) {\n            continue;\n          }\n\n          break;\n        }\n\n        if (code === CHAR_RIGHT_CURLY_BRACE) {\n          braces--;\n\n          if (braces === 0) {\n            braceEscaped = false;\n            isBrace = token.isBrace = true;\n            finished = true;\n            break;\n          }\n        }\n      }\n\n      if (scanToEnd === true) {\n        continue;\n      }\n\n      break;\n    }\n\n    if (code === CHAR_FORWARD_SLASH) {\n      slashes.push(index);\n      tokens.push(token);\n      token = { value: '', depth: 0, isGlob: false };\n\n      if (finished === true) continue;\n      if (prev === CHAR_DOT && index === (start + 1)) {\n        start += 2;\n        continue;\n      }\n\n      lastIndex = index + 1;\n      continue;\n    }\n\n    if (opts.noext !== true) {\n      const isExtglobChar = code === CHAR_PLUS\n        || code === CHAR_AT\n        || code === CHAR_ASTERISK\n        || code === CHAR_QUESTION_MARK\n        || code === CHAR_EXCLAMATION_MARK;\n\n      if (isExtglobChar === true && peek() === CHAR_LEFT_PARENTHESES) {\n        isGlob = token.isGlob = true;\n        isExtglob = token.isExtglob = true;\n        finished = true;\n        if (code === CHAR_EXCLAMATION_MARK && index === start) {\n          negatedExtglob = true;\n        }\n\n        if (scanToEnd === true) {\n          while (eos() !== true && (code = advance())) {\n            if (code === CHAR_BACKWARD_SLASH) {\n              backslashes = token.backslashes = true;\n              code = advance();\n              continue;\n            }\n\n            if (code === CHAR_RIGHT_PARENTHESES) {\n              isGlob = token.isGlob = true;\n              finished = true;\n              break;\n            }\n          }\n          continue;\n        }\n        break;\n      }\n    }\n\n    if (code === CHAR_ASTERISK) {\n      if (prev === CHAR_ASTERISK) isGlobstar = token.isGlobstar = true;\n      isGlob = token.isGlob = true;\n      finished = true;\n\n      if (scanToEnd === true) {\n        continue;\n      }\n      break;\n    }\n\n    if (code === CHAR_QUESTION_MARK) {\n      isGlob = token.isGlob = true;\n      finished = true;\n\n      if (scanToEnd === true) {\n        continue;\n      }\n      break;\n    }\n\n    if (code === CHAR_LEFT_SQUARE_BRACKET) {\n      while (eos() !== true && (next = advance())) {\n        if (next === CHAR_BACKWARD_SLASH) {\n          backslashes = token.backslashes = true;\n          advance();\n          continue;\n        }\n\n        if (next === CHAR_RIGHT_SQUARE_BRACKET) {\n          isBracket = token.isBracket = true;\n          isGlob = token.isGlob = true;\n          finished = true;\n          break;\n        }\n      }\n\n      if (scanToEnd === true) {\n        continue;\n      }\n\n      break;\n    }\n\n    if (opts.nonegate !== true && code === CHAR_EXCLAMATION_MARK && index === start) {\n      negated = token.negated = true;\n      start++;\n      continue;\n    }\n\n    if (opts.noparen !== true && code === CHAR_LEFT_PARENTHESES) {\n      isGlob = token.isGlob = true;\n\n      if (scanToEnd === true) {\n        while (eos() !== true && (code = advance())) {\n          if (code === CHAR_LEFT_PARENTHESES) {\n            backslashes = token.backslashes = true;\n            code = advance();\n            continue;\n          }\n\n          if (code === CHAR_RIGHT_PARENTHESES) {\n            finished = true;\n            break;\n          }\n        }\n        continue;\n      }\n      break;\n    }\n\n    if (isGlob === true) {\n      finished = true;\n\n      if (scanToEnd === true) {\n        continue;\n      }\n\n      break;\n    }\n  }\n\n  if (opts.noext === true) {\n    isExtglob = false;\n    isGlob = false;\n  }\n\n  let base = str;\n  let prefix = '';\n  let glob = '';\n\n  if (start > 0) {\n    prefix = str.slice(0, start);\n    str = str.slice(start);\n    lastIndex -= start;\n  }\n\n  if (base && isGlob === true && lastIndex > 0) {\n    base = str.slice(0, lastIndex);\n    glob = str.slice(lastIndex);\n  } else if (isGlob === true) {\n    base = '';\n    glob = str;\n  } else {\n    base = str;\n  }\n\n  if (base && base !== '' && base !== '/' && base !== str) {\n    if (isPathSeparator(base.charCodeAt(base.length - 1))) {\n      base = base.slice(0, -1);\n    }\n  }\n\n  if (opts.unescape === true) {\n    if (glob) glob = utils.removeBackslashes(glob);\n\n    if (base && backslashes === true) {\n      base = utils.removeBackslashes(base);\n    }\n  }\n\n  const state = {\n    prefix,\n    input,\n    start,\n    base,\n    glob,\n    isBrace,\n    isBracket,\n    isGlob,\n    isExtglob,\n    isGlobstar,\n    negated,\n    negatedExtglob\n  };\n\n  if (opts.tokens === true) {\n    state.maxDepth = 0;\n    if (!isPathSeparator(code)) {\n      tokens.push(token);\n    }\n    state.tokens = tokens;\n  }\n\n  if (opts.parts === true || opts.tokens === true) {\n    let prevIndex;\n\n    for (let idx = 0; idx < slashes.length; idx++) {\n      const n = prevIndex ? prevIndex + 1 : start;\n      const i = slashes[idx];\n      const value = input.slice(n, i);\n      if (opts.tokens) {\n        if (idx === 0 && start !== 0) {\n          tokens[idx].isPrefix = true;\n          tokens[idx].value = prefix;\n        } else {\n          tokens[idx].value = value;\n        }\n        depth(tokens[idx]);\n        state.maxDepth += tokens[idx].depth;\n      }\n      if (idx !== 0 || value !== '') {\n        parts.push(value);\n      }\n      prevIndex = i;\n    }\n\n    if (prevIndex && prevIndex + 1 < input.length) {\n      const value = input.slice(prevIndex + 1);\n      parts.push(value);\n\n      if (opts.tokens) {\n        tokens[tokens.length - 1].value = value;\n        depth(tokens[tokens.length - 1]);\n        state.maxDepth += tokens[tokens.length - 1].depth;\n      }\n    }\n\n    state.slashes = slashes;\n    state.parts = parts;\n  }\n\n  return state;\n};\n\nmodule.exports = scan;\n", "'use strict';\n\nconst constants = require('./constants');\nconst utils = require('./utils');\n\n/**\n * Constants\n */\n\nconst {\n  MAX_LENGTH,\n  POSIX_REGEX_SOURCE,\n  REGEX_NON_SPECIAL_CHARS,\n  REGEX_SPECIAL_CHARS_BACKREF,\n  REPLACEMENTS\n} = constants;\n\n/**\n * Helpers\n */\n\nconst expandRange = (args, options) => {\n  if (typeof options.expandRange === 'function') {\n    return options.expandRange(...args, options);\n  }\n\n  args.sort();\n  const value = `[${args.join('-')}]`;\n\n  try {\n    /* eslint-disable-next-line no-new */\n    new RegExp(value);\n  } catch (ex) {\n    return args.map(v => utils.escapeRegex(v)).join('..');\n  }\n\n  return value;\n};\n\n/**\n * Create the message for a syntax error\n */\n\nconst syntaxError = (type, char) => {\n  return `Missing ${type}: \"${char}\" - use \"\\\\\\\\${char}\" to match literal characters`;\n};\n\n/**\n * Parse the given input string.\n * @param {String} input\n * @param {Object} options\n * @return {Object}\n */\n\nconst parse = (input, options) => {\n  if (typeof input !== 'string') {\n    throw new TypeError('Expected a string');\n  }\n\n  input = REPLACEMENTS[input] || input;\n\n  const opts = { ...options };\n  const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;\n\n  let len = input.length;\n  if (len > max) {\n    throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`);\n  }\n\n  const bos = { type: 'bos', value: '', output: opts.prepend || '' };\n  const tokens = [bos];\n\n  const capture = opts.capture ? '' : '?:';\n  const win32 = utils.isWindows(options);\n\n  // create constants based on platform, for windows or posix\n  const PLATFORM_CHARS = constants.globChars(win32);\n  const EXTGLOB_CHARS = constants.extglobChars(PLATFORM_CHARS);\n\n  const {\n    DOT_LITERAL,\n    PLUS_LITERAL,\n    SLASH_LITERAL,\n    ONE_CHAR,\n    DOTS_SLASH,\n    NO_DOT,\n    NO_DOT_SLASH,\n    NO_DOTS_SLASH,\n    QMARK,\n    QMARK_NO_DOT,\n    STAR,\n    START_ANCHOR\n  } = PLATFORM_CHARS;\n\n  const globstar = opts => {\n    return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`;\n  };\n\n  const nodot = opts.dot ? '' : NO_DOT;\n  const qmarkNoDot = opts.dot ? QMARK : QMARK_NO_DOT;\n  let star = opts.bash === true ? globstar(opts) : STAR;\n\n  if (opts.capture) {\n    star = `(${star})`;\n  }\n\n  // minimatch options support\n  if (typeof opts.noext === 'boolean') {\n    opts.noextglob = opts.noext;\n  }\n\n  const state = {\n    input,\n    index: -1,\n    start: 0,\n    dot: opts.dot === true,\n    consumed: '',\n    output: '',\n    prefix: '',\n    backtrack: false,\n    negated: false,\n    brackets: 0,\n    braces: 0,\n    parens: 0,\n    quotes: 0,\n    globstar: false,\n    tokens\n  };\n\n  input = utils.removePrefix(input, state);\n  len = input.length;\n\n  const extglobs = [];\n  const braces = [];\n  const stack = [];\n  let prev = bos;\n  let value;\n\n  /**\n   * Tokenizing helpers\n   */\n\n  const eos = () => state.index === len - 1;\n  const peek = state.peek = (n = 1) => input[state.index + n];\n  const advance = state.advance = () => input[++state.index] || '';\n  const remaining = () => input.slice(state.index + 1);\n  const consume = (value = '', num = 0) => {\n    state.consumed += value;\n    state.index += num;\n  };\n\n  const append = token => {\n    state.output += token.output != null ? token.output : token.value;\n    consume(token.value);\n  };\n\n  const negate = () => {\n    let count = 1;\n\n    while (peek() === '!' && (peek(2) !== '(' || peek(3) === '?')) {\n      advance();\n      state.start++;\n      count++;\n    }\n\n    if (count % 2 === 0) {\n      return false;\n    }\n\n    state.negated = true;\n    state.start++;\n    return true;\n  };\n\n  const increment = type => {\n    state[type]++;\n    stack.push(type);\n  };\n\n  const decrement = type => {\n    state[type]--;\n    stack.pop();\n  };\n\n  /**\n   * Push tokens onto the tokens array. This helper speeds up\n   * tokenizing by 1) helping us avoid backtracking as much as possible,\n   * and 2) helping us avoid creating extra tokens when consecutive\n   * characters are plain text. This improves performance and simplifies\n   * lookbehinds.\n   */\n\n  const push = tok => {\n    if (prev.type === 'globstar') {\n      const isBrace = state.braces > 0 && (tok.type === 'comma' || tok.type === 'brace');\n      const isExtglob = tok.extglob === true || (extglobs.length && (tok.type === 'pipe' || tok.type === 'paren'));\n\n      if (tok.type !== 'slash' && tok.type !== 'paren' && !isBrace && !isExtglob) {\n        state.output = state.output.slice(0, -prev.output.length);\n        prev.type = 'star';\n        prev.value = '*';\n        prev.output = star;\n        state.output += prev.output;\n      }\n    }\n\n    if (extglobs.length && tok.type !== 'paren') {\n      extglobs[extglobs.length - 1].inner += tok.value;\n    }\n\n    if (tok.value || tok.output) append(tok);\n    if (prev && prev.type === 'text' && tok.type === 'text') {\n      prev.value += tok.value;\n      prev.output = (prev.output || '') + tok.value;\n      return;\n    }\n\n    tok.prev = prev;\n    tokens.push(tok);\n    prev = tok;\n  };\n\n  const extglobOpen = (type, value) => {\n    const token = { ...EXTGLOB_CHARS[value], conditions: 1, inner: '' };\n\n    token.prev = prev;\n    token.parens = state.parens;\n    token.output = state.output;\n    const output = (opts.capture ? '(' : '') + token.open;\n\n    increment('parens');\n    push({ type, value, output: state.output ? '' : ONE_CHAR });\n    push({ type: 'paren', extglob: true, value: advance(), output });\n    extglobs.push(token);\n  };\n\n  const extglobClose = token => {\n    let output = token.close + (opts.capture ? ')' : '');\n    let rest;\n\n    if (token.type === 'negate') {\n      let extglobStar = star;\n\n      if (token.inner && token.inner.length > 1 && token.inner.includes('/')) {\n        extglobStar = globstar(opts);\n      }\n\n      if (extglobStar !== star || eos() || /^\\)+$/.test(remaining())) {\n        output = token.close = `)$))${extglobStar}`;\n      }\n\n      if (token.inner.includes('*') && (rest = remaining()) && /^\\.[^\\\\/.]+$/.test(rest)) {\n        // Any non-magical string (`.ts`) or even nested expression (`.{ts,tsx}`) can follow after the closing parenthesis.\n        // In this case, we need to parse the string and use it in the output of the original pattern.\n        // Suitable patterns: `/!(*.d).ts`, `/!(*.d).{ts,tsx}`, `**/!(*-dbg).@(js)`.\n        //\n        // Disabling the `fastpaths` option due to a problem with parsing strings as `.ts` in the pattern like `**/!(*.d).ts`.\n        const expression = parse(rest, { ...options, fastpaths: false }).output;\n\n        output = token.close = `)${expression})${extglobStar})`;\n      }\n\n      if (token.prev.type === 'bos') {\n        state.negatedExtglob = true;\n      }\n    }\n\n    push({ type: 'paren', extglob: true, value, output });\n    decrement('parens');\n  };\n\n  /**\n   * Fast paths\n   */\n\n  if (opts.fastpaths !== false && !/(^[*!]|[/()[\\]{}\"])/.test(input)) {\n    let backslashes = false;\n\n    let output = input.replace(REGEX_SPECIAL_CHARS_BACKREF, (m, esc, chars, first, rest, index) => {\n      if (first === '\\\\') {\n        backslashes = true;\n        return m;\n      }\n\n      if (first === '?') {\n        if (esc) {\n          return esc + first + (rest ? QMARK.repeat(rest.length) : '');\n        }\n        if (index === 0) {\n          return qmarkNoDot + (rest ? QMARK.repeat(rest.length) : '');\n        }\n        return QMARK.repeat(chars.length);\n      }\n\n      if (first === '.') {\n        return DOT_LITERAL.repeat(chars.length);\n      }\n\n      if (first === '*') {\n        if (esc) {\n          return esc + first + (rest ? star : '');\n        }\n        return star;\n      }\n      return esc ? m : `\\\\${m}`;\n    });\n\n    if (backslashes === true) {\n      if (opts.unescape === true) {\n        output = output.replace(/\\\\/g, '');\n      } else {\n        output = output.replace(/\\\\+/g, m => {\n          return m.length % 2 === 0 ? '\\\\\\\\' : (m ? '\\\\' : '');\n        });\n      }\n    }\n\n    if (output === input && opts.contains === true) {\n      state.output = input;\n      return state;\n    }\n\n    state.output = utils.wrapOutput(output, state, options);\n    return state;\n  }\n\n  /**\n   * Tokenize input until we reach end-of-string\n   */\n\n  while (!eos()) {\n    value = advance();\n\n    if (value === '\\u0000') {\n      continue;\n    }\n\n    /**\n     * Escaped characters\n     */\n\n    if (value === '\\\\') {\n      const next = peek();\n\n      if (next === '/' && opts.bash !== true) {\n        continue;\n      }\n\n      if (next === '.' || next === ';') {\n        continue;\n      }\n\n      if (!next) {\n        value += '\\\\';\n        push({ type: 'text', value });\n        continue;\n      }\n\n      // collapse slashes to reduce potential for exploits\n      const match = /^\\\\+/.exec(remaining());\n      let slashes = 0;\n\n      if (match && match[0].length > 2) {\n        slashes = match[0].length;\n        state.index += slashes;\n        if (slashes % 2 !== 0) {\n          value += '\\\\';\n        }\n      }\n\n      if (opts.unescape === true) {\n        value = advance();\n      } else {\n        value += advance();\n      }\n\n      if (state.brackets === 0) {\n        push({ type: 'text', value });\n        continue;\n      }\n    }\n\n    /**\n     * If we're inside a regex character class, continue\n     * until we reach the closing bracket.\n     */\n\n    if (state.brackets > 0 && (value !== ']' || prev.value === '[' || prev.value === '[^')) {\n      if (opts.posix !== false && value === ':') {\n        const inner = prev.value.slice(1);\n        if (inner.includes('[')) {\n          prev.posix = true;\n\n          if (inner.includes(':')) {\n            const idx = prev.value.lastIndexOf('[');\n            const pre = prev.value.slice(0, idx);\n            const rest = prev.value.slice(idx + 2);\n            const posix = POSIX_REGEX_SOURCE[rest];\n            if (posix) {\n              prev.value = pre + posix;\n              state.backtrack = true;\n              advance();\n\n              if (!bos.output && tokens.indexOf(prev) === 1) {\n                bos.output = ONE_CHAR;\n              }\n              continue;\n            }\n          }\n        }\n      }\n\n      if ((value === '[' && peek() !== ':') || (value === '-' && peek() === ']')) {\n        value = `\\\\${value}`;\n      }\n\n      if (value === ']' && (prev.value === '[' || prev.value === '[^')) {\n        value = `\\\\${value}`;\n      }\n\n      if (opts.posix === true && value === '!' && prev.value === '[') {\n        value = '^';\n      }\n\n      prev.value += value;\n      append({ value });\n      continue;\n    }\n\n    /**\n     * If we're inside a quoted string, continue\n     * until we reach the closing double quote.\n     */\n\n    if (state.quotes === 1 && value !== '\"') {\n      value = utils.escapeRegex(value);\n      prev.value += value;\n      append({ value });\n      continue;\n    }\n\n    /**\n     * Double quotes\n     */\n\n    if (value === '\"') {\n      state.quotes = state.quotes === 1 ? 0 : 1;\n      if (opts.keepQuotes === true) {\n        push({ type: 'text', value });\n      }\n      continue;\n    }\n\n    /**\n     * Parentheses\n     */\n\n    if (value === '(') {\n      increment('parens');\n      push({ type: 'paren', value });\n      continue;\n    }\n\n    if (value === ')') {\n      if (state.parens === 0 && opts.strictBrackets === true) {\n        throw new SyntaxError(syntaxError('opening', '('));\n      }\n\n      const extglob = extglobs[extglobs.length - 1];\n      if (extglob && state.parens === extglob.parens + 1) {\n        extglobClose(extglobs.pop());\n        continue;\n      }\n\n      push({ type: 'paren', value, output: state.parens ? ')' : '\\\\)' });\n      decrement('parens');\n      continue;\n    }\n\n    /**\n     * Square brackets\n     */\n\n    if (value === '[') {\n      if (opts.nobracket === true || !remaining().includes(']')) {\n        if (opts.nobracket !== true && opts.strictBrackets === true) {\n          throw new SyntaxError(syntaxError('closing', ']'));\n        }\n\n        value = `\\\\${value}`;\n      } else {\n        increment('brackets');\n      }\n\n      push({ type: 'bracket', value });\n      continue;\n    }\n\n    if (value === ']') {\n      if (opts.nobracket === true || (prev && prev.type === 'bracket' && prev.value.length === 1)) {\n        push({ type: 'text', value, output: `\\\\${value}` });\n        continue;\n      }\n\n      if (state.brackets === 0) {\n        if (opts.strictBrackets === true) {\n          throw new SyntaxError(syntaxError('opening', '['));\n        }\n\n        push({ type: 'text', value, output: `\\\\${value}` });\n        continue;\n      }\n\n      decrement('brackets');\n\n      const prevValue = prev.value.slice(1);\n      if (prev.posix !== true && prevValue[0] === '^' && !prevValue.includes('/')) {\n        value = `/${value}`;\n      }\n\n      prev.value += value;\n      append({ value });\n\n      // when literal brackets are explicitly disabled\n      // assume we should match with a regex character class\n      if (opts.literalBrackets === false || utils.hasRegexChars(prevValue)) {\n        continue;\n      }\n\n      const escaped = utils.escapeRegex(prev.value);\n      state.output = state.output.slice(0, -prev.value.length);\n\n      // when literal brackets are explicitly enabled\n      // assume we should escape the brackets to match literal characters\n      if (opts.literalBrackets === true) {\n        state.output += escaped;\n        prev.value = escaped;\n        continue;\n      }\n\n      // when the user specifies nothing, try to match both\n      prev.value = `(${capture}${escaped}|${prev.value})`;\n      state.output += prev.value;\n      continue;\n    }\n\n    /**\n     * Braces\n     */\n\n    if (value === '{' && opts.nobrace !== true) {\n      increment('braces');\n\n      const open = {\n        type: 'brace',\n        value,\n        output: '(',\n        outputIndex: state.output.length,\n        tokensIndex: state.tokens.length\n      };\n\n      braces.push(open);\n      push(open);\n      continue;\n    }\n\n    if (value === '}') {\n      const brace = braces[braces.length - 1];\n\n      if (opts.nobrace === true || !brace) {\n        push({ type: 'text', value, output: value });\n        continue;\n      }\n\n      let output = ')';\n\n      if (brace.dots === true) {\n        const arr = tokens.slice();\n        const range = [];\n\n        for (let i = arr.length - 1; i >= 0; i--) {\n          tokens.pop();\n          if (arr[i].type === 'brace') {\n            break;\n          }\n          if (arr[i].type !== 'dots') {\n            range.unshift(arr[i].value);\n          }\n        }\n\n        output = expandRange(range, opts);\n        state.backtrack = true;\n      }\n\n      if (brace.comma !== true && brace.dots !== true) {\n        const out = state.output.slice(0, brace.outputIndex);\n        const toks = state.tokens.slice(brace.tokensIndex);\n        brace.value = brace.output = '\\\\{';\n        value = output = '\\\\}';\n        state.output = out;\n        for (const t of toks) {\n          state.output += (t.output || t.value);\n        }\n      }\n\n      push({ type: 'brace', value, output });\n      decrement('braces');\n      braces.pop();\n      continue;\n    }\n\n    /**\n     * Pipes\n     */\n\n    if (value === '|') {\n      if (extglobs.length > 0) {\n        extglobs[extglobs.length - 1].conditions++;\n      }\n      push({ type: 'text', value });\n      continue;\n    }\n\n    /**\n     * Commas\n     */\n\n    if (value === ',') {\n      let output = value;\n\n      const brace = braces[braces.length - 1];\n      if (brace && stack[stack.length - 1] === 'braces') {\n        brace.comma = true;\n        output = '|';\n      }\n\n      push({ type: 'comma', value, output });\n      continue;\n    }\n\n    /**\n     * Slashes\n     */\n\n    if (value === '/') {\n      // if the beginning of the glob is \"./\", advance the start\n      // to the current index, and don't add the \"./\" characters\n      // to the state. This greatly simplifies lookbehinds when\n      // checking for BOS characters like \"!\" and \".\" (not \"./\")\n      if (prev.type === 'dot' && state.index === state.start + 1) {\n        state.start = state.index + 1;\n        state.consumed = '';\n        state.output = '';\n        tokens.pop();\n        prev = bos; // reset \"prev\" to the first token\n        continue;\n      }\n\n      push({ type: 'slash', value, output: SLASH_LITERAL });\n      continue;\n    }\n\n    /**\n     * Dots\n     */\n\n    if (value === '.') {\n      if (state.braces > 0 && prev.type === 'dot') {\n        if (prev.value === '.') prev.output = DOT_LITERAL;\n        const brace = braces[braces.length - 1];\n        prev.type = 'dots';\n        prev.output += value;\n        prev.value += value;\n        brace.dots = true;\n        continue;\n      }\n\n      if ((state.braces + state.parens) === 0 && prev.type !== 'bos' && prev.type !== 'slash') {\n        push({ type: 'text', value, output: DOT_LITERAL });\n        continue;\n      }\n\n      push({ type: 'dot', value, output: DOT_LITERAL });\n      continue;\n    }\n\n    /**\n     * Question marks\n     */\n\n    if (value === '?') {\n      const isGroup = prev && prev.value === '(';\n      if (!isGroup && opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {\n        extglobOpen('qmark', value);\n        continue;\n      }\n\n      if (prev && prev.type === 'paren') {\n        const next = peek();\n        let output = value;\n\n        if (next === '<' && !utils.supportsLookbehinds()) {\n          throw new Error('Node.js v10 or higher is required for regex lookbehinds');\n        }\n\n        if ((prev.value === '(' && !/[!=<:]/.test(next)) || (next === '<' && !/<([!=]|\\w+>)/.test(remaining()))) {\n          output = `\\\\${value}`;\n        }\n\n        push({ type: 'text', value, output });\n        continue;\n      }\n\n      if (opts.dot !== true && (prev.type === 'slash' || prev.type === 'bos')) {\n        push({ type: 'qmark', value, output: QMARK_NO_DOT });\n        continue;\n      }\n\n      push({ type: 'qmark', value, output: QMARK });\n      continue;\n    }\n\n    /**\n     * Exclamation\n     */\n\n    if (value === '!') {\n      if (opts.noextglob !== true && peek() === '(') {\n        if (peek(2) !== '?' || !/[!=<:]/.test(peek(3))) {\n          extglobOpen('negate', value);\n          continue;\n        }\n      }\n\n      if (opts.nonegate !== true && state.index === 0) {\n        negate();\n        continue;\n      }\n    }\n\n    /**\n     * Plus\n     */\n\n    if (value === '+') {\n      if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {\n        extglobOpen('plus', value);\n        continue;\n      }\n\n      if ((prev && prev.value === '(') || opts.regex === false) {\n        push({ type: 'plus', value, output: PLUS_LITERAL });\n        continue;\n      }\n\n      if ((prev && (prev.type === 'bracket' || prev.type === 'paren' || prev.type === 'brace')) || state.parens > 0) {\n        push({ type: 'plus', value });\n        continue;\n      }\n\n      push({ type: 'plus', value: PLUS_LITERAL });\n      continue;\n    }\n\n    /**\n     * Plain text\n     */\n\n    if (value === '@') {\n      if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {\n        push({ type: 'at', extglob: true, value, output: '' });\n        continue;\n      }\n\n      push({ type: 'text', value });\n      continue;\n    }\n\n    /**\n     * Plain text\n     */\n\n    if (value !== '*') {\n      if (value === '$' || value === '^') {\n        value = `\\\\${value}`;\n      }\n\n      const match = REGEX_NON_SPECIAL_CHARS.exec(remaining());\n      if (match) {\n        value += match[0];\n        state.index += match[0].length;\n      }\n\n      push({ type: 'text', value });\n      continue;\n    }\n\n    /**\n     * Stars\n     */\n\n    if (prev && (prev.type === 'globstar' || prev.star === true)) {\n      prev.type = 'star';\n      prev.star = true;\n      prev.value += value;\n      prev.output = star;\n      state.backtrack = true;\n      state.globstar = true;\n      consume(value);\n      continue;\n    }\n\n    let rest = remaining();\n    if (opts.noextglob !== true && /^\\([^?]/.test(rest)) {\n      extglobOpen('star', value);\n      continue;\n    }\n\n    if (prev.type === 'star') {\n      if (opts.noglobstar === true) {\n        consume(value);\n        continue;\n      }\n\n      const prior = prev.prev;\n      const before = prior.prev;\n      const isStart = prior.type === 'slash' || prior.type === 'bos';\n      const afterStar = before && (before.type === 'star' || before.type === 'globstar');\n\n      if (opts.bash === true && (!isStart || (rest[0] && rest[0] !== '/'))) {\n        push({ type: 'star', value, output: '' });\n        continue;\n      }\n\n      const isBrace = state.braces > 0 && (prior.type === 'comma' || prior.type === 'brace');\n      const isExtglob = extglobs.length && (prior.type === 'pipe' || prior.type === 'paren');\n      if (!isStart && prior.type !== 'paren' && !isBrace && !isExtglob) {\n        push({ type: 'star', value, output: '' });\n        continue;\n      }\n\n      // strip consecutive `/**/`\n      while (rest.slice(0, 3) === '/**') {\n        const after = input[state.index + 4];\n        if (after && after !== '/') {\n          break;\n        }\n        rest = rest.slice(3);\n        consume('/**', 3);\n      }\n\n      if (prior.type === 'bos' && eos()) {\n        prev.type = 'globstar';\n        prev.value += value;\n        prev.output = globstar(opts);\n        state.output = prev.output;\n        state.globstar = true;\n        consume(value);\n        continue;\n      }\n\n      if (prior.type === 'slash' && prior.prev.type !== 'bos' && !afterStar && eos()) {\n        state.output = state.output.slice(0, -(prior.output + prev.output).length);\n        prior.output = `(?:${prior.output}`;\n\n        prev.type = 'globstar';\n        prev.output = globstar(opts) + (opts.strictSlashes ? ')' : '|$)');\n        prev.value += value;\n        state.globstar = true;\n        state.output += prior.output + prev.output;\n        consume(value);\n        continue;\n      }\n\n      if (prior.type === 'slash' && prior.prev.type !== 'bos' && rest[0] === '/') {\n        const end = rest[1] !== void 0 ? '|$' : '';\n\n        state.output = state.output.slice(0, -(prior.output + prev.output).length);\n        prior.output = `(?:${prior.output}`;\n\n        prev.type = 'globstar';\n        prev.output = `${globstar(opts)}${SLASH_LITERAL}|${SLASH_LITERAL}${end})`;\n        prev.value += value;\n\n        state.output += prior.output + prev.output;\n        state.globstar = true;\n\n        consume(value + advance());\n\n        push({ type: 'slash', value: '/', output: '' });\n        continue;\n      }\n\n      if (prior.type === 'bos' && rest[0] === '/') {\n        prev.type = 'globstar';\n        prev.value += value;\n        prev.output = `(?:^|${SLASH_LITERAL}|${globstar(opts)}${SLASH_LITERAL})`;\n        state.output = prev.output;\n        state.globstar = true;\n        consume(value + advance());\n        push({ type: 'slash', value: '/', output: '' });\n        continue;\n      }\n\n      // remove single star from output\n      state.output = state.output.slice(0, -prev.output.length);\n\n      // reset previous token to globstar\n      prev.type = 'globstar';\n      prev.output = globstar(opts);\n      prev.value += value;\n\n      // reset output with globstar\n      state.output += prev.output;\n      state.globstar = true;\n      consume(value);\n      continue;\n    }\n\n    const token = { type: 'star', value, output: star };\n\n    if (opts.bash === true) {\n      token.output = '.*?';\n      if (prev.type === 'bos' || prev.type === 'slash') {\n        token.output = nodot + token.output;\n      }\n      push(token);\n      continue;\n    }\n\n    if (prev && (prev.type === 'bracket' || prev.type === 'paren') && opts.regex === true) {\n      token.output = value;\n      push(token);\n      continue;\n    }\n\n    if (state.index === state.start || prev.type === 'slash' || prev.type === 'dot') {\n      if (prev.type === 'dot') {\n        state.output += NO_DOT_SLASH;\n        prev.output += NO_DOT_SLASH;\n\n      } else if (opts.dot === true) {\n        state.output += NO_DOTS_SLASH;\n        prev.output += NO_DOTS_SLASH;\n\n      } else {\n        state.output += nodot;\n        prev.output += nodot;\n      }\n\n      if (peek() !== '*') {\n        state.output += ONE_CHAR;\n        prev.output += ONE_CHAR;\n      }\n    }\n\n    push(token);\n  }\n\n  while (state.brackets > 0) {\n    if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ']'));\n    state.output = utils.escapeLast(state.output, '[');\n    decrement('brackets');\n  }\n\n  while (state.parens > 0) {\n    if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ')'));\n    state.output = utils.escapeLast(state.output, '(');\n    decrement('parens');\n  }\n\n  while (state.braces > 0) {\n    if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', '}'));\n    state.output = utils.escapeLast(state.output, '{');\n    decrement('braces');\n  }\n\n  if (opts.strictSlashes !== true && (prev.type === 'star' || prev.type === 'bracket')) {\n    push({ type: 'maybe_slash', value: '', output: `${SLASH_LITERAL}?` });\n  }\n\n  // rebuild the output if we had to backtrack at any point\n  if (state.backtrack === true) {\n    state.output = '';\n\n    for (const token of state.tokens) {\n      state.output += token.output != null ? token.output : token.value;\n\n      if (token.suffix) {\n        state.output += token.suffix;\n      }\n    }\n  }\n\n  return state;\n};\n\n/**\n * Fast paths for creating regular expressions for common glob patterns.\n * This can significantly speed up processing and has very little downside\n * impact when none of the fast paths match.\n */\n\nparse.fastpaths = (input, options) => {\n  const opts = { ...options };\n  const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;\n  const len = input.length;\n  if (len > max) {\n    throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`);\n  }\n\n  input = REPLACEMENTS[input] || input;\n  const win32 = utils.isWindows(options);\n\n  // create constants based on platform, for windows or posix\n  const {\n    DOT_LITERAL,\n    SLASH_LITERAL,\n    ONE_CHAR,\n    DOTS_SLASH,\n    NO_DOT,\n    NO_DOTS,\n    NO_DOTS_SLASH,\n    STAR,\n    START_ANCHOR\n  } = constants.globChars(win32);\n\n  const nodot = opts.dot ? NO_DOTS : NO_DOT;\n  const slashDot = opts.dot ? NO_DOTS_SLASH : NO_DOT;\n  const capture = opts.capture ? '' : '?:';\n  const state = { negated: false, prefix: '' };\n  let star = opts.bash === true ? '.*?' : STAR;\n\n  if (opts.capture) {\n    star = `(${star})`;\n  }\n\n  const globstar = opts => {\n    if (opts.noglobstar === true) return star;\n    return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`;\n  };\n\n  const create = str => {\n    switch (str) {\n      case '*':\n        return `${nodot}${ONE_CHAR}${star}`;\n\n      case '.*':\n        return `${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n      case '*.*':\n        return `${nodot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n      case '*/*':\n        return `${nodot}${star}${SLASH_LITERAL}${ONE_CHAR}${slashDot}${star}`;\n\n      case '**':\n        return nodot + globstar(opts);\n\n      case '**/*':\n        return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${ONE_CHAR}${star}`;\n\n      case '**/*.*':\n        return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n      case '**/.*':\n        return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n      default: {\n        const match = /^(.*?)\\.(\\w+)$/.exec(str);\n        if (!match) return;\n\n        const source = create(match[1]);\n        if (!source) return;\n\n        return source + DOT_LITERAL + match[2];\n      }\n    }\n  };\n\n  const output = utils.removePrefix(input, state);\n  let source = create(output);\n\n  if (source && opts.strictSlashes !== true) {\n    source += `${SLASH_LITERAL}?`;\n  }\n\n  return source;\n};\n\nmodule.exports = parse;\n", "'use strict';\n\nconst path = require('path');\nconst scan = require('./scan');\nconst parse = require('./parse');\nconst utils = require('./utils');\nconst constants = require('./constants');\nconst isObject = val => val && typeof val === 'object' && !Array.isArray(val);\n\n/**\n * Creates a matcher function from one or more glob patterns. The\n * returned function takes a string to match as its first argument,\n * and returns true if the string is a match. The returned matcher\n * function also takes a boolean as the second argument that, when true,\n * returns an object with additional information.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch(glob[, options]);\n *\n * const isMatch = picomatch('*.!(*a)');\n * console.log(isMatch('a.a')); //=> false\n * console.log(isMatch('a.b')); //=> true\n * ```\n * @name picomatch\n * @param {String|Array} `globs` One or more glob patterns.\n * @param {Object=} `options`\n * @return {Function=} Returns a matcher function.\n * @api public\n */\n\nconst picomatch = (glob, options, returnState = false) => {\n  if (Array.isArray(glob)) {\n    const fns = glob.map(input => picomatch(input, options, returnState));\n    const arrayMatcher = str => {\n      for (const isMatch of fns) {\n        const state = isMatch(str);\n        if (state) return state;\n      }\n      return false;\n    };\n    return arrayMatcher;\n  }\n\n  const isState = isObject(glob) && glob.tokens && glob.input;\n\n  if (glob === '' || (typeof glob !== 'string' && !isState)) {\n    throw new TypeError('Expected pattern to be a non-empty string');\n  }\n\n  const opts = options || {};\n  const posix = utils.isWindows(options);\n  const regex = isState\n    ? picomatch.compileRe(glob, options)\n    : picomatch.makeRe(glob, options, false, true);\n\n  const state = regex.state;\n  delete regex.state;\n\n  let isIgnored = () => false;\n  if (opts.ignore) {\n    const ignoreOpts = { ...options, ignore: null, onMatch: null, onResult: null };\n    isIgnored = picomatch(opts.ignore, ignoreOpts, returnState);\n  }\n\n  const matcher = (input, returnObject = false) => {\n    const { isMatch, match, output } = picomatch.test(input, regex, options, { glob, posix });\n    const result = { glob, state, regex, posix, input, output, match, isMatch };\n\n    if (typeof opts.onResult === 'function') {\n      opts.onResult(result);\n    }\n\n    if (isMatch === false) {\n      result.isMatch = false;\n      return returnObject ? result : false;\n    }\n\n    if (isIgnored(input)) {\n      if (typeof opts.onIgnore === 'function') {\n        opts.onIgnore(result);\n      }\n      result.isMatch = false;\n      return returnObject ? result : false;\n    }\n\n    if (typeof opts.onMatch === 'function') {\n      opts.onMatch(result);\n    }\n    return returnObject ? result : true;\n  };\n\n  if (returnState) {\n    matcher.state = state;\n  }\n\n  return matcher;\n};\n\n/**\n * Test `input` with the given `regex`. This is used by the main\n * `picomatch()` function to test the input string.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.test(input, regex[, options]);\n *\n * console.log(picomatch.test('foo/bar', /^(?:([^/]*?)\\/([^/]*?))$/));\n * // { isMatch: true, match: [ 'foo/', 'foo', 'bar' ], output: 'foo/bar' }\n * ```\n * @param {String} `input` String to test.\n * @param {RegExp} `regex`\n * @return {Object} Returns an object with matching info.\n * @api public\n */\n\npicomatch.test = (input, regex, options, { glob, posix } = {}) => {\n  if (typeof input !== 'string') {\n    throw new TypeError('Expected input to be a string');\n  }\n\n  if (input === '') {\n    return { isMatch: false, output: '' };\n  }\n\n  const opts = options || {};\n  const format = opts.format || (posix ? utils.toPosixSlashes : null);\n  let match = input === glob;\n  let output = (match && format) ? format(input) : input;\n\n  if (match === false) {\n    output = format ? format(input) : input;\n    match = output === glob;\n  }\n\n  if (match === false || opts.capture === true) {\n    if (opts.matchBase === true || opts.basename === true) {\n      match = picomatch.matchBase(input, regex, options, posix);\n    } else {\n      match = regex.exec(output);\n    }\n  }\n\n  return { isMatch: Boolean(match), match, output };\n};\n\n/**\n * Match the basename of a filepath.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.matchBase(input, glob[, options]);\n * console.log(picomatch.matchBase('foo/bar.js', '*.js'); // true\n * ```\n * @param {String} `input` String to test.\n * @param {RegExp|String} `glob` Glob pattern or regex created by [.makeRe](#makeRe).\n * @return {Boolean}\n * @api public\n */\n\npicomatch.matchBase = (input, glob, options, posix = utils.isWindows(options)) => {\n  const regex = glob instanceof RegExp ? glob : picomatch.makeRe(glob, options);\n  return regex.test(path.basename(input));\n};\n\n/**\n * Returns true if **any** of the given glob `patterns` match the specified `string`.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.isMatch(string, patterns[, options]);\n *\n * console.log(picomatch.isMatch('a.a', ['b.*', '*.a'])); //=> true\n * console.log(picomatch.isMatch('a.a', 'b.*')); //=> false\n * ```\n * @param {String|Array} str The string to test.\n * @param {String|Array} patterns One or more glob patterns to use for matching.\n * @param {Object} [options] See available [options](#options).\n * @return {Boolean} Returns true if any patterns match `str`\n * @api public\n */\n\npicomatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str);\n\n/**\n * Parse a glob pattern to create the source string for a regular\n * expression.\n *\n * ```js\n * const picomatch = require('picomatch');\n * const result = picomatch.parse(pattern[, options]);\n * ```\n * @param {String} `pattern`\n * @param {Object} `options`\n * @return {Object} Returns an object with useful properties and output to be used as a regex source string.\n * @api public\n */\n\npicomatch.parse = (pattern, options) => {\n  if (Array.isArray(pattern)) return pattern.map(p => picomatch.parse(p, options));\n  return parse(pattern, { ...options, fastpaths: false });\n};\n\n/**\n * Scan a glob pattern to separate the pattern into segments.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.scan(input[, options]);\n *\n * const result = picomatch.scan('!./foo/*.js');\n * console.log(result);\n * { prefix: '!./',\n *   input: '!./foo/*.js',\n *   start: 3,\n *   base: 'foo',\n *   glob: '*.js',\n *   isBrace: false,\n *   isBracket: false,\n *   isGlob: true,\n *   isExtglob: false,\n *   isGlobstar: false,\n *   negated: true }\n * ```\n * @param {String} `input` Glob pattern to scan.\n * @param {Object} `options`\n * @return {Object} Returns an object with\n * @api public\n */\n\npicomatch.scan = (input, options) => scan(input, options);\n\n/**\n * Compile a regular expression from the `state` object returned by the\n * [parse()](#parse) method.\n *\n * @param {Object} `state`\n * @param {Object} `options`\n * @param {Boolean} `returnOutput` Intended for implementors, this argument allows you to return the raw output from the parser.\n * @param {Boolean} `returnState` Adds the state to a `state` property on the returned regex. Useful for implementors and debugging.\n * @return {RegExp}\n * @api public\n */\n\npicomatch.compileRe = (state, options, returnOutput = false, returnState = false) => {\n  if (returnOutput === true) {\n    return state.output;\n  }\n\n  const opts = options || {};\n  const prepend = opts.contains ? '' : '^';\n  const append = opts.contains ? '' : '$';\n\n  let source = `${prepend}(?:${state.output})${append}`;\n  if (state && state.negated === true) {\n    source = `^(?!${source}).*$`;\n  }\n\n  const regex = picomatch.toRegex(source, options);\n  if (returnState === true) {\n    regex.state = state;\n  }\n\n  return regex;\n};\n\n/**\n * Create a regular expression from a parsed glob pattern.\n *\n * ```js\n * const picomatch = require('picomatch');\n * const state = picomatch.parse('*.js');\n * // picomatch.compileRe(state[, options]);\n *\n * console.log(picomatch.compileRe(state));\n * //=> /^(?:(?!\\.)(?=.)[^/]*?\\.js)$/\n * ```\n * @param {String} `state` The object returned from the `.parse` method.\n * @param {Object} `options`\n * @param {Boolean} `returnOutput` Implementors may use this argument to return the compiled output, instead of a regular expression. This is not exposed on the options to prevent end-users from mutating the result.\n * @param {Boolean} `returnState` Implementors may use this argument to return the state from the parsed glob with the returned regular expression.\n * @return {RegExp} Returns a regex created from the given pattern.\n * @api public\n */\n\npicomatch.makeRe = (input, options = {}, returnOutput = false, returnState = false) => {\n  if (!input || typeof input !== 'string') {\n    throw new TypeError('Expected a non-empty string');\n  }\n\n  let parsed = { negated: false, fastpaths: true };\n\n  if (options.fastpaths !== false && (input[0] === '.' || input[0] === '*')) {\n    parsed.output = parse.fastpaths(input, options);\n  }\n\n  if (!parsed.output) {\n    parsed = parse(input, options);\n  }\n\n  return picomatch.compileRe(parsed, options, returnOutput, returnState);\n};\n\n/**\n * Create a regular expression from the given regex source string.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.toRegex(source[, options]);\n *\n * const { output } = picomatch.parse('*.js');\n * console.log(picomatch.toRegex(output));\n * //=> /^(?:(?!\\.)(?=.)[^/]*?\\.js)$/\n * ```\n * @param {String} `source` Regular expression source string.\n * @param {Object} `options`\n * @return {RegExp}\n * @api public\n */\n\npicomatch.toRegex = (source, options) => {\n  try {\n    const opts = options || {};\n    return new RegExp(source, opts.flags || (opts.nocase ? 'i' : ''));\n  } catch (err) {\n    if (options && options.debug === true) throw err;\n    return /$^/;\n  }\n};\n\n/**\n * Picomatch constants.\n * @return {Object}\n */\n\npicomatch.constants = constants;\n\n/**\n * Expose \"picomatch\"\n */\n\nmodule.exports = picomatch;\n", "'use strict';\n\nmodule.exports = require('./lib/picomatch');\n", "'use strict';\n\nconst fs = require('fs');\nconst { Readable } = require('stream');\nconst sysPath = require('path');\nconst { promisify } = require('util');\nconst picomatch = require('picomatch');\n\nconst readdir = promisify(fs.readdir);\nconst stat = promisify(fs.stat);\nconst lstat = promisify(fs.lstat);\nconst realpath = promisify(fs.realpath);\n\n/**\n * @typedef {Object} EntryInfo\n * @property {String} path\n * @property {String} fullPath\n * @property {fs.Stats=} stats\n * @property {fs.Dirent=} dirent\n * @property {String} basename\n */\n\nconst BANG = '!';\nconst RECURSIVE_ERROR_CODE = 'READDIRP_RECURSIVE_ERROR';\nconst NORMAL_FLOW_ERRORS = new Set(['ENOENT', 'EPERM', 'EACCES', 'ELOOP', RECURSIVE_ERROR_CODE]);\nconst FILE_TYPE = 'files';\nconst DIR_TYPE = 'directories';\nconst FILE_DIR_TYPE = 'files_directories';\nconst EVERYTHING_TYPE = 'all';\nconst ALL_TYPES = [FILE_TYPE, DIR_TYPE, FILE_DIR_TYPE, EVERYTHING_TYPE];\n\nconst isNormalFlowError = error => NORMAL_FLOW_ERRORS.has(error.code);\nconst [maj, min] = process.versions.node.split('.').slice(0, 2).map(n => Number.parseInt(n, 10));\nconst wantBigintFsStats = process.platform === 'win32' && (maj > 10 || (maj === 10 && min >= 5));\n\nconst normalizeFilter = filter => {\n  if (filter === undefined) return;\n  if (typeof filter === 'function') return filter;\n\n  if (typeof filter === 'string') {\n    const glob = picomatch(filter.trim());\n    return entry => glob(entry.basename);\n  }\n\n  if (Array.isArray(filter)) {\n    const positive = [];\n    const negative = [];\n    for (const item of filter) {\n      const trimmed = item.trim();\n      if (trimmed.charAt(0) === BANG) {\n        negative.push(picomatch(trimmed.slice(1)));\n      } else {\n        positive.push(picomatch(trimmed));\n      }\n    }\n\n    if (negative.length > 0) {\n      if (positive.length > 0) {\n        return entry =>\n          positive.some(f => f(entry.basename)) && !negative.some(f => f(entry.basename));\n      }\n      return entry => !negative.some(f => f(entry.basename));\n    }\n    return entry => positive.some(f => f(entry.basename));\n  }\n};\n\nclass ReaddirpStream extends Readable {\n  static get defaultOptions() {\n    return {\n      root: '.',\n      /* eslint-disable no-unused-vars */\n      fileFilter: (path) => true,\n      directoryFilter: (path) => true,\n      /* eslint-enable no-unused-vars */\n      type: FILE_TYPE,\n      lstat: false,\n      depth: 2147483648,\n      alwaysStat: false\n    };\n  }\n\n  constructor(options = {}) {\n    super({\n      objectMode: true,\n      autoDestroy: true,\n      highWaterMark: options.highWaterMark || 4096\n    });\n    const opts = { ...ReaddirpStream.defaultOptions, ...options };\n    const { root, type } = opts;\n\n    this._fileFilter = normalizeFilter(opts.fileFilter);\n    this._directoryFilter = normalizeFilter(opts.directoryFilter);\n\n    const statMethod = opts.lstat ? lstat : stat;\n    // Use bigint stats if it's windows and stat() supports options (node 10+).\n    if (wantBigintFsStats) {\n      this._stat = path => statMethod(path, { bigint: true });\n    } else {\n      this._stat = statMethod;\n    }\n\n    this._maxDepth = opts.depth;\n    this._wantsDir = [DIR_TYPE, FILE_DIR_TYPE, EVERYTHING_TYPE].includes(type);\n    this._wantsFile = [FILE_TYPE, FILE_DIR_TYPE, EVERYTHING_TYPE].includes(type);\n    this._wantsEverything = type === EVERYTHING_TYPE;\n    this._root = sysPath.resolve(root);\n    this._isDirent = ('Dirent' in fs) && !opts.alwaysStat;\n    this._statsProp = this._isDirent ? 'dirent' : 'stats';\n    this._rdOptions = { encoding: 'utf8', withFileTypes: this._isDirent };\n\n    // Launch stream with one parent, the root dir.\n    this.parents = [this._exploreDir(root, 1)];\n    this.reading = false;\n    this.parent = undefined;\n  }\n\n  async _read(batch) {\n    if (this.reading) return;\n    this.reading = true;\n\n    try {\n      while (!this.destroyed && batch > 0) {\n        const { path, depth, files = [] } = this.parent || {};\n\n        if (files.length > 0) {\n          const slice = files.splice(0, batch).map(dirent => this._formatEntry(dirent, path));\n          for (const entry of await Promise.all(slice)) {\n            if (this.destroyed) return;\n\n            const entryType = await this._getEntryType(entry);\n            if (entryType === 'directory' && this._directoryFilter(entry)) {\n              if (depth <= this._maxDepth) {\n                this.parents.push(this._exploreDir(entry.fullPath, depth + 1));\n              }\n\n              if (this._wantsDir) {\n                this.push(entry);\n                batch--;\n              }\n            } else if ((entryType === 'file' || this._includeAsFile(entry)) && this._fileFilter(entry)) {\n              if (this._wantsFile) {\n                this.push(entry);\n                batch--;\n              }\n            }\n          }\n        } else {\n          const parent = this.parents.pop();\n          if (!parent) {\n            this.push(null);\n            break;\n          }\n          this.parent = await parent;\n          if (this.destroyed) return;\n        }\n      }\n    } catch (error) {\n      this.destroy(error);\n    } finally {\n      this.reading = false;\n    }\n  }\n\n  async _exploreDir(path, depth) {\n    let files;\n    try {\n      files = await readdir(path, this._rdOptions);\n    } catch (error) {\n      this._onError(error);\n    }\n    return { files, depth, path };\n  }\n\n  async _formatEntry(dirent, path) {\n    let entry;\n    try {\n      const basename = this._isDirent ? dirent.name : dirent;\n      const fullPath = sysPath.resolve(sysPath.join(path, basename));\n      entry = { path: sysPath.relative(this._root, fullPath), fullPath, basename };\n      entry[this._statsProp] = this._isDirent ? dirent : await this._stat(fullPath);\n    } catch (err) {\n      this._onError(err);\n    }\n    return entry;\n  }\n\n  _onError(err) {\n    if (isNormalFlowError(err) && !this.destroyed) {\n      this.emit('warn', err);\n    } else {\n      this.destroy(err);\n    }\n  }\n\n  async _getEntryType(entry) {\n    // entry may be undefined, because a warning or an error were emitted\n    // and the statsProp is undefined\n    const stats = entry && entry[this._statsProp];\n    if (!stats) {\n      return;\n    }\n    if (stats.isFile()) {\n      return 'file';\n    }\n    if (stats.isDirectory()) {\n      return 'directory';\n    }\n    if (stats && stats.isSymbolicLink()) {\n      const full = entry.fullPath;\n      try {\n        const entryRealPath = await realpath(full);\n        const entryRealPathStats = await lstat(entryRealPath);\n        if (entryRealPathStats.isFile()) {\n          return 'file';\n        }\n        if (entryRealPathStats.isDirectory()) {\n          const len = entryRealPath.length;\n          if (full.startsWith(entryRealPath) && full.substr(len, 1) === sysPath.sep) {\n            const recursiveError = new Error(\n              `Circular symlink detected: \"${full}\" points to \"${entryRealPath}\"`\n            );\n            recursiveError.code = RECURSIVE_ERROR_CODE;\n            return this._onError(recursiveError);\n          }\n          return 'directory';\n        }\n      } catch (error) {\n        this._onError(error);\n      }\n    }\n  }\n\n  _includeAsFile(entry) {\n    const stats = entry && entry[this._statsProp];\n\n    return stats && this._wantsEverything && !stats.isDirectory();\n  }\n}\n\n/**\n * @typedef {Object} ReaddirpArguments\n * @property {Function=} fileFilter\n * @property {Function=} directoryFilter\n * @property {String=} type\n * @property {Number=} depth\n * @property {String=} root\n * @property {Boolean=} lstat\n * @property {Boolean=} bigint\n */\n\n/**\n * Main function which ends up calling readdirRec and reads all files and directories in given root recursively.\n * @param {String} root Root directory\n * @param {ReaddirpArguments=} options Options to specify root (start directory), filters and recursion depth\n */\nconst readdirp = (root, options = {}) => {\n  let type = options.entryType || options.type;\n  if (type === 'both') type = FILE_DIR_TYPE; // backwards-compatibility\n  if (type) options.type = type;\n  if (!root) {\n    throw new Error('readdirp: root argument is required. Usage: readdirp(root, options)');\n  } else if (typeof root !== 'string') {\n    throw new TypeError('readdirp: root argument must be a string. Usage: readdirp(root, options)');\n  } else if (type && !ALL_TYPES.includes(type)) {\n    throw new Error(`readdirp: Invalid type passed. Use one of ${ALL_TYPES.join(', ')}`);\n  }\n\n  options.root = root;\n  return new ReaddirpStream(options);\n};\n\nconst readdirpPromise = (root, options = {}) => {\n  return new Promise((resolve, reject) => {\n    const files = [];\n    readdirp(root, options)\n      .on('data', entry => files.push(entry))\n      .on('end', () => resolve(files))\n      .on('error', error => reject(error));\n  });\n};\n\nreaddirp.promise = readdirpPromise;\nreaddirp.ReaddirpStream = ReaddirpStream;\nreaddirp.default = readdirp;\n\nmodule.exports = readdirp;\n", "/*!\n * normalize-path <https://github.com/jonschlinkert/normalize-path>\n *\n * Copyright (c) 2014-2018, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nmodule.exports = function(path, stripTrailing) {\n  if (typeof path !== 'string') {\n    throw new TypeError('expected path to be a string');\n  }\n\n  if (path === '\\\\' || path === '/') return '/';\n\n  var len = path.length;\n  if (len <= 1) return path;\n\n  // ensure that win32 namespaces has two leading slashes, so that the path is\n  // handled properly by the win32 version of path.parse() after being normalized\n  // https://msdn.microsoft.com/library/windows/desktop/aa365247(v=vs.85).aspx#namespaces\n  var prefix = '';\n  if (len > 4 && path[3] === '\\\\') {\n    var ch = path[2];\n    if ((ch === '?' || ch === '.') && path.slice(0, 2) === '\\\\\\\\') {\n      path = path.slice(2);\n      prefix = '//';\n    }\n  }\n\n  var segs = path.split(/[/\\\\]+/);\n  if (stripTrailing !== false && segs[segs.length - 1] === '') {\n    segs.pop();\n  }\n  return prefix + segs.join('/');\n};\n", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\nconst picomatch = require('picomatch');\nconst normalizePath = require('normalize-path');\n\n/**\n * @typedef {(testString: string) => boolean} AnymatchFn\n * @typedef {string|RegExp|AnymatchFn} AnymatchPattern\n * @typedef {AnymatchPattern|AnymatchPattern[]} AnymatchMatcher\n */\nconst BANG = '!';\nconst DEFAULT_OPTIONS = {returnIndex: false};\nconst arrify = (item) => Array.isArray(item) ? item : [item];\n\n/**\n * @param {AnymatchPattern} matcher\n * @param {object} options\n * @returns {AnymatchFn}\n */\nconst createPattern = (matcher, options) => {\n  if (typeof matcher === 'function') {\n    return matcher;\n  }\n  if (typeof matcher === 'string') {\n    const glob = picomatch(matcher, options);\n    return (string) => matcher === string || glob(string);\n  }\n  if (matcher instanceof RegExp) {\n    return (string) => matcher.test(string);\n  }\n  return (string) => false;\n};\n\n/**\n * @param {Array<Function>} patterns\n * @param {Array<Function>} negPatterns\n * @param {String|Array} args\n * @param {Boolean} returnIndex\n * @returns {boolean|number}\n */\nconst matchPatterns = (patterns, negPatterns, args, returnIndex) => {\n  const isList = Array.isArray(args);\n  const _path = isList ? args[0] : args;\n  if (!isList && typeof _path !== 'string') {\n    throw new TypeError('anymatch: second argument must be a string: got ' +\n      Object.prototype.toString.call(_path))\n  }\n  const path = normalizePath(_path, false);\n\n  for (let index = 0; index < negPatterns.length; index++) {\n    const nglob = negPatterns[index];\n    if (nglob(path)) {\n      return returnIndex ? -1 : false;\n    }\n  }\n\n  const applied = isList && [path].concat(args.slice(1));\n  for (let index = 0; index < patterns.length; index++) {\n    const pattern = patterns[index];\n    if (isList ? pattern(...applied) : pattern(path)) {\n      return returnIndex ? index : true;\n    }\n  }\n\n  return returnIndex ? -1 : false;\n};\n\n/**\n * @param {AnymatchMatcher} matchers\n * @param {Array|string} testString\n * @param {object} options\n * @returns {boolean|number|Function}\n */\nconst anymatch = (matchers, testString, options = DEFAULT_OPTIONS) => {\n  if (matchers == null) {\n    throw new TypeError('anymatch: specify first argument');\n  }\n  const opts = typeof options === 'boolean' ? {returnIndex: options} : options;\n  const returnIndex = opts.returnIndex || false;\n\n  // Early cache for matchers.\n  const mtchers = arrify(matchers);\n  const negatedGlobs = mtchers\n    .filter(item => typeof item === 'string' && item.charAt(0) === BANG)\n    .map(item => item.slice(1))\n    .map(item => picomatch(item, opts));\n  const patterns = mtchers\n    .filter(item => typeof item !== 'string' || (typeof item === 'string' && item.charAt(0) !== BANG))\n    .map(matcher => createPattern(matcher, opts));\n\n  if (testString == null) {\n    return (testString, ri = false) => {\n      const returnIndex = typeof ri === 'boolean' ? ri : false;\n      return matchPatterns(patterns, negatedGlobs, testString, returnIndex);\n    }\n  }\n\n  return matchPatterns(patterns, negatedGlobs, testString, returnIndex);\n};\n\nanymatch.default = anymatch;\nmodule.exports = anymatch;\n", "/*!\n * is-extglob <https://github.com/jonschlinkert/is-extglob>\n *\n * Copyright (c) 2014-2016, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\nmodule.exports = function isExtglob(str) {\n  if (typeof str !== 'string' || str === '') {\n    return false;\n  }\n\n  var match;\n  while ((match = /(\\\\).|([@?!+*]\\(.*\\))/g.exec(str))) {\n    if (match[2]) return true;\n    str = str.slice(match.index + match[0].length);\n  }\n\n  return false;\n};\n", "/*!\n * is-glob <https://github.com/jonschlinkert/is-glob>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nvar isExtglob = require('is-extglob');\nvar chars = { '{': '}', '(': ')', '[': ']'};\nvar strictCheck = function(str) {\n  if (str[0] === '!') {\n    return true;\n  }\n  var index = 0;\n  var pipeIndex = -2;\n  var closeSquareIndex = -2;\n  var closeCurlyIndex = -2;\n  var closeParenIndex = -2;\n  var backSlashIndex = -2;\n  while (index < str.length) {\n    if (str[index] === '*') {\n      return true;\n    }\n\n    if (str[index + 1] === '?' && /[\\].+)]/.test(str[index])) {\n      return true;\n    }\n\n    if (closeSquareIndex !== -1 && str[index] === '[' && str[index + 1] !== ']') {\n      if (closeSquareIndex < index) {\n        closeSquareIndex = str.indexOf(']', index);\n      }\n      if (closeSquareIndex > index) {\n        if (backSlashIndex === -1 || backSlashIndex > closeSquareIndex) {\n          return true;\n        }\n        backSlashIndex = str.indexOf('\\\\', index);\n        if (backSlashIndex === -1 || backSlashIndex > closeSquareIndex) {\n          return true;\n        }\n      }\n    }\n\n    if (closeCurlyIndex !== -1 && str[index] === '{' && str[index + 1] !== '}') {\n      closeCurlyIndex = str.indexOf('}', index);\n      if (closeCurlyIndex > index) {\n        backSlashIndex = str.indexOf('\\\\', index);\n        if (backSlashIndex === -1 || backSlashIndex > closeCurlyIndex) {\n          return true;\n        }\n      }\n    }\n\n    if (closeParenIndex !== -1 && str[index] === '(' && str[index + 1] === '?' && /[:!=]/.test(str[index + 2]) && str[index + 3] !== ')') {\n      closeParenIndex = str.indexOf(')', index);\n      if (closeParenIndex > index) {\n        backSlashIndex = str.indexOf('\\\\', index);\n        if (backSlashIndex === -1 || backSlashIndex > closeParenIndex) {\n          return true;\n        }\n      }\n    }\n\n    if (pipeIndex !== -1 && str[index] === '(' && str[index + 1] !== '|') {\n      if (pipeIndex < index) {\n        pipeIndex = str.indexOf('|', index);\n      }\n      if (pipeIndex !== -1 && str[pipeIndex + 1] !== ')') {\n        closeParenIndex = str.indexOf(')', pipeIndex);\n        if (closeParenIndex > pipeIndex) {\n          backSlashIndex = str.indexOf('\\\\', pipeIndex);\n          if (backSlashIndex === -1 || backSlashIndex > closeParenIndex) {\n            return true;\n          }\n        }\n      }\n    }\n\n    if (str[index] === '\\\\') {\n      var open = str[index + 1];\n      index += 2;\n      var close = chars[open];\n\n      if (close) {\n        var n = str.indexOf(close, index);\n        if (n !== -1) {\n          index = n + 1;\n        }\n      }\n\n      if (str[index] === '!') {\n        return true;\n      }\n    } else {\n      index++;\n    }\n  }\n  return false;\n};\n\nvar relaxedCheck = function(str) {\n  if (str[0] === '!') {\n    return true;\n  }\n  var index = 0;\n  while (index < str.length) {\n    if (/[*?{}()[\\]]/.test(str[index])) {\n      return true;\n    }\n\n    if (str[index] === '\\\\') {\n      var open = str[index + 1];\n      index += 2;\n      var close = chars[open];\n\n      if (close) {\n        var n = str.indexOf(close, index);\n        if (n !== -1) {\n          index = n + 1;\n        }\n      }\n\n      if (str[index] === '!') {\n        return true;\n      }\n    } else {\n      index++;\n    }\n  }\n  return false;\n};\n\nmodule.exports = function isGlob(str, options) {\n  if (typeof str !== 'string' || str === '') {\n    return false;\n  }\n\n  if (isExtglob(str)) {\n    return true;\n  }\n\n  var check = strictCheck;\n\n  // optionally relax check\n  if (options && options.strict === false) {\n    check = relaxedCheck;\n  }\n\n  return check(str);\n};\n", "'use strict';\n\nvar isGlob = require('is-glob');\nvar pathPosixDirname = require('path').posix.dirname;\nvar isWin32 = require('os').platform() === 'win32';\n\nvar slash = '/';\nvar backslash = /\\\\/g;\nvar enclosure = /[\\{\\[].*[\\}\\]]$/;\nvar globby = /(^|[^\\\\])([\\{\\[]|\\([^\\)]+$)/;\nvar escaped = /\\\\([\\!\\*\\?\\|\\[\\]\\(\\)\\{\\}])/g;\n\n/**\n * @param {string} str\n * @param {Object} opts\n * @param {boolean} [opts.flipBackslashes=true]\n * @returns {string}\n */\nmodule.exports = function globParent(str, opts) {\n  var options = Object.assign({ flipBackslashes: true }, opts);\n\n  // flip windows path separators\n  if (options.flipBackslashes && isWin32 && str.indexOf(slash) < 0) {\n    str = str.replace(backslash, slash);\n  }\n\n  // special case for strings ending in enclosure containing path separator\n  if (enclosure.test(str)) {\n    str += slash;\n  }\n\n  // preserves full path in case of trailing path separator\n  str += 'a';\n\n  // remove path parts that are globby\n  do {\n    str = pathPosixDirname(str);\n  } while (isGlob(str) || globby.test(str));\n\n  // remove escape chars and return result\n  return str.replace(escaped, '$1');\n};\n", "'use strict';\n\nexports.isInteger = num => {\n  if (typeof num === 'number') {\n    return Number.isInteger(num);\n  }\n  if (typeof num === 'string' && num.trim() !== '') {\n    return Number.isInteger(Number(num));\n  }\n  return false;\n};\n\n/**\n * Find a node of the given type\n */\n\nexports.find = (node, type) => node.nodes.find(node => node.type === type);\n\n/**\n * Find a node of the given type\n */\n\nexports.exceedsLimit = (min, max, step = 1, limit) => {\n  if (limit === false) return false;\n  if (!exports.isInteger(min) || !exports.isInteger(max)) return false;\n  return ((Number(max) - Number(min)) / Number(step)) >= limit;\n};\n\n/**\n * Escape the given node with '\\\\' before node.value\n */\n\nexports.escapeNode = (block, n = 0, type) => {\n  const node = block.nodes[n];\n  if (!node) return;\n\n  if ((type && node.type === type) || node.type === 'open' || node.type === 'close') {\n    if (node.escaped !== true) {\n      node.value = '\\\\' + node.value;\n      node.escaped = true;\n    }\n  }\n};\n\n/**\n * Returns true if the given brace node should be enclosed in literal braces\n */\n\nexports.encloseBrace = node => {\n  if (node.type !== 'brace') return false;\n  if ((node.commas >> 0 + node.ranges >> 0) === 0) {\n    node.invalid = true;\n    return true;\n  }\n  return false;\n};\n\n/**\n * Returns true if a brace node is invalid.\n */\n\nexports.isInvalidBrace = block => {\n  if (block.type !== 'brace') return false;\n  if (block.invalid === true || block.dollar) return true;\n  if ((block.commas >> 0 + block.ranges >> 0) === 0) {\n    block.invalid = true;\n    return true;\n  }\n  if (block.open !== true || block.close !== true) {\n    block.invalid = true;\n    return true;\n  }\n  return false;\n};\n\n/**\n * Returns true if a node is an open or close node\n */\n\nexports.isOpenOrClose = node => {\n  if (node.type === 'open' || node.type === 'close') {\n    return true;\n  }\n  return node.open === true || node.close === true;\n};\n\n/**\n * Reduce an array of text nodes.\n */\n\nexports.reduce = nodes => nodes.reduce((acc, node) => {\n  if (node.type === 'text') acc.push(node.value);\n  if (node.type === 'range') node.type = 'text';\n  return acc;\n}, []);\n\n/**\n * Flatten an array\n */\n\nexports.flatten = (...args) => {\n  const result = [];\n\n  const flat = arr => {\n    for (let i = 0; i < arr.length; i++) {\n      const ele = arr[i];\n\n      if (Array.isArray(ele)) {\n        flat(ele);\n        continue;\n      }\n\n      if (ele !== undefined) {\n        result.push(ele);\n      }\n    }\n    return result;\n  };\n\n  flat(args);\n  return result;\n};\n", "'use strict';\n\nconst utils = require('./utils');\n\nmodule.exports = (ast, options = {}) => {\n  const stringify = (node, parent = {}) => {\n    const invalidBlock = options.escapeInvalid && utils.isInvalidBrace(parent);\n    const invalidNode = node.invalid === true && options.escapeInvalid === true;\n    let output = '';\n\n    if (node.value) {\n      if ((invalidBlock || invalidNode) && utils.isOpenOrClose(node)) {\n        return '\\\\' + node.value;\n      }\n      return node.value;\n    }\n\n    if (node.value) {\n      return node.value;\n    }\n\n    if (node.nodes) {\n      for (const child of node.nodes) {\n        output += stringify(child);\n      }\n    }\n    return output;\n  };\n\n  return stringify(ast);\n};\n\n", "/*!\n * is-number <https://github.com/jonschlinkert/is-number>\n *\n * Copyright (c) 2014-present, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nmodule.exports = function(num) {\n  if (typeof num === 'number') {\n    return num - num === 0;\n  }\n  if (typeof num === 'string' && num.trim() !== '') {\n    return Number.isFinite ? Number.isFinite(+num) : isFinite(+num);\n  }\n  return false;\n};\n", "/*!\n * to-regex-range <https://github.com/micromatch/to-regex-range>\n *\n * Copyright (c) 2015-present, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nconst isNumber = require('is-number');\n\nconst toRegexRange = (min, max, options) => {\n  if (isNumber(min) === false) {\n    throw new TypeError('toRegexRange: expected the first argument to be a number');\n  }\n\n  if (max === void 0 || min === max) {\n    return String(min);\n  }\n\n  if (isNumber(max) === false) {\n    throw new TypeError('toRegexRange: expected the second argument to be a number.');\n  }\n\n  let opts = { relaxZeros: true, ...options };\n  if (typeof opts.strictZeros === 'boolean') {\n    opts.relaxZeros = opts.strictZeros === false;\n  }\n\n  let relax = String(opts.relaxZeros);\n  let shorthand = String(opts.shorthand);\n  let capture = String(opts.capture);\n  let wrap = String(opts.wrap);\n  let cacheKey = min + ':' + max + '=' + relax + shorthand + capture + wrap;\n\n  if (toRegexRange.cache.hasOwnProperty(cacheKey)) {\n    return toRegexRange.cache[cacheKey].result;\n  }\n\n  let a = Math.min(min, max);\n  let b = Math.max(min, max);\n\n  if (Math.abs(a - b) === 1) {\n    let result = min + '|' + max;\n    if (opts.capture) {\n      return `(${result})`;\n    }\n    if (opts.wrap === false) {\n      return result;\n    }\n    return `(?:${result})`;\n  }\n\n  let isPadded = hasPadding(min) || hasPadding(max);\n  let state = { min, max, a, b };\n  let positives = [];\n  let negatives = [];\n\n  if (isPadded) {\n    state.isPadded = isPadded;\n    state.maxLen = String(state.max).length;\n  }\n\n  if (a < 0) {\n    let newMin = b < 0 ? Math.abs(b) : 1;\n    negatives = splitToPatterns(newMin, Math.abs(a), state, opts);\n    a = state.a = 0;\n  }\n\n  if (b >= 0) {\n    positives = splitToPatterns(a, b, state, opts);\n  }\n\n  state.negatives = negatives;\n  state.positives = positives;\n  state.result = collatePatterns(negatives, positives, opts);\n\n  if (opts.capture === true) {\n    state.result = `(${state.result})`;\n  } else if (opts.wrap !== false && (positives.length + negatives.length) > 1) {\n    state.result = `(?:${state.result})`;\n  }\n\n  toRegexRange.cache[cacheKey] = state;\n  return state.result;\n};\n\nfunction collatePatterns(neg, pos, options) {\n  let onlyNegative = filterPatterns(neg, pos, '-', false, options) || [];\n  let onlyPositive = filterPatterns(pos, neg, '', false, options) || [];\n  let intersected = filterPatterns(neg, pos, '-?', true, options) || [];\n  let subpatterns = onlyNegative.concat(intersected).concat(onlyPositive);\n  return subpatterns.join('|');\n}\n\nfunction splitToRanges(min, max) {\n  let nines = 1;\n  let zeros = 1;\n\n  let stop = countNines(min, nines);\n  let stops = new Set([max]);\n\n  while (min <= stop && stop <= max) {\n    stops.add(stop);\n    nines += 1;\n    stop = countNines(min, nines);\n  }\n\n  stop = countZeros(max + 1, zeros) - 1;\n\n  while (min < stop && stop <= max) {\n    stops.add(stop);\n    zeros += 1;\n    stop = countZeros(max + 1, zeros) - 1;\n  }\n\n  stops = [...stops];\n  stops.sort(compare);\n  return stops;\n}\n\n/**\n * Convert a range to a regex pattern\n * @param {Number} `start`\n * @param {Number} `stop`\n * @return {String}\n */\n\nfunction rangeToPattern(start, stop, options) {\n  if (start === stop) {\n    return { pattern: start, count: [], digits: 0 };\n  }\n\n  let zipped = zip(start, stop);\n  let digits = zipped.length;\n  let pattern = '';\n  let count = 0;\n\n  for (let i = 0; i < digits; i++) {\n    let [startDigit, stopDigit] = zipped[i];\n\n    if (startDigit === stopDigit) {\n      pattern += startDigit;\n\n    } else if (startDigit !== '0' || stopDigit !== '9') {\n      pattern += toCharacterClass(startDigit, stopDigit, options);\n\n    } else {\n      count++;\n    }\n  }\n\n  if (count) {\n    pattern += options.shorthand === true ? '\\\\d' : '[0-9]';\n  }\n\n  return { pattern, count: [count], digits };\n}\n\nfunction splitToPatterns(min, max, tok, options) {\n  let ranges = splitToRanges(min, max);\n  let tokens = [];\n  let start = min;\n  let prev;\n\n  for (let i = 0; i < ranges.length; i++) {\n    let max = ranges[i];\n    let obj = rangeToPattern(String(start), String(max), options);\n    let zeros = '';\n\n    if (!tok.isPadded && prev && prev.pattern === obj.pattern) {\n      if (prev.count.length > 1) {\n        prev.count.pop();\n      }\n\n      prev.count.push(obj.count[0]);\n      prev.string = prev.pattern + toQuantifier(prev.count);\n      start = max + 1;\n      continue;\n    }\n\n    if (tok.isPadded) {\n      zeros = padZeros(max, tok, options);\n    }\n\n    obj.string = zeros + obj.pattern + toQuantifier(obj.count);\n    tokens.push(obj);\n    start = max + 1;\n    prev = obj;\n  }\n\n  return tokens;\n}\n\nfunction filterPatterns(arr, comparison, prefix, intersection, options) {\n  let result = [];\n\n  for (let ele of arr) {\n    let { string } = ele;\n\n    // only push if _both_ are negative...\n    if (!intersection && !contains(comparison, 'string', string)) {\n      result.push(prefix + string);\n    }\n\n    // or _both_ are positive\n    if (intersection && contains(comparison, 'string', string)) {\n      result.push(prefix + string);\n    }\n  }\n  return result;\n}\n\n/**\n * Zip strings\n */\n\nfunction zip(a, b) {\n  let arr = [];\n  for (let i = 0; i < a.length; i++) arr.push([a[i], b[i]]);\n  return arr;\n}\n\nfunction compare(a, b) {\n  return a > b ? 1 : b > a ? -1 : 0;\n}\n\nfunction contains(arr, key, val) {\n  return arr.some(ele => ele[key] === val);\n}\n\nfunction countNines(min, len) {\n  return Number(String(min).slice(0, -len) + '9'.repeat(len));\n}\n\nfunction countZeros(integer, zeros) {\n  return integer - (integer % Math.pow(10, zeros));\n}\n\nfunction toQuantifier(digits) {\n  let [start = 0, stop = ''] = digits;\n  if (stop || start > 1) {\n    return `{${start + (stop ? ',' + stop : '')}}`;\n  }\n  return '';\n}\n\nfunction toCharacterClass(a, b, options) {\n  return `[${a}${(b - a === 1) ? '' : '-'}${b}]`;\n}\n\nfunction hasPadding(str) {\n  return /^-?(0+)\\d/.test(str);\n}\n\nfunction padZeros(value, tok, options) {\n  if (!tok.isPadded) {\n    return value;\n  }\n\n  let diff = Math.abs(tok.maxLen - String(value).length);\n  let relax = options.relaxZeros !== false;\n\n  switch (diff) {\n    case 0:\n      return '';\n    case 1:\n      return relax ? '0?' : '0';\n    case 2:\n      return relax ? '0{0,2}' : '00';\n    default: {\n      return relax ? `0{0,${diff}}` : `0{${diff}}`;\n    }\n  }\n}\n\n/**\n * Cache\n */\n\ntoRegexRange.cache = {};\ntoRegexRange.clearCache = () => (toRegexRange.cache = {});\n\n/**\n * Expose `toRegexRange`\n */\n\nmodule.exports = toRegexRange;\n", "/*!\n * fill-range <https://github.com/jonschlinkert/fill-range>\n *\n * Copyright (c) 2014-present, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nconst util = require('util');\nconst toRegexRange = require('to-regex-range');\n\nconst isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val);\n\nconst transform = toNumber => {\n  return value => toNumber === true ? Number(value) : String(value);\n};\n\nconst isValidValue = value => {\n  return typeof value === 'number' || (typeof value === 'string' && value !== '');\n};\n\nconst isNumber = num => Number.isInteger(+num);\n\nconst zeros = input => {\n  let value = `${input}`;\n  let index = -1;\n  if (value[0] === '-') value = value.slice(1);\n  if (value === '0') return false;\n  while (value[++index] === '0');\n  return index > 0;\n};\n\nconst stringify = (start, end, options) => {\n  if (typeof start === 'string' || typeof end === 'string') {\n    return true;\n  }\n  return options.stringify === true;\n};\n\nconst pad = (input, maxLength, toNumber) => {\n  if (maxLength > 0) {\n    let dash = input[0] === '-' ? '-' : '';\n    if (dash) input = input.slice(1);\n    input = (dash + input.padStart(dash ? maxLength - 1 : maxLength, '0'));\n  }\n  if (toNumber === false) {\n    return String(input);\n  }\n  return input;\n};\n\nconst toMaxLen = (input, maxLength) => {\n  let negative = input[0] === '-' ? '-' : '';\n  if (negative) {\n    input = input.slice(1);\n    maxLength--;\n  }\n  while (input.length < maxLength) input = '0' + input;\n  return negative ? ('-' + input) : input;\n};\n\nconst toSequence = (parts, options, maxLen) => {\n  parts.negatives.sort((a, b) => a < b ? -1 : a > b ? 1 : 0);\n  parts.positives.sort((a, b) => a < b ? -1 : a > b ? 1 : 0);\n\n  let prefix = options.capture ? '' : '?:';\n  let positives = '';\n  let negatives = '';\n  let result;\n\n  if (parts.positives.length) {\n    positives = parts.positives.map(v => toMaxLen(String(v), maxLen)).join('|');\n  }\n\n  if (parts.negatives.length) {\n    negatives = `-(${prefix}${parts.negatives.map(v => toMaxLen(String(v), maxLen)).join('|')})`;\n  }\n\n  if (positives && negatives) {\n    result = `${positives}|${negatives}`;\n  } else {\n    result = positives || negatives;\n  }\n\n  if (options.wrap) {\n    return `(${prefix}${result})`;\n  }\n\n  return result;\n};\n\nconst toRange = (a, b, isNumbers, options) => {\n  if (isNumbers) {\n    return toRegexRange(a, b, { wrap: false, ...options });\n  }\n\n  let start = String.fromCharCode(a);\n  if (a === b) return start;\n\n  let stop = String.fromCharCode(b);\n  return `[${start}-${stop}]`;\n};\n\nconst toRegex = (start, end, options) => {\n  if (Array.isArray(start)) {\n    let wrap = options.wrap === true;\n    let prefix = options.capture ? '' : '?:';\n    return wrap ? `(${prefix}${start.join('|')})` : start.join('|');\n  }\n  return toRegexRange(start, end, options);\n};\n\nconst rangeError = (...args) => {\n  return new RangeError('Invalid range arguments: ' + util.inspect(...args));\n};\n\nconst invalidRange = (start, end, options) => {\n  if (options.strictRanges === true) throw rangeError([start, end]);\n  return [];\n};\n\nconst invalidStep = (step, options) => {\n  if (options.strictRanges === true) {\n    throw new TypeError(`Expected step \"${step}\" to be a number`);\n  }\n  return [];\n};\n\nconst fillNumbers = (start, end, step = 1, options = {}) => {\n  let a = Number(start);\n  let b = Number(end);\n\n  if (!Number.isInteger(a) || !Number.isInteger(b)) {\n    if (options.strictRanges === true) throw rangeError([start, end]);\n    return [];\n  }\n\n  // fix negative zero\n  if (a === 0) a = 0;\n  if (b === 0) b = 0;\n\n  let descending = a > b;\n  let startString = String(start);\n  let endString = String(end);\n  let stepString = String(step);\n  step = Math.max(Math.abs(step), 1);\n\n  let padded = zeros(startString) || zeros(endString) || zeros(stepString);\n  let maxLen = padded ? Math.max(startString.length, endString.length, stepString.length) : 0;\n  let toNumber = padded === false && stringify(start, end, options) === false;\n  let format = options.transform || transform(toNumber);\n\n  if (options.toRegex && step === 1) {\n    return toRange(toMaxLen(start, maxLen), toMaxLen(end, maxLen), true, options);\n  }\n\n  let parts = { negatives: [], positives: [] };\n  let push = num => parts[num < 0 ? 'negatives' : 'positives'].push(Math.abs(num));\n  let range = [];\n  let index = 0;\n\n  while (descending ? a >= b : a <= b) {\n    if (options.toRegex === true && step > 1) {\n      push(a);\n    } else {\n      range.push(pad(format(a, index), maxLen, toNumber));\n    }\n    a = descending ? a - step : a + step;\n    index++;\n  }\n\n  if (options.toRegex === true) {\n    return step > 1\n      ? toSequence(parts, options, maxLen)\n      : toRegex(range, null, { wrap: false, ...options });\n  }\n\n  return range;\n};\n\nconst fillLetters = (start, end, step = 1, options = {}) => {\n  if ((!isNumber(start) && start.length > 1) || (!isNumber(end) && end.length > 1)) {\n    return invalidRange(start, end, options);\n  }\n\n  let format = options.transform || (val => String.fromCharCode(val));\n  let a = `${start}`.charCodeAt(0);\n  let b = `${end}`.charCodeAt(0);\n\n  let descending = a > b;\n  let min = Math.min(a, b);\n  let max = Math.max(a, b);\n\n  if (options.toRegex && step === 1) {\n    return toRange(min, max, false, options);\n  }\n\n  let range = [];\n  let index = 0;\n\n  while (descending ? a >= b : a <= b) {\n    range.push(format(a, index));\n    a = descending ? a - step : a + step;\n    index++;\n  }\n\n  if (options.toRegex === true) {\n    return toRegex(range, null, { wrap: false, options });\n  }\n\n  return range;\n};\n\nconst fill = (start, end, step, options = {}) => {\n  if (end == null && isValidValue(start)) {\n    return [start];\n  }\n\n  if (!isValidValue(start) || !isValidValue(end)) {\n    return invalidRange(start, end, options);\n  }\n\n  if (typeof step === 'function') {\n    return fill(start, end, 1, { transform: step });\n  }\n\n  if (isObject(step)) {\n    return fill(start, end, 0, step);\n  }\n\n  let opts = { ...options };\n  if (opts.capture === true) opts.wrap = true;\n  step = step || opts.step || 1;\n\n  if (!isNumber(step)) {\n    if (step != null && !isObject(step)) return invalidStep(step, opts);\n    return fill(start, end, 1, step);\n  }\n\n  if (isNumber(start) && isNumber(end)) {\n    return fillNumbers(start, end, step, opts);\n  }\n\n  return fillLetters(start, end, Math.max(Math.abs(step), 1), opts);\n};\n\nmodule.exports = fill;\n", "'use strict';\n\nconst fill = require('fill-range');\nconst utils = require('./utils');\n\nconst compile = (ast, options = {}) => {\n  const walk = (node, parent = {}) => {\n    const invalidBlock = utils.isInvalidBrace(parent);\n    const invalidNode = node.invalid === true && options.escapeInvalid === true;\n    const invalid = invalidBlock === true || invalidNode === true;\n    const prefix = options.escapeInvalid === true ? '\\\\' : '';\n    let output = '';\n\n    if (node.isOpen === true) {\n      return prefix + node.value;\n    }\n\n    if (node.isClose === true) {\n      console.log('node.isClose', prefix, node.value);\n      return prefix + node.value;\n    }\n\n    if (node.type === 'open') {\n      return invalid ? prefix + node.value : '(';\n    }\n\n    if (node.type === 'close') {\n      return invalid ? prefix + node.value : ')';\n    }\n\n    if (node.type === 'comma') {\n      return node.prev.type === 'comma' ? '' : invalid ? node.value : '|';\n    }\n\n    if (node.value) {\n      return node.value;\n    }\n\n    if (node.nodes && node.ranges > 0) {\n      const args = utils.reduce(node.nodes);\n      const range = fill(...args, { ...options, wrap: false, toRegex: true, strictZeros: true });\n\n      if (range.length !== 0) {\n        return args.length > 1 && range.length > 1 ? `(${range})` : range;\n      }\n    }\n\n    if (node.nodes) {\n      for (const child of node.nodes) {\n        output += walk(child, node);\n      }\n    }\n\n    return output;\n  };\n\n  return walk(ast);\n};\n\nmodule.exports = compile;\n", "'use strict';\n\nconst fill = require('fill-range');\nconst stringify = require('./stringify');\nconst utils = require('./utils');\n\nconst append = (queue = '', stash = '', enclose = false) => {\n  const result = [];\n\n  queue = [].concat(queue);\n  stash = [].concat(stash);\n\n  if (!stash.length) return queue;\n  if (!queue.length) {\n    return enclose ? utils.flatten(stash).map(ele => `{${ele}}`) : stash;\n  }\n\n  for (const item of queue) {\n    if (Array.isArray(item)) {\n      for (const value of item) {\n        result.push(append(value, stash, enclose));\n      }\n    } else {\n      for (let ele of stash) {\n        if (enclose === true && typeof ele === 'string') ele = `{${ele}}`;\n        result.push(Array.isArray(ele) ? append(item, ele, enclose) : item + ele);\n      }\n    }\n  }\n  return utils.flatten(result);\n};\n\nconst expand = (ast, options = {}) => {\n  const rangeLimit = options.rangeLimit === undefined ? 1000 : options.rangeLimit;\n\n  const walk = (node, parent = {}) => {\n    node.queue = [];\n\n    let p = parent;\n    let q = parent.queue;\n\n    while (p.type !== 'brace' && p.type !== 'root' && p.parent) {\n      p = p.parent;\n      q = p.queue;\n    }\n\n    if (node.invalid || node.dollar) {\n      q.push(append(q.pop(), stringify(node, options)));\n      return;\n    }\n\n    if (node.type === 'brace' && node.invalid !== true && node.nodes.length === 2) {\n      q.push(append(q.pop(), ['{}']));\n      return;\n    }\n\n    if (node.nodes && node.ranges > 0) {\n      const args = utils.reduce(node.nodes);\n\n      if (utils.exceedsLimit(...args, options.step, rangeLimit)) {\n        throw new RangeError('expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.');\n      }\n\n      let range = fill(...args, options);\n      if (range.length === 0) {\n        range = stringify(node, options);\n      }\n\n      q.push(append(q.pop(), range));\n      node.nodes = [];\n      return;\n    }\n\n    const enclose = utils.encloseBrace(node);\n    let queue = node.queue;\n    let block = node;\n\n    while (block.type !== 'brace' && block.type !== 'root' && block.parent) {\n      block = block.parent;\n      queue = block.queue;\n    }\n\n    for (let i = 0; i < node.nodes.length; i++) {\n      const child = node.nodes[i];\n\n      if (child.type === 'comma' && node.type === 'brace') {\n        if (i === 1) queue.push('');\n        queue.push('');\n        continue;\n      }\n\n      if (child.type === 'close') {\n        q.push(append(q.pop(), queue, enclose));\n        continue;\n      }\n\n      if (child.value && child.type !== 'open') {\n        queue.push(append(queue.pop(), child.value));\n        continue;\n      }\n\n      if (child.nodes) {\n        walk(child, node);\n      }\n    }\n\n    return queue;\n  };\n\n  return utils.flatten(walk(ast));\n};\n\nmodule.exports = expand;\n", "'use strict';\n\nmodule.exports = {\n  MAX_LENGTH: 10000,\n\n  // Digits\n  CHAR_0: '0', /* 0 */\n  CHAR_9: '9', /* 9 */\n\n  // Alphabet chars.\n  CHAR_UPPERCASE_A: 'A', /* A */\n  CHAR_LOWERCASE_A: 'a', /* a */\n  CHAR_UPPERCASE_Z: 'Z', /* Z */\n  CHAR_LOWERCASE_Z: 'z', /* z */\n\n  CHAR_LEFT_PARENTHESES: '(', /* ( */\n  CHAR_RIGHT_PARENTHESES: ')', /* ) */\n\n  CHAR_ASTERISK: '*', /* * */\n\n  // Non-alphabetic chars.\n  CHAR_AMPERSAND: '&', /* & */\n  CHAR_AT: '@', /* @ */\n  CHAR_BACKSLASH: '\\\\', /* \\ */\n  CHAR_BACKTICK: '`', /* ` */\n  CHAR_CARRIAGE_RETURN: '\\r', /* \\r */\n  CHAR_CIRCUMFLEX_ACCENT: '^', /* ^ */\n  CHAR_COLON: ':', /* : */\n  CHAR_COMMA: ',', /* , */\n  CHAR_DOLLAR: '$', /* . */\n  CHAR_DOT: '.', /* . */\n  CHAR_DOUBLE_QUOTE: '\"', /* \" */\n  CHAR_EQUAL: '=', /* = */\n  CHAR_EXCLAMATION_MARK: '!', /* ! */\n  CHAR_FORM_FEED: '\\f', /* \\f */\n  CHAR_FORWARD_SLASH: '/', /* / */\n  CHAR_HASH: '#', /* # */\n  CHAR_HYPHEN_MINUS: '-', /* - */\n  CHAR_LEFT_ANGLE_BRACKET: '<', /* < */\n  CHAR_LEFT_CURLY_BRACE: '{', /* { */\n  CHAR_LEFT_SQUARE_BRACKET: '[', /* [ */\n  CHAR_LINE_FEED: '\\n', /* \\n */\n  CHAR_NO_BREAK_SPACE: '\\u00A0', /* \\u00A0 */\n  CHAR_PERCENT: '%', /* % */\n  CHAR_PLUS: '+', /* + */\n  CHAR_QUESTION_MARK: '?', /* ? */\n  CHAR_RIGHT_ANGLE_BRACKET: '>', /* > */\n  CHAR_RIGHT_CURLY_BRACE: '}', /* } */\n  CHAR_RIGHT_SQUARE_BRACKET: ']', /* ] */\n  CHAR_SEMICOLON: ';', /* ; */\n  CHAR_SINGLE_QUOTE: '\\'', /* ' */\n  CHAR_SPACE: ' ', /*   */\n  CHAR_TAB: '\\t', /* \\t */\n  CHAR_UNDERSCORE: '_', /* _ */\n  CHAR_VERTICAL_LINE: '|', /* | */\n  CHAR_ZERO_WIDTH_NOBREAK_SPACE: '\\uFEFF' /* \\uFEFF */\n};\n", "'use strict';\n\nconst stringify = require('./stringify');\n\n/**\n * Constants\n */\n\nconst {\n  MAX_LENGTH,\n  CHAR_BACKSLASH, /* \\ */\n  CHAR_BACKTICK, /* ` */\n  CHAR_COMMA, /* , */\n  CHAR_DOT, /* . */\n  CHAR_LEFT_PARENTHESES, /* ( */\n  CHAR_RIGHT_PARENTHESES, /* ) */\n  CHAR_LEFT_CURLY_BRACE, /* { */\n  CHAR_RIGHT_CURLY_BRACE, /* } */\n  CHAR_LEFT_SQUARE_BRACKET, /* [ */\n  CHAR_RIGHT_SQUARE_BRACKET, /* ] */\n  CHAR_DOUBLE_QUOTE, /* \" */\n  CHAR_SINGLE_QUOTE, /* ' */\n  CHAR_NO_BREAK_SPACE,\n  CHAR_ZERO_WIDTH_NOBREAK_SPACE\n} = require('./constants');\n\n/**\n * parse\n */\n\nconst parse = (input, options = {}) => {\n  if (typeof input !== 'string') {\n    throw new TypeError('Expected a string');\n  }\n\n  const opts = options || {};\n  const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;\n  if (input.length > max) {\n    throw new SyntaxError(`Input length (${input.length}), exceeds max characters (${max})`);\n  }\n\n  const ast = { type: 'root', input, nodes: [] };\n  const stack = [ast];\n  let block = ast;\n  let prev = ast;\n  let brackets = 0;\n  const length = input.length;\n  let index = 0;\n  let depth = 0;\n  let value;\n\n  /**\n   * Helpers\n   */\n\n  const advance = () => input[index++];\n  const push = node => {\n    if (node.type === 'text' && prev.type === 'dot') {\n      prev.type = 'text';\n    }\n\n    if (prev && prev.type === 'text' && node.type === 'text') {\n      prev.value += node.value;\n      return;\n    }\n\n    block.nodes.push(node);\n    node.parent = block;\n    node.prev = prev;\n    prev = node;\n    return node;\n  };\n\n  push({ type: 'bos' });\n\n  while (index < length) {\n    block = stack[stack.length - 1];\n    value = advance();\n\n    /**\n     * Invalid chars\n     */\n\n    if (value === CHAR_ZERO_WIDTH_NOBREAK_SPACE || value === CHAR_NO_BREAK_SPACE) {\n      continue;\n    }\n\n    /**\n     * Escaped chars\n     */\n\n    if (value === CHAR_BACKSLASH) {\n      push({ type: 'text', value: (options.keepEscaping ? value : '') + advance() });\n      continue;\n    }\n\n    /**\n     * Right square bracket (literal): ']'\n     */\n\n    if (value === CHAR_RIGHT_SQUARE_BRACKET) {\n      push({ type: 'text', value: '\\\\' + value });\n      continue;\n    }\n\n    /**\n     * Left square bracket: '['\n     */\n\n    if (value === CHAR_LEFT_SQUARE_BRACKET) {\n      brackets++;\n\n      let next;\n\n      while (index < length && (next = advance())) {\n        value += next;\n\n        if (next === CHAR_LEFT_SQUARE_BRACKET) {\n          brackets++;\n          continue;\n        }\n\n        if (next === CHAR_BACKSLASH) {\n          value += advance();\n          continue;\n        }\n\n        if (next === CHAR_RIGHT_SQUARE_BRACKET) {\n          brackets--;\n\n          if (brackets === 0) {\n            break;\n          }\n        }\n      }\n\n      push({ type: 'text', value });\n      continue;\n    }\n\n    /**\n     * Parentheses\n     */\n\n    if (value === CHAR_LEFT_PARENTHESES) {\n      block = push({ type: 'paren', nodes: [] });\n      stack.push(block);\n      push({ type: 'text', value });\n      continue;\n    }\n\n    if (value === CHAR_RIGHT_PARENTHESES) {\n      if (block.type !== 'paren') {\n        push({ type: 'text', value });\n        continue;\n      }\n      block = stack.pop();\n      push({ type: 'text', value });\n      block = stack[stack.length - 1];\n      continue;\n    }\n\n    /**\n     * Quotes: '|\"|`\n     */\n\n    if (value === CHAR_DOUBLE_QUOTE || value === CHAR_SINGLE_QUOTE || value === CHAR_BACKTICK) {\n      const open = value;\n      let next;\n\n      if (options.keepQuotes !== true) {\n        value = '';\n      }\n\n      while (index < length && (next = advance())) {\n        if (next === CHAR_BACKSLASH) {\n          value += next + advance();\n          continue;\n        }\n\n        if (next === open) {\n          if (options.keepQuotes === true) value += next;\n          break;\n        }\n\n        value += next;\n      }\n\n      push({ type: 'text', value });\n      continue;\n    }\n\n    /**\n     * Left curly brace: '{'\n     */\n\n    if (value === CHAR_LEFT_CURLY_BRACE) {\n      depth++;\n\n      const dollar = prev.value && prev.value.slice(-1) === '$' || block.dollar === true;\n      const brace = {\n        type: 'brace',\n        open: true,\n        close: false,\n        dollar,\n        depth,\n        commas: 0,\n        ranges: 0,\n        nodes: []\n      };\n\n      block = push(brace);\n      stack.push(block);\n      push({ type: 'open', value });\n      continue;\n    }\n\n    /**\n     * Right curly brace: '}'\n     */\n\n    if (value === CHAR_RIGHT_CURLY_BRACE) {\n      if (block.type !== 'brace') {\n        push({ type: 'text', value });\n        continue;\n      }\n\n      const type = 'close';\n      block = stack.pop();\n      block.close = true;\n\n      push({ type, value });\n      depth--;\n\n      block = stack[stack.length - 1];\n      continue;\n    }\n\n    /**\n     * Comma: ','\n     */\n\n    if (value === CHAR_COMMA && depth > 0) {\n      if (block.ranges > 0) {\n        block.ranges = 0;\n        const open = block.nodes.shift();\n        block.nodes = [open, { type: 'text', value: stringify(block) }];\n      }\n\n      push({ type: 'comma', value });\n      block.commas++;\n      continue;\n    }\n\n    /**\n     * Dot: '.'\n     */\n\n    if (value === CHAR_DOT && depth > 0 && block.commas === 0) {\n      const siblings = block.nodes;\n\n      if (depth === 0 || siblings.length === 0) {\n        push({ type: 'text', value });\n        continue;\n      }\n\n      if (prev.type === 'dot') {\n        block.range = [];\n        prev.value += value;\n        prev.type = 'range';\n\n        if (block.nodes.length !== 3 && block.nodes.length !== 5) {\n          block.invalid = true;\n          block.ranges = 0;\n          prev.type = 'text';\n          continue;\n        }\n\n        block.ranges++;\n        block.args = [];\n        continue;\n      }\n\n      if (prev.type === 'range') {\n        siblings.pop();\n\n        const before = siblings[siblings.length - 1];\n        before.value += prev.value + value;\n        prev = before;\n        block.ranges--;\n        continue;\n      }\n\n      push({ type: 'dot', value });\n      continue;\n    }\n\n    /**\n     * Text\n     */\n\n    push({ type: 'text', value });\n  }\n\n  // Mark imbalanced braces and brackets as invalid\n  do {\n    block = stack.pop();\n\n    if (block.type !== 'root') {\n      block.nodes.forEach(node => {\n        if (!node.nodes) {\n          if (node.type === 'open') node.isOpen = true;\n          if (node.type === 'close') node.isClose = true;\n          if (!node.nodes) node.type = 'text';\n          node.invalid = true;\n        }\n      });\n\n      // get the location of the block on parent.nodes (block's siblings)\n      const parent = stack[stack.length - 1];\n      const index = parent.nodes.indexOf(block);\n      // replace the (invalid) block with it's nodes\n      parent.nodes.splice(index, 1, ...block.nodes);\n    }\n  } while (stack.length > 0);\n\n  push({ type: 'eos' });\n  return ast;\n};\n\nmodule.exports = parse;\n", "'use strict';\n\nconst stringify = require('./lib/stringify');\nconst compile = require('./lib/compile');\nconst expand = require('./lib/expand');\nconst parse = require('./lib/parse');\n\n/**\n * Expand the given pattern or create a regex-compatible string.\n *\n * ```js\n * const braces = require('braces');\n * console.log(braces('{a,b,c}', { compile: true })); //=> ['(a|b|c)']\n * console.log(braces('{a,b,c}')); //=> ['a', 'b', 'c']\n * ```\n * @param {String} `str`\n * @param {Object} `options`\n * @return {String}\n * @api public\n */\n\nconst braces = (input, options = {}) => {\n  let output = [];\n\n  if (Array.isArray(input)) {\n    for (const pattern of input) {\n      const result = braces.create(pattern, options);\n      if (Array.isArray(result)) {\n        output.push(...result);\n      } else {\n        output.push(result);\n      }\n    }\n  } else {\n    output = [].concat(braces.create(input, options));\n  }\n\n  if (options && options.expand === true && options.nodupes === true) {\n    output = [...new Set(output)];\n  }\n  return output;\n};\n\n/**\n * Parse the given `str` with the given `options`.\n *\n * ```js\n * // braces.parse(pattern, [, options]);\n * const ast = braces.parse('a/{b,c}/d');\n * console.log(ast);\n * ```\n * @param {String} pattern Brace pattern to parse\n * @param {Object} options\n * @return {Object} Returns an AST\n * @api public\n */\n\nbraces.parse = (input, options = {}) => parse(input, options);\n\n/**\n * Creates a braces string from an AST, or an AST node.\n *\n * ```js\n * const braces = require('braces');\n * let ast = braces.parse('foo/{a,b}/bar');\n * console.log(stringify(ast.nodes[2])); //=> '{a,b}'\n * ```\n * @param {String} `input` Brace pattern or AST.\n * @param {Object} `options`\n * @return {Array} Returns an array of expanded values.\n * @api public\n */\n\nbraces.stringify = (input, options = {}) => {\n  if (typeof input === 'string') {\n    return stringify(braces.parse(input, options), options);\n  }\n  return stringify(input, options);\n};\n\n/**\n * Compiles a brace pattern into a regex-compatible, optimized string.\n * This method is called by the main [braces](#braces) function by default.\n *\n * ```js\n * const braces = require('braces');\n * console.log(braces.compile('a/{b,c}/d'));\n * //=> ['a/(b|c)/d']\n * ```\n * @param {String} `input` Brace pattern or AST.\n * @param {Object} `options`\n * @return {Array} Returns an array of expanded values.\n * @api public\n */\n\nbraces.compile = (input, options = {}) => {\n  if (typeof input === 'string') {\n    input = braces.parse(input, options);\n  }\n  return compile(input, options);\n};\n\n/**\n * Expands a brace pattern into an array. This method is called by the\n * main [braces](#braces) function when `options.expand` is true. Before\n * using this method it's recommended that you read the [performance notes](#performance))\n * and advantages of using [.compile](#compile) instead.\n *\n * ```js\n * const braces = require('braces');\n * console.log(braces.expand('a/{b,c}/d'));\n * //=> ['a/b/d', 'a/c/d'];\n * ```\n * @param {String} `pattern` Brace pattern\n * @param {Object} `options`\n * @return {Array} Returns an array of expanded values.\n * @api public\n */\n\nbraces.expand = (input, options = {}) => {\n  if (typeof input === 'string') {\n    input = braces.parse(input, options);\n  }\n\n  let result = expand(input, options);\n\n  // filter out empty strings if specified\n  if (options.noempty === true) {\n    result = result.filter(Boolean);\n  }\n\n  // filter out duplicates if specified\n  if (options.nodupes === true) {\n    result = [...new Set(result)];\n  }\n\n  return result;\n};\n\n/**\n * Processes a brace pattern and returns either an expanded array\n * (if `options.expand` is true), a highly optimized regex-compatible string.\n * This method is called by the main [braces](#braces) function.\n *\n * ```js\n * const braces = require('braces');\n * console.log(braces.create('user-{200..300}/project-{a,b,c}-{1..10}'))\n * //=> 'user-(20[0-9]|2[1-9][0-9]|300)/project-(a|b|c)-([1-9]|10)'\n * ```\n * @param {String} `pattern` Brace pattern\n * @param {Object} `options`\n * @return {Array} Returns an array of expanded values.\n * @api public\n */\n\nbraces.create = (input, options = {}) => {\n  if (input === '' || input.length < 3) {\n    return [input];\n  }\n\n  return options.expand !== true\n    ? braces.compile(input, options)\n    : braces.expand(input, options);\n};\n\n/**\n * Expose \"braces\"\n */\n\nmodule.exports = braces;\n", "[\n\t\"3dm\",\n\t\"3ds\",\n\t\"3g2\",\n\t\"3gp\",\n\t\"7z\",\n\t\"a\",\n\t\"aac\",\n\t\"adp\",\n\t\"afdesign\",\n\t\"afphoto\",\n\t\"afpub\",\n\t\"ai\",\n\t\"aif\",\n\t\"aiff\",\n\t\"alz\",\n\t\"ape\",\n\t\"apk\",\n\t\"appimage\",\n\t\"ar\",\n\t\"arj\",\n\t\"asf\",\n\t\"au\",\n\t\"avi\",\n\t\"bak\",\n\t\"baml\",\n\t\"bh\",\n\t\"bin\",\n\t\"bk\",\n\t\"bmp\",\n\t\"btif\",\n\t\"bz2\",\n\t\"bzip2\",\n\t\"cab\",\n\t\"caf\",\n\t\"cgm\",\n\t\"class\",\n\t\"cmx\",\n\t\"cpio\",\n\t\"cr2\",\n\t\"cur\",\n\t\"dat\",\n\t\"dcm\",\n\t\"deb\",\n\t\"dex\",\n\t\"djvu\",\n\t\"dll\",\n\t\"dmg\",\n\t\"dng\",\n\t\"doc\",\n\t\"docm\",\n\t\"docx\",\n\t\"dot\",\n\t\"dotm\",\n\t\"dra\",\n\t\"DS_Store\",\n\t\"dsk\",\n\t\"dts\",\n\t\"dtshd\",\n\t\"dvb\",\n\t\"dwg\",\n\t\"dxf\",\n\t\"ecelp4800\",\n\t\"ecelp7470\",\n\t\"ecelp9600\",\n\t\"egg\",\n\t\"eol\",\n\t\"eot\",\n\t\"epub\",\n\t\"exe\",\n\t\"f4v\",\n\t\"fbs\",\n\t\"fh\",\n\t\"fla\",\n\t\"flac\",\n\t\"flatpak\",\n\t\"fli\",\n\t\"flv\",\n\t\"fpx\",\n\t\"fst\",\n\t\"fvt\",\n\t\"g3\",\n\t\"gh\",\n\t\"gif\",\n\t\"graffle\",\n\t\"gz\",\n\t\"gzip\",\n\t\"h261\",\n\t\"h263\",\n\t\"h264\",\n\t\"icns\",\n\t\"ico\",\n\t\"ief\",\n\t\"img\",\n\t\"ipa\",\n\t\"iso\",\n\t\"jar\",\n\t\"jpeg\",\n\t\"jpg\",\n\t\"jpgv\",\n\t\"jpm\",\n\t\"jxr\",\n\t\"key\",\n\t\"ktx\",\n\t\"lha\",\n\t\"lib\",\n\t\"lvp\",\n\t\"lz\",\n\t\"lzh\",\n\t\"lzma\",\n\t\"lzo\",\n\t\"m3u\",\n\t\"m4a\",\n\t\"m4v\",\n\t\"mar\",\n\t\"mdi\",\n\t\"mht\",\n\t\"mid\",\n\t\"midi\",\n\t\"mj2\",\n\t\"mka\",\n\t\"mkv\",\n\t\"mmr\",\n\t\"mng\",\n\t\"mobi\",\n\t\"mov\",\n\t\"movie\",\n\t\"mp3\",\n\t\"mp4\",\n\t\"mp4a\",\n\t\"mpeg\",\n\t\"mpg\",\n\t\"mpga\",\n\t\"mxu\",\n\t\"nef\",\n\t\"npx\",\n\t\"numbers\",\n\t\"nupkg\",\n\t\"o\",\n\t\"odp\",\n\t\"ods\",\n\t\"odt\",\n\t\"oga\",\n\t\"ogg\",\n\t\"ogv\",\n\t\"otf\",\n\t\"ott\",\n\t\"pages\",\n\t\"pbm\",\n\t\"pcx\",\n\t\"pdb\",\n\t\"pdf\",\n\t\"pea\",\n\t\"pgm\",\n\t\"pic\",\n\t\"png\",\n\t\"pnm\",\n\t\"pot\",\n\t\"potm\",\n\t\"potx\",\n\t\"ppa\",\n\t\"ppam\",\n\t\"ppm\",\n\t\"pps\",\n\t\"ppsm\",\n\t\"ppsx\",\n\t\"ppt\",\n\t\"pptm\",\n\t\"pptx\",\n\t\"psd\",\n\t\"pya\",\n\t\"pyc\",\n\t\"pyo\",\n\t\"pyv\",\n\t\"qt\",\n\t\"rar\",\n\t\"ras\",\n\t\"raw\",\n\t\"resources\",\n\t\"rgb\",\n\t\"rip\",\n\t\"rlc\",\n\t\"rmf\",\n\t\"rmvb\",\n\t\"rpm\",\n\t\"rtf\",\n\t\"rz\",\n\t\"s3m\",\n\t\"s7z\",\n\t\"scpt\",\n\t\"sgi\",\n\t\"shar\",\n\t\"snap\",\n\t\"sil\",\n\t\"sketch\",\n\t\"slk\",\n\t\"smv\",\n\t\"snk\",\n\t\"so\",\n\t\"stl\",\n\t\"suo\",\n\t\"sub\",\n\t\"swf\",\n\t\"tar\",\n\t\"tbz\",\n\t\"tbz2\",\n\t\"tga\",\n\t\"tgz\",\n\t\"thmx\",\n\t\"tif\",\n\t\"tiff\",\n\t\"tlz\",\n\t\"ttc\",\n\t\"ttf\",\n\t\"txz\",\n\t\"udf\",\n\t\"uvh\",\n\t\"uvi\",\n\t\"uvm\",\n\t\"uvp\",\n\t\"uvs\",\n\t\"uvu\",\n\t\"viv\",\n\t\"vob\",\n\t\"war\",\n\t\"wav\",\n\t\"wax\",\n\t\"wbmp\",\n\t\"wdp\",\n\t\"weba\",\n\t\"webm\",\n\t\"webp\",\n\t\"whl\",\n\t\"wim\",\n\t\"wm\",\n\t\"wma\",\n\t\"wmv\",\n\t\"wmx\",\n\t\"woff\",\n\t\"woff2\",\n\t\"wrm\",\n\t\"wvx\",\n\t\"xbm\",\n\t\"xif\",\n\t\"xla\",\n\t\"xlam\",\n\t\"xls\",\n\t\"xlsb\",\n\t\"xlsm\",\n\t\"xlsx\",\n\t\"xlt\",\n\t\"xltm\",\n\t\"xltx\",\n\t\"xm\",\n\t\"xmind\",\n\t\"xpi\",\n\t\"xpm\",\n\t\"xwd\",\n\t\"xz\",\n\t\"z\",\n\t\"zip\",\n\t\"zipx\"\n]\n", "module.exports = require('./binary-extensions.json');\n", "'use strict';\nconst path = require('path');\nconst binaryExtensions = require('binary-extensions');\n\nconst extensions = new Set(binaryExtensions);\n\nmodule.exports = filePath => extensions.has(path.extname(filePath).slice(1).toLowerCase());\n", "'use strict';\n\nconst {sep} = require('path');\nconst {platform} = process;\nconst os = require('os');\n\nexports.EV_ALL = 'all';\nexports.EV_READY = 'ready';\nexports.EV_ADD = 'add';\nexports.EV_CHANGE = 'change';\nexports.EV_ADD_DIR = 'addDir';\nexports.EV_UNLINK = 'unlink';\nexports.EV_UNLINK_DIR = 'unlinkDir';\nexports.EV_RAW = 'raw';\nexports.EV_ERROR = 'error';\n\nexports.STR_DATA = 'data';\nexports.STR_END = 'end';\nexports.STR_CLOSE = 'close';\n\nexports.FSEVENT_CREATED = 'created';\nexports.FSEVENT_MODIFIED = 'modified';\nexports.FSEVENT_DELETED = 'deleted';\nexports.FSEVENT_MOVED = 'moved';\nexports.FSEVENT_CLONED = 'cloned';\nexports.FSEVENT_UNKNOWN = 'unknown';\nexports.FSEVENT_FLAG_MUST_SCAN_SUBDIRS = 1;\nexports.FSEVENT_TYPE_FILE = 'file';\nexports.FSEVENT_TYPE_DIRECTORY = 'directory';\nexports.FSEVENT_TYPE_SYMLINK = 'symlink';\n\nexports.KEY_LISTENERS = 'listeners';\nexports.KEY_ERR = 'errHandlers';\nexports.KEY_RAW = 'rawEmitters';\nexports.HANDLER_KEYS = [exports.KEY_LISTENERS, exports.KEY_ERR, exports.KEY_RAW];\n\nexports.DOT_SLASH = `.${sep}`;\n\nexports.BACK_SLASH_RE = /\\\\/g;\nexports.DOUBLE_SLASH_RE = /\\/\\//;\nexports.SLASH_OR_BACK_SLASH_RE = /[/\\\\]/;\nexports.DOT_RE = /\\..*\\.(sw[px])$|~$|\\.subl.*\\.tmp/;\nexports.REPLACER_RE = /^\\.[/\\\\]/;\n\nexports.SLASH = '/';\nexports.SLASH_SLASH = '//';\nexports.BRACE_START = '{';\nexports.BANG = '!';\nexports.ONE_DOT = '.';\nexports.TWO_DOTS = '..';\nexports.STAR = '*';\nexports.GLOBSTAR = '**';\nexports.ROOT_GLOBSTAR = '/**/*';\nexports.SLASH_GLOBSTAR = '/**';\nexports.DIR_SUFFIX = 'Dir';\nexports.ANYMATCH_OPTS = {dot: true};\nexports.STRING_TYPE = 'string';\nexports.FUNCTION_TYPE = 'function';\nexports.EMPTY_STR = '';\nexports.EMPTY_FN = () => {};\nexports.IDENTITY_FN = val => val;\n\nexports.isWindows = platform === 'win32';\nexports.isMacos = platform === 'darwin';\nexports.isLinux = platform === 'linux';\nexports.isIBMi = os.type() === 'OS400';\n", "'use strict';\n\nconst fs = require('fs');\nconst sysPath = require('path');\nconst { promisify } = require('util');\nconst isBinaryPath = require('is-binary-path');\nconst {\n  isWindows,\n  isLinux,\n  EMPTY_FN,\n  EMPTY_STR,\n  KEY_LISTENERS,\n  KEY_ERR,\n  KEY_RAW,\n  HANDLER_KEYS,\n  EV_CHANGE,\n  EV_ADD,\n  EV_ADD_DIR,\n  EV_ERROR,\n  STR_DATA,\n  STR_END,\n  BRACE_START,\n  STAR\n} = require('./constants');\n\nconst THROTTLE_MODE_WATCH = 'watch';\n\nconst open = promisify(fs.open);\nconst stat = promisify(fs.stat);\nconst lstat = promisify(fs.lstat);\nconst close = promisify(fs.close);\nconst fsrealpath = promisify(fs.realpath);\n\nconst statMethods = { lstat, stat };\n\n// TODO: emit errors properly. Example: EMFILE on Macos.\nconst foreach = (val, fn) => {\n  if (val instanceof Set) {\n    val.forEach(fn);\n  } else {\n    fn(val);\n  }\n};\n\nconst addAndConvert = (main, prop, item) => {\n  let container = main[prop];\n  if (!(container instanceof Set)) {\n    main[prop] = container = new Set([container]);\n  }\n  container.add(item);\n};\n\nconst clearItem = cont => key => {\n  const set = cont[key];\n  if (set instanceof Set) {\n    set.clear();\n  } else {\n    delete cont[key];\n  }\n};\n\nconst delFromSet = (main, prop, item) => {\n  const container = main[prop];\n  if (container instanceof Set) {\n    container.delete(item);\n  } else if (container === item) {\n    delete main[prop];\n  }\n};\n\nconst isEmptySet = (val) => val instanceof Set ? val.size === 0 : !val;\n\n/**\n * @typedef {String} Path\n */\n\n// fs_watch helpers\n\n// object to hold per-process fs_watch instances\n// (may be shared across chokidar FSWatcher instances)\n\n/**\n * @typedef {Object} FsWatchContainer\n * @property {Set} listeners\n * @property {Set} errHandlers\n * @property {Set} rawEmitters\n * @property {fs.FSWatcher=} watcher\n * @property {Boolean=} watcherUnusable\n */\n\n/**\n * @type {Map<String,FsWatchContainer>}\n */\nconst FsWatchInstances = new Map();\n\n/**\n * Instantiates the fs_watch interface\n * @param {String} path to be watched\n * @param {Object} options to be passed to fs_watch\n * @param {Function} listener main event handler\n * @param {Function} errHandler emits info about errors\n * @param {Function} emitRaw emits raw event data\n * @returns {fs.FSWatcher} new fsevents instance\n */\nfunction createFsWatchInstance(path, options, listener, errHandler, emitRaw) {\n  const handleEvent = (rawEvent, evPath) => {\n    listener(path);\n    emitRaw(rawEvent, evPath, {watchedPath: path});\n\n    // emit based on events occurring for files from a directory's watcher in\n    // case the file's watcher misses it (and rely on throttling to de-dupe)\n    if (evPath && path !== evPath) {\n      fsWatchBroadcast(\n        sysPath.resolve(path, evPath), KEY_LISTENERS, sysPath.join(path, evPath)\n      );\n    }\n  };\n  try {\n    return fs.watch(path, options, handleEvent);\n  } catch (error) {\n    errHandler(error);\n  }\n}\n\n/**\n * Helper for passing fs_watch event data to a collection of listeners\n * @param {Path} fullPath absolute path bound to fs_watch instance\n * @param {String} type listener type\n * @param {*=} val1 arguments to be passed to listeners\n * @param {*=} val2\n * @param {*=} val3\n */\nconst fsWatchBroadcast = (fullPath, type, val1, val2, val3) => {\n  const cont = FsWatchInstances.get(fullPath);\n  if (!cont) return;\n  foreach(cont[type], (listener) => {\n    listener(val1, val2, val3);\n  });\n};\n\n/**\n * Instantiates the fs_watch interface or binds listeners\n * to an existing one covering the same file system entry\n * @param {String} path\n * @param {String} fullPath absolute path\n * @param {Object} options to be passed to fs_watch\n * @param {Object} handlers container for event listener functions\n */\nconst setFsWatchListener = (path, fullPath, options, handlers) => {\n  const {listener, errHandler, rawEmitter} = handlers;\n  let cont = FsWatchInstances.get(fullPath);\n\n  /** @type {fs.FSWatcher=} */\n  let watcher;\n  if (!options.persistent) {\n    watcher = createFsWatchInstance(\n      path, options, listener, errHandler, rawEmitter\n    );\n    return watcher.close.bind(watcher);\n  }\n  if (cont) {\n    addAndConvert(cont, KEY_LISTENERS, listener);\n    addAndConvert(cont, KEY_ERR, errHandler);\n    addAndConvert(cont, KEY_RAW, rawEmitter);\n  } else {\n    watcher = createFsWatchInstance(\n      path,\n      options,\n      fsWatchBroadcast.bind(null, fullPath, KEY_LISTENERS),\n      errHandler, // no need to use broadcast here\n      fsWatchBroadcast.bind(null, fullPath, KEY_RAW)\n    );\n    if (!watcher) return;\n    watcher.on(EV_ERROR, async (error) => {\n      const broadcastErr = fsWatchBroadcast.bind(null, fullPath, KEY_ERR);\n      cont.watcherUnusable = true; // documented since Node 10.4.1\n      // Workaround for https://github.com/joyent/node/issues/4337\n      if (isWindows && error.code === 'EPERM') {\n        try {\n          const fd = await open(path, 'r');\n          await close(fd);\n          broadcastErr(error);\n        } catch (err) {}\n      } else {\n        broadcastErr(error);\n      }\n    });\n    cont = {\n      listeners: listener,\n      errHandlers: errHandler,\n      rawEmitters: rawEmitter,\n      watcher\n    };\n    FsWatchInstances.set(fullPath, cont);\n  }\n  // const index = cont.listeners.indexOf(listener);\n\n  // removes this instance's listeners and closes the underlying fs_watch\n  // instance if there are no more listeners left\n  return () => {\n    delFromSet(cont, KEY_LISTENERS, listener);\n    delFromSet(cont, KEY_ERR, errHandler);\n    delFromSet(cont, KEY_RAW, rawEmitter);\n    if (isEmptySet(cont.listeners)) {\n      // Check to protect against issue gh-730.\n      // if (cont.watcherUnusable) {\n      cont.watcher.close();\n      // }\n      FsWatchInstances.delete(fullPath);\n      HANDLER_KEYS.forEach(clearItem(cont));\n      cont.watcher = undefined;\n      Object.freeze(cont);\n    }\n  };\n};\n\n// fs_watchFile helpers\n\n// object to hold per-process fs_watchFile instances\n// (may be shared across chokidar FSWatcher instances)\nconst FsWatchFileInstances = new Map();\n\n/**\n * Instantiates the fs_watchFile interface or binds listeners\n * to an existing one covering the same file system entry\n * @param {String} path to be watched\n * @param {String} fullPath absolute path\n * @param {Object} options options to be passed to fs_watchFile\n * @param {Object} handlers container for event listener functions\n * @returns {Function} closer\n */\nconst setFsWatchFileListener = (path, fullPath, options, handlers) => {\n  const {listener, rawEmitter} = handlers;\n  let cont = FsWatchFileInstances.get(fullPath);\n\n  /* eslint-disable no-unused-vars, prefer-destructuring */\n  let listeners = new Set();\n  let rawEmitters = new Set();\n\n  const copts = cont && cont.options;\n  if (copts && (copts.persistent < options.persistent || copts.interval > options.interval)) {\n    // \"Upgrade\" the watcher to persistence or a quicker interval.\n    // This creates some unlikely edge case issues if the user mixes\n    // settings in a very weird way, but solving for those cases\n    // doesn't seem worthwhile for the added complexity.\n    listeners = cont.listeners;\n    rawEmitters = cont.rawEmitters;\n    fs.unwatchFile(fullPath);\n    cont = undefined;\n  }\n\n  /* eslint-enable no-unused-vars, prefer-destructuring */\n\n  if (cont) {\n    addAndConvert(cont, KEY_LISTENERS, listener);\n    addAndConvert(cont, KEY_RAW, rawEmitter);\n  } else {\n    // TODO\n    // listeners.add(listener);\n    // rawEmitters.add(rawEmitter);\n    cont = {\n      listeners: listener,\n      rawEmitters: rawEmitter,\n      options,\n      watcher: fs.watchFile(fullPath, options, (curr, prev) => {\n        foreach(cont.rawEmitters, (rawEmitter) => {\n          rawEmitter(EV_CHANGE, fullPath, {curr, prev});\n        });\n        const currmtime = curr.mtimeMs;\n        if (curr.size !== prev.size || currmtime > prev.mtimeMs || currmtime === 0) {\n          foreach(cont.listeners, (listener) => listener(path, curr));\n        }\n      })\n    };\n    FsWatchFileInstances.set(fullPath, cont);\n  }\n  // const index = cont.listeners.indexOf(listener);\n\n  // Removes this instance's listeners and closes the underlying fs_watchFile\n  // instance if there are no more listeners left.\n  return () => {\n    delFromSet(cont, KEY_LISTENERS, listener);\n    delFromSet(cont, KEY_RAW, rawEmitter);\n    if (isEmptySet(cont.listeners)) {\n      FsWatchFileInstances.delete(fullPath);\n      fs.unwatchFile(fullPath);\n      cont.options = cont.watcher = undefined;\n      Object.freeze(cont);\n    }\n  };\n};\n\n/**\n * @mixin\n */\nclass NodeFsHandler {\n\n/**\n * @param {import(\"../index\").FSWatcher} fsW\n */\nconstructor(fsW) {\n  this.fsw = fsW;\n  this._boundHandleError = (error) => fsW._handleError(error);\n}\n\n/**\n * Watch file for changes with fs_watchFile or fs_watch.\n * @param {String} path to file or dir\n * @param {Function} listener on fs change\n * @returns {Function} closer for the watcher instance\n */\n_watchWithNodeFs(path, listener) {\n  const opts = this.fsw.options;\n  const directory = sysPath.dirname(path);\n  const basename = sysPath.basename(path);\n  const parent = this.fsw._getWatchedDir(directory);\n  parent.add(basename);\n  const absolutePath = sysPath.resolve(path);\n  const options = {persistent: opts.persistent};\n  if (!listener) listener = EMPTY_FN;\n\n  let closer;\n  if (opts.usePolling) {\n    options.interval = opts.enableBinaryInterval && isBinaryPath(basename) ?\n      opts.binaryInterval : opts.interval;\n    closer = setFsWatchFileListener(path, absolutePath, options, {\n      listener,\n      rawEmitter: this.fsw._emitRaw\n    });\n  } else {\n    closer = setFsWatchListener(path, absolutePath, options, {\n      listener,\n      errHandler: this._boundHandleError,\n      rawEmitter: this.fsw._emitRaw\n    });\n  }\n  return closer;\n}\n\n/**\n * Watch a file and emit add event if warranted.\n * @param {Path} file Path\n * @param {fs.Stats} stats result of fs_stat\n * @param {Boolean} initialAdd was the file added at watch instantiation?\n * @returns {Function} closer for the watcher instance\n */\n_handleFile(file, stats, initialAdd) {\n  if (this.fsw.closed) {\n    return;\n  }\n  const dirname = sysPath.dirname(file);\n  const basename = sysPath.basename(file);\n  const parent = this.fsw._getWatchedDir(dirname);\n  // stats is always present\n  let prevStats = stats;\n\n  // if the file is already being watched, do nothing\n  if (parent.has(basename)) return;\n\n  const listener = async (path, newStats) => {\n    if (!this.fsw._throttle(THROTTLE_MODE_WATCH, file, 5)) return;\n    if (!newStats || newStats.mtimeMs === 0) {\n      try {\n        const newStats = await stat(file);\n        if (this.fsw.closed) return;\n        // Check that change event was not fired because of changed only accessTime.\n        const at = newStats.atimeMs;\n        const mt = newStats.mtimeMs;\n        if (!at || at <= mt || mt !== prevStats.mtimeMs) {\n          this.fsw._emit(EV_CHANGE, file, newStats);\n        }\n        if (isLinux && prevStats.ino !== newStats.ino) {\n          this.fsw._closeFile(path)\n          prevStats = newStats;\n          this.fsw._addPathCloser(path, this._watchWithNodeFs(file, listener));\n        } else {\n          prevStats = newStats;\n        }\n      } catch (error) {\n        // Fix issues where mtime is null but file is still present\n        this.fsw._remove(dirname, basename);\n      }\n      // add is about to be emitted if file not already tracked in parent\n    } else if (parent.has(basename)) {\n      // Check that change event was not fired because of changed only accessTime.\n      const at = newStats.atimeMs;\n      const mt = newStats.mtimeMs;\n      if (!at || at <= mt || mt !== prevStats.mtimeMs) {\n        this.fsw._emit(EV_CHANGE, file, newStats);\n      }\n      prevStats = newStats;\n    }\n  }\n  // kick off the watcher\n  const closer = this._watchWithNodeFs(file, listener);\n\n  // emit an add event if we're supposed to\n  if (!(initialAdd && this.fsw.options.ignoreInitial) && this.fsw._isntIgnored(file)) {\n    if (!this.fsw._throttle(EV_ADD, file, 0)) return;\n    this.fsw._emit(EV_ADD, file, stats);\n  }\n\n  return closer;\n}\n\n/**\n * Handle symlinks encountered while reading a dir.\n * @param {Object} entry returned by readdirp\n * @param {String} directory path of dir being read\n * @param {String} path of this item\n * @param {String} item basename of this item\n * @returns {Promise<Boolean>} true if no more processing is needed for this entry.\n */\nasync _handleSymlink(entry, directory, path, item) {\n  if (this.fsw.closed) {\n    return;\n  }\n  const full = entry.fullPath;\n  const dir = this.fsw._getWatchedDir(directory);\n\n  if (!this.fsw.options.followSymlinks) {\n    // watch symlink directly (don't follow) and detect changes\n    this.fsw._incrReadyCount();\n\n    let linkPath;\n    try {\n      linkPath = await fsrealpath(path);\n    } catch (e) {\n      this.fsw._emitReady();\n      return true;\n    }\n\n    if (this.fsw.closed) return;\n    if (dir.has(item)) {\n      if (this.fsw._symlinkPaths.get(full) !== linkPath) {\n        this.fsw._symlinkPaths.set(full, linkPath);\n        this.fsw._emit(EV_CHANGE, path, entry.stats);\n      }\n    } else {\n      dir.add(item);\n      this.fsw._symlinkPaths.set(full, linkPath);\n      this.fsw._emit(EV_ADD, path, entry.stats);\n    }\n    this.fsw._emitReady();\n    return true;\n  }\n\n  // don't follow the same symlink more than once\n  if (this.fsw._symlinkPaths.has(full)) {\n    return true;\n  }\n\n  this.fsw._symlinkPaths.set(full, true);\n}\n\n_handleRead(directory, initialAdd, wh, target, dir, depth, throttler) {\n  // Normalize the directory name on Windows\n  directory = sysPath.join(directory, EMPTY_STR);\n\n  if (!wh.hasGlob) {\n    throttler = this.fsw._throttle('readdir', directory, 1000);\n    if (!throttler) return;\n  }\n\n  const previous = this.fsw._getWatchedDir(wh.path);\n  const current = new Set();\n\n  let stream = this.fsw._readdirp(directory, {\n    fileFilter: entry => wh.filterPath(entry),\n    directoryFilter: entry => wh.filterDir(entry),\n    depth: 0\n  }).on(STR_DATA, async (entry) => {\n    if (this.fsw.closed) {\n      stream = undefined;\n      return;\n    }\n    const item = entry.path;\n    let path = sysPath.join(directory, item);\n    current.add(item);\n\n    if (entry.stats.isSymbolicLink() && await this._handleSymlink(entry, directory, path, item)) {\n      return;\n    }\n\n    if (this.fsw.closed) {\n      stream = undefined;\n      return;\n    }\n    // Files that present in current directory snapshot\n    // but absent in previous are added to watch list and\n    // emit `add` event.\n    if (item === target || !target && !previous.has(item)) {\n      this.fsw._incrReadyCount();\n\n      // ensure relativeness of path is preserved in case of watcher reuse\n      path = sysPath.join(dir, sysPath.relative(dir, path));\n\n      this._addToNodeFs(path, initialAdd, wh, depth + 1);\n    }\n  }).on(EV_ERROR, this._boundHandleError);\n\n  return new Promise(resolve =>\n    stream.once(STR_END, () => {\n      if (this.fsw.closed) {\n        stream = undefined;\n        return;\n      }\n      const wasThrottled = throttler ? throttler.clear() : false;\n\n      resolve();\n\n      // Files that absent in current directory snapshot\n      // but present in previous emit `remove` event\n      // and are removed from @watched[directory].\n      previous.getChildren().filter((item) => {\n        return item !== directory &&\n          !current.has(item) &&\n          // in case of intersecting globs;\n          // a path may have been filtered out of this readdir, but\n          // shouldn't be removed because it matches a different glob\n          (!wh.hasGlob || wh.filterPath({\n            fullPath: sysPath.resolve(directory, item)\n          }));\n      }).forEach((item) => {\n        this.fsw._remove(directory, item);\n      });\n\n      stream = undefined;\n\n      // one more time for any missed in case changes came in extremely quickly\n      if (wasThrottled) this._handleRead(directory, false, wh, target, dir, depth, throttler);\n    })\n  );\n}\n\n/**\n * Read directory to add / remove files from `@watched` list and re-read it on change.\n * @param {String} dir fs path\n * @param {fs.Stats} stats\n * @param {Boolean} initialAdd\n * @param {Number} depth relative to user-supplied path\n * @param {String} target child path targeted for watch\n * @param {Object} wh Common watch helpers for this path\n * @param {String} realpath\n * @returns {Promise<Function>} closer for the watcher instance.\n */\nasync _handleDir(dir, stats, initialAdd, depth, target, wh, realpath) {\n  const parentDir = this.fsw._getWatchedDir(sysPath.dirname(dir));\n  const tracked = parentDir.has(sysPath.basename(dir));\n  if (!(initialAdd && this.fsw.options.ignoreInitial) && !target && !tracked) {\n    if (!wh.hasGlob || wh.globFilter(dir)) this.fsw._emit(EV_ADD_DIR, dir, stats);\n  }\n\n  // ensure dir is tracked (harmless if redundant)\n  parentDir.add(sysPath.basename(dir));\n  this.fsw._getWatchedDir(dir);\n  let throttler;\n  let closer;\n\n  const oDepth = this.fsw.options.depth;\n  if ((oDepth == null || depth <= oDepth) && !this.fsw._symlinkPaths.has(realpath)) {\n    if (!target) {\n      await this._handleRead(dir, initialAdd, wh, target, dir, depth, throttler);\n      if (this.fsw.closed) return;\n    }\n\n    closer = this._watchWithNodeFs(dir, (dirPath, stats) => {\n      // if current directory is removed, do nothing\n      if (stats && stats.mtimeMs === 0) return;\n\n      this._handleRead(dirPath, false, wh, target, dir, depth, throttler);\n    });\n  }\n  return closer;\n}\n\n/**\n * Handle added file, directory, or glob pattern.\n * Delegates call to _handleFile / _handleDir after checks.\n * @param {String} path to file or ir\n * @param {Boolean} initialAdd was the file added at watch instantiation?\n * @param {Object} priorWh depth relative to user-supplied path\n * @param {Number} depth Child path actually targeted for watch\n * @param {String=} target Child path actually targeted for watch\n * @returns {Promise}\n */\nasync _addToNodeFs(path, initialAdd, priorWh, depth, target) {\n  const ready = this.fsw._emitReady;\n  if (this.fsw._isIgnored(path) || this.fsw.closed) {\n    ready();\n    return false;\n  }\n\n  const wh = this.fsw._getWatchHelpers(path, depth);\n  if (!wh.hasGlob && priorWh) {\n    wh.hasGlob = priorWh.hasGlob;\n    wh.globFilter = priorWh.globFilter;\n    wh.filterPath = entry => priorWh.filterPath(entry);\n    wh.filterDir = entry => priorWh.filterDir(entry);\n  }\n\n  // evaluate what is at the path we're being asked to watch\n  try {\n    const stats = await statMethods[wh.statMethod](wh.watchPath);\n    if (this.fsw.closed) return;\n    if (this.fsw._isIgnored(wh.watchPath, stats)) {\n      ready();\n      return false;\n    }\n\n    const follow = this.fsw.options.followSymlinks && !path.includes(STAR) && !path.includes(BRACE_START);\n    let closer;\n    if (stats.isDirectory()) {\n      const absPath = sysPath.resolve(path);\n      const targetPath = follow ? await fsrealpath(path) : path;\n      if (this.fsw.closed) return;\n      closer = await this._handleDir(wh.watchPath, stats, initialAdd, depth, target, wh, targetPath);\n      if (this.fsw.closed) return;\n      // preserve this symlink's target path\n      if (absPath !== targetPath && targetPath !== undefined) {\n        this.fsw._symlinkPaths.set(absPath, targetPath);\n      }\n    } else if (stats.isSymbolicLink()) {\n      const targetPath = follow ? await fsrealpath(path) : path;\n      if (this.fsw.closed) return;\n      const parent = sysPath.dirname(wh.watchPath);\n      this.fsw._getWatchedDir(parent).add(wh.watchPath);\n      this.fsw._emit(EV_ADD, wh.watchPath, stats);\n      closer = await this._handleDir(parent, stats, initialAdd, depth, path, wh, targetPath);\n      if (this.fsw.closed) return;\n\n      // preserve this symlink's target path\n      if (targetPath !== undefined) {\n        this.fsw._symlinkPaths.set(sysPath.resolve(path), targetPath);\n      }\n    } else {\n      closer = this._handleFile(wh.watchPath, stats, initialAdd);\n    }\n    ready();\n\n    this.fsw._addPathCloser(path, closer);\n    return false;\n\n  } catch (error) {\n    if (this.fsw._handleError(error)) {\n      ready();\n      return path;\n    }\n  }\n}\n\n}\n\nmodule.exports = NodeFsHandler;\n", "'use strict';\n\nconst fs = require('fs');\nconst sysPath = require('path');\nconst { promisify } = require('util');\n\nlet fsevents;\ntry {\n  fsevents = require('fsevents');\n} catch (error) {\n  if (process.env.CHOKIDAR_PRINT_FSEVENTS_REQUIRE_ERROR) console.error(error);\n}\n\nif (fsevents) {\n  // TODO: real check\n  const mtch = process.version.match(/v(\\d+)\\.(\\d+)/);\n  if (mtch && mtch[1] && mtch[2]) {\n    const maj = Number.parseInt(mtch[1], 10);\n    const min = Number.parseInt(mtch[2], 10);\n    if (maj === 8 && min < 16) {\n      fsevents = undefined;\n    }\n  }\n}\n\nconst {\n  EV_ADD,\n  EV_CHANGE,\n  EV_ADD_DIR,\n  EV_UNLINK,\n  EV_ERROR,\n  STR_DATA,\n  STR_END,\n  FSEVENT_CREATED,\n  FSEVENT_MODIFIED,\n  FSEVENT_DELETED,\n  FSEVENT_MOVED,\n  // FSEVENT_CLONED,\n  FSEVENT_UNKNOWN,\n  FSEVENT_FLAG_MUST_SCAN_SUBDIRS,\n  FSEVENT_TYPE_FILE,\n  FSEVENT_TYPE_DIRECTORY,\n  FSEVENT_TYPE_SYMLINK,\n\n  ROOT_GLOBSTAR,\n  DIR_SUFFIX,\n  DOT_SLASH,\n  FUNCTION_TYPE,\n  EMPTY_FN,\n  IDENTITY_FN\n} = require('./constants');\n\nconst Depth = (value) => isNaN(value) ? {} : {depth: value};\n\nconst stat = promisify(fs.stat);\nconst lstat = promisify(fs.lstat);\nconst realpath = promisify(fs.realpath);\n\nconst statMethods = { stat, lstat };\n\n/**\n * @typedef {String} Path\n */\n\n/**\n * @typedef {Object} FsEventsWatchContainer\n * @property {Set<Function>} listeners\n * @property {Function} rawEmitter\n * @property {{stop: Function}} watcher\n */\n\n// fsevents instance helper functions\n/**\n * Object to hold per-process fsevents instances (may be shared across chokidar FSWatcher instances)\n * @type {Map<Path,FsEventsWatchContainer>}\n */\nconst FSEventsWatchers = new Map();\n\n// Threshold of duplicate path prefixes at which to start\n// consolidating going forward\nconst consolidateThreshhold = 10;\n\nconst wrongEventFlags = new Set([\n  69888, 70400, 71424, 72704, 73472, 131328, 131840, 262912\n]);\n\n/**\n * Instantiates the fsevents interface\n * @param {Path} path path to be watched\n * @param {Function} callback called when fsevents is bound and ready\n * @returns {{stop: Function}} new fsevents instance\n */\nconst createFSEventsInstance = (path, callback) => {\n  const stop = fsevents.watch(path, callback);\n  return {stop};\n};\n\n/**\n * Instantiates the fsevents interface or binds listeners to an existing one covering\n * the same file tree.\n * @param {Path} path           - to be watched\n * @param {Path} realPath       - real path for symlinks\n * @param {Function} listener   - called when fsevents emits events\n * @param {Function} rawEmitter - passes data to listeners of the 'raw' event\n * @returns {Function} closer\n */\nfunction setFSEventsListener(path, realPath, listener, rawEmitter) {\n  let watchPath = sysPath.extname(realPath) ? sysPath.dirname(realPath) : realPath;\n\n  const parentPath = sysPath.dirname(watchPath);\n  let cont = FSEventsWatchers.get(watchPath);\n\n  // If we've accumulated a substantial number of paths that\n  // could have been consolidated by watching one directory\n  // above the current one, create a watcher on the parent\n  // path instead, so that we do consolidate going forward.\n  if (couldConsolidate(parentPath)) {\n    watchPath = parentPath;\n  }\n\n  const resolvedPath = sysPath.resolve(path);\n  const hasSymlink = resolvedPath !== realPath;\n\n  const filteredListener = (fullPath, flags, info) => {\n    if (hasSymlink) fullPath = fullPath.replace(realPath, resolvedPath);\n    if (\n      fullPath === resolvedPath ||\n      !fullPath.indexOf(resolvedPath + sysPath.sep)\n    ) listener(fullPath, flags, info);\n  };\n\n  // check if there is already a watcher on a parent path\n  // modifies `watchPath` to the parent path when it finds a match\n  let watchedParent = false;\n  for (const watchedPath of FSEventsWatchers.keys()) {\n    if (realPath.indexOf(sysPath.resolve(watchedPath) + sysPath.sep) === 0) {\n      watchPath = watchedPath;\n      cont = FSEventsWatchers.get(watchPath);\n      watchedParent = true;\n      break;\n    }\n  }\n\n  if (cont || watchedParent) {\n    cont.listeners.add(filteredListener);\n  } else {\n    cont = {\n      listeners: new Set([filteredListener]),\n      rawEmitter,\n      watcher: createFSEventsInstance(watchPath, (fullPath, flags) => {\n        if (!cont.listeners.size) return;\n        if (flags & FSEVENT_FLAG_MUST_SCAN_SUBDIRS) return;\n        const info = fsevents.getInfo(fullPath, flags);\n        cont.listeners.forEach(list => {\n          list(fullPath, flags, info);\n        });\n\n        cont.rawEmitter(info.event, fullPath, info);\n      })\n    };\n    FSEventsWatchers.set(watchPath, cont);\n  }\n\n  // removes this instance's listeners and closes the underlying fsevents\n  // instance if there are no more listeners left\n  return () => {\n    const lst = cont.listeners;\n\n    lst.delete(filteredListener);\n    if (!lst.size) {\n      FSEventsWatchers.delete(watchPath);\n      if (cont.watcher) return cont.watcher.stop().then(() => {\n        cont.rawEmitter = cont.watcher = undefined;\n        Object.freeze(cont);\n      });\n    }\n  };\n}\n\n// Decide whether or not we should start a new higher-level\n// parent watcher\nconst couldConsolidate = (path) => {\n  let count = 0;\n  for (const watchPath of FSEventsWatchers.keys()) {\n    if (watchPath.indexOf(path) === 0) {\n      count++;\n      if (count >= consolidateThreshhold) {\n        return true;\n      }\n    }\n  }\n\n  return false;\n};\n\n// returns boolean indicating whether fsevents can be used\nconst canUse = () => fsevents && FSEventsWatchers.size < 128;\n\n// determines subdirectory traversal levels from root to path\nconst calcDepth = (path, root) => {\n  let i = 0;\n  while (!path.indexOf(root) && (path = sysPath.dirname(path)) !== root) i++;\n  return i;\n};\n\n// returns boolean indicating whether the fsevents' event info has the same type\n// as the one returned by fs.stat\nconst sameTypes = (info, stats) => (\n  info.type === FSEVENT_TYPE_DIRECTORY && stats.isDirectory() ||\n  info.type === FSEVENT_TYPE_SYMLINK && stats.isSymbolicLink() ||\n  info.type === FSEVENT_TYPE_FILE && stats.isFile()\n)\n\n/**\n * @mixin\n */\nclass FsEventsHandler {\n\n/**\n * @param {import('../index').FSWatcher} fsw\n */\nconstructor(fsw) {\n  this.fsw = fsw;\n}\ncheckIgnored(path, stats) {\n  const ipaths = this.fsw._ignoredPaths;\n  if (this.fsw._isIgnored(path, stats)) {\n    ipaths.add(path);\n    if (stats && stats.isDirectory()) {\n      ipaths.add(path + ROOT_GLOBSTAR);\n    }\n    return true;\n  }\n\n  ipaths.delete(path);\n  ipaths.delete(path + ROOT_GLOBSTAR);\n}\n\naddOrChange(path, fullPath, realPath, parent, watchedDir, item, info, opts) {\n  const event = watchedDir.has(item) ? EV_CHANGE : EV_ADD;\n  this.handleEvent(event, path, fullPath, realPath, parent, watchedDir, item, info, opts);\n}\n\nasync checkExists(path, fullPath, realPath, parent, watchedDir, item, info, opts) {\n  try {\n    const stats = await stat(path)\n    if (this.fsw.closed) return;\n    if (sameTypes(info, stats)) {\n      this.addOrChange(path, fullPath, realPath, parent, watchedDir, item, info, opts);\n    } else {\n      this.handleEvent(EV_UNLINK, path, fullPath, realPath, parent, watchedDir, item, info, opts);\n    }\n  } catch (error) {\n    if (error.code === 'EACCES') {\n      this.addOrChange(path, fullPath, realPath, parent, watchedDir, item, info, opts);\n    } else {\n      this.handleEvent(EV_UNLINK, path, fullPath, realPath, parent, watchedDir, item, info, opts);\n    }\n  }\n}\n\nhandleEvent(event, path, fullPath, realPath, parent, watchedDir, item, info, opts) {\n  if (this.fsw.closed || this.checkIgnored(path)) return;\n\n  if (event === EV_UNLINK) {\n    const isDirectory = info.type === FSEVENT_TYPE_DIRECTORY\n    // suppress unlink events on never before seen files\n    if (isDirectory || watchedDir.has(item)) {\n      this.fsw._remove(parent, item, isDirectory);\n    }\n  } else {\n    if (event === EV_ADD) {\n      // track new directories\n      if (info.type === FSEVENT_TYPE_DIRECTORY) this.fsw._getWatchedDir(path);\n\n      if (info.type === FSEVENT_TYPE_SYMLINK && opts.followSymlinks) {\n        // push symlinks back to the top of the stack to get handled\n        const curDepth = opts.depth === undefined ?\n          undefined : calcDepth(fullPath, realPath) + 1;\n        return this._addToFsEvents(path, false, true, curDepth);\n      }\n\n      // track new paths\n      // (other than symlinks being followed, which will be tracked soon)\n      this.fsw._getWatchedDir(parent).add(item);\n    }\n    /**\n     * @type {'add'|'addDir'|'unlink'|'unlinkDir'}\n     */\n    const eventName = info.type === FSEVENT_TYPE_DIRECTORY ? event + DIR_SUFFIX : event;\n    this.fsw._emit(eventName, path);\n    if (eventName === EV_ADD_DIR) this._addToFsEvents(path, false, true);\n  }\n}\n\n/**\n * Handle symlinks encountered during directory scan\n * @param {String} watchPath  - file/dir path to be watched with fsevents\n * @param {String} realPath   - real path (in case of symlinks)\n * @param {Function} transform  - path transformer\n * @param {Function} globFilter - path filter in case a glob pattern was provided\n * @returns {Function} closer for the watcher instance\n*/\n_watchWithFsEvents(watchPath, realPath, transform, globFilter) {\n  if (this.fsw.closed || this.fsw._isIgnored(watchPath)) return;\n  const opts = this.fsw.options;\n  const watchCallback = async (fullPath, flags, info) => {\n    if (this.fsw.closed) return;\n    if (\n      opts.depth !== undefined &&\n      calcDepth(fullPath, realPath) > opts.depth\n    ) return;\n    const path = transform(sysPath.join(\n      watchPath, sysPath.relative(watchPath, fullPath)\n    ));\n    if (globFilter && !globFilter(path)) return;\n    // ensure directories are tracked\n    const parent = sysPath.dirname(path);\n    const item = sysPath.basename(path);\n    const watchedDir = this.fsw._getWatchedDir(\n      info.type === FSEVENT_TYPE_DIRECTORY ? path : parent\n    );\n\n    // correct for wrong events emitted\n    if (wrongEventFlags.has(flags) || info.event === FSEVENT_UNKNOWN) {\n      if (typeof opts.ignored === FUNCTION_TYPE) {\n        let stats;\n        try {\n          stats = await stat(path);\n        } catch (error) {}\n        if (this.fsw.closed) return;\n        if (this.checkIgnored(path, stats)) return;\n        if (sameTypes(info, stats)) {\n          this.addOrChange(path, fullPath, realPath, parent, watchedDir, item, info, opts);\n        } else {\n          this.handleEvent(EV_UNLINK, path, fullPath, realPath, parent, watchedDir, item, info, opts);\n        }\n      } else {\n        this.checkExists(path, fullPath, realPath, parent, watchedDir, item, info, opts);\n      }\n    } else {\n      switch (info.event) {\n      case FSEVENT_CREATED:\n      case FSEVENT_MODIFIED:\n        return this.addOrChange(path, fullPath, realPath, parent, watchedDir, item, info, opts);\n      case FSEVENT_DELETED:\n      case FSEVENT_MOVED:\n        return this.checkExists(path, fullPath, realPath, parent, watchedDir, item, info, opts);\n      }\n    }\n  };\n\n  const closer = setFSEventsListener(\n    watchPath,\n    realPath,\n    watchCallback,\n    this.fsw._emitRaw\n  );\n\n  this.fsw._emitReady();\n  return closer;\n}\n\n/**\n * Handle symlinks encountered during directory scan\n * @param {String} linkPath path to symlink\n * @param {String} fullPath absolute path to the symlink\n * @param {Function} transform pre-existing path transformer\n * @param {Number} curDepth level of subdirectories traversed to where symlink is\n * @returns {Promise<void>}\n */\nasync _handleFsEventsSymlink(linkPath, fullPath, transform, curDepth) {\n  // don't follow the same symlink more than once\n  if (this.fsw.closed || this.fsw._symlinkPaths.has(fullPath)) return;\n\n  this.fsw._symlinkPaths.set(fullPath, true);\n  this.fsw._incrReadyCount();\n\n  try {\n    const linkTarget = await realpath(linkPath);\n    if (this.fsw.closed) return;\n    if (this.fsw._isIgnored(linkTarget)) {\n      return this.fsw._emitReady();\n    }\n\n    this.fsw._incrReadyCount();\n\n    // add the linkTarget for watching with a wrapper for transform\n    // that causes emitted paths to incorporate the link's path\n    this._addToFsEvents(linkTarget || linkPath, (path) => {\n      let aliasedPath = linkPath;\n      if (linkTarget && linkTarget !== DOT_SLASH) {\n        aliasedPath = path.replace(linkTarget, linkPath);\n      } else if (path !== DOT_SLASH) {\n        aliasedPath = sysPath.join(linkPath, path);\n      }\n      return transform(aliasedPath);\n    }, false, curDepth);\n  } catch(error) {\n    if (this.fsw._handleError(error)) {\n      return this.fsw._emitReady();\n    }\n  }\n}\n\n/**\n *\n * @param {Path} newPath\n * @param {fs.Stats} stats\n */\nemitAdd(newPath, stats, processPath, opts, forceAdd) {\n  const pp = processPath(newPath);\n  const isDir = stats.isDirectory();\n  const dirObj = this.fsw._getWatchedDir(sysPath.dirname(pp));\n  const base = sysPath.basename(pp);\n\n  // ensure empty dirs get tracked\n  if (isDir) this.fsw._getWatchedDir(pp);\n  if (dirObj.has(base)) return;\n  dirObj.add(base);\n\n  if (!opts.ignoreInitial || forceAdd === true) {\n    this.fsw._emit(isDir ? EV_ADD_DIR : EV_ADD, pp, stats);\n  }\n}\n\ninitWatch(realPath, path, wh, processPath) {\n  if (this.fsw.closed) return;\n  const closer = this._watchWithFsEvents(\n    wh.watchPath,\n    sysPath.resolve(realPath || wh.watchPath),\n    processPath,\n    wh.globFilter\n  );\n  this.fsw._addPathCloser(path, closer);\n}\n\n/**\n * Handle added path with fsevents\n * @param {String} path file/dir path or glob pattern\n * @param {Function|Boolean=} transform converts working path to what the user expects\n * @param {Boolean=} forceAdd ensure add is emitted\n * @param {Number=} priorDepth Level of subdirectories already traversed.\n * @returns {Promise<void>}\n */\nasync _addToFsEvents(path, transform, forceAdd, priorDepth) {\n  if (this.fsw.closed) {\n    return;\n  }\n  const opts = this.fsw.options;\n  const processPath = typeof transform === FUNCTION_TYPE ? transform : IDENTITY_FN;\n\n  const wh = this.fsw._getWatchHelpers(path);\n\n  // evaluate what is at the path we're being asked to watch\n  try {\n    const stats = await statMethods[wh.statMethod](wh.watchPath);\n    if (this.fsw.closed) return;\n    if (this.fsw._isIgnored(wh.watchPath, stats)) {\n      throw null;\n    }\n    if (stats.isDirectory()) {\n      // emit addDir unless this is a glob parent\n      if (!wh.globFilter) this.emitAdd(processPath(path), stats, processPath, opts, forceAdd);\n\n      // don't recurse further if it would exceed depth setting\n      if (priorDepth && priorDepth > opts.depth) return;\n\n      // scan the contents of the dir\n      this.fsw._readdirp(wh.watchPath, {\n        fileFilter: entry => wh.filterPath(entry),\n        directoryFilter: entry => wh.filterDir(entry),\n        ...Depth(opts.depth - (priorDepth || 0))\n      }).on(STR_DATA, (entry) => {\n        // need to check filterPath on dirs b/c filterDir is less restrictive\n        if (this.fsw.closed) {\n          return;\n        }\n        if (entry.stats.isDirectory() && !wh.filterPath(entry)) return;\n\n        const joinedPath = sysPath.join(wh.watchPath, entry.path);\n        const {fullPath} = entry;\n\n        if (wh.followSymlinks && entry.stats.isSymbolicLink()) {\n          // preserve the current depth here since it can't be derived from\n          // real paths past the symlink\n          const curDepth = opts.depth === undefined ?\n            undefined : calcDepth(joinedPath, sysPath.resolve(wh.watchPath)) + 1;\n\n          this._handleFsEventsSymlink(joinedPath, fullPath, processPath, curDepth);\n        } else {\n          this.emitAdd(joinedPath, entry.stats, processPath, opts, forceAdd);\n        }\n      }).on(EV_ERROR, EMPTY_FN).on(STR_END, () => {\n        this.fsw._emitReady();\n      });\n    } else {\n      this.emitAdd(wh.watchPath, stats, processPath, opts, forceAdd);\n      this.fsw._emitReady();\n    }\n  } catch (error) {\n    if (!error || this.fsw._handleError(error)) {\n      // TODO: Strange thing: \"should not choke on an ignored watch path\" will be failed without 2 ready calls -__-\n      this.fsw._emitReady();\n      this.fsw._emitReady();\n    }\n  }\n\n  if (opts.persistent && forceAdd !== true) {\n    if (typeof transform === FUNCTION_TYPE) {\n      // realpath has already been resolved\n      this.initWatch(undefined, path, wh, processPath);\n    } else {\n      let realPath;\n      try {\n        realPath = await realpath(wh.watchPath);\n      } catch (e) {}\n      this.initWatch(realPath, path, wh, processPath);\n    }\n  }\n}\n\n}\n\nmodule.exports = FsEventsHandler;\nmodule.exports.canUse = canUse;\n", "'use strict';\n\nconst { EventEmitter } = require('events');\nconst fs = require('fs');\nconst sysPath = require('path');\nconst { promisify } = require('util');\nconst readdirp = require('readdirp');\nconst anymatch = require('anymatch').default;\nconst globParent = require('glob-parent');\nconst isGlob = require('is-glob');\nconst braces = require('braces');\nconst normalizePath = require('normalize-path');\n\nconst NodeFsHandler = require('./lib/nodefs-handler');\nconst FsEventsHandler = require('./lib/fsevents-handler');\nconst {\n  EV_ALL,\n  EV_READY,\n  EV_ADD,\n  EV_CHANGE,\n  EV_UNLINK,\n  EV_ADD_DIR,\n  EV_UNLINK_DIR,\n  EV_RAW,\n  EV_ERROR,\n\n  STR_CLOSE,\n  STR_END,\n\n  BACK_SLASH_RE,\n  DOUBLE_SLASH_RE,\n  SLASH_OR_BACK_SLASH_RE,\n  DOT_RE,\n  REPLACER_RE,\n\n  SLASH,\n  SLASH_SLASH,\n  BRACE_START,\n  BANG,\n  ONE_DOT,\n  TWO_DOTS,\n  GLOBSTAR,\n  SLASH_GLOBSTAR,\n  ANYMATCH_OPTS,\n  STRING_TYPE,\n  FUNCTION_TYPE,\n  EMPTY_STR,\n  EMPTY_FN,\n\n  isWindows,\n  isMacos,\n  isIBMi\n} = require('./lib/constants');\n\nconst stat = promisify(fs.stat);\nconst readdir = promisify(fs.readdir);\n\n/**\n * @typedef {String} Path\n * @typedef {'all'|'add'|'addDir'|'change'|'unlink'|'unlinkDir'|'raw'|'error'|'ready'} EventName\n * @typedef {'readdir'|'watch'|'add'|'remove'|'change'} ThrottleType\n */\n\n/**\n *\n * @typedef {Object} WatchHelpers\n * @property {Boolean} followSymlinks\n * @property {'stat'|'lstat'} statMethod\n * @property {Path} path\n * @property {Path} watchPath\n * @property {Function} entryPath\n * @property {Boolean} hasGlob\n * @property {Object} globFilter\n * @property {Function} filterPath\n * @property {Function} filterDir\n */\n\nconst arrify = (value = []) => Array.isArray(value) ? value : [value];\nconst flatten = (list, result = []) => {\n  list.forEach(item => {\n    if (Array.isArray(item)) {\n      flatten(item, result);\n    } else {\n      result.push(item);\n    }\n  });\n  return result;\n};\n\nconst unifyPaths = (paths_) => {\n  /**\n   * @type {Array<String>}\n   */\n  const paths = flatten(arrify(paths_));\n  if (!paths.every(p => typeof p === STRING_TYPE)) {\n    throw new TypeError(`Non-string provided as watch path: ${paths}`);\n  }\n  return paths.map(normalizePathToUnix);\n};\n\n// If SLASH_SLASH occurs at the beginning of path, it is not replaced\n//     because \"//StoragePC/DrivePool/Movies\" is a valid network path\nconst toUnix = (string) => {\n  let str = string.replace(BACK_SLASH_RE, SLASH);\n  let prepend = false;\n  if (str.startsWith(SLASH_SLASH)) {\n    prepend = true;\n  }\n  while (str.match(DOUBLE_SLASH_RE)) {\n    str = str.replace(DOUBLE_SLASH_RE, SLASH);\n  }\n  if (prepend) {\n    str = SLASH + str;\n  }\n  return str;\n};\n\n// Our version of upath.normalize\n// TODO: this is not equal to path-normalize module - investigate why\nconst normalizePathToUnix = (path) => toUnix(sysPath.normalize(toUnix(path)));\n\nconst normalizeIgnored = (cwd = EMPTY_STR) => (path) => {\n  if (typeof path !== STRING_TYPE) return path;\n  return normalizePathToUnix(sysPath.isAbsolute(path) ? path : sysPath.join(cwd, path));\n};\n\nconst getAbsolutePath = (path, cwd) => {\n  if (sysPath.isAbsolute(path)) {\n    return path;\n  }\n  if (path.startsWith(BANG)) {\n    return BANG + sysPath.join(cwd, path.slice(1));\n  }\n  return sysPath.join(cwd, path);\n};\n\nconst undef = (opts, key) => opts[key] === undefined;\n\n/**\n * Directory entry.\n * @property {Path} path\n * @property {Set<Path>} items\n */\nclass DirEntry {\n  /**\n   * @param {Path} dir\n   * @param {Function} removeWatcher\n   */\n  constructor(dir, removeWatcher) {\n    this.path = dir;\n    this._removeWatcher = removeWatcher;\n    /** @type {Set<Path>} */\n    this.items = new Set();\n  }\n\n  add(item) {\n    const {items} = this;\n    if (!items) return;\n    if (item !== ONE_DOT && item !== TWO_DOTS) items.add(item);\n  }\n\n  async remove(item) {\n    const {items} = this;\n    if (!items) return;\n    items.delete(item);\n    if (items.size > 0) return;\n\n    const dir = this.path;\n    try {\n      await readdir(dir);\n    } catch (err) {\n      if (this._removeWatcher) {\n        this._removeWatcher(sysPath.dirname(dir), sysPath.basename(dir));\n      }\n    }\n  }\n\n  has(item) {\n    const {items} = this;\n    if (!items) return;\n    return items.has(item);\n  }\n\n  /**\n   * @returns {Array<String>}\n   */\n  getChildren() {\n    const {items} = this;\n    if (!items) return;\n    return [...items.values()];\n  }\n\n  dispose() {\n    this.items.clear();\n    delete this.path;\n    delete this._removeWatcher;\n    delete this.items;\n    Object.freeze(this);\n  }\n}\n\nconst STAT_METHOD_F = 'stat';\nconst STAT_METHOD_L = 'lstat';\nclass WatchHelper {\n  constructor(path, watchPath, follow, fsw) {\n    this.fsw = fsw;\n    this.path = path = path.replace(REPLACER_RE, EMPTY_STR);\n    this.watchPath = watchPath;\n    this.fullWatchPath = sysPath.resolve(watchPath);\n    this.hasGlob = watchPath !== path;\n    /** @type {object|boolean} */\n    if (path === EMPTY_STR) this.hasGlob = false;\n    this.globSymlink = this.hasGlob && follow ? undefined : false;\n    this.globFilter = this.hasGlob ? anymatch(path, undefined, ANYMATCH_OPTS) : false;\n    this.dirParts = this.getDirParts(path);\n    this.dirParts.forEach((parts) => {\n      if (parts.length > 1) parts.pop();\n    });\n    this.followSymlinks = follow;\n    this.statMethod = follow ? STAT_METHOD_F : STAT_METHOD_L;\n  }\n\n  checkGlobSymlink(entry) {\n    // only need to resolve once\n    // first entry should always have entry.parentDir === EMPTY_STR\n    if (this.globSymlink === undefined) {\n      this.globSymlink = entry.fullParentDir === this.fullWatchPath ?\n        false : {realPath: entry.fullParentDir, linkPath: this.fullWatchPath};\n    }\n\n    if (this.globSymlink) {\n      return entry.fullPath.replace(this.globSymlink.realPath, this.globSymlink.linkPath);\n    }\n\n    return entry.fullPath;\n  }\n\n  entryPath(entry) {\n    return sysPath.join(this.watchPath,\n      sysPath.relative(this.watchPath, this.checkGlobSymlink(entry))\n    );\n  }\n\n  filterPath(entry) {\n    const {stats} = entry;\n    if (stats && stats.isSymbolicLink()) return this.filterDir(entry);\n    const resolvedPath = this.entryPath(entry);\n    const matchesGlob = this.hasGlob && typeof this.globFilter === FUNCTION_TYPE ?\n      this.globFilter(resolvedPath) : true;\n    return matchesGlob &&\n      this.fsw._isntIgnored(resolvedPath, stats) &&\n      this.fsw._hasReadPermissions(stats);\n  }\n\n  getDirParts(path) {\n    if (!this.hasGlob) return [];\n    const parts = [];\n    const expandedPath = path.includes(BRACE_START) ? braces.expand(path) : [path];\n    expandedPath.forEach((path) => {\n      parts.push(sysPath.relative(this.watchPath, path).split(SLASH_OR_BACK_SLASH_RE));\n    });\n    return parts;\n  }\n\n  filterDir(entry) {\n    if (this.hasGlob) {\n      const entryParts = this.getDirParts(this.checkGlobSymlink(entry));\n      let globstar = false;\n      this.unmatchedGlob = !this.dirParts.some((parts) => {\n        return parts.every((part, i) => {\n          if (part === GLOBSTAR) globstar = true;\n          return globstar || !entryParts[0][i] || anymatch(part, entryParts[0][i], ANYMATCH_OPTS);\n        });\n      });\n    }\n    return !this.unmatchedGlob && this.fsw._isntIgnored(this.entryPath(entry), entry.stats);\n  }\n}\n\n/**\n * Watches files & directories for changes. Emitted events:\n * `add`, `addDir`, `change`, `unlink`, `unlinkDir`, `all`, `error`\n *\n *     new FSWatcher()\n *       .add(directories)\n *       .on('add', path => log('File', path, 'was added'))\n */\nclass FSWatcher extends EventEmitter {\n// Not indenting methods for history sake; for now.\nconstructor(_opts) {\n  super();\n\n  const opts = {};\n  if (_opts) Object.assign(opts, _opts); // for frozen objects\n\n  /** @type {Map<String, DirEntry>} */\n  this._watched = new Map();\n  /** @type {Map<String, Array>} */\n  this._closers = new Map();\n  /** @type {Set<String>} */\n  this._ignoredPaths = new Set();\n\n  /** @type {Map<ThrottleType, Map>} */\n  this._throttled = new Map();\n\n  /** @type {Map<Path, String|Boolean>} */\n  this._symlinkPaths = new Map();\n\n  this._streams = new Set();\n  this.closed = false;\n\n  // Set up default options.\n  if (undef(opts, 'persistent')) opts.persistent = true;\n  if (undef(opts, 'ignoreInitial')) opts.ignoreInitial = false;\n  if (undef(opts, 'ignorePermissionErrors')) opts.ignorePermissionErrors = false;\n  if (undef(opts, 'interval')) opts.interval = 100;\n  if (undef(opts, 'binaryInterval')) opts.binaryInterval = 300;\n  if (undef(opts, 'disableGlobbing')) opts.disableGlobbing = false;\n  opts.enableBinaryInterval = opts.binaryInterval !== opts.interval;\n\n  // Enable fsevents on OS X when polling isn't explicitly enabled.\n  if (undef(opts, 'useFsEvents')) opts.useFsEvents = !opts.usePolling;\n\n  // If we can't use fsevents, ensure the options reflect it's disabled.\n  const canUseFsEvents = FsEventsHandler.canUse();\n  if (!canUseFsEvents) opts.useFsEvents = false;\n\n  // Use polling on Mac if not using fsevents.\n  // Other platforms use non-polling fs_watch.\n  if (undef(opts, 'usePolling') && !opts.useFsEvents) {\n    opts.usePolling = isMacos;\n  }\n\n  // Always default to polling on IBM i because fs.watch() is not available on IBM i.\n  if(isIBMi) {\n    opts.usePolling = true;\n  }\n\n  // Global override (useful for end-developers that need to force polling for all\n  // instances of chokidar, regardless of usage/dependency depth)\n  const envPoll = process.env.CHOKIDAR_USEPOLLING;\n  if (envPoll !== undefined) {\n    const envLower = envPoll.toLowerCase();\n\n    if (envLower === 'false' || envLower === '0') {\n      opts.usePolling = false;\n    } else if (envLower === 'true' || envLower === '1') {\n      opts.usePolling = true;\n    } else {\n      opts.usePolling = !!envLower;\n    }\n  }\n  const envInterval = process.env.CHOKIDAR_INTERVAL;\n  if (envInterval) {\n    opts.interval = Number.parseInt(envInterval, 10);\n  }\n\n  // Editor atomic write normalization enabled by default with fs.watch\n  if (undef(opts, 'atomic')) opts.atomic = !opts.usePolling && !opts.useFsEvents;\n  if (opts.atomic) this._pendingUnlinks = new Map();\n\n  if (undef(opts, 'followSymlinks')) opts.followSymlinks = true;\n\n  if (undef(opts, 'awaitWriteFinish')) opts.awaitWriteFinish = false;\n  if (opts.awaitWriteFinish === true) opts.awaitWriteFinish = {};\n  const awf = opts.awaitWriteFinish;\n  if (awf) {\n    if (!awf.stabilityThreshold) awf.stabilityThreshold = 2000;\n    if (!awf.pollInterval) awf.pollInterval = 100;\n    this._pendingWrites = new Map();\n  }\n  if (opts.ignored) opts.ignored = arrify(opts.ignored);\n\n  let readyCalls = 0;\n  this._emitReady = () => {\n    readyCalls++;\n    if (readyCalls >= this._readyCount) {\n      this._emitReady = EMPTY_FN;\n      this._readyEmitted = true;\n      // use process.nextTick to allow time for listener to be bound\n      process.nextTick(() => this.emit(EV_READY));\n    }\n  };\n  this._emitRaw = (...args) => this.emit(EV_RAW, ...args);\n  this._readyEmitted = false;\n  this.options = opts;\n\n  // Initialize with proper watcher.\n  if (opts.useFsEvents) {\n    this._fsEventsHandler = new FsEventsHandler(this);\n  } else {\n    this._nodeFsHandler = new NodeFsHandler(this);\n  }\n\n  // You\u2019re frozen when your heart\u2019s not open.\n  Object.freeze(opts);\n}\n\n// Public methods\n\n/**\n * Adds paths to be watched on an existing FSWatcher instance\n * @param {Path|Array<Path>} paths_\n * @param {String=} _origAdd private; for handling non-existent paths to be watched\n * @param {Boolean=} _internal private; indicates a non-user add\n * @returns {FSWatcher} for chaining\n */\nadd(paths_, _origAdd, _internal) {\n  const {cwd, disableGlobbing} = this.options;\n  this.closed = false;\n  let paths = unifyPaths(paths_);\n  if (cwd) {\n    paths = paths.map((path) => {\n      const absPath = getAbsolutePath(path, cwd);\n\n      // Check `path` instead of `absPath` because the cwd portion can't be a glob\n      if (disableGlobbing || !isGlob(path)) {\n        return absPath;\n      }\n      return normalizePath(absPath);\n    });\n  }\n\n  // set aside negated glob strings\n  paths = paths.filter((path) => {\n    if (path.startsWith(BANG)) {\n      this._ignoredPaths.add(path.slice(1));\n      return false;\n    }\n\n    // if a path is being added that was previously ignored, stop ignoring it\n    this._ignoredPaths.delete(path);\n    this._ignoredPaths.delete(path + SLASH_GLOBSTAR);\n\n    // reset the cached userIgnored anymatch fn\n    // to make ignoredPaths changes effective\n    this._userIgnored = undefined;\n\n    return true;\n  });\n\n  if (this.options.useFsEvents && this._fsEventsHandler) {\n    if (!this._readyCount) this._readyCount = paths.length;\n    if (this.options.persistent) this._readyCount += paths.length;\n    paths.forEach((path) => this._fsEventsHandler._addToFsEvents(path));\n  } else {\n    if (!this._readyCount) this._readyCount = 0;\n    this._readyCount += paths.length;\n    Promise.all(\n      paths.map(async path => {\n        const res = await this._nodeFsHandler._addToNodeFs(path, !_internal, 0, 0, _origAdd);\n        if (res) this._emitReady();\n        return res;\n      })\n    ).then(results => {\n      if (this.closed) return;\n      results.filter(item => item).forEach(item => {\n        this.add(sysPath.dirname(item), sysPath.basename(_origAdd || item));\n      });\n    });\n  }\n\n  return this;\n}\n\n/**\n * Close watchers or start ignoring events from specified paths.\n * @param {Path|Array<Path>} paths_ - string or array of strings, file/directory paths and/or globs\n * @returns {FSWatcher} for chaining\n*/\nunwatch(paths_) {\n  if (this.closed) return this;\n  const paths = unifyPaths(paths_);\n  const {cwd} = this.options;\n\n  paths.forEach((path) => {\n    // convert to absolute path unless relative path already matches\n    if (!sysPath.isAbsolute(path) && !this._closers.has(path)) {\n      if (cwd) path = sysPath.join(cwd, path);\n      path = sysPath.resolve(path);\n    }\n\n    this._closePath(path);\n\n    this._ignoredPaths.add(path);\n    if (this._watched.has(path)) {\n      this._ignoredPaths.add(path + SLASH_GLOBSTAR);\n    }\n\n    // reset the cached userIgnored anymatch fn\n    // to make ignoredPaths changes effective\n    this._userIgnored = undefined;\n  });\n\n  return this;\n}\n\n/**\n * Close watchers and remove all listeners from watched paths.\n * @returns {Promise<void>}.\n*/\nclose() {\n  if (this.closed) return this._closePromise;\n  this.closed = true;\n\n  // Memory management.\n  this.removeAllListeners();\n  const closers = [];\n  this._closers.forEach(closerList => closerList.forEach(closer => {\n    const promise = closer();\n    if (promise instanceof Promise) closers.push(promise);\n  }));\n  this._streams.forEach(stream => stream.destroy());\n  this._userIgnored = undefined;\n  this._readyCount = 0;\n  this._readyEmitted = false;\n  this._watched.forEach(dirent => dirent.dispose());\n  ['closers', 'watched', 'streams', 'symlinkPaths', 'throttled'].forEach(key => {\n    this[`_${key}`].clear();\n  });\n\n  this._closePromise = closers.length ? Promise.all(closers).then(() => undefined) : Promise.resolve();\n  return this._closePromise;\n}\n\n/**\n * Expose list of watched paths\n * @returns {Object} for chaining\n*/\ngetWatched() {\n  const watchList = {};\n  this._watched.forEach((entry, dir) => {\n    const key = this.options.cwd ? sysPath.relative(this.options.cwd, dir) : dir;\n    watchList[key || ONE_DOT] = entry.getChildren().sort();\n  });\n  return watchList;\n}\n\nemitWithAll(event, args) {\n  this.emit(...args);\n  if (event !== EV_ERROR) this.emit(EV_ALL, ...args);\n}\n\n// Common helpers\n// --------------\n\n/**\n * Normalize and emit events.\n * Calling _emit DOES NOT MEAN emit() would be called!\n * @param {EventName} event Type of event\n * @param {Path} path File or directory path\n * @param {*=} val1 arguments to be passed with event\n * @param {*=} val2\n * @param {*=} val3\n * @returns the error if defined, otherwise the value of the FSWatcher instance's `closed` flag\n */\nasync _emit(event, path, val1, val2, val3) {\n  if (this.closed) return;\n\n  const opts = this.options;\n  if (isWindows) path = sysPath.normalize(path);\n  if (opts.cwd) path = sysPath.relative(opts.cwd, path);\n  /** @type Array<any> */\n  const args = [event, path];\n  if (val3 !== undefined) args.push(val1, val2, val3);\n  else if (val2 !== undefined) args.push(val1, val2);\n  else if (val1 !== undefined) args.push(val1);\n\n  const awf = opts.awaitWriteFinish;\n  let pw;\n  if (awf && (pw = this._pendingWrites.get(path))) {\n    pw.lastChange = new Date();\n    return this;\n  }\n\n  if (opts.atomic) {\n    if (event === EV_UNLINK) {\n      this._pendingUnlinks.set(path, args);\n      setTimeout(() => {\n        this._pendingUnlinks.forEach((entry, path) => {\n          this.emit(...entry);\n          this.emit(EV_ALL, ...entry);\n          this._pendingUnlinks.delete(path);\n        });\n      }, typeof opts.atomic === 'number' ? opts.atomic : 100);\n      return this;\n    }\n    if (event === EV_ADD && this._pendingUnlinks.has(path)) {\n      event = args[0] = EV_CHANGE;\n      this._pendingUnlinks.delete(path);\n    }\n  }\n\n  if (awf && (event === EV_ADD || event === EV_CHANGE) && this._readyEmitted) {\n    const awfEmit = (err, stats) => {\n      if (err) {\n        event = args[0] = EV_ERROR;\n        args[1] = err;\n        this.emitWithAll(event, args);\n      } else if (stats) {\n        // if stats doesn't exist the file must have been deleted\n        if (args.length > 2) {\n          args[2] = stats;\n        } else {\n          args.push(stats);\n        }\n        this.emitWithAll(event, args);\n      }\n    };\n\n    this._awaitWriteFinish(path, awf.stabilityThreshold, event, awfEmit);\n    return this;\n  }\n\n  if (event === EV_CHANGE) {\n    const isThrottled = !this._throttle(EV_CHANGE, path, 50);\n    if (isThrottled) return this;\n  }\n\n  if (opts.alwaysStat && val1 === undefined &&\n    (event === EV_ADD || event === EV_ADD_DIR || event === EV_CHANGE)\n  ) {\n    const fullPath = opts.cwd ? sysPath.join(opts.cwd, path) : path;\n    let stats;\n    try {\n      stats = await stat(fullPath);\n    } catch (err) {}\n    // Suppress event when fs_stat fails, to avoid sending undefined 'stat'\n    if (!stats || this.closed) return;\n    args.push(stats);\n  }\n  this.emitWithAll(event, args);\n\n  return this;\n}\n\n/**\n * Common handler for errors\n * @param {Error} error\n * @returns {Error|Boolean} The error if defined, otherwise the value of the FSWatcher instance's `closed` flag\n */\n_handleError(error) {\n  const code = error && error.code;\n  if (error && code !== 'ENOENT' && code !== 'ENOTDIR' &&\n    (!this.options.ignorePermissionErrors || (code !== 'EPERM' && code !== 'EACCES'))\n  ) {\n    this.emit(EV_ERROR, error);\n  }\n  return error || this.closed;\n}\n\n/**\n * Helper utility for throttling\n * @param {ThrottleType} actionType type being throttled\n * @param {Path} path being acted upon\n * @param {Number} timeout duration of time to suppress duplicate actions\n * @returns {Object|false} tracking object or false if action should be suppressed\n */\n_throttle(actionType, path, timeout) {\n  if (!this._throttled.has(actionType)) {\n    this._throttled.set(actionType, new Map());\n  }\n\n  /** @type {Map<Path, Object>} */\n  const action = this._throttled.get(actionType);\n  /** @type {Object} */\n  const actionPath = action.get(path);\n\n  if (actionPath) {\n    actionPath.count++;\n    return false;\n  }\n\n  let timeoutObject;\n  const clear = () => {\n    const item = action.get(path);\n    const count = item ? item.count : 0;\n    action.delete(path);\n    clearTimeout(timeoutObject);\n    if (item) clearTimeout(item.timeoutObject);\n    return count;\n  };\n  timeoutObject = setTimeout(clear, timeout);\n  const thr = {timeoutObject, clear, count: 0};\n  action.set(path, thr);\n  return thr;\n}\n\n_incrReadyCount() {\n  return this._readyCount++;\n}\n\n/**\n * Awaits write operation to finish.\n * Polls a newly created file for size variations. When files size does not change for 'threshold' milliseconds calls callback.\n * @param {Path} path being acted upon\n * @param {Number} threshold Time in milliseconds a file size must be fixed before acknowledging write OP is finished\n * @param {EventName} event\n * @param {Function} awfEmit Callback to be called when ready for event to be emitted.\n */\n_awaitWriteFinish(path, threshold, event, awfEmit) {\n  let timeoutHandler;\n\n  let fullPath = path;\n  if (this.options.cwd && !sysPath.isAbsolute(path)) {\n    fullPath = sysPath.join(this.options.cwd, path);\n  }\n\n  const now = new Date();\n\n  const awaitWriteFinish = (prevStat) => {\n    fs.stat(fullPath, (err, curStat) => {\n      if (err || !this._pendingWrites.has(path)) {\n        if (err && err.code !== 'ENOENT') awfEmit(err);\n        return;\n      }\n\n      const now = Number(new Date());\n\n      if (prevStat && curStat.size !== prevStat.size) {\n        this._pendingWrites.get(path).lastChange = now;\n      }\n      const pw = this._pendingWrites.get(path);\n      const df = now - pw.lastChange;\n\n      if (df >= threshold) {\n        this._pendingWrites.delete(path);\n        awfEmit(undefined, curStat);\n      } else {\n        timeoutHandler = setTimeout(\n          awaitWriteFinish,\n          this.options.awaitWriteFinish.pollInterval,\n          curStat\n        );\n      }\n    });\n  };\n\n  if (!this._pendingWrites.has(path)) {\n    this._pendingWrites.set(path, {\n      lastChange: now,\n      cancelWait: () => {\n        this._pendingWrites.delete(path);\n        clearTimeout(timeoutHandler);\n        return event;\n      }\n    });\n    timeoutHandler = setTimeout(\n      awaitWriteFinish,\n      this.options.awaitWriteFinish.pollInterval\n    );\n  }\n}\n\n_getGlobIgnored() {\n  return [...this._ignoredPaths.values()];\n}\n\n/**\n * Determines whether user has asked to ignore this path.\n * @param {Path} path filepath or dir\n * @param {fs.Stats=} stats result of fs.stat\n * @returns {Boolean}\n */\n_isIgnored(path, stats) {\n  if (this.options.atomic && DOT_RE.test(path)) return true;\n  if (!this._userIgnored) {\n    const {cwd} = this.options;\n    const ign = this.options.ignored;\n\n    const ignored = ign && ign.map(normalizeIgnored(cwd));\n    const paths = arrify(ignored)\n      .filter((path) => typeof path === STRING_TYPE && !isGlob(path))\n      .map((path) => path + SLASH_GLOBSTAR);\n    const list = this._getGlobIgnored().map(normalizeIgnored(cwd)).concat(ignored, paths);\n    this._userIgnored = anymatch(list, undefined, ANYMATCH_OPTS);\n  }\n\n  return this._userIgnored([path, stats]);\n}\n\n_isntIgnored(path, stat) {\n  return !this._isIgnored(path, stat);\n}\n\n/**\n * Provides a set of common helpers and properties relating to symlink and glob handling.\n * @param {Path} path file, directory, or glob pattern being watched\n * @param {Number=} depth at any depth > 0, this isn't a glob\n * @returns {WatchHelper} object containing helpers for this path\n */\n_getWatchHelpers(path, depth) {\n  const watchPath = depth || this.options.disableGlobbing || !isGlob(path) ? path : globParent(path);\n  const follow = this.options.followSymlinks;\n\n  return new WatchHelper(path, watchPath, follow, this);\n}\n\n// Directory helpers\n// -----------------\n\n/**\n * Provides directory tracking objects\n * @param {String} directory path of the directory\n * @returns {DirEntry} the directory's tracking object\n */\n_getWatchedDir(directory) {\n  if (!this._boundRemove) this._boundRemove = this._remove.bind(this);\n  const dir = sysPath.resolve(directory);\n  if (!this._watched.has(dir)) this._watched.set(dir, new DirEntry(dir, this._boundRemove));\n  return this._watched.get(dir);\n}\n\n// File helpers\n// ------------\n\n/**\n * Check for read permissions.\n * Based on this answer on SO: https://stackoverflow.com/a/11781404/1358405\n * @param {fs.Stats} stats - object, result of fs_stat\n * @returns {Boolean} indicates whether the file can be read\n*/\n_hasReadPermissions(stats) {\n  if (this.options.ignorePermissionErrors) return true;\n\n  // stats.mode may be bigint\n  const md = stats && Number.parseInt(stats.mode, 10);\n  const st = md & 0o777;\n  const it = Number.parseInt(st.toString(8)[0], 10);\n  return Boolean(4 & it);\n}\n\n/**\n * Handles emitting unlink events for\n * files and directories, and via recursion, for\n * files and directories within directories that are unlinked\n * @param {String} directory within which the following item is located\n * @param {String} item      base path of item/directory\n * @returns {void}\n*/\n_remove(directory, item, isDirectory) {\n  // if what is being deleted is a directory, get that directory's paths\n  // for recursive deleting and cleaning of watched object\n  // if it is not a directory, nestedDirectoryChildren will be empty array\n  const path = sysPath.join(directory, item);\n  const fullPath = sysPath.resolve(path);\n  isDirectory = isDirectory != null\n    ? isDirectory\n    : this._watched.has(path) || this._watched.has(fullPath);\n\n  // prevent duplicate handling in case of arriving here nearly simultaneously\n  // via multiple paths (such as _handleFile and _handleDir)\n  if (!this._throttle('remove', path, 100)) return;\n\n  // if the only watched file is removed, watch for its return\n  if (!isDirectory && !this.options.useFsEvents && this._watched.size === 1) {\n    this.add(directory, item, true);\n  }\n\n  // This will create a new entry in the watched object in either case\n  // so we got to do the directory check beforehand\n  const wp = this._getWatchedDir(path);\n  const nestedDirectoryChildren = wp.getChildren();\n\n  // Recursively remove children directories / files.\n  nestedDirectoryChildren.forEach(nested => this._remove(path, nested));\n\n  // Check if item was on the watched list and remove it\n  const parent = this._getWatchedDir(directory);\n  const wasTracked = parent.has(item);\n  parent.remove(item);\n\n  // Fixes issue #1042 -> Relative paths were detected and added as symlinks\n  // (https://github.com/paulmillr/chokidar/blob/e1753ddbc9571bdc33b4a4af172d52cb6e611c10/lib/nodefs-handler.js#L612),\n  // but never removed from the map in case the path was deleted.\n  // This leads to an incorrect state if the path was recreated:\n  // https://github.com/paulmillr/chokidar/blob/e1753ddbc9571bdc33b4a4af172d52cb6e611c10/lib/nodefs-handler.js#L553\n  if (this._symlinkPaths.has(fullPath)) {\n    this._symlinkPaths.delete(fullPath);\n  }\n\n  // If we wait for this file to be fully written, cancel the wait.\n  let relPath = path;\n  if (this.options.cwd) relPath = sysPath.relative(this.options.cwd, path);\n  if (this.options.awaitWriteFinish && this._pendingWrites.has(relPath)) {\n    const event = this._pendingWrites.get(relPath).cancelWait();\n    if (event === EV_ADD) return;\n  }\n\n  // The Entry will either be a directory that just got removed\n  // or a bogus entry to a file, in either case we have to remove it\n  this._watched.delete(path);\n  this._watched.delete(fullPath);\n  const eventName = isDirectory ? EV_UNLINK_DIR : EV_UNLINK;\n  if (wasTracked && !this._isIgnored(path)) this._emit(eventName, path);\n\n  // Avoid conflicts if we later create another file with the same name\n  if (!this.options.useFsEvents) {\n    this._closePath(path);\n  }\n}\n\n/**\n * Closes all watchers for a path\n * @param {Path} path\n */\n_closePath(path) {\n  this._closeFile(path)\n  const dir = sysPath.dirname(path);\n  this._getWatchedDir(dir).remove(sysPath.basename(path));\n}\n\n/**\n * Closes only file-specific watchers\n * @param {Path} path\n */\n_closeFile(path) {\n  const closers = this._closers.get(path);\n  if (!closers) return;\n  closers.forEach(closer => closer());\n  this._closers.delete(path);\n}\n\n/**\n *\n * @param {Path} path\n * @param {Function} closer\n */\n_addPathCloser(path, closer) {\n  if (!closer) return;\n  let list = this._closers.get(path);\n  if (!list) {\n    list = [];\n    this._closers.set(path, list);\n  }\n  list.push(closer);\n}\n\n_readdirp(root, opts) {\n  if (this.closed) return;\n  const options = {type: EV_ALL, alwaysStat: true, lstat: true, ...opts};\n  let stream = readdirp(root, options);\n  this._streams.add(stream);\n  stream.once(STR_CLOSE, () => {\n    stream = undefined;\n  });\n  stream.once(STR_END, () => {\n    if (stream) {\n      this._streams.delete(stream);\n      stream = undefined;\n    }\n  });\n  return stream;\n}\n\n}\n\n// Export FSWatcher class\nexports.FSWatcher = FSWatcher;\n\n/**\n * Instantiates watcher with paths to be tracked.\n * @param {String|Array<String>} paths file/directory paths and/or globs\n * @param {Object=} options chokidar opts\n * @returns an instance of FSWatcher for chaining.\n */\nconst watch = (paths, options) => {\n  const watcher = new FSWatcher(options);\n  watcher.add(paths);\n  return watcher;\n};\n\nexports.watch = watch;\n", "'use strict'\nconst ParserEND = 0x110000\nclass ParserError extends Error {\n  /* istanbul ignore next */\n  constructor (msg, filename, linenumber) {\n    super('[ParserError] ' + msg, filename, linenumber)\n    this.name = 'ParserError'\n    this.code = 'ParserError'\n    if (Error.captureStackTrace) Error.captureStackTrace(this, ParserError)\n  }\n}\nclass State {\n  constructor (parser) {\n    this.parser = parser\n    this.buf = ''\n    this.returned = null\n    this.result = null\n    this.resultTable = null\n    this.resultArr = null\n  }\n}\nclass Parser {\n  constructor () {\n    this.pos = 0\n    this.col = 0\n    this.line = 0\n    this.obj = {}\n    this.ctx = this.obj\n    this.stack = []\n    this._buf = ''\n    this.char = null\n    this.ii = 0\n    this.state = new State(this.parseStart)\n  }\n\n  parse (str) {\n    /* istanbul ignore next */\n    if (str.length === 0 || str.length == null) return\n\n    this._buf = String(str)\n    this.ii = -1\n    this.char = -1\n    let getNext\n    while (getNext === false || this.nextChar()) {\n      getNext = this.runOne()\n    }\n    this._buf = null\n  }\n  nextChar () {\n    if (this.char === 0x0A) {\n      ++this.line\n      this.col = -1\n    }\n    ++this.ii\n    this.char = this._buf.codePointAt(this.ii)\n    ++this.pos\n    ++this.col\n    return this.haveBuffer()\n  }\n  haveBuffer () {\n    return this.ii < this._buf.length\n  }\n  runOne () {\n    return this.state.parser.call(this, this.state.returned)\n  }\n  finish () {\n    this.char = ParserEND\n    let last\n    do {\n      last = this.state.parser\n      this.runOne()\n    } while (this.state.parser !== last)\n\n    this.ctx = null\n    this.state = null\n    this._buf = null\n\n    return this.obj\n  }\n  next (fn) {\n    /* istanbul ignore next */\n    if (typeof fn !== 'function') throw new ParserError('Tried to set state to non-existent state: ' + JSON.stringify(fn))\n    this.state.parser = fn\n  }\n  goto (fn) {\n    this.next(fn)\n    return this.runOne()\n  }\n  call (fn, returnWith) {\n    if (returnWith) this.next(returnWith)\n    this.stack.push(this.state)\n    this.state = new State(fn)\n  }\n  callNow (fn, returnWith) {\n    this.call(fn, returnWith)\n    return this.runOne()\n  }\n  return (value) {\n    /* istanbul ignore next */\n    if (this.stack.length === 0) throw this.error(new ParserError('Stack underflow'))\n    if (value === undefined) value = this.state.buf\n    this.state = this.stack.pop()\n    this.state.returned = value\n  }\n  returnNow (value) {\n    this.return(value)\n    return this.runOne()\n  }\n  consume () {\n    /* istanbul ignore next */\n    if (this.char === ParserEND) throw this.error(new ParserError('Unexpected end-of-buffer'))\n    this.state.buf += this._buf[this.ii]\n  }\n  error (err) {\n    err.line = this.line\n    err.col = this.col\n    err.pos = this.pos\n    return err\n  }\n  /* istanbul ignore next */\n  parseStart () {\n    throw new ParserError('Must declare a parseStart method')\n  }\n}\nParser.END = ParserEND\nParser.Error = ParserError\nmodule.exports = Parser\n", "'use strict'\nmodule.exports = value => {\n  const date = new Date(value)\n  /* istanbul ignore if */\n  if (isNaN(date)) {\n    throw new TypeError('Invalid Datetime')\n  } else {\n    return date\n  }\n}\n", "'use strict'\nmodule.exports = (d, num) => {\n  num = String(num)\n  while (num.length < d) num = '0' + num\n  return num\n}\n", "'use strict'\nconst f = require('./format-num.js')\n\nclass FloatingDateTime extends Date {\n  constructor (value) {\n    super(value + 'Z')\n    this.isFloating = true\n  }\n  toISOString () {\n    const date = `${this.getUTCFullYear()}-${f(2, this.getUTCMonth() + 1)}-${f(2, this.getUTCDate())}`\n    const time = `${f(2, this.getUTCHours())}:${f(2, this.getUTCMinutes())}:${f(2, this.getUTCSeconds())}.${f(3, this.getUTCMilliseconds())}`\n    return `${date}T${time}`\n  }\n}\n\nmodule.exports = value => {\n  const date = new FloatingDateTime(value)\n  /* istanbul ignore if */\n  if (isNaN(date)) {\n    throw new TypeError('Invalid Datetime')\n  } else {\n    return date\n  }\n}\n", "'use strict'\nconst f = require('./format-num.js')\nconst DateTime = global.Date\n\nclass Date extends DateTime {\n  constructor (value) {\n    super(value)\n    this.isDate = true\n  }\n  toISOString () {\n    return `${this.getUTCFullYear()}-${f(2, this.getUTCMonth() + 1)}-${f(2, this.getUTCDate())}`\n  }\n}\n\nmodule.exports = value => {\n  const date = new Date(value)\n  /* istanbul ignore if */\n  if (isNaN(date)) {\n    throw new TypeError('Invalid Datetime')\n  } else {\n    return date\n  }\n}\n", "'use strict'\nconst f = require('./format-num.js')\n\nclass Time extends Date {\n  constructor (value) {\n    super(`0000-01-01T${value}Z`)\n    this.isTime = true\n  }\n  toISOString () {\n    return `${f(2, this.getUTCHours())}:${f(2, this.getUTCMinutes())}:${f(2, this.getUTCSeconds())}.${f(3, this.getUTCMilliseconds())}`\n  }\n}\n\nmodule.exports = value => {\n  const date = new Time(value)\n  /* istanbul ignore if */\n  if (isNaN(date)) {\n    throw new TypeError('Invalid Datetime')\n  } else {\n    return date\n  }\n}\n", "'use strict'\n/* eslint-disable no-new-wrappers, no-eval, camelcase, operator-linebreak */\nmodule.exports = makeParserClass(require('./parser.js'))\nmodule.exports.makeParserClass = makeParserClass\n\nclass TomlError extends Error {\n  constructor (msg) {\n    super(msg)\n    this.name = 'TomlError'\n    /* istanbul ignore next */\n    if (Error.captureStackTrace) Error.captureStackTrace(this, TomlError)\n    this.fromTOML = true\n    this.wrapped = null\n  }\n}\nTomlError.wrap = err => {\n  const terr = new TomlError(err.message)\n  terr.code = err.code\n  terr.wrapped = err\n  return terr\n}\nmodule.exports.TomlError = TomlError\n\nconst createDateTime = require('./create-datetime.js')\nconst createDateTimeFloat = require('./create-datetime-float.js')\nconst createDate = require('./create-date.js')\nconst createTime = require('./create-time.js')\n\nconst CTRL_I = 0x09\nconst CTRL_J = 0x0A\nconst CTRL_M = 0x0D\nconst CTRL_CHAR_BOUNDARY = 0x1F // the last non-character in the latin1 region of unicode, except DEL\nconst CHAR_SP = 0x20\nconst CHAR_QUOT = 0x22\nconst CHAR_NUM = 0x23\nconst CHAR_APOS = 0x27\nconst CHAR_PLUS = 0x2B\nconst CHAR_COMMA = 0x2C\nconst CHAR_HYPHEN = 0x2D\nconst CHAR_PERIOD = 0x2E\nconst CHAR_0 = 0x30\nconst CHAR_1 = 0x31\nconst CHAR_7 = 0x37\nconst CHAR_9 = 0x39\nconst CHAR_COLON = 0x3A\nconst CHAR_EQUALS = 0x3D\nconst CHAR_A = 0x41\nconst CHAR_E = 0x45\nconst CHAR_F = 0x46\nconst CHAR_T = 0x54\nconst CHAR_U = 0x55\nconst CHAR_Z = 0x5A\nconst CHAR_LOWBAR = 0x5F\nconst CHAR_a = 0x61\nconst CHAR_b = 0x62\nconst CHAR_e = 0x65\nconst CHAR_f = 0x66\nconst CHAR_i = 0x69\nconst CHAR_l = 0x6C\nconst CHAR_n = 0x6E\nconst CHAR_o = 0x6F\nconst CHAR_r = 0x72\nconst CHAR_s = 0x73\nconst CHAR_t = 0x74\nconst CHAR_u = 0x75\nconst CHAR_x = 0x78\nconst CHAR_z = 0x7A\nconst CHAR_LCUB = 0x7B\nconst CHAR_RCUB = 0x7D\nconst CHAR_LSQB = 0x5B\nconst CHAR_BSOL = 0x5C\nconst CHAR_RSQB = 0x5D\nconst CHAR_DEL = 0x7F\nconst SURROGATE_FIRST = 0xD800\nconst SURROGATE_LAST = 0xDFFF\n\nconst escapes = {\n  [CHAR_b]: '\\u0008',\n  [CHAR_t]: '\\u0009',\n  [CHAR_n]: '\\u000A',\n  [CHAR_f]: '\\u000C',\n  [CHAR_r]: '\\u000D',\n  [CHAR_QUOT]: '\\u0022',\n  [CHAR_BSOL]: '\\u005C'\n}\n\nfunction isDigit (cp) {\n  return cp >= CHAR_0 && cp <= CHAR_9\n}\nfunction isHexit (cp) {\n  return (cp >= CHAR_A && cp <= CHAR_F) || (cp >= CHAR_a && cp <= CHAR_f) || (cp >= CHAR_0 && cp <= CHAR_9)\n}\nfunction isBit (cp) {\n  return cp === CHAR_1 || cp === CHAR_0\n}\nfunction isOctit (cp) {\n  return (cp >= CHAR_0 && cp <= CHAR_7)\n}\nfunction isAlphaNumQuoteHyphen (cp) {\n  return (cp >= CHAR_A && cp <= CHAR_Z)\n      || (cp >= CHAR_a && cp <= CHAR_z)\n      || (cp >= CHAR_0 && cp <= CHAR_9)\n      || cp === CHAR_APOS\n      || cp === CHAR_QUOT\n      || cp === CHAR_LOWBAR\n      || cp === CHAR_HYPHEN\n}\nfunction isAlphaNumHyphen (cp) {\n  return (cp >= CHAR_A && cp <= CHAR_Z)\n      || (cp >= CHAR_a && cp <= CHAR_z)\n      || (cp >= CHAR_0 && cp <= CHAR_9)\n      || cp === CHAR_LOWBAR\n      || cp === CHAR_HYPHEN\n}\nconst _type = Symbol('type')\nconst _declared = Symbol('declared')\n\nconst hasOwnProperty = Object.prototype.hasOwnProperty\nconst defineProperty = Object.defineProperty\nconst descriptor = {configurable: true, enumerable: true, writable: true, value: undefined}\n\nfunction hasKey (obj, key) {\n  if (hasOwnProperty.call(obj, key)) return true\n  if (key === '__proto__') defineProperty(obj, '__proto__', descriptor)\n  return false\n}\n\nconst INLINE_TABLE = Symbol('inline-table')\nfunction InlineTable () {\n  return Object.defineProperties({}, {\n    [_type]: {value: INLINE_TABLE}\n  })\n}\nfunction isInlineTable (obj) {\n  if (obj === null || typeof (obj) !== 'object') return false\n  return obj[_type] === INLINE_TABLE\n}\n\nconst TABLE = Symbol('table')\nfunction Table () {\n  return Object.defineProperties({}, {\n    [_type]: {value: TABLE},\n    [_declared]: {value: false, writable: true}\n  })\n}\nfunction isTable (obj) {\n  if (obj === null || typeof (obj) !== 'object') return false\n  return obj[_type] === TABLE\n}\n\nconst _contentType = Symbol('content-type')\nconst INLINE_LIST = Symbol('inline-list')\nfunction InlineList (type) {\n  return Object.defineProperties([], {\n    [_type]: {value: INLINE_LIST},\n    [_contentType]: {value: type}\n  })\n}\nfunction isInlineList (obj) {\n  if (obj === null || typeof (obj) !== 'object') return false\n  return obj[_type] === INLINE_LIST\n}\n\nconst LIST = Symbol('list')\nfunction List () {\n  return Object.defineProperties([], {\n    [_type]: {value: LIST}\n  })\n}\nfunction isList (obj) {\n  if (obj === null || typeof (obj) !== 'object') return false\n  return obj[_type] === LIST\n}\n\n// in an eval, to let bundlers not slurp in a util proxy\nlet _custom\ntry {\n  const utilInspect = eval(\"require('util').inspect\")\n  _custom = utilInspect.custom\n} catch (_) {\n  /* eval require not available in transpiled bundle */\n}\n/* istanbul ignore next */\nconst _inspect = _custom || 'inspect'\n\nclass BoxedBigInt {\n  constructor (value) {\n    try {\n      this.value = global.BigInt.asIntN(64, value)\n    } catch (_) {\n      /* istanbul ignore next */\n      this.value = null\n    }\n    Object.defineProperty(this, _type, {value: INTEGER})\n  }\n  isNaN () {\n    return this.value === null\n  }\n  /* istanbul ignore next */\n  toString () {\n    return String(this.value)\n  }\n  /* istanbul ignore next */\n  [_inspect] () {\n    return `[BigInt: ${this.toString()}]}`\n  }\n  valueOf () {\n    return this.value\n  }\n}\n\nconst INTEGER = Symbol('integer')\nfunction Integer (value) {\n  let num = Number(value)\n  // -0 is a float thing, not an int thing\n  if (Object.is(num, -0)) num = 0\n  /* istanbul ignore else */\n  if (global.BigInt && !Number.isSafeInteger(num)) {\n    return new BoxedBigInt(value)\n  } else {\n    /* istanbul ignore next */\n    return Object.defineProperties(new Number(num), {\n      isNaN: {value: function () { return isNaN(this) }},\n      [_type]: {value: INTEGER},\n      [_inspect]: {value: () => `[Integer: ${value}]`}\n    })\n  }\n}\nfunction isInteger (obj) {\n  if (obj === null || typeof (obj) !== 'object') return false\n  return obj[_type] === INTEGER\n}\n\nconst FLOAT = Symbol('float')\nfunction Float (value) {\n  /* istanbul ignore next */\n  return Object.defineProperties(new Number(value), {\n    [_type]: {value: FLOAT},\n    [_inspect]: {value: () => `[Float: ${value}]`}\n  })\n}\nfunction isFloat (obj) {\n  if (obj === null || typeof (obj) !== 'object') return false\n  return obj[_type] === FLOAT\n}\n\nfunction tomlType (value) {\n  const type = typeof value\n  if (type === 'object') {\n    /* istanbul ignore if */\n    if (value === null) return 'null'\n    if (value instanceof Date) return 'datetime'\n    /* istanbul ignore else */\n    if (_type in value) {\n      switch (value[_type]) {\n        case INLINE_TABLE: return 'inline-table'\n        case INLINE_LIST: return 'inline-list'\n        /* istanbul ignore next */\n        case TABLE: return 'table'\n        /* istanbul ignore next */\n        case LIST: return 'list'\n        case FLOAT: return 'float'\n        case INTEGER: return 'integer'\n      }\n    }\n  }\n  return type\n}\n\nfunction makeParserClass (Parser) {\n  class TOMLParser extends Parser {\n    constructor () {\n      super()\n      this.ctx = this.obj = Table()\n    }\n\n    /* MATCH HELPER */\n    atEndOfWord () {\n      return this.char === CHAR_NUM || this.char === CTRL_I || this.char === CHAR_SP || this.atEndOfLine()\n    }\n    atEndOfLine () {\n      return this.char === Parser.END || this.char === CTRL_J || this.char === CTRL_M\n    }\n\n    parseStart () {\n      if (this.char === Parser.END) {\n        return null\n      } else if (this.char === CHAR_LSQB) {\n        return this.call(this.parseTableOrList)\n      } else if (this.char === CHAR_NUM) {\n        return this.call(this.parseComment)\n      } else if (this.char === CTRL_J || this.char === CHAR_SP || this.char === CTRL_I || this.char === CTRL_M) {\n        return null\n      } else if (isAlphaNumQuoteHyphen(this.char)) {\n        return this.callNow(this.parseAssignStatement)\n      } else {\n        throw this.error(new TomlError(`Unknown character \"${this.char}\"`))\n      }\n    }\n\n    // HELPER, this strips any whitespace and comments to the end of the line\n    // then RETURNS. Last state in a production.\n    parseWhitespaceToEOL () {\n      if (this.char === CHAR_SP || this.char === CTRL_I || this.char === CTRL_M) {\n        return null\n      } else if (this.char === CHAR_NUM) {\n        return this.goto(this.parseComment)\n      } else if (this.char === Parser.END || this.char === CTRL_J) {\n        return this.return()\n      } else {\n        throw this.error(new TomlError('Unexpected character, expected only whitespace or comments till end of line'))\n      }\n    }\n\n    /* ASSIGNMENT: key = value */\n    parseAssignStatement () {\n      return this.callNow(this.parseAssign, this.recordAssignStatement)\n    }\n    recordAssignStatement (kv) {\n      let target = this.ctx\n      let finalKey = kv.key.pop()\n      for (let kw of kv.key) {\n        if (hasKey(target, kw) && (!isTable(target[kw]) || target[kw][_declared])) {\n          throw this.error(new TomlError(\"Can't redefine existing key\"))\n        }\n        target = target[kw] = target[kw] || Table()\n      }\n      if (hasKey(target, finalKey)) {\n        throw this.error(new TomlError(\"Can't redefine existing key\"))\n      }\n      // unbox our numbers\n      if (isInteger(kv.value) || isFloat(kv.value)) {\n        target[finalKey] = kv.value.valueOf()\n      } else {\n        target[finalKey] = kv.value\n      }\n      return this.goto(this.parseWhitespaceToEOL)\n    }\n\n    /* ASSSIGNMENT expression, key = value possibly inside an inline table */\n    parseAssign () {\n      return this.callNow(this.parseKeyword, this.recordAssignKeyword)\n    }\n    recordAssignKeyword (key) {\n      if (this.state.resultTable) {\n        this.state.resultTable.push(key)\n      } else {\n        this.state.resultTable = [key]\n      }\n      return this.goto(this.parseAssignKeywordPreDot)\n    }\n    parseAssignKeywordPreDot () {\n      if (this.char === CHAR_PERIOD) {\n        return this.next(this.parseAssignKeywordPostDot)\n      } else if (this.char !== CHAR_SP && this.char !== CTRL_I) {\n        return this.goto(this.parseAssignEqual)\n      }\n    }\n    parseAssignKeywordPostDot () {\n      if (this.char !== CHAR_SP && this.char !== CTRL_I) {\n        return this.callNow(this.parseKeyword, this.recordAssignKeyword)\n      }\n    }\n\n    parseAssignEqual () {\n      if (this.char === CHAR_EQUALS) {\n        return this.next(this.parseAssignPreValue)\n      } else {\n        throw this.error(new TomlError('Invalid character, expected \"=\"'))\n      }\n    }\n    parseAssignPreValue () {\n      if (this.char === CHAR_SP || this.char === CTRL_I) {\n        return null\n      } else {\n        return this.callNow(this.parseValue, this.recordAssignValue)\n      }\n    }\n    recordAssignValue (value) {\n      return this.returnNow({key: this.state.resultTable, value: value})\n    }\n\n    /* COMMENTS: #...eol */\n    parseComment () {\n      do {\n        if (this.char === Parser.END || this.char === CTRL_J) {\n          return this.return()\n        }\n      } while (this.nextChar())\n    }\n\n    /* TABLES AND LISTS, [foo] and [[foo]] */\n    parseTableOrList () {\n      if (this.char === CHAR_LSQB) {\n        this.next(this.parseList)\n      } else {\n        return this.goto(this.parseTable)\n      }\n    }\n\n    /* TABLE [foo.bar.baz] */\n    parseTable () {\n      this.ctx = this.obj\n      return this.goto(this.parseTableNext)\n    }\n    parseTableNext () {\n      if (this.char === CHAR_SP || this.char === CTRL_I) {\n        return null\n      } else {\n        return this.callNow(this.parseKeyword, this.parseTableMore)\n      }\n    }\n    parseTableMore (keyword) {\n      if (this.char === CHAR_SP || this.char === CTRL_I) {\n        return null\n      } else if (this.char === CHAR_RSQB) {\n        if (hasKey(this.ctx, keyword) && (!isTable(this.ctx[keyword]) || this.ctx[keyword][_declared])) {\n          throw this.error(new TomlError(\"Can't redefine existing key\"))\n        } else {\n          this.ctx = this.ctx[keyword] = this.ctx[keyword] || Table()\n          this.ctx[_declared] = true\n        }\n        return this.next(this.parseWhitespaceToEOL)\n      } else if (this.char === CHAR_PERIOD) {\n        if (!hasKey(this.ctx, keyword)) {\n          this.ctx = this.ctx[keyword] = Table()\n        } else if (isTable(this.ctx[keyword])) {\n          this.ctx = this.ctx[keyword]\n        } else if (isList(this.ctx[keyword])) {\n          this.ctx = this.ctx[keyword][this.ctx[keyword].length - 1]\n        } else {\n          throw this.error(new TomlError(\"Can't redefine existing key\"))\n        }\n        return this.next(this.parseTableNext)\n      } else {\n        throw this.error(new TomlError('Unexpected character, expected whitespace, . or ]'))\n      }\n    }\n\n    /* LIST [[a.b.c]] */\n    parseList () {\n      this.ctx = this.obj\n      return this.goto(this.parseListNext)\n    }\n    parseListNext () {\n      if (this.char === CHAR_SP || this.char === CTRL_I) {\n        return null\n      } else {\n        return this.callNow(this.parseKeyword, this.parseListMore)\n      }\n    }\n    parseListMore (keyword) {\n      if (this.char === CHAR_SP || this.char === CTRL_I) {\n        return null\n      } else if (this.char === CHAR_RSQB) {\n        if (!hasKey(this.ctx, keyword)) {\n          this.ctx[keyword] = List()\n        }\n        if (isInlineList(this.ctx[keyword])) {\n          throw this.error(new TomlError(\"Can't extend an inline array\"))\n        } else if (isList(this.ctx[keyword])) {\n          const next = Table()\n          this.ctx[keyword].push(next)\n          this.ctx = next\n        } else {\n          throw this.error(new TomlError(\"Can't redefine an existing key\"))\n        }\n        return this.next(this.parseListEnd)\n      } else if (this.char === CHAR_PERIOD) {\n        if (!hasKey(this.ctx, keyword)) {\n          this.ctx = this.ctx[keyword] = Table()\n        } else if (isInlineList(this.ctx[keyword])) {\n          throw this.error(new TomlError(\"Can't extend an inline array\"))\n        } else if (isInlineTable(this.ctx[keyword])) {\n          throw this.error(new TomlError(\"Can't extend an inline table\"))\n        } else if (isList(this.ctx[keyword])) {\n          this.ctx = this.ctx[keyword][this.ctx[keyword].length - 1]\n        } else if (isTable(this.ctx[keyword])) {\n          this.ctx = this.ctx[keyword]\n        } else {\n          throw this.error(new TomlError(\"Can't redefine an existing key\"))\n        }\n        return this.next(this.parseListNext)\n      } else {\n        throw this.error(new TomlError('Unexpected character, expected whitespace, . or ]'))\n      }\n    }\n    parseListEnd (keyword) {\n      if (this.char === CHAR_RSQB) {\n        return this.next(this.parseWhitespaceToEOL)\n      } else {\n        throw this.error(new TomlError('Unexpected character, expected whitespace, . or ]'))\n      }\n    }\n\n    /* VALUE string, number, boolean, inline list, inline object */\n    parseValue () {\n      if (this.char === Parser.END) {\n        throw this.error(new TomlError('Key without value'))\n      } else if (this.char === CHAR_QUOT) {\n        return this.next(this.parseDoubleString)\n      } if (this.char === CHAR_APOS) {\n        return this.next(this.parseSingleString)\n      } else if (this.char === CHAR_HYPHEN || this.char === CHAR_PLUS) {\n        return this.goto(this.parseNumberSign)\n      } else if (this.char === CHAR_i) {\n        return this.next(this.parseInf)\n      } else if (this.char === CHAR_n) {\n        return this.next(this.parseNan)\n      } else if (isDigit(this.char)) {\n        return this.goto(this.parseNumberOrDateTime)\n      } else if (this.char === CHAR_t || this.char === CHAR_f) {\n        return this.goto(this.parseBoolean)\n      } else if (this.char === CHAR_LSQB) {\n        return this.call(this.parseInlineList, this.recordValue)\n      } else if (this.char === CHAR_LCUB) {\n        return this.call(this.parseInlineTable, this.recordValue)\n      } else {\n        throw this.error(new TomlError('Unexpected character, expecting string, number, datetime, boolean, inline array or inline table'))\n      }\n    }\n    recordValue (value) {\n      return this.returnNow(value)\n    }\n\n    parseInf () {\n      if (this.char === CHAR_n) {\n        return this.next(this.parseInf2)\n      } else {\n        throw this.error(new TomlError('Unexpected character, expected \"inf\", \"+inf\" or \"-inf\"'))\n      }\n    }\n    parseInf2 () {\n      if (this.char === CHAR_f) {\n        if (this.state.buf === '-') {\n          return this.return(-Infinity)\n        } else {\n          return this.return(Infinity)\n        }\n      } else {\n        throw this.error(new TomlError('Unexpected character, expected \"inf\", \"+inf\" or \"-inf\"'))\n      }\n    }\n\n    parseNan () {\n      if (this.char === CHAR_a) {\n        return this.next(this.parseNan2)\n      } else {\n        throw this.error(new TomlError('Unexpected character, expected \"nan\"'))\n      }\n    }\n    parseNan2 () {\n      if (this.char === CHAR_n) {\n        return this.return(NaN)\n      } else {\n        throw this.error(new TomlError('Unexpected character, expected \"nan\"'))\n      }\n    }\n\n    /* KEYS, barewords or basic, literal, or dotted */\n    parseKeyword () {\n      if (this.char === CHAR_QUOT) {\n        return this.next(this.parseBasicString)\n      } else if (this.char === CHAR_APOS) {\n        return this.next(this.parseLiteralString)\n      } else {\n        return this.goto(this.parseBareKey)\n      }\n    }\n\n    /* KEYS: barewords */\n    parseBareKey () {\n      do {\n        if (this.char === Parser.END) {\n          throw this.error(new TomlError('Key ended without value'))\n        } else if (isAlphaNumHyphen(this.char)) {\n          this.consume()\n        } else if (this.state.buf.length === 0) {\n          throw this.error(new TomlError('Empty bare keys are not allowed'))\n        } else {\n          return this.returnNow()\n        }\n      } while (this.nextChar())\n    }\n\n    /* STRINGS, single quoted (literal) */\n    parseSingleString () {\n      if (this.char === CHAR_APOS) {\n        return this.next(this.parseLiteralMultiStringMaybe)\n      } else {\n        return this.goto(this.parseLiteralString)\n      }\n    }\n    parseLiteralString () {\n      do {\n        if (this.char === CHAR_APOS) {\n          return this.return()\n        } else if (this.atEndOfLine()) {\n          throw this.error(new TomlError('Unterminated string'))\n        } else if (this.char === CHAR_DEL || (this.char <= CTRL_CHAR_BOUNDARY && this.char !== CTRL_I)) {\n          throw this.errorControlCharInString()\n        } else {\n          this.consume()\n        }\n      } while (this.nextChar())\n    }\n    parseLiteralMultiStringMaybe () {\n      if (this.char === CHAR_APOS) {\n        return this.next(this.parseLiteralMultiString)\n      } else {\n        return this.returnNow()\n      }\n    }\n    parseLiteralMultiString () {\n      if (this.char === CTRL_M) {\n        return null\n      } else if (this.char === CTRL_J) {\n        return this.next(this.parseLiteralMultiStringContent)\n      } else {\n        return this.goto(this.parseLiteralMultiStringContent)\n      }\n    }\n    parseLiteralMultiStringContent () {\n      do {\n        if (this.char === CHAR_APOS) {\n          return this.next(this.parseLiteralMultiEnd)\n        } else if (this.char === Parser.END) {\n          throw this.error(new TomlError('Unterminated multi-line string'))\n        } else if (this.char === CHAR_DEL || (this.char <= CTRL_CHAR_BOUNDARY && this.char !== CTRL_I && this.char !== CTRL_J && this.char !== CTRL_M)) {\n          throw this.errorControlCharInString()\n        } else {\n          this.consume()\n        }\n      } while (this.nextChar())\n    }\n    parseLiteralMultiEnd () {\n      if (this.char === CHAR_APOS) {\n        return this.next(this.parseLiteralMultiEnd2)\n      } else {\n        this.state.buf += \"'\"\n        return this.goto(this.parseLiteralMultiStringContent)\n      }\n    }\n    parseLiteralMultiEnd2 () {\n      if (this.char === CHAR_APOS) {\n        return this.return()\n      } else {\n        this.state.buf += \"''\"\n        return this.goto(this.parseLiteralMultiStringContent)\n      }\n    }\n\n    /* STRINGS double quoted */\n    parseDoubleString () {\n      if (this.char === CHAR_QUOT) {\n        return this.next(this.parseMultiStringMaybe)\n      } else {\n        return this.goto(this.parseBasicString)\n      }\n    }\n    parseBasicString () {\n      do {\n        if (this.char === CHAR_BSOL) {\n          return this.call(this.parseEscape, this.recordEscapeReplacement)\n        } else if (this.char === CHAR_QUOT) {\n          return this.return()\n        } else if (this.atEndOfLine()) {\n          throw this.error(new TomlError('Unterminated string'))\n        } else if (this.char === CHAR_DEL || (this.char <= CTRL_CHAR_BOUNDARY && this.char !== CTRL_I)) {\n          throw this.errorControlCharInString()\n        } else {\n          this.consume()\n        }\n      } while (this.nextChar())\n    }\n    recordEscapeReplacement (replacement) {\n      this.state.buf += replacement\n      return this.goto(this.parseBasicString)\n    }\n    parseMultiStringMaybe () {\n      if (this.char === CHAR_QUOT) {\n        return this.next(this.parseMultiString)\n      } else {\n        return this.returnNow()\n      }\n    }\n    parseMultiString () {\n      if (this.char === CTRL_M) {\n        return null\n      } else if (this.char === CTRL_J) {\n        return this.next(this.parseMultiStringContent)\n      } else {\n        return this.goto(this.parseMultiStringContent)\n      }\n    }\n    parseMultiStringContent () {\n      do {\n        if (this.char === CHAR_BSOL) {\n          return this.call(this.parseMultiEscape, this.recordMultiEscapeReplacement)\n        } else if (this.char === CHAR_QUOT) {\n          return this.next(this.parseMultiEnd)\n        } else if (this.char === Parser.END) {\n          throw this.error(new TomlError('Unterminated multi-line string'))\n        } else if (this.char === CHAR_DEL || (this.char <= CTRL_CHAR_BOUNDARY && this.char !== CTRL_I && this.char !== CTRL_J && this.char !== CTRL_M)) {\n          throw this.errorControlCharInString()\n        } else {\n          this.consume()\n        }\n      } while (this.nextChar())\n    }\n    errorControlCharInString () {\n      let displayCode = '\\\\u00'\n      if (this.char < 16) {\n        displayCode += '0'\n      }\n      displayCode += this.char.toString(16)\n\n      return this.error(new TomlError(`Control characters (codes < 0x1f and 0x7f) are not allowed in strings, use ${displayCode} instead`))\n    }\n    recordMultiEscapeReplacement (replacement) {\n      this.state.buf += replacement\n      return this.goto(this.parseMultiStringContent)\n    }\n    parseMultiEnd () {\n      if (this.char === CHAR_QUOT) {\n        return this.next(this.parseMultiEnd2)\n      } else {\n        this.state.buf += '\"'\n        return this.goto(this.parseMultiStringContent)\n      }\n    }\n    parseMultiEnd2 () {\n      if (this.char === CHAR_QUOT) {\n        return this.return()\n      } else {\n        this.state.buf += '\"\"'\n        return this.goto(this.parseMultiStringContent)\n      }\n    }\n    parseMultiEscape () {\n      if (this.char === CTRL_M || this.char === CTRL_J) {\n        return this.next(this.parseMultiTrim)\n      } else if (this.char === CHAR_SP || this.char === CTRL_I) {\n        return this.next(this.parsePreMultiTrim)\n      } else {\n        return this.goto(this.parseEscape)\n      }\n    }\n    parsePreMultiTrim () {\n      if (this.char === CHAR_SP || this.char === CTRL_I) {\n        return null\n      } else if (this.char === CTRL_M || this.char === CTRL_J) {\n        return this.next(this.parseMultiTrim)\n      } else {\n        throw this.error(new TomlError(\"Can't escape whitespace\"))\n      }\n    }\n    parseMultiTrim () {\n      // explicitly whitespace here, END should follow the same path as chars\n      if (this.char === CTRL_J || this.char === CHAR_SP || this.char === CTRL_I || this.char === CTRL_M) {\n        return null\n      } else {\n        return this.returnNow()\n      }\n    }\n    parseEscape () {\n      if (this.char in escapes) {\n        return this.return(escapes[this.char])\n      } else if (this.char === CHAR_u) {\n        return this.call(this.parseSmallUnicode, this.parseUnicodeReturn)\n      } else if (this.char === CHAR_U) {\n        return this.call(this.parseLargeUnicode, this.parseUnicodeReturn)\n      } else {\n        throw this.error(new TomlError('Unknown escape character: ' + this.char))\n      }\n    }\n    parseUnicodeReturn (char) {\n      try {\n        const codePoint = parseInt(char, 16)\n        if (codePoint >= SURROGATE_FIRST && codePoint <= SURROGATE_LAST) {\n          throw this.error(new TomlError('Invalid unicode, character in range 0xD800 - 0xDFFF is reserved'))\n        }\n        return this.returnNow(String.fromCodePoint(codePoint))\n      } catch (err) {\n        throw this.error(TomlError.wrap(err))\n      }\n    }\n    parseSmallUnicode () {\n      if (!isHexit(this.char)) {\n        throw this.error(new TomlError('Invalid character in unicode sequence, expected hex'))\n      } else {\n        this.consume()\n        if (this.state.buf.length >= 4) return this.return()\n      }\n    }\n    parseLargeUnicode () {\n      if (!isHexit(this.char)) {\n        throw this.error(new TomlError('Invalid character in unicode sequence, expected hex'))\n      } else {\n        this.consume()\n        if (this.state.buf.length >= 8) return this.return()\n      }\n    }\n\n    /* NUMBERS */\n    parseNumberSign () {\n      this.consume()\n      return this.next(this.parseMaybeSignedInfOrNan)\n    }\n    parseMaybeSignedInfOrNan () {\n      if (this.char === CHAR_i) {\n        return this.next(this.parseInf)\n      } else if (this.char === CHAR_n) {\n        return this.next(this.parseNan)\n      } else {\n        return this.callNow(this.parseNoUnder, this.parseNumberIntegerStart)\n      }\n    }\n    parseNumberIntegerStart () {\n      if (this.char === CHAR_0) {\n        this.consume()\n        return this.next(this.parseNumberIntegerExponentOrDecimal)\n      } else {\n        return this.goto(this.parseNumberInteger)\n      }\n    }\n    parseNumberIntegerExponentOrDecimal () {\n      if (this.char === CHAR_PERIOD) {\n        this.consume()\n        return this.call(this.parseNoUnder, this.parseNumberFloat)\n      } else if (this.char === CHAR_E || this.char === CHAR_e) {\n        this.consume()\n        return this.next(this.parseNumberExponentSign)\n      } else {\n        return this.returnNow(Integer(this.state.buf))\n      }\n    }\n    parseNumberInteger () {\n      if (isDigit(this.char)) {\n        this.consume()\n      } else if (this.char === CHAR_LOWBAR) {\n        return this.call(this.parseNoUnder)\n      } else if (this.char === CHAR_E || this.char === CHAR_e) {\n        this.consume()\n        return this.next(this.parseNumberExponentSign)\n      } else if (this.char === CHAR_PERIOD) {\n        this.consume()\n        return this.call(this.parseNoUnder, this.parseNumberFloat)\n      } else {\n        const result = Integer(this.state.buf)\n        /* istanbul ignore if */\n        if (result.isNaN()) {\n          throw this.error(new TomlError('Invalid number'))\n        } else {\n          return this.returnNow(result)\n        }\n      }\n    }\n    parseNoUnder () {\n      if (this.char === CHAR_LOWBAR || this.char === CHAR_PERIOD || this.char === CHAR_E || this.char === CHAR_e) {\n        throw this.error(new TomlError('Unexpected character, expected digit'))\n      } else if (this.atEndOfWord()) {\n        throw this.error(new TomlError('Incomplete number'))\n      }\n      return this.returnNow()\n    }\n    parseNoUnderHexOctBinLiteral () {\n      if (this.char === CHAR_LOWBAR || this.char === CHAR_PERIOD) {\n        throw this.error(new TomlError('Unexpected character, expected digit'))\n      } else if (this.atEndOfWord()) {\n        throw this.error(new TomlError('Incomplete number'))\n      }\n      return this.returnNow()\n    }\n    parseNumberFloat () {\n      if (this.char === CHAR_LOWBAR) {\n        return this.call(this.parseNoUnder, this.parseNumberFloat)\n      } else if (isDigit(this.char)) {\n        this.consume()\n      } else if (this.char === CHAR_E || this.char === CHAR_e) {\n        this.consume()\n        return this.next(this.parseNumberExponentSign)\n      } else {\n        return this.returnNow(Float(this.state.buf))\n      }\n    }\n    parseNumberExponentSign () {\n      if (isDigit(this.char)) {\n        return this.goto(this.parseNumberExponent)\n      } else if (this.char === CHAR_HYPHEN || this.char === CHAR_PLUS) {\n        this.consume()\n        this.call(this.parseNoUnder, this.parseNumberExponent)\n      } else {\n        throw this.error(new TomlError('Unexpected character, expected -, + or digit'))\n      }\n    }\n    parseNumberExponent () {\n      if (isDigit(this.char)) {\n        this.consume()\n      } else if (this.char === CHAR_LOWBAR) {\n        return this.call(this.parseNoUnder)\n      } else {\n        return this.returnNow(Float(this.state.buf))\n      }\n    }\n\n    /* NUMBERS or DATETIMES  */\n    parseNumberOrDateTime () {\n      if (this.char === CHAR_0) {\n        this.consume()\n        return this.next(this.parseNumberBaseOrDateTime)\n      } else {\n        return this.goto(this.parseNumberOrDateTimeOnly)\n      }\n    }\n    parseNumberOrDateTimeOnly () {\n      // note, if two zeros are in a row then it MUST be a date\n      if (this.char === CHAR_LOWBAR) {\n        return this.call(this.parseNoUnder, this.parseNumberInteger)\n      } else if (isDigit(this.char)) {\n        this.consume()\n        if (this.state.buf.length > 4) this.next(this.parseNumberInteger)\n      } else if (this.char === CHAR_E || this.char === CHAR_e) {\n        this.consume()\n        return this.next(this.parseNumberExponentSign)\n      } else if (this.char === CHAR_PERIOD) {\n        this.consume()\n        return this.call(this.parseNoUnder, this.parseNumberFloat)\n      } else if (this.char === CHAR_HYPHEN) {\n        return this.goto(this.parseDateTime)\n      } else if (this.char === CHAR_COLON) {\n        return this.goto(this.parseOnlyTimeHour)\n      } else {\n        return this.returnNow(Integer(this.state.buf))\n      }\n    }\n    parseDateTimeOnly () {\n      if (this.state.buf.length < 4) {\n        if (isDigit(this.char)) {\n          return this.consume()\n        } else if (this.char === CHAR_COLON) {\n          return this.goto(this.parseOnlyTimeHour)\n        } else {\n          throw this.error(new TomlError('Expected digit while parsing year part of a date'))\n        }\n      } else {\n        if (this.char === CHAR_HYPHEN) {\n          return this.goto(this.parseDateTime)\n        } else {\n          throw this.error(new TomlError('Expected hyphen (-) while parsing year part of date'))\n        }\n      }\n    }\n    parseNumberBaseOrDateTime () {\n      if (this.char === CHAR_b) {\n        this.consume()\n        return this.call(this.parseNoUnderHexOctBinLiteral, this.parseIntegerBin)\n      } else if (this.char === CHAR_o) {\n        this.consume()\n        return this.call(this.parseNoUnderHexOctBinLiteral, this.parseIntegerOct)\n      } else if (this.char === CHAR_x) {\n        this.consume()\n        return this.call(this.parseNoUnderHexOctBinLiteral, this.parseIntegerHex)\n      } else if (this.char === CHAR_PERIOD) {\n        return this.goto(this.parseNumberInteger)\n      } else if (isDigit(this.char)) {\n        return this.goto(this.parseDateTimeOnly)\n      } else {\n        return this.returnNow(Integer(this.state.buf))\n      }\n    }\n    parseIntegerHex () {\n      if (isHexit(this.char)) {\n        this.consume()\n      } else if (this.char === CHAR_LOWBAR) {\n        return this.call(this.parseNoUnderHexOctBinLiteral)\n      } else {\n        const result = Integer(this.state.buf)\n        /* istanbul ignore if */\n        if (result.isNaN()) {\n          throw this.error(new TomlError('Invalid number'))\n        } else {\n          return this.returnNow(result)\n        }\n      }\n    }\n    parseIntegerOct () {\n      if (isOctit(this.char)) {\n        this.consume()\n      } else if (this.char === CHAR_LOWBAR) {\n        return this.call(this.parseNoUnderHexOctBinLiteral)\n      } else {\n        const result = Integer(this.state.buf)\n        /* istanbul ignore if */\n        if (result.isNaN()) {\n          throw this.error(new TomlError('Invalid number'))\n        } else {\n          return this.returnNow(result)\n        }\n      }\n    }\n    parseIntegerBin () {\n      if (isBit(this.char)) {\n        this.consume()\n      } else if (this.char === CHAR_LOWBAR) {\n        return this.call(this.parseNoUnderHexOctBinLiteral)\n      } else {\n        const result = Integer(this.state.buf)\n        /* istanbul ignore if */\n        if (result.isNaN()) {\n          throw this.error(new TomlError('Invalid number'))\n        } else {\n          return this.returnNow(result)\n        }\n      }\n    }\n\n    /* DATETIME */\n    parseDateTime () {\n      // we enter here having just consumed the year and about to consume the hyphen\n      if (this.state.buf.length < 4) {\n        throw this.error(new TomlError('Years less than 1000 must be zero padded to four characters'))\n      }\n      this.state.result = this.state.buf\n      this.state.buf = ''\n      return this.next(this.parseDateMonth)\n    }\n    parseDateMonth () {\n      if (this.char === CHAR_HYPHEN) {\n        if (this.state.buf.length < 2) {\n          throw this.error(new TomlError('Months less than 10 must be zero padded to two characters'))\n        }\n        this.state.result += '-' + this.state.buf\n        this.state.buf = ''\n        return this.next(this.parseDateDay)\n      } else if (isDigit(this.char)) {\n        this.consume()\n      } else {\n        throw this.error(new TomlError('Incomplete datetime'))\n      }\n    }\n    parseDateDay () {\n      if (this.char === CHAR_T || this.char === CHAR_SP) {\n        if (this.state.buf.length < 2) {\n          throw this.error(new TomlError('Days less than 10 must be zero padded to two characters'))\n        }\n        this.state.result += '-' + this.state.buf\n        this.state.buf = ''\n        return this.next(this.parseStartTimeHour)\n      } else if (this.atEndOfWord()) {\n        return this.returnNow(createDate(this.state.result + '-' + this.state.buf))\n      } else if (isDigit(this.char)) {\n        this.consume()\n      } else {\n        throw this.error(new TomlError('Incomplete datetime'))\n      }\n    }\n    parseStartTimeHour () {\n      if (this.atEndOfWord()) {\n        return this.returnNow(createDate(this.state.result))\n      } else {\n        return this.goto(this.parseTimeHour)\n      }\n    }\n    parseTimeHour () {\n      if (this.char === CHAR_COLON) {\n        if (this.state.buf.length < 2) {\n          throw this.error(new TomlError('Hours less than 10 must be zero padded to two characters'))\n        }\n        this.state.result += 'T' + this.state.buf\n        this.state.buf = ''\n        return this.next(this.parseTimeMin)\n      } else if (isDigit(this.char)) {\n        this.consume()\n      } else {\n        throw this.error(new TomlError('Incomplete datetime'))\n      }\n    }\n    parseTimeMin () {\n      if (this.state.buf.length < 2 && isDigit(this.char)) {\n        this.consume()\n      } else if (this.state.buf.length === 2 && this.char === CHAR_COLON) {\n        this.state.result += ':' + this.state.buf\n        this.state.buf = ''\n        return this.next(this.parseTimeSec)\n      } else {\n        throw this.error(new TomlError('Incomplete datetime'))\n      }\n    }\n    parseTimeSec () {\n      if (isDigit(this.char)) {\n        this.consume()\n        if (this.state.buf.length === 2) {\n          this.state.result += ':' + this.state.buf\n          this.state.buf = ''\n          return this.next(this.parseTimeZoneOrFraction)\n        }\n      } else {\n        throw this.error(new TomlError('Incomplete datetime'))\n      }\n    }\n\n    parseOnlyTimeHour () {\n      /* istanbul ignore else */\n      if (this.char === CHAR_COLON) {\n        if (this.state.buf.length < 2) {\n          throw this.error(new TomlError('Hours less than 10 must be zero padded to two characters'))\n        }\n        this.state.result = this.state.buf\n        this.state.buf = ''\n        return this.next(this.parseOnlyTimeMin)\n      } else {\n        throw this.error(new TomlError('Incomplete time'))\n      }\n    }\n    parseOnlyTimeMin () {\n      if (this.state.buf.length < 2 && isDigit(this.char)) {\n        this.consume()\n      } else if (this.state.buf.length === 2 && this.char === CHAR_COLON) {\n        this.state.result += ':' + this.state.buf\n        this.state.buf = ''\n        return this.next(this.parseOnlyTimeSec)\n      } else {\n        throw this.error(new TomlError('Incomplete time'))\n      }\n    }\n    parseOnlyTimeSec () {\n      if (isDigit(this.char)) {\n        this.consume()\n        if (this.state.buf.length === 2) {\n          return this.next(this.parseOnlyTimeFractionMaybe)\n        }\n      } else {\n        throw this.error(new TomlError('Incomplete time'))\n      }\n    }\n    parseOnlyTimeFractionMaybe () {\n      this.state.result += ':' + this.state.buf\n      if (this.char === CHAR_PERIOD) {\n        this.state.buf = ''\n        this.next(this.parseOnlyTimeFraction)\n      } else {\n        return this.return(createTime(this.state.result))\n      }\n    }\n    parseOnlyTimeFraction () {\n      if (isDigit(this.char)) {\n        this.consume()\n      } else if (this.atEndOfWord()) {\n        if (this.state.buf.length === 0) throw this.error(new TomlError('Expected digit in milliseconds'))\n        return this.returnNow(createTime(this.state.result + '.' + this.state.buf))\n      } else {\n        throw this.error(new TomlError('Unexpected character in datetime, expected period (.), minus (-), plus (+) or Z'))\n      }\n    }\n\n    parseTimeZoneOrFraction () {\n      if (this.char === CHAR_PERIOD) {\n        this.consume()\n        this.next(this.parseDateTimeFraction)\n      } else if (this.char === CHAR_HYPHEN || this.char === CHAR_PLUS) {\n        this.consume()\n        this.next(this.parseTimeZoneHour)\n      } else if (this.char === CHAR_Z) {\n        this.consume()\n        return this.return(createDateTime(this.state.result + this.state.buf))\n      } else if (this.atEndOfWord()) {\n        return this.returnNow(createDateTimeFloat(this.state.result + this.state.buf))\n      } else {\n        throw this.error(new TomlError('Unexpected character in datetime, expected period (.), minus (-), plus (+) or Z'))\n      }\n    }\n    parseDateTimeFraction () {\n      if (isDigit(this.char)) {\n        this.consume()\n      } else if (this.state.buf.length === 1) {\n        throw this.error(new TomlError('Expected digit in milliseconds'))\n      } else if (this.char === CHAR_HYPHEN || this.char === CHAR_PLUS) {\n        this.consume()\n        this.next(this.parseTimeZoneHour)\n      } else if (this.char === CHAR_Z) {\n        this.consume()\n        return this.return(createDateTime(this.state.result + this.state.buf))\n      } else if (this.atEndOfWord()) {\n        return this.returnNow(createDateTimeFloat(this.state.result + this.state.buf))\n      } else {\n        throw this.error(new TomlError('Unexpected character in datetime, expected period (.), minus (-), plus (+) or Z'))\n      }\n    }\n    parseTimeZoneHour () {\n      if (isDigit(this.char)) {\n        this.consume()\n        // FIXME: No more regexps\n        if (/\\d\\d$/.test(this.state.buf)) return this.next(this.parseTimeZoneSep)\n      } else {\n        throw this.error(new TomlError('Unexpected character in datetime, expected digit'))\n      }\n    }\n    parseTimeZoneSep () {\n      if (this.char === CHAR_COLON) {\n        this.consume()\n        this.next(this.parseTimeZoneMin)\n      } else {\n        throw this.error(new TomlError('Unexpected character in datetime, expected colon'))\n      }\n    }\n    parseTimeZoneMin () {\n      if (isDigit(this.char)) {\n        this.consume()\n        if (/\\d\\d$/.test(this.state.buf)) return this.return(createDateTime(this.state.result + this.state.buf))\n      } else {\n        throw this.error(new TomlError('Unexpected character in datetime, expected digit'))\n      }\n    }\n\n    /* BOOLEAN */\n    parseBoolean () {\n      /* istanbul ignore else */\n      if (this.char === CHAR_t) {\n        this.consume()\n        return this.next(this.parseTrue_r)\n      } else if (this.char === CHAR_f) {\n        this.consume()\n        return this.next(this.parseFalse_a)\n      }\n    }\n    parseTrue_r () {\n      if (this.char === CHAR_r) {\n        this.consume()\n        return this.next(this.parseTrue_u)\n      } else {\n        throw this.error(new TomlError('Invalid boolean, expected true or false'))\n      }\n    }\n    parseTrue_u () {\n      if (this.char === CHAR_u) {\n        this.consume()\n        return this.next(this.parseTrue_e)\n      } else {\n        throw this.error(new TomlError('Invalid boolean, expected true or false'))\n      }\n    }\n    parseTrue_e () {\n      if (this.char === CHAR_e) {\n        return this.return(true)\n      } else {\n        throw this.error(new TomlError('Invalid boolean, expected true or false'))\n      }\n    }\n\n    parseFalse_a () {\n      if (this.char === CHAR_a) {\n        this.consume()\n        return this.next(this.parseFalse_l)\n      } else {\n        throw this.error(new TomlError('Invalid boolean, expected true or false'))\n      }\n    }\n\n    parseFalse_l () {\n      if (this.char === CHAR_l) {\n        this.consume()\n        return this.next(this.parseFalse_s)\n      } else {\n        throw this.error(new TomlError('Invalid boolean, expected true or false'))\n      }\n    }\n\n    parseFalse_s () {\n      if (this.char === CHAR_s) {\n        this.consume()\n        return this.next(this.parseFalse_e)\n      } else {\n        throw this.error(new TomlError('Invalid boolean, expected true or false'))\n      }\n    }\n\n    parseFalse_e () {\n      if (this.char === CHAR_e) {\n        return this.return(false)\n      } else {\n        throw this.error(new TomlError('Invalid boolean, expected true or false'))\n      }\n    }\n\n    /* INLINE LISTS */\n    parseInlineList () {\n      if (this.char === CHAR_SP || this.char === CTRL_I || this.char === CTRL_M || this.char === CTRL_J) {\n        return null\n      } else if (this.char === Parser.END) {\n        throw this.error(new TomlError('Unterminated inline array'))\n      } else if (this.char === CHAR_NUM) {\n        return this.call(this.parseComment)\n      } else if (this.char === CHAR_RSQB) {\n        return this.return(this.state.resultArr || InlineList())\n      } else {\n        return this.callNow(this.parseValue, this.recordInlineListValue)\n      }\n    }\n    recordInlineListValue (value) {\n      if (this.state.resultArr) {\n        const listType = this.state.resultArr[_contentType]\n        const valueType = tomlType(value)\n        if (listType !== valueType) {\n          throw this.error(new TomlError(`Inline lists must be a single type, not a mix of ${listType} and ${valueType}`))\n        }\n      } else {\n        this.state.resultArr = InlineList(tomlType(value))\n      }\n      if (isFloat(value) || isInteger(value)) {\n        // unbox now that we've verified they're ok\n        this.state.resultArr.push(value.valueOf())\n      } else {\n        this.state.resultArr.push(value)\n      }\n      return this.goto(this.parseInlineListNext)\n    }\n    parseInlineListNext () {\n      if (this.char === CHAR_SP || this.char === CTRL_I || this.char === CTRL_M || this.char === CTRL_J) {\n        return null\n      } else if (this.char === CHAR_NUM) {\n        return this.call(this.parseComment)\n      } else if (this.char === CHAR_COMMA) {\n        return this.next(this.parseInlineList)\n      } else if (this.char === CHAR_RSQB) {\n        return this.goto(this.parseInlineList)\n      } else {\n        throw this.error(new TomlError('Invalid character, expected whitespace, comma (,) or close bracket (])'))\n      }\n    }\n\n    /* INLINE TABLE */\n    parseInlineTable () {\n      if (this.char === CHAR_SP || this.char === CTRL_I) {\n        return null\n      } else if (this.char === Parser.END || this.char === CHAR_NUM || this.char === CTRL_J || this.char === CTRL_M) {\n        throw this.error(new TomlError('Unterminated inline array'))\n      } else if (this.char === CHAR_RCUB) {\n        return this.return(this.state.resultTable || InlineTable())\n      } else {\n        if (!this.state.resultTable) this.state.resultTable = InlineTable()\n        return this.callNow(this.parseAssign, this.recordInlineTableValue)\n      }\n    }\n    recordInlineTableValue (kv) {\n      let target = this.state.resultTable\n      let finalKey = kv.key.pop()\n      for (let kw of kv.key) {\n        if (hasKey(target, kw) && (!isTable(target[kw]) || target[kw][_declared])) {\n          throw this.error(new TomlError(\"Can't redefine existing key\"))\n        }\n        target = target[kw] = target[kw] || Table()\n      }\n      if (hasKey(target, finalKey)) {\n        throw this.error(new TomlError(\"Can't redefine existing key\"))\n      }\n      if (isInteger(kv.value) || isFloat(kv.value)) {\n        target[finalKey] = kv.value.valueOf()\n      } else {\n        target[finalKey] = kv.value\n      }\n      return this.goto(this.parseInlineTableNext)\n    }\n    parseInlineTableNext () {\n      if (this.char === CHAR_SP || this.char === CTRL_I) {\n        return null\n      } else if (this.char === Parser.END || this.char === CHAR_NUM || this.char === CTRL_J || this.char === CTRL_M) {\n        throw this.error(new TomlError('Unterminated inline array'))\n      } else if (this.char === CHAR_COMMA) {\n        return this.next(this.parseInlineTable)\n      } else if (this.char === CHAR_RCUB) {\n        return this.goto(this.parseInlineTable)\n      } else {\n        throw this.error(new TomlError('Invalid character, expected whitespace, comma (,) or close bracket (])'))\n      }\n    }\n  }\n  return TOMLParser\n}\n", "'use strict'\nmodule.exports = prettyError\n\nfunction prettyError (err, buf) {\n  /* istanbul ignore if */\n  if (err.pos == null || err.line == null) return err\n  let msg = err.message\n  msg += ` at row ${err.line + 1}, col ${err.col + 1}, pos ${err.pos}:\\n`\n\n  /* istanbul ignore else */\n  if (buf && buf.split) {\n    const lines = buf.split(/\\n/)\n    const lineNumWidth = String(Math.min(lines.length, err.line + 3)).length\n    let linePadding = ' '\n    while (linePadding.length < lineNumWidth) linePadding += ' '\n    for (let ii = Math.max(0, err.line - 1); ii < Math.min(lines.length, err.line + 2); ++ii) {\n      let lineNum = String(ii + 1)\n      if (lineNum.length < lineNumWidth) lineNum = ' ' + lineNum\n      if (err.line === ii) {\n        msg += lineNum + '> ' + lines[ii] + '\\n'\n        msg += linePadding + '  '\n        for (let hh = 0; hh < err.col; ++hh) {\n          msg += ' '\n        }\n        msg += '^\\n'\n      } else {\n        msg += lineNum + ': ' + lines[ii] + '\\n'\n      }\n    }\n  }\n  err.message = msg + '\\n'\n  return err\n}\n", "'use strict'\nmodule.exports = parseString\n\nconst TOMLParser = require('./lib/toml-parser.js')\nconst prettyError = require('./parse-pretty-error.js')\n\nfunction parseString (str) {\n  if (global.Buffer && global.Buffer.isBuffer(str)) {\n    str = str.toString('utf8')\n  }\n  const parser = new TOMLParser()\n  try {\n    parser.parse(str)\n    return parser.finish()\n  } catch (err) {\n    throw prettyError(err, str)\n  }\n}\n", "'use strict'\nmodule.exports = parseAsync\n\nconst TOMLParser = require('./lib/toml-parser.js')\nconst prettyError = require('./parse-pretty-error.js')\n\nfunction parseAsync (str, opts) {\n  if (!opts) opts = {}\n  const index = 0\n  const blocksize = opts.blocksize || 40960\n  const parser = new TOMLParser()\n  return new Promise((resolve, reject) => {\n    setImmediate(parseAsyncNext, index, blocksize, resolve, reject)\n  })\n  function parseAsyncNext (index, blocksize, resolve, reject) {\n    if (index >= str.length) {\n      try {\n        return resolve(parser.finish())\n      } catch (err) {\n        return reject(prettyError(err, str))\n      }\n    }\n    try {\n      parser.parse(str.slice(index, index + blocksize))\n      setImmediate(parseAsyncNext, index + blocksize, blocksize, resolve, reject)\n    } catch (err) {\n      reject(prettyError(err, str))\n    }\n  }\n}\n", "'use strict'\nmodule.exports = parseStream\n\nconst stream = require('stream')\nconst TOMLParser = require('./lib/toml-parser.js')\n\nfunction parseStream (stm) {\n  if (stm) {\n    return parseReadable(stm)\n  } else {\n    return parseTransform(stm)\n  }\n}\n\nfunction parseReadable (stm) {\n  const parser = new TOMLParser()\n  stm.setEncoding('utf8')\n  return new Promise((resolve, reject) => {\n    let readable\n    let ended = false\n    let errored = false\n    function finish () {\n      ended = true\n      if (readable) return\n      try {\n        resolve(parser.finish())\n      } catch (err) {\n        reject(err)\n      }\n    }\n    function error (err) {\n      errored = true\n      reject(err)\n    }\n    stm.once('end', finish)\n    stm.once('error', error)\n    readNext()\n\n    function readNext () {\n      readable = true\n      let data\n      while ((data = stm.read()) !== null) {\n        try {\n          parser.parse(data)\n        } catch (err) {\n          return error(err)\n        }\n      }\n      readable = false\n      /* istanbul ignore if */\n      if (ended) return finish()\n      /* istanbul ignore if */\n      if (errored) return\n      stm.once('readable', readNext)\n    }\n  })\n}\n\nfunction parseTransform () {\n  const parser = new TOMLParser()\n  return new stream.Transform({\n    objectMode: true,\n    transform (chunk, encoding, cb) {\n      try {\n        parser.parse(chunk.toString(encoding))\n      } catch (err) {\n        this.emit('error', err)\n      }\n      cb()\n    },\n    flush (cb) {\n      try {\n        this.push(parser.finish())\n      } catch (err) {\n        this.emit('error', err)\n      }\n      cb()\n    }\n  })\n}\n", "'use strict'\nmodule.exports = require('./parse-string.js')\nmodule.exports.async = require('./parse-async.js')\nmodule.exports.stream = require('./parse-stream.js')\nmodule.exports.prettyError = require('./parse-pretty-error.js')\n", "'use strict'\nmodule.exports = stringify\nmodule.exports.value = stringifyInline\n\nfunction stringify (obj) {\n  if (obj === null) throw typeError('null')\n  if (obj === void (0)) throw typeError('undefined')\n  if (typeof obj !== 'object') throw typeError(typeof obj)\n\n  if (typeof obj.toJSON === 'function') obj = obj.toJSON()\n  if (obj == null) return null\n  const type = tomlType(obj)\n  if (type !== 'table') throw typeError(type)\n  return stringifyObject('', '', obj)\n}\n\nfunction typeError (type) {\n  return new Error('Can only stringify objects, not ' + type)\n}\n\nfunction arrayOneTypeError () {\n  return new Error(\"Array values can't have mixed types\")\n}\n\nfunction getInlineKeys (obj) {\n  return Object.keys(obj).filter(key => isInline(obj[key]))\n}\nfunction getComplexKeys (obj) {\n  return Object.keys(obj).filter(key => !isInline(obj[key]))\n}\n\nfunction toJSON (obj) {\n  let nobj = Array.isArray(obj) ? [] : Object.prototype.hasOwnProperty.call(obj, '__proto__') ? {['__proto__']: undefined} : {}\n  for (let prop of Object.keys(obj)) {\n    if (obj[prop] && typeof obj[prop].toJSON === 'function' && !('toISOString' in obj[prop])) {\n      nobj[prop] = obj[prop].toJSON()\n    } else {\n      nobj[prop] = obj[prop]\n    }\n  }\n  return nobj\n}\n\nfunction stringifyObject (prefix, indent, obj) {\n  obj = toJSON(obj)\n  var inlineKeys\n  var complexKeys\n  inlineKeys = getInlineKeys(obj)\n  complexKeys = getComplexKeys(obj)\n  var result = []\n  var inlineIndent = indent || ''\n  inlineKeys.forEach(key => {\n    var type = tomlType(obj[key])\n    if (type !== 'undefined' && type !== 'null') {\n      result.push(inlineIndent + stringifyKey(key) + ' = ' + stringifyAnyInline(obj[key], true))\n    }\n  })\n  if (result.length > 0) result.push('')\n  var complexIndent = prefix && inlineKeys.length > 0 ? indent + '  ' : ''\n  complexKeys.forEach(key => {\n    result.push(stringifyComplex(prefix, complexIndent, key, obj[key]))\n  })\n  return result.join('\\n')\n}\n\nfunction isInline (value) {\n  switch (tomlType(value)) {\n    case 'undefined':\n    case 'null':\n    case 'integer':\n    case 'nan':\n    case 'float':\n    case 'boolean':\n    case 'string':\n    case 'datetime':\n      return true\n    case 'array':\n      return value.length === 0 || tomlType(value[0]) !== 'table'\n    case 'table':\n      return Object.keys(value).length === 0\n    /* istanbul ignore next */\n    default:\n      return false\n  }\n}\n\nfunction tomlType (value) {\n  if (value === undefined) {\n    return 'undefined'\n  } else if (value === null) {\n    return 'null'\n  /* eslint-disable valid-typeof */\n  } else if (typeof value === 'bigint' || (Number.isInteger(value) && !Object.is(value, -0))) {\n    return 'integer'\n  } else if (typeof value === 'number') {\n    return 'float'\n  } else if (typeof value === 'boolean') {\n    return 'boolean'\n  } else if (typeof value === 'string') {\n    return 'string'\n  } else if ('toISOString' in value) {\n    return isNaN(value) ? 'undefined' : 'datetime'\n  } else if (Array.isArray(value)) {\n    return 'array'\n  } else {\n    return 'table'\n  }\n}\n\nfunction stringifyKey (key) {\n  var keyStr = String(key)\n  if (/^[-A-Za-z0-9_]+$/.test(keyStr)) {\n    return keyStr\n  } else {\n    return stringifyBasicString(keyStr)\n  }\n}\n\nfunction stringifyBasicString (str) {\n  return '\"' + escapeString(str).replace(/\"/g, '\\\\\"') + '\"'\n}\n\nfunction stringifyLiteralString (str) {\n  return \"'\" + str + \"'\"\n}\n\nfunction numpad (num, str) {\n  while (str.length < num) str = '0' + str\n  return str\n}\n\nfunction escapeString (str) {\n  return str.replace(/\\\\/g, '\\\\\\\\')\n    .replace(/[\\b]/g, '\\\\b')\n    .replace(/\\t/g, '\\\\t')\n    .replace(/\\n/g, '\\\\n')\n    .replace(/\\f/g, '\\\\f')\n    .replace(/\\r/g, '\\\\r')\n    /* eslint-disable no-control-regex */\n    .replace(/([\\u0000-\\u001f\\u007f])/, c => '\\\\u' + numpad(4, c.codePointAt(0).toString(16)))\n    /* eslint-enable no-control-regex */\n}\n\nfunction stringifyMultilineString (str) {\n  let escaped = str.split(/\\n/).map(str => {\n    return escapeString(str).replace(/\"(?=\"\")/g, '\\\\\"')\n  }).join('\\n')\n  if (escaped.slice(-1) === '\"') escaped += '\\\\\\n'\n  return '\"\"\"\\n' + escaped + '\"\"\"'\n}\n\nfunction stringifyAnyInline (value, multilineOk) {\n  let type = tomlType(value)\n  if (type === 'string') {\n    if (multilineOk && /\\n/.test(value)) {\n      type = 'string-multiline'\n    } else if (!/[\\b\\t\\n\\f\\r']/.test(value) && /\"/.test(value)) {\n      type = 'string-literal'\n    }\n  }\n  return stringifyInline(value, type)\n}\n\nfunction stringifyInline (value, type) {\n  /* istanbul ignore if */\n  if (!type) type = tomlType(value)\n  switch (type) {\n    case 'string-multiline':\n      return stringifyMultilineString(value)\n    case 'string':\n      return stringifyBasicString(value)\n    case 'string-literal':\n      return stringifyLiteralString(value)\n    case 'integer':\n      return stringifyInteger(value)\n    case 'float':\n      return stringifyFloat(value)\n    case 'boolean':\n      return stringifyBoolean(value)\n    case 'datetime':\n      return stringifyDatetime(value)\n    case 'array':\n      return stringifyInlineArray(value.filter(_ => tomlType(_) !== 'null' && tomlType(_) !== 'undefined' && tomlType(_) !== 'nan'))\n    case 'table':\n      return stringifyInlineTable(value)\n    /* istanbul ignore next */\n    default:\n      throw typeError(type)\n  }\n}\n\nfunction stringifyInteger (value) {\n  /* eslint-disable security/detect-unsafe-regex */\n  return String(value).replace(/\\B(?=(\\d{3})+(?!\\d))/g, '_')\n}\n\nfunction stringifyFloat (value) {\n  if (value === Infinity) {\n    return 'inf'\n  } else if (value === -Infinity) {\n    return '-inf'\n  } else if (Object.is(value, NaN)) {\n    return 'nan'\n  } else if (Object.is(value, -0)) {\n    return '-0.0'\n  }\n  var chunks = String(value).split('.')\n  var int = chunks[0]\n  var dec = chunks[1] || 0\n  return stringifyInteger(int) + '.' + dec\n}\n\nfunction stringifyBoolean (value) {\n  return String(value)\n}\n\nfunction stringifyDatetime (value) {\n  return value.toISOString()\n}\n\nfunction isNumber (type) {\n  return type === 'float' || type === 'integer'\n}\nfunction arrayType (values) {\n  var contentType = tomlType(values[0])\n  if (values.every(_ => tomlType(_) === contentType)) return contentType\n  // mixed integer/float, emit as floats\n  if (values.every(_ => isNumber(tomlType(_)))) return 'float'\n  return 'mixed'\n}\nfunction validateArray (values) {\n  const type = arrayType(values)\n  if (type === 'mixed') {\n    throw arrayOneTypeError()\n  }\n  return type\n}\n\nfunction stringifyInlineArray (values) {\n  values = toJSON(values)\n  const type = validateArray(values)\n  var result = '['\n  var stringified = values.map(_ => stringifyInline(_, type))\n  if (stringified.join(', ').length > 60 || /\\n/.test(stringified)) {\n    result += '\\n  ' + stringified.join(',\\n  ') + '\\n'\n  } else {\n    result += ' ' + stringified.join(', ') + (stringified.length > 0 ? ' ' : '')\n  }\n  return result + ']'\n}\n\nfunction stringifyInlineTable (value) {\n  value = toJSON(value)\n  var result = []\n  Object.keys(value).forEach(key => {\n    result.push(stringifyKey(key) + ' = ' + stringifyAnyInline(value[key], false))\n  })\n  return '{ ' + result.join(', ') + (result.length > 0 ? ' ' : '') + '}'\n}\n\nfunction stringifyComplex (prefix, indent, key, value) {\n  var valueType = tomlType(value)\n  /* istanbul ignore else */\n  if (valueType === 'array') {\n    return stringifyArrayOfTables(prefix, indent, key, value)\n  } else if (valueType === 'table') {\n    return stringifyComplexTable(prefix, indent, key, value)\n  } else {\n    throw typeError(valueType)\n  }\n}\n\nfunction stringifyArrayOfTables (prefix, indent, key, values) {\n  values = toJSON(values)\n  validateArray(values)\n  var firstValueType = tomlType(values[0])\n  /* istanbul ignore if */\n  if (firstValueType !== 'table') throw typeError(firstValueType)\n  var fullKey = prefix + stringifyKey(key)\n  var result = ''\n  values.forEach(table => {\n    if (result.length > 0) result += '\\n'\n    result += indent + '[[' + fullKey + ']]\\n'\n    result += stringifyObject(fullKey + '.', indent, table)\n  })\n  return result\n}\n\nfunction stringifyComplexTable (prefix, indent, key, value) {\n  var fullKey = prefix + stringifyKey(key)\n  var result = ''\n  if (getInlineKeys(value).length > 0) {\n    result += indent + '[' + fullKey + ']\\n'\n  }\n  return result + stringifyObject(fullKey + '.', indent, value)\n}\n", "'use strict'\nexports.parse = require('./parse.js')\nexports.stringify = require('./stringify.js')\n", "'use strict';\n\nmodule.exports = (flag, argv = process.argv) => {\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst position = argv.indexOf(prefix + flag);\n\tconst terminatorPosition = argv.indexOf('--');\n\treturn position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);\n};\n", "'use strict';\nconst os = require('os');\nconst tty = require('tty');\nconst hasFlag = require('has-flag');\n\nconst {env} = process;\n\nlet forceColor;\nif (hasFlag('no-color') ||\n\thasFlag('no-colors') ||\n\thasFlag('color=false') ||\n\thasFlag('color=never')) {\n\tforceColor = 0;\n} else if (hasFlag('color') ||\n\thasFlag('colors') ||\n\thasFlag('color=true') ||\n\thasFlag('color=always')) {\n\tforceColor = 1;\n}\n\nif ('FORCE_COLOR' in env) {\n\tif (env.FORCE_COLOR === 'true') {\n\t\tforceColor = 1;\n\t} else if (env.FORCE_COLOR === 'false') {\n\t\tforceColor = 0;\n\t} else {\n\t\tforceColor = env.FORCE_COLOR.length === 0 ? 1 : Math.min(parseInt(env.FORCE_COLOR, 10), 3);\n\t}\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3\n\t};\n}\n\nfunction supportsColor(haveStream, streamIsTTY) {\n\tif (forceColor === 0) {\n\t\treturn 0;\n\t}\n\n\tif (hasFlag('color=16m') ||\n\t\thasFlag('color=full') ||\n\t\thasFlag('color=truecolor')) {\n\t\treturn 3;\n\t}\n\n\tif (hasFlag('color=256')) {\n\t\treturn 2;\n\t}\n\n\tif (haveStream && !streamIsTTY && forceColor === undefined) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor || 0;\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\tif (process.platform === 'win32') {\n\t\t// Windows 10 build 10586 is the first Windows release that supports 256 colors.\n\t\t// Windows 10 build 14931 is the first release that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(osRelease[0]) >= 10 &&\n\t\t\tNumber(osRelease[2]) >= 10586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI', 'GITHUB_ACTIONS', 'BUILDKITE'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app':\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\tcase 'Apple_Terminal':\n\t\t\t\treturn 2;\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\treturn min;\n}\n\nfunction getSupportLevel(stream) {\n\tconst level = supportsColor(stream, stream && stream.isTTY);\n\treturn translateLevel(level);\n}\n\nmodule.exports = {\n\tsupportsColor: getSupportLevel,\n\tstdout: translateLevel(supportsColor(true, tty.isatty(1))),\n\tstderr: translateLevel(supportsColor(true, tty.isatty(2)))\n};\n", "'use strict';\nconst supportsColor = require('supports-color');\nconst hasFlag = require('has-flag');\n\nfunction parseVersion(versionString) {\n\tif (/^\\d{3,4}$/.test(versionString)) {\n\t\t// Env var doesn't always use dots. example: 4601 => 46.1.0\n\t\tconst m = /(\\d{1,2})(\\d{2})/.exec(versionString);\n\t\treturn {\n\t\t\tmajor: 0,\n\t\t\tminor: parseInt(m[1], 10),\n\t\t\tpatch: parseInt(m[2], 10)\n\t\t};\n\t}\n\n\tconst versions = (versionString || '').split('.').map(n => parseInt(n, 10));\n\treturn {\n\t\tmajor: versions[0],\n\t\tminor: versions[1],\n\t\tpatch: versions[2]\n\t};\n}\n\nfunction supportsHyperlink(stream) {\n\tconst {env} = process;\n\n\tif ('FORCE_HYPERLINK' in env) {\n\t\treturn !(env.FORCE_HYPERLINK.length > 0 && parseInt(env.FORCE_HYPERLINK, 10) === 0);\n\t}\n\n\tif (hasFlag('no-hyperlink') || hasFlag('no-hyperlinks') || hasFlag('hyperlink=false') || hasFlag('hyperlink=never')) {\n\t\treturn false;\n\t}\n\n\tif (hasFlag('hyperlink=true') || hasFlag('hyperlink=always')) {\n\t\treturn true;\n\t}\n\n\t// Netlify does not run a TTY, it does not need `supportsColor` check\n\tif ('NETLIFY' in env) {\n\t\treturn true;\n\t}\n\n\t// If they specify no colors, they probably don't want hyperlinks.\n\tif (!supportsColor.supportsColor(stream)) {\n\t\treturn false;\n\t}\n\n\tif (stream && !stream.isTTY) {\n\t\treturn false;\n\t}\n\n\tif (process.platform === 'win32') {\n\t\treturn false;\n\t}\n\n\tif ('CI' in env) {\n\t\treturn false;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn false;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = parseVersion(env.TERM_PROGRAM_VERSION);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app':\n\t\t\t\tif (version.major === 3) {\n\t\t\t\t\treturn version.minor >= 1;\n\t\t\t\t}\n\n\t\t\t\treturn version.major > 3;\n\t\t\tcase 'WezTerm':\n\t\t\t\treturn version.major >= 20200620;\n\t\t\tcase 'vscode':\n\t\t\t\treturn version.major > 1 || version.major === 1 && version.minor >= 72;\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif ('VTE_VERSION' in env) {\n\t\t// 0.50.0 was supposed to support hyperlinks, but throws a segfault\n\t\tif (env.VTE_VERSION === '0.50.0') {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst version = parseVersion(env.VTE_VERSION);\n\t\treturn version.major > 0 || version.minor >= 50;\n\t}\n\n\treturn false;\n}\n\nmodule.exports = {\n\tsupportsHyperlink,\n\tstdout: supportsHyperlink(process.stdout),\n\tstderr: supportsHyperlink(process.stderr)\n};\n", "{\n  \"name\": \"dotenv\",\n  \"version\": \"16.4.5\",\n  \"description\": \"Loads environment variables from .env file\",\n  \"main\": \"lib/main.js\",\n  \"types\": \"lib/main.d.ts\",\n  \"exports\": {\n    \".\": {\n      \"types\": \"./lib/main.d.ts\",\n      \"require\": \"./lib/main.js\",\n      \"default\": \"./lib/main.js\"\n    },\n    \"./config\": \"./config.js\",\n    \"./config.js\": \"./config.js\",\n    \"./lib/env-options\": \"./lib/env-options.js\",\n    \"./lib/env-options.js\": \"./lib/env-options.js\",\n    \"./lib/cli-options\": \"./lib/cli-options.js\",\n    \"./lib/cli-options.js\": \"./lib/cli-options.js\",\n    \"./package.json\": \"./package.json\"\n  },\n  \"scripts\": {\n    \"dts-check\": \"tsc --project tests/types/tsconfig.json\",\n    \"lint\": \"standard\",\n    \"lint-readme\": \"standard-markdown\",\n    \"pretest\": \"npm run lint && npm run dts-check\",\n    \"test\": \"tap tests/*.js --100 -Rspec\",\n    \"test:coverage\": \"tap --coverage-report=lcov\",\n    \"prerelease\": \"npm test\",\n    \"release\": \"standard-version\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git://github.com/motdotla/dotenv.git\"\n  },\n  \"funding\": \"https://dotenvx.com\",\n  \"keywords\": [\n    \"dotenv\",\n    \"env\",\n    \".env\",\n    \"environment\",\n    \"variables\",\n    \"config\",\n    \"settings\"\n  ],\n  \"readmeFilename\": \"README.md\",\n  \"license\": \"BSD-2-Clause\",\n  \"devDependencies\": {\n    \"@definitelytyped/dtslint\": \"^0.0.133\",\n    \"@types/node\": \"^18.11.3\",\n    \"decache\": \"^4.6.1\",\n    \"sinon\": \"^14.0.1\",\n    \"standard\": \"^17.0.0\",\n    \"standard-markdown\": \"^7.1.0\",\n    \"standard-version\": \"^9.5.0\",\n    \"tap\": \"^16.3.0\",\n    \"tar\": \"^6.1.11\",\n    \"typescript\": \"^4.8.4\"\n  },\n  \"engines\": {\n    \"node\": \">=12\"\n  },\n  \"browser\": {\n    \"fs\": false\n  }\n}\n", "const fs = require('fs')\nconst path = require('path')\nconst os = require('os')\nconst crypto = require('crypto')\nconst packageJson = require('../package.json')\n\nconst version = packageJson.version\n\nconst LINE = /(?:^|^)\\s*(?:export\\s+)?([\\w.-]+)(?:\\s*=\\s*?|:\\s+?)(\\s*'(?:\\\\'|[^'])*'|\\s*\"(?:\\\\\"|[^\"])*\"|\\s*`(?:\\\\`|[^`])*`|[^#\\r\\n]+)?\\s*(?:#.*)?(?:$|$)/mg\n\n// Parse src into an Object\nfunction parse (src) {\n  const obj = {}\n\n  // Convert buffer to string\n  let lines = src.toString()\n\n  // Convert line breaks to same format\n  lines = lines.replace(/\\r\\n?/mg, '\\n')\n\n  let match\n  while ((match = LINE.exec(lines)) != null) {\n    const key = match[1]\n\n    // Default undefined or null to empty string\n    let value = (match[2] || '')\n\n    // Remove whitespace\n    value = value.trim()\n\n    // Check if double quoted\n    const maybeQuote = value[0]\n\n    // Remove surrounding quotes\n    value = value.replace(/^(['\"`])([\\s\\S]*)\\1$/mg, '$2')\n\n    // Expand newlines if double quoted\n    if (maybeQuote === '\"') {\n      value = value.replace(/\\\\n/g, '\\n')\n      value = value.replace(/\\\\r/g, '\\r')\n    }\n\n    // Add to object\n    obj[key] = value\n  }\n\n  return obj\n}\n\nfunction _parseVault (options) {\n  const vaultPath = _vaultPath(options)\n\n  // Parse .env.vault\n  const result = DotenvModule.configDotenv({ path: vaultPath })\n  if (!result.parsed) {\n    const err = new Error(`MISSING_DATA: Cannot parse ${vaultPath} for an unknown reason`)\n    err.code = 'MISSING_DATA'\n    throw err\n  }\n\n  // handle scenario for comma separated keys - for use with key rotation\n  // example: DOTENV_KEY=\"dotenv://:key_1234@dotenvx.com/vault/.env.vault?environment=prod,dotenv://:key_7890@dotenvx.com/vault/.env.vault?environment=prod\"\n  const keys = _dotenvKey(options).split(',')\n  const length = keys.length\n\n  let decrypted\n  for (let i = 0; i < length; i++) {\n    try {\n      // Get full key\n      const key = keys[i].trim()\n\n      // Get instructions for decrypt\n      const attrs = _instructions(result, key)\n\n      // Decrypt\n      decrypted = DotenvModule.decrypt(attrs.ciphertext, attrs.key)\n\n      break\n    } catch (error) {\n      // last key\n      if (i + 1 >= length) {\n        throw error\n      }\n      // try next key\n    }\n  }\n\n  // Parse decrypted .env string\n  return DotenvModule.parse(decrypted)\n}\n\nfunction _log (message) {\n  console.log(`[dotenv@${version}][INFO] ${message}`)\n}\n\nfunction _warn (message) {\n  console.log(`[dotenv@${version}][WARN] ${message}`)\n}\n\nfunction _debug (message) {\n  console.log(`[dotenv@${version}][DEBUG] ${message}`)\n}\n\nfunction _dotenvKey (options) {\n  // prioritize developer directly setting options.DOTENV_KEY\n  if (options && options.DOTENV_KEY && options.DOTENV_KEY.length > 0) {\n    return options.DOTENV_KEY\n  }\n\n  // secondary infra already contains a DOTENV_KEY environment variable\n  if (process.env.DOTENV_KEY && process.env.DOTENV_KEY.length > 0) {\n    return process.env.DOTENV_KEY\n  }\n\n  // fallback to empty string\n  return ''\n}\n\nfunction _instructions (result, dotenvKey) {\n  // Parse DOTENV_KEY. Format is a URI\n  let uri\n  try {\n    uri = new URL(dotenvKey)\n  } catch (error) {\n    if (error.code === 'ERR_INVALID_URL') {\n      const err = new Error('INVALID_DOTENV_KEY: Wrong format. Must be in valid uri format like dotenv://:key_1234@dotenvx.com/vault/.env.vault?environment=development')\n      err.code = 'INVALID_DOTENV_KEY'\n      throw err\n    }\n\n    throw error\n  }\n\n  // Get decrypt key\n  const key = uri.password\n  if (!key) {\n    const err = new Error('INVALID_DOTENV_KEY: Missing key part')\n    err.code = 'INVALID_DOTENV_KEY'\n    throw err\n  }\n\n  // Get environment\n  const environment = uri.searchParams.get('environment')\n  if (!environment) {\n    const err = new Error('INVALID_DOTENV_KEY: Missing environment part')\n    err.code = 'INVALID_DOTENV_KEY'\n    throw err\n  }\n\n  // Get ciphertext payload\n  const environmentKey = `DOTENV_VAULT_${environment.toUpperCase()}`\n  const ciphertext = result.parsed[environmentKey] // DOTENV_VAULT_PRODUCTION\n  if (!ciphertext) {\n    const err = new Error(`NOT_FOUND_DOTENV_ENVIRONMENT: Cannot locate environment ${environmentKey} in your .env.vault file.`)\n    err.code = 'NOT_FOUND_DOTENV_ENVIRONMENT'\n    throw err\n  }\n\n  return { ciphertext, key }\n}\n\nfunction _vaultPath (options) {\n  let possibleVaultPath = null\n\n  if (options && options.path && options.path.length > 0) {\n    if (Array.isArray(options.path)) {\n      for (const filepath of options.path) {\n        if (fs.existsSync(filepath)) {\n          possibleVaultPath = filepath.endsWith('.vault') ? filepath : `${filepath}.vault`\n        }\n      }\n    } else {\n      possibleVaultPath = options.path.endsWith('.vault') ? options.path : `${options.path}.vault`\n    }\n  } else {\n    possibleVaultPath = path.resolve(process.cwd(), '.env.vault')\n  }\n\n  if (fs.existsSync(possibleVaultPath)) {\n    return possibleVaultPath\n  }\n\n  return null\n}\n\nfunction _resolveHome (envPath) {\n  return envPath[0] === '~' ? path.join(os.homedir(), envPath.slice(1)) : envPath\n}\n\nfunction _configVault (options) {\n  _log('Loading env from encrypted .env.vault')\n\n  const parsed = DotenvModule._parseVault(options)\n\n  let processEnv = process.env\n  if (options && options.processEnv != null) {\n    processEnv = options.processEnv\n  }\n\n  DotenvModule.populate(processEnv, parsed, options)\n\n  return { parsed }\n}\n\nfunction configDotenv (options) {\n  const dotenvPath = path.resolve(process.cwd(), '.env')\n  let encoding = 'utf8'\n  const debug = Boolean(options && options.debug)\n\n  if (options && options.encoding) {\n    encoding = options.encoding\n  } else {\n    if (debug) {\n      _debug('No encoding is specified. UTF-8 is used by default')\n    }\n  }\n\n  let optionPaths = [dotenvPath] // default, look for .env\n  if (options && options.path) {\n    if (!Array.isArray(options.path)) {\n      optionPaths = [_resolveHome(options.path)]\n    } else {\n      optionPaths = [] // reset default\n      for (const filepath of options.path) {\n        optionPaths.push(_resolveHome(filepath))\n      }\n    }\n  }\n\n  // Build the parsed data in a temporary object (because we need to return it).  Once we have the final\n  // parsed data, we will combine it with process.env (or options.processEnv if provided).\n  let lastError\n  const parsedAll = {}\n  for (const path of optionPaths) {\n    try {\n      // Specifying an encoding returns a string instead of a buffer\n      const parsed = DotenvModule.parse(fs.readFileSync(path, { encoding }))\n\n      DotenvModule.populate(parsedAll, parsed, options)\n    } catch (e) {\n      if (debug) {\n        _debug(`Failed to load ${path} ${e.message}`)\n      }\n      lastError = e\n    }\n  }\n\n  let processEnv = process.env\n  if (options && options.processEnv != null) {\n    processEnv = options.processEnv\n  }\n\n  DotenvModule.populate(processEnv, parsedAll, options)\n\n  if (lastError) {\n    return { parsed: parsedAll, error: lastError }\n  } else {\n    return { parsed: parsedAll }\n  }\n}\n\n// Populates process.env from .env file\nfunction config (options) {\n  // fallback to original dotenv if DOTENV_KEY is not set\n  if (_dotenvKey(options).length === 0) {\n    return DotenvModule.configDotenv(options)\n  }\n\n  const vaultPath = _vaultPath(options)\n\n  // dotenvKey exists but .env.vault file does not exist\n  if (!vaultPath) {\n    _warn(`You set DOTENV_KEY but you are missing a .env.vault file at ${vaultPath}. Did you forget to build it?`)\n\n    return DotenvModule.configDotenv(options)\n  }\n\n  return DotenvModule._configVault(options)\n}\n\nfunction decrypt (encrypted, keyStr) {\n  const key = Buffer.from(keyStr.slice(-64), 'hex')\n  let ciphertext = Buffer.from(encrypted, 'base64')\n\n  const nonce = ciphertext.subarray(0, 12)\n  const authTag = ciphertext.subarray(-16)\n  ciphertext = ciphertext.subarray(12, -16)\n\n  try {\n    const aesgcm = crypto.createDecipheriv('aes-256-gcm', key, nonce)\n    aesgcm.setAuthTag(authTag)\n    return `${aesgcm.update(ciphertext)}${aesgcm.final()}`\n  } catch (error) {\n    const isRange = error instanceof RangeError\n    const invalidKeyLength = error.message === 'Invalid key length'\n    const decryptionFailed = error.message === 'Unsupported state or unable to authenticate data'\n\n    if (isRange || invalidKeyLength) {\n      const err = new Error('INVALID_DOTENV_KEY: It must be 64 characters long (or more)')\n      err.code = 'INVALID_DOTENV_KEY'\n      throw err\n    } else if (decryptionFailed) {\n      const err = new Error('DECRYPTION_FAILED: Please check your DOTENV_KEY')\n      err.code = 'DECRYPTION_FAILED'\n      throw err\n    } else {\n      throw error\n    }\n  }\n}\n\n// Populate process.env with parsed values\nfunction populate (processEnv, parsed, options = {}) {\n  const debug = Boolean(options && options.debug)\n  const override = Boolean(options && options.override)\n\n  if (typeof parsed !== 'object') {\n    const err = new Error('OBJECT_REQUIRED: Please check the processEnv argument being passed to populate')\n    err.code = 'OBJECT_REQUIRED'\n    throw err\n  }\n\n  // Set process.env\n  for (const key of Object.keys(parsed)) {\n    if (Object.prototype.hasOwnProperty.call(processEnv, key)) {\n      if (override === true) {\n        processEnv[key] = parsed[key]\n      }\n\n      if (debug) {\n        if (override === true) {\n          _debug(`\"${key}\" is already defined and WAS overwritten`)\n        } else {\n          _debug(`\"${key}\" is already defined and was NOT overwritten`)\n        }\n      }\n    } else {\n      processEnv[key] = parsed[key]\n    }\n  }\n}\n\nconst DotenvModule = {\n  configDotenv,\n  _configVault,\n  _parseVault,\n  config,\n  decrypt,\n  parse,\n  populate\n}\n\nmodule.exports.configDotenv = DotenvModule.configDotenv\nmodule.exports._configVault = DotenvModule._configVault\nmodule.exports._parseVault = DotenvModule._parseVault\nmodule.exports.config = DotenvModule.config\nmodule.exports.decrypt = DotenvModule.decrypt\nmodule.exports.parse = DotenvModule.parse\nmodule.exports.populate = DotenvModule.populate\n\nmodule.exports = DotenvModule\n", "/*! For license information please see clerk.headless.js.LICENSE.txt */\n!function(e,t){if(\"object\"==typeof exports&&\"object\"==typeof module)module.exports=t();else if(\"function\"==typeof define&&define.amd)define([],t);else{var i=t();for(var r in i)(\"object\"==typeof exports?exports:e)[r]=i[r]}}(globalThis,(function(){return function(){var e,t,i={96:function(e,t,i){\"use strict\";var r=this&&this.__awaiter||function(e,t,i,r){return new(i||(i=Promise))((function(n,s){function o(e){try{l(r.next(e))}catch(t){s(t)}}function a(e){try{l(r.throw(e))}catch(t){s(t)}}function l(e){e.done?n(e.value):new i((function(t){t(e.value)})).then(o,a)}l((r=r.apply(e,t||[])).next())}))},n=this&&this.__generator||function(e,t){var i,r,n,s,o={label:0,sent:function(){if(1&n[0])throw n[1];return n[1]},trys:[],ops:[]};return s={next:a(0),throw:a(1),return:a(2)},\"function\"==typeof Symbol&&(s[Symbol.iterator]=function(){return this}),s;function a(s){return function(a){return function(s){if(i)throw new TypeError(\"Generator is already executing.\");for(;o;)try{if(i=1,r&&(n=2&s[0]?r.return:s[0]?r.throw||((n=r.return)&&n.call(r),0):r.next)&&!(n=n.call(r,s[1])).done)return n;switch(r=0,n&&(s=[2&s[0],n.value]),s[0]){case 0:case 1:n=s;break;case 4:return o.label++,{value:s[1],done:!1};case 5:o.label++,r=s[1],s=[0];continue;case 7:s=o.ops.pop(),o.trys.pop();continue;default:if(!((n=(n=o.trys).length>0&&n[n.length-1])||6!==s[0]&&2!==s[0])){o=0;continue}if(3===s[0]&&(!n||s[1]>n[0]&&s[1]<n[3])){o.label=s[1];break}if(6===s[0]&&o.label<n[1]){o.label=n[1],n=s;break}if(n&&o.label<n[2]){o.label=n[2],o.ops.push(s);break}n[2]&&o.ops.pop(),o.trys.pop();continue}s=t.call(e,o)}catch(a){s=[6,a],r=0}finally{i=n=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}([s,a])}}};Object.defineProperty(t,\"__esModule\",{value:!0});var s=i(565),o=\"browser-tabs-lock-key\";function a(e){return new Promise((function(t){return setTimeout(t,e)}))}function l(e){for(var t=\"\",i=0;i<e;i++)t+=\"0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz\"[Math.floor(61*Math.random())];return t}var c=function(){function e(){this.acquiredIatSet=new Set,this.id=Date.now().toString()+l(15),this.acquireLock=this.acquireLock.bind(this),this.releaseLock=this.releaseLock.bind(this),this.releaseLock__private__=this.releaseLock__private__.bind(this),this.waitForSomethingToChange=this.waitForSomethingToChange.bind(this),this.refreshLockWhileAcquired=this.refreshLockWhileAcquired.bind(this),void 0===e.waiters&&(e.waiters=[])}return e.prototype.acquireLock=function(t,i){return void 0===i&&(i=5e3),r(this,void 0,void 0,(function(){var r,s,c,u,h,d;return n(this,(function(n){switch(n.label){case 0:r=Date.now()+l(4),s=Date.now()+i,c=o+\"-\"+t,u=window.localStorage,n.label=1;case 1:return Date.now()<s?[4,a(30)]:[3,8];case 2:return n.sent(),null!==u.getItem(c)?[3,5]:(h=this.id+\"-\"+t+\"-\"+r,[4,a(Math.floor(25*Math.random()))]);case 3:return n.sent(),u.setItem(c,JSON.stringify({id:this.id,iat:r,timeoutKey:h,timeAcquired:Date.now(),timeRefreshed:Date.now()})),[4,a(30)];case 4:return n.sent(),null!==(d=u.getItem(c))&&(d=JSON.parse(d)).id===this.id&&d.iat===r?(this.acquiredIatSet.add(r),this.refreshLockWhileAcquired(c,r),[2,!0]):[3,7];case 5:return e.lockCorrector(),[4,this.waitForSomethingToChange(s)];case 6:n.sent(),n.label=7;case 7:return r=Date.now()+l(4),[3,1];case 8:return[2,!1]}}))}))},e.prototype.refreshLockWhileAcquired=function(e,t){return r(this,void 0,void 0,(function(){var i=this;return n(this,(function(o){return setTimeout((function(){return r(i,void 0,void 0,(function(){var i,r;return n(this,(function(n){switch(n.label){case 0:return[4,s.default().lock(t)];case 1:return n.sent(),this.acquiredIatSet.has(t)?(i=window.localStorage,null===(r=i.getItem(e))?(s.default().unlock(t),[2]):((r=JSON.parse(r)).timeRefreshed=Date.now(),i.setItem(e,JSON.stringify(r)),s.default().unlock(t),this.refreshLockWhileAcquired(e,t),[2])):(s.default().unlock(t),[2])}}))}))}),1e3),[2]}))}))},e.prototype.waitForSomethingToChange=function(t){return r(this,void 0,void 0,(function(){return n(this,(function(i){switch(i.label){case 0:return[4,new Promise((function(i){var r=!1,n=Date.now(),s=!1;function o(){if(s||(window.removeEventListener(\"storage\",o),e.removeFromWaiting(o),clearTimeout(a),s=!0),!r){r=!0;var t=50-(Date.now()-n);t>0?setTimeout(i,t):i()}}window.addEventListener(\"storage\",o),e.addToWaiting(o);var a=setTimeout(o,Math.max(0,t-Date.now()))}))];case 1:return i.sent(),[2]}}))}))},e.addToWaiting=function(t){this.removeFromWaiting(t),void 0!==e.waiters&&e.waiters.push(t)},e.removeFromWaiting=function(t){void 0!==e.waiters&&(e.waiters=e.waiters.filter((function(e){return e!==t})))},e.notifyWaiters=function(){void 0!==e.waiters&&e.waiters.slice().forEach((function(e){return e()}))},e.prototype.releaseLock=function(e){return r(this,void 0,void 0,(function(){return n(this,(function(t){switch(t.label){case 0:return[4,this.releaseLock__private__(e)];case 1:return[2,t.sent()]}}))}))},e.prototype.releaseLock__private__=function(t){return r(this,void 0,void 0,(function(){var i,r,a;return n(this,(function(n){switch(n.label){case 0:return i=window.localStorage,r=o+\"-\"+t,null===(a=i.getItem(r))?[2]:(a=JSON.parse(a)).id!==this.id?[3,2]:[4,s.default().lock(a.iat)];case 1:n.sent(),this.acquiredIatSet.delete(a.iat),i.removeItem(r),s.default().unlock(a.iat),e.notifyWaiters(),n.label=2;case 2:return[2]}}))}))},e.lockCorrector=function(){for(var t=Date.now()-5e3,i=window.localStorage,r=Object.keys(i),n=!1,s=0;s<r.length;s++){var a=r[s];if(a.includes(o)){var l=i.getItem(a);null!==l&&(void 0===(l=JSON.parse(l)).timeRefreshed&&l.timeAcquired<t||void 0!==l.timeRefreshed&&l.timeRefreshed<t)&&(i.removeItem(a),n=!0)}}n&&e.notifyWaiters()},e.waiters=void 0,e}();t.default=c},565:function(e,t){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var i=function(){function e(){var e=this;this.locked=new Map,this.addToLocked=function(t,i){var r=e.locked.get(t);void 0===r?void 0===i?e.locked.set(t,[]):e.locked.set(t,[i]):void 0!==i&&(r.unshift(i),e.locked.set(t,r))},this.isLocked=function(t){return e.locked.has(t)},this.lock=function(t){return new Promise((function(i,r){e.isLocked(t)?e.addToLocked(t,i):(e.addToLocked(t),i())}))},this.unlock=function(t){var i=e.locked.get(t);if(void 0!==i&&0!==i.length){var r=i.pop();e.locked.set(t,i),void 0!==r&&setTimeout(r,0)}else e.locked.delete(t)}}return e.getInstance=function(){return void 0===e.instance&&(e.instance=new e),e.instance},e}();t.default=function(){return i.getInstance()}},680:function(e,t,i){\"use strict\";var r=i(286),n=i(429),s=n(r(\"String.prototype.indexOf\"));e.exports=function(e,t){var i=r(e,!!t);return\"function\"==typeof i&&s(e,\".prototype.\")>-1?n(i):i}},429:function(e,t,i){\"use strict\";var r=i(90),n=i(286),s=n(\"%Function.prototype.apply%\"),o=n(\"%Function.prototype.call%\"),a=n(\"%Reflect.apply%\",!0)||r.call(o,s),l=n(\"%Object.getOwnPropertyDescriptor%\",!0),c=n(\"%Object.defineProperty%\",!0),u=n(\"%Math.max%\");if(c)try{c({},\"a\",{value:1})}catch(d){c=null}e.exports=function(e){var t=a(r,o,arguments);return l&&c&&l(t,\"length\").configurable&&c(t,\"length\",{value:1+u(0,e.length-(arguments.length-1))}),t};var h=function(){return a(r,s,arguments)};c?c(e.exports,\"apply\",{value:h}):e.exports.apply=h},795:function(e){\"use strict\";var t=Array.prototype.slice,i=Object.prototype.toString;e.exports=function(e){var r=this;if(\"function\"!=typeof r||\"[object Function]\"!==i.call(r))throw new TypeError(\"Function.prototype.bind called on incompatible \"+r);for(var n,s=t.call(arguments,1),o=Math.max(0,r.length-s.length),a=[],l=0;l<o;l++)a.push(\"$\"+l);if(n=Function(\"binder\",\"return function (\"+a.join(\",\")+\"){ return binder.apply(this,arguments); }\")((function(){if(this instanceof n){var i=r.apply(this,s.concat(t.call(arguments)));return Object(i)===i?i:this}return r.apply(e,s.concat(t.call(arguments)))})),r.prototype){var c=function(){};c.prototype=r.prototype,n.prototype=new c,c.prototype=null}return n}},90:function(e,t,i){\"use strict\";var r=i(795);e.exports=Function.prototype.bind||r},286:function(e,t,i){\"use strict\";var r,n=SyntaxError,s=Function,o=TypeError,a=function(e){try{return s('\"use strict\"; return ('+e+\").constructor;\")()}catch(t){}},l=Object.getOwnPropertyDescriptor;if(l)try{l({},\"\")}catch(C){l=null}var c=function(){throw new o},u=l?function(){try{return c}catch(e){try{return l(arguments,\"callee\").get}catch(t){return c}}}():c,h=i(636)(),d=i(486)(),p=Object.getPrototypeOf||(d?function(e){return e.__proto__}:null),f={},m=\"undefined\"!=typeof Uint8Array&&p?p(Uint8Array):r,g={\"%AggregateError%\":\"undefined\"==typeof AggregateError?r:AggregateError,\"%Array%\":Array,\"%ArrayBuffer%\":\"undefined\"==typeof ArrayBuffer?r:ArrayBuffer,\"%ArrayIteratorPrototype%\":h&&p?p([][Symbol.iterator]()):r,\"%AsyncFromSyncIteratorPrototype%\":r,\"%AsyncFunction%\":f,\"%AsyncGenerator%\":f,\"%AsyncGeneratorFunction%\":f,\"%AsyncIteratorPrototype%\":f,\"%Atomics%\":\"undefined\"==typeof Atomics?r:Atomics,\"%BigInt%\":\"undefined\"==typeof BigInt?r:BigInt,\"%BigInt64Array%\":\"undefined\"==typeof BigInt64Array?r:BigInt64Array,\"%BigUint64Array%\":\"undefined\"==typeof BigUint64Array?r:BigUint64Array,\"%Boolean%\":Boolean,\"%DataView%\":\"undefined\"==typeof DataView?r:DataView,\"%Date%\":Date,\"%decodeURI%\":decodeURI,\"%decodeURIComponent%\":decodeURIComponent,\"%encodeURI%\":encodeURI,\"%encodeURIComponent%\":encodeURIComponent,\"%Error%\":Error,\"%eval%\":eval,\"%EvalError%\":EvalError,\"%Float32Array%\":\"undefined\"==typeof Float32Array?r:Float32Array,\"%Float64Array%\":\"undefined\"==typeof Float64Array?r:Float64Array,\"%FinalizationRegistry%\":\"undefined\"==typeof FinalizationRegistry?r:FinalizationRegistry,\"%Function%\":s,\"%GeneratorFunction%\":f,\"%Int8Array%\":\"undefined\"==typeof Int8Array?r:Int8Array,\"%Int16Array%\":\"undefined\"==typeof Int16Array?r:Int16Array,\"%Int32Array%\":\"undefined\"==typeof Int32Array?r:Int32Array,\"%isFinite%\":isFinite,\"%isNaN%\":isNaN,\"%IteratorPrototype%\":h&&p?p(p([][Symbol.iterator]())):r,\"%JSON%\":\"object\"==typeof JSON?JSON:r,\"%Map%\":\"undefined\"==typeof Map?r:Map,\"%MapIteratorPrototype%\":\"undefined\"!=typeof Map&&h&&p?p((new Map)[Symbol.iterator]()):r,\"%Math%\":Math,\"%Number%\":Number,\"%Object%\":Object,\"%parseFloat%\":parseFloat,\"%parseInt%\":parseInt,\"%Promise%\":\"undefined\"==typeof Promise?r:Promise,\"%Proxy%\":\"undefined\"==typeof Proxy?r:Proxy,\"%RangeError%\":RangeError,\"%ReferenceError%\":ReferenceError,\"%Reflect%\":\"undefined\"==typeof Reflect?r:Reflect,\"%RegExp%\":RegExp,\"%Set%\":\"undefined\"==typeof Set?r:Set,\"%SetIteratorPrototype%\":\"undefined\"!=typeof Set&&h&&p?p((new Set)[Symbol.iterator]()):r,\"%SharedArrayBuffer%\":\"undefined\"==typeof SharedArrayBuffer?r:SharedArrayBuffer,\"%String%\":String,\"%StringIteratorPrototype%\":h&&p?p(\"\"[Symbol.iterator]()):r,\"%Symbol%\":h?Symbol:r,\"%SyntaxError%\":n,\"%ThrowTypeError%\":u,\"%TypedArray%\":m,\"%TypeError%\":o,\"%Uint8Array%\":\"undefined\"==typeof Uint8Array?r:Uint8Array,\"%Uint8ClampedArray%\":\"undefined\"==typeof Uint8ClampedArray?r:Uint8ClampedArray,\"%Uint16Array%\":\"undefined\"==typeof Uint16Array?r:Uint16Array,\"%Uint32Array%\":\"undefined\"==typeof Uint32Array?r:Uint32Array,\"%URIError%\":URIError,\"%WeakMap%\":\"undefined\"==typeof WeakMap?r:WeakMap,\"%WeakRef%\":\"undefined\"==typeof WeakRef?r:WeakRef,\"%WeakSet%\":\"undefined\"==typeof WeakSet?r:WeakSet};if(p)try{null.error}catch(C){var y=p(p(C));g[\"%Error.prototype%\"]=y}var v=function e(t){var i;if(\"%AsyncFunction%\"===t)i=a(\"async function () {}\");else if(\"%GeneratorFunction%\"===t)i=a(\"function* () {}\");else if(\"%AsyncGeneratorFunction%\"===t)i=a(\"async function* () {}\");else if(\"%AsyncGenerator%\"===t){var r=e(\"%AsyncGeneratorFunction%\");r&&(i=r.prototype)}else if(\"%AsyncIteratorPrototype%\"===t){var n=e(\"%AsyncGenerator%\");n&&p&&(i=p(n.prototype))}return g[t]=i,i},w={\"%ArrayBufferPrototype%\":[\"ArrayBuffer\",\"prototype\"],\"%ArrayPrototype%\":[\"Array\",\"prototype\"],\"%ArrayProto_entries%\":[\"Array\",\"prototype\",\"entries\"],\"%ArrayProto_forEach%\":[\"Array\",\"prototype\",\"forEach\"],\"%ArrayProto_keys%\":[\"Array\",\"prototype\",\"keys\"],\"%ArrayProto_values%\":[\"Array\",\"prototype\",\"values\"],\"%AsyncFunctionPrototype%\":[\"AsyncFunction\",\"prototype\"],\"%AsyncGenerator%\":[\"AsyncGeneratorFunction\",\"prototype\"],\"%AsyncGeneratorPrototype%\":[\"AsyncGeneratorFunction\",\"prototype\",\"prototype\"],\"%BooleanPrototype%\":[\"Boolean\",\"prototype\"],\"%DataViewPrototype%\":[\"DataView\",\"prototype\"],\"%DatePrototype%\":[\"Date\",\"prototype\"],\"%ErrorPrototype%\":[\"Error\",\"prototype\"],\"%EvalErrorPrototype%\":[\"EvalError\",\"prototype\"],\"%Float32ArrayPrototype%\":[\"Float32Array\",\"prototype\"],\"%Float64ArrayPrototype%\":[\"Float64Array\",\"prototype\"],\"%FunctionPrototype%\":[\"Function\",\"prototype\"],\"%Generator%\":[\"GeneratorFunction\",\"prototype\"],\"%GeneratorPrototype%\":[\"GeneratorFunction\",\"prototype\",\"prototype\"],\"%Int8ArrayPrototype%\":[\"Int8Array\",\"prototype\"],\"%Int16ArrayPrototype%\":[\"Int16Array\",\"prototype\"],\"%Int32ArrayPrototype%\":[\"Int32Array\",\"prototype\"],\"%JSONParse%\":[\"JSON\",\"parse\"],\"%JSONStringify%\":[\"JSON\",\"stringify\"],\"%MapPrototype%\":[\"Map\",\"prototype\"],\"%NumberPrototype%\":[\"Number\",\"prototype\"],\"%ObjectPrototype%\":[\"Object\",\"prototype\"],\"%ObjProto_toString%\":[\"Object\",\"prototype\",\"toString\"],\"%ObjProto_valueOf%\":[\"Object\",\"prototype\",\"valueOf\"],\"%PromisePrototype%\":[\"Promise\",\"prototype\"],\"%PromiseProto_then%\":[\"Promise\",\"prototype\",\"then\"],\"%Promise_all%\":[\"Promise\",\"all\"],\"%Promise_reject%\":[\"Promise\",\"reject\"],\"%Promise_resolve%\":[\"Promise\",\"resolve\"],\"%RangeErrorPrototype%\":[\"RangeError\",\"prototype\"],\"%ReferenceErrorPrototype%\":[\"ReferenceError\",\"prototype\"],\"%RegExpPrototype%\":[\"RegExp\",\"prototype\"],\"%SetPrototype%\":[\"Set\",\"prototype\"],\"%SharedArrayBufferPrototype%\":[\"SharedArrayBuffer\",\"prototype\"],\"%StringPrototype%\":[\"String\",\"prototype\"],\"%SymbolPrototype%\":[\"Symbol\",\"prototype\"],\"%SyntaxErrorPrototype%\":[\"SyntaxError\",\"prototype\"],\"%TypedArrayPrototype%\":[\"TypedArray\",\"prototype\"],\"%TypeErrorPrototype%\":[\"TypeError\",\"prototype\"],\"%Uint8ArrayPrototype%\":[\"Uint8Array\",\"prototype\"],\"%Uint8ClampedArrayPrototype%\":[\"Uint8ClampedArray\",\"prototype\"],\"%Uint16ArrayPrototype%\":[\"Uint16Array\",\"prototype\"],\"%Uint32ArrayPrototype%\":[\"Uint32Array\",\"prototype\"],\"%URIErrorPrototype%\":[\"URIError\",\"prototype\"],\"%WeakMapPrototype%\":[\"WeakMap\",\"prototype\"],\"%WeakSetPrototype%\":[\"WeakSet\",\"prototype\"]},b=i(90),_=i(198),S=b.call(Function.call,Array.prototype.concat),k=b.call(Function.apply,Array.prototype.splice),U=b.call(Function.call,String.prototype.replace),A=b.call(Function.call,String.prototype.slice),O=b.call(Function.call,RegExp.prototype.exec),P=/[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g,E=/\\\\(\\\\)?/g,I=function(e,t){var i,r=e;if(_(w,r)&&(r=\"%\"+(i=w[r])[0]+\"%\"),_(g,r)){var s=g[r];if(s===f&&(s=v(r)),void 0===s&&!t)throw new o(\"intrinsic \"+e+\" exists, but is not available. Please file an issue!\");return{alias:i,name:r,value:s}}throw new n(\"intrinsic \"+e+\" does not exist!\")};e.exports=function(e,t){if(\"string\"!=typeof e||0===e.length)throw new o(\"intrinsic name must be a non-empty string\");if(arguments.length>1&&\"boolean\"!=typeof t)throw new o('\"allowMissing\" argument must be a boolean');if(null===O(/^%?[^%]*%?$/,e))throw new n(\"`%` may not be present anywhere but at the beginning and end of the intrinsic name\");var i=function(e){var t=A(e,0,1),i=A(e,-1);if(\"%\"===t&&\"%\"!==i)throw new n(\"invalid intrinsic syntax, expected closing `%`\");if(\"%\"===i&&\"%\"!==t)throw new n(\"invalid intrinsic syntax, expected opening `%`\");var r=[];return U(e,P,(function(e,t,i,n){r[r.length]=i?U(n,E,\"$1\"):t||e})),r}(e),r=i.length>0?i[0]:\"\",s=I(\"%\"+r+\"%\",t),a=s.name,c=s.value,u=!1,h=s.alias;h&&(r=h[0],k(i,S([0,1],h)));for(var d=1,p=!0;d<i.length;d+=1){var f=i[d],m=A(f,0,1),y=A(f,-1);if(('\"'===m||\"'\"===m||\"`\"===m||'\"'===y||\"'\"===y||\"`\"===y)&&m!==y)throw new n(\"property names with quotes must have matching quotes\");if(\"constructor\"!==f&&p||(u=!0),_(g,a=\"%\"+(r+=\".\"+f)+\"%\"))c=g[a];else if(null!=c){if(!(f in c)){if(!t)throw new o(\"base intrinsic for \"+e+\" exists, but the property is not available.\");return}if(l&&d+1>=i.length){var v=l(c,f);c=(p=!!v)&&\"get\"in v&&!(\"originalValue\"in v.get)?v.get:c[f]}else p=_(c,f),c=c[f];p&&!u&&(g[a]=c)}}return c}},450:function(e){e.exports=function(e,t){if(\"string\"!=typeof e)throw new TypeError(\"Expected a string\");for(var i,r=String(e),n=\"\",s=!!t&&!!t.extended,o=!!t&&!!t.globstar,a=!1,l=t&&\"string\"==typeof t.flags?t.flags:\"\",c=0,u=r.length;c<u;c++)switch(i=r[c]){case\"/\":case\"$\":case\"^\":case\"+\":case\".\":case\"(\":case\")\":case\"=\":case\"!\":case\"|\":n+=\"\\\\\"+i;break;case\"?\":if(s){n+=\".\";break}case\"[\":case\"]\":if(s){n+=i;break}case\"{\":if(s){a=!0,n+=\"(\";break}case\"}\":if(s){a=!1,n+=\")\";break}case\",\":if(a){n+=\"|\";break}n+=\"\\\\\"+i;break;case\"*\":for(var h=r[c-1],d=1;\"*\"===r[c+1];)d++,c++;var p=r[c+1];o?!(d>1)||\"/\"!==h&&void 0!==h||\"/\"!==p&&void 0!==p?n+=\"([^/]*)\":(n+=\"((?:[^/]*(?:/|$))*)\",c++):n+=\".*\";break;default:n+=i}return l&&~l.indexOf(\"g\")||(n=\"^\"+n+\"$\"),new RegExp(n,l)}},486:function(e){\"use strict\";var t={foo:{}},i=Object;e.exports=function(){return{__proto__:t}.foo===t.foo&&!({__proto__:null}instanceof i)}},636:function(e,t,i){\"use strict\";var r=\"undefined\"!=typeof Symbol&&Symbol,n=i(679);e.exports=function(){return\"function\"==typeof r&&\"function\"==typeof Symbol&&\"symbol\"==typeof r(\"foo\")&&\"symbol\"==typeof Symbol(\"bar\")&&n()}},679:function(e){\"use strict\";e.exports=function(){if(\"function\"!=typeof Symbol||\"function\"!=typeof Object.getOwnPropertySymbols)return!1;if(\"symbol\"==typeof Symbol.iterator)return!0;var e={},t=Symbol(\"test\"),i=Object(t);if(\"string\"==typeof t)return!1;if(\"[object Symbol]\"!==Object.prototype.toString.call(t))return!1;if(\"[object Symbol]\"!==Object.prototype.toString.call(i))return!1;for(t in e[t]=42,e)return!1;if(\"function\"==typeof Object.keys&&0!==Object.keys(e).length)return!1;if(\"function\"==typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(e).length)return!1;var r=Object.getOwnPropertySymbols(e);if(1!==r.length||r[0]!==t)return!1;if(!Object.prototype.propertyIsEnumerable.call(e,t))return!1;if(\"function\"==typeof Object.getOwnPropertyDescriptor){var n=Object.getOwnPropertyDescriptor(e,t);if(42!==n.value||!0!==n.enumerable)return!1}return!0}},198:function(e,t,i){\"use strict\";var r=i(90);e.exports=r.call(Function.call,Object.prototype.hasOwnProperty)},500:function(e,t,i){var r=\"function\"==typeof Map&&Map.prototype,n=Object.getOwnPropertyDescriptor&&r?Object.getOwnPropertyDescriptor(Map.prototype,\"size\"):null,s=r&&n&&\"function\"==typeof n.get?n.get:null,o=r&&Map.prototype.forEach,a=\"function\"==typeof Set&&Set.prototype,l=Object.getOwnPropertyDescriptor&&a?Object.getOwnPropertyDescriptor(Set.prototype,\"size\"):null,c=a&&l&&\"function\"==typeof l.get?l.get:null,u=a&&Set.prototype.forEach,h=\"function\"==typeof WeakMap&&WeakMap.prototype?WeakMap.prototype.has:null,d=\"function\"==typeof WeakSet&&WeakSet.prototype?WeakSet.prototype.has:null,p=\"function\"==typeof WeakRef&&WeakRef.prototype?WeakRef.prototype.deref:null,f=Boolean.prototype.valueOf,m=Object.prototype.toString,g=Function.prototype.toString,y=String.prototype.match,v=String.prototype.slice,w=String.prototype.replace,b=String.prototype.toUpperCase,_=String.prototype.toLowerCase,S=RegExp.prototype.test,k=Array.prototype.concat,U=Array.prototype.join,A=Array.prototype.slice,O=Math.floor,P=\"function\"==typeof BigInt?BigInt.prototype.valueOf:null,E=Object.getOwnPropertySymbols,I=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?Symbol.prototype.toString:null,C=\"function\"==typeof Symbol&&\"object\"==typeof Symbol.iterator,x=\"function\"==typeof Symbol&&Symbol.toStringTag&&(Symbol.toStringTag,1)?Symbol.toStringTag:null,T=Object.prototype.propertyIsEnumerable,R=(\"function\"==typeof Reflect?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(e){return e.__proto__}:null);function M(e,t){if(e===1/0||e===-1/0||e!=e||e&&e>-1e3&&e<1e3||S.call(/e/,t))return t;var i=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if(\"number\"==typeof e){var r=e<0?-O(-e):O(e);if(r!==e){var n=String(r),s=v.call(t,n.length+1);return w.call(n,i,\"$&_\")+\".\"+w.call(w.call(s,/([0-9]{3})/g,\"$&_\"),/_$/,\"\")}}return w.call(t,i,\"$&_\")}var N=i(260),j=N.custom,F=$(j)?j:null;function W(e,t,i){var r=\"double\"===(i.quoteStyle||t)?'\"':\"'\";return r+e+r}function z(e){return w.call(String(e),/\"/g,\"&quot;\")}function L(e){return!(\"[object Array]\"!==V(e)||x&&\"object\"==typeof e&&x in e)}function D(e){return!(\"[object RegExp]\"!==V(e)||x&&\"object\"==typeof e&&x in e)}function $(e){if(C)return e&&\"object\"==typeof e&&e instanceof Symbol;if(\"symbol\"==typeof e)return!0;if(!e||\"object\"!=typeof e||!I)return!1;try{return I.call(e),!0}catch(t){}return!1}e.exports=function e(t,i,r,n){var a=i||{};if(B(a,\"quoteStyle\")&&\"single\"!==a.quoteStyle&&\"double\"!==a.quoteStyle)throw new TypeError('option \"quoteStyle\" must be \"single\" or \"double\"');if(B(a,\"maxStringLength\")&&(\"number\"==typeof a.maxStringLength?a.maxStringLength<0&&a.maxStringLength!==1/0:null!==a.maxStringLength))throw new TypeError('option \"maxStringLength\", if provided, must be a positive integer, Infinity, or `null`');var l=!B(a,\"customInspect\")||a.customInspect;if(\"boolean\"!=typeof l&&\"symbol\"!==l)throw new TypeError(\"option \\\"customInspect\\\", if provided, must be `true`, `false`, or `'symbol'`\");if(B(a,\"indent\")&&null!==a.indent&&\"\\t\"!==a.indent&&!(parseInt(a.indent,10)===a.indent&&a.indent>0))throw new TypeError('option \"indent\" must be \"\\\\t\", an integer > 0, or `null`');if(B(a,\"numericSeparator\")&&\"boolean\"!=typeof a.numericSeparator)throw new TypeError('option \"numericSeparator\", if provided, must be `true` or `false`');var m=a.numericSeparator;if(void 0===t)return\"undefined\";if(null===t)return\"null\";if(\"boolean\"==typeof t)return t?\"true\":\"false\";if(\"string\"==typeof t)return q(t,a);if(\"number\"==typeof t){if(0===t)return 1/0/t>0?\"0\":\"-0\";var b=String(t);return m?M(t,b):b}if(\"bigint\"==typeof t){var S=String(t)+\"n\";return m?M(t,S):S}var O=void 0===a.depth?5:a.depth;if(void 0===r&&(r=0),r>=O&&O>0&&\"object\"==typeof t)return L(t)?\"[Array]\":\"[Object]\";var E,j=function(e,t){var i;if(\"\\t\"===e.indent)i=\"\\t\";else{if(!(\"number\"==typeof e.indent&&e.indent>0))return null;i=U.call(Array(e.indent+1),\" \")}return{base:i,prev:U.call(Array(t+1),i)}}(a,r);if(void 0===n)n=[];else if(K(n,t)>=0)return\"[Circular]\";function J(t,i,s){if(i&&(n=A.call(n)).push(i),s){var o={depth:a.depth};return B(a,\"quoteStyle\")&&(o.quoteStyle=a.quoteStyle),e(t,o,r+1,n)}return e(t,a,r+1,n)}if(\"function\"==typeof t&&!D(t)){var G=function(e){if(e.name)return e.name;var t=y.call(g.call(e),/^function\\s*([\\w$]+)/);return t?t[1]:null}(t),ee=X(t,J);return\"[Function\"+(G?\": \"+G:\" (anonymous)\")+\"]\"+(ee.length>0?\" { \"+U.call(ee,\", \")+\" }\":\"\")}if($(t)){var te=C?w.call(String(t),/^(Symbol\\(.*\\))_[^)]*$/,\"$1\"):I.call(t);return\"object\"!=typeof t||C?te:H(te)}if((E=t)&&\"object\"==typeof E&&(\"undefined\"!=typeof HTMLElement&&E instanceof HTMLElement||\"string\"==typeof E.nodeName&&\"function\"==typeof E.getAttribute)){for(var ie=\"<\"+_.call(String(t.nodeName)),re=t.attributes||[],ne=0;ne<re.length;ne++)ie+=\" \"+re[ne].name+\"=\"+W(z(re[ne].value),\"double\",a);return ie+=\">\",t.childNodes&&t.childNodes.length&&(ie+=\"...\"),ie+\"</\"+_.call(String(t.nodeName))+\">\"}if(L(t)){if(0===t.length)return\"[]\";var se=X(t,J);return j&&!function(e){for(var t=0;t<e.length;t++)if(K(e[t],\"\\n\")>=0)return!1;return!0}(se)?\"[\"+Z(se,j)+\"]\":\"[ \"+U.call(se,\", \")+\" ]\"}if(function(e){return!(\"[object Error]\"!==V(e)||x&&\"object\"==typeof e&&x in e)}(t)){var oe=X(t,J);return\"cause\"in Error.prototype||!(\"cause\"in t)||T.call(t,\"cause\")?0===oe.length?\"[\"+String(t)+\"]\":\"{ [\"+String(t)+\"] \"+U.call(oe,\", \")+\" }\":\"{ [\"+String(t)+\"] \"+U.call(k.call(\"[cause]: \"+J(t.cause),oe),\", \")+\" }\"}if(\"object\"==typeof t&&l){if(F&&\"function\"==typeof t[F]&&N)return N(t,{depth:O-r});if(\"symbol\"!==l&&\"function\"==typeof t.inspect)return t.inspect()}if(function(e){if(!s||!e||\"object\"!=typeof e)return!1;try{s.call(e);try{c.call(e)}catch(ie){return!0}return e instanceof Map}catch(t){}return!1}(t)){var ae=[];return o&&o.call(t,(function(e,i){ae.push(J(i,t,!0)+\" => \"+J(e,t))})),Y(\"Map\",s.call(t),ae,j)}if(function(e){if(!c||!e||\"object\"!=typeof e)return!1;try{c.call(e);try{s.call(e)}catch(t){return!0}return e instanceof Set}catch(i){}return!1}(t)){var le=[];return u&&u.call(t,(function(e){le.push(J(e,t))})),Y(\"Set\",c.call(t),le,j)}if(function(e){if(!h||!e||\"object\"!=typeof e)return!1;try{h.call(e,h);try{d.call(e,d)}catch(ie){return!0}return e instanceof WeakMap}catch(t){}return!1}(t))return Q(\"WeakMap\");if(function(e){if(!d||!e||\"object\"!=typeof e)return!1;try{d.call(e,d);try{h.call(e,h)}catch(ie){return!0}return e instanceof WeakSet}catch(t){}return!1}(t))return Q(\"WeakSet\");if(function(e){if(!p||!e||\"object\"!=typeof e)return!1;try{return p.call(e),!0}catch(t){}return!1}(t))return Q(\"WeakRef\");if(function(e){return!(\"[object Number]\"!==V(e)||x&&\"object\"==typeof e&&x in e)}(t))return H(J(Number(t)));if(function(e){if(!e||\"object\"!=typeof e||!P)return!1;try{return P.call(e),!0}catch(t){}return!1}(t))return H(J(P.call(t)));if(function(e){return!(\"[object Boolean]\"!==V(e)||x&&\"object\"==typeof e&&x in e)}(t))return H(f.call(t));if(function(e){return!(\"[object String]\"!==V(e)||x&&\"object\"==typeof e&&x in e)}(t))return H(J(String(t)));if(!function(e){return!(\"[object Date]\"!==V(e)||x&&\"object\"==typeof e&&x in e)}(t)&&!D(t)){var ce=X(t,J),ue=R?R(t)===Object.prototype:t instanceof Object||t.constructor===Object,he=t instanceof Object?\"\":\"null prototype\",de=!ue&&x&&Object(t)===t&&x in t?v.call(V(t),8,-1):he?\"Object\":\"\",pe=(ue||\"function\"!=typeof t.constructor?\"\":t.constructor.name?t.constructor.name+\" \":\"\")+(de||he?\"[\"+U.call(k.call([],de||[],he||[]),\": \")+\"] \":\"\");return 0===ce.length?pe+\"{}\":j?pe+\"{\"+Z(ce,j)+\"}\":pe+\"{ \"+U.call(ce,\", \")+\" }\"}return String(t)};var J=Object.prototype.hasOwnProperty||function(e){return e in this};function B(e,t){return J.call(e,t)}function V(e){return m.call(e)}function K(e,t){if(e.indexOf)return e.indexOf(t);for(var i=0,r=e.length;i<r;i++)if(e[i]===t)return i;return-1}function q(e,t){if(e.length>t.maxStringLength){var i=e.length-t.maxStringLength,r=\"... \"+i+\" more character\"+(i>1?\"s\":\"\");return q(v.call(e,0,t.maxStringLength),t)+r}return W(w.call(w.call(e,/(['\\\\])/g,\"\\\\$1\"),/[\\x00-\\x1f]/g,G),\"single\",t)}function G(e){var t=e.charCodeAt(0),i={8:\"b\",9:\"t\",10:\"n\",12:\"f\",13:\"r\"}[t];return i?\"\\\\\"+i:\"\\\\x\"+(t<16?\"0\":\"\")+b.call(t.toString(16))}function H(e){return\"Object(\"+e+\")\"}function Q(e){return e+\" { ? }\"}function Y(e,t,i,r){return e+\" (\"+t+\") {\"+(r?Z(i,r):U.call(i,\", \"))+\"}\"}function Z(e,t){if(0===e.length)return\"\";var i=\"\\n\"+t.prev+t.base;return i+U.call(e,\",\"+i)+\"\\n\"+t.prev}function X(e,t){var i=L(e),r=[];if(i){r.length=e.length;for(var n=0;n<e.length;n++)r[n]=B(e,n)?t(e[n],e):\"\"}var s,o=\"function\"==typeof E?E(e):[];if(C){s={};for(var a=0;a<o.length;a++)s[\"$\"+o[a]]=o[a]}for(var l in e)B(e,l)&&(i&&String(Number(l))===l&&l<e.length||C&&s[\"$\"+l]instanceof Symbol||(S.call(/[^\\w$]/,l)?r.push(t(l,e)+\": \"+t(e[l],e)):r.push(l+\": \"+t(e[l],e))));if(\"function\"==typeof E)for(var c=0;c<o.length;c++)T.call(e,o[c])&&r.push(\"[\"+t(o[c])+\"]: \"+t(e[o[c]],e));return r}},527:function(e){\"use strict\";var t=String.prototype.replace,i=/%20/g,r=\"RFC3986\";e.exports={default:r,formatters:{RFC1738:function(e){return t.call(e,i,\"+\")},RFC3986:function(e){return String(e)}},RFC1738:\"RFC1738\",RFC3986:r}},126:function(e,t,i){\"use strict\";var r=i(845),n=i(166),s=i(527);e.exports={formats:s,parse:n,stringify:r}},166:function(e,t,i){\"use strict\";var r=i(493),n=Object.prototype.hasOwnProperty,s=Array.isArray,o={allowDots:!1,allowPrototypes:!1,allowSparse:!1,arrayLimit:20,charset:\"utf-8\",charsetSentinel:!1,comma:!1,decoder:r.decode,delimiter:\"&\",depth:5,ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1e3,parseArrays:!0,plainObjects:!1,strictNullHandling:!1},a=function(e){return e.replace(/&#(\\d+);/g,(function(e,t){return String.fromCharCode(parseInt(t,10))}))},l=function(e,t){return e&&\"string\"==typeof e&&t.comma&&e.indexOf(\",\")>-1?e.split(\",\"):e},c=function(e,t,i,r){if(e){var s=i.allowDots?e.replace(/\\.([^.[]+)/g,\"[$1]\"):e,o=/(\\[[^[\\]]*])/g,a=i.depth>0&&/(\\[[^[\\]]*])/.exec(s),c=a?s.slice(0,a.index):s,u=[];if(c){if(!i.plainObjects&&n.call(Object.prototype,c)&&!i.allowPrototypes)return;u.push(c)}for(var h=0;i.depth>0&&null!==(a=o.exec(s))&&h<i.depth;){if(h+=1,!i.plainObjects&&n.call(Object.prototype,a[1].slice(1,-1))&&!i.allowPrototypes)return;u.push(a[1])}return a&&u.push(\"[\"+s.slice(a.index)+\"]\"),function(e,t,i,r){for(var n=r?t:l(t,i),s=e.length-1;s>=0;--s){var o,a=e[s];if(\"[]\"===a&&i.parseArrays)o=[].concat(n);else{o=i.plainObjects?Object.create(null):{};var c=\"[\"===a.charAt(0)&&\"]\"===a.charAt(a.length-1)?a.slice(1,-1):a,u=parseInt(c,10);i.parseArrays||\"\"!==c?!isNaN(u)&&a!==c&&String(u)===c&&u>=0&&i.parseArrays&&u<=i.arrayLimit?(o=[])[u]=n:\"__proto__\"!==c&&(o[c]=n):o={0:n}}n=o}return n}(u,t,i,r)}};e.exports=function(e,t){var i=function(e){if(!e)return o;if(null!==e.decoder&&void 0!==e.decoder&&\"function\"!=typeof e.decoder)throw new TypeError(\"Decoder has to be a function.\");if(void 0!==e.charset&&\"utf-8\"!==e.charset&&\"iso-8859-1\"!==e.charset)throw new TypeError(\"The charset option must be either utf-8, iso-8859-1, or undefined\");var t=void 0===e.charset?o.charset:e.charset;return{allowDots:void 0===e.allowDots?o.allowDots:!!e.allowDots,allowPrototypes:\"boolean\"==typeof e.allowPrototypes?e.allowPrototypes:o.allowPrototypes,allowSparse:\"boolean\"==typeof e.allowSparse?e.allowSparse:o.allowSparse,arrayLimit:\"number\"==typeof e.arrayLimit?e.arrayLimit:o.arrayLimit,charset:t,charsetSentinel:\"boolean\"==typeof e.charsetSentinel?e.charsetSentinel:o.charsetSentinel,comma:\"boolean\"==typeof e.comma?e.comma:o.comma,decoder:\"function\"==typeof e.decoder?e.decoder:o.decoder,delimiter:\"string\"==typeof e.delimiter||r.isRegExp(e.delimiter)?e.delimiter:o.delimiter,depth:\"number\"==typeof e.depth||!1===e.depth?+e.depth:o.depth,ignoreQueryPrefix:!0===e.ignoreQueryPrefix,interpretNumericEntities:\"boolean\"==typeof e.interpretNumericEntities?e.interpretNumericEntities:o.interpretNumericEntities,parameterLimit:\"number\"==typeof e.parameterLimit?e.parameterLimit:o.parameterLimit,parseArrays:!1!==e.parseArrays,plainObjects:\"boolean\"==typeof e.plainObjects?e.plainObjects:o.plainObjects,strictNullHandling:\"boolean\"==typeof e.strictNullHandling?e.strictNullHandling:o.strictNullHandling}}(t);if(\"\"===e||null==e)return i.plainObjects?Object.create(null):{};for(var u=\"string\"==typeof e?function(e,t){var i,c={},u=t.ignoreQueryPrefix?e.replace(/^\\?/,\"\"):e,h=t.parameterLimit===1/0?void 0:t.parameterLimit,d=u.split(t.delimiter,h),p=-1,f=t.charset;if(t.charsetSentinel)for(i=0;i<d.length;++i)0===d[i].indexOf(\"utf8=\")&&(\"utf8=%E2%9C%93\"===d[i]?f=\"utf-8\":\"utf8=%26%2310003%3B\"===d[i]&&(f=\"iso-8859-1\"),p=i,i=d.length);for(i=0;i<d.length;++i)if(i!==p){var m,g,y=d[i],v=y.indexOf(\"]=\"),w=-1===v?y.indexOf(\"=\"):v+1;-1===w?(m=t.decoder(y,o.decoder,f,\"key\"),g=t.strictNullHandling?null:\"\"):(m=t.decoder(y.slice(0,w),o.decoder,f,\"key\"),g=r.maybeMap(l(y.slice(w+1),t),(function(e){return t.decoder(e,o.decoder,f,\"value\")}))),g&&t.interpretNumericEntities&&\"iso-8859-1\"===f&&(g=a(g)),y.indexOf(\"[]=\")>-1&&(g=s(g)?[g]:g),n.call(c,m)?c[m]=r.combine(c[m],g):c[m]=g}return c}(e,i):e,h=i.plainObjects?Object.create(null):{},d=Object.keys(u),p=0;p<d.length;++p){var f=d[p],m=c(f,u[f],i,\"string\"==typeof e);h=r.merge(h,m,i)}return!0===i.allowSparse?h:r.compact(h)}},845:function(e,t,i){\"use strict\";var r=i(294),n=i(493),s=i(527),o=Object.prototype.hasOwnProperty,a={brackets:function(e){return e+\"[]\"},comma:\"comma\",indices:function(e,t){return e+\"[\"+t+\"]\"},repeat:function(e){return e}},l=Array.isArray,c=String.prototype.split,u=Array.prototype.push,h=function(e,t){u.apply(e,l(t)?t:[t])},d=Date.prototype.toISOString,p=s.default,f={addQueryPrefix:!1,allowDots:!1,charset:\"utf-8\",charsetSentinel:!1,delimiter:\"&\",encode:!0,encoder:n.encode,encodeValuesOnly:!1,format:p,formatter:s.formatters[p],indices:!1,serializeDate:function(e){return d.call(e)},skipNulls:!1,strictNullHandling:!1},m={},g=function e(t,i,s,o,a,u,d,p,g,y,v,w,b,_,S,k){for(var U,A=t,O=k,P=0,E=!1;void 0!==(O=O.get(m))&&!E;){var I=O.get(t);if(P+=1,void 0!==I){if(I===P)throw new RangeError(\"Cyclic object value\");E=!0}void 0===O.get(m)&&(P=0)}if(\"function\"==typeof p?A=p(i,A):A instanceof Date?A=v(A):\"comma\"===s&&l(A)&&(A=n.maybeMap(A,(function(e){return e instanceof Date?v(e):e}))),null===A){if(a)return d&&!_?d(i,f.encoder,S,\"key\",w):i;A=\"\"}if(\"string\"==typeof(U=A)||\"number\"==typeof U||\"boolean\"==typeof U||\"symbol\"==typeof U||\"bigint\"==typeof U||n.isBuffer(A)){if(d){var C=_?i:d(i,f.encoder,S,\"key\",w);if(\"comma\"===s&&_){for(var x=c.call(String(A),\",\"),T=\"\",R=0;R<x.length;++R)T+=(0===R?\"\":\",\")+b(d(x[R],f.encoder,S,\"value\",w));return[b(C)+(o&&l(A)&&1===x.length?\"[]\":\"\")+\"=\"+T]}return[b(C)+\"=\"+b(d(A,f.encoder,S,\"value\",w))]}return[b(i)+\"=\"+b(String(A))]}var M,N=[];if(void 0===A)return N;if(\"comma\"===s&&l(A))M=[{value:A.length>0?A.join(\",\")||null:void 0}];else if(l(p))M=p;else{var j=Object.keys(A);M=g?j.sort(g):j}for(var F=o&&l(A)&&1===A.length?i+\"[]\":i,W=0;W<M.length;++W){var z=M[W],L=\"object\"==typeof z&&void 0!==z.value?z.value:A[z];if(!u||null!==L){var D=l(A)?\"function\"==typeof s?s(F,z):F:F+(y?\".\"+z:\"[\"+z+\"]\");k.set(t,P);var $=r();$.set(m,k),h(N,e(L,D,s,o,a,u,d,p,g,y,v,w,b,_,S,$))}}return N};e.exports=function(e,t){var i,n=e,c=function(e){if(!e)return f;if(null!==e.encoder&&void 0!==e.encoder&&\"function\"!=typeof e.encoder)throw new TypeError(\"Encoder has to be a function.\");var t=e.charset||f.charset;if(void 0!==e.charset&&\"utf-8\"!==e.charset&&\"iso-8859-1\"!==e.charset)throw new TypeError(\"The charset option must be either utf-8, iso-8859-1, or undefined\");var i=s.default;if(void 0!==e.format){if(!o.call(s.formatters,e.format))throw new TypeError(\"Unknown format option provided.\");i=e.format}var r=s.formatters[i],n=f.filter;return(\"function\"==typeof e.filter||l(e.filter))&&(n=e.filter),{addQueryPrefix:\"boolean\"==typeof e.addQueryPrefix?e.addQueryPrefix:f.addQueryPrefix,allowDots:void 0===e.allowDots?f.allowDots:!!e.allowDots,charset:t,charsetSentinel:\"boolean\"==typeof e.charsetSentinel?e.charsetSentinel:f.charsetSentinel,delimiter:void 0===e.delimiter?f.delimiter:e.delimiter,encode:\"boolean\"==typeof e.encode?e.encode:f.encode,encoder:\"function\"==typeof e.encoder?e.encoder:f.encoder,encodeValuesOnly:\"boolean\"==typeof e.encodeValuesOnly?e.encodeValuesOnly:f.encodeValuesOnly,filter:n,format:i,formatter:r,serializeDate:\"function\"==typeof e.serializeDate?e.serializeDate:f.serializeDate,skipNulls:\"boolean\"==typeof e.skipNulls?e.skipNulls:f.skipNulls,sort:\"function\"==typeof e.sort?e.sort:null,strictNullHandling:\"boolean\"==typeof e.strictNullHandling?e.strictNullHandling:f.strictNullHandling}}(t);\"function\"==typeof c.filter?n=(0,c.filter)(\"\",n):l(c.filter)&&(i=c.filter);var u,d=[];if(\"object\"!=typeof n||null===n)return\"\";u=t&&t.arrayFormat in a?t.arrayFormat:t&&\"indices\"in t?t.indices?\"indices\":\"repeat\":\"indices\";var p=a[u];if(t&&\"commaRoundTrip\"in t&&\"boolean\"!=typeof t.commaRoundTrip)throw new TypeError(\"`commaRoundTrip` must be a boolean, or absent\");var m=\"comma\"===p&&t&&t.commaRoundTrip;i||(i=Object.keys(n)),c.sort&&i.sort(c.sort);for(var y=r(),v=0;v<i.length;++v){var w=i[v];c.skipNulls&&null===n[w]||h(d,g(n[w],w,p,m,c.strictNullHandling,c.skipNulls,c.encode?c.encoder:null,c.filter,c.sort,c.allowDots,c.serializeDate,c.format,c.formatter,c.encodeValuesOnly,c.charset,y))}var b=d.join(c.delimiter),_=!0===c.addQueryPrefix?\"?\":\"\";return c.charsetSentinel&&(\"iso-8859-1\"===c.charset?_+=\"utf8=%26%2310003%3B&\":_+=\"utf8=%E2%9C%93&\"),b.length>0?_+b:\"\"}},493:function(e,t,i){\"use strict\";var r=i(527),n=Object.prototype.hasOwnProperty,s=Array.isArray,o=function(){for(var e=[],t=0;t<256;++t)e.push(\"%\"+((t<16?\"0\":\"\")+t.toString(16)).toUpperCase());return e}(),a=function(e,t){for(var i=t&&t.plainObjects?Object.create(null):{},r=0;r<e.length;++r)void 0!==e[r]&&(i[r]=e[r]);return i};e.exports={arrayToObject:a,assign:function(e,t){return Object.keys(t).reduce((function(e,i){return e[i]=t[i],e}),e)},combine:function(e,t){return[].concat(e,t)},compact:function(e){for(var t=[{obj:{o:e},prop:\"o\"}],i=[],r=0;r<t.length;++r)for(var n=t[r],o=n.obj[n.prop],a=Object.keys(o),l=0;l<a.length;++l){var c=a[l],u=o[c];\"object\"==typeof u&&null!==u&&-1===i.indexOf(u)&&(t.push({obj:o,prop:c}),i.push(u))}return function(e){for(;e.length>1;){var t=e.pop(),i=t.obj[t.prop];if(s(i)){for(var r=[],n=0;n<i.length;++n)void 0!==i[n]&&r.push(i[n]);t.obj[t.prop]=r}}}(t),e},decode:function(e,t,i){var r=e.replace(/\\+/g,\" \");if(\"iso-8859-1\"===i)return r.replace(/%[0-9a-f]{2}/gi,unescape);try{return decodeURIComponent(r)}catch(n){return r}},encode:function(e,t,i,n,s){if(0===e.length)return e;var a=e;if(\"symbol\"==typeof e?a=Symbol.prototype.toString.call(e):\"string\"!=typeof e&&(a=String(e)),\"iso-8859-1\"===i)return escape(a).replace(/%u[0-9a-f]{4}/gi,(function(e){return\"%26%23\"+parseInt(e.slice(2),16)+\"%3B\"}));for(var l=\"\",c=0;c<a.length;++c){var u=a.charCodeAt(c);45===u||46===u||95===u||126===u||u>=48&&u<=57||u>=65&&u<=90||u>=97&&u<=122||s===r.RFC1738&&(40===u||41===u)?l+=a.charAt(c):u<128?l+=o[u]:u<2048?l+=o[192|u>>6]+o[128|63&u]:u<55296||u>=57344?l+=o[224|u>>12]+o[128|u>>6&63]+o[128|63&u]:(c+=1,u=65536+((1023&u)<<10|1023&a.charCodeAt(c)),l+=o[240|u>>18]+o[128|u>>12&63]+o[128|u>>6&63]+o[128|63&u])}return l},isBuffer:function(e){return!(!e||\"object\"!=typeof e||!(e.constructor&&e.constructor.isBuffer&&e.constructor.isBuffer(e)))},isRegExp:function(e){return\"[object RegExp]\"===Object.prototype.toString.call(e)},maybeMap:function(e,t){if(s(e)){for(var i=[],r=0;r<e.length;r+=1)i.push(t(e[r]));return i}return t(e)},merge:function e(t,i,r){if(!i)return t;if(\"object\"!=typeof i){if(s(t))t.push(i);else{if(!t||\"object\"!=typeof t)return[t,i];(r&&(r.plainObjects||r.allowPrototypes)||!n.call(Object.prototype,i))&&(t[i]=!0)}return t}if(!t||\"object\"!=typeof t)return[t].concat(i);var o=t;return s(t)&&!s(i)&&(o=a(t,r)),s(t)&&s(i)?(i.forEach((function(i,s){if(n.call(t,s)){var o=t[s];o&&\"object\"==typeof o&&i&&\"object\"==typeof i?t[s]=e(o,i,r):t.push(i)}else t[s]=i})),t):Object.keys(i).reduce((function(t,s){var o=i[s];return n.call(t,s)?t[s]=e(t[s],o,r):t[s]=o,t}),o)}}},47:function(e){var t=function(e){\"use strict\";var t,i=Object.prototype,r=i.hasOwnProperty,n=Object.defineProperty||function(e,t,i){e[t]=i.value},s=\"function\"==typeof Symbol?Symbol:{},o=s.iterator||\"@@iterator\",a=s.asyncIterator||\"@@asyncIterator\",l=s.toStringTag||\"@@toStringTag\";function c(e,t,i){return Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{c({},\"\")}catch(R){c=function(e,t,i){return e[t]=i}}function u(e,t,i,r){var s=t&&t.prototype instanceof y?t:y,o=Object.create(s.prototype),a=new C(r||[]);return n(o,\"_invoke\",{value:O(e,i,a)}),o}function h(e,t,i){try{return{type:\"normal\",arg:e.call(t,i)}}catch(R){return{type:\"throw\",arg:R}}}e.wrap=u;var d=\"suspendedStart\",p=\"suspendedYield\",f=\"executing\",m=\"completed\",g={};function y(){}function v(){}function w(){}var b={};c(b,o,(function(){return this}));var _=Object.getPrototypeOf,S=_&&_(_(x([])));S&&S!==i&&r.call(S,o)&&(b=S);var k=w.prototype=y.prototype=Object.create(b);function U(e){[\"next\",\"throw\",\"return\"].forEach((function(t){c(e,t,(function(e){return this._invoke(t,e)}))}))}function A(e,t){function i(n,s,o,a){var l=h(e[n],e,s);if(\"throw\"!==l.type){var c=l.arg,u=c.value;return u&&\"object\"==typeof u&&r.call(u,\"__await\")?t.resolve(u.__await).then((function(e){i(\"next\",e,o,a)}),(function(e){i(\"throw\",e,o,a)})):t.resolve(u).then((function(e){c.value=e,o(c)}),(function(e){return i(\"throw\",e,o,a)}))}a(l.arg)}var s;n(this,\"_invoke\",{value:function(e,r){function n(){return new t((function(t,n){i(e,r,t,n)}))}return s=s?s.then(n,n):n()}})}function O(e,t,i){var r=d;return function(n,s){if(r===f)throw new Error(\"Generator is already running\");if(r===m){if(\"throw\"===n)throw s;return T()}for(i.method=n,i.arg=s;;){var o=i.delegate;if(o){var a=P(o,i);if(a){if(a===g)continue;return a}}if(\"next\"===i.method)i.sent=i._sent=i.arg;else if(\"throw\"===i.method){if(r===d)throw r=m,i.arg;i.dispatchException(i.arg)}else\"return\"===i.method&&i.abrupt(\"return\",i.arg);r=f;var l=h(e,t,i);if(\"normal\"===l.type){if(r=i.done?m:p,l.arg===g)continue;return{value:l.arg,done:i.done}}\"throw\"===l.type&&(r=m,i.method=\"throw\",i.arg=l.arg)}}}function P(e,i){var r=i.method,n=e.iterator[r];if(n===t)return i.delegate=null,\"throw\"===r&&e.iterator.return&&(i.method=\"return\",i.arg=t,P(e,i),\"throw\"===i.method)||\"return\"!==r&&(i.method=\"throw\",i.arg=new TypeError(\"The iterator does not provide a '\"+r+\"' method\")),g;var s=h(n,e.iterator,i.arg);if(\"throw\"===s.type)return i.method=\"throw\",i.arg=s.arg,i.delegate=null,g;var o=s.arg;return o?o.done?(i[e.resultName]=o.value,i.next=e.nextLoc,\"return\"!==i.method&&(i.method=\"next\",i.arg=t),i.delegate=null,g):o:(i.method=\"throw\",i.arg=new TypeError(\"iterator result is not an object\"),i.delegate=null,g)}function E(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function I(e){var t=e.completion||{};t.type=\"normal\",delete t.arg,e.completion=t}function C(e){this.tryEntries=[{tryLoc:\"root\"}],e.forEach(E,this),this.reset(!0)}function x(e){if(e){var i=e[o];if(i)return i.call(e);if(\"function\"==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,s=function i(){for(;++n<e.length;)if(r.call(e,n))return i.value=e[n],i.done=!1,i;return i.value=t,i.done=!0,i};return s.next=s}}return{next:T}}function T(){return{value:t,done:!0}}return v.prototype=w,n(k,\"constructor\",{value:w,configurable:!0}),n(w,\"constructor\",{value:v,configurable:!0}),v.displayName=c(w,l,\"GeneratorFunction\"),e.isGeneratorFunction=function(e){var t=\"function\"==typeof e&&e.constructor;return!!t&&(t===v||\"GeneratorFunction\"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,w):(e.__proto__=w,c(e,l,\"GeneratorFunction\")),e.prototype=Object.create(k),e},e.awrap=function(e){return{__await:e}},U(A.prototype),c(A.prototype,a,(function(){return this})),e.AsyncIterator=A,e.async=function(t,i,r,n,s){void 0===s&&(s=Promise);var o=new A(u(t,i,r,n),s);return e.isGeneratorFunction(i)?o:o.next().then((function(e){return e.done?e.value:o.next()}))},U(k),c(k,l,\"Generator\"),c(k,o,(function(){return this})),c(k,\"toString\",(function(){return\"[object Generator]\"})),e.keys=function(e){var t=Object(e),i=[];for(var r in t)i.push(r);return i.reverse(),function e(){for(;i.length;){var r=i.pop();if(r in t)return e.value=r,e.done=!1,e}return e.done=!0,e}},e.values=x,C.prototype={constructor:C,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=t,this.done=!1,this.delegate=null,this.method=\"next\",this.arg=t,this.tryEntries.forEach(I),!e)for(var i in this)\"t\"===i.charAt(0)&&r.call(this,i)&&!isNaN(+i.slice(1))&&(this[i]=t)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if(\"throw\"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var i=this;function n(r,n){return a.type=\"throw\",a.arg=e,i.next=r,n&&(i.method=\"next\",i.arg=t),!!n}for(var s=this.tryEntries.length-1;s>=0;--s){var o=this.tryEntries[s],a=o.completion;if(\"root\"===o.tryLoc)return n(\"end\");if(o.tryLoc<=this.prev){var l=r.call(o,\"catchLoc\"),c=r.call(o,\"finallyLoc\");if(l&&c){if(this.prev<o.catchLoc)return n(o.catchLoc,!0);if(this.prev<o.finallyLoc)return n(o.finallyLoc)}else if(l){if(this.prev<o.catchLoc)return n(o.catchLoc,!0)}else{if(!c)throw new Error(\"try statement without catch or finally\");if(this.prev<o.finallyLoc)return n(o.finallyLoc)}}}},abrupt:function(e,t){for(var i=this.tryEntries.length-1;i>=0;--i){var n=this.tryEntries[i];if(n.tryLoc<=this.prev&&r.call(n,\"finallyLoc\")&&this.prev<n.finallyLoc){var s=n;break}}s&&(\"break\"===e||\"continue\"===e)&&s.tryLoc<=t&&t<=s.finallyLoc&&(s=null);var o=s?s.completion:{};return o.type=e,o.arg=t,s?(this.method=\"next\",this.next=s.finallyLoc,g):this.complete(o)},complete:function(e,t){if(\"throw\"===e.type)throw e.arg;return\"break\"===e.type||\"continue\"===e.type?this.next=e.arg:\"return\"===e.type?(this.rval=this.arg=e.arg,this.method=\"return\",this.next=\"end\"):\"normal\"===e.type&&t&&(this.next=t),g},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var i=this.tryEntries[t];if(i.finallyLoc===e)return this.complete(i.completion,i.afterLoc),I(i),g}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var i=this.tryEntries[t];if(i.tryLoc===e){var r=i.completion;if(\"throw\"===r.type){var n=r.arg;I(i)}return n}}throw new Error(\"illegal catch attempt\")},delegateYield:function(e,i,r){return this.delegate={iterator:x(e),resultName:i,nextLoc:r},\"next\"===this.method&&(this.arg=t),g}},e}(e.exports);try{regeneratorRuntime=t}catch(i){\"object\"==typeof globalThis?globalThis.regeneratorRuntime=t:Function(\"r\",\"regeneratorRuntime = r\")(t)}},294:function(e,t,i){\"use strict\";var r=i(286),n=i(680),s=i(500),o=r(\"%TypeError%\"),a=r(\"%WeakMap%\",!0),l=r(\"%Map%\",!0),c=n(\"WeakMap.prototype.get\",!0),u=n(\"WeakMap.prototype.set\",!0),h=n(\"WeakMap.prototype.has\",!0),d=n(\"Map.prototype.get\",!0),p=n(\"Map.prototype.set\",!0),f=n(\"Map.prototype.has\",!0),m=function(e,t){for(var i,r=e;null!==(i=r.next);r=i)if(i.key===t)return r.next=i.next,i.next=e.next,e.next=i,i};e.exports=function(){var e,t,i,r={assert:function(e){if(!r.has(e))throw new o(\"Side channel does not contain \"+s(e))},get:function(r){if(a&&r&&(\"object\"==typeof r||\"function\"==typeof r)){if(e)return c(e,r)}else if(l){if(t)return d(t,r)}else if(i)return function(e,t){var i=m(e,t);return i&&i.value}(i,r)},has:function(r){if(a&&r&&(\"object\"==typeof r||\"function\"==typeof r)){if(e)return h(e,r)}else if(l){if(t)return f(t,r)}else if(i)return function(e,t){return!!m(e,t)}(i,r);return!1},set:function(r,n){a&&r&&(\"object\"==typeof r||\"function\"==typeof r)?(e||(e=new a),u(e,r,n)):l?(t||(t=new l),p(t,r,n)):(i||(i={key:{},next:null}),function(e,t,i){var r=m(e,t);r?r.value=i:e.next={key:t,next:e.next,value:i}}(i,r,n))}};return r}},260:function(){}},r={};function n(e){var t=r[e];if(void 0!==t)return t.exports;var s=r[e]={exports:{}};return i[e].call(s.exports,s,s.exports,n),s.exports}n.m=i,n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,{a:t}),t},n.d=function(e,t){for(var i in t)n.o(t,i)&&!n.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},n.f={},n.e=function(e){return Promise.all(Object.keys(n.f).reduce((function(t,i){return n.f[i](e,t),t}),[]))},n.u=function(e){return e+\"_\"+n.h().slice(0,6)+\"_5.5.3.js\"},n.h=function(){return\"1247bad0c7f08ffaeb9d\"},n.g=function(){if(\"object\"==typeof globalThis)return globalThis;try{return this||new Function(\"return this\")()}catch(e){if(\"object\"==typeof window)return window}}(),n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},e={},t=\"@clerk/clerk-js:\",n.l=function(i,r,s,o){if(e[i])e[i].push(r);else{var a,l;if(void 0!==s)for(var c=document.getElementsByTagName(\"script\"),u=0;u<c.length;u++){var h=c[u];if(h.getAttribute(\"src\")==i||h.getAttribute(\"data-webpack\")==t+s){a=h;break}}a||(l=!0,(a=document.createElement(\"script\")).charset=\"utf-8\",a.timeout=120,n.nc&&a.setAttribute(\"nonce\",n.nc),a.setAttribute(\"data-webpack\",t+s),a.src=i),e[i]=[r];var d=function(t,r){a.onerror=a.onload=null,clearTimeout(p);var n=e[i];if(delete e[i],a.parentNode&&a.parentNode.removeChild(a),n&&n.forEach((function(e){return e(r)})),t)return t(r)},p=setTimeout(d.bind(null,void 0,{type:\"timeout\",target:a}),12e4);a.onerror=d.bind(null,a.onerror),a.onload=d.bind(null,a.onload),l&&document.head.appendChild(a)}},n.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},n.p=\"\",function(){var e={983:0};n.f.j=function(t,i){var r=n.o(e,t)?e[t]:void 0;if(0!==r)if(r)i.push(r[2]);else{var s=new Promise((function(i,n){r=e[t]=[i,n]}));i.push(r[2]=s);var o=n.p+n.u(t),a=new Error;n.l(o,(function(i){if(n.o(e,t)&&(0!==(r=e[t])&&(e[t]=void 0),r)){var s=i&&(\"load\"===i.type?\"missing\":i.type),o=i&&i.target&&i.target.src;a.message=\"Loading chunk \"+t+\" failed.\\n(\"+s+\": \"+o+\")\",a.name=\"ChunkLoadError\",a.type=s,a.request=o,r[1](a)}}),\"chunk-\"+t,t)}};var t=function(t,i){var r,s,o=i[0],a=i[1],l=i[2],c=0;if(o.some((function(t){return 0!==e[t]}))){for(r in a)n.o(a,r)&&(n.m[r]=a[r]);l&&l(n)}for(t&&t(i);c<o.length;c++)s=o[c],n.o(e,s)&&e[s]&&e[s][0](),e[s]=0},i=globalThis.webpackChunk_clerk_clerk_js=globalThis.webpackChunk_clerk_clerk_js||[];i.forEach(t.bind(null,0)),i.push=t.bind(null,i.push.bind(i))}();var s={};return function(){\"use strict\";n.r(s),n.d(s,{Clerk:function(){return Zr},ClerkAPIResponseError:function(){return I},ClerkRuntimeError:function(){return C},EmailLinkError:function(){return x},EmailLinkErrorCode:function(){return R},isClerkAPIResponseError:function(){return k},isClerkRuntimeError:function(){return U},isEmailLinkError:function(){return T},isKnownError:function(){return S},isMetamaskError:function(){return A},isUserLockedError:function(){return O}}),n(47);var e=[\".lcl.dev\",\".lclstage.dev\",\".lclclerk.com\"],t=[\".accounts.dev\",\".accountsstage.dev\",\".accounts.lclclerk.com\"],i=[\".lcl.dev\",\".stg.dev\",\".lclstage.dev\",\".stgstage.dev\",\".dev.lclclerk.com\",\".stg.lclclerk.com\",\".accounts.lclclerk.com\",\"accountsstage.dev\",\"accounts.dev\"],r=class{constructor(e){this.eventTarget=window,this.postMessage=e=>{if(\"undefined\"!=typeof window)try{window.localStorage.setItem(this.channelKey,JSON.stringify(e)),window.localStorage.removeItem(this.channelKey)}catch(t){}},this.addEventListener=(e,t)=>{this.eventTarget.addEventListener(this.prefixEventName(e),(e=>{t(e)}))},this.setupLocalStorageListener=()=>{window.addEventListener(\"storage\",(e=>{if(e.key===this.channelKey&&e.newValue)try{const t=JSON.parse(e.newValue||\"\"),i=new MessageEvent(this.prefixEventName(\"message\"),{data:t});this.eventTarget.dispatchEvent(i)}catch(t){}}))},this.channelKey=\"__lsbc__\"+e,this.setupLocalStorageListener()}prefixEventName(e){return this.channelKey+e}},o=new Set,a=e=>{o.has(e)||(o.add(e),console.warn(e))},l=(...e)=>{},c='const respond=r=>{self.postMessage(r)},workerToTabIds={};self.addEventListener(\"message\",r=>{const e=r.data;switch(e.type){case\"setTimeout\":workerToTabIds[e.id]=setTimeout(()=>{respond({id:e.id})},e.ms);break;case\"clearTimeout\":workerToTabIds[e.id]&&(clearTimeout(workerToTabIds[e.id]),delete workerToTabIds[e.id]);break;case\"setInterval\":workerToTabIds[e.id]=setInterval(()=>{respond({id:e.id})},e.ms);break;case\"clearInterval\":workerToTabIds[e.id]&&(clearInterval(workerToTabIds[e.id]),delete workerToTabIds[e.id]);break}});\\n',u=(e,t={})=>{if(\"undefined\"==typeof Worker)return null;try{const i=new Blob([e],{type:\"application/javascript; charset=utf-8\"}),r=globalThis.URL.createObjectURL(i);return new Worker(r,t)}catch(i){return console.warn(\"Clerk: Cannot create worker from blob. Consider adding worker-src blob:; to your CSP\"),null}},h=()=>{let e=0;const t=()=>e++,i=new Map,r=(e,t)=>null==e?void 0:e.postMessage(t),n=e=>{var t;null==(t=i.get(e.data.id))||t()};let s=u(c,{name:\"clerk-timers\"});if(null==s||s.addEventListener(\"message\",n),!s)return{setTimeout:globalThis.setTimeout.bind(globalThis),setInterval:globalThis.setInterval.bind(globalThis),clearTimeout:globalThis.clearTimeout.bind(globalThis),clearInterval:globalThis.clearInterval.bind(globalThis),cleanup:l};const o=()=>{s||(s=u(c,{name:\"clerk-timers\"}),null==s||s.addEventListener(\"message\",n))};return{setTimeout:(e,n)=>{o();const a=t();return i.set(a,e),r(s,{type:\"setTimeout\",id:a,ms:n}),a},setInterval:(e,n)=>{o();const a=t();return i.set(a,e),r(s,{type:\"setInterval\",id:a,ms:n}),a},clearTimeout:e=>{o(),i.delete(e),r(s,{type:\"clearTimeout\",id:e})},clearInterval:e=>{o(),i.delete(e),r(s,{type:\"clearInterval\",id:e})},cleanup:()=>{s&&(s.terminate(),s=null,i.clear())}}};function d({delayInMs:e}={delayInMs:1e3}){const t=h();let i,r=!1;const n=()=>{i&&(t.clearTimeout(i),t.cleanup()),r=!0},s=async o=>{r=!1,await o(n),r||(i=t.setTimeout((()=>{s(o)}),e))};return{run:s,stop:n}}function p(e){return/^http(s)?:\\/\\//.test(e||\"\")}function f(e){return e.startsWith(\"/\")}function m(e){const t=e||\"\";return t.charAt(0).toUpperCase()+t.slice(1)}function g(e){return e?e.replace(/[A-Z]/g,(e=>`_${e.toLowerCase()}`)):\"\"}var y=e=>{const t=i=>{if(!i)return i;if(Array.isArray(i))return i.map((e=>\"object\"==typeof e||Array.isArray(e)?t(e):e));const r={...i},n=Object.keys(r);for(const s of n){const i=e(s.toString());i!==s&&(r[i]=r[s],delete r[s]),\"object\"==typeof r[i]&&(r[i]=t(r[i]))}return r};return t},v=(y(g),y((function(e){return e?e.replace(/([-_][a-z])/g,(e=>e.toUpperCase().replace(/-|_/,\"\"))):\"\"})));function w(e){if(\"boolean\"==typeof e)return e;if(null==e)return!1;if(\"string\"==typeof e){if(\"true\"===e.toLowerCase())return!0;if(\"false\"===e.toLowerCase())return!1}const t=parseInt(e,10);return!isNaN(t)&&t>0}function b(e){return Object.entries(e).reduce(((e,[t,i])=>(void 0!==i&&(e[t]=i),e)),{})}function _(e){const t=null==e?void 0:e.status;return!!t&&t>=400&&t<500}function S(e){return k(e)||A(e)||U(e)}function k(e){return\"clerkError\"in e}function U(e){return\"clerkRuntimeError\"in e}function A(e){return\"code\"in e&&[4001,32602,32603].includes(e.code)&&\"message\"in e}function O(e){var t,i;return k(e)&&\"user_locked\"===(null==(i=null==(t=e.errors)?void 0:t[0])?void 0:i.code)}function P(e=[]){return e.length>0?e.map(E):[]}function E(e){var t,i,r,n,s;return{code:e.code,message:e.message,longMessage:e.long_message,meta:{paramName:null==(t=null==e?void 0:e.meta)?void 0:t.param_name,sessionId:null==(i=null==e?void 0:e.meta)?void 0:i.session_id,emailAddresses:null==(r=null==e?void 0:e.meta)?void 0:r.email_addresses,identifiers:null==(n=null==e?void 0:e.meta)?void 0:n.identifiers,zxcvbn:null==(s=null==e?void 0:e.meta)?void 0:s.zxcvbn}}}var I=class e extends Error{constructor(t,{data:i,status:r,clerkTraceId:n}){super(t),this.toString=()=>{let e=`[${this.name}]\\nMessage:${this.message}\\nStatus:${this.status}\\nSerialized errors: ${this.errors.map((e=>JSON.stringify(e)))}`;return this.clerkTraceId&&(e+=`\\nClerk Trace ID: ${this.clerkTraceId}`),e},Object.setPrototypeOf(this,e.prototype),this.status=r,this.message=t,this.clerkTraceId=n,this.clerkError=!0,this.errors=P(i)}},C=class e extends Error{constructor(t,{code:i}){super(t),this.toString=()=>`[${this.name}]\\nMessage:${this.message}`,Object.setPrototypeOf(this,e.prototype),this.code=i,this.message=t,this.clerkRuntimeError=!0}},x=class e extends Error{constructor(t){super(t),this.code=t,Object.setPrototypeOf(this,e.prototype)}};function T(e){return e instanceof x}var R={Expired:\"expired\",Failed:\"failed\",ClientMismatch:\"client_mismatch\"},M=Object.freeze({InvalidProxyUrlErrorMessage:\"The proxyUrl passed to Clerk is invalid. The expected value for proxyUrl is an absolute URL or a relative path with a leading '/'. (key={{url}})\",InvalidPublishableKeyErrorMessage:\"The publishableKey passed to Clerk is invalid. You can get your Publishable key at https://dashboard.clerk.com/last-active?path=api-keys. (key={{key}})\",MissingPublishableKeyErrorMessage:\"Missing publishableKey. You can get your key at https://dashboard.clerk.com/last-active?path=api-keys.\",MissingSecretKeyErrorMessage:\"Missing secretKey. You can get your key at https://dashboard.clerk.com/last-active?path=api-keys.\",MissingClerkProvider:\"{{source}} can only be used within the <ClerkProvider /> component. Learn more: https://clerk.com/docs/components/clerk-provider\"});function N(e,t,i){return\"function\"==typeof e?e(t):void 0!==e?e:void 0!==i?i:void 0}Object.freeze({\"image/png\":\"png\",\"image/jpeg\":\"jpg\",\"image/gif\":\"gif\",\"image/webp\":\"webp\",\"image/x-icon\":\"ico\",\"image/vnd.microsoft.icon\":\"ico\"});var j=e=>\"undefined\"!=typeof atob&&\"function\"==typeof atob?atob(e):\"undefined\"!=typeof global&&global.Buffer?new global.Buffer(e,\"base64\").toString():e,F=\"pk_live_\";function W(e,t={}){if(!(e=e||\"\")||!function(e){const t=(e=e||\"\").startsWith(F)||e.startsWith(\"pk_test_\"),i=j(e.split(\"_\")[2]||\"\").endsWith(\"$\");return t&&i}(e)){if(t.fatal)throw new Error(\"Publishable key not valid.\");return null}const i=e.startsWith(F)?\"production\":\"development\";let r=j(e.split(\"_\")[2]);return r=r.slice(0,-1),t.proxyUrl?r=t.proxyUrl:\"development\"!==i&&t.domain&&(r=`clerk.${t.domain}`),{instanceType:i,frontendApi:r}}function z(){return\"undefined\"!=typeof window}var L=new RegExp([\"bot\",\"spider\",\"crawl\",\"APIs-Google\",\"AdsBot\",\"Googlebot\",\"mediapartners\",\"Google Favicon\",\"FeedFetcher\",\"Google-Read-Aloud\",\"DuplexWeb-Google\",\"googleweblight\",\"bing\",\"yandex\",\"baidu\",\"duckduck\",\"yahoo\",\"ecosia\",\"ia_archiver\",\"facebook\",\"instagram\",\"pinterest\",\"reddit\",\"slack\",\"twitter\",\"whatsapp\",\"youtube\",\"semrush\"].join(\"|\"),\"i\");function D(){const e=z()?null==window?void 0:window.navigator:null;return!(!e||(t=null==e?void 0:e.userAgent,t&&L.test(t)||(null==e?void 0:e.webdriver)));var t}function $(){var e,t;const i=z()?null==window?void 0:window.navigator:null;if(!i)return!1;const r=null==i?void 0:i.onLine;return 0!==(null==(e=null==i?void 0:i.connection)?void 0:e.rtt)&&0!==(null==(t=null==i?void 0:i.connection)?void 0:t.downlink)&&r}function J(){return $()&&D()}Object.defineProperty,Object.getOwnPropertyDescriptor,Object.getOwnPropertyNames,Object.prototype.hasOwnProperty;var B,V,K,q,G,H,Q,Y,Z=(e,t,i)=>{if(!t.has(e))throw TypeError(\"Cannot \"+i)},X=(e,t,i)=>(Z(e,t,\"read from private field\"),i?i.call(e):t.get(e)),ee=(e,t,i)=>{if(t.has(e))throw TypeError(\"Cannot add the same private member more than once\");t instanceof WeakSet?t.add(e):t.set(e,i)},te=(e,t,i,r)=>(Z(e,t,\"write to private field\"),r?r.call(e,i):t.set(e,i),i),ie=(e,t,i)=>(Z(e,t,\"access private method\"),i),re={firstDelay:125,maxDelay:0,timeMultiple:2,shouldRetry:()=>!0},ne=async(e,t={})=>{let i=0;const{shouldRetry:r,firstDelay:n,maxDelay:s,timeMultiple:o}={...re,...t},a=(e=>{let t=0;return async()=>{await(async e=>new Promise((t=>setTimeout(t,e))))((()=>{const i=e.firstDelay,r=e.timeMultiple,n=i*Math.pow(r,t);return Math.min(e.maxDelay||n,n)})()),t++}})({firstDelay:n,maxDelay:s,timeMultiple:o});for(;;)try{return await e()}catch(l){if(i++,!r(l,i))throw l;await a()}},se=class{constructor(){ee(this,K),ee(this,G),ee(this,Q),ee(this,B,\"clerk_telemetry_throttler\"),ee(this,V,864e5)}isEventThrottled(e){var t;if(!X(this,Q,Y))return!1;const i=Date.now(),r=ie(this,K,q).call(this,e),n=null==(t=X(this,G,H))?void 0:t[r];if(!n){const e={...X(this,G,H),[r]:i};localStorage.setItem(X(this,B),JSON.stringify(e))}if(n&&i-n>X(this,V)){const e=X(this,G,H);delete e[r],localStorage.setItem(X(this,B),JSON.stringify(e))}return!!n}};B=new WeakMap,V=new WeakMap,K=new WeakSet,q=function(e){const{sk:t,pk:i,payload:r,...n}=e,s={...r,...n};return JSON.stringify(Object.keys({...r,...n}).sort().map((e=>s[e])))},G=new WeakSet,H=function(){const e=localStorage.getItem(X(this,B));return e?JSON.parse(e):{}},Q=new WeakSet,Y=function(){if(\"undefined\"==typeof window)return!1;const e=window.localStorage;if(!e)return!1;try{const t=\"test\";return e.setItem(t,t),e.removeItem(t),!0}catch(t){return t instanceof DOMException&&(\"QuotaExceededError\"===t.name||\"NS_ERROR_DOM_QUOTA_REACHED\"===t.name)&&e.length>0&&e.removeItem(X(this,B)),!1}};var oe,ae,le,ce,ue,he,de,pe,fe,me,ge,ye,ve,we,be,_e,Se,ke,Ue,Ae=class{constructor(e){var t,i,r,n,s,o;ee(this,he),ee(this,pe),ee(this,me),ee(this,ye),ee(this,we),ee(this,_e),ee(this,ke),ee(this,oe,void 0),ee(this,ae,void 0),ee(this,le,{}),ee(this,ce,[]),ee(this,ue,void 0),te(this,oe,{maxBufferSize:null!=(t=e.maxBufferSize)?t:5,samplingRate:null!=(i=e.samplingRate)?i:1,disabled:null!=(r=e.disabled)&&r,debug:null!=(n=e.debug)&&n,endpoint:\"https://clerk-telemetry.com\"}),e.clerkVersion||\"undefined\"!=typeof window?X(this,le).clerkVersion=null!=(s=e.clerkVersion)?s:\"\":X(this,le).clerkVersion=\"\",X(this,le).sdk=e.sdk,X(this,le).sdkVersion=e.sdkVersion,X(this,le).publishableKey=null!=(o=e.publishableKey)?o:\"\";const a=W(e.publishableKey);a&&(X(this,le).instanceType=a.instanceType),e.secretKey&&(X(this,le).secretKey=e.secretKey.substring(0,16)),te(this,ae,new se)}get isEnabled(){var e;return!(\"development\"!==X(this,le).instanceType||X(this,oe).disabled||\"undefined\"!=typeof process&&w(process.env.CLERK_TELEMETRY_DISABLED)||\"undefined\"!=typeof window&&(null==(e=null==window?void 0:window.navigator)?void 0:e.webdriver))}get isDebug(){return X(this,oe).debug||\"undefined\"!=typeof process&&w(process.env.CLERK_TELEMETRY_DEBUG)}record(e){const t=ie(this,ke,Ue).call(this,e.event,e.payload);ie(this,we,be).call(this,t.event,t),ie(this,he,de).call(this,t,e.eventSamplingRate)&&(X(this,ce).push(t),ie(this,me,ge).call(this))}};oe=new WeakMap,ae=new WeakMap,le=new WeakMap,ce=new WeakMap,ue=new WeakMap,he=new WeakSet,de=function(e,t){return this.isEnabled&&!this.isDebug&&ie(this,pe,fe).call(this,e,t)},pe=new WeakSet,fe=function(e,t){const i=Math.random();return!X(this,ae).isEventThrottled(e)&&i<=X(this,oe).samplingRate&&(void 0===t||i<=t)},me=new WeakSet,ge=function(){\"undefined\"!=typeof window?X(this,ce).length>=X(this,oe).maxBufferSize?(X(this,ue)&&(\"undefined\"!=typeof cancelIdleCallback?cancelIdleCallback:clearTimeout)(X(this,ue)),ie(this,ye,ve).call(this)):X(this,ue)||(\"requestIdleCallback\"in window?te(this,ue,requestIdleCallback((()=>{ie(this,ye,ve).call(this)}))):te(this,ue,setTimeout((()=>{ie(this,ye,ve).call(this)}),0))):ie(this,ye,ve).call(this)},ye=new WeakSet,ve=function(){fetch(new URL(\"/v1/event\",X(this,oe).endpoint),{method:\"POST\",body:JSON.stringify({events:X(this,ce)}),headers:{\"Content-Type\":\"application/json\"}}).catch((()=>{})).then((()=>{te(this,ce,[])})).catch((()=>{}))},we=new WeakSet,be=function(e,t){this.isDebug&&(void 0!==console.groupCollapsed?(console.groupCollapsed(\"[clerk/telemetry]\",e),console.log(t),console.groupEnd()):console.log(\"[clerk/telemetry]\",e,t))},_e=new WeakSet,Se=function(){let e={name:X(this,le).sdk,version:X(this,le).sdkVersion};return\"undefined\"!=typeof window&&window.Clerk&&(e={...e,...window.Clerk.constructor.sdkMetadata}),e},ke=new WeakSet,Ue=function(e,t){var i,r;const n=ie(this,_e,Se).call(this);return{event:e,cv:null!=(i=X(this,le).clerkVersion)?i:\"\",it:null!=(r=X(this,le).instanceType)?r:\"\",sdk:n.name,sdkv:n.version,...X(this,le).publishableKey?{pk:X(this,le).publishableKey}:{},...X(this,le).secretKey?{sk:X(this,le).secretKey}:{},payload:t}};function Oe(e,t){var i,r,n;return{event:\"COMPONENT_MOUNTED\",eventSamplingRate:.1,payload:{component:e,appearanceProp:Boolean(null==t?void 0:t.appearance),baseTheme:Boolean(null==(i=null==t?void 0:t.appearance)?void 0:i.baseTheme),elements:Boolean(null==(r=null==t?void 0:t.appearance)?void 0:r.elements),variables:Boolean(null==(n=null==t?void 0:t.appearance)?void 0:n.variables)}}}const Pe=\"clerk:beforeunload\";function Ee(e){let t=new URL(e,window.location.href);\"http:\"!==t.protocol&&\"https:\"!==t.protocol&&(console.warn(\"Clerk: Not a valid protocol. Redirecting to /\"),t=new URL(\"/\",window.location.href)),window.dispatchEvent(new CustomEvent(Pe)),window.location.href=t.href}const Ie=(e,t)=>!(!e.session||!(null==t?void 0:t.authConfig.singleSessionMode)),Ce=e=>!e.user,xe=e=>!e.organization,Te=(e,t)=>!(null==t?void 0:t.organizationSettings.enabled);function Re(e,t=\"\"){return e.errors&&!!e.errors.find((e=>e.code===t))}const Me=function({packageName:e,customMessages:t}){let i=e;const r={...M,...t};function n(e,t){if(!t)return`${i}: ${e}`;let r=e;const n=e.matchAll(/{{([a-zA-Z0-9-_]+)}}/g);for(const i of n){const e=(t[i[1]]||\"\").toString();r=r.replace(`{{${i[1]}}}`,e)}return`${i}: ${r}`}return{setPackageName({packageName:e}){return\"string\"==typeof e&&(i=e),this},setMessages({customMessages:e}){return Object.assign(r,e||{}),this},throwInvalidPublishableKeyError(e){throw new Error(n(r.InvalidPublishableKeyErrorMessage,e))},throwInvalidProxyUrl(e){throw new Error(n(r.InvalidProxyUrlErrorMessage,e))},throwMissingPublishableKeyError(){throw new Error(n(r.MissingPublishableKeyErrorMessage))},throwMissingSecretKeyError(){throw new Error(n(r.MissingSecretKeyErrorMessage))},throwMissingClerkProviderError(e){throw new Error(n(r.MissingClerkProvider,e))},throw(e){throw new Error(n(e))}}}({packageName:\"@clerk/clerk-js\"}),Ne=\"__clerk_synced\",je=\"__clerk_satellite_url\";function Fe(e){return new URL(window.location.href).searchParams.get(e)||null}function We(e){const t=new URL(window.location.href);t.searchParams.has(e)&&(t.searchParams.delete(e),window.history.replaceState(window.history.state,\"\",t))}function ze(e,t={}){var i;if(!(t.requireType&&typeof e!==t.requireType||(i=e,i&&\"object\"==typeof i&&\"target\"in i&&\"currentTarget\"in i&&\"preventDefault\"in i)))return e}var Le=n(450);const De=\"/\",$e=new RegExp(De+\"{1,}\",\"g\");var Je=n(126),Be=n.n(Je);const Ve=e=>Be().parse(e||\"\",{ignoreQueryPrefix:!0}),Ke=\"http://clerk-dummy\",{isDevOrStagingUrl:qe}=function(){const e=new Map;return{isDevOrStagingUrl:t=>{if(!t)return!1;const r=\"string\"==typeof t?t:t.hostname;let n=e.get(r);return void 0===n&&(n=i.some((e=>r.endsWith(e))),e.set(r,n)),n}}}(),Ge=new Map;function He(e){return e.replace(\"clerk.\",\"\")}function Qe(e,t={}){const{base:i,hashPath:r,hashSearch:n,searchParams:s,hashSearchParams:o,...a}=e;let l=\"\";l=\"undefined\"!=typeof window&&window.location?window.location.href:\"http://react-native-fake-base-url\";const c=new URL(i||\"\",l);if(s instanceof URLSearchParams&&s.forEach(((e,t)=>{null!=e&&c.searchParams.set(g(t),e)})),Object.assign(c,a),r||n||o){const e=new URL(Ke+c.hash.substring(1));e.pathname=[e.pathname,r||\"\"].filter((e=>e)).join(De).replace($e,De);const t=Ve(n||\"\");for(const[r,n]of Object.entries(t))e.searchParams.append(r,n);if(o){const t=Array.isArray(o)?o:[o];for(const i of t)(i instanceof URLSearchParams||\"object\"==typeof i)&&new URLSearchParams(i).forEach(((t,i)=>{null!=t&&e.searchParams.set(g(i),t)}))}const i=e.href.replace(Ke,\"\");\"/\"!==i&&(c.hash=i)}const{stringify:u,skipOrigin:h}=t;return u?h?c.href.replace(c.origin,\"\"):c.href:c}const Ye=e=>(e||\"\").replace(/\\/+$/,\"\");const Ze=[\"/oauth/authorize\"],Xe=[\"/v1/verify\",\"/v1/tickets/accept\"];function et(e){return function(e){return decodeURIComponent(n.g.atob(e).split(\"\").map((e=>\"%\"+(\"00\"+e.charCodeAt(0).toString(16)).slice(-2))).join(\"\"))}(e.replace(/_/g,\"/\").replace(/-/g,\"+\"))}function tt(e){const t=(e||\"\").split(\".\"),[i,r,n]=t;if(3!==t.length||!i||!r||!n)throw new Error(\"JWT could not be decoded\");const s=JSON.parse(et(r)),o={__raw:e};return Object.keys(s).forEach((e=>{o[e]=s[e]})),{encoded:{header:i,payload:r,signature:n},header:JSON.parse(et(i)),claims:o}}const it=()=>{};function rt(){return void 0!==globalThis.document}function nt(){return rt()&&window.self!==window.top&&!(\"undefined\"!=typeof window&&void 0!==window.Cypress)&&!window.frameElement}async function st(){if(!n.g.ethereum)return\"\";const e=await n.g.ethereum.request({method:\"eth_requestAccounts\"});return e&&e[0]||\"\"}async function ot({identifier:e,nonce:t}){return n.g.ethereum?await n.g.ethereum.request({method:\"personal_sign\",params:[`0x${i=t,i.split(\"\").map((e=>e.charCodeAt(0).toString(16).padStart(2,\"0\"))).join(\"\")}`,e]}):\"\";var i}function at(e){const t=[\"redirectUrl\",\"afterSignInUrl\",\"afterSignUpUrl\",\"after_sign_in_url\",\"after_sign_up_url\"],i=Object.keys(e).find((e=>t.includes(e)));i&&e[i]&&a(`Clerk: The prop \"${i}\" is deprecated and should be replaced with the new \"fallbackRedirectUrl\" or \"forceRedirectUrl\" props instead.`)}const lt=\"ClerkJS:\";function ct(){throw new Error(`${lt} Something went wrong initializing Clerk.`)}function ut(e=\"\"){throw new Error(`${lt} Something went wrong initializing Clerk in development mode.${e&&` ${e}`}`)}function ht(e){throw new Error(`${lt} Token refresh failed (error='${e}')`)}function dt(e){throw new Error(`${lt} Something went wrong initializing Clerk during the ${e} flow. Please contact support.`)}function pt(e){throw new Error(`${lt} You need to start a ${e} flow by calling ${e}.create() first.`)}function ft(e){throw new Error(`${lt} You need to start a ${e} flow by calling ${e}.create({ identifier: 'your web3 wallet address' }) first`)}function mt(e,t){throw new Error(`${lt} Response: ${e||0} not supported yet.\\nFor more information contact us at ${t}`)}function gt(e){throw new Error(`${lt} Missing publicKey. When calling 'navigator.credentials.${e}()' it is required to pass a publicKey object.`)}class yt{constructor(){this.pathRoot=\"\"}static get fapiClient(){return yt.clerk.getFapiClient()}static async _fetch(e,t={}){let i;yt.fapiClient||function(){throw new Error(`${lt} Missing FAPI client in resources.`)}();try{i=await yt.fapiClient.request(e)}catch(a){if(J())throw a;return console.warn(a),null}const{payload:r,status:n,statusText:s,headers:o}=i;if(o){const e=o.get(\"x-country\");this.clerk.__internal_setCountry(e?e.toLowerCase():null)}if((\"GET\"!==e.method||t.forceUpdateClient)&&this._updateClient(r),n>=200&&n<=299)return r;if(401===n&&await yt.clerk.handleUnauthenticated(),n>=400)throw new I(s,{data:null==r?void 0:r.errors,status:n});return null}static _updateClient(e){var t;if(!e)return;const i=e.client||(null===(t=e.meta)||void 0===t?void 0:t.client);i&&yt.clerk&&yt.clerk.updateClient(kt.getInstance().fromJSON(i))}isNew(){return!this.id}path(e){const t=this.pathRoot;if(this.isNew())return t;const i=t.replace(/[^/]$/,\"$&/\")+encodeURIComponent(this.id);return e?i.replace(/[^/]$/,\"$&/\")+encodeURIComponent(e):i}async _baseGet(e={}){const t=await yt._fetch({method:\"GET\",path:this.path(),rotatingTokenNonce:e.rotatingTokenNonce},e);return this.fromJSON((null==t?void 0:t.response)||t)}async _baseMutate({action:e,body:t,method:i=\"POST\",path:r}){const n=await yt._fetch({method:i,path:r||this.path(e),body:t});return this.fromJSON((null==n?void 0:n.response)||n)}async _basePost(e={}){return this._baseMutate({...e,method:\"POST\"})}async _basePut(e={}){return this._baseMutate({...e,method:\"PUT\"})}async _basePatch(e={}){return this._baseMutate({...e,method:\"PATCH\"})}async _baseDelete(e={}){await this._baseMutate({...e,method:\"DELETE\"})}async reload(e){const{rotatingTokenNonce:t}=e||{};return this._baseGet({forceUpdateClient:!0,rotatingTokenNonce:t})}}class vt extends yt{constructor(e){super(),this.id=void 0,this.socialProviderStrategies=[],this.authenticatableSocialStrategies=[],this.web3FirstFactors=[],this.enabledFirstFactorIdentifiers=[],this.fromJSON(e)}get instanceIsPasswordBased(){return this.attributes.password.enabled&&this.attributes.password.required}get hasValidAuthFactor(){return this.attributes.email_address.enabled||this.attributes.phone_number.enabled||this.attributes.password.required&&this.attributes.username.required}fromJSON(e){var t,i,r;return e?(this.social=e.social,this.saml=e.saml,this.attributes=Object.fromEntries(Object.entries(e.attributes).map((e=>[e[0],{...e[1],name:e[0]}]))),this.actions=e.actions,this.signIn=e.sign_in,this.signUp=e.sign_up,this.passwordSettings={...e.password_settings,min_length:Math.max(null===(t=null==e?void 0:e.password_settings)||void 0===t?void 0:t.min_length,8),max_length:0===(null===(i=null==e?void 0:e.password_settings)||void 0===i?void 0:i.max_length)?72:Math.min(null===(r=null==e?void 0:e.password_settings)||void 0===r?void 0:r.max_length,72)},this.passkeySettings=e.passkey_settings,this.socialProviderStrategies=this.getSocialProviderStrategies(e.social),this.authenticatableSocialStrategies=this.getAuthenticatableSocialStrategies(e.social),this.web3FirstFactors=this.getWeb3FirstFactors(this.attributes),this.enabledFirstFactorIdentifiers=this.getEnabledFirstFactorIdentifiers(this.attributes),this):this}getEnabledFirstFactorIdentifiers(e){return e?Object.entries(e).filter((([e,t])=>t.used_for_first_factor&&!e.startsWith(\"web3\"))).map((([e])=>e)):[]}getWeb3FirstFactors(e){return e?Object.entries(e).filter((([e,t])=>t.used_for_first_factor&&e.startsWith(\"web3\"))).map((([,e])=>e.first_factors)).flat():[]}getSocialProviderStrategies(e){return e?Object.entries(e).filter((([,e])=>e.enabled)).map((([,e])=>e.strategy)).sort():[]}getAuthenticatableSocialStrategies(e){return e?Object.entries(e).filter((([,e])=>e.enabled&&e.authenticatable)).map((([,e])=>e.strategy)).sort():[]}}class wt extends yt{constructor(e){super(),this.fromJSON(e)}fromJSON(e){return this.singleSessionMode=!e||e.single_session_mode,this}}function bt(e){const t=new Date(e||new Date);return(i=t)instanceof Date&&!isNaN(i.getTime())?t:new Date;var i}class _t{static fromKey(e){const[t,i,r=\"\"]=e.split(\"::\");return new _t(t,{audience:r,tokenId:i})}constructor(e,t){this.prefix=e,this.data=t,this.prefix=e,this.data=t}toKey(){const{tokenId:e,audience:t}=this.data;return[this.prefix,e,t||\"\"].join(\"::\")}}const St=((e=\"clerk\")=>{const t=new Map;let i;return{get:(i,r=10)=>{const n=new _t(e,i),s=t.get(n.toKey());if(!s)return;const o=Math.floor(Date.now()/1e3)-s.createdAt;if(!(s.expiresIn-o<(r||1)+5))return s.entry;t.delete(n.toKey())},set:r=>{const n=new _t(e,{audience:r.audience,tokenId:r.tokenId}).toKey(),s={entry:r,createdAt:Math.floor(Date.now()/1e3)},o=()=>{t.get(n)===s&&t.delete(n)};r.tokenResolver.then((e=>{if(!e.jwt)return o();const t=e.jwt.claims.exp-e.jwt.claims.iat;s.expiresIn=t,i=setTimeout(o,1e3*t),\"function\"==typeof i.unref&&i.unref()})).catch((()=>{o()})),t.set(n,s)},clear:()=>{clearTimeout(i),t.clear()},size:()=>t.size}})();class kt extends yt{static getInstance(){return kt.instance||(kt.instance=new kt),kt.instance}static isClientResource(e){return!!e&&e instanceof kt}constructor(e=null){super(),this.pathRoot=\"/client\",this.sessions=[],this.signUp=new Ui,this.signIn=new gi,this.lastActiveSessionId=null,this.createdAt=null,this.updatedAt=null,this.fromJSON(e)}get signUpAttempt(){return this.signUp}get signInAttempt(){return this.signIn}get activeSessions(){return this.sessions.filter((e=>\"active\"===e.status))}create(){return this._basePut()}fetch(){return this._baseGet()}async destroy(){return this._baseDelete({path:\"/client\"}).then((()=>{St.clear(),this.sessions=[],this.signUp=new Ui(null),this.signIn=new gi(null),this.lastActiveSessionId=null,this.createdAt=null,this.updatedAt=null}))}clearCache(){return this.sessions.forEach((e=>e.clearCache()))}fromJSON(e){return e&&(this.id=e.id,this.sessions=(e.sessions||[]).map((e=>new hi(e))),this.signUp=new Ui(e.sign_up),this.signIn=new gi(e.sign_in),this.lastActiveSessionId=e.last_active_session_id,this.createdAt=bt(e.created_at),this.updatedAt=bt(e.updated_at)),this}path(){return this.pathRoot}}class Ut{constructor(e){this.object=\"\",this.deleted=!1,this.fromJSON(e)}fromJSON(e){return e?(this.object=e.object,this.id=e.id,this.slug=e.slug,this.deleted=e.deleted,this):this}}class At extends yt{constructor(e){super(),this.captchaPublicKey=null,this.captchaWidgetType=null,this.captchaProvider=\"turnstile\",this.captchaPublicKeyInvisible=null,this.fromJSON(e)}fromJSON(e){return e?(this.id=e.id,this.instanceEnvironmentType=e.instance_environment_type,this.applicationName=e.application_name,this.theme=e.theme,this.preferredSignInStrategy=e.preferred_sign_in_strategy,this.logoImageUrl=e.logo_image_url,this.faviconImageUrl=e.favicon_image_url,this.homeUrl=e.home_url,this.signInUrl=e.sign_in_url,this.signUpUrl=e.sign_up_url,this.userProfileUrl=e.user_profile_url,this.afterSignInUrl=e.after_sign_in_url,this.afterSignUpUrl=e.after_sign_up_url,this.afterSignOutOneUrl=e.after_sign_out_one_url,this.afterSignOutAllUrl=e.after_sign_out_all_url,this.afterSwitchSessionUrl=e.after_switch_session_url,this.branded=e.branded,this.captchaPublicKey=e.captcha_public_key,this.captchaWidgetType=e.captcha_widget_type,this.captchaProvider=e.captcha_provider,this.captchaPublicKeyInvisible=e.captcha_public_key_invisible,this.supportEmail=e.support_email||\"\",this.clerkJSVersion=e.clerk_js_version,this.organizationProfileUrl=e.organization_profile_url,this.createOrganizationUrl=e.create_organization_url,this.afterLeaveOrganizationUrl=e.after_leave_organization_url,this.afterCreateOrganizationUrl=e.after_create_organization_url,this.googleOneTapClientId=e.google_one_tap_client_id,this):this}}class Ot extends yt{constructor(e,t){super(),this.emailAddress=\"\",this.linkedTo=[],this.prepareVerification=e=>this._basePost({action:\"prepare_verification\",body:{...e}}),this.attemptVerification=e=>{const{code:t}=e||{};return this._basePost({action:\"attempt_verification\",body:{code:t}})},this.createEmailLinkFlow=()=>{const{run:e,stop:t}=d();return{startEmailLinkFlow:async({redirectUrl:i})=>(this.id||pt(\"SignUp\"),await this.prepareVerification({strategy:\"email_link\",redirectUrl:i}),new Promise(((i,r)=>{e((()=>this.reload().then((e=>{\"verified\"===e.verification.status&&(t(),i(e))})).catch((e=>{t(),r(e)}))))}))),cancelEmailLinkFlow:t}},this.destroy=()=>this._baseDelete(),this.toString=()=>this.emailAddress,this.pathRoot=t,this.fromJSON(e)}create(){return this._basePost({body:{email_address:this.emailAddress}})}fromJSON(e){return e?(this.id=e.id,this.emailAddress=e.email_address,this.verification=new Lt(e.verification),this.linkedTo=(e.linked_to||[]).map((e=>new Vt(e))),this):this}}class Pt extends yt{constructor(e){super(),this.fromJSON(e)}fromJSON(e){const{enabled:t=!1,max_allowed_memberships:i=0,actions:r,domains:n}=e||{};return this.enabled=t,this.maxAllowedMemberships=i,this.actions={adminDelete:(null==r?void 0:r.admin_delete)||!1},this.domains={enabled:(null==n?void 0:n.enabled)||!1,enrollmentModes:(null==n?void 0:n.enrollment_modes)||[]},this}}class Et extends yt{static getInstance(){return Et.instance||(Et.instance=new Et),Et.instance}constructor(e=null){super(),this.pathRoot=\"/environment\",this.isSingleSession=()=>this.authConfig.singleSessionMode,this.isProduction=()=>\"production\"===this.displayConfig.instanceEnvironmentType,this.isDevelopmentOrStaging=()=>!this.isProduction(),this.onWindowLocationHost=()=>this.displayConfig.backendHost===window.location.host,this.fromJSON(e)}fetch({touch:e=!1}){return e?this._basePatch({}):this._baseGet()}fromJSON(e){return e&&(this.authConfig=new wt(e.auth_config),this.displayConfig=new At(e.display_config),this.userSettings=new vt(e.user_settings),this.organizationSettings=new Pt(e.organization_settings),this.maintenanceMode=e.maintenance_mode),this}}function It(){return D()&&\"function\"==typeof window.PublicKeyCredential}class Ct{static encode(e){return btoa(String.fromCharCode(...new Uint8Array(e))).replace(/\\+/g,\"-\").replace(/\\//g,\"_\").replace(/=+$/,\"\")}static decode(e){const t=e.replace(/-/g,\"+\").replace(/_/g,\"/\"),i=atob(t),r=i.length,n=new Uint8Array(r);for(let s=0;s<r;s++)n[s]=i.charCodeAt(s);return n.buffer}}const xt=new class{__abort(){if(!this.controller)return;const e=new Error;e.name=\"AbortError\",this.controller.abort(e)}createAbortSignal(){this.__abort();const e=new AbortController;return this.controller=e,e.signal}abort(){this.__abort(),this.controller=void 0}};function Tt(e){return\"AbortError\"===e.name?new zt(e.message,{code:\"passkey_operation_aborted\"}):\"SecurityError\"===e.name?new zt(e.message,{code:\"passkey_invalid_rpID_or_domain\"}):e}function Rt(e){return\"InvalidStateError\"===e.name?new zt(e.message,{code:\"passkey_already_exists\"}):\"NotAllowedError\"===e.name?new zt(e.message,{code:\"passkey_registration_cancelled\"}):Tt(e)}function Mt(e){return\"NotAllowedError\"===e.name?new zt(e.message,{code:\"passkey_retrieval_cancelled\"}):Tt(e)}function Nt(e){return{type:e.type,id:e.id,rawId:Ft(e.rawId),authenticatorAttachment:e.authenticatorAttachment}}function jt(e){const t=e.response;return{...Nt(e),response:{clientDataJSON:Ft(t.clientDataJSON),authenticatorData:Ft(t.authenticatorData),signature:Ft(t.signature),userHandle:t.userHandle?Ft(t.userHandle):null}}}const Ft=Ct.encode.bind(Ct),Wt=Ct.decode.bind(Ct);class zt extends C{constructor(e,{code:t}){super(e,{code:t}),this.code=t}}class Lt extends yt{constructor(e){super(),this.pathRoot=\"\",this.status=null,this.strategy=null,this.nonce=null,this.externalVerificationRedirectURL=null,this.attempts=null,this.expireAt=null,this.error=null,this.verifiedAtClient=null,this.verifiedFromTheSameClient=()=>{var e,t;return this.verifiedAtClient===(null===(t=null===(e=yt.clerk)||void 0===e?void 0:e.client)||void 0===t?void 0:t.id)},this.fromJSON(e)}fromJSON(e){return e&&(this.status=e.status,this.verifiedAtClient=e.verified_at_client,this.strategy=e.strategy,this.nonce=e.nonce||null,e.external_verification_redirect_url?this.externalVerificationRedirectURL=new URL(e.external_verification_redirect_url):this.externalVerificationRedirectURL=null,this.attempts=e.attempts,this.expireAt=bt(e.expire_at),this.error=e.error?E(e.error):null),this}}class Dt extends Lt{constructor(e){super(e),this.publicKey=null,this.fromJSON(e)}fromJSON(e){return super.fromJSON(e),(null==e?void 0:e.nonce)&&(this.publicKey=function(e){const t=Wt(e.user.id),i=Wt(e.challenge),r=(e.excludeCredentials||[]).map((e=>({...e,id:Wt(e.id)})));return{...e,excludeCredentials:r,challenge:i,user:{...e.user,id:t}}}(JSON.parse(e.nonce))),this}}class $t{constructor(e){e?(this.emailAddress=new Jt(e.email_address),this.phoneNumber=new Jt(e.phone_number),this.web3Wallet=new Jt(e.web3_wallet),this.externalAccount=new Lt(e.external_account)):(this.emailAddress=new Jt(null),this.phoneNumber=new Jt(null),this.web3Wallet=new Jt(null),this.externalAccount=new Lt(null))}}class Jt extends Lt{constructor(e){super(e),e?(this.nextAction=e.next_action,this.supportedStrategies=e.supported_strategies):(this.nextAction=\"\",this.supportedStrategies=[])}}class Bt extends yt{constructor(e,t){super(),this.providerUserId=\"\",this.emailAddress=\"\",this.approvedScopes=\"\",this.firstName=\"\",this.lastName=\"\",this.imageUrl=\"\",this.username=\"\",this.publicMetadata={},this.label=\"\",this.verification=null,this.reauthorize=e=>{const{additionalScopes:t,redirectUrl:i}=e||{};return this._basePatch({action:\"reauthorize\",body:{additional_scope:t,redirect_url:i}})},this.destroy=()=>this._baseDelete(),this.pathRoot=t,this.fromJSON(e)}fromJSON(e){return e?(this.id=e.id,this.identificationId=e.identification_id,this.providerUserId=e.provider_user_id,this.approvedScopes=e.approved_scopes,this.imageUrl=e.image_url,this.emailAddress=e.email_address,this.firstName=e.first_name,this.lastName=e.last_name,this.provider=(e.provider||\"\").replace(\"oauth_\",\"\"),this.username=e.username,this.publicMetadata=e.public_metadata,this.label=e.label,e.verification&&(this.verification=new Lt(e.verification)),this):this}providerSlug(){return this.provider}providerTitle(){return[m(this.providerSlug()),\"Account\"].join(\" \")}accountIdentifier(){return this.username||this.emailAddress||this.label}}class Vt extends yt{constructor(e){super(),this.fromJSON(e)}fromJSON(e){return e?(this.id=e.id,this.type=e.type,this):this}}class Kt extends yt{static async create(e,t={}){var i;let r,n=t;\"string\"==typeof t.file?(n=t.file,r=new Headers({\"Content-Type\":\"application/octet-stream\"})):t.file&&(n=new FormData,n.append(\"file\",t.file));const s=null===(i=await yt._fetch({path:e,method:\"POST\",body:n,headers:r}))||void 0===i?void 0:i.response;return new Kt(s)}static async delete(e){var t;const i=null===(t=await yt._fetch({path:e,method:\"DELETE\"}))||void 0===t?void 0:t.response;return new Kt(i)}constructor(e){super(),this.name=null,this.publicUrl=null,this.fromJSON(e)}fromJSON(e){return e?(this.id=e.id,this.name=e.name,this.publicUrl=e.public_url,this):this}}class qt extends yt{constructor(e,t){super(),this.phoneNumber=\"\",this.reservedForSecondFactor=!1,this.defaultSecondFactor=!1,this.linkedTo=[],this.create=()=>this._basePost({body:{phone_number:this.phoneNumber}}),this.prepareVerification=()=>this._basePost({action:\"prepare_verification\",body:{strategy:\"phone_code\"}}),this.attemptVerification=e=>{const{code:t}=e||{};return this._basePost({action:\"attempt_verification\",body:{code:t}})},this.setReservedForSecondFactor=e=>{const{reserved:t}=e||{};return this._basePatch({body:{reserved_for_second_factor:t}})},this.makeDefaultSecondFactor=()=>this._basePatch({body:{default_second_factor:!0}}),this.destroy=()=>this._baseDelete(),this.toString=()=>{const e=this.phoneNumber.match(/^(\\d{3})(\\d{3})(\\d{4})$/);return e?\"(\"+e[1]+\") \"+e[2]+\"-\"+e[3]:this.phoneNumber},this.pathRoot=t,this.fromJSON(e)}fromJSON(e){return e?(this.id=e.id,this.phoneNumber=e.phone_number,this.reservedForSecondFactor=e.reserved_for_second_factor,this.defaultSecondFactor=e.default_second_factor,this.verification=new Lt(e.verification),this.linkedTo=(e.linked_to||[]).map((e=>new Vt(e))),this.backupCodes=e.backup_codes,this):this}}function Gt(e){const{pageSize:t,initialPage:i,...r}=e||{},n=null!=t?t:10,s=null!=i?i:1,o={...b(r),limit:n+\"\",offset:(s-1)*n+\"\"};return new URLSearchParams(o)}class Ht extends yt{constructor(e){super(),this.prepareAffiliationVerification=async e=>this._basePost({path:`/organizations/${this.organizationId}/domains/${this.id}/prepare_affiliation_verification`,method:\"POST\",body:e}),this.attemptAffiliationVerification=async e=>this._basePost({path:`/organizations/${this.organizationId}/domains/${this.id}/attempt_affiliation_verification`,method:\"POST\",body:e}),this.updateEnrollmentMode=e=>this._basePost({path:`/organizations/${this.organizationId}/domains/${this.id}/update_enrollment_mode`,body:e}),this.delete=()=>this._baseDelete({path:`/organizations/${this.organizationId}/domains/${this.id}`}),this.fromJSON(e)}static async create(e,{name:t}){var i;const r=null===(i=await yt._fetch({path:`/organizations/${e}/domains`,method:\"POST\",body:{name:t}}))||void 0===i?void 0:i.response;return new Ht(r)}fromJSON(e){return e&&(this.id=e.id,this.name=e.name,this.organizationId=e.organization_id,this.enrollmentMode=e.enrollment_mode,this.affiliationEmailAddress=e.affiliation_email_address,this.totalPendingSuggestions=e.total_pending_suggestions,this.totalPendingInvitations=e.total_pending_invitations,e.verification?this.verification={status:e.verification.status,strategy:e.verification.strategy,attempts:e.verification.attempts,expiresAt:bt(e.verification.expires_at)}:this.verification=null),this}}class Qt extends yt{constructor(e){super(),this.accept=async()=>await this._basePost({path:`/organizations/${this.organizationId}/membership_requests/${this.id}/accept`}),this.reject=async()=>await this._basePost({path:`/organizations/${this.organizationId}/membership_requests/${this.id}/reject`}),this.fromJSON(e)}fromJSON(e){return e&&(this.id=e.id,this.organizationId=e.organization_id,this.status=e.status,this.createdAt=bt(e.created_at),this.updatedAt=bt(e.updated_at),e.public_user_data&&(this.publicUserData=new pi(e.public_user_data))),this}}class Yt extends yt{constructor(e){super(),this.fromJSON(e)}fromJSON(e){return e?(this.id=e.id,this.key=e.key,this.name=e.name,this.description=e.description,this.type=e.type,this.createdAt=bt(e.created_at),this.updatedAt=bt(e.updated_at),this):this}}class Zt extends yt{constructor(e){super(),this.permissions=[],this.fromJSON(e)}fromJSON(e){return e?(this.id=e.id,this.key=e.key,this.name=e.name,this.description=e.description,this.permissions=e.permissions.map((e=>new Yt(e))),this.createdAt=bt(e.created_at),this.updatedAt=bt(e.updated_at),this):this}}class Xt extends yt{constructor(e){super(),this.pathRoot=\"/organizations\",this.publicMetadata={},this.membersCount=0,this.pendingInvitationsCount=0,this.update=async e=>this._basePatch({body:e}),this.getRoles=async e=>await yt._fetch({path:`/organizations/${this.id}/roles`,method:\"GET\",search:Gt(e)},{forceUpdateClient:!0}).then((e=>{const{data:t,total_count:i}=null==e?void 0:e.response;return{total_count:i,data:t.map((e=>new Zt(e)))}})),this.getDomains=async e=>await yt._fetch({path:`/organizations/${this.id}/domains`,method:\"GET\",search:Gt(e)},{forceUpdateClient:!0}).then((e=>{const{data:t,total_count:i}=null==e?void 0:e.response;return{total_count:i,data:t.map((e=>new Ht(e)))}})),this.getDomain=async({domainId:e})=>{var t;const i=null===(t=await yt._fetch({path:`/organizations/${this.id}/domains/${e}`,method:\"GET\"}))||void 0===t?void 0:t.response;return new Ht(i)},this.getMembershipRequests=async e=>await yt._fetch({path:`/organizations/${this.id}/membership_requests`,method:\"GET\",search:Gt(e)}).then((e=>{const{data:t,total_count:i}=null==e?void 0:e.response;return{total_count:i,data:t.map((e=>new Qt(e)))}})),this.createDomain=async e=>Ht.create(this.id,{name:e}),this.getMemberships=async e=>await yt._fetch({path:`/organizations/${this.id}/memberships`,method:\"GET\",search:Gt({...e,paginated:!0})}).then((e=>{const{data:t,total_count:i}=null==e?void 0:e.response;return{total_count:i,data:t.map((e=>new ii(e)))}})),this.getInvitations=async e=>await yt._fetch({path:`/organizations/${this.id}/invitations`,method:\"GET\",search:Gt(e)},{forceUpdateClient:!0}).then((e=>{const{data:t,total_count:i}=null==e?void 0:e.response;return{total_count:i,data:t.map((e=>new ei(e)))}})),this.addMember=async({userId:e,role:t})=>await yt._fetch({method:\"POST\",path:`/organizations/${this.id}/memberships`,body:{userId:e,role:t}}).then((e=>new ii(null==e?void 0:e.response))),this.inviteMember=async e=>ei.create(this.id,e),this.inviteMembers=async e=>ei.createBulk(this.id,e),this.updateMember=async({userId:e,role:t})=>await yt._fetch({method:\"PATCH\",path:`/organizations/${this.id}/memberships/${e}`,body:{role:t}}).then((e=>new ii(null==e?void 0:e.response))),this.removeMember=async e=>await yt._fetch({method:\"DELETE\",path:`/organizations/${this.id}/memberships/${e}`}).then((e=>new ii(null==e?void 0:e.response))),this.destroy=async()=>this._baseDelete(),this.setLogo=async({file:e})=>{if(null===e)return await yt._fetch({path:`/organizations/${this.id}/logo`,method:\"DELETE\"}).then((e=>new Xt(null==e?void 0:e.response)));let t,i;return\"string\"==typeof e?(t=e,i=new Headers({\"Content-Type\":\"application/octet-stream\"})):(t=new FormData,t.append(\"file\",e)),await yt._fetch({path:`/organizations/${this.id}/logo`,method:\"PUT\",body:t,headers:i}).then((e=>new Xt(null==e?void 0:e.response)))},this.fromJSON(e)}static async create(e){var t;const i=null===(t=await yt._fetch({path:\"/organizations\",method:\"POST\",body:e}))||void 0===t?void 0:t.response;return new Xt(i)}static async get(e){var t;const i=null===(t=await yt._fetch({path:`/organizations/${e}`,method:\"GET\"}))||void 0===t?void 0:t.response;return new Xt(i)}fromJSON(e){return e?(this.id=e.id,this.name=e.name,this.slug=e.slug,this.imageUrl=e.image_url,this.hasImage=e.has_image,this.publicMetadata=e.public_metadata,this.membersCount=e.members_count,this.pendingInvitationsCount=e.pending_invitations_count,this.maxAllowedMemberships=e.max_allowed_memberships,this.adminDeleteEnabled=e.admin_delete_enabled,this.createdAt=bt(e.created_at),this.updatedAt=bt(e.updated_at),this):this}async reload(e){var t;const{rotatingTokenNonce:i}=e||{},r=null===(t=await yt._fetch({path:`/organizations/${this.id}`,method:\"GET\",rotatingTokenNonce:i},{forceUpdateClient:!0}))||void 0===t?void 0:t.response;return this.fromJSON(r)}}class ei extends yt{static async create(e,{emailAddress:t,role:i}){var r;const n=null===(r=await yt._fetch({path:`/organizations/${e}/invitations`,method:\"POST\",body:{email_address:t,role:i}}))||void 0===r?void 0:r.response;return new ei(n)}static async createBulk(e,t){var i;const{emailAddresses:r,role:n}=t;return(null===(i=await yt._fetch({path:`/organizations/${e}/invitations/bulk`,method:\"POST\",body:{email_address:r,role:n}}))||void 0===i?void 0:i.response).map((e=>new ei(e)))}constructor(e){super(),this.publicMetadata={},this.revoke=async()=>await this._basePost({path:`/organizations/${this.organizationId}/invitations/${this.id}/revoke`}),this.fromJSON(e)}fromJSON(e){return e&&(this.id=e.id,this.emailAddress=e.email_address,this.organizationId=e.organization_id,this.publicMetadata=e.public_metadata,this.role=e.role,this.status=e.status,this.createdAt=bt(e.created_at),this.updatedAt=bt(e.updated_at)),this}}var ti;class ii extends yt{constructor(e){super(),this.publicMetadata={},this.permissions=[],this.destroy=async()=>await this._baseDelete({path:`/organizations/${this.organization.id}/memberships/${this.publicUserData.userId}`}),this.update=async({role:e})=>await this._basePatch({path:`/organizations/${this.organization.id}/memberships/${this.publicUserData.userId}`,body:{role:e}}),this.fromJSON(e)}fromJSON(e){return e?(this.id=e.id,this.organization=new Xt(e.organization),this.publicMetadata=e.public_metadata,e.public_user_data&&(this.publicUserData=new pi(e.public_user_data)),this.permissions=Array.isArray(e.permissions)?[...e.permissions]:[],this.role=e.role,this.createdAt=bt(e.created_at),this.updatedAt=bt(e.updated_at),this):this}reload(e){!function(e){throw new Error(`${lt} Calling OrganizationMembership.reload is not currently supported. Please contact support.`)}()}}ti=ii,ii.retrieve=async e=>await yt._fetch({path:\"/me/organization_memberships\",method:\"GET\",search:Gt({...e,paginated:!0})}).then((e=>{const{data:t,total_count:i}=null==e?void 0:e.response;return{total_count:i,data:t.map((e=>new ti(e)))}}));class ri extends yt{constructor(e){super(),this.accept=async()=>await this._basePost({path:`/me/organization_suggestions/${this.id}/accept`}),this.fromJSON(e)}static async retrieve(e){return await yt._fetch({path:\"/me/organization_suggestions\",method:\"GET\",search:Gt(e)}).then((e=>{const{data:t,total_count:i}=null==e?void 0:e.response;return{total_count:i,data:t.map((e=>new ri(e)))}}))}fromJSON(e){return e&&(this.id=e.id,this.status=e.status,this.publicOrganizationData={hasImage:e.public_organization_data.has_image,imageUrl:e.public_organization_data.image_url,name:e.public_organization_data.name,id:e.public_organization_data.id,slug:e.public_organization_data.slug},this.createdAt=bt(e.created_at),this.updatedAt=bt(e.updated_at)),this}}class ni extends yt{constructor(e,t){super(),this.provider=\"saml_custom\",this.providerUserId=null,this.active=!1,this.emailAddress=\"\",this.firstName=\"\",this.lastName=\"\",this.verification=null,this.pathRoot=t,this.fromJSON(e)}fromJSON(e){return e?(this.id=e.id,this.provider=e.provider,this.providerUserId=e.provider_user_id,this.active=e.active,this.emailAddress=e.email_address,this.firstName=e.first_name,this.lastName=e.last_name,e.verification&&(this.verification=new Lt(e.verification)),this):this}}const si=\"token:update\",oi=(()=>{const e=new Map;return{on:(t,i)=>{var r;e.get(t)||e.set(t,[]),null===(r=e.get(t))||void 0===r||r.push(i)},dispatch:(t,i)=>{(e.get(t)||[]).forEach((e=>\"function\"==typeof e&&e(i)))},off:(t,i)=>{const r=e.get(t)||[];r.length&&(i&&e.set(t,r.filter((e=>e!==i))),e.set(t,[]))}}})();var ai,li,ci,ui=function(e,t,i,r){if(\"a\"===i&&!r)throw new TypeError(\"Private accessor was defined without a getter\");if(\"function\"==typeof t?e!==t||!r:!t.has(e))throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");return\"m\"===i?r:\"a\"===i?r.call(e):r?r.value:t.get(e)};class hi extends yt{static isSessionResource(e){return!!e&&e instanceof hi}constructor(e){super(),ai.add(this),this.pathRoot=\"/client/sessions\",this.end=()=>(St.clear(),this._basePost({action:\"end\"})),this.remove=()=>(St.clear(),this._basePost({action:\"remove\"})),this.touch=()=>this._basePost({action:\"touch\",body:{active_organization_id:this.lastActiveOrganizationId}}),this.clearCache=()=>St.clear(),this.getToken=async e=>ne((()=>this._getToken(e)),{shouldRetry:(e,t)=>!_(e)&&t<4}),this.checkAuthorization=e=>{if(!this.lastActiveOrganizationId||!this.user)return!1;const t=(this.user.organizationMemberships||[]).find((e=>e.organization.id===this.lastActiveOrganizationId));if(!t)return!1;const i=t.permissions,r=t.role;return e.permission?i.includes(e.permission):!!e.role&&r===e.role},li.set(this,(e=>{e&&(St.set({tokenId:ui(this,ai,\"m\",ci).call(this),tokenResolver:Promise.resolve(e)}),oi.dispatch(si,{token:e}))})),this.fromJSON(e),ui(this,li,\"f\").call(this,this.lastActiveToken)}fromJSON(e){return e?(this.id=e.id,this.status=e.status,this.expireAt=bt(e.expire_at),this.abandonAt=bt(e.abandon_at),this.lastActiveAt=bt(e.last_active_at),this.lastActiveOrganizationId=e.last_active_organization_id,this.actor=e.actor,this.createdAt=bt(e.created_at),this.updatedAt=bt(e.updated_at),this.user=new Ei(e.user),e.public_user_data&&(this.publicUserData=new pi(e.public_user_data)),this.lastActiveToken=e.last_active_token?new Ai(e.last_active_token):null,this):this}async _getToken(e){if(!this.user)return null;const{leewayInSeconds:t,template:i,skipCache:r=!1}=e||{};if(!i&&Number(t)>=60)throw new Error(\"Leeway can not exceed the token lifespan (60 seconds)\");const n=ui(this,ai,\"m\",ci).call(this,i),s=r?void 0:St.get({tokenId:n},t);if(s){const e=await s.tokenResolver;return i||oi.dispatch(si,{token:e}),e.getRawString()||null}const o=i?`${this.path()}/tokens/${i}`:`${this.path()}/tokens`,a=Ai.create(o);return St.set({tokenId:n,tokenResolver:a}),a.then((e=>(i||oi.dispatch(si,{token:e}),e.getRawString()||null)))}}li=new WeakMap,ai=new WeakSet,ci=function(e){return`${e?`${this.id}-${e}`:this.id}-${this.updatedAt.getTime()}`};class di extends yt{constructor(e){super(),this.pathRoot=\"/me/passkeys\",this.verification=null,this.name=null,this.lastUsedAt=null,this.update=e=>this._basePatch({body:e}),this.delete=async()=>{var e;const t=null===(e=await yt._fetch({path:this.path(),method:\"DELETE\"}))||void 0===e?void 0:e.response;return new Ut(t)},this.fromJSON(e)}static async create(){return yt._fetch({path:\"/me/passkeys\",method:\"POST\"}).then((e=>new di(null==e?void 0:e.response)))}static async attemptVerification(e,t){const i=function(e){const t=e.response;return{...Nt(e),response:{clientDataJSON:Ft(t.clientDataJSON),attestationObject:Ft(t.attestationObject),transports:t.getTransports()}}}(t);return yt._fetch({path:`/me/passkeys/${e}/attempt_verification`,method:\"POST\",body:{strategy:\"passkey\",publicKeyCredential:JSON.stringify(i)}}).then((e=>new di(null==e?void 0:e.response)))}static async registerPasskey(){var e;if(!It())throw new zt(\"Passkeys are not supported on this device.\",{code:\"passkey_not_supported\"});const t=await this.create(),{verification:i}=t,r=null==i?void 0:i.publicKey;if(r||gt(\"create\"),\"platform\"===(null===(e=r.authenticatorSelection)||void 0===e?void 0:e.authenticatorAttachment)&&!await async function(){try{return\"undefined\"!=typeof window&&await window.PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable()}catch(e){return!1}}())throw new zt(\"Registration requires a platform authenticator but the device does not support it.\",{code:\"passkey_pa_not_supported\"});const{publicKeyCredential:n,error:s}=await async function(e){try{const t=await navigator.credentials.create({publicKey:e});return t?{publicKeyCredential:t,error:null}:{error:new zt(\"Browser failed to create credential\",{code:\"passkey_registration_failed\"}),publicKeyCredential:null}}catch(t){return{error:Rt(t),publicKeyCredential:null}}}(r);if(!n)throw s;return this.attemptVerification(t.id,n)}fromJSON(e){return e?(this.id=e.id,this.name=e.name,this.lastUsedAt=e.last_used_at?bt(e.last_used_at):null,this.createdAt=bt(e.created_at),this.updatedAt=bt(e.updated_at),e.verification&&(this.verification=new Dt(e.verification)),this):this}}class pi{constructor(e){this.fromJSON(e)}fromJSON(e){return e&&(this.firstName=e.first_name,this.lastName=e.last_name,this.imageUrl=e.image_url,this.hasImage=e.has_image,this.identifier=e.identifier,this.userId=e.user_id),this}}class fi extends yt{constructor(e,t){super(),this.pathRoot=\"\",this.pathRoot=t,this.fromJSON(e)}static retrieve(){var e;const t=null===(e=yt.clerk.session)||void 0===e?void 0:e.id;return this.clerk.getFapiClient().request({method:\"GET\",path:\"/me/sessions/active\",sessionId:t}).then((e=>e.payload.map((e=>new fi(e,\"/me/sessions\"))))).catch((()=>[]))}revoke(){return this._basePost({action:\"revoke\",body:{}})}fromJSON(e){var t;return e?(this.id=e.id,this.status=e.status,this.expireAt=bt(e.expire_at),this.abandonAt=bt(e.abandon_at),this.lastActiveAt=bt(e.last_active_at),this.latestActivity=(e=>({id:e.id,deviceType:e.device_type,browserName:e.browser_name,browserVersion:e.browser_version,country:e.country,city:e.city,isMobile:e.is_mobile,ipAddress:e.ip_address}))(null!==(t=e.latest_activity)&&void 0!==t?t:{}),this.actor=e.actor,this):this}}const mi=(e,t)=>{const{onValidation:i=l,onValidationComplexity:r=l}=t||{},{show_zxcvbn:s,validatePassword:o}=e,a=(e=>t=>((e,t)=>{const{max_length:i,min_length:r,require_special_char:n,require_lowercase:s,require_numbers:o,require_uppercase:a}=t,l=(e=>{let t;if(e.allowed_special_characters){let i=e.allowed_special_characters.replace(\"[\",\"\\\\[\");i=i.replace(\"]\",\"\\\\]\"),t=new RegExp(`[${i}]`)}else t=/[!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~]/;return(e,{minLength:i,maxLength:r})=>({max_length:e.length<r,min_length:e.length>=i,require_numbers:/\\d/.test(e),require_lowercase:/[a-z]/.test(e),require_uppercase:/[A-Z]/.test(e),require_special_char:t.test(e)})})(t),c=l(e,{maxLength:t.max_length,minLength:t.min_length}),u={max_length:i,min_length:r,require_special_char:n,require_lowercase:s,require_numbers:o,require_uppercase:a},h=new Map;for(const d in u){const e=d;u[e]&&(c[e]||h.set(e,!0))}return Object.freeze(Object.fromEntries(h))})(t,e))(e),c=(({min_zxcvbn_strength:e,onResult:t})=>i=>r=>{const n=i(r);return null==t||t(n),n.score>=e&&n.score<3?{state:\"pass\",keys:[\"unstable__errors.zxcvbn.couldBeStronger\"],result:n}:n.score>=e?{state:\"excellent\",result:n}:{state:\"fail\",keys:[\"unstable__errors.zxcvbn.notEnough\",...n.feedback.suggestions.map((e=>`unstable__errors.zxcvbn.suggestions.${e}`))],result:n}})(e);let u={};return(e,t)=>{const{onValidation:l=i,onValidationComplexity:h=r}=t||{};if(!o)return;const d=a(e);h(0===Object.keys(d).length),u={...u,complexity:d},s&&Promise.all([n.e(407).then(n.bind(n,407)),n.e(52).then(n.bind(n,52))]).then((([e,t])=>{const{zxcvbnOptions:i,zxcvbn:r}=e,{dictionary:n,adjacencyGraphs:s}=t;return i.setOptions({dictionary:{...n},graphs:s}),r})).then((t=>{const i=c(t)(e);u={...u,strength:i},l({...u,strength:i})})),u.complexity&&0===Object.keys(u.complexity).length&&s||l(u)}};class gi extends yt{constructor(e=null){super(),this.pathRoot=\"/client/sign_ins\",this.status=null,this.supportedIdentifiers=[],this.supportedFirstFactors=[],this.supportedSecondFactors=[],this.firstFactorVerification=new Lt(null),this.secondFactorVerification=new Lt(null),this.identifier=null,this.createdSessionId=null,this.userData=new yi(null),this.create=e=>this._basePost({path:this.pathRoot,body:e}),this.resetPassword=e=>this._basePost({body:e,action:\"reset_password\"}),this.prepareFirstFactor=e=>{let t;switch(e.strategy){case\"passkey\":t={};break;case\"email_link\":t={emailAddressId:e.emailAddressId,redirectUrl:e.redirectUrl};break;case\"email_code\":case\"reset_password_email_code\":t={emailAddressId:e.emailAddressId};break;case\"phone_code\":t={phoneNumberId:e.phoneNumberId,default:e.default};break;case\"web3_metamask_signature\":t={web3WalletId:e.web3WalletId};break;case\"reset_password_phone_code\":t={phoneNumberId:e.phoneNumberId};break;case\"saml\":t={redirectUrl:e.redirectUrl,actionCompleteRedirectUrl:e.actionCompleteRedirectUrl};break;default:!function(e,t){throw new Error(`${lt} Strategy \"${t}\" is not a valid strategy for SignIn.prepareFirstFactor.`)}(0,e.strategy)}return this._basePost({body:{...t,strategy:e.strategy},action:\"prepare_first_factor\"})},this.attemptFirstFactor=e=>{let t;return t=\"passkey\"===e.strategy?{publicKeyCredential:JSON.stringify(jt(e.publicKeyCredential))}:{...e},this._basePost({body:{...t,strategy:e.strategy},action:\"attempt_first_factor\"})},this.createEmailLinkFlow=()=>{const{run:e,stop:t}=d();return{startEmailLinkFlow:async({emailAddressId:i,redirectUrl:r})=>(this.id||pt(\"SignIn\"),await this.prepareFirstFactor({strategy:\"email_link\",emailAddressId:i,redirectUrl:r}),new Promise(((i,r)=>{e((()=>this.reload().then((e=>{const r=e.firstFactorVerification.status;\"verified\"!==r&&\"expired\"!==r||(t(),i(e))})).catch((e=>{t(),r(e)}))))}))),cancelEmailLinkFlow:t}},this.prepareSecondFactor=e=>this._basePost({body:e,action:\"prepare_second_factor\"}),this.attemptSecondFactor=e=>this._basePost({body:e,action:\"attempt_second_factor\"}),this.authenticateWithRedirect=async e=>{const{strategy:t,redirectUrl:i,redirectUrlComplete:r,identifier:n}=e||{},{firstFactorVerification:s}=\"saml\"===t&&this.id?await this.prepareFirstFactor({strategy:t,redirectUrl:gi.clerk.buildUrlWithAuth(i),actionCompleteRedirectUrl:r}):await this.create({strategy:t,identifier:n,redirectUrl:gi.clerk.buildUrlWithAuth(i),actionCompleteRedirectUrl:r}),{status:o,externalVerificationRedirectURL:a}=s;\"unverified\"===o&&a?Ee(a):mt(o,gi.fapiClient.buildEmailAddress(\"support\"))},this.authenticateWithWeb3=async e=>{const{identifier:t,generateSignature:i}=e||{};\"function\"!=typeof i&&function(e=\"\"){throw new Error(`${lt} Missing '${e}' option`)}(\"generateSignature\"),await this.create({identifier:t});const r=this.supportedFirstFactors.find((e=>\"web3_metamask_signature\"===e.strategy));r||ft(\"SignIn\"),await this.prepareFirstFactor(r);const{nonce:n}=this.firstFactorVerification,s=await i({identifier:this.identifier,nonce:n});return this.attemptFirstFactor({signature:s,strategy:\"web3_metamask_signature\"})},this.authenticateWithMetamask=async()=>{const e=await st();return this.authenticateWithWeb3({identifier:e,generateSignature:ot})},this.authenticateWithPasskey=async e=>{const{flow:t}=e||{};if(!It())throw new zt(\"Passkeys are not supported\",{code:\"passkey_not_supported\"});if(\"autofill\"===t||\"discoverable\"===t)await this.create({strategy:\"passkey\"});else{const e=this.supportedFirstFactors.find((e=>\"passkey\"===e.strategy));e||function(){throw new Error(`${lt} You need to start a SignIn flow by calling SignIn.create({ strategy: 'passkey' }) first`)}(),await this.prepareFirstFactor(e)}const{nonce:i}=this.firstFactorVerification,r=i?function(e){const t=Wt(e.challenge),i=(e.allowCredentials||[]).map((e=>({...e,id:Wt(e.id)})));return{...e,allowCredentials:i,challenge:t}}(JSON.parse(i)):null;r||gt(\"get\");let n=!1;\"autofill\"===t&&(n=await async function(){try{return It()&&await window.PublicKeyCredential.isConditionalMediationAvailable()}catch(e){return!1}}());const{publicKeyCredential:s,error:o}=await async function({publicKeyOptions:e,conditionalUI:t}){try{const i=await navigator.credentials.get({publicKey:e,mediation:t?\"conditional\":\"optional\",signal:xt.createAbortSignal()});return i?{publicKeyCredential:i,error:null}:{error:new zt(\"Browser failed to get credential\",{code:\"passkey_retrieval_failed\"}),publicKeyCredential:null}}catch(i){return{error:Mt(i),publicKeyCredential:null}}}({publicKeyOptions:r,conditionalUI:n});if(!s)throw o;return this.attemptFirstFactor({publicKeyCredential:s,strategy:\"passkey\"})},this.validatePassword=(e,t)=>{var i,r;if(null===(i=gi.clerk.__unstable__environment)||void 0===i?void 0:i.userSettings.passwordSettings)return mi({...null===(r=gi.clerk.__unstable__environment)||void 0===r?void 0:r.userSettings.passwordSettings,validatePassword:!0})(e,t)},this.fromJSON(e)}fromJSON(e){return e&&(this.id=e.id,this.status=e.status,this.supportedIdentifiers=e.supported_identifiers,this.identifier=e.identifier,this.supportedFirstFactors=v(e.supported_first_factors),this.supportedSecondFactors=v(e.supported_second_factors),this.firstFactorVerification=new Lt(e.first_factor_verification),this.secondFactorVerification=new Lt(e.second_factor_verification),this.createdSessionId=e.created_session_id,this.userData=new yi(e.user_data)),this}}class yi{constructor(e){this.fromJSON(e)}fromJSON(e){return e&&(this.firstName=e.first_name,this.lastName=e.last_name,this.imageUrl=e.image_url,this.hasImage=e.has_image),this}}const vi=(e,t,i,r)=>\"key\"===r?g(e):t(e);function wi(e){const t=[],i=[];function r({method:t,path:i,sessionId:r,search:n,rotatingTokenNonce:s}){const o=new URLSearchParams(n);e.version&&o.append(\"_clerk_js_version\",e.version),s&&o.append(\"rotating_token_nonce\",s),\"development\"===e.instanceType&&e.isSatellite&&o.append(\"__domain\",e.domain),t&&\"GET\"!==t&&\"POST\"!==t&&o.append(\"_method\",t),i&&!i.startsWith(\"/client\")&&r&&o.append(\"_clerk_session_id\",r);const a=[...o.entries()].reduce(((e,[t,i])=>(e[t]=i.includes(\",\")?i.split(\",\"):i,e)),{});return Be().stringify(a,{addQueryPrefix:!0,arrayFormat:\"repeat\"})}function n(t){const{path:i,pathPrefix:n=\"v1\"}=t,{proxyUrl:s,domain:o,frontendApi:a,instanceType:l}=e,c=\"production\"===l?o:\"\";if(s){const e=new URL(s),o=e.pathname.slice(1,e.pathname.length);return Qe({base:e.origin,pathname:`${o}/${n}${i}`,search:r(t)},{stringify:!1})}return Qe({base:`https://${c||a}`,pathname:`${n}${i}`,search:r(t)},{stringify:!1})}return{buildEmailAddress:function(t){return function({localPart:e,frontendApi:t}){return`${e}@${t?t.replace(\"clerk.\",\"\"):\"clerk.com\"}`}({localPart:t,frontendApi:e.frontendApi})},buildUrl:n,onAfterResponse:function(e){i.push(e)},onBeforeRequest:function(e){t.push(e)},request:async function(r){var s;let{method:o=\"GET\",body:a}=r;r.url=n({...r,sessionId:null===(s=e.session)||void 0===s?void 0:s.id}),r.headers||(r.headers=new Headers),\"GET\"===o||a instanceof FormData||r.headers.has(\"content-type\")||r.headers.set(\"content-type\",\"application/x-www-form-urlencoded\"),\"application/x-www-form-urlencoded\"===r.headers.get(\"content-type\")&&(r.body=Be().stringify(a,{encoder:vi,indices:!1}));const l=await async function(e){const i=\"undefined\"!=typeof window&&window.__unstable__onBeforeRequest;for await(const r of[i,...t].filter((e=>e)))if(!1===await r(e))return!1;return!0}(r),c=\"GET\"===o?\"GET\":\"POST\";let u;const h=r.url.toString(),d={...r,credentials:\"include\",method:c};try{if(l){const e=$()?4:11;u=\"GET\"===c?await ne((()=>fetch(h,d)),{firstDelay:500,maxDelay:3e3,shouldRetry:(t,i)=>i<e}):await fetch(h,d)}else u=new Response(\"{}\",r)}catch(m){!function(e,t){throw new Error(`${lt} Network error at \"${e}\" - ${t}. Please try again.`)}(h,m)}const p=await u.json(),f=Object.assign(u,{payload:p});return await async function(e,t){const r=\"undefined\"!=typeof window&&window.__unstable__onAfterResponse;for await(const n of[r,...i].filter((e=>e)))if(!1===await n(e,t))return!1;return!0}(r,f),f}}}async function bi(e=\"\",t){const{async:i,defer:r,beforeLoad:n,crossOrigin:s}=t||{};return new Promise(((t,o)=>{e||o(\"loadScript cannot be called without a src\"),document&&document.body||o(\"loadScript cannot be called when document does not exist\");const a=document.createElement(\"script\");s&&a.setAttribute(\"crossorigin\",s),a.async=i||!1,a.defer=r||!1,a.addEventListener(\"load\",(()=>{a.remove(),t(a)})),a.addEventListener(\"error\",(()=>{a.remove(),o()})),a.src=e,null==n||n(a),document.body.appendChild(a)}))}const _i=\"clerk-captcha\",Si=\"clerk-invisible-captcha\";function ki(e){const{unsafeMetadata:t}={...e},i=t?\"object\"==typeof t?JSON.stringify(t):t:\"\";return{...e,...t?{unsafeMetadata:i}:{}}}class Ui extends yt{constructor(e=null){super(),this.pathRoot=\"/client/sign_ups\",this.status=null,this.requiredFields=[],this.optionalFields=[],this.missingFields=[],this.unverifiedFields=[],this.verifications=new $t(null),this.username=null,this.firstName=null,this.lastName=null,this.emailAddress=null,this.phoneNumber=null,this.web3wallet=null,this.hasPassword=!1,this.unsafeMetadata={},this.createdSessionId=null,this.createdUserId=null,this.abandonAt=null,this.create=async e=>{const t=e,{captchaSiteKey:i,canUseCaptcha:r,captchaURL:n,captchaWidgetType:s,captchaProvider:o,captchaPublicKeyInvisible:a}=(e=>{const t=e.__unstable__environment,i=wi(e),r=t?t.displayConfig.captchaProvider:\"turnstile\";return{captchaSiteKey:t?t.displayConfig.captchaPublicKey:null,captchaWidgetType:t?t.displayConfig.captchaWidgetType:null,captchaProvider:r,captchaPublicKeyInvisible:t?t.displayConfig.captchaPublicKeyInvisible:null,canUseCaptcha:t?t.userSettings.signUp.captcha_enabled&&e.isStandardBrowser&&\"production\"===e.instanceType:null,captchaURL:i.buildUrl({path:\"hcaptcha\"==r?\"hcaptcha/1/api.js\":\"cloudflare/turnstile/v0/api.js\",pathPrefix:\"\",search:\"?render=explicit\"}).toString()}})(Ui.clerk);if(r&&i&&n&&a)try{const{captchaToken:e,captchaWidgetTypeUsed:r}=await(e=>{const{captchaProvider:t,...i}=e;return\"hcaptcha\"===t?(async e=>{const{siteKey:t,scriptUrl:i,widgetType:r,invisibleSiteKey:n}=e;let s=\"\",o=\"\",a=!r||\"invisible\"===r,l=t,c=null;const u=()=>{const e=document.createElement(\"div\");return e.id=Si,document.body.appendChild(e),e},h=await async function(e){if(!window.hcaptcha)try{await bi(e,{defer:!0})}catch{throw console.error(\"Clerk: Failed to load the CAPTCHA script from the URL: \",e),{captchaError:\"captcha_script_failed_to_load\"}}return window.hcaptcha}(i);let d=0;const p=[];try{[s,o]=await new Promise(((e,t)=>{try{if(a)c=u();else{const e=document.getElementById(_i);e?(e.style.display=\"block\",c=e):(console.error(\"Captcha DOM element not found. Using invisible captcha widget.\"),c=u(),a=!0,l=n)}const i=h.render(a?Si:_i,{sitekey:l,size:a?\"invisible\":\"normal\",callback:function(t){e([t,i])},\"error-callback\":function(e){p.push(e),d<2?setTimeout((()=>{h.reset(i),d++}),250):t([p.join(\",\"),i])}});a&&h.execute(i)}catch(i){t([i,void 0])}})),h.remove(o)}catch([f,o]){throw o&&h.remove(o),{captchaError:f}}finally{c&&(a?document.body.removeChild(c):c.style.display=\"none\")}return{captchaToken:s,captchaWidgetTypeUsed:a?\"invisible\":\"smart\"}})(i):(async e=>{const{siteKey:t,scriptUrl:i,widgetType:r,invisibleSiteKey:n}=e;let s=\"\",o=\"\",a=!r||\"invisible\"===r,l=t,c=null;const u=()=>{const e=document.createElement(\"div\");return e.classList.add(Si),document.body.appendChild(e),e},h=await async function(e){if(!window.turnstile)try{await bi(e,{defer:!0})}catch{throw console.error(\"Clerk: Failed to load the CAPTCHA script from the URL: \",e),{captchaError:\"captcha_script_failed_to_load\"}}return window.turnstile}(i);let d=0;const p=[];try{[s,o]=await new Promise(((e,t)=>{try{if(a)c=u();else{const e=document.getElementById(_i);e?(e.style.display=\"block\",c=e):(console.error(\"Captcha DOM element not found. Using invisible captcha widget.\"),c=u(),a=!0,l=n)}const i=h.render(a?`.${Si}`:`#${_i}`,{sitekey:l,appearance:\"interaction-only\",retry:\"never\",\"refresh-expired\":\"auto\",callback:function(t){e([t,i])},\"error-callback\":function(e){p.push(e),d<2&&(e=>!![\"crashed\",\"undefined_error\",\"102\",\"103\",\"104\",\"106\",\"110600\",\"300\",\"600\"].find((t=>e.startsWith(t))))(e.toString())?setTimeout((()=>{h.reset(i),d++}),250):t([p.join(\",\"),i])},\"unsupported-callback\":function(){return t([\"This browser is not supported by the CAPTCHA.\",i]),!0}})}catch(i){t([i,void 0])}})),h.remove(o)}catch([f,o]){throw o&&h.remove(o),{captchaError:f}}finally{c&&(a?document.body.removeChild(c):c.style.display=\"none\")}return{captchaToken:s,captchaWidgetTypeUsed:a?\"invisible\":\"smart\"}})(i)})({siteKey:i,widgetType:s,invisibleSiteKey:a,scriptUrl:n,captchaProvider:o});t.captchaToken=e,t.captchaWidgetType=r}catch(l){if(!l.captchaError)throw new C(l.message,{code:\"captcha_unavailable\"});t.captchaError=l.captchaError}return this._basePost({path:this.pathRoot,body:ki(t)})},this.prepareVerification=e=>this._basePost({body:e,action:\"prepare_verification\"}),this.attemptVerification=e=>this._basePost({body:e,action:\"attempt_verification\"}),this.prepareEmailAddressVerification=e=>this.prepareVerification(e||{strategy:\"email_code\"}),this.attemptEmailAddressVerification=e=>this.attemptVerification({...e,strategy:\"email_code\"}),this.createEmailLinkFlow=()=>{const{run:e,stop:t}=d();return{startEmailLinkFlow:async({redirectUrl:i})=>(this.id||pt(\"SignUp\"),await this.prepareEmailAddressVerification({strategy:\"email_link\",redirectUrl:i}),new Promise(((i,r)=>{e((()=>this.reload().then((e=>{const r=e.verifications.emailAddress.status;\"verified\"!==r&&\"expired\"!==r||(t(),i(e))})).catch((e=>{t(),r(e)}))))}))),cancelEmailLinkFlow:t}},this.preparePhoneNumberVerification=e=>this.prepareVerification(e||{strategy:\"phone_code\"}),this.attemptPhoneNumberVerification=e=>this.attemptVerification({...e,strategy:\"phone_code\"}),this.prepareWeb3WalletVerification=()=>this.prepareVerification({strategy:\"web3_metamask_signature\"}),this.attemptWeb3WalletVerification=async e=>{const{signature:t}=e;return this.attemptVerification({signature:t,strategy:\"web3_metamask_signature\"})},this.authenticateWithWeb3=async e=>{const{generateSignature:t,identifier:i,unsafeMetadata:r}=e||{},n=i||this.web3wallet;await this.create({web3Wallet:n,unsafeMetadata:r}),await this.prepareWeb3WalletVerification();const{nonce:s}=this.verifications.web3Wallet;s||ft(\"SignUp\");const o=await t({identifier:i,nonce:s});return this.attemptWeb3WalletVerification({signature:o})},this.authenticateWithMetamask=async e=>{const t=await st();return this.authenticateWithWeb3({identifier:t,generateSignature:ot,unsafeMetadata:null==e?void 0:e.unsafeMetadata})},this.authenticateWithRedirect=async({redirectUrl:e,redirectUrlComplete:t,strategy:i,continueSignUp:r=!1,unsafeMetadata:n,emailAddress:s})=>{const{verifications:o}=await(e=>r&&this.id?this.update(e):this.create(e))({strategy:i,redirectUrl:Ui.clerk.buildUrlWithAuth(e),actionCompleteRedirectUrl:t,unsafeMetadata:n,emailAddress:s}),{externalAccount:a}=o,{status:l,externalVerificationRedirectURL:c}=a;\"unverified\"===l&&c?Ee(c):mt(l,Ui.fapiClient.buildEmailAddress(\"support\"))},this.update=e=>this._basePatch({body:ki(e)}),this.validatePassword=(e,t)=>{var i,r;if(null===(i=Ui.clerk.__unstable__environment)||void 0===i?void 0:i.userSettings.passwordSettings)return mi({...null===(r=Ui.clerk.__unstable__environment)||void 0===r?void 0:r.userSettings.passwordSettings,validatePassword:!0})(e,t)},this.fromJSON(e)}fromJSON(e){return e&&(this.id=e.id,this.status=e.status,this.requiredFields=e.required_fields,this.optionalFields=e.optional_fields,this.missingFields=e.missing_fields,this.unverifiedFields=e.unverified_fields,this.verifications=new $t(e.verifications),this.username=e.username,this.firstName=e.first_name,this.lastName=e.last_name,this.emailAddress=e.email_address,this.phoneNumber=e.phone_number,this.hasPassword=e.has_password,this.unsafeMetadata=e.unsafe_metadata,this.createdSessionId=e.created_session_id,this.createdUserId=e.created_user_id,this.abandonAt=e.abandon_at,this.web3wallet=e.web3_wallet),this}}class Ai extends yt{static async create(e,t={}){const i=await yt._fetch({path:e,method:\"POST\",body:t});return new Ai(i,e)}constructor(e,t){super(),this.pathRoot=\"tokens\",this.getRawString=()=>{var e;return(null===(e=this.jwt)||void 0===e?void 0:e.claims.__raw)||\"\"},t&&(this.pathRoot=t),(null==e?void 0:e.jwt)&&(this.jwt=tt(e.jwt))}fromJSON(e){return e?(this.jwt=tt(e.jwt),this):this}}class Oi extends yt{constructor(e){super(),this.pathRoot=\"/me\",this.id=\"\",this.verified=!1,this.updatedAt=null,this.createdAt=null,this.fromJSON(e)}fromJSON(e){return e?(this.id=e.id,this.secret=e.secret,this.uri=e.uri,this.verified=e.verified,this.backupCodes=e.backup_codes,this.updatedAt=bt(e.updated_at),this.createdAt=bt(e.created_at),this):this}}class Pi extends yt{constructor(e){super(),this.pathRoot=\"/me\",this.codes=[],this.updatedAt=null,this.createdAt=null,this.fromJSON(e)}fromJSON(e){return e?(this.id=e.id,this.codes=e.codes,this.updatedAt=bt(e.updated_at),this.createdAt=bt(e.created_at),this):this}}class Ei extends yt{static isUserResource(e){return!!e&&e instanceof Ei}constructor(e){super(),this.pathRoot=\"/me\",this.id=\"\",this.externalId=null,this.username=null,this.emailAddresses=[],this.phoneNumbers=[],this.web3Wallets=[],this.externalAccounts=[],this.passkeys=[],this.samlAccounts=[],this.organizationMemberships=[],this.passwordEnabled=!1,this.firstName=null,this.lastName=null,this.fullName=null,this.primaryEmailAddressId=null,this.primaryEmailAddress=null,this.primaryPhoneNumberId=null,this.primaryPhoneNumber=null,this.primaryWeb3WalletId=null,this.primaryWeb3Wallet=null,this.imageUrl=\"\",this.hasImage=!1,this.twoFactorEnabled=!1,this.totpEnabled=!1,this.backupCodeEnabled=!1,this.publicMetadata={},this.unsafeMetadata={},this.createOrganizationEnabled=!1,this.deleteSelfEnabled=!1,this.lastSignInAt=null,this.updatedAt=null,this.createdAt=null,this.cachedSessionsWithActivities=null,this.isPrimaryIdentification=e=>{switch(e.constructor){case Ot:return this.primaryEmailAddressId===e.id;case qt:return this.primaryPhoneNumberId===e.id;case Ci:return this.primaryWeb3WalletId===e.id;default:return!1}},this.createEmailAddress=e=>{const{email:t}=e||{};return new Ot({email_address:t},this.path()+\"/email_addresses/\").create()},this.createPasskey=()=>di.registerPasskey(),this.createPhoneNumber=e=>{const{phoneNumber:t}=e||{};return new qt({phone_number:t},this.path()+\"/phone_numbers/\").create()},this.createWeb3Wallet=e=>{const{web3Wallet:t}=e||{};return new Ci({web3_wallet:t},this.path()+\"/web3_wallets/\").create()},this.createExternalAccount=async e=>{var t;const{strategy:i,redirectUrl:r,additionalScopes:n}=e||{},s=null===(t=await yt._fetch({path:\"/me/external_accounts\",method:\"POST\",body:{strategy:i,redirect_url:r,additional_scope:n}}))||void 0===t?void 0:t.response;return new Bt(s,this.path()+\"/external_accounts\")},this.createTOTP=async()=>{var e;const t=null===(e=await yt._fetch({path:\"/me/totp\",method:\"POST\"}))||void 0===e?void 0:e.response;return new Oi(t)},this.verifyTOTP=async({code:e})=>{var t;const i=null===(t=await yt._fetch({path:\"/me/totp/attempt_verification\",method:\"POST\",body:{code:e}}))||void 0===t?void 0:t.response;return new Oi(i)},this.disableTOTP=async()=>{var e;const t=null===(e=await yt._fetch({path:\"/me/totp\",method:\"DELETE\"}))||void 0===e?void 0:e.response;return new Ut(t)},this.createBackupCode=async()=>{var e;const t=null===(e=await yt._fetch({path:this.path()+\"/backup_codes/\",method:\"POST\"}))||void 0===e?void 0:e.response;return new Pi(t)},this.update=e=>this._basePatch({body:ki(e)}),this.updatePassword=e=>this._basePost({body:e,path:`${this.path()}/change_password`}),this.removePassword=e=>this._basePost({body:e,path:`${this.path()}/remove_password`}),this.delete=()=>this._baseDelete({path:\"/me\"}),this.getSessions=async()=>{if(this.cachedSessionsWithActivities)return this.cachedSessionsWithActivities;const e=await fi.retrieve();return this.cachedSessionsWithActivities=e,e},this.setProfileImage=e=>{const{file:t}=e||{};return null===t?Kt.delete(`${this.path()}/profile_image`):Kt.create(`${this.path()}/profile_image`,{file:t})},this.getOrganizationInvitations=e=>Ii.retrieve(e),this.getOrganizationSuggestions=e=>ri.retrieve(e),this.getOrganizationMemberships=e=>ii.retrieve(e),this.leaveOrganization=async e=>{var t;const i=null===(t=await yt._fetch({path:`${this.path()}/organization_memberships/${e}`,method:\"DELETE\"}))||void 0===t?void 0:t.response;return new Ut(i)},this.fromJSON(e)}path(){return this.pathRoot}get verifiedExternalAccounts(){return this.externalAccounts.filter((e=>{var t;return\"verified\"==(null===(t=e.verification)||void 0===t?void 0:t.status)}))}get unverifiedExternalAccounts(){return this.externalAccounts.filter((e=>{var t;return\"verified\"!=(null===(t=e.verification)||void 0===t?void 0:t.status)}))}get hasVerifiedEmailAddress(){return this.emailAddresses.filter((e=>\"verified\"===e.verification.status)).length>0}get hasVerifiedPhoneNumber(){return this.phoneNumbers.filter((e=>\"verified\"===e.verification.status)).length>0}fromJSON(e){return e?(this.id=e.id,this.externalId=e.external_id,this.firstName=e.first_name,this.lastName=e.last_name,(this.firstName||this.lastName)&&(this.fullName=(({firstName:e,lastName:t,name:i})=>i||[e,t].join(\" \").trim()||\"\")({firstName:this.firstName,lastName:this.lastName})),this.imageUrl=e.image_url,this.hasImage=e.has_image,this.username=e.username,this.passwordEnabled=e.password_enabled,this.emailAddresses=(e.email_addresses||[]).map((e=>new Ot(e,this.path()+\"/email_addresses\"))),this.primaryEmailAddressId=e.primary_email_address_id,this.primaryEmailAddress=this.emailAddresses.find((({id:e})=>e===this.primaryEmailAddressId))||null,this.phoneNumbers=(e.phone_numbers||[]).map((e=>new qt(e,this.path()+\"/phone_numbers\"))),this.primaryPhoneNumberId=e.primary_phone_number_id,this.primaryPhoneNumber=this.phoneNumbers.find((({id:e})=>e===this.primaryPhoneNumberId))||null,this.web3Wallets=(e.web3_wallets||[]).map((e=>new Ci(e,this.path()+\"/web3_wallets\"))),this.primaryWeb3WalletId=e.primary_web3_wallet_id,this.primaryWeb3Wallet=this.web3Wallets.find((({id:e})=>e===this.primaryWeb3WalletId))||null,this.externalAccounts=(e.external_accounts||[]).map((e=>new Bt(e,this.path()+\"/external_accounts\"))),this.passkeys=(e.passkeys||[]).map((e=>new di(e))),this.organizationMemberships=(e.organization_memberships||[]).map((e=>new ii(e))),this.samlAccounts=(e.saml_accounts||[]).map((e=>new ni(e,this.path()+\"/saml_accounts\"))),this.publicMetadata=e.public_metadata,this.unsafeMetadata=e.unsafe_metadata,this.totpEnabled=e.totp_enabled,this.backupCodeEnabled=e.backup_code_enabled,this.twoFactorEnabled=e.two_factor_enabled,this.createOrganizationEnabled=e.create_organization_enabled,this.deleteSelfEnabled=e.delete_self_enabled,e.last_sign_in_at&&(this.lastSignInAt=bt(e.last_sign_in_at)),this.updatedAt=bt(e.updated_at),this.createdAt=bt(e.created_at),this):this}}class Ii extends yt{static async retrieve(e){return await yt._fetch({path:\"/me/organization_invitations\",method:\"GET\",search:Gt(e)}).then((e=>{const{data:t,total_count:i}=null==e?void 0:e.response;return{total_count:i,data:t.map((e=>new Ii(e)))}}))}constructor(e){super(),this.publicMetadata={},this.accept=async()=>await this._basePost({path:`/me/organization_invitations/${this.id}/accept`}),this.fromJSON(e)}fromJSON(e){return e&&(this.id=e.id,this.emailAddress=e.email_address,this.publicOrganizationData={hasImage:e.public_organization_data.has_image,imageUrl:e.public_organization_data.image_url,name:e.public_organization_data.name,id:e.public_organization_data.id,slug:e.public_organization_data.slug},this.publicMetadata=e.public_metadata,this.role=e.role,this.status=e.status,this.createdAt=bt(e.created_at),this.updatedAt=bt(e.updated_at)),this}}class Ci extends yt{constructor(e,t){super(),this.web3Wallet=\"\",this.prepareVerification=e=>this._basePost({action:\"prepare_verification\",body:{...e}}),this.attemptVerification=e=>{const{signature:t}=e;return this._basePost({action:\"attempt_verification\",body:{signature:t}})},this.pathRoot=t,this.fromJSON(e)}create(){return this._basePost({body:{web3_wallet:this.web3Wallet}})}destroy(){return this._baseDelete()}toString(){return this.web3Wallet}fromJSON(e){return e?(this.id=e.id,this.web3Wallet=e.web3_wallet,this.verification=new Lt(e.verification),this):this}}function xi(e,t){return function(e,t){if(!e&&t||e&&!t)return!0;if(!e&&e===t)return!1;if(!e||!t)return!0;try{if(kt.isClientResource(e))return function(e,t){return e.id!==t.id||e.updatedAt.getTime()<t.updatedAt.getTime()||e.sessions.length!==t.sessions.length}(e,t);if(hi.isSessionResource(e))return function(e,t){return e.id!==t.id||e.updatedAt.getTime()<t.updatedAt.getTime()||function(e,t){var i,r,n,s,o,a;if(e.lastActiveOrganizationId!==t.lastActiveOrganizationId)return!0;const l=null===(r=null===(i=e.user)||void 0===i?void 0:i.organizationMemberships)||void 0===r?void 0:r.find((t=>t.organization.id===e.lastActiveOrganizationId)),c=null===(s=null===(n=t.user)||void 0===n?void 0:n.organizationMemberships)||void 0===s?void 0:s.find((t=>t.organization.id===e.lastActiveOrganizationId));return(null==l?void 0:l.role)!==(null==c?void 0:c.role)||(null===(o=null==l?void 0:l.permissions)||void 0===o?void 0:o.length)!==(null===(a=null==c?void 0:c.permissions)||void 0===a?void 0:a.length)}(t,e)}(e,t);if(Ei.isUserResource(e))return function(e,t){return e.id!==t.id||e.updatedAt.getTime()<t.updatedAt.getTime()||function(e,t){var i,r;return e.organizationMemberships.length!==t.organizationMemberships.length||(null===(i=e.organizationMemberships[0])||void 0===i?void 0:i.updatedAt)!==(null===(r=t.organizationMemberships[0])||void 0===r?void 0:r.updatedAt)}(t,e)}(e,t)}catch(i){return!0}return!0}(e,t)?t:e}var Ti,Ri,Mi,Ni,ji,Fi,Wi,zi,Li,Di,$i=function(e,t,i,r){if(\"a\"===i&&!r)throw new TypeError(\"Private accessor was defined without a getter\");if(\"function\"==typeof t?e!==t||!r:!t.has(e))throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");return\"m\"===i?r:\"a\"===i?r.call(e):r?r.value:t.get(e)};class Ji{constructor(e,t={},i={}){Ti.add(this),Di.set(this,(e=>{var t,i;return((e,t)=>{const i={};for(const r in e)e[r]&&t(e[r])&&(i[r]=e[r]);return i})(e,(i=null===(t=this.options)||void 0===t?void 0:t.allowedRedirectOrigins,e=>{if(!i)return!0;const t=new URL(e,Ke);if(t.origin===Ke)return!0;const r=i.map((e=>\"string\"==typeof e?(e=>{try{return Le(e)}catch(t){throw new Error(`Invalid pattern: ${e}.\\nConsult the documentation of glob-to-regexp here: https://www.npmjs.com/package/glob-to-regexp.\\n${t.message}`)}})(Ye(e)):e)).some((e=>e.test(Ye(t.origin))));return r||a(`Clerk: Redirect URL ${t} is not on one of the allowedRedirectOrigins, falling back to the default redirect URL.`),r}))})),this.options=e,this.fromOptions=$i(this,Ti,\"m\",Wi).call(this,e||{}),this.fromProps=$i(this,Ti,\"m\",Wi).call(this,t||{}),this.fromSearchParams=$i(this,Ti,\"m\",zi).call(this,i||{})}getAfterSignInUrl(){return $i(this,Ti,\"m\",Fi).call(this,\"signIn\")}getAfterSignUpUrl(){return $i(this,Ti,\"m\",Fi).call(this,\"signUp\")}getPreservedSearchParams(){return $i(this,Ti,\"m\",Mi).call(this,$i(this,Ti,\"m\",Ni).call(this))}toSearchParams(){return $i(this,Ti,\"m\",Mi).call(this,$i(this,Ti,\"m\",ji).call(this))}}Ri=Ji,Di=new WeakMap,Ti=new WeakSet,Mi=function(e){const t=Object.fromEntries(Object.entries(e).map((([e,t])=>[g(e),t])));return new URLSearchParams((e=>Object.entries(e).reduce(((e,[t,i])=>(null!=i&&(e[t]=i),e)),{}))(t))},Ni=function(){return Object.fromEntries(Object.entries({...this.fromSearchParams}).filter((([e])=>Ri.preserved.includes(e))))},ji=function(){const e=this.fromSearchParams.signUpForceRedirectUrl||this.fromProps.signUpForceRedirectUrl||this.fromOptions.signUpForceRedirectUrl,t=this.fromSearchParams.signUpFallbackRedirectUrl||this.fromProps.signUpFallbackRedirectUrl||this.fromOptions.signUpFallbackRedirectUrl,i=this.fromSearchParams.signInForceRedirectUrl||this.fromProps.signInForceRedirectUrl||this.fromOptions.signInForceRedirectUrl,r={signUpForceRedirectUrl:e,signUpFallbackRedirectUrl:t,signInFallbackRedirectUrl:this.fromSearchParams.signInFallbackRedirectUrl||this.fromProps.signInFallbackRedirectUrl||this.fromOptions.signInFallbackRedirectUrl,signInForceRedirectUrl:i,afterSignInUrl:this.fromSearchParams.afterSignInUrl||this.fromProps.afterSignInUrl||this.fromOptions.afterSignInUrl,afterSignUpUrl:this.fromSearchParams.afterSignUpUrl||this.fromProps.afterSignUpUrl||this.fromOptions.afterSignUpUrl,redirectUrl:this.fromSearchParams.redirectUrl||this.fromProps.redirectUrl||this.fromOptions.redirectUrl};return e&&delete r.signUpFallbackRedirectUrl,i&&delete r.signInFallbackRedirectUrl,r},Fi=function(e){const t=`${e}ForceRedirectUrl`,i=`${e}FallbackRedirectUrl`;let r;const n=`after${e[0].toUpperCase()}${e.slice(1)}Url`;let s;s=this.fromSearchParams[t]||this.fromProps[t]||this.fromOptions[t],s&&(r=t),s||(s=this.fromSearchParams.redirectUrl),s&&(r=\"redirectUrl\"),s||(s=this.fromSearchParams[i]||this.fromProps[i]||this.fromOptions[i]),s&&(r=i);const o=this.fromSearchParams[n]||this.fromProps[n]||this.fromProps.redirectUrl||this.fromOptions[n];return function(e,t,i,r){t&&r&&a(`Clerk: The \"${e}\" prop (\"${t}\") has priority over the legacy \"${i}\" (or \"redirectUrl\") (\"${r}\"), which will be completely ignored in this case. \"${i}\" (or \"redirectUrl\" prop) should be replaced with the new \"fallbackRedirectUrl\" or \"forceRedirectUrl\" props instead.`)}(r,s,n,o),s||(s=o),s||\"/\"},Wi=function(e){at(e);const t={};return Ri.keys.forEach((i=>{t[i]=e[i]})),$i(this,Ti,\"m\",Li).call(this,$i(this,Di,\"f\").call(this,t))},zi=function(e){at(e);const t={};return Ri.keys.forEach((i=>{t[i]=e[g(i)]})),t.redirectUrl=e.redirect_url,$i(this,Ti,\"m\",Li).call(this,$i(this,Di,\"f\").call(this,t))},Li=function(e){return((e,t)=>{const i={};for(const r in e)i[r]=function(e,t){return function(e){if(!e)return!1;try{return new URL(e),!0}catch(t){return!1}}(e)?e:new URL(e,t).href}(e[r],window.location.origin);return i})(e)},Ji.keys=[\"signInForceRedirectUrl\",\"signInFallbackRedirectUrl\",\"signUpForceRedirectUrl\",\"signUpFallbackRedirectUrl\",\"afterSignInUrl\",\"afterSignUpUrl\",\"redirectUrl\"],Ji.preserved=[\"redirectUrl\"];var Bi=\"__clerk_db_jwt\";function Vi(e,t){const i=new URL(e),r=i.searchParams.get(Bi);i.searchParams.delete(Bi);const n=r||t;return n&&i.searchParams.set(Bi,n),i}var Ki=e=>qi(Gi(e)),qi=e=>{const t=new URL(e);return t.searchParams.delete(Bi),t},Gi=e=>{const t=new URL(e);return t.searchParams.delete(\"__dev_session\"),t.hash=decodeURI(t.hash).replace(/__clerk_db_jwt\\[(.*)\\]/,\"\"),t.href.endsWith(\"#\")&&(t.hash=\"\"),t};function Hi(e){for(var t=1;t<arguments.length;t++){var i=arguments[t];for(var r in i)e[r]=i[r]}return e}var Qi=function e(t,i){function r(e,r,n){if(\"undefined\"!=typeof document){\"number\"==typeof(n=Hi({},i,n)).expires&&(n.expires=new Date(Date.now()+864e5*n.expires)),n.expires&&(n.expires=n.expires.toUTCString()),e=encodeURIComponent(e).replace(/%(2[346B]|5E|60|7C)/g,decodeURIComponent).replace(/[()]/g,escape);var s=\"\";for(var o in n)n[o]&&(s+=\"; \"+o,!0!==n[o]&&(s+=\"=\"+n[o].split(\";\")[0]));return document.cookie=e+\"=\"+t.write(r,e)+s}}return Object.create({set:r,get:function(e){if(\"undefined\"!=typeof document&&(!arguments.length||e)){for(var i=document.cookie?document.cookie.split(\"; \"):[],r={},n=0;n<i.length;n++){var s=i[n].split(\"=\"),o=s.slice(1).join(\"=\");try{var a=decodeURIComponent(s[0]);if(r[a]=t.read(o,a),e===a)break}catch(l){}}return e?r[e]:r}},remove:function(e,t){r(e,\"\",Hi({},t,{expires:-1}))},withAttributes:function(t){return e(this.converter,Hi({},this.attributes,t))},withConverter:function(t){return e(Hi({},this.converter,t),this.attributes)}},{attributes:{value:Object.freeze(i)},converter:{value:Object.freeze(t)}})}({read:function(e){return'\"'===e[0]&&(e=e.slice(1,-1)),e.replace(/(%[\\dA-F]{2})+/gi,decodeURIComponent)},write:function(e){return encodeURIComponent(e).replace(/%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,decodeURIComponent)}},{path:\"/\"}),Yi=Qi;function Zi(e){return{get(){return Yi.get(e)},set(t,i={}){Yi.set(e,t,i)},remove(t){Yi.remove(e,t)}}}function Xi(e,t){const i=function(e){try{return new Date(e||new Date)}catch(t){return new Date}}(e);return i.setFullYear(i.getFullYear()+t),i}let er;const tr=Zi(\"__clerk_test_etld\");function ir({frontendApi:e,fapiClient:t}){const i=(()=>{const e=Zi(Bi);return{get:()=>e.get(),set:t=>{const i=Xi(Date.now(),1),r=nt()?\"None\":\"Lax\",n=\"https:\"===window.location.protocol;return e.set(t,{expires:i,sameSite:r,secure:n})},remove:()=>e.remove()}})();function r(){return i.get()}function n(e){i.set(e)}function s(){i.remove()}return{clear:function(){s()},setup:async function(){if(!qe(e))return;t.onBeforeRequest((e=>{const t=r();t&&(null==e?void 0:e.url)&&(e.url=Vi(e.url,t))})),t.onAfterResponse(((e,t)=>{var i;const r=null===(i=null==t?void 0:t.headers)||void 0===i?void 0:i.get(\"Clerk-Db-Jwt\");r&&n(r)}));const s=function(e){const t=(e=>e.searchParams.get(Bi)||\"\")(e);return Ki(e).href!==e.href&&void 0!==globalThis.history&&globalThis.history.replaceState(null,\"\",Ki(e)),t}(new URL(window.location.href));if(s)return void n(s);if(i.get())return;const o=t.buildUrl({path:\"/dev_browser\"}),a=await fetch(o.toString(),{method:\"POST\"});if(!a.ok){const e=P((await a.json()).errors);e[0]?ut(e[0].longMessage):ut()}const l=await a.json();n(null==l?void 0:l.token)},getDevBrowserJWT:r,setDevBrowserJWT:n,removeDevBrowserJWT:s}}var rr=n(96),nr=n.n(rr);class sr{constructor(){this.lock=function(e){const t=new(nr());return window.addEventListener(\"beforeunload\",(async()=>{await t.releaseLock(e)})),{acquireLockAndRun:async i=>{if(await t.acquireLock(e,5e3))try{return await i()}finally{await t.releaseLock(e)}}}}(\"clerk.lock.refreshSessionToken\"),this.workerTimers=h(),this.timerId=null}startPollingForSessionToken(e){this.timerId||(this.timerId=this.workerTimers.setInterval((()=>{this.lock.acquireLockAndRun(e)}),5e3))}stopPollingForSessionToken(){this.timerId&&(this.workerTimers.clearInterval(this.timerId),this.timerId=null)}}class or{constructor(e,t){this.clerk=e,this.poller=null,oi.on(si,(({token:e})=>{this.updateSessionCookie(e&&e.getRawString()),this.setClientUatCookieForDevelopmentInstances()})),this.refreshTokenOnVisibilityChange(),this.startPollingForToken(),this.clientUat=(()=>{const e=Zi(\"__client_uat\");return{set:t=>{const i=Xi(Date.now(),1),r=nt()?\"None\":\"Strict\",n=\"https:\"===window.location.protocol,s=function(e=window.location.hostname,t=tr){if(er)return er;if([\"localhost\",\"127.0.0.1\",\"0.0.0.0\"].includes(e))return e;const i=e.split(\".\");if(1===i.length)return e;for(let r=i.length-2;r>=0;r--){const e=i.slice(r).join(\".\");if(t.set(\"1\",{domain:e}),\"1\"===t.get())return t.remove({domain:e}),er=e,e;t.remove({domain:e})}}();let o=\"0\";return t&&t.updatedAt&&t.activeSessions.length>0&&(o=Math.floor(t.updatedAt.getTime()/1e3).toString()),e.remove(),e.set(o,{expires:i,sameSite:r,domain:s,secure:n})},get:()=>parseInt(e.get()||\"0\",10)}})(),this.sessionCookie=(()=>{const e=Zi(\"__session\");return{set:t=>{const i=Xi(Date.now(),1),r=nt()?\"None\":\"Lax\",n=\"https:\"===window.location.protocol;return e.set(t,{expires:i,sameSite:r,secure:n})},remove:()=>e.remove()}})(),this.devBrowser=ir({frontendApi:e.frontendApi,fapiClient:t})}setEnvironment(e){this.environment=e,this.setClientUatCookieForDevelopmentInstances()}isSignedOut(){return this.clerk.loaded?!!this.clerk.user:this.clientUat.get()<=0}async setupDevelopment(){await this.devBrowser.setup()}setupProduction(){this.devBrowser.clear()}async handleUnauthenticatedDevBrowser(){this.devBrowser.clear(),await this.devBrowser.setup()}decorateUrlWithDevBrowserToken(e){const t=this.devBrowser.getDevBrowserJWT();return t?Vi(e,t):function(){throw new Error(`${lt} Missing dev browser jwt. Please contact support.`)}()}startPollingForToken(){this.poller||(this.poller=new sr),this.poller.startPollingForSessionToken((()=>this.refreshSessionToken()))}refreshTokenOnVisibilityChange(){document.addEventListener(\"visibilitychange\",(()=>{\"visible\"===document.visibilityState&&this.refreshSessionToken()}))}async refreshSessionToken(){if(this.clerk.session)try{await this.clerk.session.getToken()}catch(e){return this.handleGetTokenError(e)}}updateSessionCookie(e){return e?this.sessionCookie.set(e):this.sessionCookie.remove()}setClientUatCookieForDevelopmentInstances(){var e;(null===(e=this.environment)||void 0===e?void 0:e.isDevelopmentOrStaging())&&this.inCustomDevelopmentDomain()&&this.clientUat.set(this.clerk.client)}inCustomDevelopmentDomain(){const e=this.clerk.frontendApi.replace(\"clerk.\",\"\");return!window.location.host.endsWith(e)}handleGetTokenError(e){k(e)||ht(e.message||e),_(e)?this.clerk.handleUnauthenticated():function(e){return(`${e.message}${e.name}`||\"\").toLowerCase().replace(/\\s+/g,\"\").includes(\"networkerror\")}(e)||ht(e.toString())}}const ar=e=>`\uD83D\uDD12 Clerk:\\n${e.trim()}\\n(This notice only appears in development)`,lr={cannotRenderComponentWhenSessionExists:\"The <SignUp/> and <SignIn/> components cannot render when a user is already signed in, unless the application allows multiple sessions. Since a user is signed in and this application only allows a single session, Clerk is redirecting to the Home URL instead.\",cannotRenderSignUpComponentWhenSessionExists:\"The <SignUp/> component cannot render when a user is already signed in, unless the application allows multiple sessions. Since a user is signed in and this application only allows a single session, Clerk is redirecting to the value set in `afterSignUp` URL instead.\",cannotRenderSignInComponentWhenSessionExists:\"The <SignIn/> component cannot render when a user is already signed in, unless the application allows multiple sessions. Since a user is signed in and this application only allows a single session, Clerk is redirecting to the `afterSignIn` URL instead.\",cannotRenderComponentWhenUserDoesNotExist:\"<UserProfile/> cannot render unless a user is signed in. Since no user is signed in, this is no-op.\",cannotRenderComponentWhenOrgDoesNotExist:\"<OrganizationProfile/> cannot render unless an organization is active. Since no organization is currently active, this is no-op.\",cannotRenderAnyOrganizationComponent:e=>ar(`The <${e}/> cannot be rendered when the feature is turned off. Visit 'dashboard.clerk.com' to enable the feature. Since the feature is turned off, this is no-op.`),cannotOpenUserProfile:\"The UserProfile modal cannot render unless a user is signed in. Since no user is signed in, this is no-op.\",cannotOpenSignInOrSignUp:\"The SignIn or SignUp modals do not render when a user is already signed in, unless the application allows multiple sessions. Since a user is signed in and this application only allows a single session, this is no-op.\"};for(const n of Object.keys(lr)){const e=lr[n];\"function\"!=typeof e&&(lr[n]=ar(e))}var cr,ur,hr,dr,pr,fr,mr,gr,yr,vr,wr,br,_r,Sr,kr,Ur,Ar,Or,Pr,Er,Ir,Cr,xr,Tr,Rr,Mr,Nr,jr,Fr,Wr,zr,Lr,Dr,$r,Jr,Br,Vr,Kr,qr,Gr,Hr=function(e,t,i,r){if(\"a\"===i&&!r)throw new TypeError(\"Private accessor was defined without a getter\");if(\"function\"==typeof t?e!==t||!r:!t.has(e))throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");return\"m\"===i?r:\"a\"===i?r.call(e):r?r.value:t.get(e)},Qr=function(e,t,i,r,n){if(\"m\"===r)throw new TypeError(\"Private method is not writable\");if(\"a\"===r&&!n)throw new TypeError(\"Private accessor was defined without a setter\");if(\"function\"==typeof t?e!==t||!n:!t.has(e))throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");return\"a\"===r?n.call(e,i):n?n.value=i:t.set(e,i),i};const Yr={polling:!0,standardBrowser:!0,touchSession:!0,isSatellite:!1,signInUrl:void 0,signUpUrl:void 0,afterSignOutUrl:void 0,signInFallbackRedirectUrl:void 0,signUpFallbackRedirectUrl:void 0,signInForceRedirectUrl:void 0,signUpForceRedirectUrl:void 0};class Zr{get publishableKey(){return Hr(this,ur,\"f\")}get version(){return cr.version}set sdkMetadata(e){cr.sdkMetadata=e}get sdkMetadata(){return cr.sdkMetadata}get loaded(){return Hr(this,vr,\"f\")}get isSatellite(){return!!rt()&&N(Hr(this,br,\"f\").isSatellite,new URL(window.location.href),!1)}get domain(){if(rt()){const e=function(e=\"\"){return(e||\"\").replace(/^.+:\\/\\//,\"\")}(N(Hr(this,hr,\"f\"),new URL(window.location.href)));return\"production\"===Hr(this,yr,\"f\")?function(e){if(!e)return\"\";let t;if(e.match(/^(clerk\\.)+\\w*$/))t=/(clerk\\.)*(?=clerk\\.)/;else{if(e.match(/\\.clerk.accounts/))return e;t=/^(clerk\\.)*/gi}return`clerk.${e.replace(t,\"\")}`}(e):e}return\"\"}get proxyUrl(){if(rt()){const i=N(Hr(this,dr,\"f\"),new URL(window.location.href));return!(t=i)||p(t)||f(t)||Me.throwInvalidProxyUrl({url:i}),(e=i)?f(e)?new URL(e,window.location.origin).toString():e:\"\"}var e,t;return\"\"}get frontendApi(){const e=W(this.publishableKey);return e?e.frontendApi:Me.throwInvalidPublishableKeyError({key:this.publishableKey})}get instanceType(){return Hr(this,yr,\"f\")}get isStandardBrowser(){return Hr(this,br,\"f\").standardBrowser||!1}constructor(i,n){if(this.internal_last_error=null,ur.set(this,\"\"),hr.set(this,void 0),dr.set(this,void 0),pr.set(this,null),fr.set(this,null),mr.set(this,void 0),gr.set(this,void 0),yr.set(this,void 0),vr.set(this,!1),wr.set(this,[]),br.set(this,{}),_r.set(this,null),this.getFapiClient=()=>Hr(this,gr,\"f\"),this.load=async e=>{this.loaded||(Qr(this,br,{...Yr,...e},\"f\"),at(Hr(this,br,\"f\")),Hr(this,br,\"f\").sdkMetadata&&(cr.sdkMetadata=Hr(this,br,\"f\").sdkMetadata),!1!==Hr(this,br,\"f\").telemetry&&(this.telemetry=new Ae({clerkVersion:cr.version,samplingRate:1,publishableKey:this.publishableKey,...Hr(this,br,\"f\").telemetry})),Hr(this,br,\"f\").allowedRedirectOrigins=function(e,t){if(Array.isArray(e)&&e.length)return e;const i=[];return\"undefined\"!=typeof window&&window.location&&i.push(window.location.origin),i.push(`https://${He(t)}`),i.push(`https://*.${He(t)}`),i}(Hr(this,br,\"f\").allowedRedirectOrigins,this.frontendApi),Hr(this,br,\"f\").standardBrowser?Qr(this,vr,await Hr(this,Tr,\"f\").call(this),\"f\"):Qr(this,vr,await Hr(this,Rr,\"f\").call(this),\"f\"))},this.signOut=async(e,t)=>{var i;if(!this.client||0===this.client.sessions.length)return;const r=e&&\"object\"==typeof e?e:t||{},n=(null==r?void 0:r.redirectUrl)||this.buildAfterSignOutUrl(),s=\"function\"==typeof e?e:()=>this.navigate(n);if(!r.sessionId||1===this.client.activeSessions.length)return await this.client.destroy(),this.setActive({session:null,beforeEmit:ze(s)});const o=this.client.activeSessions.find((e=>e.id===r.sessionId)),a=(null==o?void 0:o.id)&&(null===(i=this.session)||void 0===i?void 0:i.id)===o.id;return await(null==o?void 0:o.remove()),a?this.setActive({session:null,beforeEmit:ze(s)}):void 0},this.openGoogleOneTap=e=>{this.assertComponentsReady(Hr(this,mr,\"f\")),Hr(this,mr,\"f\").ensureMounted({preloadHint:\"GoogleOneTap\"}).then((t=>t.openModal(\"googleOneTap\",e||{})))},this.closeGoogleOneTap=()=>{this.assertComponentsReady(Hr(this,mr,\"f\")),Hr(this,mr,\"f\").ensureMounted().then((e=>e.closeModal(\"googleOneTap\")))},this.openSignIn=e=>{if(this.assertComponentsReady(Hr(this,mr,\"f\")),Ie(this,this.environment)){if(\"development\"===Hr(this,yr,\"f\"))throw new C(lr.cannotOpenSignInOrSignUp,{code:\"cannot_render_single_session_enabled\"})}else Hr(this,mr,\"f\").ensureMounted({preloadHint:\"SignIn\"}).then((t=>t.openModal(\"signIn\",e||{})))},this.closeSignIn=()=>{this.assertComponentsReady(Hr(this,mr,\"f\")),Hr(this,mr,\"f\").ensureMounted().then((e=>e.closeModal(\"signIn\")))},this.openSignUp=e=>{if(this.assertComponentsReady(Hr(this,mr,\"f\")),Ie(this,this.environment)){if(\"development\"===Hr(this,yr,\"f\"))throw new C(lr.cannotOpenSignInOrSignUp,{code:\"cannot_render_single_session_enabled\"})}else Hr(this,mr,\"f\").ensureMounted({preloadHint:\"SignUp\"}).then((t=>t.openModal(\"signUp\",e||{})))},this.closeSignUp=()=>{this.assertComponentsReady(Hr(this,mr,\"f\")),Hr(this,mr,\"f\").ensureMounted().then((e=>e.closeModal(\"signUp\")))},this.openUserProfile=e=>{if(this.assertComponentsReady(Hr(this,mr,\"f\")),Ce(this)){if(\"development\"===Hr(this,yr,\"f\"))throw new C(lr.cannotOpenUserProfile,{code:\"cannot_render_user_missing\"})}else Hr(this,mr,\"f\").ensureMounted({preloadHint:\"UserProfile\"}).then((t=>t.openModal(\"userProfile\",e||{})))},this.closeUserProfile=()=>{this.assertComponentsReady(Hr(this,mr,\"f\")),Hr(this,mr,\"f\").ensureMounted().then((e=>e.closeModal(\"userProfile\")))},this.openOrganizationProfile=e=>{if(this.assertComponentsReady(Hr(this,mr,\"f\")),Te(0,this.environment)){if(\"development\"===Hr(this,yr,\"f\"))throw new C(lr.cannotRenderAnyOrganizationComponent(\"OrganizationProfile\"),{code:\"cannot_render_organizations_disabled\"})}else if(xe(this)){if(\"development\"===Hr(this,yr,\"f\"))throw new C(lr.cannotRenderComponentWhenOrgDoesNotExist,{code:\"cannot_render_organization_missing\"})}else Hr(this,mr,\"f\").ensureMounted({preloadHint:\"OrganizationProfile\"}).then((t=>t.openModal(\"organizationProfile\",e||{})))},this.closeOrganizationProfile=()=>{this.assertComponentsReady(Hr(this,mr,\"f\")),Hr(this,mr,\"f\").ensureMounted().then((e=>e.closeModal(\"organizationProfile\")))},this.openCreateOrganization=e=>{if(this.assertComponentsReady(Hr(this,mr,\"f\")),Te(0,this.environment)){if(\"development\"===Hr(this,yr,\"f\"))throw new C(lr.cannotRenderAnyOrganizationComponent(\"CreateOrganization\"),{code:\"cannot_render_organizations_disabled\"})}else Hr(this,mr,\"f\").ensureMounted({preloadHint:\"CreateOrganization\"}).then((t=>t.openModal(\"createOrganization\",e||{})))},this.closeCreateOrganization=()=>{this.assertComponentsReady(Hr(this,mr,\"f\")),Hr(this,mr,\"f\").ensureMounted().then((e=>e.closeModal(\"createOrganization\")))},this.mountSignIn=(e,t)=>{var i;this.assertComponentsReady(Hr(this,mr,\"f\")),Hr(this,mr,\"f\").ensureMounted({preloadHint:\"SignIn\"}).then((i=>i.mountComponent({name:\"SignIn\",appearanceKey:\"signIn\",node:e,props:t}))),null===(i=this.telemetry)||void 0===i||i.record(Oe(\"SignIn\",t))},this.unmountSignIn=e=>{this.assertComponentsReady(Hr(this,mr,\"f\")),Hr(this,mr,\"f\").ensureMounted().then((t=>t.unmountComponent({node:e})))},this.mountSignUp=(e,t)=>{var i;this.assertComponentsReady(Hr(this,mr,\"f\")),Hr(this,mr,\"f\").ensureMounted({preloadHint:\"SignUp\"}).then((i=>i.mountComponent({name:\"SignUp\",appearanceKey:\"signUp\",node:e,props:t}))),null===(i=this.telemetry)||void 0===i||i.record(Oe(\"SignUp\",t))},this.unmountSignUp=e=>{this.assertComponentsReady(Hr(this,mr,\"f\")),Hr(this,mr,\"f\").ensureMounted().then((t=>t.unmountComponent({node:e})))},this.mountUserProfile=(e,t)=>{var i;if(this.assertComponentsReady(Hr(this,mr,\"f\")),Ce(this)){if(\"development\"===Hr(this,yr,\"f\"))throw new C(lr.cannotRenderComponentWhenUserDoesNotExist,{code:\"cannot_render_user_missing\"})}else Hr(this,mr,\"f\").ensureMounted({preloadHint:\"UserProfile\"}).then((i=>i.mountComponent({name:\"UserProfile\",appearanceKey:\"userProfile\",node:e,props:t}))),null===(i=this.telemetry)||void 0===i||i.record(Oe(\"UserProfile\",t))},this.unmountUserProfile=e=>{this.assertComponentsReady(Hr(this,mr,\"f\")),Hr(this,mr,\"f\").ensureMounted().then((t=>t.unmountComponent({node:e})))},this.mountOrganizationProfile=(e,t)=>{var i;if(this.assertComponentsReady(Hr(this,mr,\"f\")),Te(0,this.environment)){if(\"development\"===Hr(this,yr,\"f\"))throw new C(lr.cannotRenderAnyOrganizationComponent(\"OrganizationProfile\"),{code:\"cannot_render_organizations_disabled\"});return}const r=!Ce(this);if(xe(this)&&r){if(\"development\"===Hr(this,yr,\"f\"))throw new C(lr.cannotRenderComponentWhenOrgDoesNotExist,{code:\"cannot_render_organization_missing\"})}else Hr(this,mr,\"f\").ensureMounted({preloadHint:\"OrganizationProfile\"}).then((i=>i.mountComponent({name:\"OrganizationProfile\",appearanceKey:\"userProfile\",node:e,props:t}))),null===(i=this.telemetry)||void 0===i||i.record(Oe(\"OrganizationProfile\",t))},this.unmountOrganizationProfile=e=>{this.assertComponentsReady(Hr(this,mr,\"f\")),Hr(this,mr,\"f\").ensureMounted().then((t=>t.unmountComponent({node:e})))},this.mountCreateOrganization=(e,t)=>{var i,r;if(this.assertComponentsReady(Hr(this,mr,\"f\")),Te(0,this.environment)){if(\"development\"===Hr(this,yr,\"f\"))throw new C(lr.cannotRenderAnyOrganizationComponent(\"CreateOrganization\"),{code:\"cannot_render_organizations_disabled\"})}else null===(i=Hr(this,mr,\"f\"))||void 0===i||i.ensureMounted({preloadHint:\"CreateOrganization\"}).then((i=>i.mountComponent({name:\"CreateOrganization\",appearanceKey:\"createOrganization\",node:e,props:t}))),null===(r=this.telemetry)||void 0===r||r.record(Oe(\"CreateOrganization\",t))},this.unmountCreateOrganization=e=>{var t;this.assertComponentsReady(Hr(this,mr,\"f\")),null===(t=Hr(this,mr,\"f\"))||void 0===t||t.ensureMounted().then((t=>t.unmountComponent({node:e})))},this.mountOrganizationSwitcher=(e,t)=>{var i,r;if(this.assertComponentsReady(Hr(this,mr,\"f\")),Te(0,this.environment)){if(\"development\"===Hr(this,yr,\"f\"))throw new C(lr.cannotRenderAnyOrganizationComponent(\"OrganizationSwitcher\"),{code:\"cannot_render_organizations_disabled\"})}else null===(i=Hr(this,mr,\"f\"))||void 0===i||i.ensureMounted({preloadHint:\"OrganizationSwitcher\"}).then((i=>i.mountComponent({name:\"OrganizationSwitcher\",appearanceKey:\"organizationSwitcher\",node:e,props:t}))),null===(r=this.telemetry)||void 0===r||r.record(Oe(\"OrganizationSwitcher\",t))},this.unmountOrganizationSwitcher=e=>{var t;this.assertComponentsReady(Hr(this,mr,\"f\")),null===(t=Hr(this,mr,\"f\"))||void 0===t||t.ensureMounted().then((t=>t.unmountComponent({node:e})))},this.mountOrganizationList=(e,t)=>{var i,r;if(this.assertComponentsReady(Hr(this,mr,\"f\")),Te(0,this.environment)){if(\"development\"===Hr(this,yr,\"f\"))throw new C(lr.cannotRenderAnyOrganizationComponent(\"OrganizationList\"),{code:\"cannot_render_organizations_disabled\"})}else null===(i=Hr(this,mr,\"f\"))||void 0===i||i.ensureMounted({preloadHint:\"OrganizationList\"}).then((i=>i.mountComponent({name:\"OrganizationList\",appearanceKey:\"organizationList\",node:e,props:t}))),null===(r=this.telemetry)||void 0===r||r.record(Oe(\"OrganizationList\",t))},this.unmountOrganizationList=e=>{var t;this.assertComponentsReady(Hr(this,mr,\"f\")),null===(t=Hr(this,mr,\"f\"))||void 0===t||t.ensureMounted().then((t=>t.unmountComponent({node:e})))},this.mountUserButton=(e,t)=>{var i,r;this.assertComponentsReady(Hr(this,mr,\"f\")),null===(i=Hr(this,mr,\"f\"))||void 0===i||i.ensureMounted({preloadHint:\"UserButton\"}).then((i=>i.mountComponent({name:\"UserButton\",appearanceKey:\"userButton\",node:e,props:t}))),null===(r=this.telemetry)||void 0===r||r.record(Oe(\"UserButton\",t))},this.unmountUserButton=e=>{var t;this.assertComponentsReady(Hr(this,mr,\"f\")),null===(t=Hr(this,mr,\"f\"))||void 0===t||t.ensureMounted().then((t=>t.unmountComponent({node:e})))},this.setActive=async({session:e,organization:t,beforeEmit:i})=>{if(!this.client)throw new Error(\"setActive is being called before the client is loaded. Wait for init.\");if(void 0===e&&!this.session)throw new Error(\"setActive should either be called with a session param or there should be already an active session.\");const r=\"undefined\"!=typeof window&&\"function\"==typeof window.__unstable__onBeforeSetActive?window.__unstable__onBeforeSetActive:l,n=\"undefined\"!=typeof window&&\"function\"==typeof window.__unstable__onAfterSetActive?window.__unstable__onAfterSetActive:l;\"string\"==typeof e&&(e=this.client.sessions.find((t=>t.id===e))||null);let s=void 0===e?this.session:e;if(s&&void 0!==t){const e=\"string\"==typeof t?t:null==t?void 0:t.id;s.lastActiveOrganizationId=e||null}this.session&&null===s&&(Hr(this,Wr,\"f\").call(this),oi.dispatch(si,{token:null})),await r(),(rt()&&globalThis.document.hasFocus()||!Hr(this,br,\"f\").standardBrowser)&&(await Hr(this,jr,\"f\").call(this,s),s=Hr(this,Jr,\"f\").call(this,null==s?void 0:s.id)),await(null==s?void 0:s.getToken());const o=Hr(this,br,\"f\").standardBrowser?(()=>{let e=!1;const t=()=>e=!0;return{startTracking:()=>{window.addEventListener(\"beforeunload\",t),window.addEventListener(Pe,t)},stopTracking:()=>{window.removeEventListener(\"beforeunload\",t),window.removeEventListener(Pe,t)},isUnloading:()=>e}})():void 0;i&&(null==o||o.startTracking(),Hr(this,Lr,\"f\").call(this),await i(s),null==o||o.stopTracking()),(null==o?void 0:o.isUnloading())||(Hr(this,$r,\"f\").call(this,s),Hr(this,Fr,\"f\").call(this),await n(),Hr(this,zr,\"f\").call(this))},this.addListener=e=>(e=function(e){let t;return i=>{var r,n;t||(t={...i}),t={...(r=t,n=i,{client:xi(r.client,n.client),session:xi(r.session,n.session),user:xi(r.user,n.user),organization:xi(r.organization,n.organization)})},e(t)}}(e),Hr(this,wr,\"f\").push(e),this.client&&e({client:this.client,session:this.session,user:this.user,organization:this.organization}),()=>{Qr(this,wr,Hr(this,wr,\"f\").filter((t=>t!==e)),\"f\")}),this.navigate=async(e,t)=>{if(!e||!rt())return;let i=new URL(e,window.location.href);\"http:\"!==i.protocol&&\"https:\"!==i.protocol&&(console.warn(\"Clerk: Not a valid protocol. Redirecting to /\"),i=new URL(\"/\",window.location.href));const r=(null==t?void 0:t.replace)&&Hr(this,br,\"f\").routerReplace?Hr(this,br,\"f\").routerReplace:Hr(this,br,\"f\").routerPush;if(Hr(this,br,\"f\").routerDebug&&console.log(`Clerk is navigating to: ${i}`),i.origin!==window.location.origin||!r)return void Ee(i);const n=(null==t?void 0:t.metadata)?{__internal_metadata:null==t?void 0:t.metadata}:void 0;return await r((s=i,(s=function(e){return new URL(e.toString(),window.location.origin)}(s)).href.replace(s.origin,\"\")),n);var s},Sr.set(this,(async()=>{if(!rt())return;const e=new URLSearchParams({[Ne]:\"true\"}),t=Fe(je);t&&p(t)||function(){throw new Error(`${lt} Invalid redirect_url. A valid http or https url should be used for the redirection.`)}();const i=Qe({base:Fe(je),searchParams:e},{stringify:!0});return this.navigate(this.buildUrlWithAuth(i))})),this.redirectWithAuth=async e=>{if(rt())return this.navigate(this.buildUrlWithAuth(e))},this.redirectToSignIn=async e=>{if(rt())return this.navigate(this.buildSignInUrl(e))},this.redirectToSignUp=async e=>{if(rt())return this.navigate(this.buildSignUpUrl(e))},this.redirectToUserProfile=async()=>{if(rt())return this.navigate(this.buildUserProfileUrl())},this.redirectToCreateOrganization=async()=>{if(rt())return this.navigate(this.buildCreateOrganizationUrl())},this.redirectToOrganizationProfile=async()=>{if(rt())return this.navigate(this.buildOrganizationProfileUrl())},this.redirectToAfterSignIn=async()=>{if(rt())return this.navigate(this.buildAfterSignInUrl())},this.redirectToAfterSignUp=async()=>{if(rt())return this.navigate(this.buildAfterSignUpUrl())},this.redirectToAfterSignOut=async()=>{if(rt())return this.navigate(this.buildAfterSignOutUrl())},this.handleEmailLinkVerification=async(e,t)=>{if(!this.client)return;const i=Fe(\"__clerk_status\");if(\"expired\"===i)throw new x(R.Expired);if(\"client_mismatch\"===i)throw new x(R.ClientMismatch);if(\"verified\"!==i)throw new x(R.Failed);const r=Fe(\"__clerk_created_session\"),{signIn:n,signUp:s,sessions:o}=this.client,a=o.some((e=>e.id===r)),c=\"needs_second_factor\"===n.status||\"missing_requirements\"===s.status,u=e=>t&&\"function\"==typeof t?t(e):this.navigate(e),h=e.redirectUrlComplete?()=>u(e.redirectUrlComplete):l,d=e.redirectUrl?()=>u(e.redirectUrl):l;return a?this.setActive({session:r,beforeEmit:h}):c?d():(\"function\"==typeof e.onVerifiedOnOtherDevice&&e.onVerifiedOnOtherDevice(),null)},this.handleGoogleOneTapCallback=async(e,t,i)=>{if(!this.loaded||!this.environment||!this.client)return;const{signIn:r,signUp:n}=this.client,s=\"identifier\"in(e||{})?e:r,o=\"missingFields\"in(e||{})?e:n;return this._handleRedirectCallback(t,{signUp:o,signIn:s,navigate:e=>i&&\"function\"==typeof i?i(this.buildUrlWithAuth(e)):this.navigate(this.buildUrlWithAuth(e))})},this._handleRedirectCallback=async(e,{signIn:t,signUp:i,navigate:r})=>{var n,s,o,a,l,c;if(!this.loaded||!this.environment||!this.client)return;const{displayConfig:u}=this.environment,{firstFactorVerification:h}=t,{externalAccount:d}=i.verifications,p={status:i.status,missingFields:i.missingFields,externalAccountStatus:d.status,externalAccountErrorCode:null===(n=d.error)||void 0===n?void 0:n.code,externalAccountSessionId:null===(o=null===(s=d.error)||void 0===s?void 0:s.meta)||void 0===o?void 0:o.sessionId,sessionId:i.createdSessionId},f={status:t.status,firstFactorVerificationStatus:h.status,firstFactorVerificationErrorCode:null===(a=h.error)||void 0===a?void 0:a.code,firstFactorVerificationSessionId:null===(c=null===(l=h.error)||void 0===l?void 0:l.meta)||void 0===c?void 0:c.sessionId,sessionId:t.createdSessionId},m=e=>()=>r(e),g=m(e.signInUrl||u.signInUrl),y=m(e.signUpUrl||u.signUpUrl),v=m(e.firstFactorUrl||Qe({base:u.signInUrl,hashPath:\"/factor-one\"},{stringify:!0})),w=m(e.secondFactorUrl||Qe({base:u.signInUrl,hashPath:\"/factor-two\"},{stringify:!0})),b=m(e.resetPasswordUrl||Qe({base:u.signInUrl,hashPath:\"/reset-password\"},{stringify:!0})),_=new Ji(Hr(this,br,\"f\"),e),S=m(_.getAfterSignInUrl()),k=m(_.getAfterSignUpUrl()),U=m(e.continueSignUpUrl||Qe({base:u.signUpUrl,hashPath:\"/continue\"},{stringify:!0})),A=({missingFields:t})=>t.length?U():(({signUp:e,verifyEmailPath:t,verifyPhonePath:i,navigate:r,handleComplete:n,redirectUrl:s=\"\",redirectUrlComplete:o=\"\"})=>{var a,l;if(\"complete\"===e.status)return n&&n();if(\"missing_requirements\"===e.status){if(e.missingFields.some((e=>\"saml\"===e)))return e.authenticateWithRedirect({strategy:\"saml\",redirectUrl:s,redirectUrlComplete:o,continueSignUp:!0});if((null===(a=e.unverifiedFields)||void 0===a?void 0:a.includes(\"email_address\"))&&t)return r(t);if((null===(l=e.unverifiedFields)||void 0===l?void 0:l.includes(\"phone_number\"))&&i)return r(i)}})({signUp:i,verifyEmailPath:e.verifyEmailAddressUrl||Qe({base:u.signUpUrl,hashPath:\"/verify-email-address\"},{stringify:!0}),verifyPhonePath:e.verifyPhoneNumberUrl||Qe({base:u.signUpUrl,hashPath:\"/verify-phone-number\"},{stringify:!0}),navigate:r});if(\"complete\"===f.status)return this.setActive({session:f.sessionId,beforeEmit:S});if(\"transferable\"===p.externalAccountStatus&&\"external_account_exists\"===p.externalAccountErrorCode){const e=await t.create({transfer:!0});switch(e.status){case\"complete\":return this.setActive({session:e.createdSessionId,beforeEmit:S});case\"needs_first_factor\":return v();case\"needs_second_factor\":return w();case\"needs_new_password\":return b();default:dt(\"sign in\")}}const O=\"user_locked\"===f.firstFactorVerificationErrorCode;if(\"user_locked\"===p.externalAccountErrorCode)return y();if(O)return g();if(\"needs_first_factor\"===f.status)return v();if(\"needs_new_password\"===f.status)return b();if(\"transferable\"===f.firstFactorVerificationStatus){const e=await i.create({transfer:!0});switch(e.status){case\"complete\":return this.setActive({session:e.createdSessionId,beforeEmit:k});case\"missing_requirements\":return A({missingFields:e.missingFields});default:dt(\"sign in\")}}if(\"complete\"===p.status)return this.setActive({session:p.sessionId,beforeEmit:k});if(\"needs_second_factor\"===f.status)return w();if((\"failed\"===p.externalAccountStatus||\"unverified\"===p.externalAccountStatus)&&\"identifier_already_signed_in\"===p.externalAccountErrorCode&&p.externalAccountSessionId||\"failed\"===f.firstFactorVerificationStatus&&\"identifier_already_signed_in\"===f.firstFactorVerificationErrorCode&&f.firstFactorVerificationSessionId){const e=f.firstFactorVerificationSessionId||p.externalAccountSessionId;if(e)return this.setActive({session:e,beforeEmit:S})}return(e=>{const{externalAccount:t}=e.verifications;return!!t.error})(i)?y():\"verified\"===p.externalAccountStatus&&\"missing_requirements\"===p.status?A({missingFields:i.missingFields}):g()},this.handleRedirectCallback=async(e={},t)=>{if(!this.loaded||!this.environment||!this.client)return;const{signIn:i,signUp:r}=this.client;return this._handleRedirectCallback(e,{signUp:r,signIn:i,navigate:e=>t&&\"function\"==typeof t?t(e):this.navigate(e)})},this.handleUnauthenticated=async(e={broadcast:!0})=>{if(!this.client||!this.session)return;const t=await kt.getInstance().fetch();return this.updateClient(t),this.session?void 0:(e.broadcast&&Hr(this,Wr,\"f\").call(this),this.setActive({session:null}))},this.authenticateWithGoogleOneTap=async e=>{var t;return null===(t=this.client)||void 0===t?void 0:t.signIn.create({strategy:\"google_one_tap\",token:e.token}).catch((t=>{var i;if(k(t)&&\"external_account_not_found\"===t.errors[0].code)return null===(i=this.client)||void 0===i?void 0:i.signUp.create({strategy:\"google_one_tap\",token:e.token});throw t}))},this.authenticateWithMetamask=async({redirectUrl:e,signUpContinueUrl:t,customNavigate:i,unsafeMetadata:r}={})=>{if(!this.client||!this.environment)return;const n=e=>i&&\"function\"==typeof i?i(e):this.navigate(e);let s;try{s=await this.client.signIn.authenticateWithMetamask()}catch(o){if(!Re(o,\"form_identifier_not_found\"))throw o;s=await this.client.signUp.authenticateWithMetamask({unsafeMetadata:r}),t&&\"missing_requirements\"===s.status&&\"verified\"===s.verifications.web3Wallet.status&&await n(t)}s.createdSessionId&&await this.setActive({session:s.createdSessionId,beforeEmit:()=>e?n(e):Promise.resolve()})},this.createOrganization=async({name:e,slug:t})=>Xt.create({name:e,slug:t}),this.getOrganization=async e=>Xt.get(e),this.__internal_setCountry=e=>{this.__internal_country||(this.__internal_country=e)},this.updateClient=e=>{if(!this.client){const t=Hr(this,br,\"f\").selectInitialSession?Hr(this,br,\"f\").selectInitialSession(e):Hr(this,Mr,\"f\").call(this,e);Hr(this,$r,\"f\").call(this,t)}if(this.client=e,this.session){const e=Hr(this,Jr,\"f\").call(this,this.session.id);Hr(this,$r,\"f\").call(this,e)}Hr(this,Fr,\"f\").call(this)},this.__unstable__setEnvironment=async e=>{this.environment=new Et(e),cr.mountComponentRenderer&&Qr(this,mr,cr.mountComponentRenderer(this,this.environment,Hr(this,br,\"f\")),\"f\")},this.__unstable__onBeforeRequest=e=>{Hr(this,gr,\"f\").onBeforeRequest(e)},this.__unstable__onAfterResponse=e=>{Hr(this,gr,\"f\").onAfterResponse(e)},this.__unstable__updateProps=e=>{var t;return null===(t=Hr(this,mr,\"f\"))||void 0===t?void 0:t.ensureMounted().then((t=>t.updateProps(e)))},kr.set(this,(()=>\"true\"===Fe(Ne))),Ur.set(this,(()=>We(Ne))),Ar.set(this,(()=>{const e=new URLSearchParams({[je]:window.location.href});return Qe({base:Hr(this,br,\"f\").signInUrl,searchParams:e},{stringify:!0})})),Or.set(this,(()=>{let e;if(this.proxyUrl){const t=new URL(this.proxyUrl);e=new URL(`${t.pathname}/v1/client/sync`,t.origin)}else this.domain&&(e=new URL(\"/v1/client/sync\",`https://${this.domain}`));return null==e||e.searchParams.append(\"redirect_url\",window.location.href),(null==e?void 0:e.toString())||\"\"})),Pr.set(this,(()=>{var e;return Hr(this,kr,\"f\").call(this)?(Hr(this,Ur,\"f\").call(this),!1):!!this.isSatellite&&!!(null===(e=Hr(this,pr,\"f\"))||void 0===e?void 0:e.isSignedOut())})),Er.set(this,(()=>\"production\"!==Hr(this,yr,\"f\")&&(!this.isSatellite&&!!Fe(je)))),Ir.set(this,(async()=>{\"development\"===this.instanceType?await this.navigate(Hr(this,Ar,\"f\").call(this)):\"production\"===this.instanceType&&await this.navigate(Hr(this,Or,\"f\").call(this))})),Cr.set(this,((e,t)=>{let i;try{i=new URL(e)}catch{!function(){throw new Error(`${lt} The signInUrl needs to have a absolute url format.`)}()}i.origin===t&&function(){throw new Error(`${lt} The signInUrl needs to be on a different origin than your satellite application.`)}()})),xr.set(this,(()=>{this.isSatellite&&(\"development\"!==Hr(this,yr,\"f\")||Hr(this,br,\"f\").signInUrl||function(){throw new Error(`${lt} Missing signInUrl. A satellite application needs to specify the signInUrl for development instances.`)}(),this.proxyUrl||this.domain||function(){throw new Error(`${lt} Missing domain and proxyUrl. A satellite application needs to specify a domain or a proxyUrl.`)}(),Hr(this,br,\"f\").signInUrl&&Hr(this,Cr,\"f\").call(this,Hr(this,br,\"f\").signInUrl,window.location.origin))})),Tr.set(this,(async()=>{var i,n;if(Qr(this,pr,new or(this,Hr(this,gr,\"f\")),\"f\"),Hr(this,xr,\"f\").call(this),Hr(this,Pr,\"f\").call(this))return await Hr(this,Ir,\"f\").call(this),!1;if(\"production\"===Hr(this,yr,\"f\")?null===(i=Hr(this,pr,\"f\"))||void 0===i||i.setupProduction():await(null===(n=Hr(this,pr,\"f\"))||void 0===n?void 0:n.setupDevelopment()),Hr(this,Er,\"f\").call(this))return await Hr(this,Sr,\"f\").call(this),!1;Qr(this,_r,(()=>{if(!z())return{isUnloading:it,onPageVisible:it};const e={\"visibilitychange:visible\":[]};return document.addEventListener(\"visibilitychange\",(()=>{\"visible\"===document.visibilityState&&e[\"visibilitychange:visible\"].forEach((e=>e()))})),{onPageVisible:t=>{e[\"visibilitychange:visible\"].push(t)}}})(),\"f\"),Qr(this,fr,new r(\"clerk\"),\"f\"),Hr(this,Nr,\"f\").call(this);const s=function(i=window.location.hostname){if(!i)return!1;let r=Ge.get(i);var n;return void 0===r&&(n=i,r=e.some((e=>n.startsWith(\"accounts.\")&&n.endsWith(e)))||function(e){return t.some((t=>e.endsWith(t)&&!e.endsWith(\".clerk\"+t)))}(i),Ge.set(i,r)),r}(null===window||void 0===window?void 0:window.location.hostname),o=\"development\"===Hr(this,yr,\"f\")&&!s;let a=0;for(;a<2;){a++;try{const[e,t]=await Promise.all([Et.getInstance().fetch({touch:o}),kt.getInstance().fetch()]);if(this.updateClient(t),this.updateEnvironment(e),await Hr(this,qr,\"f\").call(this))return!1;cr.mountComponentRenderer&&Qr(this,mr,cr.mountComponentRenderer(this,this.environment,Hr(this,br,\"f\")),\"f\");break}catch(l){if(!Re(l,\"dev_browser_unauthenticated\")){if(J())throw l;return console.warn(l),!1}await Hr(this,pr,\"f\").handleUnauthenticatedDevBrowser()}a>=2&&ct()}return Hr(this,Gr,\"f\").call(this),Hr(this,Vr,\"f\").call(this),!0})),Rr.set(this,(async()=>{const[e,t]=await Promise.all([Et.getInstance().fetch({touch:!1}),kt.getInstance().fetch()]);return this.updateClient(t),this.updateEnvironment(e),cr.mountComponentRenderer&&Qr(this,mr,cr.mountComponentRenderer(this,this.environment,Hr(this,br,\"f\")),\"f\"),!0})),Mr.set(this,(e=>{if(e.lastActiveSessionId){const t=e.activeSessions.find((t=>t.id===e.lastActiveSessionId));if(t)return t}return e.activeSessions[0]||null})),Nr.set(this,(()=>{var e,t;z()&&(null===(e=Hr(this,_r,\"f\"))||void 0===e||e.onPageVisible((()=>{this.session&&Hr(this,jr,\"f\").call(this,this.session)})),null===(t=Hr(this,fr,\"f\"))||void 0===t||t.addEventListener(\"message\",(({data:e})=>{\"signout\"===e.type&&this.handleUnauthenticated()})))})),jr.set(this,(async e=>{if(!e||!Hr(this,br,\"f\").touchSession)return Promise.resolve();await e.touch().catch((e=>{_(e)&&this.handleUnauthenticated()}))})),Fr.set(this,(()=>{if(this.client)for(const e of Hr(this,wr,\"f\"))e({client:this.client,session:this.session,user:this.user,organization:this.organization})})),Wr.set(this,(()=>{var e;null===(e=Hr(this,fr,\"f\"))||void 0===e||e.postMessage({type:\"signout\"})})),zr.set(this,(()=>{cr.mountComponentRenderer&&(this.closeSignUp(),this.closeSignIn())})),Lr.set(this,(()=>{this.session=void 0,this.organization=void 0,this.user=void 0,Hr(this,Fr,\"f\").call(this)})),Dr.set(this,(()=>{var e;return((null===(e=this.session)||void 0===e?void 0:e.user.organizationMemberships)||[]).map((e=>e.organization)).find((e=>{var t;return e.id===(null===(t=this.session)||void 0===t?void 0:t.lastActiveOrganizationId)}))||null})),$r.set(this,(e=>{this.session=e||null,this.organization=Hr(this,Dr,\"f\").call(this),Hr(this,Br,\"f\").call(this)})),Jr.set(this,(e=>{var t;return(null===(t=this.client)||void 0===t?void 0:t.activeSessions.find((t=>t.id===e)))||null})),Br.set(this,(()=>{this.user=this.session?this.session.user:null})),Vr.set(this,(()=>{this.addListener((({session:e})=>{var t;(null==e?void 0:e.actor)&&(null===(t=Hr(this,mr,\"f\"))||void 0===t||t.ensureMounted().then((e=>e.mountImpersonationFab())))}))})),Kr.set(this,((e,t,i)=>{if(!(e&&this.loaded&&this.environment&&this.environment.displayConfig))return\"\";const r=Hr(this,br,\"f\")[e]||this.environment.displayConfig[e],n=new Ji(Hr(this,br,\"f\"),t).toSearchParams(),s=Qe({base:r,hashSearchParams:[new URLSearchParams(i||{}),n]},{stringify:!0});return this.buildUrlWithAuth(s)})),qr.set(this,(async()=>{var e,t;const i=new URLSearchParams(window.location.search).get(\"redirect_url\"),r=\"production\"===this.instanceType,n=null!==i&&function(e,t){const i=new URL(t,Ke),r=i.pathname,n=Ze.includes(r)||Xe.includes(r);return e===i.host&&n}(this.frontendApi,i);if(r||!n)return!1;const s=this.session,o=Hr(this,br,\"f\").signInUrl||(null===(e=this.environment)||void 0===e?void 0:e.displayConfig.signInUrl),a=o&&window.location.href.startsWith(o),l=Hr(this,br,\"f\").signUpUrl||(null===(t=this.environment)||void 0===t?void 0:t.displayConfig.signUpUrl),c=l&&window.location.href.startsWith(l);return!(function(e){const t=new URL(e,Ke);return Ze.includes(t.pathname)}(i)&&!s&&(a||c)||(await this.navigate(this.buildUrlWithAuth(i)),0))})),Gr.set(this,(()=>{try{We(\"__clerk_handshake\"),We(\"__clerk_help\")}catch(e){}})),i=(i||\"\").trim(),Qr(this,hr,null==n?void 0:n.domain,\"f\"),Qr(this,dr,null==n?void 0:n.proxyUrl,\"f\"),!i)return Me.throwMissingPublishableKeyError();const s=W(i);if(!s)return Me.throwInvalidPublishableKeyError({key:i});Qr(this,ur,i,\"f\"),Qr(this,yr,s.instanceType,\"f\"),Qr(this,gr,wi(this),\"f\"),yt.clerk=this}buildUrlWithAuth(e){if(\"production\"===Hr(this,yr,\"f\"))return e;const t=new URL(e,window.location.origin);return t.origin===window.location.origin?t.href:Hr(this,pr,\"f\")?Hr(this,pr,\"f\").decorateUrlWithDevBrowserToken(t).href:t.href}buildSignInUrl(e){return Hr(this,Kr,\"f\").call(this,\"signInUrl\",{...e,redirectUrl:(null==e?void 0:e.redirectUrl)||window.location.href},null==e?void 0:e.initialValues)}buildSignUpUrl(e){return Hr(this,Kr,\"f\").call(this,\"signUpUrl\",{...e,redirectUrl:(null==e?void 0:e.redirectUrl)||window.location.href},null==e?void 0:e.initialValues)}buildUserProfileUrl(){return this.environment&&this.environment.displayConfig?this.buildUrlWithAuth(this.environment.displayConfig.userProfileUrl):\"\"}buildHomeUrl(){return this.environment&&this.environment.displayConfig?this.buildUrlWithAuth(this.environment.displayConfig.homeUrl):\"\"}buildAfterSignInUrl(){return this.buildUrlWithAuth(new Ji(Hr(this,br,\"f\")).getAfterSignInUrl())}buildAfterSignUpUrl(){return this.buildUrlWithAuth(new Ji(Hr(this,br,\"f\")).getAfterSignUpUrl())}buildAfterSignOutUrl(){return Hr(this,br,\"f\").afterSignOutUrl?this.buildUrlWithAuth(Hr(this,br,\"f\").afterSignOutUrl):\"/\"}buildCreateOrganizationUrl(){return this.environment&&this.environment.displayConfig?this.buildUrlWithAuth(this.environment.displayConfig.createOrganizationUrl):\"\"}buildOrganizationProfileUrl(){return this.environment&&this.environment.displayConfig?this.buildUrlWithAuth(this.environment.displayConfig.organizationProfileUrl):\"\"}updateEnvironment(e){var t;this.environment=e,null===(t=Hr(this,pr,\"f\"))||void 0===t||t.setEnvironment(e)}get __internal_last_error(){const e=this.internal_last_error;return this.internal_last_error=null,e}set __internal_last_error(e){this.internal_last_error=e}get __unstable__environment(){return this.environment}__internal_navigateWithError(e,t){return this.__internal_last_error=t,this.navigate(e)}assertComponentsReady(e){if(!cr.mountComponentRenderer)throw new Error(\"ClerkJS was loaded without UI components.\");if(!e)throw new Error(\"ClerkJS components are not ready yet.\")}}cr=Zr,ur=new WeakMap,hr=new WeakMap,dr=new WeakMap,pr=new WeakMap,fr=new WeakMap,mr=new WeakMap,gr=new WeakMap,yr=new WeakMap,vr=new WeakMap,wr=new WeakMap,br=new WeakMap,_r=new WeakMap,Sr=new WeakMap,kr=new WeakMap,Ur=new WeakMap,Ar=new WeakMap,Or=new WeakMap,Pr=new WeakMap,Er=new WeakMap,Ir=new WeakMap,Cr=new WeakMap,xr=new WeakMap,Tr=new WeakMap,Rr=new WeakMap,Mr=new WeakMap,Nr=new WeakMap,jr=new WeakMap,Fr=new WeakMap,Wr=new WeakMap,zr=new WeakMap,Lr=new WeakMap,Dr=new WeakMap,$r=new WeakMap,Jr=new WeakMap,Br=new WeakMap,Vr=new WeakMap,Kr=new WeakMap,qr=new WeakMap,Gr=new WeakMap,Zr.version=\"5.5.3\",Zr.sdkMetadata={name:\"@clerk/clerk-js\",version:\"5.5.3\",environment:\"production\"}}(),s}()}));", "module.exports = require('../dist/clerk.headless');\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.listen = void 0;\nconst http = require(\"http\");\nconst https = require(\"https\");\nconst path_1 = require(\"path\");\nconst events_1 = require(\"events\");\nconst getProtocol = (server) => {\n    if (typeof server.protocol === 'string')\n        return server.protocol;\n    if (server instanceof http.Server)\n        return 'http';\n    if (server instanceof https.Server)\n        return 'https';\n};\nasync function listen(server, ...args) {\n    server.listen(...args, () => { });\n    await (0, events_1.once)(server, 'listening');\n    const addressInfo = server.address();\n    if (!addressInfo) {\n        // `server.address()` returns `null` before the `'listening'`\n        // event has been emitted or after calling `server.close()`.\n        throw new Error('Server not listening');\n    }\n    let host;\n    let protocol = getProtocol(server);\n    if (typeof addressInfo === 'string') {\n        // For a server listening on a pipe or Unix domain socket,\n        // the name is returned as a string.\n        host = encodeURIComponent((0, path_1.resolve)(addressInfo));\n        if (protocol) {\n            protocol += '+unix';\n        }\n        else {\n            protocol = 'unix';\n        }\n    }\n    else {\n        // Bound to a TCP port.\n        const { address, port, family } = addressInfo;\n        host = family === 'IPv6' ? `[${address}]` : address;\n        host += `:${port}`;\n        if (!protocol) {\n            protocol = 'tcp';\n        }\n    }\n    return new URL(`${protocol}://${host}`);\n}\nexports.listen = listen;\nexports.default = listen;\n", "'use strict';\n\nconst mimicFn = (to, from) => {\n\tfor (const prop of Reflect.ownKeys(from)) {\n\t\tObject.defineProperty(to, prop, Object.getOwnPropertyDescriptor(from, prop));\n\t}\n\n\treturn to;\n};\n\nmodule.exports = mimicFn;\n// TODO: Remove this for the next major release\nmodule.exports.default = mimicFn;\n", "'use strict';\nconst mimicFn = require('mimic-fn');\n\nconst calledFunctions = new WeakMap();\n\nconst onetime = (function_, options = {}) => {\n\tif (typeof function_ !== 'function') {\n\t\tthrow new TypeError('Expected a function');\n\t}\n\n\tlet returnValue;\n\tlet callCount = 0;\n\tconst functionName = function_.displayName || function_.name || '<anonymous>';\n\n\tconst onetime = function (...arguments_) {\n\t\tcalledFunctions.set(onetime, ++callCount);\n\n\t\tif (callCount === 1) {\n\t\t\treturnValue = function_.apply(this, arguments_);\n\t\t\tfunction_ = null;\n\t\t} else if (options.throw === true) {\n\t\t\tthrow new Error(`Function \\`${functionName}\\` can only be called once`);\n\t\t}\n\n\t\treturn returnValue;\n\t};\n\n\tmimicFn(onetime, function_);\n\tcalledFunctions.set(onetime, callCount);\n\n\treturn onetime;\n};\n\nmodule.exports = onetime;\n// TODO: Remove this for the next major release\nmodule.exports.default = onetime;\n\nmodule.exports.callCount = function_ => {\n\tif (!calledFunctions.has(function_)) {\n\t\tthrow new Error(`The given function \\`${function_.name}\\` is not wrapped by the \\`onetime\\` package`);\n\t}\n\n\treturn calledFunctions.get(function_);\n};\n", "// This is not the set of all possible signals.\n//\n// It IS, however, the set of all signals that trigger\n// an exit on either Linux or BSD systems.  Linux is a\n// superset of the signal names supported on BSD, and\n// the unknown signals just fail to register, so we can\n// catch that easily enough.\n//\n// Don't bother with SIGKILL.  It's uncatchable, which\n// means that we can't fire any callbacks anyway.\n//\n// If a user does happen to register a handler on a non-\n// fatal signal like SIGWINCH or something, and then\n// exit, it'll end up firing `process.emit('exit')`, so\n// the handler will be fired anyway.\n//\n// SIGBUS, SIGFPE, SIGSEGV and SIGILL, when not raised\n// artificially, inherently leave the process in a\n// state from which it is not safe to try and enter JS\n// listeners.\nmodule.exports = [\n  'SIGABRT',\n  'SIGALRM',\n  'SIGHUP',\n  'SIGINT',\n  'SIGTERM'\n]\n\nif (process.platform !== 'win32') {\n  module.exports.push(\n    'SIGVTALRM',\n    'SIGXCPU',\n    'SIGXFSZ',\n    'SIGUSR2',\n    'SIGTRAP',\n    'SIGSYS',\n    'SIGQUIT',\n    'SIGIOT'\n    // should detect profiler and enable/disable accordingly.\n    // see #21\n    // 'SIGPROF'\n  )\n}\n\nif (process.platform === 'linux') {\n  module.exports.push(\n    'SIGIO',\n    'SIGPOLL',\n    'SIGPWR',\n    'SIGSTKFLT',\n    'SIGUNUSED'\n  )\n}\n", "// Note: since nyc uses this module to output coverage, any lines\n// that are in the direct sync flow of nyc's outputCoverage are\n// ignored, since we can never get coverage for them.\n// grab a reference to node's real process object right away\nvar process = global.process\n\nconst processOk = function (process) {\n  return process &&\n    typeof process === 'object' &&\n    typeof process.removeListener === 'function' &&\n    typeof process.emit === 'function' &&\n    typeof process.reallyExit === 'function' &&\n    typeof process.listeners === 'function' &&\n    typeof process.kill === 'function' &&\n    typeof process.pid === 'number' &&\n    typeof process.on === 'function'\n}\n\n// some kind of non-node environment, just no-op\n/* istanbul ignore if */\nif (!processOk(process)) {\n  module.exports = function () {\n    return function () {}\n  }\n} else {\n  var assert = require('assert')\n  var signals = require('./signals.js')\n  var isWin = /^win/i.test(process.platform)\n\n  var EE = require('events')\n  /* istanbul ignore if */\n  if (typeof EE !== 'function') {\n    EE = EE.EventEmitter\n  }\n\n  var emitter\n  if (process.__signal_exit_emitter__) {\n    emitter = process.__signal_exit_emitter__\n  } else {\n    emitter = process.__signal_exit_emitter__ = new EE()\n    emitter.count = 0\n    emitter.emitted = {}\n  }\n\n  // Because this emitter is a global, we have to check to see if a\n  // previous version of this library failed to enable infinite listeners.\n  // I know what you're about to say.  But literally everything about\n  // signal-exit is a compromise with evil.  Get used to it.\n  if (!emitter.infinite) {\n    emitter.setMaxListeners(Infinity)\n    emitter.infinite = true\n  }\n\n  module.exports = function (cb, opts) {\n    /* istanbul ignore if */\n    if (!processOk(global.process)) {\n      return function () {}\n    }\n    assert.equal(typeof cb, 'function', 'a callback must be provided for exit handler')\n\n    if (loaded === false) {\n      load()\n    }\n\n    var ev = 'exit'\n    if (opts && opts.alwaysLast) {\n      ev = 'afterexit'\n    }\n\n    var remove = function () {\n      emitter.removeListener(ev, cb)\n      if (emitter.listeners('exit').length === 0 &&\n          emitter.listeners('afterexit').length === 0) {\n        unload()\n      }\n    }\n    emitter.on(ev, cb)\n\n    return remove\n  }\n\n  var unload = function unload () {\n    if (!loaded || !processOk(global.process)) {\n      return\n    }\n    loaded = false\n\n    signals.forEach(function (sig) {\n      try {\n        process.removeListener(sig, sigListeners[sig])\n      } catch (er) {}\n    })\n    process.emit = originalProcessEmit\n    process.reallyExit = originalProcessReallyExit\n    emitter.count -= 1\n  }\n  module.exports.unload = unload\n\n  var emit = function emit (event, code, signal) {\n    /* istanbul ignore if */\n    if (emitter.emitted[event]) {\n      return\n    }\n    emitter.emitted[event] = true\n    emitter.emit(event, code, signal)\n  }\n\n  // { <signal>: <listener fn>, ... }\n  var sigListeners = {}\n  signals.forEach(function (sig) {\n    sigListeners[sig] = function listener () {\n      /* istanbul ignore if */\n      if (!processOk(global.process)) {\n        return\n      }\n      // If there are no other listeners, an exit is coming!\n      // Simplest way: remove us and then re-send the signal.\n      // We know that this will kill the process, so we can\n      // safely emit now.\n      var listeners = process.listeners(sig)\n      if (listeners.length === emitter.count) {\n        unload()\n        emit('exit', null, sig)\n        /* istanbul ignore next */\n        emit('afterexit', null, sig)\n        /* istanbul ignore next */\n        if (isWin && sig === 'SIGHUP') {\n          // \"SIGHUP\" throws an `ENOSYS` error on Windows,\n          // so use a supported signal instead\n          sig = 'SIGINT'\n        }\n        /* istanbul ignore next */\n        process.kill(process.pid, sig)\n      }\n    }\n  })\n\n  module.exports.signals = function () {\n    return signals\n  }\n\n  var loaded = false\n\n  var load = function load () {\n    if (loaded || !processOk(global.process)) {\n      return\n    }\n    loaded = true\n\n    // This is the number of onSignalExit's that are in play.\n    // It's important so that we can count the correct number of\n    // listeners on signals, and don't wait for the other one to\n    // handle it instead of us.\n    emitter.count += 1\n\n    signals = signals.filter(function (sig) {\n      try {\n        process.on(sig, sigListeners[sig])\n        return true\n      } catch (er) {\n        return false\n      }\n    })\n\n    process.emit = processEmit\n    process.reallyExit = processReallyExit\n  }\n  module.exports.load = load\n\n  var originalProcessReallyExit = process.reallyExit\n  var processReallyExit = function processReallyExit (code) {\n    /* istanbul ignore if */\n    if (!processOk(global.process)) {\n      return\n    }\n    process.exitCode = code || /* istanbul ignore next */ 0\n    emit('exit', process.exitCode, null)\n    /* istanbul ignore next */\n    emit('afterexit', process.exitCode, null)\n    /* istanbul ignore next */\n    originalProcessReallyExit.call(process, process.exitCode)\n  }\n\n  var originalProcessEmit = process.emit\n  var processEmit = function processEmit (ev, arg) {\n    if (ev === 'exit' && processOk(global.process)) {\n      /* istanbul ignore else */\n      if (arg !== undefined) {\n        process.exitCode = arg\n      }\n      var ret = originalProcessEmit.apply(this, arguments)\n      /* istanbul ignore next */\n      emit('exit', process.exitCode, null)\n      /* istanbul ignore next */\n      emit('afterexit', process.exitCode, null)\n      /* istanbul ignore next */\n      return ret\n    } else {\n      return originalProcessEmit.apply(this, arguments)\n    }\n  }\n}\n", "{\n\t\"dots\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"\u280B\",\n\t\t\t\"\u2819\",\n\t\t\t\"\u2839\",\n\t\t\t\"\u2838\",\n\t\t\t\"\u283C\",\n\t\t\t\"\u2834\",\n\t\t\t\"\u2826\",\n\t\t\t\"\u2827\",\n\t\t\t\"\u2807\",\n\t\t\t\"\u280F\"\n\t\t]\n\t},\n\t\"dots2\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"\u28FE\",\n\t\t\t\"\u28FD\",\n\t\t\t\"\u28FB\",\n\t\t\t\"\u28BF\",\n\t\t\t\"\u287F\",\n\t\t\t\"\u28DF\",\n\t\t\t\"\u28EF\",\n\t\t\t\"\u28F7\"\n\t\t]\n\t},\n\t\"dots3\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"\u280B\",\n\t\t\t\"\u2819\",\n\t\t\t\"\u281A\",\n\t\t\t\"\u281E\",\n\t\t\t\"\u2816\",\n\t\t\t\"\u2826\",\n\t\t\t\"\u2834\",\n\t\t\t\"\u2832\",\n\t\t\t\"\u2833\",\n\t\t\t\"\u2813\"\n\t\t]\n\t},\n\t\"dots4\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"\u2804\",\n\t\t\t\"\u2806\",\n\t\t\t\"\u2807\",\n\t\t\t\"\u280B\",\n\t\t\t\"\u2819\",\n\t\t\t\"\u2838\",\n\t\t\t\"\u2830\",\n\t\t\t\"\u2820\",\n\t\t\t\"\u2830\",\n\t\t\t\"\u2838\",\n\t\t\t\"\u2819\",\n\t\t\t\"\u280B\",\n\t\t\t\"\u2807\",\n\t\t\t\"\u2806\"\n\t\t]\n\t},\n\t\"dots5\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"\u280B\",\n\t\t\t\"\u2819\",\n\t\t\t\"\u281A\",\n\t\t\t\"\u2812\",\n\t\t\t\"\u2802\",\n\t\t\t\"\u2802\",\n\t\t\t\"\u2812\",\n\t\t\t\"\u2832\",\n\t\t\t\"\u2834\",\n\t\t\t\"\u2826\",\n\t\t\t\"\u2816\",\n\t\t\t\"\u2812\",\n\t\t\t\"\u2810\",\n\t\t\t\"\u2810\",\n\t\t\t\"\u2812\",\n\t\t\t\"\u2813\",\n\t\t\t\"\u280B\"\n\t\t]\n\t},\n\t\"dots6\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"\u2801\",\n\t\t\t\"\u2809\",\n\t\t\t\"\u2819\",\n\t\t\t\"\u281A\",\n\t\t\t\"\u2812\",\n\t\t\t\"\u2802\",\n\t\t\t\"\u2802\",\n\t\t\t\"\u2812\",\n\t\t\t\"\u2832\",\n\t\t\t\"\u2834\",\n\t\t\t\"\u2824\",\n\t\t\t\"\u2804\",\n\t\t\t\"\u2804\",\n\t\t\t\"\u2824\",\n\t\t\t\"\u2834\",\n\t\t\t\"\u2832\",\n\t\t\t\"\u2812\",\n\t\t\t\"\u2802\",\n\t\t\t\"\u2802\",\n\t\t\t\"\u2812\",\n\t\t\t\"\u281A\",\n\t\t\t\"\u2819\",\n\t\t\t\"\u2809\",\n\t\t\t\"\u2801\"\n\t\t]\n\t},\n\t\"dots7\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"\u2808\",\n\t\t\t\"\u2809\",\n\t\t\t\"\u280B\",\n\t\t\t\"\u2813\",\n\t\t\t\"\u2812\",\n\t\t\t\"\u2810\",\n\t\t\t\"\u2810\",\n\t\t\t\"\u2812\",\n\t\t\t\"\u2816\",\n\t\t\t\"\u2826\",\n\t\t\t\"\u2824\",\n\t\t\t\"\u2820\",\n\t\t\t\"\u2820\",\n\t\t\t\"\u2824\",\n\t\t\t\"\u2826\",\n\t\t\t\"\u2816\",\n\t\t\t\"\u2812\",\n\t\t\t\"\u2810\",\n\t\t\t\"\u2810\",\n\t\t\t\"\u2812\",\n\t\t\t\"\u2813\",\n\t\t\t\"\u280B\",\n\t\t\t\"\u2809\",\n\t\t\t\"\u2808\"\n\t\t]\n\t},\n\t\"dots8\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"\u2801\",\n\t\t\t\"\u2801\",\n\t\t\t\"\u2809\",\n\t\t\t\"\u2819\",\n\t\t\t\"\u281A\",\n\t\t\t\"\u2812\",\n\t\t\t\"\u2802\",\n\t\t\t\"\u2802\",\n\t\t\t\"\u2812\",\n\t\t\t\"\u2832\",\n\t\t\t\"\u2834\",\n\t\t\t\"\u2824\",\n\t\t\t\"\u2804\",\n\t\t\t\"\u2804\",\n\t\t\t\"\u2824\",\n\t\t\t\"\u2820\",\n\t\t\t\"\u2820\",\n\t\t\t\"\u2824\",\n\t\t\t\"\u2826\",\n\t\t\t\"\u2816\",\n\t\t\t\"\u2812\",\n\t\t\t\"\u2810\",\n\t\t\t\"\u2810\",\n\t\t\t\"\u2812\",\n\t\t\t\"\u2813\",\n\t\t\t\"\u280B\",\n\t\t\t\"\u2809\",\n\t\t\t\"\u2808\",\n\t\t\t\"\u2808\"\n\t\t]\n\t},\n\t\"dots9\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"\u28B9\",\n\t\t\t\"\u28BA\",\n\t\t\t\"\u28BC\",\n\t\t\t\"\u28F8\",\n\t\t\t\"\u28C7\",\n\t\t\t\"\u2867\",\n\t\t\t\"\u2857\",\n\t\t\t\"\u284F\"\n\t\t]\n\t},\n\t\"dots10\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"\u2884\",\n\t\t\t\"\u2882\",\n\t\t\t\"\u2881\",\n\t\t\t\"\u2841\",\n\t\t\t\"\u2848\",\n\t\t\t\"\u2850\",\n\t\t\t\"\u2860\"\n\t\t]\n\t},\n\t\"dots11\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"\u2801\",\n\t\t\t\"\u2802\",\n\t\t\t\"\u2804\",\n\t\t\t\"\u2840\",\n\t\t\t\"\u2880\",\n\t\t\t\"\u2820\",\n\t\t\t\"\u2810\",\n\t\t\t\"\u2808\"\n\t\t]\n\t},\n\t\"dots12\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"\u2880\u2800\",\n\t\t\t\"\u2840\u2800\",\n\t\t\t\"\u2804\u2800\",\n\t\t\t\"\u2882\u2800\",\n\t\t\t\"\u2842\u2800\",\n\t\t\t\"\u2805\u2800\",\n\t\t\t\"\u2883\u2800\",\n\t\t\t\"\u2843\u2800\",\n\t\t\t\"\u280D\u2800\",\n\t\t\t\"\u288B\u2800\",\n\t\t\t\"\u284B\u2800\",\n\t\t\t\"\u280D\u2801\",\n\t\t\t\"\u288B\u2801\",\n\t\t\t\"\u284B\u2801\",\n\t\t\t\"\u280D\u2809\",\n\t\t\t\"\u280B\u2809\",\n\t\t\t\"\u280B\u2809\",\n\t\t\t\"\u2809\u2819\",\n\t\t\t\"\u2809\u2819\",\n\t\t\t\"\u2809\u2829\",\n\t\t\t\"\u2808\u2899\",\n\t\t\t\"\u2808\u2859\",\n\t\t\t\"\u2888\u2829\",\n\t\t\t\"\u2840\u2899\",\n\t\t\t\"\u2804\u2859\",\n\t\t\t\"\u2882\u2829\",\n\t\t\t\"\u2842\u2898\",\n\t\t\t\"\u2805\u2858\",\n\t\t\t\"\u2883\u2828\",\n\t\t\t\"\u2843\u2890\",\n\t\t\t\"\u280D\u2850\",\n\t\t\t\"\u288B\u2820\",\n\t\t\t\"\u284B\u2880\",\n\t\t\t\"\u280D\u2841\",\n\t\t\t\"\u288B\u2801\",\n\t\t\t\"\u284B\u2801\",\n\t\t\t\"\u280D\u2809\",\n\t\t\t\"\u280B\u2809\",\n\t\t\t\"\u280B\u2809\",\n\t\t\t\"\u2809\u2819\",\n\t\t\t\"\u2809\u2819\",\n\t\t\t\"\u2809\u2829\",\n\t\t\t\"\u2808\u2899\",\n\t\t\t\"\u2808\u2859\",\n\t\t\t\"\u2808\u2829\",\n\t\t\t\"\u2800\u2899\",\n\t\t\t\"\u2800\u2859\",\n\t\t\t\"\u2800\u2829\",\n\t\t\t\"\u2800\u2898\",\n\t\t\t\"\u2800\u2858\",\n\t\t\t\"\u2800\u2828\",\n\t\t\t\"\u2800\u2890\",\n\t\t\t\"\u2800\u2850\",\n\t\t\t\"\u2800\u2820\",\n\t\t\t\"\u2800\u2880\",\n\t\t\t\"\u2800\u2840\"\n\t\t]\n\t},\n\t\"dots13\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"\u28FC\",\n\t\t\t\"\u28F9\",\n\t\t\t\"\u28BB\",\n\t\t\t\"\u283F\",\n\t\t\t\"\u285F\",\n\t\t\t\"\u28CF\",\n\t\t\t\"\u28E7\",\n\t\t\t\"\u28F6\"\n\t\t]\n\t},\n\t\"dots8Bit\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"\u2800\",\n\t\t\t\"\u2801\",\n\t\t\t\"\u2802\",\n\t\t\t\"\u2803\",\n\t\t\t\"\u2804\",\n\t\t\t\"\u2805\",\n\t\t\t\"\u2806\",\n\t\t\t\"\u2807\",\n\t\t\t\"\u2840\",\n\t\t\t\"\u2841\",\n\t\t\t\"\u2842\",\n\t\t\t\"\u2843\",\n\t\t\t\"\u2844\",\n\t\t\t\"\u2845\",\n\t\t\t\"\u2846\",\n\t\t\t\"\u2847\",\n\t\t\t\"\u2808\",\n\t\t\t\"\u2809\",\n\t\t\t\"\u280A\",\n\t\t\t\"\u280B\",\n\t\t\t\"\u280C\",\n\t\t\t\"\u280D\",\n\t\t\t\"\u280E\",\n\t\t\t\"\u280F\",\n\t\t\t\"\u2848\",\n\t\t\t\"\u2849\",\n\t\t\t\"\u284A\",\n\t\t\t\"\u284B\",\n\t\t\t\"\u284C\",\n\t\t\t\"\u284D\",\n\t\t\t\"\u284E\",\n\t\t\t\"\u284F\",\n\t\t\t\"\u2810\",\n\t\t\t\"\u2811\",\n\t\t\t\"\u2812\",\n\t\t\t\"\u2813\",\n\t\t\t\"\u2814\",\n\t\t\t\"\u2815\",\n\t\t\t\"\u2816\",\n\t\t\t\"\u2817\",\n\t\t\t\"\u2850\",\n\t\t\t\"\u2851\",\n\t\t\t\"\u2852\",\n\t\t\t\"\u2853\",\n\t\t\t\"\u2854\",\n\t\t\t\"\u2855\",\n\t\t\t\"\u2856\",\n\t\t\t\"\u2857\",\n\t\t\t\"\u2818\",\n\t\t\t\"\u2819\",\n\t\t\t\"\u281A\",\n\t\t\t\"\u281B\",\n\t\t\t\"\u281C\",\n\t\t\t\"\u281D\",\n\t\t\t\"\u281E\",\n\t\t\t\"\u281F\",\n\t\t\t\"\u2858\",\n\t\t\t\"\u2859\",\n\t\t\t\"\u285A\",\n\t\t\t\"\u285B\",\n\t\t\t\"\u285C\",\n\t\t\t\"\u285D\",\n\t\t\t\"\u285E\",\n\t\t\t\"\u285F\",\n\t\t\t\"\u2820\",\n\t\t\t\"\u2821\",\n\t\t\t\"\u2822\",\n\t\t\t\"\u2823\",\n\t\t\t\"\u2824\",\n\t\t\t\"\u2825\",\n\t\t\t\"\u2826\",\n\t\t\t\"\u2827\",\n\t\t\t\"\u2860\",\n\t\t\t\"\u2861\",\n\t\t\t\"\u2862\",\n\t\t\t\"\u2863\",\n\t\t\t\"\u2864\",\n\t\t\t\"\u2865\",\n\t\t\t\"\u2866\",\n\t\t\t\"\u2867\",\n\t\t\t\"\u2828\",\n\t\t\t\"\u2829\",\n\t\t\t\"\u282A\",\n\t\t\t\"\u282B\",\n\t\t\t\"\u282C\",\n\t\t\t\"\u282D\",\n\t\t\t\"\u282E\",\n\t\t\t\"\u282F\",\n\t\t\t\"\u2868\",\n\t\t\t\"\u2869\",\n\t\t\t\"\u286A\",\n\t\t\t\"\u286B\",\n\t\t\t\"\u286C\",\n\t\t\t\"\u286D\",\n\t\t\t\"\u286E\",\n\t\t\t\"\u286F\",\n\t\t\t\"\u2830\",\n\t\t\t\"\u2831\",\n\t\t\t\"\u2832\",\n\t\t\t\"\u2833\",\n\t\t\t\"\u2834\",\n\t\t\t\"\u2835\",\n\t\t\t\"\u2836\",\n\t\t\t\"\u2837\",\n\t\t\t\"\u2870\",\n\t\t\t\"\u2871\",\n\t\t\t\"\u2872\",\n\t\t\t\"\u2873\",\n\t\t\t\"\u2874\",\n\t\t\t\"\u2875\",\n\t\t\t\"\u2876\",\n\t\t\t\"\u2877\",\n\t\t\t\"\u2838\",\n\t\t\t\"\u2839\",\n\t\t\t\"\u283A\",\n\t\t\t\"\u283B\",\n\t\t\t\"\u283C\",\n\t\t\t\"\u283D\",\n\t\t\t\"\u283E\",\n\t\t\t\"\u283F\",\n\t\t\t\"\u2878\",\n\t\t\t\"\u2879\",\n\t\t\t\"\u287A\",\n\t\t\t\"\u287B\",\n\t\t\t\"\u287C\",\n\t\t\t\"\u287D\",\n\t\t\t\"\u287E\",\n\t\t\t\"\u287F\",\n\t\t\t\"\u2880\",\n\t\t\t\"\u2881\",\n\t\t\t\"\u2882\",\n\t\t\t\"\u2883\",\n\t\t\t\"\u2884\",\n\t\t\t\"\u2885\",\n\t\t\t\"\u2886\",\n\t\t\t\"\u2887\",\n\t\t\t\"\u28C0\",\n\t\t\t\"\u28C1\",\n\t\t\t\"\u28C2\",\n\t\t\t\"\u28C3\",\n\t\t\t\"\u28C4\",\n\t\t\t\"\u28C5\",\n\t\t\t\"\u28C6\",\n\t\t\t\"\u28C7\",\n\t\t\t\"\u2888\",\n\t\t\t\"\u2889\",\n\t\t\t\"\u288A\",\n\t\t\t\"\u288B\",\n\t\t\t\"\u288C\",\n\t\t\t\"\u288D\",\n\t\t\t\"\u288E\",\n\t\t\t\"\u288F\",\n\t\t\t\"\u28C8\",\n\t\t\t\"\u28C9\",\n\t\t\t\"\u28CA\",\n\t\t\t\"\u28CB\",\n\t\t\t\"\u28CC\",\n\t\t\t\"\u28CD\",\n\t\t\t\"\u28CE\",\n\t\t\t\"\u28CF\",\n\t\t\t\"\u2890\",\n\t\t\t\"\u2891\",\n\t\t\t\"\u2892\",\n\t\t\t\"\u2893\",\n\t\t\t\"\u2894\",\n\t\t\t\"\u2895\",\n\t\t\t\"\u2896\",\n\t\t\t\"\u2897\",\n\t\t\t\"\u28D0\",\n\t\t\t\"\u28D1\",\n\t\t\t\"\u28D2\",\n\t\t\t\"\u28D3\",\n\t\t\t\"\u28D4\",\n\t\t\t\"\u28D5\",\n\t\t\t\"\u28D6\",\n\t\t\t\"\u28D7\",\n\t\t\t\"\u2898\",\n\t\t\t\"\u2899\",\n\t\t\t\"\u289A\",\n\t\t\t\"\u289B\",\n\t\t\t\"\u289C\",\n\t\t\t\"\u289D\",\n\t\t\t\"\u289E\",\n\t\t\t\"\u289F\",\n\t\t\t\"\u28D8\",\n\t\t\t\"\u28D9\",\n\t\t\t\"\u28DA\",\n\t\t\t\"\u28DB\",\n\t\t\t\"\u28DC\",\n\t\t\t\"\u28DD\",\n\t\t\t\"\u28DE\",\n\t\t\t\"\u28DF\",\n\t\t\t\"\u28A0\",\n\t\t\t\"\u28A1\",\n\t\t\t\"\u28A2\",\n\t\t\t\"\u28A3\",\n\t\t\t\"\u28A4\",\n\t\t\t\"\u28A5\",\n\t\t\t\"\u28A6\",\n\t\t\t\"\u28A7\",\n\t\t\t\"\u28E0\",\n\t\t\t\"\u28E1\",\n\t\t\t\"\u28E2\",\n\t\t\t\"\u28E3\",\n\t\t\t\"\u28E4\",\n\t\t\t\"\u28E5\",\n\t\t\t\"\u28E6\",\n\t\t\t\"\u28E7\",\n\t\t\t\"\u28A8\",\n\t\t\t\"\u28A9\",\n\t\t\t\"\u28AA\",\n\t\t\t\"\u28AB\",\n\t\t\t\"\u28AC\",\n\t\t\t\"\u28AD\",\n\t\t\t\"\u28AE\",\n\t\t\t\"\u28AF\",\n\t\t\t\"\u28E8\",\n\t\t\t\"\u28E9\",\n\t\t\t\"\u28EA\",\n\t\t\t\"\u28EB\",\n\t\t\t\"\u28EC\",\n\t\t\t\"\u28ED\",\n\t\t\t\"\u28EE\",\n\t\t\t\"\u28EF\",\n\t\t\t\"\u28B0\",\n\t\t\t\"\u28B1\",\n\t\t\t\"\u28B2\",\n\t\t\t\"\u28B3\",\n\t\t\t\"\u28B4\",\n\t\t\t\"\u28B5\",\n\t\t\t\"\u28B6\",\n\t\t\t\"\u28B7\",\n\t\t\t\"\u28F0\",\n\t\t\t\"\u28F1\",\n\t\t\t\"\u28F2\",\n\t\t\t\"\u28F3\",\n\t\t\t\"\u28F4\",\n\t\t\t\"\u28F5\",\n\t\t\t\"\u28F6\",\n\t\t\t\"\u28F7\",\n\t\t\t\"\u28B8\",\n\t\t\t\"\u28B9\",\n\t\t\t\"\u28BA\",\n\t\t\t\"\u28BB\",\n\t\t\t\"\u28BC\",\n\t\t\t\"\u28BD\",\n\t\t\t\"\u28BE\",\n\t\t\t\"\u28BF\",\n\t\t\t\"\u28F8\",\n\t\t\t\"\u28F9\",\n\t\t\t\"\u28FA\",\n\t\t\t\"\u28FB\",\n\t\t\t\"\u28FC\",\n\t\t\t\"\u28FD\",\n\t\t\t\"\u28FE\",\n\t\t\t\"\u28FF\"\n\t\t]\n\t},\n\t\"sand\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"\u2801\",\n\t\t\t\"\u2802\",\n\t\t\t\"\u2804\",\n\t\t\t\"\u2840\",\n\t\t\t\"\u2848\",\n\t\t\t\"\u2850\",\n\t\t\t\"\u2860\",\n\t\t\t\"\u28C0\",\n\t\t\t\"\u28C1\",\n\t\t\t\"\u28C2\",\n\t\t\t\"\u28C4\",\n\t\t\t\"\u28CC\",\n\t\t\t\"\u28D4\",\n\t\t\t\"\u28E4\",\n\t\t\t\"\u28E5\",\n\t\t\t\"\u28E6\",\n\t\t\t\"\u28EE\",\n\t\t\t\"\u28F6\",\n\t\t\t\"\u28F7\",\n\t\t\t\"\u28FF\",\n\t\t\t\"\u287F\",\n\t\t\t\"\u283F\",\n\t\t\t\"\u289F\",\n\t\t\t\"\u281F\",\n\t\t\t\"\u285B\",\n\t\t\t\"\u281B\",\n\t\t\t\"\u282B\",\n\t\t\t\"\u288B\",\n\t\t\t\"\u280B\",\n\t\t\t\"\u280D\",\n\t\t\t\"\u2849\",\n\t\t\t\"\u2809\",\n\t\t\t\"\u2811\",\n\t\t\t\"\u2821\",\n\t\t\t\"\u2881\"\n\t\t]\n\t},\n\t\"line\": {\n\t\t\"interval\": 130,\n\t\t\"frames\": [\n\t\t\t\"-\",\n\t\t\t\"\\\\\",\n\t\t\t\"|\",\n\t\t\t\"/\"\n\t\t]\n\t},\n\t\"line2\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"\u2802\",\n\t\t\t\"-\",\n\t\t\t\"\u2013\",\n\t\t\t\"\u2014\",\n\t\t\t\"\u2013\",\n\t\t\t\"-\"\n\t\t]\n\t},\n\t\"pipe\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"\u2524\",\n\t\t\t\"\u2518\",\n\t\t\t\"\u2534\",\n\t\t\t\"\u2514\",\n\t\t\t\"\u251C\",\n\t\t\t\"\u250C\",\n\t\t\t\"\u252C\",\n\t\t\t\"\u2510\"\n\t\t]\n\t},\n\t\"simpleDots\": {\n\t\t\"interval\": 400,\n\t\t\"frames\": [\n\t\t\t\".  \",\n\t\t\t\".. \",\n\t\t\t\"...\",\n\t\t\t\"   \"\n\t\t]\n\t},\n\t\"simpleDotsScrolling\": {\n\t\t\"interval\": 200,\n\t\t\"frames\": [\n\t\t\t\".  \",\n\t\t\t\".. \",\n\t\t\t\"...\",\n\t\t\t\" ..\",\n\t\t\t\"  .\",\n\t\t\t\"   \"\n\t\t]\n\t},\n\t\"star\": {\n\t\t\"interval\": 70,\n\t\t\"frames\": [\n\t\t\t\"\u2736\",\n\t\t\t\"\u2738\",\n\t\t\t\"\u2739\",\n\t\t\t\"\u273A\",\n\t\t\t\"\u2739\",\n\t\t\t\"\u2737\"\n\t\t]\n\t},\n\t\"star2\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"+\",\n\t\t\t\"x\",\n\t\t\t\"*\"\n\t\t]\n\t},\n\t\"flip\": {\n\t\t\"interval\": 70,\n\t\t\"frames\": [\n\t\t\t\"_\",\n\t\t\t\"_\",\n\t\t\t\"_\",\n\t\t\t\"-\",\n\t\t\t\"`\",\n\t\t\t\"`\",\n\t\t\t\"'\",\n\t\t\t\"\u00B4\",\n\t\t\t\"-\",\n\t\t\t\"_\",\n\t\t\t\"_\",\n\t\t\t\"_\"\n\t\t]\n\t},\n\t\"hamburger\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"\u2631\",\n\t\t\t\"\u2632\",\n\t\t\t\"\u2634\"\n\t\t]\n\t},\n\t\"growVertical\": {\n\t\t\"interval\": 120,\n\t\t\"frames\": [\n\t\t\t\"\u2581\",\n\t\t\t\"\u2583\",\n\t\t\t\"\u2584\",\n\t\t\t\"\u2585\",\n\t\t\t\"\u2586\",\n\t\t\t\"\u2587\",\n\t\t\t\"\u2586\",\n\t\t\t\"\u2585\",\n\t\t\t\"\u2584\",\n\t\t\t\"\u2583\"\n\t\t]\n\t},\n\t\"growHorizontal\": {\n\t\t\"interval\": 120,\n\t\t\"frames\": [\n\t\t\t\"\u258F\",\n\t\t\t\"\u258E\",\n\t\t\t\"\u258D\",\n\t\t\t\"\u258C\",\n\t\t\t\"\u258B\",\n\t\t\t\"\u258A\",\n\t\t\t\"\u2589\",\n\t\t\t\"\u258A\",\n\t\t\t\"\u258B\",\n\t\t\t\"\u258C\",\n\t\t\t\"\u258D\",\n\t\t\t\"\u258E\"\n\t\t]\n\t},\n\t\"balloon\": {\n\t\t\"interval\": 140,\n\t\t\"frames\": [\n\t\t\t\" \",\n\t\t\t\".\",\n\t\t\t\"o\",\n\t\t\t\"O\",\n\t\t\t\"@\",\n\t\t\t\"*\",\n\t\t\t\" \"\n\t\t]\n\t},\n\t\"balloon2\": {\n\t\t\"interval\": 120,\n\t\t\"frames\": [\n\t\t\t\".\",\n\t\t\t\"o\",\n\t\t\t\"O\",\n\t\t\t\"\u00B0\",\n\t\t\t\"O\",\n\t\t\t\"o\",\n\t\t\t\".\"\n\t\t]\n\t},\n\t\"noise\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"\u2593\",\n\t\t\t\"\u2592\",\n\t\t\t\"\u2591\"\n\t\t]\n\t},\n\t\"bounce\": {\n\t\t\"interval\": 120,\n\t\t\"frames\": [\n\t\t\t\"\u2801\",\n\t\t\t\"\u2802\",\n\t\t\t\"\u2804\",\n\t\t\t\"\u2802\"\n\t\t]\n\t},\n\t\"boxBounce\": {\n\t\t\"interval\": 120,\n\t\t\"frames\": [\n\t\t\t\"\u2596\",\n\t\t\t\"\u2598\",\n\t\t\t\"\u259D\",\n\t\t\t\"\u2597\"\n\t\t]\n\t},\n\t\"boxBounce2\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"\u258C\",\n\t\t\t\"\u2580\",\n\t\t\t\"\u2590\",\n\t\t\t\"\u2584\"\n\t\t]\n\t},\n\t\"triangle\": {\n\t\t\"interval\": 50,\n\t\t\"frames\": [\n\t\t\t\"\u25E2\",\n\t\t\t\"\u25E3\",\n\t\t\t\"\u25E4\",\n\t\t\t\"\u25E5\"\n\t\t]\n\t},\n\t\"binary\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"010010\",\n            \"001100\",\n            \"100101\",\n            \"111010\",\n            \"111101\",\n            \"010111\",\n\t\t\t\"101011\",\n\t\t\t\"111000\",\n\t\t\t\"110011\",\n\t\t\t\"110101\"\n\t\t]\n\t},\n\t\"arc\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"\u25DC\",\n\t\t\t\"\u25E0\",\n\t\t\t\"\u25DD\",\n\t\t\t\"\u25DE\",\n\t\t\t\"\u25E1\",\n\t\t\t\"\u25DF\"\n\t\t]\n\t},\n\t\"circle\": {\n\t\t\"interval\": 120,\n\t\t\"frames\": [\n\t\t\t\"\u25E1\",\n\t\t\t\"\u2299\",\n\t\t\t\"\u25E0\"\n\t\t]\n\t},\n\t\"squareCorners\": {\n\t\t\"interval\": 180,\n\t\t\"frames\": [\n\t\t\t\"\u25F0\",\n\t\t\t\"\u25F3\",\n\t\t\t\"\u25F2\",\n\t\t\t\"\u25F1\"\n\t\t]\n\t},\n\t\"circleQuarters\": {\n\t\t\"interval\": 120,\n\t\t\"frames\": [\n\t\t\t\"\u25F4\",\n\t\t\t\"\u25F7\",\n\t\t\t\"\u25F6\",\n\t\t\t\"\u25F5\"\n\t\t]\n\t},\n\t\"circleHalves\": {\n\t\t\"interval\": 50,\n\t\t\"frames\": [\n\t\t\t\"\u25D0\",\n\t\t\t\"\u25D3\",\n\t\t\t\"\u25D1\",\n\t\t\t\"\u25D2\"\n\t\t]\n\t},\n\t\"squish\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"\u256B\",\n\t\t\t\"\u256A\"\n\t\t]\n\t},\n\t\"toggle\": {\n\t\t\"interval\": 250,\n\t\t\"frames\": [\n\t\t\t\"\u22B6\",\n\t\t\t\"\u22B7\"\n\t\t]\n\t},\n\t\"toggle2\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"\u25AB\",\n\t\t\t\"\u25AA\"\n\t\t]\n\t},\n\t\"toggle3\": {\n\t\t\"interval\": 120,\n\t\t\"frames\": [\n\t\t\t\"\u25A1\",\n\t\t\t\"\u25A0\"\n\t\t]\n\t},\n\t\"toggle4\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"\u25A0\",\n\t\t\t\"\u25A1\",\n\t\t\t\"\u25AA\",\n\t\t\t\"\u25AB\"\n\t\t]\n\t},\n\t\"toggle5\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"\u25AE\",\n\t\t\t\"\u25AF\"\n\t\t]\n\t},\n\t\"toggle6\": {\n\t\t\"interval\": 300,\n\t\t\"frames\": [\n\t\t\t\"\u101D\",\n\t\t\t\"\u1040\"\n\t\t]\n\t},\n\t\"toggle7\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"\u29BE\",\n\t\t\t\"\u29BF\"\n\t\t]\n\t},\n\t\"toggle8\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"\u25CD\",\n\t\t\t\"\u25CC\"\n\t\t]\n\t},\n\t\"toggle9\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"\u25C9\",\n\t\t\t\"\u25CE\"\n\t\t]\n\t},\n\t\"toggle10\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"\u3282\",\n\t\t\t\"\u3280\",\n\t\t\t\"\u3281\"\n\t\t]\n\t},\n\t\"toggle11\": {\n\t\t\"interval\": 50,\n\t\t\"frames\": [\n\t\t\t\"\u29C7\",\n\t\t\t\"\u29C6\"\n\t\t]\n\t},\n\t\"toggle12\": {\n\t\t\"interval\": 120,\n\t\t\"frames\": [\n\t\t\t\"\u2617\",\n\t\t\t\"\u2616\"\n\t\t]\n\t},\n\t\"toggle13\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"=\",\n\t\t\t\"*\",\n\t\t\t\"-\"\n\t\t]\n\t},\n\t\"arrow\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"\u2190\",\n\t\t\t\"\u2196\",\n\t\t\t\"\u2191\",\n\t\t\t\"\u2197\",\n\t\t\t\"\u2192\",\n\t\t\t\"\u2198\",\n\t\t\t\"\u2193\",\n\t\t\t\"\u2199\"\n\t\t]\n\t},\n\t\"arrow2\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"\u2B06\uFE0F \",\n\t\t\t\"\u2197\uFE0F \",\n\t\t\t\"\u27A1\uFE0F \",\n\t\t\t\"\u2198\uFE0F \",\n\t\t\t\"\u2B07\uFE0F \",\n\t\t\t\"\u2199\uFE0F \",\n\t\t\t\"\u2B05\uFE0F \",\n\t\t\t\"\u2196\uFE0F \"\n\t\t]\n\t},\n\t\"arrow3\": {\n\t\t\"interval\": 120,\n\t\t\"frames\": [\n\t\t\t\"\u25B9\u25B9\u25B9\u25B9\u25B9\",\n\t\t\t\"\u25B8\u25B9\u25B9\u25B9\u25B9\",\n\t\t\t\"\u25B9\u25B8\u25B9\u25B9\u25B9\",\n\t\t\t\"\u25B9\u25B9\u25B8\u25B9\u25B9\",\n\t\t\t\"\u25B9\u25B9\u25B9\u25B8\u25B9\",\n\t\t\t\"\u25B9\u25B9\u25B9\u25B9\u25B8\"\n\t\t]\n\t},\n\t\"bouncingBar\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"[    ]\",\n\t\t\t\"[=   ]\",\n\t\t\t\"[==  ]\",\n\t\t\t\"[=== ]\",\n\t\t\t\"[====]\",\n\t\t\t\"[ ===]\",\n\t\t\t\"[  ==]\",\n\t\t\t\"[   =]\",\n\t\t\t\"[    ]\",\n\t\t\t\"[   =]\",\n\t\t\t\"[  ==]\",\n\t\t\t\"[ ===]\",\n\t\t\t\"[====]\",\n\t\t\t\"[=== ]\",\n\t\t\t\"[==  ]\",\n\t\t\t\"[=   ]\"\n\t\t]\n\t},\n\t\"bouncingBall\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"( \u25CF    )\",\n\t\t\t\"(  \u25CF   )\",\n\t\t\t\"(   \u25CF  )\",\n\t\t\t\"(    \u25CF )\",\n\t\t\t\"(     \u25CF)\",\n\t\t\t\"(    \u25CF )\",\n\t\t\t\"(   \u25CF  )\",\n\t\t\t\"(  \u25CF   )\",\n\t\t\t\"( \u25CF    )\",\n\t\t\t\"(\u25CF     )\"\n\t\t]\n\t},\n\t\"smiley\": {\n\t\t\"interval\": 200,\n\t\t\"frames\": [\n\t\t\t\"\uD83D\uDE04 \",\n\t\t\t\"\uD83D\uDE1D \"\n\t\t]\n\t},\n\t\"monkey\": {\n\t\t\"interval\": 300,\n\t\t\"frames\": [\n\t\t\t\"\uD83D\uDE48 \",\n\t\t\t\"\uD83D\uDE48 \",\n\t\t\t\"\uD83D\uDE49 \",\n\t\t\t\"\uD83D\uDE4A \"\n\t\t]\n\t},\n\t\"hearts\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"\uD83D\uDC9B \",\n\t\t\t\"\uD83D\uDC99 \",\n\t\t\t\"\uD83D\uDC9C \",\n\t\t\t\"\uD83D\uDC9A \",\n\t\t\t\"\u2764\uFE0F \"\n\t\t]\n\t},\n\t\"clock\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"\uD83D\uDD5B \",\n\t\t\t\"\uD83D\uDD50 \",\n\t\t\t\"\uD83D\uDD51 \",\n\t\t\t\"\uD83D\uDD52 \",\n\t\t\t\"\uD83D\uDD53 \",\n\t\t\t\"\uD83D\uDD54 \",\n\t\t\t\"\uD83D\uDD55 \",\n\t\t\t\"\uD83D\uDD56 \",\n\t\t\t\"\uD83D\uDD57 \",\n\t\t\t\"\uD83D\uDD58 \",\n\t\t\t\"\uD83D\uDD59 \",\n\t\t\t\"\uD83D\uDD5A \"\n\t\t]\n\t},\n\t\"earth\": {\n\t\t\"interval\": 180,\n\t\t\"frames\": [\n\t\t\t\"\uD83C\uDF0D \",\n\t\t\t\"\uD83C\uDF0E \",\n\t\t\t\"\uD83C\uDF0F \"\n\t\t]\n\t},\n\t\"material\": {\n\t\t\"interval\": 17,\n\t\t\"frames\": [\n\t\t\t\"\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\",\n\t\t\t\"\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\",\n\t\t\t\"\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\",\n\t\t\t\"\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\",\n\t\t\t\"\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\",\n\t\t\t\"\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\",\n\t\t\t\"\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\",\n\t\t\t\"\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\",\n\t\t\t\"\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\",\n\t\t\t\"\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\",\n\t\t\t\"\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\",\n\t\t\t\"\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\",\n\t\t\t\"\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\",\n\t\t\t\"\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\",\n\t\t\t\"\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\",\n\t\t\t\"\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\",\n\t\t\t\"\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\",\n\t\t\t\"\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\",\n\t\t\t\"\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\",\n\t\t\t\"\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\",\n\t\t\t\"\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\",\n\t\t\t\"\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\",\n\t\t\t\"\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\",\n\t\t\t\"\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\",\n\t\t\t\"\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\",\n\t\t\t\"\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\",\n\t\t\t\"\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\",\n\t\t\t\"\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\",\n\t\t\t\"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\",\n\t\t\t\"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\",\n\t\t\t\"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\",\n\t\t\t\"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\",\n\t\t\t\"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\",\n\t\t\t\"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\",\n\t\t\t\"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\",\n\t\t\t\"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\",\n\t\t\t\"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\",\n\t\t\t\"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\",\n\t\t\t\"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\",\n\t\t\t\"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\",\n\t\t\t\"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\",\n\t\t\t\"\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\",\n\t\t\t\"\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\",\n\t\t\t\"\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\",\n\t\t\t\"\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\",\n\t\t\t\"\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\",\n\t\t\t\"\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\",\n\t\t\t\"\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\",\n\t\t\t\"\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\",\n\t\t\t\"\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\",\n\t\t\t\"\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\",\n\t\t\t\"\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\",\n\t\t\t\"\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\",\n\t\t\t\"\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\",\n\t\t\t\"\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\",\n\t\t\t\"\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\",\n\t\t\t\"\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\",\n\t\t\t\"\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\",\n\t\t\t\"\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\",\n\t\t\t\"\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\",\n\t\t\t\"\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\",\n\t\t\t\"\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\",\n\t\t\t\"\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\",\n\t\t\t\"\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\",\n\t\t\t\"\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\",\n\t\t\t\"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\",\n\t\t\t\"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\",\n\t\t\t\"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\",\n\t\t\t\"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\",\n\t\t\t\"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\",\n\t\t\t\"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\",\n\t\t\t\"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\",\n\t\t\t\"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\",\n\t\t\t\"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\",\n\t\t\t\"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\",\n\t\t\t\"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\",\n\t\t\t\"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\",\n\t\t\t\"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\",\n\t\t\t\"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\",\n\t\t\t\"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\",\n\t\t\t\"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\",\n\t\t\t\"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\",\n\t\t\t\"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\",\n\t\t\t\"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\",\n\t\t\t\"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\",\n\t\t\t\"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\",\n\t\t\t\"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\",\n\t\t\t\"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\",\n\t\t\t\"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\",\n\t\t\t\"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\",\n\t\t\t\"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\",\n\t\t\t\"\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\"\n\t\t]\n\t},\n\t\"moon\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"\uD83C\uDF11 \",\n\t\t\t\"\uD83C\uDF12 \",\n\t\t\t\"\uD83C\uDF13 \",\n\t\t\t\"\uD83C\uDF14 \",\n\t\t\t\"\uD83C\uDF15 \",\n\t\t\t\"\uD83C\uDF16 \",\n\t\t\t\"\uD83C\uDF17 \",\n\t\t\t\"\uD83C\uDF18 \"\n\t\t]\n\t},\n\t\"runner\": {\n\t\t\"interval\": 140,\n\t\t\"frames\": [\n\t\t\t\"\uD83D\uDEB6 \",\n\t\t\t\"\uD83C\uDFC3 \"\n\t\t]\n\t},\n\t\"pong\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"\u2590\u2802       \u258C\",\n\t\t\t\"\u2590\u2808       \u258C\",\n\t\t\t\"\u2590 \u2802      \u258C\",\n\t\t\t\"\u2590 \u2820      \u258C\",\n\t\t\t\"\u2590  \u2840     \u258C\",\n\t\t\t\"\u2590  \u2820     \u258C\",\n\t\t\t\"\u2590   \u2802    \u258C\",\n\t\t\t\"\u2590   \u2808    \u258C\",\n\t\t\t\"\u2590    \u2802   \u258C\",\n\t\t\t\"\u2590    \u2820   \u258C\",\n\t\t\t\"\u2590     \u2840  \u258C\",\n\t\t\t\"\u2590     \u2820  \u258C\",\n\t\t\t\"\u2590      \u2802 \u258C\",\n\t\t\t\"\u2590      \u2808 \u258C\",\n\t\t\t\"\u2590       \u2802\u258C\",\n\t\t\t\"\u2590       \u2820\u258C\",\n\t\t\t\"\u2590       \u2840\u258C\",\n\t\t\t\"\u2590      \u2820 \u258C\",\n\t\t\t\"\u2590      \u2802 \u258C\",\n\t\t\t\"\u2590     \u2808  \u258C\",\n\t\t\t\"\u2590     \u2802  \u258C\",\n\t\t\t\"\u2590    \u2820   \u258C\",\n\t\t\t\"\u2590    \u2840   \u258C\",\n\t\t\t\"\u2590   \u2820    \u258C\",\n\t\t\t\"\u2590   \u2802    \u258C\",\n\t\t\t\"\u2590  \u2808     \u258C\",\n\t\t\t\"\u2590  \u2802     \u258C\",\n\t\t\t\"\u2590 \u2820      \u258C\",\n\t\t\t\"\u2590 \u2840      \u258C\",\n\t\t\t\"\u2590\u2820       \u258C\"\n\t\t]\n\t},\n\t\"shark\": {\n\t\t\"interval\": 120,\n\t\t\"frames\": [\n\t\t\t\"\u2590|\\\\____________\u258C\",\n\t\t\t\"\u2590_|\\\\___________\u258C\",\n\t\t\t\"\u2590__|\\\\__________\u258C\",\n\t\t\t\"\u2590___|\\\\_________\u258C\",\n\t\t\t\"\u2590____|\\\\________\u258C\",\n\t\t\t\"\u2590_____|\\\\_______\u258C\",\n\t\t\t\"\u2590______|\\\\______\u258C\",\n\t\t\t\"\u2590_______|\\\\_____\u258C\",\n\t\t\t\"\u2590________|\\\\____\u258C\",\n\t\t\t\"\u2590_________|\\\\___\u258C\",\n\t\t\t\"\u2590__________|\\\\__\u258C\",\n\t\t\t\"\u2590___________|\\\\_\u258C\",\n\t\t\t\"\u2590____________|\\\\\u258C\",\n\t\t\t\"\u2590____________/|\u258C\",\n\t\t\t\"\u2590___________/|_\u258C\",\n\t\t\t\"\u2590__________/|__\u258C\",\n\t\t\t\"\u2590_________/|___\u258C\",\n\t\t\t\"\u2590________/|____\u258C\",\n\t\t\t\"\u2590_______/|_____\u258C\",\n\t\t\t\"\u2590______/|______\u258C\",\n\t\t\t\"\u2590_____/|_______\u258C\",\n\t\t\t\"\u2590____/|________\u258C\",\n\t\t\t\"\u2590___/|_________\u258C\",\n\t\t\t\"\u2590__/|__________\u258C\",\n\t\t\t\"\u2590_/|___________\u258C\",\n\t\t\t\"\u2590/|____________\u258C\"\n\t\t]\n\t},\n\t\"dqpb\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"d\",\n\t\t\t\"q\",\n\t\t\t\"p\",\n\t\t\t\"b\"\n\t\t]\n\t},\n\t\"weather\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"\u2600\uFE0F \",\n\t\t\t\"\u2600\uFE0F \",\n\t\t\t\"\u2600\uFE0F \",\n\t\t\t\"\uD83C\uDF24 \",\n\t\t\t\"\u26C5\uFE0F \",\n\t\t\t\"\uD83C\uDF25 \",\n\t\t\t\"\u2601\uFE0F \",\n\t\t\t\"\uD83C\uDF27 \",\n\t\t\t\"\uD83C\uDF28 \",\n\t\t\t\"\uD83C\uDF27 \",\n\t\t\t\"\uD83C\uDF28 \",\n\t\t\t\"\uD83C\uDF27 \",\n\t\t\t\"\uD83C\uDF28 \",\n\t\t\t\"\u26C8 \",\n\t\t\t\"\uD83C\uDF28 \",\n\t\t\t\"\uD83C\uDF27 \",\n\t\t\t\"\uD83C\uDF28 \",\n\t\t\t\"\u2601\uFE0F \",\n\t\t\t\"\uD83C\uDF25 \",\n\t\t\t\"\u26C5\uFE0F \",\n\t\t\t\"\uD83C\uDF24 \",\n\t\t\t\"\u2600\uFE0F \",\n\t\t\t\"\u2600\uFE0F \"\n\t\t]\n\t},\n\t\"christmas\": {\n\t\t\"interval\": 400,\n\t\t\"frames\": [\n\t\t\t\"\uD83C\uDF32\",\n\t\t\t\"\uD83C\uDF84\"\n\t\t]\n\t},\n\t\"grenade\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"\u060C  \",\n\t\t\t\"\u2032  \",\n\t\t\t\" \u00B4 \",\n\t\t\t\" \u203E \",\n\t\t\t\"  \u2E0C\",\n\t\t\t\"  \u2E0A\",\n\t\t\t\"  |\",\n\t\t\t\"  \u204E\",\n\t\t\t\"  \u2055\",\n\t\t\t\" \u0DF4 \",\n\t\t\t\"  \u2053\",\n\t\t\t\"   \",\n\t\t\t\"   \",\n\t\t\t\"   \"\n\t\t]\n\t},\n\t\"point\": {\n\t\t\"interval\": 125,\n\t\t\"frames\": [\n\t\t\t\"\u2219\u2219\u2219\",\n\t\t\t\"\u25CF\u2219\u2219\",\n\t\t\t\"\u2219\u25CF\u2219\",\n\t\t\t\"\u2219\u2219\u25CF\",\n\t\t\t\"\u2219\u2219\u2219\"\n\t\t]\n\t},\n\t\"layer\": {\n\t\t\"interval\": 150,\n\t\t\"frames\": [\n\t\t\t\"-\",\n\t\t\t\"=\",\n\t\t\t\"\u2261\"\n\t\t]\n\t},\n\t\"betaWave\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"\u03C1\u03B2\u03B2\u03B2\u03B2\u03B2\u03B2\",\n\t\t\t\"\u03B2\u03C1\u03B2\u03B2\u03B2\u03B2\u03B2\",\n\t\t\t\"\u03B2\u03B2\u03C1\u03B2\u03B2\u03B2\u03B2\",\n\t\t\t\"\u03B2\u03B2\u03B2\u03C1\u03B2\u03B2\u03B2\",\n\t\t\t\"\u03B2\u03B2\u03B2\u03B2\u03C1\u03B2\u03B2\",\n\t\t\t\"\u03B2\u03B2\u03B2\u03B2\u03B2\u03C1\u03B2\",\n\t\t\t\"\u03B2\u03B2\u03B2\u03B2\u03B2\u03B2\u03C1\"\n\t\t]\n\t},\n\t\"fingerDance\": {\n\t\t\"interval\": 160,\n\t\t\"frames\": [\n\t\t\t\"\uD83E\uDD18 \",\n\t\t\t\"\uD83E\uDD1F \",\n\t\t\t\"\uD83D\uDD96 \",\n\t\t\t\"\u270B \",\n\t\t\t\"\uD83E\uDD1A \",\n\t\t\t\"\uD83D\uDC46 \"\n\t\t]\n\t},\n\t\"fistBump\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"\uD83E\uDD1C\\u3000\\u3000\\u3000\\u3000\uD83E\uDD1B \",\n\t\t\t\"\uD83E\uDD1C\\u3000\\u3000\\u3000\\u3000\uD83E\uDD1B \",\n\t\t\t\"\uD83E\uDD1C\\u3000\\u3000\\u3000\\u3000\uD83E\uDD1B \",\n\t\t\t\"\\u3000\uD83E\uDD1C\\u3000\\u3000\uD83E\uDD1B\\u3000 \",\n\t\t\t\"\\u3000\\u3000\uD83E\uDD1C\uD83E\uDD1B\\u3000\\u3000 \",\n\t\t\t\"\\u3000\uD83E\uDD1C\u2728\uD83E\uDD1B\\u3000\\u3000 \",\n\t\t\t\"\uD83E\uDD1C\\u3000\u2728\\u3000\uD83E\uDD1B\\u3000 \"\n\t\t]\n\t},\n\t\"soccerHeader\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\" \uD83E\uDDD1\u26BD\uFE0F       \uD83E\uDDD1 \",\n\t\t\t\"\uD83E\uDDD1  \u26BD\uFE0F      \uD83E\uDDD1 \",\n\t\t\t\"\uD83E\uDDD1   \u26BD\uFE0F     \uD83E\uDDD1 \",\n\t\t\t\"\uD83E\uDDD1    \u26BD\uFE0F    \uD83E\uDDD1 \",\n\t\t\t\"\uD83E\uDDD1     \u26BD\uFE0F   \uD83E\uDDD1 \",\n\t\t\t\"\uD83E\uDDD1      \u26BD\uFE0F  \uD83E\uDDD1 \",\n\t\t\t\"\uD83E\uDDD1       \u26BD\uFE0F\uD83E\uDDD1  \",\n\t\t\t\"\uD83E\uDDD1      \u26BD\uFE0F  \uD83E\uDDD1 \",\n\t\t\t\"\uD83E\uDDD1     \u26BD\uFE0F   \uD83E\uDDD1 \",\n\t\t\t\"\uD83E\uDDD1    \u26BD\uFE0F    \uD83E\uDDD1 \",\n\t\t\t\"\uD83E\uDDD1   \u26BD\uFE0F     \uD83E\uDDD1 \",\n\t\t\t\"\uD83E\uDDD1  \u26BD\uFE0F      \uD83E\uDDD1 \"\n\t\t]\n\t},\n\t\"mindblown\": {\n\t\t\"interval\": 160,\n\t\t\"frames\": [\n\t\t\t\"\uD83D\uDE10 \",\n\t\t\t\"\uD83D\uDE10 \",\n\t\t\t\"\uD83D\uDE2E \",\n\t\t\t\"\uD83D\uDE2E \",\n\t\t\t\"\uD83D\uDE26 \",\n\t\t\t\"\uD83D\uDE26 \",\n\t\t\t\"\uD83D\uDE27 \",\n\t\t\t\"\uD83D\uDE27 \",\n\t\t\t\"\uD83E\uDD2F \",\n\t\t\t\"\uD83D\uDCA5 \",\n\t\t\t\"\u2728 \",\n\t\t\t\"\\u3000 \",\n\t\t\t\"\\u3000 \",\n\t\t\t\"\\u3000 \"\n\t\t]\n\t},\n\t\"speaker\": {\n\t\t\"interval\": 160,\n\t\t\"frames\": [\n\t\t\t\"\uD83D\uDD08 \",\n\t\t\t\"\uD83D\uDD09 \",\n\t\t\t\"\uD83D\uDD0A \",\n\t\t\t\"\uD83D\uDD09 \"\n\t\t]\n\t},\n\t\"orangePulse\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"\uD83D\uDD38 \",\n\t\t\t\"\uD83D\uDD36 \",\n\t\t\t\"\uD83D\uDFE0 \",\n\t\t\t\"\uD83D\uDFE0 \",\n\t\t\t\"\uD83D\uDD36 \"\n\t\t]\n\t},\n\t\"bluePulse\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"\uD83D\uDD39 \",\n\t\t\t\"\uD83D\uDD37 \",\n\t\t\t\"\uD83D\uDD35 \",\n\t\t\t\"\uD83D\uDD35 \",\n\t\t\t\"\uD83D\uDD37 \"\n\t\t]\n\t},\n\t\"orangeBluePulse\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"\uD83D\uDD38 \",\n\t\t\t\"\uD83D\uDD36 \",\n\t\t\t\"\uD83D\uDFE0 \",\n\t\t\t\"\uD83D\uDFE0 \",\n\t\t\t\"\uD83D\uDD36 \",\n\t\t\t\"\uD83D\uDD39 \",\n\t\t\t\"\uD83D\uDD37 \",\n\t\t\t\"\uD83D\uDD35 \",\n\t\t\t\"\uD83D\uDD35 \",\n\t\t\t\"\uD83D\uDD37 \"\n\t\t]\n\t},\n\t\"timeTravel\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"\uD83D\uDD5B \",\n\t\t\t\"\uD83D\uDD5A \",\n\t\t\t\"\uD83D\uDD59 \",\n\t\t\t\"\uD83D\uDD58 \",\n\t\t\t\"\uD83D\uDD57 \",\n\t\t\t\"\uD83D\uDD56 \",\n\t\t\t\"\uD83D\uDD55 \",\n\t\t\t\"\uD83D\uDD54 \",\n\t\t\t\"\uD83D\uDD53 \",\n\t\t\t\"\uD83D\uDD52 \",\n\t\t\t\"\uD83D\uDD51 \",\n\t\t\t\"\uD83D\uDD50 \"\n\t\t]\n\t},\n\t\"aesthetic\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"\u25B0\u25B1\u25B1\u25B1\u25B1\u25B1\u25B1\",\n\t\t\t\"\u25B0\u25B0\u25B1\u25B1\u25B1\u25B1\u25B1\",\n\t\t\t\"\u25B0\u25B0\u25B0\u25B1\u25B1\u25B1\u25B1\",\n\t\t\t\"\u25B0\u25B0\u25B0\u25B0\u25B1\u25B1\u25B1\",\n\t\t\t\"\u25B0\u25B0\u25B0\u25B0\u25B0\u25B1\u25B1\",\n\t\t\t\"\u25B0\u25B0\u25B0\u25B0\u25B0\u25B0\u25B1\",\n\t\t\t\"\u25B0\u25B0\u25B0\u25B0\u25B0\u25B0\u25B0\",\n\t\t\t\"\u25B0\u25B1\u25B1\u25B1\u25B1\u25B1\u25B1\"\n\t\t]\n\t},\n\t\"dwarfFortress\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\" \u2588\u2588\u2588\u2588\u2588\u2588\u00A3\u00A3\u00A3  \",\n\t\t\t\"\u263A\u2588\u2588\u2588\u2588\u2588\u2588\u00A3\u00A3\u00A3  \",\n\t\t\t\"\u263A\u2588\u2588\u2588\u2588\u2588\u2588\u00A3\u00A3\u00A3  \",\n\t\t\t\"\u263A\u2593\u2588\u2588\u2588\u2588\u2588\u00A3\u00A3\u00A3  \",\n\t\t\t\"\u263A\u2593\u2588\u2588\u2588\u2588\u2588\u00A3\u00A3\u00A3  \",\n\t\t\t\"\u263A\u2592\u2588\u2588\u2588\u2588\u2588\u00A3\u00A3\u00A3  \",\n\t\t\t\"\u263A\u2592\u2588\u2588\u2588\u2588\u2588\u00A3\u00A3\u00A3  \",\n\t\t\t\"\u263A\u2591\u2588\u2588\u2588\u2588\u2588\u00A3\u00A3\u00A3  \",\n\t\t\t\"\u263A\u2591\u2588\u2588\u2588\u2588\u2588\u00A3\u00A3\u00A3  \",\n\t\t\t\"\u263A \u2588\u2588\u2588\u2588\u2588\u00A3\u00A3\u00A3  \",\n\t\t\t\" \u263A\u2588\u2588\u2588\u2588\u2588\u00A3\u00A3\u00A3  \",\n\t\t\t\" \u263A\u2588\u2588\u2588\u2588\u2588\u00A3\u00A3\u00A3  \",\n\t\t\t\" \u263A\u2593\u2588\u2588\u2588\u2588\u00A3\u00A3\u00A3  \",\n\t\t\t\" \u263A\u2593\u2588\u2588\u2588\u2588\u00A3\u00A3\u00A3  \",\n\t\t\t\" \u263A\u2592\u2588\u2588\u2588\u2588\u00A3\u00A3\u00A3  \",\n\t\t\t\" \u263A\u2592\u2588\u2588\u2588\u2588\u00A3\u00A3\u00A3  \",\n\t\t\t\" \u263A\u2591\u2588\u2588\u2588\u2588\u00A3\u00A3\u00A3  \",\n\t\t\t\" \u263A\u2591\u2588\u2588\u2588\u2588\u00A3\u00A3\u00A3  \",\n\t\t\t\" \u263A \u2588\u2588\u2588\u2588\u00A3\u00A3\u00A3  \",\n\t\t\t\"  \u263A\u2588\u2588\u2588\u2588\u00A3\u00A3\u00A3  \",\n\t\t\t\"  \u263A\u2588\u2588\u2588\u2588\u00A3\u00A3\u00A3  \",\n\t\t\t\"  \u263A\u2593\u2588\u2588\u2588\u00A3\u00A3\u00A3  \",\n\t\t\t\"  \u263A\u2593\u2588\u2588\u2588\u00A3\u00A3\u00A3  \",\n\t\t\t\"  \u263A\u2592\u2588\u2588\u2588\u00A3\u00A3\u00A3  \",\n\t\t\t\"  \u263A\u2592\u2588\u2588\u2588\u00A3\u00A3\u00A3  \",\n\t\t\t\"  \u263A\u2591\u2588\u2588\u2588\u00A3\u00A3\u00A3  \",\n\t\t\t\"  \u263A\u2591\u2588\u2588\u2588\u00A3\u00A3\u00A3  \",\n\t\t\t\"  \u263A \u2588\u2588\u2588\u00A3\u00A3\u00A3  \",\n\t\t\t\"   \u263A\u2588\u2588\u2588\u00A3\u00A3\u00A3  \",\n\t\t\t\"   \u263A\u2588\u2588\u2588\u00A3\u00A3\u00A3  \",\n\t\t\t\"   \u263A\u2593\u2588\u2588\u00A3\u00A3\u00A3  \",\n\t\t\t\"   \u263A\u2593\u2588\u2588\u00A3\u00A3\u00A3  \",\n\t\t\t\"   \u263A\u2592\u2588\u2588\u00A3\u00A3\u00A3  \",\n\t\t\t\"   \u263A\u2592\u2588\u2588\u00A3\u00A3\u00A3  \",\n\t\t\t\"   \u263A\u2591\u2588\u2588\u00A3\u00A3\u00A3  \",\n\t\t\t\"   \u263A\u2591\u2588\u2588\u00A3\u00A3\u00A3  \",\n\t\t\t\"   \u263A \u2588\u2588\u00A3\u00A3\u00A3  \",\n\t\t\t\"    \u263A\u2588\u2588\u00A3\u00A3\u00A3  \",\n\t\t\t\"    \u263A\u2588\u2588\u00A3\u00A3\u00A3  \",\n\t\t\t\"    \u263A\u2593\u2588\u00A3\u00A3\u00A3  \",\n\t\t\t\"    \u263A\u2593\u2588\u00A3\u00A3\u00A3  \",\n\t\t\t\"    \u263A\u2592\u2588\u00A3\u00A3\u00A3  \",\n\t\t\t\"    \u263A\u2592\u2588\u00A3\u00A3\u00A3  \",\n\t\t\t\"    \u263A\u2591\u2588\u00A3\u00A3\u00A3  \",\n\t\t\t\"    \u263A\u2591\u2588\u00A3\u00A3\u00A3  \",\n\t\t\t\"    \u263A \u2588\u00A3\u00A3\u00A3  \",\n\t\t\t\"     \u263A\u2588\u00A3\u00A3\u00A3  \",\n\t\t\t\"     \u263A\u2588\u00A3\u00A3\u00A3  \",\n\t\t\t\"     \u263A\u2593\u00A3\u00A3\u00A3  \",\n\t\t\t\"     \u263A\u2593\u00A3\u00A3\u00A3  \",\n\t\t\t\"     \u263A\u2592\u00A3\u00A3\u00A3  \",\n\t\t\t\"     \u263A\u2592\u00A3\u00A3\u00A3  \",\n\t\t\t\"     \u263A\u2591\u00A3\u00A3\u00A3  \",\n\t\t\t\"     \u263A\u2591\u00A3\u00A3\u00A3  \",\n\t\t\t\"     \u263A \u00A3\u00A3\u00A3  \",\n\t\t\t\"      \u263A\u00A3\u00A3\u00A3  \",\n\t\t\t\"      \u263A\u00A3\u00A3\u00A3  \",\n\t\t\t\"      \u263A\u2593\u00A3\u00A3  \",\n\t\t\t\"      \u263A\u2593\u00A3\u00A3  \",\n\t\t\t\"      \u263A\u2592\u00A3\u00A3  \",\n\t\t\t\"      \u263A\u2592\u00A3\u00A3  \",\n\t\t\t\"      \u263A\u2591\u00A3\u00A3  \",\n\t\t\t\"      \u263A\u2591\u00A3\u00A3  \",\n\t\t\t\"      \u263A \u00A3\u00A3  \",\n\t\t\t\"       \u263A\u00A3\u00A3  \",\n\t\t\t\"       \u263A\u00A3\u00A3  \",\n\t\t\t\"       \u263A\u2593\u00A3  \",\n\t\t\t\"       \u263A\u2593\u00A3  \",\n\t\t\t\"       \u263A\u2592\u00A3  \",\n\t\t\t\"       \u263A\u2592\u00A3  \",\n\t\t\t\"       \u263A\u2591\u00A3  \",\n\t\t\t\"       \u263A\u2591\u00A3  \",\n\t\t\t\"       \u263A \u00A3  \",\n\t\t\t\"        \u263A\u00A3  \",\n\t\t\t\"        \u263A\u00A3  \",\n\t\t\t\"        \u263A\u2593  \",\n\t\t\t\"        \u263A\u2593  \",\n\t\t\t\"        \u263A\u2592  \",\n\t\t\t\"        \u263A\u2592  \",\n\t\t\t\"        \u263A\u2591  \",\n\t\t\t\"        \u263A\u2591  \",\n\t\t\t\"        \u263A   \",\n\t\t\t\"        \u263A  &\",\n\t\t\t\"        \u263A \u263C&\",\n\t\t\t\"       \u263A \u263C &\",\n\t\t\t\"       \u263A\u263C  &\",\n\t\t\t\"      \u263A\u263C  & \",\n\t\t\t\"      \u203C   & \",\n\t\t\t\"     \u263A   &  \",\n\t\t\t\"    \u203C    &  \",\n\t\t\t\"   \u263A    &   \",\n\t\t\t\"  \u203C     &   \",\n\t\t\t\" \u263A     &    \",\n\t\t\t\"\u203C      &    \",\n\t\t\t\"      &     \",\n\t\t\t\"      &     \",\n\t\t\t\"     &   \u2591  \",\n\t\t\t\"     &   \u2592  \",\n\t\t\t\"    &    \u2593  \",\n\t\t\t\"    &    \u00A3  \",\n\t\t\t\"   &    \u2591\u00A3  \",\n\t\t\t\"   &    \u2592\u00A3  \",\n\t\t\t\"  &     \u2593\u00A3  \",\n\t\t\t\"  &     \u00A3\u00A3  \",\n\t\t\t\" &     \u2591\u00A3\u00A3  \",\n\t\t\t\" &     \u2592\u00A3\u00A3  \",\n\t\t\t\"&      \u2593\u00A3\u00A3  \",\n\t\t\t\"&      \u00A3\u00A3\u00A3  \",\n\t\t\t\"      \u2591\u00A3\u00A3\u00A3  \",\n\t\t\t\"      \u2592\u00A3\u00A3\u00A3  \",\n\t\t\t\"      \u2593\u00A3\u00A3\u00A3  \",\n\t\t\t\"      \u2588\u00A3\u00A3\u00A3  \",\n\t\t\t\"     \u2591\u2588\u00A3\u00A3\u00A3  \",\n\t\t\t\"     \u2592\u2588\u00A3\u00A3\u00A3  \",\n\t\t\t\"     \u2593\u2588\u00A3\u00A3\u00A3  \",\n\t\t\t\"     \u2588\u2588\u00A3\u00A3\u00A3  \",\n\t\t\t\"    \u2591\u2588\u2588\u00A3\u00A3\u00A3  \",\n\t\t\t\"    \u2592\u2588\u2588\u00A3\u00A3\u00A3  \",\n\t\t\t\"    \u2593\u2588\u2588\u00A3\u00A3\u00A3  \",\n\t\t\t\"    \u2588\u2588\u2588\u00A3\u00A3\u00A3  \",\n\t\t\t\"   \u2591\u2588\u2588\u2588\u00A3\u00A3\u00A3  \",\n\t\t\t\"   \u2592\u2588\u2588\u2588\u00A3\u00A3\u00A3  \",\n\t\t\t\"   \u2593\u2588\u2588\u2588\u00A3\u00A3\u00A3  \",\n\t\t\t\"   \u2588\u2588\u2588\u2588\u00A3\u00A3\u00A3  \",\n\t\t\t\"  \u2591\u2588\u2588\u2588\u2588\u00A3\u00A3\u00A3  \",\n\t\t\t\"  \u2592\u2588\u2588\u2588\u2588\u00A3\u00A3\u00A3  \",\n\t\t\t\"  \u2593\u2588\u2588\u2588\u2588\u00A3\u00A3\u00A3  \",\n\t\t\t\"  \u2588\u2588\u2588\u2588\u2588\u00A3\u00A3\u00A3  \",\n\t\t\t\" \u2591\u2588\u2588\u2588\u2588\u2588\u00A3\u00A3\u00A3  \",\n\t\t\t\" \u2592\u2588\u2588\u2588\u2588\u2588\u00A3\u00A3\u00A3  \",\n\t\t\t\" \u2593\u2588\u2588\u2588\u2588\u2588\u00A3\u00A3\u00A3  \",\n\t\t\t\" \u2588\u2588\u2588\u2588\u2588\u2588\u00A3\u00A3\u00A3  \",\n\t\t\t\" \u2588\u2588\u2588\u2588\u2588\u2588\u00A3\u00A3\u00A3  \"\n\t\t]\n\t}\n}\n", "'use strict';\n\nconst spinners = Object.assign({}, require('./spinners.json')); // eslint-disable-line import/extensions\n\nconst spinnersList = Object.keys(spinners);\n\nObject.defineProperty(spinners, 'random', {\n\tget() {\n\t\tconst randomIndex = Math.floor(Math.random() * spinnersList.length);\n\t\tconst spinnerName = spinnersList[randomIndex];\n\t\treturn spinners[spinnerName];\n\t}\n});\n\nmodule.exports = spinners;\n", "module.exports = () => {\n\t// https://mths.be/emoji\n\treturn /[#*0-9]\\uFE0F?\\u20E3|[\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u23CF\\u23ED-\\u23EF\\u23F1\\u23F2\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB\\u25FC\\u25FE\\u2600-\\u2604\\u260E\\u2611\\u2614\\u2615\\u2618\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u2648-\\u2653\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u267F\\u2692\\u2694-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A7\\u26AA\\u26B0\\u26B1\\u26BD\\u26BE\\u26C4\\u26C8\\u26CF\\u26D1\\u26E9\\u26F0-\\u26F5\\u26F7\\u26F8\\u26FA\\u2702\\u2708\\u2709\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2733\\u2734\\u2744\\u2747\\u2757\\u2763\\u27A1\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B55\\u3030\\u303D\\u3297\\u3299]\\uFE0F?|[\\u261D\\u270C\\u270D](?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])?|[\\u270A\\u270B](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u2693\\u26A1\\u26AB\\u26C5\\u26CE\\u26D4\\u26EA\\u26FD\\u2705\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2795-\\u2797\\u27B0\\u27BF\\u2B50]|\\u26D3\\uFE0F?(?:\\u200D\\uD83D\\uDCA5)?|\\u26F9(?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\u2764\\uFE0F?(?:\\u200D(?:\\uD83D\\uDD25|\\uD83E\\uDE79))?|\\uD83C(?:[\\uDC04\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDE02\\uDE37\\uDF21\\uDF24-\\uDF2C\\uDF36\\uDF7D\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E\\uDF9F\\uDFCD\\uDFCE\\uDFD4-\\uDFDF\\uDFF5\\uDFF7]\\uFE0F?|[\\uDF85\\uDFC2\\uDFC7](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDFC4\\uDFCA](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDFCB\\uDFCC](?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF43\\uDF45-\\uDF4A\\uDF4C-\\uDF7C\\uDF7E-\\uDF84\\uDF86-\\uDF93\\uDFA0-\\uDFC1\\uDFC5\\uDFC6\\uDFC8\\uDFC9\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF8-\\uDFFF]|\\uDDE6\\uD83C[\\uDDE8-\\uDDEC\\uDDEE\\uDDF1\\uDDF2\\uDDF4\\uDDF6-\\uDDFA\\uDDFC\\uDDFD\\uDDFF]|\\uDDE7\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEF\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9\\uDDFB\\uDDFC\\uDDFE\\uDDFF]|\\uDDE8\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDEE\\uDDF0-\\uDDF5\\uDDF7\\uDDFA-\\uDDFF]|\\uDDE9\\uD83C[\\uDDEA\\uDDEC\\uDDEF\\uDDF0\\uDDF2\\uDDF4\\uDDFF]|\\uDDEA\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDED\\uDDF7-\\uDDFA]|\\uDDEB\\uD83C[\\uDDEE-\\uDDF0\\uDDF2\\uDDF4\\uDDF7]|\\uDDEC\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEE\\uDDF1-\\uDDF3\\uDDF5-\\uDDFA\\uDDFC\\uDDFE]|\\uDDED\\uD83C[\\uDDF0\\uDDF2\\uDDF3\\uDDF7\\uDDF9\\uDDFA]|\\uDDEE\\uD83C[\\uDDE8-\\uDDEA\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9]|\\uDDEF\\uD83C[\\uDDEA\\uDDF2\\uDDF4\\uDDF5]|\\uDDF0\\uD83C[\\uDDEA\\uDDEC-\\uDDEE\\uDDF2\\uDDF3\\uDDF5\\uDDF7\\uDDFC\\uDDFE\\uDDFF]|\\uDDF1\\uD83C[\\uDDE6-\\uDDE8\\uDDEE\\uDDF0\\uDDF7-\\uDDFB\\uDDFE]|\\uDDF2\\uD83C[\\uDDE6\\uDDE8-\\uDDED\\uDDF0-\\uDDFF]|\\uDDF3\\uD83C[\\uDDE6\\uDDE8\\uDDEA-\\uDDEC\\uDDEE\\uDDF1\\uDDF4\\uDDF5\\uDDF7\\uDDFA\\uDDFF]|\\uDDF4\\uD83C\\uDDF2|\\uDDF5\\uD83C[\\uDDE6\\uDDEA-\\uDDED\\uDDF0-\\uDDF3\\uDDF7-\\uDDF9\\uDDFC\\uDDFE]|\\uDDF6\\uD83C\\uDDE6|\\uDDF7\\uD83C[\\uDDEA\\uDDF4\\uDDF8\\uDDFA\\uDDFC]|\\uDDF8\\uD83C[\\uDDE6-\\uDDEA\\uDDEC-\\uDDF4\\uDDF7-\\uDDF9\\uDDFB\\uDDFD-\\uDDFF]|\\uDDF9\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDED\\uDDEF-\\uDDF4\\uDDF7\\uDDF9\\uDDFB\\uDDFC\\uDDFF]|\\uDDFA\\uD83C[\\uDDE6\\uDDEC\\uDDF2\\uDDF3\\uDDF8\\uDDFE\\uDDFF]|\\uDDFB\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDEE\\uDDF3\\uDDFA]|\\uDDFC\\uD83C[\\uDDEB\\uDDF8]|\\uDDFD\\uD83C\\uDDF0|\\uDDFE\\uD83C[\\uDDEA\\uDDF9]|\\uDDFF\\uD83C[\\uDDE6\\uDDF2\\uDDFC]|\\uDF44(?:\\u200D\\uD83D\\uDFEB)?|\\uDF4B(?:\\u200D\\uD83D\\uDFE9)?|\\uDFC3(?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D(?:[\\u2640\\u2642]\\uFE0F?(?:\\u200D\\u27A1\\uFE0F?)?|\\u27A1\\uFE0F?))?|\\uDFF3\\uFE0F?(?:\\u200D(?:\\u26A7\\uFE0F?|\\uD83C\\uDF08))?|\\uDFF4(?:\\u200D\\u2620\\uFE0F?|\\uDB40\\uDC67\\uDB40\\uDC62\\uDB40(?:\\uDC65\\uDB40\\uDC6E\\uDB40\\uDC67|\\uDC73\\uDB40\\uDC63\\uDB40\\uDC74|\\uDC77\\uDB40\\uDC6C\\uDB40\\uDC73)\\uDB40\\uDC7F)?)|\\uD83D(?:[\\uDC3F\\uDCFD\\uDD49\\uDD4A\\uDD6F\\uDD70\\uDD73\\uDD76-\\uDD79\\uDD87\\uDD8A-\\uDD8D\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA\\uDECB\\uDECD-\\uDECF\\uDEE0-\\uDEE5\\uDEE9\\uDEF0\\uDEF3]\\uFE0F?|[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDC8F\\uDC91\\uDCAA\\uDD7A\\uDD95\\uDD96\\uDE4C\\uDE4F\\uDEC0\\uDECC](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4\\uDEB5](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDD74\\uDD90](?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDC00-\\uDC07\\uDC09-\\uDC14\\uDC16-\\uDC25\\uDC27-\\uDC3A\\uDC3C-\\uDC3E\\uDC40\\uDC44\\uDC45\\uDC51-\\uDC65\\uDC6A\\uDC79-\\uDC7B\\uDC7D-\\uDC80\\uDC84\\uDC88-\\uDC8E\\uDC90\\uDC92-\\uDCA9\\uDCAB-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDDA4\\uDDFB-\\uDE2D\\uDE2F-\\uDE34\\uDE37-\\uDE41\\uDE43\\uDE44\\uDE48-\\uDE4A\\uDE80-\\uDEA2\\uDEA4-\\uDEB3\\uDEB7-\\uDEBF\\uDEC1-\\uDEC5\\uDED0-\\uDED2\\uDED5-\\uDED7\\uDEDC-\\uDEDF\\uDEEB\\uDEEC\\uDEF4-\\uDEFC\\uDFE0-\\uDFEB\\uDFF0]|\\uDC08(?:\\u200D\\u2B1B)?|\\uDC15(?:\\u200D\\uD83E\\uDDBA)?|\\uDC26(?:\\u200D(?:\\u2B1B|\\uD83D\\uDD25))?|\\uDC3B(?:\\u200D\\u2744\\uFE0F?)?|\\uDC41\\uFE0F?(?:\\u200D\\uD83D\\uDDE8\\uFE0F?)?|\\uDC68(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDC68\\uDC69]\\u200D\\uD83D(?:\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?)|[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?)|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFC-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFE])))?))?|\\uDC69(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?[\\uDC68\\uDC69]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?|\\uDC69\\u200D\\uD83D(?:\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?))|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFC-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB-\\uDFFE])))?))?|\\uDC6F(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\uDD75(?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\uDE2E(?:\\u200D\\uD83D\\uDCA8)?|\\uDE35(?:\\u200D\\uD83D\\uDCAB)?|\\uDE36(?:\\u200D\\uD83C\\uDF2B\\uFE0F?)?|\\uDE42(?:\\u200D[\\u2194\\u2195]\\uFE0F?)?|\\uDEB6(?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D(?:[\\u2640\\u2642]\\uFE0F?(?:\\u200D\\u27A1\\uFE0F?)?|\\u27A1\\uFE0F?))?)|\\uD83E(?:[\\uDD0C\\uDD0F\\uDD18-\\uDD1F\\uDD30-\\uDD34\\uDD36\\uDD77\\uDDB5\\uDDB6\\uDDBB\\uDDD2\\uDDD3\\uDDD5\\uDEC3-\\uDEC5\\uDEF0\\uDEF2-\\uDEF8](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD\\uDDCF\\uDDD4\\uDDD6-\\uDDDD](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDDDE\\uDDDF](?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDD0D\\uDD0E\\uDD10-\\uDD17\\uDD20-\\uDD25\\uDD27-\\uDD2F\\uDD3A\\uDD3F-\\uDD45\\uDD47-\\uDD76\\uDD78-\\uDDB4\\uDDB7\\uDDBA\\uDDBC-\\uDDCC\\uDDD0\\uDDE0-\\uDDFF\\uDE70-\\uDE7C\\uDE80-\\uDE88\\uDE90-\\uDEBD\\uDEBF-\\uDEC2\\uDECE-\\uDEDB\\uDEE0-\\uDEE8]|\\uDD3C(?:\\u200D[\\u2640\\u2642]\\uFE0F?|\\uD83C[\\uDFFB-\\uDFFF])?|\\uDDCE(?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D(?:[\\u2640\\u2642]\\uFE0F?(?:\\u200D\\u27A1\\uFE0F?)?|\\u27A1\\uFE0F?))?|\\uDDD1(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1|\\uDDD1\\u200D\\uD83E\\uDDD2(?:\\u200D\\uD83E\\uDDD2)?|\\uDDD2(?:\\u200D\\uD83E\\uDDD2)?))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFC-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFD-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFD\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFE]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?))?|\\uDEF1(?:\\uD83C(?:\\uDFFB(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFC-\\uDFFF])?|\\uDFFC(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])?|\\uDFFD(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])?|\\uDFFE(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])?|\\uDFFF(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB-\\uDFFE])?))?)/g;\n};\n", "module.exports = {\n  kClose: Symbol('close'),\n  kDestroy: Symbol('destroy'),\n  kDispatch: Symbol('dispatch'),\n  kUrl: Symbol('url'),\n  kWriting: Symbol('writing'),\n  kResuming: Symbol('resuming'),\n  kQueue: Symbol('queue'),\n  kConnect: Symbol('connect'),\n  kConnecting: Symbol('connecting'),\n  kKeepAliveDefaultTimeout: Symbol('default keep alive timeout'),\n  kKeepAliveMaxTimeout: Symbol('max keep alive timeout'),\n  kKeepAliveTimeoutThreshold: Symbol('keep alive timeout threshold'),\n  kKeepAliveTimeoutValue: Symbol('keep alive timeout'),\n  kKeepAlive: Symbol('keep alive'),\n  kHeadersTimeout: Symbol('headers timeout'),\n  kBodyTimeout: Symbol('body timeout'),\n  kServerName: Symbol('server name'),\n  kLocalAddress: Symbol('local address'),\n  kHost: Symbol('host'),\n  kNoRef: Symbol('no ref'),\n  kBodyUsed: Symbol('used'),\n  kRunning: Symbol('running'),\n  kBlocking: Symbol('blocking'),\n  kPending: Symbol('pending'),\n  kSize: Symbol('size'),\n  kBusy: Symbol('busy'),\n  kQueued: Symbol('queued'),\n  kFree: Symbol('free'),\n  kConnected: Symbol('connected'),\n  kClosed: Symbol('closed'),\n  kNeedDrain: Symbol('need drain'),\n  kReset: Symbol('reset'),\n  kDestroyed: Symbol.for('nodejs.stream.destroyed'),\n  kResume: Symbol('resume'),\n  kOnError: Symbol('on error'),\n  kMaxHeadersSize: Symbol('max headers size'),\n  kRunningIdx: Symbol('running index'),\n  kPendingIdx: Symbol('pending index'),\n  kError: Symbol('error'),\n  kClients: Symbol('clients'),\n  kClient: Symbol('client'),\n  kParser: Symbol('parser'),\n  kOnDestroyed: Symbol('destroy callbacks'),\n  kPipelining: Symbol('pipelining'),\n  kSocket: Symbol('socket'),\n  kHostHeader: Symbol('host header'),\n  kConnector: Symbol('connector'),\n  kStrictContentLength: Symbol('strict content length'),\n  kMaxRedirections: Symbol('maxRedirections'),\n  kMaxRequests: Symbol('maxRequestsPerClient'),\n  kProxy: Symbol('proxy agent options'),\n  kCounter: Symbol('socket request counter'),\n  kInterceptors: Symbol('dispatch interceptors'),\n  kMaxResponseSize: Symbol('max response size'),\n  kHTTP2Session: Symbol('http2Session'),\n  kHTTP2SessionState: Symbol('http2Session state'),\n  kRetryHandlerDefaultRetry: Symbol('retry agent default retry'),\n  kConstruct: Symbol('constructable'),\n  kListeners: Symbol('listeners'),\n  kHTTPContext: Symbol('http context'),\n  kMaxConcurrentStreams: Symbol('max concurrent streams'),\n  kNoProxyAgent: Symbol('no proxy agent'),\n  kHttpProxyAgent: Symbol('http proxy agent'),\n  kHttpsProxyAgent: Symbol('https proxy agent')\n}\n", "'use strict'\n\nclass UndiciError extends Error {\n  constructor (message) {\n    super(message)\n    this.name = 'UndiciError'\n    this.code = 'UND_ERR'\n  }\n}\n\nclass ConnectTimeoutError extends UndiciError {\n  constructor (message) {\n    super(message)\n    this.name = 'ConnectTimeoutError'\n    this.message = message || 'Connect Timeout Error'\n    this.code = 'UND_ERR_CONNECT_TIMEOUT'\n  }\n}\n\nclass HeadersTimeoutError extends UndiciError {\n  constructor (message) {\n    super(message)\n    this.name = 'HeadersTimeoutError'\n    this.message = message || 'Headers Timeout Error'\n    this.code = 'UND_ERR_HEADERS_TIMEOUT'\n  }\n}\n\nclass HeadersOverflowError extends UndiciError {\n  constructor (message) {\n    super(message)\n    this.name = 'HeadersOverflowError'\n    this.message = message || 'Headers Overflow Error'\n    this.code = 'UND_ERR_HEADERS_OVERFLOW'\n  }\n}\n\nclass BodyTimeoutError extends UndiciError {\n  constructor (message) {\n    super(message)\n    this.name = 'BodyTimeoutError'\n    this.message = message || 'Body Timeout Error'\n    this.code = 'UND_ERR_BODY_TIMEOUT'\n  }\n}\n\nclass ResponseStatusCodeError extends UndiciError {\n  constructor (message, statusCode, headers, body) {\n    super(message)\n    this.name = 'ResponseStatusCodeError'\n    this.message = message || 'Response Status Code Error'\n    this.code = 'UND_ERR_RESPONSE_STATUS_CODE'\n    this.body = body\n    this.status = statusCode\n    this.statusCode = statusCode\n    this.headers = headers\n  }\n}\n\nclass InvalidArgumentError extends UndiciError {\n  constructor (message) {\n    super(message)\n    this.name = 'InvalidArgumentError'\n    this.message = message || 'Invalid Argument Error'\n    this.code = 'UND_ERR_INVALID_ARG'\n  }\n}\n\nclass InvalidReturnValueError extends UndiciError {\n  constructor (message) {\n    super(message)\n    this.name = 'InvalidReturnValueError'\n    this.message = message || 'Invalid Return Value Error'\n    this.code = 'UND_ERR_INVALID_RETURN_VALUE'\n  }\n}\n\nclass AbortError extends UndiciError {\n  constructor (message) {\n    super(message)\n    this.name = 'AbortError'\n    this.message = message || 'The operation was aborted'\n  }\n}\n\nclass RequestAbortedError extends AbortError {\n  constructor (message) {\n    super(message)\n    this.name = 'AbortError'\n    this.message = message || 'Request aborted'\n    this.code = 'UND_ERR_ABORTED'\n  }\n}\n\nclass InformationalError extends UndiciError {\n  constructor (message) {\n    super(message)\n    this.name = 'InformationalError'\n    this.message = message || 'Request information'\n    this.code = 'UND_ERR_INFO'\n  }\n}\n\nclass RequestContentLengthMismatchError extends UndiciError {\n  constructor (message) {\n    super(message)\n    this.name = 'RequestContentLengthMismatchError'\n    this.message = message || 'Request body length does not match content-length header'\n    this.code = 'UND_ERR_REQ_CONTENT_LENGTH_MISMATCH'\n  }\n}\n\nclass ResponseContentLengthMismatchError extends UndiciError {\n  constructor (message) {\n    super(message)\n    this.name = 'ResponseContentLengthMismatchError'\n    this.message = message || 'Response body length does not match content-length header'\n    this.code = 'UND_ERR_RES_CONTENT_LENGTH_MISMATCH'\n  }\n}\n\nclass ClientDestroyedError extends UndiciError {\n  constructor (message) {\n    super(message)\n    this.name = 'ClientDestroyedError'\n    this.message = message || 'The client is destroyed'\n    this.code = 'UND_ERR_DESTROYED'\n  }\n}\n\nclass ClientClosedError extends UndiciError {\n  constructor (message) {\n    super(message)\n    this.name = 'ClientClosedError'\n    this.message = message || 'The client is closed'\n    this.code = 'UND_ERR_CLOSED'\n  }\n}\n\nclass SocketError extends UndiciError {\n  constructor (message, socket) {\n    super(message)\n    this.name = 'SocketError'\n    this.message = message || 'Socket error'\n    this.code = 'UND_ERR_SOCKET'\n    this.socket = socket\n  }\n}\n\nclass NotSupportedError extends UndiciError {\n  constructor (message) {\n    super(message)\n    this.name = 'NotSupportedError'\n    this.message = message || 'Not supported error'\n    this.code = 'UND_ERR_NOT_SUPPORTED'\n  }\n}\n\nclass BalancedPoolMissingUpstreamError extends UndiciError {\n  constructor (message) {\n    super(message)\n    this.name = 'MissingUpstreamError'\n    this.message = message || 'No upstream has been added to the BalancedPool'\n    this.code = 'UND_ERR_BPL_MISSING_UPSTREAM'\n  }\n}\n\nclass HTTPParserError extends Error {\n  constructor (message, code, data) {\n    super(message)\n    this.name = 'HTTPParserError'\n    this.code = code ? `HPE_${code}` : undefined\n    this.data = data ? data.toString() : undefined\n  }\n}\n\nclass ResponseExceededMaxSizeError extends UndiciError {\n  constructor (message) {\n    super(message)\n    this.name = 'ResponseExceededMaxSizeError'\n    this.message = message || 'Response content exceeded max size'\n    this.code = 'UND_ERR_RES_EXCEEDED_MAX_SIZE'\n  }\n}\n\nclass RequestRetryError extends UndiciError {\n  constructor (message, code, { headers, data }) {\n    super(message)\n    this.name = 'RequestRetryError'\n    this.message = message || 'Request retry error'\n    this.code = 'UND_ERR_REQ_RETRY'\n    this.statusCode = code\n    this.data = data\n    this.headers = headers\n  }\n}\n\nclass SecureProxyConnectionError extends UndiciError {\n  constructor (cause, message, options) {\n    super(message, { cause, ...(options ?? {}) })\n    this.name = 'SecureProxyConnectionError'\n    this.message = message || 'Secure Proxy Connection failed'\n    this.code = 'UND_ERR_PRX_TLS'\n    this.cause = cause\n  }\n}\n\nmodule.exports = {\n  AbortError,\n  HTTPParserError,\n  UndiciError,\n  HeadersTimeoutError,\n  HeadersOverflowError,\n  BodyTimeoutError,\n  RequestContentLengthMismatchError,\n  ConnectTimeoutError,\n  ResponseStatusCodeError,\n  InvalidArgumentError,\n  InvalidReturnValueError,\n  RequestAbortedError,\n  ClientDestroyedError,\n  ClientClosedError,\n  InformationalError,\n  SocketError,\n  NotSupportedError,\n  ResponseContentLengthMismatchError,\n  BalancedPoolMissingUpstreamError,\n  ResponseExceededMaxSizeError,\n  RequestRetryError,\n  SecureProxyConnectionError\n}\n", "'use strict'\n\n/** @type {Record<string, string | undefined>} */\nconst headerNameLowerCasedRecord = {}\n\n// https://developer.mozilla.org/docs/Web/HTTP/Headers\nconst wellknownHeaderNames = [\n  'Accept',\n  'Accept-Encoding',\n  'Accept-Language',\n  'Accept-Ranges',\n  'Access-Control-Allow-Credentials',\n  'Access-Control-Allow-Headers',\n  'Access-Control-Allow-Methods',\n  'Access-Control-Allow-Origin',\n  'Access-Control-Expose-Headers',\n  'Access-Control-Max-Age',\n  'Access-Control-Request-Headers',\n  'Access-Control-Request-Method',\n  'Age',\n  'Allow',\n  'Alt-Svc',\n  'Alt-Used',\n  'Authorization',\n  'Cache-Control',\n  'Clear-Site-Data',\n  'Connection',\n  'Content-Disposition',\n  'Content-Encoding',\n  'Content-Language',\n  'Content-Length',\n  'Content-Location',\n  'Content-Range',\n  'Content-Security-Policy',\n  'Content-Security-Policy-Report-Only',\n  'Content-Type',\n  'Cookie',\n  'Cross-Origin-Embedder-Policy',\n  'Cross-Origin-Opener-Policy',\n  'Cross-Origin-Resource-Policy',\n  'Date',\n  'Device-Memory',\n  'Downlink',\n  'ECT',\n  'ETag',\n  'Expect',\n  'Expect-CT',\n  'Expires',\n  'Forwarded',\n  'From',\n  'Host',\n  'If-Match',\n  'If-Modified-Since',\n  'If-None-Match',\n  'If-Range',\n  'If-Unmodified-Since',\n  'Keep-Alive',\n  'Last-Modified',\n  'Link',\n  'Location',\n  'Max-Forwards',\n  'Origin',\n  'Permissions-Policy',\n  'Pragma',\n  'Proxy-Authenticate',\n  'Proxy-Authorization',\n  'RTT',\n  'Range',\n  'Referer',\n  'Referrer-Policy',\n  'Refresh',\n  'Retry-After',\n  'Sec-WebSocket-Accept',\n  'Sec-WebSocket-Extensions',\n  'Sec-WebSocket-Key',\n  'Sec-WebSocket-Protocol',\n  'Sec-WebSocket-Version',\n  'Server',\n  'Server-Timing',\n  'Service-Worker-Allowed',\n  'Service-Worker-Navigation-Preload',\n  'Set-Cookie',\n  'SourceMap',\n  'Strict-Transport-Security',\n  'Supports-Loading-Mode',\n  'TE',\n  'Timing-Allow-Origin',\n  'Trailer',\n  'Transfer-Encoding',\n  'Upgrade',\n  'Upgrade-Insecure-Requests',\n  'User-Agent',\n  'Vary',\n  'Via',\n  'WWW-Authenticate',\n  'X-Content-Type-Options',\n  'X-DNS-Prefetch-Control',\n  'X-Frame-Options',\n  'X-Permitted-Cross-Domain-Policies',\n  'X-Powered-By',\n  'X-Requested-With',\n  'X-XSS-Protection'\n]\n\nfor (let i = 0; i < wellknownHeaderNames.length; ++i) {\n  const key = wellknownHeaderNames[i]\n  const lowerCasedKey = key.toLowerCase()\n  headerNameLowerCasedRecord[key] = headerNameLowerCasedRecord[lowerCasedKey] =\n    lowerCasedKey\n}\n\n// Note: object prototypes should not be able to be referenced. e.g. `Object#hasOwnProperty`.\nObject.setPrototypeOf(headerNameLowerCasedRecord, null)\n\nmodule.exports = {\n  wellknownHeaderNames,\n  headerNameLowerCasedRecord\n}\n", "'use strict'\n\nconst {\n  wellknownHeaderNames,\n  headerNameLowerCasedRecord\n} = require('./constants')\n\nclass TstNode {\n  /** @type {any} */\n  value = null\n  /** @type {null | TstNode} */\n  left = null\n  /** @type {null | TstNode} */\n  middle = null\n  /** @type {null | TstNode} */\n  right = null\n  /** @type {number} */\n  code\n  /**\n   * @param {string} key\n   * @param {any} value\n   * @param {number} index\n   */\n  constructor (key, value, index) {\n    if (index === undefined || index >= key.length) {\n      throw new TypeError('Unreachable')\n    }\n    const code = this.code = key.charCodeAt(index)\n    // check code is ascii string\n    if (code > 0x7F) {\n      throw new TypeError('key must be ascii string')\n    }\n    if (key.length !== ++index) {\n      this.middle = new TstNode(key, value, index)\n    } else {\n      this.value = value\n    }\n  }\n\n  /**\n   * @param {string} key\n   * @param {any} value\n   */\n  add (key, value) {\n    const length = key.length\n    if (length === 0) {\n      throw new TypeError('Unreachable')\n    }\n    let index = 0\n    let node = this\n    while (true) {\n      const code = key.charCodeAt(index)\n      // check code is ascii string\n      if (code > 0x7F) {\n        throw new TypeError('key must be ascii string')\n      }\n      if (node.code === code) {\n        if (length === ++index) {\n          node.value = value\n          break\n        } else if (node.middle !== null) {\n          node = node.middle\n        } else {\n          node.middle = new TstNode(key, value, index)\n          break\n        }\n      } else if (node.code < code) {\n        if (node.left !== null) {\n          node = node.left\n        } else {\n          node.left = new TstNode(key, value, index)\n          break\n        }\n      } else if (node.right !== null) {\n        node = node.right\n      } else {\n        node.right = new TstNode(key, value, index)\n        break\n      }\n    }\n  }\n\n  /**\n   * @param {Uint8Array} key\n   * @return {TstNode | null}\n   */\n  search (key) {\n    const keylength = key.length\n    let index = 0\n    let node = this\n    while (node !== null && index < keylength) {\n      let code = key[index]\n      // A-Z\n      // First check if it is bigger than 0x5a.\n      // Lowercase letters have higher char codes than uppercase ones.\n      // Also we assume that headers will mostly contain lowercase characters.\n      if (code <= 0x5a && code >= 0x41) {\n        // Lowercase for uppercase.\n        code |= 32\n      }\n      while (node !== null) {\n        if (code === node.code) {\n          if (keylength === ++index) {\n            // Returns Node since it is the last key.\n            return node\n          }\n          node = node.middle\n          break\n        }\n        node = node.code < code ? node.left : node.right\n      }\n    }\n    return null\n  }\n}\n\nclass TernarySearchTree {\n  /** @type {TstNode | null} */\n  node = null\n\n  /**\n   * @param {string} key\n   * @param {any} value\n   * */\n  insert (key, value) {\n    if (this.node === null) {\n      this.node = new TstNode(key, value, 0)\n    } else {\n      this.node.add(key, value)\n    }\n  }\n\n  /**\n   * @param {Uint8Array} key\n   * @return {any}\n   */\n  lookup (key) {\n    return this.node?.search(key)?.value ?? null\n  }\n}\n\nconst tree = new TernarySearchTree()\n\nfor (let i = 0; i < wellknownHeaderNames.length; ++i) {\n  const key = headerNameLowerCasedRecord[wellknownHeaderNames[i]]\n  tree.insert(key, key)\n}\n\nmodule.exports = {\n  TernarySearchTree,\n  tree\n}\n", "'use strict'\n\nconst assert = require('node:assert')\nconst { kDestroyed, kBodyUsed, kListeners } = require('./symbols')\nconst { IncomingMessage } = require('node:http')\nconst stream = require('node:stream')\nconst net = require('node:net')\nconst { InvalidArgumentError } = require('./errors')\nconst { Blob } = require('node:buffer')\nconst nodeUtil = require('node:util')\nconst { stringify } = require('node:querystring')\nconst { headerNameLowerCasedRecord } = require('./constants')\nconst { tree } = require('./tree')\n\nconst [nodeMajor, nodeMinor] = process.versions.node.split('.').map(v => Number(v))\n\nfunction nop () {}\n\nfunction isStream (obj) {\n  return obj && typeof obj === 'object' && typeof obj.pipe === 'function' && typeof obj.on === 'function'\n}\n\n// based on https://github.com/node-fetch/fetch-blob/blob/8ab587d34080de94140b54f07168451e7d0b655e/index.js#L229-L241 (MIT License)\nfunction isBlobLike (object) {\n  if (object === null) {\n    return false\n  } else if (object instanceof Blob) {\n    return true\n  } else if (typeof object !== 'object') {\n    return false\n  } else {\n    const sTag = object[Symbol.toStringTag]\n\n    return (sTag === 'Blob' || sTag === 'File') && (\n      ('stream' in object && typeof object.stream === 'function') ||\n      ('arrayBuffer' in object && typeof object.arrayBuffer === 'function')\n    )\n  }\n}\n\nfunction buildURL (url, queryParams) {\n  if (url.includes('?') || url.includes('#')) {\n    throw new Error('Query params cannot be passed when url already contains \"?\" or \"#\".')\n  }\n\n  const stringified = stringify(queryParams)\n\n  if (stringified) {\n    url += '?' + stringified\n  }\n\n  return url\n}\n\nfunction isValidPort (port) {\n  const value = parseInt(port, 10)\n  return (\n    value === Number(port) &&\n    value >= 0 &&\n    value <= 65535\n  )\n}\n\nfunction isHttpOrHttpsPrefixed (value) {\n  return (\n    value != null &&\n    value[0] === 'h' &&\n    value[1] === 't' &&\n    value[2] === 't' &&\n    value[3] === 'p' &&\n    (\n      value[4] === ':' ||\n      (\n        value[4] === 's' &&\n        value[5] === ':'\n      )\n    )\n  )\n}\n\nfunction parseURL (url) {\n  if (typeof url === 'string') {\n    url = new URL(url)\n\n    if (!isHttpOrHttpsPrefixed(url.origin || url.protocol)) {\n      throw new InvalidArgumentError('Invalid URL protocol: the URL must start with `http:` or `https:`.')\n    }\n\n    return url\n  }\n\n  if (!url || typeof url !== 'object') {\n    throw new InvalidArgumentError('Invalid URL: The URL argument must be a non-null object.')\n  }\n\n  if (!(url instanceof URL)) {\n    if (url.port != null && url.port !== '' && isValidPort(url.port) === false) {\n      throw new InvalidArgumentError('Invalid URL: port must be a valid integer or a string representation of an integer.')\n    }\n\n    if (url.path != null && typeof url.path !== 'string') {\n      throw new InvalidArgumentError('Invalid URL path: the path must be a string or null/undefined.')\n    }\n\n    if (url.pathname != null && typeof url.pathname !== 'string') {\n      throw new InvalidArgumentError('Invalid URL pathname: the pathname must be a string or null/undefined.')\n    }\n\n    if (url.hostname != null && typeof url.hostname !== 'string') {\n      throw new InvalidArgumentError('Invalid URL hostname: the hostname must be a string or null/undefined.')\n    }\n\n    if (url.origin != null && typeof url.origin !== 'string') {\n      throw new InvalidArgumentError('Invalid URL origin: the origin must be a string or null/undefined.')\n    }\n\n    if (!isHttpOrHttpsPrefixed(url.origin || url.protocol)) {\n      throw new InvalidArgumentError('Invalid URL protocol: the URL must start with `http:` or `https:`.')\n    }\n\n    const port = url.port != null\n      ? url.port\n      : (url.protocol === 'https:' ? 443 : 80)\n    let origin = url.origin != null\n      ? url.origin\n      : `${url.protocol || ''}//${url.hostname || ''}:${port}`\n    let path = url.path != null\n      ? url.path\n      : `${url.pathname || ''}${url.search || ''}`\n\n    if (origin[origin.length - 1] === '/') {\n      origin = origin.slice(0, origin.length - 1)\n    }\n\n    if (path && path[0] !== '/') {\n      path = `/${path}`\n    }\n    // new URL(path, origin) is unsafe when `path` contains an absolute URL\n    // From https://developer.mozilla.org/en-US/docs/Web/API/URL/URL:\n    // If first parameter is a relative URL, second param is required, and will be used as the base URL.\n    // If first parameter is an absolute URL, a given second param will be ignored.\n    return new URL(`${origin}${path}`)\n  }\n\n  if (!isHttpOrHttpsPrefixed(url.origin || url.protocol)) {\n    throw new InvalidArgumentError('Invalid URL protocol: the URL must start with `http:` or `https:`.')\n  }\n\n  return url\n}\n\nfunction parseOrigin (url) {\n  url = parseURL(url)\n\n  if (url.pathname !== '/' || url.search || url.hash) {\n    throw new InvalidArgumentError('invalid url')\n  }\n\n  return url\n}\n\nfunction getHostname (host) {\n  if (host[0] === '[') {\n    const idx = host.indexOf(']')\n\n    assert(idx !== -1)\n    return host.substring(1, idx)\n  }\n\n  const idx = host.indexOf(':')\n  if (idx === -1) return host\n\n  return host.substring(0, idx)\n}\n\n// IP addresses are not valid server names per RFC6066\n// > Currently, the only server names supported are DNS hostnames\nfunction getServerName (host) {\n  if (!host) {\n    return null\n  }\n\n  assert.strictEqual(typeof host, 'string')\n\n  const servername = getHostname(host)\n  if (net.isIP(servername)) {\n    return ''\n  }\n\n  return servername\n}\n\nfunction deepClone (obj) {\n  return JSON.parse(JSON.stringify(obj))\n}\n\nfunction isAsyncIterable (obj) {\n  return !!(obj != null && typeof obj[Symbol.asyncIterator] === 'function')\n}\n\nfunction isIterable (obj) {\n  return !!(obj != null && (typeof obj[Symbol.iterator] === 'function' || typeof obj[Symbol.asyncIterator] === 'function'))\n}\n\nfunction bodyLength (body) {\n  if (body == null) {\n    return 0\n  } else if (isStream(body)) {\n    const state = body._readableState\n    return state && state.objectMode === false && state.ended === true && Number.isFinite(state.length)\n      ? state.length\n      : null\n  } else if (isBlobLike(body)) {\n    return body.size != null ? body.size : null\n  } else if (isBuffer(body)) {\n    return body.byteLength\n  }\n\n  return null\n}\n\nfunction isDestroyed (body) {\n  return body && !!(body.destroyed || body[kDestroyed] || (stream.isDestroyed?.(body)))\n}\n\nfunction destroy (stream, err) {\n  if (stream == null || !isStream(stream) || isDestroyed(stream)) {\n    return\n  }\n\n  if (typeof stream.destroy === 'function') {\n    if (Object.getPrototypeOf(stream).constructor === IncomingMessage) {\n      // See: https://github.com/nodejs/node/pull/38505/files\n      stream.socket = null\n    }\n\n    stream.destroy(err)\n  } else if (err) {\n    queueMicrotask(() => {\n      stream.emit('error', err)\n    })\n  }\n\n  if (stream.destroyed !== true) {\n    stream[kDestroyed] = true\n  }\n}\n\nconst KEEPALIVE_TIMEOUT_EXPR = /timeout=(\\d+)/\nfunction parseKeepAliveTimeout (val) {\n  const m = val.toString().match(KEEPALIVE_TIMEOUT_EXPR)\n  return m ? parseInt(m[1], 10) * 1000 : null\n}\n\n/**\n * Retrieves a header name and returns its lowercase value.\n * @param {string | Buffer} value Header name\n * @returns {string}\n */\nfunction headerNameToString (value) {\n  return typeof value === 'string'\n    ? headerNameLowerCasedRecord[value] ?? value.toLowerCase()\n    : tree.lookup(value) ?? value.toString('latin1').toLowerCase()\n}\n\n/**\n * Receive the buffer as a string and return its lowercase value.\n * @param {Buffer} value Header name\n * @returns {string}\n */\nfunction bufferToLowerCasedHeaderName (value) {\n  return tree.lookup(value) ?? value.toString('latin1').toLowerCase()\n}\n\n/**\n * @param {Record<string, string | string[]> | (Buffer | string | (Buffer | string)[])[]} headers\n * @param {Record<string, string | string[]>} [obj]\n * @returns {Record<string, string | string[]>}\n */\nfunction parseHeaders (headers, obj) {\n  if (obj === undefined) obj = {}\n  for (let i = 0; i < headers.length; i += 2) {\n    const key = headerNameToString(headers[i])\n    let val = obj[key]\n\n    if (val) {\n      if (typeof val === 'string') {\n        val = [val]\n        obj[key] = val\n      }\n      val.push(headers[i + 1].toString('utf8'))\n    } else {\n      const headersValue = headers[i + 1]\n      if (typeof headersValue === 'string') {\n        obj[key] = headersValue\n      } else {\n        obj[key] = Array.isArray(headersValue) ? headersValue.map(x => x.toString('utf8')) : headersValue.toString('utf8')\n      }\n    }\n  }\n\n  // See https://github.com/nodejs/node/pull/46528\n  if ('content-length' in obj && 'content-disposition' in obj) {\n    obj['content-disposition'] = Buffer.from(obj['content-disposition']).toString('latin1')\n  }\n\n  return obj\n}\n\nfunction parseRawHeaders (headers) {\n  const len = headers.length\n  const ret = new Array(len)\n\n  let hasContentLength = false\n  let contentDispositionIdx = -1\n  let key\n  let val\n  let kLen = 0\n\n  for (let n = 0; n < headers.length; n += 2) {\n    key = headers[n]\n    val = headers[n + 1]\n\n    typeof key !== 'string' && (key = key.toString())\n    typeof val !== 'string' && (val = val.toString('utf8'))\n\n    kLen = key.length\n    if (kLen === 14 && key[7] === '-' && (key === 'content-length' || key.toLowerCase() === 'content-length')) {\n      hasContentLength = true\n    } else if (kLen === 19 && key[7] === '-' && (key === 'content-disposition' || key.toLowerCase() === 'content-disposition')) {\n      contentDispositionIdx = n + 1\n    }\n    ret[n] = key\n    ret[n + 1] = val\n  }\n\n  // See https://github.com/nodejs/node/pull/46528\n  if (hasContentLength && contentDispositionIdx !== -1) {\n    ret[contentDispositionIdx] = Buffer.from(ret[contentDispositionIdx]).toString('latin1')\n  }\n\n  return ret\n}\n\nfunction isBuffer (buffer) {\n  // See, https://github.com/mcollina/undici/pull/319\n  return buffer instanceof Uint8Array || Buffer.isBuffer(buffer)\n}\n\nfunction validateHandler (handler, method, upgrade) {\n  if (!handler || typeof handler !== 'object') {\n    throw new InvalidArgumentError('handler must be an object')\n  }\n\n  if (typeof handler.onConnect !== 'function') {\n    throw new InvalidArgumentError('invalid onConnect method')\n  }\n\n  if (typeof handler.onError !== 'function') {\n    throw new InvalidArgumentError('invalid onError method')\n  }\n\n  if (typeof handler.onBodySent !== 'function' && handler.onBodySent !== undefined) {\n    throw new InvalidArgumentError('invalid onBodySent method')\n  }\n\n  if (upgrade || method === 'CONNECT') {\n    if (typeof handler.onUpgrade !== 'function') {\n      throw new InvalidArgumentError('invalid onUpgrade method')\n    }\n  } else {\n    if (typeof handler.onHeaders !== 'function') {\n      throw new InvalidArgumentError('invalid onHeaders method')\n    }\n\n    if (typeof handler.onData !== 'function') {\n      throw new InvalidArgumentError('invalid onData method')\n    }\n\n    if (typeof handler.onComplete !== 'function') {\n      throw new InvalidArgumentError('invalid onComplete method')\n    }\n  }\n}\n\n// A body is disturbed if it has been read from and it cannot\n// be re-used without losing state or data.\nfunction isDisturbed (body) {\n  // TODO (fix): Why is body[kBodyUsed] needed?\n  return !!(body && (stream.isDisturbed(body) || body[kBodyUsed]))\n}\n\nfunction isErrored (body) {\n  return !!(body && stream.isErrored(body))\n}\n\nfunction isReadable (body) {\n  return !!(body && stream.isReadable(body))\n}\n\nfunction getSocketInfo (socket) {\n  return {\n    localAddress: socket.localAddress,\n    localPort: socket.localPort,\n    remoteAddress: socket.remoteAddress,\n    remotePort: socket.remotePort,\n    remoteFamily: socket.remoteFamily,\n    timeout: socket.timeout,\n    bytesWritten: socket.bytesWritten,\n    bytesRead: socket.bytesRead\n  }\n}\n\n/** @type {globalThis['ReadableStream']} */\nfunction ReadableStreamFrom (iterable) {\n  // We cannot use ReadableStream.from here because it does not return a byte stream.\n\n  let iterator\n  return new ReadableStream(\n    {\n      async start () {\n        iterator = iterable[Symbol.asyncIterator]()\n      },\n      async pull (controller) {\n        const { done, value } = await iterator.next()\n        if (done) {\n          queueMicrotask(() => {\n            controller.close()\n            controller.byobRequest?.respond(0)\n          })\n        } else {\n          const buf = Buffer.isBuffer(value) ? value : Buffer.from(value)\n          if (buf.byteLength) {\n            controller.enqueue(new Uint8Array(buf))\n          }\n        }\n        return controller.desiredSize > 0\n      },\n      async cancel (reason) {\n        await iterator.return()\n      },\n      type: 'bytes'\n    }\n  )\n}\n\n// The chunk should be a FormData instance and contains\n// all the required methods.\nfunction isFormDataLike (object) {\n  return (\n    object &&\n    typeof object === 'object' &&\n    typeof object.append === 'function' &&\n    typeof object.delete === 'function' &&\n    typeof object.get === 'function' &&\n    typeof object.getAll === 'function' &&\n    typeof object.has === 'function' &&\n    typeof object.set === 'function' &&\n    object[Symbol.toStringTag] === 'FormData'\n  )\n}\n\nfunction addAbortListener (signal, listener) {\n  if ('addEventListener' in signal) {\n    signal.addEventListener('abort', listener, { once: true })\n    return () => signal.removeEventListener('abort', listener)\n  }\n  signal.addListener('abort', listener)\n  return () => signal.removeListener('abort', listener)\n}\n\nconst hasToWellFormed = typeof String.prototype.toWellFormed === 'function'\nconst hasIsWellFormed = typeof String.prototype.isWellFormed === 'function'\n\n/**\n * @param {string} val\n */\nfunction toUSVString (val) {\n  return hasToWellFormed ? `${val}`.toWellFormed() : nodeUtil.toUSVString(val)\n}\n\n/**\n * @param {string} val\n */\n// TODO: move this to webidl\nfunction isUSVString (val) {\n  return hasIsWellFormed ? `${val}`.isWellFormed() : toUSVString(val) === `${val}`\n}\n\n/**\n * @see https://tools.ietf.org/html/rfc7230#section-3.2.6\n * @param {number} c\n */\nfunction isTokenCharCode (c) {\n  switch (c) {\n    case 0x22:\n    case 0x28:\n    case 0x29:\n    case 0x2c:\n    case 0x2f:\n    case 0x3a:\n    case 0x3b:\n    case 0x3c:\n    case 0x3d:\n    case 0x3e:\n    case 0x3f:\n    case 0x40:\n    case 0x5b:\n    case 0x5c:\n    case 0x5d:\n    case 0x7b:\n    case 0x7d:\n      // DQUOTE and \"(),/:;<=>?@[\\]{}\"\n      return false\n    default:\n      // VCHAR %x21-7E\n      return c >= 0x21 && c <= 0x7e\n  }\n}\n\n/**\n * @param {string} characters\n */\nfunction isValidHTTPToken (characters) {\n  if (characters.length === 0) {\n    return false\n  }\n  for (let i = 0; i < characters.length; ++i) {\n    if (!isTokenCharCode(characters.charCodeAt(i))) {\n      return false\n    }\n  }\n  return true\n}\n\n// headerCharRegex have been lifted from\n// https://github.com/nodejs/node/blob/main/lib/_http_common.js\n\n/**\n * Matches if val contains an invalid field-vchar\n *  field-value    = *( field-content / obs-fold )\n *  field-content  = field-vchar [ 1*( SP / HTAB ) field-vchar ]\n *  field-vchar    = VCHAR / obs-text\n */\nconst headerCharRegex = /[^\\t\\x20-\\x7e\\x80-\\xff]/\n\n/**\n * @param {string} characters\n */\nfunction isValidHeaderValue (characters) {\n  return !headerCharRegex.test(characters)\n}\n\n// Parsed accordingly to RFC 9110\n// https://www.rfc-editor.org/rfc/rfc9110#field.content-range\nfunction parseRangeHeader (range) {\n  if (range == null || range === '') return { start: 0, end: null, size: null }\n\n  const m = range ? range.match(/^bytes (\\d+)-(\\d+)\\/(\\d+)?$/) : null\n  return m\n    ? {\n        start: parseInt(m[1]),\n        end: m[2] ? parseInt(m[2]) : null,\n        size: m[3] ? parseInt(m[3]) : null\n      }\n    : null\n}\n\nfunction addListener (obj, name, listener) {\n  const listeners = (obj[kListeners] ??= [])\n  listeners.push([name, listener])\n  obj.on(name, listener)\n  return obj\n}\n\nfunction removeAllListeners (obj) {\n  for (const [name, listener] of obj[kListeners] ?? []) {\n    obj.removeListener(name, listener)\n  }\n  obj[kListeners] = null\n}\n\nfunction errorRequest (client, request, err) {\n  try {\n    request.onError(err)\n    assert(request.aborted)\n  } catch (err) {\n    client.emit('error', err)\n  }\n}\n\nconst kEnumerableProperty = Object.create(null)\nkEnumerableProperty.enumerable = true\n\nmodule.exports = {\n  kEnumerableProperty,\n  nop,\n  isDisturbed,\n  isErrored,\n  isReadable,\n  toUSVString,\n  isUSVString,\n  isBlobLike,\n  parseOrigin,\n  parseURL,\n  getServerName,\n  isStream,\n  isIterable,\n  isAsyncIterable,\n  isDestroyed,\n  headerNameToString,\n  bufferToLowerCasedHeaderName,\n  addListener,\n  removeAllListeners,\n  errorRequest,\n  parseRawHeaders,\n  parseHeaders,\n  parseKeepAliveTimeout,\n  destroy,\n  bodyLength,\n  deepClone,\n  ReadableStreamFrom,\n  isBuffer,\n  validateHandler,\n  getSocketInfo,\n  isFormDataLike,\n  buildURL,\n  addAbortListener,\n  isValidHTTPToken,\n  isValidHeaderValue,\n  isTokenCharCode,\n  parseRangeHeader,\n  isValidPort,\n  isHttpOrHttpsPrefixed,\n  nodeMajor,\n  nodeMinor,\n  safeHTTPMethods: ['GET', 'HEAD', 'OPTIONS', 'TRACE']\n}\n", "'use strict'\nconst diagnosticsChannel = require('node:diagnostics_channel')\nconst util = require('node:util')\n\nconst undiciDebugLog = util.debuglog('undici')\nconst fetchDebuglog = util.debuglog('fetch')\nconst websocketDebuglog = util.debuglog('websocket')\nlet isClientSet = false\nconst channels = {\n  // Client\n  beforeConnect: diagnosticsChannel.channel('undici:client:beforeConnect'),\n  connected: diagnosticsChannel.channel('undici:client:connected'),\n  connectError: diagnosticsChannel.channel('undici:client:connectError'),\n  sendHeaders: diagnosticsChannel.channel('undici:client:sendHeaders'),\n  // Request\n  create: diagnosticsChannel.channel('undici:request:create'),\n  bodySent: diagnosticsChannel.channel('undici:request:bodySent'),\n  headers: diagnosticsChannel.channel('undici:request:headers'),\n  trailers: diagnosticsChannel.channel('undici:request:trailers'),\n  error: diagnosticsChannel.channel('undici:request:error'),\n  // WebSocket\n  open: diagnosticsChannel.channel('undici:websocket:open'),\n  close: diagnosticsChannel.channel('undici:websocket:close'),\n  socketError: diagnosticsChannel.channel('undici:websocket:socket_error'),\n  ping: diagnosticsChannel.channel('undici:websocket:ping'),\n  pong: diagnosticsChannel.channel('undici:websocket:pong')\n}\n\nif (undiciDebugLog.enabled || fetchDebuglog.enabled) {\n  const debuglog = fetchDebuglog.enabled ? fetchDebuglog : undiciDebugLog\n\n  // Track all Client events\n  diagnosticsChannel.channel('undici:client:beforeConnect').subscribe(evt => {\n    const {\n      connectParams: { version, protocol, port, host }\n    } = evt\n    debuglog(\n      'connecting to %s using %s%s',\n      `${host}${port ? `:${port}` : ''}`,\n      protocol,\n      version\n    )\n  })\n\n  diagnosticsChannel.channel('undici:client:connected').subscribe(evt => {\n    const {\n      connectParams: { version, protocol, port, host }\n    } = evt\n    debuglog(\n      'connected to %s using %s%s',\n      `${host}${port ? `:${port}` : ''}`,\n      protocol,\n      version\n    )\n  })\n\n  diagnosticsChannel.channel('undici:client:connectError').subscribe(evt => {\n    const {\n      connectParams: { version, protocol, port, host },\n      error\n    } = evt\n    debuglog(\n      'connection to %s using %s%s errored - %s',\n      `${host}${port ? `:${port}` : ''}`,\n      protocol,\n      version,\n      error.message\n    )\n  })\n\n  diagnosticsChannel.channel('undici:client:sendHeaders').subscribe(evt => {\n    const {\n      request: { method, path, origin }\n    } = evt\n    debuglog('sending request to %s %s/%s', method, origin, path)\n  })\n\n  // Track Request events\n  diagnosticsChannel.channel('undici:request:headers').subscribe(evt => {\n    const {\n      request: { method, path, origin },\n      response: { statusCode }\n    } = evt\n    debuglog(\n      'received response to %s %s/%s - HTTP %d',\n      method,\n      origin,\n      path,\n      statusCode\n    )\n  })\n\n  diagnosticsChannel.channel('undici:request:trailers').subscribe(evt => {\n    const {\n      request: { method, path, origin }\n    } = evt\n    debuglog('trailers received from %s %s/%s', method, origin, path)\n  })\n\n  diagnosticsChannel.channel('undici:request:error').subscribe(evt => {\n    const {\n      request: { method, path, origin },\n      error\n    } = evt\n    debuglog(\n      'request to %s %s/%s errored - %s',\n      method,\n      origin,\n      path,\n      error.message\n    )\n  })\n\n  isClientSet = true\n}\n\nif (websocketDebuglog.enabled) {\n  if (!isClientSet) {\n    const debuglog = undiciDebugLog.enabled ? undiciDebugLog : websocketDebuglog\n    diagnosticsChannel.channel('undici:client:beforeConnect').subscribe(evt => {\n      const {\n        connectParams: { version, protocol, port, host }\n      } = evt\n      debuglog(\n        'connecting to %s%s using %s%s',\n        host,\n        port ? `:${port}` : '',\n        protocol,\n        version\n      )\n    })\n\n    diagnosticsChannel.channel('undici:client:connected').subscribe(evt => {\n      const {\n        connectParams: { version, protocol, port, host }\n      } = evt\n      debuglog(\n        'connected to %s%s using %s%s',\n        host,\n        port ? `:${port}` : '',\n        protocol,\n        version\n      )\n    })\n\n    diagnosticsChannel.channel('undici:client:connectError').subscribe(evt => {\n      const {\n        connectParams: { version, protocol, port, host },\n        error\n      } = evt\n      debuglog(\n        'connection to %s%s using %s%s errored - %s',\n        host,\n        port ? `:${port}` : '',\n        protocol,\n        version,\n        error.message\n      )\n    })\n\n    diagnosticsChannel.channel('undici:client:sendHeaders').subscribe(evt => {\n      const {\n        request: { method, path, origin }\n      } = evt\n      debuglog('sending request to %s %s/%s', method, origin, path)\n    })\n  }\n\n  // Track all WebSocket events\n  diagnosticsChannel.channel('undici:websocket:open').subscribe(evt => {\n    const {\n      address: { address, port }\n    } = evt\n    websocketDebuglog('connection opened %s%s', address, port ? `:${port}` : '')\n  })\n\n  diagnosticsChannel.channel('undici:websocket:close').subscribe(evt => {\n    const { websocket, code, reason } = evt\n    websocketDebuglog(\n      'closed connection to %s - %s %s',\n      websocket.url,\n      code,\n      reason\n    )\n  })\n\n  diagnosticsChannel.channel('undici:websocket:socket_error').subscribe(err => {\n    websocketDebuglog('connection errored - %s', err.message)\n  })\n\n  diagnosticsChannel.channel('undici:websocket:ping').subscribe(evt => {\n    websocketDebuglog('ping received')\n  })\n\n  diagnosticsChannel.channel('undici:websocket:pong').subscribe(evt => {\n    websocketDebuglog('pong received')\n  })\n}\n\nmodule.exports = {\n  channels\n}\n", "'use strict'\n\nconst {\n  InvalidArgumentError,\n  NotSupportedError\n} = require('./errors')\nconst assert = require('node:assert')\nconst {\n  isValidHTTPToken,\n  isValidHeaderValue,\n  isStream,\n  destroy,\n  isBuffer,\n  isFormDataLike,\n  isIterable,\n  isBlobLike,\n  buildURL,\n  validateHandler,\n  getServerName\n} = require('./util')\nconst { channels } = require('./diagnostics.js')\nconst { headerNameLowerCasedRecord } = require('./constants')\n\n// Verifies that a given path is valid does not contain control chars \\x00 to \\x20\nconst invalidPathRegex = /[^\\u0021-\\u00ff]/\n\nconst kHandler = Symbol('handler')\n\nclass Request {\n  constructor (origin, {\n    path,\n    method,\n    body,\n    headers,\n    query,\n    idempotent,\n    blocking,\n    upgrade,\n    headersTimeout,\n    bodyTimeout,\n    reset,\n    throwOnError,\n    expectContinue,\n    servername\n  }, handler) {\n    if (typeof path !== 'string') {\n      throw new InvalidArgumentError('path must be a string')\n    } else if (\n      path[0] !== '/' &&\n      !(path.startsWith('http://') || path.startsWith('https://')) &&\n      method !== 'CONNECT'\n    ) {\n      throw new InvalidArgumentError('path must be an absolute URL or start with a slash')\n    } else if (invalidPathRegex.exec(path) !== null) {\n      throw new InvalidArgumentError('invalid request path')\n    }\n\n    if (typeof method !== 'string') {\n      throw new InvalidArgumentError('method must be a string')\n    } else if (!isValidHTTPToken(method)) {\n      throw new InvalidArgumentError('invalid request method')\n    }\n\n    if (upgrade && typeof upgrade !== 'string') {\n      throw new InvalidArgumentError('upgrade must be a string')\n    }\n\n    if (headersTimeout != null && (!Number.isFinite(headersTimeout) || headersTimeout < 0)) {\n      throw new InvalidArgumentError('invalid headersTimeout')\n    }\n\n    if (bodyTimeout != null && (!Number.isFinite(bodyTimeout) || bodyTimeout < 0)) {\n      throw new InvalidArgumentError('invalid bodyTimeout')\n    }\n\n    if (reset != null && typeof reset !== 'boolean') {\n      throw new InvalidArgumentError('invalid reset')\n    }\n\n    if (expectContinue != null && typeof expectContinue !== 'boolean') {\n      throw new InvalidArgumentError('invalid expectContinue')\n    }\n\n    this.headersTimeout = headersTimeout\n\n    this.bodyTimeout = bodyTimeout\n\n    this.throwOnError = throwOnError === true\n\n    this.method = method\n\n    this.abort = null\n\n    if (body == null) {\n      this.body = null\n    } else if (isStream(body)) {\n      this.body = body\n\n      const rState = this.body._readableState\n      if (!rState || !rState.autoDestroy) {\n        this.endHandler = function autoDestroy () {\n          destroy(this)\n        }\n        this.body.on('end', this.endHandler)\n      }\n\n      this.errorHandler = err => {\n        if (this.abort) {\n          this.abort(err)\n        } else {\n          this.error = err\n        }\n      }\n      this.body.on('error', this.errorHandler)\n    } else if (isBuffer(body)) {\n      this.body = body.byteLength ? body : null\n    } else if (ArrayBuffer.isView(body)) {\n      this.body = body.buffer.byteLength ? Buffer.from(body.buffer, body.byteOffset, body.byteLength) : null\n    } else if (body instanceof ArrayBuffer) {\n      this.body = body.byteLength ? Buffer.from(body) : null\n    } else if (typeof body === 'string') {\n      this.body = body.length ? Buffer.from(body) : null\n    } else if (isFormDataLike(body) || isIterable(body) || isBlobLike(body)) {\n      this.body = body\n    } else {\n      throw new InvalidArgumentError('body must be a string, a Buffer, a Readable stream, an iterable, or an async iterable')\n    }\n\n    this.completed = false\n\n    this.aborted = false\n\n    this.upgrade = upgrade || null\n\n    this.path = query ? buildURL(path, query) : path\n\n    this.origin = origin\n\n    this.idempotent = idempotent == null\n      ? method === 'HEAD' || method === 'GET'\n      : idempotent\n\n    this.blocking = blocking == null ? false : blocking\n\n    this.reset = reset == null ? null : reset\n\n    this.host = null\n\n    this.contentLength = null\n\n    this.contentType = null\n\n    this.headers = []\n\n    // Only for H2\n    this.expectContinue = expectContinue != null ? expectContinue : false\n\n    if (Array.isArray(headers)) {\n      if (headers.length % 2 !== 0) {\n        throw new InvalidArgumentError('headers array must be even')\n      }\n      for (let i = 0; i < headers.length; i += 2) {\n        processHeader(this, headers[i], headers[i + 1])\n      }\n    } else if (headers && typeof headers === 'object') {\n      if (headers[Symbol.iterator]) {\n        for (const header of headers) {\n          if (!Array.isArray(header) || header.length !== 2) {\n            throw new InvalidArgumentError('headers must be in key-value pair format')\n          }\n          processHeader(this, header[0], header[1])\n        }\n      } else {\n        const keys = Object.keys(headers)\n        for (let i = 0; i < keys.length; ++i) {\n          processHeader(this, keys[i], headers[keys[i]])\n        }\n      }\n    } else if (headers != null) {\n      throw new InvalidArgumentError('headers must be an object or an array')\n    }\n\n    validateHandler(handler, method, upgrade)\n\n    this.servername = servername || getServerName(this.host)\n\n    this[kHandler] = handler\n\n    if (channels.create.hasSubscribers) {\n      channels.create.publish({ request: this })\n    }\n  }\n\n  onBodySent (chunk) {\n    if (this[kHandler].onBodySent) {\n      try {\n        return this[kHandler].onBodySent(chunk)\n      } catch (err) {\n        this.abort(err)\n      }\n    }\n  }\n\n  onRequestSent () {\n    if (channels.bodySent.hasSubscribers) {\n      channels.bodySent.publish({ request: this })\n    }\n\n    if (this[kHandler].onRequestSent) {\n      try {\n        return this[kHandler].onRequestSent()\n      } catch (err) {\n        this.abort(err)\n      }\n    }\n  }\n\n  onConnect (abort) {\n    assert(!this.aborted)\n    assert(!this.completed)\n\n    if (this.error) {\n      abort(this.error)\n    } else {\n      this.abort = abort\n      return this[kHandler].onConnect(abort)\n    }\n  }\n\n  onResponseStarted () {\n    return this[kHandler].onResponseStarted?.()\n  }\n\n  onHeaders (statusCode, headers, resume, statusText) {\n    assert(!this.aborted)\n    assert(!this.completed)\n\n    if (channels.headers.hasSubscribers) {\n      channels.headers.publish({ request: this, response: { statusCode, headers, statusText } })\n    }\n\n    try {\n      return this[kHandler].onHeaders(statusCode, headers, resume, statusText)\n    } catch (err) {\n      this.abort(err)\n    }\n  }\n\n  onData (chunk) {\n    assert(!this.aborted)\n    assert(!this.completed)\n\n    try {\n      return this[kHandler].onData(chunk)\n    } catch (err) {\n      this.abort(err)\n      return false\n    }\n  }\n\n  onUpgrade (statusCode, headers, socket) {\n    assert(!this.aborted)\n    assert(!this.completed)\n\n    return this[kHandler].onUpgrade(statusCode, headers, socket)\n  }\n\n  onComplete (trailers) {\n    this.onFinally()\n\n    assert(!this.aborted)\n\n    this.completed = true\n    if (channels.trailers.hasSubscribers) {\n      channels.trailers.publish({ request: this, trailers })\n    }\n\n    try {\n      return this[kHandler].onComplete(trailers)\n    } catch (err) {\n      // TODO (fix): This might be a bad idea?\n      this.onError(err)\n    }\n  }\n\n  onError (error) {\n    this.onFinally()\n\n    if (channels.error.hasSubscribers) {\n      channels.error.publish({ request: this, error })\n    }\n\n    if (this.aborted) {\n      return\n    }\n    this.aborted = true\n\n    return this[kHandler].onError(error)\n  }\n\n  onFinally () {\n    if (this.errorHandler) {\n      this.body.off('error', this.errorHandler)\n      this.errorHandler = null\n    }\n\n    if (this.endHandler) {\n      this.body.off('end', this.endHandler)\n      this.endHandler = null\n    }\n  }\n\n  addHeader (key, value) {\n    processHeader(this, key, value)\n    return this\n  }\n}\n\nfunction processHeader (request, key, val) {\n  if (val && (typeof val === 'object' && !Array.isArray(val))) {\n    throw new InvalidArgumentError(`invalid ${key} header`)\n  } else if (val === undefined) {\n    return\n  }\n\n  let headerName = headerNameLowerCasedRecord[key]\n\n  if (headerName === undefined) {\n    headerName = key.toLowerCase()\n    if (headerNameLowerCasedRecord[headerName] === undefined && !isValidHTTPToken(headerName)) {\n      throw new InvalidArgumentError('invalid header key')\n    }\n  }\n\n  if (Array.isArray(val)) {\n    const arr = []\n    for (let i = 0; i < val.length; i++) {\n      if (typeof val[i] === 'string') {\n        if (!isValidHeaderValue(val[i])) {\n          throw new InvalidArgumentError(`invalid ${key} header`)\n        }\n        arr.push(val[i])\n      } else if (val[i] === null) {\n        arr.push('')\n      } else if (typeof val[i] === 'object') {\n        throw new InvalidArgumentError(`invalid ${key} header`)\n      } else {\n        arr.push(`${val[i]}`)\n      }\n    }\n    val = arr\n  } else if (typeof val === 'string') {\n    if (!isValidHeaderValue(val)) {\n      throw new InvalidArgumentError(`invalid ${key} header`)\n    }\n  } else if (val === null) {\n    val = ''\n  } else {\n    val = `${val}`\n  }\n\n  if (request.host === null && headerName === 'host') {\n    if (typeof val !== 'string') {\n      throw new InvalidArgumentError('invalid host header')\n    }\n    // Consumed by Client\n    request.host = val\n  } else if (request.contentLength === null && headerName === 'content-length') {\n    request.contentLength = parseInt(val, 10)\n    if (!Number.isFinite(request.contentLength)) {\n      throw new InvalidArgumentError('invalid content-length header')\n    }\n  } else if (request.contentType === null && headerName === 'content-type') {\n    request.contentType = val\n    request.headers.push(key, val)\n  } else if (headerName === 'transfer-encoding' || headerName === 'keep-alive' || headerName === 'upgrade') {\n    throw new InvalidArgumentError(`invalid ${headerName} header`)\n  } else if (headerName === 'connection') {\n    const value = typeof val === 'string' ? val.toLowerCase() : null\n    if (value !== 'close' && value !== 'keep-alive') {\n      throw new InvalidArgumentError('invalid connection header')\n    }\n\n    if (value === 'close') {\n      request.reset = true\n    }\n  } else if (headerName === 'expect') {\n    throw new NotSupportedError('expect header not supported')\n  } else {\n    request.headers.push(key, val)\n  }\n}\n\nmodule.exports = Request\n", "'use strict'\nconst EventEmitter = require('node:events')\n\nclass Dispatcher extends EventEmitter {\n  dispatch () {\n    throw new Error('not implemented')\n  }\n\n  close () {\n    throw new Error('not implemented')\n  }\n\n  destroy () {\n    throw new Error('not implemented')\n  }\n\n  compose (...args) {\n    // So we handle [interceptor1, interceptor2] or interceptor1, interceptor2, ...\n    const interceptors = Array.isArray(args[0]) ? args[0] : args\n    let dispatch = this.dispatch.bind(this)\n\n    for (const interceptor of interceptors) {\n      if (interceptor == null) {\n        continue\n      }\n\n      if (typeof interceptor !== 'function') {\n        throw new TypeError(`invalid interceptor, expected function received ${typeof interceptor}`)\n      }\n\n      dispatch = interceptor(dispatch)\n\n      if (dispatch == null || typeof dispatch !== 'function' || dispatch.length !== 2) {\n        throw new TypeError('invalid interceptor')\n      }\n    }\n\n    return new ComposedDispatcher(this, dispatch)\n  }\n}\n\nclass ComposedDispatcher extends Dispatcher {\n  #dispatcher = null\n  #dispatch = null\n\n  constructor (dispatcher, dispatch) {\n    super()\n    this.#dispatcher = dispatcher\n    this.#dispatch = dispatch\n  }\n\n  dispatch (...args) {\n    this.#dispatch(...args)\n  }\n\n  close (...args) {\n    return this.#dispatcher.close(...args)\n  }\n\n  destroy (...args) {\n    return this.#dispatcher.destroy(...args)\n  }\n}\n\nmodule.exports = Dispatcher\n", "'use strict'\n\nconst Dispatcher = require('./dispatcher')\nconst {\n  ClientDestroyedError,\n  ClientClosedError,\n  InvalidArgumentError\n} = require('../core/errors')\nconst { kDestroy, kClose, kClosed, kDestroyed, kDispatch, kInterceptors } = require('../core/symbols')\n\nconst kOnDestroyed = Symbol('onDestroyed')\nconst kOnClosed = Symbol('onClosed')\nconst kInterceptedDispatch = Symbol('Intercepted Dispatch')\n\nclass DispatcherBase extends Dispatcher {\n  constructor () {\n    super()\n\n    this[kDestroyed] = false\n    this[kOnDestroyed] = null\n    this[kClosed] = false\n    this[kOnClosed] = []\n  }\n\n  get destroyed () {\n    return this[kDestroyed]\n  }\n\n  get closed () {\n    return this[kClosed]\n  }\n\n  get interceptors () {\n    return this[kInterceptors]\n  }\n\n  set interceptors (newInterceptors) {\n    if (newInterceptors) {\n      for (let i = newInterceptors.length - 1; i >= 0; i--) {\n        const interceptor = this[kInterceptors][i]\n        if (typeof interceptor !== 'function') {\n          throw new InvalidArgumentError('interceptor must be an function')\n        }\n      }\n    }\n\n    this[kInterceptors] = newInterceptors\n  }\n\n  close (callback) {\n    if (callback === undefined) {\n      return new Promise((resolve, reject) => {\n        this.close((err, data) => {\n          return err ? reject(err) : resolve(data)\n        })\n      })\n    }\n\n    if (typeof callback !== 'function') {\n      throw new InvalidArgumentError('invalid callback')\n    }\n\n    if (this[kDestroyed]) {\n      queueMicrotask(() => callback(new ClientDestroyedError(), null))\n      return\n    }\n\n    if (this[kClosed]) {\n      if (this[kOnClosed]) {\n        this[kOnClosed].push(callback)\n      } else {\n        queueMicrotask(() => callback(null, null))\n      }\n      return\n    }\n\n    this[kClosed] = true\n    this[kOnClosed].push(callback)\n\n    const onClosed = () => {\n      const callbacks = this[kOnClosed]\n      this[kOnClosed] = null\n      for (let i = 0; i < callbacks.length; i++) {\n        callbacks[i](null, null)\n      }\n    }\n\n    // Should not error.\n    this[kClose]()\n      .then(() => this.destroy())\n      .then(() => {\n        queueMicrotask(onClosed)\n      })\n  }\n\n  destroy (err, callback) {\n    if (typeof err === 'function') {\n      callback = err\n      err = null\n    }\n\n    if (callback === undefined) {\n      return new Promise((resolve, reject) => {\n        this.destroy(err, (err, data) => {\n          return err ? /* istanbul ignore next: should never error */ reject(err) : resolve(data)\n        })\n      })\n    }\n\n    if (typeof callback !== 'function') {\n      throw new InvalidArgumentError('invalid callback')\n    }\n\n    if (this[kDestroyed]) {\n      if (this[kOnDestroyed]) {\n        this[kOnDestroyed].push(callback)\n      } else {\n        queueMicrotask(() => callback(null, null))\n      }\n      return\n    }\n\n    if (!err) {\n      err = new ClientDestroyedError()\n    }\n\n    this[kDestroyed] = true\n    this[kOnDestroyed] = this[kOnDestroyed] || []\n    this[kOnDestroyed].push(callback)\n\n    const onDestroyed = () => {\n      const callbacks = this[kOnDestroyed]\n      this[kOnDestroyed] = null\n      for (let i = 0; i < callbacks.length; i++) {\n        callbacks[i](null, null)\n      }\n    }\n\n    // Should not error.\n    this[kDestroy](err).then(() => {\n      queueMicrotask(onDestroyed)\n    })\n  }\n\n  [kInterceptedDispatch] (opts, handler) {\n    if (!this[kInterceptors] || this[kInterceptors].length === 0) {\n      this[kInterceptedDispatch] = this[kDispatch]\n      return this[kDispatch](opts, handler)\n    }\n\n    let dispatch = this[kDispatch].bind(this)\n    for (let i = this[kInterceptors].length - 1; i >= 0; i--) {\n      dispatch = this[kInterceptors][i](dispatch)\n    }\n    this[kInterceptedDispatch] = dispatch\n    return dispatch(opts, handler)\n  }\n\n  dispatch (opts, handler) {\n    if (!handler || typeof handler !== 'object') {\n      throw new InvalidArgumentError('handler must be an object')\n    }\n\n    try {\n      if (!opts || typeof opts !== 'object') {\n        throw new InvalidArgumentError('opts must be an object.')\n      }\n\n      if (this[kDestroyed] || this[kOnDestroyed]) {\n        throw new ClientDestroyedError()\n      }\n\n      if (this[kClosed]) {\n        throw new ClientClosedError()\n      }\n\n      return this[kInterceptedDispatch](opts, handler)\n    } catch (err) {\n      if (typeof handler.onError !== 'function') {\n        throw new InvalidArgumentError('invalid onError method')\n      }\n\n      handler.onError(err)\n\n      return false\n    }\n  }\n}\n\nmodule.exports = DispatcherBase\n", "'use strict'\n\nconst net = require('node:net')\nconst assert = require('node:assert')\nconst util = require('./util')\nconst { InvalidArgumentError, ConnectTimeoutError } = require('./errors')\n\nlet tls // include tls conditionally since it is not always available\n\n// TODO: session re-use does not wait for the first\n// connection to resolve the session and might therefore\n// resolve the same servername multiple times even when\n// re-use is enabled.\n\nlet SessionCache\n// FIXME: remove workaround when the Node bug is fixed\n// https://github.com/nodejs/node/issues/49344#issuecomment-1741776308\nif (global.FinalizationRegistry && !(process.env.NODE_V8_COVERAGE || process.env.UNDICI_NO_FG)) {\n  SessionCache = class WeakSessionCache {\n    constructor (maxCachedSessions) {\n      this._maxCachedSessions = maxCachedSessions\n      this._sessionCache = new Map()\n      this._sessionRegistry = new global.FinalizationRegistry((key) => {\n        if (this._sessionCache.size < this._maxCachedSessions) {\n          return\n        }\n\n        const ref = this._sessionCache.get(key)\n        if (ref !== undefined && ref.deref() === undefined) {\n          this._sessionCache.delete(key)\n        }\n      })\n    }\n\n    get (sessionKey) {\n      const ref = this._sessionCache.get(sessionKey)\n      return ref ? ref.deref() : null\n    }\n\n    set (sessionKey, session) {\n      if (this._maxCachedSessions === 0) {\n        return\n      }\n\n      this._sessionCache.set(sessionKey, new WeakRef(session))\n      this._sessionRegistry.register(session, sessionKey)\n    }\n  }\n} else {\n  SessionCache = class SimpleSessionCache {\n    constructor (maxCachedSessions) {\n      this._maxCachedSessions = maxCachedSessions\n      this._sessionCache = new Map()\n    }\n\n    get (sessionKey) {\n      return this._sessionCache.get(sessionKey)\n    }\n\n    set (sessionKey, session) {\n      if (this._maxCachedSessions === 0) {\n        return\n      }\n\n      if (this._sessionCache.size >= this._maxCachedSessions) {\n        // remove the oldest session\n        const { value: oldestKey } = this._sessionCache.keys().next()\n        this._sessionCache.delete(oldestKey)\n      }\n\n      this._sessionCache.set(sessionKey, session)\n    }\n  }\n}\n\nfunction buildConnector ({ allowH2, maxCachedSessions, socketPath, timeout, ...opts }) {\n  if (maxCachedSessions != null && (!Number.isInteger(maxCachedSessions) || maxCachedSessions < 0)) {\n    throw new InvalidArgumentError('maxCachedSessions must be a positive integer or zero')\n  }\n\n  const options = { path: socketPath, ...opts }\n  const sessionCache = new SessionCache(maxCachedSessions == null ? 100 : maxCachedSessions)\n  timeout = timeout == null ? 10e3 : timeout\n  allowH2 = allowH2 != null ? allowH2 : false\n  return function connect ({ hostname, host, protocol, port, servername, localAddress, httpSocket }, callback) {\n    let socket\n    if (protocol === 'https:') {\n      if (!tls) {\n        tls = require('node:tls')\n      }\n      servername = servername || options.servername || util.getServerName(host) || null\n\n      const sessionKey = servername || hostname\n      const session = sessionCache.get(sessionKey) || null\n\n      assert(sessionKey)\n\n      socket = tls.connect({\n        highWaterMark: 16384, // TLS in node can't have bigger HWM anyway...\n        ...options,\n        servername,\n        session,\n        localAddress,\n        // TODO(HTTP/2): Add support for h2c\n        ALPNProtocols: allowH2 ? ['http/1.1', 'h2'] : ['http/1.1'],\n        socket: httpSocket, // upgrade socket connection\n        port: port || 443,\n        host: hostname\n      })\n\n      socket\n        .on('session', function (session) {\n          // TODO (fix): Can a session become invalid once established? Don't think so?\n          sessionCache.set(sessionKey, session)\n        })\n    } else {\n      assert(!httpSocket, 'httpSocket can only be sent on TLS update')\n      socket = net.connect({\n        highWaterMark: 64 * 1024, // Same as nodejs fs streams.\n        ...options,\n        localAddress,\n        port: port || 80,\n        host: hostname\n      })\n    }\n\n    // Set TCP keep alive options on the socket here instead of in connect() for the case of assigning the socket\n    if (options.keepAlive == null || options.keepAlive) {\n      const keepAliveInitialDelay = options.keepAliveInitialDelay === undefined ? 60e3 : options.keepAliveInitialDelay\n      socket.setKeepAlive(true, keepAliveInitialDelay)\n    }\n\n    const cancelTimeout = setupTimeout(() => onConnectTimeout(socket), timeout)\n\n    socket\n      .setNoDelay(true)\n      .once(protocol === 'https:' ? 'secureConnect' : 'connect', function () {\n        cancelTimeout()\n\n        if (callback) {\n          const cb = callback\n          callback = null\n          cb(null, this)\n        }\n      })\n      .on('error', function (err) {\n        cancelTimeout()\n\n        if (callback) {\n          const cb = callback\n          callback = null\n          cb(err)\n        }\n      })\n\n    return socket\n  }\n}\n\nfunction setupTimeout (onConnectTimeout, timeout) {\n  if (!timeout) {\n    return () => {}\n  }\n\n  let s1 = null\n  let s2 = null\n  const timeoutId = setTimeout(() => {\n    // setImmediate is added to make sure that we prioritize socket error events over timeouts\n    s1 = setImmediate(() => {\n      if (process.platform === 'win32') {\n        // Windows needs an extra setImmediate probably due to implementation differences in the socket logic\n        s2 = setImmediate(() => onConnectTimeout())\n      } else {\n        onConnectTimeout()\n      }\n    })\n  }, timeout)\n  return () => {\n    clearTimeout(timeoutId)\n    clearImmediate(s1)\n    clearImmediate(s2)\n  }\n}\n\nfunction onConnectTimeout (socket) {\n  let message = 'Connect Timeout Error'\n  if (Array.isArray(socket.autoSelectFamilyAttemptedAddresses)) {\n    message += ` (attempted addresses: ${socket.autoSelectFamilyAttemptedAddresses.join(', ')})`\n  }\n  util.destroy(socket, new ConnectTimeoutError(message))\n}\n\nmodule.exports = buildConnector\n", "'use strict'\n\nconst TICK_MS = 499\n\nlet fastNow = Date.now()\nlet fastNowTimeout\n\nconst fastTimers = []\n\nfunction onTimeout () {\n  fastNow = Date.now()\n\n  let len = fastTimers.length\n  let idx = 0\n  while (idx < len) {\n    const timer = fastTimers[idx]\n\n    if (timer.state === 0) {\n      timer.state = fastNow + timer.delay - TICK_MS\n    } else if (timer.state > 0 && fastNow >= timer.state) {\n      timer.state = -1\n      timer.callback(timer.opaque)\n    }\n\n    if (timer.state === -1) {\n      timer.state = -2\n      if (idx !== len - 1) {\n        fastTimers[idx] = fastTimers.pop()\n      } else {\n        fastTimers.pop()\n      }\n      len -= 1\n    } else {\n      idx += 1\n    }\n  }\n\n  if (fastTimers.length > 0) {\n    refreshTimeout()\n  }\n}\n\nfunction refreshTimeout () {\n  if (fastNowTimeout?.refresh) {\n    fastNowTimeout.refresh()\n  } else {\n    clearTimeout(fastNowTimeout)\n    fastNowTimeout = setTimeout(onTimeout, TICK_MS)\n    if (fastNowTimeout.unref) {\n      fastNowTimeout.unref()\n    }\n  }\n}\n\nclass Timeout {\n  constructor (callback, delay, opaque) {\n    this.callback = callback\n    this.delay = delay\n    this.opaque = opaque\n\n    //  -2 not in timer list\n    //  -1 in timer list but inactive\n    //   0 in timer list waiting for time\n    // > 0 in timer list waiting for time to expire\n    this.state = -2\n\n    this.refresh()\n  }\n\n  refresh () {\n    if (this.state === -2) {\n      fastTimers.push(this)\n      if (!fastNowTimeout || fastTimers.length === 1) {\n        refreshTimeout()\n      }\n    }\n\n    this.state = 0\n  }\n\n  clear () {\n    this.state = -1\n  }\n}\n\nmodule.exports = {\n  setTimeout (callback, delay, opaque) {\n    return delay <= 1e3\n      ? setTimeout(callback, delay, opaque)\n      : new Timeout(callback, delay, opaque)\n  },\n  clearTimeout (timeout) {\n    if (timeout instanceof Timeout) {\n      timeout.clear()\n    } else {\n      clearTimeout(timeout)\n    }\n  }\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.enumToMap = void 0;\nfunction enumToMap(obj) {\n    const res = {};\n    Object.keys(obj).forEach((key) => {\n        const value = obj[key];\n        if (typeof value === 'number') {\n            res[key] = value;\n        }\n    });\n    return res;\n}\nexports.enumToMap = enumToMap;\n//# sourceMappingURL=utils.js.map", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SPECIAL_HEADERS = exports.HEADER_STATE = exports.MINOR = exports.MAJOR = exports.CONNECTION_TOKEN_CHARS = exports.HEADER_CHARS = exports.TOKEN = exports.STRICT_TOKEN = exports.HEX = exports.URL_CHAR = exports.STRICT_URL_CHAR = exports.USERINFO_CHARS = exports.MARK = exports.ALPHANUM = exports.NUM = exports.HEX_MAP = exports.NUM_MAP = exports.ALPHA = exports.FINISH = exports.H_METHOD_MAP = exports.METHOD_MAP = exports.METHODS_RTSP = exports.METHODS_ICE = exports.METHODS_HTTP = exports.METHODS = exports.LENIENT_FLAGS = exports.FLAGS = exports.TYPE = exports.ERROR = void 0;\nconst utils_1 = require(\"./utils\");\n// C headers\nvar ERROR;\n(function (ERROR) {\n    ERROR[ERROR[\"OK\"] = 0] = \"OK\";\n    ERROR[ERROR[\"INTERNAL\"] = 1] = \"INTERNAL\";\n    ERROR[ERROR[\"STRICT\"] = 2] = \"STRICT\";\n    ERROR[ERROR[\"LF_EXPECTED\"] = 3] = \"LF_EXPECTED\";\n    ERROR[ERROR[\"UNEXPECTED_CONTENT_LENGTH\"] = 4] = \"UNEXPECTED_CONTENT_LENGTH\";\n    ERROR[ERROR[\"CLOSED_CONNECTION\"] = 5] = \"CLOSED_CONNECTION\";\n    ERROR[ERROR[\"INVALID_METHOD\"] = 6] = \"INVALID_METHOD\";\n    ERROR[ERROR[\"INVALID_URL\"] = 7] = \"INVALID_URL\";\n    ERROR[ERROR[\"INVALID_CONSTANT\"] = 8] = \"INVALID_CONSTANT\";\n    ERROR[ERROR[\"INVALID_VERSION\"] = 9] = \"INVALID_VERSION\";\n    ERROR[ERROR[\"INVALID_HEADER_TOKEN\"] = 10] = \"INVALID_HEADER_TOKEN\";\n    ERROR[ERROR[\"INVALID_CONTENT_LENGTH\"] = 11] = \"INVALID_CONTENT_LENGTH\";\n    ERROR[ERROR[\"INVALID_CHUNK_SIZE\"] = 12] = \"INVALID_CHUNK_SIZE\";\n    ERROR[ERROR[\"INVALID_STATUS\"] = 13] = \"INVALID_STATUS\";\n    ERROR[ERROR[\"INVALID_EOF_STATE\"] = 14] = \"INVALID_EOF_STATE\";\n    ERROR[ERROR[\"INVALID_TRANSFER_ENCODING\"] = 15] = \"INVALID_TRANSFER_ENCODING\";\n    ERROR[ERROR[\"CB_MESSAGE_BEGIN\"] = 16] = \"CB_MESSAGE_BEGIN\";\n    ERROR[ERROR[\"CB_HEADERS_COMPLETE\"] = 17] = \"CB_HEADERS_COMPLETE\";\n    ERROR[ERROR[\"CB_MESSAGE_COMPLETE\"] = 18] = \"CB_MESSAGE_COMPLETE\";\n    ERROR[ERROR[\"CB_CHUNK_HEADER\"] = 19] = \"CB_CHUNK_HEADER\";\n    ERROR[ERROR[\"CB_CHUNK_COMPLETE\"] = 20] = \"CB_CHUNK_COMPLETE\";\n    ERROR[ERROR[\"PAUSED\"] = 21] = \"PAUSED\";\n    ERROR[ERROR[\"PAUSED_UPGRADE\"] = 22] = \"PAUSED_UPGRADE\";\n    ERROR[ERROR[\"PAUSED_H2_UPGRADE\"] = 23] = \"PAUSED_H2_UPGRADE\";\n    ERROR[ERROR[\"USER\"] = 24] = \"USER\";\n})(ERROR = exports.ERROR || (exports.ERROR = {}));\nvar TYPE;\n(function (TYPE) {\n    TYPE[TYPE[\"BOTH\"] = 0] = \"BOTH\";\n    TYPE[TYPE[\"REQUEST\"] = 1] = \"REQUEST\";\n    TYPE[TYPE[\"RESPONSE\"] = 2] = \"RESPONSE\";\n})(TYPE = exports.TYPE || (exports.TYPE = {}));\nvar FLAGS;\n(function (FLAGS) {\n    FLAGS[FLAGS[\"CONNECTION_KEEP_ALIVE\"] = 1] = \"CONNECTION_KEEP_ALIVE\";\n    FLAGS[FLAGS[\"CONNECTION_CLOSE\"] = 2] = \"CONNECTION_CLOSE\";\n    FLAGS[FLAGS[\"CONNECTION_UPGRADE\"] = 4] = \"CONNECTION_UPGRADE\";\n    FLAGS[FLAGS[\"CHUNKED\"] = 8] = \"CHUNKED\";\n    FLAGS[FLAGS[\"UPGRADE\"] = 16] = \"UPGRADE\";\n    FLAGS[FLAGS[\"CONTENT_LENGTH\"] = 32] = \"CONTENT_LENGTH\";\n    FLAGS[FLAGS[\"SKIPBODY\"] = 64] = \"SKIPBODY\";\n    FLAGS[FLAGS[\"TRAILING\"] = 128] = \"TRAILING\";\n    // 1 << 8 is unused\n    FLAGS[FLAGS[\"TRANSFER_ENCODING\"] = 512] = \"TRANSFER_ENCODING\";\n})(FLAGS = exports.FLAGS || (exports.FLAGS = {}));\nvar LENIENT_FLAGS;\n(function (LENIENT_FLAGS) {\n    LENIENT_FLAGS[LENIENT_FLAGS[\"HEADERS\"] = 1] = \"HEADERS\";\n    LENIENT_FLAGS[LENIENT_FLAGS[\"CHUNKED_LENGTH\"] = 2] = \"CHUNKED_LENGTH\";\n    LENIENT_FLAGS[LENIENT_FLAGS[\"KEEP_ALIVE\"] = 4] = \"KEEP_ALIVE\";\n})(LENIENT_FLAGS = exports.LENIENT_FLAGS || (exports.LENIENT_FLAGS = {}));\nvar METHODS;\n(function (METHODS) {\n    METHODS[METHODS[\"DELETE\"] = 0] = \"DELETE\";\n    METHODS[METHODS[\"GET\"] = 1] = \"GET\";\n    METHODS[METHODS[\"HEAD\"] = 2] = \"HEAD\";\n    METHODS[METHODS[\"POST\"] = 3] = \"POST\";\n    METHODS[METHODS[\"PUT\"] = 4] = \"PUT\";\n    /* pathological */\n    METHODS[METHODS[\"CONNECT\"] = 5] = \"CONNECT\";\n    METHODS[METHODS[\"OPTIONS\"] = 6] = \"OPTIONS\";\n    METHODS[METHODS[\"TRACE\"] = 7] = \"TRACE\";\n    /* WebDAV */\n    METHODS[METHODS[\"COPY\"] = 8] = \"COPY\";\n    METHODS[METHODS[\"LOCK\"] = 9] = \"LOCK\";\n    METHODS[METHODS[\"MKCOL\"] = 10] = \"MKCOL\";\n    METHODS[METHODS[\"MOVE\"] = 11] = \"MOVE\";\n    METHODS[METHODS[\"PROPFIND\"] = 12] = \"PROPFIND\";\n    METHODS[METHODS[\"PROPPATCH\"] = 13] = \"PROPPATCH\";\n    METHODS[METHODS[\"SEARCH\"] = 14] = \"SEARCH\";\n    METHODS[METHODS[\"UNLOCK\"] = 15] = \"UNLOCK\";\n    METHODS[METHODS[\"BIND\"] = 16] = \"BIND\";\n    METHODS[METHODS[\"REBIND\"] = 17] = \"REBIND\";\n    METHODS[METHODS[\"UNBIND\"] = 18] = \"UNBIND\";\n    METHODS[METHODS[\"ACL\"] = 19] = \"ACL\";\n    /* subversion */\n    METHODS[METHODS[\"REPORT\"] = 20] = \"REPORT\";\n    METHODS[METHODS[\"MKACTIVITY\"] = 21] = \"MKACTIVITY\";\n    METHODS[METHODS[\"CHECKOUT\"] = 22] = \"CHECKOUT\";\n    METHODS[METHODS[\"MERGE\"] = 23] = \"MERGE\";\n    /* upnp */\n    METHODS[METHODS[\"M-SEARCH\"] = 24] = \"M-SEARCH\";\n    METHODS[METHODS[\"NOTIFY\"] = 25] = \"NOTIFY\";\n    METHODS[METHODS[\"SUBSCRIBE\"] = 26] = \"SUBSCRIBE\";\n    METHODS[METHODS[\"UNSUBSCRIBE\"] = 27] = \"UNSUBSCRIBE\";\n    /* RFC-5789 */\n    METHODS[METHODS[\"PATCH\"] = 28] = \"PATCH\";\n    METHODS[METHODS[\"PURGE\"] = 29] = \"PURGE\";\n    /* CalDAV */\n    METHODS[METHODS[\"MKCALENDAR\"] = 30] = \"MKCALENDAR\";\n    /* RFC-2068, section 19.6.1.2 */\n    METHODS[METHODS[\"LINK\"] = 31] = \"LINK\";\n    METHODS[METHODS[\"UNLINK\"] = 32] = \"UNLINK\";\n    /* icecast */\n    METHODS[METHODS[\"SOURCE\"] = 33] = \"SOURCE\";\n    /* RFC-7540, section 11.6 */\n    METHODS[METHODS[\"PRI\"] = 34] = \"PRI\";\n    /* RFC-2326 RTSP */\n    METHODS[METHODS[\"DESCRIBE\"] = 35] = \"DESCRIBE\";\n    METHODS[METHODS[\"ANNOUNCE\"] = 36] = \"ANNOUNCE\";\n    METHODS[METHODS[\"SETUP\"] = 37] = \"SETUP\";\n    METHODS[METHODS[\"PLAY\"] = 38] = \"PLAY\";\n    METHODS[METHODS[\"PAUSE\"] = 39] = \"PAUSE\";\n    METHODS[METHODS[\"TEARDOWN\"] = 40] = \"TEARDOWN\";\n    METHODS[METHODS[\"GET_PARAMETER\"] = 41] = \"GET_PARAMETER\";\n    METHODS[METHODS[\"SET_PARAMETER\"] = 42] = \"SET_PARAMETER\";\n    METHODS[METHODS[\"REDIRECT\"] = 43] = \"REDIRECT\";\n    METHODS[METHODS[\"RECORD\"] = 44] = \"RECORD\";\n    /* RAOP */\n    METHODS[METHODS[\"FLUSH\"] = 45] = \"FLUSH\";\n})(METHODS = exports.METHODS || (exports.METHODS = {}));\nexports.METHODS_HTTP = [\n    METHODS.DELETE,\n    METHODS.GET,\n    METHODS.HEAD,\n    METHODS.POST,\n    METHODS.PUT,\n    METHODS.CONNECT,\n    METHODS.OPTIONS,\n    METHODS.TRACE,\n    METHODS.COPY,\n    METHODS.LOCK,\n    METHODS.MKCOL,\n    METHODS.MOVE,\n    METHODS.PROPFIND,\n    METHODS.PROPPATCH,\n    METHODS.SEARCH,\n    METHODS.UNLOCK,\n    METHODS.BIND,\n    METHODS.REBIND,\n    METHODS.UNBIND,\n    METHODS.ACL,\n    METHODS.REPORT,\n    METHODS.MKACTIVITY,\n    METHODS.CHECKOUT,\n    METHODS.MERGE,\n    METHODS['M-SEARCH'],\n    METHODS.NOTIFY,\n    METHODS.SUBSCRIBE,\n    METHODS.UNSUBSCRIBE,\n    METHODS.PATCH,\n    METHODS.PURGE,\n    METHODS.MKCALENDAR,\n    METHODS.LINK,\n    METHODS.UNLINK,\n    METHODS.PRI,\n    // TODO(indutny): should we allow it with HTTP?\n    METHODS.SOURCE,\n];\nexports.METHODS_ICE = [\n    METHODS.SOURCE,\n];\nexports.METHODS_RTSP = [\n    METHODS.OPTIONS,\n    METHODS.DESCRIBE,\n    METHODS.ANNOUNCE,\n    METHODS.SETUP,\n    METHODS.PLAY,\n    METHODS.PAUSE,\n    METHODS.TEARDOWN,\n    METHODS.GET_PARAMETER,\n    METHODS.SET_PARAMETER,\n    METHODS.REDIRECT,\n    METHODS.RECORD,\n    METHODS.FLUSH,\n    // For AirPlay\n    METHODS.GET,\n    METHODS.POST,\n];\nexports.METHOD_MAP = utils_1.enumToMap(METHODS);\nexports.H_METHOD_MAP = {};\nObject.keys(exports.METHOD_MAP).forEach((key) => {\n    if (/^H/.test(key)) {\n        exports.H_METHOD_MAP[key] = exports.METHOD_MAP[key];\n    }\n});\nvar FINISH;\n(function (FINISH) {\n    FINISH[FINISH[\"SAFE\"] = 0] = \"SAFE\";\n    FINISH[FINISH[\"SAFE_WITH_CB\"] = 1] = \"SAFE_WITH_CB\";\n    FINISH[FINISH[\"UNSAFE\"] = 2] = \"UNSAFE\";\n})(FINISH = exports.FINISH || (exports.FINISH = {}));\nexports.ALPHA = [];\nfor (let i = 'A'.charCodeAt(0); i <= 'Z'.charCodeAt(0); i++) {\n    // Upper case\n    exports.ALPHA.push(String.fromCharCode(i));\n    // Lower case\n    exports.ALPHA.push(String.fromCharCode(i + 0x20));\n}\nexports.NUM_MAP = {\n    0: 0, 1: 1, 2: 2, 3: 3, 4: 4,\n    5: 5, 6: 6, 7: 7, 8: 8, 9: 9,\n};\nexports.HEX_MAP = {\n    0: 0, 1: 1, 2: 2, 3: 3, 4: 4,\n    5: 5, 6: 6, 7: 7, 8: 8, 9: 9,\n    A: 0XA, B: 0XB, C: 0XC, D: 0XD, E: 0XE, F: 0XF,\n    a: 0xa, b: 0xb, c: 0xc, d: 0xd, e: 0xe, f: 0xf,\n};\nexports.NUM = [\n    '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',\n];\nexports.ALPHANUM = exports.ALPHA.concat(exports.NUM);\nexports.MARK = ['-', '_', '.', '!', '~', '*', '\\'', '(', ')'];\nexports.USERINFO_CHARS = exports.ALPHANUM\n    .concat(exports.MARK)\n    .concat(['%', ';', ':', '&', '=', '+', '$', ',']);\n// TODO(indutny): use RFC\nexports.STRICT_URL_CHAR = [\n    '!', '\"', '$', '%', '&', '\\'',\n    '(', ')', '*', '+', ',', '-', '.', '/',\n    ':', ';', '<', '=', '>',\n    '@', '[', '\\\\', ']', '^', '_',\n    '`',\n    '{', '|', '}', '~',\n].concat(exports.ALPHANUM);\nexports.URL_CHAR = exports.STRICT_URL_CHAR\n    .concat(['\\t', '\\f']);\n// All characters with 0x80 bit set to 1\nfor (let i = 0x80; i <= 0xff; i++) {\n    exports.URL_CHAR.push(i);\n}\nexports.HEX = exports.NUM.concat(['a', 'b', 'c', 'd', 'e', 'f', 'A', 'B', 'C', 'D', 'E', 'F']);\n/* Tokens as defined by rfc 2616. Also lowercases them.\n *        token       = 1*<any CHAR except CTLs or separators>\n *     separators     = \"(\" | \")\" | \"<\" | \">\" | \"@\"\n *                    | \",\" | \";\" | \":\" | \"\\\" | <\">\n *                    | \"/\" | \"[\" | \"]\" | \"?\" | \"=\"\n *                    | \"{\" | \"}\" | SP | HT\n */\nexports.STRICT_TOKEN = [\n    '!', '#', '$', '%', '&', '\\'',\n    '*', '+', '-', '.',\n    '^', '_', '`',\n    '|', '~',\n].concat(exports.ALPHANUM);\nexports.TOKEN = exports.STRICT_TOKEN.concat([' ']);\n/*\n * Verify that a char is a valid visible (printable) US-ASCII\n * character or %x80-FF\n */\nexports.HEADER_CHARS = ['\\t'];\nfor (let i = 32; i <= 255; i++) {\n    if (i !== 127) {\n        exports.HEADER_CHARS.push(i);\n    }\n}\n// ',' = \\x44\nexports.CONNECTION_TOKEN_CHARS = exports.HEADER_CHARS.filter((c) => c !== 44);\nexports.MAJOR = exports.NUM_MAP;\nexports.MINOR = exports.MAJOR;\nvar HEADER_STATE;\n(function (HEADER_STATE) {\n    HEADER_STATE[HEADER_STATE[\"GENERAL\"] = 0] = \"GENERAL\";\n    HEADER_STATE[HEADER_STATE[\"CONNECTION\"] = 1] = \"CONNECTION\";\n    HEADER_STATE[HEADER_STATE[\"CONTENT_LENGTH\"] = 2] = \"CONTENT_LENGTH\";\n    HEADER_STATE[HEADER_STATE[\"TRANSFER_ENCODING\"] = 3] = \"TRANSFER_ENCODING\";\n    HEADER_STATE[HEADER_STATE[\"UPGRADE\"] = 4] = \"UPGRADE\";\n    HEADER_STATE[HEADER_STATE[\"CONNECTION_KEEP_ALIVE\"] = 5] = \"CONNECTION_KEEP_ALIVE\";\n    HEADER_STATE[HEADER_STATE[\"CONNECTION_CLOSE\"] = 6] = \"CONNECTION_CLOSE\";\n    HEADER_STATE[HEADER_STATE[\"CONNECTION_UPGRADE\"] = 7] = \"CONNECTION_UPGRADE\";\n    HEADER_STATE[HEADER_STATE[\"TRANSFER_ENCODING_CHUNKED\"] = 8] = \"TRANSFER_ENCODING_CHUNKED\";\n})(HEADER_STATE = exports.HEADER_STATE || (exports.HEADER_STATE = {}));\nexports.SPECIAL_HEADERS = {\n    'connection': HEADER_STATE.CONNECTION,\n    'content-length': HEADER_STATE.CONTENT_LENGTH,\n    'proxy-connection': HEADER_STATE.CONNECTION,\n    'transfer-encoding': HEADER_STATE.TRANSFER_ENCODING,\n    'upgrade': HEADER_STATE.UPGRADE,\n};\n//# sourceMappingURL=constants.js.map", "'use strict'\n\nconst { Buffer } = require('node:buffer')\n\nmodule.exports = Buffer.from('AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAX8AYAJ/fwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAy0sBQYAAAIAAAAAAAACAQIAAgICAAADAAAAAAMDAwMBAQEBAQEBAQEAAAIAAAAEBQFwARISBQMBAAIGCAF/AUGA1AQLB9EFIgZtZW1vcnkCAAtfaW5pdGlhbGl6ZQAIGV9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGUBAAtsbGh0dHBfaW5pdAAJGGxsaHR0cF9zaG91bGRfa2VlcF9hbGl2ZQAvDGxsaHR0cF9hbGxvYwALBm1hbGxvYwAxC2xsaHR0cF9mcmVlAAwEZnJlZQAMD2xsaHR0cF9nZXRfdHlwZQANFWxsaHR0cF9nZXRfaHR0cF9tYWpvcgAOFWxsaHR0cF9nZXRfaHR0cF9taW5vcgAPEWxsaHR0cF9nZXRfbWV0aG9kABAWbGxodHRwX2dldF9zdGF0dXNfY29kZQAREmxsaHR0cF9nZXRfdXBncmFkZQASDGxsaHR0cF9yZXNldAATDmxsaHR0cF9leGVjdXRlABQUbGxodHRwX3NldHRpbmdzX2luaXQAFQ1sbGh0dHBfZmluaXNoABYMbGxodHRwX3BhdXNlABcNbGxodHRwX3Jlc3VtZQAYG2xsaHR0cF9yZXN1bWVfYWZ0ZXJfdXBncmFkZQAZEGxsaHR0cF9nZXRfZXJybm8AGhdsbGh0dHBfZ2V0X2Vycm9yX3JlYXNvbgAbF2xsaHR0cF9zZXRfZXJyb3JfcmVhc29uABwUbGxodHRwX2dldF9lcnJvcl9wb3MAHRFsbGh0dHBfZXJybm9fbmFtZQAeEmxsaHR0cF9tZXRob2RfbmFtZQAfEmxsaHR0cF9zdGF0dXNfbmFtZQAgGmxsaHR0cF9zZXRfbGVu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PgtBhwEMPQtBiAEMPAtBiQEMOwtBigEMOgtBiwEMOQtBjAEMOAtBjQEMNwtBjgEMNgtBjwEMNQtBkAEMNAtBkQEMMwtBkgEMMgtBkwEMMQtBlAEMMAtBlQEMLwtBlgEMLgtBlwEMLQtBmAEMLAtBmQEMKwtBmgEMKgtBmwEMKQtBnAEMKAtBnQEMJwtBngEMJgtBnwEMJQtBoAEMJAtBoQEMIwtBogEMIgtBowEMIQtBpAEMIAtBpQEMHwtBpgEMHgtBpwEMHQtBqAEMHAtBqQEMGwtBqgEMGgtBqwEMGQtBrAEMGAtBrQEMFwtBrgEMFgtBAQwVC0GvAQwUC0GwAQwTC0GxAQwSC0GzAQwRC0GyAQwQC0G0AQwPC0G1AQwOC0G2AQwNC0G3AQwMC0G4AQwLC0G5AQwKC0G6AQwJC0G7AQwIC0HGAQwHC0G8AQwGC0G9AQwFC0G+AQwEC0G/AQwDC0HAAQwCC0HCAQwBC0HBAQshAwNAAkACQAJAAkACQAJAAkACQAJAIAICfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAgJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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iQEhAwykAgtBASABLQAAQd8ARw1nGiABQQFqIQEMXgtBigEhAyABIARGDaICIAIoAgAiACAEIAFraiEFIAEgAGtBAWohBgNAIAEtAAAgAEGMzwBqLQAARw1kIABBAUYN+gEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMogILQYsBIQMgASAERg2hAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGOzwBqLQAARw1kIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyiAgsgAkEANgIAIAZBAWohAUECDGULQYwBIQMgASAERg2gAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHwzwBqLQAARw1jIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyhAgsgAkEANgIAIAZBAWohAUEfDGQLQY0BIQMgASAERg2fAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHyzwBqLQAARw1iIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAygAgsgAkEANgIAIAZBAWohAUEJDGMLIAEgBEYEQEGOASEDDJ8CCwJAAkAgAS0AAEHJAGsOBwBiYmJiYgFiCyABQQFqIQFB+AAhAwyGAgsgAUEBaiEBQfkAIQMMhQILQY8BIQMgASAERg2dAiACKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGRzwBqLQAARw1gIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyeAgsgAkEANgIAIAZBAWohAUEYDGELQZABIQMgASAERg2cAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGXzwBqLQAARw1fIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAydAgsgAkEANgIAIAZBAWohAUEXDGALQZEBIQMgASAERg2bAiACKAIAIgAgBCABa2ohBSABIABrQQZqIQYCQANAIAEtAAAgAEGazwBqLQAARw1eIABBBkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAycAgsgAkEANgIAIAZBAWohAUEV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JSIARQ0RIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMtAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0gIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMswELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0iIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMsgELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0OIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMsQELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0dIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMsAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0fIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMrwELIABBP0cNASABQQFqCyEBQQUhAwyUAQtBACEDIAJBADYCHCACIAE2AhQgAkH9EjYCECACQQc2AgwMrAELIAJBADYCHCACIAE2AhQgAkHcCDYCECACQQc2AgxBACEDDKsBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNByACQeUANgIcIAIgATYCFCACIAA2AgxBACEDDKoBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNFiACQdMANgIcIAIgATYCFCACIAA2AgxBACEDDKkBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNGCACQdIANgIcIAIgATYCFCACIAA2AgxBACEDDKgBCyACQQA2AhwgAiABNgIUIAJBxgo2AhAgAkEHNgIMQQAhAwynAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQMgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwymAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRIgAkHTADYCHCACIAE2AhQgAiAANgIMQQAhAwylAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRQgAkHSADYCHCACIAE2AhQgAiAANgIMQQAhAwykAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQAgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwyjAQtB1QAhAwyJAQsgAEEVRwRAIAJBADYCHCACIAE2AhQgAkG5DTYCECACQRo2AgxB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AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB5ABrDvQDY2IAAWFhYWFhYQIDBAVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhBgcICQoLDA0OD2FhYWFhEGFhYWFhYWFhYWFhEWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYRITFBUWFxgZGhthYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2YTc4OTphYWFhYWFhYTthYWE8YWFhYT0+P2FhYWFhYWFhQGFhQWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYUJDREVGR0hJSktMTU5PUFFSU2FhYWFhYWFhVFVWV1hZWlthXF1hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFeYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhX2BhC0HhJw8LQaQhDwtByywPC0H+MQ8LQcAkDwtBqyQPC0GNKA8LQeImDwtBgDAPC0G5Lw8LQdckDwtB7x8PC0HhHw8LQfofDwtB8iAPC0GoLw8LQa4yDwtBiDAPC0HsJw8LQYIiDwtBjh0PC0HQLg8LQcojDwtBxTIPC0HfHA8LQdIcDwtBxCAPC0HXIA8LQaIfDwtB7S4PC0GrMA8LQdQlDwtBzC4PC0H6Lg8LQfwrDwtB0jAPC0HxHQ8LQbsgDwtB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CABB3AgLii1JbnZhbGlkIGNoYXIgaW4gdXJsIHF1ZXJ5AFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fYm9keQBDb250ZW50LUxlbmd0aCBvdmVyZmxvdwBDaHVuayBzaXplIG92ZXJmbG93AFJlc3BvbnNlIG92ZXJmbG93AEludmFsaWQgbWV0aG9kIGZvciBIVFRQL3gueCByZXF1ZXN0AEludmFsaWQgbWV0aG9kIGZvciBSVFNQL3gueCByZXF1ZXN0AEV4cGVjdGVkIFNPVVJDRSBtZXRob2QgZm9yIElDRS94LnggcmVxdWVzdABJbnZhbGlkIGNoYXIgaW4gdXJsIGZyYWdtZW50IHN0YXJ0AEV4cGVjdGVkIGRvdABTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3N0YXR1cwBJbnZhbGlkIHJlc3BvbnNlIHN0YXR1cwBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zAFVzZXIgY2FsbGJhY2sgZXJyb3IAYG9uX3Jlc2V0YCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfaGVhZGVyYCBjYWxsYmFjayBlcnJvcgBgb25fbWVzc2FnZV9iZWdpbmAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3N0YXR1c19jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3ZlcnNpb25fY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl91cmxfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2hlYWRlcl92YWx1ZV9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX21lc3NhZ2VfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXRob2RfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfZmllbGRfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fbmFtZWAgY2FsbGJhY2sgZXJyb3IAVW5leHBlY3RlZCBjaGFyIGluIHVybCBzZXJ2ZXIASW52YWxpZCBoZWFkZXIgdmFsdWUgY2hhcgBJbnZhbGlkIGhlYWRlciBmaWVsZCBjaGFyAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fdmVyc2lvbgBJbnZhbGlkIG1pbm9yIHZlcnNpb24ASW52YWxpZCBtYWpvciB2ZXJzaW9uAEV4cGVjdGVkIHNwYWNlIGFmdGVyIHZlcnNpb24ARXhwZWN0ZWQgQ1JMRiBhZnRlciB2ZXJzaW9uAEludmFsaWQgSFRUUCB2ZXJzaW9uAEludmFsaWQgaGVhZGVyIHRva2VuAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fdXJsAEludmFsaWQgY2hhcmFjdGVycyBpbiB1cmwAVW5leHBlY3RlZCBzdGFydCBjaGFyIGluIHVybABEb3VibGUgQCBpbiB1cmwARW1wdHkgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyYWN0ZXIgaW4gQ29udGVudC1MZW5ndGgARHVwbGljYXRlIENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhciBpbiB1cmwgcGF0aABDb250ZW50LUxlbmd0aCBjYW4ndCBiZSBwcmVzZW50IHdpdGggVHJhbnNmZXItRW5jb2RpbmcASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgc2l6ZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2hlYWRlcl92YWx1ZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgTEYgYWZ0ZXIgaGVhZGVyIHZhbHVlAEludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYCBoZWFkZXIgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZSB2YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHF1b3RlZCB2YWx1ZQBQYXVzZWQgYnkgb25faGVhZGVyc19jb21wbGV0ZQBJbnZhbGlkIEVPRiBzdGF0ZQBvbl9yZXNldCBwYXVzZQBvbl9jaHVua19oZWFkZXIgcGF1c2UAb25fbWVzc2FnZV9iZWdpbiBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fdmFsdWUgcGF1c2UAb25fc3RhdHVzX2NvbXBsZXRlIHBhdXNlAG9uX3ZlcnNpb25fY29tcGxldGUgcGF1c2UAb25fdXJsX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl92YWx1ZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXNzYWdlX2NvbXBsZXRlIHBhdXNlAG9uX21ldGhvZF9jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfZmllbGRfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUgcGF1c2UAVW5leHBlY3RlZCBzcGFjZSBhZnRlciBzdGFydCBsaW5lAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBuYW1lAFBhdXNlIG9uIENPTk5FQ1QvVXBncmFkZQBQYXVzZSBvbiBQUkkvVXBncmFkZQBFeHBlY3RlZCBIVFRQLzIgQ29ubmVjdGlvbiBQcmVmYWNlAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fbWV0aG9kAEV4cGVjdGVkIHNwYWNlIGFmdGVyIG1ldGhvZABTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2hlYWRlcl9maWVsZABQYXVzZWQASW52YWxpZCB3b3JkIGVuY291bnRlcmVkAEludmFsaWQgbWV0aG9kIGVuY291bnRlcmVkAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2NoZW1hAFJlcXVlc3QgaGFzIGludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYABTV0lUQ0hfUFJPWFkAVVNFX1BST1hZAE1LQUNUSVZJVFkAVU5QUk9DRVNTQUJMRV9FTlRJVFkAQ09QWQBNT1ZFRF9QRVJNQU5FTlRMWQBUT09fRUFSTFkATk9USUZZAEZBSUxFRF9ERVBFTkRFTkNZAEJBRF9HQVRFV0FZAFBMQVkAUFVUAENIRUNLT1VUAEdBVEVXQVlfVElNRU9VVABSRVFVRVNUX1RJTUVPVVQATkVUV09SS19DT05ORUNUX1RJTUVPVVQAQ09OTkVDVElPTl9USU1FT1VUAExPR0lOX1RJTUVPVVQATkVUV09SS19SRUFEX1RJTUVPVVQAUE9TVABNSVNESVJFQ1RFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX0xPQURfQkFMQU5DRURfUkVRVUVTVABCQURfUkVRVUVTVABIVFRQX1JFUVVFU1RfU0VOVF9UT19IVFRQU19QT1JUAFJFUE9SVABJTV9BX1RFQVBPVABSRVNFVF9DT05URU5UAE5PX0NPTlRFTlQAUEFSVElBTF9DT05URU5UAEhQRV9JTlZBTElEX0NPTlNUQU5UAEhQRV9DQl9SRVNFVABHRVQASFBFX1NUUklDVABDT05GTElDVABURU1QT1JBUllfUkVESVJFQ1QAUEVSTUFORU5UX1JFRElSRUNUAENPTk5FQ1QATVVMVElfU1RBVFVTAEhQRV9JTlZBTElEX1NUQVRVUwBUT09fTUFOWV9SRVFVRVNUUwBFQVJMWV9ISU5UUwBVTkFWQUlMQUJMRV9GT1JfTEVHQUxfUkVBU09OUwBPUFRJT05TAFNXSVRDSElOR19QUk9UT0NPTFMAVkFSSUFOVF9BTFNPX05FR09USUFURVMATVVMVElQTEVfQ0hPSUNFUwBJTlRFUk5BTF9TRVJWRVJfRVJST1IAV0VCX1NFUlZFUl9VTktOT1dOX0VSUk9SAFJBSUxHVU5fRVJST1IASURFTlRJVFlfUFJPVklERVJfQVVUSEVOVElDQVRJT05fRVJST1IAU1NMX0NFUlRJRklDQVRFX0VSUk9SAElOVkFMSURfWF9GT1JXQVJERURfRk9SAFNFVF9QQVJBTUVURVIAR0VUX1BBUkFNRVRFUgBIUEVfVVNFUgBTRUVfT1RIRVIASFBFX0NCX0NIVU5LX0hFQURFUgBNS0NBTEVOREFSAFNFVFVQAFdFQl9TRVJWRVJfSVNfRE9XTgBURUFSRE9XTgBIUEVfQ0xPU0VEX0NPTk5FQ1RJT04ASEVVUklTVElDX0VYUElSQVRJT04ARElTQ09OTkVDVEVEX09QRVJBVElPTgBOT05fQVVUSE9SSVRBVElWRV9JTkZPUk1BVElPTgBIUEVfSU5WQUxJRF9WRVJTSU9OAEhQRV9DQl9NRVNTQUdFX0JFR0lOAFNJVEVfSVNfRlJPWkVOAEhQRV9JTlZBTElEX0hFQURFUl9UT0tFTgBJTlZBTElEX1RPS0VOAEZPUkJJRERFTgBFTkhBTkNFX1lPVVJfQ0FMTQBIUEVfSU5WQUxJRF9VUkwAQkxPQ0tFRF9CWV9QQVJFTlRBTF9DT05UUk9MAE1LQ09MAEFDTABIUEVfSU5URVJOQUwAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRV9VTk9GRklDSUFMAEhQRV9PSwBVTkxJTksAVU5MT0NLAFBSSQBSRVRSWV9XSVRIAEhQRV9JTlZBTElEX0NPTlRFTlRfTEVOR1RIAEhQRV9VTkVYUEVDVEVEX0NPTlRFTlRfTEVOR1RIAEZMVVNIAFBST1BQQVRDSABNLVNFQVJDSABVUklfVE9PX0xPTkcAUFJPQ0VTU0lORwBNSVNDRUxMQU5FT1VTX1BFUlNJU1RFTlRfV0FSTklORwBNSVNDRUxMQU5FT1VTX1dBUk5JTkcASFBFX0lOVkFMSURfVFJBTlNGRVJfRU5DT0RJTkcARXhwZWN0ZWQgQ1JMRgBIUEVfSU5WQUxJRF9DSFVOS19TSVpFAE1PVkUAQ09OVElOVUUASFBFX0NCX1NUQVRVU19DT01QTEVURQBIUEVfQ0JfSEVBREVSU19DT01QTEVURQBIUEVfQ0JfVkVSU0lPTl9DT01QTEVURQBIUEVfQ0JfVVJMX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19DT01QTEVURQBIUEVfQ0JfSEVBREVSX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9OQU1FX0NPTVBMRVRFAEhQRV9DQl9NRVNTQUdFX0NPTVBMRVRFAEhQRV9DQl9NRVRIT0RfQ09NUExFVEUASFBFX0NCX0hFQURFUl9GSUVMRF9DT01QTEVURQBERUxFVEUASFBFX0lOVkFMSURfRU9GX1NUQVRFAElOVkFMSURfU1NMX0NFUlRJRklDQVRFAFBBVVNFAE5PX1JFU1BPTlNFAFVOU1VQUE9SVEVEX01FRElBX1RZUEUAR09ORQBOT1RfQUNDRVBUQUJMRQBTRVJWSUNFX1VOQVZBSUxBQkxFAFJBTkdFX05PVF9TQVRJU0ZJQUJMRQBPUklHSU5fSVNfVU5SRUFDSEFCTEUAUkVTUE9OU0VfSVNfU1RBTEUAUFVSR0UATUVSR0UAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRQBSRVFVRVNUX0hFQURFUl9UT09fTEFSR0UAUEFZTE9BRF9UT09fTEFSR0UASU5TVUZGSUNJRU5UX1NUT1JBR0UASFBFX1BBVVNFRF9VUEdSQURFAEhQRV9QQVVTRURfSDJfVVBHUkFERQBTT1VSQ0UAQU5OT1VOQ0UAVFJBQ0UASFBFX1VORVhQRUNURURfU1BBQ0UAREVTQ1JJQkUAVU5TVUJTQ1JJQkUAUkVDT1JEAEhQRV9JTlZBTElEX01FVEhPRABOT1RfRk9VTkQAUFJPUEZJTkQAVU5CSU5EAFJFQklORABVTkFVVEhPUklaRUQATUVUSE9EX05PVF9BTExPV0VEAEhUVFBfVkVSU0lPTl9OT1RfU1VQUE9SVEVEAEFMUkVBRFlfUkVQT1JURUQAQUNDRVBURUQATk9UX0lNUExFTUVOVEVEAExPT1BfREVURUNURUQASFBFX0NSX0VYUEVDVEVEAEhQRV9MRl9FWFBFQ1RFRABDUkVBVEVEAElNX1VTRUQASFBFX1BBVVNFRABUSU1FT1VUX09DQ1VSRUQAUEFZTUVOVF9SRVFVSVJFRABQUkVDT05ESVRJT05fUkVRVUlSRUQAUFJPWFlfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATkVUV09SS19BVVRIRU5USUNBVElPTl9SRVFVSVJFRABMRU5HVEhfUkVRVUlSRUQAU1NMX0NFUlRJRklDQVRFX1JFUVVJUkVEAFVQR1JBREVfUkVRVUlSRUQAUEFHRV9FWFBJUkVEAFBSRUNPTkRJVElPTl9GQUlMRUQARVhQRUNUQVRJT05fRkFJTEVEAFJFVkFMSURBVElPTl9GQUlMRUQAU1NMX0hBTkRTSEFLRV9GQUlMRUQATE9DS0VEAFRSQU5TRk9STUFUSU9OX0FQUExJRUQATk9UX01PRElGSUVEAE5PVF9FWFRFTkRFRABCQU5EV0lEVEhfTElNSVRfRVhDRUVERUQAU0lURV9JU19PVkVSTE9BREVEAEhFQUQARXhwZWN0ZWQgSFRUUC8AAF4TAAAmEwAAMBAAAPAXAACdEwAAFRIAADkXAADwEgAAChAAAHUSAACtEgAAghMAAE8UAAB/EAAAoBUAACMUAACJEgAAixQAAE0VAADUEQAAzxQAABAYAADJFgAA3BYAAMERAADgFwAAuxQAAHQUAAB8FQAA5RQAAAgXAAAfEAAAZRUAAKMUAAAoFQAAAhUAAJkVAAAsEAAAixkAAE8PAADUDgAAahAAAM4QAAACFwAAiQ4AAG4TAAAcEwAAZhQAAFYXAADBEwAAzRMAAGwTAABoFwAAZhcAAF8XAAAiEwAAzg8AAGkOAADYDgAAYxYAAMsTAACqDgAAKBcAACYXAADFEwAAXRYAAOgRAABnEwAAZRMAAPIWAABzEwAAHRcAAPkWAADzEQAAzw4AAM4VAAAMEgAAsxEAAKURAABhEAAAMhcAALsTAEH5NQsBAQBBkDYL4AEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB/TcLAQEAQZE4C14CAwICAgICAAACAgACAgACAgICAgICAgICAAQAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAEH9OQsBAQBBkToLXgIAAgICAgIAAAICAAICAAICAgICAgICAgIAAwAEAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAQfA7Cw1sb3NlZWVwLWFsaXZlAEGJPAsBAQBBoDwL4AEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBiT4LAQEAQaA+C+cBAQEBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQFjaHVua2VkAEGwwAALXwEBAAEBAQEBAAABAQABAQABAQEBAQEBAQEBAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAEGQwgALIWVjdGlvbmVudC1sZW5ndGhvbnJveHktY29ubmVjdGlvbgBBwMIACy1yYW5zZmVyLWVuY29kaW5ncGdyYWRlDQoNCg0KU00NCg0KVFRQL0NFL1RTUC8AQfnCAAsFAQIAAQMAQZDDAAvgAQQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAEH5xAALBQECAAEDAEGQxQAL4AEEAQEFAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+cYACwQBAAABAEGRxwAL3wEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAEH6yAALBAEAAAIAQZDJAAtfAwQAAAQEBAQEBAQEBAQEBQQEBAQEBAQEBAQEBAAEAAYHBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQAQfrKAAsEAQAAAQBBkMsACwEBAEGqywALQQIAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAEH6zAALBAEAAAEAQZDNAAsBAQBBms0ACwYCAAAAAAIAQbHNAAs6AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBB8M4AC5YBTk9VTkNFRUNLT1VUTkVDVEVURUNSSUJFTFVTSEVURUFEU0VBUkNIUkdFQ1RJVklUWUxFTkRBUlZFT1RJRllQVElPTlNDSFNFQVlTVEFUQ0hHRU9SRElSRUNUT1JUUkNIUEFSQU1FVEVSVVJDRUJTQ1JJQkVBUkRPV05BQ0VJTkROS0NLVUJTQ1JJQkVIVFRQL0FEVFAv', 'base64')\n", "'use strict'\n\nconst { Buffer } = require('node:buffer')\n\nmodule.exports = Buffer.from('AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAX8AYAJ/fwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAy0sBQYAAAIAAAAAAAACAQIAAgICAAADAAAAAAMDAwMBAQEBAQEBAQEAAAIAAAAEBQFwARISBQMBAAIGCAF/AUGA1AQLB9EFIgZtZW1vcnkCAAtfaW5pdGlhbGl6ZQAIGV9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGUBAAtsbGh0dHBfaW5pdAAJGGxsaHR0cF9zaG91bGRfa2VlcF9hbGl2ZQAvDGxsaHR0cF9hbGxvYwALBm1hbGxvYwAxC2xsaHR0cF9mcmVlAAwEZnJlZQAMD2xsaHR0cF9nZXRfdHlwZQANFWxsaHR0cF9nZXRfaHR0cF9tYWpvcgAOFWxsaHR0cF9nZXRfaHR0cF9taW5vcgAPEWxsaHR0cF9nZXRfbWV0aG9kABAWbGxodHRwX2dldF9zdGF0dXNfY29kZQAREmxsaHR0cF9nZXRfdXBncmFkZQASDGxsaHR0cF9yZXNldAATDmxsaHR0cF9leGVjdXRlABQUbGxodHRwX3NldHRpbmdzX2luaXQAFQ1sbGh0dHBfZmluaXNoABYMbGxodHRwX3BhdXNlABcNbGxodHRwX3Jlc3VtZQAYG2xsaHR0cF9yZXN1bWVfYWZ0ZXJfdXBncmFkZQAZEGxsaHR0cF9nZXRfZXJybm8AGhdsbGh0dHBfZ2V0X2Vycm9yX3JlYXNvbgAbF2xsaHR0cF9zZXRfZXJyb3JfcmVhc29uABwUbGxodHRwX2dldF9lcnJvcl9wb3MAHRFsbGh0dHBfZXJybm9fbmFtZQAeEmxsaHR0cF9tZXRob2RfbmFtZQAfEmxsaHR0cF9zdGF0dXNfbmFtZQAgGmxsaHR0cF9zZXRfbGVu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PgtBhwEMPQtBiAEMPAtBiQEMOwtBigEMOgtBiwEMOQtBjAEMOAtBjQEMNwtBjgEMNgtBjwEMNQtBkAEMNAtBkQEMMwtBkgEMMgtBkwEMMQtBlAEMMAtBlQEMLwtBlgEMLgtBlwEMLQtBmAEMLAtBmQEMKwtBmgEMKgtBmwEMKQtBnAEMKAtBnQEMJwtBngEMJgtBnwEMJQtBoAEMJAtBoQEMIwtBogEMIgtBowEMIQtBpAEMIAtBpQEMHwtBpgEMHgtBpwEMHQtBqAEMHAtBqQEMGwtBqgEMGgtBqwEMGQtBrAEMGAtBrQEMFwtBrgEMFgtBAQwVC0GvAQwUC0GwAQwTC0GxAQwSC0GzAQwRC0GyAQwQC0G0AQwPC0G1AQwOC0G2AQwNC0G3AQwMC0G4AQwLC0G5AQwKC0G6AQwJC0G7AQwIC0HGAQwHC0G8AQwGC0G9AQwFC0G+AQwEC0G/AQwDC0HAAQwCC0HCAQwBC0HBAQshAwNAAkACQAJAAkACQAJAAkACQAJAIAICfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAgJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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iQEhAwykAgtBASABLQAAQd8ARw1nGiABQQFqIQEMXgtBigEhAyABIARGDaICIAIoAgAiACAEIAFraiEFIAEgAGtBAWohBgNAIAEtAAAgAEGMzwBqLQAARw1kIABBAUYN+gEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMogILQYsBIQMgASAERg2hAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGOzwBqLQAARw1kIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyiAgsgAkEANgIAIAZBAWohAUECDGULQYwBIQMgASAERg2gAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHwzwBqLQAARw1jIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyhAgsgAkEANgIAIAZBAWohAUEfDGQLQY0BIQMgASAERg2fAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHyzwBqLQAARw1iIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAygAgsgAkEANgIAIAZBAWohAUEJDGMLIAEgBEYEQEGOASEDDJ8CCwJAAkAgAS0AAEHJAGsOBwBiYmJiYgFiCyABQQFqIQFB+AAhAwyGAgsgAUEBaiEBQfkAIQMMhQILQY8BIQMgASAERg2dAiACKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGRzwBqLQAARw1gIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyeAgsgAkEANgIAIAZBAWohAUEYDGELQZABIQMgASAERg2cAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGXzwBqLQAARw1fIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAydAgsgAkEANgIAIAZBAWohAUEXDGALQZEBIQMgASAERg2bAiACKAIAIgAgBCABa2ohBSABIABrQQZqIQYCQANAIAEtAAAgAEGazwBqLQAARw1eIABBBkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAycAgsgAkEANgIAIAZBAWohAUEV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JSIARQ0RIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMtAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0gIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMswELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0iIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMsgELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0OIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMsQELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0dIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMsAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0fIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMrwELIABBP0cNASABQQFqCyEBQQUhAwyUAQtBACEDIAJBADYCHCACIAE2AhQgAkH9EjYCECACQQc2AgwMrAELIAJBADYCHCACIAE2AhQgAkHcCDYCECACQQc2AgxBACEDDKsBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNByACQeUANgIcIAIgATYCFCACIAA2AgxBACEDDKoBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNFiACQdMANgIcIAIgATYCFCACIAA2AgxBACEDDKkBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNGCACQdIANgIcIAIgATYCFCACIAA2AgxBACEDDKgBCyACQQA2AhwgAiABNgIUIAJBxgo2AhAgAkEHNgIMQQAhAwynAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQMgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwymAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRIgAkHTADYCHCACIAE2AhQgAiAANgIMQQAhAwylAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRQgAkHSADYCHCACIAE2AhQgAiAANgIMQQAhAwykAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQAgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwyjAQtB1QAhAwyJAQsgAEEVRwRAIAJBADYCHCACIAE2AhQgAkG5DTYCECACQRo2AgxB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AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB5ABrDvQDY2IAAWFhYWFhYQIDBAVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhBgcICQoLDA0OD2FhYWFhEGFhYWFhYWFhYWFhEWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYRITFBUWFxgZGhthYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2YTc4OTphYWFhYWFhYTthYWE8YWFhYT0+P2FhYWFhYWFhQGFhQWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYUJDREVGR0hJSktMTU5PUFFSU2FhYWFhYWFhVFVWV1hZWlthXF1hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFeYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhX2BhC0HhJw8LQaQhDwtByywPC0H+MQ8LQcAkDwtBqyQPC0GNKA8LQeImDwtBgDAPC0G5Lw8LQdckDwtB7x8PC0HhHw8LQfofDwtB8iAPC0GoLw8LQa4yDwtBiDAPC0HsJw8LQYIiDwtBjh0PC0HQLg8LQcojDwtBxTIPC0HfHA8LQdIcDwtBxCAPC0HXIA8LQaIfDwtB7S4PC0GrMA8LQdQlDwtBzC4PC0H6Lg8LQfwrDwtB0jAPC0HxHQ8LQbsgDwtB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AAADAEGUCAsFBAAAAAUAQaQICwkGAAAABwAAAAgAQdwIC4otSW52YWxpZCBjaGFyIGluIHVybCBxdWVyeQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2JvZHkAQ29udGVudC1MZW5ndGggb3ZlcmZsb3cAQ2h1bmsgc2l6ZSBvdmVyZmxvdwBSZXNwb25zZSBvdmVyZmxvdwBJbnZhbGlkIG1ldGhvZCBmb3IgSFRUUC94LnggcmVxdWVzdABJbnZhbGlkIG1ldGhvZCBmb3IgUlRTUC94LnggcmVxdWVzdABFeHBlY3RlZCBTT1VSQ0UgbWV0aG9kIGZvciBJQ0UveC54IHJlcXVlc3QASW52YWxpZCBjaGFyIGluIHVybCBmcmFnbWVudCBzdGFydABFeHBlY3RlZCBkb3QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9zdGF0dXMASW52YWxpZCByZXNwb25zZSBzdGF0dXMASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucwBVc2VyIGNhbGxiYWNrIGVycm9yAGBvbl9yZXNldGAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2hlYWRlcmAgY2FsbGJhY2sgZXJyb3IAYG9uX21lc3NhZ2VfYmVnaW5gIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fdmFsdWVgIGNhbGxiYWNrIGVycm9yAGBvbl9zdGF0dXNfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl92ZXJzaW9uX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdXJsX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAEVtcHR5IENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhcmFjdGVyIGluIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBNaXNzaW5nIGV4cGVjdGVkIExGIGFmdGVyIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGUgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZWQgdmFsdWUAUGF1c2VkIGJ5IG9uX2hlYWRlcnNfY29tcGxldGUASW52YWxpZCBFT0Ygc3RhdGUAb25fcmVzZXQgcGF1c2UAb25fY2h1bmtfaGVhZGVyIHBhdXNlAG9uX21lc3NhZ2VfYmVnaW4gcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlIHBhdXNlAG9uX3N0YXR1c19jb21wbGV0ZSBwYXVzZQBvbl92ZXJzaW9uX2NvbXBsZXRlIHBhdXNlAG9uX3VybF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGUgcGF1c2UAb25fbWVzc2FnZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXRob2RfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lIHBhdXNlAFVuZXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgc3RhcnQgbGluZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgbmFtZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AAU1dJVENIX1BST1hZAFVTRV9QUk9YWQBNS0FDVElWSVRZAFVOUFJPQ0VTU0FCTEVfRU5USVRZAENPUFkATU9WRURfUEVSTUFORU5UTFkAVE9PX0VBUkxZAE5PVElGWQBGQUlMRURfREVQRU5ERU5DWQBCQURfR0FURVdBWQBQTEFZAFBVVABDSEVDS09VVABHQVRFV0FZX1RJTUVPVVQAUkVRVUVTVF9USU1FT1VUAE5FVFdPUktfQ09OTkVDVF9USU1FT1VUAENPTk5FQ1RJT05fVElNRU9VVABMT0dJTl9USU1FT1VUAE5FVFdPUktfUkVBRF9USU1FT1VUAFBPU1QATUlTRElSRUNURURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9MT0FEX0JBTEFOQ0VEX1JFUVVFU1QAQkFEX1JFUVVFU1QASFRUUF9SRVFVRVNUX1NFTlRfVE9fSFRUUFNfUE9SVABSRVBPUlQASU1fQV9URUFQT1QAUkVTRVRfQ09OVEVOVABOT19DT05URU5UAFBBUlRJQUxfQ09OVEVOVABIUEVfSU5WQUxJRF9DT05TVEFOVABIUEVfQ0JfUkVTRVQAR0VUAEhQRV9TVFJJQ1QAQ09ORkxJQ1QAVEVNUE9SQVJZX1JFRElSRUNUAFBFUk1BTkVOVF9SRURJUkVDVABDT05ORUNUAE1VTFRJX1NUQVRVUwBIUEVfSU5WQUxJRF9TVEFUVVMAVE9PX01BTllfUkVRVUVTVFMARUFSTFlfSElOVFMAVU5BVkFJTEFCTEVfRk9SX0xFR0FMX1JFQVNPTlMAT1BUSU9OUwBTV0lUQ0hJTkdfUFJPVE9DT0xTAFZBUklBTlRfQUxTT19ORUdPVElBVEVTAE1VTFRJUExFX0NIT0lDRVMASU5URVJOQUxfU0VSVkVSX0VSUk9SAFdFQl9TRVJWRVJfVU5LTk9XTl9FUlJPUgBSQUlMR1VOX0VSUk9SAElERU5USVRZX1BST1ZJREVSX0FVVEhFTlRJQ0FUSU9OX0VSUk9SAFNTTF9DRVJUSUZJQ0FURV9FUlJPUgBJTlZBTElEX1hfRk9SV0FSREVEX0ZPUgBTRVRfUEFSQU1FVEVSAEdFVF9QQVJBTUVURVIASFBFX1VTRVIAU0VFX09USEVSAEhQRV9DQl9DSFVOS19IRUFERVIATUtDQUxFTkRBUgBTRVRVUABXRUJfU0VSVkVSX0lTX0RPV04AVEVBUkRPV04ASFBFX0NMT1NFRF9DT05ORUNUSU9OAEhFVVJJU1RJQ19FWFBJUkFUSU9OAERJU0NPTk5FQ1RFRF9PUEVSQVRJT04ATk9OX0FVVEhPUklUQVRJVkVfSU5GT1JNQVRJT04ASFBFX0lOVkFMSURfVkVSU0lPTgBIUEVfQ0JfTUVTU0FHRV9CRUdJTgBTSVRFX0lTX0ZST1pFTgBIUEVfSU5WQUxJRF9IRUFERVJfVE9LRU4ASU5WQUxJRF9UT0tFTgBGT1JCSURERU4ARU5IQU5DRV9ZT1VSX0NBTE0ASFBFX0lOVkFMSURfVVJMAEJMT0NLRURfQllfUEFSRU5UQUxfQ09OVFJPTABNS0NPTABBQ0wASFBFX0lOVEVSTkFMAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0VfVU5PRkZJQ0lBTABIUEVfT0sAVU5MSU5LAFVOTE9DSwBQUkkAUkVUUllfV0lUSABIUEVfSU5WQUxJRF9DT05URU5UX0xFTkdUSABIUEVfVU5FWFBFQ1RFRF9DT05URU5UX0xFTkdUSABGTFVTSABQUk9QUEFUQ0gATS1TRUFSQ0gAVVJJX1RPT19MT05HAFBST0NFU1NJTkcATUlTQ0VMTEFORU9VU19QRVJTSVNURU5UX1dBUk5JTkcATUlTQ0VMTEFORU9VU19XQVJOSU5HAEhQRV9JTlZBTElEX1RSQU5TRkVSX0VOQ09ESU5HAEV4cGVjdGVkIENSTEYASFBFX0lOVkFMSURfQ0hVTktfU0laRQBNT1ZFAENPTlRJTlVFAEhQRV9DQl9TVEFUVVNfQ09NUExFVEUASFBFX0NCX0hFQURFUlNfQ09NUExFVEUASFBFX0NCX1ZFUlNJT05fQ09NUExFVEUASFBFX0NCX1VSTF9DT01QTEVURQBIUEVfQ0JfQ0hVTktfQ09NUExFVEUASFBFX0NCX0hFQURFUl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fTkFNRV9DT01QTEVURQBIUEVfQ0JfTUVTU0FHRV9DT01QTEVURQBIUEVfQ0JfTUVUSE9EX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfRklFTERfQ09NUExFVEUAREVMRVRFAEhQRV9JTlZBTElEX0VPRl9TVEFURQBJTlZBTElEX1NTTF9DRVJUSUZJQ0FURQBQQVVTRQBOT19SRVNQT05TRQBVTlNVUFBPUlRFRF9NRURJQV9UWVBFAEdPTkUATk9UX0FDQ0VQVEFCTEUAU0VSVklDRV9VTkFWQUlMQUJMRQBSQU5HRV9OT1RfU0FUSVNGSUFCTEUAT1JJR0lOX0lTX1VOUkVBQ0hBQkxFAFJFU1BPTlNFX0lTX1NUQUxFAFBVUkdFAE1FUkdFAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0UAUkVRVUVTVF9IRUFERVJfVE9PX0xBUkdFAFBBWUxPQURfVE9PX0xBUkdFAElOU1VGRklDSUVOVF9TVE9SQUdFAEhQRV9QQVVTRURfVVBHUkFERQBIUEVfUEFVU0VEX0gyX1VQR1JBREUAU09VUkNFAEFOTk9VTkNFAFRSQUNFAEhQRV9VTkVYUEVDVEVEX1NQQUNFAERFU0NSSUJFAFVOU1VCU0NSSUJFAFJFQ09SRABIUEVfSU5WQUxJRF9NRVRIT0QATk9UX0ZPVU5EAFBST1BGSU5EAFVOQklORABSRUJJTkQAVU5BVVRIT1JJWkVEAE1FVEhPRF9OT1RfQUxMT1dFRABIVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRABBTFJFQURZX1JFUE9SVEVEAEFDQ0VQVEVEAE5PVF9JTVBMRU1FTlRFRABMT09QX0RFVEVDVEVEAEhQRV9DUl9FWFBFQ1RFRABIUEVfTEZfRVhQRUNURUQAQ1JFQVRFRABJTV9VU0VEAEhQRV9QQVVTRUQAVElNRU9VVF9PQ0NVUkVEAFBBWU1FTlRfUkVRVUlSRUQAUFJFQ09ORElUSU9OX1JFUVVJUkVEAFBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAE5FVFdPUktfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATEVOR1RIX1JFUVVJUkVEAFNTTF9DRVJUSUZJQ0FURV9SRVFVSVJFRABVUEdSQURFX1JFUVVJUkVEAFBBR0VfRVhQSVJFRABQUkVDT05ESVRJT05fRkFJTEVEAEVYUEVDVEFUSU9OX0ZBSUxFRABSRVZBTElEQVRJT05fRkFJTEVEAFNTTF9IQU5EU0hBS0VfRkFJTEVEAExPQ0tFRABUUkFOU0ZPUk1BVElPTl9BUFBMSUVEAE5PVF9NT0RJRklFRABOT1RfRVhURU5ERUQAQkFORFdJRFRIX0xJTUlUX0VYQ0VFREVEAFNJVEVfSVNfT1ZFUkxPQURFRABIRUFEAEV4cGVjdGVkIEhUVFAvAABeEwAAJhMAADAQAADwFwAAnRMAABUSAAA5FwAA8BIAAAoQAAB1EgAArRIAAIITAABPFAAAfxAAAKAVAAAjFAAAiRIAAIsUAABNFQAA1BEAAM8UAAAQGAAAyRYAANwWAADBEQAA4BcAALsUAAB0FAAAfBUAAOUUAAAIFwAAHxAAAGUVAACjFAAAKBUAAAIVAACZFQAALBAAAIsZAABPDwAA1A4AAGoQAADOEAAAAhcAAIkOAABuEwAAHBMAAGYUAABWFwAAwRMAAM0TAABsEwAAaBcAAGYXAABfFwAAIhMAAM4PAABpDgAA2A4AAGMWAADLEwAAqg4AACgXAAAmFwAAxRMAAF0WAADoEQAAZxMAAGUTAADyFgAAcxMAAB0XAAD5FgAA8xEAAM8OAADOFQAADBIAALMRAAClEQAAYRAAADIXAAC7EwBB+TULAQEAQZA2C+ABAQECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQf03CwEBAEGROAteAgMCAgICAgAAAgIAAgIAAgICAgICAgICAgAEAAAAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAIAAgBB/TkLAQEAQZE6C14CAAICAgICAAACAgACAgACAgICAgICAgICAAMABAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAEHwOwsNbG9zZWVlcC1hbGl2ZQBBiTwLAQEAQaA8C+ABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQYk+CwEBAEGgPgvnAQEBAQEBAQEBAQEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBY2h1bmtlZABBsMAAC18BAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQBBkMIACyFlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AQcDCAAstcmFuc2Zlci1lbmNvZGluZ3BncmFkZQ0KDQoNClNNDQoNClRUUC9DRS9UU1AvAEH5wgALBQECAAEDAEGQwwAL4AEEAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+cQACwUBAgABAwBBkMUAC+ABBAEBBQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQfnGAAsEAQAAAQBBkccAC98BAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+sgACwQBAAACAEGQyQALXwMEAAAEBAQEBAQEBAQEBAUEBAQEBAQEBAQEBAQABAAGBwQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEAEH6ygALBAEAAAEAQZDLAAsBAQBBqssAC0ECAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBB+swACwQBAAABAEGQzQALAQEAQZrNAAsGAgAAAAACAEGxzQALOgMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQfDOAAuWAU5PVU5DRUVDS09VVE5FQ1RFVEVDUklCRUxVU0hFVEVBRFNFQVJDSFJHRUNUSVZJVFlMRU5EQVJWRU9USUZZUFRJT05TQ0hTRUFZU1RBVENIR0VPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFSFRUUC9BRFRQLw==', 'base64')\n", "'use strict'\n\nconst corsSafeListedMethods = ['GET', 'HEAD', 'POST']\nconst corsSafeListedMethodsSet = new Set(corsSafeListedMethods)\n\nconst nullBodyStatus = [101, 204, 205, 304]\n\nconst redirectStatus = [301, 302, 303, 307, 308]\nconst redirectStatusSet = new Set(redirectStatus)\n\n// https://fetch.spec.whatwg.org/#block-bad-port\nconst badPorts = [\n  '1', '7', '9', '11', '13', '15', '17', '19', '20', '21', '22', '23', '25', '37', '42', '43', '53', '69', '77', '79',\n  '87', '95', '101', '102', '103', '104', '109', '110', '111', '113', '115', '117', '119', '123', '135', '137',\n  '139', '143', '161', '179', '389', '427', '465', '512', '513', '514', '515', '526', '530', '531', '532',\n  '540', '548', '554', '556', '563', '587', '601', '636', '989', '990', '993', '995', '1719', '1720', '1723',\n  '2049', '3659', '4045', '4190', '5060', '5061', '6000', '6566', '6665', '6666', '6667', '6668', '6669', '6679',\n  '6697', '10080'\n]\n\nconst badPortsSet = new Set(badPorts)\n\n// https://w3c.github.io/webappsec-referrer-policy/#referrer-policies\nconst referrerPolicy = [\n  '',\n  'no-referrer',\n  'no-referrer-when-downgrade',\n  'same-origin',\n  'origin',\n  'strict-origin',\n  'origin-when-cross-origin',\n  'strict-origin-when-cross-origin',\n  'unsafe-url'\n]\nconst referrerPolicySet = new Set(referrerPolicy)\n\nconst requestRedirect = ['follow', 'manual', 'error']\n\nconst safeMethods = ['GET', 'HEAD', 'OPTIONS', 'TRACE']\nconst safeMethodsSet = new Set(safeMethods)\n\nconst requestMode = ['navigate', 'same-origin', 'no-cors', 'cors']\n\nconst requestCredentials = ['omit', 'same-origin', 'include']\n\nconst requestCache = [\n  'default',\n  'no-store',\n  'reload',\n  'no-cache',\n  'force-cache',\n  'only-if-cached'\n]\n\n// https://fetch.spec.whatwg.org/#request-body-header-name\nconst requestBodyHeader = [\n  'content-encoding',\n  'content-language',\n  'content-location',\n  'content-type',\n  // See https://github.com/nodejs/undici/issues/2021\n  // 'Content-Length' is a forbidden header name, which is typically\n  // removed in the Headers implementation. However, undici doesn't\n  // filter out headers, so we add it here.\n  'content-length'\n]\n\n// https://fetch.spec.whatwg.org/#enumdef-requestduplex\nconst requestDuplex = [\n  'half'\n]\n\n// http://fetch.spec.whatwg.org/#forbidden-method\nconst forbiddenMethods = ['CONNECT', 'TRACE', 'TRACK']\nconst forbiddenMethodsSet = new Set(forbiddenMethods)\n\nconst subresource = [\n  'audio',\n  'audioworklet',\n  'font',\n  'image',\n  'manifest',\n  'paintworklet',\n  'script',\n  'style',\n  'track',\n  'video',\n  'xslt',\n  ''\n]\nconst subresourceSet = new Set(subresource)\n\nmodule.exports = {\n  subresource,\n  forbiddenMethods,\n  requestBodyHeader,\n  referrerPolicy,\n  requestRedirect,\n  requestMode,\n  requestCredentials,\n  requestCache,\n  redirectStatus,\n  corsSafeListedMethods,\n  nullBodyStatus,\n  safeMethods,\n  badPorts,\n  requestDuplex,\n  subresourceSet,\n  badPortsSet,\n  redirectStatusSet,\n  corsSafeListedMethodsSet,\n  safeMethodsSet,\n  forbiddenMethodsSet,\n  referrerPolicySet\n}\n", "'use strict'\n\n// In case of breaking changes, increase the version\n// number to avoid conflicts.\nconst globalOrigin = Symbol.for('undici.globalOrigin.1')\n\nfunction getGlobalOrigin () {\n  return globalThis[globalOrigin]\n}\n\nfunction setGlobalOrigin (newOrigin) {\n  if (newOrigin === undefined) {\n    Object.defineProperty(globalThis, globalOrigin, {\n      value: undefined,\n      writable: true,\n      enumerable: false,\n      configurable: false\n    })\n\n    return\n  }\n\n  const parsedURL = new URL(newOrigin)\n\n  if (parsedURL.protocol !== 'http:' && parsedURL.protocol !== 'https:') {\n    throw new TypeError(`Only http & https urls are allowed, received ${parsedURL.protocol}`)\n  }\n\n  Object.defineProperty(globalThis, globalOrigin, {\n    value: parsedURL,\n    writable: true,\n    enumerable: false,\n    configurable: false\n  })\n}\n\nmodule.exports = {\n  getGlobalOrigin,\n  setGlobalOrigin\n}\n", "'use strict'\n\nconst assert = require('node:assert')\n\nconst encoder = new TextEncoder()\n\n/**\n * @see https://mimesniff.spec.whatwg.org/#http-token-code-point\n */\nconst HTTP_TOKEN_CODEPOINTS = /^[!#$%&'*+\\-.^_|~A-Za-z0-9]+$/\nconst HTTP_WHITESPACE_REGEX = /[\\u000A\\u000D\\u0009\\u0020]/ // eslint-disable-line\nconst ASCII_WHITESPACE_REPLACE_REGEX = /[\\u0009\\u000A\\u000C\\u000D\\u0020]/g // eslint-disable-line\n/**\n * @see https://mimesniff.spec.whatwg.org/#http-quoted-string-token-code-point\n */\nconst HTTP_QUOTED_STRING_TOKENS = /^[\\u0009\\u0020-\\u007E\\u0080-\\u00FF]+$/ // eslint-disable-line\n\n// https://fetch.spec.whatwg.org/#data-url-processor\n/** @param {URL} dataURL */\nfunction dataURLProcessor (dataURL) {\n  // 1. Assert: dataURL\u2019s scheme is \"data\".\n  assert(dataURL.protocol === 'data:')\n\n  // 2. Let input be the result of running the URL\n  // serializer on dataURL with exclude fragment\n  // set to true.\n  let input = URLSerializer(dataURL, true)\n\n  // 3. Remove the leading \"data:\" string from input.\n  input = input.slice(5)\n\n  // 4. Let position point at the start of input.\n  const position = { position: 0 }\n\n  // 5. Let mimeType be the result of collecting a\n  // sequence of code points that are not equal\n  // to U+002C (,), given position.\n  let mimeType = collectASequenceOfCodePointsFast(\n    ',',\n    input,\n    position\n  )\n\n  // 6. Strip leading and trailing ASCII whitespace\n  // from mimeType.\n  // Undici implementation note: we need to store the\n  // length because if the mimetype has spaces removed,\n  // the wrong amount will be sliced from the input in\n  // step #9\n  const mimeTypeLength = mimeType.length\n  mimeType = removeASCIIWhitespace(mimeType, true, true)\n\n  // 7. If position is past the end of input, then\n  // return failure\n  if (position.position >= input.length) {\n    return 'failure'\n  }\n\n  // 8. Advance position by 1.\n  position.position++\n\n  // 9. Let encodedBody be the remainder of input.\n  const encodedBody = input.slice(mimeTypeLength + 1)\n\n  // 10. Let body be the percent-decoding of encodedBody.\n  let body = stringPercentDecode(encodedBody)\n\n  // 11. If mimeType ends with U+003B (;), followed by\n  // zero or more U+0020 SPACE, followed by an ASCII\n  // case-insensitive match for \"base64\", then:\n  if (/;(\\u0020){0,}base64$/i.test(mimeType)) {\n    // 1. Let stringBody be the isomorphic decode of body.\n    const stringBody = isomorphicDecode(body)\n\n    // 2. Set body to the forgiving-base64 decode of\n    // stringBody.\n    body = forgivingBase64(stringBody)\n\n    // 3. If body is failure, then return failure.\n    if (body === 'failure') {\n      return 'failure'\n    }\n\n    // 4. Remove the last 6 code points from mimeType.\n    mimeType = mimeType.slice(0, -6)\n\n    // 5. Remove trailing U+0020 SPACE code points from mimeType,\n    // if any.\n    mimeType = mimeType.replace(/(\\u0020)+$/, '')\n\n    // 6. Remove the last U+003B (;) code point from mimeType.\n    mimeType = mimeType.slice(0, -1)\n  }\n\n  // 12. If mimeType starts with U+003B (;), then prepend\n  // \"text/plain\" to mimeType.\n  if (mimeType.startsWith(';')) {\n    mimeType = 'text/plain' + mimeType\n  }\n\n  // 13. Let mimeTypeRecord be the result of parsing\n  // mimeType.\n  let mimeTypeRecord = parseMIMEType(mimeType)\n\n  // 14. If mimeTypeRecord is failure, then set\n  // mimeTypeRecord to text/plain;charset=US-ASCII.\n  if (mimeTypeRecord === 'failure') {\n    mimeTypeRecord = parseMIMEType('text/plain;charset=US-ASCII')\n  }\n\n  // 15. Return a new data: URL struct whose MIME\n  // type is mimeTypeRecord and body is body.\n  // https://fetch.spec.whatwg.org/#data-url-struct\n  return { mimeType: mimeTypeRecord, body }\n}\n\n// https://url.spec.whatwg.org/#concept-url-serializer\n/**\n * @param {URL} url\n * @param {boolean} excludeFragment\n */\nfunction URLSerializer (url, excludeFragment = false) {\n  if (!excludeFragment) {\n    return url.href\n  }\n\n  const href = url.href\n  const hashLength = url.hash.length\n\n  const serialized = hashLength === 0 ? href : href.substring(0, href.length - hashLength)\n\n  if (!hashLength && href.endsWith('#')) {\n    return serialized.slice(0, -1)\n  }\n\n  return serialized\n}\n\n// https://infra.spec.whatwg.org/#collect-a-sequence-of-code-points\n/**\n * @param {(char: string) => boolean} condition\n * @param {string} input\n * @param {{ position: number }} position\n */\nfunction collectASequenceOfCodePoints (condition, input, position) {\n  // 1. Let result be the empty string.\n  let result = ''\n\n  // 2. While position doesn\u2019t point past the end of input and the\n  // code point at position within input meets the condition condition:\n  while (position.position < input.length && condition(input[position.position])) {\n    // 1. Append that code point to the end of result.\n    result += input[position.position]\n\n    // 2. Advance position by 1.\n    position.position++\n  }\n\n  // 3. Return result.\n  return result\n}\n\n/**\n * A faster collectASequenceOfCodePoints that only works when comparing a single character.\n * @param {string} char\n * @param {string} input\n * @param {{ position: number }} position\n */\nfunction collectASequenceOfCodePointsFast (char, input, position) {\n  const idx = input.indexOf(char, position.position)\n  const start = position.position\n\n  if (idx === -1) {\n    position.position = input.length\n    return input.slice(start)\n  }\n\n  position.position = idx\n  return input.slice(start, position.position)\n}\n\n// https://url.spec.whatwg.org/#string-percent-decode\n/** @param {string} input */\nfunction stringPercentDecode (input) {\n  // 1. Let bytes be the UTF-8 encoding of input.\n  const bytes = encoder.encode(input)\n\n  // 2. Return the percent-decoding of bytes.\n  return percentDecode(bytes)\n}\n\n/**\n * @param {number} byte\n */\nfunction isHexCharByte (byte) {\n  // 0-9 A-F a-f\n  return (byte >= 0x30 && byte <= 0x39) || (byte >= 0x41 && byte <= 0x46) || (byte >= 0x61 && byte <= 0x66)\n}\n\n/**\n * @param {number} byte\n */\nfunction hexByteToNumber (byte) {\n  return (\n    // 0-9\n    byte >= 0x30 && byte <= 0x39\n      ? (byte - 48)\n    // Convert to uppercase\n    // ((byte & 0xDF) - 65) + 10\n      : ((byte & 0xDF) - 55)\n  )\n}\n\n// https://url.spec.whatwg.org/#percent-decode\n/** @param {Uint8Array} input */\nfunction percentDecode (input) {\n  const length = input.length\n  // 1. Let output be an empty byte sequence.\n  /** @type {Uint8Array} */\n  const output = new Uint8Array(length)\n  let j = 0\n  // 2. For each byte byte in input:\n  for (let i = 0; i < length; ++i) {\n    const byte = input[i]\n\n    // 1. If byte is not 0x25 (%), then append byte to output.\n    if (byte !== 0x25) {\n      output[j++] = byte\n\n    // 2. Otherwise, if byte is 0x25 (%) and the next two bytes\n    // after byte in input are not in the ranges\n    // 0x30 (0) to 0x39 (9), 0x41 (A) to 0x46 (F),\n    // and 0x61 (a) to 0x66 (f), all inclusive, append byte\n    // to output.\n    } else if (\n      byte === 0x25 &&\n      !(isHexCharByte(input[i + 1]) && isHexCharByte(input[i + 2]))\n    ) {\n      output[j++] = 0x25\n\n    // 3. Otherwise:\n    } else {\n      // 1. Let bytePoint be the two bytes after byte in input,\n      // decoded, and then interpreted as hexadecimal number.\n      // 2. Append a byte whose value is bytePoint to output.\n      output[j++] = (hexByteToNumber(input[i + 1]) << 4) | hexByteToNumber(input[i + 2])\n\n      // 3. Skip the next two bytes in input.\n      i += 2\n    }\n  }\n\n  // 3. Return output.\n  return length === j ? output : output.subarray(0, j)\n}\n\n// https://mimesniff.spec.whatwg.org/#parse-a-mime-type\n/** @param {string} input */\nfunction parseMIMEType (input) {\n  // 1. Remove any leading and trailing HTTP whitespace\n  // from input.\n  input = removeHTTPWhitespace(input, true, true)\n\n  // 2. Let position be a position variable for input,\n  // initially pointing at the start of input.\n  const position = { position: 0 }\n\n  // 3. Let type be the result of collecting a sequence\n  // of code points that are not U+002F (/) from\n  // input, given position.\n  const type = collectASequenceOfCodePointsFast(\n    '/',\n    input,\n    position\n  )\n\n  // 4. If type is the empty string or does not solely\n  // contain HTTP token code points, then return failure.\n  // https://mimesniff.spec.whatwg.org/#http-token-code-point\n  if (type.length === 0 || !HTTP_TOKEN_CODEPOINTS.test(type)) {\n    return 'failure'\n  }\n\n  // 5. If position is past the end of input, then return\n  // failure\n  if (position.position > input.length) {\n    return 'failure'\n  }\n\n  // 6. Advance position by 1. (This skips past U+002F (/).)\n  position.position++\n\n  // 7. Let subtype be the result of collecting a sequence of\n  // code points that are not U+003B (;) from input, given\n  // position.\n  let subtype = collectASequenceOfCodePointsFast(\n    ';',\n    input,\n    position\n  )\n\n  // 8. Remove any trailing HTTP whitespace from subtype.\n  subtype = removeHTTPWhitespace(subtype, false, true)\n\n  // 9. If subtype is the empty string or does not solely\n  // contain HTTP token code points, then return failure.\n  if (subtype.length === 0 || !HTTP_TOKEN_CODEPOINTS.test(subtype)) {\n    return 'failure'\n  }\n\n  const typeLowercase = type.toLowerCase()\n  const subtypeLowercase = subtype.toLowerCase()\n\n  // 10. Let mimeType be a new MIME type record whose type\n  // is type, in ASCII lowercase, and subtype is subtype,\n  // in ASCII lowercase.\n  // https://mimesniff.spec.whatwg.org/#mime-type\n  const mimeType = {\n    type: typeLowercase,\n    subtype: subtypeLowercase,\n    /** @type {Map<string, string>} */\n    parameters: new Map(),\n    // https://mimesniff.spec.whatwg.org/#mime-type-essence\n    essence: `${typeLowercase}/${subtypeLowercase}`\n  }\n\n  // 11. While position is not past the end of input:\n  while (position.position < input.length) {\n    // 1. Advance position by 1. (This skips past U+003B (;).)\n    position.position++\n\n    // 2. Collect a sequence of code points that are HTTP\n    // whitespace from input given position.\n    collectASequenceOfCodePoints(\n      // https://fetch.spec.whatwg.org/#http-whitespace\n      char => HTTP_WHITESPACE_REGEX.test(char),\n      input,\n      position\n    )\n\n    // 3. Let parameterName be the result of collecting a\n    // sequence of code points that are not U+003B (;)\n    // or U+003D (=) from input, given position.\n    let parameterName = collectASequenceOfCodePoints(\n      (char) => char !== ';' && char !== '=',\n      input,\n      position\n    )\n\n    // 4. Set parameterName to parameterName, in ASCII\n    // lowercase.\n    parameterName = parameterName.toLowerCase()\n\n    // 5. If position is not past the end of input, then:\n    if (position.position < input.length) {\n      // 1. If the code point at position within input is\n      // U+003B (;), then continue.\n      if (input[position.position] === ';') {\n        continue\n      }\n\n      // 2. Advance position by 1. (This skips past U+003D (=).)\n      position.position++\n    }\n\n    // 6. If position is past the end of input, then break.\n    if (position.position > input.length) {\n      break\n    }\n\n    // 7. Let parameterValue be null.\n    let parameterValue = null\n\n    // 8. If the code point at position within input is\n    // U+0022 (\"), then:\n    if (input[position.position] === '\"') {\n      // 1. Set parameterValue to the result of collecting\n      // an HTTP quoted string from input, given position\n      // and the extract-value flag.\n      parameterValue = collectAnHTTPQuotedString(input, position, true)\n\n      // 2. Collect a sequence of code points that are not\n      // U+003B (;) from input, given position.\n      collectASequenceOfCodePointsFast(\n        ';',\n        input,\n        position\n      )\n\n    // 9. Otherwise:\n    } else {\n      // 1. Set parameterValue to the result of collecting\n      // a sequence of code points that are not U+003B (;)\n      // from input, given position.\n      parameterValue = collectASequenceOfCodePointsFast(\n        ';',\n        input,\n        position\n      )\n\n      // 2. Remove any trailing HTTP whitespace from parameterValue.\n      parameterValue = removeHTTPWhitespace(parameterValue, false, true)\n\n      // 3. If parameterValue is the empty string, then continue.\n      if (parameterValue.length === 0) {\n        continue\n      }\n    }\n\n    // 10. If all of the following are true\n    // - parameterName is not the empty string\n    // - parameterName solely contains HTTP token code points\n    // - parameterValue solely contains HTTP quoted-string token code points\n    // - mimeType\u2019s parameters[parameterName] does not exist\n    // then set mimeType\u2019s parameters[parameterName] to parameterValue.\n    if (\n      parameterName.length !== 0 &&\n      HTTP_TOKEN_CODEPOINTS.test(parameterName) &&\n      (parameterValue.length === 0 || HTTP_QUOTED_STRING_TOKENS.test(parameterValue)) &&\n      !mimeType.parameters.has(parameterName)\n    ) {\n      mimeType.parameters.set(parameterName, parameterValue)\n    }\n  }\n\n  // 12. Return mimeType.\n  return mimeType\n}\n\n// https://infra.spec.whatwg.org/#forgiving-base64-decode\n/** @param {string} data */\nfunction forgivingBase64 (data) {\n  // 1. Remove all ASCII whitespace from data.\n  data = data.replace(ASCII_WHITESPACE_REPLACE_REGEX, '')  // eslint-disable-line\n\n  let dataLength = data.length\n  // 2. If data\u2019s code point length divides by 4 leaving\n  // no remainder, then:\n  if (dataLength % 4 === 0) {\n    // 1. If data ends with one or two U+003D (=) code points,\n    // then remove them from data.\n    if (data.charCodeAt(dataLength - 1) === 0x003D) {\n      --dataLength\n      if (data.charCodeAt(dataLength - 1) === 0x003D) {\n        --dataLength\n      }\n    }\n  }\n\n  // 3. If data\u2019s code point length divides by 4 leaving\n  // a remainder of 1, then return failure.\n  if (dataLength % 4 === 1) {\n    return 'failure'\n  }\n\n  // 4. If data contains a code point that is not one of\n  //  U+002B (+)\n  //  U+002F (/)\n  //  ASCII alphanumeric\n  // then return failure.\n  if (/[^+/0-9A-Za-z]/.test(data.length === dataLength ? data : data.substring(0, dataLength))) {\n    return 'failure'\n  }\n\n  const buffer = Buffer.from(data, 'base64')\n  return new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength)\n}\n\n// https://fetch.spec.whatwg.org/#collect-an-http-quoted-string\n// tests: https://fetch.spec.whatwg.org/#example-http-quoted-string\n/**\n * @param {string} input\n * @param {{ position: number }} position\n * @param {boolean?} extractValue\n */\nfunction collectAnHTTPQuotedString (input, position, extractValue) {\n  // 1. Let positionStart be position.\n  const positionStart = position.position\n\n  // 2. Let value be the empty string.\n  let value = ''\n\n  // 3. Assert: the code point at position within input\n  // is U+0022 (\").\n  assert(input[position.position] === '\"')\n\n  // 4. Advance position by 1.\n  position.position++\n\n  // 5. While true:\n  while (true) {\n    // 1. Append the result of collecting a sequence of code points\n    // that are not U+0022 (\") or U+005C (\\) from input, given\n    // position, to value.\n    value += collectASequenceOfCodePoints(\n      (char) => char !== '\"' && char !== '\\\\',\n      input,\n      position\n    )\n\n    // 2. If position is past the end of input, then break.\n    if (position.position >= input.length) {\n      break\n    }\n\n    // 3. Let quoteOrBackslash be the code point at position within\n    // input.\n    const quoteOrBackslash = input[position.position]\n\n    // 4. Advance position by 1.\n    position.position++\n\n    // 5. If quoteOrBackslash is U+005C (\\), then:\n    if (quoteOrBackslash === '\\\\') {\n      // 1. If position is past the end of input, then append\n      // U+005C (\\) to value and break.\n      if (position.position >= input.length) {\n        value += '\\\\'\n        break\n      }\n\n      // 2. Append the code point at position within input to value.\n      value += input[position.position]\n\n      // 3. Advance position by 1.\n      position.position++\n\n    // 6. Otherwise:\n    } else {\n      // 1. Assert: quoteOrBackslash is U+0022 (\").\n      assert(quoteOrBackslash === '\"')\n\n      // 2. Break.\n      break\n    }\n  }\n\n  // 6. If the extract-value flag is set, then return value.\n  if (extractValue) {\n    return value\n  }\n\n  // 7. Return the code points from positionStart to position,\n  // inclusive, within input.\n  return input.slice(positionStart, position.position)\n}\n\n/**\n * @see https://mimesniff.spec.whatwg.org/#serialize-a-mime-type\n */\nfunction serializeAMimeType (mimeType) {\n  assert(mimeType !== 'failure')\n  const { parameters, essence } = mimeType\n\n  // 1. Let serialization be the concatenation of mimeType\u2019s\n  //    type, U+002F (/), and mimeType\u2019s subtype.\n  let serialization = essence\n\n  // 2. For each name \u2192 value of mimeType\u2019s parameters:\n  for (let [name, value] of parameters.entries()) {\n    // 1. Append U+003B (;) to serialization.\n    serialization += ';'\n\n    // 2. Append name to serialization.\n    serialization += name\n\n    // 3. Append U+003D (=) to serialization.\n    serialization += '='\n\n    // 4. If value does not solely contain HTTP token code\n    //    points or value is the empty string, then:\n    if (!HTTP_TOKEN_CODEPOINTS.test(value)) {\n      // 1. Precede each occurrence of U+0022 (\") or\n      //    U+005C (\\) in value with U+005C (\\).\n      value = value.replace(/(\\\\|\")/g, '\\\\$1')\n\n      // 2. Prepend U+0022 (\") to value.\n      value = '\"' + value\n\n      // 3. Append U+0022 (\") to value.\n      value += '\"'\n    }\n\n    // 5. Append value to serialization.\n    serialization += value\n  }\n\n  // 3. Return serialization.\n  return serialization\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#http-whitespace\n * @param {number} char\n */\nfunction isHTTPWhiteSpace (char) {\n  // \"\\r\\n\\t \"\n  return char === 0x00d || char === 0x00a || char === 0x009 || char === 0x020\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#http-whitespace\n * @param {string} str\n * @param {boolean} [leading=true]\n * @param {boolean} [trailing=true]\n */\nfunction removeHTTPWhitespace (str, leading = true, trailing = true) {\n  return removeChars(str, leading, trailing, isHTTPWhiteSpace)\n}\n\n/**\n * @see https://infra.spec.whatwg.org/#ascii-whitespace\n * @param {number} char\n */\nfunction isASCIIWhitespace (char) {\n  // \"\\r\\n\\t\\f \"\n  return char === 0x00d || char === 0x00a || char === 0x009 || char === 0x00c || char === 0x020\n}\n\n/**\n * @see https://infra.spec.whatwg.org/#strip-leading-and-trailing-ascii-whitespace\n * @param {string} str\n * @param {boolean} [leading=true]\n * @param {boolean} [trailing=true]\n */\nfunction removeASCIIWhitespace (str, leading = true, trailing = true) {\n  return removeChars(str, leading, trailing, isASCIIWhitespace)\n}\n\n/**\n * @param {string} str\n * @param {boolean} leading\n * @param {boolean} trailing\n * @param {(charCode: number) => boolean} predicate\n * @returns\n */\nfunction removeChars (str, leading, trailing, predicate) {\n  let lead = 0\n  let trail = str.length - 1\n\n  if (leading) {\n    while (lead < str.length && predicate(str.charCodeAt(lead))) lead++\n  }\n\n  if (trailing) {\n    while (trail > 0 && predicate(str.charCodeAt(trail))) trail--\n  }\n\n  return lead === 0 && trail === str.length - 1 ? str : str.slice(lead, trail + 1)\n}\n\n/**\n * @see https://infra.spec.whatwg.org/#isomorphic-decode\n * @param {Uint8Array} input\n * @returns {string}\n */\nfunction isomorphicDecode (input) {\n  // 1. To isomorphic decode a byte sequence input, return a string whose code point\n  //    length is equal to input\u2019s length and whose code points have the same values\n  //    as the values of input\u2019s bytes, in the same order.\n  const length = input.length\n  if ((2 << 15) - 1 > length) {\n    return String.fromCharCode.apply(null, input)\n  }\n  let result = ''; let i = 0\n  let addition = (2 << 15) - 1\n  while (i < length) {\n    if (i + addition > length) {\n      addition = length - i\n    }\n    result += String.fromCharCode.apply(null, input.subarray(i, i += addition))\n  }\n  return result\n}\n\n/**\n * @see https://mimesniff.spec.whatwg.org/#minimize-a-supported-mime-type\n * @param {Exclude<ReturnType<typeof parseMIMEType>, 'failure'>} mimeType\n */\nfunction minimizeSupportedMimeType (mimeType) {\n  switch (mimeType.essence) {\n    case 'application/ecmascript':\n    case 'application/javascript':\n    case 'application/x-ecmascript':\n    case 'application/x-javascript':\n    case 'text/ecmascript':\n    case 'text/javascript':\n    case 'text/javascript1.0':\n    case 'text/javascript1.1':\n    case 'text/javascript1.2':\n    case 'text/javascript1.3':\n    case 'text/javascript1.4':\n    case 'text/javascript1.5':\n    case 'text/jscript':\n    case 'text/livescript':\n    case 'text/x-ecmascript':\n    case 'text/x-javascript':\n      // 1. If mimeType is a JavaScript MIME type, then return \"text/javascript\".\n      return 'text/javascript'\n    case 'application/json':\n    case 'text/json':\n      // 2. If mimeType is a JSON MIME type, then return \"application/json\".\n      return 'application/json'\n    case 'image/svg+xml':\n      // 3. If mimeType\u2019s essence is \"image/svg+xml\", then return \"image/svg+xml\".\n      return 'image/svg+xml'\n    case 'text/xml':\n    case 'application/xml':\n      // 4. If mimeType is an XML MIME type, then return \"application/xml\".\n      return 'application/xml'\n  }\n\n  // 2. If mimeType is a JSON MIME type, then return \"application/json\".\n  if (mimeType.subtype.endsWith('+json')) {\n    return 'application/json'\n  }\n\n  // 4. If mimeType is an XML MIME type, then return \"application/xml\".\n  if (mimeType.subtype.endsWith('+xml')) {\n    return 'application/xml'\n  }\n\n  // 5. If mimeType is supported by the user agent, then return mimeType\u2019s essence.\n  // Technically, node doesn't support any mimetypes.\n\n  // 6. Return the empty string.\n  return ''\n}\n\nmodule.exports = {\n  dataURLProcessor,\n  URLSerializer,\n  collectASequenceOfCodePoints,\n  collectASequenceOfCodePointsFast,\n  stringPercentDecode,\n  parseMIMEType,\n  collectAnHTTPQuotedString,\n  serializeAMimeType,\n  removeChars,\n  removeHTTPWhitespace,\n  minimizeSupportedMimeType,\n  HTTP_TOKEN_CODEPOINTS,\n  isomorphicDecode\n}\n", "'use strict'\n\nconst { types, inspect } = require('node:util')\nconst { toUSVString } = require('../../core/util')\n\n/** @type {import('../../../types/webidl').Webidl} */\nconst webidl = {}\nwebidl.converters = {}\nwebidl.util = {}\nwebidl.errors = {}\n\nwebidl.errors.exception = function (message) {\n  return new TypeError(`${message.header}: ${message.message}`)\n}\n\nwebidl.errors.conversionFailed = function (context) {\n  const plural = context.types.length === 1 ? '' : ' one of'\n  const message =\n    `${context.argument} could not be converted to` +\n    `${plural}: ${context.types.join(', ')}.`\n\n  return webidl.errors.exception({\n    header: context.prefix,\n    message\n  })\n}\n\nwebidl.errors.invalidArgument = function (context) {\n  return webidl.errors.exception({\n    header: context.prefix,\n    message: `\"${context.value}\" is an invalid ${context.type}.`\n  })\n}\n\n// https://webidl.spec.whatwg.org/#implements\nwebidl.brandCheck = function (V, I, opts) {\n  if (opts?.strict !== false) {\n    if (!(V instanceof I)) {\n      const err = new TypeError('Illegal invocation')\n      err.code = 'ERR_INVALID_THIS' // node compat.\n      throw err\n    }\n  } else {\n    if (V?.[Symbol.toStringTag] !== I.prototype[Symbol.toStringTag]) {\n      const err = new TypeError('Illegal invocation')\n      err.code = 'ERR_INVALID_THIS' // node compat.\n      throw err\n    }\n  }\n}\n\nwebidl.argumentLengthCheck = function ({ length }, min, ctx) {\n  if (length < min) {\n    throw webidl.errors.exception({\n      message: `${min} argument${min !== 1 ? 's' : ''} required, ` +\n               `but${length ? ' only' : ''} ${length} found.`,\n      header: ctx\n    })\n  }\n}\n\nwebidl.illegalConstructor = function () {\n  throw webidl.errors.exception({\n    header: 'TypeError',\n    message: 'Illegal constructor'\n  })\n}\n\n// https://tc39.es/ecma262/#sec-ecmascript-data-types-and-values\nwebidl.util.Type = function (V) {\n  switch (typeof V) {\n    case 'undefined': return 'Undefined'\n    case 'boolean': return 'Boolean'\n    case 'string': return 'String'\n    case 'symbol': return 'Symbol'\n    case 'number': return 'Number'\n    case 'bigint': return 'BigInt'\n    case 'function':\n    case 'object': {\n      if (V === null) {\n        return 'Null'\n      }\n\n      return 'Object'\n    }\n  }\n}\n\n// https://webidl.spec.whatwg.org/#abstract-opdef-converttoint\nwebidl.util.ConvertToInt = function (V, bitLength, signedness, opts) {\n  let upperBound\n  let lowerBound\n\n  // 1. If bitLength is 64, then:\n  if (bitLength === 64) {\n    // 1. Let upperBound be 2^53 \u2212 1.\n    upperBound = Math.pow(2, 53) - 1\n\n    // 2. If signedness is \"unsigned\", then let lowerBound be 0.\n    if (signedness === 'unsigned') {\n      lowerBound = 0\n    } else {\n      // 3. Otherwise let lowerBound be \u22122^53 + 1.\n      lowerBound = Math.pow(-2, 53) + 1\n    }\n  } else if (signedness === 'unsigned') {\n    // 2. Otherwise, if signedness is \"unsigned\", then:\n\n    // 1. Let lowerBound be 0.\n    lowerBound = 0\n\n    // 2. Let upperBound be 2^bitLength \u2212 1.\n    upperBound = Math.pow(2, bitLength) - 1\n  } else {\n    // 3. Otherwise:\n\n    // 1. Let lowerBound be -2^bitLength \u2212 1.\n    lowerBound = Math.pow(-2, bitLength) - 1\n\n    // 2. Let upperBound be 2^bitLength \u2212 1 \u2212 1.\n    upperBound = Math.pow(2, bitLength - 1) - 1\n  }\n\n  // 4. Let x be ? ToNumber(V).\n  let x = Number(V)\n\n  // 5. If x is \u22120, then set x to +0.\n  if (x === 0) {\n    x = 0\n  }\n\n  // 6. If the conversion is to an IDL type associated\n  //    with the [EnforceRange] extended attribute, then:\n  if (opts?.enforceRange === true) {\n    // 1. If x is NaN, +\u221E, or \u2212\u221E, then throw a TypeError.\n    if (\n      Number.isNaN(x) ||\n      x === Number.POSITIVE_INFINITY ||\n      x === Number.NEGATIVE_INFINITY\n    ) {\n      throw webidl.errors.exception({\n        header: 'Integer conversion',\n        message: `Could not convert ${webidl.util.Stringify(V)} to an integer.`\n      })\n    }\n\n    // 2. Set x to IntegerPart(x).\n    x = webidl.util.IntegerPart(x)\n\n    // 3. If x < lowerBound or x > upperBound, then\n    //    throw a TypeError.\n    if (x < lowerBound || x > upperBound) {\n      throw webidl.errors.exception({\n        header: 'Integer conversion',\n        message: `Value must be between ${lowerBound}-${upperBound}, got ${x}.`\n      })\n    }\n\n    // 4. Return x.\n    return x\n  }\n\n  // 7. If x is not NaN and the conversion is to an IDL\n  //    type associated with the [Clamp] extended\n  //    attribute, then:\n  if (!Number.isNaN(x) && opts?.clamp === true) {\n    // 1. Set x to min(max(x, lowerBound), upperBound).\n    x = Math.min(Math.max(x, lowerBound), upperBound)\n\n    // 2. Round x to the nearest integer, choosing the\n    //    even integer if it lies halfway between two,\n    //    and choosing +0 rather than \u22120.\n    if (Math.floor(x) % 2 === 0) {\n      x = Math.floor(x)\n    } else {\n      x = Math.ceil(x)\n    }\n\n    // 3. Return x.\n    return x\n  }\n\n  // 8. If x is NaN, +0, +\u221E, or \u2212\u221E, then return +0.\n  if (\n    Number.isNaN(x) ||\n    (x === 0 && Object.is(0, x)) ||\n    x === Number.POSITIVE_INFINITY ||\n    x === Number.NEGATIVE_INFINITY\n  ) {\n    return 0\n  }\n\n  // 9. Set x to IntegerPart(x).\n  x = webidl.util.IntegerPart(x)\n\n  // 10. Set x to x modulo 2^bitLength.\n  x = x % Math.pow(2, bitLength)\n\n  // 11. If signedness is \"signed\" and x \u2265 2^bitLength \u2212 1,\n  //    then return x \u2212 2^bitLength.\n  if (signedness === 'signed' && x >= Math.pow(2, bitLength) - 1) {\n    return x - Math.pow(2, bitLength)\n  }\n\n  // 12. Otherwise, return x.\n  return x\n}\n\n// https://webidl.spec.whatwg.org/#abstract-opdef-integerpart\nwebidl.util.IntegerPart = function (n) {\n  // 1. Let r be floor(abs(n)).\n  const r = Math.floor(Math.abs(n))\n\n  // 2. If n < 0, then return -1 \u00D7 r.\n  if (n < 0) {\n    return -1 * r\n  }\n\n  // 3. Otherwise, return r.\n  return r\n}\n\nwebidl.util.Stringify = function (V) {\n  const type = webidl.util.Type(V)\n\n  switch (type) {\n    case 'Symbol':\n      return `Symbol(${V.description})`\n    case 'Object':\n      return inspect(V)\n    case 'String':\n      return `\"${V}\"`\n    default:\n      return `${V}`\n  }\n}\n\n// https://webidl.spec.whatwg.org/#es-sequence\nwebidl.sequenceConverter = function (converter) {\n  return (V, prefix, argument, Iterable) => {\n    // 1. If Type(V) is not Object, throw a TypeError.\n    if (webidl.util.Type(V) !== 'Object') {\n      throw webidl.errors.exception({\n        header: prefix,\n        message: `${argument} (${webidl.util.Stringify(V)}) is not iterable.`\n      })\n    }\n\n    // 2. Let method be ? GetMethod(V, @@iterator).\n    /** @type {Generator} */\n    const method = typeof Iterable === 'function' ? Iterable() : V?.[Symbol.iterator]?.()\n    const seq = []\n    let index = 0\n\n    // 3. If method is undefined, throw a TypeError.\n    if (\n      method === undefined ||\n      typeof method.next !== 'function'\n    ) {\n      throw webidl.errors.exception({\n        header: prefix,\n        message: `${argument} is not iterable.`\n      })\n    }\n\n    // https://webidl.spec.whatwg.org/#create-sequence-from-iterable\n    while (true) {\n      const { done, value } = method.next()\n\n      if (done) {\n        break\n      }\n\n      seq.push(converter(value, prefix, `${argument}[${index++}]`))\n    }\n\n    return seq\n  }\n}\n\n// https://webidl.spec.whatwg.org/#es-to-record\nwebidl.recordConverter = function (keyConverter, valueConverter) {\n  return (O, prefix, argument) => {\n    // 1. If Type(O) is not Object, throw a TypeError.\n    if (webidl.util.Type(O) !== 'Object') {\n      throw webidl.errors.exception({\n        header: prefix,\n        message: `${argument} (\"${webidl.util.Type(O)}\") is not an Object.`\n      })\n    }\n\n    // 2. Let result be a new empty instance of record<K, V>.\n    const result = {}\n\n    if (!types.isProxy(O)) {\n      // 1. Let desc be ? O.[[GetOwnProperty]](key).\n      const keys = [...Object.getOwnPropertyNames(O), ...Object.getOwnPropertySymbols(O)]\n\n      for (const key of keys) {\n        // 1. Let typedKey be key converted to an IDL value of type K.\n        const typedKey = keyConverter(key, prefix, argument)\n\n        // 2. Let value be ? Get(O, key).\n        // 3. Let typedValue be value converted to an IDL value of type V.\n        const typedValue = valueConverter(O[key], prefix, argument)\n\n        // 4. Set result[typedKey] to typedValue.\n        result[typedKey] = typedValue\n      }\n\n      // 5. Return result.\n      return result\n    }\n\n    // 3. Let keys be ? O.[[OwnPropertyKeys]]().\n    const keys = Reflect.ownKeys(O)\n\n    // 4. For each key of keys.\n    for (const key of keys) {\n      // 1. Let desc be ? O.[[GetOwnProperty]](key).\n      const desc = Reflect.getOwnPropertyDescriptor(O, key)\n\n      // 2. If desc is not undefined and desc.[[Enumerable]] is true:\n      if (desc?.enumerable) {\n        // 1. Let typedKey be key converted to an IDL value of type K.\n        const typedKey = keyConverter(key, prefix, argument)\n\n        // 2. Let value be ? Get(O, key).\n        // 3. Let typedValue be value converted to an IDL value of type V.\n        const typedValue = valueConverter(O[key], prefix, argument)\n\n        // 4. Set result[typedKey] to typedValue.\n        result[typedKey] = typedValue\n      }\n    }\n\n    // 5. Return result.\n    return result\n  }\n}\n\nwebidl.interfaceConverter = function (i) {\n  return (V, prefix, argument, opts) => {\n    if (opts?.strict !== false && !(V instanceof i)) {\n      throw webidl.errors.exception({\n        header: prefix,\n        message: `Expected ${argument} (\"${webidl.util.Stringify(V)}\") to be an instance of ${i.name}.`\n      })\n    }\n\n    return V\n  }\n}\n\nwebidl.dictionaryConverter = function (converters) {\n  return (dictionary, prefix, argument) => {\n    const type = webidl.util.Type(dictionary)\n    const dict = {}\n\n    if (type === 'Null' || type === 'Undefined') {\n      return dict\n    } else if (type !== 'Object') {\n      throw webidl.errors.exception({\n        header: prefix,\n        message: `Expected ${dictionary} to be one of: Null, Undefined, Object.`\n      })\n    }\n\n    for (const options of converters) {\n      const { key, defaultValue, required, converter } = options\n\n      if (required === true) {\n        if (!Object.hasOwn(dictionary, key)) {\n          throw webidl.errors.exception({\n            header: prefix,\n            message: `Missing required key \"${key}\".`\n          })\n        }\n      }\n\n      let value = dictionary[key]\n      const hasDefault = Object.hasOwn(options, 'defaultValue')\n\n      // Only use defaultValue if value is undefined and\n      // a defaultValue options was provided.\n      if (hasDefault && value !== null) {\n        value ??= defaultValue()\n      }\n\n      // A key can be optional and have no default value.\n      // When this happens, do not perform a conversion,\n      // and do not assign the key a value.\n      if (required || hasDefault || value !== undefined) {\n        value = converter(value, prefix, `${argument}.${key}`)\n\n        if (\n          options.allowedValues &&\n          !options.allowedValues.includes(value)\n        ) {\n          throw webidl.errors.exception({\n            header: prefix,\n            message: `${value} is not an accepted type. Expected one of ${options.allowedValues.join(', ')}.`\n          })\n        }\n\n        dict[key] = value\n      }\n    }\n\n    return dict\n  }\n}\n\nwebidl.nullableConverter = function (converter) {\n  return (V, prefix, argument) => {\n    if (V === null) {\n      return V\n    }\n\n    return converter(V, prefix, argument)\n  }\n}\n\n// https://webidl.spec.whatwg.org/#es-DOMString\nwebidl.converters.DOMString = function (V, prefix, argument, opts) {\n  // 1. If V is null and the conversion is to an IDL type\n  //    associated with the [LegacyNullToEmptyString]\n  //    extended attribute, then return the DOMString value\n  //    that represents the empty string.\n  if (V === null && opts?.legacyNullToEmptyString) {\n    return ''\n  }\n\n  // 2. Let x be ? ToString(V).\n  if (typeof V === 'symbol') {\n    throw webidl.errors.exception({\n      header: prefix,\n      message: `${argument} is a symbol, which cannot be converted to a DOMString.`\n    })\n  }\n\n  // 3. Return the IDL DOMString value that represents the\n  //    same sequence of code units as the one the\n  //    ECMAScript String value x represents.\n  return String(V)\n}\n\n// https://webidl.spec.whatwg.org/#es-ByteString\nwebidl.converters.ByteString = function (V, prefix, argument) {\n  // 1. Let x be ? ToString(V).\n  // Note: DOMString converter perform ? ToString(V)\n  const x = webidl.converters.DOMString(V, prefix, argument)\n\n  // 2. If the value of any element of x is greater than\n  //    255, then throw a TypeError.\n  for (let index = 0; index < x.length; index++) {\n    if (x.charCodeAt(index) > 255) {\n      throw new TypeError(\n        'Cannot convert argument to a ByteString because the character at ' +\n        `index ${index} has a value of ${x.charCodeAt(index)} which is greater than 255.`\n      )\n    }\n  }\n\n  // 3. Return an IDL ByteString value whose length is the\n  //    length of x, and where the value of each element is\n  //    the value of the corresponding element of x.\n  return x\n}\n\n// https://webidl.spec.whatwg.org/#es-USVString\n// TODO: rewrite this so we can control the errors thrown\nwebidl.converters.USVString = toUSVString\n\n// https://webidl.spec.whatwg.org/#es-boolean\nwebidl.converters.boolean = function (V) {\n  // 1. Let x be the result of computing ToBoolean(V).\n  const x = Boolean(V)\n\n  // 2. Return the IDL boolean value that is the one that represents\n  //    the same truth value as the ECMAScript Boolean value x.\n  return x\n}\n\n// https://webidl.spec.whatwg.org/#es-any\nwebidl.converters.any = function (V) {\n  return V\n}\n\n// https://webidl.spec.whatwg.org/#es-long-long\nwebidl.converters['long long'] = function (V, prefix, argument) {\n  // 1. Let x be ? ConvertToInt(V, 64, \"signed\").\n  const x = webidl.util.ConvertToInt(V, 64, 'signed', undefined, prefix, argument)\n\n  // 2. Return the IDL long long value that represents\n  //    the same numeric value as x.\n  return x\n}\n\n// https://webidl.spec.whatwg.org/#es-unsigned-long-long\nwebidl.converters['unsigned long long'] = function (V, prefix, argument) {\n  // 1. Let x be ? ConvertToInt(V, 64, \"unsigned\").\n  const x = webidl.util.ConvertToInt(V, 64, 'unsigned', undefined, prefix, argument)\n\n  // 2. Return the IDL unsigned long long value that\n  //    represents the same numeric value as x.\n  return x\n}\n\n// https://webidl.spec.whatwg.org/#es-unsigned-long\nwebidl.converters['unsigned long'] = function (V, prefix, argument) {\n  // 1. Let x be ? ConvertToInt(V, 32, \"unsigned\").\n  const x = webidl.util.ConvertToInt(V, 32, 'unsigned', undefined, prefix, argument)\n\n  // 2. Return the IDL unsigned long value that\n  //    represents the same numeric value as x.\n  return x\n}\n\n// https://webidl.spec.whatwg.org/#es-unsigned-short\nwebidl.converters['unsigned short'] = function (V, prefix, argument, opts) {\n  // 1. Let x be ? ConvertToInt(V, 16, \"unsigned\").\n  const x = webidl.util.ConvertToInt(V, 16, 'unsigned', opts, prefix, argument)\n\n  // 2. Return the IDL unsigned short value that represents\n  //    the same numeric value as x.\n  return x\n}\n\n// https://webidl.spec.whatwg.org/#idl-ArrayBuffer\nwebidl.converters.ArrayBuffer = function (V, prefix, argument, opts) {\n  // 1. If Type(V) is not Object, or V does not have an\n  //    [[ArrayBufferData]] internal slot, then throw a\n  //    TypeError.\n  // see: https://tc39.es/ecma262/#sec-properties-of-the-arraybuffer-instances\n  // see: https://tc39.es/ecma262/#sec-properties-of-the-sharedarraybuffer-instances\n  if (\n    webidl.util.Type(V) !== 'Object' ||\n    !types.isAnyArrayBuffer(V)\n  ) {\n    throw webidl.errors.conversionFailed({\n      prefix,\n      argument: `${argument} (\"${webidl.util.Stringify(V)}\")`,\n      types: ['ArrayBuffer']\n    })\n  }\n\n  // 2. If the conversion is not to an IDL type associated\n  //    with the [AllowShared] extended attribute, and\n  //    IsSharedArrayBuffer(V) is true, then throw a\n  //    TypeError.\n  if (opts?.allowShared === false && types.isSharedArrayBuffer(V)) {\n    throw webidl.errors.exception({\n      header: 'ArrayBuffer',\n      message: 'SharedArrayBuffer is not allowed.'\n    })\n  }\n\n  // 3. If the conversion is not to an IDL type associated\n  //    with the [AllowResizable] extended attribute, and\n  //    IsResizableArrayBuffer(V) is true, then throw a\n  //    TypeError.\n  if (V.resizable || V.growable) {\n    throw webidl.errors.exception({\n      header: 'ArrayBuffer',\n      message: 'Received a resizable ArrayBuffer.'\n    })\n  }\n\n  // 4. Return the IDL ArrayBuffer value that is a\n  //    reference to the same object as V.\n  return V\n}\n\nwebidl.converters.TypedArray = function (V, T, prefix, name, opts) {\n  // 1. Let T be the IDL type V is being converted to.\n\n  // 2. If Type(V) is not Object, or V does not have a\n  //    [[TypedArrayName]] internal slot with a value\n  //    equal to T\u2019s name, then throw a TypeError.\n  if (\n    webidl.util.Type(V) !== 'Object' ||\n    !types.isTypedArray(V) ||\n    V.constructor.name !== T.name\n  ) {\n    throw webidl.errors.conversionFailed({\n      prefix,\n      argument: `${name} (\"${webidl.util.Stringify(V)}\")`,\n      types: [T.name]\n    })\n  }\n\n  // 3. If the conversion is not to an IDL type associated\n  //    with the [AllowShared] extended attribute, and\n  //    IsSharedArrayBuffer(V.[[ViewedArrayBuffer]]) is\n  //    true, then throw a TypeError.\n  if (opts?.allowShared === false && types.isSharedArrayBuffer(V.buffer)) {\n    throw webidl.errors.exception({\n      header: 'ArrayBuffer',\n      message: 'SharedArrayBuffer is not allowed.'\n    })\n  }\n\n  // 4. If the conversion is not to an IDL type associated\n  //    with the [AllowResizable] extended attribute, and\n  //    IsResizableArrayBuffer(V.[[ViewedArrayBuffer]]) is\n  //    true, then throw a TypeError.\n  if (V.buffer.resizable || V.buffer.growable) {\n    throw webidl.errors.exception({\n      header: 'ArrayBuffer',\n      message: 'Received a resizable ArrayBuffer.'\n    })\n  }\n\n  // 5. Return the IDL value of type T that is a reference\n  //    to the same object as V.\n  return V\n}\n\nwebidl.converters.DataView = function (V, prefix, name, opts) {\n  // 1. If Type(V) is not Object, or V does not have a\n  //    [[DataView]] internal slot, then throw a TypeError.\n  if (webidl.util.Type(V) !== 'Object' || !types.isDataView(V)) {\n    throw webidl.errors.exception({\n      header: prefix,\n      message: `${name} is not a DataView.`\n    })\n  }\n\n  // 2. If the conversion is not to an IDL type associated\n  //    with the [AllowShared] extended attribute, and\n  //    IsSharedArrayBuffer(V.[[ViewedArrayBuffer]]) is true,\n  //    then throw a TypeError.\n  if (opts?.allowShared === false && types.isSharedArrayBuffer(V.buffer)) {\n    throw webidl.errors.exception({\n      header: 'ArrayBuffer',\n      message: 'SharedArrayBuffer is not allowed.'\n    })\n  }\n\n  // 3. If the conversion is not to an IDL type associated\n  //    with the [AllowResizable] extended attribute, and\n  //    IsResizableArrayBuffer(V.[[ViewedArrayBuffer]]) is\n  //    true, then throw a TypeError.\n  if (V.buffer.resizable || V.buffer.growable) {\n    throw webidl.errors.exception({\n      header: 'ArrayBuffer',\n      message: 'Received a resizable ArrayBuffer.'\n    })\n  }\n\n  // 4. Return the IDL DataView value that is a reference\n  //    to the same object as V.\n  return V\n}\n\n// https://webidl.spec.whatwg.org/#BufferSource\nwebidl.converters.BufferSource = function (V, prefix, name, opts) {\n  if (types.isAnyArrayBuffer(V)) {\n    return webidl.converters.ArrayBuffer(V, prefix, name, { ...opts, allowShared: false })\n  }\n\n  if (types.isTypedArray(V)) {\n    return webidl.converters.TypedArray(V, V.constructor, prefix, name, { ...opts, allowShared: false })\n  }\n\n  if (types.isDataView(V)) {\n    return webidl.converters.DataView(V, prefix, name, { ...opts, allowShared: false })\n  }\n\n  throw webidl.errors.conversionFailed({\n    prefix,\n    argument: `${name} (\"${webidl.util.Stringify(V)}\")`,\n    types: ['BufferSource']\n  })\n}\n\nwebidl.converters['sequence<ByteString>'] = webidl.sequenceConverter(\n  webidl.converters.ByteString\n)\n\nwebidl.converters['sequence<sequence<ByteString>>'] = webidl.sequenceConverter(\n  webidl.converters['sequence<ByteString>']\n)\n\nwebidl.converters['record<ByteString, ByteString>'] = webidl.recordConverter(\n  webidl.converters.ByteString,\n  webidl.converters.ByteString\n)\n\nmodule.exports = {\n  webidl\n}\n", "'use strict'\n\nconst { Transform } = require('node:stream')\nconst zlib = require('node:zlib')\nconst { redirectStatusSet, referrerPolicySet: referrerPolicyTokens, badPortsSet } = require('./constants')\nconst { getGlobalOrigin } = require('./global')\nconst { collectASequenceOfCodePoints, collectAnHTTPQuotedString, removeChars, parseMIMEType } = require('./data-url')\nconst { performance } = require('node:perf_hooks')\nconst { isBlobLike, ReadableStreamFrom, isValidHTTPToken } = require('../../core/util')\nconst assert = require('node:assert')\nconst { isUint8Array } = require('node:util/types')\nconst { webidl } = require('./webidl')\n\nlet supportedHashes = []\n\n// https://nodejs.org/api/crypto.html#determining-if-crypto-support-is-unavailable\n/** @type {import('crypto')} */\nlet crypto\ntry {\n  crypto = require('node:crypto')\n  const possibleRelevantHashes = ['sha256', 'sha384', 'sha512']\n  supportedHashes = crypto.getHashes().filter((hash) => possibleRelevantHashes.includes(hash))\n/* c8 ignore next 3 */\n} catch {\n\n}\n\nfunction responseURL (response) {\n  // https://fetch.spec.whatwg.org/#responses\n  // A response has an associated URL. It is a pointer to the last URL\n  // in response\u2019s URL list and null if response\u2019s URL list is empty.\n  const urlList = response.urlList\n  const length = urlList.length\n  return length === 0 ? null : urlList[length - 1].toString()\n}\n\n// https://fetch.spec.whatwg.org/#concept-response-location-url\nfunction responseLocationURL (response, requestFragment) {\n  // 1. If response\u2019s status is not a redirect status, then return null.\n  if (!redirectStatusSet.has(response.status)) {\n    return null\n  }\n\n  // 2. Let location be the result of extracting header list values given\n  // `Location` and response\u2019s header list.\n  let location = response.headersList.get('location', true)\n\n  // 3. If location is a header value, then set location to the result of\n  //    parsing location with response\u2019s URL.\n  if (location !== null && isValidHeaderValue(location)) {\n    if (!isValidEncodedURL(location)) {\n      // Some websites respond location header in UTF-8 form without encoding them as ASCII\n      // and major browsers redirect them to correctly UTF-8 encoded addresses.\n      // Here, we handle that behavior in the same way.\n      location = normalizeBinaryStringToUtf8(location)\n    }\n    location = new URL(location, responseURL(response))\n  }\n\n  // 4. If location is a URL whose fragment is null, then set location\u2019s\n  // fragment to requestFragment.\n  if (location && !location.hash) {\n    location.hash = requestFragment\n  }\n\n  // 5. Return location.\n  return location\n}\n\n/**\n * @see https://www.rfc-editor.org/rfc/rfc1738#section-2.2\n * @param {string} url\n * @returns {boolean}\n */\nfunction isValidEncodedURL (url) {\n  for (let i = 0; i < url.length; ++i) {\n    const code = url.charCodeAt(i)\n\n    if (\n      code > 0x7E || // Non-US-ASCII + DEL\n      code < 0x20 // Control characters NUL - US\n    ) {\n      return false\n    }\n  }\n  return true\n}\n\n/**\n * If string contains non-ASCII characters, assumes it's UTF-8 encoded and decodes it.\n * Since UTF-8 is a superset of ASCII, this will work for ASCII strings as well.\n * @param {string} value\n * @returns {string}\n */\nfunction normalizeBinaryStringToUtf8 (value) {\n  return Buffer.from(value, 'binary').toString('utf8')\n}\n\n/** @returns {URL} */\nfunction requestCurrentURL (request) {\n  return request.urlList[request.urlList.length - 1]\n}\n\nfunction requestBadPort (request) {\n  // 1. Let url be request\u2019s current URL.\n  const url = requestCurrentURL(request)\n\n  // 2. If url\u2019s scheme is an HTTP(S) scheme and url\u2019s port is a bad port,\n  // then return blocked.\n  if (urlIsHttpHttpsScheme(url) && badPortsSet.has(url.port)) {\n    return 'blocked'\n  }\n\n  // 3. Return allowed.\n  return 'allowed'\n}\n\nfunction isErrorLike (object) {\n  return object instanceof Error || (\n    object?.constructor?.name === 'Error' ||\n    object?.constructor?.name === 'DOMException'\n  )\n}\n\n// Check whether |statusText| is a ByteString and\n// matches the Reason-Phrase token production.\n// RFC 2616: https://tools.ietf.org/html/rfc2616\n// RFC 7230: https://tools.ietf.org/html/rfc7230\n// \"reason-phrase = *( HTAB / SP / VCHAR / obs-text )\"\n// https://github.com/chromium/chromium/blob/94.0.4604.1/third_party/blink/renderer/core/fetch/response.cc#L116\nfunction isValidReasonPhrase (statusText) {\n  for (let i = 0; i < statusText.length; ++i) {\n    const c = statusText.charCodeAt(i)\n    if (\n      !(\n        (\n          c === 0x09 || // HTAB\n          (c >= 0x20 && c <= 0x7e) || // SP / VCHAR\n          (c >= 0x80 && c <= 0xff)\n        ) // obs-text\n      )\n    ) {\n      return false\n    }\n  }\n  return true\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#header-name\n * @param {string} potentialValue\n */\nconst isValidHeaderName = isValidHTTPToken\n\n/**\n * @see https://fetch.spec.whatwg.org/#header-value\n * @param {string} potentialValue\n */\nfunction isValidHeaderValue (potentialValue) {\n  // - Has no leading or trailing HTTP tab or space bytes.\n  // - Contains no 0x00 (NUL) or HTTP newline bytes.\n  return (\n    potentialValue[0] === '\\t' ||\n    potentialValue[0] === ' ' ||\n    potentialValue[potentialValue.length - 1] === '\\t' ||\n    potentialValue[potentialValue.length - 1] === ' ' ||\n    potentialValue.includes('\\n') ||\n    potentialValue.includes('\\r') ||\n    potentialValue.includes('\\0')\n  ) === false\n}\n\n// https://w3c.github.io/webappsec-referrer-policy/#set-requests-referrer-policy-on-redirect\nfunction setRequestReferrerPolicyOnRedirect (request, actualResponse) {\n  //  Given a request request and a response actualResponse, this algorithm\n  //  updates request\u2019s referrer policy according to the Referrer-Policy\n  //  header (if any) in actualResponse.\n\n  // 1. Let policy be the result of executing \u00A7 8.1 Parse a referrer policy\n  // from a Referrer-Policy header on actualResponse.\n\n  // 8.1 Parse a referrer policy from a Referrer-Policy header\n  // 1. Let policy-tokens be the result of extracting header list values given `Referrer-Policy` and response\u2019s header list.\n  const { headersList } = actualResponse\n  // 2. Let policy be the empty string.\n  // 3. For each token in policy-tokens, if token is a referrer policy and token is not the empty string, then set policy to token.\n  // 4. Return policy.\n  const policyHeader = (headersList.get('referrer-policy', true) ?? '').split(',')\n\n  // Note: As the referrer-policy can contain multiple policies\n  // separated by comma, we need to loop through all of them\n  // and pick the first valid one.\n  // Ref: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referrer-Policy#specify_a_fallback_policy\n  let policy = ''\n  if (policyHeader.length > 0) {\n    // The right-most policy takes precedence.\n    // The left-most policy is the fallback.\n    for (let i = policyHeader.length; i !== 0; i--) {\n      const token = policyHeader[i - 1].trim()\n      if (referrerPolicyTokens.has(token)) {\n        policy = token\n        break\n      }\n    }\n  }\n\n  // 2. If policy is not the empty string, then set request\u2019s referrer policy to policy.\n  if (policy !== '') {\n    request.referrerPolicy = policy\n  }\n}\n\n// https://fetch.spec.whatwg.org/#cross-origin-resource-policy-check\nfunction crossOriginResourcePolicyCheck () {\n  // TODO\n  return 'allowed'\n}\n\n// https://fetch.spec.whatwg.org/#concept-cors-check\nfunction corsCheck () {\n  // TODO\n  return 'success'\n}\n\n// https://fetch.spec.whatwg.org/#concept-tao-check\nfunction TAOCheck () {\n  // TODO\n  return 'success'\n}\n\nfunction appendFetchMetadata (httpRequest) {\n  //  https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-dest-header\n  //  TODO\n\n  //  https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-mode-header\n\n  //  1. Assert: r\u2019s url is a potentially trustworthy URL.\n  //  TODO\n\n  //  2. Let header be a Structured Header whose value is a token.\n  let header = null\n\n  //  3. Set header\u2019s value to r\u2019s mode.\n  header = httpRequest.mode\n\n  //  4. Set a structured field value `Sec-Fetch-Mode`/header in r\u2019s header list.\n  httpRequest.headersList.set('sec-fetch-mode', header, true)\n\n  //  https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-site-header\n  //  TODO\n\n  //  https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-user-header\n  //  TODO\n}\n\n// https://fetch.spec.whatwg.org/#append-a-request-origin-header\nfunction appendRequestOriginHeader (request) {\n  // 1. Let serializedOrigin be the result of byte-serializing a request origin\n  //    with request.\n  // TODO: implement \"byte-serializing a request origin\"\n  let serializedOrigin = request.origin\n\n  // \"'client' is changed to an origin during fetching.\"\n  // This doesn't happen in undici (in most cases) because undici, by default,\n  // has no concept of origin.\n  if (serializedOrigin === 'client') {\n    return\n  }\n\n  // 2. If request\u2019s response tainting is \"cors\" or request\u2019s mode is \"websocket\",\n  //    then append (`Origin`, serializedOrigin) to request\u2019s header list.\n  // 3. Otherwise, if request\u2019s method is neither `GET` nor `HEAD`, then:\n  if (request.responseTainting === 'cors' || request.mode === 'websocket') {\n    request.headersList.append('origin', serializedOrigin, true)\n  } else if (request.method !== 'GET' && request.method !== 'HEAD') {\n    // 1. Switch on request\u2019s referrer policy:\n    switch (request.referrerPolicy) {\n      case 'no-referrer':\n        // Set serializedOrigin to `null`.\n        serializedOrigin = null\n        break\n      case 'no-referrer-when-downgrade':\n      case 'strict-origin':\n      case 'strict-origin-when-cross-origin':\n        // If request\u2019s origin is a tuple origin, its scheme is \"https\", and\n        // request\u2019s current URL\u2019s scheme is not \"https\", then set\n        // serializedOrigin to `null`.\n        if (request.origin && urlHasHttpsScheme(request.origin) && !urlHasHttpsScheme(requestCurrentURL(request))) {\n          serializedOrigin = null\n        }\n        break\n      case 'same-origin':\n        // If request\u2019s origin is not same origin with request\u2019s current URL\u2019s\n        // origin, then set serializedOrigin to `null`.\n        if (!sameOrigin(request, requestCurrentURL(request))) {\n          serializedOrigin = null\n        }\n        break\n      default:\n        // Do nothing.\n    }\n\n    // 2. Append (`Origin`, serializedOrigin) to request\u2019s header list.\n    request.headersList.append('origin', serializedOrigin, true)\n  }\n}\n\n// https://w3c.github.io/hr-time/#dfn-coarsen-time\nfunction coarsenTime (timestamp, crossOriginIsolatedCapability) {\n  // TODO\n  return timestamp\n}\n\n// https://fetch.spec.whatwg.org/#clamp-and-coarsen-connection-timing-info\nfunction clampAndCoarsenConnectionTimingInfo (connectionTimingInfo, defaultStartTime, crossOriginIsolatedCapability) {\n  if (!connectionTimingInfo?.startTime || connectionTimingInfo.startTime < defaultStartTime) {\n    return {\n      domainLookupStartTime: defaultStartTime,\n      domainLookupEndTime: defaultStartTime,\n      connectionStartTime: defaultStartTime,\n      connectionEndTime: defaultStartTime,\n      secureConnectionStartTime: defaultStartTime,\n      ALPNNegotiatedProtocol: connectionTimingInfo?.ALPNNegotiatedProtocol\n    }\n  }\n\n  return {\n    domainLookupStartTime: coarsenTime(connectionTimingInfo.domainLookupStartTime, crossOriginIsolatedCapability),\n    domainLookupEndTime: coarsenTime(connectionTimingInfo.domainLookupEndTime, crossOriginIsolatedCapability),\n    connectionStartTime: coarsenTime(connectionTimingInfo.connectionStartTime, crossOriginIsolatedCapability),\n    connectionEndTime: coarsenTime(connectionTimingInfo.connectionEndTime, crossOriginIsolatedCapability),\n    secureConnectionStartTime: coarsenTime(connectionTimingInfo.secureConnectionStartTime, crossOriginIsolatedCapability),\n    ALPNNegotiatedProtocol: connectionTimingInfo.ALPNNegotiatedProtocol\n  }\n}\n\n// https://w3c.github.io/hr-time/#dfn-coarsened-shared-current-time\nfunction coarsenedSharedCurrentTime (crossOriginIsolatedCapability) {\n  return coarsenTime(performance.now(), crossOriginIsolatedCapability)\n}\n\n// https://fetch.spec.whatwg.org/#create-an-opaque-timing-info\nfunction createOpaqueTimingInfo (timingInfo) {\n  return {\n    startTime: timingInfo.startTime ?? 0,\n    redirectStartTime: 0,\n    redirectEndTime: 0,\n    postRedirectStartTime: timingInfo.startTime ?? 0,\n    finalServiceWorkerStartTime: 0,\n    finalNetworkResponseStartTime: 0,\n    finalNetworkRequestStartTime: 0,\n    endTime: 0,\n    encodedBodySize: 0,\n    decodedBodySize: 0,\n    finalConnectionTimingInfo: null\n  }\n}\n\n// https://html.spec.whatwg.org/multipage/origin.html#policy-container\nfunction makePolicyContainer () {\n  // Note: the fetch spec doesn't make use of embedder policy or CSP list\n  return {\n    referrerPolicy: 'strict-origin-when-cross-origin'\n  }\n}\n\n// https://html.spec.whatwg.org/multipage/origin.html#clone-a-policy-container\nfunction clonePolicyContainer (policyContainer) {\n  return {\n    referrerPolicy: policyContainer.referrerPolicy\n  }\n}\n\n// https://w3c.github.io/webappsec-referrer-policy/#determine-requests-referrer\nfunction determineRequestsReferrer (request) {\n  // 1. Let policy be request's referrer policy.\n  const policy = request.referrerPolicy\n\n  // Note: policy cannot (shouldn't) be null or an empty string.\n  assert(policy)\n\n  // 2. Let environment be request\u2019s client.\n\n  let referrerSource = null\n\n  // 3. Switch on request\u2019s referrer:\n  if (request.referrer === 'client') {\n    // Note: node isn't a browser and doesn't implement document/iframes,\n    // so we bypass this step and replace it with our own.\n\n    const globalOrigin = getGlobalOrigin()\n\n    if (!globalOrigin || globalOrigin.origin === 'null') {\n      return 'no-referrer'\n    }\n\n    // note: we need to clone it as it's mutated\n    referrerSource = new URL(globalOrigin)\n  } else if (request.referrer instanceof URL) {\n    // Let referrerSource be request\u2019s referrer.\n    referrerSource = request.referrer\n  }\n\n  // 4. Let request\u2019s referrerURL be the result of stripping referrerSource for\n  //    use as a referrer.\n  let referrerURL = stripURLForReferrer(referrerSource)\n\n  // 5. Let referrerOrigin be the result of stripping referrerSource for use as\n  //    a referrer, with the origin-only flag set to true.\n  const referrerOrigin = stripURLForReferrer(referrerSource, true)\n\n  // 6. If the result of serializing referrerURL is a string whose length is\n  //    greater than 4096, set referrerURL to referrerOrigin.\n  if (referrerURL.toString().length > 4096) {\n    referrerURL = referrerOrigin\n  }\n\n  const areSameOrigin = sameOrigin(request, referrerURL)\n  const isNonPotentiallyTrustWorthy = isURLPotentiallyTrustworthy(referrerURL) &&\n    !isURLPotentiallyTrustworthy(request.url)\n\n  // 8. Execute the switch statements corresponding to the value of policy:\n  switch (policy) {\n    case 'origin': return referrerOrigin != null ? referrerOrigin : stripURLForReferrer(referrerSource, true)\n    case 'unsafe-url': return referrerURL\n    case 'same-origin':\n      return areSameOrigin ? referrerOrigin : 'no-referrer'\n    case 'origin-when-cross-origin':\n      return areSameOrigin ? referrerURL : referrerOrigin\n    case 'strict-origin-when-cross-origin': {\n      const currentURL = requestCurrentURL(request)\n\n      // 1. If the origin of referrerURL and the origin of request\u2019s current\n      //    URL are the same, then return referrerURL.\n      if (sameOrigin(referrerURL, currentURL)) {\n        return referrerURL\n      }\n\n      // 2. If referrerURL is a potentially trustworthy URL and request\u2019s\n      //    current URL is not a potentially trustworthy URL, then return no\n      //    referrer.\n      if (isURLPotentiallyTrustworthy(referrerURL) && !isURLPotentiallyTrustworthy(currentURL)) {\n        return 'no-referrer'\n      }\n\n      // 3. Return referrerOrigin.\n      return referrerOrigin\n    }\n    case 'strict-origin': // eslint-disable-line\n      /**\n         * 1. If referrerURL is a potentially trustworthy URL and\n         * request\u2019s current URL is not a potentially trustworthy URL,\n         * then return no referrer.\n         * 2. Return referrerOrigin\n        */\n    case 'no-referrer-when-downgrade': // eslint-disable-line\n      /**\n       * 1. If referrerURL is a potentially trustworthy URL and\n       * request\u2019s current URL is not a potentially trustworthy URL,\n       * then return no referrer.\n       * 2. Return referrerOrigin\n      */\n\n    default: // eslint-disable-line\n      return isNonPotentiallyTrustWorthy ? 'no-referrer' : referrerOrigin\n  }\n}\n\n/**\n * @see https://w3c.github.io/webappsec-referrer-policy/#strip-url\n * @param {URL} url\n * @param {boolean|undefined} originOnly\n */\nfunction stripURLForReferrer (url, originOnly) {\n  // 1. Assert: url is a URL.\n  assert(url instanceof URL)\n\n  url = new URL(url)\n\n  // 2. If url\u2019s scheme is a local scheme, then return no referrer.\n  if (url.protocol === 'file:' || url.protocol === 'about:' || url.protocol === 'blank:') {\n    return 'no-referrer'\n  }\n\n  // 3. Set url\u2019s username to the empty string.\n  url.username = ''\n\n  // 4. Set url\u2019s password to the empty string.\n  url.password = ''\n\n  // 5. Set url\u2019s fragment to null.\n  url.hash = ''\n\n  // 6. If the origin-only flag is true, then:\n  if (originOnly) {\n    // 1. Set url\u2019s path to \u00AB the empty string \u00BB.\n    url.pathname = ''\n\n    // 2. Set url\u2019s query to null.\n    url.search = ''\n  }\n\n  // 7. Return url.\n  return url\n}\n\nfunction isURLPotentiallyTrustworthy (url) {\n  if (!(url instanceof URL)) {\n    return false\n  }\n\n  // If child of about, return true\n  if (url.href === 'about:blank' || url.href === 'about:srcdoc') {\n    return true\n  }\n\n  // If scheme is data, return true\n  if (url.protocol === 'data:') return true\n\n  // If file, return true\n  if (url.protocol === 'file:') return true\n\n  return isOriginPotentiallyTrustworthy(url.origin)\n\n  function isOriginPotentiallyTrustworthy (origin) {\n    // If origin is explicitly null, return false\n    if (origin == null || origin === 'null') return false\n\n    const originAsURL = new URL(origin)\n\n    // If secure, return true\n    if (originAsURL.protocol === 'https:' || originAsURL.protocol === 'wss:') {\n      return true\n    }\n\n    // If localhost or variants, return true\n    if (/^127(?:\\.[0-9]+){0,2}\\.[0-9]+$|^\\[(?:0*:)*?:?0*1\\]$/.test(originAsURL.hostname) ||\n     (originAsURL.hostname === 'localhost' || originAsURL.hostname.includes('localhost.')) ||\n     (originAsURL.hostname.endsWith('.localhost'))) {\n      return true\n    }\n\n    // If any other, return false\n    return false\n  }\n}\n\n/**\n * @see https://w3c.github.io/webappsec-subresource-integrity/#does-response-match-metadatalist\n * @param {Uint8Array} bytes\n * @param {string} metadataList\n */\nfunction bytesMatch (bytes, metadataList) {\n  // If node is not built with OpenSSL support, we cannot check\n  // a request's integrity, so allow it by default (the spec will\n  // allow requests if an invalid hash is given, as precedence).\n  /* istanbul ignore if: only if node is built with --without-ssl */\n  if (crypto === undefined) {\n    return true\n  }\n\n  // 1. Let parsedMetadata be the result of parsing metadataList.\n  const parsedMetadata = parseMetadata(metadataList)\n\n  // 2. If parsedMetadata is no metadata, return true.\n  if (parsedMetadata === 'no metadata') {\n    return true\n  }\n\n  // 3. If response is not eligible for integrity validation, return false.\n  // TODO\n\n  // 4. If parsedMetadata is the empty set, return true.\n  if (parsedMetadata.length === 0) {\n    return true\n  }\n\n  // 5. Let metadata be the result of getting the strongest\n  //    metadata from parsedMetadata.\n  const strongest = getStrongestMetadata(parsedMetadata)\n  const metadata = filterMetadataListByAlgorithm(parsedMetadata, strongest)\n\n  // 6. For each item in metadata:\n  for (const item of metadata) {\n    // 1. Let algorithm be the alg component of item.\n    const algorithm = item.algo\n\n    // 2. Let expectedValue be the val component of item.\n    const expectedValue = item.hash\n\n    // See https://github.com/web-platform-tests/wpt/commit/e4c5cc7a5e48093220528dfdd1c4012dc3837a0e\n    // \"be liberal with padding\". This is annoying, and it's not even in the spec.\n\n    // 3. Let actualValue be the result of applying algorithm to bytes.\n    let actualValue = crypto.createHash(algorithm).update(bytes).digest('base64')\n\n    if (actualValue[actualValue.length - 1] === '=') {\n      if (actualValue[actualValue.length - 2] === '=') {\n        actualValue = actualValue.slice(0, -2)\n      } else {\n        actualValue = actualValue.slice(0, -1)\n      }\n    }\n\n    // 4. If actualValue is a case-sensitive match for expectedValue,\n    //    return true.\n    if (compareBase64Mixed(actualValue, expectedValue)) {\n      return true\n    }\n  }\n\n  // 7. Return false.\n  return false\n}\n\n// https://w3c.github.io/webappsec-subresource-integrity/#grammardef-hash-with-options\n// https://www.w3.org/TR/CSP2/#source-list-syntax\n// https://www.rfc-editor.org/rfc/rfc5234#appendix-B.1\nconst parseHashWithOptions = /(?<algo>sha256|sha384|sha512)-((?<hash>[A-Za-z0-9+/]+|[A-Za-z0-9_-]+)={0,2}(?:\\s|$)( +[!-~]*)?)?/i\n\n/**\n * @see https://w3c.github.io/webappsec-subresource-integrity/#parse-metadata\n * @param {string} metadata\n */\nfunction parseMetadata (metadata) {\n  // 1. Let result be the empty set.\n  /** @type {{ algo: string, hash: string }[]} */\n  const result = []\n\n  // 2. Let empty be equal to true.\n  let empty = true\n\n  // 3. For each token returned by splitting metadata on spaces:\n  for (const token of metadata.split(' ')) {\n    // 1. Set empty to false.\n    empty = false\n\n    // 2. Parse token as a hash-with-options.\n    const parsedToken = parseHashWithOptions.exec(token)\n\n    // 3. If token does not parse, continue to the next token.\n    if (\n      parsedToken === null ||\n      parsedToken.groups === undefined ||\n      parsedToken.groups.algo === undefined\n    ) {\n      // Note: Chromium blocks the request at this point, but Firefox\n      // gives a warning that an invalid integrity was given. The\n      // correct behavior is to ignore these, and subsequently not\n      // check the integrity of the resource.\n      continue\n    }\n\n    // 4. Let algorithm be the hash-algo component of token.\n    const algorithm = parsedToken.groups.algo.toLowerCase()\n\n    // 5. If algorithm is a hash function recognized by the user\n    //    agent, add the parsed token to result.\n    if (supportedHashes.includes(algorithm)) {\n      result.push(parsedToken.groups)\n    }\n  }\n\n  // 4. Return no metadata if empty is true, otherwise return result.\n  if (empty === true) {\n    return 'no metadata'\n  }\n\n  return result\n}\n\n/**\n * @param {{ algo: 'sha256' | 'sha384' | 'sha512' }[]} metadataList\n */\nfunction getStrongestMetadata (metadataList) {\n  // Let algorithm be the algo component of the first item in metadataList.\n  // Can be sha256\n  let algorithm = metadataList[0].algo\n  // If the algorithm is sha512, then it is the strongest\n  // and we can return immediately\n  if (algorithm[3] === '5') {\n    return algorithm\n  }\n\n  for (let i = 1; i < metadataList.length; ++i) {\n    const metadata = metadataList[i]\n    // If the algorithm is sha512, then it is the strongest\n    // and we can break the loop immediately\n    if (metadata.algo[3] === '5') {\n      algorithm = 'sha512'\n      break\n    // If the algorithm is sha384, then a potential sha256 or sha384 is ignored\n    } else if (algorithm[3] === '3') {\n      continue\n    // algorithm is sha256, check if algorithm is sha384 and if so, set it as\n    // the strongest\n    } else if (metadata.algo[3] === '3') {\n      algorithm = 'sha384'\n    }\n  }\n  return algorithm\n}\n\nfunction filterMetadataListByAlgorithm (metadataList, algorithm) {\n  if (metadataList.length === 1) {\n    return metadataList\n  }\n\n  let pos = 0\n  for (let i = 0; i < metadataList.length; ++i) {\n    if (metadataList[i].algo === algorithm) {\n      metadataList[pos++] = metadataList[i]\n    }\n  }\n\n  metadataList.length = pos\n\n  return metadataList\n}\n\n/**\n * Compares two base64 strings, allowing for base64url\n * in the second string.\n *\n* @param {string} actualValue always base64\n * @param {string} expectedValue base64 or base64url\n * @returns {boolean}\n */\nfunction compareBase64Mixed (actualValue, expectedValue) {\n  if (actualValue.length !== expectedValue.length) {\n    return false\n  }\n  for (let i = 0; i < actualValue.length; ++i) {\n    if (actualValue[i] !== expectedValue[i]) {\n      if (\n        (actualValue[i] === '+' && expectedValue[i] === '-') ||\n        (actualValue[i] === '/' && expectedValue[i] === '_')\n      ) {\n        continue\n      }\n      return false\n    }\n  }\n\n  return true\n}\n\n// https://w3c.github.io/webappsec-upgrade-insecure-requests/#upgrade-request\nfunction tryUpgradeRequestToAPotentiallyTrustworthyURL (request) {\n  // TODO\n}\n\n/**\n * @link {https://html.spec.whatwg.org/multipage/origin.html#same-origin}\n * @param {URL} A\n * @param {URL} B\n */\nfunction sameOrigin (A, B) {\n  // 1. If A and B are the same opaque origin, then return true.\n  if (A.origin === B.origin && A.origin === 'null') {\n    return true\n  }\n\n  // 2. If A and B are both tuple origins and their schemes,\n  //    hosts, and port are identical, then return true.\n  if (A.protocol === B.protocol && A.hostname === B.hostname && A.port === B.port) {\n    return true\n  }\n\n  // 3. Return false.\n  return false\n}\n\nfunction createDeferredPromise () {\n  let res\n  let rej\n  const promise = new Promise((resolve, reject) => {\n    res = resolve\n    rej = reject\n  })\n\n  return { promise, resolve: res, reject: rej }\n}\n\nfunction isAborted (fetchParams) {\n  return fetchParams.controller.state === 'aborted'\n}\n\nfunction isCancelled (fetchParams) {\n  return fetchParams.controller.state === 'aborted' ||\n    fetchParams.controller.state === 'terminated'\n}\n\nconst normalizeMethodRecordBase = {\n  delete: 'DELETE',\n  DELETE: 'DELETE',\n  get: 'GET',\n  GET: 'GET',\n  head: 'HEAD',\n  HEAD: 'HEAD',\n  options: 'OPTIONS',\n  OPTIONS: 'OPTIONS',\n  post: 'POST',\n  POST: 'POST',\n  put: 'PUT',\n  PUT: 'PUT'\n}\n\nconst normalizeMethodRecord = {\n  ...normalizeMethodRecordBase,\n  patch: 'patch',\n  PATCH: 'PATCH'\n}\n\n// Note: object prototypes should not be able to be referenced. e.g. `Object#hasOwnProperty`.\nObject.setPrototypeOf(normalizeMethodRecordBase, null)\nObject.setPrototypeOf(normalizeMethodRecord, null)\n\n/**\n * @see https://fetch.spec.whatwg.org/#concept-method-normalize\n * @param {string} method\n */\nfunction normalizeMethod (method) {\n  return normalizeMethodRecordBase[method.toLowerCase()] ?? method\n}\n\n// https://infra.spec.whatwg.org/#serialize-a-javascript-value-to-a-json-string\nfunction serializeJavascriptValueToJSONString (value) {\n  // 1. Let result be ? Call(%JSON.stringify%, undefined, \u00AB value \u00BB).\n  const result = JSON.stringify(value)\n\n  // 2. If result is undefined, then throw a TypeError.\n  if (result === undefined) {\n    throw new TypeError('Value is not JSON serializable')\n  }\n\n  // 3. Assert: result is a string.\n  assert(typeof result === 'string')\n\n  // 4. Return result.\n  return result\n}\n\n// https://tc39.es/ecma262/#sec-%25iteratorprototype%25-object\nconst esIteratorPrototype = Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()))\n\n/**\n * @see https://webidl.spec.whatwg.org/#dfn-iterator-prototype-object\n * @param {string} name name of the instance\n * @param {symbol} kInternalIterator\n * @param {string | number} [keyIndex]\n * @param {string | number} [valueIndex]\n */\nfunction createIterator (name, kInternalIterator, keyIndex = 0, valueIndex = 1) {\n  class FastIterableIterator {\n    /** @type {any} */\n    #target\n    /** @type {'key' | 'value' | 'key+value'} */\n    #kind\n    /** @type {number} */\n    #index\n\n    /**\n     * @see https://webidl.spec.whatwg.org/#dfn-default-iterator-object\n     * @param {unknown} target\n     * @param {'key' | 'value' | 'key+value'} kind\n     */\n    constructor (target, kind) {\n      this.#target = target\n      this.#kind = kind\n      this.#index = 0\n    }\n\n    next () {\n      // 1. Let interface be the interface for which the iterator prototype object exists.\n      // 2. Let thisValue be the this value.\n      // 3. Let object be ? ToObject(thisValue).\n      // 4. If object is a platform object, then perform a security\n      //    check, passing:\n      // 5. If object is not a default iterator object for interface,\n      //    then throw a TypeError.\n      if (typeof this !== 'object' || this === null || !(#target in this)) {\n        throw new TypeError(\n          `'next' called on an object that does not implement interface ${name} Iterator.`\n        )\n      }\n\n      // 6. Let index be object\u2019s index.\n      // 7. Let kind be object\u2019s kind.\n      // 8. Let values be object\u2019s target's value pairs to iterate over.\n      const index = this.#index\n      const values = this.#target[kInternalIterator]\n\n      // 9. Let len be the length of values.\n      const len = values.length\n\n      // 10. If index is greater than or equal to len, then return\n      //     CreateIterResultObject(undefined, true).\n      if (index >= len) {\n        return {\n          value: undefined,\n          done: true\n        }\n      }\n\n      // 11. Let pair be the entry in values at index index.\n      const { [keyIndex]: key, [valueIndex]: value } = values[index]\n\n      // 12. Set object\u2019s index to index + 1.\n      this.#index = index + 1\n\n      // 13. Return the iterator result for pair and kind.\n\n      // https://webidl.spec.whatwg.org/#iterator-result\n\n      // 1. Let result be a value determined by the value of kind:\n      let result\n      switch (this.#kind) {\n        case 'key':\n          // 1. Let idlKey be pair\u2019s key.\n          // 2. Let key be the result of converting idlKey to an\n          //    ECMAScript value.\n          // 3. result is key.\n          result = key\n          break\n        case 'value':\n          // 1. Let idlValue be pair\u2019s value.\n          // 2. Let value be the result of converting idlValue to\n          //    an ECMAScript value.\n          // 3. result is value.\n          result = value\n          break\n        case 'key+value':\n          // 1. Let idlKey be pair\u2019s key.\n          // 2. Let idlValue be pair\u2019s value.\n          // 3. Let key be the result of converting idlKey to an\n          //    ECMAScript value.\n          // 4. Let value be the result of converting idlValue to\n          //    an ECMAScript value.\n          // 5. Let array be ! ArrayCreate(2).\n          // 6. Call ! CreateDataProperty(array, \"0\", key).\n          // 7. Call ! CreateDataProperty(array, \"1\", value).\n          // 8. result is array.\n          result = [key, value]\n          break\n      }\n\n      // 2. Return CreateIterResultObject(result, false).\n      return {\n        value: result,\n        done: false\n      }\n    }\n  }\n\n  // https://webidl.spec.whatwg.org/#dfn-iterator-prototype-object\n  // @ts-ignore\n  delete FastIterableIterator.prototype.constructor\n\n  Object.setPrototypeOf(FastIterableIterator.prototype, esIteratorPrototype)\n\n  Object.defineProperties(FastIterableIterator.prototype, {\n    [Symbol.toStringTag]: {\n      writable: false,\n      enumerable: false,\n      configurable: true,\n      value: `${name} Iterator`\n    },\n    next: { writable: true, enumerable: true, configurable: true }\n  })\n\n  /**\n   * @param {unknown} target\n   * @param {'key' | 'value' | 'key+value'} kind\n   * @returns {IterableIterator<any>}\n   */\n  return function (target, kind) {\n    return new FastIterableIterator(target, kind)\n  }\n}\n\n/**\n * @see https://webidl.spec.whatwg.org/#dfn-iterator-prototype-object\n * @param {string} name name of the instance\n * @param {any} object class\n * @param {symbol} kInternalIterator\n * @param {string | number} [keyIndex]\n * @param {string | number} [valueIndex]\n */\nfunction iteratorMixin (name, object, kInternalIterator, keyIndex = 0, valueIndex = 1) {\n  const makeIterator = createIterator(name, kInternalIterator, keyIndex, valueIndex)\n\n  const properties = {\n    keys: {\n      writable: true,\n      enumerable: true,\n      configurable: true,\n      value: function keys () {\n        webidl.brandCheck(this, object)\n        return makeIterator(this, 'key')\n      }\n    },\n    values: {\n      writable: true,\n      enumerable: true,\n      configurable: true,\n      value: function values () {\n        webidl.brandCheck(this, object)\n        return makeIterator(this, 'value')\n      }\n    },\n    entries: {\n      writable: true,\n      enumerable: true,\n      configurable: true,\n      value: function entries () {\n        webidl.brandCheck(this, object)\n        return makeIterator(this, 'key+value')\n      }\n    },\n    forEach: {\n      writable: true,\n      enumerable: true,\n      configurable: true,\n      value: function forEach (callbackfn, thisArg = globalThis) {\n        webidl.brandCheck(this, object)\n        webidl.argumentLengthCheck(arguments, 1, `${name}.forEach`)\n        if (typeof callbackfn !== 'function') {\n          throw new TypeError(\n            `Failed to execute 'forEach' on '${name}': parameter 1 is not of type 'Function'.`\n          )\n        }\n        for (const { 0: key, 1: value } of makeIterator(this, 'key+value')) {\n          callbackfn.call(thisArg, value, key, this)\n        }\n      }\n    }\n  }\n\n  return Object.defineProperties(object.prototype, {\n    ...properties,\n    [Symbol.iterator]: {\n      writable: true,\n      enumerable: false,\n      configurable: true,\n      value: properties.entries.value\n    }\n  })\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#body-fully-read\n */\nasync function fullyReadBody (body, processBody, processBodyError, shouldClone) {\n  // 1. If taskDestination is null, then set taskDestination to\n  //    the result of starting a new parallel queue.\n\n  // 2. Let successSteps given a byte sequence bytes be to queue a\n  //    fetch task to run processBody given bytes, with taskDestination.\n  const successSteps = processBody\n\n  // 3. Let errorSteps be to queue a fetch task to run processBodyError,\n  //    with taskDestination.\n  const errorSteps = processBodyError\n\n  // 4. Let reader be the result of getting a reader for body\u2019s stream.\n  //    If that threw an exception, then run errorSteps with that\n  //    exception and return.\n  let reader\n\n  try {\n    reader = body.stream.getReader()\n  } catch (e) {\n    errorSteps(e)\n    return\n  }\n\n  // 5. Read all bytes from reader, given successSteps and errorSteps.\n  try {\n    successSteps(await readAllBytes(reader, shouldClone))\n  } catch (e) {\n    errorSteps(e)\n  }\n}\n\nfunction isReadableStreamLike (stream) {\n  return stream instanceof ReadableStream || (\n    stream[Symbol.toStringTag] === 'ReadableStream' &&\n    typeof stream.tee === 'function'\n  )\n}\n\n/**\n * @param {ReadableStreamController<Uint8Array>} controller\n */\nfunction readableStreamClose (controller) {\n  try {\n    controller.close()\n    controller.byobRequest?.respond(0)\n  } catch (err) {\n    // TODO: add comment explaining why this error occurs.\n    if (!err.message.includes('Controller is already closed') && !err.message.includes('ReadableStream is already closed')) {\n      throw err\n    }\n  }\n}\n\nconst invalidIsomorphicEncodeValueRegex = /[^\\x00-\\xFF]/ // eslint-disable-line\n\n/**\n * @see https://infra.spec.whatwg.org/#isomorphic-encode\n * @param {string} input\n */\nfunction isomorphicEncode (input) {\n  // 1. Assert: input contains no code points greater than U+00FF.\n  assert(!invalidIsomorphicEncodeValueRegex.test(input))\n\n  // 2. Return a byte sequence whose length is equal to input\u2019s code\n  //    point length and whose bytes have the same values as the\n  //    values of input\u2019s code points, in the same order\n  return input\n}\n\n/**\n * @see https://streams.spec.whatwg.org/#readablestreamdefaultreader-read-all-bytes\n * @see https://streams.spec.whatwg.org/#read-loop\n * @param {ReadableStreamDefaultReader} reader\n * @param {boolean} [shouldClone]\n */\nasync function readAllBytes (reader, shouldClone) {\n  const bytes = []\n  let byteLength = 0\n\n  while (true) {\n    const { done, value: chunk } = await reader.read()\n\n    if (done) {\n      // 1. Call successSteps with bytes.\n      if (bytes.length === 1) {\n        const { buffer, byteOffset, byteLength } = bytes[0]\n        if (shouldClone === false) {\n          return Buffer.from(buffer, byteOffset, byteLength)\n        }\n        return Buffer.from(buffer.slice(byteOffset, byteOffset + byteLength), 0, byteLength)\n      }\n      return Buffer.concat(bytes, byteLength)\n    }\n\n    // 1. If chunk is not a Uint8Array object, call failureSteps\n    //    with a TypeError and abort these steps.\n    if (!isUint8Array(chunk)) {\n      throw new TypeError('Received non-Uint8Array chunk')\n    }\n\n    // 2. Append the bytes represented by chunk to bytes.\n    bytes.push(chunk)\n    byteLength += chunk.length\n\n    // 3. Read-loop given reader, bytes, successSteps, and failureSteps.\n  }\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#is-local\n * @param {URL} url\n */\nfunction urlIsLocal (url) {\n  assert('protocol' in url) // ensure it's a url object\n\n  const protocol = url.protocol\n\n  return protocol === 'about:' || protocol === 'blob:' || protocol === 'data:'\n}\n\n/**\n * @param {string|URL} url\n * @returns {boolean}\n */\nfunction urlHasHttpsScheme (url) {\n  return (\n    (\n      typeof url === 'string' &&\n      url[5] === ':' &&\n      url[0] === 'h' &&\n      url[1] === 't' &&\n      url[2] === 't' &&\n      url[3] === 'p' &&\n      url[4] === 's'\n    ) ||\n    url.protocol === 'https:'\n  )\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#http-scheme\n * @param {URL} url\n */\nfunction urlIsHttpHttpsScheme (url) {\n  assert('protocol' in url) // ensure it's a url object\n\n  const protocol = url.protocol\n\n  return protocol === 'http:' || protocol === 'https:'\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#simple-range-header-value\n * @param {string} value\n * @param {boolean} allowWhitespace\n */\nfunction simpleRangeHeaderValue (value, allowWhitespace) {\n  // 1. Let data be the isomorphic decoding of value.\n  // Note: isomorphic decoding takes a sequence of bytes (ie. a Uint8Array) and turns it into a string,\n  // nothing more. We obviously don't need to do that if value is a string already.\n  const data = value\n\n  // 2. If data does not start with \"bytes\", then return failure.\n  if (!data.startsWith('bytes')) {\n    return 'failure'\n  }\n\n  // 3. Let position be a position variable for data, initially pointing at the 5th code point of data.\n  const position = { position: 5 }\n\n  // 4. If allowWhitespace is true, collect a sequence of code points that are HTTP tab or space,\n  //    from data given position.\n  if (allowWhitespace) {\n    collectASequenceOfCodePoints(\n      (char) => char === '\\t' || char === ' ',\n      data,\n      position\n    )\n  }\n\n  // 5. If the code point at position within data is not U+003D (=), then return failure.\n  if (data.charCodeAt(position.position) !== 0x3D) {\n    return 'failure'\n  }\n\n  // 6. Advance position by 1.\n  position.position++\n\n  // 7. If allowWhitespace is true, collect a sequence of code points that are HTTP tab or space, from\n  //    data given position.\n  if (allowWhitespace) {\n    collectASequenceOfCodePoints(\n      (char) => char === '\\t' || char === ' ',\n      data,\n      position\n    )\n  }\n\n  // 8. Let rangeStart be the result of collecting a sequence of code points that are ASCII digits,\n  //    from data given position.\n  const rangeStart = collectASequenceOfCodePoints(\n    (char) => {\n      const code = char.charCodeAt(0)\n\n      return code >= 0x30 && code <= 0x39\n    },\n    data,\n    position\n  )\n\n  // 9. Let rangeStartValue be rangeStart, interpreted as decimal number, if rangeStart is not the\n  //    empty string; otherwise null.\n  const rangeStartValue = rangeStart.length ? Number(rangeStart) : null\n\n  // 10. If allowWhitespace is true, collect a sequence of code points that are HTTP tab or space,\n  //     from data given position.\n  if (allowWhitespace) {\n    collectASequenceOfCodePoints(\n      (char) => char === '\\t' || char === ' ',\n      data,\n      position\n    )\n  }\n\n  // 11. If the code point at position within data is not U+002D (-), then return failure.\n  if (data.charCodeAt(position.position) !== 0x2D) {\n    return 'failure'\n  }\n\n  // 12. Advance position by 1.\n  position.position++\n\n  // 13. If allowWhitespace is true, collect a sequence of code points that are HTTP tab\n  //     or space, from data given position.\n  // Note from Khafra: its the same step as in #8 again lol\n  if (allowWhitespace) {\n    collectASequenceOfCodePoints(\n      (char) => char === '\\t' || char === ' ',\n      data,\n      position\n    )\n  }\n\n  // 14. Let rangeEnd be the result of collecting a sequence of code points that are\n  //     ASCII digits, from data given position.\n  // Note from Khafra: you wouldn't guess it, but this is also the same step as #8\n  const rangeEnd = collectASequenceOfCodePoints(\n    (char) => {\n      const code = char.charCodeAt(0)\n\n      return code >= 0x30 && code <= 0x39\n    },\n    data,\n    position\n  )\n\n  // 15. Let rangeEndValue be rangeEnd, interpreted as decimal number, if rangeEnd\n  //     is not the empty string; otherwise null.\n  // Note from Khafra: THE SAME STEP, AGAIN!!!\n  // Note: why interpret as a decimal if we only collect ascii digits?\n  const rangeEndValue = rangeEnd.length ? Number(rangeEnd) : null\n\n  // 16. If position is not past the end of data, then return failure.\n  if (position.position < data.length) {\n    return 'failure'\n  }\n\n  // 17. If rangeEndValue and rangeStartValue are null, then return failure.\n  if (rangeEndValue === null && rangeStartValue === null) {\n    return 'failure'\n  }\n\n  // 18. If rangeStartValue and rangeEndValue are numbers, and rangeStartValue is\n  //     greater than rangeEndValue, then return failure.\n  // Note: ... when can they not be numbers?\n  if (rangeStartValue > rangeEndValue) {\n    return 'failure'\n  }\n\n  // 19. Return (rangeStartValue, rangeEndValue).\n  return { rangeStartValue, rangeEndValue }\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#build-a-content-range\n * @param {number} rangeStart\n * @param {number} rangeEnd\n * @param {number} fullLength\n */\nfunction buildContentRange (rangeStart, rangeEnd, fullLength) {\n  // 1. Let contentRange be `bytes `.\n  let contentRange = 'bytes '\n\n  // 2. Append rangeStart, serialized and isomorphic encoded, to contentRange.\n  contentRange += isomorphicEncode(`${rangeStart}`)\n\n  // 3. Append 0x2D (-) to contentRange.\n  contentRange += '-'\n\n  // 4. Append rangeEnd, serialized and isomorphic encoded to contentRange.\n  contentRange += isomorphicEncode(`${rangeEnd}`)\n\n  // 5. Append 0x2F (/) to contentRange.\n  contentRange += '/'\n\n  // 6. Append fullLength, serialized and isomorphic encoded to contentRange.\n  contentRange += isomorphicEncode(`${fullLength}`)\n\n  // 7. Return contentRange.\n  return contentRange\n}\n\n// A Stream, which pipes the response to zlib.createInflate() or\n// zlib.createInflateRaw() depending on the first byte of the Buffer.\n// If the lower byte of the first byte is 0x08, then the stream is\n// interpreted as a zlib stream, otherwise it's interpreted as a\n// raw deflate stream.\nclass InflateStream extends Transform {\n  _transform (chunk, encoding, callback) {\n    if (!this._inflateStream) {\n      if (chunk.length === 0) {\n        callback()\n        return\n      }\n      this._inflateStream = (chunk[0] & 0x0F) === 0x08\n        ? zlib.createInflate()\n        : zlib.createInflateRaw()\n\n      this._inflateStream.on('data', this.push.bind(this))\n      this._inflateStream.on('end', () => this.push(null))\n      this._inflateStream.on('error', (err) => this.destroy(err))\n    }\n\n    this._inflateStream.write(chunk, encoding, callback)\n  }\n\n  _final (callback) {\n    if (this._inflateStream) {\n      this._inflateStream.end()\n      this._inflateStream = null\n    }\n    callback()\n  }\n}\n\nfunction createInflate () {\n  return new InflateStream()\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#concept-header-extract-mime-type\n * @param {import('./headers').HeadersList} headers\n */\nfunction extractMimeType (headers) {\n  // 1. Let charset be null.\n  let charset = null\n\n  // 2. Let essence be null.\n  let essence = null\n\n  // 3. Let mimeType be null.\n  let mimeType = null\n\n  // 4. Let values be the result of getting, decoding, and splitting `Content-Type` from headers.\n  const values = getDecodeSplit('content-type', headers)\n\n  // 5. If values is null, then return failure.\n  if (values === null) {\n    return 'failure'\n  }\n\n  // 6. For each value of values:\n  for (const value of values) {\n    // 6.1. Let temporaryMimeType be the result of parsing value.\n    const temporaryMimeType = parseMIMEType(value)\n\n    // 6.2. If temporaryMimeType is failure or its essence is \"*/*\", then continue.\n    if (temporaryMimeType === 'failure' || temporaryMimeType.essence === '*/*') {\n      continue\n    }\n\n    // 6.3. Set mimeType to temporaryMimeType.\n    mimeType = temporaryMimeType\n\n    // 6.4. If mimeType\u2019s essence is not essence, then:\n    if (mimeType.essence !== essence) {\n      // 6.4.1. Set charset to null.\n      charset = null\n\n      // 6.4.2. If mimeType\u2019s parameters[\"charset\"] exists, then set charset to\n      //        mimeType\u2019s parameters[\"charset\"].\n      if (mimeType.parameters.has('charset')) {\n        charset = mimeType.parameters.get('charset')\n      }\n\n      // 6.4.3. Set essence to mimeType\u2019s essence.\n      essence = mimeType.essence\n    } else if (!mimeType.parameters.has('charset') && charset !== null) {\n      // 6.5. Otherwise, if mimeType\u2019s parameters[\"charset\"] does not exist, and\n      //      charset is non-null, set mimeType\u2019s parameters[\"charset\"] to charset.\n      mimeType.parameters.set('charset', charset)\n    }\n  }\n\n  // 7. If mimeType is null, then return failure.\n  if (mimeType == null) {\n    return 'failure'\n  }\n\n  // 8. Return mimeType.\n  return mimeType\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#header-value-get-decode-and-split\n * @param {string|null} value\n */\nfunction gettingDecodingSplitting (value) {\n  // 1. Let input be the result of isomorphic decoding value.\n  const input = value\n\n  // 2. Let position be a position variable for input, initially pointing at the start of input.\n  const position = { position: 0 }\n\n  // 3. Let values be a list of strings, initially empty.\n  const values = []\n\n  // 4. Let temporaryValue be the empty string.\n  let temporaryValue = ''\n\n  // 5. While position is not past the end of input:\n  while (position.position < input.length) {\n    // 5.1. Append the result of collecting a sequence of code points that are not U+0022 (\")\n    //      or U+002C (,) from input, given position, to temporaryValue.\n    temporaryValue += collectASequenceOfCodePoints(\n      (char) => char !== '\"' && char !== ',',\n      input,\n      position\n    )\n\n    // 5.2. If position is not past the end of input, then:\n    if (position.position < input.length) {\n      // 5.2.1. If the code point at position within input is U+0022 (\"), then:\n      if (input.charCodeAt(position.position) === 0x22) {\n        // 5.2.1.1. Append the result of collecting an HTTP quoted string from input, given position, to temporaryValue.\n        temporaryValue += collectAnHTTPQuotedString(\n          input,\n          position\n        )\n\n        // 5.2.1.2. If position is not past the end of input, then continue.\n        if (position.position < input.length) {\n          continue\n        }\n      } else {\n        // 5.2.2. Otherwise:\n\n        // 5.2.2.1. Assert: the code point at position within input is U+002C (,).\n        assert(input.charCodeAt(position.position) === 0x2C)\n\n        // 5.2.2.2. Advance position by 1.\n        position.position++\n      }\n    }\n\n    // 5.3. Remove all HTTP tab or space from the start and end of temporaryValue.\n    temporaryValue = removeChars(temporaryValue, true, true, (char) => char === 0x9 || char === 0x20)\n\n    // 5.4. Append temporaryValue to values.\n    values.push(temporaryValue)\n\n    // 5.6. Set temporaryValue to the empty string.\n    temporaryValue = ''\n  }\n\n  // 6. Return values.\n  return values\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#concept-header-list-get-decode-split\n * @param {string} name lowercase header name\n * @param {import('./headers').HeadersList} list\n */\nfunction getDecodeSplit (name, list) {\n  // 1. Let value be the result of getting name from list.\n  const value = list.get(name, true)\n\n  // 2. If value is null, then return null.\n  if (value === null) {\n    return null\n  }\n\n  // 3. Return the result of getting, decoding, and splitting value.\n  return gettingDecodingSplitting(value)\n}\n\nconst textDecoder = new TextDecoder()\n\n/**\n * @see https://encoding.spec.whatwg.org/#utf-8-decode\n * @param {Buffer} buffer\n */\nfunction utf8DecodeBytes (buffer) {\n  if (buffer.length === 0) {\n    return ''\n  }\n\n  // 1. Let buffer be the result of peeking three bytes from\n  //    ioQueue, converted to a byte sequence.\n\n  // 2. If buffer is 0xEF 0xBB 0xBF, then read three\n  //    bytes from ioQueue. (Do nothing with those bytes.)\n  if (buffer[0] === 0xEF && buffer[1] === 0xBB && buffer[2] === 0xBF) {\n    buffer = buffer.subarray(3)\n  }\n\n  // 3. Process a queue with an instance of UTF-8\u2019s\n  //    decoder, ioQueue, output, and \"replacement\".\n  const output = textDecoder.decode(buffer)\n\n  // 4. Return output.\n  return output\n}\n\nclass EnvironmentSettingsObjectBase {\n  get baseUrl () {\n    return getGlobalOrigin()\n  }\n\n  get origin () {\n    return this.baseUrl?.origin\n  }\n\n  policyContainer = makePolicyContainer()\n}\n\nclass EnvironmentSettingsObject {\n  settingsObject = new EnvironmentSettingsObjectBase()\n}\n\nconst environmentSettingsObject = new EnvironmentSettingsObject()\n\nmodule.exports = {\n  isAborted,\n  isCancelled,\n  isValidEncodedURL,\n  createDeferredPromise,\n  ReadableStreamFrom,\n  tryUpgradeRequestToAPotentiallyTrustworthyURL,\n  clampAndCoarsenConnectionTimingInfo,\n  coarsenedSharedCurrentTime,\n  determineRequestsReferrer,\n  makePolicyContainer,\n  clonePolicyContainer,\n  appendFetchMetadata,\n  appendRequestOriginHeader,\n  TAOCheck,\n  corsCheck,\n  crossOriginResourcePolicyCheck,\n  createOpaqueTimingInfo,\n  setRequestReferrerPolicyOnRedirect,\n  isValidHTTPToken,\n  requestBadPort,\n  requestCurrentURL,\n  responseURL,\n  responseLocationURL,\n  isBlobLike,\n  isURLPotentiallyTrustworthy,\n  isValidReasonPhrase,\n  sameOrigin,\n  normalizeMethod,\n  serializeJavascriptValueToJSONString,\n  iteratorMixin,\n  createIterator,\n  isValidHeaderName,\n  isValidHeaderValue,\n  isErrorLike,\n  fullyReadBody,\n  bytesMatch,\n  isReadableStreamLike,\n  readableStreamClose,\n  isomorphicEncode,\n  urlIsLocal,\n  urlHasHttpsScheme,\n  urlIsHttpHttpsScheme,\n  readAllBytes,\n  normalizeMethodRecord,\n  simpleRangeHeaderValue,\n  buildContentRange,\n  parseMetadata,\n  createInflate,\n  extractMimeType,\n  getDecodeSplit,\n  utf8DecodeBytes,\n  environmentSettingsObject\n}\n", "'use strict'\n\nmodule.exports = {\n  kUrl: Symbol('url'),\n  kHeaders: Symbol('headers'),\n  kSignal: Symbol('signal'),\n  kState: Symbol('state'),\n  kDispatcher: Symbol('dispatcher')\n}\n", "'use strict'\n\nconst { Blob, File } = require('node:buffer')\nconst { kState } = require('./symbols')\nconst { webidl } = require('./webidl')\n\n// TODO(@KhafraDev): remove\nclass FileLike {\n  constructor (blobLike, fileName, options = {}) {\n    // TODO: argument idl type check\n\n    // The File constructor is invoked with two or three parameters, depending\n    // on whether the optional dictionary parameter is used. When the File()\n    // constructor is invoked, user agents must run the following steps:\n\n    // 1. Let bytes be the result of processing blob parts given fileBits and\n    // options.\n\n    // 2. Let n be the fileName argument to the constructor.\n    const n = fileName\n\n    // 3. Process FilePropertyBag dictionary argument by running the following\n    // substeps:\n\n    //    1. If the type member is provided and is not the empty string, let t\n    //    be set to the type dictionary member. If t contains any characters\n    //    outside the range U+0020 to U+007E, then set t to the empty string\n    //    and return from these substeps.\n    //    TODO\n    const t = options.type\n\n    //    2. Convert every character in t to ASCII lowercase.\n    //    TODO\n\n    //    3. If the lastModified member is provided, let d be set to the\n    //    lastModified dictionary member. If it is not provided, set d to the\n    //    current date and time represented as the number of milliseconds since\n    //    the Unix Epoch (which is the equivalent of Date.now() [ECMA-262]).\n    const d = options.lastModified ?? Date.now()\n\n    // 4. Return a new File object F such that:\n    // F refers to the bytes byte sequence.\n    // F.size is set to the number of total bytes in bytes.\n    // F.name is set to n.\n    // F.type is set to t.\n    // F.lastModified is set to d.\n\n    this[kState] = {\n      blobLike,\n      name: n,\n      type: t,\n      lastModified: d\n    }\n  }\n\n  stream (...args) {\n    webidl.brandCheck(this, FileLike)\n\n    return this[kState].blobLike.stream(...args)\n  }\n\n  arrayBuffer (...args) {\n    webidl.brandCheck(this, FileLike)\n\n    return this[kState].blobLike.arrayBuffer(...args)\n  }\n\n  slice (...args) {\n    webidl.brandCheck(this, FileLike)\n\n    return this[kState].blobLike.slice(...args)\n  }\n\n  text (...args) {\n    webidl.brandCheck(this, FileLike)\n\n    return this[kState].blobLike.text(...args)\n  }\n\n  get size () {\n    webidl.brandCheck(this, FileLike)\n\n    return this[kState].blobLike.size\n  }\n\n  get type () {\n    webidl.brandCheck(this, FileLike)\n\n    return this[kState].blobLike.type\n  }\n\n  get name () {\n    webidl.brandCheck(this, FileLike)\n\n    return this[kState].name\n  }\n\n  get lastModified () {\n    webidl.brandCheck(this, FileLike)\n\n    return this[kState].lastModified\n  }\n\n  get [Symbol.toStringTag] () {\n    return 'File'\n  }\n}\n\nwebidl.converters.Blob = webidl.interfaceConverter(Blob)\n\n// If this function is moved to ./util.js, some tools (such as\n// rollup) will warn about circular dependencies. See:\n// https://github.com/nodejs/undici/issues/1629\nfunction isFileLike (object) {\n  return (\n    (object instanceof File) ||\n    (\n      object &&\n      (typeof object.stream === 'function' ||\n      typeof object.arrayBuffer === 'function') &&\n      object[Symbol.toStringTag] === 'File'\n    )\n  )\n}\n\nmodule.exports = { FileLike, isFileLike }\n", "'use strict'\n\nconst { isBlobLike, iteratorMixin } = require('./util')\nconst { kState } = require('./symbols')\nconst { kEnumerableProperty } = require('../../core/util')\nconst { FileLike, isFileLike } = require('./file')\nconst { webidl } = require('./webidl')\nconst { File: NativeFile } = require('node:buffer')\nconst nodeUtil = require('node:util')\n\n/** @type {globalThis['File']} */\nconst File = globalThis.File ?? NativeFile\n\n// https://xhr.spec.whatwg.org/#formdata\nclass FormData {\n  constructor (form) {\n    if (form !== undefined) {\n      throw webidl.errors.conversionFailed({\n        prefix: 'FormData constructor',\n        argument: 'Argument 1',\n        types: ['undefined']\n      })\n    }\n\n    this[kState] = []\n  }\n\n  append (name, value, filename = undefined) {\n    webidl.brandCheck(this, FormData)\n\n    const prefix = 'FormData.append'\n    webidl.argumentLengthCheck(arguments, 2, prefix)\n\n    if (arguments.length === 3 && !isBlobLike(value)) {\n      throw new TypeError(\n        \"Failed to execute 'append' on 'FormData': parameter 2 is not of type 'Blob'\"\n      )\n    }\n\n    // 1. Let value be value if given; otherwise blobValue.\n\n    name = webidl.converters.USVString(name, prefix, 'name')\n    value = isBlobLike(value)\n      ? webidl.converters.Blob(value, prefix, 'value', { strict: false })\n      : webidl.converters.USVString(value, prefix, 'value')\n    filename = arguments.length === 3\n      ? webidl.converters.USVString(filename, prefix, 'filename')\n      : undefined\n\n    // 2. Let entry be the result of creating an entry with\n    // name, value, and filename if given.\n    const entry = makeEntry(name, value, filename)\n\n    // 3. Append entry to this\u2019s entry list.\n    this[kState].push(entry)\n  }\n\n  delete (name) {\n    webidl.brandCheck(this, FormData)\n\n    const prefix = 'FormData.delete'\n    webidl.argumentLengthCheck(arguments, 1, prefix)\n\n    name = webidl.converters.USVString(name, prefix, 'name')\n\n    // The delete(name) method steps are to remove all entries whose name\n    // is name from this\u2019s entry list.\n    this[kState] = this[kState].filter(entry => entry.name !== name)\n  }\n\n  get (name) {\n    webidl.brandCheck(this, FormData)\n\n    const prefix = 'FormData.get'\n    webidl.argumentLengthCheck(arguments, 1, prefix)\n\n    name = webidl.converters.USVString(name, prefix, 'name')\n\n    // 1. If there is no entry whose name is name in this\u2019s entry list,\n    // then return null.\n    const idx = this[kState].findIndex((entry) => entry.name === name)\n    if (idx === -1) {\n      return null\n    }\n\n    // 2. Return the value of the first entry whose name is name from\n    // this\u2019s entry list.\n    return this[kState][idx].value\n  }\n\n  getAll (name) {\n    webidl.brandCheck(this, FormData)\n\n    const prefix = 'FormData.getAll'\n    webidl.argumentLengthCheck(arguments, 1, prefix)\n\n    name = webidl.converters.USVString(name, prefix, 'name')\n\n    // 1. If there is no entry whose name is name in this\u2019s entry list,\n    // then return the empty list.\n    // 2. Return the values of all entries whose name is name, in order,\n    // from this\u2019s entry list.\n    return this[kState]\n      .filter((entry) => entry.name === name)\n      .map((entry) => entry.value)\n  }\n\n  has (name) {\n    webidl.brandCheck(this, FormData)\n\n    const prefix = 'FormData.has'\n    webidl.argumentLengthCheck(arguments, 1, prefix)\n\n    name = webidl.converters.USVString(name, prefix, 'name')\n\n    // The has(name) method steps are to return true if there is an entry\n    // whose name is name in this\u2019s entry list; otherwise false.\n    return this[kState].findIndex((entry) => entry.name === name) !== -1\n  }\n\n  set (name, value, filename = undefined) {\n    webidl.brandCheck(this, FormData)\n\n    const prefix = 'FormData.set'\n    webidl.argumentLengthCheck(arguments, 2, prefix)\n\n    if (arguments.length === 3 && !isBlobLike(value)) {\n      throw new TypeError(\n        \"Failed to execute 'set' on 'FormData': parameter 2 is not of type 'Blob'\"\n      )\n    }\n\n    // The set(name, value) and set(name, blobValue, filename) method steps\n    // are:\n\n    // 1. Let value be value if given; otherwise blobValue.\n\n    name = webidl.converters.USVString(name, prefix, 'name')\n    value = isBlobLike(value)\n      ? webidl.converters.Blob(value, prefix, 'name', { strict: false })\n      : webidl.converters.USVString(value, prefix, 'name')\n    filename = arguments.length === 3\n      ? webidl.converters.USVString(filename, prefix, 'name')\n      : undefined\n\n    // 2. Let entry be the result of creating an entry with name, value, and\n    // filename if given.\n    const entry = makeEntry(name, value, filename)\n\n    // 3. If there are entries in this\u2019s entry list whose name is name, then\n    // replace the first such entry with entry and remove the others.\n    const idx = this[kState].findIndex((entry) => entry.name === name)\n    if (idx !== -1) {\n      this[kState] = [\n        ...this[kState].slice(0, idx),\n        entry,\n        ...this[kState].slice(idx + 1).filter((entry) => entry.name !== name)\n      ]\n    } else {\n      // 4. Otherwise, append entry to this\u2019s entry list.\n      this[kState].push(entry)\n    }\n  }\n\n  [nodeUtil.inspect.custom] (depth, options) {\n    const state = this[kState].reduce((a, b) => {\n      if (a[b.name]) {\n        if (Array.isArray(a[b.name])) {\n          a[b.name].push(b.value)\n        } else {\n          a[b.name] = [a[b.name], b.value]\n        }\n      } else {\n        a[b.name] = b.value\n      }\n\n      return a\n    }, { __proto__: null })\n\n    options.depth ??= depth\n    options.colors ??= true\n\n    const output = nodeUtil.formatWithOptions(options, state)\n\n    // remove [Object null prototype]\n    return `FormData ${output.slice(output.indexOf(']') + 2)}`\n  }\n}\n\niteratorMixin('FormData', FormData, kState, 'name', 'value')\n\nObject.defineProperties(FormData.prototype, {\n  append: kEnumerableProperty,\n  delete: kEnumerableProperty,\n  get: kEnumerableProperty,\n  getAll: kEnumerableProperty,\n  has: kEnumerableProperty,\n  set: kEnumerableProperty,\n  [Symbol.toStringTag]: {\n    value: 'FormData',\n    configurable: true\n  }\n})\n\n/**\n * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#create-an-entry\n * @param {string} name\n * @param {string|Blob} value\n * @param {?string} filename\n * @returns\n */\nfunction makeEntry (name, value, filename) {\n  // 1. Set name to the result of converting name into a scalar value string.\n  // Note: This operation was done by the webidl converter USVString.\n\n  // 2. If value is a string, then set value to the result of converting\n  //    value into a scalar value string.\n  if (typeof value === 'string') {\n    // Note: This operation was done by the webidl converter USVString.\n  } else {\n    // 3. Otherwise:\n\n    // 1. If value is not a File object, then set value to a new File object,\n    //    representing the same bytes, whose name attribute value is \"blob\"\n    if (!isFileLike(value)) {\n      value = value instanceof Blob\n        ? new File([value], 'blob', { type: value.type })\n        : new FileLike(value, 'blob', { type: value.type })\n    }\n\n    // 2. If filename is given, then set value to a new File object,\n    //    representing the same bytes, whose name attribute is filename.\n    if (filename !== undefined) {\n      /** @type {FilePropertyBag} */\n      const options = {\n        type: value.type,\n        lastModified: value.lastModified\n      }\n\n      value = value instanceof NativeFile\n        ? new File([value], filename, options)\n        : new FileLike(value, filename, options)\n    }\n  }\n\n  // 4. Return an entry whose name is name and whose value is value.\n  return { name, value }\n}\n\nmodule.exports = { FormData, makeEntry }\n", "'use strict'\n\nconst { isUSVString, bufferToLowerCasedHeaderName } = require('../../core/util')\nconst { utf8DecodeBytes } = require('./util')\nconst { HTTP_TOKEN_CODEPOINTS, isomorphicDecode } = require('./data-url')\nconst { isFileLike } = require('./file')\nconst { makeEntry } = require('./formdata')\nconst assert = require('node:assert')\nconst { File: NodeFile } = require('node:buffer')\n\nconst File = globalThis.File ?? NodeFile\n\nconst formDataNameBuffer = Buffer.from('form-data; name=\"')\nconst filenameBuffer = Buffer.from('; filename')\nconst dd = Buffer.from('--')\nconst ddcrlf = Buffer.from('--\\r\\n')\n\n/**\n * @param {string} chars\n */\nfunction isAsciiString (chars) {\n  for (let i = 0; i < chars.length; ++i) {\n    if ((chars.charCodeAt(i) & ~0x7F) !== 0) {\n      return false\n    }\n  }\n  return true\n}\n\n/**\n * @see https://andreubotella.github.io/multipart-form-data/#multipart-form-data-boundary\n * @param {string} boundary\n */\nfunction validateBoundary (boundary) {\n  const length = boundary.length\n\n  // - its length is greater or equal to 27 and lesser or equal to 70, and\n  if (length < 27 || length > 70) {\n    return false\n  }\n\n  // - it is composed by bytes in the ranges 0x30 to 0x39, 0x41 to 0x5A, or\n  //   0x61 to 0x7A, inclusive (ASCII alphanumeric), or which are 0x27 ('),\n  //   0x2D (-) or 0x5F (_).\n  for (let i = 0; i < length; ++i) {\n    const cp = boundary.charCodeAt(i)\n\n    if (!(\n      (cp >= 0x30 && cp <= 0x39) ||\n      (cp >= 0x41 && cp <= 0x5a) ||\n      (cp >= 0x61 && cp <= 0x7a) ||\n      cp === 0x27 ||\n      cp === 0x2d ||\n      cp === 0x5f\n    )) {\n      return false\n    }\n  }\n\n  return true\n}\n\n/**\n * @see https://andreubotella.github.io/multipart-form-data/#multipart-form-data-parser\n * @param {Buffer} input\n * @param {ReturnType<import('./data-url')['parseMIMEType']>} mimeType\n */\nfunction multipartFormDataParser (input, mimeType) {\n  // 1. Assert: mimeType\u2019s essence is \"multipart/form-data\".\n  assert(mimeType !== 'failure' && mimeType.essence === 'multipart/form-data')\n\n  const boundaryString = mimeType.parameters.get('boundary')\n\n  // 2. If mimeType\u2019s parameters[\"boundary\"] does not exist, return failure.\n  //    Otherwise, let boundary be the result of UTF-8 decoding mimeType\u2019s\n  //    parameters[\"boundary\"].\n  if (boundaryString === undefined) {\n    return 'failure'\n  }\n\n  const boundary = Buffer.from(`--${boundaryString}`, 'utf8')\n\n  // 3. Let entry list be an empty entry list.\n  const entryList = []\n\n  // 4. Let position be a pointer to a byte in input, initially pointing at\n  //    the first byte.\n  const position = { position: 0 }\n\n  // Note: undici addition, allow \\r\\n before the body.\n  if (input[0] === 0x0d && input[1] === 0x0a) {\n    position.position += 2\n  }\n\n  // 5. While true:\n  while (true) {\n    // 5.1. If position points to a sequence of bytes starting with 0x2D 0x2D\n    //      (`--`) followed by boundary, advance position by 2 + the length of\n    //      boundary. Otherwise, return failure.\n    // Note: boundary is padded with 2 dashes already, no need to add 2.\n    if (input.subarray(position.position, position.position + boundary.length).equals(boundary)) {\n      position.position += boundary.length\n    } else {\n      return 'failure'\n    }\n\n    // 5.2. If position points to the sequence of bytes 0x2D 0x2D 0x0D 0x0A\n    //      (`--` followed by CR LF) followed by the end of input, return entry list.\n    // Note: a body does NOT need to end with CRLF. It can end with --.\n    if (\n      (position.position === input.length - 2 && bufferStartsWith(input, dd, position)) ||\n      (position.position === input.length - 4 && bufferStartsWith(input, ddcrlf, position))\n    ) {\n      return entryList\n    }\n\n    // 5.3. If position does not point to a sequence of bytes starting with 0x0D\n    //      0x0A (CR LF), return failure.\n    if (input[position.position] !== 0x0d || input[position.position + 1] !== 0x0a) {\n      return 'failure'\n    }\n\n    // 5.4. Advance position by 2. (This skips past the newline.)\n    position.position += 2\n\n    // 5.5. Let name, filename and contentType be the result of parsing\n    //      multipart/form-data headers on input and position, if the result\n    //      is not failure. Otherwise, return failure.\n    const result = parseMultipartFormDataHeaders(input, position)\n\n    if (result === 'failure') {\n      return 'failure'\n    }\n\n    let { name, filename, contentType, encoding } = result\n\n    // 5.6. Advance position by 2. (This skips past the empty line that marks\n    //      the end of the headers.)\n    position.position += 2\n\n    // 5.7. Let body be the empty byte sequence.\n    let body\n\n    // 5.8. Body loop: While position is not past the end of input:\n    // TODO: the steps here are completely wrong\n    {\n      const boundaryIndex = input.indexOf(boundary.subarray(2), position.position)\n\n      if (boundaryIndex === -1) {\n        return 'failure'\n      }\n\n      body = input.subarray(position.position, boundaryIndex - 4)\n\n      position.position += body.length\n\n      // Note: position must be advanced by the body's length before being\n      // decoded, otherwise the parsing will fail.\n      if (encoding === 'base64') {\n        body = Buffer.from(body.toString(), 'base64')\n      }\n    }\n\n    // 5.9. If position does not point to a sequence of bytes starting with\n    //      0x0D 0x0A (CR LF), return failure. Otherwise, advance position by 2.\n    if (input[position.position] !== 0x0d || input[position.position + 1] !== 0x0a) {\n      return 'failure'\n    } else {\n      position.position += 2\n    }\n\n    // 5.10. If filename is not null:\n    let value\n\n    if (filename !== null) {\n      // 5.10.1. If contentType is null, set contentType to \"text/plain\".\n      contentType ??= 'text/plain'\n\n      // 5.10.2. If contentType is not an ASCII string, set contentType to the empty string.\n\n      // Note: `buffer.isAscii` can be used at zero-cost, but converting a string to a buffer is a high overhead.\n      // Content-Type is a relatively small string, so it is faster to use `String#charCodeAt`.\n      if (!isAsciiString(contentType)) {\n        contentType = ''\n      }\n\n      // 5.10.3. Let value be a new File object with name filename, type contentType, and body body.\n      value = new File([body], filename, { type: contentType })\n    } else {\n      // 5.11. Otherwise:\n\n      // 5.11.1. Let value be the UTF-8 decoding without BOM of body.\n      value = utf8DecodeBytes(Buffer.from(body))\n    }\n\n    // 5.12. Assert: name is a scalar value string and value is either a scalar value string or a File object.\n    assert(isUSVString(name))\n    assert((typeof value === 'string' && isUSVString(value)) || isFileLike(value))\n\n    // 5.13. Create an entry with name and value, and append it to entry list.\n    entryList.push(makeEntry(name, value, filename))\n  }\n}\n\n/**\n * @see https://andreubotella.github.io/multipart-form-data/#parse-multipart-form-data-headers\n * @param {Buffer} input\n * @param {{ position: number }} position\n */\nfunction parseMultipartFormDataHeaders (input, position) {\n  // 1. Let name, filename and contentType be null.\n  let name = null\n  let filename = null\n  let contentType = null\n  let encoding = null\n\n  // 2. While true:\n  while (true) {\n    // 2.1. If position points to a sequence of bytes starting with 0x0D 0x0A (CR LF):\n    if (input[position.position] === 0x0d && input[position.position + 1] === 0x0a) {\n      // 2.1.1. If name is null, return failure.\n      if (name === null) {\n        return 'failure'\n      }\n\n      // 2.1.2. Return name, filename and contentType.\n      return { name, filename, contentType, encoding }\n    }\n\n    // 2.2. Let header name be the result of collecting a sequence of bytes that are\n    //      not 0x0A (LF), 0x0D (CR) or 0x3A (:), given position.\n    let headerName = collectASequenceOfBytes(\n      (char) => char !== 0x0a && char !== 0x0d && char !== 0x3a,\n      input,\n      position\n    )\n\n    // 2.3. Remove any HTTP tab or space bytes from the start or end of header name.\n    headerName = removeChars(headerName, true, true, (char) => char === 0x9 || char === 0x20)\n\n    // 2.4. If header name does not match the field-name token production, return failure.\n    if (!HTTP_TOKEN_CODEPOINTS.test(headerName.toString())) {\n      return 'failure'\n    }\n\n    // 2.5. If the byte at position is not 0x3A (:), return failure.\n    if (input[position.position] !== 0x3a) {\n      return 'failure'\n    }\n\n    // 2.6. Advance position by 1.\n    position.position++\n\n    // 2.7. Collect a sequence of bytes that are HTTP tab or space bytes given position.\n    //      (Do nothing with those bytes.)\n    collectASequenceOfBytes(\n      (char) => char === 0x20 || char === 0x09,\n      input,\n      position\n    )\n\n    // 2.8. Byte-lowercase header name and switch on the result:\n    switch (bufferToLowerCasedHeaderName(headerName)) {\n      case 'content-disposition': {\n        // 1. Set name and filename to null.\n        name = filename = null\n\n        // 2. If position does not point to a sequence of bytes starting with\n        //    `form-data; name=\"`, return failure.\n        if (!bufferStartsWith(input, formDataNameBuffer, position)) {\n          return 'failure'\n        }\n\n        // 3. Advance position so it points at the byte after the next 0x22 (\")\n        //    byte (the one in the sequence of bytes matched above).\n        position.position += 17\n\n        // 4. Set name to the result of parsing a multipart/form-data name given\n        //    input and position, if the result is not failure. Otherwise, return\n        //    failure.\n        name = parseMultipartFormDataName(input, position)\n\n        if (name === null) {\n          return 'failure'\n        }\n\n        // 5. If position points to a sequence of bytes starting with `; filename=\"`:\n        if (bufferStartsWith(input, filenameBuffer, position)) {\n          // Note: undici also handles filename*\n          let check = position.position + filenameBuffer.length\n\n          if (input[check] === 0x2a) {\n            position.position += 1\n            check += 1\n          }\n\n          if (input[check] !== 0x3d || input[check + 1] !== 0x22) { // =\"\n            return 'failure'\n          }\n\n          // 1. Advance position so it points at the byte after the next 0x22 (\") byte\n          //    (the one in the sequence of bytes matched above).\n          position.position += 12\n\n          // 2. Set filename to the result of parsing a multipart/form-data name given\n          //    input and position, if the result is not failure. Otherwise, return failure.\n          filename = parseMultipartFormDataName(input, position)\n\n          if (filename === null) {\n            return 'failure'\n          }\n        }\n\n        break\n      }\n      case 'content-type': {\n        // 1. Let header value be the result of collecting a sequence of bytes that are\n        //    not 0x0A (LF) or 0x0D (CR), given position.\n        let headerValue = collectASequenceOfBytes(\n          (char) => char !== 0x0a && char !== 0x0d,\n          input,\n          position\n        )\n\n        // 2. Remove any HTTP tab or space bytes from the end of header value.\n        headerValue = removeChars(headerValue, false, true, (char) => char === 0x9 || char === 0x20)\n\n        // 3. Set contentType to the isomorphic decoding of header value.\n        contentType = isomorphicDecode(headerValue)\n\n        break\n      }\n      case 'content-transfer-encoding': {\n        let headerValue = collectASequenceOfBytes(\n          (char) => char !== 0x0a && char !== 0x0d,\n          input,\n          position\n        )\n\n        headerValue = removeChars(headerValue, false, true, (char) => char === 0x9 || char === 0x20)\n\n        encoding = isomorphicDecode(headerValue)\n\n        break\n      }\n      default: {\n        // Collect a sequence of bytes that are not 0x0A (LF) or 0x0D (CR), given position.\n        // (Do nothing with those bytes.)\n        collectASequenceOfBytes(\n          (char) => char !== 0x0a && char !== 0x0d,\n          input,\n          position\n        )\n      }\n    }\n\n    // 2.9. If position does not point to a sequence of bytes starting with 0x0D 0x0A\n    //      (CR LF), return failure. Otherwise, advance position by 2 (past the newline).\n    if (input[position.position] !== 0x0d && input[position.position + 1] !== 0x0a) {\n      return 'failure'\n    } else {\n      position.position += 2\n    }\n  }\n}\n\n/**\n * @see https://andreubotella.github.io/multipart-form-data/#parse-a-multipart-form-data-name\n * @param {Buffer} input\n * @param {{ position: number }} position\n */\nfunction parseMultipartFormDataName (input, position) {\n  // 1. Assert: The byte at (position - 1) is 0x22 (\").\n  assert(input[position.position - 1] === 0x22)\n\n  // 2. Let name be the result of collecting a sequence of bytes that are not 0x0A (LF), 0x0D (CR) or 0x22 (\"), given position.\n  /** @type {string | Buffer} */\n  let name = collectASequenceOfBytes(\n    (char) => char !== 0x0a && char !== 0x0d && char !== 0x22,\n    input,\n    position\n  )\n\n  // 3. If the byte at position is not 0x22 (\"), return failure. Otherwise, advance position by 1.\n  if (input[position.position] !== 0x22) {\n    return null // name could be 'failure'\n  } else {\n    position.position++\n  }\n\n  // 4. Replace any occurrence of the following subsequences in name with the given byte:\n  // - `%0A`: 0x0A (LF)\n  // - `%0D`: 0x0D (CR)\n  // - `%22`: 0x22 (\")\n  name = new TextDecoder().decode(name)\n    .replace(/%0A/ig, '\\n')\n    .replace(/%0D/ig, '\\r')\n    .replace(/%22/g, '\"')\n\n  // 5. Return the UTF-8 decoding without BOM of name.\n  return name\n}\n\n/**\n * @param {(char: number) => boolean} condition\n * @param {Buffer} input\n * @param {{ position: number }} position\n */\nfunction collectASequenceOfBytes (condition, input, position) {\n  let start = position.position\n\n  while (start < input.length && condition(input[start])) {\n    ++start\n  }\n\n  return input.subarray(position.position, (position.position = start))\n}\n\n/**\n * @param {Buffer} buf\n * @param {boolean} leading\n * @param {boolean} trailing\n * @param {(charCode: number) => boolean} predicate\n * @returns {Buffer}\n */\nfunction removeChars (buf, leading, trailing, predicate) {\n  let lead = 0\n  let trail = buf.length - 1\n\n  if (leading) {\n    while (lead < buf.length && predicate(buf[lead])) lead++\n  }\n\n  if (trailing) {\n    while (trail > 0 && predicate(buf[trail])) trail--\n  }\n\n  return lead === 0 && trail === buf.length - 1 ? buf : buf.subarray(lead, trail + 1)\n}\n\n/**\n * Checks if {@param buffer} starts with {@param start}\n * @param {Buffer} buffer\n * @param {Buffer} start\n * @param {{ position: number }} position\n */\nfunction bufferStartsWith (buffer, start, position) {\n  if (buffer.length < start.length) {\n    return false\n  }\n\n  for (let i = 0; i < start.length; i++) {\n    if (start[i] !== buffer[position.position + i]) {\n      return false\n    }\n  }\n\n  return true\n}\n\nmodule.exports = {\n  multipartFormDataParser,\n  validateBoundary\n}\n", "'use strict'\n\nconst util = require('../../core/util')\nconst {\n  ReadableStreamFrom,\n  isBlobLike,\n  isReadableStreamLike,\n  readableStreamClose,\n  createDeferredPromise,\n  fullyReadBody,\n  extractMimeType,\n  utf8DecodeBytes\n} = require('./util')\nconst { FormData } = require('./formdata')\nconst { kState } = require('./symbols')\nconst { webidl } = require('./webidl')\nconst { Blob } = require('node:buffer')\nconst assert = require('node:assert')\nconst { isErrored } = require('../../core/util')\nconst { isArrayBuffer } = require('node:util/types')\nconst { serializeAMimeType } = require('./data-url')\nconst { multipartFormDataParser } = require('./formdata-parser')\n\nconst textEncoder = new TextEncoder()\n\n// https://fetch.spec.whatwg.org/#concept-bodyinit-extract\nfunction extractBody (object, keepalive = false) {\n  // 1. Let stream be null.\n  let stream = null\n\n  // 2. If object is a ReadableStream object, then set stream to object.\n  if (object instanceof ReadableStream) {\n    stream = object\n  } else if (isBlobLike(object)) {\n    // 3. Otherwise, if object is a Blob object, set stream to the\n    //    result of running object\u2019s get stream.\n    stream = object.stream()\n  } else {\n    // 4. Otherwise, set stream to a new ReadableStream object, and set\n    //    up stream with byte reading support.\n    stream = new ReadableStream({\n      async pull (controller) {\n        const buffer = typeof source === 'string' ? textEncoder.encode(source) : source\n\n        if (buffer.byteLength) {\n          controller.enqueue(buffer)\n        }\n\n        queueMicrotask(() => readableStreamClose(controller))\n      },\n      start () {},\n      type: 'bytes'\n    })\n  }\n\n  // 5. Assert: stream is a ReadableStream object.\n  assert(isReadableStreamLike(stream))\n\n  // 6. Let action be null.\n  let action = null\n\n  // 7. Let source be null.\n  let source = null\n\n  // 8. Let length be null.\n  let length = null\n\n  // 9. Let type be null.\n  let type = null\n\n  // 10. Switch on object:\n  if (typeof object === 'string') {\n    // Set source to the UTF-8 encoding of object.\n    // Note: setting source to a Uint8Array here breaks some mocking assumptions.\n    source = object\n\n    // Set type to `text/plain;charset=UTF-8`.\n    type = 'text/plain;charset=UTF-8'\n  } else if (object instanceof URLSearchParams) {\n    // URLSearchParams\n\n    // spec says to run application/x-www-form-urlencoded on body.list\n    // this is implemented in Node.js as apart of an URLSearchParams instance toString method\n    // See: https://github.com/nodejs/node/blob/e46c680bf2b211bbd52cf959ca17ee98c7f657f5/lib/internal/url.js#L490\n    // and https://github.com/nodejs/node/blob/e46c680bf2b211bbd52cf959ca17ee98c7f657f5/lib/internal/url.js#L1100\n\n    // Set source to the result of running the application/x-www-form-urlencoded serializer with object\u2019s list.\n    source = object.toString()\n\n    // Set type to `application/x-www-form-urlencoded;charset=UTF-8`.\n    type = 'application/x-www-form-urlencoded;charset=UTF-8'\n  } else if (isArrayBuffer(object)) {\n    // BufferSource/ArrayBuffer\n\n    // Set source to a copy of the bytes held by object.\n    source = new Uint8Array(object.slice())\n  } else if (ArrayBuffer.isView(object)) {\n    // BufferSource/ArrayBufferView\n\n    // Set source to a copy of the bytes held by object.\n    source = new Uint8Array(object.buffer.slice(object.byteOffset, object.byteOffset + object.byteLength))\n  } else if (util.isFormDataLike(object)) {\n    const boundary = `----formdata-undici-0${`${Math.floor(Math.random() * 1e11)}`.padStart(11, '0')}`\n    const prefix = `--${boundary}\\r\\nContent-Disposition: form-data`\n\n    /*! formdata-polyfill. MIT License. Jimmy W\u00E4rting <https://jimmy.warting.se/opensource> */\n    const escape = (str) =>\n      str.replace(/\\n/g, '%0A').replace(/\\r/g, '%0D').replace(/\"/g, '%22')\n    const normalizeLinefeeds = (value) => value.replace(/\\r?\\n|\\r/g, '\\r\\n')\n\n    // Set action to this step: run the multipart/form-data\n    // encoding algorithm, with object\u2019s entry list and UTF-8.\n    // - This ensures that the body is immutable and can't be changed afterwords\n    // - That the content-length is calculated in advance.\n    // - And that all parts are pre-encoded and ready to be sent.\n\n    const blobParts = []\n    const rn = new Uint8Array([13, 10]) // '\\r\\n'\n    length = 0\n    let hasUnknownSizeValue = false\n\n    for (const [name, value] of object) {\n      if (typeof value === 'string') {\n        const chunk = textEncoder.encode(prefix +\n          `; name=\"${escape(normalizeLinefeeds(name))}\"` +\n          `\\r\\n\\r\\n${normalizeLinefeeds(value)}\\r\\n`)\n        blobParts.push(chunk)\n        length += chunk.byteLength\n      } else {\n        const chunk = textEncoder.encode(`${prefix}; name=\"${escape(normalizeLinefeeds(name))}\"` +\n          (value.name ? `; filename=\"${escape(value.name)}\"` : '') + '\\r\\n' +\n          `Content-Type: ${\n            value.type || 'application/octet-stream'\n          }\\r\\n\\r\\n`)\n        blobParts.push(chunk, value, rn)\n        if (typeof value.size === 'number') {\n          length += chunk.byteLength + value.size + rn.byteLength\n        } else {\n          hasUnknownSizeValue = true\n        }\n      }\n    }\n\n    const chunk = textEncoder.encode(`--${boundary}--`)\n    blobParts.push(chunk)\n    length += chunk.byteLength\n    if (hasUnknownSizeValue) {\n      length = null\n    }\n\n    // Set source to object.\n    source = object\n\n    action = async function * () {\n      for (const part of blobParts) {\n        if (part.stream) {\n          yield * part.stream()\n        } else {\n          yield part\n        }\n      }\n    }\n\n    // Set type to `multipart/form-data; boundary=`,\n    // followed by the multipart/form-data boundary string generated\n    // by the multipart/form-data encoding algorithm.\n    type = `multipart/form-data; boundary=${boundary}`\n  } else if (isBlobLike(object)) {\n    // Blob\n\n    // Set source to object.\n    source = object\n\n    // Set length to object\u2019s size.\n    length = object.size\n\n    // If object\u2019s type attribute is not the empty byte sequence, set\n    // type to its value.\n    if (object.type) {\n      type = object.type\n    }\n  } else if (typeof object[Symbol.asyncIterator] === 'function') {\n    // If keepalive is true, then throw a TypeError.\n    if (keepalive) {\n      throw new TypeError('keepalive')\n    }\n\n    // If object is disturbed or locked, then throw a TypeError.\n    if (util.isDisturbed(object) || object.locked) {\n      throw new TypeError(\n        'Response body object should not be disturbed or locked'\n      )\n    }\n\n    stream =\n      object instanceof ReadableStream ? object : ReadableStreamFrom(object)\n  }\n\n  // 11. If source is a byte sequence, then set action to a\n  // step that returns source and length to source\u2019s length.\n  if (typeof source === 'string' || util.isBuffer(source)) {\n    length = Buffer.byteLength(source)\n  }\n\n  // 12. If action is non-null, then run these steps in in parallel:\n  if (action != null) {\n    // Run action.\n    let iterator\n    stream = new ReadableStream({\n      async start () {\n        iterator = action(object)[Symbol.asyncIterator]()\n      },\n      async pull (controller) {\n        const { value, done } = await iterator.next()\n        if (done) {\n          // When running action is done, close stream.\n          queueMicrotask(() => {\n            controller.close()\n            controller.byobRequest?.respond(0)\n          })\n        } else {\n          // Whenever one or more bytes are available and stream is not errored,\n          // enqueue a Uint8Array wrapping an ArrayBuffer containing the available\n          // bytes into stream.\n          if (!isErrored(stream)) {\n            const buffer = new Uint8Array(value)\n            if (buffer.byteLength) {\n              controller.enqueue(buffer)\n            }\n          }\n        }\n        return controller.desiredSize > 0\n      },\n      async cancel (reason) {\n        await iterator.return()\n      },\n      type: 'bytes'\n    })\n  }\n\n  // 13. Let body be a body whose stream is stream, source is source,\n  // and length is length.\n  const body = { stream, source, length }\n\n  // 14. Return (body, type).\n  return [body, type]\n}\n\n// https://fetch.spec.whatwg.org/#bodyinit-safely-extract\nfunction safelyExtractBody (object, keepalive = false) {\n  // To safely extract a body and a `Content-Type` value from\n  // a byte sequence or BodyInit object object, run these steps:\n\n  // 1. If object is a ReadableStream object, then:\n  if (object instanceof ReadableStream) {\n    // Assert: object is neither disturbed nor locked.\n    // istanbul ignore next\n    assert(!util.isDisturbed(object), 'The body has already been consumed.')\n    // istanbul ignore next\n    assert(!object.locked, 'The stream is locked.')\n  }\n\n  // 2. Return the results of extracting object.\n  return extractBody(object, keepalive)\n}\n\nfunction cloneBody (body) {\n  // To clone a body body, run these steps:\n\n  // https://fetch.spec.whatwg.org/#concept-body-clone\n\n  // 1. Let \u00AB out1, out2 \u00BB be the result of teeing body\u2019s stream.\n  const [out1, out2] = body.stream.tee()\n\n  // 2. Set body\u2019s stream to out1.\n  body.stream = out1\n\n  // 3. Return a body whose stream is out2 and other members are copied from body.\n  return {\n    stream: out2,\n    length: body.length,\n    source: body.source\n  }\n}\n\nfunction throwIfAborted (state) {\n  if (state.aborted) {\n    throw new DOMException('The operation was aborted.', 'AbortError')\n  }\n}\n\nfunction bodyMixinMethods (instance) {\n  const methods = {\n    blob () {\n      // The blob() method steps are to return the result of\n      // running consume body with this and the following step\n      // given a byte sequence bytes: return a Blob whose\n      // contents are bytes and whose type attribute is this\u2019s\n      // MIME type.\n      return consumeBody(this, (bytes) => {\n        let mimeType = bodyMimeType(this)\n\n        if (mimeType === null) {\n          mimeType = ''\n        } else if (mimeType) {\n          mimeType = serializeAMimeType(mimeType)\n        }\n\n        // Return a Blob whose contents are bytes and type attribute\n        // is mimeType.\n        return new Blob([bytes], { type: mimeType })\n      }, instance, false)\n    },\n\n    arrayBuffer () {\n      // The arrayBuffer() method steps are to return the result\n      // of running consume body with this and the following step\n      // given a byte sequence bytes: return a new ArrayBuffer\n      // whose contents are bytes.\n      return consumeBody(this, (bytes) => {\n        // Note: arrayBuffer already cloned.\n        return bytes.buffer\n      }, instance, true)\n    },\n\n    text () {\n      // The text() method steps are to return the result of running\n      // consume body with this and UTF-8 decode.\n      return consumeBody(this, utf8DecodeBytes, instance, false)\n    },\n\n    json () {\n      // The json() method steps are to return the result of running\n      // consume body with this and parse JSON from bytes.\n      return consumeBody(this, parseJSONFromBytes, instance, false)\n    },\n\n    formData () {\n      // The formData() method steps are to return the result of running\n      // consume body with this and the following step given a byte sequence bytes:\n      return consumeBody(this, (value) => {\n        // 1. Let mimeType be the result of get the MIME type with this.\n        const mimeType = bodyMimeType(this)\n\n        // 2. If mimeType is non-null, then switch on mimeType\u2019s essence and run\n        //    the corresponding steps:\n        if (mimeType !== null) {\n          switch (mimeType.essence) {\n            case 'multipart/form-data': {\n              // 1. ... [long step]\n              const parsed = multipartFormDataParser(value, mimeType)\n\n              // 2. If that fails for some reason, then throw a TypeError.\n              if (parsed === 'failure') {\n                throw new TypeError('Failed to parse body as FormData.')\n              }\n\n              // 3. Return a new FormData object, appending each entry,\n              //    resulting from the parsing operation, to its entry list.\n              const fd = new FormData()\n              fd[kState] = parsed\n\n              return fd\n            }\n            case 'application/x-www-form-urlencoded': {\n              // 1. Let entries be the result of parsing bytes.\n              const entries = new URLSearchParams(value.toString())\n\n              // 2. If entries is failure, then throw a TypeError.\n\n              // 3. Return a new FormData object whose entry list is entries.\n              const fd = new FormData()\n\n              for (const [name, value] of entries) {\n                fd.append(name, value)\n              }\n\n              return fd\n            }\n          }\n        }\n\n        // 3. Throw a TypeError.\n        throw new TypeError(\n          'Content-Type was not one of \"multipart/form-data\" or \"application/x-www-form-urlencoded\".'\n        )\n      }, instance, false)\n    },\n\n    bytes () {\n      // The bytes() method steps are to return the result of running consume body\n      // with this and the following step given a byte sequence bytes: return the\n      // result of creating a Uint8Array from bytes in this\u2019s relevant realm.\n      return consumeBody(this, (bytes) => {\n        return new Uint8Array(bytes.buffer, 0, bytes.byteLength)\n      }, instance, true)\n    }\n  }\n\n  return methods\n}\n\nfunction mixinBody (prototype) {\n  Object.assign(prototype.prototype, bodyMixinMethods(prototype))\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#concept-body-consume-body\n * @param {Response|Request} object\n * @param {(value: unknown) => unknown} convertBytesToJSValue\n * @param {Response|Request} instance\n * @param {boolean} [shouldClone]\n */\nasync function consumeBody (object, convertBytesToJSValue, instance, shouldClone) {\n  webidl.brandCheck(object, instance)\n\n  // 1. If object is unusable, then return a promise rejected\n  //    with a TypeError.\n  if (bodyUnusable(object[kState].body)) {\n    throw new TypeError('Body is unusable: Body has already been read')\n  }\n\n  throwIfAborted(object[kState])\n\n  // 2. Let promise be a new promise.\n  const promise = createDeferredPromise()\n\n  // 3. Let errorSteps given error be to reject promise with error.\n  const errorSteps = (error) => promise.reject(error)\n\n  // 4. Let successSteps given a byte sequence data be to resolve\n  //    promise with the result of running convertBytesToJSValue\n  //    with data. If that threw an exception, then run errorSteps\n  //    with that exception.\n  const successSteps = (data) => {\n    try {\n      promise.resolve(convertBytesToJSValue(data))\n    } catch (e) {\n      errorSteps(e)\n    }\n  }\n\n  // 5. If object\u2019s body is null, then run successSteps with an\n  //    empty byte sequence.\n  if (object[kState].body == null) {\n    successSteps(Buffer.allocUnsafe(0))\n    return promise.promise\n  }\n\n  // 6. Otherwise, fully read object\u2019s body given successSteps,\n  //    errorSteps, and object\u2019s relevant global object.\n  await fullyReadBody(object[kState].body, successSteps, errorSteps, shouldClone)\n\n  // 7. Return promise.\n  return promise.promise\n}\n\n// https://fetch.spec.whatwg.org/#body-unusable\nfunction bodyUnusable (body) {\n  // An object including the Body interface mixin is\n  // said to be unusable if its body is non-null and\n  // its body\u2019s stream is disturbed or locked.\n  return body != null && (body.stream.locked || util.isDisturbed(body.stream))\n}\n\n/**\n * @see https://infra.spec.whatwg.org/#parse-json-bytes-to-a-javascript-value\n * @param {Uint8Array} bytes\n */\nfunction parseJSONFromBytes (bytes) {\n  return JSON.parse(utf8DecodeBytes(bytes))\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#concept-body-mime-type\n * @param {import('./response').Response|import('./request').Request} requestOrResponse\n */\nfunction bodyMimeType (requestOrResponse) {\n  // 1. Let headers be null.\n  // 2. If requestOrResponse is a Request object, then set headers to requestOrResponse\u2019s request\u2019s header list.\n  // 3. Otherwise, set headers to requestOrResponse\u2019s response\u2019s header list.\n  /** @type {import('./headers').HeadersList} */\n  const headers = requestOrResponse[kState].headersList\n\n  // 4. Let mimeType be the result of extracting a MIME type from headers.\n  const mimeType = extractMimeType(headers)\n\n  // 5. If mimeType is failure, then return null.\n  if (mimeType === 'failure') {\n    return null\n  }\n\n  // 6. Return mimeType.\n  return mimeType\n}\n\nmodule.exports = {\n  extractBody,\n  safelyExtractBody,\n  cloneBody,\n  mixinBody\n}\n", "'use strict'\n\n/* global WebAssembly */\n\nconst assert = require('node:assert')\nconst util = require('../core/util.js')\nconst { channels } = require('../core/diagnostics.js')\nconst timers = require('../util/timers.js')\nconst {\n  RequestContentLengthMismatchError,\n  ResponseContentLengthMismatchError,\n  RequestAbortedError,\n  HeadersTimeoutError,\n  HeadersOverflowError,\n  SocketError,\n  InformationalError,\n  BodyTimeoutError,\n  HTTPParserError,\n  ResponseExceededMaxSizeError\n} = require('../core/errors.js')\nconst {\n  kUrl,\n  kReset,\n  kClient,\n  kParser,\n  kBlocking,\n  kRunning,\n  kPending,\n  kSize,\n  kWriting,\n  kQueue,\n  kNoRef,\n  kKeepAliveDefaultTimeout,\n  kHostHeader,\n  kPendingIdx,\n  kRunningIdx,\n  kError,\n  kPipelining,\n  kSocket,\n  kKeepAliveTimeoutValue,\n  kMaxHeadersSize,\n  kKeepAliveMaxTimeout,\n  kKeepAliveTimeoutThreshold,\n  kHeadersTimeout,\n  kBodyTimeout,\n  kStrictContentLength,\n  kMaxRequests,\n  kCounter,\n  kMaxResponseSize,\n  kOnError,\n  kResume,\n  kHTTPContext\n} = require('../core/symbols.js')\n\nconst constants = require('../llhttp/constants.js')\nconst EMPTY_BUF = Buffer.alloc(0)\nconst FastBuffer = Buffer[Symbol.species]\nconst addListener = util.addListener\nconst removeAllListeners = util.removeAllListeners\n\nlet extractBody\n\nasync function lazyllhttp () {\n  const llhttpWasmData = process.env.JEST_WORKER_ID ? require('../llhttp/llhttp-wasm.js') : undefined\n\n  let mod\n  try {\n    mod = await WebAssembly.compile(require('../llhttp/llhttp_simd-wasm.js'))\n  } catch (e) {\n    /* istanbul ignore next */\n\n    // We could check if the error was caused by the simd option not\n    // being enabled, but the occurring of this other error\n    // * https://github.com/emscripten-core/emscripten/issues/11495\n    // got me to remove that check to avoid breaking Node 12.\n    mod = await WebAssembly.compile(llhttpWasmData || require('../llhttp/llhttp-wasm.js'))\n  }\n\n  return await WebAssembly.instantiate(mod, {\n    env: {\n      /* eslint-disable camelcase */\n\n      wasm_on_url: (p, at, len) => {\n        /* istanbul ignore next */\n        return 0\n      },\n      wasm_on_status: (p, at, len) => {\n        assert.strictEqual(currentParser.ptr, p)\n        const start = at - currentBufferPtr + currentBufferRef.byteOffset\n        return currentParser.onStatus(new FastBuffer(currentBufferRef.buffer, start, len)) || 0\n      },\n      wasm_on_message_begin: (p) => {\n        assert.strictEqual(currentParser.ptr, p)\n        return currentParser.onMessageBegin() || 0\n      },\n      wasm_on_header_field: (p, at, len) => {\n        assert.strictEqual(currentParser.ptr, p)\n        const start = at - currentBufferPtr + currentBufferRef.byteOffset\n        return currentParser.onHeaderField(new FastBuffer(currentBufferRef.buffer, start, len)) || 0\n      },\n      wasm_on_header_value: (p, at, len) => {\n        assert.strictEqual(currentParser.ptr, p)\n        const start = at - currentBufferPtr + currentBufferRef.byteOffset\n        return currentParser.onHeaderValue(new FastBuffer(currentBufferRef.buffer, start, len)) || 0\n      },\n      wasm_on_headers_complete: (p, statusCode, upgrade, shouldKeepAlive) => {\n        assert.strictEqual(currentParser.ptr, p)\n        return currentParser.onHeadersComplete(statusCode, Boolean(upgrade), Boolean(shouldKeepAlive)) || 0\n      },\n      wasm_on_body: (p, at, len) => {\n        assert.strictEqual(currentParser.ptr, p)\n        const start = at - currentBufferPtr + currentBufferRef.byteOffset\n        return currentParser.onBody(new FastBuffer(currentBufferRef.buffer, start, len)) || 0\n      },\n      wasm_on_message_complete: (p) => {\n        assert.strictEqual(currentParser.ptr, p)\n        return currentParser.onMessageComplete() || 0\n      }\n\n      /* eslint-enable camelcase */\n    }\n  })\n}\n\nlet llhttpInstance = null\nlet llhttpPromise = lazyllhttp()\nllhttpPromise.catch()\n\nlet currentParser = null\nlet currentBufferRef = null\nlet currentBufferSize = 0\nlet currentBufferPtr = null\n\nconst TIMEOUT_HEADERS = 1\nconst TIMEOUT_BODY = 2\nconst TIMEOUT_IDLE = 3\n\nclass Parser {\n  constructor (client, socket, { exports }) {\n    assert(Number.isFinite(client[kMaxHeadersSize]) && client[kMaxHeadersSize] > 0)\n\n    this.llhttp = exports\n    this.ptr = this.llhttp.llhttp_alloc(constants.TYPE.RESPONSE)\n    this.client = client\n    this.socket = socket\n    this.timeout = null\n    this.timeoutValue = null\n    this.timeoutType = null\n    this.statusCode = null\n    this.statusText = ''\n    this.upgrade = false\n    this.headers = []\n    this.headersSize = 0\n    this.headersMaxSize = client[kMaxHeadersSize]\n    this.shouldKeepAlive = false\n    this.paused = false\n    this.resume = this.resume.bind(this)\n\n    this.bytesRead = 0\n\n    this.keepAlive = ''\n    this.contentLength = ''\n    this.connection = ''\n    this.maxResponseSize = client[kMaxResponseSize]\n  }\n\n  setTimeout (value, type) {\n    this.timeoutType = type\n    if (value !== this.timeoutValue) {\n      timers.clearTimeout(this.timeout)\n      if (value) {\n        this.timeout = timers.setTimeout(onParserTimeout, value, this)\n        // istanbul ignore else: only for jest\n        if (this.timeout.unref) {\n          this.timeout.unref()\n        }\n      } else {\n        this.timeout = null\n      }\n      this.timeoutValue = value\n    } else if (this.timeout) {\n      // istanbul ignore else: only for jest\n      if (this.timeout.refresh) {\n        this.timeout.refresh()\n      }\n    }\n  }\n\n  resume () {\n    if (this.socket.destroyed || !this.paused) {\n      return\n    }\n\n    assert(this.ptr != null)\n    assert(currentParser == null)\n\n    this.llhttp.llhttp_resume(this.ptr)\n\n    assert(this.timeoutType === TIMEOUT_BODY)\n    if (this.timeout) {\n      // istanbul ignore else: only for jest\n      if (this.timeout.refresh) {\n        this.timeout.refresh()\n      }\n    }\n\n    this.paused = false\n    this.execute(this.socket.read() || EMPTY_BUF) // Flush parser.\n    this.readMore()\n  }\n\n  readMore () {\n    while (!this.paused && this.ptr) {\n      const chunk = this.socket.read()\n      if (chunk === null) {\n        break\n      }\n      this.execute(chunk)\n    }\n  }\n\n  execute (data) {\n    assert(this.ptr != null)\n    assert(currentParser == null)\n    assert(!this.paused)\n\n    const { socket, llhttp } = this\n\n    if (data.length > currentBufferSize) {\n      if (currentBufferPtr) {\n        llhttp.free(currentBufferPtr)\n      }\n      currentBufferSize = Math.ceil(data.length / 4096) * 4096\n      currentBufferPtr = llhttp.malloc(currentBufferSize)\n    }\n\n    new Uint8Array(llhttp.memory.buffer, currentBufferPtr, currentBufferSize).set(data)\n\n    // Call `execute` on the wasm parser.\n    // We pass the `llhttp_parser` pointer address, the pointer address of buffer view data,\n    // and finally the length of bytes to parse.\n    // The return value is an error code or `constants.ERROR.OK`.\n    try {\n      let ret\n\n      try {\n        currentBufferRef = data\n        currentParser = this\n        ret = llhttp.llhttp_execute(this.ptr, currentBufferPtr, data.length)\n        /* eslint-disable-next-line no-useless-catch */\n      } catch (err) {\n        /* istanbul ignore next: difficult to make a test case for */\n        throw err\n      } finally {\n        currentParser = null\n        currentBufferRef = null\n      }\n\n      const offset = llhttp.llhttp_get_error_pos(this.ptr) - currentBufferPtr\n\n      if (ret === constants.ERROR.PAUSED_UPGRADE) {\n        this.onUpgrade(data.slice(offset))\n      } else if (ret === constants.ERROR.PAUSED) {\n        this.paused = true\n        socket.unshift(data.slice(offset))\n      } else if (ret !== constants.ERROR.OK) {\n        const ptr = llhttp.llhttp_get_error_reason(this.ptr)\n        let message = ''\n        /* istanbul ignore else: difficult to make a test case for */\n        if (ptr) {\n          const len = new Uint8Array(llhttp.memory.buffer, ptr).indexOf(0)\n          message =\n            'Response does not match the HTTP/1.1 protocol (' +\n            Buffer.from(llhttp.memory.buffer, ptr, len).toString() +\n            ')'\n        }\n        throw new HTTPParserError(message, constants.ERROR[ret], data.slice(offset))\n      }\n    } catch (err) {\n      util.destroy(socket, err)\n    }\n  }\n\n  destroy () {\n    assert(this.ptr != null)\n    assert(currentParser == null)\n\n    this.llhttp.llhttp_free(this.ptr)\n    this.ptr = null\n\n    timers.clearTimeout(this.timeout)\n    this.timeout = null\n    this.timeoutValue = null\n    this.timeoutType = null\n\n    this.paused = false\n  }\n\n  onStatus (buf) {\n    this.statusText = buf.toString()\n  }\n\n  onMessageBegin () {\n    const { socket, client } = this\n\n    /* istanbul ignore next: difficult to make a test case for */\n    if (socket.destroyed) {\n      return -1\n    }\n\n    const request = client[kQueue][client[kRunningIdx]]\n    if (!request) {\n      return -1\n    }\n    request.onResponseStarted()\n  }\n\n  onHeaderField (buf) {\n    const len = this.headers.length\n\n    if ((len & 1) === 0) {\n      this.headers.push(buf)\n    } else {\n      this.headers[len - 1] = Buffer.concat([this.headers[len - 1], buf])\n    }\n\n    this.trackHeader(buf.length)\n  }\n\n  onHeaderValue (buf) {\n    let len = this.headers.length\n\n    if ((len & 1) === 1) {\n      this.headers.push(buf)\n      len += 1\n    } else {\n      this.headers[len - 1] = Buffer.concat([this.headers[len - 1], buf])\n    }\n\n    const key = this.headers[len - 2]\n    if (key.length === 10) {\n      const headerName = util.bufferToLowerCasedHeaderName(key)\n      if (headerName === 'keep-alive') {\n        this.keepAlive += buf.toString()\n      } else if (headerName === 'connection') {\n        this.connection += buf.toString()\n      }\n    } else if (key.length === 14 && util.bufferToLowerCasedHeaderName(key) === 'content-length') {\n      this.contentLength += buf.toString()\n    }\n\n    this.trackHeader(buf.length)\n  }\n\n  trackHeader (len) {\n    this.headersSize += len\n    if (this.headersSize >= this.headersMaxSize) {\n      util.destroy(this.socket, new HeadersOverflowError())\n    }\n  }\n\n  onUpgrade (head) {\n    const { upgrade, client, socket, headers, statusCode } = this\n\n    assert(upgrade)\n\n    const request = client[kQueue][client[kRunningIdx]]\n    assert(request)\n\n    assert(!socket.destroyed)\n    assert(socket === client[kSocket])\n    assert(!this.paused)\n    assert(request.upgrade || request.method === 'CONNECT')\n\n    this.statusCode = null\n    this.statusText = ''\n    this.shouldKeepAlive = null\n\n    assert(this.headers.length % 2 === 0)\n    this.headers = []\n    this.headersSize = 0\n\n    socket.unshift(head)\n\n    socket[kParser].destroy()\n    socket[kParser] = null\n\n    socket[kClient] = null\n    socket[kError] = null\n\n    removeAllListeners(socket)\n\n    client[kSocket] = null\n    client[kHTTPContext] = null // TODO (fix): This is hacky...\n    client[kQueue][client[kRunningIdx]++] = null\n    client.emit('disconnect', client[kUrl], [client], new InformationalError('upgrade'))\n\n    try {\n      request.onUpgrade(statusCode, headers, socket)\n    } catch (err) {\n      util.destroy(socket, err)\n    }\n\n    client[kResume]()\n  }\n\n  onHeadersComplete (statusCode, upgrade, shouldKeepAlive) {\n    const { client, socket, headers, statusText } = this\n\n    /* istanbul ignore next: difficult to make a test case for */\n    if (socket.destroyed) {\n      return -1\n    }\n\n    const request = client[kQueue][client[kRunningIdx]]\n\n    /* istanbul ignore next: difficult to make a test case for */\n    if (!request) {\n      return -1\n    }\n\n    assert(!this.upgrade)\n    assert(this.statusCode < 200)\n\n    if (statusCode === 100) {\n      util.destroy(socket, new SocketError('bad response', util.getSocketInfo(socket)))\n      return -1\n    }\n\n    /* this can only happen if server is misbehaving */\n    if (upgrade && !request.upgrade) {\n      util.destroy(socket, new SocketError('bad upgrade', util.getSocketInfo(socket)))\n      return -1\n    }\n\n    assert.strictEqual(this.timeoutType, TIMEOUT_HEADERS)\n\n    this.statusCode = statusCode\n    this.shouldKeepAlive = (\n      shouldKeepAlive ||\n      // Override llhttp value which does not allow keepAlive for HEAD.\n      (request.method === 'HEAD' && !socket[kReset] && this.connection.toLowerCase() === 'keep-alive')\n    )\n\n    if (this.statusCode >= 200) {\n      const bodyTimeout = request.bodyTimeout != null\n        ? request.bodyTimeout\n        : client[kBodyTimeout]\n      this.setTimeout(bodyTimeout, TIMEOUT_BODY)\n    } else if (this.timeout) {\n      // istanbul ignore else: only for jest\n      if (this.timeout.refresh) {\n        this.timeout.refresh()\n      }\n    }\n\n    if (request.method === 'CONNECT') {\n      assert(client[kRunning] === 1)\n      this.upgrade = true\n      return 2\n    }\n\n    if (upgrade) {\n      assert(client[kRunning] === 1)\n      this.upgrade = true\n      return 2\n    }\n\n    assert(this.headers.length % 2 === 0)\n    this.headers = []\n    this.headersSize = 0\n\n    if (this.shouldKeepAlive && client[kPipelining]) {\n      const keepAliveTimeout = this.keepAlive ? util.parseKeepAliveTimeout(this.keepAlive) : null\n\n      if (keepAliveTimeout != null) {\n        const timeout = Math.min(\n          keepAliveTimeout - client[kKeepAliveTimeoutThreshold],\n          client[kKeepAliveMaxTimeout]\n        )\n        if (timeout <= 0) {\n          socket[kReset] = true\n        } else {\n          client[kKeepAliveTimeoutValue] = timeout\n        }\n      } else {\n        client[kKeepAliveTimeoutValue] = client[kKeepAliveDefaultTimeout]\n      }\n    } else {\n      // Stop more requests from being dispatched.\n      socket[kReset] = true\n    }\n\n    const pause = request.onHeaders(statusCode, headers, this.resume, statusText) === false\n\n    if (request.aborted) {\n      return -1\n    }\n\n    if (request.method === 'HEAD') {\n      return 1\n    }\n\n    if (statusCode < 200) {\n      return 1\n    }\n\n    if (socket[kBlocking]) {\n      socket[kBlocking] = false\n      client[kResume]()\n    }\n\n    return pause ? constants.ERROR.PAUSED : 0\n  }\n\n  onBody (buf) {\n    const { client, socket, statusCode, maxResponseSize } = this\n\n    if (socket.destroyed) {\n      return -1\n    }\n\n    const request = client[kQueue][client[kRunningIdx]]\n    assert(request)\n\n    assert.strictEqual(this.timeoutType, TIMEOUT_BODY)\n    if (this.timeout) {\n      // istanbul ignore else: only for jest\n      if (this.timeout.refresh) {\n        this.timeout.refresh()\n      }\n    }\n\n    assert(statusCode >= 200)\n\n    if (maxResponseSize > -1 && this.bytesRead + buf.length > maxResponseSize) {\n      util.destroy(socket, new ResponseExceededMaxSizeError())\n      return -1\n    }\n\n    this.bytesRead += buf.length\n\n    if (request.onData(buf) === false) {\n      return constants.ERROR.PAUSED\n    }\n  }\n\n  onMessageComplete () {\n    const { client, socket, statusCode, upgrade, headers, contentLength, bytesRead, shouldKeepAlive } = this\n\n    if (socket.destroyed && (!statusCode || shouldKeepAlive)) {\n      return -1\n    }\n\n    if (upgrade) {\n      return\n    }\n\n    const request = client[kQueue][client[kRunningIdx]]\n    assert(request)\n\n    assert(statusCode >= 100)\n\n    this.statusCode = null\n    this.statusText = ''\n    this.bytesRead = 0\n    this.contentLength = ''\n    this.keepAlive = ''\n    this.connection = ''\n\n    assert(this.headers.length % 2 === 0)\n    this.headers = []\n    this.headersSize = 0\n\n    if (statusCode < 200) {\n      return\n    }\n\n    /* istanbul ignore next: should be handled by llhttp? */\n    if (request.method !== 'HEAD' && contentLength && bytesRead !== parseInt(contentLength, 10)) {\n      util.destroy(socket, new ResponseContentLengthMismatchError())\n      return -1\n    }\n\n    request.onComplete(headers)\n\n    client[kQueue][client[kRunningIdx]++] = null\n\n    if (socket[kWriting]) {\n      assert.strictEqual(client[kRunning], 0)\n      // Response completed before request.\n      util.destroy(socket, new InformationalError('reset'))\n      return constants.ERROR.PAUSED\n    } else if (!shouldKeepAlive) {\n      util.destroy(socket, new InformationalError('reset'))\n      return constants.ERROR.PAUSED\n    } else if (socket[kReset] && client[kRunning] === 0) {\n      // Destroy socket once all requests have completed.\n      // The request at the tail of the pipeline is the one\n      // that requested reset and no further requests should\n      // have been queued since then.\n      util.destroy(socket, new InformationalError('reset'))\n      return constants.ERROR.PAUSED\n    } else if (client[kPipelining] == null || client[kPipelining] === 1) {\n      // We must wait a full event loop cycle to reuse this socket to make sure\n      // that non-spec compliant servers are not closing the connection even if they\n      // said they won't.\n      setImmediate(() => client[kResume]())\n    } else {\n      client[kResume]()\n    }\n  }\n}\n\nfunction onParserTimeout (parser) {\n  const { socket, timeoutType, client } = parser\n\n  /* istanbul ignore else */\n  if (timeoutType === TIMEOUT_HEADERS) {\n    if (!socket[kWriting] || socket.writableNeedDrain || client[kRunning] > 1) {\n      assert(!parser.paused, 'cannot be paused while waiting for headers')\n      util.destroy(socket, new HeadersTimeoutError())\n    }\n  } else if (timeoutType === TIMEOUT_BODY) {\n    if (!parser.paused) {\n      util.destroy(socket, new BodyTimeoutError())\n    }\n  } else if (timeoutType === TIMEOUT_IDLE) {\n    assert(client[kRunning] === 0 && client[kKeepAliveTimeoutValue])\n    util.destroy(socket, new InformationalError('socket idle timeout'))\n  }\n}\n\nasync function connectH1 (client, socket) {\n  client[kSocket] = socket\n\n  if (!llhttpInstance) {\n    llhttpInstance = await llhttpPromise\n    llhttpPromise = null\n  }\n\n  socket[kNoRef] = false\n  socket[kWriting] = false\n  socket[kReset] = false\n  socket[kBlocking] = false\n  socket[kParser] = new Parser(client, socket, llhttpInstance)\n\n  addListener(socket, 'error', function (err) {\n    const parser = this[kParser]\n\n    assert(err.code !== 'ERR_TLS_CERT_ALTNAME_INVALID')\n\n    // On Mac OS, we get an ECONNRESET even if there is a full body to be forwarded\n    // to the user.\n    if (err.code === 'ECONNRESET' && parser.statusCode && !parser.shouldKeepAlive) {\n      // We treat all incoming data so for as a valid response.\n      parser.onMessageComplete()\n      return\n    }\n\n    this[kError] = err\n\n    this[kClient][kOnError](err)\n  })\n  addListener(socket, 'readable', function () {\n    const parser = this[kParser]\n\n    if (parser) {\n      parser.readMore()\n    }\n  })\n  addListener(socket, 'end', function () {\n    const parser = this[kParser]\n\n    if (parser.statusCode && !parser.shouldKeepAlive) {\n      // We treat all incoming data so far as a valid response.\n      parser.onMessageComplete()\n      return\n    }\n\n    util.destroy(this, new SocketError('other side closed', util.getSocketInfo(this)))\n  })\n  addListener(socket, 'close', function () {\n    const client = this[kClient]\n    const parser = this[kParser]\n\n    if (parser) {\n      if (!this[kError] && parser.statusCode && !parser.shouldKeepAlive) {\n        // We treat all incoming data so far as a valid response.\n        parser.onMessageComplete()\n      }\n\n      this[kParser].destroy()\n      this[kParser] = null\n    }\n\n    const err = this[kError] || new SocketError('closed', util.getSocketInfo(this))\n\n    client[kSocket] = null\n    client[kHTTPContext] = null // TODO (fix): This is hacky...\n\n    if (client.destroyed) {\n      assert(client[kPending] === 0)\n\n      // Fail entire queue.\n      const requests = client[kQueue].splice(client[kRunningIdx])\n      for (let i = 0; i < requests.length; i++) {\n        const request = requests[i]\n        util.errorRequest(client, request, err)\n      }\n    } else if (client[kRunning] > 0 && err.code !== 'UND_ERR_INFO') {\n      // Fail head of pipeline.\n      const request = client[kQueue][client[kRunningIdx]]\n      client[kQueue][client[kRunningIdx]++] = null\n\n      util.errorRequest(client, request, err)\n    }\n\n    client[kPendingIdx] = client[kRunningIdx]\n\n    assert(client[kRunning] === 0)\n\n    client.emit('disconnect', client[kUrl], [client], err)\n\n    client[kResume]()\n  })\n\n  let closed = false\n  socket.on('close', () => {\n    closed = true\n  })\n\n  return {\n    version: 'h1',\n    defaultPipelining: 1,\n    write (...args) {\n      return writeH1(client, ...args)\n    },\n    resume () {\n      resumeH1(client)\n    },\n    destroy (err, callback) {\n      if (closed) {\n        queueMicrotask(callback)\n      } else {\n        socket.destroy(err).on('close', callback)\n      }\n    },\n    get destroyed () {\n      return socket.destroyed\n    },\n    busy (request) {\n      if (socket[kWriting] || socket[kReset] || socket[kBlocking]) {\n        return true\n      }\n\n      if (request) {\n        if (client[kRunning] > 0 && !request.idempotent) {\n          // Non-idempotent request cannot be retried.\n          // Ensure that no other requests are inflight and\n          // could cause failure.\n          return true\n        }\n\n        if (client[kRunning] > 0 && (request.upgrade || request.method === 'CONNECT')) {\n          // Don't dispatch an upgrade until all preceding requests have completed.\n          // A misbehaving server might upgrade the connection before all pipelined\n          // request has completed.\n          return true\n        }\n\n        if (client[kRunning] > 0 && util.bodyLength(request.body) !== 0 &&\n          (util.isStream(request.body) || util.isAsyncIterable(request.body) || util.isFormDataLike(request.body))) {\n          // Request with stream or iterator body can error while other requests\n          // are inflight and indirectly error those as well.\n          // Ensure this doesn't happen by waiting for inflight\n          // to complete before dispatching.\n\n          // Request with stream or iterator body cannot be retried.\n          // Ensure that no other requests are inflight and\n          // could cause failure.\n          return true\n        }\n      }\n\n      return false\n    }\n  }\n}\n\nfunction resumeH1 (client) {\n  const socket = client[kSocket]\n\n  if (socket && !socket.destroyed) {\n    if (client[kSize] === 0) {\n      if (!socket[kNoRef] && socket.unref) {\n        socket.unref()\n        socket[kNoRef] = true\n      }\n    } else if (socket[kNoRef] && socket.ref) {\n      socket.ref()\n      socket[kNoRef] = false\n    }\n\n    if (client[kSize] === 0) {\n      if (socket[kParser].timeoutType !== TIMEOUT_IDLE) {\n        socket[kParser].setTimeout(client[kKeepAliveTimeoutValue], TIMEOUT_IDLE)\n      }\n    } else if (client[kRunning] > 0 && socket[kParser].statusCode < 200) {\n      if (socket[kParser].timeoutType !== TIMEOUT_HEADERS) {\n        const request = client[kQueue][client[kRunningIdx]]\n        const headersTimeout = request.headersTimeout != null\n          ? request.headersTimeout\n          : client[kHeadersTimeout]\n        socket[kParser].setTimeout(headersTimeout, TIMEOUT_HEADERS)\n      }\n    }\n  }\n}\n\n// https://www.rfc-editor.org/rfc/rfc7230#section-3.3.2\nfunction shouldSendContentLength (method) {\n  return method !== 'GET' && method !== 'HEAD' && method !== 'OPTIONS' && method !== 'TRACE' && method !== 'CONNECT'\n}\n\nfunction writeH1 (client, request) {\n  const { method, path, host, upgrade, blocking, reset } = request\n\n  let { body, headers, contentLength } = request\n\n  // https://tools.ietf.org/html/rfc7231#section-4.3.1\n  // https://tools.ietf.org/html/rfc7231#section-4.3.2\n  // https://tools.ietf.org/html/rfc7231#section-4.3.5\n\n  // Sending a payload body on a request that does not\n  // expect it can cause undefined behavior on some\n  // servers and corrupt connection state. Do not\n  // re-use the connection for further requests.\n\n  const expectsPayload = (\n    method === 'PUT' ||\n    method === 'POST' ||\n    method === 'PATCH'\n  )\n\n  if (util.isFormDataLike(body)) {\n    if (!extractBody) {\n      extractBody = require('../web/fetch/body.js').extractBody\n    }\n\n    const [bodyStream, contentType] = extractBody(body)\n    if (request.contentType == null) {\n      headers.push('content-type', contentType)\n    }\n    body = bodyStream.stream\n    contentLength = bodyStream.length\n  } else if (util.isBlobLike(body) && request.contentType == null && body.type) {\n    headers.push('content-type', body.type)\n  }\n\n  if (body && typeof body.read === 'function') {\n    // Try to read EOF in order to get length.\n    body.read(0)\n  }\n\n  const bodyLength = util.bodyLength(body)\n\n  contentLength = bodyLength ?? contentLength\n\n  if (contentLength === null) {\n    contentLength = request.contentLength\n  }\n\n  if (contentLength === 0 && !expectsPayload) {\n    // https://tools.ietf.org/html/rfc7230#section-3.3.2\n    // A user agent SHOULD NOT send a Content-Length header field when\n    // the request message does not contain a payload body and the method\n    // semantics do not anticipate such a body.\n\n    contentLength = null\n  }\n\n  // https://github.com/nodejs/undici/issues/2046\n  // A user agent may send a Content-Length header with 0 value, this should be allowed.\n  if (shouldSendContentLength(method) && contentLength > 0 && request.contentLength !== null && request.contentLength !== contentLength) {\n    if (client[kStrictContentLength]) {\n      util.errorRequest(client, request, new RequestContentLengthMismatchError())\n      return false\n    }\n\n    process.emitWarning(new RequestContentLengthMismatchError())\n  }\n\n  const socket = client[kSocket]\n\n  const abort = (err) => {\n    if (request.aborted || request.completed) {\n      return\n    }\n\n    util.errorRequest(client, request, err || new RequestAbortedError())\n\n    util.destroy(body)\n    util.destroy(socket, new InformationalError('aborted'))\n  }\n\n  try {\n    request.onConnect(abort)\n  } catch (err) {\n    util.errorRequest(client, request, err)\n  }\n\n  if (request.aborted) {\n    return false\n  }\n\n  if (method === 'HEAD') {\n    // https://github.com/mcollina/undici/issues/258\n    // Close after a HEAD request to interop with misbehaving servers\n    // that may send a body in the response.\n\n    socket[kReset] = true\n  }\n\n  if (upgrade || method === 'CONNECT') {\n    // On CONNECT or upgrade, block pipeline from dispatching further\n    // requests on this connection.\n\n    socket[kReset] = true\n  }\n\n  if (reset != null) {\n    socket[kReset] = reset\n  }\n\n  if (client[kMaxRequests] && socket[kCounter]++ >= client[kMaxRequests]) {\n    socket[kReset] = true\n  }\n\n  if (blocking) {\n    socket[kBlocking] = true\n  }\n\n  let header = `${method} ${path} HTTP/1.1\\r\\n`\n\n  if (typeof host === 'string') {\n    header += `host: ${host}\\r\\n`\n  } else {\n    header += client[kHostHeader]\n  }\n\n  if (upgrade) {\n    header += `connection: upgrade\\r\\nupgrade: ${upgrade}\\r\\n`\n  } else if (client[kPipelining] && !socket[kReset]) {\n    header += 'connection: keep-alive\\r\\n'\n  } else {\n    header += 'connection: close\\r\\n'\n  }\n\n  if (Array.isArray(headers)) {\n    for (let n = 0; n < headers.length; n += 2) {\n      const key = headers[n + 0]\n      const val = headers[n + 1]\n\n      if (Array.isArray(val)) {\n        for (let i = 0; i < val.length; i++) {\n          header += `${key}: ${val[i]}\\r\\n`\n        }\n      } else {\n        header += `${key}: ${val}\\r\\n`\n      }\n    }\n  }\n\n  if (channels.sendHeaders.hasSubscribers) {\n    channels.sendHeaders.publish({ request, headers: header, socket })\n  }\n\n  /* istanbul ignore else: assertion */\n  if (!body || bodyLength === 0) {\n    writeBuffer({ abort, body: null, client, request, socket, contentLength, header, expectsPayload })\n  } else if (util.isBuffer(body)) {\n    writeBuffer({ abort, body, client, request, socket, contentLength, header, expectsPayload })\n  } else if (util.isBlobLike(body)) {\n    if (typeof body.stream === 'function') {\n      writeIterable({ abort, body: body.stream(), client, request, socket, contentLength, header, expectsPayload })\n    } else {\n      writeBlob({ abort, body, client, request, socket, contentLength, header, expectsPayload })\n    }\n  } else if (util.isStream(body)) {\n    writeStream({ abort, body, client, request, socket, contentLength, header, expectsPayload })\n  } else if (util.isIterable(body)) {\n    writeIterable({ abort, body, client, request, socket, contentLength, header, expectsPayload })\n  } else {\n    assert(false)\n  }\n\n  return true\n}\n\nfunction writeStream ({ abort, body, client, request, socket, contentLength, header, expectsPayload }) {\n  assert(contentLength !== 0 || client[kRunning] === 0, 'stream body cannot be pipelined')\n\n  let finished = false\n\n  const writer = new AsyncWriter({ abort, socket, request, contentLength, client, expectsPayload, header })\n\n  const onData = function (chunk) {\n    if (finished) {\n      return\n    }\n\n    try {\n      if (!writer.write(chunk) && this.pause) {\n        this.pause()\n      }\n    } catch (err) {\n      util.destroy(this, err)\n    }\n  }\n  const onDrain = function () {\n    if (finished) {\n      return\n    }\n\n    if (body.resume) {\n      body.resume()\n    }\n  }\n  const onClose = function () {\n    // 'close' might be emitted *before* 'error' for\n    // broken streams. Wait a tick to avoid this case.\n    queueMicrotask(() => {\n      // It's only safe to remove 'error' listener after\n      // 'close'.\n      body.removeListener('error', onFinished)\n    })\n\n    if (!finished) {\n      const err = new RequestAbortedError()\n      queueMicrotask(() => onFinished(err))\n    }\n  }\n  const onFinished = function (err) {\n    if (finished) {\n      return\n    }\n\n    finished = true\n\n    assert(socket.destroyed || (socket[kWriting] && client[kRunning] <= 1))\n\n    socket\n      .off('drain', onDrain)\n      .off('error', onFinished)\n\n    body\n      .removeListener('data', onData)\n      .removeListener('end', onFinished)\n      .removeListener('close', onClose)\n\n    if (!err) {\n      try {\n        writer.end()\n      } catch (er) {\n        err = er\n      }\n    }\n\n    writer.destroy(err)\n\n    if (err && (err.code !== 'UND_ERR_INFO' || err.message !== 'reset')) {\n      util.destroy(body, err)\n    } else {\n      util.destroy(body)\n    }\n  }\n\n  body\n    .on('data', onData)\n    .on('end', onFinished)\n    .on('error', onFinished)\n    .on('close', onClose)\n\n  if (body.resume) {\n    body.resume()\n  }\n\n  socket\n    .on('drain', onDrain)\n    .on('error', onFinished)\n\n  if (body.errorEmitted ?? body.errored) {\n    setImmediate(() => onFinished(body.errored))\n  } else if (body.endEmitted ?? body.readableEnded) {\n    setImmediate(() => onFinished(null))\n  }\n\n  if (body.closeEmitted ?? body.closed) {\n    setImmediate(onClose)\n  }\n}\n\nfunction writeBuffer ({ abort, body, client, request, socket, contentLength, header, expectsPayload }) {\n  try {\n    if (!body) {\n      if (contentLength === 0) {\n        socket.write(`${header}content-length: 0\\r\\n\\r\\n`, 'latin1')\n      } else {\n        assert(contentLength === null, 'no body must not have content length')\n        socket.write(`${header}\\r\\n`, 'latin1')\n      }\n    } else if (util.isBuffer(body)) {\n      assert(contentLength === body.byteLength, 'buffer body must have content length')\n\n      socket.cork()\n      socket.write(`${header}content-length: ${contentLength}\\r\\n\\r\\n`, 'latin1')\n      socket.write(body)\n      socket.uncork()\n      request.onBodySent(body)\n\n      if (!expectsPayload) {\n        socket[kReset] = true\n      }\n    }\n    request.onRequestSent()\n\n    client[kResume]()\n  } catch (err) {\n    abort(err)\n  }\n}\n\nasync function writeBlob ({ abort, body, client, request, socket, contentLength, header, expectsPayload }) {\n  assert(contentLength === body.size, 'blob body must have content length')\n\n  try {\n    if (contentLength != null && contentLength !== body.size) {\n      throw new RequestContentLengthMismatchError()\n    }\n\n    const buffer = Buffer.from(await body.arrayBuffer())\n\n    socket.cork()\n    socket.write(`${header}content-length: ${contentLength}\\r\\n\\r\\n`, 'latin1')\n    socket.write(buffer)\n    socket.uncork()\n\n    request.onBodySent(buffer)\n    request.onRequestSent()\n\n    if (!expectsPayload) {\n      socket[kReset] = true\n    }\n\n    client[kResume]()\n  } catch (err) {\n    abort(err)\n  }\n}\n\nasync function writeIterable ({ abort, body, client, request, socket, contentLength, header, expectsPayload }) {\n  assert(contentLength !== 0 || client[kRunning] === 0, 'iterator body cannot be pipelined')\n\n  let callback = null\n  function onDrain () {\n    if (callback) {\n      const cb = callback\n      callback = null\n      cb()\n    }\n  }\n\n  const waitForDrain = () => new Promise((resolve, reject) => {\n    assert(callback === null)\n\n    if (socket[kError]) {\n      reject(socket[kError])\n    } else {\n      callback = resolve\n    }\n  })\n\n  socket\n    .on('close', onDrain)\n    .on('drain', onDrain)\n\n  const writer = new AsyncWriter({ abort, socket, request, contentLength, client, expectsPayload, header })\n  try {\n    // It's up to the user to somehow abort the async iterable.\n    for await (const chunk of body) {\n      if (socket[kError]) {\n        throw socket[kError]\n      }\n\n      if (!writer.write(chunk)) {\n        await waitForDrain()\n      }\n    }\n\n    writer.end()\n  } catch (err) {\n    writer.destroy(err)\n  } finally {\n    socket\n      .off('close', onDrain)\n      .off('drain', onDrain)\n  }\n}\n\nclass AsyncWriter {\n  constructor ({ abort, socket, request, contentLength, client, expectsPayload, header }) {\n    this.socket = socket\n    this.request = request\n    this.contentLength = contentLength\n    this.client = client\n    this.bytesWritten = 0\n    this.expectsPayload = expectsPayload\n    this.header = header\n    this.abort = abort\n\n    socket[kWriting] = true\n  }\n\n  write (chunk) {\n    const { socket, request, contentLength, client, bytesWritten, expectsPayload, header } = this\n\n    if (socket[kError]) {\n      throw socket[kError]\n    }\n\n    if (socket.destroyed) {\n      return false\n    }\n\n    const len = Buffer.byteLength(chunk)\n    if (!len) {\n      return true\n    }\n\n    // We should defer writing chunks.\n    if (contentLength !== null && bytesWritten + len > contentLength) {\n      if (client[kStrictContentLength]) {\n        throw new RequestContentLengthMismatchError()\n      }\n\n      process.emitWarning(new RequestContentLengthMismatchError())\n    }\n\n    socket.cork()\n\n    if (bytesWritten === 0) {\n      if (!expectsPayload) {\n        socket[kReset] = true\n      }\n\n      if (contentLength === null) {\n        socket.write(`${header}transfer-encoding: chunked\\r\\n`, 'latin1')\n      } else {\n        socket.write(`${header}content-length: ${contentLength}\\r\\n\\r\\n`, 'latin1')\n      }\n    }\n\n    if (contentLength === null) {\n      socket.write(`\\r\\n${len.toString(16)}\\r\\n`, 'latin1')\n    }\n\n    this.bytesWritten += len\n\n    const ret = socket.write(chunk)\n\n    socket.uncork()\n\n    request.onBodySent(chunk)\n\n    if (!ret) {\n      if (socket[kParser].timeout && socket[kParser].timeoutType === TIMEOUT_HEADERS) {\n        // istanbul ignore else: only for jest\n        if (socket[kParser].timeout.refresh) {\n          socket[kParser].timeout.refresh()\n        }\n      }\n    }\n\n    return ret\n  }\n\n  end () {\n    const { socket, contentLength, client, bytesWritten, expectsPayload, header, request } = this\n    request.onRequestSent()\n\n    socket[kWriting] = false\n\n    if (socket[kError]) {\n      throw socket[kError]\n    }\n\n    if (socket.destroyed) {\n      return\n    }\n\n    if (bytesWritten === 0) {\n      if (expectsPayload) {\n        // https://tools.ietf.org/html/rfc7230#section-3.3.2\n        // A user agent SHOULD send a Content-Length in a request message when\n        // no Transfer-Encoding is sent and the request method defines a meaning\n        // for an enclosed payload body.\n\n        socket.write(`${header}content-length: 0\\r\\n\\r\\n`, 'latin1')\n      } else {\n        socket.write(`${header}\\r\\n`, 'latin1')\n      }\n    } else if (contentLength === null) {\n      socket.write('\\r\\n0\\r\\n\\r\\n', 'latin1')\n    }\n\n    if (contentLength !== null && bytesWritten !== contentLength) {\n      if (client[kStrictContentLength]) {\n        throw new RequestContentLengthMismatchError()\n      } else {\n        process.emitWarning(new RequestContentLengthMismatchError())\n      }\n    }\n\n    if (socket[kParser].timeout && socket[kParser].timeoutType === TIMEOUT_HEADERS) {\n      // istanbul ignore else: only for jest\n      if (socket[kParser].timeout.refresh) {\n        socket[kParser].timeout.refresh()\n      }\n    }\n\n    client[kResume]()\n  }\n\n  destroy (err) {\n    const { socket, client, abort } = this\n\n    socket[kWriting] = false\n\n    if (err) {\n      assert(client[kRunning] <= 1, 'pipeline should only contain this request')\n      abort(err)\n    }\n  }\n}\n\nmodule.exports = connectH1\n", "'use strict'\n\nconst assert = require('node:assert')\nconst { pipeline } = require('node:stream')\nconst util = require('../core/util.js')\nconst {\n  RequestContentLengthMismatchError,\n  RequestAbortedError,\n  SocketError,\n  InformationalError\n} = require('../core/errors.js')\nconst {\n  kUrl,\n  kReset,\n  kClient,\n  kRunning,\n  kPending,\n  kQueue,\n  kPendingIdx,\n  kRunningIdx,\n  kError,\n  kSocket,\n  kStrictContentLength,\n  kOnError,\n  kMaxConcurrentStreams,\n  kHTTP2Session,\n  kResume\n} = require('../core/symbols.js')\n\nconst kOpenStreams = Symbol('open streams')\n\n// Experimental\nlet h2ExperimentalWarned = false\n\n/** @type {import('http2')} */\nlet http2\ntry {\n  http2 = require('node:http2')\n} catch {\n  // @ts-ignore\n  http2 = { constants: {} }\n}\n\nconst {\n  constants: {\n    HTTP2_HEADER_AUTHORITY,\n    HTTP2_HEADER_METHOD,\n    HTTP2_HEADER_PATH,\n    HTTP2_HEADER_SCHEME,\n    HTTP2_HEADER_CONTENT_LENGTH,\n    HTTP2_HEADER_EXPECT,\n    HTTP2_HEADER_STATUS\n  }\n} = http2\n\nfunction parseH2Headers (headers) {\n  const result = []\n\n  for (const [name, value] of Object.entries(headers)) {\n    // h2 may concat the header value by array\n    // e.g. Set-Cookie\n    if (Array.isArray(value)) {\n      for (const subvalue of value) {\n        // we need to provide each header value of header name\n        // because the headers handler expect name-value pair\n        result.push(Buffer.from(name), Buffer.from(subvalue))\n      }\n    } else {\n      result.push(Buffer.from(name), Buffer.from(value))\n    }\n  }\n\n  return result\n}\n\nasync function connectH2 (client, socket) {\n  client[kSocket] = socket\n\n  if (!h2ExperimentalWarned) {\n    h2ExperimentalWarned = true\n    process.emitWarning('H2 support is experimental, expect them to change at any time.', {\n      code: 'UNDICI-H2'\n    })\n  }\n\n  const session = http2.connect(client[kUrl], {\n    createConnection: () => socket,\n    peerMaxConcurrentStreams: client[kMaxConcurrentStreams]\n  })\n\n  session[kOpenStreams] = 0\n  session[kClient] = client\n  session[kSocket] = socket\n\n  util.addListener(session, 'error', onHttp2SessionError)\n  util.addListener(session, 'frameError', onHttp2FrameError)\n  util.addListener(session, 'end', onHttp2SessionEnd)\n  util.addListener(session, 'goaway', onHTTP2GoAway)\n  util.addListener(session, 'close', function () {\n    const { [kClient]: client } = this\n    const { [kSocket]: socket } = client\n\n    const err = this[kSocket][kError] || this[kError] || new SocketError('closed', util.getSocketInfo(socket))\n\n    client[kHTTP2Session] = null\n\n    if (client.destroyed) {\n      assert(client[kPending] === 0)\n\n      // Fail entire queue.\n      const requests = client[kQueue].splice(client[kRunningIdx])\n      for (let i = 0; i < requests.length; i++) {\n        const request = requests[i]\n        util.errorRequest(client, request, err)\n      }\n    }\n  })\n\n  session.unref()\n\n  client[kHTTP2Session] = session\n  socket[kHTTP2Session] = session\n\n  util.addListener(socket, 'error', function (err) {\n    assert(err.code !== 'ERR_TLS_CERT_ALTNAME_INVALID')\n\n    this[kError] = err\n\n    this[kClient][kOnError](err)\n  })\n\n  util.addListener(socket, 'end', function () {\n    util.destroy(this, new SocketError('other side closed', util.getSocketInfo(this)))\n  })\n\n  util.addListener(socket, 'close', function () {\n    const err = this[kError] || new SocketError('closed', util.getSocketInfo(this))\n\n    client[kSocket] = null\n\n    if (this[kHTTP2Session] != null) {\n      this[kHTTP2Session].destroy(err)\n    }\n\n    client[kPendingIdx] = client[kRunningIdx]\n\n    assert(client[kRunning] === 0)\n\n    client.emit('disconnect', client[kUrl], [client], err)\n\n    client[kResume]()\n  })\n\n  let closed = false\n  socket.on('close', () => {\n    closed = true\n  })\n\n  return {\n    version: 'h2',\n    defaultPipelining: Infinity,\n    write (...args) {\n      // TODO (fix): return\n      writeH2(client, ...args)\n    },\n    resume () {\n\n    },\n    destroy (err, callback) {\n      if (closed) {\n        queueMicrotask(callback)\n      } else {\n        // Destroying the socket will trigger the session close\n        socket.destroy(err).on('close', callback)\n      }\n    },\n    get destroyed () {\n      return socket.destroyed\n    },\n    busy () {\n      return false\n    }\n  }\n}\n\nfunction onHttp2SessionError (err) {\n  assert(err.code !== 'ERR_TLS_CERT_ALTNAME_INVALID')\n\n  this[kSocket][kError] = err\n  this[kClient][kOnError](err)\n}\n\nfunction onHttp2FrameError (type, code, id) {\n  if (id === 0) {\n    const err = new InformationalError(`HTTP/2: \"frameError\" received - type ${type}, code ${code}`)\n    this[kSocket][kError] = err\n    this[kClient][kOnError](err)\n  }\n}\n\nfunction onHttp2SessionEnd () {\n  const err = new SocketError('other side closed', util.getSocketInfo(this[kSocket]))\n  this.destroy(err)\n  util.destroy(this[kSocket], err)\n}\n\n/**\n * This is the root cause of #3011\n * We need to handle GOAWAY frames properly, and trigger the session close\n * along with the socket right away\n */\nfunction onHTTP2GoAway (code) {\n  const err = new RequestAbortedError(`HTTP/2: \"GOAWAY\" frame received with code ${code}`)\n\n  // We need to trigger the close cycle right away\n  // We need to destroy the session and the socket\n  // Requests should be failed with the error after the current one is handled\n  this[kSocket][kError] = err\n  this[kClient][kOnError](err)\n\n  this.unref()\n\n  util.destroy(this[kSocket], err)\n}\n\n// https://www.rfc-editor.org/rfc/rfc7230#section-3.3.2\nfunction shouldSendContentLength (method) {\n  return method !== 'GET' && method !== 'HEAD' && method !== 'OPTIONS' && method !== 'TRACE' && method !== 'CONNECT'\n}\n\nfunction writeH2 (client, request) {\n  const session = client[kHTTP2Session]\n  const { body, method, path, host, upgrade, expectContinue, signal, headers: reqHeaders } = request\n\n  if (upgrade) {\n    util.errorRequest(client, request, new Error('Upgrade not supported for H2'))\n    return false\n  }\n\n  if (request.aborted) {\n    return false\n  }\n\n  const headers = {}\n  for (let n = 0; n < reqHeaders.length; n += 2) {\n    const key = reqHeaders[n + 0]\n    const val = reqHeaders[n + 1]\n\n    if (Array.isArray(val)) {\n      for (let i = 0; i < val.length; i++) {\n        if (headers[key]) {\n          headers[key] += `,${val[i]}`\n        } else {\n          headers[key] = val[i]\n        }\n      }\n    } else {\n      headers[key] = val\n    }\n  }\n\n  /** @type {import('node:http2').ClientHttp2Stream} */\n  let stream\n\n  const { hostname, port } = client[kUrl]\n\n  headers[HTTP2_HEADER_AUTHORITY] = host || `${hostname}${port ? `:${port}` : ''}`\n  headers[HTTP2_HEADER_METHOD] = method\n\n  const abort = (err) => {\n    if (request.aborted || request.completed) {\n      return\n    }\n\n    err = err || new RequestAbortedError()\n\n    util.errorRequest(client, request, err)\n\n    if (stream != null) {\n      util.destroy(stream, err)\n    }\n\n    // We do not destroy the socket as we can continue using the session\n    // the stream get's destroyed and the session remains to create new streams\n    util.destroy(body, err)\n  }\n\n  try {\n    // We are already connected, streams are pending.\n    // We can call on connect, and wait for abort\n    request.onConnect(abort)\n  } catch (err) {\n    util.errorRequest(client, request, err)\n  }\n\n  if (method === 'CONNECT') {\n    session.ref()\n    // We are already connected, streams are pending, first request\n    // will create a new stream. We trigger a request to create the stream and wait until\n    // `ready` event is triggered\n    // We disabled endStream to allow the user to write to the stream\n    stream = session.request(headers, { endStream: false, signal })\n\n    if (stream.id && !stream.pending) {\n      request.onUpgrade(null, null, stream)\n      ++session[kOpenStreams]\n    } else {\n      stream.once('ready', () => {\n        request.onUpgrade(null, null, stream)\n        ++session[kOpenStreams]\n      })\n    }\n\n    stream.once('close', () => {\n      session[kOpenStreams] -= 1\n      if (session[kOpenStreams] === 0) session.unref()\n    })\n\n    return true\n  }\n\n  // https://tools.ietf.org/html/rfc7540#section-8.3\n  // :path and :scheme headers must be omitted when sending CONNECT\n\n  headers[HTTP2_HEADER_PATH] = path\n  headers[HTTP2_HEADER_SCHEME] = 'https'\n\n  // https://tools.ietf.org/html/rfc7231#section-4.3.1\n  // https://tools.ietf.org/html/rfc7231#section-4.3.2\n  // https://tools.ietf.org/html/rfc7231#section-4.3.5\n\n  // Sending a payload body on a request that does not\n  // expect it can cause undefined behavior on some\n  // servers and corrupt connection state. Do not\n  // re-use the connection for further requests.\n\n  const expectsPayload = (\n    method === 'PUT' ||\n    method === 'POST' ||\n    method === 'PATCH'\n  )\n\n  if (body && typeof body.read === 'function') {\n    // Try to read EOF in order to get length.\n    body.read(0)\n  }\n\n  let contentLength = util.bodyLength(body)\n\n  if (contentLength == null) {\n    contentLength = request.contentLength\n  }\n\n  if (contentLength === 0 || !expectsPayload) {\n    // https://tools.ietf.org/html/rfc7230#section-3.3.2\n    // A user agent SHOULD NOT send a Content-Length header field when\n    // the request message does not contain a payload body and the method\n    // semantics do not anticipate such a body.\n\n    contentLength = null\n  }\n\n  // https://github.com/nodejs/undici/issues/2046\n  // A user agent may send a Content-Length header with 0 value, this should be allowed.\n  if (shouldSendContentLength(method) && contentLength > 0 && request.contentLength != null && request.contentLength !== contentLength) {\n    if (client[kStrictContentLength]) {\n      util.errorRequest(client, request, new RequestContentLengthMismatchError())\n      return false\n    }\n\n    process.emitWarning(new RequestContentLengthMismatchError())\n  }\n\n  if (contentLength != null) {\n    assert(body, 'no body must not have content length')\n    headers[HTTP2_HEADER_CONTENT_LENGTH] = `${contentLength}`\n  }\n\n  session.ref()\n\n  const shouldEndStream = method === 'GET' || method === 'HEAD' || body === null\n  if (expectContinue) {\n    headers[HTTP2_HEADER_EXPECT] = '100-continue'\n    stream = session.request(headers, { endStream: shouldEndStream, signal })\n\n    stream.once('continue', writeBodyH2)\n  } else {\n    stream = session.request(headers, {\n      endStream: shouldEndStream,\n      signal\n    })\n    writeBodyH2()\n  }\n\n  // Increment counter as we have new streams open\n  ++session[kOpenStreams]\n\n  stream.once('response', headers => {\n    const { [HTTP2_HEADER_STATUS]: statusCode, ...realHeaders } = headers\n    request.onResponseStarted()\n\n    // Due to the stream nature, it is possible we face a race condition\n    // where the stream has been assigned, but the request has been aborted\n    // the request remains in-flight and headers hasn't been received yet\n    // for those scenarios, best effort is to destroy the stream immediately\n    // as there's no value to keep it open.\n    if (request.aborted) {\n      const err = new RequestAbortedError()\n      util.errorRequest(client, request, err)\n      util.destroy(stream, err)\n      return\n    }\n\n    if (request.onHeaders(Number(statusCode), parseH2Headers(realHeaders), stream.resume.bind(stream), '') === false) {\n      stream.pause()\n    }\n\n    stream.on('data', (chunk) => {\n      if (request.onData(chunk) === false) {\n        stream.pause()\n      }\n    })\n  })\n\n  stream.once('end', () => {\n    // When state is null, it means we haven't consumed body and the stream still do not have\n    // a state.\n    // Present specially when using pipeline or stream\n    if (stream.state?.state == null || stream.state.state < 6) {\n      request.onComplete([])\n      return\n    }\n\n    // Stream is closed or half-closed-remote (6), decrement counter and cleanup\n    // It does not have sense to continue working with the stream as we do not\n    // have yet RST_STREAM support on client-side\n    if (session[kOpenStreams] === 0) {\n      session.unref()\n    }\n\n    abort(new InformationalError('HTTP/2: stream half-closed (remote)'))\n  })\n\n  stream.once('close', () => {\n    session[kOpenStreams] -= 1\n    if (session[kOpenStreams] === 0) {\n      session.unref()\n    }\n  })\n\n  stream.once('error', function (err) {\n    abort(err)\n  })\n\n  stream.once('frameError', (type, code) => {\n    abort(new InformationalError(`HTTP/2: \"frameError\" received - type ${type}, code ${code}`))\n  })\n\n  // stream.on('aborted', () => {\n  //   // TODO(HTTP/2): Support aborted\n  // })\n\n  // stream.on('timeout', () => {\n  //   // TODO(HTTP/2): Support timeout\n  // })\n\n  // stream.on('push', headers => {\n  //   // TODO(HTTP/2): Support push\n  // })\n\n  // stream.on('trailers', headers => {\n  //   // TODO(HTTP/2): Support trailers\n  // })\n\n  return true\n\n  function writeBodyH2 () {\n    /* istanbul ignore else: assertion */\n    if (!body || contentLength === 0) {\n      writeBuffer({\n        abort,\n        client,\n        request,\n        contentLength,\n        expectsPayload,\n        h2stream: stream,\n        body: null,\n        socket: client[kSocket]\n      })\n    } else if (util.isBuffer(body)) {\n      writeBuffer({\n        abort,\n        client,\n        request,\n        contentLength,\n        body,\n        expectsPayload,\n        h2stream: stream,\n        socket: client[kSocket]\n      })\n    } else if (util.isBlobLike(body)) {\n      if (typeof body.stream === 'function') {\n        writeIterable({\n          abort,\n          client,\n          request,\n          contentLength,\n          expectsPayload,\n          h2stream: stream,\n          body: body.stream(),\n          socket: client[kSocket]\n        })\n      } else {\n        writeBlob({\n          abort,\n          body,\n          client,\n          request,\n          contentLength,\n          expectsPayload,\n          h2stream: stream,\n          socket: client[kSocket]\n        })\n      }\n    } else if (util.isStream(body)) {\n      writeStream({\n        abort,\n        body,\n        client,\n        request,\n        contentLength,\n        expectsPayload,\n        socket: client[kSocket],\n        h2stream: stream,\n        header: ''\n      })\n    } else if (util.isIterable(body)) {\n      writeIterable({\n        abort,\n        body,\n        client,\n        request,\n        contentLength,\n        expectsPayload,\n        header: '',\n        h2stream: stream,\n        socket: client[kSocket]\n      })\n    } else {\n      assert(false)\n    }\n  }\n}\n\nfunction writeBuffer ({ abort, h2stream, body, client, request, socket, contentLength, expectsPayload }) {\n  try {\n    if (body != null && util.isBuffer(body)) {\n      assert(contentLength === body.byteLength, 'buffer body must have content length')\n      h2stream.cork()\n      h2stream.write(body)\n      h2stream.uncork()\n      h2stream.end()\n\n      request.onBodySent(body)\n    }\n\n    if (!expectsPayload) {\n      socket[kReset] = true\n    }\n\n    request.onRequestSent()\n    client[kResume]()\n  } catch (error) {\n    abort(error)\n  }\n}\n\nfunction writeStream ({ abort, socket, expectsPayload, h2stream, body, client, request, contentLength }) {\n  assert(contentLength !== 0 || client[kRunning] === 0, 'stream body cannot be pipelined')\n\n  // For HTTP/2, is enough to pipe the stream\n  const pipe = pipeline(\n    body,\n    h2stream,\n    (err) => {\n      if (err) {\n        util.destroy(pipe, err)\n        abort(err)\n      } else {\n        util.removeAllListeners(pipe)\n        request.onRequestSent()\n\n        if (!expectsPayload) {\n          socket[kReset] = true\n        }\n\n        client[kResume]()\n      }\n    }\n  )\n\n  util.addListener(pipe, 'data', onPipeData)\n\n  function onPipeData (chunk) {\n    request.onBodySent(chunk)\n  }\n}\n\nasync function writeBlob ({ abort, h2stream, body, client, request, socket, contentLength, expectsPayload }) {\n  assert(contentLength === body.size, 'blob body must have content length')\n\n  try {\n    if (contentLength != null && contentLength !== body.size) {\n      throw new RequestContentLengthMismatchError()\n    }\n\n    const buffer = Buffer.from(await body.arrayBuffer())\n\n    h2stream.cork()\n    h2stream.write(buffer)\n    h2stream.uncork()\n    h2stream.end()\n\n    request.onBodySent(buffer)\n    request.onRequestSent()\n\n    if (!expectsPayload) {\n      socket[kReset] = true\n    }\n\n    client[kResume]()\n  } catch (err) {\n    abort(err)\n  }\n}\n\nasync function writeIterable ({ abort, h2stream, body, client, request, socket, contentLength, expectsPayload }) {\n  assert(contentLength !== 0 || client[kRunning] === 0, 'iterator body cannot be pipelined')\n\n  let callback = null\n  function onDrain () {\n    if (callback) {\n      const cb = callback\n      callback = null\n      cb()\n    }\n  }\n\n  const waitForDrain = () => new Promise((resolve, reject) => {\n    assert(callback === null)\n\n    if (socket[kError]) {\n      reject(socket[kError])\n    } else {\n      callback = resolve\n    }\n  })\n\n  h2stream\n    .on('close', onDrain)\n    .on('drain', onDrain)\n\n  try {\n    // It's up to the user to somehow abort the async iterable.\n    for await (const chunk of body) {\n      if (socket[kError]) {\n        throw socket[kError]\n      }\n\n      const res = h2stream.write(chunk)\n      request.onBodySent(chunk)\n      if (!res) {\n        await waitForDrain()\n      }\n    }\n\n    h2stream.end()\n\n    request.onRequestSent()\n\n    if (!expectsPayload) {\n      socket[kReset] = true\n    }\n\n    client[kResume]()\n  } catch (err) {\n    abort(err)\n  } finally {\n    h2stream\n      .off('close', onDrain)\n      .off('drain', onDrain)\n  }\n}\n\nmodule.exports = connectH2\n", "'use strict'\n\nconst util = require('../core/util')\nconst { kBodyUsed } = require('../core/symbols')\nconst assert = require('node:assert')\nconst { InvalidArgumentError } = require('../core/errors')\nconst EE = require('node:events')\n\nconst redirectableStatusCodes = [300, 301, 302, 303, 307, 308]\n\nconst kBody = Symbol('body')\n\nclass BodyAsyncIterable {\n  constructor (body) {\n    this[kBody] = body\n    this[kBodyUsed] = false\n  }\n\n  async * [Symbol.asyncIterator] () {\n    assert(!this[kBodyUsed], 'disturbed')\n    this[kBodyUsed] = true\n    yield * this[kBody]\n  }\n}\n\nclass RedirectHandler {\n  constructor (dispatch, maxRedirections, opts, handler) {\n    if (maxRedirections != null && (!Number.isInteger(maxRedirections) || maxRedirections < 0)) {\n      throw new InvalidArgumentError('maxRedirections must be a positive number')\n    }\n\n    util.validateHandler(handler, opts.method, opts.upgrade)\n\n    this.dispatch = dispatch\n    this.location = null\n    this.abort = null\n    this.opts = { ...opts, maxRedirections: 0 } // opts must be a copy\n    this.maxRedirections = maxRedirections\n    this.handler = handler\n    this.history = []\n    this.redirectionLimitReached = false\n\n    if (util.isStream(this.opts.body)) {\n      // TODO (fix): Provide some way for the user to cache the file to e.g. /tmp\n      // so that it can be dispatched again?\n      // TODO (fix): Do we need 100-expect support to provide a way to do this properly?\n      if (util.bodyLength(this.opts.body) === 0) {\n        this.opts.body\n          .on('data', function () {\n            assert(false)\n          })\n      }\n\n      if (typeof this.opts.body.readableDidRead !== 'boolean') {\n        this.opts.body[kBodyUsed] = false\n        EE.prototype.on.call(this.opts.body, 'data', function () {\n          this[kBodyUsed] = true\n        })\n      }\n    } else if (this.opts.body && typeof this.opts.body.pipeTo === 'function') {\n      // TODO (fix): We can't access ReadableStream internal state\n      // to determine whether or not it has been disturbed. This is just\n      // a workaround.\n      this.opts.body = new BodyAsyncIterable(this.opts.body)\n    } else if (\n      this.opts.body &&\n      typeof this.opts.body !== 'string' &&\n      !ArrayBuffer.isView(this.opts.body) &&\n      util.isIterable(this.opts.body)\n    ) {\n      // TODO: Should we allow re-using iterable if !this.opts.idempotent\n      // or through some other flag?\n      this.opts.body = new BodyAsyncIterable(this.opts.body)\n    }\n  }\n\n  onConnect (abort) {\n    this.abort = abort\n    this.handler.onConnect(abort, { history: this.history })\n  }\n\n  onUpgrade (statusCode, headers, socket) {\n    this.handler.onUpgrade(statusCode, headers, socket)\n  }\n\n  onError (error) {\n    this.handler.onError(error)\n  }\n\n  onHeaders (statusCode, headers, resume, statusText) {\n    this.location = this.history.length >= this.maxRedirections || util.isDisturbed(this.opts.body)\n      ? null\n      : parseLocation(statusCode, headers)\n\n    if (this.opts.throwOnMaxRedirect && this.history.length >= this.maxRedirections) {\n      if (this.request) {\n        this.request.abort(new Error('max redirects'))\n      }\n\n      this.redirectionLimitReached = true\n      this.abort(new Error('max redirects'))\n      return\n    }\n\n    if (this.opts.origin) {\n      this.history.push(new URL(this.opts.path, this.opts.origin))\n    }\n\n    if (!this.location) {\n      return this.handler.onHeaders(statusCode, headers, resume, statusText)\n    }\n\n    const { origin, pathname, search } = util.parseURL(new URL(this.location, this.opts.origin && new URL(this.opts.path, this.opts.origin)))\n    const path = search ? `${pathname}${search}` : pathname\n\n    // Remove headers referring to the original URL.\n    // By default it is Host only, unless it's a 303 (see below), which removes also all Content-* headers.\n    // https://tools.ietf.org/html/rfc7231#section-6.4\n    this.opts.headers = cleanRequestHeaders(this.opts.headers, statusCode === 303, this.opts.origin !== origin)\n    this.opts.path = path\n    this.opts.origin = origin\n    this.opts.maxRedirections = 0\n    this.opts.query = null\n\n    // https://tools.ietf.org/html/rfc7231#section-6.4.4\n    // In case of HTTP 303, always replace method to be either HEAD or GET\n    if (statusCode === 303 && this.opts.method !== 'HEAD') {\n      this.opts.method = 'GET'\n      this.opts.body = null\n    }\n  }\n\n  onData (chunk) {\n    if (this.location) {\n      /*\n        https://tools.ietf.org/html/rfc7231#section-6.4\n\n        TLDR: undici always ignores 3xx response bodies.\n\n        Redirection is used to serve the requested resource from another URL, so it is assumes that\n        no body is generated (and thus can be ignored). Even though generating a body is not prohibited.\n\n        For status 301, 302, 303, 307 and 308 (the latter from RFC 7238), the specs mention that the body usually\n        (which means it's optional and not mandated) contain just an hyperlink to the value of\n        the Location response header, so the body can be ignored safely.\n\n        For status 300, which is \"Multiple Choices\", the spec mentions both generating a Location\n        response header AND a response body with the other possible location to follow.\n        Since the spec explicitly chooses not to specify a format for such body and leave it to\n        servers and browsers implementors, we ignore the body as there is no specified way to eventually parse it.\n      */\n    } else {\n      return this.handler.onData(chunk)\n    }\n  }\n\n  onComplete (trailers) {\n    if (this.location) {\n      /*\n        https://tools.ietf.org/html/rfc7231#section-6.4\n\n        TLDR: undici always ignores 3xx response trailers as they are not expected in case of redirections\n        and neither are useful if present.\n\n        See comment on onData method above for more detailed information.\n      */\n\n      this.location = null\n      this.abort = null\n\n      this.dispatch(this.opts, this)\n    } else {\n      this.handler.onComplete(trailers)\n    }\n  }\n\n  onBodySent (chunk) {\n    if (this.handler.onBodySent) {\n      this.handler.onBodySent(chunk)\n    }\n  }\n}\n\nfunction parseLocation (statusCode, headers) {\n  if (redirectableStatusCodes.indexOf(statusCode) === -1) {\n    return null\n  }\n\n  for (let i = 0; i < headers.length; i += 2) {\n    if (headers[i].length === 8 && util.headerNameToString(headers[i]) === 'location') {\n      return headers[i + 1]\n    }\n  }\n}\n\n// https://tools.ietf.org/html/rfc7231#section-6.4.4\nfunction shouldRemoveHeader (header, removeContent, unknownOrigin) {\n  if (header.length === 4) {\n    return util.headerNameToString(header) === 'host'\n  }\n  if (removeContent && util.headerNameToString(header).startsWith('content-')) {\n    return true\n  }\n  if (unknownOrigin && (header.length === 13 || header.length === 6 || header.length === 19)) {\n    const name = util.headerNameToString(header)\n    return name === 'authorization' || name === 'cookie' || name === 'proxy-authorization'\n  }\n  return false\n}\n\n// https://tools.ietf.org/html/rfc7231#section-6.4\nfunction cleanRequestHeaders (headers, removeContent, unknownOrigin) {\n  const ret = []\n  if (Array.isArray(headers)) {\n    for (let i = 0; i < headers.length; i += 2) {\n      if (!shouldRemoveHeader(headers[i], removeContent, unknownOrigin)) {\n        ret.push(headers[i], headers[i + 1])\n      }\n    }\n  } else if (headers && typeof headers === 'object') {\n    for (const key of Object.keys(headers)) {\n      if (!shouldRemoveHeader(key, removeContent, unknownOrigin)) {\n        ret.push(key, headers[key])\n      }\n    }\n  } else {\n    assert(headers == null, 'headers must be an object or an array')\n  }\n  return ret\n}\n\nmodule.exports = RedirectHandler\n", "'use strict'\n\nconst RedirectHandler = require('../handler/redirect-handler')\n\nfunction createRedirectInterceptor ({ maxRedirections: defaultMaxRedirections }) {\n  return (dispatch) => {\n    return function Intercept (opts, handler) {\n      const { maxRedirections = defaultMaxRedirections } = opts\n\n      if (!maxRedirections) {\n        return dispatch(opts, handler)\n      }\n\n      const redirectHandler = new RedirectHandler(dispatch, maxRedirections, opts, handler)\n      opts = { ...opts, maxRedirections: 0 } // Stop sub dispatcher from also redirecting.\n      return dispatch(opts, redirectHandler)\n    }\n  }\n}\n\nmodule.exports = createRedirectInterceptor\n", "// @ts-check\n\n'use strict'\n\nconst assert = require('node:assert')\nconst net = require('node:net')\nconst http = require('node:http')\nconst util = require('../core/util.js')\nconst { channels } = require('../core/diagnostics.js')\nconst Request = require('../core/request.js')\nconst DispatcherBase = require('./dispatcher-base')\nconst {\n  InvalidArgumentError,\n  InformationalError,\n  ClientDestroyedError\n} = require('../core/errors.js')\nconst buildConnector = require('../core/connect.js')\nconst {\n  kUrl,\n  kServerName,\n  kClient,\n  kBusy,\n  kConnect,\n  kResuming,\n  kRunning,\n  kPending,\n  kSize,\n  kQueue,\n  kConnected,\n  kConnecting,\n  kNeedDrain,\n  kKeepAliveDefaultTimeout,\n  kHostHeader,\n  kPendingIdx,\n  kRunningIdx,\n  kError,\n  kPipelining,\n  kKeepAliveTimeoutValue,\n  kMaxHeadersSize,\n  kKeepAliveMaxTimeout,\n  kKeepAliveTimeoutThreshold,\n  kHeadersTimeout,\n  kBodyTimeout,\n  kStrictContentLength,\n  kConnector,\n  kMaxRedirections,\n  kMaxRequests,\n  kCounter,\n  kClose,\n  kDestroy,\n  kDispatch,\n  kInterceptors,\n  kLocalAddress,\n  kMaxResponseSize,\n  kOnError,\n  kHTTPContext,\n  kMaxConcurrentStreams,\n  kResume\n} = require('../core/symbols.js')\nconst connectH1 = require('./client-h1.js')\nconst connectH2 = require('./client-h2.js')\nlet deprecatedInterceptorWarned = false\n\nconst kClosedResolve = Symbol('kClosedResolve')\n\nfunction getPipelining (client) {\n  return client[kPipelining] ?? client[kHTTPContext]?.defaultPipelining ?? 1\n}\n\n/**\n * @type {import('../../types/client.js').default}\n */\nclass Client extends DispatcherBase {\n  /**\n   *\n   * @param {string|URL} url\n   * @param {import('../../types/client.js').Client.Options} options\n   */\n  constructor (url, {\n    interceptors,\n    maxHeaderSize,\n    headersTimeout,\n    socketTimeout,\n    requestTimeout,\n    connectTimeout,\n    bodyTimeout,\n    idleTimeout,\n    keepAlive,\n    keepAliveTimeout,\n    maxKeepAliveTimeout,\n    keepAliveMaxTimeout,\n    keepAliveTimeoutThreshold,\n    socketPath,\n    pipelining,\n    tls,\n    strictContentLength,\n    maxCachedSessions,\n    maxRedirections,\n    connect,\n    maxRequestsPerClient,\n    localAddress,\n    maxResponseSize,\n    autoSelectFamily,\n    autoSelectFamilyAttemptTimeout,\n    // h2\n    maxConcurrentStreams,\n    allowH2\n  } = {}) {\n    super()\n\n    if (keepAlive !== undefined) {\n      throw new InvalidArgumentError('unsupported keepAlive, use pipelining=0 instead')\n    }\n\n    if (socketTimeout !== undefined) {\n      throw new InvalidArgumentError('unsupported socketTimeout, use headersTimeout & bodyTimeout instead')\n    }\n\n    if (requestTimeout !== undefined) {\n      throw new InvalidArgumentError('unsupported requestTimeout, use headersTimeout & bodyTimeout instead')\n    }\n\n    if (idleTimeout !== undefined) {\n      throw new InvalidArgumentError('unsupported idleTimeout, use keepAliveTimeout instead')\n    }\n\n    if (maxKeepAliveTimeout !== undefined) {\n      throw new InvalidArgumentError('unsupported maxKeepAliveTimeout, use keepAliveMaxTimeout instead')\n    }\n\n    if (maxHeaderSize != null && !Number.isFinite(maxHeaderSize)) {\n      throw new InvalidArgumentError('invalid maxHeaderSize')\n    }\n\n    if (socketPath != null && typeof socketPath !== 'string') {\n      throw new InvalidArgumentError('invalid socketPath')\n    }\n\n    if (connectTimeout != null && (!Number.isFinite(connectTimeout) || connectTimeout < 0)) {\n      throw new InvalidArgumentError('invalid connectTimeout')\n    }\n\n    if (keepAliveTimeout != null && (!Number.isFinite(keepAliveTimeout) || keepAliveTimeout <= 0)) {\n      throw new InvalidArgumentError('invalid keepAliveTimeout')\n    }\n\n    if (keepAliveMaxTimeout != null && (!Number.isFinite(keepAliveMaxTimeout) || keepAliveMaxTimeout <= 0)) {\n      throw new InvalidArgumentError('invalid keepAliveMaxTimeout')\n    }\n\n    if (keepAliveTimeoutThreshold != null && !Number.isFinite(keepAliveTimeoutThreshold)) {\n      throw new InvalidArgumentError('invalid keepAliveTimeoutThreshold')\n    }\n\n    if (headersTimeout != null && (!Number.isInteger(headersTimeout) || headersTimeout < 0)) {\n      throw new InvalidArgumentError('headersTimeout must be a positive integer or zero')\n    }\n\n    if (bodyTimeout != null && (!Number.isInteger(bodyTimeout) || bodyTimeout < 0)) {\n      throw new InvalidArgumentError('bodyTimeout must be a positive integer or zero')\n    }\n\n    if (connect != null && typeof connect !== 'function' && typeof connect !== 'object') {\n      throw new InvalidArgumentError('connect must be a function or an object')\n    }\n\n    if (maxRedirections != null && (!Number.isInteger(maxRedirections) || maxRedirections < 0)) {\n      throw new InvalidArgumentError('maxRedirections must be a positive number')\n    }\n\n    if (maxRequestsPerClient != null && (!Number.isInteger(maxRequestsPerClient) || maxRequestsPerClient < 0)) {\n      throw new InvalidArgumentError('maxRequestsPerClient must be a positive number')\n    }\n\n    if (localAddress != null && (typeof localAddress !== 'string' || net.isIP(localAddress) === 0)) {\n      throw new InvalidArgumentError('localAddress must be valid string IP address')\n    }\n\n    if (maxResponseSize != null && (!Number.isInteger(maxResponseSize) || maxResponseSize < -1)) {\n      throw new InvalidArgumentError('maxResponseSize must be a positive number')\n    }\n\n    if (\n      autoSelectFamilyAttemptTimeout != null &&\n      (!Number.isInteger(autoSelectFamilyAttemptTimeout) || autoSelectFamilyAttemptTimeout < -1)\n    ) {\n      throw new InvalidArgumentError('autoSelectFamilyAttemptTimeout must be a positive number')\n    }\n\n    // h2\n    if (allowH2 != null && typeof allowH2 !== 'boolean') {\n      throw new InvalidArgumentError('allowH2 must be a valid boolean value')\n    }\n\n    if (maxConcurrentStreams != null && (typeof maxConcurrentStreams !== 'number' || maxConcurrentStreams < 1)) {\n      throw new InvalidArgumentError('maxConcurrentStreams must be a positive integer, greater than 0')\n    }\n\n    if (typeof connect !== 'function') {\n      connect = buildConnector({\n        ...tls,\n        maxCachedSessions,\n        allowH2,\n        socketPath,\n        timeout: connectTimeout,\n        ...(autoSelectFamily ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } : undefined),\n        ...connect\n      })\n    }\n\n    if (interceptors?.Client && Array.isArray(interceptors.Client)) {\n      this[kInterceptors] = interceptors.Client\n      if (!deprecatedInterceptorWarned) {\n        deprecatedInterceptorWarned = true\n        process.emitWarning('Client.Options#interceptor is deprecated. Use Dispatcher#compose instead.', {\n          code: 'UNDICI-CLIENT-INTERCEPTOR-DEPRECATED'\n        })\n      }\n    } else {\n      this[kInterceptors] = [createRedirectInterceptor({ maxRedirections })]\n    }\n\n    this[kUrl] = util.parseOrigin(url)\n    this[kConnector] = connect\n    this[kPipelining] = pipelining != null ? pipelining : 1\n    this[kMaxHeadersSize] = maxHeaderSize || http.maxHeaderSize\n    this[kKeepAliveDefaultTimeout] = keepAliveTimeout == null ? 4e3 : keepAliveTimeout\n    this[kKeepAliveMaxTimeout] = keepAliveMaxTimeout == null ? 600e3 : keepAliveMaxTimeout\n    this[kKeepAliveTimeoutThreshold] = keepAliveTimeoutThreshold == null ? 2e3 : keepAliveTimeoutThreshold\n    this[kKeepAliveTimeoutValue] = this[kKeepAliveDefaultTimeout]\n    this[kServerName] = null\n    this[kLocalAddress] = localAddress != null ? localAddress : null\n    this[kResuming] = 0 // 0, idle, 1, scheduled, 2 resuming\n    this[kNeedDrain] = 0 // 0, idle, 1, scheduled, 2 resuming\n    this[kHostHeader] = `host: ${this[kUrl].hostname}${this[kUrl].port ? `:${this[kUrl].port}` : ''}\\r\\n`\n    this[kBodyTimeout] = bodyTimeout != null ? bodyTimeout : 300e3\n    this[kHeadersTimeout] = headersTimeout != null ? headersTimeout : 300e3\n    this[kStrictContentLength] = strictContentLength == null ? true : strictContentLength\n    this[kMaxRedirections] = maxRedirections\n    this[kMaxRequests] = maxRequestsPerClient\n    this[kClosedResolve] = null\n    this[kMaxResponseSize] = maxResponseSize > -1 ? maxResponseSize : -1\n    this[kMaxConcurrentStreams] = maxConcurrentStreams != null ? maxConcurrentStreams : 100 // Max peerConcurrentStreams for a Node h2 server\n    this[kHTTPContext] = null\n\n    // kQueue is built up of 3 sections separated by\n    // the kRunningIdx and kPendingIdx indices.\n    // |   complete   |   running   |   pending   |\n    //                ^ kRunningIdx ^ kPendingIdx ^ kQueue.length\n    // kRunningIdx points to the first running element.\n    // kPendingIdx points to the first pending element.\n    // This implements a fast queue with an amortized\n    // time of O(1).\n\n    this[kQueue] = []\n    this[kRunningIdx] = 0\n    this[kPendingIdx] = 0\n\n    this[kResume] = (sync) => resume(this, sync)\n    this[kOnError] = (err) => onError(this, err)\n  }\n\n  get pipelining () {\n    return this[kPipelining]\n  }\n\n  set pipelining (value) {\n    this[kPipelining] = value\n    this[kResume](true)\n  }\n\n  get [kPending] () {\n    return this[kQueue].length - this[kPendingIdx]\n  }\n\n  get [kRunning] () {\n    return this[kPendingIdx] - this[kRunningIdx]\n  }\n\n  get [kSize] () {\n    return this[kQueue].length - this[kRunningIdx]\n  }\n\n  get [kConnected] () {\n    return !!this[kHTTPContext] && !this[kConnecting] && !this[kHTTPContext].destroyed\n  }\n\n  get [kBusy] () {\n    return Boolean(\n      this[kHTTPContext]?.busy(null) ||\n      (this[kSize] >= (getPipelining(this) || 1)) ||\n      this[kPending] > 0\n    )\n  }\n\n  /* istanbul ignore: only used for test */\n  [kConnect] (cb) {\n    connect(this)\n    this.once('connect', cb)\n  }\n\n  [kDispatch] (opts, handler) {\n    const origin = opts.origin || this[kUrl].origin\n    const request = new Request(origin, opts, handler)\n\n    this[kQueue].push(request)\n    if (this[kResuming]) {\n      // Do nothing.\n    } else if (util.bodyLength(request.body) == null && util.isIterable(request.body)) {\n      // Wait a tick in case stream/iterator is ended in the same tick.\n      this[kResuming] = 1\n      queueMicrotask(() => resume(this))\n    } else {\n      this[kResume](true)\n    }\n\n    if (this[kResuming] && this[kNeedDrain] !== 2 && this[kBusy]) {\n      this[kNeedDrain] = 2\n    }\n\n    return this[kNeedDrain] < 2\n  }\n\n  async [kClose] () {\n    // TODO: for H2 we need to gracefully flush the remaining enqueued\n    // request and close each stream.\n    return new Promise((resolve) => {\n      if (this[kSize]) {\n        this[kClosedResolve] = resolve\n      } else {\n        resolve(null)\n      }\n    })\n  }\n\n  async [kDestroy] (err) {\n    return new Promise((resolve) => {\n      const requests = this[kQueue].splice(this[kPendingIdx])\n      for (let i = 0; i < requests.length; i++) {\n        const request = requests[i]\n        util.errorRequest(this, request, err)\n      }\n\n      const callback = () => {\n        if (this[kClosedResolve]) {\n          // TODO (fix): Should we error here with ClientDestroyedError?\n          this[kClosedResolve]()\n          this[kClosedResolve] = null\n        }\n        resolve(null)\n      }\n\n      if (this[kHTTPContext]) {\n        this[kHTTPContext].destroy(err, callback)\n        this[kHTTPContext] = null\n      } else {\n        queueMicrotask(callback)\n      }\n\n      this[kResume]()\n    })\n  }\n}\n\nconst createRedirectInterceptor = require('../interceptor/redirect-interceptor.js')\n\nfunction onError (client, err) {\n  if (\n    client[kRunning] === 0 &&\n    err.code !== 'UND_ERR_INFO' &&\n    err.code !== 'UND_ERR_SOCKET'\n  ) {\n    // Error is not caused by running request and not a recoverable\n    // socket error.\n\n    assert(client[kPendingIdx] === client[kRunningIdx])\n\n    const requests = client[kQueue].splice(client[kRunningIdx])\n\n    for (let i = 0; i < requests.length; i++) {\n      const request = requests[i]\n      util.errorRequest(client, request, err)\n    }\n    assert(client[kSize] === 0)\n  }\n}\n\nasync function connect (client) {\n  assert(!client[kConnecting])\n  assert(!client[kHTTPContext])\n\n  let { host, hostname, protocol, port } = client[kUrl]\n\n  // Resolve ipv6\n  if (hostname[0] === '[') {\n    const idx = hostname.indexOf(']')\n\n    assert(idx !== -1)\n    const ip = hostname.substring(1, idx)\n\n    assert(net.isIP(ip))\n    hostname = ip\n  }\n\n  client[kConnecting] = true\n\n  if (channels.beforeConnect.hasSubscribers) {\n    channels.beforeConnect.publish({\n      connectParams: {\n        host,\n        hostname,\n        protocol,\n        port,\n        version: client[kHTTPContext]?.version,\n        servername: client[kServerName],\n        localAddress: client[kLocalAddress]\n      },\n      connector: client[kConnector]\n    })\n  }\n\n  try {\n    const socket = await new Promise((resolve, reject) => {\n      client[kConnector]({\n        host,\n        hostname,\n        protocol,\n        port,\n        servername: client[kServerName],\n        localAddress: client[kLocalAddress]\n      }, (err, socket) => {\n        if (err) {\n          reject(err)\n        } else {\n          resolve(socket)\n        }\n      })\n    })\n\n    if (client.destroyed) {\n      util.destroy(socket.on('error', () => {}), new ClientDestroyedError())\n      return\n    }\n\n    assert(socket)\n\n    try {\n      client[kHTTPContext] = socket.alpnProtocol === 'h2'\n        ? await connectH2(client, socket)\n        : await connectH1(client, socket)\n    } catch (err) {\n      socket.destroy().on('error', () => {})\n      throw err\n    }\n\n    client[kConnecting] = false\n\n    socket[kCounter] = 0\n    socket[kMaxRequests] = client[kMaxRequests]\n    socket[kClient] = client\n    socket[kError] = null\n\n    if (channels.connected.hasSubscribers) {\n      channels.connected.publish({\n        connectParams: {\n          host,\n          hostname,\n          protocol,\n          port,\n          version: client[kHTTPContext]?.version,\n          servername: client[kServerName],\n          localAddress: client[kLocalAddress]\n        },\n        connector: client[kConnector],\n        socket\n      })\n    }\n    client.emit('connect', client[kUrl], [client])\n  } catch (err) {\n    if (client.destroyed) {\n      return\n    }\n\n    client[kConnecting] = false\n\n    if (channels.connectError.hasSubscribers) {\n      channels.connectError.publish({\n        connectParams: {\n          host,\n          hostname,\n          protocol,\n          port,\n          version: client[kHTTPContext]?.version,\n          servername: client[kServerName],\n          localAddress: client[kLocalAddress]\n        },\n        connector: client[kConnector],\n        error: err\n      })\n    }\n\n    if (err.code === 'ERR_TLS_CERT_ALTNAME_INVALID') {\n      assert(client[kRunning] === 0)\n      while (client[kPending] > 0 && client[kQueue][client[kPendingIdx]].servername === client[kServerName]) {\n        const request = client[kQueue][client[kPendingIdx]++]\n        util.errorRequest(client, request, err)\n      }\n    } else {\n      onError(client, err)\n    }\n\n    client.emit('connectionError', client[kUrl], [client], err)\n  }\n\n  client[kResume]()\n}\n\nfunction emitDrain (client) {\n  client[kNeedDrain] = 0\n  client.emit('drain', client[kUrl], [client])\n}\n\nfunction resume (client, sync) {\n  if (client[kResuming] === 2) {\n    return\n  }\n\n  client[kResuming] = 2\n\n  _resume(client, sync)\n  client[kResuming] = 0\n\n  if (client[kRunningIdx] > 256) {\n    client[kQueue].splice(0, client[kRunningIdx])\n    client[kPendingIdx] -= client[kRunningIdx]\n    client[kRunningIdx] = 0\n  }\n}\n\nfunction _resume (client, sync) {\n  while (true) {\n    if (client.destroyed) {\n      assert(client[kPending] === 0)\n      return\n    }\n\n    if (client[kClosedResolve] && !client[kSize]) {\n      client[kClosedResolve]()\n      client[kClosedResolve] = null\n      return\n    }\n\n    if (client[kHTTPContext]) {\n      client[kHTTPContext].resume()\n    }\n\n    if (client[kBusy]) {\n      client[kNeedDrain] = 2\n    } else if (client[kNeedDrain] === 2) {\n      if (sync) {\n        client[kNeedDrain] = 1\n        queueMicrotask(() => emitDrain(client))\n      } else {\n        emitDrain(client)\n      }\n      continue\n    }\n\n    if (client[kPending] === 0) {\n      return\n    }\n\n    if (client[kRunning] >= (getPipelining(client) || 1)) {\n      return\n    }\n\n    const request = client[kQueue][client[kPendingIdx]]\n\n    if (client[kUrl].protocol === 'https:' && client[kServerName] !== request.servername) {\n      if (client[kRunning] > 0) {\n        return\n      }\n\n      client[kServerName] = request.servername\n      client[kHTTPContext]?.destroy(new InformationalError('servername changed'), () => {\n        client[kHTTPContext] = null\n        resume(client)\n      })\n    }\n\n    if (client[kConnecting]) {\n      return\n    }\n\n    if (!client[kHTTPContext]) {\n      connect(client)\n      return\n    }\n\n    if (client[kHTTPContext].destroyed) {\n      return\n    }\n\n    if (client[kHTTPContext].busy(request)) {\n      return\n    }\n\n    if (!request.aborted && client[kHTTPContext].write(request)) {\n      client[kPendingIdx]++\n    } else {\n      client[kQueue].splice(client[kPendingIdx], 1)\n    }\n  }\n}\n\nmodule.exports = Client\n", "/* eslint-disable */\n\n'use strict'\n\n// Extracted from node/lib/internal/fixed_queue.js\n\n// Currently optimal queue size, tested on V8 6.0 - 6.6. Must be power of two.\nconst kSize = 2048;\nconst kMask = kSize - 1;\n\n// The FixedQueue is implemented as a singly-linked list of fixed-size\n// circular buffers. It looks something like this:\n//\n//  head                                                       tail\n//    |                                                          |\n//    v                                                          v\n// +-----------+ <-----\\       +-----------+ <------\\         +-----------+\n// |  [null]   |        \\----- |   next    |         \\------- |   next    |\n// +-----------+               +-----------+                  +-----------+\n// |   item    | <-- bottom    |   item    | <-- bottom       |  [empty]  |\n// |   item    |               |   item    |                  |  [empty]  |\n// |   item    |               |   item    |                  |  [empty]  |\n// |   item    |               |   item    |                  |  [empty]  |\n// |   item    |               |   item    |       bottom --> |   item    |\n// |   item    |               |   item    |                  |   item    |\n// |    ...    |               |    ...    |                  |    ...    |\n// |   item    |               |   item    |                  |   item    |\n// |   item    |               |   item    |                  |   item    |\n// |  [empty]  | <-- top       |   item    |                  |   item    |\n// |  [empty]  |               |   item    |                  |   item    |\n// |  [empty]  |               |  [empty]  | <-- top  top --> |  [empty]  |\n// +-----------+               +-----------+                  +-----------+\n//\n// Or, if there is only one circular buffer, it looks something\n// like either of these:\n//\n//  head   tail                                 head   tail\n//    |     |                                     |     |\n//    v     v                                     v     v\n// +-----------+                               +-----------+\n// |  [null]   |                               |  [null]   |\n// +-----------+                               +-----------+\n// |  [empty]  |                               |   item    |\n// |  [empty]  |                               |   item    |\n// |   item    | <-- bottom            top --> |  [empty]  |\n// |   item    |                               |  [empty]  |\n// |  [empty]  | <-- top            bottom --> |   item    |\n// |  [empty]  |                               |   item    |\n// +-----------+                               +-----------+\n//\n// Adding a value means moving `top` forward by one, removing means\n// moving `bottom` forward by one. After reaching the end, the queue\n// wraps around.\n//\n// When `top === bottom` the current queue is empty and when\n// `top + 1 === bottom` it's full. This wastes a single space of storage\n// but allows much quicker checks.\n\nclass FixedCircularBuffer {\n  constructor() {\n    this.bottom = 0;\n    this.top = 0;\n    this.list = new Array(kSize);\n    this.next = null;\n  }\n\n  isEmpty() {\n    return this.top === this.bottom;\n  }\n\n  isFull() {\n    return ((this.top + 1) & kMask) === this.bottom;\n  }\n\n  push(data) {\n    this.list[this.top] = data;\n    this.top = (this.top + 1) & kMask;\n  }\n\n  shift() {\n    const nextItem = this.list[this.bottom];\n    if (nextItem === undefined)\n      return null;\n    this.list[this.bottom] = undefined;\n    this.bottom = (this.bottom + 1) & kMask;\n    return nextItem;\n  }\n}\n\nmodule.exports = class FixedQueue {\n  constructor() {\n    this.head = this.tail = new FixedCircularBuffer();\n  }\n\n  isEmpty() {\n    return this.head.isEmpty();\n  }\n\n  push(data) {\n    if (this.head.isFull()) {\n      // Head is full: Creates a new queue, sets the old queue's `.next` to it,\n      // and sets it as the new main queue.\n      this.head = this.head.next = new FixedCircularBuffer();\n    }\n    this.head.push(data);\n  }\n\n  shift() {\n    const tail = this.tail;\n    const next = tail.shift();\n    if (tail.isEmpty() && tail.next !== null) {\n      // If there is another queue, it forms the new tail.\n      this.tail = tail.next;\n    }\n    return next;\n  }\n};\n", "const { kFree, kConnected, kPending, kQueued, kRunning, kSize } = require('../core/symbols')\nconst kPool = Symbol('pool')\n\nclass PoolStats {\n  constructor (pool) {\n    this[kPool] = pool\n  }\n\n  get connected () {\n    return this[kPool][kConnected]\n  }\n\n  get free () {\n    return this[kPool][kFree]\n  }\n\n  get pending () {\n    return this[kPool][kPending]\n  }\n\n  get queued () {\n    return this[kPool][kQueued]\n  }\n\n  get running () {\n    return this[kPool][kRunning]\n  }\n\n  get size () {\n    return this[kPool][kSize]\n  }\n}\n\nmodule.exports = PoolStats\n", "'use strict'\n\nconst DispatcherBase = require('./dispatcher-base')\nconst FixedQueue = require('./fixed-queue')\nconst { kConnected, kSize, kRunning, kPending, kQueued, kBusy, kFree, kUrl, kClose, kDestroy, kDispatch } = require('../core/symbols')\nconst PoolStats = require('./pool-stats')\n\nconst kClients = Symbol('clients')\nconst kNeedDrain = Symbol('needDrain')\nconst kQueue = Symbol('queue')\nconst kClosedResolve = Symbol('closed resolve')\nconst kOnDrain = Symbol('onDrain')\nconst kOnConnect = Symbol('onConnect')\nconst kOnDisconnect = Symbol('onDisconnect')\nconst kOnConnectionError = Symbol('onConnectionError')\nconst kGetDispatcher = Symbol('get dispatcher')\nconst kAddClient = Symbol('add client')\nconst kRemoveClient = Symbol('remove client')\nconst kStats = Symbol('stats')\n\nclass PoolBase extends DispatcherBase {\n  constructor () {\n    super()\n\n    this[kQueue] = new FixedQueue()\n    this[kClients] = []\n    this[kQueued] = 0\n\n    const pool = this\n\n    this[kOnDrain] = function onDrain (origin, targets) {\n      const queue = pool[kQueue]\n\n      let needDrain = false\n\n      while (!needDrain) {\n        const item = queue.shift()\n        if (!item) {\n          break\n        }\n        pool[kQueued]--\n        needDrain = !this.dispatch(item.opts, item.handler)\n      }\n\n      this[kNeedDrain] = needDrain\n\n      if (!this[kNeedDrain] && pool[kNeedDrain]) {\n        pool[kNeedDrain] = false\n        pool.emit('drain', origin, [pool, ...targets])\n      }\n\n      if (pool[kClosedResolve] && queue.isEmpty()) {\n        Promise\n          .all(pool[kClients].map(c => c.close()))\n          .then(pool[kClosedResolve])\n      }\n    }\n\n    this[kOnConnect] = (origin, targets) => {\n      pool.emit('connect', origin, [pool, ...targets])\n    }\n\n    this[kOnDisconnect] = (origin, targets, err) => {\n      pool.emit('disconnect', origin, [pool, ...targets], err)\n    }\n\n    this[kOnConnectionError] = (origin, targets, err) => {\n      pool.emit('connectionError', origin, [pool, ...targets], err)\n    }\n\n    this[kStats] = new PoolStats(this)\n  }\n\n  get [kBusy] () {\n    return this[kNeedDrain]\n  }\n\n  get [kConnected] () {\n    return this[kClients].filter(client => client[kConnected]).length\n  }\n\n  get [kFree] () {\n    return this[kClients].filter(client => client[kConnected] && !client[kNeedDrain]).length\n  }\n\n  get [kPending] () {\n    let ret = this[kQueued]\n    for (const { [kPending]: pending } of this[kClients]) {\n      ret += pending\n    }\n    return ret\n  }\n\n  get [kRunning] () {\n    let ret = 0\n    for (const { [kRunning]: running } of this[kClients]) {\n      ret += running\n    }\n    return ret\n  }\n\n  get [kSize] () {\n    let ret = this[kQueued]\n    for (const { [kSize]: size } of this[kClients]) {\n      ret += size\n    }\n    return ret\n  }\n\n  get stats () {\n    return this[kStats]\n  }\n\n  async [kClose] () {\n    if (this[kQueue].isEmpty()) {\n      return Promise.all(this[kClients].map(c => c.close()))\n    } else {\n      return new Promise((resolve) => {\n        this[kClosedResolve] = resolve\n      })\n    }\n  }\n\n  async [kDestroy] (err) {\n    while (true) {\n      const item = this[kQueue].shift()\n      if (!item) {\n        break\n      }\n      item.handler.onError(err)\n    }\n\n    return Promise.all(this[kClients].map(c => c.destroy(err)))\n  }\n\n  [kDispatch] (opts, handler) {\n    const dispatcher = this[kGetDispatcher]()\n\n    if (!dispatcher) {\n      this[kNeedDrain] = true\n      this[kQueue].push({ opts, handler })\n      this[kQueued]++\n    } else if (!dispatcher.dispatch(opts, handler)) {\n      dispatcher[kNeedDrain] = true\n      this[kNeedDrain] = !this[kGetDispatcher]()\n    }\n\n    return !this[kNeedDrain]\n  }\n\n  [kAddClient] (client) {\n    client\n      .on('drain', this[kOnDrain])\n      .on('connect', this[kOnConnect])\n      .on('disconnect', this[kOnDisconnect])\n      .on('connectionError', this[kOnConnectionError])\n\n    this[kClients].push(client)\n\n    if (this[kNeedDrain]) {\n      queueMicrotask(() => {\n        if (this[kNeedDrain]) {\n          this[kOnDrain](client[kUrl], [this, client])\n        }\n      })\n    }\n\n    return this\n  }\n\n  [kRemoveClient] (client) {\n    client.close(() => {\n      const idx = this[kClients].indexOf(client)\n      if (idx !== -1) {\n        this[kClients].splice(idx, 1)\n      }\n    })\n\n    this[kNeedDrain] = this[kClients].some(dispatcher => (\n      !dispatcher[kNeedDrain] &&\n      dispatcher.closed !== true &&\n      dispatcher.destroyed !== true\n    ))\n  }\n}\n\nmodule.exports = {\n  PoolBase,\n  kClients,\n  kNeedDrain,\n  kAddClient,\n  kRemoveClient,\n  kGetDispatcher\n}\n", "'use strict'\n\nconst {\n  PoolBase,\n  kClients,\n  kNeedDrain,\n  kAddClient,\n  kGetDispatcher\n} = require('./pool-base')\nconst Client = require('./client')\nconst {\n  InvalidArgumentError\n} = require('../core/errors')\nconst util = require('../core/util')\nconst { kUrl, kInterceptors } = require('../core/symbols')\nconst buildConnector = require('../core/connect')\n\nconst kOptions = Symbol('options')\nconst kConnections = Symbol('connections')\nconst kFactory = Symbol('factory')\n\nfunction defaultFactory (origin, opts) {\n  return new Client(origin, opts)\n}\n\nclass Pool extends PoolBase {\n  constructor (origin, {\n    connections,\n    factory = defaultFactory,\n    connect,\n    connectTimeout,\n    tls,\n    maxCachedSessions,\n    socketPath,\n    autoSelectFamily,\n    autoSelectFamilyAttemptTimeout,\n    allowH2,\n    ...options\n  } = {}) {\n    super()\n\n    if (connections != null && (!Number.isFinite(connections) || connections < 0)) {\n      throw new InvalidArgumentError('invalid connections')\n    }\n\n    if (typeof factory !== 'function') {\n      throw new InvalidArgumentError('factory must be a function.')\n    }\n\n    if (connect != null && typeof connect !== 'function' && typeof connect !== 'object') {\n      throw new InvalidArgumentError('connect must be a function or an object')\n    }\n\n    if (typeof connect !== 'function') {\n      connect = buildConnector({\n        ...tls,\n        maxCachedSessions,\n        allowH2,\n        socketPath,\n        timeout: connectTimeout,\n        ...(autoSelectFamily ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } : undefined),\n        ...connect\n      })\n    }\n\n    this[kInterceptors] = options.interceptors?.Pool && Array.isArray(options.interceptors.Pool)\n      ? options.interceptors.Pool\n      : []\n    this[kConnections] = connections || null\n    this[kUrl] = util.parseOrigin(origin)\n    this[kOptions] = { ...util.deepClone(options), connect, allowH2 }\n    this[kOptions].interceptors = options.interceptors\n      ? { ...options.interceptors }\n      : undefined\n    this[kFactory] = factory\n  }\n\n  [kGetDispatcher] () {\n    for (const client of this[kClients]) {\n      if (!client[kNeedDrain]) {\n        return client\n      }\n    }\n\n    if (!this[kConnections] || this[kClients].length < this[kConnections]) {\n      const dispatcher = this[kFactory](this[kUrl], this[kOptions])\n      this[kAddClient](dispatcher)\n      return dispatcher\n    }\n  }\n}\n\nmodule.exports = Pool\n", "'use strict'\n\nconst {\n  BalancedPoolMissingUpstreamError,\n  InvalidArgumentError\n} = require('../core/errors')\nconst {\n  PoolBase,\n  kClients,\n  kNeedDrain,\n  kAddClient,\n  kRemoveClient,\n  kGetDispatcher\n} = require('./pool-base')\nconst Pool = require('./pool')\nconst { kUrl, kInterceptors } = require('../core/symbols')\nconst { parseOrigin } = require('../core/util')\nconst kFactory = Symbol('factory')\n\nconst kOptions = Symbol('options')\nconst kGreatestCommonDivisor = Symbol('kGreatestCommonDivisor')\nconst kCurrentWeight = Symbol('kCurrentWeight')\nconst kIndex = Symbol('kIndex')\nconst kWeight = Symbol('kWeight')\nconst kMaxWeightPerServer = Symbol('kMaxWeightPerServer')\nconst kErrorPenalty = Symbol('kErrorPenalty')\n\nfunction getGreatestCommonDivisor (a, b) {\n  if (b === 0) return a\n  return getGreatestCommonDivisor(b, a % b)\n}\n\nfunction defaultFactory (origin, opts) {\n  return new Pool(origin, opts)\n}\n\nclass BalancedPool extends PoolBase {\n  constructor (upstreams = [], { factory = defaultFactory, ...opts } = {}) {\n    super()\n\n    this[kOptions] = opts\n    this[kIndex] = -1\n    this[kCurrentWeight] = 0\n\n    this[kMaxWeightPerServer] = this[kOptions].maxWeightPerServer || 100\n    this[kErrorPenalty] = this[kOptions].errorPenalty || 15\n\n    if (!Array.isArray(upstreams)) {\n      upstreams = [upstreams]\n    }\n\n    if (typeof factory !== 'function') {\n      throw new InvalidArgumentError('factory must be a function.')\n    }\n\n    this[kInterceptors] = opts.interceptors?.BalancedPool && Array.isArray(opts.interceptors.BalancedPool)\n      ? opts.interceptors.BalancedPool\n      : []\n    this[kFactory] = factory\n\n    for (const upstream of upstreams) {\n      this.addUpstream(upstream)\n    }\n    this._updateBalancedPoolStats()\n  }\n\n  addUpstream (upstream) {\n    const upstreamOrigin = parseOrigin(upstream).origin\n\n    if (this[kClients].find((pool) => (\n      pool[kUrl].origin === upstreamOrigin &&\n      pool.closed !== true &&\n      pool.destroyed !== true\n    ))) {\n      return this\n    }\n    const pool = this[kFactory](upstreamOrigin, Object.assign({}, this[kOptions]))\n\n    this[kAddClient](pool)\n    pool.on('connect', () => {\n      pool[kWeight] = Math.min(this[kMaxWeightPerServer], pool[kWeight] + this[kErrorPenalty])\n    })\n\n    pool.on('connectionError', () => {\n      pool[kWeight] = Math.max(1, pool[kWeight] - this[kErrorPenalty])\n      this._updateBalancedPoolStats()\n    })\n\n    pool.on('disconnect', (...args) => {\n      const err = args[2]\n      if (err && err.code === 'UND_ERR_SOCKET') {\n        // decrease the weight of the pool.\n        pool[kWeight] = Math.max(1, pool[kWeight] - this[kErrorPenalty])\n        this._updateBalancedPoolStats()\n      }\n    })\n\n    for (const client of this[kClients]) {\n      client[kWeight] = this[kMaxWeightPerServer]\n    }\n\n    this._updateBalancedPoolStats()\n\n    return this\n  }\n\n  _updateBalancedPoolStats () {\n    this[kGreatestCommonDivisor] = this[kClients].map(p => p[kWeight]).reduce(getGreatestCommonDivisor, 0)\n  }\n\n  removeUpstream (upstream) {\n    const upstreamOrigin = parseOrigin(upstream).origin\n\n    const pool = this[kClients].find((pool) => (\n      pool[kUrl].origin === upstreamOrigin &&\n      pool.closed !== true &&\n      pool.destroyed !== true\n    ))\n\n    if (pool) {\n      this[kRemoveClient](pool)\n    }\n\n    return this\n  }\n\n  get upstreams () {\n    return this[kClients]\n      .filter(dispatcher => dispatcher.closed !== true && dispatcher.destroyed !== true)\n      .map((p) => p[kUrl].origin)\n  }\n\n  [kGetDispatcher] () {\n    // We validate that pools is greater than 0,\n    // otherwise we would have to wait until an upstream\n    // is added, which might never happen.\n    if (this[kClients].length === 0) {\n      throw new BalancedPoolMissingUpstreamError()\n    }\n\n    const dispatcher = this[kClients].find(dispatcher => (\n      !dispatcher[kNeedDrain] &&\n      dispatcher.closed !== true &&\n      dispatcher.destroyed !== true\n    ))\n\n    if (!dispatcher) {\n      return\n    }\n\n    const allClientsBusy = this[kClients].map(pool => pool[kNeedDrain]).reduce((a, b) => a && b, true)\n\n    if (allClientsBusy) {\n      return\n    }\n\n    let counter = 0\n\n    let maxWeightIndex = this[kClients].findIndex(pool => !pool[kNeedDrain])\n\n    while (counter++ < this[kClients].length) {\n      this[kIndex] = (this[kIndex] + 1) % this[kClients].length\n      const pool = this[kClients][this[kIndex]]\n\n      // find pool index with the largest weight\n      if (pool[kWeight] > this[kClients][maxWeightIndex][kWeight] && !pool[kNeedDrain]) {\n        maxWeightIndex = this[kIndex]\n      }\n\n      // decrease the current weight every `this[kClients].length`.\n      if (this[kIndex] === 0) {\n        // Set the current weight to the next lower weight.\n        this[kCurrentWeight] = this[kCurrentWeight] - this[kGreatestCommonDivisor]\n\n        if (this[kCurrentWeight] <= 0) {\n          this[kCurrentWeight] = this[kMaxWeightPerServer]\n        }\n      }\n      if (pool[kWeight] >= this[kCurrentWeight] && (!pool[kNeedDrain])) {\n        return pool\n      }\n    }\n\n    this[kCurrentWeight] = this[kClients][maxWeightIndex][kWeight]\n    this[kIndex] = maxWeightIndex\n    return this[kClients][maxWeightIndex]\n  }\n}\n\nmodule.exports = BalancedPool\n", "'use strict'\n\nconst { InvalidArgumentError } = require('../core/errors')\nconst { kClients, kRunning, kClose, kDestroy, kDispatch, kInterceptors } = require('../core/symbols')\nconst DispatcherBase = require('./dispatcher-base')\nconst Pool = require('./pool')\nconst Client = require('./client')\nconst util = require('../core/util')\nconst createRedirectInterceptor = require('../interceptor/redirect-interceptor')\n\nconst kOnConnect = Symbol('onConnect')\nconst kOnDisconnect = Symbol('onDisconnect')\nconst kOnConnectionError = Symbol('onConnectionError')\nconst kMaxRedirections = Symbol('maxRedirections')\nconst kOnDrain = Symbol('onDrain')\nconst kFactory = Symbol('factory')\nconst kOptions = Symbol('options')\n\nfunction defaultFactory (origin, opts) {\n  return opts && opts.connections === 1\n    ? new Client(origin, opts)\n    : new Pool(origin, opts)\n}\n\nclass Agent extends DispatcherBase {\n  constructor ({ factory = defaultFactory, maxRedirections = 0, connect, ...options } = {}) {\n    super()\n\n    if (typeof factory !== 'function') {\n      throw new InvalidArgumentError('factory must be a function.')\n    }\n\n    if (connect != null && typeof connect !== 'function' && typeof connect !== 'object') {\n      throw new InvalidArgumentError('connect must be a function or an object')\n    }\n\n    if (!Number.isInteger(maxRedirections) || maxRedirections < 0) {\n      throw new InvalidArgumentError('maxRedirections must be a positive number')\n    }\n\n    if (connect && typeof connect !== 'function') {\n      connect = { ...connect }\n    }\n\n    this[kInterceptors] = options.interceptors?.Agent && Array.isArray(options.interceptors.Agent)\n      ? options.interceptors.Agent\n      : [createRedirectInterceptor({ maxRedirections })]\n\n    this[kOptions] = { ...util.deepClone(options), connect }\n    this[kOptions].interceptors = options.interceptors\n      ? { ...options.interceptors }\n      : undefined\n    this[kMaxRedirections] = maxRedirections\n    this[kFactory] = factory\n    this[kClients] = new Map()\n\n    this[kOnDrain] = (origin, targets) => {\n      this.emit('drain', origin, [this, ...targets])\n    }\n\n    this[kOnConnect] = (origin, targets) => {\n      this.emit('connect', origin, [this, ...targets])\n    }\n\n    this[kOnDisconnect] = (origin, targets, err) => {\n      this.emit('disconnect', origin, [this, ...targets], err)\n    }\n\n    this[kOnConnectionError] = (origin, targets, err) => {\n      this.emit('connectionError', origin, [this, ...targets], err)\n    }\n  }\n\n  get [kRunning] () {\n    let ret = 0\n    for (const client of this[kClients].values()) {\n      ret += client[kRunning]\n    }\n    return ret\n  }\n\n  [kDispatch] (opts, handler) {\n    let key\n    if (opts.origin && (typeof opts.origin === 'string' || opts.origin instanceof URL)) {\n      key = String(opts.origin)\n    } else {\n      throw new InvalidArgumentError('opts.origin must be a non-empty string or URL.')\n    }\n\n    let dispatcher = this[kClients].get(key)\n\n    if (!dispatcher) {\n      dispatcher = this[kFactory](opts.origin, this[kOptions])\n        .on('drain', this[kOnDrain])\n        .on('connect', this[kOnConnect])\n        .on('disconnect', this[kOnDisconnect])\n        .on('connectionError', this[kOnConnectionError])\n\n      // This introduces a tiny memory leak, as dispatchers are never removed from the map.\n      // TODO(mcollina): remove te timer when the client/pool do not have any more\n      // active connections.\n      this[kClients].set(key, dispatcher)\n    }\n\n    return dispatcher.dispatch(opts, handler)\n  }\n\n  async [kClose] () {\n    const closePromises = []\n    for (const client of this[kClients].values()) {\n      closePromises.push(client.close())\n    }\n    this[kClients].clear()\n\n    await Promise.all(closePromises)\n  }\n\n  async [kDestroy] (err) {\n    const destroyPromises = []\n    for (const client of this[kClients].values()) {\n      destroyPromises.push(client.destroy(err))\n    }\n    this[kClients].clear()\n\n    await Promise.all(destroyPromises)\n  }\n}\n\nmodule.exports = Agent\n", "'use strict'\n\nconst { kProxy, kClose, kDestroy, kInterceptors } = require('../core/symbols')\nconst { URL } = require('node:url')\nconst Agent = require('./agent')\nconst Pool = require('./pool')\nconst DispatcherBase = require('./dispatcher-base')\nconst { InvalidArgumentError, RequestAbortedError, SecureProxyConnectionError } = require('../core/errors')\nconst buildConnector = require('../core/connect')\n\nconst kAgent = Symbol('proxy agent')\nconst kClient = Symbol('proxy client')\nconst kProxyHeaders = Symbol('proxy headers')\nconst kRequestTls = Symbol('request tls settings')\nconst kProxyTls = Symbol('proxy tls settings')\nconst kConnectEndpoint = Symbol('connect endpoint function')\n\nfunction defaultProtocolPort (protocol) {\n  return protocol === 'https:' ? 443 : 80\n}\n\nfunction defaultFactory (origin, opts) {\n  return new Pool(origin, opts)\n}\n\nclass ProxyAgent extends DispatcherBase {\n  constructor (opts) {\n    super()\n\n    if (!opts || (typeof opts === 'object' && !(opts instanceof URL) && !opts.uri)) {\n      throw new InvalidArgumentError('Proxy uri is mandatory')\n    }\n\n    const { clientFactory = defaultFactory } = opts\n    if (typeof clientFactory !== 'function') {\n      throw new InvalidArgumentError('Proxy opts.clientFactory must be a function.')\n    }\n\n    const url = this.#getUrl(opts)\n    const { href, origin, port, protocol, username, password, hostname: proxyHostname } = url\n\n    this[kProxy] = { uri: href, protocol }\n    this[kInterceptors] = opts.interceptors?.ProxyAgent && Array.isArray(opts.interceptors.ProxyAgent)\n      ? opts.interceptors.ProxyAgent\n      : []\n    this[kRequestTls] = opts.requestTls\n    this[kProxyTls] = opts.proxyTls\n    this[kProxyHeaders] = opts.headers || {}\n\n    if (opts.auth && opts.token) {\n      throw new InvalidArgumentError('opts.auth cannot be used in combination with opts.token')\n    } else if (opts.auth) {\n      /* @deprecated in favour of opts.token */\n      this[kProxyHeaders]['proxy-authorization'] = `Basic ${opts.auth}`\n    } else if (opts.token) {\n      this[kProxyHeaders]['proxy-authorization'] = opts.token\n    } else if (username && password) {\n      this[kProxyHeaders]['proxy-authorization'] = `Basic ${Buffer.from(`${decodeURIComponent(username)}:${decodeURIComponent(password)}`).toString('base64')}`\n    }\n\n    const connect = buildConnector({ ...opts.proxyTls })\n    this[kConnectEndpoint] = buildConnector({ ...opts.requestTls })\n    this[kClient] = clientFactory(url, { connect })\n    this[kAgent] = new Agent({\n      ...opts,\n      connect: async (opts, callback) => {\n        let requestedPath = opts.host\n        if (!opts.port) {\n          requestedPath += `:${defaultProtocolPort(opts.protocol)}`\n        }\n        try {\n          const { socket, statusCode } = await this[kClient].connect({\n            origin,\n            port,\n            path: requestedPath,\n            signal: opts.signal,\n            headers: {\n              ...this[kProxyHeaders],\n              host: opts.host\n            },\n            servername: this[kProxyTls]?.servername || proxyHostname\n          })\n          if (statusCode !== 200) {\n            socket.on('error', () => {}).destroy()\n            callback(new RequestAbortedError(`Proxy response (${statusCode}) !== 200 when HTTP Tunneling`))\n          }\n          if (opts.protocol !== 'https:') {\n            callback(null, socket)\n            return\n          }\n          let servername\n          if (this[kRequestTls]) {\n            servername = this[kRequestTls].servername\n          } else {\n            servername = opts.servername\n          }\n          this[kConnectEndpoint]({ ...opts, servername, httpSocket: socket }, callback)\n        } catch (err) {\n          if (err.code === 'ERR_TLS_CERT_ALTNAME_INVALID') {\n            // Throw a custom error to avoid loop in client.js#connect\n            callback(new SecureProxyConnectionError(err))\n          } else {\n            callback(err)\n          }\n        }\n      }\n    })\n  }\n\n  dispatch (opts, handler) {\n    const headers = buildHeaders(opts.headers)\n    throwIfProxyAuthIsSent(headers)\n\n    if (headers && !('host' in headers) && !('Host' in headers)) {\n      const { host } = new URL(opts.origin)\n      headers.host = host\n    }\n\n    return this[kAgent].dispatch(\n      {\n        ...opts,\n        headers\n      },\n      handler\n    )\n  }\n\n  /**\n   * @param {import('../types/proxy-agent').ProxyAgent.Options | string | URL} opts\n   * @returns {URL}\n   */\n  #getUrl (opts) {\n    if (typeof opts === 'string') {\n      return new URL(opts)\n    } else if (opts instanceof URL) {\n      return opts\n    } else {\n      return new URL(opts.uri)\n    }\n  }\n\n  async [kClose] () {\n    await this[kAgent].close()\n    await this[kClient].close()\n  }\n\n  async [kDestroy] () {\n    await this[kAgent].destroy()\n    await this[kClient].destroy()\n  }\n}\n\n/**\n * @param {string[] | Record<string, string>} headers\n * @returns {Record<string, string>}\n */\nfunction buildHeaders (headers) {\n  // When using undici.fetch, the headers list is stored\n  // as an array.\n  if (Array.isArray(headers)) {\n    /** @type {Record<string, string>} */\n    const headersPair = {}\n\n    for (let i = 0; i < headers.length; i += 2) {\n      headersPair[headers[i]] = headers[i + 1]\n    }\n\n    return headersPair\n  }\n\n  return headers\n}\n\n/**\n * @param {Record<string, string>} headers\n *\n * Previous versions of ProxyAgent suggests the Proxy-Authorization in request headers\n * Nevertheless, it was changed and to avoid a security vulnerability by end users\n * this check was created.\n * It should be removed in the next major version for performance reasons\n */\nfunction throwIfProxyAuthIsSent (headers) {\n  const existProxyAuth = headers && Object.keys(headers)\n    .find((key) => key.toLowerCase() === 'proxy-authorization')\n  if (existProxyAuth) {\n    throw new InvalidArgumentError('Proxy-Authorization should be sent in ProxyAgent constructor')\n  }\n}\n\nmodule.exports = ProxyAgent\n", "'use strict'\n\nconst DispatcherBase = require('./dispatcher-base')\nconst { kClose, kDestroy, kClosed, kDestroyed, kDispatch, kNoProxyAgent, kHttpProxyAgent, kHttpsProxyAgent } = require('../core/symbols')\nconst ProxyAgent = require('./proxy-agent')\nconst Agent = require('./agent')\n\nconst DEFAULT_PORTS = {\n  'http:': 80,\n  'https:': 443\n}\n\nlet experimentalWarned = false\n\nclass EnvHttpProxyAgent extends DispatcherBase {\n  #noProxyValue = null\n  #noProxyEntries = null\n  #opts = null\n\n  constructor (opts = {}) {\n    super()\n    this.#opts = opts\n\n    if (!experimentalWarned) {\n      experimentalWarned = true\n      process.emitWarning('EnvHttpProxyAgent is experimental, expect them to change at any time.', {\n        code: 'UNDICI-EHPA'\n      })\n    }\n\n    const { httpProxy, httpsProxy, noProxy, ...agentOpts } = opts\n\n    this[kNoProxyAgent] = new Agent(agentOpts)\n\n    const HTTP_PROXY = httpProxy ?? process.env.http_proxy ?? process.env.HTTP_PROXY\n    if (HTTP_PROXY) {\n      this[kHttpProxyAgent] = new ProxyAgent({ ...agentOpts, uri: HTTP_PROXY })\n    } else {\n      this[kHttpProxyAgent] = this[kNoProxyAgent]\n    }\n\n    const HTTPS_PROXY = httpsProxy ?? process.env.https_proxy ?? process.env.HTTPS_PROXY\n    if (HTTPS_PROXY) {\n      this[kHttpsProxyAgent] = new ProxyAgent({ ...agentOpts, uri: HTTPS_PROXY })\n    } else {\n      this[kHttpsProxyAgent] = this[kHttpProxyAgent]\n    }\n\n    this.#parseNoProxy()\n  }\n\n  [kDispatch] (opts, handler) {\n    const url = new URL(opts.origin)\n    const agent = this.#getProxyAgentForUrl(url)\n    return agent.dispatch(opts, handler)\n  }\n\n  async [kClose] () {\n    await this[kNoProxyAgent].close()\n    if (!this[kHttpProxyAgent][kClosed]) {\n      await this[kHttpProxyAgent].close()\n    }\n    if (!this[kHttpsProxyAgent][kClosed]) {\n      await this[kHttpsProxyAgent].close()\n    }\n  }\n\n  async [kDestroy] (err) {\n    await this[kNoProxyAgent].destroy(err)\n    if (!this[kHttpProxyAgent][kDestroyed]) {\n      await this[kHttpProxyAgent].destroy(err)\n    }\n    if (!this[kHttpsProxyAgent][kDestroyed]) {\n      await this[kHttpsProxyAgent].destroy(err)\n    }\n  }\n\n  #getProxyAgentForUrl (url) {\n    let { protocol, host: hostname, port } = url\n\n    // Stripping ports in this way instead of using parsedUrl.hostname to make\n    // sure that the brackets around IPv6 addresses are kept.\n    hostname = hostname.replace(/:\\d*$/, '').toLowerCase()\n    port = Number.parseInt(port, 10) || DEFAULT_PORTS[protocol] || 0\n    if (!this.#shouldProxy(hostname, port)) {\n      return this[kNoProxyAgent]\n    }\n    if (protocol === 'https:') {\n      return this[kHttpsProxyAgent]\n    }\n    return this[kHttpProxyAgent]\n  }\n\n  #shouldProxy (hostname, port) {\n    if (this.#noProxyChanged) {\n      this.#parseNoProxy()\n    }\n\n    if (this.#noProxyEntries.length === 0) {\n      return true // Always proxy if NO_PROXY is not set or empty.\n    }\n    if (this.#noProxyValue === '*') {\n      return false // Never proxy if wildcard is set.\n    }\n\n    for (let i = 0; i < this.#noProxyEntries.length; i++) {\n      const entry = this.#noProxyEntries[i]\n      if (entry.port && entry.port !== port) {\n        continue // Skip if ports don't match.\n      }\n      if (!/^[.*]/.test(entry.hostname)) {\n        // No wildcards, so don't proxy only if there is not an exact match.\n        if (hostname === entry.hostname) {\n          return false\n        }\n      } else {\n        // Don't proxy if the hostname ends with the no_proxy host.\n        if (hostname.endsWith(entry.hostname.replace(/^\\*/, ''))) {\n          return false\n        }\n      }\n    }\n\n    return true\n  }\n\n  #parseNoProxy () {\n    const noProxyValue = this.#opts.noProxy ?? this.#noProxyEnv\n    const noProxySplit = noProxyValue.split(/[,\\s]/)\n    const noProxyEntries = []\n\n    for (let i = 0; i < noProxySplit.length; i++) {\n      const entry = noProxySplit[i]\n      if (!entry) {\n        continue\n      }\n      const parsed = entry.match(/^(.+):(\\d+)$/)\n      noProxyEntries.push({\n        hostname: (parsed ? parsed[1] : entry).toLowerCase(),\n        port: parsed ? Number.parseInt(parsed[2], 10) : 0\n      })\n    }\n\n    this.#noProxyValue = noProxyValue\n    this.#noProxyEntries = noProxyEntries\n  }\n\n  get #noProxyChanged () {\n    if (this.#opts.noProxy !== undefined) {\n      return false\n    }\n    return this.#noProxyValue !== this.#noProxyEnv\n  }\n\n  get #noProxyEnv () {\n    return process.env.no_proxy ?? process.env.NO_PROXY ?? ''\n  }\n}\n\nmodule.exports = EnvHttpProxyAgent\n", "'use strict'\nconst assert = require('node:assert')\n\nconst { kRetryHandlerDefaultRetry } = require('../core/symbols')\nconst { RequestRetryError } = require('../core/errors')\nconst { isDisturbed, parseHeaders, parseRangeHeader } = require('../core/util')\n\nfunction calculateRetryAfterHeader (retryAfter) {\n  const current = Date.now()\n  return new Date(retryAfter).getTime() - current\n}\n\nclass RetryHandler {\n  constructor (opts, handlers) {\n    const { retryOptions, ...dispatchOpts } = opts\n    const {\n      // Retry scoped\n      retry: retryFn,\n      maxRetries,\n      maxTimeout,\n      minTimeout,\n      timeoutFactor,\n      // Response scoped\n      methods,\n      errorCodes,\n      retryAfter,\n      statusCodes\n    } = retryOptions ?? {}\n\n    this.dispatch = handlers.dispatch\n    this.handler = handlers.handler\n    this.opts = dispatchOpts\n    this.abort = null\n    this.aborted = false\n    this.retryOpts = {\n      retry: retryFn ?? RetryHandler[kRetryHandlerDefaultRetry],\n      retryAfter: retryAfter ?? true,\n      maxTimeout: maxTimeout ?? 30 * 1000, // 30s,\n      minTimeout: minTimeout ?? 500, // .5s\n      timeoutFactor: timeoutFactor ?? 2,\n      maxRetries: maxRetries ?? 5,\n      // What errors we should retry\n      methods: methods ?? ['GET', 'HEAD', 'OPTIONS', 'PUT', 'DELETE', 'TRACE'],\n      // Indicates which errors to retry\n      statusCodes: statusCodes ?? [500, 502, 503, 504, 429],\n      // List of errors to retry\n      errorCodes: errorCodes ?? [\n        'ECONNRESET',\n        'ECONNREFUSED',\n        'ENOTFOUND',\n        'ENETDOWN',\n        'ENETUNREACH',\n        'EHOSTDOWN',\n        'EHOSTUNREACH',\n        'EPIPE',\n        'UND_ERR_SOCKET'\n      ]\n    }\n\n    this.retryCount = 0\n    this.retryCountCheckpoint = 0\n    this.start = 0\n    this.end = null\n    this.etag = null\n    this.resume = null\n\n    // Handle possible onConnect duplication\n    this.handler.onConnect(reason => {\n      this.aborted = true\n      if (this.abort) {\n        this.abort(reason)\n      } else {\n        this.reason = reason\n      }\n    })\n  }\n\n  onRequestSent () {\n    if (this.handler.onRequestSent) {\n      this.handler.onRequestSent()\n    }\n  }\n\n  onUpgrade (statusCode, headers, socket) {\n    if (this.handler.onUpgrade) {\n      this.handler.onUpgrade(statusCode, headers, socket)\n    }\n  }\n\n  onConnect (abort) {\n    if (this.aborted) {\n      abort(this.reason)\n    } else {\n      this.abort = abort\n    }\n  }\n\n  onBodySent (chunk) {\n    if (this.handler.onBodySent) return this.handler.onBodySent(chunk)\n  }\n\n  static [kRetryHandlerDefaultRetry] (err, { state, opts }, cb) {\n    const { statusCode, code, headers } = err\n    const { method, retryOptions } = opts\n    const {\n      maxRetries,\n      minTimeout,\n      maxTimeout,\n      timeoutFactor,\n      statusCodes,\n      errorCodes,\n      methods\n    } = retryOptions\n    const { counter } = state\n\n    // Any code that is not a Undici's originated and allowed to retry\n    if (code && code !== 'UND_ERR_REQ_RETRY' && !errorCodes.includes(code)) {\n      cb(err)\n      return\n    }\n\n    // If a set of method are provided and the current method is not in the list\n    if (Array.isArray(methods) && !methods.includes(method)) {\n      cb(err)\n      return\n    }\n\n    // If a set of status code are provided and the current status code is not in the list\n    if (\n      statusCode != null &&\n      Array.isArray(statusCodes) &&\n      !statusCodes.includes(statusCode)\n    ) {\n      cb(err)\n      return\n    }\n\n    // If we reached the max number of retries\n    if (counter > maxRetries) {\n      cb(err)\n      return\n    }\n\n    let retryAfterHeader = headers?.['retry-after']\n    if (retryAfterHeader) {\n      retryAfterHeader = Number(retryAfterHeader)\n      retryAfterHeader = Number.isNaN(retryAfterHeader)\n        ? calculateRetryAfterHeader(retryAfterHeader)\n        : retryAfterHeader * 1e3 // Retry-After is in seconds\n    }\n\n    const retryTimeout =\n      retryAfterHeader > 0\n        ? Math.min(retryAfterHeader, maxTimeout)\n        : Math.min(minTimeout * timeoutFactor ** (counter - 1), maxTimeout)\n\n    setTimeout(() => cb(null), retryTimeout)\n  }\n\n  onHeaders (statusCode, rawHeaders, resume, statusMessage) {\n    const headers = parseHeaders(rawHeaders)\n\n    this.retryCount += 1\n\n    if (statusCode >= 300) {\n      if (this.retryOpts.statusCodes.includes(statusCode) === false) {\n        return this.handler.onHeaders(\n          statusCode,\n          rawHeaders,\n          resume,\n          statusMessage\n        )\n      } else {\n        this.abort(\n          new RequestRetryError('Request failed', statusCode, {\n            headers,\n            count: this.retryCount\n          })\n        )\n        return false\n      }\n    }\n\n    // Checkpoint for resume from where we left it\n    if (this.resume != null) {\n      this.resume = null\n\n      if (statusCode !== 206) {\n        return true\n      }\n\n      const contentRange = parseRangeHeader(headers['content-range'])\n      // If no content range\n      if (!contentRange) {\n        this.abort(\n          new RequestRetryError('Content-Range mismatch', statusCode, {\n            headers,\n            count: this.retryCount\n          })\n        )\n        return false\n      }\n\n      // Let's start with a weak etag check\n      if (this.etag != null && this.etag !== headers.etag) {\n        this.abort(\n          new RequestRetryError('ETag mismatch', statusCode, {\n            headers,\n            count: this.retryCount\n          })\n        )\n        return false\n      }\n\n      const { start, size, end = size } = contentRange\n\n      assert(this.start === start, 'content-range mismatch')\n      assert(this.end == null || this.end === end, 'content-range mismatch')\n\n      this.resume = resume\n      return true\n    }\n\n    if (this.end == null) {\n      if (statusCode === 206) {\n        // First time we receive 206\n        const range = parseRangeHeader(headers['content-range'])\n\n        if (range == null) {\n          return this.handler.onHeaders(\n            statusCode,\n            rawHeaders,\n            resume,\n            statusMessage\n          )\n        }\n\n        const { start, size, end = size } = range\n        assert(\n          start != null && Number.isFinite(start),\n          'content-range mismatch'\n        )\n        assert(end != null && Number.isFinite(end), 'invalid content-length')\n\n        this.start = start\n        this.end = end\n      }\n\n      // We make our best to checkpoint the body for further range headers\n      if (this.end == null) {\n        const contentLength = headers['content-length']\n        this.end = contentLength != null ? Number(contentLength) : null\n      }\n\n      assert(Number.isFinite(this.start))\n      assert(\n        this.end == null || Number.isFinite(this.end),\n        'invalid content-length'\n      )\n\n      this.resume = resume\n      this.etag = headers.etag != null ? headers.etag : null\n\n      // Weak etags are not useful for comparison nor cache\n      // for instance not safe to assume if the response is byte-per-byte\n      // equal\n      if (this.etag != null && this.etag.startsWith('W/')) {\n        this.etag = null\n      }\n\n      return this.handler.onHeaders(\n        statusCode,\n        rawHeaders,\n        resume,\n        statusMessage\n      )\n    }\n\n    const err = new RequestRetryError('Request failed', statusCode, {\n      headers,\n      count: this.retryCount\n    })\n\n    this.abort(err)\n\n    return false\n  }\n\n  onData (chunk) {\n    this.start += chunk.length\n\n    return this.handler.onData(chunk)\n  }\n\n  onComplete (rawTrailers) {\n    this.retryCount = 0\n    return this.handler.onComplete(rawTrailers)\n  }\n\n  onError (err) {\n    if (this.aborted || isDisturbed(this.opts.body)) {\n      return this.handler.onError(err)\n    }\n\n    // We reconcile in case of a mix between network errors\n    // and server error response\n    if (this.retryCount - this.retryCountCheckpoint > 0) {\n      // We count the difference between the last checkpoint and the current retry count\n      this.retryCount =\n        this.retryCountCheckpoint +\n        (this.retryCount - this.retryCountCheckpoint)\n    } else {\n      this.retryCount += 1\n    }\n\n    this.retryOpts.retry(\n      err,\n      {\n        state: { counter: this.retryCount },\n        opts: { retryOptions: this.retryOpts, ...this.opts }\n      },\n      onRetry.bind(this)\n    )\n\n    function onRetry (err) {\n      if (err != null || this.aborted || isDisturbed(this.opts.body)) {\n        return this.handler.onError(err)\n      }\n\n      if (this.start !== 0) {\n        const headers = { range: `bytes=${this.start}-${this.end ?? ''}` }\n\n        // Weak etag check - weak etags will make comparison algorithms never match\n        if (this.etag != null) {\n          headers['if-match'] = this.etag\n        }\n\n        this.opts = {\n          ...this.opts,\n          headers: {\n            ...this.opts.headers,\n            ...headers\n          }\n        }\n      }\n\n      try {\n        this.retryCountCheckpoint = this.retryCount\n        this.dispatch(this.opts, this)\n      } catch (err) {\n        this.handler.onError(err)\n      }\n    }\n  }\n}\n\nmodule.exports = RetryHandler\n", "'use strict'\n\nconst Dispatcher = require('./dispatcher')\nconst RetryHandler = require('../handler/retry-handler')\n\nclass RetryAgent extends Dispatcher {\n  #agent = null\n  #options = null\n  constructor (agent, options = {}) {\n    super(options)\n    this.#agent = agent\n    this.#options = options\n  }\n\n  dispatch (opts, handler) {\n    const retry = new RetryHandler({\n      ...opts,\n      retryOptions: this.#options\n    }, {\n      dispatch: this.#agent.dispatch.bind(this.#agent),\n      handler\n    })\n    return this.#agent.dispatch(opts, retry)\n  }\n\n  close () {\n    return this.#agent.close()\n  }\n\n  destroy () {\n    return this.#agent.destroy()\n  }\n}\n\nmodule.exports = RetryAgent\n", "// Ported from https://github.com/nodejs/undici/pull/907\n\n'use strict'\n\nconst assert = require('node:assert')\nconst { Readable } = require('node:stream')\nconst { RequestAbortedError, NotSupportedError, InvalidArgumentError, AbortError } = require('../core/errors')\nconst util = require('../core/util')\nconst { ReadableStreamFrom } = require('../core/util')\n\nconst kConsume = Symbol('kConsume')\nconst kReading = Symbol('kReading')\nconst kBody = Symbol('kBody')\nconst kAbort = Symbol('kAbort')\nconst kContentType = Symbol('kContentType')\nconst kContentLength = Symbol('kContentLength')\n\nconst noop = () => {}\n\nclass BodyReadable extends Readable {\n  constructor ({\n    resume,\n    abort,\n    contentType = '',\n    contentLength,\n    highWaterMark = 64 * 1024 // Same as nodejs fs streams.\n  }) {\n    super({\n      autoDestroy: true,\n      read: resume,\n      highWaterMark\n    })\n\n    this._readableState.dataEmitted = false\n\n    this[kAbort] = abort\n    this[kConsume] = null\n    this[kBody] = null\n    this[kContentType] = contentType\n    this[kContentLength] = contentLength\n\n    // Is stream being consumed through Readable API?\n    // This is an optimization so that we avoid checking\n    // for 'data' and 'readable' listeners in the hot path\n    // inside push().\n    this[kReading] = false\n  }\n\n  destroy (err) {\n    if (!err && !this._readableState.endEmitted) {\n      err = new RequestAbortedError()\n    }\n\n    if (err) {\n      this[kAbort]()\n    }\n\n    return super.destroy(err)\n  }\n\n  _destroy (err, callback) {\n    // Workaround for Node \"bug\". If the stream is destroyed in same\n    // tick as it is created, then a user who is waiting for a\n    // promise (i.e micro tick) for installing a 'error' listener will\n    // never get a chance and will always encounter an unhandled exception.\n    if (!this[kReading]) {\n      setImmediate(() => {\n        callback(err)\n      })\n    } else {\n      callback(err)\n    }\n  }\n\n  on (ev, ...args) {\n    if (ev === 'data' || ev === 'readable') {\n      this[kReading] = true\n    }\n    return super.on(ev, ...args)\n  }\n\n  addListener (ev, ...args) {\n    return this.on(ev, ...args)\n  }\n\n  off (ev, ...args) {\n    const ret = super.off(ev, ...args)\n    if (ev === 'data' || ev === 'readable') {\n      this[kReading] = (\n        this.listenerCount('data') > 0 ||\n        this.listenerCount('readable') > 0\n      )\n    }\n    return ret\n  }\n\n  removeListener (ev, ...args) {\n    return this.off(ev, ...args)\n  }\n\n  push (chunk) {\n    if (this[kConsume] && chunk !== null) {\n      consumePush(this[kConsume], chunk)\n      return this[kReading] ? super.push(chunk) : true\n    }\n    return super.push(chunk)\n  }\n\n  // https://fetch.spec.whatwg.org/#dom-body-text\n  async text () {\n    return consume(this, 'text')\n  }\n\n  // https://fetch.spec.whatwg.org/#dom-body-json\n  async json () {\n    return consume(this, 'json')\n  }\n\n  // https://fetch.spec.whatwg.org/#dom-body-blob\n  async blob () {\n    return consume(this, 'blob')\n  }\n\n  // https://fetch.spec.whatwg.org/#dom-body-arraybuffer\n  async arrayBuffer () {\n    return consume(this, 'arrayBuffer')\n  }\n\n  // https://fetch.spec.whatwg.org/#dom-body-formdata\n  async formData () {\n    // TODO: Implement.\n    throw new NotSupportedError()\n  }\n\n  // https://fetch.spec.whatwg.org/#dom-body-bodyused\n  get bodyUsed () {\n    return util.isDisturbed(this)\n  }\n\n  // https://fetch.spec.whatwg.org/#dom-body-body\n  get body () {\n    if (!this[kBody]) {\n      this[kBody] = ReadableStreamFrom(this)\n      if (this[kConsume]) {\n        // TODO: Is this the best way to force a lock?\n        this[kBody].getReader() // Ensure stream is locked.\n        assert(this[kBody].locked)\n      }\n    }\n    return this[kBody]\n  }\n\n  async dump (opts) {\n    let limit = Number.isFinite(opts?.limit) ? opts.limit : 128 * 1024\n    const signal = opts?.signal\n\n    if (signal != null && (typeof signal !== 'object' || !('aborted' in signal))) {\n      throw new InvalidArgumentError('signal must be an AbortSignal')\n    }\n\n    signal?.throwIfAborted()\n\n    if (this._readableState.closeEmitted) {\n      return null\n    }\n\n    return await new Promise((resolve, reject) => {\n      if (this[kContentLength] > limit) {\n        this.destroy(new AbortError())\n      }\n\n      const onAbort = () => {\n        this.destroy(signal.reason ?? new AbortError())\n      }\n      signal?.addEventListener('abort', onAbort)\n\n      this\n        .on('close', function () {\n          signal?.removeEventListener('abort', onAbort)\n          if (signal?.aborted) {\n            reject(signal.reason ?? new AbortError())\n          } else {\n            resolve(null)\n          }\n        })\n        .on('error', noop)\n        .on('data', function (chunk) {\n          limit -= chunk.length\n          if (limit <= 0) {\n            this.destroy()\n          }\n        })\n        .resume()\n    })\n  }\n}\n\n// https://streams.spec.whatwg.org/#readablestream-locked\nfunction isLocked (self) {\n  // Consume is an implicit lock.\n  return (self[kBody] && self[kBody].locked === true) || self[kConsume]\n}\n\n// https://fetch.spec.whatwg.org/#body-unusable\nfunction isUnusable (self) {\n  return util.isDisturbed(self) || isLocked(self)\n}\n\nasync function consume (stream, type) {\n  assert(!stream[kConsume])\n\n  return new Promise((resolve, reject) => {\n    if (isUnusable(stream)) {\n      const rState = stream._readableState\n      if (rState.destroyed && rState.closeEmitted === false) {\n        stream\n          .on('error', err => {\n            reject(err)\n          })\n          .on('close', () => {\n            reject(new TypeError('unusable'))\n          })\n      } else {\n        reject(rState.errored ?? new TypeError('unusable'))\n      }\n    } else {\n      queueMicrotask(() => {\n        stream[kConsume] = {\n          type,\n          stream,\n          resolve,\n          reject,\n          length: 0,\n          body: []\n        }\n\n        stream\n          .on('error', function (err) {\n            consumeFinish(this[kConsume], err)\n          })\n          .on('close', function () {\n            if (this[kConsume].body !== null) {\n              consumeFinish(this[kConsume], new RequestAbortedError())\n            }\n          })\n\n        consumeStart(stream[kConsume])\n      })\n    }\n  })\n}\n\nfunction consumeStart (consume) {\n  if (consume.body === null) {\n    return\n  }\n\n  const { _readableState: state } = consume.stream\n\n  if (state.bufferIndex) {\n    const start = state.bufferIndex\n    const end = state.buffer.length\n    for (let n = start; n < end; n++) {\n      consumePush(consume, state.buffer[n])\n    }\n  } else {\n    for (const chunk of state.buffer) {\n      consumePush(consume, chunk)\n    }\n  }\n\n  if (state.endEmitted) {\n    consumeEnd(this[kConsume])\n  } else {\n    consume.stream.on('end', function () {\n      consumeEnd(this[kConsume])\n    })\n  }\n\n  consume.stream.resume()\n\n  while (consume.stream.read() != null) {\n    // Loop\n  }\n}\n\n/**\n * @param {Buffer[]} chunks\n * @param {number} length\n */\nfunction chunksDecode (chunks, length) {\n  if (chunks.length === 0 || length === 0) {\n    return ''\n  }\n  const buffer = chunks.length === 1 ? chunks[0] : Buffer.concat(chunks, length)\n  const bufferLength = buffer.length\n\n  // Skip BOM.\n  const start =\n    bufferLength > 2 &&\n    buffer[0] === 0xef &&\n    buffer[1] === 0xbb &&\n    buffer[2] === 0xbf\n      ? 3\n      : 0\n  return buffer.utf8Slice(start, bufferLength)\n}\n\nfunction consumeEnd (consume) {\n  const { type, body, resolve, stream, length } = consume\n\n  try {\n    if (type === 'text') {\n      resolve(chunksDecode(body, length))\n    } else if (type === 'json') {\n      resolve(JSON.parse(chunksDecode(body, length)))\n    } else if (type === 'arrayBuffer') {\n      const dst = new Uint8Array(length)\n\n      let pos = 0\n      for (const buf of body) {\n        dst.set(buf, pos)\n        pos += buf.byteLength\n      }\n\n      resolve(dst.buffer)\n    } else if (type === 'blob') {\n      resolve(new Blob(body, { type: stream[kContentType] }))\n    }\n\n    consumeFinish(consume)\n  } catch (err) {\n    stream.destroy(err)\n  }\n}\n\nfunction consumePush (consume, chunk) {\n  consume.length += chunk.length\n  consume.body.push(chunk)\n}\n\nfunction consumeFinish (consume, err) {\n  if (consume.body === null) {\n    return\n  }\n\n  if (err) {\n    consume.reject(err)\n  } else {\n    consume.resolve()\n  }\n\n  consume.type = null\n  consume.stream = null\n  consume.resolve = null\n  consume.reject = null\n  consume.length = 0\n  consume.body = null\n}\n\nmodule.exports = { Readable: BodyReadable, chunksDecode }\n", "const assert = require('node:assert')\nconst {\n  ResponseStatusCodeError\n} = require('../core/errors')\n\nconst { chunksDecode } = require('./readable')\nconst CHUNK_LIMIT = 128 * 1024\n\nasync function getResolveErrorBodyCallback ({ callback, body, contentType, statusCode, statusMessage, headers }) {\n  assert(body)\n\n  let chunks = []\n  let length = 0\n\n  try {\n    for await (const chunk of body) {\n      chunks.push(chunk)\n      length += chunk.length\n      if (length > CHUNK_LIMIT) {\n        chunks = []\n        length = 0\n        break\n      }\n    }\n  } catch {\n    chunks = []\n    length = 0\n    // Do nothing....\n  }\n\n  const message = `Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`\n\n  if (statusCode === 204 || !contentType || !length) {\n    queueMicrotask(() => callback(new ResponseStatusCodeError(message, statusCode, headers)))\n    return\n  }\n\n  const stackTraceLimit = Error.stackTraceLimit\n  Error.stackTraceLimit = 0\n  let payload\n\n  try {\n    if (isContentTypeApplicationJson(contentType)) {\n      payload = JSON.parse(chunksDecode(chunks, length))\n    } else if (isContentTypeText(contentType)) {\n      payload = chunksDecode(chunks, length)\n    }\n  } catch {\n    // process in a callback to avoid throwing in the microtask queue\n  } finally {\n    Error.stackTraceLimit = stackTraceLimit\n  }\n  queueMicrotask(() => callback(new ResponseStatusCodeError(message, statusCode, headers, payload)))\n}\n\nconst isContentTypeApplicationJson = (contentType) => {\n  return (\n    contentType.length > 15 &&\n    contentType[11] === '/' &&\n    contentType[0] === 'a' &&\n    contentType[1] === 'p' &&\n    contentType[2] === 'p' &&\n    contentType[3] === 'l' &&\n    contentType[4] === 'i' &&\n    contentType[5] === 'c' &&\n    contentType[6] === 'a' &&\n    contentType[7] === 't' &&\n    contentType[8] === 'i' &&\n    contentType[9] === 'o' &&\n    contentType[10] === 'n' &&\n    contentType[12] === 'j' &&\n    contentType[13] === 's' &&\n    contentType[14] === 'o' &&\n    contentType[15] === 'n'\n  )\n}\n\nconst isContentTypeText = (contentType) => {\n  return (\n    contentType.length > 4 &&\n    contentType[4] === '/' &&\n    contentType[0] === 't' &&\n    contentType[1] === 'e' &&\n    contentType[2] === 'x' &&\n    contentType[3] === 't'\n  )\n}\n\nmodule.exports = {\n  getResolveErrorBodyCallback,\n  isContentTypeApplicationJson,\n  isContentTypeText\n}\n", "'use strict'\n\nconst assert = require('node:assert')\nconst { Readable } = require('./readable')\nconst { InvalidArgumentError, RequestAbortedError } = require('../core/errors')\nconst util = require('../core/util')\nconst { getResolveErrorBodyCallback } = require('./util')\nconst { AsyncResource } = require('node:async_hooks')\n\nclass RequestHandler extends AsyncResource {\n  constructor (opts, callback) {\n    if (!opts || typeof opts !== 'object') {\n      throw new InvalidArgumentError('invalid opts')\n    }\n\n    const { signal, method, opaque, body, onInfo, responseHeaders, throwOnError, highWaterMark } = opts\n\n    try {\n      if (typeof callback !== 'function') {\n        throw new InvalidArgumentError('invalid callback')\n      }\n\n      if (highWaterMark && (typeof highWaterMark !== 'number' || highWaterMark < 0)) {\n        throw new InvalidArgumentError('invalid highWaterMark')\n      }\n\n      if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') {\n        throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget')\n      }\n\n      if (method === 'CONNECT') {\n        throw new InvalidArgumentError('invalid method')\n      }\n\n      if (onInfo && typeof onInfo !== 'function') {\n        throw new InvalidArgumentError('invalid onInfo callback')\n      }\n\n      super('UNDICI_REQUEST')\n    } catch (err) {\n      if (util.isStream(body)) {\n        util.destroy(body.on('error', util.nop), err)\n      }\n      throw err\n    }\n\n    this.method = method\n    this.responseHeaders = responseHeaders || null\n    this.opaque = opaque || null\n    this.callback = callback\n    this.res = null\n    this.abort = null\n    this.body = body\n    this.trailers = {}\n    this.context = null\n    this.onInfo = onInfo || null\n    this.throwOnError = throwOnError\n    this.highWaterMark = highWaterMark\n    this.signal = signal\n    this.reason = null\n    this.removeAbortListener = null\n\n    if (util.isStream(body)) {\n      body.on('error', (err) => {\n        this.onError(err)\n      })\n    }\n\n    if (this.signal) {\n      if (this.signal.aborted) {\n        this.reason = this.signal.reason ?? new RequestAbortedError()\n      } else {\n        this.removeAbortListener = util.addAbortListener(this.signal, () => {\n          this.reason = this.signal.reason ?? new RequestAbortedError()\n          if (this.res) {\n            util.destroy(this.res, this.reason)\n          } else if (this.abort) {\n            this.abort(this.reason)\n          }\n\n          if (this.removeAbortListener) {\n            this.res?.off('close', this.removeAbortListener)\n            this.removeAbortListener()\n            this.removeAbortListener = null\n          }\n        })\n      }\n    }\n  }\n\n  onConnect (abort, context) {\n    if (this.reason) {\n      abort(this.reason)\n      return\n    }\n\n    assert(this.callback)\n\n    this.abort = abort\n    this.context = context\n  }\n\n  onHeaders (statusCode, rawHeaders, resume, statusMessage) {\n    const { callback, opaque, abort, context, responseHeaders, highWaterMark } = this\n\n    const headers = responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders)\n\n    if (statusCode < 200) {\n      if (this.onInfo) {\n        this.onInfo({ statusCode, headers })\n      }\n      return\n    }\n\n    const parsedHeaders = responseHeaders === 'raw' ? util.parseHeaders(rawHeaders) : headers\n    const contentType = parsedHeaders['content-type']\n    const contentLength = parsedHeaders['content-length']\n    const res = new Readable({\n      resume,\n      abort,\n      contentType,\n      contentLength: this.method !== 'HEAD' && contentLength\n        ? Number(contentLength)\n        : null,\n      highWaterMark\n    })\n\n    if (this.removeAbortListener) {\n      res.on('close', this.removeAbortListener)\n    }\n\n    this.callback = null\n    this.res = res\n    if (callback !== null) {\n      if (this.throwOnError && statusCode >= 400) {\n        this.runInAsyncScope(getResolveErrorBodyCallback, null,\n          { callback, body: res, contentType, statusCode, statusMessage, headers }\n        )\n      } else {\n        this.runInAsyncScope(callback, null, null, {\n          statusCode,\n          headers,\n          trailers: this.trailers,\n          opaque,\n          body: res,\n          context\n        })\n      }\n    }\n  }\n\n  onData (chunk) {\n    return this.res.push(chunk)\n  }\n\n  onComplete (trailers) {\n    util.parseHeaders(trailers, this.trailers)\n    this.res.push(null)\n  }\n\n  onError (err) {\n    const { res, callback, body, opaque } = this\n\n    if (callback) {\n      // TODO: Does this need queueMicrotask?\n      this.callback = null\n      queueMicrotask(() => {\n        this.runInAsyncScope(callback, null, err, { opaque })\n      })\n    }\n\n    if (res) {\n      this.res = null\n      // Ensure all queued handlers are invoked before destroying res.\n      queueMicrotask(() => {\n        util.destroy(res, err)\n      })\n    }\n\n    if (body) {\n      this.body = null\n      util.destroy(body, err)\n    }\n\n    if (this.removeAbortListener) {\n      res?.off('close', this.removeAbortListener)\n      this.removeAbortListener()\n      this.removeAbortListener = null\n    }\n  }\n}\n\nfunction request (opts, callback) {\n  if (callback === undefined) {\n    return new Promise((resolve, reject) => {\n      request.call(this, opts, (err, data) => {\n        return err ? reject(err) : resolve(data)\n      })\n    })\n  }\n\n  try {\n    this.dispatch(opts, new RequestHandler(opts, callback))\n  } catch (err) {\n    if (typeof callback !== 'function') {\n      throw err\n    }\n    const opaque = opts?.opaque\n    queueMicrotask(() => callback(err, { opaque }))\n  }\n}\n\nmodule.exports = request\nmodule.exports.RequestHandler = RequestHandler\n", "const { addAbortListener } = require('../core/util')\nconst { RequestAbortedError } = require('../core/errors')\n\nconst kListener = Symbol('kListener')\nconst kSignal = Symbol('kSignal')\n\nfunction abort (self) {\n  if (self.abort) {\n    self.abort(self[kSignal]?.reason)\n  } else {\n    self.reason = self[kSignal]?.reason ?? new RequestAbortedError()\n  }\n  removeSignal(self)\n}\n\nfunction addSignal (self, signal) {\n  self.reason = null\n\n  self[kSignal] = null\n  self[kListener] = null\n\n  if (!signal) {\n    return\n  }\n\n  if (signal.aborted) {\n    abort(self)\n    return\n  }\n\n  self[kSignal] = signal\n  self[kListener] = () => {\n    abort(self)\n  }\n\n  addAbortListener(self[kSignal], self[kListener])\n}\n\nfunction removeSignal (self) {\n  if (!self[kSignal]) {\n    return\n  }\n\n  if ('removeEventListener' in self[kSignal]) {\n    self[kSignal].removeEventListener('abort', self[kListener])\n  } else {\n    self[kSignal].removeListener('abort', self[kListener])\n  }\n\n  self[kSignal] = null\n  self[kListener] = null\n}\n\nmodule.exports = {\n  addSignal,\n  removeSignal\n}\n", "'use strict'\n\nconst assert = require('node:assert')\nconst { finished, PassThrough } = require('node:stream')\nconst { InvalidArgumentError, InvalidReturnValueError } = require('../core/errors')\nconst util = require('../core/util')\nconst { getResolveErrorBodyCallback } = require('./util')\nconst { AsyncResource } = require('node:async_hooks')\nconst { addSignal, removeSignal } = require('./abort-signal')\n\nclass StreamHandler extends AsyncResource {\n  constructor (opts, factory, callback) {\n    if (!opts || typeof opts !== 'object') {\n      throw new InvalidArgumentError('invalid opts')\n    }\n\n    const { signal, method, opaque, body, onInfo, responseHeaders, throwOnError } = opts\n\n    try {\n      if (typeof callback !== 'function') {\n        throw new InvalidArgumentError('invalid callback')\n      }\n\n      if (typeof factory !== 'function') {\n        throw new InvalidArgumentError('invalid factory')\n      }\n\n      if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') {\n        throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget')\n      }\n\n      if (method === 'CONNECT') {\n        throw new InvalidArgumentError('invalid method')\n      }\n\n      if (onInfo && typeof onInfo !== 'function') {\n        throw new InvalidArgumentError('invalid onInfo callback')\n      }\n\n      super('UNDICI_STREAM')\n    } catch (err) {\n      if (util.isStream(body)) {\n        util.destroy(body.on('error', util.nop), err)\n      }\n      throw err\n    }\n\n    this.responseHeaders = responseHeaders || null\n    this.opaque = opaque || null\n    this.factory = factory\n    this.callback = callback\n    this.res = null\n    this.abort = null\n    this.context = null\n    this.trailers = null\n    this.body = body\n    this.onInfo = onInfo || null\n    this.throwOnError = throwOnError || false\n\n    if (util.isStream(body)) {\n      body.on('error', (err) => {\n        this.onError(err)\n      })\n    }\n\n    addSignal(this, signal)\n  }\n\n  onConnect (abort, context) {\n    if (this.reason) {\n      abort(this.reason)\n      return\n    }\n\n    assert(this.callback)\n\n    this.abort = abort\n    this.context = context\n  }\n\n  onHeaders (statusCode, rawHeaders, resume, statusMessage) {\n    const { factory, opaque, context, callback, responseHeaders } = this\n\n    const headers = responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders)\n\n    if (statusCode < 200) {\n      if (this.onInfo) {\n        this.onInfo({ statusCode, headers })\n      }\n      return\n    }\n\n    this.factory = null\n\n    let res\n\n    if (this.throwOnError && statusCode >= 400) {\n      const parsedHeaders = responseHeaders === 'raw' ? util.parseHeaders(rawHeaders) : headers\n      const contentType = parsedHeaders['content-type']\n      res = new PassThrough()\n\n      this.callback = null\n      this.runInAsyncScope(getResolveErrorBodyCallback, null,\n        { callback, body: res, contentType, statusCode, statusMessage, headers }\n      )\n    } else {\n      if (factory === null) {\n        return\n      }\n\n      res = this.runInAsyncScope(factory, null, {\n        statusCode,\n        headers,\n        opaque,\n        context\n      })\n\n      if (\n        !res ||\n        typeof res.write !== 'function' ||\n        typeof res.end !== 'function' ||\n        typeof res.on !== 'function'\n      ) {\n        throw new InvalidReturnValueError('expected Writable')\n      }\n\n      // TODO: Avoid finished. It registers an unnecessary amount of listeners.\n      finished(res, { readable: false }, (err) => {\n        const { callback, res, opaque, trailers, abort } = this\n\n        this.res = null\n        if (err || !res.readable) {\n          util.destroy(res, err)\n        }\n\n        this.callback = null\n        this.runInAsyncScope(callback, null, err || null, { opaque, trailers })\n\n        if (err) {\n          abort()\n        }\n      })\n    }\n\n    res.on('drain', resume)\n\n    this.res = res\n\n    const needDrain = res.writableNeedDrain !== undefined\n      ? res.writableNeedDrain\n      : res._writableState?.needDrain\n\n    return needDrain !== true\n  }\n\n  onData (chunk) {\n    const { res } = this\n\n    return res ? res.write(chunk) : true\n  }\n\n  onComplete (trailers) {\n    const { res } = this\n\n    removeSignal(this)\n\n    if (!res) {\n      return\n    }\n\n    this.trailers = util.parseHeaders(trailers)\n\n    res.end()\n  }\n\n  onError (err) {\n    const { res, callback, opaque, body } = this\n\n    removeSignal(this)\n\n    this.factory = null\n\n    if (res) {\n      this.res = null\n      util.destroy(res, err)\n    } else if (callback) {\n      this.callback = null\n      queueMicrotask(() => {\n        this.runInAsyncScope(callback, null, err, { opaque })\n      })\n    }\n\n    if (body) {\n      this.body = null\n      util.destroy(body, err)\n    }\n  }\n}\n\nfunction stream (opts, factory, callback) {\n  if (callback === undefined) {\n    return new Promise((resolve, reject) => {\n      stream.call(this, opts, factory, (err, data) => {\n        return err ? reject(err) : resolve(data)\n      })\n    })\n  }\n\n  try {\n    this.dispatch(opts, new StreamHandler(opts, factory, callback))\n  } catch (err) {\n    if (typeof callback !== 'function') {\n      throw err\n    }\n    const opaque = opts?.opaque\n    queueMicrotask(() => callback(err, { opaque }))\n  }\n}\n\nmodule.exports = stream\n", "'use strict'\n\nconst {\n  Readable,\n  Duplex,\n  PassThrough\n} = require('node:stream')\nconst {\n  InvalidArgumentError,\n  InvalidReturnValueError,\n  RequestAbortedError\n} = require('../core/errors')\nconst util = require('../core/util')\nconst { AsyncResource } = require('node:async_hooks')\nconst { addSignal, removeSignal } = require('./abort-signal')\nconst assert = require('node:assert')\n\nconst kResume = Symbol('resume')\n\nclass PipelineRequest extends Readable {\n  constructor () {\n    super({ autoDestroy: true })\n\n    this[kResume] = null\n  }\n\n  _read () {\n    const { [kResume]: resume } = this\n\n    if (resume) {\n      this[kResume] = null\n      resume()\n    }\n  }\n\n  _destroy (err, callback) {\n    this._read()\n\n    callback(err)\n  }\n}\n\nclass PipelineResponse extends Readable {\n  constructor (resume) {\n    super({ autoDestroy: true })\n    this[kResume] = resume\n  }\n\n  _read () {\n    this[kResume]()\n  }\n\n  _destroy (err, callback) {\n    if (!err && !this._readableState.endEmitted) {\n      err = new RequestAbortedError()\n    }\n\n    callback(err)\n  }\n}\n\nclass PipelineHandler extends AsyncResource {\n  constructor (opts, handler) {\n    if (!opts || typeof opts !== 'object') {\n      throw new InvalidArgumentError('invalid opts')\n    }\n\n    if (typeof handler !== 'function') {\n      throw new InvalidArgumentError('invalid handler')\n    }\n\n    const { signal, method, opaque, onInfo, responseHeaders } = opts\n\n    if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') {\n      throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget')\n    }\n\n    if (method === 'CONNECT') {\n      throw new InvalidArgumentError('invalid method')\n    }\n\n    if (onInfo && typeof onInfo !== 'function') {\n      throw new InvalidArgumentError('invalid onInfo callback')\n    }\n\n    super('UNDICI_PIPELINE')\n\n    this.opaque = opaque || null\n    this.responseHeaders = responseHeaders || null\n    this.handler = handler\n    this.abort = null\n    this.context = null\n    this.onInfo = onInfo || null\n\n    this.req = new PipelineRequest().on('error', util.nop)\n\n    this.ret = new Duplex({\n      readableObjectMode: opts.objectMode,\n      autoDestroy: true,\n      read: () => {\n        const { body } = this\n\n        if (body?.resume) {\n          body.resume()\n        }\n      },\n      write: (chunk, encoding, callback) => {\n        const { req } = this\n\n        if (req.push(chunk, encoding) || req._readableState.destroyed) {\n          callback()\n        } else {\n          req[kResume] = callback\n        }\n      },\n      destroy: (err, callback) => {\n        const { body, req, res, ret, abort } = this\n\n        if (!err && !ret._readableState.endEmitted) {\n          err = new RequestAbortedError()\n        }\n\n        if (abort && err) {\n          abort()\n        }\n\n        util.destroy(body, err)\n        util.destroy(req, err)\n        util.destroy(res, err)\n\n        removeSignal(this)\n\n        callback(err)\n      }\n    }).on('prefinish', () => {\n      const { req } = this\n\n      // Node < 15 does not call _final in same tick.\n      req.push(null)\n    })\n\n    this.res = null\n\n    addSignal(this, signal)\n  }\n\n  onConnect (abort, context) {\n    const { ret, res } = this\n\n    if (this.reason) {\n      abort(this.reason)\n      return\n    }\n\n    assert(!res, 'pipeline cannot be retried')\n    assert(!ret.destroyed)\n\n    this.abort = abort\n    this.context = context\n  }\n\n  onHeaders (statusCode, rawHeaders, resume) {\n    const { opaque, handler, context } = this\n\n    if (statusCode < 200) {\n      if (this.onInfo) {\n        const headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders)\n        this.onInfo({ statusCode, headers })\n      }\n      return\n    }\n\n    this.res = new PipelineResponse(resume)\n\n    let body\n    try {\n      this.handler = null\n      const headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders)\n      body = this.runInAsyncScope(handler, null, {\n        statusCode,\n        headers,\n        opaque,\n        body: this.res,\n        context\n      })\n    } catch (err) {\n      this.res.on('error', util.nop)\n      throw err\n    }\n\n    if (!body || typeof body.on !== 'function') {\n      throw new InvalidReturnValueError('expected Readable')\n    }\n\n    body\n      .on('data', (chunk) => {\n        const { ret, body } = this\n\n        if (!ret.push(chunk) && body.pause) {\n          body.pause()\n        }\n      })\n      .on('error', (err) => {\n        const { ret } = this\n\n        util.destroy(ret, err)\n      })\n      .on('end', () => {\n        const { ret } = this\n\n        ret.push(null)\n      })\n      .on('close', () => {\n        const { ret } = this\n\n        if (!ret._readableState.ended) {\n          util.destroy(ret, new RequestAbortedError())\n        }\n      })\n\n    this.body = body\n  }\n\n  onData (chunk) {\n    const { res } = this\n    return res.push(chunk)\n  }\n\n  onComplete (trailers) {\n    const { res } = this\n    res.push(null)\n  }\n\n  onError (err) {\n    const { ret } = this\n    this.handler = null\n    util.destroy(ret, err)\n  }\n}\n\nfunction pipeline (opts, handler) {\n  try {\n    const pipelineHandler = new PipelineHandler(opts, handler)\n    this.dispatch({ ...opts, body: pipelineHandler.req }, pipelineHandler)\n    return pipelineHandler.ret\n  } catch (err) {\n    return new PassThrough().destroy(err)\n  }\n}\n\nmodule.exports = pipeline\n", "'use strict'\n\nconst { InvalidArgumentError, SocketError } = require('../core/errors')\nconst { AsyncResource } = require('node:async_hooks')\nconst util = require('../core/util')\nconst { addSignal, removeSignal } = require('./abort-signal')\nconst assert = require('node:assert')\n\nclass UpgradeHandler extends AsyncResource {\n  constructor (opts, callback) {\n    if (!opts || typeof opts !== 'object') {\n      throw new InvalidArgumentError('invalid opts')\n    }\n\n    if (typeof callback !== 'function') {\n      throw new InvalidArgumentError('invalid callback')\n    }\n\n    const { signal, opaque, responseHeaders } = opts\n\n    if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') {\n      throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget')\n    }\n\n    super('UNDICI_UPGRADE')\n\n    this.responseHeaders = responseHeaders || null\n    this.opaque = opaque || null\n    this.callback = callback\n    this.abort = null\n    this.context = null\n\n    addSignal(this, signal)\n  }\n\n  onConnect (abort, context) {\n    if (this.reason) {\n      abort(this.reason)\n      return\n    }\n\n    assert(this.callback)\n\n    this.abort = abort\n    this.context = null\n  }\n\n  onHeaders () {\n    throw new SocketError('bad upgrade', null)\n  }\n\n  onUpgrade (statusCode, rawHeaders, socket) {\n    const { callback, opaque, context } = this\n\n    assert.strictEqual(statusCode, 101)\n\n    removeSignal(this)\n\n    this.callback = null\n    const headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders)\n    this.runInAsyncScope(callback, null, null, {\n      headers,\n      socket,\n      opaque,\n      context\n    })\n  }\n\n  onError (err) {\n    const { callback, opaque } = this\n\n    removeSignal(this)\n\n    if (callback) {\n      this.callback = null\n      queueMicrotask(() => {\n        this.runInAsyncScope(callback, null, err, { opaque })\n      })\n    }\n  }\n}\n\nfunction upgrade (opts, callback) {\n  if (callback === undefined) {\n    return new Promise((resolve, reject) => {\n      upgrade.call(this, opts, (err, data) => {\n        return err ? reject(err) : resolve(data)\n      })\n    })\n  }\n\n  try {\n    const upgradeHandler = new UpgradeHandler(opts, callback)\n    this.dispatch({\n      ...opts,\n      method: opts.method || 'GET',\n      upgrade: opts.protocol || 'Websocket'\n    }, upgradeHandler)\n  } catch (err) {\n    if (typeof callback !== 'function') {\n      throw err\n    }\n    const opaque = opts?.opaque\n    queueMicrotask(() => callback(err, { opaque }))\n  }\n}\n\nmodule.exports = upgrade\n", "'use strict'\n\nconst assert = require('node:assert')\nconst { AsyncResource } = require('node:async_hooks')\nconst { InvalidArgumentError, SocketError } = require('../core/errors')\nconst util = require('../core/util')\nconst { addSignal, removeSignal } = require('./abort-signal')\n\nclass ConnectHandler extends AsyncResource {\n  constructor (opts, callback) {\n    if (!opts || typeof opts !== 'object') {\n      throw new InvalidArgumentError('invalid opts')\n    }\n\n    if (typeof callback !== 'function') {\n      throw new InvalidArgumentError('invalid callback')\n    }\n\n    const { signal, opaque, responseHeaders } = opts\n\n    if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') {\n      throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget')\n    }\n\n    super('UNDICI_CONNECT')\n\n    this.opaque = opaque || null\n    this.responseHeaders = responseHeaders || null\n    this.callback = callback\n    this.abort = null\n\n    addSignal(this, signal)\n  }\n\n  onConnect (abort, context) {\n    if (this.reason) {\n      abort(this.reason)\n      return\n    }\n\n    assert(this.callback)\n\n    this.abort = abort\n    this.context = context\n  }\n\n  onHeaders () {\n    throw new SocketError('bad connect', null)\n  }\n\n  onUpgrade (statusCode, rawHeaders, socket) {\n    const { callback, opaque, context } = this\n\n    removeSignal(this)\n\n    this.callback = null\n\n    let headers = rawHeaders\n    // Indicates is an HTTP2Session\n    if (headers != null) {\n      headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders)\n    }\n\n    this.runInAsyncScope(callback, null, null, {\n      statusCode,\n      headers,\n      socket,\n      opaque,\n      context\n    })\n  }\n\n  onError (err) {\n    const { callback, opaque } = this\n\n    removeSignal(this)\n\n    if (callback) {\n      this.callback = null\n      queueMicrotask(() => {\n        this.runInAsyncScope(callback, null, err, { opaque })\n      })\n    }\n  }\n}\n\nfunction connect (opts, callback) {\n  if (callback === undefined) {\n    return new Promise((resolve, reject) => {\n      connect.call(this, opts, (err, data) => {\n        return err ? reject(err) : resolve(data)\n      })\n    })\n  }\n\n  try {\n    const connectHandler = new ConnectHandler(opts, callback)\n    this.dispatch({ ...opts, method: 'CONNECT' }, connectHandler)\n  } catch (err) {\n    if (typeof callback !== 'function') {\n      throw err\n    }\n    const opaque = opts?.opaque\n    queueMicrotask(() => callback(err, { opaque }))\n  }\n}\n\nmodule.exports = connect\n", "'use strict'\n\nmodule.exports.request = require('./api-request')\nmodule.exports.stream = require('./api-stream')\nmodule.exports.pipeline = require('./api-pipeline')\nmodule.exports.upgrade = require('./api-upgrade')\nmodule.exports.connect = require('./api-connect')\n", "'use strict'\n\nconst { UndiciError } = require('../core/errors')\n\nclass MockNotMatchedError extends UndiciError {\n  constructor (message) {\n    super(message)\n    Error.captureStackTrace(this, MockNotMatchedError)\n    this.name = 'MockNotMatchedError'\n    this.message = message || 'The request does not match any registered mock dispatches'\n    this.code = 'UND_MOCK_ERR_MOCK_NOT_MATCHED'\n  }\n}\n\nmodule.exports = {\n  MockNotMatchedError\n}\n", "'use strict'\n\nmodule.exports = {\n  kAgent: Symbol('agent'),\n  kOptions: Symbol('options'),\n  kFactory: Symbol('factory'),\n  kDispatches: Symbol('dispatches'),\n  kDispatchKey: Symbol('dispatch key'),\n  kDefaultHeaders: Symbol('default headers'),\n  kDefaultTrailers: Symbol('default trailers'),\n  kContentLength: Symbol('content length'),\n  kMockAgent: Symbol('mock agent'),\n  kMockAgentSet: Symbol('mock agent set'),\n  kMockAgentGet: Symbol('mock agent get'),\n  kMockDispatch: Symbol('mock dispatch'),\n  kClose: Symbol('close'),\n  kOriginalClose: Symbol('original agent close'),\n  kOrigin: Symbol('origin'),\n  kIsMockActive: Symbol('is mock active'),\n  kNetConnect: Symbol('net connect'),\n  kGetNetConnect: Symbol('get net connect'),\n  kConnected: Symbol('connected')\n}\n", "'use strict'\n\nconst { MockNotMatchedError } = require('./mock-errors')\nconst {\n  kDispatches,\n  kMockAgent,\n  kOriginalDispatch,\n  kOrigin,\n  kGetNetConnect\n} = require('./mock-symbols')\nconst { buildURL } = require('../core/util')\nconst { STATUS_CODES } = require('node:http')\nconst {\n  types: {\n    isPromise\n  }\n} = require('node:util')\n\nfunction matchValue (match, value) {\n  if (typeof match === 'string') {\n    return match === value\n  }\n  if (match instanceof RegExp) {\n    return match.test(value)\n  }\n  if (typeof match === 'function') {\n    return match(value) === true\n  }\n  return false\n}\n\nfunction lowerCaseEntries (headers) {\n  return Object.fromEntries(\n    Object.entries(headers).map(([headerName, headerValue]) => {\n      return [headerName.toLocaleLowerCase(), headerValue]\n    })\n  )\n}\n\n/**\n * @param {import('../../index').Headers|string[]|Record<string, string>} headers\n * @param {string} key\n */\nfunction getHeaderByName (headers, key) {\n  if (Array.isArray(headers)) {\n    for (let i = 0; i < headers.length; i += 2) {\n      if (headers[i].toLocaleLowerCase() === key.toLocaleLowerCase()) {\n        return headers[i + 1]\n      }\n    }\n\n    return undefined\n  } else if (typeof headers.get === 'function') {\n    return headers.get(key)\n  } else {\n    return lowerCaseEntries(headers)[key.toLocaleLowerCase()]\n  }\n}\n\n/** @param {string[]} headers */\nfunction buildHeadersFromArray (headers) { // fetch HeadersList\n  const clone = headers.slice()\n  const entries = []\n  for (let index = 0; index < clone.length; index += 2) {\n    entries.push([clone[index], clone[index + 1]])\n  }\n  return Object.fromEntries(entries)\n}\n\nfunction matchHeaders (mockDispatch, headers) {\n  if (typeof mockDispatch.headers === 'function') {\n    if (Array.isArray(headers)) { // fetch HeadersList\n      headers = buildHeadersFromArray(headers)\n    }\n    return mockDispatch.headers(headers ? lowerCaseEntries(headers) : {})\n  }\n  if (typeof mockDispatch.headers === 'undefined') {\n    return true\n  }\n  if (typeof headers !== 'object' || typeof mockDispatch.headers !== 'object') {\n    return false\n  }\n\n  for (const [matchHeaderName, matchHeaderValue] of Object.entries(mockDispatch.headers)) {\n    const headerValue = getHeaderByName(headers, matchHeaderName)\n\n    if (!matchValue(matchHeaderValue, headerValue)) {\n      return false\n    }\n  }\n  return true\n}\n\nfunction safeUrl (path) {\n  if (typeof path !== 'string') {\n    return path\n  }\n\n  const pathSegments = path.split('?')\n\n  if (pathSegments.length !== 2) {\n    return path\n  }\n\n  const qp = new URLSearchParams(pathSegments.pop())\n  qp.sort()\n  return [...pathSegments, qp.toString()].join('?')\n}\n\nfunction matchKey (mockDispatch, { path, method, body, headers }) {\n  const pathMatch = matchValue(mockDispatch.path, path)\n  const methodMatch = matchValue(mockDispatch.method, method)\n  const bodyMatch = typeof mockDispatch.body !== 'undefined' ? matchValue(mockDispatch.body, body) : true\n  const headersMatch = matchHeaders(mockDispatch, headers)\n  return pathMatch && methodMatch && bodyMatch && headersMatch\n}\n\nfunction getResponseData (data) {\n  if (Buffer.isBuffer(data)) {\n    return data\n  } else if (typeof data === 'object') {\n    return JSON.stringify(data)\n  } else {\n    return data.toString()\n  }\n}\n\nfunction getMockDispatch (mockDispatches, key) {\n  const basePath = key.query ? buildURL(key.path, key.query) : key.path\n  const resolvedPath = typeof basePath === 'string' ? safeUrl(basePath) : basePath\n\n  // Match path\n  let matchedMockDispatches = mockDispatches.filter(({ consumed }) => !consumed).filter(({ path }) => matchValue(safeUrl(path), resolvedPath))\n  if (matchedMockDispatches.length === 0) {\n    throw new MockNotMatchedError(`Mock dispatch not matched for path '${resolvedPath}'`)\n  }\n\n  // Match method\n  matchedMockDispatches = matchedMockDispatches.filter(({ method }) => matchValue(method, key.method))\n  if (matchedMockDispatches.length === 0) {\n    throw new MockNotMatchedError(`Mock dispatch not matched for method '${key.method}' on path '${resolvedPath}'`)\n  }\n\n  // Match body\n  matchedMockDispatches = matchedMockDispatches.filter(({ body }) => typeof body !== 'undefined' ? matchValue(body, key.body) : true)\n  if (matchedMockDispatches.length === 0) {\n    throw new MockNotMatchedError(`Mock dispatch not matched for body '${key.body}' on path '${resolvedPath}'`)\n  }\n\n  // Match headers\n  matchedMockDispatches = matchedMockDispatches.filter((mockDispatch) => matchHeaders(mockDispatch, key.headers))\n  if (matchedMockDispatches.length === 0) {\n    const headers = typeof key.headers === 'object' ? JSON.stringify(key.headers) : key.headers\n    throw new MockNotMatchedError(`Mock dispatch not matched for headers '${headers}' on path '${resolvedPath}'`)\n  }\n\n  return matchedMockDispatches[0]\n}\n\nfunction addMockDispatch (mockDispatches, key, data) {\n  const baseData = { timesInvoked: 0, times: 1, persist: false, consumed: false }\n  const replyData = typeof data === 'function' ? { callback: data } : { ...data }\n  const newMockDispatch = { ...baseData, ...key, pending: true, data: { error: null, ...replyData } }\n  mockDispatches.push(newMockDispatch)\n  return newMockDispatch\n}\n\nfunction deleteMockDispatch (mockDispatches, key) {\n  const index = mockDispatches.findIndex(dispatch => {\n    if (!dispatch.consumed) {\n      return false\n    }\n    return matchKey(dispatch, key)\n  })\n  if (index !== -1) {\n    mockDispatches.splice(index, 1)\n  }\n}\n\nfunction buildKey (opts) {\n  const { path, method, body, headers, query } = opts\n  return {\n    path,\n    method,\n    body,\n    headers,\n    query\n  }\n}\n\nfunction generateKeyValues (data) {\n  const keys = Object.keys(data)\n  const result = []\n  for (let i = 0; i < keys.length; ++i) {\n    const key = keys[i]\n    const value = data[key]\n    const name = Buffer.from(`${key}`)\n    if (Array.isArray(value)) {\n      for (let j = 0; j < value.length; ++j) {\n        result.push(name, Buffer.from(`${value[j]}`))\n      }\n    } else {\n      result.push(name, Buffer.from(`${value}`))\n    }\n  }\n  return result\n}\n\n/**\n * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Status\n * @param {number} statusCode\n */\nfunction getStatusText (statusCode) {\n  return STATUS_CODES[statusCode] || 'unknown'\n}\n\nasync function getResponse (body) {\n  const buffers = []\n  for await (const data of body) {\n    buffers.push(data)\n  }\n  return Buffer.concat(buffers).toString('utf8')\n}\n\n/**\n * Mock dispatch function used to simulate undici dispatches\n */\nfunction mockDispatch (opts, handler) {\n  // Get mock dispatch from built key\n  const key = buildKey(opts)\n  const mockDispatch = getMockDispatch(this[kDispatches], key)\n\n  mockDispatch.timesInvoked++\n\n  // Here's where we resolve a callback if a callback is present for the dispatch data.\n  if (mockDispatch.data.callback) {\n    mockDispatch.data = { ...mockDispatch.data, ...mockDispatch.data.callback(opts) }\n  }\n\n  // Parse mockDispatch data\n  const { data: { statusCode, data, headers, trailers, error }, delay, persist } = mockDispatch\n  const { timesInvoked, times } = mockDispatch\n\n  // If it's used up and not persistent, mark as consumed\n  mockDispatch.consumed = !persist && timesInvoked >= times\n  mockDispatch.pending = timesInvoked < times\n\n  // If specified, trigger dispatch error\n  if (error !== null) {\n    deleteMockDispatch(this[kDispatches], key)\n    handler.onError(error)\n    return true\n  }\n\n  // Handle the request with a delay if necessary\n  if (typeof delay === 'number' && delay > 0) {\n    setTimeout(() => {\n      handleReply(this[kDispatches])\n    }, delay)\n  } else {\n    handleReply(this[kDispatches])\n  }\n\n  function handleReply (mockDispatches, _data = data) {\n    // fetch's HeadersList is a 1D string array\n    const optsHeaders = Array.isArray(opts.headers)\n      ? buildHeadersFromArray(opts.headers)\n      : opts.headers\n    const body = typeof _data === 'function'\n      ? _data({ ...opts, headers: optsHeaders })\n      : _data\n\n    // util.types.isPromise is likely needed for jest.\n    if (isPromise(body)) {\n      // If handleReply is asynchronous, throwing an error\n      // in the callback will reject the promise, rather than\n      // synchronously throw the error, which breaks some tests.\n      // Rather, we wait for the callback to resolve if it is a\n      // promise, and then re-run handleReply with the new body.\n      body.then((newData) => handleReply(mockDispatches, newData))\n      return\n    }\n\n    const responseData = getResponseData(body)\n    const responseHeaders = generateKeyValues(headers)\n    const responseTrailers = generateKeyValues(trailers)\n\n    handler.onConnect?.(err => handler.onError(err), null)\n    handler.onHeaders?.(statusCode, responseHeaders, resume, getStatusText(statusCode))\n    handler.onData?.(Buffer.from(responseData))\n    handler.onComplete?.(responseTrailers)\n    deleteMockDispatch(mockDispatches, key)\n  }\n\n  function resume () {}\n\n  return true\n}\n\nfunction buildMockDispatch () {\n  const agent = this[kMockAgent]\n  const origin = this[kOrigin]\n  const originalDispatch = this[kOriginalDispatch]\n\n  return function dispatch (opts, handler) {\n    if (agent.isMockActive) {\n      try {\n        mockDispatch.call(this, opts, handler)\n      } catch (error) {\n        if (error instanceof MockNotMatchedError) {\n          const netConnect = agent[kGetNetConnect]()\n          if (netConnect === false) {\n            throw new MockNotMatchedError(`${error.message}: subsequent request to origin ${origin} was not allowed (net.connect disabled)`)\n          }\n          if (checkNetConnect(netConnect, origin)) {\n            originalDispatch.call(this, opts, handler)\n          } else {\n            throw new MockNotMatchedError(`${error.message}: subsequent request to origin ${origin} was not allowed (net.connect is not enabled for this origin)`)\n          }\n        } else {\n          throw error\n        }\n      }\n    } else {\n      originalDispatch.call(this, opts, handler)\n    }\n  }\n}\n\nfunction checkNetConnect (netConnect, origin) {\n  const url = new URL(origin)\n  if (netConnect === true) {\n    return true\n  } else if (Array.isArray(netConnect) && netConnect.some((matcher) => matchValue(matcher, url.host))) {\n    return true\n  }\n  return false\n}\n\nfunction buildMockOptions (opts) {\n  if (opts) {\n    const { agent, ...mockOptions } = opts\n    return mockOptions\n  }\n}\n\nmodule.exports = {\n  getResponseData,\n  getMockDispatch,\n  addMockDispatch,\n  deleteMockDispatch,\n  buildKey,\n  generateKeyValues,\n  matchValue,\n  getResponse,\n  getStatusText,\n  mockDispatch,\n  buildMockDispatch,\n  checkNetConnect,\n  buildMockOptions,\n  getHeaderByName,\n  buildHeadersFromArray\n}\n", "'use strict'\n\nconst { getResponseData, buildKey, addMockDispatch } = require('./mock-utils')\nconst {\n  kDispatches,\n  kDispatchKey,\n  kDefaultHeaders,\n  kDefaultTrailers,\n  kContentLength,\n  kMockDispatch\n} = require('./mock-symbols')\nconst { InvalidArgumentError } = require('../core/errors')\nconst { buildURL } = require('../core/util')\n\n/**\n * Defines the scope API for an interceptor reply\n */\nclass MockScope {\n  constructor (mockDispatch) {\n    this[kMockDispatch] = mockDispatch\n  }\n\n  /**\n   * Delay a reply by a set amount in ms.\n   */\n  delay (waitInMs) {\n    if (typeof waitInMs !== 'number' || !Number.isInteger(waitInMs) || waitInMs <= 0) {\n      throw new InvalidArgumentError('waitInMs must be a valid integer > 0')\n    }\n\n    this[kMockDispatch].delay = waitInMs\n    return this\n  }\n\n  /**\n   * For a defined reply, never mark as consumed.\n   */\n  persist () {\n    this[kMockDispatch].persist = true\n    return this\n  }\n\n  /**\n   * Allow one to define a reply for a set amount of matching requests.\n   */\n  times (repeatTimes) {\n    if (typeof repeatTimes !== 'number' || !Number.isInteger(repeatTimes) || repeatTimes <= 0) {\n      throw new InvalidArgumentError('repeatTimes must be a valid integer > 0')\n    }\n\n    this[kMockDispatch].times = repeatTimes\n    return this\n  }\n}\n\n/**\n * Defines an interceptor for a Mock\n */\nclass MockInterceptor {\n  constructor (opts, mockDispatches) {\n    if (typeof opts !== 'object') {\n      throw new InvalidArgumentError('opts must be an object')\n    }\n    if (typeof opts.path === 'undefined') {\n      throw new InvalidArgumentError('opts.path must be defined')\n    }\n    if (typeof opts.method === 'undefined') {\n      opts.method = 'GET'\n    }\n    // See https://github.com/nodejs/undici/issues/1245\n    // As per RFC 3986, clients are not supposed to send URI\n    // fragments to servers when they retrieve a document,\n    if (typeof opts.path === 'string') {\n      if (opts.query) {\n        opts.path = buildURL(opts.path, opts.query)\n      } else {\n        // Matches https://github.com/nodejs/undici/blob/main/lib/web/fetch/index.js#L1811\n        const parsedURL = new URL(opts.path, 'data://')\n        opts.path = parsedURL.pathname + parsedURL.search\n      }\n    }\n    if (typeof opts.method === 'string') {\n      opts.method = opts.method.toUpperCase()\n    }\n\n    this[kDispatchKey] = buildKey(opts)\n    this[kDispatches] = mockDispatches\n    this[kDefaultHeaders] = {}\n    this[kDefaultTrailers] = {}\n    this[kContentLength] = false\n  }\n\n  createMockScopeDispatchData ({ statusCode, data, responseOptions }) {\n    const responseData = getResponseData(data)\n    const contentLength = this[kContentLength] ? { 'content-length': responseData.length } : {}\n    const headers = { ...this[kDefaultHeaders], ...contentLength, ...responseOptions.headers }\n    const trailers = { ...this[kDefaultTrailers], ...responseOptions.trailers }\n\n    return { statusCode, data, headers, trailers }\n  }\n\n  validateReplyParameters (replyParameters) {\n    if (typeof replyParameters.statusCode === 'undefined') {\n      throw new InvalidArgumentError('statusCode must be defined')\n    }\n    if (typeof replyParameters.responseOptions !== 'object' || replyParameters.responseOptions === null) {\n      throw new InvalidArgumentError('responseOptions must be an object')\n    }\n  }\n\n  /**\n   * Mock an undici request with a defined reply.\n   */\n  reply (replyOptionsCallbackOrStatusCode) {\n    // Values of reply aren't available right now as they\n    // can only be available when the reply callback is invoked.\n    if (typeof replyOptionsCallbackOrStatusCode === 'function') {\n      // We'll first wrap the provided callback in another function,\n      // this function will properly resolve the data from the callback\n      // when invoked.\n      const wrappedDefaultsCallback = (opts) => {\n        // Our reply options callback contains the parameter for statusCode, data and options.\n        const resolvedData = replyOptionsCallbackOrStatusCode(opts)\n\n        // Check if it is in the right format\n        if (typeof resolvedData !== 'object' || resolvedData === null) {\n          throw new InvalidArgumentError('reply options callback must return an object')\n        }\n\n        const replyParameters = { data: '', responseOptions: {}, ...resolvedData }\n        this.validateReplyParameters(replyParameters)\n        // Since the values can be obtained immediately we return them\n        // from this higher order function that will be resolved later.\n        return {\n          ...this.createMockScopeDispatchData(replyParameters)\n        }\n      }\n\n      // Add usual dispatch data, but this time set the data parameter to function that will eventually provide data.\n      const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], wrappedDefaultsCallback)\n      return new MockScope(newMockDispatch)\n    }\n\n    // We can have either one or three parameters, if we get here,\n    // we should have 1-3 parameters. So we spread the arguments of\n    // this function to obtain the parameters, since replyData will always\n    // just be the statusCode.\n    const replyParameters = {\n      statusCode: replyOptionsCallbackOrStatusCode,\n      data: arguments[1] === undefined ? '' : arguments[1],\n      responseOptions: arguments[2] === undefined ? {} : arguments[2]\n    }\n    this.validateReplyParameters(replyParameters)\n\n    // Send in-already provided data like usual\n    const dispatchData = this.createMockScopeDispatchData(replyParameters)\n    const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], dispatchData)\n    return new MockScope(newMockDispatch)\n  }\n\n  /**\n   * Mock an undici request with a defined error.\n   */\n  replyWithError (error) {\n    if (typeof error === 'undefined') {\n      throw new InvalidArgumentError('error must be defined')\n    }\n\n    const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], { error })\n    return new MockScope(newMockDispatch)\n  }\n\n  /**\n   * Set default reply headers on the interceptor for subsequent replies\n   */\n  defaultReplyHeaders (headers) {\n    if (typeof headers === 'undefined') {\n      throw new InvalidArgumentError('headers must be defined')\n    }\n\n    this[kDefaultHeaders] = headers\n    return this\n  }\n\n  /**\n   * Set default reply trailers on the interceptor for subsequent replies\n   */\n  defaultReplyTrailers (trailers) {\n    if (typeof trailers === 'undefined') {\n      throw new InvalidArgumentError('trailers must be defined')\n    }\n\n    this[kDefaultTrailers] = trailers\n    return this\n  }\n\n  /**\n   * Set reply content length header for replies on the interceptor\n   */\n  replyContentLength () {\n    this[kContentLength] = true\n    return this\n  }\n}\n\nmodule.exports.MockInterceptor = MockInterceptor\nmodule.exports.MockScope = MockScope\n", "'use strict'\n\nconst { promisify } = require('node:util')\nconst Client = require('../dispatcher/client')\nconst { buildMockDispatch } = require('./mock-utils')\nconst {\n  kDispatches,\n  kMockAgent,\n  kClose,\n  kOriginalClose,\n  kOrigin,\n  kOriginalDispatch,\n  kConnected\n} = require('./mock-symbols')\nconst { MockInterceptor } = require('./mock-interceptor')\nconst Symbols = require('../core/symbols')\nconst { InvalidArgumentError } = require('../core/errors')\n\n/**\n * MockClient provides an API that extends the Client to influence the mockDispatches.\n */\nclass MockClient extends Client {\n  constructor (origin, opts) {\n    super(origin, opts)\n\n    if (!opts || !opts.agent || typeof opts.agent.dispatch !== 'function') {\n      throw new InvalidArgumentError('Argument opts.agent must implement Agent')\n    }\n\n    this[kMockAgent] = opts.agent\n    this[kOrigin] = origin\n    this[kDispatches] = []\n    this[kConnected] = 1\n    this[kOriginalDispatch] = this.dispatch\n    this[kOriginalClose] = this.close.bind(this)\n\n    this.dispatch = buildMockDispatch.call(this)\n    this.close = this[kClose]\n  }\n\n  get [Symbols.kConnected] () {\n    return this[kConnected]\n  }\n\n  /**\n   * Sets up the base interceptor for mocking replies from undici.\n   */\n  intercept (opts) {\n    return new MockInterceptor(opts, this[kDispatches])\n  }\n\n  async [kClose] () {\n    await promisify(this[kOriginalClose])()\n    this[kConnected] = 0\n    this[kMockAgent][Symbols.kClients].delete(this[kOrigin])\n  }\n}\n\nmodule.exports = MockClient\n", "'use strict'\n\nconst { promisify } = require('node:util')\nconst Pool = require('../dispatcher/pool')\nconst { buildMockDispatch } = require('./mock-utils')\nconst {\n  kDispatches,\n  kMockAgent,\n  kClose,\n  kOriginalClose,\n  kOrigin,\n  kOriginalDispatch,\n  kConnected\n} = require('./mock-symbols')\nconst { MockInterceptor } = require('./mock-interceptor')\nconst Symbols = require('../core/symbols')\nconst { InvalidArgumentError } = require('../core/errors')\n\n/**\n * MockPool provides an API that extends the Pool to influence the mockDispatches.\n */\nclass MockPool extends Pool {\n  constructor (origin, opts) {\n    super(origin, opts)\n\n    if (!opts || !opts.agent || typeof opts.agent.dispatch !== 'function') {\n      throw new InvalidArgumentError('Argument opts.agent must implement Agent')\n    }\n\n    this[kMockAgent] = opts.agent\n    this[kOrigin] = origin\n    this[kDispatches] = []\n    this[kConnected] = 1\n    this[kOriginalDispatch] = this.dispatch\n    this[kOriginalClose] = this.close.bind(this)\n\n    this.dispatch = buildMockDispatch.call(this)\n    this.close = this[kClose]\n  }\n\n  get [Symbols.kConnected] () {\n    return this[kConnected]\n  }\n\n  /**\n   * Sets up the base interceptor for mocking replies from undici.\n   */\n  intercept (opts) {\n    return new MockInterceptor(opts, this[kDispatches])\n  }\n\n  async [kClose] () {\n    await promisify(this[kOriginalClose])()\n    this[kConnected] = 0\n    this[kMockAgent][Symbols.kClients].delete(this[kOrigin])\n  }\n}\n\nmodule.exports = MockPool\n", "'use strict'\n\nconst singulars = {\n  pronoun: 'it',\n  is: 'is',\n  was: 'was',\n  this: 'this'\n}\n\nconst plurals = {\n  pronoun: 'they',\n  is: 'are',\n  was: 'were',\n  this: 'these'\n}\n\nmodule.exports = class Pluralizer {\n  constructor (singular, plural) {\n    this.singular = singular\n    this.plural = plural\n  }\n\n  pluralize (count) {\n    const one = count === 1\n    const keys = one ? singulars : plurals\n    const noun = one ? this.singular : this.plural\n    return { ...keys, count, noun }\n  }\n}\n", "'use strict'\n\nconst { Transform } = require('node:stream')\nconst { Console } = require('node:console')\n\nconst PERSISTENT = process.versions.icu ? '\u2705' : 'Y '\nconst NOT_PERSISTENT = process.versions.icu ? '\u274C' : 'N '\n\n/**\n * Gets the output of `console.table(\u2026)` as a string.\n */\nmodule.exports = class PendingInterceptorsFormatter {\n  constructor ({ disableColors } = {}) {\n    this.transform = new Transform({\n      transform (chunk, _enc, cb) {\n        cb(null, chunk)\n      }\n    })\n\n    this.logger = new Console({\n      stdout: this.transform,\n      inspectOptions: {\n        colors: !disableColors && !process.env.CI\n      }\n    })\n  }\n\n  format (pendingInterceptors) {\n    const withPrettyHeaders = pendingInterceptors.map(\n      ({ method, path, data: { statusCode }, persist, times, timesInvoked, origin }) => ({\n        Method: method,\n        Origin: origin,\n        Path: path,\n        'Status code': statusCode,\n        Persistent: persist ? PERSISTENT : NOT_PERSISTENT,\n        Invocations: timesInvoked,\n        Remaining: persist ? Infinity : times - timesInvoked\n      }))\n\n    this.logger.table(withPrettyHeaders)\n    return this.transform.read().toString()\n  }\n}\n", "'use strict'\n\nconst { kClients } = require('../core/symbols')\nconst Agent = require('../dispatcher/agent')\nconst {\n  kAgent,\n  kMockAgentSet,\n  kMockAgentGet,\n  kDispatches,\n  kIsMockActive,\n  kNetConnect,\n  kGetNetConnect,\n  kOptions,\n  kFactory\n} = require('./mock-symbols')\nconst MockClient = require('./mock-client')\nconst MockPool = require('./mock-pool')\nconst { matchValue, buildMockOptions } = require('./mock-utils')\nconst { InvalidArgumentError, UndiciError } = require('../core/errors')\nconst Dispatcher = require('../dispatcher/dispatcher')\nconst Pluralizer = require('./pluralizer')\nconst PendingInterceptorsFormatter = require('./pending-interceptors-formatter')\n\nclass MockAgent extends Dispatcher {\n  constructor (opts) {\n    super(opts)\n\n    this[kNetConnect] = true\n    this[kIsMockActive] = true\n\n    // Instantiate Agent and encapsulate\n    if ((opts?.agent && typeof opts.agent.dispatch !== 'function')) {\n      throw new InvalidArgumentError('Argument opts.agent must implement Agent')\n    }\n    const agent = opts?.agent ? opts.agent : new Agent(opts)\n    this[kAgent] = agent\n\n    this[kClients] = agent[kClients]\n    this[kOptions] = buildMockOptions(opts)\n  }\n\n  get (origin) {\n    let dispatcher = this[kMockAgentGet](origin)\n\n    if (!dispatcher) {\n      dispatcher = this[kFactory](origin)\n      this[kMockAgentSet](origin, dispatcher)\n    }\n    return dispatcher\n  }\n\n  dispatch (opts, handler) {\n    // Call MockAgent.get to perform additional setup before dispatching as normal\n    this.get(opts.origin)\n    return this[kAgent].dispatch(opts, handler)\n  }\n\n  async close () {\n    await this[kAgent].close()\n    this[kClients].clear()\n  }\n\n  deactivate () {\n    this[kIsMockActive] = false\n  }\n\n  activate () {\n    this[kIsMockActive] = true\n  }\n\n  enableNetConnect (matcher) {\n    if (typeof matcher === 'string' || typeof matcher === 'function' || matcher instanceof RegExp) {\n      if (Array.isArray(this[kNetConnect])) {\n        this[kNetConnect].push(matcher)\n      } else {\n        this[kNetConnect] = [matcher]\n      }\n    } else if (typeof matcher === 'undefined') {\n      this[kNetConnect] = true\n    } else {\n      throw new InvalidArgumentError('Unsupported matcher. Must be one of String|Function|RegExp.')\n    }\n  }\n\n  disableNetConnect () {\n    this[kNetConnect] = false\n  }\n\n  // This is required to bypass issues caused by using global symbols - see:\n  // https://github.com/nodejs/undici/issues/1447\n  get isMockActive () {\n    return this[kIsMockActive]\n  }\n\n  [kMockAgentSet] (origin, dispatcher) {\n    this[kClients].set(origin, dispatcher)\n  }\n\n  [kFactory] (origin) {\n    const mockOptions = Object.assign({ agent: this }, this[kOptions])\n    return this[kOptions] && this[kOptions].connections === 1\n      ? new MockClient(origin, mockOptions)\n      : new MockPool(origin, mockOptions)\n  }\n\n  [kMockAgentGet] (origin) {\n    // First check if we can immediately find it\n    const client = this[kClients].get(origin)\n    if (client) {\n      return client\n    }\n\n    // If the origin is not a string create a dummy parent pool and return to user\n    if (typeof origin !== 'string') {\n      const dispatcher = this[kFactory]('http://localhost:9999')\n      this[kMockAgentSet](origin, dispatcher)\n      return dispatcher\n    }\n\n    // If we match, create a pool and assign the same dispatches\n    for (const [keyMatcher, nonExplicitDispatcher] of Array.from(this[kClients])) {\n      if (nonExplicitDispatcher && typeof keyMatcher !== 'string' && matchValue(keyMatcher, origin)) {\n        const dispatcher = this[kFactory](origin)\n        this[kMockAgentSet](origin, dispatcher)\n        dispatcher[kDispatches] = nonExplicitDispatcher[kDispatches]\n        return dispatcher\n      }\n    }\n  }\n\n  [kGetNetConnect] () {\n    return this[kNetConnect]\n  }\n\n  pendingInterceptors () {\n    const mockAgentClients = this[kClients]\n\n    return Array.from(mockAgentClients.entries())\n      .flatMap(([origin, scope]) => scope[kDispatches].map(dispatch => ({ ...dispatch, origin })))\n      .filter(({ pending }) => pending)\n  }\n\n  assertNoPendingInterceptors ({ pendingInterceptorsFormatter = new PendingInterceptorsFormatter() } = {}) {\n    const pending = this.pendingInterceptors()\n\n    if (pending.length === 0) {\n      return\n    }\n\n    const pluralizer = new Pluralizer('interceptor', 'interceptors').pluralize(pending.length)\n\n    throw new UndiciError(`\n${pluralizer.count} ${pluralizer.noun} ${pluralizer.is} pending:\n\n${pendingInterceptorsFormatter.format(pending)}\n`.trim())\n  }\n}\n\nmodule.exports = MockAgent\n", "'use strict'\n\n// We include a version number for the Dispatcher API. In case of breaking changes,\n// this version number must be increased to avoid conflicts.\nconst globalDispatcher = Symbol.for('undici.globalDispatcher.1')\nconst { InvalidArgumentError } = require('./core/errors')\nconst Agent = require('./dispatcher/agent')\n\nif (getGlobalDispatcher() === undefined) {\n  setGlobalDispatcher(new Agent())\n}\n\nfunction setGlobalDispatcher (agent) {\n  if (!agent || typeof agent.dispatch !== 'function') {\n    throw new InvalidArgumentError('Argument agent must implement Agent')\n  }\n  Object.defineProperty(globalThis, globalDispatcher, {\n    value: agent,\n    writable: true,\n    enumerable: false,\n    configurable: false\n  })\n}\n\nfunction getGlobalDispatcher () {\n  return globalThis[globalDispatcher]\n}\n\nmodule.exports = {\n  setGlobalDispatcher,\n  getGlobalDispatcher\n}\n", "'use strict'\n\nmodule.exports = class DecoratorHandler {\n  #handler\n\n  constructor (handler) {\n    if (typeof handler !== 'object' || handler === null) {\n      throw new TypeError('handler must be an object')\n    }\n    this.#handler = handler\n  }\n\n  onConnect (...args) {\n    return this.#handler.onConnect?.(...args)\n  }\n\n  onError (...args) {\n    return this.#handler.onError?.(...args)\n  }\n\n  onUpgrade (...args) {\n    return this.#handler.onUpgrade?.(...args)\n  }\n\n  onResponseStarted (...args) {\n    return this.#handler.onResponseStarted?.(...args)\n  }\n\n  onHeaders (...args) {\n    return this.#handler.onHeaders?.(...args)\n  }\n\n  onData (...args) {\n    return this.#handler.onData?.(...args)\n  }\n\n  onComplete (...args) {\n    return this.#handler.onComplete?.(...args)\n  }\n\n  onBodySent (...args) {\n    return this.#handler.onBodySent?.(...args)\n  }\n}\n", "'use strict'\nconst RedirectHandler = require('../handler/redirect-handler')\n\nmodule.exports = opts => {\n  const globalMaxRedirections = opts?.maxRedirections\n  return dispatch => {\n    return function redirectInterceptor (opts, handler) {\n      const { maxRedirections = globalMaxRedirections, ...baseOpts } = opts\n\n      if (!maxRedirections) {\n        return dispatch(opts, handler)\n      }\n\n      const redirectHandler = new RedirectHandler(\n        dispatch,\n        maxRedirections,\n        opts,\n        handler\n      )\n\n      return dispatch(baseOpts, redirectHandler)\n    }\n  }\n}\n", "'use strict'\nconst RetryHandler = require('../handler/retry-handler')\n\nmodule.exports = globalOpts => {\n  return dispatch => {\n    return function retryInterceptor (opts, handler) {\n      return dispatch(\n        opts,\n        new RetryHandler(\n          { ...opts, retryOptions: { ...globalOpts, ...opts.retryOptions } },\n          {\n            handler,\n            dispatch\n          }\n        )\n      )\n    }\n  }\n}\n", "'use strict'\n\nconst util = require('../core/util')\nconst { InvalidArgumentError, RequestAbortedError } = require('../core/errors')\nconst DecoratorHandler = require('../handler/decorator-handler')\n\nclass DumpHandler extends DecoratorHandler {\n  #maxSize = 1024 * 1024\n  #abort = null\n  #dumped = false\n  #aborted = false\n  #size = 0\n  #reason = null\n  #handler = null\n\n  constructor ({ maxSize }, handler) {\n    super(handler)\n\n    if (maxSize != null && (!Number.isFinite(maxSize) || maxSize < 1)) {\n      throw new InvalidArgumentError('maxSize must be a number greater than 0')\n    }\n\n    this.#maxSize = maxSize ?? this.#maxSize\n    this.#handler = handler\n  }\n\n  onConnect (abort) {\n    this.#abort = abort\n\n    this.#handler.onConnect(this.#customAbort.bind(this))\n  }\n\n  #customAbort (reason) {\n    this.#aborted = true\n    this.#reason = reason\n  }\n\n  // TODO: will require adjustment after new hooks are out\n  onHeaders (statusCode, rawHeaders, resume, statusMessage) {\n    const headers = util.parseHeaders(rawHeaders)\n    const contentLength = headers['content-length']\n\n    if (contentLength != null && contentLength > this.#maxSize) {\n      throw new RequestAbortedError(\n        `Response size (${contentLength}) larger than maxSize (${\n          this.#maxSize\n        })`\n      )\n    }\n\n    if (this.#aborted) {\n      return true\n    }\n\n    return this.#handler.onHeaders(\n      statusCode,\n      rawHeaders,\n      resume,\n      statusMessage\n    )\n  }\n\n  onError (err) {\n    if (this.#dumped) {\n      return\n    }\n\n    err = this.#reason ?? err\n\n    this.#handler.onError(err)\n  }\n\n  onData (chunk) {\n    this.#size = this.#size + chunk.length\n\n    if (this.#size >= this.#maxSize) {\n      this.#dumped = true\n\n      if (this.#aborted) {\n        this.#handler.onError(this.#reason)\n      } else {\n        this.#handler.onComplete([])\n      }\n    }\n\n    return true\n  }\n\n  onComplete (trailers) {\n    if (this.#dumped) {\n      return\n    }\n\n    if (this.#aborted) {\n      this.#handler.onError(this.reason)\n      return\n    }\n\n    this.#handler.onComplete(trailers)\n  }\n}\n\nfunction createDumpInterceptor (\n  { maxSize: defaultMaxSize } = {\n    maxSize: 1024 * 1024\n  }\n) {\n  return dispatch => {\n    return function Intercept (opts, handler) {\n      const { dumpMaxSize = defaultMaxSize } =\n        opts\n\n      const dumpHandler = new DumpHandler(\n        { maxSize: dumpMaxSize },\n        handler\n      )\n\n      return dispatch(opts, dumpHandler)\n    }\n  }\n}\n\nmodule.exports = createDumpInterceptor\n", "// https://github.com/Ethan-Arrowood/undici-fetch\n\n'use strict'\n\nconst { kConstruct } = require('../../core/symbols')\nconst { kEnumerableProperty } = require('../../core/util')\nconst {\n  iteratorMixin,\n  isValidHeaderName,\n  isValidHeaderValue\n} = require('./util')\nconst { webidl } = require('./webidl')\nconst assert = require('node:assert')\nconst util = require('node:util')\n\nconst kHeadersMap = Symbol('headers map')\nconst kHeadersSortedMap = Symbol('headers map sorted')\n\n/**\n * @param {number} code\n */\nfunction isHTTPWhiteSpaceCharCode (code) {\n  return code === 0x00a || code === 0x00d || code === 0x009 || code === 0x020\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#concept-header-value-normalize\n * @param {string} potentialValue\n */\nfunction headerValueNormalize (potentialValue) {\n  //  To normalize a byte sequence potentialValue, remove\n  //  any leading and trailing HTTP whitespace bytes from\n  //  potentialValue.\n  let i = 0; let j = potentialValue.length\n\n  while (j > i && isHTTPWhiteSpaceCharCode(potentialValue.charCodeAt(j - 1))) --j\n  while (j > i && isHTTPWhiteSpaceCharCode(potentialValue.charCodeAt(i))) ++i\n\n  return i === 0 && j === potentialValue.length ? potentialValue : potentialValue.substring(i, j)\n}\n\nfunction fill (headers, object) {\n  // To fill a Headers object headers with a given object object, run these steps:\n\n  // 1. If object is a sequence, then for each header in object:\n  // Note: webidl conversion to array has already been done.\n  if (Array.isArray(object)) {\n    for (let i = 0; i < object.length; ++i) {\n      const header = object[i]\n      // 1. If header does not contain exactly two items, then throw a TypeError.\n      if (header.length !== 2) {\n        throw webidl.errors.exception({\n          header: 'Headers constructor',\n          message: `expected name/value pair to be length 2, found ${header.length}.`\n        })\n      }\n\n      // 2. Append (header\u2019s first item, header\u2019s second item) to headers.\n      appendHeader(headers, header[0], header[1])\n    }\n  } else if (typeof object === 'object' && object !== null) {\n    // Note: null should throw\n\n    // 2. Otherwise, object is a record, then for each key \u2192 value in object,\n    //    append (key, value) to headers\n    const keys = Object.keys(object)\n    for (let i = 0; i < keys.length; ++i) {\n      appendHeader(headers, keys[i], object[keys[i]])\n    }\n  } else {\n    throw webidl.errors.conversionFailed({\n      prefix: 'Headers constructor',\n      argument: 'Argument 1',\n      types: ['sequence<sequence<ByteString>>', 'record<ByteString, ByteString>']\n    })\n  }\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#concept-headers-append\n */\nfunction appendHeader (headers, name, value) {\n  // 1. Normalize value.\n  value = headerValueNormalize(value)\n\n  // 2. If name is not a header name or value is not a\n  //    header value, then throw a TypeError.\n  if (!isValidHeaderName(name)) {\n    throw webidl.errors.invalidArgument({\n      prefix: 'Headers.append',\n      value: name,\n      type: 'header name'\n    })\n  } else if (!isValidHeaderValue(value)) {\n    throw webidl.errors.invalidArgument({\n      prefix: 'Headers.append',\n      value,\n      type: 'header value'\n    })\n  }\n\n  // 3. If headers\u2019s guard is \"immutable\", then throw a TypeError.\n  // 4. Otherwise, if headers\u2019s guard is \"request\" and name is a\n  //    forbidden header name, return.\n  // 5. Otherwise, if headers\u2019s guard is \"request-no-cors\":\n  //    TODO\n  // Note: undici does not implement forbidden header names\n  if (getHeadersGuard(headers) === 'immutable') {\n    throw new TypeError('immutable')\n  }\n\n  // 6. Otherwise, if headers\u2019s guard is \"response\" and name is a\n  //    forbidden response-header name, return.\n\n  // 7. Append (name, value) to headers\u2019s header list.\n  return getHeadersList(headers).append(name, value, false)\n\n  // 8. If headers\u2019s guard is \"request-no-cors\", then remove\n  //    privileged no-CORS request headers from headers\n}\n\nfunction compareHeaderName (a, b) {\n  return a[0] < b[0] ? -1 : 1\n}\n\nclass HeadersList {\n  /** @type {[string, string][]|null} */\n  cookies = null\n\n  constructor (init) {\n    if (init instanceof HeadersList) {\n      this[kHeadersMap] = new Map(init[kHeadersMap])\n      this[kHeadersSortedMap] = init[kHeadersSortedMap]\n      this.cookies = init.cookies === null ? null : [...init.cookies]\n    } else {\n      this[kHeadersMap] = new Map(init)\n      this[kHeadersSortedMap] = null\n    }\n  }\n\n  /**\n   * @see https://fetch.spec.whatwg.org/#header-list-contains\n   * @param {string} name\n   * @param {boolean} isLowerCase\n   */\n  contains (name, isLowerCase) {\n    // A header list list contains a header name name if list\n    // contains a header whose name is a byte-case-insensitive\n    // match for name.\n\n    return this[kHeadersMap].has(isLowerCase ? name : name.toLowerCase())\n  }\n\n  clear () {\n    this[kHeadersMap].clear()\n    this[kHeadersSortedMap] = null\n    this.cookies = null\n  }\n\n  /**\n   * @see https://fetch.spec.whatwg.org/#concept-header-list-append\n   * @param {string} name\n   * @param {string} value\n   * @param {boolean} isLowerCase\n   */\n  append (name, value, isLowerCase) {\n    this[kHeadersSortedMap] = null\n\n    // 1. If list contains name, then set name to the first such\n    //    header\u2019s name.\n    const lowercaseName = isLowerCase ? name : name.toLowerCase()\n    const exists = this[kHeadersMap].get(lowercaseName)\n\n    // 2. Append (name, value) to list.\n    if (exists) {\n      const delimiter = lowercaseName === 'cookie' ? '; ' : ', '\n      this[kHeadersMap].set(lowercaseName, {\n        name: exists.name,\n        value: `${exists.value}${delimiter}${value}`\n      })\n    } else {\n      this[kHeadersMap].set(lowercaseName, { name, value })\n    }\n\n    if (lowercaseName === 'set-cookie') {\n      (this.cookies ??= []).push(value)\n    }\n  }\n\n  /**\n   * @see https://fetch.spec.whatwg.org/#concept-header-list-set\n   * @param {string} name\n   * @param {string} value\n   * @param {boolean} isLowerCase\n   */\n  set (name, value, isLowerCase) {\n    this[kHeadersSortedMap] = null\n    const lowercaseName = isLowerCase ? name : name.toLowerCase()\n\n    if (lowercaseName === 'set-cookie') {\n      this.cookies = [value]\n    }\n\n    // 1. If list contains name, then set the value of\n    //    the first such header to value and remove the\n    //    others.\n    // 2. Otherwise, append header (name, value) to list.\n    this[kHeadersMap].set(lowercaseName, { name, value })\n  }\n\n  /**\n   * @see https://fetch.spec.whatwg.org/#concept-header-list-delete\n   * @param {string} name\n   * @param {boolean} isLowerCase\n   */\n  delete (name, isLowerCase) {\n    this[kHeadersSortedMap] = null\n    if (!isLowerCase) name = name.toLowerCase()\n\n    if (name === 'set-cookie') {\n      this.cookies = null\n    }\n\n    this[kHeadersMap].delete(name)\n  }\n\n  /**\n   * @see https://fetch.spec.whatwg.org/#concept-header-list-get\n   * @param {string} name\n   * @param {boolean} isLowerCase\n   * @returns {string | null}\n   */\n  get (name, isLowerCase) {\n    // 1. If list does not contain name, then return null.\n    // 2. Return the values of all headers in list whose name\n    //    is a byte-case-insensitive match for name,\n    //    separated from each other by 0x2C 0x20, in order.\n    return this[kHeadersMap].get(isLowerCase ? name : name.toLowerCase())?.value ?? null\n  }\n\n  * [Symbol.iterator] () {\n    // use the lowercased name\n    for (const { 0: name, 1: { value } } of this[kHeadersMap]) {\n      yield [name, value]\n    }\n  }\n\n  get entries () {\n    const headers = {}\n\n    if (this[kHeadersMap].size !== 0) {\n      for (const { name, value } of this[kHeadersMap].values()) {\n        headers[name] = value\n      }\n    }\n\n    return headers\n  }\n\n  rawValues () {\n    return this[kHeadersMap].values()\n  }\n\n  get entriesList () {\n    const headers = []\n\n    if (this[kHeadersMap].size !== 0) {\n      for (const { 0: lowerName, 1: { name, value } } of this[kHeadersMap]) {\n        if (lowerName === 'set-cookie') {\n          for (const cookie of this.cookies) {\n            headers.push([name, cookie])\n          }\n        } else {\n          headers.push([name, value])\n        }\n      }\n    }\n\n    return headers\n  }\n\n  // https://fetch.spec.whatwg.org/#convert-header-names-to-a-sorted-lowercase-set\n  toSortedArray () {\n    const size = this[kHeadersMap].size\n    const array = new Array(size)\n    // In most cases, you will use the fast-path.\n    // fast-path: Use binary insertion sort for small arrays.\n    if (size <= 32) {\n      if (size === 0) {\n        // If empty, it is an empty array. To avoid the first index assignment.\n        return array\n      }\n      // Improve performance by unrolling loop and avoiding double-loop.\n      // Double-loop-less version of the binary insertion sort.\n      const iterator = this[kHeadersMap][Symbol.iterator]()\n      const firstValue = iterator.next().value\n      // set [name, value] to first index.\n      array[0] = [firstValue[0], firstValue[1].value]\n      // https://fetch.spec.whatwg.org/#concept-header-list-sort-and-combine\n      // 3.2.2. Assert: value is non-null.\n      assert(firstValue[1].value !== null)\n      for (\n        let i = 1, j = 0, right = 0, left = 0, pivot = 0, x, value;\n        i < size;\n        ++i\n      ) {\n        // get next value\n        value = iterator.next().value\n        // set [name, value] to current index.\n        x = array[i] = [value[0], value[1].value]\n        // https://fetch.spec.whatwg.org/#concept-header-list-sort-and-combine\n        // 3.2.2. Assert: value is non-null.\n        assert(x[1] !== null)\n        left = 0\n        right = i\n        // binary search\n        while (left < right) {\n          // middle index\n          pivot = left + ((right - left) >> 1)\n          // compare header name\n          if (array[pivot][0] <= x[0]) {\n            left = pivot + 1\n          } else {\n            right = pivot\n          }\n        }\n        if (i !== pivot) {\n          j = i\n          while (j > left) {\n            array[j] = array[--j]\n          }\n          array[left] = x\n        }\n      }\n      /* c8 ignore next 4 */\n      if (!iterator.next().done) {\n        // This is for debugging and will never be called.\n        throw new TypeError('Unreachable')\n      }\n      return array\n    } else {\n      // This case would be a rare occurrence.\n      // slow-path: fallback\n      let i = 0\n      for (const { 0: name, 1: { value } } of this[kHeadersMap]) {\n        array[i++] = [name, value]\n        // https://fetch.spec.whatwg.org/#concept-header-list-sort-and-combine\n        // 3.2.2. Assert: value is non-null.\n        assert(value !== null)\n      }\n      return array.sort(compareHeaderName)\n    }\n  }\n}\n\n// https://fetch.spec.whatwg.org/#headers-class\nclass Headers {\n  #guard\n  #headersList\n\n  constructor (init = undefined) {\n    if (init === kConstruct) {\n      return\n    }\n\n    this.#headersList = new HeadersList()\n\n    // The new Headers(init) constructor steps are:\n\n    // 1. Set this\u2019s guard to \"none\".\n    this.#guard = 'none'\n\n    // 2. If init is given, then fill this with init.\n    if (init !== undefined) {\n      init = webidl.converters.HeadersInit(init, 'Headers contructor', 'init')\n      fill(this, init)\n    }\n  }\n\n  // https://fetch.spec.whatwg.org/#dom-headers-append\n  append (name, value) {\n    webidl.brandCheck(this, Headers)\n\n    webidl.argumentLengthCheck(arguments, 2, 'Headers.append')\n\n    const prefix = 'Headers.append'\n    name = webidl.converters.ByteString(name, prefix, 'name')\n    value = webidl.converters.ByteString(value, prefix, 'value')\n\n    return appendHeader(this, name, value)\n  }\n\n  // https://fetch.spec.whatwg.org/#dom-headers-delete\n  delete (name) {\n    webidl.brandCheck(this, Headers)\n\n    webidl.argumentLengthCheck(arguments, 1, 'Headers.delete')\n\n    const prefix = 'Headers.delete'\n    name = webidl.converters.ByteString(name, prefix, 'name')\n\n    // 1. If name is not a header name, then throw a TypeError.\n    if (!isValidHeaderName(name)) {\n      throw webidl.errors.invalidArgument({\n        prefix: 'Headers.delete',\n        value: name,\n        type: 'header name'\n      })\n    }\n\n    // 2. If this\u2019s guard is \"immutable\", then throw a TypeError.\n    // 3. Otherwise, if this\u2019s guard is \"request\" and name is a\n    //    forbidden header name, return.\n    // 4. Otherwise, if this\u2019s guard is \"request-no-cors\", name\n    //    is not a no-CORS-safelisted request-header name, and\n    //    name is not a privileged no-CORS request-header name,\n    //    return.\n    // 5. Otherwise, if this\u2019s guard is \"response\" and name is\n    //    a forbidden response-header name, return.\n    // Note: undici does not implement forbidden header names\n    if (this.#guard === 'immutable') {\n      throw new TypeError('immutable')\n    }\n\n    // 6. If this\u2019s header list does not contain name, then\n    //    return.\n    if (!this.#headersList.contains(name, false)) {\n      return\n    }\n\n    // 7. Delete name from this\u2019s header list.\n    // 8. If this\u2019s guard is \"request-no-cors\", then remove\n    //    privileged no-CORS request headers from this.\n    this.#headersList.delete(name, false)\n  }\n\n  // https://fetch.spec.whatwg.org/#dom-headers-get\n  get (name) {\n    webidl.brandCheck(this, Headers)\n\n    webidl.argumentLengthCheck(arguments, 1, 'Headers.get')\n\n    const prefix = 'Headers.get'\n    name = webidl.converters.ByteString(name, prefix, 'name')\n\n    // 1. If name is not a header name, then throw a TypeError.\n    if (!isValidHeaderName(name)) {\n      throw webidl.errors.invalidArgument({\n        prefix,\n        value: name,\n        type: 'header name'\n      })\n    }\n\n    // 2. Return the result of getting name from this\u2019s header\n    //    list.\n    return this.#headersList.get(name, false)\n  }\n\n  // https://fetch.spec.whatwg.org/#dom-headers-has\n  has (name) {\n    webidl.brandCheck(this, Headers)\n\n    webidl.argumentLengthCheck(arguments, 1, 'Headers.has')\n\n    const prefix = 'Headers.has'\n    name = webidl.converters.ByteString(name, prefix, 'name')\n\n    // 1. If name is not a header name, then throw a TypeError.\n    if (!isValidHeaderName(name)) {\n      throw webidl.errors.invalidArgument({\n        prefix,\n        value: name,\n        type: 'header name'\n      })\n    }\n\n    // 2. Return true if this\u2019s header list contains name;\n    //    otherwise false.\n    return this.#headersList.contains(name, false)\n  }\n\n  // https://fetch.spec.whatwg.org/#dom-headers-set\n  set (name, value) {\n    webidl.brandCheck(this, Headers)\n\n    webidl.argumentLengthCheck(arguments, 2, 'Headers.set')\n\n    const prefix = 'Headers.set'\n    name = webidl.converters.ByteString(name, prefix, 'name')\n    value = webidl.converters.ByteString(value, prefix, 'value')\n\n    // 1. Normalize value.\n    value = headerValueNormalize(value)\n\n    // 2. If name is not a header name or value is not a\n    //    header value, then throw a TypeError.\n    if (!isValidHeaderName(name)) {\n      throw webidl.errors.invalidArgument({\n        prefix,\n        value: name,\n        type: 'header name'\n      })\n    } else if (!isValidHeaderValue(value)) {\n      throw webidl.errors.invalidArgument({\n        prefix,\n        value,\n        type: 'header value'\n      })\n    }\n\n    // 3. If this\u2019s guard is \"immutable\", then throw a TypeError.\n    // 4. Otherwise, if this\u2019s guard is \"request\" and name is a\n    //    forbidden header name, return.\n    // 5. Otherwise, if this\u2019s guard is \"request-no-cors\" and\n    //    name/value is not a no-CORS-safelisted request-header,\n    //    return.\n    // 6. Otherwise, if this\u2019s guard is \"response\" and name is a\n    //    forbidden response-header name, return.\n    // Note: undici does not implement forbidden header names\n    if (this.#guard === 'immutable') {\n      throw new TypeError('immutable')\n    }\n\n    // 7. Set (name, value) in this\u2019s header list.\n    // 8. If this\u2019s guard is \"request-no-cors\", then remove\n    //    privileged no-CORS request headers from this\n    this.#headersList.set(name, value, false)\n  }\n\n  // https://fetch.spec.whatwg.org/#dom-headers-getsetcookie\n  getSetCookie () {\n    webidl.brandCheck(this, Headers)\n\n    // 1. If this\u2019s header list does not contain `Set-Cookie`, then return \u00AB \u00BB.\n    // 2. Return the values of all headers in this\u2019s header list whose name is\n    //    a byte-case-insensitive match for `Set-Cookie`, in order.\n\n    const list = this.#headersList.cookies\n\n    if (list) {\n      return [...list]\n    }\n\n    return []\n  }\n\n  // https://fetch.spec.whatwg.org/#concept-header-list-sort-and-combine\n  get [kHeadersSortedMap] () {\n    if (this.#headersList[kHeadersSortedMap]) {\n      return this.#headersList[kHeadersSortedMap]\n    }\n\n    // 1. Let headers be an empty list of headers with the key being the name\n    //    and value the value.\n    const headers = []\n\n    // 2. Let names be the result of convert header names to a sorted-lowercase\n    //    set with all the names of the headers in list.\n    const names = this.#headersList.toSortedArray()\n\n    const cookies = this.#headersList.cookies\n\n    // fast-path\n    if (cookies === null || cookies.length === 1) {\n      // Note: The non-null assertion of value has already been done by `HeadersList#toSortedArray`\n      return (this.#headersList[kHeadersSortedMap] = names)\n    }\n\n    // 3. For each name of names:\n    for (let i = 0; i < names.length; ++i) {\n      const { 0: name, 1: value } = names[i]\n      // 1. If name is `set-cookie`, then:\n      if (name === 'set-cookie') {\n        // 1. Let values be a list of all values of headers in list whose name\n        //    is a byte-case-insensitive match for name, in order.\n\n        // 2. For each value of values:\n        // 1. Append (name, value) to headers.\n        for (let j = 0; j < cookies.length; ++j) {\n          headers.push([name, cookies[j]])\n        }\n      } else {\n        // 2. Otherwise:\n\n        // 1. Let value be the result of getting name from list.\n\n        // 2. Assert: value is non-null.\n        // Note: This operation was done by `HeadersList#toSortedArray`.\n\n        // 3. Append (name, value) to headers.\n        headers.push([name, value])\n      }\n    }\n\n    // 4. Return headers.\n    return (this.#headersList[kHeadersSortedMap] = headers)\n  }\n\n  [util.inspect.custom] (depth, options) {\n    options.depth ??= depth\n\n    return `Headers ${util.formatWithOptions(options, this.#headersList.entries)}`\n  }\n\n  static getHeadersGuard (o) {\n    return o.#guard\n  }\n\n  static setHeadersGuard (o, guard) {\n    o.#guard = guard\n  }\n\n  static getHeadersList (o) {\n    return o.#headersList\n  }\n\n  static setHeadersList (o, list) {\n    o.#headersList = list\n  }\n}\n\nconst { getHeadersGuard, setHeadersGuard, getHeadersList, setHeadersList } = Headers\nReflect.deleteProperty(Headers, 'getHeadersGuard')\nReflect.deleteProperty(Headers, 'setHeadersGuard')\nReflect.deleteProperty(Headers, 'getHeadersList')\nReflect.deleteProperty(Headers, 'setHeadersList')\n\niteratorMixin('Headers', Headers, kHeadersSortedMap, 0, 1)\n\nObject.defineProperties(Headers.prototype, {\n  append: kEnumerableProperty,\n  delete: kEnumerableProperty,\n  get: kEnumerableProperty,\n  has: kEnumerableProperty,\n  set: kEnumerableProperty,\n  getSetCookie: kEnumerableProperty,\n  [Symbol.toStringTag]: {\n    value: 'Headers',\n    configurable: true\n  },\n  [util.inspect.custom]: {\n    enumerable: false\n  },\n  // Compatibility for global headers\n  [Symbol('headers list')]: {\n    configurable: false,\n    enumerable: false,\n    get: function () {\n      return getHeadersList(this)\n    }\n  }\n})\n\nwebidl.converters.HeadersInit = function (V, prefix, argument) {\n  if (webidl.util.Type(V) === 'Object') {\n    const iterator = Reflect.get(V, Symbol.iterator)\n\n    // A work-around to ensure we send the properly-cased Headers when V is a Headers object.\n    // Read https://github.com/nodejs/undici/pull/3159#issuecomment-2075537226 before touching, please.\n    if (!util.types.isProxy(V) && iterator === Headers.prototype.entries) { // Headers object\n      try {\n        return getHeadersList(V).entriesList\n      } catch {\n        // fall-through\n      }\n    }\n\n    if (typeof iterator === 'function') {\n      return webidl.converters['sequence<sequence<ByteString>>'](V, prefix, argument, iterator.bind(V))\n    }\n\n    return webidl.converters['record<ByteString, ByteString>'](V, prefix, argument)\n  }\n\n  throw webidl.errors.conversionFailed({\n    prefix: 'Headers constructor',\n    argument: 'Argument 1',\n    types: ['sequence<sequence<ByteString>>', 'record<ByteString, ByteString>']\n  })\n}\n\nmodule.exports = {\n  fill,\n  // for test.\n  compareHeaderName,\n  Headers,\n  HeadersList,\n  getHeadersGuard,\n  setHeadersGuard,\n  setHeadersList,\n  getHeadersList\n}\n", "'use strict'\n\nconst { Headers, HeadersList, fill, getHeadersGuard, setHeadersGuard, setHeadersList } = require('./headers')\nconst { extractBody, cloneBody, mixinBody } = require('./body')\nconst util = require('../../core/util')\nconst nodeUtil = require('node:util')\nconst { kEnumerableProperty } = util\nconst {\n  isValidReasonPhrase,\n  isCancelled,\n  isAborted,\n  isBlobLike,\n  serializeJavascriptValueToJSONString,\n  isErrorLike,\n  isomorphicEncode,\n  environmentSettingsObject: relevantRealm\n} = require('./util')\nconst {\n  redirectStatusSet,\n  nullBodyStatus\n} = require('./constants')\nconst { kState, kHeaders } = require('./symbols')\nconst { webidl } = require('./webidl')\nconst { FormData } = require('./formdata')\nconst { URLSerializer } = require('./data-url')\nconst { kConstruct } = require('../../core/symbols')\nconst assert = require('node:assert')\nconst { types } = require('node:util')\nconst { isDisturbed, isErrored } = require('node:stream')\n\nconst textEncoder = new TextEncoder('utf-8')\n\nconst hasFinalizationRegistry = globalThis.FinalizationRegistry && process.version.indexOf('v18') !== 0\nlet registry\n\nif (hasFinalizationRegistry) {\n  registry = new FinalizationRegistry((stream) => {\n    if (!stream.locked && !isDisturbed(stream) && !isErrored(stream)) {\n      stream.cancel('Response object has been garbage collected').catch(noop)\n    }\n  })\n}\n\nfunction noop () {}\n\n// https://fetch.spec.whatwg.org/#response-class\nclass Response {\n  // Creates network error Response.\n  static error () {\n    // The static error() method steps are to return the result of creating a\n    // Response object, given a new network error, \"immutable\", and this\u2019s\n    // relevant Realm.\n    const responseObject = fromInnerResponse(makeNetworkError(), 'immutable')\n\n    return responseObject\n  }\n\n  // https://fetch.spec.whatwg.org/#dom-response-json\n  static json (data, init = {}) {\n    webidl.argumentLengthCheck(arguments, 1, 'Response.json')\n\n    if (init !== null) {\n      init = webidl.converters.ResponseInit(init)\n    }\n\n    // 1. Let bytes the result of running serialize a JavaScript value to JSON bytes on data.\n    const bytes = textEncoder.encode(\n      serializeJavascriptValueToJSONString(data)\n    )\n\n    // 2. Let body be the result of extracting bytes.\n    const body = extractBody(bytes)\n\n    // 3. Let responseObject be the result of creating a Response object, given a new response,\n    //    \"response\", and this\u2019s relevant Realm.\n    const responseObject = fromInnerResponse(makeResponse({}), 'response')\n\n    // 4. Perform initialize a response given responseObject, init, and (body, \"application/json\").\n    initializeResponse(responseObject, init, { body: body[0], type: 'application/json' })\n\n    // 5. Return responseObject.\n    return responseObject\n  }\n\n  // Creates a redirect Response that redirects to url with status status.\n  static redirect (url, status = 302) {\n    webidl.argumentLengthCheck(arguments, 1, 'Response.redirect')\n\n    url = webidl.converters.USVString(url)\n    status = webidl.converters['unsigned short'](status)\n\n    // 1. Let parsedURL be the result of parsing url with current settings\n    // object\u2019s API base URL.\n    // 2. If parsedURL is failure, then throw a TypeError.\n    // TODO: base-URL?\n    let parsedURL\n    try {\n      parsedURL = new URL(url, relevantRealm.settingsObject.baseUrl)\n    } catch (err) {\n      throw new TypeError(`Failed to parse URL from ${url}`, { cause: err })\n    }\n\n    // 3. If status is not a redirect status, then throw a RangeError.\n    if (!redirectStatusSet.has(status)) {\n      throw new RangeError(`Invalid status code ${status}`)\n    }\n\n    // 4. Let responseObject be the result of creating a Response object,\n    // given a new response, \"immutable\", and this\u2019s relevant Realm.\n    const responseObject = fromInnerResponse(makeResponse({}), 'immutable')\n\n    // 5. Set responseObject\u2019s response\u2019s status to status.\n    responseObject[kState].status = status\n\n    // 6. Let value be parsedURL, serialized and isomorphic encoded.\n    const value = isomorphicEncode(URLSerializer(parsedURL))\n\n    // 7. Append `Location`/value to responseObject\u2019s response\u2019s header list.\n    responseObject[kState].headersList.append('location', value, true)\n\n    // 8. Return responseObject.\n    return responseObject\n  }\n\n  // https://fetch.spec.whatwg.org/#dom-response\n  constructor (body = null, init = {}) {\n    if (body === kConstruct) {\n      return\n    }\n\n    if (body !== null) {\n      body = webidl.converters.BodyInit(body)\n    }\n\n    init = webidl.converters.ResponseInit(init)\n\n    // 1. Set this\u2019s response to a new response.\n    this[kState] = makeResponse({})\n\n    // 2. Set this\u2019s headers to a new Headers object with this\u2019s relevant\n    // Realm, whose header list is this\u2019s response\u2019s header list and guard\n    // is \"response\".\n    this[kHeaders] = new Headers(kConstruct)\n    setHeadersGuard(this[kHeaders], 'response')\n    setHeadersList(this[kHeaders], this[kState].headersList)\n\n    // 3. Let bodyWithType be null.\n    let bodyWithType = null\n\n    // 4. If body is non-null, then set bodyWithType to the result of extracting body.\n    if (body != null) {\n      const [extractedBody, type] = extractBody(body)\n      bodyWithType = { body: extractedBody, type }\n    }\n\n    // 5. Perform initialize a response given this, init, and bodyWithType.\n    initializeResponse(this, init, bodyWithType)\n  }\n\n  // Returns response\u2019s type, e.g., \"cors\".\n  get type () {\n    webidl.brandCheck(this, Response)\n\n    // The type getter steps are to return this\u2019s response\u2019s type.\n    return this[kState].type\n  }\n\n  // Returns response\u2019s URL, if it has one; otherwise the empty string.\n  get url () {\n    webidl.brandCheck(this, Response)\n\n    const urlList = this[kState].urlList\n\n    // The url getter steps are to return the empty string if this\u2019s\n    // response\u2019s URL is null; otherwise this\u2019s response\u2019s URL,\n    // serialized with exclude fragment set to true.\n    const url = urlList[urlList.length - 1] ?? null\n\n    if (url === null) {\n      return ''\n    }\n\n    return URLSerializer(url, true)\n  }\n\n  // Returns whether response was obtained through a redirect.\n  get redirected () {\n    webidl.brandCheck(this, Response)\n\n    // The redirected getter steps are to return true if this\u2019s response\u2019s URL\n    // list has more than one item; otherwise false.\n    return this[kState].urlList.length > 1\n  }\n\n  // Returns response\u2019s status.\n  get status () {\n    webidl.brandCheck(this, Response)\n\n    // The status getter steps are to return this\u2019s response\u2019s status.\n    return this[kState].status\n  }\n\n  // Returns whether response\u2019s status is an ok status.\n  get ok () {\n    webidl.brandCheck(this, Response)\n\n    // The ok getter steps are to return true if this\u2019s response\u2019s status is an\n    // ok status; otherwise false.\n    return this[kState].status >= 200 && this[kState].status <= 299\n  }\n\n  // Returns response\u2019s status message.\n  get statusText () {\n    webidl.brandCheck(this, Response)\n\n    // The statusText getter steps are to return this\u2019s response\u2019s status\n    // message.\n    return this[kState].statusText\n  }\n\n  // Returns response\u2019s headers as Headers.\n  get headers () {\n    webidl.brandCheck(this, Response)\n\n    // The headers getter steps are to return this\u2019s headers.\n    return this[kHeaders]\n  }\n\n  get body () {\n    webidl.brandCheck(this, Response)\n\n    return this[kState].body ? this[kState].body.stream : null\n  }\n\n  get bodyUsed () {\n    webidl.brandCheck(this, Response)\n\n    return !!this[kState].body && util.isDisturbed(this[kState].body.stream)\n  }\n\n  // Returns a clone of response.\n  clone () {\n    webidl.brandCheck(this, Response)\n\n    // 1. If this is unusable, then throw a TypeError.\n    if (this.bodyUsed || this.body?.locked) {\n      throw webidl.errors.exception({\n        header: 'Response.clone',\n        message: 'Body has already been consumed.'\n      })\n    }\n\n    // 2. Let clonedResponse be the result of cloning this\u2019s response.\n    const clonedResponse = cloneResponse(this[kState])\n\n    // 3. Return the result of creating a Response object, given\n    // clonedResponse, this\u2019s headers\u2019s guard, and this\u2019s relevant Realm.\n    return fromInnerResponse(clonedResponse, getHeadersGuard(this[kHeaders]))\n  }\n\n  [nodeUtil.inspect.custom] (depth, options) {\n    if (options.depth === null) {\n      options.depth = 2\n    }\n\n    options.colors ??= true\n\n    const properties = {\n      status: this.status,\n      statusText: this.statusText,\n      headers: this.headers,\n      body: this.body,\n      bodyUsed: this.bodyUsed,\n      ok: this.ok,\n      redirected: this.redirected,\n      type: this.type,\n      url: this.url\n    }\n\n    return `Response ${nodeUtil.formatWithOptions(options, properties)}`\n  }\n}\n\nmixinBody(Response)\n\nObject.defineProperties(Response.prototype, {\n  type: kEnumerableProperty,\n  url: kEnumerableProperty,\n  status: kEnumerableProperty,\n  ok: kEnumerableProperty,\n  redirected: kEnumerableProperty,\n  statusText: kEnumerableProperty,\n  headers: kEnumerableProperty,\n  clone: kEnumerableProperty,\n  body: kEnumerableProperty,\n  bodyUsed: kEnumerableProperty,\n  [Symbol.toStringTag]: {\n    value: 'Response',\n    configurable: true\n  }\n})\n\nObject.defineProperties(Response, {\n  json: kEnumerableProperty,\n  redirect: kEnumerableProperty,\n  error: kEnumerableProperty\n})\n\n// https://fetch.spec.whatwg.org/#concept-response-clone\nfunction cloneResponse (response) {\n  // To clone a response response, run these steps:\n\n  // 1. If response is a filtered response, then return a new identical\n  // filtered response whose internal response is a clone of response\u2019s\n  // internal response.\n  if (response.internalResponse) {\n    return filterResponse(\n      cloneResponse(response.internalResponse),\n      response.type\n    )\n  }\n\n  // 2. Let newResponse be a copy of response, except for its body.\n  const newResponse = makeResponse({ ...response, body: null })\n\n  // 3. If response\u2019s body is non-null, then set newResponse\u2019s body to the\n  // result of cloning response\u2019s body.\n  if (response.body != null) {\n    newResponse.body = cloneBody(response.body)\n  }\n\n  // 4. Return newResponse.\n  return newResponse\n}\n\nfunction makeResponse (init) {\n  return {\n    aborted: false,\n    rangeRequested: false,\n    timingAllowPassed: false,\n    requestIncludesCredentials: false,\n    type: 'default',\n    status: 200,\n    timingInfo: null,\n    cacheState: '',\n    statusText: '',\n    ...init,\n    headersList: init?.headersList\n      ? new HeadersList(init?.headersList)\n      : new HeadersList(),\n    urlList: init?.urlList ? [...init.urlList] : []\n  }\n}\n\nfunction makeNetworkError (reason) {\n  const isError = isErrorLike(reason)\n  return makeResponse({\n    type: 'error',\n    status: 0,\n    error: isError\n      ? reason\n      : new Error(reason ? String(reason) : reason),\n    aborted: reason && reason.name === 'AbortError'\n  })\n}\n\n// @see https://fetch.spec.whatwg.org/#concept-network-error\nfunction isNetworkError (response) {\n  return (\n    // A network error is a response whose type is \"error\",\n    response.type === 'error' &&\n    // status is 0\n    response.status === 0\n  )\n}\n\nfunction makeFilteredResponse (response, state) {\n  state = {\n    internalResponse: response,\n    ...state\n  }\n\n  return new Proxy(response, {\n    get (target, p) {\n      return p in state ? state[p] : target[p]\n    },\n    set (target, p, value) {\n      assert(!(p in state))\n      target[p] = value\n      return true\n    }\n  })\n}\n\n// https://fetch.spec.whatwg.org/#concept-filtered-response\nfunction filterResponse (response, type) {\n  // Set response to the following filtered response with response as its\n  // internal response, depending on request\u2019s response tainting:\n  if (type === 'basic') {\n    // A basic filtered response is a filtered response whose type is \"basic\"\n    // and header list excludes any headers in internal response\u2019s header list\n    // whose name is a forbidden response-header name.\n\n    // Note: undici does not implement forbidden response-header names\n    return makeFilteredResponse(response, {\n      type: 'basic',\n      headersList: response.headersList\n    })\n  } else if (type === 'cors') {\n    // A CORS filtered response is a filtered response whose type is \"cors\"\n    // and header list excludes any headers in internal response\u2019s header\n    // list whose name is not a CORS-safelisted response-header name, given\n    // internal response\u2019s CORS-exposed header-name list.\n\n    // Note: undici does not implement CORS-safelisted response-header names\n    return makeFilteredResponse(response, {\n      type: 'cors',\n      headersList: response.headersList\n    })\n  } else if (type === 'opaque') {\n    // An opaque filtered response is a filtered response whose type is\n    // \"opaque\", URL list is the empty list, status is 0, status message\n    // is the empty byte sequence, header list is empty, and body is null.\n\n    return makeFilteredResponse(response, {\n      type: 'opaque',\n      urlList: Object.freeze([]),\n      status: 0,\n      statusText: '',\n      body: null\n    })\n  } else if (type === 'opaqueredirect') {\n    // An opaque-redirect filtered response is a filtered response whose type\n    // is \"opaqueredirect\", status is 0, status message is the empty byte\n    // sequence, header list is empty, and body is null.\n\n    return makeFilteredResponse(response, {\n      type: 'opaqueredirect',\n      status: 0,\n      statusText: '',\n      headersList: [],\n      body: null\n    })\n  } else {\n    assert(false)\n  }\n}\n\n// https://fetch.spec.whatwg.org/#appropriate-network-error\nfunction makeAppropriateNetworkError (fetchParams, err = null) {\n  // 1. Assert: fetchParams is canceled.\n  assert(isCancelled(fetchParams))\n\n  // 2. Return an aborted network error if fetchParams is aborted;\n  // otherwise return a network error.\n  return isAborted(fetchParams)\n    ? makeNetworkError(Object.assign(new DOMException('The operation was aborted.', 'AbortError'), { cause: err }))\n    : makeNetworkError(Object.assign(new DOMException('Request was cancelled.'), { cause: err }))\n}\n\n// https://whatpr.org/fetch/1392.html#initialize-a-response\nfunction initializeResponse (response, init, body) {\n  // 1. If init[\"status\"] is not in the range 200 to 599, inclusive, then\n  //    throw a RangeError.\n  if (init.status !== null && (init.status < 200 || init.status > 599)) {\n    throw new RangeError('init[\"status\"] must be in the range of 200 to 599, inclusive.')\n  }\n\n  // 2. If init[\"statusText\"] does not match the reason-phrase token production,\n  //    then throw a TypeError.\n  if ('statusText' in init && init.statusText != null) {\n    // See, https://datatracker.ietf.org/doc/html/rfc7230#section-3.1.2:\n    //   reason-phrase  = *( HTAB / SP / VCHAR / obs-text )\n    if (!isValidReasonPhrase(String(init.statusText))) {\n      throw new TypeError('Invalid statusText')\n    }\n  }\n\n  // 3. Set response\u2019s response\u2019s status to init[\"status\"].\n  if ('status' in init && init.status != null) {\n    response[kState].status = init.status\n  }\n\n  // 4. Set response\u2019s response\u2019s status message to init[\"statusText\"].\n  if ('statusText' in init && init.statusText != null) {\n    response[kState].statusText = init.statusText\n  }\n\n  // 5. If init[\"headers\"] exists, then fill response\u2019s headers with init[\"headers\"].\n  if ('headers' in init && init.headers != null) {\n    fill(response[kHeaders], init.headers)\n  }\n\n  // 6. If body was given, then:\n  if (body) {\n    // 1. If response's status is a null body status, then throw a TypeError.\n    if (nullBodyStatus.includes(response.status)) {\n      throw webidl.errors.exception({\n        header: 'Response constructor',\n        message: `Invalid response status code ${response.status}`\n      })\n    }\n\n    // 2. Set response's body to body's body.\n    response[kState].body = body.body\n\n    // 3. If body's type is non-null and response's header list does not contain\n    //    `Content-Type`, then append (`Content-Type`, body's type) to response's header list.\n    if (body.type != null && !response[kState].headersList.contains('content-type', true)) {\n      response[kState].headersList.append('content-type', body.type, true)\n    }\n  }\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#response-create\n * @param {any} innerResponse\n * @param {'request' | 'immutable' | 'request-no-cors' | 'response' | 'none'} guard\n * @returns {Response}\n */\nfunction fromInnerResponse (innerResponse, guard) {\n  const response = new Response(kConstruct)\n  response[kState] = innerResponse\n  response[kHeaders] = new Headers(kConstruct)\n  setHeadersList(response[kHeaders], innerResponse.headersList)\n  setHeadersGuard(response[kHeaders], guard)\n\n  if (hasFinalizationRegistry && innerResponse.body?.stream) {\n    registry.register(response, innerResponse.body.stream)\n  }\n\n  return response\n}\n\nwebidl.converters.ReadableStream = webidl.interfaceConverter(\n  ReadableStream\n)\n\nwebidl.converters.FormData = webidl.interfaceConverter(\n  FormData\n)\n\nwebidl.converters.URLSearchParams = webidl.interfaceConverter(\n  URLSearchParams\n)\n\n// https://fetch.spec.whatwg.org/#typedefdef-xmlhttprequestbodyinit\nwebidl.converters.XMLHttpRequestBodyInit = function (V, prefix, name) {\n  if (typeof V === 'string') {\n    return webidl.converters.USVString(V, prefix, name)\n  }\n\n  if (isBlobLike(V)) {\n    return webidl.converters.Blob(V, prefix, name, { strict: false })\n  }\n\n  if (ArrayBuffer.isView(V) || types.isArrayBuffer(V)) {\n    return webidl.converters.BufferSource(V, prefix, name)\n  }\n\n  if (util.isFormDataLike(V)) {\n    return webidl.converters.FormData(V, prefix, name, { strict: false })\n  }\n\n  if (V instanceof URLSearchParams) {\n    return webidl.converters.URLSearchParams(V, prefix, name)\n  }\n\n  return webidl.converters.DOMString(V, prefix, name)\n}\n\n// https://fetch.spec.whatwg.org/#bodyinit\nwebidl.converters.BodyInit = function (V, prefix, argument) {\n  if (V instanceof ReadableStream) {\n    return webidl.converters.ReadableStream(V, prefix, argument)\n  }\n\n  // Note: the spec doesn't include async iterables,\n  // this is an undici extension.\n  if (V?.[Symbol.asyncIterator]) {\n    return V\n  }\n\n  return webidl.converters.XMLHttpRequestBodyInit(V, prefix, argument)\n}\n\nwebidl.converters.ResponseInit = webidl.dictionaryConverter([\n  {\n    key: 'status',\n    converter: webidl.converters['unsigned short'],\n    defaultValue: () => 200\n  },\n  {\n    key: 'statusText',\n    converter: webidl.converters.ByteString,\n    defaultValue: () => ''\n  },\n  {\n    key: 'headers',\n    converter: webidl.converters.HeadersInit\n  }\n])\n\nmodule.exports = {\n  isNetworkError,\n  makeNetworkError,\n  makeResponse,\n  makeAppropriateNetworkError,\n  filterResponse,\n  Response,\n  cloneResponse,\n  fromInnerResponse\n}\n", "'use strict'\n\nconst { kConnected, kSize } = require('../../core/symbols')\n\nclass CompatWeakRef {\n  constructor (value) {\n    this.value = value\n  }\n\n  deref () {\n    return this.value[kConnected] === 0 && this.value[kSize] === 0\n      ? undefined\n      : this.value\n  }\n}\n\nclass CompatFinalizer {\n  constructor (finalizer) {\n    this.finalizer = finalizer\n  }\n\n  register (dispatcher, key) {\n    if (dispatcher.on) {\n      dispatcher.on('disconnect', () => {\n        if (dispatcher[kConnected] === 0 && dispatcher[kSize] === 0) {\n          this.finalizer(key)\n        }\n      })\n    }\n  }\n\n  unregister (key) {}\n}\n\nmodule.exports = function () {\n  // FIXME: remove workaround when the Node bug is backported to v18\n  // https://github.com/nodejs/node/issues/49344#issuecomment-1741776308\n  if (process.env.NODE_V8_COVERAGE && process.version.startsWith('v18')) {\n    process._rawDebug('Using compatibility WeakRef and FinalizationRegistry')\n    return {\n      WeakRef: CompatWeakRef,\n      FinalizationRegistry: CompatFinalizer\n    }\n  }\n  return { WeakRef, FinalizationRegistry }\n}\n", "/* globals AbortController */\n\n'use strict'\n\nconst { extractBody, mixinBody, cloneBody } = require('./body')\nconst { Headers, fill: fillHeaders, HeadersList, setHeadersGuard, getHeadersGuard, setHeadersList, getHeadersList } = require('./headers')\nconst { FinalizationRegistry } = require('./dispatcher-weakref')()\nconst util = require('../../core/util')\nconst nodeUtil = require('node:util')\nconst {\n  isValidHTTPToken,\n  sameOrigin,\n  normalizeMethod,\n  environmentSettingsObject,\n  normalizeMethodRecord\n} = require('./util')\nconst {\n  forbiddenMethodsSet,\n  corsSafeListedMethodsSet,\n  referrerPolicy,\n  requestRedirect,\n  requestMode,\n  requestCredentials,\n  requestCache,\n  requestDuplex\n} = require('./constants')\nconst { kEnumerableProperty } = util\nconst { kHeaders, kSignal, kState, kDispatcher } = require('./symbols')\nconst { webidl } = require('./webidl')\nconst { URLSerializer } = require('./data-url')\nconst { kConstruct } = require('../../core/symbols')\nconst assert = require('node:assert')\nconst { getMaxListeners, setMaxListeners, getEventListeners, defaultMaxListeners } = require('node:events')\n\nconst kAbortController = Symbol('abortController')\n\nconst requestFinalizer = new FinalizationRegistry(({ signal, abort }) => {\n  signal.removeEventListener('abort', abort)\n})\n\nconst dependentControllerMap = new WeakMap()\n\nfunction buildAbort (acRef) {\n  return abort\n\n  function abort () {\n    const ac = acRef.deref()\n    if (ac !== undefined) {\n      // Currently, there is a problem with FinalizationRegistry.\n      // https://github.com/nodejs/node/issues/49344\n      // https://github.com/nodejs/node/issues/47748\n      // In the case of abort, the first step is to unregister from it.\n      // If the controller can refer to it, it is still registered.\n      // It will be removed in the future.\n      requestFinalizer.unregister(abort)\n\n      // Unsubscribe a listener.\n      // FinalizationRegistry will no longer be called, so this must be done.\n      this.removeEventListener('abort', abort)\n\n      ac.abort(this.reason)\n\n      const controllerList = dependentControllerMap.get(ac.signal)\n\n      if (controllerList !== undefined) {\n        if (controllerList.size !== 0) {\n          for (const ref of controllerList) {\n            const ctrl = ref.deref()\n            if (ctrl !== undefined) {\n              ctrl.abort(this.reason)\n            }\n          }\n          controllerList.clear()\n        }\n        dependentControllerMap.delete(ac.signal)\n      }\n    }\n  }\n}\n\nlet patchMethodWarning = false\n\n// https://fetch.spec.whatwg.org/#request-class\nclass Request {\n  // https://fetch.spec.whatwg.org/#dom-request\n  constructor (input, init = {}) {\n    if (input === kConstruct) {\n      return\n    }\n\n    const prefix = 'Request constructor'\n    webidl.argumentLengthCheck(arguments, 1, prefix)\n\n    input = webidl.converters.RequestInfo(input, prefix, 'input')\n    init = webidl.converters.RequestInit(init, prefix, 'init')\n\n    // 1. Let request be null.\n    let request = null\n\n    // 2. Let fallbackMode be null.\n    let fallbackMode = null\n\n    // 3. Let baseURL be this\u2019s relevant settings object\u2019s API base URL.\n    const baseUrl = environmentSettingsObject.settingsObject.baseUrl\n\n    // 4. Let signal be null.\n    let signal = null\n\n    // 5. If input is a string, then:\n    if (typeof input === 'string') {\n      this[kDispatcher] = init.dispatcher\n\n      // 1. Let parsedURL be the result of parsing input with baseURL.\n      // 2. If parsedURL is failure, then throw a TypeError.\n      let parsedURL\n      try {\n        parsedURL = new URL(input, baseUrl)\n      } catch (err) {\n        throw new TypeError('Failed to parse URL from ' + input, { cause: err })\n      }\n\n      // 3. If parsedURL includes credentials, then throw a TypeError.\n      if (parsedURL.username || parsedURL.password) {\n        throw new TypeError(\n          'Request cannot be constructed from a URL that includes credentials: ' +\n            input\n        )\n      }\n\n      // 4. Set request to a new request whose URL is parsedURL.\n      request = makeRequest({ urlList: [parsedURL] })\n\n      // 5. Set fallbackMode to \"cors\".\n      fallbackMode = 'cors'\n    } else {\n      this[kDispatcher] = init.dispatcher || input[kDispatcher]\n\n      // 6. Otherwise:\n\n      // 7. Assert: input is a Request object.\n      assert(input instanceof Request)\n\n      // 8. Set request to input\u2019s request.\n      request = input[kState]\n\n      // 9. Set signal to input\u2019s signal.\n      signal = input[kSignal]\n    }\n\n    // 7. Let origin be this\u2019s relevant settings object\u2019s origin.\n    const origin = environmentSettingsObject.settingsObject.origin\n\n    // 8. Let window be \"client\".\n    let window = 'client'\n\n    // 9. If request\u2019s window is an environment settings object and its origin\n    // is same origin with origin, then set window to request\u2019s window.\n    if (\n      request.window?.constructor?.name === 'EnvironmentSettingsObject' &&\n      sameOrigin(request.window, origin)\n    ) {\n      window = request.window\n    }\n\n    // 10. If init[\"window\"] exists and is non-null, then throw a TypeError.\n    if (init.window != null) {\n      throw new TypeError(`'window' option '${window}' must be null`)\n    }\n\n    // 11. If init[\"window\"] exists, then set window to \"no-window\".\n    if ('window' in init) {\n      window = 'no-window'\n    }\n\n    // 12. Set request to a new request with the following properties:\n    request = makeRequest({\n      // URL request\u2019s URL.\n      // undici implementation note: this is set as the first item in request's urlList in makeRequest\n      // method request\u2019s method.\n      method: request.method,\n      // header list A copy of request\u2019s header list.\n      // undici implementation note: headersList is cloned in makeRequest\n      headersList: request.headersList,\n      // unsafe-request flag Set.\n      unsafeRequest: request.unsafeRequest,\n      // client This\u2019s relevant settings object.\n      client: environmentSettingsObject.settingsObject,\n      // window window.\n      window,\n      // priority request\u2019s priority.\n      priority: request.priority,\n      // origin request\u2019s origin. The propagation of the origin is only significant for navigation requests\n      // being handled by a service worker. In this scenario a request can have an origin that is different\n      // from the current client.\n      origin: request.origin,\n      // referrer request\u2019s referrer.\n      referrer: request.referrer,\n      // referrer policy request\u2019s referrer policy.\n      referrerPolicy: request.referrerPolicy,\n      // mode request\u2019s mode.\n      mode: request.mode,\n      // credentials mode request\u2019s credentials mode.\n      credentials: request.credentials,\n      // cache mode request\u2019s cache mode.\n      cache: request.cache,\n      // redirect mode request\u2019s redirect mode.\n      redirect: request.redirect,\n      // integrity metadata request\u2019s integrity metadata.\n      integrity: request.integrity,\n      // keepalive request\u2019s keepalive.\n      keepalive: request.keepalive,\n      // reload-navigation flag request\u2019s reload-navigation flag.\n      reloadNavigation: request.reloadNavigation,\n      // history-navigation flag request\u2019s history-navigation flag.\n      historyNavigation: request.historyNavigation,\n      // URL list A clone of request\u2019s URL list.\n      urlList: [...request.urlList]\n    })\n\n    const initHasKey = Object.keys(init).length !== 0\n\n    // 13. If init is not empty, then:\n    if (initHasKey) {\n      // 1. If request\u2019s mode is \"navigate\", then set it to \"same-origin\".\n      if (request.mode === 'navigate') {\n        request.mode = 'same-origin'\n      }\n\n      // 2. Unset request\u2019s reload-navigation flag.\n      request.reloadNavigation = false\n\n      // 3. Unset request\u2019s history-navigation flag.\n      request.historyNavigation = false\n\n      // 4. Set request\u2019s origin to \"client\".\n      request.origin = 'client'\n\n      // 5. Set request\u2019s referrer to \"client\"\n      request.referrer = 'client'\n\n      // 6. Set request\u2019s referrer policy to the empty string.\n      request.referrerPolicy = ''\n\n      // 7. Set request\u2019s URL to request\u2019s current URL.\n      request.url = request.urlList[request.urlList.length - 1]\n\n      // 8. Set request\u2019s URL list to \u00AB request\u2019s URL \u00BB.\n      request.urlList = [request.url]\n    }\n\n    // 14. If init[\"referrer\"] exists, then:\n    if (init.referrer !== undefined) {\n      // 1. Let referrer be init[\"referrer\"].\n      const referrer = init.referrer\n\n      // 2. If referrer is the empty string, then set request\u2019s referrer to \"no-referrer\".\n      if (referrer === '') {\n        request.referrer = 'no-referrer'\n      } else {\n        // 1. Let parsedReferrer be the result of parsing referrer with\n        // baseURL.\n        // 2. If parsedReferrer is failure, then throw a TypeError.\n        let parsedReferrer\n        try {\n          parsedReferrer = new URL(referrer, baseUrl)\n        } catch (err) {\n          throw new TypeError(`Referrer \"${referrer}\" is not a valid URL.`, { cause: err })\n        }\n\n        // 3. If one of the following is true\n        // - parsedReferrer\u2019s scheme is \"about\" and path is the string \"client\"\n        // - parsedReferrer\u2019s origin is not same origin with origin\n        // then set request\u2019s referrer to \"client\".\n        if (\n          (parsedReferrer.protocol === 'about:' && parsedReferrer.hostname === 'client') ||\n          (origin && !sameOrigin(parsedReferrer, environmentSettingsObject.settingsObject.baseUrl))\n        ) {\n          request.referrer = 'client'\n        } else {\n          // 4. Otherwise, set request\u2019s referrer to parsedReferrer.\n          request.referrer = parsedReferrer\n        }\n      }\n    }\n\n    // 15. If init[\"referrerPolicy\"] exists, then set request\u2019s referrer policy\n    // to it.\n    if (init.referrerPolicy !== undefined) {\n      request.referrerPolicy = init.referrerPolicy\n    }\n\n    // 16. Let mode be init[\"mode\"] if it exists, and fallbackMode otherwise.\n    let mode\n    if (init.mode !== undefined) {\n      mode = init.mode\n    } else {\n      mode = fallbackMode\n    }\n\n    // 17. If mode is \"navigate\", then throw a TypeError.\n    if (mode === 'navigate') {\n      throw webidl.errors.exception({\n        header: 'Request constructor',\n        message: 'invalid request mode navigate.'\n      })\n    }\n\n    // 18. If mode is non-null, set request\u2019s mode to mode.\n    if (mode != null) {\n      request.mode = mode\n    }\n\n    // 19. If init[\"credentials\"] exists, then set request\u2019s credentials mode\n    // to it.\n    if (init.credentials !== undefined) {\n      request.credentials = init.credentials\n    }\n\n    // 18. If init[\"cache\"] exists, then set request\u2019s cache mode to it.\n    if (init.cache !== undefined) {\n      request.cache = init.cache\n    }\n\n    // 21. If request\u2019s cache mode is \"only-if-cached\" and request\u2019s mode is\n    // not \"same-origin\", then throw a TypeError.\n    if (request.cache === 'only-if-cached' && request.mode !== 'same-origin') {\n      throw new TypeError(\n        \"'only-if-cached' can be set only with 'same-origin' mode\"\n      )\n    }\n\n    // 22. If init[\"redirect\"] exists, then set request\u2019s redirect mode to it.\n    if (init.redirect !== undefined) {\n      request.redirect = init.redirect\n    }\n\n    // 23. If init[\"integrity\"] exists, then set request\u2019s integrity metadata to it.\n    if (init.integrity != null) {\n      request.integrity = String(init.integrity)\n    }\n\n    // 24. If init[\"keepalive\"] exists, then set request\u2019s keepalive to it.\n    if (init.keepalive !== undefined) {\n      request.keepalive = Boolean(init.keepalive)\n    }\n\n    // 25. If init[\"method\"] exists, then:\n    if (init.method !== undefined) {\n      // 1. Let method be init[\"method\"].\n      let method = init.method\n\n      const mayBeNormalized = normalizeMethodRecord[method]\n\n      if (mayBeNormalized !== undefined) {\n        // Note: Bypass validation DELETE, GET, HEAD, OPTIONS, POST, PUT, PATCH and these lowercase ones\n        request.method = mayBeNormalized\n      } else {\n        // 2. If method is not a method or method is a forbidden method, then\n        // throw a TypeError.\n        if (!isValidHTTPToken(method)) {\n          throw new TypeError(`'${method}' is not a valid HTTP method.`)\n        }\n\n        if (forbiddenMethodsSet.has(method.toUpperCase())) {\n          throw new TypeError(`'${method}' HTTP method is unsupported.`)\n        }\n\n        // 3. Normalize method.\n        method = normalizeMethod(method)\n\n        // 4. Set request\u2019s method to method.\n        request.method = method\n      }\n\n      if (!patchMethodWarning && request.method === 'patch') {\n        process.emitWarning('Using `patch` is highly likely to result in a `405 Method Not Allowed`. `PATCH` is much more likely to succeed.', {\n          code: 'UNDICI-FETCH-patch'\n        })\n\n        patchMethodWarning = true\n      }\n    }\n\n    // 26. If init[\"signal\"] exists, then set signal to it.\n    if (init.signal !== undefined) {\n      signal = init.signal\n    }\n\n    // 27. Set this\u2019s request to request.\n    this[kState] = request\n\n    // 28. Set this\u2019s signal to a new AbortSignal object with this\u2019s relevant\n    // Realm.\n    // TODO: could this be simplified with AbortSignal.any\n    // (https://dom.spec.whatwg.org/#dom-abortsignal-any)\n    const ac = new AbortController()\n    this[kSignal] = ac.signal\n\n    // 29. If signal is not null, then make this\u2019s signal follow signal.\n    if (signal != null) {\n      if (\n        !signal ||\n        typeof signal.aborted !== 'boolean' ||\n        typeof signal.addEventListener !== 'function'\n      ) {\n        throw new TypeError(\n          \"Failed to construct 'Request': member signal is not of type AbortSignal.\"\n        )\n      }\n\n      if (signal.aborted) {\n        ac.abort(signal.reason)\n      } else {\n        // Keep a strong ref to ac while request object\n        // is alive. This is needed to prevent AbortController\n        // from being prematurely garbage collected.\n        // See, https://github.com/nodejs/undici/issues/1926.\n        this[kAbortController] = ac\n\n        const acRef = new WeakRef(ac)\n        const abort = buildAbort(acRef)\n\n        // Third-party AbortControllers may not work with these.\n        // See, https://github.com/nodejs/undici/pull/1910#issuecomment-1464495619.\n        try {\n          // If the max amount of listeners is equal to the default, increase it\n          // This is only available in node >= v19.9.0\n          if (typeof getMaxListeners === 'function' && getMaxListeners(signal) === defaultMaxListeners) {\n            setMaxListeners(1500, signal)\n          } else if (getEventListeners(signal, 'abort').length >= defaultMaxListeners) {\n            setMaxListeners(1500, signal)\n          }\n        } catch {}\n\n        util.addAbortListener(signal, abort)\n        // The third argument must be a registry key to be unregistered.\n        // Without it, you cannot unregister.\n        // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/FinalizationRegistry\n        // abort is used as the unregister key. (because it is unique)\n        requestFinalizer.register(ac, { signal, abort }, abort)\n      }\n    }\n\n    // 30. Set this\u2019s headers to a new Headers object with this\u2019s relevant\n    // Realm, whose header list is request\u2019s header list and guard is\n    // \"request\".\n    this[kHeaders] = new Headers(kConstruct)\n    setHeadersList(this[kHeaders], request.headersList)\n    setHeadersGuard(this[kHeaders], 'request')\n\n    // 31. If this\u2019s request\u2019s mode is \"no-cors\", then:\n    if (mode === 'no-cors') {\n      // 1. If this\u2019s request\u2019s method is not a CORS-safelisted method,\n      // then throw a TypeError.\n      if (!corsSafeListedMethodsSet.has(request.method)) {\n        throw new TypeError(\n          `'${request.method} is unsupported in no-cors mode.`\n        )\n      }\n\n      // 2. Set this\u2019s headers\u2019s guard to \"request-no-cors\".\n      setHeadersGuard(this[kHeaders], 'request-no-cors')\n    }\n\n    // 32. If init is not empty, then:\n    if (initHasKey) {\n      /** @type {HeadersList} */\n      const headersList = getHeadersList(this[kHeaders])\n      // 1. Let headers be a copy of this\u2019s headers and its associated header\n      // list.\n      // 2. If init[\"headers\"] exists, then set headers to init[\"headers\"].\n      const headers = init.headers !== undefined ? init.headers : new HeadersList(headersList)\n\n      // 3. Empty this\u2019s headers\u2019s header list.\n      headersList.clear()\n\n      // 4. If headers is a Headers object, then for each header in its header\n      // list, append header\u2019s name/header\u2019s value to this\u2019s headers.\n      if (headers instanceof HeadersList) {\n        for (const { name, value } of headers.rawValues()) {\n          headersList.append(name, value, false)\n        }\n        // Note: Copy the `set-cookie` meta-data.\n        headersList.cookies = headers.cookies\n      } else {\n        // 5. Otherwise, fill this\u2019s headers with headers.\n        fillHeaders(this[kHeaders], headers)\n      }\n    }\n\n    // 33. Let inputBody be input\u2019s request\u2019s body if input is a Request\n    // object; otherwise null.\n    const inputBody = input instanceof Request ? input[kState].body : null\n\n    // 34. If either init[\"body\"] exists and is non-null or inputBody is\n    // non-null, and request\u2019s method is `GET` or `HEAD`, then throw a\n    // TypeError.\n    if (\n      (init.body != null || inputBody != null) &&\n      (request.method === 'GET' || request.method === 'HEAD')\n    ) {\n      throw new TypeError('Request with GET/HEAD method cannot have body.')\n    }\n\n    // 35. Let initBody be null.\n    let initBody = null\n\n    // 36. If init[\"body\"] exists and is non-null, then:\n    if (init.body != null) {\n      // 1. Let Content-Type be null.\n      // 2. Set initBody and Content-Type to the result of extracting\n      // init[\"body\"], with keepalive set to request\u2019s keepalive.\n      const [extractedBody, contentType] = extractBody(\n        init.body,\n        request.keepalive\n      )\n      initBody = extractedBody\n\n      // 3, If Content-Type is non-null and this\u2019s headers\u2019s header list does\n      // not contain `Content-Type`, then append `Content-Type`/Content-Type to\n      // this\u2019s headers.\n      if (contentType && !getHeadersList(this[kHeaders]).contains('content-type', true)) {\n        this[kHeaders].append('content-type', contentType)\n      }\n    }\n\n    // 37. Let inputOrInitBody be initBody if it is non-null; otherwise\n    // inputBody.\n    const inputOrInitBody = initBody ?? inputBody\n\n    // 38. If inputOrInitBody is non-null and inputOrInitBody\u2019s source is\n    // null, then:\n    if (inputOrInitBody != null && inputOrInitBody.source == null) {\n      // 1. If initBody is non-null and init[\"duplex\"] does not exist,\n      //    then throw a TypeError.\n      if (initBody != null && init.duplex == null) {\n        throw new TypeError('RequestInit: duplex option is required when sending a body.')\n      }\n\n      // 2. If this\u2019s request\u2019s mode is neither \"same-origin\" nor \"cors\",\n      // then throw a TypeError.\n      if (request.mode !== 'same-origin' && request.mode !== 'cors') {\n        throw new TypeError(\n          'If request is made from ReadableStream, mode should be \"same-origin\" or \"cors\"'\n        )\n      }\n\n      // 3. Set this\u2019s request\u2019s use-CORS-preflight flag.\n      request.useCORSPreflightFlag = true\n    }\n\n    // 39. Let finalBody be inputOrInitBody.\n    let finalBody = inputOrInitBody\n\n    // 40. If initBody is null and inputBody is non-null, then:\n    if (initBody == null && inputBody != null) {\n      // 1. If input is unusable, then throw a TypeError.\n      if (util.isDisturbed(inputBody.stream) || inputBody.stream.locked) {\n        throw new TypeError(\n          'Cannot construct a Request with a Request object that has already been used.'\n        )\n      }\n\n      // 2. Set finalBody to the result of creating a proxy for inputBody.\n      // https://streams.spec.whatwg.org/#readablestream-create-a-proxy\n      const identityTransform = new TransformStream()\n      inputBody.stream.pipeThrough(identityTransform)\n      finalBody = {\n        source: inputBody.source,\n        length: inputBody.length,\n        stream: identityTransform.readable\n      }\n    }\n\n    // 41. Set this\u2019s request\u2019s body to finalBody.\n    this[kState].body = finalBody\n  }\n\n  // Returns request\u2019s HTTP method, which is \"GET\" by default.\n  get method () {\n    webidl.brandCheck(this, Request)\n\n    // The method getter steps are to return this\u2019s request\u2019s method.\n    return this[kState].method\n  }\n\n  // Returns the URL of request as a string.\n  get url () {\n    webidl.brandCheck(this, Request)\n\n    // The url getter steps are to return this\u2019s request\u2019s URL, serialized.\n    return URLSerializer(this[kState].url)\n  }\n\n  // Returns a Headers object consisting of the headers associated with request.\n  // Note that headers added in the network layer by the user agent will not\n  // be accounted for in this object, e.g., the \"Host\" header.\n  get headers () {\n    webidl.brandCheck(this, Request)\n\n    // The headers getter steps are to return this\u2019s headers.\n    return this[kHeaders]\n  }\n\n  // Returns the kind of resource requested by request, e.g., \"document\"\n  // or \"script\".\n  get destination () {\n    webidl.brandCheck(this, Request)\n\n    // The destination getter are to return this\u2019s request\u2019s destination.\n    return this[kState].destination\n  }\n\n  // Returns the referrer of request. Its value can be a same-origin URL if\n  // explicitly set in init, the empty string to indicate no referrer, and\n  // \"about:client\" when defaulting to the global\u2019s default. This is used\n  // during fetching to determine the value of the `Referer` header of the\n  // request being made.\n  get referrer () {\n    webidl.brandCheck(this, Request)\n\n    // 1. If this\u2019s request\u2019s referrer is \"no-referrer\", then return the\n    // empty string.\n    if (this[kState].referrer === 'no-referrer') {\n      return ''\n    }\n\n    // 2. If this\u2019s request\u2019s referrer is \"client\", then return\n    // \"about:client\".\n    if (this[kState].referrer === 'client') {\n      return 'about:client'\n    }\n\n    // Return this\u2019s request\u2019s referrer, serialized.\n    return this[kState].referrer.toString()\n  }\n\n  // Returns the referrer policy associated with request.\n  // This is used during fetching to compute the value of the request\u2019s\n  // referrer.\n  get referrerPolicy () {\n    webidl.brandCheck(this, Request)\n\n    // The referrerPolicy getter steps are to return this\u2019s request\u2019s referrer policy.\n    return this[kState].referrerPolicy\n  }\n\n  // Returns the mode associated with request, which is a string indicating\n  // whether the request will use CORS, or will be restricted to same-origin\n  // URLs.\n  get mode () {\n    webidl.brandCheck(this, Request)\n\n    // The mode getter steps are to return this\u2019s request\u2019s mode.\n    return this[kState].mode\n  }\n\n  // Returns the credentials mode associated with request,\n  // which is a string indicating whether credentials will be sent with the\n  // request always, never, or only when sent to a same-origin URL.\n  get credentials () {\n    // The credentials getter steps are to return this\u2019s request\u2019s credentials mode.\n    return this[kState].credentials\n  }\n\n  // Returns the cache mode associated with request,\n  // which is a string indicating how the request will\n  // interact with the browser\u2019s cache when fetching.\n  get cache () {\n    webidl.brandCheck(this, Request)\n\n    // The cache getter steps are to return this\u2019s request\u2019s cache mode.\n    return this[kState].cache\n  }\n\n  // Returns the redirect mode associated with request,\n  // which is a string indicating how redirects for the\n  // request will be handled during fetching. A request\n  // will follow redirects by default.\n  get redirect () {\n    webidl.brandCheck(this, Request)\n\n    // The redirect getter steps are to return this\u2019s request\u2019s redirect mode.\n    return this[kState].redirect\n  }\n\n  // Returns request\u2019s subresource integrity metadata, which is a\n  // cryptographic hash of the resource being fetched. Its value\n  // consists of multiple hashes separated by whitespace. [SRI]\n  get integrity () {\n    webidl.brandCheck(this, Request)\n\n    // The integrity getter steps are to return this\u2019s request\u2019s integrity\n    // metadata.\n    return this[kState].integrity\n  }\n\n  // Returns a boolean indicating whether or not request can outlive the\n  // global in which it was created.\n  get keepalive () {\n    webidl.brandCheck(this, Request)\n\n    // The keepalive getter steps are to return this\u2019s request\u2019s keepalive.\n    return this[kState].keepalive\n  }\n\n  // Returns a boolean indicating whether or not request is for a reload\n  // navigation.\n  get isReloadNavigation () {\n    webidl.brandCheck(this, Request)\n\n    // The isReloadNavigation getter steps are to return true if this\u2019s\n    // request\u2019s reload-navigation flag is set; otherwise false.\n    return this[kState].reloadNavigation\n  }\n\n  // Returns a boolean indicating whether or not request is for a history\n  // navigation (a.k.a. back-forward navigation).\n  get isHistoryNavigation () {\n    webidl.brandCheck(this, Request)\n\n    // The isHistoryNavigation getter steps are to return true if this\u2019s request\u2019s\n    // history-navigation flag is set; otherwise false.\n    return this[kState].historyNavigation\n  }\n\n  // Returns the signal associated with request, which is an AbortSignal\n  // object indicating whether or not request has been aborted, and its\n  // abort event handler.\n  get signal () {\n    webidl.brandCheck(this, Request)\n\n    // The signal getter steps are to return this\u2019s signal.\n    return this[kSignal]\n  }\n\n  get body () {\n    webidl.brandCheck(this, Request)\n\n    return this[kState].body ? this[kState].body.stream : null\n  }\n\n  get bodyUsed () {\n    webidl.brandCheck(this, Request)\n\n    return !!this[kState].body && util.isDisturbed(this[kState].body.stream)\n  }\n\n  get duplex () {\n    webidl.brandCheck(this, Request)\n\n    return 'half'\n  }\n\n  // Returns a clone of request.\n  clone () {\n    webidl.brandCheck(this, Request)\n\n    // 1. If this is unusable, then throw a TypeError.\n    if (this.bodyUsed || this.body?.locked) {\n      throw new TypeError('unusable')\n    }\n\n    // 2. Let clonedRequest be the result of cloning this\u2019s request.\n    const clonedRequest = cloneRequest(this[kState])\n\n    // 3. Let clonedRequestObject be the result of creating a Request object,\n    // given clonedRequest, this\u2019s headers\u2019s guard, and this\u2019s relevant Realm.\n    // 4. Make clonedRequestObject\u2019s signal follow this\u2019s signal.\n    const ac = new AbortController()\n    if (this.signal.aborted) {\n      ac.abort(this.signal.reason)\n    } else {\n      let list = dependentControllerMap.get(this.signal)\n      if (list === undefined) {\n        list = new Set()\n        dependentControllerMap.set(this.signal, list)\n      }\n      const acRef = new WeakRef(ac)\n      list.add(acRef)\n      util.addAbortListener(\n        ac.signal,\n        buildAbort(acRef)\n      )\n    }\n\n    // 4. Return clonedRequestObject.\n    return fromInnerRequest(clonedRequest, ac.signal, getHeadersGuard(this[kHeaders]))\n  }\n\n  [nodeUtil.inspect.custom] (depth, options) {\n    if (options.depth === null) {\n      options.depth = 2\n    }\n\n    options.colors ??= true\n\n    const properties = {\n      method: this.method,\n      url: this.url,\n      headers: this.headers,\n      destination: this.destination,\n      referrer: this.referrer,\n      referrerPolicy: this.referrerPolicy,\n      mode: this.mode,\n      credentials: this.credentials,\n      cache: this.cache,\n      redirect: this.redirect,\n      integrity: this.integrity,\n      keepalive: this.keepalive,\n      isReloadNavigation: this.isReloadNavigation,\n      isHistoryNavigation: this.isHistoryNavigation,\n      signal: this.signal\n    }\n\n    return `Request ${nodeUtil.formatWithOptions(options, properties)}`\n  }\n}\n\nmixinBody(Request)\n\n// https://fetch.spec.whatwg.org/#requests\nfunction makeRequest (init) {\n  return {\n    method: init.method ?? 'GET',\n    localURLsOnly: init.localURLsOnly ?? false,\n    unsafeRequest: init.unsafeRequest ?? false,\n    body: init.body ?? null,\n    client: init.client ?? null,\n    reservedClient: init.reservedClient ?? null,\n    replacesClientId: init.replacesClientId ?? '',\n    window: init.window ?? 'client',\n    keepalive: init.keepalive ?? false,\n    serviceWorkers: init.serviceWorkers ?? 'all',\n    initiator: init.initiator ?? '',\n    destination: init.destination ?? '',\n    priority: init.priority ?? null,\n    origin: init.origin ?? 'client',\n    policyContainer: init.policyContainer ?? 'client',\n    referrer: init.referrer ?? 'client',\n    referrerPolicy: init.referrerPolicy ?? '',\n    mode: init.mode ?? 'no-cors',\n    useCORSPreflightFlag: init.useCORSPreflightFlag ?? false,\n    credentials: init.credentials ?? 'same-origin',\n    useCredentials: init.useCredentials ?? false,\n    cache: init.cache ?? 'default',\n    redirect: init.redirect ?? 'follow',\n    integrity: init.integrity ?? '',\n    cryptoGraphicsNonceMetadata: init.cryptoGraphicsNonceMetadata ?? '',\n    parserMetadata: init.parserMetadata ?? '',\n    reloadNavigation: init.reloadNavigation ?? false,\n    historyNavigation: init.historyNavigation ?? false,\n    userActivation: init.userActivation ?? false,\n    taintedOrigin: init.taintedOrigin ?? false,\n    redirectCount: init.redirectCount ?? 0,\n    responseTainting: init.responseTainting ?? 'basic',\n    preventNoCacheCacheControlHeaderModification: init.preventNoCacheCacheControlHeaderModification ?? false,\n    done: init.done ?? false,\n    timingAllowFailed: init.timingAllowFailed ?? false,\n    urlList: init.urlList,\n    url: init.urlList[0],\n    headersList: init.headersList\n      ? new HeadersList(init.headersList)\n      : new HeadersList()\n  }\n}\n\n// https://fetch.spec.whatwg.org/#concept-request-clone\nfunction cloneRequest (request) {\n  // To clone a request request, run these steps:\n\n  // 1. Let newRequest be a copy of request, except for its body.\n  const newRequest = makeRequest({ ...request, body: null })\n\n  // 2. If request\u2019s body is non-null, set newRequest\u2019s body to the\n  // result of cloning request\u2019s body.\n  if (request.body != null) {\n    newRequest.body = cloneBody(request.body)\n  }\n\n  // 3. Return newRequest.\n  return newRequest\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#request-create\n * @param {any} innerRequest\n * @param {AbortSignal} signal\n * @param {'request' | 'immutable' | 'request-no-cors' | 'response' | 'none'} guard\n * @returns {Request}\n */\nfunction fromInnerRequest (innerRequest, signal, guard) {\n  const request = new Request(kConstruct)\n  request[kState] = innerRequest\n  request[kSignal] = signal\n  request[kHeaders] = new Headers(kConstruct)\n  setHeadersList(request[kHeaders], innerRequest.headersList)\n  setHeadersGuard(request[kHeaders], guard)\n  return request\n}\n\nObject.defineProperties(Request.prototype, {\n  method: kEnumerableProperty,\n  url: kEnumerableProperty,\n  headers: kEnumerableProperty,\n  redirect: kEnumerableProperty,\n  clone: kEnumerableProperty,\n  signal: kEnumerableProperty,\n  duplex: kEnumerableProperty,\n  destination: kEnumerableProperty,\n  body: kEnumerableProperty,\n  bodyUsed: kEnumerableProperty,\n  isHistoryNavigation: kEnumerableProperty,\n  isReloadNavigation: kEnumerableProperty,\n  keepalive: kEnumerableProperty,\n  integrity: kEnumerableProperty,\n  cache: kEnumerableProperty,\n  credentials: kEnumerableProperty,\n  attribute: kEnumerableProperty,\n  referrerPolicy: kEnumerableProperty,\n  referrer: kEnumerableProperty,\n  mode: kEnumerableProperty,\n  [Symbol.toStringTag]: {\n    value: 'Request',\n    configurable: true\n  }\n})\n\nwebidl.converters.Request = webidl.interfaceConverter(\n  Request\n)\n\n// https://fetch.spec.whatwg.org/#requestinfo\nwebidl.converters.RequestInfo = function (V, prefix, argument) {\n  if (typeof V === 'string') {\n    return webidl.converters.USVString(V, prefix, argument)\n  }\n\n  if (V instanceof Request) {\n    return webidl.converters.Request(V, prefix, argument)\n  }\n\n  return webidl.converters.USVString(V, prefix, argument)\n}\n\nwebidl.converters.AbortSignal = webidl.interfaceConverter(\n  AbortSignal\n)\n\n// https://fetch.spec.whatwg.org/#requestinit\nwebidl.converters.RequestInit = webidl.dictionaryConverter([\n  {\n    key: 'method',\n    converter: webidl.converters.ByteString\n  },\n  {\n    key: 'headers',\n    converter: webidl.converters.HeadersInit\n  },\n  {\n    key: 'body',\n    converter: webidl.nullableConverter(\n      webidl.converters.BodyInit\n    )\n  },\n  {\n    key: 'referrer',\n    converter: webidl.converters.USVString\n  },\n  {\n    key: 'referrerPolicy',\n    converter: webidl.converters.DOMString,\n    // https://w3c.github.io/webappsec-referrer-policy/#referrer-policy\n    allowedValues: referrerPolicy\n  },\n  {\n    key: 'mode',\n    converter: webidl.converters.DOMString,\n    // https://fetch.spec.whatwg.org/#concept-request-mode\n    allowedValues: requestMode\n  },\n  {\n    key: 'credentials',\n    converter: webidl.converters.DOMString,\n    // https://fetch.spec.whatwg.org/#requestcredentials\n    allowedValues: requestCredentials\n  },\n  {\n    key: 'cache',\n    converter: webidl.converters.DOMString,\n    // https://fetch.spec.whatwg.org/#requestcache\n    allowedValues: requestCache\n  },\n  {\n    key: 'redirect',\n    converter: webidl.converters.DOMString,\n    // https://fetch.spec.whatwg.org/#requestredirect\n    allowedValues: requestRedirect\n  },\n  {\n    key: 'integrity',\n    converter: webidl.converters.DOMString\n  },\n  {\n    key: 'keepalive',\n    converter: webidl.converters.boolean\n  },\n  {\n    key: 'signal',\n    converter: webidl.nullableConverter(\n      (signal) => webidl.converters.AbortSignal(\n        signal,\n        'RequestInit',\n        'signal',\n        { strict: false }\n      )\n    )\n  },\n  {\n    key: 'window',\n    converter: webidl.converters.any\n  },\n  {\n    key: 'duplex',\n    converter: webidl.converters.DOMString,\n    allowedValues: requestDuplex\n  },\n  {\n    key: 'dispatcher', // undici specific option\n    converter: webidl.converters.any\n  }\n])\n\nmodule.exports = { Request, makeRequest, fromInnerRequest, cloneRequest }\n", "// https://github.com/Ethan-Arrowood/undici-fetch\n\n'use strict'\n\nconst {\n  makeNetworkError,\n  makeAppropriateNetworkError,\n  filterResponse,\n  makeResponse,\n  fromInnerResponse\n} = require('./response')\nconst { HeadersList } = require('./headers')\nconst { Request, cloneRequest } = require('./request')\nconst zlib = require('node:zlib')\nconst {\n  bytesMatch,\n  makePolicyContainer,\n  clonePolicyContainer,\n  requestBadPort,\n  TAOCheck,\n  appendRequestOriginHeader,\n  responseLocationURL,\n  requestCurrentURL,\n  setRequestReferrerPolicyOnRedirect,\n  tryUpgradeRequestToAPotentiallyTrustworthyURL,\n  createOpaqueTimingInfo,\n  appendFetchMetadata,\n  corsCheck,\n  crossOriginResourcePolicyCheck,\n  determineRequestsReferrer,\n  coarsenedSharedCurrentTime,\n  createDeferredPromise,\n  isBlobLike,\n  sameOrigin,\n  isCancelled,\n  isAborted,\n  isErrorLike,\n  fullyReadBody,\n  readableStreamClose,\n  isomorphicEncode,\n  urlIsLocal,\n  urlIsHttpHttpsScheme,\n  urlHasHttpsScheme,\n  clampAndCoarsenConnectionTimingInfo,\n  simpleRangeHeaderValue,\n  buildContentRange,\n  createInflate,\n  extractMimeType\n} = require('./util')\nconst { kState, kDispatcher } = require('./symbols')\nconst assert = require('node:assert')\nconst { safelyExtractBody, extractBody } = require('./body')\nconst {\n  redirectStatusSet,\n  nullBodyStatus,\n  safeMethodsSet,\n  requestBodyHeader,\n  subresourceSet\n} = require('./constants')\nconst EE = require('node:events')\nconst { Readable, pipeline, finished } = require('node:stream')\nconst { addAbortListener, isErrored, isReadable, bufferToLowerCasedHeaderName } = require('../../core/util')\nconst { dataURLProcessor, serializeAMimeType, minimizeSupportedMimeType } = require('./data-url')\nconst { getGlobalDispatcher } = require('../../global')\nconst { webidl } = require('./webidl')\nconst { STATUS_CODES } = require('node:http')\nconst GET_OR_HEAD = ['GET', 'HEAD']\n\nconst defaultUserAgent = typeof __UNDICI_IS_NODE__ !== 'undefined' || typeof esbuildDetection !== 'undefined'\n  ? 'node'\n  : 'undici'\n\n/** @type {import('buffer').resolveObjectURL} */\nlet resolveObjectURL\n\nclass Fetch extends EE {\n  constructor (dispatcher) {\n    super()\n\n    this.dispatcher = dispatcher\n    this.connection = null\n    this.dump = false\n    this.state = 'ongoing'\n  }\n\n  terminate (reason) {\n    if (this.state !== 'ongoing') {\n      return\n    }\n\n    this.state = 'terminated'\n    this.connection?.destroy(reason)\n    this.emit('terminated', reason)\n  }\n\n  // https://fetch.spec.whatwg.org/#fetch-controller-abort\n  abort (error) {\n    if (this.state !== 'ongoing') {\n      return\n    }\n\n    // 1. Set controller\u2019s state to \"aborted\".\n    this.state = 'aborted'\n\n    // 2. Let fallbackError be an \"AbortError\" DOMException.\n    // 3. Set error to fallbackError if it is not given.\n    if (!error) {\n      error = new DOMException('The operation was aborted.', 'AbortError')\n    }\n\n    // 4. Let serializedError be StructuredSerialize(error).\n    //    If that threw an exception, catch it, and let\n    //    serializedError be StructuredSerialize(fallbackError).\n\n    // 5. Set controller\u2019s serialized abort reason to serializedError.\n    this.serializedAbortReason = error\n\n    this.connection?.destroy(error)\n    this.emit('terminated', error)\n  }\n}\n\nfunction handleFetchDone (response) {\n  finalizeAndReportTiming(response, 'fetch')\n}\n\n// https://fetch.spec.whatwg.org/#fetch-method\nfunction fetch (input, init = undefined) {\n  webidl.argumentLengthCheck(arguments, 1, 'globalThis.fetch')\n\n  // 1. Let p be a new promise.\n  let p = createDeferredPromise()\n\n  // 2. Let requestObject be the result of invoking the initial value of\n  // Request as constructor with input and init as arguments. If this throws\n  // an exception, reject p with it and return p.\n  let requestObject\n\n  try {\n    requestObject = new Request(input, init)\n  } catch (e) {\n    p.reject(e)\n    return p.promise\n  }\n\n  // 3. Let request be requestObject\u2019s request.\n  const request = requestObject[kState]\n\n  // 4. If requestObject\u2019s signal\u2019s aborted flag is set, then:\n  if (requestObject.signal.aborted) {\n    // 1. Abort the fetch() call with p, request, null, and\n    //    requestObject\u2019s signal\u2019s abort reason.\n    abortFetch(p, request, null, requestObject.signal.reason)\n\n    // 2. Return p.\n    return p.promise\n  }\n\n  // 5. Let globalObject be request\u2019s client\u2019s global object.\n  const globalObject = request.client.globalObject\n\n  // 6. If globalObject is a ServiceWorkerGlobalScope object, then set\n  // request\u2019s service-workers mode to \"none\".\n  if (globalObject?.constructor?.name === 'ServiceWorkerGlobalScope') {\n    request.serviceWorkers = 'none'\n  }\n\n  // 7. Let responseObject be null.\n  let responseObject = null\n\n  // 8. Let relevantRealm be this\u2019s relevant Realm.\n\n  // 9. Let locallyAborted be false.\n  let locallyAborted = false\n\n  // 10. Let controller be null.\n  let controller = null\n\n  // 11. Add the following abort steps to requestObject\u2019s signal:\n  addAbortListener(\n    requestObject.signal,\n    () => {\n      // 1. Set locallyAborted to true.\n      locallyAborted = true\n\n      // 2. Assert: controller is non-null.\n      assert(controller != null)\n\n      // 3. Abort controller with requestObject\u2019s signal\u2019s abort reason.\n      controller.abort(requestObject.signal.reason)\n\n      const realResponse = responseObject?.deref()\n\n      // 4. Abort the fetch() call with p, request, responseObject,\n      //    and requestObject\u2019s signal\u2019s abort reason.\n      abortFetch(p, request, realResponse, requestObject.signal.reason)\n    }\n  )\n\n  // 12. Let handleFetchDone given response response be to finalize and\n  // report timing with response, globalObject, and \"fetch\".\n  // see function handleFetchDone\n\n  // 13. Set controller to the result of calling fetch given request,\n  // with processResponseEndOfBody set to handleFetchDone, and processResponse\n  // given response being these substeps:\n\n  const processResponse = (response) => {\n    // 1. If locallyAborted is true, terminate these substeps.\n    if (locallyAborted) {\n      return\n    }\n\n    // 2. If response\u2019s aborted flag is set, then:\n    if (response.aborted) {\n      // 1. Let deserializedError be the result of deserialize a serialized\n      //    abort reason given controller\u2019s serialized abort reason and\n      //    relevantRealm.\n\n      // 2. Abort the fetch() call with p, request, responseObject, and\n      //    deserializedError.\n\n      abortFetch(p, request, responseObject, controller.serializedAbortReason)\n      return\n    }\n\n    // 3. If response is a network error, then reject p with a TypeError\n    // and terminate these substeps.\n    if (response.type === 'error') {\n      p.reject(new TypeError('fetch failed', { cause: response.error }))\n      return\n    }\n\n    // 4. Set responseObject to the result of creating a Response object,\n    // given response, \"immutable\", and relevantRealm.\n    responseObject = new WeakRef(fromInnerResponse(response, 'immutable'))\n\n    // 5. Resolve p with responseObject.\n    p.resolve(responseObject.deref())\n    p = null\n  }\n\n  controller = fetching({\n    request,\n    processResponseEndOfBody: handleFetchDone,\n    processResponse,\n    dispatcher: requestObject[kDispatcher] // undici\n  })\n\n  // 14. Return p.\n  return p.promise\n}\n\n// https://fetch.spec.whatwg.org/#finalize-and-report-timing\nfunction finalizeAndReportTiming (response, initiatorType = 'other') {\n  // 1. If response is an aborted network error, then return.\n  if (response.type === 'error' && response.aborted) {\n    return\n  }\n\n  // 2. If response\u2019s URL list is null or empty, then return.\n  if (!response.urlList?.length) {\n    return\n  }\n\n  // 3. Let originalURL be response\u2019s URL list[0].\n  const originalURL = response.urlList[0]\n\n  // 4. Let timingInfo be response\u2019s timing info.\n  let timingInfo = response.timingInfo\n\n  // 5. Let cacheState be response\u2019s cache state.\n  let cacheState = response.cacheState\n\n  // 6. If originalURL\u2019s scheme is not an HTTP(S) scheme, then return.\n  if (!urlIsHttpHttpsScheme(originalURL)) {\n    return\n  }\n\n  // 7. If timingInfo is null, then return.\n  if (timingInfo === null) {\n    return\n  }\n\n  // 8. If response\u2019s timing allow passed flag is not set, then:\n  if (!response.timingAllowPassed) {\n    //  1. Set timingInfo to a the result of creating an opaque timing info for timingInfo.\n    timingInfo = createOpaqueTimingInfo({\n      startTime: timingInfo.startTime\n    })\n\n    //  2. Set cacheState to the empty string.\n    cacheState = ''\n  }\n\n  // 9. Set timingInfo\u2019s end time to the coarsened shared current time\n  // given global\u2019s relevant settings object\u2019s cross-origin isolated\n  // capability.\n  // TODO: given global\u2019s relevant settings object\u2019s cross-origin isolated\n  // capability?\n  timingInfo.endTime = coarsenedSharedCurrentTime()\n\n  // 10. Set response\u2019s timing info to timingInfo.\n  response.timingInfo = timingInfo\n\n  // 11. Mark resource timing for timingInfo, originalURL, initiatorType,\n  // global, and cacheState.\n  markResourceTiming(\n    timingInfo,\n    originalURL.href,\n    initiatorType,\n    globalThis,\n    cacheState\n  )\n}\n\n// https://w3c.github.io/resource-timing/#dfn-mark-resource-timing\nconst markResourceTiming = performance.markResourceTiming\n\n// https://fetch.spec.whatwg.org/#abort-fetch\nfunction abortFetch (p, request, responseObject, error) {\n  // 1. Reject promise with error.\n  if (p) {\n    // We might have already resolved the promise at this stage\n    p.reject(error)\n  }\n\n  // 2. If request\u2019s body is not null and is readable, then cancel request\u2019s\n  // body with error.\n  if (request.body != null && isReadable(request.body?.stream)) {\n    request.body.stream.cancel(error).catch((err) => {\n      if (err.code === 'ERR_INVALID_STATE') {\n        // Node bug?\n        return\n      }\n      throw err\n    })\n  }\n\n  // 3. If responseObject is null, then return.\n  if (responseObject == null) {\n    return\n  }\n\n  // 4. Let response be responseObject\u2019s response.\n  const response = responseObject[kState]\n\n  // 5. If response\u2019s body is not null and is readable, then error response\u2019s\n  // body with error.\n  if (response.body != null && isReadable(response.body?.stream)) {\n    response.body.stream.cancel(error).catch((err) => {\n      if (err.code === 'ERR_INVALID_STATE') {\n        // Node bug?\n        return\n      }\n      throw err\n    })\n  }\n}\n\n// https://fetch.spec.whatwg.org/#fetching\nfunction fetching ({\n  request,\n  processRequestBodyChunkLength,\n  processRequestEndOfBody,\n  processResponse,\n  processResponseEndOfBody,\n  processResponseConsumeBody,\n  useParallelQueue = false,\n  dispatcher = getGlobalDispatcher() // undici\n}) {\n  // Ensure that the dispatcher is set accordingly\n  assert(dispatcher)\n\n  // 1. Let taskDestination be null.\n  let taskDestination = null\n\n  // 2. Let crossOriginIsolatedCapability be false.\n  let crossOriginIsolatedCapability = false\n\n  // 3. If request\u2019s client is non-null, then:\n  if (request.client != null) {\n    // 1. Set taskDestination to request\u2019s client\u2019s global object.\n    taskDestination = request.client.globalObject\n\n    // 2. Set crossOriginIsolatedCapability to request\u2019s client\u2019s cross-origin\n    // isolated capability.\n    crossOriginIsolatedCapability =\n      request.client.crossOriginIsolatedCapability\n  }\n\n  // 4. If useParallelQueue is true, then set taskDestination to the result of\n  // starting a new parallel queue.\n  // TODO\n\n  // 5. Let timingInfo be a new fetch timing info whose start time and\n  // post-redirect start time are the coarsened shared current time given\n  // crossOriginIsolatedCapability.\n  const currentTime = coarsenedSharedCurrentTime(crossOriginIsolatedCapability)\n  const timingInfo = createOpaqueTimingInfo({\n    startTime: currentTime\n  })\n\n  // 6. Let fetchParams be a new fetch params whose\n  // request is request,\n  // timing info is timingInfo,\n  // process request body chunk length is processRequestBodyChunkLength,\n  // process request end-of-body is processRequestEndOfBody,\n  // process response is processResponse,\n  // process response consume body is processResponseConsumeBody,\n  // process response end-of-body is processResponseEndOfBody,\n  // task destination is taskDestination,\n  // and cross-origin isolated capability is crossOriginIsolatedCapability.\n  const fetchParams = {\n    controller: new Fetch(dispatcher),\n    request,\n    timingInfo,\n    processRequestBodyChunkLength,\n    processRequestEndOfBody,\n    processResponse,\n    processResponseConsumeBody,\n    processResponseEndOfBody,\n    taskDestination,\n    crossOriginIsolatedCapability\n  }\n\n  // 7. If request\u2019s body is a byte sequence, then set request\u2019s body to\n  //    request\u2019s body as a body.\n  // NOTE: Since fetching is only called from fetch, body should already be\n  // extracted.\n  assert(!request.body || request.body.stream)\n\n  // 8. If request\u2019s window is \"client\", then set request\u2019s window to request\u2019s\n  // client, if request\u2019s client\u2019s global object is a Window object; otherwise\n  // \"no-window\".\n  if (request.window === 'client') {\n    // TODO: What if request.client is null?\n    request.window =\n      request.client?.globalObject?.constructor?.name === 'Window'\n        ? request.client\n        : 'no-window'\n  }\n\n  // 9. If request\u2019s origin is \"client\", then set request\u2019s origin to request\u2019s\n  // client\u2019s origin.\n  if (request.origin === 'client') {\n    request.origin = request.client.origin\n  }\n\n  // 10. If all of the following conditions are true:\n  // TODO\n\n  // 11. If request\u2019s policy container is \"client\", then:\n  if (request.policyContainer === 'client') {\n    // 1. If request\u2019s client is non-null, then set request\u2019s policy\n    // container to a clone of request\u2019s client\u2019s policy container. [HTML]\n    if (request.client != null) {\n      request.policyContainer = clonePolicyContainer(\n        request.client.policyContainer\n      )\n    } else {\n      // 2. Otherwise, set request\u2019s policy container to a new policy\n      // container.\n      request.policyContainer = makePolicyContainer()\n    }\n  }\n\n  // 12. If request\u2019s header list does not contain `Accept`, then:\n  if (!request.headersList.contains('accept', true)) {\n    // 1. Let value be `*/*`.\n    const value = '*/*'\n\n    // 2. A user agent should set value to the first matching statement, if\n    // any, switching on request\u2019s destination:\n    // \"document\"\n    // \"frame\"\n    // \"iframe\"\n    // `text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8`\n    // \"image\"\n    // `image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5`\n    // \"style\"\n    // `text/css,*/*;q=0.1`\n    // TODO\n\n    // 3. Append `Accept`/value to request\u2019s header list.\n    request.headersList.append('accept', value, true)\n  }\n\n  // 13. If request\u2019s header list does not contain `Accept-Language`, then\n  // user agents should append `Accept-Language`/an appropriate value to\n  // request\u2019s header list.\n  if (!request.headersList.contains('accept-language', true)) {\n    request.headersList.append('accept-language', '*', true)\n  }\n\n  // 14. If request\u2019s priority is null, then use request\u2019s initiator and\n  // destination appropriately in setting request\u2019s priority to a\n  // user-agent-defined object.\n  if (request.priority === null) {\n    // TODO\n  }\n\n  // 15. If request is a subresource request, then:\n  if (subresourceSet.has(request.destination)) {\n    // TODO\n  }\n\n  // 16. Run main fetch given fetchParams.\n  mainFetch(fetchParams)\n    .catch(err => {\n      fetchParams.controller.terminate(err)\n    })\n\n  // 17. Return fetchParam's controller\n  return fetchParams.controller\n}\n\n// https://fetch.spec.whatwg.org/#concept-main-fetch\nasync function mainFetch (fetchParams, recursive = false) {\n  // 1. Let request be fetchParams\u2019s request.\n  const request = fetchParams.request\n\n  // 2. Let response be null.\n  let response = null\n\n  // 3. If request\u2019s local-URLs-only flag is set and request\u2019s current URL is\n  // not local, then set response to a network error.\n  if (request.localURLsOnly && !urlIsLocal(requestCurrentURL(request))) {\n    response = makeNetworkError('local URLs only')\n  }\n\n  // 4. Run report Content Security Policy violations for request.\n  // TODO\n\n  // 5. Upgrade request to a potentially trustworthy URL, if appropriate.\n  tryUpgradeRequestToAPotentiallyTrustworthyURL(request)\n\n  // 6. If should request be blocked due to a bad port, should fetching request\n  // be blocked as mixed content, or should request be blocked by Content\n  // Security Policy returns blocked, then set response to a network error.\n  if (requestBadPort(request) === 'blocked') {\n    response = makeNetworkError('bad port')\n  }\n  // TODO: should fetching request be blocked as mixed content?\n  // TODO: should request be blocked by Content Security Policy?\n\n  // 7. If request\u2019s referrer policy is the empty string, then set request\u2019s\n  // referrer policy to request\u2019s policy container\u2019s referrer policy.\n  if (request.referrerPolicy === '') {\n    request.referrerPolicy = request.policyContainer.referrerPolicy\n  }\n\n  // 8. If request\u2019s referrer is not \"no-referrer\", then set request\u2019s\n  // referrer to the result of invoking determine request\u2019s referrer.\n  if (request.referrer !== 'no-referrer') {\n    request.referrer = determineRequestsReferrer(request)\n  }\n\n  // 9. Set request\u2019s current URL\u2019s scheme to \"https\" if all of the following\n  // conditions are true:\n  // - request\u2019s current URL\u2019s scheme is \"http\"\n  // - request\u2019s current URL\u2019s host is a domain\n  // - Matching request\u2019s current URL\u2019s host per Known HSTS Host Domain Name\n  //   Matching results in either a superdomain match with an asserted\n  //   includeSubDomains directive or a congruent match (with or without an\n  //   asserted includeSubDomains directive). [HSTS]\n  // TODO\n\n  // 10. If recursive is false, then run the remaining steps in parallel.\n  // TODO\n\n  // 11. If response is null, then set response to the result of running\n  // the steps corresponding to the first matching statement:\n  if (response === null) {\n    response = await (async () => {\n      const currentURL = requestCurrentURL(request)\n\n      if (\n        // - request\u2019s current URL\u2019s origin is same origin with request\u2019s origin,\n        //   and request\u2019s response tainting is \"basic\"\n        (sameOrigin(currentURL, request.url) && request.responseTainting === 'basic') ||\n        // request\u2019s current URL\u2019s scheme is \"data\"\n        (currentURL.protocol === 'data:') ||\n        // - request\u2019s mode is \"navigate\" or \"websocket\"\n        (request.mode === 'navigate' || request.mode === 'websocket')\n      ) {\n        // 1. Set request\u2019s response tainting to \"basic\".\n        request.responseTainting = 'basic'\n\n        // 2. Return the result of running scheme fetch given fetchParams.\n        return await schemeFetch(fetchParams)\n      }\n\n      // request\u2019s mode is \"same-origin\"\n      if (request.mode === 'same-origin') {\n        // 1. Return a network error.\n        return makeNetworkError('request mode cannot be \"same-origin\"')\n      }\n\n      // request\u2019s mode is \"no-cors\"\n      if (request.mode === 'no-cors') {\n        // 1. If request\u2019s redirect mode is not \"follow\", then return a network\n        // error.\n        if (request.redirect !== 'follow') {\n          return makeNetworkError(\n            'redirect mode cannot be \"follow\" for \"no-cors\" request'\n          )\n        }\n\n        // 2. Set request\u2019s response tainting to \"opaque\".\n        request.responseTainting = 'opaque'\n\n        // 3. Return the result of running scheme fetch given fetchParams.\n        return await schemeFetch(fetchParams)\n      }\n\n      // request\u2019s current URL\u2019s scheme is not an HTTP(S) scheme\n      if (!urlIsHttpHttpsScheme(requestCurrentURL(request))) {\n        // Return a network error.\n        return makeNetworkError('URL scheme must be a HTTP(S) scheme')\n      }\n\n      // - request\u2019s use-CORS-preflight flag is set\n      // - request\u2019s unsafe-request flag is set and either request\u2019s method is\n      //   not a CORS-safelisted method or CORS-unsafe request-header names with\n      //   request\u2019s header list is not empty\n      //    1. Set request\u2019s response tainting to \"cors\".\n      //    2. Let corsWithPreflightResponse be the result of running HTTP fetch\n      //    given fetchParams and true.\n      //    3. If corsWithPreflightResponse is a network error, then clear cache\n      //    entries using request.\n      //    4. Return corsWithPreflightResponse.\n      // TODO\n\n      // Otherwise\n      //    1. Set request\u2019s response tainting to \"cors\".\n      request.responseTainting = 'cors'\n\n      //    2. Return the result of running HTTP fetch given fetchParams.\n      return await httpFetch(fetchParams)\n    })()\n  }\n\n  // 12. If recursive is true, then return response.\n  if (recursive) {\n    return response\n  }\n\n  // 13. If response is not a network error and response is not a filtered\n  // response, then:\n  if (response.status !== 0 && !response.internalResponse) {\n    // If request\u2019s response tainting is \"cors\", then:\n    if (request.responseTainting === 'cors') {\n      // 1. Let headerNames be the result of extracting header list values\n      // given `Access-Control-Expose-Headers` and response\u2019s header list.\n      // TODO\n      // 2. If request\u2019s credentials mode is not \"include\" and headerNames\n      // contains `*`, then set response\u2019s CORS-exposed header-name list to\n      // all unique header names in response\u2019s header list.\n      // TODO\n      // 3. Otherwise, if headerNames is not null or failure, then set\n      // response\u2019s CORS-exposed header-name list to headerNames.\n      // TODO\n    }\n\n    // Set response to the following filtered response with response as its\n    // internal response, depending on request\u2019s response tainting:\n    if (request.responseTainting === 'basic') {\n      response = filterResponse(response, 'basic')\n    } else if (request.responseTainting === 'cors') {\n      response = filterResponse(response, 'cors')\n    } else if (request.responseTainting === 'opaque') {\n      response = filterResponse(response, 'opaque')\n    } else {\n      assert(false)\n    }\n  }\n\n  // 14. Let internalResponse be response, if response is a network error,\n  // and response\u2019s internal response otherwise.\n  let internalResponse =\n    response.status === 0 ? response : response.internalResponse\n\n  // 15. If internalResponse\u2019s URL list is empty, then set it to a clone of\n  // request\u2019s URL list.\n  if (internalResponse.urlList.length === 0) {\n    internalResponse.urlList.push(...request.urlList)\n  }\n\n  // 16. If request\u2019s timing allow failed flag is unset, then set\n  // internalResponse\u2019s timing allow passed flag.\n  if (!request.timingAllowFailed) {\n    response.timingAllowPassed = true\n  }\n\n  // 17. If response is not a network error and any of the following returns\n  // blocked\n  // - should internalResponse to request be blocked as mixed content\n  // - should internalResponse to request be blocked by Content Security Policy\n  // - should internalResponse to request be blocked due to its MIME type\n  // - should internalResponse to request be blocked due to nosniff\n  // TODO\n\n  // 18. If response\u2019s type is \"opaque\", internalResponse\u2019s status is 206,\n  // internalResponse\u2019s range-requested flag is set, and request\u2019s header\n  // list does not contain `Range`, then set response and internalResponse\n  // to a network error.\n  if (\n    response.type === 'opaque' &&\n    internalResponse.status === 206 &&\n    internalResponse.rangeRequested &&\n    !request.headers.contains('range', true)\n  ) {\n    response = internalResponse = makeNetworkError()\n  }\n\n  // 19. If response is not a network error and either request\u2019s method is\n  // `HEAD` or `CONNECT`, or internalResponse\u2019s status is a null body status,\n  // set internalResponse\u2019s body to null and disregard any enqueuing toward\n  // it (if any).\n  if (\n    response.status !== 0 &&\n    (request.method === 'HEAD' ||\n      request.method === 'CONNECT' ||\n      nullBodyStatus.includes(internalResponse.status))\n  ) {\n    internalResponse.body = null\n    fetchParams.controller.dump = true\n  }\n\n  // 20. If request\u2019s integrity metadata is not the empty string, then:\n  if (request.integrity) {\n    // 1. Let processBodyError be this step: run fetch finale given fetchParams\n    // and a network error.\n    const processBodyError = (reason) =>\n      fetchFinale(fetchParams, makeNetworkError(reason))\n\n    // 2. If request\u2019s response tainting is \"opaque\", or response\u2019s body is null,\n    // then run processBodyError and abort these steps.\n    if (request.responseTainting === 'opaque' || response.body == null) {\n      processBodyError(response.error)\n      return\n    }\n\n    // 3. Let processBody given bytes be these steps:\n    const processBody = (bytes) => {\n      // 1. If bytes do not match request\u2019s integrity metadata,\n      // then run processBodyError and abort these steps. [SRI]\n      if (!bytesMatch(bytes, request.integrity)) {\n        processBodyError('integrity mismatch')\n        return\n      }\n\n      // 2. Set response\u2019s body to bytes as a body.\n      response.body = safelyExtractBody(bytes)[0]\n\n      // 3. Run fetch finale given fetchParams and response.\n      fetchFinale(fetchParams, response)\n    }\n\n    // 4. Fully read response\u2019s body given processBody and processBodyError.\n    await fullyReadBody(response.body, processBody, processBodyError)\n  } else {\n    // 21. Otherwise, run fetch finale given fetchParams and response.\n    fetchFinale(fetchParams, response)\n  }\n}\n\n// https://fetch.spec.whatwg.org/#concept-scheme-fetch\n// given a fetch params fetchParams\nfunction schemeFetch (fetchParams) {\n  // Note: since the connection is destroyed on redirect, which sets fetchParams to a\n  // cancelled state, we do not want this condition to trigger *unless* there have been\n  // no redirects. See https://github.com/nodejs/undici/issues/1776\n  // 1. If fetchParams is canceled, then return the appropriate network error for fetchParams.\n  if (isCancelled(fetchParams) && fetchParams.request.redirectCount === 0) {\n    return Promise.resolve(makeAppropriateNetworkError(fetchParams))\n  }\n\n  // 2. Let request be fetchParams\u2019s request.\n  const { request } = fetchParams\n\n  const { protocol: scheme } = requestCurrentURL(request)\n\n  // 3. Switch on request\u2019s current URL\u2019s scheme and run the associated steps:\n  switch (scheme) {\n    case 'about:': {\n      // If request\u2019s current URL\u2019s path is the string \"blank\", then return a new response\n      // whose status message is `OK`, header list is \u00AB (`Content-Type`, `text/html;charset=utf-8`) \u00BB,\n      // and body is the empty byte sequence as a body.\n\n      // Otherwise, return a network error.\n      return Promise.resolve(makeNetworkError('about scheme is not supported'))\n    }\n    case 'blob:': {\n      if (!resolveObjectURL) {\n        resolveObjectURL = require('node:buffer').resolveObjectURL\n      }\n\n      // 1. Let blobURLEntry be request\u2019s current URL\u2019s blob URL entry.\n      const blobURLEntry = requestCurrentURL(request)\n\n      // https://github.com/web-platform-tests/wpt/blob/7b0ebaccc62b566a1965396e5be7bb2bc06f841f/FileAPI/url/resources/fetch-tests.js#L52-L56\n      // Buffer.resolveObjectURL does not ignore URL queries.\n      if (blobURLEntry.search.length !== 0) {\n        return Promise.resolve(makeNetworkError('NetworkError when attempting to fetch resource.'))\n      }\n\n      const blob = resolveObjectURL(blobURLEntry.toString())\n\n      // 2. If request\u2019s method is not `GET`, blobURLEntry is null, or blobURLEntry\u2019s\n      //    object is not a Blob object, then return a network error.\n      if (request.method !== 'GET' || !isBlobLike(blob)) {\n        return Promise.resolve(makeNetworkError('invalid method'))\n      }\n\n      // 3. Let blob be blobURLEntry\u2019s object.\n      // Note: done above\n\n      // 4. Let response be a new response.\n      const response = makeResponse()\n\n      // 5. Let fullLength be blob\u2019s size.\n      const fullLength = blob.size\n\n      // 6. Let serializedFullLength be fullLength, serialized and isomorphic encoded.\n      const serializedFullLength = isomorphicEncode(`${fullLength}`)\n\n      // 7. Let type be blob\u2019s type.\n      const type = blob.type\n\n      // 8. If request\u2019s header list does not contain `Range`:\n      // 9. Otherwise:\n      if (!request.headersList.contains('range', true)) {\n        // 1. Let bodyWithType be the result of safely extracting blob.\n        // Note: in the FileAPI a blob \"object\" is a Blob *or* a MediaSource.\n        // In node, this can only ever be a Blob. Therefore we can safely\n        // use extractBody directly.\n        const bodyWithType = extractBody(blob)\n\n        // 2. Set response\u2019s status message to `OK`.\n        response.statusText = 'OK'\n\n        // 3. Set response\u2019s body to bodyWithType\u2019s body.\n        response.body = bodyWithType[0]\n\n        // 4. Set response\u2019s header list to \u00AB (`Content-Length`, serializedFullLength), (`Content-Type`, type) \u00BB.\n        response.headersList.set('content-length', serializedFullLength, true)\n        response.headersList.set('content-type', type, true)\n      } else {\n        // 1. Set response\u2019s range-requested flag.\n        response.rangeRequested = true\n\n        // 2. Let rangeHeader be the result of getting `Range` from request\u2019s header list.\n        const rangeHeader = request.headersList.get('range', true)\n\n        // 3. Let rangeValue be the result of parsing a single range header value given rangeHeader and true.\n        const rangeValue = simpleRangeHeaderValue(rangeHeader, true)\n\n        // 4. If rangeValue is failure, then return a network error.\n        if (rangeValue === 'failure') {\n          return Promise.resolve(makeNetworkError('failed to fetch the data URL'))\n        }\n\n        // 5. Let (rangeStart, rangeEnd) be rangeValue.\n        let { rangeStartValue: rangeStart, rangeEndValue: rangeEnd } = rangeValue\n\n        // 6. If rangeStart is null:\n        // 7. Otherwise:\n        if (rangeStart === null) {\n          // 1. Set rangeStart to fullLength \u2212 rangeEnd.\n          rangeStart = fullLength - rangeEnd\n\n          // 2. Set rangeEnd to rangeStart + rangeEnd \u2212 1.\n          rangeEnd = rangeStart + rangeEnd - 1\n        } else {\n          // 1. If rangeStart is greater than or equal to fullLength, then return a network error.\n          if (rangeStart >= fullLength) {\n            return Promise.resolve(makeNetworkError('Range start is greater than the blob\\'s size.'))\n          }\n\n          // 2. If rangeEnd is null or rangeEnd is greater than or equal to fullLength, then set\n          //    rangeEnd to fullLength \u2212 1.\n          if (rangeEnd === null || rangeEnd >= fullLength) {\n            rangeEnd = fullLength - 1\n          }\n        }\n\n        // 8. Let slicedBlob be the result of invoking slice blob given blob, rangeStart,\n        //    rangeEnd + 1, and type.\n        const slicedBlob = blob.slice(rangeStart, rangeEnd, type)\n\n        // 9. Let slicedBodyWithType be the result of safely extracting slicedBlob.\n        // Note: same reason as mentioned above as to why we use extractBody\n        const slicedBodyWithType = extractBody(slicedBlob)\n\n        // 10. Set response\u2019s body to slicedBodyWithType\u2019s body.\n        response.body = slicedBodyWithType[0]\n\n        // 11. Let serializedSlicedLength be slicedBlob\u2019s size, serialized and isomorphic encoded.\n        const serializedSlicedLength = isomorphicEncode(`${slicedBlob.size}`)\n\n        // 12. Let contentRange be the result of invoking build a content range given rangeStart,\n        //     rangeEnd, and fullLength.\n        const contentRange = buildContentRange(rangeStart, rangeEnd, fullLength)\n\n        // 13. Set response\u2019s status to 206.\n        response.status = 206\n\n        // 14. Set response\u2019s status message to `Partial Content`.\n        response.statusText = 'Partial Content'\n\n        // 15. Set response\u2019s header list to \u00AB (`Content-Length`, serializedSlicedLength),\n        //     (`Content-Type`, type), (`Content-Range`, contentRange) \u00BB.\n        response.headersList.set('content-length', serializedSlicedLength, true)\n        response.headersList.set('content-type', type, true)\n        response.headersList.set('content-range', contentRange, true)\n      }\n\n      // 10. Return response.\n      return Promise.resolve(response)\n    }\n    case 'data:': {\n      // 1. Let dataURLStruct be the result of running the\n      //    data: URL processor on request\u2019s current URL.\n      const currentURL = requestCurrentURL(request)\n      const dataURLStruct = dataURLProcessor(currentURL)\n\n      // 2. If dataURLStruct is failure, then return a\n      //    network error.\n      if (dataURLStruct === 'failure') {\n        return Promise.resolve(makeNetworkError('failed to fetch the data URL'))\n      }\n\n      // 3. Let mimeType be dataURLStruct\u2019s MIME type, serialized.\n      const mimeType = serializeAMimeType(dataURLStruct.mimeType)\n\n      // 4. Return a response whose status message is `OK`,\n      //    header list is \u00AB (`Content-Type`, mimeType) \u00BB,\n      //    and body is dataURLStruct\u2019s body as a body.\n      return Promise.resolve(makeResponse({\n        statusText: 'OK',\n        headersList: [\n          ['content-type', { name: 'Content-Type', value: mimeType }]\n        ],\n        body: safelyExtractBody(dataURLStruct.body)[0]\n      }))\n    }\n    case 'file:': {\n      // For now, unfortunate as it is, file URLs are left as an exercise for the reader.\n      // When in doubt, return a network error.\n      return Promise.resolve(makeNetworkError('not implemented... yet...'))\n    }\n    case 'http:':\n    case 'https:': {\n      // Return the result of running HTTP fetch given fetchParams.\n\n      return httpFetch(fetchParams)\n        .catch((err) => makeNetworkError(err))\n    }\n    default: {\n      return Promise.resolve(makeNetworkError('unknown scheme'))\n    }\n  }\n}\n\n// https://fetch.spec.whatwg.org/#finalize-response\nfunction finalizeResponse (fetchParams, response) {\n  // 1. Set fetchParams\u2019s request\u2019s done flag.\n  fetchParams.request.done = true\n\n  // 2, If fetchParams\u2019s process response done is not null, then queue a fetch\n  // task to run fetchParams\u2019s process response done given response, with\n  // fetchParams\u2019s task destination.\n  if (fetchParams.processResponseDone != null) {\n    queueMicrotask(() => fetchParams.processResponseDone(response))\n  }\n}\n\n// https://fetch.spec.whatwg.org/#fetch-finale\nfunction fetchFinale (fetchParams, response) {\n  // 1. Let timingInfo be fetchParams\u2019s timing info.\n  let timingInfo = fetchParams.timingInfo\n\n  // 2. If response is not a network error and fetchParams\u2019s request\u2019s client is a secure context,\n  //    then set timingInfo\u2019s server-timing headers to the result of getting, decoding, and splitting\n  //    `Server-Timing` from response\u2019s internal response\u2019s header list.\n  // TODO\n\n  // 3. Let processResponseEndOfBody be the following steps:\n  const processResponseEndOfBody = () => {\n    // 1. Let unsafeEndTime be the unsafe shared current time.\n    const unsafeEndTime = Date.now() // ?\n\n    // 2. If fetchParams\u2019s request\u2019s destination is \"document\", then set fetchParams\u2019s controller\u2019s\n    //    full timing info to fetchParams\u2019s timing info.\n    if (fetchParams.request.destination === 'document') {\n      fetchParams.controller.fullTimingInfo = timingInfo\n    }\n\n    // 3. Set fetchParams\u2019s controller\u2019s report timing steps to the following steps given a global object global:\n    fetchParams.controller.reportTimingSteps = () => {\n      // 1. If fetchParams\u2019s request\u2019s URL\u2019s scheme is not an HTTP(S) scheme, then return.\n      if (fetchParams.request.url.protocol !== 'https:') {\n        return\n      }\n\n      // 2. Set timingInfo\u2019s end time to the relative high resolution time given unsafeEndTime and global.\n      timingInfo.endTime = unsafeEndTime\n\n      // 3. Let cacheState be response\u2019s cache state.\n      let cacheState = response.cacheState\n\n      // 4. Let bodyInfo be response\u2019s body info.\n      const bodyInfo = response.bodyInfo\n\n      // 5. If response\u2019s timing allow passed flag is not set, then set timingInfo to the result of creating an\n      //    opaque timing info for timingInfo and set cacheState to the empty string.\n      if (!response.timingAllowPassed) {\n        timingInfo = createOpaqueTimingInfo(timingInfo)\n\n        cacheState = ''\n      }\n\n      // 6. Let responseStatus be 0.\n      let responseStatus = 0\n\n      // 7. If fetchParams\u2019s request\u2019s mode is not \"navigate\" or response\u2019s has-cross-origin-redirects is false:\n      if (fetchParams.request.mode !== 'navigator' || !response.hasCrossOriginRedirects) {\n        // 1. Set responseStatus to response\u2019s status.\n        responseStatus = response.status\n\n        // 2. Let mimeType be the result of extracting a MIME type from response\u2019s header list.\n        const mimeType = extractMimeType(response.headersList)\n\n        // 3. If mimeType is not failure, then set bodyInfo\u2019s content type to the result of minimizing a supported MIME type given mimeType.\n        if (mimeType !== 'failure') {\n          bodyInfo.contentType = minimizeSupportedMimeType(mimeType)\n        }\n      }\n\n      // 8. If fetchParams\u2019s request\u2019s initiator type is non-null, then mark resource timing given timingInfo,\n      //    fetchParams\u2019s request\u2019s URL, fetchParams\u2019s request\u2019s initiator type, global, cacheState, bodyInfo,\n      //    and responseStatus.\n      if (fetchParams.request.initiatorType != null) {\n        // TODO: update markresourcetiming\n        markResourceTiming(timingInfo, fetchParams.request.url.href, fetchParams.request.initiatorType, globalThis, cacheState, bodyInfo, responseStatus)\n      }\n    }\n\n    // 4. Let processResponseEndOfBodyTask be the following steps:\n    const processResponseEndOfBodyTask = () => {\n      // 1. Set fetchParams\u2019s request\u2019s done flag.\n      fetchParams.request.done = true\n\n      // 2. If fetchParams\u2019s process response end-of-body is non-null, then run fetchParams\u2019s process\n      //    response end-of-body given response.\n      if (fetchParams.processResponseEndOfBody != null) {\n        queueMicrotask(() => fetchParams.processResponseEndOfBody(response))\n      }\n\n      // 3. If fetchParams\u2019s request\u2019s initiator type is non-null and fetchParams\u2019s request\u2019s client\u2019s\n      //    global object is fetchParams\u2019s task destination, then run fetchParams\u2019s controller\u2019s report\n      //    timing steps given fetchParams\u2019s request\u2019s client\u2019s global object.\n      if (fetchParams.request.initiatorType != null) {\n        fetchParams.controller.reportTimingSteps()\n      }\n    }\n\n    // 5. Queue a fetch task to run processResponseEndOfBodyTask with fetchParams\u2019s task destination\n    queueMicrotask(() => processResponseEndOfBodyTask())\n  }\n\n  // 4. If fetchParams\u2019s process response is non-null, then queue a fetch task to run fetchParams\u2019s\n  //    process response given response, with fetchParams\u2019s task destination.\n  if (fetchParams.processResponse != null) {\n    queueMicrotask(() => {\n      fetchParams.processResponse(response)\n      fetchParams.processResponse = null\n    })\n  }\n\n  // 5. Let internalResponse be response, if response is a network error; otherwise response\u2019s internal response.\n  const internalResponse = response.type === 'error' ? response : (response.internalResponse ?? response)\n\n  // 6. If internalResponse\u2019s body is null, then run processResponseEndOfBody.\n  // 7. Otherwise:\n  if (internalResponse.body == null) {\n    processResponseEndOfBody()\n  } else {\n    // mcollina: all the following steps of the specs are skipped.\n    // The internal transform stream is not needed.\n    // See https://github.com/nodejs/undici/pull/3093#issuecomment-2050198541\n\n    // 1. Let transformStream be a new TransformStream.\n    // 2. Let identityTransformAlgorithm be an algorithm which, given chunk, enqueues chunk in transformStream.\n    // 3. Set up transformStream with transformAlgorithm set to identityTransformAlgorithm and flushAlgorithm\n    //    set to processResponseEndOfBody.\n    // 4. Set internalResponse\u2019s body\u2019s stream to the result of internalResponse\u2019s body\u2019s stream piped through transformStream.\n\n    finished(internalResponse.body.stream, () => {\n      processResponseEndOfBody()\n    })\n  }\n}\n\n// https://fetch.spec.whatwg.org/#http-fetch\nasync function httpFetch (fetchParams) {\n  // 1. Let request be fetchParams\u2019s request.\n  const request = fetchParams.request\n\n  // 2. Let response be null.\n  let response = null\n\n  // 3. Let actualResponse be null.\n  let actualResponse = null\n\n  // 4. Let timingInfo be fetchParams\u2019s timing info.\n  const timingInfo = fetchParams.timingInfo\n\n  // 5. If request\u2019s service-workers mode is \"all\", then:\n  if (request.serviceWorkers === 'all') {\n    // TODO\n  }\n\n  // 6. If response is null, then:\n  if (response === null) {\n    // 1. If makeCORSPreflight is true and one of these conditions is true:\n    // TODO\n\n    // 2. If request\u2019s redirect mode is \"follow\", then set request\u2019s\n    // service-workers mode to \"none\".\n    if (request.redirect === 'follow') {\n      request.serviceWorkers = 'none'\n    }\n\n    // 3. Set response and actualResponse to the result of running\n    // HTTP-network-or-cache fetch given fetchParams.\n    actualResponse = response = await httpNetworkOrCacheFetch(fetchParams)\n\n    // 4. If request\u2019s response tainting is \"cors\" and a CORS check\n    // for request and response returns failure, then return a network error.\n    if (\n      request.responseTainting === 'cors' &&\n      corsCheck(request, response) === 'failure'\n    ) {\n      return makeNetworkError('cors failure')\n    }\n\n    // 5. If the TAO check for request and response returns failure, then set\n    // request\u2019s timing allow failed flag.\n    if (TAOCheck(request, response) === 'failure') {\n      request.timingAllowFailed = true\n    }\n  }\n\n  // 7. If either request\u2019s response tainting or response\u2019s type\n  // is \"opaque\", and the cross-origin resource policy check with\n  // request\u2019s origin, request\u2019s client, request\u2019s destination,\n  // and actualResponse returns blocked, then return a network error.\n  if (\n    (request.responseTainting === 'opaque' || response.type === 'opaque') &&\n    crossOriginResourcePolicyCheck(\n      request.origin,\n      request.client,\n      request.destination,\n      actualResponse\n    ) === 'blocked'\n  ) {\n    return makeNetworkError('blocked')\n  }\n\n  // 8. If actualResponse\u2019s status is a redirect status, then:\n  if (redirectStatusSet.has(actualResponse.status)) {\n    // 1. If actualResponse\u2019s status is not 303, request\u2019s body is not null,\n    // and the connection uses HTTP/2, then user agents may, and are even\n    // encouraged to, transmit an RST_STREAM frame.\n    // See, https://github.com/whatwg/fetch/issues/1288\n    if (request.redirect !== 'manual') {\n      fetchParams.controller.connection.destroy(undefined, false)\n    }\n\n    // 2. Switch on request\u2019s redirect mode:\n    if (request.redirect === 'error') {\n      // Set response to a network error.\n      response = makeNetworkError('unexpected redirect')\n    } else if (request.redirect === 'manual') {\n      // Set response to an opaque-redirect filtered response whose internal\n      // response is actualResponse.\n      // NOTE(spec): On the web this would return an `opaqueredirect` response,\n      // but that doesn't make sense server side.\n      // See https://github.com/nodejs/undici/issues/1193.\n      response = actualResponse\n    } else if (request.redirect === 'follow') {\n      // Set response to the result of running HTTP-redirect fetch given\n      // fetchParams and response.\n      response = await httpRedirectFetch(fetchParams, response)\n    } else {\n      assert(false)\n    }\n  }\n\n  // 9. Set response\u2019s timing info to timingInfo.\n  response.timingInfo = timingInfo\n\n  // 10. Return response.\n  return response\n}\n\n// https://fetch.spec.whatwg.org/#http-redirect-fetch\nfunction httpRedirectFetch (fetchParams, response) {\n  // 1. Let request be fetchParams\u2019s request.\n  const request = fetchParams.request\n\n  // 2. Let actualResponse be response, if response is not a filtered response,\n  // and response\u2019s internal response otherwise.\n  const actualResponse = response.internalResponse\n    ? response.internalResponse\n    : response\n\n  // 3. Let locationURL be actualResponse\u2019s location URL given request\u2019s current\n  // URL\u2019s fragment.\n  let locationURL\n\n  try {\n    locationURL = responseLocationURL(\n      actualResponse,\n      requestCurrentURL(request).hash\n    )\n\n    // 4. If locationURL is null, then return response.\n    if (locationURL == null) {\n      return response\n    }\n  } catch (err) {\n    // 5. If locationURL is failure, then return a network error.\n    return Promise.resolve(makeNetworkError(err))\n  }\n\n  // 6. If locationURL\u2019s scheme is not an HTTP(S) scheme, then return a network\n  // error.\n  if (!urlIsHttpHttpsScheme(locationURL)) {\n    return Promise.resolve(makeNetworkError('URL scheme must be a HTTP(S) scheme'))\n  }\n\n  // 7. If request\u2019s redirect count is 20, then return a network error.\n  if (request.redirectCount === 20) {\n    return Promise.resolve(makeNetworkError('redirect count exceeded'))\n  }\n\n  // 8. Increase request\u2019s redirect count by 1.\n  request.redirectCount += 1\n\n  // 9. If request\u2019s mode is \"cors\", locationURL includes credentials, and\n  // request\u2019s origin is not same origin with locationURL\u2019s origin, then return\n  //  a network error.\n  if (\n    request.mode === 'cors' &&\n    (locationURL.username || locationURL.password) &&\n    !sameOrigin(request, locationURL)\n  ) {\n    return Promise.resolve(makeNetworkError('cross origin not allowed for request mode \"cors\"'))\n  }\n\n  // 10. If request\u2019s response tainting is \"cors\" and locationURL includes\n  // credentials, then return a network error.\n  if (\n    request.responseTainting === 'cors' &&\n    (locationURL.username || locationURL.password)\n  ) {\n    return Promise.resolve(makeNetworkError(\n      'URL cannot contain credentials for request mode \"cors\"'\n    ))\n  }\n\n  // 11. If actualResponse\u2019s status is not 303, request\u2019s body is non-null,\n  // and request\u2019s body\u2019s source is null, then return a network error.\n  if (\n    actualResponse.status !== 303 &&\n    request.body != null &&\n    request.body.source == null\n  ) {\n    return Promise.resolve(makeNetworkError())\n  }\n\n  // 12. If one of the following is true\n  // - actualResponse\u2019s status is 301 or 302 and request\u2019s method is `POST`\n  // - actualResponse\u2019s status is 303 and request\u2019s method is not `GET` or `HEAD`\n  if (\n    ([301, 302].includes(actualResponse.status) && request.method === 'POST') ||\n    (actualResponse.status === 303 &&\n      !GET_OR_HEAD.includes(request.method))\n  ) {\n    // then:\n    // 1. Set request\u2019s method to `GET` and request\u2019s body to null.\n    request.method = 'GET'\n    request.body = null\n\n    // 2. For each headerName of request-body-header name, delete headerName from\n    // request\u2019s header list.\n    for (const headerName of requestBodyHeader) {\n      request.headersList.delete(headerName)\n    }\n  }\n\n  // 13. If request\u2019s current URL\u2019s origin is not same origin with locationURL\u2019s\n  //     origin, then for each headerName of CORS non-wildcard request-header name,\n  //     delete headerName from request\u2019s header list.\n  if (!sameOrigin(requestCurrentURL(request), locationURL)) {\n    // https://fetch.spec.whatwg.org/#cors-non-wildcard-request-header-name\n    request.headersList.delete('authorization', true)\n\n    // https://fetch.spec.whatwg.org/#authentication-entries\n    request.headersList.delete('proxy-authorization', true)\n\n    // \"Cookie\" and \"Host\" are forbidden request-headers, which undici doesn't implement.\n    request.headersList.delete('cookie', true)\n    request.headersList.delete('host', true)\n  }\n\n  // 14. If request\u2019s body is non-null, then set request\u2019s body to the first return\n  // value of safely extracting request\u2019s body\u2019s source.\n  if (request.body != null) {\n    assert(request.body.source != null)\n    request.body = safelyExtractBody(request.body.source)[0]\n  }\n\n  // 15. Let timingInfo be fetchParams\u2019s timing info.\n  const timingInfo = fetchParams.timingInfo\n\n  // 16. Set timingInfo\u2019s redirect end time and post-redirect start time to the\n  // coarsened shared current time given fetchParams\u2019s cross-origin isolated\n  // capability.\n  timingInfo.redirectEndTime = timingInfo.postRedirectStartTime =\n    coarsenedSharedCurrentTime(fetchParams.crossOriginIsolatedCapability)\n\n  // 17. If timingInfo\u2019s redirect start time is 0, then set timingInfo\u2019s\n  //  redirect start time to timingInfo\u2019s start time.\n  if (timingInfo.redirectStartTime === 0) {\n    timingInfo.redirectStartTime = timingInfo.startTime\n  }\n\n  // 18. Append locationURL to request\u2019s URL list.\n  request.urlList.push(locationURL)\n\n  // 19. Invoke set request\u2019s referrer policy on redirect on request and\n  // actualResponse.\n  setRequestReferrerPolicyOnRedirect(request, actualResponse)\n\n  // 20. Return the result of running main fetch given fetchParams and true.\n  return mainFetch(fetchParams, true)\n}\n\n// https://fetch.spec.whatwg.org/#http-network-or-cache-fetch\nasync function httpNetworkOrCacheFetch (\n  fetchParams,\n  isAuthenticationFetch = false,\n  isNewConnectionFetch = false\n) {\n  // 1. Let request be fetchParams\u2019s request.\n  const request = fetchParams.request\n\n  // 2. Let httpFetchParams be null.\n  let httpFetchParams = null\n\n  // 3. Let httpRequest be null.\n  let httpRequest = null\n\n  // 4. Let response be null.\n  let response = null\n\n  // 5. Let storedResponse be null.\n  // TODO: cache\n\n  // 6. Let httpCache be null.\n  const httpCache = null\n\n  // 7. Let the revalidatingFlag be unset.\n  const revalidatingFlag = false\n\n  // 8. Run these steps, but abort when the ongoing fetch is terminated:\n\n  //    1. If request\u2019s window is \"no-window\" and request\u2019s redirect mode is\n  //    \"error\", then set httpFetchParams to fetchParams and httpRequest to\n  //    request.\n  if (request.window === 'no-window' && request.redirect === 'error') {\n    httpFetchParams = fetchParams\n    httpRequest = request\n  } else {\n    // Otherwise:\n\n    // 1. Set httpRequest to a clone of request.\n    httpRequest = cloneRequest(request)\n\n    // 2. Set httpFetchParams to a copy of fetchParams.\n    httpFetchParams = { ...fetchParams }\n\n    // 3. Set httpFetchParams\u2019s request to httpRequest.\n    httpFetchParams.request = httpRequest\n  }\n\n  //    3. Let includeCredentials be true if one of\n  const includeCredentials =\n    request.credentials === 'include' ||\n    (request.credentials === 'same-origin' &&\n      request.responseTainting === 'basic')\n\n  //    4. Let contentLength be httpRequest\u2019s body\u2019s length, if httpRequest\u2019s\n  //    body is non-null; otherwise null.\n  const contentLength = httpRequest.body ? httpRequest.body.length : null\n\n  //    5. Let contentLengthHeaderValue be null.\n  let contentLengthHeaderValue = null\n\n  //    6. If httpRequest\u2019s body is null and httpRequest\u2019s method is `POST` or\n  //    `PUT`, then set contentLengthHeaderValue to `0`.\n  if (\n    httpRequest.body == null &&\n    ['POST', 'PUT'].includes(httpRequest.method)\n  ) {\n    contentLengthHeaderValue = '0'\n  }\n\n  //    7. If contentLength is non-null, then set contentLengthHeaderValue to\n  //    contentLength, serialized and isomorphic encoded.\n  if (contentLength != null) {\n    contentLengthHeaderValue = isomorphicEncode(`${contentLength}`)\n  }\n\n  //    8. If contentLengthHeaderValue is non-null, then append\n  //    `Content-Length`/contentLengthHeaderValue to httpRequest\u2019s header\n  //    list.\n  if (contentLengthHeaderValue != null) {\n    httpRequest.headersList.append('content-length', contentLengthHeaderValue, true)\n  }\n\n  //    9. If contentLengthHeaderValue is non-null, then append (`Content-Length`,\n  //    contentLengthHeaderValue) to httpRequest\u2019s header list.\n\n  //    10. If contentLength is non-null and httpRequest\u2019s keepalive is true,\n  //    then:\n  if (contentLength != null && httpRequest.keepalive) {\n    // NOTE: keepalive is a noop outside of browser context.\n  }\n\n  //    11. If httpRequest\u2019s referrer is a URL, then append\n  //    `Referer`/httpRequest\u2019s referrer, serialized and isomorphic encoded,\n  //     to httpRequest\u2019s header list.\n  if (httpRequest.referrer instanceof URL) {\n    httpRequest.headersList.append('referer', isomorphicEncode(httpRequest.referrer.href), true)\n  }\n\n  //    12. Append a request `Origin` header for httpRequest.\n  appendRequestOriginHeader(httpRequest)\n\n  //    13. Append the Fetch metadata headers for httpRequest. [FETCH-METADATA]\n  appendFetchMetadata(httpRequest)\n\n  //    14. If httpRequest\u2019s header list does not contain `User-Agent`, then\n  //    user agents should append `User-Agent`/default `User-Agent` value to\n  //    httpRequest\u2019s header list.\n  if (!httpRequest.headersList.contains('user-agent', true)) {\n    httpRequest.headersList.append('user-agent', defaultUserAgent)\n  }\n\n  //    15. If httpRequest\u2019s cache mode is \"default\" and httpRequest\u2019s header\n  //    list contains `If-Modified-Since`, `If-None-Match`,\n  //    `If-Unmodified-Since`, `If-Match`, or `If-Range`, then set\n  //    httpRequest\u2019s cache mode to \"no-store\".\n  if (\n    httpRequest.cache === 'default' &&\n    (httpRequest.headersList.contains('if-modified-since', true) ||\n      httpRequest.headersList.contains('if-none-match', true) ||\n      httpRequest.headersList.contains('if-unmodified-since', true) ||\n      httpRequest.headersList.contains('if-match', true) ||\n      httpRequest.headersList.contains('if-range', true))\n  ) {\n    httpRequest.cache = 'no-store'\n  }\n\n  //    16. If httpRequest\u2019s cache mode is \"no-cache\", httpRequest\u2019s prevent\n  //    no-cache cache-control header modification flag is unset, and\n  //    httpRequest\u2019s header list does not contain `Cache-Control`, then append\n  //    `Cache-Control`/`max-age=0` to httpRequest\u2019s header list.\n  if (\n    httpRequest.cache === 'no-cache' &&\n    !httpRequest.preventNoCacheCacheControlHeaderModification &&\n    !httpRequest.headersList.contains('cache-control', true)\n  ) {\n    httpRequest.headersList.append('cache-control', 'max-age=0', true)\n  }\n\n  //    17. If httpRequest\u2019s cache mode is \"no-store\" or \"reload\", then:\n  if (httpRequest.cache === 'no-store' || httpRequest.cache === 'reload') {\n    // 1. If httpRequest\u2019s header list does not contain `Pragma`, then append\n    // `Pragma`/`no-cache` to httpRequest\u2019s header list.\n    if (!httpRequest.headersList.contains('pragma', true)) {\n      httpRequest.headersList.append('pragma', 'no-cache', true)\n    }\n\n    // 2. If httpRequest\u2019s header list does not contain `Cache-Control`,\n    // then append `Cache-Control`/`no-cache` to httpRequest\u2019s header list.\n    if (!httpRequest.headersList.contains('cache-control', true)) {\n      httpRequest.headersList.append('cache-control', 'no-cache', true)\n    }\n  }\n\n  //    18. If httpRequest\u2019s header list contains `Range`, then append\n  //    `Accept-Encoding`/`identity` to httpRequest\u2019s header list.\n  if (httpRequest.headersList.contains('range', true)) {\n    httpRequest.headersList.append('accept-encoding', 'identity', true)\n  }\n\n  //    19. Modify httpRequest\u2019s header list per HTTP. Do not append a given\n  //    header if httpRequest\u2019s header list contains that header\u2019s name.\n  //    TODO: https://github.com/whatwg/fetch/issues/1285#issuecomment-896560129\n  if (!httpRequest.headersList.contains('accept-encoding', true)) {\n    if (urlHasHttpsScheme(requestCurrentURL(httpRequest))) {\n      httpRequest.headersList.append('accept-encoding', 'br, gzip, deflate', true)\n    } else {\n      httpRequest.headersList.append('accept-encoding', 'gzip, deflate', true)\n    }\n  }\n\n  httpRequest.headersList.delete('host', true)\n\n  //    20. If includeCredentials is true, then:\n  if (includeCredentials) {\n    // 1. If the user agent is not configured to block cookies for httpRequest\n    // (see section 7 of [COOKIES]), then:\n    // TODO: credentials\n    // 2. If httpRequest\u2019s header list does not contain `Authorization`, then:\n    // TODO: credentials\n  }\n\n  //    21. If there\u2019s a proxy-authentication entry, use it as appropriate.\n  //    TODO: proxy-authentication\n\n  //    22. Set httpCache to the result of determining the HTTP cache\n  //    partition, given httpRequest.\n  //    TODO: cache\n\n  //    23. If httpCache is null, then set httpRequest\u2019s cache mode to\n  //    \"no-store\".\n  if (httpCache == null) {\n    httpRequest.cache = 'no-store'\n  }\n\n  //    24. If httpRequest\u2019s cache mode is neither \"no-store\" nor \"reload\",\n  //    then:\n  if (httpRequest.cache !== 'no-store' && httpRequest.cache !== 'reload') {\n    // TODO: cache\n  }\n\n  // 9. If aborted, then return the appropriate network error for fetchParams.\n  // TODO\n\n  // 10. If response is null, then:\n  if (response == null) {\n    // 1. If httpRequest\u2019s cache mode is \"only-if-cached\", then return a\n    // network error.\n    if (httpRequest.cache === 'only-if-cached') {\n      return makeNetworkError('only if cached')\n    }\n\n    // 2. Let forwardResponse be the result of running HTTP-network fetch\n    // given httpFetchParams, includeCredentials, and isNewConnectionFetch.\n    const forwardResponse = await httpNetworkFetch(\n      httpFetchParams,\n      includeCredentials,\n      isNewConnectionFetch\n    )\n\n    // 3. If httpRequest\u2019s method is unsafe and forwardResponse\u2019s status is\n    // in the range 200 to 399, inclusive, invalidate appropriate stored\n    // responses in httpCache, as per the \"Invalidation\" chapter of HTTP\n    // Caching, and set storedResponse to null. [HTTP-CACHING]\n    if (\n      !safeMethodsSet.has(httpRequest.method) &&\n      forwardResponse.status >= 200 &&\n      forwardResponse.status <= 399\n    ) {\n      // TODO: cache\n    }\n\n    // 4. If the revalidatingFlag is set and forwardResponse\u2019s status is 304,\n    // then:\n    if (revalidatingFlag && forwardResponse.status === 304) {\n      // TODO: cache\n    }\n\n    // 5. If response is null, then:\n    if (response == null) {\n      // 1. Set response to forwardResponse.\n      response = forwardResponse\n\n      // 2. Store httpRequest and forwardResponse in httpCache, as per the\n      // \"Storing Responses in Caches\" chapter of HTTP Caching. [HTTP-CACHING]\n      // TODO: cache\n    }\n  }\n\n  // 11. Set response\u2019s URL list to a clone of httpRequest\u2019s URL list.\n  response.urlList = [...httpRequest.urlList]\n\n  // 12. If httpRequest\u2019s header list contains `Range`, then set response\u2019s\n  // range-requested flag.\n  if (httpRequest.headersList.contains('range', true)) {\n    response.rangeRequested = true\n  }\n\n  // 13. Set response\u2019s request-includes-credentials to includeCredentials.\n  response.requestIncludesCredentials = includeCredentials\n\n  // 14. If response\u2019s status is 401, httpRequest\u2019s response tainting is not\n  // \"cors\", includeCredentials is true, and request\u2019s window is an environment\n  // settings object, then:\n  // TODO\n\n  // 15. If response\u2019s status is 407, then:\n  if (response.status === 407) {\n    // 1. If request\u2019s window is \"no-window\", then return a network error.\n    if (request.window === 'no-window') {\n      return makeNetworkError()\n    }\n\n    // 2. ???\n\n    // 3. If fetchParams is canceled, then return the appropriate network error for fetchParams.\n    if (isCancelled(fetchParams)) {\n      return makeAppropriateNetworkError(fetchParams)\n    }\n\n    // 4. Prompt the end user as appropriate in request\u2019s window and store\n    // the result as a proxy-authentication entry. [HTTP-AUTH]\n    // TODO: Invoke some kind of callback?\n\n    // 5. Set response to the result of running HTTP-network-or-cache fetch given\n    // fetchParams.\n    // TODO\n    return makeNetworkError('proxy authentication required')\n  }\n\n  // 16. If all of the following are true\n  if (\n    // response\u2019s status is 421\n    response.status === 421 &&\n    // isNewConnectionFetch is false\n    !isNewConnectionFetch &&\n    // request\u2019s body is null, or request\u2019s body is non-null and request\u2019s body\u2019s source is non-null\n    (request.body == null || request.body.source != null)\n  ) {\n    // then:\n\n    // 1. If fetchParams is canceled, then return the appropriate network error for fetchParams.\n    if (isCancelled(fetchParams)) {\n      return makeAppropriateNetworkError(fetchParams)\n    }\n\n    // 2. Set response to the result of running HTTP-network-or-cache\n    // fetch given fetchParams, isAuthenticationFetch, and true.\n\n    // TODO (spec): The spec doesn't specify this but we need to cancel\n    // the active response before we can start a new one.\n    // https://github.com/whatwg/fetch/issues/1293\n    fetchParams.controller.connection.destroy()\n\n    response = await httpNetworkOrCacheFetch(\n      fetchParams,\n      isAuthenticationFetch,\n      true\n    )\n  }\n\n  // 17. If isAuthenticationFetch is true, then create an authentication entry\n  if (isAuthenticationFetch) {\n    // TODO\n  }\n\n  // 18. Return response.\n  return response\n}\n\n// https://fetch.spec.whatwg.org/#http-network-fetch\nasync function httpNetworkFetch (\n  fetchParams,\n  includeCredentials = false,\n  forceNewConnection = false\n) {\n  assert(!fetchParams.controller.connection || fetchParams.controller.connection.destroyed)\n\n  fetchParams.controller.connection = {\n    abort: null,\n    destroyed: false,\n    destroy (err, abort = true) {\n      if (!this.destroyed) {\n        this.destroyed = true\n        if (abort) {\n          this.abort?.(err ?? new DOMException('The operation was aborted.', 'AbortError'))\n        }\n      }\n    }\n  }\n\n  // 1. Let request be fetchParams\u2019s request.\n  const request = fetchParams.request\n\n  // 2. Let response be null.\n  let response = null\n\n  // 3. Let timingInfo be fetchParams\u2019s timing info.\n  const timingInfo = fetchParams.timingInfo\n\n  // 4. Let httpCache be the result of determining the HTTP cache partition,\n  // given request.\n  // TODO: cache\n  const httpCache = null\n\n  // 5. If httpCache is null, then set request\u2019s cache mode to \"no-store\".\n  if (httpCache == null) {\n    request.cache = 'no-store'\n  }\n\n  // 6. Let networkPartitionKey be the result of determining the network\n  // partition key given request.\n  // TODO\n\n  // 7. Let newConnection be \"yes\" if forceNewConnection is true; otherwise\n  // \"no\".\n  const newConnection = forceNewConnection ? 'yes' : 'no' // eslint-disable-line no-unused-vars\n\n  // 8. Switch on request\u2019s mode:\n  if (request.mode === 'websocket') {\n    // Let connection be the result of obtaining a WebSocket connection,\n    // given request\u2019s current URL.\n    // TODO\n  } else {\n    // Let connection be the result of obtaining a connection, given\n    // networkPartitionKey, request\u2019s current URL\u2019s origin,\n    // includeCredentials, and forceNewConnection.\n    // TODO\n  }\n\n  // 9. Run these steps, but abort when the ongoing fetch is terminated:\n\n  //    1. If connection is failure, then return a network error.\n\n  //    2. Set timingInfo\u2019s final connection timing info to the result of\n  //    calling clamp and coarsen connection timing info with connection\u2019s\n  //    timing info, timingInfo\u2019s post-redirect start time, and fetchParams\u2019s\n  //    cross-origin isolated capability.\n\n  //    3. If connection is not an HTTP/2 connection, request\u2019s body is non-null,\n  //    and request\u2019s body\u2019s source is null, then append (`Transfer-Encoding`,\n  //    `chunked`) to request\u2019s header list.\n\n  //    4. Set timingInfo\u2019s final network-request start time to the coarsened\n  //    shared current time given fetchParams\u2019s cross-origin isolated\n  //    capability.\n\n  //    5. Set response to the result of making an HTTP request over connection\n  //    using request with the following caveats:\n\n  //        - Follow the relevant requirements from HTTP. [HTTP] [HTTP-SEMANTICS]\n  //        [HTTP-COND] [HTTP-CACHING] [HTTP-AUTH]\n\n  //        - If request\u2019s body is non-null, and request\u2019s body\u2019s source is null,\n  //        then the user agent may have a buffer of up to 64 kibibytes and store\n  //        a part of request\u2019s body in that buffer. If the user agent reads from\n  //        request\u2019s body beyond that buffer\u2019s size and the user agent needs to\n  //        resend request, then instead return a network error.\n\n  //        - Set timingInfo\u2019s final network-response start time to the coarsened\n  //        shared current time given fetchParams\u2019s cross-origin isolated capability,\n  //        immediately after the user agent\u2019s HTTP parser receives the first byte\n  //        of the response (e.g., frame header bytes for HTTP/2 or response status\n  //        line for HTTP/1.x).\n\n  //        - Wait until all the headers are transmitted.\n\n  //        - Any responses whose status is in the range 100 to 199, inclusive,\n  //        and is not 101, are to be ignored, except for the purposes of setting\n  //        timingInfo\u2019s final network-response start time above.\n\n  //    - If request\u2019s header list contains `Transfer-Encoding`/`chunked` and\n  //    response is transferred via HTTP/1.0 or older, then return a network\n  //    error.\n\n  //    - If the HTTP request results in a TLS client certificate dialog, then:\n\n  //        1. If request\u2019s window is an environment settings object, make the\n  //        dialog available in request\u2019s window.\n\n  //        2. Otherwise, return a network error.\n\n  // To transmit request\u2019s body body, run these steps:\n  let requestBody = null\n  // 1. If body is null and fetchParams\u2019s process request end-of-body is\n  // non-null, then queue a fetch task given fetchParams\u2019s process request\n  // end-of-body and fetchParams\u2019s task destination.\n  if (request.body == null && fetchParams.processRequestEndOfBody) {\n    queueMicrotask(() => fetchParams.processRequestEndOfBody())\n  } else if (request.body != null) {\n    // 2. Otherwise, if body is non-null:\n\n    //    1. Let processBodyChunk given bytes be these steps:\n    const processBodyChunk = async function * (bytes) {\n      // 1. If the ongoing fetch is terminated, then abort these steps.\n      if (isCancelled(fetchParams)) {\n        return\n      }\n\n      // 2. Run this step in parallel: transmit bytes.\n      yield bytes\n\n      // 3. If fetchParams\u2019s process request body is non-null, then run\n      // fetchParams\u2019s process request body given bytes\u2019s length.\n      fetchParams.processRequestBodyChunkLength?.(bytes.byteLength)\n    }\n\n    // 2. Let processEndOfBody be these steps:\n    const processEndOfBody = () => {\n      // 1. If fetchParams is canceled, then abort these steps.\n      if (isCancelled(fetchParams)) {\n        return\n      }\n\n      // 2. If fetchParams\u2019s process request end-of-body is non-null,\n      // then run fetchParams\u2019s process request end-of-body.\n      if (fetchParams.processRequestEndOfBody) {\n        fetchParams.processRequestEndOfBody()\n      }\n    }\n\n    // 3. Let processBodyError given e be these steps:\n    const processBodyError = (e) => {\n      // 1. If fetchParams is canceled, then abort these steps.\n      if (isCancelled(fetchParams)) {\n        return\n      }\n\n      // 2. If e is an \"AbortError\" DOMException, then abort fetchParams\u2019s controller.\n      if (e.name === 'AbortError') {\n        fetchParams.controller.abort()\n      } else {\n        fetchParams.controller.terminate(e)\n      }\n    }\n\n    // 4. Incrementally read request\u2019s body given processBodyChunk, processEndOfBody,\n    // processBodyError, and fetchParams\u2019s task destination.\n    requestBody = (async function * () {\n      try {\n        for await (const bytes of request.body.stream) {\n          yield * processBodyChunk(bytes)\n        }\n        processEndOfBody()\n      } catch (err) {\n        processBodyError(err)\n      }\n    })()\n  }\n\n  try {\n    // socket is only provided for websockets\n    const { body, status, statusText, headersList, socket } = await dispatch({ body: requestBody })\n\n    if (socket) {\n      response = makeResponse({ status, statusText, headersList, socket })\n    } else {\n      const iterator = body[Symbol.asyncIterator]()\n      fetchParams.controller.next = () => iterator.next()\n\n      response = makeResponse({ status, statusText, headersList })\n    }\n  } catch (err) {\n    // 10. If aborted, then:\n    if (err.name === 'AbortError') {\n      // 1. If connection uses HTTP/2, then transmit an RST_STREAM frame.\n      fetchParams.controller.connection.destroy()\n\n      // 2. Return the appropriate network error for fetchParams.\n      return makeAppropriateNetworkError(fetchParams, err)\n    }\n\n    return makeNetworkError(err)\n  }\n\n  // 11. Let pullAlgorithm be an action that resumes the ongoing fetch\n  // if it is suspended.\n  const pullAlgorithm = async () => {\n    await fetchParams.controller.resume()\n  }\n\n  // 12. Let cancelAlgorithm be an algorithm that aborts fetchParams\u2019s\n  // controller with reason, given reason.\n  const cancelAlgorithm = (reason) => {\n    // If the aborted fetch was already terminated, then we do not\n    // need to do anything.\n    if (!isCancelled(fetchParams)) {\n      fetchParams.controller.abort(reason)\n    }\n  }\n\n  // 13. Let highWaterMark be a non-negative, non-NaN number, chosen by\n  // the user agent.\n  // TODO\n\n  // 14. Let sizeAlgorithm be an algorithm that accepts a chunk object\n  // and returns a non-negative, non-NaN, non-infinite number, chosen by the user agent.\n  // TODO\n\n  // 15. Let stream be a new ReadableStream.\n  // 16. Set up stream with byte reading support with pullAlgorithm set to pullAlgorithm,\n  //     cancelAlgorithm set to cancelAlgorithm.\n  const stream = new ReadableStream(\n    {\n      async start (controller) {\n        fetchParams.controller.controller = controller\n      },\n      async pull (controller) {\n        await pullAlgorithm(controller)\n      },\n      async cancel (reason) {\n        await cancelAlgorithm(reason)\n      },\n      type: 'bytes'\n    }\n  )\n\n  // 17. Run these steps, but abort when the ongoing fetch is terminated:\n\n  //    1. Set response\u2019s body to a new body whose stream is stream.\n  response.body = { stream, source: null, length: null }\n\n  //    2. If response is not a network error and request\u2019s cache mode is\n  //    not \"no-store\", then update response in httpCache for request.\n  //    TODO\n\n  //    3. If includeCredentials is true and the user agent is not configured\n  //    to block cookies for request (see section 7 of [COOKIES]), then run the\n  //    \"set-cookie-string\" parsing algorithm (see section 5.2 of [COOKIES]) on\n  //    the value of each header whose name is a byte-case-insensitive match for\n  //    `Set-Cookie` in response\u2019s header list, if any, and request\u2019s current URL.\n  //    TODO\n\n  // 18. If aborted, then:\n  // TODO\n\n  // 19. Run these steps in parallel:\n\n  //    1. Run these steps, but abort when fetchParams is canceled:\n  fetchParams.controller.onAborted = onAborted\n  fetchParams.controller.on('terminated', onAborted)\n  fetchParams.controller.resume = async () => {\n    // 1. While true\n    while (true) {\n      // 1-3. See onData...\n\n      // 4. Set bytes to the result of handling content codings given\n      // codings and bytes.\n      let bytes\n      let isFailure\n      try {\n        const { done, value } = await fetchParams.controller.next()\n\n        if (isAborted(fetchParams)) {\n          break\n        }\n\n        bytes = done ? undefined : value\n      } catch (err) {\n        if (fetchParams.controller.ended && !timingInfo.encodedBodySize) {\n          // zlib doesn't like empty streams.\n          bytes = undefined\n        } else {\n          bytes = err\n\n          // err may be propagated from the result of calling readablestream.cancel,\n          // which might not be an error. https://github.com/nodejs/undici/issues/2009\n          isFailure = true\n        }\n      }\n\n      if (bytes === undefined) {\n        // 2. Otherwise, if the bytes transmission for response\u2019s message\n        // body is done normally and stream is readable, then close\n        // stream, finalize response for fetchParams and response, and\n        // abort these in-parallel steps.\n        readableStreamClose(fetchParams.controller.controller)\n\n        finalizeResponse(fetchParams, response)\n\n        return\n      }\n\n      // 5. Increase timingInfo\u2019s decoded body size by bytes\u2019s length.\n      timingInfo.decodedBodySize += bytes?.byteLength ?? 0\n\n      // 6. If bytes is failure, then terminate fetchParams\u2019s controller.\n      if (isFailure) {\n        fetchParams.controller.terminate(bytes)\n        return\n      }\n\n      // 7. Enqueue a Uint8Array wrapping an ArrayBuffer containing bytes\n      // into stream.\n      const buffer = new Uint8Array(bytes)\n      if (buffer.byteLength) {\n        fetchParams.controller.controller.enqueue(buffer)\n      }\n\n      // 8. If stream is errored, then terminate the ongoing fetch.\n      if (isErrored(stream)) {\n        fetchParams.controller.terminate()\n        return\n      }\n\n      // 9. If stream doesn\u2019t need more data ask the user agent to suspend\n      // the ongoing fetch.\n      if (fetchParams.controller.controller.desiredSize <= 0) {\n        return\n      }\n    }\n  }\n\n  //    2. If aborted, then:\n  function onAborted (reason) {\n    // 2. If fetchParams is aborted, then:\n    if (isAborted(fetchParams)) {\n      // 1. Set response\u2019s aborted flag.\n      response.aborted = true\n\n      // 2. If stream is readable, then error stream with the result of\n      //    deserialize a serialized abort reason given fetchParams\u2019s\n      //    controller\u2019s serialized abort reason and an\n      //    implementation-defined realm.\n      if (isReadable(stream)) {\n        fetchParams.controller.controller.error(\n          fetchParams.controller.serializedAbortReason\n        )\n      }\n    } else {\n      // 3. Otherwise, if stream is readable, error stream with a TypeError.\n      if (isReadable(stream)) {\n        fetchParams.controller.controller.error(new TypeError('terminated', {\n          cause: isErrorLike(reason) ? reason : undefined\n        }))\n      }\n    }\n\n    // 4. If connection uses HTTP/2, then transmit an RST_STREAM frame.\n    // 5. Otherwise, the user agent should close connection unless it would be bad for performance to do so.\n    fetchParams.controller.connection.destroy()\n  }\n\n  // 20. Return response.\n  return response\n\n  function dispatch ({ body }) {\n    const url = requestCurrentURL(request)\n    /** @type {import('../..').Agent} */\n    const agent = fetchParams.controller.dispatcher\n\n    return new Promise((resolve, reject) => agent.dispatch(\n      {\n        path: url.pathname + url.search,\n        origin: url.origin,\n        method: request.method,\n        body: agent.isMockActive ? request.body && (request.body.source || request.body.stream) : body,\n        headers: request.headersList.entries,\n        maxRedirections: 0,\n        upgrade: request.mode === 'websocket' ? 'websocket' : undefined\n      },\n      {\n        body: null,\n        abort: null,\n\n        onConnect (abort) {\n          // TODO (fix): Do we need connection here?\n          const { connection } = fetchParams.controller\n\n          // Set timingInfo\u2019s final connection timing info to the result of calling clamp and coarsen\n          // connection timing info with connection\u2019s timing info, timingInfo\u2019s post-redirect start\n          // time, and fetchParams\u2019s cross-origin isolated capability.\n          // TODO: implement connection timing\n          timingInfo.finalConnectionTimingInfo = clampAndCoarsenConnectionTimingInfo(undefined, timingInfo.postRedirectStartTime, fetchParams.crossOriginIsolatedCapability)\n\n          if (connection.destroyed) {\n            abort(new DOMException('The operation was aborted.', 'AbortError'))\n          } else {\n            fetchParams.controller.on('terminated', abort)\n            this.abort = connection.abort = abort\n          }\n\n          // Set timingInfo\u2019s final network-request start time to the coarsened shared current time given\n          // fetchParams\u2019s cross-origin isolated capability.\n          timingInfo.finalNetworkRequestStartTime = coarsenedSharedCurrentTime(fetchParams.crossOriginIsolatedCapability)\n        },\n\n        onResponseStarted () {\n          // Set timingInfo\u2019s final network-response start time to the coarsened shared current\n          // time given fetchParams\u2019s cross-origin isolated capability, immediately after the\n          // user agent\u2019s HTTP parser receives the first byte of the response (e.g., frame header\n          // bytes for HTTP/2 or response status line for HTTP/1.x).\n          timingInfo.finalNetworkResponseStartTime = coarsenedSharedCurrentTime(fetchParams.crossOriginIsolatedCapability)\n        },\n\n        onHeaders (status, rawHeaders, resume, statusText) {\n          if (status < 200) {\n            return\n          }\n\n          /** @type {string[]} */\n          let codings = []\n          let location = ''\n\n          const headersList = new HeadersList()\n\n          for (let i = 0; i < rawHeaders.length; i += 2) {\n            headersList.append(bufferToLowerCasedHeaderName(rawHeaders[i]), rawHeaders[i + 1].toString('latin1'), true)\n          }\n          const contentEncoding = headersList.get('content-encoding', true)\n          if (contentEncoding) {\n            // https://www.rfc-editor.org/rfc/rfc7231#section-3.1.2.1\n            // \"All content-coding values are case-insensitive...\"\n            codings = contentEncoding.toLowerCase().split(',').map((x) => x.trim())\n          }\n          location = headersList.get('location', true)\n\n          this.body = new Readable({ read: resume })\n\n          const decoders = []\n\n          const willFollow = location && request.redirect === 'follow' &&\n            redirectStatusSet.has(status)\n\n          // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Encoding\n          if (codings.length !== 0 && request.method !== 'HEAD' && request.method !== 'CONNECT' && !nullBodyStatus.includes(status) && !willFollow) {\n            for (let i = 0; i < codings.length; ++i) {\n              const coding = codings[i]\n              // https://www.rfc-editor.org/rfc/rfc9112.html#section-7.2\n              if (coding === 'x-gzip' || coding === 'gzip') {\n                decoders.push(zlib.createGunzip({\n                  // Be less strict when decoding compressed responses, since sometimes\n                  // servers send slightly invalid responses that are still accepted\n                  // by common browsers.\n                  // Always using Z_SYNC_FLUSH is what cURL does.\n                  flush: zlib.constants.Z_SYNC_FLUSH,\n                  finishFlush: zlib.constants.Z_SYNC_FLUSH\n                }))\n              } else if (coding === 'deflate') {\n                decoders.push(createInflate())\n              } else if (coding === 'br') {\n                decoders.push(zlib.createBrotliDecompress())\n              } else {\n                decoders.length = 0\n                break\n              }\n            }\n          }\n\n          resolve({\n            status,\n            statusText,\n            headersList,\n            body: decoders.length\n              ? pipeline(this.body, ...decoders, () => { })\n              : this.body.on('error', () => { })\n          })\n\n          return true\n        },\n\n        onData (chunk) {\n          if (fetchParams.controller.dump) {\n            return\n          }\n\n          // 1. If one or more bytes have been transmitted from response\u2019s\n          // message body, then:\n\n          //  1. Let bytes be the transmitted bytes.\n          const bytes = chunk\n\n          //  2. Let codings be the result of extracting header list values\n          //  given `Content-Encoding` and response\u2019s header list.\n          //  See pullAlgorithm.\n\n          //  3. Increase timingInfo\u2019s encoded body size by bytes\u2019s length.\n          timingInfo.encodedBodySize += bytes.byteLength\n\n          //  4. See pullAlgorithm...\n\n          return this.body.push(bytes)\n        },\n\n        onComplete () {\n          if (this.abort) {\n            fetchParams.controller.off('terminated', this.abort)\n          }\n\n          if (fetchParams.controller.onAborted) {\n            fetchParams.controller.off('terminated', fetchParams.controller.onAborted)\n          }\n\n          fetchParams.controller.ended = true\n\n          this.body.push(null)\n        },\n\n        onError (error) {\n          if (this.abort) {\n            fetchParams.controller.off('terminated', this.abort)\n          }\n\n          this.body?.destroy(error)\n\n          fetchParams.controller.terminate(error)\n\n          reject(error)\n        },\n\n        onUpgrade (status, rawHeaders, socket) {\n          if (status !== 101) {\n            return\n          }\n\n          const headersList = new HeadersList()\n\n          for (let i = 0; i < rawHeaders.length; i += 2) {\n            headersList.append(bufferToLowerCasedHeaderName(rawHeaders[i]), rawHeaders[i + 1].toString('latin1'), true)\n          }\n\n          resolve({\n            status,\n            statusText: STATUS_CODES[status],\n            headersList,\n            socket\n          })\n\n          return true\n        }\n      }\n    ))\n  }\n}\n\nmodule.exports = {\n  fetch,\n  Fetch,\n  fetching,\n  finalizeAndReportTiming\n}\n", "'use strict'\n\nmodule.exports = {\n  kState: Symbol('FileReader state'),\n  kResult: Symbol('FileReader result'),\n  kError: Symbol('FileReader error'),\n  kLastProgressEventFired: Symbol('FileReader last progress event fired timestamp'),\n  kEvents: Symbol('FileReader events'),\n  kAborted: Symbol('FileReader aborted')\n}\n", "'use strict'\n\nconst { webidl } = require('../fetch/webidl')\n\nconst kState = Symbol('ProgressEvent state')\n\n/**\n * @see https://xhr.spec.whatwg.org/#progressevent\n */\nclass ProgressEvent extends Event {\n  constructor (type, eventInitDict = {}) {\n    type = webidl.converters.DOMString(type, 'ProgressEvent constructor', 'type')\n    eventInitDict = webidl.converters.ProgressEventInit(eventInitDict ?? {})\n\n    super(type, eventInitDict)\n\n    this[kState] = {\n      lengthComputable: eventInitDict.lengthComputable,\n      loaded: eventInitDict.loaded,\n      total: eventInitDict.total\n    }\n  }\n\n  get lengthComputable () {\n    webidl.brandCheck(this, ProgressEvent)\n\n    return this[kState].lengthComputable\n  }\n\n  get loaded () {\n    webidl.brandCheck(this, ProgressEvent)\n\n    return this[kState].loaded\n  }\n\n  get total () {\n    webidl.brandCheck(this, ProgressEvent)\n\n    return this[kState].total\n  }\n}\n\nwebidl.converters.ProgressEventInit = webidl.dictionaryConverter([\n  {\n    key: 'lengthComputable',\n    converter: webidl.converters.boolean,\n    defaultValue: () => false\n  },\n  {\n    key: 'loaded',\n    converter: webidl.converters['unsigned long long'],\n    defaultValue: () => 0\n  },\n  {\n    key: 'total',\n    converter: webidl.converters['unsigned long long'],\n    defaultValue: () => 0\n  },\n  {\n    key: 'bubbles',\n    converter: webidl.converters.boolean,\n    defaultValue: () => false\n  },\n  {\n    key: 'cancelable',\n    converter: webidl.converters.boolean,\n    defaultValue: () => false\n  },\n  {\n    key: 'composed',\n    converter: webidl.converters.boolean,\n    defaultValue: () => false\n  }\n])\n\nmodule.exports = {\n  ProgressEvent\n}\n", "'use strict'\n\n/**\n * @see https://encoding.spec.whatwg.org/#concept-encoding-get\n * @param {string|undefined} label\n */\nfunction getEncoding (label) {\n  if (!label) {\n    return 'failure'\n  }\n\n  // 1. Remove any leading and trailing ASCII whitespace from label.\n  // 2. If label is an ASCII case-insensitive match for any of the\n  //    labels listed in the table below, then return the\n  //    corresponding encoding; otherwise return failure.\n  switch (label.trim().toLowerCase()) {\n    case 'unicode-1-1-utf-8':\n    case 'unicode11utf8':\n    case 'unicode20utf8':\n    case 'utf-8':\n    case 'utf8':\n    case 'x-unicode20utf8':\n      return 'UTF-8'\n    case '866':\n    case 'cp866':\n    case 'csibm866':\n    case 'ibm866':\n      return 'IBM866'\n    case 'csisolatin2':\n    case 'iso-8859-2':\n    case 'iso-ir-101':\n    case 'iso8859-2':\n    case 'iso88592':\n    case 'iso_8859-2':\n    case 'iso_8859-2:1987':\n    case 'l2':\n    case 'latin2':\n      return 'ISO-8859-2'\n    case 'csisolatin3':\n    case 'iso-8859-3':\n    case 'iso-ir-109':\n    case 'iso8859-3':\n    case 'iso88593':\n    case 'iso_8859-3':\n    case 'iso_8859-3:1988':\n    case 'l3':\n    case 'latin3':\n      return 'ISO-8859-3'\n    case 'csisolatin4':\n    case 'iso-8859-4':\n    case 'iso-ir-110':\n    case 'iso8859-4':\n    case 'iso88594':\n    case 'iso_8859-4':\n    case 'iso_8859-4:1988':\n    case 'l4':\n    case 'latin4':\n      return 'ISO-8859-4'\n    case 'csisolatincyrillic':\n    case 'cyrillic':\n    case 'iso-8859-5':\n    case 'iso-ir-144':\n    case 'iso8859-5':\n    case 'iso88595':\n    case 'iso_8859-5':\n    case 'iso_8859-5:1988':\n      return 'ISO-8859-5'\n    case 'arabic':\n    case 'asmo-708':\n    case 'csiso88596e':\n    case 'csiso88596i':\n    case 'csisolatinarabic':\n    case 'ecma-114':\n    case 'iso-8859-6':\n    case 'iso-8859-6-e':\n    case 'iso-8859-6-i':\n    case 'iso-ir-127':\n    case 'iso8859-6':\n    case 'iso88596':\n    case 'iso_8859-6':\n    case 'iso_8859-6:1987':\n      return 'ISO-8859-6'\n    case 'csisolatingreek':\n    case 'ecma-118':\n    case 'elot_928':\n    case 'greek':\n    case 'greek8':\n    case 'iso-8859-7':\n    case 'iso-ir-126':\n    case 'iso8859-7':\n    case 'iso88597':\n    case 'iso_8859-7':\n    case 'iso_8859-7:1987':\n    case 'sun_eu_greek':\n      return 'ISO-8859-7'\n    case 'csiso88598e':\n    case 'csisolatinhebrew':\n    case 'hebrew':\n    case 'iso-8859-8':\n    case 'iso-8859-8-e':\n    case 'iso-ir-138':\n    case 'iso8859-8':\n    case 'iso88598':\n    case 'iso_8859-8':\n    case 'iso_8859-8:1988':\n    case 'visual':\n      return 'ISO-8859-8'\n    case 'csiso88598i':\n    case 'iso-8859-8-i':\n    case 'logical':\n      return 'ISO-8859-8-I'\n    case 'csisolatin6':\n    case 'iso-8859-10':\n    case 'iso-ir-157':\n    case 'iso8859-10':\n    case 'iso885910':\n    case 'l6':\n    case 'latin6':\n      return 'ISO-8859-10'\n    case 'iso-8859-13':\n    case 'iso8859-13':\n    case 'iso885913':\n      return 'ISO-8859-13'\n    case 'iso-8859-14':\n    case 'iso8859-14':\n    case 'iso885914':\n      return 'ISO-8859-14'\n    case 'csisolatin9':\n    case 'iso-8859-15':\n    case 'iso8859-15':\n    case 'iso885915':\n    case 'iso_8859-15':\n    case 'l9':\n      return 'ISO-8859-15'\n    case 'iso-8859-16':\n      return 'ISO-8859-16'\n    case 'cskoi8r':\n    case 'koi':\n    case 'koi8':\n    case 'koi8-r':\n    case 'koi8_r':\n      return 'KOI8-R'\n    case 'koi8-ru':\n    case 'koi8-u':\n      return 'KOI8-U'\n    case 'csmacintosh':\n    case 'mac':\n    case 'macintosh':\n    case 'x-mac-roman':\n      return 'macintosh'\n    case 'iso-8859-11':\n    case 'iso8859-11':\n    case 'iso885911':\n    case 'tis-620':\n    case 'windows-874':\n      return 'windows-874'\n    case 'cp1250':\n    case 'windows-1250':\n    case 'x-cp1250':\n      return 'windows-1250'\n    case 'cp1251':\n    case 'windows-1251':\n    case 'x-cp1251':\n      return 'windows-1251'\n    case 'ansi_x3.4-1968':\n    case 'ascii':\n    case 'cp1252':\n    case 'cp819':\n    case 'csisolatin1':\n    case 'ibm819':\n    case 'iso-8859-1':\n    case 'iso-ir-100':\n    case 'iso8859-1':\n    case 'iso88591':\n    case 'iso_8859-1':\n    case 'iso_8859-1:1987':\n    case 'l1':\n    case 'latin1':\n    case 'us-ascii':\n    case 'windows-1252':\n    case 'x-cp1252':\n      return 'windows-1252'\n    case 'cp1253':\n    case 'windows-1253':\n    case 'x-cp1253':\n      return 'windows-1253'\n    case 'cp1254':\n    case 'csisolatin5':\n    case 'iso-8859-9':\n    case 'iso-ir-148':\n    case 'iso8859-9':\n    case 'iso88599':\n    case 'iso_8859-9':\n    case 'iso_8859-9:1989':\n    case 'l5':\n    case 'latin5':\n    case 'windows-1254':\n    case 'x-cp1254':\n      return 'windows-1254'\n    case 'cp1255':\n    case 'windows-1255':\n    case 'x-cp1255':\n      return 'windows-1255'\n    case 'cp1256':\n    case 'windows-1256':\n    case 'x-cp1256':\n      return 'windows-1256'\n    case 'cp1257':\n    case 'windows-1257':\n    case 'x-cp1257':\n      return 'windows-1257'\n    case 'cp1258':\n    case 'windows-1258':\n    case 'x-cp1258':\n      return 'windows-1258'\n    case 'x-mac-cyrillic':\n    case 'x-mac-ukrainian':\n      return 'x-mac-cyrillic'\n    case 'chinese':\n    case 'csgb2312':\n    case 'csiso58gb231280':\n    case 'gb2312':\n    case 'gb_2312':\n    case 'gb_2312-80':\n    case 'gbk':\n    case 'iso-ir-58':\n    case 'x-gbk':\n      return 'GBK'\n    case 'gb18030':\n      return 'gb18030'\n    case 'big5':\n    case 'big5-hkscs':\n    case 'cn-big5':\n    case 'csbig5':\n    case 'x-x-big5':\n      return 'Big5'\n    case 'cseucpkdfmtjapanese':\n    case 'euc-jp':\n    case 'x-euc-jp':\n      return 'EUC-JP'\n    case 'csiso2022jp':\n    case 'iso-2022-jp':\n      return 'ISO-2022-JP'\n    case 'csshiftjis':\n    case 'ms932':\n    case 'ms_kanji':\n    case 'shift-jis':\n    case 'shift_jis':\n    case 'sjis':\n    case 'windows-31j':\n    case 'x-sjis':\n      return 'Shift_JIS'\n    case 'cseuckr':\n    case 'csksc56011987':\n    case 'euc-kr':\n    case 'iso-ir-149':\n    case 'korean':\n    case 'ks_c_5601-1987':\n    case 'ks_c_5601-1989':\n    case 'ksc5601':\n    case 'ksc_5601':\n    case 'windows-949':\n      return 'EUC-KR'\n    case 'csiso2022kr':\n    case 'hz-gb-2312':\n    case 'iso-2022-cn':\n    case 'iso-2022-cn-ext':\n    case 'iso-2022-kr':\n    case 'replacement':\n      return 'replacement'\n    case 'unicodefffe':\n    case 'utf-16be':\n      return 'UTF-16BE'\n    case 'csunicode':\n    case 'iso-10646-ucs-2':\n    case 'ucs-2':\n    case 'unicode':\n    case 'unicodefeff':\n    case 'utf-16':\n    case 'utf-16le':\n      return 'UTF-16LE'\n    case 'x-user-defined':\n      return 'x-user-defined'\n    default: return 'failure'\n  }\n}\n\nmodule.exports = {\n  getEncoding\n}\n", "'use strict'\n\nconst {\n  kState,\n  kError,\n  kResult,\n  kAborted,\n  kLastProgressEventFired\n} = require('./symbols')\nconst { ProgressEvent } = require('./progressevent')\nconst { getEncoding } = require('./encoding')\nconst { serializeAMimeType, parseMIMEType } = require('../fetch/data-url')\nconst { types } = require('node:util')\nconst { StringDecoder } = require('string_decoder')\nconst { btoa } = require('node:buffer')\n\n/** @type {PropertyDescriptor} */\nconst staticPropertyDescriptors = {\n  enumerable: true,\n  writable: false,\n  configurable: false\n}\n\n/**\n * @see https://w3c.github.io/FileAPI/#readOperation\n * @param {import('./filereader').FileReader} fr\n * @param {import('buffer').Blob} blob\n * @param {string} type\n * @param {string?} encodingName\n */\nfunction readOperation (fr, blob, type, encodingName) {\n  // 1. If fr\u2019s state is \"loading\", throw an InvalidStateError\n  //    DOMException.\n  if (fr[kState] === 'loading') {\n    throw new DOMException('Invalid state', 'InvalidStateError')\n  }\n\n  // 2. Set fr\u2019s state to \"loading\".\n  fr[kState] = 'loading'\n\n  // 3. Set fr\u2019s result to null.\n  fr[kResult] = null\n\n  // 4. Set fr\u2019s error to null.\n  fr[kError] = null\n\n  // 5. Let stream be the result of calling get stream on blob.\n  /** @type {import('stream/web').ReadableStream} */\n  const stream = blob.stream()\n\n  // 6. Let reader be the result of getting a reader from stream.\n  const reader = stream.getReader()\n\n  // 7. Let bytes be an empty byte sequence.\n  /** @type {Uint8Array[]} */\n  const bytes = []\n\n  // 8. Let chunkPromise be the result of reading a chunk from\n  //    stream with reader.\n  let chunkPromise = reader.read()\n\n  // 9. Let isFirstChunk be true.\n  let isFirstChunk = true\n\n  // 10. In parallel, while true:\n  // Note: \"In parallel\" just means non-blocking\n  // Note 2: readOperation itself cannot be async as double\n  // reading the body would then reject the promise, instead\n  // of throwing an error.\n  ;(async () => {\n    while (!fr[kAborted]) {\n      // 1. Wait for chunkPromise to be fulfilled or rejected.\n      try {\n        const { done, value } = await chunkPromise\n\n        // 2. If chunkPromise is fulfilled, and isFirstChunk is\n        //    true, queue a task to fire a progress event called\n        //    loadstart at fr.\n        if (isFirstChunk && !fr[kAborted]) {\n          queueMicrotask(() => {\n            fireAProgressEvent('loadstart', fr)\n          })\n        }\n\n        // 3. Set isFirstChunk to false.\n        isFirstChunk = false\n\n        // 4. If chunkPromise is fulfilled with an object whose\n        //    done property is false and whose value property is\n        //    a Uint8Array object, run these steps:\n        if (!done && types.isUint8Array(value)) {\n          // 1. Let bs be the byte sequence represented by the\n          //    Uint8Array object.\n\n          // 2. Append bs to bytes.\n          bytes.push(value)\n\n          // 3. If roughly 50ms have passed since these steps\n          //    were last invoked, queue a task to fire a\n          //    progress event called progress at fr.\n          if (\n            (\n              fr[kLastProgressEventFired] === undefined ||\n              Date.now() - fr[kLastProgressEventFired] >= 50\n            ) &&\n            !fr[kAborted]\n          ) {\n            fr[kLastProgressEventFired] = Date.now()\n            queueMicrotask(() => {\n              fireAProgressEvent('progress', fr)\n            })\n          }\n\n          // 4. Set chunkPromise to the result of reading a\n          //    chunk from stream with reader.\n          chunkPromise = reader.read()\n        } else if (done) {\n          // 5. Otherwise, if chunkPromise is fulfilled with an\n          //    object whose done property is true, queue a task\n          //    to run the following steps and abort this algorithm:\n          queueMicrotask(() => {\n            // 1. Set fr\u2019s state to \"done\".\n            fr[kState] = 'done'\n\n            // 2. Let result be the result of package data given\n            //    bytes, type, blob\u2019s type, and encodingName.\n            try {\n              const result = packageData(bytes, type, blob.type, encodingName)\n\n              // 4. Else:\n\n              if (fr[kAborted]) {\n                return\n              }\n\n              // 1. Set fr\u2019s result to result.\n              fr[kResult] = result\n\n              // 2. Fire a progress event called load at the fr.\n              fireAProgressEvent('load', fr)\n            } catch (error) {\n              // 3. If package data threw an exception error:\n\n              // 1. Set fr\u2019s error to error.\n              fr[kError] = error\n\n              // 2. Fire a progress event called error at fr.\n              fireAProgressEvent('error', fr)\n            }\n\n            // 5. If fr\u2019s state is not \"loading\", fire a progress\n            //    event called loadend at the fr.\n            if (fr[kState] !== 'loading') {\n              fireAProgressEvent('loadend', fr)\n            }\n          })\n\n          break\n        }\n      } catch (error) {\n        if (fr[kAborted]) {\n          return\n        }\n\n        // 6. Otherwise, if chunkPromise is rejected with an\n        //    error error, queue a task to run the following\n        //    steps and abort this algorithm:\n        queueMicrotask(() => {\n          // 1. Set fr\u2019s state to \"done\".\n          fr[kState] = 'done'\n\n          // 2. Set fr\u2019s error to error.\n          fr[kError] = error\n\n          // 3. Fire a progress event called error at fr.\n          fireAProgressEvent('error', fr)\n\n          // 4. If fr\u2019s state is not \"loading\", fire a progress\n          //    event called loadend at fr.\n          if (fr[kState] !== 'loading') {\n            fireAProgressEvent('loadend', fr)\n          }\n        })\n\n        break\n      }\n    }\n  })()\n}\n\n/**\n * @see https://w3c.github.io/FileAPI/#fire-a-progress-event\n * @see https://dom.spec.whatwg.org/#concept-event-fire\n * @param {string} e The name of the event\n * @param {import('./filereader').FileReader} reader\n */\nfunction fireAProgressEvent (e, reader) {\n  // The progress event e does not bubble. e.bubbles must be false\n  // The progress event e is NOT cancelable. e.cancelable must be false\n  const event = new ProgressEvent(e, {\n    bubbles: false,\n    cancelable: false\n  })\n\n  reader.dispatchEvent(event)\n}\n\n/**\n * @see https://w3c.github.io/FileAPI/#blob-package-data\n * @param {Uint8Array[]} bytes\n * @param {string} type\n * @param {string?} mimeType\n * @param {string?} encodingName\n */\nfunction packageData (bytes, type, mimeType, encodingName) {\n  // 1. A Blob has an associated package data algorithm, given\n  //    bytes, a type, a optional mimeType, and a optional\n  //    encodingName, which switches on type and runs the\n  //    associated steps:\n\n  switch (type) {\n    case 'DataURL': {\n      // 1. Return bytes as a DataURL [RFC2397] subject to\n      //    the considerations below:\n      //  * Use mimeType as part of the Data URL if it is\n      //    available in keeping with the Data URL\n      //    specification [RFC2397].\n      //  * If mimeType is not available return a Data URL\n      //    without a media-type. [RFC2397].\n\n      // https://datatracker.ietf.org/doc/html/rfc2397#section-3\n      // dataurl    := \"data:\" [ mediatype ] [ \";base64\" ] \",\" data\n      // mediatype  := [ type \"/\" subtype ] *( \";\" parameter )\n      // data       := *urlchar\n      // parameter  := attribute \"=\" value\n      let dataURL = 'data:'\n\n      const parsed = parseMIMEType(mimeType || 'application/octet-stream')\n\n      if (parsed !== 'failure') {\n        dataURL += serializeAMimeType(parsed)\n      }\n\n      dataURL += ';base64,'\n\n      const decoder = new StringDecoder('latin1')\n\n      for (const chunk of bytes) {\n        dataURL += btoa(decoder.write(chunk))\n      }\n\n      dataURL += btoa(decoder.end())\n\n      return dataURL\n    }\n    case 'Text': {\n      // 1. Let encoding be failure\n      let encoding = 'failure'\n\n      // 2. If the encodingName is present, set encoding to the\n      //    result of getting an encoding from encodingName.\n      if (encodingName) {\n        encoding = getEncoding(encodingName)\n      }\n\n      // 3. If encoding is failure, and mimeType is present:\n      if (encoding === 'failure' && mimeType) {\n        // 1. Let type be the result of parse a MIME type\n        //    given mimeType.\n        const type = parseMIMEType(mimeType)\n\n        // 2. If type is not failure, set encoding to the result\n        //    of getting an encoding from type\u2019s parameters[\"charset\"].\n        if (type !== 'failure') {\n          encoding = getEncoding(type.parameters.get('charset'))\n        }\n      }\n\n      // 4. If encoding is failure, then set encoding to UTF-8.\n      if (encoding === 'failure') {\n        encoding = 'UTF-8'\n      }\n\n      // 5. Decode bytes using fallback encoding encoding, and\n      //    return the result.\n      return decode(bytes, encoding)\n    }\n    case 'ArrayBuffer': {\n      // Return a new ArrayBuffer whose contents are bytes.\n      const sequence = combineByteSequences(bytes)\n\n      return sequence.buffer\n    }\n    case 'BinaryString': {\n      // Return bytes as a binary string, in which every byte\n      //  is represented by a code unit of equal value [0..255].\n      let binaryString = ''\n\n      const decoder = new StringDecoder('latin1')\n\n      for (const chunk of bytes) {\n        binaryString += decoder.write(chunk)\n      }\n\n      binaryString += decoder.end()\n\n      return binaryString\n    }\n  }\n}\n\n/**\n * @see https://encoding.spec.whatwg.org/#decode\n * @param {Uint8Array[]} ioQueue\n * @param {string} encoding\n */\nfunction decode (ioQueue, encoding) {\n  const bytes = combineByteSequences(ioQueue)\n\n  // 1. Let BOMEncoding be the result of BOM sniffing ioQueue.\n  const BOMEncoding = BOMSniffing(bytes)\n\n  let slice = 0\n\n  // 2. If BOMEncoding is non-null:\n  if (BOMEncoding !== null) {\n    // 1. Set encoding to BOMEncoding.\n    encoding = BOMEncoding\n\n    // 2. Read three bytes from ioQueue, if BOMEncoding is\n    //    UTF-8; otherwise read two bytes.\n    //    (Do nothing with those bytes.)\n    slice = BOMEncoding === 'UTF-8' ? 3 : 2\n  }\n\n  // 3. Process a queue with an instance of encoding\u2019s\n  //    decoder, ioQueue, output, and \"replacement\".\n\n  // 4. Return output.\n\n  const sliced = bytes.slice(slice)\n  return new TextDecoder(encoding).decode(sliced)\n}\n\n/**\n * @see https://encoding.spec.whatwg.org/#bom-sniff\n * @param {Uint8Array} ioQueue\n */\nfunction BOMSniffing (ioQueue) {\n  // 1. Let BOM be the result of peeking 3 bytes from ioQueue,\n  //    converted to a byte sequence.\n  const [a, b, c] = ioQueue\n\n  // 2. For each of the rows in the table below, starting with\n  //    the first one and going down, if BOM starts with the\n  //    bytes given in the first column, then return the\n  //    encoding given in the cell in the second column of that\n  //    row. Otherwise, return null.\n  if (a === 0xEF && b === 0xBB && c === 0xBF) {\n    return 'UTF-8'\n  } else if (a === 0xFE && b === 0xFF) {\n    return 'UTF-16BE'\n  } else if (a === 0xFF && b === 0xFE) {\n    return 'UTF-16LE'\n  }\n\n  return null\n}\n\n/**\n * @param {Uint8Array[]} sequences\n */\nfunction combineByteSequences (sequences) {\n  const size = sequences.reduce((a, b) => {\n    return a + b.byteLength\n  }, 0)\n\n  let offset = 0\n\n  return sequences.reduce((a, b) => {\n    a.set(b, offset)\n    offset += b.byteLength\n    return a\n  }, new Uint8Array(size))\n}\n\nmodule.exports = {\n  staticPropertyDescriptors,\n  readOperation,\n  fireAProgressEvent\n}\n", "'use strict'\n\nconst {\n  staticPropertyDescriptors,\n  readOperation,\n  fireAProgressEvent\n} = require('./util')\nconst {\n  kState,\n  kError,\n  kResult,\n  kEvents,\n  kAborted\n} = require('./symbols')\nconst { webidl } = require('../fetch/webidl')\nconst { kEnumerableProperty } = require('../../core/util')\n\nclass FileReader extends EventTarget {\n  constructor () {\n    super()\n\n    this[kState] = 'empty'\n    this[kResult] = null\n    this[kError] = null\n    this[kEvents] = {\n      loadend: null,\n      error: null,\n      abort: null,\n      load: null,\n      progress: null,\n      loadstart: null\n    }\n  }\n\n  /**\n   * @see https://w3c.github.io/FileAPI/#dfn-readAsArrayBuffer\n   * @param {import('buffer').Blob} blob\n   */\n  readAsArrayBuffer (blob) {\n    webidl.brandCheck(this, FileReader)\n\n    webidl.argumentLengthCheck(arguments, 1, 'FileReader.readAsArrayBuffer')\n\n    blob = webidl.converters.Blob(blob, { strict: false })\n\n    // The readAsArrayBuffer(blob) method, when invoked,\n    // must initiate a read operation for blob with ArrayBuffer.\n    readOperation(this, blob, 'ArrayBuffer')\n  }\n\n  /**\n   * @see https://w3c.github.io/FileAPI/#readAsBinaryString\n   * @param {import('buffer').Blob} blob\n   */\n  readAsBinaryString (blob) {\n    webidl.brandCheck(this, FileReader)\n\n    webidl.argumentLengthCheck(arguments, 1, 'FileReader.readAsBinaryString')\n\n    blob = webidl.converters.Blob(blob, { strict: false })\n\n    // The readAsBinaryString(blob) method, when invoked,\n    // must initiate a read operation for blob with BinaryString.\n    readOperation(this, blob, 'BinaryString')\n  }\n\n  /**\n   * @see https://w3c.github.io/FileAPI/#readAsDataText\n   * @param {import('buffer').Blob} blob\n   * @param {string?} encoding\n   */\n  readAsText (blob, encoding = undefined) {\n    webidl.brandCheck(this, FileReader)\n\n    webidl.argumentLengthCheck(arguments, 1, 'FileReader.readAsText')\n\n    blob = webidl.converters.Blob(blob, { strict: false })\n\n    if (encoding !== undefined) {\n      encoding = webidl.converters.DOMString(encoding, 'FileReader.readAsText', 'encoding')\n    }\n\n    // The readAsText(blob, encoding) method, when invoked,\n    // must initiate a read operation for blob with Text and encoding.\n    readOperation(this, blob, 'Text', encoding)\n  }\n\n  /**\n   * @see https://w3c.github.io/FileAPI/#dfn-readAsDataURL\n   * @param {import('buffer').Blob} blob\n   */\n  readAsDataURL (blob) {\n    webidl.brandCheck(this, FileReader)\n\n    webidl.argumentLengthCheck(arguments, 1, 'FileReader.readAsDataURL')\n\n    blob = webidl.converters.Blob(blob, { strict: false })\n\n    // The readAsDataURL(blob) method, when invoked, must\n    // initiate a read operation for blob with DataURL.\n    readOperation(this, blob, 'DataURL')\n  }\n\n  /**\n   * @see https://w3c.github.io/FileAPI/#dfn-abort\n   */\n  abort () {\n    // 1. If this's state is \"empty\" or if this's state is\n    //    \"done\" set this's result to null and terminate\n    //    this algorithm.\n    if (this[kState] === 'empty' || this[kState] === 'done') {\n      this[kResult] = null\n      return\n    }\n\n    // 2. If this's state is \"loading\" set this's state to\n    //    \"done\" and set this's result to null.\n    if (this[kState] === 'loading') {\n      this[kState] = 'done'\n      this[kResult] = null\n    }\n\n    // 3. If there are any tasks from this on the file reading\n    //    task source in an affiliated task queue, then remove\n    //    those tasks from that task queue.\n    this[kAborted] = true\n\n    // 4. Terminate the algorithm for the read method being processed.\n    // TODO\n\n    // 5. Fire a progress event called abort at this.\n    fireAProgressEvent('abort', this)\n\n    // 6. If this's state is not \"loading\", fire a progress\n    //    event called loadend at this.\n    if (this[kState] !== 'loading') {\n      fireAProgressEvent('loadend', this)\n    }\n  }\n\n  /**\n   * @see https://w3c.github.io/FileAPI/#dom-filereader-readystate\n   */\n  get readyState () {\n    webidl.brandCheck(this, FileReader)\n\n    switch (this[kState]) {\n      case 'empty': return this.EMPTY\n      case 'loading': return this.LOADING\n      case 'done': return this.DONE\n    }\n  }\n\n  /**\n   * @see https://w3c.github.io/FileAPI/#dom-filereader-result\n   */\n  get result () {\n    webidl.brandCheck(this, FileReader)\n\n    // The result attribute\u2019s getter, when invoked, must return\n    // this's result.\n    return this[kResult]\n  }\n\n  /**\n   * @see https://w3c.github.io/FileAPI/#dom-filereader-error\n   */\n  get error () {\n    webidl.brandCheck(this, FileReader)\n\n    // The error attribute\u2019s getter, when invoked, must return\n    // this's error.\n    return this[kError]\n  }\n\n  get onloadend () {\n    webidl.brandCheck(this, FileReader)\n\n    return this[kEvents].loadend\n  }\n\n  set onloadend (fn) {\n    webidl.brandCheck(this, FileReader)\n\n    if (this[kEvents].loadend) {\n      this.removeEventListener('loadend', this[kEvents].loadend)\n    }\n\n    if (typeof fn === 'function') {\n      this[kEvents].loadend = fn\n      this.addEventListener('loadend', fn)\n    } else {\n      this[kEvents].loadend = null\n    }\n  }\n\n  get onerror () {\n    webidl.brandCheck(this, FileReader)\n\n    return this[kEvents].error\n  }\n\n  set onerror (fn) {\n    webidl.brandCheck(this, FileReader)\n\n    if (this[kEvents].error) {\n      this.removeEventListener('error', this[kEvents].error)\n    }\n\n    if (typeof fn === 'function') {\n      this[kEvents].error = fn\n      this.addEventListener('error', fn)\n    } else {\n      this[kEvents].error = null\n    }\n  }\n\n  get onloadstart () {\n    webidl.brandCheck(this, FileReader)\n\n    return this[kEvents].loadstart\n  }\n\n  set onloadstart (fn) {\n    webidl.brandCheck(this, FileReader)\n\n    if (this[kEvents].loadstart) {\n      this.removeEventListener('loadstart', this[kEvents].loadstart)\n    }\n\n    if (typeof fn === 'function') {\n      this[kEvents].loadstart = fn\n      this.addEventListener('loadstart', fn)\n    } else {\n      this[kEvents].loadstart = null\n    }\n  }\n\n  get onprogress () {\n    webidl.brandCheck(this, FileReader)\n\n    return this[kEvents].progress\n  }\n\n  set onprogress (fn) {\n    webidl.brandCheck(this, FileReader)\n\n    if (this[kEvents].progress) {\n      this.removeEventListener('progress', this[kEvents].progress)\n    }\n\n    if (typeof fn === 'function') {\n      this[kEvents].progress = fn\n      this.addEventListener('progress', fn)\n    } else {\n      this[kEvents].progress = null\n    }\n  }\n\n  get onload () {\n    webidl.brandCheck(this, FileReader)\n\n    return this[kEvents].load\n  }\n\n  set onload (fn) {\n    webidl.brandCheck(this, FileReader)\n\n    if (this[kEvents].load) {\n      this.removeEventListener('load', this[kEvents].load)\n    }\n\n    if (typeof fn === 'function') {\n      this[kEvents].load = fn\n      this.addEventListener('load', fn)\n    } else {\n      this[kEvents].load = null\n    }\n  }\n\n  get onabort () {\n    webidl.brandCheck(this, FileReader)\n\n    return this[kEvents].abort\n  }\n\n  set onabort (fn) {\n    webidl.brandCheck(this, FileReader)\n\n    if (this[kEvents].abort) {\n      this.removeEventListener('abort', this[kEvents].abort)\n    }\n\n    if (typeof fn === 'function') {\n      this[kEvents].abort = fn\n      this.addEventListener('abort', fn)\n    } else {\n      this[kEvents].abort = null\n    }\n  }\n}\n\n// https://w3c.github.io/FileAPI/#dom-filereader-empty\nFileReader.EMPTY = FileReader.prototype.EMPTY = 0\n// https://w3c.github.io/FileAPI/#dom-filereader-loading\nFileReader.LOADING = FileReader.prototype.LOADING = 1\n// https://w3c.github.io/FileAPI/#dom-filereader-done\nFileReader.DONE = FileReader.prototype.DONE = 2\n\nObject.defineProperties(FileReader.prototype, {\n  EMPTY: staticPropertyDescriptors,\n  LOADING: staticPropertyDescriptors,\n  DONE: staticPropertyDescriptors,\n  readAsArrayBuffer: kEnumerableProperty,\n  readAsBinaryString: kEnumerableProperty,\n  readAsText: kEnumerableProperty,\n  readAsDataURL: kEnumerableProperty,\n  abort: kEnumerableProperty,\n  readyState: kEnumerableProperty,\n  result: kEnumerableProperty,\n  error: kEnumerableProperty,\n  onloadstart: kEnumerableProperty,\n  onprogress: kEnumerableProperty,\n  onload: kEnumerableProperty,\n  onabort: kEnumerableProperty,\n  onerror: kEnumerableProperty,\n  onloadend: kEnumerableProperty,\n  [Symbol.toStringTag]: {\n    value: 'FileReader',\n    writable: false,\n    enumerable: false,\n    configurable: true\n  }\n})\n\nObject.defineProperties(FileReader, {\n  EMPTY: staticPropertyDescriptors,\n  LOADING: staticPropertyDescriptors,\n  DONE: staticPropertyDescriptors\n})\n\nmodule.exports = {\n  FileReader\n}\n", "'use strict'\n\nmodule.exports = {\n  kConstruct: require('../../core/symbols').kConstruct\n}\n", "'use strict'\n\nconst assert = require('node:assert')\nconst { URLSerializer } = require('../fetch/data-url')\nconst { isValidHeaderName } = require('../fetch/util')\n\n/**\n * @see https://url.spec.whatwg.org/#concept-url-equals\n * @param {URL} A\n * @param {URL} B\n * @param {boolean | undefined} excludeFragment\n * @returns {boolean}\n */\nfunction urlEquals (A, B, excludeFragment = false) {\n  const serializedA = URLSerializer(A, excludeFragment)\n\n  const serializedB = URLSerializer(B, excludeFragment)\n\n  return serializedA === serializedB\n}\n\n/**\n * @see https://github.com/chromium/chromium/blob/694d20d134cb553d8d89e5500b9148012b1ba299/content/browser/cache_storage/cache_storage_cache.cc#L260-L262\n * @param {string} header\n */\nfunction getFieldValues (header) {\n  assert(header !== null)\n\n  const values = []\n\n  for (let value of header.split(',')) {\n    value = value.trim()\n\n    if (isValidHeaderName(value)) {\n      values.push(value)\n    }\n  }\n\n  return values\n}\n\nmodule.exports = {\n  urlEquals,\n  getFieldValues\n}\n", "'use strict'\n\nconst { kConstruct } = require('./symbols')\nconst { urlEquals, getFieldValues } = require('./util')\nconst { kEnumerableProperty, isDisturbed } = require('../../core/util')\nconst { webidl } = require('../fetch/webidl')\nconst { Response, cloneResponse, fromInnerResponse } = require('../fetch/response')\nconst { Request, fromInnerRequest } = require('../fetch/request')\nconst { kState } = require('../fetch/symbols')\nconst { fetching } = require('../fetch/index')\nconst { urlIsHttpHttpsScheme, createDeferredPromise, readAllBytes } = require('../fetch/util')\nconst assert = require('node:assert')\n\n/**\n * @see https://w3c.github.io/ServiceWorker/#dfn-cache-batch-operation\n * @typedef {Object} CacheBatchOperation\n * @property {'delete' | 'put'} type\n * @property {any} request\n * @property {any} response\n * @property {import('../../types/cache').CacheQueryOptions} options\n */\n\n/**\n * @see https://w3c.github.io/ServiceWorker/#dfn-request-response-list\n * @typedef {[any, any][]} requestResponseList\n */\n\nclass Cache {\n  /**\n   * @see https://w3c.github.io/ServiceWorker/#dfn-relevant-request-response-list\n   * @type {requestResponseList}\n   */\n  #relevantRequestResponseList\n\n  constructor () {\n    if (arguments[0] !== kConstruct) {\n      webidl.illegalConstructor()\n    }\n\n    this.#relevantRequestResponseList = arguments[1]\n  }\n\n  async match (request, options = {}) {\n    webidl.brandCheck(this, Cache)\n\n    const prefix = 'Cache.match'\n    webidl.argumentLengthCheck(arguments, 1, prefix)\n\n    request = webidl.converters.RequestInfo(request, prefix, 'request')\n    options = webidl.converters.CacheQueryOptions(options, prefix, 'options')\n\n    const p = this.#internalMatchAll(request, options, 1)\n\n    if (p.length === 0) {\n      return\n    }\n\n    return p[0]\n  }\n\n  async matchAll (request = undefined, options = {}) {\n    webidl.brandCheck(this, Cache)\n\n    const prefix = 'Cache.matchAll'\n    if (request !== undefined) request = webidl.converters.RequestInfo(request, prefix, 'request')\n    options = webidl.converters.CacheQueryOptions(options, prefix, 'options')\n\n    return this.#internalMatchAll(request, options)\n  }\n\n  async add (request) {\n    webidl.brandCheck(this, Cache)\n\n    const prefix = 'Cache.add'\n    webidl.argumentLengthCheck(arguments, 1, prefix)\n\n    request = webidl.converters.RequestInfo(request, prefix, 'request')\n\n    // 1.\n    const requests = [request]\n\n    // 2.\n    const responseArrayPromise = this.addAll(requests)\n\n    // 3.\n    return await responseArrayPromise\n  }\n\n  async addAll (requests) {\n    webidl.brandCheck(this, Cache)\n\n    const prefix = 'Cache.addAll'\n    webidl.argumentLengthCheck(arguments, 1, prefix)\n\n    // 1.\n    const responsePromises = []\n\n    // 2.\n    const requestList = []\n\n    // 3.\n    for (let request of requests) {\n      if (request === undefined) {\n        throw webidl.errors.conversionFailed({\n          prefix,\n          argument: 'Argument 1',\n          types: ['undefined is not allowed']\n        })\n      }\n\n      request = webidl.converters.RequestInfo(request)\n\n      if (typeof request === 'string') {\n        continue\n      }\n\n      // 3.1\n      const r = request[kState]\n\n      // 3.2\n      if (!urlIsHttpHttpsScheme(r.url) || r.method !== 'GET') {\n        throw webidl.errors.exception({\n          header: prefix,\n          message: 'Expected http/s scheme when method is not GET.'\n        })\n      }\n    }\n\n    // 4.\n    /** @type {ReturnType<typeof fetching>[]} */\n    const fetchControllers = []\n\n    // 5.\n    for (const request of requests) {\n      // 5.1\n      const r = new Request(request)[kState]\n\n      // 5.2\n      if (!urlIsHttpHttpsScheme(r.url)) {\n        throw webidl.errors.exception({\n          header: prefix,\n          message: 'Expected http/s scheme.'\n        })\n      }\n\n      // 5.4\n      r.initiator = 'fetch'\n      r.destination = 'subresource'\n\n      // 5.5\n      requestList.push(r)\n\n      // 5.6\n      const responsePromise = createDeferredPromise()\n\n      // 5.7\n      fetchControllers.push(fetching({\n        request: r,\n        processResponse (response) {\n          // 1.\n          if (response.type === 'error' || response.status === 206 || response.status < 200 || response.status > 299) {\n            responsePromise.reject(webidl.errors.exception({\n              header: 'Cache.addAll',\n              message: 'Received an invalid status code or the request failed.'\n            }))\n          } else if (response.headersList.contains('vary')) { // 2.\n            // 2.1\n            const fieldValues = getFieldValues(response.headersList.get('vary'))\n\n            // 2.2\n            for (const fieldValue of fieldValues) {\n              // 2.2.1\n              if (fieldValue === '*') {\n                responsePromise.reject(webidl.errors.exception({\n                  header: 'Cache.addAll',\n                  message: 'invalid vary field value'\n                }))\n\n                for (const controller of fetchControllers) {\n                  controller.abort()\n                }\n\n                return\n              }\n            }\n          }\n        },\n        processResponseEndOfBody (response) {\n          // 1.\n          if (response.aborted) {\n            responsePromise.reject(new DOMException('aborted', 'AbortError'))\n            return\n          }\n\n          // 2.\n          responsePromise.resolve(response)\n        }\n      }))\n\n      // 5.8\n      responsePromises.push(responsePromise.promise)\n    }\n\n    // 6.\n    const p = Promise.all(responsePromises)\n\n    // 7.\n    const responses = await p\n\n    // 7.1\n    const operations = []\n\n    // 7.2\n    let index = 0\n\n    // 7.3\n    for (const response of responses) {\n      // 7.3.1\n      /** @type {CacheBatchOperation} */\n      const operation = {\n        type: 'put', // 7.3.2\n        request: requestList[index], // 7.3.3\n        response // 7.3.4\n      }\n\n      operations.push(operation) // 7.3.5\n\n      index++ // 7.3.6\n    }\n\n    // 7.5\n    const cacheJobPromise = createDeferredPromise()\n\n    // 7.6.1\n    let errorData = null\n\n    // 7.6.2\n    try {\n      this.#batchCacheOperations(operations)\n    } catch (e) {\n      errorData = e\n    }\n\n    // 7.6.3\n    queueMicrotask(() => {\n      // 7.6.3.1\n      if (errorData === null) {\n        cacheJobPromise.resolve(undefined)\n      } else {\n        // 7.6.3.2\n        cacheJobPromise.reject(errorData)\n      }\n    })\n\n    // 7.7\n    return cacheJobPromise.promise\n  }\n\n  async put (request, response) {\n    webidl.brandCheck(this, Cache)\n\n    const prefix = 'Cache.put'\n    webidl.argumentLengthCheck(arguments, 2, prefix)\n\n    request = webidl.converters.RequestInfo(request, prefix, 'request')\n    response = webidl.converters.Response(response, prefix, 'response')\n\n    // 1.\n    let innerRequest = null\n\n    // 2.\n    if (request instanceof Request) {\n      innerRequest = request[kState]\n    } else { // 3.\n      innerRequest = new Request(request)[kState]\n    }\n\n    // 4.\n    if (!urlIsHttpHttpsScheme(innerRequest.url) || innerRequest.method !== 'GET') {\n      throw webidl.errors.exception({\n        header: prefix,\n        message: 'Expected an http/s scheme when method is not GET'\n      })\n    }\n\n    // 5.\n    const innerResponse = response[kState]\n\n    // 6.\n    if (innerResponse.status === 206) {\n      throw webidl.errors.exception({\n        header: prefix,\n        message: 'Got 206 status'\n      })\n    }\n\n    // 7.\n    if (innerResponse.headersList.contains('vary')) {\n      // 7.1.\n      const fieldValues = getFieldValues(innerResponse.headersList.get('vary'))\n\n      // 7.2.\n      for (const fieldValue of fieldValues) {\n        // 7.2.1\n        if (fieldValue === '*') {\n          throw webidl.errors.exception({\n            header: prefix,\n            message: 'Got * vary field value'\n          })\n        }\n      }\n    }\n\n    // 8.\n    if (innerResponse.body && (isDisturbed(innerResponse.body.stream) || innerResponse.body.stream.locked)) {\n      throw webidl.errors.exception({\n        header: prefix,\n        message: 'Response body is locked or disturbed'\n      })\n    }\n\n    // 9.\n    const clonedResponse = cloneResponse(innerResponse)\n\n    // 10.\n    const bodyReadPromise = createDeferredPromise()\n\n    // 11.\n    if (innerResponse.body != null) {\n      // 11.1\n      const stream = innerResponse.body.stream\n\n      // 11.2\n      const reader = stream.getReader()\n\n      // 11.3\n      readAllBytes(reader).then(bodyReadPromise.resolve, bodyReadPromise.reject)\n    } else {\n      bodyReadPromise.resolve(undefined)\n    }\n\n    // 12.\n    /** @type {CacheBatchOperation[]} */\n    const operations = []\n\n    // 13.\n    /** @type {CacheBatchOperation} */\n    const operation = {\n      type: 'put', // 14.\n      request: innerRequest, // 15.\n      response: clonedResponse // 16.\n    }\n\n    // 17.\n    operations.push(operation)\n\n    // 19.\n    const bytes = await bodyReadPromise.promise\n\n    if (clonedResponse.body != null) {\n      clonedResponse.body.source = bytes\n    }\n\n    // 19.1\n    const cacheJobPromise = createDeferredPromise()\n\n    // 19.2.1\n    let errorData = null\n\n    // 19.2.2\n    try {\n      this.#batchCacheOperations(operations)\n    } catch (e) {\n      errorData = e\n    }\n\n    // 19.2.3\n    queueMicrotask(() => {\n      // 19.2.3.1\n      if (errorData === null) {\n        cacheJobPromise.resolve()\n      } else { // 19.2.3.2\n        cacheJobPromise.reject(errorData)\n      }\n    })\n\n    return cacheJobPromise.promise\n  }\n\n  async delete (request, options = {}) {\n    webidl.brandCheck(this, Cache)\n\n    const prefix = 'Cache.delete'\n    webidl.argumentLengthCheck(arguments, 1, prefix)\n\n    request = webidl.converters.RequestInfo(request, prefix, 'request')\n    options = webidl.converters.CacheQueryOptions(options, prefix, 'options')\n\n    /**\n     * @type {Request}\n     */\n    let r = null\n\n    if (request instanceof Request) {\n      r = request[kState]\n\n      if (r.method !== 'GET' && !options.ignoreMethod) {\n        return false\n      }\n    } else {\n      assert(typeof request === 'string')\n\n      r = new Request(request)[kState]\n    }\n\n    /** @type {CacheBatchOperation[]} */\n    const operations = []\n\n    /** @type {CacheBatchOperation} */\n    const operation = {\n      type: 'delete',\n      request: r,\n      options\n    }\n\n    operations.push(operation)\n\n    const cacheJobPromise = createDeferredPromise()\n\n    let errorData = null\n    let requestResponses\n\n    try {\n      requestResponses = this.#batchCacheOperations(operations)\n    } catch (e) {\n      errorData = e\n    }\n\n    queueMicrotask(() => {\n      if (errorData === null) {\n        cacheJobPromise.resolve(!!requestResponses?.length)\n      } else {\n        cacheJobPromise.reject(errorData)\n      }\n    })\n\n    return cacheJobPromise.promise\n  }\n\n  /**\n   * @see https://w3c.github.io/ServiceWorker/#dom-cache-keys\n   * @param {any} request\n   * @param {import('../../types/cache').CacheQueryOptions} options\n   * @returns {Promise<readonly Request[]>}\n   */\n  async keys (request = undefined, options = {}) {\n    webidl.brandCheck(this, Cache)\n\n    const prefix = 'Cache.keys'\n\n    if (request !== undefined) request = webidl.converters.RequestInfo(request, prefix, 'request')\n    options = webidl.converters.CacheQueryOptions(options, prefix, 'options')\n\n    // 1.\n    let r = null\n\n    // 2.\n    if (request !== undefined) {\n      // 2.1\n      if (request instanceof Request) {\n        // 2.1.1\n        r = request[kState]\n\n        // 2.1.2\n        if (r.method !== 'GET' && !options.ignoreMethod) {\n          return []\n        }\n      } else if (typeof request === 'string') { // 2.2\n        r = new Request(request)[kState]\n      }\n    }\n\n    // 4.\n    const promise = createDeferredPromise()\n\n    // 5.\n    // 5.1\n    const requests = []\n\n    // 5.2\n    if (request === undefined) {\n      // 5.2.1\n      for (const requestResponse of this.#relevantRequestResponseList) {\n        // 5.2.1.1\n        requests.push(requestResponse[0])\n      }\n    } else { // 5.3\n      // 5.3.1\n      const requestResponses = this.#queryCache(r, options)\n\n      // 5.3.2\n      for (const requestResponse of requestResponses) {\n        // 5.3.2.1\n        requests.push(requestResponse[0])\n      }\n    }\n\n    // 5.4\n    queueMicrotask(() => {\n      // 5.4.1\n      const requestList = []\n\n      // 5.4.2\n      for (const request of requests) {\n        const requestObject = fromInnerRequest(\n          request,\n          new AbortController().signal,\n          'immutable'\n        )\n        // 5.4.2.1\n        requestList.push(requestObject)\n      }\n\n      // 5.4.3\n      promise.resolve(Object.freeze(requestList))\n    })\n\n    return promise.promise\n  }\n\n  /**\n   * @see https://w3c.github.io/ServiceWorker/#batch-cache-operations-algorithm\n   * @param {CacheBatchOperation[]} operations\n   * @returns {requestResponseList}\n   */\n  #batchCacheOperations (operations) {\n    // 1.\n    const cache = this.#relevantRequestResponseList\n\n    // 2.\n    const backupCache = [...cache]\n\n    // 3.\n    const addedItems = []\n\n    // 4.1\n    const resultList = []\n\n    try {\n      // 4.2\n      for (const operation of operations) {\n        // 4.2.1\n        if (operation.type !== 'delete' && operation.type !== 'put') {\n          throw webidl.errors.exception({\n            header: 'Cache.#batchCacheOperations',\n            message: 'operation type does not match \"delete\" or \"put\"'\n          })\n        }\n\n        // 4.2.2\n        if (operation.type === 'delete' && operation.response != null) {\n          throw webidl.errors.exception({\n            header: 'Cache.#batchCacheOperations',\n            message: 'delete operation should not have an associated response'\n          })\n        }\n\n        // 4.2.3\n        if (this.#queryCache(operation.request, operation.options, addedItems).length) {\n          throw new DOMException('???', 'InvalidStateError')\n        }\n\n        // 4.2.4\n        let requestResponses\n\n        // 4.2.5\n        if (operation.type === 'delete') {\n          // 4.2.5.1\n          requestResponses = this.#queryCache(operation.request, operation.options)\n\n          // TODO: the spec is wrong, this is needed to pass WPTs\n          if (requestResponses.length === 0) {\n            return []\n          }\n\n          // 4.2.5.2\n          for (const requestResponse of requestResponses) {\n            const idx = cache.indexOf(requestResponse)\n            assert(idx !== -1)\n\n            // 4.2.5.2.1\n            cache.splice(idx, 1)\n          }\n        } else if (operation.type === 'put') { // 4.2.6\n          // 4.2.6.1\n          if (operation.response == null) {\n            throw webidl.errors.exception({\n              header: 'Cache.#batchCacheOperations',\n              message: 'put operation should have an associated response'\n            })\n          }\n\n          // 4.2.6.2\n          const r = operation.request\n\n          // 4.2.6.3\n          if (!urlIsHttpHttpsScheme(r.url)) {\n            throw webidl.errors.exception({\n              header: 'Cache.#batchCacheOperations',\n              message: 'expected http or https scheme'\n            })\n          }\n\n          // 4.2.6.4\n          if (r.method !== 'GET') {\n            throw webidl.errors.exception({\n              header: 'Cache.#batchCacheOperations',\n              message: 'not get method'\n            })\n          }\n\n          // 4.2.6.5\n          if (operation.options != null) {\n            throw webidl.errors.exception({\n              header: 'Cache.#batchCacheOperations',\n              message: 'options must not be defined'\n            })\n          }\n\n          // 4.2.6.6\n          requestResponses = this.#queryCache(operation.request)\n\n          // 4.2.6.7\n          for (const requestResponse of requestResponses) {\n            const idx = cache.indexOf(requestResponse)\n            assert(idx !== -1)\n\n            // 4.2.6.7.1\n            cache.splice(idx, 1)\n          }\n\n          // 4.2.6.8\n          cache.push([operation.request, operation.response])\n\n          // 4.2.6.10\n          addedItems.push([operation.request, operation.response])\n        }\n\n        // 4.2.7\n        resultList.push([operation.request, operation.response])\n      }\n\n      // 4.3\n      return resultList\n    } catch (e) { // 5.\n      // 5.1\n      this.#relevantRequestResponseList.length = 0\n\n      // 5.2\n      this.#relevantRequestResponseList = backupCache\n\n      // 5.3\n      throw e\n    }\n  }\n\n  /**\n   * @see https://w3c.github.io/ServiceWorker/#query-cache\n   * @param {any} requestQuery\n   * @param {import('../../types/cache').CacheQueryOptions} options\n   * @param {requestResponseList} targetStorage\n   * @returns {requestResponseList}\n   */\n  #queryCache (requestQuery, options, targetStorage) {\n    /** @type {requestResponseList} */\n    const resultList = []\n\n    const storage = targetStorage ?? this.#relevantRequestResponseList\n\n    for (const requestResponse of storage) {\n      const [cachedRequest, cachedResponse] = requestResponse\n      if (this.#requestMatchesCachedItem(requestQuery, cachedRequest, cachedResponse, options)) {\n        resultList.push(requestResponse)\n      }\n    }\n\n    return resultList\n  }\n\n  /**\n   * @see https://w3c.github.io/ServiceWorker/#request-matches-cached-item-algorithm\n   * @param {any} requestQuery\n   * @param {any} request\n   * @param {any | null} response\n   * @param {import('../../types/cache').CacheQueryOptions | undefined} options\n   * @returns {boolean}\n   */\n  #requestMatchesCachedItem (requestQuery, request, response = null, options) {\n    // if (options?.ignoreMethod === false && request.method === 'GET') {\n    //   return false\n    // }\n\n    const queryURL = new URL(requestQuery.url)\n\n    const cachedURL = new URL(request.url)\n\n    if (options?.ignoreSearch) {\n      cachedURL.search = ''\n\n      queryURL.search = ''\n    }\n\n    if (!urlEquals(queryURL, cachedURL, true)) {\n      return false\n    }\n\n    if (\n      response == null ||\n      options?.ignoreVary ||\n      !response.headersList.contains('vary')\n    ) {\n      return true\n    }\n\n    const fieldValues = getFieldValues(response.headersList.get('vary'))\n\n    for (const fieldValue of fieldValues) {\n      if (fieldValue === '*') {\n        return false\n      }\n\n      const requestValue = request.headersList.get(fieldValue)\n      const queryValue = requestQuery.headersList.get(fieldValue)\n\n      // If one has the header and the other doesn't, or one has\n      // a different value than the other, return false\n      if (requestValue !== queryValue) {\n        return false\n      }\n    }\n\n    return true\n  }\n\n  #internalMatchAll (request, options, maxResponses = Infinity) {\n    // 1.\n    let r = null\n\n    // 2.\n    if (request !== undefined) {\n      if (request instanceof Request) {\n        // 2.1.1\n        r = request[kState]\n\n        // 2.1.2\n        if (r.method !== 'GET' && !options.ignoreMethod) {\n          return []\n        }\n      } else if (typeof request === 'string') {\n        // 2.2.1\n        r = new Request(request)[kState]\n      }\n    }\n\n    // 5.\n    // 5.1\n    const responses = []\n\n    // 5.2\n    if (request === undefined) {\n      // 5.2.1\n      for (const requestResponse of this.#relevantRequestResponseList) {\n        responses.push(requestResponse[1])\n      }\n    } else { // 5.3\n      // 5.3.1\n      const requestResponses = this.#queryCache(r, options)\n\n      // 5.3.2\n      for (const requestResponse of requestResponses) {\n        responses.push(requestResponse[1])\n      }\n    }\n\n    // 5.4\n    // We don't implement CORs so we don't need to loop over the responses, yay!\n\n    // 5.5.1\n    const responseList = []\n\n    // 5.5.2\n    for (const response of responses) {\n      // 5.5.2.1\n      const responseObject = fromInnerResponse(response, 'immutable')\n\n      responseList.push(responseObject.clone())\n\n      if (responseList.length >= maxResponses) {\n        break\n      }\n    }\n\n    // 6.\n    return Object.freeze(responseList)\n  }\n}\n\nObject.defineProperties(Cache.prototype, {\n  [Symbol.toStringTag]: {\n    value: 'Cache',\n    configurable: true\n  },\n  match: kEnumerableProperty,\n  matchAll: kEnumerableProperty,\n  add: kEnumerableProperty,\n  addAll: kEnumerableProperty,\n  put: kEnumerableProperty,\n  delete: kEnumerableProperty,\n  keys: kEnumerableProperty\n})\n\nconst cacheQueryOptionConverters = [\n  {\n    key: 'ignoreSearch',\n    converter: webidl.converters.boolean,\n    defaultValue: () => false\n  },\n  {\n    key: 'ignoreMethod',\n    converter: webidl.converters.boolean,\n    defaultValue: () => false\n  },\n  {\n    key: 'ignoreVary',\n    converter: webidl.converters.boolean,\n    defaultValue: () => false\n  }\n]\n\nwebidl.converters.CacheQueryOptions = webidl.dictionaryConverter(cacheQueryOptionConverters)\n\nwebidl.converters.MultiCacheQueryOptions = webidl.dictionaryConverter([\n  ...cacheQueryOptionConverters,\n  {\n    key: 'cacheName',\n    converter: webidl.converters.DOMString\n  }\n])\n\nwebidl.converters.Response = webidl.interfaceConverter(Response)\n\nwebidl.converters['sequence<RequestInfo>'] = webidl.sequenceConverter(\n  webidl.converters.RequestInfo\n)\n\nmodule.exports = {\n  Cache\n}\n", "'use strict'\n\nconst { kConstruct } = require('./symbols')\nconst { Cache } = require('./cache')\nconst { webidl } = require('../fetch/webidl')\nconst { kEnumerableProperty } = require('../../core/util')\n\nclass CacheStorage {\n  /**\n   * @see https://w3c.github.io/ServiceWorker/#dfn-relevant-name-to-cache-map\n   * @type {Map<string, import('./cache').requestResponseList}\n   */\n  #caches = new Map()\n\n  constructor () {\n    if (arguments[0] !== kConstruct) {\n      webidl.illegalConstructor()\n    }\n  }\n\n  async match (request, options = {}) {\n    webidl.brandCheck(this, CacheStorage)\n    webidl.argumentLengthCheck(arguments, 1, 'CacheStorage.match')\n\n    request = webidl.converters.RequestInfo(request)\n    options = webidl.converters.MultiCacheQueryOptions(options)\n\n    // 1.\n    if (options.cacheName != null) {\n      // 1.1.1.1\n      if (this.#caches.has(options.cacheName)) {\n        // 1.1.1.1.1\n        const cacheList = this.#caches.get(options.cacheName)\n        const cache = new Cache(kConstruct, cacheList)\n\n        return await cache.match(request, options)\n      }\n    } else { // 2.\n      // 2.2\n      for (const cacheList of this.#caches.values()) {\n        const cache = new Cache(kConstruct, cacheList)\n\n        // 2.2.1.2\n        const response = await cache.match(request, options)\n\n        if (response !== undefined) {\n          return response\n        }\n      }\n    }\n  }\n\n  /**\n   * @see https://w3c.github.io/ServiceWorker/#cache-storage-has\n   * @param {string} cacheName\n   * @returns {Promise<boolean>}\n   */\n  async has (cacheName) {\n    webidl.brandCheck(this, CacheStorage)\n\n    const prefix = 'CacheStorage.has'\n    webidl.argumentLengthCheck(arguments, 1, prefix)\n\n    cacheName = webidl.converters.DOMString(cacheName, prefix, 'cacheName')\n\n    // 2.1.1\n    // 2.2\n    return this.#caches.has(cacheName)\n  }\n\n  /**\n   * @see https://w3c.github.io/ServiceWorker/#dom-cachestorage-open\n   * @param {string} cacheName\n   * @returns {Promise<Cache>}\n   */\n  async open (cacheName) {\n    webidl.brandCheck(this, CacheStorage)\n\n    const prefix = 'CacheStorage.open'\n    webidl.argumentLengthCheck(arguments, 1, prefix)\n\n    cacheName = webidl.converters.DOMString(cacheName, prefix, 'cacheName')\n\n    // 2.1\n    if (this.#caches.has(cacheName)) {\n      // await caches.open('v1') !== await caches.open('v1')\n\n      // 2.1.1\n      const cache = this.#caches.get(cacheName)\n\n      // 2.1.1.1\n      return new Cache(kConstruct, cache)\n    }\n\n    // 2.2\n    const cache = []\n\n    // 2.3\n    this.#caches.set(cacheName, cache)\n\n    // 2.4\n    return new Cache(kConstruct, cache)\n  }\n\n  /**\n   * @see https://w3c.github.io/ServiceWorker/#cache-storage-delete\n   * @param {string} cacheName\n   * @returns {Promise<boolean>}\n   */\n  async delete (cacheName) {\n    webidl.brandCheck(this, CacheStorage)\n\n    const prefix = 'CacheStorage.delete'\n    webidl.argumentLengthCheck(arguments, 1, prefix)\n\n    cacheName = webidl.converters.DOMString(cacheName, prefix, 'cacheName')\n\n    return this.#caches.delete(cacheName)\n  }\n\n  /**\n   * @see https://w3c.github.io/ServiceWorker/#cache-storage-keys\n   * @returns {Promise<string[]>}\n   */\n  async keys () {\n    webidl.brandCheck(this, CacheStorage)\n\n    // 2.1\n    const keys = this.#caches.keys()\n\n    // 2.2\n    return [...keys]\n  }\n}\n\nObject.defineProperties(CacheStorage.prototype, {\n  [Symbol.toStringTag]: {\n    value: 'CacheStorage',\n    configurable: true\n  },\n  match: kEnumerableProperty,\n  has: kEnumerableProperty,\n  open: kEnumerableProperty,\n  delete: kEnumerableProperty,\n  keys: kEnumerableProperty\n})\n\nmodule.exports = {\n  CacheStorage\n}\n", "'use strict'\n\n// https://wicg.github.io/cookie-store/#cookie-maximum-attribute-value-size\nconst maxAttributeValueSize = 1024\n\n// https://wicg.github.io/cookie-store/#cookie-maximum-name-value-pair-size\nconst maxNameValuePairSize = 4096\n\nmodule.exports = {\n  maxAttributeValueSize,\n  maxNameValuePairSize\n}\n", "'use strict'\n\nconst assert = require('node:assert')\nconst { getHeadersList: internalGetHeadersList } = require('../fetch/headers')\n\n/**\n * @param {string} value\n * @returns {boolean}\n */\nfunction isCTLExcludingHtab (value) {\n  for (let i = 0; i < value.length; ++i) {\n    const code = value.charCodeAt(i)\n\n    if (\n      (code >= 0x00 && code <= 0x08) ||\n      (code >= 0x0A && code <= 0x1F) ||\n      code === 0x7F\n    ) {\n      return true\n    }\n  }\n  return false\n}\n\n/**\n CHAR           = <any US-ASCII character (octets 0 - 127)>\n token          = 1*<any CHAR except CTLs or separators>\n separators     = \"(\" | \")\" | \"<\" | \">\" | \"@\"\n                | \",\" | \";\" | \":\" | \"\\\" | <\">\n                | \"/\" | \"[\" | \"]\" | \"?\" | \"=\"\n                | \"{\" | \"}\" | SP | HT\n * @param {string} name\n */\nfunction validateCookieName (name) {\n  for (let i = 0; i < name.length; ++i) {\n    const code = name.charCodeAt(i)\n\n    if (\n      code < 0x21 || // exclude CTLs (0-31), SP and HT\n      code > 0x7E || // exclude non-ascii and DEL\n      code === 0x22 || // \"\n      code === 0x28 || // (\n      code === 0x29 || // )\n      code === 0x3C || // <\n      code === 0x3E || // >\n      code === 0x40 || // @\n      code === 0x2C || // ,\n      code === 0x3B || // ;\n      code === 0x3A || // :\n      code === 0x5C || // \\\n      code === 0x2F || // /\n      code === 0x5B || // [\n      code === 0x5D || // ]\n      code === 0x3F || // ?\n      code === 0x3D || // =\n      code === 0x7B || // {\n      code === 0x7D // }\n    ) {\n      throw new Error('Invalid cookie name')\n    }\n  }\n}\n\n/**\n cookie-value      = *cookie-octet / ( DQUOTE *cookie-octet DQUOTE )\n cookie-octet      = %x21 / %x23-2B / %x2D-3A / %x3C-5B / %x5D-7E\n                       ; US-ASCII characters excluding CTLs,\n                       ; whitespace DQUOTE, comma, semicolon,\n                       ; and backslash\n * @param {string} value\n */\nfunction validateCookieValue (value) {\n  let len = value.length\n  let i = 0\n\n  // if the value is wrapped in DQUOTE\n  if (value[0] === '\"') {\n    if (len === 1 || value[len - 1] !== '\"') {\n      throw new Error('Invalid cookie value')\n    }\n    --len\n    ++i\n  }\n\n  while (i < len) {\n    const code = value.charCodeAt(i++)\n\n    if (\n      code < 0x21 || // exclude CTLs (0-31)\n      code > 0x7E || // non-ascii and DEL (127)\n      code === 0x22 || // \"\n      code === 0x2C || // ,\n      code === 0x3B || // ;\n      code === 0x5C // \\\n    ) {\n      throw new Error('Invalid cookie value')\n    }\n  }\n}\n\n/**\n * path-value        = <any CHAR except CTLs or \";\">\n * @param {string} path\n */\nfunction validateCookiePath (path) {\n  for (let i = 0; i < path.length; ++i) {\n    const code = path.charCodeAt(i)\n\n    if (\n      code < 0x20 || // exclude CTLs (0-31)\n      code === 0x7F || // DEL\n      code === 0x3B // ;\n    ) {\n      throw new Error('Invalid cookie path')\n    }\n  }\n}\n\n/**\n * I have no idea why these values aren't allowed to be honest,\n * but Deno tests these. - Khafra\n * @param {string} domain\n */\nfunction validateCookieDomain (domain) {\n  if (\n    domain.startsWith('-') ||\n    domain.endsWith('.') ||\n    domain.endsWith('-')\n  ) {\n    throw new Error('Invalid cookie domain')\n  }\n}\n\nconst IMFDays = [\n  'Sun', 'Mon', 'Tue', 'Wed',\n  'Thu', 'Fri', 'Sat'\n]\n\nconst IMFMonths = [\n  'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',\n  'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'\n]\n\nconst IMFPaddedNumbers = Array(61).fill(0).map((_, i) => i.toString().padStart(2, '0'))\n\n/**\n * @see https://www.rfc-editor.org/rfc/rfc7231#section-7.1.1.1\n * @param {number|Date} date\n  IMF-fixdate  = day-name \",\" SP date1 SP time-of-day SP GMT\n  ; fixed length/zone/capitalization subset of the format\n  ; see Section 3.3 of [RFC5322]\n\n  day-name     = %x4D.6F.6E ; \"Mon\", case-sensitive\n              / %x54.75.65 ; \"Tue\", case-sensitive\n              / %x57.65.64 ; \"Wed\", case-sensitive\n              / %x54.68.75 ; \"Thu\", case-sensitive\n              / %x46.72.69 ; \"Fri\", case-sensitive\n              / %x53.61.74 ; \"Sat\", case-sensitive\n              / %x53.75.6E ; \"Sun\", case-sensitive\n  date1        = day SP month SP year\n                  ; e.g., 02 Jun 1982\n\n  day          = 2DIGIT\n  month        = %x4A.61.6E ; \"Jan\", case-sensitive\n              / %x46.65.62 ; \"Feb\", case-sensitive\n              / %x4D.61.72 ; \"Mar\", case-sensitive\n              / %x41.70.72 ; \"Apr\", case-sensitive\n              / %x4D.61.79 ; \"May\", case-sensitive\n              / %x4A.75.6E ; \"Jun\", case-sensitive\n              / %x4A.75.6C ; \"Jul\", case-sensitive\n              / %x41.75.67 ; \"Aug\", case-sensitive\n              / %x53.65.70 ; \"Sep\", case-sensitive\n              / %x4F.63.74 ; \"Oct\", case-sensitive\n              / %x4E.6F.76 ; \"Nov\", case-sensitive\n              / %x44.65.63 ; \"Dec\", case-sensitive\n  year         = 4DIGIT\n\n  GMT          = %x47.4D.54 ; \"GMT\", case-sensitive\n\n  time-of-day  = hour \":\" minute \":\" second\n              ; 00:00:00 - 23:59:60 (leap second)\n\n  hour         = 2DIGIT\n  minute       = 2DIGIT\n  second       = 2DIGIT\n */\nfunction toIMFDate (date) {\n  if (typeof date === 'number') {\n    date = new Date(date)\n  }\n\n  return `${IMFDays[date.getUTCDay()]}, ${IMFPaddedNumbers[date.getUTCDate()]} ${IMFMonths[date.getUTCMonth()]} ${date.getUTCFullYear()} ${IMFPaddedNumbers[date.getUTCHours()]}:${IMFPaddedNumbers[date.getUTCMinutes()]}:${IMFPaddedNumbers[date.getUTCSeconds()]} GMT`\n}\n\n/**\n max-age-av        = \"Max-Age=\" non-zero-digit *DIGIT\n                       ; In practice, both expires-av and max-age-av\n                       ; are limited to dates representable by the\n                       ; user agent.\n * @param {number} maxAge\n */\nfunction validateCookieMaxAge (maxAge) {\n  if (maxAge < 0) {\n    throw new Error('Invalid cookie max-age')\n  }\n}\n\n/**\n * @see https://www.rfc-editor.org/rfc/rfc6265#section-4.1.1\n * @param {import('./index').Cookie} cookie\n */\nfunction stringify (cookie) {\n  if (cookie.name.length === 0) {\n    return null\n  }\n\n  validateCookieName(cookie.name)\n  validateCookieValue(cookie.value)\n\n  const out = [`${cookie.name}=${cookie.value}`]\n\n  // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-cookie-prefixes-00#section-3.1\n  // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-cookie-prefixes-00#section-3.2\n  if (cookie.name.startsWith('__Secure-')) {\n    cookie.secure = true\n  }\n\n  if (cookie.name.startsWith('__Host-')) {\n    cookie.secure = true\n    cookie.domain = null\n    cookie.path = '/'\n  }\n\n  if (cookie.secure) {\n    out.push('Secure')\n  }\n\n  if (cookie.httpOnly) {\n    out.push('HttpOnly')\n  }\n\n  if (typeof cookie.maxAge === 'number') {\n    validateCookieMaxAge(cookie.maxAge)\n    out.push(`Max-Age=${cookie.maxAge}`)\n  }\n\n  if (cookie.domain) {\n    validateCookieDomain(cookie.domain)\n    out.push(`Domain=${cookie.domain}`)\n  }\n\n  if (cookie.path) {\n    validateCookiePath(cookie.path)\n    out.push(`Path=${cookie.path}`)\n  }\n\n  if (cookie.expires && cookie.expires.toString() !== 'Invalid Date') {\n    out.push(`Expires=${toIMFDate(cookie.expires)}`)\n  }\n\n  if (cookie.sameSite) {\n    out.push(`SameSite=${cookie.sameSite}`)\n  }\n\n  for (const part of cookie.unparsed) {\n    if (!part.includes('=')) {\n      throw new Error('Invalid unparsed')\n    }\n\n    const [key, ...value] = part.split('=')\n\n    out.push(`${key.trim()}=${value.join('=')}`)\n  }\n\n  return out.join('; ')\n}\n\nlet kHeadersListNode\n\nfunction getHeadersList (headers) {\n  try {\n    return internalGetHeadersList(headers)\n  } catch {\n    // fall-through\n  }\n\n  if (!kHeadersListNode) {\n    kHeadersListNode = Object.getOwnPropertySymbols(headers).find(\n      (symbol) => symbol.description === 'headers list'\n    )\n\n    assert(kHeadersListNode, 'Headers cannot be parsed')\n  }\n\n  const headersList = headers[kHeadersListNode]\n  assert(headersList)\n\n  return headersList\n}\n\nmodule.exports = {\n  isCTLExcludingHtab,\n  validateCookieName,\n  validateCookiePath,\n  validateCookieValue,\n  toIMFDate,\n  stringify,\n  getHeadersList\n}\n", "'use strict'\n\nconst { maxNameValuePairSize, maxAttributeValueSize } = require('./constants')\nconst { isCTLExcludingHtab } = require('./util')\nconst { collectASequenceOfCodePointsFast } = require('../fetch/data-url')\nconst assert = require('node:assert')\n\n/**\n * @description Parses the field-value attributes of a set-cookie header string.\n * @see https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4\n * @param {string} header\n * @returns if the header is invalid, null will be returned\n */\nfunction parseSetCookie (header) {\n  // 1. If the set-cookie-string contains a %x00-08 / %x0A-1F / %x7F\n  //    character (CTL characters excluding HTAB): Abort these steps and\n  //    ignore the set-cookie-string entirely.\n  if (isCTLExcludingHtab(header)) {\n    return null\n  }\n\n  let nameValuePair = ''\n  let unparsedAttributes = ''\n  let name = ''\n  let value = ''\n\n  // 2. If the set-cookie-string contains a %x3B (\";\") character:\n  if (header.includes(';')) {\n    // 1. The name-value-pair string consists of the characters up to,\n    //    but not including, the first %x3B (\";\"), and the unparsed-\n    //    attributes consist of the remainder of the set-cookie-string\n    //    (including the %x3B (\";\") in question).\n    const position = { position: 0 }\n\n    nameValuePair = collectASequenceOfCodePointsFast(';', header, position)\n    unparsedAttributes = header.slice(position.position)\n  } else {\n    // Otherwise:\n\n    // 1. The name-value-pair string consists of all the characters\n    //    contained in the set-cookie-string, and the unparsed-\n    //    attributes is the empty string.\n    nameValuePair = header\n  }\n\n  // 3. If the name-value-pair string lacks a %x3D (\"=\") character, then\n  //    the name string is empty, and the value string is the value of\n  //    name-value-pair.\n  if (!nameValuePair.includes('=')) {\n    value = nameValuePair\n  } else {\n    //    Otherwise, the name string consists of the characters up to, but\n    //    not including, the first %x3D (\"=\") character, and the (possibly\n    //    empty) value string consists of the characters after the first\n    //    %x3D (\"=\") character.\n    const position = { position: 0 }\n    name = collectASequenceOfCodePointsFast(\n      '=',\n      nameValuePair,\n      position\n    )\n    value = nameValuePair.slice(position.position + 1)\n  }\n\n  // 4. Remove any leading or trailing WSP characters from the name\n  //    string and the value string.\n  name = name.trim()\n  value = value.trim()\n\n  // 5. If the sum of the lengths of the name string and the value string\n  //    is more than 4096 octets, abort these steps and ignore the set-\n  //    cookie-string entirely.\n  if (name.length + value.length > maxNameValuePairSize) {\n    return null\n  }\n\n  // 6. The cookie-name is the name string, and the cookie-value is the\n  //    value string.\n  return {\n    name, value, ...parseUnparsedAttributes(unparsedAttributes)\n  }\n}\n\n/**\n * Parses the remaining attributes of a set-cookie header\n * @see https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4\n * @param {string} unparsedAttributes\n * @param {[Object.<string, unknown>]={}} cookieAttributeList\n */\nfunction parseUnparsedAttributes (unparsedAttributes, cookieAttributeList = {}) {\n  // 1. If the unparsed-attributes string is empty, skip the rest of\n  //    these steps.\n  if (unparsedAttributes.length === 0) {\n    return cookieAttributeList\n  }\n\n  // 2. Discard the first character of the unparsed-attributes (which\n  //    will be a %x3B (\";\") character).\n  assert(unparsedAttributes[0] === ';')\n  unparsedAttributes = unparsedAttributes.slice(1)\n\n  let cookieAv = ''\n\n  // 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n  //    character:\n  if (unparsedAttributes.includes(';')) {\n    // 1. Consume the characters of the unparsed-attributes up to, but\n    //    not including, the first %x3B (\";\") character.\n    cookieAv = collectASequenceOfCodePointsFast(\n      ';',\n      unparsedAttributes,\n      { position: 0 }\n    )\n    unparsedAttributes = unparsedAttributes.slice(cookieAv.length)\n  } else {\n    // Otherwise:\n\n    // 1. Consume the remainder of the unparsed-attributes.\n    cookieAv = unparsedAttributes\n    unparsedAttributes = ''\n  }\n\n  // Let the cookie-av string be the characters consumed in this step.\n\n  let attributeName = ''\n  let attributeValue = ''\n\n  // 4. If the cookie-av string contains a %x3D (\"=\") character:\n  if (cookieAv.includes('=')) {\n    // 1. The (possibly empty) attribute-name string consists of the\n    //    characters up to, but not including, the first %x3D (\"=\")\n    //    character, and the (possibly empty) attribute-value string\n    //    consists of the characters after the first %x3D (\"=\")\n    //    character.\n    const position = { position: 0 }\n\n    attributeName = collectASequenceOfCodePointsFast(\n      '=',\n      cookieAv,\n      position\n    )\n    attributeValue = cookieAv.slice(position.position + 1)\n  } else {\n    // Otherwise:\n\n    // 1. The attribute-name string consists of the entire cookie-av\n    //    string, and the attribute-value string is empty.\n    attributeName = cookieAv\n  }\n\n  // 5. Remove any leading or trailing WSP characters from the attribute-\n  //    name string and the attribute-value string.\n  attributeName = attributeName.trim()\n  attributeValue = attributeValue.trim()\n\n  // 6. If the attribute-value is longer than 1024 octets, ignore the\n  //    cookie-av string and return to Step 1 of this algorithm.\n  if (attributeValue.length > maxAttributeValueSize) {\n    return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList)\n  }\n\n  // 7. Process the attribute-name and attribute-value according to the\n  //    requirements in the following subsections.  (Notice that\n  //    attributes with unrecognized attribute-names are ignored.)\n  const attributeNameLowercase = attributeName.toLowerCase()\n\n  // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.1\n  // If the attribute-name case-insensitively matches the string\n  // \"Expires\", the user agent MUST process the cookie-av as follows.\n  if (attributeNameLowercase === 'expires') {\n    // 1. Let the expiry-time be the result of parsing the attribute-value\n    //    as cookie-date (see Section 5.1.1).\n    const expiryTime = new Date(attributeValue)\n\n    // 2. If the attribute-value failed to parse as a cookie date, ignore\n    //    the cookie-av.\n\n    cookieAttributeList.expires = expiryTime\n  } else if (attributeNameLowercase === 'max-age') {\n    // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.2\n    // If the attribute-name case-insensitively matches the string \"Max-\n    // Age\", the user agent MUST process the cookie-av as follows.\n\n    // 1. If the first character of the attribute-value is not a DIGIT or a\n    //    \"-\" character, ignore the cookie-av.\n    const charCode = attributeValue.charCodeAt(0)\n\n    if ((charCode < 48 || charCode > 57) && attributeValue[0] !== '-') {\n      return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList)\n    }\n\n    // 2. If the remainder of attribute-value contains a non-DIGIT\n    //    character, ignore the cookie-av.\n    if (!/^\\d+$/.test(attributeValue)) {\n      return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList)\n    }\n\n    // 3. Let delta-seconds be the attribute-value converted to an integer.\n    const deltaSeconds = Number(attributeValue)\n\n    // 4. Let cookie-age-limit be the maximum age of the cookie (which\n    //    SHOULD be 400 days or less, see Section 4.1.2.2).\n\n    // 5. Set delta-seconds to the smaller of its present value and cookie-\n    //    age-limit.\n    // deltaSeconds = Math.min(deltaSeconds * 1000, maxExpiresMs)\n\n    // 6. If delta-seconds is less than or equal to zero (0), let expiry-\n    //    time be the earliest representable date and time.  Otherwise, let\n    //    the expiry-time be the current date and time plus delta-seconds\n    //    seconds.\n    // const expiryTime = deltaSeconds <= 0 ? Date.now() : Date.now() + deltaSeconds\n\n    // 7. Append an attribute to the cookie-attribute-list with an\n    //    attribute-name of Max-Age and an attribute-value of expiry-time.\n    cookieAttributeList.maxAge = deltaSeconds\n  } else if (attributeNameLowercase === 'domain') {\n    // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.3\n    // If the attribute-name case-insensitively matches the string \"Domain\",\n    // the user agent MUST process the cookie-av as follows.\n\n    // 1. Let cookie-domain be the attribute-value.\n    let cookieDomain = attributeValue\n\n    // 2. If cookie-domain starts with %x2E (\".\"), let cookie-domain be\n    //    cookie-domain without its leading %x2E (\".\").\n    if (cookieDomain[0] === '.') {\n      cookieDomain = cookieDomain.slice(1)\n    }\n\n    // 3. Convert the cookie-domain to lower case.\n    cookieDomain = cookieDomain.toLowerCase()\n\n    // 4. Append an attribute to the cookie-attribute-list with an\n    //    attribute-name of Domain and an attribute-value of cookie-domain.\n    cookieAttributeList.domain = cookieDomain\n  } else if (attributeNameLowercase === 'path') {\n    // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.4\n    // If the attribute-name case-insensitively matches the string \"Path\",\n    // the user agent MUST process the cookie-av as follows.\n\n    // 1. If the attribute-value is empty or if the first character of the\n    //    attribute-value is not %x2F (\"/\"):\n    let cookiePath = ''\n    if (attributeValue.length === 0 || attributeValue[0] !== '/') {\n      // 1. Let cookie-path be the default-path.\n      cookiePath = '/'\n    } else {\n      // Otherwise:\n\n      // 1. Let cookie-path be the attribute-value.\n      cookiePath = attributeValue\n    }\n\n    // 2. Append an attribute to the cookie-attribute-list with an\n    //    attribute-name of Path and an attribute-value of cookie-path.\n    cookieAttributeList.path = cookiePath\n  } else if (attributeNameLowercase === 'secure') {\n    // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.5\n    // If the attribute-name case-insensitively matches the string \"Secure\",\n    // the user agent MUST append an attribute to the cookie-attribute-list\n    // with an attribute-name of Secure and an empty attribute-value.\n\n    cookieAttributeList.secure = true\n  } else if (attributeNameLowercase === 'httponly') {\n    // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.6\n    // If the attribute-name case-insensitively matches the string\n    // \"HttpOnly\", the user agent MUST append an attribute to the cookie-\n    // attribute-list with an attribute-name of HttpOnly and an empty\n    // attribute-value.\n\n    cookieAttributeList.httpOnly = true\n  } else if (attributeNameLowercase === 'samesite') {\n    // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.7\n    // If the attribute-name case-insensitively matches the string\n    // \"SameSite\", the user agent MUST process the cookie-av as follows:\n\n    // 1. Let enforcement be \"Default\".\n    let enforcement = 'Default'\n\n    const attributeValueLowercase = attributeValue.toLowerCase()\n    // 2. If cookie-av's attribute-value is a case-insensitive match for\n    //    \"None\", set enforcement to \"None\".\n    if (attributeValueLowercase.includes('none')) {\n      enforcement = 'None'\n    }\n\n    // 3. If cookie-av's attribute-value is a case-insensitive match for\n    //    \"Strict\", set enforcement to \"Strict\".\n    if (attributeValueLowercase.includes('strict')) {\n      enforcement = 'Strict'\n    }\n\n    // 4. If cookie-av's attribute-value is a case-insensitive match for\n    //    \"Lax\", set enforcement to \"Lax\".\n    if (attributeValueLowercase.includes('lax')) {\n      enforcement = 'Lax'\n    }\n\n    // 5. Append an attribute to the cookie-attribute-list with an\n    //    attribute-name of \"SameSite\" and an attribute-value of\n    //    enforcement.\n    cookieAttributeList.sameSite = enforcement\n  } else {\n    cookieAttributeList.unparsed ??= []\n\n    cookieAttributeList.unparsed.push(`${attributeName}=${attributeValue}`)\n  }\n\n  // 8. Return to Step 1 of this algorithm.\n  return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList)\n}\n\nmodule.exports = {\n  parseSetCookie,\n  parseUnparsedAttributes\n}\n", "'use strict'\n\nconst { parseSetCookie } = require('./parse')\nconst { stringify, getHeadersList } = require('./util')\nconst { webidl } = require('../fetch/webidl')\nconst { Headers } = require('../fetch/headers')\n\n/**\n * @typedef {Object} Cookie\n * @property {string} name\n * @property {string} value\n * @property {Date|number|undefined} expires\n * @property {number|undefined} maxAge\n * @property {string|undefined} domain\n * @property {string|undefined} path\n * @property {boolean|undefined} secure\n * @property {boolean|undefined} httpOnly\n * @property {'Strict'|'Lax'|'None'} sameSite\n * @property {string[]} unparsed\n */\n\n/**\n * @param {Headers} headers\n * @returns {Record<string, string>}\n */\nfunction getCookies (headers) {\n  webidl.argumentLengthCheck(arguments, 1, 'getCookies')\n\n  webidl.brandCheck(headers, Headers, { strict: false })\n\n  const cookie = headers.get('cookie')\n  const out = {}\n\n  if (!cookie) {\n    return out\n  }\n\n  for (const piece of cookie.split(';')) {\n    const [name, ...value] = piece.split('=')\n\n    out[name.trim()] = value.join('=')\n  }\n\n  return out\n}\n\n/**\n * @param {Headers} headers\n * @param {string} name\n * @param {{ path?: string, domain?: string }|undefined} attributes\n * @returns {void}\n */\nfunction deleteCookie (headers, name, attributes) {\n  webidl.brandCheck(headers, Headers, { strict: false })\n\n  const prefix = 'deleteCookie'\n  webidl.argumentLengthCheck(arguments, 2, prefix)\n\n  name = webidl.converters.DOMString(name, prefix, 'name')\n  attributes = webidl.converters.DeleteCookieAttributes(attributes)\n\n  // Matches behavior of\n  // https://github.com/denoland/deno_std/blob/63827b16330b82489a04614027c33b7904e08be5/http/cookie.ts#L278\n  setCookie(headers, {\n    name,\n    value: '',\n    expires: new Date(0),\n    ...attributes\n  })\n}\n\n/**\n * @param {Headers} headers\n * @returns {Cookie[]}\n */\nfunction getSetCookies (headers) {\n  webidl.argumentLengthCheck(arguments, 1, 'getSetCookies')\n\n  webidl.brandCheck(headers, Headers, { strict: false })\n\n  const cookies = getHeadersList(headers).cookies\n\n  if (!cookies) {\n    return []\n  }\n\n  // In older versions of undici, cookies is a list of name:value.\n  return cookies.map((pair) => parseSetCookie(Array.isArray(pair) ? pair[1] : pair))\n}\n\n/**\n * @param {Headers} headers\n * @param {Cookie} cookie\n * @returns {void}\n */\nfunction setCookie (headers, cookie) {\n  webidl.argumentLengthCheck(arguments, 2, 'setCookie')\n\n  webidl.brandCheck(headers, Headers, { strict: false })\n\n  cookie = webidl.converters.Cookie(cookie)\n\n  const str = stringify(cookie)\n\n  if (str) {\n    headers.append('Set-Cookie', str)\n  }\n}\n\nwebidl.converters.DeleteCookieAttributes = webidl.dictionaryConverter([\n  {\n    converter: webidl.nullableConverter(webidl.converters.DOMString),\n    key: 'path',\n    defaultValue: () => null\n  },\n  {\n    converter: webidl.nullableConverter(webidl.converters.DOMString),\n    key: 'domain',\n    defaultValue: () => null\n  }\n])\n\nwebidl.converters.Cookie = webidl.dictionaryConverter([\n  {\n    converter: webidl.converters.DOMString,\n    key: 'name'\n  },\n  {\n    converter: webidl.converters.DOMString,\n    key: 'value'\n  },\n  {\n    converter: webidl.nullableConverter((value) => {\n      if (typeof value === 'number') {\n        return webidl.converters['unsigned long long'](value)\n      }\n\n      return new Date(value)\n    }),\n    key: 'expires',\n    defaultValue: () => null\n  },\n  {\n    converter: webidl.nullableConverter(webidl.converters['long long']),\n    key: 'maxAge',\n    defaultValue: () => null\n  },\n  {\n    converter: webidl.nullableConverter(webidl.converters.DOMString),\n    key: 'domain',\n    defaultValue: () => null\n  },\n  {\n    converter: webidl.nullableConverter(webidl.converters.DOMString),\n    key: 'path',\n    defaultValue: () => null\n  },\n  {\n    converter: webidl.nullableConverter(webidl.converters.boolean),\n    key: 'secure',\n    defaultValue: () => null\n  },\n  {\n    converter: webidl.nullableConverter(webidl.converters.boolean),\n    key: 'httpOnly',\n    defaultValue: () => null\n  },\n  {\n    converter: webidl.converters.USVString,\n    key: 'sameSite',\n    allowedValues: ['Strict', 'Lax', 'None']\n  },\n  {\n    converter: webidl.sequenceConverter(webidl.converters.DOMString),\n    key: 'unparsed',\n    defaultValue: () => new Array(0)\n  }\n])\n\nmodule.exports = {\n  getCookies,\n  deleteCookie,\n  getSetCookies,\n  setCookie\n}\n", "'use strict'\n\nconst { webidl } = require('../fetch/webidl')\nconst { kEnumerableProperty } = require('../../core/util')\nconst { kConstruct } = require('../../core/symbols')\nconst { MessagePort } = require('node:worker_threads')\n\n/**\n * @see https://html.spec.whatwg.org/multipage/comms.html#messageevent\n */\nclass MessageEvent extends Event {\n  #eventInit\n\n  constructor (type, eventInitDict = {}) {\n    if (type === kConstruct) {\n      super(arguments[1], arguments[2])\n      return\n    }\n\n    const prefix = 'MessageEvent constructor'\n    webidl.argumentLengthCheck(arguments, 1, prefix)\n\n    type = webidl.converters.DOMString(type, prefix, 'type')\n    eventInitDict = webidl.converters.MessageEventInit(eventInitDict, prefix, 'eventInitDict')\n\n    super(type, eventInitDict)\n\n    this.#eventInit = eventInitDict\n  }\n\n  get data () {\n    webidl.brandCheck(this, MessageEvent)\n\n    return this.#eventInit.data\n  }\n\n  get origin () {\n    webidl.brandCheck(this, MessageEvent)\n\n    return this.#eventInit.origin\n  }\n\n  get lastEventId () {\n    webidl.brandCheck(this, MessageEvent)\n\n    return this.#eventInit.lastEventId\n  }\n\n  get source () {\n    webidl.brandCheck(this, MessageEvent)\n\n    return this.#eventInit.source\n  }\n\n  get ports () {\n    webidl.brandCheck(this, MessageEvent)\n\n    if (!Object.isFrozen(this.#eventInit.ports)) {\n      Object.freeze(this.#eventInit.ports)\n    }\n\n    return this.#eventInit.ports\n  }\n\n  initMessageEvent (\n    type,\n    bubbles = false,\n    cancelable = false,\n    data = null,\n    origin = '',\n    lastEventId = '',\n    source = null,\n    ports = []\n  ) {\n    webidl.brandCheck(this, MessageEvent)\n\n    webidl.argumentLengthCheck(arguments, 1, 'MessageEvent.initMessageEvent')\n\n    return new MessageEvent(type, {\n      bubbles, cancelable, data, origin, lastEventId, source, ports\n    })\n  }\n\n  static createFastMessageEvent (type, init) {\n    const messageEvent = new MessageEvent(kConstruct, type, init)\n    messageEvent.#eventInit = init\n    messageEvent.#eventInit.data ??= null\n    messageEvent.#eventInit.origin ??= ''\n    messageEvent.#eventInit.lastEventId ??= ''\n    messageEvent.#eventInit.source ??= null\n    messageEvent.#eventInit.ports ??= []\n    return messageEvent\n  }\n}\n\nconst { createFastMessageEvent } = MessageEvent\ndelete MessageEvent.createFastMessageEvent\n\n/**\n * @see https://websockets.spec.whatwg.org/#the-closeevent-interface\n */\nclass CloseEvent extends Event {\n  #eventInit\n\n  constructor (type, eventInitDict = {}) {\n    const prefix = 'CloseEvent constructor'\n    webidl.argumentLengthCheck(arguments, 1, prefix)\n\n    type = webidl.converters.DOMString(type, prefix, 'type')\n    eventInitDict = webidl.converters.CloseEventInit(eventInitDict)\n\n    super(type, eventInitDict)\n\n    this.#eventInit = eventInitDict\n  }\n\n  get wasClean () {\n    webidl.brandCheck(this, CloseEvent)\n\n    return this.#eventInit.wasClean\n  }\n\n  get code () {\n    webidl.brandCheck(this, CloseEvent)\n\n    return this.#eventInit.code\n  }\n\n  get reason () {\n    webidl.brandCheck(this, CloseEvent)\n\n    return this.#eventInit.reason\n  }\n}\n\n// https://html.spec.whatwg.org/multipage/webappapis.html#the-errorevent-interface\nclass ErrorEvent extends Event {\n  #eventInit\n\n  constructor (type, eventInitDict) {\n    const prefix = 'ErrorEvent constructor'\n    webidl.argumentLengthCheck(arguments, 1, prefix)\n\n    super(type, eventInitDict)\n\n    type = webidl.converters.DOMString(type, prefix, 'type')\n    eventInitDict = webidl.converters.ErrorEventInit(eventInitDict ?? {})\n\n    this.#eventInit = eventInitDict\n  }\n\n  get message () {\n    webidl.brandCheck(this, ErrorEvent)\n\n    return this.#eventInit.message\n  }\n\n  get filename () {\n    webidl.brandCheck(this, ErrorEvent)\n\n    return this.#eventInit.filename\n  }\n\n  get lineno () {\n    webidl.brandCheck(this, ErrorEvent)\n\n    return this.#eventInit.lineno\n  }\n\n  get colno () {\n    webidl.brandCheck(this, ErrorEvent)\n\n    return this.#eventInit.colno\n  }\n\n  get error () {\n    webidl.brandCheck(this, ErrorEvent)\n\n    return this.#eventInit.error\n  }\n}\n\nObject.defineProperties(MessageEvent.prototype, {\n  [Symbol.toStringTag]: {\n    value: 'MessageEvent',\n    configurable: true\n  },\n  data: kEnumerableProperty,\n  origin: kEnumerableProperty,\n  lastEventId: kEnumerableProperty,\n  source: kEnumerableProperty,\n  ports: kEnumerableProperty,\n  initMessageEvent: kEnumerableProperty\n})\n\nObject.defineProperties(CloseEvent.prototype, {\n  [Symbol.toStringTag]: {\n    value: 'CloseEvent',\n    configurable: true\n  },\n  reason: kEnumerableProperty,\n  code: kEnumerableProperty,\n  wasClean: kEnumerableProperty\n})\n\nObject.defineProperties(ErrorEvent.prototype, {\n  [Symbol.toStringTag]: {\n    value: 'ErrorEvent',\n    configurable: true\n  },\n  message: kEnumerableProperty,\n  filename: kEnumerableProperty,\n  lineno: kEnumerableProperty,\n  colno: kEnumerableProperty,\n  error: kEnumerableProperty\n})\n\nwebidl.converters.MessagePort = webidl.interfaceConverter(MessagePort)\n\nwebidl.converters['sequence<MessagePort>'] = webidl.sequenceConverter(\n  webidl.converters.MessagePort\n)\n\nconst eventInit = [\n  {\n    key: 'bubbles',\n    converter: webidl.converters.boolean,\n    defaultValue: () => false\n  },\n  {\n    key: 'cancelable',\n    converter: webidl.converters.boolean,\n    defaultValue: () => false\n  },\n  {\n    key: 'composed',\n    converter: webidl.converters.boolean,\n    defaultValue: () => false\n  }\n]\n\nwebidl.converters.MessageEventInit = webidl.dictionaryConverter([\n  ...eventInit,\n  {\n    key: 'data',\n    converter: webidl.converters.any,\n    defaultValue: () => null\n  },\n  {\n    key: 'origin',\n    converter: webidl.converters.USVString,\n    defaultValue: () => ''\n  },\n  {\n    key: 'lastEventId',\n    converter: webidl.converters.DOMString,\n    defaultValue: () => ''\n  },\n  {\n    key: 'source',\n    // Node doesn't implement WindowProxy or ServiceWorker, so the only\n    // valid value for source is a MessagePort.\n    converter: webidl.nullableConverter(webidl.converters.MessagePort),\n    defaultValue: () => null\n  },\n  {\n    key: 'ports',\n    converter: webidl.converters['sequence<MessagePort>'],\n    defaultValue: () => new Array(0)\n  }\n])\n\nwebidl.converters.CloseEventInit = webidl.dictionaryConverter([\n  ...eventInit,\n  {\n    key: 'wasClean',\n    converter: webidl.converters.boolean,\n    defaultValue: () => false\n  },\n  {\n    key: 'code',\n    converter: webidl.converters['unsigned short'],\n    defaultValue: () => 0\n  },\n  {\n    key: 'reason',\n    converter: webidl.converters.USVString,\n    defaultValue: () => ''\n  }\n])\n\nwebidl.converters.ErrorEventInit = webidl.dictionaryConverter([\n  ...eventInit,\n  {\n    key: 'message',\n    converter: webidl.converters.DOMString,\n    defaultValue: () => ''\n  },\n  {\n    key: 'filename',\n    converter: webidl.converters.USVString,\n    defaultValue: () => ''\n  },\n  {\n    key: 'lineno',\n    converter: webidl.converters['unsigned long'],\n    defaultValue: () => 0\n  },\n  {\n    key: 'colno',\n    converter: webidl.converters['unsigned long'],\n    defaultValue: () => 0\n  },\n  {\n    key: 'error',\n    converter: webidl.converters.any\n  }\n])\n\nmodule.exports = {\n  MessageEvent,\n  CloseEvent,\n  ErrorEvent,\n  createFastMessageEvent\n}\n", "'use strict'\n\n// This is a Globally Unique Identifier unique used\n// to validate that the endpoint accepts websocket\n// connections.\n// See https://www.rfc-editor.org/rfc/rfc6455.html#section-1.3\nconst uid = '258EAFA5-E914-47DA-95CA-C5AB0DC85B11'\n\n/** @type {PropertyDescriptor} */\nconst staticPropertyDescriptors = {\n  enumerable: true,\n  writable: false,\n  configurable: false\n}\n\nconst states = {\n  CONNECTING: 0,\n  OPEN: 1,\n  CLOSING: 2,\n  CLOSED: 3\n}\n\nconst sentCloseFrameState = {\n  NOT_SENT: 0,\n  PROCESSING: 1,\n  SENT: 2\n}\n\nconst opcodes = {\n  CONTINUATION: 0x0,\n  TEXT: 0x1,\n  BINARY: 0x2,\n  CLOSE: 0x8,\n  PING: 0x9,\n  PONG: 0xA\n}\n\nconst maxUnsigned16Bit = 2 ** 16 - 1 // 65535\n\nconst parserStates = {\n  INFO: 0,\n  PAYLOADLENGTH_16: 2,\n  PAYLOADLENGTH_64: 3,\n  READ_DATA: 4\n}\n\nconst emptyBuffer = Buffer.allocUnsafe(0)\n\nconst sendHints = {\n  string: 1,\n  typedArray: 2,\n  arrayBuffer: 3,\n  blob: 4\n}\n\nmodule.exports = {\n  uid,\n  sentCloseFrameState,\n  staticPropertyDescriptors,\n  states,\n  opcodes,\n  maxUnsigned16Bit,\n  parserStates,\n  emptyBuffer,\n  sendHints\n}\n", "'use strict'\n\nmodule.exports = {\n  kWebSocketURL: Symbol('url'),\n  kReadyState: Symbol('ready state'),\n  kController: Symbol('controller'),\n  kResponse: Symbol('response'),\n  kBinaryType: Symbol('binary type'),\n  kSentClose: Symbol('sent close'),\n  kReceivedClose: Symbol('received close'),\n  kByteParser: Symbol('byte parser')\n}\n", "'use strict'\n\nconst { kReadyState, kController, kResponse, kBinaryType, kWebSocketURL } = require('./symbols')\nconst { states, opcodes } = require('./constants')\nconst { ErrorEvent, createFastMessageEvent } = require('./events')\nconst { isUtf8 } = require('node:buffer')\nconst { collectASequenceOfCodePointsFast, removeHTTPWhitespace } = require('../fetch/data-url')\n\n/* globals Blob */\n\n/**\n * @param {import('./websocket').WebSocket} ws\n * @returns {boolean}\n */\nfunction isConnecting (ws) {\n  // If the WebSocket connection is not yet established, and the connection\n  // is not yet closed, then the WebSocket connection is in the CONNECTING state.\n  return ws[kReadyState] === states.CONNECTING\n}\n\n/**\n * @param {import('./websocket').WebSocket} ws\n * @returns {boolean}\n */\nfunction isEstablished (ws) {\n  // If the server's response is validated as provided for above, it is\n  // said that _The WebSocket Connection is Established_ and that the\n  // WebSocket Connection is in the OPEN state.\n  return ws[kReadyState] === states.OPEN\n}\n\n/**\n * @param {import('./websocket').WebSocket} ws\n * @returns {boolean}\n */\nfunction isClosing (ws) {\n  // Upon either sending or receiving a Close control frame, it is said\n  // that _The WebSocket Closing Handshake is Started_ and that the\n  // WebSocket connection is in the CLOSING state.\n  return ws[kReadyState] === states.CLOSING\n}\n\n/**\n * @param {import('./websocket').WebSocket} ws\n * @returns {boolean}\n */\nfunction isClosed (ws) {\n  return ws[kReadyState] === states.CLOSED\n}\n\n/**\n * @see https://dom.spec.whatwg.org/#concept-event-fire\n * @param {string} e\n * @param {EventTarget} target\n * @param {(...args: ConstructorParameters<typeof Event>) => Event} eventFactory\n * @param {EventInit | undefined} eventInitDict\n */\nfunction fireEvent (e, target, eventFactory = (type, init) => new Event(type, init), eventInitDict = {}) {\n  // 1. If eventConstructor is not given, then let eventConstructor be Event.\n\n  // 2. Let event be the result of creating an event given eventConstructor,\n  //    in the relevant realm of target.\n  // 3. Initialize event\u2019s type attribute to e.\n  const event = eventFactory(e, eventInitDict)\n\n  // 4. Initialize any other IDL attributes of event as described in the\n  //    invocation of this algorithm.\n\n  // 5. Return the result of dispatching event at target, with legacy target\n  //    override flag set if set.\n  target.dispatchEvent(event)\n}\n\n/**\n * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol\n * @param {import('./websocket').WebSocket} ws\n * @param {number} type Opcode\n * @param {Buffer} data application data\n */\nfunction websocketMessageReceived (ws, type, data) {\n  // 1. If ready state is not OPEN (1), then return.\n  if (ws[kReadyState] !== states.OPEN) {\n    return\n  }\n\n  // 2. Let dataForEvent be determined by switching on type and binary type:\n  let dataForEvent\n\n  if (type === opcodes.TEXT) {\n    // -> type indicates that the data is Text\n    //      a new DOMString containing data\n    try {\n      dataForEvent = utf8Decode(data)\n    } catch {\n      failWebsocketConnection(ws, 'Received invalid UTF-8 in text frame.')\n      return\n    }\n  } else if (type === opcodes.BINARY) {\n    if (ws[kBinaryType] === 'blob') {\n      // -> type indicates that the data is Binary and binary type is \"blob\"\n      //      a new Blob object, created in the relevant Realm of the WebSocket\n      //      object, that represents data as its raw data\n      dataForEvent = new Blob([data])\n    } else {\n      // -> type indicates that the data is Binary and binary type is \"arraybuffer\"\n      //      a new ArrayBuffer object, created in the relevant Realm of the\n      //      WebSocket object, whose contents are data\n      dataForEvent = toArrayBuffer(data)\n    }\n  }\n\n  // 3. Fire an event named message at the WebSocket object, using MessageEvent,\n  //    with the origin attribute initialized to the serialization of the WebSocket\n  //    object\u2019s url's origin, and the data attribute initialized to dataForEvent.\n  fireEvent('message', ws, createFastMessageEvent, {\n    origin: ws[kWebSocketURL].origin,\n    data: dataForEvent\n  })\n}\n\nfunction toArrayBuffer (buffer) {\n  if (buffer.byteLength === buffer.buffer.byteLength) {\n    return buffer.buffer\n  }\n  return buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength)\n}\n\n/**\n * @see https://datatracker.ietf.org/doc/html/rfc6455\n * @see https://datatracker.ietf.org/doc/html/rfc2616\n * @see https://bugs.chromium.org/p/chromium/issues/detail?id=398407\n * @param {string} protocol\n */\nfunction isValidSubprotocol (protocol) {\n  // If present, this value indicates one\n  // or more comma-separated subprotocol the client wishes to speak,\n  // ordered by preference.  The elements that comprise this value\n  // MUST be non-empty strings with characters in the range U+0021 to\n  // U+007E not including separator characters as defined in\n  // [RFC2616] and MUST all be unique strings.\n  if (protocol.length === 0) {\n    return false\n  }\n\n  for (let i = 0; i < protocol.length; ++i) {\n    const code = protocol.charCodeAt(i)\n\n    if (\n      code < 0x21 || // CTL, contains SP (0x20) and HT (0x09)\n      code > 0x7E ||\n      code === 0x22 || // \"\n      code === 0x28 || // (\n      code === 0x29 || // )\n      code === 0x2C || // ,\n      code === 0x2F || // /\n      code === 0x3A || // :\n      code === 0x3B || // ;\n      code === 0x3C || // <\n      code === 0x3D || // =\n      code === 0x3E || // >\n      code === 0x3F || // ?\n      code === 0x40 || // @\n      code === 0x5B || // [\n      code === 0x5C || // \\\n      code === 0x5D || // ]\n      code === 0x7B || // {\n      code === 0x7D // }\n    ) {\n      return false\n    }\n  }\n\n  return true\n}\n\n/**\n * @see https://datatracker.ietf.org/doc/html/rfc6455#section-7-4\n * @param {number} code\n */\nfunction isValidStatusCode (code) {\n  if (code >= 1000 && code < 1015) {\n    return (\n      code !== 1004 && // reserved\n      code !== 1005 && // \"MUST NOT be set as a status code\"\n      code !== 1006 // \"MUST NOT be set as a status code\"\n    )\n  }\n\n  return code >= 3000 && code <= 4999\n}\n\n/**\n * @param {import('./websocket').WebSocket} ws\n * @param {string|undefined} reason\n */\nfunction failWebsocketConnection (ws, reason) {\n  const { [kController]: controller, [kResponse]: response } = ws\n\n  controller.abort()\n\n  if (response?.socket && !response.socket.destroyed) {\n    response.socket.destroy()\n  }\n\n  if (reason) {\n    // TODO: process.nextTick\n    fireEvent('error', ws, (type, init) => new ErrorEvent(type, init), {\n      error: new Error(reason),\n      message: reason\n    })\n  }\n}\n\n/**\n * @see https://datatracker.ietf.org/doc/html/rfc6455#section-5.5\n * @param {number} opcode\n */\nfunction isControlFrame (opcode) {\n  return (\n    opcode === opcodes.CLOSE ||\n    opcode === opcodes.PING ||\n    opcode === opcodes.PONG\n  )\n}\n\nfunction isContinuationFrame (opcode) {\n  return opcode === opcodes.CONTINUATION\n}\n\nfunction isTextBinaryFrame (opcode) {\n  return opcode === opcodes.TEXT || opcode === opcodes.BINARY\n}\n\nfunction isValidOpcode (opcode) {\n  return isTextBinaryFrame(opcode) || isContinuationFrame(opcode) || isControlFrame(opcode)\n}\n\n/**\n * Parses a Sec-WebSocket-Extensions header value.\n * @param {string} extensions\n * @returns {Map<string, string>}\n */\n// TODO(@Uzlopak, @KhafraDev): make compliant https://datatracker.ietf.org/doc/html/rfc6455#section-9.1\nfunction parseExtensions (extensions) {\n  const position = { position: 0 }\n  const extensionList = new Map()\n\n  while (position.position < extensions.length) {\n    const pair = collectASequenceOfCodePointsFast(';', extensions, position)\n    const [name, value = ''] = pair.split('=')\n\n    extensionList.set(\n      removeHTTPWhitespace(name, true, false),\n      removeHTTPWhitespace(value, false, true)\n    )\n\n    position.position++\n  }\n\n  return extensionList\n}\n\n/**\n * @see https://www.rfc-editor.org/rfc/rfc7692#section-7.1.2.2\n * @description \"client-max-window-bits = 1*DIGIT\"\n * @param {string} value\n */\nfunction isValidClientWindowBits (value) {\n  for (let i = 0; i < value.length; i++) {\n    const byte = value.charCodeAt(i)\n\n    if (byte < 0x30 || byte > 0x39) {\n      return false\n    }\n  }\n\n  return true\n}\n\n// https://nodejs.org/api/intl.html#detecting-internationalization-support\nconst hasIntl = typeof process.versions.icu === 'string'\nconst fatalDecoder = hasIntl ? new TextDecoder('utf-8', { fatal: true }) : undefined\n\n/**\n * Converts a Buffer to utf-8, even on platforms without icu.\n * @param {Buffer} buffer\n */\nconst utf8Decode = hasIntl\n  ? fatalDecoder.decode.bind(fatalDecoder)\n  : function (buffer) {\n    if (isUtf8(buffer)) {\n      return buffer.toString('utf-8')\n    }\n    throw new TypeError('Invalid utf-8 received.')\n  }\n\nmodule.exports = {\n  isConnecting,\n  isEstablished,\n  isClosing,\n  isClosed,\n  fireEvent,\n  isValidSubprotocol,\n  isValidStatusCode,\n  failWebsocketConnection,\n  websocketMessageReceived,\n  utf8Decode,\n  isControlFrame,\n  isContinuationFrame,\n  isTextBinaryFrame,\n  isValidOpcode,\n  parseExtensions,\n  isValidClientWindowBits\n}\n", "'use strict'\n\nconst { maxUnsigned16Bit } = require('./constants')\n\nconst BUFFER_SIZE = 16386\n\n/** @type {import('crypto')} */\nlet crypto\nlet buffer = null\nlet bufIdx = BUFFER_SIZE\n\ntry {\n  crypto = require('node:crypto')\n/* c8 ignore next 3 */\n} catch {\n  crypto = {\n    // not full compatibility, but minimum.\n    randomFillSync: function randomFillSync (buffer, _offset, _size) {\n      for (let i = 0; i < buffer.length; ++i) {\n        buffer[i] = Math.random() * 255 | 0\n      }\n      return buffer\n    }\n  }\n}\n\nfunction generateMask () {\n  if (bufIdx === BUFFER_SIZE) {\n    bufIdx = 0\n    crypto.randomFillSync((buffer ??= Buffer.allocUnsafe(BUFFER_SIZE)), 0, BUFFER_SIZE)\n  }\n  return [buffer[bufIdx++], buffer[bufIdx++], buffer[bufIdx++], buffer[bufIdx++]]\n}\n\nclass WebsocketFrameSend {\n  /**\n   * @param {Buffer|undefined} data\n   */\n  constructor (data) {\n    this.frameData = data\n  }\n\n  createFrame (opcode) {\n    const frameData = this.frameData\n    const maskKey = generateMask()\n    const bodyLength = frameData?.byteLength ?? 0\n\n    /** @type {number} */\n    let payloadLength = bodyLength // 0-125\n    let offset = 6\n\n    if (bodyLength > maxUnsigned16Bit) {\n      offset += 8 // payload length is next 8 bytes\n      payloadLength = 127\n    } else if (bodyLength > 125) {\n      offset += 2 // payload length is next 2 bytes\n      payloadLength = 126\n    }\n\n    const buffer = Buffer.allocUnsafe(bodyLength + offset)\n\n    // Clear first 2 bytes, everything else is overwritten\n    buffer[0] = buffer[1] = 0\n    buffer[0] |= 0x80 // FIN\n    buffer[0] = (buffer[0] & 0xF0) + opcode // opcode\n\n    /*! ws. MIT License. Einar Otto Stangvik <einaros@gmail.com> */\n    buffer[offset - 4] = maskKey[0]\n    buffer[offset - 3] = maskKey[1]\n    buffer[offset - 2] = maskKey[2]\n    buffer[offset - 1] = maskKey[3]\n\n    buffer[1] = payloadLength\n\n    if (payloadLength === 126) {\n      buffer.writeUInt16BE(bodyLength, 2)\n    } else if (payloadLength === 127) {\n      // Clear extended payload length\n      buffer[2] = buffer[3] = 0\n      buffer.writeUIntBE(bodyLength, 4, 6)\n    }\n\n    buffer[1] |= 0x80 // MASK\n\n    // mask body\n    for (let i = 0; i < bodyLength; ++i) {\n      buffer[offset + i] = frameData[i] ^ maskKey[i & 3]\n    }\n\n    return buffer\n  }\n}\n\nmodule.exports = {\n  WebsocketFrameSend\n}\n", "'use strict'\n\nconst { uid, states, sentCloseFrameState, emptyBuffer, opcodes } = require('./constants')\nconst {\n  kReadyState,\n  kSentClose,\n  kByteParser,\n  kReceivedClose,\n  kResponse\n} = require('./symbols')\nconst { fireEvent, failWebsocketConnection, isClosing, isClosed, isEstablished, parseExtensions } = require('./util')\nconst { channels } = require('../../core/diagnostics')\nconst { CloseEvent } = require('./events')\nconst { makeRequest } = require('../fetch/request')\nconst { fetching } = require('../fetch/index')\nconst { Headers, getHeadersList } = require('../fetch/headers')\nconst { getDecodeSplit } = require('../fetch/util')\nconst { WebsocketFrameSend } = require('./frame')\n\n/** @type {import('crypto')} */\nlet crypto\ntry {\n  crypto = require('node:crypto')\n/* c8 ignore next 3 */\n} catch {\n\n}\n\n/**\n * @see https://websockets.spec.whatwg.org/#concept-websocket-establish\n * @param {URL} url\n * @param {string|string[]} protocols\n * @param {import('./websocket').WebSocket} ws\n * @param {(response: any, extensions: string[] | undefined) => void} onEstablish\n * @param {Partial<import('../../types/websocket').WebSocketInit>} options\n */\nfunction establishWebSocketConnection (url, protocols, client, ws, onEstablish, options) {\n  // 1. Let requestURL be a copy of url, with its scheme set to \"http\", if url\u2019s\n  //    scheme is \"ws\", and to \"https\" otherwise.\n  const requestURL = url\n\n  requestURL.protocol = url.protocol === 'ws:' ? 'http:' : 'https:'\n\n  // 2. Let request be a new request, whose URL is requestURL, client is client,\n  //    service-workers mode is \"none\", referrer is \"no-referrer\", mode is\n  //    \"websocket\", credentials mode is \"include\", cache mode is \"no-store\" ,\n  //    and redirect mode is \"error\".\n  const request = makeRequest({\n    urlList: [requestURL],\n    client,\n    serviceWorkers: 'none',\n    referrer: 'no-referrer',\n    mode: 'websocket',\n    credentials: 'include',\n    cache: 'no-store',\n    redirect: 'error'\n  })\n\n  // Note: undici extension, allow setting custom headers.\n  if (options.headers) {\n    const headersList = getHeadersList(new Headers(options.headers))\n\n    request.headersList = headersList\n  }\n\n  // 3. Append (`Upgrade`, `websocket`) to request\u2019s header list.\n  // 4. Append (`Connection`, `Upgrade`) to request\u2019s header list.\n  // Note: both of these are handled by undici currently.\n  // https://github.com/nodejs/undici/blob/68c269c4144c446f3f1220951338daef4a6b5ec4/lib/client.js#L1397\n\n  // 5. Let keyValue be a nonce consisting of a randomly selected\n  //    16-byte value that has been forgiving-base64-encoded and\n  //    isomorphic encoded.\n  const keyValue = crypto.randomBytes(16).toString('base64')\n\n  // 6. Append (`Sec-WebSocket-Key`, keyValue) to request\u2019s\n  //    header list.\n  request.headersList.append('sec-websocket-key', keyValue)\n\n  // 7. Append (`Sec-WebSocket-Version`, `13`) to request\u2019s\n  //    header list.\n  request.headersList.append('sec-websocket-version', '13')\n\n  // 8. For each protocol in protocols, combine\n  //    (`Sec-WebSocket-Protocol`, protocol) in request\u2019s header\n  //    list.\n  for (const protocol of protocols) {\n    request.headersList.append('sec-websocket-protocol', protocol)\n  }\n\n  // 9. Let permessageDeflate be a user-agent defined\n  //    \"permessage-deflate\" extension header value.\n  // https://github.com/mozilla/gecko-dev/blob/ce78234f5e653a5d3916813ff990f053510227bc/netwerk/protocol/websocket/WebSocketChannel.cpp#L2673\n  const permessageDeflate = 'permessage-deflate; client_max_window_bits'\n\n  // 10. Append (`Sec-WebSocket-Extensions`, permessageDeflate) to\n  //     request\u2019s header list.\n  request.headersList.append('sec-websocket-extensions', permessageDeflate)\n\n  // 11. Fetch request with useParallelQueue set to true, and\n  //     processResponse given response being these steps:\n  const controller = fetching({\n    request,\n    useParallelQueue: true,\n    dispatcher: options.dispatcher,\n    processResponse (response) {\n      // 1. If response is a network error or its status is not 101,\n      //    fail the WebSocket connection.\n      if (response.type === 'error' || response.status !== 101) {\n        failWebsocketConnection(ws, 'Received network error or non-101 status code.')\n        return\n      }\n\n      // 2. If protocols is not the empty list and extracting header\n      //    list values given `Sec-WebSocket-Protocol` and response\u2019s\n      //    header list results in null, failure, or the empty byte\n      //    sequence, then fail the WebSocket connection.\n      if (protocols.length !== 0 && !response.headersList.get('Sec-WebSocket-Protocol')) {\n        failWebsocketConnection(ws, 'Server did not respond with sent protocols.')\n        return\n      }\n\n      // 3. Follow the requirements stated step 2 to step 6, inclusive,\n      //    of the last set of steps in section 4.1 of The WebSocket\n      //    Protocol to validate response. This either results in fail\n      //    the WebSocket connection or the WebSocket connection is\n      //    established.\n\n      // 2. If the response lacks an |Upgrade| header field or the |Upgrade|\n      //    header field contains a value that is not an ASCII case-\n      //    insensitive match for the value \"websocket\", the client MUST\n      //    _Fail the WebSocket Connection_.\n      if (response.headersList.get('Upgrade')?.toLowerCase() !== 'websocket') {\n        failWebsocketConnection(ws, 'Server did not set Upgrade header to \"websocket\".')\n        return\n      }\n\n      // 3. If the response lacks a |Connection| header field or the\n      //    |Connection| header field doesn't contain a token that is an\n      //    ASCII case-insensitive match for the value \"Upgrade\", the client\n      //    MUST _Fail the WebSocket Connection_.\n      if (response.headersList.get('Connection')?.toLowerCase() !== 'upgrade') {\n        failWebsocketConnection(ws, 'Server did not set Connection header to \"upgrade\".')\n        return\n      }\n\n      // 4. If the response lacks a |Sec-WebSocket-Accept| header field or\n      //    the |Sec-WebSocket-Accept| contains a value other than the\n      //    base64-encoded SHA-1 of the concatenation of the |Sec-WebSocket-\n      //    Key| (as a string, not base64-decoded) with the string \"258EAFA5-\n      //    E914-47DA-95CA-C5AB0DC85B11\" but ignoring any leading and\n      //    trailing whitespace, the client MUST _Fail the WebSocket\n      //    Connection_.\n      const secWSAccept = response.headersList.get('Sec-WebSocket-Accept')\n      const digest = crypto.createHash('sha1').update(keyValue + uid).digest('base64')\n      if (secWSAccept !== digest) {\n        failWebsocketConnection(ws, 'Incorrect hash received in Sec-WebSocket-Accept header.')\n        return\n      }\n\n      // 5. If the response includes a |Sec-WebSocket-Extensions| header\n      //    field and this header field indicates the use of an extension\n      //    that was not present in the client's handshake (the server has\n      //    indicated an extension not requested by the client), the client\n      //    MUST _Fail the WebSocket Connection_.  (The parsing of this\n      //    header field to determine which extensions are requested is\n      //    discussed in Section 9.1.)\n      const secExtension = response.headersList.get('Sec-WebSocket-Extensions')\n      let extensions\n\n      if (secExtension !== null) {\n        extensions = parseExtensions(secExtension)\n\n        if (!extensions.has('permessage-deflate')) {\n          failWebsocketConnection(ws, 'Sec-WebSocket-Extensions header does not match.')\n          return\n        }\n      }\n\n      // 6. If the response includes a |Sec-WebSocket-Protocol| header field\n      //    and this header field indicates the use of a subprotocol that was\n      //    not present in the client's handshake (the server has indicated a\n      //    subprotocol not requested by the client), the client MUST _Fail\n      //    the WebSocket Connection_.\n      const secProtocol = response.headersList.get('Sec-WebSocket-Protocol')\n\n      if (secProtocol !== null) {\n        const requestProtocols = getDecodeSplit('sec-websocket-protocol', request.headersList)\n\n        // The client can request that the server use a specific subprotocol by\n        // including the |Sec-WebSocket-Protocol| field in its handshake.  If it\n        // is specified, the server needs to include the same field and one of\n        // the selected subprotocol values in its response for the connection to\n        // be established.\n        if (!requestProtocols.includes(secProtocol)) {\n          failWebsocketConnection(ws, 'Protocol was not set in the opening handshake.')\n          return\n        }\n      }\n\n      response.socket.on('data', onSocketData)\n      response.socket.on('close', onSocketClose)\n      response.socket.on('error', onSocketError)\n\n      if (channels.open.hasSubscribers) {\n        channels.open.publish({\n          address: response.socket.address(),\n          protocol: secProtocol,\n          extensions: secExtension\n        })\n      }\n\n      onEstablish(response, extensions)\n    }\n  })\n\n  return controller\n}\n\nfunction closeWebSocketConnection (ws, code, reason, reasonByteLength) {\n  if (isClosing(ws) || isClosed(ws)) {\n    // If this's ready state is CLOSING (2) or CLOSED (3)\n    // Do nothing.\n  } else if (!isEstablished(ws)) {\n    // If the WebSocket connection is not yet established\n    // Fail the WebSocket connection and set this's ready state\n    // to CLOSING (2).\n    failWebsocketConnection(ws, 'Connection was closed before it was established.')\n    ws[kReadyState] = states.CLOSING\n  } else if (ws[kSentClose] === sentCloseFrameState.NOT_SENT) {\n    // If the WebSocket closing handshake has not yet been started\n    // Start the WebSocket closing handshake and set this's ready\n    // state to CLOSING (2).\n    // - If neither code nor reason is present, the WebSocket Close\n    //   message must not have a body.\n    // - If code is present, then the status code to use in the\n    //   WebSocket Close message must be the integer given by code.\n    // - If reason is also present, then reasonBytes must be\n    //   provided in the Close message after the status code.\n\n    ws[kSentClose] = sentCloseFrameState.PROCESSING\n\n    const frame = new WebsocketFrameSend()\n\n    // If neither code nor reason is present, the WebSocket Close\n    // message must not have a body.\n\n    // If code is present, then the status code to use in the\n    // WebSocket Close message must be the integer given by code.\n    if (code !== undefined && reason === undefined) {\n      frame.frameData = Buffer.allocUnsafe(2)\n      frame.frameData.writeUInt16BE(code, 0)\n    } else if (code !== undefined && reason !== undefined) {\n      // If reason is also present, then reasonBytes must be\n      // provided in the Close message after the status code.\n      frame.frameData = Buffer.allocUnsafe(2 + reasonByteLength)\n      frame.frameData.writeUInt16BE(code, 0)\n      // the body MAY contain UTF-8-encoded data with value /reason/\n      frame.frameData.write(reason, 2, 'utf-8')\n    } else {\n      frame.frameData = emptyBuffer\n    }\n\n    /** @type {import('stream').Duplex} */\n    const socket = ws[kResponse].socket\n\n    socket.write(frame.createFrame(opcodes.CLOSE))\n\n    ws[kSentClose] = sentCloseFrameState.SENT\n\n    // Upon either sending or receiving a Close control frame, it is said\n    // that _The WebSocket Closing Handshake is Started_ and that the\n    // WebSocket connection is in the CLOSING state.\n    ws[kReadyState] = states.CLOSING\n  } else {\n    // Otherwise\n    // Set this's ready state to CLOSING (2).\n    ws[kReadyState] = states.CLOSING\n  }\n}\n\n/**\n * @param {Buffer} chunk\n */\nfunction onSocketData (chunk) {\n  if (!this.ws[kByteParser].write(chunk)) {\n    this.pause()\n  }\n}\n\n/**\n * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol\n * @see https://datatracker.ietf.org/doc/html/rfc6455#section-7.1.4\n */\nfunction onSocketClose () {\n  const { ws } = this\n  const { [kResponse]: response } = ws\n\n  response.socket.off('data', onSocketData)\n  response.socket.off('close', onSocketClose)\n  response.socket.off('error', onSocketError)\n\n  // If the TCP connection was closed after the\n  // WebSocket closing handshake was completed, the WebSocket connection\n  // is said to have been closed _cleanly_.\n  const wasClean = ws[kSentClose] === sentCloseFrameState.SENT && ws[kReceivedClose]\n\n  let code = 1005\n  let reason = ''\n\n  const result = ws[kByteParser].closingInfo\n\n  if (result && !result.error) {\n    code = result.code ?? 1005\n    reason = result.reason\n  } else if (!ws[kReceivedClose]) {\n    // If _The WebSocket\n    // Connection is Closed_ and no Close control frame was received by the\n    // endpoint (such as could occur if the underlying transport connection\n    // is lost), _The WebSocket Connection Close Code_ is considered to be\n    // 1006.\n    code = 1006\n  }\n\n  // 1. Change the ready state to CLOSED (3).\n  ws[kReadyState] = states.CLOSED\n\n  // 2. If the user agent was required to fail the WebSocket\n  //    connection, or if the WebSocket connection was closed\n  //    after being flagged as full, fire an event named error\n  //    at the WebSocket object.\n  // TODO\n\n  // 3. Fire an event named close at the WebSocket object,\n  //    using CloseEvent, with the wasClean attribute\n  //    initialized to true if the connection closed cleanly\n  //    and false otherwise, the code attribute initialized to\n  //    the WebSocket connection close code, and the reason\n  //    attribute initialized to the result of applying UTF-8\n  //    decode without BOM to the WebSocket connection close\n  //    reason.\n  // TODO: process.nextTick\n  fireEvent('close', ws, (type, init) => new CloseEvent(type, init), {\n    wasClean, code, reason\n  })\n\n  if (channels.close.hasSubscribers) {\n    channels.close.publish({\n      websocket: ws,\n      code,\n      reason\n    })\n  }\n}\n\nfunction onSocketError (error) {\n  const { ws } = this\n\n  ws[kReadyState] = states.CLOSING\n\n  if (channels.socketError.hasSubscribers) {\n    channels.socketError.publish(error)\n  }\n\n  this.destroy()\n}\n\nmodule.exports = {\n  establishWebSocketConnection,\n  closeWebSocketConnection\n}\n", "'use strict'\n\nconst { createInflateRaw, Z_DEFAULT_WINDOWBITS } = require('node:zlib')\nconst { isValidClientWindowBits } = require('./util')\n\nconst tail = Buffer.from([0x00, 0x00, 0xff, 0xff])\nconst kBuffer = Symbol('kBuffer')\nconst kLength = Symbol('kLength')\n\nclass PerMessageDeflate {\n  /** @type {import('node:zlib').InflateRaw} */\n  #inflate\n\n  #options = {}\n\n  constructor (extensions) {\n    this.#options.serverNoContextTakeover = extensions.has('server_no_context_takeover')\n    this.#options.serverMaxWindowBits = extensions.get('server_max_window_bits')\n  }\n\n  decompress (chunk, fin, callback) {\n    // An endpoint uses the following algorithm to decompress a message.\n    // 1.  Append 4 octets of 0x00 0x00 0xff 0xff to the tail end of the\n    //     payload of the message.\n    // 2.  Decompress the resulting data using DEFLATE.\n\n    if (!this.#inflate) {\n      let windowBits = Z_DEFAULT_WINDOWBITS\n\n      if (this.#options.serverMaxWindowBits) { // empty values default to Z_DEFAULT_WINDOWBITS\n        if (!isValidClientWindowBits(this.#options.serverMaxWindowBits)) {\n          callback(new Error('Invalid server_max_window_bits'))\n          return\n        }\n\n        windowBits = Number.parseInt(this.#options.serverMaxWindowBits)\n      }\n\n      this.#inflate = createInflateRaw({ windowBits })\n      this.#inflate[kBuffer] = []\n      this.#inflate[kLength] = 0\n\n      this.#inflate.on('data', (data) => {\n        this.#inflate[kBuffer].push(data)\n        this.#inflate[kLength] += data.length\n      })\n\n      this.#inflate.on('error', (err) => {\n        this.#inflate = null\n        callback(err)\n      })\n    }\n\n    this.#inflate.write(chunk)\n    if (fin) {\n      this.#inflate.write(tail)\n    }\n\n    this.#inflate.flush(() => {\n      const full = Buffer.concat(this.#inflate[kBuffer], this.#inflate[kLength])\n\n      this.#inflate[kBuffer].length = 0\n      this.#inflate[kLength] = 0\n\n      callback(null, full)\n    })\n  }\n}\n\nmodule.exports = { PerMessageDeflate }\n", "'use strict'\n\nconst { Writable } = require('node:stream')\nconst assert = require('node:assert')\nconst { parserStates, opcodes, states, emptyBuffer, sentCloseFrameState } = require('./constants')\nconst { kReadyState, kSentClose, kResponse, kReceivedClose } = require('./symbols')\nconst { channels } = require('../../core/diagnostics')\nconst {\n  isValidStatusCode,\n  isValidOpcode,\n  failWebsocketConnection,\n  websocketMessageReceived,\n  utf8Decode,\n  isControlFrame,\n  isTextBinaryFrame,\n  isContinuationFrame\n} = require('./util')\nconst { WebsocketFrameSend } = require('./frame')\nconst { closeWebSocketConnection } = require('./connection')\nconst { PerMessageDeflate } = require('./permessage-deflate')\n\n// This code was influenced by ws released under the MIT license.\n// Copyright (c) 2011 Einar Otto Stangvik <einaros@gmail.com>\n// Copyright (c) 2013 Arnout Kazemier and contributors\n// Copyright (c) 2016 Luigi Pinca and contributors\n\nclass ByteParser extends Writable {\n  #buffers = []\n  #byteOffset = 0\n  #loop = false\n\n  #state = parserStates.INFO\n\n  #info = {}\n  #fragments = []\n\n  /** @type {Map<string, PerMessageDeflate>} */\n  #extensions\n\n  constructor (ws, extensions) {\n    super()\n\n    this.ws = ws\n    this.#extensions = extensions == null ? new Map() : extensions\n\n    if (this.#extensions.has('permessage-deflate')) {\n      this.#extensions.set('permessage-deflate', new PerMessageDeflate(extensions))\n    }\n  }\n\n  /**\n   * @param {Buffer} chunk\n   * @param {() => void} callback\n   */\n  _write (chunk, _, callback) {\n    this.#buffers.push(chunk)\n    this.#byteOffset += chunk.length\n    this.#loop = true\n\n    this.run(callback)\n  }\n\n  /**\n   * Runs whenever a new chunk is received.\n   * Callback is called whenever there are no more chunks buffering,\n   * or not enough bytes are buffered to parse.\n   */\n  run (callback) {\n    while (this.#loop) {\n      if (this.#state === parserStates.INFO) {\n        // If there aren't enough bytes to parse the payload length, etc.\n        if (this.#byteOffset < 2) {\n          return callback()\n        }\n\n        const buffer = this.consume(2)\n        const fin = (buffer[0] & 0x80) !== 0\n        const opcode = buffer[0] & 0x0F\n        const masked = (buffer[1] & 0x80) === 0x80\n\n        const fragmented = !fin && opcode !== opcodes.CONTINUATION\n        const payloadLength = buffer[1] & 0x7F\n\n        const rsv1 = buffer[0] & 0x40\n        const rsv2 = buffer[0] & 0x20\n        const rsv3 = buffer[0] & 0x10\n\n        if (!isValidOpcode(opcode)) {\n          failWebsocketConnection(this.ws, 'Invalid opcode received')\n          return callback()\n        }\n\n        if (masked) {\n          failWebsocketConnection(this.ws, 'Frame cannot be masked')\n          return callback()\n        }\n\n        // MUST be 0 unless an extension is negotiated that defines meanings\n        // for non-zero values.  If a nonzero value is received and none of\n        // the negotiated extensions defines the meaning of such a nonzero\n        // value, the receiving endpoint MUST _Fail the WebSocket\n        // Connection_.\n        // This document allocates the RSV1 bit of the WebSocket header for\n        // PMCEs and calls the bit the \"Per-Message Compressed\" bit.  On a\n        // WebSocket connection where a PMCE is in use, this bit indicates\n        // whether a message is compressed or not.\n        if (rsv1 !== 0 && !this.#extensions.has('permessage-deflate')) {\n          failWebsocketConnection(this.ws, 'Expected RSV1 to be clear.')\n          return\n        }\n\n        if (rsv2 !== 0 || rsv3 !== 0) {\n          failWebsocketConnection(this.ws, 'RSV1, RSV2, RSV3 must be clear')\n          return\n        }\n\n        if (fragmented && !isTextBinaryFrame(opcode)) {\n          // Only text and binary frames can be fragmented\n          failWebsocketConnection(this.ws, 'Invalid frame type was fragmented.')\n          return\n        }\n\n        // If we are already parsing a text/binary frame and do not receive either\n        // a continuation frame or close frame, fail the connection.\n        if (isTextBinaryFrame(opcode) && this.#fragments.length > 0) {\n          failWebsocketConnection(this.ws, 'Expected continuation frame')\n          return\n        }\n\n        if (this.#info.fragmented && fragmented) {\n          // A fragmented frame can't be fragmented itself\n          failWebsocketConnection(this.ws, 'Fragmented frame exceeded 125 bytes.')\n          return\n        }\n\n        // \"All control frames MUST have a payload length of 125 bytes or less\n        // and MUST NOT be fragmented.\"\n        if ((payloadLength > 125 || fragmented) && isControlFrame(opcode)) {\n          failWebsocketConnection(this.ws, 'Control frame either too large or fragmented')\n          return\n        }\n\n        if (isContinuationFrame(opcode) && this.#fragments.length === 0 && !this.#info.compressed) {\n          failWebsocketConnection(this.ws, 'Unexpected continuation frame')\n          return\n        }\n\n        if (payloadLength <= 125) {\n          this.#info.payloadLength = payloadLength\n          this.#state = parserStates.READ_DATA\n        } else if (payloadLength === 126) {\n          this.#state = parserStates.PAYLOADLENGTH_16\n        } else if (payloadLength === 127) {\n          this.#state = parserStates.PAYLOADLENGTH_64\n        }\n\n        if (isTextBinaryFrame(opcode)) {\n          this.#info.binaryType = opcode\n          this.#info.compressed = rsv1 !== 0\n        }\n\n        this.#info.opcode = opcode\n        this.#info.masked = masked\n        this.#info.fin = fin\n        this.#info.fragmented = fragmented\n      } else if (this.#state === parserStates.PAYLOADLENGTH_16) {\n        if (this.#byteOffset < 2) {\n          return callback()\n        }\n\n        const buffer = this.consume(2)\n\n        this.#info.payloadLength = buffer.readUInt16BE(0)\n        this.#state = parserStates.READ_DATA\n      } else if (this.#state === parserStates.PAYLOADLENGTH_64) {\n        if (this.#byteOffset < 8) {\n          return callback()\n        }\n\n        const buffer = this.consume(8)\n        const upper = buffer.readUInt32BE(0)\n\n        // 2^31 is the maximum bytes an arraybuffer can contain\n        // on 32-bit systems. Although, on 64-bit systems, this is\n        // 2^53-1 bytes.\n        // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Invalid_array_length\n        // https://source.chromium.org/chromium/chromium/src/+/main:v8/src/common/globals.h;drc=1946212ac0100668f14eb9e2843bdd846e510a1e;bpv=1;bpt=1;l=1275\n        // https://source.chromium.org/chromium/chromium/src/+/main:v8/src/objects/js-array-buffer.h;l=34;drc=1946212ac0100668f14eb9e2843bdd846e510a1e\n        if (upper > 2 ** 31 - 1) {\n          failWebsocketConnection(this.ws, 'Received payload length > 2^31 bytes.')\n          return\n        }\n\n        const lower = buffer.readUInt32BE(4)\n\n        this.#info.payloadLength = (upper << 8) + lower\n        this.#state = parserStates.READ_DATA\n      } else if (this.#state === parserStates.READ_DATA) {\n        if (this.#byteOffset < this.#info.payloadLength) {\n          return callback()\n        }\n\n        const body = this.consume(this.#info.payloadLength)\n\n        if (isControlFrame(this.#info.opcode)) {\n          this.#loop = this.parseControlFrame(body)\n          this.#state = parserStates.INFO\n        } else {\n          if (!this.#info.compressed) {\n            this.#fragments.push(body)\n\n            // If the frame is not fragmented, a message has been received.\n            // If the frame is fragmented, it will terminate with a fin bit set\n            // and an opcode of 0 (continuation), therefore we handle that when\n            // parsing continuation frames, not here.\n            if (!this.#info.fragmented && this.#info.fin) {\n              const fullMessage = Buffer.concat(this.#fragments)\n              websocketMessageReceived(this.ws, this.#info.binaryType, fullMessage)\n              this.#fragments.length = 0\n            }\n\n            this.#state = parserStates.INFO\n          } else {\n            this.#extensions.get('permessage-deflate').decompress(body, this.#info.fin, (error, data) => {\n              if (error) {\n                closeWebSocketConnection(this.ws, 1007, error.message, error.message.length)\n                return\n              }\n\n              this.#fragments.push(data)\n\n              if (!this.#info.fin) {\n                this.#state = parserStates.INFO\n                this.#loop = true\n                this.run(callback)\n                return\n              }\n\n              websocketMessageReceived(this.ws, this.#info.binaryType, Buffer.concat(this.#fragments))\n\n              this.#loop = true\n              this.#state = parserStates.INFO\n              this.#fragments.length = 0\n              this.run(callback)\n            })\n\n            this.#loop = false\n            break\n          }\n        }\n      }\n    }\n  }\n\n  /**\n   * Take n bytes from the buffered Buffers\n   * @param {number} n\n   * @returns {Buffer}\n   */\n  consume (n) {\n    if (n > this.#byteOffset) {\n      throw new Error('Called consume() before buffers satiated.')\n    } else if (n === 0) {\n      return emptyBuffer\n    }\n\n    if (this.#buffers[0].length === n) {\n      this.#byteOffset -= this.#buffers[0].length\n      return this.#buffers.shift()\n    }\n\n    const buffer = Buffer.allocUnsafe(n)\n    let offset = 0\n\n    while (offset !== n) {\n      const next = this.#buffers[0]\n      const { length } = next\n\n      if (length + offset === n) {\n        buffer.set(this.#buffers.shift(), offset)\n        break\n      } else if (length + offset > n) {\n        buffer.set(next.subarray(0, n - offset), offset)\n        this.#buffers[0] = next.subarray(n - offset)\n        break\n      } else {\n        buffer.set(this.#buffers.shift(), offset)\n        offset += next.length\n      }\n    }\n\n    this.#byteOffset -= n\n\n    return buffer\n  }\n\n  parseCloseBody (data) {\n    assert(data.length !== 1)\n\n    // https://datatracker.ietf.org/doc/html/rfc6455#section-7.1.5\n    /** @type {number|undefined} */\n    let code\n\n    if (data.length >= 2) {\n      // _The WebSocket Connection Close Code_ is\n      // defined as the status code (Section 7.4) contained in the first Close\n      // control frame received by the application\n      code = data.readUInt16BE(0)\n    }\n\n    if (code !== undefined && !isValidStatusCode(code)) {\n      return { code: 1002, reason: 'Invalid status code', error: true }\n    }\n\n    // https://datatracker.ietf.org/doc/html/rfc6455#section-7.1.6\n    /** @type {Buffer} */\n    let reason = data.subarray(2)\n\n    // Remove BOM\n    if (reason[0] === 0xEF && reason[1] === 0xBB && reason[2] === 0xBF) {\n      reason = reason.subarray(3)\n    }\n\n    try {\n      reason = utf8Decode(reason)\n    } catch {\n      return { code: 1007, reason: 'Invalid UTF-8', error: true }\n    }\n\n    return { code, reason, error: false }\n  }\n\n  /**\n   * Parses control frames.\n   * @param {Buffer} body\n   */\n  parseControlFrame (body) {\n    const { opcode, payloadLength } = this.#info\n\n    if (opcode === opcodes.CLOSE) {\n      if (payloadLength === 1) {\n        failWebsocketConnection(this.ws, 'Received close frame with a 1-byte body.')\n        return false\n      }\n\n      this.#info.closeInfo = this.parseCloseBody(body)\n\n      if (this.#info.closeInfo.error) {\n        const { code, reason } = this.#info.closeInfo\n\n        closeWebSocketConnection(this.ws, code, reason, reason.length)\n        failWebsocketConnection(this.ws, reason)\n        return false\n      }\n\n      if (this.ws[kSentClose] !== sentCloseFrameState.SENT) {\n        // If an endpoint receives a Close frame and did not previously send a\n        // Close frame, the endpoint MUST send a Close frame in response.  (When\n        // sending a Close frame in response, the endpoint typically echos the\n        // status code it received.)\n        let body = emptyBuffer\n        if (this.#info.closeInfo.code) {\n          body = Buffer.allocUnsafe(2)\n          body.writeUInt16BE(this.#info.closeInfo.code, 0)\n        }\n        const closeFrame = new WebsocketFrameSend(body)\n\n        this.ws[kResponse].socket.write(\n          closeFrame.createFrame(opcodes.CLOSE),\n          (err) => {\n            if (!err) {\n              this.ws[kSentClose] = sentCloseFrameState.SENT\n            }\n          }\n        )\n      }\n\n      // Upon either sending or receiving a Close control frame, it is said\n      // that _The WebSocket Closing Handshake is Started_ and that the\n      // WebSocket connection is in the CLOSING state.\n      this.ws[kReadyState] = states.CLOSING\n      this.ws[kReceivedClose] = true\n\n      return false\n    } else if (opcode === opcodes.PING) {\n      // Upon receipt of a Ping frame, an endpoint MUST send a Pong frame in\n      // response, unless it already received a Close frame.\n      // A Pong frame sent in response to a Ping frame must have identical\n      // \"Application data\"\n\n      if (!this.ws[kReceivedClose]) {\n        const frame = new WebsocketFrameSend(body)\n\n        this.ws[kResponse].socket.write(frame.createFrame(opcodes.PONG))\n\n        if (channels.ping.hasSubscribers) {\n          channels.ping.publish({\n            payload: body\n          })\n        }\n      }\n    } else if (opcode === opcodes.PONG) {\n      // A Pong frame MAY be sent unsolicited.  This serves as a\n      // unidirectional heartbeat.  A response to an unsolicited Pong frame is\n      // not expected.\n\n      if (channels.pong.hasSubscribers) {\n        channels.pong.publish({\n          payload: body\n        })\n      }\n    }\n\n    return true\n  }\n\n  get closingInfo () {\n    return this.#info.closeInfo\n  }\n}\n\nmodule.exports = {\n  ByteParser\n}\n", "'use strict'\n\nconst { WebsocketFrameSend } = require('./frame')\nconst { opcodes, sendHints } = require('./constants')\nconst FixedQueue = require('../../dispatcher/fixed-queue')\n\n/** @type {typeof Uint8Array} */\nconst FastBuffer = Buffer[Symbol.species]\n\n/**\n * @typedef {object} SendQueueNode\n * @property {Promise<void> | null} promise\n * @property {((...args: any[]) => any)} callback\n * @property {Buffer | null} frame\n */\n\nclass SendQueue {\n  /**\n   * @type {FixedQueue}\n   */\n  #queue = new FixedQueue()\n\n  /**\n   * @type {boolean}\n   */\n  #running = false\n\n  /** @type {import('node:net').Socket} */\n  #socket\n\n  constructor (socket) {\n    this.#socket = socket\n  }\n\n  add (item, cb, hint) {\n    if (hint !== sendHints.blob) {\n      const frame = createFrame(item, hint)\n      if (!this.#running) {\n        // fast-path\n        this.#socket.write(frame, cb)\n      } else {\n        /** @type {SendQueueNode} */\n        const node = {\n          promise: null,\n          callback: cb,\n          frame\n        }\n        this.#queue.push(node)\n      }\n      return\n    }\n\n    /** @type {SendQueueNode} */\n    const node = {\n      promise: item.arrayBuffer().then((ab) => {\n        node.promise = null\n        node.frame = createFrame(ab, hint)\n      }),\n      callback: cb,\n      frame: null\n    }\n\n    this.#queue.push(node)\n\n    if (!this.#running) {\n      this.#run()\n    }\n  }\n\n  async #run () {\n    this.#running = true\n    const queue = this.#queue\n    while (!queue.isEmpty()) {\n      const node = queue.shift()\n      // wait pending promise\n      if (node.promise !== null) {\n        await node.promise\n      }\n      // write\n      this.#socket.write(node.frame, node.callback)\n      // cleanup\n      node.callback = node.frame = null\n    }\n    this.#running = false\n  }\n}\n\nfunction createFrame (data, hint) {\n  return new WebsocketFrameSend(toBuffer(data, hint)).createFrame(hint === sendHints.string ? opcodes.TEXT : opcodes.BINARY)\n}\n\nfunction toBuffer (data, hint) {\n  switch (hint) {\n    case sendHints.string:\n      return Buffer.from(data)\n    case sendHints.arrayBuffer:\n    case sendHints.blob:\n      return new FastBuffer(data)\n    case sendHints.typedArray:\n      return new FastBuffer(data.buffer, data.byteOffset, data.byteLength)\n  }\n}\n\nmodule.exports = { SendQueue }\n", "'use strict'\n\nconst { webidl } = require('../fetch/webidl')\nconst { URLSerializer } = require('../fetch/data-url')\nconst { environmentSettingsObject } = require('../fetch/util')\nconst { staticPropertyDescriptors, states, sentCloseFrameState, sendHints } = require('./constants')\nconst {\n  kWebSocketURL,\n  kReadyState,\n  kController,\n  kBinaryType,\n  kResponse,\n  kSentClose,\n  kByteParser\n} = require('./symbols')\nconst {\n  isConnecting,\n  isEstablished,\n  isClosing,\n  isValidSubprotocol,\n  fireEvent\n} = require('./util')\nconst { establishWebSocketConnection, closeWebSocketConnection } = require('./connection')\nconst { ByteParser } = require('./receiver')\nconst { kEnumerableProperty, isBlobLike } = require('../../core/util')\nconst { getGlobalDispatcher } = require('../../global')\nconst { types } = require('node:util')\nconst { ErrorEvent, CloseEvent } = require('./events')\nconst { SendQueue } = require('./sender')\n\nlet experimentalWarned = false\n\n// https://websockets.spec.whatwg.org/#interface-definition\nclass WebSocket extends EventTarget {\n  #events = {\n    open: null,\n    error: null,\n    close: null,\n    message: null\n  }\n\n  #bufferedAmount = 0\n  #protocol = ''\n  #extensions = ''\n\n  /** @type {SendQueue} */\n  #sendQueue\n\n  /**\n   * @param {string} url\n   * @param {string|string[]} protocols\n   */\n  constructor (url, protocols = []) {\n    super()\n\n    const prefix = 'WebSocket constructor'\n    webidl.argumentLengthCheck(arguments, 1, prefix)\n\n    if (!experimentalWarned) {\n      experimentalWarned = true\n      process.emitWarning('WebSockets are experimental, expect them to change at any time.', {\n        code: 'UNDICI-WS'\n      })\n    }\n\n    const options = webidl.converters['DOMString or sequence<DOMString> or WebSocketInit'](protocols, prefix, 'options')\n\n    url = webidl.converters.USVString(url, prefix, 'url')\n    protocols = options.protocols\n\n    // 1. Let baseURL be this's relevant settings object's API base URL.\n    const baseURL = environmentSettingsObject.settingsObject.baseUrl\n\n    // 1. Let urlRecord be the result of applying the URL parser to url with baseURL.\n    let urlRecord\n\n    try {\n      urlRecord = new URL(url, baseURL)\n    } catch (e) {\n      // 3. If urlRecord is failure, then throw a \"SyntaxError\" DOMException.\n      throw new DOMException(e, 'SyntaxError')\n    }\n\n    // 4. If urlRecord\u2019s scheme is \"http\", then set urlRecord\u2019s scheme to \"ws\".\n    if (urlRecord.protocol === 'http:') {\n      urlRecord.protocol = 'ws:'\n    } else if (urlRecord.protocol === 'https:') {\n      // 5. Otherwise, if urlRecord\u2019s scheme is \"https\", set urlRecord\u2019s scheme to \"wss\".\n      urlRecord.protocol = 'wss:'\n    }\n\n    // 6. If urlRecord\u2019s scheme is not \"ws\" or \"wss\", then throw a \"SyntaxError\" DOMException.\n    if (urlRecord.protocol !== 'ws:' && urlRecord.protocol !== 'wss:') {\n      throw new DOMException(\n        `Expected a ws: or wss: protocol, got ${urlRecord.protocol}`,\n        'SyntaxError'\n      )\n    }\n\n    // 7. If urlRecord\u2019s fragment is non-null, then throw a \"SyntaxError\"\n    //    DOMException.\n    if (urlRecord.hash || urlRecord.href.endsWith('#')) {\n      throw new DOMException('Got fragment', 'SyntaxError')\n    }\n\n    // 8. If protocols is a string, set protocols to a sequence consisting\n    //    of just that string.\n    if (typeof protocols === 'string') {\n      protocols = [protocols]\n    }\n\n    // 9. If any of the values in protocols occur more than once or otherwise\n    //    fail to match the requirements for elements that comprise the value\n    //    of `Sec-WebSocket-Protocol` fields as defined by The WebSocket\n    //    protocol, then throw a \"SyntaxError\" DOMException.\n    if (protocols.length !== new Set(protocols.map(p => p.toLowerCase())).size) {\n      throw new DOMException('Invalid Sec-WebSocket-Protocol value', 'SyntaxError')\n    }\n\n    if (protocols.length > 0 && !protocols.every(p => isValidSubprotocol(p))) {\n      throw new DOMException('Invalid Sec-WebSocket-Protocol value', 'SyntaxError')\n    }\n\n    // 10. Set this's url to urlRecord.\n    this[kWebSocketURL] = new URL(urlRecord.href)\n\n    // 11. Let client be this's relevant settings object.\n    const client = environmentSettingsObject.settingsObject\n\n    // 12. Run this step in parallel:\n\n    //    1. Establish a WebSocket connection given urlRecord, protocols,\n    //       and client.\n    this[kController] = establishWebSocketConnection(\n      urlRecord,\n      protocols,\n      client,\n      this,\n      (response, extensions) => this.#onConnectionEstablished(response, extensions),\n      options\n    )\n\n    // Each WebSocket object has an associated ready state, which is a\n    // number representing the state of the connection. Initially it must\n    // be CONNECTING (0).\n    this[kReadyState] = WebSocket.CONNECTING\n\n    this[kSentClose] = sentCloseFrameState.NOT_SENT\n\n    // The extensions attribute must initially return the empty string.\n\n    // The protocol attribute must initially return the empty string.\n\n    // Each WebSocket object has an associated binary type, which is a\n    // BinaryType. Initially it must be \"blob\".\n    this[kBinaryType] = 'blob'\n  }\n\n  /**\n   * @see https://websockets.spec.whatwg.org/#dom-websocket-close\n   * @param {number|undefined} code\n   * @param {string|undefined} reason\n   */\n  close (code = undefined, reason = undefined) {\n    webidl.brandCheck(this, WebSocket)\n\n    const prefix = 'WebSocket.close'\n\n    if (code !== undefined) {\n      code = webidl.converters['unsigned short'](code, prefix, 'code', { clamp: true })\n    }\n\n    if (reason !== undefined) {\n      reason = webidl.converters.USVString(reason, prefix, 'reason')\n    }\n\n    // 1. If code is present, but is neither an integer equal to 1000 nor an\n    //    integer in the range 3000 to 4999, inclusive, throw an\n    //    \"InvalidAccessError\" DOMException.\n    if (code !== undefined) {\n      if (code !== 1000 && (code < 3000 || code > 4999)) {\n        throw new DOMException('invalid code', 'InvalidAccessError')\n      }\n    }\n\n    let reasonByteLength = 0\n\n    // 2. If reason is present, then run these substeps:\n    if (reason !== undefined) {\n      // 1. Let reasonBytes be the result of encoding reason.\n      // 2. If reasonBytes is longer than 123 bytes, then throw a\n      //    \"SyntaxError\" DOMException.\n      reasonByteLength = Buffer.byteLength(reason)\n\n      if (reasonByteLength > 123) {\n        throw new DOMException(\n          `Reason must be less than 123 bytes; received ${reasonByteLength}`,\n          'SyntaxError'\n        )\n      }\n    }\n\n    // 3. Run the first matching steps from the following list:\n    closeWebSocketConnection(this, code, reason, reasonByteLength)\n  }\n\n  /**\n   * @see https://websockets.spec.whatwg.org/#dom-websocket-send\n   * @param {NodeJS.TypedArray|ArrayBuffer|Blob|string} data\n   */\n  send (data) {\n    webidl.brandCheck(this, WebSocket)\n\n    const prefix = 'WebSocket.send'\n    webidl.argumentLengthCheck(arguments, 1, prefix)\n\n    data = webidl.converters.WebSocketSendData(data, prefix, 'data')\n\n    // 1. If this's ready state is CONNECTING, then throw an\n    //    \"InvalidStateError\" DOMException.\n    if (isConnecting(this)) {\n      throw new DOMException('Sent before connected.', 'InvalidStateError')\n    }\n\n    // 2. Run the appropriate set of steps from the following list:\n    // https://datatracker.ietf.org/doc/html/rfc6455#section-6.1\n    // https://datatracker.ietf.org/doc/html/rfc6455#section-5.2\n\n    if (!isEstablished(this) || isClosing(this)) {\n      return\n    }\n\n    // If data is a string\n    if (typeof data === 'string') {\n      // If the WebSocket connection is established and the WebSocket\n      // closing handshake has not yet started, then the user agent\n      // must send a WebSocket Message comprised of the data argument\n      // using a text frame opcode; if the data cannot be sent, e.g.\n      // because it would need to be buffered but the buffer is full,\n      // the user agent must flag the WebSocket as full and then close\n      // the WebSocket connection. Any invocation of this method with a\n      // string argument that does not throw an exception must increase\n      // the bufferedAmount attribute by the number of bytes needed to\n      // express the argument as UTF-8.\n\n      const length = Buffer.byteLength(data)\n\n      this.#bufferedAmount += length\n      this.#sendQueue.add(data, () => {\n        this.#bufferedAmount -= length\n      }, sendHints.string)\n    } else if (types.isArrayBuffer(data)) {\n      // If the WebSocket connection is established, and the WebSocket\n      // closing handshake has not yet started, then the user agent must\n      // send a WebSocket Message comprised of data using a binary frame\n      // opcode; if the data cannot be sent, e.g. because it would need\n      // to be buffered but the buffer is full, the user agent must flag\n      // the WebSocket as full and then close the WebSocket connection.\n      // The data to be sent is the data stored in the buffer described\n      // by the ArrayBuffer object. Any invocation of this method with an\n      // ArrayBuffer argument that does not throw an exception must\n      // increase the bufferedAmount attribute by the length of the\n      // ArrayBuffer in bytes.\n\n      this.#bufferedAmount += data.byteLength\n      this.#sendQueue.add(data, () => {\n        this.#bufferedAmount -= data.byteLength\n      }, sendHints.arrayBuffer)\n    } else if (ArrayBuffer.isView(data)) {\n      // If the WebSocket connection is established, and the WebSocket\n      // closing handshake has not yet started, then the user agent must\n      // send a WebSocket Message comprised of data using a binary frame\n      // opcode; if the data cannot be sent, e.g. because it would need to\n      // be buffered but the buffer is full, the user agent must flag the\n      // WebSocket as full and then close the WebSocket connection. The\n      // data to be sent is the data stored in the section of the buffer\n      // described by the ArrayBuffer object that data references. Any\n      // invocation of this method with this kind of argument that does\n      // not throw an exception must increase the bufferedAmount attribute\n      // by the length of data\u2019s buffer in bytes.\n\n      this.#bufferedAmount += data.byteLength\n      this.#sendQueue.add(data, () => {\n        this.#bufferedAmount -= data.byteLength\n      }, sendHints.typedArray)\n    } else if (isBlobLike(data)) {\n      // If the WebSocket connection is established, and the WebSocket\n      // closing handshake has not yet started, then the user agent must\n      // send a WebSocket Message comprised of data using a binary frame\n      // opcode; if the data cannot be sent, e.g. because it would need to\n      // be buffered but the buffer is full, the user agent must flag the\n      // WebSocket as full and then close the WebSocket connection. The data\n      // to be sent is the raw data represented by the Blob object. Any\n      // invocation of this method with a Blob argument that does not throw\n      // an exception must increase the bufferedAmount attribute by the size\n      // of the Blob object\u2019s raw data, in bytes.\n\n      this.#bufferedAmount += data.size\n      this.#sendQueue.add(data, () => {\n        this.#bufferedAmount -= data.size\n      }, sendHints.blob)\n    }\n  }\n\n  get readyState () {\n    webidl.brandCheck(this, WebSocket)\n\n    // The readyState getter steps are to return this's ready state.\n    return this[kReadyState]\n  }\n\n  get bufferedAmount () {\n    webidl.brandCheck(this, WebSocket)\n\n    return this.#bufferedAmount\n  }\n\n  get url () {\n    webidl.brandCheck(this, WebSocket)\n\n    // The url getter steps are to return this's url, serialized.\n    return URLSerializer(this[kWebSocketURL])\n  }\n\n  get extensions () {\n    webidl.brandCheck(this, WebSocket)\n\n    return this.#extensions\n  }\n\n  get protocol () {\n    webidl.brandCheck(this, WebSocket)\n\n    return this.#protocol\n  }\n\n  get onopen () {\n    webidl.brandCheck(this, WebSocket)\n\n    return this.#events.open\n  }\n\n  set onopen (fn) {\n    webidl.brandCheck(this, WebSocket)\n\n    if (this.#events.open) {\n      this.removeEventListener('open', this.#events.open)\n    }\n\n    if (typeof fn === 'function') {\n      this.#events.open = fn\n      this.addEventListener('open', fn)\n    } else {\n      this.#events.open = null\n    }\n  }\n\n  get onerror () {\n    webidl.brandCheck(this, WebSocket)\n\n    return this.#events.error\n  }\n\n  set onerror (fn) {\n    webidl.brandCheck(this, WebSocket)\n\n    if (this.#events.error) {\n      this.removeEventListener('error', this.#events.error)\n    }\n\n    if (typeof fn === 'function') {\n      this.#events.error = fn\n      this.addEventListener('error', fn)\n    } else {\n      this.#events.error = null\n    }\n  }\n\n  get onclose () {\n    webidl.brandCheck(this, WebSocket)\n\n    return this.#events.close\n  }\n\n  set onclose (fn) {\n    webidl.brandCheck(this, WebSocket)\n\n    if (this.#events.close) {\n      this.removeEventListener('close', this.#events.close)\n    }\n\n    if (typeof fn === 'function') {\n      this.#events.close = fn\n      this.addEventListener('close', fn)\n    } else {\n      this.#events.close = null\n    }\n  }\n\n  get onmessage () {\n    webidl.brandCheck(this, WebSocket)\n\n    return this.#events.message\n  }\n\n  set onmessage (fn) {\n    webidl.brandCheck(this, WebSocket)\n\n    if (this.#events.message) {\n      this.removeEventListener('message', this.#events.message)\n    }\n\n    if (typeof fn === 'function') {\n      this.#events.message = fn\n      this.addEventListener('message', fn)\n    } else {\n      this.#events.message = null\n    }\n  }\n\n  get binaryType () {\n    webidl.brandCheck(this, WebSocket)\n\n    return this[kBinaryType]\n  }\n\n  set binaryType (type) {\n    webidl.brandCheck(this, WebSocket)\n\n    if (type !== 'blob' && type !== 'arraybuffer') {\n      this[kBinaryType] = 'blob'\n    } else {\n      this[kBinaryType] = type\n    }\n  }\n\n  /**\n   * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol\n   */\n  #onConnectionEstablished (response, parsedExtensions) {\n    // processResponse is called when the \"response\u2019s header list has been received and initialized.\"\n    // once this happens, the connection is open\n    this[kResponse] = response\n\n    const parser = new ByteParser(this, parsedExtensions)\n    parser.on('drain', onParserDrain)\n    parser.on('error', onParserError.bind(this))\n\n    response.socket.ws = this\n    this[kByteParser] = parser\n\n    this.#sendQueue = new SendQueue(response.socket)\n\n    // 1. Change the ready state to OPEN (1).\n    this[kReadyState] = states.OPEN\n\n    // 2. Change the extensions attribute\u2019s value to the extensions in use, if\n    //    it is not the null value.\n    // https://datatracker.ietf.org/doc/html/rfc6455#section-9.1\n    const extensions = response.headersList.get('sec-websocket-extensions')\n\n    if (extensions !== null) {\n      this.#extensions = extensions\n    }\n\n    // 3. Change the protocol attribute\u2019s value to the subprotocol in use, if\n    //    it is not the null value.\n    // https://datatracker.ietf.org/doc/html/rfc6455#section-1.9\n    const protocol = response.headersList.get('sec-websocket-protocol')\n\n    if (protocol !== null) {\n      this.#protocol = protocol\n    }\n\n    // 4. Fire an event named open at the WebSocket object.\n    fireEvent('open', this)\n  }\n}\n\n// https://websockets.spec.whatwg.org/#dom-websocket-connecting\nWebSocket.CONNECTING = WebSocket.prototype.CONNECTING = states.CONNECTING\n// https://websockets.spec.whatwg.org/#dom-websocket-open\nWebSocket.OPEN = WebSocket.prototype.OPEN = states.OPEN\n// https://websockets.spec.whatwg.org/#dom-websocket-closing\nWebSocket.CLOSING = WebSocket.prototype.CLOSING = states.CLOSING\n// https://websockets.spec.whatwg.org/#dom-websocket-closed\nWebSocket.CLOSED = WebSocket.prototype.CLOSED = states.CLOSED\n\nObject.defineProperties(WebSocket.prototype, {\n  CONNECTING: staticPropertyDescriptors,\n  OPEN: staticPropertyDescriptors,\n  CLOSING: staticPropertyDescriptors,\n  CLOSED: staticPropertyDescriptors,\n  url: kEnumerableProperty,\n  readyState: kEnumerableProperty,\n  bufferedAmount: kEnumerableProperty,\n  onopen: kEnumerableProperty,\n  onerror: kEnumerableProperty,\n  onclose: kEnumerableProperty,\n  close: kEnumerableProperty,\n  onmessage: kEnumerableProperty,\n  binaryType: kEnumerableProperty,\n  send: kEnumerableProperty,\n  extensions: kEnumerableProperty,\n  protocol: kEnumerableProperty,\n  [Symbol.toStringTag]: {\n    value: 'WebSocket',\n    writable: false,\n    enumerable: false,\n    configurable: true\n  }\n})\n\nObject.defineProperties(WebSocket, {\n  CONNECTING: staticPropertyDescriptors,\n  OPEN: staticPropertyDescriptors,\n  CLOSING: staticPropertyDescriptors,\n  CLOSED: staticPropertyDescriptors\n})\n\nwebidl.converters['sequence<DOMString>'] = webidl.sequenceConverter(\n  webidl.converters.DOMString\n)\n\nwebidl.converters['DOMString or sequence<DOMString>'] = function (V, prefix, argument) {\n  if (webidl.util.Type(V) === 'Object' && Symbol.iterator in V) {\n    return webidl.converters['sequence<DOMString>'](V)\n  }\n\n  return webidl.converters.DOMString(V, prefix, argument)\n}\n\n// This implements the proposal made in https://github.com/whatwg/websockets/issues/42\nwebidl.converters.WebSocketInit = webidl.dictionaryConverter([\n  {\n    key: 'protocols',\n    converter: webidl.converters['DOMString or sequence<DOMString>'],\n    defaultValue: () => new Array(0)\n  },\n  {\n    key: 'dispatcher',\n    converter: webidl.converters.any,\n    defaultValue: () => getGlobalDispatcher()\n  },\n  {\n    key: 'headers',\n    converter: webidl.nullableConverter(webidl.converters.HeadersInit)\n  }\n])\n\nwebidl.converters['DOMString or sequence<DOMString> or WebSocketInit'] = function (V) {\n  if (webidl.util.Type(V) === 'Object' && !(Symbol.iterator in V)) {\n    return webidl.converters.WebSocketInit(V)\n  }\n\n  return { protocols: webidl.converters['DOMString or sequence<DOMString>'](V) }\n}\n\nwebidl.converters.WebSocketSendData = function (V) {\n  if (webidl.util.Type(V) === 'Object') {\n    if (isBlobLike(V)) {\n      return webidl.converters.Blob(V, { strict: false })\n    }\n\n    if (ArrayBuffer.isView(V) || types.isArrayBuffer(V)) {\n      return webidl.converters.BufferSource(V)\n    }\n  }\n\n  return webidl.converters.USVString(V)\n}\n\nfunction onParserDrain () {\n  this.ws[kResponse].socket.resume()\n}\n\nfunction onParserError (err) {\n  let message\n  let code\n\n  if (err instanceof CloseEvent) {\n    message = err.reason\n    code = err.code\n  } else {\n    message = err.message\n  }\n\n  fireEvent('error', this, () => new ErrorEvent('error', { error: err, message }))\n\n  closeWebSocketConnection(this, code)\n}\n\nmodule.exports = {\n  WebSocket\n}\n", "'use strict'\n\n/**\n * Checks if the given value is a valid LastEventId.\n * @param {string} value\n * @returns {boolean}\n */\nfunction isValidLastEventId (value) {\n  // LastEventId should not contain U+0000 NULL\n  return value.indexOf('\\u0000') === -1\n}\n\n/**\n * Checks if the given value is a base 10 digit.\n * @param {string} value\n * @returns {boolean}\n */\nfunction isASCIINumber (value) {\n  if (value.length === 0) return false\n  for (let i = 0; i < value.length; i++) {\n    if (value.charCodeAt(i) < 0x30 || value.charCodeAt(i) > 0x39) return false\n  }\n  return true\n}\n\n// https://github.com/nodejs/undici/issues/2664\nfunction delay (ms) {\n  return new Promise((resolve) => {\n    setTimeout(resolve, ms).unref()\n  })\n}\n\nmodule.exports = {\n  isValidLastEventId,\n  isASCIINumber,\n  delay\n}\n", "'use strict'\nconst { Transform } = require('node:stream')\nconst { isASCIINumber, isValidLastEventId } = require('./util')\n\n/**\n * @type {number[]} BOM\n */\nconst BOM = [0xEF, 0xBB, 0xBF]\n/**\n * @type {10} LF\n */\nconst LF = 0x0A\n/**\n * @type {13} CR\n */\nconst CR = 0x0D\n/**\n * @type {58} COLON\n */\nconst COLON = 0x3A\n/**\n * @type {32} SPACE\n */\nconst SPACE = 0x20\n\n/**\n * @typedef {object} EventSourceStreamEvent\n * @type {object}\n * @property {string} [event] The event type.\n * @property {string} [data] The data of the message.\n * @property {string} [id] A unique ID for the event.\n * @property {string} [retry] The reconnection time, in milliseconds.\n */\n\n/**\n * @typedef eventSourceSettings\n * @type {object}\n * @property {string} lastEventId The last event ID received from the server.\n * @property {string} origin The origin of the event source.\n * @property {number} reconnectionTime The reconnection time, in milliseconds.\n */\n\nclass EventSourceStream extends Transform {\n  /**\n   * @type {eventSourceSettings}\n   */\n  state = null\n\n  /**\n   * Leading byte-order-mark check.\n   * @type {boolean}\n   */\n  checkBOM = true\n\n  /**\n   * @type {boolean}\n   */\n  crlfCheck = false\n\n  /**\n   * @type {boolean}\n   */\n  eventEndCheck = false\n\n  /**\n   * @type {Buffer}\n   */\n  buffer = null\n\n  pos = 0\n\n  event = {\n    data: undefined,\n    event: undefined,\n    id: undefined,\n    retry: undefined\n  }\n\n  /**\n   * @param {object} options\n   * @param {eventSourceSettings} options.eventSourceSettings\n   * @param {Function} [options.push]\n   */\n  constructor (options = {}) {\n    // Enable object mode as EventSourceStream emits objects of shape\n    // EventSourceStreamEvent\n    options.readableObjectMode = true\n\n    super(options)\n\n    this.state = options.eventSourceSettings || {}\n    if (options.push) {\n      this.push = options.push\n    }\n  }\n\n  /**\n   * @param {Buffer} chunk\n   * @param {string} _encoding\n   * @param {Function} callback\n   * @returns {void}\n   */\n  _transform (chunk, _encoding, callback) {\n    if (chunk.length === 0) {\n      callback()\n      return\n    }\n\n    // Cache the chunk in the buffer, as the data might not be complete while\n    // processing it\n    // TODO: Investigate if there is a more performant way to handle\n    // incoming chunks\n    // see: https://github.com/nodejs/undici/issues/2630\n    if (this.buffer) {\n      this.buffer = Buffer.concat([this.buffer, chunk])\n    } else {\n      this.buffer = chunk\n    }\n\n    // Strip leading byte-order-mark if we opened the stream and started\n    // the processing of the incoming data\n    if (this.checkBOM) {\n      switch (this.buffer.length) {\n        case 1:\n          // Check if the first byte is the same as the first byte of the BOM\n          if (this.buffer[0] === BOM[0]) {\n            // If it is, we need to wait for more data\n            callback()\n            return\n          }\n          // Set the checkBOM flag to false as we don't need to check for the\n          // BOM anymore\n          this.checkBOM = false\n\n          // The buffer only contains one byte so we need to wait for more data\n          callback()\n          return\n        case 2:\n          // Check if the first two bytes are the same as the first two bytes\n          // of the BOM\n          if (\n            this.buffer[0] === BOM[0] &&\n            this.buffer[1] === BOM[1]\n          ) {\n            // If it is, we need to wait for more data, because the third byte\n            // is needed to determine if it is the BOM or not\n            callback()\n            return\n          }\n\n          // Set the checkBOM flag to false as we don't need to check for the\n          // BOM anymore\n          this.checkBOM = false\n          break\n        case 3:\n          // Check if the first three bytes are the same as the first three\n          // bytes of the BOM\n          if (\n            this.buffer[0] === BOM[0] &&\n            this.buffer[1] === BOM[1] &&\n            this.buffer[2] === BOM[2]\n          ) {\n            // If it is, we can drop the buffered data, as it is only the BOM\n            this.buffer = Buffer.alloc(0)\n            // Set the checkBOM flag to false as we don't need to check for the\n            // BOM anymore\n            this.checkBOM = false\n\n            // Await more data\n            callback()\n            return\n          }\n          // If it is not the BOM, we can start processing the data\n          this.checkBOM = false\n          break\n        default:\n          // The buffer is longer than 3 bytes, so we can drop the BOM if it is\n          // present\n          if (\n            this.buffer[0] === BOM[0] &&\n            this.buffer[1] === BOM[1] &&\n            this.buffer[2] === BOM[2]\n          ) {\n            // Remove the BOM from the buffer\n            this.buffer = this.buffer.subarray(3)\n          }\n\n          // Set the checkBOM flag to false as we don't need to check for the\n          this.checkBOM = false\n          break\n      }\n    }\n\n    while (this.pos < this.buffer.length) {\n      // If the previous line ended with an end-of-line, we need to check\n      // if the next character is also an end-of-line.\n      if (this.eventEndCheck) {\n        // If the the current character is an end-of-line, then the event\n        // is finished and we can process it\n\n        // If the previous line ended with a carriage return, we need to\n        // check if the current character is a line feed and remove it\n        // from the buffer.\n        if (this.crlfCheck) {\n          // If the current character is a line feed, we can remove it\n          // from the buffer and reset the crlfCheck flag\n          if (this.buffer[this.pos] === LF) {\n            this.buffer = this.buffer.subarray(this.pos + 1)\n            this.pos = 0\n            this.crlfCheck = false\n\n            // It is possible that the line feed is not the end of the\n            // event. We need to check if the next character is an\n            // end-of-line character to determine if the event is\n            // finished. We simply continue the loop to check the next\n            // character.\n\n            // As we removed the line feed from the buffer and set the\n            // crlfCheck flag to false, we basically don't make any\n            // distinction between a line feed and a carriage return.\n            continue\n          }\n          this.crlfCheck = false\n        }\n\n        if (this.buffer[this.pos] === LF || this.buffer[this.pos] === CR) {\n          // If the current character is a carriage return, we need to\n          // set the crlfCheck flag to true, as we need to check if the\n          // next character is a line feed so we can remove it from the\n          // buffer\n          if (this.buffer[this.pos] === CR) {\n            this.crlfCheck = true\n          }\n\n          this.buffer = this.buffer.subarray(this.pos + 1)\n          this.pos = 0\n          if (\n            this.event.data !== undefined || this.event.event || this.event.id || this.event.retry) {\n            this.processEvent(this.event)\n          }\n          this.clearEvent()\n          continue\n        }\n        // If the current character is not an end-of-line, then the event\n        // is not finished and we have to reset the eventEndCheck flag\n        this.eventEndCheck = false\n        continue\n      }\n\n      // If the current character is an end-of-line, we can process the\n      // line\n      if (this.buffer[this.pos] === LF || this.buffer[this.pos] === CR) {\n        // If the current character is a carriage return, we need to\n        // set the crlfCheck flag to true, as we need to check if the\n        // next character is a line feed\n        if (this.buffer[this.pos] === CR) {\n          this.crlfCheck = true\n        }\n\n        // In any case, we can process the line as we reached an\n        // end-of-line character\n        this.parseLine(this.buffer.subarray(0, this.pos), this.event)\n\n        // Remove the processed line from the buffer\n        this.buffer = this.buffer.subarray(this.pos + 1)\n        // Reset the position as we removed the processed line from the buffer\n        this.pos = 0\n        // A line was processed and this could be the end of the event. We need\n        // to check if the next line is empty to determine if the event is\n        // finished.\n        this.eventEndCheck = true\n        continue\n      }\n\n      this.pos++\n    }\n\n    callback()\n  }\n\n  /**\n   * @param {Buffer} line\n   * @param {EventStreamEvent} event\n   */\n  parseLine (line, event) {\n    // If the line is empty (a blank line)\n    // Dispatch the event, as defined below.\n    // This will be handled in the _transform method\n    if (line.length === 0) {\n      return\n    }\n\n    // If the line starts with a U+003A COLON character (:)\n    // Ignore the line.\n    const colonPosition = line.indexOf(COLON)\n    if (colonPosition === 0) {\n      return\n    }\n\n    let field = ''\n    let value = ''\n\n    // If the line contains a U+003A COLON character (:)\n    if (colonPosition !== -1) {\n      // Collect the characters on the line before the first U+003A COLON\n      // character (:), and let field be that string.\n      // TODO: Investigate if there is a more performant way to extract the\n      // field\n      // see: https://github.com/nodejs/undici/issues/2630\n      field = line.subarray(0, colonPosition).toString('utf8')\n\n      // Collect the characters on the line after the first U+003A COLON\n      // character (:), and let value be that string.\n      // If value starts with a U+0020 SPACE character, remove it from value.\n      let valueStart = colonPosition + 1\n      if (line[valueStart] === SPACE) {\n        ++valueStart\n      }\n      // TODO: Investigate if there is a more performant way to extract the\n      // value\n      // see: https://github.com/nodejs/undici/issues/2630\n      value = line.subarray(valueStart).toString('utf8')\n\n      // Otherwise, the string is not empty but does not contain a U+003A COLON\n      // character (:)\n    } else {\n      // Process the field using the steps described below, using the whole\n      // line as the field name, and the empty string as the field value.\n      field = line.toString('utf8')\n      value = ''\n    }\n\n    // Modify the event with the field name and value. The value is also\n    // decoded as UTF-8\n    switch (field) {\n      case 'data':\n        if (event[field] === undefined) {\n          event[field] = value\n        } else {\n          event[field] += `\\n${value}`\n        }\n        break\n      case 'retry':\n        if (isASCIINumber(value)) {\n          event[field] = value\n        }\n        break\n      case 'id':\n        if (isValidLastEventId(value)) {\n          event[field] = value\n        }\n        break\n      case 'event':\n        if (value.length > 0) {\n          event[field] = value\n        }\n        break\n    }\n  }\n\n  /**\n   * @param {EventSourceStreamEvent} event\n   */\n  processEvent (event) {\n    if (event.retry && isASCIINumber(event.retry)) {\n      this.state.reconnectionTime = parseInt(event.retry, 10)\n    }\n\n    if (event.id && isValidLastEventId(event.id)) {\n      this.state.lastEventId = event.id\n    }\n\n    // only dispatch event, when data is provided\n    if (event.data !== undefined) {\n      this.push({\n        type: event.event || 'message',\n        options: {\n          data: event.data,\n          lastEventId: this.state.lastEventId,\n          origin: this.state.origin\n        }\n      })\n    }\n  }\n\n  clearEvent () {\n    this.event = {\n      data: undefined,\n      event: undefined,\n      id: undefined,\n      retry: undefined\n    }\n  }\n}\n\nmodule.exports = {\n  EventSourceStream\n}\n", "'use strict'\n\nconst { pipeline } = require('node:stream')\nconst { fetching } = require('../fetch')\nconst { makeRequest } = require('../fetch/request')\nconst { webidl } = require('../fetch/webidl')\nconst { EventSourceStream } = require('./eventsource-stream')\nconst { parseMIMEType } = require('../fetch/data-url')\nconst { createFastMessageEvent } = require('../websocket/events')\nconst { isNetworkError } = require('../fetch/response')\nconst { delay } = require('./util')\nconst { kEnumerableProperty } = require('../../core/util')\nconst { environmentSettingsObject } = require('../fetch/util')\n\nlet experimentalWarned = false\n\n/**\n * A reconnection time, in milliseconds. This must initially be an implementation-defined value,\n * probably in the region of a few seconds.\n *\n * In Comparison:\n * - Chrome uses 3000ms.\n * - Deno uses 5000ms.\n *\n * @type {3000}\n */\nconst defaultReconnectionTime = 3000\n\n/**\n * The readyState attribute represents the state of the connection.\n * @enum\n * @readonly\n * @see https://html.spec.whatwg.org/multipage/server-sent-events.html#dom-eventsource-readystate-dev\n */\n\n/**\n * The connection has not yet been established, or it was closed and the user\n * agent is reconnecting.\n * @type {0}\n */\nconst CONNECTING = 0\n\n/**\n * The user agent has an open connection and is dispatching events as it\n * receives them.\n * @type {1}\n */\nconst OPEN = 1\n\n/**\n * The connection is not open, and the user agent is not trying to reconnect.\n * @type {2}\n */\nconst CLOSED = 2\n\n/**\n * Requests for the element will have their mode set to \"cors\" and their credentials mode set to \"same-origin\".\n * @type {'anonymous'}\n */\nconst ANONYMOUS = 'anonymous'\n\n/**\n * Requests for the element will have their mode set to \"cors\" and their credentials mode set to \"include\".\n * @type {'use-credentials'}\n */\nconst USE_CREDENTIALS = 'use-credentials'\n\n/**\n * The EventSource interface is used to receive server-sent events. It\n * connects to a server over HTTP and receives events in text/event-stream\n * format without closing the connection.\n * @extends {EventTarget}\n * @see https://html.spec.whatwg.org/multipage/server-sent-events.html#server-sent-events\n * @api public\n */\nclass EventSource extends EventTarget {\n  #events = {\n    open: null,\n    error: null,\n    message: null\n  }\n\n  #url = null\n  #withCredentials = false\n\n  #readyState = CONNECTING\n\n  #request = null\n  #controller = null\n\n  #dispatcher\n\n  /**\n   * @type {import('./eventsource-stream').eventSourceSettings}\n   */\n  #state\n\n  /**\n   * Creates a new EventSource object.\n   * @param {string} url\n   * @param {EventSourceInit} [eventSourceInitDict]\n   * @see https://html.spec.whatwg.org/multipage/server-sent-events.html#the-eventsource-interface\n   */\n  constructor (url, eventSourceInitDict = {}) {\n    // 1. Let ev be a new EventSource object.\n    super()\n\n    const prefix = 'EventSource constructor'\n    webidl.argumentLengthCheck(arguments, 1, prefix)\n\n    if (!experimentalWarned) {\n      experimentalWarned = true\n      process.emitWarning('EventSource is experimental, expect them to change at any time.', {\n        code: 'UNDICI-ES'\n      })\n    }\n\n    url = webidl.converters.USVString(url, prefix, 'url')\n    eventSourceInitDict = webidl.converters.EventSourceInitDict(eventSourceInitDict, prefix, 'eventSourceInitDict')\n\n    this.#dispatcher = eventSourceInitDict.dispatcher\n    this.#state = {\n      lastEventId: '',\n      reconnectionTime: defaultReconnectionTime\n    }\n\n    // 2. Let settings be ev's relevant settings object.\n    // https://html.spec.whatwg.org/multipage/webappapis.html#environment-settings-object\n    const settings = environmentSettingsObject\n\n    let urlRecord\n\n    try {\n      // 3. Let urlRecord be the result of encoding-parsing a URL given url, relative to settings.\n      urlRecord = new URL(url, settings.settingsObject.baseUrl)\n      this.#state.origin = urlRecord.origin\n    } catch (e) {\n      // 4. If urlRecord is failure, then throw a \"SyntaxError\" DOMException.\n      throw new DOMException(e, 'SyntaxError')\n    }\n\n    // 5. Set ev's url to urlRecord.\n    this.#url = urlRecord.href\n\n    // 6. Let corsAttributeState be Anonymous.\n    let corsAttributeState = ANONYMOUS\n\n    // 7. If the value of eventSourceInitDict's withCredentials member is true,\n    // then set corsAttributeState to Use Credentials and set ev's\n    // withCredentials attribute to true.\n    if (eventSourceInitDict.withCredentials) {\n      corsAttributeState = USE_CREDENTIALS\n      this.#withCredentials = true\n    }\n\n    // 8. Let request be the result of creating a potential-CORS request given\n    // urlRecord, the empty string, and corsAttributeState.\n    const initRequest = {\n      redirect: 'follow',\n      keepalive: true,\n      // @see https://html.spec.whatwg.org/multipage/urls-and-fetching.html#cors-settings-attributes\n      mode: 'cors',\n      credentials: corsAttributeState === 'anonymous'\n        ? 'same-origin'\n        : 'omit',\n      referrer: 'no-referrer'\n    }\n\n    // 9. Set request's client to settings.\n    initRequest.client = environmentSettingsObject.settingsObject\n\n    // 10. User agents may set (`Accept`, `text/event-stream`) in request's header list.\n    initRequest.headersList = [['accept', { name: 'accept', value: 'text/event-stream' }]]\n\n    // 11. Set request's cache mode to \"no-store\".\n    initRequest.cache = 'no-store'\n\n    // 12. Set request's initiator type to \"other\".\n    initRequest.initiator = 'other'\n\n    initRequest.urlList = [new URL(this.#url)]\n\n    // 13. Set ev's request to request.\n    this.#request = makeRequest(initRequest)\n\n    this.#connect()\n  }\n\n  /**\n   * Returns the state of this EventSource object's connection. It can have the\n   * values described below.\n   * @returns {0|1|2}\n   * @readonly\n   */\n  get readyState () {\n    return this.#readyState\n  }\n\n  /**\n   * Returns the URL providing the event stream.\n   * @readonly\n   * @returns {string}\n   */\n  get url () {\n    return this.#url\n  }\n\n  /**\n   * Returns a boolean indicating whether the EventSource object was\n   * instantiated with CORS credentials set (true), or not (false, the default).\n   */\n  get withCredentials () {\n    return this.#withCredentials\n  }\n\n  #connect () {\n    if (this.#readyState === CLOSED) return\n\n    this.#readyState = CONNECTING\n\n    const fetchParams = {\n      request: this.#request,\n      dispatcher: this.#dispatcher\n    }\n\n    // 14. Let processEventSourceEndOfBody given response res be the following step: if res is not a network error, then reestablish the connection.\n    const processEventSourceEndOfBody = (response) => {\n      if (isNetworkError(response)) {\n        this.dispatchEvent(new Event('error'))\n        this.close()\n      }\n\n      this.#reconnect()\n    }\n\n    // 15. Fetch request, with processResponseEndOfBody set to processEventSourceEndOfBody...\n    fetchParams.processResponseEndOfBody = processEventSourceEndOfBody\n\n    // and processResponse set to the following steps given response res:\n    fetchParams.processResponse = (response) => {\n      // 1. If res is an aborted network error, then fail the connection.\n\n      if (isNetworkError(response)) {\n        // 1. When a user agent is to fail the connection, the user agent\n        // must queue a task which, if the readyState attribute is set to a\n        // value other than CLOSED, sets the readyState attribute to CLOSED\n        // and fires an event named error at the EventSource object. Once the\n        // user agent has failed the connection, it does not attempt to\n        // reconnect.\n        if (response.aborted) {\n          this.close()\n          this.dispatchEvent(new Event('error'))\n          return\n          // 2. Otherwise, if res is a network error, then reestablish the\n          // connection, unless the user agent knows that to be futile, in\n          // which case the user agent may fail the connection.\n        } else {\n          this.#reconnect()\n          return\n        }\n      }\n\n      // 3. Otherwise, if res's status is not 200, or if res's `Content-Type`\n      // is not `text/event-stream`, then fail the connection.\n      const contentType = response.headersList.get('content-type', true)\n      const mimeType = contentType !== null ? parseMIMEType(contentType) : 'failure'\n      const contentTypeValid = mimeType !== 'failure' && mimeType.essence === 'text/event-stream'\n      if (\n        response.status !== 200 ||\n        contentTypeValid === false\n      ) {\n        this.close()\n        this.dispatchEvent(new Event('error'))\n        return\n      }\n\n      // 4. Otherwise, announce the connection and interpret res's body\n      // line by line.\n\n      // When a user agent is to announce the connection, the user agent\n      // must queue a task which, if the readyState attribute is set to a\n      // value other than CLOSED, sets the readyState attribute to OPEN\n      // and fires an event named open at the EventSource object.\n      // @see https://html.spec.whatwg.org/multipage/server-sent-events.html#sse-processing-model\n      this.#readyState = OPEN\n      this.dispatchEvent(new Event('open'))\n\n      // If redirected to a different origin, set the origin to the new origin.\n      this.#state.origin = response.urlList[response.urlList.length - 1].origin\n\n      const eventSourceStream = new EventSourceStream({\n        eventSourceSettings: this.#state,\n        push: (event) => {\n          this.dispatchEvent(createFastMessageEvent(\n            event.type,\n            event.options\n          ))\n        }\n      })\n\n      pipeline(response.body.stream,\n        eventSourceStream,\n        (error) => {\n          if (\n            error?.aborted === false\n          ) {\n            this.close()\n            this.dispatchEvent(new Event('error'))\n          }\n        })\n    }\n\n    this.#controller = fetching(fetchParams)\n  }\n\n  /**\n   * @see https://html.spec.whatwg.org/multipage/server-sent-events.html#sse-processing-model\n   * @returns {Promise<void>}\n   */\n  async #reconnect () {\n    // When a user agent is to reestablish the connection, the user agent must\n    // run the following steps. These steps are run in parallel, not as part of\n    // a task. (The tasks that it queues, of course, are run like normal tasks\n    // and not themselves in parallel.)\n\n    // 1. Queue a task to run the following steps:\n\n    //   1. If the readyState attribute is set to CLOSED, abort the task.\n    if (this.#readyState === CLOSED) return\n\n    //   2. Set the readyState attribute to CONNECTING.\n    this.#readyState = CONNECTING\n\n    //   3. Fire an event named error at the EventSource object.\n    this.dispatchEvent(new Event('error'))\n\n    // 2. Wait a delay equal to the reconnection time of the event source.\n    await delay(this.#state.reconnectionTime)\n\n    // 5. Queue a task to run the following steps:\n\n    //   1. If the EventSource object's readyState attribute is not set to\n    //      CONNECTING, then return.\n    if (this.#readyState !== CONNECTING) return\n\n    //   2. Let request be the EventSource object's request.\n    //   3. If the EventSource object's last event ID string is not the empty\n    //      string, then:\n    //      1. Let lastEventIDValue be the EventSource object's last event ID\n    //         string, encoded as UTF-8.\n    //      2. Set (`Last-Event-ID`, lastEventIDValue) in request's header\n    //         list.\n    if (this.#state.lastEventId.length) {\n      this.#request.headersList.set('last-event-id', this.#state.lastEventId, true)\n    }\n\n    //   4. Fetch request and process the response obtained in this fashion, if any, as described earlier in this section.\n    this.#connect()\n  }\n\n  /**\n   * Closes the connection, if any, and sets the readyState attribute to\n   * CLOSED.\n   */\n  close () {\n    webidl.brandCheck(this, EventSource)\n\n    if (this.#readyState === CLOSED) return\n    this.#readyState = CLOSED\n    this.#controller.abort()\n    this.#request = null\n  }\n\n  get onopen () {\n    return this.#events.open\n  }\n\n  set onopen (fn) {\n    if (this.#events.open) {\n      this.removeEventListener('open', this.#events.open)\n    }\n\n    if (typeof fn === 'function') {\n      this.#events.open = fn\n      this.addEventListener('open', fn)\n    } else {\n      this.#events.open = null\n    }\n  }\n\n  get onmessage () {\n    return this.#events.message\n  }\n\n  set onmessage (fn) {\n    if (this.#events.message) {\n      this.removeEventListener('message', this.#events.message)\n    }\n\n    if (typeof fn === 'function') {\n      this.#events.message = fn\n      this.addEventListener('message', fn)\n    } else {\n      this.#events.message = null\n    }\n  }\n\n  get onerror () {\n    return this.#events.error\n  }\n\n  set onerror (fn) {\n    if (this.#events.error) {\n      this.removeEventListener('error', this.#events.error)\n    }\n\n    if (typeof fn === 'function') {\n      this.#events.error = fn\n      this.addEventListener('error', fn)\n    } else {\n      this.#events.error = null\n    }\n  }\n}\n\nconst constantsPropertyDescriptors = {\n  CONNECTING: {\n    __proto__: null,\n    configurable: false,\n    enumerable: true,\n    value: CONNECTING,\n    writable: false\n  },\n  OPEN: {\n    __proto__: null,\n    configurable: false,\n    enumerable: true,\n    value: OPEN,\n    writable: false\n  },\n  CLOSED: {\n    __proto__: null,\n    configurable: false,\n    enumerable: true,\n    value: CLOSED,\n    writable: false\n  }\n}\n\nObject.defineProperties(EventSource, constantsPropertyDescriptors)\nObject.defineProperties(EventSource.prototype, constantsPropertyDescriptors)\n\nObject.defineProperties(EventSource.prototype, {\n  close: kEnumerableProperty,\n  onerror: kEnumerableProperty,\n  onmessage: kEnumerableProperty,\n  onopen: kEnumerableProperty,\n  readyState: kEnumerableProperty,\n  url: kEnumerableProperty,\n  withCredentials: kEnumerableProperty\n})\n\nwebidl.converters.EventSourceInitDict = webidl.dictionaryConverter([\n  {\n    key: 'withCredentials',\n    converter: webidl.converters.boolean,\n    defaultValue: () => false\n  },\n  {\n    key: 'dispatcher', // undici only\n    converter: webidl.converters.any\n  }\n])\n\nmodule.exports = {\n  EventSource,\n  defaultReconnectionTime\n}\n", "'use strict'\n\nconst Client = require('./lib/dispatcher/client')\nconst Dispatcher = require('./lib/dispatcher/dispatcher')\nconst Pool = require('./lib/dispatcher/pool')\nconst BalancedPool = require('./lib/dispatcher/balanced-pool')\nconst Agent = require('./lib/dispatcher/agent')\nconst ProxyAgent = require('./lib/dispatcher/proxy-agent')\nconst EnvHttpProxyAgent = require('./lib/dispatcher/env-http-proxy-agent')\nconst RetryAgent = require('./lib/dispatcher/retry-agent')\nconst errors = require('./lib/core/errors')\nconst util = require('./lib/core/util')\nconst { InvalidArgumentError } = errors\nconst api = require('./lib/api')\nconst buildConnector = require('./lib/core/connect')\nconst MockClient = require('./lib/mock/mock-client')\nconst MockAgent = require('./lib/mock/mock-agent')\nconst MockPool = require('./lib/mock/mock-pool')\nconst mockErrors = require('./lib/mock/mock-errors')\nconst RetryHandler = require('./lib/handler/retry-handler')\nconst { getGlobalDispatcher, setGlobalDispatcher } = require('./lib/global')\nconst DecoratorHandler = require('./lib/handler/decorator-handler')\nconst RedirectHandler = require('./lib/handler/redirect-handler')\nconst createRedirectInterceptor = require('./lib/interceptor/redirect-interceptor')\n\nObject.assign(Dispatcher.prototype, api)\n\nmodule.exports.Dispatcher = Dispatcher\nmodule.exports.Client = Client\nmodule.exports.Pool = Pool\nmodule.exports.BalancedPool = BalancedPool\nmodule.exports.Agent = Agent\nmodule.exports.ProxyAgent = ProxyAgent\nmodule.exports.EnvHttpProxyAgent = EnvHttpProxyAgent\nmodule.exports.RetryAgent = RetryAgent\nmodule.exports.RetryHandler = RetryHandler\n\nmodule.exports.DecoratorHandler = DecoratorHandler\nmodule.exports.RedirectHandler = RedirectHandler\nmodule.exports.createRedirectInterceptor = createRedirectInterceptor\nmodule.exports.interceptors = {\n  redirect: require('./lib/interceptor/redirect'),\n  retry: require('./lib/interceptor/retry'),\n  dump: require('./lib/interceptor/dump')\n}\n\nmodule.exports.buildConnector = buildConnector\nmodule.exports.errors = errors\nmodule.exports.util = {\n  parseHeaders: util.parseHeaders,\n  headerNameToString: util.headerNameToString\n}\n\nfunction makeDispatcher (fn) {\n  return (url, opts, handler) => {\n    if (typeof opts === 'function') {\n      handler = opts\n      opts = null\n    }\n\n    if (!url || (typeof url !== 'string' && typeof url !== 'object' && !(url instanceof URL))) {\n      throw new InvalidArgumentError('invalid url')\n    }\n\n    if (opts != null && typeof opts !== 'object') {\n      throw new InvalidArgumentError('invalid opts')\n    }\n\n    if (opts && opts.path != null) {\n      if (typeof opts.path !== 'string') {\n        throw new InvalidArgumentError('invalid opts.path')\n      }\n\n      let path = opts.path\n      if (!opts.path.startsWith('/')) {\n        path = `/${path}`\n      }\n\n      url = new URL(util.parseOrigin(url).origin + path)\n    } else {\n      if (!opts) {\n        opts = typeof url === 'object' ? url : {}\n      }\n\n      url = util.parseURL(url)\n    }\n\n    const { agent, dispatcher = getGlobalDispatcher() } = opts\n\n    if (agent) {\n      throw new InvalidArgumentError('unsupported opts.agent. Did you mean opts.client?')\n    }\n\n    return fn.call(dispatcher, {\n      ...opts,\n      origin: url.origin,\n      path: url.search ? `${url.pathname}${url.search}` : url.pathname,\n      method: opts.method || (opts.body ? 'PUT' : 'GET')\n    }, handler)\n  }\n}\n\nmodule.exports.setGlobalDispatcher = setGlobalDispatcher\nmodule.exports.getGlobalDispatcher = getGlobalDispatcher\n\nconst fetchImpl = require('./lib/web/fetch').fetch\nmodule.exports.fetch = async function fetch (init, options = undefined) {\n  try {\n    return await fetchImpl(init, options)\n  } catch (err) {\n    if (err && typeof err === 'object') {\n      Error.captureStackTrace(err)\n    }\n\n    throw err\n  }\n}\nmodule.exports.Headers = require('./lib/web/fetch/headers').Headers\nmodule.exports.Response = require('./lib/web/fetch/response').Response\nmodule.exports.Request = require('./lib/web/fetch/request').Request\nmodule.exports.FormData = require('./lib/web/fetch/formdata').FormData\nmodule.exports.File = globalThis.File ?? require('node:buffer').File\nmodule.exports.FileReader = require('./lib/web/fileapi/filereader').FileReader\n\nconst { setGlobalOrigin, getGlobalOrigin } = require('./lib/web/fetch/global')\n\nmodule.exports.setGlobalOrigin = setGlobalOrigin\nmodule.exports.getGlobalOrigin = getGlobalOrigin\n\nconst { CacheStorage } = require('./lib/web/cache/cachestorage')\nconst { kConstruct } = require('./lib/web/cache/symbols')\n\n// Cache & CacheStorage are tightly coupled with fetch. Even if it may run\n// in an older version of Node, it doesn't have any use without fetch.\nmodule.exports.caches = new CacheStorage(kConstruct)\n\nconst { deleteCookie, getCookies, getSetCookies, setCookie } = require('./lib/web/cookies')\n\nmodule.exports.deleteCookie = deleteCookie\nmodule.exports.getCookies = getCookies\nmodule.exports.getSetCookies = getSetCookies\nmodule.exports.setCookie = setCookie\n\nconst { parseMIMEType, serializeAMimeType } = require('./lib/web/fetch/data-url')\n\nmodule.exports.parseMIMEType = parseMIMEType\nmodule.exports.serializeAMimeType = serializeAMimeType\n\nconst { CloseEvent, ErrorEvent, MessageEvent } = require('./lib/web/websocket/events')\nmodule.exports.WebSocket = require('./lib/web/websocket/websocket').WebSocket\nmodule.exports.CloseEvent = CloseEvent\nmodule.exports.ErrorEvent = ErrorEvent\nmodule.exports.MessageEvent = MessageEvent\n\nmodule.exports.request = makeDispatcher(api.request)\nmodule.exports.stream = makeDispatcher(api.stream)\nmodule.exports.pipeline = makeDispatcher(api.pipeline)\nmodule.exports.connect = makeDispatcher(api.connect)\nmodule.exports.upgrade = makeDispatcher(api.upgrade)\n\nmodule.exports.MockClient = MockClient\nmodule.exports.MockPool = MockPool\nmodule.exports.MockAgent = MockAgent\nmodule.exports.mockErrors = mockErrors\n\nconst { EventSource } = require('./lib/web/eventsource/eventsource')\n\nmodule.exports.EventSource = EventSource\n", "import { program } from \"commander\";\r\nimport { version as packageVersion } from \"../package.json\";\r\nimport { resocketDev } from \"./dev\";\r\nimport { resocketDeploy } from \"./deploy\";\r\nimport { removeUserConfig } from \"./config\";\r\nimport { requireAuth } from \"./auth/auth\";\r\nimport { getUser, logout } from \"./auth/user\";\r\nimport { fromZodError } from \"zod-validation-error\";\r\nimport chalk from \"chalk\";\r\nimport ora from \"ora\";\r\nimport { ZodError } from \"zod\";\r\nimport { ResocketError } from \"./errors/RescoketError\";\r\nimport { CustomError } from \"./errors/BaseError\";\r\nimport { removeUndefined } from \"./utils\";\r\n\r\n//*--------------------------------------------------------------------------------------------------\r\n//* Core Commands, essential commands that make resocket cli */\r\n//*--------------------------------------------------------------------------------------------------\r\n\r\nprogram\r\n  .name(\"resocket\")\r\n  .version(packageVersion, \"-v, --version\", \"Output the current version\")\r\n  .description(\r\n    \"thankx for using resocket, hopefully we make your multiplayer development easier :)\"\r\n  )\r\n  .action(async () => {\r\n    program.help();\r\n  });\r\n\r\nprogram\r\n  .command(\"dev\")\r\n  .description(\"starts a resocket dev server\")\r\n  .option(\"-c, --config <path>\", \"Path to config file\")\r\n  .option(\"-p, --port <number>\", \"Port to run the server on\")\r\n  .action(async (options) => {\r\n    const overrides = {\r\n      config: options.config,\r\n      configOverrides: removeUndefined({\r\n        port: options.port ? parseInt(options.port) : undefined,\r\n      }),\r\n    };\r\n\r\n    await resocketDev(removeUndefined(overrides));\r\n  });\r\n\r\n//todo evenutally add all the possible configs and cli commands & polish this\r\nprogram\r\n  .command(\"deploy\")\r\n  .description(\"deploys the project to the cloud :)\")\r\n  .option(\"-c, --config <path>\", \"Path to config file\")\r\n  .action(async (options) => {\r\n    const overrides = {\r\n      config: options.config,\r\n    };\r\n    await resocketDeploy(removeUndefined(overrides));\r\n  });\r\n\r\nprogram\r\n  .command(\"logout\")\r\n  .description(\"logsout the current user\")\r\n  .action(async () => {\r\n    const spinner = ora(`${chalk.bold(\"logging out...\")} `).start();\r\n    try {\r\n      await logout();\r\n      spinner.succeed(chalk.green(\"Logged out successfully\"));\r\n    } catch (error) {\r\n      spinner.clear();\r\n      throw error;\r\n    }\r\n  });\r\n\r\nprogram\r\n  .command(\"login\")\r\n  .description(\"logs the user in! uses the cli\")\r\n  .action(async () => {\r\n    const user = await getUser();\r\n\r\n    console.log(\r\n      chalk.green(`\\nLogged in as ${chalk.bold(user.config.username)}`)\r\n    );\r\n    //- done\r\n    //[done] make the ui reidrect correctly\r\n    //[done] refactor the stolen code & potentially make it look original or more closer to the docs itself\r\n    //[done] store this session. somewhere\r\n    //[done] make a fetch based on the api token stores\r\n    //[done] make a helper to get & the user config\r\n    //[done] complete the login auth cli properly\r\n    //[done] make a delete functionlity. basically logout\r\n    //[done] improving the hopepage of resocket\r\n    //[done] improve a bit on the success/fail pages UI. even simple modal like page would also look nice\r\n    //[done] make the 'not you? change account' feature work on the ui\r\n    //[done] test in case of invalid json. for zod\r\n    //[done] better zod errors\r\n    //[done] process.exit zod errors\r\n    //[done] add resocket clean command to clear .resocket files & stuff\r\n    //[done] bug fix shooting meteor star\r\n    //[done] refactor the above junk that youhave made ~ surprisingly enough it was not a mess\r\n    //[done] add supabase to the backend\r\n    //[done] add email list to supabase\r\n    //[done] upsert create email on conflict do nothing\r\n    //[done] sync users to the database (supabase) i.e. clerk webhooks or something. actually we will just use findOrCreate instead :)\r\n\r\n    //*on it --\r\n    //todo move the backend api to backend dashboard instead! (no need for it to be on worker. just becomes an extra pain in the ass to manage. this way we can keep it all nice and tidy in a simple deployment\r\n    //todo deploy command\r\n    //*on it --\r\n\r\n    //todo--- progressively added overtime and then focus towards the ending\r\n    //todo add proper zod to every part of the cli\r\n    //todo add proper overrides for the cli\r\n    //todo add proper program parameters foe the cli commands\r\n    //todo-------------------------------------------------------\r\n\r\n    //todo move on the deploy commands, once we have those up & running\r\n    //todo deploy on a workers url just like wrangler would\r\n    //todo upload projects and create other options like list-projects. active projects etc.\r\n    //todo then create some sort of history for durable object uploads\r\n    //todo also create option of dashboard & potentially even paid option of teams.\r\n    //todo whipp out the cli properly and move on to working on the core framework itself. now that the logistics are mostly taken care of\r\n    //todo a future potential way of linking cloudflare account in the dashboard\r\n    //todo also vercel like account system & dashboard. even logs\r\n    //todo map existing partykit features on a cli/infra/dashboard level\r\n    //todo core framework from here on\r\n    //todo will take more or less 2 weeks at min\r\n    //todo since it is about quality i also want the users to experience good quality\r\n    //todo only then we will use resocket's open source websocket library once we have something to launch here :)\r\n    //todo honestly looks like about a month of effort or even 2 months worth of effort for now !! so strip useless things.\r\n    //todo what is the experience that i want to give to the users\r\n  });\r\n\r\nprogram\r\n  .command(\"clean\")\r\n  .description(\"removes internal config files for storing user auth\")\r\n  .action(() => {\r\n    const spinner = ora(`${chalk.bold(\"cleaning...\")} `).start();\r\n    removeUserConfig();\r\n    spinner.succeed(chalk.green(\"done!\"));\r\n  });\r\n\r\n//*--------------------------------------------------------------------------------------------------\r\n//* Additional Commands, non-essential but nice to have commands, aims to improve the ux */\r\n//*--------------------------------------------------------------------------------------------------\r\n\r\nconst getCommand = program\r\n  .command(\"get\")\r\n  .description(\r\n    \"displays the info about the deployed project, like 'resocket get rooms' will print the deployed rooms list\"\r\n  );\r\n\r\n//todo this is going to be a sub command of someting like resocket get rooms, resocket get config, resocket get users(the cloud team for this project) etc\r\ngetCommand\r\n  .command(\"rooms\")\r\n  .description(\"[todo] displays the current rooms for the projects\")\r\n  .action(async () => {\r\n    requireAuth();\r\n\r\n    //todo this gets the data from the api?\r\n    // const { existingBindings } = await getBindings(getResocketConfig());\r\n\r\n    console.log(\r\n      `[todo] This currently deployed project has the following rooms :)`\r\n    );\r\n    // console.log(`rooms ->  ` + existingBindings);\r\n  });\r\n\r\nconst configCommand = program\r\n  .command(\"config\")\r\n  .description(\r\n    \"config related operatoins for dx, like config prune, or config recover\"\r\n  );\r\n\r\nconfigCommand\r\n  .command(\"prune\")\r\n  .description(\r\n    \"[todo] this will esentially remove all the applied migrations from resocket.config\"\r\n  );\r\nconfigCommand\r\n  .command(\"recover\")\r\n  .description(\r\n    \"[todo] this will recover and add all the non existing already ran migrations. counterpart of reoscket config prune\"\r\n  );\r\n\r\nprogram.parse(process.argv);\r\n\r\nprocess.on(\"uncaughtException\", (err) => {\r\n  if (err instanceof ZodError) {\r\n    const error = new ResocketError({\r\n      coreMessage: fromZodError(err).toString(),\r\n      complexity: \"tricky\",\r\n      humanMessage:\r\n        \"\\n\\tThis is a validation error from zod, this can be hard to debug! make sure your resocket config is correct & please do reach out if you get stuck :)\",\r\n      proTip:\r\n        \"you can run 'resocket clean' command (this clears any stale config files that might be causing this error) and try again!\",\r\n      // docs: `[coming soon]`,\r\n    });\r\n\r\n    error.printWithStack();\r\n    process.exit(1);\r\n  }\r\n\r\n  if (err instanceof CustomError) {\r\n    err.print();\r\n    process.exit(1);\r\n  }\r\n\r\n  // Handle other types of errors\r\n  console.error(\"Unhandled Error:\", err);\r\n  throw err;\r\n});\r\n", "import commander from './index.js';\n\n// wrapper to provide named exports for ESM.\nexport const {\n  program,\n  createCommand,\n  createArgument,\n  createOption,\n  CommanderError,\n  InvalidArgumentError,\n  InvalidOptionArgumentError, // deprecated old name\n  Command,\n  Argument,\n  Option,\n  Help,\n} = commander;\n", "{\n  \"name\": \"@resocket/cli\",\n  \"version\": \"0.0.3\",\n  \"description\": \"\",\n  \"main\": \"index.js\",\n  \"bin\": {\n    \"resocket\": \"dist/bin.mjs\"\n  },\n  \"scripts\": {\n    \"test:login\": \"node dist/bin.mjs login\",\n    \"test:logout\": \"node dist/bin.mjs logout\",\n    \"test:clean\": \"node dist/bin.mjs clean\",\n    \"test:deploy\": \"node dist/bin.mjs deploy\",\n    \"test:dev\": \"node dist/bin.mjs dev\",\n    \"build:esm\": \"node -r esbuild-register build.ts\",\n    \"dev\": \"npm run build:esm\",\n    \"tsup\": \"tsup\"\n  },\n  \"keywords\": [],\n  \"author\": \"\",\n  \"license\": \"ISC\",\n  \"dependencies\": {\n    \"@cfworker/uuid\": \"^1.12.4\",\n    \"@clerk/clerk-js\": \"^5.5.3\",\n    \"@iarna/toml\": \"^2.2.5\",\n    \"async-listen\": \"^3.0.1\",\n    \"chalk\": \"^5.3.0\",\n    \"chokidar\": \"^3.6.0\",\n    \"commander\": \"^12.1.0\",\n    \"dotenv\": \"^16.4.5\",\n    \"esbuild\": \"^0.21.4\",\n    \"execa\": \"^9.1.0\",\n    \"find-up\": \"^7.0.0\",\n    \"get-port\": \"^7.1.0\",\n    \"open\": \"^10.1.0\",\n    \"ora\": \"^8.0.1\",\n    \"terminal-link\": \"^3.0.0\",\n    \"tsup\": \"^8.0.2\",\n    \"undici\": \"^6.18.1\",\n    \"uuid\": \"^9.0.1\",\n    \"wrangler\": \"^3.57.1\",\n    \"zod\": \"^3.23.8\",\n    \"zod-validation-error\": \"^3.3.0\"\n  },\n  \"devDependencies\": {\n    \"@cloudflare/workers-types\": \"^4.20240524.0\",\n    \"@types/node\": \"^20.8.3\",\n    \"@types/uuid\": \"^9.0.8\",\n    \"esbuild-register\": \"^3.5.0\",\n    \"typescript\": \"^5.4.5\",\n    \"vitest\": \"^1.6.0\"\n  }\n}\n", "import { execa } from \"execa\";\r\nimport { watch } from \"chokidar\";\r\nimport { buildDev } from \"./code-gen/esbuild\";\r\nimport type { BuildContext } from \"esbuild\";\r\nimport { findUpSync } from \"find-up\";\r\nimport { getResocketDir } from \"./code-gen/getAssets\";\r\nimport { getWorkerFilePath } from \"./utils\";\r\nimport { getResocketConfig } from \"./config\";\r\n\r\nexport interface DevCliOverrides {\r\n  config?: string;\r\n  configOverrides: {\r\n    port?: number;\r\n  };\r\n}\r\n\r\nexport const resocketDev = async (overrides: DevCliOverrides) => {\r\n  const workerdir = getResocketDir();\r\n  const config = getResocketConfig(overrides);\r\n  const workerFilePath = getWorkerFilePath(overrides.config, config);\r\n\r\n  let ctx: BuildContext;\r\n\r\n  //build will build and watch both\r\n  ctx = await buildDev(workerFilePath, {\r\n    ...config,\r\n    ...overrides.configOverrides,\r\n  });\r\n\r\n  //run shell\r\n  const childProcess = execa(\r\n    `wrangler dev ${workerdir}/gen/worker.js -c ${workerdir}/gen/wrangler.toml`,\r\n    { stdio: \"inherit\" }\r\n  );\r\n\r\n  const envFilesToWatch = [];\r\n\r\n  const envFilePath = findUpSync(\".env\");\r\n  const envLocalFilePath = findUpSync(\".env.local\");\r\n\r\n  if (envFilePath) envFilesToWatch.push(envFilePath);\r\n  if (envLocalFilePath) envFilesToWatch.push(envLocalFilePath);\r\n\r\n  //watch is for resocket.json changes.\r\n  //? do we also want to listen for changes to the package.json?\r\n  const watcher = watch(\r\n    [\r\n      findUpSync(\"resocket.json\")!,\r\n      findUpSync(\"package.json\")!,\r\n      ...envFilesToWatch,\r\n    ],\r\n    {\r\n      ignoreInitial: true,\r\n    }\r\n  );\r\n  watcher.on(\"all\", async () => {\r\n    try {\r\n      //manually rebuild on config & package.json changes\r\n      await ctx.rebuild();\r\n\r\n      //read the latest\r\n      const resocketConfig = getResocketConfig(overrides);\r\n\r\n      //this will build the toml\r\n      ctx = await buildDev(\r\n        getWorkerFilePath(overrides.config, resocketConfig),\r\n        resocketConfig\r\n      );\r\n    } catch (error) {\r\n      console.error(error);\r\n    }\r\n  });\r\n\r\n  childProcess\r\n    .then((c) => {\r\n      console.log(`complete `, c);\r\n    })\r\n    .catch((e) => {\r\n      console.log(`error `, e);\r\n    })\r\n    .finally(async () => {\r\n      watcher.close();\r\n      ctx.dispose();\r\n    });\r\n};\r\n", "import {createExeca} from './lib/methods/create.js';\nimport {mapCommandAsync, mapCommandSync} from './lib/methods/command.js';\nimport {mapNode} from './lib/methods/node.js';\nimport {mapScriptAsync, setScriptSync, deepScriptOptions} from './lib/methods/script.js';\n\nexport {ExecaError, ExecaSyncError} from './lib/return/final-error.js';\n\nexport const execa = createExeca(() => ({}));\nexport const execaSync = createExeca(() => ({isSync: true}));\nexport const execaCommand = createExeca(mapCommandAsync);\nexport const execaCommandSync = createExeca(mapCommandSync);\nexport const execaNode = createExeca(mapNode);\nexport const $ = createExeca(mapScriptAsync, {}, deepScriptOptions, setScriptSync);\n", "import isPlainObject from 'is-plain-obj';\nimport {normalizeParameters} from './parameters.js';\nimport {isTemplateString, parseTemplates} from './template.js';\nimport {execaCoreSync} from './main-sync.js';\nimport {execaCoreAsync} from './main-async.js';\nimport {mergeOptions} from './bind.js';\n\n// Wraps every exported methods to provide the following features:\n//  - template string syntax: execa`command argument`\n//  - options binding: boundExeca = execa(options)\n//  - optional argument/options: execa(file), execa(file, args), execa(file, options), execa(file, args, options)\n// `mapArguments()` and `setBoundExeca()` allows for method-specific logic.\nexport const createExeca = (mapArguments, boundOptions, deepOptions, setBoundExeca) => {\n\tconst createNested = (mapArguments, boundOptions, setBoundExeca) => createExeca(mapArguments, boundOptions, deepOptions, setBoundExeca);\n\tconst boundExeca = (...execaArguments) => callBoundExeca({\n\t\tmapArguments,\n\t\tdeepOptions,\n\t\tboundOptions,\n\t\tsetBoundExeca,\n\t\tcreateNested,\n\t}, ...execaArguments);\n\n\tif (setBoundExeca !== undefined) {\n\t\tsetBoundExeca(boundExeca, createNested, boundOptions);\n\t}\n\n\treturn boundExeca;\n};\n\nconst callBoundExeca = ({mapArguments, deepOptions = {}, boundOptions = {}, setBoundExeca, createNested}, firstArgument, ...nextArguments) => {\n\tif (isPlainObject(firstArgument)) {\n\t\treturn createNested(mapArguments, mergeOptions(boundOptions, firstArgument), setBoundExeca);\n\t}\n\n\tconst {file, commandArguments, options, isSync} = parseArguments({\n\t\tmapArguments,\n\t\tfirstArgument,\n\t\tnextArguments,\n\t\tdeepOptions,\n\t\tboundOptions,\n\t});\n\treturn isSync\n\t\t? execaCoreSync(file, commandArguments, options)\n\t\t: execaCoreAsync(file, commandArguments, options, createNested);\n};\n\nconst parseArguments = ({mapArguments, firstArgument, nextArguments, deepOptions, boundOptions}) => {\n\tconst callArguments = isTemplateString(firstArgument)\n\t\t? parseTemplates(firstArgument, nextArguments)\n\t\t: [firstArgument, ...nextArguments];\n\tconst [initialFile, initialArguments, initialOptions] = normalizeParameters(...callArguments);\n\tconst mergedOptions = mergeOptions(mergeOptions(deepOptions, boundOptions), initialOptions);\n\tconst {\n\t\tfile = initialFile,\n\t\tcommandArguments = initialArguments,\n\t\toptions = mergedOptions,\n\t\tisSync = false,\n\t} = mapArguments({file: initialFile, commandArguments: initialArguments, options: mergedOptions});\n\treturn {\n\t\tfile,\n\t\tcommandArguments,\n\t\toptions,\n\t\tisSync,\n\t};\n};\n", "export default function isPlainObject(value) {\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\n\tconst prototype = Object.getPrototypeOf(value);\n\treturn (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in value) && !(Symbol.iterator in value);\n}\n", "import isPlainObject from 'is-plain-obj';\nimport {safeNormalizeFileUrl} from '../arguments/file-url.js';\n\n// The command `arguments` and `options` are both optional.\n// This also does basic validation on them and on the command file.\nexport const normalizeParameters = (rawFile, rawArguments = [], rawOptions = {}) => {\n\tconst filePath = safeNormalizeFileUrl(rawFile, 'First argument');\n\tconst [commandArguments, options] = isPlainObject(rawArguments)\n\t\t? [[], rawArguments]\n\t\t: [rawArguments, rawOptions];\n\n\tif (!Array.isArray(commandArguments)) {\n\t\tthrow new TypeError(`Second argument must be either an array of arguments or an options object: ${commandArguments}`);\n\t}\n\n\tif (commandArguments.some(commandArgument => typeof commandArgument === 'object' && commandArgument !== null)) {\n\t\tthrow new TypeError(`Second argument must be an array of strings: ${commandArguments}`);\n\t}\n\n\tconst normalizedArguments = commandArguments.map(String);\n\tconst nullByteArgument = normalizedArguments.find(normalizedArgument => normalizedArgument.includes('\\0'));\n\tif (nullByteArgument !== undefined) {\n\t\tthrow new TypeError(`Arguments cannot contain null bytes (\"\\\\0\"): ${nullByteArgument}`);\n\t}\n\n\tif (!isPlainObject(options)) {\n\t\tthrow new TypeError(`Last argument must be an options object: ${options}`);\n\t}\n\n\treturn [filePath, normalizedArguments, options];\n};\n", "import {fileURLToPath} from 'node:url';\n\n// Allow some arguments/options to be either a file path string or a file URL\nexport const safeNormalizeFileUrl = (file, name) => {\n\tconst fileString = normalizeFileUrl(file);\n\n\tif (typeof fileString !== 'string') {\n\t\tthrow new TypeError(`${name} must be a string or a file URL: ${fileString}.`);\n\t}\n\n\treturn fileString;\n};\n\n// Same but also allows other values, e.g. `boolean` for the `shell` option\nexport const normalizeFileUrl = file => file instanceof URL ? fileURLToPath(file) : file;\n", "import {ChildProcess} from 'node:child_process';\nimport isPlainObject from 'is-plain-obj';\nimport {isUint8Array, uint8ArrayToString} from '../utils/uint-array.js';\n\n// Check whether the template string syntax is being used\nexport const isTemplateString = templates => Array.isArray(templates) && Array.isArray(templates.raw);\n\n// Convert execa`file ...commandArguments` to execa(file, commandArguments)\nexport const parseTemplates = (templates, expressions) => {\n\tlet tokens = [];\n\n\tfor (const [index, template] of templates.entries()) {\n\t\ttokens = parseTemplate({\n\t\t\ttemplates,\n\t\t\texpressions,\n\t\t\ttokens,\n\t\t\tindex,\n\t\t\ttemplate,\n\t\t});\n\t}\n\n\tif (tokens.length === 0) {\n\t\tthrow new TypeError('Template script must not be empty');\n\t}\n\n\tconst [file, ...commandArguments] = tokens;\n\treturn [file, commandArguments, {}];\n};\n\nconst parseTemplate = ({templates, expressions, tokens, index, template}) => {\n\tif (template === undefined) {\n\t\tthrow new TypeError(`Invalid backslash sequence: ${templates.raw[index]}`);\n\t}\n\n\tconst {nextTokens, leadingWhitespaces, trailingWhitespaces} = splitByWhitespaces(template, templates.raw[index]);\n\tconst newTokens = concatTokens(tokens, nextTokens, leadingWhitespaces);\n\n\tif (index === expressions.length) {\n\t\treturn newTokens;\n\t}\n\n\tconst expression = expressions[index];\n\tconst expressionTokens = Array.isArray(expression)\n\t\t? expression.map(expression => parseExpression(expression))\n\t\t: [parseExpression(expression)];\n\treturn concatTokens(newTokens, expressionTokens, trailingWhitespaces);\n};\n\n// Like `string.split(/[ \\t\\r\\n]+/)` except newlines and tabs are:\n//  - ignored when input as a backslash sequence like: `echo foo\\n bar`\n//  - not ignored when input directly\n// The only way to distinguish those in JavaScript is to use a tagged template and compare:\n//  - the first array argument, which does not escape backslash sequences\n//  - its `raw` property, which escapes them\nconst splitByWhitespaces = (template, rawTemplate) => {\n\tif (rawTemplate.length === 0) {\n\t\treturn {nextTokens: [], leadingWhitespaces: false, trailingWhitespaces: false};\n\t}\n\n\tconst nextTokens = [];\n\tlet templateStart = 0;\n\tconst leadingWhitespaces = DELIMITERS.has(rawTemplate[0]);\n\n\tfor (\n\t\tlet templateIndex = 0, rawIndex = 0;\n\t\ttemplateIndex < template.length;\n\t\ttemplateIndex += 1, rawIndex += 1\n\t) {\n\t\tconst rawCharacter = rawTemplate[rawIndex];\n\t\tif (DELIMITERS.has(rawCharacter)) {\n\t\t\tif (templateStart !== templateIndex) {\n\t\t\t\tnextTokens.push(template.slice(templateStart, templateIndex));\n\t\t\t}\n\n\t\t\ttemplateStart = templateIndex + 1;\n\t\t} else if (rawCharacter === '\\\\') {\n\t\t\tconst nextRawCharacter = rawTemplate[rawIndex + 1];\n\t\t\tif (nextRawCharacter === 'u' && rawTemplate[rawIndex + 2] === '{') {\n\t\t\t\trawIndex = rawTemplate.indexOf('}', rawIndex + 3);\n\t\t\t} else {\n\t\t\t\trawIndex += ESCAPE_LENGTH[nextRawCharacter] ?? 1;\n\t\t\t}\n\t\t}\n\t}\n\n\tconst trailingWhitespaces = templateStart === template.length;\n\tif (!trailingWhitespaces) {\n\t\tnextTokens.push(template.slice(templateStart));\n\t}\n\n\treturn {nextTokens, leadingWhitespaces, trailingWhitespaces};\n};\n\nconst DELIMITERS = new Set([' ', '\\t', '\\r', '\\n']);\n\n// Number of characters in backslash escape sequences: \\0 \\xXX or \\uXXXX\n// \\cX is allowed in RegExps but not in strings\n// Octal sequences are not allowed in strict mode\nconst ESCAPE_LENGTH = {x: 3, u: 5};\n\nconst concatTokens = (tokens, nextTokens, isSeparated) => isSeparated\n\t|| tokens.length === 0\n\t|| nextTokens.length === 0\n\t? [...tokens, ...nextTokens]\n\t: [\n\t\t...tokens.slice(0, -1),\n\t\t`${tokens.at(-1)}${nextTokens[0]}`,\n\t\t...nextTokens.slice(1),\n\t];\n\n// Handle `${expression}` inside the template string syntax\nconst parseExpression = expression => {\n\tconst typeOfExpression = typeof expression;\n\n\tif (typeOfExpression === 'string') {\n\t\treturn expression;\n\t}\n\n\tif (typeOfExpression === 'number') {\n\t\treturn String(expression);\n\t}\n\n\tif (isPlainObject(expression) && ('stdout' in expression || 'isMaxBuffer' in expression)) {\n\t\treturn getSubprocessResult(expression);\n\t}\n\n\tif (expression instanceof ChildProcess || Object.prototype.toString.call(expression) === '[object Promise]') {\n\t\t// eslint-disable-next-line no-template-curly-in-string\n\t\tthrow new TypeError('Unexpected subprocess in template expression. Please use ${await subprocess} instead of ${subprocess}.');\n\t}\n\n\tthrow new TypeError(`Unexpected \"${typeOfExpression}\" in template expression`);\n};\n\nconst getSubprocessResult = ({stdout}) => {\n\tif (typeof stdout === 'string') {\n\t\treturn stdout;\n\t}\n\n\tif (isUint8Array(stdout)) {\n\t\treturn uint8ArrayToString(stdout);\n\t}\n\n\tif (stdout === undefined) {\n\t\tthrow new TypeError('Missing result.stdout in template expression. This is probably due to the previous subprocess\\' \"stdout\" option.');\n\t}\n\n\tthrow new TypeError(`Unexpected \"${typeof stdout}\" stdout in template expression`);\n};\n", "import {StringDecoder} from 'node:string_decoder';\n\nconst {toString: objectToString} = Object.prototype;\n\nexport const isArrayBuffer = value => objectToString.call(value) === '[object ArrayBuffer]';\n\n// Is either Uint8Array or Buffer\nexport const isUint8Array = value => objectToString.call(value) === '[object Uint8Array]';\n\nexport const bufferToUint8Array = buffer => new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n\nconst textEncoder = new TextEncoder();\nconst stringToUint8Array = string => textEncoder.encode(string);\n\nconst textDecoder = new TextDecoder();\nexport const uint8ArrayToString = uint8Array => textDecoder.decode(uint8Array);\n\nexport const joinToString = (uint8ArraysOrStrings, encoding) => {\n\tconst strings = uint8ArraysToStrings(uint8ArraysOrStrings, encoding);\n\treturn strings.join('');\n};\n\nconst uint8ArraysToStrings = (uint8ArraysOrStrings, encoding) => {\n\tif (encoding === 'utf8' && uint8ArraysOrStrings.every(uint8ArrayOrString => typeof uint8ArrayOrString === 'string')) {\n\t\treturn uint8ArraysOrStrings;\n\t}\n\n\tconst decoder = new StringDecoder(encoding);\n\tconst strings = uint8ArraysOrStrings\n\t\t.map(uint8ArrayOrString => typeof uint8ArrayOrString === 'string'\n\t\t\t? stringToUint8Array(uint8ArrayOrString)\n\t\t\t: uint8ArrayOrString)\n\t\t.map(uint8Array => decoder.write(uint8Array));\n\tconst finalString = decoder.end();\n\treturn finalString === '' ? strings : [...strings, finalString];\n};\n\nexport const joinToUint8Array = uint8ArraysOrStrings => {\n\tif (uint8ArraysOrStrings.length === 1 && isUint8Array(uint8ArraysOrStrings[0])) {\n\t\treturn uint8ArraysOrStrings[0];\n\t}\n\n\treturn concatUint8Arrays(stringsToUint8Arrays(uint8ArraysOrStrings));\n};\n\nconst stringsToUint8Arrays = uint8ArraysOrStrings => uint8ArraysOrStrings.map(uint8ArrayOrString => typeof uint8ArrayOrString === 'string'\n\t? stringToUint8Array(uint8ArrayOrString)\n\t: uint8ArrayOrString);\n\nexport const concatUint8Arrays = uint8Arrays => {\n\tconst result = new Uint8Array(getJoinLength(uint8Arrays));\n\n\tlet index = 0;\n\tfor (const uint8Array of uint8Arrays) {\n\t\tresult.set(uint8Array, index);\n\t\tindex += uint8Array.length;\n\t}\n\n\treturn result;\n};\n\nconst getJoinLength = uint8Arrays => {\n\tlet joinLength = 0;\n\tfor (const uint8Array of uint8Arrays) {\n\t\tjoinLength += uint8Array.length;\n\t}\n\n\treturn joinLength;\n};\n", "import {spawnSync} from 'node:child_process';\nimport {handleCommand} from '../arguments/command.js';\nimport {normalizeOptions} from '../arguments/options.js';\nimport {makeError, makeEarlyError, makeSuccessResult} from '../return/result.js';\nimport {handleResult} from '../return/reject.js';\nimport {handleStdioSync} from '../stdio/handle-sync.js';\nimport {stripNewline} from '../io/strip-newline.js';\nimport {addInputOptionsSync} from '../io/input-sync.js';\nimport {transformOutputSync} from '../io/output-sync.js';\nimport {getMaxBufferSync} from '../io/max-buffer.js';\nimport {logEarlyResult} from '../verbose/complete.js';\nimport {getAllSync} from '../resolve/all-sync.js';\nimport {getExitResultSync} from '../resolve/exit-sync.js';\n\n// Main shared logic for all sync methods: `execaSync()`, `execaCommandSync()`, `$.sync()`\nexport const execaCoreSync = (rawFile, rawArguments, rawOptions) => {\n\tconst {file, commandArguments, command, escapedCommand, startTime, verboseInfo, options, fileDescriptors} = handleSyncArguments(rawFile, rawArguments, rawOptions);\n\tconst result = spawnSubprocessSync({\n\t\tfile,\n\t\tcommandArguments,\n\t\toptions,\n\t\tcommand,\n\t\tescapedCommand,\n\t\tverboseInfo,\n\t\tfileDescriptors,\n\t\tstartTime,\n\t});\n\treturn handleResult(result, verboseInfo, options);\n};\n\n// Compute arguments to pass to `child_process.spawnSync()`\nconst handleSyncArguments = (rawFile, rawArguments, rawOptions) => {\n\tconst {command, escapedCommand, startTime, verboseInfo} = handleCommand(rawFile, rawArguments, rawOptions);\n\n\ttry {\n\t\tconst syncOptions = normalizeSyncOptions(rawOptions);\n\t\tconst {file, commandArguments, options} = normalizeOptions(rawFile, rawArguments, syncOptions);\n\t\tvalidateSyncOptions(options);\n\t\tconst fileDescriptors = handleStdioSync(options, verboseInfo);\n\t\treturn {\n\t\t\tfile,\n\t\t\tcommandArguments,\n\t\t\tcommand,\n\t\t\tescapedCommand,\n\t\t\tstartTime,\n\t\t\tverboseInfo,\n\t\t\toptions,\n\t\t\tfileDescriptors,\n\t\t};\n\t} catch (error) {\n\t\tlogEarlyResult(error, startTime, verboseInfo);\n\t\tthrow error;\n\t}\n};\n\n// Options normalization logic specific to sync methods\nconst normalizeSyncOptions = options => options.node && !options.ipc ? {...options, ipc: false} : options;\n\n// Options validation logic specific to sync methods\nconst validateSyncOptions = ({ipc, detached, cancelSignal}) => {\n\tif (ipc) {\n\t\tthrowInvalidSyncOption('ipc: true');\n\t}\n\n\tif (detached) {\n\t\tthrowInvalidSyncOption('detached: true');\n\t}\n\n\tif (cancelSignal) {\n\t\tthrowInvalidSyncOption('cancelSignal');\n\t}\n};\n\nconst throwInvalidSyncOption = value => {\n\tthrow new TypeError(`The \"${value}\" option cannot be used with synchronous methods.`);\n};\n\nconst spawnSubprocessSync = ({file, commandArguments, options, command, escapedCommand, verboseInfo, fileDescriptors, startTime}) => {\n\tconst syncResult = runSubprocessSync({\n\t\tfile,\n\t\tcommandArguments,\n\t\toptions,\n\t\tcommand,\n\t\tescapedCommand,\n\t\tfileDescriptors,\n\t\tstartTime,\n\t});\n\tif (syncResult.failed) {\n\t\treturn syncResult;\n\t}\n\n\tconst {resultError, exitCode, signal, timedOut, isMaxBuffer} = getExitResultSync(syncResult, options);\n\tconst {output, error = resultError} = transformOutputSync({\n\t\tfileDescriptors,\n\t\tsyncResult,\n\t\toptions,\n\t\tisMaxBuffer,\n\t\tverboseInfo,\n\t});\n\tconst stdio = output.map((stdioOutput, fdNumber) => stripNewline(stdioOutput, options, fdNumber));\n\tconst all = stripNewline(getAllSync(output, options), options, 'all');\n\treturn getSyncResult({\n\t\terror,\n\t\texitCode,\n\t\tsignal,\n\t\ttimedOut,\n\t\tisMaxBuffer,\n\t\tstdio,\n\t\tall,\n\t\toptions,\n\t\tcommand,\n\t\tescapedCommand,\n\t\tstartTime,\n\t});\n};\n\nconst runSubprocessSync = ({file, commandArguments, options, command, escapedCommand, fileDescriptors, startTime}) => {\n\ttry {\n\t\taddInputOptionsSync(fileDescriptors, options);\n\t\tconst normalizedOptions = normalizeSpawnSyncOptions(options);\n\t\treturn spawnSync(file, commandArguments, normalizedOptions);\n\t} catch (error) {\n\t\treturn makeEarlyError({\n\t\t\terror,\n\t\t\tcommand,\n\t\t\tescapedCommand,\n\t\t\tfileDescriptors,\n\t\t\toptions,\n\t\t\tstartTime,\n\t\t\tisSync: true,\n\t\t});\n\t}\n};\n\n// The `encoding` option is handled by Execa, not by `child_process.spawnSync()`\nconst normalizeSpawnSyncOptions = ({encoding, maxBuffer, ...options}) => ({...options, encoding: 'buffer', maxBuffer: getMaxBufferSync(maxBuffer)});\n\nconst getSyncResult = ({error, exitCode, signal, timedOut, isMaxBuffer, stdio, all, options, command, escapedCommand, startTime}) => error === undefined\n\t? makeSuccessResult({\n\t\tcommand,\n\t\tescapedCommand,\n\t\tstdio,\n\t\tall,\n\t\toptions,\n\t\tstartTime,\n\t})\n\t: makeError({\n\t\terror,\n\t\tcommand,\n\t\tescapedCommand,\n\t\ttimedOut,\n\t\tisCanceled: false,\n\t\tisMaxBuffer,\n\t\texitCode,\n\t\tsignal,\n\t\tstdio,\n\t\tall,\n\t\toptions,\n\t\tstartTime,\n\t\tisSync: true,\n\t});\n", "import {logCommand} from '../verbose/start.js';\nimport {getVerboseInfo} from '../verbose/info.js';\nimport {getStartTime} from '../return/duration.js';\nimport {joinCommand} from './escape.js';\nimport {normalizeFdSpecificOption} from './specific.js';\n\n// Compute `result.command`, `result.escapedCommand` and `verbose`-related information\nexport const handleCommand = (filePath, rawArguments, rawOptions) => {\n\tconst startTime = getStartTime();\n\tconst {command, escapedCommand} = joinCommand(filePath, rawArguments);\n\tconst verboseInfo = getVerboseInfo(normalizeFdSpecificOption(rawOptions, 'verbose'));\n\tlogCommand(escapedCommand, verboseInfo, rawOptions);\n\treturn {\n\t\tcommand,\n\t\tescapedCommand,\n\t\tstartTime,\n\t\tverboseInfo,\n\t};\n};\n", "import {bold} from 'yoctocolors';\nimport {isVerbose} from './info.js';\nimport {verboseLog} from './log.js';\n\n// When `verbose` is `short|full`, print each command\nexport const logCommand = (escapedCommand, {verbose, verboseId}, {piped = false}) => {\n\tif (!isVerbose(verbose)) {\n\t\treturn;\n\t}\n\n\tconst icon = piped ? 'pipedCommand' : 'command';\n\tverboseLog(escapedCommand, verboseId, icon, bold);\n};\n", "import tty from 'node:tty';\n\n// eslint-disable-next-line no-warning-comments\n// TODO: Use a better method when it's added to Node.js (https://github.com/nodejs/node/pull/40240)\nconst hasColors = tty.WriteStream.prototype.hasColors();\n\nconst format = (open, close) => {\n\tif (!hasColors) {\n\t\treturn input => input;\n\t}\n\n\tconst openCode = `\\u001B[${open}m`;\n\tconst closeCode = `\\u001B[${close}m`;\n\n\treturn input => {\n\t\tconst string = input + ''; // eslint-disable-line no-implicit-coercion -- This is faster.\n\t\tlet index = string.indexOf(closeCode);\n\n\t\tif (index === -1) {\n\t\t\t// Note: Intentionally not using string interpolation for performance reasons.\n\t\t\treturn openCode + string + closeCode;\n\t\t}\n\n\t\t// Handle nested colors.\n\n\t\t// We could have done this, but it's too slow (as of Node.js 22).\n\t\t// return openCode + string.replaceAll(closeCode, openCode) + closeCode;\n\n\t\tlet result = openCode;\n\t\tlet lastIndex = 0;\n\n\t\twhile (index !== -1) {\n\t\t\tresult += string.slice(lastIndex, index) + openCode;\n\t\t\tlastIndex = index + closeCode.length;\n\t\t\tindex = string.indexOf(closeCode, lastIndex);\n\t\t}\n\n\t\tresult += string.slice(lastIndex) + closeCode;\n\n\t\treturn result;\n\t};\n};\n\nexport const reset = format(0, 0);\nexport const bold = format(1, 22);\nexport const dim = format(2, 22);\nexport const italic = format(3, 23);\nexport const underline = format(4, 24);\nexport const overline = format(53, 55);\nexport const inverse = format(7, 27);\nexport const hidden = format(8, 28);\nexport const strikethrough = format(9, 29);\n\nexport const black = format(30, 39);\nexport const red = format(31, 39);\nexport const green = format(32, 39);\nexport const yellow = format(33, 39);\nexport const blue = format(34, 39);\nexport const magenta = format(35, 39);\nexport const cyan = format(36, 39);\nexport const white = format(37, 39);\nexport const gray = format(90, 39);\n\nexport const bgBlack = format(40, 49);\nexport const bgRed = format(41, 49);\nexport const bgGreen = format(42, 49);\nexport const bgYellow = format(43, 49);\nexport const bgBlue = format(44, 49);\nexport const bgMagenta = format(45, 49);\nexport const bgCyan = format(46, 49);\nexport const bgWhite = format(47, 49);\nexport const bgGray = format(100, 49);\n\nexport const redBright = format(91, 39);\nexport const greenBright = format(92, 39);\nexport const yellowBright = format(93, 39);\nexport const blueBright = format(94, 39);\nexport const magentaBright = format(95, 39);\nexport const cyanBright = format(96, 39);\nexport const whiteBright = format(97, 39);\n\nexport const bgRedBright = format(101, 49);\nexport const bgGreenBright = format(102, 49);\nexport const bgYellowBright = format(103, 49);\nexport const bgBlueBright = format(104, 49);\nexport const bgMagentaBright = format(105, 49);\nexport const bgCyanBright = format(106, 49);\nexport const bgWhiteBright = format(107, 49);\n", "import {debuglog} from 'node:util';\n\n// Default value for the `verbose` option\nexport const verboseDefault = debuglog('execa').enabled ? 'full' : 'none';\n\n// Information computed before spawning, used by the `verbose` option\nexport const getVerboseInfo = verbose => {\n\tconst verboseId = isVerbose(verbose) ? VERBOSE_ID++ : undefined;\n\tvalidateVerbose(verbose);\n\treturn {verbose, verboseId};\n};\n\n// Prepending the `pid` is useful when multiple commands print their output at the same time.\n// However, we cannot use the real PID since this is not available with `child_process.spawnSync()`.\n// Also, we cannot use the real PID if we want to print it before `child_process.spawn()` is run.\n// As a pro, it is shorter than a normal PID and never re-uses the same id.\n// As a con, it cannot be used to send signals.\nlet VERBOSE_ID = 0n;\n\n// The `verbose` option can have different values for `stdout`/`stderr`\nexport const isVerbose = verbose => verbose.some(fdVerbose => fdVerbose !== 'none');\n\nconst validateVerbose = verbose => {\n\tfor (const verboseItem of verbose) {\n\t\tif (verboseItem === false) {\n\t\t\tthrow new TypeError('The \"verbose: false\" option was renamed to \"verbose: \\'none\\'\".');\n\t\t}\n\n\t\tif (verboseItem === true) {\n\t\t\tthrow new TypeError('The \"verbose: true\" option was renamed to \"verbose: \\'short\\'\".');\n\t\t}\n\n\t\tif (!VERBOSE_VALUES.has(verboseItem)) {\n\t\t\tconst allowedValues = [...VERBOSE_VALUES].map(allowedValue => `'${allowedValue}'`).join(', ');\n\t\t\tthrow new TypeError(`The \"verbose\" option must not be ${verboseItem}. Allowed values are: ${allowedValues}.`);\n\t\t}\n\t}\n};\n\nconst VERBOSE_VALUES = new Set(['none', 'short', 'full']);\n", "import {writeFileSync} from 'node:fs';\nimport figures from 'figures';\nimport {gray} from 'yoctocolors';\n\n// Write synchronously to ensure lines are properly ordered and not interleaved with `stdout`\nexport const verboseLog = (string, verboseId, icon, color) => {\n\tconst prefixedLines = addPrefix(string, verboseId, icon, color);\n\twriteFileSync(STDERR_FD, `${prefixedLines}\\n`);\n};\n\nconst STDERR_FD = 2;\n\nconst addPrefix = (string, verboseId, icon, color) => string.includes('\\n')\n\t? string\n\t\t.split('\\n')\n\t\t.map(line => addPrefixToLine(line, verboseId, icon, color))\n\t\t.join('\\n')\n\t: addPrefixToLine(string, verboseId, icon, color);\n\nconst addPrefixToLine = (line, verboseId, icon, color = identity) => [\n\tgray(`[${getTimestamp()}]`),\n\tgray(`[${verboseId}]`),\n\tcolor(ICONS[icon]),\n\tcolor(line),\n].join(' ');\n\nconst identity = string => string;\n\n// Prepending the timestamp allows debugging the slow paths of a subprocess\nconst getTimestamp = () => {\n\tconst date = new Date();\n\treturn `${padField(date.getHours(), 2)}:${padField(date.getMinutes(), 2)}:${padField(date.getSeconds(), 2)}.${padField(date.getMilliseconds(), 3)}`;\n};\n\nconst padField = (field, padding) => String(field).padStart(padding, '0');\n\nconst ICONS = {\n\tcommand: '$',\n\tpipedCommand: '|',\n\toutput: ' ',\n\terror: figures.cross,\n\twarning: figures.warning,\n\tsuccess: figures.tick,\n};\n", "import isUnicodeSupported from 'is-unicode-supported';\n\nconst common = {\n\tcircleQuestionMark: '(?)',\n\tquestionMarkPrefix: '(?)',\n\tsquare: '\u2588',\n\tsquareDarkShade: '\u2593',\n\tsquareMediumShade: '\u2592',\n\tsquareLightShade: '\u2591',\n\tsquareTop: '\u2580',\n\tsquareBottom: '\u2584',\n\tsquareLeft: '\u258C',\n\tsquareRight: '\u2590',\n\tsquareCenter: '\u25A0',\n\tbullet: '\u25CF',\n\tdot: '\u2024',\n\tellipsis: '\u2026',\n\tpointerSmall: '\u203A',\n\ttriangleUp: '\u25B2',\n\ttriangleUpSmall: '\u25B4',\n\ttriangleDown: '\u25BC',\n\ttriangleDownSmall: '\u25BE',\n\ttriangleLeftSmall: '\u25C2',\n\ttriangleRightSmall: '\u25B8',\n\thome: '\u2302',\n\theart: '\u2665',\n\tmusicNote: '\u266A',\n\tmusicNoteBeamed: '\u266B',\n\tarrowUp: '\u2191',\n\tarrowDown: '\u2193',\n\tarrowLeft: '\u2190',\n\tarrowRight: '\u2192',\n\tarrowLeftRight: '\u2194',\n\tarrowUpDown: '\u2195',\n\talmostEqual: '\u2248',\n\tnotEqual: '\u2260',\n\tlessOrEqual: '\u2264',\n\tgreaterOrEqual: '\u2265',\n\tidentical: '\u2261',\n\tinfinity: '\u221E',\n\tsubscriptZero: '\u2080',\n\tsubscriptOne: '\u2081',\n\tsubscriptTwo: '\u2082',\n\tsubscriptThree: '\u2083',\n\tsubscriptFour: '\u2084',\n\tsubscriptFive: '\u2085',\n\tsubscriptSix: '\u2086',\n\tsubscriptSeven: '\u2087',\n\tsubscriptEight: '\u2088',\n\tsubscriptNine: '\u2089',\n\toneHalf: '\u00BD',\n\toneThird: '\u2153',\n\toneQuarter: '\u00BC',\n\toneFifth: '\u2155',\n\toneSixth: '\u2159',\n\toneEighth: '\u215B',\n\ttwoThirds: '\u2154',\n\ttwoFifths: '\u2156',\n\tthreeQuarters: '\u00BE',\n\tthreeFifths: '\u2157',\n\tthreeEighths: '\u215C',\n\tfourFifths: '\u2158',\n\tfiveSixths: '\u215A',\n\tfiveEighths: '\u215D',\n\tsevenEighths: '\u215E',\n\tline: '\u2500',\n\tlineBold: '\u2501',\n\tlineDouble: '\u2550',\n\tlineDashed0: '\u2504',\n\tlineDashed1: '\u2505',\n\tlineDashed2: '\u2508',\n\tlineDashed3: '\u2509',\n\tlineDashed4: '\u254C',\n\tlineDashed5: '\u254D',\n\tlineDashed6: '\u2574',\n\tlineDashed7: '\u2576',\n\tlineDashed8: '\u2578',\n\tlineDashed9: '\u257A',\n\tlineDashed10: '\u257C',\n\tlineDashed11: '\u257E',\n\tlineDashed12: '\u2212',\n\tlineDashed13: '\u2013',\n\tlineDashed14: '\u2010',\n\tlineDashed15: '\u2043',\n\tlineVertical: '\u2502',\n\tlineVerticalBold: '\u2503',\n\tlineVerticalDouble: '\u2551',\n\tlineVerticalDashed0: '\u2506',\n\tlineVerticalDashed1: '\u2507',\n\tlineVerticalDashed2: '\u250A',\n\tlineVerticalDashed3: '\u250B',\n\tlineVerticalDashed4: '\u254E',\n\tlineVerticalDashed5: '\u254F',\n\tlineVerticalDashed6: '\u2575',\n\tlineVerticalDashed7: '\u2577',\n\tlineVerticalDashed8: '\u2579',\n\tlineVerticalDashed9: '\u257B',\n\tlineVerticalDashed10: '\u257D',\n\tlineVerticalDashed11: '\u257F',\n\tlineDownLeft: '\u2510',\n\tlineDownLeftArc: '\u256E',\n\tlineDownBoldLeftBold: '\u2513',\n\tlineDownBoldLeft: '\u2512',\n\tlineDownLeftBold: '\u2511',\n\tlineDownDoubleLeftDouble: '\u2557',\n\tlineDownDoubleLeft: '\u2556',\n\tlineDownLeftDouble: '\u2555',\n\tlineDownRight: '\u250C',\n\tlineDownRightArc: '\u256D',\n\tlineDownBoldRightBold: '\u250F',\n\tlineDownBoldRight: '\u250E',\n\tlineDownRightBold: '\u250D',\n\tlineDownDoubleRightDouble: '\u2554',\n\tlineDownDoubleRight: '\u2553',\n\tlineDownRightDouble: '\u2552',\n\tlineUpLeft: '\u2518',\n\tlineUpLeftArc: '\u256F',\n\tlineUpBoldLeftBold: '\u251B',\n\tlineUpBoldLeft: '\u251A',\n\tlineUpLeftBold: '\u2519',\n\tlineUpDoubleLeftDouble: '\u255D',\n\tlineUpDoubleLeft: '\u255C',\n\tlineUpLeftDouble: '\u255B',\n\tlineUpRight: '\u2514',\n\tlineUpRightArc: '\u2570',\n\tlineUpBoldRightBold: '\u2517',\n\tlineUpBoldRight: '\u2516',\n\tlineUpRightBold: '\u2515',\n\tlineUpDoubleRightDouble: '\u255A',\n\tlineUpDoubleRight: '\u2559',\n\tlineUpRightDouble: '\u2558',\n\tlineUpDownLeft: '\u2524',\n\tlineUpBoldDownBoldLeftBold: '\u252B',\n\tlineUpBoldDownBoldLeft: '\u2528',\n\tlineUpDownLeftBold: '\u2525',\n\tlineUpBoldDownLeftBold: '\u2529',\n\tlineUpDownBoldLeftBold: '\u252A',\n\tlineUpDownBoldLeft: '\u2527',\n\tlineUpBoldDownLeft: '\u2526',\n\tlineUpDoubleDownDoubleLeftDouble: '\u2563',\n\tlineUpDoubleDownDoubleLeft: '\u2562',\n\tlineUpDownLeftDouble: '\u2561',\n\tlineUpDownRight: '\u251C',\n\tlineUpBoldDownBoldRightBold: '\u2523',\n\tlineUpBoldDownBoldRight: '\u2520',\n\tlineUpDownRightBold: '\u251D',\n\tlineUpBoldDownRightBold: '\u2521',\n\tlineUpDownBoldRightBold: '\u2522',\n\tlineUpDownBoldRight: '\u251F',\n\tlineUpBoldDownRight: '\u251E',\n\tlineUpDoubleDownDoubleRightDouble: '\u2560',\n\tlineUpDoubleDownDoubleRight: '\u255F',\n\tlineUpDownRightDouble: '\u255E',\n\tlineDownLeftRight: '\u252C',\n\tlineDownBoldLeftBoldRightBold: '\u2533',\n\tlineDownLeftBoldRightBold: '\u252F',\n\tlineDownBoldLeftRight: '\u2530',\n\tlineDownBoldLeftBoldRight: '\u2531',\n\tlineDownBoldLeftRightBold: '\u2532',\n\tlineDownLeftRightBold: '\u252E',\n\tlineDownLeftBoldRight: '\u252D',\n\tlineDownDoubleLeftDoubleRightDouble: '\u2566',\n\tlineDownDoubleLeftRight: '\u2565',\n\tlineDownLeftDoubleRightDouble: '\u2564',\n\tlineUpLeftRight: '\u2534',\n\tlineUpBoldLeftBoldRightBold: '\u253B',\n\tlineUpLeftBoldRightBold: '\u2537',\n\tlineUpBoldLeftRight: '\u2538',\n\tlineUpBoldLeftBoldRight: '\u2539',\n\tlineUpBoldLeftRightBold: '\u253A',\n\tlineUpLeftRightBold: '\u2536',\n\tlineUpLeftBoldRight: '\u2535',\n\tlineUpDoubleLeftDoubleRightDouble: '\u2569',\n\tlineUpDoubleLeftRight: '\u2568',\n\tlineUpLeftDoubleRightDouble: '\u2567',\n\tlineUpDownLeftRight: '\u253C',\n\tlineUpBoldDownBoldLeftBoldRightBold: '\u254B',\n\tlineUpDownBoldLeftBoldRightBold: '\u2548',\n\tlineUpBoldDownLeftBoldRightBold: '\u2547',\n\tlineUpBoldDownBoldLeftRightBold: '\u254A',\n\tlineUpBoldDownBoldLeftBoldRight: '\u2549',\n\tlineUpBoldDownLeftRight: '\u2540',\n\tlineUpDownBoldLeftRight: '\u2541',\n\tlineUpDownLeftBoldRight: '\u253D',\n\tlineUpDownLeftRightBold: '\u253E',\n\tlineUpBoldDownBoldLeftRight: '\u2542',\n\tlineUpDownLeftBoldRightBold: '\u253F',\n\tlineUpBoldDownLeftBoldRight: '\u2543',\n\tlineUpBoldDownLeftRightBold: '\u2544',\n\tlineUpDownBoldLeftBoldRight: '\u2545',\n\tlineUpDownBoldLeftRightBold: '\u2546',\n\tlineUpDoubleDownDoubleLeftDoubleRightDouble: '\u256C',\n\tlineUpDoubleDownDoubleLeftRight: '\u256B',\n\tlineUpDownLeftDoubleRightDouble: '\u256A',\n\tlineCross: '\u2573',\n\tlineBackslash: '\u2572',\n\tlineSlash: '\u2571',\n};\n\nconst specialMainSymbols = {\n\ttick: '\u2714',\n\tinfo: '\u2139',\n\twarning: '\u26A0',\n\tcross: '\u2718',\n\tsquareSmall: '\u25FB',\n\tsquareSmallFilled: '\u25FC',\n\tcircle: '\u25EF',\n\tcircleFilled: '\u25C9',\n\tcircleDotted: '\u25CC',\n\tcircleDouble: '\u25CE',\n\tcircleCircle: '\u24DE',\n\tcircleCross: '\u24E7',\n\tcirclePipe: '\u24BE',\n\tradioOn: '\u25C9',\n\tradioOff: '\u25EF',\n\tcheckboxOn: '\u2612',\n\tcheckboxOff: '\u2610',\n\tcheckboxCircleOn: '\u24E7',\n\tcheckboxCircleOff: '\u24BE',\n\tpointer: '\u276F',\n\ttriangleUpOutline: '\u25B3',\n\ttriangleLeft: '\u25C0',\n\ttriangleRight: '\u25B6',\n\tlozenge: '\u25C6',\n\tlozengeOutline: '\u25C7',\n\thamburger: '\u2630',\n\tsmiley: '\u32E1',\n\tmustache: '\u0DF4',\n\tstar: '\u2605',\n\tplay: '\u25B6',\n\tnodejs: '\u2B22',\n\toneSeventh: '\u2150',\n\toneNinth: '\u2151',\n\toneTenth: '\u2152',\n};\n\nconst specialFallbackSymbols = {\n\ttick: '\u221A',\n\tinfo: 'i',\n\twarning: '\u203C',\n\tcross: '\u00D7',\n\tsquareSmall: '\u25A1',\n\tsquareSmallFilled: '\u25A0',\n\tcircle: '( )',\n\tcircleFilled: '(*)',\n\tcircleDotted: '( )',\n\tcircleDouble: '( )',\n\tcircleCircle: '(\u25CB)',\n\tcircleCross: '(\u00D7)',\n\tcirclePipe: '(\u2502)',\n\tradioOn: '(*)',\n\tradioOff: '( )',\n\tcheckboxOn: '[\u00D7]',\n\tcheckboxOff: '[ ]',\n\tcheckboxCircleOn: '(\u00D7)',\n\tcheckboxCircleOff: '( )',\n\tpointer: '>',\n\ttriangleUpOutline: '\u2206',\n\ttriangleLeft: '\u25C4',\n\ttriangleRight: '\u25BA',\n\tlozenge: '\u2666',\n\tlozengeOutline: '\u25CA',\n\thamburger: '\u2261',\n\tsmiley: '\u263A',\n\tmustache: '\u250C\u2500\u2510',\n\tstar: '\u2736',\n\tplay: '\u25BA',\n\tnodejs: '\u2666',\n\toneSeventh: '1/7',\n\toneNinth: '1/9',\n\toneTenth: '1/10',\n};\n\nexport const mainSymbols = {...common, ...specialMainSymbols};\nexport const fallbackSymbols = {...common, ...specialFallbackSymbols};\n\nconst shouldUseMain = isUnicodeSupported();\nconst figures = shouldUseMain ? mainSymbols : fallbackSymbols;\nexport default figures;\n\nconst replacements = Object.entries(specialMainSymbols);\n\n// On terminals which do not support Unicode symbols, substitute them to other symbols\nexport const replaceSymbols = (string, {useFallback = !shouldUseMain} = {}) => {\n\tif (useFallback) {\n\t\tfor (const [key, mainSymbol] of replacements) {\n\t\t\tstring = string.replaceAll(mainSymbol, fallbackSymbols[key]);\n\t\t}\n\t}\n\n\treturn string;\n};\n", "import process from 'node:process';\n\nexport default function isUnicodeSupported() {\n\tif (process.platform !== 'win32') {\n\t\treturn process.env.TERM !== 'linux'; // Linux console (kernel)\n\t}\n\n\treturn Boolean(process.env.WT_SESSION) // Windows Terminal\n\t\t|| Boolean(process.env.TERMINUS_SUBLIME) // Terminus (<0.2.27)\n\t\t|| process.env.ConEmuTask === '{cmd::Cmder}' // ConEmu and cmder\n\t\t|| process.env.TERM_PROGRAM === 'Terminus-Sublime'\n\t\t|| process.env.TERM_PROGRAM === 'vscode'\n\t\t|| process.env.TERM === 'xterm-256color'\n\t\t|| process.env.TERM === 'alacritty'\n\t\t|| process.env.TERMINAL_EMULATOR === 'JetBrains-JediTerm';\n}\n", "import {hrtime} from 'node:process';\n\n// Start counting time before spawning the subprocess\nexport const getStartTime = () => hrtime.bigint();\n\n// Compute duration after the subprocess ended.\n// Printed by the `verbose` option.\nexport const getDurationMs = startTime => Number(hrtime.bigint() - startTime) / 1e6;\n", "import {platform} from 'node:process';\nimport {stripVTControlCharacters} from 'node:util';\n\n// Compute `result.command` and `result.escapedCommand`\nexport const joinCommand = (filePath, rawArguments) => {\n\tconst fileAndArguments = [filePath, ...rawArguments];\n\tconst command = fileAndArguments.join(' ');\n\tconst escapedCommand = fileAndArguments\n\t\t.map(fileAndArgument => quoteString(escapeControlCharacters(fileAndArgument)))\n\t\t.join(' ');\n\treturn {command, escapedCommand};\n};\n\n// Remove ANSI sequences and escape control characters and newlines\nexport const escapeLines = lines => stripVTControlCharacters(lines)\n\t.split('\\n')\n\t.map(line => escapeControlCharacters(line))\n\t.join('\\n');\n\nconst escapeControlCharacters = line => line.replaceAll(SPECIAL_CHAR_REGEXP, character => escapeControlCharacter(character));\n\nconst escapeControlCharacter = character => {\n\tconst commonEscape = COMMON_ESCAPES[character];\n\tif (commonEscape !== undefined) {\n\t\treturn commonEscape;\n\t}\n\n\tconst codepoint = character.codePointAt(0);\n\tconst codepointHex = codepoint.toString(16);\n\treturn codepoint <= ASTRAL_START\n\t\t? `\\\\u${codepointHex.padStart(4, '0')}`\n\t\t: `\\\\U${codepointHex}`;\n};\n\n// Characters that would create issues when printed are escaped using the \\u or \\U notation.\n// Those include control characters and newlines.\n// The \\u and \\U notation is Bash specific, but there is no way to do this in a shell-agnostic way.\n// Some shells do not even have a way to print those characters in an escaped fashion.\n// Therefore, we prioritize printing those safely, instead of allowing those to be copy-pasted.\n// List of Unicode character categories: https://www.fileformat.info/info/unicode/category/index.htm\nconst SPECIAL_CHAR_REGEXP = /\\p{Separator}|\\p{Other}/gu;\n\n// Accepted by $'...' in Bash.\n// Exclude \\a \\e \\v which are accepted in Bash but not in JavaScript (except \\v) and JSON.\nconst COMMON_ESCAPES = {\n\t' ': ' ',\n\t'\\b': '\\\\b',\n\t'\\f': '\\\\f',\n\t'\\n': '\\\\n',\n\t'\\r': '\\\\r',\n\t'\\t': '\\\\t',\n};\n\n// Up until that codepoint, \\u notation can be used instead of \\U\nconst ASTRAL_START = 65_535;\n\n// Some characters are shell-specific, i.e. need to be escaped when the command is copy-pasted then run.\n// Escaping is shell-specific. We cannot know which shell is used: `process.platform` detection is not enough.\n// For example, Windows users could be using `cmd.exe`, Powershell or Bash for Windows which all use different escaping.\n// We use '...' on Unix, which is POSIX shell compliant and escape all characters but ' so this is fairly safe.\n// On Windows, we assume cmd.exe is used and escape with \"...\", which also works with Powershell.\nconst quoteString = escapedArgument => {\n\tif (NO_ESCAPE_REGEXP.test(escapedArgument)) {\n\t\treturn escapedArgument;\n\t}\n\n\treturn platform === 'win32'\n\t\t? `\"${escapedArgument.replaceAll('\"', '\"\"')}\"`\n\t\t: `'${escapedArgument.replaceAll('\\'', '\\'\\\\\\'\\'')}'`;\n};\n\nconst NO_ESCAPE_REGEXP = /^[\\w./-]+$/;\n", "import isPlainObject from 'is-plain-obj';\nimport {STANDARD_STREAMS_ALIASES} from '../utils/standard-stream.js';\nimport {verboseDefault} from '../verbose/info.js';\n\n// Some options can have different values for `stdout`/`stderr`/`fd3`.\n// This normalizes those to array of values.\n// For example, `{verbose: {stdout: 'none', stderr: 'full'}}` becomes `{verbose: ['none', 'none', 'full']}`\nexport const normalizeFdSpecificOptions = options => {\n\tconst optionsCopy = {...options};\n\n\tfor (const optionName of FD_SPECIFIC_OPTIONS) {\n\t\toptionsCopy[optionName] = normalizeFdSpecificOption(options, optionName);\n\t}\n\n\treturn optionsCopy;\n};\n\nexport const normalizeFdSpecificOption = (options, optionName) => {\n\tconst optionBaseArray = Array.from({length: getStdioLength(options)});\n\tconst optionArray = normalizeFdSpecificValue(options[optionName], optionBaseArray, optionName);\n\treturn addDefaultValue(optionArray, optionName);\n};\n\nconst getStdioLength = ({stdio}) => Array.isArray(stdio)\n\t? Math.max(stdio.length, STANDARD_STREAMS_ALIASES.length)\n\t: STANDARD_STREAMS_ALIASES.length;\n\nconst normalizeFdSpecificValue = (optionValue, optionArray, optionName) => isPlainObject(optionValue)\n\t? normalizeOptionObject(optionValue, optionArray, optionName)\n\t: optionArray.fill(optionValue);\n\nconst normalizeOptionObject = (optionValue, optionArray, optionName) => {\n\tfor (const fdName of Object.keys(optionValue).sort(compareFdName)) {\n\t\tfor (const fdNumber of parseFdName(fdName, optionName, optionArray)) {\n\t\t\toptionArray[fdNumber] = optionValue[fdName];\n\t\t}\n\t}\n\n\treturn optionArray;\n};\n\n// Ensure priority order when setting both `stdout`/`stderr`, `fd1`/`fd2`, and `all`\nconst compareFdName = (fdNameA, fdNameB) => getFdNameOrder(fdNameA) < getFdNameOrder(fdNameB) ? 1 : -1;\n\nconst getFdNameOrder = fdName => {\n\tif (fdName === 'stdout' || fdName === 'stderr') {\n\t\treturn 0;\n\t}\n\n\treturn fdName === 'all' ? 2 : 1;\n};\n\nconst parseFdName = (fdName, optionName, optionArray) => {\n\tconst fdNumber = parseFd(fdName);\n\tif (fdNumber === undefined || fdNumber === 0) {\n\t\tthrow new TypeError(`\"${optionName}.${fdName}\" is invalid.\nIt must be \"${optionName}.stdout\", \"${optionName}.stderr\", \"${optionName}.all\", or \"${optionName}.fd3\", \"${optionName}.fd4\" (and so on).`);\n\t}\n\n\tif (fdNumber >= optionArray.length) {\n\t\tthrow new TypeError(`\"${optionName}.${fdName}\" is invalid: that file descriptor does not exist.\nPlease set the \"stdio\" option to ensure that file descriptor exists.`);\n\t}\n\n\treturn fdNumber === 'all' ? [1, 2] : [fdNumber];\n};\n\n// Use the same syntax for fd-specific options and the `from`/`to` options\nexport const parseFd = fdName => {\n\tif (fdName === 'all') {\n\t\treturn fdName;\n\t}\n\n\tif (STANDARD_STREAMS_ALIASES.includes(fdName)) {\n\t\treturn STANDARD_STREAMS_ALIASES.indexOf(fdName);\n\t}\n\n\tconst regexpResult = FD_REGEXP.exec(fdName);\n\tif (regexpResult !== null) {\n\t\treturn Number(regexpResult[1]);\n\t}\n};\n\nconst FD_REGEXP = /^fd(\\d+)$/;\n\nconst addDefaultValue = (optionArray, optionName) => optionArray.map(optionValue => optionValue === undefined\n\t? DEFAULT_OPTIONS[optionName]\n\t: optionValue);\n\nconst DEFAULT_OPTIONS = {\n\tlines: false,\n\tbuffer: true,\n\tmaxBuffer: 1000 * 1000 * 100,\n\tverbose: verboseDefault,\n\tstripFinalNewline: true,\n};\n\n// List of options which can have different values for `stdout`/`stderr`\nexport const FD_SPECIFIC_OPTIONS = ['lines', 'buffer', 'maxBuffer', 'verbose', 'stripFinalNewline'];\n", "import process from 'node:process';\n\nexport const isStandardStream = stream => STANDARD_STREAMS.includes(stream);\nexport const STANDARD_STREAMS = [process.stdin, process.stdout, process.stderr];\nexport const STANDARD_STREAMS_ALIASES = ['stdin', 'stdout', 'stderr'];\nexport const getStreamName = fdNumber => STANDARD_STREAMS_ALIASES[fdNumber] ?? `stdio[${fdNumber}]`;\n", "import {basename} from 'node:path';\nimport process from 'node:process';\nimport crossSpawn from 'cross-spawn';\nimport {npmRunPathEnv} from 'npm-run-path';\nimport {normalizeForceKillAfterDelay} from '../terminate/kill.js';\nimport {normalizeKillSignal} from '../terminate/signal.js';\nimport {validateTimeout} from '../terminate/timeout.js';\nimport {handleNodeOption} from '../methods/node.js';\nimport {validateEncoding, BINARY_ENCODINGS} from './encoding-option.js';\nimport {normalizeCwd} from './cwd.js';\nimport {normalizeFileUrl} from './file-url.js';\nimport {normalizeFdSpecificOptions} from './specific.js';\n\n// Normalize the options object, and sometimes also the file paths and arguments.\n// Applies default values, validate allowed options, normalize them.\nexport const normalizeOptions = (filePath, rawArguments, rawOptions) => {\n\trawOptions.cwd = normalizeCwd(rawOptions.cwd);\n\tconst [processedFile, processedArguments, processedOptions] = handleNodeOption(filePath, rawArguments, rawOptions);\n\n\tconst {command: file, args: commandArguments, options: initialOptions} = crossSpawn._parse(processedFile, processedArguments, processedOptions);\n\n\tconst fdOptions = normalizeFdSpecificOptions(initialOptions);\n\tconst options = addDefaultOptions(fdOptions);\n\tvalidateTimeout(options);\n\tvalidateEncoding(options);\n\toptions.shell = normalizeFileUrl(options.shell);\n\toptions.env = getEnv(options);\n\toptions.killSignal = normalizeKillSignal(options.killSignal);\n\toptions.forceKillAfterDelay = normalizeForceKillAfterDelay(options.forceKillAfterDelay);\n\toptions.lines = options.lines.map((lines, fdNumber) => lines && !BINARY_ENCODINGS.has(options.encoding) && options.buffer[fdNumber]);\n\n\tif (process.platform === 'win32' && basename(file, '.exe') === 'cmd') {\n\t\t// #116\n\t\tcommandArguments.unshift('/q');\n\t}\n\n\treturn {file, commandArguments, options};\n};\n\nconst addDefaultOptions = ({\n\textendEnv = true,\n\tpreferLocal = false,\n\tcwd,\n\tlocalDir: localDirectory = cwd,\n\tencoding = 'utf8',\n\treject = true,\n\tcleanup = true,\n\tall = false,\n\twindowsHide = true,\n\tkillSignal = 'SIGTERM',\n\tforceKillAfterDelay = true,\n\tipc = false,\n\tserialization = 'advanced',\n\t...options\n}) => ({\n\t...options,\n\textendEnv,\n\tpreferLocal,\n\tcwd,\n\tlocalDirectory,\n\tencoding,\n\treject,\n\tcleanup,\n\tall,\n\twindowsHide,\n\tkillSignal,\n\tforceKillAfterDelay,\n\tipc,\n\tserialization,\n});\n\nconst getEnv = ({env: envOption, extendEnv, preferLocal, node, localDirectory, nodePath}) => {\n\tconst env = extendEnv ? {...process.env, ...envOption} : envOption;\n\n\tif (preferLocal || node) {\n\t\treturn npmRunPathEnv({\n\t\t\tenv,\n\t\t\tcwd: localDirectory,\n\t\t\texecPath: nodePath,\n\t\t\tpreferLocal,\n\t\t\taddExecPath: node,\n\t\t});\n\t}\n\n\treturn env;\n};\n", "import process from 'node:process';\nimport path from 'node:path';\nimport {fileURLToPath} from 'node:url';\nimport pathKey from 'path-key';\n\nexport const npmRunPath = ({\n\tcwd = process.cwd(),\n\tpath: pathOption = process.env[pathKey()],\n\tpreferLocal = true,\n\texecPath = process.execPath,\n\taddExecPath = true,\n} = {}) => {\n\tconst cwdString = cwd instanceof URL ? fileURLToPath(cwd) : cwd;\n\tconst cwdPath = path.resolve(cwdString);\n\tconst result = [];\n\n\tif (preferLocal) {\n\t\tapplyPreferLocal(result, cwdPath);\n\t}\n\n\tif (addExecPath) {\n\t\tapplyExecPath(result, execPath, cwdPath);\n\t}\n\n\treturn [...result, pathOption].join(path.delimiter);\n};\n\nconst applyPreferLocal = (result, cwdPath) => {\n\tlet previous;\n\n\twhile (previous !== cwdPath) {\n\t\tresult.push(path.join(cwdPath, 'node_modules/.bin'));\n\t\tprevious = cwdPath;\n\t\tcwdPath = path.resolve(cwdPath, '..');\n\t}\n};\n\n// Ensure the running `node` binary is used\nconst applyExecPath = (result, execPath, cwdPath) => {\n\tconst execPathString = execPath instanceof URL ? fileURLToPath(execPath) : execPath;\n\tresult.push(path.resolve(cwdPath, execPathString, '..'));\n};\n\nexport const npmRunPathEnv = ({env = process.env, ...options} = {}) => {\n\tenv = {...env};\n\n\tconst pathName = pathKey({env});\n\toptions.path = env[pathName];\n\tenv[pathName] = npmRunPath(options);\n\n\treturn env;\n};\n", "export default function pathKey(options = {}) {\n\tconst {\n\t\tenv = process.env,\n\t\tplatform = process.platform\n\t} = options;\n\n\tif (platform !== 'win32') {\n\t\treturn 'PATH';\n\t}\n\n\treturn Object.keys(env).reverse().find(key => key.toUpperCase() === 'PATH') || 'Path';\n}\n", "import {setTimeout} from 'node:timers/promises';\nimport {isErrorInstance} from '../return/final-error.js';\nimport {normalizeSignalArgument} from './signal.js';\n\n// Normalize the `forceKillAfterDelay` option\nexport const normalizeForceKillAfterDelay = forceKillAfterDelay => {\n\tif (forceKillAfterDelay === false) {\n\t\treturn forceKillAfterDelay;\n\t}\n\n\tif (forceKillAfterDelay === true) {\n\t\treturn DEFAULT_FORCE_KILL_TIMEOUT;\n\t}\n\n\tif (!Number.isFinite(forceKillAfterDelay) || forceKillAfterDelay < 0) {\n\t\tthrow new TypeError(`Expected the \\`forceKillAfterDelay\\` option to be a non-negative integer, got \\`${forceKillAfterDelay}\\` (${typeof forceKillAfterDelay})`);\n\t}\n\n\treturn forceKillAfterDelay;\n};\n\nconst DEFAULT_FORCE_KILL_TIMEOUT = 1000 * 5;\n\n// Monkey-patches `subprocess.kill()` to add `forceKillAfterDelay` behavior and `.kill(error)`\nexport const subprocessKill = (\n\t{kill, options: {forceKillAfterDelay, killSignal}, onInternalError, controller},\n\tsignalOrError,\n\terrorArgument,\n) => {\n\tconst {signal, error} = parseKillArguments(signalOrError, errorArgument, killSignal);\n\temitKillError(error, onInternalError);\n\tconst killResult = kill(signal);\n\tsetKillTimeout({\n\t\tkill,\n\t\tsignal,\n\t\tforceKillAfterDelay,\n\t\tkillSignal,\n\t\tkillResult,\n\t\tcontroller,\n\t});\n\treturn killResult;\n};\n\nconst parseKillArguments = (signalOrError, errorArgument, killSignal) => {\n\tconst [signal = killSignal, error] = isErrorInstance(signalOrError)\n\t\t? [undefined, signalOrError]\n\t\t: [signalOrError, errorArgument];\n\n\tif (typeof signal !== 'string' && !Number.isInteger(signal)) {\n\t\tthrow new TypeError(`The first argument must be an error instance or a signal name string/integer: ${String(signal)}`);\n\t}\n\n\tif (error !== undefined && !isErrorInstance(error)) {\n\t\tthrow new TypeError(`The second argument is optional. If specified, it must be an error instance: ${error}`);\n\t}\n\n\treturn {signal: normalizeSignalArgument(signal), error};\n};\n\n// Fails right away when calling `subprocess.kill(error)`.\n// Does not wait for actual signal termination.\n// Uses a deferred promise instead of the `error` event on the subprocess, as this is less intrusive.\nconst emitKillError = (error, onInternalError) => {\n\tif (error !== undefined) {\n\t\tonInternalError.reject(error);\n\t}\n};\n\nconst setKillTimeout = async ({kill, signal, forceKillAfterDelay, killSignal, killResult, controller}) => {\n\tif (!shouldForceKill(signal, forceKillAfterDelay, killSignal, killResult)) {\n\t\treturn;\n\t}\n\n\ttry {\n\t\tawait setTimeout(forceKillAfterDelay, undefined, {signal: controller.signal});\n\t\tkill('SIGKILL');\n\t} catch {}\n};\n\nconst shouldForceKill = (signal, forceKillAfterDelay, killSignal, killResult) => signal === killSignal\n\t&& forceKillAfterDelay !== false\n\t&& killResult;\n", "// When the subprocess fails, this is the error instance being returned.\n// If another error instance is being thrown, it is kept as `error.cause`.\nexport const getFinalError = (originalError, message, isSync) => {\n\tconst ErrorClass = isSync ? ExecaSyncError : ExecaError;\n\tconst options = originalError instanceof DiscardedError ? {} : {cause: originalError};\n\treturn new ErrorClass(message, options);\n};\n\n// Indicates that the error is used only to interrupt control flow, but not in the return value\nexport class DiscardedError extends Error {}\n\n// Proper way to set `error.name`: it should be inherited and non-enumerable\nconst setErrorName = (ErrorClass, value) => {\n\tObject.defineProperty(ErrorClass.prototype, 'name', {\n\t\tvalue,\n\t\twritable: true,\n\t\tenumerable: false,\n\t\tconfigurable: true,\n\t});\n\tObject.defineProperty(ErrorClass.prototype, execaErrorSymbol, {\n\t\tvalue: true,\n\t\twritable: false,\n\t\tenumerable: false,\n\t\tconfigurable: false,\n\t});\n};\n\n// Unlike `instanceof`, this works across realms\nexport const isExecaError = error => isErrorInstance(error) && execaErrorSymbol in error;\n\nconst execaErrorSymbol = Symbol('isExecaError');\n\nexport const isErrorInstance = value => Object.prototype.toString.call(value) === '[object Error]';\n\n// We use two different Error classes for async/sync methods since they have slightly different shape and types\nexport class ExecaError extends Error {}\nsetErrorName(ExecaError, ExecaError.name);\n\nexport class ExecaSyncError extends Error {}\nsetErrorName(ExecaSyncError, ExecaSyncError.name);\n", "import {constants} from 'node:os';\n\n// Normalize signals for comparison purpose.\n// Also validate the signal exists.\nexport const normalizeKillSignal = killSignal => {\n\tconst optionName = 'option `killSignal`';\n\tif (killSignal === 0) {\n\t\tthrow new TypeError(`Invalid ${optionName}: 0 cannot be used.`);\n\t}\n\n\treturn normalizeSignal(killSignal, optionName);\n};\n\nexport const normalizeSignalArgument = signal => signal === 0\n\t? signal\n\t: normalizeSignal(signal, '`subprocess.kill()`\\'s argument');\n\nconst normalizeSignal = (signalNameOrInteger, optionName) => {\n\tif (Number.isInteger(signalNameOrInteger)) {\n\t\treturn normalizeSignalInteger(signalNameOrInteger, optionName);\n\t}\n\n\tif (typeof signalNameOrInteger === 'string') {\n\t\treturn normalizeSignalName(signalNameOrInteger, optionName);\n\t}\n\n\tthrow new TypeError(`Invalid ${optionName} ${String(signalNameOrInteger)}: it must be a string or an integer.\\n${getAvailableSignals()}`);\n};\n\nconst normalizeSignalInteger = (signalInteger, optionName) => {\n\tif (signalsIntegerToName.has(signalInteger)) {\n\t\treturn signalsIntegerToName.get(signalInteger);\n\t}\n\n\tthrow new TypeError(`Invalid ${optionName} ${signalInteger}: this signal integer does not exist.\\n${getAvailableSignals()}`);\n};\n\nconst getSignalsIntegerToName = () => new Map(Object.entries(constants.signals)\n\t.reverse()\n\t.map(([signalName, signalInteger]) => [signalInteger, signalName]));\n\nconst signalsIntegerToName = getSignalsIntegerToName();\n\nconst normalizeSignalName = (signalName, optionName) => {\n\tif (signalName in constants.signals) {\n\t\treturn signalName;\n\t}\n\n\tif (signalName.toUpperCase() in constants.signals) {\n\t\tthrow new TypeError(`Invalid ${optionName} '${signalName}': please rename it to '${signalName.toUpperCase()}'.`);\n\t}\n\n\tthrow new TypeError(`Invalid ${optionName} '${signalName}': this signal name does not exist.\\n${getAvailableSignals()}`);\n};\n\nconst getAvailableSignals = () => `Available signal names: ${getAvailableSignalNames()}.\nAvailable signal numbers: ${getAvailableSignalIntegers()}.`;\n\nconst getAvailableSignalNames = () => Object.keys(constants.signals)\n\t.sort()\n\t.map(signalName => `'${signalName}'`)\n\t.join(', ');\n\nconst getAvailableSignalIntegers = () => [...new Set(Object.values(constants.signals)\n\t.sort((signalInteger, signalIntegerTwo) => signalInteger - signalIntegerTwo))]\n\t.join(', ');\n", "import {setTimeout} from 'node:timers/promises';\nimport {DiscardedError} from '../return/final-error.js';\n\n// Validate `timeout` option\nexport const validateTimeout = ({timeout}) => {\n\tif (timeout !== undefined && (!Number.isFinite(timeout) || timeout < 0)) {\n\t\tthrow new TypeError(`Expected the \\`timeout\\` option to be a non-negative integer, got \\`${timeout}\\` (${typeof timeout})`);\n\t}\n};\n\n// Fails when the `timeout` option is exceeded\nexport const throwOnTimeout = (subprocess, timeout, context, controller) => timeout === 0 || timeout === undefined\n\t? []\n\t: [killAfterTimeout(subprocess, timeout, context, controller)];\n\nconst killAfterTimeout = async (subprocess, timeout, context, {signal}) => {\n\tawait setTimeout(timeout, undefined, {signal});\n\tcontext.timedOut = true;\n\tsubprocess.kill();\n\tthrow new DiscardedError();\n};\n", "import {execPath, execArgv} from 'node:process';\nimport {basename, resolve} from 'node:path';\nimport {safeNormalizeFileUrl} from '../arguments/file-url.js';\n\n// `execaNode()` is a shortcut for `execa(..., {node: true})`\nexport const mapNode = ({options}) => {\n\tif (options.node === false) {\n\t\tthrow new TypeError('The \"node\" option cannot be false with `execaNode()`.');\n\t}\n\n\treturn {options: {...options, node: true}};\n};\n\n// Applies the `node: true` option, and the related `nodePath`/`nodeOptions` options.\n// Modifies the file commands/arguments to ensure the same Node binary and flags are re-used.\n// Also adds `ipc: true` and `shell: false`.\nexport const handleNodeOption = (file, commandArguments, {\n\tnode: shouldHandleNode = false,\n\tnodePath = execPath,\n\tnodeOptions = execArgv.filter(nodeOption => !nodeOption.startsWith('--inspect')),\n\tcwd,\n\texecPath: formerNodePath,\n\t...options\n}) => {\n\tif (formerNodePath !== undefined) {\n\t\tthrow new TypeError('The \"execPath\" option has been removed. Please use the \"nodePath\" option instead.');\n\t}\n\n\tconst normalizedNodePath = safeNormalizeFileUrl(nodePath, 'The \"nodePath\" option');\n\tconst resolvedNodePath = resolve(cwd, normalizedNodePath);\n\tconst newOptions = {\n\t\t...options,\n\t\tnodePath: resolvedNodePath,\n\t\tnode: shouldHandleNode,\n\t\tcwd,\n\t};\n\n\tif (!shouldHandleNode) {\n\t\treturn [file, commandArguments, newOptions];\n\t}\n\n\tif (basename(file, '.exe') === 'node') {\n\t\tthrow new TypeError('When the \"node\" option is true, the first argument does not need to be \"node\".');\n\t}\n\n\treturn [\n\t\tresolvedNodePath,\n\t\t[...nodeOptions, file, ...commandArguments],\n\t\t{ipc: true, ...newOptions, shell: false},\n\t];\n};\n", "// Validate `encoding` option\nexport const validateEncoding = ({encoding}) => {\n\tif (ENCODINGS.has(encoding)) {\n\t\treturn;\n\t}\n\n\tconst correctEncoding = getCorrectEncoding(encoding);\n\tif (correctEncoding !== undefined) {\n\t\tthrow new TypeError(`Invalid option \\`encoding: ${serializeEncoding(encoding)}\\`.\nPlease rename it to ${serializeEncoding(correctEncoding)}.`);\n\t}\n\n\tconst correctEncodings = [...ENCODINGS].map(correctEncoding => serializeEncoding(correctEncoding)).join(', ');\n\tthrow new TypeError(`Invalid option \\`encoding: ${serializeEncoding(encoding)}\\`.\nPlease rename it to one of: ${correctEncodings}.`);\n};\n\nconst TEXT_ENCODINGS = new Set(['utf8', 'utf16le']);\nexport const BINARY_ENCODINGS = new Set(['buffer', 'hex', 'base64', 'base64url', 'latin1', 'ascii']);\nconst ENCODINGS = new Set([...TEXT_ENCODINGS, ...BINARY_ENCODINGS]);\n\nconst getCorrectEncoding = encoding => {\n\tif (encoding === null) {\n\t\treturn 'buffer';\n\t}\n\n\tif (typeof encoding !== 'string') {\n\t\treturn;\n\t}\n\n\tconst lowerEncoding = encoding.toLowerCase();\n\tif (lowerEncoding in ENCODING_ALIASES) {\n\t\treturn ENCODING_ALIASES[lowerEncoding];\n\t}\n\n\tif (ENCODINGS.has(lowerEncoding)) {\n\t\treturn lowerEncoding;\n\t}\n};\n\nconst ENCODING_ALIASES = {\n\t// eslint-disable-next-line unicorn/text-encoding-identifier-case\n\t'utf-8': 'utf8',\n\t'utf-16le': 'utf16le',\n\t'ucs-2': 'utf16le',\n\tucs2: 'utf16le',\n\tbinary: 'latin1',\n};\n\nconst serializeEncoding = encoding => typeof encoding === 'string' ? `\"${encoding}\"` : String(encoding);\n", "import {statSync} from 'node:fs';\nimport {resolve} from 'node:path';\nimport process from 'node:process';\nimport {safeNormalizeFileUrl} from './file-url.js';\n\n// Normalize `cwd` option\nexport const normalizeCwd = (cwd = getDefaultCwd()) => {\n\tconst cwdString = safeNormalizeFileUrl(cwd, 'The \"cwd\" option');\n\treturn resolve(cwdString);\n};\n\nconst getDefaultCwd = () => {\n\ttry {\n\t\treturn process.cwd();\n\t} catch (error) {\n\t\terror.message = `The current directory does not exist.\\n${error.message}`;\n\t\tthrow error;\n\t}\n};\n\n// When `cwd` option has an invalid value, provide with a better error message\nexport const fixCwdError = (originalMessage, cwd) => {\n\tif (cwd === getDefaultCwd()) {\n\t\treturn originalMessage;\n\t}\n\n\tlet cwdStat;\n\ttry {\n\t\tcwdStat = statSync(cwd);\n\t} catch (error) {\n\t\treturn `The \"cwd\" option is invalid: ${cwd}.\\n${error.message}\\n${originalMessage}`;\n\t}\n\n\tif (!cwdStat.isDirectory()) {\n\t\treturn `The \"cwd\" option is not a directory: ${cwd}.\\n${originalMessage}`;\n\t}\n\n\treturn originalMessage;\n};\n", "import {signalsByName} from 'human-signals';\nimport {getDurationMs} from './duration.js';\nimport {getFinalError} from './final-error.js';\nimport {createMessages} from './message.js';\n\n// Object returned on subprocess success\nexport const makeSuccessResult = ({\n\tcommand,\n\tescapedCommand,\n\tstdio,\n\tall,\n\toptions: {cwd},\n\tstartTime,\n}) => omitUndefinedProperties({\n\tcommand,\n\tescapedCommand,\n\tcwd,\n\tdurationMs: getDurationMs(startTime),\n\tfailed: false,\n\ttimedOut: false,\n\tisCanceled: false,\n\tisTerminated: false,\n\tisMaxBuffer: false,\n\texitCode: 0,\n\tstdout: stdio[1],\n\tstderr: stdio[2],\n\tall,\n\tstdio,\n\tpipedFrom: [],\n});\n\n// Object returned on subprocess failure before spawning\nexport const makeEarlyError = ({\n\terror,\n\tcommand,\n\tescapedCommand,\n\tfileDescriptors,\n\toptions,\n\tstartTime,\n\tisSync,\n}) => makeError({\n\terror,\n\tcommand,\n\tescapedCommand,\n\tstartTime,\n\ttimedOut: false,\n\tisCanceled: false,\n\tisMaxBuffer: false,\n\tstdio: Array.from({length: fileDescriptors.length}),\n\toptions,\n\tisSync,\n});\n\n// Object returned on subprocess failure\nexport const makeError = ({\n\terror: originalError,\n\tcommand,\n\tescapedCommand,\n\tstartTime,\n\ttimedOut,\n\tisCanceled,\n\tisMaxBuffer,\n\texitCode: rawExitCode,\n\tsignal: rawSignal,\n\tstdio,\n\tall,\n\toptions: {timeoutDuration, timeout = timeoutDuration, cwd, maxBuffer},\n\tisSync,\n}) => {\n\tconst {exitCode, signal, signalDescription} = normalizeExitPayload(rawExitCode, rawSignal);\n\tconst {originalMessage, shortMessage, message} = createMessages({\n\t\tstdio,\n\t\tall,\n\t\toriginalError,\n\t\tsignal,\n\t\tsignalDescription,\n\t\texitCode,\n\t\tescapedCommand,\n\t\ttimedOut,\n\t\tisCanceled,\n\t\tisMaxBuffer,\n\t\tmaxBuffer,\n\t\ttimeout,\n\t\tcwd,\n\t});\n\tconst error = getFinalError(originalError, message, isSync);\n\tObject.assign(error, getErrorProperties({\n\t\terror,\n\t\tcommand,\n\t\tescapedCommand,\n\t\tstartTime,\n\t\ttimedOut,\n\t\tisCanceled,\n\t\tisMaxBuffer,\n\t\texitCode,\n\t\tsignal,\n\t\tsignalDescription,\n\t\tstdio,\n\t\tall,\n\t\tcwd,\n\t\toriginalMessage,\n\t\tshortMessage,\n\t}));\n\treturn error;\n};\n\nconst getErrorProperties = ({\n\terror,\n\tcommand,\n\tescapedCommand,\n\tstartTime,\n\ttimedOut,\n\tisCanceled,\n\tisMaxBuffer,\n\texitCode,\n\tsignal,\n\tsignalDescription,\n\tstdio,\n\tall,\n\tcwd,\n\toriginalMessage,\n\tshortMessage,\n}) => omitUndefinedProperties({\n\tshortMessage,\n\toriginalMessage,\n\tcommand,\n\tescapedCommand,\n\tcwd,\n\tdurationMs: getDurationMs(startTime),\n\tfailed: true,\n\ttimedOut,\n\tisCanceled,\n\tisTerminated: signal !== undefined,\n\tisMaxBuffer,\n\texitCode,\n\tsignal,\n\tsignalDescription,\n\tcode: error.cause?.code,\n\tstdout: stdio[1],\n\tstderr: stdio[2],\n\tall,\n\tstdio,\n\tpipedFrom: [],\n});\n\nconst omitUndefinedProperties = result => Object.fromEntries(Object.entries(result).filter(([, value]) => value !== undefined));\n\n// `signal` and `exitCode` emitted on `subprocess.on('exit')` event can be `null`.\n// We normalize them to `undefined`\nconst normalizeExitPayload = (rawExitCode, rawSignal) => {\n\tconst exitCode = rawExitCode === null ? undefined : rawExitCode;\n\tconst signal = rawSignal === null ? undefined : rawSignal;\n\tconst signalDescription = signal === undefined ? undefined : signalsByName[rawSignal].description;\n\treturn {exitCode, signal, signalDescription};\n};\n", "import{constants}from\"node:os\";\n\nimport{SIGRTMAX}from\"./realtime.js\";\nimport{getSignals}from\"./signals.js\";\n\n\n\nconst getSignalsByName=()=>{\nconst signals=getSignals();\nreturn Object.fromEntries(signals.map(getSignalByName))\n};\n\nconst getSignalByName=({\nname,\nnumber,\ndescription,\nsupported,\naction,\nforced,\nstandard\n})=>[name,{name,number,description,supported,action,forced,standard}];\n\nexport const signalsByName=getSignalsByName();\n\n\n\n\nconst getSignalsByNumber=()=>{\nconst signals=getSignals();\nconst length=SIGRTMAX+1;\nconst signalsA=Array.from({length},(value,number)=>\ngetSignalByNumber(number,signals)\n);\nreturn Object.assign({},...signalsA)\n};\n\nconst getSignalByNumber=(number,signals)=>{\nconst signal=findSignalByNumber(number,signals);\n\nif(signal===undefined){\nreturn{}\n}\n\nconst{name,description,supported,action,forced,standard}=signal;\nreturn{\n[number]:{\nname,\nnumber,\ndescription,\nsupported,\naction,\nforced,\nstandard\n}\n}\n};\n\n\n\nconst findSignalByNumber=(number,signals)=>{\nconst signal=signals.find(({name})=>constants.signals[name]===number);\n\nif(signal!==undefined){\nreturn signal\n}\n\nreturn signals.find((signalA)=>signalA.number===number)\n};\n\nexport const signalsByNumber=getSignalsByNumber();", "\nexport const getRealtimeSignals=()=>{\nconst length=SIGRTMAX-SIGRTMIN+1;\nreturn Array.from({length},getRealtimeSignal)\n};\n\nconst getRealtimeSignal=(value,index)=>({\nname:`SIGRT${index+1}`,\nnumber:SIGRTMIN+index,\naction:\"terminate\",\ndescription:\"Application-specific signal (realtime)\",\nstandard:\"posix\"\n});\n\nconst SIGRTMIN=34;\nexport const SIGRTMAX=64;", "import{constants}from\"node:os\";\n\nimport{SIGNALS}from\"./core.js\";\nimport{getRealtimeSignals}from\"./realtime.js\";\n\n\n\nexport const getSignals=()=>{\nconst realtimeSignals=getRealtimeSignals();\nconst signals=[...SIGNALS,...realtimeSignals].map(normalizeSignal);\nreturn signals\n};\n\n\n\n\n\n\n\nconst normalizeSignal=({\nname,\nnumber:defaultNumber,\ndescription,\naction,\nforced=false,\nstandard\n})=>{\nconst{\nsignals:{[name]:constantSignal}\n}=constants;\nconst supported=constantSignal!==undefined;\nconst number=supported?constantSignal:defaultNumber;\nreturn{name,number,description,supported,action,forced,standard}\n};", "\n\nexport const SIGNALS=[\n{\nname:\"SIGHUP\",\nnumber:1,\naction:\"terminate\",\ndescription:\"Terminal closed\",\nstandard:\"posix\"\n},\n{\nname:\"SIGINT\",\nnumber:2,\naction:\"terminate\",\ndescription:\"User interruption with CTRL-C\",\nstandard:\"ansi\"\n},\n{\nname:\"SIGQUIT\",\nnumber:3,\naction:\"core\",\ndescription:\"User interruption with CTRL-\\\\\",\nstandard:\"posix\"\n},\n{\nname:\"SIGILL\",\nnumber:4,\naction:\"core\",\ndescription:\"Invalid machine instruction\",\nstandard:\"ansi\"\n},\n{\nname:\"SIGTRAP\",\nnumber:5,\naction:\"core\",\ndescription:\"Debugger breakpoint\",\nstandard:\"posix\"\n},\n{\nname:\"SIGABRT\",\nnumber:6,\naction:\"core\",\ndescription:\"Aborted\",\nstandard:\"ansi\"\n},\n{\nname:\"SIGIOT\",\nnumber:6,\naction:\"core\",\ndescription:\"Aborted\",\nstandard:\"bsd\"\n},\n{\nname:\"SIGBUS\",\nnumber:7,\naction:\"core\",\ndescription:\n\"Bus error due to misaligned, non-existing address or paging error\",\nstandard:\"bsd\"\n},\n{\nname:\"SIGEMT\",\nnumber:7,\naction:\"terminate\",\ndescription:\"Command should be emulated but is not implemented\",\nstandard:\"other\"\n},\n{\nname:\"SIGFPE\",\nnumber:8,\naction:\"core\",\ndescription:\"Floating point arithmetic error\",\nstandard:\"ansi\"\n},\n{\nname:\"SIGKILL\",\nnumber:9,\naction:\"terminate\",\ndescription:\"Forced termination\",\nstandard:\"posix\",\nforced:true\n},\n{\nname:\"SIGUSR1\",\nnumber:10,\naction:\"terminate\",\ndescription:\"Application-specific signal\",\nstandard:\"posix\"\n},\n{\nname:\"SIGSEGV\",\nnumber:11,\naction:\"core\",\ndescription:\"Segmentation fault\",\nstandard:\"ansi\"\n},\n{\nname:\"SIGUSR2\",\nnumber:12,\naction:\"terminate\",\ndescription:\"Application-specific signal\",\nstandard:\"posix\"\n},\n{\nname:\"SIGPIPE\",\nnumber:13,\naction:\"terminate\",\ndescription:\"Broken pipe or socket\",\nstandard:\"posix\"\n},\n{\nname:\"SIGALRM\",\nnumber:14,\naction:\"terminate\",\ndescription:\"Timeout or timer\",\nstandard:\"posix\"\n},\n{\nname:\"SIGTERM\",\nnumber:15,\naction:\"terminate\",\ndescription:\"Termination\",\nstandard:\"ansi\"\n},\n{\nname:\"SIGSTKFLT\",\nnumber:16,\naction:\"terminate\",\ndescription:\"Stack is empty or overflowed\",\nstandard:\"other\"\n},\n{\nname:\"SIGCHLD\",\nnumber:17,\naction:\"ignore\",\ndescription:\"Child process terminated, paused or unpaused\",\nstandard:\"posix\"\n},\n{\nname:\"SIGCLD\",\nnumber:17,\naction:\"ignore\",\ndescription:\"Child process terminated, paused or unpaused\",\nstandard:\"other\"\n},\n{\nname:\"SIGCONT\",\nnumber:18,\naction:\"unpause\",\ndescription:\"Unpaused\",\nstandard:\"posix\",\nforced:true\n},\n{\nname:\"SIGSTOP\",\nnumber:19,\naction:\"pause\",\ndescription:\"Paused\",\nstandard:\"posix\",\nforced:true\n},\n{\nname:\"SIGTSTP\",\nnumber:20,\naction:\"pause\",\ndescription:\"Paused using CTRL-Z or \\\"suspend\\\"\",\nstandard:\"posix\"\n},\n{\nname:\"SIGTTIN\",\nnumber:21,\naction:\"pause\",\ndescription:\"Background process cannot read terminal input\",\nstandard:\"posix\"\n},\n{\nname:\"SIGBREAK\",\nnumber:21,\naction:\"terminate\",\ndescription:\"User interruption with CTRL-BREAK\",\nstandard:\"other\"\n},\n{\nname:\"SIGTTOU\",\nnumber:22,\naction:\"pause\",\ndescription:\"Background process cannot write to terminal output\",\nstandard:\"posix\"\n},\n{\nname:\"SIGURG\",\nnumber:23,\naction:\"ignore\",\ndescription:\"Socket received out-of-band data\",\nstandard:\"bsd\"\n},\n{\nname:\"SIGXCPU\",\nnumber:24,\naction:\"core\",\ndescription:\"Process timed out\",\nstandard:\"bsd\"\n},\n{\nname:\"SIGXFSZ\",\nnumber:25,\naction:\"core\",\ndescription:\"File too big\",\nstandard:\"bsd\"\n},\n{\nname:\"SIGVTALRM\",\nnumber:26,\naction:\"terminate\",\ndescription:\"Timeout or timer\",\nstandard:\"bsd\"\n},\n{\nname:\"SIGPROF\",\nnumber:27,\naction:\"terminate\",\ndescription:\"Timeout or timer\",\nstandard:\"bsd\"\n},\n{\nname:\"SIGWINCH\",\nnumber:28,\naction:\"ignore\",\ndescription:\"Terminal window size changed\",\nstandard:\"bsd\"\n},\n{\nname:\"SIGIO\",\nnumber:29,\naction:\"terminate\",\ndescription:\"I/O is available\",\nstandard:\"other\"\n},\n{\nname:\"SIGPOLL\",\nnumber:29,\naction:\"terminate\",\ndescription:\"Watched event\",\nstandard:\"other\"\n},\n{\nname:\"SIGINFO\",\nnumber:29,\naction:\"ignore\",\ndescription:\"Request for process information\",\nstandard:\"other\"\n},\n{\nname:\"SIGPWR\",\nnumber:30,\naction:\"terminate\",\ndescription:\"Device running out of power\",\nstandard:\"systemv\"\n},\n{\nname:\"SIGSYS\",\nnumber:31,\naction:\"core\",\ndescription:\"Invalid system call\",\nstandard:\"other\"\n},\n{\nname:\"SIGUNUSED\",\nnumber:31,\naction:\"terminate\",\ndescription:\"Invalid system call\",\nstandard:\"other\"\n}];", "import stripFinalNewline from 'strip-final-newline';\nimport {isUint8Array, uint8ArrayToString} from '../utils/uint-array.js';\nimport {fixCwdError} from '../arguments/cwd.js';\nimport {escapeLines} from '../arguments/escape.js';\nimport {getMaxBufferMessage} from '../io/max-buffer.js';\nimport {DiscardedError, isExecaError} from './final-error.js';\n\n// Computes `error.message`, `error.shortMessage` and `error.originalMessage`\nexport const createMessages = ({\n\tstdio,\n\tall,\n\toriginalError,\n\tsignal,\n\tsignalDescription,\n\texitCode,\n\tescapedCommand,\n\ttimedOut,\n\tisCanceled,\n\tisMaxBuffer,\n\tmaxBuffer,\n\ttimeout,\n\tcwd,\n}) => {\n\tconst errorCode = originalError?.code;\n\tconst prefix = getErrorPrefix({\n\t\toriginalError,\n\t\ttimedOut,\n\t\ttimeout,\n\t\tisMaxBuffer,\n\t\tmaxBuffer,\n\t\terrorCode,\n\t\tsignal,\n\t\tsignalDescription,\n\t\texitCode,\n\t\tisCanceled,\n\t});\n\tconst originalMessage = getOriginalMessage(originalError, cwd);\n\tconst suffix = originalMessage === undefined ? '' : `\\n${originalMessage}`;\n\tconst shortMessage = `${prefix}: ${escapedCommand}${suffix}`;\n\tconst messageStdio = all === undefined ? [stdio[2], stdio[1]] : [all];\n\tconst message = [shortMessage, ...messageStdio, ...stdio.slice(3)]\n\t\t.map(messagePart => escapeLines(stripFinalNewline(serializeMessagePart(messagePart))))\n\t\t.filter(Boolean)\n\t\t.join('\\n\\n');\n\treturn {originalMessage, shortMessage, message};\n};\n\nconst getErrorPrefix = ({originalError, timedOut, timeout, isMaxBuffer, maxBuffer, errorCode, signal, signalDescription, exitCode, isCanceled}) => {\n\tif (timedOut) {\n\t\treturn `Command timed out after ${timeout} milliseconds`;\n\t}\n\n\tif (isCanceled) {\n\t\treturn 'Command was canceled';\n\t}\n\n\tif (isMaxBuffer) {\n\t\treturn getMaxBufferMessage(originalError, maxBuffer);\n\t}\n\n\tif (errorCode !== undefined) {\n\t\treturn `Command failed with ${errorCode}`;\n\t}\n\n\tif (signal !== undefined) {\n\t\treturn `Command was killed with ${signal} (${signalDescription})`;\n\t}\n\n\tif (exitCode !== undefined) {\n\t\treturn `Command failed with exit code ${exitCode}`;\n\t}\n\n\treturn 'Command failed';\n};\n\nconst getOriginalMessage = (originalError, cwd) => {\n\tif (originalError instanceof DiscardedError) {\n\t\treturn;\n\t}\n\n\tconst originalMessage = isExecaError(originalError)\n\t\t? originalError.originalMessage\n\t\t: String(originalError?.message ?? originalError);\n\tconst escapedOriginalMessage = escapeLines(fixCwdError(originalMessage, cwd));\n\treturn escapedOriginalMessage === '' ? undefined : escapedOriginalMessage;\n};\n\nconst serializeMessagePart = messagePart => Array.isArray(messagePart)\n\t? messagePart.map(messageItem => stripFinalNewline(serializeMessageItem(messageItem))).filter(Boolean).join('\\n')\n\t: serializeMessageItem(messagePart);\n\nconst serializeMessageItem = messageItem => {\n\tif (typeof messageItem === 'string') {\n\t\treturn messageItem;\n\t}\n\n\tif (isUint8Array(messageItem)) {\n\t\treturn uint8ArrayToString(messageItem);\n\t}\n\n\treturn '';\n};\n", "export default function stripFinalNewline(input) {\n\tif (typeof input === 'string') {\n\t\treturn stripFinalNewlineString(input);\n\t}\n\n\tif (!(ArrayBuffer.isView(input) && input.BYTES_PER_ELEMENT === 1)) {\n\t\tthrow new Error('Input must be a string or a Uint8Array');\n\t}\n\n\treturn stripFinalNewlineBinary(input);\n}\n\nconst stripFinalNewlineString = input =>\n\tinput.at(-1) === LF\n\t\t? input.slice(0, input.at(-2) === CR ? -2 : -1)\n\t\t: input;\n\nconst stripFinalNewlineBinary = input =>\n\tinput.at(-1) === LF_BINARY\n\t\t? input.subarray(0, input.at(-2) === CR_BINARY ? -2 : -1)\n\t\t: input;\n\nconst LF = '\\n';\nconst LF_BINARY = LF.codePointAt(0);\nconst CR = '\\r';\nconst CR_BINARY = CR.codePointAt(0);\n", "import {MaxBufferError} from 'get-stream';\nimport {getStreamName} from '../utils/standard-stream.js';\n\n// When the `maxBuffer` option is hit, a MaxBufferError is thrown.\n// The stream is aborted, then specific information is kept for the error message.\nexport const handleMaxBuffer = ({error, stream, readableObjectMode, lines, encoding, fdNumber}) => {\n\tif (!(error instanceof MaxBufferError)) {\n\t\tthrow error;\n\t}\n\n\tif (fdNumber === 'all') {\n\t\treturn error;\n\t}\n\n\tconst unit = getMaxBufferUnit(readableObjectMode, lines, encoding);\n\terror.maxBufferInfo = {fdNumber, unit};\n\tstream.destroy();\n\tthrow error;\n};\n\nconst getMaxBufferUnit = (readableObjectMode, lines, encoding) => {\n\tif (readableObjectMode) {\n\t\treturn 'objects';\n\t}\n\n\tif (lines) {\n\t\treturn 'lines';\n\t}\n\n\tif (encoding === 'buffer') {\n\t\treturn 'bytes';\n\t}\n\n\treturn 'characters';\n};\n\n// Error message when `maxBuffer` is hit\nexport const getMaxBufferMessage = (error, maxBuffer) => {\n\tconst {streamName, threshold, unit} = getMaxBufferInfo(error, maxBuffer);\n\treturn `Command's ${streamName} was larger than ${threshold} ${unit}`;\n};\n\nconst getMaxBufferInfo = (error, maxBuffer) => {\n\tif (error?.maxBufferInfo === undefined) {\n\t\treturn {streamName: 'output', threshold: maxBuffer[1], unit: 'bytes'};\n\t}\n\n\tconst {maxBufferInfo: {fdNumber, unit}} = error;\n\tdelete error.maxBufferInfo;\n\treturn {streamName: getStreamName(fdNumber), threshold: maxBuffer[fdNumber], unit};\n};\n\n// The only way to apply `maxBuffer` with `spawnSync()` is to use the native `maxBuffer` option Node.js provides.\n// However, this has multiple limitations, and cannot behave the exact same way as the async behavior.\n// When the `maxBuffer` is hit, a `ENOBUFS` error is thrown.\nexport const isMaxBufferSync = (resultError, output, maxBuffer) => resultError?.code === 'ENOBUFS'\n\t&& output !== null\n\t&& output.some(result => result !== null && result.length > getMaxBufferSync(maxBuffer));\n\n// When `maxBuffer` is hit, ensure the result is truncated\nexport const truncateMaxBufferSync = (result, isMaxBuffer, maxBuffer) => {\n\tif (!isMaxBuffer) {\n\t\treturn result;\n\t}\n\n\tconst maxBufferValue = getMaxBufferSync(maxBuffer);\n\treturn result.length > maxBufferValue ? result.slice(0, maxBufferValue) : result;\n};\n\n// `spawnSync()` does not allow differentiating `maxBuffer` per file descriptor, so we always use `stdout`\nexport const getMaxBufferSync = ([, stdoutMaxBuffer]) => stdoutMaxBuffer;\n", "import {on} from 'node:events';\nimport {finished} from 'node:stream/promises';\nimport {nodeImports} from './stream.js';\n\nObject.assign(nodeImports, {on, finished});\n\nexport {\n\tdefault,\n\tgetStreamAsArray,\n\tgetStreamAsArrayBuffer,\n\tgetStreamAsBuffer,\n\tMaxBufferError,\n} from './exports.js';\n", "import {isReadableStream} from 'is-stream';\nimport {asyncIterator} from '@sec-ant/readable-stream/ponyfill';\n\nexport const getAsyncIterable = stream => {\n\tif (isReadableStream(stream, {checkOpen: false}) && nodeImports.on !== undefined) {\n\t\treturn getStreamIterable(stream);\n\t}\n\n\tif (typeof stream?.[Symbol.asyncIterator] === 'function') {\n\t\treturn stream;\n\t}\n\n\t// `ReadableStream[Symbol.asyncIterator]` support is missing in multiple browsers, so we ponyfill it\n\tif (toString.call(stream) === '[object ReadableStream]') {\n\t\treturn asyncIterator.call(stream);\n\t}\n\n\tthrow new TypeError('The first argument must be a Readable, a ReadableStream, or an async iterable.');\n};\n\nconst {toString} = Object.prototype;\n\n// The default iterable for Node.js streams does not allow for multiple readers at once, so we re-implement it\nconst getStreamIterable = async function * (stream) {\n\tconst controller = new AbortController();\n\tconst state = {};\n\thandleStreamEnd(stream, controller, state);\n\n\ttry {\n\t\tfor await (const [chunk] of nodeImports.on(stream, 'data', {signal: controller.signal})) {\n\t\t\tyield chunk;\n\t\t}\n\t} catch (error) {\n\t\t// Stream failure, for example due to `stream.destroy(error)`\n\t\tif (state.error !== undefined) {\n\t\t\tthrow state.error;\n\t\t// `error` event directly emitted on stream\n\t\t} else if (!controller.signal.aborted) {\n\t\t\tthrow error;\n\t\t// Otherwise, stream completed successfully\n\t\t}\n\t\t// The `finally` block also runs when the caller throws, for example due to the `maxBuffer` option\n\t} finally {\n\t\tstream.destroy();\n\t}\n};\n\nconst handleStreamEnd = async (stream, controller, state) => {\n\ttry {\n\t\tawait nodeImports.finished(stream, {\n\t\t\tcleanup: true,\n\t\t\treadable: true,\n\t\t\twritable: false,\n\t\t\terror: false,\n\t\t});\n\t} catch (error) {\n\t\tstate.error = error;\n\t} finally {\n\t\tcontroller.abort();\n\t}\n};\n\n// Loaded by the Node entrypoint, but not by the browser one.\n// This prevents using dynamic imports.\nexport const nodeImports = {};\n", "export function isStream(stream, {checkOpen = true} = {}) {\n\treturn stream !== null\n\t\t&& typeof stream === 'object'\n\t\t&& (stream.writable || stream.readable || !checkOpen || (stream.writable === undefined && stream.readable === undefined))\n\t\t&& typeof stream.pipe === 'function';\n}\n\nexport function isWritableStream(stream, {checkOpen = true} = {}) {\n\treturn isStream(stream, {checkOpen})\n\t\t&& (stream.writable || !checkOpen)\n\t\t&& typeof stream.write === 'function'\n\t\t&& typeof stream.end === 'function'\n\t\t&& typeof stream.writable === 'boolean'\n\t\t&& typeof stream.writableObjectMode === 'boolean'\n\t\t&& typeof stream.destroy === 'function'\n\t\t&& typeof stream.destroyed === 'boolean';\n}\n\nexport function isReadableStream(stream, {checkOpen = true} = {}) {\n\treturn isStream(stream, {checkOpen})\n\t\t&& (stream.readable || !checkOpen)\n\t\t&& typeof stream.read === 'function'\n\t\t&& typeof stream.readable === 'boolean'\n\t\t&& typeof stream.readableObjectMode === 'boolean'\n\t\t&& typeof stream.destroy === 'function'\n\t\t&& typeof stream.destroyed === 'boolean';\n}\n\nexport function isDuplexStream(stream, options) {\n\treturn isWritableStream(stream, options)\n\t\t&& isReadableStream(stream, options);\n}\n\nexport function isTransformStream(stream, options) {\n\treturn isDuplexStream(stream, options)\n\t\t&& typeof stream._transform === 'function';\n}\n", "import { asyncIterator as e } from \"./asyncIterator.js\";\nimport { fromAnyIterable as a } from \"./fromAnyIterable.js\";\nexport {\n  e as asyncIterator,\n  a as fromAnyIterable\n};\n", "const a = Object.getPrototypeOf(\n  Object.getPrototypeOf(\n    /* istanbul ignore next */\n    async function* () {\n    }\n  ).prototype\n);\nclass c {\n  #t;\n  #n;\n  #r = !1;\n  #e = void 0;\n  constructor(e, t) {\n    this.#t = e, this.#n = t;\n  }\n  next() {\n    const e = () => this.#s();\n    return this.#e = this.#e ? this.#e.then(e, e) : e(), this.#e;\n  }\n  return(e) {\n    const t = () => this.#i(e);\n    return this.#e ? this.#e.then(t, t) : t();\n  }\n  async #s() {\n    if (this.#r)\n      return {\n        done: !0,\n        value: void 0\n      };\n    let e;\n    try {\n      e = await this.#t.read();\n    } catch (t) {\n      throw this.#e = void 0, this.#r = !0, this.#t.releaseLock(), t;\n    }\n    return e.done && (this.#e = void 0, this.#r = !0, this.#t.releaseLock()), e;\n  }\n  async #i(e) {\n    if (this.#r)\n      return {\n        done: !0,\n        value: e\n      };\n    if (this.#r = !0, !this.#n) {\n      const t = this.#t.cancel(e);\n      return this.#t.releaseLock(), await t, {\n        done: !0,\n        value: e\n      };\n    }\n    return this.#t.releaseLock(), {\n      done: !0,\n      value: e\n    };\n  }\n}\nconst n = Symbol();\nfunction i() {\n  return this[n].next();\n}\nObject.defineProperty(i, \"name\", { value: \"next\" });\nfunction o(r) {\n  return this[n].return(r);\n}\nObject.defineProperty(o, \"name\", { value: \"return\" });\nconst u = Object.create(a, {\n  next: {\n    enumerable: !0,\n    configurable: !0,\n    writable: !0,\n    value: i\n  },\n  return: {\n    enumerable: !0,\n    configurable: !0,\n    writable: !0,\n    value: o\n  }\n});\nfunction h({ preventCancel: r = !1 } = {}) {\n  const e = this.getReader(), t = new c(\n    e,\n    r\n  ), s = Object.create(u);\n  return s[n] = t, s;\n}\nexport {\n  h as asyncIterator\n};\n", "function c(n) {\n  const t = a(n);\n  return new ReadableStream(\n    {\n      async pull(e) {\n        const { value: r, done: o } = await t.next();\n        o ? e.close() : e.enqueue(r);\n      },\n      async cancel(e) {\n        if (typeof t.return == \"function\" && typeof await t.return(e) != \"object\")\n          throw new TypeError(\"return() fulfills with a non-object.\");\n        return e;\n      }\n    },\n    new CountQueuingStrategy({\n      highWaterMark: 0\n    })\n  );\n}\nfunction a(n) {\n  let t = n[Symbol.asyncIterator]?.bind(n);\n  if (t === void 0) {\n    const r = n[Symbol.iterator](), o = {\n      [Symbol.iterator]: () => r\n    };\n    t = async function* () {\n      return yield* o;\n    };\n  }\n  return t();\n}\nexport {\n  c as fromAnyIterable\n};\n", "export {getStreamAsArray} from './array.js';\nexport {getStreamAsArrayBuffer} from './array-buffer.js';\nexport {getStreamAsBuffer} from './buffer.js';\nexport {getStreamAsString as default} from './string.js';\nexport {MaxBufferError} from './contents.js';\n", "import {getStreamContents} from './contents.js';\nimport {identity, noop, getContentsProperty} from './utils.js';\n\nexport async function getStreamAsArray(stream, options) {\n\treturn getStreamContents(stream, arrayMethods, options);\n}\n\nconst initArray = () => ({contents: []});\n\nconst increment = () => 1;\n\nconst addArrayChunk = (convertedChunk, {contents}) => {\n\tcontents.push(convertedChunk);\n\treturn contents;\n};\n\nconst arrayMethods = {\n\tinit: initArray,\n\tconvertChunk: {\n\t\tstring: identity,\n\t\tbuffer: identity,\n\t\tarrayBuffer: identity,\n\t\tdataView: identity,\n\t\ttypedArray: identity,\n\t\tothers: identity,\n\t},\n\tgetSize: increment,\n\ttruncateChunk: noop,\n\taddChunk: addArrayChunk,\n\tgetFinalChunk: noop,\n\tfinalize: getContentsProperty,\n};\n", "import {getAsyncIterable} from './stream.js';\n\nexport const getStreamContents = async (stream, {init, convertChunk, getSize, truncateChunk, addChunk, getFinalChunk, finalize}, {maxBuffer = Number.POSITIVE_INFINITY} = {}) => {\n\tconst asyncIterable = getAsyncIterable(stream);\n\n\tconst state = init();\n\tstate.length = 0;\n\n\ttry {\n\t\tfor await (const chunk of asyncIterable) {\n\t\t\tconst chunkType = getChunkType(chunk);\n\t\t\tconst convertedChunk = convertChunk[chunkType](chunk, state);\n\t\t\tappendChunk({\n\t\t\t\tconvertedChunk,\n\t\t\t\tstate,\n\t\t\t\tgetSize,\n\t\t\t\ttruncateChunk,\n\t\t\t\taddChunk,\n\t\t\t\tmaxBuffer,\n\t\t\t});\n\t\t}\n\n\t\tappendFinalChunk({\n\t\t\tstate,\n\t\t\tconvertChunk,\n\t\t\tgetSize,\n\t\t\ttruncateChunk,\n\t\t\taddChunk,\n\t\t\tgetFinalChunk,\n\t\t\tmaxBuffer,\n\t\t});\n\t\treturn finalize(state);\n\t} catch (error) {\n\t\tconst normalizedError = typeof error === 'object' && error !== null ? error : new Error(error);\n\t\tnormalizedError.bufferedData = finalize(state);\n\t\tthrow normalizedError;\n\t}\n};\n\nconst appendFinalChunk = ({state, getSize, truncateChunk, addChunk, getFinalChunk, maxBuffer}) => {\n\tconst convertedChunk = getFinalChunk(state);\n\tif (convertedChunk !== undefined) {\n\t\tappendChunk({\n\t\t\tconvertedChunk,\n\t\t\tstate,\n\t\t\tgetSize,\n\t\t\ttruncateChunk,\n\t\t\taddChunk,\n\t\t\tmaxBuffer,\n\t\t});\n\t}\n};\n\nconst appendChunk = ({convertedChunk, state, getSize, truncateChunk, addChunk, maxBuffer}) => {\n\tconst chunkSize = getSize(convertedChunk);\n\tconst newLength = state.length + chunkSize;\n\n\tif (newLength <= maxBuffer) {\n\t\taddNewChunk(convertedChunk, state, addChunk, newLength);\n\t\treturn;\n\t}\n\n\tconst truncatedChunk = truncateChunk(convertedChunk, maxBuffer - state.length);\n\n\tif (truncatedChunk !== undefined) {\n\t\taddNewChunk(truncatedChunk, state, addChunk, maxBuffer);\n\t}\n\n\tthrow new MaxBufferError();\n};\n\nconst addNewChunk = (convertedChunk, state, addChunk, newLength) => {\n\tstate.contents = addChunk(convertedChunk, state, newLength);\n\tstate.length = newLength;\n};\n\nconst getChunkType = chunk => {\n\tconst typeOfChunk = typeof chunk;\n\n\tif (typeOfChunk === 'string') {\n\t\treturn 'string';\n\t}\n\n\tif (typeOfChunk !== 'object' || chunk === null) {\n\t\treturn 'others';\n\t}\n\n\tif (globalThis.Buffer?.isBuffer(chunk)) {\n\t\treturn 'buffer';\n\t}\n\n\tconst prototypeName = objectToString.call(chunk);\n\n\tif (prototypeName === '[object ArrayBuffer]') {\n\t\treturn 'arrayBuffer';\n\t}\n\n\tif (prototypeName === '[object DataView]') {\n\t\treturn 'dataView';\n\t}\n\n\tif (\n\t\tNumber.isInteger(chunk.byteLength)\n\t\t&& Number.isInteger(chunk.byteOffset)\n\t\t&& objectToString.call(chunk.buffer) === '[object ArrayBuffer]'\n\t) {\n\t\treturn 'typedArray';\n\t}\n\n\treturn 'others';\n};\n\nconst {toString: objectToString} = Object.prototype;\n\nexport class MaxBufferError extends Error {\n\tname = 'MaxBufferError';\n\n\tconstructor() {\n\t\tsuper('maxBuffer exceeded');\n\t}\n}\n", "export const identity = value => value;\n\nexport const noop = () => undefined;\n\nexport const getContentsProperty = ({contents}) => contents;\n\nexport const throwObjectStream = chunk => {\n\tthrow new Error(`Streams in object mode are not supported: ${String(chunk)}`);\n};\n\nexport const getLengthProperty = convertedChunk => convertedChunk.length;\n", "import {getStreamContents} from './contents.js';\nimport {noop, throwObjectStream, getLengthProperty} from './utils.js';\n\nexport async function getStreamAsArrayBuffer(stream, options) {\n\treturn getStreamContents(stream, arrayBufferMethods, options);\n}\n\nconst initArrayBuffer = () => ({contents: new ArrayBuffer(0)});\n\nconst useTextEncoder = chunk => textEncoder.encode(chunk);\nconst textEncoder = new TextEncoder();\n\nconst useUint8Array = chunk => new Uint8Array(chunk);\n\nconst useUint8ArrayWithOffset = chunk => new Uint8Array(chunk.buffer, chunk.byteOffset, chunk.byteLength);\n\nconst truncateArrayBufferChunk = (convertedChunk, chunkSize) => convertedChunk.slice(0, chunkSize);\n\n// `contents` is an increasingly growing `Uint8Array`.\nconst addArrayBufferChunk = (convertedChunk, {contents, length: previousLength}, length) => {\n\tconst newContents = hasArrayBufferResize() ? resizeArrayBuffer(contents, length) : resizeArrayBufferSlow(contents, length);\n\tnew Uint8Array(newContents).set(convertedChunk, previousLength);\n\treturn newContents;\n};\n\n// Without `ArrayBuffer.resize()`, `contents` size is always a power of 2.\n// This means its last bytes are zeroes (not stream data), which need to be\n// trimmed at the end with `ArrayBuffer.slice()`.\nconst resizeArrayBufferSlow = (contents, length) => {\n\tif (length <= contents.byteLength) {\n\t\treturn contents;\n\t}\n\n\tconst arrayBuffer = new ArrayBuffer(getNewContentsLength(length));\n\tnew Uint8Array(arrayBuffer).set(new Uint8Array(contents), 0);\n\treturn arrayBuffer;\n};\n\n// With `ArrayBuffer.resize()`, `contents` size matches exactly the size of\n// the stream data. It does not include extraneous zeroes to trim at the end.\n// The underlying `ArrayBuffer` does allocate a number of bytes that is a power\n// of 2, but those bytes are only visible after calling `ArrayBuffer.resize()`.\nconst resizeArrayBuffer = (contents, length) => {\n\tif (length <= contents.maxByteLength) {\n\t\tcontents.resize(length);\n\t\treturn contents;\n\t}\n\n\tconst arrayBuffer = new ArrayBuffer(length, {maxByteLength: getNewContentsLength(length)});\n\tnew Uint8Array(arrayBuffer).set(new Uint8Array(contents), 0);\n\treturn arrayBuffer;\n};\n\n// Retrieve the closest `length` that is both >= and a power of 2\nconst getNewContentsLength = length => SCALE_FACTOR ** Math.ceil(Math.log(length) / Math.log(SCALE_FACTOR));\n\nconst SCALE_FACTOR = 2;\n\nconst finalizeArrayBuffer = ({contents, length}) => hasArrayBufferResize() ? contents : contents.slice(0, length);\n\n// `ArrayBuffer.slice()` is slow. When `ArrayBuffer.resize()` is available\n// (Node >=20.0.0, Safari >=16.4 and Chrome), we can use it instead.\n// eslint-disable-next-line no-warning-comments\n// TODO: remove after dropping support for Node 20.\n// eslint-disable-next-line no-warning-comments\n// TODO: use `ArrayBuffer.transferToFixedLength()` instead once it is available\nconst hasArrayBufferResize = () => 'resize' in ArrayBuffer.prototype;\n\nconst arrayBufferMethods = {\n\tinit: initArrayBuffer,\n\tconvertChunk: {\n\t\tstring: useTextEncoder,\n\t\tbuffer: useUint8Array,\n\t\tarrayBuffer: useUint8Array,\n\t\tdataView: useUint8ArrayWithOffset,\n\t\ttypedArray: useUint8ArrayWithOffset,\n\t\tothers: throwObjectStream,\n\t},\n\tgetSize: getLengthProperty,\n\ttruncateChunk: truncateArrayBufferChunk,\n\taddChunk: addArrayBufferChunk,\n\tgetFinalChunk: noop,\n\tfinalize: finalizeArrayBuffer,\n};\n", "import {getStreamContents} from './contents.js';\nimport {\n\tidentity,\n\tgetContentsProperty,\n\tthrowObjectStream,\n\tgetLengthProperty,\n} from './utils.js';\n\nexport async function getStreamAsString(stream, options) {\n\treturn getStreamContents(stream, stringMethods, options);\n}\n\nconst initString = () => ({contents: '', textDecoder: new TextDecoder()});\n\nconst useTextDecoder = (chunk, {textDecoder}) => textDecoder.decode(chunk, {stream: true});\n\nconst addStringChunk = (convertedChunk, {contents}) => contents + convertedChunk;\n\nconst truncateStringChunk = (convertedChunk, chunkSize) => convertedChunk.slice(0, chunkSize);\n\nconst getFinalStringChunk = ({textDecoder}) => {\n\tconst finalChunk = textDecoder.decode();\n\treturn finalChunk === '' ? undefined : finalChunk;\n};\n\nconst stringMethods = {\n\tinit: initString,\n\tconvertChunk: {\n\t\tstring: identity,\n\t\tbuffer: useTextDecoder,\n\t\tarrayBuffer: useTextDecoder,\n\t\tdataView: useTextDecoder,\n\t\ttypedArray: useTextDecoder,\n\t\tothers: throwObjectStream,\n\t},\n\tgetSize: getLengthProperty,\n\ttruncateChunk: truncateStringChunk,\n\taddChunk: addStringChunk,\n\tgetFinalChunk: getFinalStringChunk,\n\tfinalize: getContentsProperty,\n};\n", "import {logFinalResult} from '../verbose/complete.js';\n\n// Applies the `reject` option.\n// Also print the final log line with `verbose`.\nexport const handleResult = (result, verboseInfo, {reject}) => {\n\tlogFinalResult(result, reject, verboseInfo);\n\n\tif (result.failed && reject) {\n\t\tthrow result;\n\t}\n\n\treturn result;\n};\n", "import prettyMs from 'pretty-ms';\nimport {gray} from 'yoctocolors';\nimport {escapeLines} from '../arguments/escape.js';\nimport {getDurationMs} from '../return/duration.js';\nimport {isVerbose} from './info.js';\nimport {verboseLog} from './log.js';\nimport {logError} from './error.js';\n\n// When `verbose` is `short|full`, print each command's completion, duration and error\nexport const logFinalResult = ({shortMessage, failed, durationMs}, reject, verboseInfo) => {\n\tlogResult({\n\t\tmessage: shortMessage,\n\t\tfailed,\n\t\treject,\n\t\tdurationMs,\n\t\tverboseInfo,\n\t});\n};\n\n// Same but for early validation errors\nexport const logEarlyResult = (error, startTime, verboseInfo) => {\n\tlogResult({\n\t\tmessage: escapeLines(String(error)),\n\t\tfailed: true,\n\t\treject: true,\n\t\tdurationMs: getDurationMs(startTime),\n\t\tverboseInfo,\n\t});\n};\n\nconst logResult = ({message, failed, reject, durationMs, verboseInfo: {verbose, verboseId}}) => {\n\tif (!isVerbose(verbose)) {\n\t\treturn;\n\t}\n\n\tconst icon = getIcon(failed, reject);\n\tlogError({\n\t\tmessage,\n\t\tfailed,\n\t\treject,\n\t\tverboseId,\n\t\ticon,\n\t});\n\tlogDuration(durationMs, verboseId, icon);\n};\n\nconst logDuration = (durationMs, verboseId, icon) => {\n\tconst durationMessage = `(done in ${prettyMs(durationMs)})`;\n\tverboseLog(durationMessage, verboseId, icon, gray);\n};\n\nconst getIcon = (failed, reject) => {\n\tif (!failed) {\n\t\treturn 'success';\n\t}\n\n\treturn reject ? 'error' : 'warning';\n};\n", "import parseMilliseconds from 'parse-ms';\n\nconst isZero = value => value === 0 || value === 0n;\nconst pluralize = (word, count) => (count === 1 || count === 1n) ? word : `${word}s`;\n\nconst SECOND_ROUNDING_EPSILON = 0.000_000_1;\nconst ONE_DAY_IN_MILLISECONDS = 24n * 60n * 60n * 1000n;\n\nexport default function prettyMilliseconds(milliseconds, options) {\n\tconst isBigInt = typeof milliseconds === 'bigint';\n\tif (!isBigInt && !Number.isFinite(milliseconds)) {\n\t\tthrow new TypeError('Expected a finite number or bigint');\n\t}\n\n\toptions = {...options};\n\n\tif (options.colonNotation) {\n\t\toptions.compact = false;\n\t\toptions.formatSubMilliseconds = false;\n\t\toptions.separateMilliseconds = false;\n\t\toptions.verbose = false;\n\t}\n\n\tif (options.compact) {\n\t\toptions.unitCount = 1;\n\t\toptions.secondsDecimalDigits = 0;\n\t\toptions.millisecondsDecimalDigits = 0;\n\t}\n\n\tlet result = [];\n\n\tconst floorDecimals = (value, decimalDigits) => {\n\t\tconst flooredInterimValue = Math.floor((value * (10 ** decimalDigits)) + SECOND_ROUNDING_EPSILON);\n\t\tconst flooredValue = Math.round(flooredInterimValue) / (10 ** decimalDigits);\n\t\treturn flooredValue.toFixed(decimalDigits);\n\t};\n\n\tconst add = (value, long, short, valueString) => {\n\t\tif (\n\t\t\t(result.length === 0 || !options.colonNotation)\n\t\t\t&& isZero(value)\n\t\t\t&& !(options.colonNotation && short === 'm')) {\n\t\t\treturn;\n\t\t}\n\n\t\tvalueString = valueString ?? String(value);\n\t\tif (options.colonNotation) {\n\t\t\tconst wholeDigits = valueString.includes('.') ? valueString.split('.')[0].length : valueString.length;\n\t\t\tconst minLength = result.length > 0 ? 2 : 1;\n\t\t\tvalueString = '0'.repeat(Math.max(0, minLength - wholeDigits)) + valueString;\n\t\t} else {\n\t\t\tvalueString += options.verbose ? ' ' + pluralize(long, value) : short;\n\t\t}\n\n\t\tresult.push(valueString);\n\t};\n\n\tconst parsed = parseMilliseconds(milliseconds);\n\tconst days = BigInt(parsed.days);\n\n\tadd(days / 365n, 'year', 'y');\n\tadd(days % 365n, 'day', 'd');\n\tadd(Number(parsed.hours), 'hour', 'h');\n\tadd(Number(parsed.minutes), 'minute', 'm');\n\n\tif (\n\t\toptions.separateMilliseconds\n\t\t|| options.formatSubMilliseconds\n\t\t|| (!options.colonNotation && milliseconds < 1000)\n\t) {\n\t\tconst seconds = Number(parsed.seconds);\n\t\tconst milliseconds = Number(parsed.milliseconds);\n\t\tconst microseconds = Number(parsed.microseconds);\n\t\tconst nanoseconds = Number(parsed.nanoseconds);\n\n\t\tadd(seconds, 'second', 's');\n\n\t\tif (options.formatSubMilliseconds) {\n\t\t\tadd(milliseconds, 'millisecond', 'ms');\n\t\t\tadd(microseconds, 'microsecond', '\u00B5s');\n\t\t\tadd(nanoseconds, 'nanosecond', 'ns');\n\t\t} else {\n\t\t\tconst millisecondsAndBelow\n\t\t\t\t= milliseconds\n\t\t\t\t+ (microseconds / 1000)\n\t\t\t\t+ (nanoseconds / 1e6);\n\n\t\t\tconst millisecondsDecimalDigits\n\t\t\t\t= typeof options.millisecondsDecimalDigits === 'number'\n\t\t\t\t\t? options.millisecondsDecimalDigits\n\t\t\t\t\t: 0;\n\n\t\t\tconst roundedMilliseconds = millisecondsAndBelow >= 1\n\t\t\t\t? Math.round(millisecondsAndBelow)\n\t\t\t\t: Math.ceil(millisecondsAndBelow);\n\n\t\t\tconst millisecondsString = millisecondsDecimalDigits\n\t\t\t\t? millisecondsAndBelow.toFixed(millisecondsDecimalDigits)\n\t\t\t\t: roundedMilliseconds;\n\n\t\t\tadd(\n\t\t\t\tNumber.parseFloat(millisecondsString),\n\t\t\t\t'millisecond',\n\t\t\t\t'ms',\n\t\t\t\tmillisecondsString,\n\t\t\t);\n\t\t}\n\t} else {\n\t\tconst seconds = (\n\t\t\t(isBigInt ? Number(milliseconds % ONE_DAY_IN_MILLISECONDS) : milliseconds)\n\t\t\t/ 1000\n\t\t) % 60;\n\t\tconst secondsDecimalDigits\n\t\t\t= typeof options.secondsDecimalDigits === 'number'\n\t\t\t\t? options.secondsDecimalDigits\n\t\t\t\t: 1;\n\t\tconst secondsFixed = floorDecimals(seconds, secondsDecimalDigits);\n\t\tconst secondsString = options.keepDecimalsOnWholeSeconds\n\t\t\t? secondsFixed\n\t\t\t: secondsFixed.replace(/\\.0+$/, '');\n\t\tadd(Number.parseFloat(secondsString), 'second', 's', secondsString);\n\t}\n\n\tif (result.length === 0) {\n\t\treturn '0' + (options.verbose ? ' milliseconds' : 'ms');\n\t}\n\n\tconst separator = options.colonNotation ? ':' : ' ';\n\tif (typeof options.unitCount === 'number') {\n\t\tresult = result.slice(0, Math.max(options.unitCount, 1));\n\t}\n\n\treturn result.join(separator);\n}\n", "const toZeroIfInfinity = value => Number.isFinite(value) ? value : 0;\n\nfunction parseNumber(milliseconds) {\n\treturn {\n\t\tdays: Math.trunc(milliseconds / 86_400_000),\n\t\thours: Math.trunc(milliseconds / 3_600_000 % 24),\n\t\tminutes: Math.trunc(milliseconds / 60_000 % 60),\n\t\tseconds: Math.trunc(milliseconds / 1000 % 60),\n\t\tmilliseconds: Math.trunc(milliseconds % 1000),\n\t\tmicroseconds: Math.trunc(toZeroIfInfinity(milliseconds * 1000) % 1000),\n\t\tnanoseconds: Math.trunc(toZeroIfInfinity(milliseconds * 1e6) % 1000),\n\t};\n}\n\nfunction parseBigint(milliseconds) {\n\treturn {\n\t\tdays: milliseconds / 86_400_000n,\n\t\thours: milliseconds / 3_600_000n % 24n,\n\t\tminutes: milliseconds / 60_000n % 60n,\n\t\tseconds: milliseconds / 1000n % 60n,\n\t\tmilliseconds: milliseconds % 1000n,\n\t\tmicroseconds: 0n,\n\t\tnanoseconds: 0n,\n\t};\n}\n\nexport default function parseMilliseconds(milliseconds) {\n\tswitch (typeof milliseconds) {\n\t\tcase 'number': {\n\t\t\tif (Number.isFinite(milliseconds)) {\n\t\t\t\treturn parseNumber(milliseconds);\n\t\t\t}\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase 'bigint': {\n\t\t\treturn parseBigint(milliseconds);\n\t\t}\n\n\t\t// No default\n\t}\n\n\tthrow new TypeError('Expected a finite number or bigint');\n}\n", "import {redBright, yellowBright} from 'yoctocolors';\nimport {verboseLog} from './log.js';\n\n// When `verbose` is `short|full`, print each command's error when it fails\nexport const logError = ({message, failed, reject, verboseId, icon}) => {\n\tif (!failed) {\n\t\treturn;\n\t}\n\n\tconst color = reject ? redBright : yellowBright;\n\tverboseLog(message, verboseId, icon, color);\n};\n", "import {readFileSync} from 'node:fs';\nimport {bufferToUint8Array} from '../utils/uint-array.js';\nimport {handleStdio} from './handle.js';\nimport {TYPE_TO_MESSAGE} from './type.js';\n\n// Normalize `input`, `inputFile`, `stdin`, `stdout` and `stderr` options, before spawning, in sync mode\nexport const handleStdioSync = (options, verboseInfo) => handleStdio(addPropertiesSync, options, verboseInfo, true);\n\nconst forbiddenIfSync = ({type, optionName}) => {\n\tthrowInvalidSyncValue(optionName, TYPE_TO_MESSAGE[type]);\n};\n\nconst forbiddenNativeIfSync = ({optionName, value}) => {\n\tif (value === 'ipc' || value === 'overlapped') {\n\t\tthrowInvalidSyncValue(optionName, `\"${value}\"`);\n\t}\n\n\treturn {};\n};\n\nconst throwInvalidSyncValue = (optionName, value) => {\n\tthrow new TypeError(`The \\`${optionName}\\` option cannot be ${value} with synchronous methods.`);\n};\n\n// Create streams used internally for redirecting when using specific values for the `std*` options, in sync mode.\n// For example, `stdin: {file}` reads the file synchronously, then passes it as the `input` option.\nconst addProperties = {\n\tgenerator() {},\n\tasyncGenerator: forbiddenIfSync,\n\twebStream: forbiddenIfSync,\n\tnodeStream: forbiddenIfSync,\n\twebTransform: forbiddenIfSync,\n\tduplex: forbiddenIfSync,\n\tasyncIterable: forbiddenIfSync,\n\tnative: forbiddenNativeIfSync,\n};\n\nconst addPropertiesSync = {\n\tinput: {\n\t\t...addProperties,\n\t\tfileUrl: ({value}) => ({contents: [bufferToUint8Array(readFileSync(value))]}),\n\t\tfilePath: ({value: {file}}) => ({contents: [bufferToUint8Array(readFileSync(file))]}),\n\t\tfileNumber: forbiddenIfSync,\n\t\titerable: ({value}) => ({contents: [...value]}),\n\t\tstring: ({value}) => ({contents: [value]}),\n\t\tuint8Array: ({value}) => ({contents: [value]}),\n\t},\n\toutput: {\n\t\t...addProperties,\n\t\tfileUrl: ({value}) => ({path: value}),\n\t\tfilePath: ({value: {file}}) => ({path: file}),\n\t\tfileNumber: ({value}) => ({path: value}),\n\t\titerable: forbiddenIfSync,\n\t\tstring: forbiddenIfSync,\n\t\tuint8Array: forbiddenIfSync,\n\t},\n};\n", "import {getStreamName, isStandardStream} from '../utils/standard-stream.js';\nimport {normalizeTransforms} from '../transform/normalize.js';\nimport {getFdObjectMode} from '../transform/object-mode.js';\nimport {\n\tgetStdioItemType,\n\tisRegularUrl,\n\tisUnknownStdioString,\n\tFILE_TYPES,\n} from './type.js';\nimport {getStreamDirection} from './direction.js';\nimport {normalizeStdioOption} from './stdio-option.js';\nimport {handleNativeStream} from './native.js';\nimport {handleInputOptions} from './input-option.js';\nimport {filterDuplicates, getDuplicateStream} from './duplicate.js';\n\n// Handle `input`, `inputFile`, `stdin`, `stdout` and `stderr` options, before spawning, in async/sync mode\n// They are converted into an array of `fileDescriptors`.\n// Each `fileDescriptor` is normalized, validated and contains all information necessary for further handling.\nexport const handleStdio = (addProperties, options, verboseInfo, isSync) => {\n\tconst stdio = normalizeStdioOption(options, isSync);\n\tconst initialFileDescriptors = stdio.map((stdioOption, fdNumber) => getFileDescriptor({\n\t\tstdioOption,\n\t\tfdNumber,\n\t\toptions,\n\t\tisSync,\n\t}));\n\tconst fileDescriptors = getFinalFileDescriptors({\n\t\tinitialFileDescriptors,\n\t\taddProperties,\n\t\toptions,\n\t\tisSync,\n\t});\n\toptions.stdio = fileDescriptors.map(({stdioItems}) => forwardStdio(stdioItems));\n\treturn fileDescriptors;\n};\n\nconst getFileDescriptor = ({stdioOption, fdNumber, options, isSync}) => {\n\tconst optionName = getStreamName(fdNumber);\n\tconst {stdioItems: initialStdioItems, isStdioArray} = initializeStdioItems({\n\t\tstdioOption,\n\t\tfdNumber,\n\t\toptions,\n\t\toptionName,\n\t});\n\tconst direction = getStreamDirection(initialStdioItems, fdNumber, optionName);\n\tconst stdioItems = initialStdioItems.map(stdioItem => handleNativeStream({\n\t\tstdioItem,\n\t\tisStdioArray,\n\t\tfdNumber,\n\t\tdirection,\n\t\tisSync,\n\t}));\n\tconst normalizedStdioItems = normalizeTransforms(stdioItems, optionName, direction, options);\n\tconst objectMode = getFdObjectMode(normalizedStdioItems, direction);\n\tvalidateFileObjectMode(normalizedStdioItems, objectMode);\n\treturn {direction, objectMode, stdioItems: normalizedStdioItems};\n};\n\n// We make sure passing an array with a single item behaves the same as passing that item without an array.\n// This is what users would expect.\n// For example, `stdout: ['ignore']` behaves the same as `stdout: 'ignore'`.\nconst initializeStdioItems = ({stdioOption, fdNumber, options, optionName}) => {\n\tconst values = Array.isArray(stdioOption) ? stdioOption : [stdioOption];\n\tconst initialStdioItems = [\n\t\t...values.map(value => initializeStdioItem(value, optionName)),\n\t\t...handleInputOptions(options, fdNumber),\n\t];\n\n\tconst stdioItems = filterDuplicates(initialStdioItems);\n\tconst isStdioArray = stdioItems.length > 1;\n\tvalidateStdioArray(stdioItems, isStdioArray, optionName);\n\tvalidateStreams(stdioItems);\n\treturn {stdioItems, isStdioArray};\n};\n\nconst initializeStdioItem = (value, optionName) => ({\n\ttype: getStdioItemType(value, optionName),\n\tvalue,\n\toptionName,\n});\n\nconst validateStdioArray = (stdioItems, isStdioArray, optionName) => {\n\tif (stdioItems.length === 0) {\n\t\tthrow new TypeError(`The \\`${optionName}\\` option must not be an empty array.`);\n\t}\n\n\tif (!isStdioArray) {\n\t\treturn;\n\t}\n\n\tfor (const {value, optionName} of stdioItems) {\n\t\tif (INVALID_STDIO_ARRAY_OPTIONS.has(value)) {\n\t\t\tthrow new Error(`The \\`${optionName}\\` option must not include \\`${value}\\`.`);\n\t\t}\n\t}\n};\n\n// Using those `stdio` values together with others for the same stream does not make sense, so we make it fail.\n// However, we do allow it if the array has a single item.\nconst INVALID_STDIO_ARRAY_OPTIONS = new Set(['ignore', 'ipc']);\n\nconst validateStreams = stdioItems => {\n\tfor (const stdioItem of stdioItems) {\n\t\tvalidateFileStdio(stdioItem);\n\t}\n};\n\nconst validateFileStdio = ({type, value, optionName}) => {\n\tif (isRegularUrl(value)) {\n\t\tthrow new TypeError(`The \\`${optionName}: URL\\` option must use the \\`file:\\` scheme.\nFor example, you can use the \\`pathToFileURL()\\` method of the \\`url\\` core module.`);\n\t}\n\n\tif (isUnknownStdioString(type, value)) {\n\t\tthrow new TypeError(`The \\`${optionName}: { file: '...' }\\` option must be used instead of \\`${optionName}: '...'\\`.`);\n\t}\n};\n\nconst validateFileObjectMode = (stdioItems, objectMode) => {\n\tif (!objectMode) {\n\t\treturn;\n\t}\n\n\tconst fileStdioItem = stdioItems.find(({type}) => FILE_TYPES.has(type));\n\tif (fileStdioItem !== undefined) {\n\t\tthrow new TypeError(`The \\`${fileStdioItem.optionName}\\` option cannot use both files and transforms in objectMode.`);\n\t}\n};\n\n// Some `stdio` values require Execa to create streams.\n// For example, file paths create file read/write streams.\n// Those transformations are specified in `addProperties`, which is both direction-specific and type-specific.\nconst getFinalFileDescriptors = ({initialFileDescriptors, addProperties, options, isSync}) => {\n\tconst fileDescriptors = [];\n\n\ttry {\n\t\tfor (const fileDescriptor of initialFileDescriptors) {\n\t\t\tfileDescriptors.push(getFinalFileDescriptor({\n\t\t\t\tfileDescriptor,\n\t\t\t\tfileDescriptors,\n\t\t\t\taddProperties,\n\t\t\t\toptions,\n\t\t\t\tisSync,\n\t\t\t}));\n\t\t}\n\n\t\treturn fileDescriptors;\n\t} catch (error) {\n\t\tcleanupCustomStreams(fileDescriptors);\n\t\tthrow error;\n\t}\n};\n\nconst getFinalFileDescriptor = ({\n\tfileDescriptor: {direction, objectMode, stdioItems},\n\tfileDescriptors,\n\taddProperties,\n\toptions,\n\tisSync,\n}) => {\n\tconst finalStdioItems = stdioItems.map(stdioItem => addStreamProperties({\n\t\tstdioItem,\n\t\taddProperties,\n\t\tdirection,\n\t\toptions,\n\t\tfileDescriptors,\n\t\tisSync,\n\t}));\n\treturn {direction, objectMode, stdioItems: finalStdioItems};\n};\n\nconst addStreamProperties = ({stdioItem, addProperties, direction, options, fileDescriptors, isSync}) => {\n\tconst duplicateStream = getDuplicateStream({\n\t\tstdioItem,\n\t\tdirection,\n\t\tfileDescriptors,\n\t\tisSync,\n\t});\n\n\tif (duplicateStream !== undefined) {\n\t\treturn {...stdioItem, stream: duplicateStream};\n\t}\n\n\treturn {\n\t\t...stdioItem,\n\t\t...addProperties[direction][stdioItem.type](stdioItem, options),\n\t};\n};\n\n// The stream error handling is performed by the piping logic above, which cannot be performed before subprocess spawning.\n// If the subprocess spawning fails (e.g. due to an invalid command), the streams need to be manually destroyed.\n// We need to create those streams before subprocess spawning, in case their creation fails, e.g. when passing an invalid generator as argument.\n// Like this, an exception would be thrown, which would prevent spawning a subprocess.\nexport const cleanupCustomStreams = fileDescriptors => {\n\tfor (const {stdioItems} of fileDescriptors) {\n\t\tfor (const {stream} of stdioItems) {\n\t\t\tif (stream !== undefined && !isStandardStream(stream)) {\n\t\t\t\tstream.destroy();\n\t\t\t}\n\t\t}\n\t}\n};\n\n// When the `std*: Iterable | WebStream | URL | filePath`, `input` or `inputFile` option is used, we pipe to `subprocess.std*`.\n// When the `std*: Array` option is used, we emulate some of the native values ('inherit', Node.js stream and file descriptor integer). To do so, we also need to pipe to `subprocess.std*`.\n// Therefore the `std*` options must be either `pipe` or `overlapped`. Other values do not set `subprocess.std*`.\nconst forwardStdio = stdioItems => {\n\tif (stdioItems.length > 1) {\n\t\treturn stdioItems.some(({value}) => value === 'overlapped') ? 'overlapped' : 'pipe';\n\t}\n\n\tconst [{type, value}] = stdioItems;\n\treturn type === 'native' ? value : 'pipe';\n};\n", "import isPlainObj from 'is-plain-obj';\nimport {BINARY_ENCODINGS} from '../arguments/encoding-option.js';\nimport {TRANSFORM_TYPES} from '../stdio/type.js';\nimport {getTransformObjectModes} from './object-mode.js';\n\n// Transforms generators/duplex/TransformStream can have multiple shapes.\n// This normalizes it and applies default values.\nexport const normalizeTransforms = (stdioItems, optionName, direction, options) => [\n\t...stdioItems.filter(({type}) => !TRANSFORM_TYPES.has(type)),\n\t...getTransforms(stdioItems, optionName, direction, options),\n];\n\nconst getTransforms = (stdioItems, optionName, direction, {encoding}) => {\n\tconst transforms = stdioItems.filter(({type}) => TRANSFORM_TYPES.has(type));\n\tconst newTransforms = Array.from({length: transforms.length});\n\n\tfor (const [index, stdioItem] of Object.entries(transforms)) {\n\t\tnewTransforms[index] = normalizeTransform({\n\t\t\tstdioItem,\n\t\t\tindex: Number(index),\n\t\t\tnewTransforms,\n\t\t\toptionName,\n\t\t\tdirection,\n\t\t\tencoding,\n\t\t});\n\t}\n\n\treturn sortTransforms(newTransforms, direction);\n};\n\nconst normalizeTransform = ({stdioItem, stdioItem: {type}, index, newTransforms, optionName, direction, encoding}) => {\n\tif (type === 'duplex') {\n\t\treturn normalizeDuplex({stdioItem, optionName});\n\t}\n\n\tif (type === 'webTransform') {\n\t\treturn normalizeTransformStream({\n\t\t\tstdioItem,\n\t\t\tindex,\n\t\t\tnewTransforms,\n\t\t\tdirection,\n\t\t});\n\t}\n\n\treturn normalizeGenerator({\n\t\tstdioItem,\n\t\tindex,\n\t\tnewTransforms,\n\t\tdirection,\n\t\tencoding,\n\t});\n};\n\nconst normalizeDuplex = ({\n\tstdioItem,\n\tstdioItem: {\n\t\tvalue: {\n\t\t\ttransform,\n\t\t\ttransform: {writableObjectMode, readableObjectMode},\n\t\t\tobjectMode = readableObjectMode,\n\t\t},\n\t},\n\toptionName,\n}) => {\n\tif (objectMode && !readableObjectMode) {\n\t\tthrow new TypeError(`The \\`${optionName}.objectMode\\` option can only be \\`true\\` if \\`new Duplex({objectMode: true})\\` is used.`);\n\t}\n\n\tif (!objectMode && readableObjectMode) {\n\t\tthrow new TypeError(`The \\`${optionName}.objectMode\\` option cannot be \\`false\\` if \\`new Duplex({objectMode: true})\\` is used.`);\n\t}\n\n\treturn {\n\t\t...stdioItem,\n\t\tvalue: {transform, writableObjectMode, readableObjectMode},\n\t};\n};\n\nconst normalizeTransformStream = ({stdioItem, stdioItem: {value}, index, newTransforms, direction}) => {\n\tconst {transform, objectMode} = isPlainObj(value) ? value : {transform: value};\n\tconst {writableObjectMode, readableObjectMode} = getTransformObjectModes(objectMode, index, newTransforms, direction);\n\treturn ({\n\t\t...stdioItem,\n\t\tvalue: {transform, writableObjectMode, readableObjectMode},\n\t});\n};\n\nconst normalizeGenerator = ({stdioItem, stdioItem: {value}, index, newTransforms, direction, encoding}) => {\n\tconst {\n\t\ttransform,\n\t\tfinal,\n\t\tbinary: binaryOption = false,\n\t\tpreserveNewlines = false,\n\t\tobjectMode,\n\t} = isPlainObj(value) ? value : {transform: value};\n\tconst binary = binaryOption || BINARY_ENCODINGS.has(encoding);\n\tconst {writableObjectMode, readableObjectMode} = getTransformObjectModes(objectMode, index, newTransforms, direction);\n\treturn {\n\t\t...stdioItem,\n\t\tvalue: {\n\t\t\ttransform,\n\t\t\tfinal,\n\t\t\tbinary,\n\t\t\tpreserveNewlines,\n\t\t\twritableObjectMode,\n\t\t\treadableObjectMode,\n\t\t},\n\t};\n};\n\nconst sortTransforms = (newTransforms, direction) => direction === 'input' ? newTransforms.reverse() : newTransforms;\n", "import {isStream as isNodeStream, isDuplexStream} from 'is-stream';\nimport isPlainObj from 'is-plain-obj';\nimport {isUint8Array} from '../utils/uint-array.js';\n\n// The `stdin`/`stdout`/`stderr` option can be of many types. This detects it.\nexport const getStdioItemType = (value, optionName) => {\n\tif (isAsyncGenerator(value)) {\n\t\treturn 'asyncGenerator';\n\t}\n\n\tif (isSyncGenerator(value)) {\n\t\treturn 'generator';\n\t}\n\n\tif (isUrl(value)) {\n\t\treturn 'fileUrl';\n\t}\n\n\tif (isFilePathObject(value)) {\n\t\treturn 'filePath';\n\t}\n\n\tif (isWebStream(value)) {\n\t\treturn 'webStream';\n\t}\n\n\tif (isNodeStream(value, {checkOpen: false})) {\n\t\treturn 'native';\n\t}\n\n\tif (isUint8Array(value)) {\n\t\treturn 'uint8Array';\n\t}\n\n\tif (isAsyncIterableObject(value)) {\n\t\treturn 'asyncIterable';\n\t}\n\n\tif (isIterableObject(value)) {\n\t\treturn 'iterable';\n\t}\n\n\tif (isTransformStream(value)) {\n\t\treturn getTransformStreamType({transform: value}, optionName);\n\t}\n\n\tif (isTransformOptions(value)) {\n\t\treturn getTransformObjectType(value, optionName);\n\t}\n\n\treturn 'native';\n};\n\nconst getTransformObjectType = (value, optionName) => {\n\tif (isDuplexStream(value.transform, {checkOpen: false})) {\n\t\treturn getDuplexType(value, optionName);\n\t}\n\n\tif (isTransformStream(value.transform)) {\n\t\treturn getTransformStreamType(value, optionName);\n\t}\n\n\treturn getGeneratorObjectType(value, optionName);\n};\n\nconst getDuplexType = (value, optionName) => {\n\tvalidateNonGeneratorType(value, optionName, 'Duplex stream');\n\treturn 'duplex';\n};\n\nconst getTransformStreamType = (value, optionName) => {\n\tvalidateNonGeneratorType(value, optionName, 'web TransformStream');\n\treturn 'webTransform';\n};\n\nconst validateNonGeneratorType = ({final, binary, objectMode}, optionName, typeName) => {\n\tcheckUndefinedOption(final, `${optionName}.final`, typeName);\n\tcheckUndefinedOption(binary, `${optionName}.binary`, typeName);\n\tcheckBooleanOption(objectMode, `${optionName}.objectMode`);\n};\n\nconst checkUndefinedOption = (value, optionName, typeName) => {\n\tif (value !== undefined) {\n\t\tthrow new TypeError(`The \\`${optionName}\\` option can only be defined when using a generator, not a ${typeName}.`);\n\t}\n};\n\nconst getGeneratorObjectType = ({transform, final, binary, objectMode}, optionName) => {\n\tif (transform !== undefined && !isGenerator(transform)) {\n\t\tthrow new TypeError(`The \\`${optionName}.transform\\` option must be a generator, a Duplex stream or a web TransformStream.`);\n\t}\n\n\tif (isDuplexStream(final, {checkOpen: false})) {\n\t\tthrow new TypeError(`The \\`${optionName}.final\\` option must not be a Duplex stream.`);\n\t}\n\n\tif (isTransformStream(final)) {\n\t\tthrow new TypeError(`The \\`${optionName}.final\\` option must not be a web TransformStream.`);\n\t}\n\n\tif (final !== undefined && !isGenerator(final)) {\n\t\tthrow new TypeError(`The \\`${optionName}.final\\` option must be a generator.`);\n\t}\n\n\tcheckBooleanOption(binary, `${optionName}.binary`);\n\tcheckBooleanOption(objectMode, `${optionName}.objectMode`);\n\n\treturn isAsyncGenerator(transform) || isAsyncGenerator(final) ? 'asyncGenerator' : 'generator';\n};\n\nconst checkBooleanOption = (value, optionName) => {\n\tif (value !== undefined && typeof value !== 'boolean') {\n\t\tthrow new TypeError(`The \\`${optionName}\\` option must use a boolean.`);\n\t}\n};\n\nconst isGenerator = value => isAsyncGenerator(value) || isSyncGenerator(value);\nexport const isAsyncGenerator = value => Object.prototype.toString.call(value) === '[object AsyncGeneratorFunction]';\nconst isSyncGenerator = value => Object.prototype.toString.call(value) === '[object GeneratorFunction]';\nconst isTransformOptions = value => isPlainObj(value)\n\t&& (value.transform !== undefined || value.final !== undefined);\n\nexport const isUrl = value => Object.prototype.toString.call(value) === '[object URL]';\nexport const isRegularUrl = value => isUrl(value) && value.protocol !== 'file:';\n\nconst isFilePathObject = value => isPlainObj(value)\n\t&& Object.keys(value).length === 1\n\t&& isFilePathString(value.file);\nexport const isFilePathString = file => typeof file === 'string';\n\nexport const isUnknownStdioString = (type, value) => type === 'native'\n\t&& typeof value === 'string'\n\t&& !KNOWN_STDIO_STRINGS.has(value);\nconst KNOWN_STDIO_STRINGS = new Set(['ipc', 'ignore', 'inherit', 'overlapped', 'pipe']);\n\nconst isReadableStream = value => Object.prototype.toString.call(value) === '[object ReadableStream]';\nexport const isWritableStream = value => Object.prototype.toString.call(value) === '[object WritableStream]';\nconst isWebStream = value => isReadableStream(value) || isWritableStream(value);\nconst isTransformStream = value => isReadableStream(value?.readable) && isWritableStream(value?.writable);\n\nconst isAsyncIterableObject = value => isObject(value) && typeof value[Symbol.asyncIterator] === 'function';\nconst isIterableObject = value => isObject(value) && typeof value[Symbol.iterator] === 'function';\nconst isObject = value => typeof value === 'object' && value !== null;\n\n// Types which modify `subprocess.std*`\nexport const TRANSFORM_TYPES = new Set(['generator', 'asyncGenerator', 'duplex', 'webTransform']);\n// Types which write to a file or a file descriptor\nexport const FILE_TYPES = new Set(['fileUrl', 'filePath', 'fileNumber']);\n// When two file descriptors of this type share the same target, we need to do some special logic\nexport const SPECIAL_DUPLICATE_TYPES_SYNC = new Set(['fileUrl', 'filePath']);\nexport const SPECIAL_DUPLICATE_TYPES = new Set([...SPECIAL_DUPLICATE_TYPES_SYNC, 'webStream', 'nodeStream']);\n// Do not allow two file descriptors of this type sharing the same target\nexport const FORBID_DUPLICATE_TYPES = new Set(['webTransform', 'duplex']);\n\n// Convert types to human-friendly strings for error messages\nexport const TYPE_TO_MESSAGE = {\n\tgenerator: 'a generator',\n\tasyncGenerator: 'an async generator',\n\tfileUrl: 'a file URL',\n\tfilePath: 'a file path string',\n\tfileNumber: 'a file descriptor number',\n\twebStream: 'a web stream',\n\tnodeStream: 'a Node.js stream',\n\twebTransform: 'a web TransformStream',\n\tduplex: 'a Duplex stream',\n\tnative: 'any value',\n\titerable: 'an iterable',\n\tasyncIterable: 'an async iterable',\n\tstring: 'a string',\n\tuint8Array: 'a Uint8Array',\n};\n", "import {TRANSFORM_TYPES} from '../stdio/type.js';\n\n/*\nRetrieve the `objectMode`s of a single transform.\n`objectMode` determines the return value's type, i.e. the `readableObjectMode`.\nThe chunk argument's type is based on the previous generator's return value, i.e. the `writableObjectMode` is based on the previous `readableObjectMode`.\nThe last input's generator is read by `subprocess.stdin` which:\n- should not be in `objectMode` for performance reasons.\n- can only be strings, Buffers and Uint8Arrays.\nTherefore its `readableObjectMode` must be `false`.\nThe same applies to the first output's generator's `writableObjectMode`.\n*/\nexport const getTransformObjectModes = (objectMode, index, newTransforms, direction) => direction === 'output'\n\t? getOutputObjectModes(objectMode, index, newTransforms)\n\t: getInputObjectModes(objectMode, index, newTransforms);\n\nconst getOutputObjectModes = (objectMode, index, newTransforms) => {\n\tconst writableObjectMode = index !== 0 && newTransforms[index - 1].value.readableObjectMode;\n\tconst readableObjectMode = objectMode ?? writableObjectMode;\n\treturn {writableObjectMode, readableObjectMode};\n};\n\nconst getInputObjectModes = (objectMode, index, newTransforms) => {\n\tconst writableObjectMode = index === 0\n\t\t? objectMode === true\n\t\t: newTransforms[index - 1].value.readableObjectMode;\n\tconst readableObjectMode = index !== newTransforms.length - 1 && (objectMode ?? writableObjectMode);\n\treturn {writableObjectMode, readableObjectMode};\n};\n\n// Retrieve the `objectMode` of a file descriptor, e.g. `stdout` or `stderr`\nexport const getFdObjectMode = (stdioItems, direction) => {\n\tconst lastTransform = stdioItems.findLast(({type}) => TRANSFORM_TYPES.has(type));\n\tif (lastTransform === undefined) {\n\t\treturn false;\n\t}\n\n\treturn direction === 'input'\n\t\t? lastTransform.value.writableObjectMode\n\t\t: lastTransform.value.readableObjectMode;\n};\n", "import process from 'node:process';\nimport {\n\tisStream as isNodeStream,\n\tisReadableStream as isNodeReadableStream,\n\tisWritableStream as isNodeWritableStream,\n} from 'is-stream';\nimport {isWritableStream} from './type.js';\n\n// For `stdio[fdNumber]` beyond stdin/stdout/stderr, we need to guess whether the value passed is intended for inputs or outputs.\n// This allows us to know whether to pipe _into_ or _from_ the stream.\n// When `stdio[fdNumber]` is a single value, this guess is fairly straightforward.\n// However, when it is an array instead, we also need to make sure the different values are not incompatible with each other.\nexport const getStreamDirection = (stdioItems, fdNumber, optionName) => {\n\tconst directions = stdioItems.map(stdioItem => getStdioItemDirection(stdioItem, fdNumber));\n\n\tif (directions.includes('input') && directions.includes('output')) {\n\t\tthrow new TypeError(`The \\`${optionName}\\` option must not be an array of both readable and writable values.`);\n\t}\n\n\treturn directions.find(Boolean) ?? DEFAULT_DIRECTION;\n};\n\nconst getStdioItemDirection = ({type, value}, fdNumber) => KNOWN_DIRECTIONS[fdNumber] ?? guessStreamDirection[type](value);\n\n// `stdin`/`stdout`/`stderr` have a known direction\nconst KNOWN_DIRECTIONS = ['input', 'output', 'output'];\n\nconst anyDirection = () => undefined;\nconst alwaysInput = () => 'input';\n\n// `string` can only be added through the `input` option, i.e. does not need to be handled here\nconst guessStreamDirection = {\n\tgenerator: anyDirection,\n\tasyncGenerator: anyDirection,\n\tfileUrl: anyDirection,\n\tfilePath: anyDirection,\n\titerable: alwaysInput,\n\tasyncIterable: alwaysInput,\n\tuint8Array: alwaysInput,\n\twebStream: value => isWritableStream(value) ? 'output' : 'input',\n\tnodeStream(value) {\n\t\tif (!isNodeReadableStream(value, {checkOpen: false})) {\n\t\t\treturn 'output';\n\t\t}\n\n\t\treturn isNodeWritableStream(value, {checkOpen: false}) ? undefined : 'input';\n\t},\n\twebTransform: anyDirection,\n\tduplex: anyDirection,\n\tnative(value) {\n\t\tconst standardStreamDirection = getStandardStreamDirection(value);\n\t\tif (standardStreamDirection !== undefined) {\n\t\t\treturn standardStreamDirection;\n\t\t}\n\n\t\tif (isNodeStream(value, {checkOpen: false})) {\n\t\t\treturn guessStreamDirection.nodeStream(value);\n\t\t}\n\t},\n};\n\nconst getStandardStreamDirection = value => {\n\tif ([0, process.stdin].includes(value)) {\n\t\treturn 'input';\n\t}\n\n\tif ([1, 2, process.stdout, process.stderr].includes(value)) {\n\t\treturn 'output';\n\t}\n};\n\n// When ambiguous, we initially keep the direction as `undefined`.\n// This allows arrays of `stdio` values to resolve the ambiguity.\n// For example, `stdio[3]: DuplexStream` is ambiguous, but `stdio[3]: [DuplexStream, WritableStream]` is not.\n// When the ambiguity remains, we default to `output` since it is the most common use case for additional file descriptors.\nconst DEFAULT_DIRECTION = 'output';\n", "import {STANDARD_STREAMS_ALIASES} from '../utils/standard-stream.js';\n\n// Add support for `stdin`/`stdout`/`stderr` as an alias for `stdio`.\n// Also normalize the `stdio` option.\nexport const normalizeStdioOption = ({stdio, ipc, buffer, verbose, ...options}, isSync) => {\n\tconst stdioArray = getStdioArray(stdio, options).map((stdioOption, fdNumber) => addDefaultValue(stdioOption, fdNumber));\n\treturn isSync ? normalizeStdioSync(stdioArray, buffer, verbose) : normalizeStdioAsync(stdioArray, ipc);\n};\n\nconst getStdioArray = (stdio, options) => {\n\tif (stdio === undefined) {\n\t\treturn STANDARD_STREAMS_ALIASES.map(alias => options[alias]);\n\t}\n\n\tif (hasAlias(options)) {\n\t\tthrow new Error(`It's not possible to provide \\`stdio\\` in combination with one of ${STANDARD_STREAMS_ALIASES.map(alias => `\\`${alias}\\``).join(', ')}`);\n\t}\n\n\tif (typeof stdio === 'string') {\n\t\treturn [stdio, stdio, stdio];\n\t}\n\n\tif (!Array.isArray(stdio)) {\n\t\tthrow new TypeError(`Expected \\`stdio\\` to be of type \\`string\\` or \\`Array\\`, got \\`${typeof stdio}\\``);\n\t}\n\n\tconst length = Math.max(stdio.length, STANDARD_STREAMS_ALIASES.length);\n\treturn Array.from({length}, (_, fdNumber) => stdio[fdNumber]);\n};\n\nconst hasAlias = options => STANDARD_STREAMS_ALIASES.some(alias => options[alias] !== undefined);\n\nconst addDefaultValue = (stdioOption, fdNumber) => {\n\tif (Array.isArray(stdioOption)) {\n\t\treturn stdioOption.map(item => addDefaultValue(item, fdNumber));\n\t}\n\n\tif (stdioOption === null || stdioOption === undefined) {\n\t\treturn fdNumber >= STANDARD_STREAMS_ALIASES.length ? 'ignore' : 'pipe';\n\t}\n\n\treturn stdioOption;\n};\n\n// Using `buffer: false` with synchronous methods implies `stdout`/`stderr`: `ignore`.\n// Unless the output is needed, e.g. due to `verbose: 'full'` or to redirecting to a file.\nconst normalizeStdioSync = (stdioArray, buffer, verbose) => stdioArray.map((stdioOption, fdNumber) =>\n\t!buffer[fdNumber]\n\t&& fdNumber !== 0\n\t&& verbose[fdNumber] !== 'full'\n\t&& isOutputPipeOnly(stdioOption)\n\t\t? 'ignore'\n\t\t: stdioOption);\n\nconst isOutputPipeOnly = stdioOption => stdioOption === 'pipe'\n\t|| (Array.isArray(stdioOption) && stdioOption.every(item => item === 'pipe'));\n\n// The `ipc` option adds an `ipc` item to the `stdio` option\nconst normalizeStdioAsync = (stdioArray, ipc) => ipc && !stdioArray.includes('ipc')\n\t? [...stdioArray, 'ipc']\n\t: stdioArray;\n", "import {readFileSync} from 'node:fs';\nimport tty from 'node:tty';\nimport {isStream as isNodeStream} from 'is-stream';\nimport {STANDARD_STREAMS} from '../utils/standard-stream.js';\nimport {bufferToUint8Array} from '../utils/uint-array.js';\nimport {serializeOptionValue} from '../arguments/fd-options.js';\n\n// When we use multiple `stdio` values for the same streams, we pass 'pipe' to `child_process.spawn()`.\n// We then emulate the piping done by core Node.js.\n// To do so, we transform the following values:\n//  - Node.js streams are marked as `type: nodeStream`\n//  - 'inherit' becomes `process.stdin|stdout|stderr`\n//  - any file descriptor integer becomes `process.stdio[fdNumber]`\n// All of the above transformations tell Execa to perform manual piping.\nexport const handleNativeStream = ({stdioItem, stdioItem: {type}, isStdioArray, fdNumber, direction, isSync}) => {\n\tif (!isStdioArray || type !== 'native') {\n\t\treturn stdioItem;\n\t}\n\n\treturn isSync\n\t\t? handleNativeStreamSync({stdioItem, fdNumber, direction})\n\t\t: handleNativeStreamAsync({stdioItem, fdNumber});\n};\n\n// Synchronous methods use a different logic.\n// 'inherit', file descriptors and process.std* are handled by readFileSync()/writeFileSync().\nconst handleNativeStreamSync = ({stdioItem, stdioItem: {value, optionName}, fdNumber, direction}) => {\n\tconst targetFd = getTargetFd({\n\t\tvalue,\n\t\toptionName,\n\t\tfdNumber,\n\t\tdirection,\n\t});\n\tif (targetFd !== undefined) {\n\t\treturn targetFd;\n\t}\n\n\tif (isNodeStream(value, {checkOpen: false})) {\n\t\tthrow new TypeError(`The \\`${optionName}: Stream\\` option cannot both be an array and include a stream with synchronous methods.`);\n\t}\n\n\treturn stdioItem;\n};\n\nconst getTargetFd = ({value, optionName, fdNumber, direction}) => {\n\tconst targetFdNumber = getTargetFdNumber(value, fdNumber);\n\tif (targetFdNumber === undefined) {\n\t\treturn;\n\t}\n\n\tif (direction === 'output') {\n\t\treturn {type: 'fileNumber', value: targetFdNumber, optionName};\n\t}\n\n\tif (tty.isatty(targetFdNumber)) {\n\t\tthrow new TypeError(`The \\`${optionName}: ${serializeOptionValue(value)}\\` option is invalid: it cannot be a TTY with synchronous methods.`);\n\t}\n\n\treturn {type: 'uint8Array', value: bufferToUint8Array(readFileSync(targetFdNumber)), optionName};\n};\n\nconst getTargetFdNumber = (value, fdNumber) => {\n\tif (value === 'inherit') {\n\t\treturn fdNumber;\n\t}\n\n\tif (typeof value === 'number') {\n\t\treturn value;\n\t}\n\n\tconst standardStreamIndex = STANDARD_STREAMS.indexOf(value);\n\tif (standardStreamIndex !== -1) {\n\t\treturn standardStreamIndex;\n\t}\n};\n\nconst handleNativeStreamAsync = ({stdioItem, stdioItem: {value, optionName}, fdNumber}) => {\n\tif (value === 'inherit') {\n\t\treturn {type: 'nodeStream', value: getStandardStream(fdNumber, value, optionName), optionName};\n\t}\n\n\tif (typeof value === 'number') {\n\t\treturn {type: 'nodeStream', value: getStandardStream(value, value, optionName), optionName};\n\t}\n\n\tif (isNodeStream(value, {checkOpen: false})) {\n\t\treturn {type: 'nodeStream', value, optionName};\n\t}\n\n\treturn stdioItem;\n};\n\n// Node.js does not allow to easily retrieve file descriptors beyond stdin/stdout/stderr as streams.\n//  - `fs.createReadStream()`/`fs.createWriteStream()` with the `fd` option do not work with character devices that use blocking reads/writes (such as interactive TTYs).\n//  - Using a TCP `Socket` would work but be rather complex to implement.\n// Since this is an edge case, we simply throw an error message.\n// See https://github.com/sindresorhus/execa/pull/643#discussion_r1435905707\nconst getStandardStream = (fdNumber, value, optionName) => {\n\tconst standardStream = STANDARD_STREAMS[fdNumber];\n\n\tif (standardStream === undefined) {\n\t\tthrow new TypeError(`The \\`${optionName}: ${value}\\` option is invalid: no such standard stream.`);\n\t}\n\n\treturn standardStream;\n};\n", "import {parseFd} from './specific.js';\n\n// Retrieve stream targeted by the `to` option\nexport const getToStream = (destination, to = 'stdin') => {\n\tconst isWritable = true;\n\tconst {options, fileDescriptors} = SUBPROCESS_OPTIONS.get(destination);\n\tconst fdNumber = getFdNumber(fileDescriptors, to, isWritable);\n\tconst destinationStream = destination.stdio[fdNumber];\n\n\tif (destinationStream === null) {\n\t\tthrow new TypeError(getInvalidStdioOptionMessage(fdNumber, to, options, isWritable));\n\t}\n\n\treturn destinationStream;\n};\n\n// Retrieve stream targeted by the `from` option\nexport const getFromStream = (source, from = 'stdout') => {\n\tconst isWritable = false;\n\tconst {options, fileDescriptors} = SUBPROCESS_OPTIONS.get(source);\n\tconst fdNumber = getFdNumber(fileDescriptors, from, isWritable);\n\tconst sourceStream = fdNumber === 'all' ? source.all : source.stdio[fdNumber];\n\n\tif (sourceStream === null || sourceStream === undefined) {\n\t\tthrow new TypeError(getInvalidStdioOptionMessage(fdNumber, from, options, isWritable));\n\t}\n\n\treturn sourceStream;\n};\n\n// Keeps track of the options passed to each Execa call\nexport const SUBPROCESS_OPTIONS = new WeakMap();\n\nconst getFdNumber = (fileDescriptors, fdName, isWritable) => {\n\tconst fdNumber = parseFdNumber(fdName, isWritable);\n\tvalidateFdNumber(fdNumber, fdName, isWritable, fileDescriptors);\n\treturn fdNumber;\n};\n\nconst parseFdNumber = (fdName, isWritable) => {\n\tconst fdNumber = parseFd(fdName);\n\tif (fdNumber !== undefined) {\n\t\treturn fdNumber;\n\t}\n\n\tconst {validOptions, defaultValue} = isWritable\n\t\t? {validOptions: '\"stdin\"', defaultValue: 'stdin'}\n\t\t: {validOptions: '\"stdout\", \"stderr\", \"all\"', defaultValue: 'stdout'};\n\tthrow new TypeError(`\"${getOptionName(isWritable)}\" must not be \"${fdName}\".\nIt must be ${validOptions} or \"fd3\", \"fd4\" (and so on).\nIt is optional and defaults to \"${defaultValue}\".`);\n};\n\nconst validateFdNumber = (fdNumber, fdName, isWritable, fileDescriptors) => {\n\tconst fileDescriptor = fileDescriptors[getUsedDescriptor(fdNumber)];\n\tif (fileDescriptor === undefined) {\n\t\tthrow new TypeError(`\"${getOptionName(isWritable)}\" must not be ${fdName}. That file descriptor does not exist.\nPlease set the \"stdio\" option to ensure that file descriptor exists.`);\n\t}\n\n\tif (fileDescriptor.direction === 'input' && !isWritable) {\n\t\tthrow new TypeError(`\"${getOptionName(isWritable)}\" must not be ${fdName}. It must be a readable stream, not writable.`);\n\t}\n\n\tif (fileDescriptor.direction !== 'input' && isWritable) {\n\t\tthrow new TypeError(`\"${getOptionName(isWritable)}\" must not be ${fdName}. It must be a writable stream, not readable.`);\n\t}\n};\n\nconst getInvalidStdioOptionMessage = (fdNumber, fdName, options, isWritable) => {\n\tif (fdNumber === 'all' && !options.all) {\n\t\treturn 'The \"all\" option must be true to use \"from: \\'all\\'\".';\n\t}\n\n\tconst {optionName, optionValue} = getInvalidStdioOption(fdNumber, options);\n\treturn `The \"${optionName}: ${serializeOptionValue(optionValue)}\" option is incompatible with using \"${getOptionName(isWritable)}: ${serializeOptionValue(fdName)}\".\nPlease set this option with \"pipe\" instead.`;\n};\n\nconst getInvalidStdioOption = (fdNumber, {stdin, stdout, stderr, stdio}) => {\n\tconst usedDescriptor = getUsedDescriptor(fdNumber);\n\n\tif (usedDescriptor === 0 && stdin !== undefined) {\n\t\treturn {optionName: 'stdin', optionValue: stdin};\n\t}\n\n\tif (usedDescriptor === 1 && stdout !== undefined) {\n\t\treturn {optionName: 'stdout', optionValue: stdout};\n\t}\n\n\tif (usedDescriptor === 2 && stderr !== undefined) {\n\t\treturn {optionName: 'stderr', optionValue: stderr};\n\t}\n\n\treturn {optionName: `stdio[${usedDescriptor}]`, optionValue: stdio[usedDescriptor]};\n};\n\nconst getUsedDescriptor = fdNumber => fdNumber === 'all' ? 1 : fdNumber;\n\nconst getOptionName = isWritable => isWritable ? 'to' : 'from';\n\nexport const serializeOptionValue = value => {\n\tif (typeof value === 'string') {\n\t\treturn `'${value}'`;\n\t}\n\n\treturn typeof value === 'number' ? `${value}` : 'Stream';\n};\n", "import {isReadableStream} from 'is-stream';\nimport {isUint8Array} from '../utils/uint-array.js';\nimport {isUrl, isFilePathString} from './type.js';\n\n// Append the `stdin` option with the `input` and `inputFile` options\nexport const handleInputOptions = ({input, inputFile}, fdNumber) => fdNumber === 0\n\t? [\n\t\t...handleInputOption(input),\n\t\t...handleInputFileOption(inputFile),\n\t]\n\t: [];\n\nconst handleInputOption = input => input === undefined ? [] : [{\n\ttype: getInputType(input),\n\tvalue: input,\n\toptionName: 'input',\n}];\n\nconst getInputType = input => {\n\tif (isReadableStream(input, {checkOpen: false})) {\n\t\treturn 'nodeStream';\n\t}\n\n\tif (typeof input === 'string') {\n\t\treturn 'string';\n\t}\n\n\tif (isUint8Array(input)) {\n\t\treturn 'uint8Array';\n\t}\n\n\tthrow new Error('The `input` option must be a string, a Uint8Array or a Node.js Readable stream.');\n};\n\nconst handleInputFileOption = inputFile => inputFile === undefined ? [] : [{\n\t...getInputFileType(inputFile),\n\toptionName: 'inputFile',\n}];\n\nconst getInputFileType = inputFile => {\n\tif (isUrl(inputFile)) {\n\t\treturn {type: 'fileUrl', value: inputFile};\n\t}\n\n\tif (isFilePathString(inputFile)) {\n\t\treturn {type: 'filePath', value: {file: inputFile}};\n\t}\n\n\tthrow new Error('The `inputFile` option must be a file path string or a file URL.');\n};\n", "import {\n\tSPECIAL_DUPLICATE_TYPES_SYNC,\n\tSPECIAL_DUPLICATE_TYPES,\n\tFORBID_DUPLICATE_TYPES,\n\tTYPE_TO_MESSAGE,\n} from './type.js';\n\n// Duplicates in the same file descriptor is most likely an error.\n// However, this can be useful with generators.\nexport const filterDuplicates = stdioItems => stdioItems.filter((stdioItemOne, indexOne) =>\n\tstdioItems.every((stdioItemTwo, indexTwo) => stdioItemOne.value !== stdioItemTwo.value\n\t\t|| indexOne >= indexTwo\n\t\t|| stdioItemOne.type === 'generator'\n\t\t|| stdioItemOne.type === 'asyncGenerator'));\n\n// Check if two file descriptors are sharing the same target.\n// For example `{stdout: {file: './output.txt'}, stderr: {file: './output.txt'}}`.\nexport const getDuplicateStream = ({stdioItem: {type, value, optionName}, direction, fileDescriptors, isSync}) => {\n\tconst otherStdioItems = getOtherStdioItems(fileDescriptors, type);\n\tif (otherStdioItems.length === 0) {\n\t\treturn;\n\t}\n\n\tif (isSync) {\n\t\tvalidateDuplicateStreamSync({\n\t\t\totherStdioItems,\n\t\t\ttype,\n\t\t\tvalue,\n\t\t\toptionName,\n\t\t\tdirection,\n\t\t});\n\t\treturn;\n\t}\n\n\tif (SPECIAL_DUPLICATE_TYPES.has(type)) {\n\t\treturn getDuplicateStreamInstance({\n\t\t\totherStdioItems,\n\t\t\ttype,\n\t\t\tvalue,\n\t\t\toptionName,\n\t\t\tdirection,\n\t\t});\n\t}\n\n\tif (FORBID_DUPLICATE_TYPES.has(type)) {\n\t\tvalidateDuplicateTransform({\n\t\t\totherStdioItems,\n\t\t\ttype,\n\t\t\tvalue,\n\t\t\toptionName,\n\t\t});\n\t}\n};\n\n// Values shared by multiple file descriptors\nconst getOtherStdioItems = (fileDescriptors, type) => fileDescriptors\n\t.flatMap(({direction, stdioItems}) => stdioItems\n\t\t.filter(stdioItem => stdioItem.type === type)\n\t\t.map((stdioItem => ({...stdioItem, direction}))));\n\n// With `execaSync()`, do not allow setting a file path both in input and output\nconst validateDuplicateStreamSync = ({otherStdioItems, type, value, optionName, direction}) => {\n\tif (SPECIAL_DUPLICATE_TYPES_SYNC.has(type)) {\n\t\tgetDuplicateStreamInstance({\n\t\t\totherStdioItems,\n\t\t\ttype,\n\t\t\tvalue,\n\t\t\toptionName,\n\t\t\tdirection,\n\t\t});\n\t}\n};\n\n// When two file descriptors share the file or stream, we need to re-use the same underlying stream.\n// Otherwise, the stream would be closed twice when piping ends.\n// This is only an issue with output file descriptors.\n// This is not a problem with generator functions since those create a new instance for each file descriptor.\n// We also forbid input and output file descriptors sharing the same file or stream, since that does not make sense.\nconst getDuplicateStreamInstance = ({otherStdioItems, type, value, optionName, direction}) => {\n\tconst duplicateStdioItems = otherStdioItems.filter(stdioItem => hasSameValue(stdioItem, value));\n\tif (duplicateStdioItems.length === 0) {\n\t\treturn;\n\t}\n\n\tconst differentStdioItem = duplicateStdioItems.find(stdioItem => stdioItem.direction !== direction);\n\tthrowOnDuplicateStream(differentStdioItem, optionName, type);\n\n\treturn direction === 'output' ? duplicateStdioItems[0].stream : undefined;\n};\n\nconst hasSameValue = ({type, value}, secondValue) => {\n\tif (type === 'filePath') {\n\t\treturn value.path === secondValue.path;\n\t}\n\n\tif (type === 'fileUrl') {\n\t\treturn value.href === secondValue.href;\n\t}\n\n\treturn value === secondValue;\n};\n\n// We do not allow two file descriptors to share the same Duplex or TransformStream.\n// This is because those are set directly to `subprocess.std*`.\n// For example, this could result in `subprocess.stdout` and `subprocess.stderr` being the same value.\n// This means reading from either would get data from both stdout and stderr.\nconst validateDuplicateTransform = ({otherStdioItems, type, value, optionName}) => {\n\tconst duplicateStdioItem = otherStdioItems.find(({value: {transform}}) => transform === value.transform);\n\tthrowOnDuplicateStream(duplicateStdioItem, optionName, type);\n};\n\nconst throwOnDuplicateStream = (stdioItem, optionName, type) => {\n\tif (stdioItem !== undefined) {\n\t\tthrow new TypeError(`The \\`${stdioItem.optionName}\\` and \\`${optionName}\\` options must not target ${TYPE_TO_MESSAGE[type]} that is the same.`);\n\t}\n};\n", "import stripFinalNewlineFunction from 'strip-final-newline';\n\n// Apply `stripFinalNewline` option, which applies to `result.stdout|stderr|all|stdio[*]`.\n// If the `lines` option is used, it is applied on each line, but using a different function.\nexport const stripNewline = (value, {stripFinalNewline}, fdNumber) => getStripFinalNewline(stripFinalNewline, fdNumber) && value !== undefined && !Array.isArray(value)\n\t? stripFinalNewlineFunction(value)\n\t: value;\n\n// Retrieve `stripFinalNewline` option value, including with `subprocess.all`\nexport const getStripFinalNewline = (stripFinalNewline, fdNumber) => fdNumber === 'all'\n\t? stripFinalNewline[1] || stripFinalNewline[2]\n\t: stripFinalNewline[fdNumber];\n", "import {runGeneratorsSync} from '../transform/generator.js';\nimport {joinToUint8Array, isUint8Array} from '../utils/uint-array.js';\nimport {TYPE_TO_MESSAGE} from '../stdio/type.js';\n\n// Apply `stdin`/`input`/`inputFile` options, before spawning, in sync mode, by converting it to the `input` option\nexport const addInputOptionsSync = (fileDescriptors, options) => {\n\tfor (const fdNumber of getInputFdNumbers(fileDescriptors)) {\n\t\taddInputOptionSync(fileDescriptors, fdNumber, options);\n\t}\n};\n\nconst getInputFdNumbers = fileDescriptors => new Set(Object.entries(fileDescriptors)\n\t.filter(([, {direction}]) => direction === 'input')\n\t.map(([fdNumber]) => Number(fdNumber)));\n\nconst addInputOptionSync = (fileDescriptors, fdNumber, options) => {\n\tconst {stdioItems} = fileDescriptors[fdNumber];\n\tconst allStdioItems = stdioItems.filter(({contents}) => contents !== undefined);\n\tif (allStdioItems.length === 0) {\n\t\treturn;\n\t}\n\n\tif (fdNumber !== 0) {\n\t\tconst [{type, optionName}] = allStdioItems;\n\t\tthrow new TypeError(`Only the \\`stdin\\` option, not \\`${optionName}\\`, can be ${TYPE_TO_MESSAGE[type]} with synchronous methods.`);\n\t}\n\n\tconst allContents = allStdioItems.map(({contents}) => contents);\n\tconst transformedContents = allContents.map(contents => applySingleInputGeneratorsSync(contents, stdioItems));\n\toptions.input = joinToUint8Array(transformedContents);\n};\n\nconst applySingleInputGeneratorsSync = (contents, stdioItems) => {\n\tconst newContents = runGeneratorsSync(contents, stdioItems, 'utf8', true);\n\tvalidateSerializable(newContents);\n\treturn joinToUint8Array(newContents);\n};\n\nconst validateSerializable = newContents => {\n\tconst invalidItem = newContents.find(item => typeof item !== 'string' && !isUint8Array(item));\n\tif (invalidItem !== undefined) {\n\t\tthrow new TypeError(`The \\`stdin\\` option is invalid: when passing objects as input, a transform must be used to serialize them to strings or Uint8Arrays: ${invalidItem}.`);\n\t}\n};\n", "import {Transform, getDefaultHighWaterMark} from 'node:stream';\nimport {isAsyncGenerator} from '../stdio/type.js';\nimport {getSplitLinesGenerator, getAppendNewlineGenerator} from './split.js';\nimport {getValidateTransformInput, getValidateTransformReturn} from './validate.js';\nimport {getEncodingTransformGenerator} from './encoding-transform.js';\nimport {\n\tpushChunks,\n\ttransformChunk,\n\tfinalChunks,\n\tdestroyTransform,\n} from './run-async.js';\nimport {\n\tpushChunksSync,\n\ttransformChunkSync,\n\tfinalChunksSync,\n\trunTransformSync,\n} from './run-sync.js';\n\n/*\nGenerators can be used to transform/filter standard streams.\n\nGenerators have a simple syntax, yet allows all of the following:\n- Sharing `state` between chunks\n- Flushing logic, by using a `final` function\n- Asynchronous logic\n- Emitting multiple chunks from a single source chunk, even if spaced in time, by using multiple `yield`\n- Filtering, by using no `yield`\n\nTherefore, there is no need to allow Node.js or web transform streams.\n\nThe `highWaterMark` is kept as the default value, since this is what `subprocess.std*` uses.\n\nChunks are currently processed serially. We could add a `concurrency` option to parallelize in the future.\n\nTransform an array of generator functions into a `Transform` stream.\n`Duplex.from(generator)` cannot be used because it does not allow setting the `objectMode` and `highWaterMark`.\n*/\nexport const generatorToStream = ({\n\tvalue,\n\tvalue: {transform, final, writableObjectMode, readableObjectMode},\n\toptionName,\n}, {encoding}) => {\n\tconst state = {};\n\tconst generators = addInternalGenerators(value, encoding, optionName);\n\n\tconst transformAsync = isAsyncGenerator(transform);\n\tconst finalAsync = isAsyncGenerator(final);\n\tconst transformMethod = transformAsync\n\t\t? pushChunks.bind(undefined, transformChunk, state)\n\t\t: pushChunksSync.bind(undefined, transformChunkSync);\n\tconst finalMethod = transformAsync || finalAsync\n\t\t? pushChunks.bind(undefined, finalChunks, state)\n\t\t: pushChunksSync.bind(undefined, finalChunksSync);\n\tconst destroyMethod = transformAsync || finalAsync\n\t\t? destroyTransform.bind(undefined, state)\n\t\t: undefined;\n\n\tconst stream = new Transform({\n\t\twritableObjectMode,\n\t\twritableHighWaterMark: getDefaultHighWaterMark(writableObjectMode),\n\t\treadableObjectMode,\n\t\treadableHighWaterMark: getDefaultHighWaterMark(readableObjectMode),\n\t\ttransform(chunk, encoding, done) {\n\t\t\ttransformMethod([chunk, generators, 0], this, done);\n\t\t},\n\t\tflush(done) {\n\t\t\tfinalMethod([generators], this, done);\n\t\t},\n\t\tdestroy: destroyMethod,\n\t});\n\treturn {stream};\n};\n\n// Applies transform generators in sync mode\nexport const runGeneratorsSync = (chunks, stdioItems, encoding, isInput) => {\n\tconst generators = stdioItems.filter(({type}) => type === 'generator');\n\tconst reversedGenerators = isInput ? generators.reverse() : generators;\n\n\tfor (const {value, optionName} of reversedGenerators) {\n\t\tconst generators = addInternalGenerators(value, encoding, optionName);\n\t\tchunks = runTransformSync(generators, chunks);\n\t}\n\n\treturn chunks;\n};\n\n// Generators used internally to convert the chunk type, validate it, and split into lines\nconst addInternalGenerators = (\n\t{transform, final, binary, writableObjectMode, readableObjectMode, preserveNewlines},\n\tencoding,\n\toptionName,\n) => {\n\tconst state = {};\n\treturn [\n\t\t{transform: getValidateTransformInput(writableObjectMode, optionName)},\n\t\tgetEncodingTransformGenerator(binary, encoding, writableObjectMode),\n\t\tgetSplitLinesGenerator(binary, preserveNewlines, writableObjectMode, state),\n\t\t{transform, final},\n\t\t{transform: getValidateTransformReturn(readableObjectMode, optionName)},\n\t\tgetAppendNewlineGenerator({\n\t\t\tbinary,\n\t\t\tpreserveNewlines,\n\t\t\treadableObjectMode,\n\t\t\tstate,\n\t\t}),\n\t].filter(Boolean);\n};\n", "// Split chunks line-wise for generators passed to the `std*` options\nexport const getSplitLinesGenerator = (binary, preserveNewlines, skipped, state) => binary || skipped\n\t? undefined\n\t: initializeSplitLines(preserveNewlines, state);\n\n// Same but for synchronous methods\nexport const splitLinesSync = (chunk, preserveNewlines, objectMode) => objectMode\n\t? chunk.flatMap(item => splitLinesItemSync(item, preserveNewlines))\n\t: splitLinesItemSync(chunk, preserveNewlines);\n\nconst splitLinesItemSync = (chunk, preserveNewlines) => {\n\tconst {transform, final} = initializeSplitLines(preserveNewlines, {});\n\treturn [...transform(chunk), ...final()];\n};\n\nconst initializeSplitLines = (preserveNewlines, state) => {\n\tstate.previousChunks = '';\n\treturn {\n\t\ttransform: splitGenerator.bind(undefined, state, preserveNewlines),\n\t\tfinal: linesFinal.bind(undefined, state),\n\t};\n};\n\n// This imperative logic is much faster than using `String.split()` and uses very low memory.\nconst splitGenerator = function * (state, preserveNewlines, chunk) {\n\tif (typeof chunk !== 'string') {\n\t\tyield chunk;\n\t\treturn;\n\t}\n\n\tlet {previousChunks} = state;\n\tlet start = -1;\n\n\tfor (let end = 0; end < chunk.length; end += 1) {\n\t\tif (chunk[end] === '\\n') {\n\t\t\tconst newlineLength = getNewlineLength(chunk, end, preserveNewlines, state);\n\t\t\tlet line = chunk.slice(start + 1, end + 1 - newlineLength);\n\n\t\t\tif (previousChunks.length > 0) {\n\t\t\t\tline = concatString(previousChunks, line);\n\t\t\t\tpreviousChunks = '';\n\t\t\t}\n\n\t\t\tyield line;\n\t\t\tstart = end;\n\t\t}\n\t}\n\n\tif (start !== chunk.length - 1) {\n\t\tpreviousChunks = concatString(previousChunks, chunk.slice(start + 1));\n\t}\n\n\tstate.previousChunks = previousChunks;\n};\n\nconst getNewlineLength = (chunk, end, preserveNewlines, state) => {\n\tif (preserveNewlines) {\n\t\treturn 0;\n\t}\n\n\tstate.isWindowsNewline = end !== 0 && chunk[end - 1] === '\\r';\n\treturn state.isWindowsNewline ? 2 : 1;\n};\n\nconst linesFinal = function * ({previousChunks}) {\n\tif (previousChunks.length > 0) {\n\t\tyield previousChunks;\n\t}\n};\n\n// Unless `preserveNewlines: true` is used, we strip the newline of each line.\n// This re-adds them after the user `transform` code has run.\nexport const getAppendNewlineGenerator = ({binary, preserveNewlines, readableObjectMode, state}) => binary || preserveNewlines || readableObjectMode\n\t? undefined\n\t: {transform: appendNewlineGenerator.bind(undefined, state)};\n\nconst appendNewlineGenerator = function * ({isWindowsNewline = false}, chunk) {\n\tconst {unixNewline, windowsNewline, LF, concatBytes} = typeof chunk === 'string' ? linesStringInfo : linesUint8ArrayInfo;\n\n\tif (chunk.at(-1) === LF) {\n\t\tyield chunk;\n\t\treturn;\n\t}\n\n\tconst newline = isWindowsNewline ? windowsNewline : unixNewline;\n\tyield concatBytes(chunk, newline);\n};\n\nconst concatString = (firstChunk, secondChunk) => `${firstChunk}${secondChunk}`;\n\nconst linesStringInfo = {\n\twindowsNewline: '\\r\\n',\n\tunixNewline: '\\n',\n\tLF: '\\n',\n\tconcatBytes: concatString,\n};\n\nconst concatUint8Array = (firstChunk, secondChunk) => {\n\tconst chunk = new Uint8Array(firstChunk.length + secondChunk.length);\n\tchunk.set(firstChunk, 0);\n\tchunk.set(secondChunk, firstChunk.length);\n\treturn chunk;\n};\n\nconst linesUint8ArrayInfo = {\n\twindowsNewline: new Uint8Array([0x0D, 0x0A]),\n\tunixNewline: new Uint8Array([0x0A]),\n\tLF: 0x0A,\n\tconcatBytes: concatUint8Array,\n};\n", "import {Buffer} from 'node:buffer';\nimport {isUint8Array} from '../utils/uint-array.js';\n\n// Validate the type of chunk argument passed to transform generators\nexport const getValidateTransformInput = (writableObjectMode, optionName) => writableObjectMode\n\t? undefined\n\t: validateStringTransformInput.bind(undefined, optionName);\n\nconst validateStringTransformInput = function * (optionName, chunk) {\n\tif (typeof chunk !== 'string' && !isUint8Array(chunk) && !Buffer.isBuffer(chunk)) {\n\t\tthrow new TypeError(`The \\`${optionName}\\` option's transform must use \"objectMode: true\" to receive as input: ${typeof chunk}.`);\n\t}\n\n\tyield chunk;\n};\n\n// Validate the type of the value returned by transform generators\nexport const getValidateTransformReturn = (readableObjectMode, optionName) => readableObjectMode\n\t? validateObjectTransformReturn.bind(undefined, optionName)\n\t: validateStringTransformReturn.bind(undefined, optionName);\n\nconst validateObjectTransformReturn = function * (optionName, chunk) {\n\tvalidateEmptyReturn(optionName, chunk);\n\tyield chunk;\n};\n\nconst validateStringTransformReturn = function * (optionName, chunk) {\n\tvalidateEmptyReturn(optionName, chunk);\n\n\tif (typeof chunk !== 'string' && !isUint8Array(chunk)) {\n\t\tthrow new TypeError(`The \\`${optionName}\\` option's function must yield a string or an Uint8Array, not ${typeof chunk}.`);\n\t}\n\n\tyield chunk;\n};\n\nconst validateEmptyReturn = (optionName, chunk) => {\n\tif (chunk === null || chunk === undefined) {\n\t\tthrow new TypeError(`The \\`${optionName}\\` option's function must not call \\`yield ${chunk}\\`.\nInstead, \\`yield\\` should either be called with a value, or not be called at all. For example:\n  if (condition) { yield value; }`);\n\t}\n};\n", "import {Buffer} from 'node:buffer';\nimport {StringDecoder} from 'node:string_decoder';\nimport {isUint8Array, bufferToUint8Array} from '../utils/uint-array.js';\n\n/*\nWhen using binary encodings, add an internal generator that converts chunks from `Buffer` to `string` or `Uint8Array`.\nChunks might be Buffer, Uint8Array or strings since:\n- `subprocess.stdout|stderr` emits Buffers\n- `subprocess.stdin.write()` accepts Buffer, Uint8Array or string\n- Previous generators might return Uint8Array or string\n\nHowever, those are converted to Buffer:\n- on writes: `Duplex.writable` `decodeStrings: true` default option\n- on reads: `Duplex.readable` `readableEncoding: null` default option\n*/\nexport const getEncodingTransformGenerator = (binary, encoding, skipped) => {\n\tif (skipped) {\n\t\treturn;\n\t}\n\n\tif (binary) {\n\t\treturn {transform: encodingUint8ArrayGenerator.bind(undefined, new TextEncoder())};\n\t}\n\n\tconst stringDecoder = new StringDecoder(encoding);\n\treturn {\n\t\ttransform: encodingStringGenerator.bind(undefined, stringDecoder),\n\t\tfinal: encodingStringFinal.bind(undefined, stringDecoder),\n\t};\n};\n\nconst encodingUint8ArrayGenerator = function * (textEncoder, chunk) {\n\tif (Buffer.isBuffer(chunk)) {\n\t\tyield bufferToUint8Array(chunk);\n\t} else if (typeof chunk === 'string') {\n\t\tyield textEncoder.encode(chunk);\n\t} else {\n\t\tyield chunk;\n\t}\n};\n\nconst encodingStringGenerator = function * (stringDecoder, chunk) {\n\tyield isUint8Array(chunk) ? stringDecoder.write(chunk) : chunk;\n};\n\nconst encodingStringFinal = function * (stringDecoder) {\n\tconst lastChunk = stringDecoder.end();\n\tif (lastChunk !== '') {\n\t\tyield lastChunk;\n\t}\n};\n", "import {callbackify} from 'node:util';\n\n// Applies a series of generator functions asynchronously\nexport const pushChunks = callbackify(async (getChunks, state, getChunksArguments, transformStream) => {\n\tstate.currentIterable = getChunks(...getChunksArguments);\n\n\ttry {\n\t\tfor await (const chunk of state.currentIterable) {\n\t\t\ttransformStream.push(chunk);\n\t\t}\n\t} finally {\n\t\tdelete state.currentIterable;\n\t}\n});\n\n// For each new chunk, apply each `transform()` method\nexport const transformChunk = async function * (chunk, generators, index) {\n\tif (index === generators.length) {\n\t\tyield chunk;\n\t\treturn;\n\t}\n\n\tconst {transform = identityGenerator} = generators[index];\n\tfor await (const transformedChunk of transform(chunk)) {\n\t\tyield * transformChunk(transformedChunk, generators, index + 1);\n\t}\n};\n\n// At the end, apply each `final()` method, followed by the `transform()` method of the next transforms\nexport const finalChunks = async function * (generators) {\n\tfor (const [index, {final}] of Object.entries(generators)) {\n\t\tyield * generatorFinalChunks(final, Number(index), generators);\n\t}\n};\n\nconst generatorFinalChunks = async function * (final, index, generators) {\n\tif (final === undefined) {\n\t\treturn;\n\t}\n\n\tfor await (const finalChunk of final()) {\n\t\tyield * transformChunk(finalChunk, generators, index + 1);\n\t}\n};\n\n// Cancel any ongoing async generator when the Transform is destroyed, e.g. when the subprocess errors\nexport const destroyTransform = callbackify(async ({currentIterable}, error) => {\n\tif (currentIterable !== undefined) {\n\t\tawait (error ? currentIterable.throw(error) : currentIterable.return());\n\t\treturn;\n\t}\n\n\tif (error) {\n\t\tthrow error;\n\t}\n});\n\nconst identityGenerator = function * (chunk) {\n\tyield chunk;\n};\n", "// Duplicate the code from `run-async.js` but as synchronous functions\nexport const pushChunksSync = (getChunksSync, getChunksArguments, transformStream, done) => {\n\ttry {\n\t\tfor (const chunk of getChunksSync(...getChunksArguments)) {\n\t\t\ttransformStream.push(chunk);\n\t\t}\n\n\t\tdone();\n\t} catch (error) {\n\t\tdone(error);\n\t}\n};\n\n// Run synchronous generators with `execaSync()`\nexport const runTransformSync = (generators, chunks) => [\n\t...chunks.flatMap(chunk => [...transformChunkSync(chunk, generators, 0)]),\n\t...finalChunksSync(generators),\n];\n\nexport const transformChunkSync = function * (chunk, generators, index) {\n\tif (index === generators.length) {\n\t\tyield chunk;\n\t\treturn;\n\t}\n\n\tconst {transform = identityGenerator} = generators[index];\n\tfor (const transformedChunk of transform(chunk)) {\n\t\tyield * transformChunkSync(transformedChunk, generators, index + 1);\n\t}\n};\n\nexport const finalChunksSync = function * (generators) {\n\tfor (const [index, {final}] of Object.entries(generators)) {\n\t\tyield * generatorFinalChunksSync(final, Number(index), generators);\n\t}\n};\n\nconst generatorFinalChunksSync = function * (final, index, generators) {\n\tif (final === undefined) {\n\t\treturn;\n\t}\n\n\tfor (const finalChunk of final()) {\n\t\tyield * transformChunkSync(finalChunk, generators, index + 1);\n\t}\n};\n\nconst identityGenerator = function * (chunk) {\n\tyield chunk;\n};\n", "import {writeFileSync, appendFileSync} from 'node:fs';\nimport {shouldLogOutput, logLinesSync} from '../verbose/output.js';\nimport {runGeneratorsSync} from '../transform/generator.js';\nimport {splitLinesSync} from '../transform/split.js';\nimport {joinToString, joinToUint8Array, bufferToUint8Array} from '../utils/uint-array.js';\nimport {FILE_TYPES} from '../stdio/type.js';\nimport {truncateMaxBufferSync} from './max-buffer.js';\n\n// Apply `stdout`/`stderr` options, after spawning, in sync mode\nexport const transformOutputSync = ({fileDescriptors, syncResult: {output}, options, isMaxBuffer, verboseInfo}) => {\n\tif (output === null) {\n\t\treturn {output: Array.from({length: 3})};\n\t}\n\n\tconst state = {};\n\tconst outputFiles = new Set([]);\n\tconst transformedOutput = output.map((result, fdNumber) =>\n\t\ttransformOutputResultSync({\n\t\t\tresult,\n\t\t\tfileDescriptors,\n\t\t\tfdNumber,\n\t\t\tstate,\n\t\t\toutputFiles,\n\t\t\tisMaxBuffer,\n\t\t\tverboseInfo,\n\t\t}, options));\n\treturn {output: transformedOutput, ...state};\n};\n\nconst transformOutputResultSync = (\n\t{result, fileDescriptors, fdNumber, state, outputFiles, isMaxBuffer, verboseInfo},\n\t{buffer, encoding, lines, stripFinalNewline, maxBuffer},\n) => {\n\tif (result === null) {\n\t\treturn;\n\t}\n\n\tconst truncatedResult = truncateMaxBufferSync(result, isMaxBuffer, maxBuffer);\n\tconst uint8ArrayResult = bufferToUint8Array(truncatedResult);\n\tconst {stdioItems, objectMode} = fileDescriptors[fdNumber];\n\tconst chunks = runOutputGeneratorsSync([uint8ArrayResult], stdioItems, encoding, state);\n\tconst {serializedResult, finalResult = serializedResult} = serializeChunks({\n\t\tchunks,\n\t\tobjectMode,\n\t\tencoding,\n\t\tlines,\n\t\tstripFinalNewline,\n\t\tfdNumber,\n\t});\n\n\tif (shouldLogOutput({\n\t\tstdioItems,\n\t\tencoding,\n\t\tverboseInfo,\n\t\tfdNumber,\n\t})) {\n\t\tconst linesArray = splitLinesSync(serializedResult, false, objectMode);\n\t\tlogLinesSync(linesArray, verboseInfo);\n\t}\n\n\tconst returnedResult = buffer[fdNumber] ? finalResult : undefined;\n\n\ttry {\n\t\tif (state.error === undefined) {\n\t\t\twriteToFiles(serializedResult, stdioItems, outputFiles);\n\t\t}\n\n\t\treturn returnedResult;\n\t} catch (error) {\n\t\tstate.error = error;\n\t\treturn returnedResult;\n\t}\n};\n\n// Applies transform generators to `stdout`/`stderr`\nconst runOutputGeneratorsSync = (chunks, stdioItems, encoding, state) => {\n\ttry {\n\t\treturn runGeneratorsSync(chunks, stdioItems, encoding, false);\n\t} catch (error) {\n\t\tstate.error = error;\n\t\treturn chunks;\n\t}\n};\n\n// The contents is converted to three stages:\n//  - serializedResult: used when the target is a file path/URL or a file descriptor (including 'inherit')\n//  - finalResult/returnedResult: returned as `result.std*`\nconst serializeChunks = ({chunks, objectMode, encoding, lines, stripFinalNewline, fdNumber}) => {\n\tif (objectMode) {\n\t\treturn {serializedResult: chunks};\n\t}\n\n\tif (encoding === 'buffer') {\n\t\treturn {serializedResult: joinToUint8Array(chunks)};\n\t}\n\n\tconst serializedResult = joinToString(chunks, encoding);\n\tif (lines[fdNumber]) {\n\t\treturn {serializedResult, finalResult: splitLinesSync(serializedResult, !stripFinalNewline[fdNumber], objectMode)};\n\t}\n\n\treturn {serializedResult};\n};\n\n// When the `std*` target is a file path/URL or a file descriptor\nconst writeToFiles = (serializedResult, stdioItems, outputFiles) => {\n\tfor (const {path} of stdioItems.filter(({type}) => FILE_TYPES.has(type))) {\n\t\tconst pathString = typeof path === 'string' ? path : path.toString();\n\t\tif (outputFiles.has(pathString)) {\n\t\t\tappendFileSync(path, serializedResult);\n\t\t} else {\n\t\t\toutputFiles.add(pathString);\n\t\t\twriteFileSync(path, serializedResult);\n\t\t}\n\t}\n};\n", "import {inspect} from 'node:util';\nimport {escapeLines} from '../arguments/escape.js';\nimport {BINARY_ENCODINGS} from '../arguments/encoding-option.js';\nimport {TRANSFORM_TYPES} from '../stdio/type.js';\nimport {verboseLog} from './log.js';\n\n// `ignore` opts-out of `verbose` for a specific stream.\n// `ipc` cannot use piping.\n// `inherit` would result in double printing.\n// They can also lead to double printing when passing file descriptor integers or `process.std*`.\n// This only leaves with `pipe` and `overlapped`.\nexport const shouldLogOutput = ({stdioItems, encoding, verboseInfo: {verbose}, fdNumber}) => fdNumber !== 'all'\n\t&& verbose[fdNumber] === 'full'\n\t&& !BINARY_ENCODINGS.has(encoding)\n\t&& fdUsesVerbose(fdNumber)\n\t&& (stdioItems.some(({type, value}) => type === 'native' && PIPED_STDIO_VALUES.has(value))\n\t|| stdioItems.every(({type}) => TRANSFORM_TYPES.has(type)));\n\n// Printing input streams would be confusing.\n// Files and streams can produce big outputs, which we don't want to print.\n// We could print `stdio[3+]` but it often is redirected to files and streams, with the same issue.\n// So we only print stdout and stderr.\nconst fdUsesVerbose = fdNumber => fdNumber === 1 || fdNumber === 2;\n\nconst PIPED_STDIO_VALUES = new Set(['pipe', 'overlapped']);\n\n// `verbose` printing logic with async methods\nexport const logLines = async (linesIterable, stream, verboseInfo) => {\n\tfor await (const line of linesIterable) {\n\t\tif (!isPipingStream(stream)) {\n\t\t\tlogLine(line, verboseInfo);\n\t\t}\n\t}\n};\n\n// `verbose` printing logic with sync methods\nexport const logLinesSync = (linesArray, verboseInfo) => {\n\tfor (const line of linesArray) {\n\t\tlogLine(line, verboseInfo);\n\t}\n};\n\n// When `subprocess.stdout|stderr.pipe()` is called, `verbose` becomes a noop.\n// This prevents the following problems:\n//  - `.pipe()` achieves the same result as using `stdout: 'inherit'`, `stdout: stream`, etc. which also make `verbose` a noop.\n//    For example, `subprocess.stdout.pipe(process.stdin)` would print each line twice.\n//  - When chaining subprocesses with `subprocess.pipe(otherSubprocess)`, only the last one should print its output.\n// Detecting whether `.pipe()` is impossible without monkey-patching it, so we use the following undocumented property.\n// This is not a critical behavior since changes of the following property would only make `verbose` more verbose.\nconst isPipingStream = stream => stream._readableState.pipes.length > 0;\n\n// When `verbose` is `full`, print stdout|stderr\nconst logLine = (line, {verboseId}) => {\n\tconst lines = typeof line === 'string' ? line : inspect(line);\n\tconst escapedLines = escapeLines(lines);\n\tconst spacedLines = escapedLines.replaceAll('\\t', ' '.repeat(TAB_SIZE));\n\tverboseLog(spacedLines, verboseId, 'output');\n};\n\n// Same as `util.inspect()`\nconst TAB_SIZE = 2;\n", "import {isUint8Array, concatUint8Arrays} from '../utils/uint-array.js';\nimport {stripNewline} from '../io/strip-newline.js';\n\n// Retrieve `result.all` with synchronous methods\nexport const getAllSync = ([, stdout, stderr], options) => {\n\tif (!options.all) {\n\t\treturn;\n\t}\n\n\tif (stdout === undefined) {\n\t\treturn stderr;\n\t}\n\n\tif (stderr === undefined) {\n\t\treturn stdout;\n\t}\n\n\tif (Array.isArray(stdout)) {\n\t\treturn Array.isArray(stderr)\n\t\t\t? [...stdout, ...stderr]\n\t\t\t: [...stdout, stripNewline(stderr, options, 'all')];\n\t}\n\n\tif (Array.isArray(stderr)) {\n\t\treturn [stripNewline(stdout, options, 'all'), ...stderr];\n\t}\n\n\tif (isUint8Array(stdout) && isUint8Array(stderr)) {\n\t\treturn concatUint8Arrays([stdout, stderr]);\n\t}\n\n\treturn `${stdout}${stderr}`;\n};\n", "import {DiscardedError} from '../return/final-error.js';\nimport {isMaxBufferSync} from '../io/max-buffer.js';\nimport {isFailedExit} from './exit-async.js';\n\n// Retrieve exit code, signal name and error information, with synchronous methods\nexport const getExitResultSync = ({error, status: exitCode, signal, output}, {maxBuffer}) => {\n\tconst resultError = getResultError(error, exitCode, signal);\n\tconst timedOut = resultError?.code === 'ETIMEDOUT';\n\tconst isMaxBuffer = isMaxBufferSync(resultError, output, maxBuffer);\n\treturn {\n\t\tresultError,\n\t\texitCode,\n\t\tsignal,\n\t\ttimedOut,\n\t\tisMaxBuffer,\n\t};\n};\n\nconst getResultError = (error, exitCode, signal) => {\n\tif (error !== undefined) {\n\t\treturn error;\n\t}\n\n\treturn isFailedExit(exitCode, signal) ? new DiscardedError() : undefined;\n};\n", "import {once} from 'node:events';\nimport {DiscardedError} from '../return/final-error.js';\n\n// If `error` is emitted before `spawn`, `exit` will never be emitted.\n// However, `error` might be emitted after `spawn`, e.g. with the `cancelSignal` option.\n// In that case, `exit` will still be emitted.\n// Since the `exit` event contains the signal name, we want to make sure we are listening for it.\n// This function also takes into account the following unlikely cases:\n//  - `exit` being emitted in the same microtask as `spawn`\n//  - `error` being emitted multiple times\nexport const waitForExit = async subprocess => {\n\tconst [spawnPayload, exitPayload] = await Promise.allSettled([\n\t\tonce(subprocess, 'spawn'),\n\t\tonce(subprocess, 'exit'),\n\t]);\n\n\tif (spawnPayload.status === 'rejected') {\n\t\treturn [];\n\t}\n\n\treturn exitPayload.status === 'rejected'\n\t\t? waitForSubprocessExit(subprocess)\n\t\t: exitPayload.value;\n};\n\nconst waitForSubprocessExit = async subprocess => {\n\ttry {\n\t\treturn await once(subprocess, 'exit');\n\t} catch {\n\t\treturn waitForSubprocessExit(subprocess);\n\t}\n};\n\n// Retrieve the final exit code and|or signal name\nexport const waitForSuccessfulExit = async exitPromise => {\n\tconst [exitCode, signal] = await exitPromise;\n\n\tif (!isSubprocessErrorExit(exitCode, signal) && isFailedExit(exitCode, signal)) {\n\t\tthrow new DiscardedError();\n\t}\n\n\treturn [exitCode, signal];\n};\n\n// When the subprocess fails due to an `error` event\nconst isSubprocessErrorExit = (exitCode, signal) => exitCode === undefined && signal === undefined;\n// When the subprocess fails due to a non-0 exit code or to a signal termination\nexport const isFailedExit = (exitCode, signal) => exitCode !== 0 || signal !== null;\n", "import {setMaxListeners} from 'node:events';\nimport {spawn} from 'node:child_process';\nimport {MaxBufferError} from 'get-stream';\nimport {handleCommand} from '../arguments/command.js';\nimport {normalizeOptions} from '../arguments/options.js';\nimport {SUBPROCESS_OPTIONS} from '../arguments/fd-options.js';\nimport {makeError, makeSuccessResult} from '../return/result.js';\nimport {handleResult} from '../return/reject.js';\nimport {handleEarlyError} from '../return/early-error.js';\nimport {handleStdioAsync} from '../stdio/handle-async.js';\nimport {stripNewline} from '../io/strip-newline.js';\nimport {pipeOutputAsync} from '../io/output-async.js';\nimport {subprocessKill} from '../terminate/kill.js';\nimport {cleanupOnExit} from '../terminate/cleanup.js';\nimport {pipeToSubprocess} from '../pipe/setup.js';\nimport {logEarlyResult} from '../verbose/complete.js';\nimport {makeAllStream} from '../resolve/all-async.js';\nimport {waitForSubprocessResult} from '../resolve/wait-subprocess.js';\nimport {addConvertedStreams} from '../convert/add.js';\nimport {createDeferred} from '../utils/deferred.js';\nimport {mergePromise} from './promise.js';\n\n// Main shared logic for all async methods: `execa()`, `execaCommand()`, `$`, `execaNode()`\nexport const execaCoreAsync = (rawFile, rawArguments, rawOptions, createNested) => {\n\tconst {file, commandArguments, command, escapedCommand, startTime, verboseInfo, options, fileDescriptors} = handleAsyncArguments(rawFile, rawArguments, rawOptions);\n\tconst {subprocess, promise} = spawnSubprocessAsync({\n\t\tfile,\n\t\tcommandArguments,\n\t\toptions,\n\t\tstartTime,\n\t\tverboseInfo,\n\t\tcommand,\n\t\tescapedCommand,\n\t\tfileDescriptors,\n\t});\n\tsubprocess.pipe = pipeToSubprocess.bind(undefined, {\n\t\tsource: subprocess,\n\t\tsourcePromise: promise,\n\t\tboundOptions: {},\n\t\tcreateNested,\n\t});\n\tmergePromise(subprocess, promise);\n\tSUBPROCESS_OPTIONS.set(subprocess, {options, fileDescriptors});\n\treturn subprocess;\n};\n\n// Compute arguments to pass to `child_process.spawn()`\nconst handleAsyncArguments = (rawFile, rawArguments, rawOptions) => {\n\tconst {command, escapedCommand, startTime, verboseInfo} = handleCommand(rawFile, rawArguments, rawOptions);\n\n\ttry {\n\t\tconst {file, commandArguments, options: normalizedOptions} = normalizeOptions(rawFile, rawArguments, rawOptions);\n\t\tconst options = handleAsyncOptions(normalizedOptions);\n\t\tconst fileDescriptors = handleStdioAsync(options, verboseInfo);\n\t\treturn {\n\t\t\tfile,\n\t\t\tcommandArguments,\n\t\t\tcommand,\n\t\t\tescapedCommand,\n\t\t\tstartTime,\n\t\t\tverboseInfo,\n\t\t\toptions,\n\t\t\tfileDescriptors,\n\t\t};\n\t} catch (error) {\n\t\tlogEarlyResult(error, startTime, verboseInfo);\n\t\tthrow error;\n\t}\n};\n\n// Options normalization logic specific to async methods.\n// Prevent passing the `timeout` option directly to `child_process.spawn()`.\nconst handleAsyncOptions = ({timeout, signal, cancelSignal, ...options}) => {\n\tif (signal !== undefined) {\n\t\tthrow new TypeError('The \"signal\" option has been renamed to \"cancelSignal\" instead.');\n\t}\n\n\treturn {...options, timeoutDuration: timeout, signal: cancelSignal};\n};\n\nconst spawnSubprocessAsync = ({file, commandArguments, options, startTime, verboseInfo, command, escapedCommand, fileDescriptors}) => {\n\tlet subprocess;\n\ttry {\n\t\tsubprocess = spawn(file, commandArguments, options);\n\t} catch (error) {\n\t\treturn handleEarlyError({\n\t\t\terror,\n\t\t\tcommand,\n\t\t\tescapedCommand,\n\t\t\tfileDescriptors,\n\t\t\toptions,\n\t\t\tstartTime,\n\t\t\tverboseInfo,\n\t\t});\n\t}\n\n\tconst controller = new AbortController();\n\tsetMaxListeners(Number.POSITIVE_INFINITY, controller.signal);\n\n\tconst originalStreams = [...subprocess.stdio];\n\tpipeOutputAsync(subprocess, fileDescriptors, controller);\n\tcleanupOnExit(subprocess, options, controller);\n\n\tconst onInternalError = createDeferred();\n\tsubprocess.kill = subprocessKill.bind(undefined, {\n\t\tkill: subprocess.kill.bind(subprocess),\n\t\toptions,\n\t\tonInternalError,\n\t\tcontroller,\n\t});\n\tsubprocess.all = makeAllStream(subprocess, options);\n\taddConvertedStreams(subprocess, options);\n\n\tconst promise = handlePromise({\n\t\tsubprocess,\n\t\toptions,\n\t\tstartTime,\n\t\tverboseInfo,\n\t\tfileDescriptors,\n\t\toriginalStreams,\n\t\tcommand,\n\t\tescapedCommand,\n\t\tonInternalError,\n\t\tcontroller,\n\t});\n\treturn {subprocess, promise};\n};\n\n// Asynchronous logic, as opposed to the previous logic which can be run synchronously, i.e. can be returned to user right away\nconst handlePromise = async ({subprocess, options, startTime, verboseInfo, fileDescriptors, originalStreams, command, escapedCommand, onInternalError, controller}) => {\n\tconst context = {timedOut: false};\n\n\tconst [errorInfo, [exitCode, signal], stdioResults, allResult] = await waitForSubprocessResult({\n\t\tsubprocess,\n\t\toptions,\n\t\tcontext,\n\t\tverboseInfo,\n\t\tfileDescriptors,\n\t\toriginalStreams,\n\t\tonInternalError,\n\t\tcontroller,\n\t});\n\tcontroller.abort();\n\tonInternalError.resolve();\n\n\tconst stdio = stdioResults.map((stdioResult, fdNumber) => stripNewline(stdioResult, options, fdNumber));\n\tconst all = stripNewline(allResult, options, 'all');\n\tconst result = getAsyncResult({\n\t\terrorInfo,\n\t\texitCode,\n\t\tsignal,\n\t\tstdio,\n\t\tall,\n\t\tcontext,\n\t\toptions,\n\t\tcommand,\n\t\tescapedCommand,\n\t\tstartTime,\n\t});\n\treturn handleResult(result, verboseInfo, options);\n};\n\nconst getAsyncResult = ({errorInfo, exitCode, signal, stdio, all, context, options, command, escapedCommand, startTime}) => 'error' in errorInfo\n\t? makeError({\n\t\terror: errorInfo.error,\n\t\tcommand,\n\t\tescapedCommand,\n\t\ttimedOut: context.timedOut,\n\t\tisCanceled: options.signal?.aborted === true,\n\t\tisMaxBuffer: errorInfo.error instanceof MaxBufferError,\n\t\texitCode,\n\t\tsignal,\n\t\tstdio,\n\t\tall,\n\t\toptions,\n\t\tstartTime,\n\t\tisSync: false,\n\t})\n\t: makeSuccessResult({\n\t\tcommand,\n\t\tescapedCommand,\n\t\tstdio,\n\t\tall,\n\t\toptions,\n\t\tstartTime,\n\t});\n", "import {ChildProcess} from 'node:child_process';\nimport {\n\tPassThrough,\n\tReadable,\n\tWritable,\n\tDuplex,\n} from 'node:stream';\nimport {cleanupCustomStreams} from '../stdio/handle.js';\nimport {makeEarlyError} from './result.js';\nimport {handleResult} from './reject.js';\n\n// When the subprocess fails to spawn.\n// We ensure the returned error is always both a promise and a subprocess.\nexport const handleEarlyError = ({error, command, escapedCommand, fileDescriptors, options, startTime, verboseInfo}) => {\n\tcleanupCustomStreams(fileDescriptors);\n\n\tconst subprocess = new ChildProcess();\n\tcreateDummyStreams(subprocess, fileDescriptors);\n\tObject.assign(subprocess, {readable, writable, duplex});\n\n\tconst earlyError = makeEarlyError({\n\t\terror,\n\t\tcommand,\n\t\tescapedCommand,\n\t\tfileDescriptors,\n\t\toptions,\n\t\tstartTime,\n\t\tisSync: false,\n\t});\n\tconst promise = handleDummyPromise(earlyError, verboseInfo, options);\n\treturn {subprocess, promise};\n};\n\nconst createDummyStreams = (subprocess, fileDescriptors) => {\n\tconst stdin = createDummyStream();\n\tconst stdout = createDummyStream();\n\tconst stderr = createDummyStream();\n\tconst extraStdio = Array.from({length: fileDescriptors.length - 3}, createDummyStream);\n\tconst all = createDummyStream();\n\tconst stdio = [stdin, stdout, stderr, ...extraStdio];\n\tObject.assign(subprocess, {\n\t\tstdin,\n\t\tstdout,\n\t\tstderr,\n\t\tall,\n\t\tstdio,\n\t});\n};\n\nconst createDummyStream = () => {\n\tconst stream = new PassThrough();\n\tstream.end();\n\treturn stream;\n};\n\nconst readable = () => new Readable({read() {}});\nconst writable = () => new Writable({write() {}});\nconst duplex = () => new Duplex({read() {}, write() {}});\n\nconst handleDummyPromise = async (error, verboseInfo, options) => handleResult(error, verboseInfo, options);\n", "import {createReadStream, createWriteStream} from 'node:fs';\nimport {Buffer} from 'node:buffer';\nimport {Readable, Writable, Duplex} from 'node:stream';\nimport {generatorToStream} from '../transform/generator.js';\nimport {handleStdio} from './handle.js';\nimport {TYPE_TO_MESSAGE} from './type.js';\n\n// Handle `input`, `inputFile`, `stdin`, `stdout` and `stderr` options, before spawning, in async mode\nexport const handleStdioAsync = (options, verboseInfo) => handleStdio(addPropertiesAsync, options, verboseInfo, false);\n\nconst forbiddenIfAsync = ({type, optionName}) => {\n\tthrow new TypeError(`The \\`${optionName}\\` option cannot be ${TYPE_TO_MESSAGE[type]}.`);\n};\n\n// Create streams used internally for piping when using specific values for the `std*` options, in async mode.\n// For example, `stdout: {file}` creates a file stream, which is piped from/to.\nconst addProperties = {\n\tfileNumber: forbiddenIfAsync,\n\tgenerator: generatorToStream,\n\tasyncGenerator: generatorToStream,\n\tnodeStream: ({value}) => ({stream: value}),\n\twebTransform({value: {transform, writableObjectMode, readableObjectMode}}) {\n\t\tconst objectMode = writableObjectMode || readableObjectMode;\n\t\tconst stream = Duplex.fromWeb(transform, {objectMode});\n\t\treturn {stream};\n\t},\n\tduplex: ({value: {transform}}) => ({stream: transform}),\n\tnative() {},\n};\n\nconst addPropertiesAsync = {\n\tinput: {\n\t\t...addProperties,\n\t\tfileUrl: ({value}) => ({stream: createReadStream(value)}),\n\t\tfilePath: ({value: {file}}) => ({stream: createReadStream(file)}),\n\t\twebStream: ({value}) => ({stream: Readable.fromWeb(value)}),\n\t\titerable: ({value}) => ({stream: Readable.from(value)}),\n\t\tasyncIterable: ({value}) => ({stream: Readable.from(value)}),\n\t\tstring: ({value}) => ({stream: Readable.from(value)}),\n\t\tuint8Array: ({value}) => ({stream: Readable.from(Buffer.from(value))}),\n\t},\n\toutput: {\n\t\t...addProperties,\n\t\tfileUrl: ({value}) => ({stream: createWriteStream(value)}),\n\t\tfilePath: ({value: {file}}) => ({stream: createWriteStream(file)}),\n\t\twebStream: ({value}) => ({stream: Writable.fromWeb(value)}),\n\t\titerable: forbiddenIfAsync,\n\t\tasyncIterable: forbiddenIfAsync,\n\t\tstring: forbiddenIfAsync,\n\t\tuint8Array: forbiddenIfAsync,\n\t},\n};\n", "import mergeStreams from '@sindresorhus/merge-streams';\nimport {isStandardStream} from '../utils/standard-stream.js';\nimport {incrementMaxListeners} from '../utils/max-listeners.js';\nimport {TRANSFORM_TYPES} from '../stdio/type.js';\nimport {pipeStreams} from './pipeline.js';\n\n// Handle `input`, `inputFile`, `stdin`, `stdout` and `stderr` options, after spawning, in async mode\n// When multiple input streams are used, we merge them to ensure the output stream ends only once each input stream has ended\nexport const pipeOutputAsync = (subprocess, fileDescriptors, controller) => {\n\tconst pipeGroups = new Map();\n\n\tfor (const [fdNumber, {stdioItems, direction}] of Object.entries(fileDescriptors)) {\n\t\tfor (const {stream} of stdioItems.filter(({type}) => TRANSFORM_TYPES.has(type))) {\n\t\t\tpipeTransform(subprocess, stream, direction, fdNumber);\n\t\t}\n\n\t\tfor (const {stream} of stdioItems.filter(({type}) => !TRANSFORM_TYPES.has(type))) {\n\t\t\tpipeStdioItem({\n\t\t\t\tsubprocess,\n\t\t\t\tstream,\n\t\t\t\tdirection,\n\t\t\t\tfdNumber,\n\t\t\t\tpipeGroups,\n\t\t\t\tcontroller,\n\t\t\t});\n\t\t}\n\t}\n\n\tfor (const [outputStream, inputStreams] of pipeGroups.entries()) {\n\t\tconst inputStream = inputStreams.length === 1 ? inputStreams[0] : mergeStreams(inputStreams);\n\t\tpipeStreams(inputStream, outputStream);\n\t}\n};\n\n// When using transforms, `subprocess.stdin|stdout|stderr|stdio` is directly mutated\nconst pipeTransform = (subprocess, stream, direction, fdNumber) => {\n\tif (direction === 'output') {\n\t\tpipeStreams(subprocess.stdio[fdNumber], stream);\n\t} else {\n\t\tpipeStreams(stream, subprocess.stdio[fdNumber]);\n\t}\n\n\tconst streamProperty = SUBPROCESS_STREAM_PROPERTIES[fdNumber];\n\tif (streamProperty !== undefined) {\n\t\tsubprocess[streamProperty] = stream;\n\t}\n\n\tsubprocess.stdio[fdNumber] = stream;\n};\n\nconst SUBPROCESS_STREAM_PROPERTIES = ['stdin', 'stdout', 'stderr'];\n\n// Most `std*` option values involve piping `subprocess.std*` to a stream.\n// The stream is either passed by the user or created internally.\nconst pipeStdioItem = ({subprocess, stream, direction, fdNumber, pipeGroups, controller}) => {\n\tif (stream === undefined) {\n\t\treturn;\n\t}\n\n\tsetStandardStreamMaxListeners(stream, controller);\n\n\tconst [inputStream, outputStream] = direction === 'output'\n\t\t? [stream, subprocess.stdio[fdNumber]]\n\t\t: [subprocess.stdio[fdNumber], stream];\n\tconst outputStreams = pipeGroups.get(inputStream) ?? [];\n\tpipeGroups.set(inputStream, [...outputStreams, outputStream]);\n};\n\n// Multiple subprocesses might be piping from/to `process.std*` at the same time.\n// This is not necessarily an error and should not print a `maxListeners` warning.\nconst setStandardStreamMaxListeners = (stream, {signal}) => {\n\tif (isStandardStream(stream)) {\n\t\tincrementMaxListeners(stream, MAX_LISTENERS_INCREMENT, signal);\n\t}\n};\n\n// `source.pipe(destination)` adds at most 1 listener for each event.\n// If `stdin` option is an array, the values might be combined with `merge-streams`.\n// That library also listens for `source` end, which adds 1 more listener.\nconst MAX_LISTENERS_INCREMENT = 2;\n", "import {on, once} from 'node:events';\nimport {PassThrough as PassThroughStream, getDefaultHighWaterMark} from 'node:stream';\nimport {finished} from 'node:stream/promises';\n\nexport default function mergeStreams(streams) {\n\tif (!Array.isArray(streams)) {\n\t\tthrow new TypeError(`Expected an array, got \\`${typeof streams}\\`.`);\n\t}\n\n\tfor (const stream of streams) {\n\t\tvalidateStream(stream);\n\t}\n\n\tconst objectMode = streams.some(({readableObjectMode}) => readableObjectMode);\n\tconst highWaterMark = getHighWaterMark(streams, objectMode);\n\tconst passThroughStream = new MergedStream({\n\t\tobjectMode,\n\t\twritableHighWaterMark: highWaterMark,\n\t\treadableHighWaterMark: highWaterMark,\n\t});\n\n\tfor (const stream of streams) {\n\t\tpassThroughStream.add(stream);\n\t}\n\n\treturn passThroughStream;\n}\n\nconst getHighWaterMark = (streams, objectMode) => {\n\tif (streams.length === 0) {\n\t\treturn getDefaultHighWaterMark(objectMode);\n\t}\n\n\tconst highWaterMarks = streams\n\t\t.filter(({readableObjectMode}) => readableObjectMode === objectMode)\n\t\t.map(({readableHighWaterMark}) => readableHighWaterMark);\n\treturn Math.max(...highWaterMarks);\n};\n\nclass MergedStream extends PassThroughStream {\n\t#streams = new Set([]);\n\t#ended = new Set([]);\n\t#aborted = new Set([]);\n\t#onFinished;\n\t#unpipeEvent = Symbol('unpipe');\n\t#streamPromises = new WeakMap();\n\n\tadd(stream) {\n\t\tvalidateStream(stream);\n\n\t\tif (this.#streams.has(stream)) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.#streams.add(stream);\n\n\t\tthis.#onFinished ??= onMergedStreamFinished(this, this.#streams, this.#unpipeEvent);\n\t\tconst streamPromise = endWhenStreamsDone({\n\t\t\tpassThroughStream: this,\n\t\t\tstream,\n\t\t\tstreams: this.#streams,\n\t\t\tended: this.#ended,\n\t\t\taborted: this.#aborted,\n\t\t\tonFinished: this.#onFinished,\n\t\t\tunpipeEvent: this.#unpipeEvent,\n\t\t});\n\t\tthis.#streamPromises.set(stream, streamPromise);\n\n\t\tstream.pipe(this, {end: false});\n\t}\n\n\tasync remove(stream) {\n\t\tvalidateStream(stream);\n\n\t\tif (!this.#streams.has(stream)) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst streamPromise = this.#streamPromises.get(stream);\n\t\tif (streamPromise === undefined) {\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.#streamPromises.delete(stream);\n\n\t\tstream.unpipe(this);\n\t\tawait streamPromise;\n\t\treturn true;\n\t}\n}\n\nconst onMergedStreamFinished = async (passThroughStream, streams, unpipeEvent) => {\n\tupdateMaxListeners(passThroughStream, PASSTHROUGH_LISTENERS_COUNT);\n\tconst controller = new AbortController();\n\n\ttry {\n\t\tawait Promise.race([\n\t\t\tonMergedStreamEnd(passThroughStream, controller),\n\t\t\tonInputStreamsUnpipe(passThroughStream, streams, unpipeEvent, controller),\n\t\t]);\n\t} finally {\n\t\tcontroller.abort();\n\t\tupdateMaxListeners(passThroughStream, -PASSTHROUGH_LISTENERS_COUNT);\n\t}\n};\n\nconst onMergedStreamEnd = async (passThroughStream, {signal}) => {\n\ttry {\n\t\tawait finished(passThroughStream, {signal, cleanup: true});\n\t} catch (error) {\n\t\terrorOrAbortStream(passThroughStream, error);\n\t\tthrow error;\n\t}\n};\n\nconst onInputStreamsUnpipe = async (passThroughStream, streams, unpipeEvent, {signal}) => {\n\tfor await (const [unpipedStream] of on(passThroughStream, 'unpipe', {signal})) {\n\t\tif (streams.has(unpipedStream)) {\n\t\t\tunpipedStream.emit(unpipeEvent);\n\t\t}\n\t}\n};\n\nconst validateStream = stream => {\n\tif (typeof stream?.pipe !== 'function') {\n\t\tthrow new TypeError(`Expected a readable stream, got: \\`${typeof stream}\\`.`);\n\t}\n};\n\nconst endWhenStreamsDone = async ({passThroughStream, stream, streams, ended, aborted, onFinished, unpipeEvent}) => {\n\tupdateMaxListeners(passThroughStream, PASSTHROUGH_LISTENERS_PER_STREAM);\n\tconst controller = new AbortController();\n\n\ttry {\n\t\tawait Promise.race([\n\t\t\tafterMergedStreamFinished(onFinished, stream, controller),\n\t\t\tonInputStreamEnd({\n\t\t\t\tpassThroughStream,\n\t\t\t\tstream,\n\t\t\t\tstreams,\n\t\t\t\tended,\n\t\t\t\taborted,\n\t\t\t\tcontroller,\n\t\t\t}),\n\t\t\tonInputStreamUnpipe({\n\t\t\t\tstream,\n\t\t\t\tstreams,\n\t\t\t\tended,\n\t\t\t\taborted,\n\t\t\t\tunpipeEvent,\n\t\t\t\tcontroller,\n\t\t\t}),\n\t\t]);\n\t} finally {\n\t\tcontroller.abort();\n\t\tupdateMaxListeners(passThroughStream, -PASSTHROUGH_LISTENERS_PER_STREAM);\n\t}\n\n\tif (streams.size > 0 && streams.size === ended.size + aborted.size) {\n\t\tif (ended.size === 0 && aborted.size > 0) {\n\t\t\tabortStream(passThroughStream);\n\t\t} else {\n\t\t\tendStream(passThroughStream);\n\t\t}\n\t}\n};\n\nconst afterMergedStreamFinished = async (onFinished, stream, {signal}) => {\n\ttry {\n\t\tawait onFinished;\n\t\tif (!signal.aborted) {\n\t\t\tabortStream(stream);\n\t\t}\n\t} catch (error) {\n\t\tif (!signal.aborted) {\n\t\t\terrorOrAbortStream(stream, error);\n\t\t}\n\t}\n};\n\nconst onInputStreamEnd = async ({passThroughStream, stream, streams, ended, aborted, controller: {signal}}) => {\n\ttry {\n\t\tawait finished(stream, {\n\t\t\tsignal,\n\t\t\tcleanup: true,\n\t\t\treadable: true,\n\t\t\twritable: false,\n\t\t});\n\t\tif (streams.has(stream)) {\n\t\t\tended.add(stream);\n\t\t}\n\t} catch (error) {\n\t\tif (signal.aborted || !streams.has(stream)) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (isAbortError(error)) {\n\t\t\taborted.add(stream);\n\t\t} else {\n\t\t\terrorStream(passThroughStream, error);\n\t\t}\n\t}\n};\n\nconst onInputStreamUnpipe = async ({stream, streams, ended, aborted, unpipeEvent, controller: {signal}}) => {\n\tawait once(stream, unpipeEvent, {signal});\n\n\tif (!stream.readable) {\n\t\treturn once(signal, 'abort', {signal});\n\t}\n\n\tstreams.delete(stream);\n\tended.delete(stream);\n\taborted.delete(stream);\n};\n\nconst endStream = stream => {\n\tif (stream.writable) {\n\t\tstream.end();\n\t}\n};\n\nconst errorOrAbortStream = (stream, error) => {\n\tif (isAbortError(error)) {\n\t\tabortStream(stream);\n\t} else {\n\t\terrorStream(stream, error);\n\t}\n};\n\n// This is the error thrown by `finished()` on `stream.destroy()`\nconst isAbortError = error => error?.code === 'ERR_STREAM_PREMATURE_CLOSE';\n\nconst abortStream = stream => {\n\tif (stream.readable || stream.writable) {\n\t\tstream.destroy();\n\t}\n};\n\n// `stream.destroy(error)` crashes the process with `uncaughtException` if no `error` event listener exists on `stream`.\n// We take care of error handling on user behalf, so we do not want this to happen.\nconst errorStream = (stream, error) => {\n\tif (!stream.destroyed) {\n\t\tstream.once('error', noop);\n\t\tstream.destroy(error);\n\t}\n};\n\nconst noop = () => {};\n\nconst updateMaxListeners = (passThroughStream, increment) => {\n\tconst maxListeners = passThroughStream.getMaxListeners();\n\tif (maxListeners !== 0 && maxListeners !== Number.POSITIVE_INFINITY) {\n\t\tpassThroughStream.setMaxListeners(maxListeners + increment);\n\t}\n};\n\n// Number of times `passThroughStream.on()` is called regardless of streams:\n//  - once due to `finished(passThroughStream)`\n//  - once due to `on(passThroughStream)`\nconst PASSTHROUGH_LISTENERS_COUNT = 2;\n\n// Number of times `passThroughStream.on()` is called per stream:\n//  - once due to `stream.pipe(passThroughStream)`\nconst PASSTHROUGH_LISTENERS_PER_STREAM = 1;\n", "import {addAbortListener} from 'node:events';\n\n// Temporarily increase the maximum number of listeners on an eventEmitter\nexport const incrementMaxListeners = (eventEmitter, maxListenersIncrement, signal) => {\n\tconst maxListeners = eventEmitter.getMaxListeners();\n\tif (maxListeners === 0 || maxListeners === Number.POSITIVE_INFINITY) {\n\t\treturn;\n\t}\n\n\teventEmitter.setMaxListeners(maxListeners + maxListenersIncrement);\n\taddAbortListener(signal, () => {\n\t\teventEmitter.setMaxListeners(eventEmitter.getMaxListeners() - maxListenersIncrement);\n\t});\n};\n", "import {finished} from 'node:stream/promises';\nimport {isStandardStream} from '../utils/standard-stream.js';\n\n// Similar to `Stream.pipeline(source, destination)`, but does not destroy standard streams\nexport const pipeStreams = (source, destination) => {\n\tsource.pipe(destination);\n\tonSourceFinish(source, destination);\n\tonDestinationFinish(source, destination);\n};\n\n// `source.pipe(destination)` makes `destination` end when `source` ends.\n// But it does not propagate aborts or errors. This function does it.\nconst onSourceFinish = async (source, destination) => {\n\tif (isStandardStream(source) || isStandardStream(destination)) {\n\t\treturn;\n\t}\n\n\ttry {\n\t\tawait finished(source, {cleanup: true, readable: true, writable: false});\n\t} catch {}\n\n\tendDestinationStream(destination);\n};\n\nexport const endDestinationStream = destination => {\n\tif (destination.writable) {\n\t\tdestination.end();\n\t}\n};\n\n// We do the same thing in the other direction as well.\nconst onDestinationFinish = async (source, destination) => {\n\tif (isStandardStream(source) || isStandardStream(destination)) {\n\t\treturn;\n\t}\n\n\ttry {\n\t\tawait finished(destination, {cleanup: true, readable: false, writable: true});\n\t} catch {}\n\n\tabortSourceStream(source);\n};\n\nexport const abortSourceStream = source => {\n\tif (source.readable) {\n\t\tsource.destroy();\n\t}\n};\n", "import {addAbortListener} from 'node:events';\nimport {onExit} from 'signal-exit';\n\n// If the `cleanup` option is used, call `subprocess.kill()` when the parent process exits\nexport const cleanupOnExit = (subprocess, {cleanup, detached}, {signal}) => {\n\tif (!cleanup || detached) {\n\t\treturn;\n\t}\n\n\tconst removeExitHandler = onExit(() => {\n\t\tsubprocess.kill();\n\t});\n\taddAbortListener(signal, () => {\n\t\tremoveExitHandler();\n\t});\n};\n", "// Note: since nyc uses this module to output coverage, any lines\n// that are in the direct sync flow of nyc's outputCoverage are\n// ignored, since we can never get coverage for them.\n// grab a reference to node's real process object right away\nimport { signals } from './signals.js'\nexport { signals }\n\n// just a loosened process type so we can do some evil things\ntype ProcessRE = NodeJS.Process & {\n  reallyExit: (code?: number | undefined | null) => any\n  emit: (ev: string, ...a: any[]) => any\n}\n\nconst processOk = (process: any): process is ProcessRE =>\n  !!process &&\n  typeof process === 'object' &&\n  typeof process.removeListener === 'function' &&\n  typeof process.emit === 'function' &&\n  typeof process.reallyExit === 'function' &&\n  typeof process.listeners === 'function' &&\n  typeof process.kill === 'function' &&\n  typeof process.pid === 'number' &&\n  typeof process.on === 'function'\n\nconst kExitEmitter = Symbol.for('signal-exit emitter')\nconst global: typeof globalThis & { [kExitEmitter]?: Emitter } = globalThis\nconst ObjectDefineProperty = Object.defineProperty.bind(Object)\n\n/**\n * A function that takes an exit code and signal as arguments\n *\n * In the case of signal exits *only*, a return value of true\n * will indicate that the signal is being handled, and we should\n * not synthetically exit with the signal we received. Regardless\n * of the handler return value, the handler is unloaded when an\n * otherwise fatal signal is received, so you get exactly 1 shot\n * at it, unless you add another onExit handler at that point.\n *\n * In the case of numeric code exits, we may already have committed\n * to exiting the process, for example via a fatal exception or\n * unhandled promise rejection, so it is impossible to stop safely.\n */\nexport type Handler = (\n  code: number | null | undefined,\n  signal: NodeJS.Signals | null\n) => true | void\ntype ExitEvent = 'afterExit' | 'exit'\ntype Emitted = { [k in ExitEvent]: boolean }\ntype Listeners = { [k in ExitEvent]: Handler[] }\n\n// teeny special purpose ee\nclass Emitter {\n  emitted: Emitted = {\n    afterExit: false,\n    exit: false,\n  }\n\n  listeners: Listeners = {\n    afterExit: [],\n    exit: [],\n  }\n\n  count: number = 0\n  id: number = Math.random()\n\n  constructor() {\n    if (global[kExitEmitter]) {\n      return global[kExitEmitter]\n    }\n    ObjectDefineProperty(global, kExitEmitter, {\n      value: this,\n      writable: false,\n      enumerable: false,\n      configurable: false,\n    })\n  }\n\n  on(ev: ExitEvent, fn: Handler) {\n    this.listeners[ev].push(fn)\n  }\n\n  removeListener(ev: ExitEvent, fn: Handler) {\n    const list = this.listeners[ev]\n    const i = list.indexOf(fn)\n    /* c8 ignore start */\n    if (i === -1) {\n      return\n    }\n    /* c8 ignore stop */\n    if (i === 0 && list.length === 1) {\n      list.length = 0\n    } else {\n      list.splice(i, 1)\n    }\n  }\n\n  emit(\n    ev: ExitEvent,\n    code: number | null | undefined,\n    signal: NodeJS.Signals | null\n  ): boolean {\n    if (this.emitted[ev]) {\n      return false\n    }\n    this.emitted[ev] = true\n    let ret: boolean = false\n    for (const fn of this.listeners[ev]) {\n      ret = fn(code, signal) === true || ret\n    }\n    if (ev === 'exit') {\n      ret = this.emit('afterExit', code, signal) || ret\n    }\n    return ret\n  }\n}\n\nabstract class SignalExitBase {\n  abstract onExit(cb: Handler, opts?: { alwaysLast?: boolean }): () => void\n  abstract load(): void\n  abstract unload(): void\n}\n\nconst signalExitWrap = <T extends SignalExitBase>(handler: T) => {\n  return {\n    onExit(cb: Handler, opts?: { alwaysLast?: boolean }) {\n      return handler.onExit(cb, opts)\n    },\n    load() {\n      return handler.load()\n    },\n    unload() {\n      return handler.unload()\n    },\n  }\n}\n\nclass SignalExitFallback extends SignalExitBase {\n  onExit() {\n    return () => {}\n  }\n  load() {}\n  unload() {}\n}\n\nclass SignalExit extends SignalExitBase {\n  // \"SIGHUP\" throws an `ENOSYS` error on Windows,\n  // so use a supported signal instead\n  /* c8 ignore start */\n  #hupSig = process.platform === 'win32' ? 'SIGINT' : 'SIGHUP'\n  /* c8 ignore stop */\n  #emitter = new Emitter()\n  #process: ProcessRE\n  #originalProcessEmit: ProcessRE['emit']\n  #originalProcessReallyExit: ProcessRE['reallyExit']\n\n  #sigListeners: { [k in NodeJS.Signals]?: () => void } = {}\n  #loaded: boolean = false\n\n  constructor(process: ProcessRE) {\n    super()\n    this.#process = process\n    // { <signal>: <listener fn>, ... }\n    this.#sigListeners = {}\n    for (const sig of signals) {\n      this.#sigListeners[sig] = () => {\n        // If there are no other listeners, an exit is coming!\n        // Simplest way: remove us and then re-send the signal.\n        // We know that this will kill the process, so we can\n        // safely emit now.\n        const listeners = this.#process.listeners(sig)\n        let { count } = this.#emitter\n        // This is a workaround for the fact that signal-exit v3 and signal\n        // exit v4 are not aware of each other, and each will attempt to let\n        // the other handle it, so neither of them do. To correct this, we\n        // detect if we're the only handler *except* for previous versions\n        // of signal-exit, and increment by the count of listeners it has\n        // created.\n        /* c8 ignore start */\n        const p = process as unknown as {\n          __signal_exit_emitter__?: { count: number }\n        }\n        if (\n          typeof p.__signal_exit_emitter__ === 'object' &&\n          typeof p.__signal_exit_emitter__.count === 'number'\n        ) {\n          count += p.__signal_exit_emitter__.count\n        }\n        /* c8 ignore stop */\n        if (listeners.length === count) {\n          this.unload()\n          const ret = this.#emitter.emit('exit', null, sig)\n          /* c8 ignore start */\n          const s = sig === 'SIGHUP' ? this.#hupSig : sig\n          if (!ret) process.kill(process.pid, s)\n          /* c8 ignore stop */\n        }\n      }\n    }\n\n    this.#originalProcessReallyExit = process.reallyExit\n    this.#originalProcessEmit = process.emit\n  }\n\n  onExit(cb: Handler, opts?: { alwaysLast?: boolean }) {\n    /* c8 ignore start */\n    if (!processOk(this.#process)) {\n      return () => {}\n    }\n    /* c8 ignore stop */\n\n    if (this.#loaded === false) {\n      this.load()\n    }\n\n    const ev = opts?.alwaysLast ? 'afterExit' : 'exit'\n    this.#emitter.on(ev, cb)\n    return () => {\n      this.#emitter.removeListener(ev, cb)\n      if (\n        this.#emitter.listeners['exit'].length === 0 &&\n        this.#emitter.listeners['afterExit'].length === 0\n      ) {\n        this.unload()\n      }\n    }\n  }\n\n  load() {\n    if (this.#loaded) {\n      return\n    }\n    this.#loaded = true\n\n    // This is the number of onSignalExit's that are in play.\n    // It's important so that we can count the correct number of\n    // listeners on signals, and don't wait for the other one to\n    // handle it instead of us.\n    this.#emitter.count += 1\n\n    for (const sig of signals) {\n      try {\n        const fn = this.#sigListeners[sig]\n        if (fn) this.#process.on(sig, fn)\n      } catch (_) {}\n    }\n\n    this.#process.emit = (ev: string, ...a: any[]) => {\n      return this.#processEmit(ev, ...a)\n    }\n    this.#process.reallyExit = (code?: number | null | undefined) => {\n      return this.#processReallyExit(code)\n    }\n  }\n\n  unload() {\n    if (!this.#loaded) {\n      return\n    }\n    this.#loaded = false\n\n    signals.forEach(sig => {\n      const listener = this.#sigListeners[sig]\n      /* c8 ignore start */\n      if (!listener) {\n        throw new Error('Listener not defined for signal: ' + sig)\n      }\n      /* c8 ignore stop */\n      try {\n        this.#process.removeListener(sig, listener)\n        /* c8 ignore start */\n      } catch (_) {}\n      /* c8 ignore stop */\n    })\n    this.#process.emit = this.#originalProcessEmit\n    this.#process.reallyExit = this.#originalProcessReallyExit\n    this.#emitter.count -= 1\n  }\n\n  #processReallyExit(code?: number | null | undefined) {\n    /* c8 ignore start */\n    if (!processOk(this.#process)) {\n      return 0\n    }\n    this.#process.exitCode = code || 0\n    /* c8 ignore stop */\n\n    this.#emitter.emit('exit', this.#process.exitCode, null)\n    return this.#originalProcessReallyExit.call(\n      this.#process,\n      this.#process.exitCode\n    )\n  }\n\n  #processEmit(ev: string, ...args: any[]): any {\n    const og = this.#originalProcessEmit\n    if (ev === 'exit' && processOk(this.#process)) {\n      if (typeof args[0] === 'number') {\n        this.#process.exitCode = args[0]\n        /* c8 ignore start */\n      }\n      /* c8 ignore start */\n      const ret = og.call(this.#process, ev, ...args)\n      /* c8 ignore start */\n      this.#emitter.emit('exit', this.#process.exitCode, null)\n      /* c8 ignore stop */\n      return ret\n    } else {\n      return og.call(this.#process, ev, ...args)\n    }\n  }\n}\n\nconst process = globalThis.process\n// wrap so that we call the method on the actual handler, without\n// exporting it directly.\nexport const {\n  /**\n   * Called when the process is exiting, whether via signal, explicit\n   * exit, or running out of stuff to do.\n   *\n   * If the global process object is not suitable for instrumentation,\n   * then this will be a no-op.\n   *\n   * Returns a function that may be used to unload signal-exit.\n   */\n  onExit,\n\n  /**\n   * Load the listeners.  Likely you never need to call this, unless\n   * doing a rather deep integration with signal-exit functionality.\n   * Mostly exposed for the benefit of testing.\n   *\n   * @internal\n   */\n  load,\n\n  /**\n   * Unload the listeners.  Likely you never need to call this, unless\n   * doing a rather deep integration with signal-exit functionality.\n   * Mostly exposed for the benefit of testing.\n   *\n   * @internal\n   */\n  unload,\n} = signalExitWrap(\n  processOk(process) ? new SignalExit(process) : new SignalExitFallback()\n)\n", "/**\n * This is not the set of all possible signals.\n *\n * It IS, however, the set of all signals that trigger\n * an exit on either Linux or BSD systems.  Linux is a\n * superset of the signal names supported on BSD, and\n * the unknown signals just fail to register, so we can\n * catch that easily enough.\n *\n * Windows signals are a different set, since there are\n * signals that terminate Windows processes, but don't\n * terminate (or don't even exist) on Posix systems.\n *\n * Don't bother with SIGKILL.  It's uncatchable, which\n * means that we can't fire any callbacks anyway.\n *\n * If a user does happen to register a handler on a non-\n * fatal signal like SIGWINCH or something, and then\n * exit, it'll end up firing `process.emit('exit')`, so\n * the handler will be fired anyway.\n *\n * SIGBUS, SIGFPE, SIGSEGV and SIGILL, when not raised\n * artificially, inherently leave the process in a\n * state from which it is not safe to try and enter JS\n * listeners.\n */\nexport const signals: NodeJS.Signals[] = []\nsignals.push('SIGHUP', 'SIGINT', 'SIGTERM')\n\nif (process.platform !== 'win32') {\n  signals.push(\n    'SIGALRM',\n    'SIGABRT',\n    'SIGVTALRM',\n    'SIGXCPU',\n    'SIGXFSZ',\n    'SIGUSR2',\n    'SIGTRAP',\n    'SIGSYS',\n    'SIGQUIT',\n    'SIGIOT'\n    // should detect profiler and enable/disable accordingly.\n    // see #21\n    // 'SIGPROF'\n  )\n}\n\nif (process.platform === 'linux') {\n  signals.push('SIGIO', 'SIGPOLL', 'SIGPWR', 'SIGSTKFLT')\n}\n", "import isPlainObject from 'is-plain-obj';\nimport {normalizePipeArguments} from './pipe-arguments.js';\nimport {handlePipeArgumentsError} from './throw.js';\nimport {waitForBothSubprocesses} from './sequence.js';\nimport {pipeSubprocessStream} from './streaming.js';\nimport {unpipeOnAbort} from './abort.js';\n\n// Pipe a subprocess' `stdout`/`stderr`/`stdio` into another subprocess' `stdin`\nexport const pipeToSubprocess = (sourceInfo, ...pipeArguments) => {\n\tif (isPlainObject(pipeArguments[0])) {\n\t\treturn pipeToSubprocess.bind(undefined, {\n\t\t\t...sourceInfo,\n\t\t\tboundOptions: {...sourceInfo.boundOptions, ...pipeArguments[0]},\n\t\t});\n\t}\n\n\tconst {destination, ...normalizedInfo} = normalizePipeArguments(sourceInfo, ...pipeArguments);\n\tconst promise = handlePipePromise({...normalizedInfo, destination});\n\tpromise.pipe = pipeToSubprocess.bind(undefined, {\n\t\t...sourceInfo,\n\t\tsource: destination,\n\t\tsourcePromise: promise,\n\t\tboundOptions: {},\n\t});\n\treturn promise;\n};\n\n// Asynchronous logic when piping subprocesses\nconst handlePipePromise = async ({\n\tsourcePromise,\n\tsourceStream,\n\tsourceOptions,\n\tsourceError,\n\tdestination,\n\tdestinationStream,\n\tdestinationError,\n\tunpipeSignal,\n\tfileDescriptors,\n\tstartTime,\n}) => {\n\tconst subprocessPromises = getSubprocessPromises(sourcePromise, destination);\n\thandlePipeArgumentsError({\n\t\tsourceStream,\n\t\tsourceError,\n\t\tdestinationStream,\n\t\tdestinationError,\n\t\tfileDescriptors,\n\t\tsourceOptions,\n\t\tstartTime,\n\t});\n\tconst maxListenersController = new AbortController();\n\ttry {\n\t\tconst mergedStream = pipeSubprocessStream(sourceStream, destinationStream, maxListenersController);\n\t\treturn await Promise.race([\n\t\t\twaitForBothSubprocesses(subprocessPromises),\n\t\t\t...unpipeOnAbort(unpipeSignal, {\n\t\t\t\tsourceStream,\n\t\t\t\tmergedStream,\n\t\t\t\tsourceOptions,\n\t\t\t\tfileDescriptors,\n\t\t\t\tstartTime,\n\t\t\t}),\n\t\t]);\n\t} finally {\n\t\tmaxListenersController.abort();\n\t}\n};\n\n// `.pipe()` awaits the subprocess promises.\n// When invalid arguments are passed to `.pipe()`, we throw an error, which prevents awaiting them.\n// We need to ensure this does not create unhandled rejections.\nconst getSubprocessPromises = (sourcePromise, destination) => Promise.allSettled([sourcePromise, destination]);\n", "import {normalizeParameters} from '../methods/parameters.js';\nimport {getStartTime} from '../return/duration.js';\nimport {SUBPROCESS_OPTIONS, getToStream, getFromStream} from '../arguments/fd-options.js';\n\n// Normalize and validate arguments passed to `source.pipe(destination)`\nexport const normalizePipeArguments = ({source, sourcePromise, boundOptions, createNested}, ...pipeArguments) => {\n\tconst startTime = getStartTime();\n\tconst {\n\t\tdestination,\n\t\tdestinationStream,\n\t\tdestinationError,\n\t\tfrom,\n\t\tunpipeSignal,\n\t} = getDestinationStream(boundOptions, createNested, pipeArguments);\n\tconst {sourceStream, sourceError} = getSourceStream(source, from);\n\tconst {options: sourceOptions, fileDescriptors} = SUBPROCESS_OPTIONS.get(source);\n\treturn {\n\t\tsourcePromise,\n\t\tsourceStream,\n\t\tsourceOptions,\n\t\tsourceError,\n\t\tdestination,\n\t\tdestinationStream,\n\t\tdestinationError,\n\t\tunpipeSignal,\n\t\tfileDescriptors,\n\t\tstartTime,\n\t};\n};\n\nconst getDestinationStream = (boundOptions, createNested, pipeArguments) => {\n\ttry {\n\t\tconst {\n\t\t\tdestination,\n\t\t\tpipeOptions: {from, to, unpipeSignal} = {},\n\t\t} = getDestination(boundOptions, createNested, ...pipeArguments);\n\t\tconst destinationStream = getToStream(destination, to);\n\t\treturn {\n\t\t\tdestination,\n\t\t\tdestinationStream,\n\t\t\tfrom,\n\t\t\tunpipeSignal,\n\t\t};\n\t} catch (error) {\n\t\treturn {destinationError: error};\n\t}\n};\n\n// Piping subprocesses can use three syntaxes:\n//  - source.pipe('command', commandArguments, pipeOptionsOrDestinationOptions)\n//  - source.pipe`command commandArgument` or source.pipe(pipeOptionsOrDestinationOptions)`command commandArgument`\n//  - source.pipe(execa(...), pipeOptions)\nconst getDestination = (boundOptions, createNested, firstArgument, ...pipeArguments) => {\n\tif (Array.isArray(firstArgument)) {\n\t\tconst destination = createNested(mapDestinationArguments, boundOptions)(firstArgument, ...pipeArguments);\n\t\treturn {destination, pipeOptions: boundOptions};\n\t}\n\n\tif (typeof firstArgument === 'string' || firstArgument instanceof URL) {\n\t\tif (Object.keys(boundOptions).length > 0) {\n\t\t\tthrow new TypeError('Please use .pipe(\"file\", ..., options) or .pipe(execa(\"file\", ..., options)) instead of .pipe(options)(\"file\", ...).');\n\t\t}\n\n\t\tconst [rawFile, rawArguments, rawOptions] = normalizeParameters(firstArgument, ...pipeArguments);\n\t\tconst destination = createNested(mapDestinationArguments)(rawFile, rawArguments, rawOptions);\n\t\treturn {destination, pipeOptions: rawOptions};\n\t}\n\n\tif (SUBPROCESS_OPTIONS.has(firstArgument)) {\n\t\tif (Object.keys(boundOptions).length > 0) {\n\t\t\tthrow new TypeError('Please use .pipe(options)`command` or .pipe($(options)`command`) instead of .pipe(options)($`command`).');\n\t\t}\n\n\t\treturn {destination: firstArgument, pipeOptions: pipeArguments[0]};\n\t}\n\n\tthrow new TypeError(`The first argument must be a template string, an options object, or an Execa subprocess: ${firstArgument}`);\n};\n\n// Force `stdin: 'pipe'` with the destination subprocess\nconst mapDestinationArguments = ({options}) => ({options: {...options, stdin: 'pipe', piped: true}});\n\nconst getSourceStream = (source, from) => {\n\ttry {\n\t\tconst sourceStream = getFromStream(source, from);\n\t\treturn {sourceStream};\n\t} catch (error) {\n\t\treturn {sourceError: error};\n\t}\n};\n", "import {makeEarlyError} from '../return/result.js';\nimport {abortSourceStream, endDestinationStream} from '../io/pipeline.js';\n\n// When passing invalid arguments to `source.pipe()`, throw asynchronously.\n// We also abort both subprocesses.\nexport const handlePipeArgumentsError = ({\n\tsourceStream,\n\tsourceError,\n\tdestinationStream,\n\tdestinationError,\n\tfileDescriptors,\n\tsourceOptions,\n\tstartTime,\n}) => {\n\tconst error = getPipeArgumentsError({\n\t\tsourceStream,\n\t\tsourceError,\n\t\tdestinationStream,\n\t\tdestinationError,\n\t});\n\tif (error !== undefined) {\n\t\tthrow createNonCommandError({\n\t\t\terror,\n\t\t\tfileDescriptors,\n\t\t\tsourceOptions,\n\t\t\tstartTime,\n\t\t});\n\t}\n};\n\nconst getPipeArgumentsError = ({sourceStream, sourceError, destinationStream, destinationError}) => {\n\tif (sourceError !== undefined && destinationError !== undefined) {\n\t\treturn destinationError;\n\t}\n\n\tif (destinationError !== undefined) {\n\t\tabortSourceStream(sourceStream);\n\t\treturn destinationError;\n\t}\n\n\tif (sourceError !== undefined) {\n\t\tendDestinationStream(destinationStream);\n\t\treturn sourceError;\n\t}\n};\n\n// Specific error return value when passing invalid arguments to `subprocess.pipe()` or when using `unpipeSignal`\nexport const createNonCommandError = ({error, fileDescriptors, sourceOptions, startTime}) => makeEarlyError({\n\terror,\n\tcommand: PIPE_COMMAND_MESSAGE,\n\tescapedCommand: PIPE_COMMAND_MESSAGE,\n\tfileDescriptors,\n\toptions: sourceOptions,\n\tstartTime,\n\tisSync: false,\n});\n\nconst PIPE_COMMAND_MESSAGE = 'source.pipe(destination)';\n", "// Like Bash, we await both subprocesses. This is unlike some other shells which only await the destination subprocess.\n// Like Bash with the `pipefail` option, if either subprocess fails, the whole pipe fails.\n// Like Bash, if both subprocesses fail, we return the failure of the destination.\n// This ensures both subprocesses' errors are present, using `error.pipedFrom`.\nexport const waitForBothSubprocesses = async subprocessPromises => {\n\tconst [\n\t\t{status: sourceStatus, reason: sourceReason, value: sourceResult = sourceReason},\n\t\t{status: destinationStatus, reason: destinationReason, value: destinationResult = destinationReason},\n\t] = await subprocessPromises;\n\n\tif (!destinationResult.pipedFrom.includes(sourceResult)) {\n\t\tdestinationResult.pipedFrom.push(sourceResult);\n\t}\n\n\tif (destinationStatus === 'rejected') {\n\t\tthrow destinationResult;\n\t}\n\n\tif (sourceStatus === 'rejected') {\n\t\tthrow sourceResult;\n\t}\n\n\treturn destinationResult;\n};\n", "import {finished} from 'node:stream/promises';\nimport mergeStreams from '@sindresorhus/merge-streams';\nimport {incrementMaxListeners} from '../utils/max-listeners.js';\nimport {pipeStreams} from '../io/pipeline.js';\n\n// The piping behavior is like Bash.\n// In particular, when one subprocess exits, the other is not terminated by a signal.\n// Instead, its stdout (for the source) or stdin (for the destination) closes.\n// If the subprocess uses it, it will make it error with SIGPIPE or EPIPE (for the source) or end (for the destination).\n// If it does not use it, it will continue running.\n// This allows for subprocesses to gracefully exit and lower the coupling between subprocesses.\nexport const pipeSubprocessStream = (sourceStream, destinationStream, maxListenersController) => {\n\tconst mergedStream = MERGED_STREAMS.has(destinationStream)\n\t\t? pipeMoreSubprocessStream(sourceStream, destinationStream)\n\t\t: pipeFirstSubprocessStream(sourceStream, destinationStream);\n\tincrementMaxListeners(sourceStream, SOURCE_LISTENERS_PER_PIPE, maxListenersController.signal);\n\tincrementMaxListeners(destinationStream, DESTINATION_LISTENERS_PER_PIPE, maxListenersController.signal);\n\tcleanupMergedStreamsMap(destinationStream);\n\treturn mergedStream;\n};\n\n// We use `merge-streams` to allow for multiple sources to pipe to the same destination.\nconst pipeFirstSubprocessStream = (sourceStream, destinationStream) => {\n\tconst mergedStream = mergeStreams([sourceStream]);\n\tpipeStreams(mergedStream, destinationStream);\n\tMERGED_STREAMS.set(destinationStream, mergedStream);\n\treturn mergedStream;\n};\n\nconst pipeMoreSubprocessStream = (sourceStream, destinationStream) => {\n\tconst mergedStream = MERGED_STREAMS.get(destinationStream);\n\tmergedStream.add(sourceStream);\n\treturn mergedStream;\n};\n\nconst cleanupMergedStreamsMap = async destinationStream => {\n\ttry {\n\t\tawait finished(destinationStream, {cleanup: true, readable: false, writable: true});\n\t} catch {}\n\n\tMERGED_STREAMS.delete(destinationStream);\n};\n\nconst MERGED_STREAMS = new WeakMap();\n\n// Number of listeners set up on `sourceStream` by each `sourceStream.pipe(destinationStream)`\n// Those are added by `merge-streams`\nconst SOURCE_LISTENERS_PER_PIPE = 2;\n// Number of listeners set up on `destinationStream` by each `sourceStream.pipe(destinationStream)`\n// Those are added by `finished()` in `cleanupMergedStreamsMap()`\nconst DESTINATION_LISTENERS_PER_PIPE = 1;\n", "import {aborted} from 'node:util';\nimport {createNonCommandError} from './throw.js';\n\n// When passing an `unpipeSignal` option, abort piping when the signal is aborted.\n// However, do not terminate the subprocesses.\nexport const unpipeOnAbort = (unpipeSignal, unpipeContext) => unpipeSignal === undefined\n\t? []\n\t: [unpipeOnSignalAbort(unpipeSignal, unpipeContext)];\n\nconst unpipeOnSignalAbort = async (unpipeSignal, {sourceStream, mergedStream, fileDescriptors, sourceOptions, startTime}) => {\n\tawait aborted(unpipeSignal, sourceStream);\n\tawait mergedStream.remove(sourceStream);\n\tconst error = new Error('Pipe canceled by `unpipeSignal` option.');\n\tthrow createNonCommandError({\n\t\terror,\n\t\tfileDescriptors,\n\t\tsourceOptions,\n\t\tstartTime,\n\t});\n};\n", "import mergeStreams from '@sindresorhus/merge-streams';\nimport {waitForSubprocessStream} from './stdio.js';\n\n// `all` interleaves `stdout` and `stderr`\nexport const makeAllStream = ({stdout, stderr}, {all}) => all && (stdout || stderr)\n\t? mergeStreams([stdout, stderr].filter(Boolean))\n\t: undefined;\n\n// Read the contents of `subprocess.all` and|or wait for its completion\nexport const waitForAllStream = ({subprocess, encoding, buffer, maxBuffer, lines, stripFinalNewline, verboseInfo, streamInfo}) => waitForSubprocessStream({\n\t...getAllStream(subprocess, buffer),\n\tfdNumber: 'all',\n\tencoding,\n\tmaxBuffer: maxBuffer[1] + maxBuffer[2],\n\tlines: lines[1] || lines[2],\n\tallMixed: getAllMixed(subprocess),\n\tstripFinalNewline,\n\tverboseInfo,\n\tstreamInfo,\n});\n\nconst getAllStream = ({stdout, stderr, all}, [, bufferStdout, bufferStderr]) => {\n\tconst buffer = bufferStdout || bufferStderr;\n\tif (!buffer) {\n\t\treturn {stream: all, buffer};\n\t}\n\n\tif (!bufferStdout) {\n\t\treturn {stream: stderr, buffer};\n\t}\n\n\tif (!bufferStderr) {\n\t\treturn {stream: stdout, buffer};\n\t}\n\n\treturn {stream: all, buffer};\n};\n\n// When `subprocess.stdout` is in objectMode but not `subprocess.stderr` (or the opposite), we need to use both:\n//  - `getStreamAsArray()` for the chunks in objectMode, to return as an array without changing each chunk\n//  - `getStreamAsArrayBuffer()` or `getStream()` for the chunks not in objectMode, to convert them from Buffers to string or Uint8Array\n// We do this by emulating the Buffer -> string|Uint8Array conversion performed by `get-stream` with our own, which is identical.\nconst getAllMixed = ({all, stdout, stderr}) => all\n\t&& stdout\n\t&& stderr\n\t&& stdout.readableObjectMode !== stderr.readableObjectMode;\n", "import {getStreamOutput} from '../io/contents.js';\nimport {waitForStream, isInputFileDescriptor} from './wait-stream.js';\n\n// Read the contents of `subprocess.std*` and|or wait for its completion\nexport const waitForStdioStreams = ({subprocess, encoding, buffer, maxBuffer, lines, stripFinalNewline, verboseInfo, streamInfo}) => subprocess.stdio.map((stream, fdNumber) => waitForSubprocessStream({\n\tstream,\n\tfdNumber,\n\tencoding,\n\tbuffer: buffer[fdNumber],\n\tmaxBuffer: maxBuffer[fdNumber],\n\tlines: lines[fdNumber],\n\tallMixed: false,\n\tstripFinalNewline,\n\tverboseInfo,\n\tstreamInfo,\n}));\n\n// Read the contents of `subprocess.std*` or `subprocess.all` and|or wait for its completion\nexport const waitForSubprocessStream = async ({stream, fdNumber, encoding, buffer, maxBuffer, lines, allMixed, stripFinalNewline, verboseInfo, streamInfo}) => {\n\tif (!stream) {\n\t\treturn;\n\t}\n\n\tconst onStreamEnd = waitForStream(stream, fdNumber, streamInfo);\n\tif (isInputFileDescriptor(streamInfo, fdNumber)) {\n\t\tawait onStreamEnd;\n\t\treturn;\n\t}\n\n\tconst [output] = await Promise.all([\n\t\tgetStreamOutput({\n\t\t\tstream,\n\t\t\tonStreamEnd,\n\t\t\tfdNumber,\n\t\t\tencoding,\n\t\t\tbuffer,\n\t\t\tmaxBuffer,\n\t\t\tlines,\n\t\t\tallMixed,\n\t\t\tstripFinalNewline,\n\t\t\tverboseInfo,\n\t\t\tstreamInfo,\n\t\t}),\n\t\tonStreamEnd,\n\t]);\n\treturn output;\n};\n", "import {setImmediate} from 'node:timers/promises';\nimport getStream, {getStreamAsArrayBuffer, getStreamAsArray} from 'get-stream';\nimport {isArrayBuffer} from '../utils/uint-array.js';\nimport {shouldLogOutput, logLines} from '../verbose/output.js';\nimport {iterateForResult} from './iterate.js';\nimport {handleMaxBuffer} from './max-buffer.js';\nimport {getStripFinalNewline} from './strip-newline.js';\n\n// Retrieve `result.stdout|stderr|all|stdio[*]`\nexport const getStreamOutput = async ({stream, onStreamEnd, fdNumber, encoding, buffer, maxBuffer, lines, allMixed, stripFinalNewline, verboseInfo, streamInfo: {fileDescriptors}}) => {\n\tif (shouldLogOutput({\n\t\tstdioItems: fileDescriptors[fdNumber]?.stdioItems,\n\t\tencoding,\n\t\tverboseInfo,\n\t\tfdNumber,\n\t})) {\n\t\tconst linesIterable = iterateForResult({\n\t\t\tstream,\n\t\t\tonStreamEnd,\n\t\t\tlines: true,\n\t\t\tencoding,\n\t\t\tstripFinalNewline: true,\n\t\t\tallMixed,\n\t\t});\n\t\tlogLines(linesIterable, stream, verboseInfo);\n\t}\n\n\tif (!buffer) {\n\t\tawait resumeStream(stream);\n\t\treturn;\n\t}\n\n\tconst stripFinalNewlineValue = getStripFinalNewline(stripFinalNewline, fdNumber);\n\tconst iterable = iterateForResult({\n\t\tstream,\n\t\tonStreamEnd,\n\t\tlines,\n\t\tencoding,\n\t\tstripFinalNewline: stripFinalNewlineValue,\n\t\tallMixed,\n\t});\n\treturn getStreamContents({\n\t\tstream,\n\t\titerable,\n\t\tfdNumber,\n\t\tencoding,\n\t\tmaxBuffer,\n\t\tlines,\n\t});\n};\n\n// When using `buffer: false`, users need to read `subprocess.stdout|stderr|all` right away\n// See https://github.com/sindresorhus/execa/issues/730 and https://github.com/sindresorhus/execa/pull/729#discussion_r1465496310\nconst resumeStream = async stream => {\n\tawait setImmediate();\n\tif (stream.readableFlowing === null) {\n\t\tstream.resume();\n\t}\n};\n\nconst getStreamContents = async ({stream, stream: {readableObjectMode}, iterable, fdNumber, encoding, maxBuffer, lines}) => {\n\ttry {\n\t\tif (readableObjectMode || lines) {\n\t\t\treturn await getStreamAsArray(iterable, {maxBuffer});\n\t\t}\n\n\t\tif (encoding === 'buffer') {\n\t\t\treturn new Uint8Array(await getStreamAsArrayBuffer(iterable, {maxBuffer}));\n\t\t}\n\n\t\treturn await getStream(iterable, {maxBuffer});\n\t} catch (error) {\n\t\treturn handleBufferedData(handleMaxBuffer({\n\t\t\terror,\n\t\t\tstream,\n\t\t\treadableObjectMode,\n\t\t\tlines,\n\t\t\tencoding,\n\t\t\tfdNumber,\n\t\t}));\n\t}\n};\n\n// On failure, `result.stdout|stderr|all` should contain the currently buffered stream\n// They are automatically closed and flushed by Node.js when the subprocess exits\n// When `buffer` is `false`, `streamPromise` is `undefined` and there is no buffered data to retrieve\nexport const getBufferedData = async streamPromise => {\n\ttry {\n\t\treturn await streamPromise;\n\t} catch (error) {\n\t\treturn handleBufferedData(error);\n\t}\n};\n\n// Ensure we are returning Uint8Arrays when using `encoding: 'buffer'`\nconst handleBufferedData = ({bufferedData}) => isArrayBuffer(bufferedData)\n\t? new Uint8Array(bufferedData)\n\t: bufferedData;\n", "import {on} from 'node:events';\nimport {getDefaultHighWaterMark} from 'node:stream';\nimport {getEncodingTransformGenerator} from '../transform/encoding-transform.js';\nimport {getSplitLinesGenerator} from '../transform/split.js';\nimport {transformChunkSync, finalChunksSync} from '../transform/run-sync.js';\n\n// Iterate over lines of `subprocess.stdout`, used by `subprocess.readable|duplex|iterable()`\nexport const iterateOnSubprocessStream = ({subprocessStdout, subprocess, binary, shouldEncode, encoding, preserveNewlines}) => {\n\tconst controller = new AbortController();\n\tstopReadingOnExit(subprocess, controller);\n\treturn iterateOnStream({\n\t\tstream: subprocessStdout,\n\t\tcontroller,\n\t\tbinary,\n\t\tshouldEncode: !subprocessStdout.readableObjectMode && shouldEncode,\n\t\tencoding,\n\t\tshouldSplit: !subprocessStdout.readableObjectMode,\n\t\tpreserveNewlines,\n\t});\n};\n\nconst stopReadingOnExit = async (subprocess, controller) => {\n\ttry {\n\t\tawait subprocess;\n\t} catch {} finally {\n\t\tcontroller.abort();\n\t}\n};\n\n// Iterate over lines of `subprocess.stdout`, used by `result.stdout` and the `verbose: 'full'` option.\n// Applies the `lines` and `encoding` options.\nexport const iterateForResult = ({stream, onStreamEnd, lines, encoding, stripFinalNewline, allMixed}) => {\n\tconst controller = new AbortController();\n\tstopReadingOnStreamEnd(onStreamEnd, controller, stream);\n\tconst objectMode = stream.readableObjectMode && !allMixed;\n\treturn iterateOnStream({\n\t\tstream,\n\t\tcontroller,\n\t\tbinary: encoding === 'buffer',\n\t\tshouldEncode: !objectMode,\n\t\tencoding,\n\t\tshouldSplit: !objectMode && lines,\n\t\tpreserveNewlines: !stripFinalNewline,\n\t});\n};\n\nconst stopReadingOnStreamEnd = async (onStreamEnd, controller, stream) => {\n\ttry {\n\t\tawait onStreamEnd;\n\t} catch {\n\t\tstream.destroy();\n\t} finally {\n\t\tcontroller.abort();\n\t}\n};\n\nconst iterateOnStream = ({stream, controller, binary, shouldEncode, encoding, shouldSplit, preserveNewlines}) => {\n\tconst onStdoutChunk = on(stream, 'data', {\n\t\tsignal: controller.signal,\n\t\thighWaterMark: HIGH_WATER_MARK,\n\t\t// Backward compatibility with older name for this option\n\t\t// See https://github.com/nodejs/node/pull/52080#discussion_r1525227861\n\t\t// @todo Remove after removing support for Node 21\n\t\thighWatermark: HIGH_WATER_MARK,\n\t});\n\treturn iterateOnData({\n\t\tonStdoutChunk,\n\t\tcontroller,\n\t\tbinary,\n\t\tshouldEncode,\n\t\tencoding,\n\t\tshouldSplit,\n\t\tpreserveNewlines,\n\t});\n};\n\nexport const DEFAULT_OBJECT_HIGH_WATER_MARK = getDefaultHighWaterMark(true);\n\n// The `highWaterMark` of `events.on()` is measured in number of events, not in bytes.\n// Not knowing the average amount of bytes per `data` event, we use the same heuristic as streams in objectMode, since they have the same issue.\n// Therefore, we use the value of `getDefaultHighWaterMark(true)`.\n// Note: this option does not exist on Node 18, but this is ok since the logic works without it. It just consumes more memory.\nconst HIGH_WATER_MARK = DEFAULT_OBJECT_HIGH_WATER_MARK;\n\nconst iterateOnData = async function * ({onStdoutChunk, controller, binary, shouldEncode, encoding, shouldSplit, preserveNewlines}) {\n\tconst generators = getGenerators({\n\t\tbinary,\n\t\tshouldEncode,\n\t\tencoding,\n\t\tshouldSplit,\n\t\tpreserveNewlines,\n\t});\n\n\ttry {\n\t\tfor await (const [chunk] of onStdoutChunk) {\n\t\t\tyield * transformChunkSync(chunk, generators, 0);\n\t\t}\n\t} catch (error) {\n\t\tif (!controller.signal.aborted) {\n\t\t\tthrow error;\n\t\t}\n\t} finally {\n\t\tyield * finalChunksSync(generators);\n\t}\n};\n\nconst getGenerators = ({binary, shouldEncode, encoding, shouldSplit, preserveNewlines}) => [\n\tgetEncodingTransformGenerator(binary, encoding, !shouldEncode),\n\tgetSplitLinesGenerator(binary, preserveNewlines, !shouldSplit, {}),\n].filter(Boolean);\n", "import {finished} from 'node:stream/promises';\n\n// Wraps `finished(stream)` to handle the following case:\n//  - When the subprocess exits, Node.js automatically calls `subprocess.stdin.destroy()`, which we need to ignore.\n//  - However, we still need to throw if `subprocess.stdin.destroy()` is called before subprocess exit.\nexport const waitForStream = async (stream, fdNumber, streamInfo, {isSameDirection, stopOnExit = false} = {}) => {\n\tconst state = handleStdinDestroy(stream, streamInfo);\n\tconst abortController = new AbortController();\n\ttry {\n\t\tawait Promise.race([\n\t\t\t...(stopOnExit ? [streamInfo.exitPromise] : []),\n\t\t\tfinished(stream, {cleanup: true, signal: abortController.signal}),\n\t\t]);\n\t} catch (error) {\n\t\tif (!state.stdinCleanedUp) {\n\t\t\thandleStreamError(error, fdNumber, streamInfo, isSameDirection);\n\t\t}\n\t} finally {\n\t\tabortController.abort();\n\t}\n};\n\n// If `subprocess.stdin` is destroyed before being fully written to, it is considered aborted and should throw an error.\n// This can happen for example when user called `subprocess.stdin.destroy()` before `subprocess.stdin.end()`.\n// However, Node.js calls `subprocess.stdin.destroy()` on exit for cleanup purposes.\n// https://github.com/nodejs/node/blob/0b4cdb4b42956cbd7019058e409e06700a199e11/lib/internal/child_process.js#L278\n// This is normal and should not throw an error.\n// Therefore, we need to differentiate between both situations to know whether to throw an error.\n// Unfortunately, events (`close`, `error`, `end`, `exit`) cannot be used because `.destroy()` can take an arbitrary amount of time.\n// For example, `stdin: 'pipe'` is implemented as a TCP socket, and its `.destroy()` method waits for TCP disconnection.\n// Therefore `.destroy()` might end before or after subprocess exit, based on OS speed and load.\n// The only way to detect this is to spy on `subprocess.stdin._destroy()` by wrapping it.\n// If `subprocess.exitCode` or `subprocess.signalCode` is set, it means `.destroy()` is being called by Node.js itself.\nconst handleStdinDestroy = (stream, {originalStreams: [originalStdin], subprocess}) => {\n\tconst state = {stdinCleanedUp: false};\n\tif (stream === originalStdin) {\n\t\tspyOnStdinDestroy(stream, subprocess, state);\n\t}\n\n\treturn state;\n};\n\nconst spyOnStdinDestroy = (subprocessStdin, subprocess, state) => {\n\tconst {_destroy} = subprocessStdin;\n\tsubprocessStdin._destroy = (...destroyArguments) => {\n\t\tsetStdinCleanedUp(subprocess, state);\n\t\t_destroy.call(subprocessStdin, ...destroyArguments);\n\t};\n};\n\nconst setStdinCleanedUp = ({exitCode, signalCode}, state) => {\n\tif (exitCode !== null || signalCode !== null) {\n\t\tstate.stdinCleanedUp = true;\n\t}\n};\n\n// We ignore EPIPEs on writable streams and aborts on readable streams since those can happen normally.\n// When one stream errors, the error is propagated to the other streams on the same file descriptor.\n// Those other streams might have a different direction due to the above.\n// When this happens, the direction of both the initial stream and the others should then be taken into account.\n// Therefore, we keep track of whether a stream error is currently propagating.\nconst handleStreamError = (error, fdNumber, streamInfo, isSameDirection) => {\n\tif (!shouldIgnoreStreamError(error, fdNumber, streamInfo, isSameDirection)) {\n\t\tthrow error;\n\t}\n};\n\nconst shouldIgnoreStreamError = (error, fdNumber, streamInfo, isSameDirection = true) => {\n\tif (streamInfo.propagating) {\n\t\treturn isStreamEpipe(error) || isStreamAbort(error);\n\t}\n\n\tstreamInfo.propagating = true;\n\treturn isInputFileDescriptor(streamInfo, fdNumber) === isSameDirection\n\t\t? isStreamEpipe(error)\n\t\t: isStreamAbort(error);\n};\n\n// Unfortunately, we cannot use the stream's class or properties to know whether it is readable or writable.\n// For example, `subprocess.stdin` is technically a Duplex, but can only be used as a writable.\n// Therefore, we need to use the file descriptor's direction (`stdin` is input, `stdout` is output, etc.).\n// However, while `subprocess.std*` and transforms follow that direction, any stream passed the `std*` option has the opposite direction.\n// For example, `subprocess.stdin` is a writable, but the `stdin` option is a readable.\nexport const isInputFileDescriptor = ({fileDescriptors}, fdNumber) => fdNumber !== 'all' && fileDescriptors[fdNumber].direction === 'input';\n\n// When `stream.destroy()` is called without an `error` argument, stream is aborted.\n// This is the only way to abort a readable stream, which can be useful in some instances.\n// Therefore, we ignore this error on readable streams.\nexport const isStreamAbort = error => error?.code === 'ERR_STREAM_PREMATURE_CLOSE';\n\n// When `stream.write()` is called but the underlying source has been closed, `EPIPE` is emitted.\n// When piping subprocesses, the source subprocess usually decides when to stop piping.\n// However, there are some instances when the destination does instead, such as `... | head -n1`.\n// It notifies the source by using `EPIPE`.\n// Therefore, we ignore this error on writable streams.\nconst isStreamEpipe = error => error?.code === 'EPIPE';\n", "import {once} from 'node:events';\nimport {isStream as isNodeStream} from 'is-stream';\nimport {throwOnTimeout} from '../terminate/timeout.js';\nimport {isStandardStream} from '../utils/standard-stream.js';\nimport {TRANSFORM_TYPES} from '../stdio/type.js';\nimport {getBufferedData} from '../io/contents.js';\nimport {waitForAllStream} from './all-async.js';\nimport {waitForStdioStreams} from './stdio.js';\nimport {waitForExit, waitForSuccessfulExit} from './exit-async.js';\nimport {waitForStream} from './wait-stream.js';\n\n// Retrieve result of subprocess: exit code, signal, error, streams (stdout/stderr/all)\nexport const waitForSubprocessResult = async ({\n\tsubprocess,\n\toptions: {encoding, buffer, maxBuffer, lines, timeoutDuration: timeout, stripFinalNewline},\n\tcontext,\n\tverboseInfo,\n\tfileDescriptors,\n\toriginalStreams,\n\tonInternalError,\n\tcontroller,\n}) => {\n\tconst exitPromise = waitForExit(subprocess);\n\tconst streamInfo = {\n\t\toriginalStreams,\n\t\tfileDescriptors,\n\t\tsubprocess,\n\t\texitPromise,\n\t\tpropagating: false,\n\t};\n\n\tconst stdioPromises = waitForStdioStreams({\n\t\tsubprocess,\n\t\tencoding,\n\t\tbuffer,\n\t\tmaxBuffer,\n\t\tlines,\n\t\tstripFinalNewline,\n\t\tverboseInfo,\n\t\tstreamInfo,\n\t});\n\tconst allPromise = waitForAllStream({\n\t\tsubprocess,\n\t\tencoding,\n\t\tbuffer,\n\t\tmaxBuffer,\n\t\tlines,\n\t\tstripFinalNewline,\n\t\tverboseInfo,\n\t\tstreamInfo,\n\t});\n\tconst originalPromises = waitForOriginalStreams(originalStreams, subprocess, streamInfo);\n\tconst customStreamsEndPromises = waitForCustomStreamsEnd(fileDescriptors, streamInfo);\n\n\ttry {\n\t\treturn await Promise.race([\n\t\t\tPromise.all([\n\t\t\t\t{},\n\t\t\t\twaitForSuccessfulExit(exitPromise),\n\t\t\t\tPromise.all(stdioPromises),\n\t\t\t\tallPromise,\n\t\t\t\t...originalPromises,\n\t\t\t\t...customStreamsEndPromises,\n\t\t\t]),\n\t\t\tonInternalError,\n\t\t\tthrowOnSubprocessError(subprocess, controller),\n\t\t\t...throwOnTimeout(subprocess, timeout, context, controller),\n\t\t]);\n\t} catch (error) {\n\t\treturn Promise.all([\n\t\t\t{error},\n\t\t\texitPromise,\n\t\t\tPromise.all(stdioPromises.map(stdioPromise => getBufferedData(stdioPromise))),\n\t\t\tgetBufferedData(allPromise),\n\t\t\tPromise.allSettled(originalPromises),\n\t\t\tPromise.allSettled(customStreamsEndPromises),\n\t\t]);\n\t}\n};\n\n// Transforms replace `subprocess.std*`, which means they are not exposed to users.\n// However, we still want to wait for their completion.\nconst waitForOriginalStreams = (originalStreams, subprocess, streamInfo) =>\n\toriginalStreams.map((stream, fdNumber) => stream === subprocess.stdio[fdNumber]\n\t\t? undefined\n\t\t: waitForStream(stream, fdNumber, streamInfo));\n\n// Some `stdin`/`stdout`/`stderr` options create a stream, e.g. when passing a file path.\n// The `.pipe()` method automatically ends that stream when `subprocess` ends.\n// This makes sure we wait for the completion of those streams, in order to catch any error.\nconst waitForCustomStreamsEnd = (fileDescriptors, streamInfo) => fileDescriptors.flatMap(({stdioItems}, fdNumber) => stdioItems\n\t.filter(({value, stream = value}) => isNodeStream(stream, {checkOpen: false}) && !isStandardStream(stream))\n\t.map(({type, value, stream = value}) => waitForStream(stream, fdNumber, streamInfo, {\n\t\tisSameDirection: TRANSFORM_TYPES.has(type),\n\t\tstopOnExit: type === 'native',\n\t})));\n\n// Fails when the subprocess emits an `error` event\nconst throwOnSubprocessError = async (subprocess, {signal}) => {\n\tconst [error] = await once(subprocess, 'error', {signal});\n\tthrow error;\n};\n", "import {initializeConcurrentStreams} from './concurrent.js';\nimport {createReadable} from './readable.js';\nimport {createWritable} from './writable.js';\nimport {createDuplex} from './duplex.js';\nimport {createIterable} from './iterable.js';\n\n// Add methods to convert the subprocess to a stream or iterable\nexport const addConvertedStreams = (subprocess, {encoding}) => {\n\tconst concurrentStreams = initializeConcurrentStreams();\n\tsubprocess.readable = createReadable.bind(undefined, {subprocess, concurrentStreams, encoding});\n\tsubprocess.writable = createWritable.bind(undefined, {subprocess, concurrentStreams});\n\tsubprocess.duplex = createDuplex.bind(undefined, {subprocess, concurrentStreams, encoding});\n\tsubprocess.iterable = createIterable.bind(undefined, subprocess, encoding);\n\tsubprocess[Symbol.asyncIterator] = createIterable.bind(undefined, subprocess, encoding, {});\n};\n", "import {createDeferred} from '../utils/deferred.js';\n\n// When using multiple `.readable()`/`.writable()`/`.duplex()`, `final` and `destroy` should wait for other streams\nexport const initializeConcurrentStreams = () => ({\n\treadableDestroy: new WeakMap(),\n\twritableFinal: new WeakMap(),\n\twritableDestroy: new WeakMap(),\n});\n\n// Each file descriptor + `waitName` has its own array of promises.\n// Each promise is a single `.readable()`/`.writable()`/`.duplex()` call.\nexport const addConcurrentStream = (concurrentStreams, stream, waitName) => {\n\tconst weakMap = concurrentStreams[waitName];\n\tif (!weakMap.has(stream)) {\n\t\tweakMap.set(stream, []);\n\t}\n\n\tconst promises = weakMap.get(stream);\n\tconst promise = createDeferred();\n\tpromises.push(promise);\n\tconst resolve = promise.resolve.bind(promise);\n\treturn {resolve, promises};\n};\n\n// Wait for other streams, but stop waiting when subprocess ends\nexport const waitForConcurrentStreams = async ({resolve, promises}, subprocess) => {\n\tresolve();\n\tconst [isSubprocessExit] = await Promise.race([\n\t\tPromise.allSettled([true, subprocess]),\n\t\tPromise.all([false, ...promises]),\n\t]);\n\treturn !isSubprocessExit;\n};\n", "export const createDeferred = () => {\n\tconst methods = {};\n\tconst promise = new Promise((resolve, reject) => {\n\t\tObject.assign(methods, {resolve, reject});\n\t});\n\treturn Object.assign(promise, methods);\n};\n", "import {Readable} from 'node:stream';\nimport {callbackify} from 'node:util';\nimport {BINARY_ENCODINGS} from '../arguments/encoding-option.js';\nimport {getFromStream} from '../arguments/fd-options.js';\nimport {iterateOnSubprocessStream, DEFAULT_OBJECT_HIGH_WATER_MARK} from '../io/iterate.js';\nimport {createDeferred} from '../utils/deferred.js';\nimport {addConcurrentStream, waitForConcurrentStreams} from './concurrent.js';\nimport {\n\tsafeWaitForSubprocessStdin,\n\twaitForSubprocessStdout,\n\twaitForSubprocess,\n\tdestroyOtherStream,\n} from './shared.js';\n\n// Create a `Readable` stream that forwards from `stdout` and awaits the subprocess\nexport const createReadable = ({subprocess, concurrentStreams, encoding}, {from, binary: binaryOption = true, preserveNewlines = true} = {}) => {\n\tconst binary = binaryOption || BINARY_ENCODINGS.has(encoding);\n\tconst {subprocessStdout, waitReadableDestroy} = getSubprocessStdout(subprocess, from, concurrentStreams);\n\tconst {readableEncoding, readableObjectMode, readableHighWaterMark} = getReadableOptions(subprocessStdout, binary);\n\tconst {read, onStdoutDataDone} = getReadableMethods({\n\t\tsubprocessStdout,\n\t\tsubprocess,\n\t\tbinary,\n\t\tencoding,\n\t\tpreserveNewlines,\n\t});\n\tconst readable = new Readable({\n\t\tread,\n\t\tdestroy: callbackify(onReadableDestroy.bind(undefined, {subprocessStdout, subprocess, waitReadableDestroy})),\n\t\thighWaterMark: readableHighWaterMark,\n\t\tobjectMode: readableObjectMode,\n\t\tencoding: readableEncoding,\n\t});\n\tonStdoutFinished({\n\t\tsubprocessStdout,\n\t\tonStdoutDataDone,\n\t\treadable,\n\t\tsubprocess,\n\t});\n\treturn readable;\n};\n\n// Retrieve `stdout` (or other stream depending on `from`)\nexport const getSubprocessStdout = (subprocess, from, concurrentStreams) => {\n\tconst subprocessStdout = getFromStream(subprocess, from);\n\tconst waitReadableDestroy = addConcurrentStream(concurrentStreams, subprocessStdout, 'readableDestroy');\n\treturn {subprocessStdout, waitReadableDestroy};\n};\n\nexport const getReadableOptions = ({readableEncoding, readableObjectMode, readableHighWaterMark}, binary) => binary\n\t? {readableEncoding, readableObjectMode, readableHighWaterMark}\n\t: {readableEncoding, readableObjectMode: true, readableHighWaterMark: DEFAULT_OBJECT_HIGH_WATER_MARK};\n\nexport const getReadableMethods = ({subprocessStdout, subprocess, binary, encoding, preserveNewlines}) => {\n\tconst onStdoutDataDone = createDeferred();\n\tconst onStdoutData = iterateOnSubprocessStream({\n\t\tsubprocessStdout,\n\t\tsubprocess,\n\t\tbinary,\n\t\tshouldEncode: !binary,\n\t\tencoding,\n\t\tpreserveNewlines,\n\t});\n\n\treturn {\n\t\tread() {\n\t\t\tonRead(this, onStdoutData, onStdoutDataDone);\n\t\t},\n\t\tonStdoutDataDone,\n\t};\n};\n\n// Forwards data from `stdout` to `readable`\nconst onRead = async (readable, onStdoutData, onStdoutDataDone) => {\n\ttry {\n\t\tconst {value, done} = await onStdoutData.next();\n\t\tif (done) {\n\t\t\tonStdoutDataDone.resolve();\n\t\t} else {\n\t\t\treadable.push(value);\n\t\t}\n\t} catch {}\n};\n\n// When `subprocess.stdout` ends/aborts/errors, do the same on `readable`.\n// Await the subprocess, for the same reason as above.\nexport const onStdoutFinished = async ({subprocessStdout, onStdoutDataDone, readable, subprocess, subprocessStdin}) => {\n\ttry {\n\t\tawait waitForSubprocessStdout(subprocessStdout);\n\t\tawait subprocess;\n\t\tawait safeWaitForSubprocessStdin(subprocessStdin);\n\t\tawait onStdoutDataDone;\n\n\t\tif (readable.readable) {\n\t\t\treadable.push(null);\n\t\t}\n\t} catch (error) {\n\t\tawait safeWaitForSubprocessStdin(subprocessStdin);\n\t\tdestroyOtherReadable(readable, error);\n\t}\n};\n\n// When `readable` aborts/errors, do the same on `subprocess.stdout`\nexport const onReadableDestroy = async ({subprocessStdout, subprocess, waitReadableDestroy}, error) => {\n\tif (await waitForConcurrentStreams(waitReadableDestroy, subprocess)) {\n\t\tdestroyOtherReadable(subprocessStdout, error);\n\t\tawait waitForSubprocess(subprocess, error);\n\t}\n};\n\nconst destroyOtherReadable = (stream, error) => {\n\tdestroyOtherStream(stream, stream.readable, error);\n};\n", "import {finished} from 'node:stream/promises';\nimport {isStreamAbort} from '../resolve/wait-stream.js';\n\nexport const safeWaitForSubprocessStdin = async subprocessStdin => {\n\tif (subprocessStdin === undefined) {\n\t\treturn;\n\t}\n\n\ttry {\n\t\tawait waitForSubprocessStdin(subprocessStdin);\n\t} catch {}\n};\n\nexport const safeWaitForSubprocessStdout = async subprocessStdout => {\n\tif (subprocessStdout === undefined) {\n\t\treturn;\n\t}\n\n\ttry {\n\t\tawait waitForSubprocessStdout(subprocessStdout);\n\t} catch {}\n};\n\nexport const waitForSubprocessStdin = async subprocessStdin => {\n\tawait finished(subprocessStdin, {cleanup: true, readable: false, writable: true});\n};\n\nexport const waitForSubprocessStdout = async subprocessStdout => {\n\tawait finished(subprocessStdout, {cleanup: true, readable: true, writable: false});\n};\n\n// When `readable` or `writable` aborts/errors, awaits the subprocess, for the reason mentioned above\nexport const waitForSubprocess = async (subprocess, error) => {\n\tawait subprocess;\n\tif (error) {\n\t\tthrow error;\n\t}\n};\n\nexport const destroyOtherStream = (stream, isOpen, error) => {\n\tif (error && !isStreamAbort(error)) {\n\t\tstream.destroy(error);\n\t} else if (isOpen) {\n\t\tstream.destroy();\n\t}\n};\n", "import {Writable} from 'node:stream';\nimport {callbackify} from 'node:util';\nimport {getToStream} from '../arguments/fd-options.js';\nimport {addConcurrentStream, waitForConcurrentStreams} from './concurrent.js';\nimport {\n\tsafeWaitForSubprocessStdout,\n\twaitForSubprocessStdin,\n\twaitForSubprocess,\n\tdestroyOtherStream,\n} from './shared.js';\n\n// Create a `Writable` stream that forwards to `stdin` and awaits the subprocess\nexport const createWritable = ({subprocess, concurrentStreams}, {to} = {}) => {\n\tconst {subprocessStdin, waitWritableFinal, waitWritableDestroy} = getSubprocessStdin(subprocess, to, concurrentStreams);\n\tconst writable = new Writable({\n\t\t...getWritableMethods(subprocessStdin, subprocess, waitWritableFinal),\n\t\tdestroy: callbackify(onWritableDestroy.bind(undefined, {\n\t\t\tsubprocessStdin,\n\t\t\tsubprocess,\n\t\t\twaitWritableFinal,\n\t\t\twaitWritableDestroy,\n\t\t})),\n\t\thighWaterMark: subprocessStdin.writableHighWaterMark,\n\t\tobjectMode: subprocessStdin.writableObjectMode,\n\t});\n\tonStdinFinished(subprocessStdin, writable);\n\treturn writable;\n};\n\n// Retrieve `stdin` (or other stream depending on `to`)\nexport const getSubprocessStdin = (subprocess, to, concurrentStreams) => {\n\tconst subprocessStdin = getToStream(subprocess, to);\n\tconst waitWritableFinal = addConcurrentStream(concurrentStreams, subprocessStdin, 'writableFinal');\n\tconst waitWritableDestroy = addConcurrentStream(concurrentStreams, subprocessStdin, 'writableDestroy');\n\treturn {subprocessStdin, waitWritableFinal, waitWritableDestroy};\n};\n\nexport const getWritableMethods = (subprocessStdin, subprocess, waitWritableFinal) => ({\n\twrite: onWrite.bind(undefined, subprocessStdin),\n\tfinal: callbackify(onWritableFinal.bind(undefined, subprocessStdin, subprocess, waitWritableFinal)),\n});\n\n// Forwards data from `writable` to `stdin`\nconst onWrite = (subprocessStdin, chunk, encoding, done) => {\n\tif (subprocessStdin.write(chunk, encoding)) {\n\t\tdone();\n\t} else {\n\t\tsubprocessStdin.once('drain', done);\n\t}\n};\n\n// Ensures that the writable `final` and readable `end` events awaits the subprocess.\n// Like this, any subprocess failure is propagated as a stream `error` event, instead of being lost.\n// The user does not need to `await` the subprocess anymore, but now needs to await the stream completion or error.\n// When multiple writables are targeting the same stream, they wait for each other, unless the subprocess ends first.\nconst onWritableFinal = async (subprocessStdin, subprocess, waitWritableFinal) => {\n\tif (await waitForConcurrentStreams(waitWritableFinal, subprocess)) {\n\t\tif (subprocessStdin.writable) {\n\t\t\tsubprocessStdin.end();\n\t\t}\n\n\t\tawait subprocess;\n\t}\n};\n\n// When `subprocess.stdin` ends/aborts/errors, do the same on `writable`.\nexport const onStdinFinished = async (subprocessStdin, writable, subprocessStdout) => {\n\ttry {\n\t\tawait waitForSubprocessStdin(subprocessStdin);\n\t\tif (writable.writable) {\n\t\t\twritable.end();\n\t\t}\n\t} catch (error) {\n\t\tawait safeWaitForSubprocessStdout(subprocessStdout);\n\t\tdestroyOtherWritable(writable, error);\n\t}\n};\n\n// When `writable` aborts/errors, do the same on `subprocess.stdin`\nexport const onWritableDestroy = async ({subprocessStdin, subprocess, waitWritableFinal, waitWritableDestroy}, error) => {\n\tawait waitForConcurrentStreams(waitWritableFinal, subprocess);\n\tif (await waitForConcurrentStreams(waitWritableDestroy, subprocess)) {\n\t\tdestroyOtherWritable(subprocessStdin, error);\n\t\tawait waitForSubprocess(subprocess, error);\n\t}\n};\n\nconst destroyOtherWritable = (stream, error) => {\n\tdestroyOtherStream(stream, stream.writable, error);\n};\n", "import {Duplex} from 'node:stream';\nimport {callbackify} from 'node:util';\nimport {BINARY_ENCODINGS} from '../arguments/encoding-option.js';\nimport {\n\tgetSubprocessStdout,\n\tgetReadableOptions,\n\tgetReadableMethods,\n\tonStdoutFinished,\n\tonReadableDestroy,\n} from './readable.js';\nimport {\n\tgetSubprocessStdin,\n\tgetWritableMethods,\n\tonStdinFinished,\n\tonWritableDestroy,\n} from './writable.js';\n\n// Create a `Duplex` stream combining both `subprocess.readable()` and `subprocess.writable()`\nexport const createDuplex = ({subprocess, concurrentStreams, encoding}, {from, to, binary: binaryOption = true, preserveNewlines = true} = {}) => {\n\tconst binary = binaryOption || BINARY_ENCODINGS.has(encoding);\n\tconst {subprocessStdout, waitReadableDestroy} = getSubprocessStdout(subprocess, from, concurrentStreams);\n\tconst {subprocessStdin, waitWritableFinal, waitWritableDestroy} = getSubprocessStdin(subprocess, to, concurrentStreams);\n\tconst {readableEncoding, readableObjectMode, readableHighWaterMark} = getReadableOptions(subprocessStdout, binary);\n\tconst {read, onStdoutDataDone} = getReadableMethods({\n\t\tsubprocessStdout,\n\t\tsubprocess,\n\t\tbinary,\n\t\tencoding,\n\t\tpreserveNewlines,\n\t});\n\tconst duplex = new Duplex({\n\t\tread,\n\t\t...getWritableMethods(subprocessStdin, subprocess, waitWritableFinal),\n\t\tdestroy: callbackify(onDuplexDestroy.bind(undefined, {\n\t\t\tsubprocessStdout,\n\t\t\tsubprocessStdin,\n\t\t\tsubprocess,\n\t\t\twaitReadableDestroy,\n\t\t\twaitWritableFinal,\n\t\t\twaitWritableDestroy,\n\t\t})),\n\t\treadableHighWaterMark,\n\t\twritableHighWaterMark: subprocessStdin.writableHighWaterMark,\n\t\treadableObjectMode,\n\t\twritableObjectMode: subprocessStdin.writableObjectMode,\n\t\tencoding: readableEncoding,\n\t});\n\tonStdoutFinished({\n\t\tsubprocessStdout,\n\t\tonStdoutDataDone,\n\t\treadable: duplex,\n\t\tsubprocess,\n\t\tsubprocessStdin,\n\t});\n\tonStdinFinished(subprocessStdin, duplex, subprocessStdout);\n\treturn duplex;\n};\n\nconst onDuplexDestroy = async ({subprocessStdout, subprocessStdin, subprocess, waitReadableDestroy, waitWritableFinal, waitWritableDestroy}, error) => {\n\tawait Promise.all([\n\t\tonReadableDestroy({subprocessStdout, subprocess, waitReadableDestroy}, error),\n\t\tonWritableDestroy({\n\t\t\tsubprocessStdin,\n\t\t\tsubprocess,\n\t\t\twaitWritableFinal,\n\t\t\twaitWritableDestroy,\n\t\t}, error),\n\t]);\n};\n", "import {BINARY_ENCODINGS} from '../arguments/encoding-option.js';\nimport {getFromStream} from '../arguments/fd-options.js';\nimport {iterateOnSubprocessStream} from '../io/iterate.js';\n\n// Convert the subprocess to an async iterable\nexport const createIterable = (subprocess, encoding, {\n\tfrom,\n\tbinary: binaryOption = false,\n\tpreserveNewlines = false,\n} = {}) => {\n\tconst binary = binaryOption || BINARY_ENCODINGS.has(encoding);\n\tconst subprocessStdout = getFromStream(subprocess, from);\n\tconst onStdoutData = iterateOnSubprocessStream({\n\t\tsubprocessStdout,\n\t\tsubprocess,\n\t\tbinary,\n\t\tshouldEncode: true,\n\t\tencoding,\n\t\tpreserveNewlines,\n\t});\n\treturn iterateOnStdoutData(onStdoutData, subprocessStdout, subprocess);\n};\n\nconst iterateOnStdoutData = async function * (onStdoutData, subprocessStdout, subprocess) {\n\ttry {\n\t\tyield * onStdoutData;\n\t} finally {\n\t\tif (subprocessStdout.readable) {\n\t\t\tsubprocessStdout.destroy();\n\t\t}\n\n\t\tawait subprocess;\n\t}\n};\n", "// The return value is a mixin of `subprocess` and `Promise`\nexport const mergePromise = (subprocess, promise) => {\n\tfor (const [property, descriptor] of descriptors) {\n\t\tconst value = descriptor.value.bind(promise);\n\t\tReflect.defineProperty(subprocess, property, {...descriptor, value});\n\t}\n};\n\n// eslint-disable-next-line unicorn/prefer-top-level-await\nconst nativePromisePrototype = (async () => {})().constructor.prototype;\n\nconst descriptors = ['then', 'catch', 'finally'].map(property => [\n\tproperty,\n\tReflect.getOwnPropertyDescriptor(nativePromisePrototype, property),\n]);\n", "import isPlainObject from 'is-plain-obj';\nimport {FD_SPECIFIC_OPTIONS} from '../arguments/specific.js';\n\n// Deep merge specific options like `env`. Shallow merge the other ones.\nexport const mergeOptions = (boundOptions, options) => {\n\tconst newOptions = Object.fromEntries(\n\t\tObject.entries(options).map(([optionName, optionValue]) => [\n\t\t\toptionName,\n\t\t\tmergeOption(optionName, boundOptions[optionName], optionValue),\n\t\t]),\n\t);\n\treturn {...boundOptions, ...newOptions};\n};\n\nconst mergeOption = (optionName, boundOptionValue, optionValue) => {\n\tif (DEEP_OPTIONS.has(optionName) && isPlainObject(boundOptionValue) && isPlainObject(optionValue)) {\n\t\treturn {...boundOptionValue, ...optionValue};\n\t}\n\n\treturn optionValue;\n};\n\nconst DEEP_OPTIONS = new Set(['env', ...FD_SPECIFIC_OPTIONS]);\n", "// Main logic for `execaCommand()`\nexport const mapCommandAsync = ({file, commandArguments}) => parseCommand(file, commandArguments);\n\n// Main logic for `execaCommandSync()`\nexport const mapCommandSync = ({file, commandArguments}) => ({...parseCommand(file, commandArguments), isSync: true});\n\n// Convert `execaCommand(command)` into `execa(file, ...commandArguments)`\nconst parseCommand = (command, unusedArguments) => {\n\tif (unusedArguments.length > 0) {\n\t\tthrow new TypeError(`The command and its arguments must be passed as a single string: ${command} ${unusedArguments}.`);\n\t}\n\n\tconst tokens = [];\n\tfor (const token of command.trim().split(SPACES_REGEXP)) {\n\t\t// Allow spaces to be escaped by a backslash if not meant as a delimiter\n\t\tconst previousToken = tokens.at(-1);\n\t\tif (previousToken && previousToken.endsWith('\\\\')) {\n\t\t\t// Merge previous token with current one\n\t\t\ttokens[tokens.length - 1] = `${previousToken.slice(0, -1)} ${token}`;\n\t\t} else {\n\t\t\ttokens.push(token);\n\t\t}\n\t}\n\n\tconst [file, ...commandArguments] = tokens;\n\treturn {file, commandArguments};\n};\n\nconst SPACES_REGEXP = / +/g;\n", "// Sets `$.sync` and `$.s`\nexport const setScriptSync = (boundExeca, createNested, boundOptions) => {\n\tboundExeca.sync = createNested(mapScriptSync, boundOptions);\n\tboundExeca.s = boundExeca.sync;\n};\n\n// Main logic for `$`\nexport const mapScriptAsync = ({options}) => getScriptOptions(options);\n\n// Main logic for `$.sync`\nconst mapScriptSync = ({options}) => ({...getScriptOptions(options), isSync: true});\n\n// `$` is like `execa` but with script-friendly options: `{stdin: 'inherit', preferLocal: true}`\nconst getScriptOptions = options => ({options: {...getScriptStdinOption(options), ...options}});\n\nconst getScriptStdinOption = ({input, inputFile, stdio}) => input === undefined && inputFile === undefined && stdio === undefined\n\t? {stdin: 'inherit'}\n\t: {};\n\n// When using $(...).pipe(...), most script-friendly options should apply to both commands.\n// However, some options (like `stdin: 'inherit'`) would create issues with piping, i.e. cannot be deep.\nexport const deepScriptOptions = {preferLocal: true};\n", "import * as esbuild from \"esbuild\";\r\nimport { writeFileSync } from \"fs\";\r\nimport { join } from \"path\";\r\nimport TOML from \"@iarna/toml\";\r\nimport { getResocketDir, getWorkerFramework } from \"./getAssets\";\r\nimport { ReplaceSymbols } from \"../constants\";\r\nimport type { ResocketConfig } from \"../types\";\r\nimport { removeUndefined } from \"../utils\";\r\n\r\nlet ctx: esbuild.BuildContext;\r\n//we will use it to generate wrangler.toml instead\r\nlet prevConfig: ResocketConfig;\r\n\r\nconst getDurableBindingsFromRooms = (rooms: string | string[]) => {\r\n  let roomsArray: string[];\r\n\r\n  if (Array.isArray(rooms)) {\r\n    roomsArray = rooms;\r\n  } else {\r\n    roomsArray = [rooms];\r\n  }\r\n\r\n  const durableBindings = roomsArray.map((room) => ({\r\n    name: room,\r\n    class_name: room,\r\n  }));\r\n\r\n  const durableMigrations = {\r\n    tag: \"v0\",\r\n    new_classes: roomsArray.map((room) => room),\r\n  };\r\n  return { durableBindings, durableMigrations };\r\n};\r\n\r\nconst getDevWorkerFilePath = () => {\r\n  return getResocketDir() + \"/gen/worker.js\";\r\n};\r\n\r\nexport const createWranglerDevConfigFromResocketConfig = (\r\n  resocketConfig: ResocketConfig\r\n) => {\r\n  const {\r\n    name,\r\n    rooms,\r\n    main,\r\n    port,\r\n    envs: vars,\r\n    migrationMode: _autoMigs,\r\n    ...wranglerConfig\r\n  } = resocketConfig;\r\n\r\n  const { durableBindings, durableMigrations } =\r\n    getDurableBindingsFromRooms(rooms);\r\n\r\n  const config = {\r\n    name,\r\n    main: getDevWorkerFilePath(),\r\n    vars,\r\n    dev: {\r\n      port,\r\n    },\r\n    ...wranglerConfig,\r\n    durable_objects: { bindings: durableBindings },\r\n    migrations: [durableMigrations],\r\n  };\r\n\r\n  const toml = TOML.stringify(removeUndefined(config));\r\n\r\n  return `#auto generated dont change \\n` + toml;\r\n};\r\n\r\nconst getGeneratedDevDurableImports = (rooms: string | string[]) => {\r\n  let gen = \"\";\r\n  const resocketDir = getResocketDir();\r\n\r\n  const genDurablePath = `${resocketDir.replaceAll(\"\\\\\", \"/\")}/gen/durable.js`;\r\n\r\n  Array.isArray(rooms)\r\n    ? rooms.map((room) => {\r\n        gen += `import {${room} as ${room}DO} from '${genDurablePath}';\\n`;\r\n      })\r\n    : `import {${rooms} as ${rooms}DO} from '${genDurablePath}';\\n`;\r\n\r\n  return gen;\r\n};\r\n\r\nconst getGeneratedDurableExports = (rooms: string | string[]) => {\r\n  let gen = \"\";\r\n\r\n  Array.isArray(rooms)\r\n    ? rooms.map((room) => {\r\n        gen += `export const ${room}  = _createDurable(${room}DO);\\n\r\n  _durables[\"${room}\"] = ${room}DO\\n`;\r\n      })\r\n    : `export const ${rooms}  = _createDurable(${rooms}DO);\\n\r\n  _durables[\"${rooms}\"] = ${rooms}DO\\n`;\r\n\r\n  return gen;\r\n};\r\n\r\nexport const buildDev = async (file: string, config: ResocketConfig) => {\r\n  const resocketDir = getResocketDir();\r\n\r\n  const isInitial = !ctx;\r\n\r\n  //if no context is present, that means this is the initial build\r\n  if (isInitial) {\r\n    //build durable objects first\r\n    ctx = await esbuild.context({\r\n      entryPoints: [file],\r\n      bundle: true,\r\n      outfile: `${resocketDir}/gen/durable.js`,\r\n      format: \"esm\",\r\n      platform: \"node\",\r\n    });\r\n  }\r\n  //this means we need to dispose context and rebuild\r\n  else if (prevConfig && prevConfig.main !== config.main) {\r\n    await ctx.dispose();\r\n    ctx = await esbuild.context({\r\n      entryPoints: [file],\r\n      bundle: true,\r\n      outfile: `${resocketDir}/gen/durable.js`,\r\n      format: \"esm\",\r\n    });\r\n\r\n    await ctx.watch();\r\n  }\r\n\r\n  //write the wrangler.toml file incase of config changes\r\n  //?question is that what if the esbuild context doesn not care about resocket.json changes? hmm something to keep in mind that we might still need to keep chokidar around for this use case\r\n  if (!prevConfig || JSON.stringify(prevConfig) !== JSON.stringify(config)) {\r\n    //run it after the prev build\r\n\r\n    // const hasEnv = Object.keys(config.)\r\n\r\n    //?hmm... maybe this should be only run after the resocket.json is changed, why? because this actually does not changes even if the core durables change> :genios\r\n    await esbuild.build({\r\n      stdin: {\r\n        contents: getWorkerFramework()\r\n          .replace(\r\n            ReplaceSymbols.ImportDurables,\r\n\r\n            getGeneratedDevDurableImports(config.rooms)\r\n          )\r\n          .replace(\r\n            ReplaceSymbols.ExportDurables,\r\n            getGeneratedDurableExports(config.rooms)\r\n          ),\r\n        // resolveDir: resocketDir,\r\n        loader: \"ts\",\r\n      },\r\n      // minify: true,\r\n      bundle: false,\r\n      outfile: `${resocketDir}/gen/worker.js`,\r\n      format: \"esm\",\r\n    });\r\n\r\n    prevConfig = config;\r\n    writeFileSync(\r\n      join(resocketDir, \"/gen/wrangler.toml\"),\r\n      //hmm... either change the code to add envs to config or use esbuild degines heh\r\n      createWranglerDevConfigFromResocketConfig(config)\r\n    );\r\n  }\r\n\r\n  if (isInitial) await ctx.watch();\r\n\r\n  return ctx;\r\n};\r\n\r\nexport const buildDeployDurable = async (file: string) => {\r\n  //build durable objects first\r\n  const data = await esbuild.build({\r\n    entryPoints: [file],\r\n    bundle: true,\r\n    format: \"esm\",\r\n    minify: false,\r\n    platform: \"node\",\r\n    write: false,\r\n  });\r\n\r\n  const bundle = data.outputFiles[0];\r\n\r\n  //should never happen\r\n  if (!bundle) throw new Error(\"No output bundle found - should never happen\");\r\n\r\n  return bundle;\r\n};\r\n", "import { readFileSync } from \"fs\";\r\nimport { fileURLToPath } from \"url\";\r\nimport { dirname, join } from \"path\";\r\nimport { findUpSync } from \"find-up\";\r\n// Get the directory path of the current module\r\nconst currentDir = dirname(fileURLToPath(import.meta.url));\r\n\r\n//will load and keep it in memeory since assets won't change (i.e static assests)\r\nlet workerFramework: string;\r\n\r\nexport const getWorkerFramework = () => {\r\n  if (workerFramework) return workerFramework;\r\n\r\n  const fileBuffer = readFileSync(\r\n    join(currentDir, \"./framework/workerFramework.js\")\r\n  );\r\n\r\n  const bufferToString = Buffer.from(fileBuffer).toString();\r\n\r\n  workerFramework = bufferToString;\r\n\r\n  return workerFramework;\r\n};\r\n\r\nexport const getResocketDir = () => {\r\n  const closestParentNodeModulesPath = findUpSync(\"node_modules\", {\r\n    type: \"directory\",\r\n  });\r\n\r\n  if (!closestParentNodeModulesPath) throw new Error(\"no nodemodules found\");\r\n\r\n  const resocketDir = join(closestParentNodeModulesPath, \"..\", \".resocket\");\r\n\r\n  return resocketDir;\r\n};\r\n", "import path from 'node:path';\nimport {locatePath, locatePathSync} from 'locate-path';\nimport {toPath} from 'unicorn-magic';\n\nexport const findUpStop = Symbol('findUpStop');\n\nexport async function findUpMultiple(name, options = {}) {\n\tlet directory = path.resolve(toPath(options.cwd) ?? '');\n\tconst {root} = path.parse(directory);\n\tconst stopAt = path.resolve(directory, toPath(options.stopAt ?? root));\n\tconst limit = options.limit ?? Number.POSITIVE_INFINITY;\n\tconst paths = [name].flat();\n\n\tconst runMatcher = async locateOptions => {\n\t\tif (typeof name !== 'function') {\n\t\t\treturn locatePath(paths, locateOptions);\n\t\t}\n\n\t\tconst foundPath = await name(locateOptions.cwd);\n\t\tif (typeof foundPath === 'string') {\n\t\t\treturn locatePath([foundPath], locateOptions);\n\t\t}\n\n\t\treturn foundPath;\n\t};\n\n\tconst matches = [];\n\t// eslint-disable-next-line no-constant-condition\n\twhile (true) {\n\t\t// eslint-disable-next-line no-await-in-loop\n\t\tconst foundPath = await runMatcher({...options, cwd: directory});\n\n\t\tif (foundPath === findUpStop) {\n\t\t\tbreak;\n\t\t}\n\n\t\tif (foundPath) {\n\t\t\tmatches.push(path.resolve(directory, foundPath));\n\t\t}\n\n\t\tif (directory === stopAt || matches.length >= limit) {\n\t\t\tbreak;\n\t\t}\n\n\t\tdirectory = path.dirname(directory);\n\t}\n\n\treturn matches;\n}\n\nexport function findUpMultipleSync(name, options = {}) {\n\tlet directory = path.resolve(toPath(options.cwd) ?? '');\n\tconst {root} = path.parse(directory);\n\tconst stopAt = path.resolve(directory, toPath(options.stopAt) ?? root);\n\tconst limit = options.limit ?? Number.POSITIVE_INFINITY;\n\tconst paths = [name].flat();\n\n\tconst runMatcher = locateOptions => {\n\t\tif (typeof name !== 'function') {\n\t\t\treturn locatePathSync(paths, locateOptions);\n\t\t}\n\n\t\tconst foundPath = name(locateOptions.cwd);\n\t\tif (typeof foundPath === 'string') {\n\t\t\treturn locatePathSync([foundPath], locateOptions);\n\t\t}\n\n\t\treturn foundPath;\n\t};\n\n\tconst matches = [];\n\t// eslint-disable-next-line no-constant-condition\n\twhile (true) {\n\t\tconst foundPath = runMatcher({...options, cwd: directory});\n\n\t\tif (foundPath === findUpStop) {\n\t\t\tbreak;\n\t\t}\n\n\t\tif (foundPath) {\n\t\t\tmatches.push(path.resolve(directory, foundPath));\n\t\t}\n\n\t\tif (directory === stopAt || matches.length >= limit) {\n\t\t\tbreak;\n\t\t}\n\n\t\tdirectory = path.dirname(directory);\n\t}\n\n\treturn matches;\n}\n\nexport async function findUp(name, options = {}) {\n\tconst matches = await findUpMultiple(name, {...options, limit: 1});\n\treturn matches[0];\n}\n\nexport function findUpSync(name, options = {}) {\n\tconst matches = findUpMultipleSync(name, {...options, limit: 1});\n\treturn matches[0];\n}\n\nexport {\n\tpathExists,\n\tpathExistsSync,\n} from 'path-exists';\n", "import process from 'node:process';\nimport path from 'node:path';\nimport fs, {promises as fsPromises} from 'node:fs';\nimport {fileURLToPath} from 'node:url';\nimport pLocate from 'p-locate';\n\nconst typeMappings = {\n\tdirectory: 'isDirectory',\n\tfile: 'isFile',\n};\n\nfunction checkType(type) {\n\tif (Object.hasOwnProperty.call(typeMappings, type)) {\n\t\treturn;\n\t}\n\n\tthrow new Error(`Invalid type specified: ${type}`);\n}\n\nconst matchType = (type, stat) => stat[typeMappings[type]]();\n\nconst toPath = urlOrPath => urlOrPath instanceof URL ? fileURLToPath(urlOrPath) : urlOrPath;\n\nexport async function locatePath(\n\tpaths,\n\t{\n\t\tcwd = process.cwd(),\n\t\ttype = 'file',\n\t\tallowSymlinks = true,\n\t\tconcurrency,\n\t\tpreserveOrder,\n\t} = {},\n) {\n\tcheckType(type);\n\tcwd = toPath(cwd);\n\n\tconst statFunction = allowSymlinks ? fsPromises.stat : fsPromises.lstat;\n\n\treturn pLocate(paths, async path_ => {\n\t\ttry {\n\t\t\tconst stat = await statFunction(path.resolve(cwd, path_));\n\t\t\treturn matchType(type, stat);\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t}, {concurrency, preserveOrder});\n}\n\nexport function locatePathSync(\n\tpaths,\n\t{\n\t\tcwd = process.cwd(),\n\t\ttype = 'file',\n\t\tallowSymlinks = true,\n\t} = {},\n) {\n\tcheckType(type);\n\tcwd = toPath(cwd);\n\n\tconst statFunction = allowSymlinks ? fs.statSync : fs.lstatSync;\n\n\tfor (const path_ of paths) {\n\t\ttry {\n\t\t\tconst stat = statFunction(path.resolve(cwd, path_), {\n\t\t\t\tthrowIfNoEntry: false,\n\t\t\t});\n\n\t\t\tif (!stat) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (matchType(type, stat)) {\n\t\t\t\treturn path_;\n\t\t\t}\n\t\t} catch {}\n\t}\n}\n", "import pLimit from 'p-limit';\n\nclass EndError extends Error {\n\tconstructor(value) {\n\t\tsuper();\n\t\tthis.value = value;\n\t}\n}\n\n// The input can also be a promise, so we await it.\nconst testElement = async (element, tester) => tester(await element);\n\n// The input can also be a promise, so we `Promise.all()` them both.\nconst finder = async element => {\n\tconst values = await Promise.all(element);\n\tif (values[1] === true) {\n\t\tthrow new EndError(values[0]);\n\t}\n\n\treturn false;\n};\n\nexport default async function pLocate(\n\titerable,\n\ttester,\n\t{\n\t\tconcurrency = Number.POSITIVE_INFINITY,\n\t\tpreserveOrder = true,\n\t} = {},\n) {\n\tconst limit = pLimit(concurrency);\n\n\t// Start all the promises concurrently with optional limit.\n\tconst items = [...iterable].map(element => [element, limit(testElement, element, tester)]);\n\n\t// Check the promises either serially or concurrently.\n\tconst checkLimit = pLimit(preserveOrder ? 1 : Number.POSITIVE_INFINITY);\n\n\ttry {\n\t\tawait Promise.all(items.map(element => checkLimit(finder, element)));\n\t} catch (error) {\n\t\tif (error instanceof EndError) {\n\t\t\treturn error.value;\n\t\t}\n\n\t\tthrow error;\n\t}\n}\n", "import Queue from 'yocto-queue';\n\nexport default function pLimit(concurrency) {\n\tif (!((Number.isInteger(concurrency) || concurrency === Number.POSITIVE_INFINITY) && concurrency > 0)) {\n\t\tthrow new TypeError('Expected `concurrency` to be a number from 1 and up');\n\t}\n\n\tconst queue = new Queue();\n\tlet activeCount = 0;\n\n\tconst next = () => {\n\t\tactiveCount--;\n\n\t\tif (queue.size > 0) {\n\t\t\tqueue.dequeue()();\n\t\t}\n\t};\n\n\tconst run = async (fn, resolve, args) => {\n\t\tactiveCount++;\n\n\t\tconst result = (async () => fn(...args))();\n\n\t\tresolve(result);\n\n\t\ttry {\n\t\t\tawait result;\n\t\t} catch {}\n\n\t\tnext();\n\t};\n\n\tconst enqueue = (fn, resolve, args) => {\n\t\tqueue.enqueue(run.bind(undefined, fn, resolve, args));\n\n\t\t(async () => {\n\t\t\t// This function needs to wait until the next microtask before comparing\n\t\t\t// `activeCount` to `concurrency`, because `activeCount` is updated asynchronously\n\t\t\t// when the run function is dequeued and called. The comparison in the if-statement\n\t\t\t// needs to happen asynchronously as well to get an up-to-date value for `activeCount`.\n\t\t\tawait Promise.resolve();\n\n\t\t\tif (activeCount < concurrency && queue.size > 0) {\n\t\t\t\tqueue.dequeue()();\n\t\t\t}\n\t\t})();\n\t};\n\n\tconst generator = (fn, ...args) => new Promise(resolve => {\n\t\tenqueue(fn, resolve, args);\n\t});\n\n\tObject.defineProperties(generator, {\n\t\tactiveCount: {\n\t\t\tget: () => activeCount,\n\t\t},\n\t\tpendingCount: {\n\t\t\tget: () => queue.size,\n\t\t},\n\t\tclearQueue: {\n\t\t\tvalue: () => {\n\t\t\t\tqueue.clear();\n\t\t\t},\n\t\t},\n\t});\n\n\treturn generator;\n}\n", "/*\nHow it works:\n`this.#head` is an instance of `Node` which keeps track of its current value and nests another instance of `Node` that keeps the value that comes after it. When a value is provided to `.enqueue()`, the code needs to iterate through `this.#head`, going deeper and deeper to find the last value. However, iterating through every single item is slow. This problem is solved by saving a reference to the last value as `this.#tail` so that it can reference it to add a new value.\n*/\n\nclass Node {\n\tvalue;\n\tnext;\n\n\tconstructor(value) {\n\t\tthis.value = value;\n\t}\n}\n\nexport default class Queue {\n\t#head;\n\t#tail;\n\t#size;\n\n\tconstructor() {\n\t\tthis.clear();\n\t}\n\n\tenqueue(value) {\n\t\tconst node = new Node(value);\n\n\t\tif (this.#head) {\n\t\t\tthis.#tail.next = node;\n\t\t\tthis.#tail = node;\n\t\t} else {\n\t\t\tthis.#head = node;\n\t\t\tthis.#tail = node;\n\t\t}\n\n\t\tthis.#size++;\n\t}\n\n\tdequeue() {\n\t\tconst current = this.#head;\n\t\tif (!current) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.#head = this.#head.next;\n\t\tthis.#size--;\n\t\treturn current.value;\n\t}\n\n\tclear() {\n\t\tthis.#head = undefined;\n\t\tthis.#tail = undefined;\n\t\tthis.#size = 0;\n\t}\n\n\tget size() {\n\t\treturn this.#size;\n\t}\n\n\t* [Symbol.iterator]() {\n\t\tlet current = this.#head;\n\n\t\twhile (current) {\n\t\t\tyield current.value;\n\t\t\tcurrent = current.next;\n\t\t}\n\t}\n}\n", "import {fileURLToPath} from 'node:url';\n\nexport function toPath(urlOrPath) {\n\treturn urlOrPath instanceof URL ? fileURLToPath(urlOrPath) : urlOrPath;\n}\n\nexport * from './default.js';\n", "import fs, {promises as fsPromises} from 'node:fs';\n\nexport async function pathExists(path) {\n\ttry {\n\t\tawait fsPromises.access(path);\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nexport function pathExistsSync(path) {\n\ttry {\n\t\tfs.accessSync(path);\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n}\n", "export enum ReplaceSymbols {\r\n  ImportDurables = \"__RESOCKET_IMPORT_DURABLE__\",\r\n  ExportDurables = \"__RESOCKET_ADD_AND_EXPORT_DURABLE__\",\r\n}\r\n\r\nexport const DefaultEnvFilesToRead = [\".env\", \".env.local\"];\r\n\r\nexport const API_BASE =\r\n  // `http://localhost:3000/` ||\r\n  \"https://private-docs-mirror-d2ju.vercel.app/\" || `http://localhost:3000/`;\r\n\r\n//TODO: manual right now ~~ room for imrpovements here\r\n//! BE CAREFUL HERE :)\r\nexport const FRAMEWORK_VERSION = 0;\r\n", "import { join } from \"path\";\r\nimport type { ResocketConfig } from \"../types\";\r\nimport { getResocketConfigPath } from \"../config\";\r\n\r\nexport const getWorkerFilePath = (\r\n  configPath: string | undefined,\r\n  config: ResocketConfig\r\n) => {\r\n  let resocketConfigPath: string | undefined = configPath\r\n    ? configPath\r\n    : getResocketConfigPath();\r\n\r\n  if (!resocketConfigPath) throw new Error(\"unable to find resocket.json\");\r\n\r\n  //now this will always read the core file\r\n  const workerFilePath = join(resocketConfigPath, \"../\", config.main);\r\n\r\n  return workerFilePath;\r\n};\r\n\r\nexport function areArraysSimilar(arr1: string[], arr2: string[]): boolean {\r\n  if (arr1.length !== arr2.length) {\r\n    return false;\r\n  }\r\n\r\n  const sortedArr1 = arr1.slice().sort();\r\n  const sortedArr2 = arr2.slice().sort();\r\n\r\n  for (let i = 0; i < sortedArr1.length; i++) {\r\n    if (sortedArr1[i] !== sortedArr2[i]) {\r\n      return false;\r\n    }\r\n  }\r\n\r\n  return true;\r\n}\r\n\r\nexport function removeUndefined<T = Record<string, any>>(\r\n  obj: Record<string, any>\r\n): T {\r\n  const result: Record<string, any> = {};\r\n\r\n  for (const key in obj) {\r\n    if (obj[key] !== undefined) {\r\n      result[key] = obj[key];\r\n    }\r\n  }\r\n\r\n  return result as T;\r\n}\r\n\r\nexport function getRandomElement(arr: Array<any>) {\r\n  const randomIndex = Math.floor(Math.random() * arr.length);\r\n  return arr[randomIndex];\r\n}\r\n\r\nexport function findDuplicate(array: string[]): string | undefined {\r\n  const seen: { [key: string]: boolean } = {};\r\n\r\n  for (const element of array) {\r\n    if (seen[element]) {\r\n      return element; // Duplicate found\r\n    }\r\n    seen[element] = true;\r\n  }\r\n\r\n  return undefined; // No duplicates found\r\n}\r\n\r\nexport function hasDuplicateKey(arr: any[], key: string) {\r\n  const seenKeys = new Set();\r\n  for (const item of arr) {\r\n    if (seenKeys.has(item[key])) {\r\n      return item[key]; // Duplicate found\r\n    }\r\n    seenKeys.add(item[key]);\r\n  }\r\n  return false; // No duplicates\r\n}\r\n", "import { existsSync, readFileSync, mkdirSync, writeFileSync, rmSync } from \"fs\";\r\nimport { findUpSync } from \"find-up\";\r\nimport { join } from \"path\";\r\nimport type { ResocketConfig, UserConfig } from \"./types\";\r\nimport { resocketConfigSchema, userConfigSchema } from \"./schema\";\r\nimport { getFormattedError } from \"./utils/errror\";\r\nimport { readEnv } from \"./env\";\r\nimport { homedir } from \"os\";\r\n\r\ninterface GetResocketConfig {\r\n  config?: string;\r\n  configOverrides?: {\r\n    port?: number;\r\n  };\r\n}\r\n\r\nexport const getResocketConfigPath = () => {\r\n  const resocketConfigPath = findUpSync(\"resocket.json\");\r\n\r\n  return resocketConfigPath;\r\n};\r\n\r\n//todo a better parsing of the config. and more proper zod :)\r\nexport const getResocketConfig = (overrides: GetResocketConfig = {}) => {\r\n  let resocketConfigPath: string | undefined = overrides.config\r\n    ? overrides.config\r\n    : getResocketConfigPath();\r\n\r\n  if (!resocketConfigPath) throw new Error(\"Unable to find resocket.config\");\r\n\r\n  const resocketConfigBuffer = readFileSync(resocketConfigPath);\r\n\r\n  const rawConfig = JSON.parse(\r\n    Buffer.from(resocketConfigBuffer).toString()\r\n  ) as ResocketConfig;\r\n\r\n  const rawConfigWithOverrides = {\r\n    ...rawConfig,\r\n    ...overrides.configOverrides,\r\n  };\r\n\r\n  const resocketConfig = resocketConfigSchema.parse(rawConfigWithOverrides);\r\n\r\n  const envs = readEnv(resocketConfig.envFiles);\r\n\r\n  //validate the config to avoid _ room names\r\n  if (resocketConfig.rooms) {\r\n    const rooms = Array.isArray(resocketConfig.rooms)\r\n      ? resocketConfig.rooms\r\n      : [resocketConfig.rooms];\r\n\r\n    for (let room of rooms)\r\n      if (room.startsWith(\"_\"))\r\n        throw new Error(\r\n          getFormattedError({\r\n            coreMessage:\r\n              \"Rooms cannot have a '_' (underscore) as the first character.\",\r\n            humanMessage:\r\n              \"this is a known limitation & most likely will not change due to internal workings of the framework, sorry for the inconvinience :( \",\r\n          })\r\n        );\r\n  }\r\n\r\n  const configWithEnv = { ...resocketConfig, envs };\r\n  resocketConfigSchema.parse(configWithEnv);\r\n\r\n  return configWithEnv;\r\n};\r\n\r\nexport const getUserConfigPath = () => {\r\n  return join(homedir(), \".resocket\", \"user-config.json\");\r\n};\r\n\r\nexport const getUserConfig = () => {\r\n  const configPath = getUserConfigPath();\r\n\r\n  if (!existsSync(configPath)) return;\r\n\r\n  const config = JSON.parse(readFileSync(configPath, \"utf8\"));\r\n  return userConfigSchema.parse(config);\r\n};\r\n\r\nexport const saveUserConfig = (config: UserConfig) => {\r\n  //todo should we use something like keytar? https://www.npmjs.com/package/keytar it is unmaintained though :/\r\n\r\n  const configPath = getUserConfigPath();\r\n\r\n  //make the .resocket directory\r\n  mkdirSync(join(configPath, \"..\"), { recursive: true });\r\n  writeFileSync(configPath, JSON.stringify(config));\r\n};\r\n\r\nexport const removeUserConfig = () => {\r\n  rmSync(join(getUserConfigPath(), \"..\"), { recursive: true, force: true });\r\n};\r\n", "import { z } from \"zod\";\r\n\r\nexport const migrationModeSchema = z.union([\r\n  z.literal(\"manual\"),\r\n  z.literal(\"newRoomsOnly\"),\r\n  z.literal(\"auto\"),\r\n]);\r\n\r\nconst resocketMigrationStepSchema = z.union([\r\n  z.object({\r\n    newRooms: z.array(z.string()),\r\n  }),\r\n  z.object({\r\n    deletedRooms: z.array(z.string()),\r\n  }),\r\n  z.object({\r\n    renamedRooms: z.array(\r\n      z.object({\r\n        from: z.string(),\r\n        to: z.string(),\r\n      })\r\n    ),\r\n  }),\r\n]);\r\n\r\nconst resocketMigrationsWithoutStepsSchema = z.object({\r\n  id: z.string(),\r\n  renamedRooms: z\r\n    .array(\r\n      z.object({\r\n        from: z.string(),\r\n        to: z.string(),\r\n      })\r\n    )\r\n    .optional(),\r\n  deletedRooms: z.array(z.string()).optional(),\r\n  newRooms: z.array(z.string()).optional(),\r\n});\r\n\r\nconst resocketMigrationsWithStepsSchema = z.object({\r\n  id: z.string(),\r\n  steps: z.array(resocketMigrationStepSchema),\r\n});\r\n\r\nconst resocketMigrationsSchema = z.union([\r\n  resocketMigrationsWithoutStepsSchema,\r\n  resocketMigrationsWithStepsSchema,\r\n]);\r\n\r\nexport const resocketConfigSchema = z.object({\r\n  name: z.string(),\r\n  main: z.string(),\r\n  port: z.number().optional().default(8000),\r\n  rooms: z.union([z.string(), z.array(z.string())]),\r\n  compatibility_date: z.string().optional(),\r\n  compatibility_flags: z.array(z.string()).optional(),\r\n  migrations: z.union([z.array(resocketMigrationsSchema), z.undefined()]),\r\n  migrationMode: migrationModeSchema.optional(),\r\n  envFiles: z.array(z.string()).optional(),\r\n  envs: z.record(z.string()).optional(),\r\n  domain: z.string().optional(),\r\n  environment: z.string().optional(),\r\n});\r\n\r\nexport const userConfigSchema = z.object({\r\n  version: z.literal(\"0\"),\r\n  username: z.string(),\r\n  accessToken: z.string(),\r\n});\r\n\r\nconst debugComplexitySchema = z.union([\r\n  z.literal(\"simple\"),\r\n  z.literal(\"tricky\"),\r\n  z.literal(\"oh-shit\"),\r\n]);\r\n\r\nexport const errorContextSchema = z.object({\r\n  coreMessage: z.string(),\r\n  highlightAffected: z\r\n    .object({\r\n      title: z.string(),\r\n      value: z.any(),\r\n    })\r\n    .optional(),\r\n  complexity: debugComplexitySchema.optional(),\r\n  humanMessage: z.string().optional(),\r\n  docs: z.string().optional(),\r\n  proTip: z.string().optional(),\r\n  stackTrace: z.string().optional(),\r\n});\r\n\r\nexport const apiErrorContextSchema = errorContextSchema.extend({\r\n  name: z.union([\r\n    //this is caused by user\r\n    z.literal(\"ResocketValidationError\"),\r\n\r\n    //this is more of internal server error types error\r\n    z.literal(\"ResocketServerError\"),\r\n\r\n    z.literal(\"InternalServerError\"),\r\n  ]),\r\n});\r\n\r\nexport const apiResponseBaseSchema = z.union([\r\n  z.object({\r\n    success: z.literal(true),\r\n    data: z.any(),\r\n  }),\r\n  z.object({\r\n    success: z.literal(false),\r\n    error: apiErrorContextSchema,\r\n  }),\r\n]);\r\n", "var util;\n(function (util) {\n    util.assertEqual = (val) => val;\n    function assertIs(_arg) { }\n    util.assertIs = assertIs;\n    function assertNever(_x) {\n        throw new Error();\n    }\n    util.assertNever = assertNever;\n    util.arrayToEnum = (items) => {\n        const obj = {};\n        for (const item of items) {\n            obj[item] = item;\n        }\n        return obj;\n    };\n    util.getValidEnumValues = (obj) => {\n        const validKeys = util.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== \"number\");\n        const filtered = {};\n        for (const k of validKeys) {\n            filtered[k] = obj[k];\n        }\n        return util.objectValues(filtered);\n    };\n    util.objectValues = (obj) => {\n        return util.objectKeys(obj).map(function (e) {\n            return obj[e];\n        });\n    };\n    util.objectKeys = typeof Object.keys === \"function\" // eslint-disable-line ban/ban\n        ? (obj) => Object.keys(obj) // eslint-disable-line ban/ban\n        : (object) => {\n            const keys = [];\n            for (const key in object) {\n                if (Object.prototype.hasOwnProperty.call(object, key)) {\n                    keys.push(key);\n                }\n            }\n            return keys;\n        };\n    util.find = (arr, checker) => {\n        for (const item of arr) {\n            if (checker(item))\n                return item;\n        }\n        return undefined;\n    };\n    util.isInteger = typeof Number.isInteger === \"function\"\n        ? (val) => Number.isInteger(val) // eslint-disable-line ban/ban\n        : (val) => typeof val === \"number\" && isFinite(val) && Math.floor(val) === val;\n    function joinValues(array, separator = \" | \") {\n        return array\n            .map((val) => (typeof val === \"string\" ? `'${val}'` : val))\n            .join(separator);\n    }\n    util.joinValues = joinValues;\n    util.jsonStringifyReplacer = (_, value) => {\n        if (typeof value === \"bigint\") {\n            return value.toString();\n        }\n        return value;\n    };\n})(util || (util = {}));\nvar objectUtil;\n(function (objectUtil) {\n    objectUtil.mergeShapes = (first, second) => {\n        return {\n            ...first,\n            ...second, // second overwrites first\n        };\n    };\n})(objectUtil || (objectUtil = {}));\nconst ZodParsedType = util.arrayToEnum([\n    \"string\",\n    \"nan\",\n    \"number\",\n    \"integer\",\n    \"float\",\n    \"boolean\",\n    \"date\",\n    \"bigint\",\n    \"symbol\",\n    \"function\",\n    \"undefined\",\n    \"null\",\n    \"array\",\n    \"object\",\n    \"unknown\",\n    \"promise\",\n    \"void\",\n    \"never\",\n    \"map\",\n    \"set\",\n]);\nconst getParsedType = (data) => {\n    const t = typeof data;\n    switch (t) {\n        case \"undefined\":\n            return ZodParsedType.undefined;\n        case \"string\":\n            return ZodParsedType.string;\n        case \"number\":\n            return isNaN(data) ? ZodParsedType.nan : ZodParsedType.number;\n        case \"boolean\":\n            return ZodParsedType.boolean;\n        case \"function\":\n            return ZodParsedType.function;\n        case \"bigint\":\n            return ZodParsedType.bigint;\n        case \"symbol\":\n            return ZodParsedType.symbol;\n        case \"object\":\n            if (Array.isArray(data)) {\n                return ZodParsedType.array;\n            }\n            if (data === null) {\n                return ZodParsedType.null;\n            }\n            if (data.then &&\n                typeof data.then === \"function\" &&\n                data.catch &&\n                typeof data.catch === \"function\") {\n                return ZodParsedType.promise;\n            }\n            if (typeof Map !== \"undefined\" && data instanceof Map) {\n                return ZodParsedType.map;\n            }\n            if (typeof Set !== \"undefined\" && data instanceof Set) {\n                return ZodParsedType.set;\n            }\n            if (typeof Date !== \"undefined\" && data instanceof Date) {\n                return ZodParsedType.date;\n            }\n            return ZodParsedType.object;\n        default:\n            return ZodParsedType.unknown;\n    }\n};\n\nconst ZodIssueCode = util.arrayToEnum([\n    \"invalid_type\",\n    \"invalid_literal\",\n    \"custom\",\n    \"invalid_union\",\n    \"invalid_union_discriminator\",\n    \"invalid_enum_value\",\n    \"unrecognized_keys\",\n    \"invalid_arguments\",\n    \"invalid_return_type\",\n    \"invalid_date\",\n    \"invalid_string\",\n    \"too_small\",\n    \"too_big\",\n    \"invalid_intersection_types\",\n    \"not_multiple_of\",\n    \"not_finite\",\n]);\nconst quotelessJson = (obj) => {\n    const json = JSON.stringify(obj, null, 2);\n    return json.replace(/\"([^\"]+)\":/g, \"$1:\");\n};\nclass ZodError extends Error {\n    constructor(issues) {\n        super();\n        this.issues = [];\n        this.addIssue = (sub) => {\n            this.issues = [...this.issues, sub];\n        };\n        this.addIssues = (subs = []) => {\n            this.issues = [...this.issues, ...subs];\n        };\n        const actualProto = new.target.prototype;\n        if (Object.setPrototypeOf) {\n            // eslint-disable-next-line ban/ban\n            Object.setPrototypeOf(this, actualProto);\n        }\n        else {\n            this.__proto__ = actualProto;\n        }\n        this.name = \"ZodError\";\n        this.issues = issues;\n    }\n    get errors() {\n        return this.issues;\n    }\n    format(_mapper) {\n        const mapper = _mapper ||\n            function (issue) {\n                return issue.message;\n            };\n        const fieldErrors = { _errors: [] };\n        const processError = (error) => {\n            for (const issue of error.issues) {\n                if (issue.code === \"invalid_union\") {\n                    issue.unionErrors.map(processError);\n                }\n                else if (issue.code === \"invalid_return_type\") {\n                    processError(issue.returnTypeError);\n                }\n                else if (issue.code === \"invalid_arguments\") {\n                    processError(issue.argumentsError);\n                }\n                else if (issue.path.length === 0) {\n                    fieldErrors._errors.push(mapper(issue));\n                }\n                else {\n                    let curr = fieldErrors;\n                    let i = 0;\n                    while (i < issue.path.length) {\n                        const el = issue.path[i];\n                        const terminal = i === issue.path.length - 1;\n                        if (!terminal) {\n                            curr[el] = curr[el] || { _errors: [] };\n                            // if (typeof el === \"string\") {\n                            //   curr[el] = curr[el] || { _errors: [] };\n                            // } else if (typeof el === \"number\") {\n                            //   const errorArray: any = [];\n                            //   errorArray._errors = [];\n                            //   curr[el] = curr[el] || errorArray;\n                            // }\n                        }\n                        else {\n                            curr[el] = curr[el] || { _errors: [] };\n                            curr[el]._errors.push(mapper(issue));\n                        }\n                        curr = curr[el];\n                        i++;\n                    }\n                }\n            }\n        };\n        processError(this);\n        return fieldErrors;\n    }\n    static assert(value) {\n        if (!(value instanceof ZodError)) {\n            throw new Error(`Not a ZodError: ${value}`);\n        }\n    }\n    toString() {\n        return this.message;\n    }\n    get message() {\n        return JSON.stringify(this.issues, util.jsonStringifyReplacer, 2);\n    }\n    get isEmpty() {\n        return this.issues.length === 0;\n    }\n    flatten(mapper = (issue) => issue.message) {\n        const fieldErrors = {};\n        const formErrors = [];\n        for (const sub of this.issues) {\n            if (sub.path.length > 0) {\n                fieldErrors[sub.path[0]] = fieldErrors[sub.path[0]] || [];\n                fieldErrors[sub.path[0]].push(mapper(sub));\n            }\n            else {\n                formErrors.push(mapper(sub));\n            }\n        }\n        return { formErrors, fieldErrors };\n    }\n    get formErrors() {\n        return this.flatten();\n    }\n}\nZodError.create = (issues) => {\n    const error = new ZodError(issues);\n    return error;\n};\n\nconst errorMap = (issue, _ctx) => {\n    let message;\n    switch (issue.code) {\n        case ZodIssueCode.invalid_type:\n            if (issue.received === ZodParsedType.undefined) {\n                message = \"Required\";\n            }\n            else {\n                message = `Expected ${issue.expected}, received ${issue.received}`;\n            }\n            break;\n        case ZodIssueCode.invalid_literal:\n            message = `Invalid literal value, expected ${JSON.stringify(issue.expected, util.jsonStringifyReplacer)}`;\n            break;\n        case ZodIssueCode.unrecognized_keys:\n            message = `Unrecognized key(s) in object: ${util.joinValues(issue.keys, \", \")}`;\n            break;\n        case ZodIssueCode.invalid_union:\n            message = `Invalid input`;\n            break;\n        case ZodIssueCode.invalid_union_discriminator:\n            message = `Invalid discriminator value. Expected ${util.joinValues(issue.options)}`;\n            break;\n        case ZodIssueCode.invalid_enum_value:\n            message = `Invalid enum value. Expected ${util.joinValues(issue.options)}, received '${issue.received}'`;\n            break;\n        case ZodIssueCode.invalid_arguments:\n            message = `Invalid function arguments`;\n            break;\n        case ZodIssueCode.invalid_return_type:\n            message = `Invalid function return type`;\n            break;\n        case ZodIssueCode.invalid_date:\n            message = `Invalid date`;\n            break;\n        case ZodIssueCode.invalid_string:\n            if (typeof issue.validation === \"object\") {\n                if (\"includes\" in issue.validation) {\n                    message = `Invalid input: must include \"${issue.validation.includes}\"`;\n                    if (typeof issue.validation.position === \"number\") {\n                        message = `${message} at one or more positions greater than or equal to ${issue.validation.position}`;\n                    }\n                }\n                else if (\"startsWith\" in issue.validation) {\n                    message = `Invalid input: must start with \"${issue.validation.startsWith}\"`;\n                }\n                else if (\"endsWith\" in issue.validation) {\n                    message = `Invalid input: must end with \"${issue.validation.endsWith}\"`;\n                }\n                else {\n                    util.assertNever(issue.validation);\n                }\n            }\n            else if (issue.validation !== \"regex\") {\n                message = `Invalid ${issue.validation}`;\n            }\n            else {\n                message = \"Invalid\";\n            }\n            break;\n        case ZodIssueCode.too_small:\n            if (issue.type === \"array\")\n                message = `Array must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`;\n            else if (issue.type === \"string\")\n                message = `String must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`;\n            else if (issue.type === \"number\")\n                message = `Number must be ${issue.exact\n                    ? `exactly equal to `\n                    : issue.inclusive\n                        ? `greater than or equal to `\n                        : `greater than `}${issue.minimum}`;\n            else if (issue.type === \"date\")\n                message = `Date must be ${issue.exact\n                    ? `exactly equal to `\n                    : issue.inclusive\n                        ? `greater than or equal to `\n                        : `greater than `}${new Date(Number(issue.minimum))}`;\n            else\n                message = \"Invalid input\";\n            break;\n        case ZodIssueCode.too_big:\n            if (issue.type === \"array\")\n                message = `Array must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`;\n            else if (issue.type === \"string\")\n                message = `String must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`;\n            else if (issue.type === \"number\")\n                message = `Number must be ${issue.exact\n                    ? `exactly`\n                    : issue.inclusive\n                        ? `less than or equal to`\n                        : `less than`} ${issue.maximum}`;\n            else if (issue.type === \"bigint\")\n                message = `BigInt must be ${issue.exact\n                    ? `exactly`\n                    : issue.inclusive\n                        ? `less than or equal to`\n                        : `less than`} ${issue.maximum}`;\n            else if (issue.type === \"date\")\n                message = `Date must be ${issue.exact\n                    ? `exactly`\n                    : issue.inclusive\n                        ? `smaller than or equal to`\n                        : `smaller than`} ${new Date(Number(issue.maximum))}`;\n            else\n                message = \"Invalid input\";\n            break;\n        case ZodIssueCode.custom:\n            message = `Invalid input`;\n            break;\n        case ZodIssueCode.invalid_intersection_types:\n            message = `Intersection results could not be merged`;\n            break;\n        case ZodIssueCode.not_multiple_of:\n            message = `Number must be a multiple of ${issue.multipleOf}`;\n            break;\n        case ZodIssueCode.not_finite:\n            message = \"Number must be finite\";\n            break;\n        default:\n            message = _ctx.defaultError;\n            util.assertNever(issue);\n    }\n    return { message };\n};\n\nlet overrideErrorMap = errorMap;\nfunction setErrorMap(map) {\n    overrideErrorMap = map;\n}\nfunction getErrorMap() {\n    return overrideErrorMap;\n}\n\nconst makeIssue = (params) => {\n    const { data, path, errorMaps, issueData } = params;\n    const fullPath = [...path, ...(issueData.path || [])];\n    const fullIssue = {\n        ...issueData,\n        path: fullPath,\n    };\n    if (issueData.message !== undefined) {\n        return {\n            ...issueData,\n            path: fullPath,\n            message: issueData.message,\n        };\n    }\n    let errorMessage = \"\";\n    const maps = errorMaps\n        .filter((m) => !!m)\n        .slice()\n        .reverse();\n    for (const map of maps) {\n        errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message;\n    }\n    return {\n        ...issueData,\n        path: fullPath,\n        message: errorMessage,\n    };\n};\nconst EMPTY_PATH = [];\nfunction addIssueToContext(ctx, issueData) {\n    const overrideMap = getErrorMap();\n    const issue = makeIssue({\n        issueData: issueData,\n        data: ctx.data,\n        path: ctx.path,\n        errorMaps: [\n            ctx.common.contextualErrorMap,\n            ctx.schemaErrorMap,\n            overrideMap,\n            overrideMap === errorMap ? undefined : errorMap, // then global default map\n        ].filter((x) => !!x),\n    });\n    ctx.common.issues.push(issue);\n}\nclass ParseStatus {\n    constructor() {\n        this.value = \"valid\";\n    }\n    dirty() {\n        if (this.value === \"valid\")\n            this.value = \"dirty\";\n    }\n    abort() {\n        if (this.value !== \"aborted\")\n            this.value = \"aborted\";\n    }\n    static mergeArray(status, results) {\n        const arrayValue = [];\n        for (const s of results) {\n            if (s.status === \"aborted\")\n                return INVALID;\n            if (s.status === \"dirty\")\n                status.dirty();\n            arrayValue.push(s.value);\n        }\n        return { status: status.value, value: arrayValue };\n    }\n    static async mergeObjectAsync(status, pairs) {\n        const syncPairs = [];\n        for (const pair of pairs) {\n            const key = await pair.key;\n            const value = await pair.value;\n            syncPairs.push({\n                key,\n                value,\n            });\n        }\n        return ParseStatus.mergeObjectSync(status, syncPairs);\n    }\n    static mergeObjectSync(status, pairs) {\n        const finalObject = {};\n        for (const pair of pairs) {\n            const { key, value } = pair;\n            if (key.status === \"aborted\")\n                return INVALID;\n            if (value.status === \"aborted\")\n                return INVALID;\n            if (key.status === \"dirty\")\n                status.dirty();\n            if (value.status === \"dirty\")\n                status.dirty();\n            if (key.value !== \"__proto__\" &&\n                (typeof value.value !== \"undefined\" || pair.alwaysSet)) {\n                finalObject[key.value] = value.value;\n            }\n        }\n        return { status: status.value, value: finalObject };\n    }\n}\nconst INVALID = Object.freeze({\n    status: \"aborted\",\n});\nconst DIRTY = (value) => ({ status: \"dirty\", value });\nconst OK = (value) => ({ status: \"valid\", value });\nconst isAborted = (x) => x.status === \"aborted\";\nconst isDirty = (x) => x.status === \"dirty\";\nconst isValid = (x) => x.status === \"valid\";\nconst isAsync = (x) => typeof Promise !== \"undefined\" && x instanceof Promise;\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nfunction __classPrivateFieldGet(receiver, state, kind, f) {\r\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n    return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nfunction __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n    if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n    return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\ntypeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n    var e = new Error(message);\r\n    return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\n\nvar errorUtil;\n(function (errorUtil) {\n    errorUtil.errToObj = (message) => typeof message === \"string\" ? { message } : message || {};\n    errorUtil.toString = (message) => typeof message === \"string\" ? message : message === null || message === void 0 ? void 0 : message.message;\n})(errorUtil || (errorUtil = {}));\n\nvar _ZodEnum_cache, _ZodNativeEnum_cache;\nclass ParseInputLazyPath {\n    constructor(parent, value, path, key) {\n        this._cachedPath = [];\n        this.parent = parent;\n        this.data = value;\n        this._path = path;\n        this._key = key;\n    }\n    get path() {\n        if (!this._cachedPath.length) {\n            if (this._key instanceof Array) {\n                this._cachedPath.push(...this._path, ...this._key);\n            }\n            else {\n                this._cachedPath.push(...this._path, this._key);\n            }\n        }\n        return this._cachedPath;\n    }\n}\nconst handleResult = (ctx, result) => {\n    if (isValid(result)) {\n        return { success: true, data: result.value };\n    }\n    else {\n        if (!ctx.common.issues.length) {\n            throw new Error(\"Validation failed but no issues detected.\");\n        }\n        return {\n            success: false,\n            get error() {\n                if (this._error)\n                    return this._error;\n                const error = new ZodError(ctx.common.issues);\n                this._error = error;\n                return this._error;\n            },\n        };\n    }\n};\nfunction processCreateParams(params) {\n    if (!params)\n        return {};\n    const { errorMap, invalid_type_error, required_error, description } = params;\n    if (errorMap && (invalid_type_error || required_error)) {\n        throw new Error(`Can't use \"invalid_type_error\" or \"required_error\" in conjunction with custom error map.`);\n    }\n    if (errorMap)\n        return { errorMap: errorMap, description };\n    const customMap = (iss, ctx) => {\n        var _a, _b;\n        const { message } = params;\n        if (iss.code === \"invalid_enum_value\") {\n            return { message: message !== null && message !== void 0 ? message : ctx.defaultError };\n        }\n        if (typeof ctx.data === \"undefined\") {\n            return { message: (_a = message !== null && message !== void 0 ? message : required_error) !== null && _a !== void 0 ? _a : ctx.defaultError };\n        }\n        if (iss.code !== \"invalid_type\")\n            return { message: ctx.defaultError };\n        return { message: (_b = message !== null && message !== void 0 ? message : invalid_type_error) !== null && _b !== void 0 ? _b : ctx.defaultError };\n    };\n    return { errorMap: customMap, description };\n}\nclass ZodType {\n    constructor(def) {\n        /** Alias of safeParseAsync */\n        this.spa = this.safeParseAsync;\n        this._def = def;\n        this.parse = this.parse.bind(this);\n        this.safeParse = this.safeParse.bind(this);\n        this.parseAsync = this.parseAsync.bind(this);\n        this.safeParseAsync = this.safeParseAsync.bind(this);\n        this.spa = this.spa.bind(this);\n        this.refine = this.refine.bind(this);\n        this.refinement = this.refinement.bind(this);\n        this.superRefine = this.superRefine.bind(this);\n        this.optional = this.optional.bind(this);\n        this.nullable = this.nullable.bind(this);\n        this.nullish = this.nullish.bind(this);\n        this.array = this.array.bind(this);\n        this.promise = this.promise.bind(this);\n        this.or = this.or.bind(this);\n        this.and = this.and.bind(this);\n        this.transform = this.transform.bind(this);\n        this.brand = this.brand.bind(this);\n        this.default = this.default.bind(this);\n        this.catch = this.catch.bind(this);\n        this.describe = this.describe.bind(this);\n        this.pipe = this.pipe.bind(this);\n        this.readonly = this.readonly.bind(this);\n        this.isNullable = this.isNullable.bind(this);\n        this.isOptional = this.isOptional.bind(this);\n    }\n    get description() {\n        return this._def.description;\n    }\n    _getType(input) {\n        return getParsedType(input.data);\n    }\n    _getOrReturnCtx(input, ctx) {\n        return (ctx || {\n            common: input.parent.common,\n            data: input.data,\n            parsedType: getParsedType(input.data),\n            schemaErrorMap: this._def.errorMap,\n            path: input.path,\n            parent: input.parent,\n        });\n    }\n    _processInputParams(input) {\n        return {\n            status: new ParseStatus(),\n            ctx: {\n                common: input.parent.common,\n                data: input.data,\n                parsedType: getParsedType(input.data),\n                schemaErrorMap: this._def.errorMap,\n                path: input.path,\n                parent: input.parent,\n            },\n        };\n    }\n    _parseSync(input) {\n        const result = this._parse(input);\n        if (isAsync(result)) {\n            throw new Error(\"Synchronous parse encountered promise.\");\n        }\n        return result;\n    }\n    _parseAsync(input) {\n        const result = this._parse(input);\n        return Promise.resolve(result);\n    }\n    parse(data, params) {\n        const result = this.safeParse(data, params);\n        if (result.success)\n            return result.data;\n        throw result.error;\n    }\n    safeParse(data, params) {\n        var _a;\n        const ctx = {\n            common: {\n                issues: [],\n                async: (_a = params === null || params === void 0 ? void 0 : params.async) !== null && _a !== void 0 ? _a : false,\n                contextualErrorMap: params === null || params === void 0 ? void 0 : params.errorMap,\n            },\n            path: (params === null || params === void 0 ? void 0 : params.path) || [],\n            schemaErrorMap: this._def.errorMap,\n            parent: null,\n            data,\n            parsedType: getParsedType(data),\n        };\n        const result = this._parseSync({ data, path: ctx.path, parent: ctx });\n        return handleResult(ctx, result);\n    }\n    async parseAsync(data, params) {\n        const result = await this.safeParseAsync(data, params);\n        if (result.success)\n            return result.data;\n        throw result.error;\n    }\n    async safeParseAsync(data, params) {\n        const ctx = {\n            common: {\n                issues: [],\n                contextualErrorMap: params === null || params === void 0 ? void 0 : params.errorMap,\n                async: true,\n            },\n            path: (params === null || params === void 0 ? void 0 : params.path) || [],\n            schemaErrorMap: this._def.errorMap,\n            parent: null,\n            data,\n            parsedType: getParsedType(data),\n        };\n        const maybeAsyncResult = this._parse({ data, path: ctx.path, parent: ctx });\n        const result = await (isAsync(maybeAsyncResult)\n            ? maybeAsyncResult\n            : Promise.resolve(maybeAsyncResult));\n        return handleResult(ctx, result);\n    }\n    refine(check, message) {\n        const getIssueProperties = (val) => {\n            if (typeof message === \"string\" || typeof message === \"undefined\") {\n                return { message };\n            }\n            else if (typeof message === \"function\") {\n                return message(val);\n            }\n            else {\n                return message;\n            }\n        };\n        return this._refinement((val, ctx) => {\n            const result = check(val);\n            const setError = () => ctx.addIssue({\n                code: ZodIssueCode.custom,\n                ...getIssueProperties(val),\n            });\n            if (typeof Promise !== \"undefined\" && result instanceof Promise) {\n                return result.then((data) => {\n                    if (!data) {\n                        setError();\n                        return false;\n                    }\n                    else {\n                        return true;\n                    }\n                });\n            }\n            if (!result) {\n                setError();\n                return false;\n            }\n            else {\n                return true;\n            }\n        });\n    }\n    refinement(check, refinementData) {\n        return this._refinement((val, ctx) => {\n            if (!check(val)) {\n                ctx.addIssue(typeof refinementData === \"function\"\n                    ? refinementData(val, ctx)\n                    : refinementData);\n                return false;\n            }\n            else {\n                return true;\n            }\n        });\n    }\n    _refinement(refinement) {\n        return new ZodEffects({\n            schema: this,\n            typeName: ZodFirstPartyTypeKind.ZodEffects,\n            effect: { type: \"refinement\", refinement },\n        });\n    }\n    superRefine(refinement) {\n        return this._refinement(refinement);\n    }\n    optional() {\n        return ZodOptional.create(this, this._def);\n    }\n    nullable() {\n        return ZodNullable.create(this, this._def);\n    }\n    nullish() {\n        return this.nullable().optional();\n    }\n    array() {\n        return ZodArray.create(this, this._def);\n    }\n    promise() {\n        return ZodPromise.create(this, this._def);\n    }\n    or(option) {\n        return ZodUnion.create([this, option], this._def);\n    }\n    and(incoming) {\n        return ZodIntersection.create(this, incoming, this._def);\n    }\n    transform(transform) {\n        return new ZodEffects({\n            ...processCreateParams(this._def),\n            schema: this,\n            typeName: ZodFirstPartyTypeKind.ZodEffects,\n            effect: { type: \"transform\", transform },\n        });\n    }\n    default(def) {\n        const defaultValueFunc = typeof def === \"function\" ? def : () => def;\n        return new ZodDefault({\n            ...processCreateParams(this._def),\n            innerType: this,\n            defaultValue: defaultValueFunc,\n            typeName: ZodFirstPartyTypeKind.ZodDefault,\n        });\n    }\n    brand() {\n        return new ZodBranded({\n            typeName: ZodFirstPartyTypeKind.ZodBranded,\n            type: this,\n            ...processCreateParams(this._def),\n        });\n    }\n    catch(def) {\n        const catchValueFunc = typeof def === \"function\" ? def : () => def;\n        return new ZodCatch({\n            ...processCreateParams(this._def),\n            innerType: this,\n            catchValue: catchValueFunc,\n            typeName: ZodFirstPartyTypeKind.ZodCatch,\n        });\n    }\n    describe(description) {\n        const This = this.constructor;\n        return new This({\n            ...this._def,\n            description,\n        });\n    }\n    pipe(target) {\n        return ZodPipeline.create(this, target);\n    }\n    readonly() {\n        return ZodReadonly.create(this);\n    }\n    isOptional() {\n        return this.safeParse(undefined).success;\n    }\n    isNullable() {\n        return this.safeParse(null).success;\n    }\n}\nconst cuidRegex = /^c[^\\s-]{8,}$/i;\nconst cuid2Regex = /^[0-9a-z]+$/;\nconst ulidRegex = /^[0-9A-HJKMNP-TV-Z]{26}$/;\n// const uuidRegex =\n//   /^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i;\nconst uuidRegex = /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/i;\nconst nanoidRegex = /^[a-z0-9_-]{21}$/i;\nconst durationRegex = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n// from https://stackoverflow.com/a/46181/1550155\n// old version: too slow, didn't support unicode\n// const emailRegex = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i;\n//old email regex\n// const emailRegex = /^(([^<>()[\\].,;:\\s@\"]+(\\.[^<>()[\\].,;:\\s@\"]+)*)|(\".+\"))@((?!-)([^<>()[\\].,;:\\s@\"]+\\.)+[^<>()[\\].,;:\\s@\"]{1,})[^-<>()[\\].,;:\\s@\"]$/i;\n// eslint-disable-next-line\n// const emailRegex =\n//   /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\])|(\\[IPv6:(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))\\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\\.[A-Za-z]{2,})+))$/;\n// const emailRegex =\n//   /^[a-zA-Z0-9\\.\\!\\#\\$\\%\\&\\'\\*\\+\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~\\-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// const emailRegex =\n//   /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])$/i;\nconst emailRegex = /^(?!\\.)(?!.*\\.\\.)([A-Z0-9_'+\\-\\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\\-]*\\.)+[A-Z]{2,}$/i;\n// const emailRegex =\n//   /^[a-z0-9.!#$%&\u2019*+/=?^_`{|}~-]+@[a-z0-9-]+(?:\\.[a-z0-9\\-]+)*$/i;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emojiRegex = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nlet emojiRegex;\n// faster, simpler, safer\nconst ipv4Regex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nconst ipv6Regex = /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nconst base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;\n// simple\n// const dateRegexSource = `\\\\d{4}-\\\\d{2}-\\\\d{2}`;\n// no leap year validation\n// const dateRegexSource = `\\\\d{4}-((0[13578]|10|12)-31|(0[13-9]|1[0-2])-30|(0[1-9]|1[0-2])-(0[1-9]|1\\\\d|2\\\\d))`;\n// with leap year validation\nconst dateRegexSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nconst dateRegex = new RegExp(`^${dateRegexSource}$`);\nfunction timeRegexSource(args) {\n    // let regex = `\\\\d{2}:\\\\d{2}:\\\\d{2}`;\n    let regex = `([01]\\\\d|2[0-3]):[0-5]\\\\d:[0-5]\\\\d`;\n    if (args.precision) {\n        regex = `${regex}\\\\.\\\\d{${args.precision}}`;\n    }\n    else if (args.precision == null) {\n        regex = `${regex}(\\\\.\\\\d+)?`;\n    }\n    return regex;\n}\nfunction timeRegex(args) {\n    return new RegExp(`^${timeRegexSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nfunction datetimeRegex(args) {\n    let regex = `${dateRegexSource}T${timeRegexSource(args)}`;\n    const opts = [];\n    opts.push(args.local ? `Z?` : `Z`);\n    if (args.offset)\n        opts.push(`([+-]\\\\d{2}:?\\\\d{2})`);\n    regex = `${regex}(${opts.join(\"|\")})`;\n    return new RegExp(`^${regex}$`);\n}\nfunction isValidIP(ip, version) {\n    if ((version === \"v4\" || !version) && ipv4Regex.test(ip)) {\n        return true;\n    }\n    if ((version === \"v6\" || !version) && ipv6Regex.test(ip)) {\n        return true;\n    }\n    return false;\n}\nclass ZodString extends ZodType {\n    _parse(input) {\n        if (this._def.coerce) {\n            input.data = String(input.data);\n        }\n        const parsedType = this._getType(input);\n        if (parsedType !== ZodParsedType.string) {\n            const ctx = this._getOrReturnCtx(input);\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.string,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        const status = new ParseStatus();\n        let ctx = undefined;\n        for (const check of this._def.checks) {\n            if (check.kind === \"min\") {\n                if (input.data.length < check.value) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.too_small,\n                        minimum: check.value,\n                        type: \"string\",\n                        inclusive: true,\n                        exact: false,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"max\") {\n                if (input.data.length > check.value) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.too_big,\n                        maximum: check.value,\n                        type: \"string\",\n                        inclusive: true,\n                        exact: false,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"length\") {\n                const tooBig = input.data.length > check.value;\n                const tooSmall = input.data.length < check.value;\n                if (tooBig || tooSmall) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    if (tooBig) {\n                        addIssueToContext(ctx, {\n                            code: ZodIssueCode.too_big,\n                            maximum: check.value,\n                            type: \"string\",\n                            inclusive: true,\n                            exact: true,\n                            message: check.message,\n                        });\n                    }\n                    else if (tooSmall) {\n                        addIssueToContext(ctx, {\n                            code: ZodIssueCode.too_small,\n                            minimum: check.value,\n                            type: \"string\",\n                            inclusive: true,\n                            exact: true,\n                            message: check.message,\n                        });\n                    }\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"email\") {\n                if (!emailRegex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        validation: \"email\",\n                        code: ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"emoji\") {\n                if (!emojiRegex) {\n                    emojiRegex = new RegExp(_emojiRegex, \"u\");\n                }\n                if (!emojiRegex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        validation: \"emoji\",\n                        code: ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"uuid\") {\n                if (!uuidRegex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        validation: \"uuid\",\n                        code: ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"nanoid\") {\n                if (!nanoidRegex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        validation: \"nanoid\",\n                        code: ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"cuid\") {\n                if (!cuidRegex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        validation: \"cuid\",\n                        code: ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"cuid2\") {\n                if (!cuid2Regex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        validation: \"cuid2\",\n                        code: ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"ulid\") {\n                if (!ulidRegex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        validation: \"ulid\",\n                        code: ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"url\") {\n                try {\n                    new URL(input.data);\n                }\n                catch (_a) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        validation: \"url\",\n                        code: ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"regex\") {\n                check.regex.lastIndex = 0;\n                const testResult = check.regex.test(input.data);\n                if (!testResult) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        validation: \"regex\",\n                        code: ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"trim\") {\n                input.data = input.data.trim();\n            }\n            else if (check.kind === \"includes\") {\n                if (!input.data.includes(check.value, check.position)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.invalid_string,\n                        validation: { includes: check.value, position: check.position },\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"toLowerCase\") {\n                input.data = input.data.toLowerCase();\n            }\n            else if (check.kind === \"toUpperCase\") {\n                input.data = input.data.toUpperCase();\n            }\n            else if (check.kind === \"startsWith\") {\n                if (!input.data.startsWith(check.value)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.invalid_string,\n                        validation: { startsWith: check.value },\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"endsWith\") {\n                if (!input.data.endsWith(check.value)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.invalid_string,\n                        validation: { endsWith: check.value },\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"datetime\") {\n                const regex = datetimeRegex(check);\n                if (!regex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.invalid_string,\n                        validation: \"datetime\",\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"date\") {\n                const regex = dateRegex;\n                if (!regex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.invalid_string,\n                        validation: \"date\",\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"time\") {\n                const regex = timeRegex(check);\n                if (!regex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.invalid_string,\n                        validation: \"time\",\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"duration\") {\n                if (!durationRegex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        validation: \"duration\",\n                        code: ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"ip\") {\n                if (!isValidIP(input.data, check.version)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        validation: \"ip\",\n                        code: ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"base64\") {\n                if (!base64Regex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        validation: \"base64\",\n                        code: ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else {\n                util.assertNever(check);\n            }\n        }\n        return { status: status.value, value: input.data };\n    }\n    _regex(regex, validation, message) {\n        return this.refinement((data) => regex.test(data), {\n            validation,\n            code: ZodIssueCode.invalid_string,\n            ...errorUtil.errToObj(message),\n        });\n    }\n    _addCheck(check) {\n        return new ZodString({\n            ...this._def,\n            checks: [...this._def.checks, check],\n        });\n    }\n    email(message) {\n        return this._addCheck({ kind: \"email\", ...errorUtil.errToObj(message) });\n    }\n    url(message) {\n        return this._addCheck({ kind: \"url\", ...errorUtil.errToObj(message) });\n    }\n    emoji(message) {\n        return this._addCheck({ kind: \"emoji\", ...errorUtil.errToObj(message) });\n    }\n    uuid(message) {\n        return this._addCheck({ kind: \"uuid\", ...errorUtil.errToObj(message) });\n    }\n    nanoid(message) {\n        return this._addCheck({ kind: \"nanoid\", ...errorUtil.errToObj(message) });\n    }\n    cuid(message) {\n        return this._addCheck({ kind: \"cuid\", ...errorUtil.errToObj(message) });\n    }\n    cuid2(message) {\n        return this._addCheck({ kind: \"cuid2\", ...errorUtil.errToObj(message) });\n    }\n    ulid(message) {\n        return this._addCheck({ kind: \"ulid\", ...errorUtil.errToObj(message) });\n    }\n    base64(message) {\n        return this._addCheck({ kind: \"base64\", ...errorUtil.errToObj(message) });\n    }\n    ip(options) {\n        return this._addCheck({ kind: \"ip\", ...errorUtil.errToObj(options) });\n    }\n    datetime(options) {\n        var _a, _b;\n        if (typeof options === \"string\") {\n            return this._addCheck({\n                kind: \"datetime\",\n                precision: null,\n                offset: false,\n                local: false,\n                message: options,\n            });\n        }\n        return this._addCheck({\n            kind: \"datetime\",\n            precision: typeof (options === null || options === void 0 ? void 0 : options.precision) === \"undefined\" ? null : options === null || options === void 0 ? void 0 : options.precision,\n            offset: (_a = options === null || options === void 0 ? void 0 : options.offset) !== null && _a !== void 0 ? _a : false,\n            local: (_b = options === null || options === void 0 ? void 0 : options.local) !== null && _b !== void 0 ? _b : false,\n            ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message),\n        });\n    }\n    date(message) {\n        return this._addCheck({ kind: \"date\", message });\n    }\n    time(options) {\n        if (typeof options === \"string\") {\n            return this._addCheck({\n                kind: \"time\",\n                precision: null,\n                message: options,\n            });\n        }\n        return this._addCheck({\n            kind: \"time\",\n            precision: typeof (options === null || options === void 0 ? void 0 : options.precision) === \"undefined\" ? null : options === null || options === void 0 ? void 0 : options.precision,\n            ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message),\n        });\n    }\n    duration(message) {\n        return this._addCheck({ kind: \"duration\", ...errorUtil.errToObj(message) });\n    }\n    regex(regex, message) {\n        return this._addCheck({\n            kind: \"regex\",\n            regex: regex,\n            ...errorUtil.errToObj(message),\n        });\n    }\n    includes(value, options) {\n        return this._addCheck({\n            kind: \"includes\",\n            value: value,\n            position: options === null || options === void 0 ? void 0 : options.position,\n            ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message),\n        });\n    }\n    startsWith(value, message) {\n        return this._addCheck({\n            kind: \"startsWith\",\n            value: value,\n            ...errorUtil.errToObj(message),\n        });\n    }\n    endsWith(value, message) {\n        return this._addCheck({\n            kind: \"endsWith\",\n            value: value,\n            ...errorUtil.errToObj(message),\n        });\n    }\n    min(minLength, message) {\n        return this._addCheck({\n            kind: \"min\",\n            value: minLength,\n            ...errorUtil.errToObj(message),\n        });\n    }\n    max(maxLength, message) {\n        return this._addCheck({\n            kind: \"max\",\n            value: maxLength,\n            ...errorUtil.errToObj(message),\n        });\n    }\n    length(len, message) {\n        return this._addCheck({\n            kind: \"length\",\n            value: len,\n            ...errorUtil.errToObj(message),\n        });\n    }\n    /**\n     * @deprecated Use z.string().min(1) instead.\n     * @see {@link ZodString.min}\n     */\n    nonempty(message) {\n        return this.min(1, errorUtil.errToObj(message));\n    }\n    trim() {\n        return new ZodString({\n            ...this._def,\n            checks: [...this._def.checks, { kind: \"trim\" }],\n        });\n    }\n    toLowerCase() {\n        return new ZodString({\n            ...this._def,\n            checks: [...this._def.checks, { kind: \"toLowerCase\" }],\n        });\n    }\n    toUpperCase() {\n        return new ZodString({\n            ...this._def,\n            checks: [...this._def.checks, { kind: \"toUpperCase\" }],\n        });\n    }\n    get isDatetime() {\n        return !!this._def.checks.find((ch) => ch.kind === \"datetime\");\n    }\n    get isDate() {\n        return !!this._def.checks.find((ch) => ch.kind === \"date\");\n    }\n    get isTime() {\n        return !!this._def.checks.find((ch) => ch.kind === \"time\");\n    }\n    get isDuration() {\n        return !!this._def.checks.find((ch) => ch.kind === \"duration\");\n    }\n    get isEmail() {\n        return !!this._def.checks.find((ch) => ch.kind === \"email\");\n    }\n    get isURL() {\n        return !!this._def.checks.find((ch) => ch.kind === \"url\");\n    }\n    get isEmoji() {\n        return !!this._def.checks.find((ch) => ch.kind === \"emoji\");\n    }\n    get isUUID() {\n        return !!this._def.checks.find((ch) => ch.kind === \"uuid\");\n    }\n    get isNANOID() {\n        return !!this._def.checks.find((ch) => ch.kind === \"nanoid\");\n    }\n    get isCUID() {\n        return !!this._def.checks.find((ch) => ch.kind === \"cuid\");\n    }\n    get isCUID2() {\n        return !!this._def.checks.find((ch) => ch.kind === \"cuid2\");\n    }\n    get isULID() {\n        return !!this._def.checks.find((ch) => ch.kind === \"ulid\");\n    }\n    get isIP() {\n        return !!this._def.checks.find((ch) => ch.kind === \"ip\");\n    }\n    get isBase64() {\n        return !!this._def.checks.find((ch) => ch.kind === \"base64\");\n    }\n    get minLength() {\n        let min = null;\n        for (const ch of this._def.checks) {\n            if (ch.kind === \"min\") {\n                if (min === null || ch.value > min)\n                    min = ch.value;\n            }\n        }\n        return min;\n    }\n    get maxLength() {\n        let max = null;\n        for (const ch of this._def.checks) {\n            if (ch.kind === \"max\") {\n                if (max === null || ch.value < max)\n                    max = ch.value;\n            }\n        }\n        return max;\n    }\n}\nZodString.create = (params) => {\n    var _a;\n    return new ZodString({\n        checks: [],\n        typeName: ZodFirstPartyTypeKind.ZodString,\n        coerce: (_a = params === null || params === void 0 ? void 0 : params.coerce) !== null && _a !== void 0 ? _a : false,\n        ...processCreateParams(params),\n    });\n};\n// https://stackoverflow.com/questions/3966484/why-does-modulus-operator-return-fractional-number-in-javascript/31711034#31711034\nfunction floatSafeRemainder(val, step) {\n    const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n    const stepDecCount = (step.toString().split(\".\")[1] || \"\").length;\n    const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n    const valInt = parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n    const stepInt = parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n    return (valInt % stepInt) / Math.pow(10, decCount);\n}\nclass ZodNumber extends ZodType {\n    constructor() {\n        super(...arguments);\n        this.min = this.gte;\n        this.max = this.lte;\n        this.step = this.multipleOf;\n    }\n    _parse(input) {\n        if (this._def.coerce) {\n            input.data = Number(input.data);\n        }\n        const parsedType = this._getType(input);\n        if (parsedType !== ZodParsedType.number) {\n            const ctx = this._getOrReturnCtx(input);\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.number,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        let ctx = undefined;\n        const status = new ParseStatus();\n        for (const check of this._def.checks) {\n            if (check.kind === \"int\") {\n                if (!util.isInteger(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.invalid_type,\n                        expected: \"integer\",\n                        received: \"float\",\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"min\") {\n                const tooSmall = check.inclusive\n                    ? input.data < check.value\n                    : input.data <= check.value;\n                if (tooSmall) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.too_small,\n                        minimum: check.value,\n                        type: \"number\",\n                        inclusive: check.inclusive,\n                        exact: false,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"max\") {\n                const tooBig = check.inclusive\n                    ? input.data > check.value\n                    : input.data >= check.value;\n                if (tooBig) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.too_big,\n                        maximum: check.value,\n                        type: \"number\",\n                        inclusive: check.inclusive,\n                        exact: false,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"multipleOf\") {\n                if (floatSafeRemainder(input.data, check.value) !== 0) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.not_multiple_of,\n                        multipleOf: check.value,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"finite\") {\n                if (!Number.isFinite(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.not_finite,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else {\n                util.assertNever(check);\n            }\n        }\n        return { status: status.value, value: input.data };\n    }\n    gte(value, message) {\n        return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n    }\n    gt(value, message) {\n        return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n    }\n    lte(value, message) {\n        return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n    }\n    lt(value, message) {\n        return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n    }\n    setLimit(kind, value, inclusive, message) {\n        return new ZodNumber({\n            ...this._def,\n            checks: [\n                ...this._def.checks,\n                {\n                    kind,\n                    value,\n                    inclusive,\n                    message: errorUtil.toString(message),\n                },\n            ],\n        });\n    }\n    _addCheck(check) {\n        return new ZodNumber({\n            ...this._def,\n            checks: [...this._def.checks, check],\n        });\n    }\n    int(message) {\n        return this._addCheck({\n            kind: \"int\",\n            message: errorUtil.toString(message),\n        });\n    }\n    positive(message) {\n        return this._addCheck({\n            kind: \"min\",\n            value: 0,\n            inclusive: false,\n            message: errorUtil.toString(message),\n        });\n    }\n    negative(message) {\n        return this._addCheck({\n            kind: \"max\",\n            value: 0,\n            inclusive: false,\n            message: errorUtil.toString(message),\n        });\n    }\n    nonpositive(message) {\n        return this._addCheck({\n            kind: \"max\",\n            value: 0,\n            inclusive: true,\n            message: errorUtil.toString(message),\n        });\n    }\n    nonnegative(message) {\n        return this._addCheck({\n            kind: \"min\",\n            value: 0,\n            inclusive: true,\n            message: errorUtil.toString(message),\n        });\n    }\n    multipleOf(value, message) {\n        return this._addCheck({\n            kind: \"multipleOf\",\n            value: value,\n            message: errorUtil.toString(message),\n        });\n    }\n    finite(message) {\n        return this._addCheck({\n            kind: \"finite\",\n            message: errorUtil.toString(message),\n        });\n    }\n    safe(message) {\n        return this._addCheck({\n            kind: \"min\",\n            inclusive: true,\n            value: Number.MIN_SAFE_INTEGER,\n            message: errorUtil.toString(message),\n        })._addCheck({\n            kind: \"max\",\n            inclusive: true,\n            value: Number.MAX_SAFE_INTEGER,\n            message: errorUtil.toString(message),\n        });\n    }\n    get minValue() {\n        let min = null;\n        for (const ch of this._def.checks) {\n            if (ch.kind === \"min\") {\n                if (min === null || ch.value > min)\n                    min = ch.value;\n            }\n        }\n        return min;\n    }\n    get maxValue() {\n        let max = null;\n        for (const ch of this._def.checks) {\n            if (ch.kind === \"max\") {\n                if (max === null || ch.value < max)\n                    max = ch.value;\n            }\n        }\n        return max;\n    }\n    get isInt() {\n        return !!this._def.checks.find((ch) => ch.kind === \"int\" ||\n            (ch.kind === \"multipleOf\" && util.isInteger(ch.value)));\n    }\n    get isFinite() {\n        let max = null, min = null;\n        for (const ch of this._def.checks) {\n            if (ch.kind === \"finite\" ||\n                ch.kind === \"int\" ||\n                ch.kind === \"multipleOf\") {\n                return true;\n            }\n            else if (ch.kind === \"min\") {\n                if (min === null || ch.value > min)\n                    min = ch.value;\n            }\n            else if (ch.kind === \"max\") {\n                if (max === null || ch.value < max)\n                    max = ch.value;\n            }\n        }\n        return Number.isFinite(min) && Number.isFinite(max);\n    }\n}\nZodNumber.create = (params) => {\n    return new ZodNumber({\n        checks: [],\n        typeName: ZodFirstPartyTypeKind.ZodNumber,\n        coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false,\n        ...processCreateParams(params),\n    });\n};\nclass ZodBigInt extends ZodType {\n    constructor() {\n        super(...arguments);\n        this.min = this.gte;\n        this.max = this.lte;\n    }\n    _parse(input) {\n        if (this._def.coerce) {\n            input.data = BigInt(input.data);\n        }\n        const parsedType = this._getType(input);\n        if (parsedType !== ZodParsedType.bigint) {\n            const ctx = this._getOrReturnCtx(input);\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.bigint,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        let ctx = undefined;\n        const status = new ParseStatus();\n        for (const check of this._def.checks) {\n            if (check.kind === \"min\") {\n                const tooSmall = check.inclusive\n                    ? input.data < check.value\n                    : input.data <= check.value;\n                if (tooSmall) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.too_small,\n                        type: \"bigint\",\n                        minimum: check.value,\n                        inclusive: check.inclusive,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"max\") {\n                const tooBig = check.inclusive\n                    ? input.data > check.value\n                    : input.data >= check.value;\n                if (tooBig) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.too_big,\n                        type: \"bigint\",\n                        maximum: check.value,\n                        inclusive: check.inclusive,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"multipleOf\") {\n                if (input.data % check.value !== BigInt(0)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.not_multiple_of,\n                        multipleOf: check.value,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else {\n                util.assertNever(check);\n            }\n        }\n        return { status: status.value, value: input.data };\n    }\n    gte(value, message) {\n        return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n    }\n    gt(value, message) {\n        return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n    }\n    lte(value, message) {\n        return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n    }\n    lt(value, message) {\n        return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n    }\n    setLimit(kind, value, inclusive, message) {\n        return new ZodBigInt({\n            ...this._def,\n            checks: [\n                ...this._def.checks,\n                {\n                    kind,\n                    value,\n                    inclusive,\n                    message: errorUtil.toString(message),\n                },\n            ],\n        });\n    }\n    _addCheck(check) {\n        return new ZodBigInt({\n            ...this._def,\n            checks: [...this._def.checks, check],\n        });\n    }\n    positive(message) {\n        return this._addCheck({\n            kind: \"min\",\n            value: BigInt(0),\n            inclusive: false,\n            message: errorUtil.toString(message),\n        });\n    }\n    negative(message) {\n        return this._addCheck({\n            kind: \"max\",\n            value: BigInt(0),\n            inclusive: false,\n            message: errorUtil.toString(message),\n        });\n    }\n    nonpositive(message) {\n        return this._addCheck({\n            kind: \"max\",\n            value: BigInt(0),\n            inclusive: true,\n            message: errorUtil.toString(message),\n        });\n    }\n    nonnegative(message) {\n        return this._addCheck({\n            kind: \"min\",\n            value: BigInt(0),\n            inclusive: true,\n            message: errorUtil.toString(message),\n        });\n    }\n    multipleOf(value, message) {\n        return this._addCheck({\n            kind: \"multipleOf\",\n            value,\n            message: errorUtil.toString(message),\n        });\n    }\n    get minValue() {\n        let min = null;\n        for (const ch of this._def.checks) {\n            if (ch.kind === \"min\") {\n                if (min === null || ch.value > min)\n                    min = ch.value;\n            }\n        }\n        return min;\n    }\n    get maxValue() {\n        let max = null;\n        for (const ch of this._def.checks) {\n            if (ch.kind === \"max\") {\n                if (max === null || ch.value < max)\n                    max = ch.value;\n            }\n        }\n        return max;\n    }\n}\nZodBigInt.create = (params) => {\n    var _a;\n    return new ZodBigInt({\n        checks: [],\n        typeName: ZodFirstPartyTypeKind.ZodBigInt,\n        coerce: (_a = params === null || params === void 0 ? void 0 : params.coerce) !== null && _a !== void 0 ? _a : false,\n        ...processCreateParams(params),\n    });\n};\nclass ZodBoolean extends ZodType {\n    _parse(input) {\n        if (this._def.coerce) {\n            input.data = Boolean(input.data);\n        }\n        const parsedType = this._getType(input);\n        if (parsedType !== ZodParsedType.boolean) {\n            const ctx = this._getOrReturnCtx(input);\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.boolean,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        return OK(input.data);\n    }\n}\nZodBoolean.create = (params) => {\n    return new ZodBoolean({\n        typeName: ZodFirstPartyTypeKind.ZodBoolean,\n        coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false,\n        ...processCreateParams(params),\n    });\n};\nclass ZodDate extends ZodType {\n    _parse(input) {\n        if (this._def.coerce) {\n            input.data = new Date(input.data);\n        }\n        const parsedType = this._getType(input);\n        if (parsedType !== ZodParsedType.date) {\n            const ctx = this._getOrReturnCtx(input);\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.date,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        if (isNaN(input.data.getTime())) {\n            const ctx = this._getOrReturnCtx(input);\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_date,\n            });\n            return INVALID;\n        }\n        const status = new ParseStatus();\n        let ctx = undefined;\n        for (const check of this._def.checks) {\n            if (check.kind === \"min\") {\n                if (input.data.getTime() < check.value) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.too_small,\n                        message: check.message,\n                        inclusive: true,\n                        exact: false,\n                        minimum: check.value,\n                        type: \"date\",\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"max\") {\n                if (input.data.getTime() > check.value) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.too_big,\n                        message: check.message,\n                        inclusive: true,\n                        exact: false,\n                        maximum: check.value,\n                        type: \"date\",\n                    });\n                    status.dirty();\n                }\n            }\n            else {\n                util.assertNever(check);\n            }\n        }\n        return {\n            status: status.value,\n            value: new Date(input.data.getTime()),\n        };\n    }\n    _addCheck(check) {\n        return new ZodDate({\n            ...this._def,\n            checks: [...this._def.checks, check],\n        });\n    }\n    min(minDate, message) {\n        return this._addCheck({\n            kind: \"min\",\n            value: minDate.getTime(),\n            message: errorUtil.toString(message),\n        });\n    }\n    max(maxDate, message) {\n        return this._addCheck({\n            kind: \"max\",\n            value: maxDate.getTime(),\n            message: errorUtil.toString(message),\n        });\n    }\n    get minDate() {\n        let min = null;\n        for (const ch of this._def.checks) {\n            if (ch.kind === \"min\") {\n                if (min === null || ch.value > min)\n                    min = ch.value;\n            }\n        }\n        return min != null ? new Date(min) : null;\n    }\n    get maxDate() {\n        let max = null;\n        for (const ch of this._def.checks) {\n            if (ch.kind === \"max\") {\n                if (max === null || ch.value < max)\n                    max = ch.value;\n            }\n        }\n        return max != null ? new Date(max) : null;\n    }\n}\nZodDate.create = (params) => {\n    return new ZodDate({\n        checks: [],\n        coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false,\n        typeName: ZodFirstPartyTypeKind.ZodDate,\n        ...processCreateParams(params),\n    });\n};\nclass ZodSymbol extends ZodType {\n    _parse(input) {\n        const parsedType = this._getType(input);\n        if (parsedType !== ZodParsedType.symbol) {\n            const ctx = this._getOrReturnCtx(input);\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.symbol,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        return OK(input.data);\n    }\n}\nZodSymbol.create = (params) => {\n    return new ZodSymbol({\n        typeName: ZodFirstPartyTypeKind.ZodSymbol,\n        ...processCreateParams(params),\n    });\n};\nclass ZodUndefined extends ZodType {\n    _parse(input) {\n        const parsedType = this._getType(input);\n        if (parsedType !== ZodParsedType.undefined) {\n            const ctx = this._getOrReturnCtx(input);\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.undefined,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        return OK(input.data);\n    }\n}\nZodUndefined.create = (params) => {\n    return new ZodUndefined({\n        typeName: ZodFirstPartyTypeKind.ZodUndefined,\n        ...processCreateParams(params),\n    });\n};\nclass ZodNull extends ZodType {\n    _parse(input) {\n        const parsedType = this._getType(input);\n        if (parsedType !== ZodParsedType.null) {\n            const ctx = this._getOrReturnCtx(input);\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.null,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        return OK(input.data);\n    }\n}\nZodNull.create = (params) => {\n    return new ZodNull({\n        typeName: ZodFirstPartyTypeKind.ZodNull,\n        ...processCreateParams(params),\n    });\n};\nclass ZodAny extends ZodType {\n    constructor() {\n        super(...arguments);\n        // to prevent instances of other classes from extending ZodAny. this causes issues with catchall in ZodObject.\n        this._any = true;\n    }\n    _parse(input) {\n        return OK(input.data);\n    }\n}\nZodAny.create = (params) => {\n    return new ZodAny({\n        typeName: ZodFirstPartyTypeKind.ZodAny,\n        ...processCreateParams(params),\n    });\n};\nclass ZodUnknown extends ZodType {\n    constructor() {\n        super(...arguments);\n        // required\n        this._unknown = true;\n    }\n    _parse(input) {\n        return OK(input.data);\n    }\n}\nZodUnknown.create = (params) => {\n    return new ZodUnknown({\n        typeName: ZodFirstPartyTypeKind.ZodUnknown,\n        ...processCreateParams(params),\n    });\n};\nclass ZodNever extends ZodType {\n    _parse(input) {\n        const ctx = this._getOrReturnCtx(input);\n        addIssueToContext(ctx, {\n            code: ZodIssueCode.invalid_type,\n            expected: ZodParsedType.never,\n            received: ctx.parsedType,\n        });\n        return INVALID;\n    }\n}\nZodNever.create = (params) => {\n    return new ZodNever({\n        typeName: ZodFirstPartyTypeKind.ZodNever,\n        ...processCreateParams(params),\n    });\n};\nclass ZodVoid extends ZodType {\n    _parse(input) {\n        const parsedType = this._getType(input);\n        if (parsedType !== ZodParsedType.undefined) {\n            const ctx = this._getOrReturnCtx(input);\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.void,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        return OK(input.data);\n    }\n}\nZodVoid.create = (params) => {\n    return new ZodVoid({\n        typeName: ZodFirstPartyTypeKind.ZodVoid,\n        ...processCreateParams(params),\n    });\n};\nclass ZodArray extends ZodType {\n    _parse(input) {\n        const { ctx, status } = this._processInputParams(input);\n        const def = this._def;\n        if (ctx.parsedType !== ZodParsedType.array) {\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.array,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        if (def.exactLength !== null) {\n            const tooBig = ctx.data.length > def.exactLength.value;\n            const tooSmall = ctx.data.length < def.exactLength.value;\n            if (tooBig || tooSmall) {\n                addIssueToContext(ctx, {\n                    code: tooBig ? ZodIssueCode.too_big : ZodIssueCode.too_small,\n                    minimum: (tooSmall ? def.exactLength.value : undefined),\n                    maximum: (tooBig ? def.exactLength.value : undefined),\n                    type: \"array\",\n                    inclusive: true,\n                    exact: true,\n                    message: def.exactLength.message,\n                });\n                status.dirty();\n            }\n        }\n        if (def.minLength !== null) {\n            if (ctx.data.length < def.minLength.value) {\n                addIssueToContext(ctx, {\n                    code: ZodIssueCode.too_small,\n                    minimum: def.minLength.value,\n                    type: \"array\",\n                    inclusive: true,\n                    exact: false,\n                    message: def.minLength.message,\n                });\n                status.dirty();\n            }\n        }\n        if (def.maxLength !== null) {\n            if (ctx.data.length > def.maxLength.value) {\n                addIssueToContext(ctx, {\n                    code: ZodIssueCode.too_big,\n                    maximum: def.maxLength.value,\n                    type: \"array\",\n                    inclusive: true,\n                    exact: false,\n                    message: def.maxLength.message,\n                });\n                status.dirty();\n            }\n        }\n        if (ctx.common.async) {\n            return Promise.all([...ctx.data].map((item, i) => {\n                return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n            })).then((result) => {\n                return ParseStatus.mergeArray(status, result);\n            });\n        }\n        const result = [...ctx.data].map((item, i) => {\n            return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n        });\n        return ParseStatus.mergeArray(status, result);\n    }\n    get element() {\n        return this._def.type;\n    }\n    min(minLength, message) {\n        return new ZodArray({\n            ...this._def,\n            minLength: { value: minLength, message: errorUtil.toString(message) },\n        });\n    }\n    max(maxLength, message) {\n        return new ZodArray({\n            ...this._def,\n            maxLength: { value: maxLength, message: errorUtil.toString(message) },\n        });\n    }\n    length(len, message) {\n        return new ZodArray({\n            ...this._def,\n            exactLength: { value: len, message: errorUtil.toString(message) },\n        });\n    }\n    nonempty(message) {\n        return this.min(1, message);\n    }\n}\nZodArray.create = (schema, params) => {\n    return new ZodArray({\n        type: schema,\n        minLength: null,\n        maxLength: null,\n        exactLength: null,\n        typeName: ZodFirstPartyTypeKind.ZodArray,\n        ...processCreateParams(params),\n    });\n};\nfunction deepPartialify(schema) {\n    if (schema instanceof ZodObject) {\n        const newShape = {};\n        for (const key in schema.shape) {\n            const fieldSchema = schema.shape[key];\n            newShape[key] = ZodOptional.create(deepPartialify(fieldSchema));\n        }\n        return new ZodObject({\n            ...schema._def,\n            shape: () => newShape,\n        });\n    }\n    else if (schema instanceof ZodArray) {\n        return new ZodArray({\n            ...schema._def,\n            type: deepPartialify(schema.element),\n        });\n    }\n    else if (schema instanceof ZodOptional) {\n        return ZodOptional.create(deepPartialify(schema.unwrap()));\n    }\n    else if (schema instanceof ZodNullable) {\n        return ZodNullable.create(deepPartialify(schema.unwrap()));\n    }\n    else if (schema instanceof ZodTuple) {\n        return ZodTuple.create(schema.items.map((item) => deepPartialify(item)));\n    }\n    else {\n        return schema;\n    }\n}\nclass ZodObject extends ZodType {\n    constructor() {\n        super(...arguments);\n        this._cached = null;\n        /**\n         * @deprecated In most cases, this is no longer needed - unknown properties are now silently stripped.\n         * If you want to pass through unknown properties, use `.passthrough()` instead.\n         */\n        this.nonstrict = this.passthrough;\n        // extend<\n        //   Augmentation extends ZodRawShape,\n        //   NewOutput extends util.flatten<{\n        //     [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n        //       ? Augmentation[k][\"_output\"]\n        //       : k extends keyof Output\n        //       ? Output[k]\n        //       : never;\n        //   }>,\n        //   NewInput extends util.flatten<{\n        //     [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n        //       ? Augmentation[k][\"_input\"]\n        //       : k extends keyof Input\n        //       ? Input[k]\n        //       : never;\n        //   }>\n        // >(\n        //   augmentation: Augmentation\n        // ): ZodObject<\n        //   extendShape<T, Augmentation>,\n        //   UnknownKeys,\n        //   Catchall,\n        //   NewOutput,\n        //   NewInput\n        // > {\n        //   return new ZodObject({\n        //     ...this._def,\n        //     shape: () => ({\n        //       ...this._def.shape(),\n        //       ...augmentation,\n        //     }),\n        //   }) as any;\n        // }\n        /**\n         * @deprecated Use `.extend` instead\n         *  */\n        this.augment = this.extend;\n    }\n    _getCached() {\n        if (this._cached !== null)\n            return this._cached;\n        const shape = this._def.shape();\n        const keys = util.objectKeys(shape);\n        return (this._cached = { shape, keys });\n    }\n    _parse(input) {\n        const parsedType = this._getType(input);\n        if (parsedType !== ZodParsedType.object) {\n            const ctx = this._getOrReturnCtx(input);\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.object,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        const { status, ctx } = this._processInputParams(input);\n        const { shape, keys: shapeKeys } = this._getCached();\n        const extraKeys = [];\n        if (!(this._def.catchall instanceof ZodNever &&\n            this._def.unknownKeys === \"strip\")) {\n            for (const key in ctx.data) {\n                if (!shapeKeys.includes(key)) {\n                    extraKeys.push(key);\n                }\n            }\n        }\n        const pairs = [];\n        for (const key of shapeKeys) {\n            const keyValidator = shape[key];\n            const value = ctx.data[key];\n            pairs.push({\n                key: { status: \"valid\", value: key },\n                value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)),\n                alwaysSet: key in ctx.data,\n            });\n        }\n        if (this._def.catchall instanceof ZodNever) {\n            const unknownKeys = this._def.unknownKeys;\n            if (unknownKeys === \"passthrough\") {\n                for (const key of extraKeys) {\n                    pairs.push({\n                        key: { status: \"valid\", value: key },\n                        value: { status: \"valid\", value: ctx.data[key] },\n                    });\n                }\n            }\n            else if (unknownKeys === \"strict\") {\n                if (extraKeys.length > 0) {\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.unrecognized_keys,\n                        keys: extraKeys,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (unknownKeys === \"strip\") ;\n            else {\n                throw new Error(`Internal ZodObject error: invalid unknownKeys value.`);\n            }\n        }\n        else {\n            // run catchall validation\n            const catchall = this._def.catchall;\n            for (const key of extraKeys) {\n                const value = ctx.data[key];\n                pairs.push({\n                    key: { status: \"valid\", value: key },\n                    value: catchall._parse(new ParseInputLazyPath(ctx, value, ctx.path, key) //, ctx.child(key), value, getParsedType(value)\n                    ),\n                    alwaysSet: key in ctx.data,\n                });\n            }\n        }\n        if (ctx.common.async) {\n            return Promise.resolve()\n                .then(async () => {\n                const syncPairs = [];\n                for (const pair of pairs) {\n                    const key = await pair.key;\n                    const value = await pair.value;\n                    syncPairs.push({\n                        key,\n                        value,\n                        alwaysSet: pair.alwaysSet,\n                    });\n                }\n                return syncPairs;\n            })\n                .then((syncPairs) => {\n                return ParseStatus.mergeObjectSync(status, syncPairs);\n            });\n        }\n        else {\n            return ParseStatus.mergeObjectSync(status, pairs);\n        }\n    }\n    get shape() {\n        return this._def.shape();\n    }\n    strict(message) {\n        errorUtil.errToObj;\n        return new ZodObject({\n            ...this._def,\n            unknownKeys: \"strict\",\n            ...(message !== undefined\n                ? {\n                    errorMap: (issue, ctx) => {\n                        var _a, _b, _c, _d;\n                        const defaultError = (_c = (_b = (_a = this._def).errorMap) === null || _b === void 0 ? void 0 : _b.call(_a, issue, ctx).message) !== null && _c !== void 0 ? _c : ctx.defaultError;\n                        if (issue.code === \"unrecognized_keys\")\n                            return {\n                                message: (_d = errorUtil.errToObj(message).message) !== null && _d !== void 0 ? _d : defaultError,\n                            };\n                        return {\n                            message: defaultError,\n                        };\n                    },\n                }\n                : {}),\n        });\n    }\n    strip() {\n        return new ZodObject({\n            ...this._def,\n            unknownKeys: \"strip\",\n        });\n    }\n    passthrough() {\n        return new ZodObject({\n            ...this._def,\n            unknownKeys: \"passthrough\",\n        });\n    }\n    // const AugmentFactory =\n    //   <Def extends ZodObjectDef>(def: Def) =>\n    //   <Augmentation extends ZodRawShape>(\n    //     augmentation: Augmentation\n    //   ): ZodObject<\n    //     extendShape<ReturnType<Def[\"shape\"]>, Augmentation>,\n    //     Def[\"unknownKeys\"],\n    //     Def[\"catchall\"]\n    //   > => {\n    //     return new ZodObject({\n    //       ...def,\n    //       shape: () => ({\n    //         ...def.shape(),\n    //         ...augmentation,\n    //       }),\n    //     }) as any;\n    //   };\n    extend(augmentation) {\n        return new ZodObject({\n            ...this._def,\n            shape: () => ({\n                ...this._def.shape(),\n                ...augmentation,\n            }),\n        });\n    }\n    /**\n     * Prior to zod@1.0.12 there was a bug in the\n     * inferred type of merged objects. Please\n     * upgrade if you are experiencing issues.\n     */\n    merge(merging) {\n        const merged = new ZodObject({\n            unknownKeys: merging._def.unknownKeys,\n            catchall: merging._def.catchall,\n            shape: () => ({\n                ...this._def.shape(),\n                ...merging._def.shape(),\n            }),\n            typeName: ZodFirstPartyTypeKind.ZodObject,\n        });\n        return merged;\n    }\n    // merge<\n    //   Incoming extends AnyZodObject,\n    //   Augmentation extends Incoming[\"shape\"],\n    //   NewOutput extends {\n    //     [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n    //       ? Augmentation[k][\"_output\"]\n    //       : k extends keyof Output\n    //       ? Output[k]\n    //       : never;\n    //   },\n    //   NewInput extends {\n    //     [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n    //       ? Augmentation[k][\"_input\"]\n    //       : k extends keyof Input\n    //       ? Input[k]\n    //       : never;\n    //   }\n    // >(\n    //   merging: Incoming\n    // ): ZodObject<\n    //   extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n    //   Incoming[\"_def\"][\"unknownKeys\"],\n    //   Incoming[\"_def\"][\"catchall\"],\n    //   NewOutput,\n    //   NewInput\n    // > {\n    //   const merged: any = new ZodObject({\n    //     unknownKeys: merging._def.unknownKeys,\n    //     catchall: merging._def.catchall,\n    //     shape: () =>\n    //       objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n    //     typeName: ZodFirstPartyTypeKind.ZodObject,\n    //   }) as any;\n    //   return merged;\n    // }\n    setKey(key, schema) {\n        return this.augment({ [key]: schema });\n    }\n    // merge<Incoming extends AnyZodObject>(\n    //   merging: Incoming\n    // ): //ZodObject<T & Incoming[\"_shape\"], UnknownKeys, Catchall> = (merging) => {\n    // ZodObject<\n    //   extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n    //   Incoming[\"_def\"][\"unknownKeys\"],\n    //   Incoming[\"_def\"][\"catchall\"]\n    // > {\n    //   // const mergedShape = objectUtil.mergeShapes(\n    //   //   this._def.shape(),\n    //   //   merging._def.shape()\n    //   // );\n    //   const merged: any = new ZodObject({\n    //     unknownKeys: merging._def.unknownKeys,\n    //     catchall: merging._def.catchall,\n    //     shape: () =>\n    //       objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n    //     typeName: ZodFirstPartyTypeKind.ZodObject,\n    //   }) as any;\n    //   return merged;\n    // }\n    catchall(index) {\n        return new ZodObject({\n            ...this._def,\n            catchall: index,\n        });\n    }\n    pick(mask) {\n        const shape = {};\n        util.objectKeys(mask).forEach((key) => {\n            if (mask[key] && this.shape[key]) {\n                shape[key] = this.shape[key];\n            }\n        });\n        return new ZodObject({\n            ...this._def,\n            shape: () => shape,\n        });\n    }\n    omit(mask) {\n        const shape = {};\n        util.objectKeys(this.shape).forEach((key) => {\n            if (!mask[key]) {\n                shape[key] = this.shape[key];\n            }\n        });\n        return new ZodObject({\n            ...this._def,\n            shape: () => shape,\n        });\n    }\n    /**\n     * @deprecated\n     */\n    deepPartial() {\n        return deepPartialify(this);\n    }\n    partial(mask) {\n        const newShape = {};\n        util.objectKeys(this.shape).forEach((key) => {\n            const fieldSchema = this.shape[key];\n            if (mask && !mask[key]) {\n                newShape[key] = fieldSchema;\n            }\n            else {\n                newShape[key] = fieldSchema.optional();\n            }\n        });\n        return new ZodObject({\n            ...this._def,\n            shape: () => newShape,\n        });\n    }\n    required(mask) {\n        const newShape = {};\n        util.objectKeys(this.shape).forEach((key) => {\n            if (mask && !mask[key]) {\n                newShape[key] = this.shape[key];\n            }\n            else {\n                const fieldSchema = this.shape[key];\n                let newField = fieldSchema;\n                while (newField instanceof ZodOptional) {\n                    newField = newField._def.innerType;\n                }\n                newShape[key] = newField;\n            }\n        });\n        return new ZodObject({\n            ...this._def,\n            shape: () => newShape,\n        });\n    }\n    keyof() {\n        return createZodEnum(util.objectKeys(this.shape));\n    }\n}\nZodObject.create = (shape, params) => {\n    return new ZodObject({\n        shape: () => shape,\n        unknownKeys: \"strip\",\n        catchall: ZodNever.create(),\n        typeName: ZodFirstPartyTypeKind.ZodObject,\n        ...processCreateParams(params),\n    });\n};\nZodObject.strictCreate = (shape, params) => {\n    return new ZodObject({\n        shape: () => shape,\n        unknownKeys: \"strict\",\n        catchall: ZodNever.create(),\n        typeName: ZodFirstPartyTypeKind.ZodObject,\n        ...processCreateParams(params),\n    });\n};\nZodObject.lazycreate = (shape, params) => {\n    return new ZodObject({\n        shape,\n        unknownKeys: \"strip\",\n        catchall: ZodNever.create(),\n        typeName: ZodFirstPartyTypeKind.ZodObject,\n        ...processCreateParams(params),\n    });\n};\nclass ZodUnion extends ZodType {\n    _parse(input) {\n        const { ctx } = this._processInputParams(input);\n        const options = this._def.options;\n        function handleResults(results) {\n            // return first issue-free validation if it exists\n            for (const result of results) {\n                if (result.result.status === \"valid\") {\n                    return result.result;\n                }\n            }\n            for (const result of results) {\n                if (result.result.status === \"dirty\") {\n                    // add issues from dirty option\n                    ctx.common.issues.push(...result.ctx.common.issues);\n                    return result.result;\n                }\n            }\n            // return invalid\n            const unionErrors = results.map((result) => new ZodError(result.ctx.common.issues));\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_union,\n                unionErrors,\n            });\n            return INVALID;\n        }\n        if (ctx.common.async) {\n            return Promise.all(options.map(async (option) => {\n                const childCtx = {\n                    ...ctx,\n                    common: {\n                        ...ctx.common,\n                        issues: [],\n                    },\n                    parent: null,\n                };\n                return {\n                    result: await option._parseAsync({\n                        data: ctx.data,\n                        path: ctx.path,\n                        parent: childCtx,\n                    }),\n                    ctx: childCtx,\n                };\n            })).then(handleResults);\n        }\n        else {\n            let dirty = undefined;\n            const issues = [];\n            for (const option of options) {\n                const childCtx = {\n                    ...ctx,\n                    common: {\n                        ...ctx.common,\n                        issues: [],\n                    },\n                    parent: null,\n                };\n                const result = option._parseSync({\n                    data: ctx.data,\n                    path: ctx.path,\n                    parent: childCtx,\n                });\n                if (result.status === \"valid\") {\n                    return result;\n                }\n                else if (result.status === \"dirty\" && !dirty) {\n                    dirty = { result, ctx: childCtx };\n                }\n                if (childCtx.common.issues.length) {\n                    issues.push(childCtx.common.issues);\n                }\n            }\n            if (dirty) {\n                ctx.common.issues.push(...dirty.ctx.common.issues);\n                return dirty.result;\n            }\n            const unionErrors = issues.map((issues) => new ZodError(issues));\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_union,\n                unionErrors,\n            });\n            return INVALID;\n        }\n    }\n    get options() {\n        return this._def.options;\n    }\n}\nZodUnion.create = (types, params) => {\n    return new ZodUnion({\n        options: types,\n        typeName: ZodFirstPartyTypeKind.ZodUnion,\n        ...processCreateParams(params),\n    });\n};\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\n//////////                                 //////////\n//////////      ZodDiscriminatedUnion      //////////\n//////////                                 //////////\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\nconst getDiscriminator = (type) => {\n    if (type instanceof ZodLazy) {\n        return getDiscriminator(type.schema);\n    }\n    else if (type instanceof ZodEffects) {\n        return getDiscriminator(type.innerType());\n    }\n    else if (type instanceof ZodLiteral) {\n        return [type.value];\n    }\n    else if (type instanceof ZodEnum) {\n        return type.options;\n    }\n    else if (type instanceof ZodNativeEnum) {\n        // eslint-disable-next-line ban/ban\n        return util.objectValues(type.enum);\n    }\n    else if (type instanceof ZodDefault) {\n        return getDiscriminator(type._def.innerType);\n    }\n    else if (type instanceof ZodUndefined) {\n        return [undefined];\n    }\n    else if (type instanceof ZodNull) {\n        return [null];\n    }\n    else if (type instanceof ZodOptional) {\n        return [undefined, ...getDiscriminator(type.unwrap())];\n    }\n    else if (type instanceof ZodNullable) {\n        return [null, ...getDiscriminator(type.unwrap())];\n    }\n    else if (type instanceof ZodBranded) {\n        return getDiscriminator(type.unwrap());\n    }\n    else if (type instanceof ZodReadonly) {\n        return getDiscriminator(type.unwrap());\n    }\n    else if (type instanceof ZodCatch) {\n        return getDiscriminator(type._def.innerType);\n    }\n    else {\n        return [];\n    }\n};\nclass ZodDiscriminatedUnion extends ZodType {\n    _parse(input) {\n        const { ctx } = this._processInputParams(input);\n        if (ctx.parsedType !== ZodParsedType.object) {\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.object,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        const discriminator = this.discriminator;\n        const discriminatorValue = ctx.data[discriminator];\n        const option = this.optionsMap.get(discriminatorValue);\n        if (!option) {\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_union_discriminator,\n                options: Array.from(this.optionsMap.keys()),\n                path: [discriminator],\n            });\n            return INVALID;\n        }\n        if (ctx.common.async) {\n            return option._parseAsync({\n                data: ctx.data,\n                path: ctx.path,\n                parent: ctx,\n            });\n        }\n        else {\n            return option._parseSync({\n                data: ctx.data,\n                path: ctx.path,\n                parent: ctx,\n            });\n        }\n    }\n    get discriminator() {\n        return this._def.discriminator;\n    }\n    get options() {\n        return this._def.options;\n    }\n    get optionsMap() {\n        return this._def.optionsMap;\n    }\n    /**\n     * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor.\n     * However, it only allows a union of objects, all of which need to share a discriminator property. This property must\n     * have a different value for each object in the union.\n     * @param discriminator the name of the discriminator property\n     * @param types an array of object schemas\n     * @param params\n     */\n    static create(discriminator, options, params) {\n        // Get all the valid discriminator values\n        const optionsMap = new Map();\n        // try {\n        for (const type of options) {\n            const discriminatorValues = getDiscriminator(type.shape[discriminator]);\n            if (!discriminatorValues.length) {\n                throw new Error(`A discriminator value for key \\`${discriminator}\\` could not be extracted from all schema options`);\n            }\n            for (const value of discriminatorValues) {\n                if (optionsMap.has(value)) {\n                    throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`);\n                }\n                optionsMap.set(value, type);\n            }\n        }\n        return new ZodDiscriminatedUnion({\n            typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion,\n            discriminator,\n            options,\n            optionsMap,\n            ...processCreateParams(params),\n        });\n    }\n}\nfunction mergeValues(a, b) {\n    const aType = getParsedType(a);\n    const bType = getParsedType(b);\n    if (a === b) {\n        return { valid: true, data: a };\n    }\n    else if (aType === ZodParsedType.object && bType === ZodParsedType.object) {\n        const bKeys = util.objectKeys(b);\n        const sharedKeys = util\n            .objectKeys(a)\n            .filter((key) => bKeys.indexOf(key) !== -1);\n        const newObj = { ...a, ...b };\n        for (const key of sharedKeys) {\n            const sharedValue = mergeValues(a[key], b[key]);\n            if (!sharedValue.valid) {\n                return { valid: false };\n            }\n            newObj[key] = sharedValue.data;\n        }\n        return { valid: true, data: newObj };\n    }\n    else if (aType === ZodParsedType.array && bType === ZodParsedType.array) {\n        if (a.length !== b.length) {\n            return { valid: false };\n        }\n        const newArray = [];\n        for (let index = 0; index < a.length; index++) {\n            const itemA = a[index];\n            const itemB = b[index];\n            const sharedValue = mergeValues(itemA, itemB);\n            if (!sharedValue.valid) {\n                return { valid: false };\n            }\n            newArray.push(sharedValue.data);\n        }\n        return { valid: true, data: newArray };\n    }\n    else if (aType === ZodParsedType.date &&\n        bType === ZodParsedType.date &&\n        +a === +b) {\n        return { valid: true, data: a };\n    }\n    else {\n        return { valid: false };\n    }\n}\nclass ZodIntersection extends ZodType {\n    _parse(input) {\n        const { status, ctx } = this._processInputParams(input);\n        const handleParsed = (parsedLeft, parsedRight) => {\n            if (isAborted(parsedLeft) || isAborted(parsedRight)) {\n                return INVALID;\n            }\n            const merged = mergeValues(parsedLeft.value, parsedRight.value);\n            if (!merged.valid) {\n                addIssueToContext(ctx, {\n                    code: ZodIssueCode.invalid_intersection_types,\n                });\n                return INVALID;\n            }\n            if (isDirty(parsedLeft) || isDirty(parsedRight)) {\n                status.dirty();\n            }\n            return { status: status.value, value: merged.data };\n        };\n        if (ctx.common.async) {\n            return Promise.all([\n                this._def.left._parseAsync({\n                    data: ctx.data,\n                    path: ctx.path,\n                    parent: ctx,\n                }),\n                this._def.right._parseAsync({\n                    data: ctx.data,\n                    path: ctx.path,\n                    parent: ctx,\n                }),\n            ]).then(([left, right]) => handleParsed(left, right));\n        }\n        else {\n            return handleParsed(this._def.left._parseSync({\n                data: ctx.data,\n                path: ctx.path,\n                parent: ctx,\n            }), this._def.right._parseSync({\n                data: ctx.data,\n                path: ctx.path,\n                parent: ctx,\n            }));\n        }\n    }\n}\nZodIntersection.create = (left, right, params) => {\n    return new ZodIntersection({\n        left: left,\n        right: right,\n        typeName: ZodFirstPartyTypeKind.ZodIntersection,\n        ...processCreateParams(params),\n    });\n};\nclass ZodTuple extends ZodType {\n    _parse(input) {\n        const { status, ctx } = this._processInputParams(input);\n        if (ctx.parsedType !== ZodParsedType.array) {\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.array,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        if (ctx.data.length < this._def.items.length) {\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.too_small,\n                minimum: this._def.items.length,\n                inclusive: true,\n                exact: false,\n                type: \"array\",\n            });\n            return INVALID;\n        }\n        const rest = this._def.rest;\n        if (!rest && ctx.data.length > this._def.items.length) {\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.too_big,\n                maximum: this._def.items.length,\n                inclusive: true,\n                exact: false,\n                type: \"array\",\n            });\n            status.dirty();\n        }\n        const items = [...ctx.data]\n            .map((item, itemIndex) => {\n            const schema = this._def.items[itemIndex] || this._def.rest;\n            if (!schema)\n                return null;\n            return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex));\n        })\n            .filter((x) => !!x); // filter nulls\n        if (ctx.common.async) {\n            return Promise.all(items).then((results) => {\n                return ParseStatus.mergeArray(status, results);\n            });\n        }\n        else {\n            return ParseStatus.mergeArray(status, items);\n        }\n    }\n    get items() {\n        return this._def.items;\n    }\n    rest(rest) {\n        return new ZodTuple({\n            ...this._def,\n            rest,\n        });\n    }\n}\nZodTuple.create = (schemas, params) => {\n    if (!Array.isArray(schemas)) {\n        throw new Error(\"You must pass an array of schemas to z.tuple([ ... ])\");\n    }\n    return new ZodTuple({\n        items: schemas,\n        typeName: ZodFirstPartyTypeKind.ZodTuple,\n        rest: null,\n        ...processCreateParams(params),\n    });\n};\nclass ZodRecord extends ZodType {\n    get keySchema() {\n        return this._def.keyType;\n    }\n    get valueSchema() {\n        return this._def.valueType;\n    }\n    _parse(input) {\n        const { status, ctx } = this._processInputParams(input);\n        if (ctx.parsedType !== ZodParsedType.object) {\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.object,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        const pairs = [];\n        const keyType = this._def.keyType;\n        const valueType = this._def.valueType;\n        for (const key in ctx.data) {\n            pairs.push({\n                key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)),\n                value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)),\n                alwaysSet: key in ctx.data,\n            });\n        }\n        if (ctx.common.async) {\n            return ParseStatus.mergeObjectAsync(status, pairs);\n        }\n        else {\n            return ParseStatus.mergeObjectSync(status, pairs);\n        }\n    }\n    get element() {\n        return this._def.valueType;\n    }\n    static create(first, second, third) {\n        if (second instanceof ZodType) {\n            return new ZodRecord({\n                keyType: first,\n                valueType: second,\n                typeName: ZodFirstPartyTypeKind.ZodRecord,\n                ...processCreateParams(third),\n            });\n        }\n        return new ZodRecord({\n            keyType: ZodString.create(),\n            valueType: first,\n            typeName: ZodFirstPartyTypeKind.ZodRecord,\n            ...processCreateParams(second),\n        });\n    }\n}\nclass ZodMap extends ZodType {\n    get keySchema() {\n        return this._def.keyType;\n    }\n    get valueSchema() {\n        return this._def.valueType;\n    }\n    _parse(input) {\n        const { status, ctx } = this._processInputParams(input);\n        if (ctx.parsedType !== ZodParsedType.map) {\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.map,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        const keyType = this._def.keyType;\n        const valueType = this._def.valueType;\n        const pairs = [...ctx.data.entries()].map(([key, value], index) => {\n            return {\n                key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [index, \"key\"])),\n                value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index, \"value\"])),\n            };\n        });\n        if (ctx.common.async) {\n            const finalMap = new Map();\n            return Promise.resolve().then(async () => {\n                for (const pair of pairs) {\n                    const key = await pair.key;\n                    const value = await pair.value;\n                    if (key.status === \"aborted\" || value.status === \"aborted\") {\n                        return INVALID;\n                    }\n                    if (key.status === \"dirty\" || value.status === \"dirty\") {\n                        status.dirty();\n                    }\n                    finalMap.set(key.value, value.value);\n                }\n                return { status: status.value, value: finalMap };\n            });\n        }\n        else {\n            const finalMap = new Map();\n            for (const pair of pairs) {\n                const key = pair.key;\n                const value = pair.value;\n                if (key.status === \"aborted\" || value.status === \"aborted\") {\n                    return INVALID;\n                }\n                if (key.status === \"dirty\" || value.status === \"dirty\") {\n                    status.dirty();\n                }\n                finalMap.set(key.value, value.value);\n            }\n            return { status: status.value, value: finalMap };\n        }\n    }\n}\nZodMap.create = (keyType, valueType, params) => {\n    return new ZodMap({\n        valueType,\n        keyType,\n        typeName: ZodFirstPartyTypeKind.ZodMap,\n        ...processCreateParams(params),\n    });\n};\nclass ZodSet extends ZodType {\n    _parse(input) {\n        const { status, ctx } = this._processInputParams(input);\n        if (ctx.parsedType !== ZodParsedType.set) {\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.set,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        const def = this._def;\n        if (def.minSize !== null) {\n            if (ctx.data.size < def.minSize.value) {\n                addIssueToContext(ctx, {\n                    code: ZodIssueCode.too_small,\n                    minimum: def.minSize.value,\n                    type: \"set\",\n                    inclusive: true,\n                    exact: false,\n                    message: def.minSize.message,\n                });\n                status.dirty();\n            }\n        }\n        if (def.maxSize !== null) {\n            if (ctx.data.size > def.maxSize.value) {\n                addIssueToContext(ctx, {\n                    code: ZodIssueCode.too_big,\n                    maximum: def.maxSize.value,\n                    type: \"set\",\n                    inclusive: true,\n                    exact: false,\n                    message: def.maxSize.message,\n                });\n                status.dirty();\n            }\n        }\n        const valueType = this._def.valueType;\n        function finalizeSet(elements) {\n            const parsedSet = new Set();\n            for (const element of elements) {\n                if (element.status === \"aborted\")\n                    return INVALID;\n                if (element.status === \"dirty\")\n                    status.dirty();\n                parsedSet.add(element.value);\n            }\n            return { status: status.value, value: parsedSet };\n        }\n        const elements = [...ctx.data.values()].map((item, i) => valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i)));\n        if (ctx.common.async) {\n            return Promise.all(elements).then((elements) => finalizeSet(elements));\n        }\n        else {\n            return finalizeSet(elements);\n        }\n    }\n    min(minSize, message) {\n        return new ZodSet({\n            ...this._def,\n            minSize: { value: minSize, message: errorUtil.toString(message) },\n        });\n    }\n    max(maxSize, message) {\n        return new ZodSet({\n            ...this._def,\n            maxSize: { value: maxSize, message: errorUtil.toString(message) },\n        });\n    }\n    size(size, message) {\n        return this.min(size, message).max(size, message);\n    }\n    nonempty(message) {\n        return this.min(1, message);\n    }\n}\nZodSet.create = (valueType, params) => {\n    return new ZodSet({\n        valueType,\n        minSize: null,\n        maxSize: null,\n        typeName: ZodFirstPartyTypeKind.ZodSet,\n        ...processCreateParams(params),\n    });\n};\nclass ZodFunction extends ZodType {\n    constructor() {\n        super(...arguments);\n        this.validate = this.implement;\n    }\n    _parse(input) {\n        const { ctx } = this._processInputParams(input);\n        if (ctx.parsedType !== ZodParsedType.function) {\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.function,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        function makeArgsIssue(args, error) {\n            return makeIssue({\n                data: args,\n                path: ctx.path,\n                errorMaps: [\n                    ctx.common.contextualErrorMap,\n                    ctx.schemaErrorMap,\n                    getErrorMap(),\n                    errorMap,\n                ].filter((x) => !!x),\n                issueData: {\n                    code: ZodIssueCode.invalid_arguments,\n                    argumentsError: error,\n                },\n            });\n        }\n        function makeReturnsIssue(returns, error) {\n            return makeIssue({\n                data: returns,\n                path: ctx.path,\n                errorMaps: [\n                    ctx.common.contextualErrorMap,\n                    ctx.schemaErrorMap,\n                    getErrorMap(),\n                    errorMap,\n                ].filter((x) => !!x),\n                issueData: {\n                    code: ZodIssueCode.invalid_return_type,\n                    returnTypeError: error,\n                },\n            });\n        }\n        const params = { errorMap: ctx.common.contextualErrorMap };\n        const fn = ctx.data;\n        if (this._def.returns instanceof ZodPromise) {\n            // Would love a way to avoid disabling this rule, but we need\n            // an alias (using an arrow function was what caused 2651).\n            // eslint-disable-next-line @typescript-eslint/no-this-alias\n            const me = this;\n            return OK(async function (...args) {\n                const error = new ZodError([]);\n                const parsedArgs = await me._def.args\n                    .parseAsync(args, params)\n                    .catch((e) => {\n                    error.addIssue(makeArgsIssue(args, e));\n                    throw error;\n                });\n                const result = await Reflect.apply(fn, this, parsedArgs);\n                const parsedReturns = await me._def.returns._def.type\n                    .parseAsync(result, params)\n                    .catch((e) => {\n                    error.addIssue(makeReturnsIssue(result, e));\n                    throw error;\n                });\n                return parsedReturns;\n            });\n        }\n        else {\n            // Would love a way to avoid disabling this rule, but we need\n            // an alias (using an arrow function was what caused 2651).\n            // eslint-disable-next-line @typescript-eslint/no-this-alias\n            const me = this;\n            return OK(function (...args) {\n                const parsedArgs = me._def.args.safeParse(args, params);\n                if (!parsedArgs.success) {\n                    throw new ZodError([makeArgsIssue(args, parsedArgs.error)]);\n                }\n                const result = Reflect.apply(fn, this, parsedArgs.data);\n                const parsedReturns = me._def.returns.safeParse(result, params);\n                if (!parsedReturns.success) {\n                    throw new ZodError([makeReturnsIssue(result, parsedReturns.error)]);\n                }\n                return parsedReturns.data;\n            });\n        }\n    }\n    parameters() {\n        return this._def.args;\n    }\n    returnType() {\n        return this._def.returns;\n    }\n    args(...items) {\n        return new ZodFunction({\n            ...this._def,\n            args: ZodTuple.create(items).rest(ZodUnknown.create()),\n        });\n    }\n    returns(returnType) {\n        return new ZodFunction({\n            ...this._def,\n            returns: returnType,\n        });\n    }\n    implement(func) {\n        const validatedFunc = this.parse(func);\n        return validatedFunc;\n    }\n    strictImplement(func) {\n        const validatedFunc = this.parse(func);\n        return validatedFunc;\n    }\n    static create(args, returns, params) {\n        return new ZodFunction({\n            args: (args\n                ? args\n                : ZodTuple.create([]).rest(ZodUnknown.create())),\n            returns: returns || ZodUnknown.create(),\n            typeName: ZodFirstPartyTypeKind.ZodFunction,\n            ...processCreateParams(params),\n        });\n    }\n}\nclass ZodLazy extends ZodType {\n    get schema() {\n        return this._def.getter();\n    }\n    _parse(input) {\n        const { ctx } = this._processInputParams(input);\n        const lazySchema = this._def.getter();\n        return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx });\n    }\n}\nZodLazy.create = (getter, params) => {\n    return new ZodLazy({\n        getter: getter,\n        typeName: ZodFirstPartyTypeKind.ZodLazy,\n        ...processCreateParams(params),\n    });\n};\nclass ZodLiteral extends ZodType {\n    _parse(input) {\n        if (input.data !== this._def.value) {\n            const ctx = this._getOrReturnCtx(input);\n            addIssueToContext(ctx, {\n                received: ctx.data,\n                code: ZodIssueCode.invalid_literal,\n                expected: this._def.value,\n            });\n            return INVALID;\n        }\n        return { status: \"valid\", value: input.data };\n    }\n    get value() {\n        return this._def.value;\n    }\n}\nZodLiteral.create = (value, params) => {\n    return new ZodLiteral({\n        value: value,\n        typeName: ZodFirstPartyTypeKind.ZodLiteral,\n        ...processCreateParams(params),\n    });\n};\nfunction createZodEnum(values, params) {\n    return new ZodEnum({\n        values,\n        typeName: ZodFirstPartyTypeKind.ZodEnum,\n        ...processCreateParams(params),\n    });\n}\nclass ZodEnum extends ZodType {\n    constructor() {\n        super(...arguments);\n        _ZodEnum_cache.set(this, void 0);\n    }\n    _parse(input) {\n        if (typeof input.data !== \"string\") {\n            const ctx = this._getOrReturnCtx(input);\n            const expectedValues = this._def.values;\n            addIssueToContext(ctx, {\n                expected: util.joinValues(expectedValues),\n                received: ctx.parsedType,\n                code: ZodIssueCode.invalid_type,\n            });\n            return INVALID;\n        }\n        if (!__classPrivateFieldGet(this, _ZodEnum_cache, \"f\")) {\n            __classPrivateFieldSet(this, _ZodEnum_cache, new Set(this._def.values), \"f\");\n        }\n        if (!__classPrivateFieldGet(this, _ZodEnum_cache, \"f\").has(input.data)) {\n            const ctx = this._getOrReturnCtx(input);\n            const expectedValues = this._def.values;\n            addIssueToContext(ctx, {\n                received: ctx.data,\n                code: ZodIssueCode.invalid_enum_value,\n                options: expectedValues,\n            });\n            return INVALID;\n        }\n        return OK(input.data);\n    }\n    get options() {\n        return this._def.values;\n    }\n    get enum() {\n        const enumValues = {};\n        for (const val of this._def.values) {\n            enumValues[val] = val;\n        }\n        return enumValues;\n    }\n    get Values() {\n        const enumValues = {};\n        for (const val of this._def.values) {\n            enumValues[val] = val;\n        }\n        return enumValues;\n    }\n    get Enum() {\n        const enumValues = {};\n        for (const val of this._def.values) {\n            enumValues[val] = val;\n        }\n        return enumValues;\n    }\n    extract(values, newDef = this._def) {\n        return ZodEnum.create(values, {\n            ...this._def,\n            ...newDef,\n        });\n    }\n    exclude(values, newDef = this._def) {\n        return ZodEnum.create(this.options.filter((opt) => !values.includes(opt)), {\n            ...this._def,\n            ...newDef,\n        });\n    }\n}\n_ZodEnum_cache = new WeakMap();\nZodEnum.create = createZodEnum;\nclass ZodNativeEnum extends ZodType {\n    constructor() {\n        super(...arguments);\n        _ZodNativeEnum_cache.set(this, void 0);\n    }\n    _parse(input) {\n        const nativeEnumValues = util.getValidEnumValues(this._def.values);\n        const ctx = this._getOrReturnCtx(input);\n        if (ctx.parsedType !== ZodParsedType.string &&\n            ctx.parsedType !== ZodParsedType.number) {\n            const expectedValues = util.objectValues(nativeEnumValues);\n            addIssueToContext(ctx, {\n                expected: util.joinValues(expectedValues),\n                received: ctx.parsedType,\n                code: ZodIssueCode.invalid_type,\n            });\n            return INVALID;\n        }\n        if (!__classPrivateFieldGet(this, _ZodNativeEnum_cache, \"f\")) {\n            __classPrivateFieldSet(this, _ZodNativeEnum_cache, new Set(util.getValidEnumValues(this._def.values)), \"f\");\n        }\n        if (!__classPrivateFieldGet(this, _ZodNativeEnum_cache, \"f\").has(input.data)) {\n            const expectedValues = util.objectValues(nativeEnumValues);\n            addIssueToContext(ctx, {\n                received: ctx.data,\n                code: ZodIssueCode.invalid_enum_value,\n                options: expectedValues,\n            });\n            return INVALID;\n        }\n        return OK(input.data);\n    }\n    get enum() {\n        return this._def.values;\n    }\n}\n_ZodNativeEnum_cache = new WeakMap();\nZodNativeEnum.create = (values, params) => {\n    return new ZodNativeEnum({\n        values: values,\n        typeName: ZodFirstPartyTypeKind.ZodNativeEnum,\n        ...processCreateParams(params),\n    });\n};\nclass ZodPromise extends ZodType {\n    unwrap() {\n        return this._def.type;\n    }\n    _parse(input) {\n        const { ctx } = this._processInputParams(input);\n        if (ctx.parsedType !== ZodParsedType.promise &&\n            ctx.common.async === false) {\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.promise,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        const promisified = ctx.parsedType === ZodParsedType.promise\n            ? ctx.data\n            : Promise.resolve(ctx.data);\n        return OK(promisified.then((data) => {\n            return this._def.type.parseAsync(data, {\n                path: ctx.path,\n                errorMap: ctx.common.contextualErrorMap,\n            });\n        }));\n    }\n}\nZodPromise.create = (schema, params) => {\n    return new ZodPromise({\n        type: schema,\n        typeName: ZodFirstPartyTypeKind.ZodPromise,\n        ...processCreateParams(params),\n    });\n};\nclass ZodEffects extends ZodType {\n    innerType() {\n        return this._def.schema;\n    }\n    sourceType() {\n        return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects\n            ? this._def.schema.sourceType()\n            : this._def.schema;\n    }\n    _parse(input) {\n        const { status, ctx } = this._processInputParams(input);\n        const effect = this._def.effect || null;\n        const checkCtx = {\n            addIssue: (arg) => {\n                addIssueToContext(ctx, arg);\n                if (arg.fatal) {\n                    status.abort();\n                }\n                else {\n                    status.dirty();\n                }\n            },\n            get path() {\n                return ctx.path;\n            },\n        };\n        checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx);\n        if (effect.type === \"preprocess\") {\n            const processed = effect.transform(ctx.data, checkCtx);\n            if (ctx.common.async) {\n                return Promise.resolve(processed).then(async (processed) => {\n                    if (status.value === \"aborted\")\n                        return INVALID;\n                    const result = await this._def.schema._parseAsync({\n                        data: processed,\n                        path: ctx.path,\n                        parent: ctx,\n                    });\n                    if (result.status === \"aborted\")\n                        return INVALID;\n                    if (result.status === \"dirty\")\n                        return DIRTY(result.value);\n                    if (status.value === \"dirty\")\n                        return DIRTY(result.value);\n                    return result;\n                });\n            }\n            else {\n                if (status.value === \"aborted\")\n                    return INVALID;\n                const result = this._def.schema._parseSync({\n                    data: processed,\n                    path: ctx.path,\n                    parent: ctx,\n                });\n                if (result.status === \"aborted\")\n                    return INVALID;\n                if (result.status === \"dirty\")\n                    return DIRTY(result.value);\n                if (status.value === \"dirty\")\n                    return DIRTY(result.value);\n                return result;\n            }\n        }\n        if (effect.type === \"refinement\") {\n            const executeRefinement = (acc) => {\n                const result = effect.refinement(acc, checkCtx);\n                if (ctx.common.async) {\n                    return Promise.resolve(result);\n                }\n                if (result instanceof Promise) {\n                    throw new Error(\"Async refinement encountered during synchronous parse operation. Use .parseAsync instead.\");\n                }\n                return acc;\n            };\n            if (ctx.common.async === false) {\n                const inner = this._def.schema._parseSync({\n                    data: ctx.data,\n                    path: ctx.path,\n                    parent: ctx,\n                });\n                if (inner.status === \"aborted\")\n                    return INVALID;\n                if (inner.status === \"dirty\")\n                    status.dirty();\n                // return value is ignored\n                executeRefinement(inner.value);\n                return { status: status.value, value: inner.value };\n            }\n            else {\n                return this._def.schema\n                    ._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx })\n                    .then((inner) => {\n                    if (inner.status === \"aborted\")\n                        return INVALID;\n                    if (inner.status === \"dirty\")\n                        status.dirty();\n                    return executeRefinement(inner.value).then(() => {\n                        return { status: status.value, value: inner.value };\n                    });\n                });\n            }\n        }\n        if (effect.type === \"transform\") {\n            if (ctx.common.async === false) {\n                const base = this._def.schema._parseSync({\n                    data: ctx.data,\n                    path: ctx.path,\n                    parent: ctx,\n                });\n                if (!isValid(base))\n                    return base;\n                const result = effect.transform(base.value, checkCtx);\n                if (result instanceof Promise) {\n                    throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);\n                }\n                return { status: status.value, value: result };\n            }\n            else {\n                return this._def.schema\n                    ._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx })\n                    .then((base) => {\n                    if (!isValid(base))\n                        return base;\n                    return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({ status: status.value, value: result }));\n                });\n            }\n        }\n        util.assertNever(effect);\n    }\n}\nZodEffects.create = (schema, effect, params) => {\n    return new ZodEffects({\n        schema,\n        typeName: ZodFirstPartyTypeKind.ZodEffects,\n        effect,\n        ...processCreateParams(params),\n    });\n};\nZodEffects.createWithPreprocess = (preprocess, schema, params) => {\n    return new ZodEffects({\n        schema,\n        effect: { type: \"preprocess\", transform: preprocess },\n        typeName: ZodFirstPartyTypeKind.ZodEffects,\n        ...processCreateParams(params),\n    });\n};\nclass ZodOptional extends ZodType {\n    _parse(input) {\n        const parsedType = this._getType(input);\n        if (parsedType === ZodParsedType.undefined) {\n            return OK(undefined);\n        }\n        return this._def.innerType._parse(input);\n    }\n    unwrap() {\n        return this._def.innerType;\n    }\n}\nZodOptional.create = (type, params) => {\n    return new ZodOptional({\n        innerType: type,\n        typeName: ZodFirstPartyTypeKind.ZodOptional,\n        ...processCreateParams(params),\n    });\n};\nclass ZodNullable extends ZodType {\n    _parse(input) {\n        const parsedType = this._getType(input);\n        if (parsedType === ZodParsedType.null) {\n            return OK(null);\n        }\n        return this._def.innerType._parse(input);\n    }\n    unwrap() {\n        return this._def.innerType;\n    }\n}\nZodNullable.create = (type, params) => {\n    return new ZodNullable({\n        innerType: type,\n        typeName: ZodFirstPartyTypeKind.ZodNullable,\n        ...processCreateParams(params),\n    });\n};\nclass ZodDefault extends ZodType {\n    _parse(input) {\n        const { ctx } = this._processInputParams(input);\n        let data = ctx.data;\n        if (ctx.parsedType === ZodParsedType.undefined) {\n            data = this._def.defaultValue();\n        }\n        return this._def.innerType._parse({\n            data,\n            path: ctx.path,\n            parent: ctx,\n        });\n    }\n    removeDefault() {\n        return this._def.innerType;\n    }\n}\nZodDefault.create = (type, params) => {\n    return new ZodDefault({\n        innerType: type,\n        typeName: ZodFirstPartyTypeKind.ZodDefault,\n        defaultValue: typeof params.default === \"function\"\n            ? params.default\n            : () => params.default,\n        ...processCreateParams(params),\n    });\n};\nclass ZodCatch extends ZodType {\n    _parse(input) {\n        const { ctx } = this._processInputParams(input);\n        // newCtx is used to not collect issues from inner types in ctx\n        const newCtx = {\n            ...ctx,\n            common: {\n                ...ctx.common,\n                issues: [],\n            },\n        };\n        const result = this._def.innerType._parse({\n            data: newCtx.data,\n            path: newCtx.path,\n            parent: {\n                ...newCtx,\n            },\n        });\n        if (isAsync(result)) {\n            return result.then((result) => {\n                return {\n                    status: \"valid\",\n                    value: result.status === \"valid\"\n                        ? result.value\n                        : this._def.catchValue({\n                            get error() {\n                                return new ZodError(newCtx.common.issues);\n                            },\n                            input: newCtx.data,\n                        }),\n                };\n            });\n        }\n        else {\n            return {\n                status: \"valid\",\n                value: result.status === \"valid\"\n                    ? result.value\n                    : this._def.catchValue({\n                        get error() {\n                            return new ZodError(newCtx.common.issues);\n                        },\n                        input: newCtx.data,\n                    }),\n            };\n        }\n    }\n    removeCatch() {\n        return this._def.innerType;\n    }\n}\nZodCatch.create = (type, params) => {\n    return new ZodCatch({\n        innerType: type,\n        typeName: ZodFirstPartyTypeKind.ZodCatch,\n        catchValue: typeof params.catch === \"function\" ? params.catch : () => params.catch,\n        ...processCreateParams(params),\n    });\n};\nclass ZodNaN extends ZodType {\n    _parse(input) {\n        const parsedType = this._getType(input);\n        if (parsedType !== ZodParsedType.nan) {\n            const ctx = this._getOrReturnCtx(input);\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.nan,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        return { status: \"valid\", value: input.data };\n    }\n}\nZodNaN.create = (params) => {\n    return new ZodNaN({\n        typeName: ZodFirstPartyTypeKind.ZodNaN,\n        ...processCreateParams(params),\n    });\n};\nconst BRAND = Symbol(\"zod_brand\");\nclass ZodBranded extends ZodType {\n    _parse(input) {\n        const { ctx } = this._processInputParams(input);\n        const data = ctx.data;\n        return this._def.type._parse({\n            data,\n            path: ctx.path,\n            parent: ctx,\n        });\n    }\n    unwrap() {\n        return this._def.type;\n    }\n}\nclass ZodPipeline extends ZodType {\n    _parse(input) {\n        const { status, ctx } = this._processInputParams(input);\n        if (ctx.common.async) {\n            const handleAsync = async () => {\n                const inResult = await this._def.in._parseAsync({\n                    data: ctx.data,\n                    path: ctx.path,\n                    parent: ctx,\n                });\n                if (inResult.status === \"aborted\")\n                    return INVALID;\n                if (inResult.status === \"dirty\") {\n                    status.dirty();\n                    return DIRTY(inResult.value);\n                }\n                else {\n                    return this._def.out._parseAsync({\n                        data: inResult.value,\n                        path: ctx.path,\n                        parent: ctx,\n                    });\n                }\n            };\n            return handleAsync();\n        }\n        else {\n            const inResult = this._def.in._parseSync({\n                data: ctx.data,\n                path: ctx.path,\n                parent: ctx,\n            });\n            if (inResult.status === \"aborted\")\n                return INVALID;\n            if (inResult.status === \"dirty\") {\n                status.dirty();\n                return {\n                    status: \"dirty\",\n                    value: inResult.value,\n                };\n            }\n            else {\n                return this._def.out._parseSync({\n                    data: inResult.value,\n                    path: ctx.path,\n                    parent: ctx,\n                });\n            }\n        }\n    }\n    static create(a, b) {\n        return new ZodPipeline({\n            in: a,\n            out: b,\n            typeName: ZodFirstPartyTypeKind.ZodPipeline,\n        });\n    }\n}\nclass ZodReadonly extends ZodType {\n    _parse(input) {\n        const result = this._def.innerType._parse(input);\n        const freeze = (data) => {\n            if (isValid(data)) {\n                data.value = Object.freeze(data.value);\n            }\n            return data;\n        };\n        return isAsync(result)\n            ? result.then((data) => freeze(data))\n            : freeze(result);\n    }\n    unwrap() {\n        return this._def.innerType;\n    }\n}\nZodReadonly.create = (type, params) => {\n    return new ZodReadonly({\n        innerType: type,\n        typeName: ZodFirstPartyTypeKind.ZodReadonly,\n        ...processCreateParams(params),\n    });\n};\nfunction custom(check, params = {}, \n/**\n * @deprecated\n *\n * Pass `fatal` into the params object instead:\n *\n * ```ts\n * z.string().custom((val) => val.length > 5, { fatal: false })\n * ```\n *\n */\nfatal) {\n    if (check)\n        return ZodAny.create().superRefine((data, ctx) => {\n            var _a, _b;\n            if (!check(data)) {\n                const p = typeof params === \"function\"\n                    ? params(data)\n                    : typeof params === \"string\"\n                        ? { message: params }\n                        : params;\n                const _fatal = (_b = (_a = p.fatal) !== null && _a !== void 0 ? _a : fatal) !== null && _b !== void 0 ? _b : true;\n                const p2 = typeof p === \"string\" ? { message: p } : p;\n                ctx.addIssue({ code: \"custom\", ...p2, fatal: _fatal });\n            }\n        });\n    return ZodAny.create();\n}\nconst late = {\n    object: ZodObject.lazycreate,\n};\nvar ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n    ZodFirstPartyTypeKind[\"ZodString\"] = \"ZodString\";\n    ZodFirstPartyTypeKind[\"ZodNumber\"] = \"ZodNumber\";\n    ZodFirstPartyTypeKind[\"ZodNaN\"] = \"ZodNaN\";\n    ZodFirstPartyTypeKind[\"ZodBigInt\"] = \"ZodBigInt\";\n    ZodFirstPartyTypeKind[\"ZodBoolean\"] = \"ZodBoolean\";\n    ZodFirstPartyTypeKind[\"ZodDate\"] = \"ZodDate\";\n    ZodFirstPartyTypeKind[\"ZodSymbol\"] = \"ZodSymbol\";\n    ZodFirstPartyTypeKind[\"ZodUndefined\"] = \"ZodUndefined\";\n    ZodFirstPartyTypeKind[\"ZodNull\"] = \"ZodNull\";\n    ZodFirstPartyTypeKind[\"ZodAny\"] = \"ZodAny\";\n    ZodFirstPartyTypeKind[\"ZodUnknown\"] = \"ZodUnknown\";\n    ZodFirstPartyTypeKind[\"ZodNever\"] = \"ZodNever\";\n    ZodFirstPartyTypeKind[\"ZodVoid\"] = \"ZodVoid\";\n    ZodFirstPartyTypeKind[\"ZodArray\"] = \"ZodArray\";\n    ZodFirstPartyTypeKind[\"ZodObject\"] = \"ZodObject\";\n    ZodFirstPartyTypeKind[\"ZodUnion\"] = \"ZodUnion\";\n    ZodFirstPartyTypeKind[\"ZodDiscriminatedUnion\"] = \"ZodDiscriminatedUnion\";\n    ZodFirstPartyTypeKind[\"ZodIntersection\"] = \"ZodIntersection\";\n    ZodFirstPartyTypeKind[\"ZodTuple\"] = \"ZodTuple\";\n    ZodFirstPartyTypeKind[\"ZodRecord\"] = \"ZodRecord\";\n    ZodFirstPartyTypeKind[\"ZodMap\"] = \"ZodMap\";\n    ZodFirstPartyTypeKind[\"ZodSet\"] = \"ZodSet\";\n    ZodFirstPartyTypeKind[\"ZodFunction\"] = \"ZodFunction\";\n    ZodFirstPartyTypeKind[\"ZodLazy\"] = \"ZodLazy\";\n    ZodFirstPartyTypeKind[\"ZodLiteral\"] = \"ZodLiteral\";\n    ZodFirstPartyTypeKind[\"ZodEnum\"] = \"ZodEnum\";\n    ZodFirstPartyTypeKind[\"ZodEffects\"] = \"ZodEffects\";\n    ZodFirstPartyTypeKind[\"ZodNativeEnum\"] = \"ZodNativeEnum\";\n    ZodFirstPartyTypeKind[\"ZodOptional\"] = \"ZodOptional\";\n    ZodFirstPartyTypeKind[\"ZodNullable\"] = \"ZodNullable\";\n    ZodFirstPartyTypeKind[\"ZodDefault\"] = \"ZodDefault\";\n    ZodFirstPartyTypeKind[\"ZodCatch\"] = \"ZodCatch\";\n    ZodFirstPartyTypeKind[\"ZodPromise\"] = \"ZodPromise\";\n    ZodFirstPartyTypeKind[\"ZodBranded\"] = \"ZodBranded\";\n    ZodFirstPartyTypeKind[\"ZodPipeline\"] = \"ZodPipeline\";\n    ZodFirstPartyTypeKind[\"ZodReadonly\"] = \"ZodReadonly\";\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\nconst instanceOfType = (\n// const instanceOfType = <T extends new (...args: any[]) => any>(\ncls, params = {\n    message: `Input not instance of ${cls.name}`,\n}) => custom((data) => data instanceof cls, params);\nconst stringType = ZodString.create;\nconst numberType = ZodNumber.create;\nconst nanType = ZodNaN.create;\nconst bigIntType = ZodBigInt.create;\nconst booleanType = ZodBoolean.create;\nconst dateType = ZodDate.create;\nconst symbolType = ZodSymbol.create;\nconst undefinedType = ZodUndefined.create;\nconst nullType = ZodNull.create;\nconst anyType = ZodAny.create;\nconst unknownType = ZodUnknown.create;\nconst neverType = ZodNever.create;\nconst voidType = ZodVoid.create;\nconst arrayType = ZodArray.create;\nconst objectType = ZodObject.create;\nconst strictObjectType = ZodObject.strictCreate;\nconst unionType = ZodUnion.create;\nconst discriminatedUnionType = ZodDiscriminatedUnion.create;\nconst intersectionType = ZodIntersection.create;\nconst tupleType = ZodTuple.create;\nconst recordType = ZodRecord.create;\nconst mapType = ZodMap.create;\nconst setType = ZodSet.create;\nconst functionType = ZodFunction.create;\nconst lazyType = ZodLazy.create;\nconst literalType = ZodLiteral.create;\nconst enumType = ZodEnum.create;\nconst nativeEnumType = ZodNativeEnum.create;\nconst promiseType = ZodPromise.create;\nconst effectsType = ZodEffects.create;\nconst optionalType = ZodOptional.create;\nconst nullableType = ZodNullable.create;\nconst preprocessType = ZodEffects.createWithPreprocess;\nconst pipelineType = ZodPipeline.create;\nconst ostring = () => stringType().optional();\nconst onumber = () => numberType().optional();\nconst oboolean = () => booleanType().optional();\nconst coerce = {\n    string: ((arg) => ZodString.create({ ...arg, coerce: true })),\n    number: ((arg) => ZodNumber.create({ ...arg, coerce: true })),\n    boolean: ((arg) => ZodBoolean.create({\n        ...arg,\n        coerce: true,\n    })),\n    bigint: ((arg) => ZodBigInt.create({ ...arg, coerce: true })),\n    date: ((arg) => ZodDate.create({ ...arg, coerce: true })),\n};\nconst NEVER = INVALID;\n\nvar z = /*#__PURE__*/Object.freeze({\n    __proto__: null,\n    defaultErrorMap: errorMap,\n    setErrorMap: setErrorMap,\n    getErrorMap: getErrorMap,\n    makeIssue: makeIssue,\n    EMPTY_PATH: EMPTY_PATH,\n    addIssueToContext: addIssueToContext,\n    ParseStatus: ParseStatus,\n    INVALID: INVALID,\n    DIRTY: DIRTY,\n    OK: OK,\n    isAborted: isAborted,\n    isDirty: isDirty,\n    isValid: isValid,\n    isAsync: isAsync,\n    get util () { return util; },\n    get objectUtil () { return objectUtil; },\n    ZodParsedType: ZodParsedType,\n    getParsedType: getParsedType,\n    ZodType: ZodType,\n    datetimeRegex: datetimeRegex,\n    ZodString: ZodString,\n    ZodNumber: ZodNumber,\n    ZodBigInt: ZodBigInt,\n    ZodBoolean: ZodBoolean,\n    ZodDate: ZodDate,\n    ZodSymbol: ZodSymbol,\n    ZodUndefined: ZodUndefined,\n    ZodNull: ZodNull,\n    ZodAny: ZodAny,\n    ZodUnknown: ZodUnknown,\n    ZodNever: ZodNever,\n    ZodVoid: ZodVoid,\n    ZodArray: ZodArray,\n    ZodObject: ZodObject,\n    ZodUnion: ZodUnion,\n    ZodDiscriminatedUnion: ZodDiscriminatedUnion,\n    ZodIntersection: ZodIntersection,\n    ZodTuple: ZodTuple,\n    ZodRecord: ZodRecord,\n    ZodMap: ZodMap,\n    ZodSet: ZodSet,\n    ZodFunction: ZodFunction,\n    ZodLazy: ZodLazy,\n    ZodLiteral: ZodLiteral,\n    ZodEnum: ZodEnum,\n    ZodNativeEnum: ZodNativeEnum,\n    ZodPromise: ZodPromise,\n    ZodEffects: ZodEffects,\n    ZodTransformer: ZodEffects,\n    ZodOptional: ZodOptional,\n    ZodNullable: ZodNullable,\n    ZodDefault: ZodDefault,\n    ZodCatch: ZodCatch,\n    ZodNaN: ZodNaN,\n    BRAND: BRAND,\n    ZodBranded: ZodBranded,\n    ZodPipeline: ZodPipeline,\n    ZodReadonly: ZodReadonly,\n    custom: custom,\n    Schema: ZodType,\n    ZodSchema: ZodType,\n    late: late,\n    get ZodFirstPartyTypeKind () { return ZodFirstPartyTypeKind; },\n    coerce: coerce,\n    any: anyType,\n    array: arrayType,\n    bigint: bigIntType,\n    boolean: booleanType,\n    date: dateType,\n    discriminatedUnion: discriminatedUnionType,\n    effect: effectsType,\n    'enum': enumType,\n    'function': functionType,\n    'instanceof': instanceOfType,\n    intersection: intersectionType,\n    lazy: lazyType,\n    literal: literalType,\n    map: mapType,\n    nan: nanType,\n    nativeEnum: nativeEnumType,\n    never: neverType,\n    'null': nullType,\n    nullable: nullableType,\n    number: numberType,\n    object: objectType,\n    oboolean: oboolean,\n    onumber: onumber,\n    optional: optionalType,\n    ostring: ostring,\n    pipeline: pipelineType,\n    preprocess: preprocessType,\n    promise: promiseType,\n    record: recordType,\n    set: setType,\n    strictObject: strictObjectType,\n    string: stringType,\n    symbol: symbolType,\n    transformer: effectsType,\n    tuple: tupleType,\n    'undefined': undefinedType,\n    union: unionType,\n    unknown: unknownType,\n    'void': voidType,\n    NEVER: NEVER,\n    ZodIssueCode: ZodIssueCode,\n    quotelessJson: quotelessJson,\n    ZodError: ZodError\n});\n\nexport { BRAND, DIRTY, EMPTY_PATH, INVALID, NEVER, OK, ParseStatus, ZodType as Schema, ZodAny, ZodArray, ZodBigInt, ZodBoolean, ZodBranded, ZodCatch, ZodDate, ZodDefault, ZodDiscriminatedUnion, ZodEffects, ZodEnum, ZodError, ZodFirstPartyTypeKind, ZodFunction, ZodIntersection, ZodIssueCode, ZodLazy, ZodLiteral, ZodMap, ZodNaN, ZodNativeEnum, ZodNever, ZodNull, ZodNullable, ZodNumber, ZodObject, ZodOptional, ZodParsedType, ZodPipeline, ZodPromise, ZodReadonly, ZodRecord, ZodType as ZodSchema, ZodSet, ZodString, ZodSymbol, ZodEffects as ZodTransformer, ZodTuple, ZodType, ZodUndefined, ZodUnion, ZodUnknown, ZodVoid, addIssueToContext, anyType as any, arrayType as array, bigIntType as bigint, booleanType as boolean, coerce, custom, dateType as date, datetimeRegex, z as default, errorMap as defaultErrorMap, discriminatedUnionType as discriminatedUnion, effectsType as effect, enumType as enum, functionType as function, getErrorMap, getParsedType, instanceOfType as instanceof, intersectionType as intersection, isAborted, isAsync, isDirty, isValid, late, lazyType as lazy, literalType as literal, makeIssue, mapType as map, nanType as nan, nativeEnumType as nativeEnum, neverType as never, nullType as null, nullableType as nullable, numberType as number, objectType as object, objectUtil, oboolean, onumber, optionalType as optional, ostring, pipelineType as pipeline, preprocessType as preprocess, promiseType as promise, quotelessJson, recordType as record, setType as set, setErrorMap, strictObjectType as strictObject, stringType as string, symbolType as symbol, effectsType as transformer, tupleType as tuple, undefinedType as undefined, unionType as union, unknownType as unknown, util, voidType as void, z };\n", "import chalk from \"chalk\";\r\nimport terminalLink from \"terminal-link\";\r\nimport { getRandomElement } from \".\";\r\nimport type { ErrorContext } from \"../types\";\r\n\r\nconst Discord = terminalLink(\r\n  `${chalk.hex(\"#5865F2\")(\"Discord\")}`,\r\n  chalk.hex(\"#5865F2\")(\"https://discord.gg/wMnhVkpDCC\")\r\n);\r\nconst GitHub = terminalLink(\r\n  `${chalk.hex(\"#6e5494\")(\"GitHub\")}`,\r\n  chalk.hex(\"#6e5494\")(\"coming soon!\")\r\n);\r\n\r\nconst SimpleErrorHelpMessages = [\r\n  `No worries! It seems like a minor mistake. If you need assistance, don't hesitate to reach out on ${Discord} or ${GitHub}.`,\r\n  `Just a small hiccup. Take your time, and if you run into any roadblocks, we're here to help on ${Discord} or ${GitHub}.`,\r\n  `It appears to be a minor issue. Feel free to reach out if you need guidance on ${Discord} or ${GitHub}.`,\r\n  `Seems like a simple mistake. If you're still stuck, we're available to assist on ${Discord} or ${GitHub}.`,\r\n];\r\n\r\nconst TrickyErrorHelpMessages = [\r\n  `Looks like it might be a bit tricky. Take your time, and know that we're here to support you on ${Discord} or ${GitHub}.`,\r\n  `Seems like it could be a tricky one. If you need assistance, we're available on ${Discord} or ${GitHub}`,\r\n  `Looks like a tricky one. Remember, you're not alone\u2014reach out on ${Discord} or ${GitHub} if you need a hand.`,\r\n  `Oof! this can be hard to debug sometimes. if you get stuck, we'll be there to resolve the issue ${Discord} or ${GitHub} :) `,\r\n];\r\n\r\nconst OhShitErrorHelpMessages = [\r\n  `Looks like a tough spot! Take your time, and remember, we're here to help on ${Discord} or ${GitHub}.`,\r\n  `This seems like a serious issue. Don't worry; we'll get through it together. Reach out on ${Discord} or ${GitHub} if you need support.`,\r\n  `Big problem, huh? Take a deep breath, and reach out on ${Discord} or ${GitHub} whenever you're ready. We're here for you.`,\r\n  `Complex error, but don't panic. Reach out on ${Discord} or ${GitHub}, and we'll work through it together.`,\r\n];\r\n\r\nexport const getFormattedError = ({\r\n  coreMessage,\r\n  highlightAffected,\r\n  complexity,\r\n  humanMessage,\r\n  docs,\r\n  proTip,\r\n  stackTrace,\r\n}: ErrorContext) => {\r\n  let output = `\\n\\t`;\r\n\r\n  output += `${chalk.red(coreMessage)}`;\r\n\r\n  if (highlightAffected) {\r\n    output += `\\n\\t${chalk.bold(highlightAffected.title)} -> ${chalk.bgBlack(\r\n      chalk.red(highlightAffected.value)\r\n    )}`;\r\n  }\r\n\r\n  if (complexity) {\r\n    //forceOverrides for testing purposes\r\n\r\n    switch (complexity) {\r\n      case \"simple\": {\r\n        output += `\\n\\t${getRandomElement(SimpleErrorHelpMessages)}`;\r\n        break;\r\n      }\r\n      case \"tricky\": {\r\n        output += `\\n\\t${getRandomElement(TrickyErrorHelpMessages)}`;\r\n        break;\r\n      }\r\n      case \"oh-shit\": {\r\n        output += `\\n\\t${getRandomElement(OhShitErrorHelpMessages)}`;\r\n        break;\r\n      }\r\n    }\r\n  }\r\n\r\n  if (humanMessage) {\r\n    output += `\\n\\t${humanMessage}`;\r\n  }\r\n\r\n  if (docs) {\r\n    output += `\\n\\n\\t${chalk.bold(\"Helpful Docs - \")} ${chalk.grey(docs)}`;\r\n  }\r\n\r\n  if (proTip) {\r\n    output += `\\n\\t${chalk.green(`${chalk.bold(\"Pro Tip - \")} ${proTip}`)}`;\r\n  }\r\n\r\n  if (stackTrace) {\r\n    output += `\\n${chalk.red(stackTrace)}`;\r\n  }\r\n\r\n  return (output += `\\n`);\r\n};\r\n", "import ansiStyles from '#ansi-styles';\nimport supportsColor from '#supports-color';\nimport { // eslint-disable-line import/order\n\tstringReplaceAll,\n\tstringEncaseCRLFWithFirstIndex,\n} from './utilities.js';\n\nconst {stdout: stdoutColor, stderr: stderrColor} = supportsColor;\n\nconst GENERATOR = Symbol('GENERATOR');\nconst STYLER = Symbol('STYLER');\nconst IS_EMPTY = Symbol('IS_EMPTY');\n\n// `supportsColor.level` \u2192 `ansiStyles.color[name]` mapping\nconst levelMapping = [\n\t'ansi',\n\t'ansi',\n\t'ansi256',\n\t'ansi16m',\n];\n\nconst styles = Object.create(null);\n\nconst applyOptions = (object, options = {}) => {\n\tif (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) {\n\t\tthrow new Error('The `level` option should be an integer from 0 to 3');\n\t}\n\n\t// Detect level if not set manually\n\tconst colorLevel = stdoutColor ? stdoutColor.level : 0;\n\tobject.level = options.level === undefined ? colorLevel : options.level;\n};\n\nexport class Chalk {\n\tconstructor(options) {\n\t\t// eslint-disable-next-line no-constructor-return\n\t\treturn chalkFactory(options);\n\t}\n}\n\nconst chalkFactory = options => {\n\tconst chalk = (...strings) => strings.join(' ');\n\tapplyOptions(chalk, options);\n\n\tObject.setPrototypeOf(chalk, createChalk.prototype);\n\n\treturn chalk;\n};\n\nfunction createChalk(options) {\n\treturn chalkFactory(options);\n}\n\nObject.setPrototypeOf(createChalk.prototype, Function.prototype);\n\nfor (const [styleName, style] of Object.entries(ansiStyles)) {\n\tstyles[styleName] = {\n\t\tget() {\n\t\t\tconst builder = createBuilder(this, createStyler(style.open, style.close, this[STYLER]), this[IS_EMPTY]);\n\t\t\tObject.defineProperty(this, styleName, {value: builder});\n\t\t\treturn builder;\n\t\t},\n\t};\n}\n\nstyles.visible = {\n\tget() {\n\t\tconst builder = createBuilder(this, this[STYLER], true);\n\t\tObject.defineProperty(this, 'visible', {value: builder});\n\t\treturn builder;\n\t},\n};\n\nconst getModelAnsi = (model, level, type, ...arguments_) => {\n\tif (model === 'rgb') {\n\t\tif (level === 'ansi16m') {\n\t\t\treturn ansiStyles[type].ansi16m(...arguments_);\n\t\t}\n\n\t\tif (level === 'ansi256') {\n\t\t\treturn ansiStyles[type].ansi256(ansiStyles.rgbToAnsi256(...arguments_));\n\t\t}\n\n\t\treturn ansiStyles[type].ansi(ansiStyles.rgbToAnsi(...arguments_));\n\t}\n\n\tif (model === 'hex') {\n\t\treturn getModelAnsi('rgb', level, type, ...ansiStyles.hexToRgb(...arguments_));\n\t}\n\n\treturn ansiStyles[type][model](...arguments_);\n};\n\nconst usedModels = ['rgb', 'hex', 'ansi256'];\n\nfor (const model of usedModels) {\n\tstyles[model] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(getModelAnsi(model, levelMapping[level], 'color', ...arguments_), ansiStyles.color.close, this[STYLER]);\n\t\t\t\treturn createBuilder(this, styler, this[IS_EMPTY]);\n\t\t\t};\n\t\t},\n\t};\n\n\tconst bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);\n\tstyles[bgModel] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(getModelAnsi(model, levelMapping[level], 'bgColor', ...arguments_), ansiStyles.bgColor.close, this[STYLER]);\n\t\t\t\treturn createBuilder(this, styler, this[IS_EMPTY]);\n\t\t\t};\n\t\t},\n\t};\n}\n\nconst proto = Object.defineProperties(() => {}, {\n\t...styles,\n\tlevel: {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn this[GENERATOR].level;\n\t\t},\n\t\tset(level) {\n\t\t\tthis[GENERATOR].level = level;\n\t\t},\n\t},\n});\n\nconst createStyler = (open, close, parent) => {\n\tlet openAll;\n\tlet closeAll;\n\tif (parent === undefined) {\n\t\topenAll = open;\n\t\tcloseAll = close;\n\t} else {\n\t\topenAll = parent.openAll + open;\n\t\tcloseAll = close + parent.closeAll;\n\t}\n\n\treturn {\n\t\topen,\n\t\tclose,\n\t\topenAll,\n\t\tcloseAll,\n\t\tparent,\n\t};\n};\n\nconst createBuilder = (self, _styler, _isEmpty) => {\n\t// Single argument is hot path, implicit coercion is faster than anything\n\t// eslint-disable-next-line no-implicit-coercion\n\tconst builder = (...arguments_) => applyStyle(builder, (arguments_.length === 1) ? ('' + arguments_[0]) : arguments_.join(' '));\n\n\t// We alter the prototype because we must return a function, but there is\n\t// no way to create a function with a different prototype\n\tObject.setPrototypeOf(builder, proto);\n\n\tbuilder[GENERATOR] = self;\n\tbuilder[STYLER] = _styler;\n\tbuilder[IS_EMPTY] = _isEmpty;\n\n\treturn builder;\n};\n\nconst applyStyle = (self, string) => {\n\tif (self.level <= 0 || !string) {\n\t\treturn self[IS_EMPTY] ? '' : string;\n\t}\n\n\tlet styler = self[STYLER];\n\n\tif (styler === undefined) {\n\t\treturn string;\n\t}\n\n\tconst {openAll, closeAll} = styler;\n\tif (string.includes('\\u001B')) {\n\t\twhile (styler !== undefined) {\n\t\t\t// Replace any instances already present with a re-opening code\n\t\t\t// otherwise only the part of the string until said closing code\n\t\t\t// will be colored, and the rest will simply be 'plain'.\n\t\t\tstring = stringReplaceAll(string, styler.close, styler.open);\n\n\t\t\tstyler = styler.parent;\n\t\t}\n\t}\n\n\t// We can move both next actions out of loop, because remaining actions in loop won't have\n\t// any/visible effect on parts we add here. Close the styling before a linebreak and reopen\n\t// after next line to fix a bleed issue on macOS: https://github.com/chalk/chalk/pull/92\n\tconst lfIndex = string.indexOf('\\n');\n\tif (lfIndex !== -1) {\n\t\tstring = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex);\n\t}\n\n\treturn openAll + string + closeAll;\n};\n\nObject.defineProperties(createChalk.prototype, styles);\n\nconst chalk = createChalk();\nexport const chalkStderr = createChalk({level: stderrColor ? stderrColor.level : 0});\n\nexport {\n\tmodifierNames,\n\tforegroundColorNames,\n\tbackgroundColorNames,\n\tcolorNames,\n\n\t// TODO: Remove these aliases in the next major version\n\tmodifierNames as modifiers,\n\tforegroundColorNames as foregroundColors,\n\tbackgroundColorNames as backgroundColors,\n\tcolorNames as colors,\n} from './vendor/ansi-styles/index.js';\n\nexport {\n\tstdoutColor as supportsColor,\n\tstderrColor as supportsColorStderr,\n};\n\nexport default chalk;\n", "const ANSI_BACKGROUND_OFFSET = 10;\n\nconst wrapAnsi16 = (offset = 0) => code => `\\u001B[${code + offset}m`;\n\nconst wrapAnsi256 = (offset = 0) => code => `\\u001B[${38 + offset};5;${code}m`;\n\nconst wrapAnsi16m = (offset = 0) => (red, green, blue) => `\\u001B[${38 + offset};2;${red};${green};${blue}m`;\n\nconst styles = {\n\tmodifier: {\n\t\treset: [0, 0],\n\t\t// 21 isn't widely supported and 22 does the same thing\n\t\tbold: [1, 22],\n\t\tdim: [2, 22],\n\t\titalic: [3, 23],\n\t\tunderline: [4, 24],\n\t\toverline: [53, 55],\n\t\tinverse: [7, 27],\n\t\thidden: [8, 28],\n\t\tstrikethrough: [9, 29],\n\t},\n\tcolor: {\n\t\tblack: [30, 39],\n\t\tred: [31, 39],\n\t\tgreen: [32, 39],\n\t\tyellow: [33, 39],\n\t\tblue: [34, 39],\n\t\tmagenta: [35, 39],\n\t\tcyan: [36, 39],\n\t\twhite: [37, 39],\n\n\t\t// Bright color\n\t\tblackBright: [90, 39],\n\t\tgray: [90, 39], // Alias of `blackBright`\n\t\tgrey: [90, 39], // Alias of `blackBright`\n\t\tredBright: [91, 39],\n\t\tgreenBright: [92, 39],\n\t\tyellowBright: [93, 39],\n\t\tblueBright: [94, 39],\n\t\tmagentaBright: [95, 39],\n\t\tcyanBright: [96, 39],\n\t\twhiteBright: [97, 39],\n\t},\n\tbgColor: {\n\t\tbgBlack: [40, 49],\n\t\tbgRed: [41, 49],\n\t\tbgGreen: [42, 49],\n\t\tbgYellow: [43, 49],\n\t\tbgBlue: [44, 49],\n\t\tbgMagenta: [45, 49],\n\t\tbgCyan: [46, 49],\n\t\tbgWhite: [47, 49],\n\n\t\t// Bright color\n\t\tbgBlackBright: [100, 49],\n\t\tbgGray: [100, 49], // Alias of `bgBlackBright`\n\t\tbgGrey: [100, 49], // Alias of `bgBlackBright`\n\t\tbgRedBright: [101, 49],\n\t\tbgGreenBright: [102, 49],\n\t\tbgYellowBright: [103, 49],\n\t\tbgBlueBright: [104, 49],\n\t\tbgMagentaBright: [105, 49],\n\t\tbgCyanBright: [106, 49],\n\t\tbgWhiteBright: [107, 49],\n\t},\n};\n\nexport const modifierNames = Object.keys(styles.modifier);\nexport const foregroundColorNames = Object.keys(styles.color);\nexport const backgroundColorNames = Object.keys(styles.bgColor);\nexport const colorNames = [...foregroundColorNames, ...backgroundColorNames];\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`,\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false,\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false,\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tstyles.color.ansi = wrapAnsi16();\n\tstyles.color.ansi256 = wrapAnsi256();\n\tstyles.color.ansi16m = wrapAnsi16m();\n\tstyles.bgColor.ansi = wrapAnsi16(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET);\n\n\t// From https://github.com/Qix-/color-convert/blob/3f0e0d4e92e235796ccb17f6e85c72094a651f49/conversions.js\n\tObject.defineProperties(styles, {\n\t\trgbToAnsi256: {\n\t\t\tvalue(red, green, blue) {\n\t\t\t\t// We use the extended greyscale palette here, with the exception of\n\t\t\t\t// black and white. normal palette only has 4 greyscale shades.\n\t\t\t\tif (red === green && green === blue) {\n\t\t\t\t\tif (red < 8) {\n\t\t\t\t\t\treturn 16;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (red > 248) {\n\t\t\t\t\t\treturn 231;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Math.round(((red - 8) / 247) * 24) + 232;\n\t\t\t\t}\n\n\t\t\t\treturn 16\n\t\t\t\t\t+ (36 * Math.round(red / 255 * 5))\n\t\t\t\t\t+ (6 * Math.round(green / 255 * 5))\n\t\t\t\t\t+ Math.round(blue / 255 * 5);\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToRgb: {\n\t\t\tvalue(hex) {\n\t\t\t\tconst matches = /[a-f\\d]{6}|[a-f\\d]{3}/i.exec(hex.toString(16));\n\t\t\t\tif (!matches) {\n\t\t\t\t\treturn [0, 0, 0];\n\t\t\t\t}\n\n\t\t\t\tlet [colorString] = matches;\n\n\t\t\t\tif (colorString.length === 3) {\n\t\t\t\t\tcolorString = [...colorString].map(character => character + character).join('');\n\t\t\t\t}\n\n\t\t\t\tconst integer = Number.parseInt(colorString, 16);\n\n\t\t\t\treturn [\n\t\t\t\t\t/* eslint-disable no-bitwise */\n\t\t\t\t\t(integer >> 16) & 0xFF,\n\t\t\t\t\t(integer >> 8) & 0xFF,\n\t\t\t\t\tinteger & 0xFF,\n\t\t\t\t\t/* eslint-enable no-bitwise */\n\t\t\t\t];\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi256: {\n\t\t\tvalue: hex => styles.rgbToAnsi256(...styles.hexToRgb(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t\tansi256ToAnsi: {\n\t\t\tvalue(code) {\n\t\t\t\tif (code < 8) {\n\t\t\t\t\treturn 30 + code;\n\t\t\t\t}\n\n\t\t\t\tif (code < 16) {\n\t\t\t\t\treturn 90 + (code - 8);\n\t\t\t\t}\n\n\t\t\t\tlet red;\n\t\t\t\tlet green;\n\t\t\t\tlet blue;\n\n\t\t\t\tif (code >= 232) {\n\t\t\t\t\tred = (((code - 232) * 10) + 8) / 255;\n\t\t\t\t\tgreen = red;\n\t\t\t\t\tblue = red;\n\t\t\t\t} else {\n\t\t\t\t\tcode -= 16;\n\n\t\t\t\t\tconst remainder = code % 36;\n\n\t\t\t\t\tred = Math.floor(code / 36) / 5;\n\t\t\t\t\tgreen = Math.floor(remainder / 6) / 5;\n\t\t\t\t\tblue = (remainder % 6) / 5;\n\t\t\t\t}\n\n\t\t\t\tconst value = Math.max(red, green, blue) * 2;\n\n\t\t\t\tif (value === 0) {\n\t\t\t\t\treturn 30;\n\t\t\t\t}\n\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\tlet result = 30 + ((Math.round(blue) << 2) | (Math.round(green) << 1) | Math.round(red));\n\n\t\t\t\tif (value === 2) {\n\t\t\t\t\tresult += 60;\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\trgbToAnsi: {\n\t\t\tvalue: (red, green, blue) => styles.ansi256ToAnsi(styles.rgbToAnsi256(red, green, blue)),\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi: {\n\t\t\tvalue: hex => styles.ansi256ToAnsi(styles.hexToAnsi256(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t});\n\n\treturn styles;\n}\n\nconst ansiStyles = assembleStyles();\n\nexport default ansiStyles;\n", "import process from 'node:process';\nimport os from 'node:os';\nimport tty from 'node:tty';\n\n// From: https://github.com/sindresorhus/has-flag/blob/main/index.js\n/// function hasFlag(flag, argv = globalThis.Deno?.args ?? process.argv) {\nfunction hasFlag(flag, argv = globalThis.Deno ? globalThis.Deno.args : process.argv) {\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst position = argv.indexOf(prefix + flag);\n\tconst terminatorPosition = argv.indexOf('--');\n\treturn position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);\n}\n\nconst {env} = process;\n\nlet flagForceColor;\nif (\n\thasFlag('no-color')\n\t|| hasFlag('no-colors')\n\t|| hasFlag('color=false')\n\t|| hasFlag('color=never')\n) {\n\tflagForceColor = 0;\n} else if (\n\thasFlag('color')\n\t|| hasFlag('colors')\n\t|| hasFlag('color=true')\n\t|| hasFlag('color=always')\n) {\n\tflagForceColor = 1;\n}\n\nfunction envForceColor() {\n\tif ('FORCE_COLOR' in env) {\n\t\tif (env.FORCE_COLOR === 'true') {\n\t\t\treturn 1;\n\t\t}\n\n\t\tif (env.FORCE_COLOR === 'false') {\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn env.FORCE_COLOR.length === 0 ? 1 : Math.min(Number.parseInt(env.FORCE_COLOR, 10), 3);\n\t}\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3,\n\t};\n}\n\nfunction _supportsColor(haveStream, {streamIsTTY, sniffFlags = true} = {}) {\n\tconst noFlagForceColor = envForceColor();\n\tif (noFlagForceColor !== undefined) {\n\t\tflagForceColor = noFlagForceColor;\n\t}\n\n\tconst forceColor = sniffFlags ? flagForceColor : noFlagForceColor;\n\n\tif (forceColor === 0) {\n\t\treturn 0;\n\t}\n\n\tif (sniffFlags) {\n\t\tif (hasFlag('color=16m')\n\t\t\t|| hasFlag('color=full')\n\t\t\t|| hasFlag('color=truecolor')) {\n\t\t\treturn 3;\n\t\t}\n\n\t\tif (hasFlag('color=256')) {\n\t\t\treturn 2;\n\t\t}\n\t}\n\n\t// Check for Azure DevOps pipelines.\n\t// Has to be above the `!streamIsTTY` check.\n\tif ('TF_BUILD' in env && 'AGENT_NAME' in env) {\n\t\treturn 1;\n\t}\n\n\tif (haveStream && !streamIsTTY && forceColor === undefined) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor || 0;\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\tif (process.platform === 'win32') {\n\t\t// Windows 10 build 10586 is the first Windows release that supports 256 colors.\n\t\t// Windows 10 build 14931 is the first release that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(osRelease[0]) >= 10\n\t\t\t&& Number(osRelease[2]) >= 10_586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14_931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif ('GITHUB_ACTIONS' in env || 'GITEA_ACTIONS' in env) {\n\t\t\treturn 3;\n\t\t}\n\n\t\tif (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI', 'BUILDKITE', 'DRONE'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif (env.TERM === 'xterm-kitty') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = Number.parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app': {\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\t}\n\n\t\t\tcase 'Apple_Terminal': {\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\treturn min;\n}\n\nexport function createSupportsColor(stream, options = {}) {\n\tconst level = _supportsColor(stream, {\n\t\tstreamIsTTY: stream && stream.isTTY,\n\t\t...options,\n\t});\n\n\treturn translateLevel(level);\n}\n\nconst supportsColor = {\n\tstdout: createSupportsColor({isTTY: tty.isatty(1)}),\n\tstderr: createSupportsColor({isTTY: tty.isatty(2)}),\n};\n\nexport default supportsColor;\n", "// TODO: When targeting Node.js 16, use `String.prototype.replaceAll`.\nexport function stringReplaceAll(string, substring, replacer) {\n\tlet index = string.indexOf(substring);\n\tif (index === -1) {\n\t\treturn string;\n\t}\n\n\tconst substringLength = substring.length;\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\treturnValue += string.slice(endIndex, index) + substring + replacer;\n\t\tendIndex = index + substringLength;\n\t\tindex = string.indexOf(substring, endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.slice(endIndex);\n\treturn returnValue;\n}\n\nexport function stringEncaseCRLFWithFirstIndex(string, prefix, postfix, index) {\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\tconst gotCR = string[index - 1] === '\\r';\n\t\treturnValue += string.slice(endIndex, (gotCR ? index - 1 : index)) + prefix + (gotCR ? '\\r\\n' : '\\n') + postfix;\n\t\tendIndex = index + 1;\n\t\tindex = string.indexOf('\\n', endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.slice(endIndex);\n\treturn returnValue;\n}\n", "import ansiEscapes from 'ansi-escapes';\nimport supportsHyperlinks from 'supports-hyperlinks';\n\nexport default function terminalLink(text, url, {target = 'stdout', ...options} = {}) {\n\tif (!supportsHyperlinks[target]) {\n\t\t// If the fallback has been explicitly disabled, don't modify the text itself.\n\t\tif (options.fallback === false) {\n\t\t\treturn text;\n\t\t}\n\n\t\treturn typeof options.fallback === 'function' ? options.fallback(text, url) : `${text} (\\u200B${url}\\u200B)`;\n\t}\n\n\treturn ansiEscapes.link(text, url);\n}\n\nterminalLink.isSupported = supportsHyperlinks.stdout;\nterminalLink.stderr = (text, url, options = {}) => terminalLink(text, url, {target: 'stderr', ...options});\nterminalLink.stderr.isSupported = supportsHyperlinks.stderr;\n", "const ESC = '\\u001B[';\nconst OSC = '\\u001B]';\nconst BEL = '\\u0007';\nconst SEP = ';';\nconst isTerminalApp = process.env.TERM_PROGRAM === 'Apple_Terminal';\n\nconst ansiEscapes = {};\n\nansiEscapes.cursorTo = (x, y) => {\n\tif (typeof x !== 'number') {\n\t\tthrow new TypeError('The `x` argument is required');\n\t}\n\n\tif (typeof y !== 'number') {\n\t\treturn ESC + (x + 1) + 'G';\n\t}\n\n\treturn ESC + (y + 1) + ';' + (x + 1) + 'H';\n};\n\nansiEscapes.cursorMove = (x, y) => {\n\tif (typeof x !== 'number') {\n\t\tthrow new TypeError('The `x` argument is required');\n\t}\n\n\tlet returnValue = '';\n\n\tif (x < 0) {\n\t\treturnValue += ESC + (-x) + 'D';\n\t} else if (x > 0) {\n\t\treturnValue += ESC + x + 'C';\n\t}\n\n\tif (y < 0) {\n\t\treturnValue += ESC + (-y) + 'A';\n\t} else if (y > 0) {\n\t\treturnValue += ESC + y + 'B';\n\t}\n\n\treturn returnValue;\n};\n\nansiEscapes.cursorUp = (count = 1) => ESC + count + 'A';\nansiEscapes.cursorDown = (count = 1) => ESC + count + 'B';\nansiEscapes.cursorForward = (count = 1) => ESC + count + 'C';\nansiEscapes.cursorBackward = (count = 1) => ESC + count + 'D';\n\nansiEscapes.cursorLeft = ESC + 'G';\nansiEscapes.cursorSavePosition = isTerminalApp ? '\\u001B7' : ESC + 's';\nansiEscapes.cursorRestorePosition = isTerminalApp ? '\\u001B8' : ESC + 'u';\nansiEscapes.cursorGetPosition = ESC + '6n';\nansiEscapes.cursorNextLine = ESC + 'E';\nansiEscapes.cursorPrevLine = ESC + 'F';\nansiEscapes.cursorHide = ESC + '?25l';\nansiEscapes.cursorShow = ESC + '?25h';\n\nansiEscapes.eraseLines = count => {\n\tlet clear = '';\n\n\tfor (let i = 0; i < count; i++) {\n\t\tclear += ansiEscapes.eraseLine + (i < count - 1 ? ansiEscapes.cursorUp() : '');\n\t}\n\n\tif (count) {\n\t\tclear += ansiEscapes.cursorLeft;\n\t}\n\n\treturn clear;\n};\n\nansiEscapes.eraseEndLine = ESC + 'K';\nansiEscapes.eraseStartLine = ESC + '1K';\nansiEscapes.eraseLine = ESC + '2K';\nansiEscapes.eraseDown = ESC + 'J';\nansiEscapes.eraseUp = ESC + '1J';\nansiEscapes.eraseScreen = ESC + '2J';\nansiEscapes.scrollUp = ESC + 'S';\nansiEscapes.scrollDown = ESC + 'T';\n\nansiEscapes.clearScreen = '\\u001Bc';\n\nansiEscapes.clearTerminal = process.platform === 'win32' ?\n\t`${ansiEscapes.eraseScreen}${ESC}0f` :\n\t// 1. Erases the screen (Only done in case `2` is not supported)\n\t// 2. Erases the whole screen including scrollback buffer\n\t// 3. Moves cursor to the top-left position\n\t// More info: https://www.real-world-systems.com/docs/ANSIcode.html\n\t`${ansiEscapes.eraseScreen}${ESC}3J${ESC}H`;\n\nansiEscapes.beep = BEL;\n\nansiEscapes.link = (text, url) => {\n\treturn [\n\t\tOSC,\n\t\t'8',\n\t\tSEP,\n\t\tSEP,\n\t\turl,\n\t\tBEL,\n\t\ttext,\n\t\tOSC,\n\t\t'8',\n\t\tSEP,\n\t\tSEP,\n\t\tBEL\n\t].join('');\n};\n\nansiEscapes.image = (buffer, options = {}) => {\n\tlet returnValue = `${OSC}1337;File=inline=1`;\n\n\tif (options.width) {\n\t\treturnValue += `;width=${options.width}`;\n\t}\n\n\tif (options.height) {\n\t\treturnValue += `;height=${options.height}`;\n\t}\n\n\tif (options.preserveAspectRatio === false) {\n\t\treturnValue += ';preserveAspectRatio=0';\n\t}\n\n\treturn returnValue + ':' + buffer.toString('base64') + BEL;\n};\n\nansiEscapes.iTerm = {\n\tsetCwd: (cwd = process.cwd()) => `${OSC}50;CurrentDir=${cwd}${BEL}`,\n\n\tannotation: (message, options = {}) => {\n\t\tlet returnValue = `${OSC}1337;`;\n\n\t\tconst hasX = typeof options.x !== 'undefined';\n\t\tconst hasY = typeof options.y !== 'undefined';\n\t\tif ((hasX || hasY) && !(hasX && hasY && typeof options.length !== 'undefined')) {\n\t\t\tthrow new Error('`x`, `y` and `length` must be defined when `x` or `y` is defined');\n\t\t}\n\n\t\tmessage = message.replace(/\\|/g, '');\n\n\t\treturnValue += options.isHidden ? 'AddHiddenAnnotation=' : 'AddAnnotation=';\n\n\t\tif (options.length > 0) {\n\t\t\treturnValue +=\n\t\t\t\t\t(hasX ?\n\t\t\t\t\t\t[message, options.length, options.x, options.y] :\n\t\t\t\t\t\t[options.length, message]).join('|');\n\t\t} else {\n\t\t\treturnValue += message;\n\t\t}\n\n\t\treturn returnValue + BEL;\n\t}\n};\n\nexport default ansiEscapes;\n", "import { readFileSync } from \"fs\";\r\nimport { join } from \"path\";\r\nimport { findUpSync } from \"find-up\";\r\nimport * as dotenv from \"dotenv\";\r\nimport { DefaultEnvFilesToRead } from \"./constants\";\r\nimport { getFormattedError } from \"./utils/errror\";\r\n\r\nconst getRoot = function isProjectRoot() {\r\n  const root = findUpSync(\"resocket.json\"); //do with node_modules?\r\n  if (!root)\r\n    throw new Error(\r\n      getFormattedError({\r\n        coreMessage: \"Unable to locate resocket.json file\",\r\n        humanMessage:\r\n          \"You can add a resocket.json file at the root of your project~\",\r\n      })\r\n    );\r\n\r\n  return root;\r\n};\r\n\r\nexport const readEnv = (\r\n  envFiles: string[] = DefaultEnvFilesToRead\r\n): Record<string, string> => {\r\n  let filesToRead = envFiles;\r\n\r\n  const rootDir = join(getRoot(), \"..\");\r\n  const filePaths: Array<string> = [];\r\n\r\n  for (let file of filesToRead) {\r\n    const filePath = findUpSync(file, { stopAt: rootDir });\r\n\r\n    if (filePath) filePaths.push(filePath);\r\n  }\r\n\r\n  if (filePaths.length < 1) return {};\r\n\r\n  let envs = {};\r\n  for (let filePath of filePaths) {\r\n    envs = { ...envs, ...dotenv.parse(readFileSync(filePath, \"utf8\")) };\r\n  }\r\n\r\n  return envs;\r\n};\r\n", "import { buildDeployDurable } from \"./code-gen/esbuild\";\r\nimport { getResocketConfig } from \"./config\";\r\nimport { getWorkerFilePath } from \"./utils\";\r\nimport { requireAuth } from \"./auth/auth\";\r\nimport type { OutputFile } from \"esbuild\";\r\nimport { getUser } from \"./auth/user\";\r\nimport { apiFetch } from \"./utils/apiFetch\";\r\nimport type { ResocketConfig } from \"./types\";\r\nimport { FRAMEWORK_VERSION } from \"./constants\";\r\nimport chalk from \"chalk\";\r\nimport ora from \"ora\";\r\n\r\nexport interface DeployCliOverrides {\r\n  config?: string;\r\n}\r\n\r\nexport const resocketDeploy = async (overrides: DeployCliOverrides) => {\r\n  const config = getResocketConfig(overrides);\r\n  const workerFilePath = getWorkerFilePath(overrides.config, config);\r\n\r\n  // const bundle = await buildDeploy(workerFilePath, config);\r\n\r\n  const bundle = await buildDeployDurable(workerFilePath);\r\n\r\n  await deployToServer(bundle, config);\r\n};\r\n\r\nconst deployToServer = async (bundle: OutputFile, config: ResocketConfig) => {\r\n  const spinner = ora(`${chalk.bold(\"deploying...\")} `).start();\r\n  try {\r\n    const { accountId, token } = requireAuth();\r\n\r\n    const clerkUser = await getUser();\r\n\r\n    const res = (await apiFetch(\"/projects/deploy\", {\r\n      user: clerkUser,\r\n      options: {\r\n        method: \"POST\",\r\n        body: JSON.stringify({\r\n          cfAuth: { accountId, token },\r\n          bundle: bundle.text,\r\n          framework: {\r\n            name: \"cloudflare\",\r\n            version: FRAMEWORK_VERSION,\r\n          },\r\n          config,\r\n        }),\r\n      },\r\n    })) as any;\r\n\r\n    spinner.stop();\r\n\r\n    console.log(`${chalk.green(res.message)}`);\r\n    if (\r\n      res.deployedUrls &&\r\n      Array.isArray(res.deployedUrls) &&\r\n      res.deployedUrls.length > 0\r\n    ) {\r\n      const msg = `\\nPublished ${config.name}`;\r\n\r\n      console.log(msg);\r\n\r\n      for (const url of res.deployedUrls) {\r\n        // Append protocol only on workers.dev domains\r\n        console.log(\r\n          \" \",\r\n          chalk.green((url.endsWith(\"workers.dev\") ? \"https://\" : \"\") + url)\r\n        );\r\n      }\r\n    } else {\r\n      console.log(\"No server deploy targets for\", config.name);\r\n    }\r\n  } catch (error) {\r\n    spinner.stop();\r\n    throw error;\r\n  }\r\n};\r\n", "import { getResocketConfig } from \"../config\";\r\nimport { getFormattedError } from \"../utils/errror\";\r\nimport { Clerk } from \"@clerk/clerk-js/headless\";\r\nimport type { UserConfig } from \"../types\";\r\n\r\nexport const requireAuth = () => {\r\n  if (process.env.RESOCKET_CF_ACCOUNT_ID && process.env.RESOCKET_CF_API_TOKEN)\r\n    return {\r\n      accountId: process.env.RESOCKET_CF_ACCOUNT_ID,\r\n      token: process.env.RESOCKET_CF_API_TOKEN,\r\n    };\r\n  const { envs } = getResocketConfig();\r\n\r\n  let missing: string[] = [];\r\n\r\n  if (!process.env.RESOCKET_CF_ACCOUNT_ID) {\r\n    if (!envs.CLOUDFLARE_ACCOUNT_ID) missing.push(\"CLOUDFLARE_ACCOUNT_ID\");\r\n\r\n    process.env.RESOCKET_CF_ACCOUNT_ID = envs.CLOUDFLARE_ACCOUNT_ID;\r\n  }\r\n\r\n  if (!process.env.RESOCKET_CF_API_TOKEN) {\r\n    if (!envs.CLOUDFLARE_API_TOKEN) missing.push(\"CLOUDFLARE_API_TOKEN\");\r\n\r\n    process.env.RESOCKET_CF_API_TOKEN = envs.CLOUDFLARE_API_TOKEN;\r\n  }\r\n\r\n  if (missing.length > 0)\r\n    throw new Error(\r\n      getFormattedError({\r\n        coreMessage:\r\n          \"env 'CLOUDFLARE_ACCOUNT_ID' & 'CLOUDFLARE_API_TOKEN' are required!\",\r\n        highlightAffected: { title: \"missing env\", value: missing },\r\n        humanMessage:\r\n          \"You are not providing the correct environment variables necessary to run this command, plz note that we do not store any of your environment variables\",\r\n        proTip:\r\n          \"you can provide the variables in a .env file at root, or you can also pass the variables to the cli with --vars command\",\r\n      })\r\n    );\r\n\r\n  return {\r\n    accountId: process.env.RESOCKET_CF_ACCOUNT_ID,\r\n    token: process.env.RESOCKET_CF_API_TOKEN,\r\n  };\r\n};\r\n\r\nconst pubkey = \"pk_test_dXB3YXJkLWdyaXp6bHktMTguY2xlcmsuYWNjb3VudHMuZGV2JA\";\r\ninterface ClerkSetupOptions {\r\n  headers?: Record<string, string>;\r\n}\r\n\r\nexport const tokenStore = (initToken?: string) => {\r\n  let _token: string | undefined = initToken;\r\n\r\n  return {\r\n    getToken() {\r\n      return _token;\r\n    },\r\n    setToken(token: string) {\r\n      _token = token;\r\n      return _token;\r\n    },\r\n  };\r\n};\r\n\r\ntype TokenStore = ReturnType<typeof tokenStore>;\r\n\r\nconst configureClerkInstance = (\r\n  clerk: Clerk,\r\n  store: TokenStore,\r\n  headers: Record<string, string> = {}\r\n) => {\r\n  //* we need to get the auth headers by hijacking into this. & also passing custom headers\r\n  //* ref - https://github.com/clerk/javascript/blob/main/packages/chrome-extension/src/singleton.ts#L67-L89\r\n\r\n  clerk.__unstable__onBeforeRequest(async (requestInit) => {\r\n    requestInit.credentials = \"omit\";\r\n    requestInit.url?.searchParams.append(\"_is_native\", \"1\");\r\n\r\n    //* we set custom headers here for authentication\r\n    const requestHeaders = requestInit.headers as Headers;\r\n\r\n    requestHeaders.set(\"authorization\", store.getToken() || \"\");\r\n    requestHeaders.set(\"user-agent\", \"resocket-cli\");\r\n\r\n    Object.entries(headers).forEach(([key, value]) =>\r\n      requestHeaders.set(key, value)\r\n    );\r\n  });\r\n\r\n  clerk.__unstable__onAfterResponse(async (_, response) => {\r\n    const authHeader = response?.headers.get(\"authorization\");\r\n    if (authHeader) {\r\n      store.setToken(authHeader);\r\n    }\r\n  });\r\n};\r\n\r\nexport const initializeClerk = async (\r\n  options: ClerkSetupOptions,\r\n  store: TokenStore\r\n): Promise<Clerk> => {\r\n  const clerk = new Clerk(pubkey);\r\n  configureClerkInstance(clerk, store, options.headers);\r\n  await clerk.load({ standardBrowser: false });\r\n\r\n  return clerk;\r\n};\r\n\r\nexport const authenticateClerk = async (\r\n  signInToken: string,\r\n  headers: Record<string, string> = {}\r\n): Promise<UserConfig> => {\r\n  let store = tokenStore();\r\n\r\n  const clerk = await initializeClerk({ headers }, store);\r\n  const signInResponse = await clerk.client?.signIn.create({\r\n    strategy: \"ticket\",\r\n    ticket: signInToken,\r\n  });\r\n\r\n  if (signInResponse?.status !== \"complete\") {\r\n    throw new Error(\r\n      `Login process did not complete: ${JSON.stringify(signInResponse)}`\r\n    );\r\n  }\r\n\r\n  if (!store.getToken()) {\r\n    throw new Error(\"No authentication token received\");\r\n  }\r\n\r\n  const activeSession = clerk.client?.activeSessions?.[0];\r\n  if (!activeSession?.user) {\r\n    throw new Error(\"No active session found\");\r\n  }\r\n\r\n  return {\r\n    version: \"0\",\r\n    accessToken: store.getToken()!,\r\n    username: activeSession.user.username!,\r\n  };\r\n};\r\n\r\nexport const logoutClerk = async (authToken: string) => {\r\n  const clerk = await initializeClerk({}, tokenStore(authToken));\r\n\r\n  await clerk.signOut();\r\n};\r\n", "import chalk from \"chalk\";\r\nimport {\r\n  authenticateClerk,\r\n  initializeClerk,\r\n  logoutClerk,\r\n  tokenStore,\r\n} from \"./auth\";\r\nimport { browserAuth } from \"./authServer\";\r\nimport ora from \"ora\";\r\nimport type { UserConfig } from \"../types\";\r\nimport { getUserConfig, removeUserConfig, saveUserConfig } from \"../config\";\r\nimport { userConfigSchema } from \"../schema\";\r\n\r\nexport async function createClerkSession(): Promise<UserConfig | undefined> {\r\n  const spinner = ora(`${chalk.bold(\"logging in...\")} `).start();\r\n\r\n  // initiate login oauth login flow\r\n  const authData = await browserAuth();\r\n\r\n  if (\"error\" in authData) {\r\n    spinner.warn(chalk.red(authData.error));\r\n    process.exit(1);\r\n  }\r\n\r\n  const userConfig = await authenticateClerk(authData.token);\r\n\r\n  spinner.succeed(`${chalk.green(\" signed in sucessfully :)\")}`);\r\n  spinner.stop();\r\n\r\n  if (userConfig) return userConfigSchema.parse(userConfig);\r\n\r\n  //! ideally never reaching here!\r\n  throw new Error(\"Login failed. Please try again later\");\r\n}\r\n\r\nexport const getUser = async () => {\r\n  let config: UserConfig | undefined;\r\n\r\n  config = getUserConfig();\r\n\r\n  if (!config) {\r\n    const session = await createClerkSession();\r\n\r\n    if (!session) {\r\n      throw new Error(\"Login failed, Please try again later\");\r\n    }\r\n\r\n    config = session;\r\n  }\r\n\r\n  saveUserConfig(config);\r\n\r\n  const clerk = await initializeClerk({}, tokenStore(config.accessToken));\r\n\r\n  return {\r\n    config: config,\r\n    clerk,\r\n  };\r\n};\r\n\r\nexport const logout = async () => {\r\n  const config = getUserConfig();\r\n  if (!config) return;\r\n\r\n  removeUserConfig();\r\n\r\n  try {\r\n    await logoutClerk(config.accessToken);\r\n  } catch (error) {}\r\n};\r\n", "import http from \"http\";\r\nimport getPort from \"get-port\";\r\nimport open from \"open\";\r\nimport url from \"url\";\r\nimport { getFormattedError } from \"../utils/errror\";\r\nimport listen from \"async-listen\";\r\nimport { UserCancellationError } from \"../errors/UserCancellationError\";\r\nimport { API_BASE } from \"../constants\";\r\n\r\nconst DASHBOARD_BASE = API_BASE;\r\nconst LOGIN_ROUTE = `/cli/auth-callback`;\r\n\r\n//lol make sure you dont accidentally flip and cause infinite loop ><\r\nconst PortRange = { low: 4000, high: 5000 };\r\n\r\nfunction getPortsFromPortRange(portRanges: { low: number; high: number }) {\r\n  const { low, high } = portRanges;\r\n  if (low > high)\r\n    throw new Error(\r\n      getFormattedError({\r\n        coreMessage:\r\n          \"Internal Error, port ranges 'low' is greater than 'high', this must have been a misconfiguration\",\r\n        humanMessage:\r\n          \"This is an error on our end, plz file an issue or reach out on discord :)\",\r\n      })\r\n    );\r\n\r\n  const ports = [];\r\n  for (let port = low; port <= high; port++) {\r\n    ports.push(port);\r\n  }\r\n  return ports;\r\n}\r\n\r\nconst openBrowser = ({ mode, port }: { port: number; mode: string }) => {\r\n  // the local server url the login flow will redirect back to\r\n  const redirectUrl = `http://localhost:${port}/cli/auth-callback`;\r\n\r\n  // the remote server url that will handle the login flow\r\n  const loginUrl = `${DASHBOARD_BASE}/${LOGIN_ROUTE}?mode=${mode}&redirectUrl=${encodeURIComponent(\r\n    redirectUrl\r\n  )}`;\r\n\r\n  open(loginUrl).catch(() => {\r\n    console.error(\r\n      `Unable to open the browser, please visit the following url to complete the login process:${loginUrl}`\r\n    );\r\n  });\r\n};\r\n\r\nexport const browserAuth = async (): Promise<\r\n  { token: string } | { error: string }\r\n> => {\r\n  const port = await getPort({ port: getPortsFromPortRange(PortRange) });\r\n\r\n  const server = http.createServer();\r\n\r\n  await listen(server, port, \"localhost\");\r\n\r\n  const authPromise = () => {\r\n    return new Promise<{ token: string }>((resolve, reject) => {\r\n      server.on(\"request\", (req, res) => {\r\n        //mkae sure we have the correct url\r\n        if (!req.url || !req.url.startsWith(\"/cli/auth-callback?\")) {\r\n          return;\r\n        }\r\n\r\n        // Set CORS headers for all responses\r\n        res.setHeader(\"Access-Control-Allow-Origin\", \"*\");\r\n        res.setHeader(\"Access-Control-Allow-Methods\", \"GET, OPTIONS\");\r\n        res.setHeader(\r\n          \"Access-Control-Allow-Headers\",\r\n          \"Content-Type, Authorization\"\r\n        );\r\n\r\n        if (req.method === \"OPTIONS\") {\r\n          res.writeHead(200);\r\n          res.end();\r\n        } else if (req.method === \"GET\") {\r\n          const parsedUrl = url.parse(req.url as string, true);\r\n          const queryParams = parsedUrl.query;\r\n\r\n          if (queryParams.cancelled) {\r\n            res.writeHead(200);\r\n            res.end();\r\n            reject(\r\n              new UserCancellationError({\r\n                coreMessage: \"Login process cancelled by user.\",\r\n              })\r\n            );\r\n          } else if (queryParams.token) {\r\n            res.writeHead(200);\r\n            res.end();\r\n            resolve(queryParams as { token: string });\r\n          } else {\r\n            res.writeHead(405);\r\n            res.end();\r\n            reject();\r\n          }\r\n        } else {\r\n          res.writeHead(405);\r\n          res.end();\r\n        }\r\n      });\r\n    });\r\n  };\r\n\r\n  try {\r\n    openBrowser({ mode: \"cli\", port });\r\n    const authData = await authPromise();\r\n    return authData;\r\n  } catch (error) {\r\n    if (error instanceof UserCancellationError) {\r\n      return {\r\n        error: \"User cancelled the authentication flow\",\r\n      };\r\n    }\r\n\r\n    return {\r\n      error:\r\n        \"Authentication Failed! please try again later, or reach out on discord :)\",\r\n    };\r\n  } finally {\r\n    server.close();\r\n  }\r\n};\r\n", "import net from 'node:net';\nimport os from 'node:os';\n\nclass Locked extends Error {\n\tconstructor(port) {\n\t\tsuper(`${port} is locked`);\n\t}\n}\n\nconst lockedPorts = {\n\told: new Set(),\n\tyoung: new Set(),\n};\n\n// On this interval, the old locked ports are discarded,\n// the young locked ports are moved to old locked ports,\n// and a new young set for locked ports are created.\nconst releaseOldLockedPortsIntervalMs = 1000 * 15;\n\nconst minPort = 1024;\nconst maxPort = 65_535;\n\n// Lazily create timeout on first use\nlet timeout;\n\nconst getLocalHosts = () => {\n\tconst interfaces = os.networkInterfaces();\n\n\t// Add undefined value for createServer function to use default host,\n\t// and default IPv4 host in case createServer defaults to IPv6.\n\tconst results = new Set([undefined, '0.0.0.0']);\n\n\tfor (const _interface of Object.values(interfaces)) {\n\t\tfor (const config of _interface) {\n\t\t\tresults.add(config.address);\n\t\t}\n\t}\n\n\treturn results;\n};\n\nconst checkAvailablePort = options =>\n\tnew Promise((resolve, reject) => {\n\t\tconst server = net.createServer();\n\t\tserver.unref();\n\t\tserver.on('error', reject);\n\n\t\tserver.listen(options, () => {\n\t\t\tconst {port} = server.address();\n\t\t\tserver.close(() => {\n\t\t\t\tresolve(port);\n\t\t\t});\n\t\t});\n\t});\n\nconst getAvailablePort = async (options, hosts) => {\n\tif (options.host || options.port === 0) {\n\t\treturn checkAvailablePort(options);\n\t}\n\n\tfor (const host of hosts) {\n\t\ttry {\n\t\t\tawait checkAvailablePort({port: options.port, host}); // eslint-disable-line no-await-in-loop\n\t\t} catch (error) {\n\t\t\tif (!['EADDRNOTAVAIL', 'EINVAL'].includes(error.code)) {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn options.port;\n};\n\nconst portCheckSequence = function * (ports) {\n\tif (ports) {\n\t\tyield * ports;\n\t}\n\n\tyield 0; // Fall back to 0 if anything else failed\n};\n\nexport default async function getPorts(options) {\n\tlet ports;\n\tlet exclude = new Set();\n\n\tif (options) {\n\t\tif (options.port) {\n\t\t\tports = typeof options.port === 'number' ? [options.port] : options.port;\n\t\t}\n\n\t\tif (options.exclude) {\n\t\t\tconst excludeIterable = options.exclude;\n\n\t\t\tif (typeof excludeIterable[Symbol.iterator] !== 'function') {\n\t\t\t\tthrow new TypeError('The `exclude` option must be an iterable.');\n\t\t\t}\n\n\t\t\tfor (const element of excludeIterable) {\n\t\t\t\tif (typeof element !== 'number') {\n\t\t\t\t\tthrow new TypeError('Each item in the `exclude` option must be a number corresponding to the port you want excluded.');\n\t\t\t\t}\n\n\t\t\t\tif (!Number.isSafeInteger(element)) {\n\t\t\t\t\tthrow new TypeError(`Number ${element} in the exclude option is not a safe integer and can't be used`);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\texclude = new Set(excludeIterable);\n\t\t}\n\t}\n\n\tif (timeout === undefined) {\n\t\ttimeout = setTimeout(() => {\n\t\t\ttimeout = undefined;\n\n\t\t\tlockedPorts.old = lockedPorts.young;\n\t\t\tlockedPorts.young = new Set();\n\t\t}, releaseOldLockedPortsIntervalMs);\n\n\t\t// Does not exist in some environments (Electron, Jest jsdom env, browser, etc).\n\t\tif (timeout.unref) {\n\t\t\ttimeout.unref();\n\t\t}\n\t}\n\n\tconst hosts = getLocalHosts();\n\n\tfor (const port of portCheckSequence(ports)) {\n\t\ttry {\n\t\t\tif (exclude.has(port)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tlet availablePort = await getAvailablePort({...options, port}, hosts); // eslint-disable-line no-await-in-loop\n\t\t\twhile (lockedPorts.old.has(availablePort) || lockedPorts.young.has(availablePort)) {\n\t\t\t\tif (port !== 0) {\n\t\t\t\t\tthrow new Locked(port);\n\t\t\t\t}\n\n\t\t\t\tavailablePort = await getAvailablePort({...options, port}, hosts); // eslint-disable-line no-await-in-loop\n\t\t\t}\n\n\t\t\tlockedPorts.young.add(availablePort);\n\n\t\t\treturn availablePort;\n\t\t} catch (error) {\n\t\t\tif (!['EADDRINUSE', 'EACCES'].includes(error.code) && !(error instanceof Locked)) {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t}\n\t}\n\n\tthrow new Error('No available ports found');\n}\n\nexport function portNumbers(from, to) {\n\tif (!Number.isInteger(from) || !Number.isInteger(to)) {\n\t\tthrow new TypeError('`from` and `to` must be integer numbers');\n\t}\n\n\tif (from < minPort || from > maxPort) {\n\t\tthrow new RangeError(`'from' must be between ${minPort} and ${maxPort}`);\n\t}\n\n\tif (to < minPort || to > maxPort) {\n\t\tthrow new RangeError(`'to' must be between ${minPort} and ${maxPort}`);\n\t}\n\n\tif (from > to) {\n\t\tthrow new RangeError('`to` must be greater than or equal to `from`');\n\t}\n\n\tconst generator = function * (from, to) {\n\t\tfor (let port = from; port <= to; port++) {\n\t\t\tyield port;\n\t\t}\n\t};\n\n\treturn generator(from, to);\n}\n\nexport function clearLockedPorts() {\n\tlockedPorts.old.clear();\n\tlockedPorts.young.clear();\n}\n", "import process from 'node:process';\nimport {Buffer} from 'node:buffer';\nimport path from 'node:path';\nimport {fileURLToPath} from 'node:url';\nimport childProcess from 'node:child_process';\nimport fs, {constants as fsConstants} from 'node:fs/promises';\nimport isWsl from 'is-wsl';\nimport defineLazyProperty from 'define-lazy-prop';\nimport defaultBrowser from 'default-browser';\nimport isInsideContainer from 'is-inside-container';\n\n// Path to included `xdg-open`.\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\nconst localXdgOpenPath = path.join(__dirname, 'xdg-open');\n\nconst {platform, arch} = process;\n\n/**\nGet the mount point for fixed drives in WSL.\n\n@inner\n@returns {string} The mount point.\n*/\nconst getWslDrivesMountPoint = (() => {\n\t// Default value for \"root\" param\n\t// according to https://docs.microsoft.com/en-us/windows/wsl/wsl-config\n\tconst defaultMountPoint = '/mnt/';\n\n\tlet mountPoint;\n\n\treturn async function () {\n\t\tif (mountPoint) {\n\t\t\t// Return memoized mount point value\n\t\t\treturn mountPoint;\n\t\t}\n\n\t\tconst configFilePath = '/etc/wsl.conf';\n\n\t\tlet isConfigFileExists = false;\n\t\ttry {\n\t\t\tawait fs.access(configFilePath, fsConstants.F_OK);\n\t\t\tisConfigFileExists = true;\n\t\t} catch {}\n\n\t\tif (!isConfigFileExists) {\n\t\t\treturn defaultMountPoint;\n\t\t}\n\n\t\tconst configContent = await fs.readFile(configFilePath, {encoding: 'utf8'});\n\t\tconst configMountPoint = /(?<!#.*)root\\s*=\\s*(?<mountPoint>.*)/g.exec(configContent);\n\n\t\tif (!configMountPoint) {\n\t\t\treturn defaultMountPoint;\n\t\t}\n\n\t\tmountPoint = configMountPoint.groups.mountPoint.trim();\n\t\tmountPoint = mountPoint.endsWith('/') ? mountPoint : `${mountPoint}/`;\n\n\t\treturn mountPoint;\n\t};\n})();\n\nconst pTryEach = async (array, mapper) => {\n\tlet latestError;\n\n\tfor (const item of array) {\n\t\ttry {\n\t\t\treturn await mapper(item); // eslint-disable-line no-await-in-loop\n\t\t} catch (error) {\n\t\t\tlatestError = error;\n\t\t}\n\t}\n\n\tthrow latestError;\n};\n\nconst baseOpen = async options => {\n\toptions = {\n\t\twait: false,\n\t\tbackground: false,\n\t\tnewInstance: false,\n\t\tallowNonzeroExitCode: false,\n\t\t...options,\n\t};\n\n\tif (Array.isArray(options.app)) {\n\t\treturn pTryEach(options.app, singleApp => baseOpen({\n\t\t\t...options,\n\t\t\tapp: singleApp,\n\t\t}));\n\t}\n\n\tlet {name: app, arguments: appArguments = []} = options.app ?? {};\n\tappArguments = [...appArguments];\n\n\tif (Array.isArray(app)) {\n\t\treturn pTryEach(app, appName => baseOpen({\n\t\t\t...options,\n\t\t\tapp: {\n\t\t\t\tname: appName,\n\t\t\t\targuments: appArguments,\n\t\t\t},\n\t\t}));\n\t}\n\n\tif (app === 'browser' || app === 'browserPrivate') {\n\t\t// IDs from default-browser for macOS and windows are the same\n\t\tconst ids = {\n\t\t\t'com.google.chrome': 'chrome',\n\t\t\t'google-chrome.desktop': 'chrome',\n\t\t\t'org.mozilla.firefox': 'firefox',\n\t\t\t'firefox.desktop': 'firefox',\n\t\t\t'com.microsoft.msedge': 'edge',\n\t\t\t'com.microsoft.edge': 'edge',\n\t\t\t'microsoft-edge.desktop': 'edge',\n\t\t};\n\n\t\t// Incognito flags for each browser in `apps`.\n\t\tconst flags = {\n\t\t\tchrome: '--incognito',\n\t\t\tfirefox: '--private-window',\n\t\t\tedge: '--inPrivate',\n\t\t};\n\n\t\tconst browser = await defaultBrowser();\n\t\tif (browser.id in ids) {\n\t\t\tconst browserName = ids[browser.id];\n\n\t\t\tif (app === 'browserPrivate') {\n\t\t\t\tappArguments.push(flags[browserName]);\n\t\t\t}\n\n\t\t\treturn baseOpen({\n\t\t\t\t...options,\n\t\t\t\tapp: {\n\t\t\t\t\tname: apps[browserName],\n\t\t\t\t\targuments: appArguments,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tthrow new Error(`${browser.name} is not supported as a default browser`);\n\t}\n\n\tlet command;\n\tconst cliArguments = [];\n\tconst childProcessOptions = {};\n\n\tif (platform === 'darwin') {\n\t\tcommand = 'open';\n\n\t\tif (options.wait) {\n\t\t\tcliArguments.push('--wait-apps');\n\t\t}\n\n\t\tif (options.background) {\n\t\t\tcliArguments.push('--background');\n\t\t}\n\n\t\tif (options.newInstance) {\n\t\t\tcliArguments.push('--new');\n\t\t}\n\n\t\tif (app) {\n\t\t\tcliArguments.push('-a', app);\n\t\t}\n\t} else if (platform === 'win32' || (isWsl && !isInsideContainer() && !app)) {\n\t\tconst mountPoint = await getWslDrivesMountPoint();\n\n\t\tcommand = isWsl\n\t\t\t? `${mountPoint}c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe`\n\t\t\t: `${process.env.SYSTEMROOT || process.env.windir || 'C:\\\\Windows'}\\\\System32\\\\WindowsPowerShell\\\\v1.0\\\\powershell`;\n\n\t\tcliArguments.push(\n\t\t\t'-NoProfile',\n\t\t\t'-NonInteractive',\n\t\t\t'-ExecutionPolicy',\n\t\t\t'Bypass',\n\t\t\t'-EncodedCommand',\n\t\t);\n\n\t\tif (!isWsl) {\n\t\t\tchildProcessOptions.windowsVerbatimArguments = true;\n\t\t}\n\n\t\tconst encodedArguments = ['Start'];\n\n\t\tif (options.wait) {\n\t\t\tencodedArguments.push('-Wait');\n\t\t}\n\n\t\tif (app) {\n\t\t\t// Double quote with double quotes to ensure the inner quotes are passed through.\n\t\t\t// Inner quotes are delimited for PowerShell interpretation with backticks.\n\t\t\tencodedArguments.push(`\"\\`\"${app}\\`\"\"`);\n\t\t\tif (options.target) {\n\t\t\t\tappArguments.push(options.target);\n\t\t\t}\n\t\t} else if (options.target) {\n\t\t\tencodedArguments.push(`\"${options.target}\"`);\n\t\t}\n\n\t\tif (appArguments.length > 0) {\n\t\t\tappArguments = appArguments.map(argument => `\"\\`\"${argument}\\`\"\"`);\n\t\t\tencodedArguments.push('-ArgumentList', appArguments.join(','));\n\t\t}\n\n\t\t// Using Base64-encoded command, accepted by PowerShell, to allow special characters.\n\t\toptions.target = Buffer.from(encodedArguments.join(' '), 'utf16le').toString('base64');\n\t} else {\n\t\tif (app) {\n\t\t\tcommand = app;\n\t\t} else {\n\t\t\t// When bundled by Webpack, there's no actual package file path and no local `xdg-open`.\n\t\t\tconst isBundled = !__dirname || __dirname === '/';\n\n\t\t\t// Check if local `xdg-open` exists and is executable.\n\t\t\tlet exeLocalXdgOpen = false;\n\t\t\ttry {\n\t\t\t\tawait fs.access(localXdgOpenPath, fsConstants.X_OK);\n\t\t\t\texeLocalXdgOpen = true;\n\t\t\t} catch {}\n\n\t\t\tconst useSystemXdgOpen = process.versions.electron\n\t\t\t\t?? (platform === 'android' || isBundled || !exeLocalXdgOpen);\n\t\t\tcommand = useSystemXdgOpen ? 'xdg-open' : localXdgOpenPath;\n\t\t}\n\n\t\tif (appArguments.length > 0) {\n\t\t\tcliArguments.push(...appArguments);\n\t\t}\n\n\t\tif (!options.wait) {\n\t\t\t// `xdg-open` will block the process unless stdio is ignored\n\t\t\t// and it's detached from the parent even if it's unref'd.\n\t\t\tchildProcessOptions.stdio = 'ignore';\n\t\t\tchildProcessOptions.detached = true;\n\t\t}\n\t}\n\n\tif (platform === 'darwin' && appArguments.length > 0) {\n\t\tcliArguments.push('--args', ...appArguments);\n\t}\n\n\t// This has to come after `--args`.\n\tif (options.target) {\n\t\tcliArguments.push(options.target);\n\t}\n\n\tconst subprocess = childProcess.spawn(command, cliArguments, childProcessOptions);\n\n\tif (options.wait) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tsubprocess.once('error', reject);\n\n\t\t\tsubprocess.once('close', exitCode => {\n\t\t\t\tif (!options.allowNonzeroExitCode && exitCode > 0) {\n\t\t\t\t\treject(new Error(`Exited with code ${exitCode}`));\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolve(subprocess);\n\t\t\t});\n\t\t});\n\t}\n\n\tsubprocess.unref();\n\n\treturn subprocess;\n};\n\nconst open = (target, options) => {\n\tif (typeof target !== 'string') {\n\t\tthrow new TypeError('Expected a `target`');\n\t}\n\n\treturn baseOpen({\n\t\t...options,\n\t\ttarget,\n\t});\n};\n\nexport const openApp = (name, options) => {\n\tif (typeof name !== 'string' && !Array.isArray(name)) {\n\t\tthrow new TypeError('Expected a valid `name`');\n\t}\n\n\tconst {arguments: appArguments = []} = options ?? {};\n\tif (appArguments !== undefined && appArguments !== null && !Array.isArray(appArguments)) {\n\t\tthrow new TypeError('Expected `appArguments` as Array type');\n\t}\n\n\treturn baseOpen({\n\t\t...options,\n\t\tapp: {\n\t\t\tname,\n\t\t\targuments: appArguments,\n\t\t},\n\t});\n};\n\nfunction detectArchBinary(binary) {\n\tif (typeof binary === 'string' || Array.isArray(binary)) {\n\t\treturn binary;\n\t}\n\n\tconst {[arch]: archBinary} = binary;\n\n\tif (!archBinary) {\n\t\tthrow new Error(`${arch} is not supported`);\n\t}\n\n\treturn archBinary;\n}\n\nfunction detectPlatformBinary({[platform]: platformBinary}, {wsl}) {\n\tif (wsl && isWsl) {\n\t\treturn detectArchBinary(wsl);\n\t}\n\n\tif (!platformBinary) {\n\t\tthrow new Error(`${platform} is not supported`);\n\t}\n\n\treturn detectArchBinary(platformBinary);\n}\n\nexport const apps = {};\n\ndefineLazyProperty(apps, 'chrome', () => detectPlatformBinary({\n\tdarwin: 'google chrome',\n\twin32: 'chrome',\n\tlinux: ['google-chrome', 'google-chrome-stable', 'chromium'],\n}, {\n\twsl: {\n\t\tia32: '/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe',\n\t\tx64: ['/mnt/c/Program Files/Google/Chrome/Application/chrome.exe', '/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe'],\n\t},\n}));\n\ndefineLazyProperty(apps, 'firefox', () => detectPlatformBinary({\n\tdarwin: 'firefox',\n\twin32: 'C:\\\\Program Files\\\\Mozilla Firefox\\\\firefox.exe',\n\tlinux: 'firefox',\n}, {\n\twsl: '/mnt/c/Program Files/Mozilla Firefox/firefox.exe',\n}));\n\ndefineLazyProperty(apps, 'edge', () => detectPlatformBinary({\n\tdarwin: 'microsoft edge',\n\twin32: 'msedge',\n\tlinux: ['microsoft-edge', 'microsoft-edge-dev'],\n}, {\n\twsl: '/mnt/c/Program Files (x86)/Microsoft/Edge/Application/msedge.exe',\n}));\n\ndefineLazyProperty(apps, 'browser', () => 'browser');\n\ndefineLazyProperty(apps, 'browserPrivate', () => 'browserPrivate');\n\nexport default open;\n", "import process from 'node:process';\nimport os from 'node:os';\nimport fs from 'node:fs';\nimport isInsideContainer from 'is-inside-container';\n\nconst isWsl = () => {\n\tif (process.platform !== 'linux') {\n\t\treturn false;\n\t}\n\n\tif (os.release().toLowerCase().includes('microsoft')) {\n\t\tif (isInsideContainer()) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\ttry {\n\t\treturn fs.readFileSync('/proc/version', 'utf8').toLowerCase().includes('microsoft')\n\t\t\t? !isInsideContainer() : false;\n\t} catch {\n\t\treturn false;\n\t}\n};\n\nexport default process.env.__IS_WSL_TEST__ ? isWsl : isWsl();\n", "import fs from 'node:fs';\nimport isDocker from 'is-docker';\n\nlet cachedResult;\n\n// Podman detection\nconst hasContainerEnv = () => {\n\ttry {\n\t\tfs.statSync('/run/.containerenv');\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n};\n\nexport default function isInsideContainer() {\n\t// TODO: Use `??=` when targeting Node.js 16.\n\tif (cachedResult === undefined) {\n\t\tcachedResult = hasContainerEnv() || isDocker();\n\t}\n\n\treturn cachedResult;\n}\n", "import fs from 'node:fs';\n\nlet isDockerCached;\n\nfunction hasDockerEnv() {\n\ttry {\n\t\tfs.statSync('/.dockerenv');\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nfunction hasDockerCGroup() {\n\ttry {\n\t\treturn fs.readFileSync('/proc/self/cgroup', 'utf8').includes('docker');\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nexport default function isDocker() {\n\t// TODO: Use `??=` when targeting Node.js 16.\n\tif (isDockerCached === undefined) {\n\t\tisDockerCached = hasDockerEnv() || hasDockerCGroup();\n\t}\n\n\treturn isDockerCached;\n}\n", "export default function defineLazyProperty(object, propertyName, valueGetter) {\n\tconst define = value => Object.defineProperty(object, propertyName, {value, enumerable: true, writable: true});\n\n\tObject.defineProperty(object, propertyName, {\n\t\tconfigurable: true,\n\t\tenumerable: true,\n\t\tget() {\n\t\t\tconst result = valueGetter();\n\t\t\tdefine(result);\n\t\t\treturn result;\n\t\t},\n\t\tset(value) {\n\t\t\tdefine(value);\n\t\t}\n\t});\n\n\treturn object;\n}\n", "import {promisify} from 'node:util';\nimport process from 'node:process';\nimport {execFile} from 'node:child_process';\nimport defaultBrowserId from 'default-browser-id';\nimport bundleName from 'bundle-name';\nimport windows from './windows.js';\n\nconst execFileAsync = promisify(execFile);\n\n// Inlined: https://github.com/sindresorhus/titleize/blob/main/index.js\nconst titleize = string => string.toLowerCase().replaceAll(/(?:^|\\s|-)\\S/g, x => x.toUpperCase());\n\nexport default async function defaultBrowser() {\n\tif (process.platform === 'darwin') {\n\t\tconst id = await defaultBrowserId();\n\t\tconst name = await bundleName(id);\n\t\treturn {name, id};\n\t}\n\n\tif (process.platform === 'linux') {\n\t\tconst {stdout} = await execFileAsync('xdg-mime', ['query', 'default', 'x-scheme-handler/http']);\n\t\tconst id = stdout.trim();\n\t\tconst name = titleize(id.replace(/.desktop$/, '').replace('-', ' '));\n\t\treturn {name, id};\n\t}\n\n\tif (process.platform === 'win32') {\n\t\treturn windows();\n\t}\n\n\tthrow new Error('Only macOS, Linux, and Windows are supported');\n}\n", "import {promisify} from 'node:util';\nimport process from 'node:process';\nimport {execFile} from 'node:child_process';\n\nconst execFileAsync = promisify(execFile);\n\nexport default async function defaultBrowserId() {\n\tif (process.platform !== 'darwin') {\n\t\tthrow new Error('macOS only');\n\t}\n\n\tconst {stdout} = await execFileAsync('defaults', ['read', 'com.apple.LaunchServices/com.apple.launchservices.secure', 'LSHandlers']);\n\n\t// `(?!-)` is to prevent matching `LSHandlerRoleAll = \"-\";`.\n\tconst match = /LSHandlerRoleAll = \"(?!-)(?<id>[^\"]+?)\";\\s+?LSHandlerURLScheme = (?:http|https);/.exec(stdout);\n\n\treturn match?.groups.id ?? 'com.apple.Safari';\n}\n", "import {runAppleScript} from 'run-applescript';\n\nexport default async function bundleName(bundleId) {\n\treturn runAppleScript(`tell application \"Finder\" to set app_path to application file id \"${bundleId}\" as string\\ntell application \"System Events\" to get value of property list item \"CFBundleName\" of property list file (app_path & \":Contents:Info.plist\")`);\n}\n", "import process from 'node:process';\nimport {promisify} from 'node:util';\nimport {execFile, execFileSync} from 'node:child_process';\n\nconst execFileAsync = promisify(execFile);\n\nexport async function runAppleScript(script, {humanReadableOutput = true} = {}) {\n\tif (process.platform !== 'darwin') {\n\t\tthrow new Error('macOS only');\n\t}\n\n\tconst outputArguments = humanReadableOutput ? [] : ['-ss'];\n\n\tconst {stdout} = await execFileAsync('osascript', ['-e', script, outputArguments]);\n\treturn stdout.trim();\n}\n\nexport function runAppleScriptSync(script, {humanReadableOutput = true} = {}) {\n\tif (process.platform !== 'darwin') {\n\t\tthrow new Error('macOS only');\n\t}\n\n\tconst outputArguments = humanReadableOutput ? [] : ['-ss'];\n\n\tconst stdout = execFileSync('osascript', ['-e', script, ...outputArguments], {\n\t\tencoding: 'utf8',\n\t\tstdio: ['ignore', 'pipe', 'ignore'],\n\t\ttimeout: 500,\n\t});\n\n\treturn stdout.trim();\n}\n", "import {promisify} from 'node:util';\nimport {execFile} from 'node:child_process';\n\nconst execFileAsync = promisify(execFile);\n\n// Windows doesn't have browser IDs in the same way macOS/Linux does so we give fake\n// ones that look real and match the macOS/Linux versions for cross-platform apps.\nconst windowsBrowserProgIds = {\n\tAppXq0fevzme2pys62n3e0fbqa7peapykr8v: {name: 'Edge', id: 'com.microsoft.edge.old'},\n\tMSEdgeDHTML: {name: 'Edge', id: 'com.microsoft.edge'}, // On macOS, it's \"com.microsoft.edgemac\"\n\tMSEdgeHTM: {name: 'Edge', id: 'com.microsoft.edge'}, // Newer Edge/Win10 releases\n\t'IE.HTTP': {name: 'Internet Explorer', id: 'com.microsoft.ie'},\n\tFirefoxURL: {name: 'Firefox', id: 'org.mozilla.firefox'},\n\tChromeHTML: {name: 'Chrome', id: 'com.google.chrome'},\n\tBraveHTML: {name: 'Brave', id: 'com.brave.Browser'},\n\tBraveBHTML: {name: 'Brave Beta', id: 'com.brave.Browser.beta'},\n\tBraveSSHTM: {name: 'Brave Nightly', id: 'com.brave.Browser.nightly'},\n};\n\nexport class UnknownBrowserError extends Error {}\n\nexport default async function defaultBrowser(_execFileAsync = execFileAsync) {\n\tconst {stdout} = await _execFileAsync('reg', [\n\t\t'QUERY',\n\t\t' HKEY_CURRENT_USER\\\\Software\\\\Microsoft\\\\Windows\\\\Shell\\\\Associations\\\\UrlAssociations\\\\http\\\\UserChoice',\n\t\t'/v',\n\t\t'ProgId',\n\t]);\n\n\tconst match = /ProgId\\s*REG_SZ\\s*(?<id>\\S+)/.exec(stdout);\n\tif (!match) {\n\t\tthrow new UnknownBrowserError(`Cannot find Windows browser in stdout: ${JSON.stringify(stdout)}`);\n\t}\n\n\tconst {id} = match.groups;\n\n\tconst browser = windowsBrowserProgIds[id];\n\tif (!browser) {\n\t\tthrow new UnknownBrowserError(`Unknown browser ID: ${id}`);\n\t}\n\n\treturn browser;\n}\n", "import type { ErrorContext } from \"../types\";\r\nimport { CustomError } from \"./BaseError\";\r\n\r\nexport class UserCancellationError extends CustomError {\r\n  constructor(message: ErrorContext) {\r\n    super(message);\r\n    this.name = \"UserCancellationError\";\r\n  }\r\n\r\n  status: number = 403;\r\n}\r\n", "import type { ErrorContext } from \"../types\";\r\nimport { getFormattedError } from \"../utils/errror\";\r\n\r\nexport abstract class CustomError extends Error {\r\n  constructor(private errorCtx: ErrorContext) {\r\n    super(getFormattedError({ ...errorCtx }));\r\n  }\r\n\r\n  abstract status: number;\r\n\r\n  print() {\r\n    console.log(getFormattedError(this.errorCtx));\r\n  }\r\n  printWithStack() {\r\n    console.log(this.stack);\r\n  }\r\n}\r\n", "import process from 'node:process';\nimport chalk from 'chalk';\nimport cliCursor from 'cli-cursor';\nimport cliSpinners from 'cli-spinners';\nimport logSymbols from 'log-symbols';\nimport stripAnsi from 'strip-ansi';\nimport stringWidth from 'string-width';\nimport isInteractive from 'is-interactive';\nimport isUnicodeSupported from 'is-unicode-supported';\nimport stdinDiscarder from 'stdin-discarder';\n\nclass Ora {\n\t#linesToClear = 0;\n\t#isDiscardingStdin = false;\n\t#lineCount = 0;\n\t#frameIndex = 0;\n\t#options;\n\t#spinner;\n\t#stream;\n\t#id;\n\t#initialInterval;\n\t#isEnabled;\n\t#isSilent;\n\t#indent;\n\t#text;\n\t#prefixText;\n\t#suffixText;\n\n\tcolor;\n\n\tconstructor(options) {\n\t\tif (typeof options === 'string') {\n\t\t\toptions = {\n\t\t\t\ttext: options,\n\t\t\t};\n\t\t}\n\n\t\tthis.#options = {\n\t\t\tcolor: 'cyan',\n\t\t\tstream: process.stderr,\n\t\t\tdiscardStdin: true,\n\t\t\thideCursor: true,\n\t\t\t...options,\n\t\t};\n\n\t\t// Public\n\t\tthis.color = this.#options.color;\n\n\t\t// It's important that these use the public setters.\n\t\tthis.spinner = this.#options.spinner;\n\n\t\tthis.#initialInterval = this.#options.interval;\n\t\tthis.#stream = this.#options.stream;\n\t\tthis.#isEnabled = typeof this.#options.isEnabled === 'boolean' ? this.#options.isEnabled : isInteractive({stream: this.#stream});\n\t\tthis.#isSilent = typeof this.#options.isSilent === 'boolean' ? this.#options.isSilent : false;\n\n\t\t// Set *after* `this.#stream`.\n\t\t// It's important that these use the public setters.\n\t\tthis.text = this.#options.text;\n\t\tthis.prefixText = this.#options.prefixText;\n\t\tthis.suffixText = this.#options.suffixText;\n\t\tthis.indent = this.#options.indent;\n\n\t\tif (process.env.NODE_ENV === 'test') {\n\t\t\tthis._stream = this.#stream;\n\t\t\tthis._isEnabled = this.#isEnabled;\n\n\t\t\tObject.defineProperty(this, '_linesToClear', {\n\t\t\t\tget() {\n\t\t\t\t\treturn this.#linesToClear;\n\t\t\t\t},\n\t\t\t\tset(newValue) {\n\t\t\t\t\tthis.#linesToClear = newValue;\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tObject.defineProperty(this, '_frameIndex', {\n\t\t\t\tget() {\n\t\t\t\t\treturn this.#frameIndex;\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tObject.defineProperty(this, '_lineCount', {\n\t\t\t\tget() {\n\t\t\t\t\treturn this.#lineCount;\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t}\n\n\tget indent() {\n\t\treturn this.#indent;\n\t}\n\n\tset indent(indent = 0) {\n\t\tif (!(indent >= 0 && Number.isInteger(indent))) {\n\t\t\tthrow new Error('The `indent` option must be an integer from 0 and up');\n\t\t}\n\n\t\tthis.#indent = indent;\n\t\tthis.#updateLineCount();\n\t}\n\n\tget interval() {\n\t\treturn this.#initialInterval ?? this.#spinner.interval ?? 100;\n\t}\n\n\tget spinner() {\n\t\treturn this.#spinner;\n\t}\n\n\tset spinner(spinner) {\n\t\tthis.#frameIndex = 0;\n\t\tthis.#initialInterval = undefined;\n\n\t\tif (typeof spinner === 'object') {\n\t\t\tif (spinner.frames === undefined) {\n\t\t\t\tthrow new Error('The given spinner must have a `frames` property');\n\t\t\t}\n\n\t\t\tthis.#spinner = spinner;\n\t\t} else if (!isUnicodeSupported()) {\n\t\t\tthis.#spinner = cliSpinners.line;\n\t\t} else if (spinner === undefined) {\n\t\t\t// Set default spinner\n\t\t\tthis.#spinner = cliSpinners.dots;\n\t\t} else if (spinner !== 'default' && cliSpinners[spinner]) {\n\t\t\tthis.#spinner = cliSpinners[spinner];\n\t\t} else {\n\t\t\tthrow new Error(`There is no built-in spinner named '${spinner}'. See https://github.com/sindresorhus/cli-spinners/blob/main/spinners.json for a full list.`);\n\t\t}\n\t}\n\n\tget text() {\n\t\treturn this.#text;\n\t}\n\n\tset text(value = '') {\n\t\tthis.#text = value;\n\t\tthis.#updateLineCount();\n\t}\n\n\tget prefixText() {\n\t\treturn this.#prefixText;\n\t}\n\n\tset prefixText(value = '') {\n\t\tthis.#prefixText = value;\n\t\tthis.#updateLineCount();\n\t}\n\n\tget suffixText() {\n\t\treturn this.#suffixText;\n\t}\n\n\tset suffixText(value = '') {\n\t\tthis.#suffixText = value;\n\t\tthis.#updateLineCount();\n\t}\n\n\tget isSpinning() {\n\t\treturn this.#id !== undefined;\n\t}\n\n\t#getFullPrefixText(prefixText = this.#prefixText, postfix = ' ') {\n\t\tif (typeof prefixText === 'string' && prefixText !== '') {\n\t\t\treturn prefixText + postfix;\n\t\t}\n\n\t\tif (typeof prefixText === 'function') {\n\t\t\treturn prefixText() + postfix;\n\t\t}\n\n\t\treturn '';\n\t}\n\n\t#getFullSuffixText(suffixText = this.#suffixText, prefix = ' ') {\n\t\tif (typeof suffixText === 'string' && suffixText !== '') {\n\t\t\treturn prefix + suffixText;\n\t\t}\n\n\t\tif (typeof suffixText === 'function') {\n\t\t\treturn prefix + suffixText();\n\t\t}\n\n\t\treturn '';\n\t}\n\n\t#updateLineCount() {\n\t\tconst columns = this.#stream.columns ?? 80;\n\t\tconst fullPrefixText = this.#getFullPrefixText(this.#prefixText, '-');\n\t\tconst fullSuffixText = this.#getFullSuffixText(this.#suffixText, '-');\n\t\tconst fullText = ' '.repeat(this.#indent) + fullPrefixText + '--' + this.#text + '--' + fullSuffixText;\n\n\t\tthis.#lineCount = 0;\n\t\tfor (const line of stripAnsi(fullText).split('\\n')) {\n\t\t\tthis.#lineCount += Math.max(1, Math.ceil(stringWidth(line, {countAnsiEscapeCodes: true}) / columns));\n\t\t}\n\t}\n\n\tget isEnabled() {\n\t\treturn this.#isEnabled && !this.#isSilent;\n\t}\n\n\tset isEnabled(value) {\n\t\tif (typeof value !== 'boolean') {\n\t\t\tthrow new TypeError('The `isEnabled` option must be a boolean');\n\t\t}\n\n\t\tthis.#isEnabled = value;\n\t}\n\n\tget isSilent() {\n\t\treturn this.#isSilent;\n\t}\n\n\tset isSilent(value) {\n\t\tif (typeof value !== 'boolean') {\n\t\t\tthrow new TypeError('The `isSilent` option must be a boolean');\n\t\t}\n\n\t\tthis.#isSilent = value;\n\t}\n\n\tframe() {\n\t\tconst {frames} = this.#spinner;\n\t\tlet frame = frames[this.#frameIndex];\n\n\t\tif (this.color) {\n\t\t\tframe = chalk[this.color](frame);\n\t\t}\n\n\t\tthis.#frameIndex = ++this.#frameIndex % frames.length;\n\t\tconst fullPrefixText = (typeof this.#prefixText === 'string' && this.#prefixText !== '') ? this.#prefixText + ' ' : '';\n\t\tconst fullText = typeof this.text === 'string' ? ' ' + this.text : '';\n\t\tconst fullSuffixText = (typeof this.#suffixText === 'string' && this.#suffixText !== '') ? ' ' + this.#suffixText : '';\n\n\t\treturn fullPrefixText + frame + fullText + fullSuffixText;\n\t}\n\n\tclear() {\n\t\tif (!this.#isEnabled || !this.#stream.isTTY) {\n\t\t\treturn this;\n\t\t}\n\n\t\tthis.#stream.cursorTo(0);\n\n\t\tfor (let index = 0; index < this.#linesToClear; index++) {\n\t\t\tif (index > 0) {\n\t\t\t\tthis.#stream.moveCursor(0, -1);\n\t\t\t}\n\n\t\t\tthis.#stream.clearLine(1);\n\t\t}\n\n\t\tif (this.#indent || this.lastIndent !== this.#indent) {\n\t\t\tthis.#stream.cursorTo(this.#indent);\n\t\t}\n\n\t\tthis.lastIndent = this.#indent;\n\t\tthis.#linesToClear = 0;\n\n\t\treturn this;\n\t}\n\n\trender() {\n\t\tif (this.#isSilent) {\n\t\t\treturn this;\n\t\t}\n\n\t\tthis.clear();\n\t\tthis.#stream.write(this.frame());\n\t\tthis.#linesToClear = this.#lineCount;\n\n\t\treturn this;\n\t}\n\n\tstart(text) {\n\t\tif (text) {\n\t\t\tthis.text = text;\n\t\t}\n\n\t\tif (this.#isSilent) {\n\t\t\treturn this;\n\t\t}\n\n\t\tif (!this.#isEnabled) {\n\t\t\tif (this.text) {\n\t\t\t\tthis.#stream.write(`- ${this.text}\\n`);\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tif (this.isSpinning) {\n\t\t\treturn this;\n\t\t}\n\n\t\tif (this.#options.hideCursor) {\n\t\t\tcliCursor.hide(this.#stream);\n\t\t}\n\n\t\tif (this.#options.discardStdin && process.stdin.isTTY) {\n\t\t\tthis.#isDiscardingStdin = true;\n\t\t\tstdinDiscarder.start();\n\t\t}\n\n\t\tthis.render();\n\t\tthis.#id = setInterval(this.render.bind(this), this.interval);\n\n\t\treturn this;\n\t}\n\n\tstop() {\n\t\tif (!this.#isEnabled) {\n\t\t\treturn this;\n\t\t}\n\n\t\tclearInterval(this.#id);\n\t\tthis.#id = undefined;\n\t\tthis.#frameIndex = 0;\n\t\tthis.clear();\n\t\tif (this.#options.hideCursor) {\n\t\t\tcliCursor.show(this.#stream);\n\t\t}\n\n\t\tif (this.#options.discardStdin && process.stdin.isTTY && this.#isDiscardingStdin) {\n\t\t\tstdinDiscarder.stop();\n\t\t\tthis.#isDiscardingStdin = false;\n\t\t}\n\n\t\treturn this;\n\t}\n\n\tsucceed(text) {\n\t\treturn this.stopAndPersist({symbol: logSymbols.success, text});\n\t}\n\n\tfail(text) {\n\t\treturn this.stopAndPersist({symbol: logSymbols.error, text});\n\t}\n\n\twarn(text) {\n\t\treturn this.stopAndPersist({symbol: logSymbols.warning, text});\n\t}\n\n\tinfo(text) {\n\t\treturn this.stopAndPersist({symbol: logSymbols.info, text});\n\t}\n\n\tstopAndPersist(options = {}) {\n\t\tif (this.#isSilent) {\n\t\t\treturn this;\n\t\t}\n\n\t\tconst prefixText = options.prefixText ?? this.#prefixText;\n\t\tconst fullPrefixText = this.#getFullPrefixText(prefixText, ' ');\n\n\t\tconst symbolText = options.symbol ?? ' ';\n\n\t\tconst text = options.text ?? this.text;\n\t\tconst fullText = (typeof text === 'string') ? ' ' + text : '';\n\n\t\tconst suffixText = options.suffixText ?? this.#suffixText;\n\t\tconst fullSuffixText = this.#getFullSuffixText(suffixText, ' ');\n\n\t\tconst textToWrite = fullPrefixText + symbolText + fullText + fullSuffixText + '\\n';\n\n\t\tthis.stop();\n\t\tthis.#stream.write(textToWrite);\n\n\t\treturn this;\n\t}\n}\n\nexport default function ora(options) {\n\treturn new Ora(options);\n}\n\nexport async function oraPromise(action, options) {\n\tconst actionIsFunction = typeof action === 'function';\n\tconst actionIsPromise = typeof action.then === 'function';\n\n\tif (!actionIsFunction && !actionIsPromise) {\n\t\tthrow new TypeError('Parameter `action` must be a Function or a Promise');\n\t}\n\n\tconst {successText, failText} = typeof options === 'object'\n\t\t? options\n\t\t: {successText: undefined, failText: undefined};\n\n\tconst spinner = ora(options).start();\n\n\ttry {\n\t\tconst promise = actionIsFunction ? action(spinner) : action;\n\t\tconst result = await promise;\n\n\t\tspinner.succeed(\n\t\t\tsuccessText === undefined\n\t\t\t\t? undefined\n\t\t\t\t: (typeof successText === 'string' ? successText : successText(result)),\n\t\t);\n\n\t\treturn result;\n\t} catch (error) {\n\t\tspinner.fail(\n\t\t\tfailText === undefined\n\t\t\t\t? undefined\n\t\t\t\t: (typeof failText === 'string' ? failText : failText(error)),\n\t\t);\n\n\t\tthrow error;\n\t}\n}\n\nexport {default as spinners} from 'cli-spinners';\n", "import process from 'node:process';\nimport restoreCursor from 'restore-cursor';\n\nlet isHidden = false;\n\nconst cliCursor = {};\n\ncliCursor.show = (writableStream = process.stderr) => {\n\tif (!writableStream.isTTY) {\n\t\treturn;\n\t}\n\n\tisHidden = false;\n\twritableStream.write('\\u001B[?25h');\n};\n\ncliCursor.hide = (writableStream = process.stderr) => {\n\tif (!writableStream.isTTY) {\n\t\treturn;\n\t}\n\n\trestoreCursor();\n\tisHidden = true;\n\twritableStream.write('\\u001B[?25l');\n};\n\ncliCursor.toggle = (force, writableStream) => {\n\tif (force !== undefined) {\n\t\tisHidden = force;\n\t}\n\n\tif (isHidden) {\n\t\tcliCursor.show(writableStream);\n\t} else {\n\t\tcliCursor.hide(writableStream);\n\t}\n};\n\nexport default cliCursor;\n", "import process from 'node:process';\nimport onetime from 'onetime';\nimport signalExit from 'signal-exit';\n\nconst restoreCursor = onetime(() => {\n\tsignalExit(() => {\n\t\tprocess.stderr.write('\\u001B[?25h');\n\t}, {alwaysLast: true});\n});\n\nexport default restoreCursor;\n", "import chalk from 'chalk';\nimport isUnicodeSupported from 'is-unicode-supported';\n\nconst main = {\n\tinfo: chalk.blue('\u2139'),\n\tsuccess: chalk.green('\u2714'),\n\twarning: chalk.yellow('\u26A0'),\n\terror: chalk.red('\u2716'),\n};\n\nconst fallback = {\n\tinfo: chalk.blue('i'),\n\tsuccess: chalk.green('\u221A'),\n\twarning: chalk.yellow('\u203C'),\n\terror: chalk.red('\u00D7'),\n};\n\nconst logSymbols = isUnicodeSupported() ? main : fallback;\n\nexport default logSymbols;\n", "import process from 'node:process';\n\nexport default function isUnicodeSupported() {\n\tif (process.platform !== 'win32') {\n\t\treturn process.env.TERM !== 'linux'; // Linux console (kernel)\n\t}\n\n\treturn Boolean(process.env.CI)\n\t\t|| Boolean(process.env.WT_SESSION) // Windows Terminal\n\t\t|| Boolean(process.env.TERMINUS_SUBLIME) // Terminus (<0.2.27)\n\t\t|| process.env.ConEmuTask === '{cmd::Cmder}' // ConEmu and cmder\n\t\t|| process.env.TERM_PROGRAM === 'Terminus-Sublime'\n\t\t|| process.env.TERM_PROGRAM === 'vscode'\n\t\t|| process.env.TERM === 'xterm-256color'\n\t\t|| process.env.TERM === 'alacritty'\n\t\t|| process.env.TERMINAL_EMULATOR === 'JetBrains-JediTerm';\n}\n", "import ansiRegex from 'ansi-regex';\n\nconst regex = ansiRegex();\n\nexport default function stripAnsi(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError(`Expected a \\`string\\`, got \\`${typeof string}\\``);\n\t}\n\n\t// Even though the regex is global, we don't need to reset the `.lastIndex`\n\t// because unlike `.exec()` and `.test()`, `.replace()` does it automatically\n\t// and doing it manually has a performance penalty.\n\treturn string.replace(regex, '');\n}\n", "export default function ansiRegex({onlyFirst = false} = {}) {\n\tconst pattern = [\n\t    '[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?\\\\u0007)',\n\t\t'(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-ntqry=><~]))'\n\t].join('|');\n\n\treturn new RegExp(pattern, onlyFirst ? undefined : 'g');\n}\n", "import stripAnsi from 'strip-ansi';\nimport {eastAsianWidth} from 'get-east-asian-width';\nimport emojiRegex from 'emoji-regex';\n\nconst segmenter = new Intl.Segmenter();\n\nexport default function stringWidth(string, options = {}) {\n\tif (typeof string !== 'string' || string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tconst {\n\t\tambiguousIsNarrow = true,\n\t\tcountAnsiEscapeCodes = false,\n\t} = options;\n\n\tif (!countAnsiEscapeCodes) {\n\t\tstring = stripAnsi(string);\n\t}\n\n\tif (string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tlet width = 0;\n\tconst eastAsianWidthOptions = {ambiguousAsWide: !ambiguousIsNarrow};\n\n\tfor (const {segment: character} of segmenter.segment(string)) {\n\t\tconst codePoint = character.codePointAt(0);\n\n\t\t// Ignore control characters\n\t\tif (codePoint <= 0x1F || (codePoint >= 0x7F && codePoint <= 0x9F)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore combining characters\n\t\tif (codePoint >= 0x3_00 && codePoint <= 0x3_6F) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (emojiRegex().test(character)) {\n\t\t\twidth += 2;\n\t\t\tcontinue;\n\t\t}\n\n\t\twidth += eastAsianWidth(codePoint, eastAsianWidthOptions);\n\t}\n\n\treturn width;\n}\n", "import {getCategory, isAmbiguous, isFullWidth, isWide} from './lookup.js';\n\nfunction validate(codePoint) {\n\tif (!Number.isSafeInteger(codePoint)) {\n\t\tthrow new TypeError(`Expected a code point, got \\`${typeof codePoint}\\`.`);\n\t}\n}\n\nexport function eastAsianWidthType(codePoint) {\n\tvalidate(codePoint);\n\n\treturn getCategory(codePoint);\n}\n\nexport function eastAsianWidth(codePoint, {ambiguousAsWide = false} = {}) {\n\tvalidate(codePoint);\n\n\tif (\n\t\tisFullWidth(codePoint)\n\t\t|| isWide(codePoint)\n\t\t|| (ambiguousAsWide && isAmbiguous(codePoint))\n\t) {\n\t\treturn 2;\n\t}\n\n\treturn 1;\n}\n\n// For Prettier. This doesn't count \"ambiguous\" characters or check for valid input.\n// https://github.com/sindresorhus/get-east-asian-width/pull/6\nexport const _isNarrowWidth = codePoint => !(isFullWidth(codePoint) || isWide(codePoint));\n", "// Generated code.\n\nfunction isAmbiguous(x) {\n\treturn x === 0xA1\n\t\t|| x === 0xA4\n\t\t|| x === 0xA7\n\t\t|| x === 0xA8\n\t\t|| x === 0xAA\n\t\t|| x === 0xAD\n\t\t|| x === 0xAE\n\t\t|| x >= 0xB0 && x <= 0xB4\n\t\t|| x >= 0xB6 && x <= 0xBA\n\t\t|| x >= 0xBC && x <= 0xBF\n\t\t|| x === 0xC6\n\t\t|| x === 0xD0\n\t\t|| x === 0xD7\n\t\t|| x === 0xD8\n\t\t|| x >= 0xDE && x <= 0xE1\n\t\t|| x === 0xE6\n\t\t|| x >= 0xE8 && x <= 0xEA\n\t\t|| x === 0xEC\n\t\t|| x === 0xED\n\t\t|| x === 0xF0\n\t\t|| x === 0xF2\n\t\t|| x === 0xF3\n\t\t|| x >= 0xF7 && x <= 0xFA\n\t\t|| x === 0xFC\n\t\t|| x === 0xFE\n\t\t|| x === 0x101\n\t\t|| x === 0x111\n\t\t|| x === 0x113\n\t\t|| x === 0x11B\n\t\t|| x === 0x126\n\t\t|| x === 0x127\n\t\t|| x === 0x12B\n\t\t|| x >= 0x131 && x <= 0x133\n\t\t|| x === 0x138\n\t\t|| x >= 0x13F && x <= 0x142\n\t\t|| x === 0x144\n\t\t|| x >= 0x148 && x <= 0x14B\n\t\t|| x === 0x14D\n\t\t|| x === 0x152\n\t\t|| x === 0x153\n\t\t|| x === 0x166\n\t\t|| x === 0x167\n\t\t|| x === 0x16B\n\t\t|| x === 0x1CE\n\t\t|| x === 0x1D0\n\t\t|| x === 0x1D2\n\t\t|| x === 0x1D4\n\t\t|| x === 0x1D6\n\t\t|| x === 0x1D8\n\t\t|| x === 0x1DA\n\t\t|| x === 0x1DC\n\t\t|| x === 0x251\n\t\t|| x === 0x261\n\t\t|| x === 0x2C4\n\t\t|| x === 0x2C7\n\t\t|| x >= 0x2C9 && x <= 0x2CB\n\t\t|| x === 0x2CD\n\t\t|| x === 0x2D0\n\t\t|| x >= 0x2D8 && x <= 0x2DB\n\t\t|| x === 0x2DD\n\t\t|| x === 0x2DF\n\t\t|| x >= 0x300 && x <= 0x36F\n\t\t|| x >= 0x391 && x <= 0x3A1\n\t\t|| x >= 0x3A3 && x <= 0x3A9\n\t\t|| x >= 0x3B1 && x <= 0x3C1\n\t\t|| x >= 0x3C3 && x <= 0x3C9\n\t\t|| x === 0x401\n\t\t|| x >= 0x410 && x <= 0x44F\n\t\t|| x === 0x451\n\t\t|| x === 0x2010\n\t\t|| x >= 0x2013 && x <= 0x2016\n\t\t|| x === 0x2018\n\t\t|| x === 0x2019\n\t\t|| x === 0x201C\n\t\t|| x === 0x201D\n\t\t|| x >= 0x2020 && x <= 0x2022\n\t\t|| x >= 0x2024 && x <= 0x2027\n\t\t|| x === 0x2030\n\t\t|| x === 0x2032\n\t\t|| x === 0x2033\n\t\t|| x === 0x2035\n\t\t|| x === 0x203B\n\t\t|| x === 0x203E\n\t\t|| x === 0x2074\n\t\t|| x === 0x207F\n\t\t|| x >= 0x2081 && x <= 0x2084\n\t\t|| x === 0x20AC\n\t\t|| x === 0x2103\n\t\t|| x === 0x2105\n\t\t|| x === 0x2109\n\t\t|| x === 0x2113\n\t\t|| x === 0x2116\n\t\t|| x === 0x2121\n\t\t|| x === 0x2122\n\t\t|| x === 0x2126\n\t\t|| x === 0x212B\n\t\t|| x === 0x2153\n\t\t|| x === 0x2154\n\t\t|| x >= 0x215B && x <= 0x215E\n\t\t|| x >= 0x2160 && x <= 0x216B\n\t\t|| x >= 0x2170 && x <= 0x2179\n\t\t|| x === 0x2189\n\t\t|| x >= 0x2190 && x <= 0x2199\n\t\t|| x === 0x21B8\n\t\t|| x === 0x21B9\n\t\t|| x === 0x21D2\n\t\t|| x === 0x21D4\n\t\t|| x === 0x21E7\n\t\t|| x === 0x2200\n\t\t|| x === 0x2202\n\t\t|| x === 0x2203\n\t\t|| x === 0x2207\n\t\t|| x === 0x2208\n\t\t|| x === 0x220B\n\t\t|| x === 0x220F\n\t\t|| x === 0x2211\n\t\t|| x === 0x2215\n\t\t|| x === 0x221A\n\t\t|| x >= 0x221D && x <= 0x2220\n\t\t|| x === 0x2223\n\t\t|| x === 0x2225\n\t\t|| x >= 0x2227 && x <= 0x222C\n\t\t|| x === 0x222E\n\t\t|| x >= 0x2234 && x <= 0x2237\n\t\t|| x === 0x223C\n\t\t|| x === 0x223D\n\t\t|| x === 0x2248\n\t\t|| x === 0x224C\n\t\t|| x === 0x2252\n\t\t|| x === 0x2260\n\t\t|| x === 0x2261\n\t\t|| x >= 0x2264 && x <= 0x2267\n\t\t|| x === 0x226A\n\t\t|| x === 0x226B\n\t\t|| x === 0x226E\n\t\t|| x === 0x226F\n\t\t|| x === 0x2282\n\t\t|| x === 0x2283\n\t\t|| x === 0x2286\n\t\t|| x === 0x2287\n\t\t|| x === 0x2295\n\t\t|| x === 0x2299\n\t\t|| x === 0x22A5\n\t\t|| x === 0x22BF\n\t\t|| x === 0x2312\n\t\t|| x >= 0x2460 && x <= 0x24E9\n\t\t|| x >= 0x24EB && x <= 0x254B\n\t\t|| x >= 0x2550 && x <= 0x2573\n\t\t|| x >= 0x2580 && x <= 0x258F\n\t\t|| x >= 0x2592 && x <= 0x2595\n\t\t|| x === 0x25A0\n\t\t|| x === 0x25A1\n\t\t|| x >= 0x25A3 && x <= 0x25A9\n\t\t|| x === 0x25B2\n\t\t|| x === 0x25B3\n\t\t|| x === 0x25B6\n\t\t|| x === 0x25B7\n\t\t|| x === 0x25BC\n\t\t|| x === 0x25BD\n\t\t|| x === 0x25C0\n\t\t|| x === 0x25C1\n\t\t|| x >= 0x25C6 && x <= 0x25C8\n\t\t|| x === 0x25CB\n\t\t|| x >= 0x25CE && x <= 0x25D1\n\t\t|| x >= 0x25E2 && x <= 0x25E5\n\t\t|| x === 0x25EF\n\t\t|| x === 0x2605\n\t\t|| x === 0x2606\n\t\t|| x === 0x2609\n\t\t|| x === 0x260E\n\t\t|| x === 0x260F\n\t\t|| x === 0x261C\n\t\t|| x === 0x261E\n\t\t|| x === 0x2640\n\t\t|| x === 0x2642\n\t\t|| x === 0x2660\n\t\t|| x === 0x2661\n\t\t|| x >= 0x2663 && x <= 0x2665\n\t\t|| x >= 0x2667 && x <= 0x266A\n\t\t|| x === 0x266C\n\t\t|| x === 0x266D\n\t\t|| x === 0x266F\n\t\t|| x === 0x269E\n\t\t|| x === 0x269F\n\t\t|| x === 0x26BF\n\t\t|| x >= 0x26C6 && x <= 0x26CD\n\t\t|| x >= 0x26CF && x <= 0x26D3\n\t\t|| x >= 0x26D5 && x <= 0x26E1\n\t\t|| x === 0x26E3\n\t\t|| x === 0x26E8\n\t\t|| x === 0x26E9\n\t\t|| x >= 0x26EB && x <= 0x26F1\n\t\t|| x === 0x26F4\n\t\t|| x >= 0x26F6 && x <= 0x26F9\n\t\t|| x === 0x26FB\n\t\t|| x === 0x26FC\n\t\t|| x === 0x26FE\n\t\t|| x === 0x26FF\n\t\t|| x === 0x273D\n\t\t|| x >= 0x2776 && x <= 0x277F\n\t\t|| x >= 0x2B56 && x <= 0x2B59\n\t\t|| x >= 0x3248 && x <= 0x324F\n\t\t|| x >= 0xE000 && x <= 0xF8FF\n\t\t|| x >= 0xFE00 && x <= 0xFE0F\n\t\t|| x === 0xFFFD\n\t\t|| x >= 0x1F100 && x <= 0x1F10A\n\t\t|| x >= 0x1F110 && x <= 0x1F12D\n\t\t|| x >= 0x1F130 && x <= 0x1F169\n\t\t|| x >= 0x1F170 && x <= 0x1F18D\n\t\t|| x === 0x1F18F\n\t\t|| x === 0x1F190\n\t\t|| x >= 0x1F19B && x <= 0x1F1AC\n\t\t|| x >= 0xE0100 && x <= 0xE01EF\n\t\t|| x >= 0xF0000 && x <= 0xFFFFD\n\t\t|| x >= 0x100000 && x <= 0x10FFFD;\n}\n\nfunction isFullWidth(x) {\n\treturn x === 0x3000\n\t\t|| x >= 0xFF01 && x <= 0xFF60\n\t\t|| x >= 0xFFE0 && x <= 0xFFE6;\n}\n\nfunction isWide(x) {\n\treturn x >= 0x1100 && x <= 0x115F\n\t\t|| x === 0x231A\n\t\t|| x === 0x231B\n\t\t|| x === 0x2329\n\t\t|| x === 0x232A\n\t\t|| x >= 0x23E9 && x <= 0x23EC\n\t\t|| x === 0x23F0\n\t\t|| x === 0x23F3\n\t\t|| x === 0x25FD\n\t\t|| x === 0x25FE\n\t\t|| x === 0x2614\n\t\t|| x === 0x2615\n\t\t|| x >= 0x2648 && x <= 0x2653\n\t\t|| x === 0x267F\n\t\t|| x === 0x2693\n\t\t|| x === 0x26A1\n\t\t|| x === 0x26AA\n\t\t|| x === 0x26AB\n\t\t|| x === 0x26BD\n\t\t|| x === 0x26BE\n\t\t|| x === 0x26C4\n\t\t|| x === 0x26C5\n\t\t|| x === 0x26CE\n\t\t|| x === 0x26D4\n\t\t|| x === 0x26EA\n\t\t|| x === 0x26F2\n\t\t|| x === 0x26F3\n\t\t|| x === 0x26F5\n\t\t|| x === 0x26FA\n\t\t|| x === 0x26FD\n\t\t|| x === 0x2705\n\t\t|| x === 0x270A\n\t\t|| x === 0x270B\n\t\t|| x === 0x2728\n\t\t|| x === 0x274C\n\t\t|| x === 0x274E\n\t\t|| x >= 0x2753 && x <= 0x2755\n\t\t|| x === 0x2757\n\t\t|| x >= 0x2795 && x <= 0x2797\n\t\t|| x === 0x27B0\n\t\t|| x === 0x27BF\n\t\t|| x === 0x2B1B\n\t\t|| x === 0x2B1C\n\t\t|| x === 0x2B50\n\t\t|| x === 0x2B55\n\t\t|| x >= 0x2E80 && x <= 0x2E99\n\t\t|| x >= 0x2E9B && x <= 0x2EF3\n\t\t|| x >= 0x2F00 && x <= 0x2FD5\n\t\t|| x >= 0x2FF0 && x <= 0x2FFF\n\t\t|| x >= 0x3001 && x <= 0x303E\n\t\t|| x >= 0x3041 && x <= 0x3096\n\t\t|| x >= 0x3099 && x <= 0x30FF\n\t\t|| x >= 0x3105 && x <= 0x312F\n\t\t|| x >= 0x3131 && x <= 0x318E\n\t\t|| x >= 0x3190 && x <= 0x31E3\n\t\t|| x >= 0x31EF && x <= 0x321E\n\t\t|| x >= 0x3220 && x <= 0x3247\n\t\t|| x >= 0x3250 && x <= 0x4DBF\n\t\t|| x >= 0x4E00 && x <= 0xA48C\n\t\t|| x >= 0xA490 && x <= 0xA4C6\n\t\t|| x >= 0xA960 && x <= 0xA97C\n\t\t|| x >= 0xAC00 && x <= 0xD7A3\n\t\t|| x >= 0xF900 && x <= 0xFAFF\n\t\t|| x >= 0xFE10 && x <= 0xFE19\n\t\t|| x >= 0xFE30 && x <= 0xFE52\n\t\t|| x >= 0xFE54 && x <= 0xFE66\n\t\t|| x >= 0xFE68 && x <= 0xFE6B\n\t\t|| x >= 0x16FE0 && x <= 0x16FE4\n\t\t|| x === 0x16FF0\n\t\t|| x === 0x16FF1\n\t\t|| x >= 0x17000 && x <= 0x187F7\n\t\t|| x >= 0x18800 && x <= 0x18CD5\n\t\t|| x >= 0x18D00 && x <= 0x18D08\n\t\t|| x >= 0x1AFF0 && x <= 0x1AFF3\n\t\t|| x >= 0x1AFF5 && x <= 0x1AFFB\n\t\t|| x === 0x1AFFD\n\t\t|| x === 0x1AFFE\n\t\t|| x >= 0x1B000 && x <= 0x1B122\n\t\t|| x === 0x1B132\n\t\t|| x >= 0x1B150 && x <= 0x1B152\n\t\t|| x === 0x1B155\n\t\t|| x >= 0x1B164 && x <= 0x1B167\n\t\t|| x >= 0x1B170 && x <= 0x1B2FB\n\t\t|| x === 0x1F004\n\t\t|| x === 0x1F0CF\n\t\t|| x === 0x1F18E\n\t\t|| x >= 0x1F191 && x <= 0x1F19A\n\t\t|| x >= 0x1F200 && x <= 0x1F202\n\t\t|| x >= 0x1F210 && x <= 0x1F23B\n\t\t|| x >= 0x1F240 && x <= 0x1F248\n\t\t|| x === 0x1F250\n\t\t|| x === 0x1F251\n\t\t|| x >= 0x1F260 && x <= 0x1F265\n\t\t|| x >= 0x1F300 && x <= 0x1F320\n\t\t|| x >= 0x1F32D && x <= 0x1F335\n\t\t|| x >= 0x1F337 && x <= 0x1F37C\n\t\t|| x >= 0x1F37E && x <= 0x1F393\n\t\t|| x >= 0x1F3A0 && x <= 0x1F3CA\n\t\t|| x >= 0x1F3CF && x <= 0x1F3D3\n\t\t|| x >= 0x1F3E0 && x <= 0x1F3F0\n\t\t|| x === 0x1F3F4\n\t\t|| x >= 0x1F3F8 && x <= 0x1F43E\n\t\t|| x === 0x1F440\n\t\t|| x >= 0x1F442 && x <= 0x1F4FC\n\t\t|| x >= 0x1F4FF && x <= 0x1F53D\n\t\t|| x >= 0x1F54B && x <= 0x1F54E\n\t\t|| x >= 0x1F550 && x <= 0x1F567\n\t\t|| x === 0x1F57A\n\t\t|| x === 0x1F595\n\t\t|| x === 0x1F596\n\t\t|| x === 0x1F5A4\n\t\t|| x >= 0x1F5FB && x <= 0x1F64F\n\t\t|| x >= 0x1F680 && x <= 0x1F6C5\n\t\t|| x === 0x1F6CC\n\t\t|| x >= 0x1F6D0 && x <= 0x1F6D2\n\t\t|| x >= 0x1F6D5 && x <= 0x1F6D7\n\t\t|| x >= 0x1F6DC && x <= 0x1F6DF\n\t\t|| x === 0x1F6EB\n\t\t|| x === 0x1F6EC\n\t\t|| x >= 0x1F6F4 && x <= 0x1F6FC\n\t\t|| x >= 0x1F7E0 && x <= 0x1F7EB\n\t\t|| x === 0x1F7F0\n\t\t|| x >= 0x1F90C && x <= 0x1F93A\n\t\t|| x >= 0x1F93C && x <= 0x1F945\n\t\t|| x >= 0x1F947 && x <= 0x1F9FF\n\t\t|| x >= 0x1FA70 && x <= 0x1FA7C\n\t\t|| x >= 0x1FA80 && x <= 0x1FA88\n\t\t|| x >= 0x1FA90 && x <= 0x1FABD\n\t\t|| x >= 0x1FABF && x <= 0x1FAC5\n\t\t|| x >= 0x1FACE && x <= 0x1FADB\n\t\t|| x >= 0x1FAE0 && x <= 0x1FAE8\n\t\t|| x >= 0x1FAF0 && x <= 0x1FAF8\n\t\t|| x >= 0x20000 && x <= 0x2FFFD\n\t\t|| x >= 0x30000 && x <= 0x3FFFD;\n}\n\nfunction getCategory(x) {\n\tif (isAmbiguous(x)) return 'ambiguous';\n\n\tif (isFullWidth(x)) return 'fullwidth';\n\n\tif (\n\t\tx === 0x20A9\n\t\t|| x >= 0xFF61 && x <= 0xFFBE\n\t\t|| x >= 0xFFC2 && x <= 0xFFC7\n\t\t|| x >= 0xFFCA && x <= 0xFFCF\n\t\t|| x >= 0xFFD2 && x <= 0xFFD7\n\t\t|| x >= 0xFFDA && x <= 0xFFDC\n\t\t|| x >= 0xFFE8 && x <= 0xFFEE\n\t) {\n\t\treturn 'halfwidth';\n\t}\n\n\tif (\n\t\tx >= 0x20 && x <= 0x7E\n\t\t|| x === 0xA2\n\t\t|| x === 0xA3\n\t\t|| x === 0xA5\n\t\t|| x === 0xA6\n\t\t|| x === 0xAC\n\t\t|| x === 0xAF\n\t\t|| x >= 0x27E6 && x <= 0x27ED\n\t\t|| x === 0x2985\n\t\t|| x === 0x2986\n\t) {\n\t\treturn 'narrow';\n\t}\n\n\tif (isWide(x)) return 'wide';\n\n\treturn 'neutral';\n}\n\nexport {isAmbiguous, isFullWidth, isWide, getCategory};\n", "export default function isInteractive({stream = process.stdout} = {}) {\n\treturn Boolean(\n\t\tstream && stream.isTTY &&\n\t\tprocess.env.TERM !== 'dumb' &&\n\t\t!('CI' in process.env)\n\t);\n}\n", "import process from 'node:process';\n\nconst ASCII_ETX_CODE = 0x03; // Ctrl+C emits this code\n\nclass StdinDiscarder {\n\t#activeCount = 0;\n\n\tstart() {\n\t\tthis.#activeCount++;\n\n\t\tif (this.#activeCount === 1) {\n\t\t\tthis.#realStart();\n\t\t}\n\t}\n\n\tstop() {\n\t\tif (this.#activeCount <= 0) {\n\t\t\tthrow new Error('`stop` called more times than `start`');\n\t\t}\n\n\t\tthis.#activeCount--;\n\n\t\tif (this.#activeCount === 0) {\n\t\t\tthis.#realStop();\n\t\t}\n\t}\n\n\t#realStart() {\n\t\t// No known way to make it work reliably on Windows.\n\t\tif (process.platform === 'win32' || !process.stdin.isTTY) {\n\t\t\treturn;\n\t\t}\n\n\t\tprocess.stdin.setRawMode(true);\n\t\tprocess.stdin.on('data', this.#handleInput);\n\t\tprocess.stdin.resume();\n\t}\n\n\t#realStop() {\n\t\tif (!process.stdin.isTTY) {\n\t\t\treturn;\n\t\t}\n\n\t\tprocess.stdin.off('data', this.#handleInput);\n\t\tprocess.stdin.pause();\n\t\tprocess.stdin.setRawMode(false);\n\t}\n\n\t#handleInput(chunk) {\n\t\t// Allow Ctrl+C to gracefully exit.\n\t\tif (chunk[0] === ASCII_ETX_CODE) {\n\t\t\tprocess.emit('SIGINT');\n\t\t}\n\t}\n}\n\nconst stdinDiscarder = new StdinDiscarder();\n\nexport default stdinDiscarder;\n", "import type { Clerk } from \"@clerk/clerk-js\";\r\nimport type { ApiResponseBase, UserConfig } from \"../types\";\r\nimport { fetch, type RequestInit } from \"undici\";\r\nimport { apiResponseBaseSchema } from \"../schema\";\r\nimport { ResocketError } from \"../errors/RescoketError\";\r\nimport { API_BASE } from \"../constants\";\r\n\r\ninterface UserConfigWithClerk {\r\n  config: UserConfig;\r\n  clerk: Clerk;\r\n}\r\n\r\ninterface FetchApi {\r\n  user: UserConfigWithClerk;\r\n  options: RequestInit;\r\n}\r\n//api base\r\nconst API = API_BASE + \"/api\";\r\n\r\nexport const apiFetch = async <T = unknown>(\r\n  route: string,\r\n  { user, options }: FetchApi\r\n): Promise<T> => {\r\n  const clerkAuthToken = await user.clerk.session?.getToken();\r\n\r\n  if (!clerkAuthToken) throw new Error(`session expired! please login again`);\r\n\r\n  const res = await fetch(`${API}${route}`, {\r\n    headers: {\r\n      \"Content-Type\": \"application/json\",\r\n      Authorization: \"Bearer \" + clerkAuthToken,\r\n      ...options.headers,\r\n    },\r\n    ...options,\r\n  });\r\n\r\n  //Note: our apis are designed to give explicit errors. so it should only be notokay incase of internal server errors\r\n  if (res.ok) {\r\n    const json = (await res.json()) as ApiResponseBase;\r\n\r\n    const baseRes = apiResponseBaseSchema.parse(json);\r\n\r\n    if (\"error\" in baseRes) throw new ResocketError(baseRes.error!);\r\n\r\n    return baseRes.data as unknown as T;\r\n  } else {\r\n    throw new Error(`Something went wrong, Internal server error`);\r\n  }\r\n};\r\n", "import type { ErrorContext } from \"../types\";\r\nimport { CustomError } from \"./BaseError\";\r\n\r\nexport class ResocketError extends CustomError {\r\n  constructor(message: ErrorContext) {\r\n    super(message);\r\n    this.name = \"ResocketError\";\r\n  }\r\n\r\n  status: number = 1;\r\n}\r\n", "import type * as zod from 'zod';\n\nexport function isZodErrorLike(err: unknown): err is zod.ZodError {\n  return (\n    err instanceof Error &&\n    err.name === 'ZodError' &&\n    'issues' in err &&\n    Array.isArray(err.issues)\n  );\n}\n", "import { isZodErrorLike } from './isZodErrorLike.ts';\nimport type * as zod from 'zod';\n\n// make zod-validation-error compatible with\n// earlier to es2022 typescript configurations\n// @see https://github.com/causaly/zod-validation-error/issues/226\nexport interface ErrorOptions {\n  cause?: unknown;\n}\n\nexport class ValidationError extends Error {\n  name: 'ZodValidationError';\n  details: Array<zod.ZodIssue>;\n\n  constructor(message?: string, options?: ErrorOptions) {\n    super(message, options);\n    this.name = 'ZodValidationError';\n    this.details = getIssuesFromErrorOptions(options);\n  }\n\n  toString(): string {\n    return this.message;\n  }\n}\n\nfunction getIssuesFromErrorOptions(\n  options?: ErrorOptions\n): Array<zod.ZodIssue> {\n  if (options) {\n    const cause = options.cause;\n\n    if (isZodErrorLike(cause)) {\n      return cause.issues;\n    }\n  }\n\n  return [];\n}\n", "import { ValidationError } from './ValidationError.ts';\n\nexport function isValidationError(err: unknown): err is ValidationError {\n  return err instanceof ValidationError;\n}\n", "import type { ValidationError } from './ValidationError.ts';\n\nexport function isValidationErrorLike(err: unknown): err is ValidationError {\n  return err instanceof Error && err.name === 'ZodValidationError';\n}\n", "import * as zod from 'zod';\n\nimport {\n  ISSUE_SEPARATOR,\n  PREFIX,\n  PREFIX_SEPARATOR,\n  UNION_SEPARATOR,\n} from './config.ts';\nimport { prefixMessage } from './prefixMessage.ts';\nimport { joinPath } from './utils/joinPath.ts';\nimport { isNonEmptyArray } from './utils/NonEmptyArray.ts';\nimport { ValidationError } from './ValidationError.ts';\n\nexport type ZodIssue = zod.ZodIssue;\n\nexport function getMessageFromZodIssue(props: {\n  issue: ZodIssue;\n  issueSeparator: string;\n  unionSeparator: string;\n  includePath: boolean;\n}): string {\n  const { issue, issueSeparator, unionSeparator, includePath } = props;\n\n  if (issue.code === 'invalid_union') {\n    return issue.unionErrors\n      .reduce<string[]>((acc, zodError) => {\n        const newIssues = zodError.issues\n          .map((issue) =>\n            getMessageFromZodIssue({\n              issue,\n              issueSeparator,\n              unionSeparator,\n              includePath,\n            })\n          )\n          .join(issueSeparator);\n\n        if (!acc.includes(newIssues)) {\n          acc.push(newIssues);\n        }\n\n        return acc;\n      }, [])\n      .join(unionSeparator);\n  }\n\n  if (issue.code === 'invalid_arguments') {\n    return [\n      issue.message,\n      ...issue.argumentsError.issues.map((issue) =>\n        getMessageFromZodIssue({\n          issue,\n          issueSeparator,\n          unionSeparator,\n          includePath,\n        })\n      ),\n    ].join(issueSeparator);\n  }\n\n  if (issue.code === 'invalid_return_type') {\n    return [\n      issue.message,\n      ...issue.returnTypeError.issues.map((issue) =>\n        getMessageFromZodIssue({\n          issue,\n          issueSeparator,\n          unionSeparator,\n          includePath,\n        })\n      ),\n    ].join(issueSeparator);\n  }\n\n  if (includePath && isNonEmptyArray(issue.path)) {\n    // handle array indices\n    if (issue.path.length === 1) {\n      const identifier = issue.path[0];\n\n      if (typeof identifier === 'number') {\n        return `${issue.message} at index ${identifier}`;\n      }\n    }\n\n    return `${issue.message} at \"${joinPath(issue.path)}\"`;\n  }\n\n  return issue.message;\n}\n\nexport type FromZodIssueOptions = {\n  issueSeparator?: string;\n  unionSeparator?: string;\n  prefix?: string | null;\n  prefixSeparator?: string;\n  includePath?: boolean;\n};\n\nexport function fromZodIssue(\n  issue: ZodIssue,\n  options: FromZodIssueOptions = {}\n): ValidationError {\n  const {\n    issueSeparator = ISSUE_SEPARATOR,\n    unionSeparator = UNION_SEPARATOR,\n    prefixSeparator = PREFIX_SEPARATOR,\n    prefix = PREFIX,\n    includePath = true,\n  } = options;\n\n  const reason = getMessageFromZodIssue({\n    issue,\n    issueSeparator,\n    unionSeparator,\n    includePath,\n  });\n  const message = prefixMessage(reason, prefix, prefixSeparator);\n\n  return new ValidationError(message, { cause: new zod.ZodError([issue]) });\n}\n", "export const ISSUE_SEPARATOR = '; ';\nexport const MAX_ISSUES_IN_MESSAGE = 99; // I've got 99 problems but the b$tch ain't one\nexport const PREFIX = 'Validation error';\nexport const PREFIX_SEPARATOR = ': ';\nexport const UNION_SEPARATOR = ', or ';\n", "import { PREFIX } from './config.ts';\n\nexport function prefixMessage(\n  message: string,\n  prefix: string | null,\n  prefixSeparator: string\n): string {\n  if (prefix !== null) {\n    if (message.length > 0) {\n      return [prefix, message].join(prefixSeparator);\n    }\n\n    return prefix;\n  }\n\n  if (message.length > 0) {\n    return message;\n  }\n\n  // if both reason and prefix are empty, return default prefix\n  // to avoid having an empty error message\n  return PREFIX;\n}\n", "import type { NonEmptyArray } from './NonEmptyArray.ts';\n\n/**\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Lexical_grammar#identifiers\n */\nconst identifierRegex = /[$_\\p{ID_Start}][$\\u200c\\u200d\\p{ID_Continue}]*/u;\n\nexport function joinPath(path: NonEmptyArray<string | number>): string {\n  if (path.length === 1) {\n    return path[0].toString();\n  }\n\n  return path.reduce<string>((acc, item) => {\n    // handle numeric indices\n    if (typeof item === 'number') {\n      return acc + '[' + item.toString() + ']';\n    }\n\n    // handle quoted values\n    if (item.includes('\"')) {\n      return acc + '[\"' + escapeQuotes(item) + '\"]';\n    }\n\n    // handle special characters\n    if (!identifierRegex.test(item)) {\n      return acc + '[\"' + item + '\"]';\n    }\n\n    // handle normal values\n    const separator = acc.length === 0 ? '' : '.';\n    return acc + separator + item;\n  }, '');\n}\n\nfunction escapeQuotes(str: string): string {\n  return str.replace(/\"/g, '\\\\\"');\n}\n", "export type NonEmptyArray<T> = [T, ...T[]];\n\nexport function isNonEmptyArray<T>(value: T[]): value is NonEmptyArray<T> {\n  return value.length !== 0;\n}\n", "import { fromZodIssue } from './fromZodIssue.ts';\nimport type * as zod from 'zod';\n\nexport const errorMap: zod.ZodErrorMap = (issue, ctx) => {\n  const error = fromZodIssue({\n    ...issue,\n    // fallback to the default error message\n    // when issue does not have a message\n    message: issue.message ?? ctx.defaultError,\n  });\n\n  return {\n    message: error.message,\n  };\n};\n", "import {\n  ISSUE_SEPARATOR,\n  MAX_ISSUES_IN_MESSAGE,\n  PREFIX,\n  PREFIX_SEPARATOR,\n  UNION_SEPARATOR,\n} from './config.ts';\nimport { getMessageFromZodIssue } from './fromZodIssue.ts';\nimport { prefixMessage } from './prefixMessage.ts';\nimport { ValidationError } from './ValidationError.ts';\nimport { fromError } from './fromError.ts';\nimport { isZodErrorLike } from './isZodErrorLike.ts';\nimport type * as zod from 'zod';\nimport type { FromZodIssueOptions } from './fromZodIssue.ts';\n\nexport type ZodError = zod.ZodError;\n\nexport type FromZodErrorOptions = FromZodIssueOptions & {\n  maxIssuesInMessage?: number;\n};\n\nexport function fromZodError(\n  zodError: ZodError,\n  options: FromZodErrorOptions = {}\n): ValidationError {\n  // perform runtime check to ensure the input is a ZodError\n  // why? because people have been historically using this function incorrectly\n  if (!isZodErrorLike(zodError)) {\n    throw new TypeError(\n      `Invalid zodError param; expected instance of ZodError. Did you mean to use the \"${fromError.name}\" method instead?`\n    );\n  }\n\n  return fromZodErrorWithoutRuntimeCheck(zodError, options);\n}\n\nexport function fromZodErrorWithoutRuntimeCheck(\n  zodError: ZodError,\n  options: FromZodErrorOptions = {}\n): ValidationError {\n  const {\n    maxIssuesInMessage = MAX_ISSUES_IN_MESSAGE,\n    issueSeparator = ISSUE_SEPARATOR,\n    unionSeparator = UNION_SEPARATOR,\n    prefixSeparator = PREFIX_SEPARATOR,\n    prefix = PREFIX,\n    includePath = true,\n  } = options;\n\n  const zodIssues = zodError.errors;\n\n  const reason =\n    zodIssues.length === 0\n      ? zodError.message\n      : zodIssues\n          // limit max number of issues printed in the reason section\n          .slice(0, maxIssuesInMessage)\n          // format error message\n          .map((issue) =>\n            getMessageFromZodIssue({\n              issue,\n              issueSeparator,\n              unionSeparator,\n              includePath,\n            })\n          )\n          // concat as string\n          .join(issueSeparator);\n\n  const message = prefixMessage(reason, prefix, prefixSeparator);\n\n  return new ValidationError(message, { cause: zodError });\n}\n", "import { ValidationError } from './ValidationError.ts';\nimport { isZodErrorLike } from './isZodErrorLike.ts';\nimport {\n  fromZodErrorWithoutRuntimeCheck,\n  type fromZodError,\n} from './fromZodError.ts';\n\nexport const toValidationError =\n  (options: Parameters<typeof fromZodError>[1] = {}) =>\n  (err: unknown): ValidationError => {\n    if (isZodErrorLike(err)) {\n      return fromZodErrorWithoutRuntimeCheck(err, options);\n    }\n\n    if (err instanceof Error) {\n      return new ValidationError(err.message, { cause: err });\n    }\n\n    return new ValidationError('Unknown error');\n  };\n", "import { toValidationError } from './toValidationError.ts';\nimport type { FromZodErrorOptions } from './fromZodError.ts';\nimport type { ValidationError } from './ValidationError.ts';\n\n/**\n * This function is a non-curried version of `toValidationError`\n */\nexport function fromError(\n  err: unknown,\n  options: FromZodErrorOptions = {}\n): ValidationError {\n  return toValidationError(options)(err);\n}\n"],
  "mappings": "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AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;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UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACD;AAAA,MACD;AAAA,MACA,QAAU;AAAA,QACT,UAAY;AAAA,QACZ,QAAU;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACD;AAAA,MACD;AAAA,MACA,UAAY;AAAA,QACX,UAAY;AAAA,QACZ,QAAU;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACD;AAAA,MACD;AAAA,MACA,MAAQ;AAAA,QACP,UAAY;AAAA,QACZ,QAAU;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;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AAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACD;AAAA,MACD;AAAA,MACA,MAAQ;AAAA,QACP,UAAY;AAAA,QACZ,QAAU;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACD;AAAA,MACD;AAAA,MACA,QAAU;AAAA,QACT,UAAY;AAAA,QACZ,QAAU;AAAA,UACT;AAAA,UACA;AAAA,QACD;AAAA,MACD;AAAA,MACA,MAAQ;AAAA,QACP,UAAY;AAAA,QACZ,QAAU;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACD;AAAA,MACD;AAAA,M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AA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACD;AAAA,MACD;AAAA,MACA,YAAc;AAAA,QACb,UAAY;AAAA,QACZ,QAAU;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACD;AAAA,MACD;AAAA,MACA,WAAa;AAAA,QACZ,UAAY;AAAA,QACZ,QAAU;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACD;AAAA,MACD;AAAA,MACA,eAAiB;AAAA,QAChB,UAAY;AAAA,QACZ,QAAU;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,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,KAAK;AAAA,QACL,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AAAA,QACL,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AAAA,QACL,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AAAA,QAC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AM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,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",
  "names": ["exports", "CommanderError", "InvalidArgumentError", "exports", "InvalidArgumentError", "Argument", "exports", "Help", "cmd", "a", "regex", "i", "exports", "InvalidArgumentError", "Option", "str", "exports", "a", "i", "exports", "childProcess", "path", "fs", "process", "Argument", "CommanderError", "Help", "Option", "Command", "regex", "execArgv", "signals", "i", "option", "context", "exports", "Argument", "Command", "CommanderError", "InvalidArgumentError", "Help", "Option", "exports", "module", "fs", "path", "i", "exports", "module", "fs", "path", "u", "o", "exports", "module", "fs", "path", "resolve", "exports", "module", "path", "i", "resolve", "exports", "module", "pathKey", "platform", "exports", "module", "path", "env", "exports", "module", "exports", "module", "exports", "module", "path", "exports", "module", "fs", "exports", "module", "path", "escape", "parse", "exports", "module", "exports", "module", "parse", "spawn", "spawnSync", "exports", "module", "path", "exports", "path", "exports", "module", "CHAR_COMMA", "CHAR_PLUS", "finished", "n", "i", "require_parse", "exports", "module", "constants", "parse", "opts", "n", "value", "increment", "rest", "open", "i", "source", "exports", "module", "path", "parse", "constants", "isObject", "state", "regex", "format", "require_picomatch", "exports", "module", "exports", "module", "fs", "Readable", "promisify", "n", "path", "basename", "resolve", "exports", "module", "path", "exports", "module", "DEFAULT_OPTIONS", "isList", "path", "testString", "returnIndex", "exports", "module", "exports", "module", "open", "n", "exports", "module", "require_utils", "exports", "node", "n", "i", "exports", "module", "exports", "module", "exports", "module", "a", "i", "max", "exports", "module", "util", "isObject", "a", "format", "exports", "module", "exports", "module", "i", "require_constants", "exports", "module", "require_parse", "exports", "module", "CHAR_COMMA", "parse", "open", "index", "exports", "module", "parse", "exports", "module", "require_binary_extensions", "exports", "module", "exports", "module", "path", "require_constants", "exports", "platform", "os", "exports", "module", "fs", "promisify", "open", "main", "path", "rawEmitter", "listener", "basename", "dirname", "newStats", "resolve", "stats", "exports", "module", "fs", "promisify", "path", "i", "exports", "fs", "promisify", "path", "i", "timeout", "now", "stat", "watch", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "Date", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "resolve", "index", "blocksize", "exports", "module", "resolve", "readable", "require_parse", "exports", "module", "require_stringify", "exports", "module", "tomlType", "c", "str", "arrayType", "exports", "exports", "module", "exports", "module", "os", "tty", "hasFlag", "env", "translateLevel", "supportsColor", "version", "exports", "module", "supportsColor", "hasFlag", "n", "env", "version", "exports", "module", "exports", "module", "fs", "path", "os", "version", "parse", "i", "exports", "module", "i", "e", "t", "r", "n", "s", "o", "l", "a", "c", "u", "h", "d", "p", "f", "m", "y", "v", "$", "z", "b", "S", "O", "E", "j", "J", "G", "ie", "g", "w", "_", "k", "U", "A", "exports", "module", "exports", "http", "listen", "exports", "module", "exports", "module", "onetime", "exports", "module", "exports", "module", "process", "processOk", "signals", "load", "unload", "emit", "processReallyExit", "processEmit", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "InvalidArgumentError", "require_constants", "exports", "module", "i", "exports", "module", "i", "exports", "module", "net", "InvalidArgumentError", "Blob", "isStream", "url", "path", "idx", "stream", "i", "n", "addAbortListener", "c", "err", "exports", "module", "util", "debuglog", "version", "path", "exports", "module", "InvalidArgumentError", "isStream", "path", "reset", "i", "exports", "module", "exports", "module", "InvalidArgumentError", "i", "resolve", "err", "exports", "module", "net", "util", "InvalidArgumentError", "timeout", "session", "onConnectTimeout", "exports", "module", "timeout", "require_utils", "exports", "require_constants", "exports", "ERROR", "TYPE", "FLAGS", "LENIENT_FLAGS", "METHODS", "FINISH", "i", "c", "HEADER_STATE", "exports", "module", "Buffer", "exports", "module", "Buffer", "require_constants", "exports", "module", "exports", "module", "exports", "module", "url", "i", "exports", "module", "inspect", "context", "ctx", "n", "keys", "i", "require_util", "exports", "module", "Transform", "performance", "isUint8Array", "url", "i", "c", "resolve", "isAborted", "byteLength", "textDecoder", "require_symbols", "exports", "module", "exports", "module", "Blob", "n", "exports", "module", "FormData", "entry", "a", "exports", "module", "i", "exports", "module", "util", "FormData", "Blob", "isArrayBuffer", "textEncoder", "escape", "chunk", "value", "exports", "module", "util", "constants", "timeout", "client", "i", "path", "reset", "n", "finished", "resolve", "exports", "module", "util", "client", "socket", "i", "path", "n", "headers", "resolve", "exports", "module", "util", "InvalidArgumentError", "path", "i", "exports", "module", "exports", "module", "net", "http", "util", "InvalidArgumentError", "url", "connect", "resolve", "i", "socket", "exports", "module", "exports", "module", "exports", "module", "c", "resolve", "exports", "module", "InvalidArgumentError", "util", "exports", "module", "InvalidArgumentError", "a", "pool", "dispatcher", "exports", "module", "InvalidArgumentError", "util", "exports", "module", "URL", "InvalidArgumentError", "url", "opts", "i", "exports", "module", "url", "i", "exports", "module", "err", "exports", "module", "exports", "module", "Readable", "InvalidArgumentError", "util", "noop", "resolve", "consume", "n", "require_util", "exports", "module", "exports", "module", "Readable", "InvalidArgumentError", "util", "context", "resolve", "exports", "module", "addAbortListener", "exports", "module", "finished", "PassThrough", "InvalidArgumentError", "util", "context", "callback", "res", "opaque", "resolve", "exports", "module", "Readable", "Duplex", "PassThrough", "InvalidArgumentError", "util", "context", "body", "exports", "module", "InvalidArgumentError", "util", "context", "resolve", "exports", "module", "InvalidArgumentError", "util", "context", "resolve", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "i", "mockDispatch", "path", "url", "exports", "module", "InvalidArgumentError", "replyParameters", "newMockDispatch", "exports", "module", "promisify", "InvalidArgumentError", "exports", "module", "promisify", "InvalidArgumentError", "exports", "module", "exports", "module", "Transform", "path", "exports", "module", "InvalidArgumentError", "require_global", "exports", "module", "InvalidArgumentError", "exports", "module", "exports", "module", "opts", "exports", "module", "exports", "module", "util", "InvalidArgumentError", "exports", "module", "util", "i", "a", "Headers", "o", "exports", "module", "Headers", "util", "isAborted", "FormData", "textEncoder", "noop", "Response", "url", "exports", "module", "require_request", "exports", "module", "Headers", "FinalizationRegistry", "util", "setMaxListeners", "window", "exports", "module", "isAborted", "Readable", "finished", "addAbortListener", "fetch", "url", "resolve", "i", "require_symbols", "exports", "module", "exports", "module", "exports", "module", "require_util", "exports", "module", "StringDecoder", "btoa", "type", "a", "c", "exports", "module", "require_symbols", "exports", "module", "require_util", "exports", "module", "exports", "module", "Response", "request", "exports", "module", "cache", "require_constants", "exports", "module", "require_util", "exports", "module", "i", "path", "require_parse", "exports", "module", "exports", "module", "Headers", "exports", "module", "MessageEvent", "require_constants", "exports", "module", "require_symbols", "exports", "module", "require_util", "exports", "module", "i", "exports", "module", "buffer", "i", "exports", "module", "Headers", "url", "exports", "module", "exports", "module", "Writable", "n", "body", "exports", "module", "node", "exports", "module", "url", "require_util", "exports", "module", "i", "resolve", "exports", "module", "Transform", "LF", "CR", "exports", "module", "url", "exports", "module", "util", "InvalidArgumentError", "url", "path", "fetch", "MessageEvent", "commander", "expression", "open", "process", "process", "basename", "process", "process", "path", "fileURLToPath", "env", "platform", "process", "execPath", "fileURLToPath", "path", "env", "setTimeout", "setTimeout", "setTimeout", "timeout", "context", "setTimeout", "correctEncoding", "resolve", "process", "resolve", "process", "crossSpawn", "process", "basename", "env", "constants", "constants", "signals", "normalizeSignal", "constants", "signals", "constants", "objectToString", "identity", "identity", "textEncoder", "textDecoder", "identity", "timeout", "timeout", "milliseconds", "readFileSync", "isReadableStream", "isWritableStream", "process", "isWritableStream", "process", "addDefaultValue", "tty", "tty", "addProperties", "optionName", "value", "readFileSync", "stripFinalNewline", "LF", "Buffer", "Buffer", "Buffer", "StringDecoder", "StringDecoder", "textEncoder", "Buffer", "identityGenerator", "encoding", "generators", "writeFileSync", "stripFinalNewline", "path", "writeFileSync", "ChildProcess", "ChildProcess", "Buffer", "Readable", "Writable", "Duplex", "addProperties", "Duplex", "Readable", "Buffer", "Writable", "on", "once", "getDefaultHighWaterMark", "finished", "aborted", "noop", "increment", "finished", "finished", "addAbortListener", "process", "global", "i", "a", "addAbortListener", "finished", "finished", "setImmediate", "on", "getDefaultHighWaterMark", "stripFinalNewline", "on", "getDefaultHighWaterMark", "stripFinalNewline", "getStreamContents", "setImmediate", "finished", "stripFinalNewline", "stripFinalNewline", "once", "timeout", "stripFinalNewline", "context", "once", "resolve", "resolve", "Readable", "callbackify", "finished", "finished", "readable", "Readable", "callbackify", "Writable", "callbackify", "writable", "Writable", "callbackify", "Duplex", "callbackify", "duplex", "Duplex", "callbackify", "descriptor", "timeout", "context", "mapArguments", "boundOptions", "setBoundExeca", "writeFileSync", "join", "readFileSync", "fileURLToPath", "path", "process", "path", "fileURLToPath", "fileURLToPath", "process", "path", "fileURLToPath", "toPath", "path", "toPath", "fileURLToPath", "readFileSync", "join", "readFileSync", "writeFileSync", "join", "util", "objectUtil", "i", "path", "ctx", "errorUtil", "path", "handleResult", "ctx", "errorMap", "regex", "version", "i", "result", "issues", "a", "elements", "processed", "ZodFirstPartyTypeKind", "red", "green", "blue", "process", "tty", "version", "styles", "chalk", "styles", "open", "i", "url", "url", "supportsHyperlinks", "readFileSync", "join", "join", "readFileSync", "readFileSync", "join", "writeFileSync", "join", "main", "TOML", "writeFileSync", "join", "ctx", "childProcess", "c", "os", "os", "resolve", "process", "Buffer", "path", "fileURLToPath", "fs", "process", "os", "fs", "fs", "fs", "fs", "process", "os", "fs", "define", "promisify", "process", "execFile", "process", "process", "promisify", "execFile", "execFileAsync", "promisify", "execFile", "execFileAsync", "execFileAsync", "promisify", "execFile", "defaultBrowser", "process", "path", "fileURLToPath", "platform", "process", "fs", "defaultBrowser", "Buffer", "resolve", "platform", "url", "listen", "resolve", "url", "process", "process", "import_signal_exit", "process", "onetime", "signalExit", "process", "process", "isUnicodeSupported", "isUnicodeSupported", "emojiRegex", "process", "import_cli_spinners", "process", "cliSpinners", "url", "path", "issue"]
}
