goscript 0.0.23 → 0.0.25

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 (94) hide show
  1. package/README.md +2 -2
  2. package/cmd/goscript/cmd_compile.go +18 -2
  3. package/compiler/analysis.go +74 -132
  4. package/compiler/analysis_test.go +220 -0
  5. package/compiler/assignment.go +37 -43
  6. package/compiler/builtin_test.go +90 -0
  7. package/compiler/compiler.go +307 -22
  8. package/compiler/composite-lit.go +108 -43
  9. package/compiler/config.go +7 -3
  10. package/compiler/config_test.go +6 -33
  11. package/compiler/decl.go +7 -1
  12. package/compiler/expr-call.go +212 -2
  13. package/compiler/expr-selector.go +66 -41
  14. package/compiler/expr-star.go +57 -65
  15. package/compiler/expr-type.go +1 -1
  16. package/compiler/expr-value.go +1 -1
  17. package/compiler/expr.go +125 -20
  18. package/compiler/field.go +4 -4
  19. package/compiler/primitive.go +11 -10
  20. package/compiler/spec-struct.go +3 -3
  21. package/compiler/spec-value.go +75 -29
  22. package/compiler/spec.go +9 -3
  23. package/compiler/stmt-assign.go +36 -2
  24. package/compiler/stmt-for.go +11 -0
  25. package/compiler/stmt-range.go +314 -1
  26. package/compiler/stmt.go +52 -0
  27. package/compiler/type.go +83 -15
  28. package/dist/gs/builtin/builtin.d.ts +9 -0
  29. package/dist/gs/builtin/builtin.js +46 -0
  30. package/dist/gs/builtin/builtin.js.map +1 -0
  31. package/dist/gs/builtin/channel.d.ts +193 -0
  32. package/dist/gs/builtin/channel.js +471 -0
  33. package/dist/gs/builtin/channel.js.map +1 -0
  34. package/dist/gs/builtin/defer.d.ts +38 -0
  35. package/dist/gs/builtin/defer.js +54 -0
  36. package/dist/gs/builtin/defer.js.map +1 -0
  37. package/dist/gs/builtin/index.d.ts +1 -0
  38. package/dist/gs/builtin/index.js +2 -0
  39. package/dist/gs/builtin/index.js.map +1 -0
  40. package/dist/gs/builtin/io.d.ts +16 -0
  41. package/dist/gs/builtin/io.js +15 -0
  42. package/dist/gs/builtin/io.js.map +1 -0
  43. package/dist/gs/builtin/map.d.ts +33 -0
  44. package/dist/gs/builtin/map.js +44 -0
  45. package/dist/gs/builtin/map.js.map +1 -0
  46. package/dist/gs/builtin/slice.d.ts +173 -0
  47. package/dist/gs/builtin/slice.js +799 -0
  48. package/dist/gs/builtin/slice.js.map +1 -0
  49. package/dist/gs/builtin/type.d.ts +203 -0
  50. package/dist/gs/builtin/type.js +744 -0
  51. package/dist/gs/builtin/type.js.map +1 -0
  52. package/dist/gs/builtin/varRef.d.ts +14 -0
  53. package/dist/gs/builtin/varRef.js +14 -0
  54. package/dist/gs/builtin/varRef.js.map +1 -0
  55. package/dist/gs/cmp/index.d.ts +4 -0
  56. package/dist/gs/cmp/index.js +27 -0
  57. package/dist/gs/cmp/index.js.map +1 -0
  58. package/dist/gs/context/context.d.ts +26 -0
  59. package/dist/gs/context/context.js +305 -0
  60. package/dist/gs/context/context.js.map +1 -0
  61. package/dist/gs/context/index.d.ts +1 -0
  62. package/dist/gs/context/index.js +2 -0
  63. package/dist/gs/context/index.js.map +1 -0
  64. package/dist/gs/internal/goarch/index.d.ts +6 -0
  65. package/dist/gs/internal/goarch/index.js +14 -0
  66. package/dist/gs/internal/goarch/index.js.map +1 -0
  67. package/dist/gs/iter/index.d.ts +1 -0
  68. package/dist/gs/iter/index.js +2 -0
  69. package/dist/gs/iter/index.js.map +1 -0
  70. package/dist/gs/iter/iter.d.ts +4 -0
  71. package/dist/gs/iter/iter.js +91 -0
  72. package/dist/gs/iter/iter.js.map +1 -0
  73. package/dist/gs/math/bits/index.d.ts +47 -0
  74. package/dist/gs/math/bits/index.js +298 -0
  75. package/dist/gs/math/bits/index.js.map +1 -0
  76. package/dist/gs/runtime/index.d.ts +1 -0
  77. package/dist/gs/runtime/index.js +2 -0
  78. package/dist/gs/runtime/index.js.map +1 -0
  79. package/dist/gs/runtime/runtime.d.ts +41 -0
  80. package/dist/gs/runtime/runtime.js +158 -0
  81. package/dist/gs/runtime/runtime.js.map +1 -0
  82. package/dist/gs/slices/index.d.ts +1 -0
  83. package/dist/gs/slices/index.js +2 -0
  84. package/dist/gs/slices/index.js.map +1 -0
  85. package/dist/gs/slices/slices.d.ts +8 -0
  86. package/dist/gs/slices/slices.js +20 -0
  87. package/dist/gs/slices/slices.js.map +1 -0
  88. package/dist/gs/time/index.d.ts +1 -0
  89. package/dist/gs/time/index.js +2 -0
  90. package/dist/gs/time/index.js.map +1 -0
  91. package/dist/gs/time/time.d.ts +57 -0
  92. package/dist/gs/time/time.js +208 -0
  93. package/dist/gs/time/time.js.map +1 -0
  94. package/package.json +3 -2
