@mirascript/mirascript 0.1.92 → 0.1.93

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 (142) hide show
  1. package/dist/chunk-7JTZW66P.js +1075 -0
  2. package/dist/chunk-7JTZW66P.js.map +6 -0
  3. package/dist/{chunk-Y7S6AHE7.js → chunk-F3FHURMG.js} +55 -939
  4. package/dist/chunk-F3FHURMG.js.map +6 -0
  5. package/dist/{chunk-HHKY7Y7L.js → chunk-GTNLLZL4.js} +4 -82
  6. package/dist/chunk-GTNLLZL4.js.map +6 -0
  7. package/dist/chunk-H2OHULLB.js +89 -0
  8. package/dist/chunk-H2OHULLB.js.map +6 -0
  9. package/dist/compiler/worker.js +2 -1
  10. package/dist/compiler/worker.js.map +1 -1
  11. package/dist/experimental-context.d.ts +93 -0
  12. package/dist/experimental-context.d.ts.map +1 -0
  13. package/dist/experimental-context.js +90 -0
  14. package/dist/experimental-context.js.map +6 -0
  15. package/dist/helpers/convert/string.d.ts +0 -2
  16. package/dist/helpers/convert/string.d.ts.map +1 -1
  17. package/dist/helpers/error.d.ts.map +1 -1
  18. package/dist/helpers/serialize/display.d.ts +29 -0
  19. package/dist/helpers/serialize/display.d.ts.map +1 -0
  20. package/dist/helpers/serialize/index.d.ts +5 -0
  21. package/dist/helpers/serialize/index.d.ts.map +1 -0
  22. package/dist/helpers/serialize/interface.d.ts +33 -0
  23. package/dist/helpers/serialize/interface.d.ts.map +1 -0
  24. package/dist/helpers/serialize/serialize.d.ts +39 -0
  25. package/dist/helpers/serialize/serialize.d.ts.map +1 -0
  26. package/dist/helpers/serialize/simple.d.ts +9 -0
  27. package/dist/helpers/serialize/simple.d.ts.map +1 -0
  28. package/dist/helpers/serialize/string.d.ts +6 -0
  29. package/dist/helpers/serialize/string.d.ts.map +1 -0
  30. package/dist/helpers/utils.d.ts +4 -0
  31. package/dist/helpers/utils.d.ts.map +1 -1
  32. package/dist/index.d.ts +1 -1
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js +12 -8
  35. package/dist/index.js.map +1 -1
  36. package/dist/subtle.d.ts +1 -1
  37. package/dist/subtle.d.ts.map +1 -1
  38. package/dist/subtle.js +9 -6
  39. package/dist/subtle.js.map +1 -1
  40. package/dist/vm/effects/run.d.ts +7 -0
  41. package/dist/vm/effects/run.d.ts.map +1 -0
  42. package/dist/vm/effects/state.d.ts +62 -0
  43. package/dist/vm/effects/state.d.ts.map +1 -0
  44. package/dist/vm/effects/wrap.d.ts +4 -0
  45. package/dist/vm/effects/wrap.d.ts.map +1 -0
  46. package/dist/vm/lib/global/bit.d.ts +7 -7
  47. package/dist/vm/lib/global/bit.d.ts.map +1 -1
  48. package/dist/vm/lib/global/debug.d.ts +1 -1
  49. package/dist/vm/lib/global/debug.d.ts.map +1 -1
  50. package/dist/vm/lib/global/json.d.ts +2 -2
  51. package/dist/vm/lib/global/json.d.ts.map +1 -1
  52. package/dist/vm/lib/global/math/index.d.ts +2 -2
  53. package/dist/vm/lib/global/math/index.d.ts.map +1 -1
  54. package/dist/vm/lib/global/math/tgamma.d.ts +2 -2
  55. package/dist/vm/lib/global/math/tgamma.d.ts.map +1 -1
  56. package/dist/vm/lib/global/sequence/all-any.d.ts +2 -2
  57. package/dist/vm/lib/global/sequence/all-any.d.ts.map +1 -1
  58. package/dist/vm/lib/global/sequence/entries.d.ts +3 -3
  59. package/dist/vm/lib/global/sequence/entries.d.ts.map +1 -1
  60. package/dist/vm/lib/global/sequence/find.d.ts +1 -1
  61. package/dist/vm/lib/global/sequence/flatten.d.ts +1 -1
  62. package/dist/vm/lib/global/sequence/flatten.d.ts.map +1 -1
  63. package/dist/vm/lib/global/sequence/fold.d.ts +1 -1
  64. package/dist/vm/lib/global/sequence/fold.d.ts.map +1 -1
  65. package/dist/vm/lib/global/sequence/group.d.ts +1 -1
  66. package/dist/vm/lib/global/sequence/group.d.ts.map +1 -1
  67. package/dist/vm/lib/global/sequence/len.d.ts +1 -1
  68. package/dist/vm/lib/global/sequence/len.d.ts.map +1 -1
  69. package/dist/vm/lib/global/sequence/map-filter.d.ts +3 -3
  70. package/dist/vm/lib/global/sequence/map-filter.d.ts.map +1 -1
  71. package/dist/vm/lib/global/sequence/new.d.ts +2 -2
  72. package/dist/vm/lib/global/sequence/new.d.ts.map +1 -1
  73. package/dist/vm/lib/global/sequence/repeat.d.ts +1 -1
  74. package/dist/vm/lib/global/sequence/repeat.d.ts.map +1 -1
  75. package/dist/vm/lib/global/sequence/reverse.d.ts +1 -1
  76. package/dist/vm/lib/global/sequence/reverse.d.ts.map +1 -1
  77. package/dist/vm/lib/global/sequence/sort.d.ts +2 -2
  78. package/dist/vm/lib/global/sequence/sort.d.ts.map +1 -1
  79. package/dist/vm/lib/global/sequence/unique.d.ts +2 -2
  80. package/dist/vm/lib/global/sequence/unique.d.ts.map +1 -1
  81. package/dist/vm/lib/global/sequence/with.d.ts +1 -1
  82. package/dist/vm/lib/global/sequence/with.d.ts.map +1 -1
  83. package/dist/vm/lib/global/sequence/zip.d.ts +1 -1
  84. package/dist/vm/lib/global/sequence/zip.d.ts.map +1 -1
  85. package/dist/vm/lib/global/string/case.d.ts +2 -2
  86. package/dist/vm/lib/global/string/case.d.ts.map +1 -1
  87. package/dist/vm/lib/global/string/index.d.ts +4 -4
  88. package/dist/vm/lib/global/string/index.d.ts.map +1 -1
  89. package/dist/vm/lib/global/string/search.d.ts +3 -3
  90. package/dist/vm/lib/global/string/search.d.ts.map +1 -1
  91. package/dist/vm/lib/global/string/trim.d.ts +3 -3
  92. package/dist/vm/lib/global/string/trim.d.ts.map +1 -1
  93. package/dist/vm/lib/global/time.d.ts +3 -3
  94. package/dist/vm/lib/global/time.d.ts.map +1 -1
  95. package/dist/vm/lib/global/to-primitive.d.ts +3 -3
  96. package/dist/vm/lib/global/to-primitive.d.ts.map +1 -1
  97. package/dist/vm/lib/mod/matrix/bin-ops.d.ts +6 -6
  98. package/dist/vm/lib/mod/matrix/bin-ops.d.ts.map +1 -1
  99. package/dist/vm/lib/mod/matrix/fill.d.ts +4 -4
  100. package/dist/vm/lib/mod/matrix/fill.d.ts.map +1 -1
  101. package/dist/vm/lib/mod/matrix/invert.d.ts +1 -1
  102. package/dist/vm/lib/mod/matrix/invert.d.ts.map +1 -1
  103. package/dist/vm/lib/mod/matrix/size.d.ts +1 -1
  104. package/dist/vm/lib/mod/matrix/size.d.ts.map +1 -1
  105. package/dist/vm/lib/mod/matrix/transpose.d.ts +1 -1
  106. package/dist/vm/lib/mod/matrix/transpose.d.ts.map +1 -1
  107. package/dist/vm/types/function.d.ts +4 -2
  108. package/dist/vm/types/function.d.ts.map +1 -1
  109. package/package.json +8 -4
  110. package/src/experimental-context.ts +121 -0
  111. package/src/helpers/convert/boolean.ts +1 -1
  112. package/src/helpers/convert/number.ts +1 -1
  113. package/src/helpers/convert/string.ts +6 -11
  114. package/src/helpers/error.ts +2 -0
  115. package/src/helpers/serialize/display.ts +60 -0
  116. package/src/helpers/serialize/index.ts +4 -0
  117. package/src/helpers/serialize/interface.ts +33 -0
  118. package/src/helpers/serialize/serialize.ts +200 -0
  119. package/src/helpers/serialize/simple.ts +25 -0
  120. package/src/helpers/serialize/string.ts +91 -0
  121. package/src/helpers/utils.ts +11 -2
  122. package/src/index.ts +1 -1
  123. package/src/subtle.ts +2 -2
  124. package/src/vm/effects/run.ts +80 -0
  125. package/src/vm/effects/state.ts +108 -0
  126. package/src/vm/effects/wrap.ts +71 -0
  127. package/src/vm/lib/global/debug.ts +6 -3
  128. package/src/vm/lib/global/math/index.ts +9 -5
  129. package/src/vm/lib/global/sequence/zip.ts +1 -1
  130. package/src/vm/lib/global/time.ts +5 -2
  131. package/src/vm/lib/helpers.ts +1 -1
  132. package/src/vm/operations/call.ts +1 -1
  133. package/src/vm/operations/compound.ts +1 -1
  134. package/src/vm/operations/iterable.ts +1 -1
  135. package/src/vm/operations/slice.ts +1 -1
  136. package/src/vm/operations/spread.ts +1 -1
  137. package/src/vm/types/function.ts +7 -5
  138. package/dist/chunk-HHKY7Y7L.js.map +0 -6
  139. package/dist/chunk-Y7S6AHE7.js.map +0 -6
  140. package/dist/helpers/serialize.d.ts +0 -63
  141. package/dist/helpers/serialize.d.ts.map +0 -1
  142. package/src/helpers/serialize.ts +0 -397
