@scriptc/compiler 0.3.5 → 0.3.6

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 (181) hide show
  1. package/ambient/scriptc-node-fallback.d.ts +278 -32
  2. package/dist/backend/llvm/dyn.js +31 -1
  3. package/dist/backend/llvm/dyn.js.map +1 -1
  4. package/dist/backend/llvm/emitter.d.ts +45 -1
  5. package/dist/backend/llvm/emitter.js +412 -104
  6. package/dist/backend/llvm/emitter.js.map +1 -1
  7. package/dist/backend/llvm/expr-dispatch.js +1 -0
  8. package/dist/backend/llvm/expr-dispatch.js.map +1 -1
  9. package/dist/backend/llvm/expr-dynamic.js +25 -1
  10. package/dist/backend/llvm/expr-dynamic.js.map +1 -1
  11. package/dist/backend/llvm/expr-primitives.d.ts +1 -1
  12. package/dist/backend/llvm/expr-primitives.js +11 -0
  13. package/dist/backend/llvm/expr-primitives.js.map +1 -1
  14. package/dist/backend/llvm/lib-dispatch.js +28 -1
  15. package/dist/backend/llvm/lib-dispatch.js.map +1 -1
  16. package/dist/backend/llvm/lib-filesystem.js +61 -1
  17. package/dist/backend/llvm/lib-filesystem.js.map +1 -1
  18. package/dist/backend/llvm/lib-network.js +21 -3
  19. package/dist/backend/llvm/lib-network.js.map +1 -1
  20. package/dist/backend/llvm/lib-process.js +10 -0
  21. package/dist/backend/llvm/lib-process.js.map +1 -1
  22. package/dist/backend/llvm/lib-shared.js +43 -0
  23. package/dist/backend/llvm/lib-shared.js.map +1 -1
  24. package/dist/backend/llvm/lib-test.js +16 -3
  25. package/dist/backend/llvm/lib-test.js.map +1 -1
  26. package/dist/backend/llvm/nullable-unions.d.ts +6 -3
  27. package/dist/backend/llvm/nullable-unions.js +2 -0
  28. package/dist/backend/llvm/nullable-unions.js.map +1 -1
  29. package/dist/backend/llvm/record-results.d.ts +1 -1
  30. package/dist/backend/llvm/record-results.js +2 -2
  31. package/dist/backend/llvm/record-results.js.map +1 -1
  32. package/dist/backend/llvm/reference-writes.js +1 -0
  33. package/dist/backend/llvm/reference-writes.js.map +1 -1
  34. package/dist/backend/llvm/shapes.d.ts +3 -0
  35. package/dist/backend/llvm/shapes.js +5 -0
  36. package/dist/backend/llvm/shapes.js.map +1 -1
  37. package/dist/backend/llvm/speculative-integers.d.ts +74 -0
  38. package/dist/backend/llvm/speculative-integers.js +571 -0
  39. package/dist/backend/llvm/speculative-integers.js.map +1 -0
  40. package/dist/backend/llvm/speculative-integers.test.d.ts +1 -0
  41. package/dist/backend/llvm/speculative-integers.test.js +148 -0
  42. package/dist/backend/llvm/speculative-integers.test.js.map +1 -0
  43. package/dist/backend/may-throw.js +2 -0
  44. package/dist/backend/may-throw.js.map +1 -1
  45. package/dist/backend/native/executable.js +3 -0
  46. package/dist/backend/native/executable.js.map +1 -1
  47. package/dist/backend/native/runtime-inputs.d.ts +1 -1
  48. package/dist/backend/native/runtime-inputs.js +1 -0
  49. package/dist/backend/native/runtime-inputs.js.map +1 -1
  50. package/dist/backend/runtime-pack.d.ts +7 -3
  51. package/dist/backend/runtime-pack.js +12 -6
  52. package/dist/backend/runtime-pack.js.map +1 -1
  53. package/dist/backend/runtime-pack.test.js +15 -6
  54. package/dist/backend/runtime-pack.test.js.map +1 -1
  55. package/dist/contracts/check.js +1 -0
  56. package/dist/contracts/check.js.map +1 -1
  57. package/dist/coverage/surface-manifest.js +3 -3
  58. package/dist/coverage/surface-manifest.js.map +1 -1
  59. package/dist/diagnostics/diagnostic.d.ts +1 -1
  60. package/dist/diagnostics/diagnostic.js +6 -2
  61. package/dist/diagnostics/diagnostic.js.map +1 -1
  62. package/dist/frontend/lowering/builtin-calls.js +10 -0
  63. package/dist/frontend/lowering/builtin-calls.js.map +1 -1
  64. package/dist/frontend/lowering/builtins/callable-aliases.js +31 -3
  65. package/dist/frontend/lowering/builtins/callable-aliases.js.map +1 -1
  66. package/dist/frontend/lowering/builtins/compression.d.ts +9 -0
  67. package/dist/frontend/lowering/builtins/compression.js +145 -30
  68. package/dist/frontend/lowering/builtins/compression.js.map +1 -1
  69. package/dist/frontend/lowering/builtins/crypto.js +12 -1
  70. package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
  71. package/dist/frontend/lowering/builtins/errors.js +5 -3
  72. package/dist/frontend/lowering/builtins/errors.js.map +1 -1
  73. package/dist/frontend/lowering/builtins/filesystem-calls.d.ts +4 -0
  74. package/dist/frontend/lowering/builtins/filesystem-calls.js +11 -0
  75. package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
  76. package/dist/frontend/lowering/builtins/filesystem.d.ts +8 -0
  77. package/dist/frontend/lowering/builtins/filesystem.js +139 -2
  78. package/dist/frontend/lowering/builtins/filesystem.js.map +1 -1
  79. package/dist/frontend/lowering/builtins/hash-stream.d.ts +12 -0
  80. package/dist/frontend/lowering/builtins/hash-stream.js +80 -0
  81. package/dist/frontend/lowering/builtins/hash-stream.js.map +1 -0
  82. package/dist/frontend/lowering/builtins/module-calls.js +13 -3
  83. package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
  84. package/dist/frontend/lowering/builtins/process.js +9 -2
  85. package/dist/frontend/lowering/builtins/process.js.map +1 -1
  86. package/dist/frontend/lowering/builtins/readline.d.ts +45 -13
  87. package/dist/frontend/lowering/builtins/readline.js +812 -47
  88. package/dist/frontend/lowering/builtins/readline.js.map +1 -1
  89. package/dist/frontend/lowering/builtins/workers.d.ts +4 -0
  90. package/dist/frontend/lowering/builtins/workers.js +58 -0
  91. package/dist/frontend/lowering/builtins/workers.js.map +1 -1
  92. package/dist/frontend/lowering/class-protocols.d.ts +55 -0
  93. package/dist/frontend/lowering/class-protocols.js +735 -0
  94. package/dist/frontend/lowering/class-protocols.js.map +1 -1
  95. package/dist/frontend/lowering/containers/array-from-async.d.ts +18 -0
  96. package/dist/frontend/lowering/containers/array-from-async.js +282 -0
  97. package/dist/frontend/lowering/containers/array-from-async.js.map +1 -0
  98. package/dist/frontend/lowering/containers/collection-grouping.js +2 -1
  99. package/dist/frontend/lowering/containers/collection-grouping.js.map +1 -1
  100. package/dist/frontend/lowering/containers/collection-methods.js +27 -23
  101. package/dist/frontend/lowering/containers/collection-methods.js.map +1 -1
  102. package/dist/frontend/lowering/divergences.js +188 -15
  103. package/dist/frontend/lowering/divergences.js.map +1 -1
  104. package/dist/frontend/lowering/lower-calls.js +71 -22
  105. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  106. package/dist/frontend/lowering/lower-classes.js +39 -1
  107. package/dist/frontend/lowering/lower-classes.js.map +1 -1
  108. package/dist/frontend/lowering/lower-event-emitter.js +10 -1
  109. package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
  110. package/dist/frontend/lowering/lower-exprs.js +107 -13
  111. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  112. package/dist/frontend/lowering/lower-inspect.js +23 -3
  113. package/dist/frontend/lowering/lower-inspect.js.map +1 -1
  114. package/dist/frontend/lowering/lower-mock.d.ts +11 -1
  115. package/dist/frontend/lowering/lower-mock.js +377 -61
  116. package/dist/frontend/lowering/lower-mock.js.map +1 -1
  117. package/dist/frontend/lowering/lower-modules.js +1 -0
  118. package/dist/frontend/lowering/lower-modules.js.map +1 -1
  119. package/dist/frontend/lowering/lower-server.js +161 -16
  120. package/dist/frontend/lowering/lower-server.js.map +1 -1
  121. package/dist/frontend/lowering/lower-stmts.js +48 -7
  122. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  123. package/dist/frontend/lowering/lower-stream.d.ts +1 -3
  124. package/dist/frontend/lowering/lower-stream.js +317 -20
  125. package/dist/frontend/lowering/lower-stream.js.map +1 -1
  126. package/dist/frontend/lowering/lower-test.js +147 -48
  127. package/dist/frontend/lowering/lower-test.js.map +1 -1
  128. package/dist/frontend/lowering/lowerer.d.ts +10 -0
  129. package/dist/frontend/lowering/lowerer.js +8 -0
  130. package/dist/frontend/lowering/lowerer.js.map +1 -1
  131. package/dist/frontend/lowering/null-prototype.d.ts +13 -0
  132. package/dist/frontend/lowering/null-prototype.js +33 -0
  133. package/dist/frontend/lowering/null-prototype.js.map +1 -0
  134. package/dist/frontend/lowering/surfaces.d.ts +3 -3
  135. package/dist/frontend/lowering/surfaces.js +27 -5
  136. package/dist/frontend/lowering/surfaces.js.map +1 -1
  137. package/dist/frontend/mock-shapes.d.ts +5 -0
  138. package/dist/frontend/mock-shapes.js +27 -2
  139. package/dist/frontend/mock-shapes.js.map +1 -1
  140. package/dist/frontend/program.js +5 -4
  141. package/dist/frontend/program.js.map +1 -1
  142. package/dist/frontend/type-mapper.js +95 -4
  143. package/dist/frontend/type-mapper.js.map +1 -1
  144. package/dist/index.js +18 -8
  145. package/dist/index.js.map +1 -1
  146. package/dist/ir/builtin-effects.js +36 -0
  147. package/dist/ir/builtin-effects.js.map +1 -1
  148. package/dist/ir/builtin-signatures.d.ts +1 -1
  149. package/dist/ir/builtin-signatures.js +167 -6
  150. package/dist/ir/builtin-signatures.js.map +1 -1
  151. package/dist/ir/function-references.test.js +1 -0
  152. package/dist/ir/function-references.test.js.map +1 -1
  153. package/dist/ir/int32-slots.js +22 -0
  154. package/dist/ir/int32-slots.js.map +1 -1
  155. package/dist/ir/int32-slots.test.js +28 -0
  156. package/dist/ir/int32-slots.test.js.map +1 -1
  157. package/dist/ir/integer-loop-facts.d.ts +14 -6
  158. package/dist/ir/integer-loop-facts.js +119 -35
  159. package/dist/ir/integer-loop-facts.js.map +1 -1
  160. package/dist/ir/integer-ranges.js +1 -5
  161. package/dist/ir/integer-ranges.js.map +1 -1
  162. package/dist/ir/integer-ranges.test.js +60 -0
  163. package/dist/ir/integer-ranges.test.js.map +1 -1
  164. package/dist/ir/ir.d.ts +13 -0
  165. package/dist/ir/ir.js +4 -0
  166. package/dist/ir/ir.js.map +1 -1
  167. package/dist/ir/runtime-features.d.ts +3 -1
  168. package/dist/ir/runtime-features.js +96 -6
  169. package/dist/ir/runtime-features.js.map +1 -1
  170. package/dist/ir/runtime-features.test.js +62 -0
  171. package/dist/ir/runtime-features.test.js.map +1 -1
  172. package/dist/ir/traverse.js +4 -0
  173. package/dist/ir/traverse.js.map +1 -1
  174. package/dist/ir/validate.js +45 -3
  175. package/dist/ir/validate.js.map +1 -1
  176. package/dist/ir/validate.test.js +38 -0
  177. package/dist/ir/validate.test.js.map +1 -1
  178. package/dist/library/ir-policy.js +5 -0
  179. package/dist/library/ir-policy.js.map +1 -1
  180. package/package.json +20 -20
  181. package/surface-manifest.json +31 -19
