@kgdiff/viewer 0.2.0 → 0.4.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.
Files changed (78) hide show
  1. package/README.md +48 -6
  2. package/dist/controller.d.ts +63 -14
  3. package/dist/controller.d.ts.map +1 -1
  4. package/dist/controller.js +308 -54
  5. package/dist/controller.js.map +1 -1
  6. package/dist/element.d.ts +17 -4
  7. package/dist/element.d.ts.map +1 -1
  8. package/dist/element.js +199 -26
  9. package/dist/element.js.map +1 -1
  10. package/dist/framing.d.ts +20 -1
  11. package/dist/framing.d.ts.map +1 -1
  12. package/dist/framing.js +49 -0
  13. package/dist/framing.js.map +1 -1
  14. package/dist/hash-sync.d.ts +4 -2
  15. package/dist/hash-sync.d.ts.map +1 -1
  16. package/dist/hash-sync.js +21 -5
  17. package/dist/hash-sync.js.map +1 -1
  18. package/dist/i18n.d.ts +7 -7
  19. package/dist/i18n.d.ts.map +1 -1
  20. package/dist/i18n.js +14 -14
  21. package/dist/i18n.js.map +1 -1
  22. package/dist/index.d.ts +66 -6
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js.map +1 -1
  25. package/dist/keyboard.d.ts +6 -4
  26. package/dist/keyboard.d.ts.map +1 -1
  27. package/dist/keyboard.js +6 -5
  28. package/dist/keyboard.js.map +1 -1
  29. package/dist/prefs.d.ts +13 -1
  30. package/dist/prefs.d.ts.map +1 -1
  31. package/dist/prefs.js +30 -3
  32. package/dist/prefs.js.map +1 -1
  33. package/dist/standalone/kgdiff-viewer.js +4 -4
  34. package/dist/styles.d.ts.map +1 -1
  35. package/dist/styles.js +84 -61
  36. package/dist/styles.js.map +1 -1
  37. package/dist/ui/context.d.ts +2 -0
  38. package/dist/ui/context.d.ts.map +1 -1
  39. package/dist/ui/context.js.map +1 -1
  40. package/dist/ui/dock.d.ts +17 -0
  41. package/dist/ui/dock.d.ts.map +1 -0
  42. package/dist/ui/dock.js +151 -0
  43. package/dist/ui/dock.js.map +1 -0
  44. package/dist/ui/header.d.ts +7 -2
  45. package/dist/ui/header.d.ts.map +1 -1
  46. package/dist/ui/header.js +24 -133
  47. package/dist/ui/header.js.map +1 -1
  48. package/dist/ui/popovers.d.ts.map +1 -1
  49. package/dist/ui/popovers.js +3 -2
  50. package/dist/ui/popovers.js.map +1 -1
  51. package/dist/ui/sidebar.d.ts.map +1 -1
  52. package/dist/ui/sidebar.js +2 -1
  53. package/dist/ui/sidebar.js.map +1 -1
  54. package/dist/ui/stage.d.ts +8 -0
  55. package/dist/ui/stage.d.ts.map +1 -1
  56. package/dist/ui/stage.js +66 -93
  57. package/dist/ui/stage.js.map +1 -1
  58. package/dist/ui/swatch.d.ts +7 -0
  59. package/dist/ui/swatch.d.ts.map +1 -0
  60. package/dist/ui/swatch.js +26 -0
  61. package/dist/ui/swatch.js.map +1 -0
  62. package/package.json +6 -6
  63. package/src/controller.ts +332 -56
  64. package/src/element.ts +220 -29
  65. package/src/framing.ts +65 -1
  66. package/src/hash-sync.ts +20 -6
  67. package/src/i18n.ts +15 -14
  68. package/src/index.ts +65 -7
  69. package/src/keyboard.ts +12 -6
  70. package/src/prefs.ts +45 -5
  71. package/src/styles.ts +84 -61
  72. package/src/ui/context.ts +2 -0
  73. package/src/ui/dock.ts +198 -0
  74. package/src/ui/header.ts +38 -168
  75. package/src/ui/popovers.ts +3 -2
  76. package/src/ui/sidebar.ts +2 -1
  77. package/src/ui/stage.ts +88 -112
  78. package/src/ui/swatch.ts +31 -0
package/dist/element.js CHANGED
@@ -9,19 +9,44 @@ import { formatHash, parseHash } from './hash-sync.js';
9
9
  import { detectLocale, translate, translator } from './i18n.js';
10
10
  import { isTypingTarget, keyAction } from './keyboard.js';
11
11
  import { assertPayload } from './payload.js';
12
- import { THEME_PREFERENCES, toLocale, toMode, toPalette, toTheme } from './prefs.js';
12
+ import { DEFAULT_LOOP_DELAY, LEGACY_CHANGES_MODE, THEME_PREFERENCES, toChrome, toDelay, toLegend, toLocale, toMode, toPalette, toScope, toTheme, } from './prefs.js';
13
13
  import { defaultStorage } from './review-store.js';
14
14
  import { STYLES, themeVariables } from './styles.js';
15
15
  import { Header } from './ui/header.js';
16
16
  import { HelpDialog, Menu } from './ui/popovers.js';
17
17
  import { Sidebar } from './ui/sidebar.js';
18
18
  import { Stage } from './ui/stage.js';
19
- /** Below this width the sidebar becomes a bottom sheet and the mode control shows icons. */
19
+ /** Below this width the sidebar becomes a bottom sheet. */
20
20
  export const COMPACT_WIDTH = 760;
21
- /** Below this width the header drops the diffstat pills and version tags. */
21
+ /** Below this width the title drops the version tags. */
22
22
  const NARROW_WIDTH = 1100;
23
- const OBSERVED = ['mode', 'theme', 'palette', 'locale', 'sidebar', 'sync-hash'];
24
- const UPGRADED = ['mode', 'theme', 'palette', 'locale', 'payload'];
23
+ const OBSERVED = [
24
+ 'mode',
25
+ 'scope',
26
+ 'theme',
27
+ 'palette',
28
+ 'locale',
29
+ 'sidebar',
30
+ 'sync-hash',
31
+ 'chrome',
32
+ 'legend',
33
+ 'loop',
34
+ 'loop-delay',
35
+ 'pause-on-hover',
36
+ ];
37
+ const UPGRADED = [
38
+ 'mode',
39
+ 'scope',
40
+ 'theme',
41
+ 'palette',
42
+ 'locale',
43
+ 'chrome',
44
+ 'legend',
45
+ 'loop',
46
+ 'loopDelay',
47
+ 'pauseOnHover',
48
+ 'payload',
49
+ ];
25
50
  /** Keys the page itself scrolls with: never taken at document level. */
