@pilates/core 1.0.0-rc.1 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -31,7 +31,31 @@
31
31
  * sibling boxes butt cleanly on integer cell boundaries.
32
32
  */
33
33
  import { MeasureMode } from '../measure-func.js';
34
- import { clampSize, crossAxis, gapAlong, isReverse, mainAxis, maxSize, minSize, preferredSize, readEnd, readStart, } from './axis.js';
34
+ import { clampSize, crossAxis, effectivePreferredSize, gapAlong, isReverse, mainAxis, maxSize, minSize, preferredSize, readEnd, readStart, } from './axis.js';
35
+ import { LayoutCache, restoreFromCache, snapshotForCache } from './cache.js';
36
+ import { roundLayoutSubtree } from './round.js';
37
+ /**
38
+ * Single chokepoint for measure-func invocation. Consults the leaf's
39
+ * `_measureCache`; on miss, calls the measurer and stores the result.
40
+ * Every measure-func call site in this file routes through here.
41
+ *
42
+ * @internal
43
+ */
44
+ function callMeasureFunc(node, availableWidth, widthMode, availableHeight, heightMode) {
45
+ const fn = node.getMeasureFunc();
46
+ if (fn === null) {
47
+ throw new Error('callMeasureFunc requires a node with a measure function');
48
+ }
49
+ const key = { availableWidth, widthMode, availableHeight, heightMode };
50
+ const cached = node._measureCache?.lookup(key);
51
+ if (cached !== undefined)
52
+ return cached;
53
+ const result = fn(availableWidth, widthMode, availableHeight, heightMode);
54
+ // _measureCache was lazy-created by setMeasureFunc — guaranteed present
55
+ // here since fn !== null.
56
+ node._measureCache?.store(key, result);
57
+ return result;
58
+ }
35
59
  /**
36
60
  * Lay out a node's children. The container's own `layout.width` and
37
61
  * `layout.height` must already be set when this is called.
@@ -47,7 +71,53 @@ import { clampSize, crossAxis, gapAlong, isReverse, mainAxis, maxSize, minSize,
47
71
  * non-hidden child so their own descendants are laid out within the box
48
72
  * we just assigned them.
49
73
  */
