@rpcbase/test 0.342.0 → 0.344.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.
Files changed (43) hide show
  1. package/dist/clearDatabase.js +10 -12
  2. package/dist/clearDatabase.js.map +1 -1
  3. package/dist/cli.js +439 -556
  4. package/dist/cli.js.map +1 -1
  5. package/dist/coverage/collect.js +63 -101
  6. package/dist/coverage/collect.js.map +1 -1
  7. package/dist/coverage/config-loader.js +180 -230
  8. package/dist/coverage/config-loader.js.map +1 -1
  9. package/dist/coverage/config.js +76 -100
  10. package/dist/coverage/config.js.map +1 -1
  11. package/dist/coverage/console-text-report.js +175 -220
  12. package/dist/coverage/console-text-report.js.map +1 -1
  13. package/dist/coverage/files.js +45 -58
  14. package/dist/coverage/files.js.map +1 -1
  15. package/dist/coverage/fixtures.js +27 -38
  16. package/dist/coverage/fixtures.js.map +1 -1
  17. package/dist/coverage/global-setup.js +15 -18
  18. package/dist/coverage/global-setup.js.map +1 -1
  19. package/dist/coverage/index.js +38 -55
  20. package/dist/coverage/index.js.map +1 -1
  21. package/dist/coverage/report.js +341 -466
  22. package/dist/coverage/report.js.map +1 -1
  23. package/dist/coverage/reporter.js +47 -61
  24. package/dist/coverage/reporter.js.map +1 -1
  25. package/dist/coverage/v8-tracker.js +115 -147
  26. package/dist/coverage/v8-tracker.js.map +1 -1
  27. package/dist/index.js +46 -75
  28. package/dist/index.js.map +1 -1
  29. package/dist/runners/playwright.d.ts.map +1 -1
  30. package/dist/runners/playwright.js +398 -449
  31. package/dist/runners/playwright.js.map +1 -1
  32. package/dist/runners/process.d.ts +4 -1
  33. package/dist/runners/process.d.ts.map +1 -1
  34. package/dist/runners/process.js +111 -101
  35. package/dist/runners/process.js.map +1 -1
  36. package/dist/runners/vitest.js +124 -171
  37. package/dist/runners/vitest.js.map +1 -1
  38. package/dist/serverCoverage.js +28 -42
  39. package/dist/serverCoverage.js.map +1 -1
  40. package/dist/vitest.config.d.ts +1 -1
  41. package/dist/vitest.config.js +62 -74
  42. package/dist/vitest.config.js.map +1 -1
  43. package/package.json +1 -1
@@ -1,112 +1,88 @@
1
1
  import path from "node:path";