26
51
  const PAGE_KEYS = new Set([
27
52
  'ArrowUp',
@@ -84,6 +109,8 @@ export class KgdiffViewer extends HTMLElement {
84
109
  #cleanup = [];
85
110
  #lastHash = '';
86
111
  #upgraded = false;
112
+ /** A mouse or pen rests on the graph (holds a looping replay with `pause-on-hover`). */
113
+ #pointerOver = false;
87
114
  constructor() {
88
115
  super();
89
116
  this.#shadow = this.attachShadow({ mode: 'open' });
@@ -93,13 +120,14 @@ export class KgdiffViewer extends HTMLElement {
93
120
  this.#emit('kgdiff-select', { hunk, node });
94
121
  this.#writeHash();
95
122
  },
96
- mode: (mode) => {
97
- this.#emit('kgdiff-mode', { mode });
123
+ mode: (mode, scope) => {
124
+ this.#emit('kgdiff-mode', { mode, scope });
98
125
  this.#writeHash();
99
126
  },
100
127
  review: (hunk, reviewed, progress) => this.#emit('kgdiff-review', { hunk, reviewed, progress }),
101
128
  error: (error) => this.#emit('kgdiff-error', { error }),
102
129
  announce: (text) => this.#announce(text),
130
+ replayEnd: (loop) => this.#emit('kgdiff-replay-end', { loop }),
103
131
  };
104
132
  this.controller = new ViewerController(host, {
105
133
  now: () => (typeof performance !== 'undefined' ? performance.now() : Date.now()),
@@ -137,8 +165,11 @@ export class KgdiffViewer extends HTMLElement {
137
165
  // The graph takes keyboard focus (shortcuts apply where focus is), also on click.
138
166
  const canvas = ui.stage.canvasHost.querySelector('canvas');
139
167
  if (canvas) {
140
- canvas.tabIndex = 0;
141
- const focusCanvas = () => canvas.focus({ preventScroll: true });
168
+ canvas.tabIndex = this.chrome === 'none' ? -1 : 0;
169
+ const focusCanvas = () => {
170
+ if (this.chrome !== 'none')
171
+ canvas.focus({ preventScroll: true });
172
+ };
142
173
  canvas.addEventListener('pointerdown', focusCanvas);
143
174
  this.#cleanup.push(() => canvas.removeEventListener('pointerdown', focusCanvas));
144
175
  }
@@ -154,7 +185,7 @@ export class KgdiffViewer extends HTMLElement {
154
185
  window.addEventListener('hashchange', onHash);
155
186
  this.#cleanup.push(() => window.removeEventListener('hashchange', onHash));
156
187
  this.controller.setChrome(() => ui.stage.chromeLayout());
157
- document.fonts?.ready?.then(() => this.#ui?.header.layout()).catch(() => undefined);
188
+ document.fonts?.ready?.then(() => this.#ui?.stage.layout()).catch(() => undefined);
158
189
  this.#readHash();
159
190
  this.#render(new Set([
160
191
  'status',
@@ -168,6 +199,7 @@ export class KgdiffViewer extends HTMLElement {
168
199
  'focus',
169
200
  'swipe',
170
201
  'replay',
202
+ 'overview',
171
203
  ]));
172
204
  }
173
205
  disconnectedCallback() {
@@ -177,12 +209,16 @@ export class KgdiffViewer extends HTMLElement {
177
209
  for (const fn of this.#cleanup.splice(0))
178
210
  fn();
179
211
  this.controller.detach();
212
+ // Moved while hovered: no pointerleave follows.
213
+ this.#pointerOver = false;
214
+ this.#applyHold();
180
215
  }
181
216
  attributeChangedCallback(name, _old, value) {
182
217
  if (this.#reflecting)
183
218
  return;
184
219
  switch (name) {
185
220
  case 'mode':
221
+ case 'scope':
186
222
  case 'theme':
187
223
  case 'palette':
188
224
  case 'locale':
@@ -195,25 +231,53 @@ export class KgdiffViewer extends HTMLElement {
195
231
  if (value !== null)
196
232
  this.#readHash();
197
233
  break;
234
+ case 'chrome':
235
+ case 'legend':
236
+ this.#applyChrome();
237
+ break;
238
+ case 'loop':
239
+ case 'loop-delay':
240
+ this.controller.setLoop(this.loop ? this.loopDelay : null);
241
+ this.#applyHold();
242
+ break;
243
+ case 'pause-on-hover':
244
+ this.#applyHold();
245
+ break;
198
246
  default:
199
247
  break;
200
248
  }
201
249
  }
202
250
  /**
203
251
  * Apply a preference from an attribute or a property. Valid values are explicit (a report's
204
- * `view` does not override them); invalid ones fall back to the default (`overlay`, `auto`,
205
- * `default`, the browser's language). Properties reflect the normalized value.
252
+ * `view` does not override them); invalid ones fall back to the default (`overlay`, `all`,
253
+ * `auto`, `default`, the browser's language). Properties reflect the normalized value; the
254
+ * legacy mode `changes` reflects as `overlay` + scope `changes`.
206
255
  */
207
256
  #applyPreference(name, raw, reflect) {
208
257
  const c = this.controller;
258
+ // `mode="changes"` is rewritten to the attribute pair it stands for.
259
+ const legacy = name === 'mode' && raw === LEGACY_CHANGES_MODE;
209
260
  let value;
210
261
  switch (name) {
211
262
  case 'mode': {
263
+ if (legacy) {
264
+ c.explicit.add('scope');
265
+ c.setView('overlay', 'changes');
266
+ value = 'overlay';
267
+ break;
268
+ }
212
269
  const v = toMode(raw);
213
270
  c.setMode(v ?? 'overlay');
214
271
  value = v;
215
272
  break;
216
273
  }
274
+ case 'scope': {
275
+ const v = toScope(raw);
276
+ c.setScope(v ?? 'all');
277
+ // A locked scope stays `changes`: the attribute says what is shown.
278
+ value = v === null ? null : c.scope;
279
+ break;
280
+ }
217
281
  case 'theme': {
218
282
  const v = toTheme(raw);
219
283
  c.setThemePreference(v ?? 'auto');
@@ -239,8 +303,10 @@ export class KgdiffViewer extends HTMLElement {
239
303
  c.explicit.delete(name);
240
304
  else
241
305
  c.explicit.add(name);
242
- if (reflect)
306
+ if (reflect || legacy)
243
307
  this.#reflect(name, value);
308
+ if (legacy)
309
+ this.#reflect('scope', c.scope);
244
310
  }
245
311
  // ─── Properties ───────────────────────────────────────────────────────────
246
312
  get mode() {
@@ -249,6 +315,12 @@ export class KgdiffViewer extends HTMLElement {
249
315
  set mode(value) {
250
316
  this.#applyPreference('mode', value, true);
251
317
  }
318
+ get scope() {
319
+ return this.controller.scope;
320
+ }
321
+ set scope(value) {
322
+ this.#applyPreference('scope', value, true);
323
+ }
252
324
  get theme() {
253
325
  return this.controller.themePreference;
254
326
  }
@@ -267,6 +339,46 @@ export class KgdiffViewer extends HTMLElement {
267
339
  set locale(value) {
268
340
  this.#applyPreference('locale', value, true);
269
341
  }
342
+ get chrome() {
343
+ return toChrome(this.getAttribute('chrome')) ?? 'full';
344
+ }
345
+ set chrome(value) {
346
+ this.#reflect('chrome', toChrome(value) === 'none' ? 'none' : null);
347
+ this.#applyChrome();
348
+ }
349
+ get legend() {
350
+ return toLegend(this.getAttribute('legend')) ?? 'auto';
351
+ }
352
+ set legend(value) {
353
+ const v = toLegend(value);
354
+ this.#reflect('legend', v === 'auto' ? null : v);
355
+ this.#applyChrome();
356
+ }
357
+ get loop() {
358
+ return this.hasAttribute('loop');
359
+ }
360
+ set loop(value) {
361
+ this.toggleAttribute('loop', Boolean(value));
362
+ }
363
+ get loopDelay() {
364
+ return toDelay(this.getAttribute('loop-delay')) ?? DEFAULT_LOOP_DELAY;
365
+ }
366
+ set loopDelay(value) {
367
+ const v = toDelay(value);
368
+ if (v === null)
369
+ this.removeAttribute('loop-delay');
370
+ else
371
+ this.setAttribute('loop-delay', String(v));
372
+ }
373
+ get pauseOnHover() {
374
+ return this.getAttribute('pause-on-hover') !== 'false';
375
+ }
376
+ set pauseOnHover(value) {
377
+ if (value)
378
+ this.removeAttribute('pause-on-hover');
379
+ else
380
+ this.setAttribute('pause-on-hover', 'false');
381
+ }
270
382
  get payload() {
271
383
  return this.#currentPayload;
272
384
  }
@@ -306,8 +418,8 @@ export class KgdiffViewer extends HTMLElement {
306
418
  pause() {
307
419
  this.controller.pause();
308
420
  }
309
- fit() {
310
- return this.controller.fit();
421
+ fit(options) {
422
+ return this.controller.fit(options);
311
423
  }
312
424
  exportDelta() {
313
425
  const diff = this.controller.diff;
@@ -364,6 +476,34 @@ export class KgdiffViewer extends HTMLElement {
364
476
  ui.sidebar.setOpen(this.#sidebarOpen);
365
477
  ui.header.setSidebarState(this.#sidebarOpen);
366
478
  }
479
+ /**
480
+ * `chrome` and `legend`: what the stage shows, whether clicks select, whether the view stays
481
+ * fitted. The CSS hides the rest (`.root[data-chrome="none"]`).
482
+ */
483
+ #applyChrome() {
484
+ const bare = this.chrome === 'none';
485
+ const c = this.controller;
486
+ c.autoFit = bare;
487
+ c.selectOnClick = !bare;
488
+ c.setLabelsInside(bare);
489
+ const ui = this.#ui;
490
+ if (!ui)
491
+ return;
492
+ ui.root.dataset.chrome = this.chrome;
493
+ const legend = this.legend;
494
+ ui.stage.setChrome(legend === 'auto' ? (bare ? 'mini' : 'full') : legend, !bare);
495
+ const canvas = ui.stage.canvasHost.querySelector('canvas');
496
+ if (canvas)
497
+ canvas.tabIndex = bare ? -1 : 0;
498
+ if (bare) {
499
+ ui.help.hide();
500
+ this.#toggleMenu(false);
501
+ }
502
+ }
503
+ /** Hold a looping replay while the pointer is over the graph (`pause-on-hover`). */
504
+ #applyHold() {
505
+ this.controller.hold(this.#pointerOver && this.loop && this.pauseOnHover);
506
+ }
367
507
  #build() {
368
508
  const style = h('style', { text: STYLES });
369
509
  const vars = h('style');
@@ -374,6 +514,9 @@ export class KgdiffViewer extends HTMLElement {
374
514
  setMode: (mode) => {
375
515
  this.controller.setMode(mode);
376
516
  },
517
+ toggleScope: () => {
518
+ this.controller.toggleScope();
519
+ },
377
520
  setThemePreference: (pref) => {
378
521
  this.theme = pref;
379
522
  },
@@ -395,7 +538,10 @@ export class KgdiffViewer extends HTMLElement {
395
538
  const menu = new Menu(ctx);
396
539
  const help = new HelpDialog(ctx);
397
540
  const live = h('div', { class: 'sr-only', 'aria-live': 'polite', 'aria-atomic': 'true' });
398
- const root = h('div', { class: 'root' }, header.el, h('div', { class: 'body' }, stage.el, sidebar.el), menu.el, help.el, live);
541
+ // The title and the actions float over the canvas; the menu drops from the actions.
542
+ header.attachMenu(menu.el);
543
+ stage.el.appendChild(header.el);
544
+ const root = h('div', { class: 'root' }, h('div', { class: 'body' }, stage.el, sidebar.el), help.el, live);
399
545
  this.#shadow.append(style, vars, root);
400
546
  this.#ui = { root, vars, header, stage, sidebar, menu, help, live };
401
547
  // Close the menu on outside clicks.
@@ -406,7 +552,16 @@ export class KgdiffViewer extends HTMLElement {
406
552
  if (!path.includes(menu.el) && !path.includes(header.menuButton))
407
553
  this.#toggleMenu(false);
408
554
  });
555
+ const hover = (over) => (e) => {
556
+ if (e.pointerType === 'touch')
557
+ return;
558
+ this.#pointerOver = over;
559
+ this.#applyHold();
560
+ };
561
+ stage.el.addEventListener('pointerenter', hover(true));
562
+ stage.el.addEventListener('pointerleave', hover(false));
409
563
  this.#applySidebar();
564
+ this.#applyChrome();
410
565
  }
411
566
  /** Render, never throwing: a failure shows the error state with safe appearance defaults. */
412
567
  #render(topics) {
@@ -429,8 +584,10 @@ export class KgdiffViewer extends HTMLElement {
429
584
  #renderTopics(topics) {
430
585
  const ui = this.#ui;
431
586
  const c = this.controller;
432
- if (topics.has('mode'))
587
+ if (topics.has('mode')) {
433
588
  this.#reflect('mode', c.mode);
589
+ this.#reflect('scope', c.scope);
590
+ }
434
591
  if (topics.has('theme')) {
435
592
  this.#reflect('theme', c.themePreference === 'auto' && !this.hasAttribute('theme') ? null : c.themePreference);
436
593
  }
@@ -452,8 +609,10 @@ export class KgdiffViewer extends HTMLElement {
452
609
  ui.header.update(topics);
453
610
  ui.sidebar.update(topics);
454
611
  ui.stage.update(topics);
455
- if (topics.has('mode') || topics.has('status'))
612
+ if (topics.has('mode') || topics.has('status')) {
456
613
  ui.root.dataset.mode = c.mode;
614
+ ui.root.dataset.scope = c.scope;
615
+ }
457
616
  }
458
617
  #toggleSidebar(open) {
459
618
  const next = open ?? !this.#sidebarOpen;
@@ -505,20 +664,23 @@ export class KgdiffViewer extends HTMLElement {
505
664
  this.#compact = compact;
506
665
  ui.root.dataset.compact = String(compact);
507
666
  }
508
- ui.header.layout();
667
+ ui.stage.layout();
509
668
  ui.sidebar.renderWindow();
510
669
  if (compact)
511
670
  ui.sidebar.syncSheet();
512
671
  this.controller.layoutChanged();
513
672
  });
514
673
  ro.observe(this);
674
+ // The canvas also changes size without the element (chrome shown or hidden).
675
+ if (this.#ui)
676
+ ro.observe(this.#ui.stage.el);
515
677
  this.#cleanup.push(() => ro.disconnect());
516
678
  }
517
679
  #onKeyDown(e) {
518
680
  if (e.defaultPrevented || e.isComposing)
519
681
  return;
520
682
  const ui = this.#ui;
521
- if (!ui)
683
+ if (!ui || this.chrome === 'none')
522
684
  return;
523
685
  const path = e.composedPath();
524
686
  if (!path.includes(this)) {
@@ -544,7 +706,7 @@ export class KgdiffViewer extends HTMLElement {
544
706
  if (isTypingTarget(target))
545
707
  return;
546
708
  const c = this.controller;
547
- const action = keyAction(e, c.mode);
709
+ const action = keyAction(e, c.mode, c.scope);
548
710
  if (!action)
549
711
  return;
550
712
  // Enter / Space on a focused control activate that control.
@@ -560,6 +722,9 @@ export class KgdiffViewer extends HTMLElement {
560
722
  case 'mode':
561
723
  c.setMode(action.mode);
562
724
  break;
725
+ case 'scope':
726
+ c.toggleScope();
727
+ break;
563
728
  case 'next':
564
729
  c.next();
565
730
  break;
@@ -628,10 +793,14 @@ export class KgdiffViewer extends HTMLElement {
628
793
  this.#lastHash = location.hash;
629
794
  if (!state)
630
795
  return;
631
- if (state.mode) {
632
- // A deep link outranks the large-graph default and a report's preferred mode.
633
- this.controller.explicit.add('mode');
634
- this.controller.setMode(state.mode);
796
+ if (state.mode || state.scope) {
797
+ // A deep link outranks the large-graph default and a report's preferred view.
798
+ const c = this.controller;
799
+ if (state.mode)
800
+ c.explicit.add('mode');
801
+ if (state.scope)
802
+ c.explicit.add('scope');
803
+ c.setView(state.mode ?? c.mode, state.scope ?? c.scope);
635
804
  }
636
805
  if (state.hunk)
637
806
  this.controller.selectHunkById(state.hunk, { fly: true });
@@ -641,7 +810,11 @@ export class KgdiffViewer extends HTMLElement {
641
810
  return;
642
811
  const c = this.controller;
643
812
  const hunk = c.selectedHunk >= 0 ? c.scene?.hunks[c.selectedHunk]?.id : undefined;
644
- const hash = formatHash({ ...(hunk !== undefined ? { hunk } : {}), mode: c.mode });
813
+ const hash = formatHash({
814
+ ...(hunk !== undefined ? { hunk } : {}),
815
+ mode: c.mode,
816
+ scope: c.scope,
817
+ });
645
818
  if (hash === location.hash)
646
819
  return;
647
820
  this.#lastHash = hash;
@@ -1 +1 @@
1
- {"version":3,"file":"element.js","sourceRoot":"","sources":["../src/element.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAc,WAAW,EAAe,MAAM,cAAc,CAAC;AAEpE,OAAO,EAAmC,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACpF,OAAO,EAAE,CAAC,EAAE,MAAM,UAAU,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAShE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrF,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAErD,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,4FAA4F;AAC5F,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAAC;AACjC,6EAA6E;AAC7E,MAAM,YAAY,GAAG,IAAI,CAAC;AAE1B,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,CAAU,CAAC;AACzF,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAU,CAAC;AAE5E,wEAAwE;AACxE,MAAM,SAAS,GAAwB,IAAI,GAAG,CAAC;IAC7C,SAAS;IACT,WAAW;IACX,WAAW;IACX,YAAY;IACZ,MAAM;IACN,KAAK;IACL,QAAQ;IACR,UAAU;IACV,GAAG;IACH,UAAU;CACX,CAAC,CAAC;AAEH,kGAAkG;AAClG,MAAM,SAAS,GAAmB,EAAE,CAAC;AAErC,SAAS,UAAU,CAAI,KAAQ;IAC7B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3E,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;YAAE,UAAU,CAAC,CAAC,CAAC,CAAC;QACpD,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,KAAK,CAAC,KAAa;IAC1B,OAAO,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,UAAU;QAC7E,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC;QAC1B,CAAC,CAAC,IAAI,CAAC;AACX,CAAC;AAED;;;GAGG;AACH,SAAS,SAAS;IAChB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,IAAI,IAAI,GAAG,KAAK,CAAC;QACjB,MAAM,MAAM,GAAG,GAAS,EAAE;YACxB,IAAI,IAAI;gBAAE,OAAO;YACjB,IAAI,GAAG,IAAI,CAAC;YACZ,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC;QACF,IAAI,OAAO,qBAAqB,KAAK,UAAU,EAAE,CAAC;YAChD,qBAAqB,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;QACrD,CAAC;QACD,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,OAAO,YAAa,SAAQ,WAAW;IAC3C,MAAM,KAAK,kBAAkB;QAC3B,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,gBAAgB;IACP,UAAU,CAAmB;IAC7B,OAAO,CAAa;IAC7B,GAAG,GASQ,IAAI,CAAC;IAChB,eAAe,GAAyB,IAAI,CAAC;IAC7C,aAAa,GAAG,KAAK,CAAC;IACtB,WAAW,GAAG,KAAK,CAAC;IACpB,QAAQ,GAAG,KAAK,CAAC;IACR,QAAQ,GAAmB,EAAE,CAAC;IACvC,SAAS,GAAG,EAAE,CAAC;IACf,SAAS,GAAG,KAAK,CAAC;IAElB;QACE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QACnD,MAAM,IAAI,GAAmB;YAC3B,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,CAAC;YACvD,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;gBACrB,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC5C,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,CAAC;YACD,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE;gBACb,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;gBACpC,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,CAAC;YACD,MAAM,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,CACnC,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;YAC3D,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,CAAC;YACvD,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SACzC,CAAC;QACF,IAAI,CAAC,UAAU,GAAG,IAAI,gBAAgB,CAAC,IAAI,EAAE;YAC3C,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,OAAO,WAAW,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YAChF,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE,CACnB,OAAO,qBAAqB,KAAK,UAAU,CAAC,CAAC,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7E,WAAW,EAAE,CAAC,EAAE,EAAE,EAAE;gBAClB,IAAI,OAAO,oBAAoB,KAAK,UAAU;oBAAE,oBAAoB,CAAC,EAAE,CAAC,CAAC;YAC3E,CAAC;YACD,YAAY,EAAE,SAAS;YACvB,OAAO,EAAE,cAAc,EAAE;SAC1B,CAAC,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,IAAI,YAAY,EAAE,CAAC;QACjF,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED,6EAA6E;IAE7E,iBAAiB;QACf,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,qFAAqF;YACrF,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;gBAC5B,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;oBAC9B,MAAM,KAAK,GAAI,IAA2C,CAAC,IAAI,CAAC,CAAC;oBACjE,OAAQ,IAA2C,CAAC,IAAI,CAAC,CAAC;oBACzD,IAA2C,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;gBAC7D,CAAC;YACH,CAAC;QACH,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,GAAG;YAAE,IAAI,CAAC,MAAM,EAAE,CAAC;QAC7B,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrB,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;QACpB,IAAI,CAAC,EAAE;YAAE,OAAO;QAChB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAClE,kFAAkF;QAClF,MAAM,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC3D,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC;YACpB,MAAM,WAAW,GAAG,GAAS,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;YACtE,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;YACpD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC;QACnF,CAAC;QACD,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,MAAM,KAAK,GAAG,CAAC,CAAgB,EAAQ,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC7D,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC5C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;QACzE,MAAM,SAAS,GAAG,CAAC,CAAe,EAAQ,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC/E,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAC9C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;QAC3E,MAAM,MAAM,GAAG,GAAS,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QAC5C,MAAM,CAAC,gBAAgB,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QAC9C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;QAC3E,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;QACzD,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACpF,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,CAAC,OAAO,CACV,IAAI,GAAG,CAAQ;YACb,QAAQ;YACR,MAAM;YACN,MAAM;YACN,OAAO;YACP,QAAQ;YACR,SAAS;YACT,QAAQ;YACR,WAAW;YACX,OAAO;YACP,OAAO;YACP,QAAQ;SACT,CAAC,CACH,CAAC;IACJ,CAAC;IAED,oBAAoB;QAClB,MAAM,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,CAAC;YAAE,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACnC,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;YAAE,EAAE,EAAE,CAAC;QAC/C,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;IAC3B,CAAC;IAED,wBAAwB,CAAC,IAAY,EAAE,IAAmB,EAAE,KAAoB;QAC9E,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO;QAC7B,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,MAAM,CAAC;YACZ,KAAK,OAAO,CAAC;YACb,KAAK,SAAS,CAAC;YACf,KAAK,QAAQ;gBACX,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;gBAC1C,MAAM;YACR,KAAK,SAAS;gBACZ,IAAI,CAAC,aAAa,EAAE,CAAC;gBACrB,MAAM;YACR,KAAK,WAAW;gBACd,IAAI,KAAK,KAAK,IAAI;oBAAE,IAAI,CAAC,SAAS,EAAE,CAAC;gBACrC,MAAM;YACR;gBACE,MAAM;QACV,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,gBAAgB,CACd,IAA6C,EAC7C,GAAY,EACZ,OAAgB;QAEhB,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;QAC1B,IAAI,KAAoB,CAAC;QACzB,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,MAAM,EAAE,CAAC;gBACZ,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;gBACtB,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC;gBAC1B,KAAK,GAAG,CAAC,CAAC;gBACV,MAAM;YACR,CAAC;YACD,KAAK,OAAO,EAAE,CAAC;gBACb,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;gBACvB,CAAC,CAAC,kBAAkB,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC;gBAClC,KAAK,GAAG,CAAC,CAAC;gBACV,MAAM;YACR,CAAC;YACD,KAAK,SAAS,EAAE,CAAC;gBACf,MAAM,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;gBACzB,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC;gBAC7B,KAAK,GAAG,CAAC,CAAC;gBACV,MAAM;YACR,CAAC;YACD,KAAK,QAAQ,EAAE,CAAC;gBACd,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;gBACxB,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,YAAY,EAAE,CAAC,CAAC;gBACjC,KAAK,GAAG,CAAC,CAAC;gBACV,MAAM;YACR,CAAC;YACD;gBACE,OAAO;QACX,CAAC;QACD,IAAI,KAAK,KAAK,IAAI;YAAE,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;;YACvC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1B,IAAI,OAAO;YAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;IAED,6EAA6E;IAE7E,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;IAC9B,CAAC;IAED,IAAI,IAAI,CAAC,KAAiB;QACxB,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAC7C,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC;IACzC,CAAC;IAED,IAAI,KAAK,CAAC,KAAsB;QAC9B,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;IACjC,CAAC;IAED,IAAI,OAAO,CAAC,KAAkB;QAC5B,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAChD,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;IAChC,CAAC;IAED,IAAI,MAAM,CAAC,KAAa;QACtB,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAED,IAAI,OAAO,CAAC,KAA2B;QACrC,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO;QAClD,IAAI,OAAsB,CAAC;QAC3B,IAAI,CAAC;YACH,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAc,CAAC,CAAC;YACrC,OAAO;QACT,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;YAC9C,kDAAkD;QACpD,CAAC,CAAC,CAAC;IACL,CAAC;IAED,6EAA6E;IAE7E,IAAI,CAAC,OAAoB;QACvB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;IAED,UAAU,CAAC,EAAiB;QAC1B,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,IAAI;QACF,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;IACzB,CAAC;IAED,IAAI;QACF,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;IACzB,CAAC;IAED,IAAI;QACF,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;IACzB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC;IAED,GAAG;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;IAC/B,CAAC;IAED,WAAW;QACT,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAClC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,WAAW,CAAC,eAAe,EAAE,SAAS,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC;QACtF,8DAA8D;QAC9D,OAAO,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACjD,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;IACvC,CAAC;IAED,WAAW,CAAC,MAAc,EAAE,QAAiB;QAC3C,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAChD,CAAC;IAED,oEAAoE;IACpE,SAAS,CAAC,KAAY;QACpB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED,6EAA6E;IAE7E,KAAK,CAAC,IAAY,EAAE,MAAe;QACjC,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACvF,CAAC;IAED,QAAQ,CAAC,IAAY,EAAE,KAAoB;QACzC,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,KAAK;YAAE,OAAO;QAC9C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC;YACH,IAAI,KAAK,KAAK,IAAI;gBAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;;gBAC1C,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACtC,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,SAAS,CAAC,IAAY;QACpB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC;QAC5B,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QACtB,+EAA+E;QAC/E,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAC1B,CAAC,EAAE,EAAE,CAAC,CAAC;IACT,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,QAAQ,CAAC;IACnD,CAAC;IAED,aAAa;QACX,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;QACpB,IAAI,CAAC,EAAE;YAAE,OAAO;QAChB,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACtC,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM;QACJ,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAC3C,MAAM,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;QACxB,MAAM,GAAG,GAAc;YACrB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,EAAE,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;YAC5C,IAAI,EAAE,IAAI,CAAC,OAAO;YAClB,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;gBAChB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAChC,CAAC;YACD,kBAAkB,EAAE,CAAC,IAAI,EAAE,EAAE;gBAC3B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YACpB,CAAC;YACD,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE;gBAChB,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;YACnB,CAAC;YACD,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE;gBACf,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;YAClB,CAAC;YACD,aAAa,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;YAClD,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY;YACpC,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;YAC5C,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE;YACrC,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE;SACvC,CAAC;QACF,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;QAC/B,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;QAC7B,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC;QACjC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3B,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;QACjC,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,CAAC;QAC1F,MAAM,IAAI,GAAG,CAAC,CACZ,KAAK,EACL,EAAE,KAAK,EAAE,MAAM,EAAE,EACjB,MAAM,CAAC,EAAE,EACT,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC,EACjD,IAAI,CAAC,EAAE,EACP,IAAI,CAAC,EAAE,EACP,IAAI,CACL,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,GAAG,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACpE,oCAAoC;QACpC,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE,EAAE;YACzC,IAAI,CAAC,IAAI,CAAC,IAAI;gBAAE,OAAO;YACvB,MAAM,IAAI,GAAG,CAAC,CAAC,YAAY,EAAE,CAAC;YAC9B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC;gBAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC5F,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAED,6FAA6F;IAC7F,OAAO,CAAC,MAA0B;QAChC,IAAI,CAAC;YACH,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAC3B,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC7B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;YAChD,IAAI,IAAI,CAAC,aAAa;gBAAE,OAAO;YAC/B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAC1B,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;YAC1B,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YACnB,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;YAC7B,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YACxB,CAAC,CAAC,IAAI,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAED,aAAa,CAAC,MAA0B;QACtC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;QACpB,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;QAC1B,IAAI,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QACtD,IAAI,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,QAAQ,CACX,OAAO,EACP,CAAC,CAAC,eAAe,KAAK,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CACvF,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,EAAE;YAAE,OAAO;QAChB,IAAI,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChD,EAAE,CAAC,IAAI,CAAC,WAAW,GAAG,WAAW,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;YAC7D,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,SAAS,CAAC;QACtC,CAAC;QACD,IAAI,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjD,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;YACvC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI;gBAAE,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACnC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI;gBAAE,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACrC,CAAC;QACD,IAAI,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI;YAAE,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QAC1D,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACzB,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC1B,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACxB,IAAI,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;IAChF,CAAC;IAED,cAAc,CAAC,IAAc;QAC3B,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;QACxC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QACnD,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAED,WAAW,CAAC,IAAc;QACxB,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;QACpB,IAAI,CAAC,EAAE;YAAE,OAAO;QAChB,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;QACnC,IAAI,IAAI;YAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;;YACxC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzB,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,YAAY;QACV,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAClD,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC;IAClC,CAAC;IAED,WAAW;QACT,MAAM,IAAI,GAAG,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACzD,MAAM,KAAK,GAAG,GAAS,EAAE;YACvB,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,IAAI,KAAK,CAAC,CAAC,CAAC;YACzD,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,MAAM,EAAE,OAAO,IAAI,KAAK,CAAC,CAAC;QAC7D,CAAC,CAAC;QACF,KAAK,EAAE,CAAC;QACR,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC,CAAC;gBAAE,SAAS;YACjB,CAAC,CAAC,gBAAgB,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YACtC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,mBAAmB,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;IAED,UAAU;QACR,IAAI,OAAO,cAAc,KAAK,UAAU;YAAE,OAAO;QACjD,MAAM,EAAE,GAAG,IAAI,cAAc,CAAC,GAAG,EAAE;YACjC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;YACpB,IAAI,CAAC,EAAE;gBAAE,OAAO;YAChB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;YAC/B,MAAM,OAAO,GAAG,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,aAAa,CAAC;YACnD,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,YAAY,CAAC,CAAC;YACnE,IAAI,OAAO,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC9B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;gBACxB,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;YAC5C,CAAC;YACD,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACnB,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;YAC1B,IAAI,OAAO;gBAAE,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YACpC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;QAClC,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACjB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,UAAU,CAAC,CAAgB;QACzB,IAAI,CAAC,CAAC,gBAAgB,IAAI,CAAC,CAAC,WAAW;YAAE,OAAO;QAChD,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;QACpB,IAAI,CAAC,EAAE;YAAE,OAAO;QAChB,MAAM,IAAI,GAAG,CAAC,CAAC,YAAY,EAAE,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,uFAAuF;YACvF,+DAA+D;YAC/D,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;gBAAE,OAAO;YAC3E,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC;YACtC,IAAI,MAAM,IAAI,MAAM,KAAK,QAAQ,CAAC,IAAI,IAAI,MAAM,KAAK,QAAQ,CAAC,eAAe;gBAAE,OAAO;YACtF,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC,KAAK,IAAI;gBAAE,OAAO;QACjF,CAAC;QACD,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACjC,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;gBACvB,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACf,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAC1B,CAAC;YACD,OAAO;QACT,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;QAC/B,IAAI,cAAc,CAAC,MAAM,CAAC;YAAE,OAAO;QACnC,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;QAC1B,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,4DAA4D;QAC5D,MAAM,EAAE,GAAG,MAAwB,CAAC;QACpC,IACE,CAAC,CAAC,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC;YACpC,EAAE,EAAE,OAAO,EAAE,CAAC,4DAA4D,CAAC,EAC3E,CAAC;YACD,OAAO;QACT,CAAC;QACD,IAAI,CAAC,CAAC,MAAM,KAAK,OAAO,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC;YACvF,OAAO;QACT,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;YACpB,KAAK,MAAM;gBACT,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBACvB,MAAM;YACR,KAAK,MAAM;gBACT,CAAC,CAAC,IAAI,EAAE,CAAC;gBACT,MAAM;YACR,KAAK,MAAM;gBACT,CAAC,CAAC,IAAI,EAAE,CAAC;gBACT,MAAM;YACR,KAAK,OAAO;gBACV,CAAC,CAAC,KAAK,EAAE,CAAC;gBACV,MAAM;YACR,KAAK,MAAM;gBACT,CAAC,CAAC,IAAI,EAAE,CAAC;gBACT,MAAM;YACR,KAAK,KAAK;gBACR,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,MAAM;YACR,KAAK,QAAQ;gBACX,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE;oBAAE,CAAC,CAAC,cAAc,EAAE,CAAC;gBAC7C,MAAM;YACR,KAAK,YAAY;gBACf,CAAC,CAAC,UAAU,EAAE,CAAC;gBACf,MAAM;YACR,KAAK,MAAM;gBACT,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBAC/B,MAAM;YACR,KAAK,SAAS;gBACZ,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;gBACnC,MAAM;YACR,KAAK,KAAK;gBACR,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC;gBACb,MAAM;YACR,KAAK,MAAM;gBACT,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBACzB,MAAM;YACR,KAAK,QAAQ;gBACX,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,MAAM;YACR,KAAK,QAAQ;gBACX,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,MAAM;YACR,KAAK,SAAS;gBACZ,IAAI,CAAC,cAAc,EAAE,CAAC;gBACtB,MAAM;YACR,KAAK,OAAO,EAAE,CAAC;gBACb,MAAM,CAAC,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;gBACvD,IAAI,CAAC,KAAK,GAAG,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,iBAAiB,CAAC,MAAM,CAAoB,CAAC;gBACtF,MAAM;YACR,CAAC;YACD,KAAK,MAAM;gBACT,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACf,MAAM;YACR,KAAK,QAAQ;gBACX,CAAC,CAAC,aAAa,EAAE,CAAC;gBAClB,MAAM;YACR;gBACE,MAAsB,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,6EAA6E;IAE7E,SAAS;QACP,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,OAAO,QAAQ,KAAK,WAAW;YAAE,OAAO;QAC/E,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI,CAAC,SAAS;YAAE,OAAO;QAC7C,MAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC;QAC/B,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACf,8EAA8E;YAC9E,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACrC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;QACD,IAAI,KAAK,CAAC,IAAI;YAAE,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5E,CAAC;IAED,UAAU;QACR,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,OAAO,QAAQ,KAAK,WAAW;YAAE,OAAO;QAC/E,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;QAC1B,MAAM,IAAI,GAAG,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QAClF,MAAM,IAAI,GAAG,UAAU,CAAC,EAAE,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACnF,IAAI,IAAI,KAAK,QAAQ,CAAC,IAAI;YAAE,OAAO;QACnC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC;YACH,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;QAChD,CAAC;QAAC,MAAM,CAAC;YACP,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;QACvB,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"element.js","sourceRoot":"","sources":["../src/element.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAc,WAAW,EAAe,MAAM,cAAc,CAAC;AAEpE,OAAO,EAAmC,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACpF,OAAO,EAAE,CAAC,EAAE,MAAM,UAAU,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAahE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,SAAS,EACT,OAAO,EACP,OAAO,GACR,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAErD,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,2DAA2D;AAC3D,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAAC;AACjC,yDAAyD;AACzD,MAAM,YAAY,GAAG,IAAI,CAAC;AAE1B,MAAM,QAAQ,GAAG;IACf,MAAM;IACN,OAAO;IACP,OAAO;IACP,SAAS;IACT,QAAQ;IACR,SAAS;IACT,WAAW;IACX,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,YAAY;IACZ,gBAAgB;CACR,CAAC;AACX,MAAM,QAAQ,GAAG;IACf,MAAM;IACN,OAAO;IACP,OAAO;IACP,SAAS;IACT,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,WAAW;IACX,cAAc;IACd,SAAS;CACD,CAAC;AAEX,wEAAwE;AACxE,MAAM,SAAS,GAAwB,IAAI,GAAG,CAAC;IAC7C,SAAS;IACT,WAAW;IACX,WAAW;IACX,YAAY;IACZ,MAAM;IACN,KAAK;IACL,QAAQ;IACR,UAAU;IACV,GAAG;IACH,UAAU;CACX,CAAC,CAAC;AAEH,kGAAkG;AAClG,MAAM,SAAS,GAAmB,EAAE,CAAC;AAErC,SAAS,UAAU,CAAI,KAAQ;IAC7B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3E,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;YAAE,UAAU,CAAC,CAAC,CAAC,CAAC;QACpD,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,KAAK,CAAC,KAAa;IAC1B,OAAO,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,UAAU;QAC7E,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC;QAC1B,CAAC,CAAC,IAAI,CAAC;AACX,CAAC;AAED;;;GAGG;AACH,SAAS,SAAS;IAChB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,IAAI,IAAI,GAAG,KAAK,CAAC;QACjB,MAAM,MAAM,GAAG,GAAS,EAAE;YACxB,IAAI,IAAI;gBAAE,OAAO;YACjB,IAAI,GAAG,IAAI,CAAC;YACZ,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC;QACF,IAAI,OAAO,qBAAqB,KAAK,UAAU,EAAE,CAAC;YAChD,qBAAqB,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;QACrD,CAAC;QACD,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,OAAO,YAAa,SAAQ,WAAW;IAC3C,MAAM,KAAK,kBAAkB;QAC3B,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,gBAAgB;IACP,UAAU,CAAmB;IAC7B,OAAO,CAAa;IAC7B,GAAG,GASQ,IAAI,CAAC;IAChB,eAAe,GAAyB,IAAI,CAAC;IAC7C,aAAa,GAAG,KAAK,CAAC;IACtB,WAAW,GAAG,KAAK,CAAC;IACpB,QAAQ,GAAG,KAAK,CAAC;IACR,QAAQ,GAAmB,EAAE,CAAC;IACvC,SAAS,GAAG,EAAE,CAAC;IACf,SAAS,GAAG,KAAK,CAAC;IAClB,wFAAwF;IACxF,YAAY,GAAG,KAAK,CAAC;IAErB;QACE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QACnD,MAAM,IAAI,GAAmB;YAC3B,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,CAAC;YACvD,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;gBACrB,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC5C,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,CAAC;YACD,IAAI,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;gBACpB,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC3C,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,CAAC;YACD,MAAM,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,CACnC,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;YAC3D,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,CAAC;YACvD,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;YACxC,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE,EAAE,IAAI,EAAE,CAAC;SAC/D,CAAC;QACF,IAAI,CAAC,UAAU,GAAG,IAAI,gBAAgB,CAAC,IAAI,EAAE;YAC3C,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,OAAO,WAAW,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YAChF,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE,CACnB,OAAO,qBAAqB,KAAK,UAAU,CAAC,CAAC,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7E,WAAW,EAAE,CAAC,EAAE,EAAE,EAAE;gBAClB,IAAI,OAAO,oBAAoB,KAAK,UAAU;oBAAE,oBAAoB,CAAC,EAAE,CAAC,CAAC;YAC3E,CAAC;YACD,YAAY,EAAE,SAAS;YACvB,OAAO,EAAE,cAAc,EAAE;SAC1B,CAAC,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,IAAI,YAAY,EAAE,CAAC;QACjF,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED,6EAA6E;IAE7E,iBAAiB;QACf,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,qFAAqF;YACrF,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;gBAC5B,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;oBAC9B,MAAM,KAAK,GAAI,IAA2C,CAAC,IAAI,CAAC,CAAC;oBACjE,OAAQ,IAA2C,CAAC,IAAI,CAAC,CAAC;oBACzD,IAA2C,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;gBAC7D,CAAC;YACH,CAAC;QACH,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,GAAG;YAAE,IAAI,CAAC,MAAM,EAAE,CAAC;QAC7B,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrB,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;QACpB,IAAI,CAAC,EAAE;YAAE,OAAO;QAChB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAClE,kFAAkF;QAClF,MAAM,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC3D,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAClD,MAAM,WAAW,GAAG,GAAS,EAAE;gBAC7B,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM;oBAAE,MAAM,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;YACpE,CAAC,CAAC;YACF,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;YACpD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC;QACnF,CAAC;QACD,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,MAAM,KAAK,GAAG,CAAC,CAAgB,EAAQ,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC7D,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC5C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;QACzE,MAAM,SAAS,GAAG,CAAC,CAAe,EAAQ,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC/E,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAC9C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;QAC3E,MAAM,MAAM,GAAG,GAAS,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QAC5C,MAAM,CAAC,gBAAgB,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QAC9C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;QAC3E,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;QACzD,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACnF,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,CAAC,OAAO,CACV,IAAI,GAAG,CAAQ;YACb,QAAQ;YACR,MAAM;YACN,MAAM;YACN,OAAO;YACP,QAAQ;YACR,SAAS;YACT,QAAQ;YACR,WAAW;YACX,OAAO;YACP,OAAO;YACP,QAAQ;YACR,UAAU;SACX,CAAC,CACH,CAAC;IACJ,CAAC;IAED,oBAAoB;QAClB,MAAM,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,CAAC;YAAE,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACnC,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;YAAE,EAAE,EAAE,CAAC;QAC/C,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;QACzB,gDAAgD;QAChD,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IAED,wBAAwB,CAAC,IAAY,EAAE,IAAmB,EAAE,KAAoB;QAC9E,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO;QAC7B,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,MAAM,CAAC;YACZ,KAAK,OAAO,CAAC;YACb,KAAK,OAAO,CAAC;YACb,KAAK,SAAS,CAAC;YACf,KAAK,QAAQ;gBACX,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;gBAC1C,MAAM;YACR,KAAK,SAAS;gBACZ,IAAI,CAAC,aAAa,EAAE,CAAC;gBACrB,MAAM;YACR,KAAK,WAAW;gBACd,IAAI,KAAK,KAAK,IAAI;oBAAE,IAAI,CAAC,SAAS,EAAE,CAAC;gBACrC,MAAM;YACR,KAAK,QAAQ,CAAC;YACd,KAAK,QAAQ;gBACX,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,MAAM;YACR,KAAK,MAAM,CAAC;YACZ,KAAK,YAAY;gBACf,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBAC3D,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClB,MAAM;YACR,KAAK,gBAAgB;gBACnB,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClB,MAAM;YACR;gBACE,MAAM;QACV,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,gBAAgB,CACd,IAAuD,EACvD,GAAY,EACZ,OAAgB;QAEhB,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;QAC1B,qEAAqE;QACrE,MAAM,MAAM,GAAG,IAAI,KAAK,MAAM,IAAI,GAAG,KAAK,mBAAmB,CAAC;QAC9D,IAAI,KAAoB,CAAC;QACzB,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,MAAM,EAAE,CAAC;gBACZ,IAAI,MAAM,EAAE,CAAC;oBACX,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;oBACxB,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;oBAChC,KAAK,GAAG,SAAS,CAAC;oBAClB,MAAM;gBACR,CAAC;gBACD,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;gBACtB,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC;gBAC1B,KAAK,GAAG,CAAC,CAAC;gBACV,MAAM;YACR,CAAC;YACD,KAAK,OAAO,EAAE,CAAC;gBACb,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;gBACvB,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC;gBACvB,oEAAoE;gBACpE,KAAK,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;gBACpC,MAAM;YACR,CAAC;YACD,KAAK,OAAO,EAAE,CAAC;gBACb,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;gBACvB,CAAC,CAAC,kBAAkB,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC;gBAClC,KAAK,GAAG,CAAC,CAAC;gBACV,MAAM;YACR,CAAC;YACD,KAAK,SAAS,EAAE,CAAC;gBACf,MAAM,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;gBACzB,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC;gBAC7B,KAAK,GAAG,CAAC,CAAC;gBACV,MAAM;YACR,CAAC;YACD,KAAK,QAAQ,EAAE,CAAC;gBACd,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;gBACxB,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,YAAY,EAAE,CAAC,CAAC;gBACjC,KAAK,GAAG,CAAC,CAAC;gBACV,MAAM;YACR,CAAC;YACD;gBACE,OAAO;QACX,CAAC;QACD,IAAI,KAAK,KAAK,IAAI;YAAE,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;;YACvC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1B,IAAI,OAAO,IAAI,MAAM;YAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAClD,IAAI,MAAM;YAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;IAC9C,CAAC;IAED,6EAA6E;IAE7E,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;IAC9B,CAAC;IAED,IAAI,IAAI,CAAC,KAA8C;QACrD,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAC7C,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;IAC/B,CAAC;IAED,IAAI,KAAK,CAAC,KAAkB;QAC1B,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC;IACzC,CAAC;IAED,IAAI,KAAK,CAAC,KAAsB;QAC9B,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;IACjC,CAAC;IAED,IAAI,OAAO,CAAC,KAAkB;QAC5B,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAChD,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;IAChC,CAAC;IAED,IAAI,MAAM,CAAC,KAAa;QACtB,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED,IAAI,MAAM;QACR,OAAO,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,IAAI,MAAM,CAAC;IACzD,CAAC;IAED,IAAI,MAAM,CAAC,KAAmB;QAC5B,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACpE,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED,IAAI,MAAM;QACR,OAAO,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,IAAI,MAAM,CAAC;IACzD,CAAC;IAED,IAAI,MAAM,CAAC,KAAmB;QAC5B,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjD,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,IAAI,CAAC,KAAc;QACrB,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED,IAAI,SAAS;QACX,OAAO,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,IAAI,kBAAkB,CAAC;IACxE,CAAC;IAED,IAAI,SAAS,CAAC,KAAa;QACzB,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QACzB,IAAI,CAAC,KAAK,IAAI;YAAE,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;;YAC9C,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,KAAK,OAAO,CAAC;IACzD,CAAC;IAED,IAAI,YAAY,CAAC,KAAc;QAC7B,IAAI,KAAK;YAAE,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;;YAC7C,IAAI,CAAC,YAAY,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAED,IAAI,OAAO,CAAC,KAA2B;QACrC,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO;QAClD,IAAI,OAAsB,CAAC;QAC3B,IAAI,CAAC;YACH,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAc,CAAC,CAAC;YACrC,OAAO;QACT,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;YAC9C,kDAAkD;QACpD,CAAC,CAAC,CAAC;IACL,CAAC;IAED,6EAA6E;IAE7E,IAAI,CAAC,OAAoB;QACvB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;IAED,UAAU,CAAC,EAAiB;QAC1B,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,IAAI;QACF,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;IACzB,CAAC;IAED,IAAI;QACF,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;IACzB,CAAC;IAED,IAAI;QACF,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;IACzB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC;IAED,GAAG,CAAC,OAAoB;QACtB,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;IAED,WAAW;QACT,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAClC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,WAAW,CAAC,eAAe,EAAE,SAAS,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC;QACtF,8DAA8D;QAC9D,OAAO,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACjD,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;IACvC,CAAC;IAED,WAAW,CAAC,MAAc,EAAE,QAAiB;QAC3C,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAChD,CAAC;IAED,oEAAoE;IACpE,SAAS,CAAC,KAAY;QACpB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED,6EAA6E;IAE7E,KAAK,CAAC,IAAY,EAAE,MAAe;QACjC,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACvF,CAAC;IAED,QAAQ,CAAC,IAAY,EAAE,KAAoB;QACzC,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,KAAK;YAAE,OAAO;QAC9C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC;YACH,IAAI,KAAK,KAAK,IAAI;gBAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;;gBAC1C,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACtC,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,SAAS,CAAC,IAAY;QACpB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC;QAC5B,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QACtB,+EAA+E;QAC/E,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAC1B,CAAC,EAAE,EAAE,CAAC,CAAC;IACT,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,QAAQ,CAAC;IACnD,CAAC;IAED,aAAa;QACX,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;QACpB,IAAI,CAAC,EAAE;YAAE,OAAO;QAChB,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACtC,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC/C,CAAC;IAED;;;OAGG;IACH,YAAY;QACV,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC;QACpC,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;QAC1B,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC;QACxB,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QACxB,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;QACpB,IAAI,CAAC,EAAE;YAAE,OAAO;QAChB,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QACrC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC;QACjF,MAAM,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC3D,IAAI,MAAM;YAAE,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5C,IAAI,IAAI,EAAE,CAAC;YACT,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,oFAAoF;IACpF,UAAU;QACR,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC;IAC5E,CAAC;IAED,MAAM;QACJ,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAC3C,MAAM,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;QACxB,MAAM,GAAG,GAAc;YACrB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,EAAE,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;YAC5C,IAAI,EAAE,IAAI,CAAC,OAAO;YAClB,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;gBAChB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAChC,CAAC;YACD,WAAW,EAAE,GAAG,EAAE;gBAChB,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;YAChC,CAAC;YACD,kBAAkB,EAAE,CAAC,IAAI,EAAE,EAAE;gBAC3B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YACpB,CAAC;YACD,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE;gBAChB,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;YACnB,CAAC;YACD,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE;gBACf,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;YAClB,CAAC;YACD,aAAa,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;YAClD,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY;YACpC,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;YAC5C,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE;YACrC,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE;SACvC,CAAC;QACF,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;QAC/B,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;QAC7B,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC;QACjC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3B,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;QACjC,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,CAAC;QAC1F,oFAAoF;QACpF,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3B,KAAK,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,IAAI,GAAG,CAAC,CACZ,KAAK,EACL,EAAE,KAAK,EAAE,MAAM,EAAE,EACjB,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC,EACjD,IAAI,CAAC,EAAE,EACP,IAAI,CACL,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,GAAG,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACpE,oCAAoC;QACpC,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE,EAAE;YACzC,IAAI,CAAC,IAAI,CAAC,IAAI;gBAAE,OAAO;YACvB,MAAM,IAAI,GAAG,CAAC,CAAC,YAAY,EAAE,CAAC;YAC9B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC;gBAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC5F,CAAC,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,CAAC,IAAa,EAAE,EAAE,CAAC,CAAC,CAAe,EAAE,EAAE;YACnD,IAAI,CAAC,CAAC,WAAW,KAAK,OAAO;gBAAE,OAAO;YACtC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,CAAC,CAAC;QACF,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAAC,cAAc,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QACvD,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAAC,cAAc,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QACxD,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED,6FAA6F;IAC7F,OAAO,CAAC,MAA0B;QAChC,IAAI,CAAC;YACH,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAC3B,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC7B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;YAChD,IAAI,IAAI,CAAC,aAAa;gBAAE,OAAO;YAC/B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAC1B,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;YAC1B,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YACnB,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;YAC7B,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YACxB,CAAC,CAAC,IAAI,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAED,aAAa,CAAC,MAA0B;QACtC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;QACpB,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;QAC1B,IAAI,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACvB,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;YAC9B,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;QAClC,CAAC;QACD,IAAI,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,QAAQ,CACX,OAAO,EACP,CAAC,CAAC,eAAe,KAAK,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CACvF,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,EAAE;YAAE,OAAO;QAChB,IAAI,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChD,EAAE,CAAC,IAAI,CAAC,WAAW,GAAG,WAAW,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;YAC7D,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,SAAS,CAAC;QACtC,CAAC;QACD,IAAI,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjD,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;YACvC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI;gBAAE,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACnC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI;gBAAE,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACrC,CAAC;QACD,IAAI,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI;YAAE,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QAC1D,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACzB,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC1B,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACxB,IAAI,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/C,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;YAC9B,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;QAClC,CAAC;IACH,CAAC;IAED,cAAc,CAAC,IAAc;QAC3B,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;QACxC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QACnD,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAED,WAAW,CAAC,IAAc;QACxB,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;QACpB,IAAI,CAAC,EAAE;YAAE,OAAO;QAChB,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;QACnC,IAAI,IAAI;YAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;;YACxC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzB,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,YAAY;QACV,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAClD,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC;IAClC,CAAC;IAED,WAAW;QACT,MAAM,IAAI,GAAG,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACzD,MAAM,KAAK,GAAG,GAAS,EAAE;YACvB,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,IAAI,KAAK,CAAC,CAAC,CAAC;YACzD,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,MAAM,EAAE,OAAO,IAAI,KAAK,CAAC,CAAC;QAC7D,CAAC,CAAC;QACF,KAAK,EAAE,CAAC;QACR,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC,CAAC;gBAAE,SAAS;YACjB,CAAC,CAAC,gBAAgB,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YACtC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,mBAAmB,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;IAED,UAAU;QACR,IAAI,OAAO,cAAc,KAAK,UAAU;YAAE,OAAO;QACjD,MAAM,EAAE,GAAG,IAAI,cAAc,CAAC,GAAG,EAAE;YACjC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;YACpB,IAAI,CAAC,EAAE;gBAAE,OAAO;YAChB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;YAC/B,MAAM,OAAO,GAAG,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,aAAa,CAAC;YACnD,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,YAAY,CAAC,CAAC;YACnE,IAAI,OAAO,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC9B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;gBACxB,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;YAC5C,CAAC;YACD,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAClB,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;YAC1B,IAAI,OAAO;gBAAE,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YACpC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;QAClC,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACjB,6EAA6E;QAC7E,IAAI,IAAI,CAAC,GAAG;YAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC5C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,UAAU,CAAC,CAAgB;QACzB,IAAI,CAAC,CAAC,gBAAgB,IAAI,CAAC,CAAC,WAAW;YAAE,OAAO;QAChD,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;QACpB,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM;YAAE,OAAO;QAC1C,MAAM,IAAI,GAAG,CAAC,CAAC,YAAY,EAAE,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,uFAAuF;YACvF,+DAA+D;YAC/D,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;gBAAE,OAAO;YAC3E,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC;YACtC,IAAI,MAAM,IAAI,MAAM,KAAK,QAAQ,CAAC,IAAI,IAAI,MAAM,KAAK,QAAQ,CAAC,eAAe;gBAAE,OAAO;YACtF,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC,KAAK,IAAI;gBAAE,OAAO;QACjF,CAAC;QACD,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACjC,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;gBACvB,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACf,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAC1B,CAAC;YACD,OAAO;QACT,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;QAC/B,IAAI,cAAc,CAAC,MAAM,CAAC;YAAE,OAAO;QACnC,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;QAC1B,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;QAC7C,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,4DAA4D;QAC5D,MAAM,EAAE,GAAG,MAAwB,CAAC;QACpC,IACE,CAAC,CAAC,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC;YACpC,EAAE,EAAE,OAAO,EAAE,CAAC,4DAA4D,CAAC,EAC3E,CAAC;YACD,OAAO;QACT,CAAC;QACD,IAAI,CAAC,CAAC,MAAM,KAAK,OAAO,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC;YACvF,OAAO;QACT,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;YACpB,KAAK,MAAM;gBACT,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBACvB,MAAM;YACR,KAAK,OAAO;gBACV,CAAC,CAAC,WAAW,EAAE,CAAC;gBAChB,MAAM;YACR,KAAK,MAAM;gBACT,CAAC,CAAC,IAAI,EAAE,CAAC;gBACT,MAAM;YACR,KAAK,MAAM;gBACT,CAAC,CAAC,IAAI,EAAE,CAAC;gBACT,MAAM;YACR,KAAK,OAAO;gBACV,CAAC,CAAC,KAAK,EAAE,CAAC;gBACV,MAAM;YACR,KAAK,MAAM;gBACT,CAAC,CAAC,IAAI,EAAE,CAAC;gBACT,MAAM;YACR,KAAK,KAAK;gBACR,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,MAAM;YACR,KAAK,QAAQ;gBACX,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE;oBAAE,CAAC,CAAC,cAAc,EAAE,CAAC;gBAC7C,MAAM;YACR,KAAK,YAAY;gBACf,CAAC,CAAC,UAAU,EAAE,CAAC;gBACf,MAAM;YACR,KAAK,MAAM;gBACT,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBAC/B,MAAM;YACR,KAAK,SAAS;gBACZ,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;gBACnC,MAAM;YACR,KAAK,KAAK;gBACR,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC;gBACb,MAAM;YACR,KAAK,MAAM;gBACT,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBACzB,MAAM;YACR,KAAK,QAAQ;gBACX,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,MAAM;YACR,KAAK,QAAQ;gBACX,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,MAAM;YACR,KAAK,SAAS;gBACZ,IAAI,CAAC,cAAc,EAAE,CAAC;gBACtB,MAAM;YACR,KAAK,OAAO,EAAE,CAAC;gBACb,MAAM,CAAC,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;gBACvD,IAAI,CAAC,KAAK,GAAG,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,iBAAiB,CAAC,MAAM,CAAoB,CAAC;gBACtF,MAAM;YACR,CAAC;YACD,KAAK,MAAM;gBACT,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACf,MAAM;YACR,KAAK,QAAQ;gBACX,CAAC,CAAC,aAAa,EAAE,CAAC;gBAClB,MAAM;YACR;gBACE,MAAsB,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,6EAA6E;IAE7E,SAAS;QACP,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,OAAO,QAAQ,KAAK,WAAW;YAAE,OAAO;QAC/E,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI,CAAC,SAAS;YAAE,OAAO;QAC7C,MAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC;QAC/B,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAC9B,8EAA8E;YAC9E,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;YAC1B,IAAI,KAAK,CAAC,IAAI;gBAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACvC,IAAI,KAAK,CAAC,KAAK;gBAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACzC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;QAC1D,CAAC;QACD,IAAI,KAAK,CAAC,IAAI;YAAE,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5E,CAAC;IAED,UAAU;QACR,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,OAAO,QAAQ,KAAK,WAAW;YAAE,OAAO;QAC/E,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;QAC1B,MAAM,IAAI,GAAG,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QAClF,MAAM,IAAI,GAAG,UAAU,CAAC;YACtB,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvC,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,KAAK,EAAE,CAAC,CAAC,KAAK;SACf,CAAC,CAAC;QACH,IAAI,IAAI,KAAK,QAAQ,CAAC,IAAI;YAAE,OAAO;QACnC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC;YACH,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;QAChD,CAAC;QAAC,MAAM,CAAC;YACP,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;QACvB,CAAC;IACH,CAAC;CACF"}
package/dist/framing.d.ts CHANGED
@@ -3,7 +3,8 @@
3
3
  * float over the canvas; a fit or flight must keep its target clear of them without wasting the
4
4
  * rest of the canvas. Each obstacle can be avoided through one side (an inset); all assignments
5
5
  * are tried (4ⁿ, n ≤ ~6 visible chips) and the one that shows `bounds` largest wins, ties going
6
- * to the free region closest to the canvas center. Pure; all sizes in canvas px.
6
+ * to the free region closest to the canvas center. `zoomFit` fits content whose world extent
7
+ * depends on the zoom (labels). Pure; all sizes in canvas px.
7
8
  */
8
9
  import type { Rect } from '@kgdiff/core';
9
10
  export interface Insets {
@@ -40,6 +41,24 @@ export declare function chromeInsets(bounds: Rect, layout: ChromeLayout, padding
40
41
  * canvas center.
41
42
  */
42
43
  export declare function frameTarget(bounds: Rect, width: number, height: number, insets: Insets, minK: number, maxK: number): CameraTarget;
44
+ /** A fit whose content depends on the zoom it reaches. */
45
+ export interface ZoomFit {
46
+ /** The zoom the fit lands on. */
47
+ readonly k: number;
48
+ /** What it shows (world units). */
49
+ readonly content: Rect;
50
+ /** Bounds for the camera: `content` centred in a rect that a fit lands on at exactly `k`. */
51
+ readonly bounds: Rect;
52
+ }
53
+ /**
54
+ * Fit content whose world extent depends on the zoom, `extent(k)`: labels keep their pixel size
55
+ * (and change sides as they make room for each other), so the further out the camera, the more
56
+ * world they cover. Finds the largest zoom up to `maxK` at which the content fits the canvas
57
+ * minus `insets` at that very zoom, by bisection (what fits only grows on screen as the camera
58
+ * zooms in), and lands exactly there, since the labels could move at another zoom. When not
59
+ * even the smallest zoom has room, `extent(Infinity)` (the discs alone) is fitted plainly.
60
+ */
61
+ export declare function zoomFit(extent: (k: number) => Rect | null, width: number, height: number, insets: Insets, maxK: number): ZoomFit | null;
43
62
  /** The part of `view` (world units) not covered by `insets` at zoom `k`. */
44
63
  export declare function freeView(view: Rect, k: number, insets: Insets): Rect;
45
64
  //# sourceMappingURL=framing.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"framing.d.ts","sourceRoot":"","sources":["../src/framing.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEzC,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,sFAAsF;AACtF,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,SAAS,IAAI,EAAE,CAAC;CACrC;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,4CAA4C;AAC5C,eAAO,MAAM,aAAa,KAAK,CAAC;AAShC,eAAO,MAAM,SAAS,EAAE,MAAgE,CAAC;AAEzF,+FAA+F;AAC/F,wBAAgB,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAO3F;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,IAAI,EACZ,MAAM,EAAE,YAAY,EACpB,OAAO,SAAgB,EACvB,OAAO,SAA2B,GACjC,MAAM,CAwDR;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,IAAI,EACZ,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACX,YAAY,CAQd;AAED,4EAA4E;AAC5E,wBAAgB,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAOpE"}
1
+ {"version":3,"file":"framing.d.ts","sourceRoot":"","sources":["../src/framing.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEzC,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,sFAAsF;AACtF,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,SAAS,IAAI,EAAE,CAAC;CACrC;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,4CAA4C;AAC5C,eAAO,MAAM,aAAa,KAAK,CAAC;AAShC,eAAO,MAAM,SAAS,EAAE,MAAgE,CAAC;AAEzF,+FAA+F;AAC/F,wBAAgB,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAO3F;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,IAAI,EACZ,MAAM,EAAE,YAAY,EACpB,OAAO,SAAgB,EACvB,OAAO,SAA2B,GACjC,MAAM,CAwDR;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,IAAI,EACZ,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACX,YAAY,CAQd;AAOD,0DAA0D;AAC1D,MAAM,WAAW,OAAO;IACtB,iCAAiC;IACjC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,mCAAmC;IACnC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC;IACvB,6FAA6F;IAC7F,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC;CACvB;AAED;;;;;;;GAOG;AACH,wBAAgB,OAAO,CACrB,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,EAClC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GACX,OAAO,GAAG,IAAI,CAgChB;AAED,4EAA4E;AAC5E,wBAAgB,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAOpE"}
package/dist/framing.js CHANGED
@@ -95,6 +95,55 @@ export function frameTarget(bounds, width, height, insets, minK, maxK) {
95
95
  const cy = bounds.y + bounds.height / 2;
96
96
  return { x: cx - (sx - width / 2) / k, y: cy - (sy - height / 2) / k, k };
97
97
  }
98
+ /** Lowest zoom a fit considers (the renderer's default `minZoom`). */
99
+ const MIN_FIT_ZOOM = 0.05;
100
+ /** Bisection steps for the zoom of a label-aware fit (a fraction of a percent). */
101
+ const FIT_STEPS = 16;
102
+ /**
103
+ * Fit content whose world extent depends on the zoom, `extent(k)`: labels keep their pixel size
104
+ * (and change sides as they make room for each other), so the further out the camera, the more
105
+ * world they cover. Finds the largest zoom up to `maxK` at which the content fits the canvas
106
+ * minus `insets` at that very zoom, by bisection (what fits only grows on screen as the camera
107
+ * zooms in), and lands exactly there, since the labels could move at another zoom. When not
108
+ * even the smallest zoom has room, `extent(Infinity)` (the discs alone) is fitted plainly.
109
+ */
110
+ export function zoomFit(extent, width, height, insets, maxK) {
111
+ const fits = (k) => {
112
+ const b = extent(k);
113
+ return b !== null && fitZoom(b, width, height, insets) >= k;
114
+ };
115
+ let k = maxK;
116
+ if (!fits(k)) {
117
+ let lo = Math.min(MIN_FIT_ZOOM, maxK);
118
+ if (!fits(lo)) {
119
+ const discs = extent(Number.POSITIVE_INFINITY);
120
+ if (!discs)
121
+ return null;
122
+ return { k: fitZoom(discs, width, height, insets), content: discs, bounds: discs };
123
+ }
124
+ let hi = k;
125
+ for (let i = 0; i < FIT_STEPS; i++) {
126
+ const mid = Math.sqrt(lo * hi);
127
+ if (fits(mid))
128
+ lo = mid;
129
+ else
130
+ hi = mid;
131
+ }
132
+ k = lo;
133
+ }
134
+ const content = extent(k);
135
+ if (!content)
136
+ return null;
137
+ const w = (width - insets.left - insets.right) / k;
138
+ const h = (height - insets.top - insets.bottom) / k;
139
+ const bounds = {
140
+ x: content.x + content.width / 2 - w / 2,
141
+ y: content.y + content.height / 2 - h / 2,
142
+ width: w,
143
+ height: h,
144
+ };
145
+ return { k, content, bounds };
146
+ }
98
147
  /** The part of `view` (world units) not covered by `insets` at zoom `k`. */
99
148
  export function freeView(view, k, insets) {
100
149
  return {