50
- export function layoutChildren(node) {
74
+ export function layoutChildren(node, useCache = false, parentAbsX = 0, parentAbsY = 0) {
75
+ // Cache hit fast-path: only when useCache=true (i.e. we are in a path
76
+ // that has already committed to skipping roundLayout — either the root
77
+ // cache-hit fast-path or a recursive call from another cache-hit node).
78
+ // We MUST NOT use this fast-path when the root is on the cold path and
79
+ // roundLayout will run afterwards: the cache stores post-rounded values
80
+ // that were computed with different ancestor absolute coordinates, so
81
+ // re-rounding after restore would give wrong results for deep descendants.
82
+ //
83
+ // Implication for performance: inner-node caches only get READS on root
84
+ // cache hits (which require root clean — `markDirty()` propagates up,
85
+ // so any descendant mutation dirties root). Phase 3 relayout boundaries
86
+ // break this assumption: a boundary node may be dirty while its ancestor
87
+ // root is clean. The cold-path fallback below handles this: when a dirty
88
+ // node is encountered under useCache=true, it re-lays out the subtree,
89
+ // rounds child positions (using the tracked absolute coordinate), and
90
+ // updates scroll sizes + cache (see `roundLayoutSubtree` and
91
+ // `computeAndCacheScrollSizes`).
92
+ if (useCache && !node.isDirty() && node._layoutCache !== undefined) {
93
+ const key = {
94
+ availableWidth: node.layout.width,
95
+ widthMode: 'exactly',
96
+ availableHeight: node.layout.height,
97
+ heightMode: 'exactly',
98
+ };
99
+ const hit = node._layoutCache.lookup(key);
100
+ if (hit !== undefined) {
101
+ restoreFromCache(node, hit);
102
+ // Recurse to children — each one either hits its own cache or
103
+ // falls through to a full layoutChildren recompute. Pass along the
104
+ // float absolute position of `node` as the new parentAbsX/Y so dirty
105
+ // sub-boundaries can round their subtrees using correct coordinates.
106
+ // Use `_floatLeft/Top` (pre-rounding values restored from cache) rather
107
+ // than `_layout.left/top` (rounded integers restored from cache) so that
108
+ // grandchildren's absolute float coordinates are computed correctly.
109
+ const nodeAbsX = parentAbsX + node._floatLeft;
110
+ const nodeAbsY = parentAbsY + node._floatTop;
111
+ for (let i = 0; i < node.getChildCount(); i++) {
112
+ const c = node.getChild(i);
113
+ if (c.style.display === 'none')
114
+ continue;
115
+ layoutChildren(c, true, nodeAbsX, nodeAbsY);
116
+ }
117
+ return;
118
+ }
119
+ }
120
+ // Cold path:
51
121
  const flowChildren = visibleChildrenOf(node);
52
122
  const absoluteList = absoluteChildrenOf(node);
53
123
  if (flowChildren.length === 0 && absoluteList.length === 0) {
@@ -63,12 +133,79 @@ export function layoutChildren(node) {
63
133
  // Recurse into every non-hidden child so descendants are laid out within
64
134
  // the box we just assigned them. (Absolute children may have their own
65
135
  // flex subtrees.)
136
+ // When inside a root cache-hit pass (useCache=true, i.e. we are on a dirty
137
+ // node's cold-recompute path), pass useCache=false to the children. The
138
+ // children's sub-layouts will be fully recomputed; `roundLayoutSubtree`
139
+ // below will then round their positions, and `computeAndCacheScrollSizes`
140
+ // will set their parent-visible scroll metrics. Passing useCache=false here
141
+ // prevents children from reading stale cache entries whose keys were keyed
142
+ // on pre-mutation sizes (the parent just assigned them new widths/heights
143
+ // via the cold flex path, so their sizes may have changed).
66
144
  for (let i = 0; i < node.getChildCount(); i++) {
67
145
  const c = node.getChild(i);
68
146
  if (c.style.display === 'none')
69
147
  continue;
70
- layoutChildren(c);
148
+ layoutChildren(c, false);
149
+ }
150
+ // When we are inside a root cache-hit pass (useCache=true) and this node
151
+ // ran the cold path (it was dirty or its cache missed), we must:
152
+ // 1. Round this node's children using absolute coordinates (mirrors what
153
+ // roundLayout does in the full cold path). `parentAbsX/Y` is the
154
+ // absolute position of node's parent, so node's absolute corner is
155
+ // `(parentAbsX + node.left, parentAbsY + node.top)`.
156
+ // 2. Recompute scroll sizes from the now-rounded child positions.
157
+ // 3. Refresh this node's own layout cache so subsequent clean passes hit.
158
+ // This is safe for relayout boundaries because their `left`/`top` were
159
+ // restored from the parent's rounded cache (already integers), so
160
+ // node.absX = parentAbsX + node.left is already integer — rounding is a
161
+ // no-op at the node level and correct for all child positions.
162
+ if (useCache) {
163
+ roundLayoutSubtree(node, parentAbsX, parentAbsY);
164
+ computeAndCacheScrollSizes(node);
165
+ }
166
+ }
167
+ /**
168
+ * Recursively recompute `scrollWidth`/`scrollHeight` for `node` and all
169
+ * its descendants (post-order), then refresh each non-root node's
170
+ * `_layoutCache`. This mirrors what `computeScrollSizes` in `index.ts`
171
+ * does on the full cold path, but is called inline from `layoutChildren`
172
+ * when a dirty boundary node runs the cold path inside a root cache-hit
173
+ * pass. In that context `computeScrollSizes` + `roundLayout` will NOT
174
+ * run for this subtree, so we update scroll metrics here instead.
175
+ *
176
+ * Called after `roundLayoutSubtree` so all positions and sizes are already
177
+ * integer-rounded before we compute content extents.
178
+ */
179
+ function computeAndCacheScrollSizes(node) {
180
+ // Post-order: recurse into children first so their scrollWidths are
181
+ // set before we compute this node's content extent from them.
182
+ for (let i = 0; i < node.getChildCount(); i++) {
183
+ computeAndCacheScrollSizes(node.getChild(i));
71
184
  }
185
+ let contentRight = 0;
186
+ let contentBottom = 0;
187
+ for (let i = 0; i < node.getChildCount(); i++) {
188
+ const c = node.getChild(i);
189
+ const cl = c._layout;
190
+ if (cl.left + cl.width > contentRight)
191
+ contentRight = cl.left + cl.width;
192
+ if (cl.top + cl.height > contentBottom)
193
+ contentBottom = cl.top + cl.height;
194
+ }
195
+ node._layout.scrollWidth = Math.max(node._layout.width, contentRight);
196
+ node._layout.scrollHeight = Math.max(node._layout.height, contentBottom);
197
+ // Refresh this node's own layout cache so subsequent clean passes see
198
+ // the updated scroll sizes. Mirror the key scheme used by `computeScrollSizes`
199
+ // in `index.ts` (width/height as exactly-sized container).
200
+ const innerKey = {
201
+ availableWidth: node.layout.width,
202
+ widthMode: 'exactly',
203
+ availableHeight: node.layout.height,
204
+ heightMode: 'exactly',
205
+ };
206
+ if (node._layoutCache === undefined)
207
+ node._layoutCache = new LayoutCache();
208
+ node._layoutCache.store(innerKey, snapshotForCache(node));
72
209
  }
73
210
  /** The 8-step flex pipeline for in-flow children. */
74
211
  function layoutFlexFlow(node, visible) {
@@ -89,8 +226,15 @@ function layoutFlexFlow(node, visible) {
89
226
  // Step 2: pack into lines.
90
227
  const lines = packIntoLines(items, innerMain, gapMain, node.style.flexWrap);
91
228
  // Step 3: distribute slack within each line.
229
+ // When the parent has `overflow !== 'visible'` on the main axis, the
230
+ // children are allowed to exceed the inner main size (the renderer clips
231
+ // and scrolls) — flex-shrink is suppressed so children retain their
232
+ // natural size. Flex-grow still applies (children may legitimately grow
233
+ // to fill the viewport when content is smaller than the box).
234
+ const mainOverflow = main === 'row' ? node.style.overflowX : node.style.overflowY;
235
+ const allowMainOverflow = mainOverflow !== 'visible';
92
236
  for (const line of lines) {
93
- distributeFlexInLine(line, innerMain, gapMain, main);
237
+ distributeFlexInLine(line, innerMain, main, allowMainOverflow);
94
238
  }
95
239
  // Step 4: each line's cross size.
96
240
  computeLineCrossSizes(lines, innerCross, lines.length === 1);
@@ -117,7 +261,7 @@ function layoutFlexFlow(node, visible) {
117
261
  }
118
262
  // Reverse main-axis positions for *-reverse directions.
119
263
  if (isReverse(node.style.flexDirection)) {
120
- flipMainAxis(visible, main, containerMain);
264
+ flipMainAxis(visible, main, padMainStart, innerMain);
121
265
  }
122
266
  }
123
267
  /**
@@ -166,7 +310,7 @@ function layoutAbsoluteChild(child, parentOuterW, parentOuterH) {
166
310
  width = clampSize(child.style, 'row', Math.max(0, candidate));
167
311
  }
168
312
  else if (child.getMeasureFunc() !== null && child.getChildCount() === 0) {
169
- const result = child.getMeasureFunc()(parentOuterW, MeasureMode.AtMost, parentOuterH, MeasureMode.AtMost);
313
+ const result = callMeasureFunc(child, parentOuterW, MeasureMode.AtMost, parentOuterH, MeasureMode.AtMost);
170
314
  width = clampSize(child.style, 'row', result.width);
171
315
  }
172
316
  else {
@@ -183,7 +327,7 @@ function layoutAbsoluteChild(child, parentOuterW, parentOuterH) {
183
327
  height = clampSize(child.style, 'column', Math.max(0, candidate));
184
328
  }
185
329
  else if (child.getMeasureFunc() !== null && child.getChildCount() === 0) {
186
- const result = child.getMeasureFunc()(width, MeasureMode.Exactly, parentOuterH, MeasureMode.AtMost);
330
+ const result = callMeasureFunc(child, width, MeasureMode.Exactly, parentOuterH, MeasureMode.AtMost);
187
331
  height = clampSize(child.style, 'column', result.height);
188
332
  }
189
333
  else {
@@ -211,21 +355,33 @@ function layoutAbsoluteChild(child, parentOuterW, parentOuterH) {
211
355
  else {
212
356
  top = margin[POS_TOP];
213
357
  }
214
- child.layout.left = left;
215
- child.layout.top = top;
216
- child.layout.width = width;
217
- child.layout.height = height;
358
+ child._layout.left = left;
359
+ child._layout.top = top;
360
+ child._layout.width = width;
361
+ child._layout.height = height;
362
+ child._floatLeft = left;
363
+ child._floatTop = top;
218
364
  }
365
+ // A frozen empty tuple lets the no-children case avoid allocating a
366
+ // fresh array per layoutChildren call. Most subtrees in a real UI have
367
+ // no absolute descendants, and this runs on every re-layout.
368
+ const NO_CHILDREN = Object.freeze([]);
219
369
  function absoluteChildrenOf(node) {
220
- const out = [];
221
- for (let i = 0; i < node.getChildCount(); i++) {
370
+ const count = node.getChildCount();
371
+ if (count === 0)
372
+ return NO_CHILDREN;
373
+ let out = null;
374
+ for (let i = 0; i < count; i++) {
222
375
  const c = node.getChild(i);
223
376
  if (c.style.display === 'none')
224
377
  continue;
225
- if (c.style.positionType === 'absolute')
378
+ if (c.style.positionType === 'absolute') {
379
+ if (out === null)
380
+ out = [];
226
381
  out.push(c);
382
+ }
227
383
  }
228
- return out;
384
+ return out ?? NO_CHILDREN;
229
385
  }
230
386
  // ─── step 1: build items ────────────────────────────────────────────────
231
387
  function buildItem(node, main, cross, innerMain, innerCross) {
@@ -286,18 +442,15 @@ function makeLine(items, hypotheticalMain) {
286
442
  return { items, hypotheticalMain, crossSize: 0, crossPos: 0 };
287
443
  }
288
444
  // ─── step 3: distribute flex-grow / flex-shrink within a line ───────────
289
- function distributeFlexInLine(line, innerMain, gapMain, main) {
290
- const remaining = innerMain -
291
- line.hypotheticalMain -
292
- Math.max(0, line.items.length - 1) * (line.items.length > 1 ? 0 : 0);
293
- // Note: gapMain is already included in hypotheticalMain via singleLine /
294
- // makeLine accounting (for wrap case) — wait, actually gapMain is added
295
- // for singleLine. Let me handle this consistently:
296
- void gapMain;
445
+ function distributeFlexInLine(line, innerMain, main, allowMainOverflow = false) {
446
+ // `line.hypotheticalMain` already includes the gap budget — both
447
+ // singleLine() and packIntoLines() accumulate gaps into it as they
448
+ // build the line so the slack is just inner - hypothetical.
449
+ const remaining = innerMain - line.hypotheticalMain;
297
450
  if (remaining > 0) {
298
451
  distributeGrow(line.items, remaining, main);
299
452
  }
300
- else if (remaining < 0) {
453
+ else if (remaining < 0 && !allowMainOverflow) {
301
454
  distributeShrink(line.items, -remaining, main);
302
455
  }
303
456
  }
@@ -518,7 +671,10 @@ function crossAlignItemsInLine(line, alignItems) {
518
671
  const innerLine = line.crossSize - item.marginCrossStart - item.marginCrossEnd;
519
672
  const cross = inferCrossAxisFromContext(item, line);
520
673
  if (align === 'stretch') {
521
- const explicit = preferredSize(item.node.style, cross);
674
+ // aspectRatio-derived cross wins over stretch when the cross is auto
675
+ // — matches CSS aspect-ratio behavior and Yoga's HasDefiniteCrossSize
676
+ // check (an aspect-ratio derivation is treated as definite).
677
+ const explicit = effectivePreferredSize(item.node.style, cross);
522
678
  if (typeof explicit === 'number') {
523
679
  item.finalCross = clampSize(item.node.style, cross, explicit);
524
680
  }
@@ -566,61 +722,87 @@ function inferCrossAxisFromContext(item, _line) {
566
722
  }
567
723
  // ─── helpers ────────────────────────────────────────────────────────────
568
724
  function visibleChildrenOf(node) {
569
- const out = [];
570
- for (let i = 0; i < node.getChildCount(); i++) {
725
+ const count = node.getChildCount();
726
+ if (count === 0)
727
+ return NO_CHILDREN;
728
+ let out = null;
729
+ for (let i = 0; i < count; i++) {
571
730
  const c = node.getChild(i);
572
731
  if (c.style.display === 'none')
573
732
  continue;
574
733
  if (c.style.positionType === 'absolute')
575
734
  continue; // M6 handles absolute
735
+ if (out === null)
736
+ out = [];
576
737
  out.push(c);
577
738
  }
578
- return out;
739
+ return out ?? NO_CHILDREN;
579
740
  }
741
+ /**
742
+ * Measure-func warm-up call inside `layoutChildren` for leaves (the
743
+ * leaf's own `_layout.width`/`height` were already resolved by the
744
+ * parent during flex distribution via `resolveHypotheticalMainSize` /
745
+ * `naturalCrossSize`, so the result of this call is intentionally
746
+ * discarded). Two reasons we still make the call:
747
+ *
748
+ * 1. Side-effect contract — some measure funcs maintain their own
749
+ * internal state (e.g. text-shaping caches) that would otherwise
750
+ * go stale; the call gives them a chance to update.
751
+ * 2. Cache priming — populates `_measureCache` with the final
752
+ * `(layout-width, AtMost)` key so a subsequent re-layout pass on
753
+ * a clean leaf hits the cache without re-invoking the measurer.
754
+ */
580
755
  function measureLeafIfNeeded(node) {
581
- const fn = node.getMeasureFunc();
582
- if (fn === null)
756
+ if (node.getMeasureFunc() === null)
583
757
  return;
584
758
  const padW = (node.style.padding[1] ?? 0) + (node.style.padding[3] ?? 0);
585
759
  const padH = (node.style.padding[0] ?? 0) + (node.style.padding[2] ?? 0);
586
- fn(Math.max(0, node.layout.width - padW), MeasureMode.AtMost, Math.max(0, node.layout.height - padH), MeasureMode.AtMost);
760
+ callMeasureFunc(node, Math.max(0, node.layout.width - padW), MeasureMode.AtMost, Math.max(0, node.layout.height - padH), MeasureMode.AtMost);
587
761
  }
588
762
  function sizeOnAxis(node, axis) {
589
763
  return axis === 'row' ? node.layout.width : node.layout.height;
590
764
  }
591
765
  function writeMainPos(node, main, value) {
592
- if (main === 'row')
593
- node.layout.left = value;
594
- else
595
- node.layout.top = value;
766
+ if (main === 'row') {
767
+ node._layout.left = value;
768
+ node._floatLeft = value;
769
+ }
770
+ else {
771
+ node._layout.top = value;
772
+ node._floatTop = value;
773
+ }
596
774
  }
597
775
  function writeMainSize(node, main, value) {
598
776
  if (main === 'row')
599
- node.layout.width = value;
777
+ node._layout.width = value;
600
778
  else
601
- node.layout.height = value;
779
+ node._layout.height = value;
602
780
  }
603
781
  function writeCrossPos(node, cross, value) {
604
- if (cross === 'row')
605
- node.layout.left = value;
606
- else
607
- node.layout.top = value;
782
+ if (cross === 'row') {
783
+ node._layout.left = value;
784
+ node._floatLeft = value;
785
+ }
786
+ else {
787
+ node._layout.top = value;
788
+ node._floatTop = value;
789
+ }
608
790
  }
609
791
  function writeCrossSize(node, cross, value) {
610
792
  if (cross === 'row')
611
- node.layout.width = value;
793
+ node._layout.width = value;
612
794
  else
613
- node.layout.height = value;
795
+ node._layout.height = value;
614
796
  }
615
797
  function resolveHypotheticalMainSize(child, main, _innerMain, innerCross) {
616
798
  const basis = child.style.flexBasis;
617
799
  if (typeof basis === 'number')
618
800
  return basis;
619
- const styleMain = preferredSize(child.style, main);
801
+ // Honor aspectRatio when main is auto but the cross axis is explicit.
802
+ const styleMain = effectivePreferredSize(child.style, main);
620
803
  if (typeof styleMain === 'number')
621
804
  return styleMain;
622
- const measure = child.getMeasureFunc();
623
- if (measure !== null && child.getChildCount() === 0) {
805
+ if (child.getMeasureFunc() !== null && child.getChildCount() === 0) {
624
806
  // Ask the leaf for its natural main-axis size: cross axis is
625
807
  // constrained (AtMost the available cross), main axis is free
626
808
  // (Undefined). The measure function reports `{ width, height }` as
@@ -647,34 +829,45 @@ function resolveHypotheticalMainSize(child, main, _innerMain, innerCross) {
647
829
  heightArg = 0;
648
830
  heightMode = MeasureMode.Undefined;
649
831
  }
650
- const result = measure(widthArg, widthMode, heightArg, heightMode);
832
+ const result = callMeasureFunc(child, widthArg, widthMode, heightArg, heightMode);
651
833
  return main === 'row' ? result.width : result.height;
652
834
  }
653
835
  return 0;
654
836
  }
655
837
  function naturalCrossSize(child, cross, innerCross) {
656
- const explicit = preferredSize(child.style, cross);
838
+ // Honor aspectRatio when cross is auto but the main axis is explicit.
839
+ const explicit = effectivePreferredSize(child.style, cross);
657
840
  if (typeof explicit === 'number')
658
841
  return explicit;
659
- const measure = child.getMeasureFunc();
660
- if (measure !== null && child.getChildCount() === 0) {
842
+ if (child.getMeasureFunc() !== null && child.getChildCount() === 0) {
661
843
  const main = cross === 'row' ? 'column' : 'row';
662
844
  const ms = preferredSize(child.style, main);
663
845
  const mainHint = typeof ms === 'number' ? ms : innerCross;
664
- const result = measure(cross === 'row' ? innerCross : mainHint, cross === 'row' ? MeasureMode.AtMost : MeasureMode.Undefined, cross === 'column' ? innerCross : mainHint, cross === 'column' ? MeasureMode.AtMost : MeasureMode.Undefined);
846
+ const result = callMeasureFunc(child, cross === 'row' ? innerCross : mainHint, cross === 'row' ? MeasureMode.AtMost : MeasureMode.Undefined, cross === 'column' ? innerCross : mainHint, cross === 'column' ? MeasureMode.AtMost : MeasureMode.Undefined);
665
847
  return cross === 'row' ? result.width : result.height;
666
848
  }
667
849
  return 0;
668
850
  }
669
- function flipMainAxis(children, main, containerMain) {
851
+ // Flip child positions about the inner content box (the area between
852
+ // padMainStart and padMainStart + innerMain). The child positions written in
853
+ // step 8 are absolute (`padMainStart + innerPos`), so we must subtract
854
+ // padMainStart to recover the inner-relative pos before mirroring, then add
855
+ // padMainStart back. Mirroring against the OUTER container would be wrong
856
+ // whenever padding is asymmetric.
857
+ function flipMainAxis(children, main, padMainStart, innerMain) {
670
858
  for (const child of children) {
671
859
  const childMain = main === 'row' ? child.layout.width : child.layout.height;
672
860
  const childPos = main === 'row' ? child.layout.left : child.layout.top;
673
- const newPos = containerMain - childPos - childMain;
674
- if (main === 'row')
675
- child.layout.left = newPos;
676
- else
677
- child.layout.top = newPos;
861
+ const innerPos = childPos - padMainStart;
862
+ const newPos = padMainStart + innerMain - innerPos - childMain;
863
+ if (main === 'row') {
864
+ child._layout.left = newPos;
865
+ child._floatLeft = newPos;
866
+ }
867
+ else {
868
+ child._layout.top = newPos;
869
+ child._floatTop = newPos;
870
+ }
678
871
  }
679
872
  }
680
873
  /**
@@ -685,7 +878,9 @@ function flipMainAxis(children, main, containerMain) {
685
878
  * - 'auto' with neither → 0.
686
879
  */
687
880
  export function resolveRootAxisSize(node, axis, available) {
688
- const style = preferredSize(node.style, axis);
881
+ // effectivePreferredSize covers the explicit case AND the case where this
882
+ // axis is auto but aspectRatio + the other axis derives a concrete value.
883
+ const style = effectivePreferredSize(node.style, axis);
689
884
  if (typeof style === 'number') {
690
885
  return clampSize(node.style, axis, style);
691
886
  }
@@ -1 +1 @@
1
- {"version":3,"file":"main-axis.js","sourceRoot":"","sources":["../../src/algorithm/main-axis.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjD,OAAO,EAEL,SAAS,EACT,SAAS,EACT,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,OAAO,EACP,OAAO,EACP,aAAa,EACb,OAAO,EACP,SAAS,GACV,MAAM,WAAW,CAAC;AAgCnB;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,cAAc,CAAC,IAAU;IACvC,MAAM,YAAY,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,YAAY,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAE9C,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3D,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAC1B,OAAO;IACT,CAAC;IAED,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,cAAc,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IACrC,CAAC;IAED,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,sBAAsB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAC7C,CAAC;IAED,yEAAyE;IACzE,uEAAuE;IACvE,kBAAkB;IAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9C,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC;QAC5B,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,KAAK,MAAM;YAAE,SAAS;QACzC,cAAc,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACH,CAAC;AAED,qDAAqD;AACrD,SAAS,cAAc,CAAC,IAAU,EAAE,OAAe;IACjD,MAAM,IAAI,GAAS,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IACtD,MAAM,KAAK,GAAS,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAExD,MAAM,aAAa,GAAG,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC7C,MAAM,cAAc,GAAG,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAE/C,MAAM,YAAY,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACzD,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACrD,MAAM,aAAa,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC3D,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAEvD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,GAAG,YAAY,GAAG,UAAU,CAAC,CAAC;IACzE,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,GAAG,aAAa,GAAG,WAAW,CAAC,CAAC;IAE7E,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAE7C,4CAA4C;IAC5C,MAAM,KAAK,GAAe,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAC9C,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,CAAC,CACrD,CAAC;IAEF,2BAA2B;IAC3B,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAE5E,6CAA6C;IAC7C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,oBAAoB,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IACvD,CAAC;IAED,kCAAkC;IAClC,qBAAqB,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;IAE7D,4DAA4D;IAC5D,oBAAoB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IAC3E,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,cAAc,EAAE,CAAC;QAC3C,gBAAgB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IACtC,CAAC;IAED,6DAA6D;IAC7D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QACzE,qBAAqB,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACrD,CAAC;IAED,uEAAuE;IACvE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC;YAC5C,MAAM,QAAQ,GAAG,aAAa,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC/D,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YACvC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YAC/C,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;YAC1C,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAED,wDAAwD;IACxD,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC;QACxC,YAAY,CAAC,OAAO,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,SAAS,sBAAsB,CAAC,MAAY,EAAE,SAAiB;IAC7D,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;IACnC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;IACpC,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;QAC9B,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC;AAED,MAAM,OAAO,GAAG,CAAC,CAAC;AAClB,MAAM,SAAS,GAAG,CAAC,CAAC;AACpB,MAAM,UAAU,GAAG,CAAC,CAAC;AACrB,MAAM,QAAQ,GAAG,CAAC,CAAC;AAEnB,SAAS,mBAAmB,CAAC,KAAW,EAAE,YAAoB,EAAE,YAAoB;IAClF,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC;IACjC,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;IAElC,iBAAiB;IACjB,IAAI,KAAa,CAAC;IAClB,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;IACjC,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;SAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,SAAS,IAAI,GAAG,CAAC,SAAS,CAAC,KAAK,SAAS,EAAE,CAAC;QACvE,MAAM,SAAS,GACb,YAAY,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;QACvF,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;IAChE,CAAC;SAAM,IAAI,KAAK,CAAC,cAAc,EAAE,KAAK,IAAI,IAAI,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC;QAC1E,MAAM,MAAM,GAAG,KAAK,CAAC,cAAc,EAAG,CACpC,YAAY,EACZ,WAAW,CAAC,MAAM,EAClB,YAAY,EACZ,WAAW,CAAC,MAAM,CACnB,CAAC;QACF,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IACtD,CAAC;SAAM,CAAC;QACN,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IAC3C,CAAC;IAED,kBAAkB;IAClB,IAAI,MAAc,CAAC;IACnB,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;IAClC,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IACpD,CAAC;SAAM,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,SAAS,IAAI,GAAG,CAAC,UAAU,CAAC,KAAK,SAAS,EAAE,CAAC;QACvE,MAAM,SAAS,GACb,YAAY,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;QACvF,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;IACpE,CAAC;SAAM,IAAI,KAAK,CAAC,cAAc,EAAE,KAAK,IAAI,IAAI,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC;QAC1E,MAAM,MAAM,GAAG,KAAK,CAAC,cAAc,EAAG,CACpC,KAAK,EACL,WAAW,CAAC,OAAO,EACnB,YAAY,EACZ,WAAW,CAAC,MAAM,CACnB,CAAC;QACF,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAC3D,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED,gBAAgB;IAChB,IAAI,IAAY,CAAC;IACjB,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,SAAS,EAAE,CAAC;QAChC,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC1C,CAAC;SAAM,IAAI,GAAG,CAAC,SAAS,CAAC,KAAK,SAAS,EAAE,CAAC;QACxC,IAAI,GAAG,YAAY,GAAG,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;IACnE,CAAC;SAAM,CAAC;QACN,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC1B,CAAC;IAED,eAAe;IACf,IAAI,GAAW,CAAC;IAChB,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,SAAS,EAAE,CAAC;QAC/B,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;SAAM,IAAI,GAAG,CAAC,UAAU,CAAC,KAAK,SAAS,EAAE,CAAC;QACzC,GAAG,GAAG,YAAY,GAAG,MAAM,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;IACrE,CAAC;SAAM,CAAC;QACN,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;IACzB,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC;IACvB,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;IAC3B,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;AAC/B,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAU;IACpC,MAAM,GAAG,GAAW,EAAE,CAAC;IACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9C,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC;QAC5B,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,KAAK,MAAM;YAAE,SAAS;QACzC,IAAI,CAAC,CAAC,KAAK,CAAC,YAAY,KAAK,UAAU;YAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,2EAA2E;AAE3E,SAAS,SAAS,CAChB,IAAU,EACV,IAAU,EACV,KAAW,EACX,SAAiB,EACjB,UAAkB;IAElB,MAAM,YAAY,GAAG,SAAS,CAC5B,IAAI,CAAC,KAAK,EACV,IAAI,EACJ,2BAA2B,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,CAAC,CAC/D,CAAC;IACF,MAAM,YAAY,GAAG,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;IAC/D,OAAO;QACL,IAAI;QACJ,YAAY;QACZ,SAAS,EAAE,YAAY;QACvB,YAAY;QACZ,UAAU,EAAE,YAAY;QACxB,OAAO,EAAE,CAAC;QACV,QAAQ,EAAE,CAAC;QACX,eAAe,EAAE,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC;QACnD,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC;QAC/C,gBAAgB,EAAE,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC;QACrD,cAAc,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC;KAClD,CAAC;AACJ,CAAC;AAED,2EAA2E;AAE3E,SAAS,aAAa,CACpB,KAAiB,EACjB,SAAiB,EACjB,OAAe,EACf,IAAuB;IAEvB,IAAI,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QAC3C,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,KAAK,GAAe,EAAE,CAAC;IAC7B,IAAI,OAAO,GAAe,EAAE,CAAC;IAC7B,IAAI,WAAW,GAAG,CAAC,CAAC;IAEpB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC;QAC/E,MAAM,QAAQ,GAAG,WAAW,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;QAC7E,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,GAAG,SAAS,EAAE,CAAC;YAC/C,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;YAC3C,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC;YACjB,WAAW,GAAG,QAAQ,CAAC;QACzB,CAAC;aAAM,CAAC;YACN,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;gBAAE,WAAW,IAAI,OAAO,CAAC;YAC/C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnB,WAAW,IAAI,QAAQ,CAAC;QAC1B,CAAC;IACH,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;IACnE,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,UAAU,CAAC,KAAiB,EAAE,OAAe;IACpD,IAAI,gBAAgB,GAAG,CAAC,CAAC;IACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;QACrB,gBAAgB,IAAI,EAAE,CAAC,YAAY,GAAG,EAAE,CAAC,eAAe,GAAG,EAAE,CAAC,aAAa,CAAC;QAC5E,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,gBAAgB,IAAI,OAAO,CAAC;IACxD,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;AAChE,CAAC;AAED,SAAS,QAAQ,CAAC,KAAiB,EAAE,gBAAwB;IAC3D,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;AAChE,CAAC;AAED,2EAA2E;AAE3E,SAAS,oBAAoB,CAC3B,IAAc,EACd,SAAiB,EACjB,OAAe,EACf,IAAU;IAEV,MAAM,SAAS,GACb,SAAS;QACT,IAAI,CAAC,gBAAgB;QACrB,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvE,yEAAyE;IACzE,wEAAwE;IACxE,mDAAmD;IACnD,KAAK,OAAO,CAAC;IAEb,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QAClB,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC;SAAM,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QACzB,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACjD,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,KAAiB,EAAE,KAAa,EAAE,IAAU;IAClE,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;IACvB,MAAM,MAAM,GAAc,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC;YAAE,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAC3D,CAAC;IAED,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC;QACxC,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,IAAI,kBAAkB,GAAG,CAAC,CAAC;QAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3B,IAAI,MAAM,CAAC,CAAC,CAAC;gBAAE,kBAAkB,IAAI,KAAK,CAAC,CAAC,CAAE,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC,YAAY,CAAC;;gBAC7E,SAAS,IAAI,KAAK,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;QAClD,CAAC;QACD,IAAI,SAAS,IAAI,CAAC;YAAE,OAAO;QAC3B,MAAM,SAAS,GAAG,KAAK,GAAG,kBAAkB,CAAC;QAC7C,IAAI,SAAS,IAAI,CAAC;YAAE,OAAO;QAE3B,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3B,IAAI,MAAM,CAAC,CAAC,CAAC;gBAAE,SAAS;YACxB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;YACvB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;YACtC,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,SAAS,CAAC;YAClE,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;YACzD,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC;YACzB,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;gBACvB,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;gBACjB,QAAQ,GAAG,IAAI,CAAC;YAClB,CAAC;QACH,CAAC;QACD,IAAI,CAAC,QAAQ;YAAE,OAAO;IACxB,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAiB,EAAE,QAAgB,EAAE,IAAU;IACvE,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;IACvB,MAAM,MAAM,GAAc,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC;YAAE,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAC7D,CAAC;IAED,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC;QACxC,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,IAAI,kBAAkB,GAAG,CAAC,CAAC;QAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3B,IAAI,MAAM,CAAC,CAAC,CAAC;gBAAE,kBAAkB,IAAI,KAAK,CAAC,CAAC,CAAE,CAAC,YAAY,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC,SAAS,CAAC;;gBAC7E,WAAW,IAAI,KAAK,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC,YAAY,CAAC;QAC/E,CAAC;QACD,IAAI,WAAW,IAAI,CAAC;YAAE,OAAO;QAC7B,MAAM,SAAS,GAAG,QAAQ,GAAG,kBAAkB,CAAC;QAChD,IAAI,SAAS,IAAI,CAAC;YAAE,OAAO;QAE3B,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3B,IAAI,MAAM,CAAC,CAAC,CAAC;gBAAE,SAAS;YACxB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;YACvB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC;YAC9D,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;gBAChB,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;gBACjB,SAAS;YACX,CAAC;YACD,MAAM,SAAS,GAAG,CAAC,SAAS,GAAG,MAAM,CAAC,GAAG,WAAW,CAAC;YACrD,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;YAC7C,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;YACzD,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC;YACzB,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;gBACvB,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;gBACjB,QAAQ,GAAG,IAAI,CAAC;YAClB,CAAC;QACH,CAAC;QACD,IAAI,CAAC,QAAQ;YAAE,OAAO;IACxB,CAAC;AACH,CAAC;AAED,2EAA2E;AAE3E,SAAS,qBAAqB,CAC5B,KAAiB,EACjB,UAAkB,EAClB,cAAuB;IAEvB,IAAI,cAAc,EAAE,CAAC;QACnB,sEAAsE;QACtE,oBAAoB;QACpB,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,KAAK,CAAC,CAAC,CAAE,CAAC,SAAS,GAAG,UAAU,CAAC;QACvD,OAAO;IACT,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC5B,MAAM,SAAS,GAAG,EAAE,CAAC,YAAY,GAAG,EAAE,CAAC,gBAAgB,GAAG,EAAE,CAAC,cAAc,CAAC;YAC5E,IAAI,SAAS,GAAG,GAAG;gBAAE,GAAG,GAAG,SAAS,CAAC;QACvC,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;IACvB,CAAC;AACH,CAAC;AAED,2EAA2E;AAE3E,SAAS,oBAAoB,CAC3B,KAAiB,EACjB,YAAmB,EACnB,UAAkB,EAClB,QAAgB;IAEhB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,KAAK,CAAC,CAAC,CAAE,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,OAAO;IACT,CAAC;IAED,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,MAAM,IAAI,IAAI,KAAK;QAAE,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC;IACjD,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC;IACtC,MAAM,QAAQ,GAAG,UAAU,GAAG,IAAI,CAAC;IAEnC,uEAAuE;IACvE,kCAAkC;IAClC,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,aAAa,GAAG,CAAC,CAAC;IAEtB,QAAQ,YAAY,EAAE,CAAC;QACrB,KAAK,UAAU;YACb,MAAM,GAAG,QAAQ,CAAC;YAClB,MAAM;QACR,KAAK,QAAQ;YACX,MAAM,GAAG,QAAQ,GAAG,CAAC,CAAC;YACtB,MAAM;QACR,KAAK,eAAe;YAClB,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,GAAG,CAAC;gBAAE,QAAQ,GAAG,QAAQ,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC/E,MAAM;QACR,KAAK,cAAc;YACjB,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;gBACjB,MAAM,IAAI,GAAG,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;gBACrC,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC;gBAClB,QAAQ,GAAG,IAAI,CAAC;YAClB,CAAC;YACD,MAAM;QACR,KAAK,SAAS,CAAC;QACf,KAAK,MAAM;YACT,IAAI,QAAQ,GAAG,CAAC;gBAAE,aAAa,GAAG,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;YAC1D,MAAM;QACR;YACE,oCAAoC;YACpC,MAAM;IACV,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;QACvB,IAAI,aAAa,GAAG,CAAC;YAAE,IAAI,CAAC,SAAS,IAAI,aAAa,CAAC;QACvD,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC;QACvB,MAAM,IAAI,IAAI,CAAC,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACjD,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAiB,EAAE,UAAkB;IAC7D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,UAAU,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;IAC9D,CAAC;AACH,CAAC;AAED,2EAA2E;AAE3E,SAAS,mBAAmB,CAC1B,IAAc,EACd,OAAgB,EAChB,SAAiB,EACjB,OAAe;IAEf,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IACzB,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;IACvB,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO;IAEpB,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;QACrB,QAAQ,IAAI,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC,eAAe,GAAG,EAAE,CAAC,aAAa,CAAC;QACjE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,QAAQ,IAAI,OAAO,CAAC;IACrC,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC,CAAC;IAEnD,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,QAAQ,GAAG,CAAC,CAAC;IAEjB,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,UAAU;YACb,MAAM,GAAG,QAAQ,CAAC;YAClB,MAAM;QACR,KAAK,QAAQ;YACX,MAAM,GAAG,QAAQ,GAAG,CAAC,CAAC;YACtB,MAAM;QACR,KAAK,eAAe;YAClB,IAAI,CAAC,GAAG,CAAC;gBAAE,QAAQ,GAAG,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACzC,MAAM;QACR,KAAK,cAAc,CAAC,CAAC,CAAC;YACpB,MAAM,IAAI,GAAG,QAAQ,GAAG,CAAC,CAAC;YAC1B,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC;YAClB,QAAQ,GAAG,IAAI,CAAC;YAChB,MAAM;QACR,CAAC;QACD,KAAK,cAAc,CAAC,CAAC,CAAC;YACpB,MAAM,IAAI,GAAG,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAChC,MAAM,GAAG,IAAI,CAAC;YACd,QAAQ,GAAG,IAAI,CAAC;YAChB,MAAM;QACR,CAAC;QACD;YACE,qCAAqC;YACrC,MAAM;IACV,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;QACrB,MAAM,IAAI,EAAE,CAAC,eAAe,CAAC;QAC7B,EAAE,CAAC,OAAO,GAAG,MAAM,CAAC;QACpB,MAAM,IAAI,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC,aAAa,CAAC;QAC1C,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,MAAM,IAAI,OAAO,GAAG,QAAQ,CAAC;IAC9C,CAAC;AACH,CAAC;AAED,2EAA2E;AAE3E,SAAS,qBAAqB,CAAC,IAAc,EAAE,UAAiB;IAC9D,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QACpE,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC;QAC/E,MAAM,KAAK,GAAG,yBAAyB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAEpD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YACvD,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBACjC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;YAChE,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;YAC9E,CAAC;YACD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC;YACtC,SAAS;QACX,CAAC;QAED,oDAAoD;QACpD,MAAM,cAAc,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAC5E,IAAI,CAAC,UAAU,GAAG,cAAc,CAAC;QAEjC,QAAQ,KAAK,EAAE,CAAC;YACd,KAAK,UAAU;gBACb,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;gBACtE,MAAM;YACR,KAAK,QAAQ;gBACX,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,SAAS,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;gBACtF,MAAM;YACR;gBACE,iEAAiE;gBACjE,8CAA8C;gBAC9C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC;gBACtC,MAAM;QACV,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,IAAW,EAAE,KAAY;IAC/C,OAAO,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AACxC,CAAC;AAED;;;;;GAKG;AACH,SAAS,yBAAyB,CAAC,IAAc,EAAE,KAAe;IAChE,sEAAsE;IACtE,yEAAyE;IACzE,iBAAiB;IACjB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;IACrC,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,QAAQ,CAAC;IACrC,OAAO,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;AAC/C,CAAC;AAED,2EAA2E;AAE3E,SAAS,iBAAiB,CAAC,IAAU;IACnC,MAAM,GAAG,GAAW,EAAE,CAAC;IACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9C,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC;QAC5B,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,KAAK,MAAM;YAAE,SAAS;QACzC,IAAI,CAAC,CAAC,KAAK,CAAC,YAAY,KAAK,UAAU;YAAE,SAAS,CAAC,sBAAsB;QACzE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACd,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAU;IACrC,MAAM,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;IACjC,IAAI,EAAE,KAAK,IAAI;QAAE,OAAO;IACxB,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACzE,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACzE,EAAE,CACA,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,EACrC,WAAW,CAAC,MAAM,EAClB,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,EACtC,WAAW,CAAC,MAAM,CACnB,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,IAAU,EAAE,IAAU;IACxC,OAAO,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;AACjE,CAAC;AAED,SAAS,YAAY,CAAC,IAAU,EAAE,IAAU,EAAE,KAAa;IACzD,IAAI,IAAI,KAAK,KAAK;QAAE,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC;;QACxC,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,KAAK,CAAC;AAC/B,CAAC;AACD,SAAS,aAAa,CAAC,IAAU,EAAE,IAAU,EAAE,KAAa;IAC1D,IAAI,IAAI,KAAK,KAAK;QAAE,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;;QACzC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC;AAClC,CAAC;AACD,SAAS,aAAa,CAAC,IAAU,EAAE,KAAW,EAAE,KAAa;IAC3D,IAAI,KAAK,KAAK,KAAK;QAAE,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC;;QACzC,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,KAAK,CAAC;AAC/B,CAAC;AACD,SAAS,cAAc,CAAC,IAAU,EAAE,KAAW,EAAE,KAAa;IAC5D,IAAI,KAAK,KAAK,KAAK;QAAE,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;;QAC1C,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC;AAClC,CAAC;AAED,SAAS,2BAA2B,CAClC,KAAW,EACX,IAAU,EACV,UAAkB,EAClB,UAAkB;IAElB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC;IACpC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAE5C,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACnD,IAAI,OAAO,SAAS,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAEpD,MAAM,OAAO,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;IACvC,IAAI,OAAO,KAAK,IAAI,IAAI,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC;QACpD,6DAA6D;QAC7D,8DAA8D;QAC9D,mEAAmE;QACnE,sEAAsE;QACtE,WAAW;QACX,MAAM,KAAK,GAAS,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;QACtD,MAAM,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC7C,MAAM,eAAe,GAAG,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;QAEjE,IAAI,QAAgB,CAAC;QACrB,IAAI,SAAiB,CAAC;QACtB,IAAI,SAAsB,CAAC;QAC3B,IAAI,UAAuB,CAAC;QAC5B,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;YACnB,oDAAoD;YACpD,QAAQ,GAAG,CAAC,CAAC;YACb,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC;YAClC,SAAS,GAAG,eAAe,CAAC;YAC5B,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC;QAClC,CAAC;aAAM,CAAC;YACN,oDAAoD;YACpD,QAAQ,GAAG,eAAe,CAAC;YAC3B,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC;YAC/B,SAAS,GAAG,CAAC,CAAC;YACd,UAAU,GAAG,WAAW,CAAC,SAAS,CAAC;QACrC,CAAC;QAED,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;QACnE,OAAO,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;IACvD,CAAC;IAED,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAW,EAAE,KAAW,EAAE,UAAkB;IACpE,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACnD,IAAI,OAAO,QAAQ,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAElD,MAAM,OAAO,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;IACvC,IAAI,OAAO,KAAK,IAAI,IAAI,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,GAAG,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;QAChD,MAAM,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC5C,MAAM,QAAQ,GAAG,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;QAC1D,MAAM,MAAM,GAAG,OAAO,CACpB,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,EACvC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,EAC5D,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,EAC1C,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAChE,CAAC;QACF,OAAO,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;IACxD,CAAC;IAED,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,YAAY,CAAC,QAAgB,EAAE,IAAU,EAAE,aAAqB;IACvE,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;QAC7B,MAAM,SAAS,GAAG,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;QAC5E,MAAM,QAAQ,GAAG,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC;QACvE,MAAM,MAAM,GAAG,aAAa,GAAG,QAAQ,GAAG,SAAS,CAAC;QACpD,IAAI,IAAI,KAAK,KAAK;YAAE,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC;;YAC1C,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC;IACjC,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAU,EAAE,IAAU,EAAE,SAA6B;IACvF,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC9C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAC5C,CAAC;IACD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,IAAI,CAAC,GAAG,SAAS,CAAC;QAClB,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACrC,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,GAAG,EAAE;YAAE,CAAC,GAAG,EAAE,CAAC;QACnB,IAAI,EAAE,KAAK,SAAS,IAAI,CAAC,GAAG,EAAE;YAAE,CAAC,GAAG,EAAE,CAAC;QACvC,OAAO,CAAC,CAAC;IACX,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC"}
1
+ {"version":3,"file":"main-axis.js","sourceRoot":"","sources":["../../src/algorithm/main-axis.ts"],"names":[],"mappings":"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"}
@@ -17,4 +17,21 @@
17
17
  */
18
18
  import type { Node } from '../node.js';
19
19
  export declare function roundLayout(root: Node): void;
20
+ /**
21
+ * Round the layout of a subtree that sits at a known absolute position.
22
+ *
23
+ * Used by the Phase 3 relayout-boundary path: when a boundary node is
24
+ * re-laid out under a cache-hit root, its children's positions are in
25
+ * floating-point space. We round them in isolation using the boundary
26
+ * node's already-rounded absolute position as the origin.
27
+ *
28
+ * The boundary node's own `width`/`height` are explicit integers (that is
29
+ * the boundary invariant) and its `left`/`top` were restored from the
30
+ * parent's rounded cache, so they are already integers. We therefore do
31
+ * NOT re-round the boundary node itself — only its children. The parent
32
+ * absolute corner is `(parentAbsX + node.left, parentAbsY + node.top)`.
33
+ *
34
+ * @internal
35
+ */
36
+ export declare function roundLayoutSubtree(node: Node, parentAbsX: number, parentAbsY: number): void;
20
37
  //# sourceMappingURL=round.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"round.d.ts","sourceRoot":"","sources":["../../src/algorithm/round.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AASvC,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAI5C"}
1
+ {"version":3,"file":"round.d.ts","sourceRoot":"","sources":["../../src/algorithm/round.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AASvC,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAI5C;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAqB3F"}