@@ -0,0 +1,80 @@
1
+ import type { VmScript } from '../../compiler/create-script.js';
2
+ import type { VmContext, VmValue } from '../types/index.js';
3
+ import {
4
+ ContextReentrancyError,
5
+ ReplayMismatchError,
6
+ currentContext,
7
+ failContext,
8
+ resetContext,
9
+ createContext,
10
+ setCurrentContext,
11
+ } from './state.js';
12
+
13
+ /** 立即执行脚本,挂起后通过重新执行并复用 effect 结果恢复运行 */
14
+ export function runInContext(script: VmScript, globals?: VmContext | null): VmValue | Promise<VmValue>;
15
+ /** 立即执行脚本,挂起后通过重新执行并复用 effect 结果恢复运行 */
16
+ export function runInContext(
17
+ script: VmScript,
18
+ globals: VmContext | null | undefined,
19
+ onDone: (result: VmValue) => void,
20
+ onError: (error: unknown) => void,
21
+ ): void;
22
+ export function runInContext(
23
+ script: VmScript,
24
+ globals: VmContext | null | undefined,
25
+ onDone?: (result: VmValue) => void,
26
+ onError?: (error: unknown) => void,
27
+ ): void | VmValue | Promise<VmValue> {
28
+ let ret: void | VmValue | Promise<VmValue> = undefined;
29
+ if (onDone == null && onError == null) {
30
+ ret = new Promise<VmValue>((resolve, reject) => {
31
+ onDone = (result) => {
32
+ ret = result;
33
+ resolve(result);
34
+ };
35
+ onError = reject;
36
+ });
37
+ }
38
+ if (onDone == null || onError == null) {
39
+ throw new TypeError('Both onDone and onError must be provided if one is provided.');
40
+ }
41
+ if (currentContext) failContext(new ContextReentrancyError());
42
+ const context = createContext();
43
+ let finished = false;
44
+ const attempt = (): void => {
45
+ if (finished) return;
46
+ resetContext(context);
47
+ const previous = setCurrentContext(context);
48
+ let result: VmValue = null;
49
+ let failed = false;
50
+ let failure: unknown;
51
+ try {
52
+ result = script(globals);
53
+ if (!context.suspension && context.cursor !== context.slots.length) {
54
+ failContext(new ReplayMismatchError());
55
+ }
56
+ } catch (error) {
57
+ failed = true;
58
+ failure = error;
59
+ } finally {
60
+ setCurrentContext(previous);
61
+ }
62
+ const { suspension } = context;
63
+ if (context.failure) {
64
+ failed = true;
65
+ failure = context.failure;
66
+ } else if (suspension) {
67
+ void suspension.slot.ready!.then(() => {
68
+ // 避免回调异常进入内部 Promise 链
69
+ queueMicrotask(attempt);
70
+ });
71
+ return;
72
+ }
73
+ finished = true;
74
+ context.slots.length = 0;
75
+ if (failed) onError!(failure);
76
+ else onDone!(result);
77
+ };
78
+ attempt();
79
+ return ret;
80
+ }
@@ -0,0 +1,108 @@
1
+ /** 异步函数缺少执行上下文 */
2
+ export class AsyncRequiredError extends Error {
3
+ override readonly name = 'AsyncRequiredError';
4
+ constructor() {
5
+ super('An async VM function requires runInContext');
6
+ }
7
+ }
8
+
9
+ /** 重新执行时的 effect 调用顺序与记录不一致 */
10
+ export class ReplayMismatchError extends Error {
11
+ override readonly name = 'ReplayMismatchError';
12
+ constructor() {
13
+ super('Host effect sequence changed during replay');
14
+ }
15
+ }
16
+
17
+ /** 不支持嵌套的执行上下文或 effect 调用 */
18
+ export class ContextReentrancyError extends Error {
19
+ override readonly name = 'ContextReentrancyError';
20
+ constructor() {
21
+ super('Nested execution contexts and host effects are not supported');
22
+ }
23
+ }
24
+
25
+ /** 函数重新执行时的处理方式 */
26
+ export type EffectKind = 'memo' | 'once' | 'async';
27
+ /** 一次逻辑调用的执行状态与结果 */
28
+ export type EffectSlot = {
29
+ token: symbol;
30
+ kind: EffectKind;
31
+ state: 'pending' | 'resolved' | 'rejected';
32
+ value: unknown;
33
+ ready?: Promise<void>;
34
+ };
35
+
36
+ /** 内部挂起信号,不作为脚本结果或公开 API */
37
+ export class SuspensionError extends Error {
38
+ override readonly name = 'SuspensionError';
39
+ constructor(readonly slot: EffectSlot) {
40
+ super('Host effect suspended');
41
+ }
42
+ }
43
+
44
+ const kEffectContext = Symbol('EffectContext');
45
+ /** 单次 runInContext 调用的执行状态 */
46
+ export interface EffectContext {
47
+ /** 内部标记,用于区分 EffectContext 类型 */
48
+ readonly __marker__: typeof kEffectContext;
49
+ /** 下一次 effect 调用的位置 */
50
+ cursor: number;
51
+ /** 按执行顺序保存的调用记录 */
52
+ slots: EffectSlot[];
53
+ /** 是否正在执行宿主实现,用于阻止嵌套 effect */
54
+ inHost: boolean;
55
+ /** 待处理的挂起信号,用户代码捕获后仍保留 */
56
+ suspension?: SuspensionError;
57
+ /** 首次不可恢复的运行时错误,用户代码捕获后仍保留 */
58
+ failure?: ReplayMismatchError | ContextReentrancyError;
59
+ }
60
+
61
+ /** 创建上下文 */
62
+ export function createContext(): EffectContext {
63
+ return {
64
+ __proto__: null,
65
+ __marker__: kEffectContext,
66
+ cursor: 0,
67
+ slots: [],
68
+ inHost: false,
69
+ } as EffectContext;
70
+ }
71
+
72
+ export let currentContext: EffectContext | undefined;
73
+
74
+ /** 设置当前上下文,仅在脚本同步执行期间生效,返回之前的上下文 */
75
+ export function setCurrentContext(context: EffectContext | undefined): EffectContext | undefined {
76
+ const previous = currentContext;
77
+ currentContext = context;
78
+ return previous;
79
+ }
80
+
81
+ /** 重置执行位置与挂起信号,保留已有调用记录 */
82
+ export function resetContext(context: EffectContext): void {
83
+ context.cursor = 0;
84
+ context.suspension = undefined;
85
+ }
86
+
87
+ /** 记录并抛出不可恢复的运行时错误 */
88
+ export function failContext(error: ReplayMismatchError | ContextReentrancyError): never {
89
+ if (currentContext) currentContext.failure ??= error;
90
+ throw error;
91
+ }
92
+
93
+ /** 重新抛出已记录的运行时错误,防止宿主代码捕获后继续执行 */
94
+ export function throwIfFailed(context: EffectContext): void {
95
+ if (context.failure) throw context.failure;
96
+ }
97
+
98
+ /** 透传运行时控制信号,在包装异常或使用后备值前调用 */
99
+ export function rethrowControl(error: unknown): void {
100
+ if (
101
+ error instanceof SuspensionError ||
102
+ error instanceof AsyncRequiredError ||
103
+ error instanceof ReplayMismatchError ||
104
+ error instanceof ContextReentrancyError
105
+ ) {
106
+ throw error;
107
+ }
108
+ }
@@ -0,0 +1,71 @@
1
+ import { apply, isPromiseLike } from '../../helpers/utils.js';
2
+ import {
3
+ AsyncRequiredError,
4
+ ContextReentrancyError,
5
+ ReplayMismatchError,
6
+ SuspensionError,
7
+ currentContext,
8
+ failContext,
9
+ rethrowControl,
10
+ throwIfFailed,
11
+ type EffectKind,
12
+ type EffectSlot,
13
+ } from './state.js';
14
+
15
+ /** 包装 effect 调用,也支持标准库内部使用的参数与返回值 */
16
+ export function wrapEffect<A extends readonly unknown[], R>(
17
+ kind: EffectKind,
18
+ fn: (...args: A) => R | PromiseLike<R>,
19
+ ): (...args: A) => R {
20
+ const token = Symbol();
21
+ return function (this: unknown, ...args: A): R {
22
+ const context = currentContext;
23
+ if (!context) {
24
+ if (kind === 'async') throw new AsyncRequiredError();
25
+ return apply(fn, this, args) as R;
26
+ }
27
+ throwIfFailed(context);
28
+ if (context.inHost) failContext(new ContextReentrancyError());
29
+ if (context.suspension) throw context.suspension;
30
+ const index = context.cursor++;
31
+ let slot = context.slots[index];
32
+ if (slot) {
33
+ if (slot.token !== token || slot.kind !== kind) failContext(new ReplayMismatchError());
34
+ } else {
35
+ slot = { token, kind, state: 'pending', value: undefined };
36
+ context.slots.push(slot);
37
+ context.inHost = true;
38
+ try {
39
+ const value = apply(fn, this, args);
40
+ if (kind === 'async' && isPromiseLike(value)) {
41
+ const pending: EffectSlot = slot;
42
+ pending.ready = Promise.resolve(value).then(
43
+ (result) => {
44
+ pending.state = 'resolved';
45
+ pending.value = result;
46
+ },
47
+ (error: unknown) => {
48
+ pending.state = 'rejected';
49
+ pending.value = error;
50
+ },
51
+ );
52
+ } else {
53
+ slot.state = 'resolved';
54
+ slot.value = value;
55
+ }
56
+ } catch (error) {
57
+ rethrowControl(error);
58
+ slot.state = 'rejected';
59
+ slot.value = error;
60
+ } finally {
61
+ context.inHost = false;
62
+ }
63
+ }
64
+ throwIfFailed(context);
65
+ // 保留原始异常值,包括 undefined 和 null
66
+ if (slot.state === 'rejected') throw slot.value;
67
+ if (slot.state === 'resolved') return slot.value as R;
68
+ context.suspension = new SuspensionError(slot);
69
+ throw context.suspension;
70
+ };
71
+ }
@@ -3,6 +3,8 @@ import { VmError } from '../../../helpers/error.js';
3
3
  import { toString } from '../../../helpers/convert/index.js';
4
4
  import type { VmAny } from '../../types/index.js';
5
5
  import { VmLib } from '../helpers.js';
6
+ import { wrapEffect } from '../../effects/wrap.js';
7
+ import { rethrowControl } from '../../effects/state.js';
6
8
 
7
9
  /** 序列化格式 */
8
10
  type SerializeFormat =
@@ -38,7 +40,8 @@ function serializeValue(
38
40
  }
39
41
  try {
40
42
  return serializer.call(options, arg, format);
41
- } catch {
43
+ } catch (error) {
44
+ rethrowControl(error);
42
45
  return defaultSerializer(arg, format);
43
46
  }
44
47
  }
@@ -184,10 +187,10 @@ type PrintOptions = {
184
187
  };
185
188
 
186
189
  /** 进行输出 */
187
- function doPrint(opt: PrintOptions, args: readonly VmAny[]): void {
190
+ const doPrint = wrapEffect('once', (opt: PrintOptions, args: readonly VmAny[]): void => {
188
191
  const formatResult = opt.parser(args);
189
192
  void Promise.resolve(opt.formatter(formatResult)).then((printed) => opt.logger(...printed));
190
- }
193
+ });
191
194
 
