@aperturesyndicate/synx-format 3.6.0 → 3.6.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/parser.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  /**
3
- * SYNX Parser — @aperturesyndicate/synx
3
+ * SYNX Parser — @aperturesyndicate/synx-format
4
4
  *
5
5
  * Converts raw .synx text into a structured object tree
6
6
  * with hidden metadata (__synx) for the Engine to resolve.
@@ -10,40 +10,75 @@
10
10
  */
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.parseData = parseData;
13
+ // ─── Resource limits (per SYNX 3.6 §3) ────────────────────
14
+ /** Maximum UTF-8 bytes accepted per parse() — text is truncated to a valid UTF-16 prefix not exceeding this length. */
15
+ const MAX_SYNX_INPUT_BYTES = 16 * 1024 * 1024; // 16 MiB
16
+ /** Maximum line count considered. */
17
+ const MAX_LINE_STARTS = 2000000;
18
+ /** Maximum nesting depth for the parser stack. */
19
+ const MAX_PARSE_NESTING_DEPTH = 128;
20
+ /** Maximum accumulated bytes per multiline `key |` block body. */
21
+ const MAX_MULTILINE_BLOCK_BYTES = 1024 * 1024; // 1 MiB
22
+ /** Maximum items per single list. */
23
+ const MAX_LIST_ITEMS = 1048576;
24
+ /** Maximum `!include` directives per file. */
25
+ const MAX_INCLUDE_DIRECTIVES = 4096;
26
+ /** Maximum comma-separated parts inside a single `enum:` constraint. */
27
+ const MAX_CONSTRAINT_ENUM_PARTS = 4096;
28
+ /** Maximum `:a:b:c` marker chain segments on one line. */
29
+ const MAX_MARKER_CHAIN_SEGMENTS = 512;
13
30
  // ─── Helpers ──────────────────────────────────────────────
14
31
  /** Cast a raw string value to a JS primitive */