2
- const DEFAULT_THRESHOLDS = {
3
- branches: 60,
4
- functions: 75,
5
- lines: 75,
6
- statements: 75
2
+ //#region src/coverage/config.ts
3
+ var DEFAULT_THRESHOLDS = {
4
+ branches: 60,
5
+ functions: 75,
6
+ lines: 75,
7
+ statements: 75
7
8
  };
8
- const THRESHOLD_KEYS = Object.keys(DEFAULT_THRESHOLDS);
9
- const THRESHOLD_KEY_SET = new Set(THRESHOLD_KEYS);
9
+ var THRESHOLD_KEYS = Object.keys(DEFAULT_THRESHOLDS);
10
+ var THRESHOLD_KEY_SET = new Set(THRESHOLD_KEYS);
10
11
  function createCoverageConfig(options) {
11
- const {
12
- rootDir
13
- } = options;
14
- if (!rootDir) {
15
- throw new Error("createCoverageConfig requires a rootDir");
16
- }
17
- const resolvedRootDir = path.resolve(rootDir);
18
- const includeAllFiles = options.includeAllFiles !== false;
19
- const collectCoverageFrom = Array.isArray(options.collectCoverageFrom) ? options.collectCoverageFrom.map((pattern) => String(pattern ?? "").trim()).filter((pattern) => pattern.length > 0) : [];
20
- if (collectCoverageFrom.length === 0) {
21
- throw new Error("createCoverageConfig requires a collectCoverageFrom option");
22
- }
23
- const testResultsRoot = path.join(resolvedRootDir, "build", "coverage");
24
- const coverageReportDir = path.join(testResultsRoot, "report");
25
- const coverageFileName = options.coverageFileName ?? "v8-coverage.json";
26
- const disabledEnvVar = options.disabledEnvVar ?? "RB_DISABLE_COVERAGE";
27
- const coverageEnabled = process.env[disabledEnvVar] !== "1";
28
- const {
29
- global: thresholds,
30
- targets: thresholdTargets
31
- } = normalizeThresholdOptions(options.thresholds);
32
- return {
33
- rootDir: resolvedRootDir,
34
- collectCoverageFrom,
35
- testResultsRoot,
36
- coverageReportDir,
37
- coverageFileName,
38
- thresholds,
39
- thresholdTargets,
40
- coverageEnabled,
41
- disabledEnvVar,
42
- includeAllFiles
43
- };
12
+ const { rootDir } = options;
13
+ if (!rootDir) throw new Error("createCoverageConfig requires a rootDir");
14
+ const resolvedRootDir = path.resolve(rootDir);
15
+ const includeAllFiles = options.includeAllFiles !== false;
16
+ const collectCoverageFrom = Array.isArray(options.collectCoverageFrom) ? options.collectCoverageFrom.map((pattern) => String(pattern ?? "").trim()).filter((pattern) => pattern.length > 0) : [];
17
+ if (collectCoverageFrom.length === 0) throw new Error("createCoverageConfig requires a collectCoverageFrom option");
18
+ const testResultsRoot = path.join(resolvedRootDir, "build", "coverage");
19
+ const coverageReportDir = path.join(testResultsRoot, "report");
20
+ const coverageFileName = options.coverageFileName ?? "v8-coverage.json";
21
+ const disabledEnvVar = options.disabledEnvVar ?? "RB_DISABLE_COVERAGE";
22
+ const coverageEnabled = process.env[disabledEnvVar] !== "1";
23
+ const { global: thresholds, targets: thresholdTargets } = normalizeThresholdOptions(options.thresholds);
24
+ return {
25
+ rootDir: resolvedRootDir,
26
+ collectCoverageFrom,
27
+ testResultsRoot,
28
+ coverageReportDir,
29
+ coverageFileName,
30
+ thresholds,
31
+ thresholdTargets,
32
+ coverageEnabled,
33
+ disabledEnvVar,
34
+ includeAllFiles
35
+ };
44
36
  }
45
37
  function normalizeThresholdOptions(rawThresholds) {
46
- const globalThresholds = {
47
- ...DEFAULT_THRESHOLDS
48
- };
49
- const targets = [];
50
- if (!isPlainObject(rawThresholds)) {
51
- return {
52
- global: globalThresholds,
53
- targets
54
- };
55
- }
56
- const thresholdMap = rawThresholds;
57
- for (const key of THRESHOLD_KEYS) {
58
- const value = thresholdMap[key];
59
- if (isThresholdValue(value)) {
60
- globalThresholds[key] = value;
61
- }
62
- }
63
- if (Object.prototype.hasOwnProperty.call(thresholdMap, "global")) {
64
- if (!isPlainObject(thresholdMap.global)) {
65
- throw new Error("coverage thresholds: the `global` override must be an object of metric values");
66
- }
67
- Object.assign(globalThresholds, pickThresholdOverrides(thresholdMap.global));
68
- }
69
- for (const [pattern, overrides] of Object.entries(thresholdMap)) {
70
- if (pattern === "global" || THRESHOLD_KEY_SET.has(pattern)) {
71
- continue;
72
- }
73
- if (!isPlainObject(overrides)) {
74
- throw new Error(`coverage thresholds: override for "${pattern}" must be an object containing coverage metrics`);
75
- }
76
- targets.push({
77
- id: pattern,
78
- pattern,
79
- thresholds: {
80
- ...globalThresholds,
81
- ...pickThresholdOverrides(overrides)
82
- }
83
- });
84
- }
85
- return {
86
- global: globalThresholds,
87
- targets
88
- };
38
+ const globalThresholds = { ...DEFAULT_THRESHOLDS };
39
+ const targets = [];
40
+ if (!isPlainObject(rawThresholds)) return {
41
+ global: globalThresholds,
42
+ targets
43
+ };
44
+ const thresholdMap = rawThresholds;
45
+ for (const key of THRESHOLD_KEYS) {
46
+ const value = thresholdMap[key];
47
+ if (isThresholdValue(value)) globalThresholds[key] = value;
48
+ }
49
+ if (Object.prototype.hasOwnProperty.call(thresholdMap, "global")) {
50
+ if (!isPlainObject(thresholdMap.global)) throw new Error("coverage thresholds: the `global` override must be an object of metric values");
51
+ Object.assign(globalThresholds, pickThresholdOverrides(thresholdMap.global));
52
+ }
53
+ for (const [pattern, overrides] of Object.entries(thresholdMap)) {
54
+ if (pattern === "global" || THRESHOLD_KEY_SET.has(pattern)) continue;
55
+ if (!isPlainObject(overrides)) throw new Error(`coverage thresholds: override for "${pattern}" must be an object containing coverage metrics`);
56
+ targets.push({
57
+ id: pattern,
58
+ pattern,
59
+ thresholds: {
60
+ ...globalThresholds,
61
+ ...pickThresholdOverrides(overrides)
62
+ }
63
+ });
64
+ }
65
+ return {
66
+ global: globalThresholds,
67
+ targets
68
+ };
89
69
  }
90
70
  function pickThresholdOverrides(source) {
91
- const overrides = {};
92
- if (!isPlainObject(source)) {
93
- return overrides;
94
- }
95
- for (const key of THRESHOLD_KEYS) {
96
- const value = source[key];
97
- if (isThresholdValue(value)) {
98
- overrides[key] = value;
99
- }
100
- }
101
- return overrides;
71
+ const overrides = {};
72
+ if (!isPlainObject(source)) return overrides;
73
+ for (const key of THRESHOLD_KEYS) {
74
+ const value = source[key];
75
+ if (isThresholdValue(value)) overrides[key] = value;
76
+ }
77
+ return overrides;
102
78
  }
103
79
  function isPlainObject(value) {
104
- return value !== null && typeof value === "object" && !Array.isArray(value);
80
+ return value !== null && typeof value === "object" && !Array.isArray(value);
105
81
  }
106
82
  function isThresholdValue(value) {
107
- return typeof value === "number" && Number.isFinite(value);
83
+ return typeof value === "number" && Number.isFinite(value);
108
84
  }
109
- export {
110
- createCoverageConfig
111
- };
112
- //# sourceMappingURL=config.js.map
85
+ //#endregion
86
+ export { createCoverageConfig };
87
+
88
+ //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sources":["../../src/coverage/config.ts"],"sourcesContent":["import path from \"node:path\"\n\nimport type { CoverageConfig, CoverageHarnessOptions, CoverageThresholdMap, CoverageThresholdOption, CoverageThresholdTarget, CoverageThresholds } from \"./types\"\n\n\nconst DEFAULT_THRESHOLDS = {\n branches: 60,\n functions: 75,\n lines: 75,\n statements: 75,\n}\n\nconst THRESHOLD_KEYS = Object.keys(DEFAULT_THRESHOLDS) as Array<keyof CoverageThresholds>\nconst THRESHOLD_KEY_SET = new Set<string>(THRESHOLD_KEYS as string[])\n\nexport function createCoverageConfig(options: CoverageHarnessOptions): CoverageConfig {\n const { rootDir } = options as CoverageHarnessOptions\n if (!rootDir) {\n throw new Error(\"createCoverageConfig requires a rootDir\")\n }\n\n const resolvedRootDir = path.resolve(rootDir)\n const includeAllFiles = options.includeAllFiles !== false\n\n const collectCoverageFrom = Array.isArray(options.collectCoverageFrom)\n ? options.collectCoverageFrom\n .map((pattern) => String(pattern ?? \"\").trim())\n .filter((pattern) => pattern.length > 0)\n : []\n\n if (collectCoverageFrom.length === 0) {\n throw new Error(\"createCoverageConfig requires a collectCoverageFrom option\")\n }\n\n const testResultsRoot = path.join(resolvedRootDir, \"build\", \"coverage\")\n const coverageReportDir = path.join(testResultsRoot, \"report\")\n const coverageFileName = options.coverageFileName ?? \"v8-coverage.json\"\n const disabledEnvVar = options.disabledEnvVar ?? \"RB_DISABLE_COVERAGE\"\n const coverageEnabled = process.env[disabledEnvVar] !== \"1\"\n\n const { global: thresholds, targets: thresholdTargets } = normalizeThresholdOptions(options.thresholds)\n\n return {\n rootDir: resolvedRootDir,\n collectCoverageFrom,\n testResultsRoot,\n coverageReportDir,\n coverageFileName,\n thresholds,\n thresholdTargets,\n coverageEnabled,\n disabledEnvVar,\n includeAllFiles,\n }\n}\n\nfunction normalizeThresholdOptions(rawThresholds: CoverageThresholdOption | undefined): {\n global: CoverageThresholds\n targets: CoverageThresholdTarget[]\n} {\n const globalThresholds: CoverageThresholds = { ...DEFAULT_THRESHOLDS }\n const targets: CoverageThresholdTarget[] = []\n\n if (!isPlainObject(rawThresholds)) {\n return { global: globalThresholds, targets }\n }\n\n const thresholdMap = rawThresholds as CoverageThresholdMap\n\n for (const key of THRESHOLD_KEYS) {\n const value = thresholdMap[key]\n if (isThresholdValue(value)) {\n globalThresholds[key] = value\n }\n }\n\n if (Object.prototype.hasOwnProperty.call(thresholdMap, \"global\")) {\n if (!isPlainObject(thresholdMap.global)) {\n throw new Error(\"coverage thresholds: the `global` override must be an object of metric values\")\n }\n Object.assign(globalThresholds, pickThresholdOverrides(thresholdMap.global))\n }\n\n for (const [pattern, overrides] of Object.entries(thresholdMap)) {\n if (pattern === \"global\" || THRESHOLD_KEY_SET.has(pattern)) {\n continue\n }\n\n if (!isPlainObject(overrides)) {\n throw new Error(\n `coverage thresholds: override for \"${pattern}\" must be an object containing coverage metrics`,\n )\n }\n\n targets.push({\n id: pattern,\n pattern,\n thresholds: {\n ...globalThresholds,\n ...pickThresholdOverrides(overrides),\n },\n })\n }\n\n return { global: globalThresholds, targets }\n}\n\nfunction pickThresholdOverrides(source: unknown): Partial<CoverageThresholds> {\n const overrides: Partial<CoverageThresholds> = {}\n if (!isPlainObject(source)) {\n return overrides\n }\n\n for (const key of THRESHOLD_KEYS) {\n const value = (source as any)[key]\n if (isThresholdValue(value)) {\n overrides[key] = value\n }\n }\n\n return overrides\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === \"object\" && !Array.isArray(value)\n}\n\nfunction isThresholdValue(value: unknown): value is number {\n return typeof value === \"number\" && Number.isFinite(value)\n}\n"],"names":["DEFAULT_THRESHOLDS","branches","functions","lines","statements","THRESHOLD_KEYS","Object","keys","THRESHOLD_KEY_SET","Set","createCoverageConfig","options","rootDir","Error","resolvedRootDir","path","resolve","includeAllFiles","collectCoverageFrom","Array","isArray","map","pattern","String","trim","filter","length","testResultsRoot","join","coverageReportDir","coverageFileName","disabledEnvVar","coverageEnabled","process","env","global","thresholds","targets","thresholdTargets","normalizeThresholdOptions","rawThresholds","globalThresholds","isPlainObject","thresholdMap","key","value","isThresholdValue","prototype","hasOwnProperty","call","assign","pickThresholdOverrides","overrides","entries","has","push","id","source","Number","isFinite"],"mappings":"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"}
1
+ {"version":3,"file":"config.js","names":["path","CoverageConfig","CoverageHarnessOptions","CoverageThresholdMap","CoverageThresholdOption","CoverageThresholdTarget","CoverageThresholds","DEFAULT_THRESHOLDS","branches","functions","lines","statements","THRESHOLD_KEYS","Object","keys","Array","THRESHOLD_KEY_SET","Set","createCoverageConfig","options","rootDir","Error","resolvedRootDir","resolve","includeAllFiles","collectCoverageFrom","isArray","map","pattern","String","trim","filter","length","testResultsRoot","join","coverageReportDir","coverageFileName","disabledEnvVar","coverageEnabled","process","env","global","thresholds","targets","thresholdTargets","normalizeThresholdOptions","rawThresholds","globalThresholds","isPlainObject","thresholdMap","key","value","isThresholdValue","prototype","hasOwnProperty","call","assign","pickThresholdOverrides","overrides","entries","has","push","id","source","Partial","Record","Number","isFinite"],"sources":["../../src/coverage/config.ts"],"sourcesContent":["import path from \"node:path\"\n\nimport type { CoverageConfig, CoverageHarnessOptions, CoverageThresholdMap, CoverageThresholdOption, CoverageThresholdTarget, CoverageThresholds } from \"./types\"\n\n\nconst DEFAULT_THRESHOLDS = {\n branches: 60,\n functions: 75,\n lines: 75,\n statements: 75,\n}\n\nconst THRESHOLD_KEYS = Object.keys(DEFAULT_THRESHOLDS) as Array<keyof CoverageThresholds>\nconst THRESHOLD_KEY_SET = new Set<string>(THRESHOLD_KEYS as string[])\n\nexport function createCoverageConfig(options: CoverageHarnessOptions): CoverageConfig {\n const { rootDir } = options as CoverageHarnessOptions\n if (!rootDir) {\n throw new Error(\"createCoverageConfig requires a rootDir\")\n }\n\n const resolvedRootDir = path.resolve(rootDir)\n const includeAllFiles = options.includeAllFiles !== false\n\n const collectCoverageFrom = Array.isArray(options.collectCoverageFrom)\n ? options.collectCoverageFrom\n .map((pattern) => String(pattern ?? \"\").trim())\n .filter((pattern) => pattern.length > 0)\n : []\n\n if (collectCoverageFrom.length === 0) {\n throw new Error(\"createCoverageConfig requires a collectCoverageFrom option\")\n }\n\n const testResultsRoot = path.join(resolvedRootDir, \"build\", \"coverage\")\n const coverageReportDir = path.join(testResultsRoot, \"report\")\n const coverageFileName = options.coverageFileName ?? \"v8-coverage.json\"\n const disabledEnvVar = options.disabledEnvVar ?? \"RB_DISABLE_COVERAGE\"\n const coverageEnabled = process.env[disabledEnvVar] !== \"1\"\n\n const { global: thresholds, targets: thresholdTargets } = normalizeThresholdOptions(options.thresholds)\n\n return {\n rootDir: resolvedRootDir,\n collectCoverageFrom,\n testResultsRoot,\n coverageReportDir,\n coverageFileName,\n thresholds,\n thresholdTargets,\n coverageEnabled,\n disabledEnvVar,\n includeAllFiles,\n }\n}\n\nfunction normalizeThresholdOptions(rawThresholds: CoverageThresholdOption | undefined): {\n global: CoverageThresholds\n targets: CoverageThresholdTarget[]\n} {\n const globalThresholds: CoverageThresholds = { ...DEFAULT_THRESHOLDS }\n const targets: CoverageThresholdTarget[] = []\n\n if (!isPlainObject(rawThresholds)) {\n return { global: globalThresholds, targets }\n }\n\n const thresholdMap = rawThresholds as CoverageThresholdMap\n\n for (const key of THRESHOLD_KEYS) {\n const value = thresholdMap[key]\n if (isThresholdValue(value)) {\n globalThresholds[key] = value\n }\n }\n\n if (Object.prototype.hasOwnProperty.call(thresholdMap, \"global\")) {\n if (!isPlainObject(thresholdMap.global)) {\n throw new Error(\"coverage thresholds: the `global` override must be an object of metric values\")\n }\n Object.assign(globalThresholds, pickThresholdOverrides(thresholdMap.global))\n }\n\n for (const [pattern, overrides] of Object.entries(thresholdMap)) {\n if (pattern === \"global\" || THRESHOLD_KEY_SET.has(pattern)) {\n continue\n }\n\n if (!isPlainObject(overrides)) {\n throw new Error(\n `coverage thresholds: override for \"${pattern}\" must be an object containing coverage metrics`,\n )\n }\n\n targets.push({\n id: pattern,\n pattern,\n thresholds: {\n ...globalThresholds,\n ...pickThresholdOverrides(overrides),\n },\n })\n }\n\n return { global: globalThresholds, targets }\n}\n\nfunction pickThresholdOverrides(source: unknown): Partial<CoverageThresholds> {\n const overrides: Partial<CoverageThresholds> = {}\n if (!isPlainObject(source)) {\n return overrides\n }\n\n for (const key of THRESHOLD_KEYS) {\n const value = (source as any)[key]\n if (isThresholdValue(value)) {\n overrides[key] = value\n }\n }\n\n return overrides\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === \"object\" && !Array.isArray(value)\n}\n\nfunction isThresholdValue(value: unknown): value is number {\n return typeof value === \"number\" && Number.isFinite(value)\n}\n"],"mappings":";;AAKA,IAAMO,qBAAqB;CACzBC,UAAU;CACVC,WAAW;CACXC,OAAO;CACPC,YAAY;CACb;AAED,IAAMC,iBAAiBC,OAAOC,KAAKP,mBAAmB;AACtD,IAAMS,oBAAoB,IAAIC,IAAYL,eAA2B;AAErE,SAAgBM,qBAAqBC,SAAiD;CACpF,MAAM,EAAEC,YAAYD;AACpB,KAAI,CAACC,QACH,OAAM,IAAIC,MAAM,0CAA0C;CAG5D,MAAMC,kBAAkBtB,KAAKuB,QAAQH,QAAQ;CAC7C,MAAMI,kBAAkBL,QAAQK,oBAAoB;CAEpD,MAAMC,sBAAsBV,MAAMW,QAAQP,QAAQM,oBAAoB,GAClEN,QAAQM,oBACLE,KAAKC,YAAYC,OAAOD,WAAW,GAAG,CAACE,MAAM,CAAC,CAC9CC,QAAQH,YAAYA,QAAQI,SAAS,EAAE,GAC1C,EAAE;AAEN,KAAIP,oBAAoBO,WAAW,EACjC,OAAM,IAAIX,MAAM,6DAA6D;CAG/E,MAAMY,kBAAkBjC,KAAKkC,KAAKZ,iBAAiB,SAAS,WAAW;CACvE,MAAMa,oBAAoBnC,KAAKkC,KAAKD,iBAAiB,SAAS;CAC9D,MAAMG,mBAAmBjB,QAAQiB,oBAAoB;CACrD,MAAMC,iBAAiBlB,QAAQkB,kBAAkB;CACjD,MAAMC,kBAAkBC,QAAQC,IAAIH,oBAAoB;CAExD,MAAM,EAAEI,QAAQC,YAAYC,SAASC,qBAAqBC,0BAA0B1B,QAAQuB,WAAW;AAEvG,QAAO;EACLtB,SAASE;EACTG;EACAQ;EACAE;EACAC;EACAM;EACAE;EACAN;EACAD;EACAb;EACD;;AAGH,SAASqB,0BAA0BC,eAGjC;CACA,MAAMC,mBAAuC,EAAE,GAAGxC,oBAAoB;CACtE,MAAMoC,UAAqC,EAAE;AAE7C,KAAI,CAACK,cAAcF,cAAc,CAC/B,QAAO;EAAEL,QAAQM;EAAkBJ;EAAS;CAG9C,MAAMM,eAAeH;AAErB,MAAK,MAAMI,OAAOtC,gBAAgB;EAChC,MAAMuC,QAAQF,aAAaC;AAC3B,MAAIE,iBAAiBD,MAAM,CACzBJ,kBAAiBG,OAAOC;;AAI5B,KAAItC,OAAOwC,UAAUC,eAAeC,KAAKN,cAAc,SAAS,EAAE;AAChE,MAAI,CAACD,cAAcC,aAAaR,OAAO,CACrC,OAAM,IAAIpB,MAAM,gFAAgF;AAElGR,SAAO2C,OAAOT,kBAAkBU,uBAAuBR,aAAaR,OAAO,CAAC;;AAG9E,MAAK,MAAM,CAACb,SAAS8B,cAAc7C,OAAO8C,QAAQV,aAAa,EAAE;AAC/D,MAAIrB,YAAY,YAAYZ,kBAAkB4C,IAAIhC,QAAQ,CACxD;AAGF,MAAI,CAACoB,cAAcU,UAAU,CAC3B,OAAM,IAAIrC,MACR,sCAAsCO,QAAO,iDAC9C;AAGHe,UAAQkB,KAAK;GACXC,IAAIlC;GACJA;GACAc,YAAY;IACV,GAAGK;IACH,GAAGU,uBAAuBC,UAAS;IACrC;GACD,CAAC;;AAGJ,QAAO;EAAEjB,QAAQM;EAAkBJ;EAAS;;AAG9C,SAASc,uBAAuBM,QAA8C;CAC5E,MAAML,YAAyC,EAAE;AACjD,KAAI,CAACV,cAAce,OAAO,CACxB,QAAOL;AAGT,MAAK,MAAMR,OAAOtC,gBAAgB;EAChC,MAAMuC,QAASY,OAAeb;AAC9B,MAAIE,iBAAiBD,MAAM,CACzBO,WAAUR,OAAOC;;AAIrB,QAAOO;;AAGT,SAASV,cAAcG,OAAkD;AACvE,QAAOA,UAAU,QAAQ,OAAOA,UAAU,YAAY,CAACpC,MAAMW,QAAQyB,MAAM;;AAG7E,SAASC,iBAAiBD,OAAiC;AACzD,QAAO,OAAOA,UAAU,YAAYe,OAAOC,SAAShB,MAAM"}