@letsrunit/cli 0.13.2 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -721,6 +721,9 @@ export default {
721
721
  },
722
722
  },
723
723
  worldParameters,
724
+ letsrunit: {
725
+ ignore: ['features/support/world.js'],
726
+ },
724
727
  };
725
728
  `;
726
729
  var SUPPORT_FILE = `import { setDefaultTimeout } from '@cucumber/cucumber';
@@ -849,6 +852,20 @@ function installGithubAction(env) {
849
852
  writeFileSync(workflowPath, workflowYaml(env), "utf-8");
850
853
  return "created";
851
854
  }
855
+ function isMcpServerInstalled({ cwd }) {
856
+ const pkgPath = join(cwd, "package.json");
857
+ if (!existsSync(pkgPath)) return false;
858
+ const pkg = JSON.parse(readFileSync(pkgPath, "utf-8"));
859
+ return "@letsrunit/mcp-server" in (pkg.devDependencies ?? {}) || "@letsrunit/mcp-server" in (pkg.dependencies ?? {});
860
+ }
861
+ function installMcpServer(env) {
862
+ execPm(env, {
863
+ npm: "install --save-dev @letsrunit/mcp-server",
864
+ yarn: "add --dev @letsrunit/mcp-server",
865
+ pnpm: "add -D @letsrunit/mcp-server",
866
+ bun: "add -d @letsrunit/mcp-server"
867
+ });
868
+ }
852
869
  function hasPlaywrightBrowsers({ cwd }) {
853
870
  if (!existsSync(join(cwd, "node_modules", "playwright-core", "package.json"))) {
854
871
  return false;
@@ -901,6 +918,30 @@ async function stepEnsureCucumber(env, { yes }) {
901
918
  s.stop("@cucumber/cucumber installed");
902
919
  return true;
903
920
  }
921
+ async function stepInstallMcpServer(env, { yes, noMcp }) {
922
+ if (noMcp) {
923
+ M2.info("Skipped @letsrunit/mcp-server installation (--no-mcp).");
924
+ return;
925
+ }
926
+ if (isMcpServerInstalled(env)) {
927
+ M2.success("@letsrunit/mcp-server already installed");
928
+ return;
929
+ }
930
+ if (!yes && env.isInteractive) {
931
+ const install = await ye({
932
+ message: "Install @letsrunit/mcp-server for project-local MCP support?",
933
+ initialValue: true
934
+ });
935
+ if (install !== true) {
936
+ M2.info("Skipped @letsrunit/mcp-server installation.");
937
+ return;
938
+ }
939
+ }
940
+ const s = Y2();
941
+ s.start("Installing @letsrunit/mcp-server\u2026");
942
+ installMcpServer(env);
943
+ s.stop("@letsrunit/mcp-server installed");
944
+ }
904
945
  function stepSetupCucumber(env) {
905
946
  const result = setupCucumber(env);
906
947
  if (result.bddInstalled) M2.success("@letsrunit/cucumber installed");
@@ -945,6 +986,7 @@ async function init(options = {}) {
945
986
  Ie("letsrunit init");
946
987
  const env = detectEnvironment();
947
988
  await stepInstallCli(env);
989
+ await stepInstallMcpServer(env, options);
948
990
  const hasCucumber = await stepEnsureCucumber(env, options);
949
991
  if (hasCucumber) {
950
992
  stepSetupCucumber(env);
@@ -1070,8 +1112,8 @@ async function readStdin() {
1070
1112
  });
1071
1113
  }
1072
1114
  program.name("letsrunit").description("Vibe testing done right").version(version);
1073
- program.command("init").description("Set up letsrunit in the current project").option("-y, --yes", "Skip confirmation prompts").action(async (opts) => {
1074
- await init({ yes: opts.yes });
1115
+ program.command("init").description("Set up letsrunit in the current project").option("-y, --yes", "Skip confirmation prompts").option("--no-mcp", "Do not install @letsrunit/mcp-server").action(async (opts) => {
1116
+ await init({ yes: opts.yes, noMcp: opts.mcp === false });
1075
1117
  });
1076
1118
  program.command("explore").argument("<target>", "Target URL or project").option("-v, --verbose", "Enable verbose logging", false).option("-s, --silent", "Only output errors", false).option("-o, --save <path>", "Path to save .feature file", "").action(async (target, opts) => {
1077
1119
  const journal = createJournal({ ...opts, artifactPath: opts.save });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../node_modules/sisteransi/src/index.js","../../../node_modules/picocolors/picocolors.js","../../../node_modules/node_modules/.pnpm/ansi-regex@6.1.0/node_modules/ansi-regex/index.js","../../../node_modules/node_modules/.pnpm/strip-ansi@7.1.0/node_modules/strip-ansi/index.js","../../../node_modules/node_modules/.pnpm/eastasianwidth@0.2.0/node_modules/eastasianwidth/eastasianwidth.js","../../../node_modules/node_modules/.pnpm/emoji-regex@9.2.2/node_modules/emoji-regex/index.js","../../../node_modules/node_modules/.pnpm/string-width@5.1.2/node_modules/string-width/index.js","../../../node_modules/node_modules/.pnpm/ansi-styles@6.2.1/node_modules/ansi-styles/index.js","../../../node_modules/node_modules/.pnpm/wrap-ansi@8.1.0/node_modules/wrap-ansi/index.js","../../../node_modules/@clack/core/src/utils/settings.ts","../../../node_modules/@clack/core/src/utils/string.ts","../../../node_modules/@clack/core/src/utils/index.ts","../../../node_modules/@clack/core/src/prompts/prompt.ts","../../../node_modules/@clack/core/src/prompts/confirm.ts","../../../node_modules/node_modules/.pnpm/is-unicode-supported@1.3.0/node_modules/is-unicode-supported/index.js","../../../node_modules/@clack/prompts/src/index.ts","../../letsrunit/src/detect.ts","../../letsrunit/src/setup/cli.ts","../../letsrunit/src/setup/cucumber.ts","../../letsrunit/src/setup/github-actions.ts","../../letsrunit/src/setup/playwright.ts","../../letsrunit/src/init.ts","../src/run-explain.ts","../src/run-explore.ts","../src/index.ts"],"names":["x","y","p","ansiRegex","onlyFirst","pattern","regex","stripAnsi","string","e","eaw","module","character","codePoint","code","stringToArray","characters","len","i","text","start","end","result","eawLen","chars","char","charLen","emojiRegex","stringWidth","options","ambiguousCharacterWidth","width","eastAsianWidth","ANSI_BACKGROUND_OFFSET","wrapAnsi16","offset","wrapAnsi256","wrapAnsi16m","red","green","blue","styles","foregroundColorNames","backgroundColorNames","assembleStyles","codes","groupName","group","styleName","style","hex","matches","colorString","integer","remainder","value","ansiStyles","ESCAPES","END_CODE","ANSI_ESCAPE_BELL","ANSI_CSI","ANSI_OSC","ANSI_SGR_TERMINATOR","ANSI_ESCAPE_LINK","wrapAnsiCode","wrapAnsiHyperlink","uri","wordLengths","wrapWord","rows","word","columns","isInsideEscape","isInsideLinkEscape","visible","index","characterLength","stringVisibleTrimSpacesRight","words","last","exec","returnValue","escapeCode","escapeUrl","lengths","rowLength","remainingColumns","breaksStartingThisLine","row","pre","groups","wrapAnsi","line","actions","settings","isActionKey","key","action","diffLines","a","b","aLines","bLines","diff","isWindows","CANCEL_SYMBOL","setRawMode","input","block","stdin","output","stdout","overwrite","hideCursor","rl","readline","clear","data","name","sequence","str","cursor","dx","dy","v","t","s","Prompt","trackValue","__publicField","render","signal","opts","event","params","cb","cbs","cleanup","subscriber","resolve","reject","sink","Writable","chunk","encoding","done","problem","lines","wrap","frame","diffLine","erase","newLines","ConfirmPrompt","confirm","isUnicodeSupported","process","unicode","c","fallback","S_STEP_ACTIVE","S_STEP_CANCEL","S_STEP_ERROR","S_STEP_SUBMIT","S_BAR_START","S_BAR","S_BAR_END","S_RADIO_ACTIVE","S_RADIO_INACTIVE","S_BAR_H","S_CORNER_TOP_RIGHT","S_CONNECT_LEFT","S_CORNER_BOTTOM_RIGHT","S_INFO","S_SUCCESS","S_WARN","S_ERROR","symbol","state","color","active","inactive","title","note","message","titleLen","strip","sum","ln","msg","intro","outro","log","parts","firstLine","spinner","indicator","frames","delay","isCI","unblock","loop","isSpinnerActive","_message","_prevMessage","_origin","handleExit","stop","errorEventHandler","signalEventHandler","registerHooks","clearHooks","clearPrevMessage","prevLines","parseMessage","formatTimer","origin","duration","min","secs","frameIndex","indicatorTimer","loadingDots","step","join","existsSync","readFileSync","mkdirSync","writeFileSync","execSync","BDD_IMPORT","M","Y","explainRun","fs","asFilename","makeFeature"],"mappings":"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","file":"index.js","sourcesContent":["'use strict';\n\nconst ESC = '\\x1B';\nconst CSI = `${ESC}[`;\nconst beep = '\\u0007';\n\nconst cursor = {\n to(x, y) {\n if (!y) return `${CSI}${x + 1}G`;\n return `${CSI}${y + 1};${x + 1}H`;\n },\n move(x, y) {\n let ret = '';\n\n if (x < 0) ret += `${CSI}${-x}D`;\n else if (x > 0) ret += `${CSI}${x}C`;\n\n if (y < 0) ret += `${CSI}${-y}A`;\n else if (y > 0) ret += `${CSI}${y}B`;\n\n return ret;\n },\n up: (count = 1) => `${CSI}${count}A`,\n down: (count = 1) => `${CSI}${count}B`,\n forward: (count = 1) => `${CSI}${count}C`,\n backward: (count = 1) => `${CSI}${count}D`,\n nextLine: (count = 1) => `${CSI}E`.repeat(count),\n prevLine: (count = 1) => `${CSI}F`.repeat(count),\n left: `${CSI}G`,\n hide: `${CSI}?25l`,\n show: `${CSI}?25h`,\n save: `${ESC}7`,\n restore: `${ESC}8`\n}\n\nconst scroll = {\n up: (count = 1) => `${CSI}S`.repeat(count),\n down: (count = 1) => `${CSI}T`.repeat(count)\n}\n\nconst erase = {\n screen: `${CSI}2J`,\n up: (count = 1) => `${CSI}1J`.repeat(count),\n down: (count = 1) => `${CSI}J`.repeat(count),\n line: `${CSI}2K`,\n lineEnd: `${CSI}K`,\n lineStart: `${CSI}1K`,\n lines(count) {\n let clear = '';\n for (let i = 0; i < count; i++)\n clear += this.line + (i < count - 1 ? cursor.up() : '');\n if (count)\n clear += cursor.left;\n return clear;\n }\n}\n\nmodule.exports = { cursor, scroll, erase, beep };\n","let p = process || {}, argv = p.argv || [], env = p.env || {}\nlet isColorSupported =\n\t!(!!env.NO_COLOR || argv.includes(\"--no-color\")) &&\n\t(!!env.FORCE_COLOR || argv.includes(\"--color\") || p.platform === \"win32\" || ((p.stdout || {}).isTTY && env.TERM !== \"dumb\") || !!env.CI)\n\nlet formatter = (open, close, replace = open) =>\n\tinput => {\n\t\tlet string = \"\" + input, index = string.indexOf(close, open.length)\n\t\treturn ~index ? open + replaceClose(string, close, replace, index) + close : open + string + close\n\t}\n\nlet replaceClose = (string, close, replace, index) => {\n\tlet result = \"\", cursor = 0\n\tdo {\n\t\tresult += string.substring(cursor, index) + replace\n\t\tcursor = index + close.length\n\t\tindex = string.indexOf(close, cursor)\n\t} while (~index)\n\treturn result + string.substring(cursor)\n}\n\nlet createColors = (enabled = isColorSupported) => {\n\tlet f = enabled ? formatter : () => String\n\treturn {\n\t\tisColorSupported: enabled,\n\t\treset: f(\"\\x1b[0m\", \"\\x1b[0m\"),\n\t\tbold: f(\"\\x1b[1m\", \"\\x1b[22m\", \"\\x1b[22m\\x1b[1m\"),\n\t\tdim: f(\"\\x1b[2m\", \"\\x1b[22m\", \"\\x1b[22m\\x1b[2m\"),\n\t\titalic: f(\"\\x1b[3m\", \"\\x1b[23m\"),\n\t\tunderline: f(\"\\x1b[4m\", \"\\x1b[24m\"),\n\t\tinverse: f(\"\\x1b[7m\", \"\\x1b[27m\"),\n\t\thidden: f(\"\\x1b[8m\", \"\\x1b[28m\"),\n\t\tstrikethrough: f(\"\\x1b[9m\", \"\\x1b[29m\"),\n\n\t\tblack: f(\"\\x1b[30m\", \"\\x1b[39m\"),\n\t\tred: f(\"\\x1b[31m\", \"\\x1b[39m\"),\n\t\tgreen: f(\"\\x1b[32m\", \"\\x1b[39m\"),\n\t\tyellow: f(\"\\x1b[33m\", \"\\x1b[39m\"),\n\t\tblue: f(\"\\x1b[34m\", \"\\x1b[39m\"),\n\t\tmagenta: f(\"\\x1b[35m\", \"\\x1b[39m\"),\n\t\tcyan: f(\"\\x1b[36m\", \"\\x1b[39m\"),\n\t\twhite: f(\"\\x1b[37m\", \"\\x1b[39m\"),\n\t\tgray: f(\"\\x1b[90m\", \"\\x1b[39m\"),\n\n\t\tbgBlack: f(\"\\x1b[40m\", \"\\x1b[49m\"),\n\t\tbgRed: f(\"\\x1b[41m\", \"\\x1b[49m\"),\n\t\tbgGreen: f(\"\\x1b[42m\", \"\\x1b[49m\"),\n\t\tbgYellow: f(\"\\x1b[43m\", \"\\x1b[49m\"),\n\t\tbgBlue: f(\"\\x1b[44m\", \"\\x1b[49m\"),\n\t\tbgMagenta: f(\"\\x1b[45m\", \"\\x1b[49m\"),\n\t\tbgCyan: f(\"\\x1b[46m\", \"\\x1b[49m\"),\n\t\tbgWhite: f(\"\\x1b[47m\", \"\\x1b[49m\"),\n\n\t\tblackBright: f(\"\\x1b[90m\", \"\\x1b[39m\"),\n\t\tredBright: f(\"\\x1b[91m\", \"\\x1b[39m\"),\n\t\tgreenBright: f(\"\\x1b[92m\", \"\\x1b[39m\"),\n\t\tyellowBright: f(\"\\x1b[93m\", \"\\x1b[39m\"),\n\t\tblueBright: f(\"\\x1b[94m\", \"\\x1b[39m\"),\n\t\tmagentaBright: f(\"\\x1b[95m\", \"\\x1b[39m\"),\n\t\tcyanBright: f(\"\\x1b[96m\", \"\\x1b[39m\"),\n\t\twhiteBright: f(\"\\x1b[97m\", \"\\x1b[39m\"),\n\n\t\tbgBlackBright: f(\"\\x1b[100m\", \"\\x1b[49m\"),\n\t\tbgRedBright: f(\"\\x1b[101m\", \"\\x1b[49m\"),\n\t\tbgGreenBright: f(\"\\x1b[102m\", \"\\x1b[49m\"),\n\t\tbgYellowBright: f(\"\\x1b[103m\", \"\\x1b[49m\"),\n\t\tbgBlueBright: f(\"\\x1b[104m\", \"\\x1b[49m\"),\n\t\tbgMagentaBright: f(\"\\x1b[105m\", \"\\x1b[49m\"),\n\t\tbgCyanBright: f(\"\\x1b[106m\", \"\\x1b[49m\"),\n\t\tbgWhiteBright: f(\"\\x1b[107m\", \"\\x1b[49m\"),\n\t}\n}\n\nmodule.exports = createColors()\nmodule.exports.createColors = createColors\n","export default function ansiRegex({onlyFirst = false} = {}) {\n\t// Valid string terminator sequences are BEL, ESC\\, and 0x9c\n\tconst ST = '(?:\\\\u0007|\\\\u001B\\\\u005C|\\\\u009C)';\n\tconst pattern = [\n\t\t`[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?${ST})`,\n\t\t'(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-nq-uy=><~]))',\n\t].join('|');\n\n\treturn new RegExp(pattern, onlyFirst ? undefined : 'g');\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","var eaw = {};\n\nif ('undefined' == typeof module) {\n window.eastasianwidth = eaw;\n} else {\n module.exports = eaw;\n}\n\neaw.eastAsianWidth = function(character) {\n var x = character.charCodeAt(0);\n var y = (character.length == 2) ? character.charCodeAt(1) : 0;\n var codePoint = x;\n if ((0xD800 <= x && x <= 0xDBFF) && (0xDC00 <= y && y <= 0xDFFF)) {\n x &= 0x3FF;\n y &= 0x3FF;\n codePoint = (x << 10) | y;\n codePoint += 0x10000;\n }\n\n if ((0x3000 == codePoint) ||\n (0xFF01 <= codePoint && codePoint <= 0xFF60) ||\n (0xFFE0 <= codePoint && codePoint <= 0xFFE6)) {\n return 'F';\n }\n if ((0x20A9 == codePoint) ||\n (0xFF61 <= codePoint && codePoint <= 0xFFBE) ||\n (0xFFC2 <= codePoint && codePoint <= 0xFFC7) ||\n (0xFFCA <= codePoint && codePoint <= 0xFFCF) ||\n (0xFFD2 <= codePoint && codePoint <= 0xFFD7) ||\n (0xFFDA <= codePoint && codePoint <= 0xFFDC) ||\n (0xFFE8 <= codePoint && codePoint <= 0xFFEE)) {\n return 'H';\n }\n if ((0x1100 <= codePoint && codePoint <= 0x115F) ||\n (0x11A3 <= codePoint && codePoint <= 0x11A7) ||\n (0x11FA <= codePoint && codePoint <= 0x11FF) ||\n (0x2329 <= codePoint && codePoint <= 0x232A) ||\n (0x2E80 <= codePoint && codePoint <= 0x2E99) ||\n (0x2E9B <= codePoint && codePoint <= 0x2EF3) ||\n (0x2F00 <= codePoint && codePoint <= 0x2FD5) ||\n (0x2FF0 <= codePoint && codePoint <= 0x2FFB) ||\n (0x3001 <= codePoint && codePoint <= 0x303E) ||\n (0x3041 <= codePoint && codePoint <= 0x3096) ||\n (0x3099 <= codePoint && codePoint <= 0x30FF) ||\n (0x3105 <= codePoint && codePoint <= 0x312D) ||\n (0x3131 <= codePoint && codePoint <= 0x318E) ||\n (0x3190 <= codePoint && codePoint <= 0x31BA) ||\n (0x31C0 <= codePoint && codePoint <= 0x31E3) ||\n (0x31F0 <= codePoint && codePoint <= 0x321E) ||\n (0x3220 <= codePoint && codePoint <= 0x3247) ||\n (0x3250 <= codePoint && codePoint <= 0x32FE) ||\n (0x3300 <= codePoint && codePoint <= 0x4DBF) ||\n (0x4E00 <= codePoint && codePoint <= 0xA48C) ||\n (0xA490 <= codePoint && codePoint <= 0xA4C6) ||\n (0xA960 <= codePoint && codePoint <= 0xA97C) ||\n (0xAC00 <= codePoint && codePoint <= 0xD7A3) ||\n (0xD7B0 <= codePoint && codePoint <= 0xD7C6) ||\n (0xD7CB <= codePoint && codePoint <= 0xD7FB) ||\n (0xF900 <= codePoint && codePoint <= 0xFAFF) ||\n (0xFE10 <= codePoint && codePoint <= 0xFE19) ||\n (0xFE30 <= codePoint && codePoint <= 0xFE52) ||\n (0xFE54 <= codePoint && codePoint <= 0xFE66) ||\n (0xFE68 <= codePoint && codePoint <= 0xFE6B) ||\n (0x1B000 <= codePoint && codePoint <= 0x1B001) ||\n (0x1F200 <= codePoint && codePoint <= 0x1F202) ||\n (0x1F210 <= codePoint && codePoint <= 0x1F23A) ||\n (0x1F240 <= codePoint && codePoint <= 0x1F248) ||\n (0x1F250 <= codePoint && codePoint <= 0x1F251) ||\n (0x20000 <= codePoint && codePoint <= 0x2F73F) ||\n (0x2B740 <= codePoint && codePoint <= 0x2FFFD) ||\n (0x30000 <= codePoint && codePoint <= 0x3FFFD)) {\n return 'W';\n }\n if ((0x0020 <= codePoint && codePoint <= 0x007E) ||\n (0x00A2 <= codePoint && codePoint <= 0x00A3) ||\n (0x00A5 <= codePoint && codePoint <= 0x00A6) ||\n (0x00AC == codePoint) ||\n (0x00AF == codePoint) ||\n (0x27E6 <= codePoint && codePoint <= 0x27ED) ||\n (0x2985 <= codePoint && codePoint <= 0x2986)) {\n return 'Na';\n }\n if ((0x00A1 == codePoint) ||\n (0x00A4 == codePoint) ||\n (0x00A7 <= codePoint && codePoint <= 0x00A8) ||\n (0x00AA == codePoint) ||\n (0x00AD <= codePoint && codePoint <= 0x00AE) ||\n (0x00B0 <= codePoint && codePoint <= 0x00B4) ||\n (0x00B6 <= codePoint && codePoint <= 0x00BA) ||\n (0x00BC <= codePoint && codePoint <= 0x00BF) ||\n (0x00C6 == codePoint) ||\n (0x00D0 == codePoint) ||\n (0x00D7 <= codePoint && codePoint <= 0x00D8) ||\n (0x00DE <= codePoint && codePoint <= 0x00E1) ||\n (0x00E6 == codePoint) ||\n (0x00E8 <= codePoint && codePoint <= 0x00EA) ||\n (0x00EC <= codePoint && codePoint <= 0x00ED) ||\n (0x00F0 == codePoint) ||\n (0x00F2 <= codePoint && codePoint <= 0x00F3) ||\n (0x00F7 <= codePoint && codePoint <= 0x00FA) ||\n (0x00FC == codePoint) ||\n (0x00FE == codePoint) ||\n (0x0101 == codePoint) ||\n (0x0111 == codePoint) ||\n (0x0113 == codePoint) ||\n (0x011B == codePoint) ||\n (0x0126 <= codePoint && codePoint <= 0x0127) ||\n (0x012B == codePoint) ||\n (0x0131 <= codePoint && codePoint <= 0x0133) ||\n (0x0138 == codePoint) ||\n (0x013F <= codePoint && codePoint <= 0x0142) ||\n (0x0144 == codePoint) ||\n (0x0148 <= codePoint && codePoint <= 0x014B) ||\n (0x014D == codePoint) ||\n (0x0152 <= codePoint && codePoint <= 0x0153) ||\n (0x0166 <= codePoint && codePoint <= 0x0167) ||\n (0x016B == codePoint) ||\n (0x01CE == codePoint) ||\n (0x01D0 == codePoint) ||\n (0x01D2 == codePoint) ||\n (0x01D4 == codePoint) ||\n (0x01D6 == codePoint) ||\n (0x01D8 == codePoint) ||\n (0x01DA == codePoint) ||\n (0x01DC == codePoint) ||\n (0x0251 == codePoint) ||\n (0x0261 == codePoint) ||\n (0x02C4 == codePoint) ||\n (0x02C7 == codePoint) ||\n (0x02C9 <= codePoint && codePoint <= 0x02CB) ||\n (0x02CD == codePoint) ||\n (0x02D0 == codePoint) ||\n (0x02D8 <= codePoint && codePoint <= 0x02DB) ||\n (0x02DD == codePoint) ||\n (0x02DF == codePoint) ||\n (0x0300 <= codePoint && codePoint <= 0x036F) ||\n (0x0391 <= codePoint && codePoint <= 0x03A1) ||\n (0x03A3 <= codePoint && codePoint <= 0x03A9) ||\n (0x03B1 <= codePoint && codePoint <= 0x03C1) ||\n (0x03C3 <= codePoint && codePoint <= 0x03C9) ||\n (0x0401 == codePoint) ||\n (0x0410 <= codePoint && codePoint <= 0x044F) ||\n (0x0451 == codePoint) ||\n (0x2010 == codePoint) ||\n (0x2013 <= codePoint && codePoint <= 0x2016) ||\n (0x2018 <= codePoint && codePoint <= 0x2019) ||\n (0x201C <= codePoint && codePoint <= 0x201D) ||\n (0x2020 <= codePoint && codePoint <= 0x2022) ||\n (0x2024 <= codePoint && codePoint <= 0x2027) ||\n (0x2030 == codePoint) ||\n (0x2032 <= codePoint && codePoint <= 0x2033) ||\n (0x2035 == codePoint) ||\n (0x203B == codePoint) ||\n (0x203E == codePoint) ||\n (0x2074 == codePoint) ||\n (0x207F == codePoint) ||\n (0x2081 <= codePoint && codePoint <= 0x2084) ||\n (0x20AC == codePoint) ||\n (0x2103 == codePoint) ||\n (0x2105 == codePoint) ||\n (0x2109 == codePoint) ||\n (0x2113 == codePoint) ||\n (0x2116 == codePoint) ||\n (0x2121 <= codePoint && codePoint <= 0x2122) ||\n (0x2126 == codePoint) ||\n (0x212B == codePoint) ||\n (0x2153 <= codePoint && codePoint <= 0x2154) ||\n (0x215B <= codePoint && codePoint <= 0x215E) ||\n (0x2160 <= codePoint && codePoint <= 0x216B) ||\n (0x2170 <= codePoint && codePoint <= 0x2179) ||\n (0x2189 == codePoint) ||\n (0x2190 <= codePoint && codePoint <= 0x2199) ||\n (0x21B8 <= codePoint && codePoint <= 0x21B9) ||\n (0x21D2 == codePoint) ||\n (0x21D4 == codePoint) ||\n (0x21E7 == codePoint) ||\n (0x2200 == codePoint) ||\n (0x2202 <= codePoint && codePoint <= 0x2203) ||\n (0x2207 <= codePoint && codePoint <= 0x2208) ||\n (0x220B == codePoint) ||\n (0x220F == codePoint) ||\n (0x2211 == codePoint) ||\n (0x2215 == codePoint) ||\n (0x221A == codePoint) ||\n (0x221D <= codePoint && codePoint <= 0x2220) ||\n (0x2223 == codePoint) ||\n (0x2225 == codePoint) ||\n (0x2227 <= codePoint && codePoint <= 0x222C) ||\n (0x222E == codePoint) ||\n (0x2234 <= codePoint && codePoint <= 0x2237) ||\n (0x223C <= codePoint && codePoint <= 0x223D) ||\n (0x2248 == codePoint) ||\n (0x224C == codePoint) ||\n (0x2252 == codePoint) ||\n (0x2260 <= codePoint && codePoint <= 0x2261) ||\n (0x2264 <= codePoint && codePoint <= 0x2267) ||\n (0x226A <= codePoint && codePoint <= 0x226B) ||\n (0x226E <= codePoint && codePoint <= 0x226F) ||\n (0x2282 <= codePoint && codePoint <= 0x2283) ||\n (0x2286 <= codePoint && codePoint <= 0x2287) ||\n (0x2295 == codePoint) ||\n (0x2299 == codePoint) ||\n (0x22A5 == codePoint) ||\n (0x22BF == codePoint) ||\n (0x2312 == codePoint) ||\n (0x2460 <= codePoint && codePoint <= 0x24E9) ||\n (0x24EB <= codePoint && codePoint <= 0x254B) ||\n (0x2550 <= codePoint && codePoint <= 0x2573) ||\n (0x2580 <= codePoint && codePoint <= 0x258F) ||\n (0x2592 <= codePoint && codePoint <= 0x2595) ||\n (0x25A0 <= codePoint && codePoint <= 0x25A1) ||\n (0x25A3 <= codePoint && codePoint <= 0x25A9) ||\n (0x25B2 <= codePoint && codePoint <= 0x25B3) ||\n (0x25B6 <= codePoint && codePoint <= 0x25B7) ||\n (0x25BC <= codePoint && codePoint <= 0x25BD) ||\n (0x25C0 <= codePoint && codePoint <= 0x25C1) ||\n (0x25C6 <= codePoint && codePoint <= 0x25C8) ||\n (0x25CB == codePoint) ||\n (0x25CE <= codePoint && codePoint <= 0x25D1) ||\n (0x25E2 <= codePoint && codePoint <= 0x25E5) ||\n (0x25EF == codePoint) ||\n (0x2605 <= codePoint && codePoint <= 0x2606) ||\n (0x2609 == codePoint) ||\n (0x260E <= codePoint && codePoint <= 0x260F) ||\n (0x2614 <= codePoint && codePoint <= 0x2615) ||\n (0x261C == codePoint) ||\n (0x261E == codePoint) ||\n (0x2640 == codePoint) ||\n (0x2642 == codePoint) ||\n (0x2660 <= codePoint && codePoint <= 0x2661) ||\n (0x2663 <= codePoint && codePoint <= 0x2665) ||\n (0x2667 <= codePoint && codePoint <= 0x266A) ||\n (0x266C <= codePoint && codePoint <= 0x266D) ||\n (0x266F == codePoint) ||\n (0x269E <= codePoint && codePoint <= 0x269F) ||\n (0x26BE <= codePoint && codePoint <= 0x26BF) ||\n (0x26C4 <= codePoint && codePoint <= 0x26CD) ||\n (0x26CF <= codePoint && codePoint <= 0x26E1) ||\n (0x26E3 == codePoint) ||\n (0x26E8 <= codePoint && codePoint <= 0x26FF) ||\n (0x273D == codePoint) ||\n (0x2757 == codePoint) ||\n (0x2776 <= codePoint && codePoint <= 0x277F) ||\n (0x2B55 <= codePoint && codePoint <= 0x2B59) ||\n (0x3248 <= codePoint && codePoint <= 0x324F) ||\n (0xE000 <= codePoint && codePoint <= 0xF8FF) ||\n (0xFE00 <= codePoint && codePoint <= 0xFE0F) ||\n (0xFFFD == codePoint) ||\n (0x1F100 <= codePoint && codePoint <= 0x1F10A) ||\n (0x1F110 <= codePoint && codePoint <= 0x1F12D) ||\n (0x1F130 <= codePoint && codePoint <= 0x1F169) ||\n (0x1F170 <= codePoint && codePoint <= 0x1F19A) ||\n (0xE0100 <= codePoint && codePoint <= 0xE01EF) ||\n (0xF0000 <= codePoint && codePoint <= 0xFFFFD) ||\n (0x100000 <= codePoint && codePoint <= 0x10FFFD)) {\n return 'A';\n }\n\n return 'N';\n};\n\neaw.characterLength = function(character) {\n var code = this.eastAsianWidth(character);\n if (code == 'F' || code == 'W' || code == 'A') {\n return 2;\n } else {\n return 1;\n }\n};\n\n// Split a string considering surrogate-pairs.\nfunction stringToArray(string) {\n return string.match(/[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[^\\uD800-\\uDFFF]/g) || [];\n}\n\neaw.length = function(string) {\n var characters = stringToArray(string);\n var len = 0;\n for (var i = 0; i < characters.length; i++) {\n len = len + this.characterLength(characters[i]);\n }\n return len;\n};\n\neaw.slice = function(text, start, end) {\n textLen = eaw.length(text)\n start = start ? start : 0;\n end = end ? end : 1;\n if (start < 0) {\n start = textLen + start;\n }\n if (end < 0) {\n end = textLen + end;\n }\n var result = '';\n var eawLen = 0;\n var chars = stringToArray(text);\n for (var i = 0; i < chars.length; i++) {\n var char = chars[i];\n var charLen = eaw.length(char);\n if (eawLen >= start - (charLen == 2 ? 1 : 0)) {\n if (eawLen + charLen <= end) {\n result += char;\n } else {\n break;\n }\n }\n eawLen += charLen;\n }\n return result;\n};\n","\"use strict\";\n\nmodule.exports = function () {\n // https://mths.be/emoji\n return /\\uD83C\\uDFF4\\uDB40\\uDC67\\uDB40\\uDC62(?:\\uDB40\\uDC77\\uDB40\\uDC6C\\uDB40\\uDC73|\\uDB40\\uDC73\\uDB40\\uDC63\\uDB40\\uDC74|\\uDB40\\uDC65\\uDB40\\uDC6E\\uDB40\\uDC67)\\uDB40\\uDC7F|(?:\\uD83E\\uDDD1\\uD83C\\uDFFF\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFF\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB-\\uDFFE])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFE\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFE\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFD\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFD\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFC\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFC\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFB\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFB\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFC-\\uDFFF])|\\uD83D\\uDC68(?:\\uD83C\\uDFFB(?:\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFF]))|\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFC-\\uDFFF])|[\\u2695\\u2696\\u2708]\\uFE0F|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]))?|(?:\\uD83C[\\uDFFC-\\uDFFF])\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFF]))|\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83D\\uDC68|(?:\\uD83D[\\uDC68\\uDC69])\\u200D(?:\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67]))|\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFE])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFE\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFC\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|(?:\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708]|\\u200D[\\u2695\\u2696\\u2708])\\uFE0F|\\u200D(?:(?:\\uD83D[\\uDC68\\uDC69])\\u200D(?:\\uD83D[\\uDC66\\uDC67])|\\uD83D[\\uDC66\\uDC67])|\\uD83C\\uDFFF|\\uD83C\\uDFFE|\\uD83C\\uDFFD|\\uD83C\\uDFFC)?|(?:\\uD83D\\uDC69(?:\\uD83C\\uDFFB\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D(?:\\uD83D[\\uDC68\\uDC69])|\\uD83D[\\uDC68\\uDC69])|(?:\\uD83C[\\uDFFC-\\uDFFF])\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D(?:\\uD83D[\\uDC68\\uDC69])|\\uD83D[\\uDC68\\uDC69]))|\\uD83E\\uDDD1(?:\\uD83C[\\uDFFB-\\uDFFF])\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1)(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D(?:\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67]))|\\uD83D\\uDC69(?:\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D(?:\\uD83D[\\uDC68\\uDC69])|\\uD83D[\\uDC68\\uDC69])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFE\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFC\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFB\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]))|\\uD83E\\uDDD1(?:\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFE\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFC\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFB\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]))|\\uD83D\\uDC69\\u200D\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D(?:\\uD83D[\\uDC66\\uDC67])|\\uD83D\\uDC69\\u200D\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|(?:\\uD83D\\uDC41\\uFE0F\\u200D\\uD83D\\uDDE8|\\uD83E\\uDDD1(?:\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFB\\u200D[\\u2695\\u2696\\u2708]|\\u200D[\\u2695\\u2696\\u2708])|\\uD83D\\uDC69(?:\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFB\\u200D[\\u2695\\u2696\\u2708]|\\u200D[\\u2695\\u2696\\u2708])|\\uD83D\\uDE36\\u200D\\uD83C\\uDF2B|\\uD83C\\uDFF3\\uFE0F\\u200D\\u26A7|\\uD83D\\uDC3B\\u200D\\u2744|(?:(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD4\\uDDD6-\\uDDDD])(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83D\\uDC6F|\\uD83E[\\uDD3C\\uDDDE\\uDDDF])\\u200D[\\u2640\\u2642]|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])\\u200D[\\u2640\\u2642]|\\uD83C\\uDFF4\\u200D\\u2620|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD4\\uDDD6-\\uDDDD])\\u200D[\\u2640\\u2642]|[\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u2328\\u23CF\\u23ED-\\u23EF\\u23F1\\u23F2\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB\\u25FC\\u2600-\\u2604\\u260E\\u2611\\u2618\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u2692\\u2694-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A7\\u26B0\\u26B1\\u26C8\\u26CF\\u26D1\\u26D3\\u26E9\\u26F0\\u26F1\\u26F4\\u26F7\\u26F8\\u2702\\u2708\\u2709\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2733\\u2734\\u2744\\u2747\\u2763\\u27A1\\u2934\\u2935\\u2B05-\\u2B07\\u3030\\u303D\\u3297\\u3299]|\\uD83C[\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDE02\\uDE37\\uDF21\\uDF24-\\uDF2C\\uDF36\\uDF7D\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E\\uDF9F\\uDFCD\\uDFCE\\uDFD4-\\uDFDF\\uDFF5\\uDFF7]|\\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|\\uD83C\\uDFF3\\uFE0F\\u200D\\uD83C\\uDF08|\\uD83D\\uDC69\\u200D\\uD83D\\uDC67|\\uD83D\\uDC69\\u200D\\uD83D\\uDC66|\\uD83D\\uDE35\\u200D\\uD83D\\uDCAB|\\uD83D\\uDE2E\\u200D\\uD83D\\uDCA8|\\uD83D\\uDC15\\u200D\\uD83E\\uDDBA|\\uD83E\\uDDD1(?:\\uD83C\\uDFFF|\\uD83C\\uDFFE|\\uD83C\\uDFFD|\\uD83C\\uDFFC|\\uD83C\\uDFFB)?|\\uD83D\\uDC69(?:\\uD83C\\uDFFF|\\uD83C\\uDFFE|\\uD83C\\uDFFD|\\uD83C\\uDFFC|\\uD83C\\uDFFB)?|\\uD83C\\uDDFD\\uD83C\\uDDF0|\\uD83C\\uDDF6\\uD83C\\uDDE6|\\uD83C\\uDDF4\\uD83C\\uDDF2|\\uD83D\\uDC08\\u200D\\u2B1B|\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDD25|\\uD83E\\uDE79)|\\uD83D\\uDC41\\uFE0F|\\uD83C\\uDFF3\\uFE0F|\\uD83C\\uDDFF(?:\\uD83C[\\uDDE6\\uDDF2\\uDDFC])|\\uD83C\\uDDFE(?:\\uD83C[\\uDDEA\\uDDF9])|\\uD83C\\uDDFC(?:\\uD83C[\\uDDEB\\uDDF8])|\\uD83C\\uDDFB(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDEE\\uDDF3\\uDDFA])|\\uD83C\\uDDFA(?:\\uD83C[\\uDDE6\\uDDEC\\uDDF2\\uDDF3\\uDDF8\\uDDFE\\uDDFF])|\\uD83C\\uDDF9(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDED\\uDDEF-\\uDDF4\\uDDF7\\uDDF9\\uDDFB\\uDDFC\\uDDFF])|\\uD83C\\uDDF8(?:\\uD83C[\\uDDE6-\\uDDEA\\uDDEC-\\uDDF4\\uDDF7-\\uDDF9\\uDDFB\\uDDFD-\\uDDFF])|\\uD83C\\uDDF7(?:\\uD83C[\\uDDEA\\uDDF4\\uDDF8\\uDDFA\\uDDFC])|\\uD83C\\uDDF5(?:\\uD83C[\\uDDE6\\uDDEA-\\uDDED\\uDDF0-\\uDDF3\\uDDF7-\\uDDF9\\uDDFC\\uDDFE])|\\uD83C\\uDDF3(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA-\\uDDEC\\uDDEE\\uDDF1\\uDDF4\\uDDF5\\uDDF7\\uDDFA\\uDDFF])|\\uD83C\\uDDF2(?:\\uD83C[\\uDDE6\\uDDE8-\\uDDED\\uDDF0-\\uDDFF])|\\uD83C\\uDDF1(?:\\uD83C[\\uDDE6-\\uDDE8\\uDDEE\\uDDF0\\uDDF7-\\uDDFB\\uDDFE])|\\uD83C\\uDDF0(?:\\uD83C[\\uDDEA\\uDDEC-\\uDDEE\\uDDF2\\uDDF3\\uDDF5\\uDDF7\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDEF(?:\\uD83C[\\uDDEA\\uDDF2\\uDDF4\\uDDF5])|\\uD83C\\uDDEE(?:\\uD83C[\\uDDE8-\\uDDEA\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9])|\\uD83C\\uDDED(?:\\uD83C[\\uDDF0\\uDDF2\\uDDF3\\uDDF7\\uDDF9\\uDDFA])|\\uD83C\\uDDEC(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEE\\uDDF1-\\uDDF3\\uDDF5-\\uDDFA\\uDDFC\\uDDFE])|\\uD83C\\uDDEB(?:\\uD83C[\\uDDEE-\\uDDF0\\uDDF2\\uDDF4\\uDDF7])|\\uD83C\\uDDEA(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDED\\uDDF7-\\uDDFA])|\\uD83C\\uDDE9(?:\\uD83C[\\uDDEA\\uDDEC\\uDDEF\\uDDF0\\uDDF2\\uDDF4\\uDDFF])|\\uD83C\\uDDE8(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDEE\\uDDF0-\\uDDF5\\uDDF7\\uDDFA-\\uDDFF])|\\uD83C\\uDDE7(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEF\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9\\uDDFB\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDE6(?:\\uD83C[\\uDDE8-\\uDDEC\\uDDEE\\uDDF1\\uDDF2\\uDDF4\\uDDF6-\\uDDFA\\uDDFC\\uDDFD\\uDDFF])|[#\\*0-9]\\uFE0F\\u20E3|\\u2764\\uFE0F|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD4\\uDDD6-\\uDDDD])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])|\\uD83C\\uDFF4|(?:[\\u270A\\u270B]|\\uD83C[\\uDF85\\uDFC2\\uDFC7]|\\uD83D[\\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]|\\uD83E[\\uDD0C\\uDD0F\\uDD18-\\uDD1C\\uDD1E\\uDD1F\\uDD30-\\uDD34\\uDD36\\uDD77\\uDDB5\\uDDB6\\uDDBB\\uDDD2\\uDDD3\\uDDD5])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:[\\u261D\\u270C\\u270D]|\\uD83D[\\uDD74\\uDD90])(?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])|[\\u270A\\u270B]|\\uD83C[\\uDF85\\uDFC2\\uDFC7]|\\uD83D[\\uDC08\\uDC15\\uDC3B\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDC8F\\uDC91\\uDCAA\\uDD7A\\uDD95\\uDD96\\uDE2E\\uDE35\\uDE36\\uDE4C\\uDE4F\\uDEC0\\uDECC]|\\uD83E[\\uDD0C\\uDD0F\\uDD18-\\uDD1C\\uDD1E\\uDD1F\\uDD30-\\uDD34\\uDD36\\uDD77\\uDDB5\\uDDB6\\uDDBB\\uDDD2\\uDDD3\\uDDD5]|\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD4\\uDDD6-\\uDDDD]|\\uD83D\\uDC6F|\\uD83E[\\uDD3C\\uDDDE\\uDDDF]|[\\u231A\\u231B\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u25FE\\u2614\\u2615\\u2648-\\u2653\\u267F\\u2693\\u26A1\\u26AA\\u26AB\\u26BD\\u26BE\\u26C4\\u26C5\\u26CE\\u26D4\\u26EA\\u26F2\\u26F3\\u26F5\\u26FA\\u26FD\\u2705\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2795-\\u2797\\u27B0\\u27BF\\u2B1B\\u2B1C\\u2B50\\u2B55]|\\uD83C[\\uDC04\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF7C\\uDF7E-\\uDF84\\uDF86-\\uDF93\\uDFA0-\\uDFC1\\uDFC5\\uDFC6\\uDFC8\\uDFC9\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF8-\\uDFFF]|\\uD83D[\\uDC00-\\uDC07\\uDC09-\\uDC14\\uDC16-\\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-\\uDE44\\uDE48-\\uDE4A\\uDE80-\\uDEA2\\uDEA4-\\uDEB3\\uDEB7-\\uDEBF\\uDEC1-\\uDEC5\\uDED0-\\uDED2\\uDED5-\\uDED7\\uDEEB\\uDEEC\\uDEF4-\\uDEFC\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0D\\uDD0E\\uDD10-\\uDD17\\uDD1D\\uDD20-\\uDD25\\uDD27-\\uDD2F\\uDD3A\\uDD3F-\\uDD45\\uDD47-\\uDD76\\uDD78\\uDD7A-\\uDDB4\\uDDB7\\uDDBA\\uDDBC-\\uDDCB\\uDDD0\\uDDE0-\\uDDFF\\uDE70-\\uDE74\\uDE78-\\uDE7A\\uDE80-\\uDE86\\uDE90-\\uDEA8\\uDEB0-\\uDEB6\\uDEC0-\\uDEC2\\uDED0-\\uDED6]|(?:[\\u231A\\u231B\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u25FE\\u2614\\u2615\\u2648-\\u2653\\u267F\\u2693\\u26A1\\u26AA\\u26AB\\u26BD\\u26BE\\u26C4\\u26C5\\u26CE\\u26D4\\u26EA\\u26F2\\u26F3\\u26F5\\u26FA\\u26FD\\u2705\\u270A\\u270B\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2795-\\u2797\\u27B0\\u27BF\\u2B1B\\u2B1C\\u2B50\\u2B55]|\\uD83C[\\uDC04\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF7C\\uDF7E-\\uDF93\\uDFA0-\\uDFCA\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF4\\uDFF8-\\uDFFF]|\\uD83D[\\uDC00-\\uDC3E\\uDC40\\uDC42-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDD7A\\uDD95\\uDD96\\uDDA4\\uDDFB-\\uDE4F\\uDE80-\\uDEC5\\uDECC\\uDED0-\\uDED2\\uDED5-\\uDED7\\uDEEB\\uDEEC\\uDEF4-\\uDEFC\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0C-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD78\\uDD7A-\\uDDCB\\uDDCD-\\uDDFF\\uDE70-\\uDE74\\uDE78-\\uDE7A\\uDE80-\\uDE86\\uDE90-\\uDEA8\\uDEB0-\\uDEB6\\uDEC0-\\uDEC2\\uDED0-\\uDED6])|(?:[#\\*0-9\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u23CF\\u23E9-\\u23F3\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB-\\u25FE\\u2600-\\u2604\\u260E\\u2611\\u2614\\u2615\\u2618\\u261D\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u2648-\\u2653\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u267F\\u2692-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A1\\u26A7\\u26AA\\u26AB\\u26B0\\u26B1\\u26BD\\u26BE\\u26C4\\u26C5\\u26C8\\u26CE\\u26CF\\u26D1\\u26D3\\u26D4\\u26E9\\u26EA\\u26F0-\\u26F5\\u26F7-\\u26FA\\u26FD\\u2702\\u2705\\u2708-\\u270D\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2728\\u2733\\u2734\\u2744\\u2747\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2763\\u2764\\u2795-\\u2797\\u27A1\\u27B0\\u27BF\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B50\\u2B55\\u3030\\u303D\\u3297\\u3299]|\\uD83C[\\uDC04\\uDCCF\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE02\\uDE1A\\uDE2F\\uDE32-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF21\\uDF24-\\uDF93\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E-\\uDFF0\\uDFF3-\\uDFF5\\uDFF7-\\uDFFF]|\\uD83D[\\uDC00-\\uDCFD\\uDCFF-\\uDD3D\\uDD49-\\uDD4E\\uDD50-\\uDD67\\uDD6F\\uDD70\\uDD73-\\uDD7A\\uDD87\\uDD8A-\\uDD8D\\uDD90\\uDD95\\uDD96\\uDDA4\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA-\\uDE4F\\uDE80-\\uDEC5\\uDECB-\\uDED2\\uDED5-\\uDED7\\uDEE0-\\uDEE5\\uDEE9\\uDEEB\\uDEEC\\uDEF0\\uDEF3-\\uDEFC\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0C-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD78\\uDD7A-\\uDDCB\\uDDCD-\\uDDFF\\uDE70-\\uDE74\\uDE78-\\uDE7A\\uDE80-\\uDE86\\uDE90-\\uDEA8\\uDEB0-\\uDEB6\\uDEC0-\\uDEC2\\uDED0-\\uDED6])\\uFE0F|(?:[\\u261D\\u26F9\\u270A-\\u270D]|\\uD83C[\\uDF85\\uDFC2-\\uDFC4\\uDFC7\\uDFCA-\\uDFCC]|\\uD83D[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66-\\uDC78\\uDC7C\\uDC81-\\uDC83\\uDC85-\\uDC87\\uDC8F\\uDC91\\uDCAA\\uDD74\\uDD75\\uDD7A\\uDD90\\uDD95\\uDD96\\uDE45-\\uDE47\\uDE4B-\\uDE4F\\uDEA3\\uDEB4-\\uDEB6\\uDEC0\\uDECC]|\\uD83E[\\uDD0C\\uDD0F\\uDD18-\\uDD1F\\uDD26\\uDD30-\\uDD39\\uDD3C-\\uDD3E\\uDD77\\uDDB5\\uDDB6\\uDDB8\\uDDB9\\uDDBB\\uDDCD-\\uDDCF\\uDDD1-\\uDDDD])/g;\n};\n","import stripAnsi from 'strip-ansi';\nimport eastAsianWidth from 'eastasianwidth';\nimport emojiRegex from 'emoji-regex';\n\nexport default function stringWidth(string, options = {}) {\n\tif (typeof string !== 'string' || string.length === 0) {\n\t\treturn 0;\n\t}\n\n\toptions = {\n\t\tambiguousIsNarrow: true,\n\t\t...options\n\t};\n\n\tstring = stripAnsi(string);\n\n\tif (string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tstring = string.replace(emojiRegex(), ' ');\n\n\tconst ambiguousCharacterWidth = options.ambiguousIsNarrow ? 1 : 2;\n\tlet width = 0;\n\n\tfor (const character of 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 >= 0x300 && codePoint <= 0x36F) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst code = eastAsianWidth.eastAsianWidth(character);\n\t\tswitch (code) {\n\t\t\tcase 'F':\n\t\t\tcase 'W':\n\t\t\t\twidth += 2;\n\t\t\t\tbreak;\n\t\t\tcase 'A':\n\t\t\t\twidth += ambiguousCharacterWidth;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\twidth += 1;\n\t\t}\n\t}\n\n\treturn width;\n}\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 stringWidth from 'string-width';\nimport stripAnsi from 'strip-ansi';\nimport ansiStyles from 'ansi-styles';\n\nconst ESCAPES = new Set([\n\t'\\u001B',\n\t'\\u009B',\n]);\n\nconst END_CODE = 39;\nconst ANSI_ESCAPE_BELL = '\\u0007';\nconst ANSI_CSI = '[';\nconst ANSI_OSC = ']';\nconst ANSI_SGR_TERMINATOR = 'm';\nconst ANSI_ESCAPE_LINK = `${ANSI_OSC}8;;`;\n\nconst wrapAnsiCode = code => `${ESCAPES.values().next().value}${ANSI_CSI}${code}${ANSI_SGR_TERMINATOR}`;\nconst wrapAnsiHyperlink = uri => `${ESCAPES.values().next().value}${ANSI_ESCAPE_LINK}${uri}${ANSI_ESCAPE_BELL}`;\n\n// Calculate the length of words split on ' ', ignoring\n// the extra characters added by ansi escape codes\nconst wordLengths = string => string.split(' ').map(character => stringWidth(character));\n\n// Wrap a long word across multiple rows\n// Ansi escape codes do not count towards length\nconst wrapWord = (rows, word, columns) => {\n\tconst characters = [...word];\n\n\tlet isInsideEscape = false;\n\tlet isInsideLinkEscape = false;\n\tlet visible = stringWidth(stripAnsi(rows[rows.length - 1]));\n\n\tfor (const [index, character] of characters.entries()) {\n\t\tconst characterLength = stringWidth(character);\n\n\t\tif (visible + characterLength <= columns) {\n\t\t\trows[rows.length - 1] += character;\n\t\t} else {\n\t\t\trows.push(character);\n\t\t\tvisible = 0;\n\t\t}\n\n\t\tif (ESCAPES.has(character)) {\n\t\t\tisInsideEscape = true;\n\t\t\tisInsideLinkEscape = characters.slice(index + 1).join('').startsWith(ANSI_ESCAPE_LINK);\n\t\t}\n\n\t\tif (isInsideEscape) {\n\t\t\tif (isInsideLinkEscape) {\n\t\t\t\tif (character === ANSI_ESCAPE_BELL) {\n\t\t\t\t\tisInsideEscape = false;\n\t\t\t\t\tisInsideLinkEscape = false;\n\t\t\t\t}\n\t\t\t} else if (character === ANSI_SGR_TERMINATOR) {\n\t\t\t\tisInsideEscape = false;\n\t\t\t}\n\n\t\t\tcontinue;\n\t\t}\n\n\t\tvisible += characterLength;\n\n\t\tif (visible === columns && index < characters.length - 1) {\n\t\t\trows.push('');\n\t\t\tvisible = 0;\n\t\t}\n\t}\n\n\t// It's possible that the last row we copy over is only\n\t// ansi escape characters, handle this edge-case\n\tif (!visible && rows[rows.length - 1].length > 0 && rows.length > 1) {\n\t\trows[rows.length - 2] += rows.pop();\n\t}\n};\n\n// Trims spaces from a string ignoring invisible sequences\nconst stringVisibleTrimSpacesRight = string => {\n\tconst words = string.split(' ');\n\tlet last = words.length;\n\n\twhile (last > 0) {\n\t\tif (stringWidth(words[last - 1]) > 0) {\n\t\t\tbreak;\n\t\t}\n\n\t\tlast--;\n\t}\n\n\tif (last === words.length) {\n\t\treturn string;\n\t}\n\n\treturn words.slice(0, last).join(' ') + words.slice(last).join('');\n};\n\n// The wrap-ansi module can be invoked in either 'hard' or 'soft' wrap mode\n//\n// 'hard' will never allow a string to take up more than columns characters\n//\n// 'soft' allows long words to expand past the column length\nconst exec = (string, columns, options = {}) => {\n\tif (options.trim !== false && string.trim() === '') {\n\t\treturn '';\n\t}\n\n\tlet returnValue = '';\n\tlet escapeCode;\n\tlet escapeUrl;\n\n\tconst lengths = wordLengths(string);\n\tlet rows = [''];\n\n\tfor (const [index, word] of string.split(' ').entries()) {\n\t\tif (options.trim !== false) {\n\t\t\trows[rows.length - 1] = rows[rows.length - 1].trimStart();\n\t\t}\n\n\t\tlet rowLength = stringWidth(rows[rows.length - 1]);\n\n\t\tif (index !== 0) {\n\t\t\tif (rowLength >= columns && (options.wordWrap === false || options.trim === false)) {\n\t\t\t\t// If we start with a new word but the current row length equals the length of the columns, add a new row\n\t\t\t\trows.push('');\n\t\t\t\trowLength = 0;\n\t\t\t}\n\n\t\t\tif (rowLength > 0 || options.trim === false) {\n\t\t\t\trows[rows.length - 1] += ' ';\n\t\t\t\trowLength++;\n\t\t\t}\n\t\t}\n\n\t\t// In 'hard' wrap mode, the length of a line is never allowed to extend past 'columns'\n\t\tif (options.hard && lengths[index] > columns) {\n\t\t\tconst remainingColumns = (columns - rowLength);\n\t\t\tconst breaksStartingThisLine = 1 + Math.floor((lengths[index] - remainingColumns - 1) / columns);\n\t\t\tconst breaksStartingNextLine = Math.floor((lengths[index] - 1) / columns);\n\t\t\tif (breaksStartingNextLine < breaksStartingThisLine) {\n\t\t\t\trows.push('');\n\t\t\t}\n\n\t\t\twrapWord(rows, word, columns);\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (rowLength + lengths[index] > columns && rowLength > 0 && lengths[index] > 0) {\n\t\t\tif (options.wordWrap === false && rowLength < columns) {\n\t\t\t\twrapWord(rows, word, columns);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\trows.push('');\n\t\t}\n\n\t\tif (rowLength + lengths[index] > columns && options.wordWrap === false) {\n\t\t\twrapWord(rows, word, columns);\n\t\t\tcontinue;\n\t\t}\n\n\t\trows[rows.length - 1] += word;\n\t}\n\n\tif (options.trim !== false) {\n\t\trows = rows.map(row => stringVisibleTrimSpacesRight(row));\n\t}\n\n\tconst pre = [...rows.join('\\n')];\n\n\tfor (const [index, character] of pre.entries()) {\n\t\treturnValue += character;\n\n\t\tif (ESCAPES.has(character)) {\n\t\t\tconst {groups} = new RegExp(`(?:\\\\${ANSI_CSI}(?<code>\\\\d+)m|\\\\${ANSI_ESCAPE_LINK}(?<uri>.*)${ANSI_ESCAPE_BELL})`).exec(pre.slice(index).join('')) || {groups: {}};\n\t\t\tif (groups.code !== undefined) {\n\t\t\t\tconst code = Number.parseFloat(groups.code);\n\t\t\t\tescapeCode = code === END_CODE ? undefined : code;\n\t\t\t} else if (groups.uri !== undefined) {\n\t\t\t\tescapeUrl = groups.uri.length === 0 ? undefined : groups.uri;\n\t\t\t}\n\t\t}\n\n\t\tconst code = ansiStyles.codes.get(Number(escapeCode));\n\n\t\tif (pre[index + 1] === '\\n') {\n\t\t\tif (escapeUrl) {\n\t\t\t\treturnValue += wrapAnsiHyperlink('');\n\t\t\t}\n\n\t\t\tif (escapeCode && code) {\n\t\t\t\treturnValue += wrapAnsiCode(code);\n\t\t\t}\n\t\t} else if (character === '\\n') {\n\t\t\tif (escapeCode && code) {\n\t\t\t\treturnValue += wrapAnsiCode(escapeCode);\n\t\t\t}\n\n\t\t\tif (escapeUrl) {\n\t\t\t\treturnValue += wrapAnsiHyperlink(escapeUrl);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn returnValue;\n};\n\n// For each newline, invoke the method separately\nexport default function wrapAnsi(string, columns, options) {\n\treturn String(string)\n\t\t.normalize()\n\t\t.replace(/\\r\\n/g, '\\n')\n\t\t.split('\\n')\n\t\t.map(line => exec(line, columns, options))\n\t\t.join('\\n');\n}\n","const actions = ['up', 'down', 'left', 'right', 'space', 'enter', 'cancel'] as const;\nexport type Action = (typeof actions)[number];\n\n/** Global settings for Clack programs, stored in memory */\ninterface InternalClackSettings {\n\tactions: Set<Action>;\n\taliases: Map<string, Action>;\n}\n\nexport const settings: InternalClackSettings = {\n\tactions: new Set(actions),\n\taliases: new Map<string, Action>([\n\t\t// vim support\n\t\t['k', 'up'],\n\t\t['j', 'down'],\n\t\t['h', 'left'],\n\t\t['l', 'right'],\n\t\t['\\x03', 'cancel'],\n\t\t// opinionated defaults!\n\t\t['escape', 'cancel'],\n\t]),\n};\n\nexport interface ClackSettings {\n\t/**\n\t * Set custom global aliases for the default actions.\n\t * This will not overwrite existing aliases, it will only add new ones!\n\t *\n\t * @param aliases - An object that maps aliases to actions\n\t * @default { k: 'up', j: 'down', h: 'left', l: 'right', '\\x03': 'cancel', 'escape': 'cancel' }\n\t */\n\taliases: Record<string, Action>;\n}\n\nexport function updateSettings(updates: ClackSettings) {\n\tfor (const _key in updates) {\n\t\tconst key = _key as keyof ClackSettings;\n\t\tif (!Object.hasOwn(updates, key)) continue;\n\t\tconst value = updates[key];\n\n\t\tswitch (key) {\n\t\t\tcase 'aliases': {\n\t\t\t\tfor (const alias in value) {\n\t\t\t\t\tif (!Object.hasOwn(value, alias)) continue;\n\t\t\t\t\tif (!settings.aliases.has(alias)) {\n\t\t\t\t\t\tsettings.aliases.set(alias, value[alias]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Check if a key is an alias for a default action\n * @param key - The raw key which might match to an action\n * @param action - The action to match\n * @returns boolean\n */\nexport function isActionKey(key: string | Array<string | undefined>, action: Action) {\n\tif (typeof key === 'string') {\n\t\treturn settings.aliases.get(key) === action;\n\t}\n\n\tfor (const value of key) {\n\t\tif (value === undefined) continue;\n\t\tif (isActionKey(value, action)) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n","export function diffLines(a: string, b: string) {\n\tif (a === b) return;\n\n\tconst aLines = a.split('\\n');\n\tconst bLines = b.split('\\n');\n\tconst diff: number[] = [];\n\n\tfor (let i = 0; i < Math.max(aLines.length, bLines.length); i++) {\n\t\tif (aLines[i] !== bLines[i]) diff.push(i);\n\t}\n\n\treturn diff;\n}\n","import { stdin, stdout } from 'node:process';\nimport type { Key } from 'node:readline';\nimport * as readline from 'node:readline';\nimport type { Readable } from 'node:stream';\nimport { cursor } from 'sisteransi';\nimport { isActionKey } from './settings';\n\nexport * from './string';\nexport * from './settings';\n\nconst isWindows = globalThis.process.platform.startsWith('win');\n\nexport const CANCEL_SYMBOL = Symbol('clack:cancel');\n\nexport function isCancel(value: unknown): value is symbol {\n\treturn value === CANCEL_SYMBOL;\n}\n\nexport function setRawMode(input: Readable, value: boolean) {\n\tconst i = input as typeof stdin;\n\n\tif (i.isTTY) i.setRawMode(value);\n}\n\nexport function block({\n\tinput = stdin,\n\toutput = stdout,\n\toverwrite = true,\n\thideCursor = true,\n} = {}) {\n\tconst rl = readline.createInterface({\n\t\tinput,\n\t\toutput,\n\t\tprompt: '',\n\t\ttabSize: 1,\n\t});\n\treadline.emitKeypressEvents(input, rl);\n\tif (input.isTTY) input.setRawMode(true);\n\n\tconst clear = (data: Buffer, { name, sequence }: Key) => {\n\t\tconst str = String(data);\n\t\tif (isActionKey([str, name, sequence], 'cancel')) {\n\t\t\tif (hideCursor) output.write(cursor.show);\n\t\t\tprocess.exit(0);\n\t\t\treturn;\n\t\t}\n\t\tif (!overwrite) return;\n\t\tconst dx = name === 'return' ? 0 : -1;\n\t\tconst dy = name === 'return' ? -1 : 0;\n\n\t\treadline.moveCursor(output, dx, dy, () => {\n\t\t\treadline.clearLine(output, 1, () => {\n\t\t\t\tinput.once('keypress', clear);\n\t\t\t});\n\t\t});\n\t};\n\tif (hideCursor) output.write(cursor.hide);\n\tinput.once('keypress', clear);\n\n\treturn () => {\n\t\tinput.off('keypress', clear);\n\t\tif (hideCursor) output.write(cursor.show);\n\n\t\t// Prevent Windows specific issues: https://github.com/bombshell-dev/clack/issues/176\n\t\tif (input.isTTY && !isWindows) input.setRawMode(false);\n\n\t\t// @ts-expect-error fix for https://github.com/nodejs/node/issues/31762#issuecomment-1441223907\n\t\trl.terminal = false;\n\t\trl.close();\n\t};\n}\n","import { stdin, stdout } from 'node:process';\nimport readline, { type Key, type ReadLine } from 'node:readline';\nimport type { Readable } from 'node:stream';\nimport { Writable } from 'node:stream';\nimport { cursor, erase } from 'sisteransi';\nimport wrap from 'wrap-ansi';\n\nimport { CANCEL_SYMBOL, diffLines, isActionKey, setRawMode, settings } from '../utils';\n\nimport type { ClackEvents, ClackState } from '../types';\nimport type { Action } from '../utils';\n\nexport interface PromptOptions<Self extends Prompt> {\n\trender(this: Omit<Self, 'prompt'>): string | undefined;\n\tplaceholder?: string;\n\tinitialValue?: any;\n\tvalidate?: ((value: any) => string | Error | undefined) | undefined;\n\tinput?: Readable;\n\toutput?: Writable;\n\tdebug?: boolean;\n\tsignal?: AbortSignal;\n}\n\nexport default class Prompt {\n\tprotected input: Readable;\n\tprotected output: Writable;\n\tprivate _abortSignal?: AbortSignal;\n\n\tprivate rl: ReadLine | undefined;\n\tprivate opts: Omit<PromptOptions<Prompt>, 'render' | 'input' | 'output'>;\n\tprivate _render: (context: Omit<Prompt, 'prompt'>) => string | undefined;\n\tprivate _track = false;\n\tprivate _prevFrame = '';\n\tprivate _subscribers = new Map<string, { cb: (...args: any) => any; once?: boolean }[]>();\n\tprotected _cursor = 0;\n\n\tpublic state: ClackState = 'initial';\n\tpublic error = '';\n\tpublic value: any;\n\n\tconstructor(options: PromptOptions<Prompt>, trackValue = true) {\n\t\tconst { input = stdin, output = stdout, render, signal, ...opts } = options;\n\n\t\tthis.opts = opts;\n\t\tthis.onKeypress = this.onKeypress.bind(this);\n\t\tthis.close = this.close.bind(this);\n\t\tthis.render = this.render.bind(this);\n\t\tthis._render = render.bind(this);\n\t\tthis._track = trackValue;\n\t\tthis._abortSignal = signal;\n\n\t\tthis.input = input;\n\t\tthis.output = output;\n\t}\n\n\t/**\n\t * Unsubscribe all listeners\n\t */\n\tprotected unsubscribe() {\n\t\tthis._subscribers.clear();\n\t}\n\n\t/**\n\t * Set a subscriber with opts\n\t * @param event - The event name\n\t */\n\tprivate setSubscriber<T extends keyof ClackEvents>(\n\t\tevent: T,\n\t\topts: { cb: ClackEvents[T]; once?: boolean }\n\t) {\n\t\tconst params = this._subscribers.get(event) ?? [];\n\t\tparams.push(opts);\n\t\tthis._subscribers.set(event, params);\n\t}\n\n\t/**\n\t * Subscribe to an event\n\t * @param event - The event name\n\t * @param cb - The callback\n\t */\n\tpublic on<T extends keyof ClackEvents>(event: T, cb: ClackEvents[T]) {\n\t\tthis.setSubscriber(event, { cb });\n\t}\n\n\t/**\n\t * Subscribe to an event once\n\t * @param event - The event name\n\t * @param cb - The callback\n\t */\n\tpublic once<T extends keyof ClackEvents>(event: T, cb: ClackEvents[T]) {\n\t\tthis.setSubscriber(event, { cb, once: true });\n\t}\n\n\t/**\n\t * Emit an event with data\n\t * @param event - The event name\n\t * @param data - The data to pass to the callback\n\t */\n\tpublic emit<T extends keyof ClackEvents>(event: T, ...data: Parameters<ClackEvents[T]>) {\n\t\tconst cbs = this._subscribers.get(event) ?? [];\n\t\tconst cleanup: (() => void)[] = [];\n\n\t\tfor (const subscriber of cbs) {\n\t\t\tsubscriber.cb(...data);\n\n\t\t\tif (subscriber.once) {\n\t\t\t\tcleanup.push(() => cbs.splice(cbs.indexOf(subscriber), 1));\n\t\t\t}\n\t\t}\n\n\t\tfor (const cb of cleanup) {\n\t\t\tcb();\n\t\t}\n\t}\n\n\tpublic prompt() {\n\t\treturn new Promise<string | symbol>((resolve, reject) => {\n\t\t\tif (this._abortSignal) {\n\t\t\t\tif (this._abortSignal.aborted) {\n\t\t\t\t\tthis.state = 'cancel';\n\n\t\t\t\t\tthis.close();\n\t\t\t\t\treturn resolve(CANCEL_SYMBOL);\n\t\t\t\t}\n\n\t\t\t\tthis._abortSignal.addEventListener(\n\t\t\t\t\t'abort',\n\t\t\t\t\t() => {\n\t\t\t\t\t\tthis.state = 'cancel';\n\t\t\t\t\t\tthis.close();\n\t\t\t\t\t},\n\t\t\t\t\t{ once: true }\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst sink = new Writable();\n\t\t\tsink._write = (chunk, encoding, done) => {\n\t\t\t\tif (this._track) {\n\t\t\t\t\tthis.value = this.rl?.line.replace(/\\t/g, '');\n\t\t\t\t\tthis._cursor = this.rl?.cursor ?? 0;\n\t\t\t\t\tthis.emit('value', this.value);\n\t\t\t\t}\n\t\t\t\tdone();\n\t\t\t};\n\t\t\tthis.input.pipe(sink);\n\n\t\t\tthis.rl = readline.createInterface({\n\t\t\t\tinput: this.input,\n\t\t\t\toutput: sink,\n\t\t\t\ttabSize: 2,\n\t\t\t\tprompt: '',\n\t\t\t\tescapeCodeTimeout: 50,\n\t\t\t\tterminal: true,\n\t\t\t});\n\t\t\treadline.emitKeypressEvents(this.input, this.rl);\n\t\t\tthis.rl.prompt();\n\t\t\tif (this.opts.initialValue !== undefined && this._track) {\n\t\t\t\tthis.rl.write(this.opts.initialValue);\n\t\t\t}\n\n\t\t\tthis.input.on('keypress', this.onKeypress);\n\t\t\tsetRawMode(this.input, true);\n\t\t\tthis.output.on('resize', this.render);\n\n\t\t\tthis.render();\n\n\t\t\tthis.once('submit', () => {\n\t\t\t\tthis.output.write(cursor.show);\n\t\t\t\tthis.output.off('resize', this.render);\n\t\t\t\tsetRawMode(this.input, false);\n\t\t\t\tresolve(this.value);\n\t\t\t});\n\t\t\tthis.once('cancel', () => {\n\t\t\t\tthis.output.write(cursor.show);\n\t\t\t\tthis.output.off('resize', this.render);\n\t\t\t\tsetRawMode(this.input, false);\n\t\t\t\tresolve(CANCEL_SYMBOL);\n\t\t\t});\n\t\t});\n\t}\n\n\tprivate onKeypress(char: string, key?: Key) {\n\t\tif (this.state === 'error') {\n\t\t\tthis.state = 'active';\n\t\t}\n\t\tif (key?.name) {\n\t\t\tif (!this._track && settings.aliases.has(key.name)) {\n\t\t\t\tthis.emit('cursor', settings.aliases.get(key.name));\n\t\t\t}\n\t\t\tif (settings.actions.has(key.name as Action)) {\n\t\t\t\tthis.emit('cursor', key.name as Action);\n\t\t\t}\n\t\t}\n\t\tif (char && (char.toLowerCase() === 'y' || char.toLowerCase() === 'n')) {\n\t\t\tthis.emit('confirm', char.toLowerCase() === 'y');\n\t\t}\n\t\tif (char === '\\t' && this.opts.placeholder) {\n\t\t\tif (!this.value) {\n\t\t\t\tthis.rl?.write(this.opts.placeholder);\n\t\t\t\tthis.emit('value', this.opts.placeholder);\n\t\t\t}\n\t\t}\n\t\tif (char) {\n\t\t\tthis.emit('key', char.toLowerCase());\n\t\t}\n\n\t\tif (key?.name === 'return') {\n\t\t\tif (!this.value && this.opts.placeholder) {\n\t\t\t\tthis.rl?.write(this.opts.placeholder);\n\t\t\t\tthis.emit('value', this.opts.placeholder);\n\t\t\t}\n\n\t\t\tif (this.opts.validate) {\n\t\t\t\tconst problem = this.opts.validate(this.value);\n\t\t\t\tif (problem) {\n\t\t\t\t\tthis.error = problem instanceof Error ? problem.message : problem;\n\t\t\t\t\tthis.state = 'error';\n\t\t\t\t\tthis.rl?.write(this.value);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (this.state !== 'error') {\n\t\t\t\tthis.state = 'submit';\n\t\t\t}\n\t\t}\n\n\t\tif (isActionKey([char, key?.name, key?.sequence], 'cancel')) {\n\t\t\tthis.state = 'cancel';\n\t\t}\n\t\tif (this.state === 'submit' || this.state === 'cancel') {\n\t\t\tthis.emit('finalize');\n\t\t}\n\t\tthis.render();\n\t\tif (this.state === 'submit' || this.state === 'cancel') {\n\t\t\tthis.close();\n\t\t}\n\t}\n\n\tprotected close() {\n\t\tthis.input.unpipe();\n\t\tthis.input.removeListener('keypress', this.onKeypress);\n\t\tthis.output.write('\\n');\n\t\tsetRawMode(this.input, false);\n\t\tthis.rl?.close();\n\t\tthis.rl = undefined;\n\t\tthis.emit(`${this.state}`, this.value);\n\t\tthis.unsubscribe();\n\t}\n\n\tprivate restoreCursor() {\n\t\tconst lines =\n\t\t\twrap(this._prevFrame, process.stdout.columns, { hard: true }).split('\\n').length - 1;\n\t\tthis.output.write(cursor.move(-999, lines * -1));\n\t}\n\n\tprivate render() {\n\t\tconst frame = wrap(this._render(this) ?? '', process.stdout.columns, { hard: true });\n\t\tif (frame === this._prevFrame) return;\n\n\t\tif (this.state === 'initial') {\n\t\t\tthis.output.write(cursor.hide);\n\t\t} else {\n\t\t\tconst diff = diffLines(this._prevFrame, frame);\n\t\t\tthis.restoreCursor();\n\t\t\t// If a single line has changed, only update that line\n\t\t\tif (diff && diff?.length === 1) {\n\t\t\t\tconst diffLine = diff[0];\n\t\t\t\tthis.output.write(cursor.move(0, diffLine));\n\t\t\t\tthis.output.write(erase.lines(1));\n\t\t\t\tconst lines = frame.split('\\n');\n\t\t\t\tthis.output.write(lines[diffLine]);\n\t\t\t\tthis._prevFrame = frame;\n\t\t\t\tthis.output.write(cursor.move(0, lines.length - diffLine - 1));\n\t\t\t\treturn;\n\t\t\t\t// If many lines have changed, rerender everything past the first line\n\t\t\t}\n\t\t\tif (diff && diff?.length > 1) {\n\t\t\t\tconst diffLine = diff[0];\n\t\t\t\tthis.output.write(cursor.move(0, diffLine));\n\t\t\t\tthis.output.write(erase.down());\n\t\t\t\tconst lines = frame.split('\\n');\n\t\t\t\tconst newLines = lines.slice(diffLine);\n\t\t\t\tthis.output.write(newLines.join('\\n'));\n\t\t\t\tthis._prevFrame = frame;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.output.write(erase.down());\n\t\t}\n\n\t\tthis.output.write(frame);\n\t\tif (this.state === 'initial') {\n\t\t\tthis.state = 'active';\n\t\t}\n\t\tthis._prevFrame = frame;\n\t}\n}\n","import { cursor } from 'sisteransi';\nimport Prompt, { type PromptOptions } from './prompt';\n\ninterface ConfirmOptions extends PromptOptions<ConfirmPrompt> {\n\tactive: string;\n\tinactive: string;\n\tinitialValue?: boolean;\n}\nexport default class ConfirmPrompt extends Prompt {\n\tget cursor() {\n\t\treturn this.value ? 0 : 1;\n\t}\n\n\tprivate get _value() {\n\t\treturn this.cursor === 0;\n\t}\n\n\tconstructor(opts: ConfirmOptions) {\n\t\tsuper(opts, false);\n\t\tthis.value = !!opts.initialValue;\n\n\t\tthis.on('value', () => {\n\t\t\tthis.value = this._value;\n\t\t});\n\n\t\tthis.on('confirm', (confirm) => {\n\t\t\tthis.output.write(cursor.move(0, -1));\n\t\t\tthis.value = confirm;\n\t\t\tthis.state = 'submit';\n\t\t\tthis.close();\n\t\t});\n\n\t\tthis.on('cursor', () => {\n\t\t\tthis.value = !this.value;\n\t\t});\n\t}\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.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 { stripVTControlCharacters as strip } from 'node:util';\nimport {\n\tConfirmPrompt,\n\tGroupMultiSelectPrompt,\n\tMultiSelectPrompt,\n\tPasswordPrompt,\n\tSelectKeyPrompt,\n\tSelectPrompt,\n\ttype State,\n\tTextPrompt,\n\tblock,\n\tisCancel,\n} from '@clack/core';\nimport isUnicodeSupported from 'is-unicode-supported';\nimport color from 'picocolors';\nimport { cursor, erase } from 'sisteransi';\n\nexport { isCancel } from '@clack/core';\nexport { updateSettings, type ClackSettings } from '@clack/core';\n\nconst unicode = isUnicodeSupported();\nconst s = (c: string, fallback: string) => (unicode ? c : fallback);\nconst S_STEP_ACTIVE = s('◆', '*');\nconst S_STEP_CANCEL = s('■', 'x');\nconst S_STEP_ERROR = s('▲', 'x');\nconst S_STEP_SUBMIT = s('◇', 'o');\n\nconst S_BAR_START = s('┌', 'T');\nconst S_BAR = s('│', '|');\nconst S_BAR_END = s('└', '—');\n\nconst S_RADIO_ACTIVE = s('●', '>');\nconst S_RADIO_INACTIVE = s('○', ' ');\nconst S_CHECKBOX_ACTIVE = s('◻', '[•]');\nconst S_CHECKBOX_SELECTED = s('◼', '[+]');\nconst S_CHECKBOX_INACTIVE = s('◻', '[ ]');\nconst S_PASSWORD_MASK = s('▪', '•');\n\nconst S_BAR_H = s('─', '-');\nconst S_CORNER_TOP_RIGHT = s('╮', '+');\nconst S_CONNECT_LEFT = s('├', '+');\nconst S_CORNER_BOTTOM_RIGHT = s('╯', '+');\n\nconst S_INFO = s('●', '•');\nconst S_SUCCESS = s('◆', '*');\nconst S_WARN = s('▲', '!');\nconst S_ERROR = s('■', 'x');\n\nconst symbol = (state: State) => {\n\tswitch (state) {\n\t\tcase 'initial':\n\t\tcase 'active':\n\t\t\treturn color.cyan(S_STEP_ACTIVE);\n\t\tcase 'cancel':\n\t\t\treturn color.red(S_STEP_CANCEL);\n\t\tcase 'error':\n\t\t\treturn color.yellow(S_STEP_ERROR);\n\t\tcase 'submit':\n\t\t\treturn color.green(S_STEP_SUBMIT);\n\t}\n};\n\ninterface LimitOptionsParams<TOption> {\n\toptions: TOption[];\n\tmaxItems: number | undefined;\n\tcursor: number;\n\tstyle: (option: TOption, active: boolean) => string;\n}\n\nconst limitOptions = <TOption>(params: LimitOptionsParams<TOption>): string[] => {\n\tconst { cursor, options, style } = params;\n\n\tconst paramMaxItems = params.maxItems ?? Number.POSITIVE_INFINITY;\n\tconst outputMaxItems = Math.max(process.stdout.rows - 4, 0);\n\t// We clamp to minimum 5 because anything less doesn't make sense UX wise\n\tconst maxItems = Math.min(outputMaxItems, Math.max(paramMaxItems, 5));\n\tlet slidingWindowLocation = 0;\n\n\tif (cursor >= slidingWindowLocation + maxItems - 3) {\n\t\tslidingWindowLocation = Math.max(Math.min(cursor - maxItems + 3, options.length - maxItems), 0);\n\t} else if (cursor < slidingWindowLocation + 2) {\n\t\tslidingWindowLocation = Math.max(cursor - 2, 0);\n\t}\n\n\tconst shouldRenderTopEllipsis = maxItems < options.length && slidingWindowLocation > 0;\n\tconst shouldRenderBottomEllipsis =\n\t\tmaxItems < options.length && slidingWindowLocation + maxItems < options.length;\n\n\treturn options\n\t\t.slice(slidingWindowLocation, slidingWindowLocation + maxItems)\n\t\t.map((option, i, arr) => {\n\t\t\tconst isTopLimit = i === 0 && shouldRenderTopEllipsis;\n\t\t\tconst isBottomLimit = i === arr.length - 1 && shouldRenderBottomEllipsis;\n\t\t\treturn isTopLimit || isBottomLimit\n\t\t\t\t? color.dim('...')\n\t\t\t\t: style(option, i + slidingWindowLocation === cursor);\n\t\t});\n};\n\nexport interface TextOptions {\n\tmessage: string;\n\tplaceholder?: string;\n\tdefaultValue?: string;\n\tinitialValue?: string;\n\tvalidate?: (value: string) => string | Error | undefined;\n}\nexport const text = (opts: TextOptions) => {\n\treturn new TextPrompt({\n\t\tvalidate: opts.validate,\n\t\tplaceholder: opts.placeholder,\n\t\tdefaultValue: opts.defaultValue,\n\t\tinitialValue: opts.initialValue,\n\t\trender() {\n\t\t\tconst title = `${color.gray(S_BAR)}\\n${symbol(this.state)} ${opts.message}\\n`;\n\t\t\tconst placeholder = opts.placeholder\n\t\t\t\t? color.inverse(opts.placeholder[0]) + color.dim(opts.placeholder.slice(1))\n\t\t\t\t: color.inverse(color.hidden('_'));\n\t\t\tconst value = !this.value ? placeholder : this.valueWithCursor;\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'error':\n\t\t\t\t\treturn `${title.trim()}\\n${color.yellow(S_BAR)} ${value}\\n${color.yellow(\n\t\t\t\t\t\tS_BAR_END\n\t\t\t\t\t)} ${color.yellow(this.error)}\\n`;\n\t\t\t\tcase 'submit':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${color.dim(this.value || opts.placeholder)}`;\n\t\t\t\tcase 'cancel':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${color.strikethrough(\n\t\t\t\t\t\tcolor.dim(this.value ?? '')\n\t\t\t\t\t)}${this.value?.trim() ? `\\n${color.gray(S_BAR)}` : ''}`;\n\t\t\t\tdefault:\n\t\t\t\t\treturn `${title}${color.cyan(S_BAR)} ${value}\\n${color.cyan(S_BAR_END)}\\n`;\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<string | symbol>;\n};\n\nexport interface PasswordOptions {\n\tmessage: string;\n\tmask?: string;\n\tvalidate?: (value: string) => string | Error | undefined;\n}\nexport const password = (opts: PasswordOptions) => {\n\treturn new PasswordPrompt({\n\t\tvalidate: opts.validate,\n\t\tmask: opts.mask ?? S_PASSWORD_MASK,\n\t\trender() {\n\t\t\tconst title = `${color.gray(S_BAR)}\\n${symbol(this.state)} ${opts.message}\\n`;\n\t\t\tconst value = this.valueWithCursor;\n\t\t\tconst masked = this.masked;\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'error':\n\t\t\t\t\treturn `${title.trim()}\\n${color.yellow(S_BAR)} ${masked}\\n${color.yellow(\n\t\t\t\t\t\tS_BAR_END\n\t\t\t\t\t)} ${color.yellow(this.error)}\\n`;\n\t\t\t\tcase 'submit':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${color.dim(masked)}`;\n\t\t\t\tcase 'cancel':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${color.strikethrough(color.dim(masked ?? ''))}${\n\t\t\t\t\t\tmasked ? `\\n${color.gray(S_BAR)}` : ''\n\t\t\t\t\t}`;\n\t\t\t\tdefault:\n\t\t\t\t\treturn `${title}${color.cyan(S_BAR)} ${value}\\n${color.cyan(S_BAR_END)}\\n`;\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<string | symbol>;\n};\n\nexport interface ConfirmOptions {\n\tmessage: string;\n\tactive?: string;\n\tinactive?: string;\n\tinitialValue?: boolean;\n}\nexport const confirm = (opts: ConfirmOptions) => {\n\tconst active = opts.active ?? 'Yes';\n\tconst inactive = opts.inactive ?? 'No';\n\treturn new ConfirmPrompt({\n\t\tactive,\n\t\tinactive,\n\t\tinitialValue: opts.initialValue ?? true,\n\t\trender() {\n\t\t\tconst title = `${color.gray(S_BAR)}\\n${symbol(this.state)} ${opts.message}\\n`;\n\t\t\tconst value = this.value ? active : inactive;\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'submit':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${color.dim(value)}`;\n\t\t\t\tcase 'cancel':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${color.strikethrough(\n\t\t\t\t\t\tcolor.dim(value)\n\t\t\t\t\t)}\\n${color.gray(S_BAR)}`;\n\t\t\t\tdefault: {\n\t\t\t\t\treturn `${title}${color.cyan(S_BAR)} ${\n\t\t\t\t\t\tthis.value\n\t\t\t\t\t\t\t? `${color.green(S_RADIO_ACTIVE)} ${active}`\n\t\t\t\t\t\t\t: `${color.dim(S_RADIO_INACTIVE)} ${color.dim(active)}`\n\t\t\t\t\t} ${color.dim('/')} ${\n\t\t\t\t\t\t!this.value\n\t\t\t\t\t\t\t? `${color.green(S_RADIO_ACTIVE)} ${inactive}`\n\t\t\t\t\t\t\t: `${color.dim(S_RADIO_INACTIVE)} ${color.dim(inactive)}`\n\t\t\t\t\t}\\n${color.cyan(S_BAR_END)}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<boolean | symbol>;\n};\n\ntype Primitive = Readonly<string | boolean | number>;\n\nexport type Option<Value> = Value extends Primitive\n\t? {\n\t\t\t/**\n\t\t\t * Internal data for this option.\n\t\t\t */\n\t\t\tvalue: Value;\n\t\t\t/**\n\t\t\t * The optional, user-facing text for this option.\n\t\t\t *\n\t\t\t * By default, the `value` is converted to a string.\n\t\t\t */\n\t\t\tlabel?: string;\n\t\t\t/**\n\t\t\t * An optional hint to display to the user when\n\t\t\t * this option might be selected.\n\t\t\t *\n\t\t\t * By default, no `hint` is displayed.\n\t\t\t */\n\t\t\thint?: string;\n\t\t}\n\t: {\n\t\t\t/**\n\t\t\t * Internal data for this option.\n\t\t\t */\n\t\t\tvalue: Value;\n\t\t\t/**\n\t\t\t * Required. The user-facing text for this option.\n\t\t\t */\n\t\t\tlabel: string;\n\t\t\t/**\n\t\t\t * An optional hint to display to the user when\n\t\t\t * this option might be selected.\n\t\t\t *\n\t\t\t * By default, no `hint` is displayed.\n\t\t\t */\n\t\t\thint?: string;\n\t\t};\n\nexport interface SelectOptions<Value> {\n\tmessage: string;\n\toptions: Option<Value>[];\n\tinitialValue?: Value;\n\tmaxItems?: number;\n}\n\nexport const select = <Value>(opts: SelectOptions<Value>) => {\n\tconst opt = (option: Option<Value>, state: 'inactive' | 'active' | 'selected' | 'cancelled') => {\n\t\tconst label = option.label ?? String(option.value);\n\t\tswitch (state) {\n\t\t\tcase 'selected':\n\t\t\t\treturn `${color.dim(label)}`;\n\t\t\tcase 'active':\n\t\t\t\treturn `${color.green(S_RADIO_ACTIVE)} ${label} ${\n\t\t\t\t\toption.hint ? color.dim(`(${option.hint})`) : ''\n\t\t\t\t}`;\n\t\t\tcase 'cancelled':\n\t\t\t\treturn `${color.strikethrough(color.dim(label))}`;\n\t\t\tdefault:\n\t\t\t\treturn `${color.dim(S_RADIO_INACTIVE)} ${color.dim(label)}`;\n\t\t}\n\t};\n\n\treturn new SelectPrompt({\n\t\toptions: opts.options,\n\t\tinitialValue: opts.initialValue,\n\t\trender() {\n\t\t\tconst title = `${color.gray(S_BAR)}\\n${symbol(this.state)} ${opts.message}\\n`;\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'submit':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${opt(this.options[this.cursor], 'selected')}`;\n\t\t\t\tcase 'cancel':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${opt(\n\t\t\t\t\t\tthis.options[this.cursor],\n\t\t\t\t\t\t'cancelled'\n\t\t\t\t\t)}\\n${color.gray(S_BAR)}`;\n\t\t\t\tdefault: {\n\t\t\t\t\treturn `${title}${color.cyan(S_BAR)} ${limitOptions({\n\t\t\t\t\t\tcursor: this.cursor,\n\t\t\t\t\t\toptions: this.options,\n\t\t\t\t\t\tmaxItems: opts.maxItems,\n\t\t\t\t\t\tstyle: (item, active) => opt(item, active ? 'active' : 'inactive'),\n\t\t\t\t\t}).join(`\\n${color.cyan(S_BAR)} `)}\\n${color.cyan(S_BAR_END)}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<Value | symbol>;\n};\n\nexport const selectKey = <Value extends string>(opts: SelectOptions<Value>) => {\n\tconst opt = (\n\t\toption: Option<Value>,\n\t\tstate: 'inactive' | 'active' | 'selected' | 'cancelled' = 'inactive'\n\t) => {\n\t\tconst label = option.label ?? String(option.value);\n\t\tif (state === 'selected') {\n\t\t\treturn `${color.dim(label)}`;\n\t\t}\n\t\tif (state === 'cancelled') {\n\t\t\treturn `${color.strikethrough(color.dim(label))}`;\n\t\t}\n\t\tif (state === 'active') {\n\t\t\treturn `${color.bgCyan(color.gray(` ${option.value} `))} ${label} ${\n\t\t\t\toption.hint ? color.dim(`(${option.hint})`) : ''\n\t\t\t}`;\n\t\t}\n\t\treturn `${color.gray(color.bgWhite(color.inverse(` ${option.value} `)))} ${label} ${\n\t\t\toption.hint ? color.dim(`(${option.hint})`) : ''\n\t\t}`;\n\t};\n\n\treturn new SelectKeyPrompt({\n\t\toptions: opts.options,\n\t\tinitialValue: opts.initialValue,\n\t\trender() {\n\t\t\tconst title = `${color.gray(S_BAR)}\\n${symbol(this.state)} ${opts.message}\\n`;\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'submit':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${opt(\n\t\t\t\t\t\tthis.options.find((opt) => opt.value === this.value) ?? opts.options[0],\n\t\t\t\t\t\t'selected'\n\t\t\t\t\t)}`;\n\t\t\t\tcase 'cancel':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${opt(this.options[0], 'cancelled')}\\n${color.gray(\n\t\t\t\t\t\tS_BAR\n\t\t\t\t\t)}`;\n\t\t\t\tdefault: {\n\t\t\t\t\treturn `${title}${color.cyan(S_BAR)} ${this.options\n\t\t\t\t\t\t.map((option, i) => opt(option, i === this.cursor ? 'active' : 'inactive'))\n\t\t\t\t\t\t.join(`\\n${color.cyan(S_BAR)} `)}\\n${color.cyan(S_BAR_END)}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<Value | symbol>;\n};\n\nexport interface MultiSelectOptions<Value> {\n\tmessage: string;\n\toptions: Option<Value>[];\n\tinitialValues?: Value[];\n\tmaxItems?: number;\n\trequired?: boolean;\n\tcursorAt?: Value;\n}\nexport const multiselect = <Value>(opts: MultiSelectOptions<Value>) => {\n\tconst opt = (\n\t\toption: Option<Value>,\n\t\tstate: 'inactive' | 'active' | 'selected' | 'active-selected' | 'submitted' | 'cancelled'\n\t) => {\n\t\tconst label = option.label ?? String(option.value);\n\t\tif (state === 'active') {\n\t\t\treturn `${color.cyan(S_CHECKBOX_ACTIVE)} ${label} ${\n\t\t\t\toption.hint ? color.dim(`(${option.hint})`) : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'selected') {\n\t\t\treturn `${color.green(S_CHECKBOX_SELECTED)} ${color.dim(label)} ${\n\t\t\t\toption.hint ? color.dim(`(${option.hint})`) : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'cancelled') {\n\t\t\treturn `${color.strikethrough(color.dim(label))}`;\n\t\t}\n\t\tif (state === 'active-selected') {\n\t\t\treturn `${color.green(S_CHECKBOX_SELECTED)} ${label} ${\n\t\t\t\toption.hint ? color.dim(`(${option.hint})`) : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'submitted') {\n\t\t\treturn `${color.dim(label)}`;\n\t\t}\n\t\treturn `${color.dim(S_CHECKBOX_INACTIVE)} ${color.dim(label)}`;\n\t};\n\n\treturn new MultiSelectPrompt({\n\t\toptions: opts.options,\n\t\tinitialValues: opts.initialValues,\n\t\trequired: opts.required ?? true,\n\t\tcursorAt: opts.cursorAt,\n\t\tvalidate(selected: Value[]) {\n\t\t\tif (this.required && selected.length === 0)\n\t\t\t\treturn `Please select at least one option.\\n${color.reset(\n\t\t\t\t\tcolor.dim(\n\t\t\t\t\t\t`Press ${color.gray(color.bgWhite(color.inverse(' space ')))} to select, ${color.gray(\n\t\t\t\t\t\t\tcolor.bgWhite(color.inverse(' enter '))\n\t\t\t\t\t\t)} to submit`\n\t\t\t\t\t)\n\t\t\t\t)}`;\n\t\t},\n\t\trender() {\n\t\t\tconst title = `${color.gray(S_BAR)}\\n${symbol(this.state)} ${opts.message}\\n`;\n\n\t\t\tconst styleOption = (option: Option<Value>, active: boolean) => {\n\t\t\t\tconst selected = this.value.includes(option.value);\n\t\t\t\tif (active && selected) {\n\t\t\t\t\treturn opt(option, 'active-selected');\n\t\t\t\t}\n\t\t\t\tif (selected) {\n\t\t\t\t\treturn opt(option, 'selected');\n\t\t\t\t}\n\t\t\t\treturn opt(option, active ? 'active' : 'inactive');\n\t\t\t};\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'submit': {\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${\n\t\t\t\t\t\tthis.options\n\t\t\t\t\t\t\t.filter(({ value }) => this.value.includes(value))\n\t\t\t\t\t\t\t.map((option) => opt(option, 'submitted'))\n\t\t\t\t\t\t\t.join(color.dim(', ')) || color.dim('none')\n\t\t\t\t\t}`;\n\t\t\t\t}\n\t\t\t\tcase 'cancel': {\n\t\t\t\t\tconst label = this.options\n\t\t\t\t\t\t.filter(({ value }) => this.value.includes(value))\n\t\t\t\t\t\t.map((option) => opt(option, 'cancelled'))\n\t\t\t\t\t\t.join(color.dim(', '));\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${\n\t\t\t\t\t\tlabel.trim() ? `${label}\\n${color.gray(S_BAR)}` : ''\n\t\t\t\t\t}`;\n\t\t\t\t}\n\t\t\t\tcase 'error': {\n\t\t\t\t\tconst footer = this.error\n\t\t\t\t\t\t.split('\\n')\n\t\t\t\t\t\t.map((ln, i) =>\n\t\t\t\t\t\t\ti === 0 ? `${color.yellow(S_BAR_END)} ${color.yellow(ln)}` : ` ${ln}`\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.join('\\n');\n\t\t\t\t\treturn `${title + color.yellow(S_BAR)} ${limitOptions({\n\t\t\t\t\t\toptions: this.options,\n\t\t\t\t\t\tcursor: this.cursor,\n\t\t\t\t\t\tmaxItems: opts.maxItems,\n\t\t\t\t\t\tstyle: styleOption,\n\t\t\t\t\t}).join(`\\n${color.yellow(S_BAR)} `)}\\n${footer}\\n`;\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\treturn `${title}${color.cyan(S_BAR)} ${limitOptions({\n\t\t\t\t\t\toptions: this.options,\n\t\t\t\t\t\tcursor: this.cursor,\n\t\t\t\t\t\tmaxItems: opts.maxItems,\n\t\t\t\t\t\tstyle: styleOption,\n\t\t\t\t\t}).join(`\\n${color.cyan(S_BAR)} `)}\\n${color.cyan(S_BAR_END)}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<Value[] | symbol>;\n};\n\nexport interface GroupMultiSelectOptions<Value> {\n\tmessage: string;\n\toptions: Record<string, Option<Value>[]>;\n\tinitialValues?: Value[];\n\trequired?: boolean;\n\tcursorAt?: Value;\n\tselectableGroups?: boolean;\n}\nexport const groupMultiselect = <Value>(opts: GroupMultiSelectOptions<Value>) => {\n\tconst { selectableGroups = true } = opts;\n\tconst opt = (\n\t\toption: Option<Value>,\n\t\tstate:\n\t\t\t| 'inactive'\n\t\t\t| 'active'\n\t\t\t| 'selected'\n\t\t\t| 'active-selected'\n\t\t\t| 'group-active'\n\t\t\t| 'group-active-selected'\n\t\t\t| 'submitted'\n\t\t\t| 'cancelled',\n\t\toptions: Option<Value>[] = []\n\t) => {\n\t\tconst label = option.label ?? String(option.value);\n\t\tconst isItem = typeof (option as any).group === 'string';\n\t\tconst next = isItem && (options[options.indexOf(option) + 1] ?? { group: true });\n\t\tconst isLast = isItem && (next as any).group === true;\n\t\tconst prefix = isItem ? (selectableGroups ? `${isLast ? S_BAR_END : S_BAR} ` : ' ') : '';\n\n\t\tif (state === 'active') {\n\t\t\treturn `${color.dim(prefix)}${color.cyan(S_CHECKBOX_ACTIVE)} ${label} ${\n\t\t\t\toption.hint ? color.dim(`(${option.hint})`) : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'group-active') {\n\t\t\treturn `${prefix}${color.cyan(S_CHECKBOX_ACTIVE)} ${color.dim(label)}`;\n\t\t}\n\t\tif (state === 'group-active-selected') {\n\t\t\treturn `${prefix}${color.green(S_CHECKBOX_SELECTED)} ${color.dim(label)}`;\n\t\t}\n\t\tif (state === 'selected') {\n\t\t\tconst selectedCheckbox = isItem || selectableGroups ? color.green(S_CHECKBOX_SELECTED) : '';\n\t\t\treturn `${color.dim(prefix)}${selectedCheckbox} ${color.dim(label)} ${\n\t\t\t\toption.hint ? color.dim(`(${option.hint})`) : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'cancelled') {\n\t\t\treturn `${color.strikethrough(color.dim(label))}`;\n\t\t}\n\t\tif (state === 'active-selected') {\n\t\t\treturn `${color.dim(prefix)}${color.green(S_CHECKBOX_SELECTED)} ${label} ${\n\t\t\t\toption.hint ? color.dim(`(${option.hint})`) : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'submitted') {\n\t\t\treturn `${color.dim(label)}`;\n\t\t}\n\t\tconst unselectedCheckbox = isItem || selectableGroups ? color.dim(S_CHECKBOX_INACTIVE) : '';\n\t\treturn `${color.dim(prefix)}${unselectedCheckbox} ${color.dim(label)}`;\n\t};\n\n\treturn new GroupMultiSelectPrompt({\n\t\toptions: opts.options,\n\t\tinitialValues: opts.initialValues,\n\t\trequired: opts.required ?? true,\n\t\tcursorAt: opts.cursorAt,\n\t\tselectableGroups,\n\t\tvalidate(selected: Value[]) {\n\t\t\tif (this.required && selected.length === 0)\n\t\t\t\treturn `Please select at least one option.\\n${color.reset(\n\t\t\t\t\tcolor.dim(\n\t\t\t\t\t\t`Press ${color.gray(color.bgWhite(color.inverse(' space ')))} to select, ${color.gray(\n\t\t\t\t\t\t\tcolor.bgWhite(color.inverse(' enter '))\n\t\t\t\t\t\t)} to submit`\n\t\t\t\t\t)\n\t\t\t\t)}`;\n\t\t},\n\t\trender() {\n\t\t\tconst title = `${color.gray(S_BAR)}\\n${symbol(this.state)} ${opts.message}\\n`;\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'submit': {\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${this.options\n\t\t\t\t\t\t.filter(({ value }) => this.value.includes(value))\n\t\t\t\t\t\t.map((option) => opt(option, 'submitted'))\n\t\t\t\t\t\t.join(color.dim(', '))}`;\n\t\t\t\t}\n\t\t\t\tcase 'cancel': {\n\t\t\t\t\tconst label = this.options\n\t\t\t\t\t\t.filter(({ value }) => this.value.includes(value))\n\t\t\t\t\t\t.map((option) => opt(option, 'cancelled'))\n\t\t\t\t\t\t.join(color.dim(', '));\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${\n\t\t\t\t\t\tlabel.trim() ? `${label}\\n${color.gray(S_BAR)}` : ''\n\t\t\t\t\t}`;\n\t\t\t\t}\n\t\t\t\tcase 'error': {\n\t\t\t\t\tconst footer = this.error\n\t\t\t\t\t\t.split('\\n')\n\t\t\t\t\t\t.map((ln, i) =>\n\t\t\t\t\t\t\ti === 0 ? `${color.yellow(S_BAR_END)} ${color.yellow(ln)}` : ` ${ln}`\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.join('\\n');\n\t\t\t\t\treturn `${title}${color.yellow(S_BAR)} ${this.options\n\t\t\t\t\t\t.map((option, i, options) => {\n\t\t\t\t\t\t\tconst selected =\n\t\t\t\t\t\t\t\tthis.value.includes(option.value) ||\n\t\t\t\t\t\t\t\t(option.group === true && this.isGroupSelected(`${option.value}`));\n\t\t\t\t\t\t\tconst active = i === this.cursor;\n\t\t\t\t\t\t\tconst groupActive =\n\t\t\t\t\t\t\t\t!active &&\n\t\t\t\t\t\t\t\ttypeof option.group === 'string' &&\n\t\t\t\t\t\t\t\tthis.options[this.cursor].value === option.group;\n\t\t\t\t\t\t\tif (groupActive) {\n\t\t\t\t\t\t\t\treturn opt(option, selected ? 'group-active-selected' : 'group-active', options);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (active && selected) {\n\t\t\t\t\t\t\t\treturn opt(option, 'active-selected', options);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (selected) {\n\t\t\t\t\t\t\t\treturn opt(option, 'selected', options);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn opt(option, active ? 'active' : 'inactive', options);\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.join(`\\n${color.yellow(S_BAR)} `)}\\n${footer}\\n`;\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\treturn `${title}${color.cyan(S_BAR)} ${this.options\n\t\t\t\t\t\t.map((option, i, options) => {\n\t\t\t\t\t\t\tconst selected =\n\t\t\t\t\t\t\t\tthis.value.includes(option.value) ||\n\t\t\t\t\t\t\t\t(option.group === true && this.isGroupSelected(`${option.value}`));\n\t\t\t\t\t\t\tconst active = i === this.cursor;\n\t\t\t\t\t\t\tconst groupActive =\n\t\t\t\t\t\t\t\t!active &&\n\t\t\t\t\t\t\t\ttypeof option.group === 'string' &&\n\t\t\t\t\t\t\t\tthis.options[this.cursor].value === option.group;\n\t\t\t\t\t\t\tif (groupActive) {\n\t\t\t\t\t\t\t\treturn opt(option, selected ? 'group-active-selected' : 'group-active', options);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (active && selected) {\n\t\t\t\t\t\t\t\treturn opt(option, 'active-selected', options);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (selected) {\n\t\t\t\t\t\t\t\treturn opt(option, 'selected', options);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn opt(option, active ? 'active' : 'inactive', options);\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.join(`\\n${color.cyan(S_BAR)} `)}\\n${color.cyan(S_BAR_END)}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<Value[] | symbol>;\n};\n\nexport const note = (message = '', title = '') => {\n\tconst lines = `\\n${message}\\n`.split('\\n');\n\tconst titleLen = strip(title).length;\n\tconst len =\n\t\tMath.max(\n\t\t\tlines.reduce((sum, ln) => {\n\t\t\t\tconst line = strip(ln);\n\t\t\t\treturn line.length > sum ? line.length : sum;\n\t\t\t}, 0),\n\t\t\ttitleLen\n\t\t) + 2;\n\tconst msg = lines\n\t\t.map(\n\t\t\t(ln) =>\n\t\t\t\t`${color.gray(S_BAR)} ${color.dim(ln)}${' '.repeat(len - strip(ln).length)}${color.gray(\n\t\t\t\t\tS_BAR\n\t\t\t\t)}`\n\t\t)\n\t\t.join('\\n');\n\tprocess.stdout.write(\n\t\t`${color.gray(S_BAR)}\\n${color.green(S_STEP_SUBMIT)} ${color.reset(title)} ${color.gray(\n\t\t\tS_BAR_H.repeat(Math.max(len - titleLen - 1, 1)) + S_CORNER_TOP_RIGHT\n\t\t)}\\n${msg}\\n${color.gray(S_CONNECT_LEFT + S_BAR_H.repeat(len + 2) + S_CORNER_BOTTOM_RIGHT)}\\n`\n\t);\n};\n\nexport const cancel = (message = '') => {\n\tprocess.stdout.write(`${color.gray(S_BAR_END)} ${color.red(message)}\\n\\n`);\n};\n\nexport const intro = (title = '') => {\n\tprocess.stdout.write(`${color.gray(S_BAR_START)} ${title}\\n`);\n};\n\nexport const outro = (message = '') => {\n\tprocess.stdout.write(`${color.gray(S_BAR)}\\n${color.gray(S_BAR_END)} ${message}\\n\\n`);\n};\n\nexport type LogMessageOptions = {\n\tsymbol?: string;\n};\nexport const log = {\n\tmessage: (message = '', { symbol = color.gray(S_BAR) }: LogMessageOptions = {}) => {\n\t\tconst parts = [`${color.gray(S_BAR)}`];\n\t\tif (message) {\n\t\t\tconst [firstLine, ...lines] = message.split('\\n');\n\t\t\tparts.push(`${symbol} ${firstLine}`, ...lines.map((ln) => `${color.gray(S_BAR)} ${ln}`));\n\t\t}\n\t\tprocess.stdout.write(`${parts.join('\\n')}\\n`);\n\t},\n\tinfo: (message: string) => {\n\t\tlog.message(message, { symbol: color.blue(S_INFO) });\n\t},\n\tsuccess: (message: string) => {\n\t\tlog.message(message, { symbol: color.green(S_SUCCESS) });\n\t},\n\tstep: (message: string) => {\n\t\tlog.message(message, { symbol: color.green(S_STEP_SUBMIT) });\n\t},\n\twarn: (message: string) => {\n\t\tlog.message(message, { symbol: color.yellow(S_WARN) });\n\t},\n\t/** alias for `log.warn()`. */\n\twarning: (message: string) => {\n\t\tlog.warn(message);\n\t},\n\terror: (message: string) => {\n\t\tlog.message(message, { symbol: color.red(S_ERROR) });\n\t},\n};\n\nconst prefix = `${color.gray(S_BAR)} `;\nexport const stream = {\n\tmessage: async (\n\t\titerable: Iterable<string> | AsyncIterable<string>,\n\t\t{ symbol = color.gray(S_BAR) }: LogMessageOptions = {}\n\t) => {\n\t\tprocess.stdout.write(`${color.gray(S_BAR)}\\n${symbol} `);\n\t\tlet lineWidth = 3;\n\t\tfor await (let chunk of iterable) {\n\t\t\tchunk = chunk.replace(/\\n/g, `\\n${prefix}`);\n\t\t\tif (chunk.includes('\\n')) {\n\t\t\t\tlineWidth = 3 + strip(chunk.slice(chunk.lastIndexOf('\\n'))).length;\n\t\t\t}\n\t\t\tconst chunkLen = strip(chunk).length;\n\t\t\tif (lineWidth + chunkLen < process.stdout.columns) {\n\t\t\t\tlineWidth += chunkLen;\n\t\t\t\tprocess.stdout.write(chunk);\n\t\t\t} else {\n\t\t\t\tprocess.stdout.write(`\\n${prefix}${chunk.trimStart()}`);\n\t\t\t\tlineWidth = 3 + strip(chunk.trimStart()).length;\n\t\t\t}\n\t\t}\n\t\tprocess.stdout.write('\\n');\n\t},\n\tinfo: (iterable: Iterable<string> | AsyncIterable<string>) => {\n\t\treturn stream.message(iterable, { symbol: color.blue(S_INFO) });\n\t},\n\tsuccess: (iterable: Iterable<string> | AsyncIterable<string>) => {\n\t\treturn stream.message(iterable, { symbol: color.green(S_SUCCESS) });\n\t},\n\tstep: (iterable: Iterable<string> | AsyncIterable<string>) => {\n\t\treturn stream.message(iterable, { symbol: color.green(S_STEP_SUBMIT) });\n\t},\n\twarn: (iterable: Iterable<string> | AsyncIterable<string>) => {\n\t\treturn stream.message(iterable, { symbol: color.yellow(S_WARN) });\n\t},\n\t/** alias for `log.warn()`. */\n\twarning: (iterable: Iterable<string> | AsyncIterable<string>) => {\n\t\treturn stream.warn(iterable);\n\t},\n\terror: (iterable: Iterable<string> | AsyncIterable<string>) => {\n\t\treturn stream.message(iterable, { symbol: color.red(S_ERROR) });\n\t},\n};\n\nexport interface SpinnerOptions {\n\tindicator?: 'dots' | 'timer';\n}\n\nexport const spinner = ({ indicator = 'dots' }: SpinnerOptions = {}) => {\n\tconst frames = unicode ? ['◒', '◐', '◓', '◑'] : ['•', 'o', 'O', '0'];\n\tconst delay = unicode ? 80 : 120;\n\tconst isCI = process.env.CI === 'true';\n\n\tlet unblock: () => void;\n\tlet loop: NodeJS.Timeout;\n\tlet isSpinnerActive = false;\n\tlet _message = '';\n\tlet _prevMessage: string | undefined = undefined;\n\tlet _origin: number = performance.now();\n\n\tconst handleExit = (code: number) => {\n\t\tconst msg = code > 1 ? 'Something went wrong' : 'Canceled';\n\t\tif (isSpinnerActive) stop(msg, code);\n\t};\n\n\tconst errorEventHandler = () => handleExit(2);\n\tconst signalEventHandler = () => handleExit(1);\n\n\tconst registerHooks = () => {\n\t\t// Reference: https://nodejs.org/api/process.html#event-uncaughtexception\n\t\tprocess.on('uncaughtExceptionMonitor', errorEventHandler);\n\t\t// Reference: https://nodejs.org/api/process.html#event-unhandledrejection\n\t\tprocess.on('unhandledRejection', errorEventHandler);\n\t\t// Reference Signal Events: https://nodejs.org/api/process.html#signal-events\n\t\tprocess.on('SIGINT', signalEventHandler);\n\t\tprocess.on('SIGTERM', signalEventHandler);\n\t\tprocess.on('exit', handleExit);\n\t};\n\n\tconst clearHooks = () => {\n\t\tprocess.removeListener('uncaughtExceptionMonitor', errorEventHandler);\n\t\tprocess.removeListener('unhandledRejection', errorEventHandler);\n\t\tprocess.removeListener('SIGINT', signalEventHandler);\n\t\tprocess.removeListener('SIGTERM', signalEventHandler);\n\t\tprocess.removeListener('exit', handleExit);\n\t};\n\n\tconst clearPrevMessage = () => {\n\t\tif (_prevMessage === undefined) return;\n\t\tif (isCI) process.stdout.write('\\n');\n\t\tconst prevLines = _prevMessage.split('\\n');\n\t\tprocess.stdout.write(cursor.move(-999, prevLines.length - 1));\n\t\tprocess.stdout.write(erase.down(prevLines.length));\n\t};\n\n\tconst parseMessage = (msg: string): string => {\n\t\treturn msg.replace(/\\.+$/, '');\n\t};\n\n\tconst formatTimer = (origin: number): string => {\n\t\tconst duration = (performance.now() - origin) / 1000;\n\t\tconst min = Math.floor(duration / 60);\n\t\tconst secs = Math.floor(duration % 60);\n\t\treturn min > 0 ? `[${min}m ${secs}s]` : `[${secs}s]`;\n\t};\n\n\tconst start = (msg = ''): void => {\n\t\tisSpinnerActive = true;\n\t\tunblock = block();\n\t\t_message = parseMessage(msg);\n\t\t_origin = performance.now();\n\t\tprocess.stdout.write(`${color.gray(S_BAR)}\\n`);\n\t\tlet frameIndex = 0;\n\t\tlet indicatorTimer = 0;\n\t\tregisterHooks();\n\t\tloop = setInterval(() => {\n\t\t\tif (isCI && _message === _prevMessage) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tclearPrevMessage();\n\t\t\t_prevMessage = _message;\n\t\t\tconst frame = color.magenta(frames[frameIndex]);\n\n\t\t\tif (isCI) {\n\t\t\t\tprocess.stdout.write(`${frame} ${_message}...`);\n\t\t\t} else if (indicator === 'timer') {\n\t\t\t\tprocess.stdout.write(`${frame} ${_message} ${formatTimer(_origin)}`);\n\t\t\t} else {\n\t\t\t\tconst loadingDots = '.'.repeat(Math.floor(indicatorTimer)).slice(0, 3);\n\t\t\t\tprocess.stdout.write(`${frame} ${_message}${loadingDots}`);\n\t\t\t}\n\n\t\t\tframeIndex = frameIndex + 1 < frames.length ? frameIndex + 1 : 0;\n\t\t\tindicatorTimer = indicatorTimer < frames.length ? indicatorTimer + 0.125 : 0;\n\t\t}, delay);\n\t};\n\n\tconst stop = (msg = '', code = 0): void => {\n\t\tisSpinnerActive = false;\n\t\tclearInterval(loop);\n\t\tclearPrevMessage();\n\t\tconst step =\n\t\t\tcode === 0\n\t\t\t\t? color.green(S_STEP_SUBMIT)\n\t\t\t\t: code === 1\n\t\t\t\t\t? color.red(S_STEP_CANCEL)\n\t\t\t\t\t: color.red(S_STEP_ERROR);\n\t\t_message = parseMessage(msg ?? _message);\n\t\tif (indicator === 'timer') {\n\t\t\tprocess.stdout.write(`${step} ${_message} ${formatTimer(_origin)}\\n`);\n\t\t} else {\n\t\t\tprocess.stdout.write(`${step} ${_message}\\n`);\n\t\t}\n\t\tclearHooks();\n\t\tunblock();\n\t};\n\n\tconst message = (msg = ''): void => {\n\t\t_message = parseMessage(msg ?? _message);\n\t};\n\n\treturn {\n\t\tstart,\n\t\tstop,\n\t\tmessage,\n\t};\n};\n\nexport type PromptGroupAwaitedReturn<T> = {\n\t[P in keyof T]: Exclude<Awaited<T[P]>, symbol>;\n};\n\nexport interface PromptGroupOptions<T> {\n\t/**\n\t * Control how the group can be canceled\n\t * if one of the prompts is canceled.\n\t */\n\tonCancel?: (opts: { results: Prettify<Partial<PromptGroupAwaitedReturn<T>>> }) => void;\n}\n\ntype Prettify<T> = {\n\t[P in keyof T]: T[P];\n} & {};\n\nexport type PromptGroup<T> = {\n\t[P in keyof T]: (opts: {\n\t\tresults: Prettify<Partial<PromptGroupAwaitedReturn<Omit<T, P>>>>;\n\t}) => undefined | Promise<T[P] | undefined>;\n};\n\n/**\n * Define a group of prompts to be displayed\n * and return a results of objects within the group\n */\nexport const group = async <T>(\n\tprompts: PromptGroup<T>,\n\topts?: PromptGroupOptions<T>\n): Promise<Prettify<PromptGroupAwaitedReturn<T>>> => {\n\tconst results = {} as any;\n\tconst promptNames = Object.keys(prompts);\n\n\tfor (const name of promptNames) {\n\t\tconst prompt = prompts[name as keyof T];\n\t\tconst result = await prompt({ results })?.catch((e) => {\n\t\t\tthrow e;\n\t\t});\n\n\t\t// Pass the results to the onCancel function\n\t\t// so the user can decide what to do with the results\n\t\t// TODO: Switch to callback within core to avoid isCancel Fn\n\t\tif (typeof opts?.onCancel === 'function' && isCancel(result)) {\n\t\t\tresults[name] = 'canceled';\n\t\t\topts.onCancel({ results });\n\t\t\tcontinue;\n\t\t}\n\n\t\tresults[name] = result;\n\t}\n\n\treturn results;\n};\n\nexport type Task = {\n\t/**\n\t * Task title\n\t */\n\ttitle: string;\n\t/**\n\t * Task function\n\t */\n\ttask: (message: (string: string) => void) => string | Promise<string> | void | Promise<void>;\n\n\t/**\n\t * If enabled === false the task will be skipped\n\t */\n\tenabled?: boolean;\n};\n\n/**\n * Define a group of tasks to be executed\n */\nexport const tasks = async (tasks: Task[]) => {\n\tfor (const task of tasks) {\n\t\tif (task.enabled === false) continue;\n\n\t\tconst s = spinner();\n\t\ts.start(task.title);\n\t\tconst result = await task.task(s.message);\n\t\ts.stop(result || task.title);\n\t}\n};\n","import { execSync } from 'node:child_process';\nimport { existsSync } from 'node:fs';\nimport { join } from 'node:path';\n\nexport type PackageManager = 'yarn' | 'pnpm' | 'bun' | 'npm';\n\nexport interface Environment {\n isInteractive: boolean;\n packageManager: PackageManager;\n nodeVersion: number;\n hasCucumber: boolean;\n cwd: string;\n}\n\nexport interface PackageManagerArgs {\n npm: string;\n yarn: string;\n pnpm: string;\n bun: string;\n}\n\nexport function detectEnvironment(): Environment {\n const cwd = process.cwd();\n const isInteractive = Boolean(process.stdout.isTTY && process.stdin.isTTY);\n\n let packageManager: PackageManager = 'npm';\n if (existsSync(join(cwd, 'yarn.lock'))) packageManager = 'yarn';\n else if (existsSync(join(cwd, 'pnpm-lock.yaml'))) packageManager = 'pnpm';\n else if (existsSync(join(cwd, 'bun.lockb')) || existsSync(join(cwd, 'bun.lock'))) packageManager = 'bun';\n\n const nodeVersion = parseInt(process.version.slice(1), 10);\n const hasCucumber = existsSync(join(cwd, 'node_modules', '@cucumber', 'cucumber', 'package.json'));\n\n return { isInteractive, packageManager, nodeVersion, hasCucumber, cwd };\n}\n\nfunction pmCmd(pm: string, args: PackageManagerArgs): string {\n if (pm === 'yarn') return `yarn ${args.yarn}`;\n if (pm === 'pnpm') return `pnpm ${args.pnpm}`;\n if (pm === 'bun') return `bun ${args.bun}`;\n return `npm ${args.npm}`;\n}\n\nexport function execPm(env: Pick<Environment, 'packageManager' | 'cwd'>, args: PackageManagerArgs) {\n const cmd = pmCmd(env.packageManager, args);\n return execSync(cmd, { stdio: 'inherit', cwd: env.cwd });\n}\n","import { existsSync, readFileSync } from 'node:fs';\nimport { join } from 'node:path';\nimport { type Environment, execPm } from '../detect.js';\n\nexport function isCliInstalled({ cwd }: Pick<Environment, 'cwd'>): boolean {\n const pkgPath = join(cwd, 'package.json');\n if (!existsSync(pkgPath)) return false;\n\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8')) as {\n devDependencies?: Record<string, string>;\n dependencies?: Record<string, string>;\n };\n\n return '@letsrunit/cli' in (pkg.devDependencies ?? {}) || '@letsrunit/cli' in (pkg.dependencies ?? {});\n}\n\nexport function installCli(env: Pick<Environment, 'packageManager' | 'cwd'>): void {\n execPm(env, {\n npm: 'install --save-dev @letsrunit/cli',\n yarn: 'add --dev @letsrunit/cli',\n pnpm: 'add -D @letsrunit/cli',\n bun: 'add -d @letsrunit/cli',\n });\n}\n","import { existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync } from 'node:fs';\nimport { join } from 'node:path';\nimport { type Environment, execPm } from '../detect.js';\n\nconst BDD_IMPORT = '@letsrunit/cucumber';\n\nconst CUCUMBER_CONFIG = `import { resolveDebugWorldParameters } from '@letsrunit/cucumber/config';\n\nconst { failFast, worldParameters } = resolveDebugWorldParameters({\n argv: process.argv,\n baseWorldParameters: {\n baseURL: 'http://localhost:3000',\n },\n});\n\nexport default {\n require: ['features/support/**/*.js'],\n format: ['@letsrunit/cucumber/progress'],\n failFast,\n plugin: ['@letsrunit/cucumber/store'],\n pluginOptions: {\n letsrunitStore: {\n directory: '.letsrunit',\n },\n },\n worldParameters,\n};\n`;\n\nconst SUPPORT_FILE = `import { setDefaultTimeout } from '@cucumber/cucumber';\nimport '${BDD_IMPORT}';\n\nsetDefaultTimeout(30_000);\n`;\n\nconst EXAMPLE_FEATURE = `Feature: Example\n Scenario: Homepage loads\n Given I'm on the homepage\n`;\n\nexport type CucumberConfigResult = 'created' | 'skipped' | 'needs-manual-update';\n\nexport interface CucumberSetupResult {\n bddInstalled: boolean;\n configResult: CucumberConfigResult;\n featuresCreated: boolean;\n}\n\nexport function installCucumber(env: Pick<Environment, 'packageManager' | 'cwd'>): void {\n execPm(env, {\n npm: 'install --save-dev @cucumber/cucumber',\n yarn: 'add --dev @cucumber/cucumber',\n pnpm: 'add -D @cucumber/cucumber',\n bun: 'add -d @cucumber/cucumber',\n });\n}\n\nfunction installBdd(env: Pick<Environment, 'packageManager' | 'cwd'>): boolean {\n const pkgPath = join(env.cwd, 'package.json');\n if (!existsSync(pkgPath)) return false;\n\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8')) as {\n devDependencies?: Record<string, string>;\n dependencies?: Record<string, string>;\n };\n\n const alreadyInstalled =\n '@letsrunit/cucumber' in (pkg.devDependencies ?? {}) || '@letsrunit/cucumber' in (pkg.dependencies ?? {});\n\n if (alreadyInstalled) return false;\n\n execPm(env, {\n npm: 'install --save-dev @letsrunit/cucumber',\n yarn: 'add --dev @letsrunit/cucumber',\n pnpm: 'add -D @letsrunit/cucumber',\n bun: 'add -d @letsrunit/cucumber',\n });\n\n return true;\n}\n\nfunction setupCucumberConfig({ cwd }: Pick<Environment, 'cwd'>): CucumberConfigResult {\n const supportDir = join(cwd, 'features', 'support');\n const supportPath = join(supportDir, 'world.js');\n\n if (existsSync(supportPath)) {\n const content = readFileSync(supportPath, 'utf-8');\n if (content.includes(BDD_IMPORT)) return 'skipped';\n return 'needs-manual-update';\n }\n\n const configPath = join(cwd, 'cucumber.js');\n if (!existsSync(configPath)) {\n writeFileSync(configPath, CUCUMBER_CONFIG, 'utf-8');\n }\n\n mkdirSync(supportDir, { recursive: true });\n writeFileSync(supportPath, SUPPORT_FILE, 'utf-8');\n return 'created';\n}\n\nfunction setupFeaturesDir({ cwd }: Pick<Environment, 'cwd'>): boolean {\n if (existsSync(join(cwd, 'features'))) {\n try {\n const hasFeatureFiles = readdirSync(join(cwd, 'features')).some((f) => f.endsWith('.feature'));\n if (hasFeatureFiles) return false;\n } catch {\n return false;\n }\n }\n\n try {\n const hasFeatureAtRoot = readdirSync(cwd).some((f) => f.endsWith('.feature'));\n if (hasFeatureAtRoot) return false;\n } catch {\n return false;\n }\n\n mkdirSync(join(cwd, 'features'), { recursive: true });\n writeFileSync(join(cwd, 'features', 'example.feature'), EXAMPLE_FEATURE, 'utf-8');\n return true;\n}\n\nexport function setupCucumber(env: Pick<Environment, 'packageManager' | 'cwd'>): CucumberSetupResult {\n const bddInstalled = installBdd(env);\n const configResult = setupCucumberConfig(env);\n const featuresCreated = setupFeaturesDir(env);\n return { bddInstalled, configResult, featuresCreated };\n}\n","import { existsSync, mkdirSync, writeFileSync } from 'node:fs';\nimport { join } from 'node:path';\nimport type { Environment } from '../detect.js';\n\nexport type GithubActionsResult = 'created' | 'skipped';\n\nfunction setupStepsFor({ packageManager, nodeVersion }: Pick<Environment, 'packageManager' | 'nodeVersion'>): string {\n if (packageManager === 'yarn') return `\\\n - name: Enable Corepack\n run: corepack enable\n - uses: actions/setup-node@v4\n with:\n node-version: ${nodeVersion}\n cache: yarn\n - name: Install dependencies\n run: yarn install --immutable`;\n if (packageManager === 'pnpm') return `\\\n - uses: pnpm/action-setup@v4\n - uses: actions/setup-node@v4\n with:\n node-version: ${nodeVersion}\n cache: pnpm\n - name: Install dependencies\n run: pnpm install --frozen-lockfile`;\n if (packageManager === 'bun') return `\\\n - uses: oven-sh/setup-bun@v2\n - name: Install dependencies\n run: bun install --frozen-lockfile`;\n return `\\\n - uses: actions/setup-node@v4\n with:\n node-version: ${nodeVersion}\n cache: npm\n - name: Install dependencies\n run: npm ci`;\n}\n\nfunction workflowYaml(env: Pick<Environment, 'packageManager' | 'nodeVersion'>): string {\n const setupSteps = setupStepsFor(env);\n\n return `name: Features\non:\n push:\n branches: [main]\n pull_request:\n branches: [main]\njobs:\n features:\n runs-on: ubuntu-latest\n steps:\n - uses: actions/checkout@v4\n${setupSteps}\n - name: Install Playwright browsers\n run: npx playwright install chromium --with-deps\n - name: Run features\n run: npx cucumber-js\n`;\n}\n\nexport function installGithubAction(env: Pick<Environment, 'packageManager' | 'nodeVersion' | 'cwd'>): GithubActionsResult {\n const workflowDir = join(env.cwd, '.github', 'workflows');\n const workflowPath = join(workflowDir, 'letsrunit.yml');\n\n if (existsSync(workflowPath)) return 'skipped';\n\n mkdirSync(workflowDir, { recursive: true });\n writeFileSync(workflowPath, workflowYaml(env), 'utf-8');\n return 'created';\n}\n","import { execSync } from 'node:child_process';\nimport { existsSync } from 'node:fs';\nimport { join } from 'node:path';\nimport { type Environment, execPm } from '../detect.js';\n\nexport function hasPlaywrightBrowsers({ cwd }: Pick<Environment, 'cwd'>): boolean {\n if (!existsSync(join(cwd, 'node_modules', 'playwright-core', 'package.json'))) {\n return false;\n }\n try {\n const execPath = execSync(\n `node -e \"console.log(require('playwright-core').chromium.executablePath())\"`,\n { cwd, stdio: 'pipe', encoding: 'utf-8' },\n ).trim();\n return existsSync(execPath);\n } catch {\n return false;\n }\n}\n\nexport function installPlaywrightBrowsers(env: Pick<Environment, 'packageManager' | 'cwd'>): void {\n execPm(env, {\n npm: 'exec playwright install chromium',\n yarn: 'exec playwright install chromium',\n pnpm: 'exec playwright install chromium',\n bun: 'x playwright install chromium',\n });\n}\n","import { confirm, intro, log, note, outro, spinner } from '@clack/prompts';\nimport { detectEnvironment, type Environment } from './detect.js';\nimport { installCli, isCliInstalled } from './setup/cli.js';\nimport { installCucumber, setupCucumber } from './setup/cucumber.js';\nimport { installGithubAction } from './setup/github-actions.js';\nimport { hasPlaywrightBrowsers, installPlaywrightBrowsers } from './setup/playwright.js';\n\nconst BDD_IMPORT = '@letsrunit/cucumber';\n\nexport interface InitOptions {\n yes?: boolean;\n}\n\nasync function stepInstallCli(env: Environment): Promise<void> {\n if (isCliInstalled(env)) {\n log.success('@letsrunit/cli already installed');\n return;\n }\n\n const s = spinner();\n s.start('Installing @letsrunit/cli…');\n installCli(env);\n s.stop('@letsrunit/cli installed');\n}\n\nasync function stepEnsureCucumber(env: Environment, { yes }: InitOptions): Promise<boolean> {\n if (env.hasCucumber) return true;\n\n if (!yes && !env.isInteractive) {\n log.warn('@cucumber/cucumber not found. Install it to use letsrunit with Cucumber:');\n note('npm install --save-dev @cucumber/cucumber\\nThen run: npx letsrunit init', 'Setup Cucumber');\n return false;\n }\n\n if (!yes) {\n const install = await confirm({ message: '@cucumber/cucumber not found. Install it now?' });\n if (install !== true) return false;\n }\n\n const s = spinner();\n s.start('Installing @cucumber/cucumber…');\n installCucumber(env);\n s.stop('@cucumber/cucumber installed');\n return true;\n}\n\nfunction stepSetupCucumber(env: Environment): void {\n const result = setupCucumber(env);\n\n if (result.bddInstalled) log.success('@letsrunit/cucumber installed');\n\n if (result.configResult === 'created') {\n log.success('features/support/world.js created');\n } else if (result.configResult === 'needs-manual-update') {\n log.warn('features/support/world.js exists but does not import @letsrunit/cucumber.');\n note(`Add \"import '${BDD_IMPORT}';\" to features/support/world.js`, 'Action required');\n }\n\n if (result.featuresCreated) log.success('features/ directory created with example.feature');\n}\n\nasync function stepCheckPlaywrightBrowsers(env: Environment, { yes }: InitOptions): Promise<void> {\n if (hasPlaywrightBrowsers(env)) return;\n\n if (!yes && !env.isInteractive) {\n log.warn('Playwright Chromium browser not found.');\n note('npx playwright install chromium', 'Run to install browsers');\n return;\n }\n\n if (!yes) {\n const install = await confirm({ message: 'Playwright Chromium browser not found. Install it now?' });\n if (install !== true) return;\n }\n\n const s = spinner();\n s.start('Installing Playwright Chromium…');\n installPlaywrightBrowsers(env);\n s.stop('Playwright Chromium installed');\n}\n\nasync function stepAddGithubAction(env: Environment, { yes }: InitOptions): Promise<void> {\n if (!yes && !env.isInteractive) return;\n\n if (!yes) {\n const addAction = await confirm({ message: 'Add a GitHub Action to run features on push?' });\n if (addAction !== true) return;\n }\n\n const result = installGithubAction(env);\n if (result === 'created') {\n log.success('.github/workflows/letsrunit.yml created');\n } else {\n log.info('.github/workflows/letsrunit.yml already exists, skipped');\n }\n}\n\nexport async function init(options: InitOptions = {}): Promise<void> {\n intro('letsrunit init');\n\n const env = detectEnvironment();\n\n await stepInstallCli(env);\n\n const hasCucumber = await stepEnsureCucumber(env, options);\n if (hasCucumber) {\n stepSetupCucumber(env);\n await stepCheckPlaywrightBrowsers(env, options);\n await stepAddGithubAction(env, options);\n }\n\n outro('All done! Run npx letsrunit --help to get started.');\n}\n","import { explain as explainRun, type ExplainResult } from '@letsrunit/executor';\n\nexport async function runExplain(opts: { db?: string; artifacts?: string }) {\n const result: ExplainResult = await explainRun({ dbPath: opts.db, artifactsDir: opts.artifacts });\n\n const { stdout, stderr } = process;\n\n if (!result.hasRun) {\n stderr.write('No letsrunit run found.\\n');\n process.exit(1);\n }\n\n if (result.totalFailed === 0) {\n stdout.write('No failures in latest run; nothing to explain.\\n');\n process.exit(0);\n }\n\n for (const item of result.explanations) {\n const color = item.update === 'test' ? '\\x1b[33m' : '\\x1b[31m';\n\n stdout.write('\\n');\n stdout.write(`\\x1b[1m${item.featurePath} :: ${item.scenarioName}\\x1b[0m\\n`);\n stdout.write(` ${item.steps.replaceAll('\\n', '\\n ')}\\n\\n`);\n stdout.write(` ${color}\\x1b[1m${item.updateMessage}\\x1b[0m\\n`);\n stdout.write(` ${item.reason.replaceAll('\\n', '\\n ')}\\n`);\n stdout.write(` 💡 ${item.advice.replaceAll('\\n', '\\n ')}\\n`);\n }\n\n for (const err of result.errors) {\n stderr.write(`\\n\\x1b[31m${err.featurePath} :: ${err.scenarioName}\\x1b[0m\\n`);\n stderr.write(` ${err.error.replaceAll('\\n', '\\n ')}\\n`);\n }\n\n process.exit(result.errors.length > 0 ? 1 : 0);\n}\n","import type { Action, AppInfo } from '@letsrunit/executor';\nimport { makeFeature } from '@letsrunit/gherkin';\nimport { asFilename } from '@letsrunit/utils';\nimport * as fs from 'node:fs/promises';\n\nfunction disableEcho() {\n process.stdout.write('\\x1B[?25l'); // hide cursor\n process.stdout.write('\\x1B[8m'); // hide input\n}\n\nfunction enableEcho() {\n process.stdout.write('\\x1B[0m');\n process.stdout.write('\\x1B[?25h');\n}\n\nfunction readKey(): Promise<string> {\n const { stdin } = process;\n\n stdin.setRawMode(true);\n stdin.resume();\n stdin.setEncoding('utf8');\n disableEcho();\n\n return new Promise<string>((resolve) => {\n const handler = (pressed: string) => {\n stdin.removeListener('data', handler);\n stdin.setRawMode(false);\n stdin.pause();\n enableEcho();\n\n resolve(pressed);\n };\n\n stdin.on('data', handler);\n });\n}\n\nasync function readOption(limit: number): Promise<number> {\n while (true) {\n const key = await readKey();\n if (key === '\\u0003') return -1;\n\n const opt = key >= '0' && key <= '9' ? Number(key) : null;\n\n if (!opt || opt > limit) {\n process.stdout.write('\\x1b[33mInvalid option selected\\x1b[0m\\n');\n continue;\n }\n\n return opt - 1;\n }\n}\n\nexport async function runExplore(info: AppInfo, actions: Action[], storagePath?: string) {\n const { stdout } = process;\n\n while (actions.length > 0) {\n stdout.write(`\\n\\x1b[1m${info.name}\\x1b[0m\\n`);\n stdout.write('What do you want to test? Choose one of the following options:\\n');\n\n let count = 1;\n for (const action of actions) {\n stdout.write(`${count++}. ${action.name}\\n`);\n }\n\n const opt = await readOption(actions.length);\n if (opt < 0) return;\n\n stdout.write('\\n');\n const { status, feature } = await actions[opt].run();\n\n actions.splice(opt, 1);\n\n if (storagePath && status === 'passed' && feature) {\n await fs.writeFile(`${storagePath}/${asFilename(feature.name!)}.feature`, makeFeature(feature));\n }\n }\n}\n","import { explore, generate, refineSuggestion, run } from '@letsrunit/executor';\nimport { makeFeature } from '@letsrunit/gherkin';\nimport { CliSink, Journal } from '@letsrunit/journal';\nimport { getMailbox } from '@letsrunit/mailbox';\nimport { asFilename, randomUUID } from '@letsrunit/utils';\nimport { Command } from 'commander';\nimport { init } from 'letsrunit';\nimport { readFileSync } from 'node:fs';\nimport fs from 'node:fs/promises';\nimport { dirname, join } from 'node:path';\nimport { fileURLToPath } from 'node:url';\nimport { runExplain } from './run-explain';\nimport { runExplore } from './run-explore';\n\nconst __dirname = dirname(fileURLToPath(import.meta.url));\nconst { version } = JSON.parse(readFileSync(join(__dirname, '..', 'package.json'), 'utf-8')) as { version: string };\n\nconst program = new Command();\n\ninterface JournalOptions {\n verbose: boolean;\n silent: boolean;\n artifactPath?: string;\n}\n\nfunction createJournal({ verbose, silent, artifactPath }: JournalOptions) {\n const verbosity = verbose ? 3 : silent ? 0 : 1;\n return new Journal(new CliSink({ verbosity, artifactPath }));\n}\n\nasync function readStdin(): Promise<string> {\n return await new Promise((resolve) => {\n let data = '';\n process.stdin.setEncoding('utf8');\n\n const isTTY = Boolean(process.stdin.isTTY);\n if (isTTY) {\n // Interactive input: allow user to type multiple lines and finish with EOF\n console.error('Enter instructions. Finish with Ctrl-D (Unix/macOS/Linux) or Ctrl-Z then Enter (Windows).');\n }\n\n process.stdin.on('data', (chunk) => (data += chunk));\n process.stdin.on('end', () => resolve(data));\n process.stdin.resume();\n });\n}\n\nprogram.name('letsrunit').description('Vibe testing done right').version(version);\n\nprogram\n .command('init')\n .description('Set up letsrunit in the current project')\n .option('-y, --yes', 'Skip confirmation prompts')\n .action(async (opts: { yes?: boolean }) => {\n await init({ yes: opts.yes });\n });\n\nprogram\n .command('explore')\n .argument('<target>', 'Target URL or project')\n .option('-v, --verbose', 'Enable verbose logging', false)\n .option('-s, --silent', 'Only output errors', false)\n .option('-o, --save <path>', 'Path to save .feature file', '')\n .action(async (target: string, opts: { verbose: boolean; silent: boolean; save: string }) => {\n const journal = createJournal({ ...opts, artifactPath: opts.save });\n\n const { status } = await explore(target, { headless: false, journal }, async (info, actions) => {\n journal.sink.endSection();\n await runExplore(info, actions, opts.save);\n });\n\n process.exit(status === 'passed' ? 0 : 1);\n });\n\nprogram\n .command('generate')\n .argument('<target>', 'Target URL or project')\n .option('-v, --verbose', 'Enable verbose logging', false)\n .option('-s, --silent', 'Only output errors', false)\n .option('-o, --save <path>', 'Path to save .feature file', '')\n .action(async (target: string, opts: { verbose: boolean; silent: boolean; save: string }) => {\n const instructions = (await readStdin()).trim();\n\n if (!instructions) {\n console.error('No instructions provided');\n process.exit(1);\n }\n\n const journal = createJournal({ ...opts, artifactPath: opts.save });\n\n await journal.info('Refining test instructions');\n const suggestion = await refineSuggestion(instructions);\n\n const { feature, status } = await generate(target, suggestion, { headless: false, journal });\n\n if (opts.save && feature) {\n await fs.writeFile(`${opts.save}/${asFilename(feature.name!)}.feature`, makeFeature(feature));\n }\n\n process.exit(status === 'passed' ? 0 : 1);\n });\n\nprogram\n .command('register')\n .argument('<target>', 'Target URL or project')\n .option('-v, --verbose', 'Enable verbose logging', false)\n .option('-s, --silent', 'Only output errors', false)\n .option('-o, --save <path>', 'Path to save .feature file', '')\n .action(async (target: string, opts: { verbose: boolean; silent: boolean; save: string }) => {\n const journal = createJournal({ ...opts, artifactPath: opts.save });\n\n const suggestion = {\n name: 'Register a new user by email',\n description: [\n 'Locate the registration form and fill it out to create a new account.',\n 'Confirm the registration email and log in as the user',\n ].join('\\n'),\n comments: [\n 'If no registration button is visible, try locating it through the login form.',\n 'The feature is complete when a confirmation email is received and verified and the user is logged in.',\n ].join('\\n'),\n };\n\n const email = getMailbox(randomUUID());\n\n const { feature, status } = await generate(target, suggestion, { headless: false, journal, accounts: { email } });\n\n if (opts.save && feature) {\n await fs.writeFile(`${opts.save}/${asFilename(feature.name!)}.feature`, makeFeature(feature));\n }\n\n process.exit(status === 'passed' ? 0 : 1);\n });\n\nprogram\n .command('run')\n .argument('<target>', 'Target URL or project')\n .argument('<feature>', 'Gherkin feature file')\n .option('-v, --verbose', 'Enable verbose logging', false)\n .option('-s, --silent', 'Only output errors', false)\n .action(async (target: string, featureFile: string, opts: { verbose: boolean; silent: boolean }) => {\n const feature = await fs.readFile(featureFile, 'utf-8');\n await run(target, feature, { headless: false, journal: createJournal(opts) });\n });\n\nprogram\n .command('explain')\n .description('Explain failures from the latest letsrunit run')\n .option('--db <path>', 'Path to letsrunit SQLite DB')\n .option('--artifacts <path>', 'Path to letsrunit artifacts directory')\n .action(async (opts: { db?: string; artifacts?: string }) => {\n await runExplain(opts);\n });\n\nprogram.parse();\n"]}
1
+ {"version":3,"sources":["../../../node_modules/sisteransi/src/index.js","../../../node_modules/picocolors/picocolors.js","../../../node_modules/node_modules/.pnpm/ansi-regex@6.1.0/node_modules/ansi-regex/index.js","../../../node_modules/node_modules/.pnpm/strip-ansi@7.1.0/node_modules/strip-ansi/index.js","../../../node_modules/node_modules/.pnpm/eastasianwidth@0.2.0/node_modules/eastasianwidth/eastasianwidth.js","../../../node_modules/node_modules/.pnpm/emoji-regex@9.2.2/node_modules/emoji-regex/index.js","../../../node_modules/node_modules/.pnpm/string-width@5.1.2/node_modules/string-width/index.js","../../../node_modules/node_modules/.pnpm/ansi-styles@6.2.1/node_modules/ansi-styles/index.js","../../../node_modules/node_modules/.pnpm/wrap-ansi@8.1.0/node_modules/wrap-ansi/index.js","../../../node_modules/@clack/core/src/utils/settings.ts","../../../node_modules/@clack/core/src/utils/string.ts","../../../node_modules/@clack/core/src/utils/index.ts","../../../node_modules/@clack/core/src/prompts/prompt.ts","../../../node_modules/@clack/core/src/prompts/confirm.ts","../../../node_modules/node_modules/.pnpm/is-unicode-supported@1.3.0/node_modules/is-unicode-supported/index.js","../../../node_modules/@clack/prompts/src/index.ts","../../letsrunit/src/detect.ts","../../letsrunit/src/setup/cli.ts","../../letsrunit/src/setup/cucumber.ts","../../letsrunit/src/setup/github-actions.ts","../../letsrunit/src/setup/mcp.ts","../../letsrunit/src/setup/playwright.ts","../../letsrunit/src/init.ts","../src/run-explain.ts","../src/run-explore.ts","../src/index.ts"],"names":["x","y","p","ansiRegex","onlyFirst","pattern","regex","stripAnsi","string","e","eaw","module","character","codePoint","code","stringToArray","characters","len","i","text","start","end","result","eawLen","chars","char","charLen","emojiRegex","stringWidth","options","ambiguousCharacterWidth","width","eastAsianWidth","ANSI_BACKGROUND_OFFSET","wrapAnsi16","offset","wrapAnsi256","wrapAnsi16m","red","green","blue","styles","foregroundColorNames","backgroundColorNames","assembleStyles","codes","groupName","group","styleName","style","hex","matches","colorString","integer","remainder","value","ansiStyles","ESCAPES","END_CODE","ANSI_ESCAPE_BELL","ANSI_CSI","ANSI_OSC","ANSI_SGR_TERMINATOR","ANSI_ESCAPE_LINK","wrapAnsiCode","wrapAnsiHyperlink","uri","wordLengths","wrapWord","rows","word","columns","isInsideEscape","isInsideLinkEscape","visible","index","characterLength","stringVisibleTrimSpacesRight","words","last","exec","returnValue","escapeCode","escapeUrl","lengths","rowLength","remainingColumns","breaksStartingThisLine","row","pre","groups","wrapAnsi","line","actions","settings","isActionKey","key","action","diffLines","a","b","aLines","bLines","diff","isWindows","CANCEL_SYMBOL","setRawMode","input","block","stdin","output","stdout","overwrite","hideCursor","rl","readline","clear","data","name","sequence","str","cursor","dx","dy","v","t","s","Prompt","trackValue","__publicField","render","signal","opts","event","params","cb","cbs","cleanup","subscriber","resolve","reject","sink","Writable","chunk","encoding","done","problem","lines","wrap","frame","diffLine","erase","newLines","ConfirmPrompt","confirm","isUnicodeSupported","process","unicode","c","fallback","S_STEP_ACTIVE","S_STEP_CANCEL","S_STEP_ERROR","S_STEP_SUBMIT","S_BAR_START","S_BAR","S_BAR_END","S_RADIO_ACTIVE","S_RADIO_INACTIVE","S_BAR_H","S_CORNER_TOP_RIGHT","S_CONNECT_LEFT","S_CORNER_BOTTOM_RIGHT","S_INFO","S_SUCCESS","S_WARN","S_ERROR","symbol","state","color","active","inactive","title","note","message","titleLen","strip","sum","ln","msg","intro","outro","log","parts","firstLine","spinner","indicator","frames","delay","isCI","unblock","loop","isSpinnerActive","_message","_prevMessage","_origin","handleExit","stop","errorEventHandler","signalEventHandler","registerHooks","clearHooks","clearPrevMessage","prevLines","parseMessage","formatTimer","origin","duration","min","secs","frameIndex","indicatorTimer","loadingDots","step","join","existsSync","readFileSync","mkdirSync","writeFileSync","execSync","BDD_IMPORT","M","Y","explainRun","fs","asFilename","makeFeature"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAA,WAAA,GAAA,UAAA,CAAA;AAAA,EAAA,4CAAA,CAAA,OAAA,EAAA,MAAA,EAAA;AAEA,IAAA,IAAM,GAAA,GAAM,MAAA;AACZ,IAAA,IAAM,GAAA,GAAM,GAAG,GAAG,CAAA,CAAA,CAAA;AAClB,IAAA,IAAM,IAAA,GAAO,MAAA;AAEb,IAAA,IAAM,MAAA,GAAS;AAAA,MACb,EAAA,CAAGA,IAAGC,EAAAA,EAAG;AACP,QAAA,IAAI,CAACA,EAAAA,EAAG,OAAO,GAAG,GAAG,CAAA,EAAGD,KAAI,CAAC,CAAA,CAAA,CAAA;AAC7B,QAAA,OAAO,GAAG,GAAG,CAAA,EAAGC,KAAI,CAAC,CAAA,CAAA,EAAID,KAAI,CAAC,CAAA,CAAA,CAAA;AAAA,MAChC,CAAA;AAAA,MACA,IAAA,CAAKA,IAAGC,EAAAA,EAAG;AACT,QAAA,IAAI,GAAA,GAAM,EAAA;AAEV,QAAA,IAAID,KAAI,CAAA,EAAG,GAAA,IAAO,GAAG,GAAG,CAAA,EAAG,CAACA,EAAC,CAAA,CAAA,CAAA;AAAA,aAAA,IACpBA,KAAI,CAAA,EAAG,GAAA,IAAO,CAAA,EAAG,GAAG,GAAGA,EAAC,CAAA,CAAA,CAAA;AAEjC,QAAA,IAAIC,KAAI,CAAA,EAAG,GAAA,IAAO,GAAG,GAAG,CAAA,EAAG,CAACA,EAAC,CAAA,CAAA,CAAA;AAAA,aAAA,IACpBA,KAAI,CAAA,EAAG,GAAA,IAAO,CAAA,EAAG,GAAG,GAAGA,EAAC,CAAA,CAAA,CAAA;AAEjC,QAAA,OAAO,GAAA;AAAA,MACT,CAAA;AAAA,MACA,IAAI,CAAC,KAAA,GAAQ,MAAM,CAAA,EAAG,GAAG,GAAG,KAAK,CAAA,CAAA,CAAA;AAAA,MACjC,MAAM,CAAC,KAAA,GAAQ,MAAM,CAAA,EAAG,GAAG,GAAG,KAAK,CAAA,CAAA,CAAA;AAAA,MACnC,SAAS,CAAC,KAAA,GAAQ,MAAM,CAAA,EAAG,GAAG,GAAG,KAAK,CAAA,CAAA,CAAA;AAAA,MACtC,UAAU,CAAC,KAAA,GAAQ,MAAM,CAAA,EAAG,GAAG,GAAG,KAAK,CAAA,CAAA,CAAA;AAAA,MACvC,QAAA,EAAU,CAAC,KAAA,GAAQ,CAAA,KAAM,GAAG,GAAG,CAAA,CAAA,CAAA,CAAI,OAAO,KAAK,CAAA;AAAA,MAC/C,QAAA,EAAU,CAAC,KAAA,GAAQ,CAAA,KAAM,GAAG,GAAG,CAAA,CAAA,CAAA,CAAI,OAAO,KAAK,CAAA;AAAA,MAC/C,IAAA,EAAM,GAAG,GAAG,CAAA,CAAA,CAAA;AAAA,MACZ,IAAA,EAAM,GAAG,GAAG,CAAA,IAAA,CAAA;AAAA,MACZ,IAAA,EAAM,GAAG,GAAG,CAAA,IAAA,CAAA;AAAA,MACZ,IAAA,EAAM,GAAG,GAAG,CAAA,CAAA,CAAA;AAAA,MACZ,OAAA,EAAS,GAAG,GAAG,CAAA,CAAA;AAAA,KACjB;AAEA,IAAA,IAAM,MAAA,GAAS;AAAA,MACb,EAAA,EAAI,CAAC,KAAA,GAAQ,CAAA,KAAM,GAAG,GAAG,CAAA,CAAA,CAAA,CAAI,OAAO,KAAK,CAAA;AAAA,MACzC,IAAA,EAAM,CAAC,KAAA,GAAQ,CAAA,KAAM,GAAG,GAAG,CAAA,CAAA,CAAA,CAAI,OAAO,KAAK;AAAA,KAC7C;AAEA,IAAA,IAAM,KAAA,GAAQ;AAAA,MACZ,MAAA,EAAQ,GAAG,GAAG,CAAA,EAAA,CAAA;AAAA,MACd,EAAA,EAAI,CAAC,KAAA,GAAQ,CAAA,KAAM,GAAG,GAAG,CAAA,EAAA,CAAA,CAAK,OAAO,KAAK,CAAA;AAAA,MAC1C,IAAA,EAAM,CAAC,KAAA,GAAQ,CAAA,KAAM,GAAG,GAAG,CAAA,CAAA,CAAA,CAAI,OAAO,KAAK,CAAA;AAAA,MAC3C,IAAA,EAAM,GAAG,GAAG,CAAA,EAAA,CAAA;AAAA,MACZ,OAAA,EAAS,GAAG,GAAG,CAAA,CAAA,CAAA;AAAA,MACf,SAAA,EAAW,GAAG,GAAG,CAAA,EAAA,CAAA;AAAA,MACjB,MAAM,KAAA,EAAO;AACX,QAAA,IAAI,KAAA,GAAQ,EAAA;AACZ,QAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,KAAA,EAAO,CAAA,EAAA;AACzB,UAAA,KAAA,IAAS,KAAK,IAAA,IAAQ,CAAA,GAAI,QAAQ,CAAA,GAAI,MAAA,CAAO,IAAG,GAAI,EAAA,CAAA;AACtD,QAAA,IAAI,KAAA;AACF,UAAA,KAAA,IAAS,MAAA,CAAO,IAAA;AAClB,QAAA,OAAO,KAAA;AAAA,MACT;AAAA,KACF;AAEA,IAAA,MAAA,CAAO,OAAA,GAAU,EAAE,MAAA,EAAQ,MAAA,EAAQ,OAAO,IAAA,EAAK;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACzD/C,IAAA,kBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,6CAAA,CAAA,OAAA,EAAA,MAAA,EAAA;AAAA,IAAA,IAAIC,EAAAA,GAAI,WAAW,EAAC;AAApB,IAAA,IAAuB,IAAA,GAAOA,EAAAA,CAAE,IAAA,IAAQ,EAAC;AAAzC,IAAA,IAA4C,GAAA,GAAMA,EAAAA,CAAE,GAAA,IAAO,EAAC;AAC5D,IAAA,IAAI,gBAAA,GACH,EAAE,CAAC,CAAC,GAAA,CAAI,QAAA,IAAY,IAAA,CAAK,QAAA,CAAS,YAAY,CAAA,CAAA,KAC7C,CAAC,CAAC,IAAI,WAAA,IAAe,IAAA,CAAK,QAAA,CAAS,SAAS,CAAA,IAAKA,EAAAA,CAAE,QAAA,KAAa,OAAA,IAAA,CAAaA,GAAE,MAAA,IAAU,EAAC,EAAG,KAAA,IAAS,GAAA,CAAI,IAAA,KAAS,MAAA,IAAW,CAAC,CAAC,GAAA,CAAI,EAAA,CAAA;AAEtI,IAAA,IAAI,YAAY,CAAC,IAAA,EAAM,KAAA,EAAO,OAAA,GAAU,SACvC,CAAA,KAAA,KAAS;AACR,MAAA,IAAI,MAAA,GAAS,KAAK,KAAA,EAAO,KAAA,GAAQ,OAAO,OAAA,CAAQ,KAAA,EAAO,KAAK,MAAM,CAAA;AAClE,MAAA,OAAO,CAAC,KAAA,GAAQ,IAAA,GAAO,YAAA,CAAa,MAAA,EAAQ,KAAA,EAAO,OAAA,EAAS,KAAK,CAAA,GAAI,KAAA,GAAQ,IAAA,GAAO,MAAA,GAAS,KAAA;AAAA,IAC9F,CAAA;AAED,IAAA,IAAI,YAAA,GAAe,CAAC,MAAA,EAAQ,KAAA,EAAO,SAAS,KAAA,KAAU;AACrD,MAAA,IAAI,MAAA,GAAS,IAAI,MAAA,GAAS,CAAA;AAC1B,MAAA,GAAG;AACF,QAAA,MAAA,IAAU,MAAA,CAAO,SAAA,CAAU,MAAA,EAAQ,KAAK,CAAA,GAAI,OAAA;AAC5C,QAAA,MAAA,GAAS,QAAQ,KAAA,CAAM,MAAA;AACvB,QAAA,KAAA,GAAQ,MAAA,CAAO,OAAA,CAAQ,KAAA,EAAO,MAAM,CAAA;AAAA,MACrC,SAAS,CAAC,KAAA;AACV,MAAA,OAAO,MAAA,GAAS,MAAA,CAAO,SAAA,CAAU,MAAM,CAAA;AAAA,IACxC,CAAA;AAEA,IAAA,IAAI,YAAA,GAAe,CAAC,OAAA,GAAU,gBAAA,KAAqB;AAClD,MAAA,IAAI,CAAA,GAAI,OAAA,GAAU,SAAA,GAAY,MAAM,MAAA;AACpC,MAAA,OAAO;AAAA,QACN,gBAAA,EAAkB,OAAA;AAAA,QAClB,KAAA,EAAO,CAAA,CAAE,SAAA,EAAW,SAAS,CAAA;AAAA,QAC7B,IAAA,EAAM,CAAA,CAAE,SAAA,EAAW,UAAA,EAAY,iBAAiB,CAAA;AAAA,QAChD,GAAA,EAAK,CAAA,CAAE,SAAA,EAAW,UAAA,EAAY,iBAAiB,CAAA;AAAA,QAC/C,MAAA,EAAQ,CAAA,CAAE,SAAA,EAAW,UAAU,CAAA;AAAA,QAC/B,SAAA,EAAW,CAAA,CAAE,SAAA,EAAW,UAAU,CAAA;AAAA,QAClC,OAAA,EAAS,CAAA,CAAE,SAAA,EAAW,UAAU,CAAA;AAAA,QAChC,MAAA,EAAQ,CAAA,CAAE,SAAA,EAAW,UAAU,CAAA;AAAA,QAC/B,aAAA,EAAe,CAAA,CAAE,SAAA,EAAW,UAAU,CAAA;AAAA,QAEtC,KAAA,EAAO,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QAC/B,GAAA,EAAK,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QAC7B,KAAA,EAAO,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QAC/B,MAAA,EAAQ,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QAChC,IAAA,EAAM,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QAC9B,OAAA,EAAS,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QACjC,IAAA,EAAM,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QAC9B,KAAA,EAAO,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QAC/B,IAAA,EAAM,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QAE9B,OAAA,EAAS,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QACjC,KAAA,EAAO,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QAC/B,OAAA,EAAS,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QACjC,QAAA,EAAU,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QAClC,MAAA,EAAQ,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QAChC,SAAA,EAAW,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QACnC,MAAA,EAAQ,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QAChC,OAAA,EAAS,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QAEjC,WAAA,EAAa,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QACrC,SAAA,EAAW,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QACnC,WAAA,EAAa,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QACrC,YAAA,EAAc,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QACtC,UAAA,EAAY,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QACpC,aAAA,EAAe,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QACvC,UAAA,EAAY,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QACpC,WAAA,EAAa,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QAErC,aAAA,EAAe,CAAA,CAAE,WAAA,EAAa,UAAU,CAAA;AAAA,QACxC,WAAA,EAAa,CAAA,CAAE,WAAA,EAAa,UAAU,CAAA;AAAA,QACtC,aAAA,EAAe,CAAA,CAAE,WAAA,EAAa,UAAU,CAAA;AAAA,QACxC,cAAA,EAAgB,CAAA,CAAE,WAAA,EAAa,UAAU,CAAA;AAAA,QACzC,YAAA,EAAc,CAAA,CAAE,WAAA,EAAa,UAAU,CAAA;AAAA,QACvC,eAAA,EAAiB,CAAA,CAAE,WAAA,EAAa,UAAU,CAAA;AAAA,QAC1C,YAAA,EAAc,CAAA,CAAE,WAAA,EAAa,UAAU,CAAA;AAAA,QACvC,aAAA,EAAe,CAAA,CAAE,WAAA,EAAa,UAAU;AAAA,OACzC;AAAA,IACD,CAAA;AAEA,IAAA,MAAA,CAAO,UAAU,YAAA,EAAa;AAC9B,IAAA,MAAA,CAAO,QAAQ,YAAA,GAAe,YAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;;AC1Ef,SAASC,GAAU,EAAC,SAAA,EAAAC,KAAY,KAAA,EAAK,GAAI,EAAA,EAAI;AAG3D,EAAA,MAAMC,IAAU,CACf,yJAAA,EACA,0DACF,CAAA,CAAG,KAAK,GAAG,CAAA;AAEV,EAAA,OAAO,IAAI,MAAA,CAAOA,CAAAA,EAASD,EAAAA,GAAY,SAAY,GAAG,CAAA;AACvD;ACPA,IAAME,KAAQH,EAAAA,EAAS;AAER,SAASI,EAAUC,EAAAA,EAAQ;AACzC,EAAA,IAAI,OAAOA,MAAW,QAAA,EACrB,MAAM,IAAI,SAAA,CAAU,CAAA,6BAAA,EAAgC,OAAOA,EAAM,CAAA,EAAA,CAAI,CAAA;AAMtE,EAAA,OAAOA,EAAAA,CAAO,OAAA,CAAQF,EAAAA,EAAO,EAAE,CAAA;AAChC;AAAA,SAAA,EAAAG,EAAAA,EAAA;AAAA,EAAA,OAAAA,EAAAA,IAAAA,EAAAA,CAAA,UAAA,IAAA,MAAA,CAAA,SAAA,CAAA,cAAA,CAAA,IAAA,CAAAA,EAAAA,EAAA,SAAA,CAAA,GAAAA,EAAAA,CAAA,OAAA,GAAAA,EAAAA;AAAA;AAAA,IAAA,CAAA,GAAA,EAAA,OAAA,EAAA,EAAA,EAAA;AAAA,CAAA,SAAAA,EAAAA,EAAA;ACbA,EAAA,IAAIC,KAAM,EAAA;AAKRC,EAAAA,GAAAA,OAAAA,GAAiBD,EAAAA,EAGnBA,EAAAA,CAAI,cAAA,GAAiB,SAASE,EAAAA,EAAW;AACvC,IAAA,IAAIZ,CAAAA,GAAIY,EAAAA,CAAU,UAAA,CAAW,CAAC,GAC1BX,CAAAA,GAAKW,EAAAA,CAAU,MAAA,IAAU,CAAA,GAAKA,EAAAA,CAAU,UAAA,CAAW,CAAC,CAAA,GAAI,GACxDC,EAAAA,GAAYb,CAAAA;AAQhB,IAAA,OAPK,SAAUA,CAAAA,IAAKA,CAAAA,IAAK,SAAY,KAAA,IAAUC,CAAAA,IAAKA,KAAK,KAAA,KACvDD,CAAAA,IAAK,MACLC,CAAAA,IAAK,IAAA,EACLY,KAAab,CAAAA,IAAK,EAAA,GAAMC,GACxBY,EAAAA,IAAa,KAAA,CAAA,EAGAA,MAAV,KAAA,IACA,KAAA,IAAUA,MAAaA,EAAAA,IAAa,KAAA,IACpC,SAAUA,EAAAA,IAAaA,EAAAA,IAAa,QAChC,GAAA,GAEMA,EAAAA,IAAV,QACA,KAAA,IAAUA,EAAAA,IAAaA,MAAa,KAAA,IACpC,KAAA,IAAUA,MAAaA,EAAAA,IAAa,KAAA,IACpC,SAAUA,EAAAA,IAAaA,EAAAA,IAAa,SACpC,KAAA,IAAUA,EAAAA,IAAaA,MAAa,KAAA,IACpC,KAAA,IAAUA,MAAaA,EAAAA,IAAa,KAAA,IACpC,SAAUA,EAAAA,IAAaA,EAAAA,IAAa,QAChC,GAAA,GAEJ,IAAA,IAAUA,MAAaA,EAAAA,IAAa,IAAA,IACpC,QAAUA,EAAAA,IAAaA,EAAAA,IAAa,QACpC,IAAA,IAAUA,EAAAA,IAAaA,MAAa,IAAA,IACpC,IAAA,IAAUA,MAAaA,EAAAA,IAAa,IAAA,IACpC,SAAUA,EAAAA,IAAaA,EAAAA,IAAa,SACpC,KAAA,IAAUA,EAAAA,IAAaA,MAAa,KAAA,IACpC,KAAA,IAAUA,MAAaA,EAAAA,IAAa,KAAA,IACpC,SAAUA,EAAAA,IAAaA,EAAAA,IAAa,SACpC,KAAA,IAAUA,EAAAA,IAAaA,MAAa,KAAA,IACpC,KAAA,IAAUA,EAAAA,IAAaA,EAAAA,IAAa,SACpC,KAAA,IAAUA,EAAAA,IAAaA,MAAa,KAAA,IACpC,KAAA,IAAUA,MAAaA,EAAAA,IAAa,KAAA,IACpC,SAAUA,EAAAA,IAAaA,EAAAA,IAAa,SACpC,KAAA,IAAUA,EAAAA,IAAaA,MAAa,KAAA,IACpC,KAAA,IAAUA,MAAaA,EAAAA,IAAa,KAAA,IACpC,SAAUA,EAAAA,IAAaA,EAAAA,IAAa,SACpC,KAAA,IAAUA,EAAAA,IAAaA,MAAa,KAAA,IACpC,KAAA,IAAUA,MAAaA,EAAAA,IAAa,KAAA,IACpC,SAAUA,EAAAA,IAAaA,EAAAA,IAAa,SACpC,KAAA,IAAUA,EAAAA,IAAaA,MAAa,KAAA,IACpC,KAAA,IAAUA,MAAaA,EAAAA,IAAa,KAAA,IACpC,SAAUA,EAAAA,IAAaA,EAAAA,IAAa,SACpC,KAAA,IAAUA,EAAAA,IAAaA,MAAa,KAAA,IACpC,KAAA,IAAUA,MAAaA,EAAAA,IAAa,KAAA,IACpC,SAAUA,EAAAA,IAAaA,EAAAA,IAAa,SACpC,KAAA,IAAUA,EAAAA,IAAaA,MAAa,KAAA,IACpC,KAAA,IAAUA,MAAaA,EAAAA,IAAa,KAAA,IACpC,SAAUA,EAAAA,IAAaA,EAAAA,IAAa,SACpC,KAAA,IAAUA,EAAAA,IAAaA,MAAa,KAAA,IACpC,KAAA,IAAUA,MAAaA,EAAAA,IAAa,KAAA,IACpC,UAAWA,EAAAA,IAAaA,EAAAA,IAAa,UACrC,MAAA,IAAWA,EAAAA,IAAaA,MAAa,MAAA,IACrC,MAAA,IAAWA,MAAaA,EAAAA,IAAa,MAAA,IACrC,MAAA,IAAWA,EAAAA,IAAaA,MAAa,MAAA,IACrC,MAAA,IAAWA,MAAaA,EAAAA,IAAa,MAAA,IACrC,UAAWA,EAAAA,IAAaA,EAAAA,IAAa,UACrC,MAAA,IAAWA,EAAAA,IAAaA,MAAa,MAAA,IACrC,MAAA,IAAWA,MAAaA,EAAAA,IAAa,MAAA,GACjC,MAEJ,EAAA,IAAUA,EAAAA,IAAaA,MAAa,GAAA,IACpC,GAAA,IAAUA,MAAaA,EAAAA,IAAa,GAAA,IACpC,OAAUA,EAAAA,IAAaA,EAAAA,IAAa,OAC1BA,EAAAA,IAAV,GAAA,IACUA,MAAV,GAAA,IACA,KAAA,IAAUA,MAAaA,EAAAA,IAAa,KAAA,IACpC,SAAUA,EAAAA,IAAaA,EAAAA,IAAa,QAChC,IAAA,GAEMA,EAAAA,IAAV,OACUA,EAAAA,IAAV,GAAA,IACA,OAAUA,EAAAA,IAAaA,EAAAA,IAAa,OAC1BA,EAAAA,IAAV,GAAA,IACA,OAAUA,EAAAA,IAAaA,EAAAA,IAAa,OACpC,GAAA,IAAUA,EAAAA,IAAaA,MAAa,GAAA,IACpC,GAAA,IAAUA,MAAaA,EAAAA,IAAa,GAAA,IACpC,OAAUA,EAAAA,IAAaA,EAAAA,IAAa,OAC1BA,EAAAA,IAAV,GAAA,IACUA,MAAV,GAAA,IACA,GAAA,IAAUA,MAAaA,EAAAA,IAAa,GAAA,IACpC,OAAUA,EAAAA,IAAaA,EAAAA,IAAa,OAC1BA,EAAAA,IAAV,GAAA,IACA,OAAUA,EAAAA,IAAaA,EAAAA,IAAa,OACpC,GAAA,IAAUA,EAAAA,IAAaA,MAAa,GAAA,IAC1BA,EAAAA,IAAV,OACA,GAAA,IAAUA,EAAAA,IAAaA,MAAa,GAAA,IACpC,GAAA,IAAUA,MAAaA,EAAAA,IAAa,GAAA,IAC1BA,MAAV,GAAA,IACUA,EAAAA,IAAV,OACUA,EAAAA,IAAV,GAAA,IACUA,MAAV,GAAA,IACUA,EAAAA,IAAV,OACUA,EAAAA,IAAV,GAAA,IACA,OAAUA,EAAAA,IAAaA,EAAAA,IAAa,OAC1BA,EAAAA,IAAV,GAAA,IACA,OAAUA,EAAAA,IAAaA,EAAAA,IAAa,OAC1BA,EAAAA,IAAV,GAAA,IACA,OAAUA,EAAAA,IAAaA,EAAAA,IAAa,OAC1BA,EAAAA,IAAV,GAAA,IACA,OAAUA,EAAAA,IAAaA,EAAAA,IAAa,OAC1BA,EAAAA,IAAV,GAAA,IACA,OAAUA,EAAAA,IAAaA,EAAAA,IAAa,OACpC,GAAA,IAAUA,EAAAA,IAAaA,MAAa,GAAA,IAC1BA,EAAAA,IAAV,OACUA,EAAAA,IAAV,GAAA,IACUA,MAAV,GAAA,IACUA,EAAAA,IAAV,OACUA,EAAAA,IAAV,GAAA,IACUA,MAAV,GAAA,IACUA,EAAAA,IAAV,OACUA,EAAAA,IAAV,GAAA,IACUA,MAAV,GAAA,IACUA,EAAAA,IAAV,OACUA,EAAAA,IAAV,GAAA,IACUA,MAAV,GAAA,IACUA,EAAAA,IAAV,OACA,GAAA,IAAUA,EAAAA,IAAaA,MAAa,GAAA,IAC1BA,EAAAA,IAAV,OACUA,EAAAA,IAAV,GAAA,IACA,OAAUA,EAAAA,IAAaA,EAAAA,IAAa,OAC1BA,EAAAA,IAAV,GAAA,IACUA,MAAV,GAAA,IACA,GAAA,IAAUA,EAAAA,IAAaA,EAAAA,IAAa,OACpC,GAAA,IAAUA,EAAAA,IAAaA,MAAa,GAAA,IACpC,GAAA,IAAUA,MAAaA,EAAAA,IAAa,GAAA,IACpC,OAAUA,EAAAA,IAAaA,EAAAA,IAAa,OACpC,GAAA,IAAUA,EAAAA,IAAaA,MAAa,GAAA,IAC1BA,EAAAA,IAAV,QACA,IAAA,IAAUA,EAAAA,IAAaA,MAAa,IAAA,IAC1BA,EAAAA,IAAV,QACUA,EAAAA,IAAV,IAAA,IACA,QAAUA,EAAAA,IAAaA,EAAAA,IAAa,QACpC,IAAA,IAAUA,EAAAA,IAAaA,MAAa,IAAA,IACpC,IAAA,IAAUA,MAAaA,EAAAA,IAAa,IAAA,IACpC,QAAUA,EAAAA,IAAaA,EAAAA,IAAa,QACpC,IAAA,IAAUA,EAAAA,IAAaA,MAAa,IAAA,IAC1BA,EAAAA,IAAV,QACA,IAAA,IAAUA,EAAAA,IAAaA,MAAa,IAAA,IAC1BA,EAAAA,IAAV,QACUA,EAAAA,IAAV,IAAA,IACUA,MAAV,IAAA,IACUA,EAAAA,IAAV,QACUA,EAAAA,IAAV,IAAA,IACA,QAAUA,EAAAA,IAAaA,EAAAA,IAAa,QAC1BA,EAAAA,IAAV,IAAA,IACUA,MAAV,IAAA,IACUA,EAAAA,IAAV,QACUA,EAAAA,IAAV,IAAA,IACUA,MAAV,IAAA,IACUA,EAAAA,IAAV,QACA,IAAA,IAAUA,EAAAA,IAAaA,MAAa,IAAA,IAC1BA,EAAAA,IAAV,QACUA,EAAAA,IAAV,IAAA,IACA,QAAUA,EAAAA,IAAaA,EAAAA,IAAa,QACpC,IAAA,IAAUA,EAAAA,IAAaA,EAAAA,IAAa,IAAA,IACpC,QAAUA,EAAAA,IAAaA,EAAAA,IAAa,QACpC,IAAA,IAAUA,EAAAA,IAAaA,MAAa,IAAA,IAC1BA,EAAAA,IAAV,QACA,IAAA,IAAUA,EAAAA,IAAaA,MAAa,IAAA,IACpC,IAAA,IAAUA,MAAaA,EAAAA,IAAa,IAAA,IAC1BA,MAAV,IAAA,IACUA,EAAAA,IAAV,QACUA,EAAAA,IAAV,IAAA,IACUA,MAAV,IAAA,IACA,IAAA,IAAUA,MAAaA,EAAAA,IAAa,IAAA,IACpC,QAAUA,EAAAA,IAAaA,EAAAA,IAAa,QAC1BA,EAAAA,IAAV,IAAA,IACUA,MAAV,IAAA,IACUA,EAAAA,IAAV,QACUA,EAAAA,IAAV,IAAA,IACUA,MAAV,IAAA,IACA,IAAA,IAAUA,MAAaA,EAAAA,IAAa,IAAA,IAC1BA,MAAV,IAAA,IACUA,EAAAA,IAAV,QACA,IAAA,IAAUA,EAAAA,IAAaA,MAAa,IAAA,IAC1BA,EAAAA,IAAV,QACA,IAAA,IAAUA,EAAAA,IAAaA,MAAa,IAAA,IACpC,IAAA,IAAUA,MAAaA,EAAAA,IAAa,IAAA,IAC1BA,MAAV,IAAA,IACUA,EAAAA,IAAV,QACUA,EAAAA,IAAV,IAAA,IACA,QAAUA,EAAAA,IAAaA,EAAAA,IAAa,QACpC,IAAA,IAAUA,EAAAA,IAAaA,MAAa,IAAA,IACpC,IAAA,IAAUA,MAAaA,EAAAA,IAAa,IAAA,IACpC,QAAUA,EAAAA,IAAaA,EAAAA,IAAa,QACpC,IAAA,IAAUA,EAAAA,IAAaA,MAAa,IAAA,IACpC,IAAA,IAAUA,EAAAA,IAAaA,EAAAA,IAAa,QAC1BA,EAAAA,IAAV,IAAA,IACUA,MAAV,IAAA,IACUA,EAAAA,IAAV,QACUA,EAAAA,IAAV,IAAA,IACUA,MAAV,IAAA,IACA,IAAA,IAAUA,MAAaA,EAAAA,IAAa,IAAA,IACpC,QAAUA,EAAAA,IAAaA,EAAAA,IAAa,QACpC,IAAA,IAAUA,EAAAA,IAAaA,MAAa,IAAA,IACpC,IAAA,IAAUA,MAAaA,EAAAA,IAAa,IAAA,IACpC,QAAUA,EAAAA,IAAaA,EAAAA,IAAa,QACpC,IAAA,IAAUA,EAAAA,IAAaA,MAAa,IAAA,IACpC,IAAA,IAAUA,MAAaA,EAAAA,IAAa,IAAA,IACpC,QAAUA,EAAAA,IAAaA,EAAAA,IAAa,QACpC,IAAA,IAAUA,EAAAA,IAAaA,MAAa,IAAA,IACpC,IAAA,IAAUA,MAAaA,EAAAA,IAAa,IAAA,IACpC,QAAUA,EAAAA,IAAaA,EAAAA,IAAa,QACpC,IAAA,IAAUA,EAAAA,IAAaA,MAAa,IAAA,IAC1BA,EAAAA,IAAV,QACA,IAAA,IAAUA,EAAAA,IAAaA,MAAa,IAAA,IACpC,IAAA,IAAUA,MAAaA,EAAAA,IAAa,IAAA,IAC1BA,MAAV,IAAA,IACA,IAAA,IAAUA,MAAaA,EAAAA,IAAa,IAAA,IAC1BA,MAAV,IAAA,IACA,IAAA,IAAUA,MAAaA,EAAAA,IAAa,IAAA,IACpC,QAAUA,EAAAA,IAAaA,EAAAA,IAAa,QAC1BA,EAAAA,IAAV,IAAA,IACUA,MAAV,IAAA,IACUA,EAAAA,IAAV,QACUA,EAAAA,IAAV,IAAA,IACA,QAAUA,EAAAA,IAAaA,EAAAA,IAAa,QACpC,IAAA,IAAUA,EAAAA,IAAaA,MAAa,IAAA,IACpC,IAAA,IAAUA,MAAaA,EAAAA,IAAa,IAAA,IACpC,QAAUA,EAAAA,IAAaA,EAAAA,IAAa,QAC1BA,EAAAA,IAAV,IAAA,IACA,QAAUA,EAAAA,IAAaA,EAAAA,IAAa,QACpC,IAAA,IAAUA,EAAAA,IAAaA,MAAa,IAAA,IACpC,IAAA,IAAUA,MAAaA,EAAAA,IAAa,IAAA,IACpC,QAAUA,EAAAA,IAAaA,EAAAA,IAAa,QAC1BA,EAAAA,IAAV,IAAA,IACA,QAAUA,EAAAA,IAAaA,EAAAA,IAAa,QAC1BA,EAAAA,IAAV,KAAA,IACUA,MAAV,KAAA,IACA,KAAA,IAAUA,MAAaA,EAAAA,IAAa,KAAA,IACpC,SAAUA,EAAAA,IAAaA,EAAAA,IAAa,SACpC,KAAA,IAAUA,EAAAA,IAAaA,MAAa,KAAA,IACpC,KAAA,IAAUA,MAAaA,EAAAA,IAAa,KAAA,IACpC,SAAUA,EAAAA,IAAaA,EAAAA,IAAa,SAC1BA,EAAAA,IAAV,KAAA,IACA,UAAWA,EAAAA,IAAaA,EAAAA,IAAa,UACrC,MAAA,IAAWA,EAAAA,IAAaA,MAAa,MAAA,IACrC,MAAA,IAAWA,MAAaA,EAAAA,IAAa,MAAA,IACrC,UAAWA,EAAAA,IAAaA,EAAAA,IAAa,UACrC,MAAA,IAAWA,EAAAA,IAAaA,MAAa,MAAA,IACrC,MAAA,IAAWA,MAAaA,EAAAA,IAAa,OAAA,IACrC,WAAYA,EAAAA,IAAaA,EAAAA,IAAa,UAClC,GAAA,GAGF,GAAA;EAAA,CAAA,EAGTH,EAAAA,CAAI,eAAA,GAAkB,SAASE,EAAAA,EAAW;AACxC,IAAA,IAAIE,CAAAA,GAAO,IAAA,CAAK,cAAA,CAAeF,EAAS,CAAA;AACxC,IAAA,OAAIE,KAAQ,GAAA,IAAOA,CAAAA,IAAQ,GAAA,IAAOA,CAAAA,IAAQ,MACjC,CAAA,GAEA,CAAA;AAAA,EAAA,CAAA;AAKX,EAAA,SAASC,EAAcP,EAAAA,EAAQ;AAC7B,IAAA,OAAOA,EAAAA,CAAO,KAAA,CAAM,kDAAkD,CAAA,IAAK,EAAA;AAC7E,EAAA;AAEAE,EAAAA,EAAAA,CAAI,MAAA,GAAS,SAASF,EAAAA,EAAQ;AAG5B,IAAA,KAAA,IAFIQ,IAAaD,CAAAA,CAAcP,EAAM,GACjCS,CAAAA,GAAM,CAAA,EACDC,KAAI,CAAA,EAAGA,EAAAA,GAAIF,CAAAA,CAAW,MAAA,EAAQE,MACrCD,CAAAA,GAAMA,CAAAA,GAAM,KAAK,eAAA,CAAgBD,CAAAA,CAAWE,EAAC,CAAC,CAAA;AAEhD,IAAA,OAAOD,CAAAA;AAAAA,EAAAA,CAAAA,EAGTP,EAAAA,CAAI,KAAA,GAAQ,SAASS,EAAAA,EAAMC,GAAOC,CAAAA,EAAK;AACrC,IAAA,OAAA,GAAUX,GAAI,MAAA,CAAOS,EAAI,GACzBC,CAAAA,GAAQA,CAAAA,IAAgB,GACxBC,CAAAA,GAAMA,CAAAA,IAAY,CAAA,EACdD,CAAAA,GAAQ,MACRA,CAAAA,GAAQ,OAAA,GAAUA,IAElBC,CAAAA,GAAM,CAAA,KACNA,IAAM,OAAA,GAAUA,CAAAA,CAAAA;AAKpB,IAAA,KAAA,IAHIC,EAAAA,GAAS,EAAA,EACTC,CAAAA,GAAS,CAAA,EACTC,CAAAA,GAAQT,CAAAA,CAAcI,EAAI,CAAA,EACrBD,CAAAA,GAAI,CAAA,EAAGA,CAAAA,GAAIM,CAAAA,CAAM,QAAQN,CAAAA,EAAAA,EAAK;AACrC,MAAA,IAAIO,IAAOD,CAAAA,CAAMN,CAAC,GACdQ,EAAAA,GAAUhB,EAAAA,CAAI,OAAOe,CAAI,CAAA;AAC7B,MAAA,IAAIF,CAAAA,IAAUH,CAAAA,IAASM,EAAAA,IAAW,CAAA,GAAI,CAAA,GAAI,CAAA,CAAA,EACtC,IAAIH,CAAAA,GAASG,EAAAA,IAAWL,CAAAA,EACpBC,EAAAA,IAAUG,CAAAA;AAEV,WAAA;AAGRF,MAAAA,CAAAA,IAAUG,EAAAA;AACd,IAAA;AACE,IAAA,OAAOJ,EAAAA;AAAAA,EAAAA,CAAAA;AAAAA,CAAAA,EAAAA,CAAAA,CAAAA;AAAAA,IAAAA,KAAAA,CAAAA,CAAAA,OAAAA;AAAAA,IAAAA,EAAAA,GAAAA,EAAAA,EAAAA,CAAAA;ACnTT,IAAAK,KAAiB,WAAY;AAE3B,EAAA,OAAO,gyeAAA;AACT,CAAA;AAAA,IAAA,EAAA,GAAA,EAAA,EAAA,CAAA;ACDe,SAASC,CAAAA,CAAYpB,EAAAA,EAAQqB,EAAAA,GAAU,EAAA,EAAI;AAYzD,EAAA,IAXI,OAAOrB,MAAW,QAAA,IAAYA,EAAAA,CAAO,WAAW,CAAA,KAIpDqB,EAAAA,GAAU,EACT,iBAAA,EAAmB,IAAA,EACnB,GAAGA,EAAAA,EACL,EAECrB,KAASD,CAAAA,CAAUC,EAAM,GAErBA,EAAAA,CAAO,MAAA,KAAW,IACrB,OAAO,CAAA;AAGRA,EAAAA,EAAAA,GAASA,EAAAA,CAAO,OAAA,CAAQmB,EAAAA,IAAc,IAAI,CAAA;AAE1C,EAAA,MAAMG,CAAAA,GAA0BD,EAAAA,CAAQ,iBAAA,GAAoB,CAAA,GAAI,CAAA;AAChE,EAAA,IAAIE,EAAAA,GAAQ,CAAA;AAEZ,EAAA,KAAA,MAAWnB,KAAaJ,EAAAA,EAAQ;AAC/B,IAAA,MAAMK,CAAAA,GAAYD,CAAAA,CAAU,WAAA,CAAY,CAAC,CAAA;AAQzC,IAAA,IALIC,CAAAA,IAAa,MAASA,CAAAA,IAAa,GAAA,IAAQA,KAAa,GAAA,IAKxDA,CAAAA,IAAa,GAAA,IAASA,CAAAA,IAAa,GAAA,EACtC;AAID,IAAA,QADamB,EAAAA,CAAe,cAAA,CAAepB,CAAS,CAAA;MAEnD,KAAK,GAAA;MACL,KAAK,GAAA;AACJmB,QAAAA,EAAAA,IAAS,CAAA;AACT,QAAA;MACD,KAAK,GAAA;AACJA,QAAAA,EAAAA,IAASD,CAAAA;AACT,QAAA;AACD,MAAA;AACCC,QAAAA,EAAAA,IAAS,CAAA;AACV;AACD,EAAA;AAED,EAAA,OAAOA,EAAAA;AACR;ACrDA,IAAME,CAAAA,GAAyB,EAAA;AAA/B,IAEMC,CAAAA,GAAa,CAACC,EAAAA,GAAS,CAAA,KAAMrB,CAAAA,EAAAA,KAAQ,CAAA,KAAA,EAAUA,KAAOqB,EAAM,CAAA,CAAA,CAAA;AAFlE,IAIMC,CAAAA,GAAc,CAACD,EAAAA,GAAS,CAAA,KAAMrB,CAAAA,OAAQ,CAAA,KAAA,EAAU,EAAA,GAAKqB,EAAM,CAAA,GAAA,EAAMrB,EAAI,CAAA,CAAA,CAAA;AAJ3E,IAMMuB,IAAc,CAACF,EAAAA,GAAS,CAAA,KAAM,CAACG,IAAKC,CAAAA,EAAOC,EAAAA,KAAS,CAAA,KAAA,EAAU,EAAA,GAAKL,EAAM,CAAA,GAAA,EAAMG,EAAG,CAAA,CAAA,EAAIC,CAAK,IAAIC,EAAI,CAAA,CAAA,CAAA;AANzG,IAQMC,CAAAA,GAAS,EACd,QAAA,EAAU,EACT,KAAA,EAAO,CAAC,CAAA,EAAG,CAAC,CAAA,EAEZ,IAAA,EAAM,CAAC,CAAA,EAAG,EAAE,CAAA,EACZ,GAAA,EAAK,CAAC,CAAA,EAAG,EAAE,CAAA,EACX,MAAA,EAAQ,CAAC,CAAA,EAAG,EAAE,CAAA,EACd,SAAA,EAAW,CAAC,CAAA,EAAG,EAAE,CAAA,EACjB,QAAA,EAAU,CAAC,EAAA,EAAI,EAAE,CAAA,EACjB,OAAA,EAAS,CAAC,CAAA,EAAG,EAAE,CAAA,EACf,MAAA,EAAQ,CAAC,CAAA,EAAG,EAAE,CAAA,EACd,aAAA,EAAe,CAAC,CAAA,EAAG,EAAE,CAAA,EACrB,EACD,KAAA,EAAO,EACN,KAAA,EAAO,CAAC,EAAA,EAAI,EAAE,CAAA,EACd,KAAK,CAAC,EAAA,EAAI,EAAE,CAAA,EACZ,KAAA,EAAO,CAAC,EAAA,EAAI,EAAE,CAAA,EACd,MAAA,EAAQ,CAAC,EAAA,EAAI,EAAE,CAAA,EACf,MAAM,CAAC,EAAA,EAAI,EAAE,CAAA,EACb,OAAA,EAAS,CAAC,EAAA,EAAI,EAAE,CAAA,EAChB,IAAA,EAAM,CAAC,EAAA,EAAI,EAAE,CAAA,EACb,OAAO,CAAC,EAAA,EAAI,EAAE,CAAA,EAGd,WAAA,EAAa,CAAC,EAAA,EAAI,EAAE,CAAA,EACpB,IAAA,EAAM,CAAC,EAAA,EAAI,EAAE,CAAA,EACb,MAAM,CAAC,EAAA,EAAI,EAAE,CAAA,EACb,SAAA,EAAW,CAAC,EAAA,EAAI,EAAE,CAAA,EAClB,WAAA,EAAa,CAAC,EAAA,EAAI,EAAE,CAAA,EACpB,cAAc,CAAC,EAAA,EAAI,EAAE,CAAA,EACrB,UAAA,EAAY,CAAC,EAAA,EAAI,EAAE,CAAA,EACnB,aAAA,EAAe,CAAC,EAAA,EAAI,EAAE,CAAA,EACtB,YAAY,CAAC,EAAA,EAAI,EAAE,CAAA,EACnB,WAAA,EAAa,CAAC,EAAA,EAAI,EAAE,CAAA,EACpB,EACD,OAAA,EAAS,EACR,OAAA,EAAS,CAAC,IAAI,EAAE,CAAA,EAChB,KAAA,EAAO,CAAC,EAAA,EAAI,EAAE,CAAA,EACd,OAAA,EAAS,CAAC,EAAA,EAAI,EAAE,CAAA,EAChB,QAAA,EAAU,CAAC,IAAI,EAAE,CAAA,EACjB,MAAA,EAAQ,CAAC,EAAA,EAAI,EAAE,CAAA,EACf,SAAA,EAAW,CAAC,EAAA,EAAI,EAAE,CAAA,EAClB,MAAA,EAAQ,CAAC,IAAI,EAAE,CAAA,EACf,OAAA,EAAS,CAAC,EAAA,EAAI,EAAE,CAAA,EAGhB,aAAA,EAAe,CAAC,GAAA,EAAK,EAAE,CAAA,EACvB,MAAA,EAAQ,CAAC,KAAK,EAAE,CAAA,EAChB,MAAA,EAAQ,CAAC,GAAA,EAAK,EAAE,CAAA,EAChB,WAAA,EAAa,CAAC,GAAA,EAAK,EAAE,CAAA,EACrB,aAAA,EAAe,CAAC,KAAK,EAAE,CAAA,EACvB,cAAA,EAAgB,CAAC,GAAA,EAAK,EAAE,CAAA,EACxB,YAAA,EAAc,CAAC,GAAA,EAAK,EAAE,CAAA,EACtB,eAAA,EAAiB,CAAC,KAAK,EAAE,CAAA,EACzB,YAAA,EAAc,CAAC,GAAA,EAAK,EAAE,CAAA,EACtB,aAAA,EAAe,CAAC,GAAA,EAAK,EAAE,CAAA,EACvB,EACF;AAE6B,MAAA,CAAO,IAAA,CAAKA,EAAO,QAAQ,CAAA;AACjD,IAAMC,EAAAA,GAAuB,MAAA,CAAO,IAAA,CAAKD,CAAAA,CAAO,KAAK,CAAA;AAArD,IACME,EAAAA,GAAuB,MAAA,CAAO,IAAA,CAAKF,CAAAA,CAAO,OAAO,CAAA;AACpC,CAAC,GAAGC,EAAAA,EAAsB,GAAGC,EAAoB,CAAA;AAE3E,SAASC,EAAAA,GAAiB;AACzB,EAAA,MAAMC,qBAAQ,IAAI,GAAA,EAAA;AAElB,EAAA,KAAA,MAAW,CAACC,EAAAA,EAAWC,CAAK,KAAK,MAAA,CAAO,OAAA,CAAQN,CAAM,CAAA,EAAG;AACxD,IAAA,KAAA,MAAW,CAACO,EAAAA,EAAWC,CAAK,CAAA,IAAK,MAAA,CAAO,QAAQF,CAAK,CAAA,EACpDN,CAAAA,CAAOO,EAAS,IAAI,EACnB,IAAA,EAAM,QAAUC,CAAAA,CAAM,CAAC,CAAC,CAAA,CAAA,CAAA,EACxB,KAAA,EAAO,CAAA,KAAA,EAAUA,CAAAA,CAAM,CAAC,CAAC,CAAA,CAAA,CAAA,EAC7B,EAEGF,CAAAA,CAAMC,EAAS,CAAA,GAAIP,CAAAA,CAAOO,EAAS,CAAA,EAEnCH,GAAM,GAAA,CAAII,CAAAA,CAAM,CAAC,CAAA,EAAGA,CAAAA,CAAM,CAAC,CAAC,CAAA;AAG7B,IAAA,MAAA,CAAO,cAAA,CAAeR,GAAQK,EAAAA,EAAW,EACxC,OAAOC,CAAAA,EACP,UAAA,EAAY,OACZ,CAAA;AACD,EAAA;AAED,EAAA,OAAA,MAAA,CAAO,cAAA,CAAeN,CAAAA,EAAQ,OAAA,EAAS,EACtC,OAAOI,EAAAA,EACP,UAAA,EAAY,KAAA,EACZ,CAAA,EAEDJ,CAAAA,CAAO,MAAM,KAAA,GAAQ,UAAA,EACrBA,CAAAA,CAAO,OAAA,CAAQ,KAAA,GAAQ,UAAA,EAEvBA,EAAO,KAAA,CAAM,IAAA,GAAOP,CAAAA,EAAAA,EACpBO,CAAAA,CAAO,KAAA,CAAM,UAAUL,CAAAA,EAAAA,EACvBK,CAAAA,CAAO,KAAA,CAAM,OAAA,GAAUJ,CAAAA,IACvBI,CAAAA,CAAO,OAAA,CAAQ,IAAA,GAAOP,CAAAA,CAAWD,CAAsB,CAAA,EACvDQ,EAAO,OAAA,CAAQ,OAAA,GAAUL,CAAAA,CAAYH,CAAsB,CAAA,EAC3DQ,CAAAA,CAAO,QAAQ,OAAA,GAAUJ,CAAAA,CAAYJ,CAAsB,CAAA,EAG3D,MAAA,CAAO,gBAAA,CAAiBQ,GAAQ,EAC/B,YAAA,EAAc,EACb,KAAA,EAAO,CAACH,EAAAA,EAAKC,GAAOC,EAAAA,KAGfF,EAAAA,KAAQC,CAAAA,IAASA,CAAAA,KAAUC,EAAAA,GAC1BF,EAAAA,GAAM,IACF,EAAA,GAGJA,EAAAA,GAAM,GAAA,GACF,GAAA,GAGD,IAAA,CAAK,KAAA,CAAA,CAAQA,KAAM,CAAA,IAAK,GAAA,GAAO,EAAE,CAAA,GAAI,GAAA,GAGtC,EAAA,GACH,KAAK,IAAA,CAAK,KAAA,CAAMA,EAAAA,GAAM,GAAA,GAAM,CAAC,CAAA,GAC7B,IAAI,IAAA,CAAK,KAAA,CAAMC,CAAAA,GAAQ,GAAA,GAAM,CAAC,CAAA,GAC/B,KAAK,KAAA,CAAMC,EAAAA,GAAO,GAAA,GAAM,CAAC,CAAA,EAE7B,UAAA,EAAY,KAAA,EACZ,EACD,QAAA,EAAU,EACT,KAAA,EAAOU,CAAAA,EAAAA,KAAO;AACb,IAAA,MAAMC,IAAU,wBAAA,CAAyB,IAAA,CAAKD,EAAAA,CAAI,QAAA,CAAS,EAAE,CAAC,CAAA;AAC9D,IAAA,IAAI,CAACC,CAAAA,EACJ,OAAO,CAAC,CAAA,EAAG,GAAG,CAAC,CAAA;AAGhB,IAAA,IAAI,CAACC,EAAW,CAAA,GAAID,CAAAA;AAEhBC,IAAAA,EAAAA,CAAY,MAAA,KAAW,CAAA,KAC1BA,EAAAA,GAAc,CAAC,GAAGA,EAAW,CAAA,CAAE,GAAA,CAAIxC,CAAAA,CAAAA,KAAaA,CAAAA,GAAYA,CAAS,CAAA,CAAE,KAAK,EAAE,CAAA,CAAA;AAG/E,IAAA,MAAMyC,CAAAA,GAAU,MAAA,CAAO,QAAA,CAASD,EAAAA,EAAa,EAAE,CAAA;AAE/C,IAAA,OAAO,CAELC,KAAW,EAAA,GAAM,GAAA,EACjBA,KAAW,CAAA,GAAK,GAAA,EACjBA,IAAU,GAEf,CAAA;EACI,CAAA,EACD,UAAA,EAAY,OACZ,EACD,YAAA,EAAc,EACb,KAAA,EAAOH,CAAAA,EAAAA,KAAOT,CAAAA,CAAO,YAAA,CAAa,GAAGA,EAAO,QAAA,CAASS,EAAG,CAAC,CAAA,EACzD,UAAA,EAAY,KAAA,IAEb,aAAA,EAAe,EACd,KAAA,EAAOpC,CAAAA,EAAAA,KAAQ;AACd,IAAA,IAAIA,EAAAA,GAAO,CAAA,EACV,OAAO,EAAA,GAAKA,EAAAA;AAGb,IAAA,IAAIA,EAAAA,GAAO,EAAA,EACV,OAAO,EAAA,IAAMA,EAAAA,GAAO,CAAA,CAAA;AAGrB,IAAA,IAAIwB,GACAC,EAAAA,EACAC,CAAAA;AAEJ,IAAA,IAAI1B,EAAAA,IAAQ,GAAA,EACXwB,CAAAA,GAAAA,CAAAA,CAASxB,EAAAA,GAAO,GAAA,IAAO,KAAM,CAAA,IAAK,GAAA,EAClCyB,EAAAA,GAAQD,CAAAA,EACRE,CAAAA,GAAOF,CAAAA;AACD,SAAA;AACNxB,MAAAA,EAAAA,IAAQ,EAAA;AAER,MAAA,MAAMwC,IAAYxC,EAAAA,GAAO,EAAA;AAEzBwB,MAAAA,CAAAA,GAAM,IAAA,CAAK,KAAA,CAAMxB,EAAAA,GAAO,EAAE,IAAI,CAAA,EAC9ByB,EAAAA,GAAQ,IAAA,CAAK,KAAA,CAAMe,IAAY,CAAC,CAAA,GAAI,CAAA,EACpCd,CAAAA,GAAQc,IAAY,CAAA,GAAK,CAAA;AACzB,IAAA;AAED,IAAA,MAAMC,IAAQ,IAAA,CAAK,GAAA,CAAIjB,CAAAA,EAAKC,EAAAA,EAAOC,CAAI,CAAA,GAAI,CAAA;AAE3C,IAAA,IAAIe,CAAAA,KAAU,GACb,OAAO,EAAA;AAIR,IAAA,IAAIjC,EAAAA,GAAS,EAAA,IAAO,IAAA,CAAK,KAAA,CAAMkB,CAAI,CAAA,IAAK,CAAA,GAAM,IAAA,CAAK,KAAA,CAAMD,EAAK,CAAA,IAAK,CAAA,GAAK,IAAA,CAAK,MAAMD,CAAG,CAAA,CAAA;AAEtF,IAAA,OAAIiB,CAAAA,KAAU,CAAA,KACbjC,EAAAA,IAAU,EAAA,CAAA,EAGJA,EAAAA;AACP,EAAA,CAAA,EACD,YAAY,KAAA,EACZ,EACD,SAAA,EAAW,EACV,OAAO,CAACgB,EAAAA,EAAKC,CAAAA,EAAOC,EAAAA,KAASC,EAAO,aAAA,CAAcA,CAAAA,CAAO,aAAaH,EAAAA,EAAKC,CAAAA,EAAOC,EAAI,CAAC,CAAA,EACvF,UAAA,EAAY,KAAA,IAEb,SAAA,EAAW,EACV,KAAA,EAAOU,CAAAA,OAAOT,CAAAA,CAAO,aAAA,CAAcA,CAAAA,CAAO,YAAA,CAAaS,EAAG,CAAC,CAAA,EAC3D,YAAY,KAAA,EACZ,EACD,CAAA,EAEMT,CAAAA;AACR;AAEA,IAAMe,KAAaZ,EAAAA,EAAgB;AAAnC,ICxNMa,oBAAU,IAAI,GAAA,CAAI,CACvB,MAAA,EACA,MACD,CAAC,CAAA;ADqND,ICnNMC,EAAAA,GAAW,EAAA;ADmNjB,IClNMC,CAAAA,GAAmB,MAAA;ADkNzB,ICjNMC,CAAAA,GAAW,GAAA;ADiNjB,IChNMC,EAAAA,GAAW,GAAA;ADgNjB,IC/MMC,CAAAA,GAAsB,GAAA;AD+M5B,IC9MMC,CAAAA,GAAmB,GAAGF,EAAQ,CAAA,GAAA,CAAA;AD8MpC,IC5MMG,CAAAA,GAAelD,CAAAA,EAAAA,KAAQ,CAAA,EAAG2C,EAAQ,MAAA,EAAQ,CAAC,IAAA,EAAI,CAAG,KAAK,CAAA,EAAGG,CAAQ,CAAA,EAAG9C,EAAI,GAAGgD,CAAmB,CAAA,CAAA;AD4MrG,IC3MMG,CAAAA,GAAoBC,CAAAA,EAAAA,KAAO,CAAA,EAAGT,EAAQ,MAAA,EAAQ,CAAC,IAAA,EAAI,CAAG,KAAK,CAAA,EAAGM,CAAgB,CAAA,EAAGG,EAAG,GAAGP,CAAgB,CAAA,CAAA;AD2M7G,ICvMMQ,EAAAA,GAAc3D,CAAAA,EAAAA,KAAUA,EAAAA,CAAO,KAAA,CAAM,GAAG,CAAA,CAAE,GAAA,CAAII,CAAAA,EAAAA,KAAagB,CAAAA,CAAYhB,EAAS,CAAC,CAAA;ADuMvF,ICnMMwD,CAAAA,GAAW,CAACC,EAAAA,EAAMC,EAAAA,EAAMC,CAAAA,KAAY;AACzC,EAAA,MAAMvD,EAAAA,GAAa,CAAC,GAAGsD,EAAI,CAAA;AAE3B,EAAA,IAAIE,CAAAA,GAAiB,KAAA,EACjBC,CAAAA,GAAqB,KAAA,EACrBC,EAAAA,GAAU9C,CAAAA,CAAYrB,CAAAA,CAAU8D,EAAAA,CAAKA,EAAAA,CAAK,MAAA,GAAS,CAAC,CAAC,CAAC,CAAA;AAE1D,EAAA,KAAA,MAAW,CAACM,CAAAA,EAAO/D,CAAS,CAAA,IAAKI,EAAAA,CAAW,SAAO,EAAI;AACtD,IAAA,MAAM4D,CAAAA,GAAkBhD,EAAYhB,CAAS,CAAA;AAc7C,IAAA,IAZI8D,EAAAA,GAAUE,CAAAA,IAAmBL,CAAAA,GAChCF,EAAAA,CAAKA,GAAK,MAAA,GAAS,CAAC,CAAA,IAAKzD,CAAAA,IAEzByD,EAAAA,CAAK,IAAA,CAAKzD,CAAS,CAAA,EACnB8D,KAAU,CAAA,CAAA,EAGPjB,CAAAA,CAAQ,GAAA,CAAI7C,CAAS,CAAA,KACxB4D,CAAAA,GAAiB,IAAA,EACjBC,CAAAA,GAAqBzD,GAAW,KAAA,CAAM2D,CAAAA,GAAQ,CAAC,CAAA,CAAE,KAAK,EAAE,CAAA,CAAE,UAAA,CAAWZ,CAAgB,IAGlFS,CAAAA,EAAgB;AACfC,MAAAA,CAAAA,GACC7D,CAAAA,KAAc+C,MACjBa,CAAAA,GAAiB,KAAA,EACjBC,IAAqB,KAAA,CAAA,GAEZ7D,CAAAA,KAAckD,MACxBU,CAAAA,GAAiB,KAAA,CAAA;AAGlB,MAAA;AACA,IAAA;AAEDE,IAAAA,EAAAA,IAAWE,CAAAA,EAEPF,EAAAA,KAAYH,CAAAA,IAAWI,CAAAA,GAAQ3D,EAAAA,CAAW,MAAA,GAAS,CAAA,KACtDqD,EAAAA,CAAK,IAAA,CAAK,EAAE,CAAA,EACZK,EAAAA,GAAU,CAAA,CAAA;AAEX,EAAA;AAIG,EAAA,CAACA,MAAWL,EAAAA,CAAKA,EAAAA,CAAK,MAAA,GAAS,CAAC,EAAE,MAAA,GAAS,CAAA,IAAKA,EAAAA,CAAK,MAAA,GAAS,MACjEA,EAAAA,CAAKA,EAAAA,CAAK,SAAS,CAAC,CAAA,IAAKA,GAAK,GAAA,EAAA,CAAA;AAEhC,CAAA;ADmJA,IChJMQ,EAAAA,GAA+BrE,CAAAA,EAAAA,KAAU;AAC9C,EAAA,MAAMsE,EAAAA,GAAQtE,EAAAA,CAAO,KAAA,CAAM,GAAG,CAAA;AAC9B,EAAA,IAAIuE,IAAOD,EAAAA,CAAM,MAAA;AAEjB,EAAA,OAAOC,CAAAA,GAAO,KACT,EAAAnD,CAAAA,CAAYkD,GAAMC,CAAAA,GAAO,CAAC,CAAC,CAAA,GAAI,CAAA,CAAA,IAInCA,CAAAA,EAAAA;AAGD,EAAA,OAAIA,MAASD,EAAAA,CAAM,MAAA,GACXtE,EAAAA,GAGDsE,EAAAA,CAAM,MAAM,CAAA,EAAGC,CAAI,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA,GAAID,EAAAA,CAAM,MAAMC,CAAI,CAAA,CAAE,KAAK,EAAE,CAAA;AAClE,CAAA;AD+HA,ICxHMC,KAAO,CAACxE,EAAAA,EAAQ+D,EAAAA,EAAS1C,CAAAA,GAAU,EAAA,KAAO;AAC/C,EAAA,IAAIA,EAAQ,IAAA,KAAS,KAAA,IAASrB,GAAO,IAAA,EAAM,KAAK,IAC/C,OAAO,EAAA;AAGR,EAAA,IAAIyE,EAAAA,GAAc,IACdC,CAAAA,EACAC,CAAAA;AAEJ,EAAA,MAAMC,EAAAA,GAAUjB,GAAY3D,EAAM,CAAA;AAClC,EAAA,IAAI6D,CAAAA,GAAO,CAAC,EAAE,CAAA;AAEd,EAAA,KAAA,MAAW,CAACM,GAAOL,CAAI,CAAA,IAAK9D,GAAO,KAAA,CAAM,GAAG,CAAA,CAAE,OAAA,EAAA,EAAW;AACpDqB,IAAAA,CAAAA,CAAQ,IAAA,KAAS,KAAA,KACpBwC,CAAAA,CAAKA,CAAAA,CAAK,MAAA,GAAS,CAAC,CAAA,GAAIA,CAAAA,CAAKA,CAAAA,CAAK,MAAA,GAAS,CAAC,CAAA,CAAE,SAAA,EAAA,CAAA;AAG/C,IAAA,IAAIgB,KAAYzD,CAAAA,CAAYyC,CAAAA,CAAKA,CAAAA,CAAK,MAAA,GAAS,CAAC,CAAC,CAAA;AAgBjD,IAAA,IAdIM,CAAAA,KAAU,CAAA,KACTU,EAAAA,IAAad,EAAAA,KAAY1C,EAAQ,QAAA,KAAa,KAAA,IAASA,CAAAA,CAAQ,IAAA,KAAS,KAAA,CAAA,KAE3EwC,CAAAA,CAAK,IAAA,CAAK,EAAE,GACZgB,EAAAA,GAAY,CAAA,CAAA,EAAA,CAGTA,EAAAA,GAAY,CAAA,IAAKxD,CAAAA,CAAQ,IAAA,KAAS,KAAA,MACrCwC,CAAAA,CAAKA,EAAK,MAAA,GAAS,CAAC,CAAA,IAAK,GAAA,EACzBgB,QAKExD,CAAAA,CAAQ,IAAA,IAAQuD,EAAAA,CAAQT,CAAK,IAAIJ,EAAAA,EAAS;AAC7C,MAAA,MAAMe,CAAAA,GAAoBf,EAAAA,GAAUc,EAAAA,EAC9BE,CAAAA,GAAyB,CAAA,GAAI,IAAA,CAAK,KAAA,CAAA,CAAOH,EAAAA,CAAQT,CAAK,CAAA,GAAIW,CAAAA,GAAmB,CAAA,IAAKf,EAAO,CAAA;AAChE,MAAA,IAAA,CAAK,KAAA,CAAA,CAAOa,EAAAA,CAAQT,CAAK,CAAA,GAAI,KAAKJ,EAAO,CAAA,GAC3CgB,CAAAA,IAC5BlB,CAAAA,CAAK,KAAK,EAAE,CAAA,EAGbD,CAAAA,CAASC,CAAAA,EAAMC,GAAMC,EAAO,CAAA;AAC5B,MAAA;AACA,IAAA;AAED,IAAA,IAAIc,EAAAA,GAAYD,EAAAA,CAAQT,CAAK,CAAA,GAAIJ,EAAAA,IAAWc,KAAY,CAAA,IAAKD,EAAAA,CAAQT,CAAK,CAAA,GAAI,CAAA,EAAG;AAChF,MAAA,IAAI9C,CAAAA,CAAQ,QAAA,KAAa,KAAA,IAASwD,EAAAA,GAAYd,EAAAA,EAAS;AACtDH,QAAAA,CAAAA,CAASC,CAAAA,EAAMC,GAAMC,EAAO,CAAA;AAC5B,QAAA;AACA,MAAA;AAEDF,MAAAA,CAAAA,CAAK,KAAK,EAAE,CAAA;AACZ,IAAA;AAED,IAAA,IAAIgB,KAAYD,EAAAA,CAAQT,CAAK,IAAIJ,EAAAA,IAAW1C,CAAAA,CAAQ,aAAa,KAAA,EAAO;AACvEuC,MAAAA,CAAAA,CAASC,CAAAA,EAAMC,GAAMC,EAAO,CAAA;AAC5B,MAAA;AACA,IAAA;AAEDF,IAAAA,CAAAA,CAAKA,CAAAA,CAAK,MAAA,GAAS,CAAC,CAAA,IAAKC,CAAAA;AACzB,EAAA;AAEGzC,EAAAA,CAAAA,CAAQ,IAAA,KAAS,UACpBwC,CAAAA,GAAOA,CAAAA,CAAK,IAAImB,CAAAA,CAAAA,KAAOX,EAAAA,CAA6BW,CAAG,CAAC,CAAA,CAAA;AAGzD,EAAA,MAAMC,CAAAA,GAAM,CAAC,GAAGpB,CAAAA,CAAK,IAAA,CAAK;CAAI,CAAC,CAAA;AAE/B,EAAA,KAAA,MAAW,CAACM,CAAAA,EAAO/D,CAAS,CAAA,IAAK6E,CAAAA,CAAI,SAAO,EAAI;AAG/C,IAAA,IAFAR,EAAAA,IAAerE,CAAAA,EAEX6C,CAAAA,CAAQ,GAAA,CAAI7C,CAAS,CAAA,EAAG;AAC3B,MAAA,MAAM,EAAC,MAAA,EAAA8E,CAAAA,EAAM,GAAI,IAAI,MAAA,CAAO,CAAA,KAAA,EAAQ9B,CAAQ,CAAA,iBAAA,EAAoBG,CAAgB,CAAA,UAAA,EAAaJ,CAAgB,CAAA,CAAA,CAAG,EAAE,IAAA,CAAK8B,CAAAA,CAAI,KAAA,CAAMd,CAAK,CAAA,CAAE,IAAA,CAAK,EAAE,CAAC,CAAA,IAAK,EAAC,MAAA,EAAQ,EAAE,EAAA;AAChK,MAAA,IAAIe,CAAAA,CAAO,SAAS,MAAA,EAAW;AAC9B,QAAA,MAAM5E,CAAAA,GAAO,MAAA,CAAO,UAAA,CAAW4E,CAAAA,CAAO,IAAI,CAAA;AAC1CR,QAAAA,CAAAA,GAAapE,CAAAA,KAAS4C,KAAW,MAAA,GAAY5C,CAAAA;MACjD,CAAA,MAAc4E,CAAAA,CAAO,QAAQ,MAAA,KACzBP,CAAAA,GAAYO,EAAO,GAAA,CAAI,MAAA,KAAW,CAAA,GAAI,MAAA,GAAYA,CAAAA,CAAO,GAAA,CAAA;AAE1D,IAAA;AAED,IAAA,MAAM5E,KAAO0C,EAAAA,CAAW,KAAA,CAAM,GAAA,CAAI,MAAA,CAAO0B,CAAU,CAAC,CAAA;AAEhDO,IAAAA,CAAAA,CAAId,CAAAA,GAAQ,CAAC,CAAA,KAAM;KAClBQ,CAAAA,KACHF,EAAAA,IAAehB,CAAAA,CAAkB,EAAE,CAAA,CAAA,EAGhCiB,CAAAA,IAAcpE,OACjBmE,EAAAA,IAAejB,CAAAA,CAAalD,EAAI,CAAA,CAAA,IAEvBF,CAAAA,KAAc;MACpBsE,CAAAA,IAAcpE,EAAAA,KACjBmE,MAAejB,CAAAA,CAAakB,CAAU,IAGnCC,CAAAA,KACHF,EAAAA,IAAehB,EAAkBkB,CAAS,CAAA,CAAA,CAAA;AAG5C,EAAA;AAED,EAAA,OAAOF,EAAAA;AACR,CAAA;AAGe,SAASU,CAAAA,CAASnF,EAAAA,EAAQ+D,EAAAA,EAAS1C,CAAAA,EAAS;AAC1D,EAAA,OAAO,OAAOrB,EAAM,CAAA,CAClB,SAAA,EAAW,CACX,QAAQ,OAAA,EAAS;AAAI,CAAA,CAAA,CACrB,KAAA,CAAM;CAAI,CAAA,CACV,GAAA,CAAIoF,CAAAA,EAAAA,KAAQZ,EAAAA,CAAKY,IAAMrB,EAAAA,EAAS1C,CAAO,CAAC,CAAA,CACxC,IAAA,CAAK;AAAI,CAAA,CAAA;AACZ;ACrNA,IAAMgE,EAAAA,GAAU,CAAC,IAAA,EAAM,MAAA,EAAQ,QAAQ,OAAA,EAAS,OAAA,EAAS,SAAS,QAAQ,CAAA;AAA1E,IASaC,IAAkC,EAC9C,OAAA,EAAS,IAAI,GAAA,CAAID,EAAO,CAAA,EACxB,OAAA,kBAAS,IAAI,GAAA,CAAoB,CAEhC,CAAC,GAAA,EAAK,IAAI,CAAA,EACV,CAAC,GAAA,EAAK,MAAM,CAAA,EACZ,CAAC,KAAK,MAAM,CAAA,EACZ,CAAC,GAAA,EAAK,OAAO,CAAA,EACb,CAAC,GAAA,EAAQ,QAAQ,GAEjB,CAAC,QAAA,EAAU,QAAQ,CACpB,CAAC,CAAA,EACF;AAuCgB,SAAAE,CAAAA,CAAYC,IAAyCC,EAAAA,EAAgB;AACpF,EAAA,IAAI,OAAOD,MAAQ,QAAA,EAClB,OAAOF,EAAS,OAAA,CAAQ,GAAA,CAAIE,EAAG,CAAA,KAAMC,EAAAA;AAGtC,EAAA,KAAA,MAAW1C,CAAAA,IAASyC,IACnB,IAAIzC,CAAAA,KAAU,UACVwC,CAAAA,CAAYxC,CAAAA,EAAO0C,EAAM,CAAA,EAC5B,OAAO,IAAA;AAGT,EAAA,OAAO,KAAA;AACR;ACxEgB,SAAAC,EAAAA,CAAUC,IAAWC,EAAAA,EAAW;AAC/C,EAAA,IAAID,OAAMC,EAAAA,EAAG;AAEb,EAAA,MAAMC,CAAAA,GAASF,GAAE,KAAA,CAAM;CAAI,CAAA,EACrBG,EAAAA,GAASF,GAAE,KAAA,CAAM;AAAI,CAAA,CAAA,EACrBG,IAAiB,EAAA;AAEvB,EAAA,KAAA,IAASrF,IAAI,CAAA,EAAGA,CAAAA,GAAI,KAAK,GAAA,CAAImF,CAAAA,CAAO,QAAQC,EAAAA,CAAO,MAAM,GAAGpF,CAAAA,EAAAA,EACvDmF,CAAAA,CAAOnF,CAAC,CAAA,KAAMoF,EAAAA,CAAOpF,CAAC,CAAA,IAAGqF,CAAAA,CAAK,KAAKrF,CAAC,CAAA;AAGzC,EAAA,OAAOqF,CAAAA;AACR;ACFA,IAAMC,EAAAA,GAAY,UAAA,CAAW,OAAA,CAAQ,QAAA,CAAS,WAAW,KAAK,CAAA;AAA9D,IAEaC,CAAAA,0BAAuB,cAAc,CAAA;AAM3C,SAASC,CAAAA,CAAWC,IAAiBpD,EAAAA,EAAgB;AAC3D,EAAA,MAAMrC,CAAAA,GAAIyF,EAAAA;AAENzF,EAAAA,CAAAA,CAAE,KAAA,IAAOA,CAAAA,CAAE,UAAA,CAAWqC,EAAK,CAAA;AAChC;AAAA,SAEgBqD,GAAM,EACrB,KAAA,EAAAD,EAAAA,GAAQE,KAAAA,EACR,QAAAC,EAAAA,GAASC,MAAAA,EACT,SAAA,EAAAC,CAAAA,GAAY,MACZ,UAAA,EAAAC,EAAAA,GAAa,IAAA,EACd,GAAI,EAAA,EAAI;AACP,EAAA,MAAMC,CAAAA,GAAc,CAAA,CAAA,eAAA,CAAgB,EACnC,KAAA,EAAAP,EAAAA,EACA,MAAA,EAAAG,EAAAA,EACA,MAAA,EAAQ,EAAA,EACR,OAAA,EAAS,CAAA,EACT,CAAA;AACDK,EAAS,CAAA,CAAA,kBAAA,CAAmBR,IAAOO,CAAE,CAAA,EACjCP,GAAM,KAAA,IAAOA,EAAAA,CAAM,WAAW,IAAI,CAAA;AAEtC,EAAA,MAAMS,CAAAA,GAAQ,CAACC,EAAAA,EAAc,EAAE,MAAAC,CAAAA,EAAM,QAAA,EAAAC,GAAS,KAAW;AACxD,IAAA,MAAMC,CAAAA,GAAM,OAAOH,EAAI,CAAA;AACvB,IAAA,IAAItB,EAAY,CAACyB,CAAAA,EAAKF,GAAMC,CAAQ,CAAA,EAAG,QAAQ,CAAA,EAAG;AAC7CN,MAAAA,EAAAA,IAAYH,GAAO,KAAA,CAAMW,iBAAAA,CAAAA,OAAO,IAAI,CAAA,EACxC,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA;AACd,MAAA;AACD,IAAA;AACA,IAAA,IAAI,CAACT,CAAAA,EAAW;AAChB,IAAA,MAAMU,CAAAA,GAAKJ,MAAS,QAAA,GAAW,CAAA,GAAI,IAC7BK,EAAAA,GAAKL,CAAAA,KAAS,WAAW,EAAA,GAAK,CAAA;AAEpCH,IAAS,CAAA,CAAA,UAAA,CAAWL,EAAAA,EAAQY,CAAAA,EAAIC,EAAAA,EAAI,MAAM;AACzCR,MAAS,CAAA,CAAA,SAAA,CAAUL,EAAAA,EAAQ,CAAA,EAAG,MAAM;AACnCH,QAAAA,EAAAA,CAAM,IAAA,CAAK,UAAA,EAAYS,CAAK,CAAA;MAC7B,CAAC,CAAA;IACF,CAAC,CAAA;AACF,EAAA,CAAA;AACA,EAAA,OAAIH,EAAAA,IAAYH,EAAAA,CAAO,KAAA,CAAMW,iBAAAA,CAAAA,MAAAA,CAAO,IAAI,CAAA,EACxCd,EAAAA,CAAM,IAAA,CAAK,UAAA,EAAYS,CAAK,CAAA,EAErB,MAAM;AACZT,IAAAA,EAAAA,CAAM,GAAA,CAAI,UAAA,EAAYS,CAAK,CAAA,EACvBH,MAAYH,EAAAA,CAAO,KAAA,CAAMW,iBAAAA,CAAAA,MAAAA,CAAO,IAAI,CAAA,EAGpCd,GAAM,KAAA,IAAS,CAACH,EAAAA,IAAWG,EAAAA,CAAM,UAAA,CAAW,KAAK,GAGrDO,CAAAA,CAAG,QAAA,GAAW,KAAA,EACdA,CAAAA,CAAG,KAAA,EAAA;AACJ,EAAA,CAAA;AACD;ACtEA,IAAAd,KAAA,MAAA,CAAA,cAAA;AAAA,IAAAwB,EAAAA,GAAA,CAAAzB,EAAAA,EAAA0B,EAAAA,EAAApH,MAAAoH,EAAAA,IAAA1B,EAAAA,GAAAC,EAAAA,CAAAD,EAAAA,EAAA0B,EAAAA,EAAA,EAAA,YAAA,IAAA,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAApH,GAAA,CAAA,GAAA0F,EAAAA,CAAA0B,EAAA,CAAA,GAAApH,CAAAA;AAAA,IAAAqH,CAAAA,GAAA,CAAA3B,EAAAA,EAAA0B,EAAAA,EAAApH,OAAAmH,EAAAA,CAAAzB,EAAAA,EAAA,OAAA0B,EAAAA,IAAA,QAAA,GAAAA,EAAAA,GAAA,EAAA,GAAAA,EAAAA,EAAApH,CAAA,CAAA,EAAAA,CAAAA,CAAAA;AAAAA,IAuBqBsH,IAvBrBtH,MAuB4B;EAiB3B,WAAA,CAAYoB,EAAAA,EAAgCmG,IAAa,IAAA,EAAM;AAhB/DC,IAAAA,CAAAA,CAAA,IAAA,EAAU,OAAA,CAAA,EACVA,CAAAA,CAAA,IAAA,EAAU,QAAA,CAAA,EACVA,CAAAA,CAAA,IAAA,EAAQ,cAERA,CAAAA,EAAAA,CAAAA,CAAA,IAAA,EAAQ,IACRA,CAAAA,EAAAA,CAAAA,CAAA,IAAA,EAAQ,MACRA,CAAAA,EAAAA,CAAAA,CAAA,IAAA,EAAQ,SACRA,CAAAA,EAAAA,CAAAA,CAAA,IAAA,EAAQ,QAAA,EAAS,KAAA,CAAA,EACjBA,EAAA,IAAA,EAAQ,YAAA,EAAa,EAAA,CAAA,EACrBA,CAAAA,CAAA,IAAA,EAAQ,cAAA,kBAAe,IAAI,GAAA,EAAA,CAAA,EAC3BA,CAAAA,CAAA,IAAA,EAAU,SAAA,EAAU,CAAA,GAEpBA,CAAAA,CAAA,IAAA,EAAO,OAAA,EAAoB,SAC3BA,CAAAA,EAAAA,CAAAA,CAAA,IAAA,EAAO,OAAA,EAAQ,EAAA,CAAA,EACfA,CAAAA,CAAA,IAAA,EAAO,OAGN,CAAA;AAAA,IAAA,MAAM,EAAE,KAAA,EAAAtB,EAAAA,GAAQE,KAAAA,EAAO,MAAA,EAAAC,CAAAA,GAASC,MAAAA,EAAQ,MAAA,EAAAmB,CAAAA,EAAQ,MAAA,EAAAC,EAAAA,EAAQ,GAAGC,GAAK,GAAIvG,EAAAA;AAEpE,IAAA,IAAA,CAAK,OAAOuG,CAAAA,EACZ,IAAA,CAAK,UAAA,GAAa,IAAA,CAAK,WAAW,IAAA,CAAK,IAAI,CAAA,EAC3C,IAAA,CAAK,QAAQ,IAAA,CAAK,KAAA,CAAM,KAAK,IAAI,CAAA,EACjC,KAAK,MAAA,GAAS,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,IAAI,CAAA,EACnC,IAAA,CAAK,UAAUF,CAAAA,CAAO,IAAA,CAAK,IAAI,CAAA,EAC/B,IAAA,CAAK,MAAA,GAASF,CAAAA,EACd,KAAK,YAAA,GAAeG,EAAAA,EAEpB,KAAK,KAAA,GAAQxB,EAAAA,EACb,KAAK,MAAA,GAASG,CAAAA;AACf,EAAA;EAKU,WAAA,GAAc;AACvB,IAAA,IAAA,CAAK,aAAa,KAAA,EAAA;AACnB,EAAA;AAMQ,EAAA,aAAA,CACPuB,IACAD,CAAAA,EACC;AACD,IAAA,MAAME,KAAS,IAAA,CAAK,YAAA,CAAa,GAAA,CAAID,EAAK,KAAK,EAAA;AAC/CC,IAAAA,EAAAA,CAAO,KAAKF,CAAI,CAAA,EAChB,KAAK,YAAA,CAAa,GAAA,CAAIC,IAAOC,EAAM,CAAA;AACpC,EAAA;AAOO,EAAA,EAAA,CAAgCD,IAAUE,CAAAA,EAAoB;AACpE,IAAA,IAAA,CAAK,aAAA,CAAcF,EAAAA,EAAO,EAAE,EAAA,EAAAE,GAAI,CAAA;AACjC,EAAA;AAOO,EAAA,IAAA,CAAkCF,IAAUE,CAAAA,EAAoB;AACtE,IAAA,IAAA,CAAK,cAAcF,EAAAA,EAAO,EAAE,IAAAE,CAAAA,EAAI,IAAA,EAAM,MAAM,CAAA;AAC7C,EAAA;AAOO,EAAA,IAAA,CAAkCF,OAAahB,CAAAA,EAAkC;AACvF,IAAA,MAAMmB,EAAAA,GAAM,KAAK,YAAA,CAAa,GAAA,CAAIH,EAAK,CAAA,IAAK,EAAA,EACtCI,CAAAA,GAA0B,EAAC;AAEjC,IAAA,KAAA,MAAWC,KAAcF,EAAAA,EACxBE,CAAAA,CAAW,GAAG,GAAGrB,CAAI,GAEjBqB,CAAAA,CAAW,IAAA,IACdD,EAAQ,IAAA,CAAK,MAAMD,GAAI,MAAA,CAAOA,EAAAA,CAAI,QAAQE,CAAU,CAAA,EAAG,CAAC,CAAC,CAAA;AAI3D,IAAA,KAAA,MAAWH,CAAAA,IAAME,GAChBF,CAAAA,EAAG;AAEL,EAAA;EAEO,MAAA,GAAS;AACf,IAAA,OAAO,IAAI,OAAA,CAAyB,CAACI,EAAAA,EAASC,CAAAA,KAAW;AACxD,MAAA,IAAI,KAAK,YAAA,EAAc;AACtB,QAAA,IAAI,IAAA,CAAK,YAAA,CAAa,OAAA,EACrB,OAAA,IAAA,CAAK,KAAA,GAAQ,QAAA,EAEb,IAAA,CAAK,KAAA,EAAA,EACED,EAAAA,CAAQlC,CAAa,CAAA;AAG7B,QAAA,IAAA,CAAK,YAAA,CAAa,gBAAA,CACjB,OAAA,EACA,MAAM;AACL,UAAA,IAAA,CAAK,KAAA,GAAQ,QAAA,EACb,IAAA,CAAK,KAAA,EACN;QAAA,CAAA,EACA,EAAE,IAAA,EAAM,IAAA,EACT,CAAA;AACD,MAAA;AAEA,MAAA,MAAMoC,KAAO,IAAIC,QAAAA,EAAAA;AACjBD,MAAAA,EAAAA,CAAK,MAAA,GAAS,CAACE,CAAAA,EAAOC,GAAUC,EAAAA,KAAS;AACpC,QAAA,IAAA,CAAK,MAAA,KACR,KAAK,KAAA,GAAQ,IAAA,CAAK,IAAI,IAAA,CAAK,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAA,EAC5C,IAAA,CAAK,UAAU,IAAA,CAAK,EAAA,EAAI,UAAU,CAAA,EAClC,IAAA,CAAK,KAAK,OAAA,EAAS,IAAA,CAAK,KAAK,CAAA,CAAA,EAE9BA,EAAAA,EAAAA;AACD,MAAA,CAAA,EACA,IAAA,CAAK,KAAA,CAAM,IAAA,CAAKJ,EAAI,GAEpB,IAAA,CAAK,EAAA,GAAK1B,UAAAA,CAAS,eAAA,CAAgB,EAClC,KAAA,EAAO,IAAA,CAAK,KAAA,EACZ,MAAA,EAAQ0B,IACR,OAAA,EAAS,CAAA,EACT,MAAA,EAAQ,EAAA,EACR,mBAAmB,EAAA,EACnB,QAAA,EAAU,IAAA,EACV,GACD1B,UAAAA,CAAS,kBAAA,CAAmB,IAAA,CAAK,KAAA,EAAO,KAAK,EAAE,CAAA,EAC/C,IAAA,CAAK,EAAA,CAAG,QAAO,EACX,IAAA,CAAK,IAAA,CAAK,YAAA,KAAiB,MAAA,IAAa,IAAA,CAAK,MAAA,IAChD,IAAA,CAAK,GAAG,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,YAAY,GAGrC,IAAA,CAAK,KAAA,CAAM,EAAA,CAAG,UAAA,EAAY,KAAK,UAAU,CAAA,EACzCT,CAAAA,CAAW,IAAA,CAAK,OAAO,IAAI,CAAA,EAC3B,IAAA,CAAK,MAAA,CAAO,GAAG,QAAA,EAAU,IAAA,CAAK,MAAM,CAAA,EAEpC,KAAK,MAAA,EAAA,EAEL,IAAA,CAAK,IAAA,CAAK,UAAU,MAAM;AACzB,QAAA,IAAA,CAAK,MAAA,CAAO,MAAMe,iBAAAA,CAAAA,MAAAA,CAAO,IAAI,CAAA,EAC7B,IAAA,CAAK,OAAO,GAAA,CAAI,QAAA,EAAU,KAAK,MAAM,CAAA,EACrCf,EAAW,IAAA,CAAK,KAAA,EAAO,KAAK,CAAA,EAC5BiC,EAAAA,CAAQ,KAAK,KAAK,CAAA;AACnB,MAAA,CAAC,CAAA,EACD,IAAA,CAAK,IAAA,CAAK,QAAA,EAAU,MAAM;AACzB,QAAA,IAAA,CAAK,OAAO,KAAA,CAAMlB,iBAAAA,CAAAA,OAAO,IAAI,CAAA,EAC7B,KAAK,MAAA,CAAO,GAAA,CAAI,UAAU,IAAA,CAAK,MAAM,GACrCf,CAAAA,CAAW,IAAA,CAAK,OAAO,KAAK,CAAA,EAC5BiC,GAAQlC,CAAa,CAAA;MACtB,CAAC,CAAA;IACF,CAAC,CAAA;AACF,EAAA;AAEQ,EAAA,UAAA,CAAWhF,IAAcuE,CAAAA,EAAW;AAyB3C,IAAA,IAxBI,KAAK,KAAA,KAAU,OAAA,KAClB,KAAK,KAAA,GAAQ,QAAA,CAAA,EAEVA,GAAK,IAAA,KACJ,CAAC,IAAA,CAAK,MAAA,IAAUF,EAAS,OAAA,CAAQ,GAAA,CAAIE,EAAI,IAAI,CAAA,IAChD,KAAK,IAAA,CAAK,QAAA,EAAUF,CAAAA,CAAS,OAAA,CAAQ,IAAIE,CAAAA,CAAI,IAAI,CAAC,CAAA,EAE/CF,CAAAA,CAAS,QAAQ,GAAA,CAAIE,CAAAA,CAAI,IAAc,CAAA,IAC1C,IAAA,CAAK,KAAK,QAAA,EAAUA,CAAAA,CAAI,IAAc,CAAA,CAAA,EAGpCvE,EAAAA,KAASA,GAAK,WAAA,EAAA,KAAkB,GAAA,IAAOA,EAAAA,CAAK,aAAY,KAAM,GAAA,CAAA,IACjE,KAAK,IAAA,CAAK,SAAA,EAAWA,GAAK,WAAA,EAAA,KAAkB,GAAG,CAAA,EAE5CA,EAAAA,KAAS,OAAQ,IAAA,CAAK,IAAA,CAAK,gBACzB,IAAA,CAAK,KAAA,KACT,KAAK,EAAA,EAAI,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,WAAW,CAAA,EACpC,IAAA,CAAK,KAAK,OAAA,EAAS,IAAA,CAAK,KAAK,WAAW,CAAA,CAAA,CAAA,EAGtCA,MACH,IAAA,CAAK,IAAA,CAAK,OAAOA,EAAAA,CAAK,WAAA,EAAa,CAAA,EAGhCuE,CAAAA,EAAK,SAAS,QAAA,EAAU;AAM3B,MAAA,IALI,CAAC,KAAK,KAAA,IAAS,IAAA,CAAK,KAAK,WAAA,KAC5B,IAAA,CAAK,EAAA,EAAI,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,WAAW,CAAA,EACpC,IAAA,CAAK,KAAK,OAAA,EAAS,IAAA,CAAK,KAAK,WAAW,CAAA,CAAA,EAGrC,IAAA,CAAK,IAAA,CAAK,QAAA,EAAU;AACvB,QAAA,MAAMkD,EAAAA,GAAU,IAAA,CAAK,IAAA,CAAK,QAAA,CAAS,KAAK,KAAK,CAAA;AACzCA,QAAAA,EAAAA,KACH,IAAA,CAAK,KAAA,GAAQA,EAAAA,YAAmB,QAAQA,EAAAA,CAAQ,OAAA,GAAUA,EAAAA,EAC1D,IAAA,CAAK,QAAQ,OAAA,EACb,IAAA,CAAK,EAAA,EAAI,KAAA,CAAM,KAAK,KAAK,CAAA,CAAA;AAE3B,MAAA;AACI,MAAA,IAAA,CAAK,KAAA,KAAU,OAAA,KAClB,IAAA,CAAK,KAAA,GAAQ,QAAA,CAAA;AAEf,IAAA;AAEInD,IAAAA,CAAAA,CAAY,CAACtE,EAAAA,EAAMuE,CAAAA,EAAK,IAAA,EAAMA,GAAK,QAAQ,CAAA,EAAG,QAAQ,CAAA,KACzD,IAAA,CAAK,KAAA,GAAQ,QAAA,CAAA,EAAA,CAEV,IAAA,CAAK,UAAU,QAAA,IAAY,IAAA,CAAK,KAAA,KAAU,QAAA,KAC7C,IAAA,CAAK,IAAA,CAAK,UAAU,CAAA,EAErB,KAAK,MAAA,EAAO,EAAA,CACR,IAAA,CAAK,KAAA,KAAU,QAAA,IAAY,IAAA,CAAK,KAAA,KAAU,QAAA,KAC7C,KAAK,KAAA,EAAA;AAEP,EAAA;EAEU,KAAA,GAAQ;AACjB,IAAA,IAAA,CAAK,KAAA,CAAM,MAAA,EAAA,EACX,IAAA,CAAK,KAAA,CAAM,cAAA,CAAe,UAAA,EAAY,IAAA,CAAK,UAAU,CAAA,EACrD,IAAA,CAAK,MAAA,CAAO,KAAA,CAAM;CAAI,CAAA,EACtBU,CAAAA,CAAW,KAAK,KAAA,EAAO,KAAK,GAC5B,IAAA,CAAK,EAAA,EAAI,KAAA,EAAA,EACT,IAAA,CAAK,EAAA,GAAK,QACV,IAAA,CAAK,IAAA,CAAK,GAAG,IAAA,CAAK,KAAK,IAAI,IAAA,CAAK,KAAK,CAAA,EACrC,IAAA,CAAK,WAAA,EACN;AAAA,EAAA;EAEQ,aAAA,GAAgB;AACvB,IAAA,MAAMyC,EAAAA,GACLC,CAAAA,CAAK,IAAA,CAAK,UAAA,EAAY,OAAA,CAAQ,MAAA,CAAO,OAAA,EAAS,EAAE,IAAA,EAAM,IAAA,EAAM,CAAA,CAAE,KAAA,CAAM;AAAI,CAAA,CAAA,CAAE,MAAA,GAAS,CAAA;AACpF,IAAA,IAAA,CAAK,MAAA,CAAO,MAAM3B,iBAAAA,CAAAA,MAAAA,CAAO,KAAK,IAAA,EAAM0B,EAAAA,GAAQ,EAAE,CAAC,CAAA;AAChD,EAAA;EAEQ,MAAA,GAAS;AAChB,IAAA,MAAME,EAAAA,GAAQD,CAAAA,CAAK,IAAA,CAAK,OAAA,CAAQ,IAAI,CAAA,IAAK,EAAA,EAAI,OAAA,CAAQ,MAAA,CAAO,OAAA,EAAS,EAAE,IAAA,EAAM,MAAM,CAAA;AACnF,IAAA,IAAIC,EAAAA,KAAU,KAAK,UAAA,EAEnB;AAAI,MAAA,IAAA,IAAA,CAAK,UAAU,SAAA,EAClB,IAAA,CAAK,OAAO,KAAA,CAAM5B,iBAAAA,CAAAA,OAAO,IAAI,CAAA;AACvB,WAAA;AACN,QAAA,MAAMlB,CAAAA,GAAOL,EAAAA,CAAU,IAAA,CAAK,UAAA,EAAYmD,EAAK,CAAA;AAG7C,QAAA,IAFA,KAAK,aAAA,EAAc,EAEf9C,CAAAA,IAAQA,CAAAA,EAAM,WAAW,CAAA,EAAG;AAC/B,UAAA,MAAM+C,EAAAA,GAAW/C,EAAK,CAAC,CAAA;AACvB,UAAA,IAAA,CAAK,OAAO,KAAA,CAAMkB,iBAAAA,CAAAA,MAAAA,CAAO,IAAA,CAAK,GAAG6B,EAAQ,CAAC,CAAA,EAC1C,IAAA,CAAK,OAAO,KAAA,CAAMC,iBAAAA,CAAAA,KAAAA,CAAM,KAAA,CAAM,CAAC,CAAC,CAAA;AAChC,UAAA,MAAMJ,CAAAA,GAAQE,GAAM,KAAA,CAAM;AAAI,CAAA,CAAA;AAC9B,UAAA,IAAA,CAAK,MAAA,CAAO,MAAMF,CAAAA,CAAMG,EAAQ,CAAC,CAAA,EACjC,IAAA,CAAK,aAAaD,EAAAA,EAClB,IAAA,CAAK,OAAO,KAAA,CAAM5B,iBAAAA,CAAAA,OAAO,IAAA,CAAK,CAAA,EAAG0B,EAAM,MAAA,GAASG,EAAAA,GAAW,CAAC,CAAC,CAAA;AAC7D,UAAA;AAED,QAAA;AACA,QAAA,IAAI/C,CAAAA,IAAQA,CAAAA,EAAM,MAAA,GAAS,CAAA,EAAG;AAC7B,UAAA,MAAM+C,EAAAA,GAAW/C,EAAK,CAAC,CAAA;AACvB,UAAA,IAAA,CAAK,MAAA,CAAO,KAAA,CAAMkB,iBAAAA,CAAAA,MAAAA,CAAO,KAAK,CAAA,EAAG6B,EAAQ,CAAC,CAAA,EAC1C,KAAK,MAAA,CAAO,KAAA,CAAMC,iBAAAA,CAAAA,KAAAA,CAAM,MAAM,CAAA;AAE9B,UAAA,MAAMC,CAAAA,GADQH,GAAM,KAAA,CAAM;AAAI,CAAA,CAAA,CACP,MAAMC,EAAQ,CAAA;AACrC,UAAA,IAAA,CAAK,MAAA,CAAO,KAAA,CAAME,CAAAA,CAAS,IAAA,CAAK;CAAI,CAAC,CAAA,EACrC,KAAK,UAAA,GAAaH,EAAAA;AAClB,UAAA;AACD,QAAA;AAEA,QAAA,IAAA,CAAK,MAAA,CAAO,KAAA,CAAME,iBAAAA,CAAAA,KAAAA,CAAM,MAAM,CAAA;AAC/B,MAAA;AAEA,MAAA,IAAA,CAAK,MAAA,CAAO,KAAA,CAAMF,EAAK,CAAA,EACnB,IAAA,CAAK,KAAA,KAAU,SAAA,KAClB,IAAA,CAAK,KAAA,GAAQ,QAAA,CAAA,EAEd,IAAA,CAAK,UAAA,GAAaA,EAAAA;AAAAA,IAAAA;AACnB,EAAA;AACD,CAAA;AAAA,IC/RqBI,EAAAA,GD+RrB,cC/R2C1B,CAAAA,CAAO;AACjD,EAAA,IAAI,MAAA,GAAS;AACZ,IAAA,OAAO,IAAA,CAAK,QAAQ,CAAA,GAAI,CAAA;AACzB,EAAA;AAEA,EAAA,IAAY,MAAA,GAAS;AACpB,IAAA,OAAO,KAAK,MAAA,KAAW,CAAA;AACxB,EAAA;AAEA,EAAA,WAAA,CAAYK,EAAAA,EAAsB;AACjC,IAAA,KAAA,CAAMA,EAAAA,EAAM,KAAK,CAAA,EACjB,IAAA,CAAK,KAAA,GAAQ,CAAC,CAACA,EAAAA,CAAK,YAAA,EAEpB,IAAA,CAAK,EAAA,CAAG,OAAA,EAAS,MAAM;AACtB,MAAA,IAAA,CAAK,QAAQ,IAAA,CAAK,MAAA;AACnB,IAAA,CAAC,CAAA,EAED,IAAA,CAAK,EAAA,CAAG,SAAA,EAAYsB,CAAAA,CAAAA,KAAY;AAC/B,MAAA,IAAA,CAAK,OAAO,KAAA,CAAMjC,iBAAAA,CAAAA,MAAAA,CAAO,IAAA,CAAK,GAAG,EAAE,CAAC,CAAA,EACpC,IAAA,CAAK,QAAQiC,CAAAA,EACb,IAAA,CAAK,KAAA,GAAQ,QAAA,EACb,KAAK,KAAA,EACN;AAAA,IAAA,CAAC,CAAA,EAED,IAAA,CAAK,EAAA,CAAG,QAAA,EAAU,MAAM;AACvB,MAAA,IAAA,CAAK,KAAA,GAAQ,CAAC,IAAA,CAAK,KAAA;IACpB,CAAC,CAAA;AACF,EAAA;AACD,CAAA;;;;;AClCe,SAASC,EAAAA,GAAqB;AAC5C,EAAA,OAAIC,EAAAA,CAAQ,aAAa,OAAA,GACjBA,EAAAA,CAAQ,IAAI,IAAA,KAAS,OAAA,GAGtB,CAAA,CAAQA,EAAAA,CAAQ,IAAI,EAAA,IACvB,CAAA,CAAQA,EAAAA,CAAQ,GAAA,CAAI,cACpB,CAAA,CAAQA,GAAQ,GAAA,CAAI,gBAAA,IACpBA,GAAQ,GAAA,CAAI,UAAA,KAAe,kBAC3BA,EAAAA,CAAQ,GAAA,CAAI,iBAAiB,kBAAA,IAC7BA,EAAAA,CAAQ,IAAI,YAAA,KAAiB,QAAA,IAC7BA,GAAQ,GAAA,CAAI,IAAA,KAAS,oBACrBA,EAAAA,CAAQ,GAAA,CAAI,SAAS,WAAA,IACrBA,EAAAA,CAAQ,IAAI,iBAAA,KAAsB,oBAAA;AACvC;ACIA,IAAMC,KAAUF,EAAAA,EAAAA;AAAhB,IACM7B,CAAAA,GAAI,CAACgC,CAAAA,EAAWC,CAAAA,KAAsBF,KAAUC,CAAAA,GAAIC,CAAAA;AAD1D,IAEMC,EAAAA,GAAgBlC,CAAAA,CAAE,QAAA,EAAK,GAAG,CAAA;AAFhC,IAGMmC,EAAAA,GAAgBnC,CAAAA,CAAE,QAAA,EAAK,GAAG,CAAA;AAHhC,IAIMoC,EAAAA,GAAepC,CAAAA,CAAE,QAAA,EAAK,GAAG,CAAA;AAJ/B,IAKMqC,EAAAA,GAAgBrC,CAAAA,CAAE,QAAA,EAAK,GAAG,CAAA;AALhC,IAOMsC,EAAAA,GAActC,CAAAA,CAAE,QAAA,EAAK,GAAG,CAAA;AAP9B,IAQMuC,CAAAA,GAAQvC,CAAAA,CAAE,QAAA,EAAK,GAAG,CAAA;AARxB,IASMwC,EAAAA,GAAYxC,CAAAA,CAAE,QAAA,EAAK,QAAG,CAAA;AAT5B,IAWMyC,EAAAA,GAAiBzC,CAAAA,CAAE,QAAA,EAAK,GAAG,CAAA;AAXjC,IAYM0C,EAAAA,GAAmB1C,CAAAA,CAAE,QAAA,EAAK,GAAG,CAAA;AAZnC,IAkBM2C,EAAAA,GAAU3C,CAAAA,CAAE,QAAA,EAAK,GAAG,CAAA;AAlB1B,IAmBM4C,EAAAA,GAAqB5C,CAAAA,CAAE,QAAA,EAAK,GAAG,CAAA;AAnBrC,IAoBM6C,EAAAA,GAAiB7C,CAAAA,CAAE,QAAA,EAAK,GAAG,CAAA;AApBjC,IAqBM8C,EAAAA,GAAwB9C,CAAAA,CAAE,QAAA,EAAK,GAAG,CAAA;AArBxC,IAuBM+C,CAAAA,GAAS/C,CAAAA,CAAE,QAAA,EAAK,QAAG,CAAA;AAvBzB,IAwBMgD,CAAAA,GAAYhD,CAAAA,CAAE,QAAA,EAAK,GAAG,CAAA;AAxB5B,IAyBMiD,CAAAA,GAASjD,CAAAA,CAAE,QAAA,EAAK,GAAG,CAAA;AAzBzB,IA0BMkD,EAAAA,GAAUlD,CAAAA,CAAE,QAAA,EAAK,GAAG,CAAA;AA1B1B,IA4BMmD,KAAUC,CAAAA,CAAAA,KAAiB;AAChC,EAAA,QAAQA,CAAAA;IACP,KAAK,SAAA;IACL,KAAK,QAAA;AACJ,MAAA,OAAOC,iBAAAA,CAAAA,OAAAA,CAAM,IAAA,CAAKnB,EAAa,CAAA;IAChC,KAAK,QAAA;AACJ,MAAA,OAAOmB,iBAAAA,CAAAA,OAAAA,CAAM,GAAA,CAAIlB,EAAa,CAAA;IAC/B,KAAK,OAAA;AACJ,MAAA,OAAOkB,iBAAAA,CAAAA,OAAAA,CAAM,MAAA,CAAOjB,EAAY,CAAA;IACjC,KAAK,QAAA;AACJ,MAAA,OAAOiB,iBAAAA,CAAAA,OAAAA,CAAM,KAAA,CAAMhB,EAAa,CAAA;AAClC;AACD,CAAA;AAxCA,IA2JaT,KAAWtB,CAAAA,CAAAA,KAAyB;AAChD,EAAA,MAAMgD,IAAShD,CAAAA,CAAK,MAAA,IAAU,KAAA,EACxBiD,CAAAA,GAAWjD,EAAK,QAAA,IAAY,IAAA;AAClC,EAAA,OAAO,IAAIqB,EAAAA,CAAc,EACxB,MAAA,EAAA2B,CAAAA,EACA,QAAA,EAAAC,CAAAA,EACA,YAAA,EAAcjD,CAAAA,CAAK,YAAA,IAAgB,IAAA,EACnC,MAAA,GAAS;AACR,IAAA,MAAMkD,IAAQ,CAAA,EAAGH,iBAAAA,CAAAA,OAAAA,CAAM,IAAA,CAAKd,CAAK,CAAC;AAAKY,EAAAA,EAAAA,CAAO,IAAA,CAAK,KAAK,CAAC,CAAA,EAAA,EAAK7C,EAAK,OAAO;GACpE7E,CAAAA,GAAQ,IAAA,CAAK,QAAQ6H,CAAAA,GAASC,CAAAA;AAEpC,IAAA,QAAQ,KAAK,KAAA;MACZ,KAAK,QAAA;AACJ,QAAA,OAAO,CAAA,EAAGC,CAAK,CAAA,EAAGH,iBAAAA,CAAAA,OAAAA,CAAM,IAAA,CAAKd,CAAK,CAAC,CAAA,EAAA,EAAKc,iBAAAA,CAAAA,OAAAA,CAAM,GAAA,CAAI5H,CAAK,CAAC,CAAA,CAAA;MACzD,KAAK,QAAA;AACJ,QAAA,OAAO,GAAG+H,CAAK,CAAA,EAAGH,iBAAAA,CAAAA,OAAAA,CAAM,KAAKd,CAAK,CAAC,CAAA,EAAA,EAAKc,iBAAAA,CAAAA,QAAM,aAAA,CAC7CA,iBAAAA,CAAAA,QAAM,GAAA,CAAI5H,CAAK,CAChB,CAAC;EAAK4H,iBAAAA,CAAAA,OAAAA,CAAM,IAAA,CAAKd,CAAK,CAAC,CAAA,CAAA;AACxB,MAAA;AACC,QAAA,OAAO,CAAA,EAAGiB,CAAK,CAAA,EAAGH,iBAAAA,CAAAA,OAAAA,CAAM,IAAA,CAAKd,CAAK,CAAC,CAAA,EAAA,EAClC,IAAA,CAAK,KAAA,GACF,CAAA,EAAGc,iBAAAA,CAAAA,OAAAA,CAAM,KAAA,CAAMZ,EAAc,CAAC,CAAA,CAAA,EAAIa,CAAM,CAAA,CAAA,GACxC,CAAA,EAAGD,iBAAAA,CAAAA,OAAAA,CAAM,GAAA,CAAIX,EAAgB,CAAC,CAAA,CAAA,EAAIW,iBAAAA,CAAAA,QAAM,GAAA,CAAIC,CAAM,CAAC,CAAA,CACvD,CAAA,CAAA,EAAID,iBAAAA,CAAAA,OAAAA,CAAM,GAAA,CAAI,GAAG,CAAC,CAAA,CAAA,EAChB,IAAA,CAAK,KAAA,GAEH,CAAA,EAAGA,iBAAAA,CAAAA,OAAAA,CAAM,IAAIX,EAAgB,CAAC,CAAA,CAAA,EAAIW,iBAAAA,CAAAA,OAAAA,CAAM,GAAA,CAAIE,CAAQ,CAAC,CAAA,CAAA,GADrD,CAAA,EAAGF,iBAAAA,CAAAA,OAAAA,CAAM,KAAA,CAAMZ,EAAc,CAAC,CAAA,CAAA,EAAIc,CAAQ,CAAA,CAE9C;EAAKF,iBAAAA,CAAAA,OAAAA,CAAM,IAAA,CAAKb,EAAS,CAAC;;AAE5B;EACD,CAAA,EACA,EAAE,MAAA,EAAA;AACJ,CAAA;AA3LA,IAmlBaiB,EAAAA,GAAO,CAACC,CAAAA,GAAU,EAAA,EAAIF,IAAQ,EAAA,KAAO;AACjD,EAAA,MAAMnC,CAAAA,GAAQ;EAAKqC,CAAO;EAAK,KAAA,CAAM;AAAI,CAAA,CAAA,EACnCC,CAAAA,GAAWC,wBAAAA,CAAMJ,CAAK,CAAA,CAAE,MAAA,EACxBrK,CAAAA,GACL,IAAA,CAAK,GAAA,CACJkI,CAAAA,CAAM,MAAA,CAAO,CAACwC,CAAAA,EAAKC,EAAAA,KAAO;AACzB,IAAA,MAAMhG,EAAAA,GAAO8F,yBAAME,EAAE,CAAA;AACrB,IAAA,OAAOhG,EAAAA,CAAK,MAAA,GAAS+F,CAAAA,GAAM/F,EAAAA,CAAK,MAAA,GAAS+F,CAAAA;AAC1C,EAAA,CAAA,EAAG,CAAC,CAAA,EACJF,CACD,CAAA,GAAI,CAAA,EACCI,IAAM1C,CAAAA,CACV,GAAA,CACCyC,CAAAA,CAAAA,KACA,CAAA,EAAGT,kBAAAA,OAAAA,CAAM,IAAA,CAAKd,CAAK,CAAC,CAAA,EAAA,EAAKc,kBAAAA,OAAAA,CAAM,GAAA,CAAIS,CAAE,CAAC,GAAG,GAAA,CAAI,MAAA,CAAO3K,CAAAA,GAAMyK,wBAAAA,CAAME,CAAE,CAAA,CAAE,MAAM,CAAC,CAAA,EAAGT,kBAAAA,OAAAA,CAAM,IAAA,CACnFd,CACD,CAAC,CAAA,CACH,EACC,IAAA,CAAK;AAAI,CAAA,CAAA;AACX,EAAA,OAAA,CAAQ,OAAO,KAAA,CACd,CAAA,EAAGc,kBAAAA,OAAAA,CAAM,IAAA,CAAKd,CAAK,CAAC;EAAKc,iBAAAA,CAAAA,OAAAA,CAAM,KAAA,CAAMhB,EAAa,CAAC,CAAA,EAAA,EAAKgB,kBAAAA,OAAAA,CAAM,KAAA,CAAMG,CAAK,CAAC,CAAA,CAAA,EAAIH,iBAAAA,CAAAA,QAAM,IAAA,CACnFV,EAAAA,CAAQ,MAAA,CAAO,IAAA,CAAK,GAAA,CAAIxJ,CAAAA,GAAMwK,CAAAA,GAAW,CAAA,EAAG,CAAC,CAAC,CAAA,GAAIf,EACnD,CAAC;EAAKmB,CAAG;EAAKV,iBAAAA,CAAAA,OAAAA,CAAM,KAAKR,EAAAA,GAAiBF,EAAAA,CAAQ,OAAOxJ,CAAAA,GAAM,CAAC,CAAA,GAAI2J,EAAqB,CAAC;AAC3F,CAAA,CAAA;AACD,CAAA;AA3mBA,IAinBakB,EAAAA,GAAQ,CAACR,CAAAA,GAAQ,EAAA,KAAO;AACpC,EAAA,OAAA,CAAQ,MAAA,CAAO,MAAM,CAAA,EAAGH,iBAAAA,CAAAA,QAAM,IAAA,CAAKf,EAAW,CAAC,CAAA,EAAA,EAAKkB,CAAK;AAAI,CAAA,CAAA;AAC9D,CAAA;AAnnBA,IAqnBaS,EAAAA,GAAQ,CAACP,CAAAA,GAAU,EAAA,KAAO;AACtC,EAAA,OAAA,CAAQ,OAAO,KAAA,CAAM,CAAA,EAAGL,kBAAAA,OAAAA,CAAM,IAAA,CAAKd,CAAK,CAAC;AAAKc,EAAAA,iBAAAA,CAAAA,OAAAA,CAAM,IAAA,CAAKb,EAAS,CAAC,KAAKkB,CAAO;;AAAM,CAAA,CAAA;AACtF,CAAA;AAvnBA,IA4nBaQ,KAAM,EAClB,OAAA,EAAS,CAACR,CAAAA,GAAU,IAAI,EAAE,MAAA,EAAAP,CAAAA,GAASE,iBAAAA,CAAAA,QAAM,IAAA,CAAKd,CAAK,CAAA,EAAE,GAAuB,EAAO,KAAA;AAClF,EAAA,MAAM4B,CAAAA,GAAQ,CAAC,CAAA,EAAGd,iBAAAA,CAAAA,QAAM,IAAA,CAAKd,CAAK,CAAC,CAAA,CAAE,CAAA;AACrC,EAAA,IAAImB,CAAAA,EAAS;AACZ,IAAA,MAAM,CAACU,CAAAA,EAAW,GAAG/C,CAAK,CAAA,GAAIqC,EAAQ,KAAA,CAAM;AAAI,CAAA,CAAA;AAChDS,IAAAA,CAAAA,CAAM,KAAK,CAAA,EAAGhB,CAAM,KAAKiB,CAAS,CAAA,CAAA,EAAI,GAAG/C,CAAAA,CAAM,GAAA,CAAKyC,OAAO,CAAA,EAAGT,iBAAAA,CAAAA,QAAM,IAAA,CAAKd,CAAK,CAAC,CAAA,EAAA,EAAKuB,CAAE,EAAE,CAAC,CAAA;AAC1F,EAAA;AACA,EAAA,OAAA,CAAQ,MAAA,CAAO,KAAA,CAAM,CAAA,EAAGK,CAAAA,CAAM,IAAA,CAAK;CAAI,CAAC;AAAI,CAAA,CAAA;AAC7C,CAAA,EACA,MAAOT,CAAAA,CAAAA,KAAoB;AAC1BQ,EAAAA,EAAAA,CAAI,OAAA,CAAQR,CAAAA,EAAS,EAAE,MAAA,EAAQL,kBAAAA,OAAAA,CAAM,IAAA,CAAKN,CAAM,CAAA,EAAG,CAAA;AACpD,CAAA,EACA,SAAUW,CAAAA,CAAAA,KAAoB;AAC7BQ,EAAAA,EAAAA,CAAI,OAAA,CAAQR,CAAAA,EAAS,EAAE,MAAA,EAAQL,kBAAAA,OAAAA,CAAM,KAAA,CAAML,CAAS,CAAA,EAAG,CAAA;AACxD,CAAA,EACA,MAAOU,CAAAA,CAAAA,KAAoB;AAC1BQ,EAAAA,EAAAA,CAAI,OAAA,CAAQR,CAAAA,EAAS,EAAE,MAAA,EAAQL,kBAAAA,OAAAA,CAAM,KAAA,CAAMhB,EAAa,CAAA,EAAG,CAAA;AAC5D,CAAA,EACA,MAAOqB,CAAAA,CAAAA,KAAoB;AAC1BQ,EAAAA,EAAAA,CAAI,OAAA,CAAQR,CAAAA,EAAS,EAAE,MAAA,EAAQL,kBAAAA,OAAAA,CAAM,MAAA,CAAOJ,CAAM,CAAA,EAAG,CAAA;AACtD,CAAA,EAEA,SAAUS,CAAAA,CAAAA,KAAoB;AAC7BQ,EAAAA,EAAAA,CAAI,KAAKR,CAAO,CAAA;AACjB,CAAA,EACA,OAAQA,CAAAA,CAAAA,KAAoB;AAC3BQ,EAAAA,EAAAA,CAAI,OAAA,CAAQR,CAAAA,EAAS,EAAE,MAAA,EAAQL,kBAAAA,OAAAA,CAAM,GAAA,CAAIH,EAAO,CAAA,EAAG,CAAA;AACpD,CAAA,EACD;AAEe,CAAA,EAAGG,iBAAAA,CAAAA,OAAAA,CAAM,IAAA,CAAKd,CAAK,CAAC,CAAA,EAAA;AA1pBnC,IA2sBa8B,EAAAA,GAAU,CAAC,EAAE,SAAA,EAAAC,IAAY,MAAA,EAAO,GAAoB,EAAO,KAAA;AACvE,EAAA,MAAMC,CAAAA,GAASxC,KAAU,CAAC,QAAA,EAAK,UAAK,QAAA,EAAK,QAAG,IAAI,CAAC,QAAA,EAAK,KAAK,GAAA,EAAK,GAAG,GAC7DyC,CAAAA,GAAQzC,EAAAA,GAAU,KAAK,GAAA,EACvB0C,CAAAA,GAAO,OAAA,CAAQ,GAAA,CAAI,EAAA,KAAO,MAAA;AAEhC,EAAA,IAAIC,CAAAA,EACAC,GACAC,CAAAA,GAAkB,KAAA,EAClBC,KAAW,EAAA,EACXC,EAAAA,EACAC,EAAAA,GAAkB,WAAA,CAAY,GAAA,EAAA;AAElC,EAAA,MAAMC,EAAAA,GAAchM,CAAAA,EAAAA,KAAiB;AACpC,IAAA,MAAM+K,EAAAA,GAAM/K,EAAAA,GAAO,CAAA,GAAI,sBAAA,GAAyB,UAAA;AAC5C4L,IAAAA,CAAAA,IAAiBK,EAAAA,CAAKlB,IAAK/K,EAAI,CAAA;EACpC,CAAA,EAEMkM,CAAAA,GAAoB,MAAMF,EAAAA,CAAW,CAAC,CAAA,EACtCG,CAAAA,GAAqB,MAAMH,EAAAA,CAAW,CAAC,CAAA,EAEvCI,EAAAA,GAAgB,MAAM;AAE3B,IAAA,OAAA,CAAQ,EAAA,CAAG,4BAA4BF,CAAiB,CAAA,EAExD,QAAQ,EAAA,CAAG,oBAAA,EAAsBA,CAAiB,CAAA,EAElD,OAAA,CAAQ,EAAA,CAAG,UAAUC,CAAkB,CAAA,EACvC,QAAQ,EAAA,CAAG,SAAA,EAAWA,CAAkB,CAAA,EACxC,OAAA,CAAQ,EAAA,CAAG,MAAA,EAAQH,EAAU,CAAA;AAC9B,EAAA,CAAA,EAEMK,IAAa,MAAM;AACxB,IAAA,OAAA,CAAQ,cAAA,CAAe,4BAA4BH,CAAiB,CAAA,EACpE,QAAQ,cAAA,CAAe,oBAAA,EAAsBA,CAAiB,CAAA,EAC9D,OAAA,CAAQ,cAAA,CAAe,UAAUC,CAAkB,CAAA,EACnD,QAAQ,cAAA,CAAe,SAAA,EAAWA,CAAkB,CAAA,EACpD,OAAA,CAAQ,cAAA,CAAe,MAAA,EAAQH,EAAU,CAAA;AAC1C,EAAA,CAAA,EAEMM,KAAmB,MAAM;AAC9B,IAAA,IAAIR,OAAiB,MAAA,EAAW;AAC5BL,IAAAA,CAAAA,IAAM,OAAA,CAAQ,OAAO,KAAA,CAAM;AAAI,CAAA,CAAA;AACnC,IAAA,MAAMc,EAAAA,GAAYT,GAAa,KAAA,CAAM;AAAI,CAAA,CAAA;AACzC,IAAA,OAAA,CAAQ,OAAO,KAAA,CAAMnF,kBAAAA,CAAAA,OAAO,IAAA,CAAK,IAAA,EAAM4F,GAAU,MAAA,GAAS,CAAC,CAAC,CAAA,EAC5D,OAAA,CAAQ,OAAO,KAAA,CAAM9D,kBAAAA,CAAAA,MAAM,IAAA,CAAK8D,EAAAA,CAAU,MAAM,CAAC,CAAA;EAClD,CAAA,EAEMC,EAAAA,GAAgBzB,CAAAA,EAAAA,KACdA,EAAAA,CAAI,OAAA,CAAQ,QAAQ,EAAE,CAAA,EAGxB0B,EAAAA,GAAeC,CAAAA,EAAAA,KAA2B;AAC/C,IAAA,MAAMC,MAAY,WAAA,CAAY,GAAA,EAAA,GAAQD,EAAAA,IAAU,KAC1CE,EAAAA,GAAM,IAAA,CAAK,KAAA,CAAMD,EAAAA,GAAW,EAAE,CAAA,EAC9BE,EAAAA,GAAO,IAAA,CAAK,KAAA,CAAMF,KAAW,EAAE,CAAA;AACrC,IAAA,OAAOC,EAAAA,GAAM,IAAI,CAAA,CAAA,EAAIA,EAAG,KAAKC,EAAI,CAAA,EAAA,CAAA,GAAO,IAAIA,EAAI,CAAA,EAAA,CAAA;EACjD,CAAA,EAEMvM,CAAAA,GAAQ,CAACyK,EAAAA,GAAM,EAAA,KAAa;AACjCa,IAAAA,CAAAA,GAAkB,IAAA,EAClBF,IAAU5F,EAAAA,EAAAA,EACV+F,KAAWW,EAAAA,CAAazB,EAAG,GAC3BgB,EAAAA,GAAU,WAAA,CAAY,KAAI,EAC1B,OAAA,CAAQ,OAAO,KAAA,CAAM,CAAA,EAAG1B,kBAAAA,OAAAA,CAAM,IAAA,CAAKd,CAAK,CAAC;AAAI,CAAA,CAAA;AAC7C,IAAA,IAAIuD,EAAAA,GAAa,GACbC,EAAAA,GAAiB,CAAA;AACrBX,IAAAA,EAAAA,EAAAA,EACAT,CAAAA,GAAO,WAAA,CAAY,MAAM;AACxB,MAAA,IAAIF,CAAAA,IAAQI,OAAaC,EAAAA,EACxB;AAEDQ,MAAAA,EAAAA,IACAR,EAAAA,GAAeD,EAAAA;AACf,MAAA,MAAMtD,KAAQ8B,iBAAAA,CAAAA,OAAAA,CAAM,OAAA,CAAQkB,CAAAA,CAAOuB,EAAU,CAAC,CAAA;AAE9C,MAAA,IAAIrB,CAAAA,UACK,MAAA,CAAO,KAAA,CAAM,GAAGlD,EAAK,CAAA,EAAA,EAAKsD,EAAQ,CAAA,GAAA,CAAK,CAAA;AACrCP,WAAAA,IAAAA,CAAAA,KAAc,OAAA,EACxB,OAAA,CAAQ,MAAA,CAAO,KAAA,CAAM,CAAA,EAAG/C,EAAK,CAAA,EAAA,EAAKsD,EAAQ,CAAA,CAAA,EAAIY,EAAAA,CAAYV,EAAO,CAAC,CAAA,CAAE,CAAA;AAC9D,WAAA;AACN,QAAA,MAAMiB,EAAAA,GAAc,GAAA,CAAI,MAAA,CAAO,IAAA,CAAK,KAAA,CAAMD,EAAc,CAAC,CAAA,CAAE,KAAA,CAAM,CAAA,EAAG,CAAC,CAAA;AACrE,QAAA,OAAA,CAAQ,MAAA,CAAO,MAAM,CAAA,EAAGxE,EAAK,KAAKsD,EAAQ,CAAA,EAAGmB,EAAW,CAAA,CAAE,CAAA;AAC3D,MAAA;AAEAF,MAAAA,EAAAA,GAAaA,EAAAA,GAAa,CAAA,GAAIvB,CAAAA,CAAO,MAAA,GAASuB,EAAAA,GAAa,CAAA,GAAI,CAAA,EAC/DC,EAAAA,GAAiBA,EAAAA,GAAiBxB,CAAAA,CAAO,MAAA,GAASwB,KAAiB,KAAA,GAAQ,CAAA;AAC5E,IAAA,CAAA,EAAGvB,CAAK,CAAA;AACT,EAAA,CAAA,EAEMS,EAAAA,GAAO,CAAClB,EAAAA,GAAM,EAAA,EAAI/K,KAAO,CAAA,KAAY;AAC1C4L,IAAAA,CAAAA,GAAkB,KAAA,EAClB,aAAA,CAAcD,CAAI,CAAA,EAClBW,EAAAA,EAAiB;AACjB,IAAA,MAAMW,KACLjN,EAAAA,KAAS,CAAA,GACNqK,kBAAAA,OAAAA,CAAM,KAAA,CAAMhB,EAAa,CAAA,GACzBrJ,EAAAA,KAAS,CAAA,GACRqK,iBAAAA,CAAAA,QAAM,GAAA,CAAIlB,EAAa,IACvBkB,iBAAAA,CAAAA,OAAAA,CAAM,IAAIjB,EAAY,CAAA;AAC3ByC,IAAAA,KAAWW,EAAAA,CAAazB,EAAAA,IAAOc,EAAQ,CAAA,EACnCP,MAAc,OAAA,GACjB,OAAA,CAAQ,MAAA,CAAO,KAAA,CAAM,GAAG2B,EAAI,CAAA,EAAA,EAAKpB,EAAQ,CAAA,CAAA,EAAIY,EAAAA,CAAYV,EAAO,CAAC;AAAI,CAAA,CAAA,GAErE,QAAQ,MAAA,CAAO,KAAA,CAAM,CAAA,EAAGkB,EAAI,KAAKpB,EAAQ;CAAI,CAAA,EAE9CQ,CAAAA,IACAX,CAAAA,EAAAA;AACD,EAAA,CAAA;AAMA,EAAA,OAAO,EACN,OAAApL,CAAAA,EACA,IAAA,EAAA2L,IACA,OAAA,EAPe,CAAClB,KAAM,EAAA,KAAa;AACnCc,IAAAA,EAAAA,GAAWW,EAAAA,CAAazB,EAAAA,IAAOc,EAAQ,CAAA;EACxC,CAAA,EAMA;AACD,CAAA;ACh0BO,SAAS,iBAAA,GAAiC;AAC/C,EAAA,MAAM,GAAA,GAAM,QAAQ,GAAA,EAAI;AACxB,EAAA,MAAM,gBAAgB,OAAA,CAAQ,OAAA,CAAQ,OAAO,KAAA,IAAS,OAAA,CAAQ,MAAM,KAAK,CAAA;AAEzE,EAAA,IAAI,cAAA,GAAiC,KAAA;AACrC,EAAA,IAAI,WAAW,IAAA,CAAK,GAAA,EAAK,WAAW,CAAC,GAAG,cAAA,GAAiB,MAAA;AAAA,OAAA,IAChD,WAAW,IAAA,CAAK,GAAA,EAAK,gBAAgB,CAAC,GAAG,cAAA,GAAiB,MAAA;AAAA,OAAA,IAC1D,UAAA,CAAW,IAAA,CAAK,GAAA,EAAK,WAAW,CAAC,CAAA,IAAK,UAAA,CAAW,IAAA,CAAK,GAAA,EAAK,UAAU,CAAC,CAAA,EAAG,cAAA,GAAiB,KAAA;AAEnG,EAAA,MAAM,cAAc,QAAA,CAAS,OAAA,CAAQ,QAAQ,KAAA,CAAM,CAAC,GAAG,EAAE,CAAA;AACzD,EAAA,MAAM,WAAA,GAAc,WAAW,IAAA,CAAK,GAAA,EAAK,gBAAgB,WAAA,EAAa,UAAA,EAAY,cAAc,CAAC,CAAA;AAEjG,EAAA,OAAO,EAAE,aAAA,EAAe,cAAA,EAAgB,WAAA,EAAa,aAAa,GAAA,EAAI;AACxE;AAEA,SAAS,KAAA,CAAM,IAAY,IAAA,EAAkC;AAC3D,EAAA,IAAI,EAAA,KAAO,MAAA,EAAQ,OAAO,CAAA,KAAA,EAAQ,KAAK,IAAI,CAAA,CAAA;AAC3C,EAAA,IAAI,EAAA,KAAO,MAAA,EAAQ,OAAO,CAAA,KAAA,EAAQ,KAAK,IAAI,CAAA,CAAA;AAC3C,EAAA,IAAI,EAAA,KAAO,KAAA,EAAO,OAAO,CAAA,IAAA,EAAO,KAAK,GAAG,CAAA,CAAA;AACxC,EAAA,OAAO,CAAA,IAAA,EAAO,KAAK,GAAG,CAAA,CAAA;AACxB;AAEO,SAAS,MAAA,CAAO,KAAkD,IAAA,EAA0B;AACjG,EAAA,MAAM,GAAA,GAAM,KAAA,CAAM,GAAA,CAAI,cAAA,EAAgB,IAAI,CAAA;AAC1C,EAAA,OAAO,QAAA,CAAS,KAAK,EAAE,KAAA,EAAO,WAAW,GAAA,EAAK,GAAA,CAAI,KAAK,CAAA;AACzD;AC1CO,SAAS,cAAA,CAAe,EAAE,GAAA,EAAI,EAAsC;AACzE,EAAA,MAAM,OAAA,GAAUqB,IAAAA,CAAK,GAAA,EAAK,cAAc,CAAA;AACxC,EAAA,IAAI,CAACC,UAAAA,CAAW,OAAO,CAAA,EAAG,OAAO,KAAA;AAEjC,EAAA,MAAM,MAAM,IAAA,CAAK,KAAA,CAAM,YAAA,CAAa,OAAA,EAAS,OAAO,CAAC,CAAA;AAKrD,EAAA,OAAO,gBAAA,KAAqB,IAAI,eAAA,IAAmB,OAAO,gBAAA,KAAqB,GAAA,CAAI,gBAAgB,EAAC,CAAA;AACtG;AAEO,SAAS,WAAW,GAAA,EAAwD;AACjF,EAAA,MAAA,CAAO,GAAA,EAAK;AAAA,IACV,GAAA,EAAK,mCAAA;AAAA,IACL,IAAA,EAAM,0BAAA;AAAA,IACN,IAAA,EAAM,uBAAA;AAAA,IACN,GAAA,EAAK;AAAA,GACN,CAAA;AACH;ACnBA,IAAM,UAAA,GAAa,qBAAA;AAEnB,IAAM,eAAA,GAAkB,CAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;AA0BxB,IAAM,YAAA,GAAe,CAAA;AAAA,QAAA,EACX,UAAU,CAAA;;AAAA;AAAA,CAAA;AAKpB,IAAM,eAAA,GAAkB,CAAA;AAAA;AAAA;AAAA,CAAA;AAajB,SAAS,gBAAgB,GAAA,EAAwD;AACtF,EAAA,MAAA,CAAO,GAAA,EAAK;AAAA,IACV,GAAA,EAAK,uCAAA;AAAA,IACL,IAAA,EAAM,8BAAA;AAAA,IACN,IAAA,EAAM,2BAAA;AAAA,IACN,GAAA,EAAK;AAAA,GACN,CAAA;AACH;AAEA,SAAS,WAAW,GAAA,EAA2D;AAC7E,EAAA,MAAM,OAAA,GAAUD,IAAAA,CAAK,GAAA,CAAI,GAAA,EAAK,cAAc,CAAA;AAC5C,EAAA,IAAI,CAACC,UAAAA,CAAW,OAAO,CAAA,EAAG,OAAO,KAAA;AAEjC,EAAA,MAAM,MAAM,IAAA,CAAK,KAAA,CAAMC,YAAAA,CAAa,OAAA,EAAS,OAAO,CAAC,CAAA;AAKrD,EAAA,MAAM,gBAAA,GACJ,0BAA0B,GAAA,CAAI,eAAA,IAAmB,EAAC,CAAA,IAAM,qBAAA,KAA0B,GAAA,CAAI,YAAA,IAAgB,EAAC,CAAA;AAEzG,EAAA,IAAI,kBAAkB,OAAO,KAAA;AAE7B,EAAA,MAAA,CAAO,GAAA,EAAK;AAAA,IACV,GAAA,EAAK,wCAAA;AAAA,IACL,IAAA,EAAM,+BAAA;AAAA,IACN,IAAA,EAAM,4BAAA;AAAA,IACN,GAAA,EAAK;AAAA,GACN,CAAA;AAED,EAAA,OAAO,IAAA;AACT;AAEA,SAAS,mBAAA,CAAoB,EAAE,GAAA,EAAI,EAAmD;AACpF,EAAA,MAAM,UAAA,GAAaF,IAAAA,CAAK,GAAA,EAAK,UAAA,EAAY,SAAS,CAAA;AAClD,EAAA,MAAM,WAAA,GAAcA,IAAAA,CAAK,UAAA,EAAY,UAAU,CAAA;AAE/C,EAAA,IAAIC,UAAAA,CAAW,WAAW,CAAA,EAAG;AAC3B,IAAA,MAAM,OAAA,GAAUC,YAAAA,CAAa,WAAA,EAAa,OAAO,CAAA;AACjD,IAAA,IAAI,OAAA,CAAQ,QAAA,CAAS,UAAU,CAAA,EAAG,OAAO,SAAA;AACzC,IAAA,OAAO,qBAAA;AAAA,EACT;AAEA,EAAA,MAAM,UAAA,GAAaF,IAAAA,CAAK,GAAA,EAAK,aAAa,CAAA;AAC1C,EAAA,IAAI,CAACC,UAAAA,CAAW,UAAU,CAAA,EAAG;AAC3B,IAAA,aAAA,CAAc,UAAA,EAAY,iBAAiB,OAAO,CAAA;AAAA,EACpD;AAEA,EAAA,SAAA,CAAU,UAAA,EAAY,EAAE,SAAA,EAAW,IAAA,EAAM,CAAA;AACzC,EAAA,aAAA,CAAc,WAAA,EAAa,cAAc,OAAO,CAAA;AAChD,EAAA,OAAO,SAAA;AACT;AAEA,SAAS,gBAAA,CAAiB,EAAE,GAAA,EAAI,EAAsC;AACpE,EAAA,IAAIA,UAAAA,CAAWD,IAAAA,CAAK,GAAA,EAAK,UAAU,CAAC,CAAA,EAAG;AACrC,IAAA,IAAI;AACF,MAAA,MAAM,eAAA,GAAkB,WAAA,CAAYA,IAAAA,CAAK,GAAA,EAAK,UAAU,CAAC,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,QAAA,CAAS,UAAU,CAAC,CAAA;AAC7F,MAAA,IAAI,iBAAiB,OAAO,KAAA;AAAA,IAC9B,CAAA,CAAA,MAAQ;AACN,MAAA,OAAO,KAAA;AAAA,IACT;AAAA,EACF;AAEA,EAAA,IAAI;AACF,IAAA,MAAM,gBAAA,GAAmB,WAAA,CAAY,GAAG,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,QAAA,CAAS,UAAU,CAAC,CAAA;AAC5E,IAAA,IAAI,kBAAkB,OAAO,KAAA;AAAA,EAC/B,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,KAAA;AAAA,EACT;AAEA,EAAA,SAAA,CAAUA,KAAK,GAAA,EAAK,UAAU,GAAG,EAAE,SAAA,EAAW,MAAM,CAAA;AACpD,EAAA,aAAA,CAAcA,KAAK,GAAA,EAAK,UAAA,EAAY,iBAAiB,CAAA,EAAG,iBAAiB,OAAO,CAAA;AAChF,EAAA,OAAO,IAAA;AACT;AAEO,SAAS,cAAc,GAAA,EAAuE;AACnG,EAAA,MAAM,YAAA,GAAe,WAAW,GAAG,CAAA;AACnC,EAAA,MAAM,YAAA,GAAe,oBAAoB,GAAG,CAAA;AAC5C,EAAA,MAAM,eAAA,GAAkB,iBAAiB,GAAG,CAAA;AAC5C,EAAA,OAAO,EAAE,YAAA,EAAc,YAAA,EAAc,eAAA,EAAgB;AACvD;AC7HA,SAAS,aAAA,CAAc,EAAE,cAAA,EAAgB,WAAA,EAAY,EAAgE;AACnH,EAAA,IAAI,cAAA,KAAmB,QAAQ,OAAO,CAAA;AAAA;AAAA;AAAA;AAAA,wBAAA,EAKd,WAAW;AAAA;AAAA;AAAA,qCAAA,CAAA;AAInC,EAAA,IAAI,cAAA,KAAmB,QAAQ,OAAO,CAAA;AAAA;AAAA;AAAA,wBAAA,EAId,WAAW;AAAA;AAAA;AAAA,2CAAA,CAAA;AAInC,EAAA,IAAI,cAAA,KAAmB,OAAO,OAAO,CAAA;AAAA;AAAA,0CAAA,CAAA;AAIrC,EAAA,OAAO,CAAA;AAAA;AAAA,wBAAA,EAGiB,WAAW;AAAA;AAAA;AAAA,mBAAA,CAAA;AAIrC;AAEA,SAAS,aAAa,GAAA,EAAkE;AACtF,EAAA,MAAM,UAAA,GAAa,cAAc,GAAG,CAAA;AAEpC,EAAA,OAAO,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWP,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;AAMZ;AAEO,SAAS,oBAAoB,GAAA,EAAuF;AACzH,EAAA,MAAM,WAAA,GAAcA,IAAAA,CAAK,GAAA,CAAI,GAAA,EAAK,WAAW,WAAW,CAAA;AACxD,EAAA,MAAM,YAAA,GAAeA,IAAAA,CAAK,WAAA,EAAa,eAAe,CAAA;AAEtD,EAAA,IAAIC,UAAAA,CAAW,YAAY,CAAA,EAAG,OAAO,SAAA;AAErC,EAAAE,SAAAA,CAAU,WAAA,EAAa,EAAE,SAAA,EAAW,MAAM,CAAA;AAC1C,EAAAC,aAAAA,CAAc,YAAA,EAAc,YAAA,CAAa,GAAG,GAAG,OAAO,CAAA;AACtD,EAAA,OAAO,SAAA;AACT;AChEO,SAAS,oBAAA,CAAqB,EAAE,GAAA,EAAI,EAAsC;AAC/E,EAAA,MAAM,OAAA,GAAUJ,IAAAA,CAAK,GAAA,EAAK,cAAc,CAAA;AACxC,EAAA,IAAI,CAACC,UAAAA,CAAW,OAAO,CAAA,EAAG,OAAO,KAAA;AAEjC,EAAA,MAAM,MAAM,IAAA,CAAK,KAAA,CAAMC,YAAAA,CAAa,OAAA,EAAS,OAAO,CAAC,CAAA;AAKrD,EAAA,OACE,uBAAA,KAA4B,IAAI,eAAA,IAAmB,OACnD,uBAAA,KAA4B,GAAA,CAAI,gBAAgB,EAAC,CAAA;AAErD;AAEO,SAAS,iBAAiB,GAAA,EAAwD;AACvF,EAAA,MAAA,CAAO,GAAA,EAAK;AAAA,IACV,GAAA,EAAK,0CAAA;AAAA,IACL,IAAA,EAAM,iCAAA;AAAA,IACN,IAAA,EAAM,8BAAA;AAAA,IACN,GAAA,EAAK;AAAA,GACN,CAAA;AACH;ACrBO,SAAS,qBAAA,CAAsB,EAAE,GAAA,EAAI,EAAsC;AAChF,EAAA,IAAI,CAACD,WAAWD,IAAAA,CAAK,GAAA,EAAK,gBAAgB,iBAAA,EAAmB,cAAc,CAAC,CAAA,EAAG;AAC7E,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,IAAI;AACF,IAAA,MAAM,QAAA,GAAWK,QAAAA;AAAA,MACf,CAAA,2EAAA,CAAA;AAAA,MACA,EAAE,GAAA,EAAK,KAAA,EAAO,MAAA,EAAQ,UAAU,OAAA;AAAQ,MACxC,IAAA,EAAK;AACP,IAAA,OAAOJ,WAAW,QAAQ,CAAA;AAAA,EAC5B,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,KAAA;AAAA,EACT;AACF;AAEO,SAAS,0BAA0B,GAAA,EAAwD;AAChG,EAAA,MAAA,CAAO,GAAA,EAAK;AAAA,IACV,GAAA,EAAK,kCAAA;AAAA,IACL,IAAA,EAAM,kCAAA;AAAA,IACN,IAAA,EAAM,kCAAA;AAAA,IACN,GAAA,EAAK;AAAA,GACN,CAAA;AACH;;;ACnBA,IAAMK,WAAAA,GAAa,qBAAA;AAOnB,eAAe,eAAe,GAAA,EAAiC;AAC7D,EAAA,IAAI,cAAA,CAAe,GAAG,CAAA,EAAG;AACvB,IAAAC,EAAAA,CAAI,QAAQ,kCAAkC,CAAA;AAC9C,IAAA;AAAA,EACF;AAEA,EAAA,MAAM,IAAIC,EAAAA,EAAQ;AAClB,EAAA,CAAA,CAAE,MAAM,iCAA4B,CAAA;AACpC,EAAA,UAAA,CAAW,GAAG,CAAA;AACd,EAAA,CAAA,CAAE,KAAK,0BAA0B,CAAA;AACnC;AAEA,eAAe,kBAAA,CAAmB,GAAA,EAAkB,EAAE,GAAA,EAAI,EAAkC;AAC1F,EAAA,IAAI,GAAA,CAAI,aAAa,OAAO,IAAA;AAE5B,EAAA,IAAI,CAAC,GAAA,IAAO,CAAC,GAAA,CAAI,aAAA,EAAe;AAC9B,IAAAD,EAAAA,CAAI,KAAK,0EAA0E,CAAA;AACnF,IAAA,EAAA,CAAK,2EAA2E,gBAAgB,CAAA;AAChG,IAAA,OAAO,KAAA;AAAA,EACT;AAEA,EAAA,IAAI,CAAC,GAAA,EAAK;AACR,IAAA,MAAM,UAAU,MAAM,EAAA,CAAQ,EAAE,OAAA,EAAS,iDAAiD,CAAA;AAC1F,IAAA,IAAI,OAAA,KAAY,MAAM,OAAO,KAAA;AAAA,EAC/B;AAEA,EAAA,MAAM,IAAIC,EAAAA,EAAQ;AAClB,EAAA,CAAA,CAAE,MAAM,qCAAgC,CAAA;AACxC,EAAA,eAAA,CAAgB,GAAG,CAAA;AACnB,EAAA,CAAA,CAAE,KAAK,8BAA8B,CAAA;AACrC,EAAA,OAAO,IAAA;AACT;AAEA,eAAe,oBAAA,CAAqB,GAAA,EAAkB,EAAE,GAAA,EAAK,OAAM,EAA+B;AAChG,EAAA,IAAI,KAAA,EAAO;AACT,IAAAD,EAAAA,CAAI,KAAK,wDAAwD,CAAA;AACjE,IAAA;AAAA,EACF;AAEA,EAAA,IAAI,oBAAA,CAAqB,GAAG,CAAA,EAAG;AAC7B,IAAAA,EAAAA,CAAI,QAAQ,yCAAyC,CAAA;AACrD,IAAA;AAAA,EACF;AAEA,EAAA,IAAI,CAAC,GAAA,IAAO,GAAA,CAAI,aAAA,EAAe;AAC7B,IAAA,MAAM,OAAA,GAAU,MAAM,EAAA,CAAQ;AAAA,MAC5B,OAAA,EAAS,8DAAA;AAAA,MACT,YAAA,EAAc;AAAA,KACf,CAAA;AACD,IAAA,IAAI,YAAY,IAAA,EAAM;AACpB,MAAAA,EAAAA,CAAI,KAAK,6CAA6C,CAAA;AACtD,MAAA;AAAA,IACF;AAAA,EACF;AAEA,EAAA,MAAM,IAAIC,EAAAA,EAAQ;AAClB,EAAA,CAAA,CAAE,MAAM,wCAAmC,CAAA;AAC3C,EAAA,gBAAA,CAAiB,GAAG,CAAA;AACpB,EAAA,CAAA,CAAE,KAAK,iCAAiC,CAAA;AAC1C;AAEA,SAAS,kBAAkB,GAAA,EAAwB;AACjD,EAAA,MAAM,MAAA,GAAS,cAAc,GAAG,CAAA;AAEhC,EAAA,IAAI,MAAA,CAAO,YAAA,EAAcD,EAAAA,CAAI,QAAQ,+BAA+B,CAAA;AAEpE,EAAA,IAAI,MAAA,CAAO,iBAAiB,SAAA,EAAW;AACrC,IAAAA,EAAAA,CAAI,QAAQ,mCAAmC,CAAA;AAAA,EACjD,CAAA,MAAA,IAAW,MAAA,CAAO,YAAA,KAAiB,qBAAA,EAAuB;AACxD,IAAAA,EAAAA,CAAI,KAAK,2EAA2E,CAAA;AACpF,IAAA,EAAA,CAAK,CAAA,aAAA,EAAgBD,WAAU,CAAA,gCAAA,CAAA,EAAoC,iBAAiB,CAAA;AAAA,EACtF;AAEA,EAAA,IAAI,MAAA,CAAO,eAAA,EAAiBC,EAAAA,CAAI,QAAQ,kDAAkD,CAAA;AAC5F;AAEA,eAAe,2BAAA,CAA4B,GAAA,EAAkB,EAAE,GAAA,EAAI,EAA+B;AAChG,EAAA,IAAI,qBAAA,CAAsB,GAAG,CAAA,EAAG;AAEhC,EAAA,IAAI,CAAC,GAAA,IAAO,CAAC,GAAA,CAAI,aAAA,EAAe;AAC9B,IAAAA,EAAAA,CAAI,KAAK,wCAAwC,CAAA;AACjD,IAAA,EAAA,CAAK,mCAAmC,yBAAyB,CAAA;AACjE,IAAA;AAAA,EACF;AAEA,EAAA,IAAI,CAAC,GAAA,EAAK;AACR,IAAA,MAAM,UAAU,MAAM,EAAA,CAAQ,EAAE,OAAA,EAAS,0DAA0D,CAAA;AACnG,IAAA,IAAI,YAAY,IAAA,EAAM;AAAA,EACxB;AAEA,EAAA,MAAM,IAAIC,EAAAA,EAAQ;AAClB,EAAA,CAAA,CAAE,MAAM,sCAAiC,CAAA;AACzC,EAAA,yBAAA,CAA0B,GAAG,CAAA;AAC7B,EAAA,CAAA,CAAE,KAAK,+BAA+B,CAAA;AACxC;AAEA,eAAe,mBAAA,CAAoB,GAAA,EAAkB,EAAE,GAAA,EAAI,EAA+B;AACxF,EAAA,IAAI,CAAC,GAAA,IAAO,CAAC,GAAA,CAAI,aAAA,EAAe;AAEhC,EAAA,IAAI,CAAC,GAAA,EAAK;AACR,IAAA,MAAM,YAAY,MAAM,EAAA,CAAQ,EAAE,OAAA,EAAS,gDAAgD,CAAA;AAC3F,IAAA,IAAI,cAAc,IAAA,EAAM;AAAA,EAC1B;AAEA,EAAA,MAAM,MAAA,GAAS,oBAAoB,GAAG,CAAA;AACtC,EAAA,IAAI,WAAW,SAAA,EAAW;AACxB,IAAAD,EAAAA,CAAI,QAAQ,yCAAyC,CAAA;AAAA,EACvD,CAAA,MAAO;AACL,IAAAA,EAAAA,CAAI,KAAK,yDAAyD,CAAA;AAAA,EACpE;AACF;AAEA,eAAsB,IAAA,CAAK,OAAA,GAAuB,EAAC,EAAkB;AACnE,EAAA,EAAA,CAAM,gBAAgB,CAAA;AAEtB,EAAA,MAAM,MAAM,iBAAA,EAAkB;AAE9B,EAAA,MAAM,eAAe,GAAG,CAAA;AACxB,EAAA,MAAM,oBAAA,CAAqB,KAAK,OAAO,CAAA;AAEvC,EAAA,MAAM,WAAA,GAAc,MAAM,kBAAA,CAAmB,GAAA,EAAK,OAAO,CAAA;AACzD,EAAA,IAAI,WAAA,EAAa;AACf,IAAA,iBAAA,CAAkB,GAAG,CAAA;AACrB,IAAA,MAAM,2BAAA,CAA4B,KAAK,OAAO,CAAA;AAC9C,IAAA,MAAM,mBAAA,CAAoB,KAAK,OAAO,CAAA;AAAA,EACxC;AAEA,EAAA,EAAA,CAAM,oDAAoD,CAAA;AAC5D;AC7IA,eAAsB,WAAW,IAAA,EAA2C;AAC1E,EAAA,MAAM,MAAA,GAAwB,MAAME,OAAA,CAAW,EAAE,MAAA,EAAQ,KAAK,EAAA,EAAI,YAAA,EAAc,IAAA,CAAK,SAAA,EAAW,CAAA;AAEhG,EAAA,MAAM,EAAE,MAAA,EAAQ,MAAA,EAAO,GAAI,OAAA;AAE3B,EAAA,IAAI,CAAC,OAAO,MAAA,EAAQ;AAClB,IAAA,MAAA,CAAO,MAAM,2BAA2B,CAAA;AACxC,IAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,EAChB;AAEA,EAAA,IAAI,MAAA,CAAO,gBAAgB,CAAA,EAAG;AAC5B,IAAA,MAAA,CAAO,MAAM,kDAAkD,CAAA;AAC/D,IAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,EAChB;AAEA,EAAA,KAAA,MAAW,IAAA,IAAQ,OAAO,YAAA,EAAc;AACtC,IAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,MAAA,KAAW,MAAA,GAAS,UAAA,GAAa,UAAA;AAEpD,IAAA,MAAA,CAAO,MAAM,IAAI,CAAA;AACjB,IAAA,MAAA,CAAO,MAAM,CAAA,OAAA,EAAU,IAAA,CAAK,WAAW,CAAA,IAAA,EAAO,KAAK,YAAY,CAAA;AAAA,CAAW,CAAA;AAC1E,IAAA,MAAA,CAAO,MAAM,CAAA,CAAA,EAAI,IAAA,CAAK,MAAM,UAAA,CAAW,IAAA,EAAM,KAAK,CAAC;;AAAA,CAAM,CAAA;AACzD,IAAA,MAAA,CAAO,KAAA,CAAM,CAAA,CAAA,EAAI,KAAK,CAAA,OAAA,EAAU,KAAK,aAAa,CAAA;AAAA,CAAW,CAAA;AAC7D,IAAA,MAAA,CAAO,MAAM,CAAA,CAAA,EAAI,IAAA,CAAK,OAAO,UAAA,CAAW,IAAA,EAAM,KAAK,CAAC;AAAA,CAAI,CAAA;AACxD,IAAA,MAAA,CAAO,MAAM,CAAA,WAAA,EAAO,IAAA,CAAK,OAAO,UAAA,CAAW,IAAA,EAAM,KAAK,CAAC;AAAA,CAAI,CAAA;AAAA,EAC7D;AAEA,EAAA,KAAA,MAAW,GAAA,IAAO,OAAO,MAAA,EAAQ;AAC/B,IAAA,MAAA,CAAO,KAAA,CAAM;AAAA,QAAA,EAAa,GAAA,CAAI,WAAW,CAAA,IAAA,EAAO,GAAA,CAAI,YAAY,CAAA;AAAA,CAAW,CAAA;AAC3E,IAAA,MAAA,CAAO,MAAM,CAAA,CAAA,EAAI,GAAA,CAAI,MAAM,UAAA,CAAW,IAAA,EAAM,KAAK,CAAC;AAAA,CAAI,CAAA;AAAA,EACxD;AAEA,EAAA,OAAA,CAAQ,KAAK,MAAA,CAAO,MAAA,CAAO,MAAA,GAAS,CAAA,GAAI,IAAI,CAAC,CAAA;AAC/C;AC7BA,SAAS,WAAA,GAAc;AACrB,EAAA,OAAA,CAAQ,MAAA,CAAO,MAAM,WAAW,CAAA;AAChC,EAAA,OAAA,CAAQ,MAAA,CAAO,MAAM,SAAS,CAAA;AAChC;AAEA,SAAS,UAAA,GAAa;AACpB,EAAA,OAAA,CAAQ,MAAA,CAAO,MAAM,SAAS,CAAA;AAC9B,EAAA,OAAA,CAAQ,MAAA,CAAO,MAAM,WAAW,CAAA;AAClC;AAEA,SAAS,OAAA,GAA2B;AAClC,EAAA,MAAM,EAAE,OAAM,GAAI,OAAA;AAElB,EAAA,KAAA,CAAM,WAAW,IAAI,CAAA;AACrB,EAAA,KAAA,CAAM,MAAA,EAAO;AACb,EAAA,KAAA,CAAM,YAAY,MAAM,CAAA;AACxB,EAAA,WAAA,EAAY;AAEZ,EAAA,OAAO,IAAI,OAAA,CAAgB,CAAC,OAAA,KAAY;AACtC,IAAA,MAAM,OAAA,GAAU,CAAC,OAAA,KAAoB;AACnC,MAAA,KAAA,CAAM,cAAA,CAAe,QAAQ,OAAO,CAAA;AACpC,MAAA,KAAA,CAAM,WAAW,KAAK,CAAA;AACtB,MAAA,KAAA,CAAM,KAAA,EAAM;AACZ,MAAA,UAAA,EAAW;AAEX,MAAA,OAAA,CAAQ,OAAO,CAAA;AAAA,IACjB,CAAA;AAEA,IAAA,KAAA,CAAM,EAAA,CAAG,QAAQ,OAAO,CAAA;AAAA,EAC1B,CAAC,CAAA;AACH;AAEA,eAAe,WAAW,KAAA,EAAgC;AACxD,EAAA,OAAO,IAAA,EAAM;AACX,IAAA,MAAM,GAAA,GAAM,MAAM,OAAA,EAAQ;AAC1B,IAAA,IAAI,GAAA,KAAQ,KAAU,OAAO,EAAA;AAE7B,IAAA,MAAM,MAAM,GAAA,IAAO,GAAA,IAAO,OAAO,GAAA,GAAM,MAAA,CAAO,GAAG,CAAA,GAAI,IAAA;AAErD,IAAA,IAAI,CAAC,GAAA,IAAO,GAAA,GAAM,KAAA,EAAO;AACvB,MAAA,OAAA,CAAQ,MAAA,CAAO,MAAM,0CAA0C,CAAA;AAC/D,MAAA;AAAA,IACF;AAEA,IAAA,OAAO,GAAA,GAAM,CAAA;AAAA,EACf;AACF;AAEA,eAAsB,UAAA,CAAW,IAAA,EAAe,OAAA,EAAmB,WAAA,EAAsB;AACvF,EAAA,MAAM,EAAE,QAAO,GAAI,OAAA;AAEnB,EAAA,OAAO,OAAA,CAAQ,SAAS,CAAA,EAAG;AACzB,IAAA,MAAA,CAAO,KAAA,CAAM;AAAA,OAAA,EAAY,KAAK,IAAI,CAAA;AAAA,CAAW,CAAA;AAC7C,IAAA,MAAA,CAAO,MAAM,kEAAkE,CAAA;AAE/E,IAAA,IAAI,KAAA,GAAQ,CAAA;AACZ,IAAA,KAAA,MAAW,UAAU,OAAA,EAAS;AAC5B,MAAA,MAAA,CAAO,KAAA,CAAM,CAAA,EAAG,KAAA,EAAO,CAAA,EAAA,EAAK,OAAO,IAAI;AAAA,CAAI,CAAA;AAAA,IAC7C;AAEA,IAAA,MAAM,GAAA,GAAM,MAAM,UAAA,CAAW,OAAA,CAAQ,MAAM,CAAA;AAC3C,IAAA,IAAI,MAAM,CAAA,EAAG;AAEb,IAAA,MAAA,CAAO,MAAM,IAAI,CAAA;AACjB,IAAA,MAAM,EAAE,QAAQ,OAAA,EAAQ,GAAI,MAAM,OAAA,CAAQ,GAAG,EAAE,GAAA,EAAI;AAEnD,IAAA,OAAA,CAAQ,MAAA,CAAO,KAAK,CAAC,CAAA;AAErB,IAAA,IAAI,WAAA,IAAe,MAAA,KAAW,QAAA,IAAY,OAAA,EAAS;AACjD,MAAA,MAASC,GAAA,CAAA,SAAA,CAAU,CAAA,EAAG,WAAW,CAAA,CAAA,EAAI,UAAA,CAAW,OAAA,CAAQ,IAAK,CAAC,CAAA,QAAA,CAAA,EAAY,WAAA,CAAY,OAAO,CAAC,CAAA;AAAA,IAChG;AAAA,EACF;AACF;;;AC/DA,IAAM,SAAA,GAAY,OAAA,CAAQ,aAAA,CAAc,MAAA,CAAA,IAAA,CAAY,GAAG,CAAC,CAAA;AACxD,IAAM,EAAE,OAAA,EAAQ,GAAI,IAAA,CAAK,KAAA,CAAMR,YAAAA,CAAaF,IAAAA,CAAK,SAAA,EAAW,IAAA,EAAM,cAAc,CAAA,EAAG,OAAO,CAAC,CAAA;AAE3F,IAAM,OAAA,GAAU,IAAI,OAAA,EAAQ;AAQ5B,SAAS,aAAA,CAAc,EAAE,OAAA,EAAS,MAAA,EAAQ,cAAa,EAAmB;AACxE,EAAA,MAAM,SAAA,GAAY,OAAA,GAAU,CAAA,GAAI,MAAA,GAAS,CAAA,GAAI,CAAA;AAC7C,EAAA,OAAO,IAAI,QAAQ,IAAI,OAAA,CAAQ,EAAE,SAAA,EAAW,YAAA,EAAc,CAAC,CAAA;AAC7D;AAEA,eAAe,SAAA,GAA6B;AAC1C,EAAA,OAAO,MAAM,IAAI,OAAA,CAAQ,CAAC,OAAA,KAAY;AACpC,IAAA,IAAI,IAAA,GAAO,EAAA;AACX,IAAA,OAAA,CAAQ,KAAA,CAAM,YAAY,MAAM,CAAA;AAEhC,IAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,OAAA,CAAQ,KAAA,CAAM,KAAK,CAAA;AACzC,IAAA,IAAI,KAAA,EAAO;AAET,MAAA,OAAA,CAAQ,MAAM,2FAA2F,CAAA;AAAA,IAC3G;AAEA,IAAA,OAAA,CAAQ,MAAM,EAAA,CAAG,MAAA,EAAQ,CAAC,KAAA,KAAW,QAAQ,KAAM,CAAA;AACnD,IAAA,OAAA,CAAQ,MAAM,EAAA,CAAG,KAAA,EAAO,MAAM,OAAA,CAAQ,IAAI,CAAC,CAAA;AAC3C,IAAA,OAAA,CAAQ,MAAM,MAAA,EAAO;AAAA,EACvB,CAAC,CAAA;AACH;AAEA,OAAA,CAAQ,KAAK,WAAW,CAAA,CAAE,YAAY,yBAAyB,CAAA,CAAE,QAAQ,OAAO,CAAA;AAEhF,OAAA,CACG,QAAQ,MAAM,CAAA,CACd,WAAA,CAAY,yCAAyC,EACrD,MAAA,CAAO,WAAA,EAAa,2BAA2B,CAAA,CAC/C,OAAO,UAAA,EAAY,sCAAsC,CAAA,CACzD,MAAA,CAAO,OAAO,IAAA,KAA2C;AACxD,EAAA,MAAM,IAAA,CAAK,EAAE,GAAA,EAAK,IAAA,CAAK,KAAK,KAAA,EAAO,IAAA,CAAK,GAAA,KAAQ,KAAA,EAAO,CAAA;AACzD,CAAC,CAAA;AAEH,OAAA,CACG,OAAA,CAAQ,SAAS,CAAA,CACjB,QAAA,CAAS,UAAA,EAAY,uBAAuB,CAAA,CAC5C,MAAA,CAAO,eAAA,EAAiB,wBAAA,EAA0B,KAAK,CAAA,CACvD,OAAO,cAAA,EAAgB,oBAAA,EAAsB,KAAK,CAAA,CAClD,MAAA,CAAO,mBAAA,EAAqB,4BAAA,EAA8B,EAAE,CAAA,CAC5D,MAAA,CAAO,OAAO,MAAA,EAAgB,IAAA,KAA8D;AAC3F,EAAA,MAAM,OAAA,GAAU,cAAc,EAAE,GAAG,MAAM,YAAA,EAAc,IAAA,CAAK,MAAM,CAAA;AAElE,EAAA,MAAM,EAAE,MAAA,EAAO,GAAI,MAAM,OAAA,CAAQ,MAAA,EAAQ,EAAE,QAAA,EAAU,KAAA,EAAO,OAAA,EAAQ,EAAG,OAAO,MAAM,OAAA,KAAY;AAC9F,IAAA,OAAA,CAAQ,KAAK,UAAA,EAAW;AACxB,IAAA,MAAM,UAAA,CAAW,IAAA,EAAM,OAAA,EAAS,IAAA,CAAK,IAAI,CAAA;AAAA,EAC3C,CAAC,CAAA;AAED,EAAA,OAAA,CAAQ,IAAA,CAAK,MAAA,KAAW,QAAA,GAAW,CAAA,GAAI,CAAC,CAAA;AAC1C,CAAC,CAAA;AAEH,OAAA,CACG,OAAA,CAAQ,UAAU,CAAA,CAClB,QAAA,CAAS,UAAA,EAAY,uBAAuB,CAAA,CAC5C,MAAA,CAAO,eAAA,EAAiB,wBAAA,EAA0B,KAAK,CAAA,CACvD,OAAO,cAAA,EAAgB,oBAAA,EAAsB,KAAK,CAAA,CAClD,MAAA,CAAO,mBAAA,EAAqB,4BAAA,EAA8B,EAAE,CAAA,CAC5D,MAAA,CAAO,OAAO,MAAA,EAAgB,IAAA,KAA8D;AAC3F,EAAA,MAAM,YAAA,GAAA,CAAgB,MAAM,SAAA,EAAU,EAAG,IAAA,EAAK;AAE9C,EAAA,IAAI,CAAC,YAAA,EAAc;AACjB,IAAA,OAAA,CAAQ,MAAM,0BAA0B,CAAA;AACxC,IAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,EAChB;AAEA,EAAA,MAAM,OAAA,GAAU,cAAc,EAAE,GAAG,MAAM,YAAA,EAAc,IAAA,CAAK,MAAM,CAAA;AAElE,EAAA,MAAM,OAAA,CAAQ,KAAK,4BAA4B,CAAA;AAC/C,EAAA,MAAM,UAAA,GAAa,MAAM,gBAAA,CAAiB,YAAY,CAAA;AAEtD,EAAA,MAAM,EAAE,OAAA,EAAS,MAAA,EAAO,GAAI,MAAM,QAAA,CAAS,MAAA,EAAQ,UAAA,EAAY,EAAE,QAAA,EAAU,KAAA,EAAO,OAAA,EAAS,CAAA;AAE3F,EAAA,IAAI,IAAA,CAAK,QAAQ,OAAA,EAAS;AACxB,IAAA,MAAMU,YAAAA,CAAG,SAAA,CAAU,CAAA,EAAG,IAAA,CAAK,IAAI,CAAA,CAAA,EAAIC,UAAAA,CAAW,OAAA,CAAQ,IAAK,CAAC,CAAA,QAAA,CAAA,EAAYC,WAAAA,CAAY,OAAO,CAAC,CAAA;AAAA,EAC9F;AAEA,EAAA,OAAA,CAAQ,IAAA,CAAK,MAAA,KAAW,QAAA,GAAW,CAAA,GAAI,CAAC,CAAA;AAC1C,CAAC,CAAA;AAEH,OAAA,CACG,OAAA,CAAQ,UAAU,CAAA,CAClB,QAAA,CAAS,UAAA,EAAY,uBAAuB,CAAA,CAC5C,MAAA,CAAO,eAAA,EAAiB,wBAAA,EAA0B,KAAK,CAAA,CACvD,OAAO,cAAA,EAAgB,oBAAA,EAAsB,KAAK,CAAA,CAClD,MAAA,CAAO,mBAAA,EAAqB,4BAAA,EAA8B,EAAE,CAAA,CAC5D,MAAA,CAAO,OAAO,MAAA,EAAgB,IAAA,KAA8D;AAC3F,EAAA,MAAM,OAAA,GAAU,cAAc,EAAE,GAAG,MAAM,YAAA,EAAc,IAAA,CAAK,MAAM,CAAA;AAElE,EAAA,MAAM,UAAA,GAAa;AAAA,IACjB,IAAA,EAAM,8BAAA;AAAA,IACN,WAAA,EAAa;AAAA,MACX,uEAAA;AAAA,MACA;AAAA,KACF,CAAE,KAAK,IAAI,CAAA;AAAA,IACX,QAAA,EAAU;AAAA,MACR,+EAAA;AAAA,MACA;AAAA,KACF,CAAE,KAAK,IAAI;AAAA,GACb;AAEA,EAAA,MAAM,KAAA,GAAQ,UAAA,CAAW,UAAA,EAAY,CAAA;AAErC,EAAA,MAAM,EAAE,OAAA,EAAS,MAAA,EAAO,GAAI,MAAM,SAAS,MAAA,EAAQ,UAAA,EAAY,EAAE,QAAA,EAAU,OAAO,OAAA,EAAS,QAAA,EAAU,EAAE,KAAA,IAAS,CAAA;AAEhH,EAAA,IAAI,IAAA,CAAK,QAAQ,OAAA,EAAS;AACxB,IAAA,MAAMF,YAAAA,CAAG,SAAA,CAAU,CAAA,EAAG,IAAA,CAAK,IAAI,CAAA,CAAA,EAAIC,UAAAA,CAAW,OAAA,CAAQ,IAAK,CAAC,CAAA,QAAA,CAAA,EAAYC,WAAAA,CAAY,OAAO,CAAC,CAAA;AAAA,EAC9F;AAEA,EAAA,OAAA,CAAQ,IAAA,CAAK,MAAA,KAAW,QAAA,GAAW,CAAA,GAAI,CAAC,CAAA;AAC1C,CAAC,CAAA;AAEH,OAAA,CACG,OAAA,CAAQ,KAAK,CAAA,CACb,QAAA,CAAS,UAAA,EAAY,uBAAuB,CAAA,CAC5C,QAAA,CAAS,WAAA,EAAa,sBAAsB,CAAA,CAC5C,MAAA,CAAO,iBAAiB,wBAAA,EAA0B,KAAK,CAAA,CACvD,MAAA,CAAO,cAAA,EAAgB,oBAAA,EAAsB,KAAK,CAAA,CAClD,MAAA,CAAO,OAAO,MAAA,EAAgB,WAAA,EAAqB,IAAA,KAAgD;AAClG,EAAA,MAAM,OAAA,GAAU,MAAMF,YAAAA,CAAG,QAAA,CAAS,aAAa,OAAO,CAAA;AACtD,EAAA,MAAM,GAAA,CAAI,MAAA,EAAQ,OAAA,EAAS,EAAE,QAAA,EAAU,OAAO,OAAA,EAAS,aAAA,CAAc,IAAI,CAAA,EAAG,CAAA;AAC9E,CAAC,CAAA;AAEH,OAAA,CACG,QAAQ,SAAS,CAAA,CACjB,WAAA,CAAY,gDAAgD,EAC5D,MAAA,CAAO,aAAA,EAAe,6BAA6B,CAAA,CACnD,OAAO,oBAAA,EAAsB,uCAAuC,CAAA,CACpE,MAAA,CAAO,OAAO,IAAA,KAA8C;AAC3D,EAAA,MAAM,WAAW,IAAI,CAAA;AACvB,CAAC,CAAA;AAEH,OAAA,CAAQ,KAAA,EAAM","file":"index.js","sourcesContent":["'use strict';\n\nconst ESC = '\\x1B';\nconst CSI = `${ESC}[`;\nconst beep = '\\u0007';\n\nconst cursor = {\n to(x, y) {\n if (!y) return `${CSI}${x + 1}G`;\n return `${CSI}${y + 1};${x + 1}H`;\n },\n move(x, y) {\n let ret = '';\n\n if (x < 0) ret += `${CSI}${-x}D`;\n else if (x > 0) ret += `${CSI}${x}C`;\n\n if (y < 0) ret += `${CSI}${-y}A`;\n else if (y > 0) ret += `${CSI}${y}B`;\n\n return ret;\n },\n up: (count = 1) => `${CSI}${count}A`,\n down: (count = 1) => `${CSI}${count}B`,\n forward: (count = 1) => `${CSI}${count}C`,\n backward: (count = 1) => `${CSI}${count}D`,\n nextLine: (count = 1) => `${CSI}E`.repeat(count),\n prevLine: (count = 1) => `${CSI}F`.repeat(count),\n left: `${CSI}G`,\n hide: `${CSI}?25l`,\n show: `${CSI}?25h`,\n save: `${ESC}7`,\n restore: `${ESC}8`\n}\n\nconst scroll = {\n up: (count = 1) => `${CSI}S`.repeat(count),\n down: (count = 1) => `${CSI}T`.repeat(count)\n}\n\nconst erase = {\n screen: `${CSI}2J`,\n up: (count = 1) => `${CSI}1J`.repeat(count),\n down: (count = 1) => `${CSI}J`.repeat(count),\n line: `${CSI}2K`,\n lineEnd: `${CSI}K`,\n lineStart: `${CSI}1K`,\n lines(count) {\n let clear = '';\n for (let i = 0; i < count; i++)\n clear += this.line + (i < count - 1 ? cursor.up() : '');\n if (count)\n clear += cursor.left;\n return clear;\n }\n}\n\nmodule.exports = { cursor, scroll, erase, beep };\n","let p = process || {}, argv = p.argv || [], env = p.env || {}\nlet isColorSupported =\n\t!(!!env.NO_COLOR || argv.includes(\"--no-color\")) &&\n\t(!!env.FORCE_COLOR || argv.includes(\"--color\") || p.platform === \"win32\" || ((p.stdout || {}).isTTY && env.TERM !== \"dumb\") || !!env.CI)\n\nlet formatter = (open, close, replace = open) =>\n\tinput => {\n\t\tlet string = \"\" + input, index = string.indexOf(close, open.length)\n\t\treturn ~index ? open + replaceClose(string, close, replace, index) + close : open + string + close\n\t}\n\nlet replaceClose = (string, close, replace, index) => {\n\tlet result = \"\", cursor = 0\n\tdo {\n\t\tresult += string.substring(cursor, index) + replace\n\t\tcursor = index + close.length\n\t\tindex = string.indexOf(close, cursor)\n\t} while (~index)\n\treturn result + string.substring(cursor)\n}\n\nlet createColors = (enabled = isColorSupported) => {\n\tlet f = enabled ? formatter : () => String\n\treturn {\n\t\tisColorSupported: enabled,\n\t\treset: f(\"\\x1b[0m\", \"\\x1b[0m\"),\n\t\tbold: f(\"\\x1b[1m\", \"\\x1b[22m\", \"\\x1b[22m\\x1b[1m\"),\n\t\tdim: f(\"\\x1b[2m\", \"\\x1b[22m\", \"\\x1b[22m\\x1b[2m\"),\n\t\titalic: f(\"\\x1b[3m\", \"\\x1b[23m\"),\n\t\tunderline: f(\"\\x1b[4m\", \"\\x1b[24m\"),\n\t\tinverse: f(\"\\x1b[7m\", \"\\x1b[27m\"),\n\t\thidden: f(\"\\x1b[8m\", \"\\x1b[28m\"),\n\t\tstrikethrough: f(\"\\x1b[9m\", \"\\x1b[29m\"),\n\n\t\tblack: f(\"\\x1b[30m\", \"\\x1b[39m\"),\n\t\tred: f(\"\\x1b[31m\", \"\\x1b[39m\"),\n\t\tgreen: f(\"\\x1b[32m\", \"\\x1b[39m\"),\n\t\tyellow: f(\"\\x1b[33m\", \"\\x1b[39m\"),\n\t\tblue: f(\"\\x1b[34m\", \"\\x1b[39m\"),\n\t\tmagenta: f(\"\\x1b[35m\", \"\\x1b[39m\"),\n\t\tcyan: f(\"\\x1b[36m\", \"\\x1b[39m\"),\n\t\twhite: f(\"\\x1b[37m\", \"\\x1b[39m\"),\n\t\tgray: f(\"\\x1b[90m\", \"\\x1b[39m\"),\n\n\t\tbgBlack: f(\"\\x1b[40m\", \"\\x1b[49m\"),\n\t\tbgRed: f(\"\\x1b[41m\", \"\\x1b[49m\"),\n\t\tbgGreen: f(\"\\x1b[42m\", \"\\x1b[49m\"),\n\t\tbgYellow: f(\"\\x1b[43m\", \"\\x1b[49m\"),\n\t\tbgBlue: f(\"\\x1b[44m\", \"\\x1b[49m\"),\n\t\tbgMagenta: f(\"\\x1b[45m\", \"\\x1b[49m\"),\n\t\tbgCyan: f(\"\\x1b[46m\", \"\\x1b[49m\"),\n\t\tbgWhite: f(\"\\x1b[47m\", \"\\x1b[49m\"),\n\n\t\tblackBright: f(\"\\x1b[90m\", \"\\x1b[39m\"),\n\t\tredBright: f(\"\\x1b[91m\", \"\\x1b[39m\"),\n\t\tgreenBright: f(\"\\x1b[92m\", \"\\x1b[39m\"),\n\t\tyellowBright: f(\"\\x1b[93m\", \"\\x1b[39m\"),\n\t\tblueBright: f(\"\\x1b[94m\", \"\\x1b[39m\"),\n\t\tmagentaBright: f(\"\\x1b[95m\", \"\\x1b[39m\"),\n\t\tcyanBright: f(\"\\x1b[96m\", \"\\x1b[39m\"),\n\t\twhiteBright: f(\"\\x1b[97m\", \"\\x1b[39m\"),\n\n\t\tbgBlackBright: f(\"\\x1b[100m\", \"\\x1b[49m\"),\n\t\tbgRedBright: f(\"\\x1b[101m\", \"\\x1b[49m\"),\n\t\tbgGreenBright: f(\"\\x1b[102m\", \"\\x1b[49m\"),\n\t\tbgYellowBright: f(\"\\x1b[103m\", \"\\x1b[49m\"),\n\t\tbgBlueBright: f(\"\\x1b[104m\", \"\\x1b[49m\"),\n\t\tbgMagentaBright: f(\"\\x1b[105m\", \"\\x1b[49m\"),\n\t\tbgCyanBright: f(\"\\x1b[106m\", \"\\x1b[49m\"),\n\t\tbgWhiteBright: f(\"\\x1b[107m\", \"\\x1b[49m\"),\n\t}\n}\n\nmodule.exports = createColors()\nmodule.exports.createColors = createColors\n","export default function ansiRegex({onlyFirst = false} = {}) {\n\t// Valid string terminator sequences are BEL, ESC\\, and 0x9c\n\tconst ST = '(?:\\\\u0007|\\\\u001B\\\\u005C|\\\\u009C)';\n\tconst pattern = [\n\t\t`[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?${ST})`,\n\t\t'(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-nq-uy=><~]))',\n\t].join('|');\n\n\treturn new RegExp(pattern, onlyFirst ? undefined : 'g');\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","var eaw = {};\n\nif ('undefined' == typeof module) {\n window.eastasianwidth = eaw;\n} else {\n module.exports = eaw;\n}\n\neaw.eastAsianWidth = function(character) {\n var x = character.charCodeAt(0);\n var y = (character.length == 2) ? character.charCodeAt(1) : 0;\n var codePoint = x;\n if ((0xD800 <= x && x <= 0xDBFF) && (0xDC00 <= y && y <= 0xDFFF)) {\n x &= 0x3FF;\n y &= 0x3FF;\n codePoint = (x << 10) | y;\n codePoint += 0x10000;\n }\n\n if ((0x3000 == codePoint) ||\n (0xFF01 <= codePoint && codePoint <= 0xFF60) ||\n (0xFFE0 <= codePoint && codePoint <= 0xFFE6)) {\n return 'F';\n }\n if ((0x20A9 == codePoint) ||\n (0xFF61 <= codePoint && codePoint <= 0xFFBE) ||\n (0xFFC2 <= codePoint && codePoint <= 0xFFC7) ||\n (0xFFCA <= codePoint && codePoint <= 0xFFCF) ||\n (0xFFD2 <= codePoint && codePoint <= 0xFFD7) ||\n (0xFFDA <= codePoint && codePoint <= 0xFFDC) ||\n (0xFFE8 <= codePoint && codePoint <= 0xFFEE)) {\n return 'H';\n }\n if ((0x1100 <= codePoint && codePoint <= 0x115F) ||\n (0x11A3 <= codePoint && codePoint <= 0x11A7) ||\n (0x11FA <= codePoint && codePoint <= 0x11FF) ||\n (0x2329 <= codePoint && codePoint <= 0x232A) ||\n (0x2E80 <= codePoint && codePoint <= 0x2E99) ||\n (0x2E9B <= codePoint && codePoint <= 0x2EF3) ||\n (0x2F00 <= codePoint && codePoint <= 0x2FD5) ||\n (0x2FF0 <= codePoint && codePoint <= 0x2FFB) ||\n (0x3001 <= codePoint && codePoint <= 0x303E) ||\n (0x3041 <= codePoint && codePoint <= 0x3096) ||\n (0x3099 <= codePoint && codePoint <= 0x30FF) ||\n (0x3105 <= codePoint && codePoint <= 0x312D) ||\n (0x3131 <= codePoint && codePoint <= 0x318E) ||\n (0x3190 <= codePoint && codePoint <= 0x31BA) ||\n (0x31C0 <= codePoint && codePoint <= 0x31E3) ||\n (0x31F0 <= codePoint && codePoint <= 0x321E) ||\n (0x3220 <= codePoint && codePoint <= 0x3247) ||\n (0x3250 <= codePoint && codePoint <= 0x32FE) ||\n (0x3300 <= codePoint && codePoint <= 0x4DBF) ||\n (0x4E00 <= codePoint && codePoint <= 0xA48C) ||\n (0xA490 <= codePoint && codePoint <= 0xA4C6) ||\n (0xA960 <= codePoint && codePoint <= 0xA97C) ||\n (0xAC00 <= codePoint && codePoint <= 0xD7A3) ||\n (0xD7B0 <= codePoint && codePoint <= 0xD7C6) ||\n (0xD7CB <= codePoint && codePoint <= 0xD7FB) ||\n (0xF900 <= codePoint && codePoint <= 0xFAFF) ||\n (0xFE10 <= codePoint && codePoint <= 0xFE19) ||\n (0xFE30 <= codePoint && codePoint <= 0xFE52) ||\n (0xFE54 <= codePoint && codePoint <= 0xFE66) ||\n (0xFE68 <= codePoint && codePoint <= 0xFE6B) ||\n (0x1B000 <= codePoint && codePoint <= 0x1B001) ||\n (0x1F200 <= codePoint && codePoint <= 0x1F202) ||\n (0x1F210 <= codePoint && codePoint <= 0x1F23A) ||\n (0x1F240 <= codePoint && codePoint <= 0x1F248) ||\n (0x1F250 <= codePoint && codePoint <= 0x1F251) ||\n (0x20000 <= codePoint && codePoint <= 0x2F73F) ||\n (0x2B740 <= codePoint && codePoint <= 0x2FFFD) ||\n (0x30000 <= codePoint && codePoint <= 0x3FFFD)) {\n return 'W';\n }\n if ((0x0020 <= codePoint && codePoint <= 0x007E) ||\n (0x00A2 <= codePoint && codePoint <= 0x00A3) ||\n (0x00A5 <= codePoint && codePoint <= 0x00A6) ||\n (0x00AC == codePoint) ||\n (0x00AF == codePoint) ||\n (0x27E6 <= codePoint && codePoint <= 0x27ED) ||\n (0x2985 <= codePoint && codePoint <= 0x2986)) {\n return 'Na';\n }\n if ((0x00A1 == codePoint) ||\n (0x00A4 == codePoint) ||\n (0x00A7 <= codePoint && codePoint <= 0x00A8) ||\n (0x00AA == codePoint) ||\n (0x00AD <= codePoint && codePoint <= 0x00AE) ||\n (0x00B0 <= codePoint && codePoint <= 0x00B4) ||\n (0x00B6 <= codePoint && codePoint <= 0x00BA) ||\n (0x00BC <= codePoint && codePoint <= 0x00BF) ||\n (0x00C6 == codePoint) ||\n (0x00D0 == codePoint) ||\n (0x00D7 <= codePoint && codePoint <= 0x00D8) ||\n (0x00DE <= codePoint && codePoint <= 0x00E1) ||\n (0x00E6 == codePoint) ||\n (0x00E8 <= codePoint && codePoint <= 0x00EA) ||\n (0x00EC <= codePoint && codePoint <= 0x00ED) ||\n (0x00F0 == codePoint) ||\n (0x00F2 <= codePoint && codePoint <= 0x00F3) ||\n (0x00F7 <= codePoint && codePoint <= 0x00FA) ||\n (0x00FC == codePoint) ||\n (0x00FE == codePoint) ||\n (0x0101 == codePoint) ||\n (0x0111 == codePoint) ||\n (0x0113 == codePoint) ||\n (0x011B == codePoint) ||\n (0x0126 <= codePoint && codePoint <= 0x0127) ||\n (0x012B == codePoint) ||\n (0x0131 <= codePoint && codePoint <= 0x0133) ||\n (0x0138 == codePoint) ||\n (0x013F <= codePoint && codePoint <= 0x0142) ||\n (0x0144 == codePoint) ||\n (0x0148 <= codePoint && codePoint <= 0x014B) ||\n (0x014D == codePoint) ||\n (0x0152 <= codePoint && codePoint <= 0x0153) ||\n (0x0166 <= codePoint && codePoint <= 0x0167) ||\n (0x016B == codePoint) ||\n (0x01CE == codePoint) ||\n (0x01D0 == codePoint) ||\n (0x01D2 == codePoint) ||\n (0x01D4 == codePoint) ||\n (0x01D6 == codePoint) ||\n (0x01D8 == codePoint) ||\n (0x01DA == codePoint) ||\n (0x01DC == codePoint) ||\n (0x0251 == codePoint) ||\n (0x0261 == codePoint) ||\n (0x02C4 == codePoint) ||\n (0x02C7 == codePoint) ||\n (0x02C9 <= codePoint && codePoint <= 0x02CB) ||\n (0x02CD == codePoint) ||\n (0x02D0 == codePoint) ||\n (0x02D8 <= codePoint && codePoint <= 0x02DB) ||\n (0x02DD == codePoint) ||\n (0x02DF == codePoint) ||\n (0x0300 <= codePoint && codePoint <= 0x036F) ||\n (0x0391 <= codePoint && codePoint <= 0x03A1) ||\n (0x03A3 <= codePoint && codePoint <= 0x03A9) ||\n (0x03B1 <= codePoint && codePoint <= 0x03C1) ||\n (0x03C3 <= codePoint && codePoint <= 0x03C9) ||\n (0x0401 == codePoint) ||\n (0x0410 <= codePoint && codePoint <= 0x044F) ||\n (0x0451 == codePoint) ||\n (0x2010 == codePoint) ||\n (0x2013 <= codePoint && codePoint <= 0x2016) ||\n (0x2018 <= codePoint && codePoint <= 0x2019) ||\n (0x201C <= codePoint && codePoint <= 0x201D) ||\n (0x2020 <= codePoint && codePoint <= 0x2022) ||\n (0x2024 <= codePoint && codePoint <= 0x2027) ||\n (0x2030 == codePoint) ||\n (0x2032 <= codePoint && codePoint <= 0x2033) ||\n (0x2035 == codePoint) ||\n (0x203B == codePoint) ||\n (0x203E == codePoint) ||\n (0x2074 == codePoint) ||\n (0x207F == codePoint) ||\n (0x2081 <= codePoint && codePoint <= 0x2084) ||\n (0x20AC == codePoint) ||\n (0x2103 == codePoint) ||\n (0x2105 == codePoint) ||\n (0x2109 == codePoint) ||\n (0x2113 == codePoint) ||\n (0x2116 == codePoint) ||\n (0x2121 <= codePoint && codePoint <= 0x2122) ||\n (0x2126 == codePoint) ||\n (0x212B == codePoint) ||\n (0x2153 <= codePoint && codePoint <= 0x2154) ||\n (0x215B <= codePoint && codePoint <= 0x215E) ||\n (0x2160 <= codePoint && codePoint <= 0x216B) ||\n (0x2170 <= codePoint && codePoint <= 0x2179) ||\n (0x2189 == codePoint) ||\n (0x2190 <= codePoint && codePoint <= 0x2199) ||\n (0x21B8 <= codePoint && codePoint <= 0x21B9) ||\n (0x21D2 == codePoint) ||\n (0x21D4 == codePoint) ||\n (0x21E7 == codePoint) ||\n (0x2200 == codePoint) ||\n (0x2202 <= codePoint && codePoint <= 0x2203) ||\n (0x2207 <= codePoint && codePoint <= 0x2208) ||\n (0x220B == codePoint) ||\n (0x220F == codePoint) ||\n (0x2211 == codePoint) ||\n (0x2215 == codePoint) ||\n (0x221A == codePoint) ||\n (0x221D <= codePoint && codePoint <= 0x2220) ||\n (0x2223 == codePoint) ||\n (0x2225 == codePoint) ||\n (0x2227 <= codePoint && codePoint <= 0x222C) ||\n (0x222E == codePoint) ||\n (0x2234 <= codePoint && codePoint <= 0x2237) ||\n (0x223C <= codePoint && codePoint <= 0x223D) ||\n (0x2248 == codePoint) ||\n (0x224C == codePoint) ||\n (0x2252 == codePoint) ||\n (0x2260 <= codePoint && codePoint <= 0x2261) ||\n (0x2264 <= codePoint && codePoint <= 0x2267) ||\n (0x226A <= codePoint && codePoint <= 0x226B) ||\n (0x226E <= codePoint && codePoint <= 0x226F) ||\n (0x2282 <= codePoint && codePoint <= 0x2283) ||\n (0x2286 <= codePoint && codePoint <= 0x2287) ||\n (0x2295 == codePoint) ||\n (0x2299 == codePoint) ||\n (0x22A5 == codePoint) ||\n (0x22BF == codePoint) ||\n (0x2312 == codePoint) ||\n (0x2460 <= codePoint && codePoint <= 0x24E9) ||\n (0x24EB <= codePoint && codePoint <= 0x254B) ||\n (0x2550 <= codePoint && codePoint <= 0x2573) ||\n (0x2580 <= codePoint && codePoint <= 0x258F) ||\n (0x2592 <= codePoint && codePoint <= 0x2595) ||\n (0x25A0 <= codePoint && codePoint <= 0x25A1) ||\n (0x25A3 <= codePoint && codePoint <= 0x25A9) ||\n (0x25B2 <= codePoint && codePoint <= 0x25B3) ||\n (0x25B6 <= codePoint && codePoint <= 0x25B7) ||\n (0x25BC <= codePoint && codePoint <= 0x25BD) ||\n (0x25C0 <= codePoint && codePoint <= 0x25C1) ||\n (0x25C6 <= codePoint && codePoint <= 0x25C8) ||\n (0x25CB == codePoint) ||\n (0x25CE <= codePoint && codePoint <= 0x25D1) ||\n (0x25E2 <= codePoint && codePoint <= 0x25E5) ||\n (0x25EF == codePoint) ||\n (0x2605 <= codePoint && codePoint <= 0x2606) ||\n (0x2609 == codePoint) ||\n (0x260E <= codePoint && codePoint <= 0x260F) ||\n (0x2614 <= codePoint && codePoint <= 0x2615) ||\n (0x261C == codePoint) ||\n (0x261E == codePoint) ||\n (0x2640 == codePoint) ||\n (0x2642 == codePoint) ||\n (0x2660 <= codePoint && codePoint <= 0x2661) ||\n (0x2663 <= codePoint && codePoint <= 0x2665) ||\n (0x2667 <= codePoint && codePoint <= 0x266A) ||\n (0x266C <= codePoint && codePoint <= 0x266D) ||\n (0x266F == codePoint) ||\n (0x269E <= codePoint && codePoint <= 0x269F) ||\n (0x26BE <= codePoint && codePoint <= 0x26BF) ||\n (0x26C4 <= codePoint && codePoint <= 0x26CD) ||\n (0x26CF <= codePoint && codePoint <= 0x26E1) ||\n (0x26E3 == codePoint) ||\n (0x26E8 <= codePoint && codePoint <= 0x26FF) ||\n (0x273D == codePoint) ||\n (0x2757 == codePoint) ||\n (0x2776 <= codePoint && codePoint <= 0x277F) ||\n (0x2B55 <= codePoint && codePoint <= 0x2B59) ||\n (0x3248 <= codePoint && codePoint <= 0x324F) ||\n (0xE000 <= codePoint && codePoint <= 0xF8FF) ||\n (0xFE00 <= codePoint && codePoint <= 0xFE0F) ||\n (0xFFFD == codePoint) ||\n (0x1F100 <= codePoint && codePoint <= 0x1F10A) ||\n (0x1F110 <= codePoint && codePoint <= 0x1F12D) ||\n (0x1F130 <= codePoint && codePoint <= 0x1F169) ||\n (0x1F170 <= codePoint && codePoint <= 0x1F19A) ||\n (0xE0100 <= codePoint && codePoint <= 0xE01EF) ||\n (0xF0000 <= codePoint && codePoint <= 0xFFFFD) ||\n (0x100000 <= codePoint && codePoint <= 0x10FFFD)) {\n return 'A';\n }\n\n return 'N';\n};\n\neaw.characterLength = function(character) {\n var code = this.eastAsianWidth(character);\n if (code == 'F' || code == 'W' || code == 'A') {\n return 2;\n } else {\n return 1;\n }\n};\n\n// Split a string considering surrogate-pairs.\nfunction stringToArray(string) {\n return string.match(/[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[^\\uD800-\\uDFFF]/g) || [];\n}\n\neaw.length = function(string) {\n var characters = stringToArray(string);\n var len = 0;\n for (var i = 0; i < characters.length; i++) {\n len = len + this.characterLength(characters[i]);\n }\n return len;\n};\n\neaw.slice = function(text, start, end) {\n textLen = eaw.length(text)\n start = start ? start : 0;\n end = end ? end : 1;\n if (start < 0) {\n start = textLen + start;\n }\n if (end < 0) {\n end = textLen + end;\n }\n var result = '';\n var eawLen = 0;\n var chars = stringToArray(text);\n for (var i = 0; i < chars.length; i++) {\n var char = chars[i];\n var charLen = eaw.length(char);\n if (eawLen >= start - (charLen == 2 ? 1 : 0)) {\n if (eawLen + charLen <= end) {\n result += char;\n } else {\n break;\n }\n }\n eawLen += charLen;\n }\n return result;\n};\n","\"use strict\";\n\nmodule.exports = function () {\n // https://mths.be/emoji\n return /\\uD83C\\uDFF4\\uDB40\\uDC67\\uDB40\\uDC62(?:\\uDB40\\uDC77\\uDB40\\uDC6C\\uDB40\\uDC73|\\uDB40\\uDC73\\uDB40\\uDC63\\uDB40\\uDC74|\\uDB40\\uDC65\\uDB40\\uDC6E\\uDB40\\uDC67)\\uDB40\\uDC7F|(?:\\uD83E\\uDDD1\\uD83C\\uDFFF\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFF\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB-\\uDFFE])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFE\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFE\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFD\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFD\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFC\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFC\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFB\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFB\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFC-\\uDFFF])|\\uD83D\\uDC68(?:\\uD83C\\uDFFB(?:\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFF]))|\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFC-\\uDFFF])|[\\u2695\\u2696\\u2708]\\uFE0F|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]))?|(?:\\uD83C[\\uDFFC-\\uDFFF])\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFF]))|\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83D\\uDC68|(?:\\uD83D[\\uDC68\\uDC69])\\u200D(?:\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67]))|\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFE])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFE\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFC\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|(?:\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708]|\\u200D[\\u2695\\u2696\\u2708])\\uFE0F|\\u200D(?:(?:\\uD83D[\\uDC68\\uDC69])\\u200D(?:\\uD83D[\\uDC66\\uDC67])|\\uD83D[\\uDC66\\uDC67])|\\uD83C\\uDFFF|\\uD83C\\uDFFE|\\uD83C\\uDFFD|\\uD83C\\uDFFC)?|(?:\\uD83D\\uDC69(?:\\uD83C\\uDFFB\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D(?:\\uD83D[\\uDC68\\uDC69])|\\uD83D[\\uDC68\\uDC69])|(?:\\uD83C[\\uDFFC-\\uDFFF])\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D(?:\\uD83D[\\uDC68\\uDC69])|\\uD83D[\\uDC68\\uDC69]))|\\uD83E\\uDDD1(?:\\uD83C[\\uDFFB-\\uDFFF])\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1)(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D(?:\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67]))|\\uD83D\\uDC69(?:\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D(?:\\uD83D[\\uDC68\\uDC69])|\\uD83D[\\uDC68\\uDC69])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFE\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFC\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFB\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]))|\\uD83E\\uDDD1(?:\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFE\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFC\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFB\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]))|\\uD83D\\uDC69\\u200D\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D(?:\\uD83D[\\uDC66\\uDC67])|\\uD83D\\uDC69\\u200D\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|(?:\\uD83D\\uDC41\\uFE0F\\u200D\\uD83D\\uDDE8|\\uD83E\\uDDD1(?:\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFB\\u200D[\\u2695\\u2696\\u2708]|\\u200D[\\u2695\\u2696\\u2708])|\\uD83D\\uDC69(?:\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFB\\u200D[\\u2695\\u2696\\u2708]|\\u200D[\\u2695\\u2696\\u2708])|\\uD83D\\uDE36\\u200D\\uD83C\\uDF2B|\\uD83C\\uDFF3\\uFE0F\\u200D\\u26A7|\\uD83D\\uDC3B\\u200D\\u2744|(?:(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD4\\uDDD6-\\uDDDD])(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83D\\uDC6F|\\uD83E[\\uDD3C\\uDDDE\\uDDDF])\\u200D[\\u2640\\u2642]|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])\\u200D[\\u2640\\u2642]|\\uD83C\\uDFF4\\u200D\\u2620|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD4\\uDDD6-\\uDDDD])\\u200D[\\u2640\\u2642]|[\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u2328\\u23CF\\u23ED-\\u23EF\\u23F1\\u23F2\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB\\u25FC\\u2600-\\u2604\\u260E\\u2611\\u2618\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u2692\\u2694-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A7\\u26B0\\u26B1\\u26C8\\u26CF\\u26D1\\u26D3\\u26E9\\u26F0\\u26F1\\u26F4\\u26F7\\u26F8\\u2702\\u2708\\u2709\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2733\\u2734\\u2744\\u2747\\u2763\\u27A1\\u2934\\u2935\\u2B05-\\u2B07\\u3030\\u303D\\u3297\\u3299]|\\uD83C[\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDE02\\uDE37\\uDF21\\uDF24-\\uDF2C\\uDF36\\uDF7D\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E\\uDF9F\\uDFCD\\uDFCE\\uDFD4-\\uDFDF\\uDFF5\\uDFF7]|\\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|\\uD83C\\uDFF3\\uFE0F\\u200D\\uD83C\\uDF08|\\uD83D\\uDC69\\u200D\\uD83D\\uDC67|\\uD83D\\uDC69\\u200D\\uD83D\\uDC66|\\uD83D\\uDE35\\u200D\\uD83D\\uDCAB|\\uD83D\\uDE2E\\u200D\\uD83D\\uDCA8|\\uD83D\\uDC15\\u200D\\uD83E\\uDDBA|\\uD83E\\uDDD1(?:\\uD83C\\uDFFF|\\uD83C\\uDFFE|\\uD83C\\uDFFD|\\uD83C\\uDFFC|\\uD83C\\uDFFB)?|\\uD83D\\uDC69(?:\\uD83C\\uDFFF|\\uD83C\\uDFFE|\\uD83C\\uDFFD|\\uD83C\\uDFFC|\\uD83C\\uDFFB)?|\\uD83C\\uDDFD\\uD83C\\uDDF0|\\uD83C\\uDDF6\\uD83C\\uDDE6|\\uD83C\\uDDF4\\uD83C\\uDDF2|\\uD83D\\uDC08\\u200D\\u2B1B|\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDD25|\\uD83E\\uDE79)|\\uD83D\\uDC41\\uFE0F|\\uD83C\\uDFF3\\uFE0F|\\uD83C\\uDDFF(?:\\uD83C[\\uDDE6\\uDDF2\\uDDFC])|\\uD83C\\uDDFE(?:\\uD83C[\\uDDEA\\uDDF9])|\\uD83C\\uDDFC(?:\\uD83C[\\uDDEB\\uDDF8])|\\uD83C\\uDDFB(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDEE\\uDDF3\\uDDFA])|\\uD83C\\uDDFA(?:\\uD83C[\\uDDE6\\uDDEC\\uDDF2\\uDDF3\\uDDF8\\uDDFE\\uDDFF])|\\uD83C\\uDDF9(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDED\\uDDEF-\\uDDF4\\uDDF7\\uDDF9\\uDDFB\\uDDFC\\uDDFF])|\\uD83C\\uDDF8(?:\\uD83C[\\uDDE6-\\uDDEA\\uDDEC-\\uDDF4\\uDDF7-\\uDDF9\\uDDFB\\uDDFD-\\uDDFF])|\\uD83C\\uDDF7(?:\\uD83C[\\uDDEA\\uDDF4\\uDDF8\\uDDFA\\uDDFC])|\\uD83C\\uDDF5(?:\\uD83C[\\uDDE6\\uDDEA-\\uDDED\\uDDF0-\\uDDF3\\uDDF7-\\uDDF9\\uDDFC\\uDDFE])|\\uD83C\\uDDF3(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA-\\uDDEC\\uDDEE\\uDDF1\\uDDF4\\uDDF5\\uDDF7\\uDDFA\\uDDFF])|\\uD83C\\uDDF2(?:\\uD83C[\\uDDE6\\uDDE8-\\uDDED\\uDDF0-\\uDDFF])|\\uD83C\\uDDF1(?:\\uD83C[\\uDDE6-\\uDDE8\\uDDEE\\uDDF0\\uDDF7-\\uDDFB\\uDDFE])|\\uD83C\\uDDF0(?:\\uD83C[\\uDDEA\\uDDEC-\\uDDEE\\uDDF2\\uDDF3\\uDDF5\\uDDF7\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDEF(?:\\uD83C[\\uDDEA\\uDDF2\\uDDF4\\uDDF5])|\\uD83C\\uDDEE(?:\\uD83C[\\uDDE8-\\uDDEA\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9])|\\uD83C\\uDDED(?:\\uD83C[\\uDDF0\\uDDF2\\uDDF3\\uDDF7\\uDDF9\\uDDFA])|\\uD83C\\uDDEC(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEE\\uDDF1-\\uDDF3\\uDDF5-\\uDDFA\\uDDFC\\uDDFE])|\\uD83C\\uDDEB(?:\\uD83C[\\uDDEE-\\uDDF0\\uDDF2\\uDDF4\\uDDF7])|\\uD83C\\uDDEA(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDED\\uDDF7-\\uDDFA])|\\uD83C\\uDDE9(?:\\uD83C[\\uDDEA\\uDDEC\\uDDEF\\uDDF0\\uDDF2\\uDDF4\\uDDFF])|\\uD83C\\uDDE8(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDEE\\uDDF0-\\uDDF5\\uDDF7\\uDDFA-\\uDDFF])|\\uD83C\\uDDE7(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEF\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9\\uDDFB\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDE6(?:\\uD83C[\\uDDE8-\\uDDEC\\uDDEE\\uDDF1\\uDDF2\\uDDF4\\uDDF6-\\uDDFA\\uDDFC\\uDDFD\\uDDFF])|[#\\*0-9]\\uFE0F\\u20E3|\\u2764\\uFE0F|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD4\\uDDD6-\\uDDDD])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])|\\uD83C\\uDFF4|(?:[\\u270A\\u270B]|\\uD83C[\\uDF85\\uDFC2\\uDFC7]|\\uD83D[\\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]|\\uD83E[\\uDD0C\\uDD0F\\uDD18-\\uDD1C\\uDD1E\\uDD1F\\uDD30-\\uDD34\\uDD36\\uDD77\\uDDB5\\uDDB6\\uDDBB\\uDDD2\\uDDD3\\uDDD5])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:[\\u261D\\u270C\\u270D]|\\uD83D[\\uDD74\\uDD90])(?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])|[\\u270A\\u270B]|\\uD83C[\\uDF85\\uDFC2\\uDFC7]|\\uD83D[\\uDC08\\uDC15\\uDC3B\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDC8F\\uDC91\\uDCAA\\uDD7A\\uDD95\\uDD96\\uDE2E\\uDE35\\uDE36\\uDE4C\\uDE4F\\uDEC0\\uDECC]|\\uD83E[\\uDD0C\\uDD0F\\uDD18-\\uDD1C\\uDD1E\\uDD1F\\uDD30-\\uDD34\\uDD36\\uDD77\\uDDB5\\uDDB6\\uDDBB\\uDDD2\\uDDD3\\uDDD5]|\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD4\\uDDD6-\\uDDDD]|\\uD83D\\uDC6F|\\uD83E[\\uDD3C\\uDDDE\\uDDDF]|[\\u231A\\u231B\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u25FE\\u2614\\u2615\\u2648-\\u2653\\u267F\\u2693\\u26A1\\u26AA\\u26AB\\u26BD\\u26BE\\u26C4\\u26C5\\u26CE\\u26D4\\u26EA\\u26F2\\u26F3\\u26F5\\u26FA\\u26FD\\u2705\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2795-\\u2797\\u27B0\\u27BF\\u2B1B\\u2B1C\\u2B50\\u2B55]|\\uD83C[\\uDC04\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF7C\\uDF7E-\\uDF84\\uDF86-\\uDF93\\uDFA0-\\uDFC1\\uDFC5\\uDFC6\\uDFC8\\uDFC9\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF8-\\uDFFF]|\\uD83D[\\uDC00-\\uDC07\\uDC09-\\uDC14\\uDC16-\\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-\\uDE44\\uDE48-\\uDE4A\\uDE80-\\uDEA2\\uDEA4-\\uDEB3\\uDEB7-\\uDEBF\\uDEC1-\\uDEC5\\uDED0-\\uDED2\\uDED5-\\uDED7\\uDEEB\\uDEEC\\uDEF4-\\uDEFC\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0D\\uDD0E\\uDD10-\\uDD17\\uDD1D\\uDD20-\\uDD25\\uDD27-\\uDD2F\\uDD3A\\uDD3F-\\uDD45\\uDD47-\\uDD76\\uDD78\\uDD7A-\\uDDB4\\uDDB7\\uDDBA\\uDDBC-\\uDDCB\\uDDD0\\uDDE0-\\uDDFF\\uDE70-\\uDE74\\uDE78-\\uDE7A\\uDE80-\\uDE86\\uDE90-\\uDEA8\\uDEB0-\\uDEB6\\uDEC0-\\uDEC2\\uDED0-\\uDED6]|(?:[\\u231A\\u231B\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u25FE\\u2614\\u2615\\u2648-\\u2653\\u267F\\u2693\\u26A1\\u26AA\\u26AB\\u26BD\\u26BE\\u26C4\\u26C5\\u26CE\\u26D4\\u26EA\\u26F2\\u26F3\\u26F5\\u26FA\\u26FD\\u2705\\u270A\\u270B\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2795-\\u2797\\u27B0\\u27BF\\u2B1B\\u2B1C\\u2B50\\u2B55]|\\uD83C[\\uDC04\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF7C\\uDF7E-\\uDF93\\uDFA0-\\uDFCA\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF4\\uDFF8-\\uDFFF]|\\uD83D[\\uDC00-\\uDC3E\\uDC40\\uDC42-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDD7A\\uDD95\\uDD96\\uDDA4\\uDDFB-\\uDE4F\\uDE80-\\uDEC5\\uDECC\\uDED0-\\uDED2\\uDED5-\\uDED7\\uDEEB\\uDEEC\\uDEF4-\\uDEFC\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0C-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD78\\uDD7A-\\uDDCB\\uDDCD-\\uDDFF\\uDE70-\\uDE74\\uDE78-\\uDE7A\\uDE80-\\uDE86\\uDE90-\\uDEA8\\uDEB0-\\uDEB6\\uDEC0-\\uDEC2\\uDED0-\\uDED6])|(?:[#\\*0-9\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u23CF\\u23E9-\\u23F3\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB-\\u25FE\\u2600-\\u2604\\u260E\\u2611\\u2614\\u2615\\u2618\\u261D\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u2648-\\u2653\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u267F\\u2692-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A1\\u26A7\\u26AA\\u26AB\\u26B0\\u26B1\\u26BD\\u26BE\\u26C4\\u26C5\\u26C8\\u26CE\\u26CF\\u26D1\\u26D3\\u26D4\\u26E9\\u26EA\\u26F0-\\u26F5\\u26F7-\\u26FA\\u26FD\\u2702\\u2705\\u2708-\\u270D\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2728\\u2733\\u2734\\u2744\\u2747\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2763\\u2764\\u2795-\\u2797\\u27A1\\u27B0\\u27BF\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B50\\u2B55\\u3030\\u303D\\u3297\\u3299]|\\uD83C[\\uDC04\\uDCCF\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE02\\uDE1A\\uDE2F\\uDE32-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF21\\uDF24-\\uDF93\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E-\\uDFF0\\uDFF3-\\uDFF5\\uDFF7-\\uDFFF]|\\uD83D[\\uDC00-\\uDCFD\\uDCFF-\\uDD3D\\uDD49-\\uDD4E\\uDD50-\\uDD67\\uDD6F\\uDD70\\uDD73-\\uDD7A\\uDD87\\uDD8A-\\uDD8D\\uDD90\\uDD95\\uDD96\\uDDA4\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA-\\uDE4F\\uDE80-\\uDEC5\\uDECB-\\uDED2\\uDED5-\\uDED7\\uDEE0-\\uDEE5\\uDEE9\\uDEEB\\uDEEC\\uDEF0\\uDEF3-\\uDEFC\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0C-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD78\\uDD7A-\\uDDCB\\uDDCD-\\uDDFF\\uDE70-\\uDE74\\uDE78-\\uDE7A\\uDE80-\\uDE86\\uDE90-\\uDEA8\\uDEB0-\\uDEB6\\uDEC0-\\uDEC2\\uDED0-\\uDED6])\\uFE0F|(?:[\\u261D\\u26F9\\u270A-\\u270D]|\\uD83C[\\uDF85\\uDFC2-\\uDFC4\\uDFC7\\uDFCA-\\uDFCC]|\\uD83D[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66-\\uDC78\\uDC7C\\uDC81-\\uDC83\\uDC85-\\uDC87\\uDC8F\\uDC91\\uDCAA\\uDD74\\uDD75\\uDD7A\\uDD90\\uDD95\\uDD96\\uDE45-\\uDE47\\uDE4B-\\uDE4F\\uDEA3\\uDEB4-\\uDEB6\\uDEC0\\uDECC]|\\uD83E[\\uDD0C\\uDD0F\\uDD18-\\uDD1F\\uDD26\\uDD30-\\uDD39\\uDD3C-\\uDD3E\\uDD77\\uDDB5\\uDDB6\\uDDB8\\uDDB9\\uDDBB\\uDDCD-\\uDDCF\\uDDD1-\\uDDDD])/g;\n};\n","import stripAnsi from 'strip-ansi';\nimport eastAsianWidth from 'eastasianwidth';\nimport emojiRegex from 'emoji-regex';\n\nexport default function stringWidth(string, options = {}) {\n\tif (typeof string !== 'string' || string.length === 0) {\n\t\treturn 0;\n\t}\n\n\toptions = {\n\t\tambiguousIsNarrow: true,\n\t\t...options\n\t};\n\n\tstring = stripAnsi(string);\n\n\tif (string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tstring = string.replace(emojiRegex(), ' ');\n\n\tconst ambiguousCharacterWidth = options.ambiguousIsNarrow ? 1 : 2;\n\tlet width = 0;\n\n\tfor (const character of 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 >= 0x300 && codePoint <= 0x36F) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst code = eastAsianWidth.eastAsianWidth(character);\n\t\tswitch (code) {\n\t\t\tcase 'F':\n\t\t\tcase 'W':\n\t\t\t\twidth += 2;\n\t\t\t\tbreak;\n\t\t\tcase 'A':\n\t\t\t\twidth += ambiguousCharacterWidth;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\twidth += 1;\n\t\t}\n\t}\n\n\treturn width;\n}\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 stringWidth from 'string-width';\nimport stripAnsi from 'strip-ansi';\nimport ansiStyles from 'ansi-styles';\n\nconst ESCAPES = new Set([\n\t'\\u001B',\n\t'\\u009B',\n]);\n\nconst END_CODE = 39;\nconst ANSI_ESCAPE_BELL = '\\u0007';\nconst ANSI_CSI = '[';\nconst ANSI_OSC = ']';\nconst ANSI_SGR_TERMINATOR = 'm';\nconst ANSI_ESCAPE_LINK = `${ANSI_OSC}8;;`;\n\nconst wrapAnsiCode = code => `${ESCAPES.values().next().value}${ANSI_CSI}${code}${ANSI_SGR_TERMINATOR}`;\nconst wrapAnsiHyperlink = uri => `${ESCAPES.values().next().value}${ANSI_ESCAPE_LINK}${uri}${ANSI_ESCAPE_BELL}`;\n\n// Calculate the length of words split on ' ', ignoring\n// the extra characters added by ansi escape codes\nconst wordLengths = string => string.split(' ').map(character => stringWidth(character));\n\n// Wrap a long word across multiple rows\n// Ansi escape codes do not count towards length\nconst wrapWord = (rows, word, columns) => {\n\tconst characters = [...word];\n\n\tlet isInsideEscape = false;\n\tlet isInsideLinkEscape = false;\n\tlet visible = stringWidth(stripAnsi(rows[rows.length - 1]));\n\n\tfor (const [index, character] of characters.entries()) {\n\t\tconst characterLength = stringWidth(character);\n\n\t\tif (visible + characterLength <= columns) {\n\t\t\trows[rows.length - 1] += character;\n\t\t} else {\n\t\t\trows.push(character);\n\t\t\tvisible = 0;\n\t\t}\n\n\t\tif (ESCAPES.has(character)) {\n\t\t\tisInsideEscape = true;\n\t\t\tisInsideLinkEscape = characters.slice(index + 1).join('').startsWith(ANSI_ESCAPE_LINK);\n\t\t}\n\n\t\tif (isInsideEscape) {\n\t\t\tif (isInsideLinkEscape) {\n\t\t\t\tif (character === ANSI_ESCAPE_BELL) {\n\t\t\t\t\tisInsideEscape = false;\n\t\t\t\t\tisInsideLinkEscape = false;\n\t\t\t\t}\n\t\t\t} else if (character === ANSI_SGR_TERMINATOR) {\n\t\t\t\tisInsideEscape = false;\n\t\t\t}\n\n\t\t\tcontinue;\n\t\t}\n\n\t\tvisible += characterLength;\n\n\t\tif (visible === columns && index < characters.length - 1) {\n\t\t\trows.push('');\n\t\t\tvisible = 0;\n\t\t}\n\t}\n\n\t// It's possible that the last row we copy over is only\n\t// ansi escape characters, handle this edge-case\n\tif (!visible && rows[rows.length - 1].length > 0 && rows.length > 1) {\n\t\trows[rows.length - 2] += rows.pop();\n\t}\n};\n\n// Trims spaces from a string ignoring invisible sequences\nconst stringVisibleTrimSpacesRight = string => {\n\tconst words = string.split(' ');\n\tlet last = words.length;\n\n\twhile (last > 0) {\n\t\tif (stringWidth(words[last - 1]) > 0) {\n\t\t\tbreak;\n\t\t}\n\n\t\tlast--;\n\t}\n\n\tif (last === words.length) {\n\t\treturn string;\n\t}\n\n\treturn words.slice(0, last).join(' ') + words.slice(last).join('');\n};\n\n// The wrap-ansi module can be invoked in either 'hard' or 'soft' wrap mode\n//\n// 'hard' will never allow a string to take up more than columns characters\n//\n// 'soft' allows long words to expand past the column length\nconst exec = (string, columns, options = {}) => {\n\tif (options.trim !== false && string.trim() === '') {\n\t\treturn '';\n\t}\n\n\tlet returnValue = '';\n\tlet escapeCode;\n\tlet escapeUrl;\n\n\tconst lengths = wordLengths(string);\n\tlet rows = [''];\n\n\tfor (const [index, word] of string.split(' ').entries()) {\n\t\tif (options.trim !== false) {\n\t\t\trows[rows.length - 1] = rows[rows.length - 1].trimStart();\n\t\t}\n\n\t\tlet rowLength = stringWidth(rows[rows.length - 1]);\n\n\t\tif (index !== 0) {\n\t\t\tif (rowLength >= columns && (options.wordWrap === false || options.trim === false)) {\n\t\t\t\t// If we start with a new word but the current row length equals the length of the columns, add a new row\n\t\t\t\trows.push('');\n\t\t\t\trowLength = 0;\n\t\t\t}\n\n\t\t\tif (rowLength > 0 || options.trim === false) {\n\t\t\t\trows[rows.length - 1] += ' ';\n\t\t\t\trowLength++;\n\t\t\t}\n\t\t}\n\n\t\t// In 'hard' wrap mode, the length of a line is never allowed to extend past 'columns'\n\t\tif (options.hard && lengths[index] > columns) {\n\t\t\tconst remainingColumns = (columns - rowLength);\n\t\t\tconst breaksStartingThisLine = 1 + Math.floor((lengths[index] - remainingColumns - 1) / columns);\n\t\t\tconst breaksStartingNextLine = Math.floor((lengths[index] - 1) / columns);\n\t\t\tif (breaksStartingNextLine < breaksStartingThisLine) {\n\t\t\t\trows.push('');\n\t\t\t}\n\n\t\t\twrapWord(rows, word, columns);\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (rowLength + lengths[index] > columns && rowLength > 0 && lengths[index] > 0) {\n\t\t\tif (options.wordWrap === false && rowLength < columns) {\n\t\t\t\twrapWord(rows, word, columns);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\trows.push('');\n\t\t}\n\n\t\tif (rowLength + lengths[index] > columns && options.wordWrap === false) {\n\t\t\twrapWord(rows, word, columns);\n\t\t\tcontinue;\n\t\t}\n\n\t\trows[rows.length - 1] += word;\n\t}\n\n\tif (options.trim !== false) {\n\t\trows = rows.map(row => stringVisibleTrimSpacesRight(row));\n\t}\n\n\tconst pre = [...rows.join('\\n')];\n\n\tfor (const [index, character] of pre.entries()) {\n\t\treturnValue += character;\n\n\t\tif (ESCAPES.has(character)) {\n\t\t\tconst {groups} = new RegExp(`(?:\\\\${ANSI_CSI}(?<code>\\\\d+)m|\\\\${ANSI_ESCAPE_LINK}(?<uri>.*)${ANSI_ESCAPE_BELL})`).exec(pre.slice(index).join('')) || {groups: {}};\n\t\t\tif (groups.code !== undefined) {\n\t\t\t\tconst code = Number.parseFloat(groups.code);\n\t\t\t\tescapeCode = code === END_CODE ? undefined : code;\n\t\t\t} else if (groups.uri !== undefined) {\n\t\t\t\tescapeUrl = groups.uri.length === 0 ? undefined : groups.uri;\n\t\t\t}\n\t\t}\n\n\t\tconst code = ansiStyles.codes.get(Number(escapeCode));\n\n\t\tif (pre[index + 1] === '\\n') {\n\t\t\tif (escapeUrl) {\n\t\t\t\treturnValue += wrapAnsiHyperlink('');\n\t\t\t}\n\n\t\t\tif (escapeCode && code) {\n\t\t\t\treturnValue += wrapAnsiCode(code);\n\t\t\t}\n\t\t} else if (character === '\\n') {\n\t\t\tif (escapeCode && code) {\n\t\t\t\treturnValue += wrapAnsiCode(escapeCode);\n\t\t\t}\n\n\t\t\tif (escapeUrl) {\n\t\t\t\treturnValue += wrapAnsiHyperlink(escapeUrl);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn returnValue;\n};\n\n// For each newline, invoke the method separately\nexport default function wrapAnsi(string, columns, options) {\n\treturn String(string)\n\t\t.normalize()\n\t\t.replace(/\\r\\n/g, '\\n')\n\t\t.split('\\n')\n\t\t.map(line => exec(line, columns, options))\n\t\t.join('\\n');\n}\n","const actions = ['up', 'down', 'left', 'right', 'space', 'enter', 'cancel'] as const;\nexport type Action = (typeof actions)[number];\n\n/** Global settings for Clack programs, stored in memory */\ninterface InternalClackSettings {\n\tactions: Set<Action>;\n\taliases: Map<string, Action>;\n}\n\nexport const settings: InternalClackSettings = {\n\tactions: new Set(actions),\n\taliases: new Map<string, Action>([\n\t\t// vim support\n\t\t['k', 'up'],\n\t\t['j', 'down'],\n\t\t['h', 'left'],\n\t\t['l', 'right'],\n\t\t['\\x03', 'cancel'],\n\t\t// opinionated defaults!\n\t\t['escape', 'cancel'],\n\t]),\n};\n\nexport interface ClackSettings {\n\t/**\n\t * Set custom global aliases for the default actions.\n\t * This will not overwrite existing aliases, it will only add new ones!\n\t *\n\t * @param aliases - An object that maps aliases to actions\n\t * @default { k: 'up', j: 'down', h: 'left', l: 'right', '\\x03': 'cancel', 'escape': 'cancel' }\n\t */\n\taliases: Record<string, Action>;\n}\n\nexport function updateSettings(updates: ClackSettings) {\n\tfor (const _key in updates) {\n\t\tconst key = _key as keyof ClackSettings;\n\t\tif (!Object.hasOwn(updates, key)) continue;\n\t\tconst value = updates[key];\n\n\t\tswitch (key) {\n\t\t\tcase 'aliases': {\n\t\t\t\tfor (const alias in value) {\n\t\t\t\t\tif (!Object.hasOwn(value, alias)) continue;\n\t\t\t\t\tif (!settings.aliases.has(alias)) {\n\t\t\t\t\t\tsettings.aliases.set(alias, value[alias]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Check if a key is an alias for a default action\n * @param key - The raw key which might match to an action\n * @param action - The action to match\n * @returns boolean\n */\nexport function isActionKey(key: string | Array<string | undefined>, action: Action) {\n\tif (typeof key === 'string') {\n\t\treturn settings.aliases.get(key) === action;\n\t}\n\n\tfor (const value of key) {\n\t\tif (value === undefined) continue;\n\t\tif (isActionKey(value, action)) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n","export function diffLines(a: string, b: string) {\n\tif (a === b) return;\n\n\tconst aLines = a.split('\\n');\n\tconst bLines = b.split('\\n');\n\tconst diff: number[] = [];\n\n\tfor (let i = 0; i < Math.max(aLines.length, bLines.length); i++) {\n\t\tif (aLines[i] !== bLines[i]) diff.push(i);\n\t}\n\n\treturn diff;\n}\n","import { stdin, stdout } from 'node:process';\nimport type { Key } from 'node:readline';\nimport * as readline from 'node:readline';\nimport type { Readable } from 'node:stream';\nimport { cursor } from 'sisteransi';\nimport { isActionKey } from './settings';\n\nexport * from './string';\nexport * from './settings';\n\nconst isWindows = globalThis.process.platform.startsWith('win');\n\nexport const CANCEL_SYMBOL = Symbol('clack:cancel');\n\nexport function isCancel(value: unknown): value is symbol {\n\treturn value === CANCEL_SYMBOL;\n}\n\nexport function setRawMode(input: Readable, value: boolean) {\n\tconst i = input as typeof stdin;\n\n\tif (i.isTTY) i.setRawMode(value);\n}\n\nexport function block({\n\tinput = stdin,\n\toutput = stdout,\n\toverwrite = true,\n\thideCursor = true,\n} = {}) {\n\tconst rl = readline.createInterface({\n\t\tinput,\n\t\toutput,\n\t\tprompt: '',\n\t\ttabSize: 1,\n\t});\n\treadline.emitKeypressEvents(input, rl);\n\tif (input.isTTY) input.setRawMode(true);\n\n\tconst clear = (data: Buffer, { name, sequence }: Key) => {\n\t\tconst str = String(data);\n\t\tif (isActionKey([str, name, sequence], 'cancel')) {\n\t\t\tif (hideCursor) output.write(cursor.show);\n\t\t\tprocess.exit(0);\n\t\t\treturn;\n\t\t}\n\t\tif (!overwrite) return;\n\t\tconst dx = name === 'return' ? 0 : -1;\n\t\tconst dy = name === 'return' ? -1 : 0;\n\n\t\treadline.moveCursor(output, dx, dy, () => {\n\t\t\treadline.clearLine(output, 1, () => {\n\t\t\t\tinput.once('keypress', clear);\n\t\t\t});\n\t\t});\n\t};\n\tif (hideCursor) output.write(cursor.hide);\n\tinput.once('keypress', clear);\n\n\treturn () => {\n\t\tinput.off('keypress', clear);\n\t\tif (hideCursor) output.write(cursor.show);\n\n\t\t// Prevent Windows specific issues: https://github.com/bombshell-dev/clack/issues/176\n\t\tif (input.isTTY && !isWindows) input.setRawMode(false);\n\n\t\t// @ts-expect-error fix for https://github.com/nodejs/node/issues/31762#issuecomment-1441223907\n\t\trl.terminal = false;\n\t\trl.close();\n\t};\n}\n","import { stdin, stdout } from 'node:process';\nimport readline, { type Key, type ReadLine } from 'node:readline';\nimport type { Readable } from 'node:stream';\nimport { Writable } from 'node:stream';\nimport { cursor, erase } from 'sisteransi';\nimport wrap from 'wrap-ansi';\n\nimport { CANCEL_SYMBOL, diffLines, isActionKey, setRawMode, settings } from '../utils';\n\nimport type { ClackEvents, ClackState } from '../types';\nimport type { Action } from '../utils';\n\nexport interface PromptOptions<Self extends Prompt> {\n\trender(this: Omit<Self, 'prompt'>): string | undefined;\n\tplaceholder?: string;\n\tinitialValue?: any;\n\tvalidate?: ((value: any) => string | Error | undefined) | undefined;\n\tinput?: Readable;\n\toutput?: Writable;\n\tdebug?: boolean;\n\tsignal?: AbortSignal;\n}\n\nexport default class Prompt {\n\tprotected input: Readable;\n\tprotected output: Writable;\n\tprivate _abortSignal?: AbortSignal;\n\n\tprivate rl: ReadLine | undefined;\n\tprivate opts: Omit<PromptOptions<Prompt>, 'render' | 'input' | 'output'>;\n\tprivate _render: (context: Omit<Prompt, 'prompt'>) => string | undefined;\n\tprivate _track = false;\n\tprivate _prevFrame = '';\n\tprivate _subscribers = new Map<string, { cb: (...args: any) => any; once?: boolean }[]>();\n\tprotected _cursor = 0;\n\n\tpublic state: ClackState = 'initial';\n\tpublic error = '';\n\tpublic value: any;\n\n\tconstructor(options: PromptOptions<Prompt>, trackValue = true) {\n\t\tconst { input = stdin, output = stdout, render, signal, ...opts } = options;\n\n\t\tthis.opts = opts;\n\t\tthis.onKeypress = this.onKeypress.bind(this);\n\t\tthis.close = this.close.bind(this);\n\t\tthis.render = this.render.bind(this);\n\t\tthis._render = render.bind(this);\n\t\tthis._track = trackValue;\n\t\tthis._abortSignal = signal;\n\n\t\tthis.input = input;\n\t\tthis.output = output;\n\t}\n\n\t/**\n\t * Unsubscribe all listeners\n\t */\n\tprotected unsubscribe() {\n\t\tthis._subscribers.clear();\n\t}\n\n\t/**\n\t * Set a subscriber with opts\n\t * @param event - The event name\n\t */\n\tprivate setSubscriber<T extends keyof ClackEvents>(\n\t\tevent: T,\n\t\topts: { cb: ClackEvents[T]; once?: boolean }\n\t) {\n\t\tconst params = this._subscribers.get(event) ?? [];\n\t\tparams.push(opts);\n\t\tthis._subscribers.set(event, params);\n\t}\n\n\t/**\n\t * Subscribe to an event\n\t * @param event - The event name\n\t * @param cb - The callback\n\t */\n\tpublic on<T extends keyof ClackEvents>(event: T, cb: ClackEvents[T]) {\n\t\tthis.setSubscriber(event, { cb });\n\t}\n\n\t/**\n\t * Subscribe to an event once\n\t * @param event - The event name\n\t * @param cb - The callback\n\t */\n\tpublic once<T extends keyof ClackEvents>(event: T, cb: ClackEvents[T]) {\n\t\tthis.setSubscriber(event, { cb, once: true });\n\t}\n\n\t/**\n\t * Emit an event with data\n\t * @param event - The event name\n\t * @param data - The data to pass to the callback\n\t */\n\tpublic emit<T extends keyof ClackEvents>(event: T, ...data: Parameters<ClackEvents[T]>) {\n\t\tconst cbs = this._subscribers.get(event) ?? [];\n\t\tconst cleanup: (() => void)[] = [];\n\n\t\tfor (const subscriber of cbs) {\n\t\t\tsubscriber.cb(...data);\n\n\t\t\tif (subscriber.once) {\n\t\t\t\tcleanup.push(() => cbs.splice(cbs.indexOf(subscriber), 1));\n\t\t\t}\n\t\t}\n\n\t\tfor (const cb of cleanup) {\n\t\t\tcb();\n\t\t}\n\t}\n\n\tpublic prompt() {\n\t\treturn new Promise<string | symbol>((resolve, reject) => {\n\t\t\tif (this._abortSignal) {\n\t\t\t\tif (this._abortSignal.aborted) {\n\t\t\t\t\tthis.state = 'cancel';\n\n\t\t\t\t\tthis.close();\n\t\t\t\t\treturn resolve(CANCEL_SYMBOL);\n\t\t\t\t}\n\n\t\t\t\tthis._abortSignal.addEventListener(\n\t\t\t\t\t'abort',\n\t\t\t\t\t() => {\n\t\t\t\t\t\tthis.state = 'cancel';\n\t\t\t\t\t\tthis.close();\n\t\t\t\t\t},\n\t\t\t\t\t{ once: true }\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst sink = new Writable();\n\t\t\tsink._write = (chunk, encoding, done) => {\n\t\t\t\tif (this._track) {\n\t\t\t\t\tthis.value = this.rl?.line.replace(/\\t/g, '');\n\t\t\t\t\tthis._cursor = this.rl?.cursor ?? 0;\n\t\t\t\t\tthis.emit('value', this.value);\n\t\t\t\t}\n\t\t\t\tdone();\n\t\t\t};\n\t\t\tthis.input.pipe(sink);\n\n\t\t\tthis.rl = readline.createInterface({\n\t\t\t\tinput: this.input,\n\t\t\t\toutput: sink,\n\t\t\t\ttabSize: 2,\n\t\t\t\tprompt: '',\n\t\t\t\tescapeCodeTimeout: 50,\n\t\t\t\tterminal: true,\n\t\t\t});\n\t\t\treadline.emitKeypressEvents(this.input, this.rl);\n\t\t\tthis.rl.prompt();\n\t\t\tif (this.opts.initialValue !== undefined && this._track) {\n\t\t\t\tthis.rl.write(this.opts.initialValue);\n\t\t\t}\n\n\t\t\tthis.input.on('keypress', this.onKeypress);\n\t\t\tsetRawMode(this.input, true);\n\t\t\tthis.output.on('resize', this.render);\n\n\t\t\tthis.render();\n\n\t\t\tthis.once('submit', () => {\n\t\t\t\tthis.output.write(cursor.show);\n\t\t\t\tthis.output.off('resize', this.render);\n\t\t\t\tsetRawMode(this.input, false);\n\t\t\t\tresolve(this.value);\n\t\t\t});\n\t\t\tthis.once('cancel', () => {\n\t\t\t\tthis.output.write(cursor.show);\n\t\t\t\tthis.output.off('resize', this.render);\n\t\t\t\tsetRawMode(this.input, false);\n\t\t\t\tresolve(CANCEL_SYMBOL);\n\t\t\t});\n\t\t});\n\t}\n\n\tprivate onKeypress(char: string, key?: Key) {\n\t\tif (this.state === 'error') {\n\t\t\tthis.state = 'active';\n\t\t}\n\t\tif (key?.name) {\n\t\t\tif (!this._track && settings.aliases.has(key.name)) {\n\t\t\t\tthis.emit('cursor', settings.aliases.get(key.name));\n\t\t\t}\n\t\t\tif (settings.actions.has(key.name as Action)) {\n\t\t\t\tthis.emit('cursor', key.name as Action);\n\t\t\t}\n\t\t}\n\t\tif (char && (char.toLowerCase() === 'y' || char.toLowerCase() === 'n')) {\n\t\t\tthis.emit('confirm', char.toLowerCase() === 'y');\n\t\t}\n\t\tif (char === '\\t' && this.opts.placeholder) {\n\t\t\tif (!this.value) {\n\t\t\t\tthis.rl?.write(this.opts.placeholder);\n\t\t\t\tthis.emit('value', this.opts.placeholder);\n\t\t\t}\n\t\t}\n\t\tif (char) {\n\t\t\tthis.emit('key', char.toLowerCase());\n\t\t}\n\n\t\tif (key?.name === 'return') {\n\t\t\tif (!this.value && this.opts.placeholder) {\n\t\t\t\tthis.rl?.write(this.opts.placeholder);\n\t\t\t\tthis.emit('value', this.opts.placeholder);\n\t\t\t}\n\n\t\t\tif (this.opts.validate) {\n\t\t\t\tconst problem = this.opts.validate(this.value);\n\t\t\t\tif (problem) {\n\t\t\t\t\tthis.error = problem instanceof Error ? problem.message : problem;\n\t\t\t\t\tthis.state = 'error';\n\t\t\t\t\tthis.rl?.write(this.value);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (this.state !== 'error') {\n\t\t\t\tthis.state = 'submit';\n\t\t\t}\n\t\t}\n\n\t\tif (isActionKey([char, key?.name, key?.sequence], 'cancel')) {\n\t\t\tthis.state = 'cancel';\n\t\t}\n\t\tif (this.state === 'submit' || this.state === 'cancel') {\n\t\t\tthis.emit('finalize');\n\t\t}\n\t\tthis.render();\n\t\tif (this.state === 'submit' || this.state === 'cancel') {\n\t\t\tthis.close();\n\t\t}\n\t}\n\n\tprotected close() {\n\t\tthis.input.unpipe();\n\t\tthis.input.removeListener('keypress', this.onKeypress);\n\t\tthis.output.write('\\n');\n\t\tsetRawMode(this.input, false);\n\t\tthis.rl?.close();\n\t\tthis.rl = undefined;\n\t\tthis.emit(`${this.state}`, this.value);\n\t\tthis.unsubscribe();\n\t}\n\n\tprivate restoreCursor() {\n\t\tconst lines =\n\t\t\twrap(this._prevFrame, process.stdout.columns, { hard: true }).split('\\n').length - 1;\n\t\tthis.output.write(cursor.move(-999, lines * -1));\n\t}\n\n\tprivate render() {\n\t\tconst frame = wrap(this._render(this) ?? '', process.stdout.columns, { hard: true });\n\t\tif (frame === this._prevFrame) return;\n\n\t\tif (this.state === 'initial') {\n\t\t\tthis.output.write(cursor.hide);\n\t\t} else {\n\t\t\tconst diff = diffLines(this._prevFrame, frame);\n\t\t\tthis.restoreCursor();\n\t\t\t// If a single line has changed, only update that line\n\t\t\tif (diff && diff?.length === 1) {\n\t\t\t\tconst diffLine = diff[0];\n\t\t\t\tthis.output.write(cursor.move(0, diffLine));\n\t\t\t\tthis.output.write(erase.lines(1));\n\t\t\t\tconst lines = frame.split('\\n');\n\t\t\t\tthis.output.write(lines[diffLine]);\n\t\t\t\tthis._prevFrame = frame;\n\t\t\t\tthis.output.write(cursor.move(0, lines.length - diffLine - 1));\n\t\t\t\treturn;\n\t\t\t\t// If many lines have changed, rerender everything past the first line\n\t\t\t}\n\t\t\tif (diff && diff?.length > 1) {\n\t\t\t\tconst diffLine = diff[0];\n\t\t\t\tthis.output.write(cursor.move(0, diffLine));\n\t\t\t\tthis.output.write(erase.down());\n\t\t\t\tconst lines = frame.split('\\n');\n\t\t\t\tconst newLines = lines.slice(diffLine);\n\t\t\t\tthis.output.write(newLines.join('\\n'));\n\t\t\t\tthis._prevFrame = frame;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.output.write(erase.down());\n\t\t}\n\n\t\tthis.output.write(frame);\n\t\tif (this.state === 'initial') {\n\t\t\tthis.state = 'active';\n\t\t}\n\t\tthis._prevFrame = frame;\n\t}\n}\n","import { cursor } from 'sisteransi';\nimport Prompt, { type PromptOptions } from './prompt';\n\ninterface ConfirmOptions extends PromptOptions<ConfirmPrompt> {\n\tactive: string;\n\tinactive: string;\n\tinitialValue?: boolean;\n}\nexport default class ConfirmPrompt extends Prompt {\n\tget cursor() {\n\t\treturn this.value ? 0 : 1;\n\t}\n\n\tprivate get _value() {\n\t\treturn this.cursor === 0;\n\t}\n\n\tconstructor(opts: ConfirmOptions) {\n\t\tsuper(opts, false);\n\t\tthis.value = !!opts.initialValue;\n\n\t\tthis.on('value', () => {\n\t\t\tthis.value = this._value;\n\t\t});\n\n\t\tthis.on('confirm', (confirm) => {\n\t\t\tthis.output.write(cursor.move(0, -1));\n\t\t\tthis.value = confirm;\n\t\t\tthis.state = 'submit';\n\t\t\tthis.close();\n\t\t});\n\n\t\tthis.on('cursor', () => {\n\t\t\tthis.value = !this.value;\n\t\t});\n\t}\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.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 { stripVTControlCharacters as strip } from 'node:util';\nimport {\n\tConfirmPrompt,\n\tGroupMultiSelectPrompt,\n\tMultiSelectPrompt,\n\tPasswordPrompt,\n\tSelectKeyPrompt,\n\tSelectPrompt,\n\ttype State,\n\tTextPrompt,\n\tblock,\n\tisCancel,\n} from '@clack/core';\nimport isUnicodeSupported from 'is-unicode-supported';\nimport color from 'picocolors';\nimport { cursor, erase } from 'sisteransi';\n\nexport { isCancel } from '@clack/core';\nexport { updateSettings, type ClackSettings } from '@clack/core';\n\nconst unicode = isUnicodeSupported();\nconst s = (c: string, fallback: string) => (unicode ? c : fallback);\nconst S_STEP_ACTIVE = s('◆', '*');\nconst S_STEP_CANCEL = s('■', 'x');\nconst S_STEP_ERROR = s('▲', 'x');\nconst S_STEP_SUBMIT = s('◇', 'o');\n\nconst S_BAR_START = s('┌', 'T');\nconst S_BAR = s('│', '|');\nconst S_BAR_END = s('└', '—');\n\nconst S_RADIO_ACTIVE = s('●', '>');\nconst S_RADIO_INACTIVE = s('○', ' ');\nconst S_CHECKBOX_ACTIVE = s('◻', '[•]');\nconst S_CHECKBOX_SELECTED = s('◼', '[+]');\nconst S_CHECKBOX_INACTIVE = s('◻', '[ ]');\nconst S_PASSWORD_MASK = s('▪', '•');\n\nconst S_BAR_H = s('─', '-');\nconst S_CORNER_TOP_RIGHT = s('╮', '+');\nconst S_CONNECT_LEFT = s('├', '+');\nconst S_CORNER_BOTTOM_RIGHT = s('╯', '+');\n\nconst S_INFO = s('●', '•');\nconst S_SUCCESS = s('◆', '*');\nconst S_WARN = s('▲', '!');\nconst S_ERROR = s('■', 'x');\n\nconst symbol = (state: State) => {\n\tswitch (state) {\n\t\tcase 'initial':\n\t\tcase 'active':\n\t\t\treturn color.cyan(S_STEP_ACTIVE);\n\t\tcase 'cancel':\n\t\t\treturn color.red(S_STEP_CANCEL);\n\t\tcase 'error':\n\t\t\treturn color.yellow(S_STEP_ERROR);\n\t\tcase 'submit':\n\t\t\treturn color.green(S_STEP_SUBMIT);\n\t}\n};\n\ninterface LimitOptionsParams<TOption> {\n\toptions: TOption[];\n\tmaxItems: number | undefined;\n\tcursor: number;\n\tstyle: (option: TOption, active: boolean) => string;\n}\n\nconst limitOptions = <TOption>(params: LimitOptionsParams<TOption>): string[] => {\n\tconst { cursor, options, style } = params;\n\n\tconst paramMaxItems = params.maxItems ?? Number.POSITIVE_INFINITY;\n\tconst outputMaxItems = Math.max(process.stdout.rows - 4, 0);\n\t// We clamp to minimum 5 because anything less doesn't make sense UX wise\n\tconst maxItems = Math.min(outputMaxItems, Math.max(paramMaxItems, 5));\n\tlet slidingWindowLocation = 0;\n\n\tif (cursor >= slidingWindowLocation + maxItems - 3) {\n\t\tslidingWindowLocation = Math.max(Math.min(cursor - maxItems + 3, options.length - maxItems), 0);\n\t} else if (cursor < slidingWindowLocation + 2) {\n\t\tslidingWindowLocation = Math.max(cursor - 2, 0);\n\t}\n\n\tconst shouldRenderTopEllipsis = maxItems < options.length && slidingWindowLocation > 0;\n\tconst shouldRenderBottomEllipsis =\n\t\tmaxItems < options.length && slidingWindowLocation + maxItems < options.length;\n\n\treturn options\n\t\t.slice(slidingWindowLocation, slidingWindowLocation + maxItems)\n\t\t.map((option, i, arr) => {\n\t\t\tconst isTopLimit = i === 0 && shouldRenderTopEllipsis;\n\t\t\tconst isBottomLimit = i === arr.length - 1 && shouldRenderBottomEllipsis;\n\t\t\treturn isTopLimit || isBottomLimit\n\t\t\t\t? color.dim('...')\n\t\t\t\t: style(option, i + slidingWindowLocation === cursor);\n\t\t});\n};\n\nexport interface TextOptions {\n\tmessage: string;\n\tplaceholder?: string;\n\tdefaultValue?: string;\n\tinitialValue?: string;\n\tvalidate?: (value: string) => string | Error | undefined;\n}\nexport const text = (opts: TextOptions) => {\n\treturn new TextPrompt({\n\t\tvalidate: opts.validate,\n\t\tplaceholder: opts.placeholder,\n\t\tdefaultValue: opts.defaultValue,\n\t\tinitialValue: opts.initialValue,\n\t\trender() {\n\t\t\tconst title = `${color.gray(S_BAR)}\\n${symbol(this.state)} ${opts.message}\\n`;\n\t\t\tconst placeholder = opts.placeholder\n\t\t\t\t? color.inverse(opts.placeholder[0]) + color.dim(opts.placeholder.slice(1))\n\t\t\t\t: color.inverse(color.hidden('_'));\n\t\t\tconst value = !this.value ? placeholder : this.valueWithCursor;\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'error':\n\t\t\t\t\treturn `${title.trim()}\\n${color.yellow(S_BAR)} ${value}\\n${color.yellow(\n\t\t\t\t\t\tS_BAR_END\n\t\t\t\t\t)} ${color.yellow(this.error)}\\n`;\n\t\t\t\tcase 'submit':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${color.dim(this.value || opts.placeholder)}`;\n\t\t\t\tcase 'cancel':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${color.strikethrough(\n\t\t\t\t\t\tcolor.dim(this.value ?? '')\n\t\t\t\t\t)}${this.value?.trim() ? `\\n${color.gray(S_BAR)}` : ''}`;\n\t\t\t\tdefault:\n\t\t\t\t\treturn `${title}${color.cyan(S_BAR)} ${value}\\n${color.cyan(S_BAR_END)}\\n`;\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<string | symbol>;\n};\n\nexport interface PasswordOptions {\n\tmessage: string;\n\tmask?: string;\n\tvalidate?: (value: string) => string | Error | undefined;\n}\nexport const password = (opts: PasswordOptions) => {\n\treturn new PasswordPrompt({\n\t\tvalidate: opts.validate,\n\t\tmask: opts.mask ?? S_PASSWORD_MASK,\n\t\trender() {\n\t\t\tconst title = `${color.gray(S_BAR)}\\n${symbol(this.state)} ${opts.message}\\n`;\n\t\t\tconst value = this.valueWithCursor;\n\t\t\tconst masked = this.masked;\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'error':\n\t\t\t\t\treturn `${title.trim()}\\n${color.yellow(S_BAR)} ${masked}\\n${color.yellow(\n\t\t\t\t\t\tS_BAR_END\n\t\t\t\t\t)} ${color.yellow(this.error)}\\n`;\n\t\t\t\tcase 'submit':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${color.dim(masked)}`;\n\t\t\t\tcase 'cancel':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${color.strikethrough(color.dim(masked ?? ''))}${\n\t\t\t\t\t\tmasked ? `\\n${color.gray(S_BAR)}` : ''\n\t\t\t\t\t}`;\n\t\t\t\tdefault:\n\t\t\t\t\treturn `${title}${color.cyan(S_BAR)} ${value}\\n${color.cyan(S_BAR_END)}\\n`;\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<string | symbol>;\n};\n\nexport interface ConfirmOptions {\n\tmessage: string;\n\tactive?: string;\n\tinactive?: string;\n\tinitialValue?: boolean;\n}\nexport const confirm = (opts: ConfirmOptions) => {\n\tconst active = opts.active ?? 'Yes';\n\tconst inactive = opts.inactive ?? 'No';\n\treturn new ConfirmPrompt({\n\t\tactive,\n\t\tinactive,\n\t\tinitialValue: opts.initialValue ?? true,\n\t\trender() {\n\t\t\tconst title = `${color.gray(S_BAR)}\\n${symbol(this.state)} ${opts.message}\\n`;\n\t\t\tconst value = this.value ? active : inactive;\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'submit':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${color.dim(value)}`;\n\t\t\t\tcase 'cancel':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${color.strikethrough(\n\t\t\t\t\t\tcolor.dim(value)\n\t\t\t\t\t)}\\n${color.gray(S_BAR)}`;\n\t\t\t\tdefault: {\n\t\t\t\t\treturn `${title}${color.cyan(S_BAR)} ${\n\t\t\t\t\t\tthis.value\n\t\t\t\t\t\t\t? `${color.green(S_RADIO_ACTIVE)} ${active}`\n\t\t\t\t\t\t\t: `${color.dim(S_RADIO_INACTIVE)} ${color.dim(active)}`\n\t\t\t\t\t} ${color.dim('/')} ${\n\t\t\t\t\t\t!this.value\n\t\t\t\t\t\t\t? `${color.green(S_RADIO_ACTIVE)} ${inactive}`\n\t\t\t\t\t\t\t: `${color.dim(S_RADIO_INACTIVE)} ${color.dim(inactive)}`\n\t\t\t\t\t}\\n${color.cyan(S_BAR_END)}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<boolean | symbol>;\n};\n\ntype Primitive = Readonly<string | boolean | number>;\n\nexport type Option<Value> = Value extends Primitive\n\t? {\n\t\t\t/**\n\t\t\t * Internal data for this option.\n\t\t\t */\n\t\t\tvalue: Value;\n\t\t\t/**\n\t\t\t * The optional, user-facing text for this option.\n\t\t\t *\n\t\t\t * By default, the `value` is converted to a string.\n\t\t\t */\n\t\t\tlabel?: string;\n\t\t\t/**\n\t\t\t * An optional hint to display to the user when\n\t\t\t * this option might be selected.\n\t\t\t *\n\t\t\t * By default, no `hint` is displayed.\n\t\t\t */\n\t\t\thint?: string;\n\t\t}\n\t: {\n\t\t\t/**\n\t\t\t * Internal data for this option.\n\t\t\t */\n\t\t\tvalue: Value;\n\t\t\t/**\n\t\t\t * Required. The user-facing text for this option.\n\t\t\t */\n\t\t\tlabel: string;\n\t\t\t/**\n\t\t\t * An optional hint to display to the user when\n\t\t\t * this option might be selected.\n\t\t\t *\n\t\t\t * By default, no `hint` is displayed.\n\t\t\t */\n\t\t\thint?: string;\n\t\t};\n\nexport interface SelectOptions<Value> {\n\tmessage: string;\n\toptions: Option<Value>[];\n\tinitialValue?: Value;\n\tmaxItems?: number;\n}\n\nexport const select = <Value>(opts: SelectOptions<Value>) => {\n\tconst opt = (option: Option<Value>, state: 'inactive' | 'active' | 'selected' | 'cancelled') => {\n\t\tconst label = option.label ?? String(option.value);\n\t\tswitch (state) {\n\t\t\tcase 'selected':\n\t\t\t\treturn `${color.dim(label)}`;\n\t\t\tcase 'active':\n\t\t\t\treturn `${color.green(S_RADIO_ACTIVE)} ${label} ${\n\t\t\t\t\toption.hint ? color.dim(`(${option.hint})`) : ''\n\t\t\t\t}`;\n\t\t\tcase 'cancelled':\n\t\t\t\treturn `${color.strikethrough(color.dim(label))}`;\n\t\t\tdefault:\n\t\t\t\treturn `${color.dim(S_RADIO_INACTIVE)} ${color.dim(label)}`;\n\t\t}\n\t};\n\n\treturn new SelectPrompt({\n\t\toptions: opts.options,\n\t\tinitialValue: opts.initialValue,\n\t\trender() {\n\t\t\tconst title = `${color.gray(S_BAR)}\\n${symbol(this.state)} ${opts.message}\\n`;\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'submit':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${opt(this.options[this.cursor], 'selected')}`;\n\t\t\t\tcase 'cancel':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${opt(\n\t\t\t\t\t\tthis.options[this.cursor],\n\t\t\t\t\t\t'cancelled'\n\t\t\t\t\t)}\\n${color.gray(S_BAR)}`;\n\t\t\t\tdefault: {\n\t\t\t\t\treturn `${title}${color.cyan(S_BAR)} ${limitOptions({\n\t\t\t\t\t\tcursor: this.cursor,\n\t\t\t\t\t\toptions: this.options,\n\t\t\t\t\t\tmaxItems: opts.maxItems,\n\t\t\t\t\t\tstyle: (item, active) => opt(item, active ? 'active' : 'inactive'),\n\t\t\t\t\t}).join(`\\n${color.cyan(S_BAR)} `)}\\n${color.cyan(S_BAR_END)}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<Value | symbol>;\n};\n\nexport const selectKey = <Value extends string>(opts: SelectOptions<Value>) => {\n\tconst opt = (\n\t\toption: Option<Value>,\n\t\tstate: 'inactive' | 'active' | 'selected' | 'cancelled' = 'inactive'\n\t) => {\n\t\tconst label = option.label ?? String(option.value);\n\t\tif (state === 'selected') {\n\t\t\treturn `${color.dim(label)}`;\n\t\t}\n\t\tif (state === 'cancelled') {\n\t\t\treturn `${color.strikethrough(color.dim(label))}`;\n\t\t}\n\t\tif (state === 'active') {\n\t\t\treturn `${color.bgCyan(color.gray(` ${option.value} `))} ${label} ${\n\t\t\t\toption.hint ? color.dim(`(${option.hint})`) : ''\n\t\t\t}`;\n\t\t}\n\t\treturn `${color.gray(color.bgWhite(color.inverse(` ${option.value} `)))} ${label} ${\n\t\t\toption.hint ? color.dim(`(${option.hint})`) : ''\n\t\t}`;\n\t};\n\n\treturn new SelectKeyPrompt({\n\t\toptions: opts.options,\n\t\tinitialValue: opts.initialValue,\n\t\trender() {\n\t\t\tconst title = `${color.gray(S_BAR)}\\n${symbol(this.state)} ${opts.message}\\n`;\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'submit':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${opt(\n\t\t\t\t\t\tthis.options.find((opt) => opt.value === this.value) ?? opts.options[0],\n\t\t\t\t\t\t'selected'\n\t\t\t\t\t)}`;\n\t\t\t\tcase 'cancel':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${opt(this.options[0], 'cancelled')}\\n${color.gray(\n\t\t\t\t\t\tS_BAR\n\t\t\t\t\t)}`;\n\t\t\t\tdefault: {\n\t\t\t\t\treturn `${title}${color.cyan(S_BAR)} ${this.options\n\t\t\t\t\t\t.map((option, i) => opt(option, i === this.cursor ? 'active' : 'inactive'))\n\t\t\t\t\t\t.join(`\\n${color.cyan(S_BAR)} `)}\\n${color.cyan(S_BAR_END)}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<Value | symbol>;\n};\n\nexport interface MultiSelectOptions<Value> {\n\tmessage: string;\n\toptions: Option<Value>[];\n\tinitialValues?: Value[];\n\tmaxItems?: number;\n\trequired?: boolean;\n\tcursorAt?: Value;\n}\nexport const multiselect = <Value>(opts: MultiSelectOptions<Value>) => {\n\tconst opt = (\n\t\toption: Option<Value>,\n\t\tstate: 'inactive' | 'active' | 'selected' | 'active-selected' | 'submitted' | 'cancelled'\n\t) => {\n\t\tconst label = option.label ?? String(option.value);\n\t\tif (state === 'active') {\n\t\t\treturn `${color.cyan(S_CHECKBOX_ACTIVE)} ${label} ${\n\t\t\t\toption.hint ? color.dim(`(${option.hint})`) : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'selected') {\n\t\t\treturn `${color.green(S_CHECKBOX_SELECTED)} ${color.dim(label)} ${\n\t\t\t\toption.hint ? color.dim(`(${option.hint})`) : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'cancelled') {\n\t\t\treturn `${color.strikethrough(color.dim(label))}`;\n\t\t}\n\t\tif (state === 'active-selected') {\n\t\t\treturn `${color.green(S_CHECKBOX_SELECTED)} ${label} ${\n\t\t\t\toption.hint ? color.dim(`(${option.hint})`) : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'submitted') {\n\t\t\treturn `${color.dim(label)}`;\n\t\t}\n\t\treturn `${color.dim(S_CHECKBOX_INACTIVE)} ${color.dim(label)}`;\n\t};\n\n\treturn new MultiSelectPrompt({\n\t\toptions: opts.options,\n\t\tinitialValues: opts.initialValues,\n\t\trequired: opts.required ?? true,\n\t\tcursorAt: opts.cursorAt,\n\t\tvalidate(selected: Value[]) {\n\t\t\tif (this.required && selected.length === 0)\n\t\t\t\treturn `Please select at least one option.\\n${color.reset(\n\t\t\t\t\tcolor.dim(\n\t\t\t\t\t\t`Press ${color.gray(color.bgWhite(color.inverse(' space ')))} to select, ${color.gray(\n\t\t\t\t\t\t\tcolor.bgWhite(color.inverse(' enter '))\n\t\t\t\t\t\t)} to submit`\n\t\t\t\t\t)\n\t\t\t\t)}`;\n\t\t},\n\t\trender() {\n\t\t\tconst title = `${color.gray(S_BAR)}\\n${symbol(this.state)} ${opts.message}\\n`;\n\n\t\t\tconst styleOption = (option: Option<Value>, active: boolean) => {\n\t\t\t\tconst selected = this.value.includes(option.value);\n\t\t\t\tif (active && selected) {\n\t\t\t\t\treturn opt(option, 'active-selected');\n\t\t\t\t}\n\t\t\t\tif (selected) {\n\t\t\t\t\treturn opt(option, 'selected');\n\t\t\t\t}\n\t\t\t\treturn opt(option, active ? 'active' : 'inactive');\n\t\t\t};\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'submit': {\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${\n\t\t\t\t\t\tthis.options\n\t\t\t\t\t\t\t.filter(({ value }) => this.value.includes(value))\n\t\t\t\t\t\t\t.map((option) => opt(option, 'submitted'))\n\t\t\t\t\t\t\t.join(color.dim(', ')) || color.dim('none')\n\t\t\t\t\t}`;\n\t\t\t\t}\n\t\t\t\tcase 'cancel': {\n\t\t\t\t\tconst label = this.options\n\t\t\t\t\t\t.filter(({ value }) => this.value.includes(value))\n\t\t\t\t\t\t.map((option) => opt(option, 'cancelled'))\n\t\t\t\t\t\t.join(color.dim(', '));\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${\n\t\t\t\t\t\tlabel.trim() ? `${label}\\n${color.gray(S_BAR)}` : ''\n\t\t\t\t\t}`;\n\t\t\t\t}\n\t\t\t\tcase 'error': {\n\t\t\t\t\tconst footer = this.error\n\t\t\t\t\t\t.split('\\n')\n\t\t\t\t\t\t.map((ln, i) =>\n\t\t\t\t\t\t\ti === 0 ? `${color.yellow(S_BAR_END)} ${color.yellow(ln)}` : ` ${ln}`\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.join('\\n');\n\t\t\t\t\treturn `${title + color.yellow(S_BAR)} ${limitOptions({\n\t\t\t\t\t\toptions: this.options,\n\t\t\t\t\t\tcursor: this.cursor,\n\t\t\t\t\t\tmaxItems: opts.maxItems,\n\t\t\t\t\t\tstyle: styleOption,\n\t\t\t\t\t}).join(`\\n${color.yellow(S_BAR)} `)}\\n${footer}\\n`;\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\treturn `${title}${color.cyan(S_BAR)} ${limitOptions({\n\t\t\t\t\t\toptions: this.options,\n\t\t\t\t\t\tcursor: this.cursor,\n\t\t\t\t\t\tmaxItems: opts.maxItems,\n\t\t\t\t\t\tstyle: styleOption,\n\t\t\t\t\t}).join(`\\n${color.cyan(S_BAR)} `)}\\n${color.cyan(S_BAR_END)}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<Value[] | symbol>;\n};\n\nexport interface GroupMultiSelectOptions<Value> {\n\tmessage: string;\n\toptions: Record<string, Option<Value>[]>;\n\tinitialValues?: Value[];\n\trequired?: boolean;\n\tcursorAt?: Value;\n\tselectableGroups?: boolean;\n}\nexport const groupMultiselect = <Value>(opts: GroupMultiSelectOptions<Value>) => {\n\tconst { selectableGroups = true } = opts;\n\tconst opt = (\n\t\toption: Option<Value>,\n\t\tstate:\n\t\t\t| 'inactive'\n\t\t\t| 'active'\n\t\t\t| 'selected'\n\t\t\t| 'active-selected'\n\t\t\t| 'group-active'\n\t\t\t| 'group-active-selected'\n\t\t\t| 'submitted'\n\t\t\t| 'cancelled',\n\t\toptions: Option<Value>[] = []\n\t) => {\n\t\tconst label = option.label ?? String(option.value);\n\t\tconst isItem = typeof (option as any).group === 'string';\n\t\tconst next = isItem && (options[options.indexOf(option) + 1] ?? { group: true });\n\t\tconst isLast = isItem && (next as any).group === true;\n\t\tconst prefix = isItem ? (selectableGroups ? `${isLast ? S_BAR_END : S_BAR} ` : ' ') : '';\n\n\t\tif (state === 'active') {\n\t\t\treturn `${color.dim(prefix)}${color.cyan(S_CHECKBOX_ACTIVE)} ${label} ${\n\t\t\t\toption.hint ? color.dim(`(${option.hint})`) : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'group-active') {\n\t\t\treturn `${prefix}${color.cyan(S_CHECKBOX_ACTIVE)} ${color.dim(label)}`;\n\t\t}\n\t\tif (state === 'group-active-selected') {\n\t\t\treturn `${prefix}${color.green(S_CHECKBOX_SELECTED)} ${color.dim(label)}`;\n\t\t}\n\t\tif (state === 'selected') {\n\t\t\tconst selectedCheckbox = isItem || selectableGroups ? color.green(S_CHECKBOX_SELECTED) : '';\n\t\t\treturn `${color.dim(prefix)}${selectedCheckbox} ${color.dim(label)} ${\n\t\t\t\toption.hint ? color.dim(`(${option.hint})`) : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'cancelled') {\n\t\t\treturn `${color.strikethrough(color.dim(label))}`;\n\t\t}\n\t\tif (state === 'active-selected') {\n\t\t\treturn `${color.dim(prefix)}${color.green(S_CHECKBOX_SELECTED)} ${label} ${\n\t\t\t\toption.hint ? color.dim(`(${option.hint})`) : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'submitted') {\n\t\t\treturn `${color.dim(label)}`;\n\t\t}\n\t\tconst unselectedCheckbox = isItem || selectableGroups ? color.dim(S_CHECKBOX_INACTIVE) : '';\n\t\treturn `${color.dim(prefix)}${unselectedCheckbox} ${color.dim(label)}`;\n\t};\n\n\treturn new GroupMultiSelectPrompt({\n\t\toptions: opts.options,\n\t\tinitialValues: opts.initialValues,\n\t\trequired: opts.required ?? true,\n\t\tcursorAt: opts.cursorAt,\n\t\tselectableGroups,\n\t\tvalidate(selected: Value[]) {\n\t\t\tif (this.required && selected.length === 0)\n\t\t\t\treturn `Please select at least one option.\\n${color.reset(\n\t\t\t\t\tcolor.dim(\n\t\t\t\t\t\t`Press ${color.gray(color.bgWhite(color.inverse(' space ')))} to select, ${color.gray(\n\t\t\t\t\t\t\tcolor.bgWhite(color.inverse(' enter '))\n\t\t\t\t\t\t)} to submit`\n\t\t\t\t\t)\n\t\t\t\t)}`;\n\t\t},\n\t\trender() {\n\t\t\tconst title = `${color.gray(S_BAR)}\\n${symbol(this.state)} ${opts.message}\\n`;\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'submit': {\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${this.options\n\t\t\t\t\t\t.filter(({ value }) => this.value.includes(value))\n\t\t\t\t\t\t.map((option) => opt(option, 'submitted'))\n\t\t\t\t\t\t.join(color.dim(', '))}`;\n\t\t\t\t}\n\t\t\t\tcase 'cancel': {\n\t\t\t\t\tconst label = this.options\n\t\t\t\t\t\t.filter(({ value }) => this.value.includes(value))\n\t\t\t\t\t\t.map((option) => opt(option, 'cancelled'))\n\t\t\t\t\t\t.join(color.dim(', '));\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${\n\t\t\t\t\t\tlabel.trim() ? `${label}\\n${color.gray(S_BAR)}` : ''\n\t\t\t\t\t}`;\n\t\t\t\t}\n\t\t\t\tcase 'error': {\n\t\t\t\t\tconst footer = this.error\n\t\t\t\t\t\t.split('\\n')\n\t\t\t\t\t\t.map((ln, i) =>\n\t\t\t\t\t\t\ti === 0 ? `${color.yellow(S_BAR_END)} ${color.yellow(ln)}` : ` ${ln}`\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.join('\\n');\n\t\t\t\t\treturn `${title}${color.yellow(S_BAR)} ${this.options\n\t\t\t\t\t\t.map((option, i, options) => {\n\t\t\t\t\t\t\tconst selected =\n\t\t\t\t\t\t\t\tthis.value.includes(option.value) ||\n\t\t\t\t\t\t\t\t(option.group === true && this.isGroupSelected(`${option.value}`));\n\t\t\t\t\t\t\tconst active = i === this.cursor;\n\t\t\t\t\t\t\tconst groupActive =\n\t\t\t\t\t\t\t\t!active &&\n\t\t\t\t\t\t\t\ttypeof option.group === 'string' &&\n\t\t\t\t\t\t\t\tthis.options[this.cursor].value === option.group;\n\t\t\t\t\t\t\tif (groupActive) {\n\t\t\t\t\t\t\t\treturn opt(option, selected ? 'group-active-selected' : 'group-active', options);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (active && selected) {\n\t\t\t\t\t\t\t\treturn opt(option, 'active-selected', options);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (selected) {\n\t\t\t\t\t\t\t\treturn opt(option, 'selected', options);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn opt(option, active ? 'active' : 'inactive', options);\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.join(`\\n${color.yellow(S_BAR)} `)}\\n${footer}\\n`;\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\treturn `${title}${color.cyan(S_BAR)} ${this.options\n\t\t\t\t\t\t.map((option, i, options) => {\n\t\t\t\t\t\t\tconst selected =\n\t\t\t\t\t\t\t\tthis.value.includes(option.value) ||\n\t\t\t\t\t\t\t\t(option.group === true && this.isGroupSelected(`${option.value}`));\n\t\t\t\t\t\t\tconst active = i === this.cursor;\n\t\t\t\t\t\t\tconst groupActive =\n\t\t\t\t\t\t\t\t!active &&\n\t\t\t\t\t\t\t\ttypeof option.group === 'string' &&\n\t\t\t\t\t\t\t\tthis.options[this.cursor].value === option.group;\n\t\t\t\t\t\t\tif (groupActive) {\n\t\t\t\t\t\t\t\treturn opt(option, selected ? 'group-active-selected' : 'group-active', options);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (active && selected) {\n\t\t\t\t\t\t\t\treturn opt(option, 'active-selected', options);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (selected) {\n\t\t\t\t\t\t\t\treturn opt(option, 'selected', options);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn opt(option, active ? 'active' : 'inactive', options);\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.join(`\\n${color.cyan(S_BAR)} `)}\\n${color.cyan(S_BAR_END)}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<Value[] | symbol>;\n};\n\nexport const note = (message = '', title = '') => {\n\tconst lines = `\\n${message}\\n`.split('\\n');\n\tconst titleLen = strip(title).length;\n\tconst len =\n\t\tMath.max(\n\t\t\tlines.reduce((sum, ln) => {\n\t\t\t\tconst line = strip(ln);\n\t\t\t\treturn line.length > sum ? line.length : sum;\n\t\t\t}, 0),\n\t\t\ttitleLen\n\t\t) + 2;\n\tconst msg = lines\n\t\t.map(\n\t\t\t(ln) =>\n\t\t\t\t`${color.gray(S_BAR)} ${color.dim(ln)}${' '.repeat(len - strip(ln).length)}${color.gray(\n\t\t\t\t\tS_BAR\n\t\t\t\t)}`\n\t\t)\n\t\t.join('\\n');\n\tprocess.stdout.write(\n\t\t`${color.gray(S_BAR)}\\n${color.green(S_STEP_SUBMIT)} ${color.reset(title)} ${color.gray(\n\t\t\tS_BAR_H.repeat(Math.max(len - titleLen - 1, 1)) + S_CORNER_TOP_RIGHT\n\t\t)}\\n${msg}\\n${color.gray(S_CONNECT_LEFT + S_BAR_H.repeat(len + 2) + S_CORNER_BOTTOM_RIGHT)}\\n`\n\t);\n};\n\nexport const cancel = (message = '') => {\n\tprocess.stdout.write(`${color.gray(S_BAR_END)} ${color.red(message)}\\n\\n`);\n};\n\nexport const intro = (title = '') => {\n\tprocess.stdout.write(`${color.gray(S_BAR_START)} ${title}\\n`);\n};\n\nexport const outro = (message = '') => {\n\tprocess.stdout.write(`${color.gray(S_BAR)}\\n${color.gray(S_BAR_END)} ${message}\\n\\n`);\n};\n\nexport type LogMessageOptions = {\n\tsymbol?: string;\n};\nexport const log = {\n\tmessage: (message = '', { symbol = color.gray(S_BAR) }: LogMessageOptions = {}) => {\n\t\tconst parts = [`${color.gray(S_BAR)}`];\n\t\tif (message) {\n\t\t\tconst [firstLine, ...lines] = message.split('\\n');\n\t\t\tparts.push(`${symbol} ${firstLine}`, ...lines.map((ln) => `${color.gray(S_BAR)} ${ln}`));\n\t\t}\n\t\tprocess.stdout.write(`${parts.join('\\n')}\\n`);\n\t},\n\tinfo: (message: string) => {\n\t\tlog.message(message, { symbol: color.blue(S_INFO) });\n\t},\n\tsuccess: (message: string) => {\n\t\tlog.message(message, { symbol: color.green(S_SUCCESS) });\n\t},\n\tstep: (message: string) => {\n\t\tlog.message(message, { symbol: color.green(S_STEP_SUBMIT) });\n\t},\n\twarn: (message: string) => {\n\t\tlog.message(message, { symbol: color.yellow(S_WARN) });\n\t},\n\t/** alias for `log.warn()`. */\n\twarning: (message: string) => {\n\t\tlog.warn(message);\n\t},\n\terror: (message: string) => {\n\t\tlog.message(message, { symbol: color.red(S_ERROR) });\n\t},\n};\n\nconst prefix = `${color.gray(S_BAR)} `;\nexport const stream = {\n\tmessage: async (\n\t\titerable: Iterable<string> | AsyncIterable<string>,\n\t\t{ symbol = color.gray(S_BAR) }: LogMessageOptions = {}\n\t) => {\n\t\tprocess.stdout.write(`${color.gray(S_BAR)}\\n${symbol} `);\n\t\tlet lineWidth = 3;\n\t\tfor await (let chunk of iterable) {\n\t\t\tchunk = chunk.replace(/\\n/g, `\\n${prefix}`);\n\t\t\tif (chunk.includes('\\n')) {\n\t\t\t\tlineWidth = 3 + strip(chunk.slice(chunk.lastIndexOf('\\n'))).length;\n\t\t\t}\n\t\t\tconst chunkLen = strip(chunk).length;\n\t\t\tif (lineWidth + chunkLen < process.stdout.columns) {\n\t\t\t\tlineWidth += chunkLen;\n\t\t\t\tprocess.stdout.write(chunk);\n\t\t\t} else {\n\t\t\t\tprocess.stdout.write(`\\n${prefix}${chunk.trimStart()}`);\n\t\t\t\tlineWidth = 3 + strip(chunk.trimStart()).length;\n\t\t\t}\n\t\t}\n\t\tprocess.stdout.write('\\n');\n\t},\n\tinfo: (iterable: Iterable<string> | AsyncIterable<string>) => {\n\t\treturn stream.message(iterable, { symbol: color.blue(S_INFO) });\n\t},\n\tsuccess: (iterable: Iterable<string> | AsyncIterable<string>) => {\n\t\treturn stream.message(iterable, { symbol: color.green(S_SUCCESS) });\n\t},\n\tstep: (iterable: Iterable<string> | AsyncIterable<string>) => {\n\t\treturn stream.message(iterable, { symbol: color.green(S_STEP_SUBMIT) });\n\t},\n\twarn: (iterable: Iterable<string> | AsyncIterable<string>) => {\n\t\treturn stream.message(iterable, { symbol: color.yellow(S_WARN) });\n\t},\n\t/** alias for `log.warn()`. */\n\twarning: (iterable: Iterable<string> | AsyncIterable<string>) => {\n\t\treturn stream.warn(iterable);\n\t},\n\terror: (iterable: Iterable<string> | AsyncIterable<string>) => {\n\t\treturn stream.message(iterable, { symbol: color.red(S_ERROR) });\n\t},\n};\n\nexport interface SpinnerOptions {\n\tindicator?: 'dots' | 'timer';\n}\n\nexport const spinner = ({ indicator = 'dots' }: SpinnerOptions = {}) => {\n\tconst frames = unicode ? ['◒', '◐', '◓', '◑'] : ['•', 'o', 'O', '0'];\n\tconst delay = unicode ? 80 : 120;\n\tconst isCI = process.env.CI === 'true';\n\n\tlet unblock: () => void;\n\tlet loop: NodeJS.Timeout;\n\tlet isSpinnerActive = false;\n\tlet _message = '';\n\tlet _prevMessage: string | undefined = undefined;\n\tlet _origin: number = performance.now();\n\n\tconst handleExit = (code: number) => {\n\t\tconst msg = code > 1 ? 'Something went wrong' : 'Canceled';\n\t\tif (isSpinnerActive) stop(msg, code);\n\t};\n\n\tconst errorEventHandler = () => handleExit(2);\n\tconst signalEventHandler = () => handleExit(1);\n\n\tconst registerHooks = () => {\n\t\t// Reference: https://nodejs.org/api/process.html#event-uncaughtexception\n\t\tprocess.on('uncaughtExceptionMonitor', errorEventHandler);\n\t\t// Reference: https://nodejs.org/api/process.html#event-unhandledrejection\n\t\tprocess.on('unhandledRejection', errorEventHandler);\n\t\t// Reference Signal Events: https://nodejs.org/api/process.html#signal-events\n\t\tprocess.on('SIGINT', signalEventHandler);\n\t\tprocess.on('SIGTERM', signalEventHandler);\n\t\tprocess.on('exit', handleExit);\n\t};\n\n\tconst clearHooks = () => {\n\t\tprocess.removeListener('uncaughtExceptionMonitor', errorEventHandler);\n\t\tprocess.removeListener('unhandledRejection', errorEventHandler);\n\t\tprocess.removeListener('SIGINT', signalEventHandler);\n\t\tprocess.removeListener('SIGTERM', signalEventHandler);\n\t\tprocess.removeListener('exit', handleExit);\n\t};\n\n\tconst clearPrevMessage = () => {\n\t\tif (_prevMessage === undefined) return;\n\t\tif (isCI) process.stdout.write('\\n');\n\t\tconst prevLines = _prevMessage.split('\\n');\n\t\tprocess.stdout.write(cursor.move(-999, prevLines.length - 1));\n\t\tprocess.stdout.write(erase.down(prevLines.length));\n\t};\n\n\tconst parseMessage = (msg: string): string => {\n\t\treturn msg.replace(/\\.+$/, '');\n\t};\n\n\tconst formatTimer = (origin: number): string => {\n\t\tconst duration = (performance.now() - origin) / 1000;\n\t\tconst min = Math.floor(duration / 60);\n\t\tconst secs = Math.floor(duration % 60);\n\t\treturn min > 0 ? `[${min}m ${secs}s]` : `[${secs}s]`;\n\t};\n\n\tconst start = (msg = ''): void => {\n\t\tisSpinnerActive = true;\n\t\tunblock = block();\n\t\t_message = parseMessage(msg);\n\t\t_origin = performance.now();\n\t\tprocess.stdout.write(`${color.gray(S_BAR)}\\n`);\n\t\tlet frameIndex = 0;\n\t\tlet indicatorTimer = 0;\n\t\tregisterHooks();\n\t\tloop = setInterval(() => {\n\t\t\tif (isCI && _message === _prevMessage) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tclearPrevMessage();\n\t\t\t_prevMessage = _message;\n\t\t\tconst frame = color.magenta(frames[frameIndex]);\n\n\t\t\tif (isCI) {\n\t\t\t\tprocess.stdout.write(`${frame} ${_message}...`);\n\t\t\t} else if (indicator === 'timer') {\n\t\t\t\tprocess.stdout.write(`${frame} ${_message} ${formatTimer(_origin)}`);\n\t\t\t} else {\n\t\t\t\tconst loadingDots = '.'.repeat(Math.floor(indicatorTimer)).slice(0, 3);\n\t\t\t\tprocess.stdout.write(`${frame} ${_message}${loadingDots}`);\n\t\t\t}\n\n\t\t\tframeIndex = frameIndex + 1 < frames.length ? frameIndex + 1 : 0;\n\t\t\tindicatorTimer = indicatorTimer < frames.length ? indicatorTimer + 0.125 : 0;\n\t\t}, delay);\n\t};\n\n\tconst stop = (msg = '', code = 0): void => {\n\t\tisSpinnerActive = false;\n\t\tclearInterval(loop);\n\t\tclearPrevMessage();\n\t\tconst step =\n\t\t\tcode === 0\n\t\t\t\t? color.green(S_STEP_SUBMIT)\n\t\t\t\t: code === 1\n\t\t\t\t\t? color.red(S_STEP_CANCEL)\n\t\t\t\t\t: color.red(S_STEP_ERROR);\n\t\t_message = parseMessage(msg ?? _message);\n\t\tif (indicator === 'timer') {\n\t\t\tprocess.stdout.write(`${step} ${_message} ${formatTimer(_origin)}\\n`);\n\t\t} else {\n\t\t\tprocess.stdout.write(`${step} ${_message}\\n`);\n\t\t}\n\t\tclearHooks();\n\t\tunblock();\n\t};\n\n\tconst message = (msg = ''): void => {\n\t\t_message = parseMessage(msg ?? _message);\n\t};\n\n\treturn {\n\t\tstart,\n\t\tstop,\n\t\tmessage,\n\t};\n};\n\nexport type PromptGroupAwaitedReturn<T> = {\n\t[P in keyof T]: Exclude<Awaited<T[P]>, symbol>;\n};\n\nexport interface PromptGroupOptions<T> {\n\t/**\n\t * Control how the group can be canceled\n\t * if one of the prompts is canceled.\n\t */\n\tonCancel?: (opts: { results: Prettify<Partial<PromptGroupAwaitedReturn<T>>> }) => void;\n}\n\ntype Prettify<T> = {\n\t[P in keyof T]: T[P];\n} & {};\n\nexport type PromptGroup<T> = {\n\t[P in keyof T]: (opts: {\n\t\tresults: Prettify<Partial<PromptGroupAwaitedReturn<Omit<T, P>>>>;\n\t}) => undefined | Promise<T[P] | undefined>;\n};\n\n/**\n * Define a group of prompts to be displayed\n * and return a results of objects within the group\n */\nexport const group = async <T>(\n\tprompts: PromptGroup<T>,\n\topts?: PromptGroupOptions<T>\n): Promise<Prettify<PromptGroupAwaitedReturn<T>>> => {\n\tconst results = {} as any;\n\tconst promptNames = Object.keys(prompts);\n\n\tfor (const name of promptNames) {\n\t\tconst prompt = prompts[name as keyof T];\n\t\tconst result = await prompt({ results })?.catch((e) => {\n\t\t\tthrow e;\n\t\t});\n\n\t\t// Pass the results to the onCancel function\n\t\t// so the user can decide what to do with the results\n\t\t// TODO: Switch to callback within core to avoid isCancel Fn\n\t\tif (typeof opts?.onCancel === 'function' && isCancel(result)) {\n\t\t\tresults[name] = 'canceled';\n\t\t\topts.onCancel({ results });\n\t\t\tcontinue;\n\t\t}\n\n\t\tresults[name] = result;\n\t}\n\n\treturn results;\n};\n\nexport type Task = {\n\t/**\n\t * Task title\n\t */\n\ttitle: string;\n\t/**\n\t * Task function\n\t */\n\ttask: (message: (string: string) => void) => string | Promise<string> | void | Promise<void>;\n\n\t/**\n\t * If enabled === false the task will be skipped\n\t */\n\tenabled?: boolean;\n};\n\n/**\n * Define a group of tasks to be executed\n */\nexport const tasks = async (tasks: Task[]) => {\n\tfor (const task of tasks) {\n\t\tif (task.enabled === false) continue;\n\n\t\tconst s = spinner();\n\t\ts.start(task.title);\n\t\tconst result = await task.task(s.message);\n\t\ts.stop(result || task.title);\n\t}\n};\n","import { execSync } from 'node:child_process';\nimport { existsSync } from 'node:fs';\nimport { join } from 'node:path';\n\nexport type PackageManager = 'yarn' | 'pnpm' | 'bun' | 'npm';\n\nexport interface Environment {\n isInteractive: boolean;\n packageManager: PackageManager;\n nodeVersion: number;\n hasCucumber: boolean;\n cwd: string;\n}\n\nexport interface PackageManagerArgs {\n npm: string;\n yarn: string;\n pnpm: string;\n bun: string;\n}\n\nexport function detectEnvironment(): Environment {\n const cwd = process.cwd();\n const isInteractive = Boolean(process.stdout.isTTY && process.stdin.isTTY);\n\n let packageManager: PackageManager = 'npm';\n if (existsSync(join(cwd, 'yarn.lock'))) packageManager = 'yarn';\n else if (existsSync(join(cwd, 'pnpm-lock.yaml'))) packageManager = 'pnpm';\n else if (existsSync(join(cwd, 'bun.lockb')) || existsSync(join(cwd, 'bun.lock'))) packageManager = 'bun';\n\n const nodeVersion = parseInt(process.version.slice(1), 10);\n const hasCucumber = existsSync(join(cwd, 'node_modules', '@cucumber', 'cucumber', 'package.json'));\n\n return { isInteractive, packageManager, nodeVersion, hasCucumber, cwd };\n}\n\nfunction pmCmd(pm: string, args: PackageManagerArgs): string {\n if (pm === 'yarn') return `yarn ${args.yarn}`;\n if (pm === 'pnpm') return `pnpm ${args.pnpm}`;\n if (pm === 'bun') return `bun ${args.bun}`;\n return `npm ${args.npm}`;\n}\n\nexport function execPm(env: Pick<Environment, 'packageManager' | 'cwd'>, args: PackageManagerArgs) {\n const cmd = pmCmd(env.packageManager, args);\n return execSync(cmd, { stdio: 'inherit', cwd: env.cwd });\n}\n","import { existsSync, readFileSync } from 'node:fs';\nimport { join } from 'node:path';\nimport { type Environment, execPm } from '../detect.js';\n\nexport function isCliInstalled({ cwd }: Pick<Environment, 'cwd'>): boolean {\n const pkgPath = join(cwd, 'package.json');\n if (!existsSync(pkgPath)) return false;\n\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8')) as {\n devDependencies?: Record<string, string>;\n dependencies?: Record<string, string>;\n };\n\n return '@letsrunit/cli' in (pkg.devDependencies ?? {}) || '@letsrunit/cli' in (pkg.dependencies ?? {});\n}\n\nexport function installCli(env: Pick<Environment, 'packageManager' | 'cwd'>): void {\n execPm(env, {\n npm: 'install --save-dev @letsrunit/cli',\n yarn: 'add --dev @letsrunit/cli',\n pnpm: 'add -D @letsrunit/cli',\n bun: 'add -d @letsrunit/cli',\n });\n}\n","import { existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync } from 'node:fs';\nimport { join } from 'node:path';\nimport { type Environment, execPm } from '../detect.js';\n\nconst BDD_IMPORT = '@letsrunit/cucumber';\n\nconst CUCUMBER_CONFIG = `import { resolveDebugWorldParameters } from '@letsrunit/cucumber/config';\n\nconst { failFast, worldParameters } = resolveDebugWorldParameters({\n argv: process.argv,\n baseWorldParameters: {\n baseURL: 'http://localhost:3000',\n },\n});\n\nexport default {\n require: ['features/support/**/*.js'],\n format: ['@letsrunit/cucumber/progress'],\n failFast,\n plugin: ['@letsrunit/cucumber/store'],\n pluginOptions: {\n letsrunitStore: {\n directory: '.letsrunit',\n },\n },\n worldParameters,\n letsrunit: {\n ignore: ['features/support/world.js'],\n },\n};\n`;\n\nconst SUPPORT_FILE = `import { setDefaultTimeout } from '@cucumber/cucumber';\nimport '${BDD_IMPORT}';\n\nsetDefaultTimeout(30_000);\n`;\n\nconst EXAMPLE_FEATURE = `Feature: Example\n Scenario: Homepage loads\n Given I'm on the homepage\n`;\n\nexport type CucumberConfigResult = 'created' | 'skipped' | 'needs-manual-update';\n\nexport interface CucumberSetupResult {\n bddInstalled: boolean;\n configResult: CucumberConfigResult;\n featuresCreated: boolean;\n}\n\nexport function installCucumber(env: Pick<Environment, 'packageManager' | 'cwd'>): void {\n execPm(env, {\n npm: 'install --save-dev @cucumber/cucumber',\n yarn: 'add --dev @cucumber/cucumber',\n pnpm: 'add -D @cucumber/cucumber',\n bun: 'add -d @cucumber/cucumber',\n });\n}\n\nfunction installBdd(env: Pick<Environment, 'packageManager' | 'cwd'>): boolean {\n const pkgPath = join(env.cwd, 'package.json');\n if (!existsSync(pkgPath)) return false;\n\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8')) as {\n devDependencies?: Record<string, string>;\n dependencies?: Record<string, string>;\n };\n\n const alreadyInstalled =\n '@letsrunit/cucumber' in (pkg.devDependencies ?? {}) || '@letsrunit/cucumber' in (pkg.dependencies ?? {});\n\n if (alreadyInstalled) return false;\n\n execPm(env, {\n npm: 'install --save-dev @letsrunit/cucumber',\n yarn: 'add --dev @letsrunit/cucumber',\n pnpm: 'add -D @letsrunit/cucumber',\n bun: 'add -d @letsrunit/cucumber',\n });\n\n return true;\n}\n\nfunction setupCucumberConfig({ cwd }: Pick<Environment, 'cwd'>): CucumberConfigResult {\n const supportDir = join(cwd, 'features', 'support');\n const supportPath = join(supportDir, 'world.js');\n\n if (existsSync(supportPath)) {\n const content = readFileSync(supportPath, 'utf-8');\n if (content.includes(BDD_IMPORT)) return 'skipped';\n return 'needs-manual-update';\n }\n\n const configPath = join(cwd, 'cucumber.js');\n if (!existsSync(configPath)) {\n writeFileSync(configPath, CUCUMBER_CONFIG, 'utf-8');\n }\n\n mkdirSync(supportDir, { recursive: true });\n writeFileSync(supportPath, SUPPORT_FILE, 'utf-8');\n return 'created';\n}\n\nfunction setupFeaturesDir({ cwd }: Pick<Environment, 'cwd'>): boolean {\n if (existsSync(join(cwd, 'features'))) {\n try {\n const hasFeatureFiles = readdirSync(join(cwd, 'features')).some((f) => f.endsWith('.feature'));\n if (hasFeatureFiles) return false;\n } catch {\n return false;\n }\n }\n\n try {\n const hasFeatureAtRoot = readdirSync(cwd).some((f) => f.endsWith('.feature'));\n if (hasFeatureAtRoot) return false;\n } catch {\n return false;\n }\n\n mkdirSync(join(cwd, 'features'), { recursive: true });\n writeFileSync(join(cwd, 'features', 'example.feature'), EXAMPLE_FEATURE, 'utf-8');\n return true;\n}\n\nexport function setupCucumber(env: Pick<Environment, 'packageManager' | 'cwd'>): CucumberSetupResult {\n const bddInstalled = installBdd(env);\n const configResult = setupCucumberConfig(env);\n const featuresCreated = setupFeaturesDir(env);\n return { bddInstalled, configResult, featuresCreated };\n}\n","import { existsSync, mkdirSync, writeFileSync } from 'node:fs';\nimport { join } from 'node:path';\nimport type { Environment } from '../detect.js';\n\nexport type GithubActionsResult = 'created' | 'skipped';\n\nfunction setupStepsFor({ packageManager, nodeVersion }: Pick<Environment, 'packageManager' | 'nodeVersion'>): string {\n if (packageManager === 'yarn') return `\\\n - name: Enable Corepack\n run: corepack enable\n - uses: actions/setup-node@v4\n with:\n node-version: ${nodeVersion}\n cache: yarn\n - name: Install dependencies\n run: yarn install --immutable`;\n if (packageManager === 'pnpm') return `\\\n - uses: pnpm/action-setup@v4\n - uses: actions/setup-node@v4\n with:\n node-version: ${nodeVersion}\n cache: pnpm\n - name: Install dependencies\n run: pnpm install --frozen-lockfile`;\n if (packageManager === 'bun') return `\\\n - uses: oven-sh/setup-bun@v2\n - name: Install dependencies\n run: bun install --frozen-lockfile`;\n return `\\\n - uses: actions/setup-node@v4\n with:\n node-version: ${nodeVersion}\n cache: npm\n - name: Install dependencies\n run: npm ci`;\n}\n\nfunction workflowYaml(env: Pick<Environment, 'packageManager' | 'nodeVersion'>): string {\n const setupSteps = setupStepsFor(env);\n\n return `name: Features\non:\n push:\n branches: [main]\n pull_request:\n branches: [main]\njobs:\n features:\n runs-on: ubuntu-latest\n steps:\n - uses: actions/checkout@v4\n${setupSteps}\n - name: Install Playwright browsers\n run: npx playwright install chromium --with-deps\n - name: Run features\n run: npx cucumber-js\n`;\n}\n\nexport function installGithubAction(env: Pick<Environment, 'packageManager' | 'nodeVersion' | 'cwd'>): GithubActionsResult {\n const workflowDir = join(env.cwd, '.github', 'workflows');\n const workflowPath = join(workflowDir, 'letsrunit.yml');\n\n if (existsSync(workflowPath)) return 'skipped';\n\n mkdirSync(workflowDir, { recursive: true });\n writeFileSync(workflowPath, workflowYaml(env), 'utf-8');\n return 'created';\n}\n","import { existsSync, readFileSync } from 'node:fs';\nimport { join } from 'node:path';\nimport { type Environment, execPm } from '../detect.js';\n\nexport function isMcpServerInstalled({ cwd }: Pick<Environment, 'cwd'>): boolean {\n const pkgPath = join(cwd, 'package.json');\n if (!existsSync(pkgPath)) return false;\n\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8')) as {\n devDependencies?: Record<string, string>;\n dependencies?: Record<string, string>;\n };\n\n return (\n '@letsrunit/mcp-server' in (pkg.devDependencies ?? {}) ||\n '@letsrunit/mcp-server' in (pkg.dependencies ?? {})\n );\n}\n\nexport function installMcpServer(env: Pick<Environment, 'packageManager' | 'cwd'>): void {\n execPm(env, {\n npm: 'install --save-dev @letsrunit/mcp-server',\n yarn: 'add --dev @letsrunit/mcp-server',\n pnpm: 'add -D @letsrunit/mcp-server',\n bun: 'add -d @letsrunit/mcp-server',\n });\n}\n","import { execSync } from 'node:child_process';\nimport { existsSync } from 'node:fs';\nimport { join } from 'node:path';\nimport { type Environment, execPm } from '../detect.js';\n\nexport function hasPlaywrightBrowsers({ cwd }: Pick<Environment, 'cwd'>): boolean {\n if (!existsSync(join(cwd, 'node_modules', 'playwright-core', 'package.json'))) {\n return false;\n }\n try {\n const execPath = execSync(\n `node -e \"console.log(require('playwright-core').chromium.executablePath())\"`,\n { cwd, stdio: 'pipe', encoding: 'utf-8' },\n ).trim();\n return existsSync(execPath);\n } catch {\n return false;\n }\n}\n\nexport function installPlaywrightBrowsers(env: Pick<Environment, 'packageManager' | 'cwd'>): void {\n execPm(env, {\n npm: 'exec playwright install chromium',\n yarn: 'exec playwright install chromium',\n pnpm: 'exec playwright install chromium',\n bun: 'x playwright install chromium',\n });\n}\n","import { confirm, intro, log, note, outro, spinner } from '@clack/prompts';\nimport { detectEnvironment, type Environment } from './detect.js';\nimport { installCli, isCliInstalled } from './setup/cli.js';\nimport { installCucumber, setupCucumber } from './setup/cucumber.js';\nimport { installGithubAction } from './setup/github-actions.js';\nimport { installMcpServer, isMcpServerInstalled } from './setup/mcp.js';\nimport { hasPlaywrightBrowsers, installPlaywrightBrowsers } from './setup/playwright.js';\n\nconst BDD_IMPORT = '@letsrunit/cucumber';\n\nexport interface InitOptions {\n yes?: boolean;\n noMcp?: boolean;\n}\n\nasync function stepInstallCli(env: Environment): Promise<void> {\n if (isCliInstalled(env)) {\n log.success('@letsrunit/cli already installed');\n return;\n }\n\n const s = spinner();\n s.start('Installing @letsrunit/cli…');\n installCli(env);\n s.stop('@letsrunit/cli installed');\n}\n\nasync function stepEnsureCucumber(env: Environment, { yes }: InitOptions): Promise<boolean> {\n if (env.hasCucumber) return true;\n\n if (!yes && !env.isInteractive) {\n log.warn('@cucumber/cucumber not found. Install it to use letsrunit with Cucumber:');\n note('npm install --save-dev @cucumber/cucumber\\nThen run: npx letsrunit init', 'Setup Cucumber');\n return false;\n }\n\n if (!yes) {\n const install = await confirm({ message: '@cucumber/cucumber not found. Install it now?' });\n if (install !== true) return false;\n }\n\n const s = spinner();\n s.start('Installing @cucumber/cucumber…');\n installCucumber(env);\n s.stop('@cucumber/cucumber installed');\n return true;\n}\n\nasync function stepInstallMcpServer(env: Environment, { yes, noMcp }: InitOptions): Promise<void> {\n if (noMcp) {\n log.info('Skipped @letsrunit/mcp-server installation (--no-mcp).');\n return;\n }\n\n if (isMcpServerInstalled(env)) {\n log.success('@letsrunit/mcp-server already installed');\n return;\n }\n\n if (!yes && env.isInteractive) {\n const install = await confirm({\n message: 'Install @letsrunit/mcp-server for project-local MCP support?',\n initialValue: true,\n });\n if (install !== true) {\n log.info('Skipped @letsrunit/mcp-server installation.');\n return;\n }\n }\n\n const s = spinner();\n s.start('Installing @letsrunit/mcp-server…');\n installMcpServer(env);\n s.stop('@letsrunit/mcp-server installed');\n}\n\nfunction stepSetupCucumber(env: Environment): void {\n const result = setupCucumber(env);\n\n if (result.bddInstalled) log.success('@letsrunit/cucumber installed');\n\n if (result.configResult === 'created') {\n log.success('features/support/world.js created');\n } else if (result.configResult === 'needs-manual-update') {\n log.warn('features/support/world.js exists but does not import @letsrunit/cucumber.');\n note(`Add \"import '${BDD_IMPORT}';\" to features/support/world.js`, 'Action required');\n }\n\n if (result.featuresCreated) log.success('features/ directory created with example.feature');\n}\n\nasync function stepCheckPlaywrightBrowsers(env: Environment, { yes }: InitOptions): Promise<void> {\n if (hasPlaywrightBrowsers(env)) return;\n\n if (!yes && !env.isInteractive) {\n log.warn('Playwright Chromium browser not found.');\n note('npx playwright install chromium', 'Run to install browsers');\n return;\n }\n\n if (!yes) {\n const install = await confirm({ message: 'Playwright Chromium browser not found. Install it now?' });\n if (install !== true) return;\n }\n\n const s = spinner();\n s.start('Installing Playwright Chromium…');\n installPlaywrightBrowsers(env);\n s.stop('Playwright Chromium installed');\n}\n\nasync function stepAddGithubAction(env: Environment, { yes }: InitOptions): Promise<void> {\n if (!yes && !env.isInteractive) return;\n\n if (!yes) {\n const addAction = await confirm({ message: 'Add a GitHub Action to run features on push?' });\n if (addAction !== true) return;\n }\n\n const result = installGithubAction(env);\n if (result === 'created') {\n log.success('.github/workflows/letsrunit.yml created');\n } else {\n log.info('.github/workflows/letsrunit.yml already exists, skipped');\n }\n}\n\nexport async function init(options: InitOptions = {}): Promise<void> {\n intro('letsrunit init');\n\n const env = detectEnvironment();\n\n await stepInstallCli(env);\n await stepInstallMcpServer(env, options);\n\n const hasCucumber = await stepEnsureCucumber(env, options);\n if (hasCucumber) {\n stepSetupCucumber(env);\n await stepCheckPlaywrightBrowsers(env, options);\n await stepAddGithubAction(env, options);\n }\n\n outro('All done! Run npx letsrunit --help to get started.');\n}\n","import { explain as explainRun, type ExplainResult } from '@letsrunit/executor';\n\nexport async function runExplain(opts: { db?: string; artifacts?: string }) {\n const result: ExplainResult = await explainRun({ dbPath: opts.db, artifactsDir: opts.artifacts });\n\n const { stdout, stderr } = process;\n\n if (!result.hasRun) {\n stderr.write('No letsrunit run found.\\n');\n process.exit(1);\n }\n\n if (result.totalFailed === 0) {\n stdout.write('No failures in latest run; nothing to explain.\\n');\n process.exit(0);\n }\n\n for (const item of result.explanations) {\n const color = item.update === 'test' ? '\\x1b[33m' : '\\x1b[31m';\n\n stdout.write('\\n');\n stdout.write(`\\x1b[1m${item.featurePath} :: ${item.scenarioName}\\x1b[0m\\n`);\n stdout.write(` ${item.steps.replaceAll('\\n', '\\n ')}\\n\\n`);\n stdout.write(` ${color}\\x1b[1m${item.updateMessage}\\x1b[0m\\n`);\n stdout.write(` ${item.reason.replaceAll('\\n', '\\n ')}\\n`);\n stdout.write(` 💡 ${item.advice.replaceAll('\\n', '\\n ')}\\n`);\n }\n\n for (const err of result.errors) {\n stderr.write(`\\n\\x1b[31m${err.featurePath} :: ${err.scenarioName}\\x1b[0m\\n`);\n stderr.write(` ${err.error.replaceAll('\\n', '\\n ')}\\n`);\n }\n\n process.exit(result.errors.length > 0 ? 1 : 0);\n}\n","import type { Action, AppInfo } from '@letsrunit/executor';\nimport { makeFeature } from '@letsrunit/gherkin';\nimport { asFilename } from '@letsrunit/utils';\nimport * as fs from 'node:fs/promises';\n\nfunction disableEcho() {\n process.stdout.write('\\x1B[?25l'); // hide cursor\n process.stdout.write('\\x1B[8m'); // hide input\n}\n\nfunction enableEcho() {\n process.stdout.write('\\x1B[0m');\n process.stdout.write('\\x1B[?25h');\n}\n\nfunction readKey(): Promise<string> {\n const { stdin } = process;\n\n stdin.setRawMode(true);\n stdin.resume();\n stdin.setEncoding('utf8');\n disableEcho();\n\n return new Promise<string>((resolve) => {\n const handler = (pressed: string) => {\n stdin.removeListener('data', handler);\n stdin.setRawMode(false);\n stdin.pause();\n enableEcho();\n\n resolve(pressed);\n };\n\n stdin.on('data', handler);\n });\n}\n\nasync function readOption(limit: number): Promise<number> {\n while (true) {\n const key = await readKey();\n if (key === '\\u0003') return -1;\n\n const opt = key >= '0' && key <= '9' ? Number(key) : null;\n\n if (!opt || opt > limit) {\n process.stdout.write('\\x1b[33mInvalid option selected\\x1b[0m\\n');\n continue;\n }\n\n return opt - 1;\n }\n}\n\nexport async function runExplore(info: AppInfo, actions: Action[], storagePath?: string) {\n const { stdout } = process;\n\n while (actions.length > 0) {\n stdout.write(`\\n\\x1b[1m${info.name}\\x1b[0m\\n`);\n stdout.write('What do you want to test? Choose one of the following options:\\n');\n\n let count = 1;\n for (const action of actions) {\n stdout.write(`${count++}. ${action.name}\\n`);\n }\n\n const opt = await readOption(actions.length);\n if (opt < 0) return;\n\n stdout.write('\\n');\n const { status, feature } = await actions[opt].run();\n\n actions.splice(opt, 1);\n\n if (storagePath && status === 'passed' && feature) {\n await fs.writeFile(`${storagePath}/${asFilename(feature.name!)}.feature`, makeFeature(feature));\n }\n }\n}\n","import { explore, generate, refineSuggestion, run } from '@letsrunit/executor';\nimport { makeFeature } from '@letsrunit/gherkin';\nimport { CliSink, Journal } from '@letsrunit/journal';\nimport { getMailbox } from '@letsrunit/mailbox';\nimport { asFilename, randomUUID } from '@letsrunit/utils';\nimport { Command } from 'commander';\nimport { init } from 'letsrunit';\nimport { readFileSync } from 'node:fs';\nimport fs from 'node:fs/promises';\nimport { dirname, join } from 'node:path';\nimport { fileURLToPath } from 'node:url';\nimport { runExplain } from './run-explain';\nimport { runExplore } from './run-explore';\n\nconst __dirname = dirname(fileURLToPath(import.meta.url));\nconst { version } = JSON.parse(readFileSync(join(__dirname, '..', 'package.json'), 'utf-8')) as { version: string };\n\nconst program = new Command();\n\ninterface JournalOptions {\n verbose: boolean;\n silent: boolean;\n artifactPath?: string;\n}\n\nfunction createJournal({ verbose, silent, artifactPath }: JournalOptions) {\n const verbosity = verbose ? 3 : silent ? 0 : 1;\n return new Journal(new CliSink({ verbosity, artifactPath }));\n}\n\nasync function readStdin(): Promise<string> {\n return await new Promise((resolve) => {\n let data = '';\n process.stdin.setEncoding('utf8');\n\n const isTTY = Boolean(process.stdin.isTTY);\n if (isTTY) {\n // Interactive input: allow user to type multiple lines and finish with EOF\n console.error('Enter instructions. Finish with Ctrl-D (Unix/macOS/Linux) or Ctrl-Z then Enter (Windows).');\n }\n\n process.stdin.on('data', (chunk) => (data += chunk));\n process.stdin.on('end', () => resolve(data));\n process.stdin.resume();\n });\n}\n\nprogram.name('letsrunit').description('Vibe testing done right').version(version);\n\nprogram\n .command('init')\n .description('Set up letsrunit in the current project')\n .option('-y, --yes', 'Skip confirmation prompts')\n .option('--no-mcp', 'Do not install @letsrunit/mcp-server')\n .action(async (opts: { yes?: boolean; mcp?: boolean }) => {\n await init({ yes: opts.yes, noMcp: opts.mcp === false });\n });\n\nprogram\n .command('explore')\n .argument('<target>', 'Target URL or project')\n .option('-v, --verbose', 'Enable verbose logging', false)\n .option('-s, --silent', 'Only output errors', false)\n .option('-o, --save <path>', 'Path to save .feature file', '')\n .action(async (target: string, opts: { verbose: boolean; silent: boolean; save: string }) => {\n const journal = createJournal({ ...opts, artifactPath: opts.save });\n\n const { status } = await explore(target, { headless: false, journal }, async (info, actions) => {\n journal.sink.endSection();\n await runExplore(info, actions, opts.save);\n });\n\n process.exit(status === 'passed' ? 0 : 1);\n });\n\nprogram\n .command('generate')\n .argument('<target>', 'Target URL or project')\n .option('-v, --verbose', 'Enable verbose logging', false)\n .option('-s, --silent', 'Only output errors', false)\n .option('-o, --save <path>', 'Path to save .feature file', '')\n .action(async (target: string, opts: { verbose: boolean; silent: boolean; save: string }) => {\n const instructions = (await readStdin()).trim();\n\n if (!instructions) {\n console.error('No instructions provided');\n process.exit(1);\n }\n\n const journal = createJournal({ ...opts, artifactPath: opts.save });\n\n await journal.info('Refining test instructions');\n const suggestion = await refineSuggestion(instructions);\n\n const { feature, status } = await generate(target, suggestion, { headless: false, journal });\n\n if (opts.save && feature) {\n await fs.writeFile(`${opts.save}/${asFilename(feature.name!)}.feature`, makeFeature(feature));\n }\n\n process.exit(status === 'passed' ? 0 : 1);\n });\n\nprogram\n .command('register')\n .argument('<target>', 'Target URL or project')\n .option('-v, --verbose', 'Enable verbose logging', false)\n .option('-s, --silent', 'Only output errors', false)\n .option('-o, --save <path>', 'Path to save .feature file', '')\n .action(async (target: string, opts: { verbose: boolean; silent: boolean; save: string }) => {\n const journal = createJournal({ ...opts, artifactPath: opts.save });\n\n const suggestion = {\n name: 'Register a new user by email',\n description: [\n 'Locate the registration form and fill it out to create a new account.',\n 'Confirm the registration email and log in as the user',\n ].join('\\n'),\n comments: [\n 'If no registration button is visible, try locating it through the login form.',\n 'The feature is complete when a confirmation email is received and verified and the user is logged in.',\n ].join('\\n'),\n };\n\n const email = getMailbox(randomUUID());\n\n const { feature, status } = await generate(target, suggestion, { headless: false, journal, accounts: { email } });\n\n if (opts.save && feature) {\n await fs.writeFile(`${opts.save}/${asFilename(feature.name!)}.feature`, makeFeature(feature));\n }\n\n process.exit(status === 'passed' ? 0 : 1);\n });\n\nprogram\n .command('run')\n .argument('<target>', 'Target URL or project')\n .argument('<feature>', 'Gherkin feature file')\n .option('-v, --verbose', 'Enable verbose logging', false)\n .option('-s, --silent', 'Only output errors', false)\n .action(async (target: string, featureFile: string, opts: { verbose: boolean; silent: boolean }) => {\n const feature = await fs.readFile(featureFile, 'utf-8');\n await run(target, feature, { headless: false, journal: createJournal(opts) });\n });\n\nprogram\n .command('explain')\n .description('Explain failures from the latest letsrunit run')\n .option('--db <path>', 'Path to letsrunit SQLite DB')\n .option('--artifacts <path>', 'Path to letsrunit artifacts directory')\n .action(async (opts: { db?: string; artifacts?: string }) => {\n await runExplain(opts);\n });\n\nprogram.parse();\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@letsrunit/cli",
3
- "version": "0.13.2",
3
+ "version": "0.14.0",
4
4
  "description": "Command line interface for letsrunit",
5
5
  "keywords": [
6
6
  "testing",
@@ -42,11 +42,11 @@
42
42
  },
43
43
  "packageManager": "yarn@4.10.3",
44
44
  "dependencies": {
45
- "@letsrunit/executor": "0.13.2",
46
- "@letsrunit/gherkin": "0.13.2",
47
- "@letsrunit/journal": "0.13.2",
48
- "@letsrunit/mailbox": "0.13.2",
49
- "@letsrunit/utils": "0.13.2",
45
+ "@letsrunit/executor": "0.14.0",
46
+ "@letsrunit/gherkin": "0.14.0",
47
+ "@letsrunit/journal": "0.14.0",
48
+ "@letsrunit/mailbox": "0.14.0",
49
+ "@letsrunit/utils": "0.14.0",
50
50
  "commander": "^14.0.2"
51
51
  },
52
52
  "devDependencies": {
package/src/index.ts CHANGED
@@ -51,8 +51,9 @@ program
51
51
  .command('init')
52
52
  .description('Set up letsrunit in the current project')
53
53
  .option('-y, --yes', 'Skip confirmation prompts')
54
- .action(async (opts: { yes?: boolean }) => {
55
- await init({ yes: opts.yes });
54
+ .option('--no-mcp', 'Do not install @letsrunit/mcp-server')
55
+ .action(async (opts: { yes?: boolean; mcp?: boolean }) => {
56
+ await init({ yes: opts.yes, noMcp: opts.mcp === false });
56
57
  });
57
58
 
58
59
  program