@@ -0,0 +1,47 @@
1
+ export declare const UintSize = 32;
2
+ export declare function LeadingZeros(x: number): number;
3
+ export declare function LeadingZeros8(x: number): number;
4
+ export declare function LeadingZeros16(x: number): number;
5
+ export declare function LeadingZeros32(x: number): number;
6
+ export declare function LeadingZeros64(x: bigint): number;
7
+ export declare function TrailingZeros(x: number): number;
8
+ export declare function TrailingZeros8(x: number): number;
9
+ export declare function TrailingZeros16(x: number): number;
10
+ export declare function TrailingZeros32(x: number): number;
11
+ export declare function TrailingZeros64(x: bigint): number;
12
+ export declare function OnesCount(x: number): number;
13
+ export declare function OnesCount8(x: number): number;
14
+ export declare function OnesCount16(x: number): number;
15
+ export declare function OnesCount32(x: number): number;
16
+ export declare function OnesCount64(x: bigint): number;
17
+ export declare function RotateLeft(x: number, k: number): number;
18
+ export declare function RotateLeft8(x: number, k: number): number;
19
+ export declare function RotateLeft16(x: number, k: number): number;
20
+ export declare function RotateLeft32(x: number, k: number): number;
21
+ export declare function RotateLeft64(x: bigint, k: number): bigint;
22
+ export declare function Reverse(x: number): number;
23
+ export declare function Reverse8(x: number): number;
24
+ export declare function Reverse16(x: number): number;
25
+ export declare function Reverse32(x: number): number;
26
+ export declare function Reverse64(x: bigint): bigint;
27
+ export declare function ReverseBytes(x: number): number;
28
+ export declare function ReverseBytes16(x: number): number;
29
+ export declare function ReverseBytes32(x: number): number;
30
+ export declare function ReverseBytes64(x: bigint): bigint;
31
+ export declare function Len(x: number): number;
32
+ export declare function Len8(x: number): number;
33
+ export declare function Len16(x: number): number;
34
+ export declare function Len32(x: number): number;
35
+ export declare function Len64(x: bigint): number;
36
+ export declare function Mul(x: number, y: number): [number, number];
37
+ export declare function Mul32(x: number, y: number): [number, number];
38
+ export declare function Mul64(x: bigint, y: bigint): [bigint, bigint];
39
+ export declare function Div(hi: number, lo: number, y: number): [number, number];
40
+ export declare function Div32(hi: number, lo: number, y: number): [number, number];
41
+ export declare function Div64(hi: bigint, lo: bigint, y: bigint): [bigint, bigint];
42
+ export declare function Add(x: number, y: number, carry: number): [number, number];
43
+ export declare function Add32(x: number, y: number, carry: number): [number, number];
44
+ export declare function Add64(x: bigint, y: bigint, carry: bigint): [bigint, bigint];
45
+ export declare function Sub(x: number, y: number, borrow: number): [number, number];
46
+ export declare function Sub32(x: number, y: number, borrow: number): [number, number];
47
+ export declare function Sub64(x: bigint, y: bigint, borrow: bigint): [bigint, bigint];
@@ -0,0 +1,298 @@
1
+ // Minimal stub for math/bits package
2
+ // This replaces the auto-generated version that has TypeScript syntax errors
3
+ // UintSize is the size of a uint in bits
4
+ export const UintSize = 32; // Assuming 32-bit for JavaScript numbers
5
+ // --- Leading zeros ---
6
+ export function LeadingZeros(x) {
7
+ return Math.clz32(x >>> 0);
8
+ }
9
+ export function LeadingZeros8(x) {
10
+ return Math.clz32((x & 0xFF) << 24);
11
+ }
12
+ export function LeadingZeros16(x) {
13
+ return Math.clz32((x & 0xFFFF) << 16);
14
+ }
15
+ export function LeadingZeros32(x) {
16
+ return Math.clz32(x >>> 0);
17
+ }
18
+ export function LeadingZeros64(x) {
19
+ // For 64-bit, we need to handle it differently
20
+ if (x === 0n)
21
+ return 64;
22
+ let count = 0;
23
+ let mask = 1n << 63n;
24
+ while ((x & mask) === 0n && count < 64) {
25
+ count++;
26
+ mask >>= 1n;
27
+ }
28
+ return count;
29
+ }
30
+ // --- Trailing zeros ---
31
+ export function TrailingZeros(x) {
32
+ if (x === 0)
33
+ return UintSize;
34
+ return TrailingZeros32(x);
35
+ }
36
+ export function TrailingZeros8(x) {
37
+ if (x === 0)
38
+ return 8;
39
+ return Math.min(8, TrailingZeros32(x));
40
+ }
41
+ export function TrailingZeros16(x) {
42
+ if (x === 0)
43
+ return 16;
44
+ return Math.min(16, TrailingZeros32(x));
45
+ }
46
+ export function TrailingZeros32(x) {
47
+ if (x === 0)
48
+ return 32;
49
+ let count = 0;
50
+ while ((x & 1) === 0) {
51
+ count++;
52
+ x >>>= 1;
53
+ }
54
+ return count;
55
+ }
56
+ export function TrailingZeros64(x) {
57
+ if (x === 0n)
58
+ return 64;
59
+ let count = 0;
60
+ while ((x & 1n) === 0n && count < 64) {
61
+ count++;
62
+ x >>= 1n;
63
+ }
64
+ return count;
65
+ }
66
+ // --- Ones count ---
67
+ export function OnesCount(x) {
68
+ return OnesCount32(x);
69
+ }
70
+ export function OnesCount8(x) {
71
+ return OnesCount32(x & 0xFF);
72
+ }
73
+ export function OnesCount16(x) {
74
+ return OnesCount32(x & 0xFFFF);
75
+ }
76
+ export function OnesCount32(x) {
77
+ // Brian Kernighan's algorithm
78
+ let count = 0;
79
+ x = x >>> 0; // Ensure unsigned
80
+ while (x) {
81
+ count++;
82
+ x &= x - 1;
83
+ }
84
+ return count;
85
+ }
86
+ export function OnesCount64(x) {
87
+ let count = 0;
88
+ while (x > 0n) {
89
+ count++;
90
+ x &= x - 1n;
91
+ }
92
+ return count;
93
+ }
94
+ // --- Rotate left ---
95
+ export function RotateLeft(x, k) {
96
+ return RotateLeft32(x, k);
97
+ }
98
+ export function RotateLeft8(x, k) {
99
+ const n = 8;
100
+ k = k % n;
101
+ x = x & 0xFF;
102
+ return ((x << k) | (x >> (n - k))) & 0xFF;
103
+ }
104
+ export function RotateLeft16(x, k) {
105
+ const n = 16;
106
+ k = k % n;
107
+ x = x & 0xFFFF;
108
+ return ((x << k) | (x >> (n - k))) & 0xFFFF;
109
+ }
110
+ export function RotateLeft32(x, k) {
111
+ const n = 32;
112
+ k = k % n;
113
+ x = x >>> 0; // Ensure unsigned
114
+ return ((x << k) | (x >>> (n - k))) >>> 0;
115
+ }
116
+ export function RotateLeft64(x, k) {
117
+ const n = 64;
118
+ k = k % n;
119
+ const mask = (1n << 64n) - 1n;
120
+ x = x & mask;
121
+ return ((x << BigInt(k)) | (x >> BigInt(n - k))) & mask;
122
+ }
123
+ // --- Reverse ---
124
+ export function Reverse(x) {
125
+ return Reverse32(x);
126
+ }
127
+ export function Reverse8(x) {
128
+ x = x & 0xFF;
129
+ x = ((x & 0xF0) >> 4) | ((x & 0x0F) << 4);
130
+ x = ((x & 0xCC) >> 2) | ((x & 0x33) << 2);
131
+ x = ((x & 0xAA) >> 1) | ((x & 0x55) << 1);
132
+ return x;
133
+ }
134
+ export function Reverse16(x) {
135
+ x = x & 0xFFFF;
136
+ x = ((x & 0xFF00) >> 8) | ((x & 0x00FF) << 8);
137
+ x = ((x & 0xF0F0) >> 4) | ((x & 0x0F0F) << 4);
138
+ x = ((x & 0xCCCC) >> 2) | ((x & 0x3333) << 2);
139
+ x = ((x & 0xAAAA) >> 1) | ((x & 0x5555) << 1);
140
+ return x;
141
+ }
142
+ export function Reverse32(x) {
143
+ x = x >>> 0; // Ensure unsigned
144
+ x = ((x & 0xFFFF0000) >>> 16) | ((x & 0x0000FFFF) << 16);
145
+ x = ((x & 0xFF00FF00) >>> 8) | ((x & 0x00FF00FF) << 8);
146
+ x = ((x & 0xF0F0F0F0) >>> 4) | ((x & 0x0F0F0F0F) << 4);
147
+ x = ((x & 0xCCCCCCCC) >>> 2) | ((x & 0x33333333) << 2);
148
+ x = ((x & 0xAAAAAAAA) >>> 1) | ((x & 0x55555555) << 1);
149
+ return x >>> 0;
150
+ }
151
+ export function Reverse64(x) {
152
+ // Implement 64-bit reverse using similar bit manipulation
153
+ const mask = (1n << 64n) - 1n;
154
+ x = x & mask;
155
+ // Swap 32-bit halves
156
+ x = ((x & 0xffffffff00000000n) >> 32n) | ((x & 0x00000000ffffffffn) << 32n);
157
+ // Swap 16-bit chunks
158
+ x = ((x & 0xffff0000ffff0000n) >> 16n) | ((x & 0x0000ffff0000ffffn) << 16n);
159
+ // Swap 8-bit chunks
160
+ x = ((x & 0xff00ff00ff00ff00n) >> 8n) | ((x & 0x00ff00ff00ff00ffn) << 8n);
161
+ // Swap 4-bit chunks
162
+ x = ((x & 0xf0f0f0f0f0f0f0f0n) >> 4n) | ((x & 0x0f0f0f0f0f0f0f0fn) << 4n);
163
+ // Swap 2-bit chunks
164
+ x = ((x & 0xccccccccccccccccn) >> 2n) | ((x & 0x3333333333333333n) << 2n);
165
+ // Swap 1-bit chunks
166
+ x = ((x & 0xaaaaaaaaaaaaaaaan) >> 1n) | ((x & 0x5555555555555555n) << 1n);
167
+ return x & mask;
168
+ }
169
+ // --- ReverseBytes ---
170
+ export function ReverseBytes(x) {
171
+ return ReverseBytes32(x);
172
+ }
173
+ export function ReverseBytes16(x) {
174
+ return ((x & 0xFF) << 8) | ((x & 0xFF00) >> 8);
175
+ }
176
+ export function ReverseBytes32(x) {
177
+ x = x >>> 0; // Ensure unsigned
178
+ return (((x & 0xFF) << 24) |
179
+ ((x & 0xFF00) << 8) |
180
+ ((x & 0xFF0000) >> 8) |
181
+ ((x & 0xFF000000) >>> 24)) >>> 0;
182
+ }
183
+ export function ReverseBytes64(x) {
184
+ const mask = (1n << 64n) - 1n;
185
+ x = x & mask;
186
+ return (((x & 0xffn) << 56n) |
187
+ ((x & 0xff00n) << 40n) |
188
+ ((x & 0xff0000n) << 24n) |
189
+ ((x & 0xff000000n) << 8n) |
190
+ ((x & 0xff00000000n) >> 8n) |
191
+ ((x & 0xff0000000000n) >> 24n) |
192
+ ((x & 0xff000000000000n) >> 40n) |
193
+ ((x & 0xff00000000000000n) >> 56n)) & mask;
194
+ }
195
+ // --- Len ---
196
+ export function Len(x) {
197
+ return Len32(x);
198
+ }
199
+ export function Len8(x) {
200
+ return 8 - LeadingZeros8(x);
201
+ }
202
+ export function Len16(x) {
203
+ return 16 - LeadingZeros16(x);
204
+ }
205
+ export function Len32(x) {
206
+ return 32 - LeadingZeros32(x);
207
+ }
208
+ export function Len64(x) {
209
+ return 64 - LeadingZeros64(x);
210
+ }
211
+ // --- Multiplication functions ---
212
+ export function Mul(x, y) {
213
+ return Mul32(x, y);
214
+ }
215
+ export function Mul32(x, y) {
216
+ // For 32-bit multiplication, we can use JavaScript's number precision
217
+ const result = (x >>> 0) * (y >>> 0);
218
+ const hi = Math.floor(result / 0x100000000) >>> 0;
219
+ const lo = result >>> 0;
220
+ return [hi, lo];
221
+ }
222
+ export function Mul64(x, y) {
223
+ const mask32 = 0xffffffffn;
224
+ // Split into 32-bit parts
225
+ const x0 = x & mask32;
226
+ const x1 = x >> 32n;
227
+ const y0 = y & mask32;
228
+ const y1 = y >> 32n;
229
+ // Multiply parts
230
+ const p00 = x0 * y0;
231
+ const p01 = x0 * y1;
232
+ const p10 = x1 * y0;
233
+ const p11 = x1 * y1;
234
+ // Combine results
235
+ const lo = p00 + ((p01 + p10) << 32n);
236
+ const hi = p11 + ((p01 + p10) >> 32n) + (lo < p00 ? 1n : 0n);
237
+ return [hi, lo];
238
+ }
239
+ // --- Division functions ---
240
+ export function Div(hi, lo, y) {
241
+ return Div32(hi, lo, y);
242
+ }
243
+ export function Div32(hi, lo, y) {
244
+ if (y === 0) {
245
+ throw new Error("division by zero");
246
+ }
247
+ // Combine hi and lo into a 64-bit value using BigInt for precision
248
+ const dividend = (BigInt(hi >>> 0) << 32n) | BigInt(lo >>> 0);
249
+ const divisor = BigInt(y >>> 0);
250
+ const quotient = dividend / divisor;
251
+ const remainder = dividend % divisor;
252
+ return [Number(quotient), Number(remainder)];
253
+ }
254
+ export function Div64(hi, lo, y) {
255
+ if (y === 0n) {
256
+ throw new Error("division by zero");
257
+ }
258
+ // Combine hi and lo into a 128-bit value (simulated)
259
+ // For simplicity, we'll use a basic implementation
260
+ const dividend = (hi << 64n) | lo;
261
+ const quotient = dividend / y;
262
+ const remainder = dividend % y;
263
+ return [quotient, remainder];
264
+ }
265
+ // --- Add and Sub with carry ---
266
+ export function Add(x, y, carry) {
267
+ return Add32(x, y, carry);
268
+ }
269
+ export function Add32(x, y, carry) {
270
+ const sum = (x >>> 0) + (y >>> 0) + (carry >>> 0);
271
+ const result = sum >>> 0;
272
+ const carryOut = sum > 0xFFFFFFFF ? 1 : 0;
273
+ return [result, carryOut];
274
+ }
275
+ export function Add64(x, y, carry) {
276
+ const mask = (1n << 64n) - 1n;
277
+ const sum = (x & mask) + (y & mask) + (carry & mask);
278
+ const result = sum & mask;
279
+ const carryOut = sum > mask ? 1n : 0n;
280
+ return [result, carryOut];
281
+ }
282
+ export function Sub(x, y, borrow) {
283
+ return Sub32(x, y, borrow);
284
+ }
285
+ export function Sub32(x, y, borrow) {
286
+ const diff = (x >>> 0) - (y >>> 0) - (borrow >>> 0);
287
+ const result = diff >>> 0;
288
+ const borrowOut = diff < 0 ? 1 : 0;
289
+ return [result, borrowOut];
290
+ }
291
+ export function Sub64(x, y, borrow) {
292
+ const mask = (1n << 64n) - 1n;
293
+ const diff = (x & mask) - (y & mask) - (borrow & mask);
294
+ const result = diff & mask;
295
+ const borrowOut = diff < 0n ? 1n : 0n;
296
+ return [result, borrowOut];
297
+ }
298
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../gs/math/bits/index.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,6EAA6E;AAE7E,yCAAyC;AACzC,MAAM,CAAC,MAAM,QAAQ,GAAG,EAAE,CAAC,CAAC,yCAAyC;AAErE,wBAAwB;AACxB,MAAM,UAAU,YAAY,CAAC,CAAS;IACpC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,CAAS;IACrC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,CAAS;IACtC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,CAAS;IACtC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,CAAS;IACtC,+CAA+C;IAC/C,IAAI,CAAC,KAAK,EAAE;QAAE,OAAO,EAAE,CAAC;IACxB,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,CAAC;IACrB,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,KAAK,GAAG,EAAE,EAAE,CAAC;QACvC,KAAK,EAAE,CAAC;QACR,IAAI,KAAK,EAAE,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,yBAAyB;AACzB,MAAM,UAAU,aAAa,CAAC,CAAS;IACrC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC7B,OAAO,eAAe,CAAC,CAAC,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,CAAS;IACtC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IACtB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,CAAS;IACvC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACvB,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,CAAS;IACvC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACvB,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;QACrB,KAAK,EAAE,CAAC;QACR,CAAC,MAAM,CAAC,CAAC;IACX,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,CAAS;IACvC,IAAI,CAAC,KAAK,EAAE;QAAE,OAAO,EAAE,CAAC;IACxB,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,GAAG,EAAE,EAAE,CAAC;QACrC,KAAK,EAAE,CAAC;QACR,CAAC,KAAK,EAAE,CAAC;IACX,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,qBAAqB;AACrB,MAAM,UAAU,SAAS,CAAC,CAAS;IACjC,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,CAAS;IAClC,OAAO,WAAW,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,CAAS;IACnC,OAAO,WAAW,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,CAAS;IACnC,8BAA8B;IAC9B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,kBAAkB;IAC/B,OAAO,CAAC,EAAE,CAAC;QACT,KAAK,EAAE,CAAC;QACR,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACb,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,CAAS;IACnC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;QACd,KAAK,EAAE,CAAC;QACR,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,sBAAsB;AACtB,MAAM,UAAU,UAAU,CAAC,CAAS,EAAE,CAAS;IAC7C,OAAO,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,CAAS,EAAE,CAAS;IAC9C,MAAM,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACV,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IACb,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,CAAS,EAAE,CAAS;IAC/C,MAAM,CAAC,GAAG,EAAE,CAAC;IACb,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACV,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;IACf,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,CAAS,EAAE,CAAS;IAC/C,MAAM,CAAC,GAAG,EAAE,CAAC;IACb,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACV,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,kBAAkB;IAC/B,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,CAAS,EAAE,CAAS;IAC/C,MAAM,CAAC,GAAG,EAAE,CAAC;IACb,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACV,MAAM,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;IAC9B,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IACb,OAAO,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;AAC1D,CAAC;AAED,kBAAkB;AAClB,MAAM,UAAU,OAAO,CAAC,CAAS;IAC/B,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,CAAS;IAChC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IACb,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1C,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1C,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1C,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,CAAS;IACjC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;IACf,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9C,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9C,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9C,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9C,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,CAAS;IACjC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,kBAAkB;IAC/B,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;IACzD,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IACvD,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IACvD,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IACvD,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IACvD,OAAO,CAAC,KAAK,CAAC,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,CAAS;IACjC,0DAA0D;IAC1D,MAAM,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;IAC9B,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IAEb,qBAAqB;IACrB,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,IAAI,GAAG,CAAC,CAAC;IAC5E,qBAAqB;IACrB,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,IAAI,GAAG,CAAC,CAAC;IAC5E,oBAAoB;IACpB,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1E,oBAAoB;IACpB,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1E,oBAAoB;IACpB,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1E,oBAAoB;IACpB,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,IAAI,EAAE,CAAC,CAAC;IAE1E,OAAO,CAAC,GAAG,IAAI,CAAC;AAClB,CAAC;AAED,uBAAuB;AACvB,MAAM,UAAU,YAAY,CAAC,CAAS;IACpC,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,CAAS;IACtC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,CAAS;IACtC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,kBAAkB;IAC/B,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,CAAS;IACtC,MAAM,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;IAC9B,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IAEb,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,GAAG,CAAC;QACpB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,GAAG,CAAC;QACtB,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,GAAG,CAAC;QACxB,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC;QACzB,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC;QAC3B,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,IAAI,GAAG,CAAC;QAC9B,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,IAAI,GAAG,CAAC;QAChC,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;AACrD,CAAC;AAED,cAAc;AACd,MAAM,UAAU,GAAG,CAAC,CAAS;IAC3B,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,CAAS;IAC5B,OAAO,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,CAAS;IAC7B,OAAO,EAAE,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,CAAS;IAC7B,OAAO,EAAE,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,CAAS;IAC7B,OAAO,EAAE,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;AAChC,CAAC;AAED,mCAAmC;AACnC,MAAM,UAAU,GAAG,CAAC,CAAS,EAAE,CAAS;IACtC,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,CAAS,EAAE,CAAS;IACxC,sEAAsE;IACtE,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IACrC,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,CAAC;IACxB,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,CAAS,EAAE,CAAS;IACxC,MAAM,MAAM,GAAG,WAAW,CAAC;IAE3B,0BAA0B;IAC1B,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC;IACtB,MAAM,EAAE,GAAG,CAAC,IAAI,GAAG,CAAC;IACpB,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC;IACtB,MAAM,EAAE,GAAG,CAAC,IAAI,GAAG,CAAC;IAEpB,iBAAiB;IACjB,MAAM,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC;IACpB,MAAM,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC;IACpB,MAAM,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC;IACpB,MAAM,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC;IAEpB,kBAAkB;IAClB,MAAM,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC;IACtC,MAAM,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAE7D,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAClB,CAAC;AAED,6BAA6B;AAC7B,MAAM,UAAU,GAAG,CAAC,EAAU,EAAE,EAAU,EAAE,CAAS;IACnD,OAAO,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,EAAU,EAAE,EAAU,EAAE,CAAS;IACrD,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACtC,CAAC;IAED,mEAAmE;IACnE,MAAM,QAAQ,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;IAC9D,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAEhC,MAAM,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;IACpC,MAAM,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;IAErC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,EAAU,EAAE,EAAU,EAAE,CAAS;IACrD,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACtC,CAAC;IAED,qDAAqD;IACrD,mDAAmD;IACnD,MAAM,QAAQ,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;IAClC,MAAM,QAAQ,GAAG,QAAQ,GAAG,CAAC,CAAC;IAC9B,MAAM,SAAS,GAAG,QAAQ,GAAG,CAAC,CAAC;IAE/B,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;AAC/B,CAAC;AAED,iCAAiC;AACjC,MAAM,UAAU,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,KAAa;IACrD,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,CAAS,EAAE,CAAS,EAAE,KAAa;IACvD,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC;IACzB,MAAM,QAAQ,GAAG,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1C,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,CAAS,EAAE,CAAS,EAAE,KAAa;IACvD,MAAM,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;IAC9B,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;IACrD,MAAM,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC;IAC1B,MAAM,QAAQ,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACtC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,MAAc;IACtD,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,CAAS,EAAE,CAAS,EAAE,MAAc;IACxD,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC,CAAC;IAC1B,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,CAAS,EAAE,CAAS,EAAE,MAAc;IACxD,MAAM,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;IAC9B,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACvD,MAAM,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IAC3B,MAAM,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACtC,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAC7B,CAAC"}
@@ -0,0 +1 @@
1
+ export * from './runtime.js';
@@ -0,0 +1,2 @@
1
+ export * from './runtime.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../gs/runtime/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA"}
@@ -0,0 +1,41 @@
1
+ export declare const GOOS = "js";
2
+ export declare const GOARCH = "wasm";
3
+ export declare function Version(): string;
4
+ export declare function GOMAXPROCS(n: number): number;
5
+ export declare function NumCPU(): number;
6
+ export declare function GC(): void;
7
+ export declare function Gosched(): Promise<void>;
8
+ export declare function NumGoroutine(): number;
9
+ export declare function _incrementGoroutineCount(): void;
10
+ export declare function _decrementGoroutineCount(): void;
11
+ export declare function Caller(skip: number): [number, string, number, boolean];
12
+ export declare function Stack(): Uint8Array;
13
+ export declare class MemStats {
14
+ Alloc: number;
15
+ TotalAlloc: number;
16
+ Sys: number;
17
+ Lookups: number;
18
+ Mallocs: number;
19
+ Frees: number;
20
+ constructor();
21
+ private updateMemoryStats;
22
+ }
23
+ export declare function ReadMemStats(m: MemStats): void;
24
+ export interface Error {
25
+ Error(): string;
26
+ }
27
+ export declare class TypeAssertionError implements Error {
28
+ readonly interfaceType: string;
29
+ readonly concrete: string;
30
+ readonly assertedType: string;
31
+ readonly missingMethod?: string | undefined;
32
+ constructor(interfaceType: string, concrete: string, assertedType: string, missingMethod?: string | undefined);
33
+ Error(): string;
34
+ }
35
+ export declare class PanicError implements Error {
36
+ readonly value: any;
37
+ constructor(value: any);
38
+ Error(): string;
39
+ }
40
+ export declare function SetFinalizer(obj: object, finalizer: ((obj: object) => void) | null): void;
41
+ export declare function KeepAlive(obj: any): void;
@@ -0,0 +1,158 @@
1
+ // Runtime constants for the JavaScript/WebAssembly target
2
+ export const GOOS = "js";
3
+ export const GOARCH = "wasm";
4
+ // Version returns the Go version as a string
5
+ export function Version() {
6
+ return "go1.22.0"; // Static version for goscript compatibility
7
+ }
8
+ // GOMAXPROCS sets the maximum number of operating system threads
9
+ // In JavaScript/browser environment, this is mostly informational
10
+ export function GOMAXPROCS(n) {
11
+ // In browser/JS environment, we can't actually control OS threads
12
+ // Return number of logical CPUs available, or previous value
13
+ if (n < 1) {
14
+ // Return current "setting" (number of logical CPUs)
15
+ return NumCPU();
16
+ }
17
+ // In a real implementation, we would set the max procs
18
+ // For JS/browser, we just return the requested value
19
+ return n;
20
+ }
21
+ // NumCPU returns the number of logical CPUs usable by the current process
22
+ export function NumCPU() {
23
+ // In browser environment, use navigator.hardwareConcurrency if available
24
+ if (typeof navigator !== 'undefined' && navigator.hardwareConcurrency) {
25
+ return navigator.hardwareConcurrency;
26
+ }
27
+ // Default to 1 if we can't determine
28
+ return 1;
29
+ }
30
+ // GC runs a garbage collection and blocks the caller until the
31
+ // garbage collection is complete. In JavaScript, we can suggest GC but not force it.
32
+ export function GC() {
33
+ // In JavaScript, we can't force garbage collection
34
+ // Some engines have gc() function in development, but it's not standard
35
+ if (typeof globalThis.gc === 'function') {
36
+ globalThis.gc();
37
+ }
38
+ // Otherwise, this is a no-op
39
+ }
40
+ // Gosched yields the processor, allowing other goroutines to run.
41
+ // In JavaScript, we can use setTimeout(0) or queueMicrotask for similar effect
42
+ export function Gosched() {
43
+ return new Promise(resolve => {
44
+ queueMicrotask(resolve);
45
+ });
46
+ }
47
+ // NumGoroutine returns the number of goroutines that currently exist.
48
+ // In goscript, this is informational only
49
+ let goroutineCount = 1; // Start with main goroutine
50
+ export function NumGoroutine() {
51
+ return goroutineCount;
52
+ }
53
+ // Internal function to track goroutine creation (called by goscript runtime)
54
+ export function _incrementGoroutineCount() {
55
+ goroutineCount++;
56
+ }
57
+ // Internal function to track goroutine completion (called by goscript runtime)
58
+ export function _decrementGoroutineCount() {
59
+ if (goroutineCount > 0) {
60
+ goroutineCount--;
61
+ }
62
+ }
63
+ // Caller returns details about the calling goroutine's stack.
64
+ // This is a simplified version for goscript
65
+ export function Caller(skip) {
66
+ // In JavaScript, we can use Error stack trace, but it's limited
67
+ // Return dummy values for goscript compatibility
68
+ const pc = 0; // program counter (not meaningful in JS)
69
+ const file = "unknown";
70
+ const line = 0;
71
+ const ok = false; // indicate we don't have real stack info
72
+ return [pc, file, line, ok];
73
+ }
74
+ // Stack returns a formatted stack trace of the calling goroutine.
75
+ // In JavaScript, we use Error.stack
76
+ export function Stack() {
77
+ const stack = new Error().stack || "stack trace unavailable";
78
+ const encoder = new TextEncoder();
79
+ return encoder.encode(stack);
80
+ }
81
+ // MemStats represents memory allocation statistics
82
+ export class MemStats {
83
+ // Simplified memory stats for goscript
84
+ Alloc = 0; // bytes allocated and not yet freed
85
+ TotalAlloc = 0; // bytes allocated (even if freed)
86
+ Sys = 0; // bytes obtained from system
87
+ Lookups = 0; // number of pointer lookups
88
+ Mallocs = 0; // number of mallocs
89
+ Frees = 0; // number of frees
90
+ constructor() {
91
+ // Initialize with some default values
92
+ // In a real environment, these would be obtained from the JS runtime
93
+ this.updateMemoryStats();
94
+ }
95
+ updateMemoryStats() {
96
+ // Use performance.memory if available (Chrome/Edge)
97
+ if (typeof performance !== 'undefined' && performance.memory) {
98
+ const mem = performance.memory;
99
+ this.Alloc = mem.usedJSHeapSize || 0;
100
+ this.Sys = mem.totalJSHeapSize || 0;
101
+ this.TotalAlloc = this.Alloc; // Simplified
102
+ }
103
+ }
104
+ }
105
+ // ReadMemStats populates m with memory allocator statistics
106
+ export function ReadMemStats(m) {
107
+ // Update the provided MemStats object with current values
108
+ if (typeof performance !== 'undefined' && performance.memory) {
109
+ const mem = performance.memory;
110
+ m.Alloc = mem.usedJSHeapSize || 0;
111
+ m.Sys = mem.totalJSHeapSize || 0;
112
+ m.TotalAlloc = m.Alloc; // Simplified
113
+ }
114
+ }
115
+ // TypeAssertionError represents a failed type assertion
116
+ export class TypeAssertionError {
117
+ interfaceType;
118
+ concrete;
119
+ assertedType;
120
+ missingMethod;
121
+ constructor(interfaceType, concrete, assertedType, missingMethod) {
122
+ this.interfaceType = interfaceType;
123
+ this.concrete = concrete;
124
+ this.assertedType = assertedType;
125
+ this.missingMethod = missingMethod;
126
+ }
127
+ Error() {
128
+ if (this.missingMethod) {
129
+ return `interface conversion: ${this.interfaceType} is ${this.concrete}, not ${this.assertedType} (missing ${this.missingMethod} method)`;
130
+ }
131
+ return `interface conversion: ${this.interfaceType} is ${this.concrete}, not ${this.assertedType}`;
132
+ }
133
+ }
134
+ // PanicError represents a panic
135
+ export class PanicError {
136
+ value;
137
+ constructor(value) {
138
+ this.value = value;
139
+ }
140
+ Error() {
141
+ return `panic: ${this.value}`;
142
+ }
143
+ }
144
+ // SetFinalizer sets the finalizer associated with obj to the provided finalizer function.
145
+ // In goscript/TypeScript environment, finalizers are not supported, so this throws an error.
146
+ export function SetFinalizer(obj, finalizer) {
147
+ throw new Error("runtime.SetFinalizer is not supported in goscript TypeScript environment");
148
+ }
149
+ // KeepAlive keeps obj reachable until the point where KeepAlive is called
150
+ export function KeepAlive(obj) {
151
+ // In JavaScript, just accessing the object keeps it alive for this call
152
+ // This is mostly a no-op but we touch the object to ensure it's not optimized away
153
+ if (obj !== null && obj !== undefined) {
154
+ // Touch the object to keep it alive
155
+ void obj;
156
+ }
157
+ }
158
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../gs/runtime/runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export * from './slices.js';
@@ -0,0 +1,2 @@
1
+ export * from './slices.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../gs/slices/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA"}
@@ -0,0 +1,8 @@
1
+ import * as $ from "@goscript/builtin/builtin.js";
2
+ /**
3
+ * All returns an iterator over index-value pairs in the slice.
4
+ * This is equivalent to Go's slices.All function.
5
+ * @param s The slice to iterate over
6
+ * @returns An iterator function that yields index-value pairs
7
+ */
8
+ export declare function All<T>(s: $.Slice<T>): (yieldFunc: (index: number, value: T) => boolean) => void;
@@ -0,0 +1,20 @@
1
+ // TypeScript implementation of Go's slices package
2
+ import * as $ from "@goscript/builtin/builtin.js";
3
+ /**
4
+ * All returns an iterator over index-value pairs in the slice.
5
+ * This is equivalent to Go's slices.All function.
6
+ * @param s The slice to iterate over
7
+ * @returns An iterator function that yields index-value pairs
8
+ */
9
+ export function All(s) {
10
+ return function (_yield) {
11
+ const length = $.len(s);
12
+ for (let i = 0; i < length; i++) {
13
+ const value = s[i]; // Use proper indexing to avoid type issues
14
+ if (!_yield(i, value)) {
15
+ break;
16
+ }
17
+ }
18
+ };
19
+ }
20
+ //# sourceMappingURL=slices.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slices.js","sourceRoot":"","sources":["../../../gs/slices/slices.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,OAAO,KAAK,CAAC,MAAM,8BAA8B,CAAC;AAElD;;;;;GAKG;AACH,MAAM,UAAU,GAAG,CAAI,CAAa;IAClC,OAAO,UAAS,MAA4C;QAC1D,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChC,MAAM,KAAK,GAAI,CAAS,CAAC,CAAC,CAAM,CAAC,CAAC,2CAA2C;YAC7E,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;gBACtB,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1 @@
1
+ export * from './time.js';
@@ -0,0 +1,2 @@
1
+ export * from './time.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../gs/time/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA"}