192
195
  export const debug_print = VmLib(
193
196
  (...args) => {
@@ -1,4 +1,5 @@
1
1
  import { expectNumber, VmLib } from '../../helpers.js';
2
+ import { wrapEffect } from '../../../effects/wrap.js';
2
3
  const { atan2: _atan2, pow: _pow, random: _random } = Math;
3
4
 
4
5
  export const atan2 = VmLib((x, y) => _atan2(expectNumber(0, x), expectNumber(1, y)), {
@@ -17,11 +18,14 @@ export const pow = VmLib((x, y) => _pow(expectNumber(0, x), expectNumber(1, y)),
17
18
  },
18
19
  returns: { type: 'number' },
19
20
  });
20
- export const random = VmLib(() => _random(), {
21
- summary: '返回 [0, 1) 之间的伪随机数',
22
- params: {},
23
- returns: { type: 'number' },
24
- });
21
+ export const random = VmLib(
22
+ wrapEffect('memo', () => _random()),
23
+ {
24
+ summary: '返回 [0, 1) 之间的伪随机数',
25
+ params: {},
26
+ returns: { type: 'number' },
27
+ },
28
+ );
25
29
 
26
30
  export * from './arr.js';
27
31
  export * from './const.js';
@@ -1,4 +1,4 @@
1
- import { display } from '../../../../helpers/serialize.js';
1
+ import { display } from '../../../../helpers/serialize/display.js';
2
2
  import { setRecord } from '../../../../helpers/utils.js';
3
3
  import { Cp } from '../../../checkpoint.js';
4
4
  import { isVmArray, type VmConst, type VmArray, type VmRecord } from '../../../types/index.js';
@@ -1,8 +1,11 @@
1
1
  import { describeParam, expectNumberRange, throwError, throwUnexpectedTypeError, VmLib } from '../helpers.js';
2
2
  import { isNaN, NotNumber, isFinite } from '../../../helpers/utils.js';
3
3
  import { toNumber } from '../../../helpers/convert/index.js';
4
- import { display } from '../../../helpers/serialize.js';
4
+ import { display } from '../../../helpers/serialize/display.js';
5
5
  import type { VmAny } from '../../types/index.js';
6
+ import { wrapEffect } from '../../effects/wrap.js';
7
+
8
+ const now = wrapEffect('memo', () => Date.now());
6
9
 
7
10
  const fromNumber = (datetime: number, fallback: boolean): number | null => {
8
11
  const n = new Date(datetime).getTime();
@@ -13,7 +16,7 @@ const fromNumber = (datetime: number, fallback: boolean): number | null => {
13
16
 
14
17
  const getTimestamp = (datetime: VmAny, fallback: boolean): number | null => {
15
18
  if (datetime == null) {
16
- return Date.now();
19
+ return now();
17
20
  }
18
21
  if (typeof datetime == 'number') {
19
22
  return fromNumber(datetime, fallback);
@@ -1,7 +1,7 @@
1
1
  import { VM_ARRAY_MAX_LENGTH } from '../../helpers/constants.js';
2
2
  import { NotNumber, entries, fromEntries, isSafeInteger, isFinite } from '../../helpers/utils.js';
3
3
  import { toBoolean, toNumber, toString } from '../../helpers/convert/index.js';
4
- import { display } from '../../helpers/serialize.js';
4
+ import { display } from '../../helpers/serialize/display.js';
5
5
  import {
6
6
  isVmArray,
7
7
  isVmFunction,
@@ -1,5 +1,5 @@
1
1
  import { VmError } from '../../helpers/error.js';
2
- import { display } from '../../helpers/serialize.js';
2
+ import { display } from '../../helpers/serialize/display.js';
3
3
  import { isVmExtern, isVmConst } from '../../helpers/types/index.js';
4
4
  import type { VmExtern, VmFunction, VmAny, VmArray, VmValue } from '../types/index.js';
5
5
  import { $AssertInit } from './common.js';
@@ -1,7 +1,7 @@
1
1
  import { VmError } from '../../helpers/error.js';
2
2
  import { hasOwnEnumerable, NotNumber, isFinite, getRecord, keysLength } from '../../helpers/utils.js';
3
3
  import { toNumber } from '../../helpers/convert/index.js';
4
- import { display } from '../../helpers/serialize.js';
4
+ import { display } from '../../helpers/serialize/display.js';
5
5
  import { isVmArray, isVmRecord, isVmExtern, isVmWrapper } from '../../helpers/types/index.js';
6
6
  import type { VmAny, VmValue } from '../types/index.js';
7
7
  import { $AssertInit } from './common.js';
@@ -1,7 +1,7 @@
1
1
  import { VmError } from '../../helpers/error.js';
2
2
  import { hasOwnEnumerable, keys } from '../../helpers/utils.js';
3
3
  import { toString } from '../../helpers/convert/index.js';
4
- import { display } from '../../helpers/serialize.js';
4
+ import { display } from '../../helpers/serialize/display.js';
5
5
  import { isVmPrimitive, isVmArray, isVmFunction, isVmWrapper } from '../../helpers/types/index.js';
6
6
  import type { VmAny, VmRecord, VmValue } from '../types/index.js';
7
7
  import { isSame } from './utils.js';
@@ -1,5 +1,5 @@
1
1
  import { VmError } from '../../helpers/error.js';
2
- import { display } from '../../helpers/serialize.js';
2
+ import { display } from '../../helpers/serialize/display.js';
3
3
  import { toNumber } from '../../helpers/convert/number.js';
4
4
  import { isNaN, isSafeInteger } from '../../helpers/utils.js';
5
5
  import { isVmArray } from '../../helpers/types/index.js';
@@ -1,6 +1,6 @@
1
1
  import { VmError } from '../../helpers/error.js';
2
2
  import { create } from '../../helpers/utils.js';
3
- import { display } from '../../helpers/serialize.js';
3
+ import { display } from '../../helpers/serialize/display.js';
4
4
  import { isVmArray, isVmRecord, isVmExtern, isVmConst } from '../../helpers/types/index.js';
5
5
  import { wrapToVmConst } from '../types/boundary.js';
6
6
  import type { VmAny, VmRecord, VmConst } from '../types/index.js';
@@ -13,7 +13,7 @@ import type { VmLib } from '../lib/helpers.js';
13
13
  * 虽然所有输入参数的类型均为 {@linkcode VmValue},但当参数不足时,对应的参数会被填充为 `undefined`。
14
14
  */
15
15
  // eslint-disable-next-line @typescript-eslint/no-invalid-void-type
16
- export type VmFunctionLike = (...args: ReadonlyArray<VmValue | undefined>) => VmAny | void;
16
+ export type VmFunctionLike = (this: void, ...args: ReadonlyArray<VmValue | undefined>) => VmAny | void;
17
17
 
18
18
  /** Mirascript 函数 */
19
19
  export type VmFunction<T extends VmFunctionLike = VmFunctionLike> = T & { readonly [kVmFunction]: VmFunctionInfo };
@@ -53,11 +53,13 @@ const nameIfNotAnonymous = <T>({ name }: { name: string | undefined }, fallback:
53
53
  return name;
54
54
  };
55
55
 
56
+ /** Mirascript 函数创建选项 */
57
+ export type VmFunctionOptionLike<T extends VmFunctionLike = VmFunctionLike> = NoInfer<
58
+ VmFunctionOption | VmFunction | VmLib<T>
59
+ >;
60
+
56
61
  /** 创建 Mirascript 函数 */
57
- export function VmFunction<T extends VmFunctionLike>(
58
- fn: T,
59
- option: NoInfer<VmFunctionOption | VmFunction | VmLib<T>> = {},
60
- ): VmFunction<T> {
62
+ export function VmFunction<T extends VmFunctionLike>(fn: T, option: VmFunctionOptionLike<T> = {}): VmFunction<T> {
61
63
  if (typeof fn != 'function') {
62
64
  throw new TypeError('Invalid function');
63
65
  }
@@ -1,6 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/compiler/generate-bytecode.ts", "../src/compiler/bytecode/consts.ts", "../src/compiler/bytecode/index.ts", "../src/compiler/emit/index.ts", "../src/compiler/emit/sourcemap.ts", "../src/compiler/emit/utils.ts", "../src/compiler/emit/constants.ts", "../src/compiler/diagnostic.ts", "../src/helpers/utils.ts"],
4
- "mappings": ";;;;;;;;;;;;;;;;;;;AAAA,SAAS,WAAW,kBAAkB;AAS/B,SAAS,qBAAqB,QAAqB,SAA2C;AACjG,QAAM,SAAS,UAAU;AACzB,QAAM,SAAS,OAAO,YAAY,QAAQ,OAAO;AACjD,SAAO,CAAC,OAAO,OAA8C,OAAO,WAAuC;AAC/G;AAKA,eAAsB,iBAAiB,QAAqB,SAAoD;AAC5G,MAAI,WAAW,MAAM;AACjB,UAAM,IAAI,UAAU,0BAA0B;AAAA,EAClD;AACA,QAAM,SAAS,MAAM,WAAW;AAChC,QAAM,SAAS,aAAa,SAAS,MAAM,OAAO,QAAQ,QAAQ,OAAO,IAAI,OAAO,YAAY,QAAQ,OAAO;AAC/G,SAAO,CAAC,OAAO,OAA8C,OAAO,WAAuC;AAC/G;;;ACtBA,IAAM,UAAU,IAAI,YAAY;AAChC,IAAM,EAAE,aAAa,IAAI;AAEzB,SAAS,gBAAgB,KAAiB,OAAe,QAAoC;AACzF,MAAI,SAAS,GAAG;AACZ,QAAI,SAAS,GAAG;AACZ,UAAI,WAAW,EAAG,QAAO;AACzB,YAAMA,KAAI,IAAI,KAAK;AACnB,WAAKA,KAAI,OAAQ,GAAG;AAChB;AAAA,MACJ;AACA,aAAO,aAAaA,EAAC;AAAA,IACzB;AACA,UAAMA,KAAI,IAAI,OAAO;AACrB,UAAMC,KAAI,IAAI,OAAO;AACrB,SAAKD,KAAI,OAAQ,MAAMC,KAAI,OAAQ,GAAG;AAClC;AAAA,IACJ;AACA,QAAI,SAAS,EAAG,QAAO,aAAaD,IAAGC,EAAC;AACxC,UAAMC,KAAI,IAAI,OAAO;AACrB,SAAKA,KAAI,OAAQ,GAAG;AAChB;AAAA,IACJ;AACA,WAAO,aAAaF,IAAGC,IAAGC,EAAC;AAAA,EAC/B;AACA,QAAM,IAAI,IAAI,OAAO;AACrB,QAAM,IAAI,IAAI,OAAO;AACrB,QAAM,IAAI,IAAI,OAAO;AACrB,QAAM,IAAI,IAAI,OAAO;AACrB,OAAK,IAAI,OAAQ,MAAM,IAAI,OAAQ,MAAM,IAAI,OAAQ,MAAM,IAAI,OAAQ,GAAG;AACtE;AAAA,EACJ;AACA,MAAI,SAAS,GAAG;AACZ,QAAI,WAAW,EAAG,QAAO,aAAa,GAAG,GAAG,GAAG,CAAC;AAChD,UAAMC,KAAI,IAAI,OAAO;AACrB,SAAKA,KAAI,OAAQ,GAAG;AAChB;AAAA,IACJ;AACA,WAAO,aAAa,GAAG,GAAG,GAAG,GAAGA,EAAC;AAAA,EACrC;AACA,QAAM,IAAI,IAAI,OAAO;AACrB,QAAM,IAAI,IAAI,OAAO;AACrB,OAAK,IAAI,OAAQ,MAAM,IAAI,OAAQ,GAAG;AAClC;AAAA,EACJ;AACA,MAAI,SAAS,GAAG;AACZ,QAAI,SAAS,EAAG,QAAO,aAAa,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AACpD,UAAMC,KAAI,IAAI,OAAO;AACrB,SAAKA,KAAI,OAAQ,GAAG;AAChB;AAAA,IACJ;AACA,WAAO,aAAa,GAAG,GAAG,GAAG,GAAG,GAAG,GAAGA,EAAC;AAAA,EAC3C;AACA,QAAM,IAAI,IAAI,OAAO;AACrB,QAAM,IAAI,IAAI,OAAO;AACrB,OAAK,IAAI,OAAQ,MAAM,IAAI,OAAQ,GAAG;AAClC;AAAA,EACJ;AACA,MAAI,SAAS,IAAI;AACb,QAAI,WAAW,EAAG,QAAO,aAAa,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC5D,UAAMC,KAAI,IAAI,OAAO;AACrB,SAAKA,KAAI,OAAQ,GAAG;AAChB;AAAA,IACJ;AACA,WAAO,aAAa,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAGA,EAAC;AAAA,EACjD;AACA,QAAM,IAAI,IAAI,OAAO;AACrB,QAAM,IAAI,IAAI,OAAO;AACrB,OAAK,IAAI,OAAQ,MAAM,IAAI,OAAQ,GAAG;AAClC;AAAA,EACJ;AACA,MAAI,SAAS,IAAI;AACb,QAAI,SAAS,GAAI,QAAO,aAAa,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AACjE,UAAMC,KAAI,IAAI,OAAO;AACrB,SAAKA,KAAI,OAAQ,GAAG;AAChB;AAAA,IACJ;AACA,WAAO,aAAa,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAGA,EAAC;AAAA,EACvD;AACA,QAAM,IAAI,IAAI,OAAO;AACrB,QAAM,IAAI,IAAI,OAAO;AACrB,OAAK,IAAI,OAAQ,MAAM,IAAI,OAAQ,GAAG;AAClC;AAAA,EACJ;AACA,MAAI,SAAS,IAAI;AACb,QAAI,WAAW,GAAI,QAAO,aAAa,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AACzE,UAAMC,KAAI,IAAI,OAAO;AACrB,SAAKA,KAAI,OAAQ,GAAG;AAChB,eAAS;AACT;AAAA,IACJ;AACA,WAAO,aAAa,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAGA,EAAC;AAAA,EAC7D;AACA,QAAM,IAAI,IAAI,OAAO;AACrB,QAAM,IAAI,IAAI,OAAO;AACrB,OAAK,IAAI,OAAQ,MAAM,IAAI,OAAQ,GAAG;AAClC;AAAA,EACJ;AACA,MAAI,SAAS,GAAI,QAAO,aAAa,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC7E,QAAM,IAAI,IAAI,OAAO;AACrB,OAAK,IAAI,OAAQ,GAAG;AAChB;AAAA,EACJ;AACA,SAAO,aAAa,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AACnE;AAGA,SAAS,UAAU,QAAoB,QAAgB,QAAwB;AAE3E,MAAI,SAAS,IAAI;AACb,UAAM,WAAW,gBAAgB,QAAQ,QAAQ,MAAM;AACvD,QAAI,aAAa,QAAW;AACxB,aAAO;AAAA,IACX;AAAA,EACJ;AACA,SAAO,QAAQ,OAAO,OAAO,SAAS,QAAQ,SAAS,MAAM,CAAC;AAClE;AAGO,SAAS,WAAW,YAAuC;AAC9D,QAAM,SAAS,IAAI,SAAS,WAAW,QAAQ,WAAW,YAAY,WAAW,UAAU;AAC3F,QAAM,SAAwB,CAAC;AAC/B,MAAI,SAAS;AACb,QAAM,SAAS,OAAO;AACtB,SAAO,SAAS,QAAQ;AACpB,UAAM,OAAO,OAAO,SAAS,MAAM;AACnC,YAAQ,MAAM;AAAA,MACV,KAAK;AACD,eAAO,KAAK,IAAI;AAChB,kBAAU;AACV;AAAA,MACJ,KAAK;AACD,eAAO,KAAK,IAAI;AAChB,kBAAU;AACV;AAAA,MACJ,KAAK;AACD,eAAO,KAAK,KAAK;AACjB,kBAAU;AACV;AAAA,MACJ,KAAK,GAAG;AACJ,cAAM,UAAU,OAAO,SAAS,SAAS,GAAG,IAAI;AAChD,eAAO,KAAK,OAAO;AACnB,kBAAU;AACV;AAAA,MACJ;AAAA,MACA,KAAK,GAAG;AACJ,cAAM,MAAM,OAAO,WAAW,SAAS,GAAG,IAAI;AAC9C,eAAO,KAAK,GAAG;AACf,kBAAU;AACV;AAAA,MACJ;AAAA,MACA,KAAK,GAAG;AACJ,cAAM,MAAM,OAAO,UAAU,SAAS,GAAG,IAAI;AAC7C,cAAM,MAAM,UAAU,YAAY,SAAS,GAAG,GAAG;AACjD,eAAO,KAAK,GAAG;AACf,kBAAU,IAAI;AACd;AAAA,MACJ;AAAA;AAAA,MAEA;AACI,cAAM,IAAI,MAAM,0BAA0B,IAAI,EAAE;AAAA,IACxD;AAAA,EACJ;AACA,SAAO;AACX;;;AClKO,IAAM,iBAAN,MAAqB;AAAA,EACxB,YAAqB,OAAmB;AAAnB;AAgBrB,SAAU,aAAa;AAfnB,UAAM,SAAS,IAAI,SAAS,MAAM,QAAQ,MAAM,YAAY,MAAM,UAAU;AAC5E,SAAK,YAAY,OAAO,UAAU,GAAG,IAAI;AACzC,SAAK,WAAW,OAAO,UAAU,GAAG,IAAI;AACxC,SAAK,YAAY,OAAO,UAAU,IAAI,KAAK,UAAU,IAAI;AACzD,SAAK,aAAa,IAAI,SAAS,MAAM,QAAQ,MAAM,aAAa,GAAG,KAAK,QAAQ;AAChF,SAAK,YAAY;AAAA,MACb,IAAI,WAAW,MAAM,QAAQ,MAAM,aAAa,KAAK,KAAK,UAAU,KAAK,SAAS;AAAA,IACtF;AAAA,EACJ;AAAA;AAAA,EAUA,IAAc,UAAmB;AAC7B,WAAO,KAAK,aAAa,KAAK;AAAA,EAClC;AAAA;AAAA,EAGU,aAAgE;AACtE,UAAM,SAAS,KAAK;AACpB,UAAM,MAAM,KAAK,WAAW,SAAS,KAAK,YAAY;AACtD,WAAO,EAAE,QAAQ,MAAM,KAAM,MAAM,OAAO,KAAM,OAAO;AAAA,EAC3D;AAAA;AAAA,EAGU,aAAqB;AAC3B,UAAM,MAAM,KAAK,WAAW,SAAS,KAAK,UAAU;AACpD,WAAO,MAAM;AAAA,EACjB;AAAA;AAAA,EAGU,UAAU,MAAuB;AACvC,UAAM,QAAQ,OACR,KAAK,WAAW,UAAU,KAAK,YAAY,IAAI,IAC/C,KAAK,WAAW,SAAS,KAAK,UAAU;AAC9C,SAAK,cAAc,OAAO,IAAI;AAC9B,WAAO;AAAA,EACX;AAAA;AAAA,EAGU,UAAU,MAAuB;AACvC,UAAM,QAAQ,OAAO,KAAK,WAAW,SAAS,KAAK,YAAY,IAAI,IAAI,KAAK,WAAW,QAAQ,KAAK,UAAU;AAC9G,SAAK,cAAc,OAAO,IAAI;AAC9B,WAAO;AAAA,EACX;AACJ;;;ACzDA,SAAS,cAAc;;;ACAvB,SAAS,0BAA0B;;;ACEnC,IAAM,EAAE,UAAU,IAAI;AAEf,SAAS,YAAY,OAAwC;AAEhE,MAAI,UAAU,KAAM,QAAO;AAC3B,MAAI,UAAU,OAAW,QAAO;AAChC,MAAI,OAAO,SAAS,UAAU;AAC1B,WAAO,UAAU,KAAK;AAAA,EAC1B;AAEA,MAAI,UAAU,GAAG;AACb,QAAI,IAAI,UAAU,UAAW,QAAO;AACpC,WAAO;AAAA,EACX;AACA,SAAO,OAAO,KAAgC;AAClD;AAGO,SAAS,YAAe,QAAgB,IAA+B;AAE1E,QAAM,SAAc,CAAC;AACrB,WAAS,IAAI,GAAG,IAAI,QAAQ,KAAK;AAC7B,WAAO,KAAK,GAAG,CAAC,CAAC;AAAA,EACrB;AACA,SAAO;AACX;;;ADrBA,IAAM,SAAS;AACf,IAAM,EAAE,YAAY,mBAAmB,KAAK,CAAC,QAAQ,SAAS,QAAQ;AAElE,QAAM,SAAS;AACf,SAAO;AAAA,IACH,YAAY,OAAO,OAAO,QAAQ,GAAG;AAAA,IACrC,oBAAoB,OAAO,OAAO,QAAQ,SAAS,GAAG;AAAA,EAC1D;AACJ,GAAG,UAAU,WAAW,KAAK;AAK7B,IAAM,gBAAgB;AAYtB,IAAM,YACF,OAAO,UAAU,cAAc,OAAO,OAAO,QAAQ,aAC/C,CAAC,MAAM,gCAAgC,OAAO,KAAK,GAAG,MAAM,EAAE,SAAS,QAAQ,CAAC,KAChF,CAAC,MAAM,uCAAuC,mBAAmB,CAAC,CAAC;AAE7E,IAAI,WAAW;AAER,SAAS,gBACZ,QACA,cACA,YACA,WACA,WACA,SACI;AACJ,MAAI,YAAY,QAAQ,YAAY,IAAI,KAAK;AAC7C,QAAM,YAAY,QAAQ,KAAK,QAAQ;AACvC,MAAI,CAAC,WAAW;AACZ,QAAI,SAAS,WAAW,GAAG,GAAG;AAC1B,iBAAW,SAAS,QAAQ,WAAW,EAAE;AAAA,IAC7C;AACA,QAAI,CAAC,UAAU;AACX,iBAAW,GAAG,UAAU,IAAI,QAAQ,eAAe,aAAa,YAAY,MAAM;AAAA,IACtF;AAAA,EACJ;AACA,QAAM,MAAM,IAAI,mBAAmB;AAAA,IAC/B,MAAM,WAAW;AAAA,EACrB,CAAC;AACD,MAAI,OAAO,WAAW,UAAU;AAC5B,QAAI,iBAAiB,UAAU,MAAM;AAAA,EACzC;AACA,MAAI,cAAc;AAClB,WAAS,IAAI,GAAG,IAAI,WAAW,QAAQ,KAAK;AACxC,UAAM,QAAQ,WAAW,CAAC;AAC1B,QAAI,CAAC,MAAO;AACZ,QAAI,CAAC,eAAe,MAAM,oBAAoB,KAAK,MAAM,gBAAgB,GAAG;AACxE,oBAAc;AAAA,IAClB;AACA,QAAI,WAAW;AAAA,MACX,WAAW;AAAA,QACP,MAAM,IAAI;AAAA,QACV,QAAQ;AAAA,MACZ;AAAA,MACA,UAAU;AAAA,QACN,MAAM,MAAM;AAAA,QACZ,QAAQ,MAAM,cAAc;AAAA,MAChC;AAAA,MACA,QAAQ;AAAA,IACZ,CAAC;AAAA,EACL;AACA,MAAI,CAAC,aAAa;AACd,QAAI,WAAW;AAAA,MACX,WAAW;AAAA,QACP,MAAM;AAAA,QACN,QAAQ,aAAa,SAAS,aAAa;AAAA,MAC/C;AAAA,MACA,UAAU;AAAA,QACN,MAAM;AAAA,QACN,QAAQ;AAAA,MACZ;AAAA,MACA,QAAQ;AAAA,IACZ,CAAC;AAAA,EACL;AACA,MAAI,OAAO,WAAW,UAAU;AAC5B,UAAM,QAAQ,OAAO,MAAM,OAAO;AAClC,eAAW,cAAc,WAAW;AAChC,YAAM,UAAU,WAAW,UAAU;AACrC,YAAM,aAAa,UAAU,MAAM,QAAQ,kBAAkB,CAAC,IAAI;AAClE,YAAM,SACF,WAAW,aAAa,WAAW,MAAM,QAAQ,cAAc,GAAG,QAAQ,YAAY,CAAC,IAAI;AAC/F,UAAI,CAAC,OAAQ;AACb,YAAM,WAAW,UAAU,UAAU;AACrC,gBAAU,UAAU,IAAI,SAAS,QAAQ,eAAe,SAAS,YAAY,MAAM,CAAC,GAAG;AAAA,IAC3F;AAAA,EACJ;AACA,QAAM,YAAY,YAAY,WAAW,GAAG,MAAM,GAAG,QAAQ;AAC7D,QAAM,UAAU,UAAU,IAAI,SAAS,CAAC;AACxC,YAAU;AAAA;AAAA,IAEN,GAAG,UAAU,IAAI,SAAS;AAAA,IAC1B,GAAG,kBAAkB,IAAI,OAAO;AAAA,EACpC;AACJ;;;AEjHO,IAAM,gBAAgB;AACtB,IAAM,0BAA0B;;;AHQhC,SAAS,KACZ,QACA,OACA,YACA,SACM;AACN,QAAM,MAAM,IAAI,QAAQ,QAAQ,OAAO,YAAY,OAAO;AAC1D,MAAI,KAAK;AACT,QAAM,OAAO,IAAI,UAAU,KAAK,IAAI;AACpC,SAAO;AACX;AAGO,IAAM,UAAN,cAAsB,eAAe;AAAA,EACxC,YACa,QACT,OACS,YACA,SACX;AACE,UAAM,KAAK;AALF;AAEA;AACA;AAab,SAAS,YAAsB,CAAC;AAChC,SAAQ,iBAAiB;AACzB,SAAQ,eAAe;AAEvB;AAAA,SAAiB,YAAsB,CAAC;AASxC;AAAA,SAAQ,YAAY;AAQpB,SAAS,YAAsB,CAAC;AA/B5B,SAAK,SAAS,QAAQ,UAAU;AAAA,EACpC;AAAA;AAAA,EAGQ,aAAmB;AACvB,UAAM,EAAE,WAAW,UAAU,IAAI;AACjC,aAAS,IAAI,GAAG,MAAM,UAAU,QAAQ,IAAI,KAAK,KAAK;AAClD,gBAAU,KAAK,YAAY,UAAU,CAAC,CAAC,CAAC;AAAA,IAC5C;AAAA,EACJ;AAAA;AAAA,EAQQ,MAAM,MAAM,GAAW;AAC3B,QAAI,CAAC,KAAK,OAAQ,QAAO;AACzB,WAAO,KAAK,OAAO,KAAK,eAAe,GAAG;AAAA,EAC9C;AAAA;AAAA,EAKQ,GAAG,UAA0B;AACjC,UAAM,MAAM,KAAK,UAAU,QAAQ;AACnC,SAAK,YAAY;AACjB,WAAO,cAAc,GAAG;AAAA,EAC5B;AAAA;AAAA,EAKQ,GAAG,GAAW,QAAQ,GAAW;AACrC,QAAI,CAAC,EAAG,QAAO;AACf,UAAM,IAAI,KAAK,iBAAiB;AAChC,WAAO,OAAO,CAAC,IAAI,CAAC;AAAA,EACxB;AAAA;AAAA,EAEQ,GAAG,GAAW,QAAQ,GAAW;AACrC,QAAI,CAAC,EAAG,QAAO;AACf,WAAO,KAAK,GAAG,GAAG,KAAK;AAAA,EAC3B;AAAA;AAAA,EAEQ,cAAoB;AACxB,SAAK;AACL,SAAK;AACL,WAAO,KAAK,aAAa,KAAK,UAAU;AACpC,YAAM,SAAS,KAAK,WAAW;AAC/B,UAAI,WAAW,OAAO,SAAS;AAC3B,aAAK,SAAS;AACd;AAAA,MACJ;AACA,WAAK;AACL,YAAM,OAAO,KAAK,MAAM,EAAE,IAAI;AAC9B,WAAK,UAAU,KAAK,IAAI;AACxB,WAAK;AACL,WAAK;AACL;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA,EAGQ,aAAa,KAAmB;AACpC,WAAO,KAAK,aAAa,KAAK,UAAU;AACpC,YAAM,SAAS,KAAK,WAAW;AAC/B,UAAI,WAAW,KAAK;AAChB,aAAK,SAAS;AACd;AAAA,MACJ;AACA,WAAK;AACL,WAAK;AACL,UAAI,QAAQ,OAAO,SAAS;AACxB,aAAK;AAAA,MACT;AACA,YAAM,OAAO,KAAK,MAAM,IAAI;AAC5B,WAAK,UAAU,KAAK,IAAI;AACxB;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA,EAGQ,aAAmB;AACvB,SAAK;AACL,WAAO,KAAK,aAAa,KAAK,UAAU;AACpC,YAAM,SAAS,KAAK,WAAW;AAC/B,UAAI,WAAW,OAAO,OAAO;AACzB,eAAO,KAAK,aAAa,OAAO,KAAK;AAAA,MACzC;AACA,UAAI,WAAW,OAAO,MAAM;AACxB,aAAK;AACL,cAAM,OAAO,KAAK,MAAM,EAAE,IAAI;AAC9B,aAAK,UAAU,KAAK,IAAI;AACxB;AAAA,MACJ;AACA,WAAK,SAAS;AAAA,IAClB;AACA,WAAO,KAAK,aAAa,OAAO,KAAK;AAAA,EACzC;AAAA;AAAA,EAGQ,WAAW,KAAmB;AAClC,SAAK;AACL,WAAO,KAAK,aAAa,KAAK,UAAU;AACpC,YAAM,EAAE,QAAQ,KAAK,IAAI,KAAK,WAAW;AACzC,YAAM,OAAO,MAAM,KAAK,UAAU,IAAI;AACtC,UAAI;AAEJ,cAAQ,QAAQ;AAAA,QACZ,KAAK,OAAO,OAAO;AACf,gBAAM,QAAQ,KAAK;AACnB,gBAAM,aAAa,KAAK,UAAU,KAAK;AAEvC,cAAI,CAAC,YAAY;AACb,kBAAM,IAAI,MAAM,iBAAiB,KAAK,EAAE;AAAA,UAC5C;AACA,gBAAM,QAAQ,KAAK;AACnB,iBAAO,IAAI,UAAU,qBAAqB,KAAK,GAAG,KAAK,CAAC;AACxD;AAAA,QACJ;AAAA,QACA,KAAK,OAAO,QAAQ;AAChB,eAAK;AACL,iBAAO;AACP;AAAA,QACJ;AAAA,QACA,SAAS;AACL,iBAAO,OAAO,OAAO,MAAM,KAAK,MAAM;AACtC;AAAA,QACJ;AAAA,MACJ;AACA,YAAM,QAAQ,KAAK,MAAM;AACzB,WAAK,UAAU,KAAK,QAAQ,IAAI;AAChC,UAAI,WAAW,OAAO,QAAQ;AAC1B;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA,EAGQ,WAAW,KAAmB;AAClC,SAAK;AACL,WAAO,KAAK,aAAa,KAAK,UAAU;AACpC,YAAM,EAAE,QAAQ,KAAK,IAAI,KAAK,WAAW;AACzC,YAAM,OAAO,MAAM,KAAK,UAAU,IAAI;AACtC,UAAI;AAEJ,cAAQ,QAAQ;AAAA,QACZ,KAAK,OAAO;AAAA,QACZ,KAAK,OAAO,OAAO;AACf,gBAAM,QAAQ,KAAK;AACnB,gBAAM,aAAa,KAAK,UAAU,KAAK;AAEvC,cAAI,CAAC,YAAY;AACb,kBAAM,IAAI,MAAM,iBAAiB,KAAK,EAAE;AAAA,UAC5C;AACA,gBAAM,QAAQ,KAAK;AACnB,gBAAM,MAAM,WAAW,OAAO;AAE9B,iBAAO,MACD,aAAa,UAAU,KAAK,KAAK,GAAG,KAAK,CAAC,OAC1C,IAAI,UAAU,UAAU,KAAK,GAAG,KAAK,CAAC;AAC5C;AAAA,QACJ;AAAA,QACA,KAAK,OAAO;AAAA,QACZ,KAAK,OAAO,UAAU;AAClB,gBAAM,QAAQ,KAAK;AACnB,gBAAM,QAAQ,KAAK;AACnB,gBAAM,MAAM,WAAW,OAAO;AAC9B,iBAAO,MACD,aAAa,KAAK,GAAG,KAAK,CAAC,KAAK,KAAK,GAAG,KAAK,CAAC,OAC9C,IAAI,KAAK,GAAG,KAAK,CAAC,UAAU,KAAK,GAAG,KAAK,CAAC;AAChD;AAAA,QACJ;AAAA,QACA,KAAK,OAAO;AAAA,QACZ,KAAK,OAAO,YAAY;AACpB,gBAAM,QAAQ,KAAK,UAAU,IAAI;AACjC,gBAAM,QAAQ,KAAK;AACnB,gBAAM,MAAM,WAAW,OAAO;AAC9B,iBAAO,MAAM,aAAa,KAAK,KAAK,KAAK,GAAG,KAAK,CAAC,OAAO,IAAI,KAAK,UAAU,KAAK,GAAG,KAAK,CAAC;AAC1F;AAAA,QACJ;AAAA,QACA,KAAK,OAAO,QAAQ;AAChB,gBAAM,QAAQ,KAAK;AACnB,iBAAO,oBAAoB,KAAK,GAAG,KAAK,CAAC;AACzC;AAAA,QACJ;AAAA,QACA,KAAK,OAAO,QAAQ;AAChB,eAAK;AACL,iBAAO;AACP;AAAA,QACJ;AAAA,QACA,SAAS;AACL,iBAAO,OAAO,OAAO,MAAM,KAAK,MAAM;AACtC;AAAA,QACJ;AAAA,MACJ;AACA,YAAM,QAAQ,KAAK,MAAM;AACzB,WAAK,UAAU,KAAK,QAAQ,IAAI;AAChC,UAAI,WAAW,OAAO,QAAQ;AAC1B;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA,EAGQ,UAAU,KAAmB;AACjC,SAAK;AACL,WAAO,KAAK,aAAa,KAAK,UAAU;AACpC,YAAM,EAAE,QAAQ,KAAK,IAAI,KAAK,WAAW;AACzC,YAAM,OAAO,MAAM,KAAK,UAAU,IAAI;AACtC,UAAI;AAEJ,cAAQ,QAAQ;AAAA,QACZ,KAAK,OAAO,MAAM;AACd,gBAAM,QAAQ,KAAK;AACnB,iBAAO,OAAO,KAAK,GAAG,KAAK,CAAC;AAC5B;AAAA,QACJ;AAAA,QACA,KAAK,OAAO,WAAW;AACnB,gBAAM,QAAQ,KAAK,UAAU,IAAI;AACjC,gBAAM,MAAM,KAAK,UAAU,IAAI;AAC/B,iBAAO,kBAAkB,KAAK,KAAK,GAAG;AACtC;AAAA,QACJ;AAAA,QACA,KAAK,OAAO,cAAc;AACtB,gBAAM,QAAQ,KAAK;AACnB,gBAAM,MAAM,KAAK;AACjB,iBAAO,kBAAkB,KAAK,GAAG,KAAK,CAAC,KAAK,KAAK,GAAG,GAAG,CAAC;AACxD;AAAA,QACJ;AAAA,QACA,KAAK,OAAO,uBAAuB;AAC/B,gBAAM,QAAQ,KAAK;AACnB,gBAAM,MAAM,KAAK;AACjB,iBAAO,2BAA2B,KAAK,GAAG,KAAK,CAAC,KAAK,KAAK,GAAG,GAAG,CAAC;AACjE;AAAA,QACJ;AAAA,QACA,KAAK,OAAO,QAAQ;AAChB,gBAAM,QAAQ,KAAK;AACnB,iBAAO,mBAAmB,KAAK,GAAG,KAAK,CAAC;AACxC;AAAA,QACJ;AAAA,QACA,KAAK,OAAO,QAAQ;AAChB,eAAK;AACL,iBAAO;AACP;AAAA,QACJ;AAAA,QACA,SAAS;AACL,iBAAO,OAAO,OAAO,MAAM,KAAK,MAAM;AACtC;AAAA,QACJ;AAAA,MACJ;AACA,YAAM,QAAQ,KAAK,MAAM;AACzB,WAAK,UAAU,KAAK,QAAQ,IAAI;AAChC,UAAI,WAAW,OAAO,QAAQ;AAC1B;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA,EAGQ,WAAiB;AACrB,UAAM,EAAE,QAAQ,KAAK,IAAI,KAAK,WAAW;AACzC,UAAM,OAAO,MAAM,KAAK,UAAU,IAAI;AACtC,UAAM,YAAY,MAAM,KAAK,UAAU,IAAI;AAC3C,UAAM,QAAQ,KAAK,MAAM;AACzB,QAAI;AACJ,QAAI,MAAM;AAEV,YAAQ,QAAQ;AAAA,MACZ,KAAK,OAAO;AAAA,MACZ,KAAK,OAAO,MAAM;AACd,cAAM,YAAY,KAAK,eAAe;AACtC,cAAM,KAAK;AACX,cAAM,OAAO,WAAW,OAAO;AAC/B,cAAM,OAAO,KAAK;AAClB,cAAM,OAAO,KAAK;AAClB,cAAM,OAAO,YAAY,MAAM,CAAC,MAAM;AAClC,gBAAM,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE;AAC5B,cAAI,QAAQ,MAAM,OAAO,GAAG;AAExB,mBAAO;AAAA,UACX;AACA,iBAAO,GAAG,EAAE;AAAA,QAChB,CAAC;AACD,YAAI,OAAO;AACX,iBAAS,IAAI,IAAI,MAAM,IAAI,OAAO,GAAG,KAAK;AACtC,kBAAQ,MAAM,KAAK,GAAG,GAAG,EAAE;AAAA,QAC/B;AACA,cAAM,SAAS,aAAa,CAAC,QAAQ,SAAS;AAC9C,YAAI,QAAQ;AACR,iBAAO,OAAO,IAAI;AAAA,QACtB,OAAO;AACH,cAAI,KAAK,QAAQ,WAAW;AACxB,iBAAK,UAAU,KAAK,KAAK,UAAU,MAAM;AAAA,UAC7C;AACA,iBAAO,GAAG,KAAK,GAAG,GAAG,CAAC,iBAAiB,KAAK,KAAK,IAAI,CAAC,gCAAgC,IAAI;AAAA,QAC9F;AACA,YAAI,MAAM;AACN,kBAAQ,QAAQ,KAAK,GAAG,MAAM,EAAE,CAAC;AAAA,QACrC;AACA;AAAA,MACJ;AAAA,MACA,KAAK,OAAO,UAAU;AAClB,cAAM,KAAK;AACX,cAAM,IAAI,KAAK;AACf,cAAM,IAAI,KAAK,UAAU,CAAC;AAC1B,eAAO,GAAG,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC;AAC7B;AAAA,MACJ;AAAA,MACA,KAAK,OAAO,QAAQ;AAChB,cAAM,KAAK;AACX,eAAO,GAAG,KAAK,GAAG,GAAG,CAAC;AACtB;AAAA,MACJ;AAAA,MACA,KAAK,OAAO,QAAQ;AAChB,cAAM,KAAK;AACX,eAAO,UAAU,KAAK,GAAG,GAAG,CAAC;AAC7B;AAAA,MACJ;AAAA,MACA,KAAK,OAAO;AAAA,MACZ,KAAK,OAAO;AAAA,MACZ,KAAK,OAAO;AAAA,MACZ,KAAK,OAAO;AAAA,MACZ,KAAK,OAAO;AAAA,MACZ,KAAK,OAAO;AAAA,MACZ,KAAK,OAAO;AAAA,MACZ,KAAK,OAAO;AAAA,MACZ,KAAK,OAAO;AAAA,MACZ,KAAK,OAAO;AAAA,MACZ,KAAK,OAAO;AAAA,MACZ,KAAK,OAAO;AAAA,MACZ,KAAK,OAAO;AAAA,MACZ,KAAK,OAAO;AAAA,MACZ,KAAK,OAAO;AAAA,MACZ,KAAK,OAAO;AAAA,MACZ,KAAK,OAAO;AAAA,MACZ,KAAK,OAAO;AAAA,MACZ,KAAK,OAAO,IAAI;AACZ,cAAM,KAAK;AACX,cAAM,OAAO,KAAK;AAClB,cAAM,QAAQ,KAAK;AACnB,eAAO,GAAG,KAAK,GAAG,GAAG,CAAC,OAAO,OAAO,MAAM,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,KAAK,GAAG,KAAK,CAAC;AAC/E;AAAA,MACJ;AAAA,MACA,KAAK,OAAO,QAAQ;AAChB,cAAM,KAAK;AACX,cAAM,OAAO,KAAK;AAClB,cAAM,QAAQ,UAAU;AACxB,eAAO,GAAG,KAAK,GAAG,GAAG,CAAC,OAAO,OAAO,MAAM,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,KAAK,UAAU,KAAK,CAAC;AACtF;AAAA,MACJ;AAAA,MACA,KAAK,OAAO,UAAU;AAClB,cAAM,KAAK;AACX,cAAM,OAAO,KAAK;AAClB,aAAK,YAAY;AACjB,eAAO,GAAG,KAAK,GAAG,GAAG,CAAC,2BAA2B,KAAK,GAAG,IAAI,CAAC;AAC9D;AAAA,MACJ;AAAA,MACA,KAAK,OAAO,QAAQ;AAChB,cAAM,KAAK;AACX,cAAM,IAAI,KAAK;AACf,cAAM,OAAO,YAAY,GAAG,MAAM,KAAK,CAAC;AACxC,eAAO,GAAG,KAAK,GAAG,GAAG,CAAC,OAAO,OAAO,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC;AACrF;AAAA,MACJ;AAAA,MACA,KAAK,OAAO;AAAA,MACZ,KAAK,OAAO,MAAM;AACd,cAAM,KAAK;AACX,cAAM,QAAQ,KAAK;AACnB,cAAM,IAAI,KAAK;AACf,cAAM,OAAO,YAAY,GAAG,MAAM,KAAK,UAAU,KAAK,CAAC,CAAE;AAEzD,eAAO,GAAG,KAAK,GAAG,GAAG,CAAC,OAAO,OAAO,MAAM,CAAC,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,KAAK,KAAK,IAAI,CAAC;AAClF;AAAA,MACJ;AAAA,MACA,KAAK,OAAO;AAAA,MACZ,KAAK,OAAO,SAAS;AACjB,cAAM,KAAK;AACX,cAAM,OAAO,KAAK;AAClB,cAAM,IAAI,KAAK;AACf,cAAM,OAAO,YAAY,GAAG,MAAM,KAAK,CAAC;AACxC,cAAM,KAAK,KAAK;AAChB,cAAM,UAAU,YAAY,IAAI,MAAM,KAAK,CAAC;AAC5C,cAAM,aAAa,WAAW,OAAO,OAAO,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,IAAI;AACxE,eAAO,GAAG,KAAK,GAAG,GAAG,CAAC,YAAY,UAAU,MAAM,KAC7C,IAAI,CAAC,GAAG,MAAM;AACX,cAAI,QAAQ,SAAS,CAAC,EAAG,QAAO,mBAAmB,KAAK,GAAG,CAAC,CAAC;AAAA,cACxD,QAAO,KAAK,GAAG,CAAC;AAAA,QACzB,CAAC,EACA,KAAK,IAAI,CAAC;AACf;AAAA,MACJ;AAAA,MACA,KAAK,OAAO,QAAQ;AAChB,cAAM,KAAK;AACX,cAAM,QAAQ,KAAK;AACnB,eAAO,GAAG,KAAK,GAAG,GAAG,CAAC,MAAM,KAAK,GAAG,KAAK,CAAC;AAC1C;AAAA,MACJ;AAAA,MACA,KAAK,OAAO;AAAA,MACZ,KAAK,OAAO;AAAA,MACZ,KAAK,OAAO;AAAA,MACZ,KAAK,OAAO;AAAA,MACZ,KAAK,OAAO;AAAA,MACZ,KAAK,OAAO;AAAA,MACZ,KAAK,OAAO;AAAA,MACZ,KAAK,OAAO;AAAA,MACZ,KAAK,OAAO;AAAA,MACZ,KAAK,OAAO;AAAA,MACZ,KAAK,OAAO;AAAA,MACZ,KAAK,OAAO;AAAA,MACZ,KAAK,OAAO,QAAQ;AAChB,cAAM,KAAK;AACX,cAAM,QAAQ,KAAK;AACnB,eAAO,GAAG,KAAK,GAAG,GAAG,CAAC,OAAO,OAAO,MAAM,CAAC,IAAI,KAAK,GAAG,KAAK,CAAC;AAC7D;AAAA,MACJ;AAAA,MACA,KAAK,OAAO;AAAA,MACZ,KAAK,OAAO,cAAc;AACtB,cAAM,KAAK;AACX,eAAO,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,GAAG,GAAG,CAAC;AACzC;AAAA,MACJ;AAAA,MACA,KAAK,OAAO,KAAK;AACb,cAAM,KAAK;AACX,cAAM,MAAM,KAAK;AACjB,cAAM,OAAO,KAAK,UAAU,KAAK,CAAC;AAClC,eAAO,GAAG,KAAK,GAAG,GAAG,CAAC,WAAW,KAAK,GAAG,GAAG,CAAC,KAAK,IAAI;AACtD;AAAA,MACJ;AAAA,MACA,KAAK,OAAO,UAAU;AAClB,cAAM,KAAK;AACX,cAAM,MAAM,KAAK;AACjB,cAAM,QAAQ,UAAU;AACxB,eAAO,GAAG,KAAK,GAAG,GAAG,CAAC,WAAW,KAAK,GAAG,GAAG,CAAC,KAAK,KAAK;AACvD;AAAA,MACJ;AAAA,MACA,KAAK,OAAO,QAAQ;AAChB,cAAM,KAAK;AACX,cAAM,MAAM,KAAK;AACjB,cAAM,QAAQ,KAAK;AACnB,eAAO,GAAG,KAAK,GAAG,GAAG,CAAC,WAAW,KAAK,GAAG,GAAG,CAAC,KAAK,KAAK,GAAG,KAAK,CAAC;AAChE;AAAA,MACJ;AAAA,MACA,KAAK,OAAO,KAAK;AACb,cAAM,KAAK;AACX,cAAM,MAAM,KAAK;AACjB,cAAM,OAAO,KAAK,UAAU,KAAK,CAAC;AAClC,eAAO,GAAG,KAAK,GAAG,GAAG,CAAC,WAAW,KAAK,GAAG,GAAG,CAAC,KAAK,IAAI;AACtD;AAAA,MACJ;AAAA,MACA,KAAK,OAAO,UAAU;AAClB,cAAM,KAAK;AACX,cAAM,MAAM,KAAK;AACjB,cAAM,QAAQ,UAAU;AACxB,eAAO,GAAG,KAAK,GAAG,GAAG,CAAC,WAAW,KAAK,GAAG,GAAG,CAAC,KAAK,KAAK;AACvD;AAAA,MACJ;AAAA,MACA,KAAK,OAAO,QAAQ;AAChB,cAAM,KAAK;AACX,cAAM,MAAM,KAAK;AACjB,cAAM,QAAQ,KAAK;AACnB,eAAO,GAAG,KAAK,GAAG,GAAG,CAAC,WAAW,KAAK,GAAG,GAAG,CAAC,KAAK,KAAK,GAAG,KAAK,CAAC;AAChE;AAAA,MACJ;AAAA,MACA,KAAK,OAAO,KAAK;AACb,cAAM,KAAK;AACX,cAAM,MAAM,KAAK;AACjB,cAAM,OAAO,KAAK,UAAU,KAAK,CAAC;AAClC,eAAO,QAAQ,KAAK,GAAG,GAAG,CAAC,KAAK,IAAI,KAAK,KAAK,GAAG,GAAG,CAAC;AACrD;AAAA,MACJ;AAAA,MACA,KAAK,OAAO,UAAU;AAClB,cAAM,KAAK;AACX,cAAM,MAAM,KAAK;AACjB,cAAM,QAAQ,UAAU;AACxB,eAAO,QAAQ,KAAK,GAAG,GAAG,CAAC,KAAK,KAAK,KAAK,KAAK,GAAG,GAAG,CAAC;AACtD;AAAA,MACJ;AAAA,MACA,KAAK,OAAO,QAAQ;AAChB,cAAM,KAAK;AACX,cAAM,MAAM,KAAK;AACjB,cAAM,QAAQ,KAAK;AACnB,eAAO,QAAQ,KAAK,GAAG,GAAG,CAAC,KAAK,KAAK,GAAG,KAAK,CAAC,KAAK,KAAK,GAAG,GAAG,CAAC;AAC/D;AAAA,MACJ;AAAA,MACA,KAAK,OAAO,WAAW;AACnB,cAAM,KAAK;AACX,cAAM,IAAI,KAAK;AACf,eAAO,GAAG,KAAK,GAAG,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC;AACtC;AAAA,MACJ;AAAA,MACA,KAAK,OAAO,cAAc;AACtB,cAAM,KAAK;AACX,cAAM,OAAO,KAAK;AAClB,aAAK,YAAY;AACjB,eAAO,GAAG,KAAK,GAAG,GAAG,CAAC,2BAA2B,KAAK,GAAG,IAAI,CAAC;AAC9D;AAAA,MACJ;AAAA,MACA,KAAK,OAAO,YAAY;AACpB,cAAM,KAAK;AACX,cAAM,QAAQ,KAAK;AACnB,cAAM,KAAK,KAAK;AAChB,eAAO,GAAG,KAAK,GAAG,GAAG,CAAC,eAAe,KAAK,GAAG,IAAI,KAAK,CAAC;AACvD;AAAA,MACJ;AAAA,MACA,KAAK,OAAO,YAAY;AACpB,cAAM,KAAK;AACX,cAAM,QAAQ,KAAK;AACnB,cAAM,KAAK,KAAK;AAChB,eAAO,GAAG,KAAK,GAAG,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,GAAG,CAAC;AAC9C;AAAA,MACJ;AAAA,MACA,KAAK,OAAO,OAAO;AACf,cAAM,KAAK;AACX,cAAM,MAAM,KAAK;AACjB,cAAM,QAAQ,UAAU;AACxB,cAAM,MAAM,UAAU;AACtB,eAAO,GAAG,KAAK,GAAG,GAAG,CAAC,aAAa,KAAK,GAAG,GAAG,CAAC,KAAK,KAAK,KAAK,GAAG;AACjE;AAAA,MACJ;AAAA,MACA,KAAK,OAAO,YAAY;AACpB,cAAM,KAAK;AACX,cAAM,MAAM,KAAK;AACjB,cAAM,MAAM,UAAU;AACtB,eAAO,GAAG,KAAK,GAAG,GAAG,CAAC,aAAa,KAAK,GAAG,GAAG,CAAC,WAAW,GAAG;AAC7D;AAAA,MACJ;AAAA,MACA,KAAK,OAAO,UAAU;AAClB,cAAM,KAAK;AACX,cAAM,MAAM,KAAK;AACjB,cAAM,QAAQ,UAAU;AACxB,eAAO,GAAG,KAAK,GAAG,GAAG,CAAC,aAAa,KAAK,GAAG,GAAG,CAAC,KAAK,KAAK;AACzD;AAAA,MACJ;AAAA,MACA,KAAK,OAAO,UAAU;AAClB,cAAM,KAAK;AACX,cAAM,MAAM,KAAK;AACjB,cAAM,QAAQ,KAAK;AACnB,cAAM,MAAM,KAAK;AACjB,eAAO,GAAG,KAAK,GAAG,GAAG,CAAC,aAAa,KAAK,GAAG,GAAG,CAAC,KAAK,KAAK,GAAG,KAAK,CAAC,KAAK,KAAK,GAAG,GAAG,CAAC;AACnF;AAAA,MACJ;AAAA,MACA,KAAK,OAAO,mBAAmB;AAC3B,cAAM,KAAK;AACX,cAAM,MAAM,KAAK;AACjB,cAAM,QAAQ,KAAK;AACnB,cAAM,MAAM,KAAK;AACjB,eAAO,GAAG,KAAK,GAAG,GAAG,CAAC,sBAAsB,KAAK,GAAG,GAAG,CAAC,KAAK,KAAK,GAAG,KAAK,CAAC,KAAK,KAAK,GAAG,GAAG,CAAC;AAC5F;AAAA,MACJ;AAAA,MACA,KAAK,OAAO,QAAQ;AAChB,cAAM,KAAK;AACX,cAAM,UAAU,KAAK;AACrB,cAAM,OAAO,KAAK,UAAU,OAAO;AACnC,eAAO,GAAG,KAAK,GAAG,GAAG,CAAC,cAAc,IAAI;AACxC;AAAA,MACJ;AAAA,MACA,KAAK,OAAO,QAAQ;AAChB,cAAM,KAAK;AACX,eAAO,GAAG,KAAK,GAAG,GAAG,CAAC;AACtB;AAAA,MACJ;AAAA,MACA,KAAK,OAAO,OAAO;AACf,cAAM,KAAK;AACX,eAAO,GAAG,KAAK,GAAG,GAAG,CAAC;AACtB;AAAA,MACJ;AAAA,MACA,KAAK,OAAO,IAAI;AACZ,cAAM,OAAO,KAAK;AAClB,eAAO,kBAAkB,KAAK,GAAG,IAAI,CAAC;AACtC;AAAA,MACJ;AAAA,MACA,KAAK,OAAO,OAAO;AACf,cAAM,OAAO,KAAK;AAClB,eAAO,mBAAmB,KAAK,GAAG,IAAI,CAAC;AACvC;AAAA,MACJ;AAAA,MACA,KAAK,OAAO,QAAQ;AAChB,cAAM,OAAO,KAAK;AAClB,eAAO,OAAO,KAAK,GAAG,IAAI,CAAC;AAC3B;AAAA,MACJ;AAAA,MACA,KAAK,OAAO,WAAW;AACnB,cAAM,OAAO,KAAK;AAClB,eAAO,OAAO,KAAK,GAAG,IAAI,CAAC;AAC3B;AAAA,MACJ;AAAA,MACA,KAAK,OAAO,OAAO;AACf,cAAM,OAAO,KAAK;AAClB,eAAO,OAAO,KAAK,GAAG,IAAI,CAAC;AAC3B;AAAA,MACJ;AAAA,MACA,KAAK,OAAO,UAAU;AAClB,cAAM,OAAO,KAAK;AAClB,eAAO,OAAO,KAAK,GAAG,IAAI,CAAC;AAC3B;AAAA,MACJ;AAAA,MACA,KAAK,OAAO,SAAS;AACjB,cAAM,OAAO,KAAK;AAClB,cAAM,WAAW,KAAK;AACtB,cAAM,OAAO,YAAY,OAAO,GAAG,CAAC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;AAC5D,aAAK,QAAQ,GAAG;AAChB,cAAM,KAAK,KAAK,GAAG,GAAG,EAAE;AACxB,eAAO,YAAY,EAAE,iBAAiB,KAAK,GAAG,QAAQ,CAAC,QAAQ,EAAE,yBAAyB,KAAK,KAAK,IAAI,CAAC;AACzG;AAAA,MACJ;AAAA,MACA,KAAK,OAAO;AAAA,MACZ,KAAK,OAAO,oBAAoB;AAC5B,cAAM,OAAO,KAAK;AAClB,cAAM,QAAQ,KAAK;AACnB,cAAM,MAAM,KAAK;AACjB,cAAM,YAAY,WAAW,OAAO;AACpC,cAAM,OAAO,YAAY,OAAO,GAAG,CAACC,OAAM,KAAK,GAAGA,KAAI,GAAG,EAAE,CAAC;AAC5D,aAAK,QAAQ,GAAG;AAChB,cAAM,IAAI,KAAK,GAAG,GAAG,EAAE;AACvB,eAAO,8BAA8B,KAAK,GAAG,KAAK,CAAC,sBAAsB,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,YAAY,MAAM,IAAI,SAAS,CAAC,uBAAuB,KAAK,KAAK,IAAI,CAAC;AACpL;AAAA,MACJ;AAAA,MACA,KAAK,OAAO,MAAM;AACd,cAAM,OAAO,KAAK;AAClB,cAAM,OAAO,YAAY,MAAM,CAAC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;AACxD,aAAK,QAAQ,GAAG;AAChB,eAAO,6BAA6B,KAAK,KAAK,IAAI,CAAC;AACnD;AAAA,MACJ;AAAA,MACA,KAAK,OAAO,OAAO;AACf,eAAO;AACP;AAAA,MACJ;AAAA,MACA,KAAK,OAAO,UAAU;AAClB,eAAO;AACP;AAAA,MACJ;AAAA,MACA,KAAK,OAAO,MAAM;AACd;AAAA,MACJ;AAAA,MACA,SAAS;AACL,eAAO,QAAQ,OAAO,MAAM,KAAK,MAAM;AACvC;AAAA,MACJ;AAAA,IACJ;AACA,SAAK,UAAU,KAAK,QAAQ,IAAI;AAEhC,YAAQ,QAAQ;AAAA,MACZ,KAAK,OAAO;AAAA,MACZ,KAAK,OAAO,MAAM;AACd,aAAK,YAAY;AACjB;AAAA,MACJ;AAAA,MACA,KAAK,OAAO;AAAA,MACZ,KAAK,OAAO;AAAA,MACZ,KAAK,OAAO;AAAA,MACZ,KAAK,OAAO;AAAA,MACZ,KAAK,OAAO;AAAA,MACZ,KAAK,OAAO,WAAW;AACnB,aAAK,WAAW;AAChB;AAAA,MACJ;AAAA,MACA,KAAK,OAAO;AAAA,MACZ,KAAK,OAAO;AAAA,MACZ,KAAK,OAAO;AAAA,MACZ,KAAK,OAAO,oBAAoB;AAC5B,aAAK;AACL,aAAK;AACL,aAAK,aAAa,OAAO,OAAO;AAChC;AAAA,MACJ;AAAA,MACA,KAAK,OAAO,QAAQ;AAChB,aAAK,WAAW,GAAG;AACnB;AAAA,MACJ;AAAA,MACA,KAAK,OAAO,QAAQ;AAChB,aAAK,WAAW,GAAG;AACnB;AAAA,MACJ;AAAA,MACA,KAAK,OAAO,OAAO;AACf,aAAK,UAAU,GAAG;AAClB;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA,EAGA,OAAa;AACT,SAAK,WAAW;AAChB,SAAK,SAAS;AACd,UAAM,SAAuB,KAAK,YAAY,gBAAgB;AAC9D,SAAK,UAAU,CAAC,IAAI,GAAG,MAAM,IAAI,KAAK,UAAU,CAAC,CAAC;AAClD,SAAK,aAAa,MAAM;AAAA,EAC5B;AAAA;AAAA,EAEA,aAAa,QAA4B;AACrC,QAAI,KAAK,QAAQ,WAAW;AACxB,sBAAgB,KAAK,QAAQ,QAAQ,KAAK,YAAY,KAAK,WAAW,KAAK,WAAW,KAAK,OAAO;AAAA,IACtG;AAAA,EACJ;AACJ;;;AIttBA,SAAS,qBAAqB,sBAAsB;;;ACC7C,IAAM,EAAE,QAAQ,IAAI;AACpB,IAAM;AAAA,EACT;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,KAAK;AAAA,EACL,mBAAmB;AAAA,EACnB,mBAAmB;AACvB,IAAI;AACG,IAAM,EAAE,QAAQ,MAAM,QAAQ,SAAS,QAAQ,aAAa,gBAAgB,qBAAqB,OAAO,IAC3G;AACG,IAAM,EAAE,OAAO,eAAe,IAAI;AAIlC,IAAM,aACT,gBAAgB,UAAU,OAAO,OAAO,cAAc,aAC/C,OAAO,aACR,CAAC,MAAsB,KAAK,CAAC,EAAE;AAKlC,IAAM,mBAAmB,SAAS,KAAK;AAAA;AAAA,EAE1C,OAAO,UAAU;AACrB;AAOA,IAAM,eAAe,IAAI,IAAI,oBAAoB,OAAO,SAAS,CAAC;AAI3D,IAAM,YAAY,CAAC,KAA0C,KAAa,UAAqC;AAClH,MAAI,CAAC,aAAa,IAAI,GAAG,GAAG;AACxB,QAAI,GAAG,IAAI,SAAS;AAAA,EACxB,OAAO;AACH,mBAAe,KAAK,KAAK;AAAA,MACrB,WAAW;AAAA,MACX,OAAO,SAAS;AAAA,MAChB,cAAc;AAAA,MACd,UAAU;AAAA,MACV,YAAY;AAAA,IAChB,CAAC;AAAA,EACL;AACJ;AAKO,IAAM,YAAY,CAAC,KAAe,QAAqC;AAC1E,MAAI,CAAC,iBAAiB,KAAK,GAAG,EAAG,QAAO;AACxC,SAAO,IAAI,GAAG,KAAK;AACvB;;;ADpDO,SAAS,qBAAqB,MAAqC;AACtE,MAAI,OAAO,KAAK,QAAQ,SAAU,CAAC,cAAc,IAAI,GAAG;AACpD,UAAM,IAAI,WAAW,2BAA2B,IAAI,EAAE;AAAA,EAC1D;AACA,SAAO,oBAAoB,IAAI,KAAK;AACxC;AAGO,SAAS,wBAAwB,MAAsB,IAAkD;AAC5G,MAAI,WAAW,qBAAqB,IAAI;AACxC,MAAI,CAAC,UAAU;AACX,WAAO,4BAA4B,IAAI;AAAA,EAC3C;AACA,MAAI,SAAS,SAAS,IAAI,GAAG;AACzB,UAAM,eAAe,OAAO,MAAM,aAAa,GAAG,IAAI,OAAO;AAI7D,eAAW,SAAS,WAAW,MAAM,YAAY,WAAW,KAAK,MAAM,CAAC;AAAA,EAC5E;AACA,SAAO;AACX;AAGO,SAAS,sBAAsB,MAAiF;AACnH,MAAI,OAAO,eAAe,cAAc,OAAO,eAAe,UAAU;AACpE,WAAO;AAAA,EACX,WAAW,OAAO,eAAe,gBAAgB,OAAO,eAAe,YAAY;AAC/E,WAAO;AAAA,EACX,WAAW,OAAO,eAAe,aAAa,OAAO,eAAe,SAAS;AACzE,WAAO;AAAA,EACX,WAAW,OAAO,eAAe,aAAa,OAAO,eAAe,SAAS;AACzE,WAAO;AAAA,EACX,WAAW,OAAO,eAAe,YAAY,OAAO,eAAe,QAAQ;AACvE,WAAO;AAAA,EACX,OAAO;AACH,WAAO;AAAA,EACX;AACJ;AAiEA,IAAM,EAAE,gBAAgB,cAAc,aAAa,WAAW,UAAU,IAAI;AAErE,SAAS,iBACZ,QACA,aACA,QACiB;AACjB,QAAM,SAA8D,CAAC;AACrE,QAAM,SAAS,YAAY;AAC3B,WAAS,IAAI,GAAG,IAAI,QAAQ,KAAK,GAAG;AAChC,UAAM,OAAuB,YAAY,IAAI,CAAC;AAC9C,QAAI,UAAU,CAAC,OAAO,IAAI,GAAG;AACzB;AAAA,IACJ;AACA,UAAM,kBAAkB,YAAY,CAAC;AACrC,UAAM,cAAc,YAAY,IAAI,CAAC;AACrC,UAAM,gBAAgB,YAAY,IAAI,CAAC;AACvC,UAAM,YAAY,YAAY,IAAI,CAAC;AACnC,WAAO,KAAK;AAAA,MACR;AAAA,MACA,OAAO;AAAA,QACH;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,IACJ,CAAiD;AAAA,EACrD;AAEA,QAAM,UAA8B,CAAC;AACrC,QAAM,YAAgC,CAAC;AACvC,QAAM,SAA6B,CAAC;AACpC,QAAM,SAA6B,CAAC;AACpC,QAAM,QAA4B,CAAC;AACnC,QAAM,cAAiC,CAAC;AACxC,QAAM,kBAAqC,CAAC;AAC5C,QAAM,cAAwB,CAAC;AAC/B,WAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;AACpC,UAAM,aAAa,OAAO,CAAC;AAC3B,UAAM,EAAE,KAAK,IAAI;AACjB,QAAI,SAAS,WAAW;AACpB,kBAAY,KAAK,WAAW,KAAK;AACjC;AAAA,IACJ;AACA,YAAQ,sBAAsB,IAAI,GAAG;AAAA,MACjC,KAAK;AACD,gBAAQ,KAAK,UAAU;AACvB;AAAA,MACJ,KAAK;AACD,kBAAU,KAAK,UAAU;AACzB;AAAA,MACJ,KAAK;AACD,eAAO,KAAK,UAAU;AACtB;AAAA,MACJ,KAAK;AACD,eAAO,KAAK,UAAU;AACtB;AAAA,MACJ,KAAK;AACD,cAAM,KAAK,UAAU;AACrB;AAAA,MACJ,KAAK;AAAA,MACL;AAEI;AAAA,IACR;AACA,eAAW,aAAa,CAAC;AACzB,WAAO,IAAI,IAAI,OAAO,QAAQ;AAC1B,YAAM,MAAM,OAAO,IAAI,CAAC;AACxB,UAAI,QAAQ;AACZ,UAAI,IAAI,OAAO,eAAe,IAAI,OAAO,WAAW;AAChD,gBAAQ;AACR,wBAAgB,KAAK,GAAG;AAAA,MAC5B;AACA,UAAI,IAAI,OAAO,kBAAkB,IAAI,OAAO,cAAc;AACtD,gBAAQ;AACR,oBAAY,KAAK,GAAG;AAAA,MACxB;AACA,UAAI,CAAC,OAAO;AACR;AAAA,MACJ;AACA;AACA,UAAI,aAAa;AACjB,MAAC,WAAW,WAAiC,KAAK,GAAG;AAAA,IACzD;AAAA,EACJ;AACA,SAAO;AAAA,IACH,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAM;AAAA,IACN,YAAY;AAAA,IACZ,gBAAgB;AAAA,IAChB,YAAY;AAAA,EAChB;AACJ;AAGA,SAAS,YAAY,OAAuB;AACxC,MAAI,MAAM,oBAAoB,MAAM,eAAe;AAC/C,QAAI,MAAM,gBAAgB,MAAM,WAAW;AACvC,aAAO,GAAG,MAAM,eAAe,IAAI,MAAM,WAAW;AAAA,IACxD;AACA,WAAO,GAAG,MAAM,eAAe,IAAI,MAAM,WAAW,IAAI,MAAM,SAAS;AAAA,EAC3E;AACA,SAAO,GAAG,MAAM,eAAe,IAAI,MAAM,WAAW,IAAI,MAAM,aAAa,IAAI,MAAM,SAAS;AAClG;AAGO,SAAS,kBACZ,aACA,QACA,UACQ;AACR,QAAM,cAAc,WAAW,GAAG,QAAQ,MAAM;AAChD,QAAM,WAAqB,CAAC;AAC5B,aAAW,cAAc,aAAa;AAClC,UAAM,QAAQ,YAAY,WAAW,KAAK;AAC1C,UAAM,WAAW,eAAe,WAAW,IAAI,KAAK;AACpD,QAAI,UAAU,qBAAqB,WAAW,IAAI,KAAK,4BAA4B,WAAW,IAAI;AAClG,eAAW,OAAO,WAAW,YAAY;AACrC,YAAM,WAAW,YAAY,IAAI,KAAK;AACtC,iBAAW;AAAA,OAAU,QAAQ,MAAM,qBAAqB,IAAI,IAAI,CAAC;AAAA,IACrE;AACA,aAAS,KAAK,KAAK,QAAQ,IAAI,WAAW,GAAG,KAAK,MAAM,OAAO,EAAE;AAAA,EACrE;AACA,SAAO;AACX;",
5
- "names": ["a", "b", "c", "e", "g", "i", "k", "m", "i"]
6
- }