minerva-design 1.3.0 → 1.5.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.
- package/CHANGELOG.md +18 -0
- package/README.md +21 -21
- package/custom-elements.json +18546 -7329
- package/dist/angular/fesm2022/minerva-angular.mjs +8303 -172
- package/dist/angular/fesm2022/minerva-angular.mjs.map +1 -1
- package/dist/angular/types/minerva-angular.d.ts +2809 -0
- package/dist/charts/canvas.d.cts +8 -3
- package/dist/charts/canvas.d.ts +8 -3
- package/dist/charts/core.cjs +1 -1
- package/dist/charts/core.d.cts +10 -5
- package/dist/charts/core.d.ts +10 -5
- package/dist/charts/core.js +27 -8
- package/dist/charts/engine/axis.cjs +1 -1
- package/dist/charts/engine/axis.cjs.map +1 -1
- package/dist/charts/engine/axis.js +43 -20
- package/dist/charts/engine/axis.js.map +1 -1
- package/dist/charts/engine/canvas.cjs +1 -1
- package/dist/charts/engine/canvas.cjs.map +1 -1
- package/dist/charts/engine/canvas.d.cts +11 -1
- package/dist/charts/engine/canvas.d.ts +11 -1
- package/dist/charts/engine/canvas.js +193 -116
- package/dist/charts/engine/canvas.js.map +1 -1
- package/dist/charts/engine/chart.cjs +1 -1
- package/dist/charts/engine/chart.cjs.map +1 -1
- package/dist/charts/engine/chart.d.cts +1 -1
- package/dist/charts/engine/chart.d.ts +1 -1
- package/dist/charts/engine/chart.js +486 -350
- package/dist/charts/engine/chart.js.map +1 -1
- package/dist/charts/engine/color.cjs +1 -1
- package/dist/charts/engine/color.cjs.map +1 -1
- package/dist/charts/engine/color.d.cts +18 -0
- package/dist/charts/engine/color.d.ts +18 -0
- package/dist/charts/engine/color.js +47 -1
- package/dist/charts/engine/color.js.map +1 -1
- package/dist/charts/engine/controller.cjs +2 -2
- package/dist/charts/engine/controller.cjs.map +1 -1
- package/dist/charts/engine/controller.d.cts +44 -4
- package/dist/charts/engine/controller.d.ts +44 -4
- package/dist/charts/engine/controller.js +421 -314
- package/dist/charts/engine/controller.js.map +1 -1
- package/dist/charts/engine/data.cjs +1 -1
- package/dist/charts/engine/data.cjs.map +1 -1
- package/dist/charts/engine/data.d.cts +9 -1
- package/dist/charts/engine/data.d.ts +9 -1
- package/dist/charts/engine/data.js +65 -49
- package/dist/charts/engine/data.js.map +1 -1
- package/dist/charts/engine/defaults.cjs +2 -0
- package/dist/charts/engine/defaults.cjs.map +1 -0
- package/dist/charts/engine/defaults.d.cts +20 -0
- package/dist/charts/engine/defaults.d.ts +20 -0
- package/dist/charts/engine/defaults.js +35 -0
- package/dist/charts/engine/defaults.js.map +1 -0
- package/dist/charts/engine/format.cjs +1 -1
- package/dist/charts/engine/format.cjs.map +1 -1
- package/dist/charts/engine/format.d.cts +27 -6
- package/dist/charts/engine/format.d.ts +27 -6
- package/dist/charts/engine/format.js +59 -21
- package/dist/charts/engine/format.js.map +1 -1
- package/dist/charts/engine/graph/chart.cjs +2 -0
- package/dist/charts/engine/graph/chart.cjs.map +1 -0
- package/dist/charts/engine/graph/chart.d.cts +3 -0
- package/dist/charts/engine/graph/chart.d.ts +3 -0
- package/dist/charts/engine/graph/chart.js +1565 -0
- package/dist/charts/engine/graph/chart.js.map +1 -0
- package/dist/charts/engine/graph/circular.cjs +2 -0
- package/dist/charts/engine/graph/circular.cjs.map +1 -0
- package/dist/charts/engine/graph/circular.d.cts +16 -0
- package/dist/charts/engine/graph/circular.d.ts +16 -0
- package/dist/charts/engine/graph/circular.js +62 -0
- package/dist/charts/engine/graph/circular.js.map +1 -0
- package/dist/charts/engine/graph/dag.cjs +2 -0
- package/dist/charts/engine/graph/dag.cjs.map +1 -0
- package/dist/charts/engine/graph/dag.d.cts +34 -0
- package/dist/charts/engine/graph/dag.d.ts +34 -0
- package/dist/charts/engine/graph/dag.js +314 -0
- package/dist/charts/engine/graph/dag.js.map +1 -0
- package/dist/charts/engine/graph/dom.cjs +2 -0
- package/dist/charts/engine/graph/dom.cjs.map +1 -0
- package/dist/charts/engine/graph/dom.d.cts +23 -0
- package/dist/charts/engine/graph/dom.d.ts +23 -0
- package/dist/charts/engine/graph/dom.js +158 -0
- package/dist/charts/engine/graph/dom.js.map +1 -0
- package/dist/charts/engine/graph/force.cjs +2 -0
- package/dist/charts/engine/graph/force.cjs.map +1 -0
- package/dist/charts/engine/graph/force.d.cts +67 -0
- package/dist/charts/engine/graph/force.d.ts +67 -0
- package/dist/charts/engine/graph/force.js +325 -0
- package/dist/charts/engine/graph/force.js.map +1 -0
- package/dist/charts/engine/graph/geometry.cjs +2 -0
- package/dist/charts/engine/graph/geometry.cjs.map +1 -0
- package/dist/charts/engine/graph/geometry.d.cts +37 -0
- package/dist/charts/engine/graph/geometry.d.ts +37 -0
- package/dist/charts/engine/graph/geometry.js +144 -0
- package/dist/charts/engine/graph/geometry.js.map +1 -0
- package/dist/charts/engine/graph/index.cjs +1 -0
- package/dist/charts/engine/graph/index.d.cts +6 -0
- package/dist/charts/engine/graph/index.d.ts +6 -0
- package/dist/charts/engine/graph/index.js +6 -0
- package/dist/charts/engine/graph/labels.cjs +2 -0
- package/dist/charts/engine/graph/labels.cjs.map +1 -0
- package/dist/charts/engine/graph/labels.d.cts +12 -0
- package/dist/charts/engine/graph/labels.d.ts +12 -0
- package/dist/charts/engine/graph/labels.js +128 -0
- package/dist/charts/engine/graph/labels.js.map +1 -0
- package/dist/charts/engine/graph/model.cjs +2 -0
- package/dist/charts/engine/graph/model.cjs.map +1 -0
- package/dist/charts/engine/graph/model.d.cts +43 -0
- package/dist/charts/engine/graph/model.d.ts +43 -0
- package/dist/charts/engine/graph/model.js +88 -0
- package/dist/charts/engine/graph/model.js.map +1 -0
- package/dist/charts/engine/graph/sizing.cjs +2 -0
- package/dist/charts/engine/graph/sizing.cjs.map +1 -0
- package/dist/charts/engine/graph/sizing.d.cts +33 -0
- package/dist/charts/engine/graph/sizing.d.ts +33 -0
- package/dist/charts/engine/graph/sizing.js +60 -0
- package/dist/charts/engine/graph/sizing.js.map +1 -0
- package/dist/charts/engine/graph/tree.cjs +2 -0
- package/dist/charts/engine/graph/tree.cjs.map +1 -0
- package/dist/charts/engine/graph/tree.d.cts +30 -0
- package/dist/charts/engine/graph/tree.d.ts +30 -0
- package/dist/charts/engine/graph/tree.js +218 -0
- package/dist/charts/engine/graph/tree.js.map +1 -0
- package/dist/charts/engine/graph/types.d.cts +626 -0
- package/dist/charts/engine/graph/types.d.ts +626 -0
- package/dist/charts/engine/graph/worker.cjs +46 -0
- package/dist/charts/engine/graph/worker.cjs.map +1 -0
- package/dist/charts/engine/graph/worker.d.cts +36 -0
- package/dist/charts/engine/graph/worker.d.ts +36 -0
- package/dist/charts/engine/graph/worker.js +129 -0
- package/dist/charts/engine/graph/worker.js.map +1 -0
- package/dist/charts/engine/items.cjs +1 -1
- package/dist/charts/engine/items.cjs.map +1 -1
- package/dist/charts/engine/items.d.cts +15 -2
- package/dist/charts/engine/items.d.ts +15 -2
- package/dist/charts/engine/items.js +257 -81
- package/dist/charts/engine/items.js.map +1 -1
- package/dist/charts/engine/labels.cjs +2 -0
- package/dist/charts/engine/labels.cjs.map +1 -0
- package/dist/charts/engine/labels.d.cts +13 -0
- package/dist/charts/engine/labels.d.ts +13 -0
- package/dist/charts/engine/labels.js +98 -0
- package/dist/charts/engine/labels.js.map +1 -0
- package/dist/charts/engine/layout.cjs +1 -1
- package/dist/charts/engine/layout.cjs.map +1 -1
- package/dist/charts/engine/layout.d.cts +43 -2
- package/dist/charts/engine/layout.d.ts +43 -2
- package/dist/charts/engine/layout.js +62 -12
- package/dist/charts/engine/layout.js.map +1 -1
- package/dist/charts/engine/locale.cjs +2 -0
- package/dist/charts/engine/locale.cjs.map +1 -0
- package/dist/charts/engine/locale.d.cts +33 -0
- package/dist/charts/engine/locale.d.ts +33 -0
- package/dist/charts/engine/locale.js +68 -0
- package/dist/charts/engine/locale.js.map +1 -0
- package/dist/charts/engine/model.cjs +1 -1
- package/dist/charts/engine/model.cjs.map +1 -1
- package/dist/charts/engine/model.d.cts +77 -2
- package/dist/charts/engine/model.d.ts +77 -2
- package/dist/charts/engine/model.js +304 -116
- package/dist/charts/engine/model.js.map +1 -1
- package/dist/charts/engine/orderbook/book.cjs +2 -0
- package/dist/charts/engine/orderbook/book.cjs.map +1 -0
- package/dist/charts/engine/orderbook/book.d.cts +28 -0
- package/dist/charts/engine/orderbook/book.d.ts +28 -0
- package/dist/charts/engine/orderbook/book.js +134 -0
- package/dist/charts/engine/orderbook/book.js.map +1 -0
- package/dist/charts/engine/orderbook/depth.cjs +2 -0
- package/dist/charts/engine/orderbook/depth.cjs.map +1 -0
- package/dist/charts/engine/orderbook/depth.d.cts +7 -0
- package/dist/charts/engine/orderbook/depth.d.ts +7 -0
- package/dist/charts/engine/orderbook/depth.js +413 -0
- package/dist/charts/engine/orderbook/depth.js.map +1 -0
- package/dist/charts/engine/orderbook/format.cjs +2 -0
- package/dist/charts/engine/orderbook/format.cjs.map +1 -0
- package/dist/charts/engine/orderbook/format.d.cts +49 -0
- package/dist/charts/engine/orderbook/format.d.ts +49 -0
- package/dist/charts/engine/orderbook/format.js +65 -0
- package/dist/charts/engine/orderbook/format.js.map +1 -0
- package/dist/charts/engine/orderbook/heatmap.cjs +2 -0
- package/dist/charts/engine/orderbook/heatmap.cjs.map +1 -0
- package/dist/charts/engine/orderbook/heatmap.d.cts +9 -0
- package/dist/charts/engine/orderbook/heatmap.d.ts +9 -0
- package/dist/charts/engine/orderbook/heatmap.js +822 -0
- package/dist/charts/engine/orderbook/heatmap.js.map +1 -0
- package/dist/charts/engine/orderbook/host.cjs +2 -0
- package/dist/charts/engine/orderbook/host.cjs.map +1 -0
- package/dist/charts/engine/orderbook/host.d.cts +50 -0
- package/dist/charts/engine/orderbook/host.d.ts +50 -0
- package/dist/charts/engine/orderbook/host.js +161 -0
- package/dist/charts/engine/orderbook/host.js.map +1 -0
- package/dist/charts/engine/orderbook/index.cjs +1 -0
- package/dist/charts/engine/orderbook/index.d.cts +6 -0
- package/dist/charts/engine/orderbook/index.d.ts +6 -0
- package/dist/charts/engine/orderbook/index.js +6 -0
- package/dist/charts/engine/orderbook/ladder.cjs +2 -0
- package/dist/charts/engine/orderbook/ladder.cjs.map +1 -0
- package/dist/charts/engine/orderbook/ladder.d.cts +6 -0
- package/dist/charts/engine/orderbook/ladder.d.ts +6 -0
- package/dist/charts/engine/orderbook/ladder.js +341 -0
- package/dist/charts/engine/orderbook/ladder.js.map +1 -0
- package/dist/charts/engine/orderbook/layout.cjs +2 -0
- package/dist/charts/engine/orderbook/layout.cjs.map +1 -0
- package/dist/charts/engine/orderbook/layout.d.cts +37 -0
- package/dist/charts/engine/orderbook/layout.d.ts +37 -0
- package/dist/charts/engine/orderbook/layout.js +70 -0
- package/dist/charts/engine/orderbook/layout.js.map +1 -0
- package/dist/charts/engine/orderbook/tape.cjs +2 -0
- package/dist/charts/engine/orderbook/tape.cjs.map +1 -0
- package/dist/charts/engine/orderbook/tape.d.cts +6 -0
- package/dist/charts/engine/orderbook/tape.d.ts +6 -0
- package/dist/charts/engine/orderbook/tape.js +450 -0
- package/dist/charts/engine/orderbook/tape.js.map +1 -0
- package/dist/charts/engine/orderbook/types.d.cts +751 -0
- package/dist/charts/engine/orderbook/types.d.ts +751 -0
- package/dist/charts/engine/overlay.cjs +1 -1
- package/dist/charts/engine/overlay.cjs.map +1 -1
- package/dist/charts/engine/overlay.d.cts +28 -2
- package/dist/charts/engine/overlay.d.ts +28 -2
- package/dist/charts/engine/overlay.js +138 -96
- package/dist/charts/engine/overlay.js.map +1 -1
- package/dist/charts/engine/presets.cjs +2 -2
- package/dist/charts/engine/presets.cjs.map +1 -1
- package/dist/charts/engine/presets.d.cts +273 -3
- package/dist/charts/engine/presets.d.ts +273 -3
- package/dist/charts/engine/presets.js +390 -38
- package/dist/charts/engine/presets.js.map +1 -1
- package/dist/charts/engine/renderers/detect.cjs +1 -1
- package/dist/charts/engine/renderers/detect.cjs.map +1 -1
- package/dist/charts/engine/renderers/detect.d.cts +2 -1
- package/dist/charts/engine/renderers/detect.d.ts +2 -1
- package/dist/charts/engine/renderers/detect.js +24 -19
- package/dist/charts/engine/renderers/detect.js.map +1 -1
- package/dist/charts/engine/renderers/gl.cjs +2 -0
- package/dist/charts/engine/renderers/gl.cjs.map +1 -0
- package/dist/charts/engine/renderers/gl.d.cts +21 -0
- package/dist/charts/engine/renderers/gl.d.ts +21 -0
- package/dist/charts/engine/renderers/gl.js +56 -0
- package/dist/charts/engine/renderers/gl.js.map +1 -0
- package/dist/charts/engine/renderers/shaders.cjs +143 -1
- package/dist/charts/engine/renderers/shaders.cjs.map +1 -1
- package/dist/charts/engine/renderers/shaders.d.cts +16 -0
- package/dist/charts/engine/renderers/shaders.d.ts +16 -0
- package/dist/charts/engine/renderers/shaders.js +139 -1
- package/dist/charts/engine/renderers/shaders.js.map +1 -1
- package/dist/charts/engine/renderers/webgl.cjs +2 -0
- package/dist/charts/engine/renderers/webgl.cjs.map +1 -0
- package/dist/charts/engine/renderers/webgl.d.cts +4 -0
- package/dist/charts/engine/renderers/webgl.d.ts +4 -0
- package/dist/charts/engine/renderers/webgl.js +133 -0
- package/dist/charts/engine/renderers/webgl.js.map +1 -0
- package/dist/charts/engine/renderers/webgl2.cjs +1 -1
- package/dist/charts/engine/renderers/webgl2.cjs.map +1 -1
- package/dist/charts/engine/renderers/webgl2.d.cts +0 -1
- package/dist/charts/engine/renderers/webgl2.d.ts +0 -1
- package/dist/charts/engine/renderers/webgl2.js +59 -108
- package/dist/charts/engine/renderers/webgl2.js.map +1 -1
- package/dist/charts/engine/scale.cjs +1 -1
- package/dist/charts/engine/scale.cjs.map +1 -1
- package/dist/charts/engine/scale.js +1 -1
- package/dist/charts/engine/scale.js.map +1 -1
- package/dist/charts/engine/scene.cjs +1 -1
- package/dist/charts/engine/scene.cjs.map +1 -1
- package/dist/charts/engine/scene.d.cts +71 -8
- package/dist/charts/engine/scene.d.ts +71 -8
- package/dist/charts/engine/scene.js +465 -183
- package/dist/charts/engine/scene.js.map +1 -1
- package/dist/charts/engine/shapes/bullet.cjs +2 -0
- package/dist/charts/engine/shapes/bullet.cjs.map +1 -0
- package/dist/charts/engine/shapes/bullet.d.cts +6 -0
- package/dist/charts/engine/shapes/bullet.d.ts +6 -0
- package/dist/charts/engine/shapes/bullet.js +255 -0
- package/dist/charts/engine/shapes/bullet.js.map +1 -0
- package/dist/charts/engine/shapes/calendar.cjs +2 -0
- package/dist/charts/engine/shapes/calendar.cjs.map +1 -0
- package/dist/charts/engine/shapes/calendar.d.cts +38 -0
- package/dist/charts/engine/shapes/calendar.d.ts +38 -0
- package/dist/charts/engine/shapes/calendar.js +369 -0
- package/dist/charts/engine/shapes/calendar.js.map +1 -0
- package/dist/charts/engine/shapes/canvas.cjs +1 -1
- package/dist/charts/engine/shapes/canvas.cjs.map +1 -1
- package/dist/charts/engine/shapes/canvas.d.cts +7 -0
- package/dist/charts/engine/shapes/canvas.d.ts +7 -0
- package/dist/charts/engine/shapes/canvas.js +22 -13
- package/dist/charts/engine/shapes/canvas.js.map +1 -1
- package/dist/charts/engine/shapes/chart.cjs +1 -1
- package/dist/charts/engine/shapes/chart.cjs.map +1 -1
- package/dist/charts/engine/shapes/chart.d.cts +3 -2
- package/dist/charts/engine/shapes/chart.d.ts +3 -2
- package/dist/charts/engine/shapes/chart.js +49 -27
- package/dist/charts/engine/shapes/chart.js.map +1 -1
- package/dist/charts/engine/shapes/chord.cjs +2 -0
- package/dist/charts/engine/shapes/chord.cjs.map +1 -0
- package/dist/charts/engine/shapes/chord.d.cts +18 -0
- package/dist/charts/engine/shapes/chord.d.ts +18 -0
- package/dist/charts/engine/shapes/chord.js +414 -0
- package/dist/charts/engine/shapes/chord.js.map +1 -0
- package/dist/charts/engine/shapes/draw.cjs +1 -1
- package/dist/charts/engine/shapes/draw.cjs.map +1 -1
- package/dist/charts/engine/shapes/draw.d.cts +7 -1
- package/dist/charts/engine/shapes/draw.d.ts +7 -1
- package/dist/charts/engine/shapes/draw.js +62 -19
- package/dist/charts/engine/shapes/draw.js.map +1 -1
- package/dist/charts/engine/shapes/funnel.cjs +1 -1
- package/dist/charts/engine/shapes/funnel.cjs.map +1 -1
- package/dist/charts/engine/shapes/funnel.js +3 -3
- package/dist/charts/engine/shapes/funnel.js.map +1 -1
- package/dist/charts/engine/shapes/gauge.cjs +1 -1
- package/dist/charts/engine/shapes/gauge.cjs.map +1 -1
- package/dist/charts/engine/shapes/gauge.js +132 -95
- package/dist/charts/engine/shapes/gauge.js.map +1 -1
- package/dist/charts/engine/shapes/hit.cjs +1 -1
- package/dist/charts/engine/shapes/hit.cjs.map +1 -1
- package/dist/charts/engine/shapes/hit.d.cts +5 -1
- package/dist/charts/engine/shapes/hit.d.ts +5 -1
- package/dist/charts/engine/shapes/hit.js +89 -39
- package/dist/charts/engine/shapes/hit.js.map +1 -1
- package/dist/charts/engine/shapes/index.d.cts +6 -2
- package/dist/charts/engine/shapes/index.d.ts +6 -2
- package/dist/charts/engine/shapes/labels.cjs +2 -0
- package/dist/charts/engine/shapes/labels.cjs.map +1 -0
- package/dist/charts/engine/shapes/labels.d.cts +14 -0
- package/dist/charts/engine/shapes/labels.d.ts +14 -0
- package/dist/charts/engine/shapes/labels.js +154 -0
- package/dist/charts/engine/shapes/labels.js.map +1 -0
- package/dist/charts/engine/shapes/layout.cjs +2 -2
- package/dist/charts/engine/shapes/layout.cjs.map +1 -1
- package/dist/charts/engine/shapes/layout.d.cts +10 -3
- package/dist/charts/engine/shapes/layout.d.ts +10 -3
- package/dist/charts/engine/shapes/layout.js +239 -124
- package/dist/charts/engine/shapes/layout.js.map +1 -1
- package/dist/charts/engine/shapes/pie.cjs +1 -1
- package/dist/charts/engine/shapes/pie.cjs.map +1 -1
- package/dist/charts/engine/shapes/pie.js +2 -2
- package/dist/charts/engine/shapes/pie.js.map +1 -1
- package/dist/charts/engine/shapes/radar.cjs +1 -1
- package/dist/charts/engine/shapes/radar.cjs.map +1 -1
- package/dist/charts/engine/shapes/radar.d.cts +2 -2
- package/dist/charts/engine/shapes/radar.d.ts +2 -2
- package/dist/charts/engine/shapes/radar.js +50 -49
- package/dist/charts/engine/shapes/radar.js.map +1 -1
- package/dist/charts/engine/shapes/radialBar.cjs +2 -0
- package/dist/charts/engine/shapes/radialBar.cjs.map +1 -0
- package/dist/charts/engine/shapes/radialBar.d.cts +8 -0
- package/dist/charts/engine/shapes/radialBar.d.ts +8 -0
- package/dist/charts/engine/shapes/radialBar.js +155 -0
- package/dist/charts/engine/shapes/radialBar.js.map +1 -0
- package/dist/charts/engine/shapes/runtime.cjs +1 -1
- package/dist/charts/engine/shapes/runtime.cjs.map +1 -1
- package/dist/charts/engine/shapes/runtime.d.cts +9 -2
- package/dist/charts/engine/shapes/runtime.d.ts +9 -2
- package/dist/charts/engine/shapes/runtime.js +61 -51
- package/dist/charts/engine/shapes/runtime.js.map +1 -1
- package/dist/charts/engine/shapes/sankey.cjs +2 -0
- package/dist/charts/engine/shapes/sankey.cjs.map +1 -0
- package/dist/charts/engine/shapes/sankey.d.cts +29 -0
- package/dist/charts/engine/shapes/sankey.d.ts +29 -0
- package/dist/charts/engine/shapes/sankey.js +372 -0
- package/dist/charts/engine/shapes/sankey.js.map +1 -0
- package/dist/charts/engine/shapes/scene.cjs +1 -1
- package/dist/charts/engine/shapes/scene.cjs.map +1 -1
- package/dist/charts/engine/shapes/scene.d.cts +92 -8
- package/dist/charts/engine/shapes/scene.d.ts +92 -8
- package/dist/charts/engine/shapes/scene.js +76 -31
- package/dist/charts/engine/shapes/scene.js.map +1 -1
- package/dist/charts/engine/shapes/sunburst.cjs +2 -0
- package/dist/charts/engine/shapes/sunburst.cjs.map +1 -0
- package/dist/charts/engine/shapes/sunburst.d.cts +6 -0
- package/dist/charts/engine/shapes/sunburst.d.ts +6 -0
- package/dist/charts/engine/shapes/sunburst.js +261 -0
- package/dist/charts/engine/shapes/sunburst.js.map +1 -0
- package/dist/charts/engine/shapes/treemap.cjs +1 -1
- package/dist/charts/engine/shapes/treemap.cjs.map +1 -1
- package/dist/charts/engine/shapes/treemap.js +2 -2
- package/dist/charts/engine/shapes/treemap.js.map +1 -1
- package/dist/charts/engine/shapes/types.d.cts +550 -12
- package/dist/charts/engine/shapes/types.d.ts +550 -12
- package/dist/charts/engine/signature.cjs +1 -1
- package/dist/charts/engine/signature.cjs.map +1 -1
- package/dist/charts/engine/signature.js +1 -1
- package/dist/charts/engine/signature.js.map +1 -1
- package/dist/charts/engine/three-d/canvas2d.cjs +2 -0
- package/dist/charts/engine/three-d/canvas2d.cjs.map +1 -0
- package/dist/charts/engine/three-d/canvas2d.d.cts +7 -0
- package/dist/charts/engine/three-d/canvas2d.d.ts +7 -0
- package/dist/charts/engine/three-d/canvas2d.js +128 -0
- package/dist/charts/engine/three-d/canvas2d.js.map +1 -0
- package/dist/charts/engine/three-d/chart.cjs +2 -0
- package/dist/charts/engine/three-d/chart.cjs.map +1 -0
- package/dist/charts/engine/three-d/chart.d.cts +15 -0
- package/dist/charts/engine/three-d/chart.d.ts +15 -0
- package/dist/charts/engine/three-d/chart.js +621 -0
- package/dist/charts/engine/three-d/chart.js.map +1 -0
- package/dist/charts/engine/three-d/colormap.cjs +2 -0
- package/dist/charts/engine/three-d/colormap.cjs.map +1 -0
- package/dist/charts/engine/three-d/colormap.d.cts +16 -0
- package/dist/charts/engine/three-d/colormap.d.ts +16 -0
- package/dist/charts/engine/three-d/colormap.js +166 -0
- package/dist/charts/engine/three-d/colormap.js.map +1 -0
- package/dist/charts/engine/three-d/contours.cjs +2 -0
- package/dist/charts/engine/three-d/contours.cjs.map +1 -0
- package/dist/charts/engine/three-d/contours.d.cts +7 -0
- package/dist/charts/engine/three-d/contours.d.ts +7 -0
- package/dist/charts/engine/three-d/contours.js +47 -0
- package/dist/charts/engine/three-d/contours.js.map +1 -0
- package/dist/charts/engine/three-d/detect.cjs +2 -0
- package/dist/charts/engine/three-d/detect.cjs.map +1 -0
- package/dist/charts/engine/three-d/detect.d.cts +12 -0
- package/dist/charts/engine/three-d/detect.d.ts +12 -0
- package/dist/charts/engine/three-d/detect.js +37 -0
- package/dist/charts/engine/three-d/detect.js.map +1 -0
- package/dist/charts/engine/three-d/dom.cjs +2 -0
- package/dist/charts/engine/three-d/dom.cjs.map +1 -0
- package/dist/charts/engine/three-d/dom.d.cts +21 -0
- package/dist/charts/engine/three-d/dom.d.ts +21 -0
- package/dist/charts/engine/three-d/dom.js +98 -0
- package/dist/charts/engine/three-d/dom.js.map +1 -0
- package/dist/charts/engine/three-d/geometry.cjs +2 -0
- package/dist/charts/engine/three-d/geometry.cjs.map +1 -0
- package/dist/charts/engine/three-d/geometry.d.cts +82 -0
- package/dist/charts/engine/three-d/geometry.d.ts +82 -0
- package/dist/charts/engine/three-d/geometry.js +545 -0
- package/dist/charts/engine/three-d/geometry.js.map +1 -0
- package/dist/charts/engine/three-d/hover.cjs +2 -0
- package/dist/charts/engine/three-d/hover.cjs.map +1 -0
- package/dist/charts/engine/three-d/hover.d.cts +25 -0
- package/dist/charts/engine/three-d/hover.d.ts +25 -0
- package/dist/charts/engine/three-d/hover.js +131 -0
- package/dist/charts/engine/three-d/hover.js.map +1 -0
- package/dist/charts/engine/three-d/index.cjs +1 -0
- package/dist/charts/engine/three-d/index.d.cts +2 -0
- package/dist/charts/engine/three-d/index.d.ts +2 -0
- package/dist/charts/engine/three-d/index.js +2 -0
- package/dist/charts/engine/three-d/labels.cjs +2 -0
- package/dist/charts/engine/three-d/labels.cjs.map +1 -0
- package/dist/charts/engine/three-d/labels.d.cts +23 -0
- package/dist/charts/engine/three-d/labels.d.ts +23 -0
- package/dist/charts/engine/three-d/labels.js +136 -0
- package/dist/charts/engine/three-d/labels.js.map +1 -0
- package/dist/charts/engine/three-d/math.cjs +2 -0
- package/dist/charts/engine/three-d/math.cjs.map +1 -0
- package/dist/charts/engine/three-d/math.d.cts +84 -0
- package/dist/charts/engine/three-d/math.d.ts +84 -0
- package/dist/charts/engine/three-d/math.js +150 -0
- package/dist/charts/engine/three-d/math.js.map +1 -0
- package/dist/charts/engine/three-d/model.cjs +2 -0
- package/dist/charts/engine/three-d/model.cjs.map +1 -0
- package/dist/charts/engine/three-d/model.d.cts +132 -0
- package/dist/charts/engine/three-d/model.d.ts +132 -0
- package/dist/charts/engine/three-d/model.js +279 -0
- package/dist/charts/engine/three-d/model.js.map +1 -0
- package/dist/charts/engine/three-d/overlay.cjs +2 -0
- package/dist/charts/engine/three-d/overlay.cjs.map +1 -0
- package/dist/charts/engine/three-d/overlay.d.cts +72 -0
- package/dist/charts/engine/three-d/overlay.d.ts +72 -0
- package/dist/charts/engine/three-d/overlay.js +204 -0
- package/dist/charts/engine/three-d/overlay.js.map +1 -0
- package/dist/charts/engine/three-d/pick.cjs +2 -0
- package/dist/charts/engine/three-d/pick.cjs.map +1 -0
- package/dist/charts/engine/three-d/pick.d.cts +52 -0
- package/dist/charts/engine/three-d/pick.d.ts +52 -0
- package/dist/charts/engine/three-d/pick.js +220 -0
- package/dist/charts/engine/three-d/pick.js.map +1 -0
- package/dist/charts/engine/three-d/render-types.cjs +2 -0
- package/dist/charts/engine/three-d/render-types.cjs.map +1 -0
- package/dist/charts/engine/three-d/render-types.d.cts +103 -0
- package/dist/charts/engine/three-d/render-types.d.ts +103 -0
- package/dist/charts/engine/three-d/render-types.js +12 -0
- package/dist/charts/engine/three-d/render-types.js.map +1 -0
- package/dist/charts/engine/three-d/shaders.cjs +311 -0
- package/dist/charts/engine/three-d/shaders.cjs.map +1 -0
- package/dist/charts/engine/three-d/shaders.d.cts +25 -0
- package/dist/charts/engine/three-d/shaders.d.ts +25 -0
- package/dist/charts/engine/three-d/shaders.js +210 -0
- package/dist/charts/engine/three-d/shaders.js.map +1 -0
- package/dist/charts/engine/three-d/sort.cjs +2 -0
- package/dist/charts/engine/three-d/sort.cjs.map +1 -0
- package/dist/charts/engine/three-d/sort.d.cts +29 -0
- package/dist/charts/engine/three-d/sort.d.ts +29 -0
- package/dist/charts/engine/three-d/sort.js +145 -0
- package/dist/charts/engine/three-d/sort.js.map +1 -0
- package/dist/charts/engine/three-d/types.d.cts +615 -0
- package/dist/charts/engine/three-d/types.d.ts +615 -0
- package/dist/charts/engine/three-d/webgl.cjs +2 -0
- package/dist/charts/engine/three-d/webgl.cjs.map +1 -0
- package/dist/charts/engine/three-d/webgl.d.cts +10 -0
- package/dist/charts/engine/three-d/webgl.d.ts +10 -0
- package/dist/charts/engine/three-d/webgl.js +132 -0
- package/dist/charts/engine/three-d/webgl.js.map +1 -0
- package/dist/charts/engine/three-d/webgpu.cjs +2 -0
- package/dist/charts/engine/three-d/webgpu.cjs.map +1 -0
- package/dist/charts/engine/three-d/webgpu.d.cts +5 -0
- package/dist/charts/engine/three-d/webgpu.d.ts +5 -0
- package/dist/charts/engine/three-d/webgpu.js +260 -0
- package/dist/charts/engine/three-d/webgpu.js.map +1 -0
- package/dist/charts/engine/time.cjs +1 -1
- package/dist/charts/engine/time.cjs.map +1 -1
- package/dist/charts/engine/time.d.cts +13 -4
- package/dist/charts/engine/time.d.ts +13 -4
- package/dist/charts/engine/time.js +156 -91
- package/dist/charts/engine/time.js.map +1 -1
- package/dist/charts/engine/trading/chart.cjs +2 -0
- package/dist/charts/engine/trading/chart.cjs.map +1 -0
- package/dist/charts/engine/trading/chart.d.cts +13 -0
- package/dist/charts/engine/trading/chart.d.ts +13 -0
- package/dist/charts/engine/trading/chart.js +2206 -0
- package/dist/charts/engine/trading/chart.js.map +1 -0
- package/dist/charts/engine/trading/drawings.cjs +3 -0
- package/dist/charts/engine/trading/drawings.cjs.map +1 -0
- package/dist/charts/engine/trading/drawings.d.cts +95 -0
- package/dist/charts/engine/trading/drawings.d.ts +95 -0
- package/dist/charts/engine/trading/drawings.js +423 -0
- package/dist/charts/engine/trading/drawings.js.map +1 -0
- package/dist/charts/engine/trading/format.cjs +2 -0
- package/dist/charts/engine/trading/format.cjs.map +1 -0
- package/dist/charts/engine/trading/format.d.cts +73 -0
- package/dist/charts/engine/trading/format.d.ts +73 -0
- package/dist/charts/engine/trading/format.js +163 -0
- package/dist/charts/engine/trading/format.js.map +1 -0
- package/dist/charts/engine/trading/geometry.cjs +2 -0
- package/dist/charts/engine/trading/geometry.cjs.map +1 -0
- package/dist/charts/engine/trading/geometry.d.cts +55 -0
- package/dist/charts/engine/trading/geometry.d.ts +55 -0
- package/dist/charts/engine/trading/geometry.js +131 -0
- package/dist/charts/engine/trading/geometry.js.map +1 -0
- package/dist/charts/engine/trading/index.cjs +1 -0
- package/dist/charts/engine/trading/index.d.cts +4 -0
- package/dist/charts/engine/trading/index.d.ts +4 -0
- package/dist/charts/engine/trading/index.js +4 -0
- package/dist/charts/engine/trading/indicators.cjs +2 -0
- package/dist/charts/engine/trading/indicators.cjs.map +1 -0
- package/dist/charts/engine/trading/indicators.d.cts +275 -0
- package/dist/charts/engine/trading/indicators.d.ts +275 -0
- package/dist/charts/engine/trading/indicators.js +544 -0
- package/dist/charts/engine/trading/indicators.js.map +1 -0
- package/dist/charts/engine/trading/labels.cjs +2 -0
- package/dist/charts/engine/trading/labels.cjs.map +1 -0
- package/dist/charts/engine/trading/labels.d.cts +7 -0
- package/dist/charts/engine/trading/labels.d.ts +7 -0
- package/dist/charts/engine/trading/labels.js +171 -0
- package/dist/charts/engine/trading/labels.js.map +1 -0
- package/dist/charts/engine/trading/scale.cjs +2 -0
- package/dist/charts/engine/trading/scale.cjs.map +1 -0
- package/dist/charts/engine/trading/scale.d.cts +46 -0
- package/dist/charts/engine/trading/scale.d.ts +46 -0
- package/dist/charts/engine/trading/scale.js +100 -0
- package/dist/charts/engine/trading/scale.js.map +1 -0
- package/dist/charts/engine/trading/store.cjs +2 -0
- package/dist/charts/engine/trading/store.cjs.map +1 -0
- package/dist/charts/engine/trading/store.d.cts +83 -0
- package/dist/charts/engine/trading/store.d.ts +83 -0
- package/dist/charts/engine/trading/store.js +150 -0
- package/dist/charts/engine/trading/store.js.map +1 -0
- package/dist/charts/engine/trading/studies.cjs +2 -0
- package/dist/charts/engine/trading/studies.cjs.map +1 -0
- package/dist/charts/engine/trading/studies.d.cts +85 -0
- package/dist/charts/engine/trading/studies.d.ts +85 -0
- package/dist/charts/engine/trading/studies.js +510 -0
- package/dist/charts/engine/trading/studies.js.map +1 -0
- package/dist/charts/engine/trading/sync.cjs +2 -0
- package/dist/charts/engine/trading/sync.cjs.map +1 -0
- package/dist/charts/engine/trading/sync.d.cts +8 -0
- package/dist/charts/engine/trading/sync.d.ts +8 -0
- package/dist/charts/engine/trading/sync.js +25 -0
- package/dist/charts/engine/trading/sync.js.map +1 -0
- package/dist/charts/engine/trading/types.d.cts +1131 -0
- package/dist/charts/engine/trading/types.d.ts +1131 -0
- package/dist/charts/engine/types.d.cts +247 -22
- package/dist/charts/engine/types.d.ts +247 -22
- package/dist/charts/index.cjs +1 -1
- package/dist/charts/index.d.cts +8 -4
- package/dist/charts/index.d.ts +8 -4
- package/dist/charts/index.js +30 -11
- package/dist/charts/react/Chart.cjs +1 -1
- package/dist/charts/react/Chart.cjs.map +1 -1
- package/dist/charts/react/Chart.d.cts +4 -4
- package/dist/charts/react/Chart.d.ts +4 -4
- package/dist/charts/react/Chart.js +5 -1
- package/dist/charts/react/Chart.js.map +1 -1
- package/dist/charts/react/charts.cjs +1 -1
- package/dist/charts/react/charts.cjs.map +1 -1
- package/dist/charts/react/charts.d.cts +39 -1
- package/dist/charts/react/charts.d.ts +39 -1
- package/dist/charts/react/charts.js +312 -128
- package/dist/charts/react/charts.js.map +1 -1
- package/dist/charts/react/graph.cjs +2 -0
- package/dist/charts/react/graph.cjs.map +1 -0
- package/dist/charts/react/graph.d.cts +213 -0
- package/dist/charts/react/graph.d.ts +213 -0
- package/dist/charts/react/graph.js +159 -0
- package/dist/charts/react/graph.js.map +1 -0
- package/dist/charts/react/orderbook.cjs +2 -0
- package/dist/charts/react/orderbook.cjs.map +1 -0
- package/dist/charts/react/orderbook.d.cts +142 -0
- package/dist/charts/react/orderbook.d.ts +142 -0
- package/dist/charts/react/orderbook.js +182 -0
- package/dist/charts/react/orderbook.js.map +1 -0
- package/dist/charts/react/shapes.cjs +1 -1
- package/dist/charts/react/shapes.cjs.map +1 -1
- package/dist/charts/react/shapes.d.cts +374 -9
- package/dist/charts/react/shapes.d.ts +374 -9
- package/dist/charts/react/shapes.js +323 -93
- package/dist/charts/react/shapes.js.map +1 -1
- package/dist/charts/react/three-d.cjs +2 -0
- package/dist/charts/react/three-d.cjs.map +1 -0
- package/dist/charts/react/three-d.d.cts +151 -0
- package/dist/charts/react/three-d.d.ts +151 -0
- package/dist/charts/react/three-d.js +154 -0
- package/dist/charts/react/three-d.js.map +1 -0
- package/dist/charts/react/trading.cjs +2 -0
- package/dist/charts/react/trading.cjs.map +1 -0
- package/dist/charts/react/trading.d.cts +145 -0
- package/dist/charts/react/trading.d.ts +145 -0
- package/dist/charts/react/trading.js +126 -0
- package/dist/charts/react/trading.js.map +1 -0
- package/dist/charts/react/types.d.cts +143 -8
- package/dist/charts/react/types.d.ts +143 -8
- package/dist/core/contracts.cjs +1 -1
- package/dist/core/contracts.cjs.map +1 -1
- package/dist/core/contracts.js +1 -1
- package/dist/core/contracts.js.map +1 -1
- package/dist/native/charts/src/canvas.cjs +1 -1
- package/dist/native/charts/src/canvas.js +9 -3
- package/dist/native/charts/src/engine/axis.cjs +1 -1
- package/dist/native/charts/src/engine/axis.cjs.map +1 -1
- package/dist/native/charts/src/engine/axis.js +43 -20
- package/dist/native/charts/src/engine/axis.js.map +1 -1
- package/dist/native/charts/src/engine/color.cjs +1 -1
- package/dist/native/charts/src/engine/color.cjs.map +1 -1
- package/dist/native/charts/src/engine/color.js +47 -5
- package/dist/native/charts/src/engine/color.js.map +1 -1
- package/dist/native/charts/src/engine/controller.cjs +2 -2
- package/dist/native/charts/src/engine/controller.cjs.map +1 -1
- package/dist/native/charts/src/engine/controller.js +415 -308
- package/dist/native/charts/src/engine/controller.js.map +1 -1
- package/dist/native/charts/src/engine/data.cjs +1 -1
- package/dist/native/charts/src/engine/data.cjs.map +1 -1
- package/dist/native/charts/src/engine/data.js +65 -49
- package/dist/native/charts/src/engine/data.js.map +1 -1
- package/dist/native/charts/src/engine/format.cjs +1 -1
- package/dist/native/charts/src/engine/format.cjs.map +1 -1
- package/dist/native/charts/src/engine/format.js +59 -21
- package/dist/native/charts/src/engine/format.js.map +1 -1
- package/dist/native/charts/src/engine/labels.cjs +2 -0
- package/dist/native/charts/src/engine/labels.cjs.map +1 -0
- package/dist/native/charts/src/engine/labels.js +98 -0
- package/dist/native/charts/src/engine/labels.js.map +1 -0
- package/dist/native/charts/src/engine/layout.cjs +1 -1
- package/dist/native/charts/src/engine/layout.cjs.map +1 -1
- package/dist/native/charts/src/engine/layout.js +62 -12
- package/dist/native/charts/src/engine/layout.js.map +1 -1
- package/dist/native/charts/src/engine/locale.cjs +2 -0
- package/dist/native/charts/src/engine/locale.cjs.map +1 -0
- package/dist/native/charts/src/engine/locale.js +60 -0
- package/dist/native/charts/src/engine/locale.js.map +1 -0
- package/dist/native/charts/src/engine/model.cjs +1 -1
- package/dist/native/charts/src/engine/model.cjs.map +1 -1
- package/dist/native/charts/src/engine/model.js +307 -119
- package/dist/native/charts/src/engine/model.js.map +1 -1
- package/dist/native/charts/src/engine/overlay.cjs +1 -1
- package/dist/native/charts/src/engine/overlay.cjs.map +1 -1
- package/dist/native/charts/src/engine/overlay.js +46 -23
- package/dist/native/charts/src/engine/overlay.js.map +1 -1
- package/dist/native/charts/src/engine/presets.cjs +2 -2
- package/dist/native/charts/src/engine/presets.cjs.map +1 -1
- package/dist/native/charts/src/engine/presets.js +470 -41
- package/dist/native/charts/src/engine/presets.js.map +1 -1
- package/dist/native/charts/src/engine/scale.cjs +1 -1
- package/dist/native/charts/src/engine/scale.cjs.map +1 -1
- package/dist/native/charts/src/engine/scale.js +1 -1
- package/dist/native/charts/src/engine/scale.js.map +1 -1
- package/dist/native/charts/src/engine/scene.cjs +1 -1
- package/dist/native/charts/src/engine/scene.cjs.map +1 -1
- package/dist/native/charts/src/engine/scene.js +489 -207
- package/dist/native/charts/src/engine/scene.js.map +1 -1
- package/dist/native/charts/src/engine/shapes/bullet.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/bullet.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/bullet.js +255 -0
- package/dist/native/charts/src/engine/shapes/bullet.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/calendar.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/calendar.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/calendar.js +369 -0
- package/dist/native/charts/src/engine/shapes/calendar.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/canvas.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/canvas.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/canvas.js +168 -0
- package/dist/native/charts/src/engine/shapes/canvas.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/chord.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/chord.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/chord.js +414 -0
- package/dist/native/charts/src/engine/shapes/chord.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/draw.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/draw.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/draw.js +195 -0
- package/dist/native/charts/src/engine/shapes/draw.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/funnel.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/funnel.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/funnel.js +149 -0
- package/dist/native/charts/src/engine/shapes/funnel.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/gauge.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/gauge.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/gauge.js +210 -0
- package/dist/native/charts/src/engine/shapes/gauge.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/hit.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/hit.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/hit.js +135 -0
- package/dist/native/charts/src/engine/shapes/hit.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/labels.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/labels.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/labels.js +154 -0
- package/dist/native/charts/src/engine/shapes/labels.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/layout.cjs +3 -0
- package/dist/native/charts/src/engine/shapes/layout.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/layout.js +358 -0
- package/dist/native/charts/src/engine/shapes/layout.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/pie.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/pie.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/pie.js +302 -0
- package/dist/native/charts/src/engine/shapes/pie.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/radar.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/radar.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/radar.js +198 -0
- package/dist/native/charts/src/engine/shapes/radar.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/radialBar.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/radialBar.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/radialBar.js +155 -0
- package/dist/native/charts/src/engine/shapes/radialBar.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/runtime.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/runtime.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/runtime.js +107 -0
- package/dist/native/charts/src/engine/shapes/runtime.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/sankey.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/sankey.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/sankey.js +372 -0
- package/dist/native/charts/src/engine/shapes/sankey.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/scene.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/scene.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/scene.js +168 -0
- package/dist/native/charts/src/engine/shapes/scene.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/sunburst.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/sunburst.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/sunburst.js +261 -0
- package/dist/native/charts/src/engine/shapes/sunburst.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/treemap.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/treemap.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/treemap.js +213 -0
- package/dist/native/charts/src/engine/shapes/treemap.js.map +1 -0
- package/dist/native/charts/src/engine/time.cjs +1 -1
- package/dist/native/charts/src/engine/time.cjs.map +1 -1
- package/dist/native/charts/src/engine/time.js +156 -91
- package/dist/native/charts/src/engine/time.js.map +1 -1
- package/dist/native/components/Chart/ChartBase.cjs +1 -1
- package/dist/native/components/Chart/ChartBase.cjs.map +1 -1
- package/dist/native/components/Chart/ChartBase.d.cts +1 -1
- package/dist/native/components/Chart/ChartBase.d.ts +1 -1
- package/dist/native/components/Chart/ChartBase.js +110 -107
- package/dist/native/components/Chart/ChartBase.js.map +1 -1
- package/dist/native/components/Chart/charts.cjs +1 -1
- package/dist/native/components/Chart/charts.cjs.map +1 -1
- package/dist/native/components/Chart/charts.d.cts +6 -1
- package/dist/native/components/Chart/charts.d.ts +6 -1
- package/dist/native/components/Chart/charts.js +53 -29
- package/dist/native/components/Chart/charts.js.map +1 -1
- package/dist/native/components/Chart/index.cjs +1 -1
- package/dist/native/components/Chart/index.d.cts +1 -1
- package/dist/native/components/Chart/index.d.ts +1 -1
- package/dist/native/components/Chart/index.js +2 -2
- package/dist/native/components/Chart/scene.cjs +1 -1
- package/dist/native/components/Chart/scene.cjs.map +1 -1
- package/dist/native/components/Chart/scene.js +315 -229
- package/dist/native/components/Chart/scene.js.map +1 -1
- package/dist/native/components/Chart/types.d.cts +26 -3
- package/dist/native/components/Chart/types.d.ts +26 -3
- package/dist/native/components/Charts/charts.cjs +2 -0
- package/dist/native/components/Charts/charts.cjs.map +1 -0
- package/dist/native/components/Charts/charts.d.cts +41 -0
- package/dist/native/components/Charts/charts.d.ts +41 -0
- package/dist/native/components/Charts/charts.js +350 -0
- package/dist/native/components/Charts/charts.js.map +1 -0
- package/dist/native/components/Charts/index.cjs +1 -0
- package/dist/native/components/Charts/index.d.cts +2 -0
- package/dist/native/components/Charts/index.d.ts +2 -0
- package/dist/native/components/Charts/index.js +2 -0
- package/dist/native/components/Charts/types.d.cts +155 -0
- package/dist/native/components/Charts/types.d.ts +155 -0
- package/dist/native/components/ShapeChart/ShapeChartBase.cjs +2 -0
- package/dist/native/components/ShapeChart/ShapeChartBase.cjs.map +1 -0
- package/dist/native/components/ShapeChart/ShapeChartBase.d.cts +24 -0
- package/dist/native/components/ShapeChart/ShapeChartBase.d.ts +24 -0
- package/dist/native/components/ShapeChart/ShapeChartBase.js +272 -0
- package/dist/native/components/ShapeChart/ShapeChartBase.js.map +1 -0
- package/dist/native/components/ShapeChart/charts.cjs +2 -0
- package/dist/native/components/ShapeChart/charts.cjs.map +1 -0
- package/dist/native/components/ShapeChart/charts.d.cts +43 -0
- package/dist/native/components/ShapeChart/charts.d.ts +43 -0
- package/dist/native/components/ShapeChart/charts.js +429 -0
- package/dist/native/components/ShapeChart/charts.js.map +1 -0
- package/dist/native/components/ShapeChart/draw.cjs +2 -0
- package/dist/native/components/ShapeChart/draw.cjs.map +1 -0
- package/dist/native/components/ShapeChart/draw.d.cts +4 -0
- package/dist/native/components/ShapeChart/draw.d.ts +4 -0
- package/dist/native/components/ShapeChart/draw.js +113 -0
- package/dist/native/components/ShapeChart/draw.js.map +1 -0
- package/dist/native/components/ShapeChart/geometry.cjs +2 -0
- package/dist/native/components/ShapeChart/geometry.cjs.map +1 -0
- package/dist/native/components/ShapeChart/geometry.d.cts +71 -0
- package/dist/native/components/ShapeChart/geometry.d.ts +71 -0
- package/dist/native/components/ShapeChart/geometry.js +681 -0
- package/dist/native/components/ShapeChart/geometry.js.map +1 -0
- package/dist/native/components/ShapeChart/index.cjs +1 -0
- package/dist/native/components/ShapeChart/index.d.cts +2 -0
- package/dist/native/components/ShapeChart/index.d.ts +2 -0
- package/dist/native/components/ShapeChart/index.js +2 -0
- package/dist/native/components/ShapeChart/recorder.cjs +2 -0
- package/dist/native/components/ShapeChart/recorder.cjs.map +1 -0
- package/dist/native/components/ShapeChart/recorder.d.cts +115 -0
- package/dist/native/components/ShapeChart/recorder.d.ts +115 -0
- package/dist/native/components/ShapeChart/recorder.js +583 -0
- package/dist/native/components/ShapeChart/recorder.js.map +1 -0
- package/dist/native/components/ShapeChart/types.d.cts +594 -0
- package/dist/native/components/ShapeChart/types.d.ts +594 -0
- package/dist/native/index.cjs +1 -1
- package/dist/native/index.d.cts +2 -0
- package/dist/native/index.d.ts +2 -0
- package/dist/native/index.js +14 -10
- package/dist/native/manifest.d.cts +6 -4
- package/dist/native/manifest.d.ts +6 -4
- package/dist/native/source/components/Chart/ChartBase.tsx +8 -1
- package/dist/native/source/components/Chart/charts.tsx +42 -6
- package/dist/native/source/components/Chart/index.ts +1 -0
- package/dist/native/source/components/Chart/scene.tsx +312 -98
- package/dist/native/source/components/Chart/types.ts +31 -1
- package/dist/native/source/components/Charts/charts.tsx +521 -0
- package/dist/native/source/components/Charts/index.ts +14 -0
- package/dist/native/source/components/Charts/types.ts +218 -0
- package/dist/native/source/components/ShapeChart/ShapeChartBase.tsx +486 -0
- package/dist/native/source/components/ShapeChart/charts.tsx +661 -0
- package/dist/native/source/components/ShapeChart/draw.tsx +201 -0
- package/dist/native/source/components/ShapeChart/geometry.ts +1366 -0
- package/dist/native/source/components/ShapeChart/index.ts +16 -0
- package/dist/native/source/components/ShapeChart/recorder.ts +845 -0
- package/dist/native/source/components/ShapeChart/types.ts +655 -0
- package/dist/native/source/index.ts +2 -0
- package/dist/native/source/manifest.ts +31 -4
- package/dist/taro/charts.d.ts +229 -4
- package/dist/taro/index.d.ts +1 -0
- package/dist/taro/index.js +8818 -2093
- package/dist/taro/manifest.d.ts +1 -0
- package/dist/taro/shape-charts.d.ts +629 -0
- package/dist/uni/AreaChart.vue +68 -0
- package/dist/uni/AreaChart.vue.d.ts +124 -0
- package/dist/uni/Badge.vue.d.ts +1 -1
- package/dist/uni/BarChart.vue.d.ts +5 -1
- package/dist/uni/BoxPlotChart.vue +66 -0
- package/dist/uni/BoxPlotChart.vue.d.ts +110 -0
- package/dist/uni/BubbleChart.vue +68 -0
- package/dist/uni/BubbleChart.vue.d.ts +110 -0
- package/dist/uni/BulletChart.vue +86 -0
- package/dist/uni/BulletChart.vue.d.ts +114 -0
- package/dist/uni/CalendarHeatmap.vue +92 -0
- package/dist/uni/CalendarHeatmap.vue.d.ts +131 -0
- package/dist/uni/CandlestickChart.vue +66 -0
- package/dist/uni/CandlestickChart.vue.d.ts +104 -0
- package/dist/uni/Chart.vue.d.ts +4 -0
- package/dist/uni/ChordChart.vue +93 -0
- package/dist/uni/ChordChart.vue.d.ts +136 -0
- package/dist/uni/DonutChart.vue +72 -0
- package/dist/uni/DonutChart.vue.d.ts +118 -0
- package/dist/uni/FunnelChart.vue +67 -0
- package/dist/uni/FunnelChart.vue.d.ts +108 -0
- package/dist/uni/GanttChart.vue +67 -0
- package/dist/uni/GanttChart.vue.d.ts +127 -0
- package/dist/uni/GaugeChart.vue +77 -0
- package/dist/uni/GaugeChart.vue.d.ts +127 -0
- package/dist/uni/HeatmapChart.vue +66 -0
- package/dist/uni/HeatmapChart.vue.d.ts +120 -0
- package/dist/uni/HistogramChart.vue +66 -0
- package/dist/uni/HistogramChart.vue.d.ts +125 -0
- package/dist/uni/HorizontalBarChart.vue +68 -0
- package/dist/uni/HorizontalBarChart.vue.d.ts +129 -0
- package/dist/uni/Input.vue.d.ts +1 -1
- package/dist/uni/LineChart.vue.d.ts +4 -0
- package/dist/uni/MixedChart.vue +68 -0
- package/dist/uni/MixedChart.vue.d.ts +110 -0
- package/dist/uni/NumberInput.vue.d.ts +1 -1
- package/dist/uni/PieChart.vue +72 -0
- package/dist/uni/PieChart.vue.d.ts +118 -0
- package/dist/uni/QuadrantChart.vue.d.ts +4 -0
- package/dist/uni/RadarChart.vue +67 -0
- package/dist/uni/RadarChart.vue.d.ts +114 -0
- package/dist/uni/RadialBarChart.vue +90 -0
- package/dist/uni/RadialBarChart.vue.d.ts +136 -0
- package/dist/uni/RangeAreaChart.vue +68 -0
- package/dist/uni/RangeAreaChart.vue.d.ts +106 -0
- package/dist/uni/ResponsiveGrid.vue.d.ts +1 -1
- package/dist/uni/SankeyChart.vue +88 -0
- package/dist/uni/SankeyChart.vue.d.ts +125 -0
- package/dist/uni/ScatterChart.vue.d.ts +4 -0
- package/dist/uni/ShapeChart.vue +73 -0
- package/dist/uni/ShapeChart.vue.d.ts +54 -0
- package/dist/uni/Sparkline.vue +58 -0
- package/dist/uni/Sparkline.vue.d.ts +81 -0
- package/dist/uni/SunburstChart.vue +90 -0
- package/dist/uni/SunburstChart.vue.d.ts +118 -0
- package/dist/uni/Textarea.vue.d.ts +1 -1
- package/dist/uni/TimePicker.vue.d.ts +1 -1
- package/dist/uni/ToastProvider.vue.d.ts +1 -1
- package/dist/uni/TreemapChart.vue +65 -0
- package/dist/uni/TreemapChart.vue.d.ts +104 -0
- package/dist/uni/WaterfallChart.vue +66 -0
- package/dist/uni/WaterfallChart.vue.d.ts +134 -0
- package/dist/uni/chart-canvas.d.ts +3 -0
- package/dist/uni/chart-canvas.js +4 -0
- package/dist/uni/chart-types.d.ts +240 -2
- package/dist/uni/chart-types.js +198 -0
- package/dist/uni/charts-canvas.js +8 -3
- package/dist/uni/index.d.ts +27 -1
- package/dist/uni/index.js +27 -1
- package/dist/uni/manifest.d.ts +279 -0
- package/dist/uni/manifest.js +397 -0
- package/dist/uni/named-chart-options.d.ts +95 -0
- package/dist/uni/named-chart-options.js +173 -0
- package/dist/uni/shape-chart-canvas.d.ts +53 -0
- package/dist/uni/shape-chart-canvas.js +333 -0
- package/dist/uni/shape-chart-types.d.ts +431 -0
- package/dist/uni/shape-chart-types.js +305 -0
- package/dist/vue/charts-global.d.ts +48 -0
- package/dist/vue/charts.d.ts +18 -0
- package/dist/vue/charts.js +56 -0
- package/dist/vue/charts.js.map +1 -0
- package/dist/vue/components/Chart/AreaChart.vue.d.ts +124 -0
- package/dist/vue/components/Chart/AreaChart.vue.js +7 -0
- package/dist/vue/components/Chart/AreaChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/AreaChart.vue_vue_type_script_setup_true_lang.js +49 -0
- package/dist/vue/components/Chart/AreaChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/Bar3DChart.vue.d.ts +132 -0
- package/dist/vue/components/Chart/Bar3DChart.vue.js +7 -0
- package/dist/vue/components/Chart/Bar3DChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/Bar3DChart.vue_vue_type_script_setup_true_lang.js +55 -0
- package/dist/vue/components/Chart/Bar3DChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/BarChart.vue.d.ts +123 -0
- package/dist/vue/components/Chart/BarChart.vue.js +7 -0
- package/dist/vue/components/Chart/BarChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/BarChart.vue_vue_type_script_setup_true_lang.js +53 -0
- package/dist/vue/components/Chart/BarChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/BoxPlotChart.vue.d.ts +120 -0
- package/dist/vue/components/Chart/BoxPlotChart.vue.js +7 -0
- package/dist/vue/components/Chart/BoxPlotChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/BoxPlotChart.vue_vue_type_script_setup_true_lang.js +63 -0
- package/dist/vue/components/Chart/BoxPlotChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/BubbleChart.vue.d.ts +106 -0
- package/dist/vue/components/Chart/BubbleChart.vue.js +7 -0
- package/dist/vue/components/Chart/BubbleChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/BubbleChart.vue_vue_type_script_setup_true_lang.js +52 -0
- package/dist/vue/components/Chart/BubbleChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/BulletChart.vue.d.ts +117 -0
- package/dist/vue/components/Chart/BulletChart.vue.js +7 -0
- package/dist/vue/components/Chart/BulletChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/BulletChart.vue_vue_type_script_setup_true_lang.js +64 -0
- package/dist/vue/components/Chart/BulletChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/CalendarHeatmap.vue.d.ts +144 -0
- package/dist/vue/components/Chart/CalendarHeatmap.vue.js +7 -0
- package/dist/vue/components/Chart/CalendarHeatmap.vue.js.map +1 -0
- package/dist/vue/components/Chart/CalendarHeatmap.vue_vue_type_script_setup_true_lang.js +77 -0
- package/dist/vue/components/Chart/CalendarHeatmap.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/CandlestickChart.vue.d.ts +94 -0
- package/dist/vue/components/Chart/CandlestickChart.vue.js +7 -0
- package/dist/vue/components/Chart/CandlestickChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/CandlestickChart.vue_vue_type_script_setup_true_lang.js +44 -0
- package/dist/vue/components/Chart/CandlestickChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/Chart.vue.d.ts +103 -0
- package/dist/vue/components/Chart/Chart.vue.js +7 -0
- package/dist/vue/components/Chart/Chart.vue.js.map +1 -0
- package/dist/vue/components/Chart/Chart.vue_vue_type_script_setup_true_lang.js +47 -0
- package/dist/vue/components/Chart/Chart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/ChordChart.vue.d.ts +153 -0
- package/dist/vue/components/Chart/ChordChart.vue.js +7 -0
- package/dist/vue/components/Chart/ChordChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/ChordChart.vue_vue_type_script_setup_true_lang.js +81 -0
- package/dist/vue/components/Chart/ChordChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/DependencyGraph.vue.d.ts +179 -0
- package/dist/vue/components/Chart/DependencyGraph.vue.js +7 -0
- package/dist/vue/components/Chart/DependencyGraph.vue.js.map +1 -0
- package/dist/vue/components/Chart/DependencyGraph.vue_vue_type_script_setup_true_lang.js +65 -0
- package/dist/vue/components/Chart/DependencyGraph.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/DepthChart.vue.d.ts +139 -0
- package/dist/vue/components/Chart/DepthChart.vue.js +7 -0
- package/dist/vue/components/Chart/DepthChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/DepthChart.vue_vue_type_script_setup_true_lang.js +42 -0
- package/dist/vue/components/Chart/DepthChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/DonutChart.vue.d.ts +104 -0
- package/dist/vue/components/Chart/DonutChart.vue.js +7 -0
- package/dist/vue/components/Chart/DonutChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/DonutChart.vue_vue_type_script_setup_true_lang.js +53 -0
- package/dist/vue/components/Chart/DonutChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/FunnelChart.vue.d.ts +105 -0
- package/dist/vue/components/Chart/FunnelChart.vue.js +7 -0
- package/dist/vue/components/Chart/FunnelChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/FunnelChart.vue_vue_type_script_setup_true_lang.js +58 -0
- package/dist/vue/components/Chart/FunnelChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/GanttChart.vue.d.ts +136 -0
- package/dist/vue/components/Chart/GanttChart.vue.js +7 -0
- package/dist/vue/components/Chart/GanttChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/GanttChart.vue_vue_type_script_setup_true_lang.js +101 -0
- package/dist/vue/components/Chart/GanttChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/GaugeChart.vue.d.ts +132 -0
- package/dist/vue/components/Chart/GaugeChart.vue.js +7 -0
- package/dist/vue/components/Chart/GaugeChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/GaugeChart.vue_vue_type_script_setup_true_lang.js +71 -0
- package/dist/vue/components/Chart/GaugeChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/GraphChart.vue.d.ts +184 -0
- package/dist/vue/components/Chart/GraphChart.vue.js +7 -0
- package/dist/vue/components/Chart/GraphChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/GraphChart.vue_vue_type_script_setup_true_lang.js +62 -0
- package/dist/vue/components/Chart/GraphChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/HeatmapChart.vue.d.ts +129 -0
- package/dist/vue/components/Chart/HeatmapChart.vue.js +7 -0
- package/dist/vue/components/Chart/HeatmapChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/HeatmapChart.vue_vue_type_script_setup_true_lang.js +67 -0
- package/dist/vue/components/Chart/HeatmapChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/HistogramChart.vue.d.ts +132 -0
- package/dist/vue/components/Chart/HistogramChart.vue.js +7 -0
- package/dist/vue/components/Chart/HistogramChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/HistogramChart.vue_vue_type_script_setup_true_lang.js +66 -0
- package/dist/vue/components/Chart/HistogramChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/HorizontalBarChart.vue.d.ts +121 -0
- package/dist/vue/components/Chart/HorizontalBarChart.vue.js +7 -0
- package/dist/vue/components/Chart/HorizontalBarChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/HorizontalBarChart.vue_vue_type_script_setup_true_lang.js +55 -0
- package/dist/vue/components/Chart/HorizontalBarChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/Line3DChart.vue.d.ts +121 -0
- package/dist/vue/components/Chart/Line3DChart.vue.js +7 -0
- package/dist/vue/components/Chart/Line3DChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/Line3DChart.vue_vue_type_script_setup_true_lang.js +47 -0
- package/dist/vue/components/Chart/Line3DChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/LineChart.vue.d.ts +125 -0
- package/dist/vue/components/Chart/LineChart.vue.js +7 -0
- package/dist/vue/components/Chart/LineChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/LineChart.vue_vue_type_script_setup_true_lang.js +50 -0
- package/dist/vue/components/Chart/LineChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/MixedChart.vue.d.ts +103 -0
- package/dist/vue/components/Chart/MixedChart.vue.js +7 -0
- package/dist/vue/components/Chart/MixedChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/MixedChart.vue_vue_type_script_setup_true_lang.js +47 -0
- package/dist/vue/components/Chart/MixedChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/OrderBook.vue.d.ts +125 -0
- package/dist/vue/components/Chart/OrderBook.vue.js +7 -0
- package/dist/vue/components/Chart/OrderBook.vue.js.map +1 -0
- package/dist/vue/components/Chart/OrderBook.vue_vue_type_script_setup_true_lang.js +38 -0
- package/dist/vue/components/Chart/OrderBook.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/OrderBookHeatmap.vue.d.ts +130 -0
- package/dist/vue/components/Chart/OrderBookHeatmap.vue.js +7 -0
- package/dist/vue/components/Chart/OrderBookHeatmap.vue.js.map +1 -0
- package/dist/vue/components/Chart/OrderBookHeatmap.vue_vue_type_script_setup_true_lang.js +46 -0
- package/dist/vue/components/Chart/OrderBookHeatmap.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/PieChart.vue.d.ts +104 -0
- package/dist/vue/components/Chart/PieChart.vue.js +7 -0
- package/dist/vue/components/Chart/PieChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/PieChart.vue_vue_type_script_setup_true_lang.js +53 -0
- package/dist/vue/components/Chart/PieChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/QuadrantChart.vue.d.ts +186 -0
- package/dist/vue/components/Chart/QuadrantChart.vue.js +7 -0
- package/dist/vue/components/Chart/QuadrantChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/QuadrantChart.vue_vue_type_script_setup_true_lang.js +107 -0
- package/dist/vue/components/Chart/QuadrantChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/RadarChart.vue.d.ts +111 -0
- package/dist/vue/components/Chart/RadarChart.vue.js +7 -0
- package/dist/vue/components/Chart/RadarChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/RadarChart.vue_vue_type_script_setup_true_lang.js +61 -0
- package/dist/vue/components/Chart/RadarChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/RadialBarChart.vue.d.ts +147 -0
- package/dist/vue/components/Chart/RadialBarChart.vue.js +7 -0
- package/dist/vue/components/Chart/RadialBarChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/RadialBarChart.vue_vue_type_script_setup_true_lang.js +78 -0
- package/dist/vue/components/Chart/RadialBarChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/RangeAreaChart.vue.d.ts +106 -0
- package/dist/vue/components/Chart/RangeAreaChart.vue.js +7 -0
- package/dist/vue/components/Chart/RangeAreaChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/RangeAreaChart.vue_vue_type_script_setup_true_lang.js +51 -0
- package/dist/vue/components/Chart/RangeAreaChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/SankeyChart.vue.d.ts +132 -0
- package/dist/vue/components/Chart/SankeyChart.vue.js +7 -0
- package/dist/vue/components/Chart/SankeyChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/SankeyChart.vue_vue_type_script_setup_true_lang.js +71 -0
- package/dist/vue/components/Chart/SankeyChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/Scatter3DChart.vue.d.ts +121 -0
- package/dist/vue/components/Chart/Scatter3DChart.vue.js +7 -0
- package/dist/vue/components/Chart/Scatter3DChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/Scatter3DChart.vue_vue_type_script_setup_true_lang.js +47 -0
- package/dist/vue/components/Chart/Scatter3DChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/ScatterChart.vue.d.ts +94 -0
- package/dist/vue/components/Chart/ScatterChart.vue.js +7 -0
- package/dist/vue/components/Chart/ScatterChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/ScatterChart.vue_vue_type_script_setup_true_lang.js +44 -0
- package/dist/vue/components/Chart/ScatterChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/ShapeChart.vue.d.ts +39 -0
- package/dist/vue/components/Chart/ShapeChart.vue.js +7 -0
- package/dist/vue/components/Chart/ShapeChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/ShapeChart.vue_vue_type_script_setup_true_lang.js +43 -0
- package/dist/vue/components/Chart/ShapeChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/Sparkline.vue.d.ts +90 -0
- package/dist/vue/components/Chart/Sparkline.vue.js +7 -0
- package/dist/vue/components/Chart/Sparkline.vue.js.map +1 -0
- package/dist/vue/components/Chart/Sparkline.vue_vue_type_script_setup_true_lang.js +66 -0
- package/dist/vue/components/Chart/Sparkline.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/SunburstChart.vue.d.ts +123 -0
- package/dist/vue/components/Chart/SunburstChart.vue.js +7 -0
- package/dist/vue/components/Chart/SunburstChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/SunburstChart.vue_vue_type_script_setup_true_lang.js +68 -0
- package/dist/vue/components/Chart/SunburstChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/Surface3DChart.vue.d.ts +143 -0
- package/dist/vue/components/Chart/Surface3DChart.vue.js +7 -0
- package/dist/vue/components/Chart/Surface3DChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/Surface3DChart.vue_vue_type_script_setup_true_lang.js +60 -0
- package/dist/vue/components/Chart/Surface3DChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/TimeAndSales.vue.d.ts +116 -0
- package/dist/vue/components/Chart/TimeAndSales.vue.js +7 -0
- package/dist/vue/components/Chart/TimeAndSales.vue.js.map +1 -0
- package/dist/vue/components/Chart/TimeAndSales.vue_vue_type_script_setup_true_lang.js +46 -0
- package/dist/vue/components/Chart/TimeAndSales.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/TradingChart.vue.d.ts +208 -0
- package/dist/vue/components/Chart/TradingChart.vue.js +7 -0
- package/dist/vue/components/Chart/TradingChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/TradingChart.vue_vue_type_script_setup_true_lang.js +101 -0
- package/dist/vue/components/Chart/TradingChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/TreeChart.vue.d.ts +172 -0
- package/dist/vue/components/Chart/TreeChart.vue.js +7 -0
- package/dist/vue/components/Chart/TreeChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/TreeChart.vue_vue_type_script_setup_true_lang.js +56 -0
- package/dist/vue/components/Chart/TreeChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/TreemapChart.vue.d.ts +97 -0
- package/dist/vue/components/Chart/TreemapChart.vue.js +7 -0
- package/dist/vue/components/Chart/TreemapChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/TreemapChart.vue_vue_type_script_setup_true_lang.js +54 -0
- package/dist/vue/components/Chart/TreemapChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/WaterfallChart.vue.d.ts +143 -0
- package/dist/vue/components/Chart/WaterfallChart.vue.js +7 -0
- package/dist/vue/components/Chart/WaterfallChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/WaterfallChart.vue_vue_type_script_setup_true_lang.js +74 -0
- package/dist/vue/components/Chart/WaterfallChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/cartesian.d.ts +47 -0
- package/dist/vue/components/Chart/cartesian.js +56 -0
- package/dist/vue/components/Chart/cartesian.js.map +1 -0
- package/dist/vue/components/Chart/engine.d.ts +35 -0
- package/dist/vue/components/Chart/engine.js +35 -0
- package/dist/vue/components/Chart/engine.js.map +1 -0
- package/dist/vue/components/Chart/graph.d.ts +153 -0
- package/dist/vue/components/Chart/graph.js +135 -0
- package/dist/vue/components/Chart/graph.js.map +1 -0
- package/dist/vue/components/Chart/index.d.ts +45 -0
- package/dist/vue/components/Chart/index.js +44 -0
- package/dist/vue/components/Chart/orderbook.d.ts +363 -0
- package/dist/vue/components/Chart/orderbook.js +128 -0
- package/dist/vue/components/Chart/orderbook.js.map +1 -0
- package/dist/vue/components/Chart/props.d.ts +188 -0
- package/dist/vue/components/Chart/props.js +92 -0
- package/dist/vue/components/Chart/props.js.map +1 -0
- package/dist/vue/components/Chart/shape.d.ts +41 -0
- package/dist/vue/components/Chart/shape.js +42 -0
- package/dist/vue/components/Chart/shape.js.map +1 -0
- package/dist/vue/components/Chart/three-d.d.ts +106 -0
- package/dist/vue/components/Chart/three-d.js +88 -0
- package/dist/vue/components/Chart/three-d.js.map +1 -0
- package/dist/vue/components/Chart/trading.d.ts +127 -0
- package/dist/vue/components/Chart/trading.js +63 -0
- package/dist/vue/components/Chart/trading.js.map +1 -0
- package/dist/vue/components/Chart/types.d.ts +209 -0
- package/dist/vue/global.d.ts +2 -0
- package/dist/vue/groups/charts.d.ts +1 -0
- package/dist/vue/groups/charts.js +95 -0
- package/dist/vue/groups/charts.js.map +1 -0
- package/dist/vue/index.d.ts +1 -0
- package/dist/vue/index.js +67 -23
- package/dist/vue/internal/register.d.ts +7 -0
- package/dist/vue/internal/register.js +14 -0
- package/dist/vue/internal/register.js.map +1 -0
- package/dist/vue/plugin.d.ts +9 -4
- package/dist/vue/plugin.js +7 -10
- package/dist/vue/plugin.js.map +1 -1
- package/dist/weapp/area-chart/index.js +1 -0
- package/dist/weapp/area-chart/index.json +1 -0
- package/dist/weapp/area-chart/index.wxml +1 -0
- package/dist/weapp/area-chart/index.wxss +1 -0
- package/dist/weapp/box-plot-chart/index.js +1 -0
- package/dist/weapp/box-plot-chart/index.json +1 -0
- package/dist/weapp/box-plot-chart/index.wxml +1 -0
- package/dist/weapp/box-plot-chart/index.wxss +1 -0
- package/dist/weapp/bubble-chart/index.js +1 -0
- package/dist/weapp/bubble-chart/index.json +1 -0
- package/dist/weapp/bubble-chart/index.wxml +1 -0
- package/dist/weapp/bubble-chart/index.wxss +1 -0
- package/dist/weapp/bullet-chart/index.js +1 -0
- package/dist/weapp/bullet-chart/index.json +1 -0
- package/dist/weapp/bullet-chart/index.wxml +1 -0
- package/dist/weapp/bullet-chart/index.wxss +1 -0
- package/dist/weapp/calendar-heatmap/index.js +1 -0
- package/dist/weapp/calendar-heatmap/index.json +1 -0
- package/dist/weapp/calendar-heatmap/index.wxml +1 -0
- package/dist/weapp/calendar-heatmap/index.wxss +1 -0
- package/dist/weapp/candlestick-chart/index.js +1 -0
- package/dist/weapp/candlestick-chart/index.json +1 -0
- package/dist/weapp/candlestick-chart/index.wxml +1 -0
- package/dist/weapp/candlestick-chart/index.wxss +1 -0
- package/dist/weapp/charts/canvas.js +12976 -0
- package/dist/weapp/charts/core.d.ts +2 -0
- package/dist/weapp/charts/core.js +42 -0
- package/dist/weapp/chord-chart/index.js +1 -0
- package/dist/weapp/chord-chart/index.json +1 -0
- package/dist/weapp/chord-chart/index.wxml +1 -0
- package/dist/weapp/chord-chart/index.wxss +1 -0
- package/dist/weapp/controls.js +1495 -4480
- package/dist/weapp/donut-chart/index.js +1 -0
- package/dist/weapp/donut-chart/index.json +1 -0
- package/dist/weapp/donut-chart/index.wxml +1 -0
- package/dist/weapp/donut-chart/index.wxss +1 -0
- package/dist/weapp/funnel-chart/index.js +1 -0
- package/dist/weapp/funnel-chart/index.json +1 -0
- package/dist/weapp/funnel-chart/index.wxml +1 -0
- package/dist/weapp/funnel-chart/index.wxss +1 -0
- package/dist/weapp/gantt-chart/index.js +1 -0
- package/dist/weapp/gantt-chart/index.json +1 -0
- package/dist/weapp/gantt-chart/index.wxml +1 -0
- package/dist/weapp/gantt-chart/index.wxss +1 -0
- package/dist/weapp/gauge-chart/index.js +1 -0
- package/dist/weapp/gauge-chart/index.json +1 -0
- package/dist/weapp/gauge-chart/index.wxml +1 -0
- package/dist/weapp/gauge-chart/index.wxss +1 -0
- package/dist/weapp/heatmap-chart/index.js +1 -0
- package/dist/weapp/heatmap-chart/index.json +1 -0
- package/dist/weapp/heatmap-chart/index.wxml +1 -0
- package/dist/weapp/heatmap-chart/index.wxss +1 -0
- package/dist/weapp/histogram-chart/index.js +1 -0
- package/dist/weapp/histogram-chart/index.json +1 -0
- package/dist/weapp/histogram-chart/index.wxml +1 -0
- package/dist/weapp/histogram-chart/index.wxss +1 -0
- package/dist/weapp/horizontal-bar-chart/index.js +1 -0
- package/dist/weapp/horizontal-bar-chart/index.json +1 -0
- package/dist/weapp/horizontal-bar-chart/index.wxml +1 -0
- package/dist/weapp/horizontal-bar-chart/index.wxss +1 -0
- package/dist/weapp/mixed-chart/index.js +1 -0
- package/dist/weapp/mixed-chart/index.json +1 -0
- package/dist/weapp/mixed-chart/index.wxml +1 -0
- package/dist/weapp/mixed-chart/index.wxss +1 -0
- package/dist/weapp/pie-chart/index.js +1 -0
- package/dist/weapp/pie-chart/index.json +1 -0
- package/dist/weapp/pie-chart/index.wxml +1 -0
- package/dist/weapp/pie-chart/index.wxss +1 -0
- package/dist/weapp/radar-chart/index.js +1 -0
- package/dist/weapp/radar-chart/index.json +1 -0
- package/dist/weapp/radar-chart/index.wxml +1 -0
- package/dist/weapp/radar-chart/index.wxss +1 -0
- package/dist/weapp/radial-bar-chart/index.js +1 -0
- package/dist/weapp/radial-bar-chart/index.json +1 -0
- package/dist/weapp/radial-bar-chart/index.wxml +1 -0
- package/dist/weapp/radial-bar-chart/index.wxss +1 -0
- package/dist/weapp/range-area-chart/index.js +1 -0
- package/dist/weapp/range-area-chart/index.json +1 -0
- package/dist/weapp/range-area-chart/index.wxml +1 -0
- package/dist/weapp/range-area-chart/index.wxss +1 -0
- package/dist/weapp/sankey-chart/index.js +1 -0
- package/dist/weapp/sankey-chart/index.json +1 -0
- package/dist/weapp/sankey-chart/index.wxml +1 -0
- package/dist/weapp/sankey-chart/index.wxss +1 -0
- package/dist/weapp/shape-chart/index.js +1 -0
- package/dist/weapp/shape-chart/index.json +1 -0
- package/dist/weapp/shape-chart/index.wxml +1 -0
- package/dist/weapp/shape-chart/index.wxss +1 -0
- package/dist/weapp/sparkline/index.js +1 -0
- package/dist/weapp/sparkline/index.json +1 -0
- package/dist/weapp/sparkline/index.wxml +1 -0
- package/dist/weapp/sparkline/index.wxss +1 -0
- package/dist/weapp/sunburst-chart/index.js +1 -0
- package/dist/weapp/sunburst-chart/index.json +1 -0
- package/dist/weapp/sunburst-chart/index.wxml +1 -0
- package/dist/weapp/sunburst-chart/index.wxss +1 -0
- package/dist/weapp/treemap-chart/index.js +1 -0
- package/dist/weapp/treemap-chart/index.json +1 -0
- package/dist/weapp/treemap-chart/index.wxml +1 -0
- package/dist/weapp/treemap-chart/index.wxss +1 -0
- package/dist/weapp/types.d.ts +549 -0
- package/dist/weapp/waterfall-chart/index.js +1 -0
- package/dist/weapp/waterfall-chart/index.json +1 -0
- package/dist/weapp/waterfall-chart/index.wxml +1 -0
- package/dist/weapp/waterfall-chart/index.wxss +1 -0
- package/dist/web-components/components/chart/chart.d.ts +58 -0
- package/dist/web-components/components/chart/chart.js +55 -0
- package/dist/web-components/components/chart/chart.js.map +1 -0
- package/dist/web-components/components/chart/charts.d.ts +254 -0
- package/dist/web-components/components/chart/charts.js +208 -0
- package/dist/web-components/components/chart/charts.js.map +1 -0
- package/dist/web-components/components/chart/engine-element.d.ts +53 -0
- package/dist/web-components/components/chart/engine-element.js +77 -0
- package/dist/web-components/components/chart/engine-element.js.map +1 -0
- package/dist/web-components/components/chart/extended.d.ts +234 -0
- package/dist/web-components/components/chart/extended.js +197 -0
- package/dist/web-components/components/chart/extended.js.map +1 -0
- package/dist/web-components/components/chart/series.d.ts +7 -0
- package/dist/web-components/components/chart/series.js +14 -0
- package/dist/web-components/components/chart/series.js.map +1 -0
- package/dist/web-components/components/chart/shape-chart.d.ts +199 -0
- package/dist/web-components/components/chart/shape-chart.js +161 -0
- package/dist/web-components/components/chart/shape-chart.js.map +1 -0
- package/dist/web-components/components/chart/shapes-extended.d.ts +198 -0
- package/dist/web-components/components/chart/shapes-extended.js +182 -0
- package/dist/web-components/components/chart/shapes-extended.js.map +1 -0
- package/dist/web-components/components/chart-3d/chart-3d.d.ts +111 -0
- package/dist/web-components/components/chart-3d/chart-3d.js +97 -0
- package/dist/web-components/components/chart-3d/chart-3d.js.map +1 -0
- package/dist/web-components/components/graph/graph.d.ts +154 -0
- package/dist/web-components/components/graph/graph.js +149 -0
- package/dist/web-components/components/graph/graph.js.map +1 -0
- package/dist/web-components/components/order-book/order-book.d.ts +165 -0
- package/dist/web-components/components/order-book/order-book.js +174 -0
- package/dist/web-components/components/order-book/order-book.js.map +1 -0
- package/dist/web-components/components/trading-chart/trading-chart.d.ts +143 -0
- package/dist/web-components/components/trading-chart/trading-chart.js +158 -0
- package/dist/web-components/components/trading-chart/trading-chart.js.map +1 -0
- package/dist/web-components/elements/chart-3d.d.ts +2 -0
- package/dist/web-components/elements/chart-3d.js +13 -0
- package/dist/web-components/elements/chart-3d.js.map +1 -0
- package/dist/web-components/elements/chart.d.ts +7 -0
- package/dist/web-components/elements/chart.js +44 -0
- package/dist/web-components/elements/chart.js.map +1 -0
- package/dist/web-components/elements/graph.d.ts +2 -0
- package/dist/web-components/elements/graph.js +12 -0
- package/dist/web-components/elements/graph.js.map +1 -0
- package/dist/web-components/elements/order-book.d.ts +2 -0
- package/dist/web-components/elements/order-book.js +13 -0
- package/dist/web-components/elements/order-book.js.map +1 -0
- package/dist/web-components/elements/trading-chart.d.ts +2 -0
- package/dist/web-components/elements/trading-chart.js +8 -0
- package/dist/web-components/elements/trading-chart.js.map +1 -0
- package/dist/web-components/html-custom-data.json +1470 -38
- package/dist/web-components/types/react.d.ts +494 -0
- package/dist/web-components/types/solid.d.ts +368 -0
- package/dist/web-components/types/svelte.d.ts +368 -0
- package/dist/web-components/types/vue.d.ts +410 -0
- package/package.json +128 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chart.cjs","names":["createGraphDom","readTheme","graphLocale","buildModel","parseColor","mix","forceInit","forceKernel","createForceRunner","tidyTreeLayout","computeSizing","layeredLayout","TREE_LEVEL_GAP","arcPositions","circularPositions","longestPath","NodeKind","endDirection","boundaryDistance","trimPath","arcPath","quadraticPath","roundCorners","orthogonalPath","splinePath","packColor","GAP","dashPath","luminance","toCss","labelOf","pointAt","pathLength","swatch","fill","distanceToPath","style","themeColorsChanged","watchTheme","watchLocale","resolveLocale","createRenderer","require_color","require_types","require_locale","require_detect","require_theme","require_force","require_circular","require_dag","require_dom","require_geometry","require_labels","require_model","require_sizing","require_tree","require_worker","LAYOUTS","TREE_TYPES","EDGE_PICK_LIMIT","HALO_LIMIT","TWEEN_MS","VIEW_TWEEN_MS","BOX_FONT_MIN","KEY_ZOOM","BUTTON_ZOOM","wheelFactor","pixels","deltaMode","deltaY","pinch","ease","t","pointBuffer","data","length","ensure","extra","next","x","y","points","i","resolveLayout","layout","layoutSignature","o","createGraphChart","doc","container","win","dom","stage","options","initialOptions","theme","dark","isDark","loc","destroyed","listeners","emit","type","fn","event","listening","reducedMotion","now","model","layoutType","direction","layoutSig","sizing","X","Y","TX","TY","FX","FY","visible","prevVisible","tween","tweenT","tree","dag","circ","runner","forcePending","collapsedIds","hiddenGroups","critical","descendants","paths","pathsDirty","sceneDirty","items","version","nodeColor","edgeColor","edgeWidth","edgeArrow","edgeDashed","groupColor","criticalColor","edgeLabelWidth","k","tx","ty","viewTween","userMoved","needsFit","fitAnimate","drawnOnce","followLayout","width","height","hover","focusIndex","focusVisible","selection","highlight","highlightKey","renderer","rendererToken","resolveReady","ready","resolve","frameId","interaction","c","isTree","collapsible","animationMs","a","highlightMode","edgeStyle","s","flow","resolveColor","value","fallback","measureCtx","measure","font","text","snapshot","map","stopRunner","collapsedSet","set","id","treeInput","w","h","startForce","follow","fixed","known","node","p","prev","e","j","radius","range","weight","mean","v","edge","alpha","sw","sh","init","f","animate","workerOption","useWorker","sim","emitLayoutEnd","invalidate","wasPending","runLayout","previousType","n","depth","ones","nextVisible","tx2","ty2","d","levelGap","spacing","input","oldVisible","countDescendants","ms","from","refreshCritical","refreshColors","updateAccessibility","renderLegend","counts","order","q","option","nodes","edges","path","ids","bg","palette","g","branch","roots","stack","b","neutral","mode","wOption","eRange","wMin","wMax","arrows","fade","isBox","port","vertical","sign","trimmed","ux","uy","l0","ex","ey","edgePath","arrow","style","tension","cx","cy","rs","rt","as","at","rm","out","route","pts","along","dir","bottom","left","bus","mid","mx","my","dx","dy","refreshPaths","straightEnds","len","updateHighlight","sources","edgeHover","key","buildScene","minPx","hl","layers","bucket","color","layer","arrowLen","buf","ends","tmp","l","item","nodeFill","halo","fills","rings","collapsedFill","selRings","avatars","boxBuckets","outlines","radiusPx","showHalo","drawOrder","selected","hovered","hasVisibleChild","solid","crit","border","body","pad","okey","list","scatter","count","buffer","f32","u32","bars","half","late","frame","transform","dpr","animating","target","fitView","approachView","k0","x0","y0","k1","x1","y1","kk","c0x","c0y","c1x","c1y","bw","bh","drawOverlay","positionTooltip","screenX","screenY","ellipsize","max","ctx","lo","hi","textColorOn","family","muted","bgCss","cols","rows","grid","free","c0","c1","r0","r1","mark","r","onScreen","sx","margin","sy","showBoxText","natural","size","avatar","maxWidth","subSize","block","subtitle","titleY","label","sub","initial","collapsed","active","bx","by","label2","priority","drawn","budget","drawLabel","force","strong","dim","raw","tw","place","placement","bx0","by0","bx1","by1","edgeMode","shownEdges","lit","lw","all","below","radial","flip","inner","right","maxLabel","hw","hh","pl","pr","pt","pb","aw","ah","ox","oy","zoomLimits","fit","to","rate","setView","zoomAround","nk","factor","ratio","legendKey","named","show","config","toggle","focused","hidden","toggleGroup","group","setHover","role","labels","keyboard","ia","lines","names","controls","pickGrid","pickCell","maxExtent","pickKey","buildPickGrid","pickNode","wx","px","wy","py","tol","minR","reach","best","bestD","pickEdge","pickAt","tooltipEnabled","hoverEvent","offsetX","offsetY","hit","sameHit","renderTooltip","tooltipTarget","tip","custom","content","defaultTooltip","ax","ay","gap","ev","th","row","el","name","header","title","fragment","tag","hoverFrame","pendingHover","scheduleHover","drag","setSelection","notify","selectNode","multi","additive","setCollapsed","collapse","kept","pointers","local","pinchInfo","onPointerDown","center","base","onPointerMove","scale","distance","nx","ny","startForceFrom","onPointerUp","was","handleClick","onPointerCancel","onPointerLeave","hintTimer","showHint","mac","onWheel","onDoubleClick","instance","onFocus","onBlur","drawnNodes","setFocus","degree","neighborInDirection","bestScore","vx","vy","across","score","startingNode","first","onKeyDown","start","onZoomIn","onZoomOut","onFit","resizeObserver","refreshTheme","fontChanged","unwatchTheme","unwatchLocale","initRenderer","token","canvas","kind","exclude","initialState","applySelectedOption","replaceData","focusId","dataChanged","previous","sig","changed","opts","nodeId","listener"],"sources":["../../../../../charts/src/engine/graph/chart.ts"],"sourcesContent":["// createGraphChart: relationship networks, dependency DAGs and trees. Nodes\n// and edges are drawn by a GPU backend (WebGPU -> WebGL2 -> WebGL) or by\n// Canvas2D through the shared renderer contract (edges = polylines, nodes =\n// discs and rounded boxes); labels, badges and the focus ring are a 2D\n// canvas above them. Layouts: force (Barnes–Hut, optional worker), layered\n// DAG, tidy / radial / mind map / org trees, circular and arc diagrams.\n\nimport {\n luminance,\n mix,\n packColor,\n parseColor,\n toCss,\n type Rgba,\n} from \"../color\";\nimport { resolveLocale, watchLocale } from \"../locale\";\nimport { createRenderer } from \"../renderers/detect\";\nimport {\n BAR_STRIDE,\n GAP,\n SCATTER_STRIDE,\n type BarItem,\n type ChartRenderer,\n type LineItem,\n type RenderItem,\n type ScatterItem,\n} from \"../renderers/types\";\nimport {\n readTheme,\n themeColorsChanged,\n watchTheme,\n type ChartTheme,\n} from \"../theme\";\nimport type { ChartRendererKind } from \"../types\";\nimport { arcPositions, circularPositions } from \"./circular\";\nimport { layeredLayout, longestPath } from \"./dag\";\nimport { createGraphDom, sizeCanvas, style, swatch } from \"./dom\";\nimport { forceInit, forceKernel } from \"./force\";\nimport {\n arcPath,\n arrowHead,\n boundaryDistance,\n cubicPoints,\n dashPath,\n distanceToPath,\n endDirection,\n orthogonalPath,\n pathLength,\n pointAt,\n quadraticPath,\n roundCorners,\n splinePath,\n trimPath,\n} from \"./geometry\";\nimport { fill, graphLocale, type GraphLocale } from \"./labels\";\nimport { buildModel, lineage, neighborhood, type GraphModel } from \"./model\";\nimport {\n LABEL_FONT_SIZE,\n NodeKind,\n computeSizing,\n labelOf,\n type NodeSizing,\n} from \"./sizing\";\nimport { TREE_LEVEL_GAP, tidyTreeLayout, type TreeType } from \"./tree\";\nimport type {\n GraphCircularLayoutResult,\n GraphDagLayoutResult,\n GraphChartEventMap,\n GraphChartInstance,\n GraphChartOptions,\n GraphDirection,\n GraphEdgeStyle,\n GraphHoverEvent,\n GraphInteractionOptions,\n GraphLayoutType,\n GraphPoint,\n GraphTreeLayoutResult,\n} from \"./types\";\nimport {\n WORKER_THRESHOLD,\n createForceRunner,\n type ForceRunner,\n} from \"./worker\";\n\nconst LAYOUTS: readonly GraphLayoutType[] = [\n \"force\",\n \"dag\",\n \"tree\",\n \"radial\",\n \"mindmap\",\n \"org\",\n \"circular\",\n \"arc\",\n \"none\",\n];\n\nconst TREE_TYPES = new Set<GraphLayoutType>([\n \"tree\",\n \"radial\",\n \"mindmap\",\n \"org\",\n]);\n\n/** Edge tooltips / picking are skipped above this number of edges */\nconst EDGE_PICK_LIMIT = 5000;\n/** Node halos are skipped above this number of nodes */\nconst HALO_LIMIT = 5000;\nconst TWEEN_MS = 450;\nconst VIEW_TWEEN_MS = 320;\n/** Smallest font (px) of the text inside boxes when zoomed out */\nconst BOX_FONT_MIN = 9;\nconst KEY_ZOOM = 1.25;\nconst BUTTON_ZOOM = 1.4;\n\nconst wheelFactor = (deltaY: number, deltaMode: number, pinch: boolean) => {\n const pixels =\n deltaMode === 1 ? deltaY * 16 : deltaMode === 2 ? deltaY * 400 : deltaY;\n const speed = pinch ? 0.01 : 0.0025;\n return Math.exp(Math.max(-1, Math.min(1, pixels * speed)));\n};\n\nconst ease = (t: number) =>\n t < 0.5 ? 4 * t * t * t : 1 - Math.pow(-2 * t + 2, 3) / 2;\n\n/** Grows a Float32Array of interleaved points */\nconst pointBuffer = () => {\n let data = new Float32Array(1024);\n let length = 0;\n const ensure = (extra: number) => {\n if (length + extra <= data.length) return;\n const next = new Float32Array(Math.max(data.length * 2, length + extra));\n next.set(data.subarray(0, length));\n data = next;\n };\n return {\n push(x: number, y: number) {\n ensure(2);\n data[length++] = x;\n data[length++] = y;\n },\n pushAll(points: readonly number[]) {\n ensure(points.length);\n for (let i = 0; i < points.length; i++) data[length++] = points[i];\n },\n count: () => length / 2,\n points: () => data.subarray(0, length),\n };\n};\n\ntype PointBuffer = ReturnType<typeof pointBuffer>;\n\ninterface Hit {\n type: \"node\" | \"edge\";\n index: number;\n}\n\ninterface Snapshot {\n x: number;\n y: number;\n visible: boolean;\n}\n\nexport const resolveLayout = (\n layout: GraphLayoutType | undefined,\n): GraphLayoutType => (layout && LAYOUTS.includes(layout) ? layout : \"force\");\n\nconst layoutSignature = (o: GraphChartOptions): string =>\n JSON.stringify([\n resolveLayout(o.layout),\n o.direction ?? \"\",\n o.force ?? null,\n o.dag\n ? { ...o.dag, criticalPath: undefined, criticalColor: undefined }\n : null,\n o.tree ?? null,\n o.circular ?? null,\n o.nodeSize ?? null,\n o.nodeShape ?? null,\n o.nodeLabels === false,\n ]);\n\nexport const createGraphChart = (\n container: HTMLElement,\n initialOptions: GraphChartOptions,\n): GraphChartInstance => {\n const doc = container.ownerDocument;\n const win = doc.defaultView;\n const dom = createGraphDom(container);\n const stage = dom.stage;\n let options = initialOptions;\n let theme: ChartTheme = readTheme(dom.root, options.palette);\n let dark = isDark(theme);\n let loc: GraphLocale = graphLocale(options.locale, options.labels);\n let destroyed = false;\n\n const listeners = new Map<\n keyof GraphChartEventMap,\n Set<(e: never) => void>\n >();\n const emit = <K extends keyof GraphChartEventMap>(\n type: K,\n event: GraphChartEventMap[K],\n ) => {\n listeners\n .get(type)\n ?.forEach((fn) => (fn as (e: GraphChartEventMap[K]) => void)(event));\n };\n const listening = (type: keyof GraphChartEventMap) =>\n !!listeners.get(type)?.size;\n\n const reducedMotion =\n typeof win?.matchMedia === \"function\"\n ? win.matchMedia(\"(prefers-reduced-motion: reduce)\")\n : null;\n const now = () => win?.performance?.now() ?? Date.now();\n\n // --------------------------------------------------------------- state\n\n let model: GraphModel = buildModel(\n options.nodes ?? [],\n options.edges ?? [],\n options.groups,\n );\n let layoutType: GraphLayoutType = resolveLayout(options.layout);\n let direction: GraphDirection = \"TB\";\n let layoutSig = layoutSignature(options);\n let sizing: NodeSizing;\n let X: Float64Array = new Float64Array(0);\n let Y: Float64Array = new Float64Array(0);\n let TX: Float64Array = new Float64Array(0);\n let TY: Float64Array = new Float64Array(0);\n let FX: Float64Array = new Float64Array(0);\n let FY: Float64Array = new Float64Array(0);\n let visible = new Uint8Array(0);\n let prevVisible: Uint8Array | null = null;\n let tween: { start: number; duration: number } | null = null;\n let tweenT = 1;\n let tree: GraphTreeLayoutResult | null = null;\n let dag: GraphDagLayoutResult | null = null;\n let circ: GraphCircularLayoutResult | null = null;\n let runner: ForceRunner | null = null;\n let forcePending = false;\n const collapsedIds = new Set<string>();\n const hiddenGroups = new Set<string>();\n let critical: { nodes: Uint8Array; edges: Uint8Array } | null = null;\n let descendants = new Int32Array(0);\n let paths: (number[] | null)[] = [];\n let pathsDirty = true;\n let sceneDirty = true;\n let items: RenderItem[] = [];\n let version = 0;\n\n // colors\n let nodeColor: Rgba[] = [];\n let edgeColor: Rgba[] = [];\n let edgeWidth = new Float64Array(0);\n let edgeArrow = new Uint8Array(0);\n let edgeDashed = new Uint8Array(0);\n let groupColor: Rgba[] = [];\n let criticalColor: Rgba = [0.94, 0.27, 0.27, 1];\n let edgeLabelWidth = new Float64Array(0);\n\n // view: screen = world * k + t (CSS pixels)\n let k = 1;\n let tx = 0;\n let ty = 0;\n let viewTween: {\n from: [number, number, number];\n to: [number, number, number];\n start: number;\n } | null = null;\n let userMoved = false;\n let needsFit = true;\n /** The next fit animates (layout changes after the first frame) */\n let fitAnimate = false;\n let drawnOnce = false;\n /** The view follows the running force layout (unless the user moved it) */\n let followLayout = false;\n let width = 0;\n let height = 0;\n\n // interaction\n let hover: Hit | null = null;\n let focusIndex = -1;\n let focusVisible = false;\n const selection = new Set<number>();\n let highlight: { nodes: Uint8Array; edges: Uint8Array; accent: Rgba } | null =\n null;\n let highlightKey = \"\";\n\n let renderer: ChartRenderer | null = null;\n let rendererToken = 0;\n let resolveReady: (kind: ChartRendererKind | null) => void = () => {};\n const ready = new Promise<ChartRendererKind | null>((resolve) => {\n resolveReady = resolve;\n });\n let frameId = 0;\n\n // ------------------------------------------------------------ options\n\n const interaction = (): Required<GraphInteractionOptions> | null => {\n const o = options.interaction;\n if (o === false) return null;\n const c = typeof o === \"object\" ? o : {};\n return {\n pan: c.pan ?? true,\n zoom: c.zoom ?? true,\n wheel: c.wheel ?? \"modifier\",\n drag:\n c.drag ??\n (layoutType === \"force\" ||\n layoutType === \"none\" ||\n layoutType === \"circular\"),\n select: c.select ?? true,\n keyboard: c.keyboard ?? true,\n zoomRange: c.zoomRange ?? [0.02, 8],\n };\n };\n\n const isTree = () => TREE_TYPES.has(layoutType);\n const collapsible = () => isTree() && options.tree?.collapsible !== false;\n const animationMs = () => {\n const a = options.animation;\n if (a === false || reducedMotion?.matches) return 0;\n return typeof a === \"number\" && a >= 0 ? a : TWEEN_MS;\n };\n const highlightMode = () =>\n options.highlight ?? (layoutType === \"dag\" ? \"lineage\" : \"neighbors\");\n\n const edgeStyle = (): GraphEdgeStyle => {\n const s = options.edgeStyle;\n const flow = layoutType === \"dag\" || isTree();\n if (s === \"straight\" || s === \"curve\") return s;\n if ((s === \"spline\" || s === \"orthogonal\") && flow) return s;\n if (s) return \"curve\";\n switch (layoutType) {\n case \"dag\":\n case \"tree\":\n case \"radial\":\n case \"mindmap\":\n return \"spline\";\n case \"org\":\n return \"orthogonal\";\n case \"circular\":\n case \"arc\":\n return \"curve\";\n default:\n return \"straight\";\n }\n };\n\n const resolveColor = (value: string, fallback: Rgba): Rgba => {\n const c = theme.resolve\n ? theme.resolve(value, fallback)\n : (parseColor(value) ?? fallback);\n return c[3] < 1 ? mix(theme.background, [c[0], c[1], c[2], 1], c[3]) : c;\n };\n\n // ----------------------------------------------------------- measure\n\n const measureCtx = dom.foreground.getContext(\"2d\");\n const measure = (text: string, font: string) => {\n if (!measureCtx) return text.length * 7;\n measureCtx.font = font;\n return measureCtx.measureText(text).width;\n };\n\n // ------------------------------------------------------------- layout\n\n const snapshot = (): Map<string, Snapshot> => {\n const map = new Map<string, Snapshot>();\n if (X.length !== model.n) return map;\n for (let i = 0; i < model.n; i++) {\n if (!Number.isFinite(X[i])) continue;\n map.set(model.nodes[i].id, {\n x: X[i],\n y: Y[i],\n visible: !!visible[i] && !forcePending,\n });\n }\n return map;\n };\n\n const stopRunner = () => {\n runner?.destroy();\n runner = null;\n forcePending = false;\n };\n\n const collapsedSet = () => {\n const set = new Set<number>();\n for (const id of collapsedIds) {\n const i = model.index.get(id);\n if (i !== undefined) set.add(i);\n }\n return set;\n };\n\n const treeInput = (\n type: TreeType,\n w: ArrayLike<number>,\n h: ArrayLike<number>,\n levelGap: number,\n ) => {\n const t = options.tree ?? {};\n return {\n n: model.n,\n source: model.source,\n target: model.target,\n width: w,\n height: h,\n type,\n direction,\n root: t.root !== undefined ? (model.index.get(t.root) ?? -1) : -1,\n levelGap,\n siblingGap:\n t.siblingGap ?? (type === \"org\" ? 20 : type === \"mindmap\" ? 10 : 12),\n collapsed: collapsedSet(),\n compact: t.compact,\n };\n };\n\n const startForce = (prev: Map<string, Snapshot>, follow = true) => {\n followLayout = follow;\n const n = model.n;\n const x = new Float64Array(n).fill(NaN);\n const y = new Float64Array(n).fill(NaN);\n const fixed = new Uint8Array(n);\n let known = 0;\n for (let i = 0; i < n; i++) {\n const node = model.nodes[i];\n const p = prev.get(node.id);\n if (p) {\n x[i] = p.x;\n y[i] = p.y;\n known++;\n } else if (Number.isFinite(node.x) && Number.isFinite(node.y)) {\n x[i] = node.x!;\n y[i] = node.y!;\n known++;\n }\n if (node.fixed && Number.isFinite(node.x) && Number.isFinite(node.y)) {\n x[i] = node.x!;\n y[i] = node.y!;\n fixed[i] = 1;\n }\n }\n // new nodes start next to a known neighbor\n if (known && known < n) {\n for (let i = 0; i < n; i++) {\n if (Number.isFinite(x[i])) continue;\n for (let a = model.adjStart[i]; a < model.adjStart[i + 1]; a++) {\n const e = model.adjEdge[a];\n const j = model.source[e] === i ? model.target[e] : model.source[e];\n if (Number.isFinite(x[j])) {\n x[i] = x[j] + ((i * 7919) % 17) - 8;\n y[i] = y[j] + ((i * 104729) % 17) - 8;\n break;\n }\n }\n }\n }\n const radius = new Float64Array(n);\n for (let i = 0; i < n; i++)\n radius[i] = Math.max(sizing.width[i], sizing.height[i]) / 2;\n const range = model.edgeValueRange;\n const weight = new Float64Array(model.m).fill(1);\n if (range) {\n const mean = (range[0] + range[1]) / 2 || 1;\n model.edges.forEach((edge, e) => {\n const v = edge.value;\n if (Number.isFinite(v) && v! > 0)\n weight[e] = Math.max(0.5, Math.min(2, Math.sqrt(v! / mean)));\n });\n }\n const alpha = known === 0 ? 1 : known === n ? 0.3 : 0.6;\n const sw = stage.clientWidth;\n const sh = stage.clientHeight;\n const init = forceInit(n, model.source, model.target, options.force, {\n x,\n y,\n radius,\n fixed,\n weight,\n alpha,\n aspect: sw > 0 && sh > 0 ? sw / sh : 1,\n });\n const f = options.force ?? {};\n const animate = f.animate !== false;\n const workerOption = f.worker ?? \"auto\";\n const useWorker =\n workerOption === true ||\n (workerOption === \"auto\" && n >= WORKER_THRESHOLD);\n X = x;\n Y = y;\n TX = x;\n TY = y;\n if (!animate && !useWorker) {\n const sim = forceKernel()(init);\n while (sim.tick(50));\n sim.settle();\n emitLayoutEnd();\n return;\n }\n forcePending = !animate;\n runner = createForceRunner(init, {\n worker: useWorker,\n stream: animate,\n now,\n onTick: () => {\n pathsDirty = true;\n invalidate();\n },\n onEnd: () => {\n const wasPending = forcePending;\n forcePending = false;\n pathsDirty = true;\n if (!userMoved && followLayout) {\n needsFit = true;\n // nothing was shown yet: appear fitted, otherwise glide to the fit\n fitAnimate = !wasPending;\n }\n followLayout = false;\n emitLayoutEnd();\n invalidate();\n },\n });\n };\n\n const emitLayoutEnd = () => {\n // after the current call stack (listeners may call the instance)\n void Promise.resolve().then(() => {\n if (!destroyed) emit(\"layoutEnd\", { layout: layoutType });\n });\n };\n\n const runLayout = (prev: Map<string, Snapshot>, animate: boolean) => {\n stopRunner();\n const previousType = layoutType;\n layoutType = resolveLayout(options.layout);\n direction = options.direction ?? (layoutType === \"tree\" ? \"LR\" : \"TB\");\n if (previousType !== layoutType) needsFit = true;\n const n = model.n;\n tree = null;\n dag = null;\n circ = null;\n\n let depth: Int32Array | null = null;\n if (layoutType === \"mindmap\") {\n const ones = new Float64Array(n).fill(1);\n depth = tidyTreeLayout(treeInput(\"mindmap\", ones, ones, 1)).depth;\n }\n sizing = computeSizing(\n model,\n layoutType,\n options,\n depth,\n measure,\n theme.fontFamily,\n );\n const nextVisible = new Uint8Array(n).fill(1);\n let tx2: Float64Array = new Float64Array(n);\n let ty2: Float64Array = new Float64Array(n);\n\n switch (layoutType) {\n case \"dag\": {\n const d = options.dag ?? {};\n dag = layeredLayout({\n n,\n source: model.source,\n target: model.target,\n width: sizing.width,\n height: sizing.height,\n direction,\n layerGap: d.layerGap ?? 56,\n nodeGap: d.nodeGap ?? 24,\n sweeps: d.sweeps ?? 8,\n });\n tx2 = dag.x;\n ty2 = dag.y;\n break;\n }\n case \"tree\":\n case \"radial\":\n case \"mindmap\":\n case \"org\": {\n const type = layoutType as TreeType;\n const levelGap =\n options.tree?.levelGap ??\n Math.max(TREE_LEVEL_GAP[type], sizing.levelGap);\n tree = tidyTreeLayout(\n treeInput(type, sizing.layoutWidth, sizing.layoutHeight, levelGap),\n );\n tx2 = tree.x;\n ty2 = tree.y;\n nextVisible.set(tree.visible);\n break;\n }\n case \"circular\":\n case \"arc\": {\n let spacing = 0;\n for (let i = 0; i < n; i++)\n spacing = Math.max(\n spacing,\n sizing.layoutWidth[i] + (layoutType === \"arc\" ? 8 : 10),\n );\n const input = {\n n,\n source: model.source,\n target: model.target,\n group: model.groupOf,\n order: options.circular?.order ?? \"group\",\n spacing: Math.max(layoutType === \"arc\" ? 16 : 18, spacing),\n };\n circ =\n layoutType === \"arc\" ? arcPositions(input) : circularPositions(input);\n tx2 = circ.x;\n ty2 = circ.y;\n break;\n }\n case \"none\": {\n model.nodes.forEach((node, i) => {\n const p = prev.get(node.id);\n tx2[i] = Number.isFinite(node.x) ? node.x! : (p?.x ?? 0);\n ty2[i] = Number.isFinite(node.y) ? node.y! : (p?.y ?? 0);\n });\n break;\n }\n default:\n break;\n }\n\n const oldVisible = new Uint8Array(n);\n for (let i = 0; i < n; i++)\n oldVisible[i] = prev.get(model.nodes[i].id)?.visible ? 1 : 0;\n visible = nextVisible;\n descendants = countDescendants();\n\n if (layoutType === \"force\") {\n startForce(prev);\n tween = null;\n prevVisible = null;\n } else {\n TX = tx2;\n TY = ty2;\n X = new Float64Array(n);\n Y = new Float64Array(n);\n const ms = animate && prev.size ? animationMs() : 0;\n if (ms > 0) {\n FX = new Float64Array(n);\n FY = new Float64Array(n);\n for (let i = 0; i < n; i++) {\n const p = prev.get(model.nodes[i].id);\n if (p && p.visible) {\n FX[i] = p.x;\n FY[i] = p.y;\n continue;\n }\n // entering nodes grow out of their closest previously shown ancestor\n let a = tree ? tree.parent[i] : -1;\n let from: Snapshot | undefined;\n while (a >= 0 && !(from = prev.get(model.nodes[a].id))?.visible)\n a = tree!.parent[a];\n FX[i] = from?.visible ? from.x : TX[i];\n FY[i] = from?.visible ? from.y : TY[i];\n }\n X.set(FX);\n Y.set(FY);\n prevVisible = oldVisible;\n tween = { start: now(), duration: ms };\n tweenT = 0;\n } else {\n X.set(TX);\n Y.set(TY);\n tween = null;\n prevVisible = null;\n }\n }\n if (!userMoved) {\n needsFit = true;\n fitAnimate = prev.size > 0 && animate && layoutType !== \"force\";\n }\n refreshCritical();\n refreshColors();\n edgeLabelWidth = new Float64Array(model.m).fill(NaN);\n pathsDirty = true;\n sceneDirty = true;\n highlightKey = \"\";\n updateAccessibility();\n renderLegend();\n invalidate();\n if (layoutType !== \"force\") emitLayoutEnd();\n };\n\n const countDescendants = () => {\n const counts = new Int32Array(model.n);\n if (!tree) return counts;\n const order: number[] = [];\n tree.parent.forEach((p, i) => {\n if (p < 0) order.push(i);\n });\n for (let q = 0; q < order.length; q++)\n order.push(...tree.children[order[q]]);\n for (let q = order.length - 1; q >= 0; q--) {\n const v = order[q];\n const p = tree.parent[v];\n if (p >= 0) counts[p] += counts[v] + 1;\n }\n return counts;\n };\n\n const refreshCritical = () => {\n critical = null;\n const option = options.dag?.criticalPath;\n if (!option || layoutType !== \"dag\") return;\n const nodes = new Uint8Array(model.n);\n const edges = new Uint8Array(model.m);\n if (option === true) {\n const path = longestPath(model.n, model.source, model.target, (i) => {\n const v = model.nodes[i].value;\n return Number.isFinite(v) && v! >= 0 ? v! : 1;\n });\n path.nodes.forEach((i) => (nodes[i] = 1));\n path.edges.forEach((e) => (edges[e] = 1));\n } else {\n const ids = option.map((id) => model.index.get(id) ?? -1);\n ids.forEach((i) => {\n if (i >= 0) nodes[i] = 1;\n });\n for (let e = 0; e < model.m; e++) {\n const s = ids.indexOf(model.source[e]);\n if (s >= 0 && ids[s + 1] === model.target[e]) edges[e] = 1;\n }\n }\n critical = { nodes, edges };\n };\n\n // ------------------------------------------------------------- colors\n\n const refreshColors = () => {\n const bg = theme.background;\n dark = isDark(theme);\n const palette = theme.palette.length ? theme.palette : [theme.primary];\n groupColor = model.groups.map((g, i) =>\n g.color\n ? resolveColor(g.color, palette[i % palette.length])\n : palette[i % palette.length],\n );\n criticalColor = resolveColor(\n options.dag?.criticalColor ?? \"var(--danger-color, #ef4444)\",\n [0.94, 0.27, 0.27, 1],\n );\n // mind maps color each branch\n const branch = new Int32Array(model.n).fill(-1);\n if (layoutType === \"mindmap\" && tree) {\n const roots: number[] = [];\n tree.parent.forEach((p, i) => p < 0 && roots.push(i));\n const firstLevel = roots.length\n ? [...tree.children[roots[0]], ...roots.slice(1)]\n : [];\n firstLevel.forEach((c, b) => {\n const stack = [c];\n while (stack.length) {\n const v = stack.pop()!;\n branch[v] = b;\n stack.push(...tree!.children[v]);\n }\n });\n }\n nodeColor = model.nodes.map((node, i) => {\n if (node.color) return resolveColor(node.color, theme.primary);\n const g = model.groupOf[i];\n if (g >= 0) return groupColor[g];\n if (branch[i] >= 0) return palette[(branch[i] + 1) % palette.length];\n return theme.primary;\n });\n const neutral = mix(bg, theme.textMuted, dark ? 0.42 : 0.36);\n const mode = options.edgeColor ?? \"neutral\";\n const wOption = options.edgeWidth;\n const eRange = model.edgeValueRange;\n const [wMin, wMax] = Array.isArray(wOption)\n ? (wOption as readonly [number, number])\n : typeof wOption === \"number\"\n ? [wOption, wOption]\n : eRange && eRange[1] > eRange[0]\n ? [1, 5]\n : [1.25, 1.25];\n edgeColor = [];\n edgeWidth = new Float64Array(model.m);\n edgeArrow = new Uint8Array(model.m);\n edgeDashed = new Uint8Array(model.m);\n const arrows = options.arrows ?? layoutType === \"dag\";\n model.edges.forEach((edge, e) => {\n const s = model.source[e];\n const t = model.target[e];\n let c = neutral;\n if (edge.color) c = resolveColor(edge.color, neutral);\n else if (mode === \"source\") c = mix(bg, nodeColor[s], 0.55);\n else if (mode === \"target\") c = mix(bg, nodeColor[t], 0.55);\n else if (layoutType === \"mindmap\") c = mix(bg, nodeColor[t], 0.7);\n edgeColor.push(c);\n let w = wMin;\n if (Number.isFinite(edge.width) && edge.width! > 0) w = edge.width!;\n else if (eRange && eRange[1] > eRange[0] && Number.isFinite(edge.value))\n w =\n wMin +\n (wMax - wMin) *\n Math.sqrt((edge.value! - eRange[0]) / (eRange[1] - eRange[0]));\n else if (layoutType === \"mindmap\" && tree && wOption === undefined)\n w = Math.max(1.25, 3.4 - tree.depth[t] * 0.75);\n edgeWidth[e] = w;\n edgeArrow[e] = (edge.directed ?? arrows) ? 1 : 0;\n edgeDashed[e] = edge.dashed ? 1 : 0;\n });\n sceneDirty = true;\n };\n\n // --------------------------------------------------------------- paths\n\n const fade = (i: number): number => {\n if (forcePending) return 0;\n const g = model.groupOf[i];\n if (g >= 0 && hiddenGroups.has(model.groups[g].id)) return 0;\n const v = visible[i];\n const p = prevVisible ? prevVisible[i] : v;\n if (tween) {\n if (v && p) return 1;\n if (v) return tweenT;\n if (p) return 1 - tweenT;\n return 0;\n }\n return v;\n };\n\n const isBox = (i: number) => sizing.kind[i] !== NodeKind.Circle;\n\n /** Port of a node on the flow axis (sign +1 = outgoing side) */\n const port = (\n i: number,\n vertical: boolean,\n sign: number,\n ): [number, number] =>\n vertical\n ? [X[i], Y[i] + (sign * sizing.height[i]) / 2]\n : [X[i] + (sign * sizing.width[i]) / 2, Y[i]];\n\n const flow = (): { vertical: boolean; sign: number } => {\n const d = layoutType === \"org\" ? \"TB\" : direction;\n return {\n vertical: layoutType !== \"mindmap\" && (d === \"TB\" || d === \"BT\"),\n sign: d === \"BT\" || d === \"RL\" ? -1 : 1,\n };\n };\n\n const trimmed = (\n points: number[],\n s: number,\n t: number,\n arrow: boolean,\n ): number[] => {\n if (points.length < 4) return points;\n const [ux, uy] = [points[2] - points[0], points[3] - points[1]];\n const l0 = Math.hypot(ux, uy) || 1;\n const [ex, ey] = endDirection(points);\n const a = boundaryDistance(\n isBox(s),\n sizing.width[s],\n sizing.height[s],\n ux / l0,\n uy / l0,\n );\n const b =\n boundaryDistance(isBox(t), sizing.width[t], sizing.height[t], ex, ey) +\n (arrow ? 1 : 0);\n return trimPath(points, a, b);\n };\n\n /** Polyline of a curved edge (straight edges are built on the fly) */\n const edgePath = (e: number, style: GraphEdgeStyle): number[] | null => {\n const s = model.source[e];\n const t = model.target[e];\n const arrow = !!edgeArrow[e];\n if (layoutType === \"arc\") {\n return trimmed(arcPath(X[s], X[t], Y[s]), s, t, arrow);\n }\n if (style === \"straight\") return null;\n if (layoutType === \"circular\" && style === \"curve\") {\n const tension = Math.max(\n 0,\n Math.min(1, options.circular?.tension ?? 0.8),\n );\n const cx = ((X[s] + X[t]) / 2) * (1 - tension);\n const cy = ((Y[s] + Y[t]) / 2) * (1 - tension);\n return trimmed(\n quadraticPath(X[s], Y[s], cx, cy, X[t], Y[t]),\n s,\n t,\n arrow,\n );\n }\n if (layoutType === \"radial\" && style === \"spline\") {\n const rs = Math.hypot(X[s], Y[s]);\n const rt = Math.hypot(X[t], Y[t]);\n const as = Math.atan2(Y[s], X[s]);\n const at = Math.atan2(Y[t], X[t]);\n const rm = (rs + rt) / 2;\n const out = [X[s], Y[s]];\n cubicPoints(\n out,\n X[s],\n Y[s],\n rs < 1e-6 ? X[s] : rm * Math.cos(as),\n rs < 1e-6 ? Y[s] : rm * Math.sin(as),\n rm * Math.cos(at),\n rm * Math.sin(at),\n X[t],\n Y[t],\n );\n return trimmed(out, s, t, arrow);\n }\n if (style === \"spline\" || style === \"orthogonal\") {\n const f = flow();\n let sign = f.sign;\n if (layoutType === \"mindmap\") sign = X[t] >= X[s] ? 1 : -1;\n const route = dag && !tween ? dag.routes[e] : null;\n let pts: number[];\n if (route && route.length >= 4) pts = route;\n else {\n const along = f.vertical ? Y[t] - Y[s] : X[t] - X[s];\n const dir =\n layoutType === \"mindmap\" ? sign : along * sign >= 0 ? sign : -sign;\n pts = [...port(s, f.vertical, dir), ...port(t, f.vertical, -dir)];\n }\n if (style === \"orthogonal\") {\n if (layoutType === \"org\" && tree?.stacked[t] && tree.parent[t] === s) {\n // compact column: down from the parent, along a bus on the left\n const bottom = Y[s] + sizing.height[s] / 2;\n const left = X[t] - sizing.width[t] / 2;\n const bus = left - 10;\n const mid = bottom + 14;\n return roundCorners(\n [X[s], bottom, X[s], mid, bus, mid, bus, Y[t], left, Y[t]],\n 6,\n );\n }\n if (layoutType === \"org\" && pts.length === 4) {\n const mid = (pts[1] + pts[3]) / 2;\n return roundCorners(\n [pts[0], pts[1], pts[0], mid, pts[2], mid, pts[2], pts[3]],\n 6,\n );\n }\n return orthogonalPath(pts, f.vertical, 8);\n }\n return splinePath(pts, f.vertical);\n }\n // curve\n const mx = (X[s] + X[t]) / 2;\n const my = (Y[s] + Y[t]) / 2;\n const dx = X[t] - X[s];\n const dy = Y[t] - Y[s];\n return trimmed(\n quadraticPath(X[s], Y[s], mx - dy * 0.18, my + dx * 0.18, X[t], Y[t]),\n s,\n t,\n arrow,\n );\n };\n\n const refreshPaths = () => {\n const style = edgeStyle();\n paths = new Array(model.m);\n for (let e = 0; e < model.m; e++) {\n paths[e] =\n fade(model.source[e]) > 0 && fade(model.target[e]) > 0\n ? edgePath(e, style)\n : null;\n }\n pathsDirty = false;\n };\n\n /** Ends of a straight edge, trimmed at the node boundaries */\n const straightEnds = (e: number): [number, number, number, number] | null => {\n const s = model.source[e];\n const t = model.target[e];\n const dx = X[t] - X[s];\n const dy = Y[t] - Y[s];\n const len = Math.hypot(dx, dy);\n if (len < 1e-9) return null;\n const ux = dx / len;\n const uy = dy / len;\n const a = boundaryDistance(\n isBox(s),\n sizing.width[s],\n sizing.height[s],\n ux,\n uy,\n );\n const b =\n boundaryDistance(isBox(t), sizing.width[t], sizing.height[t], ux, uy) +\n (edgeArrow[e] ? 1 : 0);\n if (a + b >= len) return null;\n return [X[s] + ux * a, Y[s] + uy * a, X[t] - ux * b, Y[t] - uy * b];\n };\n\n // ------------------------------------------------------------ highlight\n\n const updateHighlight = () => {\n const sources =\n hover?.type === \"node\"\n ? [hover.index]\n : focusIndex >= 0\n ? [focusIndex]\n : [...selection];\n const mode = highlightMode();\n const edgeHover = hover?.type === \"edge\" ? hover.index : -1;\n const key = `${mode}|${sources.join(\",\")}|${edgeHover}`;\n if (key === highlightKey) return;\n highlightKey = key;\n sceneDirty = true;\n if ((mode === \"none\" || !sources.length) && edgeHover < 0) {\n highlight = null;\n return;\n }\n const nodes = new Uint8Array(model.n);\n const edges = new Uint8Array(model.m);\n if (mode !== \"none\") {\n for (const s of sources) {\n if (mode === \"lineage\") lineage(model, s, nodes, edges);\n else neighborhood(model, s, nodes, edges);\n }\n }\n if (edgeHover >= 0) {\n edges[edgeHover] = 1;\n nodes[model.source[edgeHover]] = 1;\n nodes[model.target[edgeHover]] = 1;\n }\n const accent =\n mode === \"lineage\" || sources.length !== 1\n ? theme.primary\n : nodeColor[sources[0]];\n highlight = { nodes, edges, accent: accent ?? theme.primary };\n };\n\n // --------------------------------------------------------------- scene\n\n const buildScene = (): RenderItem[] => {\n version++;\n const bg = theme.background;\n const out: RenderItem[] = [];\n const style = edgeStyle();\n const minPx = model.n > 2000 ? 2 : 3;\n const hl = highlight;\n\n // ----- edges: three layers (dimmed, normal, highlighted)\n const layers = [\n new Map<string, { color: Rgba; width: number; buf: PointBuffer }>(),\n new Map(),\n new Map(),\n ] as Map<string, { color: Rgba; width: number; buf: PointBuffer }>[];\n const bucket = (layer: number, color: Rgba, w: number) => {\n const key = `${packColor(color)}|${Math.round(w * 4)}`;\n let b = layers[layer].get(key);\n if (!b) {\n b = { color, width: w, buf: pointBuffer() };\n layers[layer].set(key, b);\n }\n return b.buf;\n };\n const arrowLen = (w: number) => (6 + w * 1.6) / k;\n for (let e = 0; e < model.m; e++) {\n const s = model.source[e];\n const t = model.target[e];\n const f = Math.min(fade(s), fade(t));\n if (f <= 0) continue;\n let color = edgeColor[e];\n let w = edgeWidth[e];\n let layer = 1;\n if (critical?.edges[e]) {\n color = criticalColor;\n w += 1;\n }\n if (hl) {\n if (hl.edges[e]) {\n layer = 2;\n if (!critical?.edges[e]) color = mix(bg, hl.accent, 0.9);\n w += 0.75;\n } else {\n layer = 0;\n color = mix(bg, color, 0.22);\n }\n }\n if (f < 1) color = mix(bg, color, f);\n const buf = bucket(layer, color, w);\n let points: number[] | null = paths[e] ?? null;\n if (!points) {\n if (style !== \"straight\" || layoutType === \"arc\") continue;\n const ends = straightEnds(e);\n if (!ends) continue;\n if (!edgeDashed[e]) {\n buf.push(ends[0], ends[1]);\n buf.push(ends[2], ends[3]);\n buf.push(GAP, GAP);\n if (edgeArrow[e]) {\n const tmp: number[] = [];\n const l = Math.hypot(ends[2] - ends[0], ends[3] - ends[1]) || 1;\n arrowHead(\n tmp,\n ends[2],\n ends[3],\n (ends[2] - ends[0]) / l,\n (ends[3] - ends[1]) / l,\n arrowLen(w),\n GAP,\n );\n buf.pushAll(tmp);\n }\n continue;\n }\n points = [ends[0], ends[1], ends[2], ends[3]];\n }\n if (points.length < 4) continue;\n if (edgeDashed[e]) buf.pushAll(dashPath(points, 5 / k, 4 / k, GAP));\n else {\n buf.pushAll(points);\n buf.push(GAP, GAP);\n }\n if (edgeArrow[e]) {\n const [ux, uy] = endDirection(points);\n const tmp: number[] = [];\n arrowHead(\n tmp,\n points[points.length - 2],\n points[points.length - 1],\n ux,\n uy,\n arrowLen(w),\n GAP,\n );\n buf.pushAll(tmp);\n }\n }\n layers.forEach((map, layer) => {\n for (const [key, b] of map) {\n if (b.buf.count() < 2) continue;\n const item: LineItem = {\n kind: \"line\",\n key: `edges:${layer}:${key}`,\n version,\n color: b.color,\n points: b.buf.points(),\n count: b.buf.count(),\n width: b.width,\n sorted: false,\n };\n out.push(item);\n }\n });\n\n // ----- nodes\n const nodeFill = (i: number, f: number): Rgba => {\n let c = nodeColor[i];\n if (hl && !hl.nodes[i]) c = mix(bg, c, 0.2);\n return f < 1 ? mix(bg, c, f) : c;\n };\n const halo: number[] = [];\n const fills: number[] = [];\n const rings: number[] = [];\n const collapsedFill: number[] = [];\n const selRings: number[] = [];\n const avatars: number[] = [];\n const boxBuckets = new Map<\n string,\n { half: number; inset: number; border: number[]; fill: number[] }\n >();\n const outlines = new Map<string, number[]>();\n const radiusPx =\n layoutType === \"mindmap\"\n ? 999\n : Math.max(\n 1,\n Math.min(\n layoutType === \"org\" ? 10 : 8,\n (layoutType === \"org\" ? 10 : 7) * k,\n ),\n );\n const showHalo = model.n <= HALO_LIMIT;\n for (const i of drawOrder()) {\n const f = fade(i);\n if (f <= 0) continue;\n const x = X[i];\n const y = Y[i];\n const color = nodeFill(i, f);\n const selected = selection.has(i);\n const hovered = hover?.type === \"node\" && hover.index === i;\n if (sizing.kind[i] === NodeKind.Circle) {\n const d = Math.max(minPx, sizing.width[i] * k);\n if (showHalo) halo.push(x, y, d + 3, packColor(bg));\n const isCollapsed =\n collapsible() && tree && descendants[i] > 0 && !hasVisibleChild(i);\n if (isCollapsed) {\n collapsedFill.push(x, y, d, packColor(color));\n } else fills.push(x, y, d, packColor(color));\n if (selected) selRings.push(x, y, d + 7, packColor(theme.primary));\n else if (hovered)\n rings.push(x, y, d + 6, packColor(mix(bg, nodeColor[i], 0.7)));\n continue;\n }\n // boxes\n const w = sizing.width[i];\n const h = sizing.height[i];\n const solid = sizing.kind[i] === NodeKind.Solid;\n const crit = !!critical?.nodes[i];\n let border = solid ? color : mix(bg, color, crit ? 1 : dark ? 0.62 : 0.5);\n let body = solid ? color : mix(bg, color, dark ? 0.2 : 0.09);\n if (crit) border = mix(bg, criticalColor, f);\n if (hl && !hl.nodes[i]) {\n body = mix(bg, body, 0.5);\n if (!solid) border = mix(bg, border, 0.4);\n }\n const key = `${Math.round(w * 2) / 2}|${crit ? 2 : 1.25}`;\n let b = boxBuckets.get(key);\n if (!b) {\n b = { half: w / 2, inset: crit ? 2 : 1.25, border: [], fill: [] };\n boxBuckets.set(key, b);\n }\n b.border.push(x, y - h / 2, y + h / 2, packColor(border));\n b.fill.push(x, y - h / 2, y + h / 2, packColor(body));\n if (selected || hovered) {\n const pad = (selected ? 3 : 2.5) / k;\n const okey = `${Math.round((w / 2 + pad) * 64)}`;\n let list = outlines.get(okey);\n if (!list) outlines.set(okey, (list = []));\n list.push(\n w / 2 + pad,\n x,\n y - h / 2 - pad,\n y + h / 2 + pad,\n packColor(selected ? theme.primary : mix(bg, nodeColor[i], 0.55)),\n );\n }\n if (sizing.kind[i] === NodeKind.Card && w * k >= 96) {\n avatars.push(\n x - w / 2 + 26,\n y,\n Math.min(32, h - 16) * k,\n packColor(color),\n );\n }\n }\n const scatter = (\n key: string,\n data: number[],\n opacity: number,\n stroke: number,\n ) => {\n if (!data.length) return;\n const count = data.length / 4;\n const buffer = new ArrayBuffer(count * SCATTER_STRIDE);\n const f32 = new Float32Array(buffer);\n const u32 = new Uint32Array(buffer);\n for (let j = 0; j < count; j++) {\n f32[j * 4] = data[j * 4];\n f32[j * 4 + 1] = data[j * 4 + 1];\n f32[j * 4 + 2] = data[j * 4 + 2];\n u32[j * 4 + 3] = data[j * 4 + 3];\n }\n const item: ScatterItem = {\n kind: \"scatter\",\n key,\n version,\n color: theme.primary,\n instances: buffer,\n count,\n opacity,\n stroke,\n };\n out.push(item);\n };\n const bars = (\n key: string,\n data: number[],\n half: number,\n inset: number,\n radius: number,\n ) => {\n if (!data.length) return;\n const count = data.length / 4;\n const buffer = new ArrayBuffer(count * BAR_STRIDE);\n const f32 = new Float32Array(buffer);\n const u32 = new Uint32Array(buffer);\n for (let j = 0; j < count; j++) {\n f32[j * 4] = data[j * 4];\n f32[j * 4 + 1] = data[j * 4 + 1];\n f32[j * 4 + 2] = data[j * 4 + 2];\n u32[j * 4 + 3] = data[j * 4 + 3];\n }\n const item: BarItem = {\n kind: \"bar\",\n key,\n version,\n color: theme.primary,\n instances: buffer,\n count,\n halfWidth: half,\n radius,\n inset,\n minHalf: 0,\n sorted: false,\n };\n out.push(item);\n };\n scatter(\"halo\", halo, 1, 0);\n scatter(\"nodes\", fills, 1, 0);\n scatter(\"collapsed\", collapsedFill, 0.28, 2);\n scatter(\"hover-rings\", rings, 0, 2);\n scatter(\"selection\", selRings, 0, 2.25);\n for (const [key, list] of outlines) {\n const data: number[] = [];\n for (let j = 0; j < list.length; j += 5)\n data.push(list[j + 1], list[j + 2], list[j + 3], list[j + 4]);\n bars(\n `outline:${key}`,\n data,\n list[0],\n 0,\n radiusPx === 999 ? 999 : radiusPx + 3,\n );\n }\n for (const [key, b] of boxBuckets) {\n bars(`border:${key}`, b.border, b.half, 0, radiusPx);\n bars(\n `fill:${key}`,\n b.fill,\n b.half,\n b.inset,\n radiusPx === 999 ? 999 : Math.max(0, radiusPx - 1),\n );\n }\n scatter(\"avatars\", avatars, 1, 0);\n return out;\n };\n\n /** Hovered / selected nodes last (on top) */\n const drawOrder = (): number[] => {\n const order: number[] = [];\n const late: number[] = [];\n for (let i = 0; i < model.n; i++) {\n if (\n selection.has(i) ||\n (hover?.type === \"node\" && hover.index === i) ||\n i === focusIndex\n )\n late.push(i);\n else order.push(i);\n }\n return order.concat(late);\n };\n\n const hasVisibleChild = (i: number) =>\n !!tree && tree.children[i].some((c) => visible[c]);\n\n // -------------------------------------------------------------- frame\n\n function invalidate() {\n if (destroyed || frameId || !win) return;\n frameId = win.requestAnimationFrame(frame);\n }\n\n const transform = () => ({\n xScale: (2 * k) / width,\n xOffset: (2 * tx) / width - 1,\n yScale: (-2 * k) / height,\n yOffset: 1 - (2 * ty) / height,\n });\n\n function frame() {\n frameId = 0;\n if (destroyed) return;\n const w = stage.clientWidth;\n const h = stage.clientHeight;\n if (w <= 0 || h <= 0) return;\n if (w !== width || h !== height) {\n width = w;\n height = h;\n if (!userMoved) needsFit = true;\n sceneDirty = true;\n }\n const dpr = win?.devicePixelRatio || 1;\n let animating = false;\n\n let follow = false;\n if (runner?.running()) {\n runner.step(8);\n pathsDirty = true;\n animating = runner.running() && !runner.threaded();\n follow = runner.running() && followLayout && !userMoved && !forcePending;\n }\n if (tween) {\n const t = Math.min(\n 1,\n (now() - tween.start) / Math.max(1, tween.duration),\n );\n tweenT = ease(t);\n for (let i = 0; i < model.n; i++) {\n X[i] = FX[i] + (TX[i] - FX[i]) * tweenT;\n Y[i] = FY[i] + (TY[i] - FY[i]) * tweenT;\n }\n if (t >= 1) {\n tween = null;\n prevVisible = null;\n tweenT = 1;\n }\n pathsDirty = true;\n animating = true;\n }\n if (needsFit) {\n needsFit = false;\n const target = fitView();\n if (target && fitAnimate && drawnOnce && !reducedMotion?.matches) {\n viewTween = { from: [k, tx, ty], to: target, start: now() };\n } else if (target) [k, tx, ty] = target;\n fitAnimate = false;\n sceneDirty = true;\n } else if (follow) {\n // glide toward the fit of the expanding layout (the final fit animates\n // once it has settled)\n const target = fitView();\n if (target) {\n viewTween = null;\n if (!drawnOnce || reducedMotion?.matches) [k, tx, ty] = target;\n else if (approachView(target, 0.25)) animating = true;\n sceneDirty = true;\n }\n }\n if (viewTween) {\n const t = Math.min(1, (now() - viewTween.start) / VIEW_TWEEN_MS);\n const e = ease(t);\n const [k0, x0, y0] = viewTween.from;\n const [k1, x1, y1] = viewTween.to;\n const kk = k0 * Math.pow(k1 / k0, e);\n // keep the zoom geometric and the screen center consistent\n const c0x = (width / 2 - x0) / k0;\n const c0y = (height / 2 - y0) / k0;\n const c1x = (width / 2 - x1) / k1;\n const c1y = (height / 2 - y1) / k1;\n const cx = c0x + (c1x - c0x) * e;\n const cy = c0y + (c1y - c0y) * e;\n k = kk;\n tx = width / 2 - cx * kk;\n ty = height / 2 - cy * kk;\n if (t >= 1) {\n [k, tx, ty] = viewTween.to;\n viewTween = null;\n }\n sceneDirty = true;\n animating = true;\n }\n if (pathsDirty) {\n refreshPaths();\n sceneDirty = true;\n }\n updateHighlight();\n if (renderer) {\n if (sceneDirty) {\n items = forcePending ? [] : buildScene();\n sceneDirty = false;\n }\n const bw = Math.max(1, Math.round(w * dpr));\n const bh = Math.max(1, Math.round(h * dpr));\n if (renderer.canvas.width !== bw || renderer.canvas.height !== bh)\n renderer.resize(bw, bh);\n renderer.canvas.style.width = `${w}px`;\n renderer.canvas.style.height = `${h}px`;\n renderer.render(items, {\n transform: transform(),\n width: bw,\n height: bh,\n dpr,\n });\n drawnOnce = true;\n }\n sizeCanvas(dom.foreground, w, h, dpr);\n drawOverlay(dpr);\n if (hover) positionTooltip();\n if (animating) invalidate();\n }\n\n // ------------------------------------------------------------ overlay\n\n const screenX = (i: number) => X[i] * k + tx;\n const screenY = (i: number) => Y[i] * k + ty;\n\n const ellipsize = (\n ctx: CanvasRenderingContext2D,\n text: string,\n max: number,\n ) => {\n if (max <= 8) return \"\";\n if (ctx.measureText(text).width <= max) return text;\n let lo = 0;\n let hi = text.length;\n while (lo < hi) {\n const mid = (lo + hi + 1) >> 1;\n if (ctx.measureText(`${text.slice(0, mid)}…`).width <= max) lo = mid;\n else hi = mid - 1;\n }\n return lo ? `${text.slice(0, lo)}…` : \"\";\n };\n\n const textColorOn = (c: Rgba): string =>\n luminance(c) > 0.6 ? \"#111827\" : \"#ffffff\";\n\n const drawOverlay = (dpr: number) => {\n const ctx = dom.foreground.getContext(\"2d\");\n if (!ctx) return;\n ctx.setTransform(dpr, 0, 0, dpr, 0, 0);\n ctx.clearRect(0, 0, width, height);\n if (forcePending || !model.n) return;\n const family = theme.fontFamily;\n const text = toCss(theme.text);\n const muted = toCss(theme.textMuted);\n const bgCss = toCss(theme.background);\n const hl = highlight;\n const cell = 8;\n const cols = Math.ceil(width / cell) + 1;\n const rows = Math.ceil(height / cell) + 1;\n const grid = new Uint8Array(cols * rows);\n const free = (\n x0: number,\n y0: number,\n x1: number,\n y1: number,\n mark: boolean,\n ) => {\n const c0 = Math.max(0, Math.floor(x0 / cell));\n const c1 = Math.min(cols - 1, Math.floor(x1 / cell));\n const r0 = Math.max(0, Math.floor(y0 / cell));\n const r1 = Math.min(rows - 1, Math.floor(y1 / cell));\n if (c0 > c1 || r0 > r1) return false;\n if (!mark) {\n for (let r = r0; r <= r1; r++)\n for (let c = c0; c <= c1; c++) if (grid[r * cols + c]) return false;\n return true;\n }\n for (let r = r0; r <= r1; r++)\n for (let c = c0; c <= c1; c++) grid[r * cols + c] = 1;\n return true;\n };\n const onScreen = (sx: number, sy: number, margin: number) =>\n sx > -margin &&\n sy > -margin &&\n sx < width + margin &&\n sy < height + margin;\n\n // ----- text inside boxes: a readable minimum size, shortened with an\n // ellipsis; hidden only when the box cannot hold any text\n const showBoxText = options.nodeLabels !== false;\n for (let i = 0; i < model.n; i++) {\n if (sizing.kind[i] === NodeKind.Circle) continue;\n const f = fade(i);\n if (f <= 0) continue;\n const sx = screenX(i);\n const sy = screenY(i);\n const bw = sizing.width[i] * k;\n const bh = sizing.height[i] * k;\n if (!onScreen(sx, sy, Math.max(bw, bh))) continue;\n free(sx - bw / 2, sy - bh / 2, sx + bw / 2, sy + bh / 2, true);\n const natural = sizing.font[i] * k;\n const size = Math.max(BOX_FONT_MIN, natural);\n const node = model.nodes[i];\n const dim = hl && !hl.nodes[i];\n ctx.globalAlpha = f * (dim ? 0.45 : 1);\n const solid = sizing.kind[i] === NodeKind.Solid;\n const card = sizing.kind[i] === NodeKind.Card;\n const avatar = card && bw >= 96;\n if (showBoxText && bh >= size + 1) {\n const left = avatar ? sx - bw / 2 + 48 * k : sx;\n const maxWidth = avatar ? bw - 56 * k : bw - Math.max(4, 12 * k);\n ctx.textAlign = avatar ? \"left\" : \"center\";\n ctx.textBaseline = \"middle\";\n // the subtitle needs room for both lines\n const subSize = Math.max(BOX_FONT_MIN - 0.5, natural * 0.88);\n const gap = Math.max(2, natural * 0.6);\n const block = size + gap + subSize;\n const subtitle = node.subtitle && block <= bh - 4 ? node.subtitle : \"\";\n const titleY = subtitle ? sy - block / 2 + size / 2 : sy;\n ctx.font = `${sizing.weight[i]} ${size}px ${family}`;\n ctx.fillStyle = solid ? textColorOn(nodeColor[i]) : text;\n const label = ellipsize(ctx, labelOf(model, i), maxWidth);\n if (label) ctx.fillText(label, left, titleY);\n if (subtitle && label) {\n ctx.font = `${subSize}px ${family}`;\n ctx.fillStyle = solid ? textColorOn(nodeColor[i]) : muted;\n const sub = ellipsize(ctx, subtitle, maxWidth);\n if (sub) ctx.fillText(sub, left, sy + block / 2 - subSize / 2);\n }\n }\n if (avatar) {\n const initial = Array.from(labelOf(model, i).trim())[0] ?? \"\";\n ctx.textAlign = \"center\";\n ctx.font = `600 ${Math.max(8, 13 * k)}px ${family}`;\n ctx.fillStyle = textColorOn(nodeColor[i]);\n ctx.fillText(initial.toUpperCase(), sx - bw / 2 + 26 * k, sy);\n }\n // collapse badge of boxes\n if (collapsible() && tree && tree.children[i].length) {\n const collapsed = !hasVisibleChild(i);\n const active =\n (hover?.type === \"node\" && hover.index === i) || focusIndex === i;\n if (collapsed || active) {\n const vertical = layoutType === \"org\";\n const out =\n layoutType === \"mindmap\" ? (tree.side[i] < 0 ? -1 : 1) : 1;\n const bx = vertical ? sx : sx + out * (bw / 2 + 9);\n const by = vertical ? sy + bh / 2 + 9 : sy;\n const label2 = collapsed ? String(descendants[i]) : \"−\";\n ctx.font = `600 10px ${family}`;\n const r = Math.max(8, ctx.measureText(label2).width / 2 + 5);\n ctx.globalAlpha = f;\n ctx.beginPath();\n ctx.fillStyle = bgCss;\n ctx.strokeStyle = toCss(mix(theme.background, nodeColor[i], 0.75));\n ctx.lineWidth = 1.25;\n if (typeof ctx.roundRect === \"function\")\n ctx.roundRect(bx - r, by - 8, r * 2, 16, 8);\n else ctx.rect(bx - r, by - 8, r * 2, 16);\n ctx.fill();\n ctx.stroke();\n ctx.fillStyle = text;\n ctx.textAlign = \"center\";\n ctx.fillText(label2, bx, by + 0.5);\n }\n }\n }\n ctx.globalAlpha = 1;\n\n // ----- labels of circles\n const mode = options.nodeLabels ?? \"auto\";\n const priority = (i: number) =>\n selection.has(i) ||\n i === focusIndex ||\n (hover?.type === \"node\" && hover.index === i) ||\n (!!hl && !!hl.nodes[i]);\n const drawn = new Uint8Array(model.n);\n let budget = 700;\n const drawLabel = (i: number, force: boolean) => {\n if (drawn[i] || sizing.kind[i] !== NodeKind.Circle || mode === false)\n return;\n const f = fade(i);\n if (f <= 0) return;\n const sx = screenX(i);\n const sy = screenY(i);\n if (!onScreen(sx, sy, 160)) return;\n const r = Math.max(model.n > 2000 ? 1 : 1.5, (sizing.width[i] * k) / 2);\n // tiny nodes of networks lose their label first (other layouts rely on the collisions)\n const network = layoutType === \"force\" || layoutType === \"none\";\n if (!force && mode === \"auto\" && network && r * 2 < 5) return;\n const strong = priority(i);\n const dim = hl && !hl.nodes[i];\n const raw = labelOf(model, i);\n const tw = Math.min(180, sizing.labelWidth[i] * (strong ? 1.06 : 1));\n const place = placement(i, sx, sy, r);\n // collision box: the whole label, or its start for rotated labels\n let bx0: number;\n let by0: number;\n let bx1: number;\n let by1: number;\n if (place.angle !== 0) {\n const cx =\n place.x + Math.cos(place.angle) * (place.align === \"left\" ? 7 : -7);\n const cy =\n place.y + Math.sin(place.angle) * (place.align === \"left\" ? 7 : -7);\n bx0 = cx - 6;\n bx1 = cx + 6;\n by0 = cy - 6;\n by1 = cy + 6;\n } else {\n bx0 =\n place.align === \"left\"\n ? place.x\n : place.align === \"right\"\n ? place.x - tw\n : place.x - tw / 2;\n bx1 = bx0 + tw;\n by0 =\n place.baseline === \"top\"\n ? place.y\n : place.baseline === \"bottom\"\n ? place.y - 14\n : place.y - 7;\n by1 = by0 + 14;\n }\n if (!force && !free(bx0 - 2, by0, bx1 + 2, by1, false)) return;\n free(bx0 - 2, by0, bx1 + 2, by1, true);\n drawn[i] = 1;\n budget--;\n ctx.save();\n ctx.globalAlpha = f * (dim ? 0.35 : 1);\n ctx.font = `${strong ? 600 : 400} ${LABEL_FONT_SIZE}px ${family}`;\n ctx.textAlign = place.align;\n ctx.textBaseline = place.baseline;\n ctx.translate(place.x, place.y);\n if (place.angle) ctx.rotate(place.angle);\n const label = sizing.labelWidth[i] > 180 ? ellipsize(ctx, raw, 180) : raw;\n ctx.lineJoin = \"round\";\n ctx.lineWidth = 3;\n ctx.strokeStyle = bgCss;\n ctx.strokeText(label, 0, 0);\n ctx.fillStyle = strong ? text : dim ? muted : text;\n ctx.fillText(label, 0, 0);\n ctx.restore();\n };\n for (let i = 0; i < model.n; i++) if (priority(i)) drawLabel(i, true);\n\n // ----- edge labels\n const edgeMode = options.edgeLabels ?? \"auto\";\n if (edgeMode !== false) {\n ctx.font = `11px ${family}`;\n ctx.textAlign = \"center\";\n ctx.textBaseline = \"middle\";\n let shownEdges = 0;\n for (let e = 0; e < model.m && shownEdges < 400; e++) {\n const label = model.edges[e].label;\n if (!label) continue;\n const s = model.source[e];\n const t = model.target[e];\n const f = Math.min(fade(s), fade(t));\n if (f <= 0) continue;\n const lit = !!hl?.edges[e];\n if (edgeMode === \"hover\" && !lit) continue;\n if (edgeMode === \"auto\" && !lit && (k < 0.75 || (hl && !lit))) continue;\n let mx: number;\n let my: number;\n const path = paths[e];\n if (path) {\n const p = pointAt(path, pathLength(path) / 2);\n mx = p[0] * k + tx;\n my = p[1] * k + ty;\n } else {\n mx = ((X[s] + X[t]) / 2) * k + tx;\n my = ((Y[s] + Y[t]) / 2) * k + ty;\n }\n if (!onScreen(mx, my, 40)) continue;\n if (Number.isNaN(edgeLabelWidth[e]))\n edgeLabelWidth[e] = ctx.measureText(label).width;\n const lw = edgeLabelWidth[e] + 10;\n if (!lit && !free(mx - lw / 2, my - 8, mx + lw / 2, my + 8, false))\n continue;\n free(mx - lw / 2, my - 8, mx + lw / 2, my + 8, true);\n shownEdges++;\n ctx.globalAlpha = f;\n ctx.fillStyle = bgCss;\n ctx.beginPath();\n if (typeof ctx.roundRect === \"function\")\n ctx.roundRect(mx - lw / 2, my - 8, lw, 16, 8);\n else ctx.rect(mx - lw / 2, my - 8, lw, 16);\n ctx.fill();\n if (lit) {\n ctx.strokeStyle = toCss(\n mix(theme.background, highlight?.accent ?? theme.primary, 0.6),\n );\n ctx.lineWidth = 1;\n ctx.stroke();\n }\n ctx.fillStyle = lit ? text : muted;\n ctx.fillText(label, mx, my + 0.5);\n }\n ctx.globalAlpha = 1;\n }\n\n // ----- other labels, most important first\n if (mode !== false) {\n const all = mode === true;\n for (let r = 0; r < model.rank.length && budget > 0; r++) {\n const i = model.rank[r];\n drawLabel(i, false);\n if (!all && r > 4000) break;\n }\n }\n\n // ----- keyboard focus ring\n if (focusVisible && focusIndex >= 0 && fade(focusIndex) > 0) {\n const sx = screenX(focusIndex);\n const sy = screenY(focusIndex);\n ctx.save();\n ctx.strokeStyle = toCss(theme.primary);\n ctx.lineWidth = 2;\n ctx.setLineDash([4, 3]);\n ctx.beginPath();\n if (sizing.kind[focusIndex] === NodeKind.Circle) {\n const r = Math.max(3, (sizing.width[focusIndex] * k) / 2) + 6;\n ctx.arc(sx, sy, r, 0, Math.PI * 2);\n } else {\n const bw = sizing.width[focusIndex] * k + 10;\n const bh = sizing.height[focusIndex] * k + 10;\n ctx.rect(sx - bw / 2, sy - bh / 2, bw, bh);\n }\n ctx.stroke();\n ctx.restore();\n }\n };\n\n /** Where the label of a circle goes */\n const placement = (\n i: number,\n sx: number,\n sy: number,\n r: number,\n ): {\n x: number;\n y: number;\n align: CanvasTextAlign;\n baseline: CanvasTextBaseline;\n angle: number;\n } => {\n const below = {\n x: sx,\n y: sy + r + 3,\n align: \"center\" as const,\n baseline: \"top\" as const,\n angle: 0,\n };\n const radial = (a: number) => {\n const flip = Math.cos(a) < 0;\n return {\n x: sx + Math.cos(a) * (r + 4),\n y: sy + Math.sin(a) * (r + 4),\n align: (flip ? \"right\" : \"left\") as CanvasTextAlign,\n baseline: \"middle\" as const,\n angle: flip ? a + Math.PI : a,\n };\n };\n switch (layoutType) {\n case \"tree\": {\n const inner = hasVisibleChild(i);\n if (direction === \"LR\" || direction === \"RL\") {\n const right = (direction === \"LR\") !== inner;\n return {\n x: sx + (right ? r + 5 : -r - 5),\n y: sy,\n align: right ? \"left\" : \"right\",\n baseline: \"middle\",\n angle: 0,\n };\n }\n if (direction === \"BT\")\n return {\n x: sx,\n y: sy - r - 3,\n align: \"center\",\n baseline: \"bottom\",\n angle: 0,\n };\n return below;\n }\n case \"radial\":\n // inner nodes: horizontal label below (their children fan out around them)\n if (\n tree &&\n (hasVisibleChild(i) ||\n (tree.depth[i] === 0 && Math.hypot(X[i], Y[i]) < 1e-6))\n )\n return below;\n return radial(tree ? tree.side[i] : 0);\n case \"circular\":\n return radial(circ ? circ.angle[i] : 0);\n case \"arc\":\n return {\n x: sx,\n y: sy + r + 4,\n align: \"left\",\n baseline: \"middle\",\n angle: Math.PI / 2,\n };\n default:\n return below;\n }\n };\n\n // ----------------------------------------------------------------- fit\n\n const fitView = (): [number, number, number] | null => {\n if (width <= 0 || height <= 0) return null;\n let x0 = Infinity;\n let y0 = Infinity;\n let x1 = -Infinity;\n let y1 = -Infinity;\n let maxLabel = 0;\n for (let i = 0; i < model.n; i++) {\n if (!visible[i] || !Number.isFinite(TX[i])) continue;\n const g = model.groupOf[i];\n if (g >= 0 && hiddenGroups.has(model.groups[g].id)) continue;\n const hw = sizing.width[i] / 2;\n const hh = sizing.height[i] / 2;\n x0 = Math.min(x0, TX[i] - hw);\n x1 = Math.max(x1, TX[i] + hw);\n y0 = Math.min(y0, TY[i] - hh);\n y1 = Math.max(y1, TY[i] + hh);\n if (sizing.kind[i] === NodeKind.Circle)\n maxLabel = Math.max(maxLabel, sizing.labelWidth[i]);\n }\n if (!(x0 <= x1)) return null;\n // arcs rise above the line by half their span\n if (layoutType === \"arc\") {\n for (let e = 0; e < model.m; e++) {\n const s = model.source[e];\n const t = model.target[e];\n if (!visible[s] || !visible[t]) continue;\n y0 = Math.min(y0, TY[s] - Math.abs(TX[t] - TX[s]) / 2);\n }\n }\n const pad = options.fitPadding ?? 24;\n let [pl, pr, pt, pb] = [pad, pad, pad, pad];\n const label =\n options.nodeLabels === false ? 0 : Math.min(140, maxLabel) + 8;\n const circles = sizing.kind.some((c) => c === NodeKind.Circle);\n if (circles && label > 8) {\n if (layoutType === \"tree\" && (direction === \"LR\" || direction === \"RL\")) {\n // leaves are labeled outside, inner nodes (the roots first) inside\n let inner = 0;\n for (let i = 0; i < model.n; i++) {\n if (tree && tree.parent[i] < 0 && visible[i] && hasVisibleChild(i))\n inner = Math.max(inner, Math.min(140, sizing.labelWidth[i]) + 8);\n }\n if (direction === \"LR\") {\n pr += label;\n pl += inner;\n } else {\n pl += label;\n pr += inner;\n }\n } else if (layoutType === \"radial\" || layoutType === \"circular\") {\n pl += label;\n pr += label;\n pt += label * 0.6;\n pb += label * 0.6;\n } else if (layoutType === \"arc\") pb += label;\n else pb += 16;\n }\n if (layoutType === \"org\" || layoutType === \"mindmap\") pb += 10;\n const aw = Math.max(10, width - pl - pr);\n const ah = Math.max(10, height - pt - pb);\n const bw = Math.max(1e-6, x1 - x0);\n const bh = Math.max(1e-6, y1 - y0);\n const range = interaction()?.zoomRange ?? [0.02, 8];\n let kk = Math.min(aw / bw, ah / bh, 1.6, range[1]);\n kk = Math.max(kk, 1e-4);\n const ox = pl + (aw - bw * kk) / 2 - x0 * kk;\n const oy = pt + (ah - bh * kk) / 2 - y0 * kk;\n return [kk, ox, oy];\n };\n\n const zoomLimits = (): [number, number] => {\n const range = interaction()?.zoomRange ?? [0.02, 8];\n const fit = fitView();\n return [Math.min(range[0], fit ? fit[0] * 0.5 : range[0]), range[1]];\n };\n\n /**\n * Moves the view a `rate` of the way to `to` (geometric zoom, consistent\n * center); `true` while it has not arrived yet\n */\n const approachView = (to: [number, number, number], rate: number) => {\n const [k1, x1, y1] = to;\n const c0x = (width / 2 - tx) / k;\n const c0y = (height / 2 - ty) / k;\n const c1x = (width / 2 - x1) / k1;\n const c1y = (height / 2 - y1) / k1;\n const far =\n Math.abs(Math.log(k1 / k)) > 0.002 ||\n Math.hypot(c1x - c0x, c1y - c0y) * k1 > 0.5;\n if (!far) {\n [k, tx, ty] = to;\n return false;\n }\n const kk = k * Math.pow(k1 / k, rate);\n const cx = c0x + (c1x - c0x) * rate;\n const cy = c0y + (c1y - c0y) * rate;\n k = kk;\n tx = width / 2 - cx * kk;\n ty = height / 2 - cy * kk;\n return true;\n };\n\n const setView = (next: [number, number, number], animate: boolean) => {\n viewTween = null;\n if (animate && !reducedMotion?.matches && width > 0) {\n viewTween = { from: [k, tx, ty], to: next, start: now() };\n } else {\n [k, tx, ty] = next;\n }\n sceneDirty = true;\n invalidate();\n };\n\n const zoomAround = (\n factor: number,\n cx: number,\n cy: number,\n animate = false,\n ) => {\n const [lo, hi] = zoomLimits();\n const nk = Math.max(lo, Math.min(hi, k * factor));\n const ratio = nk / k;\n setView([nk, cx - (cx - tx) * ratio, cy - (cy - ty) * ratio], animate);\n userMoved = true;\n };\n\n // ------------------------------------------------------------- legend\n\n let legendKey = \"\";\n const renderLegend = () => {\n const o = options.legend;\n const named = model.groups.filter((g) => g.count > 0);\n const show = o === undefined ? named.length > 1 : !!o && named.length > 0;\n const config = typeof o === \"object\" ? o : {};\n const toggle = config.toggle ?? true;\n const bottom = config.position === \"bottom\";\n let key = `${show}|${bottom}|${toggle}`;\n if (show) {\n for (const g of named) {\n const i = model.groups.indexOf(g);\n key += `\\n${g.id}\\u0001${g.name}\\u0001${toCss(groupColor[i] ?? theme.primary)}\\u0001${hiddenGroups.has(g.id)}`;\n }\n }\n if (key === legendKey) return;\n legendKey = key;\n const focused = [...dom.legend.children].indexOf(\n doc.activeElement as Element,\n );\n dom.legend.replaceChildren();\n dom.legend.style.display = show ? \"flex\" : \"none\";\n if (!show) return;\n dom.legend.style.order = bottom ? \"1\" : \"0\";\n dom.legend.style.padding = bottom ? \"8px 4px 0\" : \"0 4px 8px\";\n for (const g of named) {\n const i = model.groups.indexOf(g);\n const hidden = hiddenGroups.has(g.id);\n const item = doc.createElement(toggle ? \"button\" : \"span\");\n if (item instanceof HTMLButtonElement) {\n item.type = \"button\";\n item.setAttribute(\"aria-pressed\", String(!hidden));\n item.addEventListener(\"click\", () => toggleGroup(g.id));\n }\n style(item, {\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: \"6px\",\n padding: \"2px 4px\",\n margin: \"0\",\n border: \"0\",\n borderRadius: \"4px\",\n background: \"none\",\n font: \"inherit\",\n color: \"var(--text-secondary-color, #6b7280)\",\n cursor: toggle ? \"pointer\" : \"default\",\n opacity: hidden ? \"0.45\" : \"1\",\n textDecoration: hidden ? \"line-through\" : \"none\",\n });\n item.append(\n swatch(doc, toCss(groupColor[i] ?? theme.primary)),\n doc.createTextNode(g.name),\n );\n dom.legend.appendChild(item);\n }\n if (focused >= 0)\n (dom.legend.children[focused] as HTMLElement | undefined)?.focus();\n };\n\n const toggleGroup = (id: string) => {\n const g = model.groups.find((group) => group.id === id);\n if (!g) return;\n const hidden = !hiddenGroups.has(id);\n if (hidden) hiddenGroups.add(id);\n else hiddenGroups.delete(id);\n dom.live.textContent = fill(hidden ? loc.labels.hidden : loc.labels.shown, {\n name: g.name,\n });\n // hidden nodes leave the selection and the focus\n for (const i of [...selection])\n if (\n fade(i) <= 0 &&\n model.groupOf[i] >= 0 &&\n hiddenGroups.has(model.groups[model.groupOf[i]].id)\n )\n selection.delete(i);\n if (\n focusIndex >= 0 &&\n model.groupOf[focusIndex] >= 0 &&\n hiddenGroups.has(model.groups[model.groupOf[focusIndex]].id)\n )\n focusIndex = -1;\n if (hover) setHover(null);\n pathsDirty = true;\n sceneDirty = true;\n highlightKey = \"\";\n renderLegend();\n invalidate();\n emit(\"groupToggle\", { group: id, hidden });\n };\n\n // ------------------------------------------------------ accessibility\n\n const updateAccessibility = () => {\n const { labels, count } = loc;\n const role =\n layoutType === \"dag\" ? labels.dag : isTree() ? labels.tree : labels.chart;\n stage.setAttribute(\"aria-roledescription\", role);\n stage.setAttribute(\"aria-label\", options.ariaLabel ?? role);\n const keyboard = interaction()?.keyboard;\n if (keyboard) stage.tabIndex = 0;\n else stage.removeAttribute(\"tabindex\");\n const ia = interaction();\n stage.style.cursor = ia?.pan ? \"grab\" : \"default\";\n const lines = [\n fill(labels.summary, { nodes: count(model.n), edges: count(model.m) }),\n ];\n const names = model.groups.filter((g) => g.count > 0).map((g) => g.name);\n if (names.length)\n lines.push(\n fill(labels.groupsSummary, {\n groups: names.join(labels.listSeparator),\n }),\n );\n if (keyboard) lines.push(labels.keyboardHelp);\n dom.summary.textContent = lines.join(\" \");\n const controls = options.controls !== false && !!ia?.zoom;\n dom.controls.style.display = controls ? \"flex\" : \"none\";\n dom.zoomIn.setAttribute(\"aria-label\", labels.zoomIn);\n dom.zoomIn.title = labels.zoomIn;\n dom.zoomOut.setAttribute(\"aria-label\", labels.zoomOut);\n dom.zoomOut.title = labels.zoomOut;\n dom.fit.setAttribute(\"aria-label\", labels.fit);\n dom.fit.title = labels.fit;\n };\n\n // ------------------------------------------------------------- picking\n\n let pickGrid: Map<number, number[]> | null = null;\n let pickCell = 32;\n let maxExtent = 0;\n const pickKey = (cx: number, cy: number) =>\n (cx + 2097152) * 4194304 + (cy + 2097152);\n\n const buildPickGrid = () => {\n maxExtent = 0;\n for (let i = 0; i < model.n; i++)\n maxExtent = Math.max(maxExtent, sizing.width[i], sizing.height[i]);\n pickCell = Math.max(16, maxExtent);\n const grid = new Map<number, number[]>();\n for (let i = 0; i < model.n; i++) {\n if (fade(i) <= 0) continue;\n const key = pickKey(\n Math.floor(X[i] / pickCell),\n Math.floor(Y[i] / pickCell),\n );\n let list = grid.get(key);\n if (!list) grid.set(key, (list = []));\n list.push(i);\n }\n pickGrid = grid;\n };\n\n const pickNode = (px: number, py: number): number => {\n if (forcePending || !model.n) return -1;\n buildPickGrid();\n const wx = (px - tx) / k;\n const wy = (py - ty) / k;\n const tol = 3 / k;\n const minR = (model.n > 2000 ? 1 : 1.5) / k;\n const reach = Math.ceil((maxExtent / 2 + tol + minR) / pickCell);\n const cx = Math.floor(wx / pickCell);\n const cy = Math.floor(wy / pickCell);\n let best = -1;\n let bestD = Infinity;\n for (let oy = -reach; oy <= reach; oy++) {\n for (let ox = -reach; ox <= reach; ox++) {\n const list = pickGrid!.get(pickKey(cx + ox, cy + oy));\n if (!list) continue;\n for (const i of list) {\n const dx = wx - X[i];\n const dy = wy - Y[i];\n if (sizing.kind[i] === NodeKind.Circle) {\n const r = Math.max(sizing.width[i] / 2, minR) + tol;\n const d = dx * dx + dy * dy;\n if (d <= r * r && d <= bestD) {\n best = i;\n bestD = d;\n }\n } else if (\n Math.abs(dx) <= sizing.width[i] / 2 + tol &&\n Math.abs(dy) <= sizing.height[i] / 2 + tol\n ) {\n const d = dx * dx + dy * dy;\n if (d <= bestD) {\n best = i;\n bestD = d;\n }\n }\n }\n }\n }\n return best;\n };\n\n const pickEdge = (px: number, py: number): number => {\n if (model.m > EDGE_PICK_LIMIT || forcePending) return -1;\n const wx = (px - tx) / k;\n const wy = (py - ty) / k;\n const tol = 4 / k;\n let best = -1;\n let bestD = tol * tol;\n for (let e = 0; e < model.m; e++) {\n if (Math.min(fade(model.source[e]), fade(model.target[e])) <= 0) continue;\n let points: readonly number[] | null = paths[e] ?? null;\n if (!points) {\n const ends = straightEnds(e);\n if (!ends) continue;\n points = ends;\n }\n const d = distanceToPath(points, wx, wy);\n if (d <= bestD) {\n best = e;\n bestD = d;\n }\n }\n return best;\n };\n\n const pickAt = (px: number, py: number): Hit | null => {\n const i = pickNode(px, py);\n if (i >= 0) return { type: \"node\", index: i };\n const wantsEdges =\n tooltipEnabled() || listening(\"hover\") || listening(\"click\");\n const e = wantsEdges ? pickEdge(px, py) : -1;\n return e >= 0 ? { type: \"edge\", index: e } : null;\n };\n\n // -------------------------------------------------------------- events\n\n const tooltipEnabled = () => options.tooltip !== false;\n\n const hoverEvent = (hit: Hit): GraphHoverEvent => {\n const offsetX = stage.offsetLeft;\n const offsetY = stage.offsetTop;\n if (hit.type === \"node\") {\n const i = hit.index;\n const node = model.nodes[i];\n const g = model.groupOf[i];\n return {\n type: \"node\",\n id: node.id,\n node,\n index: model.nodeInput[i],\n group: g >= 0 ? model.groups[g].id : undefined,\n color: toCss(nodeColor[i]),\n degree: model.inDegree[i] + model.outDegree[i],\n clientX: screenX(i) + offsetX,\n clientY: screenY(i) + offsetY,\n };\n }\n const e = hit.index;\n const edge = model.edges[e];\n const s = model.source[e];\n const t = model.target[e];\n const path = paths[e];\n let mx = (X[s] + X[t]) / 2;\n let my = (Y[s] + Y[t]) / 2;\n if (path) {\n const p = pointAt(path, pathLength(path) / 2);\n mx = p[0];\n my = p[1];\n }\n return {\n type: \"edge\",\n id: `${edge.source}→${edge.target}`,\n edge,\n index: model.edgeInput[e],\n color: toCss(edgeColor[e]),\n clientX: mx * k + tx + offsetX,\n clientY: my * k + ty + offsetY,\n };\n };\n\n const sameHit = (a: Hit | null, b: Hit | null) =>\n a === b || (!!a && !!b && a.type === b.type && a.index === b.index);\n\n const setHover = (hit: Hit | null) => {\n if (sameHit(hit, hover)) {\n if (hit) positionTooltip();\n return;\n }\n hover = hit;\n renderTooltip();\n sceneDirty = true;\n invalidate();\n emit(\"hover\", hit ? hoverEvent(hit) : null);\n };\n\n const tooltipTarget = (): Hit | null =>\n hover ??\n (focusVisible && focusIndex >= 0\n ? { type: \"node\", index: focusIndex }\n : null);\n\n const renderTooltip = () => {\n const tip = dom.tooltip;\n const hit = tooltipTarget();\n if (!hit || !tooltipEnabled()) {\n tip.style.display = \"none\";\n return;\n }\n const event = hoverEvent(hit);\n const custom =\n typeof options.tooltip === \"object\" ? options.tooltip.render : undefined;\n const content = custom ? custom(event) : defaultTooltip(hit);\n if (content === null) {\n tip.style.display = \"none\";\n return;\n }\n if (typeof content === \"string\") tip.textContent = content;\n else tip.replaceChildren(content);\n tip.style.display = \"block\";\n positionTooltip();\n };\n\n const positionTooltip = () => {\n const tip = dom.tooltip;\n const hit = tooltipTarget();\n if (!hit || tip.style.display === \"none\") return;\n let ax: number;\n let ay: number;\n let gap = 14;\n if (hit.type === \"node\") {\n ax = screenX(hit.index);\n ay = screenY(hit.index);\n gap += (Math.max(sizing.width[hit.index], 0) * k) / 2;\n } else {\n const ev = hoverEvent(hit);\n ax = ev.clientX - stage.offsetLeft;\n ay = ev.clientY - stage.offsetTop;\n }\n const tw = tip.offsetWidth;\n const th = tip.offsetHeight;\n let x = ax + gap;\n if (x + tw > width - 4) x = ax - gap - tw;\n x = Math.max(4, Math.min(width - tw - 4, x));\n const y = Math.max(4, Math.min(height - th - 4, ay - th / 2));\n tip.style.transform = `translate(${Math.round(x)}px, ${Math.round(y)}px)`;\n };\n\n const row = (name: string, value: string) => {\n const el = style(doc.createElement(\"div\"), {\n display: \"flex\",\n alignItems: \"center\",\n gap: \"8px\",\n });\n const n = style(doc.createElement(\"span\"), {\n flex: \"1 1 auto\",\n color: \"var(--text-secondary-color, #6b7280)\",\n });\n n.textContent = name;\n const v = style(doc.createElement(\"span\"), {\n fontWeight: \"600\",\n fontVariantNumeric: \"tabular-nums\",\n marginLeft: \"12px\",\n });\n v.textContent = value;\n el.append(n, v);\n return el;\n };\n\n const header = (color: string, title: string) => {\n const el = style(doc.createElement(\"div\"), {\n display: \"flex\",\n alignItems: \"center\",\n gap: \"6px\",\n fontWeight: \"600\",\n marginBottom: \"2px\",\n color: \"var(--text-color, #1f2937)\",\n });\n el.append(swatch(doc, color), doc.createTextNode(title));\n return el;\n };\n\n const defaultTooltip = (hit: Hit): Node => {\n const { labels } = loc;\n const fragment = doc.createDocumentFragment();\n if (hit.type === \"node\") {\n const i = hit.index;\n const node = model.nodes[i];\n fragment.append(header(toCss(nodeColor[i]), labelOf(model, i)));\n if (node.subtitle) {\n const sub = style(doc.createElement(\"div\"), {\n color: \"var(--text-secondary-color, #6b7280)\",\n marginBottom: \"2px\",\n });\n sub.textContent = node.subtitle;\n fragment.append(sub);\n }\n const g = model.groupOf[i];\n if (g >= 0) fragment.append(row(labels.group, model.groups[g].name));\n if (Number.isFinite(node.value))\n fragment.append(row(labels.value, loc.value(node.value!)));\n const directed =\n layoutType === \"dag\" ||\n options.arrows ||\n model.edges.some((e) => e.directed);\n if (directed && !isTree()) {\n fragment.append(row(labels.incoming, loc.count(model.inDegree[i])));\n fragment.append(row(labels.outgoing, loc.count(model.outDegree[i])));\n } else if (!isTree()) {\n fragment.append(\n row(labels.degree, loc.count(model.inDegree[i] + model.outDegree[i])),\n );\n }\n if (isTree() && descendants[i] > 0 && !hasVisibleChild(i))\n fragment.append(row(labels.hiddenChildren, loc.count(descendants[i])));\n if (critical?.nodes[i]) {\n const tag = style(doc.createElement(\"div\"), {\n marginTop: \"2px\",\n color: toCss(criticalColor),\n fontWeight: \"600\",\n });\n tag.textContent = labels.critical;\n fragment.append(tag);\n }\n return fragment;\n }\n const e = hit.index;\n const edge = model.edges[e];\n const s = model.source[e];\n const t = model.target[e];\n const arrow = edgeArrow[e] ? \" → \" : \" — \";\n fragment.append(\n header(\n toCss(edgeColor[e]),\n `${labelOf(model, s)}${arrow}${labelOf(model, t)}`,\n ),\n );\n if (edge.label) {\n const el = doc.createElement(\"div\");\n el.textContent = edge.label;\n fragment.append(el);\n }\n if (Number.isFinite(edge.value))\n fragment.append(row(labels.value, loc.value(edge.value!)));\n return fragment;\n };\n\n let hoverFrame = 0;\n let pendingHover: { x: number; y: number } | null = null;\n const scheduleHover = (x: number, y: number) => {\n pendingHover = { x, y };\n if (hoverFrame || !win) return;\n hoverFrame = win.requestAnimationFrame(() => {\n hoverFrame = 0;\n const p = pendingHover;\n pendingHover = null;\n if (!p || destroyed || drag) return;\n const hit = pickAt(p.x, p.y);\n setHover(hit);\n stage.style.cursor =\n hit?.type === \"node\"\n ? \"pointer\"\n : interaction()?.pan\n ? \"grab\"\n : \"default\";\n });\n };\n\n // --------------------------------------------------------- selection\n\n const setSelection = (next: Set<number>, notify: boolean) => {\n const same =\n next.size === selection.size && [...next].every((i) => selection.has(i));\n if (same) return;\n selection.clear();\n next.forEach((i) => selection.add(i));\n sceneDirty = true;\n invalidate();\n dom.live.textContent = selection.size\n ? fill(loc.labels.selected, { count: loc.count(selection.size) })\n : loc.labels.selectionCleared;\n if (notify)\n emit(\"select\", { ids: [...selection].map((i) => model.nodes[i].id) });\n };\n\n const selectNode = (i: number, additive: boolean) => {\n const ia = interaction();\n if (!ia?.select) return;\n const multi = ia.select === \"multiple\" || additive;\n const next = new Set(multi ? selection : []);\n if (multi && next.has(i)) next.delete(i);\n else next.add(i);\n setSelection(next, true);\n };\n\n // ------------------------------------------------------ collapse\n\n const setCollapsed = (i: number, collapse: boolean, notify: boolean) => {\n if (!tree || !tree.children[i]?.length) return false;\n const id = model.nodes[i].id;\n if (collapse === collapsedIds.has(id)) return false;\n if (collapse) collapsedIds.add(id);\n else collapsedIds.delete(id);\n const prev = snapshot();\n runLayout(prev, true);\n // hidden nodes leave the selection\n const kept = new Set([...selection].filter((j) => visible[j]));\n if (kept.size !== selection.size) setSelection(kept, true);\n if (focusIndex >= 0 && !visible[focusIndex]) focusIndex = i;\n dom.live.textContent = collapse\n ? fill(loc.labels.collapsed, {\n name: labelOf(model, i),\n count: loc.count(descendants[i]),\n })\n : fill(loc.labels.expanded, { name: labelOf(model, i) });\n if (notify) emit(\"toggle\", { id, collapsed: collapse });\n return true;\n };\n\n // -------------------------------------------------------- interaction\n\n interface DragState {\n mode: \"node\" | \"pan\" | \"pinch\";\n index: number;\n origin: { x: number; y: number };\n view: [number, number, number];\n offset: [number, number];\n distance: number;\n moved: boolean;\n button: number;\n }\n let drag: DragState | null = null;\n const pointers = new Map<number, { x: number; y: number }>();\n\n const local = (e: { clientX: number; clientY: number }) => {\n const r = stage.getBoundingClientRect();\n return { x: e.clientX - r.left, y: e.clientY - r.top };\n };\n\n const pinchInfo = () => {\n const pts = [...pointers.values()];\n const a = pts[0] ?? { x: 0, y: 0 };\n const b = pts[1] ?? a;\n return {\n distance: Math.hypot(a.x - b.x, a.y - b.y),\n center: { x: (a.x + b.x) / 2, y: (a.y + b.y) / 2 },\n };\n };\n\n const onPointerDown = (e: PointerEvent) => {\n const ia = interaction();\n if (!ia) return;\n if ((e.target as Element | null)?.closest?.(\"button\")) return;\n const p = local(e);\n pointers.set(e.pointerId, p);\n stage.setPointerCapture?.(e.pointerId);\n viewTween = null;\n if (pointers.size === 2 && (ia.zoom || ia.pan)) {\n const { distance, center } = pinchInfo();\n drag = {\n mode: \"pinch\",\n index: -1,\n origin: center,\n view: [k, tx, ty],\n offset: [0, 0],\n distance,\n moved: true,\n button: 0,\n };\n return;\n }\n if (pointers.size > 1) return;\n const i = e.button === 0 ? pickNode(p.x, p.y) : -1;\n const base = {\n origin: p,\n view: [k, tx, ty] as [number, number, number],\n distance: 0,\n moved: false,\n button: e.button,\n };\n if (i >= 0 && ia.drag) {\n drag = {\n ...base,\n mode: \"node\",\n index: i,\n offset: [(p.x - tx) / k - X[i], (p.y - ty) / k - Y[i]],\n };\n } else {\n drag = { ...base, mode: \"pan\", index: i, offset: [0, 0] };\n }\n if (e.button === 1) e.preventDefault();\n };\n\n const onPointerMove = (e: PointerEvent) => {\n const p = local(e);\n if (pointers.has(e.pointerId)) pointers.set(e.pointerId, p);\n if (!drag) {\n if (e.pointerType === \"touch\" && pointers.size) return;\n scheduleHover(p.x, p.y);\n return;\n }\n const ia = interaction();\n if (!ia) return;\n if (drag.mode === \"pinch\") {\n const { distance, center } = pinchInfo();\n const [k0, x0, y0] = drag.view;\n const [lo, hi] = zoomLimits();\n const scale = ia.zoom && drag.distance > 0 ? distance / drag.distance : 1;\n const nk = Math.max(lo, Math.min(hi, k0 * scale));\n const ratio = nk / k0;\n const ox = drag.origin.x;\n const oy = drag.origin.y;\n const nx = ia.pan ? center.x : ox;\n const ny = ia.pan ? center.y : oy;\n k = nk;\n tx = nx - (ox - x0) * ratio;\n ty = ny - (oy - y0) * ratio;\n userMoved = true;\n sceneDirty = true;\n invalidate();\n return;\n }\n const dx = p.x - drag.origin.x;\n const dy = p.y - drag.origin.y;\n if (!drag.moved && Math.hypot(dx, dy) < 3) return;\n if (!drag.moved) {\n drag.moved = true;\n if (hover) setHover(null);\n stage.style.cursor = drag.mode === \"node\" ? \"grabbing\" : \"grabbing\";\n }\n if (drag.mode === \"node\") {\n const i = drag.index;\n // the node stays under the pointer: stop following the layout\n followLayout = false;\n const wx = (p.x - tx) / k - drag.offset[0];\n const wy = (p.y - ty) / k - drag.offset[1];\n if (runner) runner.drag(i, wx, wy);\n else if (layoutType === \"force\") {\n // the simulation has finished: warm it up again from the current positions\n const prev = snapshot();\n startForceFrom(prev);\n (runner as ForceRunner | null)?.drag(i, wx, wy);\n }\n X[i] = TX[i] = wx;\n Y[i] = TY[i] = wy;\n pathsDirty = true;\n invalidate();\n return;\n }\n if (!ia.pan) return;\n const [k0, x0, y0] = drag.view;\n k = k0;\n tx = x0 + dx;\n ty = y0 + dy;\n userMoved = true;\n sceneDirty = true;\n invalidate();\n };\n\n const startForceFrom = (prev: Map<string, Snapshot>) => {\n stopRunner();\n // a drag warms the layout up again: the view stays where it is\n startForce(prev, false);\n };\n\n const onPointerUp = (e: PointerEvent) => {\n const was = drag;\n pointers.delete(e.pointerId);\n if (stage.hasPointerCapture?.(e.pointerId))\n stage.releasePointerCapture(e.pointerId);\n if (pointers.size) {\n if (was?.mode === \"pinch\") drag = null;\n return;\n }\n drag = null;\n stage.style.cursor = interaction()?.pan ? \"grab\" : \"default\";\n if (!was) return;\n if (was.mode === \"node\" && was.moved) {\n runner?.release(was.index, !!model.nodes[was.index].fixed);\n return;\n }\n if (was.moved || was.button !== 0) return;\n const p = local(e);\n const hit = pickAt(p.x, p.y);\n handleClick(hit, e.ctrlKey || e.metaKey || e.shiftKey);\n };\n\n const handleClick = (hit: Hit | null, additive: boolean) => {\n if (!hit) {\n if (selection.size && interaction()?.select)\n setSelection(new Set(), true);\n return;\n }\n const event = hoverEvent(hit);\n emit(\"click\", event);\n if (hit.type !== \"node\") return;\n const i = hit.index;\n if (collapsible() && tree?.children[i]?.length)\n setCollapsed(i, hasVisibleChild(i), true);\n selectNode(i, additive);\n };\n\n const onPointerCancel = (e: PointerEvent) => {\n pointers.delete(e.pointerId);\n if (!pointers.size) {\n if (drag?.mode === \"node\")\n runner?.release(drag.index, !!model.nodes[drag.index].fixed);\n drag = null;\n }\n };\n\n const onPointerLeave = () => {\n pendingHover = null;\n if (!drag && hover) setHover(null);\n };\n\n let hintTimer: ReturnType<typeof setTimeout> | 0 = 0;\n const showHint = () => {\n const mac = /Mac|iPhone|iPad/.test(win?.navigator?.platform ?? \"\");\n dom.hint.textContent = fill(loc.labels.zoomHint, {\n key: mac ? \"⌘\" : \"Ctrl\",\n });\n dom.hint.style.opacity = \"1\";\n if (hintTimer) clearTimeout(hintTimer);\n hintTimer = setTimeout(() => {\n hintTimer = 0;\n dom.hint.style.opacity = \"0\";\n }, 1200);\n };\n\n const onWheel = (e: WheelEvent) => {\n const ia = interaction();\n if (!ia?.zoom) return;\n const pinch = e.ctrlKey && !e.metaKey;\n if (ia.wheel === \"modifier\" && !e.ctrlKey && !e.metaKey) {\n if (Math.abs(e.deltaY) > Math.abs(e.deltaX)) showHint();\n return;\n }\n e.preventDefault();\n const p = local(e);\n viewTween = null;\n zoomAround(1 / wheelFactor(e.deltaY, e.deltaMode, pinch), p.x, p.y);\n if (hover) setHover(null);\n };\n\n const onDoubleClick = (e: MouseEvent) => {\n if (!interaction()) return;\n const p = local(e);\n if (pickNode(p.x, p.y) >= 0) return;\n e.preventDefault();\n instance.fit(true);\n };\n\n const onFocus = () => {\n let keyboard: boolean;\n try {\n keyboard = stage.matches(\":focus-visible\");\n } catch {\n keyboard = true;\n }\n focusVisible = keyboard;\n if (keyboard)\n stage.style.boxShadow = \"0 0 0 2px var(--primary-color, #4f46e5)\";\n };\n\n const onBlur = () => {\n stage.style.boxShadow = \"\";\n focusVisible = false;\n if (focusIndex >= 0) {\n focusIndex = -1;\n renderTooltip();\n sceneDirty = true;\n invalidate();\n }\n };\n\n const drawnNodes = () => {\n const list: number[] = [];\n for (let i = 0; i < model.n; i++)\n if (fade(i) > 0 && !(tween && !visible[i])) list.push(i);\n return list;\n };\n\n const setFocus = (i: number) => {\n if (i === focusIndex) return;\n focusIndex = i;\n focusVisible = true;\n sceneDirty = true;\n // keep it in view\n const sx = screenX(i);\n const sy = screenY(i);\n const margin = 40;\n if (\n sx < margin ||\n sy < margin ||\n sx > width - margin ||\n sy > height - margin\n ) {\n setView([k, tx + width / 2 - sx, ty + height / 2 - sy], true);\n }\n const g = model.groupOf[i];\n const degree = model.inDegree[i] + model.outDegree[i];\n dom.live.textContent =\n g >= 0\n ? fill(loc.labels.nodeFocusGroup, {\n name: labelOf(model, i),\n group: model.groups[g].name,\n degree: loc.count(degree),\n })\n : fill(loc.labels.nodeFocus, {\n name: labelOf(model, i),\n degree: loc.count(degree),\n });\n renderTooltip();\n invalidate();\n emit(\"hover\", hoverEvent({ type: \"node\", index: i }));\n };\n\n /** Closest node in a direction (screen space) */\n const neighborInDirection = (\n from: number,\n dx: number,\n dy: number,\n ): number => {\n const sx = screenX(from);\n const sy = screenY(from);\n let best = -1;\n let bestScore = Infinity;\n for (const i of drawnNodes()) {\n if (i === from) continue;\n const vx = screenX(i) - sx;\n const vy = screenY(i) - sy;\n const along = vx * dx + vy * dy;\n if (along <= 0.5) continue;\n const across = Math.abs(vx * dy - vy * dx);\n if (across > along * 2.5) continue;\n const score = along + across * 2;\n if (score < bestScore) {\n bestScore = score;\n best = i;\n }\n }\n return best;\n };\n\n const startingNode = () => {\n const first = [...selection].find((i) => fade(i) > 0);\n if (first !== undefined) return first;\n for (const i of model.rank) if (fade(i) > 0) return i;\n return -1;\n };\n\n const onKeyDown = (e: KeyboardEvent) => {\n const ia = interaction();\n if (!ia?.keyboard) return;\n const dirs: Record<string, [number, number]> = {\n ArrowLeft: [-1, 0],\n ArrowRight: [1, 0],\n ArrowUp: [0, -1],\n ArrowDown: [0, 1],\n };\n const dir = dirs[e.key];\n if (dir) {\n e.preventDefault();\n if (focusIndex < 0 || fade(focusIndex) <= 0) {\n const start = startingNode();\n if (start >= 0) setFocus(start);\n return;\n }\n const next = neighborInDirection(focusIndex, dir[0], dir[1]);\n if (next >= 0) setFocus(next);\n return;\n }\n switch (e.key) {\n case \"Enter\":\n case \" \":\n if (focusIndex < 0) return;\n e.preventDefault();\n if (\n e.key === \"Enter\" &&\n collapsible() &&\n tree?.children[focusIndex]?.length\n )\n setCollapsed(focusIndex, hasVisibleChild(focusIndex), true);\n emit(\"click\", hoverEvent({ type: \"node\", index: focusIndex }));\n selectNode(focusIndex, e.ctrlKey || e.metaKey || e.key === \" \");\n return;\n case \"+\":\n case \"=\":\n if (!ia.zoom) return;\n e.preventDefault();\n zoomAround(KEY_ZOOM, width / 2, height / 2, true);\n return;\n case \"-\":\n case \"_\":\n if (!ia.zoom) return;\n e.preventDefault();\n zoomAround(1 / KEY_ZOOM, width / 2, height / 2, true);\n return;\n case \"0\":\n case \"Home\":\n e.preventDefault();\n instance.fit(true);\n return;\n case \"Escape\": {\n const had = focusIndex >= 0 || selection.size > 0 || !!hover;\n if (!had) return;\n e.preventDefault();\n focusIndex = -1;\n if (hover) setHover(null);\n setSelection(new Set(), true);\n renderTooltip();\n sceneDirty = true;\n invalidate();\n return;\n }\n default:\n }\n };\n\n const onZoomIn = () => zoomAround(BUTTON_ZOOM, width / 2, height / 2, true);\n const onZoomOut = () =>\n zoomAround(1 / BUTTON_ZOOM, width / 2, height / 2, true);\n const onFit = () => instance.fit(true);\n\n stage.addEventListener(\"pointerdown\", onPointerDown);\n stage.addEventListener(\"pointermove\", onPointerMove);\n stage.addEventListener(\"pointerup\", onPointerUp);\n stage.addEventListener(\"pointercancel\", onPointerCancel);\n stage.addEventListener(\"pointerleave\", onPointerLeave);\n stage.addEventListener(\"wheel\", onWheel, { passive: false });\n stage.addEventListener(\"dblclick\", onDoubleClick);\n stage.addEventListener(\"keydown\", onKeyDown);\n stage.addEventListener(\"focus\", onFocus);\n stage.addEventListener(\"blur\", onBlur);\n dom.zoomIn.addEventListener(\"click\", onZoomIn);\n dom.zoomOut.addEventListener(\"click\", onZoomOut);\n dom.fit.addEventListener(\"click\", onFit);\n\n // ----------------------------------------------------------- watchers\n\n const resizeObserver =\n typeof ResizeObserver === \"function\"\n ? new ResizeObserver(() => invalidate())\n : null;\n resizeObserver?.observe(stage);\n\n const refreshTheme = () => {\n if (destroyed) return;\n const next = readTheme(dom.root, options.palette);\n const fontChanged = next.fontFamily !== theme.fontFamily;\n if (!themeColorsChanged(theme, next) && !fontChanged) return;\n theme = next;\n if (fontChanged) {\n runLayout(snapshot(), false);\n return;\n }\n refreshColors();\n legendKey = \"\";\n renderLegend();\n highlightKey = \"\";\n invalidate();\n };\n const unwatchTheme = watchTheme(refreshTheme);\n\n const unwatchLocale = watchLocale(() => {\n if (destroyed || resolveLocale(options.locale) === loc.locale) return;\n loc = graphLocale(options.locale, options.labels);\n updateAccessibility();\n if (hover || focusIndex >= 0) renderTooltip();\n });\n\n // ----------------------------------------------------------- renderer\n\n const initRenderer = async (exclude: Set<ChartRendererKind> = new Set()) => {\n const token = ++rendererToken;\n const next = await createRenderer(\n options.renderer ?? \"auto\",\n () => {\n const canvas = style(doc.createElement(\"canvas\"), {\n position: \"absolute\",\n left: \"0\",\n top: \"0\",\n pointerEvents: \"none\",\n });\n canvas.setAttribute(\"aria-hidden\", \"true\");\n canvas.className = \"minerva-chart-data\";\n return canvas;\n },\n (kind) => {\n if (destroyed || renderer?.kind !== kind) return;\n renderer.destroy();\n renderer.canvas.remove();\n renderer = null;\n void initRenderer(new Set([...exclude, kind]));\n },\n exclude,\n );\n if (destroyed || token !== rendererToken) {\n next?.destroy();\n return;\n }\n if (renderer) {\n renderer.destroy();\n renderer.canvas.remove();\n }\n renderer = next;\n sceneDirty = true;\n if (next) {\n dom.root.dataset.renderer = next.kind;\n stage.insertBefore(next.canvas, dom.foreground);\n emit(\"renderer\", next.kind);\n } else {\n delete dom.root.dataset.renderer;\n }\n resolveReady(next?.kind ?? null);\n invalidate();\n };\n\n // ---------------------------------------------------------- startup\n\n const initialState = (o: GraphChartOptions) => {\n collapsedIds.clear();\n for (const node of o.nodes ?? [])\n if (node?.collapsed) collapsedIds.add(node.id);\n hiddenGroups.clear();\n for (const g of o.groups ?? []) if (g?.hidden) hiddenGroups.add(g.id);\n };\n\n const applySelectedOption = () => {\n if (!options.selected) return;\n const next = new Set<number>();\n for (const id of options.selected) {\n const i = model.index.get(id);\n if (i !== undefined) next.add(i);\n }\n selection.clear();\n next.forEach((i) => selection.add(i));\n highlightKey = \"\";\n sceneDirty = true;\n };\n\n initialState(options);\n runLayout(new Map(), false);\n applySelectedOption();\n void initRenderer();\n\n // ---------------------------------------------------------------- api\n\n const replaceData = (next: GraphChartOptions, dataChanged: boolean) => {\n const prev = snapshot();\n const ids = [...selection].map((i) => model.nodes[i].id);\n const focusId = focusIndex >= 0 ? model.nodes[focusIndex].id : null;\n if (dataChanged) {\n // collapsed / hidden flags of the new data\n for (const node of next.nodes ?? [])\n if (node?.collapsed) collapsedIds.add(node.id);\n model = buildModel(next.nodes ?? [], next.edges ?? [], next.groups);\n for (const g of next.groups ?? []) if (g?.hidden) hiddenGroups.add(g.id);\n selection.clear();\n for (const id of ids) {\n const i = model.index.get(id);\n if (i !== undefined) selection.add(i);\n }\n focusIndex = focusId !== null ? (model.index.get(focusId) ?? -1) : -1;\n hover = null;\n dom.tooltip.style.display = \"none\";\n }\n runLayout(prev, true);\n };\n\n const instance: GraphChartInstance = {\n setOptions(next) {\n if (destroyed) return;\n const previous = options;\n options = next;\n if ((next.palette ?? []).join() !== (previous.palette ?? []).join()) {\n theme = readTheme(dom.root, next.palette);\n }\n if (next.locale !== previous.locale || next.labels !== previous.labels) {\n loc = graphLocale(next.locale, next.labels);\n }\n const dataChanged =\n next.nodes !== previous.nodes ||\n next.edges !== previous.edges ||\n next.groups !== previous.groups;\n const sig = layoutSignature(next);\n if (dataChanged || sig !== layoutSig) {\n layoutSig = sig;\n replaceData(next, dataChanged);\n } else {\n refreshCritical();\n refreshColors();\n pathsDirty = true;\n highlightKey = \"\";\n legendKey = \"\";\n renderLegend();\n updateAccessibility();\n invalidate();\n }\n if (\n (next.selected ?? []).join(\"\\u0001\") !==\n (previous.selected ?? []).join(\"\\u0001\")\n )\n applySelectedOption();\n if ((next.renderer ?? \"auto\") !== (previous.renderer ?? \"auto\"))\n void initRenderer();\n },\n setData(data) {\n if (destroyed) return;\n instance.setOptions({\n ...options,\n nodes: data.nodes,\n edges: data.edges,\n groups: data.groups ?? options.groups,\n });\n },\n fit(animate = true) {\n if (destroyed) return;\n userMoved = false;\n // keep the view fitted while the layout still moves\n if (runner?.running()) followLayout = true;\n const target = fitView();\n if (target) setView(target, animate);\n else needsFit = true;\n invalidate();\n },\n focusNode(id, opts = {}) {\n if (destroyed) return;\n let i = model.index.get(id);\n if (i === undefined) return;\n // expand the collapsed ancestors first\n if (tree && !visible[i]) {\n let changed = false;\n for (let a = tree.parent[i]; a >= 0; a = tree.parent[a]) {\n if (collapsedIds.delete(model.nodes[a].id)) changed = true;\n }\n if (changed) runLayout(snapshot(), opts.animate !== false);\n i = model.index.get(id)!;\n }\n const kk = opts.zoom ?? Math.max(k, 1);\n const [lo, hi] = zoomLimits();\n const nk = Math.max(lo, Math.min(hi, kk));\n userMoved = true;\n const w = width || stage.clientWidth;\n const h = height || stage.clientHeight;\n setView(\n [nk, w / 2 - TX[i] * nk, h / 2 - TY[i] * nk],\n opts.animate !== false,\n );\n focusIndex = i;\n highlightKey = \"\";\n sceneDirty = true;\n invalidate();\n },\n select(ids) {\n if (destroyed) return;\n const list = ids === null ? [] : typeof ids === \"string\" ? [ids] : ids;\n const next = new Set<number>();\n for (const id of list) {\n const i = model.index.get(id);\n if (i !== undefined) next.add(i);\n }\n setSelection(next, true);\n },\n getSelection: () => [...selection].map((i) => model.nodes[i].id),\n expand(id) {\n if (destroyed) return;\n if (id === undefined) {\n if (!collapsedIds.size) return;\n const ids = [...collapsedIds];\n collapsedIds.clear();\n runLayout(snapshot(), true);\n for (const c of ids) {\n if (model.index.has(c)) emit(\"toggle\", { id: c, collapsed: false });\n }\n return;\n }\n const i = model.index.get(id);\n if (i !== undefined) setCollapsed(i, false, true);\n else collapsedIds.delete(id);\n },\n collapse(id) {\n if (destroyed) return;\n if (id === undefined) {\n if (!tree) return;\n const changed: string[] = [];\n tree.children.forEach((list, i) => {\n const nodeId = model.nodes[i].id;\n if (\n list.length &&\n tree!.parent[i] >= 0 &&\n !collapsedIds.has(nodeId)\n ) {\n collapsedIds.add(nodeId);\n changed.push(nodeId);\n }\n });\n if (!changed.length) return;\n runLayout(snapshot(), true);\n for (const c of changed) emit(\"toggle\", { id: c, collapsed: true });\n return;\n }\n const i = model.index.get(id);\n if (i !== undefined) setCollapsed(i, true, true);\n },\n toggle(id) {\n const i = model.index.get(id);\n if (i === undefined || destroyed) return;\n setCollapsed(i, hasVisibleChild(i), true);\n },\n getPositions() {\n const out: Record<string, GraphPoint> = {};\n for (let i = 0; i < model.n; i++) {\n out[model.nodes[i].id] = { x: TX[i], y: TY[i] };\n }\n return out;\n },\n relayout() {\n if (destroyed) return;\n runLayout(layoutType === \"force\" ? new Map() : snapshot(), true);\n },\n resize() {\n invalidate();\n },\n getRenderer: () => renderer?.kind ?? null,\n ready,\n refreshTheme,\n on(type, listener) {\n let set = listeners.get(type);\n if (!set) {\n set = new Set();\n listeners.set(type, set);\n }\n set.add(listener as (e: never) => void);\n return () => {\n set.delete(listener as (e: never) => void);\n };\n },\n destroy() {\n if (destroyed) return;\n destroyed = true;\n rendererToken++;\n if (frameId) win?.cancelAnimationFrame(frameId);\n if (hoverFrame) win?.cancelAnimationFrame(hoverFrame);\n if (hintTimer) clearTimeout(hintTimer);\n frameId = 0;\n hoverFrame = 0;\n stopRunner();\n resizeObserver?.disconnect();\n unwatchTheme();\n unwatchLocale();\n stage.removeEventListener(\"pointerdown\", onPointerDown);\n stage.removeEventListener(\"pointermove\", onPointerMove);\n stage.removeEventListener(\"pointerup\", onPointerUp);\n stage.removeEventListener(\"pointercancel\", onPointerCancel);\n stage.removeEventListener(\"pointerleave\", onPointerLeave);\n stage.removeEventListener(\"wheel\", onWheel);\n stage.removeEventListener(\"dblclick\", onDoubleClick);\n stage.removeEventListener(\"keydown\", onKeyDown);\n stage.removeEventListener(\"focus\", onFocus);\n stage.removeEventListener(\"blur\", onBlur);\n dom.zoomIn.removeEventListener(\"click\", onZoomIn);\n dom.zoomOut.removeEventListener(\"click\", onZoomOut);\n dom.fit.removeEventListener(\"click\", onFit);\n renderer?.destroy();\n renderer = null;\n listeners.clear();\n resolveReady(null);\n dom.root.remove();\n },\n };\n return instance;\n};\n\nfunction isDark(theme: ChartTheme): boolean {\n return luminance(theme.background) < 0.4 || luminance(theme.text) > 0.6;\n}\n"],"mappings":"4ZAoFA,IAAMyD,EAAsC,CAC1C,QACA,MACA,OACA,SACA,UACA,MACA,WACA,MACA,MACF,EAEMC,EAAa,IAAI,IAAqB,CAC1C,OACA,SACA,UACA,KACF,CAAC,EAGKC,EAAkB,IAElBC,EAAa,IACbC,EAAW,IACXC,GAAgB,IAEhBC,GAAe,EACfC,EAAW,KACXC,EAAc,IAEdC,GAAe,EAAgB,EAAmB,IAAmB,CACzE,IAAMC,EACJC,IAAc,EAAIC,EAAS,GAAKD,IAAc,EAAIC,EAAS,IAAMA,EAEnE,OAAO,KAAK,IAAI,KAAK,IAAI,GAAI,KAAK,IAAI,EAAGF,GAD3BG,EAAQ,IAAO,MAC0B,CAAC,CAAC,CAC3D,EAEMC,EAAQ,GACZC,EAAI,GAAM,EAAIA,EAAIA,EAAIA,EAAI,GAAa,GAAKA,EAAI,IAAG,EAAK,EAGpDC,OAAoB,CACxB,IAAIC,EAAO,IAAI,aAAa,IAAI,EAC5BC,EAAS,EACPC,EAAU,GAAkB,CAChC,GAAID,EAASE,GAASH,EAAK,OAAQ,OACnC,IAAMI,EAAO,IAAI,aAAa,KAAK,IAAIJ,EAAK,OAAS,EAAGC,EAASE,CAAK,CAAC,EACvEC,EAAK,IAAIJ,EAAK,SAAS,EAAGC,CAAM,CAAC,EACjC,EAAOG,CACT,EACA,MAAO,CACL,KAAK,EAAW,EAAW,CACzBF,EAAO,CAAC,EACR,EAAK,KAAYG,EACjB,EAAK,KAAYC,CACnB,EACA,QAAQ,EAA2B,CACjCJ,EAAOK,EAAO,MAAM,EACpB,IAAK,IAAIC,EAAI,EAAGA,EAAID,EAAO,OAAQ,IAAK,EAAK,KAAYA,EAAOC,EAClE,EACA,UAAaP,EAAS,EACtB,WAAcD,EAAK,SAAS,EAAGC,CAAM,CACvC,CACF,EAeaQ,GACX,GACqBC,GAAU3B,EAAQ,SAAS2B,CAAM,EAAIA,EAAS,QAE/DC,GAAmB,GACvB,KAAK,UAAU,CACbF,GAAcG,EAAE,MAAM,EACtBA,EAAE,WAAa,GACfA,EAAE,OAAS,KACXA,EAAE,IACE,CAAE,GAAGA,EAAE,IAAK,aAAc,IAAA,GAAW,cAAe,IAAA,EAAU,EAC9D,KACJA,EAAE,MAAQ,KACVA,EAAE,UAAY,KACdA,EAAE,UAAY,KACdA,EAAE,WAAa,KACfA,EAAE,aAAe,EACnB,CAAC,EAEUC,IACX,EACA,KACuB,CACvB,IAAMC,EAAMC,EAAU,cAChBC,GAAMF,EAAI,YACVG,EAAM3F,EAAAA,eAAeyF,CAAS,EAC9BG,EAAQD,EAAI,MACdE,EAAUC,GACVC,EAAoB9F,EAAAA,UAAU0F,EAAI,KAAME,EAAQ,OAAO,EACvDG,GAAOC,GAAOF,CAAK,EACnBG,EAAmBhG,EAAAA,YAAY2F,EAAQ,OAAQA,EAAQ,MAAM,EAC7DM,EAAY,GAEVC,GAAY,IAAI,IAIhBC,IACJ,EACA,IACG,CACHD,GACG,IAAIE,CAAI,CAAC,EACR,QAAS,GAAQC,EAA0CC,CAAK,CAAC,CACvE,EACMC,GAAa,GACjB,CAAC,CAACL,GAAU,IAAIE,CAAI,CAAC,EAAE,KAEnBI,GACJ,OAAOhB,IAAK,YAAe,WACvBA,GAAI,WAAW,kCAAkC,EACjD,KACAiB,OAAYjB,IAAK,aAAa,IAAI,GAAK,KAAK,IAAI,EAIlDkB,EAAoBzG,EAAAA,WACtB0F,EAAQ,OAAS,CAAC,EAClBA,EAAQ,OAAS,CAAC,EAClBA,EAAQ,MACV,EACIgB,EAA8B1B,GAAcU,EAAQ,MAAM,EAC1DiB,GAA4B,KAC5BC,GAAY1B,GAAgBQ,CAAO,EACnCmB,EACAC,EAAkB,IAAI,aACtBC,EAAkB,IAAI,aACtBC,EAAmB,IAAI,aACvBC,GAAmB,IAAI,aACvBC,GAAmB,IAAI,aACvBC,GAAmB,IAAI,aACvBC,GAAU,IAAI,WACdC,GAAiC,KACjCC,GAAoD,KACpDC,GAAS,EACTC,EAAqC,KACrCC,GAAmC,KACnCC,GAAyC,KACzCC,EAA6B,KAC7BC,GAAe,GACbC,EAAe,IAAI,IACnBC,GAAe,IAAI,IACrBC,GAA4D,KAC5DC,GAAc,IAAI,WAClBC,GAA6B,CAAC,EAC9BC,GAAa,GACbC,EAAa,GACbC,GAAsB,CAAC,EACvBC,GAAU,EAGVC,EAAoB,CAAC,EACrBC,GAAoB,CAAC,EACrBC,GAAY,IAAI,aAChBC,GAAY,IAAI,WAChBC,GAAa,IAAI,WACjBC,GAAqB,CAAC,EACtBC,GAAsB,CAAC,IAAM,IAAM,IAAM,CAAC,EAC1CC,GAAiB,IAAI,aAGrBC,EAAI,EACJC,EAAK,EACLC,EAAK,EACLC,GAIO,KACPC,GAAY,GACZC,GAAW,GAEXC,GAAa,GACbC,GAAY,GAEZC,GAAe,GACfC,EAAQ,EACRC,EAAS,EAGTC,EAAoB,KACpBC,EAAa,GACbC,GAAe,GACbC,EAAY,IAAI,IAClBC,GACF,KACEC,GAAe,GAEfC,EAAiC,KACjCC,GAAgB,EAChBC,OAA+D,CAAC,EAC9DC,GAAQ,IAAI,QAAmC,GAAY,CAC/D,GAAeC,CACjB,CAAC,EACGC,GAAU,EAIRC,OAA8D,CAClE,IAAMlF,EAAIO,EAAQ,YAClB,GAAIP,IAAM,GAAO,OAAO,KACxB,IAAMmF,EAAI,OAAOnF,GAAM,SAAWA,EAAI,CAAC,EACvC,MAAO,CACL,IAAKmF,EAAE,KAAO,GACd,KAAMA,EAAE,MAAQ,GAChB,MAAOA,EAAE,OAAS,WAClB,KACEA,EAAE,OACD5D,IAAe,SACdA,IAAe,QACfA,IAAe,YACnB,OAAQ4D,EAAE,QAAU,GACpB,SAAUA,EAAE,UAAY,GACxB,UAAWA,EAAE,WAAa,CAAC,IAAM,CAAC,CACpC,CACF,EAEMC,OAAehH,EAAW,IAAImD,CAAU,EACxC8D,OAAoBD,GAAO,GAAK7E,EAAQ,MAAM,cAAgB,GAC9D+E,OAAoB,CACxB,IAAMC,EAAIhF,EAAQ,UAElB,OADIgF,IAAM,IAASnE,IAAe,QAAgB,EAC3C,OAAOmE,GAAM,UAAYA,GAAK,EAAIA,EAAIhH,CAC/C,EACMiH,OACJjF,EAAQ,YAAcgB,IAAe,MAAQ,UAAY,aAErDkE,OAAkC,CACtC,IAAMC,EAAInF,EAAQ,UACZoF,EAAOpE,IAAe,OAAS6D,GAAO,EAE5C,GADIM,IAAM,YAAcA,IAAM,UACzBA,IAAM,UAAYA,IAAM,eAAiBC,EAAM,OAAOD,EAC3D,GAAIA,EAAG,MAAO,QACd,OAAQnE,EAAR,CACE,IAAK,MACL,IAAK,OACL,IAAK,SACL,IAAK,UACH,MAAO,SACT,IAAK,MACH,MAAO,aACT,IAAK,WACL,IAAK,MACH,MAAO,QACT,QACE,MAAO,UACX,CACF,EAEMqE,IAAgB,EAAe,IAAyB,CAC5D,IAAMT,EAAI1E,EAAM,QACZA,EAAM,QAAQoF,EAAOC,CAAQ,EAC5BhL,EAAAA,WAAW+K,CAAK,GAAKC,EAC1B,OAAOX,EAAE,GAAK,EAAIpK,EAAAA,IAAI0F,EAAM,WAAY,CAAC0E,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAI,CAAC,EAAGA,EAAE,EAAE,EAAIA,CACzE,EAIMY,GAAa1F,EAAI,WAAW,WAAW,IAAI,EAC3C2F,IAAW,EAAc,IACxBD,IACL,GAAW,KAAOE,EACXF,GAAW,YAAYG,CAAI,CAAC,CAAC,OAFZA,EAAK,OAAS,EAOlCC,OAAwC,CAC5C,IAAMC,EAAM,IAAI,IAChB,GAAIzE,EAAE,SAAWL,EAAM,EAAG,OAAO8E,EACjC,IAAK,IAAIxG,EAAI,EAAGA,EAAI0B,EAAM,EAAG,IACtB,OAAO,SAASK,EAAE/B,EAAE,GACzBwG,EAAI,IAAI9E,EAAM,MAAM1B,EAAE,CAAC,GAAI,CACzB,EAAG+B,EAAE/B,GACL,EAAGgC,EAAEhC,GACL,QAAS,CAAC,CAACqC,GAAQrC,IAAM,CAAC6C,EAC5B,CAAC,EAEH,OAAO2D,CACT,EAEMC,OAAmB,CACvB7D,GAAQ,QAAQ,EAChB,EAAS,KACT,GAAe,EACjB,EAEM8D,OAAqB,CACzB,IAAMC,EAAM,IAAI,IAChB,IAAK,IAAMC,KAAM9D,EAAc,CAC7B,IAAM9C,EAAI0B,EAAM,MAAM,IAAIkF,CAAE,EACxB5G,IAAM,IAAA,IAAW2G,EAAI,IAAI3G,CAAC,CAChC,CACA,OAAO2G,CACT,EAEME,IACJ,EACA,EACA,EACA,IACG,CACH,IAAMvH,EAAIqB,EAAQ,MAAQ,CAAC,EAC3B,MAAO,CACL,EAAGe,EAAM,EACT,OAAQA,EAAM,OACd,OAAQA,EAAM,OACd,MAAOoF,EACP,OAAQC,EACR,OACA,aACA,KAAMzH,EAAE,OAAS,IAAA,GAA8C,GAAjCoC,EAAM,MAAM,IAAIpC,EAAE,IAAI,GAAK,GACzD,WACA,WACEA,EAAE,aAAe8B,IAAS,MAAQ,GAAKA,IAAS,UAAY,GAAK,IACnE,UAAWsF,GAAa,EACxB,QAASpH,EAAE,OACb,CACF,EAEM0H,IAAc,EAA6B,EAAS,KAAS,CACjE,GAAeC,EACf,IAAM,EAAIvF,EAAM,EACV7B,EAAI,IAAI,aAAa,CAAC,CAAC,CAAC,KAAK,GAAG,EAChCC,EAAI,IAAI,aAAa,CAAC,CAAC,CAAC,KAAK,GAAG,EAChCoH,EAAQ,IAAI,WAAW,CAAC,EAC1BC,EAAQ,EACZ,IAAK,IAAInH,EAAI,EAAGA,EAAI,EAAG,IAAK,CAC1B,IAAMoH,EAAO1F,EAAM,MAAM1B,GACnBqH,EAAIC,EAAK,IAAIF,EAAK,EAAE,EACtBC,GACF,EAAErH,GAAKqH,EAAE,EACT,EAAErH,GAAKqH,EAAE,EACT,KACS,OAAO,SAASD,EAAK,CAAC,GAAK,OAAO,SAASA,EAAK,CAAC,IAC1D,EAAEpH,GAAKoH,EAAK,EACZ,EAAEpH,GAAKoH,EAAK,EACZ,KAEEA,EAAK,OAAS,OAAO,SAASA,EAAK,CAAC,GAAK,OAAO,SAASA,EAAK,CAAC,IACjE,EAAEpH,GAAKoH,EAAK,EACZ,EAAEpH,GAAKoH,EAAK,EACZ,EAAMpH,GAAK,EAEf,CAEA,GAAImH,GAASA,EAAQ,EACnB,KAAK,IAAInH,EAAI,EAAGA,EAAI,EAAG,IACrB,GAAI,QAAO,SAASH,EAAEG,EAAE,EACxB,IAAK,IAAI2F,EAAIjE,EAAM,SAAS1B,GAAI2F,EAAIjE,EAAM,SAAS1B,EAAI,GAAI,IAAK,CAC9D,IAAMuH,EAAI7F,EAAM,QAAQiE,GAClB6B,EAAI9F,EAAM,OAAO6F,KAAOvH,EAAI0B,EAAM,OAAO6F,GAAK7F,EAAM,OAAO6F,GACjE,GAAI,OAAO,SAAS1H,EAAE2H,EAAE,EAAG,CACzB,EAAExH,GAAKH,EAAE2H,GAAOxH,EAAI,KAAQ,GAAM,EAClC,EAAEA,GAAKF,EAAE0H,GAAOxH,EAAI,OAAU,GAAM,EACpC,KACF,CACF,CACF,CAEF,IAAMyH,EAAS,IAAI,aAAa,CAAC,EACjC,IAAK,IAAIzH,EAAI,EAAGA,EAAI,EAAG,IACrB,EAAOA,GAAK,KAAK,IAAI8B,EAAO,MAAM9B,GAAI8B,EAAO,OAAO9B,EAAE,EAAI,EAC5D,IAAM0H,EAAQhG,EAAM,eACdiG,EAAS,IAAI,aAAajG,EAAM,CAAC,CAAC,CAAC,KAAK,CAAC,EAC/C,GAAIgG,EAAO,CACT,IAAME,GAAQF,EAAM,GAAKA,EAAM,IAAM,GAAK,EAC1ChG,EAAM,MAAM,SAAS,EAAM,IAAM,CAC/B,IAAMmG,EAAIC,EAAK,MACX,OAAO,SAASD,CAAC,GAAKA,EAAK,IAC7B,EAAON,GAAK,KAAK,IAAI,GAAK,KAAK,IAAI,EAAG,KAAK,KAAKM,EAAKD,CAAI,CAAC,CAAC,EAC/D,CAAC,CACH,CACA,IAAMG,EAAQZ,IAAU,EAAI,EAAIA,IAAU,EAAI,GAAM,GAC9Ca,EAAKtH,EAAM,YACXuH,EAAKvH,EAAM,aACXwH,EAAO9M,EAAAA,UAAU,EAAGsG,EAAM,OAAQA,EAAM,OAAQf,EAAQ,MAAO,CACnE,IACA,IACA,SACA,QACA,SACA,QACA,OAAQqH,EAAK,GAAKC,EAAK,EAAID,EAAKC,EAAK,CACvC,CAAC,EACKE,EAAIxH,EAAQ,OAAS,CAAC,EACtByH,EAAUD,EAAE,UAAY,GACxBE,EAAeF,EAAE,QAAU,OAC3BG,EACJD,IAAiB,IAChBA,IAAiB,QAAU,GAAA,IAK9B,GAJA,EAAIxI,EACJ,EAAIC,EACJ,EAAKD,EACL,GAAKC,EACD,CAACsI,GAAW,CAACE,EAAW,CAC1B,IAAMC,EAAMlN,EAAAA,YAAY,CAAC,CAAC6M,CAAI,EAC9B,KAAOK,EAAI,KAAK,EAAE,IAClBA,EAAI,OAAO,EACXC,GAAc,EACd,MACF,CACA,GAAe,CAACJ,EAChB,EAAS9M,EAAAA,kBAAkB4M,EAAM,CAC/B,OAAQI,EACR,OAAQF,EACR,OACA,WAAc,CACZ,GAAa,GACbK,EAAW,CACb,EACA,UAAa,CACX,IAAMC,EAAa7F,GACnB,GAAe,GACf,GAAa,GACT,CAACsB,IAAaI,KAChB,GAAW,GAEX,GAAa,CAACmE,GAEhB,GAAe,GACfF,GAAc,EACdC,EAAW,CACb,CACF,CAAC,CACH,EAEMD,OAAsB,CAE1B,QAAa,QAAQ,CAAC,CAAC,SAAW,CAC3BvH,GAAWE,GAAK,YAAa,CAAE,OAAQQ,CAAW,CAAC,CAC1D,CAAC,CACH,EAEMgH,IAAa,EAA6B,IAAqB,CACnElC,GAAW,EACX,IAAMmC,EAAejH,EACrB,EAAa1B,GAAcU,EAAQ,MAAM,EACzC,GAAYA,EAAQ,YAAcgB,IAAe,OAAS,KAAO,MAC7DiH,IAAiBjH,IAAY,GAAW,IAC5C,IAAMkH,EAAInH,EAAM,EAChB,EAAO,KACP,GAAM,KACN,GAAO,KAEP,IAAIoH,EAA2B,KAC/B,GAAInH,IAAe,UAAW,CAC5B,IAAMoH,EAAO,IAAI,aAAaF,CAAC,CAAC,CAAC,KAAK,CAAC,EACvC,EAAQtN,EAAAA,eAAesL,GAAU,UAAWkC,EAAMA,EAAM,CAAC,CAAC,CAAC,CAAC,KAC9D,CACA,EAASvN,EAAAA,cACPkG,EACAC,EACAhB,EACAmI,EACA1C,GACAvF,EAAM,UACR,EACA,IAAMmI,EAAc,IAAI,WAAWH,CAAC,CAAC,CAAC,KAAK,CAAC,EACxCI,EAAoB,IAAI,aAAaJ,CAAC,EACtCK,EAAoB,IAAI,aAAaL,CAAC,EAE1C,OAAQlH,EAAR,CACE,IAAK,MAAO,CACV,IAAMwH,EAAIxI,EAAQ,KAAO,CAAC,EAC1B,GAAMlF,EAAAA,cAAc,CAClB,IACA,OAAQiG,EAAM,OACd,OAAQA,EAAM,OACd,MAAOI,EAAO,MACd,OAAQA,EAAO,OACf,aACA,SAAUqH,EAAE,UAAY,GACxB,QAASA,EAAE,SAAW,GACtB,OAAQA,EAAE,QAAU,CACtB,CAAC,EACD,EAAMzG,GAAI,EACV,EAAMA,GAAI,EACV,KACF,CACA,IAAK,OACL,IAAK,SACL,IAAK,UACL,IAAK,MAAO,CACV,IAAMtB,EAAOO,EACPyH,EACJzI,EAAQ,MAAM,UACd,KAAK,IAAIjF,EAAAA,eAAe0F,GAAOU,EAAO,QAAQ,EAChD,EAAOvG,EAAAA,eACLsL,GAAUzF,EAAMU,EAAO,YAAaA,EAAO,aAAcsH,CAAQ,CACnE,EACA,EAAM3G,EAAK,EACX,EAAMA,EAAK,EACXuG,EAAY,IAAIvG,EAAK,OAAO,EAC5B,KACF,CACA,IAAK,WACL,IAAK,MAAO,CACV,IAAI4G,EAAU,EACd,IAAK,IAAIrJ,EAAI,EAAGA,EAAI6I,EAAG,IACrB,EAAU,KAAK,IACbQ,EACAvH,EAAO,YAAY9B,IAAM2B,IAAe,MAAQ,EAAI,GACtD,EACF,IAAM2H,EAAQ,CACZ,IACA,OAAQ5H,EAAM,OACd,OAAQA,EAAM,OACd,MAAOA,EAAM,QACb,MAAOf,EAAQ,UAAU,OAAS,QAClC,QAAS,KAAK,IAAIgB,IAAe,MAAQ,GAAK,GAAI0H,CAAO,CAC3D,EACA,GACE1H,IAAe,MAAQhG,EAAAA,aAAa2N,CAAK,EAAI1N,EAAAA,kBAAkB0N,CAAK,EACtE,EAAM3G,GAAK,EACX,EAAMA,GAAK,EACX,KACF,CACA,IAAK,OACHjB,EAAM,MAAM,SAAS,EAAM,IAAM,CAC/B,IAAM2F,EAAIC,EAAK,IAAIF,EAAK,EAAE,EAC1B,EAAIpH,GAAK,OAAO,SAASoH,EAAK,CAAC,EAAIA,EAAK,EAAMC,GAAG,GAAK,EACtD,EAAIrH,GAAK,OAAO,SAASoH,EAAK,CAAC,EAAIA,EAAK,EAAMC,GAAG,GAAK,CACxD,CAAC,CAKL,CAEA,IAAMkC,EAAa,IAAI,WAAWV,CAAC,EACnC,IAAK,IAAI7I,EAAI,EAAGA,EAAI6I,EAAG,IACrB,EAAW7I,GAAK,KAAK,IAAI0B,EAAM,MAAM1B,EAAE,CAAC,EAAE,CAAC,EAAE,QAI/C,GAHA,GAAUgJ,EACV,GAAcQ,GAAiB,EAE3B7H,IAAe,QACjBqF,GAAWM,CAAI,EACf,GAAQ,KACR,GAAc,SACT,CACL,EAAK2B,EACL,GAAKC,EACL,EAAI,IAAI,aAAaL,CAAC,EACtB,EAAI,IAAI,aAAaA,CAAC,EACtB,IAAMY,EAAKrB,GAAWd,EAAK,KAAO5B,GAAY,EAAI,EAClD,GAAI+D,EAAK,EAAG,CACV,GAAK,IAAI,aAAaZ,CAAC,EACvB,GAAK,IAAI,aAAaA,CAAC,EACvB,IAAK,IAAI7I,EAAI,EAAGA,EAAI6I,EAAG,IAAK,CAC1B,IAAMxB,EAAIC,EAAK,IAAI5F,EAAM,MAAM1B,EAAE,CAAC,EAAE,EACpC,GAAIqH,GAAKA,EAAE,QAAS,CAClB,GAAGrH,GAAKqH,EAAE,EACV,GAAGrH,GAAKqH,EAAE,EACV,QACF,CAEA,IAAI1B,EAAIlD,EAAOA,EAAK,OAAOzC,GAAK,GAC5B0J,EACJ,KAAO/D,GAAK,GAAK,EAAE,EAAO2B,EAAK,IAAI5F,EAAM,MAAMiE,EAAE,CAAC,EAAE,EAAA,EAAI,SACtD,EAAIlD,EAAM,OAAOkD,GACnB,GAAG3F,GAAK0J,GAAM,QAAUA,EAAK,EAAIzH,EAAGjC,GACpC,GAAGA,GAAK0J,GAAM,QAAUA,EAAK,EAAIxH,GAAGlC,EACtC,CACA+B,EAAE,IAAII,EAAE,EACRH,EAAE,IAAII,EAAE,EACR,GAAcmH,EACd,GAAQ,CAAE,MAAO9H,GAAI,EAAG,SAAUgI,CAAG,EACrC,GAAS,CACX,MACE1H,EAAE,IAAIE,CAAE,EACRD,EAAE,IAAIE,EAAE,EACR,GAAQ,KACR,GAAc,IAElB,CACKiC,KACH,GAAW,GACX,GAAamD,EAAK,KAAO,GAAKc,GAAWzG,IAAe,SAE1DgI,GAAgB,EAChBC,GAAc,EACd,GAAiB,IAAI,aAAalI,EAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EACnD,GAAa,GACb,EAAa,GACb,GAAe,GACfmI,GAAoB,EACpBC,GAAa,EACbrB,EAAW,EACP9G,IAAe,SAAS6G,GAAc,CAC5C,EAEMgB,OAAyB,CAC7B,IAAMO,EAAS,IAAI,WAAWrI,EAAM,CAAC,EACrC,GAAI,CAACe,EAAM,OAAOsH,EAClB,IAAMC,EAAkB,CAAC,EACzBvH,EAAK,OAAO,SAAS,EAAG,IAAM,CACxB4E,EAAI,GAAG2C,EAAM,KAAKhK,CAAC,CACzB,CAAC,EACD,IAAK,IAAIiK,EAAI,EAAGA,EAAID,EAAM,OAAQ,IAChCA,EAAM,KAAK,GAAGvH,EAAK,SAASuH,EAAMC,GAAG,EACvC,IAAK,IAAIA,EAAID,EAAM,OAAS,EAAGC,GAAK,EAAG,IAAK,CAC1C,IAAMpC,EAAImC,EAAMC,GACV5C,EAAI5E,EAAK,OAAOoF,GAClBR,GAAK,IAAG,EAAOA,IAAM0C,EAAOlC,GAAK,EACvC,CACA,OAAOkC,CACT,EAEMJ,OAAwB,CAC5B,GAAW,KACX,IAAMO,EAASvJ,EAAQ,KAAK,aAC5B,GAAI,CAACuJ,GAAUvI,IAAe,MAAO,OACrC,IAAMwI,EAAQ,IAAI,WAAWzI,EAAM,CAAC,EAC9B0I,EAAQ,IAAI,WAAW1I,EAAM,CAAC,EACpC,GAAIwI,IAAW,GAAM,CACnB,IAAMG,EAAOxO,EAAAA,YAAY6F,EAAM,EAAGA,EAAM,OAAQA,EAAM,OAAS,GAAM,CACnE,IAAMmG,EAAInG,EAAM,MAAM1B,EAAE,CAAC,MACzB,OAAO,OAAO,SAAS6H,CAAC,GAAKA,GAAM,EAAIA,EAAK,CAC9C,CAAC,EACDwC,EAAK,MAAM,QAAS,GAAO,EAAMrK,GAAK,CAAE,EACxCqK,EAAK,MAAM,QAAS,GAAO,EAAM,GAAK,CAAE,CAC1C,KAAO,CACL,IAAMC,EAAMJ,EAAO,IAAK,GAAOxI,EAAM,MAAM,IAAIkF,CAAE,GAAK,EAAE,EACxD0D,EAAI,QAAS,GAAM,CACbtK,GAAK,IAAG,EAAMA,GAAK,EACzB,CAAC,EACD,IAAK,IAAI,EAAI,EAAG,EAAI0B,EAAM,EAAG,IAAK,CAChC,IAAMoE,EAAIwE,EAAI,QAAQ5I,EAAM,OAAO,EAAE,EACjCoE,GAAK,GAAKwE,EAAIxE,EAAI,KAAOpE,EAAM,OAAO,KAAI,EAAM,GAAK,EAC3D,CACF,CACA,GAAW,CAAE,QAAO,OAAM,CAC5B,EAIMkI,OAAsB,CAC1B,IAAMW,EAAK1J,EAAM,WACjB,GAAOE,GAAOF,CAAK,EACnB,IAAM2J,EAAU3J,EAAM,QAAQ,OAASA,EAAM,QAAU,CAACA,EAAM,OAAO,EACrE,GAAaa,EAAM,OAAO,KAAK,EAAG,IAChC+I,EAAE,MACEzE,GAAayE,EAAE,MAAOD,EAAQxK,EAAIwK,EAAQ,OAAO,EACjDA,EAAQxK,EAAIwK,EAAQ,OAC1B,EACA,GAAgBxE,GACdrF,EAAQ,KAAK,eAAiB,+BAC9B,CAAC,IAAM,IAAM,IAAM,CAAC,CACtB,EAEA,IAAM+J,EAAS,IAAI,WAAWhJ,EAAM,CAAC,CAAC,CAAC,KAAK,EAAE,EAC9C,GAAIC,IAAe,WAAac,EAAM,CACpC,IAAMkI,EAAkB,CAAC,EACzBlI,EAAK,OAAO,SAAS,EAAG,IAAM4E,EAAI,GAAKsD,EAAM,KAAK3K,CAAC,CAAC,GACjC2K,EAAM,OACrB,CAAC,GAAGlI,EAAK,SAASkI,EAAM,IAAK,GAAGA,EAAM,MAAM,CAAC,CAAC,EAC9C,CAAC,EAAA,CACM,SAAS,EAAG,IAAM,CAC3B,IAAMC,EAAQ,CAACrF,CAAC,EAChB,KAAOqF,EAAM,QAAQ,CACnB,IAAM/C,EAAI+C,EAAM,IAAI,EACpB,EAAO/C,GAAKgD,EACZD,EAAM,KAAK,GAAGnI,EAAM,SAASoF,EAAE,CACjC,CACF,CAAC,CACH,CACA,EAAYnG,EAAM,MAAM,KAAK,EAAM,IAAM,CACvC,GAAI0F,EAAK,MAAO,OAAOpB,GAAaoB,EAAK,MAAOvG,EAAM,OAAO,EAC7D,IAAM4J,EAAI/I,EAAM,QAAQ1B,GAGxB,OAFIyK,GAAK,EAAU7G,GAAW6G,GAC1BC,EAAO1K,IAAM,EAAUwK,GAASE,EAAO1K,GAAK,GAAKwK,EAAQ,QACtD3J,EAAM,OACf,CAAC,EACD,IAAMiK,EAAU3P,EAAAA,IAAIoP,EAAI1J,EAAM,UAAWC,GAAO,IAAO,GAAI,EACrDiK,EAAOpK,EAAQ,WAAa,UAC5BqK,EAAUrK,EAAQ,UAClBsK,EAASvJ,EAAM,eACf,CAACwJ,EAAMC,GAAQ,MAAM,QAAQH,CAAO,EACrCA,EACD,OAAOA,GAAY,SACjB,CAACA,EAASA,CAAO,EACjBC,GAAUA,EAAO,GAAKA,EAAO,GAC3B,CAAC,EAAG,CAAC,EACL,CAAC,KAAM,IAAI,EACnB,GAAY,CAAC,EACb,GAAY,IAAI,aAAavJ,EAAM,CAAC,EACpC,GAAY,IAAI,WAAWA,EAAM,CAAC,EAClC,GAAa,IAAI,WAAWA,EAAM,CAAC,EACnC,IAAM0J,EAASzK,EAAQ,QAAUgB,IAAe,MAChDD,EAAM,MAAM,SAAS,EAAM,IAAM,CAC/B,IAAMoE,EAAIpE,EAAM,OAAO6F,GACjBjI,EAAIoC,EAAM,OAAO6F,GACnBhC,EAAIuF,EACJhD,EAAK,MAAO,EAAI9B,GAAa8B,EAAK,MAAOgD,CAAO,EAC3CC,IAAS,SAAU,EAAI5P,EAAAA,IAAIoP,EAAIhH,EAAUuC,GAAI,GAAI,EACjDiF,IAAS,SAAU,EAAI5P,EAAAA,IAAIoP,EAAIhH,EAAUjE,GAAI,GAAI,EACjDqC,IAAe,YAAW,EAAIxG,EAAAA,IAAIoP,EAAIhH,EAAUjE,GAAI,EAAG,GAChEkE,GAAU,KAAK+B,CAAC,EAChB,IAAIuB,EAAIoE,EACJ,OAAO,SAASpD,EAAK,KAAK,GAAKA,EAAK,MAAS,EAAG,EAAIA,EAAK,MACpDmD,GAAUA,EAAO,GAAKA,EAAO,IAAM,OAAO,SAASnD,EAAK,KAAK,EACpE,EACEoD,GACCC,EAAOD,GACN,KAAK,MAAMpD,EAAK,MAASmD,EAAO,KAAOA,EAAO,GAAKA,EAAO,GAAG,EAC1DtJ,IAAe,WAAac,GAAQuI,IAAY,IAAA,KACvD,EAAI,KAAK,IAAI,KAAM,IAAMvI,EAAK,MAAMnD,GAAK,GAAI,GAC/C,GAAUiI,GAAKT,EACf,GAAUS,GAAMO,EAAK,UAAYsD,EAAU,EAAI,EAC/C,GAAW7D,GAAK,KAAK,MACvB,CAAC,EACD,EAAa,EACf,EAIM8D,EAAQ,GAAsB,CAClC,GAAIxI,GAAc,MAAO,GACzB,IAAM4H,EAAI/I,EAAM,QAAQ1B,GACxB,GAAIyK,GAAK,GAAK1H,GAAa,IAAIrB,EAAM,OAAO+I,EAAE,CAAC,EAAE,EAAG,MAAO,GAC3D,IAAM5C,EAAIxF,GAAQrC,GACZqH,EAAI/E,GAAcA,GAAYtC,GAAK6H,EAOzC,OANItF,GACEsF,GAAKR,EAAU,EACfQ,EAAUrF,GACV6E,EAAU,EAAI7E,GACX,EAEFqF,CACT,EAEMyD,GAAS,GAAcxJ,EAAO,KAAK9B,KAAOlE,EAAAA,SAAS,OAGnDyP,IACJ,EACA,EACA,IAEAC,EACI,CAACzJ,EAAE/B,GAAIgC,EAAEhC,GAAMyL,EAAO3J,EAAO,OAAO9B,GAAM,CAAC,EAC3C,CAAC+B,EAAE/B,GAAMyL,EAAO3J,EAAO,MAAM9B,GAAM,EAAGgC,EAAEhC,EAAE,EAE1C+F,OAAkD,CACtD,IAAMoD,EAAIxH,IAAe,MAAQ,KAAOC,GACxC,MAAO,CACL,SAAUD,IAAe,YAAcwH,IAAM,MAAQA,IAAM,MAC3D,KAAMA,IAAM,MAAQA,IAAM,KAAO,GAAK,CACxC,CACF,EAEMuC,IACJ,EACA,EACA,EACA,IACa,CACb,GAAI3L,EAAO,OAAS,EAAG,OAAOA,EAC9B,GAAM,CAAC4L,EAAIC,GAAM,CAAC7L,EAAO,GAAKA,EAAO,GAAIA,EAAO,GAAKA,EAAO,EAAE,EACxD8L,EAAK,KAAK,MAAMF,EAAIC,CAAE,GAAK,EAC3B,CAACE,EAAIC,GAAMhQ,EAAAA,aAAagE,CAAM,EAC9B4F,EAAI3J,EAAAA,iBACRsP,GAAMxF,CAAC,EACPhE,EAAO,MAAMgE,GACbhE,EAAO,OAAOgE,GACd6F,EAAKE,EACLD,EAAKC,CACP,EACMhB,EACJ7O,EAAAA,iBAAiBsP,GAAMhM,CAAC,EAAGwC,EAAO,MAAMxC,GAAIwC,EAAO,OAAOxC,GAAIwM,EAAIC,CAAE,GACnE,KACH,OAAO9P,EAAAA,SAAS8D,EAAQ4F,EAAGkF,CAAC,CAC9B,EAGMmB,IAAY,EAAW,IAA2C,CACtE,IAAMlG,EAAIpE,EAAM,OAAO,GACjBpC,EAAIoC,EAAM,OAAO,GACjBuK,EAAQ,CAAC,CAACvI,GAAU,GAC1B,GAAI/B,IAAe,MACjB,OAAO+J,GAAQxP,EAAAA,QAAQ6F,EAAE+D,GAAI/D,EAAEzC,GAAI0C,EAAE8D,EAAE,EAAGA,EAAGxG,EAAG2M,CAAK,EAEvD,GAAIC,IAAU,WAAY,OAAO,KACjC,GAAIvK,IAAe,YAAcuK,IAAU,QAAS,CAClD,IAAMC,EAAU,KAAK,IACnB,EACA,KAAK,IAAI,EAAGxL,EAAQ,UAAU,SAAW,EAAG,CAC9C,EACMyL,GAAOrK,EAAE+D,GAAK/D,EAAEzC,IAAM,GAAM,EAAI6M,GAChCE,GAAOrK,EAAE8D,GAAK9D,EAAE1C,IAAM,GAAM,EAAI6M,GACtC,OAAOT,GACLvP,EAAAA,cAAc4F,EAAE+D,GAAI9D,EAAE8D,GAAIsG,EAAIC,EAAItK,EAAEzC,GAAI0C,EAAE1C,EAAE,EAC5CwG,EACAxG,EACA2M,CACF,CACF,CACA,GAAItK,IAAe,UAAYuK,IAAU,SAAU,CACjD,IAAMI,EAAK,KAAK,MAAMvK,EAAE+D,GAAI9D,EAAE8D,EAAE,EAC1ByG,EAAK,KAAK,MAAMxK,EAAEzC,GAAI0C,EAAE1C,EAAE,EAC1BkN,EAAK,KAAK,MAAMxK,EAAE8D,GAAI/D,EAAE+D,EAAE,EAC1B2G,EAAK,KAAK,MAAMzK,EAAE1C,GAAIyC,EAAEzC,EAAE,EAC1BoN,GAAMJ,EAAKC,GAAM,EACjBI,EAAM,CAAC5K,EAAE+D,GAAI9D,EAAE8D,EAAE,EAYvB,OAXA7H,EAAA,YACE0O,EACA5K,EAAE+D,GACF9D,EAAE8D,GACFwG,EAAK,KAAOvK,EAAE+D,GAAK4G,EAAK,KAAK,IAAIF,CAAE,EACnCF,EAAK,KAAOtK,EAAE8D,GAAK4G,EAAK,KAAK,IAAIF,CAAE,EACnCE,EAAK,KAAK,IAAID,CAAE,EAChBC,EAAK,KAAK,IAAID,CAAE,EAChB1K,EAAEzC,GACF0C,EAAE1C,EACJ,EACOoM,GAAQiB,EAAK7G,EAAGxG,EAAG2M,CAAK,CACjC,CACA,GAAIC,IAAU,UAAYA,IAAU,aAAc,CAChD,IAAM/D,EAAIpC,GAAK,EACX0F,EAAOtD,EAAE,KACTxG,IAAe,YAAW,EAAOI,EAAEzC,IAAMyC,EAAE+D,GAAK,EAAI,IACxD,IAAM8G,EAAQlK,IAAO,CAACH,GAAQG,GAAI,OAAO,GAAK,KAC1CmK,EACJ,GAAID,GAASA,EAAM,QAAU,EAAG,EAAMA,MACjC,CACH,IAAME,EAAQ3E,EAAE,SAAWnG,EAAE1C,GAAK0C,EAAE8D,GAAK/D,EAAEzC,GAAKyC,EAAE+D,GAC5CiH,EACJpL,IAAe,WAAmBmL,EAAQrB,GAAQ,EAAvBA,EAAkC,CAACA,EAChE,EAAM,CAAC,GAAGF,GAAKzF,EAAGqC,EAAE,SAAU4E,CAAG,EAAG,GAAGxB,GAAKjM,EAAG6I,EAAE,SAAU,CAAC4E,CAAG,CAAC,CAClE,CACA,GAAIb,IAAU,aAAc,CAC1B,GAAIvK,IAAe,OAASc,GAAM,QAAQnD,IAAMmD,EAAK,OAAOnD,KAAOwG,EAAG,CAEpE,IAAMkH,EAAShL,EAAE8D,GAAKhE,EAAO,OAAOgE,GAAK,EACnCmH,EAAOlL,EAAEzC,GAAKwC,EAAO,MAAMxC,GAAK,EAChC4N,EAAMD,EAAO,GACbE,EAAMH,EAAS,GACrB,OAAO5Q,EAAAA,aACL,CAAC2F,EAAE+D,GAAIkH,EAAQjL,EAAE+D,GAAIqH,EAAKD,EAAKC,EAAKD,EAAKlL,EAAE1C,GAAI2N,EAAMjL,EAAE1C,EAAE,EACzD,CACF,CACF,CACA,GAAIqC,IAAe,OAASkL,EAAI,SAAW,EAAG,CAC5C,IAAMM,GAAON,EAAI,GAAKA,EAAI,IAAM,EAChC,OAAOzQ,EAAAA,aACL,CAACyQ,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIM,EAAKN,EAAI,GAAIM,EAAKN,EAAI,GAAIA,EAAI,EAAE,EACzD,CACF,CACF,CACA,OAAOxQ,EAAAA,eAAewQ,EAAK1E,EAAE,SAAU,CAAC,CAC1C,CACA,OAAO7L,EAAAA,WAAWuQ,EAAK1E,EAAE,QAAQ,CACnC,CAEA,IAAMiF,GAAMrL,EAAE+D,GAAK/D,EAAEzC,IAAM,EACrB+N,GAAMrL,EAAE8D,GAAK9D,EAAE1C,IAAM,EACrBgO,EAAKvL,EAAEzC,GAAKyC,EAAE+D,GACdyH,EAAKvL,EAAE1C,GAAK0C,EAAE8D,GACpB,OAAO4F,GACLvP,EAAAA,cAAc4F,EAAE+D,GAAI9D,EAAE8D,GAAIsH,EAAKG,EAAK,IAAMF,EAAKC,EAAK,IAAMvL,EAAEzC,GAAI0C,EAAE1C,EAAE,EACpEwG,EACAxG,EACA2M,CACF,CACF,EAEMuB,OAAqB,CACzB,IAAMtB,EAAQrG,GAAU,EACxB,GAAY,MAAMnE,EAAM,CAAC,EACzB,IAAK,IAAI6F,EAAI,EAAGA,EAAI7F,EAAM,EAAG,IAC3B,GAAM6F,GACJ8D,EAAK3J,EAAM,OAAO6F,EAAE,EAAI,GAAK8D,EAAK3J,EAAM,OAAO6F,EAAE,EAAI,EACjDyE,GAASzE,EAAG2E,CAAK,EACjB,KAER,GAAa,EACf,EAGMuB,GAAgB,GAAuD,CAC3E,IAAM3H,EAAIpE,EAAM,OAAO,GACjBpC,EAAIoC,EAAM,OAAO,GACjB4L,EAAKvL,EAAEzC,GAAKyC,EAAE+D,GACdyH,EAAKvL,EAAE1C,GAAK0C,EAAE8D,GACd4H,EAAM,KAAK,MAAMJ,EAAIC,CAAE,EAC7B,GAAIG,EAAM,KAAM,OAAO,KACvB,IAAM/B,EAAK2B,EAAKI,EACV9B,EAAK2B,EAAKG,EACV/H,EAAI3J,EAAAA,iBACRsP,GAAMxF,CAAC,EACPhE,EAAO,MAAMgE,GACbhE,EAAO,OAAOgE,GACd6F,EACAC,CACF,EACMf,EACJ7O,EAAAA,iBAAiBsP,GAAMhM,CAAC,EAAGwC,EAAO,MAAMxC,GAAIwC,EAAO,OAAOxC,GAAIqM,EAAIC,CAAE,GACnE,MAAU,GAEb,OADIjG,EAAIkF,GAAK6C,EAAY,KAClB,CAAC3L,EAAE+D,GAAK6F,EAAKhG,EAAG3D,EAAE8D,GAAK8F,EAAKjG,EAAG5D,EAAEzC,GAAKqM,EAAKd,EAAG7I,EAAE1C,GAAKsM,EAAKf,CAAC,CACpE,EAIM8C,OAAwB,CAC5B,IAAMC,EACJlJ,GAAO,OAAS,OACZ,CAACA,EAAM,KAAK,EACZC,GAAc,EACZ,CAACA,CAAU,EACX,CAAC,GAAGE,CAAS,EACfkG,EAAOnF,GAAc,EACrBiI,EAAYnJ,GAAO,OAAS,OAASA,EAAM,MAAQ,GACnDoJ,EAAM,GAAG/C,EAAK,GAAG6C,EAAQ,KAAK,GAAG,EAAE,GAAGC,IAC5C,GAAIC,IAAQ/I,GAAc,OAG1B,GAFA,GAAe+I,EACf,EAAa,IACR/C,IAAS,QAAU,CAAC6C,EAAQ,SAAWC,EAAY,EAAG,CACzD,GAAY,KACZ,MACF,CACA,IAAM1D,EAAQ,IAAI,WAAWzI,EAAM,CAAC,EAC9B0I,EAAQ,IAAI,WAAW1I,EAAM,CAAC,EACpC,GAAIqJ,IAAS,OACX,IAAK,IAAMjF,KAAK8H,EACV7C,IAAS,UAAW5M,EAAA,QAAQuD,EAAOoE,EAAGqE,EAAOC,CAAK,EACjDjM,EAAA,aAAauD,EAAOoE,EAAGqE,EAAOC,CAAK,EAGxCyD,GAAa,IACf,EAAMA,GAAa,EACnB,EAAMnM,EAAM,OAAOmM,IAAc,EACjC,EAAMnM,EAAM,OAAOmM,IAAc,GAMnC,GAAY,CAAE,QAAO,QAAO,QAH1B9C,IAAS,WAAa6C,EAAQ,SAAW,EACrC/M,EAAM,QACN0C,EAAUqK,EAAQ,MACsB/M,EAAM,OAAQ,CAC9D,EAIMkN,OAAiC,CACrC,KACA,IAAMxD,EAAK1J,EAAM,WACX8L,EAAoB,CAAC,EACrBT,EAAQrG,GAAU,EAClBmI,EAAQtM,EAAM,EAAI,IAAO,EAAI,EAC7BuM,EAAKnJ,GAGLoJ,EAAS,CACb,IAAI,IACJ,IAAI,IACJ,IAAI,GACN,EACMC,GAAU,EAAe,EAAa,IAAc,CACxD,IAAML,EAAM,GAAGvR,EAAAA,UAAU6R,CAAK,EAAE,GAAG,KAAK,MAAMtH,EAAI,CAAC,IAC/C+D,EAAIqD,EAAOG,EAAM,CAAC,IAAIP,CAAG,EAK7B,OAJKjD,IACH,EAAI,CAAE,QAAO,MAAO/D,EAAG,IAAKvH,GAAY,CAAE,EAC1C2O,EAAOG,EAAM,CAAC,IAAIP,EAAKjD,CAAC,GAEnBA,EAAE,GACX,EACMyD,EAAY,IAAe,EAAIxH,EAAI,KAAO/C,EAChD,IAAK,IAAIwD,EAAI,EAAGA,EAAI7F,EAAM,EAAG,IAAK,CAChC,IAAMoE,EAAIpE,EAAM,OAAO6F,GACjBjI,EAAIoC,EAAM,OAAO6F,GACjBY,EAAI,KAAK,IAAIkD,EAAKvF,CAAC,EAAGuF,EAAK/L,CAAC,CAAC,EACnC,GAAI6I,GAAK,EAAG,SACZ,IAAIiG,EAAQ5K,GAAU+D,GAClBT,EAAIrD,GAAU8D,GACd8G,EAAQ,EACRrL,IAAU,MAAMuE,KAClB,EAAQ1D,GACR,GAAK,GAEHoK,IACEA,EAAG,MAAM1G,IACX,EAAQ,EACHvE,IAAU,MAAMuE,KAAI,EAAQpM,EAAAA,IAAIoP,EAAI0D,EAAG,OAAQ,EAAG,GACvD,GAAK,MAEL,EAAQ,EACR,EAAQ9S,EAAAA,IAAIoP,EAAI6D,EAAO,GAAI,IAG3BjG,EAAI,IAAG,EAAQhN,EAAAA,IAAIoP,EAAI6D,EAAOjG,CAAC,GACnC,IAAMoG,EAAMJ,EAAOE,EAAOD,EAAOtH,CAAC,EAC9B/G,EAA0BmD,GAAMqE,IAAM,KAC1C,GAAI,CAACxH,EAAQ,CACX,GAAImM,IAAU,YAAcvK,IAAe,MAAO,SAClD,IAAM6M,EAAOf,GAAalG,CAAC,EAC3B,GAAI,CAACiH,EAAM,SACX,GAAI,CAAC7K,GAAW4D,GAAI,CAIlB,GAHAgH,EAAI,KAAKC,EAAK,GAAIA,EAAK,EAAE,EACzBD,EAAI,KAAKC,EAAK,GAAIA,EAAK,EAAE,EACzBD,EAAI,KAAK/R,EAAAA,IAAKA,EAAAA,GAAG,EACbkH,GAAU6D,GAAI,CAChB,IAAMkH,EAAgB,CAAC,EACjBC,EAAI,KAAK,MAAMF,EAAK,GAAKA,EAAK,GAAIA,EAAK,GAAKA,EAAK,EAAE,GAAK,EAC9DvQ,EAAA,UACEwQ,EACAD,EAAK,GACLA,EAAK,IACJA,EAAK,GAAKA,EAAK,IAAME,GACrBF,EAAK,GAAKA,EAAK,IAAME,EACtBJ,EAASxH,CAAC,EACVtK,EAAAA,GACF,EACA+R,EAAI,QAAQE,CAAG,CACjB,CACA,QACF,CACA,EAAS,CAACD,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,EAAE,CAC9C,CACA,GAAI,IAAO,OAAS,KAChB7K,GAAW4D,GAAIgH,EAAI,QAAQ9R,EAAAA,SAASsD,EAAQ,EAAIgE,EAAG,EAAIA,EAAGvH,EAAAA,GAAG,CAAC,GAEhE+R,EAAI,QAAQxO,CAAM,EAClBwO,EAAI,KAAK/R,EAAAA,IAAKA,EAAAA,GAAG,GAEfkH,GAAU6D,IAAI,CAChB,GAAM,CAACoE,EAAIC,GAAM7P,EAAAA,aAAagE,CAAM,EAC9B0O,EAAgB,CAAC,EACvBxQ,EAAA,UACEwQ,EACA1O,EAAOA,EAAO,OAAS,GACvBA,EAAOA,EAAO,OAAS,GACvB4L,EACAC,EACA0C,EAASxH,CAAC,EACVtK,EAAAA,GACF,EACA+R,EAAI,QAAQE,CAAG,CACjB,CACF,CACAP,EAAO,SAAS,EAAK,IAAU,CAC7B,IAAK,GAAM,CAACJ,EAAKjD,KAAMrE,EAAK,CAC1B,GAAIqE,EAAE,IAAI,MAAM,EAAI,EAAG,SACvB,IAAM8D,EAAiB,CACrB,KAAM,OACN,IAAK,SAASN,EAAM,GAAGP,IACvB,WACA,MAAOjD,EAAE,MACT,OAAQA,EAAE,IAAI,OAAO,EACrB,MAAOA,EAAE,IAAI,MAAM,EACnB,MAAOA,EAAE,MACT,OAAQ,EACV,EACA8B,EAAI,KAAKgC,CAAI,CACf,CACF,CAAC,EAGD,IAAMC,GAAY,EAAW,IAAoB,CAC/C,IAAIrJ,EAAIhC,EAAUvD,GAElB,OADIiO,GAAM,CAACA,EAAG,MAAMjO,KAAI,EAAI7E,EAAAA,IAAIoP,EAAIhF,EAAG,EAAG,GACnC4C,EAAI,EAAIhN,EAAAA,IAAIoP,EAAIhF,EAAG4C,CAAC,EAAI5C,CACjC,EACMsJ,EAAiB,CAAC,EAClBC,EAAkB,CAAC,EACnBC,EAAkB,CAAC,EACnBC,EAA0B,CAAC,EAC3BC,EAAqB,CAAC,EACtBC,EAAoB,CAAC,EACrBC,GAAa,IAAI,IAIjBC,GAAW,IAAI,IACfC,EACJ1N,IAAe,UACX,IACA,KAAK,IACH,EACA,KAAK,IACHA,IAAe,MAAQ,GAAK,GAC3BA,IAAe,MAAQ,GAAK,GAAKoC,CACpC,CACF,EACAuL,EAAW5N,EAAM,GAAKhD,EAC5B,IAAK,IAAMsB,KAAKuP,GAAU,EAAG,CAC3B,IAAMpH,EAAIkD,EAAKrL,CAAC,EAChB,GAAImI,GAAK,EAAG,SACZ,IAAMtI,EAAIkC,EAAE/B,GACNF,EAAIkC,EAAEhC,GACNoO,EAAQQ,EAAS5O,EAAGmI,CAAC,EACrBqH,EAAW3K,EAAU,IAAI7E,CAAC,EAC1ByP,EAAU/K,GAAO,OAAS,QAAUA,EAAM,QAAU1E,EAC1D,GAAI8B,EAAO,KAAK9B,KAAOlE,EAAAA,SAAS,OAAQ,CACtC,IAAMqN,EAAI,KAAK,IAAI6E,EAAOlM,EAAO,MAAM9B,GAAK+D,CAAC,EACzCuL,GAAUT,EAAK,KAAKhP,EAAGC,EAAGqJ,EAAI,EAAG5M,EAAAA,UAAUgO,CAAE,CAAC,EAEhD9E,GAAY,GAAKhD,GAAQQ,GAAYjD,GAAK,GAAK,CAAC0P,GAAgB1P,CAAC,EAEjEgP,EAAc,KAAKnP,EAAGC,EAAGqJ,EAAG5M,EAAAA,UAAU6R,CAAK,CAAC,EACvCU,EAAM,KAAKjP,EAAGC,EAAGqJ,EAAG5M,EAAAA,UAAU6R,CAAK,CAAC,EACvCoB,EAAUP,EAAS,KAAKpP,EAAGC,EAAGqJ,EAAI,EAAG5M,EAAAA,UAAUsE,EAAM,OAAO,CAAC,EACxD4O,GACPV,EAAM,KAAKlP,EAAGC,EAAGqJ,EAAI,EAAG5M,EAAAA,UAAUpB,EAAAA,IAAIoP,EAAIhH,EAAUvD,GAAI,EAAG,CAAC,CAAC,EAC/D,QACF,CAEA,IAAM8G,EAAIhF,EAAO,MAAM9B,GACjB+G,EAAIjF,EAAO,OAAO9B,GAClB2P,EAAQ7N,EAAO,KAAK9B,KAAOlE,EAAAA,SAAS,MACpC8T,EAAO,CAAC,CAAC5M,IAAU,MAAMhD,GAC3B6P,GAASF,EAAQvB,EAAQjT,EAAAA,IAAIoP,EAAI6D,EAAOwB,EAAO,EAAI9O,GAAO,IAAO,EAAG,EACpEgP,GAAOH,EAAQvB,EAAQjT,EAAAA,IAAIoP,EAAI6D,EAAOtN,GAAO,GAAM,GAAI,EACvD8O,IAAM,GAASzU,EAAAA,IAAIoP,EAAI1G,GAAesE,CAAC,GACvC8F,GAAM,CAACA,EAAG,MAAMjO,KAClB,GAAO7E,EAAAA,IAAIoP,EAAIuF,GAAM,EAAG,EACnBH,IAAO,GAASxU,EAAAA,IAAIoP,EAAIsF,GAAQ,EAAG,IAE1C,IAAM/B,GAAM,GAAG,KAAK,MAAMhH,EAAI,CAAC,EAAI,EAAE,GAAG8I,EAAO,EAAI,OAC/C/E,GAAIsE,GAAW,IAAIrB,EAAG,EAO1B,GANKjD,KACH,GAAI,CAAE,KAAM/D,EAAI,EAAG,MAAO8I,EAAO,EAAI,KAAM,OAAQ,CAAC,EAAG,KAAM,CAAC,CAAE,EAChET,GAAW,IAAIrB,GAAKjD,EAAC,GAEvBA,GAAE,OAAO,KAAKhL,EAAGC,EAAIiH,EAAI,EAAGjH,EAAIiH,EAAI,EAAGxK,EAAAA,UAAUsT,EAAM,CAAC,EACxDhF,GAAE,KAAK,KAAKhL,EAAGC,EAAIiH,EAAI,EAAGjH,EAAIiH,EAAI,EAAGxK,EAAAA,UAAUuT,EAAI,CAAC,EAChDN,GAAYC,EAAS,CACvB,IAAMM,GAAOP,EAAW,EAAI,KAAOzL,EAC7BiM,EAAO,GAAG,KAAK,OAAOlJ,EAAI,EAAIiJ,GAAO,EAAE,IACzCE,EAAOb,GAAS,IAAIY,CAAI,EACvBC,GAAMb,GAAS,IAAIY,EAAO,EAAO,CAAC,CAAE,EACzCC,EAAK,KACHnJ,EAAI,EAAIiJ,EACRlQ,EACAC,EAAIiH,EAAI,EAAIgJ,EACZjQ,EAAIiH,EAAI,EAAIgJ,EACZxT,EAAAA,UAAUiT,EAAW3O,EAAM,QAAU1F,EAAAA,IAAIoP,EAAIhH,EAAUvD,GAAI,GAAI,CAAC,CAClE,CACF,CACI8B,EAAO,KAAK9B,KAAOlE,EAAAA,SAAS,MAAQgL,EAAI/C,GAAK,IAC/CmL,EAAQ,KACNrP,EAAIiH,EAAI,EAAI,GACZhH,EACA,KAAK,IAAI,GAAIiH,EAAI,EAAE,EAAIhD,EACvBxH,EAAAA,UAAU6R,CAAK,CACjB,CAEJ,CACA,IAAM8B,GACJ,EACA,EACA,EACA,IACG,CACH,GAAI,CAAC1Q,EAAK,OAAQ,OAClB,IAAM2Q,EAAQ3Q,EAAK,OAAS,EACtB4Q,EAAS,IAAI,YAAYD,EAAA,EAAsB,EAC/CE,EAAM,IAAI,aAAaD,CAAM,EAC7BE,EAAM,IAAI,YAAYF,CAAM,EAClC,IAAK,IAAI5I,EAAI,EAAGA,EAAI2I,EAAO,IACzB,EAAI3I,EAAI,GAAKhI,EAAKgI,EAAI,GACtB,EAAIA,EAAI,EAAI,GAAKhI,EAAKgI,EAAI,EAAI,GAC9B,EAAIA,EAAI,EAAI,GAAKhI,EAAKgI,EAAI,EAAI,GAC9B,EAAIA,EAAI,EAAI,GAAKhI,EAAKgI,EAAI,EAAI,GAEhC,IAAMmH,EAAoB,CACxB,KAAM,UACN,MACA,WACA,MAAO9N,EAAM,QACb,UAAWuP,EACX,QACA,UACA,QACF,EACAzD,EAAI,KAAKgC,CAAI,CACf,EACM4B,GACJ,EACA,EACA,EACA,EACA,IACG,CACH,GAAI,CAAC/Q,EAAK,OAAQ,OAClB,IAAM2Q,EAAQ3Q,EAAK,OAAS,EACtB4Q,EAAS,IAAI,YAAYD,EAAA,EAAkB,EAC3CE,EAAM,IAAI,aAAaD,CAAM,EAC7BE,EAAM,IAAI,YAAYF,CAAM,EAClC,IAAK,IAAI5I,EAAI,EAAGA,EAAI2I,EAAO,IACzB,EAAI3I,EAAI,GAAKhI,EAAKgI,EAAI,GACtB,EAAIA,EAAI,EAAI,GAAKhI,EAAKgI,EAAI,EAAI,GAC9B,EAAIA,EAAI,EAAI,GAAKhI,EAAKgI,EAAI,EAAI,GAC9B,EAAIA,EAAI,EAAI,GAAKhI,EAAKgI,EAAI,EAAI,GAEhC,IAAMmH,EAAgB,CACpB,KAAM,MACN,MACA,WACA,MAAO9N,EAAM,QACb,UAAWuP,EACX,QACA,UAAWI,EACX,SACA,QACA,QAAS,EACT,OAAQ,EACV,EACA7D,EAAI,KAAKgC,CAAI,CACf,EACAuB,EAAQ,OAAQrB,EAAM,EAAG,CAAC,EAC1BqB,EAAQ,QAASpB,EAAO,EAAG,CAAC,EAC5BoB,EAAQ,YAAalB,EAAe,IAAM,CAAC,EAC3CkB,EAAQ,cAAenB,EAAO,EAAG,CAAC,EAClCmB,EAAQ,YAAajB,EAAU,EAAG,IAAI,EACtC,IAAK,GAAM,CAACnB,EAAKmC,KAASb,GAAU,CAClC,IAAM5P,EAAiB,CAAC,EACxB,IAAK,IAAIgI,EAAI,EAAGA,EAAIyI,EAAK,OAAQ,GAAK,EACpCzQ,EAAK,KAAKyQ,EAAKzI,EAAI,GAAIyI,EAAKzI,EAAI,GAAIyI,EAAKzI,EAAI,GAAIyI,EAAKzI,EAAI,EAAE,EAC9D+I,EACE,WAAWzC,IACXtO,EACAyQ,EAAK,GACL,EACAZ,IAAa,IAAM,IAAMA,EAAW,CACtC,CACF,CACA,IAAK,GAAM,CAACvB,EAAKjD,KAAMsE,GACrBoB,EAAK,UAAUzC,IAAOjD,EAAE,OAAQA,EAAE,KAAM,EAAGwE,CAAQ,EACnDkB,EACE,QAAQzC,IACRjD,EAAE,KACFA,EAAE,KACFA,EAAE,MACFwE,IAAa,IAAM,IAAM,KAAK,IAAI,EAAGA,EAAW,CAAC,CACnD,EAGF,OADAa,EAAQ,UAAWhB,EAAS,EAAG,CAAC,EACzBvC,CACT,EAGM4C,OAA4B,CAChC,IAAMvF,EAAkB,CAAC,EACnByG,EAAiB,CAAC,EACxB,IAAK,IAAIzQ,EAAI,EAAGA,EAAI0B,EAAM,EAAG,IAEzBmD,EAAU,IAAI7E,CAAC,GACd0E,GAAO,OAAS,QAAUA,EAAM,QAAU1E,GAC3CA,IAAM2E,EAEN8L,EAAK,KAAKzQ,CAAC,EACRgK,EAAM,KAAKhK,CAAC,EAEnB,OAAOgK,EAAM,OAAOyG,CAAI,CAC1B,EAEMf,GAAmB,GACvB,CAAC,CAACjN,GAAQA,EAAK,SAASzC,EAAE,CAAC,KAAM,GAAMqC,GAAQkD,EAAE,EAInD,SAASkD,GAAa,CAChBxH,GAAaoE,IAAW,CAAC7E,KAC7B,GAAUA,GAAI,sBAAsBkQ,EAAK,EAC3C,CAEA,IAAMC,QAAmB,CACvB,OAAS,EAAI5M,EAAKS,EAClB,QAAU,EAAIR,EAAMQ,EAAQ,EAC5B,OAAS,GAAKT,EAAKU,EACnB,QAAS,EAAK,EAAIR,EAAMQ,CAC1B,GAEA,SAASiM,IAAQ,CAEf,GADA,GAAU,EACNzP,EAAW,OACf,IAAM6F,EAAIpG,EAAM,YACVqG,EAAIrG,EAAM,aAChB,GAAIoG,GAAK,GAAKC,GAAK,EAAG,QAClBD,IAAMtC,GAASuC,IAAMtC,KACvB,EAAQqC,EACR,EAASC,EACJ5C,KAAW,GAAW,IAC3B,EAAa,IAEf,IAAMyM,EAAMpQ,IAAK,kBAAoB,EACjCqQ,EAAY,GAEZ5J,EAAS,GAOb,GANIrE,GAAQ,QAAQ,IAClBA,EAAO,KAAK,CAAC,EACb,GAAa,GACb,EAAYA,EAAO,QAAQ,GAAK,CAACA,EAAO,SAAS,EACjD,EAASA,EAAO,QAAQ,GAAK2B,IAAgB,CAACJ,IAAa,CAACtB,IAE1DN,GAAO,CACT,IAAMjD,EAAI,KAAK,IACb,GACCmC,GAAI,EAAIc,GAAM,OAAS,KAAK,IAAI,EAAGA,GAAM,QAAQ,CACpD,EACA,GAASlD,EAAKC,CAAC,EACf,IAAK,IAAIU,EAAI,EAAGA,EAAI0B,EAAM,EAAG,IAC3B,EAAE1B,GAAKmC,GAAGnC,IAAMiC,EAAGjC,GAAKmC,GAAGnC,IAAMwC,GACjC,EAAExC,GAAKoC,GAAGpC,IAAMkC,GAAGlC,GAAKoC,GAAGpC,IAAMwC,GAE/BlD,GAAK,IACP,GAAQ,KACR,GAAc,KACd,GAAS,GAEX,GAAa,GACb,EAAY,EACd,CACA,GAAI8E,GAAU,CACZ,GAAW,GACX,IAAM0M,EAASC,GAAQ,EACnBD,GAAUzM,IAAcC,IAAa,CAAC9C,IAAe,QACvD,GAAY,CAAE,KAAM,CAACuC,EAAGC,EAAIC,CAAE,EAAG,GAAI6M,EAAQ,MAAOrP,GAAI,CAAE,EACjDqP,IAAQ,CAAC/M,EAAGC,EAAIC,GAAM6M,GACjC,GAAa,GACb,EAAa,EACf,MAAO,GAAI7J,EAAQ,CAGjB,IAAM6J,EAASC,GAAQ,EACnBD,IACF,GAAY,KACR,CAACxM,IAAa9C,IAAe,QAAS,CAACuC,EAAGC,EAAIC,GAAM6M,EAC/CE,GAAaF,EAAQ,GAAI,IAAG,EAAY,IACjD,EAAa,GAEjB,CACA,GAAI5M,GAAW,CACb,IAAM5E,EAAI,KAAK,IAAI,GAAImC,GAAI,EAAIyC,GAAU,OAAStF,EAAa,EACzD2I,EAAIlI,EAAKC,CAAC,EACV,CAAC2R,EAAIC,EAAIC,GAAMjN,GAAU,KACzB,CAACkN,EAAIC,EAAIC,GAAMpN,GAAU,GACzBqN,EAAKN,GAAcG,EAAKH,KAAI1J,EAE5BiK,GAAOhN,EAAQ,EAAI0M,GAAMD,EACzBQ,GAAOhN,EAAS,EAAI0M,GAAMF,EAC1BS,GAAOlN,EAAQ,EAAI6M,GAAMD,EACzBO,GAAOlN,EAAS,EAAI6M,GAAMF,EAC1BhF,EAAKoF,GAAOE,EAAMF,GAAOjK,EACzB8E,EAAKoF,GAAOE,EAAMF,GAAOlK,EAC/B,EAAIgK,EACJ,EAAK/M,EAAQ,EAAI4H,EAAKmF,EACtB,EAAK9M,EAAS,EAAI4H,EAAKkF,EACnBjS,GAAK,IACP,CAACyE,EAAGC,EAAIC,GAAMC,GAAU,GACxB,GAAY,MAEd,EAAa,GACb,EAAY,EACd,CAMA,GALIf,KACFqK,GAAa,EACb,EAAa,IAEfG,GAAgB,EACZ3I,EAAU,CACR5B,IACF,GAAQP,GAAe,CAAC,EAAIkL,GAAW,EACvC,EAAa,IAEf,IAAM6D,EAAK,KAAK,IAAI,EAAG,KAAK,MAAM9K,EAAI8J,CAAG,CAAC,EACpCiB,EAAK,KAAK,IAAI,EAAG,KAAK,MAAM9K,EAAI6J,CAAG,CAAC,GACtC5L,EAAS,OAAO,QAAU4M,GAAM5M,EAAS,OAAO,SAAW6M,IAC7D7M,EAAS,OAAO4M,EAAIC,CAAE,EACxB,EAAS,OAAO,MAAM,MAAQ,GAAG/K,EAAE,IACnC,EAAS,OAAO,MAAM,OAAS,GAAGC,EAAE,IACpC/B,EAAS,OAAO3B,GAAO,CACrB,UAAWsN,GAAU,EACrB,MAAOiB,EACP,OAAQC,EACR,KACF,CAAC,EACD,GAAY,EACd,CACA7T,EAAA,WAAWyC,EAAI,WAAYqG,EAAGC,EAAG6J,CAAG,EACpCkB,GAAYlB,CAAG,EACXlM,GAAOqN,GAAgB,EACvBlB,GAAWpI,EAAW,CAC5B,CAIA,IAAMuJ,GAAW,GAAcjQ,EAAE/B,GAAK+D,EAAIC,EACpCiO,GAAW,GAAcjQ,EAAEhC,GAAK+D,EAAIE,EAEpCiO,IACJ,EACA,EACA,IACG,CACH,GAAIC,GAAO,EAAG,MAAO,GACrB,GAAIC,EAAI,YAAY9L,CAAI,CAAC,CAAC,OAAS6L,EAAK,OAAO7L,EAC/C,IAAI+L,EAAK,EACLC,EAAKhM,EAAK,OACd,KAAO+L,EAAKC,GAAI,CACd,IAAMnF,EAAOkF,EAAKC,EAAK,GAAM,EACzBF,EAAI,YAAY,GAAG9L,EAAK,MAAM,EAAG6G,CAAG,EAAE,EAAE,CAAC,CAAC,OAASgF,EAAK,EAAKhF,EAC5D,EAAKA,EAAM,CAClB,CACA,OAAOkF,EAAK,GAAG/L,EAAK,MAAM,EAAG+L,CAAE,EAAE,GAAK,EACxC,EAEME,GAAe,GACnB7V,EAAAA,UAAU6I,CAAC,EAAI,GAAM,UAAY,UAE7BuM,GAAe,GAAgB,CACnC,IAAMM,EAAM3R,EAAI,WAAW,WAAW,IAAI,EAI1C,GAHI,CAAC2R,IACLA,EAAI,aAAaxB,EAAK,EAAG,EAAGA,EAAK,EAAG,CAAC,EACrCwB,EAAI,UAAU,EAAG,EAAG5N,EAAOC,CAAM,EAC7B5B,IAAgB,CAACnB,EAAM,GAAG,OAC9B,IAAM8Q,EAAS3R,EAAM,WACfyF,EAAO3J,EAAAA,MAAMkE,EAAM,IAAI,EACvB4R,EAAQ9V,EAAAA,MAAMkE,EAAM,SAAS,EAC7B6R,EAAQ/V,EAAAA,MAAMkE,EAAM,UAAU,EAC9BoN,EAAKnJ,GAEL6N,EAAO,KAAK,KAAKnO,EAAQ,CAAI,EAAI,EACjCoO,EAAO,KAAK,KAAKnO,EAAS,CAAI,EAAI,EAClCoO,EAAO,IAAI,WAAWF,EAAOC,CAAI,EACjCE,GACJ,EACA,EACA,EACA,EACA,IACG,CACH,IAAMC,EAAK,KAAK,IAAI,EAAG,KAAK,MAAM7B,EAAK,CAAI,CAAC,EACtC8B,EAAK,KAAK,IAAIL,EAAO,EAAG,KAAK,MAAMtB,EAAK,CAAI,CAAC,EAC7C4B,EAAK,KAAK,IAAI,EAAG,KAAK,MAAM9B,EAAK,CAAI,CAAC,EACtC+B,EAAK,KAAK,IAAIN,EAAO,EAAG,KAAK,MAAMtB,EAAK,CAAI,CAAC,EACnD,GAAIyB,EAAKC,GAAMC,EAAKC,EAAI,MAAO,GAC/B,GAAI,CAACC,EAAM,CACT,IAAK,IAAIC,EAAIH,EAAIG,GAAKF,EAAI,IACxB,IAAK,IAAI3N,EAAIwN,EAAIxN,GAAKyN,EAAI,IAAK,GAAIH,EAAKO,EAAIT,EAAOpN,GAAI,MAAO,GAChE,MAAO,EACT,CACA,IAAK,IAAI6N,EAAIH,EAAIG,GAAKF,EAAI,IACxB,IAAK,IAAI3N,EAAIwN,EAAIxN,GAAKyN,EAAI,IAAK,EAAKI,EAAIT,EAAOpN,GAAK,EACtD,MAAO,EACT,EACM8N,GAAY,EAAY,EAAY,IACxCC,EAAK,CAACC,GACNC,EAAK,CAACD,GACND,EAAK9O,EAAQ+O,GACbC,EAAK/O,EAAS8O,EAIVE,EAAc9S,EAAQ,aAAe,GAC3C,IAAK,IAAIX,EAAI,EAAGA,EAAI0B,EAAM,EAAG,IAAK,CAChC,GAAII,EAAO,KAAK9B,KAAOlE,EAAAA,SAAS,OAAQ,SACxC,IAAMqM,EAAIkD,EAAKrL,CAAC,EAChB,GAAImI,GAAK,EAAG,SACZ,IAAMmL,EAAKtB,GAAQhS,CAAC,EACdwT,EAAKvB,GAAQjS,CAAC,EACd4R,EAAK9P,EAAO,MAAM9B,GAAK+D,EACvB8N,EAAK/P,EAAO,OAAO9B,GAAK+D,EAC9B,GAAI,CAACsP,EAASC,EAAIE,EAAI,KAAK,IAAI5B,EAAIC,CAAE,CAAC,EAAG,SACzCiB,EAAKQ,EAAK1B,EAAK,EAAG4B,EAAK3B,EAAK,EAAGyB,EAAK1B,EAAK,EAAG4B,EAAK3B,EAAK,EAAG,EAAI,EAC7D,IAAM6B,EAAU5R,EAAO,KAAK9B,GAAK+D,EAC3B4P,EAAO,KAAK,IAAI9U,GAAc6U,CAAO,EACrCtM,EAAO1F,EAAM,MAAM1B,GAEzB,EAAI,YAAcmI,GADN8F,GAAM,CAACA,EAAG,MAAMjO,GACC,IAAO,GACpC,IAAM2P,GAAQ7N,EAAO,KAAK9B,KAAOlE,EAAAA,SAAS,MAEpC8X,EADO9R,EAAO,KAAK9B,KAAOlE,EAAAA,SAAS,MAClB8V,GAAM,GAC7B,GAAI6B,GAAe5B,GAAM8B,EAAO,EAAG,CACjC,IAAM1G,EAAO2G,EAASN,EAAK1B,EAAK,EAAI,GAAK7N,EAAIuP,EACvCO,EAAWD,EAAShC,EAAK,GAAK7N,EAAI6N,EAAK,KAAK,IAAI,EAAG,GAAK7N,CAAC,EAC/D,EAAI,UAAY6P,EAAS,OAAS,SAClC,EAAI,aAAe,SAEnB,IAAME,EAAU,KAAK,IAAI,IAAoBJ,EAAU,GAAI,EAErDK,EAAQJ,EADF,KAAK,IAAI,EAAGD,EAAU,EACb,EAAMI,EACrBE,EAAW5M,EAAK,UAAY2M,GAASlC,EAAK,EAAIzK,EAAK,SAAW,GAC9D6M,EAASD,EAAWR,EAAKO,EAAQ,EAAIJ,EAAO,EAAIH,EACtD,EAAI,KAAO,GAAG1R,EAAO,OAAO9B,GAAG,GAAG2T,EAAK,KAAKnB,IAC5C,EAAI,UAAY7C,GAAQ4C,GAAYhP,EAAUvD,EAAE,EAAIsG,EACpD,IAAM4N,EAAQhC,GAAUE,EAAKxV,EAAAA,QAAQ8E,EAAO1B,CAAC,EAAG6T,CAAQ,EAExD,GADIK,GAAO9B,EAAI,SAAS8B,EAAOjH,EAAMgH,CAAM,EACvCD,GAAYE,EAAO,CACrB,EAAI,KAAO,GAAGJ,EAAQ,KAAKtB,IAC3B,EAAI,UAAY7C,GAAQ4C,GAAYhP,EAAUvD,EAAE,EAAIyS,EACpD,IAAM0B,EAAMjC,GAAUE,EAAK4B,EAAUH,CAAQ,EACzCM,GAAK/B,EAAI,SAAS+B,EAAKlH,EAAMuG,EAAKO,EAAQ,EAAID,EAAU,CAAC,CAC/D,CACF,CACA,GAAIF,EAAQ,CACV,IAAMQ,EAAU,MAAM,KAAKxX,EAAAA,QAAQ8E,EAAO1B,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAM,GAC3D,EAAI,UAAY,SAChB,EAAI,KAAO,OAAO,KAAK,IAAI,EAAG,GAAK+D,CAAC,EAAE,KAAKyO,IAC3C,EAAI,UAAYD,GAAYhP,EAAUvD,EAAE,EACxCoS,EAAI,SAASgC,EAAQ,YAAY,EAAGd,EAAK1B,EAAK,EAAI,GAAK7N,EAAGyP,CAAE,CAC9D,CAEA,GAAI/N,GAAY,GAAKhD,GAAQA,EAAK,SAASzC,EAAE,CAAC,OAAQ,CACpD,IAAMqU,EAAY,CAAC3E,GAAgB1P,CAAC,EAC9BsU,EACH5P,GAAO,OAAS,QAAUA,EAAM,QAAU1E,GAAM2E,IAAe3E,EAClE,GAAIqU,GAAaC,EAAQ,CACvB,IAAM9I,EAAW7J,IAAe,MAC1BgL,EACJhL,IAAe,WAAac,EAAK,KAAKzC,GAAK,EAAI,GAAK,EAChDuU,EAAK/I,EAAW8H,EAAKA,EAAK3G,GAAOiF,EAAK,EAAI,GAC1C4C,EAAKhJ,EAAWgI,EAAK3B,EAAK,EAAI,EAAI2B,EAClCiB,EAASJ,EAAY,OAAOpR,GAAYjD,EAAE,EAAI,IACpD,EAAI,KAAO,YAAYwS,IACvB,IAAMY,EAAI,KAAK,IAAI,EAAGhB,EAAI,YAAYqC,CAAM,CAAC,CAAC,MAAQ,EAAI,CAAC,EAC3D,EAAI,YAActM,EAClBiK,EAAI,UAAU,EACd,EAAI,UAAYM,EAChB,EAAI,YAAc/V,EAAAA,MAAMxB,EAAAA,IAAI0F,EAAM,WAAY0C,EAAUvD,GAAI,GAAI,CAAC,EACjE,EAAI,UAAY,KACZ,OAAOoS,EAAI,WAAc,WAC3BA,EAAI,UAAUmC,EAAKnB,EAAGoB,EAAK,EAAGpB,EAAI,EAAG,GAAI,CAAC,EACvChB,EAAI,KAAKmC,EAAKnB,EAAGoB,EAAK,EAAGpB,EAAI,EAAG,EAAE,EACvChB,EAAI,KAAK,EACTA,EAAI,OAAO,EACX,EAAI,UAAY9L,EAChB,EAAI,UAAY,SAChB8L,EAAI,SAASqC,EAAQF,EAAIC,EAAK,EAAG,CACnC,CACF,CACF,CACA,EAAI,YAAc,EAGlB,IAAMzJ,EAAOpK,EAAQ,YAAc,OAC7B+T,EAAY,GAChB7P,EAAU,IAAI7E,CAAC,GACfA,IAAM2E,GACLD,GAAO,OAAS,QAAUA,EAAM,QAAU1E,GAC1C,CAAC,CAACiO,GAAM,CAAC,CAACA,EAAG,MAAMjO,GAChB2U,EAAQ,IAAI,WAAWjT,EAAM,CAAC,EAChCkT,EAAS,IACPC,IAAa,EAAW,IAAmB,CAC/C,GAAIF,EAAM3U,IAAM8B,EAAO,KAAK9B,KAAOlE,EAAAA,SAAS,QAAUiP,IAAS,GAC7D,OACF,IAAM5C,EAAIkD,EAAKrL,CAAC,EAChB,GAAImI,GAAK,EAAG,OACZ,IAAMmL,EAAKtB,GAAQhS,CAAC,EACdwT,EAAKvB,GAAQjS,CAAC,EACpB,GAAI,CAACqT,EAASC,EAAIE,EAAI,GAAG,EAAG,OAC5B,IAAMJ,EAAI,KAAK,IAAI1R,EAAM,EAAI,IAAO,EAAI,IAAMI,EAAO,MAAM9B,GAAK+D,EAAK,CAAC,EAGtE,GAAI,CAAC+Q,GAAS/J,IAAS,SADPpJ,IAAe,SAAWA,IAAe,SACbyR,EAAI,EAAI,EAAG,OACvD,IAAM2B,EAASL,EAAS1U,CAAC,EACnBgV,GAAM/G,GAAM,CAACA,EAAG,MAAMjO,GACtBiV,GAAMrY,EAAAA,QAAQ8E,EAAO1B,CAAC,EACtBkV,EAAK,KAAK,IAAI,IAAKpT,EAAO,WAAW9B,IAAM+U,EAAS,KAAO,EAAE,EAC7DI,EAAQC,GAAUpV,EAAGsT,EAAIE,EAAIJ,CAAC,EAEhCiC,EACAC,EACAC,GACAC,GACJ,GAAIL,EAAM,QAAU,EAAG,CACrB,IAAM/I,EACJ+I,EAAM,EAAI,KAAK,IAAIA,EAAM,KAAK,GAAKA,EAAM,QAAU,OAAS,EAAI,IAC5D9I,EACJ8I,EAAM,EAAI,KAAK,IAAIA,EAAM,KAAK,GAAKA,EAAM,QAAU,OAAS,EAAI,IAClE,EAAM/I,EAAK,EACX,GAAMA,EAAK,EACX,EAAMC,EAAK,EACX,GAAMA,EAAK,CACb,KACE,GACE8I,EAAM,QAAU,OACZA,EAAM,EACNA,EAAM,QAAU,QACdA,EAAM,EAAID,EACVC,EAAM,EAAID,EAAK,EACvB,GAAMG,EAAMH,EACZ,EACEC,EAAM,WAAa,MACfA,EAAM,EACNA,EAAM,WAAa,SACjBA,EAAM,EAAI,GACVA,EAAM,EAAI,EAClB,GAAMG,EAAM,GAEd,GAAI,CAACR,GAAS,CAAChC,EAAKuC,EAAM,EAAGC,EAAKC,GAAM,EAAGC,GAAK,EAAK,EAAG,OACxD1C,EAAKuC,EAAM,EAAGC,EAAKC,GAAM,EAAGC,GAAK,EAAI,EACrC,EAAMxV,GAAK,EACX,IACAoS,EAAI,KAAK,EACT,EAAI,YAAcjK,GAAK6M,GAAM,IAAO,GACpC,EAAI,KAAO,GAAGD,EAAS,IAAM,IAAI,QAAwBvC,IACzD,EAAI,UAAY2C,EAAM,MACtB,EAAI,aAAeA,EAAM,SACzB/C,EAAI,UAAU+C,EAAM,EAAGA,EAAM,CAAC,EAC1BA,EAAM,OAAO/C,EAAI,OAAO+C,EAAM,KAAK,EACvC,IAAMjB,GAAQpS,EAAO,WAAW9B,GAAK,IAAMkS,GAAUE,EAAK6C,GAAK,GAAG,EAAIA,GACtE,EAAI,SAAW,QACf,EAAI,UAAY,EAChB,EAAI,YAAcvC,EAClBN,EAAI,WAAW8B,GAAO,EAAG,CAAC,EAC1B,EAAI,UAAYa,EAASzO,EAAO0O,GAAMvC,EAAQnM,EAC9C8L,EAAI,SAAS8B,GAAO,EAAG,CAAC,EACxB9B,EAAI,QAAQ,CACd,EACA,IAAK,IAAIpS,EAAI,EAAGA,EAAI0B,EAAM,EAAG,IAASgT,EAAS1U,CAAC,GAAG6U,GAAU7U,EAAG,EAAI,EAGpE,IAAMyV,EAAW9U,EAAQ,YAAc,OACvC,GAAI8U,IAAa,GAAO,CACtB,EAAI,KAAO,QAAQjD,IACnB,EAAI,UAAY,SAChB,EAAI,aAAe,SACnB,IAAIkD,EAAa,EACjB,IAAK,IAAInO,EAAI,EAAGA,EAAI7F,EAAM,GAAKgU,EAAa,IAAK,IAAK,CACpD,IAAMxB,EAAQxS,EAAM,MAAM6F,EAAE,CAAC,MAC7B,GAAI,CAAC2M,EAAO,SACZ,IAAMpO,EAAIpE,EAAM,OAAO6F,GACjBjI,EAAIoC,EAAM,OAAO6F,GACjB,EAAI,KAAK,IAAI8D,EAAKvF,CAAC,EAAGuF,EAAK/L,CAAC,CAAC,EACnC,GAAI,GAAK,EAAG,SACZ,IAAMqW,EAAM,CAAC,CAAC1H,GAAI,MAAM1G,GAExB,GADIkO,IAAa,SAAW,CAACE,GACzBF,IAAa,QAAU,CAACE,IAAQ5R,EAAI,KAASkK,GAAM,CAAC0H,GAAO,SAC/D,IAAIvI,EACAC,EACEhD,EAAOnH,GAAMqE,GACnB,GAAI8C,EAAM,CACR,IAAMhD,EAAIxK,EAAAA,QAAQwN,EAAMvN,EAAAA,WAAWuN,CAAI,EAAI,CAAC,EAC5C,EAAKhD,EAAE,GAAKtD,EAAIC,EAChB,EAAKqD,EAAE,GAAKtD,EAAIE,CAClB,KACE,IAAOlC,EAAE+D,GAAK/D,EAAEzC,IAAM,EAAKyE,EAAIC,EAC/B,GAAOhC,EAAE8D,GAAK9D,EAAE1C,IAAM,EAAKyE,EAAIE,EAEjC,GAAI,CAACoP,EAASjG,EAAIC,EAAI,EAAE,EAAG,SACvB,OAAO,MAAMvJ,GAAeyD,EAAE,IAChC,GAAeA,GAAK6K,EAAI,YAAY8B,CAAK,CAAC,CAAC,OAC7C,IAAM0B,EAAK9R,GAAeyD,GAAK,IAC1BoO,GAAQ7C,EAAK1F,EAAKwI,EAAK,EAAGvI,EAAK,EAAGD,EAAKwI,EAAK,EAAGvI,EAAK,EAAG,EAAK,KAEjEyF,EAAK1F,EAAKwI,EAAK,EAAGvI,EAAK,EAAGD,EAAKwI,EAAK,EAAGvI,EAAK,EAAG,EAAI,EACnD,IACA,EAAI,YAAc,EAClB,EAAI,UAAYqF,EAChBN,EAAI,UAAU,EACV,OAAOA,EAAI,WAAc,WAC3BA,EAAI,UAAUhF,EAAKwI,EAAK,EAAGvI,EAAK,EAAGuI,EAAI,GAAI,CAAC,EACzCxD,EAAI,KAAKhF,EAAKwI,EAAK,EAAGvI,EAAK,EAAGuI,EAAI,EAAE,EACzCxD,EAAI,KAAK,EACLuD,IACF,EAAI,YAAchZ,EAAAA,MAChBxB,EAAAA,IAAI0F,EAAM,WAAYiE,IAAW,QAAUjE,EAAM,QAAS,EAAG,CAC/D,EACA,EAAI,UAAY,EAChBuR,EAAI,OAAO,GAEb,EAAI,UAAYuD,EAAMrP,EAAOmM,EAC7BL,EAAI,SAAS8B,EAAO9G,EAAIC,EAAK,EAAG,EAClC,CACA,EAAI,YAAc,CACpB,CAGA,GAAItC,IAAS,GAAO,CAClB,IAAM8K,EAAM9K,IAAS,GACrB,IAAK,IAAIqI,EAAI,EAAGA,EAAI1R,EAAM,KAAK,QAAUkT,EAAS,EAAG,IAAK,CACxD,IAAM5U,EAAI0B,EAAM,KAAK0R,GAErB,GADAyB,GAAU7U,EAAG,EAAK,EACd,CAAC6V,GAAOzC,EAAI,IAAM,KACxB,CACF,CAGA,GAAIxO,IAAgBD,GAAc,GAAK0G,EAAK1G,CAAU,EAAI,EAAG,CAC3D,IAAM2O,EAAKtB,GAAQrN,CAAU,EACvB6O,EAAKvB,GAAQtN,CAAU,EAM7B,GALAyN,EAAI,KAAK,EACT,EAAI,YAAczV,EAAAA,MAAMkE,EAAM,OAAO,EACrC,EAAI,UAAY,EAChBuR,EAAI,YAAY,CAAC,EAAG,CAAC,CAAC,EACtBA,EAAI,UAAU,EACVtQ,EAAO,KAAK6C,KAAgB7I,EAAAA,SAAS,OAAQ,CAC/C,IAAMsX,EAAI,KAAK,IAAI,EAAItR,EAAO,MAAM6C,GAAcZ,EAAK,CAAC,EAAI,EAC5DqO,EAAI,IAAIkB,EAAIE,EAAIJ,EAAG,EAAG,KAAK,GAAK,CAAC,CACnC,KAAO,CACL,IAAMxB,EAAK9P,EAAO,MAAM6C,GAAcZ,EAAI,GACpC8N,EAAK/P,EAAO,OAAO6C,GAAcZ,EAAI,GAC3CqO,EAAI,KAAKkB,EAAK1B,EAAK,EAAG4B,EAAK3B,EAAK,EAAGD,EAAIC,CAAE,CAC3C,CACAO,EAAI,OAAO,EACXA,EAAI,QAAQ,CACd,CACF,EAGMgD,IACJ,EACA,EACA,EACA,IAOG,CACH,IAAMU,EAAQ,CACZ,EAAGxC,EACH,EAAGE,EAAK,EAAI,EACZ,MAAO,SACP,SAAU,MACV,MAAO,CACT,EACMuC,EAAU,GAAc,CAC5B,IAAMC,EAAO,KAAK,IAAIrQ,CAAC,EAAI,EAC3B,MAAO,CACL,EAAG2N,EAAK,KAAK,IAAI3N,CAAC,GAAK,EAAI,GAC3B,EAAG6N,EAAK,KAAK,IAAI7N,CAAC,GAAK,EAAI,GAC3B,MAAQqQ,EAAO,QAAU,OACzB,SAAU,SACV,MAAOA,EAAOrQ,EAAI,KAAK,GAAKA,CAC9B,CACF,EACA,OAAQhE,EAAR,CACE,IAAK,OAAQ,CACX,IAAMsU,EAAQvG,GAAgB1P,CAAC,EAC/B,GAAI4B,KAAc,MAAQA,KAAc,KAAM,CAC5C,IAAMsU,EAAStU,KAAc,OAAUqU,EACvC,MAAO,CACL,EAAG3C,GAAM4C,EAAQ,EAAI,EAAI,CAAC,EAAI,GAC9B,EAAG1C,EACH,MAAO0C,EAAQ,OAAS,QACxB,SAAU,SACV,MAAO,CACT,CACF,CASA,OARItU,KAAc,KACT,CACL,EAAG0R,EACH,EAAGE,EAAK,EAAI,EACZ,MAAO,SACP,SAAU,SACV,MAAO,CACT,EACKsC,CACT,CACA,IAAK,SAQH,OALErT,IACCiN,GAAgB1P,CAAC,GACfyC,EAAK,MAAMzC,KAAO,GAAK,KAAK,MAAM+B,EAAE/B,GAAIgC,EAAEhC,EAAE,EAAI,MAE5C8V,EACFC,EAAOtT,EAAOA,EAAK,KAAKzC,GAAK,CAAC,EACvC,IAAK,WACH,OAAO+V,EAAOpT,GAAOA,GAAK,MAAM3C,GAAK,CAAC,EACxC,IAAK,MACH,MAAO,CACL,EAAGsT,EACH,EAAGE,EAAK,EAAI,EACZ,MAAO,OACP,SAAU,SACV,MAAO,KAAK,GAAK,CACnB,EACF,QACE,OAAOsC,CACX,CACF,EAIM/E,OAAiD,CACrD,GAAIvM,GAAS,GAAKC,GAAU,EAAG,OAAO,KACtC,IAAIyM,EAAK,IACLC,EAAK,IACLE,EAAK,KACLC,EAAK,KACL6E,EAAW,EACf,IAAK,IAAInW,EAAI,EAAGA,EAAI0B,EAAM,EAAG,IAAK,CAChC,GAAI,CAACW,GAAQrC,IAAM,CAAC,OAAO,SAASiC,EAAGjC,EAAE,EAAG,SAC5C,IAAMyK,EAAI/I,EAAM,QAAQ1B,GACxB,GAAIyK,GAAK,GAAK1H,GAAa,IAAIrB,EAAM,OAAO+I,EAAE,CAAC,EAAE,EAAG,SACpD,IAAM2L,EAAKtU,EAAO,MAAM9B,GAAK,EACvBqW,EAAKvU,EAAO,OAAO9B,GAAK,EAC9B,EAAK,KAAK,IAAIkR,EAAIjP,EAAGjC,GAAKoW,CAAE,EAC5B,EAAK,KAAK,IAAI/E,EAAIpP,EAAGjC,GAAKoW,CAAE,EAC5B,EAAK,KAAK,IAAIjF,EAAIjP,GAAGlC,GAAKqW,CAAE,EAC5B,EAAK,KAAK,IAAI/E,EAAIpP,GAAGlC,GAAKqW,CAAE,EACxBvU,EAAO,KAAK9B,KAAOlE,EAAAA,SAAS,SAC9B,EAAW,KAAK,IAAIqa,EAAUrU,EAAO,WAAW9B,EAAE,EACtD,CACA,GAAI,EAAEkR,GAAMG,GAAK,OAAO,KAExB,GAAI1P,IAAe,MACjB,IAAK,IAAI,EAAI,EAAG,EAAID,EAAM,EAAG,IAAK,CAChC,IAAMoE,EAAIpE,EAAM,OAAO,GACjBpC,EAAIoC,EAAM,OAAO,GAClBW,GAAQyD,IAAOzD,GAAQ/C,KAC5B,EAAK,KAAK,IAAI6R,EAAIjP,GAAG4D,GAAK,KAAK,IAAI7D,EAAG3C,GAAK2C,EAAG6D,EAAE,EAAI,CAAC,EACvD,CAEF,IAAMiK,EAAMpP,EAAQ,YAAc,GAC9B,CAAC2V,EAAIC,EAAIC,EAAIC,GAAM,CAAC1G,EAAKA,EAAKA,EAAKA,CAAG,EACpCmE,EACJvT,EAAQ,aAAe,GAAQ,EAAI,KAAK,IAAI,IAAKwV,CAAQ,EAAI,EAE/D,GADgBrU,EAAO,KAAK,KAAM,GAAMyD,IAAMzJ,EAAAA,SAAS,MACnD,GAAWoY,EAAQ,EAAG,CACxB,GAAIvS,IAAe,SAAWC,KAAc,MAAQA,KAAc,MAAO,CAEvE,IAAIqU,EAAQ,EACZ,IAAK,IAAIjW,EAAI,EAAGA,EAAI0B,EAAM,EAAG,IACvBe,GAAQA,EAAK,OAAOzC,GAAK,GAAKqC,GAAQrC,IAAM0P,GAAgB1P,CAAC,IAC/D,EAAQ,KAAK,IAAIiW,EAAO,KAAK,IAAI,IAAKnU,EAAO,WAAW9B,EAAE,EAAI,CAAC,GAE/D4B,KAAc,MAChB,GAAMsS,EACN,GAAM+B,IAEN,GAAM/B,EACN,GAAM+B,EAEV,MAAWtU,IAAe,UAAYA,IAAe,YACnD,GAAMuS,EACN,GAAMA,EACN,GAAMA,EAAQ,GACd,GAAMA,EAAQ,IACT,AACFuC,GADM9U,IAAe,MAAauS,EAC5B,EACb,EACIvS,IAAe,OAASA,IAAe,aAAW,GAAM,IAC5D,IAAM+U,EAAK,KAAK,IAAI,GAAIlS,EAAQ8R,EAAKC,CAAE,EACjCI,EAAK,KAAK,IAAI,GAAIlS,EAAS+R,EAAKC,CAAE,EAClC7E,EAAK,KAAK,IAAI,KAAMP,EAAKH,CAAE,EAC3BW,EAAK,KAAK,IAAI,KAAMP,EAAKH,CAAE,EAC3BzJ,EAAQpC,GAAY,CAAC,EAAE,WAAa,CAAC,IAAM,CAAC,EAC9CiM,EAAK,KAAK,IAAImF,EAAK9E,EAAI+E,EAAK9E,EAAI,IAAKnK,EAAM,EAAE,EACjD,EAAK,KAAK,IAAI6J,EAAI,IAAI,EACtB,IAAMqF,EAAKN,GAAMI,EAAK9E,EAAKL,GAAM,EAAIL,EAAKK,EACpCsF,EAAKL,GAAMG,EAAK9E,EAAKN,GAAM,EAAIJ,EAAKI,EAC1C,MAAO,CAACA,EAAIqF,EAAIC,CAAE,CACpB,EAEMC,OAAqC,CACzC,IAAMpP,EAAQpC,GAAY,CAAC,EAAE,WAAa,CAAC,IAAM,CAAC,EAC5CyR,EAAMhG,GAAQ,EACpB,MAAO,CAAC,KAAK,IAAIrJ,EAAM,GAAIqP,EAAMA,EAAI,GAAK,GAAMrP,EAAM,EAAE,EAAGA,EAAM,EAAE,CACrE,EAMMsJ,IAAgB,EAA8B,IAAiB,CACnE,GAAM,CAACI,EAAIC,EAAIC,GAAM0F,EACfxF,GAAOhN,EAAQ,EAAIR,GAAMD,EACzB0N,GAAOhN,EAAS,EAAIR,GAAMF,EAC1B2N,GAAOlN,EAAQ,EAAI6M,GAAMD,EACzBO,GAAOlN,EAAS,EAAI6M,GAAMF,EAIhC,GAAI,EAFF,KAAK,IAAI,KAAK,IAAIA,EAAKrN,CAAC,CAAC,EAAI,MAC7B,KAAK,MAAM2N,EAAMF,EAAKG,EAAMF,CAAG,EAAIL,EAAK,IAGxC,MADA,CAACrN,EAAGC,EAAIC,GAAM+S,EACP,GAET,IAAMzF,EAAKxN,GAAaqN,EAAKrN,KAAGkT,EAC1B7K,EAAKoF,GAAOE,EAAMF,GAAOyF,EACzB5K,EAAKoF,GAAOE,EAAMF,GAAOwF,EAI/B,MAHA,GAAI1F,EACJ,EAAK/M,EAAQ,EAAI4H,EAAKmF,EACtB,EAAK9M,EAAS,EAAI4H,EAAKkF,EAChB,EACT,EAEM2F,IAAW,EAAgC,IAAqB,CACpE,GAAY,KACR9O,GAAW,CAAC5G,IAAe,SAAWgD,EAAQ,EAChD,GAAY,CAAE,KAAM,CAACT,EAAGC,EAAIC,CAAE,EAAG,GAAIrE,EAAM,MAAO6B,GAAI,CAAE,EAExD,CAACsC,EAAGC,EAAIC,GAAMrE,EAEhB,EAAa,GACb6I,EAAW,CACb,EAEM0O,IACJ,EACA,EACA,EACA,EAAU,KACP,CACH,GAAM,CAAC9E,EAAIC,GAAMwE,GAAW,EACtBM,EAAK,KAAK,IAAI/E,EAAI,KAAK,IAAIC,EAAIvO,EAAIsT,CAAM,CAAC,EAC1CC,EAAQF,EAAKrT,EACnBmT,GAAQ,CAACE,EAAIhL,GAAMA,EAAKpI,GAAMsT,EAAOjL,GAAMA,EAAKpI,GAAMqT,CAAK,EAAGlP,CAAO,EACrE,GAAY,EACd,EAIImP,GAAY,GACVzN,OAAqB,CACzB,IAAM1J,EAAIO,EAAQ,OACZ6W,EAAQ9V,EAAM,OAAO,OAAQ,GAAM+I,EAAE,MAAQ,CAAC,EAC9CgN,EAAOrX,IAAM,IAAA,GAAYoX,EAAM,OAAS,EAAI,CAAC,CAACpX,GAAKoX,EAAM,OAAS,EAClEE,EAAS,OAAOtX,GAAM,SAAWA,EAAI,CAAC,EACtCuX,EAASD,EAAO,QAAU,GAC1B1K,EAAS0K,EAAO,WAAa,SAC/B5J,EAAM,GAAG2J,EAAK,GAAGzK,EAAO,GAAG2K,IAC/B,GAAIF,EACF,IAAK,IAAMhN,KAAK+M,EAAO,CACrB,IAAMxX,EAAI0B,EAAM,OAAO,QAAQ+I,CAAC,EAChC,GAAO,KAAKA,EAAE,GAAG,QAAQA,EAAE,KAAK,QAAQ9N,EAAAA,MAAMiH,GAAW5D,IAAMa,EAAM,OAAO,EAAE,QAAQkC,GAAa,IAAI0H,EAAE,EAAE,GAC7G,CAEF,GAAIqD,IAAQyJ,GAAW,OACvB,GAAYzJ,EACZ,IAAM8J,EAAU,CAAC,GAAGnX,EAAI,OAAO,QAAQ,CAAC,CAAC,QACvCH,EAAI,aACN,EAGA,GAFAG,EAAI,OAAO,gBAAgB,EAC3B,EAAI,OAAO,MAAM,QAAUgX,EAAO,OAAS,OACtCA,EAEL,CADA,EAAI,OAAO,MAAM,MAAQzK,EAAS,IAAM,IACxC,EAAI,OAAO,MAAM,QAAUA,EAAS,YAAc,YAClD,IAAK,IAAMvC,KAAK+M,EAAO,CACrB,IAAMxX,EAAI0B,EAAM,OAAO,QAAQ+I,CAAC,EAC1BoN,EAAS9U,GAAa,IAAI0H,EAAE,EAAE,EAC9BkE,EAAOrO,EAAI,cAAcqX,EAAS,SAAW,MAAM,EACrDhJ,aAAgB,oBAClB,EAAK,KAAO,SACZA,EAAK,aAAa,eAAgB,OAAO,CAACkJ,CAAM,CAAC,EACjDlJ,EAAK,iBAAiB,YAAemJ,GAAYrN,EAAE,EAAE,CAAC,GAExDzM,EAAA,MAAM2Q,EAAM,CACV,QAAS,cACT,WAAY,SACZ,IAAK,MACL,QAAS,UACT,OAAQ,IACR,OAAQ,IACR,aAAc,MACd,WAAY,OACZ,KAAM,UACN,MAAO,uCACP,OAAQgJ,EAAS,UAAY,UAC7B,QAASE,EAAS,OAAS,IAC3B,eAAgBA,EAAS,eAAiB,MAC5C,CAAC,EACDlJ,EAAK,OACH5R,EAAAA,OAAOuD,EAAK3D,EAAAA,MAAMiH,GAAW5D,IAAMa,EAAM,OAAO,CAAC,EACjDP,EAAI,eAAemK,EAAE,IAAI,CAC3B,EACAhK,EAAI,OAAO,YAAYkO,CAAI,CAC7B,CACIiJ,GAAW,GACbnX,EAAK,OAAO,SAASmX,EAAQ,EAA8B,MAAM,CAhCjB,CAiCpD,EAEME,GAAe,GAAe,CAClC,IAAMrN,EAAI/I,EAAM,OAAO,KAAM,GAAUqW,EAAM,KAAOnR,CAAE,EACtD,GAAI,CAAC6D,EAAG,OACR,IAAMoN,EAAS,CAAC9U,GAAa,IAAI6D,CAAE,EAC/BiR,EAAQ9U,GAAa,IAAI6D,CAAE,EAC1B7D,GAAa,OAAO6D,CAAE,EAC3B,EAAI,KAAK,YAAc5J,EAAAA,KAAK6a,EAAS7W,EAAI,OAAO,OAASA,EAAI,OAAO,MAAO,CACzE,KAAMyJ,EAAE,IACV,CAAC,EAED,IAAK,IAAMzK,IAAK,CAAC,GAAG6E,CAAS,EAEzBwG,EAAKrL,CAAC,GAAK,GACX0B,EAAM,QAAQ1B,IAAM,GACpB+C,GAAa,IAAIrB,EAAM,OAAOA,EAAM,QAAQ1B,GAAG,CAAC,EAAE,GAElD6E,EAAU,OAAO7E,CAAC,EAEpB2E,GAAc,GACdjD,EAAM,QAAQiD,IAAe,GAC7B5B,GAAa,IAAIrB,EAAM,OAAOA,EAAM,QAAQiD,GAAY,CAAC,EAAE,IAE3D,EAAa,IACXD,GAAOsT,GAAS,IAAI,EACxB,GAAa,GACb,EAAa,GACb,GAAe,GACflO,GAAa,EACbrB,EAAW,EACXtH,GAAK,cAAe,CAAE,MAAOyF,EAAI,QAAO,CAAC,CAC3C,EAIMiD,OAA4B,CAChC,GAAM,CAAE,SAAQ,SAAU7I,EACpBiX,EACJtW,IAAe,MAAQuW,EAAO,IAAM1S,GAAO,EAAI0S,EAAO,KAAOA,EAAO,MACtExX,EAAM,aAAa,uBAAwBuX,CAAI,EAC/CvX,EAAM,aAAa,aAAcC,EAAQ,WAAasX,CAAI,EAC1D,IAAME,EAAW7S,GAAY,CAAC,EAAE,SAC5B6S,EAAU,EAAM,SAAW,EAC1BzX,EAAM,gBAAgB,UAAU,EACrC,IAAM0X,EAAK9S,GAAY,EACvB,EAAM,MAAM,OAAS8S,GAAI,IAAM,OAAS,UACxC,IAAMC,EAAQ,CACZrb,EAAAA,KAAKkb,EAAO,QAAS,CAAE,MAAO/H,EAAMzO,EAAM,CAAC,EAAG,MAAOyO,EAAMzO,EAAM,CAAC,CAAE,CAAC,CACvE,EACM4W,EAAQ5W,EAAM,OAAO,OAAQ,GAAM+I,EAAE,MAAQ,CAAC,CAAC,CAAC,IAAK,GAAMA,EAAE,IAAI,EACnE6N,EAAM,QACRD,EAAM,KACJrb,EAAAA,KAAKkb,EAAO,cAAe,CACzB,OAAQI,EAAM,KAAKJ,EAAO,aAAa,CACzC,CAAC,CACH,EACEC,GAAUE,EAAM,KAAKH,EAAO,YAAY,EAC5C,EAAI,QAAQ,YAAcG,EAAM,KAAK,GAAG,EACxC,IAAME,EAAW5X,EAAQ,WAAa,IAAS,CAAC,CAACyX,GAAI,KACrD,EAAI,SAAS,MAAM,QAAUG,EAAW,OAAS,OACjD9X,EAAI,OAAO,aAAa,aAAcyX,EAAO,MAAM,EACnD,EAAI,OAAO,MAAQA,EAAO,OAC1BzX,EAAI,QAAQ,aAAa,aAAcyX,EAAO,OAAO,EACrD,EAAI,QAAQ,MAAQA,EAAO,QAC3BzX,EAAI,IAAI,aAAa,aAAcyX,EAAO,GAAG,EAC7C,EAAI,IAAI,MAAQA,EAAO,GACzB,EAIIM,GAAyC,KACzCC,GAAW,GACXC,GAAY,EACVC,IAAW,EAAY,KAC1BvM,EAAK,SAAW,SAAWC,EAAK,SAE7BuM,OAAsB,CAC1B,GAAY,EACZ,IAAK,IAAI5Y,EAAI,EAAGA,EAAI0B,EAAM,EAAG,IAC3B,GAAY,KAAK,IAAIgX,GAAW5W,EAAO,MAAM9B,GAAI8B,EAAO,OAAO9B,EAAE,EACnE,GAAW,KAAK,IAAI,GAAI0Y,EAAS,EACjC,IAAM7F,EAAO,IAAI,IACjB,IAAK,IAAI7S,EAAI,EAAGA,EAAI0B,EAAM,EAAG,IAAK,CAChC,GAAI2J,EAAKrL,CAAC,GAAK,EAAG,SAClB,IAAM8N,EAAM6K,GACV,KAAK,MAAM5W,EAAE/B,GAAKyY,EAAQ,EAC1B,KAAK,MAAMzW,EAAEhC,GAAKyY,EAAQ,CAC5B,EACIxI,EAAO4C,EAAK,IAAI/E,CAAG,EAClBmC,GAAM4C,EAAK,IAAI/E,EAAM,EAAO,CAAC,CAAE,EACpCmC,EAAK,KAAKjQ,CAAC,CACb,CACA,GAAW6S,CACb,EAEMgG,IAAY,EAAY,IAAuB,CACnD,GAAIhW,IAAgB,CAACnB,EAAM,EAAG,MAAO,GACrCkX,GAAc,EACd,IAAME,GAAMC,EAAK/U,GAAMD,EACjBiV,GAAMC,EAAKhV,GAAMF,EACjBmV,EAAM,EAAInV,EACVoV,GAAQzX,EAAM,EAAI,IAAO,EAAI,KAAOqC,EACpCqV,EAAQ,KAAK,MAAMV,GAAY,EAAIQ,EAAMC,GAAQV,EAAQ,EACzDrM,EAAK,KAAK,MAAM0M,EAAKL,EAAQ,EAC7BpM,EAAK,KAAK,MAAM2M,EAAKP,EAAQ,EAC/BY,EAAO,GACPC,EAAQ,IACZ,IAAK,IAAIzC,EAAK,CAACuC,EAAOvC,GAAMuC,EAAO,IACjC,IAAK,IAAIxC,EAAK,CAACwC,EAAOxC,GAAMwC,EAAO,IAAM,CACvC,IAAMnJ,EAAOuI,GAAU,IAAIG,GAAQvM,EAAKwK,EAAIvK,EAAKwK,CAAE,CAAC,EACpD,GAAK5G,EACL,IAAK,IAAMjQ,KAAKiQ,EAAM,CACpB,IAAM3C,EAAKwL,EAAK/W,EAAE/B,GACZuN,EAAKyL,EAAKhX,EAAEhC,GAClB,GAAI8B,EAAO,KAAK9B,KAAOlE,EAAAA,SAAS,OAAQ,CACtC,IAAMsX,EAAI,KAAK,IAAItR,EAAO,MAAM9B,GAAK,EAAGmZ,CAAI,EAAID,EAC1C/P,EAAImE,EAAKA,EAAKC,EAAKA,EACrBpE,GAAKiK,EAAIA,GAAKjK,GAAKmQ,IACrB,EAAOtZ,EACP,EAAQmJ,EAEZ,MAAO,GACL,KAAK,IAAImE,CAAE,GAAKxL,EAAO,MAAM9B,GAAK,EAAIkZ,GACtC,KAAK,IAAI3L,CAAE,GAAKzL,EAAO,OAAO9B,GAAK,EAAIkZ,EACvC,CACA,IAAM/P,EAAImE,EAAKA,EAAKC,EAAKA,EACrBpE,GAAKmQ,IACP,EAAOtZ,EACP,EAAQmJ,EAEZ,CACF,CACF,CAEF,OAAOkQ,CACT,EAEME,IAAY,EAAY,IAAuB,CACnD,GAAI7X,EAAM,EAAIjD,GAAmBoE,GAAc,MAAO,GACtD,IAAMiW,GAAMC,EAAK/U,GAAMD,EACjBiV,GAAMC,EAAKhV,GAAMF,EACjBmV,EAAM,EAAInV,EACZsV,EAAO,GACPC,EAAQJ,EAAMA,EAClB,IAAK,IAAI,EAAI,EAAG,EAAIxX,EAAM,EAAG,IAAK,CAChC,GAAI,KAAK,IAAI2J,EAAK3J,EAAM,OAAO,EAAE,EAAG2J,EAAK3J,EAAM,OAAO,EAAE,CAAC,GAAK,EAAG,SACjE,IAAI3B,EAAmCmD,GAAM,IAAM,KACnD,GAAI,CAACnD,EAAQ,CACX,IAAMyO,EAAOf,GAAa,CAAC,EAC3B,GAAI,CAACe,EAAM,SACX,EAASA,CACX,CACA,IAAMrF,EAAIlM,EAAAA,eAAe8C,EAAQ+Y,EAAIE,CAAE,EACnC7P,GAAKmQ,IACP,EAAO,EACP,EAAQnQ,EAEZ,CACA,OAAOkQ,CACT,EAEMG,IAAU,EAAY,IAA2B,CACrD,IAAMxZ,EAAI6Y,GAASE,EAAIE,CAAE,EACzB,GAAIjZ,GAAK,EAAG,MAAO,CAAE,KAAM,OAAQ,MAAOA,CAAE,EAG5C,IAAMuH,EADJkS,GAAe,GAAKlY,GAAU,OAAO,GAAKA,GAAU,OAAO,EACtCgY,GAASR,EAAIE,CAAE,EAAI,GAC1C,OAAO1R,GAAK,EAAI,CAAE,KAAM,OAAQ,MAAOA,CAAE,EAAI,IAC/C,EAIMkS,OAAuB9Y,EAAQ,UAAY,GAE3C+Y,GAAc,GAA8B,CAChD,IAAMC,EAAUjZ,EAAM,WAChBkZ,EAAUlZ,EAAM,UACtB,GAAImZ,EAAI,OAAS,OAAQ,CACvB,IAAM,EAAIA,EAAI,MACRzS,EAAO1F,EAAM,MAAM,GACnB+I,EAAI/I,EAAM,QAAQ,GACxB,MAAO,CACL,KAAM,OACN,GAAI0F,EAAK,GACT,OACA,MAAO1F,EAAM,UAAU,GACvB,MAAO+I,GAAK,EAAI/I,EAAM,OAAO+I,EAAE,CAAC,GAAK,IAAA,GACrC,MAAO9N,EAAAA,MAAM4G,EAAU,EAAE,EACzB,OAAQ7B,EAAM,SAAS,GAAKA,EAAM,UAAU,GAC5C,QAASsQ,GAAQ,CAAC,EAAI2H,EACtB,QAAS1H,GAAQ,CAAC,EAAI2H,CACxB,CACF,CACA,IAAMrS,EAAIsS,EAAI,MACR/R,EAAOpG,EAAM,MAAM6F,GACnBzB,EAAIpE,EAAM,OAAO6F,GACjBjI,EAAIoC,EAAM,OAAO6F,GACjB8C,EAAOnH,GAAMqE,GACf6F,GAAMrL,EAAE+D,GAAK/D,EAAEzC,IAAM,EACrB+N,GAAMrL,EAAE8D,GAAK9D,EAAE1C,IAAM,EACzB,GAAI+K,EAAM,CACR,IAAMhD,EAAIxK,EAAAA,QAAQwN,EAAMvN,EAAAA,WAAWuN,CAAI,EAAI,CAAC,EAC5C,EAAKhD,EAAE,GACP,EAAKA,EAAE,EACT,CACA,MAAO,CACL,KAAM,OACN,GAAI,GAAGS,EAAK,OAAO,GAAGA,EAAK,SAC3B,OACA,MAAOpG,EAAM,UAAU6F,GACvB,MAAO5K,EAAAA,MAAM6G,GAAU+D,EAAE,EACzB,QAAS6F,EAAKrJ,EAAIC,EAAK2V,EACvB,QAAStM,EAAKtJ,EAAIE,EAAK2V,CACzB,CACF,EAEME,IAAW,EAAe,IAC9BnU,IAAMkF,GAAM,CAAC,CAAClF,GAAK,CAAC,CAACkF,GAAKlF,EAAE,OAASkF,EAAE,MAAQlF,EAAE,QAAUkF,EAAE,MAEzDmN,GAAY,GAAoB,CACpC,GAAI8B,GAAQD,EAAKnV,CAAK,EAAG,CACnBmV,GAAK9H,GAAgB,EACzB,MACF,CACA,EAAQ8H,EACRE,GAAc,EACd,EAAa,GACbtR,EAAW,EACXtH,GAAK,QAAS0Y,EAAMH,GAAWG,CAAG,EAAI,IAAI,CAC5C,EAEMG,OACJtV,IACCE,IAAgBD,GAAc,EAC3B,CAAE,KAAM,OAAQ,MAAOA,CAAW,EAClC,MAEAoV,OAAsB,CAC1B,IAAME,EAAMxZ,EAAI,QACVoZ,EAAMG,GAAc,EAC1B,GAAI,CAACH,GAAO,CAACJ,GAAe,EAAG,CAC7B,EAAI,MAAM,QAAU,OACpB,MACF,CACA,IAAMnY,EAAQoY,GAAWG,CAAG,EACtBK,EACJ,OAAOvZ,EAAQ,SAAY,SAAWA,EAAQ,QAAQ,OAAS,IAAA,GAC3DwZ,EAAUD,EAASA,EAAO5Y,CAAK,EAAI8Y,GAAeP,CAAG,EAC3D,GAAIM,IAAY,KAAM,CACpB,EAAI,MAAM,QAAU,OACpB,MACF,CACI,OAAOA,GAAY,SAAU,EAAI,YAAcA,EAC9CF,EAAI,gBAAgBE,CAAO,EAChC,EAAI,MAAM,QAAU,QACpBpI,GAAgB,CAClB,EAEMA,OAAwB,CAC5B,IAAMkI,EAAMxZ,EAAI,QACVoZ,EAAMG,GAAc,EAC1B,GAAI,CAACH,GAAOI,EAAI,MAAM,UAAY,OAAQ,OAC1C,IAAII,EACAC,EACAC,EAAM,GACV,GAAIV,EAAI,OAAS,OACf,EAAK7H,GAAQ6H,EAAI,KAAK,EACtB,EAAK5H,GAAQ4H,EAAI,KAAK,EACtB,GAAQ,KAAK,IAAI/X,EAAO,MAAM+X,EAAI,OAAQ,CAAC,EAAI9V,EAAK,MAC/C,CACL,IAAMyW,EAAKd,GAAWG,CAAG,EACzB,EAAKW,EAAG,QAAU9Z,EAAM,WACxB,EAAK8Z,EAAG,QAAU9Z,EAAM,SAC1B,CACA,IAAMwU,EAAK+E,EAAI,YACTQ,EAAKR,EAAI,aACXpa,EAAIwa,EAAKE,EACT1a,EAAIqV,EAAK1Q,EAAQ,IAAG,EAAI6V,EAAKE,EAAMrF,GACvC,EAAI,KAAK,IAAI,EAAG,KAAK,IAAI1Q,EAAQ0Q,EAAK,EAAGrV,CAAC,CAAC,EAC3C,IAAMC,EAAI,KAAK,IAAI,EAAG,KAAK,IAAI2E,EAASgW,EAAK,EAAGH,EAAKG,EAAK,CAAC,CAAC,EAC5D,EAAI,MAAM,UAAY,aAAa,KAAK,MAAM5a,CAAC,EAAE,MAAM,KAAK,MAAMC,CAAC,EAAE,IACvE,EAEM4a,IAAO,EAAc,IAAkB,CAC3C,IAAMC,EAAKzd,EAAAA,MAAMoD,EAAI,cAAc,KAAK,EAAG,CACzC,QAAS,OACT,WAAY,SACZ,IAAK,KACP,CAAC,EACKuI,EAAI3L,EAAAA,MAAMoD,EAAI,cAAc,MAAM,EAAG,CACzC,KAAM,WACN,MAAO,sCACT,CAAC,EACD,EAAE,YAAcsa,EAChB,IAAM/S,EAAI3K,EAAAA,MAAMoD,EAAI,cAAc,MAAM,EAAG,CACzC,WAAY,MACZ,mBAAoB,eACpB,WAAY,MACd,CAAC,EAGD,MAFA,GAAE,YAAc2F,EAChB0U,EAAG,OAAO9R,EAAGhB,CAAC,EACP8S,CACT,EAEME,IAAU,EAAe,IAAkB,CAC/C,IAAMF,EAAKzd,EAAAA,MAAMoD,EAAI,cAAc,KAAK,EAAG,CACzC,QAAS,OACT,WAAY,SACZ,IAAK,MACL,WAAY,MACZ,aAAc,MACd,MAAO,4BACT,CAAC,EAED,OADAqa,EAAG,OAAO5d,EAAAA,OAAOuD,EAAK8N,CAAK,EAAG9N,EAAI,eAAewa,CAAK,CAAC,EAChDH,CACT,EAEMP,GAAkB,GAAmB,CACzC,GAAM,CAAE,UAAWpZ,EACb+Z,EAAWza,EAAI,uBAAuB,EAC5C,GAAIuZ,EAAI,OAAS,OAAQ,CACvB,IAAM,EAAIA,EAAI,MACRzS,EAAO1F,EAAM,MAAM,GAEzB,GADAqZ,EAAS,OAAOF,GAAOle,EAAAA,MAAM4G,EAAU,EAAE,EAAG3G,EAAAA,QAAQ8E,EAAO,CAAC,CAAC,CAAC,EAC1D0F,EAAK,SAAU,CACjB,IAAM+M,EAAMjX,EAAAA,MAAMoD,EAAI,cAAc,KAAK,EAAG,CAC1C,MAAO,uCACP,aAAc,KAChB,CAAC,EACD,EAAI,YAAc8G,EAAK,SACvB2T,EAAS,OAAO5G,CAAG,CACrB,CACA,IAAM1J,EAAI/I,EAAM,QAAQ,GAkBxB,GAjBI+I,GAAK,GAAGsQ,EAAS,OAAOL,GAAIxC,EAAO,MAAOxW,EAAM,OAAO+I,EAAE,CAAC,IAAI,CAAC,EAC/D,OAAO,SAASrD,EAAK,KAAK,GAC5B2T,EAAS,OAAOL,GAAIxC,EAAO,MAAOlX,EAAI,MAAMoG,EAAK,KAAM,CAAC,CAAC,GAEzDzF,IAAe,OACfhB,EAAQ,QACRe,EAAM,MAAM,KAAM,GAAM,EAAE,QAAQ,IACpB,CAAC8D,GAAO,GACtBuV,EAAS,OAAOL,GAAIxC,EAAO,SAAUlX,EAAI,MAAMU,EAAM,SAAS,EAAE,CAAC,CAAC,EAClEqZ,EAAS,OAAOL,GAAIxC,EAAO,SAAUlX,EAAI,MAAMU,EAAM,UAAU,EAAE,CAAC,CAAC,GACzD8D,GAAO,GACjBuV,EAAS,OACPL,GAAIxC,EAAO,OAAQlX,EAAI,MAAMU,EAAM,SAAS,GAAKA,EAAM,UAAU,EAAE,CAAC,CACtE,EAEE8D,GAAO,GAAKvC,GAAY,GAAK,GAAK,CAACyM,GAAgB,CAAC,GACtDqL,EAAS,OAAOL,GAAIxC,EAAO,eAAgBlX,EAAI,MAAMiC,GAAY,EAAE,CAAC,CAAC,EACnED,IAAU,MAAM,GAAI,CACtB,IAAMgY,EAAM9d,EAAAA,MAAMoD,EAAI,cAAc,KAAK,EAAG,CAC1C,UAAW,MACX,MAAO3D,EAAAA,MAAMkH,EAAa,EAC1B,WAAY,KACd,CAAC,EACD,EAAI,YAAcqU,EAAO,SACzB6C,EAAS,OAAOC,CAAG,CACrB,CACA,OAAOD,CACT,CACA,IAAMxT,EAAIsS,EAAI,MACR/R,EAAOpG,EAAM,MAAM6F,GACnBzB,EAAIpE,EAAM,OAAO6F,GACjBjI,EAAIoC,EAAM,OAAO6F,GACjB0E,EAAQvI,GAAU6D,GAAK,MAAQ,MAOrC,GANAwT,EAAS,OACPF,GACEle,EAAAA,MAAM6G,GAAU+D,EAAE,EAClB,GAAG3K,EAAAA,QAAQ8E,EAAOoE,CAAC,IAAImG,IAAQrP,EAAAA,QAAQ8E,EAAOpC,CAAC,GACjD,CACF,EACIwI,EAAK,MAAO,CACd,IAAM6S,EAAKra,EAAI,cAAc,KAAK,EAClC,EAAG,YAAcwH,EAAK,MACtBiT,EAAS,OAAOJ,CAAE,CACpB,CAGA,OAFI,OAAO,SAAS7S,EAAK,KAAK,GAC5BiT,EAAS,OAAOL,GAAIxC,EAAO,MAAOlX,EAAI,MAAM8G,EAAK,KAAM,CAAC,CAAC,EACpDiT,CACT,EAEIE,GAAa,EACbC,GAAgD,KAC9CC,IAAiB,EAAW,IAAc,CAC9C,GAAe,CAAE,IAAG,GAAE,EAClB,KAAe3a,KACnB,GAAaA,GAAI,0BAA4B,CAC3C,GAAa,EACb,IAAM6G,EAAI6T,GAEV,GADA,GAAe,KACX,CAAC7T,GAAKpG,GAAama,EAAM,OAC7B,IAAMvB,EAAML,GAAOnS,EAAE,EAAGA,EAAE,CAAC,EAC3B2Q,GAAS6B,CAAG,EACZ,EAAM,MAAM,OACVA,GAAK,OAAS,OACV,UACAvU,GAAY,CAAC,EAAE,IACb,OACA,SACV,CAAC,EACH,EAIM+V,IAAgB,EAAmB,IAAoB,CAEzDzb,EAAK,OAASiF,EAAU,MAAQ,CAAC,GAAGjF,CAAI,CAAC,CAAC,MAAO,GAAMiF,EAAU,IAAI7E,CAAC,CAAC,IAEzE6E,EAAU,MAAM,EAChBjF,EAAK,QAAS,GAAMiF,EAAU,IAAI7E,CAAC,CAAC,EACpC,EAAa,GACbyI,EAAW,EACX,EAAI,KAAK,YAAc5D,EAAU,KAC7B7H,EAAAA,KAAKgE,EAAI,OAAO,SAAU,CAAE,MAAOA,EAAI,MAAM6D,EAAU,IAAI,CAAE,CAAC,EAC9D7D,EAAI,OAAO,iBACXsa,GACFna,GAAK,SAAU,CAAE,IAAK,CAAC,GAAG0D,CAAS,CAAC,CAAC,IAAK,GAAMnD,EAAM,MAAM1B,EAAE,CAAC,EAAE,CAAE,CAAC,EACxE,EAEMub,IAAc,EAAW,IAAsB,CACnD,IAAMnD,EAAK9S,GAAY,EACvB,GAAI,CAAC8S,GAAI,OAAQ,OACjB,IAAMoD,EAAQpD,EAAG,SAAW,YAAcqD,EACpC7b,EAAO,IAAI,IAAI4b,EAAQ3W,EAAY,CAAC,CAAC,EACvC2W,GAAS5b,EAAK,IAAII,CAAC,EAAGJ,EAAK,OAAOI,CAAC,EAClCJ,EAAK,IAAII,CAAC,EACfqb,GAAazb,EAAM,EAAI,CACzB,EAIM8b,IAAgB,EAAW,EAAmB,IAAoB,CACtE,GAAI,CAACjZ,GAAQ,CAACA,EAAK,SAASzC,EAAE,EAAE,OAAQ,MAAO,GAC/C,IAAM4G,EAAKlF,EAAM,MAAM1B,EAAE,CAAC,GAC1B,GAAI2b,IAAa7Y,EAAa,IAAI8D,CAAE,EAAG,MAAO,GAC1C+U,EAAU7Y,EAAa,IAAI8D,CAAE,EAC5B9D,EAAa,OAAO8D,CAAE,EAC3B,IAAMU,EAAOf,GAAS,EACtBoC,GAAUrB,EAAM,EAAI,EAEpB,IAAMsU,EAAO,IAAI,IAAI,CAAC,GAAG/W,CAAS,CAAC,CAAC,OAAQ,GAAMxC,GAAQmF,EAAE,CAAC,EAU7D,OATIoU,EAAK,OAAS/W,EAAU,MAAMwW,GAAaO,EAAM,EAAI,EACrDjX,GAAc,GAAK,CAACtC,GAAQsC,KAAa,EAAa3E,GAC1D,EAAI,KAAK,YAAc2b,EACnB3e,EAAAA,KAAKgE,EAAI,OAAO,UAAW,CACzB,KAAMpE,EAAAA,QAAQ8E,EAAO1B,CAAC,EACtB,MAAOgB,EAAI,MAAMiC,GAAYjD,EAAE,CACjC,CAAC,EACDhD,EAAAA,KAAKgE,EAAI,OAAO,SAAU,CAAE,KAAMpE,EAAAA,QAAQ8E,EAAO1B,CAAC,CAAE,CAAC,EACrDsb,GAAQna,GAAK,SAAU,CAAE,KAAI,UAAWwa,CAAS,CAAC,EAC/C,EACT,EAcIP,EAAyB,KACvBS,GAAW,IAAI,IAEfC,GAAS,GAA4C,CACzD,IAAM1I,EAAI1S,EAAM,sBAAsB,EACtC,MAAO,CAAE,EAAG,EAAE,QAAU0S,EAAE,KAAM,EAAG,EAAE,QAAUA,EAAE,GAAI,CACvD,EAEM2I,OAAkB,CACtB,IAAMlP,EAAM,CAAC,GAAGgP,GAAS,OAAO,CAAC,EAC3BlW,EAAIkH,EAAI,IAAM,CAAE,EAAG,EAAG,EAAG,CAAE,EAC3BhC,EAAIgC,EAAI,IAAMlH,EACpB,MAAO,CACL,SAAU,KAAK,MAAMA,EAAE,EAAIkF,EAAE,EAAGlF,EAAE,EAAIkF,EAAE,CAAC,EACzC,OAAQ,CAAE,GAAIlF,EAAE,EAAIkF,EAAE,GAAK,EAAG,GAAIlF,EAAE,EAAIkF,EAAE,GAAK,CAAE,CACnD,CACF,EAEMmR,GAAiB,GAAoB,CACzC,IAAM5D,EAAK9S,GAAY,EAEvB,GADI,CAAC8S,GACA,EAAE,QAA2B,UAAU,QAAQ,EAAG,OACvD,IAAM/Q,EAAIyU,GAAM,CAAC,EAIjB,GAHAD,GAAS,IAAI,EAAE,UAAWxU,CAAC,EAC3B3G,EAAM,oBAAoB,EAAE,SAAS,EACrC,GAAY,KACRmb,GAAS,OAAS,IAAMzD,EAAG,MAAQA,EAAG,KAAM,CAC9C,GAAM,CAAE,WAAU,UAAW2D,GAAU,EACvC,EAAO,CACL,KAAM,QACN,MAAO,GACP,OAAQE,EACR,KAAM,CAAClY,EAAGC,EAAIC,CAAE,EAChB,OAAQ,CAAC,EAAG,CAAC,EACb,WACA,MAAO,GACP,OAAQ,CACV,EACA,MACF,CACA,GAAI4X,GAAS,KAAO,EAAG,OACvB,IAAM7b,EAAI,EAAE,SAAW,EAAI6Y,GAASxR,EAAE,EAAGA,EAAE,CAAC,EAAI,GAC1C6U,EAAO,CACX,OAAQ7U,EACR,KAAM,CAACtD,EAAGC,EAAIC,CAAE,EAChB,SAAU,EACV,MAAO,GACP,OAAQ,EAAE,MACZ,EACA,AAQEmX,EAREpb,GAAK,GAAKoY,EAAG,KACR,CACL,GAAG8D,EACH,KAAM,OACN,MAAOlc,EACP,OAAQ,EAAEqH,EAAE,EAAIrD,GAAMD,EAAIhC,EAAE/B,IAAKqH,EAAE,EAAIpD,GAAMF,EAAI/B,EAAEhC,EAAE,CACvD,EAEO,CAAE,GAAGkc,EAAM,KAAM,MAAO,MAAOlc,EAAG,OAAQ,CAAC,EAAG,CAAC,CAAE,EAEtD,EAAE,SAAW,GAAG,EAAE,eAAe,CACvC,EAEMmc,GAAiB,GAAoB,CACzC,IAAM9U,EAAIyU,GAAM,CAAC,EAEjB,GADID,GAAS,IAAI,EAAE,SAAS,GAAGA,GAAS,IAAI,EAAE,UAAWxU,CAAC,EACtD,CAAC+T,EAAM,CACT,GAAI,EAAE,cAAgB,SAAWS,GAAS,KAAM,OAChDV,GAAc9T,EAAE,EAAGA,EAAE,CAAC,EACtB,MACF,CACA,IAAM+Q,EAAK9S,GAAY,EACvB,GAAI,CAAC8S,EAAI,OACT,GAAIgD,EAAK,OAAS,QAAS,CACzB,GAAM,CAAE,WAAU,UAAWW,GAAU,EACjC,CAAC9K,EAAIC,EAAIC,GAAMiK,EAAK,KACpB,CAAC/I,EAAIC,GAAMwE,GAAW,EACtBsF,EAAQhE,EAAG,MAAQgD,EAAK,SAAW,EAAIiB,EAAWjB,EAAK,SAAW,EAClEhE,EAAK,KAAK,IAAI/E,EAAI,KAAK,IAAIC,EAAIrB,EAAKmL,CAAK,CAAC,EAC1C9E,EAAQF,EAAKnG,EACb2F,EAAKwE,EAAK,OAAO,EACjBvE,EAAKuE,EAAK,OAAO,EACjBkB,EAAKlE,EAAG,IAAM6D,EAAO,EAAIrF,EACzB2F,EAAKnE,EAAG,IAAM6D,EAAO,EAAIpF,EAC/B,EAAIO,EACJ,EAAKkF,GAAM1F,EAAK1F,GAAMoG,EACtB,EAAKiF,GAAM1F,EAAK1F,GAAMmG,EACtB,GAAY,GACZ,EAAa,GACb7O,EAAW,EACX,MACF,CACA,IAAM6E,EAAKjG,EAAE,EAAI+T,EAAK,OAAO,EACvB7N,EAAKlG,EAAE,EAAI+T,EAAK,OAAO,EAC7B,GAAI,CAACA,EAAK,OAAS,KAAK,MAAM9N,EAAIC,CAAE,EAAI,EAAG,OAM3C,GALK6N,EAAK,QACR,EAAK,MAAQ,GACT1W,GAAOsT,GAAS,IAAI,EACxB,EAAM,MAAM,QAASoD,EAAK,KAAkB,aAE1CA,EAAK,OAAS,OAAQ,CACxB,IAAMpb,EAAIob,EAAK,MAEf,GAAe,GACf,IAAMtC,GAAMzR,EAAE,EAAIrD,GAAMD,EAAIqX,EAAK,OAAO,GAClCpC,GAAM3R,EAAE,EAAIpD,GAAMF,EAAIqX,EAAK,OAAO,GACxC,GAAIxY,EAAQA,EAAO,KAAK5C,EAAG8Y,EAAIE,CAAE,OAC5B,GAAIrX,IAAe,QAAS,CAE/B,IAAM2F,EAAOf,GAAS,EACtBiW,GAAelV,CAAI,EACnB1E,GAAgC,KAAK5C,EAAG8Y,EAAIE,CAAE,CAChD,CACA,EAAEhZ,GAAK,EAAGA,GAAK8Y,EACf,EAAE9Y,GAAK,GAAGA,GAAKgZ,EACf,GAAa,GACbvQ,EAAW,EACX,MACF,CACA,GAAI,CAAC2P,EAAG,IAAK,OACb,GAAM,CAACnH,EAAIC,EAAIC,GAAMiK,EAAK,KAC1B,EAAInK,EACJ,EAAKC,EAAK5D,EACV,EAAK6D,EAAK5D,EACV,GAAY,GACZ,EAAa,GACb9E,EAAW,CACb,EAEM+T,GAAkB,GAAgC,CACtD/V,GAAW,EAEXO,GAAWM,EAAM,EAAK,CACxB,EAEMmV,GAAe,GAAoB,CACvC,IAAMC,EAAMtB,EAIZ,GAHAS,GAAS,OAAO,EAAE,SAAS,EACvBnb,EAAM,oBAAoB,EAAE,SAAS,GACvCA,EAAM,sBAAsB,EAAE,SAAS,EACrCmb,GAAS,KAAM,CACba,GAAK,OAAS,UAAS,EAAO,MAClC,MACF,CAGA,GAFA,EAAO,KACP,EAAM,MAAM,OAASpX,GAAY,CAAC,EAAE,IAAM,OAAS,UAC/C,CAACoX,EAAK,OACV,GAAIA,EAAI,OAAS,QAAUA,EAAI,MAAO,CACpC9Z,GAAQ,QAAQ8Z,EAAI,MAAO,CAAC,CAAChb,EAAM,MAAMgb,EAAI,MAAM,CAAC,KAAK,EACzD,MACF,CACA,GAAIA,EAAI,OAASA,EAAI,SAAW,EAAG,OACnC,IAAMrV,EAAIyU,GAAM,CAAC,EACXjC,EAAML,GAAOnS,EAAE,EAAGA,EAAE,CAAC,EAC3BsV,GAAY9C,EAAK,EAAE,SAAW,EAAE,SAAW,EAAE,QAAQ,CACvD,EAEM8C,IAAe,EAAiB,IAAsB,CAC1D,GAAI,CAAC9C,EAAK,CACJhV,EAAU,MAAQS,GAAY,CAAC,EAAE,QACnC+V,GAAa,IAAI,IAAO,EAAI,EAC9B,MACF,CACA,IAAM/Z,EAAQoY,GAAWG,CAAG,EAE5B,GADA1Y,GAAK,QAASG,CAAK,EACfuY,EAAI,OAAS,OAAQ,OACzB,IAAM7Z,EAAI6Z,EAAI,MACVpU,GAAY,GAAKhD,GAAM,SAASzC,EAAE,EAAE,QACtC0b,GAAa1b,EAAG0P,GAAgB1P,CAAC,EAAG,EAAI,EAC1Cub,GAAWvb,EAAGyb,CAAQ,CACxB,EAEMmB,GAAmB,GAAoB,CAC3Cf,GAAS,OAAO,EAAE,SAAS,EACtBA,GAAS,OACRT,GAAM,OAAS,QACjBxY,GAAQ,QAAQwY,EAAK,MAAO,CAAC,CAAC1Z,EAAM,MAAM0Z,EAAK,MAAM,CAAC,KAAK,EAC7D,EAAO,KAEX,EAEMyB,OAAuB,CAC3B,GAAe,KACX,CAACzB,GAAQ1W,GAAOsT,GAAS,IAAI,CACnC,EAEI8E,GAA+C,EAC7CC,OAAiB,CACrB,IAAMC,EAAM,kBAAkB,KAAKxc,IAAK,WAAW,UAAY,EAAE,EACjE,EAAI,KAAK,YAAcxD,EAAAA,KAAKgE,EAAI,OAAO,SAAU,CAC/C,IAAKgc,EAAM,IAAM,MACnB,CAAC,EACD,EAAI,KAAK,MAAM,QAAU,IACrBF,IAAW,aAAaA,EAAS,EACrC,GAAY,eAAiB,CAC3B,GAAY,EACZ,EAAI,KAAK,MAAM,QAAU,GAC3B,EAAG,IAAI,CACT,EAEMG,GAAW,GAAkB,CACjC,IAAM7E,EAAK9S,GAAY,EACvB,GAAI,CAAC8S,GAAI,KAAM,OACf,IAAMhZ,EAAQ,EAAE,SAAW,CAAC,EAAE,QAC9B,GAAIgZ,EAAG,QAAU,YAAc,CAAC,EAAE,SAAW,CAAC,EAAE,QAAS,CACnD,KAAK,IAAI,EAAE,MAAM,EAAI,KAAK,IAAI,EAAE,MAAM,GAAG2E,GAAS,EACtD,MACF,CACA,EAAE,eAAe,EACjB,IAAM1V,EAAIyU,GAAM,CAAC,EACjB,GAAY,KACZ3E,GAAW,EAAInY,EAAY,EAAE,OAAQ,EAAE,UAAWI,CAAK,EAAGiI,EAAE,EAAGA,EAAE,CAAC,EAC9D3C,GAAOsT,GAAS,IAAI,CAC1B,EAEMkF,GAAiB,GAAkB,CACvC,GAAI,CAAC5X,GAAY,EAAG,OACpB,IAAM+B,EAAIyU,GAAM,CAAC,EACbjD,GAASxR,EAAE,EAAGA,EAAE,CAAC,GAAK,IAC1B,EAAE,eAAe,EACjB8V,GAAS,IAAI,EAAI,EACnB,EAEMC,OAAgB,CACpB,IAAIjF,EACJ,GAAI,CACF,EAAWzX,EAAM,QAAQ,gBAAgB,CAC3C,MAAQ,CACN,EAAW,EACb,CACA,GAAeyX,EACXA,IACF,EAAM,MAAM,UAAY,0CAC5B,EAEMkF,OAAe,CACnB,EAAM,MAAM,UAAY,GACxB,GAAe,GACX1Y,GAAc,IAChB,EAAa,GACboV,GAAc,EACd,EAAa,GACbtR,EAAW,EAEf,EAEM6U,OAAmB,CACvB,IAAMrN,EAAiB,CAAC,EACxB,IAAK,IAAIjQ,EAAI,EAAGA,EAAI0B,EAAM,EAAG,IACvB2J,EAAKrL,CAAC,EAAI,IAAO,KAAUqC,GAAQrC,KAAKiQ,EAAK,KAAKjQ,CAAC,EACzD,OAAOiQ,CACT,EAEMsN,GAAY,GAAc,CAC9B,GAAIvd,IAAM2E,EAAY,OACtB,EAAa3E,EACb,GAAe,GACf,EAAa,GAEb,IAAMsT,EAAKtB,GAAQhS,CAAC,EACdwT,EAAKvB,GAAQjS,CAAC,GAGlBsT,EAAK,IACLE,EAAK,IACLF,EAAK9O,EAAQ,IACbgP,EAAK/O,EAAS,KAEdyS,GAAQ,CAACnT,EAAGC,EAAKQ,EAAQ,EAAI8O,EAAIrP,EAAKQ,EAAS,EAAI+O,CAAE,EAAG,EAAI,EAE9D,IAAM/I,EAAI/I,EAAM,QAAQ1B,GAClBwd,EAAS9b,EAAM,SAAS1B,GAAK0B,EAAM,UAAU1B,GACnD,EAAI,KAAK,YACPyK,GAAK,EACDzN,EAAAA,KAAKgE,EAAI,OAAO,eAAgB,CAC9B,KAAMpE,EAAAA,QAAQ8E,EAAO1B,CAAC,EACtB,MAAO0B,EAAM,OAAO+I,EAAE,CAAC,KACvB,OAAQzJ,EAAI,MAAMwc,CAAM,CAC1B,CAAC,EACDxgB,EAAAA,KAAKgE,EAAI,OAAO,UAAW,CACzB,KAAMpE,EAAAA,QAAQ8E,EAAO1B,CAAC,EACtB,OAAQgB,EAAI,MAAMwc,CAAM,CAC1B,CAAC,EACPzD,GAAc,EACdtR,EAAW,EACXtH,GAAK,QAASuY,GAAW,CAAE,KAAM,OAAQ,MAAO1Z,CAAE,CAAC,CAAC,CACtD,EAGMyd,IACJ,EACA,EACA,IACW,CACX,IAAMnK,EAAKtB,GAAQtI,CAAI,EACjB8J,EAAKvB,GAAQvI,CAAI,EACnB2P,EAAO,GACPqE,EAAY,IAChB,IAAK,IAAM1d,KAAKsd,GAAW,EAAG,CAC5B,GAAItd,IAAM0J,EAAM,SAChB,IAAMiU,EAAK3L,GAAQhS,CAAC,EAAIsT,EAClBsK,EAAK3L,GAAQjS,CAAC,EAAIwT,EAClB1G,EAAQ6Q,EAAKrQ,EAAKsQ,EAAKrQ,EAC7B,GAAIT,GAAS,GAAK,SAClB,IAAM+Q,EAAS,KAAK,IAAIF,EAAKpQ,EAAKqQ,EAAKtQ,CAAE,EACzC,GAAIuQ,EAAS/Q,EAAQ,IAAK,SAC1B,IAAMgR,EAAQhR,EAAQ+Q,EAAS,EAC3BC,EAAQJ,IACV,EAAYI,EACZ,EAAO9d,EAEX,CACA,OAAOqZ,CACT,EAEM0E,OAAqB,CACzB,IAAMC,EAAQ,CAAC,GAAGnZ,CAAS,CAAC,CAAC,KAAM,GAAMwG,EAAKrL,CAAC,EAAI,CAAC,EACpD,GAAIge,IAAU,IAAA,GAAW,OAAOA,EAChC,IAAK,IAAMhe,KAAK0B,EAAM,KAAM,GAAI2J,EAAKrL,CAAC,EAAI,EAAG,OAAOA,EACpD,MAAO,EACT,EAEMie,GAAa,GAAqB,CACtC,IAAM7F,EAAK9S,GAAY,EACvB,GAAI,CAAC8S,GAAI,SAAU,OAOnB,IAAMrL,EAAM,CALV,UAAW,CAAC,GAAI,CAAC,EACjB,WAAY,CAAC,EAAG,CAAC,EACjB,QAAS,CAAC,EAAG,EAAE,EACf,UAAW,CAAC,EAAG,CAAC,CAEN,EAAK,EAAE,KACnB,GAAIA,EAAK,CAEP,GADA,EAAE,eAAe,EACbpI,EAAa,GAAK0G,EAAK1G,CAAU,GAAK,EAAG,CAC3C,IAAMuZ,EAAQH,GAAa,EACvBG,GAAS,GAAGX,GAASW,CAAK,EAC9B,MACF,CACA,IAAMte,EAAO6d,GAAoB9Y,EAAYoI,EAAI,GAAIA,EAAI,EAAE,EACvDnN,GAAQ,GAAG2d,GAAS3d,CAAI,EAC5B,MACF,CACA,OAAQ,EAAE,IAAV,CACE,IAAK,QACL,IAAK,IACH,GAAI+E,EAAa,EAAG,OACpB,EAAE,eAAe,EAEf,EAAE,MAAQ,SACVc,GAAY,GACZhD,GAAM,SAASkC,EAAW,EAAE,QAE5B+W,GAAa/W,EAAY+K,GAAgB/K,CAAU,EAAG,EAAI,EAC5DxD,GAAK,QAASuY,GAAW,CAAE,KAAM,OAAQ,MAAO/U,CAAW,CAAC,CAAC,EAC7D4W,GAAW5W,EAAY,EAAE,SAAW,EAAE,SAAW,EAAE,MAAQ,GAAG,EAC9D,OACF,IAAK,IACL,IAAK,IACH,GAAI,CAACyT,EAAG,KAAM,OACd,EAAE,eAAe,EACjBjB,GAAWrY,EAAU0F,EAAQ,EAAGC,EAAS,EAAG,EAAI,EAChD,OACF,IAAK,IACL,IAAK,IACH,GAAI,CAAC2T,EAAG,KAAM,OACd,EAAE,eAAe,EACjBjB,GAAW,EAAIrY,EAAU0F,EAAQ,EAAGC,EAAS,EAAG,EAAI,EACpD,OACF,IAAK,IACL,IAAK,OACH,EAAE,eAAe,EACjB0Y,GAAS,IAAI,EAAI,EACjB,OACF,IAAK,SAEH,GAAI,EADQxY,GAAc,GAAKE,EAAU,KAAO,GAAOH,GAC7C,OACV,EAAE,eAAe,EACjB,EAAa,GACTA,GAAOsT,GAAS,IAAI,EACxBqD,GAAa,IAAI,IAAO,EAAI,EAC5BtB,GAAc,EACd,EAAa,GACbtR,EAAW,EACX,MAGJ,CACF,EAEM0V,OAAiBhH,GAAWpY,EAAayF,EAAQ,EAAGC,EAAS,EAAG,EAAI,EACpE2Z,OACJjH,GAAW,EAAIpY,EAAayF,EAAQ,EAAGC,EAAS,EAAG,EAAI,EACnD4Z,OAAclB,GAAS,IAAI,EAAI,EAErCzc,EAAM,iBAAiB,cAAesb,EAAa,EACnDtb,EAAM,iBAAiB,cAAeyb,EAAa,EACnDzb,EAAM,iBAAiB,YAAa+b,EAAW,EAC/C/b,EAAM,iBAAiB,gBAAiBkc,EAAe,EACvDlc,EAAM,iBAAiB,eAAgBmc,EAAc,EACrDnc,EAAM,iBAAiB,QAASuc,GAAS,CAAE,QAAS,EAAM,CAAC,EAC3Dvc,EAAM,iBAAiB,WAAYwc,EAAa,EAChDxc,EAAM,iBAAiB,UAAWud,EAAS,EAC3Cvd,EAAM,iBAAiB,QAAS0c,EAAO,EACvC1c,EAAM,iBAAiB,OAAQ2c,EAAM,EACrC5c,EAAI,OAAO,iBAAiB,QAAS0d,EAAQ,EAC7C1d,EAAI,QAAQ,iBAAiB,QAAS2d,EAAS,EAC/C3d,EAAI,IAAI,iBAAiB,QAAS4d,EAAK,EAIvC,IAAMC,GACJ,OAAO,gBAAmB,WACtB,IAAI,mBAAqB7V,EAAW,CAAC,EACrC,KACN6V,IAAgB,QAAQ5d,CAAK,EAE7B,IAAM6d,OAAqB,CACzB,GAAItd,EAAW,OACf,IAAMrB,EAAO7E,EAAAA,UAAU0F,EAAI,KAAME,EAAQ,OAAO,EAC1C6d,EAAc5e,EAAK,aAAeiB,EAAM,WAC9C,GAAK1D,EAAAA,mBAAmB0D,EAAOjB,CAAI,GAAM4e,EAEzC,IADA,EAAQ5e,EACJ4e,EAAa,CACf7V,GAAUpC,GAAS,EAAG,EAAK,EAC3B,MACF,CACAqD,GAAc,EACd,GAAY,GACZE,GAAa,EACb,GAAe,GACfrB,EAAW,CALX,CAMF,EACMgW,GAAerhB,EAAAA,WAAWmhB,EAAY,EAEtCG,GAAgBrhB,EAAAA,gBAAkB,CAClC4D,GAAa3D,EAAAA,cAAcqD,EAAQ,MAAM,IAAMK,EAAI,SACvD,EAAMhG,EAAAA,YAAY2F,EAAQ,OAAQA,EAAQ,MAAM,EAChDkJ,GAAoB,GAChBnF,GAASC,GAAc,IAAGoV,GAAc,EAC9C,CAAC,EAIK4E,GAAe,MAAO,EAAkC,IAAI,MAAU,CAC1E,IAAMC,EAAQ,EAAE3Z,GACVrF,EAAO,MAAMrC,EAAAA,eACjBoD,EAAQ,UAAY,WACd,CACJ,IAAMke,EAAS3hB,EAAAA,MAAMoD,EAAI,cAAc,QAAQ,EAAG,CAChD,SAAU,WACV,KAAM,IACN,IAAK,IACL,cAAe,MACjB,CAAC,EAGD,OAFAue,EAAO,aAAa,cAAe,MAAM,EACzC,EAAO,UAAY,qBACZA,CACT,EACC,GAAS,CACJ5d,GAAa+D,GAAU,OAAS8Z,IACpC9Z,EAAS,QAAQ,EACjBA,EAAS,OAAO,OAAO,EACvB,EAAW,KACX2Z,GAAkB,IAAI,IAAI,CAAC,GAAGI,EAASD,CAAI,CAAC,CAAC,EAC/C,EACAC,CACF,EACA,GAAI9d,GAAa2d,IAAU3Z,GAAe,CACxCrF,GAAM,QAAQ,EACd,MACF,CACIoF,IACFA,EAAS,QAAQ,EACjBA,EAAS,OAAO,OAAO,GAEzB,EAAWpF,EACX,EAAa,GACTA,GACF,EAAI,KAAK,QAAQ,SAAWA,EAAK,KACjCc,EAAM,aAAad,EAAK,OAAQa,EAAI,UAAU,EAC9CU,GAAK,WAAYvB,EAAK,IAAI,GAE1B,OAAOa,EAAI,KAAK,QAAQ,SAE1ByE,GAAatF,GAAM,MAAQ,IAAI,EAC/B6I,EAAW,CACb,EAIMuW,GAAgB,GAAyB,CAC7Clc,EAAa,MAAM,EACnB,IAAK,IAAMsE,KAAQhH,EAAE,OAAS,CAAC,EACzBgH,GAAM,WAAWtE,EAAa,IAAIsE,EAAK,EAAE,EAC/CrE,GAAa,MAAM,EACnB,IAAK,IAAM0H,KAAKrK,EAAE,QAAU,CAAC,EAAOqK,GAAG,QAAQ1H,GAAa,IAAI0H,EAAE,EAAE,CACtE,EAEMwU,OAA4B,CAChC,GAAI,CAACte,EAAQ,SAAU,OACvB,IAAMf,EAAO,IAAI,IACjB,IAAK,IAAMgH,KAAMjG,EAAQ,SAAU,CACjC,IAAMX,EAAI0B,EAAM,MAAM,IAAIkF,CAAE,EACxB5G,IAAM,IAAA,IAAWJ,EAAK,IAAII,CAAC,CACjC,CACA6E,EAAU,MAAM,EAChBjF,EAAK,QAAS,GAAMiF,EAAU,IAAI7E,CAAC,CAAC,EACpC,GAAe,GACf,EAAa,EACf,EAEAgf,GAAare,CAAO,EACpBgI,GAAU,IAAI,IAAO,EAAK,EAC1BsW,GAAoB,EACpBN,GAAkB,EAIlB,IAAMO,IAAe,EAAyB,IAAyB,CACrE,IAAM5X,EAAOf,GAAS,EAChB+D,EAAM,CAAC,GAAGzF,CAAS,CAAC,CAAC,IAAK,GAAMnD,EAAM,MAAM1B,EAAE,CAAC,EAAE,EACjDmf,EAAUxa,GAAc,EAAIjD,EAAM,MAAMiD,EAAW,CAAC,GAAK,KAC/D,GAAIya,EAAa,CAEf,IAAK,IAAMhY,KAAQxH,EAAK,OAAS,CAAC,EAC5BwH,GAAM,WAAWtE,EAAa,IAAIsE,EAAK,EAAE,EAC/C,EAAQnM,EAAAA,WAAW2E,EAAK,OAAS,CAAC,EAAGA,EAAK,OAAS,CAAC,EAAGA,EAAK,MAAM,EAClE,IAAK,IAAM6K,KAAK7K,EAAK,QAAU,CAAC,EAAO6K,GAAG,QAAQ1H,GAAa,IAAI0H,EAAE,EAAE,EACvE5F,EAAU,MAAM,EAChB,IAAK,IAAM+B,KAAM0D,EAAK,CACpB,IAAMtK,EAAI0B,EAAM,MAAM,IAAIkF,CAAE,EACxB5G,IAAM,IAAA,IAAW6E,EAAU,IAAI7E,CAAC,CACtC,CACA,EAAamf,IAAY,KAA0C,GAAlCzd,EAAM,MAAM,IAAIyd,CAAO,GAAK,GAC7D,EAAQ,KACR,EAAI,QAAQ,MAAM,QAAU,MAC9B,CACAxW,GAAUrB,EAAM,EAAI,CACtB,EAEM6V,GAA+B,CACnC,WAAW,EAAM,CACf,GAAIlc,EAAW,OACf,IAAMoe,EAAW1e,EACjB,EAAUf,GACLA,EAAK,SAAW,CAAC,EAAA,CAAG,KAAK,KAAOyf,EAAS,SAAW,CAAC,EAAA,CAAG,KAAK,IAChE,EAAQtkB,EAAAA,UAAU0F,EAAI,KAAMb,EAAK,OAAO,IAEtCA,EAAK,SAAWyf,EAAS,QAAUzf,EAAK,SAAWyf,EAAS,UAC9D,EAAMrkB,EAAAA,YAAY4E,EAAK,OAAQA,EAAK,MAAM,GAE5C,IAAMwf,EACJxf,EAAK,QAAUyf,EAAS,OACxBzf,EAAK,QAAUyf,EAAS,OACxBzf,EAAK,SAAWyf,EAAS,OACrBC,EAAMnf,GAAgBP,CAAI,EAC5Bwf,GAAeE,IAAQzd,IACzB,GAAYyd,EACZJ,GAAYtf,EAAMwf,CAAW,IAE7BzV,GAAgB,EAChBC,GAAc,EACd,GAAa,GACb,GAAe,GACf,GAAY,GACZE,GAAa,EACbD,GAAoB,EACpBpB,EAAW,IAGV7I,EAAK,UAAY,CAAC,EAAA,CAAG,KAAK,GAAQ,KAClCyf,EAAS,UAAY,CAAC,EAAA,CAAG,KAAK,GAAQ,GAEvCJ,GAAoB,GACjBrf,EAAK,UAAY,WAAayf,EAAS,UAAY,SACtDV,GAAkB,CACtB,EACA,QAAQ,EAAM,CACR1d,GACJkc,GAAS,WAAW,CAClB,GAAGxc,EACH,MAAOnB,EAAK,MACZ,MAAOA,EAAK,MACZ,OAAQA,EAAK,QAAUmB,EAAQ,MACjC,CAAC,CACH,EACA,IAAI,EAAU,GAAM,CAClB,GAAIM,EAAW,OACf,GAAY,GAER2B,GAAQ,QAAQ,IAAG,GAAe,IACtC,IAAMkO,EAASC,GAAQ,EACnBD,EAAQoG,GAAQpG,EAAQ1I,CAAO,EAC9B,GAAW,GAChBK,EAAW,CACb,EACA,UAAU,EAAI,EAAO,CAAC,EAAG,CACvB,GAAIxH,EAAW,OACf,IAAIjB,EAAI0B,EAAM,MAAM,IAAIkF,CAAE,EAC1B,GAAI5G,IAAM,IAAA,GAAW,OAErB,GAAIyC,GAAQ,CAACJ,GAAQrC,GAAI,CACvB,IAAIuf,EAAU,GACd,IAAK,IAAI5Z,EAAIlD,EAAK,OAAOzC,GAAI2F,GAAK,EAAG,EAAIlD,EAAK,OAAOkD,GAC/C7C,EAAa,OAAOpB,EAAM,MAAMiE,EAAE,CAAC,EAAE,IAAG,EAAU,IAEpD4Z,GAAS5W,GAAUpC,GAAS,EAAGiZ,EAAK,UAAY,EAAK,EACzD,EAAI9d,EAAM,MAAM,IAAIkF,CAAE,CACxB,CACA,IAAM2K,EAAKiO,EAAK,MAAQ,KAAK,IAAIzb,EAAG,CAAC,EAC/B,CAACsO,EAAIC,GAAMwE,GAAW,EACtBM,EAAK,KAAK,IAAI/E,EAAI,KAAK,IAAIC,EAAIf,CAAE,CAAC,EACxC,GAAY,GACZ,IAAMzK,EAAItC,GAAS9D,EAAM,YACnBqG,EAAItC,GAAU/D,EAAM,aAC1BwW,GACE,CAACE,EAAItQ,EAAI,EAAI7E,EAAGjC,GAAKoX,EAAIrQ,EAAI,EAAI7E,GAAGlC,GAAKoX,CAAE,EAC3CoI,EAAK,UAAY,EACnB,EACA,EAAaxf,EACb,GAAe,GACf,EAAa,GACbyI,EAAW,CACb,EACA,OAAO,EAAK,CACV,GAAIxH,EAAW,OACf,IAAMgP,EAAO3F,IAAQ,KAAO,CAAC,EAAI,OAAOA,GAAQ,SAAW,CAACA,CAAG,EAAIA,EAC7D1K,EAAO,IAAI,IACjB,IAAK,IAAMgH,KAAMqJ,EAAM,CACrB,IAAMjQ,EAAI0B,EAAM,MAAM,IAAIkF,CAAE,EACxB5G,IAAM,IAAA,IAAWJ,EAAK,IAAII,CAAC,CACjC,CACAqb,GAAazb,EAAM,EAAI,CACzB,EACA,iBAAoB,CAAC,GAAGiF,CAAS,CAAC,CAAC,IAAK,GAAMnD,EAAM,MAAM1B,EAAE,CAAC,EAAE,EAC/D,OAAO,EAAI,CACT,GAAIiB,EAAW,OACf,GAAI2F,IAAO,IAAA,GAAW,CACpB,GAAI,CAAC9D,EAAa,KAAM,OACxB,IAAMwH,EAAM,CAAC,GAAGxH,CAAY,EAC5BA,EAAa,MAAM,EACnB6F,GAAUpC,GAAS,EAAG,EAAI,EAC1B,IAAK,IAAMhB,KAAK+E,EACV5I,EAAM,MAAM,IAAI6D,CAAC,GAAGpE,GAAK,SAAU,CAAE,GAAIoE,EAAG,UAAW,EAAM,CAAC,EAEpE,MACF,CACA,IAAMvF,EAAI0B,EAAM,MAAM,IAAIkF,CAAE,EACxB5G,IAAM,IAAA,GACL8C,EAAa,OAAO8D,CAAE,EADN8U,GAAa1b,EAAG,GAAO,EAAI,CAElD,EACA,SAAS,EAAI,CACX,GAAIiB,EAAW,OACf,GAAI2F,IAAO,IAAA,GAAW,CACpB,GAAI,CAACnE,EAAM,OACX,IAAM8c,EAAoB,CAAC,EAY3B,GAXA9c,EAAK,SAAS,SAAS,EAAM,IAAM,CACjC,IAAMgd,EAAS/d,EAAM,MAAM1B,EAAE,CAAC,GAE5BiQ,EAAK,QACLxN,EAAM,OAAOzC,IAAM,GACnB,CAAC8C,EAAa,IAAI2c,CAAM,IAExB3c,EAAa,IAAI2c,CAAM,EACvBF,EAAQ,KAAKE,CAAM,EAEvB,CAAC,EACG,CAACF,EAAQ,OAAQ,OACrB5W,GAAUpC,GAAS,EAAG,EAAI,EAC1B,IAAK,IAAMhB,KAAKga,EAASpe,GAAK,SAAU,CAAE,GAAIoE,EAAG,UAAW,EAAK,CAAC,EAClE,MACF,CACA,IAAMvF,EAAI0B,EAAM,MAAM,IAAIkF,CAAE,EACxB5G,IAAM,IAAA,IAAW0b,GAAa1b,EAAG,GAAM,EAAI,CACjD,EACA,OAAO,EAAI,CACT,IAAMA,EAAI0B,EAAM,MAAM,IAAIkF,CAAE,EACxB5G,IAAM,IAAA,IAAaiB,GACvBya,GAAa1b,EAAG0P,GAAgB1P,CAAC,EAAG,EAAI,CAC1C,EACA,cAAe,CACb,IAAM2M,EAAkC,CAAC,EACzC,IAAK,IAAI3M,EAAI,EAAGA,EAAI0B,EAAM,EAAG,IAC3B,EAAIA,EAAM,MAAM1B,EAAE,CAAC,IAAM,CAAE,EAAGiC,EAAGjC,GAAI,EAAGkC,GAAGlC,EAAG,EAEhD,OAAO2M,CACT,EACA,UAAW,CACL1L,GACJ0H,GAAUhH,IAAe,QAAU,IAAI,IAAQ4E,GAAS,EAAG,EAAI,CACjE,EACA,QAAS,CACPkC,EAAW,CACb,EACA,gBAAmBzD,GAAU,MAAQ,KACrC,SACA,gBACA,GAAG,EAAM,EAAU,CACjB,IAAI2B,EAAMzF,GAAU,IAAIE,CAAI,EAM5B,OALKuF,IACH,EAAM,IAAI,IACVzF,GAAU,IAAIE,EAAMuF,CAAG,GAEzBA,EAAI,IAAI+Y,CAA8B,MACzB,CACX/Y,EAAI,OAAO+Y,CAA8B,CAC3C,CACF,EACA,SAAU,CACJze,IACJ,EAAY,GACZ,KACIoE,IAAS7E,IAAK,qBAAqB6E,EAAO,EAC1C4V,IAAYza,IAAK,qBAAqBya,EAAU,EAChD6B,IAAW,aAAaA,EAAS,EACrC,GAAU,EACV,GAAa,EACbrW,GAAW,EACX6X,IAAgB,WAAW,EAC3BG,GAAa,EACbC,GAAc,EACdhe,EAAM,oBAAoB,cAAesb,EAAa,EACtDtb,EAAM,oBAAoB,cAAeyb,EAAa,EACtDzb,EAAM,oBAAoB,YAAa+b,EAAW,EAClD/b,EAAM,oBAAoB,gBAAiBkc,EAAe,EAC1Dlc,EAAM,oBAAoB,eAAgBmc,EAAc,EACxDnc,EAAM,oBAAoB,QAASuc,EAAO,EAC1Cvc,EAAM,oBAAoB,WAAYwc,EAAa,EACnDxc,EAAM,oBAAoB,UAAWud,EAAS,EAC9Cvd,EAAM,oBAAoB,QAAS0c,EAAO,EAC1C1c,EAAM,oBAAoB,OAAQ2c,EAAM,EACxC5c,EAAI,OAAO,oBAAoB,QAAS0d,EAAQ,EAChD1d,EAAI,QAAQ,oBAAoB,QAAS2d,EAAS,EAClD3d,EAAI,IAAI,oBAAoB,QAAS4d,EAAK,EAC1CrZ,GAAU,QAAQ,EAClB,EAAW,KACX9D,GAAU,MAAM,EAChBgE,GAAa,IAAI,EACjBzE,EAAI,KAAK,OAAO,EAClB,CACF,EACA,OAAO0c,EACT,EAEA,SAASpc,GAAO,EAA4B,CAC1C,OAAOrE,EAAAA,UAAUmE,EAAM,UAAU,EAAI,IAAOnE,EAAAA,UAAUmE,EAAM,IAAI,EAAI,EACtE"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { GraphChartInstance, GraphChartOptions, GraphLayoutType } from './types.cjs';
|
|
2
|
+
export declare const resolveLayout: (layout: GraphLayoutType | undefined) => GraphLayoutType;
|
|
3
|
+
export declare const createGraphChart: (container: HTMLElement, initialOptions: GraphChartOptions) => GraphChartInstance;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { GraphChartInstance, GraphChartOptions, GraphLayoutType } from './types.js';
|
|
2
|
+
export declare const resolveLayout: (layout: GraphLayoutType | undefined) => GraphLayoutType;
|
|
3
|
+
export declare const createGraphChart: (container: HTMLElement, initialOptions: GraphChartOptions) => GraphChartInstance;
|