@@ -149,15 +149,23 @@ export function boundedIntegerLoopFacts(loop, locals, initial) {
149
149
  }
150
150
  return result;
151
151
  }
152
+ /** The most UTF-16 code units a runtime string holds: SCR_STR_MAX_CAP
153
+ * (scr_runtime.h) caps a string's UTF-8 bytes, and a UTF-16 length never
154
+ * exceeds the UTF-8 byte length. */
155
+ export const STRING_MAX_UNITS = 0x7fffffff;
152
156
  /** Bound counters of a while loop by its condition. A counter qualifies when
153
157
  * the loop (condition and body) changes it only by increments of positive
154
158
  * integer literals outside nested loops, switch and exception regions, and a
155
- * conjunct of the condition compares it below a literal or a binding the loop
156
- * never writes (`while (x * x + y * y <= 4 && it < MAX) it++`). The body runs
157
- * only after that conjunct held, and the condition never writes the counter,
158
- * so every pass starts at most at the conjunct's bound and climbs by at most
159
- * the sum of the body's increments. The counter starts at its entry fact and
160
- * only grows, so the range holds at every read inside and after the loop. */
159
+ * conjunct of the condition compares it below a literal, a binding the loop
160
+ * never writes, or the length of a string binding the loop never writes
161
+ * (`while (x * x + y * y <= 4 && it < MAX) it++`, `while (pos < text.length)`).
162
+ * The body runs only after that conjunct held, and the condition never
163
+ * writes the counter, so every pass starts at most at the conjunct's bound.
164
+ * The pass then climbs by the increments on its path; an increment inside an
165
+ * `if` whose condition compares the counter below such a bound starts from
166
+ * at most that bound (`if (pos < text.length && ...) pos++`). The counter
167
+ * starts at its entry fact and only grows, so the range holds at every read
168
+ * inside and after the loop. */
161
169
  export function guardedLoopCounterFacts(loop, locals, initial) {
162
170
  const result = new Map();
163
171
  const budget = new Map(), refused = new Set();
@@ -221,47 +229,123 @@ export function guardedLoopCounterFacts(loop, locals, initial) {
221
229
  return { min: e.value, max: e.value };
222
230
  if (e.kind === "varRef" && stable(e.localId))
223
231
  return initial.get(e.localId) ?? null;
232
+ // Strings are immutable: the length of a binding the loop never writes
233
+ // is the same on every pass.
234
+ if (e.kind === "strIntrinsic" &&
235
+ e.method === "length" &&
236
+ e.args.length === 0 &&
237
+ e.type.kind === "f64" &&
238
+ e.receiver.kind === "varRef" &&
239
+ e.receiver.type.kind === "string" &&
240
+ stable(e.receiver.localId))
241
+ return { min: 0, max: STRING_MAX_UNITS };
224
242
  return null;
225
243
  };
226
- // Conjuncts that hold whenever the body runs.
227
- const conjuncts = [];
228
- const collect = (e) => {
229
- if (e.kind === "toBool")
230
- collect(e.operand);
231
- else if (e.kind === "logical" && e.op === "&&") {
232
- collect(e.left);
233
- collect(e.right);
244
+ // The bounds a condition's conjuncts put on counters while it holds.
245
+ const ceilings = (cond) => {
246
+ const conjuncts = [];
247
+ const collect = (e) => {
248
+ if (e.kind === "toBool")
249
+ collect(e.operand);
250
+ else if (e.kind === "logical" && e.op === "&&") {
251
+ collect(e.left);
252
+ collect(e.right);
253
+ }
254
+ else
255
+ conjuncts.push(e);
256
+ };
257
+ collect(cond);
258
+ const ceiling = new Map();
259
+ for (const c of conjuncts) {
260
+ if (c.kind !== "bin")
261
+ continue;
262
+ // `counter < bound` or `bound > counter` (and the inclusive forms).
263
+ const below = c.op === "<" || c.op === "<=", above = c.op === ">" || c.op === ">=";
264
+ const counter = below ? c.left : above ? c.right : null, other = below ? c.right : c.left;
265
+ if (counter?.kind !== "varRef")
266
+ continue;
267
+ const bound = limit(other);
268
+ if (!bound)
269
+ continue;
270
+ const hi = c.op === "<" || c.op === ">" ? bound.max - 1 : bound.max;
271
+ const previous = ceiling.get(counter.localId);
272
+ ceiling.set(counter.localId, previous === undefined ? hi : Math.min(previous, hi));
234
273
  }
235
- else
236
- conjuncts.push(e);
274
+ return ceiling;
237
275
  };
238
- collect(loop.cond);
239
- const ceiling = new Map();
240
- for (const c of conjuncts) {
241
- if (c.kind !== "bin")
242
- continue;
243
- // `counter < bound` or `bound > counter` (and the inclusive forms).
244
- const below = c.op === "<" || c.op === "<=", above = c.op === ">" || c.op === ">=";
245
- const counter = below ? c.left : above ? c.right : null, other = below ? c.right : c.left;
246
- if (counter?.kind !== "varRef")
247
- continue;
248
- const bound = limit(other);
249
- if (!bound)
250
- continue;
251
- const hi = c.op === "<" || c.op === ">" ? bound.max - 1 : bound.max;
252
- const previous = ceiling.get(counter.localId);
253
- ceiling.set(counter.localId, previous === undefined ? hi : Math.min(previous, hi));
254
- }
255
- for (const [id, step] of budget) {
276
+ const ceiling = ceilings(loop.cond);
277
+ for (const id of budget.keys()) {
256
278
  const local = locals.get(id), start = initial.get(id), hi = ceiling.get(id);
257
279
  if (refused.has(id) || !local || local.boxed || local.tdz || !start || hi === undefined)
258
280
  continue;
259
- const max = Math.max(start.max, hi + step);
281
+ const max = Math.max(start.max, highestCount(loop.body, id, hi, ceilings));
260
282
  if (Number.isSafeInteger(start.min) && Number.isSafeInteger(max))
261
283
  result.set(id, { min: start.min, max });
262
284
  }
263
285
  return result;
264
286
  }
287
+ /** The largest value counter `id` takes in one pass of `body`, which starts
288
+ * at most at `entry`. The caller has checked that the body changes the
289
+ * counter only by positive literal increments outside nested loops, switch,
290
+ * exception and labeled regions, so those regions leave it unchanged, and
291
+ * every exit from a straight-line path leaves the body. An `if` whose
292
+ * condition does not write the counter caps it in the then branch by the
293
+ * condition's bounds; any other statement adds the increments it holds. */
294
+ function highestCount(body, id, entry, ceilings) {
295
+ let highest = entry;
296
+ const increments = (e, expression) => {
297
+ let total = 0;
298
+ const expr = (x) => {
299
+ if (x.kind === "assignExpr" && x.localId === id)
300
+ total += increment(id, x.value) ?? 0;
301
+ if (x.kind === "incDec" && x.localId === id)
302
+ total += 1;
303
+ return everyExprChild(x, expr, stmt);
304
+ };
305
+ const stmt = (x) => {
306
+ if (x.kind === "assign" && x.localId === id)
307
+ total += increment(id, x.value) ?? 0;
308
+ return everyStmtChild(x, expr, stmt);
309
+ };
310
+ if (expression)
311
+ expr(e);
312
+ else
313
+ stmt(e);
314
+ return total;
315
+ };
316
+ const walk = (stmts, start) => {
317
+ let count = start;
318
+ for (const s of stmts) {
319
+ if (count === -Infinity)
320
+ return count;
321
+ if (s.kind === "if") {
322
+ const added = increments(s.cond, true);
323
+ count += added;
324
+ highest = Math.max(highest, count);
325
+ const cap = added === 0 ? ceilings(s.cond).get(id) : undefined;
326
+ const then = walk(s.then, cap === undefined ? count : Math.min(count, cap));
327
+ const else_ = s.else_ ? walk(s.else_, count) : count;
328
+ count = Math.max(then, else_);
329
+ }
330
+ else if (s.kind === "block" && !s.labels?.length) {
331
+ count = walk(s.body, count);
332
+ }
333
+ else {
334
+ count += increments(s, false);
335
+ highest = Math.max(highest, count);
336
+ if (s.kind === "return" ||
337
+ s.kind === "throw" ||
338
+ s.kind === "rethrow" ||
339
+ s.kind === "break" ||
340
+ s.kind === "continue")
341
+ count = -Infinity;
342
+ }
343
+ }
344
+ return count;
345
+ };
346
+ walk(body, entry);
347
+ return highest;
348
+ }
265
349
  /** Recognize only exits whose target cannot be inside this statement list.
266
350
  * Labeled blocks, loops, switch and exception regions retain the join. */
267
351
  export function integerPathFallsThrough(body) {
@@ -1 +1 @@
1
- {"version":3,"file":"integer-loop-facts.js","sourceRoot":"","sources":["../../src/ir/integer-loop-facts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"integer-loop-facts.js","sourceRoot":"","sources":["../../src/ir/integer-loop-facts.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/D,SAAS,SAAS,CAAC,EAAU,EAAE,KAAa;IAC1C,IACE,KAAK,CAAC,IAAI,KAAK,KAAK;QACpB,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ;QAC5B,KAAK,CAAC,IAAI,CAAC,OAAO,KAAK,EAAE;QACzB,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ;QAC7B,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;QACxC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAEhC,OAAO,IAAI,CAAC;IACd,OAAO,KAAK,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7F,CAAC;AAED;;oBAEoB;AACpB,SAAS,iBAAiB,CAAC,EAAU,EAAE,KAAa;IAClD,IACE,KAAK,CAAC,IAAI,KAAK,KAAK;QACpB,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ;QAC5B,KAAK,CAAC,IAAI,CAAC,OAAO,KAAK,EAAE;QACzB,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ;QAC7B,KAAK,CAAC,KAAK,CAAC,OAAO,KAAK,EAAE;QAC1B,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,KAAK,CAAC,EAAE,KAAK,GAAG,CAAC;QAEtC,OAAO,IAAI,CAAC;IACd,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC3E,CAAC;AAED;;;;;;;;;WASW;AACX,MAAM,UAAU,uBAAuB,CACrC,IAA8B,EAC9B,MAAoC,EACpC,OAA0C;IAE1C,MAAM,MAAM,GAAG,IAAI,GAAG,EAAwB,CAAC;IAC/C,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,KAAK,KAAK;QAC9F,OAAO,MAAM,CAAC;IAChB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAC/B,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAChG,MAAM,QAAQ,GACZ,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACzF,IACE,CAAC,KAAK;QACN,KAAK,CAAC,GAAG,GAAG,CAAC;QACb,CAAC,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,IAAI,CAAC;QACxC,CAAC,QAAQ,KAAK,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,QAAQ,GAAG,UAAU,CAAC,CAAC;QAC/D,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ;QAChC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,KAAK,OAAO;QAClC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC;QAE/C,OAAO,MAAM,CAAC;IAChB,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,EAC/B,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9B,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,EACrC,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IACpC,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,MAAM,KAAK,GAAG,CAAC,EAAU,EAAE,KAAoB,EAAQ,EAAE;QACvD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,IAAI,MAAM,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO;QACT,CAAC;QACD,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACrD,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;YAAE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC5E,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAClB,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACpB,CAAC,CAAC;IACF,MAAM,IAAI,GAAG,CAAC,CAAS,EAAW,EAAE;QAClC,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY;YAAE,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7E,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ;YAAE,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjE,OAAO,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACvC,CAAC,CAAC;IACF,MAAM,IAAI,GAAG,CAAC,CAAS,EAAW,EAAE;QAClC,MAAM,MAAM,GACV,CAAC,CAAC,IAAI,KAAK,KAAK;YAChB,CAAC,CAAC,IAAI,KAAK,OAAO;YAClB,CAAC,CAAC,IAAI,KAAK,SAAS;YACpB,CAAC,CAAC,IAAI,KAAK,OAAO;YAClB,CAAC,CAAC,IAAI,KAAK,UAAU;YACrB,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC;QACtB,IAAI,MAAM;YAAE,MAAM,EAAE,CAAC;QACrB,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ;YAAE,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QACzE,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO;YAAE,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACvE,MAAM,SAAS,GAAG,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAChD,IAAI,MAAM;YAAE,MAAM,EAAE,CAAC;QACrB,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC;IACF,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACtB,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;QAAE,OAAO,MAAM,CAAC;IACxC,MAAM,MAAM,GAAG,CAAC,EAAU,EAAW,EAAE;QACrC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC7B,OAAO,KAAK,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,OAAO,CAAC;IACjG,CAAC,CAAC;IACF,SAAS,KAAK,CAAC,CAAS;QACtB,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACjF,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;QACxC,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;YAAE,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC;QACpF,IACE,CAAC,CAAC,IAAI,KAAK,gBAAgB;YAC3B,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,KAAK,YAAY,CAAC;YACpD,CAAC,CAAC,QAAQ,CAAC,IAAI,KAAK,QAAQ;YAC5B,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;YAE1B,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,gBAAgB,EAAE,CAAC;QAClD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,IAAkB,CAAC;IACvB,IAAI,QAAQ,KAAK,IAAI;QAAE,IAAI,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;SAC1D,CAAC;QACJ,oEAAoE;QACpE,MAAM,OAAO,GAAG,QAAS,CAAC,OAAO,CAAC;QAClC,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACjE,IAAI,CAAC,KAAK;YAAE,OAAO,MAAM,CAAC;QAC1B,IAAI;YACF,QAAS,CAAC,IAAI,GAAG,CAAC;gBAChB,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE;gBACpC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QAC3C,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,GAAG,UAAU;YAAE,OAAO,MAAM,CAAC;IAC5D,CAAC;IACD,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG;QAAE,OAAO,MAAM,CAAC;IACnD,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;IACvC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACvD,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC;QAAE,OAAO,MAAM,CAAC;IACxF,2EAA2E;IAC3E,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1D,IAAI,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC;QAAE,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;IACzF,KAAK,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,OAAO;YAAE,SAAS;QAC1D,MAAM,SAAS,GAAG,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC;QAC9C,MAAM,SAAS,GAAG,UAAU,GAAG,EAAE,CAAC;QAClC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC;YAAE,SAAS;QACnF,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,SAAS,CAAC;QAClC,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,SAAS,CAAC;QAClC,IAAI,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC;YAAE,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IAC3F,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;oCAEoC;AACpC,MAAM,CAAC,MAAM,gBAAgB,GAAG,UAAU,CAAC;AAE3C;;;;;;;;;;;;gCAYgC;AAChC,MAAM,UAAU,uBAAuB,CACrC,IAAgC,EAChC,MAAoC,EACpC,OAA0C;IAE1C,MAAM,MAAM,GAAG,IAAI,GAAG,EAAwB,CAAC;IAC/C,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,EACtC,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9B,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,MAAM,KAAK,GAAG,CAAC,EAAU,EAAE,KAAoB,EAAQ,EAAE;QACvD,IAAI,MAAM,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,UAAU;YAAE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;;YAC7E,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;IACrD,CAAC,CAAC;IACF,MAAM,IAAI,GAAG,CAAC,CAAS,EAAW,EAAE;QAClC,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY;YAAE,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7E,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ;YAAE,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACnE,OAAO,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACvC,CAAC,CAAC;IACF,MAAM,IAAI,GAAG,CAAC,CAAS,EAAW,EAAE;QAClC,MAAM,MAAM,GACV,CAAC,CAAC,IAAI,KAAK,KAAK;YAChB,CAAC,CAAC,IAAI,KAAK,OAAO;YAClB,CAAC,CAAC,IAAI,KAAK,SAAS;YACpB,CAAC,CAAC,IAAI,KAAK,OAAO;YAClB,CAAC,CAAC,IAAI,KAAK,UAAU;YACrB,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC;QACtB,IAAI,MAAM;YAAE,MAAM,EAAE,CAAC;QACrB,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ;YAAE,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QACzE,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO;YAAE,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACvE,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,YAAY;YAAE,KAAK,CAAC,CAAC,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QACzE,MAAM,SAAS,GAAG,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAChD,IAAI,MAAM;YAAE,MAAM,EAAE,CAAC;QACrB,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC;IACF,oEAAoE;IACpE,0DAA0D;IAC1D,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IACpC,MAAM,eAAe,GAAG,CAAC,CAAS,EAAW,EAAE;QAC7C,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ;YAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAC7E,OAAO,cAAc,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC,EAAE,EAAE;YAC9C,MAAM,EAAE,CAAC;YACT,IAAI,CAAC,CAAC,CAAC,CAAC;YACR,MAAM,EAAE,CAAC;YACT,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IACF,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,KAAK,MAAM,EAAE,IAAI,SAAS;QAAE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC5C,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACtB,MAAM,MAAM,GAAG,CAAC,EAAU,EAAW,EAAE;QACrC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC7B,OAAO,KAAK,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClG,CAAC,CAAC;IACF,MAAM,KAAK,GAAG,CAAC,CAAS,EAAuB,EAAE;QAC/C,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACjF,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;QACxC,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;YAAE,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC;QACpF,uEAAuE;QACvE,6BAA6B;QAC7B,IACE,CAAC,CAAC,IAAI,KAAK,cAAc;YACzB,CAAC,CAAC,MAAM,KAAK,QAAQ;YACrB,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;YACnB,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK;YACrB,CAAC,CAAC,QAAQ,CAAC,IAAI,KAAK,QAAQ;YAC5B,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ;YACjC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;YAE1B,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,gBAAgB,EAAE,CAAC;QAC3C,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IACF,qEAAqE;IACrE,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAuB,EAAE;QACrD,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,CAAC,CAAS,EAAQ,EAAE;YAClC,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ;gBAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;iBACvC,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;gBAC/C,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBAChB,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACnB,CAAC;;gBAAM,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC;QACd,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC1C,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;YAC1B,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK;gBAAE,SAAS;YAC/B,oEAAoE;YACpE,MAAM,KAAK,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,CAAC,EAAE,KAAK,IAAI,EACzC,KAAK,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC;YACxC,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EACrD,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACnC,IAAI,OAAO,EAAE,IAAI,KAAK,QAAQ;gBAAE,SAAS;YACzC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;YAC3B,IAAI,CAAC,KAAK;gBAAE,SAAS;YACrB,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;YACpE,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC9C,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;QACrF,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;IACF,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAC1B,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EACvB,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACvB,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,KAAK,SAAS;YACrF,SAAS;QACX,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC3E,IAAI,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC;YAC9D,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;2EAM2E;AAC3E,SAAS,YAAY,CACnB,IAAuB,EACvB,EAAU,EACV,KAAa,EACb,QAAuD;IAEvD,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,MAAM,UAAU,GAAG,CAAC,CAAkB,EAAE,UAAmB,EAAU,EAAE;QACrE,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,MAAM,IAAI,GAAG,CAAC,CAAS,EAAW,EAAE;YAClC,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,CAAC,OAAO,KAAK,EAAE;gBAAE,KAAK,IAAI,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACtF,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,OAAO,KAAK,EAAE;gBAAE,KAAK,IAAI,CAAC,CAAC;YACxD,OAAO,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACvC,CAAC,CAAC;QACF,MAAM,IAAI,GAAG,CAAC,CAAS,EAAW,EAAE;YAClC,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,OAAO,KAAK,EAAE;gBAAE,KAAK,IAAI,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAClF,OAAO,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACvC,CAAC,CAAC;QACF,IAAI,UAAU;YAAE,IAAI,CAAC,CAAW,CAAC,CAAC;;YAC7B,IAAI,CAAC,CAAW,CAAC,CAAC;QACvB,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IACF,MAAM,IAAI,GAAG,CAAC,KAAwB,EAAE,KAAa,EAAU,EAAE;QAC/D,IAAI,KAAK,GAAG,KAAK,CAAC;QAClB,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,IAAI,KAAK,KAAK,CAAC,QAAQ;gBAAE,OAAO,KAAK,CAAC;YACtC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;gBACpB,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBACvC,KAAK,IAAI,KAAK,CAAC;gBACf,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBACnC,MAAM,GAAG,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC/D,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;gBAC5E,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;gBACrD,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAChC,CAAC;iBAAM,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;gBACnD,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC9B,CAAC;iBAAM,CAAC;gBACN,KAAK,IAAI,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;gBAC9B,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBACnC,IACE,CAAC,CAAC,IAAI,KAAK,QAAQ;oBACnB,CAAC,CAAC,IAAI,KAAK,OAAO;oBAClB,CAAC,CAAC,IAAI,KAAK,SAAS;oBACpB,CAAC,CAAC,IAAI,KAAK,OAAO;oBAClB,CAAC,CAAC,IAAI,KAAK,UAAU;oBAErB,KAAK,GAAG,CAAC,QAAQ,CAAC;YACtB,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IACF,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAClB,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;0EAC0E;AAC1E,MAAM,UAAU,uBAAuB,CAAC,IAAuB;IAC7D,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;QACxB,IACE,IAAI,CAAC,IAAI,KAAK,QAAQ;YACtB,IAAI,CAAC,IAAI,KAAK,OAAO;YACrB,IAAI,CAAC,IAAI,KAAK,SAAS;YACvB,IAAI,CAAC,IAAI,KAAK,OAAO;YACrB,IAAI,CAAC,IAAI,KAAK,UAAU;YAExB,OAAO,KAAK,CAAC;QACf,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC;YACtF,OAAO,KAAK,CAAC;QACf,IACE,IAAI,CAAC,IAAI,KAAK,IAAI;YAClB,IAAI,CAAC,KAAK;YACV,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC;YACnC,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC;YAEpC,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -1,16 +1,12 @@
1
1
  import { everyExprChild, everyStmtChild, everyStmtList } from "./traverse.js";
2
2
  import { byteNumberAccess, byteNumberRange } from "./byte-numbers.js";
3
- import { boundedIntegerLoopFacts, guardedLoopCounterFacts, integerPathFallsThrough, } from "./integer-loop-facts.js";
3
+ import { boundedIntegerLoopFacts, guardedLoopCounterFacts, integerPathFallsThrough, STRING_MAX_UNITS, } from "./integer-loop-facts.js";
4
4
  const SIGNED = { min: -2147483648, max: 2147483647 };
5
5
  const UNSIGNED = { min: 0, max: 4294967295 };
6
6
  /** Int32 and uint32 at once: the bound under which `%` (modeled only for
7
7
  * non-negative dividends) can close a loop-carried local. */
8
8
  const NON_NEGATIVE = { min: 0, max: 2147483647 };
9
9
  const EXACT_LIMIT = 2 ** 53;
10
- /** The most UTF-16 code units a runtime string holds: SCR_STR_MAX_CAP
11
- * (scr_runtime.h) caps a string's UTF-8 bytes, and a UTF-16 length never
12
- * exceeds the UTF-8 byte length. */
13
- const STRING_MAX_UNITS = 0x7fffffff;
14
10
  function union(left, right) {
15
11
  return { min: Math.min(left.min, right.min), max: Math.max(left.max, right.max) };
16
12
  }
@@ -1 +1 @@
1
- {"version":3,"file":"integer-ranges.js","sourceRoot":"","sources":["../../src/ir/integer-ranges.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"integer-ranges.js","sourceRoot":"","sources":["../../src/ir/integer-ranges.ts"],"names":[],"mappings":"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"}
@@ -620,6 +620,66 @@ test("a while condition bounds a counter the loop only increments", () => {
620
620
  for (const [label, options] of open)
621
621
  expect(run(options).after, label).toBeNull();
622
622
  });
623
+ test("a while condition on a string's length bounds a counter, and guarded increments stay below it", () => {
624
+ // while (pos < text.length) { observe(pos); pos++; if (pos < text.length && unknown === 13) pos++; }
625
+ const text = { loc, kind: "varRef", localId: "text", type: STRING };
626
+ const length = {
627
+ loc,
628
+ kind: "strIntrinsic",
629
+ method: "length",
630
+ receiver: text,
631
+ args: [],
632
+ type: F64,
633
+ };
634
+ const set = (localId, value) => ({ loc, kind: "assign", localId, value });
635
+ const bump = {
636
+ loc,
637
+ kind: "exprStmt",
638
+ expr: { loc, kind: "incDec", op: "+", prefix: false, localId: "pos", type: F64 },
639
+ };
640
+ const and = (left, right) => ({
641
+ loc,
642
+ kind: "logical",
643
+ op: "&&",
644
+ left,
645
+ right,
646
+ type: BOOL,
647
+ });
648
+ const run = (body) => {
649
+ const inside = ref("pos"), after = ref("pos");
650
+ const f = fn([
651
+ set("pos", num(0)),
652
+ { loc, kind: "while", cond: condition("<", ref("pos"), length), body: body(inside) },
653
+ observe(after),
654
+ ]);
655
+ f.locals.push({ id: "pos", name: "pos", type: F64, mutable: true }, { id: "text", name: "text", type: STRING, mutable: true });
656
+ const ranges = analyzeIntegerRanges(f);
657
+ return { inside: ranges.get(inside), after: ranges.get(after) };
658
+ };
659
+ const guarded = (cond) => ({ loc, kind: "if", cond, then: [bump], else_: null });
660
+ const crlf = guarded(and(condition("<", ref("pos"), length), condition("===", ref("unknown"), num(13))));
661
+ expect(run((inside) => [observe(inside), bump, crlf])).toEqual({
662
+ inside: { min: 0, max: 2147483646 },
663
+ after: { min: 0, max: 2147483647 },
664
+ });
665
+ // An exit before the second increment, and an else branch, keep the bound.
666
+ const exit = {
667
+ loc,
668
+ kind: "if",
669
+ cond: condition("===", ref("unknown"), num(0)),
670
+ then: [{ loc, kind: "continue" }],
671
+ else_: [crlf],
672
+ };
673
+ expect(run((inside) => [observe(inside), bump, exit]).after).toEqual({ min: 0, max: 2147483647 });
674
+ // Without the guard both increments count; a string the loop rebinds bounds nothing.
675
+ const unguarded = guarded(condition("===", ref("unknown"), num(13)));
676
+ expect(run((inside) => [observe(inside), bump, unguarded]).after).toEqual({
677
+ min: 0,
678
+ max: 2147483648,
679
+ });
680
+ const rebound = set("text", { loc, kind: "strLit", value: "abc", type: STRING });
681
+ expect(run((inside) => [observe(inside), bump, rebound]).after).toBeNull();
682
+ });
623
683
  test("whole-program slot facts seed parameters, field reads and call results", () => {
624
684
  const field = {
625
685
  loc,