synckit 0.10.2 → 0.11.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/README.md CHANGED
@@ -1,8 +1,9 @@
1
1
  # synckit
2
2
 
3
- [![GitHub Actions](https://github.com/un-ts/synckit/workflows/CI/badge.svg)](https://github.com/un-ts/synckit/actions/workflows/ci.yml)
3
+ [![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/un-ts/synckit/ci.yml?branch=main)](https://github.com/un-ts/synckit/actions/workflows/ci.yml?query=branch%3Amain)
4
4
  [![Codecov](https://img.shields.io/codecov/c/github/un-ts/synckit.svg)](https://codecov.io/gh/un-ts/synckit)
5
5
  [![type-coverage](https://img.shields.io/badge/dynamic/json.svg?label=type-coverage&prefix=%E2%89%A5&suffix=%&query=$.typeCoverage.atLeast&uri=https%3A%2F%2Fraw.githubusercontent.com%2Fun-ts%2Fsynckit%2Fmain%2Fpackage.json)](https://github.com/plantain-00/type-coverage)
6
+ [![CodeRabbit Pull Request Reviews](https://img.shields.io/coderabbit/prs/github/un-ts/synckit)](https://coderabbit.ai)
6
7
  [![npm](https://img.shields.io/npm/v/synckit.svg)](https://www.npmjs.com/package/synckit)
7
8
  [![GitHub Release](https://img.shields.io/github/release/un-ts/synckit)](https://github.com/un-ts/synckit/releases)
8
9
 
@@ -204,15 +205,15 @@ You can try it with running `yarn benchmark` by yourself. [Here](./benchmarks/be
204
205
 
205
206
  ## Sponsors
206
207
 
207
- | 1stG | RxTS | UnTS |
208
- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
209
- | [![1stG Open Collective backers and sponsors](https://opencollective.com/1stG/organizations.svg)](https://opencollective.com/1stG) | [![RxTS Open Collective backers and sponsors](https://opencollective.com/rxts/organizations.svg)](https://opencollective.com/rxts) | [![UnTS Open Collective backers and sponsors](https://opencollective.com/unts/organizations.svg)](https://opencollective.com/unts) |
208
+ | 1stG | RxTS | UnTS |
209
+ | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- |
210
+ | [![1stG Open Collective sponsors](https://opencollective.com/1stG/organizations.svg)](https://opencollective.com/1stG) | [![RxTS Open Collective sponsors](https://opencollective.com/rxts/organizations.svg)](https://opencollective.com/rxts) | [![UnTS Open Collective sponsors](https://opencollective.com/unts/organizations.svg)](https://opencollective.com/unts) |
210
211
 
211
212
  ## Backers
212
213
 
213
- | 1stG | RxTS | UnTS |
214
- | -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- |
215
- | [![1stG Open Collective backers and sponsors](https://opencollective.com/1stG/individuals.svg)](https://opencollective.com/1stG) | [![RxTS Open Collective backers and sponsors](https://opencollective.com/rxts/individuals.svg)](https://opencollective.com/rxts) | [![UnTS Open Collective backers and sponsors](https://opencollective.com/unts/individuals.svg)](https://opencollective.com/unts) |
214
+ | 1stG | RxTS | UnTS |
215
+ | ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- |
216
+ | [![1stG Open Collective backers](https://opencollective.com/1stG/individuals.svg)](https://opencollective.com/1stG) | [![RxTS Open Collective backers](https://opencollective.com/rxts/individuals.svg)](https://opencollective.com/rxts) | [![UnTS Open Collective backers](https://opencollective.com/unts/individuals.svg)](https://opencollective.com/unts) |
216
217
 
217
218
  ## Who are using `synckit`
218
219
 
@@ -0,0 +1,5 @@
1
+ export declare const hasFlag: (flag: string) => boolean;
2
+ export declare const parseVersion: (version: string) => number[];
3
+ export declare const compareVersion: (version1: string, version2: string) => 1 | -1 | 0;
4
+ export declare const NODE_VERSION: string;
5
+ export declare const compareNodeVersion: (version: string) => 1 | -1 | 0;
package/lib/common.js ADDED
@@ -0,0 +1,23 @@
1
+ var _a;
2
+ const NODE_OPTIONS = (_a = process.env.NODE_OPTIONS) === null || _a === void 0 ? void 0 : _a.split(/\s+/);
3
+ export const hasFlag = (flag) => (NODE_OPTIONS === null || NODE_OPTIONS === void 0 ? void 0 : NODE_OPTIONS.includes(flag)) || process.argv.includes(flag);
4
+ export const parseVersion = (version) => version.split('.').map(Number.parseFloat);
5
+ export const compareVersion = (version1, version2) => {
6
+ const versions1 = parseVersion(version1);
7
+ const versions2 = parseVersion(version2);
8
+ const length = Math.max(versions1.length, versions2.length);
9
+ for (let i = 0; i < length; i++) {
10
+ const v1 = versions1[i] || 0;
11
+ const v2 = versions2[i] || 0;
12
+ if (v1 > v2) {
13
+ return 1;
14
+ }
15
+ if (v1 < v2) {
16
+ return -1;
17
+ }
18
+ }
19
+ return 0;
20
+ };
21
+ export const NODE_VERSION = process.versions.node;
22
+ export const compareNodeVersion = (version) => compareVersion(NODE_VERSION, version);
23
+ //# sourceMappingURL=common.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":";AAAA,MAAM,YAAY,GAAG,MAAA,OAAO,CAAC,GAAG,CAAC,YAAY,0CAAE,KAAK,CAAC,KAAK,CAAC,CAAA;AAE3D,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,IAAY,EAAE,EAAE,CACtC,CAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,QAAQ,CAAC,IAAI,CAAC,KAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;AAE7D,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,OAAe,EAAE,EAAE,CAC9C,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;AAG3C,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,QAAgB,EAAE,QAAgB,EAAE,EAAE;IACnE,MAAM,SAAS,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAA;IACxC,MAAM,SAAS,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAA;IACxC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,CAAA;IAC3D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAChC,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QAC5B,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QAC5B,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;YACZ,OAAO,CAAC,CAAA;QACV,CAAC;QACD,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;YACZ,OAAO,CAAC,CAAC,CAAA;QACX,CAAC;IACH,CAAC;IACD,OAAO,CAAC,CAAA;AACV,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAA;AAEjD,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,OAAe,EAAE,EAAE,CACpD,cAAc,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA"}
@@ -0,0 +1,38 @@
1
+ import type { GlobalShim, ValueOf } from './types.js';
2
+ export declare const TsRunner: {
3
+ readonly Node: "node";
4
+ readonly Bun: "bun";
5
+ readonly TsNode: "ts-node";
6
+ readonly EsbuildRegister: "esbuild-register";
7
+ readonly EsbuildRunner: "esbuild-runner";
8
+ readonly OXC: "oxc";
9
+ readonly SWC: "swc";
10
+ readonly TSX: "tsx";
11
+ };
12
+ export type TsRunner = ValueOf<typeof TsRunner>;
13
+ export declare const TS_ESM_PARTIAL_SUPPORTED: boolean;
14
+ export declare const MTS_SUPPORTED: boolean;
15
+ export declare const MODULE_REGISTER_SUPPORTED: boolean;
16
+ export declare const STRIP_TYPES_NODE_VERSION = "22.6";
17
+ export declare const TRANSFORM_TYPES_NODE_VERSION = "22.7";
18
+ export declare const FEATURE_TYPESCRIPT_NODE_VERSION = "22.10";
19
+ export declare const DEFAULT_TYPES_NODE_VERSION = "23.6";
20
+ export declare const STRIP_TYPES_FLAG = "--experimental-strip-types";
21
+ export declare const TRANSFORM_TYPES_FLAG = "--experimental-transform-types";
22
+ export declare const NO_STRIP_TYPES_FLAG = "--no-experimental-strip-types";
23
+ export declare const NODE_OPTIONS: string[];
24
+ export declare const NO_STRIP_TYPES: boolean;
25
+ export declare const DEFAULT_TIMEOUT: number | undefined;
26
+ export declare const DEFAULT_EXEC_ARGV: string[];
27
+ export declare const DEFAULT_TS_RUNNER: TsRunner | undefined;
28
+ export declare const DEFAULT_GLOBAL_SHIMS: boolean;
29
+ export declare const DEFAULT_GLOBAL_SHIMS_PRESET: GlobalShim[];
30
+ export declare const IMPORT_FLAG = "--import";
31
+ export declare const REQUIRE_FLAG = "--require";
32
+ export declare const REQUIRE_ABBR_FLAG = "-r";
33
+ export declare const REQUIRE_FLAGS: Set<string>;
34
+ export declare const LOADER_FLAG = "--loader";
35
+ export declare const EXPERIMENTAL_LOADER_FLAG = "--experimental-loader";
36
+ export declare const LOADER_FLAGS: Set<string>;
37
+ export declare const IMPORT_FLAG_SUPPORTED: boolean;
38
+ export declare const INT32_BYTES = 4;
@@ -0,0 +1,54 @@
1
+ import { compareNodeVersion, hasFlag } from './common.js';
2
+ export const TsRunner = {
3
+ Node: 'node',
4
+ Bun: 'bun',
5
+ TsNode: 'ts-node',
6
+ EsbuildRegister: 'esbuild-register',
7
+ EsbuildRunner: 'esbuild-runner',
8
+ OXC: 'oxc',
9
+ SWC: 'swc',
10
+ TSX: 'tsx',
11
+ };
12
+ const { NODE_OPTIONS: NODE_OPTIONS_ = '', SYNCKIT_EXEC_ARGV = '', SYNCKIT_GLOBAL_SHIMS, SYNCKIT_TIMEOUT, SYNCKIT_TS_RUNNER, } = process.env;
13
+ export const TS_ESM_PARTIAL_SUPPORTED = compareNodeVersion('16') >= 0 &&
14
+ compareNodeVersion('18.19') < 0;
15
+ export const MTS_SUPPORTED = compareNodeVersion('20.8') >= 0;
16
+ export const MODULE_REGISTER_SUPPORTED = MTS_SUPPORTED ||
17
+ compareNodeVersion('18.19') >= 0;
18
+ export const STRIP_TYPES_NODE_VERSION = '22.6';
19
+ export const TRANSFORM_TYPES_NODE_VERSION = '22.7';
20
+ export const FEATURE_TYPESCRIPT_NODE_VERSION = '22.10';
21
+ export const DEFAULT_TYPES_NODE_VERSION = '23.6';
22
+ export const STRIP_TYPES_FLAG = '--experimental-strip-types';
23
+ export const TRANSFORM_TYPES_FLAG = '--experimental-transform-types';
24
+ export const NO_STRIP_TYPES_FLAG = '--no-experimental-strip-types';
25
+ export const NODE_OPTIONS = NODE_OPTIONS_.split(/\s+/);
26
+ export const NO_STRIP_TYPES = hasFlag(NO_STRIP_TYPES_FLAG) &&
27
+ (compareNodeVersion(FEATURE_TYPESCRIPT_NODE_VERSION) >= 0
28
+ ? process.features.typescript === false
29
+ : !hasFlag(STRIP_TYPES_FLAG) && !hasFlag(TRANSFORM_TYPES_FLAG));
30
+ export const DEFAULT_TIMEOUT = SYNCKIT_TIMEOUT ? +SYNCKIT_TIMEOUT : undefined;
31
+ export const DEFAULT_EXEC_ARGV = SYNCKIT_EXEC_ARGV.split(',');
32
+ export const DEFAULT_TS_RUNNER = SYNCKIT_TS_RUNNER;
33
+ export const DEFAULT_GLOBAL_SHIMS = ['1', 'true'].includes(SYNCKIT_GLOBAL_SHIMS);
34
+ export const DEFAULT_GLOBAL_SHIMS_PRESET = [
35
+ {
36
+ moduleName: 'node-fetch',
37
+ globalName: 'fetch',
38
+ },
39
+ {
40
+ moduleName: 'node:perf_hooks',
41
+ globalName: 'performance',
42
+ named: 'performance',
43
+ },
44
+ ];
45
+ export const IMPORT_FLAG = '--import';
46
+ export const REQUIRE_FLAG = '--require';
47
+ export const REQUIRE_ABBR_FLAG = '-r';
48
+ export const REQUIRE_FLAGS = new Set([REQUIRE_FLAG, REQUIRE_ABBR_FLAG]);
49
+ export const LOADER_FLAG = '--loader';
50
+ export const EXPERIMENTAL_LOADER_FLAG = '--experimental-loader';
51
+ export const LOADER_FLAGS = new Set([LOADER_FLAG, EXPERIMENTAL_LOADER_FLAG]);
52
+ export const IMPORT_FLAG_SUPPORTED = compareNodeVersion('20.6') >= 0;
53
+ export const INT32_BYTES = 4;
54
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import { TsRunner } from './constants.js';
2
+ import type { AnyFn, GlobalShim, StdioChunk, SynckitOptions } from './types.js';
3
+ export declare const isFile: (path: string) => boolean;
4
+ export declare const dataUrl: (code: string) => import("url").URL;
5
+ export declare const hasRequireFlag: (execArgv: string[]) => boolean;
6
+ export declare const hasImportFlag: (execArgv: string[]) => boolean;
7
+ export declare const hasLoaderFlag: (execArgv: string[]) => boolean;
8
+ export declare const setupTsRunner: (workerPath: string, { execArgv, tsRunner, }?: {
9
+ execArgv?: string[];
10
+ tsRunner?: TsRunner;
11
+ }) => {
12
+ ext: string;
13
+ isTs: boolean;
14
+ jsUseEsm: boolean;
15
+ tsRunner: TsRunner | undefined;
16
+ tsUseEsm: boolean;
17
+ workerPath: string;
18
+ pnpLoaderPath: string | undefined;
19
+ execArgv: string[];
20
+ };
21
+ export declare const md5Hash: (text: string) => string;
22
+ export declare const encodeImportModule: (moduleNameOrGlobalShim: GlobalShim | string, type?: "import" | "require") => string;
23
+ export declare const generateGlobals: (workerPath: string, globalShims: GlobalShim[], type?: "import" | "require") => string;
24
+ export declare function extractProperties<T extends object>(object: T): T;
25
+ export declare function extractProperties<T>(object?: T): T | undefined;
26
+ export declare function startWorkerThread<T extends AnyFn, R = Awaited<ReturnType<T>>>(workerPath: string, { timeout, execArgv, tsRunner, transferList, globalShims, }?: SynckitOptions): (...args: Parameters<T>) => R;
27
+ export declare const overrideStdio: (stdio: StdioChunk[]) => void;
package/lib/helpers.js ADDED
@@ -0,0 +1,413 @@
1
+ import { __rest } from "tslib";
2
+ import { createHash } from 'node:crypto';
3
+ import fs from 'node:fs';
4
+ import path from 'node:path';
5
+ import { fileURLToPath, pathToFileURL } from 'node:url';
6
+ import { Worker, receiveMessageOnPort, } from 'node:worker_threads';
7
+ import { tryExtensions, findUp, cjsRequire, isPkgAvailable } from '@pkgr/core';
8
+ import { compareNodeVersion } from './common.js';
9
+ import { DEFAULT_EXEC_ARGV, DEFAULT_GLOBAL_SHIMS, DEFAULT_GLOBAL_SHIMS_PRESET, DEFAULT_TIMEOUT, DEFAULT_TS_RUNNER, DEFAULT_TYPES_NODE_VERSION, IMPORT_FLAG, IMPORT_FLAG_SUPPORTED, INT32_BYTES, LOADER_FLAG, LOADER_FLAGS, MODULE_REGISTER_SUPPORTED, MTS_SUPPORTED, NO_STRIP_TYPES, NO_STRIP_TYPES_FLAG, NODE_OPTIONS, REQUIRE_ABBR_FLAG, REQUIRE_FLAGS, STRIP_TYPES_FLAG, STRIP_TYPES_NODE_VERSION, TRANSFORM_TYPES_FLAG, TRANSFORM_TYPES_NODE_VERSION, TS_ESM_PARTIAL_SUPPORTED, TsRunner, } from './constants.js';
10
+ export const isFile = (path) => {
11
+ var _a;
12
+ try {
13
+ return !!((_a = fs.statSync(path, { throwIfNoEntry: false })) === null || _a === void 0 ? void 0 : _a.isFile());
14
+ }
15
+ catch (_b) {
16
+ return false;
17
+ }
18
+ };
19
+ export const dataUrl = (code) => new URL(`data:text/javascript,${encodeURIComponent(code)}`);
20
+ export const hasRequireFlag = (execArgv) => execArgv.some(execArg => REQUIRE_FLAGS.has(execArg));
21
+ export const hasImportFlag = (execArgv) => execArgv.includes(IMPORT_FLAG);
22
+ export const hasLoaderFlag = (execArgv) => execArgv.some(execArg => LOADER_FLAGS.has(execArg));
23
+ export const setupTsRunner = (workerPath, { execArgv = DEFAULT_EXEC_ARGV, tsRunner, } = {}) => {
24
+ let ext = path.extname(workerPath);
25
+ if (!/([/\\])node_modules\1/.test(workerPath) &&
26
+ (!ext || /^\.[cm]?js$/.test(ext))) {
27
+ const workPathWithoutExt = ext
28
+ ? workerPath.slice(0, -ext.length)
29
+ : workerPath;
30
+ let extensions;
31
+ switch (ext) {
32
+ case '.cjs': {
33
+ extensions = ['.cts', '.cjs'];
34
+ break;
35
+ }
36
+ case '.mjs': {
37
+ extensions = ['.mts', '.mjs'];
38
+ break;
39
+ }
40
+ default: {
41
+ extensions = ['.ts', '.js'];
42
+ break;
43
+ }
44
+ }
45
+ const found = tryExtensions(workPathWithoutExt, extensions);
46
+ let differentExt;
47
+ if (found && (!ext || (differentExt = found !== workPathWithoutExt))) {
48
+ workerPath = found;
49
+ if (differentExt) {
50
+ ext = path.extname(workerPath);
51
+ }
52
+ }
53
+ }
54
+ const isTs = /\.[cm]?ts$/.test(workerPath);
55
+ let jsUseEsm = workerPath.endsWith('.mjs');
56
+ let tsUseEsm = workerPath.endsWith('.mts');
57
+ if (isTs) {
58
+ if (!tsUseEsm) {
59
+ const pkg = findUp(workerPath);
60
+ if (pkg) {
61
+ tsUseEsm = cjsRequire(pkg).type === 'module';
62
+ }
63
+ }
64
+ const stripTypesIndex = execArgv.indexOf(STRIP_TYPES_FLAG);
65
+ const transformTypesIndex = execArgv.indexOf(TRANSFORM_TYPES_FLAG);
66
+ const noStripTypesIndex = execArgv.indexOf(NO_STRIP_TYPES_FLAG);
67
+ const execArgvNoStripTypes = noStripTypesIndex > stripTypesIndex ||
68
+ noStripTypesIndex > transformTypesIndex;
69
+ const noStripTypes = execArgvNoStripTypes ||
70
+ (stripTypesIndex === -1 && transformTypesIndex === -1 && NO_STRIP_TYPES);
71
+ if (tsRunner == null) {
72
+ if (process.versions.bun) {
73
+ tsRunner = TsRunner.Bun;
74
+ }
75
+ else if (!noStripTypes &&
76
+ compareNodeVersion(STRIP_TYPES_NODE_VERSION) >= 0) {
77
+ tsRunner = TsRunner.Node;
78
+ }
79
+ else if (isPkgAvailable(TsRunner.TsNode)) {
80
+ tsRunner = TsRunner.TsNode;
81
+ }
82
+ }
83
+ switch (tsRunner) {
84
+ case TsRunner.Bun: {
85
+ break;
86
+ }
87
+ case TsRunner.Node: {
88
+ if (compareNodeVersion(STRIP_TYPES_NODE_VERSION) < 0) {
89
+ throw new Error('type stripping is not supported in this node version');
90
+ }
91
+ if (noStripTypes) {
92
+ throw new Error('type stripping is disabled explicitly');
93
+ }
94
+ if (compareNodeVersion(DEFAULT_TYPES_NODE_VERSION) >= 0) {
95
+ break;
96
+ }
97
+ if (compareNodeVersion(TRANSFORM_TYPES_NODE_VERSION) >= 0 &&
98
+ !execArgv.includes(TRANSFORM_TYPES_FLAG)) {
99
+ execArgv = [TRANSFORM_TYPES_FLAG, ...execArgv];
100
+ }
101
+ else if (compareNodeVersion(STRIP_TYPES_NODE_VERSION) >= 0 &&
102
+ !execArgv.includes(STRIP_TYPES_FLAG)) {
103
+ execArgv = [STRIP_TYPES_FLAG, ...execArgv];
104
+ }
105
+ break;
106
+ }
107
+ case TsRunner.TsNode: {
108
+ if (tsUseEsm) {
109
+ if (!execArgv.includes(LOADER_FLAG)) {
110
+ execArgv = [LOADER_FLAG, `${TsRunner.TsNode}/esm`, ...execArgv];
111
+ }
112
+ }
113
+ else if (!hasRequireFlag(execArgv)) {
114
+ execArgv = [
115
+ REQUIRE_ABBR_FLAG,
116
+ `${TsRunner.TsNode}/register`,
117
+ ...execArgv,
118
+ ];
119
+ }
120
+ break;
121
+ }
122
+ case TsRunner.EsbuildRegister: {
123
+ if (tsUseEsm) {
124
+ if (!hasLoaderFlag(execArgv)) {
125
+ execArgv = [
126
+ LOADER_FLAG,
127
+ `${TsRunner.EsbuildRegister}/loader`,
128
+ ...execArgv,
129
+ ];
130
+ }
131
+ }
132
+ else if (!hasRequireFlag(execArgv)) {
133
+ execArgv = [REQUIRE_ABBR_FLAG, TsRunner.EsbuildRegister, ...execArgv];
134
+ }
135
+ break;
136
+ }
137
+ case TsRunner.EsbuildRunner: {
138
+ if (!hasRequireFlag(execArgv)) {
139
+ execArgv = [
140
+ REQUIRE_ABBR_FLAG,
141
+ `${TsRunner.EsbuildRunner}/register`,
142
+ ...execArgv,
143
+ ];
144
+ }
145
+ break;
146
+ }
147
+ case TsRunner.OXC: {
148
+ if (!execArgv.includes(IMPORT_FLAG)) {
149
+ execArgv = [
150
+ IMPORT_FLAG,
151
+ `@${TsRunner.OXC}-node/core/register`,
152
+ ...execArgv,
153
+ ];
154
+ }
155
+ break;
156
+ }
157
+ case TsRunner.SWC: {
158
+ if (tsUseEsm) {
159
+ if (IMPORT_FLAG_SUPPORTED) {
160
+ if (!hasImportFlag(execArgv)) {
161
+ execArgv = [
162
+ IMPORT_FLAG,
163
+ `@${TsRunner.SWC}-node/register/esm-register`,
164
+ ...execArgv,
165
+ ];
166
+ }
167
+ }
168
+ else if (!hasLoaderFlag(execArgv)) {
169
+ execArgv = [
170
+ LOADER_FLAG,
171
+ `@${TsRunner.SWC}-node/register/esm`,
172
+ ...execArgv,
173
+ ];
174
+ }
175
+ }
176
+ else if (!hasRequireFlag(execArgv)) {
177
+ execArgv = [
178
+ REQUIRE_ABBR_FLAG,
179
+ `@${TsRunner.SWC}-node/register`,
180
+ ...execArgv,
181
+ ];
182
+ }
183
+ break;
184
+ }
185
+ case TsRunner.TSX: {
186
+ if (IMPORT_FLAG_SUPPORTED) {
187
+ if (!execArgv.includes(IMPORT_FLAG)) {
188
+ execArgv = [IMPORT_FLAG, TsRunner.TSX, ...execArgv];
189
+ }
190
+ }
191
+ else if (!execArgv.includes(LOADER_FLAG)) {
192
+ execArgv = [LOADER_FLAG, TsRunner.TSX, ...execArgv];
193
+ }
194
+ break;
195
+ }
196
+ default: {
197
+ throw new Error(`Unknown ts runner: ${String(tsRunner)}`);
198
+ }
199
+ }
200
+ }
201
+ else if (!jsUseEsm && !workerPath.endsWith('.cjs')) {
202
+ const pkg = findUp(workerPath);
203
+ if (pkg) {
204
+ jsUseEsm = cjsRequire(pkg).type === 'module';
205
+ }
206
+ }
207
+ let resolvedPnpLoaderPath;
208
+ if (process.versions.pnp) {
209
+ let pnpApiPath;
210
+ try {
211
+ pnpApiPath = cjsRequire.resolve('pnpapi');
212
+ }
213
+ catch (_a) { }
214
+ if (pnpApiPath &&
215
+ !NODE_OPTIONS.some((option, index) => REQUIRE_FLAGS.has(option) &&
216
+ pnpApiPath === cjsRequire.resolve(NODE_OPTIONS[index + 1])) &&
217
+ !execArgv.includes(pnpApiPath)) {
218
+ execArgv = [REQUIRE_ABBR_FLAG, pnpApiPath, ...execArgv];
219
+ const pnpLoaderPath = path.resolve(pnpApiPath, '../.pnp.loader.mjs');
220
+ if (isFile(pnpLoaderPath)) {
221
+ resolvedPnpLoaderPath = pathToFileURL(pnpLoaderPath).href;
222
+ if (!MODULE_REGISTER_SUPPORTED) {
223
+ execArgv = [LOADER_FLAG, resolvedPnpLoaderPath, ...execArgv];
224
+ }
225
+ }
226
+ }
227
+ }
228
+ return {
229
+ ext,
230
+ isTs,
231
+ jsUseEsm,
232
+ tsRunner,
233
+ tsUseEsm,
234
+ workerPath,
235
+ pnpLoaderPath: resolvedPnpLoaderPath,
236
+ execArgv,
237
+ };
238
+ };
239
+ export const md5Hash = (text) => createHash('md5').update(text).digest('hex');
240
+ export const encodeImportModule = (moduleNameOrGlobalShim, type = 'import') => {
241
+ const { moduleName, globalName, named, conditional } = typeof moduleNameOrGlobalShim === 'string'
242
+ ? { moduleName: moduleNameOrGlobalShim }
243
+ : moduleNameOrGlobalShim;
244
+ const importStatement = type === 'import'
245
+ ? `import${globalName
246
+ ? ' ' +
247
+ (named === null
248
+ ? '* as ' + globalName
249
+ : (named === null || named === void 0 ? void 0 : named.trim())
250
+ ? `{${named}}`
251
+ : globalName) +
252
+ ' from'
253
+ : ''} '${path.isAbsolute(moduleName)
254
+ ? String(pathToFileURL(moduleName))
255
+ : moduleName}'`
256
+ : `${globalName
257
+ ? 'const ' + ((named === null || named === void 0 ? void 0 : named.trim()) ? `{${named}}` : globalName) + '='
258
+ : ''}require('${moduleName
259
+ .replace(/\\/g, '\\\\')}')`;
260
+ if (!globalName) {
261
+ return importStatement;
262
+ }
263
+ const overrideStatement = `globalThis.${globalName}=${(named === null || named === void 0 ? void 0 : named.trim()) ? named : globalName}`;
264
+ return (importStatement +
265
+ (conditional === false
266
+ ? `;${overrideStatement}`
267
+ : `;if(!globalThis.${globalName})${overrideStatement}`));
268
+ };
269
+ export const _generateGlobals = (globalShims, type) => globalShims.reduce((acc, shim) => `${acc}${acc ? ';' : ''}${encodeImportModule(shim, type)}`, '');
270
+ let globalsCache;
271
+ let tmpdir;
272
+ const _dirname = typeof __dirname === 'undefined'
273
+ ? path.dirname(fileURLToPath(import.meta.url))
274
+ : __dirname;
275
+ export const generateGlobals = (workerPath, globalShims, type = 'import') => {
276
+ if (globalShims.length === 0) {
277
+ return '';
278
+ }
279
+ globalsCache !== null && globalsCache !== void 0 ? globalsCache : (globalsCache = new Map());
280
+ const cached = globalsCache.get(workerPath);
281
+ if (cached) {
282
+ const [content, filepath] = cached;
283
+ if ((type === 'require' && !filepath) ||
284
+ (type === 'import' && filepath && isFile(filepath))) {
285
+ return content;
286
+ }
287
+ }
288
+ const globals = _generateGlobals(globalShims, type);
289
+ let content = globals;
290
+ let filepath;
291
+ if (type === 'import') {
292
+ if (!tmpdir) {
293
+ tmpdir = path.resolve(findUp(_dirname), '../node_modules/.synckit');
294
+ }
295
+ fs.mkdirSync(tmpdir, { recursive: true });
296
+ filepath = path.resolve(tmpdir, md5Hash(workerPath) + '.mjs');
297
+ content = encodeImportModule(filepath);
298
+ fs.writeFileSync(filepath, globals);
299
+ }
300
+ globalsCache.set(workerPath, [content, filepath]);
301
+ return content;
302
+ };
303
+ export function extractProperties(object) {
304
+ if (object && typeof object === 'object') {
305
+ const properties = {};
306
+ for (const key in object) {
307
+ properties[key] = object[key];
308
+ }
309
+ return properties;
310
+ }
311
+ }
312
+ let sharedBuffer;
313
+ let sharedBufferView;
314
+ export function startWorkerThread(workerPath, { timeout = DEFAULT_TIMEOUT, execArgv = DEFAULT_EXEC_ARGV, tsRunner = DEFAULT_TS_RUNNER, transferList = [], globalShims = DEFAULT_GLOBAL_SHIMS, } = {}) {
315
+ const { port1: mainPort, port2: workerPort } = new MessageChannel();
316
+ const { isTs, ext, jsUseEsm, tsUseEsm, tsRunner: finalTsRunner, workerPath: finalWorkerPath, pnpLoaderPath, execArgv: finalExecArgv, } = setupTsRunner(workerPath, { execArgv, tsRunner });
317
+ const workerPathUrl = pathToFileURL(finalWorkerPath);
318
+ if (/\.[cm]ts$/.test(finalWorkerPath)) {
319
+ const isTsxSupported = !tsUseEsm || TS_ESM_PARTIAL_SUPPORTED;
320
+ if (!finalTsRunner) {
321
+ throw new Error('No ts runner specified, ts worker path is not supported');
322
+ }
323
+ else if ([
324
+ TsRunner.EsbuildRegister,
325
+ TsRunner.EsbuildRunner,
326
+ ...(TS_ESM_PARTIAL_SUPPORTED
327
+ ? [
328
+ TsRunner.OXC,
329
+ TsRunner.SWC,
330
+ ]
331
+ : []),
332
+ ...(isTsxSupported ? [] : [TsRunner.TSX]),
333
+ ].includes(finalTsRunner)) {
334
+ throw new Error(`${finalTsRunner} is not supported for ${ext} files yet` +
335
+ (isTsxSupported
336
+ ? ', you can try [tsx](https://github.com/esbuild-kit/tsx) instead'
337
+ : MTS_SUPPORTED
338
+ ? ', you can try [oxc](https://github.com/oxc-project/oxc-node) or [swc](https://github.com/swc-project/swc-node/tree/master/packages/register) instead'
339
+ : ''));
340
+ }
341
+ }
342
+ const finalGlobalShims = (globalShims === true
343
+ ? DEFAULT_GLOBAL_SHIMS_PRESET
344
+ : Array.isArray(globalShims)
345
+ ? globalShims
346
+ : []).filter(({ moduleName }) => isPkgAvailable(moduleName));
347
+ sharedBufferView !== null && sharedBufferView !== void 0 ? sharedBufferView : (sharedBufferView = new Int32Array((sharedBuffer !== null && sharedBuffer !== void 0 ? sharedBuffer : (sharedBuffer = new SharedArrayBuffer(INT32_BYTES))), 0, 1));
348
+ const useGlobals = finalGlobalShims.length > 0;
349
+ const useEval = isTs ? !tsUseEsm : !jsUseEsm && useGlobals;
350
+ const worker = new Worker((jsUseEsm && useGlobals) || (tsUseEsm && finalTsRunner === TsRunner.TsNode)
351
+ ? dataUrl(`${generateGlobals(finalWorkerPath, finalGlobalShims)};import '${String(workerPathUrl)}'`)
352
+ : useEval
353
+ ? `${generateGlobals(finalWorkerPath, finalGlobalShims, 'require')};${encodeImportModule(finalWorkerPath, 'require')}`
354
+ : workerPathUrl, {
355
+ eval: useEval,
356
+ workerData: { sharedBufferView, workerPort, pnpLoaderPath },
357
+ transferList: [workerPort, ...transferList],
358
+ execArgv: finalExecArgv,
359
+ });
360
+ let nextID = 0;
361
+ const receiveMessageWithId = (port, expectedId, waitingTimeout) => {
362
+ const start = Date.now();
363
+ const status = Atomics.wait(sharedBufferView, 0, 0, waitingTimeout);
364
+ Atomics.store(sharedBufferView, 0, 0);
365
+ if (!['ok', 'not-equal'].includes(status)) {
366
+ const abortMsg = {
367
+ id: expectedId,
368
+ cmd: 'abort',
369
+ };
370
+ port.postMessage(abortMsg);
371
+ throw new Error('Internal error: Atomics.wait() failed: ' + status);
372
+ }
373
+ const _a = receiveMessageOnPort(mainPort).message, { id } = _a, message = __rest(_a, ["id"]);
374
+ if (id < expectedId) {
375
+ const waitingTime = Date.now() - start;
376
+ return receiveMessageWithId(port, expectedId, waitingTimeout ? waitingTimeout - waitingTime : undefined);
377
+ }
378
+ if (expectedId !== id) {
379
+ throw new Error(`Internal error: Expected id ${expectedId} but got id ${id}`);
380
+ }
381
+ return Object.assign({ id }, message);
382
+ };
383
+ const syncFn = (...args) => {
384
+ const id = nextID++;
385
+ const msg = { id, args };
386
+ worker.postMessage(msg);
387
+ const { result, error, properties, stdio } = receiveMessageWithId(mainPort, id, timeout);
388
+ for (const { type, chunk, encoding } of stdio) {
389
+ process[type].write(chunk, encoding);
390
+ }
391
+ if (error) {
392
+ throw Object.assign(error, properties);
393
+ }
394
+ return result;
395
+ };
396
+ worker.unref();
397
+ return syncFn;
398
+ }
399
+ export const overrideStdio = (stdio) => {
400
+ for (const type of ['stdout', 'stderr']) {
401
+ process[type]._writev = (chunks, callback) => {
402
+ for (const { chunk, encoding, } of chunks) {
403
+ stdio.push({
404
+ type,
405
+ chunk,
406
+ encoding,
407
+ });
408
+ }
409
+ callback();
410
+ };
411
+ }
412
+ };
413
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACvD,OAAO,EAEL,MAAM,EACN,oBAAoB,GACrB,MAAM,qBAAqB,CAAA;AAE5B,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAE9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,2BAA2B,EAC3B,eAAe,EACf,iBAAiB,EACjB,0BAA0B,EAC1B,WAAW,EACX,qBAAqB,EACrB,WAAW,EACX,WAAW,EACX,YAAY,EACZ,yBAAyB,EACzB,aAAa,EACb,cAAc,EACd,mBAAmB,EACnB,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,wBAAwB,EACxB,oBAAoB,EACpB,4BAA4B,EAC5B,wBAAwB,EACxB,QAAQ,GACT,MAAM,gBAAgB,CAAA;AAYvB,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,EAAE;;IACrC,IAAI,CAAC;QACH,OAAO,CAAC,CAAC,CAAA,MAAA,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,0CAAE,MAAM,EAAE,CAAA,CAAA;IACjE,CAAC;IAAC,WAAM,CAAC;QAEP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,IAAY,EAAE,EAAE,CACtC,IAAI,GAAG,CAAC,wBAAwB,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;AAE7D,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,QAAkB,EAAE,EAAE,CACnD,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAA;AAEtD,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,QAAkB,EAAE,EAAE,CAClD,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;AAEhC,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,QAAkB,EAAE,EAAE,CAClD,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAA;AAErD,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,UAAkB,EAClB,EACE,QAAQ,GAAG,iBAAiB,EAC5B,QAAQ,MACwC,EAAE,EACpD,EAAE;IACF,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;IAElC,IACE,CAAC,uBAAuB,CAAC,IAAI,CAAC,UAAU,CAAC;QACzC,CAAC,CAAC,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EACjC,CAAC;QACD,MAAM,kBAAkB,GAAG,GAAG;YAC5B,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC;YAClC,CAAC,CAAC,UAAU,CAAA;QACd,IAAI,UAAoB,CAAA;QACxB,QAAQ,GAAG,EAAE,CAAC;YACZ,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,UAAU,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;gBAC7B,MAAK;YACP,CAAC;YACD,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,UAAU,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;gBAC7B,MAAK;YACP,CAAC;YACD,OAAO,CAAC,CAAC,CAAC;gBACR,UAAU,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;gBAC3B,MAAK;YACP,CAAC;QACH,CAAC;QACD,MAAM,KAAK,GAAG,aAAa,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAA;QAC3D,IAAI,YAAiC,CAAA;QACrC,IAAI,KAAK,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,GAAG,KAAK,KAAK,kBAAkB,CAAC,CAAC,EAAE,CAAC;YACrE,UAAU,GAAG,KAAK,CAAA;YAClB,IAAI,YAAY,EAAE,CAAC;gBACjB,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;YAChC,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IAE1C,IAAI,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;IAC1C,IAAI,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;IAE1C,IAAI,IAAI,EAAE,CAAC;QACT,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,CAAA;YAC9B,IAAI,GAAG,EAAE,CAAC;gBACR,QAAQ,GAAG,UAAU,CAAc,GAAG,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAA;YAC3D,CAAC;QACH,CAAC;QAED,MAAM,eAAe,GAAG,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAA;QAC1D,MAAM,mBAAmB,GAAG,QAAQ,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAA;QAClE,MAAM,iBAAiB,GAAG,QAAQ,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAA;QAE/D,MAAM,oBAAoB,GACxB,iBAAiB,GAAG,eAAe;YACnC,iBAAiB,GAAG,mBAAmB,CAAA;QAEzC,MAAM,YAAY,GAChB,oBAAoB;YACpB,CAAC,eAAe,KAAK,CAAC,CAAC,IAAI,mBAAmB,KAAK,CAAC,CAAC,IAAI,cAAc,CAAC,CAAA;QAE1E,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;YACrB,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;gBACzB,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAA;YACzB,CAAC;iBAAM,IACL,CAAC,YAAY;gBAEb,kBAAkB,CAAC,wBAAwB,CAAC,IAAI,CAAC,EACjD,CAAC;gBACD,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAA;YAC1B,CAAC;iBAAM,IAAI,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC3C,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAA;YAC5B,CAAC;QACH,CAAC;QAED,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;gBAClB,MAAK;YACP,CAAC;YACD,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;gBAEnB,IAAI,kBAAkB,CAAC,wBAAwB,CAAC,GAAG,CAAC,EAAE,CAAC;oBACrD,MAAM,IAAI,KAAK,CACb,sDAAsD,CACvD,CAAA;gBACH,CAAC;gBAED,IAAI,YAAY,EAAE,CAAC;oBACjB,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAA;gBAC1D,CAAC;gBAGD,IAAI,kBAAkB,CAAC,0BAA0B,CAAC,IAAI,CAAC,EAAE,CAAC;oBACxD,MAAK;gBACP,CAAC;gBAED,IAEE,kBAAkB,CAAC,4BAA4B,CAAC,IAAI,CAAC;oBACrD,CAAC,QAAQ,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EACxC,CAAC;oBACD,QAAQ,GAAG,CAAC,oBAAoB,EAAE,GAAG,QAAQ,CAAC,CAAA;gBAChD,CAAC;qBAAM,IAEL,kBAAkB,CAAC,wBAAwB,CAAC,IAAI,CAAC;oBACjD,CAAC,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EACpC,CAAC;oBACD,QAAQ,GAAG,CAAC,gBAAgB,EAAE,GAAG,QAAQ,CAAC,CAAA;gBAC5C,CAAC;gBAED,MAAK;YACP,CAAC;YAED,KAAK,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;gBACrB,IAAI,QAAQ,EAAE,CAAC;oBACb,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;wBACpC,QAAQ,GAAG,CAAC,WAAW,EAAE,GAAG,QAAQ,CAAC,MAAM,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAA;oBACjE,CAAC;gBACH,CAAC;qBAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACrC,QAAQ,GAAG;wBACT,iBAAiB;wBACjB,GAAG,QAAQ,CAAC,MAAM,WAAW;wBAC7B,GAAG,QAAQ;qBACZ,CAAA;gBACH,CAAC;gBACD,MAAK;YACP,CAAC;YAED,KAAK,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC;gBAC9B,IAAI,QAAQ,EAAE,CAAC;oBACb,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;wBAC7B,QAAQ,GAAG;4BACT,WAAW;4BACX,GAAG,QAAQ,CAAC,eAAe,SAAS;4BACpC,GAAG,QAAQ;yBACZ,CAAA;oBACH,CAAC;gBACH,CAAC;qBAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACrC,QAAQ,GAAG,CAAC,iBAAiB,EAAE,QAAQ,CAAC,eAAe,EAAE,GAAG,QAAQ,CAAC,CAAA;gBACvE,CAAC;gBACD,MAAK;YACP,CAAC;YAED,KAAK,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;gBAC5B,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC9B,QAAQ,GAAG;wBACT,iBAAiB;wBACjB,GAAG,QAAQ,CAAC,aAAa,WAAW;wBACpC,GAAG,QAAQ;qBACZ,CAAA;gBACH,CAAC;gBACD,MAAK;YACP,CAAC;YAED,KAAK,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;gBAClB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;oBACpC,QAAQ,GAAG;wBACT,WAAW;wBACX,IAAI,QAAQ,CAAC,GAAG,qBAAqB;wBACrC,GAAG,QAAQ;qBACZ,CAAA;gBACH,CAAC;gBACD,MAAK;YACP,CAAC;YAED,KAAK,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;gBAClB,IAAI,QAAQ,EAAE,CAAC;oBACb,IAAI,qBAAqB,EAAE,CAAC;wBAC1B,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;4BAC7B,QAAQ,GAAG;gCACT,WAAW;gCACX,IAAI,QAAQ,CAAC,GAAG,6BAA6B;gCAC7C,GAAG,QAAQ;6BACZ,CAAA;wBACH,CAAC;oBACH,CAAC;yBAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;wBACpC,QAAQ,GAAG;4BACT,WAAW;4BACX,IAAI,QAAQ,CAAC,GAAG,oBAAoB;4BACpC,GAAG,QAAQ;yBACZ,CAAA;oBACH,CAAC;gBACH,CAAC;qBAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACrC,QAAQ,GAAG;wBACT,iBAAiB;wBACjB,IAAI,QAAQ,CAAC,GAAG,gBAAgB;wBAChC,GAAG,QAAQ;qBACZ,CAAA;gBACH,CAAC;gBACD,MAAK;YACP,CAAC;YAED,KAAK,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;gBAClB,IAAI,qBAAqB,EAAE,CAAC;oBAC1B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;wBACpC,QAAQ,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAA;oBACrD,CAAC;gBACH,CAAC;qBAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;oBAC3C,QAAQ,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAA;gBACrD,CAAC;gBACD,MAAK;YACP,CAAC;YACD,OAAO,CAAC,CAAC,CAAC;gBACR,MAAM,IAAI,KAAK,CAAC,sBAAsB,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;YAC3D,CAAC;QACH,CAAC;IACH,CAAC;SAAM,IAAI,CAAC,QAAQ,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACrD,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,CAAA;QAC9B,IAAI,GAAG,EAAE,CAAC;YACR,QAAQ,GAAG,UAAU,CAAc,GAAG,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAA;QAC3D,CAAC;IACH,CAAC;IAED,IAAI,qBAAyC,CAAA;IAG7C,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;QACzB,IAAI,UAA8B,CAAA;QAClC,IAAI,CAAC;YAEH,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;QAC3C,CAAC;QAAC,WAAM,CAAC,CAAA,CAAC;QACV,IACE,UAAU;YACV,CAAC,YAAY,CAAC,IAAI,CAChB,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAChB,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC;gBACzB,UAAU,KAAK,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAC7D;YACD,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,EAC9B,CAAC;YACD,QAAQ,GAAG,CAAC,iBAAiB,EAAE,UAAU,EAAE,GAAG,QAAQ,CAAC,CAAA;YACvD,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAA;YACpE,IAAI,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;gBAI1B,qBAAqB,GAAG,aAAa,CAAC,aAAa,CAAC,CAAC,IAAI,CAAA;gBACzD,IAAI,CAAC,yBAAyB,EAAE,CAAC;oBAC/B,QAAQ,GAAG,CAAC,WAAW,EAAE,qBAAqB,EAAE,GAAG,QAAQ,CAAC,CAAA;gBAC9D,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO;QACL,GAAG;QACH,IAAI;QACJ,QAAQ;QACR,QAAQ;QACR,QAAQ;QACR,UAAU;QACV,aAAa,EAAE,qBAAqB;QACpC,QAAQ;KACT,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,IAAY,EAAE,EAAE,CAEtC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AAE9C,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,sBAA2C,EAC3C,OAA6B,QAAQ,EAErC,EAAE;IACF,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,GAClD,OAAO,sBAAsB,KAAK,QAAQ;QACxC,CAAC,CAAC,EAAE,UAAU,EAAE,sBAAsB,EAAE;QACxC,CAAC,CAAC,sBAAsB,CAAA;IAC5B,MAAM,eAAe,GACnB,IAAI,KAAK,QAAQ;QACf,CAAC,CAAC,SACE,UAAU;YACR,CAAC,CAAC,GAAG;gBACH,CAAC,KAAK,KAAK,IAAI;oBACb,CAAC,CAAC,OAAO,GAAG,UAAU;oBACtB,CAAC,CAAC,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,EAAE;wBACb,CAAC,CAAC,IAAI,KAAK,GAAG;wBACd,CAAC,CAAC,UAAU,CAAC;gBACjB,OAAO;YACT,CAAC,CAAC,EACN,KACE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;YACzB,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;YACnC,CAAC,CAAC,UACN,GAAG;QACL,CAAC,CAAC,GACE,UAAU;YACR,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,EAAE,EAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,GAAG;YAC9D,CAAC,CAAC,EACN,YAAY,UAAU;aAEnB,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAA;IAEnC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,eAAe,CAAA;IACxB,CAAC;IAED,MAAM,iBAAiB,GAAG,cAAc,UAAU,IAChD,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,EAAE,EAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAC1B,EAAE,CAAA;IAEF,OAAO,CACL,eAAe;QACf,CAAC,WAAW,KAAK,KAAK;YACpB,CAAC,CAAC,IAAI,iBAAiB,EAAE;YACzB,CAAC,CAAC,mBAAmB,UAAU,IAAI,iBAAiB,EAAE,CAAC,CAC1D,CAAA;AACH,CAAC,CAAA;AAKD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,WAAyB,EACzB,IAA0B,EAC1B,EAAE,CACF,WAAW,CAAC,MAAM,CAChB,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EACzE,EAAE,CACH,CAAA;AAEH,IAAI,YAA2E,CAAA;AAE/E,IAAI,MAAc,CAAA;AAElB,MAAM,QAAQ,GACZ,OAAO,SAAS,KAAK,WAAW;IAC9B,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9C,CAAC,CAA4B,SAAS,CAAA;AAE1C,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,UAAkB,EAClB,WAAyB,EACzB,OAA6B,QAAQ,EACrC,EAAE;IACF,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,EAAE,CAAA;IACX,CAAC;IAED,YAAY,aAAZ,YAAY,cAAZ,YAAY,IAAZ,YAAY,GAAK,IAAI,GAAG,EAAE,EAAA;IAE1B,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;IAE3C,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,MAAM,CAAA;QAElC,IACE,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,QAAQ,CAAC;YACjC,CAAC,IAAI,KAAK,QAAQ,IAAI,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,EACnD,CAAC;YACD,OAAO,OAAO,CAAA;QAChB,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAA;IAEnD,IAAI,OAAO,GAAG,OAAO,CAAA;IACrB,IAAI,QAA4B,CAAA;IAEhC,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtB,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,0BAA0B,CAAC,CAAA;QACrE,CAAC;QACD,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QACzC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,CAAA;QAC7D,OAAO,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAA;QACtC,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IACrC,CAAC;IAED,YAAY,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAA;IAEjD,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA;AAcD,MAAM,UAAU,iBAAiB,CAAI,MAAU;IAC7C,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QACzC,MAAM,UAAU,GAAG,EAAO,CAAA;QAC1B,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;YACzB,UAAU,CAAC,GAAc,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;QAC1C,CAAC;QACD,OAAO,UAAU,CAAA;IACnB,CAAC;AACH,CAAC;AAED,IAAI,YAA2C,CAAA;AAC/C,IAAI,gBAAwC,CAAA;AAwB5C,MAAM,UAAU,iBAAiB,CAC/B,UAAkB,EAClB,EACE,OAAO,GAAG,eAAe,EACzB,QAAQ,GAAG,iBAAiB,EAC5B,QAAQ,GAAG,iBAAiB,EAC5B,YAAY,GAAG,EAAE,EACjB,WAAW,GAAG,oBAAoB,MAChB,EAAE;IAEtB,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,IAAI,cAAc,EAAE,CAAA;IAEnE,MAAM,EACJ,IAAI,EACJ,GAAG,EACH,QAAQ,EACR,QAAQ,EACR,QAAQ,EAAE,aAAa,EACvB,UAAU,EAAE,eAAe,EAC3B,aAAa,EACb,QAAQ,EAAE,aAAa,GACxB,GAAG,aAAa,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAA;IAErD,MAAM,aAAa,GAAG,aAAa,CAAC,eAAe,CAAC,CAAA;IAEpD,IAAI,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;QACtC,MAAM,cAAc,GAAG,CAAC,QAAQ,IAAI,wBAAwB,CAAA;QAE5D,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAA;QAC5E,CAAC;aAA+B,IAE5B;YAEE,QAAQ,CAAC,eAAe;YAExB,QAAQ,CAAC,aAAa;YACtB,GAAG,CAAC,wBAAwB;gBAC1B,CAAC,CAAC;oBACE,QAAQ,CAAC,GAAG;oBAEZ,QAAQ,CAAC,GAAG;iBACb;gBACH,CAAC,CAAC,EAAE,CAAC;YACP,GAA8B,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;SAEvE,CAAC,QAAQ,CAAC,aAAa,CAAC,EACzB,CAAC;YACD,MAAM,IAAI,KAAK,CACb,GAAG,aAAa,yBAAyB,GAAG,YAAY;gBAC3B,CAAC,cAAc;oBACxC,CAAC,CAAC,iEAAiE;oBACnE,CAAC,CAAC,aAAa;wBACb,CAAC,CAAC,sJAAsJ;wBACxJ,CAAC,CAAC,EAAE,CAAC,CACZ,CAAA;QACH,CAAC;IACH,CAAC;IAED,MAAM,gBAAgB,GAAG,CACvB,WAAW,KAAK,IAAI;QAClB,CAAC,CAAC,2BAA2B;QAC7B,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;YAC1B,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,EAAE,CACT,CAAC,MAAM,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAA;IAIxD,gBAAgB,aAAhB,gBAAgB,cAAhB,gBAAgB,IAAhB,gBAAgB,GAAK,IAAI,UAAU,CACN,CAAC,YAAY,aAAZ,YAAY,cAAZ,YAAY,IAAZ,YAAY,GAAK,IAAI,iBAAiB,CAChE,WAAW,CACZ,EAAC,EACF,CAAC,EACD,CAAC,CACF,EAAA;IAED,MAAM,UAAU,GAAG,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAA;IAE9C,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,UAAU,CAAA;IAE1D,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB,CAAC,QAAQ,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,IAAI,aAAa,KAAK,QAAQ,CAAC,MAAM,CAAC;QACzE,CAAC,CAAC,OAAO,CACL,GAAG,eAAe,CAChB,eAAe,EACf,gBAAgB,CACjB,YAAY,MAAM,CAAC,aAAa,CAAC,GAAG,CACtC;QACH,CAAC,CAAC,OAAO;YACP,CAAC,CAAC,GAAG,eAAe,CAChB,eAAe,EACf,gBAAgB,EAChB,SAAS,CACV,IAAI,kBAAkB,CAAC,eAAe,EAAE,SAAS,CAAC,EAAE;YACvD,CAAC,CAAC,aAAa,EACnB;QACE,IAAI,EAAE,OAAO;QACb,UAAU,EAAE,EAAE,gBAAgB,EAAE,UAAU,EAAE,aAAa,EAAE;QAC3D,YAAY,EAAE,CAAC,UAAU,EAAE,GAAG,YAAY,CAAC;QAC3C,QAAQ,EAAE,aAAa;KACxB,CACF,CAAA;IAED,IAAI,MAAM,GAAG,CAAC,CAAA;IAEd,MAAM,oBAAoB,GAAG,CAC3B,IAAiB,EACjB,UAAkB,EAClB,cAAuB,EACC,EAAE;QAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACxB,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,gBAAiB,EAAE,CAAC,EAAE,CAAC,EAAE,cAAc,CAAC,CAAA;QACpE,OAAO,CAAC,KAAK,CAAC,gBAAiB,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;QAEtC,IAAI,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1C,MAAM,QAAQ,GAA+B;gBAC3C,EAAE,EAAE,UAAU;gBACd,GAAG,EAAE,OAAO;aACb,CAAA;YACD,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAA;YAC1B,MAAM,IAAI,KAAK,CAAC,yCAAyC,GAAG,MAAM,CAAC,CAAA;QACrE,CAAC;QAED,MAAM,KACJ,oBAAoB,CAAC,QAAQ,CAC9B,CAAC,OAAO,EAFH,EAAE,EAAE,OAED,EAFM,OAAO,cAAhB,MAAkB,CAEf,CAAA;QAET,IAAI,EAAE,GAAG,UAAU,EAAE,CAAC;YACpB,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAA;YACtC,OAAO,oBAAoB,CACzB,IAAI,EACJ,UAAU,EACV,cAAc,CAAC,CAAC,CAAC,cAAc,GAAG,WAAW,CAAC,CAAC,CAAC,SAAS,CAC1D,CAAA;QACH,CAAC;QAED,IAAI,UAAU,KAAK,EAAE,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CACb,+BAA+B,UAAU,eAAe,EAAE,EAAE,CAC7D,CAAA;QACH,CAAC;QAED,uBAAS,EAAE,IAAK,OAAO,EAAE;IAC3B,CAAC,CAAA;IAED,MAAM,MAAM,GAAG,CAAC,GAAG,IAAmB,EAAK,EAAE;QAC3C,MAAM,EAAE,GAAG,MAAM,EAAE,CAAA;QAEnB,MAAM,GAAG,GAAuC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAA;QAE5D,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;QAEvB,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,oBAAoB,CAC/D,QAAQ,EACR,EAAE,EACF,OAAO,CACR,CAAA;QAED,KAAK,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,KAAK,EAAE,CAAC;YAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;QACtC,CAAC;QAED,IAAI,KAAK,EAAE,CAAC;YAEV,MAAM,MAAM,CAAC,MAAM,CAAC,KAAe,EAAE,UAAU,CAAC,CAAA;QAClD,CAAC;QAED,OAAO,MAAO,CAAA;IAChB,CAAC,CAAA;IAED,MAAM,CAAC,KAAK,EAAE,CAAA;IAEd,OAAO,MAAM,CAAA;AACf,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAmB,EAAE,EAAE;IAEnD,KAAK,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAU,EAAE,CAAC;QACjD,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE;YAC3C,KAAK,MAAM,EAET,KAAK,EACL,QAAQ,GACT,IAAI,MAAM,EAAE,CAAC;gBACZ,KAAK,CAAC,IAAI,CAAC;oBACT,IAAI;oBAEJ,KAAK;oBACL,QAAQ;iBACT,CAAC,CAAA;YACJ,CAAC;YACD,QAAQ,EAAE,CAAA;QACZ,CAAC,CAAA;IACH,CAAC;AACH,CAAC,CAAA"}