15
32
  function castType(val) {
33
+ const len = val.length;
34
+ // Quoted strings preserve literal value (bypass auto-casting).
35
+ // Per SYNX 3.6 §8.3.1: "<inner>" or '<inner>' with length >= 2 → string of inner text.
36
+ if (len >= 2) {
37
+ const c0q = val.charCodeAt(0);
38
+ const cN = val.charCodeAt(len - 1);
39
+ if ((c0q === 34 && cN === 34) || (c0q === 39 && cN === 39)) {
40
+ return val.substring(1, len - 1);
41
+ }
42
+ }
16
43
  if (val === 'true')
17
44
  return true;
18
45
  if (val === 'false')
19
46
  return false;
20
47
  if (val === 'null')
21
48
  return null;
22
- const len = val.length;
23
49
  if (len === 0)
24
50
  return val;
25
51
  const c0 = val.charCodeAt(0);
26
52
  // Explicit cast: (int)007, (string)90210, (float)3.0, (bool)true, (random), (random:bool)
53
+ // Only treat the leading `(...)` as a type hint when it looks like an
54
+ // identifier-shaped token (`[A-Za-z_][A-Za-z0-9_:]*`). Anything else (e.g.
55
+ // a value that happens to start with a parenthesised arithmetic expression)
56
+ // is left untouched as a plain string.
27
57
  if (c0 === 40 && len > 2) { // '('
28
58
  const closeIdx = val.indexOf(')');
29
59
  if (closeIdx > 1) {
30
60
  const hint = val.substring(1, closeIdx);
31
- const raw = val.substring(closeIdx + 1);
32
- switch (hint) {
33
- case 'int': {
34
- const n = parseInt(raw, 10);
35
- return isNaN(n) ? 0 : n;
36
- }
37
- case 'float': {
38
- const n = parseFloat(raw);
39
- return isNaN(n) ? 0 : n;
61
+ if (/^[A-Za-z_][A-Za-z0-9_:]*$/.test(hint)) {
62
+ const raw = val.substring(closeIdx + 1);
63
+ switch (hint) {
64
+ case 'int': {
65
+ const n = parseInt(raw, 10);
66
+ return isNaN(n) ? 0 : n;
67
+ }
68
+ case 'float': {
69
+ const n = parseFloat(raw);
70
+ return isNaN(n) ? 0 : n;
71
+ }
72
+ case 'bool': return raw.trim() === 'true';
73
+ case 'string': return raw;
74
+ case 'random': return Math.floor(Math.random() * 2147483647);
75
+ case 'random:int': return Math.floor(Math.random() * 2147483647);
76
+ case 'random:float': return Math.random();
77
+ case 'random:bool': return Math.random() < 0.5;
78
+ // Unknown hint — strip the (hint) wrapper and re-cast the bare value
79
+ // (matches the Rust `cast_typed` fallback to `cast`).
80
+ default: return castType(raw);
40
81
  }
41
- case 'bool': return raw.trim() === 'true';
42
- case 'string': return raw;
43
- case 'random': return Math.floor(Math.random() * 2147483647);
44
- case 'random:int': return Math.floor(Math.random() * 2147483647);
45
- case 'random:float': return Math.random();
46
- case 'random:bool': return Math.random() < 0.5;
47
82
  }
48
83
  }
49
84
  }
@@ -133,7 +168,7 @@ function parseConstraints(raw) {
133
168
  constraints.pattern = value;
134
169
  break;
135
170
  case 'enum':
136
- constraints.enum = value.split('|');
171
+ constraints.enum = value.split('|').slice(0, MAX_CONSTRAINT_ENUM_PARTS);
137
172
  break;
138
173
  }
139
174
  }
@@ -169,17 +204,117 @@ function saveMeta(obj, key, markers, args, constraints, mode, typeHint) {
169
204
  meta.typeHint = typeHint;
170
205
  metaMap[key] = meta;
171
206
  }
172
- // ─── Fallback regex for complex lines (type hints, constraints, markers) ──
173
- const LINE_REGEX = /^([^\s\[:\-#/(][^\s\[:(]*)(?:\(([\w:]+)\))?(?:\[([^\]]*)\])?(?::([^\s]+))?\s*(.*)$/;
207
+ /**
208
+ * Parse a key line manually, supporting balanced brackets in [constraints].
209
+ * Returns null if the line is not a valid key line.
210
+ */
211
+ function parseKeyLine(trimmed) {
212
+ const len = trimmed.length;
213
+ if (len === 0)
214
+ return null;
215
+ const first = trimmed.charCodeAt(0);
216
+ // First char cannot be [, :, -, #, /, ( per §7
217
+ if (first === 91 || first === 58 || first === 45 || first === 35 || first === 47 || first === 40) {
218
+ return null;
219
+ }
220
+ // Extract key — stop at space, tab, [, :, (
221
+ let pos = 0;
222
+ while (pos < len) {
223
+ const ch = trimmed.charCodeAt(pos);
224
+ if (ch === 32 || ch === 9 || ch === 91 || ch === 58 || ch === 40)
225
+ break;
226
+ pos++;
227
+ }
228
+ if (pos === 0)
229
+ return null;
230
+ const key = trimmed.substring(0, pos);
231
+ let typeHint;
232
+ let constraintStr;
233
+ let markerChain;
234
+ // Optional (type)
235
+ if (pos < len && trimmed.charCodeAt(pos) === 40) { // '('
236
+ const closeIdx = trimmed.indexOf(')', pos + 1);
237
+ if (closeIdx !== -1) {
238
+ typeHint = trimmed.substring(pos + 1, closeIdx);
239
+ pos = closeIdx + 1;
240
+ }
241
+ else {
242
+ pos++;
243
+ }
244
+ }
245
+ // Optional [constraints] — balanced bracket scan to support patterns like ^[A-Z]{2}$
246
+ if (pos < len && trimmed.charCodeAt(pos) === 91) { // '['
247
+ pos++;
248
+ const cStart = pos;
249
+ let depth = 1;
250
+ while (pos < len && depth > 0) {
251
+ const ch = trimmed.charCodeAt(pos);
252
+ if (ch === 91)
253
+ depth++;
254
+ else if (ch === 93)
255
+ depth--;
256
+ if (depth > 0)
257
+ pos++;
258
+ }
259
+ if (depth === 0) {
260
+ constraintStr = trimmed.substring(cStart, pos);
261
+ pos++; // skip closing ']'
262
+ }
263
+ else {
264
+ // Unbalanced — fallback to first ']' if any
265
+ const fb = trimmed.indexOf(']', cStart);
266
+ if (fb !== -1) {
267
+ constraintStr = trimmed.substring(cStart, fb);
268
+ pos = fb + 1;
269
+ }
270
+ else {
271
+ constraintStr = trimmed.substring(cStart);
272
+ pos = len;
273
+ }
274
+ }
275
+ }
276
+ // Optional :markers
277
+ if (pos < len && trimmed.charCodeAt(pos) === 58) { // ':'
278
+ const mStart = pos + 1;
279
+ let mEnd = mStart;
280
+ while (mEnd < len) {
281
+ const ch = trimmed.charCodeAt(mEnd);
282
+ if (ch === 32 || ch === 9)
283
+ break;
284
+ mEnd++;
285
+ }
286
+ markerChain = trimmed.substring(mStart, mEnd);
287
+ pos = mEnd;
288
+ }
289
+ // Skip whitespace, then take rest as value
290
+ while (pos < len) {
291
+ const ch = trimmed.charCodeAt(pos);
292
+ if (ch !== 32 && ch !== 9)
293
+ break;
294
+ pos++;
295
+ }
296
+ const rawValue = pos < len ? trimmed.substring(pos) : '';
297
+ return { key, typeHint, constraintStr, markerChain, rawValue };
298
+ }
174
299
  // ─── Parser ───────────────────────────────────────────────
175
300
  function parseData(text) {
176
- const lines = text.split('\n');
301
+ // Truncate input to MAX_SYNX_INPUT_BYTES (UTF-16 code-unit boundary).
302
+ if (text.length > MAX_SYNX_INPUT_BYTES) {
303
+ text = text.substring(0, MAX_SYNX_INPUT_BYTES);
304
+ }
305
+ let lines = text.split('\n');
306
+ if (lines.length > MAX_LINE_STARTS) {
307
+ lines = lines.slice(0, MAX_LINE_STARTS);
308
+ }
177
309
  const root = {};
178
310
  const stack = [
179
311
  { indent: -1, obj: root },
180
312
  ];
181
313
  let mode = 'static';
182
314
  let locked = false;
315
+ let llm = false;
316
+ let tool = false;
317
+ let schema = false;
183
318
  const includes = [];
184
319
  let currentBlock = null;
185
320
  let currentList = null;
@@ -232,7 +367,7 @@ function parseData(text) {
232
367
  }
233
368
  const trimmed = rawLine.substring(indent, trimEndPos);
234
369
  const trimmedLen = trimmed.length;
235
- // ── Mode declaration: !active / !lock / !include ──
370
+ // ── Directives: !active / !lock / !llm / !tool / !schema / !include ──
236
371
  if (fc === 33) {
237
372
  if (trimmed === '!active') {
238
373
  mode = 'active';
@@ -242,19 +377,38 @@ function parseData(text) {
242
377
  locked = true;
243
378
  continue;
244
379
  }
380
+ if (trimmed === '!llm') {
381
+ llm = true;
382
+ continue;
383
+ }
384
+ if (trimmed === '!tool') {
385
+ tool = true;
386
+ continue;
387
+ }
388
+ if (trimmed === '!schema') {
389
+ schema = true;
390
+ continue;
391
+ }
245
392
  if (trimmed.startsWith('!include ')) {
246
- const parts = trimmed.substring(9).trim().split(/\s+/);
247
- const inclPath = parts[0];
248
- const alias = parts[1] || inclPath.replace(/^.*[\/\\]/, '').replace(/\.synx$/i, '');
249
- includes.push({ path: inclPath, alias });
393
+ if (includes.length < MAX_INCLUDE_DIRECTIVES) {
394
+ const parts = trimmed.substring(9).trim().split(/\s+/);
395
+ const inclPath = parts[0];
396
+ const alias = parts[1] || inclPath.replace(/^.*[\/\\]/, '').replace(/\.synx$/i, '');
397
+ includes.push({ path: inclPath, alias });
398
+ }
250
399
  continue;
251
400
  }
252
401
  }
253
402
  // ── Continue multiline block ──
254
403
  if (currentBlock && indent > currentBlock.indent) {
255
- const line = trimmed;
256
- currentBlock.obj[currentBlock.key] +=
257
- (currentBlock.obj[currentBlock.key] ? '\n' : '') + line;
404
+ const existing = currentBlock.obj[currentBlock.key];
405
+ if (existing.length < MAX_MULTILINE_BLOCK_BYTES) {
406
+ const line = trimmed;
407
+ const room = MAX_MULTILINE_BLOCK_BYTES - existing.length;
408
+ const sep = existing ? '\n' : '';
409
+ const append = sep + line;
410
+ currentBlock.obj[currentBlock.key] = existing + append.substring(0, room);
411
+ }
258
412
  continue;
259
413
  }
260
414
  else {
@@ -263,6 +417,9 @@ function parseData(text) {
263
417
  // ── List items: '- ' ──
264
418
  if (fc === 45 && trimmedLen > 1 && trimmed.charCodeAt(1) === 32) {
265
419
  if (currentList && indent > currentList.indent) {
420
+ if (currentList.arr.length >= MAX_LIST_ITEMS) {
421
+ continue;
422
+ }
266
423
  const val = stripInlineComment(trimmed.substring(2).trim());
267
424
  // Check if this list item has sub-keys (peek next line)
268
425
  let nextNonEmpty = i + 1;
@@ -285,13 +442,12 @@ function parseData(text) {
285
442
  nfc !== 45 && nfc !== 35 &&
286
443
  !(nfc === 47 && nextIndent + 1 < nextLine.length && nextLine.charCodeAt(nextIndent + 1) === 47)) {
287
444
  const itemObj = {};
288
- const itemMatch = val.match(LINE_REGEX);
289
- if (itemMatch) {
290
- const [, iKey, iTypeHint, , , iVal] = itemMatch;
291
- let iValue = iVal || '';
292
- if (iTypeHint)
293
- iValue = `(${iTypeHint})${iValue}`;
294
- itemObj[iKey] = iValue ? castType(stripInlineComment(iValue)) : {};
445
+ const parsed = parseKeyLine(val);
446
+ if (parsed) {
447
+ let iValue = parsed.rawValue;
448
+ if (parsed.typeHint)
449
+ iValue = `(${parsed.typeHint})${iValue}`;
450
+ itemObj[parsed.key] = iValue ? castType(stripInlineComment(iValue)) : {};
295
451
  }
296
452
  else {
297
453
  itemObj['_value'] = castType(val);
@@ -304,7 +460,7 @@ function parseData(text) {
304
460
  currentList.arr.push(castType(val));
305
461
  continue;
306
462
  }
307
- // Not in list context — skip (LINE_REGEX wouldn't match '- ' anyway)
463
+ // Not in list context — skip (no key-line starting with '- ' is valid)
308
464
  continue;
309
465
  }
310
466
  // Close list if needed (non-list-item line at <= list indent)
@@ -312,12 +468,11 @@ function parseData(text) {
312
468
  currentList = null;
313
469
  }
314
470
  // ── Validate first char can start a key ──
315
- // LINE_REGEX first char: [^\s\[:\-#/(] we already filtered #, //, -
471
+ // First char cannot be [ ( : / (already filtered #, //, -)
316
472
  if (fc === 91 || fc === 40 || fc === 58 || fc === 47)
317
473
  continue; // [ ( : /
318
474
  // ── Parse key line ──
319
- // FAST PATH: scan key for special chars ( [ :
320
- // If none found, skip LINE_REGEX entirely
475
+ // Manual scanner with balanced [] support for patterns like ^[A-Z]{2}$.
321
476
  let key;
322
477
  let typeHint;
323
478
  let constraintStr;
@@ -355,21 +510,24 @@ function parseData(text) {
355
510
  markerChain = undefined;
356
511
  }
357
512
  else {
358
- // ── Slow path: regex for lines with ( [ : ──
359
- const match = trimmed.match(LINE_REGEX);
360
- if (!match)
513
+ // ── Slow path: manual scanner for lines with ( [ : ──
514
+ const parsed = parseKeyLine(trimmed);
515
+ if (!parsed)
361
516
  continue;
362
- [, key, typeHint, constraintStr, markerChain, rawValue] = match;
363
- rawValue = rawValue ? stripInlineComment(rawValue.trim()) : '';
517
+ key = parsed.key;
518
+ typeHint = parsed.typeHint;
519
+ constraintStr = parsed.constraintStr;
520
+ markerChain = parsed.markerChain;
521
+ rawValue = parsed.rawValue ? stripInlineComment(parsed.rawValue) : '';
364
522
  }
365
523
  // Apply explicit type cast
366
524
  if (typeHint)
367
525
  rawValue = `(${typeHint})${rawValue}`;
368
- // Parse markers chain
526
+ // Parse markers chain (with segment cap)
369
527
  let markers = [];
370
528
  let markerArgs = [];
371
529
  if (markerChain) {
372
- markers = markerChain.split(':');
530
+ markers = markerChain.split(':').slice(0, MAX_MARKER_CHAIN_SEGMENTS);
373
531
  }
374
532
  // For :random — the rawValue may contain weight percentages
375
533
  if (markers.length > 0 && markers.includes('random') && rawValue) {
@@ -379,6 +537,12 @@ function parseData(text) {
379
537
  rawValue = '';
380
538
  }
381
539
  }
540
+ // For :inherit — a non-empty value is the parent-key name, not a scalar value.
541
+ // Promote it into markerArgs and clear rawValue so the line opens a group.
542
+ if (markers.length > 0 && markers.includes('inherit') && rawValue) {
543
+ markerArgs = [rawValue.trim()];
544
+ rawValue = '';
545
+ }
382
546
  const constraints = constraintStr ? parseConstraints(constraintStr) : undefined;
383
547
  // ── Pop stack to correct parent ──
384
548
  while (stack.length > 1 && stack[stack.length - 1].indent >= indent) {
@@ -406,7 +570,10 @@ function parseData(text) {
406
570
  else if (!rawValue) {
407
571
  // No value → nested object (group) OR plain list
408
572
  parent[key] = {};
409
- stack.push({ indent, obj: parent[key] });
573
+ // Cap nesting depth: still insert the object but don't push deeper.
574
+ if (stack.length < MAX_PARSE_NESTING_DEPTH) {
575
+ stack.push({ indent, obj: parent[key] });
576
+ }
410
577
  // Peek ahead: if next meaningful line starts with -, it's a list
411
578
  let peekIdx = i + 1;
412
579
  while (peekIdx < lines.length) {
@@ -437,6 +604,14 @@ function parseData(text) {
437
604
  saveMeta(parent, key, markers, markerArgs, constraints, mode, typeHint);
438
605
  }
439
606
  }
440
- return { root, mode, locked, includes: includes.length > 0 ? includes : undefined };
607
+ return {
608
+ root,
609
+ mode,
610
+ locked,
611
+ ...(llm ? { llm: true } : {}),
612
+ ...(tool ? { tool: true } : {}),
613
+ ...(schema ? { schema: true } : {}),
614
+ includes: includes.length > 0 ? includes : undefined,
615
+ };
441
616
  }
442
617
  //# sourceMappingURL=parser.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;AAgKH,8BAuQC;AAzZD,6DAA6D;AAE7D,gDAAgD;AAChD,SAAS,QAAQ,CAAC,GAAW;IAC3B,IAAI,GAAG,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IAChC,IAAI,GAAG,KAAK,OAAO;QAAE,OAAO,KAAK,CAAC;IAClC,IAAI,GAAG,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IAEhC,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC;IACvB,IAAI,GAAG,KAAK,CAAC;QAAE,OAAO,GAAG,CAAC;IAE1B,MAAM,EAAE,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAE7B,0FAA0F;IAC1F,IAAI,EAAE,KAAK,EAAE,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM;QAChC,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;YACjB,MAAM,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;YACxC,MAAM,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;YACxC,QAAQ,IAAI,EAAE,CAAC;gBACb,KAAK,KAAK,CAAC,CAAC,CAAC;oBAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;oBAAC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAAC,CAAC;gBACrE,KAAK,OAAO,CAAC,CAAC,CAAC;oBAAC,MAAM,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;oBAAC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAAC,CAAC;gBACrE,KAAK,MAAM,CAAC,CAAC,OAAO,GAAG,CAAC,IAAI,EAAE,KAAK,MAAM,CAAC;gBAC1C,KAAK,QAAQ,CAAC,CAAC,OAAO,GAAG,CAAC;gBAC1B,KAAK,QAAQ,CAAC,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC;gBAC7D,KAAK,YAAY,CAAC,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC;gBACjE,KAAK,cAAc,CAAC,CAAC,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC1C,KAAK,aAAa,CAAC,CAAC,OAAO,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC;YACjD,CAAC;QACH,CAAC;IACH,CAAC;IAED,gDAAgD;IAChD,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM;QACrB,IAAI,GAAG,KAAK,CAAC;YAAE,OAAO,GAAG,CAAC;QAC1B,UAAU,GAAG,CAAC,CAAC;QACf,EAAE,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC;IACD,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,UAAU;QACpC,IAAI,UAAU,GAAG,IAAI,CAAC;QACtB,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC;QAChB,KAAK,IAAI,CAAC,GAAG,UAAU,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1C,MAAM,EAAE,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM;gBACrB,IAAI,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;oBAAC,UAAU,GAAG,KAAK,CAAC;oBAAC,MAAM;gBAAC,CAAC;gBACjD,MAAM,GAAG,CAAC,CAAC;YACb,CAAC;iBAAM,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;gBAC9B,UAAU,GAAG,KAAK,CAAC;gBACnB,MAAM;YACR,CAAC;QACH,CAAC;QACD,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,MAAM,KAAK,CAAC,CAAC;gBAAE,OAAO,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAC5C,IAAI,MAAM,GAAG,UAAU,IAAI,MAAM,GAAG,GAAG,GAAG,CAAC;gBAAE,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,+CAA+C;AAC/C,SAAS,kBAAkB,CAAC,GAAW;IACrC,uDAAuD;IACvD,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAAE,OAAO,GAAG,CAAC;IAExC,IAAI,MAAM,GAAG,GAAG,CAAC;IACjB,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACvC,IAAI,QAAQ,KAAK,CAAC,CAAC;QAAE,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC5D,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,OAAO,KAAK,CAAC,CAAC;QAAE,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAC1D,OAAO,MAAM,CAAC,OAAO,EAAE,CAAC;AAC1B,CAAC;AAED,uEAAuE;AACvE,SAAS,gBAAgB,CAAC,GAAW;IACnC,MAAM,WAAW,GAAoB,EAAE,CAAC;IACxC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,OAAO,KAAK,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;QAC1B,IAAI,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAClC,IAAI,GAAG,KAAK,CAAC,CAAC;YAAE,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC;QACjC,MAAM,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QAC9C,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC;QAChB,IAAI,CAAC,IAAI;YAAE,SAAS;QAEpB,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;YACxB,WAAW,CAAC,QAAQ,GAAG,IAAI,CAAC;QAC9B,CAAC;aAAM,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;YAC/B,WAAW,CAAC,QAAQ,GAAG,IAAI,CAAC;QAC9B,CAAC;aAAM,CAAC;YACN,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACnC,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;gBACpB,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAClD,QAAQ,GAAG,EAAE,CAAC;oBACZ,KAAK,KAAK;wBAAE,WAAW,CAAC,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;wBAAC,MAAM;oBACnD,KAAK,KAAK;wBAAE,WAAW,CAAC,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;wBAAC,MAAM;oBACnD,KAAK,MAAM;wBAAE,WAAW,CAAC,IAAI,GAAG,KAAK,CAAC;wBAAC,MAAM;oBAC7C,KAAK,SAAS;wBAAE,WAAW,CAAC,OAAO,GAAG,KAAK,CAAC;wBAAC,MAAM;oBACnD,KAAK,MAAM;wBAAE,WAAW,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;wBAAC,MAAM;gBAC1D,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,iDAAiD;AACjD,SAAS,QAAQ,CACf,GAAe,EACf,GAAW,EACX,OAAiB,EACjB,IAAc,EACd,WAAwC,EACxC,IAAc,EACd,QAAiB;IAEjB,IAAI,IAAI,KAAK,QAAQ;QAAE,OAAO;IAC9B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,QAAQ;QAAE,OAAO;IAE9D,IAAI,OAAoB,CAAC;IACzB,IAAK,GAAW,CAAC,MAAM,EAAE,CAAC;QACxB,OAAO,GAAI,GAAW,CAAC,MAAM,CAAC;IAChC,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,QAAQ,EAAE;YACnC,KAAK,EAAE,OAAO;YACd,UAAU,EAAE,KAAK;YACjB,QAAQ,EAAE,IAAI;YACd,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,IAAI,GAAa,EAAE,OAAO,EAAE,CAAC;IACnC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;QAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACtC,IAAI,WAAW;QAAE,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IAChD,IAAI,QAAQ;QAAE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IACvC,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;AACtB,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,GAAG,oFAAoF,CAAC;AAExG,6DAA6D;AAE7D,SAAgB,SAAS,CAAC,IAAY;IACpC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,IAAI,GAAe,EAAE,CAAC;IAC5B,MAAM,KAAK,GAA2D;QACpE,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE;KAC1B,CAAC;IAEF,IAAI,IAAI,GAAa,QAAQ,CAAC;IAC9B,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,MAAM,QAAQ,GAAkB,EAAE,CAAC;IACnC,IAAI,YAAY,GAA4D,IAAI,CAAC;IACjF,IAAI,WAAW,GAA8C,IAAI,CAAC;IAClE,IAAI,cAAc,GAAG,KAAK,CAAC;IAE3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACzB,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAE9B,6CAA6C;QAC7C,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,OAAO,MAAM,GAAG,MAAM,EAAE,CAAC;YACvB,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YACtC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE;gBAAE,MAAM,CAAC,iBAAiB;YAChE,MAAM,EAAE,CAAC;QACX,CAAC;QAED,mBAAmB;QACnB,IAAI,MAAM,KAAK,MAAM;YAAE,SAAS;QAEhC,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,4BAA4B;QAEnE,kCAAkC;QAClC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACd,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC;YACjD,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;gBACnB,cAAc,GAAG,CAAC,cAAc,CAAC;gBACjC,SAAS;YACX,CAAC;QACH,CAAC;QACD,IAAI,cAAc;YAAE,SAAS;QAE7B,0BAA0B;QAC1B,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI;YACnB,wCAAwC;YACxC,IAAI,MAAM,GAAG,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI;gBACtE,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;oBACxD,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;oBAC9D,IAAI,GAAG,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;gBACrD,CAAC;YACH,CAAC;YACD,SAAS;QACX,CAAC;QACD,IAAI,EAAE,KAAK,EAAE,IAAI,MAAM,GAAG,CAAC,GAAG,MAAM,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE;YAAE,SAAS,CAAC,KAAK;QAE9F,uDAAuD;QACvD,IAAI,UAAU,GAAG,MAAM,CAAC;QACxB,OAAO,UAAU,GAAG,MAAM,EAAE,CAAC;YAC3B,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;YAC9C,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE;gBAAE,MAAM;YAC3D,UAAU,EAAE,CAAC;QACf,CAAC;QACD,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QACtD,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;QAElC,qDAAqD;QACrD,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACd,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAAC,IAAI,GAAG,QAAQ,CAAC;gBAAC,SAAS;YAAC,CAAC;YACzD,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;gBAAC,MAAM,GAAG,IAAI,CAAC;gBAAC,SAAS;YAAC,CAAC;YACrD,IAAI,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;gBACpC,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACvD,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC1B,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;gBACpF,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;gBACzC,SAAS;YACX,CAAC;QACH,CAAC;QAED,iCAAiC;QACjC,IAAI,YAAY,IAAI,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC;YACjD,MAAM,IAAI,GAAG,OAAO,CAAC;YACrB,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC;gBAChC,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;YAC1D,SAAS;QACX,CAAC;aAAM,CAAC;YACN,YAAY,GAAG,IAAI,CAAC;QACtB,CAAC;QAED,yBAAyB;QACzB,IAAI,EAAE,KAAK,EAAE,IAAI,UAAU,GAAG,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;YAChE,IAAI,WAAW,IAAI,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC;gBAC/C,MAAM,GAAG,GAAG,kBAAkB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;gBAE5D,wDAAwD;gBACxD,IAAI,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC;gBACzB,OAAO,YAAY,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;oBACnC,MAAM,EAAE,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC;oBAC/B,IAAI,EAAE,GAAG,CAAC,CAAC;oBACX,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;wBAAE,EAAE,EAAE,CAAC;oBACjH,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM;wBAAE,MAAM;oBAC1B,YAAY,EAAE,CAAC;gBACjB,CAAC;gBAED,IAAI,YAAY,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;oBAChC,MAAM,QAAQ,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC;oBACrC,IAAI,UAAU,GAAG,CAAC,CAAC;oBACnB,OAAO,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;wBAAE,UAAU,EAAE,CAAC;oBACjL,MAAM,GAAG,GAAG,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;oBAC5C,IAAI,UAAU,GAAG,MAAM,IAAI,UAAU,GAAG,QAAQ,CAAC,MAAM;wBACnD,GAAG,KAAK,EAAE,IAAI,GAAG,KAAK,EAAE;wBACxB,CAAC,CAAC,GAAG,KAAK,EAAE,IAAI,UAAU,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,CAAC,UAAU,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;wBACpG,MAAM,OAAO,GAAe,EAAE,CAAC;wBAC/B,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;wBACxC,IAAI,SAAS,EAAE,CAAC;4BACd,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,AAAD,EAAG,AAAD,EAAG,IAAI,CAAC,GAAG,SAAS,CAAC;4BAChD,IAAI,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;4BACxB,IAAI,SAAS;gCAAE,MAAM,GAAG,IAAI,SAAS,IAAI,MAAM,EAAE,CAAC;4BAClD,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;wBACrE,CAAC;6BAAM,CAAC;4BACN,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;wBACpC,CAAC;wBACD,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;wBAC9B,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;wBACrC,SAAS;oBACX,CAAC;gBACH,CAAC;gBAED,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;gBACpC,SAAS;YACX,CAAC;YACD,qEAAqE;YACrE,SAAS;QACX,CAAC;QAED,8DAA8D;QAC9D,IAAI,WAAW,IAAI,MAAM,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;YAChD,WAAW,GAAG,IAAI,CAAC;QACrB,CAAC;QAED,4CAA4C;QAC5C,sEAAsE;QACtE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE;YAAE,SAAS,CAAC,UAAU;QAE1E,uBAAuB;QACvB,8CAA8C;QAC9C,0CAA0C;QAC1C,IAAI,GAAW,CAAC;QAChB,IAAI,QAA4B,CAAC;QACjC,IAAI,aAAiC,CAAC;QACtC,IAAI,WAA+B,CAAC;QACpC,IAAI,QAAgB,CAAC;QAErB,IAAI,UAAU,GAAG,KAAK,CAAC;QACvB,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAC;QAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YACjC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,eAAe;gBAC1C,QAAQ,GAAG,CAAC,CAAC;gBACb,MAAM;YACR,CAAC;YACD,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,QAAQ;gBACjD,UAAU,GAAG,IAAI,CAAC;gBAClB,MAAM;YACR,CAAC;QACH,CAAC;QAED,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,sDAAsD;YACtD,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;gBACpB,GAAG,GAAG,OAAO,CAAC;gBACd,QAAQ,GAAG,EAAE,CAAC;YAChB,CAAC;iBAAM,CAAC;gBACN,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;gBACrC,wCAAwC;gBACxC,IAAI,QAAQ,GAAG,QAAQ,CAAC;gBACxB,OAAO,QAAQ,GAAG,UAAU,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;oBAAE,QAAQ,EAAE,CAAC;gBACxH,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1F,CAAC;YACD,QAAQ,GAAG,SAAS,CAAC;YACrB,aAAa,GAAG,SAAS,CAAC;YAC1B,WAAW,GAAG,SAAS,CAAC;QAC1B,CAAC;aAAM,CAAC;YACN,8CAA8C;YAC9C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YACxC,IAAI,CAAC,KAAK;gBAAE,SAAS;YACrB,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC;YAChE,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,kBAAkB,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACjE,CAAC;QAED,2BAA2B;QAC3B,IAAI,QAAQ;YAAE,QAAQ,GAAG,IAAI,QAAQ,IAAI,QAAQ,EAAE,CAAC;QAEpD,sBAAsB;QACtB,IAAI,OAAO,GAAa,EAAE,CAAC;QAC3B,IAAI,UAAU,GAAa,EAAE,CAAC;QAC9B,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnC,CAAC;QAED,4DAA4D;QAC5D,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,EAAE,CAAC;YACjE,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACxE,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpB,UAAU,GAAG,IAAI,CAAC;gBAClB,QAAQ,GAAG,EAAE,CAAC;YAChB,CAAC;QACH,CAAC;QAED,MAAM,WAAW,GAAG,aAAa,CAAC,CAAC,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAEhF,oCAAoC;QACpC,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,MAAM,EAAE,CAAC;YACpE,KAAK,CAAC,GAAG,EAAE,CAAC;QACd,CAAC;QACD,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAiB,CAAC;QAEzD,wCAAwC;QACxC,IAAI,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,aAAa,IAAI,GAAG,KAAK,WAAW;YAAE,SAAS;QAElF,yCAAyC;QACzC,IAAI,QAAQ,KAAK,GAAG,EAAE,CAAC;YACrB,kBAAkB;YAClB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;YACjB,YAAY,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;YAC5C,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC1E,CAAC;aAAM,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;YAC/B,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBACxD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;YACjE,0CAA0C;YAC1C,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;YACjB,WAAW,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,CAAc,EAAE,CAAC;YACxD,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC1E,CAAC;aAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;YACrB,iDAAiD;YACjD,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;YACjB,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,CAAe,EAAE,CAAC,CAAC;YACvD,iEAAiE;YACjE,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;YACpB,OAAO,OAAO,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;gBAC9B,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;gBAC1B,IAAI,EAAE,GAAG,CAAC,CAAC;gBACX,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;oBAAE,EAAE,EAAE,CAAC;gBACjH,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM;oBAAE,MAAM;gBAC1B,OAAO,EAAE,CAAC;YACZ,CAAC;YACD,IAAI,OAAO,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;gBAC3B,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;gBAC1B,IAAI,EAAE,GAAG,CAAC,CAAC;gBACX,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;oBAAE,EAAE,EAAE,CAAC;gBACjH,IAAI,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;oBACnF,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;oBACjB,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,CAA0B,EAAE,CAAC;oBAChF,WAAW,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,CAAc,EAAE,CAAC;gBAC1D,CAAC;YACH,CAAC;YACD,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC1E,CAAC;aAAM,CAAC;YACN,mBAAmB;YACnB,MAAM,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACjC,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;AACtF,CAAC"}
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"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"}