@hpcc-js/chart 3.5.1 → 3.5.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.umd.cjs","sources":["../../../node_modules/d3-path/src/path.js","../../../node_modules/d3-shape/src/constant.js","../../../node_modules/d3-shape/src/math.js","../../../node_modules/d3-shape/src/arc.js","../../../node_modules/d3-shape/src/curve/linear.js","../../../node_modules/d3-shape/src/point.js","../../../node_modules/d3-shape/src/line.js","../../../node_modules/d3-shape/src/area.js","../../../node_modules/d3-shape/src/descending.js","../../../node_modules/d3-shape/src/identity.js","../../../node_modules/d3-shape/src/pie.js","../../../node_modules/d3-shape/src/curve/basis.js","../../../node_modules/d3-shape/src/curve/bundle.js","../../../node_modules/d3-shape/src/curve/cardinal.js","../../../node_modules/d3-shape/src/curve/catmullRom.js","../../../node_modules/d3-shape/src/curve/monotone.js","../../../node_modules/d3-shape/src/curve/natural.js","../../../node_modules/d3-shape/src/curve/step.js","../../../node_modules/d3-axis/src/array.js","../../../node_modules/d3-axis/src/identity.js","../../../node_modules/d3-axis/src/axis.js","../src/Axis.ts","../src/XYAxis.ts","../src/Scatter.ts","../src/Area.ts","../src/Column.ts","../src/Bar.ts","../node_modules/d3-hierarchy/src/hierarchy/count.js","../node_modules/d3-hierarchy/src/hierarchy/each.js","../node_modules/d3-hierarchy/src/hierarchy/eachBefore.js","../node_modules/d3-hierarchy/src/hierarchy/eachAfter.js","../node_modules/d3-hierarchy/src/hierarchy/sum.js","../node_modules/d3-hierarchy/src/hierarchy/sort.js","../node_modules/d3-hierarchy/src/hierarchy/path.js","../node_modules/d3-hierarchy/src/hierarchy/ancestors.js","../node_modules/d3-hierarchy/src/hierarchy/descendants.js","../node_modules/d3-hierarchy/src/hierarchy/leaves.js","../node_modules/d3-hierarchy/src/hierarchy/links.js","../node_modules/d3-hierarchy/src/hierarchy/index.js","../node_modules/d3-hierarchy/src/array.js","../node_modules/d3-hierarchy/src/pack/enclose.js","../node_modules/d3-hierarchy/src/pack/siblings.js","../node_modules/d3-hierarchy/src/accessors.js","../node_modules/d3-hierarchy/src/constant.js","../node_modules/d3-hierarchy/src/pack/index.js","../src/Bubble.ts","../src/BubbleXY.ts","../../../node_modules/d3-timer/src/timer.js","../../../node_modules/d3v4-bullet/src/bullet.js","../src/Bullet.ts","../../../node_modules/d3-contour/src/array.js","../../../node_modules/d3-contour/src/ascending.js","../../../node_modules/d3-contour/src/area.js","../../../node_modules/d3-contour/src/constant.js","../../../node_modules/d3-contour/src/contains.js","../../../node_modules/d3-contour/src/noop.js","../../../node_modules/d3-contour/src/contours.js","../../../node_modules/d3-contour/src/blur.js","../../../node_modules/d3-contour/src/density.js","../../../node_modules/d3-geo/src/adder.js","../../../node_modules/d3-geo/src/math.js","../../../node_modules/d3-geo/src/noop.js","../../../node_modules/d3-geo/src/stream.js","../../../node_modules/d3-geo/src/identity.js","../../../node_modules/d3-geo/src/path/area.js","../../../node_modules/d3-geo/src/path/bounds.js","../../../node_modules/d3-geo/src/path/centroid.js","../../../node_modules/d3-geo/src/path/context.js","../../../node_modules/d3-geo/src/path/measure.js","../../../node_modules/d3-geo/src/path/string.js","../../../node_modules/d3-geo/src/path/index.js","../src/Contour.ts","../src/Gantt.ts","../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/constant.js","../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/math.js","../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/arc.js","../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/curve/linear.js","../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/point.js","../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/line.js","../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/noop.js","../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/curve/basis.js","../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/curve/bundle.js","../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/curve/cardinal.js","../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/curve/cardinalClosed.js","../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/curve/cardinalOpen.js","../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/curve/catmullRom.js","../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/curve/catmullRomClosed.js","../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/curve/catmullRomOpen.js","../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/curve/monotone.js","../../../node_modules/d3-svg-annotation/indexRollupNext.js","../src/Gauge.ts","../src/Pie.ts","../src/HalfPie.ts","../src/Heat.ts","../../../node_modules/d3-hexbin/src/hexbin.js","../src/HexBin.ts","../src/Line.ts","../src/QuarterPie.ts","../src/QuartileCandlestick.ts","../src/Radar.ts","../src/RadialBar.ts","../src/StatChart.ts","../src/Step.ts","../src/Summary.ts","../src/SummaryC.ts","../src/D3Cloud.ts","../src/WordCloud.ts","../src/__package__.ts"],"sourcesContent":["var pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction Path() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n}\n\nfunction path() {\n return new Path;\n}\n\nPath.prototype = path.prototype = {\n constructor: Path,\n moveTo: function(x, y) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n },\n closePath: function() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n },\n lineTo: function(x, y) {\n this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n quadraticCurveTo: function(x1, y1, x, y) {\n this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n arcTo: function(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n var x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Otherwise, draw an arc!\n else {\n var x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n }\n\n this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n }\n },\n arc: function(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n var dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._ += \"M\" + x0 + \",\" + y0;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._ += \"L\" + x0 + \",\" + y0;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n }\n },\n rect: function(x, y, w, h) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n },\n toString: function() {\n return this._;\n }\n};\n\nexport default path;\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","export var abs = Math.abs;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var max = Math.max;\nexport var min = Math.min;\nexport var sin = Math.sin;\nexport var sqrt = Math.sqrt;\n\nexport var epsilon = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport {abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau} from \"./math.js\";\n\nfunction arcInnerRadius(d) {\n return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n var x10 = x1 - x0, y10 = y1 - y0,\n x32 = x3 - x2, y32 = y3 - y2,\n t = y32 * x10 - x32 * y10;\n if (t * t < epsilon) return;\n t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n var x01 = x0 - x1,\n y01 = y0 - y1,\n lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01),\n ox = lo * y01,\n oy = -lo * x01,\n x11 = x0 + ox,\n y11 = y0 + oy,\n x10 = x1 + ox,\n y10 = y1 + oy,\n x00 = (x11 + x10) / 2,\n y00 = (y11 + y10) / 2,\n dx = x10 - x11,\n dy = y10 - y11,\n d2 = dx * dx + dy * dy,\n r = r1 - rc,\n D = x11 * y10 - x10 * y11,\n d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)),\n cx0 = (D * dy - dx * d) / d2,\n cy0 = (-D * dx - dy * d) / d2,\n cx1 = (D * dy + dx * d) / d2,\n cy1 = (-D * dx + dy * d) / d2,\n dx0 = cx0 - x00,\n dy0 = cy0 - y00,\n dx1 = cx1 - x00,\n dy1 = cy1 - y00;\n\n // Pick the closer of the two intersection points.\n // TODO Is there a faster way to determine which intersection to use?\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n return {\n cx: cx0,\n cy: cy0,\n x01: -ox,\n y01: -oy,\n x11: cx0 * (r1 / r - 1),\n y11: cy0 * (r1 / r - 1)\n };\n}\n\nexport default function() {\n var innerRadius = arcInnerRadius,\n outerRadius = arcOuterRadius,\n cornerRadius = constant(0),\n padRadius = null,\n startAngle = arcStartAngle,\n endAngle = arcEndAngle,\n padAngle = arcPadAngle,\n context = null;\n\n function arc() {\n var buffer,\n r,\n r0 = +innerRadius.apply(this, arguments),\n r1 = +outerRadius.apply(this, arguments),\n a0 = startAngle.apply(this, arguments) - halfPi,\n a1 = endAngle.apply(this, arguments) - halfPi,\n da = abs(a1 - a0),\n cw = a1 > a0;\n\n if (!context) context = buffer = path();\n\n // Ensure that the outer radius is always larger than the inner radius.\n if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n // Is it a point?\n if (!(r1 > epsilon)) context.moveTo(0, 0);\n\n // Or is it a circle or annulus?\n else if (da > tau - epsilon) {\n context.moveTo(r1 * cos(a0), r1 * sin(a0));\n context.arc(0, 0, r1, a0, a1, !cw);\n if (r0 > epsilon) {\n context.moveTo(r0 * cos(a1), r0 * sin(a1));\n context.arc(0, 0, r0, a1, a0, cw);\n }\n }\n\n // Or is it a circular or annular sector?\n else {\n var a01 = a0,\n a11 = a1,\n a00 = a0,\n a10 = a1,\n da0 = da,\n da1 = da,\n ap = padAngle.apply(this, arguments) / 2,\n rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)),\n rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n rc0 = rc,\n rc1 = rc,\n t0,\n t1;\n\n // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n if (rp > epsilon) {\n var p0 = asin(rp / r0 * sin(ap)),\n p1 = asin(rp / r1 * sin(ap));\n if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n }\n\n var x01 = r1 * cos(a01),\n y01 = r1 * sin(a01),\n x10 = r0 * cos(a10),\n y10 = r0 * sin(a10);\n\n // Apply rounded corners?\n if (rc > epsilon) {\n var x11 = r1 * cos(a11),\n y11 = r1 * sin(a11),\n x00 = r0 * cos(a00),\n y00 = r0 * sin(a00),\n oc;\n\n // Restrict the corner radius according to the sector angle.\n if (da < pi && (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10))) {\n var ax = x01 - oc[0],\n ay = y01 - oc[1],\n bx = x11 - oc[0],\n by = y11 - oc[1],\n kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2),\n lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = min(rc, (r0 - lc) / (kc - 1));\n rc1 = min(rc, (r1 - lc) / (kc + 1));\n }\n }\n\n // Is the sector collapsed to a line?\n if (!(da1 > epsilon)) context.moveTo(x01, y01);\n\n // Does the sector’s outer ring have rounded corners?\n else if (rc1 > epsilon) {\n t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the outer ring just a circular arc?\n else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n // Is there no inner ring, and it’s a circular sector?\n // Or perhaps it’s an annular sector collapsed due to padding?\n if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n // Does the sector’s inner ring (or point) have rounded corners?\n else if (rc0 > epsilon) {\n t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the inner ring just a circular arc?\n else context.arc(0, 0, r0, a10, a00, cw);\n }\n\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n arc.centroid = function() {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;\n return [cos(a) * r, sin(a) * r];\n };\n\n arc.innerRadius = function(_) {\n return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n };\n\n arc.outerRadius = function(_) {\n return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n };\n\n arc.cornerRadius = function(_) {\n return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n };\n\n arc.padRadius = function(_) {\n return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n };\n\n arc.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n };\n\n arc.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n };\n\n arc.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n };\n\n arc.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n };\n\n return arc;\n}\n","function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function() {\n var x = pointX,\n y = pointY,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n function line(data) {\n var i,\n n = data.length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport line from \"./line.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function() {\n var x0 = pointX,\n x1 = null,\n y0 = constant(0),\n y1 = pointY,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n function area(data) {\n var i,\n j,\n k,\n n = data.length,\n d,\n defined0 = false,\n buffer,\n x0z = new Array(n),\n y0z = new Array(n);\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) {\n j = i;\n output.areaStart();\n output.lineStart();\n } else {\n output.lineEnd();\n output.lineStart();\n for (k = i - 1; k >= j; --k) {\n output.point(x0z[k], y0z[k]);\n }\n output.lineEnd();\n output.areaEnd();\n }\n }\n if (defined0) {\n x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);\n output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);\n }\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n function arealine() {\n return line().defined(defined).curve(curve).context(context);\n }\n\n area.x = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), x1 = null, area) : x0;\n };\n\n area.x0 = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), area) : x0;\n };\n\n area.x1 = function(_) {\n return arguments.length ? (x1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : x1;\n };\n\n area.y = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), y1 = null, area) : y0;\n };\n\n area.y0 = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), area) : y0;\n };\n\n area.y1 = function(_) {\n return arguments.length ? (y1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : y1;\n };\n\n area.lineX0 =\n area.lineY0 = function() {\n return arealine().x(x0).y(y0);\n };\n\n area.lineY1 = function() {\n return arealine().x(x0).y(y1);\n };\n\n area.lineX1 = function() {\n return arealine().x(x1).y(y0);\n };\n\n area.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), area) : defined;\n };\n\n area.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;\n };\n\n area.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;\n };\n\n return area;\n}\n","export default function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n","export default function(d) {\n return d;\n}\n","import constant from \"./constant.js\";\nimport descending from \"./descending.js\";\nimport identity from \"./identity.js\";\nimport {tau} from \"./math.js\";\n\nexport default function() {\n var value = identity,\n sortValues = descending,\n sort = null,\n startAngle = constant(0),\n endAngle = constant(tau),\n padAngle = constant(0);\n\n function pie(data) {\n var i,\n n = data.length,\n j,\n k,\n sum = 0,\n index = new Array(n),\n arcs = new Array(n),\n a0 = +startAngle.apply(this, arguments),\n da = Math.min(tau, Math.max(-tau, endAngle.apply(this, arguments) - a0)),\n a1,\n p = Math.min(Math.abs(da) / n, padAngle.apply(this, arguments)),\n pa = p * (da < 0 ? -1 : 1),\n v;\n\n for (i = 0; i < n; ++i) {\n if ((v = arcs[index[i] = i] = +value(data[i], i, data)) > 0) {\n sum += v;\n }\n }\n\n // Optionally sort the arcs by previously-computed values or by data.\n if (sortValues != null) index.sort(function(i, j) { return sortValues(arcs[i], arcs[j]); });\n else if (sort != null) index.sort(function(i, j) { return sort(data[i], data[j]); });\n\n // Compute the arcs! They are stored in the original data's order.\n for (i = 0, k = sum ? (da - n * pa) / sum : 0; i < n; ++i, a0 = a1) {\n j = index[i], v = arcs[j], a1 = a0 + (v > 0 ? v * k : 0) + pa, arcs[j] = {\n data: data[j],\n index: i,\n value: v,\n startAngle: a0,\n endAngle: a1,\n padAngle: p\n };\n }\n\n return arcs;\n }\n\n pie.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), pie) : value;\n };\n\n pie.sortValues = function(_) {\n return arguments.length ? (sortValues = _, sort = null, pie) : sortValues;\n };\n\n pie.sort = function(_) {\n return arguments.length ? (sort = _, sortValues = null, pie) : sort;\n };\n\n pie.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : startAngle;\n };\n\n pie.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : endAngle;\n };\n\n pie.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : padAngle;\n };\n\n return pie;\n}\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n (2 * that._x0 + that._x1) / 3,\n (2 * that._y0 + that._y1) / 3,\n (that._x0 + 2 * that._x1) / 3,\n (that._y0 + 2 * that._y1) / 3,\n (that._x0 + 4 * that._x1 + x) / 6,\n (that._y0 + 4 * that._y1 + y) / 6\n );\n}\n\nexport function Basis(context) {\n this._context = context;\n}\n\nBasis.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 3: point(this, this._x1, this._y1); // proceed\n case 2: this._context.lineTo(this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new Basis(context);\n}\n","import {Basis} from \"./basis.js\";\n\nfunction Bundle(context, beta) {\n this._basis = new Basis(context);\n this._beta = beta;\n}\n\nBundle.prototype = {\n lineStart: function() {\n this._x = [];\n this._y = [];\n this._basis.lineStart();\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n j = x.length - 1;\n\n if (j > 0) {\n var x0 = x[0],\n y0 = y[0],\n dx = x[j] - x0,\n dy = y[j] - y0,\n i = -1,\n t;\n\n while (++i <= j) {\n t = i / j;\n this._basis.point(\n this._beta * x[i] + (1 - this._beta) * (x0 + t * dx),\n this._beta * y[i] + (1 - this._beta) * (y0 + t * dy)\n );\n }\n }\n\n this._x = this._y = null;\n this._basis.lineEnd();\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\nexport default (function custom(beta) {\n\n function bundle(context) {\n return beta === 1 ? new Basis(context) : new Bundle(context, beta);\n }\n\n bundle.beta = function(beta) {\n return custom(+beta);\n };\n\n return bundle;\n})(0.85);\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n that._x1 + that._k * (that._x2 - that._x0),\n that._y1 + that._k * (that._y2 - that._y0),\n that._x2 + that._k * (that._x1 - x),\n that._y2 + that._k * (that._y1 - y),\n that._x2,\n that._y2\n );\n}\n\nexport function Cardinal(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinal.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: point(this, this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; this._x1 = x, this._y1 = y; break;\n case 2: this._point = 3; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new Cardinal(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import {epsilon} from \"../math.js\";\nimport {Cardinal} from \"./cardinal.js\";\n\nexport function point(that, x, y) {\n var x1 = that._x1,\n y1 = that._y1,\n x2 = that._x2,\n y2 = that._y2;\n\n if (that._l01_a > epsilon) {\n var a = 2 * that._l01_2a + 3 * that._l01_a * that._l12_a + that._l12_2a,\n n = 3 * that._l01_a * (that._l01_a + that._l12_a);\n x1 = (x1 * a - that._x0 * that._l12_2a + that._x2 * that._l01_2a) / n;\n y1 = (y1 * a - that._y0 * that._l12_2a + that._y2 * that._l01_2a) / n;\n }\n\n if (that._l23_a > epsilon) {\n var b = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a,\n m = 3 * that._l23_a * (that._l23_a + that._l12_a);\n x2 = (x2 * b + that._x1 * that._l23_2a - x * that._l12_2a) / m;\n y2 = (y2 * b + that._y1 * that._l23_2a - y * that._l12_2a) / m;\n }\n\n that._context.bezierCurveTo(x1, y1, x2, y2, that._x2, that._y2);\n}\n\nfunction CatmullRom(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRom.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: this.point(this._x2, this._y2); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; // proceed\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRom(context, alpha) : new Cardinal(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","function sign(x) {\n return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n var h0 = that._x1 - that._x0,\n h1 = x2 - that._x1,\n s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n p = (s0 * h1 + s1 * h0) / (h0 + h1);\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n var h = that._x1 - that._x0;\n return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n var x0 = that._x0,\n y0 = that._y0,\n x1 = that._x1,\n y1 = that._y1,\n dx = (x1 - x0) / 3;\n that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n this._context = context;\n}\n\nMonotoneX.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 =\n this._t0 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x1, this._y1); break;\n case 3: point(this, this._t0, slope2(this, this._t0)); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n var t1 = NaN;\n\n x = +x, y = +y;\n if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n }\n\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n this._t0 = t1;\n }\n}\n\nfunction MonotoneY(context) {\n this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n this._context = context;\n}\n\nReflectContext.prototype = {\n moveTo: function(x, y) { this._context.moveTo(y, x); },\n closePath: function() { this._context.closePath(); },\n lineTo: function(x, y) { this._context.lineTo(y, x); },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nexport function monotoneX(context) {\n return new MonotoneX(context);\n}\n\nexport function monotoneY(context) {\n return new MonotoneY(context);\n}\n","function Natural(context) {\n this._context = context;\n}\n\nNatural.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = [];\n this._y = [];\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n n = x.length;\n\n if (n) {\n this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]);\n if (n === 2) {\n this._context.lineTo(x[1], y[1]);\n } else {\n var px = controlPoints(x),\n py = controlPoints(y);\n for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) {\n this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]);\n }\n }\n }\n\n if (this._line || (this._line !== 0 && n === 1)) this._context.closePath();\n this._line = 1 - this._line;\n this._x = this._y = null;\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\n// See https://www.particleincell.com/2012/bezier-splines/ for derivation.\nfunction controlPoints(x) {\n var i,\n n = x.length - 1,\n m,\n a = new Array(n),\n b = new Array(n),\n r = new Array(n);\n a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1];\n for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1];\n a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n];\n for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1];\n a[n - 1] = r[n - 1] / b[n - 1];\n for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i];\n b[n - 1] = (x[n] + a[n - 1]) / 2;\n for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1];\n return [a, b];\n}\n\nexport default function(context) {\n return new Natural(context);\n}\n","function Step(context, t) {\n this._context = context;\n this._t = t;\n}\n\nStep.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = this._y = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: {\n if (this._t <= 0) {\n this._context.lineTo(this._x, y);\n this._context.lineTo(x, y);\n } else {\n var x1 = this._x * (1 - this._t) + x * this._t;\n this._context.lineTo(x1, this._y);\n this._context.lineTo(x1, y);\n }\n break;\n }\n }\n this._x = x, this._y = y;\n }\n};\n\nexport default function(context) {\n return new Step(context, 0.5);\n}\n\nexport function stepBefore(context) {\n return new Step(context, 0);\n}\n\nexport function stepAfter(context) {\n return new Step(context, 1);\n}\n","export var slice = Array.prototype.slice;\n","export default function(x) {\n return x;\n}\n","import {slice} from \"./array\";\nimport identity from \"./identity\";\n\nvar top = 1,\n right = 2,\n bottom = 3,\n left = 4,\n epsilon = 1e-6;\n\nfunction translateX(x) {\n return \"translate(\" + (x + 0.5) + \",0)\";\n}\n\nfunction translateY(y) {\n return \"translate(0,\" + (y + 0.5) + \")\";\n}\n\nfunction number(scale) {\n return function(d) {\n return +scale(d);\n };\n}\n\nfunction center(scale) {\n var offset = Math.max(0, scale.bandwidth() - 1) / 2; // Adjust for 0.5px offset.\n if (scale.round()) offset = Math.round(offset);\n return function(d) {\n return +scale(d) + offset;\n };\n}\n\nfunction entering() {\n return !this.__axis;\n}\n\nfunction axis(orient, scale) {\n var tickArguments = [],\n tickValues = null,\n tickFormat = null,\n tickSizeInner = 6,\n tickSizeOuter = 6,\n tickPadding = 3,\n k = orient === top || orient === left ? -1 : 1,\n x = orient === left || orient === right ? \"x\" : \"y\",\n transform = orient === top || orient === bottom ? translateX : translateY;\n\n function axis(context) {\n var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues,\n format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity) : tickFormat,\n spacing = Math.max(tickSizeInner, 0) + tickPadding,\n range = scale.range(),\n range0 = +range[0] + 0.5,\n range1 = +range[range.length - 1] + 0.5,\n position = (scale.bandwidth ? center : number)(scale.copy()),\n selection = context.selection ? context.selection() : context,\n path = selection.selectAll(\".domain\").data([null]),\n tick = selection.selectAll(\".tick\").data(values, scale).order(),\n tickExit = tick.exit(),\n tickEnter = tick.enter().append(\"g\").attr(\"class\", \"tick\"),\n line = tick.select(\"line\"),\n text = tick.select(\"text\");\n\n path = path.merge(path.enter().insert(\"path\", \".tick\")\n .attr(\"class\", \"domain\")\n .attr(\"stroke\", \"currentColor\"));\n\n tick = tick.merge(tickEnter);\n\n line = line.merge(tickEnter.append(\"line\")\n .attr(\"stroke\", \"currentColor\")\n .attr(x + \"2\", k * tickSizeInner));\n\n text = text.merge(tickEnter.append(\"text\")\n .attr(\"fill\", \"currentColor\")\n .attr(x, k * spacing)\n .attr(\"dy\", orient === top ? \"0em\" : orient === bottom ? \"0.71em\" : \"0.32em\"));\n\n if (context !== selection) {\n path = path.transition(context);\n tick = tick.transition(context);\n line = line.transition(context);\n text = text.transition(context);\n\n tickExit = tickExit.transition(context)\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { return isFinite(d = position(d)) ? transform(d) : this.getAttribute(\"transform\"); });\n\n tickEnter\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { var p = this.parentNode.__axis; return transform(p && isFinite(p = p(d)) ? p : position(d)); });\n }\n\n tickExit.remove();\n\n path\n .attr(\"d\", orient === left || orient == right\n ? (tickSizeOuter ? \"M\" + k * tickSizeOuter + \",\" + range0 + \"H0.5V\" + range1 + \"H\" + k * tickSizeOuter : \"M0.5,\" + range0 + \"V\" + range1)\n : (tickSizeOuter ? \"M\" + range0 + \",\" + k * tickSizeOuter + \"V0.5H\" + range1 + \"V\" + k * tickSizeOuter : \"M\" + range0 + \",0.5H\" + range1));\n\n tick\n .attr(\"opacity\", 1)\n .attr(\"transform\", function(d) { return transform(position(d)); });\n\n line\n .attr(x + \"2\", k * tickSizeInner);\n\n text\n .attr(x, k * spacing)\n .text(format);\n\n selection.filter(entering)\n .attr(\"fill\", \"none\")\n .attr(\"font-size\", 10)\n .attr(\"font-family\", \"sans-serif\")\n .attr(\"text-anchor\", orient === right ? \"start\" : orient === left ? \"end\" : \"middle\");\n\n selection\n .each(function() { this.__axis = position; });\n }\n\n axis.scale = function(_) {\n return arguments.length ? (scale = _, axis) : scale;\n };\n\n axis.ticks = function() {\n return tickArguments = slice.call(arguments), axis;\n };\n\n axis.tickArguments = function(_) {\n return arguments.length ? (tickArguments = _ == null ? [] : slice.call(_), axis) : tickArguments.slice();\n };\n\n axis.tickValues = function(_) {\n return arguments.length ? (tickValues = _ == null ? null : slice.call(_), axis) : tickValues && tickValues.slice();\n };\n\n axis.tickFormat = function(_) {\n return arguments.length ? (tickFormat = _, axis) : tickFormat;\n };\n\n axis.tickSize = function(_) {\n return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeInner = function(_) {\n return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeOuter = function(_) {\n return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter;\n };\n\n axis.tickPadding = function(_) {\n return arguments.length ? (tickPadding = +_, axis) : tickPadding;\n };\n\n return axis;\n}\n\nexport function axisTop(scale) {\n return axis(top, scale);\n}\n\nexport function axisRight(scale) {\n return axis(right, scale);\n}\n\nexport function axisBottom(scale) {\n return axis(bottom, scale);\n}\n\nexport function axisLeft(scale) {\n return axis(left, scale);\n}\n","import { SVGWidget } from \"@hpcc-js/common\";\nimport { axisBottom as d3AxisBottom, axisLeft as d3AxisLeft, axisRight as d3AxisRight, axisTop as d3AxisTop } from \"d3-axis\";\nimport { format as d3Format } from \"d3-format\";\nimport { scaleBand as d3ScaleBand, scaleLinear as d3ScaleLinear, scaleLog as d3ScaleLog, scalePow as d3ScalePow, scaleTime as d3ScaleTime } from \"d3-scale\";\nimport { select as d3Select } from \"d3-selection\";\nimport { timeFormat as d3TimeFormat, timeParse as d3TimeParse } from \"d3-time-format\";\n\nimport \"../src/Axis.css\";\n\nexport interface IOverflow {\n left: number;\n top: number;\n right: number;\n bottom: number;\n depth: number;\n tickOverlapModulus: number;\n}\n\nexport class Axis extends SVGWidget {\n _origType;\n _origTimePattern;\n\n protected parser;\n protected parserInvert;\n protected formatter: (date: Date) => string;\n protected d3Scale;\n protected d3Axis;\n protected d3Guides;\n protected _guideElement;\n protected svg;\n protected svgAxis;\n protected svgGuides;\n\n constructor(drawStartPosition: \"origin\" | \"center\" = \"origin\") {\n super();\n this._drawStartPos = drawStartPosition;\n\n this.updateScale();\n }\n\n lowValue() {\n return this.parse(this.low());\n }\n\n highValue() {\n return this.parse(this.high());\n }\n\n parse(d, forceNumeric?) {\n if (d instanceof Array) {\n return d.map(function (d2) {\n return this.parse(d2);\n }, this);\n }\n if (d !== undefined && d !== null) {\n if (this.parser) {\n return this.parser(typeof d === \"number\" ? d.toString() : d);\n }\n if (forceNumeric && typeof d === \"string\") {\n return +d;\n }\n }\n return d;\n }\n\n parseInvert(d) {\n if (d instanceof Array) {\n return d.map(function (d2) {\n return this.parseInvert(d2);\n }, this);\n }\n if (this.parserInvert && d) {\n return this.parserInvert(d);\n }\n return d;\n }\n\n format(d) {\n if (d instanceof Array) {\n return d.map(function (d2) {\n return this.format(d2);\n }, this);\n }\n if (d !== undefined && d !== null && this.formatter) {\n return this.formatter(d);\n }\n return d;\n }\n\n parseFormat(d) {\n return this.format(this.parse(d));\n }\n\n scalePos(d) {\n let retVal = this.d3Scale(this.parse(d));\n if (this.type() === \"ordinal\") {\n retVal += this.bandwidth() / 2;\n }\n return retVal;\n }\n\n bandwidth() {\n return this.d3Scale.bandwidth ? this.d3Scale.bandwidth() : 0;\n }\n\n isHorizontal() {\n switch (this.orientation()) {\n case \"left\":\n case \"right\":\n return false;\n default:\n }\n return true;\n }\n\n domain(_?) {\n if (!arguments.length) return this.d3Scale.domain();\n this.d3Scale.domain(_);\n return this;\n }\n\n range(_?) {\n if (!arguments.length) {\n if (this.d3Scale.rangeRoundBands) {\n return this.d3Scale.rangeExtent();\n } else if (this.d3Scale.rangeRound) {\n return this.d3Scale.range();\n }\n }\n if (this.d3Scale.rangeRoundBands) {\n this.d3Scale.rangeRoundBands(_, 0.1);\n } else if (this.d3Scale.rangeRound) {\n this.d3Scale.range(_);\n }\n return this;\n }\n\n invert(pos) {\n return this.d3Scale.invert(pos);\n }\n\n guideTarget(_) {\n this._guideElement = d3Select(_)\n .attr(\"class\", this._class)\n ;\n return this;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this.svg = element.append(\"g\");\n this.svgAxis = this.svg.append(\"g\")\n .attr(\"class\", \"axis\")\n ;\n this.svgGuides = (this._guideElement || element).append(\"g\")\n .attr(\"class\", \"guide\")\n ;\n }\n\n protected _prevOrientation;\n updateScale(): this {\n switch (this.type()) {\n case \"ordinal\":\n this.d3Scale = d3ScaleBand()\n .paddingInner(this.ordinalPaddingInner())\n .paddingOuter(this.ordinalPaddingOuter())\n ;\n if (this.ordinals_exists()) {\n this.d3Scale.domain(this.ordinals());\n }\n this.parser = null;\n if (this.ordinalMappings_exists()) {\n const mappings = this.ordinalMappings();\n this.formatter = (_: any) => mappings[_] || _;\n } else {\n this.formatter = null;\n }\n break;\n case \"linear\":\n this.d3Scale = d3ScaleLinear();\n if (this.low_exists() && this.high_exists()) {\n this.d3Scale.domain([this.lowValue(), this.highValue()]);\n }\n this.parser = null;\n this.formatter = this.tickFormat_exists() ? d3Format(this.tickFormat()) : null;\n break;\n case \"pow\":\n this.d3Scale = d3ScalePow()\n .exponent(this.powExponent())\n ;\n if (this.low_exists() && this.high_exists()) {\n this.d3Scale.domain([this.lowValue(), this.highValue()]);\n }\n this.parser = null;\n this.formatter = this.tickFormat_exists() ? d3Format(this.tickFormat()) : null;\n break;\n case \"log\":\n this.d3Scale = d3ScaleLog()\n .base(this.logBase())\n ;\n if (this.low_exists() && this.high_exists()) {\n this.d3Scale.domain([this.lowValue(), this.highValue()]);\n }\n this.parser = null;\n this.formatter = this.tickFormat_exists() ? d3Format(this.tickFormat()) : null;\n break;\n case \"time\":\n this.d3Scale = d3ScaleTime();\n if (this.low_exists() && this.high_exists()) {\n this.d3Scale.domain([this.lowValue(), this.highValue()]);\n }\n this.parser = this.timePattern_exists() ? d3TimeParse(this.timePattern()) : null;\n this.parserInvert = this.timePattern_exists() ? d3TimeFormat(this.timePattern()) : null;\n this.formatter = this.tickFormat_exists() ? d3TimeFormat(this.tickFormat()) : null;\n break;\n default:\n }\n if (this._prevOrientation !== this.orientation()) {\n switch (this.orientation()) {\n case \"left\":\n this.d3Axis = d3AxisLeft(this.d3Scale);\n this.d3Guides = d3AxisLeft(this.d3Scale);\n break;\n case \"top\":\n this.d3Axis = d3AxisTop(this.d3Scale);\n this.d3Guides = d3AxisTop(this.d3Scale);\n break;\n case \"right\":\n this.d3Axis = d3AxisRight(this.d3Scale);\n this.d3Guides = d3AxisRight(this.d3Scale);\n break;\n case \"bottom\":\n default:\n this.d3Axis = d3AxisBottom(this.d3Scale);\n this.d3Guides = d3AxisBottom(this.d3Scale);\n break;\n }\n this._prevOrientation = this.orientation();\n if (this.svgAxis) {\n this.svgAxis.html(\"\");\n }\n if (this.svgGuides) {\n this.svgGuides.html(\"\");\n }\n }\n\n if (this.extend()) {\n switch (this.type()) {\n case \"ordinal\":\n break;\n default:\n let length;\n let delta;\n let low;\n let high;\n let newLow;\n let newHigh;\n if (this.isHorizontal()) {\n length = this.width();\n this.d3Scale.range([0, length]);\n delta = length * this.extend() / 100;\n low = this.d3Scale.invert(0);\n newLow = this.d3Scale.invert(-delta);\n high = this.d3Scale.invert(length);\n newHigh = this.d3Scale.invert(length + delta);\n } else {\n length = this.height();\n this.d3Scale.range([length, 0]);\n delta = length * this.extend() / 100;\n low = this.d3Scale.invert(length);\n newLow = this.d3Scale.invert(length + delta);\n high = this.d3Scale.invert(0);\n newHigh = this.d3Scale.invert(-delta);\n }\n if (newLow === low) { // Edge case when there is only one item in the domain ---\n newLow = low - low * this.extend() / 100;\n }\n if (newHigh === high) { // Edge case when there is only one item in the domain ---\n newHigh = high + high * this.extend() / 100;\n }\n if ((Math as any).sign(low) !== (Math as any).sign(newLow)) {\n newLow = 0;\n }\n if ((Math as any).sign(high) !== (Math as any).sign(newHigh)) {\n newHigh = 0;\n }\n this.d3Scale.domain([newLow, newHigh]);\n break;\n }\n }\n\n this.d3Axis\n .scale(this.d3Scale)\n .tickFormat(this.formatter)\n .ticks(this.tickCount())\n ;\n this.d3Guides\n .scale(this.d3Scale)\n .tickSize(this.tickLength_exists() ? -this.tickLength() : 0)\n .tickFormat(\"\")\n .ticks(this.tickCount())\n ;\n const customTicks = this.ticks();\n if (customTicks.length) {\n this.d3Axis\n .tickValues(customTicks.map(d => this.parse(d.value)))\n .tickFormat((_d, i) => {\n return customTicks[i].label;\n });\n this.d3Guides\n .tickValues(customTicks.map(d => this.parse(d.value)));\n }\n return this;\n }\n\n adjustText(svg, tickOverlapModulus) {\n const isHoriztontal = this.isHorizontal();\n const isLeft = this.orientation() === \"left\";\n const isBottom = this.orientation() === \"bottom\";\n const context = this;\n const textSelection = svg.selectAll(\".tick > text\")\n .style(\"font-family\", this.fontFamily())\n .style(\"font-size\", this.fontSize_exists() ? this.fontSize() + \"px\" : null)\n ;\n if (this.overlapMode() === \"linebreak\") {\n if (this.type() === \"ordinal\") {\n textSelection\n .call(function () {\n return context.linebreak.apply(context, arguments);\n }, this.bandwidth())\n ;\n }\n } else if (this.overlapMode() === \"wrap\") {\n if (this.type() === \"ordinal\") {\n textSelection\n .call(function () {\n return context.wrap.apply(context, arguments);\n }, this.bandwidth())\n ;\n }\n } else {\n switch (isHoriztontal ? this.overlapMode() : \"none\") {\n case \"stagger\":\n textSelection\n .style(\"text-anchor\", \"middle\")\n .attr(\"dy\", function (_d, i) { return (isBottom ? 1 : -1) * ((isBottom ? 0.71 : 0) + i % tickOverlapModulus) + \"em\"; })\n .attr(\"dx\", 0)\n .attr(\"visibility\", null)\n .attr(\"transform\", \"rotate(0)\")\n ;\n break;\n case \"hide\":\n textSelection\n .style(\"text-anchor\", \"middle\")\n .attr(\"dy\", (isBottom ? 0.71 : 0) + \"em\")\n .attr(\"dx\", 0)\n .attr(\"visibility\", function (_d, i) { return i % tickOverlapModulus ? \"hidden\" : null; })\n .attr(\"transform\", \"rotate(0)\")\n ;\n break;\n case \"rotate\":\n const deg = -(this.labelRotation()) || 0;\n if (deg !== 0 && tickOverlapModulus > 1) {\n textSelection\n .each(function () {\n const elm = d3Select(this);\n const bbox = elm.node().getBBox();\n const dyOff = (isBottom ? 1 : -1) * Math.sin(Math.PI * (-Math.abs(deg) / 180));\n elm\n .style(\"text-anchor\", deg > 0 ? (isBottom ? \"start\" : \"end\") : (isBottom ? \"end\" : \"start\"))\n .attr(\"dy\", (bbox.height / 2 * dyOff) + \"px\")\n .attr(\"dx\", deg > 0 ? (isBottom ? \"0.71em\" : \"-0.71em\") : (isBottom ? \"-0.71em\" : \"0.71em\"))\n .attr(\"transform\", \"rotate(\" + deg + \")\")\n .attr(\"visibility\", null)\n ;\n })\n ;\n break;\n }\n /* falls through */\n default:\n textSelection\n .style(\"text-anchor\", isHoriztontal ? \"middle\" : isLeft ? \"end\" : \"start\")\n .attr(\"dy\", isHoriztontal ? ((isBottom ? 0.71 : 0) + \"em\") : \"0.32em\")\n .attr(\"dx\", 0)\n .attr(\"visibility\", null)\n .attr(\"transform\", \"rotate(0)\")\n ;\n }\n }\n }\n\n calcTickOverlapModulus(element) {\n let retVal = 1;\n switch (this.overlapMode()) {\n case \"rotate\":\n case \"stagger\":\n case \"hide\":\n const bboxArr = [];\n element.selectAll(\".tick > text\").each(function () {\n const bbox = this.getBoundingClientRect();\n for (let i = bboxArr.length - 1; i >= 0; --i) {\n if (bboxArr[i].right < bbox.left) {\n break;\n }\n if (bboxArr.length + 1 - i > retVal) {\n retVal = bboxArr.length + 1 - i;\n }\n }\n bboxArr.push(bbox);\n });\n break;\n default:\n }\n return retVal;\n }\n\n calcOverflow(element, ignoreText?): IOverflow {\n this.updateScale();\n if (this.hidden()) {\n return {\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n depth: 0,\n tickOverlapModulus: 1\n };\n }\n const isHorizontal = this.isHorizontal();\n this.range(isHorizontal ? [0, this.width()] : [this.height(), 0]);\n const tmpSvg = element.append(\"g\").attr(\"class\", this.classID());\n const tmpSvgG = tmpSvg.append(\"g\");\n tmpSvgG\n .attr(\"class\", isHorizontal ? \"x\" : \"y\")\n .call(this.d3Axis)\n ;\n if (ignoreText) {\n element.selectAll(\".tick > text\").remove();\n }\n\n const retVal: IOverflow = {\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n depth: 0,\n tickOverlapModulus: this.calcTickOverlapModulus(tmpSvgG)\n };\n this.adjustText(tmpSvgG, retVal.tickOverlapModulus);\n\n const bbox = tmpSvgG.node().getBBox();\n retVal.depth = isHorizontal ? bbox.height : bbox.width;\n switch (this.shrinkToFit()) {\n case \"low\":\n case \"both\":\n retVal.left = isHorizontal ? -bbox.x : 0;\n retVal.bottom = isHorizontal ? 0 : -(this.height() - (bbox.height + bbox.y));\n break;\n default:\n }\n switch (this.shrinkToFit()) {\n case \"high\":\n case \"both\":\n retVal.top = isHorizontal ? 0 : -bbox.y;\n retVal.right = isHorizontal ? -(this.width() - bbox.x - bbox.width) : 0;\n break;\n default:\n }\n tmpSvg.remove();\n\n return retVal;\n }\n\n wrap(_text, bandSize, re) {\n re = re || /\\s+/;\n const context = this;\n _text.each(function () {\n const text = d3Select(this);\n const words = text.text().split(re).reverse();\n let line = [];\n let lineNumber = 0;\n const lineHeight = 1.1;\n const x = text.attr(\"x\");\n const y = text.attr(\"y\");\n const fs = parseFloat(text.style(\"font-size\")) || 10;\n const maxLinesPerBand = Math.floor(bandSize / (fs * lineHeight)) - 1;\n const minWordsPerLine = context.isHorizontal() ? 1 : Math.ceil(words.length / maxLinesPerBand);\n const dy = parseFloat(text.attr(\"dy\"))\n ;\n let tspan = text.text(null).append(\"tspan\")\n .attr(\"x\", x)\n .attr(\"y\", y)\n .attr(\"dy\", dy + \"em\")\n ;\n let wordsOnLine = 0;\n let word = words.pop();\n while (word) {\n line.push(word);\n tspan.text(line.join(\" \"));\n wordsOnLine++;\n if ((tspan.node() as any).getComputedTextLength() > bandSize && wordsOnLine >= minWordsPerLine) {\n line.pop();\n tspan.text(line.join(\" \"));\n line = [word];\n tspan = text.append(\"tspan\").attr(\"x\", x).attr(\"y\", y).attr(\"dy\", ++lineNumber * lineHeight + dy + \"em\").text(word);\n wordsOnLine = 0;\n }\n word = words.pop();\n }\n if (!context.isHorizontal()) {\n text.selectAll(\"tspan\")\n .attr(\"y\", (-lineNumber / 2) + \"em\")\n ;\n }\n });\n }\n\n linebreak(text, bandSize) {\n this.wrap(text, bandSize, \"\\n\");\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this.svg.style(\"display\", this.hidden() ? \"none\" : null);\n\n const overlap = this.calcOverflow(element);\n\n const lowerPos: number = this.isHorizontal() ? overlap.left : this.height() - overlap.top - overlap.bottom;\n const upperPos: number = this.isHorizontal() ? this.width() - overlap.right - this.padding() : 0 + this.padding();\n\n this.range(this.reverse() ? [upperPos, lowerPos] : [lowerPos, upperPos]);\n\n const context = this;\n function doPosition(element) {\n element.attr(\"transform\", function () {\n switch (context.orientation()) {\n case \"left\":\n return \"translate(\" + overlap.depth + \", \" + overlap.top + \")\";\n case \"top\":\n return \"translate(0,\" + overlap.depth + \")\";\n case \"right\":\n return \"translate(\" + (context.width() - overlap.depth) + \", \" + overlap.top + \")\";\n case \"bottom\":\n return \"translate(0,\" + (context.height() - overlap.depth) + \")\";\n default:\n }\n return \"translate(0,0)\";\n });\n }\n this.svg\n // .attr(\"class\", this.isHorizontal() ? \"x\" : \"y\")\n .style(\"visibility\", this.type() === \"none\" ? \"hidden\" : null)\n .transition()\n .call(doPosition)\n ;\n if (this._guideElement) {\n this.svgGuides\n .transition()\n .call(doPosition)\n ;\n }\n this.svgAxis\n .call(this.d3Axis)\n ;\n this.adjustText(this.svgAxis, overlap.tickOverlapModulus);\n\n const svgLineBBox = {\n x: this.pos().x,\n width: this.width()\n };\n const svgText = this.svgAxis.selectAll(\".axisTitle\").data(this.title() ? [this.title()] : []);\n const svgTextUpdate = svgText.enter().append(\"text\")\n .attr(\"class\", \"axisTitle\")\n .merge(svgText)\n ;\n const svgTitleTransition = svgTextUpdate.transition()\n .attr(\"dx\", null)\n .style(\"text-anchor\", \"end\")\n ;\n switch (this.orientation()) {\n case \"left\":\n svgTitleTransition\n .attr(\"transform\", \"rotate(-90)\")\n .attr(\"x\", -2)\n .attr(\"y\", 2)\n .attr(\"dy\", \".71em\")\n ;\n break;\n case \"right\":\n svgTitleTransition\n .attr(\"transform\", \"rotate(-90)\")\n .attr(\"x\", -2)\n .attr(\"y\", 4)\n .attr(\"dx\", null)\n .attr(\"dy\", \"-.71em\")\n ;\n break;\n case \"top\":\n svgTitleTransition\n .attr(\"transform\", \"rotate(0)\")\n .attr(\"x\", svgLineBBox.width - 2)\n .attr(\"y\", 2)\n .attr(\"dx\", null)\n .attr(\"dy\", \".71em\")\n ;\n break;\n case \"bottom\":\n svgTitleTransition\n .attr(\"transform\", \"rotate(0)\")\n .attr(\"x\", svgLineBBox.width - 2)\n .attr(\"y\", -2)\n .attr(\"dy\", null)\n ;\n break;\n default:\n }\n svgTitleTransition\n .text(this.title_exists() ? this.title() : \"\")\n ;\n svgText.exit().remove();\n this.svgGuides\n .call(this.d3Guides)\n .selectAll(\".tick\").classed(\"guide-0\", d => d === 0 && this.low() < 0)\n ;\n }\n\n rerender() {\n this.svgAxis.call(this.d3Axis);\n this.svgGuides.call(this.d3Guides);\n }\n\n postUpdate(domNode, element) {\n super.postUpdate(domNode, element);\n if (this._guideElement) {\n this._guideElement\n .attr(\"transform\", this._element.attr(\"transform\"))\n ;\n }\n }\n}\nAxis.prototype._class += \" chart_Axis\";\n\nexport interface Axis {\n type(): string;\n type(_: string): this;\n type_exists(): boolean;\n timePattern(): string;\n timePattern(_: string): this;\n timePattern_exists(): boolean;\n reverse(): boolean;\n reverse(_: boolean): this;\n\n title(): string;\n title(_: string): this;\n title_exists(): boolean;\n orientation(): string;\n orientation(_: string): this;\n orientation_default(): string;\n orientation_default(_: string): this;\n powExponent(): number;\n powExponent(_: number): this;\n logBase(): number;\n logBase(_: number): this;\n ordinals(): string[];\n ordinals(_: string[]): this;\n ordinals_exists(): boolean;\n fontSize(): number;\n fontSize(_: number): this;\n fontSize_exists(): boolean;\n fontFamily(): string;\n fontFamily(_: string): this;\n tickCount(): number;\n tickCount(_: number): this;\n tickFormat(): string;\n tickFormat(_: string): this;\n tickFormat_exists(): boolean;\n tickFormat_reset(): void;\n tickLength(): number;\n tickLength(_: number): this;\n tickLength_exists(): boolean;\n ticks(): Array<{ value: string, label: string }>;\n ticks(_: Array<{ value: string, label: string }>): this;\n low(): any;\n low(_: any): this;\n low_exists(): boolean;\n high(): any;\n high(_: any): this;\n high_exists(): boolean;\n overlapMode(): string;\n overlapMode(_: string): this;\n overlapMode_default(): string;\n overlapMode_default(_: string): this;\n labelRotation(): number;\n labelRotation(_: number): this;\n shrinkToFit(): string;\n shrinkToFit(_: string): this;\n shrinkToFit_default(): string;\n shrinkToFit_default(_: string): this;\n extend(): number;\n extend(_: number): this;\n extend_default(): number;\n extend_default(_: number): this;\n hidden(): boolean;\n hidden(_: boolean): this;\n\n ordinalPaddingInner(): number;\n ordinalPaddingInner(_: number): this;\n ordinalPaddingOuter(): number;\n ordinalPaddingOuter(_: number): this;\n ordinalMappings(_: { [key: string]: string }): this;\n ordinalMappings(): { [key: string]: string };\n ordinalMappings_exists(): boolean;\n padding(): number;\n padding(_: number): this;\n}\n\nAxis.prototype.publish(\"type\", \"linear\", \"set\", \"Type\", [\"none\", \"ordinal\", \"linear\", \"pow\", \"log\", \"time\"]);\nAxis.prototype.publish(\"timePattern\", \"%Y-%m-%d\", \"string\", \"Time Series Pattern\", null, { disable: (w: any) => w.type() !== \"time\" });\nAxis.prototype.publish(\"reverse\", false, \"boolean\", \"Reverse\");\n\nAxis.prototype.publish(\"title\", null, \"string\", \"Title\");\nAxis.prototype.publish(\"orientation\", \"bottom\", \"set\", \"Placement/orientation of the axis\", [\"left\", \"top\", \"right\", \"bottom\"]);\nAxis.prototype.publish(\"powExponent\", 2, \"number\", \"Power exponent (disabled when type is not 'pow')\", null, { disable: (w: any) => w.type() !== \"pow\" });\nAxis.prototype.publish(\"logBase\", 10, \"number\", \"Logarithmic base (disabled when type is not 'log')\", null, { disable: (w: any) => w.type() !== \"log\" });\nAxis.prototype.publish(\"ordinals\", [], \"array\", \"Array of ordinal values to display (disabled when type is not 'ordinal')\", null, { disable: (w: any) => w.type() !== \"ordinal\" });\nAxis.prototype.publish(\"fontSize\", null, \"number\", \"Size of tick label font (pixels)\", null, { optional: true });\nAxis.prototype.publish(\"fontFamily\", null, \"string\", \"Font family of tick labels\", null, { optional: true });\nAxis.prototype.publish(\"tickCount\", null, \"number\", \"Number of ticks to display (disabled when type is 'ordinal')\", null, { optional: true, disable: (w: any) => w.type() === \"ordinal\" });\nAxis.prototype.publish(\"tickFormat\", null, \"string\", \"Format rules for tick text (disabled when type is 'ordinal')\", null, { optional: true, disable: (w: any) => w.type() === \"ordinal\" });\nAxis.prototype.publish(\"tickLength\", null, \"number\", \"Height (or width for left/right orientations) of the axis ticks (in pixels)\", null, { optional: true });\nAxis.prototype.publish(\"ticks\", [], \"array\", \"Custom tick labels\", null, { optional: true }); // TODO: What does this control?\nAxis.prototype.publish(\"low\", null, \"any\", \"Minimum tick value (disabled when type is ordinal)\", null, { optional: true, disable: (w: any) => w.type() === \"ordinal\" });\nAxis.prototype.publish(\"high\", null, \"any\", \"Maximum tick value (disabled when type is ordinal)\", null, { optional: true, disable: (w: any) => w.type() === \"ordinal\" });\nAxis.prototype.publish(\"overlapMode\", \"none\", \"set\", \"Specifies the behavior when tick labels overlap\", [\"none\", \"stagger\", \"hide\", \"rotate\", \"linebreak\", \"wrap\"]);\nAxis.prototype.publish(\"labelRotation\", 33, \"number\", \"Angle of rotation for tick labels (disabled when overlapMode is not 'rotate')\", null, { optional: true, disable: (w: any) => w.overlapMode() !== \"rotate\" });\nAxis.prototype.publish(\"shrinkToFit\", \"both\", \"set\", \"shrinkToFit\", [\"none\", \"low\", \"high\", \"both\"]); // TODO: What does this control?\nAxis.prototype.publish(\"extend\", 5, \"number\", \"Extend the axis range by this % beyond what is needed to display the data (disabled when type is 'ordinal')\", null, { optional: true, disable: (w: any) => w.type() === \"ordinal\" });\nAxis.prototype.publish(\"hidden\", false, \"boolean\", \"Hides axis when 'true'\");\n\nAxis.prototype.publish(\"ordinalPaddingInner\", 0.1, \"number\", \"Determines the ratio of the range that is reserved for blank space between band (0->1)\", null, { disable: (w: Axis) => w.type() !== \"ordinal\" });\nAxis.prototype.publish(\"ordinalPaddingOuter\", 0.1, \"number\", \"Determines the ratio of the range that is reserved for blank space before the first band and after the last band (0->1)\", null, { disable: (w: Axis) => w.type() !== \"ordinal\" });\nAxis.prototype.publish(\"ordinalMappings\", null, \"object\", \"Alternative label mappings (icons)\", null, { optional: true });\nAxis.prototype.publish(\"padding\", 0, \"number\", \"Padding space at top of axis (pixels)\", null, { optional: true });\n\nAxis.prototype._origType = Axis.prototype.type;\nAxis.prototype.type = function (_?: string) {\n const retVal = Axis.prototype._origType.apply(this, arguments);\n if (_ !== undefined) {\n this._type = _;\n this.updateScale();\n }\n return retVal;\n};\n\nAxis.prototype._origTimePattern = Axis.prototype.timePattern;\nAxis.prototype.timePattern = function (_?: string) {\n const retVal = Axis.prototype._origTimePattern.apply(this, arguments);\n if (_ !== undefined) {\n this._timePattern = _;\n this.updateScale();\n }\n return retVal;\n};\n","import { d3Event, select as d3Select, SVGWidget, Utility } from \"@hpcc-js/common\";\nimport { max as d3Max, min as d3Min } from \"d3-array\";\nimport { brush as d3Brush, brushSelection as d3BrushSelection, brushX as d3BrushX, brushY as d3BrushY } from \"d3-brush\";\nimport { hsl as d3Hsl } from \"d3-color\";\nimport { Axis } from \"./Axis.ts\";\n\nimport \"../src/XYAxis.css\";\n\nexport class XYAxis extends SVGWidget {\n protected domainAxis: Axis;\n protected valueAxis: Axis;\n protected xAxis: Axis;\n protected yAxis: Axis;\n protected xyBrush;\n protected xBrush;\n protected yBrush;\n protected margin;\n protected focusChart: XYAxis;\n\n constructor() {\n super();\n Utility.SimpleSelectionMixin.call(this);\n\n this._drawStartPos = \"origin\";\n\n this.domainAxis = new Axis()\n .classed({ domain: true })\n .orientation_default(\"bottom\")\n .type(\"ordinal\")\n .overlapMode_default(\"stagger\")\n .shrinkToFit_default(\"high\")\n .extend_default(0)\n ;\n this.valueAxis = new Axis()\n .classed({ value: true })\n .orientation_default(\"left\")\n .type(\"linear\")\n .shrinkToFit_default(\"high\")\n ;\n\n this.xyBrush = d3Brush()\n .on(\"end\", () => {\n return this.brushMoved();\n })\n .on(\"start.handle brush.handle end.handle\", () => {\n return this.brushMoved2();\n })\n ;\n this.xBrush = d3BrushX()\n .on(\"end\", () => {\n return this.brushMoved();\n })\n .on(\"start.handle brush.handle end.handle\", () => {\n return this.brushMoved2();\n })\n ;\n this.yBrush = d3BrushY()\n .on(\"end\", () => {\n return this.brushMoved();\n })\n .on(\"start.handle brush.handle end.handle\", () => {\n return this.brushMoved2();\n })\n ;\n }\n\n protected _prevBrush;\n resetSelection() {\n this._prevBrush = null;\n return this;\n }\n\n parseData(d) {\n return this.domainAxis.parse(d);\n }\n\n parseValue(d) {\n return this.valueAxis.parse(d, true);\n }\n\n formatData(d) {\n return this.domainAxis.format(d);\n }\n\n formatValue(d) {\n return this.valueAxis.format(d);\n }\n\n parsedData() {\n const retVal = this.data().map(function (row) {\n let prevValue = 0;\n return row.map(function (cell, idx) {\n if (idx === 0) {\n return this.parseData(cell);\n }\n if (idx >= this.columns().length) {\n return cell;\n }\n const _retVal = this.yAxisStacked() ? [prevValue, prevValue + this.parseValue(cell)] : this.parseValue(cell);\n prevValue += this.parseValue(cell);\n return _retVal;\n }, this);\n }, this);\n return retVal;\n }\n\n bandwidth() {\n return this.domainAxis.bandwidth();\n }\n\n protected svg;\n protected svgRegions;\n protected svgDomainGuide;\n protected svgValueGuide;\n protected svgData;\n protected svgDataClipRect;\n protected svgFocus;\n protected svgBrush;\n enter(domNode, element) {\n super.enter(domNode, element);\n this.svg = element.append(\"g\");\n this.svgRegions = element.append(\"g\");\n this.svgDomainGuide = this.svg.append(\"g\");\n this.svgValueGuide = this.svg.append(\"g\");\n this.svgData = this.svg.append(\"g\");\n\n this.svgDataClipRect = this.svg.append(\"clipPath\")\n .attr(\"id\", this.id() + \"_clippath\")\n .append(\"rect\")\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n ;\n this.svgData = this.svg.append(\"g\")\n .attr(\"clip-path\", \"url(#\" + this.id() + \"_clippath)\")\n ;\n this._selection.widgetElement(this.svgData);\n\n this.svgFocus = element.append(\"g\");\n\n this.domainAxis\n .target(this.svg.node())\n .guideTarget(this.svgDomainGuide.node())\n ;\n\n this.valueAxis\n .target(this.svg.node())\n .guideTarget(this.svgValueGuide.node())\n ;\n\n this.svgBrush = element.append(\"g\")\n .attr(\"class\", \"brush\")\n ;\n this.chartsEnter(this, this.svgData, 250);\n }\n\n resizeBrushHandle(d, width, height) {\n let e;\n let x;\n let y;\n if (d.type === \"e\" || d.type === \"w\") {\n e = +(d.type === \"e\");\n x = e ? 1 : -1;\n y = height / 3;\n return \"M\" + (0.5 * x) + \",\" + y +\n \"A6,6 0 0 \" + e + \" \" + (6.5 * x) + \",\" + (y + 6) +\n \"V\" + (2 * y - 6) +\n \"A6,6 0 0 \" + e + \" \" + (0.5 * x) + \",\" + (2 * y) +\n \"Z\" +\n \"M\" + (2.5 * x) + \",\" + (y + 8) +\n \"V\" + (2 * y - 8) +\n \"M\" + (4.5 * x) + \",\" + (y + 8) +\n \"V\" + (2 * y - 8);\n } else {\n e = +(d.type === \"s\");\n y = e ? 1 : -1;\n x = width / 3;\n return \"M\" + x + \", \" + (0.5 * y) +\n \"A6,6 0 0 \" + (e + 1) % 2 + \" \" + (x + 6) + \",\" + (6.5 * y) +\n \"H\" + (2 * x - 6) +\n \"A6,6 0 0 \" + (e + 1) % 2 + \" \" + (2 * x) + \",\" + (0.5 * y) +\n \"Z\" +\n \"M\" + (x + 8) + \",\" + (2.5 * y) +\n \"H\" + (2 * x - 8) +\n \"M\" + (x + 8) + \",\" + (4.5 * y) +\n \"H\" + (2 * x - 8);\n }\n }\n\n private _skipSelection = false;\n skipSelection(): boolean;\n skipSelection(_: boolean): this;\n skipSelection(_?: boolean): boolean | this {\n if (!arguments.length) return this._skipSelection;\n this._skipSelection = _;\n return this;\n }\n\n brushMoved() {\n if (this._skipSelection) return;\n let selected = [];\n const context = this;\n const currSel: any = d3BrushSelection(this.svgBrush.node());\n if (currSel) {\n selected = this.data().filter(function (d) {\n const pos = context.dataPos(d[0]);\n if (context.use2dSelection()) {\n const pos2 = context.valuePos(d[1]) + context.valueAxis.bandwidth() / 2;\n return pos >= currSel[0][0] && pos <= currSel[1][0] && pos2 >= currSel[0][1] && pos2 <= currSel[1][1];\n } else {\n return pos >= currSel[0] && pos <= currSel[1];\n }\n });\n }\n this.selection(selected);\n }\n\n brushMoved2() {\n const isHorizontal = this.orientation() === \"horizontal\";\n const handleTypes = this.use2dSelection() ? [] : isHorizontal ? [{ type: \"w\" }, { type: \"e\" }] : [{ type: \"n\" }, { type: \"s\" }];\n const handlePath = this.svgBrush.selectAll(\".handle--custom\").data(handleTypes);\n const s = d3Event()?.selection;\n if (s == null) {\n handlePath.attr(\"display\", \"none\");\n } else if (isHorizontal) {\n handlePath.attr(\"display\", null).attr(\"transform\", (_d, i) => \"translate(\" + s[i] + \",\" + 0 + \")\");\n } else {\n handlePath.attr(\"display\", null).attr(\"transform\", (_d, i) => \"translate(\" + 0 + \", \" + s[i] + \")\");\n }\n }\n\n dataPos(d) {\n return this.domainAxis.scalePos(d);\n }\n\n valuePos(d) {\n return this.valueAxis.scalePos(d);\n }\n\n getAxisSize(host: XYAxis): { width: number, height: number } {\n return {\n width: !this.xAxis ? host.xAxis.width() : this.xAxis.width(),\n height: !this.yAxis ? host.yAxis.width() : this.yAxis.height()\n };\n }\n\n calcMargin(_domNode, element, isHorizontal) {\n const margin = {\n top: !isHorizontal && this.selectionMode() ? 10 : 2,\n right: isHorizontal && (this.selectionMode() || this.xAxisFocus()) ? 10 : 2,\n bottom: (this.xAxisFocus() ? this.xAxisFocusHeight() : 0) + 2,\n left: 2\n };\n const width = this.width() - margin.left - margin.right;\n const height = this.height() - margin.top - margin.bottom;\n\n let xRight = 0;\n let xHeight = 30;\n let yTop = 0;\n let yWidth = 30;\n for (let i = 0; i < 10; ++i) {\n this.xAxis.width(width - yWidth).height(0);\n const xAxisOverlap = this.xAxis.calcOverflow(element);\n const newXHeight = xAxisOverlap.depth;\n\n this.yAxis.width(0).height(height - xHeight);\n const yAxisOverlap = this.yAxis.calcOverflow(element);\n const newYWidth = yAxisOverlap.depth;\n\n xRight = xAxisOverlap.right;\n yTop = yAxisOverlap.top;\n\n if (newXHeight === xHeight && newYWidth === yWidth) {\n break;\n }\n xHeight = newXHeight;\n yWidth = newYWidth;\n }\n this.xAxis\n .x(width / 2 + yWidth / 2 + margin.left)\n .y(height + margin.top)\n .width(width - yWidth)\n ;\n this.yAxis\n .x(margin.left)\n .y(height / 2 - xHeight / 2 + margin.top)\n .height(height - xHeight)\n ;\n margin.left += yWidth;\n margin.top += yTop;\n margin.right += xRight;\n margin.bottom += xHeight;\n return margin;\n }\n\n updateRegions(_domNode, _element, isHorizontal) {\n const context = this;\n\n const regions = this.svgRegions.selectAll(\".region\").data(this.regions());\n regions.enter().append(\"rect\")\n .attr(\"class\", \"region\")\n ;\n if (isHorizontal) {\n regions\n .attr(\"x\", function (d) { return context.dataPos(d.x0); })\n .attr(\"y\", 0)\n .attr(\"width\", function (d) { return context.dataPos(d.x1) - context.dataPos(d.x0); })\n .attr(\"height\", this.height())\n .style(\"stroke\", function (d) { return context._palette(d.colorID); })\n .style(\"fill\", function (d) { return d3Hsl(context._palette(d.colorID)).brighter(); })\n ;\n } else {\n regions\n .attr(\"x\", 0)\n .attr(\"y\", function (d) { return context.dataPos(d.x0); })\n .attr(\"width\", this.width())\n .attr(\"height\", function (d) { return context.dataPos(d.x0) - context.dataPos(d.x1); })\n .style(\"stroke\", function (d) { return context._palette(d.colorID); })\n .style(\"fill\", function (d) { return d3Hsl(context._palette(d.colorID)).brighter(); })\n ;\n }\n regions.exit().remove();\n }\n\n protected _prevXAxisType;\n update(domNode, element) {\n super.update(domNode, element);\n const context = this;\n\n const isHorizontal = this.orientation() === \"horizontal\";\n this.updateRegions(domNode, element, isHorizontal);\n\n this.domainAxis\n .orientation(isHorizontal ? \"bottom\" : \"left\")\n .title(this.xAxisTitle_exists() ? this.xAxisTitle() : this.columns()[0])\n ;\n this.valueAxis\n .orientation(isHorizontal ? \"left\" : \"bottom\")\n ;\n this.xAxis = isHorizontal ? this.domainAxis : this.valueAxis;\n this.yAxis = isHorizontal ? this.valueAxis : this.domainAxis;\n\n // Update Domain ---\n switch (this.xAxisType()) {\n case \"ordinal\":\n const colLen = this.columns().length;\n const ordinalMappings = {};\n this.domainAxis\n .ordinals(this.data().map(function (d) {\n ordinalMappings[d[0]] = context.xAxisOrdinalMapping(d, d[colLen]);\n return d[0];\n }))\n .ordinalMappings(ordinalMappings)\n ;\n\n break;\n default:\n const domainMin = this.xAxisDomainLow() ? this.xAxisDomainLow() : this.domainAxis.parseInvert(d3Min(this.parsedData(), function (data) {\n return data[0];\n }));\n const domainMax = this.xAxisDomainHigh() ? this.xAxisDomainHigh() : this.domainAxis.parseInvert(d3Max(this.parsedData(), function (data) {\n return data[0];\n }));\n if (domainMin !== undefined && domainMax !== undefined) {\n this.domainAxis\n .low(domainMin)\n .high(domainMax)\n ;\n }\n break;\n }\n\n const min = this.yAxisDomainLow() ? this.yAxisDomainLow() : this.valueAxis.parseInvert(d3Min(this.parsedData(), function (data: any[]) {\n return d3Min(data.filter(function (cell, i) { return i > 0 && context.columns()[i] && context.columns()[i].indexOf(\"__\") !== 0 && cell !== null; }), function (d) { return d instanceof Array ? d[0] : d; });\n }));\n const max = this.yAxisDomainHigh() ? this.yAxisDomainHigh() : this.valueAxis.parseInvert(d3Max(this.parsedData(), function (data: any[]) {\n return d3Max(data.filter(function (cell, i) { return i > 0 && context.columns()[i] && context.columns()[i].indexOf(\"__\") !== 0 && cell !== null; }), function (d) { return d instanceof Array ? d[1] : d; });\n }));\n this.valueAxis\n .low(min)\n .high(max)\n ;\n\n // Calculate Margins ---\n this.margin = this.calcMargin(domNode, element, isHorizontal);\n\n // Update Range ---\n let width = this.width() - this.margin.left - this.margin.right;\n if (width < 0) width = 0;\n let height = this.height() - this.margin.top - this.margin.bottom;\n if (height < 0) height = 0;\n const maxCurrExtent = isHorizontal ? width : height;\n const maxOtherExtent = isHorizontal ? height : width;\n\n // Render ---\n this.domainAxis\n .tickLength(this.xAxisGuideLines() ? maxOtherExtent : 0)\n .render()\n ;\n this.valueAxis\n .tickLength(this.yAxisGuideLines() ? maxCurrExtent : 0)\n .render()\n ;\n\n this.svgDataClipRect\n .attr(\"width\", width)\n .attr(\"height\", height)\n ;\n this.svgData.transition()\n .attr(\"transform\", \"translate(\" + this.margin.left + \",\" + this.margin.top + \")\")\n ;\n\n this.updateBrush(width, height, maxCurrExtent, isHorizontal);\n this.updateFocusChart(domNode, element, this.margin, width, height, isHorizontal);\n this.chartsUpdate(width, height, 250);\n if (this.selectionMode()) {\n return this.brushMoved();\n }\n }\n\n updateBrush(width, height, maxCurrExtent, isHorizontal) {\n const currBrush = this.use2dSelection() ? this.xyBrush : isHorizontal ? this.xBrush : this.yBrush;\n const prevBrushSel: any = d3BrushSelection(this.svgBrush.node());\n currBrush.extent([[0, 0], [width, height]]);\n this.svgBrush\n .attr(\"transform\", \"translate(\" + this.margin.left + \", \" + this.margin.top + \")\")\n .style(\"display\", this.selectionMode() ? null : \"none\")\n .call(currBrush)\n ;\n const handleTypes = this.use2dSelection() ? [] : isHorizontal ? [{ type: \"w\" }, { type: \"e\" }] : [{ type: \"n\" }, { type: \"s\" }];\n const handlePath = this.svgBrush.selectAll(\".handle--custom\").data(handleTypes);\n handlePath.enter().append(\"path\")\n .attr(\"class\", \"handle--custom\")\n .merge(handlePath)\n .attr(\"cursor\", isHorizontal ? \"ew-resize\" : \"ns-resize\")\n .attr(\"d\", (d) => this.resizeBrushHandle(d, width, height))\n ;\n\n if (this.selectionMode()) {\n if (this._prevXAxisType !== this.xAxisType()) {\n this._prevXAxisType = this.xAxisType();\n this._prevBrush = null;\n }\n if (this._prevBrush) {\n if (prevBrushSel) {\n if (this._prevBrush.orientation !== this.orientation()) {\n const tmp = prevBrushSel[0];\n prevBrushSel[0] = this._prevBrush.maxCurrExtent - prevBrushSel[1];\n prevBrushSel[1] = this._prevBrush.maxCurrExtent - tmp;\n }\n const ratio = maxCurrExtent / this._prevBrush.maxCurrExtent;\n if (ratio !== 1) {\n this.svgBrush.transition()\n .on(\"start\", function () {\n currBrush.on(\"end\", null);\n })\n .call(currBrush.move, [prevBrushSel[0] * ratio, prevBrushSel[1] * ratio])\n .on(\"end\", () => {\n currBrush.on(\"end\", () => {\n return this.brushMoved();\n });\n })\n ;\n }\n }\n } else {\n this.svgBrush\n .call(currBrush.move, [0, maxCurrExtent])\n ;\n }\n this._prevBrush = {\n orientation: this.orientation(),\n maxCurrExtent\n };\n }\n }\n\n updateFocusChart(domNode, element, margin, width, height, isHorizontal) {\n const context: XYAxis = this;\n const focusChart = this.svgFocus.selectAll(\"#\" + this.id() + \"_focusChart\").data(this.xAxisFocus() ? [true] : []);\n focusChart.enter().append(\"g\")\n .attr(\"id\", this.id() + \"_focusChart\")\n .attr(\"class\", \"focus\")\n .each(function () {\n context.focusChart = new (context.constructor as any)()\n .target(this)\n ;\n context.focusChart.xBrush\n .on(\"brush.focus\", function () {\n context.syncAxis(width);\n context.chartsUpdate(width, height, 0);\n })\n ;\n context.focusChart\n .layers(context.layers().map((w: any) => new w.constructor()))\n ;\n })\n .merge(focusChart)\n .each(function (this: SVGElement) {\n context.copyPropsTo(context.focusChart, [\"layers\"]);\n let layerIdx = 0;\n for (const layer of context.layers()) {\n layer.copyPropsTo(context.focusChart.layers()[layerIdx]);\n layerIdx++;\n }\n context.focusChart\n .xAxisFocus(false)\n .selectionMode(true)\n .skipSelection(true)\n .orientation(\"horizontal\")\n .xAxisGuideLines(false)\n .xAxisDomainLow(null)\n .xAxisDomainHigh(null)\n .yAxisGuideLines(false)\n .x(context.width() / 2)\n .y(context.height() - context.xAxisFocusHeight() / 2)\n .width(context.width())\n .height(context.xAxisFocusHeight())\n .columns(context.columns())\n .data(context.data())\n .render()\n ;\n context.syncAxis(width);\n })\n ;\n focusChart.exit()\n .each(function () {\n if (context.focusChart) {\n context.focusChart\n .target(null)\n ;\n delete context.focusChart;\n }\n })\n .remove()\n ;\n }\n\n syncAxis(width: number) {\n const currSel = d3BrushSelection(this.focusChart.svgBrush.node()) as [number, number];\n if (currSel) {\n if (this.focusChart.xAxisType() !== \"ordinal\") {\n this.xAxis.domain([this.focusChart.xAxis.invert(currSel[0]), this.focusChart.xAxis.invert(currSel[1])]);\n } else {\n const brushWidth = currSel[1] - currSel[0];\n const scale = brushWidth / width;\n this.xAxis.range([-currSel[0] / scale, (width - currSel[0]) / scale]);\n }\n this.xAxis.rerender();\n }\n }\n\n // Layers ---\n layerColumns(host: XYAxis): string[] {\n const masterColumns = host.columns();\n const retVal = super.columns().filter(col => col !== masterColumns[0]);\n if (!retVal.length) {\n return masterColumns;\n }\n return [masterColumns[0], ...retVal];\n }\n\n layerColumnIndices(host: XYAxis): number[] {\n const masterColumns = host.columns();\n const layerColumns = this.layerColumns(host);\n return layerColumns.map(col => masterColumns.indexOf(col));\n }\n\n layerColumnIndex(host: XYAxis, column: string): number {\n const masterColumns = host.columns();\n return masterColumns.indexOf(column);\n }\n\n layerData(host?: XYAxis): any[][] {\n if (arguments.length === 1) {\n const indices = this.layerColumnIndices(host);\n return host.data().map(row => {\n const retVal = indices.map(idx => row[idx]);\n (retVal as any).__hpcc_origRow = row;\n return retVal;\n });\n }\n throw new Error(\"Setting data on XYAxisLayer is not supported.\");\n }\n\n layerEnter(host: XYAxis, element, duration: number = 250) {\n }\n\n layerUpdate(host: XYAxis, element, duration: number = 250) {\n }\n\n layerExit(host: XYAxis, element, duration: number = 250) {\n }\n\n chartsEnter(host: XYAxis, element, duration: number = 250) {\n this.layerEnter(this, element, duration);\n for (const w of this.layers()) {\n w[\"__xyAxisElement\"] = element.append(\"g\")\n .attr(\"class\", w.class())\n ;\n w\n .target(w[\"__xyAxisElement\"].node() as SVGElement)\n .layerEnter(this, element, duration)\n ;\n }\n }\n\n chartsUpdate(width, height, duration): void {\n this.layerUpdate(this, this.svgData, duration);\n for (const w of this.layers()) {\n w\n .resize({ width, height })\n .layerUpdate(this, w[\"__xyAxisElement\"], duration)\n ;\n }\n }\n\n exit(domNode, element) {\n this.valueAxis.target(null);\n this.domainAxis.target(null);\n super.exit(domNode, element);\n }\n\n selection(_selected) {\n const context = this;\n this._selection.widgetElement().selectAll(\".selected,.deselected\")\n .each(function (d) {\n const selected = _selected.indexOf(d.origRow) >= 0;\n d3Select(this)\n .classed(\"selected\", selected)\n .classed(\"deselected\", !selected)\n .attr(\"filter\", context._selection.svgGlowID() && selected ? `url(#${context._selection.svgGlowID()})` : null)\n ;\n })\n ;\n\n const selRows = _selected.map(d => {\n return this.rowToObj(d);\n });\n setTimeout(() => {\n this.click(selRows, \"\", true);\n }, 0);\n }\n\n // XYAxis ---\n xAxisOrdinalMapping(origRow, lparam) {\n return origRow[0];\n }\n\n // Events ---\n click(row, column, selected) {\n // console.log(\"Click: \" + JSON.stringify(row) + \", \" + column + \", \" + selected);\n }\n\n // Selection ---\n _selection: Utility.SimpleSelection;\n}\nXYAxis.prototype._class += \" chart_XYAxis\";\nXYAxis.prototype.mixin(Utility.SimpleSelectionMixin);\n\nexport interface XYAxis {\n _palette;\n orientation(): \"horizontal\" | \"vertical\";\n orientation(_: \"horizontal\" | \"vertical\"): this;\n orientation_default(_: string);\n pointSizeColumn(): string;\n pointSizeColumn(_: string): this;\n pointSizeColumn_exists(): boolean;\n minPointSize(): number;\n minPointSize(_: number): this;\n maxPointSize(): number;\n maxPointSize(_: number): this;\n use2dSelection(): boolean;\n use2dSelection(_: boolean): this;\n selectionMode(): boolean;\n selectionMode(_: boolean): this;\n xAxisTitle(): string;\n xAxisTitle(_: string): this;\n xAxisTitle_exists(): boolean;\n xAxisTickCount(): number;\n xAxisTickCount(_: number): this;\n xAxisTickFormat(): string;\n xAxisTickFormat(_: string): this;\n xAxisTicks(): Array<{ value: string, label: string }>;\n xAxisTicks(_: Array<{ value: string, label: string }>): this;\n xAxisType(): \"none\" | \"ordinal\" | \"linear\" | \"pow\" | \"log\" | \"time\";\n xAxisType(_: \"none\" | \"ordinal\" | \"linear\" | \"pow\" | \"log\" | \"time\"): this;\n xAxisType_default(_: string);\n xAxisTypeTimePattern(): string;\n xAxisTypeTimePattern(_: string): this;\n xAxisDomainLow(): number | string;\n xAxisDomainLow(_: number | string): this;\n xAxisDomainHigh(): number | string;\n xAxisDomainHigh(_: number | string): this;\n xAxisFontSize(): number | string;\n xAxisFontSize(_: number | string): this;\n xAxisFontFamily(): string;\n xAxisFontFamily(_: string): this;\n xAxisOrdinalPaddingInner(): number;\n xAxisOrdinalPaddingInner(_: number): this;\n xAxisOrdinalPaddingOuter(): number;\n xAxisOrdinalPaddingOuter(_: number): this;\n xAxisOverlapMode(): \"none\" | \"stagger\" | \"hide\" | \"rotate\" | \"linebreak\" | \"wrap\";\n xAxisOverlapMode(_: \"none\" | \"stagger\" | \"hide\" | \"rotate\" | \"linebreak\" | \"wrap\"): this;\n xAxisLabelRotation(): number;\n xAxisLabelRotation(_: number): this;\n xAxisDomainPadding(): number;\n xAxisDomainPadding(_: number): this;\n xAxisGuideLines(): boolean;\n xAxisGuideLines(_: boolean): this;\n xAxisGuideLines_default(_: boolean);\n xAxisFocus(): boolean;\n xAxisFocus(_: boolean): this;\n xAxisFocusHeight(): number;\n xAxisFocusHeight(_: number): this;\n xAxisHidden(): boolean;\n xAxisHidden(_: boolean): this;\n xAxisHidden_default(_: boolean);\n yAxisTitle(): string;\n yAxisTitle(_: string): this;\n yAxisTickCount(): number;\n yAxisTickCount(_: number): this;\n yAxisTickFormat(): string;\n yAxisTickFormat(_: string): this;\n yAxisTicks(): Array<{ value: string, label: string }>;\n yAxisTicks(_: Array<{ value: string, label: string }>): this;\n yAxisType(): \"none\" | \"ordinal\" | \"linear\" | \"pow\" | \"log\" | \"time\";\n yAxisType(_: \"none\" | \"ordinal\" | \"linear\" | \"pow\" | \"log\" | \"time\"): this;\n yAxisType_default(_: string);\n yAxisTypeTimePattern(): string;\n yAxisTypeTimePattern(_: string): this;\n yAxisTypePowExponent(): number;\n yAxisTypePowExponent(_: number): this;\n yAxisTypeLogBase(): number;\n yAxisTypeLogBase(_: number): this;\n yAxisStacked(): boolean;\n yAxisStacked(_: boolean): this;\n yAxisDomainLow(): number | string;\n yAxisDomainLow(_: number | string): this;\n yAxisDomainHigh(): number | string;\n yAxisDomainHigh(_: number | string): this;\n yAxisDomainPadding(): number;\n yAxisDomainPadding(_: number): this;\n yAxisGuideLines(): boolean;\n yAxisGuideLines(_: boolean): this;\n yAxisGuideLines_default(_: boolean);\n yAxisHidden(): boolean;\n yAxisHidden(_: boolean): this;\n yAxisHidden_default(_: boolean);\n regions(): object[];\n regions(_: object[]): this;\n layers(): XYAxis[];\n layers(_: XYAxis[]): this;\n xAxisPadding(): number;\n xAxisPadding(_: number): this;\n yAxisPadding(): number;\n yAxisPadding(_: number): this;\n}\n\nXYAxis.prototype.publish(\"orientation\", \"horizontal\", \"set\", \"Selects orientation for the axis\", [\"horizontal\", \"vertical\"]);\nXYAxis.prototype.publish(\"pointSizeColumn\", null, \"string\", \"pointSizeColumn\", null, { optional: true });\nXYAxis.prototype.publish(\"minPointSize\", 6, \"number\", \"minPointSize\");\nXYAxis.prototype.publish(\"maxPointSize\", 26, \"number\", \"maxPointSize\");\nXYAxis.prototype.publish(\"use2dSelection\", false, \"boolean\", \"2D Range Selector\");\nXYAxis.prototype.publish(\"selectionMode\", false, \"boolean\", \"Range Selector\");\nXYAxis.prototype.publishProxy(\"xAxisTitle\", \"domainAxis\", \"title\");\nXYAxis.prototype.publishProxy(\"xAxisTickCount\", \"domainAxis\", \"tickCount\");\nXYAxis.prototype.publishProxy(\"xAxisTickFormat\", \"domainAxis\", \"tickFormat\");\nXYAxis.prototype.publishProxy(\"xAxisTicks\", \"domainAxis\", \"ticks\");\nXYAxis.prototype.publishProxy(\"xAxisType\", \"domainAxis\", \"type\");\nXYAxis.prototype.publishProxy(\"xAxisTypeTimePattern\", \"domainAxis\", \"timePattern\");\nXYAxis.prototype.publish(\"xAxisDomainLow\", null, \"string\", \"X-Axis Low\", null, { optional: true, disable: (w: XYAxis) => w.xAxisType() === \"ordinal\" });\nXYAxis.prototype.publish(\"xAxisDomainHigh\", null, \"string\", \"X-Axis High\", null, { optional: true, disable: (w: XYAxis) => w.xAxisType() === \"ordinal\" });\nXYAxis.prototype.publishProxy(\"xAxisFontSize\", \"domainAxis\", \"fontSize\");\nXYAxis.prototype.publishProxy(\"xAxisFontFamily\", \"domainAxis\", \"fontFamily\");\nXYAxis.prototype.publishProxy(\"xAxisOrdinalPaddingInner\", \"domainAxis\", \"ordinalPaddingInner\");\nXYAxis.prototype.publishProxy(\"xAxisOrdinalPaddingOuter\", \"domainAxis\", \"ordinalPaddingOuter\");\nXYAxis.prototype.publishProxy(\"xAxisOverlapMode\", \"domainAxis\", \"overlapMode\");\nXYAxis.prototype.publishProxy(\"xAxisLabelRotation\", \"domainAxis\", \"labelRotation\");\nXYAxis.prototype.publishProxy(\"xAxisDomainPadding\", \"domainAxis\", \"extend\");\nXYAxis.prototype.publish(\"xAxisGuideLines\", false, \"boolean\", \"Y-Axis Guide Lines\");\nXYAxis.prototype.publish(\"xAxisFocus\", false, \"boolean\", \"X-Axis Focus\", null, { disable: (w: any) => w.orientation() !== \"horizontal\" });\nXYAxis.prototype.publish(\"xAxisFocusHeight\", 80, \"number\", \"X-Axis Focus Height\", null, { disable: (w: any) => !w.xAxisFocus() });\nXYAxis.prototype.publishProxy(\"xAxisHidden\", \"domainAxis\", \"hidden\");\nXYAxis.prototype.publishProxy(\"yAxisFontSize\", \"valueAxis\", \"fontSize\");\nXYAxis.prototype.publishProxy(\"yAxisFontFamily\", \"valueAxis\", \"fontFamily\");\nXYAxis.prototype.publishProxy(\"yAxisTitle\", \"valueAxis\", \"title\");\nXYAxis.prototype.publishProxy(\"yAxisTickCount\", \"valueAxis\", \"tickCount\");\nXYAxis.prototype.publishProxy(\"yAxisTickFormat\", \"valueAxis\", \"tickFormat\");\nXYAxis.prototype.publishProxy(\"yAxisTicks\", \"valueAxis\", \"ticks\");\nXYAxis.prototype.publishProxy(\"yAxisType\", \"valueAxis\", \"type\");\nXYAxis.prototype.publishProxy(\"yAxisTypeTimePattern\", \"valueAxis\", \"timePattern\");\nXYAxis.prototype.publishProxy(\"yAxisTypePowExponent\", \"valueAxis\", \"powExponent\");\nXYAxis.prototype.publishProxy(\"yAxisTypeLogBase\", \"valueAxis\", \"logBase\");\nXYAxis.prototype.publish(\"yAxisStacked\", false, \"boolean\", \"Stacked Chart\", null, { tags: [\"Basic\"], disable: (w: any) => w.xAxisType() !== \"ordinal\" || w._class.indexOf(\"chart_Column\") < 0 });\nXYAxis.prototype.publish(\"yAxisDomainLow\", null, \"string\", \"Y-Axis Low\", null, { optional: true, disable: (w: any) => w.yAxisType() === \"ordinal\" });\nXYAxis.prototype.publish(\"yAxisDomainHigh\", null, \"string\", \"Y-Axis High\", null, { optional: true, disable: (w: any) => w.yAxisType() === \"ordinal\" });\nXYAxis.prototype.publishProxy(\"yAxisDomainPadding\", \"valueAxis\", \"extend\");\nXYAxis.prototype.publish(\"yAxisGuideLines\", true, \"boolean\", \"Y-Axis Guide Lines\");\nXYAxis.prototype.publishProxy(\"yAxisHidden\", \"valueAxis\", \"hidden\");\nXYAxis.prototype.publish(\"regions\", [], \"array\", \"Regions\");\nXYAxis.prototype.publish(\"layers\", [], \"widgetArray\", \"Layers\", null, { render: false });\nXYAxis.prototype.publishProxy(\"xAxisPadding\", \"domainAxis\", \"padding\");\nXYAxis.prototype.publishProxy(\"yAxisPadding\", \"valueAxis\", \"padding\");\n","import { INDChart, ITooltip } from \"@hpcc-js/api\";\nimport { InputField } from \"@hpcc-js/common\";\nimport { extent as d3Extent } from \"d3-array\";\nimport { scaleLinear as d3ScaleLinear, scaleLog as d3ScaleLog, scalePow as d3ScalePow, scaleSqrt as d3ScaleSqrt } from \"d3-scale\";\nimport { select as d3Select } from \"d3-selection\";\nimport {\n area as d3Area,\n curveBasis as d3CurveBasis, curveBundle as d3CurveBundle, curveCardinal as d3CurveCardinal, curveCatmullRom as d3curveCatmullRom, curveLinear as d3CurveLinear,\n curveMonotoneX as d3CurveMonotoneX, curveNatural as d3CurveNatural, curveStep as d3CurveStep, curveStepAfter as d3CurveStepAfter, curveStepBefore as d3CurveStepBefore,\n line as d3Line\n} from \"d3-shape\";\nimport { XYAxis } from \"./XYAxis.ts\";\n\nimport \"../src/Scatter.css\";\n\nexport class Scatter extends XYAxis {\n static __inputs: InputField[] = [{\n id: \"label\",\n type: \"any\"\n }, {\n id: \"values\",\n type: \"number\",\n multi: true\n }];\n\n constructor() {\n super();\n INDChart.call(this);\n ITooltip.call(this);\n this\n .xAxisGuideLines_default(true)\n .yAxisGuideLines_default(true)\n ;\n }\n\n xPos(host: XYAxis, d) {\n return host.orientation() === \"horizontal\" ? host.dataPos(d.label) : host.valuePos(d.value);\n }\n\n yPos(host: XYAxis, d) {\n return host.orientation() === \"horizontal\" ? host.valuePos(d.value) : host.dataPos(d.label);\n }\n\n private curve(): any {\n switch (this.interpolate()) {\n case \"linear\":\n return d3CurveLinear;\n case \"step\":\n return d3CurveStep;\n case \"step-before\":\n return d3CurveStepBefore;\n case \"step-after\":\n return d3CurveStepAfter;\n case \"basis\":\n return d3CurveBasis;\n case \"bundle\":\n return d3CurveBundle;\n case \"cardinal\":\n return d3CurveCardinal;\n case \"catmullRom\":\n return d3curveCatmullRom;\n case \"natural\":\n return d3CurveNatural;\n case \"monotone\":\n default:\n return d3CurveMonotoneX;\n }\n }\n\n private getScale() {\n switch (this.pointSizeScale()) {\n case \"linear\":\n return d3ScaleLinear();\n case \"pow\":\n return d3ScalePow().exponent(2);\n case \"log\":\n return d3ScaleLog();\n case \"sqrt\":\n return d3ScaleSqrt();\n }\n }\n\n protected pointColor(row, col, value, origRow) {\n if (this.interpolate() && this.pointDarken()) {\n return this.strokeColor(row, col, value, origRow);\n }\n return this.fillColor(row, col, value, origRow);\n }\n\n protected lineColor(row, col, value, origRow) {\n if (this.interpolateFill() && this.interpolateDarken()) {\n return this.strokeColor(row, col, value, origRow);\n }\n return this.fillColor(row, col, value, origRow);\n }\n\n protected areaColor(row, col, value, origRow) {\n return this.fillColor(row, col, value, origRow);\n }\n\n layerEnter(host: XYAxis, element, duration: number = 250) {\n super.layerEnter(host, element, duration);\n const context = this;\n this\n .tooltipHTML(function (d) {\n switch (context.tooltipStyle()) {\n case \"series-table\":\n return context.tooltipFormat({\n label: d.label,\n arr: context.columns().slice(1).map(function (column, i) {\n return {\n label: column,\n color: context._palette(column),\n value: context.data()[d.rowIdx][i + 1]\n };\n })\n });\n default:\n return context.tooltipFormat({ label: d.label, series: d.column, value: d.value });\n }\n })\n ;\n }\n\n protected _prevPointShape;\n layerUpdate(host: XYAxis, element, duration: number = 250) {\n super.layerUpdate(host, element);\n const isHorizontal = host.orientation() === \"horizontal\";\n const height = isHorizontal ? this.height() : this.width();\n const context = this;\n\n this._palette = this._palette.switch(this.paletteID());\n if (this.useClonedPalette()) {\n this._palette = this._palette.cloneNotExists(this.paletteID() + \"_\" + this.id());\n }\n\n if (this._prevPointShape !== this.pointShape()) {\n element.selectAll(\".data\").remove();\n this._prevPointShape = this.pointShape();\n }\n\n function mapShape(shape) {\n switch (shape) {\n case \"rectangle\":\n return \"rect\";\n case \"circle\":\n return \"circle\";\n case \"cross\":\n return \"path\";\n default:\n }\n }\n const usePointSizeColumn = this.pointSizeColumn_exists();\n let pointSizeColumnIdx;\n let extent;\n let scale;\n if (usePointSizeColumn) {\n pointSizeColumnIdx = this.columns().indexOf(this.pointSizeColumn());\n extent = d3Extent(this.data(), d => d[pointSizeColumnIdx]);\n scale = this.getScale().domain(extent);\n }\n const layerColumns = this.layerColumns(host);\n const layerData = this.layerData(host);\n const flatData = this.flattenData(layerColumns, layerData).map(function (d) {\n d.shape = mapShape(context.pointShape());\n d.column = layerColumns[d.colIdx];\n d.row = layerData[d.rowIdx];\n d.origRow = (layerData[d.rowIdx] as any).__hpcc_origRow;\n if (extent) {\n d.size = scale(d.row[pointSizeColumnIdx]) * (context.maxPointSize() - context.minPointSize()) + context.minPointSize();\n return d.column === context.pointSizeColumn() ? false : d;\n } else {\n d.size = context.pointSize();\n return d;\n }\n\n }).filter(d => d);\n\n const areas = element.selectAll(\".area\").data(layerColumns.filter(function (_d, idx) { return context.interpolate() && context.interpolateFill() && idx > 0; }));\n const areasEnter = areas.enter().append(\"path\");\n const area = d3Area()\n .curve(this.curve())\n ;\n if (isHorizontal) {\n area\n .x(function (d) { return context.xPos(host, d); })\n .y0(Math.min(height, this.yPos(host, { value: 0 })))\n .y1(function (d) { return context.yPos(host, d); })\n ;\n } else {\n area\n .y(function (d) { return context.yPos(host, d); })\n .x0(Math.max(0, this.xPos(host, { value: 0 })))\n .x1(function (d) { return context.xPos(host, d); })\n ;\n }\n areasEnter.merge(areas)\n .attr(\"class\", d => \"area series series-\" + this.cssTag(d))\n .each(function (_d, idx) {\n const element = d3Select(this);\n element\n .attr(\"d\", area(flatData.filter(function (d2) { return d2.colIdx === idx + 1; })))\n .style(\"opacity\", context.interpolateFillOpacity())\n .style(\"stroke\", \"none\")\n .style(\"fill\", context.areaColor([], _d, undefined, []))\n ;\n });\n areas.exit().remove();\n\n const lines = element.selectAll(\".line\").data(layerColumns.filter(function (_d, idx) { return context.interpolate() && idx > 0; }));\n const linesEnter = lines.enter().append(\"path\");\n const line = d3Line()\n .x(function (d) { return context.xPos(host, d); })\n .y(function (d) { return context.yPos(host, d); })\n .curve(this.curve())\n ;\n linesEnter.merge(lines)\n .attr(\"class\", d => \"line series series-\" + this.cssTag(d))\n .each(function (_d, idx) {\n const element = d3Select(this);\n const data2 = flatData.filter(function (d2) { return d2.colIdx === idx + 1; });\n element\n .attr(\"d\", line(data2))\n .style(\"stroke\", context.lineColor([], _d, undefined, []))\n .style(\"fill\", \"none\")\n ;\n });\n lines.exit().remove();\n\n const points = element.selectAll(\".point\").data(flatData, function (d, idx) { return d.shape + \"_\" + idx; });\n points.enter().append(\"g\")\n .each(function (this: SVGElement, d2) {\n const element = d3Select(this);\n element\n .append(d2.shape)\n .attr(\"class\", \"pointShape\")\n ;\n element\n .append(\"text\")\n .attr(\"class\", \"pointValue\")\n .style(\"display\", \"none\")\n .attr(\"text-anchor\", context.valueAnchor())\n .attr(\"alignment-baseline\", context.valueBaseline())\n .attr(\"fill\", function (d: any, _idx) {\n const useTextColor = context.valueBaseline() === \"middle\" || context.valueBaseline() === \"central\";\n return useTextColor ? context.textColor(d.row, d.column, d.value, d.origRow) : null;\n })\n ;\n element\n .append(\"circle\")\n .attr(\"class\", \"pointSelection\")\n .on(\"mouseout.tooltip\", context.tooltip.hide)\n .on(\"mousemove.tooltip\", context.tooltip.show)\n .call(host._selection.enter.bind(host._selection))\n .on(\"click\", function (d: any, _idx) {\n context.click(host.rowToObj(host.data()[d.rowIdx]), d.column, host._selection.selected(this));\n })\n .on(\"dblclick\", function (d: any, _idx) {\n context.dblclick(host.rowToObj(host.data()[d.rowIdx]), d.column, host._selection.selected(this));\n })\n ;\n })\n .merge(points)\n .attr(\"class\", d => \"point series series-\" + this.cssTag(d.column))\n .each(function (this: SVGElement, d2) {\n const textSelection = d3Select(this).select(\".pointValue\");\n textSelection\n .attr(\"x\", function (d) { return context.xPos(host, d); })\n .attr(\"y\", function (d) { return context.yPos(host, d); })\n .style(\"display\", context.showValue() ? \"block\" : \"none\")\n .attr(\"text-anchor\", context.valueAnchor())\n .attr(\"alignment-baseline\", context.valueBaseline())\n .text(function (d) {\n return d[\"value\"];\n })\n ;\n const elementSelection = d3Select(this).select(\".pointSelection\");\n elementSelection\n .attr(\"cx\", function (d) { return context.xPos(host, d); })\n .attr(\"cy\", function (d) { return context.yPos(host, d); })\n .attr(\"r\", d2.size)\n ;\n\n const element = d3Select(this).select(\".pointShape\");\n switch (d2.shape) {\n case \"rect\":\n element\n .attr(\"x\", function (d) { return context.xPos(host, d) - d2.size / 2; })\n .attr(\"y\", function (d) { return context.yPos(host, d) - d2.size / 2; })\n .attr(\"width\", d2.size)\n .attr(\"height\", d2.size)\n .style(\"fill\", context.pointColor(d2.row, d2.column, d2.value, d2.origRow))\n ;\n break;\n case \"circle\":\n element\n .attr(\"cx\", function (d) { return context.xPos(host, d); })\n .attr(\"cy\", function (d) { return context.yPos(host, d); })\n .attr(\"r\", d2.size * 0.9)\n .style(\"fill\", context.pointColor(d2.row, d2.column, d2.value, d2.origRow))\n ;\n break;\n case \"path\":\n element\n .attr(\"d\", function (d: any) {\n return \"M\" + (context.xPos(host, d) - d2.size / 2) + \" \" + (context.yPos(host, d) - d2.size / 2) + \" \" +\n \"L\" + (context.xPos(host, d) + d2.size / 2) + \" \" + (context.yPos(host, d) + d2.size / 2) + \" \" +\n \"M\" + (context.xPos(host, d) - d2.size / 2) + \" \" + (context.yPos(host, d) + d2.size / 2) + \" \" +\n \"L\" + (context.xPos(host, d) + d2.size / 2) + \" \" + (context.yPos(host, d) - d2.size / 2);\n })\n .style(\"stroke\", context.pointColor(d2.row, d2.column, d2.value, d2.origRow))\n ;\n break;\n default:\n }\n })\n ;\n points.exit().remove();\n }\n\n exit(domNode, element) {\n super.exit(domNode, element);\n }\n}\nScatter.prototype._class += \" chart_Scatter\";\nScatter.prototype.implements(INDChart.prototype);\nScatter.prototype.implements(ITooltip.prototype);\n\nexport interface Scatter {\n\n valueAnchor(): string;\n valueAnchor(_: string): this;\n valueBaseline(): string;\n valueBaseline(_: string): this;\n showValue(): boolean;\n showValue(_: boolean): this;\n pointDarken(): boolean;\n pointDarken(_: boolean): this;\n interpolateDarken(): boolean;\n interpolateDarken(_: boolean): this;\n\n paletteID(): string;\n paletteID(_: string): this;\n useClonedPalette(): boolean;\n useClonedPalette(_: boolean): this;\n pointSizeScale(): string;\n pointSizeScale(_: string): this;\n pointShape(): string;\n pointShape(_: string): this;\n pointSize(): number;\n pointSize(_: number): this;\n interpolate(): string;\n interpolate(_: string): this;\n interpolate_default(): string;\n interpolate_default(_: string): this;\n interpolateFill(): boolean;\n interpolateFill(_: boolean): this;\n interpolateFill_default(): boolean;\n interpolateFill_default(_: boolean): this;\n interpolateFillOpacity(): number;\n interpolateFillOpacity(_: number): this;\n\n // INDChart\n fillColor(row, column, value, origRow): string;\n strokeColor(row, column, value, origRow): string;\n textColor(row, column, value, origRow): string;\n dblclick(row, column, selected): void;\n\n // ITooltip\n tooltip;\n tooltipHTML(_): string;\n tooltipFormat(_): string;\n tooltipStyle(): \"default\" | \"none\" | \"series-table\";\n}\nScatter.prototype.publish(\"paletteID\", \"default\", \"set\", \"Color palette for this widget\", Scatter.prototype._palette.switch(), { tags: [\"Basic\", \"Shared\"] });\nScatter.prototype.publish(\"pointSizeScale\", \"linear\", \"set\", \"pointSizeScale\", [\"linear\", \"pow\", \"log\", \"sqrt\"]);\nScatter.prototype.publish(\"pointShape\", \"cross\", \"set\", \"Shape of the data points\", [\"circle\", \"rectangle\", \"cross\"]);\nScatter.prototype.publish(\"pointSize\", 6, \"number\", \"Point Size\", null, { range: { min: 1, step: 1, max: 200 } });\nScatter.prototype.publish(\"interpolate\", \"\", \"set\", \"Interpolate Data\", [\"\", \"linear\", \"step\", \"step-before\", \"step-after\", \"basis\", \"bundle\", \"cardinal\", \"catmullRom\", \"natural\", \"monotone\"]);\nScatter.prototype.publish(\"pointDarken\", true, \"boolean\", \"If true, and interpolate is set, then points will have a slightly darker color than their assigned palette color\", null, { disable: w => !w.interpolate() });\nScatter.prototype.publish(\"interpolateDarken\", true, \"boolean\", \"If true, and interpolateFill is true, then lines will have a slightly darker color than their assigned palette color\", null, { disable: w => !w.interpolateFill() });\nScatter.prototype.publish(\"interpolateFill\", false, \"boolean\", \"If true, the area between the line and zero will be filled\");\nScatter.prototype.publish(\"interpolateFillOpacity\", 0.66, \"number\", \"Fill interpolation Opacity\", null, { range: { min: 0, step: 0.01, max: 1 } });\nScatter.prototype.publish(\"useClonedPalette\", false, \"boolean\", \"Enable or disable using a cloned palette\", null, { tags: [\"Intermediate\", \"Shared\"] });\nScatter.prototype.publish(\"showValue\", false, \"boolean\");\nScatter.prototype.publish(\"valueAnchor\", \"middle\", \"set\", \"text-anchor for shown value text\", [\"start\", \"middle\", \"end\"]);\nScatter.prototype.publish(\"valueBaseline\", \"ideographic\", \"set\", \"alignment-baseline for shown value text\", [\"auto\", \"baseline\", \"before-edge\", \"text-before-edge\", \"middle\", \"central\", \"after-edge\", \"text-after-edge\", \"ideographic\", \"alphabetic\", \"hanging\", \"mathematical\", \"inherit\"]);\n","import { Scatter } from \"./Scatter.ts\";\n\nexport class Area extends Scatter {\n constructor() {\n super();\n this\n .interpolate_default(\"linear\")\n .interpolateFill_default(true)\n ;\n }\n}\nArea.prototype._class += \" chart_Area\";\n","import { INDChart, ITooltip } from \"@hpcc-js/api\";\nimport { InputField, Text } from \"@hpcc-js/common\";\nimport { format as d3Format } from \"d3-format\";\nimport { scaleBand as d3ScaleBand } from \"d3-scale\";\nimport { local as d3Local, select as d3Select } from \"d3-selection\";\nimport { XYAxis } from \"./XYAxis.ts\";\n\nimport \"../src/Column.css\";\n\nexport class Column extends XYAxis {\n static __inputs: InputField[] = [{\n id: \"label\",\n type: \"string\"\n }, {\n id: \"values\",\n type: \"number\",\n multi: true\n }];\n\n protected _linearGap: number;\n private textLocal = d3Local<Text>();\n private stackedTextLocal = d3Local<Text>();\n private isHorizontal: boolean;\n\n constructor() {\n super();\n INDChart.call(this);\n ITooltip.call(this);\n\n this._selection.skipBringToTop(true);\n\n this._linearGap = 25.0;\n }\n\n layerEnter(host: XYAxis, element, duration: number = 250) {\n super.layerEnter(host, element, duration);\n const context = this;\n this\n .tooltipHTML(function (d) {\n switch (context.tooltipStyle()) {\n case \"series-table\":\n return context.tooltipFormat({\n label: d.row[0],\n arr: context.columns().slice(1).map(function (column, i) {\n return {\n label: column,\n color: context._palette(column),\n value: d.row[i + 1]\n };\n })\n });\n default:\n let value = d.row[d.idx];\n if (value instanceof Array) {\n value = value[1] - value[0];\n }\n return context.tooltipFormat({ label: d.row[0], series: context.layerColumns(host)[d.idx], value });\n }\n })\n ;\n }\n\n adjustedData(host: XYAxis) {\n const retVal = this.layerData(host).map(row => {\n let prevValue = 0;\n return row.map((cell, idx) => {\n if (idx === 0) {\n return cell;\n }\n if (idx >= this.layerColumns(host).length) {\n return cell;\n }\n const retVal2 = host.yAxisStacked() ? [prevValue, prevValue + cell] : cell;\n prevValue += cell;\n return retVal2;\n }, this);\n }, this);\n return retVal;\n }\n\n layerUpdate(host: XYAxis, element, duration: number = 250) {\n super.layerUpdate(host, element, duration);\n const isHorizontal = host.orientation() === \"horizontal\";\n this.isHorizontal = isHorizontal;\n const context = this;\n\n this._palette = this._palette.switch(this.paletteID());\n if (this.useClonedPalette()) {\n this._palette = this._palette.cloneNotExists(this.paletteID() + \"_\" + this.id());\n }\n const formatPct = d3Format(context.showValueAsPercentFormat());\n\n let dataLen = 10;\n let offset = 0;\n switch (host.xAxisType()) {\n case \"ordinal\":\n dataLen = host.bandwidth();\n offset = -dataLen / 2;\n break;\n case \"linear\":\n case \"time\":\n dataLen = Math.max(Math.abs(host.dataPos(2) - host.dataPos(1)) * (100 - this._linearGap) / 100, dataLen);\n offset = -dataLen / 2;\n break;\n default:\n }\n\n this.tooltip.direction(isHorizontal ? \"n\" : \"e\");\n\n const columnScale = d3ScaleBand()\n .domain(context.layerColumns(host).filter(function (_d, idx) { return idx > 0; }))\n .rangeRound(isHorizontal ? [0, dataLen] : [dataLen, 0])\n .paddingInner(this.xAxisSeriesPaddingInner())\n .paddingOuter(0)\n ;\n let domainSums = [];\n const seriesSums = [];\n const columnLength = this.columns().length;\n const rowData = this.data();\n if (this.showValue() && this.showValueAsPercent() === \"series\") {\n rowData.forEach((row) => {\n row.filter((_, idx) => idx > 0 && idx < columnLength).forEach((col, idx) => {\n if (seriesSums[idx + 1] === undefined) {\n seriesSums[idx + 1] = 0;\n }\n seriesSums[idx + 1] += col;\n });\n });\n }\n\n if (this.showDomainTotal() || (this.showValue() && this.showValueAsPercent() === \"domain\")) {\n domainSums = rowData.map(row => {\n return row.filter((cell, idx) => idx > 0 && idx < columnLength).reduce((sum, cell) => {\n return sum + cell;\n }, 0);\n });\n }\n\n const column = element.selectAll(\".dataRow\")\n .data(this.adjustedData(host))\n ;\n const hostData = host.data();\n const axisSize = this.getAxisSize(host);\n column.enter().append(\"g\")\n .attr(\"class\", \"dataRow\")\n .merge(column)\n .each(function (dataRow, dataRowIdx) {\n const element = d3Select(this);\n\n const columnGRect = element.selectAll(\".dataCell\").data(dataRow.filter(function (_d, i) { return i < context.layerColumns(host).length; }).map(function (d, i) {\n return {\n column: context.layerColumns(host)[i],\n row: dataRow,\n origRow: hostData[dataRowIdx],\n value: d,\n idx: i\n };\n }).filter(function (d) { return d.value !== null && d.idx > 0; }), (d: any) => d.column);\n\n const columnGEnter = columnGRect\n .enter().append(\"g\")\n .attr(\"class\", \"dataCell\")\n .on(\"mouseout.tooltip\", function (d: any) {\n if (!context.tooltipInnerTextEllipsedOnly() || (d.innerTextObj && d.innerTextObj.isTruncated)) {\n context.tooltip.hide.apply(context, arguments);\n }\n })\n .on(\"mousemove.tooltip\", function (d: any) {\n if (!context.tooltipInnerTextEllipsedOnly() || (d.innerTextObj && d.innerTextObj.isTruncated)) {\n context.tooltip.show.apply(context, arguments);\n }\n })\n .call(host._selection.enter.bind(host._selection))\n .on(\"click\", function (d: any) {\n context.click(host.rowToObj(d.origRow), d.column, host._selection.selected(this));\n })\n .on(\"dblclick\", function (d: any) {\n context.dblclick(host.rowToObj(d.origRow), d.column, host._selection.selected(this));\n })\n .style(\"opacity\", 0)\n .each(function (this: SVGElement, d: any) {\n const element = d3Select(this);\n element.append(\"rect\")\n .attr(\"class\", \"columnRect series series-\" + context.cssTag(d.column))\n ;\n element.append(\"text\")\n .attr(\"class\", \"columnRectText\")\n .style(\"stroke\", \"transparent\")\n ;\n })\n ;\n columnGEnter.transition().duration(duration)\n .style(\"opacity\", 1)\n ;\n const domainLength = host.yAxisStacked() ? dataLen : columnScale.bandwidth();\n columnGEnter.merge(columnGRect as any).each(function (this: SVGElement, d: any) {\n const element = d3Select(this);\n const domainPos = host.dataPos(dataRow[0]) + (host.yAxisStacked() ? 0 : columnScale(d.column)) + offset;\n const upperValue = d.value instanceof Array ? d.value[1] : d.value;\n let valueText = d.origRow[d.idx];\n if (context.showValue()) {\n const dm = context.dataMeta();\n switch (context.showValueAsPercent()) {\n case \"series\":\n const seriesSum = typeof dm.sum !== \"undefined\" ? dm.sum : seriesSums[d.idx];\n valueText = formatPct(valueText / seriesSum);\n break;\n case \"domain\":\n const domainSum = typeof dm.sum !== \"undefined\" ? dm.sum : domainSums[dataRowIdx];\n valueText = formatPct(valueText / domainSum);\n break;\n case null:\n default:\n valueText = d3Format(context.showValueFormat())(valueText);\n break;\n }\n }\n const upperValuePos = host.valuePos(upperValue);\n const lowerValuePos = host.valuePos(d.value instanceof Array ? d.value[0] : 0);\n const valuePos = Math.min(lowerValuePos, upperValuePos);\n const valueLength = Math.abs(upperValuePos - lowerValuePos);\n\n const innerTextHeight = context.innerTextFontSize();\n const innerTextPadding = context.innerTextPadding_exists() ? context.innerTextPadding() : innerTextHeight / 2.5;\n\n const dataRect = context.intersectRectRect(\n {\n x: isHorizontal ? domainPos : valuePos,\n y: isHorizontal ? valuePos : domainPos,\n width: isHorizontal ? domainLength : valueLength,\n height: isHorizontal ? valueLength : domainLength\n },\n {\n x: 0,\n y: 0,\n width: axisSize.width,\n height: axisSize.height\n }\n );\n\n const _rects = element.select(\"rect\").transition().duration(duration)\n .style(\"fill\", (d: any) => context.fillColor(d.row, d.column, d.value, d.origRow))\n ;\n\n if (isHorizontal) {\n _rects\n .attr(\"x\", domainPos)\n .attr(\"y\", valuePos)\n .attr(\"width\", domainLength)\n .attr(\"height\", valueLength)\n ;\n } else {\n _rects\n .attr(\"y\", domainPos)\n .attr(\"x\", valuePos)\n .attr(\"height\", domainLength)\n .attr(\"width\", valueLength)\n ;\n }\n const _texts = element.select(\"text\").transition().duration(duration)\n .style(\"font-size\", innerTextHeight + \"px\")\n .style(\"fill\", (d: any) => context.textColor(d.row, d.column, d.value, d.origRow))\n ;\n\n _texts.style(\"font-family\", context.innerTextFontFamily_exists() ? context.innerTextFontFamily() : null);\n\n const padding = context.innerTextPadding_exists() ? context.innerTextPadding() : 8;\n\n const textHeightOffset = innerTextHeight / 2.7;\n\n if (isHorizontal) { // Column\n const y = dataRect.y + dataRect.height - innerTextPadding;\n _texts\n .attr(\"x\", domainPos + (domainLength / 2))\n .attr(\"y\", y + textHeightOffset)\n .attr(\"transform\", `rotate(-90, ${domainPos + (domainLength / 2)}, ${y})`)\n ;\n } else { // Bar\n _texts\n .attr(\"x\", dataRect.x + padding)\n .attr(\"y\", domainPos + (domainLength / 2) + textHeightOffset)\n ;\n }\n _texts\n .attr(\"height\", domainLength)\n .attr(\"width\", valueLength)\n ;\n if (context.showInnerText()) {\n _texts\n .text((d: any) => {\n const innerText = context.innerText(d.origRow, d.origRow[columnLength], d.idx);\n if (innerText) {\n const clippedValueLength = isHorizontal ? dataRect.height : dataRect.width;\n const innerTextObj = context.calcInnerText(clippedValueLength, innerText, valueText);\n d.innerTextObj = innerTextObj;\n\n return innerTextObj.text;\n }\n return \"\";\n })\n ;\n }\n const dataText = element.selectAll(\".dataText\").data(context.showValue() ? [`${upperValue}`] : []);\n const dataTextEnter = dataText.enter().append(\"g\")\n .attr(\"class\", \"dataText\")\n .each(function (this: SVGElement, d) {\n context.textLocal.set(this, new Text().target(this).colorStroke_default(\"transparent\"));\n });\n dataTextEnter.merge(dataText as any)\n .each(function (this: SVGElement) {\n const pos = { x: 0, y: 0 };\n const valueFontFamily = context.valueFontFamily();\n const valueFontSize = context.valueFontSize();\n const textSize = context.textSize(valueText, valueFontFamily, valueFontSize);\n\n const isPositive = parseFloat(valueText) >= 0;\n\n let valueAnchor = context.valueAnchor() ? context.valueAnchor() : isHorizontal ? \"middle\" : \"start\";\n\n const leftSpace = dataRect.x;\n const rightSpace = axisSize.width - (dataRect.x + dataRect.width);\n const topSpace = dataRect.y;\n const bottomSpace = axisSize.height - (dataRect.y + dataRect.height);\n\n let noRoomInside;\n let isOutside;\n let noRoomOnExpectedSide;\n\n if (d.innerTextObj) {\n const { padding, valueTextWidth } = d.innerTextObj;\n isOutside = false;\n if (isHorizontal) { // Column\n valueAnchor = \"middle\";\n pos.x = domainPos + (domainLength / 2);\n\n if (d.innerTextObj.category === 4) {\n isOutside = true;\n pos.y = valuePos - padding - (valueFontSize / 2);\n } else {\n pos.y = valuePos + padding + (valueFontSize / 2);\n }\n } else { // Bar\n valueAnchor = \"start\";\n if (d.innerTextObj.category === 4) {\n isOutside = true;\n pos.x = (valueLength + valuePos) + padding;\n } else {\n pos.x = (valueLength + valuePos) - valueTextWidth - padding;\n }\n pos.y = domainPos + (domainLength / 2);\n }\n } else {\n /*\n IF this.valueCentered() and NO ROOM INSIDE\n ...then ASSUME THERES ROOM OUTSIDE\n IF NO ROOM OUTSIDE ON EXPECTED SIDE\n ...then ASSUME THERES ROOM ON THE OPPOSITE SIDE\n */\n if (isHorizontal) { // Column\n noRoomInside = dataRect.height < textSize.height;\n isOutside = !context.valueCentered() || noRoomInside;\n\n pos.x = dataRect.x + (dataRect.width / 2);\n\n if (isOutside) {\n if (isPositive) {\n noRoomOnExpectedSide = topSpace < textSize.height + padding;\n if (noRoomOnExpectedSide) {\n if (!noRoomInside) {\n isOutside = false;\n pos.y = dataRect.y + (dataRect.height / 2);\n } else {\n pos.y = dataRect.y + dataRect.height + textSize.height;\n }\n } else {\n pos.y = dataRect.y - (textSize.height / 2) - padding;\n }\n } else {\n noRoomOnExpectedSide = bottomSpace < textSize.height;\n if (noRoomOnExpectedSide) {\n if (!noRoomInside) {\n isOutside = false;\n pos.y = dataRect.y + (dataRect.height / 2);\n } else {\n pos.y = dataRect.y - (textSize.height / 2) - padding;\n }\n } else {\n pos.y = dataRect.y + textSize.height + padding;\n }\n }\n } else {\n pos.y = dataRect.y + (dataRect.height / 2);\n }\n } else { // Bar\n noRoomInside = dataRect.width < textSize.width;\n isOutside = !context.valueCentered() || noRoomInside;\n\n pos.y = dataRect.y + (dataRect.height / 2);\n\n if (isOutside) {\n if (isPositive) {\n noRoomOnExpectedSide = rightSpace < textSize.width + padding;\n if (noRoomOnExpectedSide) {\n if (context.showInnerText() || !noRoomInside) {\n isOutside = false;\n pos.x = dataRect.x + (dataRect.width / 2);\n } else {\n pos.x = dataRect.x - (textSize.width - padding);\n }\n } else {\n pos.x = dataRect.x + dataRect.width + (textSize.width / 2) + padding;\n }\n } else {\n noRoomOnExpectedSide = leftSpace < textSize.width;\n if (noRoomOnExpectedSide) {\n if (context.showInnerText() || !noRoomInside) {\n isOutside = false;\n pos.x = dataRect.x + (dataRect.width / 2);\n } else {\n pos.x = dataRect.x + dataRect.width + (textSize.width - padding);\n }\n } else {\n pos.x = dataRect.x - (textSize.width - padding);\n }\n }\n } else {\n pos.x = dataRect.x + (dataRect.width / 2);\n }\n }\n }\n const textColor = isOutside ? null : context.textColor(d.row, d.column, d.value, d.origRow);\n\n // Prevent overlapping labels on stacked columns\n const columns = context.columns();\n const hideValue = (context.yAxisStacked() && noRoomInside) ||\n (isOutside && context.yAxisStacked() && columns.indexOf(d.column) !== columns.length - 1);\n context.textLocal.get(this)\n .pos(pos)\n .anchor(valueAnchor)\n .fontFamily(valueFontFamily)\n .fontSize(valueFontSize)\n .text(`${valueText}`)\n .colorFill(textColor)\n .visible(context.showValue() && !hideValue)\n .render()\n ;\n\n });\n dataText.exit()\n .each(function (this: SVGElement, d) {\n context.textLocal.get(this).target(null);\n })\n .remove()\n ;\n });\n columnGRect.exit().transition().duration(duration)\n .style(\"opacity\", 0)\n .remove()\n ;\n\n const value4pos = host.yAxisStacked() ? domainSums[dataRowIdx] : Math.max(...dataRow.filter((_, idx) => idx > 0 && idx < columnLength));\n const stackedTotalText = element.selectAll(\".stackedTotalText\").data(context.showDomainTotal() ? [domainSums[dataRowIdx]] : []);\n const stackedTotalTextEnter = stackedTotalText.enter().append(\"g\")\n .attr(\"class\", \"stackedTotalText\")\n .each(function (this: SVGElement, d) {\n context.stackedTextLocal.set(this, new Text().target(this).colorStroke_default(\"transparent\"));\n });\n stackedTotalTextEnter.merge(stackedTotalText as any)\n .each(function (this: SVGElement, d: any) {\n const pos = { x: 0, y: 0 };\n const domainPos = host.dataPos(dataRow[0]);\n const valuePos = host.valuePos(value4pos);\n\n const valueFontFamily = context.valueFontFamily();\n const valueFontSize = context.valueFontSize();\n const textSize = context.textSize(d, valueFontFamily, valueFontSize);\n\n const isPositive = parseFloat(d) >= 0;\n let valueAnchor: \"start\" | \"middle\" | \"end\" = \"middle\";\n if (isHorizontal) {\n pos.x = domainPos;\n if (isPositive) {\n pos.y = valuePos - textSize.height / 2;\n } else {\n pos.y = valuePos + textSize.height / 2;\n }\n } else {\n valueAnchor = \"start\";\n pos.y = domainPos;\n if (isPositive) {\n pos.x = valuePos + textSize.width / 2;\n } else {\n pos.x = valuePos - textSize.width / 2;\n }\n }\n\n context.stackedTextLocal.get(this)\n .pos(pos)\n .anchor(valueAnchor)\n .fontFamily(valueFontFamily)\n .fontSize(valueFontSize)\n .text(d)\n .render()\n ;\n\n });\n stackedTotalText.exit()\n .each(function (this: SVGElement, d) {\n context.textLocal.get(this).target(null);\n })\n .remove()\n ;\n });\n column.exit().transition().duration(duration)\n .remove()\n ;\n }\n\n calcInnerText(offset, innerText, valueText) {\n\n const fontFamily = this.innerTextFontFamily_exists() ? this.innerTextFontFamily() : \"Verdana\";\n const fontSize = this.innerTextFontSize();\n const valueFontFamily = this.valueFontFamily_exists() ? this.valueFontFamily() : \"Verdana\";\n const valueFontSize = this.valueFontSize();\n const padding = this.innerTextPadding_exists() ? this.innerTextPadding() : fontSize / 2.5;\n const valueTextWidth = this.isHorizontal ? valueFontSize : this.textSize(valueText, valueFontFamily, valueFontSize).width;\n const ellipsisWidth = this.textSize(\"...\", fontFamily, fontSize).width;\n const innerTextWidth = this.textSize(innerText, fontFamily, fontSize).width;\n const origInnerText = innerText;\n\n const fullWidth = (padding * 3) + innerTextWidth + valueTextWidth;\n const fullWidth2 = (padding * 3) + ellipsisWidth + valueTextWidth;\n const fullWidth3 = (padding * 1) + valueTextWidth;\n /*\n Categories:\n 1) room to display inner text (with padding) AND value text (with padding)\n 2) room to display ellipsis (with padding) AND value text (with padding)\n 3) room to display value text only (with padding)\n 4) no room to display any text except value on the outside\n */\n let category = 4;\n if (fullWidth < offset) {\n category = 1;\n } else if (fullWidth2 < offset) {\n const excessWidth = offset - fullWidth2;\n let _text = \"\";\n for (const letter of innerText) {\n if (this.textSize(_text + letter, fontFamily, fontSize).width > excessWidth) {\n innerText = _text + \"...\";\n break;\n } else {\n _text += letter;\n }\n }\n category = 2;\n } else if (fullWidth3 < offset) {\n innerText = \"\";\n category = 3;\n } else {\n innerText = \"\";\n }\n\n return {\n text: innerText,\n isTruncated: origInnerText !== innerText,\n padding,\n category,\n valueTextWidth\n };\n }\n\n innerText(origRow, lparam, idx): string {\n return origRow[0];\n }\n}\nColumn.prototype._class += \" chart_Column\";\nColumn.prototype.implements(INDChart.prototype);\nColumn.prototype.implements(ITooltip.prototype);\n\nexport interface Column {\n paletteID(): string;\n paletteID(_: string): this;\n useClonedPalette(): boolean;\n useClonedPalette(_: boolean): this;\n showValue(): boolean;\n showValue(_: boolean): this;\n showInnerText(): boolean;\n showInnerText(_: boolean): this;\n showValueFormat(): string;\n showValueFormat(_: string): this;\n showValueAsPercent(): null | \"series\" | \"domain\";\n showValueAsPercent(_: null | \"series\" | \"domain\"): this;\n showValueAsPercentFormat(): string;\n showValueAsPercentFormat(_: string): this;\n showDomainTotal(): boolean;\n showDomainTotal(_: boolean): this;\n valueCentered(): boolean;\n valueCentered(_: boolean): this;\n valueAnchor(): \"start\" | \"middle\" | \"end\";\n valueAnchor(_: \"start\" | \"middle\" | \"end\"): this;\n valueFontFamily(): string;\n valueFontFamily(_: string): this;\n valueFontFamily_exists(): boolean;\n valueFontSize(): number;\n valueFontSize(_: number): this;\n xAxisSeriesPaddingInner(): number;\n xAxisSeriesPaddingInner(_: number): this;\n innerTextFontFamily(): string;\n innerTextFontFamily(_: string): this;\n innerTextFontFamily_exists(): boolean;\n innerTextFontSize(): number;\n innerTextFontSize(_: number): this;\n innerTextPadding(): number;\n innerTextPadding(_: number): this;\n innerTextPadding_exists(): boolean;\n tooltipInnerTextEllipsedOnly(): boolean;\n tooltipInnerTextEllipsedOnly(_: boolean): this;\n\n // INDChart ---\n fillColor(row, column, value, origRow): string;\n textColor(row, column, value, origRow): string;\n dblclick(row, column, selected): void;\n\n // ITooltip ---\n tooltip;\n tooltipHTML(_): string;\n tooltipFormat(_): string;\n tooltipStyle(): \"default\" | \"none\" | \"series-table\";\n tooltipStyle(_: \"default\" | \"none\" | \"series-table\"): this;\n}\n\nColumn.prototype.publish(\"valueFontFamily\", null, \"string\", \"Font family of value text\", null, { optional: true });\nColumn.prototype.publish(\"valueFontSize\", 12, \"number\", \"Height of value text (pixels)\");\nColumn.prototype.publish(\"innerTextFontFamily\", null, \"string\", \"Font family of inner text\", null, { optional: true });\nColumn.prototype.publish(\"innerTextPadding\", 8, \"number\", \"Offset of inner text (pixels)\", null, { optional: true });\nColumn.prototype.publish(\"innerTextFontSize\", 12, \"number\", \"Height of inner text (pixels)\");\nColumn.prototype.publish(\"paletteID\", \"default\", \"set\", \"Color palette for this widget\", () => Column.prototype._palette.switch(), { tags: [\"Basic\", \"Shared\"] });\nColumn.prototype.publish(\"useClonedPalette\", false, \"boolean\", \"Enable or disable using a cloned palette\", null, { tags: [\"Intermediate\", \"Shared\"] });\nColumn.prototype.publish(\"showValue\", false, \"boolean\", \"Show Value in column\");\nColumn.prototype.publish(\"showInnerText\", false, \"boolean\", \"Show Label in column\");\nColumn.prototype.publish(\"showValueFormat\", \",\", \"string\", \"D3 Format for Value\", null, { disable: (w: Column) => !w.showValue() || !!w.showValueAsPercent() });\nColumn.prototype.publish(\"showValueAsPercent\", null, \"set\", \"If showValue is true, optionally show value as a percentage by Series or Domain\", [null, \"series\", \"domain\"], { disable: w => !w.showValue(), optional: true });\nColumn.prototype.publish(\"showValueAsPercentFormat\", \".0%\", \"string\", \"D3 Format for %\", null, { disable: (w: Column) => !w.showValue() || !w.showValueAsPercent() });\nColumn.prototype.publish(\"showDomainTotal\", false, \"boolean\", \"Show Total Value for Stacked Columns\", null);\nColumn.prototype.publish(\"valueCentered\", false, \"boolean\", \"Show Value in center of column\");\nColumn.prototype.publish(\"valueAnchor\", \"middle\", \"set\", \"text-anchor for shown value text\", [\"start\", \"middle\", \"end\"]);\nColumn.prototype.publish(\"xAxisSeriesPaddingInner\", 0, \"number\", \"Determines the ratio of the range that is reserved for blank space between band (0->1)\");\nColumn.prototype.publish(\"tooltipInnerTextEllipsedOnly\", false, \"boolean\", \"Show tooltip only when inner text is truncated with an ellipsis\");\n\n/*\nconst origUseClonedPalette = Column.prototype.useClonedPalette;\nColumn.prototype.useClonedPalette = function (this: Column, _?) {\n const retVal = origUseClonedPalette.apply(this, arguments);\n if (arguments.length) {\n this._useClonedPalette = _;\n }\n return retVal;;\n}\n*/\n","import { Column } from \"./Column.ts\";\n\nexport class Bar extends Column {\n constructor() {\n super();\n this.orientation_default(\"vertical\");\n }\n}\nBar.prototype._class += \" chart_Bar\";\n","function count(node) {\n var sum = 0,\n children = node.children,\n i = children && children.length;\n if (!i) sum = 1;\n else while (--i >= 0) sum += children[i].value;\n node.value = sum;\n}\n\nexport default function() {\n return this.eachAfter(count);\n}\n","export default function(callback) {\n var node = this, current, next = [node], children, i, n;\n do {\n current = next.reverse(), next = [];\n while (node = current.pop()) {\n callback(node), children = node.children;\n if (children) for (i = 0, n = children.length; i < n; ++i) {\n next.push(children[i]);\n }\n }\n } while (next.length);\n return this;\n}\n","export default function(callback) {\n var node = this, nodes = [node], children, i;\n while (node = nodes.pop()) {\n callback(node), children = node.children;\n if (children) for (i = children.length - 1; i >= 0; --i) {\n nodes.push(children[i]);\n }\n }\n return this;\n}\n","export default function(callback) {\n var node = this, nodes = [node], next = [], children, i, n;\n while (node = nodes.pop()) {\n next.push(node), children = node.children;\n if (children) for (i = 0, n = children.length; i < n; ++i) {\n nodes.push(children[i]);\n }\n }\n while (node = next.pop()) {\n callback(node);\n }\n return this;\n}\n","export default function(value) {\n return this.eachAfter(function(node) {\n var sum = +value(node.data) || 0,\n children = node.children,\n i = children && children.length;\n while (--i >= 0) sum += children[i].value;\n node.value = sum;\n });\n}\n","export default function(compare) {\n return this.eachBefore(function(node) {\n if (node.children) {\n node.children.sort(compare);\n }\n });\n}\n","export default function(end) {\n var start = this,\n ancestor = leastCommonAncestor(start, end),\n nodes = [start];\n while (start !== ancestor) {\n start = start.parent;\n nodes.push(start);\n }\n var k = nodes.length;\n while (end !== ancestor) {\n nodes.splice(k, 0, end);\n end = end.parent;\n }\n return nodes;\n}\n\nfunction leastCommonAncestor(a, b) {\n if (a === b) return a;\n var aNodes = a.ancestors(),\n bNodes = b.ancestors(),\n c = null;\n a = aNodes.pop();\n b = bNodes.pop();\n while (a === b) {\n c = a;\n a = aNodes.pop();\n b = bNodes.pop();\n }\n return c;\n}\n","export default function() {\n var node = this, nodes = [node];\n while (node = node.parent) {\n nodes.push(node);\n }\n return nodes;\n}\n","export default function() {\n var nodes = [];\n this.each(function(node) {\n nodes.push(node);\n });\n return nodes;\n}\n","export default function() {\n var leaves = [];\n this.eachBefore(function(node) {\n if (!node.children) {\n leaves.push(node);\n }\n });\n return leaves;\n}\n","export default function() {\n var root = this, links = [];\n root.each(function(node) {\n if (node !== root) { // Don’t include the root’s parent, if any.\n links.push({source: node.parent, target: node});\n }\n });\n return links;\n}\n","import node_count from \"./count.js\";\nimport node_each from \"./each.js\";\nimport node_eachBefore from \"./eachBefore.js\";\nimport node_eachAfter from \"./eachAfter.js\";\nimport node_sum from \"./sum.js\";\nimport node_sort from \"./sort.js\";\nimport node_path from \"./path.js\";\nimport node_ancestors from \"./ancestors.js\";\nimport node_descendants from \"./descendants.js\";\nimport node_leaves from \"./leaves.js\";\nimport node_links from \"./links.js\";\n\nexport default function hierarchy(data, children) {\n var root = new Node(data),\n valued = +data.value && (root.value = data.value),\n node,\n nodes = [root],\n child,\n childs,\n i,\n n;\n\n if (children == null) children = defaultChildren;\n\n while (node = nodes.pop()) {\n if (valued) node.value = +node.data.value;\n if ((childs = children(node.data)) && (n = childs.length)) {\n node.children = new Array(n);\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = node.children[i] = new Node(childs[i]));\n child.parent = node;\n child.depth = node.depth + 1;\n }\n }\n }\n\n return root.eachBefore(computeHeight);\n}\n\nfunction node_copy() {\n return hierarchy(this).eachBefore(copyData);\n}\n\nfunction defaultChildren(d) {\n return d.children;\n}\n\nfunction copyData(node) {\n node.data = node.data.data;\n}\n\nexport function computeHeight(node) {\n var height = 0;\n do node.height = height;\n while ((node = node.parent) && (node.height < ++height));\n}\n\nexport function Node(data) {\n this.data = data;\n this.depth =\n this.height = 0;\n this.parent = null;\n}\n\nNode.prototype = hierarchy.prototype = {\n constructor: Node,\n count: node_count,\n each: node_each,\n eachAfter: node_eachAfter,\n eachBefore: node_eachBefore,\n sum: node_sum,\n sort: node_sort,\n path: node_path,\n ancestors: node_ancestors,\n descendants: node_descendants,\n leaves: node_leaves,\n links: node_links,\n copy: node_copy\n};\n","export var slice = Array.prototype.slice;\n\nexport function shuffle(array) {\n var m = array.length,\n t,\n i;\n\n while (m) {\n i = Math.random() * m-- | 0;\n t = array[m];\n array[m] = array[i];\n array[i] = t;\n }\n\n return array;\n}\n","import {shuffle, slice} from \"../array.js\";\n\nexport default function(circles) {\n var i = 0, n = (circles = shuffle(slice.call(circles))).length, B = [], p, e;\n\n while (i < n) {\n p = circles[i];\n if (e && enclosesWeak(e, p)) ++i;\n else e = encloseBasis(B = extendBasis(B, p)), i = 0;\n }\n\n return e;\n}\n\nfunction extendBasis(B, p) {\n var i, j;\n\n if (enclosesWeakAll(p, B)) return [p];\n\n // If we get here then B must have at least one element.\n for (i = 0; i < B.length; ++i) {\n if (enclosesNot(p, B[i])\n && enclosesWeakAll(encloseBasis2(B[i], p), B)) {\n return [B[i], p];\n }\n }\n\n // If we get here then B must have at least two elements.\n for (i = 0; i < B.length - 1; ++i) {\n for (j = i + 1; j < B.length; ++j) {\n if (enclosesNot(encloseBasis2(B[i], B[j]), p)\n && enclosesNot(encloseBasis2(B[i], p), B[j])\n && enclosesNot(encloseBasis2(B[j], p), B[i])\n && enclosesWeakAll(encloseBasis3(B[i], B[j], p), B)) {\n return [B[i], B[j], p];\n }\n }\n }\n\n // If we get here then something is very wrong.\n throw new Error;\n}\n\nfunction enclosesNot(a, b) {\n var dr = a.r - b.r, dx = b.x - a.x, dy = b.y - a.y;\n return dr < 0 || dr * dr < dx * dx + dy * dy;\n}\n\nfunction enclosesWeak(a, b) {\n var dr = a.r - b.r + 1e-6, dx = b.x - a.x, dy = b.y - a.y;\n return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction enclosesWeakAll(a, B) {\n for (var i = 0; i < B.length; ++i) {\n if (!enclosesWeak(a, B[i])) {\n return false;\n }\n }\n return true;\n}\n\nfunction encloseBasis(B) {\n switch (B.length) {\n case 1: return encloseBasis1(B[0]);\n case 2: return encloseBasis2(B[0], B[1]);\n case 3: return encloseBasis3(B[0], B[1], B[2]);\n }\n}\n\nfunction encloseBasis1(a) {\n return {\n x: a.x,\n y: a.y,\n r: a.r\n };\n}\n\nfunction encloseBasis2(a, b) {\n var x1 = a.x, y1 = a.y, r1 = a.r,\n x2 = b.x, y2 = b.y, r2 = b.r,\n x21 = x2 - x1, y21 = y2 - y1, r21 = r2 - r1,\n l = Math.sqrt(x21 * x21 + y21 * y21);\n return {\n x: (x1 + x2 + x21 / l * r21) / 2,\n y: (y1 + y2 + y21 / l * r21) / 2,\n r: (l + r1 + r2) / 2\n };\n}\n\nfunction encloseBasis3(a, b, c) {\n var x1 = a.x, y1 = a.y, r1 = a.r,\n x2 = b.x, y2 = b.y, r2 = b.r,\n x3 = c.x, y3 = c.y, r3 = c.r,\n a2 = x1 - x2,\n a3 = x1 - x3,\n b2 = y1 - y2,\n b3 = y1 - y3,\n c2 = r2 - r1,\n c3 = r3 - r1,\n d1 = x1 * x1 + y1 * y1 - r1 * r1,\n d2 = d1 - x2 * x2 - y2 * y2 + r2 * r2,\n d3 = d1 - x3 * x3 - y3 * y3 + r3 * r3,\n ab = a3 * b2 - a2 * b3,\n xa = (b2 * d3 - b3 * d2) / (ab * 2) - x1,\n xb = (b3 * c2 - b2 * c3) / ab,\n ya = (a3 * d2 - a2 * d3) / (ab * 2) - y1,\n yb = (a2 * c3 - a3 * c2) / ab,\n A = xb * xb + yb * yb - 1,\n B = 2 * (r1 + xa * xb + ya * yb),\n C = xa * xa + ya * ya - r1 * r1,\n r = -(A ? (B + Math.sqrt(B * B - 4 * A * C)) / (2 * A) : C / B);\n return {\n x: x1 + xa + xb * r,\n y: y1 + ya + yb * r,\n r: r\n };\n}\n","import enclose from \"./enclose.js\";\n\nfunction place(b, a, c) {\n var dx = b.x - a.x, x, a2,\n dy = b.y - a.y, y, b2,\n d2 = dx * dx + dy * dy;\n if (d2) {\n a2 = a.r + c.r, a2 *= a2;\n b2 = b.r + c.r, b2 *= b2;\n if (a2 > b2) {\n x = (d2 + b2 - a2) / (2 * d2);\n y = Math.sqrt(Math.max(0, b2 / d2 - x * x));\n c.x = b.x - x * dx - y * dy;\n c.y = b.y - x * dy + y * dx;\n } else {\n x = (d2 + a2 - b2) / (2 * d2);\n y = Math.sqrt(Math.max(0, a2 / d2 - x * x));\n c.x = a.x + x * dx - y * dy;\n c.y = a.y + x * dy + y * dx;\n }\n } else {\n c.x = a.x + c.r;\n c.y = a.y;\n }\n}\n\nfunction intersects(a, b) {\n var dr = a.r + b.r - 1e-6, dx = b.x - a.x, dy = b.y - a.y;\n return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction score(node) {\n var a = node._,\n b = node.next._,\n ab = a.r + b.r,\n dx = (a.x * b.r + b.x * a.r) / ab,\n dy = (a.y * b.r + b.y * a.r) / ab;\n return dx * dx + dy * dy;\n}\n\nfunction Node(circle) {\n this._ = circle;\n this.next = null;\n this.previous = null;\n}\n\nexport function packEnclose(circles) {\n if (!(n = circles.length)) return 0;\n\n var a, b, c, n, aa, ca, i, j, k, sj, sk;\n\n // Place the first circle.\n a = circles[0], a.x = 0, a.y = 0;\n if (!(n > 1)) return a.r;\n\n // Place the second circle.\n b = circles[1], a.x = -b.r, b.x = a.r, b.y = 0;\n if (!(n > 2)) return a.r + b.r;\n\n // Place the third circle.\n place(b, a, c = circles[2]);\n\n // Initialize the front-chain using the first three circles a, b and c.\n a = new Node(a), b = new Node(b), c = new Node(c);\n a.next = c.previous = b;\n b.next = a.previous = c;\n c.next = b.previous = a;\n\n // Attempt to place each remaining circle…\n pack: for (i = 3; i < n; ++i) {\n place(a._, b._, c = circles[i]), c = new Node(c);\n\n // Find the closest intersecting circle on the front-chain, if any.\n // “Closeness” is determined by linear distance along the front-chain.\n // “Ahead” or “behind” is likewise determined by linear distance.\n j = b.next, k = a.previous, sj = b._.r, sk = a._.r;\n do {\n if (sj <= sk) {\n if (intersects(j._, c._)) {\n b = j, a.next = b, b.previous = a, --i;\n continue pack;\n }\n sj += j._.r, j = j.next;\n } else {\n if (intersects(k._, c._)) {\n a = k, a.next = b, b.previous = a, --i;\n continue pack;\n }\n sk += k._.r, k = k.previous;\n }\n } while (j !== k.next);\n\n // Success! Insert the new circle c between a and b.\n c.previous = a, c.next = b, a.next = b.previous = b = c;\n\n // Compute the new closest circle pair to the centroid.\n aa = score(a);\n while ((c = c.next) !== b) {\n if ((ca = score(c)) < aa) {\n a = c, aa = ca;\n }\n }\n b = a.next;\n }\n\n // Compute the enclosing circle of the front chain.\n a = [b._], c = b; while ((c = c.next) !== b) a.push(c._); c = enclose(a);\n\n // Translate the circles to put the enclosing circle around the origin.\n for (i = 0; i < n; ++i) a = circles[i], a.x -= c.x, a.y -= c.y;\n\n return c.r;\n}\n\nexport default function(circles) {\n packEnclose(circles);\n return circles;\n}\n","export function optional(f) {\n return f == null ? null : required(f);\n}\n\nexport function required(f) {\n if (typeof f !== \"function\") throw new Error;\n return f;\n}\n","export function constantZero() {\n return 0;\n}\n\nexport default function(x) {\n return function() {\n return x;\n };\n}\n","import {packEnclose} from \"./siblings.js\";\nimport {optional} from \"../accessors.js\";\nimport constant, {constantZero} from \"../constant.js\";\n\nfunction defaultRadius(d) {\n return Math.sqrt(d.value);\n}\n\nexport default function() {\n var radius = null,\n dx = 1,\n dy = 1,\n padding = constantZero;\n\n function pack(root) {\n root.x = dx / 2, root.y = dy / 2;\n if (radius) {\n root.eachBefore(radiusLeaf(radius))\n .eachAfter(packChildren(padding, 0.5))\n .eachBefore(translateChild(1));\n } else {\n root.eachBefore(radiusLeaf(defaultRadius))\n .eachAfter(packChildren(constantZero, 1))\n .eachAfter(packChildren(padding, root.r / Math.min(dx, dy)))\n .eachBefore(translateChild(Math.min(dx, dy) / (2 * root.r)));\n }\n return root;\n }\n\n pack.radius = function(x) {\n return arguments.length ? (radius = optional(x), pack) : radius;\n };\n\n pack.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], pack) : [dx, dy];\n };\n\n pack.padding = function(x) {\n return arguments.length ? (padding = typeof x === \"function\" ? x : constant(+x), pack) : padding;\n };\n\n return pack;\n}\n\nfunction radiusLeaf(radius) {\n return function(node) {\n if (!node.children) {\n node.r = Math.max(0, +radius(node) || 0);\n }\n };\n}\n\nfunction packChildren(padding, k) {\n return function(node) {\n if (children = node.children) {\n var children,\n i,\n n = children.length,\n r = padding(node) * k || 0,\n e;\n\n if (r) for (i = 0; i < n; ++i) children[i].r += r;\n e = packEnclose(children);\n if (r) for (i = 0; i < n; ++i) children[i].r -= r;\n node.r = e + r;\n }\n };\n}\n\nfunction translateChild(k) {\n return function(node) {\n var parent = node.parent;\n node.r *= k;\n if (parent) {\n node.x = parent.x + k * node.x;\n node.y = parent.y + k * node.y;\n }\n };\n}\n","import { I2DChart, ITooltip } from \"@hpcc-js/api\";\nimport { FAChar, InputField, ISize, SVGWidget, Text, Utility } from \"@hpcc-js/common\";\nimport { hierarchy as d3Hierarchy, pack as d3Pack } from \"d3-hierarchy\";\nimport { select as d3Select } from \"d3-selection\";\n\nimport \"../src/Bubble.css\";\n\nexport class Bubble extends SVGWidget {\n static __inputs: InputField[] = [{\n id: \"label\",\n type: \"string\"\n }, {\n id: \"value\",\n type: \"number\"\n }];\n\n labelWidgets;\n d3Pack;\n\n constructor() {\n super();\n I2DChart.call(this);\n ITooltip.call(this);\n Utility.SimpleSelectionMixin.call(this);\n\n this._drawStartPos = \"origin\";\n\n this.labelWidgets = {};\n\n this.d3Pack = d3Pack()\n .size([this.width(), this.height()])\n .padding(1.5)\n ;\n }\n\n size(): ISize;\n size(_): this;\n size(_?): ISize | this {\n const retVal = super.size.apply(this, arguments);\n if (arguments.length) {\n this.d3Pack\n .size([this.width(), this.height()])\n ;\n }\n return retVal;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this._selection.widgetElement(element);\n const context = this;\n this\n .tooltipHTML(function (d) {\n switch (context.tooltipStyle()) {\n case \"series-table\":\n return context.tooltipFormat({\n label: d[0],\n arr: context.columns().slice(1).map(function (column, i) {\n return {\n label: column,\n color: context._palette(d[0]),\n value: d[1]\n };\n })\n });\n default:\n return context.tooltipFormat({ label: d.data[0], value: d.data[1] });\n }\n })\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n const context = this;\n\n this._palette = this._palette.switch(this.paletteID());\n if (this.useClonedPalette()) {\n this._palette = this._palette.cloneNotExists(this.paletteID() + \"_\" + this.id());\n }\n\n const root = d3Hierarchy({ children: this.cloneData() })\n .sum(function (d) { return d[1]; })\n .sort(function (b, a) {\n return a[1] < b[1] ? -1 : a[1] > b[1] ? 1 : 0;\n })\n ;\n this.d3Pack(root);\n\n const node = element.selectAll(\".node\").data(root.children || [], d => d.data[0]);\n\n // Enter ---\n node.enter().append(\"g\")\n .attr(\"class\", (d, i) => \"node series series-\" + this.cssTag(d.data[0]))\n .attr(\"opacity\", 0)\n .call(this._selection.enter.bind(this._selection))\n .on(\"click\", function (d) {\n context.click(context.rowToObj(d.data), context.columns()[1], context._selection.selected(this));\n })\n .on(\"dblclick\", function (d) {\n context.dblclick(context.rowToObj(d.data), context.columns()[1], context._selection.selected(this));\n })\n .each(function (d) {\n const element2 = d3Select(this);\n const pos = { x: d.x, y: d.y };\n element2.append(\"circle\")\n .attr(\"transform\", \"translate(\" + pos.x + \",\" + pos.y + \")\")\n .attr(\"r\", 0)\n .on(\"mouseout.tooltip\", context.tooltip.hide)\n .on(\"mousemove.tooltip\", context.tooltip.show)\n ;\n if (d.__viz_faChar) {\n context.labelWidgets[d.data[0]] = new FAChar()\n .char(d.__viz_faChar)\n .target(this)\n .render()\n ;\n } else {\n context.labelWidgets[d.data[0]] = new Text()\n .text(d.data[0])\n .target(this)\n .render()\n ;\n }\n })\n .merge(node).transition()\n .attr(\"opacity\", 1)\n .each(function (d) {\n const element2 = d3Select(this);\n const pos = { x: d.x, y: d.y };\n element2.select(\"circle\").transition()\n .attr(\"transform\", \"translate(\" + pos.x + \",\" + pos.y + \")\")\n .style(\"fill\", context.fillColor(d.data, context.columns()[1], d.data[1]))\n .attr(\"r\", d.r)\n .select(\"title\")\n .text(d.data[0] + \" (\" + d.data[1] + \")\")\n ;\n if (d.__viz_faChar) {\n context.labelWidgets[d.data[0]]\n .pos(pos)\n .render()\n ;\n } else {\n context.labelWidgets[d.data[0]]\n .pos(pos)\n .colorFill_default(context.textColor(d.data, context.columns()[1], d.data[1]))\n .width(d.r * 2)\n .text(d.data[0])\n .render()\n ;\n }\n })\n ;\n\n // Exit ---\n node.exit().transition()\n .style(\"opacity\", 0)\n .remove()\n ;\n }\n\n exit(domNode, element) {\n super.exit(domNode, element);\n }\n\n}\nBubble.prototype._class += \" chart_Bubble\";\nBubble.prototype.implements(I2DChart.prototype);\nBubble.prototype.implements(ITooltip.prototype);\nBubble.prototype.mixin(Utility.SimpleSelectionMixin);\n\nexport interface Bubble {\n paletteID(): string;\n paletteID(_: string): this;\n useClonedPalette(): boolean;\n useClonedPalette(_: boolean): this;\n\n // I2DChart\n _palette;\n fillColor(row: any[], column: string, value: number): string;\n textColor(row: any[], column: string, value: number): string;\n click(row, column, selected): void;\n dblclick(row, column, selected): void;\n\n // ITooltip\n tooltip;\n tooltipHTML(_): string;\n tooltipFormat(_): string;\n tooltipStyle(): \"default\" | \"none\" | \"series-table\";\n\n // SimpleSelectionMixin\n _selection;\n}\n\nBubble.prototype.publish(\"paletteID\", \"default\", \"set\", \"Color palette for this widget\", Bubble.prototype._palette.switch(), { tags: [\"Basic\", \"Shared\"] });\nBubble.prototype.publish(\"useClonedPalette\", false, \"boolean\", \"Enable or disable using a cloned palette\", null, { tags: [\"Intermediate\", \"Shared\"] });\n","import { Scatter } from \"./Scatter.ts\";\n\nexport class BubbleXY extends Scatter {\n constructor() {\n super();\n }\n enter(domNode, element) {\n if (!this.pointSizeColumn_exists()) {\n this.pointSizeColumn(this.columns()[this.columns().length - 1]);\n }\n super.enter(domNode, element);\n }\n}\nBubbleXY.prototype._class += \" chart_BubbleXY\";\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(null, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import { descending as d3Descending } from \"d3-array\";\r\nimport { axisLeft as d3AxisLeft } from \"d3-axis\";\r\nimport { scaleLinear as d3ScaleLinear } from \"d3-scale\";\r\nimport { select as d3Select } from \"d3-selection\";\r\nimport { timerFlush as d3TimerFlush } from \"d3-timer\";\r\nimport \"d3-transition\";\r\n\r\nexport default function () {\r\n var orient = \"left\",\r\n reverse = false,\r\n vertical = false,\r\n ranges = bulvarRanges,\r\n markers = bulvarMarkers,\r\n measures = bulvarMeasures,\r\n width = 380,\r\n height = 30,\r\n xAxis = d3AxisLeft();\r\n\r\n // For each small multiple…\r\n function bulvar(g) {\r\n g.each(function (d, i) {\r\n var rangez = ranges.call(this, d, i).slice().sort(d3Descending),\r\n markerz = markers.call(this, d, i).slice().sort(d3Descending),\r\n measurez = measures.call(this, d, i).slice().sort(d3Descending),\r\n g2 = d3Select(this),\r\n extentX,\r\n extentY;\r\n\r\n var wrap = g2.select(\"g.wrap\");\r\n if (wrap.empty()) wrap = g2.append(\"g\").attr(\"class\", \"wrap\");\r\n\r\n if (vertical) {\r\n extentX = height, extentY = width;\r\n wrap.attr(\"transform\", \"rotate(90)translate(0,\" + -width + \")\");\r\n } else {\r\n extentX = width, extentY = height;\r\n wrap.attr(\"transform\", null);\r\n }\r\n\r\n // Compute the new x-scale.\r\n var x1 = d3ScaleLinear()\r\n .domain([0, Math.max(rangez[0], markerz[0], measurez[0])])\r\n .range(reverse ? [extentX, 0] : [0, extentX]);\r\n\r\n // Retrieve the old x-scale, if this is an update.\r\n var x0 = this.__chart__ || d3ScaleLinear()\r\n .domain([0, Infinity])\r\n .range(x1.range());\r\n\r\n // Stash the new scale.\r\n this.__chart__ = x1;\r\n\r\n // Derive width-scales from the x-scales.\r\n var w0 = bulvarWidth(x0),\r\n w1 = bulvarWidth(x1);\r\n\r\n // Update the range rects.\r\n var range = wrap.selectAll(\"rect.range\")\r\n .data(rangez);\r\n\r\n range.enter().append(\"rect\")\r\n .attr(\"class\", function (_d, i2) { return \"range s\" + i2; })\r\n .attr(\"width\", w0)\r\n .attr(\"height\", extentY)\r\n .attr(\"x\", reverse ? x0 : 0)\r\n .merge(range)\r\n .transition(range)\r\n .attr(\"x\", reverse ? x1 : 0)\r\n .attr(\"width\", w1)\r\n .attr(\"height\", extentY);\r\n\r\n // Update the measure rects.\r\n var measure = wrap.selectAll(\"rect.measure\")\r\n .data(measurez);\r\n\r\n measure.enter().append(\"rect\")\r\n .attr(\"class\", function (_d, i2) { return \"measure s\" + i2; })\r\n .attr(\"width\", w0)\r\n .attr(\"height\", extentY / 3)\r\n .attr(\"x\", reverse ? x0 : 0)\r\n .attr(\"y\", extentY / 3)\r\n .merge(measure)\r\n .transition(measure)\r\n .attr(\"width\", w1)\r\n .attr(\"height\", extentY / 3)\r\n .attr(\"x\", reverse ? x1 : 0)\r\n .attr(\"y\", extentY / 3);\r\n\r\n // Update the marker lines.\r\n var marker = wrap.selectAll(\"line.marker\")\r\n .data(markerz);\r\n\r\n marker.enter().append(\"line\")\r\n .attr(\"class\", \"marker\")\r\n .attr(\"x1\", x0)\r\n .attr(\"x2\", x0)\r\n .attr(\"y1\", extentY / 6)\r\n .attr(\"y2\", extentY * 5 / 6)\r\n .merge(marker)\r\n .transition(marker)\r\n .attr(\"x1\", x1)\r\n .attr(\"x2\", x1)\r\n .attr(\"y1\", extentY / 6)\r\n .attr(\"y2\", extentY * 5 / 6);\r\n\r\n var axis = g2.selectAll(\"g.axis\").data([0]);\r\n axis.enter().append(\"g\").attr(\"class\", \"axis\");\r\n axis.attr(\"transform\", vertical ? null : \"translate(0,\" + extentY + \")\")\r\n .call(xAxis.scale(x1));\r\n });\r\n d3TimerFlush();\r\n }\r\n\r\n // left, right, top, bottom\r\n bulvar.orient = function (_) {\r\n if (!arguments.length) return orient;\r\n orient = _ + \"\";\r\n reverse = orient === \"right\" || orient === \"bottom\";\r\n xAxis.orient((vertical = orient === \"top\" || orient === \"bottom\") ? \"left\" : \"bottom\"); // eslint-disable-line\r\n return bulvar;\r\n };\r\n\r\n // ranges (bad, satisfactory, good)\r\n bulvar.ranges = function (_) {\r\n if (!arguments.length) return ranges;\r\n ranges = _;\r\n return bulvar;\r\n };\r\n\r\n // markers (previous, goal)\r\n bulvar.markers = function (_) {\r\n if (!arguments.length) return markers;\r\n markers = _;\r\n return bulvar;\r\n };\r\n\r\n // measures (actual, forecast)\r\n bulvar.measures = function (_) {\r\n if (!arguments.length) return measures;\r\n measures = _;\r\n return bulvar;\r\n };\r\n\r\n bulvar.width = function (_) {\r\n if (!arguments.length) return width;\r\n width = +_;\r\n return bulvar;\r\n };\r\n\r\n bulvar.height = function (_) {\r\n if (!arguments.length) return height;\r\n height = +_;\r\n return bulvar;\r\n };\r\n\r\n bulvar.tickFormat = function (_) {\r\n if (!arguments.length) return xAxis.tickFormat();\r\n xAxis.tickFormat(_);\r\n return bulvar;\r\n };\r\n\r\n return bulvar;\r\n}\r\n\r\nfunction bulvarRanges(d) {\r\n return d.ranges;\r\n}\r\n\r\nfunction bulvarMarkers(d) {\r\n return d.markers;\r\n}\r\n\r\nfunction bulvarMeasures(d) {\r\n return d.measures;\r\n}\r\n\r\nfunction bulvarWidth(x) {\r\n var x0 = x(0);\r\n return function (d) {\r\n return Math.abs(x(d) - x0);\r\n };\r\n}\r\n","import { HTMLWidget, Utility } from \"@hpcc-js/common\";\nimport { select as d3Select } from \"d3-selection\";\nimport { bullet as d3Bullet } from \"d3v4-bullet\";\n\nimport \"../src/Bullet.css\";\n\nexport class Bullet extends HTMLWidget {\n\n private _hiddenColumns = {};\n\n constructor() {\n super();\n Utility.SimpleSelectionMixin.call(this, true);\n }\n\n bulletData() {\n const context = this;\n this._hiddenColumns = {};\n const columns = this.columns();\n return this.data().map(function (row) {\n return {\n title: valueOf(row, this.titleColumn()),\n subtitle: valueOf(row, this.subtitleColumn()),\n ranges: valueOf(row, this.rangesColumn(), \"range\"),\n measures: valueOf(row, this.measuresColumn(), \"measure\"),\n markers: valueOf(row, this.markersColumn(), \"marker\"),\n origRow: row\n };\n }, this);\n\n function valueOf(row, column, columnType?) {\n const colIdx = columns.indexOf(column);\n if (colIdx >= 0) {\n if (row[colIdx] instanceof Array) {\n return row[colIdx];\n }\n return [row[colIdx]];\n }\n if (columnType) {\n context._hiddenColumns[columnType] = true;\n }\n return [0];\n }\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n d3Select(domNode.parentNode).style(\"overflow\", \"auto\");\n this._selection.widgetElement(element);\n }\n\n update(_domNode, element) {\n super.update(_domNode, element);\n const context = this;\n\n element.selectAll(\".axis\")\n .style(\"display\", \"none\")\n ;\n element.selectAll(\".range,.measure,.marker\")\n .style(\"display\", null)\n ;\n\n const margin = { left: 2, top: 8, right: 2, bottom: 8 };\n const width = this.width() - margin.left - margin.right;\n const height = 40 - margin.top - margin.bottom;\n\n const svg = element.selectAll(\"svg\").data(this.bulletData());\n const svgUpdate = svg.enter().append(\"svg\")\n .attr(\"class\", \"bullet\")\n .call(this._selection.enter.bind(this._selection))\n .on(\"click\", function (d) {\n context.click(context.rowToObj(d.origRow), context.titleColumn(), context._selection.selected(this));\n })\n .on(\"dblclick\", function (d) {\n context.dblclick(context.rowToObj(d.origRow), context.titleColumn(), context._selection.selected(this));\n })\n .each(function () {\n const element2 = d3Select(this);\n const bulletBar = element2.append(\"g\")\n .attr(\"class\", (d, i) => \"bulletBar series series-\" + context.cssTag(context.titleColumn()))\n ;\n const bulletTitle = bulletBar.append(\"g\")\n .attr(\"class\", \"bulletTitle\")\n ;\n bulletTitle.append(\"text\")\n .attr(\"class\", \"title\")\n ;\n bulletTitle.append(\"text\")\n .attr(\"class\", \"subtitle\")\n .attr(\"dy\", \"1em\")\n ;\n })\n .merge(svg)\n ;\n\n // Title ---\n const title = svgUpdate.select(\".bulletTitle\")\n .style(\"text-anchor\", \"end\")\n .attr(\"transform\", \"translate(-6,\" + height / 2 + \")\")\n ;\n title.select(\".title\")\n .text(function (d) { return d.title; })\n ;\n title.select(\".subtitle\")\n .text(function (d) { return d.subtitle; })\n ;\n\n let titleWidth = 0;\n title.each(function () {\n const bbox = this.getBBox();\n if (bbox.width > titleWidth) {\n titleWidth = bbox.width;\n }\n });\n\n // Bullet Chart ---\n const chart = d3Bullet()\n .width(width - titleWidth - 6)\n .height(height)\n ;\n svgUpdate\n .attr(\"width\", width)\n .attr(\"height\", height + margin.top + margin.bottom)\n .style(\"margin-left\", `${margin.left}px`)\n ;\n svgUpdate.select(\".bulletBar\")\n .attr(\"transform\", \"translate(\" + (titleWidth + 6) + \",\" + margin.top + \")\")\n .call(chart)\n ;\n\n svg.exit().remove();\n\n if (Object.keys(this._hiddenColumns).length > 0) {\n element.selectAll(`.${Object.keys(this._hiddenColumns).join(\",.\")}`)\n .style(\"display\", \"none\")\n ;\n }\n }\n\n exit(domNode, element) {\n super.exit(domNode, element);\n }\n\n // Events ---\n click(row, column, selected) {\n // console.log(\"Click: \" + JSON.stringify(row) + \", \" + column + \",\" + selected);\n }\n\n dblclick(row, column, selected) {\n // console.log(\"Double click: \" + JSON.stringify(row) + \", \" + column + \",\" + selected);\n }\n\n // SimpleSelectionMixin\n _selection;\n}\nBullet.prototype._class += \" chart_Bullet\";\n\nexport interface Bullet {\n titleColumn(): string;\n titleColumn(_: string): this;\n subtitleColumn(): string;\n subtitleColumn(_: string): this;\n rangesColumn(): string;\n rangesColumn(_: string): this;\n measuresColumn(): string;\n measuresColumn(_: string): this;\n markersColumn(): string;\n markersColumn(_: string): this;\n}\n\nBullet.prototype.publish(\"titleColumn\", null, \"set\", \"Title Column\", function () { return this.columns(); }, { optional: true });\nBullet.prototype.publish(\"subtitleColumn\", null, \"set\", \"Subtitle Column\", function () { return this.columns(); }, { optional: true });\nBullet.prototype.publish(\"rangesColumn\", null, \"set\", \"Ranges Column\", function () { return this.columns(); }, { optional: true });\nBullet.prototype.publish(\"measuresColumn\", null, \"set\", \"Measures Column\", function () { return this.columns(); }, { optional: true });\nBullet.prototype.publish(\"markersColumn\", null, \"set\", \"Markers Column\", function () { return this.columns(); }, { optional: true });\n\n","var array = Array.prototype;\n\nexport var slice = array.slice;\n","export default function(a, b) {\n return a - b;\n}\n","export default function(ring) {\n var i = 0, n = ring.length, area = ring[n - 1][1] * ring[0][0] - ring[n - 1][0] * ring[0][1];\n while (++i < n) area += ring[i - 1][1] * ring[i][0] - ring[i - 1][0] * ring[i][1];\n return area;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(ring, hole) {\n var i = -1, n = hole.length, c;\n while (++i < n) if (c = ringContains(ring, hole[i])) return c;\n return 0;\n}\n\nfunction ringContains(ring, point) {\n var x = point[0], y = point[1], contains = -1;\n for (var i = 0, n = ring.length, j = n - 1; i < n; j = i++) {\n var pi = ring[i], xi = pi[0], yi = pi[1], pj = ring[j], xj = pj[0], yj = pj[1];\n if (segmentContains(pi, pj, point)) return 0;\n if (((yi > y) !== (yj > y)) && ((x < (xj - xi) * (y - yi) / (yj - yi) + xi))) contains = -contains;\n }\n return contains;\n}\n\nfunction segmentContains(a, b, c) {\n var i; return collinear(a, b, c) && within(a[i = +(a[0] === b[0])], c[i], b[i]);\n}\n\nfunction collinear(a, b, c) {\n return (b[0] - a[0]) * (c[1] - a[1]) === (c[0] - a[0]) * (b[1] - a[1]);\n}\n\nfunction within(p, q, r) {\n return p <= q && q <= r || r <= q && q <= p;\n}\n","export default function() {}\n","import {extent, thresholdSturges, tickStep, range} from \"d3-array\";\nimport {slice} from \"./array\";\nimport ascending from \"./ascending\";\nimport area from \"./area\";\nimport constant from \"./constant\";\nimport contains from \"./contains\";\nimport noop from \"./noop\";\n\nvar cases = [\n [],\n [[[1.0, 1.5], [0.5, 1.0]]],\n [[[1.5, 1.0], [1.0, 1.5]]],\n [[[1.5, 1.0], [0.5, 1.0]]],\n [[[1.0, 0.5], [1.5, 1.0]]],\n [[[1.0, 1.5], [0.5, 1.0]], [[1.0, 0.5], [1.5, 1.0]]],\n [[[1.0, 0.5], [1.0, 1.5]]],\n [[[1.0, 0.5], [0.5, 1.0]]],\n [[[0.5, 1.0], [1.0, 0.5]]],\n [[[1.0, 1.5], [1.0, 0.5]]],\n [[[0.5, 1.0], [1.0, 0.5]], [[1.5, 1.0], [1.0, 1.5]]],\n [[[1.5, 1.0], [1.0, 0.5]]],\n [[[0.5, 1.0], [1.5, 1.0]]],\n [[[1.0, 1.5], [1.5, 1.0]]],\n [[[0.5, 1.0], [1.0, 1.5]]],\n []\n];\n\nexport default function() {\n var dx = 1,\n dy = 1,\n threshold = thresholdSturges,\n smooth = smoothLinear;\n\n function contours(values) {\n var tz = threshold(values);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n var domain = extent(values), start = domain[0], stop = domain[1];\n tz = tickStep(start, stop, tz);\n tz = range(Math.floor(start / tz) * tz, Math.floor(stop / tz) * tz, tz);\n } else {\n tz = tz.slice().sort(ascending);\n }\n\n return tz.map(function(value) {\n return contour(values, value);\n });\n }\n\n // Accumulate, smooth contour rings, assign holes to exterior rings.\n // Based on https://github.com/mbostock/shapefile/blob/v0.6.2/shp/polygon.js\n function contour(values, value) {\n var polygons = [],\n holes = [];\n\n isorings(values, value, function(ring) {\n smooth(ring, values, value);\n if (area(ring) > 0) polygons.push([ring]);\n else holes.push(ring);\n });\n\n holes.forEach(function(hole) {\n for (var i = 0, n = polygons.length, polygon; i < n; ++i) {\n if (contains((polygon = polygons[i])[0], hole) !== -1) {\n polygon.push(hole);\n return;\n }\n }\n });\n\n return {\n type: \"MultiPolygon\",\n value: value,\n coordinates: polygons\n };\n }\n\n // Marching squares with isolines stitched into rings.\n // Based on https://github.com/topojson/topojson-client/blob/v3.0.0/src/stitch.js\n function isorings(values, value, callback) {\n var fragmentByStart = new Array,\n fragmentByEnd = new Array,\n x, y, t0, t1, t2, t3;\n\n // Special case for the first row (y = -1, t2 = t3 = 0).\n x = y = -1;\n t1 = values[0] >= value;\n cases[t1 << 1].forEach(stitch);\n while (++x < dx - 1) {\n t0 = t1, t1 = values[x + 1] >= value;\n cases[t0 | t1 << 1].forEach(stitch);\n }\n cases[t1 << 0].forEach(stitch);\n\n // General case for the intermediate rows.\n while (++y < dy - 1) {\n x = -1;\n t1 = values[y * dx + dx] >= value;\n t2 = values[y * dx] >= value;\n cases[t1 << 1 | t2 << 2].forEach(stitch);\n while (++x < dx - 1) {\n t0 = t1, t1 = values[y * dx + dx + x + 1] >= value;\n t3 = t2, t2 = values[y * dx + x + 1] >= value;\n cases[t0 | t1 << 1 | t2 << 2 | t3 << 3].forEach(stitch);\n }\n cases[t1 | t2 << 3].forEach(stitch);\n }\n\n // Special case for the last row (y = dy - 1, t0 = t1 = 0).\n x = -1;\n t2 = values[y * dx] >= value;\n cases[t2 << 2].forEach(stitch);\n while (++x < dx - 1) {\n t3 = t2, t2 = values[y * dx + x + 1] >= value;\n cases[t2 << 2 | t3 << 3].forEach(stitch);\n }\n cases[t2 << 3].forEach(stitch);\n\n function stitch(line) {\n var start = [line[0][0] + x, line[0][1] + y],\n end = [line[1][0] + x, line[1][1] + y],\n startIndex = index(start),\n endIndex = index(end),\n f, g;\n if (f = fragmentByEnd[startIndex]) {\n if (g = fragmentByStart[endIndex]) {\n delete fragmentByEnd[f.end];\n delete fragmentByStart[g.start];\n if (f === g) {\n f.ring.push(end);\n callback(f.ring);\n } else {\n fragmentByStart[f.start] = fragmentByEnd[g.end] = {start: f.start, end: g.end, ring: f.ring.concat(g.ring)};\n }\n } else {\n delete fragmentByEnd[f.end];\n f.ring.push(end);\n fragmentByEnd[f.end = endIndex] = f;\n }\n } else if (f = fragmentByStart[endIndex]) {\n if (g = fragmentByEnd[startIndex]) {\n delete fragmentByStart[f.start];\n delete fragmentByEnd[g.end];\n if (f === g) {\n f.ring.push(end);\n callback(f.ring);\n } else {\n fragmentByStart[g.start] = fragmentByEnd[f.end] = {start: g.start, end: f.end, ring: g.ring.concat(f.ring)};\n }\n } else {\n delete fragmentByStart[f.start];\n f.ring.unshift(start);\n fragmentByStart[f.start = startIndex] = f;\n }\n } else {\n fragmentByStart[startIndex] = fragmentByEnd[endIndex] = {start: startIndex, end: endIndex, ring: [start, end]};\n }\n }\n }\n\n function index(point) {\n return point[0] * 2 + point[1] * (dx + 1) * 4;\n }\n\n function smoothLinear(ring, values, value) {\n ring.forEach(function(point) {\n var x = point[0],\n y = point[1],\n xt = x | 0,\n yt = y | 0,\n v0,\n v1 = values[yt * dx + xt];\n if (x > 0 && x < dx && xt === x) {\n v0 = values[yt * dx + xt - 1];\n point[0] = x + (value - v0) / (v1 - v0) - 0.5;\n }\n if (y > 0 && y < dy && yt === y) {\n v0 = values[(yt - 1) * dx + xt];\n point[1] = y + (value - v0) / (v1 - v0) - 0.5;\n }\n });\n }\n\n contours.contour = contour;\n\n contours.size = function(_) {\n if (!arguments.length) return [dx, dy];\n var _0 = Math.ceil(_[0]), _1 = Math.ceil(_[1]);\n if (!(_0 > 0) || !(_1 > 0)) throw new Error(\"invalid size\");\n return dx = _0, dy = _1, contours;\n };\n\n contours.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), contours) : threshold;\n };\n\n contours.smooth = function(_) {\n return arguments.length ? (smooth = _ ? smoothLinear : noop, contours) : smooth === smoothLinear;\n };\n\n return contours;\n}\n","// TODO Optimize edge cases.\n// TODO Optimize index calculation.\n// TODO Optimize arguments.\nexport function blurX(source, target, r) {\n var n = source.width,\n m = source.height,\n w = (r << 1) + 1;\n for (var j = 0; j < m; ++j) {\n for (var i = 0, sr = 0; i < n + r; ++i) {\n if (i < n) {\n sr += source.data[i + j * n];\n }\n if (i >= r) {\n if (i >= w) {\n sr -= source.data[i - w + j * n];\n }\n target.data[i - r + j * n] = sr / Math.min(i + 1, n - 1 + w - i, w);\n }\n }\n }\n}\n\n// TODO Optimize edge cases.\n// TODO Optimize index calculation.\n// TODO Optimize arguments.\nexport function blurY(source, target, r) {\n var n = source.width,\n m = source.height,\n w = (r << 1) + 1;\n for (var i = 0; i < n; ++i) {\n for (var j = 0, sr = 0; j < m + r; ++j) {\n if (j < m) {\n sr += source.data[i + j * n];\n }\n if (j >= r) {\n if (j >= w) {\n sr -= source.data[i + (j - w) * n];\n }\n target.data[i + (j - r) * n] = sr / Math.min(j + 1, m - 1 + w - j, w);\n }\n }\n }\n}\n","import {max, range, tickStep} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {blurX, blurY} from \"./blur\";\nimport constant from \"./constant\";\nimport contours from \"./contours\";\n\nfunction defaultX(d) {\n return d[0];\n}\n\nfunction defaultY(d) {\n return d[1];\n}\n\nfunction defaultWeight() {\n return 1;\n}\n\nexport default function() {\n var x = defaultX,\n y = defaultY,\n weight = defaultWeight,\n dx = 960,\n dy = 500,\n r = 20, // blur radius\n k = 2, // log2(grid cell size)\n o = r * 3, // grid offset, to pad for blur\n n = (dx + o * 2) >> k, // grid width\n m = (dy + o * 2) >> k, // grid height\n threshold = constant(20);\n\n function density(data) {\n var values0 = new Float32Array(n * m),\n values1 = new Float32Array(n * m);\n\n data.forEach(function(d, i, data) {\n var xi = (+x(d, i, data) + o) >> k,\n yi = (+y(d, i, data) + o) >> k,\n wi = +weight(d, i, data);\n if (xi >= 0 && xi < n && yi >= 0 && yi < m) {\n values0[xi + yi * n] += wi;\n }\n });\n\n // TODO Optimize.\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n\n var tz = threshold(values0);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n var stop = max(values0);\n tz = tickStep(0, stop, tz);\n tz = range(0, Math.floor(stop / tz) * tz, tz);\n tz.shift();\n }\n\n return contours()\n .thresholds(tz)\n .size([n, m])\n (values0)\n .map(transform);\n }\n\n function transform(geometry) {\n geometry.value *= Math.pow(2, -2 * k); // Density in points per square pixel.\n geometry.coordinates.forEach(transformPolygon);\n return geometry;\n }\n\n function transformPolygon(coordinates) {\n coordinates.forEach(transformRing);\n }\n\n function transformRing(coordinates) {\n coordinates.forEach(transformPoint);\n }\n\n // TODO Optimize.\n function transformPoint(coordinates) {\n coordinates[0] = coordinates[0] * Math.pow(2, k) - o;\n coordinates[1] = coordinates[1] * Math.pow(2, k) - o;\n }\n\n function resize() {\n o = r * 3;\n n = (dx + o * 2) >> k;\n m = (dy + o * 2) >> k;\n return density;\n }\n\n density.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), density) : x;\n };\n\n density.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), density) : y;\n };\n\n density.weight = function(_) {\n return arguments.length ? (weight = typeof _ === \"function\" ? _ : constant(+_), density) : weight;\n };\n\n density.size = function(_) {\n if (!arguments.length) return [dx, dy];\n var _0 = Math.ceil(_[0]), _1 = Math.ceil(_[1]);\n if (!(_0 >= 0) && !(_0 >= 0)) throw new Error(\"invalid size\");\n return dx = _0, dy = _1, resize();\n };\n\n density.cellSize = function(_) {\n if (!arguments.length) return 1 << k;\n if (!((_ = +_) >= 1)) throw new Error(\"invalid cell size\");\n return k = Math.floor(Math.log(_) / Math.LN2), resize();\n };\n\n density.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), density) : threshold;\n };\n\n density.bandwidth = function(_) {\n if (!arguments.length) return Math.sqrt(r * (r + 1));\n if (!((_ = +_) >= 0)) throw new Error(\"invalid bandwidth\");\n return r = Math.round((Math.sqrt(4 * _ * _ + 1) - 1) / 2), resize();\n };\n\n return density;\n}\n","// Adds floating point numbers with twice the normal precision.\n// Reference: J. R. Shewchuk, Adaptive Precision Floating-Point Arithmetic and\n// Fast Robust Geometric Predicates, Discrete & Computational Geometry 18(3)\n// 305–363 (1997).\n// Code adapted from GeographicLib by Charles F. F. Karney,\n// http://geographiclib.sourceforge.net/\n\nexport default function() {\n return new Adder;\n}\n\nfunction Adder() {\n this.reset();\n}\n\nAdder.prototype = {\n constructor: Adder,\n reset: function() {\n this.s = // rounded value\n this.t = 0; // exact error\n },\n add: function(y) {\n add(temp, y, this.t);\n add(this, temp.s, this.s);\n if (this.s) this.t += temp.t;\n else this.s = temp.t;\n },\n valueOf: function() {\n return this.s;\n }\n};\n\nvar temp = new Adder;\n\nfunction add(adder, a, b) {\n var x = adder.s = a + b,\n bv = x - a,\n av = x - bv;\n adder.t = (a - av) + (b - bv);\n}\n","export var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var quarterPi = pi / 4;\nexport var tau = pi * 2;\n\nexport var degrees = 180 / pi;\nexport var radians = pi / 180;\n\nexport var abs = Math.abs;\nexport var atan = Math.atan;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var ceil = Math.ceil;\nexport var exp = Math.exp;\nexport var floor = Math.floor;\nexport var log = Math.log;\nexport var pow = Math.pow;\nexport var sin = Math.sin;\nexport var sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; };\nexport var sqrt = Math.sqrt;\nexport var tan = Math.tan;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x);\n}\n\nexport function haversin(x) {\n return (x = sin(x / 2)) * x;\n}\n","export default function noop() {}\n","function streamGeometry(geometry, stream) {\n if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) {\n streamGeometryType[geometry.type](geometry, stream);\n }\n}\n\nvar streamObjectType = {\n Feature: function(object, stream) {\n streamGeometry(object.geometry, stream);\n },\n FeatureCollection: function(object, stream) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) streamGeometry(features[i].geometry, stream);\n }\n};\n\nvar streamGeometryType = {\n Sphere: function(object, stream) {\n stream.sphere();\n },\n Point: function(object, stream) {\n object = object.coordinates;\n stream.point(object[0], object[1], object[2]);\n },\n MultiPoint: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]);\n },\n LineString: function(object, stream) {\n streamLine(object.coordinates, stream, 0);\n },\n MultiLineString: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamLine(coordinates[i], stream, 0);\n },\n Polygon: function(object, stream) {\n streamPolygon(object.coordinates, stream);\n },\n MultiPolygon: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamPolygon(coordinates[i], stream);\n },\n GeometryCollection: function(object, stream) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) streamGeometry(geometries[i], stream);\n }\n};\n\nfunction streamLine(coordinates, stream, closed) {\n var i = -1, n = coordinates.length - closed, coordinate;\n stream.lineStart();\n while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]);\n stream.lineEnd();\n}\n\nfunction streamPolygon(coordinates, stream) {\n var i = -1, n = coordinates.length;\n stream.polygonStart();\n while (++i < n) streamLine(coordinates[i], stream, 1);\n stream.polygonEnd();\n}\n\nexport default function(object, stream) {\n if (object && streamObjectType.hasOwnProperty(object.type)) {\n streamObjectType[object.type](object, stream);\n } else {\n streamGeometry(object, stream);\n }\n}\n","export default function(x) {\n return x;\n}\n","import adder from \"../adder.js\";\nimport {abs} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nvar areaSum = adder(),\n areaRingSum = adder(),\n x00,\n y00,\n x0,\n y0;\n\nvar areaStream = {\n point: noop,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: function() {\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function() {\n areaStream.lineStart = areaStream.lineEnd = areaStream.point = noop;\n areaSum.add(abs(areaRingSum));\n areaRingSum.reset();\n },\n result: function() {\n var area = areaSum / 2;\n areaSum.reset();\n return area;\n }\n};\n\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\n\nfunction areaPointFirst(x, y) {\n areaStream.point = areaPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction areaPoint(x, y) {\n areaRingSum.add(y0 * x - x0 * y);\n x0 = x, y0 = y;\n}\n\nfunction areaRingEnd() {\n areaPoint(x00, y00);\n}\n\nexport default areaStream;\n","import noop from \"../noop.js\";\n\nvar x0 = Infinity,\n y0 = x0,\n x1 = -x0,\n y1 = x1;\n\nvar boundsStream = {\n point: boundsPoint,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: noop,\n polygonEnd: noop,\n result: function() {\n var bounds = [[x0, y0], [x1, y1]];\n x1 = y1 = -(y0 = x0 = Infinity);\n return bounds;\n }\n};\n\nfunction boundsPoint(x, y) {\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n}\n\nexport default boundsStream;\n","import {sqrt} from \"../math.js\";\n\n// TODO Enforce positive area for exterior, negative area for interior?\n\nvar X0 = 0,\n Y0 = 0,\n Z0 = 0,\n X1 = 0,\n Y1 = 0,\n Z1 = 0,\n X2 = 0,\n Y2 = 0,\n Z2 = 0,\n x00,\n y00,\n x0,\n y0;\n\nvar centroidStream = {\n point: centroidPoint,\n lineStart: centroidLineStart,\n lineEnd: centroidLineEnd,\n polygonStart: function() {\n centroidStream.lineStart = centroidRingStart;\n centroidStream.lineEnd = centroidRingEnd;\n },\n polygonEnd: function() {\n centroidStream.point = centroidPoint;\n centroidStream.lineStart = centroidLineStart;\n centroidStream.lineEnd = centroidLineEnd;\n },\n result: function() {\n var centroid = Z2 ? [X2 / Z2, Y2 / Z2]\n : Z1 ? [X1 / Z1, Y1 / Z1]\n : Z0 ? [X0 / Z0, Y0 / Z0]\n : [NaN, NaN];\n X0 = Y0 = Z0 =\n X1 = Y1 = Z1 =\n X2 = Y2 = Z2 = 0;\n return centroid;\n }\n};\n\nfunction centroidPoint(x, y) {\n X0 += x;\n Y0 += y;\n ++Z0;\n}\n\nfunction centroidLineStart() {\n centroidStream.point = centroidPointFirstLine;\n}\n\nfunction centroidPointFirstLine(x, y) {\n centroidStream.point = centroidPointLine;\n centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidPointLine(x, y) {\n var dx = x - x0, dy = y - y0, z = sqrt(dx * dx + dy * dy);\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidLineEnd() {\n centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingStart() {\n centroidStream.point = centroidPointFirstRing;\n}\n\nfunction centroidRingEnd() {\n centroidPointRing(x00, y00);\n}\n\nfunction centroidPointFirstRing(x, y) {\n centroidStream.point = centroidPointRing;\n centroidPoint(x00 = x0 = x, y00 = y0 = y);\n}\n\nfunction centroidPointRing(x, y) {\n var dx = x - x0,\n dy = y - y0,\n z = sqrt(dx * dx + dy * dy);\n\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n\n z = y0 * x - x0 * y;\n X2 += z * (x0 + x);\n Y2 += z * (y0 + y);\n Z2 += z * 3;\n centroidPoint(x0 = x, y0 = y);\n}\n\nexport default centroidStream;\n","import {tau} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nexport default function PathContext(context) {\n this._context = context;\n}\n\nPathContext.prototype = {\n _radius: 4.5,\n pointRadius: function(_) {\n return this._radius = _, this;\n },\n polygonStart: function() {\n this._line = 0;\n },\n polygonEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line === 0) this._context.closePath();\n this._point = NaN;\n },\n point: function(x, y) {\n switch (this._point) {\n case 0: {\n this._context.moveTo(x, y);\n this._point = 1;\n break;\n }\n case 1: {\n this._context.lineTo(x, y);\n break;\n }\n default: {\n this._context.moveTo(x + this._radius, y);\n this._context.arc(x, y, this._radius, 0, tau);\n break;\n }\n }\n },\n result: noop\n};\n","import adder from \"../adder.js\";\nimport {sqrt} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nvar lengthSum = adder(),\n lengthRing,\n x00,\n y00,\n x0,\n y0;\n\nvar lengthStream = {\n point: noop,\n lineStart: function() {\n lengthStream.point = lengthPointFirst;\n },\n lineEnd: function() {\n if (lengthRing) lengthPoint(x00, y00);\n lengthStream.point = noop;\n },\n polygonStart: function() {\n lengthRing = true;\n },\n polygonEnd: function() {\n lengthRing = null;\n },\n result: function() {\n var length = +lengthSum;\n lengthSum.reset();\n return length;\n }\n};\n\nfunction lengthPointFirst(x, y) {\n lengthStream.point = lengthPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction lengthPoint(x, y) {\n x0 -= x, y0 -= y;\n lengthSum.add(sqrt(x0 * x0 + y0 * y0));\n x0 = x, y0 = y;\n}\n\nexport default lengthStream;\n","export default function PathString() {\n this._string = [];\n}\n\nPathString.prototype = {\n _radius: 4.5,\n _circle: circle(4.5),\n pointRadius: function(_) {\n if ((_ = +_) !== this._radius) this._radius = _, this._circle = null;\n return this;\n },\n polygonStart: function() {\n this._line = 0;\n },\n polygonEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line === 0) this._string.push(\"Z\");\n this._point = NaN;\n },\n point: function(x, y) {\n switch (this._point) {\n case 0: {\n this._string.push(\"M\", x, \",\", y);\n this._point = 1;\n break;\n }\n case 1: {\n this._string.push(\"L\", x, \",\", y);\n break;\n }\n default: {\n if (this._circle == null) this._circle = circle(this._radius);\n this._string.push(\"M\", x, \",\", y, this._circle);\n break;\n }\n }\n },\n result: function() {\n if (this._string.length) {\n var result = this._string.join(\"\");\n this._string = [];\n return result;\n } else {\n return null;\n }\n }\n};\n\nfunction circle(radius) {\n return \"m0,\" + radius\n + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + -2 * radius\n + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + 2 * radius\n + \"z\";\n}\n","import identity from \"../identity.js\";\nimport stream from \"../stream.js\";\nimport pathArea from \"./area.js\";\nimport pathBounds from \"./bounds.js\";\nimport pathCentroid from \"./centroid.js\";\nimport PathContext from \"./context.js\";\nimport pathMeasure from \"./measure.js\";\nimport PathString from \"./string.js\";\n\nexport default function(projection, context) {\n var pointRadius = 4.5,\n projectionStream,\n contextStream;\n\n function path(object) {\n if (object) {\n if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n stream(object, projectionStream(contextStream));\n }\n return contextStream.result();\n }\n\n path.area = function(object) {\n stream(object, projectionStream(pathArea));\n return pathArea.result();\n };\n\n path.measure = function(object) {\n stream(object, projectionStream(pathMeasure));\n return pathMeasure.result();\n };\n\n path.bounds = function(object) {\n stream(object, projectionStream(pathBounds));\n return pathBounds.result();\n };\n\n path.centroid = function(object) {\n stream(object, projectionStream(pathCentroid));\n return pathCentroid.result();\n };\n\n path.projection = function(_) {\n return arguments.length ? (projectionStream = _ == null ? (projection = null, identity) : (projection = _).stream, path) : projection;\n };\n\n path.context = function(_) {\n if (!arguments.length) return context;\n contextStream = _ == null ? (context = null, new PathString) : new PathContext(context = _);\n if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n return path;\n };\n\n path.pointRadius = function(_) {\n if (!arguments.length) return pointRadius;\n pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n return path;\n };\n\n return path.projection(projection).context(context);\n}\n","import { I1DChart } from \"@hpcc-js/api\";\nimport { InputField } from \"@hpcc-js/common\";\nimport { contourDensity as d3ContourDensity } from \"d3-contour\";\nimport { geoPath } from \"d3-geo\";\nimport { XYAxis } from \"./XYAxis.ts\";\n\nexport class Contour extends XYAxis {\n static __inputs: InputField[] = [{\n id: \"x\",\n type: \"any\"\n }, {\n id: \"y\",\n type: \"number\"\n }];\n\n protected _dataMinWeight;\n protected _dataMaxWeight;\n constructor() {\n super();\n this\n .xAxisGuideLines_default(false)\n .yAxisGuideLines_default(false)\n .xAxisType_default(\"linear\")\n ;\n }\n\n xPos(host: XYAxis, d) {\n return host.orientation() === \"horizontal\" ? host.dataPos(d.label) : host.valuePos(d.value);\n }\n\n yPos(host: XYAxis, d) {\n return host.orientation() === \"horizontal\" ? host.valuePos(d.value) : host.dataPos(d.label);\n }\n\n layerEnter(host: XYAxis, element, duration: number = 250) {\n super.layerEnter(host, element, duration);\n }\n\n layerUpdate(host: XYAxis, element, duration: number = 250) {\n super.layerUpdate(host, element, duration);\n\n this._palette = this._palette.switch(this.paletteID());\n\n const data = this.flattenData(this.layerColumns(host), this.layerData(host));\n const contourData = d3ContourDensity()\n .x(d => this.xPos(host, d))\n .y(d => this.yPos(host, d))\n .size([this.width(), this.height()])\n .bandwidth(this.contourBandwidth())(data)\n ;\n const _vals = contourData.map(d => d.value);\n const minValue = Math.min.apply(this, _vals);\n const maxValue = Math.max.apply(this, _vals);\n this._dataMinWeight = minValue;\n this._dataMaxWeight = maxValue;\n const lines = element.selectAll(\"path\").data(contourData);\n lines.enter().append(\"path\")\n .merge(lines)\n .attr(\"d\", geoPath())\n .attr(\"fill\", d => this.showContourFill() ? this._palette(d.value, minValue, maxValue) : \"none\")\n .attr(\"stroke\", this.contourStrokeColor())\n .attr(\"stroke-linejoin\", \"round\")\n .attr(\"stroke-width\", this.contourStrokeWidth())\n ;\n lines.exit().remove();\n }\n\n exit(_domNode, _element) {\n super.exit(_domNode, _element);\n }\n}\nContour.prototype._class += \" chart_Contour\";\nContour.prototype.implements(I1DChart.prototype);\n\nexport interface Contour {\n paletteID(): string;\n paletteID(_: string): this;\n useClonedPalette(): boolean;\n useClonedPalette(_: boolean): this;\n showContourFill(): boolean;\n showContourFill(_: boolean): this;\n showContour(): boolean;\n showContour(_: boolean): this;\n contourBandwidth(): number;\n contourBandwidth(_: number): this;\n contourStrokeColor(): string;\n contourStrokeColor(_: string): this;\n contourStrokeWidth(): number;\n contourStrokeWidth(_: number): this;\n}\nContour.prototype.publish(\"paletteID\", \"YlGnBu\", \"string\", \"Color palette for this widget\");\nContour.prototype.publish(\"useClonedPalette\", true, \"boolean\", \"Enable or disable using a cloned palette\");\nContour.prototype.publish(\"showContourFill\", true, \"boolean\", \"Show/hide the contour background colors\");\nContour.prototype.publish(\"showContour\", true, \"boolean\", \"Show/hide the contour border lines\");\nContour.prototype.publish(\"contourBandwidth\", 40, \"number\", \"Controls the sensitivity of the contour grouping algorithm\");\nContour.prototype.publish(\"contourStrokeColor\", \"#2C3A47\", \"html-color\", \"Color of the contour border lines\");\nContour.prototype.publish(\"contourStrokeWidth\", 1, \"number\", \"Width of the contour border lines\");\n","import { Bar } from \"./Bar.ts\";\n\nexport class Gantt extends Bar {\n constructor() {\n super();\n\n this\n .orientation_default(\"vertical\")\n .xAxisType_default(\"ordinal\")\n .yAxisType_default(\"time\")\n ;\n }\n}\nGantt.prototype._class += \" chart_Gantt\";\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","export var epsilon = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = 2 * pi;\n","import {path} from \"d3-path\";\nimport constant from \"./constant\";\nimport {epsilon, pi, halfPi, tau} from \"./math\";\n\nfunction arcInnerRadius(d) {\n return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n return d && d.padAngle; // Note: optional!\n}\n\nfunction asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n var x10 = x1 - x0, y10 = y1 - y0,\n x32 = x3 - x2, y32 = y3 - y2,\n t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / (y32 * x10 - x32 * y10);\n return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n var x01 = x0 - x1,\n y01 = y0 - y1,\n lo = (cw ? rc : -rc) / Math.sqrt(x01 * x01 + y01 * y01),\n ox = lo * y01,\n oy = -lo * x01,\n x11 = x0 + ox,\n y11 = y0 + oy,\n x10 = x1 + ox,\n y10 = y1 + oy,\n x00 = (x11 + x10) / 2,\n y00 = (y11 + y10) / 2,\n dx = x10 - x11,\n dy = y10 - y11,\n d2 = dx * dx + dy * dy,\n r = r1 - rc,\n D = x11 * y10 - x10 * y11,\n d = (dy < 0 ? -1 : 1) * Math.sqrt(Math.max(0, r * r * d2 - D * D)),\n cx0 = (D * dy - dx * d) / d2,\n cy0 = (-D * dx - dy * d) / d2,\n cx1 = (D * dy + dx * d) / d2,\n cy1 = (-D * dx + dy * d) / d2,\n dx0 = cx0 - x00,\n dy0 = cy0 - y00,\n dx1 = cx1 - x00,\n dy1 = cy1 - y00;\n\n // Pick the closer of the two intersection points.\n // TODO Is there a faster way to determine which intersection to use?\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n return {\n cx: cx0,\n cy: cy0,\n x01: -ox,\n y01: -oy,\n x11: cx0 * (r1 / r - 1),\n y11: cy0 * (r1 / r - 1)\n };\n}\n\nexport default function() {\n var innerRadius = arcInnerRadius,\n outerRadius = arcOuterRadius,\n cornerRadius = constant(0),\n padRadius = null,\n startAngle = arcStartAngle,\n endAngle = arcEndAngle,\n padAngle = arcPadAngle,\n context = null;\n\n function arc() {\n var buffer,\n r,\n r0 = +innerRadius.apply(this, arguments),\n r1 = +outerRadius.apply(this, arguments),\n a0 = startAngle.apply(this, arguments) - halfPi,\n a1 = endAngle.apply(this, arguments) - halfPi,\n da = Math.abs(a1 - a0),\n cw = a1 > a0;\n\n if (!context) context = buffer = path();\n\n // Ensure that the outer radius is always larger than the inner radius.\n if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n // Is it a point?\n if (!(r1 > epsilon)) context.moveTo(0, 0);\n\n // Or is it a circle or annulus?\n else if (da > tau - epsilon) {\n context.moveTo(r1 * Math.cos(a0), r1 * Math.sin(a0));\n context.arc(0, 0, r1, a0, a1, !cw);\n if (r0 > epsilon) {\n context.moveTo(r0 * Math.cos(a1), r0 * Math.sin(a1));\n context.arc(0, 0, r0, a1, a0, cw);\n }\n }\n\n // Or is it a circular or annular sector?\n else {\n var a01 = a0,\n a11 = a1,\n a00 = a0,\n a10 = a1,\n da0 = da,\n da1 = da,\n ap = padAngle.apply(this, arguments) / 2,\n rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : Math.sqrt(r0 * r0 + r1 * r1)),\n rc = Math.min(Math.abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n rc0 = rc,\n rc1 = rc,\n t0,\n t1;\n\n // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n if (rp > epsilon) {\n var p0 = asin(rp / r0 * Math.sin(ap)),\n p1 = asin(rp / r1 * Math.sin(ap));\n if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n }\n\n var x01 = r1 * Math.cos(a01),\n y01 = r1 * Math.sin(a01),\n x10 = r0 * Math.cos(a10),\n y10 = r0 * Math.sin(a10);\n\n // Apply rounded corners?\n if (rc > epsilon) {\n var x11 = r1 * Math.cos(a11),\n y11 = r1 * Math.sin(a11),\n x00 = r0 * Math.cos(a00),\n y00 = r0 * Math.sin(a00);\n\n // Restrict the corner radius according to the sector angle.\n if (da < pi) {\n var oc = da0 > epsilon ? intersect(x01, y01, x00, y00, x11, y11, x10, y10) : [x10, y10],\n ax = x01 - oc[0],\n ay = y01 - oc[1],\n bx = x11 - oc[0],\n by = y11 - oc[1],\n kc = 1 / Math.sin(Math.acos((ax * bx + ay * by) / (Math.sqrt(ax * ax + ay * ay) * Math.sqrt(bx * bx + by * by))) / 2),\n lc = Math.sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = Math.min(rc, (r0 - lc) / (kc - 1));\n rc1 = Math.min(rc, (r1 - lc) / (kc + 1));\n }\n }\n\n // Is the sector collapsed to a line?\n if (!(da1 > epsilon)) context.moveTo(x01, y01);\n\n // Does the sector’s outer ring have rounded corners?\n else if (rc1 > epsilon) {\n t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, Math.atan2(t0.y01, t0.x01), Math.atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc1, Math.atan2(t0.y01, t0.x01), Math.atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r1, Math.atan2(t0.cy + t0.y11, t0.cx + t0.x11), Math.atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n context.arc(t1.cx, t1.cy, rc1, Math.atan2(t1.y11, t1.x11), Math.atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the outer ring just a circular arc?\n else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n // Is there no inner ring, and it’s a circular sector?\n // Or perhaps it’s an annular sector collapsed due to padding?\n if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n // Does the sector’s inner ring (or point) have rounded corners?\n else if (rc0 > epsilon) {\n t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, Math.atan2(t0.y01, t0.x01), Math.atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc0, Math.atan2(t0.y01, t0.x01), Math.atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r0, Math.atan2(t0.cy + t0.y11, t0.cx + t0.x11), Math.atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n context.arc(t1.cx, t1.cy, rc0, Math.atan2(t1.y11, t1.x11), Math.atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the inner ring just a circular arc?\n else context.arc(0, 0, r0, a10, a00, cw);\n }\n\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n arc.centroid = function() {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;\n return [Math.cos(a) * r, Math.sin(a) * r];\n };\n\n arc.innerRadius = function(_) {\n return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n };\n\n arc.outerRadius = function(_) {\n return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n };\n\n arc.cornerRadius = function(_) {\n return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n };\n\n arc.padRadius = function(_) {\n return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n };\n\n arc.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n };\n\n arc.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n };\n\n arc.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n };\n\n arc.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n };\n\n return arc;\n}\n","function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant\";\nimport curveLinear from \"./curve/linear\";\nimport {x as pointX, y as pointY} from \"./point\";\n\nexport default function() {\n var x = pointX,\n y = pointY,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n function line(data) {\n var i,\n n = data.length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n","export default function() {}\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n (2 * that._x0 + that._x1) / 3,\n (2 * that._y0 + that._y1) / 3,\n (that._x0 + 2 * that._x1) / 3,\n (that._y0 + 2 * that._y1) / 3,\n (that._x0 + 4 * that._x1 + x) / 6,\n (that._y0 + 4 * that._y1 + y) / 6\n );\n}\n\nexport function Basis(context) {\n this._context = context;\n}\n\nBasis.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 3: point(this, this._x1, this._y1); // proceed\n case 2: this._context.lineTo(this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new Basis(context);\n}\n","import {Basis} from \"./basis\";\n\nfunction Bundle(context, beta) {\n this._basis = new Basis(context);\n this._beta = beta;\n}\n\nBundle.prototype = {\n lineStart: function() {\n this._x = [];\n this._y = [];\n this._basis.lineStart();\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n j = x.length - 1;\n\n if (j > 0) {\n var x0 = x[0],\n y0 = y[0],\n dx = x[j] - x0,\n dy = y[j] - y0,\n i = -1,\n t;\n\n while (++i <= j) {\n t = i / j;\n this._basis.point(\n this._beta * x[i] + (1 - this._beta) * (x0 + t * dx),\n this._beta * y[i] + (1 - this._beta) * (y0 + t * dy)\n );\n }\n }\n\n this._x = this._y = null;\n this._basis.lineEnd();\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\nexport default (function custom(beta) {\n\n function bundle(context) {\n return beta === 1 ? new Basis(context) : new Bundle(context, beta);\n }\n\n bundle.beta = function(beta) {\n return custom(+beta);\n };\n\n return bundle;\n})(0.85);\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n that._x1 + that._k * (that._x2 - that._x0),\n that._y1 + that._k * (that._y2 - that._y0),\n that._x2 + that._k * (that._x1 - x),\n that._y2 + that._k * (that._y1 - y),\n that._x2,\n that._y2\n );\n}\n\nexport function Cardinal(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinal.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: point(this, this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; this._x1 = x, this._y1 = y; break;\n case 2: this._point = 3; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new Cardinal(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import noop from \"../noop\";\nimport {point} from \"./cardinal\";\n\nexport function CardinalClosed(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new CardinalClosed(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import {point} from \"./cardinal\";\n\nexport function CardinalOpen(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new CardinalOpen(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import {epsilon} from \"../math\";\nimport {Cardinal} from \"./cardinal\";\n\nexport function point(that, x, y) {\n var x1 = that._x1,\n y1 = that._y1,\n x2 = that._x2,\n y2 = that._y2;\n\n if (that._l01_a > epsilon) {\n var a = 2 * that._l01_2a + 3 * that._l01_a * that._l12_a + that._l12_2a,\n n = 3 * that._l01_a * (that._l01_a + that._l12_a);\n x1 = (x1 * a - that._x0 * that._l12_2a + that._x2 * that._l01_2a) / n;\n y1 = (y1 * a - that._y0 * that._l12_2a + that._y2 * that._l01_2a) / n;\n }\n\n if (that._l23_a > epsilon) {\n var b = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a,\n m = 3 * that._l23_a * (that._l23_a + that._l12_a);\n x2 = (x2 * b + that._x1 * that._l23_2a - x * that._l12_2a) / m;\n y2 = (y2 * b + that._y1 * that._l23_2a - y * that._l12_2a) / m;\n }\n\n that._context.bezierCurveTo(x1, y1, x2, y2, that._x2, that._y2);\n}\n\nfunction CatmullRom(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRom.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: this.point(this._x2, this._y2); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; // proceed\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRom(context, alpha) : new Cardinal(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import {CardinalClosed} from \"./cardinalClosed\";\nimport noop from \"../noop\";\nimport {point} from \"./catmullRom\";\n\nfunction CatmullRomClosed(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomClosed(context, alpha) : new CardinalClosed(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import {CardinalOpen} from \"./cardinalOpen\";\nimport {point} from \"./catmullRom\";\n\nfunction CatmullRomOpen(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomOpen(context, alpha) : new CardinalOpen(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","function sign(x) {\n return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n var h0 = that._x1 - that._x0,\n h1 = x2 - that._x1,\n s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n p = (s0 * h1 + s1 * h0) / (h0 + h1);\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n var h = that._x1 - that._x0;\n return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n var x0 = that._x0,\n y0 = that._y0,\n x1 = that._x1,\n y1 = that._y1,\n dx = (x1 - x0) / 3;\n that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n this._context = context;\n}\n\nMonotoneX.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 =\n this._t0 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x1, this._y1); break;\n case 3: point(this, this._t0, slope2(this, this._t0)); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n var t1 = NaN;\n\n x = +x, y = +y;\n if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n }\n\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n this._t0 = t1;\n }\n}\n\nfunction MonotoneY(context) {\n this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n this._context = context;\n}\n\nReflectContext.prototype = {\n moveTo: function(x, y) { this._context.moveTo(y, x); },\n closePath: function() { this._context.closePath(); },\n lineTo: function(x, y) { this._context.lineTo(y, x); },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nexport function monotoneX(context) {\n return new MonotoneX(context);\n}\n\nexport function monotoneY(context) {\n return new MonotoneY(context);\n}\n","import { event, select } from 'd3-selection';\nimport { drag } from 'd3-drag';\nimport { arc, curveCatmullRom, curveLinear, line } from 'd3-shape';\nimport { dispatch } from 'd3-dispatch';\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\n\n\n\n\n\n\n\n\n\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n\n\n\n\n\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar get = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n};\n\nvar inherits = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\n\n\n\n\n\n\n\n\n\n\nvar possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar toConsumableArray = function (arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n } else {\n return Array.from(arr);\n }\n};\n\nvar Annotation = function () {\n function Annotation(_ref) {\n var _ref$x = _ref.x,\n x = _ref$x === undefined ? 0 : _ref$x,\n _ref$y = _ref.y,\n y = _ref$y === undefined ? 0 : _ref$y,\n nx = _ref.nx,\n ny = _ref.ny,\n _ref$dy = _ref.dy,\n dy = _ref$dy === undefined ? 0 : _ref$dy,\n _ref$dx = _ref.dx,\n dx = _ref$dx === undefined ? 0 : _ref$dx,\n _ref$color = _ref.color,\n color = _ref$color === undefined ? \"grey\" : _ref$color,\n data = _ref.data,\n type = _ref.type,\n subject = _ref.subject,\n connector = _ref.connector,\n note = _ref.note,\n disable = _ref.disable,\n id = _ref.id,\n className = _ref.className;\n classCallCheck(this, Annotation);\n\n this._dx = nx !== undefined ? nx - x : dx;\n this._dy = ny !== undefined ? ny - y : dy;\n this._x = x;\n this._y = y;\n this._color = color;\n this.id = id;\n this._className = className || \"\";\n\n this._type = type || \"\";\n this.data = data;\n\n this.note = note || {};\n this.connector = connector || {};\n this.subject = subject || {};\n\n this.disable = disable || [];\n }\n\n createClass(Annotation, [{\n key: \"updatePosition\",\n value: function updatePosition() {\n if (this.type.setPosition) {\n this.type.setPosition();\n if (this.type.subject && this.type.subject.selectAll(\":not(.handle)\").nodes().length !== 0) {\n this.type.redrawSubject();\n }\n }\n }\n }, {\n key: \"clearComponents\",\n value: function clearComponents() {\n this.type.clearComponents && this.type.clearComponents();\n }\n }, {\n key: \"updateOffset\",\n value: function updateOffset() {\n if (this.type.setOffset) {\n this.type.setOffset();\n\n if (this.type.connector.selectAll(\":not(.handle)\").nodes().length !== 0) {\n this.type.redrawConnector();\n }\n\n this.type.redrawNote();\n }\n }\n }, {\n key: \"className\",\n get: function get$$1() {\n return this._className;\n },\n set: function set$$1(className) {\n this._className = className;\n if (this.type.setClassName) this.type.setClassName();\n }\n }, {\n key: \"type\",\n get: function get$$1() {\n return this._type;\n },\n set: function set$$1(type) {\n this._type = type;\n this.clearComponents();\n }\n }, {\n key: \"x\",\n get: function get$$1() {\n return this._x;\n },\n set: function set$$1(x) {\n this._x = x;\n this.updatePosition();\n }\n }, {\n key: \"y\",\n get: function get$$1() {\n return this._y;\n },\n set: function set$$1(y) {\n this._y = y;\n this.updatePosition();\n }\n }, {\n key: \"color\",\n get: function get$$1() {\n return this._color;\n },\n set: function set$$1(color) {\n this._color = color;\n this.updatePosition();\n }\n }, {\n key: \"dx\",\n get: function get$$1() {\n return this._dx;\n },\n set: function set$$1(dx) {\n this._dx = dx;\n this.updateOffset();\n }\n }, {\n key: \"dy\",\n get: function get$$1() {\n return this._dy;\n },\n set: function set$$1(dy) {\n this._dy = dy;\n this.updateOffset();\n }\n }, {\n key: \"nx\",\n set: function set$$1(nx) {\n this._dx = nx - this._x;\n this.updateOffset();\n }\n }, {\n key: \"ny\",\n set: function set$$1(ny) {\n this._dy = ny - this._y;\n this.updateOffset();\n }\n }, {\n key: \"offset\",\n get: function get$$1() {\n return { x: this._dx, y: this._dy };\n },\n set: function set$$1(_ref2) {\n var x = _ref2.x,\n y = _ref2.y;\n\n this._dx = x;\n this._dy = y;\n this.updateOffset();\n }\n }, {\n key: \"position\",\n get: function get$$1() {\n return { x: this._x, y: this._y };\n },\n set: function set$$1(_ref3) {\n var x = _ref3.x,\n y = _ref3.y;\n\n this._x = x;\n this._y = y;\n this.updatePosition();\n }\n }, {\n key: \"translation\",\n get: function get$$1() {\n return {\n x: this._x + this._dx,\n y: this._y + this._dy\n };\n }\n }, {\n key: \"json\",\n get: function get$$1() {\n var json = {\n x: this._x,\n y: this._y,\n dx: this._dx,\n dy: this._dy\n };\n\n if (this.data && Object.keys(this.data).length > 0) json.data = this.data;\n if (this.type) json.type = this.type;\n if (this._className) json.className = this._className;\n\n if (Object.keys(this.connector).length > 0) json.connector = this.connector;\n if (Object.keys(this.subject).length > 0) json.subject = this.subject;\n if (Object.keys(this.note).length > 0) json.note = this.note;\n\n return json;\n }\n }]);\n return Annotation;\n}();\n\nvar AnnotationCollection = function () {\n function AnnotationCollection(_ref) {\n var annotations = _ref.annotations,\n accessors = _ref.accessors,\n accessorsInverse = _ref.accessorsInverse;\n classCallCheck(this, AnnotationCollection);\n\n this.accessors = accessors;\n this.accessorsInverse = accessorsInverse;\n this.annotations = annotations;\n }\n\n createClass(AnnotationCollection, [{\n key: \"clearTypes\",\n value: function clearTypes(newSettings) {\n this.annotations.forEach(function (d) {\n d.type = undefined;\n d.subject = newSettings && newSettings.subject || d.subject;\n d.connector = newSettings && newSettings.connector || d.connector;\n d.note = newSettings && newSettings.note || d.note;\n });\n }\n }, {\n key: \"setPositionWithAccessors\",\n value: function setPositionWithAccessors() {\n var _this = this;\n\n this.annotations.forEach(function (d) {\n d.type.setPositionWithAccessors(_this.accessors);\n });\n }\n }, {\n key: \"editMode\",\n value: function editMode(_editMode) {\n this.annotations.forEach(function (a) {\n if (a.type) {\n a.type.editMode = _editMode;\n a.type.updateEditMode();\n }\n });\n }\n }, {\n key: \"updateDisable\",\n value: function updateDisable(disable) {\n this.annotations.forEach(function (a) {\n a.disable = disable;\n if (a.type) {\n disable.forEach(function (d) {\n if (a.type[d]) {\n a.type[d].remove && a.type[d].remove();\n a.type[d] = undefined;\n }\n });\n }\n });\n }\n }, {\n key: \"updateTextWrap\",\n value: function updateTextWrap(textWrap) {\n this.annotations.forEach(function (a) {\n if (a.type && a.type.updateTextWrap) {\n a.type.updateTextWrap(textWrap);\n }\n });\n }\n }, {\n key: \"updateText\",\n value: function updateText() {\n this.annotations.forEach(function (a) {\n if (a.type && a.type.drawText) {\n a.type.drawText();\n }\n });\n }\n }, {\n key: \"updateNotePadding\",\n value: function updateNotePadding(notePadding) {\n this.annotations.forEach(function (a) {\n if (a.type) {\n a.type.notePadding = notePadding;\n }\n });\n }\n }, {\n key: \"json\",\n get: function get$$1() {\n var _this2 = this;\n\n return this.annotations.map(function (a) {\n var json = a.json;\n if (_this2.accessorsInverse && a.data) {\n json.data = {};\n Object.keys(_this2.accessorsInverse).forEach(function (k) {\n json.data[k] = _this2.accessorsInverse[k]({ x: a.x, y: a.y });\n\n //TODO make this feasible to map back to data for other types of subjects\n });\n }\n return json;\n });\n }\n }, {\n key: \"noteNodes\",\n get: function get$$1() {\n return this.annotations.map(function (a) {\n return _extends({}, a.type.getNoteBBoxOffset(), { positionX: a.x, positionY: a.y });\n });\n }\n\n //TODO: come back and rethink if a.x and a.y are applicable in all situations\n // get connectorNodes() {\n // return this.annotations.map(a => ({ ...a.type.getConnectorBBox(), startX: a.x, startY: a.y}))\n // }\n\n // get subjectNodes() {\n // return this.annotations.map(a => ({ ...a.type.getSubjectBBox(), startX: a.x, startY: a.y}))\n // }\n\n // get annotationNodes() {\n // return this.annotations.map(a => ({ ...a.type.getAnnotationBBox(), startX: a.x, startY: a.y}))\n // }\n\n }]);\n return AnnotationCollection;\n}();\n\nvar pointHandle = function pointHandle(_ref) {\n var _ref$cx = _ref.cx,\n cx = _ref$cx === undefined ? 0 : _ref$cx,\n _ref$cy = _ref.cy,\n cy = _ref$cy === undefined ? 0 : _ref$cy;\n\n return { move: { x: cx, y: cy } };\n};\n\nvar circleHandles = function circleHandles(_ref2) {\n var _ref2$cx = _ref2.cx,\n cx = _ref2$cx === undefined ? 0 : _ref2$cx,\n _ref2$cy = _ref2.cy,\n cy = _ref2$cy === undefined ? 0 : _ref2$cy,\n r1 = _ref2.r1,\n r2 = _ref2.r2,\n padding = _ref2.padding;\n\n var h = { move: { x: cx, y: cy } };\n\n if (r1 !== undefined) {\n h.r1 = { x: cx + r1 / Math.sqrt(2), y: cy + r1 / Math.sqrt(2) };\n }\n\n if (r2 !== undefined) {\n h.r2 = { x: cx + r2 / Math.sqrt(2), y: cy + r2 / Math.sqrt(2) };\n }\n\n if (padding !== undefined) {\n h.padding = { x: cx + r1 + padding, y: cy };\n }\n\n return h;\n};\n\n\n\n\n\n//arc handles\nvar addHandles = function addHandles(_ref5) {\n var group = _ref5.group,\n handles = _ref5.handles,\n _ref5$r = _ref5.r,\n r = _ref5$r === undefined ? 10 : _ref5$r;\n\n //give it a group and x,y to draw handles\n //then give it instructions on what the handles change\n var h = group.selectAll(\"circle.handle\").data(handles);\n\n h.enter().append(\"circle\").attr(\"class\", \"handle\").attr(\"fill\", \"grey\").attr(\"fill-opacity\", 0.1).attr(\"cursor\", \"move\").attr(\"stroke-dasharray\", 5).attr(\"stroke\", \"grey\").call(drag().container(select(\"g.annotations\").node()).on(\"start\", function (d) {\n return d.start && d.start(d);\n }).on(\"drag\", function (d) {\n return d.drag && d.drag(d);\n }).on(\"end\", function (d) {\n return d.end && d.end(d);\n }));\n\n group.selectAll(\"circle.handle\").attr(\"cx\", function (d) {\n return d.x;\n }).attr(\"cy\", function (d) {\n return d.y;\n }).attr(\"r\", function (d) {\n return d.r || r;\n }).attr(\"class\", function (d) {\n return \"handle \" + (d.className || \"\");\n });\n\n h.exit().remove();\n};\n\nvar leftRightDynamic = function leftRightDynamic(align, y) {\n if (align === \"dynamic\" || align === \"left\" || align === \"right\") {\n if (y < 0) {\n align = \"top\";\n } else {\n align = \"bottom\";\n }\n }\n return align;\n};\n\nvar topBottomDynamic = function topBottomDynamic(align, x) {\n if (align === \"dynamic\" || align === \"top\" || align === \"bottom\") {\n if (x < 0) {\n align = \"right\";\n } else {\n align = \"left\";\n }\n }\n return align;\n};\n\nvar orientationTopBottom = [\"topBottom\", \"top\", \"bottom\"];\nvar orientationLeftRight = [\"leftRight\", \"left\", \"right\"];\n\nvar noteAlignment = (function (_ref) {\n var _ref$padding = _ref.padding,\n padding = _ref$padding === undefined ? 0 : _ref$padding,\n _ref$bbox = _ref.bbox,\n bbox = _ref$bbox === undefined ? { x: 0, y: 0, width: 0, height: 0 } : _ref$bbox,\n align = _ref.align,\n orientation = _ref.orientation,\n _ref$offset = _ref.offset,\n offset = _ref$offset === undefined ? { x: 0, y: 0 } : _ref$offset;\n\n var x = -bbox.x;\n var y = 0; //-bbox.y\n if (orientationTopBottom.indexOf(orientation) !== -1) {\n align = topBottomDynamic(align, offset.x);\n if (offset.y < 0 && orientation === \"topBottom\" || orientation === \"top\") {\n y -= bbox.height + padding;\n } else {\n y += padding;\n }\n\n if (align === \"middle\") {\n x -= bbox.width / 2;\n } else if (align === \"right\") {\n x -= bbox.width;\n }\n } else if (orientationLeftRight.indexOf(orientation) !== -1) {\n align = leftRightDynamic(align, offset.y);\n if (offset.x < 0 && orientation === \"leftRight\" || orientation === \"left\") {\n x -= bbox.width + padding;\n } else {\n x += padding;\n }\n\n if (align === \"middle\") {\n y -= bbox.height / 2;\n } else if (align === \"top\") {\n y -= bbox.height;\n }\n }\n\n return { x: x, y: y };\n});\n\nvar lineBuilder = function lineBuilder(_ref) {\n var data = _ref.data,\n _ref$curve = _ref.curve,\n curve = _ref$curve === undefined ? curveLinear : _ref$curve,\n canvasContext = _ref.canvasContext,\n className = _ref.className,\n classID = _ref.classID;\n\n var lineGen = line().curve(curve);\n\n var builder = {\n type: 'path',\n className: className,\n classID: classID,\n data: data\n };\n\n if (canvasContext) {\n lineGen.context(canvasContext);\n builder.pathMethods = lineGen;\n } else {\n builder.attrs = {\n d: lineGen(data)\n };\n }\n\n return builder;\n};\n\nvar arcBuilder = function arcBuilder(_ref2) {\n var data = _ref2.data,\n canvasContext = _ref2.canvasContext,\n className = _ref2.className,\n classID = _ref2.classID;\n\n\n var builder = {\n type: 'path',\n className: className,\n classID: classID,\n data: data\n };\n\n var arcShape = arc().innerRadius(data.innerRadius || 0).outerRadius(data.outerRadius || data.radius || 2).startAngle(data.startAngle || 0).endAngle(data.endAngle || 2 * Math.PI);\n\n if (canvasContext) {\n arcShape.context(canvasContext);\n builder.pathMethods = lineGen;\n } else {\n\n builder.attrs = {\n d: arcShape()\n };\n }\n\n return builder;\n};\n\nvar noteVertical = (function (_ref) {\n var align = _ref.align,\n _ref$x = _ref.x,\n x = _ref$x === undefined ? 0 : _ref$x,\n _ref$y = _ref.y,\n y = _ref$y === undefined ? 0 : _ref$y,\n bbox = _ref.bbox,\n offset = _ref.offset;\n\n align = leftRightDynamic(align, offset.y);\n\n if (align === \"top\") {\n y -= bbox.height;\n } else if (align === \"middle\") {\n y -= bbox.height / 2;\n }\n\n var data = [[x, y], [x, y + bbox.height]];\n return { components: [lineBuilder({ data: data, className: \"note-line\" })] };\n});\n\nvar noteHorizontal = (function (_ref) {\n var align = _ref.align,\n _ref$x = _ref.x,\n x = _ref$x === undefined ? 0 : _ref$x,\n _ref$y = _ref.y,\n y = _ref$y === undefined ? 0 : _ref$y,\n offset = _ref.offset,\n bbox = _ref.bbox;\n\n align = topBottomDynamic(align, offset.x);\n\n if (align === \"right\") {\n x -= bbox.width;\n } else if (align === \"middle\") {\n x -= bbox.width / 2;\n }\n\n var data = [[x, y], [x + bbox.width, y]];\n return { components: [lineBuilder({ data: data, className: \"note-line\" })] };\n});\n\nvar lineSetup = function lineSetup(_ref) {\n var type = _ref.type,\n subjectType = _ref.subjectType;\n\n var annotation = type.annotation;\n var offset = annotation.position;\n\n var x1 = annotation.x - offset.x,\n x2 = x1 + annotation.dx,\n y1 = annotation.y - offset.y,\n y2 = y1 + annotation.dy;\n\n var subjectData = annotation.subject;\n\n if (subjectType === \"circle\" && (subjectData.outerRadius || subjectData.radius)) {\n var h = Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));\n var angle = Math.asin(-y2 / h);\n var r = subjectData.outerRadius || subjectData.radius + (subjectData.radiusPadding || 0);\n\n x1 = Math.abs(Math.cos(angle) * r) * (x2 < 0 ? -1 : 1);\n y1 = Math.abs(Math.sin(angle) * r) * (y2 < 0 ? -1 : 1);\n }\n\n if (subjectType === \"rect\") {\n var width = subjectData.width,\n height = subjectData.height;\n\n\n if (width > 0 && annotation.dx > 0 || width < 0 && annotation.dx < 0) {\n if (Math.abs(width) > Math.abs(annotation.dx)) x1 = width / 2;else x1 = width;\n }\n if (height > 0 && annotation.dy > 0 || height < 0 && annotation.dy < 0) {\n if (Math.abs(height) > Math.abs(annotation.dy)) y1 = height / 2;else y1 = height;\n }\n if (x1 === width / 2 && y1 === height / 2) {\n x1 = x2;y1 = y2;\n }\n }\n\n return [[x1, y1], [x2, y2]];\n};\n\nvar connectorLine = (function (connectorData) {\n var data = lineSetup(connectorData);\n return { components: [lineBuilder({ data: data, className: \"connector\" })] };\n});\n\nvar connectorElbow = (function (_ref) {\n var type = _ref.type,\n subjectType = _ref.subjectType;\n\n\n var annotation = type.annotation;\n var offset = annotation.position;\n\n var x1 = annotation.x - offset.x,\n x2 = x1 + annotation.dx,\n y1 = annotation.y - offset.y,\n y2 = y1 + annotation.dy;\n\n var subjectData = annotation.subject;\n\n if (subjectType === \"rect\") {\n var width = subjectData.width,\n height = subjectData.height;\n\n\n if (width > 0 && annotation.dx > 0 || width < 0 && annotation.dx < 0) {\n if (Math.abs(width) > Math.abs(annotation.dx)) x1 = width / 2;else x1 = width;\n }\n if (height > 0 && annotation.dy > 0 || height < 0 && annotation.dy < 0) {\n if (Math.abs(height) > Math.abs(annotation.dy)) y1 = height / 2;else y1 = height;\n }\n if (x1 === width / 2 && y1 === height / 2) {\n x1 = x2;y1 = y2;\n }\n }\n\n var data = [[x1, y1], [x2, y2]];\n\n var diffY = y2 - y1;\n var diffX = x2 - x1;\n var xe = x2;\n var ye = y2;\n var opposite = y2 < y1 && x2 > x1 || x2 < x1 && y2 > y1 ? -1 : 1;\n\n if (Math.abs(diffX) < Math.abs(diffY)) {\n xe = x2;\n ye = y1 + diffX * opposite;\n } else {\n ye = y2;\n xe = x1 + diffY * opposite;\n }\n\n if (subjectType === \"circle\" && (subjectData.outerRadius || subjectData.radius)) {\n var r = (subjectData.outerRadius || subjectData.radius) + (subjectData.radiusPadding || 0);\n var length = r / Math.sqrt(2);\n\n if (Math.abs(diffX) > length && Math.abs(diffY) > length) {\n x1 = length * (x2 < 0 ? -1 : 1);\n y1 = length * (y2 < 0 ? -1 : 1);\n data = [[x1, y1], [xe, ye], [x2, y2]];\n } else if (Math.abs(diffX) > Math.abs(diffY)) {\n var angle = Math.asin(-y2 / r);\n x1 = Math.abs(Math.cos(angle) * r) * (x2 < 0 ? -1 : 1);\n data = [[x1, y2], [x2, y2]];\n } else {\n var _angle = Math.acos(x2 / r);\n y1 = Math.abs(Math.sin(_angle) * r) * (y2 < 0 ? -1 : 1);\n data = [[x2, y1], [x2, y2]];\n }\n } else {\n data = [[x1, y1], [xe, ye], [x2, y2]];\n }\n\n return { components: [lineBuilder({ data: data, className: \"connector\" })] };\n});\n\nvar connectorCurve = (function (_ref) {\n var type = _ref.type,\n connectorData = _ref.connectorData,\n subjectType = _ref.subjectType;\n\n\n if (!connectorData) {\n connectorData = {};\n }\n if (!connectorData.points || typeof connectorData.points === \"number\") {\n connectorData.points = createPoints(type.annotation.offset, connectorData.points);\n }\n if (!connectorData.curve) {\n connectorData.curve = curveCatmullRom;\n }\n\n var handles = [];\n\n if (type.editMode) {\n var cHandles = connectorData.points.map(function (c, i) {\n return _extends({}, pointHandle({ cx: c[0], cy: c[1] }), { index: i });\n });\n\n var updatePoint = function updatePoint(index) {\n connectorData.points[index][0] += event.dx;\n connectorData.points[index][1] += event.dy;\n type.redrawConnector();\n };\n\n handles = type.mapHandles(cHandles.map(function (h) {\n return _extends({}, h.move, { drag: updatePoint.bind(type, h.index) });\n }));\n }\n\n var data = lineSetup({ type: type, subjectType: subjectType });\n data = [data[0]].concat(toConsumableArray(connectorData.points), [data[1]]);\n var components = [lineBuilder({ data: data, curve: connectorData.curve, className: \"connector\" })];\n\n return { components: components, handles: handles };\n});\n\nvar createPoints = function createPoints(offset) {\n var anchors = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;\n\n var diff = { x: offset.x / (anchors + 1), y: offset.y / (anchors + 1) };\n var p = [];\n\n var i = 1;\n for (; i <= anchors; i++) {\n p.push([diff.x * i + i % 2 * 20, diff.y * i - i % 2 * 20]);\n }\n return p;\n};\n\nvar connectorArrow = (function (_ref) {\n var annotation = _ref.annotation,\n start = _ref.start,\n end = _ref.end,\n _ref$scale = _ref.scale,\n scale = _ref$scale === undefined ? 1 : _ref$scale;\n\n var offset = annotation.position;\n if (!start) {\n start = [annotation.dx, annotation.dy];\n } else {\n start = [-end[0] + start[0], -end[1] + start[1]];\n }\n if (!end) {\n end = [annotation.x - offset.x, annotation.y - offset.y];\n }\n\n var x1 = end[0],\n y1 = end[1];\n\n var dx = start[0];\n var dy = start[1];\n\n var size = 10 * scale;\n var angleOffset = 16 / 180 * Math.PI;\n var angle = Math.atan(dy / dx);\n\n if (dx < 0) {\n angle += Math.PI;\n }\n\n var data = [[x1, y1], [Math.cos(angle + angleOffset) * size + x1, Math.sin(angle + angleOffset) * size + y1], [Math.cos(angle - angleOffset) * size + x1, Math.sin(angle - angleOffset) * size + y1], [x1, y1]];\n\n //TODO add in reverse\n // if (canvasContext.arrowReverse){\n // data = [[x1, y1],\n // [Math.cos(angle + angleOffset)*size, Math.sin(angle + angleOffset)*size],\n // [Math.cos(angle - angleOffset)*size, Math.sin(angle - angleOffset)*size],\n // [x1, y1]\n // ]\n // } else {\n // data = [[x1, y1],\n // [Math.cos(angle + angleOffset)*size, Math.sin(angle + angleOffset)*size],\n // [Math.cos(angle - angleOffset)*size, Math.sin(angle - angleOffset)*size],\n // [x1, y1]\n // ]\n // }\n\n return {\n components: [lineBuilder({\n data: data,\n className: \"connector-end connector-arrow\",\n classID: \"connector-end\"\n })]\n };\n});\n\nvar connectorDot = (function (_ref) {\n var line$$1 = _ref.line,\n _ref$scale = _ref.scale,\n scale = _ref$scale === undefined ? 1 : _ref$scale;\n\n var dot = arcBuilder({\n className: \"connector-end connector-dot\",\n classID: \"connector-end\",\n data: { radius: 3 * Math.sqrt(scale) }\n });\n dot.attrs.transform = \"translate(\" + line$$1.data[0][0] + \", \" + line$$1.data[0][1] + \")\";\n\n return { components: [dot] };\n});\n\nvar subjectCircle = (function (_ref) {\n var subjectData = _ref.subjectData,\n type = _ref.type;\n\n if (!subjectData.radius && !subjectData.outerRadius) {\n subjectData.radius = 20;\n }\n\n var handles = [];\n var c = arcBuilder({ data: subjectData, className: \"subject\" });\n if (type.editMode) {\n var h = circleHandles({\n r1: c.data.outerRadius || c.data.radius,\n r2: c.data.innerRadius,\n padding: subjectData.radiusPadding\n });\n\n var updateRadius = function updateRadius(attr) {\n var r = subjectData[attr] + event.dx * Math.sqrt(2);\n subjectData[attr] = r;\n type.redrawSubject();\n type.redrawConnector();\n };\n\n var cHandles = [_extends({}, h.r1, {\n drag: updateRadius.bind(type, subjectData.outerRadius !== undefined ? \"outerRadius\" : \"radius\")\n })];\n\n if (subjectData.innerRadius) {\n cHandles.push(_extends({}, h.r2, { drag: updateRadius.bind(type, \"innerRadius\") }));\n }\n handles = type.mapHandles(cHandles);\n }\n\n c.attrs[\"fill-opacity\"] = 0;\n\n return { components: [c], handles: handles };\n});\n\nvar subjectRect = (function (_ref) {\n var subjectData = _ref.subjectData,\n type = _ref.type;\n\n if (!subjectData.width) {\n subjectData.width = 100;\n }\n if (!subjectData.height) {\n subjectData.height = 100;\n }\n\n var handles = [];\n var width = subjectData.width,\n height = subjectData.height;\n\n\n var data = [[0, 0], [width, 0], [width, height], [0, height], [0, 0]];\n var rect = lineBuilder({ data: data, className: \"subject\" });\n\n if (type.editMode) {\n var updateWidth = function updateWidth() {\n subjectData.width = event.x;\n type.redrawSubject();\n type.redrawConnector();\n };\n\n var updateHeight = function updateHeight() {\n subjectData.height = event.y;\n type.redrawSubject();\n type.redrawConnector();\n };\n\n var rHandles = [{ x: width, y: height / 2, drag: updateWidth.bind(type) }, { x: width / 2, y: height, drag: updateHeight.bind(type) }];\n\n handles = type.mapHandles(rHandles);\n }\n rect.attrs[\"fill-opacity\"] = 0.1;\n return { components: [rect], handles: handles };\n});\n\nvar subjectThreshold = (function (_ref) {\n var subjectData = _ref.subjectData,\n type = _ref.type;\n\n var offset = type.annotation.position;\n\n var x1 = (subjectData.x1 !== undefined ? subjectData.x1 : offset.x) - offset.x,\n x2 = (subjectData.x2 !== undefined ? subjectData.x2 : offset.x) - offset.x,\n y1 = (subjectData.y1 !== undefined ? subjectData.y1 : offset.y) - offset.y,\n y2 = (subjectData.y2 !== undefined ? subjectData.y2 : offset.y) - offset.y;\n\n var data = [[x1, y1], [x2, y2]];\n return { components: [lineBuilder({ data: data, className: 'subject' })] };\n});\n\nvar subjectBadge = (function (_ref) {\n var _ref$subjectData = _ref.subjectData,\n subjectData = _ref$subjectData === undefined ? {} : _ref$subjectData,\n _ref$type = _ref.type,\n type = _ref$type === undefined ? {} : _ref$type;\n var annotation = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var typeSettings = type.typeSettings && type.typeSettings.subject;\n\n if (!subjectData.radius) {\n if (typeSettings && typeSettings.radius) {\n subjectData.radius = typeSettings.radius;\n } else {\n subjectData.radius = 14;\n }\n }\n if (!subjectData.x) {\n if (typeSettings && typeSettings.x) {\n subjectData.x = typeSettings.x;\n }\n }\n if (!subjectData.y) {\n if (typeSettings && typeSettings.y) {\n subjectData.y = typeSettings.y;\n }\n }\n\n var handles = [];\n var components = [];\n var radius = subjectData.radius;\n var innerRadius = radius * 0.7;\n var x = 0;\n var y = 0;\n\n var notCornerOffset = Math.sqrt(2) * radius;\n var placement = {\n xleftcorner: -radius,\n xrightcorner: radius,\n ytopcorner: -radius,\n ybottomcorner: radius,\n xleft: -notCornerOffset,\n xright: notCornerOffset,\n ytop: -notCornerOffset,\n ybottom: notCornerOffset\n };\n\n if (subjectData.x && !subjectData.y) {\n x = placement[\"x\" + subjectData.x];\n } else if (subjectData.y && !subjectData.x) {\n y = placement[\"y\" + subjectData.y];\n } else if (subjectData.x && subjectData.y) {\n x = placement[\"x\" + subjectData.x + \"corner\"];\n y = placement[\"y\" + subjectData.y + \"corner\"];\n }\n\n var transform = \"translate(\" + x + \", \" + y + \")\";\n var circlebg = arcBuilder({ className: \"subject\", data: { radius: radius } });\n circlebg.attrs.transform = transform;\n circlebg.attrs.fill = annotation.color;\n circlebg.attrs[\"stroke-linecap\"] = \"round\";\n circlebg.attrs[\"stroke-width\"] = \"3px\";\n\n var circle = arcBuilder({\n className: \"subject-ring\",\n data: { outerRadius: radius, innerRadius: innerRadius }\n });\n\n circle.attrs.transform = transform;\n // circle.attrs.fill = annotation.color\n circle.attrs[\"stroke-width\"] = \"3px\";\n circle.attrs.fill = \"white\";\n\n var pointer = void 0;\n if (x && y || !x && !y) {\n pointer = lineBuilder({\n className: \"subject-pointer\",\n data: [[0, 0], [x || 0, 0], [0, y || 0], [0, 0]]\n });\n } else if (x || y) {\n var notCornerPointerXY = function notCornerPointerXY(v) {\n var sign = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n return v && v / Math.sqrt(2) / Math.sqrt(2) || sign * radius / Math.sqrt(2);\n };\n\n pointer = lineBuilder({\n className: \"subject-pointer\",\n data: [[0, 0], [notCornerPointerXY(x), notCornerPointerXY(y)], [notCornerPointerXY(x, -1), notCornerPointerXY(y, -1)], [0, 0]]\n });\n }\n\n if (pointer) {\n pointer.attrs.fill = annotation.color;\n pointer.attrs[\"stroke-linecap\"] = \"round\";\n pointer.attrs[\"stroke-width\"] = \"3px\";\n components.push(pointer);\n }\n\n if (type.editMode) {\n var dragBadge = function dragBadge() {\n subjectData.x = event.x < -radius * 2 ? \"left\" : event.x > radius * 2 ? \"right\" : undefined;\n subjectData.y = event.y < -radius * 2 ? \"top\" : event.y > radius * 2 ? \"bottom\" : undefined;\n\n type.redrawSubject();\n };\n\n var bHandles = { x: x * 2, y: y * 2, drag: dragBadge.bind(type) };\n if (!bHandles.x && !bHandles.y) {\n bHandles.y = -radius;\n }\n\n handles = type.mapHandles([bHandles]);\n }\n\n var text = void 0;\n if (subjectData.text) {\n text = {\n type: \"text\",\n className: \"badge-text\",\n attrs: {\n fill: \"white\",\n stroke: \"none\",\n \"font-size\": \".7em\",\n text: subjectData.text,\n \"text-anchor\": \"middle\",\n dy: \".25em\",\n x: x,\n y: y\n }\n };\n }\n\n components.push(circlebg);\n components.push(circle);\n components.push(text);\n\n return { components: components, handles: handles };\n});\n\n//Note options\n//Connector options\n//Subject options\nvar Type = function () {\n function Type(_ref) {\n var a = _ref.a,\n annotation = _ref.annotation,\n editMode = _ref.editMode,\n dispatcher = _ref.dispatcher,\n notePadding = _ref.notePadding,\n accessors = _ref.accessors;\n classCallCheck(this, Type);\n\n this.a = a;\n\n this.note = annotation.disable.indexOf(\"note\") === -1 && a.select(\"g.annotation-note\");\n this.noteContent = this.note && a.select(\"g.annotation-note-content\");\n this.connector = annotation.disable.indexOf(\"connector\") === -1 && a.select(\"g.annotation-connector\");\n this.subject = annotation.disable.indexOf(\"subject\") === -1 && a.select(\"g.annotation-subject\");\n this.dispatcher = dispatcher;\n\n if (dispatcher) {\n var handler = addHandlers.bind(null, dispatcher, annotation);\n handler({ component: this.note, name: \"note\" });\n handler({ component: this.connector, name: \"connector\" });\n handler({ component: this.subject, name: \"subject\" });\n }\n\n this.annotation = annotation;\n this.editMode = annotation.editMode || editMode;\n this.notePadding = notePadding !== undefined ? notePadding : 3;\n this.offsetCornerX = 0;\n this.offsetCornerY = 0;\n\n if (accessors && annotation.data) {\n this.init(accessors);\n }\n }\n\n createClass(Type, [{\n key: \"init\",\n value: function init(accessors) {\n if (!this.annotation.x) {\n this.mapX(accessors);\n }\n if (!this.annotation.y) {\n this.mapY(accessors);\n }\n }\n }, {\n key: \"mapY\",\n value: function mapY(accessors) {\n if (accessors.y) {\n this.annotation.y = accessors.y(this.annotation.data);\n }\n }\n }, {\n key: \"mapX\",\n value: function mapX(accessors) {\n if (accessors.x) {\n this.annotation.x = accessors.x(this.annotation.data);\n }\n }\n }, {\n key: \"updateEditMode\",\n value: function updateEditMode() {\n this.a.selectAll(\"circle.handle\").remove();\n }\n }, {\n key: \"drawOnSVG\",\n value: function drawOnSVG(component, builders) {\n var _this = this;\n\n if (!Array.isArray(builders)) {\n builders = [builders];\n }\n\n builders.filter(function (b) {\n return b;\n }).forEach(function (_ref2) {\n var type = _ref2.type,\n className = _ref2.className,\n attrs = _ref2.attrs,\n handles = _ref2.handles,\n classID = _ref2.classID;\n\n if (type === \"handle\") {\n addHandles({ group: component, r: attrs && attrs.r, handles: handles });\n } else {\n newWithClass(component, [_this.annotation], type, className, classID);\n var el = component.select(type + \".\" + (classID || className));\n var addAttrs = Object.keys(attrs);\n var removeAttrs = [];\n\n var currentAttrs = el.node().attributes;\n for (var i = currentAttrs.length - 1; i >= 0; i--) {\n var name = currentAttrs[i].name;\n if (addAttrs.indexOf(name) === -1 && name !== \"class\") removeAttrs.push(name);\n }\n\n addAttrs.forEach(function (attr) {\n if (attr === \"text\") {\n el.text(attrs[attr]);\n } else {\n el.attr(attr, attrs[attr]);\n }\n });\n\n removeAttrs.forEach(function (attr) {\n return el.attr(attr, null);\n });\n }\n });\n }\n\n //TODO: how to extend this to a drawOnCanvas mode?\n\n }, {\n key: \"getNoteBBox\",\n value: function getNoteBBox() {\n return bboxWithoutHandles(this.note, \".annotation-note-content text\");\n }\n }, {\n key: \"getNoteBBoxOffset\",\n value: function getNoteBBoxOffset() {\n var bbox = bboxWithoutHandles(this.note, \".annotation-note-content\");\n var transform = this.noteContent.attr(\"transform\").split(/\\(|\\,|\\)/g);\n bbox.offsetCornerX = parseFloat(transform[1]) + this.annotation.dx;\n bbox.offsetCornerY = parseFloat(transform[2]) + this.annotation.dy;\n bbox.offsetX = this.annotation.dx;\n bbox.offsetY = this.annotation.dy;\n return bbox;\n }\n }, {\n key: \"drawSubject\",\n value: function drawSubject() {\n var _this2 = this;\n\n var context = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var subjectData = this.annotation.subject;\n var type = context.type;\n var subjectParams = { type: this, subjectData: subjectData };\n\n var subject = {};\n if (type === \"circle\") subject = subjectCircle(subjectParams);else if (type === \"rect\") subject = subjectRect(subjectParams);else if (type === \"threshold\") subject = subjectThreshold(subjectParams);else if (type === \"badge\") subject = subjectBadge(subjectParams, this.annotation);\n\n var _subject = subject,\n _subject$components = _subject.components,\n components = _subject$components === undefined ? [] : _subject$components,\n _subject$handles = _subject.handles,\n handles = _subject$handles === undefined ? [] : _subject$handles;\n\n components.forEach(function (c) {\n if (c && c.attrs && !c.attrs.stroke) {\n c.attrs.stroke = _this2.annotation.color;\n }\n });\n\n if (this.editMode) {\n handles = handles.concat(this.mapHandles([{ drag: this.dragSubject.bind(this) }]));\n components.push({ type: \"handle\", handles: handles });\n }\n\n return components;\n }\n }, {\n key: \"drawConnector\",\n value: function drawConnector() {\n var _this3 = this;\n\n var context = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var connectorData = this.annotation.connector;\n var type = connectorData.type || context.type;\n var connectorParams = { type: this, connectorData: connectorData };\n connectorParams.subjectType = this.typeSettings && this.typeSettings.subject && this.typeSettings.subject.type;\n\n var connector = {};\n if (type === \"curve\") connector = connectorCurve(connectorParams);else if (type === \"elbow\") connector = connectorElbow(connectorParams);else connector = connectorLine(connectorParams);\n var _connector = connector,\n _connector$components = _connector.components,\n components = _connector$components === undefined ? [] : _connector$components,\n _connector$handles = _connector.handles,\n handles = _connector$handles === undefined ? [] : _connector$handles;\n\n var line$$1 = components[0];\n //TODO: genericize this into fill t/f stroke t/f\n if (line$$1) {\n line$$1.attrs.stroke = this.annotation.color;\n line$$1.attrs.fill = \"none\";\n }\n var endType = connectorData.end || context.end;\n var end = {};\n if (endType === \"arrow\") {\n var s = line$$1.data[1];\n var e = line$$1.data[0];\n var distance = Math.sqrt(Math.pow(s[0] - e[0], 2) + Math.pow(s[1] - e[1], 2));\n if (distance < 5 && line$$1.data[2]) {\n s = line$$1.data[2];\n }\n end = connectorArrow({\n annotation: this.annotation,\n start: s,\n end: e,\n scale: connectorData.endScale\n });\n } else if (endType === \"dot\") {\n end = connectorDot({ line: line$$1, scale: connectorData.endScale });\n } else if (!endType || endType === \"none\") {\n this.connector && this.connector.select(\".connector-end\").remove();\n }\n\n if (end.components) {\n end.components.forEach(function (c) {\n c.attrs.fill = _this3.annotation.color;\n c.attrs.stroke = _this3.annotation.color;\n });\n components = components.concat(end.components);\n }\n\n if (this.editMode) {\n if (handles.length !== 0) components.push({ type: \"handle\", handles: handles });\n }\n return components;\n }\n }, {\n key: \"drawNote\",\n value: function drawNote() {\n var _this4 = this;\n\n var context = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var noteData = this.annotation.note;\n var align = noteData.align || context.align || \"dynamic\";\n var noteParams = {\n bbox: context.bbox,\n align: align,\n offset: this.annotation.offset\n };\n var lineType = noteData.lineType || context.lineType;\n var note = {};\n if (lineType === \"vertical\") note = noteVertical(noteParams);else if (lineType === \"horizontal\") note = noteHorizontal(noteParams);\n\n var _note = note,\n _note$components = _note.components,\n components = _note$components === undefined ? [] : _note$components,\n _note$handles = _note.handles,\n handles = _note$handles === undefined ? [] : _note$handles;\n\n components.forEach(function (c) {\n c.attrs.stroke = _this4.annotation.color;\n });\n\n if (this.editMode) {\n handles = this.mapHandles([{ x: 0, y: 0, drag: this.dragNote.bind(this) }]);\n components.push({ type: \"handle\", handles: handles });\n\n var dragging = this.dragNote.bind(this),\n start = this.dragstarted.bind(this),\n end = this.dragended.bind(this);\n this.note.call(drag().container(select(\"g.annotations\").node()).on(\"start\", function (d) {\n return start(d);\n }).on(\"drag\", function (d) {\n return dragging(d);\n }).on(\"end\", function (d) {\n return end(d);\n }));\n } else {\n this.note.on(\"mousedown.drag\", null);\n }\n return components;\n }\n }, {\n key: \"drawNoteContent\",\n value: function drawNoteContent(context) {\n var noteData = this.annotation.note;\n var padding = noteData.padding !== undefined ? noteData.padding : this.notePadding;\n var orientation = noteData.orientation || context.orientation || \"topBottom\";\n var lineType = noteData.lineType || context.lineType;\n var align = noteData.align || context.align || \"dynamic\";\n\n if (lineType === \"vertical\") orientation = \"leftRight\";else if (lineType === \"horizontal\") orientation = \"topBottom\";\n\n var noteParams = {\n padding: padding,\n bbox: context.bbox,\n offset: this.annotation.offset,\n orientation: orientation,\n align: align\n };\n\n var _noteAlignment = noteAlignment(noteParams),\n x = _noteAlignment.x,\n y = _noteAlignment.y;\n\n this.offsetCornerX = x + this.annotation.dx;\n this.offsetCornerY = y + this.annotation.dy;\n this.note && this.noteContent.attr(\"transform\", \"translate(\" + x + \", \" + y + \")\");\n\n return [];\n }\n }, {\n key: \"drawOnScreen\",\n value: function drawOnScreen(component, drawFunction) {\n return this.drawOnSVG(component, drawFunction);\n }\n }, {\n key: \"redrawSubject\",\n value: function redrawSubject() {\n this.subject && this.drawOnScreen(this.subject, this.drawSubject());\n }\n }, {\n key: \"redrawConnector\",\n value: function redrawConnector() {\n this.connector && this.drawOnScreen(this.connector, this.drawConnector());\n }\n }, {\n key: \"redrawNote\",\n value: function redrawNote() {\n var bbox = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.getNoteBBox();\n\n this.noteContent && this.drawOnScreen(this.noteContent, this.drawNoteContent({ bbox: bbox }));\n this.note && this.drawOnScreen(this.note, this.drawNote({ bbox: bbox }));\n }\n }, {\n key: \"setPosition\",\n value: function setPosition() {\n var position = this.annotation.position;\n this.a.attr(\"transform\", \"translate(\" + position.x + \", \" + position.y + \")\");\n }\n }, {\n key: \"clearComponents\",\n value: function clearComponents() {\n this.subject && this.subject.select(\"*\").remove();\n this.connector && this.connector.select(\"*\").remove();\n // this.note && this.note.select(\"*\").remove()\n }\n }, {\n key: \"setOffset\",\n value: function setOffset() {\n if (this.note) {\n var offset = this.annotation.offset;\n this.note.attr(\"transform\", \"translate(\" + offset.x + \", \" + offset.y + \")\");\n }\n }\n }, {\n key: \"setPositionWithAccessors\",\n value: function setPositionWithAccessors(accessors) {\n if (accessors && this.annotation.data) {\n this.mapX(accessors);\n this.mapY(accessors);\n }\n this.setPosition();\n }\n }, {\n key: \"setClassName\",\n value: function setClassName() {\n this.a.attr(\"class\", \"annotation \" + (this.className && this.className()) + \" \" + (this.editMode ? \"editable\" : \"\") + \" \" + (this.annotation.className || \"\"));\n }\n }, {\n key: \"draw\",\n value: function draw() {\n this.setClassName();\n this.setPosition();\n this.setOffset();\n this.redrawSubject();\n this.redrawConnector();\n this.redrawNote();\n }\n }, {\n key: \"dragstarted\",\n value: function dragstarted() {\n event.sourceEvent.stopPropagation();\n this.dispatcher && this.dispatcher.call(\"dragstart\", this.a, this.annotation);\n this.a.classed(\"dragging\", true);\n this.a.selectAll(\"circle.handle\").style(\"pointer-events\", \"none\");\n }\n }, {\n key: \"dragended\",\n value: function dragended() {\n this.dispatcher && this.dispatcher.call(\"dragend\", this.a, this.annotation);\n this.a.classed(\"dragging\", false);\n this.a.selectAll(\"circle.handle\").style(\"pointer-events\", \"all\");\n }\n }, {\n key: \"dragSubject\",\n value: function dragSubject() {\n var position = this.annotation.position;\n position.x += event.dx;\n position.y += event.dy;\n this.annotation.position = position;\n }\n }, {\n key: \"dragNote\",\n value: function dragNote() {\n var offset = this.annotation.offset;\n offset.x += event.dx;\n offset.y += event.dy;\n this.annotation.offset = offset;\n }\n }, {\n key: \"mapHandles\",\n value: function mapHandles(handles) {\n var _this5 = this;\n\n return handles.map(function (h) {\n return _extends({}, h, {\n start: _this5.dragstarted.bind(_this5),\n end: _this5.dragended.bind(_this5)\n });\n });\n }\n }]);\n return Type;\n}();\n\nvar customType = function customType(initialType, typeSettings, _init) {\n return function (_initialType) {\n inherits(customType, _initialType);\n\n function customType(settings) {\n classCallCheck(this, customType);\n\n var _this6 = possibleConstructorReturn(this, (customType.__proto__ || Object.getPrototypeOf(customType)).call(this, settings));\n\n _this6.typeSettings = typeSettings;\n\n if (typeSettings.disable) {\n typeSettings.disable.forEach(function (d) {\n _this6[d] && _this6[d].remove();\n\n _this6[d] = undefined;\n if (d === \"note\") {\n _this6.noteContent = undefined;\n }\n });\n }\n return _this6;\n }\n\n createClass(customType, [{\n key: \"className\",\n value: function className() {\n return \"\" + (typeSettings.className || get(customType.prototype.__proto__ || Object.getPrototypeOf(customType.prototype), \"className\", this) && get(customType.prototype.__proto__ || Object.getPrototypeOf(customType.prototype), \"className\", this).call(this) || \"\");\n }\n }, {\n key: \"drawSubject\",\n value: function drawSubject(context) {\n this.typeSettings.subject = _extends({}, typeSettings.subject, this.typeSettings.subject);\n return get(customType.prototype.__proto__ || Object.getPrototypeOf(customType.prototype), \"drawSubject\", this).call(this, _extends({}, context, this.typeSettings.subject));\n }\n }, {\n key: \"drawConnector\",\n value: function drawConnector(context) {\n this.typeSettings.connector = _extends({}, typeSettings.connector, this.typeSettings.connector);\n return get(customType.prototype.__proto__ || Object.getPrototypeOf(customType.prototype), \"drawConnector\", this).call(this, _extends({}, context, typeSettings.connector, this.typeSettings.connector));\n }\n }, {\n key: \"drawNote\",\n value: function drawNote(context) {\n this.typeSettings.note = _extends({}, typeSettings.note, this.typeSettings.note);\n return get(customType.prototype.__proto__ || Object.getPrototypeOf(customType.prototype), \"drawNote\", this).call(this, _extends({}, context, typeSettings.note, this.typeSettings.note));\n }\n }, {\n key: \"drawNoteContent\",\n value: function drawNoteContent(context) {\n return get(customType.prototype.__proto__ || Object.getPrototypeOf(customType.prototype), \"drawNoteContent\", this).call(this, _extends({}, context, typeSettings.note, this.typeSettings.note));\n }\n }], [{\n key: \"init\",\n value: function init(annotation, accessors) {\n get(customType.__proto__ || Object.getPrototypeOf(customType), \"init\", this).call(this, annotation, accessors);\n if (_init) {\n annotation = _init(annotation, accessors);\n }\n return annotation;\n }\n }]);\n return customType;\n }(initialType);\n};\n\nvar d3NoteText = function (_Type) {\n inherits(d3NoteText, _Type);\n\n function d3NoteText(params) {\n classCallCheck(this, d3NoteText);\n\n var _this7 = possibleConstructorReturn(this, (d3NoteText.__proto__ || Object.getPrototypeOf(d3NoteText)).call(this, params));\n\n _this7.textWrap = params.textWrap || 120;\n _this7.drawText();\n return _this7;\n }\n\n createClass(d3NoteText, [{\n key: \"updateTextWrap\",\n value: function updateTextWrap(textWrap) {\n this.textWrap = textWrap;\n this.drawText();\n }\n\n //TODO: add update text functionality\n\n }, {\n key: \"drawText\",\n value: function drawText() {\n if (this.note) {\n newWithClass(this.note, [this.annotation], \"g\", \"annotation-note-content\");\n\n var noteContent = this.note.select(\"g.annotation-note-content\");\n newWithClass(noteContent, [this.annotation], \"rect\", \"annotation-note-bg\");\n newWithClass(noteContent, [this.annotation], \"text\", \"annotation-note-label\");\n newWithClass(noteContent, [this.annotation], \"text\", \"annotation-note-title\");\n\n var titleBBox = { height: 0 };\n var label = this.a.select(\"text.annotation-note-label\");\n var wrapLength = this.annotation.note && this.annotation.note.wrap || this.typeSettings && this.typeSettings.note && this.typeSettings.note.wrap || this.textWrap;\n\n var wrapSplitter = this.annotation.note && this.annotation.note.wrapSplitter || this.typeSettings && this.typeSettings.note && this.typeSettings.note.wrapSplitter;\n\n var bgPadding = this.annotation.note && this.annotation.note.bgPadding || this.typeSettings && this.typeSettings.note && this.typeSettings.note.bgPadding;\n\n var bgPaddingFinal = { top: 0, bottom: 0, left: 0, right: 0 };\n if (typeof bgPadding === \"number\") {\n bgPaddingFinal = {\n top: bgPadding,\n bottom: bgPadding,\n left: bgPadding,\n right: bgPadding\n };\n } else if (bgPadding && (typeof bgPadding === \"undefined\" ? \"undefined\" : _typeof(bgPadding)) === \"object\") {\n bgPaddingFinal = _extends(bgPaddingFinal, bgPadding);\n }\n\n if (this.annotation.note.title) {\n var title = this.a.select(\"text.annotation-note-title\");\n title.text(this.annotation.note.title);\n title.attr(\"fill\", this.annotation.color);\n title.attr(\"font-weight\", \"bold\");\n title.call(wrap, wrapLength, wrapSplitter);\n titleBBox = title.node().getBBox();\n }\n\n label.text(this.annotation.note.label).attr(\"dx\", \"0\");\n label.call(wrap, wrapLength, wrapSplitter);\n\n label.attr(\"y\", titleBBox.height * 1.1 || 0);\n label.attr(\"fill\", this.annotation.color);\n\n var bbox = this.getNoteBBox();\n\n this.a.select(\"rect.annotation-note-bg\").attr(\"width\", bbox.width + bgPaddingFinal.left + bgPaddingFinal.right).attr(\"height\", bbox.height + bgPaddingFinal.top + bgPaddingFinal.bottom).attr(\"x\", bbox.x - bgPaddingFinal.left).attr(\"y\", -bgPaddingFinal.top).attr(\"fill\", \"white\").attr(\"fill-opacity\", 0);\n }\n }\n }]);\n return d3NoteText;\n}(Type);\n\nvar d3Label = customType(d3NoteText, {\n className: \"label\",\n note: { align: \"middle\" }\n});\n\nvar d3Callout = customType(d3NoteText, {\n className: \"callout\",\n note: { lineType: \"horizontal\" }\n});\n\nvar d3CalloutElbow = customType(d3Callout, {\n className: \"callout elbow\",\n connector: { type: \"elbow\" }\n});\n\nvar d3CalloutCurve = customType(d3Callout, {\n className: \"callout curve\",\n connector: { type: \"curve\" }\n});\n\nvar d3Badge = customType(Type, {\n className: \"badge\",\n subject: { type: \"badge\" },\n disable: [\"connector\", \"note\"]\n});\n\nvar d3CalloutCircle = customType(d3NoteText, {\n className: \"callout circle\",\n subject: { type: \"circle\" },\n note: { lineType: \"horizontal\" },\n connector: { type: \"elbow\" }\n});\n\nvar d3CalloutRect = customType(d3NoteText, {\n className: \"callout rect\",\n subject: { type: \"rect\" },\n note: { lineType: \"horizontal\" },\n connector: { type: \"elbow\" }\n});\n\nvar ThresholdMap = function (_d3Callout) {\n inherits(ThresholdMap, _d3Callout);\n\n function ThresholdMap() {\n classCallCheck(this, ThresholdMap);\n return possibleConstructorReturn(this, (ThresholdMap.__proto__ || Object.getPrototypeOf(ThresholdMap)).apply(this, arguments));\n }\n\n createClass(ThresholdMap, [{\n key: \"mapY\",\n value: function mapY(accessors) {\n get(ThresholdMap.prototype.__proto__ || Object.getPrototypeOf(ThresholdMap.prototype), \"mapY\", this).call(this, accessors);\n var a = this.annotation;\n if ((a.subject.x1 || a.subject.x2) && a.data && accessors.y) {\n a.y = accessors.y(a.data);\n }\n if ((a.subject.x1 || a.subject.x2) && !a.x) {\n a.x = a.subject.x1 || a.subject.x2;\n }\n }\n }, {\n key: \"mapX\",\n value: function mapX(accessors) {\n get(ThresholdMap.prototype.__proto__ || Object.getPrototypeOf(ThresholdMap.prototype), \"mapX\", this).call(this, accessors);\n var a = this.annotation;\n if ((a.subject.y1 || a.subject.y2) && a.data && accessors.x) {\n a.x = accessors.x(a.data);\n }\n if ((a.subject.y1 || a.subject.y2) && !a.y) {\n a.y = a.subject.y1 || a.subject.y2;\n }\n }\n }]);\n return ThresholdMap;\n}(d3Callout);\n\nvar d3XYThreshold = customType(ThresholdMap, {\n className: \"callout xythreshold\",\n subject: { type: \"threshold\" }\n});\n\nvar newWithClass = function newWithClass(a, d, type, className, classID) {\n var group = a.selectAll(type + \".\" + (classID || className)).data(d);\n group.enter().append(type).merge(group).attr(\"class\", className);\n\n group.exit().remove();\n return a;\n};\n\nvar addHandlers = function addHandlers(dispatcher, annotation, _ref3) {\n var component = _ref3.component,\n name = _ref3.name;\n\n if (component) {\n component.on(\"mouseover.annotations\", function () {\n dispatcher.call(name + \"over\", component, annotation);\n }).on(\"mouseout.annotations\", function () {\n return dispatcher.call(name + \"out\", component, annotation);\n }).on(\"click.annotations\", function () {\n return dispatcher.call(name + \"click\", component, annotation);\n });\n }\n};\n\n//Text wrapping code adapted from Mike Bostock\nvar wrap = function wrap(text, width, wrapSplitter) {\n var lineHeight = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1.2;\n\n text.each(function () {\n var text = select(this),\n words = text.text().split(wrapSplitter || /[ \\t\\r\\n]+/).reverse().filter(function (w) {\n return w !== \"\";\n });\n var word = void 0,\n line$$1 = [],\n tspan = text.text(null).append(\"tspan\").attr(\"x\", 0).attr(\"dy\", 0.8 + \"em\");\n\n while (word = words.pop()) {\n line$$1.push(word);\n tspan.text(line$$1.join(\" \"));\n if (tspan.node().getComputedTextLength() > width && line$$1.length > 1) {\n line$$1.pop();\n tspan.text(line$$1.join(\" \"));\n line$$1 = [word];\n tspan = text.append(\"tspan\").attr(\"x\", 0).attr(\"dy\", lineHeight + \"em\").text(word);\n }\n }\n });\n};\n\nvar bboxWithoutHandles = function bboxWithoutHandles(selection) {\n var selector = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \":not(.handle)\";\n\n if (!selection) {\n return { x: 0, y: 0, width: 0, height: 0 };\n }\n\n return selection.selectAll(selector).nodes().reduce(function (p, c) {\n var bbox = c.getBBox();\n p.x = Math.min(p.x, bbox.x);\n p.y = Math.min(p.y, bbox.y);\n p.width = Math.max(p.width, bbox.width);\n\n var yOffset = c && c.attributes && c.attributes.y;\n p.height = Math.max(p.height, (yOffset && parseFloat(yOffset.value) || 0) + bbox.height);\n return p;\n }, { x: 0, y: 0, width: 0, height: 0 });\n};\n\nfunction annotation() {\n var annotations = [],\n collection = void 0,\n context = void 0,\n //TODO: add canvas functionality\n disable = [],\n accessors = {},\n accessorsInverse = {},\n editMode = false,\n ids = void 0,\n type = d3Callout,\n textWrap = void 0,\n notePadding = void 0,\n annotationDispatcher = dispatch(\"subjectover\", \"subjectout\", \"subjectclick\", \"connectorover\", \"connectorout\", \"connectorclick\", \"noteover\", \"noteout\", \"noteclick\", \"dragend\", \"dragstart\"),\n sel = void 0;\n\n var annotation = function annotation(selection) {\n sel = selection;\n //TODO: check to see if this is still needed\n if (!editMode) {\n selection.selectAll(\"circle.handle\").remove();\n }\n\n var translatedAnnotations = annotations.map(function (a) {\n if (!a.type) {\n a.type = type;\n }\n if (!a.disable) {\n a.disable = disable;\n }\n return new Annotation(a);\n });\n\n collection = collection || new AnnotationCollection({\n annotations: translatedAnnotations,\n accessors: accessors,\n accessorsInverse: accessorsInverse,\n ids: ids\n });\n\n var annotationG = selection.selectAll(\"g\").data([collection]);\n annotationG.enter().append(\"g\").attr(\"class\", \"annotations\");\n\n var group = selection.select(\"g.annotations\");\n newWithClass(group, collection.annotations, \"g\", \"annotation\");\n\n var annotation = group.selectAll(\"g.annotation\");\n\n annotation.each(function (d) {\n var a = select(this);\n\n a.attr(\"class\", \"annotation\");\n\n newWithClass(a, [d], \"g\", \"annotation-connector\");\n newWithClass(a, [d], \"g\", \"annotation-subject\");\n newWithClass(a, [d], \"g\", \"annotation-note\");\n newWithClass(a.select(\"g.annotation-note\"), [d], \"g\", \"annotation-note-content\");\n d.type = d.type.toString() === \"[object Object]\" ? d.type : new d.type({\n a: a,\n annotation: d,\n textWrap: textWrap,\n notePadding: notePadding,\n editMode: editMode,\n dispatcher: annotationDispatcher,\n accessors: accessors\n });\n d.type.draw();\n d.type.drawText && d.type.drawText();\n });\n };\n\n annotation.json = function () {\n /* eslint-disable no-console */\n console.log(\"Annotations JSON was copied to your clipboard. Please note the annotation type is not JSON compatible. It appears in the objects array in the console, but not in the copied JSON.\", collection.json);\n /* eslint-enable no-console */\n window.copy(JSON.stringify(collection.json.map(function (a) {\n delete a.type;\n return a;\n })));\n return annotation;\n };\n\n annotation.update = function () {\n if (annotations && collection) {\n annotations = collection.annotations.map(function (a) {\n a.type.draw();\n return a;\n });\n }\n return annotation;\n };\n\n annotation.updateText = function () {\n if (collection) {\n collection.updateText(textWrap);\n annotations = collection.annotations;\n }\n return annotation;\n };\n\n annotation.updatedAccessors = function () {\n collection.setPositionWithAccessors();\n annotations = collection.annotations;\n return annotation;\n };\n\n annotation.disable = function (_) {\n if (!arguments.length) return disable;\n disable = _;\n if (collection) {\n collection.updateDisable(disable);\n annotations = collection.annotations;\n }\n return annotation;\n };\n\n annotation.textWrap = function (_) {\n if (!arguments.length) return textWrap;\n textWrap = _;\n if (collection) {\n collection.updateTextWrap(textWrap);\n annotations = collection.annotations;\n }\n return annotation;\n };\n\n annotation.notePadding = function (_) {\n if (!arguments.length) return notePadding;\n notePadding = _;\n if (collection) {\n collection.updateNotePadding(notePadding);\n annotations = collection.annotations;\n }\n return annotation;\n };\n //todo think of how to handle when undefined is sent\n annotation.type = function (_, settings) {\n if (!arguments.length) return type;\n type = _;\n if (collection) {\n collection.annotations.map(function (a) {\n a.type.note && a.type.note.selectAll(\"*:not(.annotation-note-content)\").remove();\n a.type.noteContent && a.type.noteContent.selectAll(\"*\").remove();\n a.type.subject && a.type.subject.selectAll(\"*\").remove();\n a.type.connector && a.type.connector.selectAll(\"*\").remove();\n a.type.typeSettings = {};\n a.type = type;\n\n a.subject = settings && settings.subject || a.subject;\n a.connector = settings && settings.connector || a.connector;\n a.note = settings && settings.note || a.note;\n });\n\n annotations = collection.annotations;\n }\n return annotation;\n };\n\n annotation.annotations = function (_) {\n if (!arguments.length) return collection && collection.annotations || annotations;\n annotations = _;\n\n if (collection && collection.annotations) {\n var rerun = annotations.some(function (d) {\n return !d.type || d.type.toString() !== \"[object Object]\";\n });\n\n if (rerun) {\n collection = null;\n annotation(sel);\n } else {\n collection.annotations = annotations;\n }\n }\n return annotation;\n };\n\n annotation.context = function (_) {\n if (!arguments.length) return context;\n context = _;\n return annotation;\n };\n\n annotation.accessors = function (_) {\n if (!arguments.length) return accessors;\n accessors = _;\n return annotation;\n };\n\n annotation.accessorsInverse = function (_) {\n if (!arguments.length) return accessorsInverse;\n accessorsInverse = _;\n return annotation;\n };\n\n annotation.ids = function (_) {\n if (!arguments.length) return ids;\n ids = _;\n return annotation;\n };\n\n annotation.editMode = function (_) {\n if (!arguments.length) return editMode;\n editMode = _;\n\n if (sel) {\n sel.selectAll(\"g.annotation\").classed(\"editable\", editMode);\n }\n\n if (collection) {\n collection.editMode(editMode);\n annotations = collection.annotations;\n }\n return annotation;\n };\n\n annotation.collection = function (_) {\n if (!arguments.length) return collection;\n collection = _;\n return annotation;\n };\n\n annotation.on = function () {\n var value = annotationDispatcher.on.apply(annotationDispatcher, arguments);\n return value === annotationDispatcher ? annotation : value;\n };\n\n return annotation;\n}\n\nvar index = {\n annotation: annotation,\n annotationTypeBase: Type,\n annotationLabel: d3Label,\n annotationCallout: d3Callout,\n annotationCalloutCurve: d3CalloutCurve,\n annotationCalloutElbow: d3CalloutElbow,\n annotationCalloutCircle: d3CalloutCircle,\n annotationCalloutRect: d3CalloutRect,\n annotationXYThreshold: d3XYThreshold,\n annotationBadge: d3Badge,\n annotationCustomType: customType\n};\n\nexport { annotation, Type as annotationTypeBase, d3Label as annotationLabel, d3Callout as annotationCallout, d3CalloutCurve as annotationCalloutCurve, d3CalloutElbow as annotationCalloutElbow, d3CalloutCircle as annotationCalloutCircle, d3CalloutRect as annotationCalloutRect, d3XYThreshold as annotationXYThreshold, d3Badge as annotationBadge, customType as annotationCustomType };export default index;\n//# sourceMappingURL=indexRollupNext.js.map\n","import { SVGWidget } from \"@hpcc-js/common\";\nimport { format as d3Format } from \"d3-format\";\nimport { interpolate as d3Interpolate, interpolateHcl as d3InterpolateHcl } from \"d3-interpolate\";\nimport { scaleLinear } from \"d3-scale\";\nimport { Arc, arc as d3Arc, DefaultArcObject } from \"d3-shape\";\nimport { annotation as d3Annotation, annotationCalloutElbow } from \"d3-svg-annotation\";\n\nfunction value2Angle(value: number): number {\n return (value - 0.5) * .65 * 2 * Math.PI;\n}\n\nfunction pointOnArc(angle: number, radius: number): { x: number, y: number } {\n return {\n x: Math.cos(angle - Math.PI / 2) * radius,\n y: Math.sin(angle - Math.PI / 2) * radius\n };\n}\n\nfunction indicatorTranslate(angle: number, radius: number, inner: boolean = false) {\n const point = pointOnArc(angle, radius);\n const rotation = angle * 180 / Math.PI + (inner === true ? 180 : 0);\n return `translate(${point.x}, ${point.y}) rotate(${rotation})`;\n}\n\ntype IndicatorDatum = { angle: number };\nfunction indicatorTween(newAngle: number, radius: number, inner: boolean = false) {\n return function (d: IndicatorDatum) {\n const interpolate = d3Interpolate(d.angle, newAngle);\n d.angle = newAngle;\n return function (t: number) {\n return indicatorTranslate(interpolate(t), radius, inner);\n };\n };\n}\n\nfunction arcTween(startAngle: number, endAngle: number, arc: Arc<any, DefaultArcObject>) {\n return function (d: DefaultArcObject) {\n const startInterpolate = d3Interpolate(d.startAngle, startAngle);\n const endInterpolate = d3Interpolate(d.endAngle, endAngle);\n return function (t: number): string {\n d.startAngle = startInterpolate(t);\n d.endAngle = endInterpolate(t);\n return arc(d)!;\n };\n };\n}\n\nexport class Gauge extends SVGWidget {\n\n private _d3Arc: Arc<any, DefaultArcObject> = d3Arc()\n .innerRadius(85)\n .outerRadius(100)\n ;\n private _colorScale = scaleLinear<string, string>()\n .interpolate(d3InterpolateHcl)\n ;\n\n protected _usageArc: any;\n protected _meanArc: any;\n protected _freeArc: any;\n protected _indInner: any;\n protected _indOuter: any;\n protected _centerTextG: any;\n protected _centerText: any;\n protected _bottomText: any;\n protected _tooltipG: any;\n protected _mainTooltip: any;\n\n constructor() {\n super();\n }\n\n protected tip(d: any) {\n if (d === null || d.label === \"\") {\n this._tooltipG\n .transition()\n .style(\"opacity\", 0)\n .on(\"interrupt end\", () => {\n this._tooltipG\n .selectAll(\"g\")\n .remove()\n ;\n })\n ;\n } else {\n this._tooltipG\n .interrupt()\n .style(\"opacity\", 1)\n ;\n d.w = (this._centerText.datum() as any).w + 10;\n let lineType = \"horizontal\";\n let xOffset = 0;\n let yOffset = 5;\n let padding: number | undefined = 5;\n if (d.y >= 5 && d.y <= 25) {\n xOffset = d.x < 0 ? -d.w / 2 : d.w / 2;\n yOffset = 12.5;\n padding = undefined;\n lineType = \"vertical\";\n } else if (d.y > 25) {\n yOffset = 25;\n padding = 0;\n }\n const annotationtip = d3Annotation()\n .type(annotationCalloutElbow)\n .annotations([{\n data: d,\n dx: -d.x + xOffset,\n dy: -d.y + yOffset,\n color: \"black\",\n note: {\n label: d.label,\n lineType,\n padding,\n align: \"middle\"\n }\n }])\n .accessors({ x: (d2: any) => d2.x, y: (d2: any) => d2.y });\n this._tooltipG.call(annotationtip as any);\n }\n }\n\n protected calcSize(textElement, width: number, height: number): { width: number, height: number, scale: number } {\n const bb = (textElement.node() as any).getBBox();\n const widthTransform = width / bb.width;\n const heightTransform = height / bb.height;\n const scale = widthTransform < heightTransform ? widthTransform : heightTransform;\n return {\n width: bb.width,\n height: bb.height,\n scale\n };\n }\n\n protected updateText(textElement, x: number, y: number, w: number, h: number) {\n textElement\n .datum({ x, y, w, h })\n .attr(\"transform\", null)\n ;\n const size = this.calcSize(textElement, w, h);\n const x2 = x + w / 2 - size.width / 2 * size.scale;\n const y2 = y + h / 2 - size.height / 2 * size.scale;\n textElement.attr(\"transform\", `translate(${x2}, ${y2}) scale(${size.scale})`);\n }\n\n calcWidth(): number {\n return Math.min(this.width(), this.height(), this.maxDiameter());\n }\n\n enter(domNode: HTMLElement, element) {\n super.enter(domNode, element);\n\n element.on(\"click\", (d: Gauge) => {\n this.click(d);\n });\n\n this._usageArc = element.append(\"path\").datum({ startAngle: value2Angle(0), endAngle: value2Angle(0) })\n .style(\"fill\", \"green\")\n .on(\"mousemove\", (d: any) => {\n const [x, y] = this._d3Arc.centroid(d);\n this.tip({ x, y, label: this.valueDescription() });\n })\n .on(\"mouseout\", (d: any) => {\n this.tip(null);\n })\n ;\n this._freeArc = element.append(\"path\").datum({ startAngle: value2Angle(0), endAngle: value2Angle(1) })\n .style(\"fill\", \"lightGrey\")\n ;\n this._meanArc = element.append(\"path\").datum({ startAngle: value2Angle(0), endAngle: value2Angle(0) })\n .style(\"fill\", \"black\")\n .on(\"mousemove\", (d: any) => {\n const [x, y] = this._d3Arc.centroid(d);\n this.tip({ x, y, label: this.tickValueDescription() });\n })\n .on(\"mouseout\", (d: any) => {\n this.tip(null);\n })\n ;\n\n this._mainTooltip = element.append(\"title\");\n\n const context = this;\n function appendIndicator() {\n return element.append(\"path\").datum({ angle: value2Angle(0) })\n .style(\"fill\", \"black\")\n .style(\"stroke\", \"black\")\n .attr(\"d\", \"M 0 0 l -3 -3 l 6 0 z\")\n .on(\"mousemove\", (d: any) => {\n const [x, y] = context._d3Arc.centroid(context._meanArc.datum() as any);\n context.tip({ x, y, label: context.tickValueDescription() });\n })\n .on(\"mouseout\", (d: any) => {\n context.tip(null);\n })\n ;\n }\n this._indInner = appendIndicator();\n this._indOuter = appendIndicator();\n this._centerText = element.append(\"text\")\n .attr(\"dy\", \".66em\")\n .style(\"fill\", \"green\")\n .on(\"mousemove\", (d: any) => {\n this.tip({ x: 0, y: 0, label: this.valueDescription() });\n })\n .on(\"mouseout\", (d: any) => {\n this.tip(null);\n })\n ;\n this._bottomText = element.append(\"text\")\n .attr(\"dy\", \".66em\")\n .on(\"mousemove\", (d: any) => {\n this.tip({ x: 0, y: d.y, label: this.titleDescription() });\n })\n .on(\"mouseout\", (d: any) => {\n this.tip(null);\n })\n ;\n\n this._tooltipG = element.append(\"g\")\n .attr(\"class\", \"annotation-tip\")\n ;\n }\n\n update(domNode: HTMLElement, element) {\n super.update(domNode, element);\n\n this._colorScale\n .domain(this.colorDomain())\n .range(this.colorRange())\n ;\n element\n .attr(\"title\", this.tooltip())\n .style(\"cursor\", this.click !== Gauge.prototype.click ? \"pointer\" : null)\n ;\n\n const innerRadius = this.calcWidth() / 3;\n const outerRadius = this.calcWidth() / 2 - 5;\n this._d3Arc\n .innerRadius(innerRadius)\n .outerRadius(outerRadius)\n ;\n\n const val = this.value();\n const tickVal = this.tickValue();\n\n this._usageArc\n .style(\"fill\", this._colorScale(val))\n .transition()\n .duration(750)\n .attrTween(\"d\", arcTween(value2Angle(0), value2Angle(val), this._d3Arc))\n ;\n\n this._freeArc\n .style(\"fill\", this.emptyColor())\n .transition()\n .duration(750)\n .attrTween(\"d\", arcTween(value2Angle(val), value2Angle(1), this._d3Arc))\n ;\n\n this._meanArc\n .style(\"fill\", this.tickColor())\n .style(\"visibility\", this.showTick() ? \"visible\" : \"hidden\")\n .transition()\n .duration(750)\n .attrTween(\"d\", arcTween(value2Angle(tickVal - 0.001), value2Angle(tickVal + 0.001), this._d3Arc))\n ;\n\n this._indInner\n .style(\"fill\", this.tickColor())\n .style(\"stroke\", this.tickColor())\n .style(\"visibility\", this.showTick() ? \"visible\" : \"hidden\")\n .transition()\n .duration(750)\n .attrTween(\"transform\", indicatorTween(value2Angle(tickVal), innerRadius, true))\n ;\n\n this._indOuter\n .style(\"fill\", this.tickColor())\n .style(\"stroke\", this.tickColor())\n .style(\"visibility\", this.showTick() ? \"visible\" : \"hidden\")\n .transition()\n .duration(750)\n .attrTween(\"transform\", indicatorTween(value2Angle(tickVal), outerRadius))\n ;\n\n this._centerText\n .style(\"fill\", this._colorScale(val))\n .text(d3Format(\".0%\")(val))\n ;\n\n this._bottomText\n .style(\"fill\", this.click !== Gauge.prototype.click ? this.titleClickColor() : this.titleColor())\n .style(\"text-decoration\", this.click !== Gauge.prototype.click ? \"underline\" : null)\n .text(this.title())\n ;\n\n // Update Text ---\n const point = pointOnArc(value2Angle(1), innerRadius - 8);\n this.updateText(this._centerText, -point.x, -point.y, 2 * point.x, 2 * point.y);\n\n const point2 = pointOnArc(value2Angle(1), outerRadius);\n point2.y += 5;\n const width = this.calcWidth() - 20;\n const height = this.calcWidth() / 2 - point2.y - 5;\n this.updateText(this._bottomText, -width / 2, point2.y, width, height);\n\n this._mainTooltip.text(this.tooltip());\n }\n\n // Events ---\n click(w: Gauge) {\n }\n}\nGauge.prototype._class += \" chart_Gauge\";\n\nexport interface Gauge {\n title(): string;\n title(_: string): this;\n titleDescription(): string;\n titleDescription(_: string): this;\n titleColor(): string;\n titleColor(_: string): this;\n titleClickColor(): string;\n titleClickColor(_: string): this;\n\n maxDiameter(): number;\n maxDiameter(_: number): this;\n value(): number;\n value(_: number): this;\n valueDescription(): string;\n valueDescription(_: string): this;\n showTick(): boolean;\n showTick(_: boolean): this;\n tickValue(): number;\n tickValue(_: number): this;\n tickValueDescription(): string;\n tickValueDescription(_: string): this;\n tooltip(): string;\n tooltip(_: string): this;\n\n tickColor(): string;\n tickColor(_: string): this;\n emptyColor(): string;\n emptyColor(_: string): this;\n colorDomain(): number[];\n colorDomain(_: number[]): this;\n colorRange(): string[];\n colorRange(_: string[]): this;\n}\n\nGauge.prototype.publish(\"title\", \"\", \"string\", \"Title\");\nGauge.prototype.publish(\"titleDescription\", \"\", \"string\", \"Title Description\");\nGauge.prototype.publish(\"titleColor\", \"black\", \"html-color\", \"Color of the title text\");\nGauge.prototype.publish(\"titleClickColor\", \"blue\", \"html-color\", \"Color of the title text when clickable\");\n\nGauge.prototype.publish(\"maxDiameter\", 128, \"number\", \"Max Diameter\");\nGauge.prototype.publish(\"value\", 0, \"number\", \"Value\");\nGauge.prototype.publish(\"valueDescription\", \"\", \"string\", \"Value Description\");\nGauge.prototype.publish(\"showTick\", false, \"boolean\", \"Show Tick\");\nGauge.prototype.publish(\"tickValue\", 0, \"number\", \"Tick Value\");\nGauge.prototype.publish(\"tickValueDescription\", \"\", \"string\", \"Tick Value Description\");\nGauge.prototype.publish(\"tooltip\", \"\", \"string\", \"Tooltip\");\n\nGauge.prototype.publish(\"colorRange\", [\"green\", \"green\", \"green\", \"green\", \"green\", \"green\", \"green\", \"green\", \"orange\", \"red\", \"red\"], \"array\", \"Array of colors for the filled gauge portion. The fill color will be relative to the gauge value.\");\nGauge.prototype.publish(\"colorDomain\", [0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1], \"array\", \"This array augments the mapping of the value to the fill colorRange.\");\nGauge.prototype.publish(\"emptyColor\", \"lightgrey\", \"html-color\", \"Color of the empty portion of the gauge\");\nGauge.prototype.publish(\"tickColor\", \"black\", \"html-color\", \"Color of the tick\");\n","import { I2DChart, ITooltip } from \"@hpcc-js/api\";\nimport { InputField, SVGWidget, Utility } from \"@hpcc-js/common\";\nimport { degreesToRadians, normalizeRadians } from \"@hpcc-js/util\";\nimport { format as d3Format } from \"d3-format\";\nimport { interpolate as d3Interpolate } from \"d3-interpolate\";\nimport { select as d3Select } from \"d3-selection\";\nimport { arc as d3Arc, pie as d3Pie } from \"d3-shape\";\n\nimport \"../src/Pie.css\";\n\nconst sortAscending = (a, b) => a[1] - b[1] > 0 ? 1 : -1;\nconst sortDescending = (a, b) => a[1] - b[1] > 0 ? -1 : 1;\n\nexport class Pie extends SVGWidget {\n static __inputs: InputField[] = [{\n id: \"label\",\n type: \"string\"\n }, {\n id: \"value\",\n type: \"number\"\n }];\n\n protected _totalValue: number;\n\n d3Pie;\n d3Arc;\n d3LabelArc;\n private _labelPositions;\n private _smallValueLabelHeight;\n private _labelWidthLimit: number;\n private _quadIdxArr;\n private _minLabelTop = 0;\n private _maxLabelBottom = 0;\n private _seriesValueFormatter;\n private _seriesPercentageFormatter;\n constructor() {\n super();\n I2DChart.call(this);\n ITooltip.call(this);\n Utility.SimpleSelectionMixin.call(this);\n\n this.d3Pie = d3Pie();\n\n this.d3Arc = d3Arc();\n this.d3LabelArc = d3Arc();\n this\n .tooltipTick_default(false)\n .tooltipOffset_default(0)\n ;\n }\n\n intersection(pointA, pointB) {\n return this.intersectCircle(this.calcOuterRadius(), pointA, pointB);\n }\n\n calcInnerRadius() {\n return this.innerRadius_exists() ? this.calcOuterRadius() * (this.innerRadius() as number) / 100 : 0;\n }\n\n calcOuterRadius() {\n const maxTextWidth = this.textSize(this.data().map(d => this.getLabelText({ data: d }, false)), \"Verdana\", 12).width;\n const horizontalLimit = this._size.width - (this.showLabels() ? maxTextWidth * 2 : 0) - 20;\n const verticalLimit = this._size.height - 12 * 3 - (this.showLabels() ? this._smallValueLabelHeight : 0);\n const outerRadius = Math.min(horizontalLimit, verticalLimit) / 2 - 2;\n if ((horizontalLimit / 2) - 2 < this.minOuterRadius()) {\n this._labelWidthLimit = maxTextWidth - (this.minOuterRadius() - ((horizontalLimit / 2) - 2));\n } else {\n this._labelWidthLimit = maxTextWidth;\n }\n if (outerRadius < this.minOuterRadius()) {\n return this.minOuterRadius();\n }\n return outerRadius;\n }\n\n calcSmallValueLabelHeight() {\n const smallDef = 0.1;\n const totalVal = this.data().reduce((acc, n) => acc + n[1], 0);\n let smallCount = 0;\n this.data().forEach(row => {\n if (row[1] / totalVal < smallDef) {\n smallCount++;\n }\n });\n return this.labelHeight() * smallCount;\n }\n\n calcTotalValue(): number {\n return this.data().reduce((acc, d) => {\n return acc + d[1];\n }, 0);\n }\n\n getLabelText(d, truncate?) {\n let len;\n let label = d.data[0];\n if (typeof this._labelWidthLimit !== \"undefined\" && truncate) {\n const labelWidth = this.textSize(label, \"Verdana\", this.labelHeight()).width;\n if (this._labelWidthLimit < labelWidth) {\n len = label.length * (this._labelWidthLimit / labelWidth) - 3;\n label = len < label.length ? label.slice(0, len) + \"...\" : label;\n }\n }\n if (this.showSeriesValue()) {\n label += ` : ${this._seriesValueFormatter(d.data[1])}`;\n }\n if (this.showSeriesPercentage()) {\n let sum = this._totalValue;\n const dm = this.dataMeta();\n if (typeof dm.sum !== \"undefined\") {\n sum = dm.sum;\n }\n const perc = (d.data[1] / sum) * 100;\n label += ` : ${this._seriesPercentageFormatter(perc)}%`;\n }\n return label;\n }\n\n selection(): any[]; // any[] === single row\n selection(_: any[]): this;\n selection(_?: any[]): any[] | this {\n if (!arguments.length) {\n try {\n return this._selection.selection2()[0]?.data;\n } catch (e) {\n return undefined;\n }\n }\n // Stringify to enable a deep equal\n const strRow = JSON.stringify(_);\n this._selection.selection2(d => strRow === JSON.stringify(d.data));\n }\n\n selectByLabel(_: string) {\n const row = this.data().filter(row => row[0] === _)[0];\n if (row) {\n this.selection(row);\n }\n }\n\n _slices;\n _labels;\n enter(_domNode, element) {\n super.enter(_domNode, element);\n this._selection.widgetElement(element);\n this._slices = element.append(\"g\");\n this._labels = element.append(\"g\");\n const context = this;\n this\n .tooltipHTML(function (d) {\n switch (context.tooltipStyle()) {\n case \"series-table\":\n return context.tooltipFormat({\n label: d.data[0],\n arr: context.columns().slice(1).map(function (column, i) {\n return {\n label: column,\n color: context._palette(d.data[0]),\n value: d.data[i + 1]\n };\n })\n });\n default:\n return context.tooltipFormat({ label: d.data[0], value: d.data[1] });\n }\n })\n ;\n }\n\n update(_domNode, element) {\n super.update(_domNode, element);\n const context = this;\n this.updateD3Pie();\n this._palette = this._palette.switch(this.paletteID());\n this._seriesValueFormatter = d3Format(this.seriesValueFormat() as string);\n this._seriesPercentageFormatter = d3Format(this.seriesPercentageFormat() as string);\n if (this.useClonedPalette()) {\n this._palette = this._palette.cloneNotExists(this.paletteID() + \"_\" + this.id());\n }\n this._smallValueLabelHeight = this.calcSmallValueLabelHeight();\n this._totalValue = this.calcTotalValue();\n const innerRadius = this.calcInnerRadius();\n const outerRadius = this.calcOuterRadius();\n const labelRadius = outerRadius + 12;\n this.d3Arc\n .innerRadius(innerRadius)\n .padRadius(outerRadius)\n .outerRadius(outerRadius)\n ;\n\n this._quadIdxArr = [[], [], [], []];\n const data = [...this.data()];\n switch (this.sortDataByValue()) {\n case \"ascending\":\n data.sort(sortAscending);\n break;\n case \"descending\":\n data.sort(sortDescending);\n break;\n }\n const arc = this._slices.selectAll(\".arc\").data(this.d3Pie(data), d => d.data[0]);\n\n this._labelPositions = [];\n\n // Enter ---\n arc.enter().append(\"g\")\n .attr(\"class\", (d, i) => \"arc series series-\" + this.cssTag(d.data[0]))\n .attr(\"opacity\", 0)\n .call(this._selection.enter.bind(this._selection))\n .on(\"click\", function (d) {\n context.click(context.rowToObj(d.data), context.columns()[1], context._selection.selected(this));\n })\n .on(\"dblclick\", function (d) {\n context.dblclick(context.rowToObj(d.data), context.columns()[1], context._selection.selected(this));\n })\n .each(function (d, i) {\n d3Select(this).append(\"path\")\n .on(\"mouseout.tooltip\", context.tooltip.hide)\n .on(\"mousemove.tooltip\", context.tooltip.show)\n .on(\"mouseover\", arcTween(0, 0))\n .on(\"mouseout\", arcTween(-5, 150))\n ;\n })\n .merge(arc).transition()\n .attr(\"opacity\", 1)\n .each(function (d, i) {\n const quad = context.getQuadrant(midAngle(d));\n context._quadIdxArr[quad].push(i);\n d.outerRadius = outerRadius - 5;\n const element2 = d3Select(this);\n element2.select(\"path\").transition()\n .attr(\"d\", context.d3Arc)\n .style(\"fill\", context.fillColor(d.data, context.columns()[1], d.data[1]))\n ;\n })\n ;\n\n // Exit ---\n arc.exit().transition()\n .style(\"opacity\", 0)\n .remove()\n ;\n // Labels ---\n this.d3LabelArc\n .innerRadius(labelRadius)\n .outerRadius(labelRadius)\n ;\n const text = this._labels.selectAll(\"text\").data(this.showLabels() ? this.d3Pie(data) : [], d => d.data[0]);\n\n const mergedText = text.enter().append(\"text\")\n .on(\"mouseout.tooltip\", context.tooltip.hide)\n .on(\"mousemove.tooltip\", context.tooltip.show)\n .attr(\"dy\", \".5em\")\n .on(\"click\", function (d) {\n context._slices.selectAll(\"g\").filter(function (d2) {\n if (d.data === d2.data) {\n context._selection.click(this);\n context.click(context.rowToObj(d.data), context.columns()[1], context._selection.selected(this));\n }\n });\n })\n .on(\"dblclick\", function (d) {\n context._slices.selectAll(\"g\").filter(function (d2) {\n if (d.data === d2.data) {\n context.dblclick(context.rowToObj(d.data), context.columns()[1], context._selection.selected(this));\n }\n });\n })\n .merge(text)\n .text(d => this.getLabelText(d, true))\n .each(function (d, i) {\n const pos = context.d3LabelArc.centroid(d);\n const mid_angle = midAngle(d);\n pos[0] = labelRadius * (context.isLeftSide(mid_angle) ? 1 : -1);\n context._labelPositions.push({\n top: pos[1],\n bottom: pos[1] + context.labelHeight()\n });\n });\n if (this.showLabels()) {\n this.adjustForOverlap();\n mergedText.transition()\n .style(\"font-size\", this.labelHeight() + \"px\")\n .attr(\"transform\", (d, i) => {\n const pos = context.d3LabelArc.centroid(d);\n pos[0] = labelRadius * (context.isLeftSide(midAngle(d)) ? 1 : -1);\n pos[1] = context._labelPositions[i].top;\n return \"translate(\" + pos + \")\";\n })\n .style(\"text-anchor\", d => this.isLeftSide(midAngle(d)) ? \"start\" : \"end\");\n }\n\n text.exit()\n .remove();\n\n const polyline = this._labels.selectAll(\"polyline\").data(this.showLabels() ? this.d3Pie(data) : [], d => this.getLabelText(d, true));\n\n polyline.enter()\n .append(\"polyline\")\n .merge(polyline).transition()\n .attr(\"points\", function (d, i) {\n const pos = context.d3LabelArc.centroid(d);\n const pos1 = context.d3Arc.centroid(d);\n const pos2 = [...pos];\n pos[0] = labelRadius * (context.isLeftSide(midAngle(d)) ? 1 : -1);\n pos[1] = context._labelPositions[i].top;\n return [pos1, pos2, pos];\n });\n\n polyline.exit()\n .remove();\n\n if (this.showLabels()) {\n this.centerOnLabels();\n }\n function midAngle(d) {\n return d.startAngle + (d.endAngle - d.startAngle) / 2;\n }\n\n function arcTween(outerRadiusDelta, delay) {\n return function () {\n d3Select(this).transition().delay(delay).attrTween(\"d\", function (d: any) {\n const i = d3Interpolate(d.outerRadius, outerRadius + outerRadiusDelta);\n return function (t) { d.outerRadius = i(t); return context.d3Arc(d); };\n });\n };\n }\n }\n\n isLeftSide(midAngle) {\n midAngle = normalizeRadians(midAngle);\n const isLeft = midAngle > Math.PI * 2 ? midAngle : midAngle < Math.PI && midAngle > 0;\n return isLeft;\n }\n\n getQuadrant(radians) {\n let quad = 0;\n const rad = normalizeRadians(radians);\n quad = rad <= Math.PI * 1.0 && rad >= Math.PI * 0.5 ? 3 : quad;\n quad = rad <= Math.PI * 0.5 && rad >= Math.PI * 0.0 ? 2 : quad;\n quad = rad <= Math.PI * 0.0 && rad >= Math.PI * -0.5 ? 1 : quad;\n return quad;\n }\n\n centerOnLabels() {\n const gY = this.pos().y;\n const gY2 = gY * 2;\n const radius = this.calcOuterRadius();\n const top = Math.min(this._minLabelTop, -radius);\n const bottom = Math.max(this._maxLabelBottom, radius);\n const h = bottom - top;\n const heightDiff = gY2 - h;\n const absTop = Math.abs(this._minLabelTop);\n let yShift = 0;\n if (bottom > gY) {\n yShift = gY - bottom + (this.labelHeight() / 2);\n yShift -= heightDiff / 2;\n } else if (top < 0 && absTop > gY) {\n yShift = absTop - gY + (this.labelHeight() / 2);\n yShift += heightDiff / 2;\n }\n const pos = this.pos();\n this.pos({\n y: pos.y + yShift,\n x: pos.x\n });\n }\n\n adjustForOverlap() {\n const labelHeight = this.labelHeight();\n this._quadIdxArr.forEach((arr, quad) => {\n this._quadIdxArr[quad].sort((a, b) => {\n if (quad === 1 || quad === 2) {\n return this._labelPositions[a].top > this._labelPositions[b].top ? -1 : 1;\n } else if (quad === 0 || quad === 3) {\n return this._labelPositions[a].top > this._labelPositions[b].top ? 1 : -1;\n }\n });\n let prevTop;\n this._quadIdxArr[quad].forEach((n, i) => {\n if (i > 0) {\n if (quad === 1 || quad === 2) {\n if (prevTop < this._labelPositions[n].bottom) {\n const overlap = this._labelPositions[n].bottom - prevTop;\n this._labelPositions[n].top -= overlap;\n this._labelPositions[n].bottom -= overlap;\n }\n } else if (quad === 0 || quad === 3) {\n if (prevTop + labelHeight > this._labelPositions[n].top) {\n const overlap = Math.abs(this._labelPositions[n].top) - Math.abs(prevTop + labelHeight);\n this._labelPositions[n].top -= overlap;\n this._labelPositions[n].bottom -= overlap;\n }\n }\n }\n prevTop = this._labelPositions[n].top;\n });\n });\n this._minLabelTop = 0;\n this._maxLabelBottom = 0;\n this._quadIdxArr.forEach((arr, quad) => {\n this._quadIdxArr[quad].forEach((n, i) => {\n if (this._minLabelTop > this._labelPositions[n].top) {\n this._minLabelTop = this._labelPositions[n].top;\n }\n if (this._maxLabelBottom < this._labelPositions[n].bottom) {\n this._maxLabelBottom = this._labelPositions[n].bottom;\n }\n });\n });\n }\n\n exit(domNode, element) {\n super.exit(domNode, element);\n }\n\n updateD3Pie() {\n const startAngle = normalizeRadians(degreesToRadians(this.startAngle()));\n\n switch (this.sortDataByValue()) {\n case \"ascending\":\n this.d3Pie.sort(sortAscending);\n break;\n case \"descending\":\n this.d3Pie.sort(sortDescending);\n break;\n default:\n this.d3Pie.sort(null);\n }\n\n this.d3Pie\n .padAngle(0.0025)\n .startAngle(startAngle)\n .endAngle(2 * Math.PI + startAngle)\n .value(function (d) {\n return d[1];\n })\n ;\n }\n}\nPie.prototype._class += \" chart_Pie\";\nPie.prototype.implements(I2DChart.prototype);\nPie.prototype.implements(ITooltip.prototype);\nPie.prototype.mixin(Utility.SimpleSelectionMixin);\n\nexport interface Pie {\n showSeriesValue(): boolean;\n showSeriesValue(_: boolean): this;\n seriesValueFormat(): string;\n seriesValueFormat(_: string): this;\n showSeriesPercentage(): boolean;\n showSeriesPercentage(_: boolean): this;\n minOuterRadius(): number;\n minOuterRadius(_: number): this;\n startAngle(): number;\n startAngle(_: number): this;\n labelHeight(): number;\n labelHeight(_: number): this;\n seriesPercentageFormat(): string;\n seriesPercentageFormat(_: string): this;\n showLabels(): boolean;\n showLabels(_: boolean): this;\n sortDataByValue(): \"none\" | \"ascending\" | \"descending\";\n sortDataByValue(_: \"none\" | \"ascending\" | \"descending\"): this;\n\n paletteID(_?: string): string | Pie;\n useClonedPalette(_?: boolean): boolean | Pie;\n outerText(_?: boolean): boolean | Pie;\n innerRadius(): number;\n innerRadius_exists(): boolean;\n\n // I2DChart\n _palette;\n fillColor(row: any[], column: string, value: number): string;\n textColor(row: any[], column: string, value: number): string;\n click(row, column, selected): void;\n dblclick(row, column, selected): void;\n\n // ITooltip\n tooltip;\n tooltipHTML(_): string;\n tooltipFormat(_): string;\n tooltipStyle(): \"default\" | \"none\" | \"series-table\";\n tooltipTick(): boolean;\n tooltipTick(_: boolean): Pie;\n tooltipTick_default(): boolean;\n tooltipTick_default(_: boolean): Pie;\n tooltipOffset(): number;\n tooltipOffset(_: number): Pie;\n tooltipOffset_default(): number;\n tooltipOffset_default(_: number): Pie;\n\n // SimpleSelectionMixin\n _selection: Utility.SimpleSelection;\n}\nPie.prototype.publish(\"showLabels\", true, \"boolean\", \"If true, wedge labels will display\");\nPie.prototype.publish(\"showSeriesValue\", false, \"boolean\", \"Append data series value next to label\", null, { disable: w => !w.showLabels() });\nPie.prototype.publish(\"seriesValueFormat\", \",.0f\", \"string\", \"Number format used for formatting series values\", null, { disable: w => !w.showSeriesValue() });\nPie.prototype.publish(\"showSeriesPercentage\", false, \"boolean\", \"Append data series percentage next to label\", null, { disable: w => !w.showLabels() });\nPie.prototype.publish(\"seriesPercentageFormat\", \",.0f\", \"string\", \"Number format used for formatting series percentages\", null, { disable: w => !w.showSeriesPercentage() });\nPie.prototype.publish(\"paletteID\", \"default\", \"set\", \"Color palette for this widget\", Pie.prototype._palette.switch(), { tags: [\"Basic\", \"Shared\"] });\nPie.prototype.publish(\"useClonedPalette\", false, \"boolean\", \"Enable or disable using a cloned palette\", null, { tags: [\"Intermediate\", \"Shared\"] });\nPie.prototype.publish(\"innerRadius\", 0, \"number\", \"Sets inner pie hole radius as a percentage of the radius of the pie chart\", null, { tags: [\"Basic\"], range: { min: 0, step: 1, max: 100 } });\nPie.prototype.publish(\"minOuterRadius\", 20, \"number\", \"Minimum outer radius (pixels)\");\nPie.prototype.publish(\"startAngle\", 0, \"number\", \"Starting angle of the first (and largest) wedge (degrees)\");\nPie.prototype.publish(\"labelHeight\", 12, \"number\", \"Font size of labels (pixels)\", null, { disable: w => !w.showLabels() });\nPie.prototype.publish(\"sortDataByValue\", \"descending\", \"set\", \"Sort data by value\", [\"none\", \"ascending\", \"descending\"]);\n","import { Pie } from \"./Pie.ts\";\n\nexport class HalfPie extends Pie {\n constructor() {\n super();\n }\n postUpdate(domNode, element) {\n super.postUpdate(domNode, element);\n let x = this._pos.x;\n let y = this._pos.y;\n if (this._drawStartPos === \"origin\" && this._target instanceof SVGElement) {\n x -= this._size.width / 2;\n y -= this._size.height / 2;\n }\n y += (this._size.height / 4);\n this._element.attr(\"transform\", \"translate(\" + x + \",\" + y + \")scale(\" + this._widgetScale + \")\");\n }\n updateD3Pie() {\n super.updateD3Pie();\n this.d3Pie\n .startAngle(-Math.PI / 2)\n .endAngle(Math.PI / 2)\n ;\n }\n}\nHalfPie.prototype._class += \" chart_HalfPie\";\n","import { max, Palette } from \"@hpcc-js/common\";\nimport { XYAxis } from \"./XYAxis.ts\";\n\nexport class Heat extends XYAxis {\n\n protected _domForeignObject;\n protected _domCanvas;\n protected _heat;\n\n constructor() {\n super();\n this\n .xAxisGuideLines_default(true)\n .yAxisGuideLines_default(true)\n ;\n }\n\n radius(r: number): this {\n this.radiusX(r);\n this.radiusY(r);\n return this;\n }\n\n layerEnter(host: XYAxis, element, duration: number = 250) {\n super.layerEnter(host, element, duration);\n this._domForeignObject = this.svg.insert(\"foreignObject\", `#${this.id() + \"_clippath\"}`);\n this._domCanvas = this._domForeignObject.append(\"xhtml:body\")\n .style(\"margin\", \"0px\")\n .style(\"padding\", \"0px\")\n .style(\"background-color\", \"transparent\")\n .append(\"canvas\")\n ;\n this._heat = simpleheat(this._domCanvas.node());\n }\n\n layerUpdate(host: XYAxis, element, duration: number = 250) {\n super.layerUpdate(host, element);\n\n this._palette = this._palette.switch(this.paletteID());\n\n let width = this.width() - this.margin.left - this.margin.right;\n if (width < 0) width = 0;\n let height = this.height() - this.margin.top - this.margin.bottom;\n if (height < 0) height = 0;\n\n this._domForeignObject\n .attr(\"x\", this.margin.left)\n .attr(\"y\", this.margin.top)\n .attr(\"width\", width)\n .attr(\"height\", height)\n ;\n this._domCanvas\n .attr(\"width\", width)\n .attr(\"height\", height)\n ;\n\n const data = host.orientation() === \"horizontal\" ?\n this.data().map(r => [host.dataPos(r[0]), host.valuePos(r[1]), r[2]]) :\n this.data().map(r => [host.valuePos(r[1]), host.dataPos(r[0]), r[2]])\n ;\n\n const maxWeight = this.maxWeight_exists() ? this.maxWeight() : max(data, r => r[2]);\n\n if (this.paletteID() !== \"default\") {\n const gradient = {};\n const count = 8;\n const reverse = this.reversePalette();\n for (let i = 0; i < count; ++i) {\n gradient[i / count] = this._palette((reverse ? count - i : i) / count, 0, 1);\n }\n this._heat.gradient(gradient);\n } else {\n this._heat.gradient(this._heat.defaultGradient);\n }\n\n this._heat.resize();\n\n const radiusX = this.radiusAsPercent() ? this.radiusX() * width / 100 : this.radiusX();\n const radiusY = this.radiusAsPercent() ? this.radiusY() * height / 100 : this.radiusY();\n\n this._heat\n .clear()\n .radius(radiusX, radiusY, this.blur())\n .max(maxWeight)\n .data(data)\n .draw(this.minOpacity())\n ;\n }\n}\n\nHeat.prototype._class += \" chart_Heat\";\nHeat.prototype._palette = Palette.rainbow(\"default\");\n\nexport interface Heat {\n paletteID(): string;\n paletteID(_: string): this;\n useClonedPalette(): boolean;\n useClonedPalette(_: boolean): this;\n reversePalette(): boolean;\n reversePalette(_: boolean): this;\n\n radiusX(): number;\n radiusX(_: number): this;\n radiusY(): number;\n radiusY(_: number): this;\n radiusAsPercent(): boolean;\n radiusAsPercent(_: boolean): this;\n blur(): number;\n blur(_: number): this;\n\n maxWeight(): number;\n maxWeight(_: number): this;\n maxWeight_exists(): boolean;\n\n minOpacity(): number;\n minOpacity(_: number): this;\n}\n\nHeat.prototype.publish(\"paletteID\", \"default\", \"set\", \"Color palette for this widget\", Heat.prototype._palette.switch(), { tags: [\"Basic\"] });\nHeat.prototype.publish(\"useClonedPalette\", false, \"boolean\", \"Enable or disable using a cloned palette\", null, { tags: [\"Intermediate\", \"Shared\"] });\nHeat.prototype.publish(\"reversePalette\", false, \"boolean\", \"Reverse Palette Colors\", null, { disable: w => w.paletteID() === \"default\" });\n\nHeat.prototype.publish(\"radiusX\", 25, \"number\", \"Point X radius (25 by default)\");\nHeat.prototype.publish(\"radiusY\", 25, \"number\", \"Point Y radius (25 by default)\");\nHeat.prototype.publish(\"radiusAsPercent\", false, \"boolean\", \"Calculate RadiusX + RadiusY as % of size\");\nHeat.prototype.publish(\"blur\", 15, \"number\", \"Point blur radius (15 by default)\");\n\nHeat.prototype.publish(\"maxWeight\", undefined, \"number\", \"Clamp max weight to value (optional), omitting uses max data point\", undefined, { optional: true });\nHeat.prototype.publish(\"minOpacity\", 0.05, \"number\", \"Minimum point opacity (0.05 by default)\");\n\n// The following code is a modified version of \n// - https://github.com/mourner/simpleheat\n// - Licensed under BSD-2-Clause - https://github.com/mourner/simpleheat/blob/gh-pages/LICENSE\n// Changes:\n// * Fixed TS syntax issues\n// * Added support for eliptical shapes instead of circles\n\nfunction simpleheat(canvas): void {\n if (!(this instanceof simpleheat)) return new simpleheat(canvas);\n\n this._canvas = canvas = typeof canvas === \"string\" ? document.getElementById(canvas) : canvas;\n\n this._ctx = canvas.getContext(\"2d\");\n this._width = canvas.width;\n this._height = canvas.height;\n\n this._max = 1;\n this._data = [];\n}\n\nsimpleheat.prototype = {\n\n defaultRadius: 25,\n\n defaultGradient: {\n 0.4: \"blue\",\n 0.6: \"cyan\",\n 0.7: \"lime\",\n 0.8: \"yellow\",\n 1.0: \"red\"\n },\n\n data: function (data) {\n this._data = data;\n return this;\n },\n\n max: function (max) {\n this._max = max;\n return this;\n },\n\n add: function (point) {\n this._data.push(point);\n return this;\n },\n\n clear: function () {\n this._data = [];\n return this;\n },\n\n radius: function (rX, rY, blur) {\n blur = blur === undefined ? 15 : blur;\n\n // create a grayscale blurred ellipse image that we'll use for drawing points\n const ellipse = this._ellipse = this._createCanvas();\n const ctx = ellipse.getContext(\"2d\");\n const rX2 = this._r = rX + blur;\n const rY2 = this._r = rY + blur;\n\n ellipse.width = rX2 * 2;\n ellipse.height = rY2 * 2;\n\n ctx.shadowOffsetX = ctx.shadowOffsetY = rX2 * 2;\n ctx.shadowOffsetY = ctx.shadowOffsetY = rY2 * 2;\n ctx.shadowBlur = blur;\n ctx.shadowColor = \"black\";\n\n ctx.beginPath();\n ctx.ellipse(-rX2, -rY2, rX, rY, 0, 0, Math.PI * 2, true);\n ctx.closePath();\n ctx.fill();\n\n return this;\n },\n\n resize: function () {\n this._width = this._canvas.width;\n this._height = this._canvas.height;\n },\n\n gradient: function (grad) {\n // create a 256x1 gradient that we'll use to turn a grayscale heatmap into a colored one\n const canvas = this._createCanvas(),\n ctx = canvas.getContext(\"2d\"),\n gradient = ctx.createLinearGradient(0, 0, 0, 256);\n\n canvas.width = 1;\n canvas.height = 256;\n\n for (const i in grad) {\n gradient.addColorStop(+i, grad[i]);\n }\n\n ctx.fillStyle = gradient;\n ctx.fillRect(0, 0, 1, 256);\n\n this._grad = ctx.getImageData(0, 0, 1, 256).data;\n\n return this;\n },\n\n draw: function (minOpacity) {\n if (!this._ellipse) this.radius(this.defaultRadius, this.defaultRadius);\n if (!this._grad) this.gradient(this.defaultGradient);\n\n const ctx = this._ctx;\n\n ctx.clearRect(0, 0, this._width, this._height);\n\n // draw a grayscale heatmap by putting a blurred ellipse at each data point\n for (let i = 0, len = this._data.length, p; i < len; i++) {\n p = this._data[i];\n if (p[2] < 0) {\n p[2] = 0;\n } else if (p[2] > this._max) {\n p[2] = this._max;\n }\n ctx.globalAlpha = Math.max(p[2] / this._max, minOpacity === undefined ? 0.05 : minOpacity);\n ctx.drawImage(this._ellipse, p[0] - this._r, p[1] - this._r);\n }\n\n // colorize the heatmap, using opacity value of each pixel to get the right color from our gradient\n const colored = ctx.getImageData(0, 0, this._width, this._height);\n this._colorize(colored.data, this._grad);\n ctx.putImageData(colored, 0, 0);\n\n return this;\n },\n\n _colorize: function (pixels, gradient) {\n for (let i = 0, len = pixels.length, j; i < len; i += 4) {\n j = pixels[i + 3] * 4; // get gradient color from opacity value\n\n if (j) {\n pixels[i] = gradient[j];\n pixels[i + 1] = gradient[j + 1];\n pixels[i + 2] = gradient[j + 2];\n }\n }\n },\n\n _createCanvas: function () {\n if (typeof document !== \"undefined\") {\n return document.createElement(\"canvas\");\n } else {\n // create a new canvas instance in node.js\n // the canvas class needs to have a default constructor without any parameter\n return new this._canvas.constructor();\n }\n }\n};\n","var thirdPi = Math.PI / 3,\n angles = [0, thirdPi, 2 * thirdPi, 3 * thirdPi, 4 * thirdPi, 5 * thirdPi];\n\nfunction pointX(d) {\n return d[0];\n}\n\nfunction pointY(d) {\n return d[1];\n}\n\nexport default function() {\n var x0 = 0,\n y0 = 0,\n x1 = 1,\n y1 = 1,\n x = pointX,\n y = pointY,\n r,\n dx,\n dy;\n\n function hexbin(points) {\n var binsById = {}, bins = [], i, n = points.length;\n\n for (i = 0; i < n; ++i) {\n if (isNaN(px = +x.call(null, point = points[i], i, points))\n || isNaN(py = +y.call(null, point, i, points))) continue;\n\n var point,\n px,\n py,\n pj = Math.round(py = py / dy),\n pi = Math.round(px = px / dx - (pj & 1) / 2),\n py1 = py - pj;\n\n if (Math.abs(py1) * 3 > 1) {\n var px1 = px - pi,\n pi2 = pi + (px < pi ? -1 : 1) / 2,\n pj2 = pj + (py < pj ? -1 : 1),\n px2 = px - pi2,\n py2 = py - pj2;\n if (px1 * px1 + py1 * py1 > px2 * px2 + py2 * py2) pi = pi2 + (pj & 1 ? 1 : -1) / 2, pj = pj2;\n }\n\n var id = pi + \"-\" + pj, bin = binsById[id];\n if (bin) bin.push(point);\n else {\n bins.push(bin = binsById[id] = [point]);\n bin.x = (pi + (pj & 1) / 2) * dx;\n bin.y = pj * dy;\n }\n }\n\n return bins;\n }\n\n function hexagon(radius) {\n var x0 = 0, y0 = 0;\n return angles.map(function(angle) {\n var x1 = Math.sin(angle) * radius,\n y1 = -Math.cos(angle) * radius,\n dx = x1 - x0,\n dy = y1 - y0;\n x0 = x1, y0 = y1;\n return [dx, dy];\n });\n }\n\n hexbin.hexagon = function(radius) {\n return \"m\" + hexagon(radius == null ? r : +radius).join(\"l\") + \"z\";\n };\n\n hexbin.centers = function() {\n var centers = [],\n j = Math.round(y0 / dy),\n i = Math.round(x0 / dx);\n for (var y = j * dy; y < y1 + r; y += dy, ++j) {\n for (var x = i * dx + (j & 1) * dx / 2; x < x1 + dx / 2; x += dx) {\n centers.push([x, y]);\n }\n }\n return centers;\n };\n\n hexbin.mesh = function() {\n var fragment = hexagon(r).slice(0, 4).join(\"l\");\n return hexbin.centers().map(function(p) { return \"M\" + p + \"m\" + fragment; }).join(\"\");\n };\n\n hexbin.x = function(_) {\n return arguments.length ? (x = _, hexbin) : x;\n };\n\n hexbin.y = function(_) {\n return arguments.length ? (y = _, hexbin) : y;\n };\n\n hexbin.radius = function(_) {\n return arguments.length ? (r = +_, dx = r * 2 * Math.sin(thirdPi), dy = r * 1.5, hexbin) : r;\n };\n\n hexbin.size = function(_) {\n return arguments.length ? (x0 = y0 = 0, x1 = +_[0], y1 = +_[1], hexbin) : [x1 - x0, y1 - y0];\n };\n\n hexbin.extent = function(_) {\n return arguments.length ? (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1], hexbin) : [[x0, y0], [x1, y1]];\n };\n\n return hexbin.radius(1);\n}\n","import { I2DAggrChart, ITooltip } from \"@hpcc-js/api\";\nimport { InputField } from \"@hpcc-js/common\";\nimport { extent as d3Extent, max as d3Max, min as d3Min } from \"d3-array\";\nimport { hexbin as d3HexBin } from \"d3-hexbin\";\nimport { XYAxis } from \"./XYAxis.ts\";\n\nimport \"../src/HexBin.css\";\n\nexport class HexBin extends XYAxis {\n static __inputs: InputField[] = [{\n id: \"x\",\n type: \"any\"\n }, {\n id: \"y\",\n type: \"number\"\n }];\n\n protected _hexbin;\n protected _dataMinWeight;\n protected _dataMaxWeight;\n constructor() {\n super();\n I2DAggrChart.call(this);\n this.tooltipValueFormat_default(\",.0f\");\n ITooltip.call(this);\n this.tooltipHTML(d => {\n const seriesExtent = d3Extent<{ label: any, value: any }>(d, d => d.label);\n const labelExtent = d3Extent<{ label: any, value: any }>(d, d => d.value);\n return this.tooltipFormat({\n series: seriesExtent[0] === seriesExtent[1] ? seriesExtent[0] : `${seriesExtent[0]} -> ${seriesExtent[1]}`,\n label: labelExtent[0] === labelExtent[1] ? labelExtent[0] : `${labelExtent[0]} -> ${labelExtent[1]}`,\n value: d.length\n });\n });\n this._hexbin = d3HexBin()\n .x(d => d.x)\n .y(d => d.y)\n ;\n this\n .xAxisGuideLines_default(false)\n .yAxisGuideLines_default(false)\n .xAxisType_default(\"linear\")\n ;\n }\n\n xPos(host: XYAxis, d) {\n return host.orientation() === \"horizontal\" ? host.dataPos(d.label) : host.valuePos(d.value);\n }\n\n yPos(host: XYAxis, d) {\n return host.orientation() === \"horizontal\" ? host.valuePos(d.value) : host.dataPos(d.label);\n }\n\n layerUpdate(host: XYAxis, element, duration: number = 250) {\n super.layerUpdate(host, element, duration);\n const context = this;\n\n this._palette = this._palette.switch(this.paletteID());\n if (this.useClonedPalette()) {\n this._palette = this._palette.cloneNotExists(this.paletteID() + \"_\" + this.id());\n }\n\n this._hexbin\n .extent([0, 0], [this.width(), this.height()])\n .radius(this.binSize())\n ;\n\n const flatData = this.flattenData();\n const dataPoints = flatData.map(d => {\n return {\n x: context.xPos(host, d),\n y: context.yPos(host, d),\n label: host.parseData(d.label),\n value: host.parseValue(d.value),\n origRow: d\n };\n });\n const hexBinPoints = this._hexbin(dataPoints);\n const minBinPoints = d3Min(hexBinPoints, function (d: any) { return d.length; });\n const maxBinPoints = d3Max(hexBinPoints, function (d: any) { return d.length; });\n this._dataMinWeight = minBinPoints;\n this._dataMaxWeight = maxBinPoints;\n\n const points = element.selectAll(\".hexagon\").data(hexBinPoints, function (d) { return d.i + \"_\" + d.j; });\n points.enter().append(\"path\")\n .attr(\"class\", \"hexagon\")\n .call(host._selection.enter.bind(host._selection))\n .on(\"click\", function (d: any) {\n const data = context.data();\n context.click(d.map(row => host.rowToObj(data[row.origRow.rowIdx])), context.columns()[1], host._selection.selected(this));\n })\n .on(\"dblclick\", function (d: any) {\n const data = context.data();\n context.dblclick(d.map(row => host.rowToObj(data[row.origRow.rowIdx])), context.columns()[1], host._selection.selected(this));\n })\n .on(\"mouseout.tooltip\", context.tooltip.hide)\n .on(\"mousemove.tooltip\", context.tooltip.show)\n .attr(\"transform\", function (d) { return \"translate(\" + d.x + \",\" + d.y + \")scale(0)\"; })\n .merge(points).transition().duration(duration)\n .attr(\"d\", this._hexbin.hexagon())\n .attr(\"transform\", function (d) { return \"translate(\" + d.x + \",\" + d.y + \")scale(1)\"; })\n .style(\"fill\", function (d) { return context._palette(d.length, minBinPoints, maxBinPoints); })\n ;\n points.exit().transition().duration(duration)\n .attr(\"transform\", function (d) { return \"translate(\" + d.x + \",\" + d.y + \")scale(0)\"; })\n .remove()\n ;\n }\n\n exit(domNode, element) {\n super.exit(domNode, element);\n }\n\n // Events ---\n click(row: object[], column, selected) {\n // console.log(\"Click: \" + JSON.stringify(row) + \", \" + column + \", \" + selected);\n }\n dblclick(row: object[], column, selected) {\n // console.log(\"Click: \" + JSON.stringify(row) + \", \" + column + \", \" + selected);\n }\n}\nHexBin.prototype._class += \" chart_HexBin\";\nHexBin.prototype.implements(I2DAggrChart.prototype);\nHexBin.prototype.implements(ITooltip.prototype);\n\nexport interface HexBin {\n // ITooltip\n tooltip;\n tooltipHTML(_): string;\n tooltipFormat(_): string;\n tooltipValueFormat(_): string;\n tooltipValueFormat_default(_): string;\n\n paletteID(): string;\n paletteID(_: string): this;\n useClonedPalette(): boolean;\n useClonedPalette(_: boolean): this;\n binSize(): number;\n binSize(_: number): this;\n}\n\nHexBin.prototype.publish(\"paletteID\", \"Blues\", \"set\", \"Color palette for this widget\", HexBin.prototype._palette.switch(), { tags: [\"Basic\", \"Shared\"] });\nHexBin.prototype.publish(\"useClonedPalette\", false, \"boolean\", \"Enable or disable using a cloned palette\", null, { tags: [\"Intermediate\", \"Shared\"] });\nHexBin.prototype.publish(\"binSize\", 20, \"number\", \"Bin radius\", null, { range: { min: 1, max: 300, step: 1 } });\n","import { Scatter } from \"./Scatter.ts\";\n\nimport \"../src/Line.css\";\n\nexport class Line extends Scatter {\n constructor() {\n super();\n\n this\n .interpolate_default(\"linear\")\n ;\n }\n}\nLine.prototype._class += \" chart_Line\";\n","import { Pie } from \"./Pie.ts\";\n\nexport class QuarterPie extends Pie {\n constructor() {\n super();\n }\n postUpdate(domNode, element) {\n super.postUpdate(domNode, element);\n let x = this.orientation() === \"left\" ? 0 : this._size.width;\n let y = this._size.height;\n if (this._drawStartPos === \"origin\" && this._target instanceof SVGElement) {\n x -= this._size.width / 2;\n y -= this._size.height / 2;\n }\n this._element.attr(\"transform\", \"translate(\" + x + \",\" + y + \")scale(\" + this._widgetScale + \")\");\n }\n updateD3Pie() {\n super.updateD3Pie();\n this.d3Pie\n .startAngle(this.orientation() === \"left\" ? 0 : -Math.PI / 2)\n .endAngle(this.orientation() === \"left\" ? Math.PI / 2 : 0)\n ;\n }\n calcOuterRadius() {\n const maxTextWidth = this.textSize(this.data().map(d => this.getLabelText({ data: d })), \"Verdana\", 12).width;\n return Math.min(this._size.width - maxTextWidth - 10, this._size.height - 12 * 3) - 2;\n }\n}\nQuarterPie.prototype._class += \" chart_QuarterPie\";\n\nexport interface QuarterPie {\n orientation(): string;\n orientation(_: string): this;\n}\nQuarterPie.prototype.publish(\"orientation\", \"left\", \"set\", \"Determines the placement and start/end angle.\", [\"left\", \"right\"]);\n","import { SVGWidget } from \"@hpcc-js/common\";\nimport { scaleLinear as d3ScaleLinear } from \"d3-scale\";\n\nexport class QuartileCandlestick extends SVGWidget {\n protected _g;\n protected _leftLine;\n protected _rightLine;\n protected _midLine;\n protected _midOuterRect;\n protected _midInnerRect1;\n protected _midInnerRect2;\n protected _q0text;\n protected _q1text;\n protected _q2text;\n protected _q3text;\n protected _q4text;\n protected _q0val;\n protected _q1val;\n protected _q2val;\n protected _q3val;\n protected _q4val;\n constructor() {\n super();\n }\n enter(domNode, element) {\n super.enter(domNode, element);\n this._g = element.append(\"g\");\n this._leftLine = this._g.append(\"rect\");\n this._rightLine = this._g.append(\"rect\");\n this._midLine = this._g.append(\"rect\");\n this._midOuterRect = this._g.append(\"rect\");\n this._midInnerRect1 = this._g.append(\"rect\");\n this._midInnerRect2 = this._g.append(\"rect\");\n this._q0text = this._g.append(\"text\");\n this._q1text = this._g.append(\"text\");\n this._q2text = this._g.append(\"text\");\n this._q3text = this._g.append(\"text\");\n this._q4text = this._g.append(\"text\");\n this._q0val = this._g.append(\"text\");\n this._q1val = this._g.append(\"text\");\n this._q2val = this._g.append(\"text\");\n this._q3val = this._g.append(\"text\");\n this._q4val = this._g.append(\"text\");\n }\n update(domNode, element) {\n super.update(domNode, element);\n const valueSize = (this.orientation() === \"horizontal\" ? this.width() : this.height()) - this.lineWidth();\n const domainSize = this.orientation() === \"horizontal\" ? this.height() : this.width();\n const scale = d3ScaleLinear()\n .domain([\n this.data()[0],\n this.data()[4]\n ])\n .range([\n this.edgePadding(),\n valueSize - this.edgePadding()\n ])\n ;\n const candleWidth = this.candleWidth_exists() ? this.candleWidth() : domainSize;\n const lineWidth = this.lineWidth();\n const lineColor = this.lineColor();\n const roundedCorners = this.roundedCorners();\n const q0x = this.edgePadding();\n let q1x = scale(this.data()[1]);\n let q2x = scale(this.data()[2]);\n let q3x = scale(this.data()[3]);\n const dataTop = -candleWidth / 2;\n const dataBottom = candleWidth / 2;\n const upperTextRotation = this.upperTextRotation();\n const lowerTextRotation = this.lowerTextRotation();\n const padding = this.textPadding();\n const labelFontSize = this.labelFontSize();\n const valueFontSize = this.valueFontSize();\n const sz = Math.max(labelFontSize, valueFontSize);\n const q4x = valueSize - q0x;\n if (sz > 0) {\n while (q1x - q0x < sz) {\n q1x += sz;\n }\n while (q2x - q1x < sz) {\n q2x += sz;\n }\n while (q3x - q2x < sz) {\n q3x += sz;\n }\n while (q4x - q3x < sz) {\n q3x -= sz;\n }\n while (q3x - q2x < sz) {\n q2x -= sz;\n }\n while (q2x - q1x < sz) {\n q1x -= sz;\n }\n }\n let transX = (-valueSize / 2) - (this.lineWidth() / 2);\n let transY = 0;\n let rotate = 0;\n const s = 1;\n let textScale = 1;\n let labelAnchor = \"start\";\n let valueAnchor = \"end\";\n if (this.orientation() === \"vertical\") {\n transX = 0;\n transY = valueSize / 2 + (this.lineWidth() / 2);\n rotate = -90;\n labelAnchor = \"end\";\n valueAnchor = \"start\";\n textScale = -1;\n }\n this._g\n .style(\"shape-rendering\", \"crispEdges\")\n .attr(\"transform\", `translate(${transX},${transY})rotate(${rotate})scale(${s})`)\n ;\n this._leftLine\n .attr(\"fill\", lineColor)\n .attr(\"height\", candleWidth)\n .attr(\"width\", lineWidth)\n .attr(\"x\", q0x)\n .attr(\"y\", dataTop)\n .attr(\"rx\", roundedCorners)\n .attr(\"ry\", roundedCorners)\n ;\n this._rightLine\n .attr(\"class\", \"right-line\")\n .attr(\"fill\", lineColor)\n .attr(\"height\", candleWidth)\n .attr(\"width\", lineWidth)\n .attr(\"x\", q4x)\n .attr(\"y\", dataTop)\n .attr(\"rx\", roundedCorners)\n .attr(\"ry\", roundedCorners)\n ;\n this._midLine\n .attr(\"fill\", lineColor)\n .attr(\"height\", lineWidth)\n .attr(\"width\", q4x - q0x)\n .attr(\"x\", q0x)\n .attr(\"y\", -lineWidth / 2)\n ;\n this._midOuterRect\n .attr(\"fill\", lineColor)\n .attr(\"height\", candleWidth)\n .attr(\"width\", q3x - q1x)\n .attr(\"x\", q1x)\n .attr(\"y\", dataTop)\n .attr(\"rx\", roundedCorners)\n .attr(\"ry\", roundedCorners)\n ;\n this._midInnerRect1\n .attr(\"fill\", this.innerRectColor())\n .attr(\"height\", candleWidth - (lineWidth * 2))\n .attr(\"width\", q2x - (q1x + (lineWidth * 2)))\n .attr(\"x\", q1x + lineWidth)\n .attr(\"y\", lineWidth - (candleWidth / 2))\n .attr(\"rx\", roundedCorners * 0.618)\n .attr(\"ry\", roundedCorners * 0.618)\n ;\n this._midInnerRect2\n .attr(\"fill\", this.innerRectColor())\n .attr(\"height\", candleWidth - (lineWidth * 2))\n .attr(\"width\", q3x - q2x - lineWidth)\n .attr(\"x\", q2x)\n .attr(\"y\", lineWidth - (candleWidth / 2))\n .attr(\"rx\", roundedCorners * 0.618)\n .attr(\"ry\", roundedCorners * 0.618)\n ;\n this._q0text\n .attr(\"height\", candleWidth)\n .attr(\"width\", q3x - q1x)\n .attr(\"display\", this.showLabels() ? null : \"none\")\n .attr(\"fill\", this.textColor())\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"transform\", `translate(${q0x}, ${dataTop - padding})rotate(${upperTextRotation})scale(${textScale})`)\n .attr(\"font-size\", labelFontSize)\n .attr(\"text-anchor\", labelAnchor)\n .attr(\"alignment-baseline\", \"hanging\")\n .text(this.columns()[0])\n ;\n this._q1text\n .attr(\"height\", candleWidth)\n .attr(\"width\", q3x - q1x)\n .attr(\"display\", this.showLabels() ? null : \"none\")\n .attr(\"fill\", this.textColor())\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"transform\", `translate(${q1x}, ${dataTop - padding})rotate(${upperTextRotation})scale(${textScale})`)\n .attr(\"font-size\", labelFontSize)\n .attr(\"text-anchor\", labelAnchor)\n .attr(\"alignment-baseline\", \"middle\")\n .text(this.columns()[1])\n ;\n this._q2text\n .attr(\"height\", candleWidth)\n .attr(\"width\", q3x - q1x)\n .attr(\"display\", this.showLabels() ? null : \"none\")\n .attr(\"fill\", this.textColor())\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"transform\", `translate(${q2x}, ${dataTop - padding})rotate(${upperTextRotation})scale(${textScale})`)\n .attr(\"font-size\", labelFontSize)\n .attr(\"text-anchor\", labelAnchor)\n .attr(\"alignment-baseline\", \"middle\")\n .text(this.columns()[2])\n ;\n this._q3text\n .attr(\"height\", candleWidth)\n .attr(\"width\", q3x - q1x)\n .attr(\"display\", this.showLabels() ? null : \"none\")\n .attr(\"fill\", this.textColor())\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"transform\", `translate(${q3x}, ${dataTop - padding})rotate(${upperTextRotation})scale(${textScale})`)\n .attr(\"font-size\", labelFontSize)\n .attr(\"text-anchor\", labelAnchor)\n .attr(\"alignment-baseline\", \"middle\")\n .text(this.columns()[3])\n ;\n this._q4text\n .attr(\"height\", candleWidth)\n .attr(\"width\", q3x - q1x)\n .attr(\"display\", this.showLabels() ? null : \"none\")\n .attr(\"fill\", this.textColor())\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"transform\", `translate(${q4x + lineWidth}, ${dataTop - padding})rotate(${upperTextRotation})scale(${textScale})`)\n .attr(\"font-size\", labelFontSize)\n .attr(\"text-anchor\", labelAnchor)\n .attr(\"alignment-baseline\", \"baseline\")\n .text(this.columns()[4])\n ;\n this._q0val\n .attr(\"height\", candleWidth)\n .attr(\"width\", q3x - q1x)\n .attr(\"display\", this.showValues() ? null : \"none\")\n .attr(\"fill\", this.textColor())\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"transform\", `translate(${q0x}, ${dataBottom + padding})rotate(${lowerTextRotation})scale(${textScale})`)\n .attr(\"font-size\", valueFontSize)\n .attr(\"text-anchor\", valueAnchor)\n .attr(\"alignment-baseline\", \"hanging\")\n .text(this.data()[0])\n ;\n this._q1val\n .attr(\"height\", candleWidth)\n .attr(\"width\", q3x - q1x)\n .attr(\"display\", this.showValues() ? null : \"none\")\n .attr(\"fill\", this.textColor())\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"transform\", `translate(${q1x}, ${dataBottom + padding})rotate(${lowerTextRotation})scale(${textScale})`)\n .attr(\"font-size\", valueFontSize)\n .attr(\"text-anchor\", valueAnchor)\n .attr(\"alignment-baseline\", \"middle\")\n .text(this.data()[1])\n ;\n this._q2val\n .attr(\"height\", candleWidth)\n .attr(\"width\", q3x - q1x)\n .attr(\"display\", this.showValues() ? null : \"none\")\n .attr(\"fill\", this.textColor())\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"transform\", `translate(${q2x}, ${dataBottom + padding})rotate(${lowerTextRotation})scale(${textScale})`)\n .attr(\"font-size\", valueFontSize)\n .attr(\"text-anchor\", valueAnchor)\n .attr(\"alignment-baseline\", \"middle\")\n .text(this.data()[2])\n ;\n this._q3val\n .attr(\"height\", candleWidth)\n .attr(\"width\", q3x - q1x)\n .attr(\"display\", this.showValues() ? null : \"none\")\n .attr(\"fill\", this.textColor())\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"transform\", `translate(${q3x}, ${dataBottom + padding})rotate(${lowerTextRotation})scale(${textScale})`)\n .attr(\"font-size\", valueFontSize)\n .attr(\"text-anchor\", valueAnchor)\n .attr(\"alignment-baseline\", \"middle\")\n .text(this.data()[3])\n ;\n this._q4val\n .attr(\"height\", candleWidth)\n .attr(\"width\", q3x - q1x)\n .attr(\"display\", this.showValues() ? null : \"none\")\n .attr(\"fill\", this.textColor())\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"transform\", `translate(${q4x + lineWidth}, ${dataBottom + padding})rotate(${lowerTextRotation})scale(${textScale})`)\n .attr(\"font-size\", valueFontSize)\n .attr(\"text-anchor\", valueAnchor)\n .attr(\"alignment-baseline\", \"baseline\")\n .text(this.data()[4])\n ;\n }\n}\nQuartileCandlestick.prototype._class += \" chart_QuartileCandlestick\";\n\nexport interface QuartileCandlestick {\n orientation(): \"horizontal\" | \"vertical\";\n orientation(_: \"horizontal\" | \"vertical\"): this;\n textPadding(): number;\n textPadding(_: number): this;\n edgePadding(): number;\n edgePadding(_: number): this;\n candleWidth(): number;\n candleWidth(_: number): this;\n candleWidth_exists(): boolean;\n lineWidth(): number;\n lineWidth(_: number): this;\n lineColor(): string;\n lineColor(_: string): this;\n innerRectColor(): string;\n innerRectColor(_: string): this;\n lowerTextRotation(): number;\n lowerTextRotation(_: number): this;\n upperTextRotation(): number;\n upperTextRotation(_: number): this;\n roundedCorners(): number;\n roundedCorners(_: number): this;\n labelFontSize(): number;\n labelFontSize(_: number): this;\n valueFontSize(): number;\n valueFontSize(_: number): this;\n textColor(): string;\n textColor(_: string): this;\n showLabels(): boolean;\n showLabels(_: boolean): this;\n showValues(): boolean;\n showValues(_: boolean): this;\n}\nQuartileCandlestick.prototype.publish(\"textColor\", \"black\", \"html-color\", \"Color of label and value text\");\nQuartileCandlestick.prototype.publish(\"showLabels\", true, \"boolean\", \"If true, labels will be shown\");\nQuartileCandlestick.prototype.publish(\"showValues\", true, \"boolean\", \"If true, values will be shown\");\nQuartileCandlestick.prototype.publish(\"orientation\", \"horizontal\", \"set\", \"Determines layout\", [\"horizontal\", \"vertical\"]);\nQuartileCandlestick.prototype.publish(\"valueFontSize\", 12, \"number\", \"Font size of value text (pixels)\");\nQuartileCandlestick.prototype.publish(\"labelFontSize\", 12, \"number\", \"Font size of label text (pixels)\");\nQuartileCandlestick.prototype.publish(\"roundedCorners\", 8, \"number\", \"Radius of rounded rect corners (pixels)\");\nQuartileCandlestick.prototype.publish(\"lineWidth\", 4, \"number\", \"Width of lines (pixels)\");\nQuartileCandlestick.prototype.publish(\"candleWidth\", null, \"number\", \"Height of outer rect (pixels)\", null, {optional: true});\nQuartileCandlestick.prototype.publish(\"textPadding\", 8, \"number\", \"Padding between outer rect and text (pixels)\");\nQuartileCandlestick.prototype.publish(\"edgePadding\", 30, \"number\", \"Padding between outer rect and left/right sides (pixels)\");\nQuartileCandlestick.prototype.publish(\"lineColor\", \"#333\", \"html-color\", \"Color of outer rect and lines\");\nQuartileCandlestick.prototype.publish(\"innerRectColor\", \"white\", \"html-color\", \"Color of the inner rects\");\nQuartileCandlestick.prototype.publish(\"upperTextRotation\", -60, \"number\", \"Rotation of label text (degrees)\");\nQuartileCandlestick.prototype.publish(\"lowerTextRotation\", -60, \"number\", \"Rotation of value text (degrees)\");\n","import { INDChart, ITooltip } from \"@hpcc-js/api\";\nimport { SVGWidget, Utility } from \"@hpcc-js/common\";\nimport { select as d3Select } from \"d3-selection\";\n\nimport \"../src/Radar.css\";\nexport class Radar extends SVGWidget {\n\n constructor() {\n super();\n INDChart.call(this);\n ITooltip.call(this);\n Utility.SimpleSelectionMixin.call(this);\n }\n\n mapShape(shape) {\n switch (shape) {\n case \"rectangle\":\n return \"rect\";\n case \"circle\":\n return \"circle\";\n case \"cross\":\n return \"path\";\n default:\n }\n }\n setPointAttributes(element, x, y) {\n const shape = this.mapShape(this.pointShape());\n const context = this;\n switch (shape) {\n case \"rect\":\n element\n .attr(\"width\", context.pointSize())\n .attr(\"height\", context.pointSize())\n .style(\"fill\", d => this.strokeColor(d.data, d.column, d.value))\n ;\n break;\n case \"circle\":\n element\n .attr(\"r\", context.pointSize() / 2)\n .attr(\"cx\", x)\n .attr(\"cy\", y)\n .style(\"fill\", d => this.strokeColor(d.data, d.column, d.value))\n ;\n break;\n case \"path\":\n const half_size = context.pointSize() / 2;\n element\n .attr(\"d\", function (d: any) {\n return \"M\" + (x - half_size) + \" \" + (y - half_size) + \" \" +\n \"L\" + (x + half_size) + \" \" + (y + half_size) + \" \" +\n \"M\" + (x - half_size) + \" \" + (y + half_size) + \" \" +\n \"L\" + (x + half_size) + \" \" + (y - half_size);\n })\n .style(\"stroke\", d => this.strokeColor(d.data, d.column, d.value))\n ;\n break;\n default:\n }\n }\n enter(domNode, element) {\n super.enter(domNode, element);\n this._selection.widgetElement(element);\n\n this\n .tooltipHTML(d => {\n return this.tooltipFormat({ label: d.label, series: d.column, value: d.value });\n })\n ;\n }\n update(domNode, element) {\n super.update(domNode, element);\n this._palette = this._palette.switch(this.paletteID());\n const context = this;\n const h = this.height();\n const w = this.width();\n const half_h = (h / 2);\n const half_w = (w / 2);\n\n const columns = this.columns();\n const data = this.data();\n const flatData = this.flattenData(columns, data).map((d: any, idx: number) => {\n d.shape = this.mapShape(this.pointShape());\n d.column = columns[d.colIdx];\n d.row = data[idx];\n return d;\n });\n const domain_points = [];\n const arc = this.degrees2radians(360 / this.data().length);\n const max_label_h = this.fontSize();\n let max_label_w = 0;\n flatData.filter(n => n.colIdx === 1).forEach(n => {\n const isize = super.textSize(n.label, `${this.fontFamily()}`, this.fontSize());\n if (max_label_w < isize.width) max_label_w = isize.width;\n });\n const radius = Math.min(half_h - max_label_h, half_w - max_label_w);\n const labels = element\n .selectAll(\".label\")\n .data(flatData.filter(n => n.colIdx === 1))\n ;\n const max_val = Math.max.apply(context, flatData.map(n => n.value));\n labels.enter()\n .append(\"text\")\n .attr(\"class\", \"label\")\n .attr(\"text-anchor\", \"middle\")\n .merge(labels)\n .attr(\"font-size\", this.fontSize())\n .attr(\"font-family\", this.fontFamily())\n .each(function (this: SVGElement, n, i) {\n const xy = context.polar2cartesian(radius, (i * arc) - (Math.PI / 2));\n domain_points.push(xy.map(n => n * context.labelPaddingRatio()));\n let text_anchor = \"middle\";\n const _x = Math.round(xy[0]);\n text_anchor = _x > 0 ? \"start\" : text_anchor;\n text_anchor = _x < 0 ? \"end\" : text_anchor;\n d3Select(this)\n .attr(\"text-anchor\", text_anchor)\n .attr(\"x\", xy[0])\n .attr(\"y\", xy[1])\n ;\n })\n .text(n => n.label)\n ;\n labels.exit().remove();\n const domains = element\n .selectAll(\".domain\")\n .data(flatData.filter(n => n.colIdx === 1));\n domains.enter()\n .append(\"line\")\n .classed(\"domain\", true)\n .style(\"stroke\", \"#000\")\n .style(\"stroke-opacity\", \"0.75\")\n .style(\"stroke-width\", \"1px\")\n .merge(domains)\n .attr(\"x1\", 0)\n .attr(\"y1\", 0)\n .attr(\"x2\", (n, i) => domain_points[i][0])\n .attr(\"y2\", (n, i) => domain_points[i][1]);\n domains.exit().remove();\n const value_guides = element\n .selectAll(\".value_guide\")\n .data(this.valueGuideRatios())\n ;\n value_guides.enter()\n .append(\"polygon\")\n .classed(\"value_guide\", true)\n .style(\"stroke\", \"grey\")\n .style(\"stroke-opacity\", \"0.75\")\n .style(\"stroke-width\", \"0.3px\")\n .merge(value_guides)\n .each(function (mult, i) {\n const poly_points = [];\n domain_points.forEach((domain_point, row_idx) => {\n poly_points.push([\n domain_point[0] * mult,\n domain_point[1] * mult\n ]);\n });\n d3Select(this)\n .attr(\"points\", poly_points.join(\" \"))\n .attr(\"stroke\", \"rgb(0, 0, 0)\")\n .attr(\"stroke-opacity\", 0.75)\n .attr(\"stroke-width\", 0.3)\n .attr(\"fill-opacity\", 0)\n ;\n })\n ;\n value_guides.exit().remove();\n\n const value_guide_text = element\n .selectAll(\".value_guide_text\")\n .data(this.valueGuideRatios())\n ;\n value_guide_text.enter()\n .append(\"text\")\n .attr(\"class\", \"value_guide_text\")\n .attr(\"text-anchor\", \"start\")\n .attr(\"font-size\", this.fontSize())\n .attr(\"font-family\", this.fontFamily())\n .merge(value_guide_text)\n .attr(\"x\", 2)\n .attr(\"y\", mult => domain_points[0][1] * mult)\n .text((mult, i) => Math.round(mult * max_val))\n ;\n value_guides.exit().remove();\n\n // Polygon shapes ---\n const series_polygons = element\n .selectAll(\".area\")\n .data(columns.filter((n, i) => i > 0));\n series_polygons.enter()\n .append(\"polygon\")\n .attr(\"class\", \"area\")\n .style(\"stroke-opacity\", \"0.75\")\n .style(\"stroke-width\", \"0.3px\")\n .merge(series_polygons)\n .style(\"stroke\", d => this.strokeColor([], d, 0))\n .style(\"fill\", d => this.fillColor([], d, 0))\n .style(\"fill-opacity\", this.fillOpacity())\n .attr(\"points\", (d, col_idx) => {\n return domain_points.map((domain_point, row_idx) => {\n const val = data[row_idx][col_idx + 1];\n const val_mult = val === 0 ? 0 : val / max_val;\n return domain_point[0] * val_mult + \",\" + domain_point[1] * val_mult;\n }).join(\" \");\n });\n series_polygons.exit().remove();\n\n // Points ---\n const point_elm = element\n .selectAll(\".point\")\n .data(flatData);\n point_elm.enter()\n .append(\"g\")\n .attr(\"class\", \"point\")\n .on(\"mouseout.tooltip\", context.tooltip.hide)\n .on(\"mousemove.tooltip\", context.tooltip.show)\n .on(\"click\", function (d: any, _idx) {\n const data_row = context.data()[d.rowIdx];\n const row_obj = context.rowToObj(data_row);\n const selected = context._selection.selected(this);\n context.click(row_obj, context.columns()[d.colIdx], selected);\n })\n .on(\"dblclick\", function (d: any, _idx) {\n context.dblclick(context.rowToObj(context.data()[d.rowIdx]), d.column, context._selection.selected(this));\n })\n .each(function (d) {\n const element = d3Select(this);\n element.append(\"circle\")\n .attr(\"class\", \"pointSelection\")\n .attr(\"r\", context.pointSize())\n .call(context._selection.enter.bind(context._selection))\n ;\n element.append(context.mapShape(context.pointShape()))\n .attr(\"class\", \"pointShape\")\n ;\n })\n .merge(point_elm)\n .each(function (d) {\n const element = d3Select(this);\n const val_mult = d.value === 0 ? 0 : d.value / max_val;\n const x = domain_points[d.rowIdx][0] * val_mult;\n const y = domain_points[d.rowIdx][1] * val_mult;\n element.select(\".pointSelection\")\n .attr(\"cx\", x)\n .attr(\"cy\", y)\n ;\n\n const pointElement = element.select(\".pointShape\")\n .style(\"stroke\", context.strokeColor(d.row, d.column, d.value))\n .style(\"fill\", context.fillColor(d.row, d.column, d.value))\n ;\n context.setPointAttributes(pointElement, x, y);\n })\n ;\n point_elm.exit().remove();\n }\n\n polar2cartesian(r, theta) {\n return [r * Math.cos(theta), r * Math.sin(theta)];\n }\n cartesian2polar(x, y) {\n return [Math.atan2(y, x), Math.sqrt(x * x + y * y)];\n }\n degrees2radians(d) {\n return d / 57.295779513;\n }\n radians2degrees(r) {\n return r * 57.295779513;\n }\n point_in_polygon(point, vs) {\n const x = point[0];\n const y = point[1];\n let inside = false;\n for (let i = 0, j = vs.length - 1; i < vs.length; j = i++) {\n const xi = vs[i][0];\n const yi = vs[i][1];\n const xj = vs[j][0];\n const yj = vs[j][1];\n const intersect = ((yi > y) !== (yj > y))\n && (x < (xj - xi) * (y - yi) / (yj - yi) + xi);\n if (intersect) inside = !inside;\n }\n return inside;\n }\n}\nRadar.prototype._class += \" chart_Radar\";\nRadar.prototype.implements(INDChart.prototype);\nRadar.prototype.implements(ITooltip.prototype);\nRadar.prototype.mixin(Utility.SimpleSelectionMixin);\n\nexport interface Radar {\n labelPaddingRatio(): number;\n labelPaddingRatio(_: number): this;\n fillOpacity(): number;\n fillOpacity(_: number): this;\n fontFamily(): string;\n fontFamily(_: string): this;\n fontSize(): number;\n fontSize(_: number): this;\n valueGuideRatios(): any;\n valueGuideRatios(_: any): this;\n valueGuideFontSize(): number;\n valueGuideFontSize(_: number): this;\n valueGuideFontFamily(): string;\n valueGuideFontFamily(_: string): this;\n paletteID(): string;\n paletteID(_: string): this;\n pointShape(): string;\n pointShape(_: string): this;\n pointSize(): number;\n pointSize(_: number): this;\n\n // INDChart\n _palette;\n fillColor(row, column, value): string;\n strokeColor(row, column, value): string;\n textColor(row, column, value): string;\n click(row, column, selected): void;\n dblclick(row, column, selected): void;\n\n // ITooltip\n tooltip;\n tooltipHTML(_): string;\n tooltipFormat(_): string;\n\n _selection;\n}\n\nRadar.prototype.publish(\"paletteID\", \"default\", \"set\", \"Color palette for this widget\", Radar.prototype._palette.switch());\nRadar.prototype.publish(\"pointShape\", \"cross\", \"set\", \"pointShape\", [\"circle\", \"rectangle\", \"cross\"]);\nRadar.prototype.publish(\"pointSize\", 6, \"number\", \"Point Size\", null, { range: { min: 1, step: 1, max: 200 } });\nRadar.prototype.publish(\"valueGuideRatios\", [0.2, 0.4, 0.6, 0.8, 1], \"array\", \"Array of values between 0 and 1 that are multiplied by the widget radius to produce guide lines\");\nRadar.prototype.publish(\"fillOpacity\", 0.66, \"number\", \"Opacity of the data polygon(s)\");\nRadar.prototype.publish(\"fontFamily\", \"\", \"string\", \"fontFamily\");\nRadar.prototype.publish(\"fontSize\", 16, \"number\", \"fontSize\");\nRadar.prototype.publish(\"labelPaddingRatio\", 0.9, \"number\", \"labelPaddingRatio\");\n","import { INDChart, ITooltip } from \"@hpcc-js/api\";\nimport { InputField, SVGWidget, Utility } from \"@hpcc-js/common\";\nimport { interpolate as d3Interpolate } from \"d3-interpolate\";\nimport { scaleBand as d3ScaleBand, scaleLinear as d3ScaleLinear } from \"d3-scale\";\nimport { arc as d3Arc } from \"d3-shape\";\n\nimport \"../src/RadialBar.css\";\n\nexport class RadialBar extends SVGWidget {\n static __inputs: InputField[] = [{\n id: \"label\",\n type: \"any\"\n }, {\n id: \"values\",\n type: \"number\"\n }];\n\n private _domainScale = d3ScaleBand();\n private _valueScale = d3ScaleLinear();\n private _d3Arc = d3Arc<[string, number]>()\n .startAngle(0)\n .endAngle((d) => this._valueScale(d[1]))\n ;\n\n protected _arcs;\n protected _axialAxis;\n protected _radialAxis;\n\n constructor() {\n super();\n INDChart.call(this);\n ITooltip.call(this);\n Utility.SimpleSelectionMixin.call(this);\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this._selection.widgetElement(element);\n this.tooltipHTML(d => {\n return this.tooltipFormat({ label: d[0], value: d[1] });\n });\n\n this._radialAxis = element.append(\"g\")\n .attr(\"class\", \"r axis\")\n ;\n this._axialAxis = element.append(\"g\")\n .attr(\"class\", \"a axis\")\n ;\n this._arcs = element.append(\"g\")\n .attr(\"class\", \"data\")\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n const context = this;\n const maxValue = Math.max(this.valueDomainHigh_exists() ? this.valueDomainHigh() : 0, ...this.data().map(d => d[1]));\n\n this._valueScale\n .domain([0, maxValue])\n .range([0, this.radians(this.valueMaxAngle())])\n ;\n\n const ticks = this._valueScale.ticks(this.tickCount());\n\n const maxTextWidth = this.textSize(ticks.map(d => \"\" + d), \"Verdana\", 12).width;\n const chartRadius = (Math.min(this.width() - (10 + maxTextWidth) * 2, this.height() - (10 + 12) * 2) / 2);\n\n // Domain Axis (x-axis) ---\n const domainData = this.data().map(d => d[0]);\n\n this._domainScale\n .domain(domainData)\n .range([0, chartRadius])\n .padding(this.domainPadding())\n ;\n const domainPadding = this._domainScale.step() * this._domainScale.padding();\n\n const domainCircles = this._radialAxis.selectAll(\"circle\").data(domainData);\n domainCircles.enter().append(\"circle\")\n .attr(\"fill\", \"transparent\")\n .merge(domainCircles)\n .attr(\"r\", d => this._domainScale(d) + this._domainScale.step() - domainPadding / 2)\n ;\n domainCircles.exit().remove();\n\n const domainText = this._radialAxis.selectAll(\".arc-text\").data(domainData);\n domainText.enter().append(\"text\")\n .attr(\"class\", \"arc-text\")\n .attr(\"x\", -4)\n .attr(\"alignment-baseline\", \"middle\")\n .attr(\"text-anchor\", \"end\")\n .merge(domainText)\n .attr(\"y\", d => -this._domainScale(d) - this._domainScale.bandwidth() / 2)\n .text(d => d);\n domainText.exit().remove();\n\n // Value Axis (y-axis) ---\n const valueLines = this._axialAxis.selectAll(\"line\").data(ticks);\n valueLines.enter().append(\"line\")\n .merge(valueLines)\n .attr(\"x2\", d => chartRadius * Math.cos(this._valueScale(d) - this.radians(90)))\n .attr(\"y2\", d => chartRadius * Math.sin(this._valueScale(d) - this.radians(90)))\n ;\n valueLines.exit().remove();\n\n const valueText = this._axialAxis.selectAll(\"text\").data(ticks);\n valueText.enter().append(\"text\")\n .style(\"dominant-baseline\", \"central\")\n .merge(valueText)\n .attr(\"x\", d => (chartRadius + 10) * Math.cos(this._valueScale(d) - this.radians(90)))\n .attr(\"y\", d => (chartRadius + 10) * Math.sin(this._valueScale(d) - this.radians(90)))\n .style(\"text-anchor\", d => {\n const middleZone = 20;\n const angle = this.degrees(this._valueScale(d));\n if (angle >= 0 && angle <= middleZone ||\n angle >= 180 - middleZone && angle <= 180 + middleZone ||\n angle >= 360 - middleZone && angle <= 360\n ) {\n return \"middle\";\n } else if (angle >= 180 && angle <= 360) {\n return \"end\";\n } else {\n return null;\n }\n })\n .text(d => d)\n ;\n valueText.exit().remove();\n\n const valueColumn = this.columns().length > 1 ? this.columns()[1] : \"\";\n // Data (arcs) ---\n this._d3Arc\n .innerRadius(d => this._domainScale(d[0]))\n .outerRadius(d => this._domainScale(d[0]) + this._domainScale.bandwidth())\n ;\n const arcs = this._arcs.selectAll(\"path\").data(this.data(), d => d[0]);\n arcs.enter().append(\"path\")\n .attr(\"class\", \"arc\")\n .call(this._selection.enter.bind(this._selection))\n .on(\"mouseout.tooltip\", this.tooltip.hide)\n .on(\"mousemove.tooltip\", this.tooltip.show)\n .on(\"click\", function (d: any, _idx) {\n context.click(context.rowToObj(d), valueColumn, context._selection.selected(this));\n })\n .on(\"dblclick\", function (d: any, _idx) {\n context.dblclick(context.rowToObj(d), valueColumn, context._selection.selected(this));\n })\n .merge(arcs)\n .style(\"fill\", (d, i) => this.fillColor(d, d[0], d[1]))\n .transition()\n .delay((d, i) => i * this.transitionDelay())\n .duration(this.transitionDuration())\n .attrTween(\"d\", (d, indx) => {\n const interpolate = d3Interpolate(d._current || 0, d[1]);\n d._current = d[1];\n return t => this._d3Arc([d[0], interpolate(t)], indx);\n })\n ;\n arcs.exit().remove();\n }\n\n degrees(radians) {\n return radians * 180 / Math.PI;\n }\n\n radians(degrees) {\n return degrees * Math.PI / 180;\n }\n\n}\nRadialBar.prototype._class += \" chart_RadialBar\";\nRadialBar.prototype.implements(INDChart.prototype);\nRadialBar.prototype.implements(ITooltip.prototype);\nRadialBar.prototype.mixin(Utility.SimpleSelectionMixin);\n\nexport interface RadialBar {\n paletteID(): string;\n paletteID(_: string): this;\n tickCount(): number;\n tickCount(_: number): this;\n domainPadding(): number;\n domainPadding(_: number): this;\n valueMaxAngle(): number;\n valueMaxAngle(_: number): this;\n valueDomainHigh(): number;\n valueDomainHigh(_: number): this;\n valueDomainHigh_exists(): boolean;\n transitionDelay(): number;\n transitionDelay(_: number): this;\n transitionDuration(): number;\n transitionDuration(_: number): this;\n\n // INDChart\n _palette;\n fillColor(row, column, value): string;\n strokeColor(row, column, value): string;\n textColor(row, column, value): string;\n click(row, column, selected): void;\n dblclick(row, column, selected): void;\n\n // ITooltip\n tooltip;\n tooltipHTML(_): string;\n tooltipFormat(_): string;\n\n // SimpleSelectionMixin\n _selection;\n}\n\nRadialBar.prototype.publish(\"paletteID\", \"default\", \"set\", \"Color palette for this widget\", RadialBar.prototype._palette.switch());\nRadialBar.prototype.publish(\"tickCount\", 10, \"number\", \"Number of ticks to display\");\nRadialBar.prototype.publish(\"domainPadding\", 0.25, \"number\", \"Padding between chart edge and container edge (0..1)\");\nRadialBar.prototype.publish(\"valueMaxAngle\", 270, \"number\", \"Maximum angular length of a bar (degrees)\");\nRadialBar.prototype.publish(\"valueDomainHigh\", null, \"number\", \"Value domain high\", undefined, { optional: true });\nRadialBar.prototype.publish(\"transitionDelay\", 100, \"number\", \"Delay between the start of each row animation (ms)\");\nRadialBar.prototype.publish(\"transitionDuration\", 750, \"number\", \"Duration of a row's animation (ms)\");\n","import { format as d3Format, HTMLWidget, Palette } from \"@hpcc-js/common\";\nimport { QuartileCandlestick } from \"./QuartileCandlestick.ts\";\nimport { Scatter } from \"./Scatter.ts\";\n\nconst rainbow = Palette.rainbow(\"Blues\");\nconst palette = Palette.ordinal(\"Quartile\", [rainbow(100, 0, 100), rainbow(50, 0, 100), rainbow(50, 0, 100), rainbow(75, 0, 100)]);\npalette(\"Std. Dev.\");\npalette(\"MinMax\");\npalette(\"25%\");\npalette(\"50%\");\n\ntype View = \"min_max\" | \"25_75\" | \"normal\";\ntype Tick = { label: string, value: number };\ntype Ticks = Tick[];\ntype AxisTick = { label: string, value: string };\ntype AxisTicks = AxisTick[];\n\nfunction myFormatter(format: string): (num: number) => string {\n const formatter = d3Format(format);\n return function (num: number) {\n const strVal = (Math.round(num * 100) / 100).toString();\n if (strVal.length <= 4) return strVal;\n return formatter(num);\n };\n}\n\nexport type StatChartView = \"min_max\" | \"25_75\" | \"normal\";\nexport type Quartiles = [number, number, number, number, number];\nexport type Data = [[number, number, number, number, number, number, number]];\n\nexport class StatChart extends HTMLWidget {\n\n protected _selectElement: any;\n protected _tickFormatter: (_: number) => string;\n\n protected _bellCurve: Scatter = new Scatter()\n .columns([\"\", \"Std. Dev.\"])\n .paletteID(\"Quartile\")\n .interpolate_default(\"basis\")\n .pointSize(0)\n .xAxisType(\"linear\")\n .xAxisOverlapMode(\"none\")\n .xAxisTickFormat(\",\")\n .yAxisHidden(true)\n .yAxisDomainLow(0)\n .yAxisDomainHigh(110)\n .yAxisGuideLines(false) as Scatter\n ;\n\n protected _candle = new QuartileCandlestick()\n .columns([\"Min\", \"25%\", \"50%\", \"75%\", \"Max\"])\n .edgePadding(0)\n .roundedCorners(1)\n .lineWidth(1)\n .upperTextRotation(-90)\n .lowerTextRotation(-90)\n .labelFontSize(0)\n .valueFontSize(0)\n .lineColor(rainbow(90, 0, 100))\n .innerRectColor(rainbow(10, 0, 100))\n ;\n\n constructor() {\n super();\n this\n .columns([\"Min\", \"25%\", \"50%\", \"75%\", \"Max\", \"Mean\", \"Std. Dev.\"])\n ;\n }\n\n protected stdDev(degrees: number): number {\n return this.mean() + degrees * this.standardDeviation();\n }\n\n protected formatStdDev(degrees: number): string {\n return this._tickFormatter(this.stdDev(degrees));\n }\n\n protected quartile(q: 0 | 1 | 2 | 3 | 4): number {\n return this.quartiles()[q];\n }\n\n protected formatQ(q: 0 | 1 | 2 | 3 | 4): string {\n return this._tickFormatter(this.quartile(q));\n }\n\n protected domain(mode: View): [number, number] {\n switch (mode) {\n case \"25_75\":\n return [this.quartile(1), this.quartile(3)];\n case \"normal\":\n return [this.stdDev(-4), this.stdDev(4)];\n case \"min_max\":\n default:\n return [this.quartile(0), this.quartile(4)];\n }\n }\n\n protected min(): number {\n return this.quartile(0);\n }\n\n protected max(): number {\n return this.quartile(4);\n }\n\n data(): Data;\n data(_: Data): this;\n data(_?: Data): Data | this {\n if (!arguments.length) return [[...this.quartiles(), this.mean(), this.standardDeviation()]];\n const row = _[0];\n this.quartiles([row[0], row[1], row[2], row[3], row[4]]);\n this.mean(row[5]);\n this.standardDeviation(row[6]);\n return this;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n\n this._bellCurve.target(element.append(\"div\").node());\n\n this._candle.target(element.append(\"div\").node());\n\n this._selectElement = element.append(\"div\")\n .style(\"position\", \"absolute\")\n .style(\"top\", \"0px\")\n .style(\"right\", \"0px\").append(\"select\")\n .on(\"change\", () => {\n this.view(this._selectElement.node().value);\n this.lazyRender();\n })\n ;\n this._selectElement.append(\"option\").attr(\"value\", \"min_max\").text(\"Min / Max\");\n this._selectElement.append(\"option\").attr(\"value\", \"25_75\").text(\"25% / 75%\");\n this._selectElement.append(\"option\").attr(\"value\", \"normal\").text(\"Normal\");\n }\n\n protected bellTicks(mode: View): AxisTicks {\n let ticks: Ticks;\n switch (mode) {\n case \"25_75\":\n ticks = [\n { label: this.formatQ(1), value: this.quartile(1) },\n { label: this.formatQ(2), value: this.quartile(2) },\n { label: this.formatQ(3), value: this.quartile(3) }\n ];\n break;\n case \"normal\":\n ticks = [\n { label: this.formatStdDev(-4), value: this.stdDev(-4) },\n { label: \"-3σ\", value: this.stdDev(-3) },\n { label: \"-2σ\", value: this.stdDev(-2) },\n { label: \"-1σ\", value: this.stdDev(-1) },\n { label: this.formatStdDev(0), value: this.stdDev(0) },\n { label: \"+1σ\", value: this.stdDev(1) },\n { label: \"+2σ\", value: this.stdDev(2) },\n { label: \"+3σ\", value: this.stdDev(3) },\n { label: this.formatStdDev(4), value: this.stdDev(4) }\n ];\n break;\n case \"min_max\":\n default:\n ticks = [\n { label: this.formatQ(0), value: this.quartile(0) },\n { label: this.formatQ(1), value: this.quartile(1) },\n { label: this.formatQ(2), value: this.quartile(2) },\n { label: this.formatQ(3), value: this.quartile(3) },\n { label: this.formatQ(4), value: this.quartile(4) }\n ];\n }\n\n const [domainLow, domainHigh] = this.domain(this._selectElement.node().value);\n return ticks\n .filter(sd => sd.value >= domainLow && sd.value <= domainHigh)\n .map(sd => ({ label: sd.label, value: sd.value.toString() }))\n ;\n }\n\n updateScatter() {\n const mode = this._selectElement.node().value;\n const [domainLow, domainHigh] = this.domain(mode);\n const padding = (domainHigh - domainLow) * (this.domainPadding() / 100);\n\n this._bellCurve\n .xAxisDomainLow(domainLow - padding)\n .xAxisDomainHigh(domainHigh + padding)\n .xAxisTicks(this.bellTicks(mode))\n .data([\n [this.stdDev(-4), 0],\n [this.stdDev(-3), 0.3],\n [this.stdDev(-2), 5],\n [this.stdDev(-1), 68],\n [this.stdDev(0), 100],\n [this.stdDev(1), 68],\n [this.stdDev(2), 5],\n [this.stdDev(3), 0.3],\n [this.stdDev(4), 0]\n ])\n .resize({ width: this.width(), height: this.height() - this.candleHeight() })\n .render()\n ;\n }\n\n updateCandle() {\n const candleX = this._bellCurve.dataPos(this.quartile(0));\n const candleW = this._bellCurve.dataPos(this.quartile(4)) - candleX;\n this._candle\n .resize({ width: this.width(), height: this.candleHeight() })\n .pos({ x: (candleX + candleW / 2) + 2, y: this.candleHeight() / 2 })\n .width(candleW)\n .candleWidth(this.candleHeight())\n .data(this.quartiles())\n .render()\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n this._tickFormatter = myFormatter(this.tickFormat());\n this._selectElement.node().value = this.view();\n this.updateScatter();\n this.updateCandle();\n }\n\n exit(domNode, element) {\n this._bellCurve.target(null);\n this._candle.target(null);\n this._selectElement.remove();\n\n super.exit(domNode, element);\n }\n}\nStatChart.prototype._class += \" chart_StatChart\";\n\nexport interface StatChart {\n view(): StatChartView;\n view(_: StatChartView): this;\n\n tickFormat(): string;\n tickFormat(_: string): this;\n candleHeight(): number;\n candleHeight(_: number): this;\n domainPadding(): number;\n domainPadding(_: number): this;\n\n mean(): number;\n mean(_: number): this;\n standardDeviation(): number;\n standardDeviation(_: number): this;\n quartiles(): Quartiles;\n quartiles(_: Quartiles): this;\n}\nStatChart.prototype.publish(\"view\", \"min_max\", \"set\", \"View\", [\"min_max\", \"25_75\", \"normal\"]);\n\nStatChart.prototype.publish(\"tickFormat\", \".2e\", \"string\", \"X-Axis Tick Format\");\nStatChart.prototype.publish(\"candleHeight\", 20, \"number\", \"Height of candle widget (pixels)\");\nStatChart.prototype.publish(\"domainPadding\", 10, \"number\", \"Domain value padding\");\n\nStatChart.prototype.publish(\"mean\", .5, \"number\", \"Mean\");\nStatChart.prototype.publish(\"standardDeviation\", .125, \"number\", \"Standard Deviation (σ)\");\nStatChart.prototype.publish(\"quartiles\", [0, .25, .5, .75, 1], \"object\", \"Quartiles (Min, 25%, 50%, 75%, Max)\");\n","import { Scatter } from \"./Scatter.ts\";\n\nexport class Step extends Scatter {\n constructor() {\n super();\n\n this\n .interpolate_default(\"step\")\n ;\n }\n}\nStep.prototype._class += \" chart_Step\";\n","import { I2DChart } from \"@hpcc-js/api\";\nimport { HTMLWidget } from \"@hpcc-js/common\";\nimport { rgb as d3Rgb } from \"d3-color\";\nimport { select as d3Select } from \"d3-selection\";\n\nimport \"../src/Summary.css\";\n\nconst TEXT = \"text\";\nconst HTML = \"html\";\n\nexport class Summary extends HTMLWidget {\n protected _playIntervalIdx = 0;\n protected _mainDiv;\n protected _headerDiv;\n protected _textDiv;\n\n constructor() {\n super();\n this._tag = \"div\";\n\n this._drawStartPos = \"center\";\n this.playInterval(this.playInterval());\n }\n\n lookupFieldIdx(propID, defaultIdx?: number) {\n let retVal = defaultIdx;\n if (this[propID + \"_exists\"]()) {\n retVal = this.columns().indexOf(this[propID]());\n if (retVal < 0) {\n return undefined;\n }\n }\n return retVal;\n }\n\n lookupFieldText(propID, defaultIdx?: number) {\n if (this[propID + \"_exists\"]()) {\n return this[propID]();\n }\n if (defaultIdx !== undefined) {\n return this.columns()[defaultIdx] || \"\";\n }\n return \"\";\n }\n\n currentRow() {\n return this.data()[this._playIntervalIdx];\n }\n\n summaryData() {\n let labelFieldIdx; // undefined\n if (!this.hideLabel()) {\n labelFieldIdx = this.lookupFieldIdx(\"labelColumn\", 0);\n }\n const iconFieldIdx = this.lookupFieldIdx(\"iconColumn\");\n const valueFieldIdx = this.lookupFieldIdx(\"valueColumn\", 1);\n let moreIconIdx; // undefined\n let moreTextIdx; // undefined\n if (!this.hideMore()) {\n moreIconIdx = this.lookupFieldIdx(\"moreIconColumn\");\n moreTextIdx = this.lookupFieldIdx(\"moreTextColumn\");\n }\n const colorFillIdx = this.lookupFieldIdx(\"colorFillColumn\");\n const colorStrokeIdx = this.lookupFieldIdx(\"colorStrokeColumn\");\n return this.formattedData().map(function (row) {\n return {\n icon: iconFieldIdx === undefined ? this.icon() : row[iconFieldIdx],\n label: labelFieldIdx === undefined ? \"\" : row[labelFieldIdx],\n value: row[valueFieldIdx],\n moreIcon: moreIconIdx === undefined ? (this.hideMore() ? \"\" : this.moreIcon()) : row[moreIconIdx],\n moreText: moreTextIdx === undefined ? (this.hideMore() ? \"\" : this.moreText()) : row[moreTextIdx],\n fill: colorFillIdx === undefined ? this.colorFill() : row[colorFillIdx],\n stroke: colorStrokeIdx === undefined ? this.colorStroke() : row[colorStrokeIdx]\n };\n }, this);\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this._mainDiv = element.append(\"div\")\n ;\n const context = this;\n this._headerDiv = this._mainDiv.append(\"h2\")\n .on(\"click\", function () {\n context.click(context.rowToObj(context.currentRow()), context.lookupFieldText(\"valueColumn\", 1), true);\n })\n .on(\"dblclick\", function () {\n context.dblclick(context.rowToObj(context.currentRow()), context.lookupFieldText(\"valueColumn\", 1), true);\n })\n ;\n this._textDiv = this._mainDiv.append(\"div\")\n .attr(\"class\", \"text\")\n .on(\"click\", function () {\n context.click(context.rowToObj(context.currentRow()), context.lookupFieldText(\"labelColumn\", 0), true);\n })\n .on(\"dblclick\", function () {\n context.dblclick(context.rowToObj(context.currentRow()), context.lookupFieldText(\"labelColumn\", 0), true);\n })\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n if (this.data().length) {\n\n }\n const data = this.summaryData();\n if (this._playIntervalIdx >= data.length) {\n this._playIntervalIdx = 0;\n }\n const row: any = this._playIntervalIdx < data.length ? data[this._playIntervalIdx] : [\"\", \"\"];\n element\n .style(\"width\", this.fixedSize() ? this.minWidth_exists() ? this.minWidth() + \"px\" : null : \"100%\")\n .style(\"height\", this.fixedSize() ? this.minHeight_exists() ? this.minHeight() + \"px\" : null : \"100%\")\n ;\n this._mainDiv\n .attr(\"class\", \"content bgIcon \" + row.icon)\n .transition()\n .style(\"background-color\", row.fill)\n .style(\"color\", row.stroke)\n .style(\"min-width\", this.minWidth_exists() ? this.minWidth() + \"px\" : null)\n .style(\"min-height\", this.minHeight_exists() ? this.minHeight() + \"px\" : null)\n .style(\"font-size\", this.iconFontSize() + \"px\")\n ;\n this._headerDiv\n .transition()\n .style(\"color\", row.stroke)\n .style(\"font-size\", this.headerFontSize() + \"px\")\n [this.valueHTML() ? HTML : TEXT](row.value)\n ;\n this._textDiv\n .style(\"font-size\", this.textFontSize() + \"px\")\n [this.labelHTML() ? HTML : TEXT](row.label)\n ;\n const context = this;\n const moreDivs = this._mainDiv.selectAll(\".more\").data([row]);\n const moreDivsEnter = moreDivs.enter()\n .append(\"div\")\n .attr(\"class\", \"more\")\n .on(\"click\", function (d) {\n context.click(context.rowToObj(context.currentRow()), context.lookupFieldText(\"moreTextColumn\") || \"more\", true);\n })\n .each(function () {\n const element2 = d3Select(this);\n element2.append(\"i\");\n element2.append(\"span\");\n })\n ;\n const moreDivsUpdate = moreDivsEnter\n .merge(moreDivs)\n .style(\"display\", this.hideMoreWrapper() ? \"none\" : null)\n .style(\"font-size\", this.moreFontSize() + \"px\")\n .style(\"height\", this.moreWrapperHeight_exists() ? this.moreWrapperHeight() + \"px\" : null)\n .transition()\n .style(\"background-color\", d3Rgb(row.fill).darker(0.75).toString())\n ;\n moreDivsUpdate\n .select(\"i\")\n .attr(\"class\", function (d) {\n return \"fa \" + d.moreIcon;\n })\n ;\n if (this.moreTextHTML()) {\n moreDivsUpdate.select(\"span\")\n .each(function (d) {\n this.innerHTML = d.moreText;\n });\n } else {\n moreDivsUpdate.select(\"span\").text(d => d.moreText);\n }\n moreDivs.exit().remove();\n }\n\n exit(domNode, element) {\n super.exit(domNode, element);\n }\n}\nSummary.prototype._class += \" chart_Summary\";\nSummary.prototype.implements(I2DChart.prototype);\n\nexport interface Summary {\n iconColumn(): string;\n iconColumn(_: string): this;\n iconColumn_exists(): boolean;\n icon(): string;\n icon(_: string): this;\n icon_exists(): boolean;\n\n headerFontSize(): number;\n headerFontSize(_: number): this;\n textFontSize(): number;\n textFontSize(_: number): this;\n moreFontSize(): number;\n moreFontSize(_: number): this;\n iconFontSize(): number;\n iconFontSize(_: number): this;\n\n hideLabel(): boolean;\n hideLabel(_: boolean): this;\n hideLabel_exists(): boolean;\n labelColumn(): string;\n labelColumn(_: string): this;\n labelColumn_exists(): boolean;\n labelHTML(): boolean;\n labelHTML(_: boolean): this;\n labelHTML_exists(): boolean;\n\n valueColumn(): string;\n valueColumn(_: string): this;\n valueColumn_exists(): boolean;\n valueHTML(): boolean;\n valueHTML(_: boolean): this;\n valueHTML_exists(): boolean;\n\n hideMore(): boolean;\n hideMore(_: boolean): this;\n hideMore_exists(): boolean;\n hideMoreWrapper(): boolean;\n hideMoreWrapper(_: boolean): this;\n moreWrapperHeight(): number;\n moreWrapperHeight(_: number): this;\n moreWrapperHeight_exists(): boolean;\n moreIconColumn(): string;\n moreIconColumn(_: string): this;\n moreIconColumn_exists(): boolean;\n moreIcon(): string;\n moreIcon(_: string): this;\n moreIcon_exists(): boolean;\n moreTextColumn(): string;\n moreTextColumn(_: string): this;\n moreTextColumn_exists(): boolean;\n moreText(): string;\n moreText(_: string): this;\n moreText_exists(): boolean;\n moreTextHTML(): boolean;\n moreTextHTML(_: boolean): this;\n moreTextHTML_exists(): boolean;\n\n colorFillColumn(): string;\n colorFillColumn(_: string): this;\n colorFillColumn_exists(): boolean;\n colorFill(): string;\n colorFill(_: string): this;\n colorFill_exists(): boolean;\n colorStrokeColumn(): string;\n colorStrokeColumn(_: string): this;\n colorStrokeColumn_exists(): boolean;\n colorStroke(): string;\n colorStroke(_: string): this;\n colorStroke_exists(): boolean;\n\n fixedSize(): boolean;\n fixedSize(_: boolean): this;\n fixedSize_exists(): boolean;\n minWidth(): number;\n minWidth(_: number): this;\n minWidth_exists(): boolean;\n minHeight(): number;\n minHeight(_: number): this;\n minHeight_exists(): boolean;\n playInterval(): number;\n playInterval(_: number): this;\n playInterval_exists(): boolean;\n\n // I2DChart ---\n click(row, column, selected);\n dblclick(row, column, selected);\n}\n\nSummary.prototype.publish(\"iconColumn\", null, \"set\", \"Select Icon Column\", function () { return this.columns(); }, { optional: true });\nSummary.prototype.publish(\"icon\", \"fa-briefcase\", \"string\", \"FA Char icon class\", null, { disable: (w) => w.iconColumn() });\n\nSummary.prototype.publish(\"headerFontSize\", null, \"number\", \"headerFontSize\");\nSummary.prototype.publish(\"textFontSize\", null, \"number\", \"textFontSize\");\nSummary.prototype.publish(\"moreFontSize\", null, \"number\", \"moreFontSize\");\nSummary.prototype.publish(\"iconFontSize\", null, \"number\", \"iconFontSize\");\n\nSummary.prototype.publish(\"hideLabel\", false, \"boolean\", \"Hide label column\");\nSummary.prototype.publish(\"labelColumn\", null, \"set\", \"Select display value\", function () { return this.columns(); }, { optional: true, disable: (w) => w.hideLabel() });\nSummary.prototype.publish(\"labelHTML\", false, \"boolean\", \"Allow HTML\", null, { disable: (w) => w.hideLabel() });\n\nSummary.prototype.publish(\"valueColumn\", null, \"set\", \"Select display value\", function () { return this.columns(); }, { optional: true });\nSummary.prototype.publish(\"valueHTML\", false, \"boolean\", \"Allow HTML\");\n\nSummary.prototype.publish(\"hideMore\", false, \"boolean\", \"Hide More Information\");\nSummary.prototype.publish(\"hideMoreWrapper\", false, \"boolean\", \"Hide More Information Wrapper\");\nSummary.prototype.publish(\"moreWrapperHeight\", null, \"number\", \"Height of the 'more' text wrapper (pixels)\");\nSummary.prototype.publish(\"moreIconColumn\", null, \"set\", \"Select More Icon Column\", function () { return this.columns(); }, { optional: true, disable: (w) => w.hideMore() });\nSummary.prototype.publish(\"moreIcon\", \"fa-info-circle\", \"string\", \"FA Char icon class\", null, { disable: (w) => w.hideMore() || w.moreIconColumn() });\nSummary.prototype.publish(\"moreTextColumn\", null, \"set\", \"Select display value\", function () { return this.columns(); }, { optional: true, disable: (w) => w.hideMore() });\nSummary.prototype.publish(\"moreText\", \"More Info\", \"string\", \"More text\", null, { disable: (w) => w.hideMore() || w.moreTextColumn() });\nSummary.prototype.publish(\"moreTextHTML\", false, \"boolean\", \"Allow HTML\", null, { disable: (w) => w.hideMore() });\n\nSummary.prototype.publish(\"colorFillColumn\", null, \"set\", \"Column for color\", function () { return this.columns(); }, { optional: true });\nSummary.prototype.publish(\"colorFill\", \"#3498db\", \"html-color\", \"Fill Color\", null, { disable: (w) => w.colorFillColumn() });\nSummary.prototype.publish(\"colorStrokeColumn\", null, \"set\", \"Column for color\", function () { return this.columns(); }, { optional: true });\nSummary.prototype.publish(\"colorStroke\", \"#ffffff\", \"html-color\", \"Fill Color\", null, { disable: (w) => w.colorStrokeColumn() });\n\nSummary.prototype.publish(\"fixedSize\", true, \"boolean\", \"Fix Size to Min Width/Height\");\nSummary.prototype.publish(\"minWidth\", 225, \"number\", \"Minimum Width\");\nSummary.prototype.publish(\"minHeight\", 150, \"number\", \"Minimum Height\");\nSummary.prototype.publish(\"playInterval\", null, \"number\", \"Play Interval\", null, { optional: true });\n\nconst playInterval = Summary.prototype.playInterval;\nSummary.prototype.playInterval = function (_?: number): number | any {\n const retVal = playInterval.apply(this, arguments);\n if (arguments.length) {\n if (this._playIntervalHandle) {\n clearInterval(this._playIntervalHandle);\n }\n const context = this;\n if (_) {\n this._playIntervalHandle = setInterval(function () {\n context._playIntervalIdx++;\n if (context._renderCount && context.data().length) {\n context.render();\n }\n }, _);\n }\n }\n return retVal;\n};\n","import { I2DChart } from \"@hpcc-js/api\";\nimport { CanvasWidget, Utility } from \"@hpcc-js/common\";\n\nexport class SummaryC extends CanvasWidget {\n protected _playIntervalIdx = 0;\n\n constructor() {\n super();\n I2DChart.call(this);\n this.playInterval(this.playInterval());\n }\n\n currentRow() {\n return this.data()[this._playIntervalIdx];\n }\n\n enter(domNode, element) {\n super.enter.apply(this, arguments);\n const { width, height } = this.size();\n domNode.height = height;\n domNode.width = width;\n }\n\n update(domNode, element) {\n super.update.apply(this, arguments);\n const context = this;\n if (this._playIntervalIdx >= this.data().length) {\n this._playIntervalIdx = 0;\n }\n const size = this.size();\n const minDimension = Math.min(size.width, size.height);\n const sizeRatio = this.fontSizeRatio();\n const labelIdx = this.columns().indexOf(this.labelColumn());\n const valueIdx = this.columns().indexOf(this.valueColumn());\n const bgColorIdx = this.columns().indexOf(this.colorFillColumn());\n const fontColorIdx = this.columns().indexOf(this.colorStrokeColumn());\n const iconIdx = this.columns().indexOf(this.iconColumn());\n const icon = iconIdx !== -1 ? this.currentRow()[iconIdx] : this.icon();\n const label = labelIdx !== -1 ? this.currentRow()[labelIdx] : \"\";\n const value = valueIdx !== -1 ? this.currentRow()[valueIdx] : \"\";\n const bgColor = bgColorIdx !== -1 ? this.currentRow()[bgColorIdx] : this.colorFill();\n const fontColor = fontColorIdx !== -1 ? this.currentRow()[fontColorIdx] : this.colorStroke();\n\n let mainFontSize = size.height * (sizeRatio - this.paddingSizeRatio());\n const subFontSize = size.height * (1 - sizeRatio - this.paddingSizeRatio());\n const iconSize = size.height * (this.iconSizeRatio() - this.paddingSizeRatio());\n const p = minDimension * this.paddingSizeRatio();\n const ctx = domNode.getContext(\"2d\");\n\n ctx.clearRect(0, 0, size.width, size.height);\n\n const fontFamily = context.fontFamily();\n\n ctx.fillStyle = bgColor;\n ctx.fillRect(0, 0, size.width, size.height);\n\n ctx.globalAlpha = this.iconOpacity();\n drawIcon(Utility.faChar(icon), iconSize, context.iconAnchor());\n\n ctx.globalAlpha = this.valueOpacity();\n mainFontSize = drawText(value, p, mainFontSize, context.valueAnchor());\n\n ctx.globalAlpha = this.labelOpacity();\n drawText(label, mainFontSize + p, subFontSize, context.labelAnchor());\n\n function drawText(text, y, fontSize, anchorMode) {\n ctx.textBaseline = \"top\";\n ctx.font = `${fontSize}px ${fontFamily}`;\n ctx.fillStyle = fontColor;\n let measurement = ctx.measureText(text);\n if (measurement.width > (size.width - (p * 2))) {\n const fontSizeMult = (size.width - (p * 2)) / measurement.width;\n fontSize = fontSize * fontSizeMult;\n ctx.font = `${fontSize}px ${fontFamily}`;\n measurement = ctx.measureText(text);\n }\n const x = getTextOffsetX(measurement.width, anchorMode);\n ctx.fillText(text, x, y);\n return fontSize;\n }\n\n function drawIcon(text, fontSize, anchorMode) {\n if (typeof text === \"undefined\") return;\n ctx.textBaseline = context.iconBaseline();\n ctx.font = `${fontSize}px FontAwesome`;\n ctx.fillStyle = fontColor;\n let measurement = ctx.measureText(text);\n if (measurement.width > (size.width - (p * 2))) {\n const fontSizeMult = (size.width - (p * 2)) / measurement.width;\n ctx.font = `${fontSize * fontSizeMult}px FontAwesome`;\n measurement = ctx.measureText(text);\n }\n const x = getTextOffsetX(measurement.width, anchorMode);\n const y = getTextOffsetY(context.iconBaseline());\n ctx.fillText(text, x, y);\n }\n\n function getTextOffsetX(width, anchorMode) {\n switch (anchorMode) {\n case \"start\":\n return p;\n case \"middle\":\n return (size.width / 2) - (width / 2);\n case \"end\":\n return size.width - width - p;\n }\n }\n function getTextOffsetY(anchorMode) {\n switch (anchorMode) {\n case \"top\":\n return p;\n case \"middle\":\n return size.height / 2;\n case \"bottom\":\n return size.height - p;\n }\n }\n }\n}\nSummaryC.prototype._class += \" chart_SummaryC\";\nSummaryC.prototype.implements(I2DChart.prototype);\n\nexport interface SummaryC {\n iconColumn(): string;\n iconColumn(_: string): this;\n iconColumn_exists(): boolean;\n icon(): string;\n icon(_: string): this;\n icon_exists(): boolean;\n iconOpacity(): number;\n iconOpacity(_: number): this;\n\n fontFamily(): string;\n fontFamily(_: string): this;\n\n labelColumn(): string;\n labelColumn(_: string): this;\n labelColumn_exists(): boolean;\n labelOpacity(): number;\n labelOpacity(_: number): this;\n\n valueColumn(): string;\n valueColumn(_: string): this;\n valueColumn_exists(): boolean;\n valueOpacity(): number;\n valueOpacity(_: number): this;\n\n fontSizeRatio(): number;\n fontSizeRatio(_: number): this;\n\n colorFillColumn(): string;\n colorFillColumn(_: string): this;\n colorFillColumn_exists(): boolean;\n colorFill(): string;\n colorFill(_: string): this;\n colorFill_exists(): boolean;\n colorStrokeColumn(): string;\n colorStrokeColumn(_: string): this;\n colorStrokeColumn_exists(): boolean;\n colorStroke(): string;\n colorStroke(_: string): this;\n colorStroke_exists(): boolean;\n\n fixedSize(): boolean;\n fixedSize(_: boolean): this;\n fixedSize_exists(): boolean;\n minWidth(): number;\n minWidth(_: number): this;\n minWidth_exists(): boolean;\n minHeight(): number;\n minHeight(_: number): this;\n minHeight_exists(): boolean;\n playInterval(): number;\n playInterval(_: number): this;\n playInterval_exists(): boolean;\n paddingSizeRatio(): number;\n paddingSizeRatio(_: number): this;\n iconSizeRatio(): number;\n iconSizeRatio(_: number): this;\n\n iconAnchor(): \"start\" | \"middle\" | \"end\";\n iconAnchor(_: \"start\" | \"middle\" | \"end\"): this;\n labelAnchor(): \"start\" | \"middle\" | \"end\";\n labelAnchor(_: \"start\" | \"middle\" | \"end\"): this;\n valueAnchor(): \"start\" | \"middle\" | \"end\";\n valueAnchor(_: \"start\" | \"middle\" | \"end\"): this;\n\n iconBaseline(): \"top\" | \"middle\" | \"bottom\";\n iconBaseline(_: \"top\" | \"middle\" | \"bottom\"): this;\n}\n\nSummaryC.prototype.publish(\"iconBaseline\", \"bottom\", \"string\", \"Text baseline for the icon\", [\"top\", \"middle\", \"bottom\"]);\nSummaryC.prototype.publish(\"iconAnchor\", \"end\", \"set\", \"Anchors the icon either at the start, middle, or end of the summary\", [\"start\", \"middle\", \"end\"]);\nSummaryC.prototype.publish(\"valueAnchor\", \"start\", \"set\", \"Anchors the value either at the start, middle, or end of the summary\", [\"start\", \"middle\", \"end\"]);\nSummaryC.prototype.publish(\"labelAnchor\", \"start\", \"set\", \"Anchors the label either at the start, middle, or end of the summary\", [\"start\", \"middle\", \"end\"]);\nSummaryC.prototype.publish(\"iconColumn\", null, \"set\", \"Select Icon Column\", function () { return this.columns(); }, { optional: true });\nSummaryC.prototype.publish(\"icon\", \"fa-briefcase\", \"string\", \"FA Char icon class\", null, { disable: (w) => w.iconColumn() });\n\nSummaryC.prototype.publish(\"fontFamily\", \"Arial\", \"string\", \"Font Family\");\n\nSummaryC.prototype.publish(\"labelColumn\", null, \"set\", \"Select display value\", function () { return this.columns(); }, { optional: true });\nSummaryC.prototype.publish(\"valueColumn\", null, \"set\", \"Select display value\", function () { return this.columns(); }, { optional: true });\n\nSummaryC.prototype.publish(\"colorFillColumn\", null, \"set\", \"Column for background color\", function () { return this.columns(); }, { optional: true });\nSummaryC.prototype.publish(\"colorFill\", \"#0097e6\", \"html-color\", \"Background Color\", null, { disable: (w) => w.colorFillColumn() });\nSummaryC.prototype.publish(\"colorStrokeColumn\", null, \"set\", \"Column for font color\", function () { return this.columns(); }, { optional: true });\nSummaryC.prototype.publish(\"colorStroke\", \"#2f3640\", \"html-color\", \"Font Color\", null, { disable: (w) => w.colorStrokeColumn() });\n\nSummaryC.prototype.publish(\"fixedSize\", true, \"boolean\", \"Fix Size to Min Width/Height\");\nSummaryC.prototype.publish(\"minWidth\", 225, \"number\", \"Minimum Width\");\nSummaryC.prototype.publish(\"minHeight\", 150, \"number\", \"Minimum Height\");\nSummaryC.prototype.publish(\"playInterval\", null, \"number\", \"Play Interval\", null, { optional: true });\n\nSummaryC.prototype.publish(\"fontSizeRatio\", 0.618, \"number\", \"Ratio between widget height and value font size\");\nSummaryC.prototype.publish(\"valueOpacity\", 1, \"number\", \"Opacity of value text (0..1)\");\nSummaryC.prototype.publish(\"labelOpacity\", 0.9, \"number\", \"Opacity of label text (0..1)\");\nSummaryC.prototype.publish(\"iconOpacity\", 0.3, \"number\", \"Opacity of icon text (0..1)\");\n\nSummaryC.prototype.publish(\"paddingSizeRatio\", 0.1, \"number\", \"Ratio of the smallest dimension for edge padding (0..1)\");\nSummaryC.prototype.publish(\"iconSizeRatio\", 0.9, \"number\", \"Ratio of the height for icon size (0..1)\");\n\nconst playInterval = SummaryC.prototype.playInterval;\nSummaryC.prototype.playInterval = function (_?: number): number | any {\n const retVal = playInterval.apply(this, arguments);\n if (arguments.length) {\n if (this._playIntervalHandle) {\n clearInterval(this._playIntervalHandle);\n }\n const context = this;\n if (_) {\n this._playIntervalHandle = setInterval(function () {\n context._playIntervalIdx++;\n if (context._renderCount && context.data().length) {\n context.render();\n }\n }, _);\n }\n }\n return retVal;\n};\n","// Word cloud layout by Jason Davies, https://www.jasondavies.com/wordcloud/\n// Algorithm due to Jonathan Feinberg, http://static.mrfeinberg.com/bv_ch03.pdf\n\nimport { dispatch } from \"d3-dispatch\";\n\nconst cloudRadians = Math.PI / 180;\nconst cw = 1 << 11 >> 5;\nconst ch = 1 << 11;\n\nexport function d3Cloud() {\n const event = dispatch(\"word\", \"end\");\n const cloud: any = {};\n\n let size = [256, 256];\n let text = cloudText;\n let font = cloudFont;\n let fontSize = cloudFontSize;\n let fontStyle = cloudFontNormal;\n let fontWeight = cloudFontNormal;\n let rotate = cloudRotate;\n let padding = cloudPadding;\n let words = [];\n let spiral = archimedeanSpiral;\n let timeInterval = Infinity;\n let timer = null;\n let random = Math.random;\n let canvas = cloudCanvas;\n\n cloud.canvas = function (_?) {\n return arguments.length ? (canvas = functor(_), cloud) : canvas;\n };\n\n cloud.start = function () {\n const contextAndRatio = getContext(canvas());\n const board = zeroArray((size[0] >> 5) * size[1]);\n let bounds = null;\n const n = words.length;\n let i = -1;\n const tags = [];\n const data = words.map(function (d, i) {\n d.text = text.call(this, d, i);\n d.font = font.call(this, d, i);\n d.style = fontStyle.call(this, d, i);\n d.weight = fontWeight.call(this, d, i);\n d.rotate = rotate.call(this, d, i);\n d.size = ~~fontSize.call(this, d, i);\n d.padding = padding.call(this, d, i);\n return d;\n }).sort(function (a, b) { return b.size - a.size; });\n\n if (timer) clearInterval(timer);\n timer = setInterval(step, 0);\n step();\n\n return cloud;\n\n function step() {\n const start = Date.now();\n while (Date.now() - start < timeInterval && ++i < n && timer) {\n const d = data[i];\n d.x = (size[0] * (random() + .5)) >> 1;\n d.y = (size[1] * (random() + .5)) >> 1;\n cloudSprite(contextAndRatio, d, data, i);\n if (d.hasText && place(board, d, bounds)) {\n tags.push(d);\n event.call(\"word\", cloud, d);\n if (bounds) cloudBounds(bounds, d);\n else bounds = [{ x: d.x + d.x0, y: d.y + d.y0 }, { x: d.x + d.x1, y: d.y + d.y1 }];\n // Temporary hack\n d.x -= size[0] >> 1;\n d.y -= size[1] >> 1;\n }\n }\n if (i >= n) {\n cloud.stop();\n event.call(\"end\", cloud, tags, bounds);\n }\n }\n };\n\n cloud.stop = function () {\n if (timer) {\n clearInterval(timer);\n timer = null;\n }\n return cloud;\n };\n\n function getContext(canvas) {\n canvas.width = canvas.height = 1;\n const ratio = Math.sqrt(canvas.getContext(\"2d\").getImageData(0, 0, 1, 1).data.length >> 2);\n canvas.width = (cw << 5) / ratio;\n canvas.height = ch / ratio;\n\n const context = canvas.getContext(\"2d\");\n context.fillStyle = context.strokeStyle = \"red\";\n context.textAlign = \"center\";\n\n return { context, ratio };\n }\n\n function place(board, tag, bounds) {\n const startX = tag.x;\n const startY = tag.y;\n const maxDelta = Math.sqrt(size[0] * size[0] + size[1] * size[1]);\n const s = spiral(size);\n const dt = random() < .5 ? 1 : -1;\n let t = -dt;\n let dxdy;\n let dx;\n let dy;\n\n // eslint-disable-next-line no-cond-assign\n while (dxdy = s(t += dt)) {\n dx = ~~dxdy[0];\n dy = ~~dxdy[1];\n\n if (Math.min(Math.abs(dx), Math.abs(dy)) >= maxDelta) break;\n\n tag.x = startX + dx;\n tag.y = startY + dy;\n\n if (tag.x + tag.x0 < 0 || tag.y + tag.y0 < 0 ||\n tag.x + tag.x1 > size[0] || tag.y + tag.y1 > size[1]) continue;\n // TODO only check for collisions within current bounds.\n if (!bounds || !cloudCollide(tag, board, size[0])) {\n if (!bounds || collideRects(tag, bounds)) {\n const sprite = tag.sprite;\n const w = tag.width >> 5;\n const sw = size[0] >> 5;\n const lx = tag.x - (w << 4);\n const sx = lx & 0x7f;\n const msx = 32 - sx;\n const h = tag.y1 - tag.y0;\n let x = (tag.y + tag.y0) * sw + (lx >> 5);\n let last;\n for (let j = 0; j < h; j++) {\n last = 0;\n for (let i = 0; i <= w; i++) {\n board[x + i] |= (last << msx) | (i < w ? (last = sprite[j * w + i]) >>> sx : 0);\n }\n x += sw;\n }\n delete tag.sprite;\n return true;\n }\n }\n }\n return false;\n }\n\n cloud.timeInterval = function (_?) {\n return arguments.length ? (timeInterval = _ == null ? Infinity : _, cloud) : timeInterval;\n };\n\n cloud.words = function (_?) {\n return arguments.length ? (words = _, cloud) : words;\n };\n\n cloud.size = function (_?) {\n return arguments.length ? (size = [+_[0], +_[1]], cloud) : size;\n };\n\n cloud.font = function (_?) {\n return arguments.length ? (font = functor(_), cloud) : font;\n };\n\n cloud.fontStyle = function (_?) {\n return arguments.length ? (fontStyle = functor(_), cloud) : fontStyle;\n };\n\n cloud.fontWeight = function (_?) {\n return arguments.length ? (fontWeight = functor(_), cloud) : fontWeight;\n };\n\n cloud.rotate = function (_?) {\n return arguments.length ? (rotate = functor(_), cloud) : rotate;\n };\n\n cloud.text = function (_?) {\n return arguments.length ? (text = functor(_), cloud) : text;\n };\n\n cloud.spiral = function (_?) {\n return arguments.length ? (spiral = spirals[_] || _, cloud) : spiral;\n };\n\n cloud.fontSize = function (_?) {\n return arguments.length ? (fontSize = functor(_), cloud) : fontSize;\n };\n\n cloud.padding = function (_?) {\n return arguments.length ? (padding = functor(_), cloud) : padding;\n };\n\n cloud.random = function (_?) {\n return arguments.length ? (random = _, cloud) : random;\n };\n\n cloud.on = function () {\n const value = event.on.apply(event, arguments);\n return value === event ? cloud : value;\n };\n\n return cloud;\n}\n\nfunction cloudText(d) {\n return d.text;\n}\n\nfunction cloudFont() {\n return \"serif\";\n}\n\nfunction cloudFontNormal() {\n return \"normal\";\n}\n\nfunction cloudFontSize(d) {\n return Math.sqrt(d.value);\n}\n\nfunction cloudRotate() {\n return (~~(Math.random() * 6) - 3) * 30;\n}\n\nfunction cloudPadding() {\n return 1;\n}\n\n// Fetches a monochrome sprite bitmap for the specified text.\n// Load in batches for speed.\nfunction cloudSprite(contextAndRatio, d, data, di) {\n if (d.sprite) return;\n const c = contextAndRatio.context;\n const ratio = contextAndRatio.ratio;\n\n c.clearRect(0, 0, (cw << 5) / ratio, ch / ratio);\n let x = 0;\n let y = 0;\n let maxh = 0;\n const n = data.length;\n --di;\n while (++di < n) {\n d = data[di];\n c.save();\n c.font = d.style + \" \" + d.weight + \" \" + ~~((d.size + 1) / ratio) + \"px \" + d.font;\n let w = c.measureText(d.text + \"m\").width * ratio;\n let h = d.size << 1;\n if (d.rotate) {\n const sr = Math.sin(d.rotate * cloudRadians);\n const cr = Math.cos(d.rotate * cloudRadians);\n const wcr = w * cr;\n const wsr = w * sr;\n const hcr = h * cr;\n const hsr = h * sr;\n w = (Math.max(Math.abs(wcr + hsr), Math.abs(wcr - hsr)) + 0x1f) >> 5 << 5;\n h = ~~Math.max(Math.abs(wsr + hcr), Math.abs(wsr - hcr));\n } else {\n w = (w + 0x1f) >> 5 << 5;\n }\n if (h > maxh) maxh = h;\n if (x + w >= (cw << 5)) {\n x = 0;\n y += maxh;\n maxh = 0;\n }\n if (y + h >= ch) break;\n c.translate((x + (w >> 1)) / ratio, (y + (h >> 1)) / ratio);\n if (d.rotate) c.rotate(d.rotate * cloudRadians);\n c.fillText(d.text, 0, 0);\n if (d.padding) {\n c.lineWidth = 2 * d.padding;\n c.strokeText(d.text, 0, 0);\n }\n c.restore();\n d.width = w;\n d.height = h;\n d.xoff = x;\n d.yoff = y;\n d.x1 = w >> 1;\n d.y1 = h >> 1;\n d.x0 = -d.x1;\n d.y0 = -d.y1;\n d.hasText = true;\n x += w;\n }\n const pixels = c.getImageData(0, 0, (cw << 5) / ratio, ch / ratio).data;\n const sprite = [];\n while (--di >= 0) {\n d = data[di];\n if (!d.hasText) continue;\n const w = d.width;\n const w32 = w >> 5;\n let h = d.y1 - d.y0;\n // Zero the buffer\n for (let i = 0; i < h * w32; i++) sprite[i] = 0;\n x = d.xoff;\n if (x == null) return;\n y = d.yoff;\n let seen = 0;\n let seenRow = -1;\n for (let j = 0; j < h; j++) {\n for (let i = 0; i < w; i++) {\n const k = w32 * j + (i >> 5);\n const m = pixels[((y + j) * (cw << 5) + (x + i)) << 2] ? 1 << (31 - (i % 32)) : 0;\n sprite[k] |= m;\n seen |= m;\n }\n if (seen) seenRow = j;\n else {\n d.y0++;\n h--;\n j--;\n y++;\n }\n }\n d.y1 = d.y0 + seenRow;\n d.sprite = sprite.slice(0, (d.y1 - d.y0) * w32);\n }\n}\n\n// Use mask-based collision detection.\nfunction cloudCollide(tag, board, sw) {\n sw >>= 5;\n const sprite = tag.sprite;\n const w = tag.width >> 5;\n const lx = tag.x - (w << 4);\n const sx = lx & 0x7f;\n const msx = 32 - sx;\n const h = tag.y1 - tag.y0;\n let x = (tag.y + tag.y0) * sw + (lx >> 5);\n let last;\n for (let j = 0; j < h; j++) {\n last = 0;\n for (let i = 0; i <= w; i++) {\n if (((last << msx) | (i < w ? (last = sprite[j * w + i]) >>> sx : 0))\n & board[x + i]) return true;\n }\n x += sw;\n }\n return false;\n}\n\nfunction cloudBounds(bounds, d) {\n const b0 = bounds[0];\n const b1 = bounds[1];\n if (d.x + d.x0 < b0.x) b0.x = d.x + d.x0;\n if (d.y + d.y0 < b0.y) b0.y = d.y + d.y0;\n if (d.x + d.x1 > b1.x) b1.x = d.x + d.x1;\n if (d.y + d.y1 > b1.y) b1.y = d.y + d.y1;\n}\n\nfunction collideRects(a, b) {\n return a.x + a.x1 > b[0].x && a.x + a.x0 < b[1].x && a.y + a.y1 > b[0].y && a.y + a.y0 < b[1].y;\n}\n\nfunction archimedeanSpiral(size) {\n const e = size[0] / size[1];\n return function (t) {\n return [e * (t *= .1) * Math.cos(t), t * Math.sin(t)];\n };\n}\n\nfunction rectangularSpiral(size) {\n const dy = 4;\n const dx = dy * size[0] / size[1];\n let x = 0;\n let y = 0;\n return function (t) {\n const sign = t < 0 ? -1 : 1;\n // See triangular numbers: T_n = n * (n + 1) / 2.\n switch ((Math.sqrt(1 + 4 * sign * t) - sign) & 3) {\n case 0: x += dx; break;\n case 1: y += dy; break;\n case 2: x -= dx; break;\n default: y -= dy; break;\n }\n return [x, y];\n };\n}\n\n// TODO reuse arrays?\nfunction zeroArray(n) {\n const a = [];\n let i = -1;\n while (++i < n) a[i] = 0;\n return a;\n}\n\nfunction cloudCanvas() {\n return document.createElement(\"canvas\");\n}\n\nfunction functor(d) {\n return typeof d === \"function\" ? d : function () { return d; };\n}\n\nconst spirals = {\n archimedean: archimedeanSpiral,\n rectangular: rectangularSpiral\n};\n","import { I2DChart, ITooltip } from \"@hpcc-js/api\";\nimport { d3Event, InputField, SVGWidget, Utility, zoom as d3Zoom } from \"@hpcc-js/common\";\nimport { extent as d3Extent } from \"d3-array\";\nimport { scaleLinear as d3ScaleLinear, scaleLog as d3ScaleLog, scalePow as d3ScalePow, scaleSqrt as d3ScaleSqrt } from \"d3-scale\";\nimport { d3Cloud } from \"./D3Cloud.ts\";\n\nimport \"../src/WordCloud.css\";\n\nexport class WordCloud extends SVGWidget {\n static __inputs: InputField[] = [{\n id: \"label\",\n type: \"string\"\n }, {\n id: \"value\",\n type: \"number\"\n }];\n\n private _prevOffsetX;\n private _prevOffsetY;\n private _prevZoom;\n private _root;\n private _canvas;\n private _d3Cloud;\n private _d3Zoom;\n\n constructor() {\n super();\n I2DChart.call(this);\n ITooltip.call(this);\n Utility.SimpleSelectionMixin.call(this);\n\n this._prevOffsetX = this.offsetX();\n this._prevOffsetY = this.offsetY();\n this._prevZoom = this.zoom();\n }\n\n calcData() {\n return this.data().map(row => {\n return {\n __viz_label: row[0],\n __viz_weight: row[1],\n __viz_row: row\n };\n });\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this._selection.widgetElement(element);\n\n this._root = element.append(\"g\");\n this._canvas = document.createElement(\"canvas\");\n\n const context = this;\n this._d3Zoom = d3Zoom()\n .scaleExtent([0.1, 10])\n ;\n this._d3Zoom\n .on(\"zoom\", function (evt) {\n const event = d3Event();\n if (event && event.transform) {\n context.zoomed(context._d3Zoom, [event.transform.x, event.transform.y], event.transform.k);\n }\n })\n ;\n element.call(this._d3Zoom);\n\n this\n .tooltipHTML(function (d) {\n const columns = context.columns();\n const series = columns && columns.length ? columns[0] : \"Word\";\n return context.tooltipFormat({ label: d.__viz_label, series, value: d.__viz_weight });\n })\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this._palette = this._palette.switch(this.paletteID());\n if (this.useClonedPalette()) {\n this._palette = this._palette.cloneNotExists(this.paletteID() + \"_\" + this.id());\n }\n\n this._d3Cloud = d3Cloud()\n .canvas(() => this._canvas)\n ;\n\n this.zoomed(this, [this.offsetX(), this.offsetY()], this.zoom());\n\n const data = this.calcData();\n const context = this;\n const extent = d3Extent(data, function (d: any) { return d.__viz_weight; });\n let scaler;\n switch (this.scaleMode()) {\n case \"log\":\n scaler = d3ScaleLog;\n break;\n case \"sqrt\":\n scaler = d3ScaleSqrt;\n break;\n case \"pow\":\n scaler = d3ScalePow;\n break;\n case \"linear\":\n default:\n scaler = d3ScaleLinear;\n break;\n }\n const scale = scaler().domain(extent).range([this.fontSizeFrom(), this.fontSizeTo()]);\n const angleDomain = d3ScaleLinear().domain([0, context.angleCount() - 1]).range([context.angleFrom(), context.angleTo()]);\n\n this._d3Cloud.stop()\n .size([this.width(), this.height()])\n .words(data)\n .font(this.fontFamily())\n .padding(this.padding())\n .spiral(this.spiral())\n .text(function (d) {\n return d.__viz_label.trim();\n })\n .fontSize(function (d) {\n return scale(d.__viz_weight);\n })\n .rotate((d, i) => angleDomain(i % context.angleCount()))\n .on(\"word\", w => {\n })\n .on(\"end\", draw)\n .start()\n ;\n\n function draw(data, bounds) {\n const text = context._root.selectAll(\"text\")\n .data(data, function (d) { return d.__viz_label ? d.__viz_label.toLowerCase() : \"\"; })\n ;\n text.enter().append(\"text\")\n .attr(\"text-anchor\", \"middle\")\n .call(context._selection.enter.bind(context._selection))\n .text(function (d) { return d.__viz_label; })\n .on(\"click\", function (d) {\n context.click(context.rowToObj(d.__viz_row), context.columns()[1], context._selection.selected(this));\n })\n .on(\"dblclick\", function (d) {\n context.dblclick(context.rowToObj(d.__viz_row), context.columns()[1], context._selection.selected(this));\n })\n .on(\"mouseout.tooltip\", context.tooltip.hide)\n .on(\"mousemove.tooltip\", context.tooltip.show)\n .style(\"opacity\", 1e-6)\n .merge(text)\n .style(\"font-size\", function (d) { return scale(d.__viz_weight) + \"px\"; })\n .style(\"font-family\", context.fontFamily())\n .transition().duration(1000)\n .attr(\"transform\", function (d) { return \"translate(\" + [d.x, d.y] + \")rotate(\" + d.rotate + \")\"; })\n .style(\"fill\", function (d) { return context._palette(d.__viz_label ? d.__viz_label.toLowerCase() : \"\"); })\n .style(\"opacity\", 1)\n ;\n text.exit().transition().duration(1000)\n .style(\"opacity\", 1e-4)\n .remove()\n ;\n }\n }\n\n zoomed(source, translate, scale) {\n if (translate[0] !== this._prevOffsetX || translate[1] !== this._prevOffsetY || scale !== this._prevZoom) {\n this._root.attr(\"transform\", translate);\n switch (source) {\n case this:\n /*\n this._d3Zoom\n .scale(scale)\n .translate(translate)\n ;\n */\n break;\n case this._d3Zoom:\n this.offsetX(translate[0]);\n this.offsetY(translate[1]);\n this.zoom(scale);\n break;\n }\n this._prevOffsetX = translate[0];\n this._prevOffsetY = translate[1];\n this._prevZoom = scale;\n }\n }\n}\nWordCloud.prototype._class += \" chart_WordCloud\";\nWordCloud.prototype.implements(I2DChart.prototype);\nWordCloud.prototype.implements(ITooltip.prototype);\nWordCloud.prototype.mixin(Utility.SimpleSelectionMixin);\n\nexport interface WordCloud {\n\n paletteID(): string;\n paletteID(_: string): this;\n useClonedPalette(): boolean;\n useClonedPalette(_: boolean): this;\n fontFamily(): string;\n fontFamily(_: string): this;\n fontSizeFrom(): number;\n fontSizeFrom(_: number): this;\n fontSizeTo(): number;\n fontSizeTo(_: number): this;\n angleFrom(): number;\n angleFrom(_: number): this;\n angleTo(): number;\n angleTo(_: number): this;\n angleCount(): number;\n angleCount(_: number): this;\n padding(): number;\n padding(_: number): this;\n scaleMode(): string;\n scaleMode(_: string): this;\n spiral(): string;\n spiral(_: string): this;\n offsetX(): number;\n offsetX(_: number): this;\n offsetY(): number;\n offsetY(_: number): this;\n zoom(): number;\n zoom(_: number): this;\n zoom_exists(): boolean;\n\n // I2DChart\n _palette;\n click(row, column, selected): void;\n dblclick(row, column, selected): void;\n\n // ITooltip ---\n tooltip;\n tooltipHTML(_?): any;\n tooltipFormat(opts): any;\n tooltipStyle(): string;\n tooltipStyle(_: string): this;\n tooltipValueFormat(): string;\n tooltipValueFormat(_: string): this;\n tooltipSeriesColor(): string;\n tooltipSeriesColor(_: string): this;\n tooltipLabelColor(): string;\n tooltipLabelColor(_: string): this;\n tooltipValueColor(): string;\n tooltipValueColor(_: string): this;\n tooltipTick(): boolean;\n tooltipTick(_: boolean): this;\n tooltipOffset(): number;\n tooltipOffset(_: number): this;\n tooltipOffset_exists(): boolean;\n\n // SimpleSelectionMixin\n _selection: Utility.SimpleSelection;\n}\n\nWordCloud.prototype.publish(\"paletteID\", \"default\", \"set\", \"Color palette for this widget\", WordCloud.prototype._palette.switch(), { tags: [\"Basic\", \"Shared\"] });\nWordCloud.prototype.publish(\"useClonedPalette\", false, \"boolean\", \"Enable or disable using a cloned palette\", null, { tags: [\"Intermediate\", \"Shared\"] });\n\nWordCloud.prototype.publish(\"fontFamily\", \"Impact\", \"string\", \"Font Name\", null, { tags: [\"Basic\"] });\nWordCloud.prototype.publish(\"fontSizeFrom\", 6, \"number\", \"Minimum font size (pixels)\", null, { tags: [\"Basic\"] });\nWordCloud.prototype.publish(\"fontSizeTo\", 48, \"number\", \"Maximum font size (pixels)\", null, { tags: [\"Basic\"] });\nWordCloud.prototype.publish(\"angleFrom\", -60, \"number\", \"Minimum angle (degrees)\", null, { tags: [\"Basic\"] });\nWordCloud.prototype.publish(\"angleTo\", 60, \"number\", \"Maximum angle (degrees)\", null, { tags: [\"Basic\"] });\nWordCloud.prototype.publish(\"angleCount\", 5, \"number\", \"Number of different angles\", null, { tags: [\"Basic\"] });\nWordCloud.prototype.publish(\"padding\", 0, \"number\", \"Padding between words (pixels)\", null, { tags: [\"Intermediate\"] });\nWordCloud.prototype.publish(\"scaleMode\", \"linear\", \"set\", \"Text scaling mode\", [\"linear\", \"log\", \"sqrt\", \"pow\"], { tags: [\"Intermediate\"] });\nWordCloud.prototype.publish(\"spiral\", \"archimedean\", \"set\", \"Text scaling mode\", [\"archimedean\", \"rectangular\"], { tags: [\"Intermediate\"] });\nWordCloud.prototype.publish(\"offsetX\", 0, \"number\", \"X offset\", null, { tags: [\"Advanced\"] });\nWordCloud.prototype.publish(\"offsetY\", 0, \"number\", \"Y offset\", null, { tags: [\"Advanced\"] });\nWordCloud.prototype.publish(\"zoom\", 1, \"number\", \"Zoom\", null, { tags: [\"Advanced\"] });\n","export const PKG_NAME = \"__PACKAGE_NAME__\";\nexport const PKG_VERSION = \"__PACKAGE_VERSION__\";\nexport const BUILD_VERSION = \"__BUILD_VERSION__\";\n"],"names":["pi","Math","PI","tau","epsilon","tauEpsilon","Path","this","_x0","_y0","_x1","_y1","_","path","constant$3","x","__name","prototype","constructor","moveTo","y","closePath","lineTo","quadraticCurveTo","x1","y1","bezierCurveTo","x2","y2","arcTo","r","x0","y0","x21","y21","x01","y01","l01_2","Error","abs","x20","y20","l21_2","l20_2","l21","sqrt","l01","l","tan","acos","t01","t21","arc","a0","a1","ccw","dx","cos","dy","sin","cw","da","rect","w","h","toString","atan2","max","min","halfPi","asin","arcInnerRadius","d","innerRadius","arcOuterRadius","outerRadius","arcStartAngle","startAngle","arcEndAngle","endAngle","arcPadAngle","padAngle","intersect","x3","y3","x10","y10","x32","y32","t","cornerTangents","r1","rc","lo","ox","oy","x11","y11","x00","y00","d2","D","cx0","cy0","cx1","cy1","dx0","dy0","dx1","dy1","cx","cy","d3Arc","cornerRadius","constant","padRadius","context","buffer","r0","apply","arguments","t0","t1","a01","a11","a00","a10","da0","da1","ap","rp","rc0","rc1","p0","p1","oc","ax","ay","bx","by","kc","lc","centroid","a","length","Linear","_context","d3CurveLinear","p","d3Line","pointX","pointY","defined","curve","curveLinear","output","line","data","i","n","defined0","lineStart","lineEnd","point","d3Area","area","j","k","x0z","Array","y0z","areaStart","areaEnd","arealine","lineX0","lineY0","lineY1","lineX1","descending","b","NaN","identity$2","d3Pie","value","identity","sortValues","sort","pie","v","sum","index","arcs","pa","that","Basis","d3CurveBasis","Bundle","beta","_basis","_beta","_line","_point","_x","_y","push","d3CurveBundle","custom","bundle","_k","_x2","_y2","Cardinal","tension","d3CurveCardinal","cardinal","_l01_a","_l01_2a","_l12_a","_l12_2a","_l23_a","_l23_2a","m","CatmullRom","alpha","_alpha","x23","y23","pow","d3curveCatmullRom","catmullRom","sign","slope3","h0","h1","s0","s1","slope2","MonotoneX","monotoneX","Natural","controlPoints","d3CurveNatural","Step","_t","d3CurveStep","stepBefore","stepAfter","_t0","Object","create","call","px","py","i0","i1","slice","identity$1","translateX","translateY","number","scale","center","offset","bandwidth","round","entering","__axis","axis","orient","tickArguments","tickValues","tickFormat","tickSizeInner","tickSizeOuter","tickPadding","transform","values","ticks","domain","format","spacing","range","range0","range1","position","copy","selection","selectAll","tick","order","tickExit","exit","tickEnter","enter","append","attr","select","text","merge","insert","transition","isFinite","getAttribute","parentNode","remove","filter","each","tickSize","axisTop","axisRight","axisBottom","axisLeft","_Axis","SVGWidget","_origType","_origTimePattern","parser","parserInvert","formatter","d3Scale","d3Axis","d3Guides","_guideElement","svg","svgAxis","svgGuides","drawStartPosition","super","_drawStartPos","updateScale","lowValue","parse","low","highValue","high","forceNumeric","map","parseInvert","parseFormat","scalePos","retVal","type","isHorizontal","orientation","rangeRoundBands","rangeExtent","rangeRound","invert","pos","guideTarget","d3Select","_class","domNode","element","_prevOrientation","d3ScaleBand","paddingInner","ordinalPaddingInner","paddingOuter","ordinalPaddingOuter","ordinals_exists","ordinals","ordinalMappings_exists","mappings","ordinalMappings","d3ScaleLinear","low_exists","high_exists","tickFormat_exists","d3Format","d3ScalePow","exponent","powExponent","d3ScaleLog","base","logBase","d3ScaleTime","timePattern_exists","d3TimeParse","timePattern","d3TimeFormat","d3AxisLeft","d3AxisTop","d3AxisRight","d3AxisBottom","html","extend","delta","newLow","newHigh","width","height","tickCount","tickLength_exists","tickLength","customTicks","_d","label","adjustText","tickOverlapModulus","isHoriztontal","isLeft","isBottom","textSelection","style","fontFamily","fontSize_exists","fontSize","overlapMode","linebreak","wrap","deg","labelRotation","elm","bbox","node","getBBox","dyOff","calcTickOverlapModulus","bboxArr","getBoundingClientRect","right","left","calcOverflow","ignoreText","hidden","top","bottom","depth","tmpSvg","classID","tmpSvgG","shrinkToFit","_text","bandSize","re","words","split","reverse","lineNumber","fs","parseFloat","maxLinesPerBand","floor","minWordsPerLine","ceil","tspan","wordsOnLine","word","pop","join","getComputedTextLength","update","overlap","lowerPos","upperPos","padding","doPosition","svgLineBBox","svgText","title","svgTitleTransition","title_exists","classed","rerender","postUpdate","_element","Axis","publish","disable","optional","_type","_timePattern","_XYAxis","domainAxis","valueAxis","xAxis","yAxis","xyBrush","xBrush","yBrush","margin","focusChart","Utility","SimpleSelectionMixin","orientation_default","overlapMode_default","shrinkToFit_default","extend_default","d3Brush","on","brushMoved","brushMoved2","d3BrushX","d3BrushY","_prevBrush","resetSelection","parseData","parseValue","formatData","formatValue","parsedData","row","prevValue","cell","idx","columns","_retVal","yAxisStacked","svgRegions","svgDomainGuide","svgValueGuide","svgData","svgDataClipRect","svgFocus","svgBrush","id","_selection","widgetElement","target","chartsEnter","resizeBrushHandle","e","_skipSelection","skipSelection","selected","currSel","d3BrushSelection","dataPos","use2dSelection","pos2","valuePos","handleTypes","handlePath","s","d3Event","getAxisSize","host","calcMargin","_domNode","selectionMode","xAxisFocus","xAxisFocusHeight","xRight","xHeight","yTop","yWidth","xAxisOverlap","newXHeight","yAxisOverlap","newYWidth","updateRegions","regions","_palette","colorID","d3Hsl","brighter","_prevXAxisType","xAxisTitle_exists","xAxisTitle","xAxisType","colLen","xAxisOrdinalMapping","domainMin","xAxisDomainLow","d3Min","domainMax","xAxisDomainHigh","d3Max","yAxisDomainLow","indexOf","yAxisDomainHigh","maxCurrExtent","maxOtherExtent","xAxisGuideLines","render","yAxisGuideLines","updateBrush","updateFocusChart","chartsUpdate","currBrush","prevBrushSel","extent","tmp","ratio","move","syncAxis","layers","copyPropsTo","layerIdx","layer","layerColumns","masterColumns","col","layerColumnIndices","layerColumnIndex","column","layerData","indices","__hpcc_origRow","layerEnter","duration","layerUpdate","layerExit","class","resize","_selected","origRow","svgGlowID","selRows","rowToObj","setTimeout","click","lparam","XYAxis","mixin","publishProxy","tags","yAxisType","_Scatter","INDChart","ITooltip","xAxisGuideLines_default","yAxisGuideLines_default","xPos","yPos","interpolate","d3CurveStepBefore","d3CurveStepAfter","d3CurveMonotoneX","getScale","pointSizeScale","d3ScaleSqrt","pointColor","pointDarken","strokeColor","fillColor","lineColor","interpolateFill","interpolateDarken","areaColor","tooltipHTML","tooltipStyle","tooltipFormat","arr","color","rowIdx","series","_prevPointShape","mapShape","shape","switch","paletteID","useClonedPalette","cloneNotExists","pointShape","pointSizeColumnIdx","pointSizeColumn_exists","pointSizeColumn","d3Extent","flatData","flattenData","colIdx","size","maxPointSize","minPointSize","pointSize","areas","areasEnter","cssTag","interpolateFillOpacity","lines","linesEnter","data2","points","valueAnchor","valueBaseline","_idx","textColor","tooltip","hide","show","bind","dblclick","showValue","__publicField","multi","Scatter","implements","step","_Area","interpolate_default","interpolateFill_default","Area","_Column","_linearGap","textLocal","d3Local","stackedTextLocal","skipBringToTop","adjustedData","retVal2","formatPct","showValueAsPercentFormat","dataLen","direction","columnScale","xAxisSeriesPaddingInner","domainSums","seriesSums","columnLength","rowData","showValueAsPercent","forEach","showDomainTotal","reduce","hostData","axisSize","dataRow","dataRowIdx","columnGRect","columnGEnter","tooltipInnerTextEllipsedOnly","innerTextObj","isTruncated","domainLength","domainPos","upperValue","valueText","dm","dataMeta","seriesSum","domainSum","showValueFormat","upperValuePos","lowerValuePos","valueLength","innerTextHeight","innerTextFontSize","innerTextPadding","innerTextPadding_exists","dataRect","intersectRectRect","_rects","_texts","innerTextFontFamily_exists","innerTextFontFamily","textHeightOffset","showInnerText","innerText","clippedValueLength","calcInnerText","dataText","set","Text","colorStroke_default","valueFontFamily","valueFontSize","textSize","isPositive","leftSpace","rightSpace","topSpace","bottomSpace","noRoomInside","isOutside","noRoomOnExpectedSide","valueTextWidth","category","valueCentered","hideValue","get","anchor","colorFill","visible","value4pos","stackedTotalText","valueFontFamily_exists","origInnerText","fullWidth2","fullWidth3","excessWidth","letter","Column","_Bar","Bar","count","children","node_count","eachAfter","node_each","callback","current","next","node_eachBefore","nodes","node_eachAfter","node_sum","node_sort","compare","eachBefore","node_path","end","start","ancestor","leastCommonAncestor","parent","splice","aNodes","ancestors","bNodes","c","node_ancestors","node_descendants","node_leaves","leaves","node_links","root","links","source","hierarchy","child","childs","Node","valued","defaultChildren","computeHeight","node_copy","copyData","descendants","shuffle","array","random","enclose","circles","B","enclosesWeak","encloseBasis","extendBasis","enclosesWeakAll","enclosesNot","encloseBasis2","encloseBasis3","dr","encloseBasis1","r2","r21","r3","a2","a3","b2","b3","c2","c3","d1","d3","ab","xa","xb","ya","yb","A","C","place","intersects","score","circle","previous","packEnclose","aa","ca","sj","sk","pack","f","required","constantZero","constant$2","defaultRadius","d3Pack","radius","radiusLeaf","packChildren","translateChild","_Bubble","labelWidgets","I2DChart","d3Hierarchy","cloneData","element2","__viz_faChar","FAChar","char","colorFill_default","Bubble","_BubbleXY","BubbleXY","taskHead","taskTail","frame","timeout","interval","clockLast","clockNow","clockSkew","clock","performance","now","Date","setFrame","window","requestAnimationFrame","clearNow","Timer","_call","_time","_next","timerFlush","wake","nap","poke","delay","t2","time","Infinity","sleep","clearTimeout","clearInterval","setInterval","d3Bullet","vertical","ranges","bulvarRanges","markers","bulvarMarkers","measures","bulvarMeasures","bulvar","g","extentX","extentY","rangez","d3Descending","markerz","measurez","g2","empty","__chart__","w0","bulvarWidth","w1","i2","measure","marker","d3TimerFlush","restart","TypeError","stop","_Bullet","HTMLWidget","_hiddenColumns","bulletData","valueOf","titleColumn","subtitle","subtitleColumn","rangesColumn","measuresColumn","markersColumn","columnType","svgUpdate","bulletTitle","titleWidth","chart","keys","Bullet","ascending","ring","constant$1","contains","hole","ringContains","xi","yi","pj","xj","yj","segmentContains","collinear","within","q","noop$2","cases","contours","threshold","thresholdSturges","smooth","smoothLinear","tz","isArray","tickStep","contour","polygons","holes","isorings","polygon","coordinates","t3","fragmentByStart","fragmentByEnd","stitch","startIndex","endIndex","concat","unshift","v0","xt","yt","v1","_0","_1","thresholds","noop","blurX","sr","blurY","defaultX","defaultY","defaultWeight","d3ContourDensity","weight","o","density","values0","Float32Array","values1","wi","shift","geometry","transformPolygon","transformRing","transformPoint","cellSize","log","LN2","adder","Adder","reset","add","temp","bv","av","streamGeometry","stream","streamGeometryType","hasOwnProperty","streamObjectType","Feature","object","FeatureCollection","features","Sphere","sphere","Point","MultiPoint","LineString","streamLine","MultiLineString","Polygon","streamPolygon","MultiPolygon","GeometryCollection","geometries","closed","coordinate","polygonStart","polygonEnd","geoStream","areaSum","areaRingSum","areaStream","areaRingStart","areaRingEnd","result","areaPointFirst","areaPoint","boundsStream","boundsPoint","bounds","X0","Y0","Z0","X1","Y1","Z1","X2","Y2","Z2","centroidStream","centroidPoint","centroidLineStart","centroidLineEnd","centroidRingStart","centroidRingEnd","centroidPointFirstLine","centroidPointLine","z","centroidPointFirstRing","centroidPointRing","PathContext","_radius","pointRadius","lengthRing","lengthSum","lengthStream","lengthPointFirst","lengthPoint","PathString","_string","geoPath","projection","projectionStream","contextStream","pathArea","pathMeasure","pathBounds","pathCentroid","_circle","_Contour","_dataMinWeight","_dataMaxWeight","xAxisType_default","contourData","contourBandwidth","_vals","minValue","maxValue","showContourFill","contourStrokeColor","contourStrokeWidth","Contour","I1DChart","_Gantt","yAxisType_default","Gantt","CardinalClosed","CardinalOpen","_x3","_x4","_x5","_y3","_y4","_y5","curveCatmullRom","CatmullRomClosed","CatmullRomOpen","_typeof","Symbol","iterator","obj","classCallCheck","instance","Constructor","createClass","defineProperties","props","descriptor","enumerable","configurable","writable","defineProperty","key","protoProps","staticProps","_extends","assign","property","receiver","Function","desc","getOwnPropertyDescriptor","getPrototypeOf","getter","inherits","subClass","superClass","setPrototypeOf","__proto__","possibleConstructorReturn","self","ReferenceError","toConsumableArray","arr2","from","Annotation","_ref","_ref$x","_ref$y","nx","ny","_ref$dy","_ref$dx","_ref$color","subject","connector","note","className","_dx","_dy","_color","_className","setPosition","redrawSubject","clearComponents","setOffset","redrawConnector","redrawNote","setClassName","updatePosition","updateOffset","_ref2","_ref3","json","AnnotationCollection","annotations","accessors","accessorsInverse","newSettings","_this","setPositionWithAccessors","_editMode","editMode","updateEditMode","textWrap","updateTextWrap","drawText","notePadding","_this2","getNoteBBoxOffset","positionX","positionY","pointHandle","_ref$cx","_ref$cy","circleHandles","_ref2$cx","_ref2$cy","addHandles","_ref5","group","handles","_ref5$r","drag","container","leftRightDynamic","align","topBottomDynamic","orientationTopBottom","orientationLeftRight","noteAlignment","_ref$padding","_ref$bbox","_ref$offset","lineBuilder","_ref$curve","canvasContext","lineGen","builder","pathMethods","attrs","arcBuilder","arcShape","noteVertical","components","noteHorizontal","lineSetup","subjectType","annotation","subjectData","angle","radiusPadding","connectorLine","connectorData","connectorElbow","diffY","diffX","xe","ye","opposite","_angle","connectorCurve","createPoints","cHandles","updatePoint","event","mapHandles","anchors","diff","connectorArrow","_ref$scale","angleOffset","atan","connectorDot","line$$1","dot","subjectCircle","updateRadius","subjectRect","updateWidth","updateHeight","rHandles","subjectThreshold","subjectBadge","_ref$subjectData","_ref$type","typeSettings","notCornerOffset","placement","xleftcorner","xrightcorner","ytopcorner","ybottomcorner","xleft","xright","ytop","ybottom","circlebg","fill","pointer","notCornerPointerXY","bHandles","stroke","Type","dispatcher","noteContent","handler","addHandlers","component","name","offsetCornerX","offsetCornerY","init","mapX","mapY","builders","newWithClass","el","addAttrs","removeAttrs","currentAttrs","attributes","bboxWithoutHandles","offsetX","offsetY","subjectParams","_subject","_subject$components","_subject$handles","dragSubject","_this3","connectorParams","_connector","_connector$components","_connector$handles","endType","endScale","_this4","noteData","noteParams","lineType","_note","_note$components","_note$handles","dragNote","dragging","dragstarted","dragended","_noteAlignment","drawFunction","drawOnSVG","drawOnScreen","drawSubject","drawConnector","getNoteBBox","drawNoteContent","drawNote","sourceEvent","stopPropagation","_this5","customType","initialType","_init","_initialType","settings","_this6","d3NoteText","_Type","params","_this7","titleBBox","wrapLength","wrapSplitter","bgPadding","bgPaddingFinal","d3Callout","d3CalloutElbow","ThresholdMap","_d3Callout","lineHeight","selector","yOffset","collection","ids","annotationDispatcher","dispatch","sel","translatedAnnotations","draw","console","JSON","stringify","updateText","updatedAccessors","updateDisable","updateNotePadding","some","value2Angle","pointOnArc","indicatorTranslate","inner","rotation","indicatorTween","newAngle","d3Interpolate","arcTween","startInterpolate","endInterpolate","_Gauge","_d3Arc","_colorScale","scaleLinear","d3InterpolateHcl","_usageArc","_meanArc","_freeArc","_indInner","_indOuter","_centerTextG","_centerText","_bottomText","_tooltipG","_mainTooltip","tip","interrupt","datum","xOffset","annotationtip","d3Annotation","annotationCalloutElbow","calcSize","textElement","bb","widthTransform","heightTransform","calcWidth","maxDiameter","valueDescription","tickValueDescription","appendIndicator","titleDescription","colorDomain","colorRange","val","tickVal","tickValue","attrTween","emptyColor","tickColor","showTick","titleClickColor","titleColor","point2","Gauge","sortAscending","sortDescending","_Pie","_totalValue","d3LabelArc","_labelPositions","_smallValueLabelHeight","_labelWidthLimit","_quadIdxArr","_minLabelTop","_maxLabelBottom","_seriesValueFormatter","_seriesPercentageFormatter","tooltipTick_default","tooltipOffset_default","intersection","pointA","pointB","intersectCircle","calcOuterRadius","calcInnerRadius","innerRadius_exists","maxTextWidth","getLabelText","horizontalLimit","_size","showLabels","verticalLimit","minOuterRadius","calcSmallValueLabelHeight","totalVal","acc","smallCount","labelHeight","calcTotalValue","truncate","len","labelWidth","showSeriesValue","showSeriesPercentage","perc","selection2","strRow","selectByLabel","_slices","_labels","updateD3Pie","seriesValueFormat","seriesPercentageFormat","labelRadius","sortDataByValue","quad","getQuadrant","midAngle","mergedText","mid_angle","isLeftSide","adjustForOverlap","polyline","outerRadiusDelta","pos1","centerOnLabels","normalizeRadians","radians","rad","gY","gY2","heightDiff","absTop","yShift","prevTop","degreesToRadians","Pie","_HalfPie","_pos","_target","SVGElement","_widgetScale","HalfPie","_Heat","_domForeignObject","_domCanvas","_heat","radiusX","radiusY","simpleheat","maxWeight","maxWeight_exists","gradient","reversePalette","defaultGradient","radiusAsPercent","clear","blur","minOpacity","Heat","canvas","_canvas","document","getElementById","_ctx","getContext","_width","_height","_max","_data","Palette","rainbow","rX","rY","ellipse","_ellipse","_createCanvas","ctx","rX2","_r","rY2","shadowOffsetX","shadowOffsetY","shadowBlur","shadowColor","beginPath","grad","createLinearGradient","addColorStop","fillStyle","fillRect","_grad","getImageData","clearRect","globalAlpha","drawImage","colored","_colorize","putImageData","pixels","createElement","thirdPi","angles","d3HexBin","hexbin","binsById","bins","isNaN","py1","px1","pi2","pj2","px2","py2","bin","hexagon","centers","mesh","fragment","_HexBin","_hexbin","I2DAggrChart","tooltipValueFormat_default","seriesExtent","labelExtent","binSize","dataPoints","hexBinPoints","minBinPoints","maxBinPoints","HexBin","_Line","Line","_QuarterPie","QuarterPie","_QuartileCandlestick","_g","_leftLine","_rightLine","_midLine","_midOuterRect","_midInnerRect1","_midInnerRect2","_q0text","_q1text","_q2text","_q3text","_q4text","_q0val","_q1val","_q2val","_q3val","_q4val","valueSize","lineWidth","domainSize","edgePadding","candleWidth","candleWidth_exists","roundedCorners","q0x","q1x","q2x","q3x","dataTop","dataBottom","upperTextRotation","lowerTextRotation","textPadding","labelFontSize","sz","q4x","transX","transY","rotate","textScale","labelAnchor","innerRectColor","showValues","QuartileCandlestick","_Radar","setPointAttributes","half_size","half_h","half_w","domain_points","degrees2radians","max_label_h","max_label_w","isize","labels","max_val","xy","polar2cartesian","labelPaddingRatio","text_anchor","domains","value_guides","valueGuideRatios","mult","poly_points","domain_point","row_idx","value_guide_text","series_polygons","fillOpacity","col_idx","val_mult","point_elm","data_row","row_obj","pointElement","theta","cartesian2polar","radians2degrees","point_in_polygon","vs","inside","Radar","_RadialBar","_domainScale","_valueScale","_arcs","_axialAxis","_radialAxis","valueDomainHigh_exists","valueDomainHigh","valueMaxAngle","chartRadius","domainData","domainPadding","domainCircles","domainText","valueLines","degrees","valueColumn","transitionDelay","transitionDuration","indx","_current","RadialBar","palette","ordinal","myFormatter","num","strVal","_StatChart","_selectElement","_tickFormatter","_bellCurve","xAxisOverlapMode","xAxisTickFormat","yAxisHidden","_candle","stdDev","mean","standardDeviation","formatStdDev","quartile","quartiles","formatQ","mode","view","lazyRender","bellTicks","domainLow","domainHigh","sd","updateScatter","xAxisTicks","candleHeight","updateCandle","candleX","candleW","StatChart","_Step","TEXT","HTML","_Summary","_playIntervalIdx","_mainDiv","_headerDiv","_textDiv","_tag","playInterval","lookupFieldIdx","propID","defaultIdx","lookupFieldText","currentRow","summaryData","labelFieldIdx","hideLabel","iconFieldIdx","valueFieldIdx","moreIconIdx","moreTextIdx","hideMore","colorFillIdx","colorStrokeIdx","formattedData","icon","moreIcon","moreText","colorStroke","fixedSize","minWidth_exists","minWidth","minHeight_exists","minHeight","iconFontSize","headerFontSize","valueHTML","textFontSize","labelHTML","moreDivs","moreDivsUpdate","hideMoreWrapper","moreFontSize","moreWrapperHeight_exists","moreWrapperHeight","d3Rgb","darker","moreTextHTML","innerHTML","Summary","iconColumn","moreIconColumn","moreTextColumn","colorFillColumn","colorStrokeColumn","_playIntervalHandle","_renderCount","_SummaryC","CanvasWidget","minDimension","sizeRatio","fontSizeRatio","labelIdx","labelColumn","valueIdx","bgColorIdx","fontColorIdx","iconIdx","bgColor","fontColor","mainFontSize","paddingSizeRatio","subFontSize","iconSize","iconSizeRatio","anchorMode","textBaseline","font","measurement","measureText","getTextOffsetX","fillText","drawIcon","iconBaseline","fontSizeMult","getTextOffsetY","iconOpacity","faChar","iconAnchor","valueOpacity","labelOpacity","SummaryC","cloudRadians","ch","d3Cloud","cloud","cloudText","cloudFont","cloudFontSize","fontStyle","cloudFontNormal","fontWeight","cloudRotate","cloudPadding","spiral","archimedeanSpiral","timeInterval","timer","cloudCanvas","strokeStyle","textAlign","board","tag","startX","startY","maxDelta","dt","dxdy","cloudCollide","collideRects","sprite","sw","lx","sx","msx","last","functor","contextAndRatio","zeroArray","cloudSprite","hasText","cloudBounds","spirals","di","maxh","save","cr","wcr","wsr","hcr","hsr","translate","strokeText","restore","xoff","yoff","w32","seen","seenRow","b0","b1","rectangularSpiral","archimedean","rectangular","_WordCloud","_prevOffsetX","_prevOffsetY","_prevZoom","_root","_d3Cloud","_d3Zoom","zoom","calcData","__viz_label","__viz_weight","__viz_row","d3Zoom","scaleExtent","evt","zoomed","scaler","scaleMode","fontSizeFrom","fontSizeTo","angleDomain","angleCount","angleFrom","angleTo","toLowerCase","trim","WordCloud"],"mappings":"8nBAAA,IAAIA,EAAKC,KAAKC,GACVC,EAAM,EAAIH,EACVI,EAAU,KACVC,EAAaF,EAAMC,EAEvB,SAASE,IACPC,KAAKC,IAAMD,KAAKE,IAChBF,KAAKG,IAAMH,KAAKI,IAAM,KACtBJ,KAAKK,EAAI,EACX,CAEA,SAASC,IACP,OAAO,IAAIP,CACb,CCbe,SAAAQ,EAASC,GACtB,oBACE,OAAOA,CACT,EAFO,WAGT,CDCSC,EAAAV,EAAA,QAMAU,EAAAH,EAAA,QAITP,EAAKW,UAAYJ,EAAKI,UAAY,CAChCC,YAAaZ,EACba,OAAQH,EAAA,SAASD,EAAGK,GAClBb,KAAKK,GAAK,KAAOL,KAAKC,IAAMD,KAAKG,KAAOK,GAAK,KAAOR,KAAKE,IAAMF,KAAKI,KAAOS,EAC7E,EAFQ,UAGRC,UAAWL,EAAA,WACQ,OAAbT,KAAKG,MACPH,KAAKG,IAAMH,KAAKC,IAAKD,KAAKI,IAAMJ,KAAKE,IACrCF,KAAKK,GAAK,IAEd,EALW,aAMXU,OAAQN,EAAA,SAASD,EAAGK,GAClBb,KAAKK,GAAK,KAAOL,KAAKG,KAAOK,GAAK,KAAOR,KAAKI,KAAOS,EACvD,EAFQ,UAGRG,iBAAkBP,EAAA,SAASQ,EAAIC,EAAIV,EAAGK,GACpCb,KAAKK,GAAK,MAAQY,EAAM,MAAQC,EAAM,KAAOlB,KAAKG,KAAOK,GAAK,KAAOR,KAAKI,KAAOS,EACnF,EAFkB,oBAGlBM,cAAeV,EAAA,SAASQ,EAAIC,EAAIE,EAAIC,EAAIb,EAAGK,GACzCb,KAAKK,GAAK,MAAQY,EAAM,MAAQC,EAAM,MAAQE,EAAM,MAAQC,EAAM,KAAOrB,KAAKG,KAAOK,GAAK,KAAOR,KAAKI,KAAOS,EAC/G,EAFe,iBAGfS,MAAOb,EAAA,SAASQ,EAAIC,EAAIE,EAAIC,EAAIE,GAC9BN,GAAMA,EAAIC,GAAMA,EAAIE,GAAMA,EAAIC,GAAMA,EAAIE,GAAKA,EAC7C,IAAIC,EAAKxB,KAAKG,IACVsB,EAAKzB,KAAKI,IACVsB,EAAMN,EAAKH,EACXU,EAAMN,EAAKH,EACXU,EAAMJ,EAAKP,EACXY,EAAMJ,EAAKP,EACXY,EAAQF,EAAMA,EAAMC,EAAMA,EAG9B,GAAIN,EAAI,EAAG,MAAM,IAAIQ,MAAM,oBAAsBR,GAGjD,GAAiB,OAAbvB,KAAKG,IACPH,KAAKK,GAAK,KAAOL,KAAKG,IAAMc,GAAM,KAAOjB,KAAKI,IAAMc,QACtD,GAGWY,EAAQjC,EAAS,GAKjBH,KAAKsC,IAAIH,EAAMH,EAAMC,EAAMC,GAAO/B,GAAa0B,EAKrD,CACH,IAAIU,EAAMb,EAAKI,EACXU,EAAMb,EAAKI,EACXU,EAAQT,EAAMA,EAAMC,EAAMA,EAC1BS,EAAQH,EAAMA,EAAMC,EAAMA,EAC1BG,EAAM3C,KAAK4C,KAAKH,GAChBI,EAAM7C,KAAK4C,KAAKR,GAChBU,EAAIjB,EAAI7B,KAAK+C,KAAKhD,EAAKC,KAAKgD,MAAMP,EAAQL,EAAQM,IAAU,EAAIC,EAAME,KAAS,GAC/EI,EAAMH,EAAID,EACVK,EAAMJ,EAAIH,EAGV3C,KAAKsC,IAAIW,EAAM,GAAK9C,IACtBG,KAAKK,GAAK,KAAOY,EAAK0B,EAAMf,GAAO,KAAOV,EAAKyB,EAAMd,IAGvD7B,KAAKK,GAAK,IAAMkB,EAAI,IAAMA,EAAI,WAAaM,EAAMI,EAAML,EAAMM,GAAQ,KAAOlC,KAAKG,IAAMc,EAAK2B,EAAMlB,GAAO,KAAO1B,KAAKI,IAAMc,EAAK0B,EAAMjB,EACxI,MArBE3B,KAAKK,GAAK,KAAOL,KAAKG,IAAMc,GAAM,KAAOjB,KAAKI,IAAMc,QAsBxD,EA/CO,SAgDP2B,IAAKpC,EAAA,SAASD,EAAGK,EAAGU,EAAGuB,EAAIC,EAAIC,GAC7BxC,GAAKA,EAAGK,GAAKA,EAAWmC,IAAQA,EAChC,IAAIC,GADY1B,GAAKA,GACR7B,KAAKwD,IAAIJ,GAClBK,EAAK5B,EAAI7B,KAAK0D,IAAIN,GAClBtB,EAAKhB,EAAIyC,EACTxB,EAAKZ,EAAIsC,EACTE,EAAK,EAAIL,EACTM,EAAKN,EAAMF,EAAKC,EAAKA,EAAKD,EAG9B,GAAIvB,EAAI,EAAG,MAAM,IAAIQ,MAAM,oBAAsBR,GAGhC,OAAbvB,KAAKG,IACPH,KAAKK,GAAK,IAAMmB,EAAK,IAAMC,GAIpB/B,KAAKsC,IAAIhC,KAAKG,IAAMqB,GAAM3B,GAAWH,KAAKsC,IAAIhC,KAAKI,IAAMqB,GAAM5B,KACtEG,KAAKK,GAAK,IAAMmB,EAAK,IAAMC,GAIxBF,IAGD+B,EAAK,IAAGA,EAAKA,EAAK1D,EAAMA,GAGxB0D,EAAKxD,EACPE,KAAKK,GAAK,IAAMkB,EAAI,IAAMA,EAAI,QAAU8B,EAAK,KAAO7C,EAAIyC,GAAM,KAAOpC,EAAIsC,GAAM,IAAM5B,EAAI,IAAMA,EAAI,QAAU8B,EAAK,KAAOrD,KAAKG,IAAMqB,GAAM,KAAOxB,KAAKI,IAAMqB,GAIrJ6B,EAAKzD,IACZG,KAAKK,GAAK,IAAMkB,EAAI,IAAMA,EAAI,SAAW+B,GAAM7D,GAAO,IAAM4D,EAAK,KAAOrD,KAAKG,IAAMK,EAAIe,EAAI7B,KAAKwD,IAAIH,IAAO,KAAO/C,KAAKI,IAAMS,EAAIU,EAAI7B,KAAK0D,IAAIL,KAElJ,EArCK,OAsCLQ,KAAM9C,EAAA,SAASD,EAAGK,EAAG2C,EAAGC,GACtBzD,KAAKK,GAAK,KAAOL,KAAKC,IAAMD,KAAKG,KAAOK,GAAK,KAAOR,KAAKE,IAAMF,KAAKI,KAAOS,GAAK,MAAQ2C,EAAK,MAAQC,EAAK,KAAQD,EAAK,GACzH,EAFM,QAGNE,SAAUjD,EAAA,WACR,OAAOT,KAAKK,CACd,EAFU,aC5HGI,EAAAF,EAAA,cCAR,IAAIyB,EAAMtC,KAAKsC,IACX2B,EAAQjE,KAAKiE,MACbT,EAAMxD,KAAKwD,IACXU,EAAMlE,KAAKkE,IACXC,EAAMnE,KAAKmE,IACXT,EAAM1D,KAAK0D,IACXd,EAAO5C,KAAK4C,KAEZzC,EAAU,MACVJ,EAAKC,KAAKC,GACVmE,EAASrE,EAAK,EACdG,EAAM,EAAIH,EAEd,SAASiD,EAAKlC,GACnB,OAAOA,EAAI,EAAI,EAAIA,KAASf,EAAKC,KAAKgD,KAAKlC,EAC7C,CAEO,SAASuD,EAAKvD,GACnB,OAAOA,GAAK,EAAIsD,EAAStD,OAAWsD,EAASpE,KAAKqE,KAAKvD,EACzD,CCfA,SAASwD,EAAeC,GACtB,OAAOA,EAAEC,WACX,CAEA,SAASC,EAAeF,GACtB,OAAOA,EAAEG,WACX,CAEA,SAASC,EAAcJ,GACrB,OAAOA,EAAEK,UACX,CAEA,SAASC,EAAYN,GACnB,OAAOA,EAAEO,QACX,CAEA,SAASC,EAAYR,GACnB,OAAOA,GAAKA,EAAES,QAChB,CAEA,SAASC,EAAUnD,EAAIC,EAAIR,EAAIC,EAAIE,EAAIC,EAAIuD,EAAIC,GAC7C,IAAIC,EAAM7D,EAAKO,EAAIuD,EAAM7D,EAAKO,EAC1BuD,EAAMJ,EAAKxD,EAAI6D,EAAMJ,EAAKxD,EAC1B6D,EAAID,EAAMH,EAAME,EAAMD,EAC1B,KAAIG,EAAIA,EAAIrF,GAEZ,MAAO,CAAC2B,GADR0D,GAAKF,GAAOvD,EAAKJ,GAAM4D,GAAOzD,EAAKJ,IAAO8D,GACzBJ,EAAKrD,EAAKyD,EAAIH,EACjC,CAIA,SAASI,EAAe3D,EAAIC,EAAIR,EAAIC,EAAIkE,EAAIC,EAAIhC,GAC9C,IAAIzB,EAAMJ,EAAKP,EACXY,EAAMJ,EAAKP,EACXoE,GAAMjC,EAAKgC,GAAMA,GAAM/C,EAAKV,EAAMA,EAAMC,EAAMA,GAC9C0D,EAAKD,EAAKzD,EACV2D,GAAMF,EAAK1D,EACX6D,EAAMjE,EAAK+D,EACXG,EAAMjE,EAAK+D,EACXV,EAAM7D,EAAKsE,EACXR,EAAM7D,EAAKsE,EACXG,GAAOF,EAAMX,GAAO,EACpBc,GAAOF,EAAMX,GAAO,EACpB9B,EAAK6B,EAAMW,EACXtC,EAAK4B,EAAMW,EACXG,EAAK5C,EAAKA,EAAKE,EAAKA,EACpB5B,EAAI6D,EAAKC,EACTS,EAAIL,EAAMV,EAAMD,EAAMY,EACtBzB,GAAKd,EAAK,GAAI,EAAK,GAAKb,EAAKsB,EAAI,EAAGrC,EAAIA,EAAIsE,EAAKC,EAAIA,IACrDC,GAAOD,EAAI3C,EAAKF,EAAKgB,GAAK4B,EAC1BG,IAAQF,EAAI7C,EAAKE,EAAKc,GAAK4B,EAC3BI,GAAOH,EAAI3C,EAAKF,EAAKgB,GAAK4B,EAC1BK,IAAQJ,EAAI7C,EAAKE,EAAKc,GAAK4B,EAC3BM,EAAMJ,EAAMJ,EACZS,EAAMJ,EAAMJ,EACZS,EAAMJ,EAAMN,EACZW,EAAMJ,EAAMN,EAMhB,OAFIO,EAAMA,EAAMC,EAAMA,EAAMC,EAAMA,EAAMC,EAAMA,IAAKP,EAAME,EAAKD,EAAME,GAE7D,CACLK,GAAIR,EACJS,GAAIR,EACJpE,KAAM2D,EACN1D,KAAM2D,EACNC,IAAKM,GAAOX,EAAK7D,EAAI,GACrBmE,IAAKM,GAAOZ,EAAK7D,EAAI,GAEzB,CAEe,SAAAkF,IACb,IAAIvC,EAAcF,EACdI,EAAcD,EACduC,EAAeC,EAAS,GACxBC,EAAY,KACZtC,EAAaD,EACbG,EAAWD,EACXG,EAAWD,EACXoC,EAAU,KAEd,SAAShE,IACP,IAAIiE,EACAvF,EACAwF,GAAM7C,EAAY8C,MAAMhH,KAAMiH,WAC9B7B,GAAMhB,EAAY4C,MAAMhH,KAAMiH,WAC9BnE,EAAKwB,EAAW0C,MAAMhH,KAAMiH,WAAanD,EACzCf,EAAKyB,EAASwC,MAAMhH,KAAMiH,WAAanD,EACvCR,EAAKtB,EAAIe,EAAKD,GACdO,EAAKN,EAAKD,EAQd,GANK+D,IAASA,EAAUC,EAASxG,KAG7B8E,EAAK2B,IAAIxF,EAAI6D,EAAIA,EAAK2B,EAAIA,EAAKxF,GAG7B6D,EAAKvF,EAA6B,GAG/ByD,EAAK1D,EAAMC,EAClBgH,EAAQjG,OAAOwE,EAAKlC,EAAIJ,GAAKsC,EAAKhC,EAAIN,IACtC+D,EAAQhE,IAAI,EAAG,EAAGuC,EAAItC,EAAIC,GAAKM,GAC3B0D,EAAKlH,IACPgH,EAAQjG,OAAOmG,EAAK7D,EAAIH,GAAKgE,EAAK3D,EAAIL,IACtC8D,EAAQhE,IAAI,EAAG,EAAGkE,EAAIhE,EAAID,EAAIO,QAK7B,CACH,IAWI6D,EACAC,EAZAC,EAAMtE,EACNuE,EAAMtE,EACNuE,EAAMxE,EACNyE,EAAMxE,EACNyE,EAAMlE,EACNmE,EAAMnE,EACNoE,EAAKhD,EAASsC,MAAMhH,KAAMiH,WAAa,EACvCU,EAAMD,EAAK7H,IAAa+G,GAAaA,EAAUI,MAAMhH,KAAMiH,WAAa3E,EAAKyE,EAAKA,EAAK3B,EAAKA,IAC5FC,EAAKxB,EAAI7B,EAAIoD,EAAK2B,GAAM,GAAIL,EAAaM,MAAMhH,KAAMiH,YACrDW,EAAMvC,EACNwC,EAAMxC,EAKV,GAAIsC,EAAK9H,EAAS,CAChB,IAAIiI,EAAK/D,EAAK4D,EAAKZ,EAAK3D,EAAIsE,IACxBK,EAAKhE,EAAK4D,EAAKvC,EAAKhC,EAAIsE,KACvBF,GAAY,EAALM,GAAUjI,GAA8ByH,GAArBQ,GAAOzE,EAAK,GAAI,EAAgBkE,GAAOO,IACjEN,EAAM,EAAGF,EAAMC,GAAOzE,EAAKC,GAAM,IACjC0E,GAAY,EAALM,GAAUlI,GAA8BuH,GAArBW,GAAO1E,EAAK,GAAI,EAAgBgE,GAAOU,IACjEN,EAAM,EAAGL,EAAMC,GAAOvE,EAAKC,GAAM,EACxC,CAEA,IAAInB,EAAMwD,EAAKlC,EAAIkE,GACfvF,EAAMuD,EAAKhC,EAAIgE,GACftC,EAAMiC,EAAK7D,EAAIqE,GACfxC,EAAMgC,EAAK3D,EAAImE,GAGnB,GAAIlC,EAAKxF,EAAS,CAChB,IAIImI,EAJAvC,EAAML,EAAKlC,EAAImE,GACf3B,EAAMN,EAAKhC,EAAIiE,GACf1B,EAAMoB,EAAK7D,EAAIoE,GACf1B,GAAMmB,EAAK3D,EAAIkE,GAInB,GAAIhE,EAAK7D,IAAOuI,EAAKrD,EAAU/C,EAAKC,EAAK8D,EAAKC,GAAKH,EAAKC,EAAKZ,EAAKC,IAAO,CACvE,IAAIkD,GAAKrG,EAAMoG,EAAG,GACdE,GAAKrG,EAAMmG,EAAG,GACdG,GAAK1C,EAAMuC,EAAG,GACdI,GAAK1C,EAAMsC,EAAG,GACdK,GAAK,EAAIjF,EAAIV,GAAMuF,GAAKE,GAAKD,GAAKE,KAAO9F,EAAK2F,GAAKA,GAAKC,GAAKA,IAAM5F,EAAK6F,GAAKA,GAAKC,GAAKA,MAAQ,GAC/FE,GAAKhG,EAAK0F,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,IACzCJ,EAAM/D,EAAIwB,GAAK0B,EAAKuB,KAAOD,GAAK,IAChCR,EAAMhE,EAAIwB,GAAKD,EAAKkD,KAAOD,GAAK,GAClC,CACF,CAGMZ,EAAM5H,EAGHgI,EAAMhI,GACbqH,EAAK/B,EAAeQ,EAAKC,GAAKhE,EAAKC,EAAKuD,EAAIyC,EAAKxE,GACjD8D,EAAKhC,EAAeM,EAAKC,EAAKZ,EAAKC,EAAKK,EAAIyC,EAAKxE,GAEjDwD,EAAQjG,OAAOsG,EAAGX,GAAKW,EAAGtF,IAAKsF,EAAGV,GAAKU,EAAGrF,KAGtCgG,EAAMxC,EAAIwB,EAAQhE,IAAIqE,EAAGX,GAAIW,EAAGV,GAAIqB,EAAKlE,EAAMuD,EAAGrF,IAAKqF,EAAGtF,KAAM+B,EAAMwD,EAAGtF,IAAKsF,EAAGvF,MAAOyB,IAI1FwD,EAAQhE,IAAIqE,EAAGX,GAAIW,EAAGV,GAAIqB,EAAKlE,EAAMuD,EAAGrF,IAAKqF,EAAGtF,KAAM+B,EAAMuD,EAAGxB,IAAKwB,EAAGzB,MAAOpC,GAC9EwD,EAAQhE,IAAI,EAAG,EAAGuC,EAAIzB,EAAMuD,EAAGV,GAAKU,EAAGxB,IAAKwB,EAAGX,GAAKW,EAAGzB,KAAM9B,EAAMwD,EAAGX,GAAKW,EAAGzB,IAAKyB,EAAGZ,GAAKY,EAAG1B,MAAOpC,GACrGwD,EAAQhE,IAAIsE,EAAGZ,GAAIY,EAAGX,GAAIqB,EAAKlE,EAAMwD,EAAGzB,IAAKyB,EAAG1B,KAAM9B,EAAMwD,EAAGtF,IAAKsF,EAAGvF,MAAOyB,MAK7EwD,EAAQjG,OAAOgB,EAAKC,GAAMgF,EAAQhE,IAAI,EAAG,EAAGuC,EAAIgC,EAAKC,GAAMhE,IArB1CwD,EAAQjG,OAAOgB,EAAKC,GAyBpCkF,EAAKlH,GAAc2H,EAAM3H,EAGtB+H,EAAM/H,GACbqH,EAAK/B,EAAeL,EAAKC,EAAKU,EAAKC,EAAKqB,GAAKa,EAAKvE,GAClD8D,EAAKhC,EAAevD,EAAKC,EAAK8D,EAAKC,GAAKmB,GAAKa,EAAKvE,GAElDwD,EAAQ9F,OAAOmG,EAAGX,GAAKW,EAAGtF,IAAKsF,EAAGV,GAAKU,EAAGrF,KAGtC+F,EAAMvC,EAAIwB,EAAQhE,IAAIqE,EAAGX,GAAIW,EAAGV,GAAIoB,EAAKjE,EAAMuD,EAAGrF,IAAKqF,EAAGtF,KAAM+B,EAAMwD,EAAGtF,IAAKsF,EAAGvF,MAAOyB,IAI1FwD,EAAQhE,IAAIqE,EAAGX,GAAIW,EAAGV,GAAIoB,EAAKjE,EAAMuD,EAAGrF,IAAKqF,EAAGtF,KAAM+B,EAAMuD,EAAGxB,IAAKwB,EAAGzB,MAAOpC,GAC9EwD,EAAQhE,IAAI,EAAG,EAAGkE,EAAIpD,EAAMuD,EAAGV,GAAKU,EAAGxB,IAAKwB,EAAGX,GAAKW,EAAGzB,KAAM9B,EAAMwD,EAAGX,GAAKW,EAAGzB,IAAKyB,EAAGZ,GAAKY,EAAG1B,KAAMpC,GACpGwD,EAAQhE,IAAIsE,EAAGZ,GAAIY,EAAGX,GAAIoB,EAAKjE,EAAMwD,EAAGzB,IAAKyB,EAAG1B,KAAM9B,EAAMwD,EAAGtF,IAAKsF,EAAGvF,MAAOyB,OAKrER,IAAI,EAAG,EAAGkE,EAAIQ,EAAKD,EAAKjE,GArBIwD,EAAQ9F,OAAO+D,EAAKC,EAsB/D,MAhHqB8B,EAAQjG,OAAO,EAAG,GAoHvC,GAFAiG,EAAQ/F,YAEJgG,EAAQ,OAAOD,EAAU,KAAMC,EAAS,IAAM,IACpD,CAwCA,OA7KSrG,EAAAoC,EAAA,OAuITA,EAAI0F,SAAW,WACb,IAAIhH,IAAM2C,EAAY8C,MAAMhH,KAAMiH,aAAc7C,EAAY4C,MAAMhH,KAAMiH,YAAc,EAClFuB,IAAMlE,EAAW0C,MAAMhH,KAAMiH,aAAczC,EAASwC,MAAMhH,KAAMiH,YAAc,EAAIxH,EAAK,EAC3F,MAAO,CAACyD,EAAIsF,GAAKjH,EAAG6B,EAAIoF,GAAKjH,EAC/B,EAEAsB,EAAIqB,YAAc,SAAS7D,GACzB,OAAO4G,UAAUwB,QAAUvE,EAA2B,mBAAN7D,EAAmBA,EAAIsG,GAAUtG,GAAIwC,GAAOqB,CAC9F,EAEArB,EAAIuB,YAAc,SAAS/D,GACzB,OAAO4G,UAAUwB,QAAUrE,EAA2B,mBAAN/D,EAAmBA,EAAIsG,GAAUtG,GAAIwC,GAAOuB,CAC9F,EAEAvB,EAAI6D,aAAe,SAASrG,GAC1B,OAAO4G,UAAUwB,QAAU/B,EAA4B,mBAANrG,EAAmBA,EAAIsG,GAAUtG,GAAIwC,GAAO6D,CAC/F,EAEA7D,EAAI+D,UAAY,SAASvG,GACvB,OAAO4G,UAAUwB,QAAU7B,EAAiB,MAALvG,EAAY,KAAoB,mBAANA,EAAmBA,EAAIsG,GAAUtG,GAAIwC,GAAO+D,CAC/G,EAEA/D,EAAIyB,WAAa,SAASjE,GACxB,OAAO4G,UAAUwB,QAAUnE,EAA0B,mBAANjE,EAAmBA,EAAIsG,GAAUtG,GAAIwC,GAAOyB,CAC7F,EAEAzB,EAAI2B,SAAW,SAASnE,GACtB,OAAO4G,UAAUwB,QAAUjE,EAAwB,mBAANnE,EAAmBA,EAAIsG,GAAUtG,GAAIwC,GAAO2B,CAC3F,EAEA3B,EAAI6B,SAAW,SAASrE,GACtB,OAAO4G,UAAUwB,QAAU/D,EAAwB,mBAANrE,EAAmBA,EAAIsG,GAAUtG,GAAIwC,GAAO6B,CAC3F,EAEA7B,EAAIgE,QAAU,SAASxG,GACrB,OAAO4G,UAAUwB,QAAW5B,EAAe,MAALxG,EAAY,KAAOA,EAAIwC,GAAOgE,CACtE,EAEOhE,CACT,CCpQA,SAAS6F,EAAO7B,GACd7G,KAAK2I,SAAW9B,CAClB,CA0Be,SAAA+B,EAAS/B,GACtB,OAAO,IAAI6B,EAAO7B,EACpB,CC9BO,SAASrG,EAAEqI,GAChB,OAAOA,EAAE,EACX,CAEO,SAAShI,EAAEgI,GAChB,OAAOA,EAAE,EACX,CCDe,SAAAC,IACb,IAAItI,EAAIuI,EACJlI,EAAImI,EACJC,EAAUtC,GAAS,GACnBE,EAAU,KACVqC,EAAQC,EACRC,EAAS,KAEb,SAASC,EAAKC,GACZ,IAAIC,EAEAtF,EAEA6C,EAHA0C,EAAIF,EAAKb,OAETgB,GAAW,EAKf,IAFe,MAAX5C,IAAiBuC,EAASF,EAAMpC,EAASxG,MAExCiJ,EAAI,EAAGA,GAAKC,IAAKD,IACdA,EAAIC,GAAKP,EAAQhF,EAAIqF,EAAKC,GAAIA,EAAGD,MAAWG,KAC5CA,GAAYA,GAAUL,EAAOM,cACrBC,WAEVF,GAAUL,EAAOQ,OAAOpJ,EAAEyD,EAAGsF,EAAGD,IAAQzI,EAAEoD,EAAGsF,EAAGD,IAGtD,GAAIxC,EAAQ,OAAOsC,EAAS,KAAMtC,EAAS,IAAM,IACnD,CAsBA,OAxCSrG,EAAA4I,EAAA,QAoBTA,EAAK7I,EAAI,SAASH,GAChB,OAAO4G,UAAUwB,QAAUjI,EAAiB,mBAANH,EAAmBA,EAAIsG,GAAUtG,GAAIgJ,GAAQ7I,CACrF,EAEA6I,EAAKxI,EAAI,SAASR,GAChB,OAAO4G,UAAUwB,QAAU5H,EAAiB,mBAANR,EAAmBA,EAAIsG,GAAUtG,GAAIgJ,GAAQxI,CACrF,EAEAwI,EAAKJ,QAAU,SAAS5I,GACtB,OAAO4G,UAAUwB,QAAUQ,EAAuB,mBAAN5I,EAAmBA,EAAIsG,IAAWtG,GAAIgJ,GAAQJ,CAC5F,EAEAI,EAAKH,MAAQ,SAAS7I,GACpB,OAAO4G,UAAUwB,QAAUS,EAAQ7I,EAAc,MAAXwG,IAAoBuC,EAASF,EAAMrC,IAAWwC,GAAQH,CAC9F,EAEAG,EAAKxC,QAAU,SAASxG,GACtB,OAAO4G,UAAUwB,QAAe,MAALpI,EAAYwG,EAAUuC,EAAS,KAAOA,EAASF,EAAMrC,EAAUxG,GAAIgJ,GAAQxC,CACxG,EAEOwC,CACT,CChDe,SAAAQ,IACb,IAAIrI,EAAKuH,EACL9H,EAAK,KACLQ,EAAKkF,EAAS,GACdzF,EAAK8H,EACLC,EAAUtC,GAAS,GACnBE,EAAU,KACVqC,EAAQC,EACRC,EAAS,KAEb,SAASU,EAAKR,GACZ,IAAIC,EACAQ,EACAC,EAEA/F,EAEA6C,EAHA0C,EAAIF,EAAKb,OAETgB,GAAW,EAEXQ,EAAM,IAAIC,MAAMV,GAChBW,EAAM,IAAID,MAAMV,GAIpB,IAFe,MAAX3C,IAAiBuC,EAASF,EAAMpC,EAASxG,MAExCiJ,EAAI,EAAGA,GAAKC,IAAKD,EAAG,CACvB,KAAMA,EAAIC,GAAKP,EAAQhF,EAAIqF,EAAKC,GAAIA,EAAGD,MAAWG,EAChD,GAAIA,GAAYA,EACdM,EAAIR,EACJH,EAAOgB,YACPhB,EAAOM,gBACF,CAGL,IAFAN,EAAOO,UACPP,EAAOM,YACFM,EAAIT,EAAI,EAAGS,GAAKD,IAAKC,EACxBZ,EAAOQ,MAAMK,EAAID,GAAIG,EAAIH,IAE3BZ,EAAOO,UACPP,EAAOiB,SACT,CAEEZ,IACFQ,EAAIV,IAAM/H,EAAGyC,EAAGsF,EAAGD,GAAOa,EAAIZ,IAAM9H,EAAGwC,EAAGsF,EAAGD,GAC7CF,EAAOQ,MAAM3I,GAAMA,EAAGgD,EAAGsF,EAAGD,GAAQW,EAAIV,GAAIrI,GAAMA,EAAG+C,EAAGsF,EAAGD,GAAQa,EAAIZ,IAE3E,CAEA,GAAIzC,EAAQ,OAAOsC,EAAS,KAAMtC,EAAS,IAAM,IACnD,CAEA,SAASwD,IACP,OAAOjB,IAAOJ,QAAQA,GAASC,MAAMA,GAAOrC,QAAQA,EACtD,CAmDA,OA3FSpG,EAAAqJ,EAAA,QAsCArJ,EAAA6J,EAAA,YAITR,EAAKtJ,EAAI,SAASH,GAChB,OAAO4G,UAAUwB,QAAUjH,EAAkB,mBAANnB,EAAmBA,EAAIsG,GAAUtG,GAAIY,EAAK,KAAM6I,GAAQtI,CACjG,EAEAsI,EAAKtI,GAAK,SAASnB,GACjB,OAAO4G,UAAUwB,QAAUjH,EAAkB,mBAANnB,EAAmBA,EAAIsG,GAAUtG,GAAIyJ,GAAQtI,CACtF,EAEAsI,EAAK7I,GAAK,SAASZ,GACjB,OAAO4G,UAAUwB,QAAUxH,EAAU,MAALZ,EAAY,KAAoB,mBAANA,EAAmBA,EAAIsG,GAAUtG,GAAIyJ,GAAQ7I,CACzG,EAEA6I,EAAKjJ,EAAI,SAASR,GAChB,OAAO4G,UAAUwB,QAAUhH,EAAkB,mBAANpB,EAAmBA,EAAIsG,GAAUtG,GAAIa,EAAK,KAAM4I,GAAQrI,CACjG,EAEAqI,EAAKrI,GAAK,SAASpB,GACjB,OAAO4G,UAAUwB,QAAUhH,EAAkB,mBAANpB,EAAmBA,EAAIsG,GAAUtG,GAAIyJ,GAAQrI,CACtF,EAEAqI,EAAK5I,GAAK,SAASb,GACjB,OAAO4G,UAAUwB,QAAUvH,EAAU,MAALb,EAAY,KAAoB,mBAANA,EAAmBA,EAAIsG,GAAUtG,GAAIyJ,GAAQ5I,CACzG,EAEA4I,EAAKS,OACLT,EAAKU,OAAS,WACZ,OAAOF,IAAW9J,EAAEgB,GAAIX,EAAEY,EAC5B,EAEAqI,EAAKW,OAAS,WACZ,OAAOH,IAAW9J,EAAEgB,GAAIX,EAAEK,EAC5B,EAEA4I,EAAKY,OAAS,WACZ,OAAOJ,IAAW9J,EAAES,GAAIJ,EAAEY,EAC5B,EAEAqI,EAAKb,QAAU,SAAS5I,GACtB,OAAO4G,UAAUwB,QAAUQ,EAAuB,mBAAN5I,EAAmBA,EAAIsG,IAAWtG,GAAIyJ,GAAQb,CAC5F,EAEAa,EAAKZ,MAAQ,SAAS7I,GACpB,OAAO4G,UAAUwB,QAAUS,EAAQ7I,EAAc,MAAXwG,IAAoBuC,EAASF,EAAMrC,IAAWiD,GAAQZ,CAC9F,EAEAY,EAAKjD,QAAU,SAASxG,GACtB,OAAO4G,UAAUwB,QAAe,MAALpI,EAAYwG,EAAUuC,EAAS,KAAOA,EAASF,EAAMrC,EAAUxG,GAAIyJ,GAAQjD,CACxG,EAEOiD,CACT,CC5Ge,SAAAa,EAASnC,EAAGoC,GACzB,OAAOA,EAAIpC,GAAI,EAAKoC,EAAIpC,EAAI,EAAIoC,GAAKpC,EAAI,EAAIqC,GAC/C,CCFe,SAAAC,EAAS7G,GACtB,OAAOA,CACT,CCGe,SAAA8G,IACb,IAAIC,EAAQC,EACRC,EAAaP,EACbQ,EAAO,KACP7G,EAAaqC,EAAS,GACtBnC,EAAWmC,EAAS/G,GACpB8E,EAAWiC,EAAS,GAExB,SAASyE,EAAI9B,GACX,IAAIC,EAEAQ,EACAC,EAMAjH,EAGAsI,EAXA7B,EAAIF,EAAKb,OAGT6C,EAAM,EACNC,EAAQ,IAAIrB,MAAMV,GAClBgC,EAAO,IAAItB,MAAMV,GACjB1G,GAAMwB,EAAW0C,MAAMhH,KAAMiH,WAC7B3D,EAAK5D,KAAKmE,IAAIjE,EAAKF,KAAKkE,KAAKhE,EAAK4E,EAASwC,MAAMhH,KAAMiH,WAAanE,IAEpE+F,EAAInJ,KAAKmE,IAAInE,KAAKsC,IAAIsB,GAAMkG,EAAG9E,EAASsC,MAAMhH,KAAMiH,YACpDwE,EAAK5C,GAAKvF,EAAK,KAAS,GAG5B,IAAKiG,EAAI,EAAGA,EAAIC,IAAKD,GACd8B,EAAIG,EAAKD,EAAMhC,GAAKA,IAAMyB,EAAM1B,EAAKC,GAAIA,EAAGD,IAAS,IACxDgC,GAAOD,GASX,IAJkB,MAAdH,EAAoBK,EAAMJ,KAAK,SAAS5B,EAAGQ,GAAK,OAAOmB,EAAWM,EAAKjC,GAAIiC,EAAKzB,GAAK,GACxE,MAARoB,GAAcI,EAAMJ,KAAK,SAAS5B,EAAGQ,GAAK,OAAOoB,EAAK7B,EAAKC,GAAID,EAAKS,GAAK,GAG7ER,EAAI,EAAGS,EAAIsB,GAAOhI,EAAKkG,EAAIiC,GAAMH,EAAM,EAAG/B,EAAIC,IAAKD,EAAGzG,EAAKC,EAC9DgH,EAAIwB,EAAMhC,GAAiBxG,EAAKD,IAAlBuI,EAAIG,EAAKzB,IAAmB,EAAIsB,EAAIrB,EAAI,GAAKyB,EAAID,EAAKzB,GAAK,CACvET,KAAMA,EAAKS,GACXwB,MAAOhC,EACPyB,MAAOK,EACP/G,WAAYxB,EACZ0B,SAAUzB,EACV2B,SAAUmE,GAId,OAAO2C,CACT,CA0BA,OAhES/K,EAAA2K,EAAA,OAwCTA,EAAIJ,MAAQ,SAAS3K,GACnB,OAAO4G,UAAUwB,QAAUuC,EAAqB,mBAAN3K,EAAmBA,EAAIsG,GAAUtG,GAAI+K,GAAOJ,CACxF,EAEAI,EAAIF,WAAa,SAAS7K,GACxB,OAAO4G,UAAUwB,QAAUyC,EAAa7K,EAAG8K,EAAO,KAAMC,GAAOF,CACjE,EAEAE,EAAID,KAAO,SAAS9K,GAClB,OAAO4G,UAAUwB,QAAU0C,EAAO9K,EAAG6K,EAAa,KAAME,GAAOD,CACjE,EAEAC,EAAI9G,WAAa,SAASjE,GACxB,OAAO4G,UAAUwB,QAAUnE,EAA0B,mBAANjE,EAAmBA,EAAIsG,GAAUtG,GAAI+K,GAAO9G,CAC7F,EAEA8G,EAAI5G,SAAW,SAASnE,GACtB,OAAO4G,UAAUwB,QAAUjE,EAAwB,mBAANnE,EAAmBA,EAAIsG,GAAUtG,GAAI+K,GAAO5G,CAC3F,EAEA4G,EAAI1G,SAAW,SAASrE,GACtB,OAAO4G,UAAUwB,QAAU/D,EAAwB,mBAANrE,EAAmBA,EAAIsG,GAAUtG,GAAI+K,GAAO1G,CAC3F,EAEO0G,CACT,CC9EO,SAASxB,EAAM8B,EAAMlL,EAAGK,GAC7B6K,EAAK/C,SAASxH,eACX,EAAIuK,EAAKzL,IAAMyL,EAAKvL,KAAO,GAC3B,EAAIuL,EAAKxL,IAAMwL,EAAKtL,KAAO,GAC3BsL,EAAKzL,IAAM,EAAIyL,EAAKvL,KAAO,GAC3BuL,EAAKxL,IAAM,EAAIwL,EAAKtL,KAAO,GAC3BsL,EAAKzL,IAAM,EAAIyL,EAAKvL,IAAMK,GAAK,GAC/BkL,EAAKxL,IAAM,EAAIwL,EAAKtL,IAAMS,GAAK,EAEpC,CAEO,SAAS8K,EAAM9E,GACpB7G,KAAK2I,SAAW9B,CAClB,CAmCe,SAAA+E,EAAS/E,GACtB,OAAO,IAAI8E,EAAM9E,EACnB,CChDA,SAASgF,EAAOhF,EAASiF,GACvB9L,KAAK+L,OAAS,IAAIJ,EAAM9E,GACxB7G,KAAKgM,MAAQF,CACf,CVQgBrL,EAAAiC,EAAA,QAIAqB,EAAAA,EAAAA,UCbPC,EAAAA,EAAAA,oBAIAG,EAAAA,EAAAA,oBAIAE,EAAAA,EAAAA,mBAIAE,EAAAA,EAAAA,iBAIAE,EAAAA,EAAAA,iBAIAE,EAAAA,EAAAA,eAWAQ,EAAAA,EAAAA,oBAyCM1E,EAAAgG,EAAA,SC5ENiC,EAAAA,EAAAA,YAITA,EAAOhI,UAAY,CACjB0J,UAAW3J,EAAA,WACTT,KAAKiM,MAAQ,CACf,EAFW,aAGX5B,QAAS5J,EAAA,WACPT,KAAKiM,MAAQpB,GACf,EAFS,WAGTnB,UAAWjJ,EAAA,WACTT,KAAKkM,OAAS,CAChB,EAFW,aAGXvC,QAASlJ,EAAA,YACHT,KAAKiM,OAAyB,IAAfjM,KAAKiM,OAA+B,IAAhBjM,KAAKkM,SAAelM,KAAK2I,SAAS7H,YACzEd,KAAKiM,MAAQ,EAAIjM,KAAKiM,KACxB,EAHS,WAITrC,MAAOnJ,EAAA,SAASD,EAAGK,GAEjB,OADAL,GAAKA,EAAGK,GAAKA,EACLb,KAAKkM,QACX,KAAK,EAAGlM,KAAKkM,OAAS,EAAGlM,KAAKiM,MAAQjM,KAAK2I,SAAS5H,OAAOP,EAAGK,GAAKb,KAAK2I,SAAS/H,OAAOJ,EAAGK,GAAI,MAC/F,KAAK,EAAGb,KAAKkM,OAAS,EACtB,QAASlM,KAAK2I,SAAS5H,OAAOP,EAAGK,GAErC,EAPO,UAUMJ,EAAAmI,EAAA,iBC5BCpI,EAAAA,EAAAA,OAIAK,EAAAA,EAAAA,OCCDJ,EAAAqI,EAAA,UCCArI,EAAAoJ,EAAA,UCNApJ,EAAAkK,EAAA,cCAAlK,EAAAqK,EAAA,cCKArK,EAAAsK,EAAA,SCLCnB,EAAAA,EAAAA,WAWA+B,EAAAA,EAAAA,WAIhBA,EAAMjL,UAAY,CAChB0J,UAAW3J,EAAA,WACTT,KAAKiM,MAAQ,CACf,EAFW,aAGX5B,QAAS5J,EAAA,WACPT,KAAKiM,MAAQpB,GACf,EAFS,WAGTnB,UAAWjJ,EAAA,WACTT,KAAKC,IAAMD,KAAKG,IAChBH,KAAKE,IAAMF,KAAKI,IAAMyK,IACtB7K,KAAKkM,OAAS,CAChB,EAJW,aAKXvC,QAASlJ,EAAA,WACP,OAAQT,KAAKkM,QACX,KAAK,EAAGtC,EAAM5J,KAAMA,KAAKG,IAAKH,KAAKI,KACnC,KAAK,EAAGJ,KAAK2I,SAAS5H,OAAOf,KAAKG,IAAKH,KAAKI,MAE1CJ,KAAKiM,OAAyB,IAAfjM,KAAKiM,OAA+B,IAAhBjM,KAAKkM,SAAelM,KAAK2I,SAAS7H,YACzEd,KAAKiM,MAAQ,EAAIjM,KAAKiM,KACxB,EAPS,WAQTrC,MAAOnJ,EAAA,SAASD,EAAGK,GAEjB,OADAL,GAAKA,EAAGK,GAAKA,EACLb,KAAKkM,QACX,KAAK,EAAGlM,KAAKkM,OAAS,EAAGlM,KAAKiM,MAAQjM,KAAK2I,SAAS5H,OAAOP,EAAGK,GAAKb,KAAK2I,SAAS/H,OAAOJ,EAAGK,GAAI,MAC/F,KAAK,EAAGb,KAAKkM,OAAS,EAAG,MACzB,KAAK,EAAGlM,KAAKkM,OAAS,EAAGlM,KAAK2I,SAAS5H,QAAQ,EAAIf,KAAKC,IAAMD,KAAKG,KAAO,GAAI,EAAIH,KAAKE,IAAMF,KAAKI,KAAO,GACzG,QAASwJ,EAAM5J,KAAMQ,EAAGK,GAE1Bb,KAAKC,IAAMD,KAAKG,IAAKH,KAAKG,IAAMK,EAChCR,KAAKE,IAAMF,KAAKI,IAAKJ,KAAKI,IAAMS,CAClC,EAVO,UAaMJ,EAAAmL,EAAA,gBC9CNC,EAAAA,EAAAA,YAKTA,EAAOnL,UAAY,CACjBgJ,UAAWjJ,EAAA,WACTT,KAAKmM,GAAK,GACVnM,KAAKoM,GAAK,GACVpM,KAAK+L,OAAOrC,WACd,EAJW,aAKXC,QAASlJ,EAAA,WACP,IAAID,EAAIR,KAAKmM,GACTtL,EAAIb,KAAKoM,GACTrC,EAAIvJ,EAAEiI,OAAS,EAEnB,GAAIsB,EAAI,EAQN,IAPA,IAKI7E,EALA1D,EAAKhB,EAAE,GACPiB,EAAKZ,EAAE,GACPoC,EAAKzC,EAAEuJ,GAAKvI,EACZ2B,EAAKtC,EAAEkJ,GAAKtI,EACZ8H,GAAI,IAGCA,GAAKQ,GACZ7E,EAAIqE,EAAIQ,EACR/J,KAAK+L,OAAOnC,MACV5J,KAAKgM,MAAQxL,EAAE+I,IAAM,EAAIvJ,KAAKgM,QAAUxK,EAAK0D,EAAIjC,GACjDjD,KAAKgM,MAAQnL,EAAE0I,IAAM,EAAIvJ,KAAKgM,QAAUvK,EAAKyD,EAAI/B,IAKvDnD,KAAKmM,GAAKnM,KAAKoM,GAAK,KACpBpM,KAAK+L,OAAOpC,SACd,EAxBS,WAyBTC,MAAOnJ,EAAA,SAASD,EAAGK,GACjBb,KAAKmM,GAAGE,MAAM7L,GACdR,KAAKoM,GAAGC,MAAMxL,EAChB,EAHO,UAMT,MAAAyL,EAAgB7L,EAAA,SAAS8L,EAAOT,GAE9B,SAASU,EAAO3F,GACd,OAAgB,IAATiF,EAAa,IAAIH,EAAM9E,GAAW,IAAIgF,EAAOhF,EAASiF,EAC/D,CAMA,OARSrL,EAAA+L,EAAA,UAITA,EAAOV,KAAO,SAASA,GACrB,OAAOS,GAAQT,EACjB,EAEOU,CACT,EAXgB,SAAhB,CAWG,KCvDI,SAAS5C,EAAM8B,EAAMlL,EAAGK,GAC7B6K,EAAK/C,SAASxH,cACZuK,EAAKvL,IAAMuL,EAAKe,IAAMf,EAAKgB,IAAMhB,EAAKzL,KACtCyL,EAAKtL,IAAMsL,EAAKe,IAAMf,EAAKiB,IAAMjB,EAAKxL,KACtCwL,EAAKgB,IAAMhB,EAAKe,IAAMf,EAAKvL,IAAMK,GACjCkL,EAAKiB,IAAMjB,EAAKe,IAAMf,EAAKtL,IAAMS,GACjC6K,EAAKgB,IACLhB,EAAKiB,IAET,CAEO,SAASC,EAAS/F,EAASgG,GAChC7M,KAAK2I,SAAW9B,EAChB7G,KAAKyM,IAAM,EAAII,GAAW,CAC5B,CAdgBjD,EAAAA,EAAAA,WAWAgD,EAAAA,EAAAA,cAKhBA,EAASlM,UAAY,CACnB0J,UAAW3J,EAAA,WACTT,KAAKiM,MAAQ,CACf,EAFW,aAGX5B,QAAS5J,EAAA,WACPT,KAAKiM,MAAQpB,GACf,EAFS,WAGTnB,UAAWjJ,EAAA,WACTT,KAAKC,IAAMD,KAAKG,IAAMH,KAAK0M,IAC3B1M,KAAKE,IAAMF,KAAKI,IAAMJ,KAAK2M,IAAM9B,IACjC7K,KAAKkM,OAAS,CAChB,EAJW,aAKXvC,QAASlJ,EAAA,WACP,OAAQT,KAAKkM,QACX,KAAK,EAAGlM,KAAK2I,SAAS5H,OAAOf,KAAK0M,IAAK1M,KAAK2M,KAAM,MAClD,KAAK,EAAG/C,EAAM5J,KAAMA,KAAKG,IAAKH,KAAKI,MAEjCJ,KAAKiM,OAAyB,IAAfjM,KAAKiM,OAA+B,IAAhBjM,KAAKkM,SAAelM,KAAK2I,SAAS7H,YACzEd,KAAKiM,MAAQ,EAAIjM,KAAKiM,KACxB,EAPS,WAQTrC,MAAOnJ,EAAA,SAASD,EAAGK,GAEjB,OADAL,GAAKA,EAAGK,GAAKA,EACLb,KAAKkM,QACX,KAAK,EAAGlM,KAAKkM,OAAS,EAAGlM,KAAKiM,MAAQjM,KAAK2I,SAAS5H,OAAOP,EAAGK,GAAKb,KAAK2I,SAAS/H,OAAOJ,EAAGK,GAAI,MAC/F,KAAK,EAAGb,KAAKkM,OAAS,EAAGlM,KAAKG,IAAMK,EAAGR,KAAKI,IAAMS,EAAG,MACrD,KAAK,EAAGb,KAAKkM,OAAS,EACtB,QAAStC,EAAM5J,KAAMQ,EAAGK,GAE1Bb,KAAKC,IAAMD,KAAKG,IAAKH,KAAKG,IAAMH,KAAK0M,IAAK1M,KAAK0M,IAAMlM,EACrDR,KAAKE,IAAMF,KAAKI,IAAKJ,KAAKI,IAAMJ,KAAK2M,IAAK3M,KAAK2M,IAAM9L,CACvD,EAVO,UAaT,MAAAiM,EAAgBrM,EAAA,SAAS8L,EAAOM,GAE9B,SAASE,EAASlG,GAChB,OAAO,IAAI+F,EAAS/F,EAASgG,EAC/B,CAMA,OARSpM,EAAAsM,EAAA,YAITA,EAASF,QAAU,SAASA,GAC1B,OAAON,GAAQM,EACjB,EAEOE,CACT,EAXgB,SAAhB,CAWG,GCzDI,SAASnD,EAAM8B,EAAMlL,EAAGK,GAC7B,IAAII,EAAKyK,EAAKvL,IACVe,EAAKwK,EAAKtL,IACVgB,EAAKsK,EAAKgB,IACVrL,EAAKqK,EAAKiB,IAEd,GAAIjB,EAAKsB,OAASnN,EAAS,CACzB,IAAI2I,EAAI,EAAIkD,EAAKuB,QAAU,EAAIvB,EAAKsB,OAAStB,EAAKwB,OAASxB,EAAKyB,QAC5D3D,EAAI,EAAIkC,EAAKsB,QAAUtB,EAAKsB,OAAStB,EAAKwB,QAC9CjM,GAAMA,EAAKuH,EAAIkD,EAAKzL,IAAMyL,EAAKyB,QAAUzB,EAAKgB,IAAMhB,EAAKuB,SAAWzD,EACpEtI,GAAMA,EAAKsH,EAAIkD,EAAKxL,IAAMwL,EAAKyB,QAAUzB,EAAKiB,IAAMjB,EAAKuB,SAAWzD,CACtE,CAEA,GAAIkC,EAAK0B,OAASvN,EAAS,CACzB,IAAI+K,EAAI,EAAIc,EAAK2B,QAAU,EAAI3B,EAAK0B,OAAS1B,EAAKwB,OAASxB,EAAKyB,QAC5DG,EAAI,EAAI5B,EAAK0B,QAAU1B,EAAK0B,OAAS1B,EAAKwB,QAC9C9L,GAAMA,EAAKwJ,EAAIc,EAAKvL,IAAMuL,EAAK2B,QAAU7M,EAAIkL,EAAKyB,SAAWG,EAC7DjM,GAAMA,EAAKuJ,EAAIc,EAAKtL,IAAMsL,EAAK2B,QAAUxM,EAAI6K,EAAKyB,SAAWG,CAC/D,CAEA5B,EAAK/C,SAASxH,cAAcF,EAAIC,EAAIE,EAAIC,EAAIqK,EAAKgB,IAAKhB,EAAKiB,IAC7D,CAEA,SAASY,EAAW1G,EAAS2G,GAC3BxN,KAAK2I,SAAW9B,EAChB7G,KAAKyN,OAASD,CAChB,CA1BgB5D,EAAAA,EAAAA,WAuBP2D,EAAAA,EAAAA,gBAKTA,EAAW7M,UAAY,CACrB0J,UAAW3J,EAAA,WACTT,KAAKiM,MAAQ,CACf,EAFW,aAGX5B,QAAS5J,EAAA,WACPT,KAAKiM,MAAQpB,GACf,EAFS,WAGTnB,UAAWjJ,EAAA,WACTT,KAAKC,IAAMD,KAAKG,IAAMH,KAAK0M,IAC3B1M,KAAKE,IAAMF,KAAKI,IAAMJ,KAAK2M,IAAM9B,IACjC7K,KAAKgN,OAAShN,KAAKkN,OAASlN,KAAKoN,OACjCpN,KAAKiN,QAAUjN,KAAKmN,QAAUnN,KAAKqN,QACnCrN,KAAKkM,OAAS,CAChB,EANW,aAOXvC,QAASlJ,EAAA,WACP,OAAQT,KAAKkM,QACX,KAAK,EAAGlM,KAAK2I,SAAS5H,OAAOf,KAAK0M,IAAK1M,KAAK2M,KAAM,MAClD,KAAK,EAAG3M,KAAK4J,MAAM5J,KAAK0M,IAAK1M,KAAK2M,MAEhC3M,KAAKiM,OAAyB,IAAfjM,KAAKiM,OAA+B,IAAhBjM,KAAKkM,SAAelM,KAAK2I,SAAS7H,YACzEd,KAAKiM,MAAQ,EAAIjM,KAAKiM,KACxB,EAPS,WAQTrC,MAAOnJ,EAAA,SAASD,EAAGK,GAGjB,GAFAL,GAAKA,EAAGK,GAAKA,EAETb,KAAKkM,OAAQ,CACf,IAAIwB,EAAM1N,KAAK0M,IAAMlM,EACjBmN,EAAM3N,KAAK2M,IAAM9L,EACrBb,KAAKoN,OAAS1N,KAAK4C,KAAKtC,KAAKqN,QAAU3N,KAAKkO,IAAIF,EAAMA,EAAMC,EAAMA,EAAK3N,KAAKyN,QAC9E,CAEA,OAAQzN,KAAKkM,QACX,KAAK,EAAGlM,KAAKkM,OAAS,EAAGlM,KAAKiM,MAAQjM,KAAK2I,SAAS5H,OAAOP,EAAGK,GAAKb,KAAK2I,SAAS/H,OAAOJ,EAAGK,GAAI,MAC/F,KAAK,EAAGb,KAAKkM,OAAS,EAAG,MACzB,KAAK,EAAGlM,KAAKkM,OAAS,EACtB,QAAStC,EAAM5J,KAAMQ,EAAGK,GAG1Bb,KAAKgN,OAAShN,KAAKkN,OAAQlN,KAAKkN,OAASlN,KAAKoN,OAC9CpN,KAAKiN,QAAUjN,KAAKmN,QAASnN,KAAKmN,QAAUnN,KAAKqN,QACjDrN,KAAKC,IAAMD,KAAKG,IAAKH,KAAKG,IAAMH,KAAK0M,IAAK1M,KAAK0M,IAAMlM,EACrDR,KAAKE,IAAMF,KAAKI,IAAKJ,KAAKI,IAAMJ,KAAK2M,IAAK3M,KAAK2M,IAAM9L,CACvD,EApBO,UAuBT,MAAAgN,GAAgBpN,EAAA,SAAS8L,EAAOiB,GAE9B,SAASM,EAAWjH,GAClB,OAAO2G,EAAQ,IAAID,EAAW1G,EAAS2G,GAAS,IAAIZ,EAAS/F,EAAS,EACxE,CAMA,OARSpG,EAAAqN,EAAA,cAITA,EAAWN,MAAQ,SAASA,GAC1B,OAAOjB,GAAQiB,EACjB,EAEOM,CACT,EAXgB,SAAhB,CAWG,ICvFH,SAASC,GAAKvN,GACZ,OAAOA,EAAI,GAAI,EAAK,CACtB,CAMA,SAASwN,GAAOtC,EAAMtK,EAAIC,GACxB,IAAI4M,EAAKvC,EAAKvL,IAAMuL,EAAKzL,IACrBiO,EAAK9M,EAAKsK,EAAKvL,IACfgO,GAAMzC,EAAKtL,IAAMsL,EAAKxL,MAAQ+N,GAAMC,EAAK,IAAK,GAC9CE,GAAM/M,EAAKqK,EAAKtL,MAAQ8N,GAAMD,EAAK,IAAK,GACxCpF,GAAKsF,EAAKD,EAAKE,EAAKH,IAAOA,EAAKC,GACpC,OAAQH,GAAKI,GAAMJ,GAAKK,IAAO1O,KAAKmE,IAAInE,KAAKsC,IAAImM,GAAKzO,KAAKsC,IAAIoM,GAAK,GAAM1O,KAAKsC,IAAI6G,KAAO,CAC5F,CAGA,SAASwF,GAAO3C,EAAMxG,GACpB,IAAIzB,EAAIiI,EAAKvL,IAAMuL,EAAKzL,IACxB,OAAOwD,GAAK,GAAKiI,EAAKtL,IAAMsL,EAAKxL,KAAOuD,EAAIyB,GAAK,EAAIA,CACvD,CAKA,SAAS0E,GAAM8B,EAAMxE,EAAIC,GACvB,IAAI3F,EAAKkK,EAAKzL,IACVwB,EAAKiK,EAAKxL,IACVe,EAAKyK,EAAKvL,IACVe,EAAKwK,EAAKtL,IACV6C,GAAMhC,EAAKO,GAAM,EACrBkK,EAAK/C,SAASxH,cAAcK,EAAKyB,EAAIxB,EAAKwB,EAAKiE,EAAIjG,EAAKgC,EAAI/B,EAAK+B,EAAKkE,EAAIlG,EAAIC,EAChF,CAEA,SAASoN,GAAUzH,GACjB7G,KAAK2I,SAAW9B,CAClB,CA4DO,SAAS0H,GAAU1H,GACxB,OAAO,IAAIyH,GAAUzH,EACvB,CCnGA,SAAS2H,GAAQ3H,GACf7G,KAAK2I,SAAW9B,CAClB,CA0CA,SAAS4H,GAAcjO,GACrB,IAAI+I,EAEA+D,EADA9D,EAAIhJ,EAAEiI,OAAS,EAEfD,EAAI,IAAI0B,MAAMV,GACdoB,EAAI,IAAIV,MAAMV,GACdjI,EAAI,IAAI2I,MAAMV,GAElB,IADAhB,EAAE,GAAK,EAAGoC,EAAE,GAAK,EAAGrJ,EAAE,GAAKf,EAAE,GAAK,EAAIA,EAAE,GACnC+I,EAAI,EAAGA,EAAIC,EAAI,IAAKD,EAAGf,EAAEe,GAAK,EAAGqB,EAAErB,GAAK,EAAGhI,EAAEgI,GAAK,EAAI/I,EAAE+I,GAAK,EAAI/I,EAAE+I,EAAI,GAE5E,IADAf,EAAEgB,EAAI,GAAK,EAAGoB,EAAEpB,EAAI,GAAK,EAAGjI,EAAEiI,EAAI,GAAK,EAAIhJ,EAAEgJ,EAAI,GAAKhJ,EAAEgJ,GACnDD,EAAI,EAAGA,EAAIC,IAAKD,EAAG+D,EAAI9E,EAAEe,GAAKqB,EAAErB,EAAI,GAAIqB,EAAErB,IAAM+D,EAAG/L,EAAEgI,IAAM+D,EAAI/L,EAAEgI,EAAI,GAE1E,IADAf,EAAEgB,EAAI,GAAKjI,EAAEiI,EAAI,GAAKoB,EAAEpB,EAAI,GACvBD,EAAIC,EAAI,EAAGD,GAAK,IAAKA,EAAGf,EAAEe,IAAMhI,EAAEgI,GAAKf,EAAEe,EAAI,IAAMqB,EAAErB,GAE1D,IADAqB,EAAEpB,EAAI,IAAMhJ,EAAEgJ,GAAKhB,EAAEgB,EAAI,IAAM,EAC1BD,EAAI,EAAGA,EAAIC,EAAI,IAAKD,EAAGqB,EAAErB,GAAK,EAAI/I,EAAE+I,EAAI,GAAKf,EAAEe,EAAI,GACxD,MAAO,CAACf,EAAGoC,EACb,CAEe,SAAA8D,GAAS7H,GACtB,OAAO,IAAI2H,GAAQ3H,EACrB,CChEA,SAAS8H,GAAK9H,EAAS3B,GACrBlF,KAAK2I,SAAW9B,EAChB7G,KAAK4O,GAAK1J,CACZ,CAuCe,SAAA2J,GAAShI,GACtB,OAAO,IAAI8H,GAAK9H,EAAS,GAC3B,CAEO,SAASiI,GAAWjI,GACzB,OAAO,IAAI8H,GAAK9H,EAAS,EAC3B,CAEO,SAASkI,GAAUlI,GACxB,OAAO,IAAI8H,GAAK9H,EAAS,EAC3B,CFpDSkH,EAAAA,GAAAA,UAQAC,EAAAA,GAAAA,YAUAK,EAAAA,GAAAA,YAQAzE,EAAAA,GAAAA,WASA0E,EAAAA,GAAAA,eAITA,GAAU5N,UAAY,CACpB0J,UAAW3J,EAAA,WACTT,KAAKiM,MAAQ,CACf,EAFW,aAGX5B,QAAS5J,EAAA,WACPT,KAAKiM,MAAQpB,GACf,EAFS,WAGTnB,UAAWjJ,EAAA,WACTT,KAAKC,IAAMD,KAAKG,IAChBH,KAAKE,IAAMF,KAAKI,IAChBJ,KAAKgP,IAAMnE,IACX7K,KAAKkM,OAAS,CAChB,EALW,aAMXvC,QAASlJ,EAAA,WACP,OAAQT,KAAKkM,QACX,KAAK,EAAGlM,KAAK2I,SAAS5H,OAAOf,KAAKG,IAAKH,KAAKI,KAAM,MAClD,KAAK,EAAGwJ,GAAM5J,KAAMA,KAAKgP,IAAKX,GAAOrO,KAAMA,KAAKgP,OAE9ChP,KAAKiM,OAAyB,IAAfjM,KAAKiM,OAA+B,IAAhBjM,KAAKkM,SAAelM,KAAK2I,SAAS7H,YACzEd,KAAKiM,MAAQ,EAAIjM,KAAKiM,KACxB,EAPS,WAQTrC,MAAOnJ,EAAA,SAASD,EAAGK,GACjB,IAAIsG,EAAK0D,IAGT,GADQhK,GAAKA,GAAbL,GAAKA,KACKR,KAAKG,KAAOU,IAAMb,KAAKI,IAAjC,CACA,OAAQJ,KAAKkM,QACX,KAAK,EAAGlM,KAAKkM,OAAS,EAAGlM,KAAKiM,MAAQjM,KAAK2I,SAAS5H,OAAOP,EAAGK,GAAKb,KAAK2I,SAAS/H,OAAOJ,EAAGK,GAAI,MAC/F,KAAK,EAAGb,KAAKkM,OAAS,EAAG,MACzB,KAAK,EAAGlM,KAAKkM,OAAS,EAAGtC,GAAM5J,KAAMqO,GAAOrO,KAAMmH,EAAK6G,GAAOhO,KAAMQ,EAAGK,IAAKsG,GAAK,MACjF,QAASyC,GAAM5J,KAAMA,KAAKgP,IAAK7H,EAAK6G,GAAOhO,KAAMQ,EAAGK,IAGtDb,KAAKC,IAAMD,KAAKG,IAAKH,KAAKG,IAAMK,EAChCR,KAAKE,IAAMF,KAAKI,IAAKJ,KAAKI,IAAMS,EAChCb,KAAKgP,IAAM7H,CAV2B,CAWxC,EAfO,UAsBc8H,OAAOC,OAAOZ,GAAU5N,WAAYkJ,MAAQ,SAASpJ,EAAGK,GAC7EyN,GAAU5N,UAAUkJ,MAAMuF,KAAKnP,KAAMa,EAAGL,EAC1C,EAagBC,EAAA8N,GAAA,aCjGP9N,EAAA+N,GAAA,WAITA,GAAQ9N,UAAY,CAClB0J,UAAW3J,EAAA,WACTT,KAAKiM,MAAQ,CACf,EAFW,aAGX5B,QAAS5J,EAAA,WACPT,KAAKiM,MAAQpB,GACf,EAFS,WAGTnB,UAAWjJ,EAAA,WACTT,KAAKmM,GAAK,GACVnM,KAAKoM,GAAK,EACZ,EAHW,aAIXzC,QAASlJ,EAAA,WACP,IAAID,EAAIR,KAAKmM,GACTtL,EAAIb,KAAKoM,GACT5C,EAAIhJ,EAAEiI,OAEV,GAAIe,EAEF,GADAxJ,KAAKiM,MAAQjM,KAAK2I,SAAS5H,OAAOP,EAAE,GAAIK,EAAE,IAAMb,KAAK2I,SAAS/H,OAAOJ,EAAE,GAAIK,EAAE,IACnE,IAAN2I,EACFxJ,KAAK2I,SAAS5H,OAAOP,EAAE,GAAIK,EAAE,SAI7B,IAFA,IAAIuO,EAAKX,GAAcjO,GACnB6O,EAAKZ,GAAc5N,GACdyO,EAAK,EAAGC,EAAK,EAAGA,EAAK/F,IAAK8F,IAAMC,EACvCvP,KAAK2I,SAASxH,cAAciO,EAAG,GAAGE,GAAKD,EAAG,GAAGC,GAAKF,EAAG,GAAGE,GAAKD,EAAG,GAAGC,GAAK9O,EAAE+O,GAAK1O,EAAE0O,KAKnFvP,KAAKiM,OAAyB,IAAfjM,KAAKiM,OAAqB,IAANzC,IAAUxJ,KAAK2I,SAAS7H,YAC/Dd,KAAKiM,MAAQ,EAAIjM,KAAKiM,MACtBjM,KAAKmM,GAAKnM,KAAKoM,GAAK,IACtB,EArBS,WAsBTxC,MAAOnJ,EAAA,SAASD,EAAGK,GACjBb,KAAKmM,GAAGE,MAAM7L,GACdR,KAAKoM,GAAGC,MAAMxL,EAChB,EAHO,UAOAJ,EAAAgO,GAAA,iBAkBMhO,EAAAiO,GAAA,kBC9DNC,EAAAA,GAAAA,UAKTA,GAAKjO,UAAY,CACf0J,UAAW3J,EAAA,WACTT,KAAKiM,MAAQ,CACf,EAFW,aAGX5B,QAAS5J,EAAA,WACPT,KAAKiM,MAAQpB,GACf,EAFS,WAGTnB,UAAWjJ,EAAA,WACTT,KAAKmM,GAAKnM,KAAKoM,GAAKvB,IACpB7K,KAAKkM,OAAS,CAChB,EAHW,aAIXvC,QAASlJ,EAAA,WACH,EAAIT,KAAK4O,IAAM5O,KAAK4O,GAAK,GAAqB,IAAhB5O,KAAKkM,aAAmBvD,SAAS5H,OAAOf,KAAKmM,GAAInM,KAAKoM,KACpFpM,KAAKiM,OAAyB,IAAfjM,KAAKiM,OAA+B,IAAhBjM,KAAKkM,SAAelM,KAAK2I,SAAS7H,YACrEd,KAAKiM,OAAS,IAAGjM,KAAK4O,GAAK,EAAI5O,KAAK4O,GAAI5O,KAAKiM,MAAQ,EAAIjM,KAAKiM,MACpE,EAJS,WAKTrC,MAAOnJ,EAAA,SAASD,EAAGK,GAEjB,OADAL,GAAKA,EAAGK,GAAKA,EACLb,KAAKkM,QACX,KAAK,EAAGlM,KAAKkM,OAAS,EAAGlM,KAAKiM,MAAQjM,KAAK2I,SAAS5H,OAAOP,EAAGK,GAAKb,KAAK2I,SAAS/H,OAAOJ,EAAGK,GAAI,MAC/F,KAAK,EAAGb,KAAKkM,OAAS,EACtB,QACE,GAAIlM,KAAK4O,IAAM,EACb5O,KAAK2I,SAAS5H,OAAOf,KAAKmM,GAAItL,GAC9Bb,KAAK2I,SAAS5H,OAAOP,EAAGK,OACnB,CACL,IAAII,EAAKjB,KAAKmM,IAAM,EAAInM,KAAK4O,IAAMpO,EAAIR,KAAK4O,GAC5C5O,KAAK2I,SAAS5H,OAAOE,EAAIjB,KAAKoM,IAC9BpM,KAAK2I,SAAS5H,OAAOE,EAAIJ,EAC3B,EAIJb,KAAKmM,GAAK3L,EAAGR,KAAKoM,GAAKvL,CACzB,EAlBO,UAqBMJ,EAAAoO,GAAA,eAICpO,EAAAqO,GAAA,cAIArO,EAAAsO,GAAA,aClDT,IAAIS,GAAQtF,MAAMxJ,UAAU8O,MCApB,SAAAC,GAASjP,GACtB,OAAOA,CACT,CAFeC,EAAAgP,GAAA,cCGf,IAII5P,GAAU,KAEd,SAAS6P,GAAWlP,GAClB,MAAO,cAAgBA,EAAI,IAAO,KACpC,CAEA,SAASmP,GAAW9O,GAClB,MAAO,gBAAkBA,EAAI,IAAO,GACtC,CAEA,SAAS+O,GAAOC,GACd,OAAO,SAAS5L,GACd,OAAQ4L,EAAM5L,EAChB,CACF,CAEA,SAAS6L,GAAOD,GACd,IAAIE,EAASrQ,KAAKkE,IAAI,EAAGiM,EAAMG,YAAc,GAAK,EAElD,OADIH,EAAMI,UAASF,EAASrQ,KAAKuQ,MAAMF,IAChC,SAAS9L,GACd,OAAQ4L,EAAM5L,GAAK8L,CACrB,CACF,CAEA,SAASG,KACP,OAAQlQ,KAAKmQ,MACf,CAEA,SAASC,GAAKC,EAAQR,GACpB,IAAIS,EAAgB,GAChBC,EAAa,KACbC,EAAa,KACbC,EAAgB,EAChBC,EAAgB,EAChBC,EAAc,EACd3G,EAvCI,IAuCAqG,GApCC,IAoCiBA,GAAkB,EAAK,EAC7C7P,EArCK,IAqCD6P,GAvCE,IAuCiBA,EAAmB,IAAM,IAChDO,EAzCI,IAyCQP,GAvCL,IAuCuBA,EAAoBX,GAAaC,GAEnE,SAASS,EAAKvJ,GACZ,IAAIgK,EAAuB,MAAdN,EAAsBV,EAAMiB,MAAQjB,EAAMiB,MAAM9J,MAAM6I,EAAOS,GAAiBT,EAAMkB,SAAYR,EACzGS,EAAuB,MAAdR,EAAsBX,EAAMW,WAAaX,EAAMW,WAAWxJ,MAAM6I,EAAOS,GAAiBrF,GAAYuF,EAC7GS,EAAUvR,KAAKkE,IAAI6M,EAAe,GAAKE,EACvCO,EAAQrB,EAAMqB,QACdC,GAAUD,EAAM,GAAK,GACrBE,GAAUF,EAAMA,EAAMzI,OAAS,GAAK,GACpC4I,GAAYxB,EAAMG,UAAYF,GAASF,IAAQC,EAAMyB,QACrDC,EAAY1K,EAAQ0K,UAAY1K,EAAQ0K,YAAc1K,EACtDvG,EAAOiR,EAAUC,UAAU,WAAWlI,KAAK,CAAC,OAC5CmI,EAAOF,EAAUC,UAAU,SAASlI,KAAKuH,EAAQhB,GAAO6B,QACxDC,EAAWF,EAAKG,OAChBC,EAAYJ,EAAKK,QAAQC,OAAO,KAAKC,KAAK,QAAS,QACnD3I,EAAOoI,EAAKQ,OAAO,QACnBC,EAAOT,EAAKQ,OAAO,QAEvB3R,EAAOA,EAAK6R,MAAM7R,EAAKwR,QAAQM,OAAO,OAAQ,SACzCJ,KAAK,QAAS,UACdA,KAAK,SAAU,iBAEpBP,EAAOA,EAAKU,MAAMN,GAElBxI,EAAOA,EAAK8I,MAAMN,EAAUE,OAAO,QAC9BC,KAAK,SAAU,gBACfA,KAAKxR,EAAI,IAAKwJ,EAAIyG,IAEvByB,EAAOA,EAAKC,MAAMN,EAAUE,OAAO,QAC9BC,KAAK,OAAQ,gBACbA,KAAKxR,EAAGwJ,EAAIiH,GACZe,KAAK,KAxEJ,IAwEU3B,EAAiB,MAtExB,IAsEgCA,EAAoB,SAAW,WAEpExJ,IAAY0K,IACdjR,EAAOA,EAAK+R,WAAWxL,GACvB4K,EAAOA,EAAKY,WAAWxL,GACvBwC,EAAOA,EAAKgJ,WAAWxL,GACvBqL,EAAOA,EAAKG,WAAWxL,GAEvB8K,EAAWA,EAASU,WAAWxL,GAC1BmL,KAAK,UAAWnS,IAChBmS,KAAK,YAAa,SAAS/N,GAAK,OAAOqO,SAASrO,EAAIoN,EAASpN,IAAM2M,EAAU3M,GAAKjE,KAAKuS,aAAa,YAAc,GAEvHV,EACKG,KAAK,UAAWnS,IAChBmS,KAAK,YAAa,SAAS/N,GAAK,IAAI4E,EAAI7I,KAAKwS,WAAWrC,OAAQ,OAAOS,EAAU/H,GAAKyJ,SAASzJ,EAAIA,EAAE5E,IAAM4E,EAAIwI,EAASpN,GAAK,IAGpI0N,EAASc,SAETnS,EACK0R,KAAK,IAzFH,IAyFQ3B,GA3FP,GA2F0BA,EACvBK,EAAgB,IAAM1G,EAAI0G,EAAgB,IAAMS,EAAS,QAAUC,EAAS,IAAMpH,EAAI0G,EAAgB,QAAUS,EAAS,IAAMC,EAC/HV,EAAgB,IAAMS,EAAS,IAAMnH,EAAI0G,EAAgB,QAAUU,EAAS,IAAMpH,EAAI0G,EAAgB,IAAMS,EAAS,QAAUC,GAE1IK,EACKO,KAAK,UAAW,GAChBA,KAAK,YAAa,SAAS/N,GAAK,OAAO2M,EAAUS,EAASpN,GAAK,GAEpEoF,EACK2I,KAAKxR,EAAI,IAAKwJ,EAAIyG,GAEvByB,EACKF,KAAKxR,EAAGwJ,EAAIiH,GACZiB,KAAKlB,GAEVO,EAAUmB,OAAOxC,IACZ8B,KAAK,OAAQ,QACbA,KAAK,YAAa,IAClBA,KAAK,cAAe,cACpBA,KAAK,cA9GF,IA8GiB3B,EAAmB,QA5GrC,IA4G+CA,EAAkB,MAAQ,UAEhFkB,EACKoB,KAAK,WAAa3S,KAAKmQ,OAASkB,CAAU,EACjD,CAsCA,OA9GS5Q,EAAA2P,EAAA,QA0ETA,EAAKP,MAAQ,SAASxP,GACpB,OAAO4G,UAAUwB,QAAUoH,EAAQxP,EAAG+P,GAAQP,CAChD,EAEAO,EAAKU,MAAQ,WACX,OAAOR,EAAgBd,GAAML,KAAKlI,WAAYmJ,CAChD,EAEAA,EAAKE,cAAgB,SAASjQ,GAC5B,OAAO4G,UAAUwB,QAAU6H,EAAqB,MAALjQ,EAAY,GAAKmP,GAAML,KAAK9O,GAAI+P,GAAQE,EAAcd,OACnG,EAEAY,EAAKG,WAAa,SAASlQ,GACzB,OAAO4G,UAAUwB,QAAU8H,EAAkB,MAALlQ,EAAY,KAAOmP,GAAML,KAAK9O,GAAI+P,GAAQG,GAAcA,EAAWf,OAC7G,EAEAY,EAAKI,WAAa,SAASnQ,GACzB,OAAO4G,UAAUwB,QAAU+H,EAAanQ,EAAG+P,GAAQI,CACrD,EAEAJ,EAAKwC,SAAW,SAASvS,GACvB,OAAO4G,UAAUwB,QAAUgI,EAAgBC,GAAiBrQ,EAAG+P,GAAQK,CACzE,EAEAL,EAAKK,cAAgB,SAASpQ,GAC5B,OAAO4G,UAAUwB,QAAUgI,GAAiBpQ,EAAG+P,GAAQK,CACzD,EAEAL,EAAKM,cAAgB,SAASrQ,GAC5B,OAAO4G,UAAUwB,QAAUiI,GAAiBrQ,EAAG+P,GAAQM,CACzD,EAEAN,EAAKO,YAAc,SAAStQ,GAC1B,OAAO4G,UAAUwB,QAAUkI,GAAetQ,EAAG+P,GAAQO,CACvD,EAEOP,CACT,CAEO,SAASyC,GAAQhD,GACtB,OAAOO,GA7JC,EA6JSP,EACnB,CAEO,SAASiD,GAAUjD,GACxB,OAAOO,GAhKG,EAgKSP,EACrB,CAEO,SAASkD,GAAWlD,GACzB,OAAOO,GAnKI,EAmKSP,EACtB,CAEO,SAASmD,GAASnD,GACvB,OAAOO,GAtKE,EAsKSP,EACpB,CApKSpP,EAAAiP,GAAA,cAIAjP,EAAAkP,GAAA,cAIAlP,EAAAmP,GAAA,UAMAnP,EAAAqP,GAAA,UAQArP,EAAAyP,GAAA,YAIAzP,EAAA2P,GAAA,QA4HO3P,EAAAoS,GAAA,WAIApS,EAAAqS,GAAA,aAIArS,EAAAsS,GAAA,cAIAtS,EAAAuS,GAAA,YCzJT,MAAMC,GAAN,MAAMA,cAAaC,EAAAA,UACtBC,UACAC,iBAEUC,OACAC,aACAC,UACAC,QACAC,OACAC,SACAC,cACAC,IACAC,QACAC,UAEV,WAAAnT,CAAYoT,EAAyC,UACjDC,QACAhU,KAAKiU,cAAgBF,EAErB/T,KAAKkU,aACT,CAEA,QAAAC,GACI,OAAOnU,KAAKoU,MAAMpU,KAAKqU,MAC3B,CAEA,SAAAC,GACI,OAAOtU,KAAKoU,MAAMpU,KAAKuU,OAC3B,CAEA,KAAAH,CAAMnQ,EAAGuQ,GACL,GAAIvQ,aAAaiG,MACb,OAAOjG,EAAEwQ,IAAI,SAAU5O,GACnB,OAAO7F,KAAKoU,MAAMvO,EACtB,EAAG7F,MAEP,GAAIiE,QAA+B,CAC/B,GAAIjE,KAAKqT,OACL,OAAOrT,KAAKqT,OAAoB,iBAANpP,EAAiBA,EAAEP,WAAaO,GAE9D,GAAIuQ,GAA6B,iBAANvQ,EACvB,OAAQA,CAEhB,CACA,OAAOA,CACX,CAEA,WAAAyQ,CAAYzQ,GACR,OAAIA,aAAaiG,MACNjG,EAAEwQ,IAAI,SAAU5O,GACnB,OAAO7F,KAAK0U,YAAY7O,EAC5B,EAAG7F,MAEHA,KAAKsT,cAAgBrP,EACdjE,KAAKsT,aAAarP,GAEtBA,CACX,CAEA,MAAA+M,CAAO/M,GACH,OAAIA,aAAaiG,MACNjG,EAAEwQ,IAAI,SAAU5O,GACnB,OAAO7F,KAAKgR,OAAOnL,EACvB,EAAG7F,MAEHiE,SAAiCjE,KAAKuT,UAC/BvT,KAAKuT,UAAUtP,GAEnBA,CACX,CAEA,WAAA0Q,CAAY1Q,GACR,OAAOjE,KAAKgR,OAAOhR,KAAKoU,MAAMnQ,GAClC,CAEA,QAAA2Q,CAAS3Q,GACL,IAAI4Q,EAAS7U,KAAKwT,QAAQxT,KAAKoU,MAAMnQ,IAIrC,MAHoB,YAAhBjE,KAAK8U,SACLD,GAAU7U,KAAKgQ,YAAc,GAE1B6E,CACX,CAEA,SAAA7E,GACI,OAAOhQ,KAAKwT,QAAQxD,UAAYhQ,KAAKwT,QAAQxD,YAAc,CAC/D,CAEA,YAAA+E,GACI,OAAQ/U,KAAKgV,eACT,IAAK,OACL,IAAK,QACD,OAAO,EAGf,OAAO,CACX,CAEA,MAAAjE,CAAO1Q,GACH,OAAK4G,UAAUwB,QACfzI,KAAKwT,QAAQzC,OAAO1Q,GACbL,MAFuBA,KAAKwT,QAAQzC,QAG/C,CAEA,KAAAG,CAAM7Q,GACF,IAAK4G,UAAUwB,OAAQ,CACnB,GAAIzI,KAAKwT,QAAQyB,gBACb,OAAOjV,KAAKwT,QAAQ0B,cACxB,GAAWlV,KAAKwT,QAAQ2B,WACpB,OAAOnV,KAAKwT,QAAQtC,OAE5B,CAMA,OALIlR,KAAKwT,QAAQyB,gBACbjV,KAAKwT,QAAQyB,gBAAgB5U,EAAG,IACzBL,KAAKwT,QAAQ2B,YACpBnV,KAAKwT,QAAQtC,MAAM7Q,GAEhBL,IACX,CAEA,MAAAoV,CAAOC,GACH,OAAOrV,KAAKwT,QAAQ4B,OAAOC,EAC/B,CAEA,WAAAC,CAAYjV,GAIR,OAHAL,KAAK2T,cAAgB4B,EAAAA,OAASlV,GACzB2R,KAAK,QAAShS,KAAKwV,QAEjBxV,IACX,CAEA,KAAA8R,CAAM2D,EAASC,GACX1B,MAAMlC,MAAM2D,EAASC,GACrB1V,KAAK4T,IAAM8B,EAAQ3D,OAAO,KAC1B/R,KAAK6T,QAAU7T,KAAK4T,IAAI7B,OAAO,KAC1BC,KAAK,QAAS,QAEnBhS,KAAK8T,WAAa9T,KAAK2T,eAAiB+B,GAAS3D,OAAO,KACnDC,KAAK,QAAS,QAEvB,CAEU2D,iBACV,WAAAzB,GACI,OAAQlU,KAAK8U,QACT,IAAK,UASD,GARA9U,KAAKwT,QAAUoC,cACVC,aAAa7V,KAAK8V,uBAClBC,aAAa/V,KAAKgW,uBAEnBhW,KAAKiW,mBACLjW,KAAKwT,QAAQzC,OAAO/Q,KAAKkW,YAE7BlW,KAAKqT,OAAS,KACVrT,KAAKmW,yBAA0B,CAC/B,MAAMC,EAAWpW,KAAKqW,kBACtBrW,KAAKuT,UAAalT,GAAW+V,EAAS/V,IAAMA,CAChD,MACIL,KAAKuT,UAAY,KAErB,MACJ,IAAK,SACDvT,KAAKwT,QAAU8C,gBACXtW,KAAKuW,cAAgBvW,KAAKwW,eAC1BxW,KAAKwT,QAAQzC,OAAO,CAAC/Q,KAAKmU,WAAYnU,KAAKsU,cAE/CtU,KAAKqT,OAAS,KACdrT,KAAKuT,UAAYvT,KAAKyW,oBAAsBC,EAAAA,OAAS1W,KAAKwQ,cAAgB,KAC1E,MACJ,IAAK,MACDxQ,KAAKwT,QAAUmD,EAAAA,WACVC,SAAS5W,KAAK6W,eAEf7W,KAAKuW,cAAgBvW,KAAKwW,eAC1BxW,KAAKwT,QAAQzC,OAAO,CAAC/Q,KAAKmU,WAAYnU,KAAKsU,cAE/CtU,KAAKqT,OAAS,KACdrT,KAAKuT,UAAYvT,KAAKyW,oBAAsBC,EAAAA,OAAS1W,KAAKwQ,cAAgB,KAC1E,MACJ,IAAK,MACDxQ,KAAKwT,QAAUsD,EAAAA,WACVC,KAAK/W,KAAKgX,WAEXhX,KAAKuW,cAAgBvW,KAAKwW,eAC1BxW,KAAKwT,QAAQzC,OAAO,CAAC/Q,KAAKmU,WAAYnU,KAAKsU,cAE/CtU,KAAKqT,OAAS,KACdrT,KAAKuT,UAAYvT,KAAKyW,oBAAsBC,EAAAA,OAAS1W,KAAKwQ,cAAgB,KAC1E,MACJ,IAAK,OACDxQ,KAAKwT,QAAUyD,cACXjX,KAAKuW,cAAgBvW,KAAKwW,eAC1BxW,KAAKwT,QAAQzC,OAAO,CAAC/Q,KAAKmU,WAAYnU,KAAKsU,cAE/CtU,KAAKqT,OAASrT,KAAKkX,qBAAuBC,EAAAA,UAAYnX,KAAKoX,eAAiB,KAC5EpX,KAAKsT,aAAetT,KAAKkX,qBAAuBG,EAAAA,WAAarX,KAAKoX,eAAiB,KACnFpX,KAAKuT,UAAYvT,KAAKyW,oBAAsBY,EAAAA,WAAarX,KAAKwQ,cAAgB,KAItF,GAAIxQ,KAAK2V,mBAAqB3V,KAAKgV,cAAe,CAC9C,OAAQhV,KAAKgV,eACT,IAAK,OACDhV,KAAKyT,OAAS6D,GAAWtX,KAAKwT,SAC9BxT,KAAK0T,SAAW4D,GAAWtX,KAAKwT,SAChC,MACJ,IAAK,MACDxT,KAAKyT,OAAS8D,GAAUvX,KAAKwT,SAC7BxT,KAAK0T,SAAW6D,GAAUvX,KAAKwT,SAC/B,MACJ,IAAK,QACDxT,KAAKyT,OAAS+D,GAAYxX,KAAKwT,SAC/BxT,KAAK0T,SAAW8D,GAAYxX,KAAKwT,SACjC,MAEJ,QACIxT,KAAKyT,OAASgE,GAAazX,KAAKwT,SAChCxT,KAAK0T,SAAW+D,GAAazX,KAAKwT,SAG1CxT,KAAK2V,iBAAmB3V,KAAKgV,cACzBhV,KAAK6T,SACL7T,KAAK6T,QAAQ6D,KAAK,IAElB1X,KAAK8T,WACL9T,KAAK8T,UAAU4D,KAAK,GAE5B,CAEA,GAAI1X,KAAK2X,SACL,GACS,YADD3X,KAAK8U,YAGT,CACI,IAAIrM,EACAmP,EACAvD,EACAE,EACAsD,EACAC,EACA9X,KAAK+U,gBACLtM,EAASzI,KAAK+X,QACd/X,KAAKwT,QAAQtC,MAAM,CAAC,EAAGzI,IACvBmP,EAAQnP,EAASzI,KAAK2X,SAAW,IACjCtD,EAAMrU,KAAKwT,QAAQ4B,OAAO,GAC1ByC,EAAS7X,KAAKwT,QAAQ4B,QAAQwC,GAC9BrD,EAAOvU,KAAKwT,QAAQ4B,OAAO3M,GAC3BqP,EAAU9X,KAAKwT,QAAQ4B,OAAO3M,EAASmP,KAEvCnP,EAASzI,KAAKgY,SACdhY,KAAKwT,QAAQtC,MAAM,CAACzI,EAAQ,IAC5BmP,EAAQnP,EAASzI,KAAK2X,SAAW,IACjCtD,EAAMrU,KAAKwT,QAAQ4B,OAAO3M,GAC1BoP,EAAS7X,KAAKwT,QAAQ4B,OAAO3M,EAASmP,GACtCrD,EAAOvU,KAAKwT,QAAQ4B,OAAO,GAC3B0C,EAAU9X,KAAKwT,QAAQ4B,QAAQwC,IAE/BC,IAAWxD,IACXwD,EAASxD,EAAMA,EAAMrU,KAAK2X,SAAW,KAErCG,IAAYvD,IACZuD,EAAUvD,EAAOA,EAAOvU,KAAK2X,SAAW,KAEvCjY,KAAaqO,KAAKsG,KAAU3U,KAAaqO,KAAK8J,KAC/CA,EAAS,GAERnY,KAAaqO,KAAKwG,KAAW7U,KAAaqO,KAAK+J,KAChDA,EAAU,GAEd9X,KAAKwT,QAAQzC,OAAO,CAAC8G,EAAQC,GAC7B,CAIZ9X,KAAKyT,OACA5D,MAAM7P,KAAKwT,SACXhD,WAAWxQ,KAAKuT,WAChBzC,MAAM9Q,KAAKiY,aAEhBjY,KAAK0T,SACA7D,MAAM7P,KAAKwT,SACXZ,SAAS5S,KAAKkY,qBAAuBlY,KAAKmY,aAAe,GACzD3H,WAAW,IACXM,MAAM9Q,KAAKiY,aAEhB,MAAMG,EAAcpY,KAAK8Q,QAUzB,OATIsH,EAAY3P,SACZzI,KAAKyT,OACAlD,WAAW6H,EAAY3D,OAASzU,KAAKoU,MAAMnQ,EAAE+G,SAC7CwF,WAAW,CAAC6H,EAAI9O,IACN6O,EAAY7O,GAAG+O,OAE9BtY,KAAK0T,SACAnD,WAAW6H,EAAY3D,IAAIxQ,GAAKjE,KAAKoU,MAAMnQ,EAAE+G,UAE/ChL,IACX,CAEA,UAAAuY,CAAW3E,EAAK4E,GACZ,MAAMC,EAAgBzY,KAAK+U,eACrB2D,EAAgC,SAAvB1Y,KAAKgV,cACd2D,EAAkC,WAAvB3Y,KAAKgV,cAChBnO,EAAU7G,KACV4Y,EAAgBhF,EAAIpC,UAAU,gBAC/BqH,MAAM,cAAe7Y,KAAK8Y,cAC1BD,MAAM,YAAa7Y,KAAK+Y,kBAAoB/Y,KAAKgZ,WAAa,KAAO,MAE1E,GAA2B,cAAvBhZ,KAAKiZ,cACe,YAAhBjZ,KAAK8U,QACL8D,EACKzJ,KAAK,WACF,OAAOtI,EAAQqS,UAAUlS,MAAMH,EAASI,UAC5C,EAAGjH,KAAKgQ,kBAGpB,GAAkC,SAAvBhQ,KAAKiZ,cACQ,YAAhBjZ,KAAK8U,QACL8D,EACKzJ,KAAK,WACF,OAAOtI,EAAQsS,KAAKnS,MAAMH,EAASI,UACvC,EAAGjH,KAAKgQ,kBAIhB,OAAQyI,EAAgBzY,KAAKiZ,cAAgB,QACzC,IAAK,UACDL,EACKC,MAAM,cAAe,UACrB7G,KAAK,KAAM,SAAUqG,EAAI9O,GAAK,OAAQoP,EAAW,GAAI,KAAQA,EAAW,IAAO,GAAKpP,EAAIiP,GAAsB,IAAM,GACpHxG,KAAK,KAAM,GACXA,KAAK,aAAc,MACnBA,KAAK,YAAa,aAEvB,MACJ,IAAK,OACD4G,EACKC,MAAM,cAAe,UACrB7G,KAAK,MAAO2G,EAAW,IAAO,GAAK,MACnC3G,KAAK,KAAM,GACXA,KAAK,aAAc,SAAUqG,EAAI9O,GAAK,OAAOA,EAAIiP,EAAqB,SAAW,IAAM,GACvFxG,KAAK,YAAa,aAEvB,MACJ,IAAK,SACD,MAAMoH,GAAQpZ,KAAKqZ,iBAAoB,EACvC,GAAY,IAARD,GAAaZ,EAAqB,EAAG,CACrCI,EACKjG,KAAK,WACF,MAAM2G,EAAM/D,EAAAA,OAASvV,MACfuZ,EAAOD,EAAIE,OAAOC,UAClBC,GAASf,EAAW,GAAI,GAAMjZ,KAAK0D,IAAI1D,KAAKC,KAAOD,KAAKsC,IAAIoX,GAAO,MACzEE,EACKT,MAAM,cAAeO,EAAM,EAAKT,EAAW,QAAU,MAAUA,EAAW,MAAQ,SAClF3G,KAAK,KAAOuH,EAAKvB,OAAS,EAAI0B,EAAS,MACvC1H,KAAK,KAAMoH,EAAM,EAAKT,EAAW,SAAW,UAAcA,EAAW,UAAY,UACjF3G,KAAK,YAAa,UAAYoH,EAAM,KACpCpH,KAAK,aAAc,KAE5B,GAEJ,KACJ,CAEJ,QACI4G,EACKC,MAAM,cAAeJ,EAAgB,SAAWC,EAAS,MAAQ,SACjE1G,KAAK,KAAMyG,GAAkBE,EAAW,IAAO,GAAK,KAAQ,UAC5D3G,KAAK,KAAM,GACXA,KAAK,aAAc,MACnBA,KAAK,YAAa,aAIvC,CAEA,sBAAA2H,CAAuBjE,GACnB,IAAIb,EAAS,EACb,OAAQ7U,KAAKiZ,eACT,IAAK,SACL,IAAK,UACL,IAAK,OACD,MAAMW,EAAU,GAChBlE,EAAQlE,UAAU,gBAAgBmB,KAAK,WACnC,MAAM4G,EAAOvZ,KAAK6Z,wBAClB,IAAA,IAAStQ,EAAIqQ,EAAQnR,OAAS,EAAGc,GAAK,KAC9BqQ,EAAQrQ,GAAGuQ,MAAQP,EAAKQ,QADWxQ,EAInCqQ,EAAQnR,OAAS,EAAIc,EAAIsL,IACzBA,EAAS+E,EAAQnR,OAAS,EAAIc,GAGtCqQ,EAAQvN,KAAKkN,EACjB,GAIR,OAAO1E,CACX,CAEA,YAAAmF,CAAatE,EAASuE,GAElB,GADAja,KAAKkU,cACDlU,KAAKka,SACL,MAAO,CACHH,KAAM,EACNI,IAAK,EACLL,MAAO,EACPM,OAAQ,EACRC,MAAO,EACP7B,mBAAoB,GAG5B,MAAMzD,EAAe/U,KAAK+U,eAC1B/U,KAAKkR,MAAM6D,EAAe,CAAC,EAAG/U,KAAK+X,SAAW,CAAC/X,KAAKgY,SAAU,IAC9D,MAAMsC,EAAS5E,EAAQ3D,OAAO,KAAKC,KAAK,QAAShS,KAAKua,WAChDC,EAAUF,EAAOvI,OAAO,KAC9ByI,EACKxI,KAAK,QAAS+C,EAAe,IAAM,KACnC5F,KAAKnP,KAAKyT,QAEXwG,GACAvE,EAAQlE,UAAU,gBAAgBiB,SAGtC,MAAMoC,EAAoB,CACtBkF,KAAM,EACNI,IAAK,EACLL,MAAO,EACPM,OAAQ,EACRC,MAAO,EACP7B,mBAAoBxY,KAAK2Z,uBAAuBa,IAEpDxa,KAAKuY,WAAWiC,EAAS3F,EAAO2D,oBAEhC,MAAMe,EAAOiB,EAAQhB,OAAOC,UAE5B,OADA5E,EAAOwF,MAAQtF,EAAewE,EAAKvB,OAASuB,EAAKxB,MACzC/X,KAAKya,eACT,IAAK,MACL,IAAK,OACD5F,EAAOkF,KAAOhF,GAAgBwE,EAAK/Y,EAAI,EACvCqU,EAAOuF,OAASrF,EAAe,IAAM/U,KAAKgY,UAAYuB,EAAKvB,OAASuB,EAAK1Y,IAIjF,OAAQb,KAAKya,eACT,IAAK,OACL,IAAK,OACD5F,EAAOsF,IAAMpF,EAAe,GAAKwE,EAAK1Y,EACtCgU,EAAOiF,MAAQ/E,IAAiB/U,KAAK+X,QAAUwB,EAAK/Y,EAAI+Y,EAAKxB,OAAS,EAM9E,OAFAuC,EAAO7H,SAEAoC,CACX,CAEA,IAAAsE,CAAKuB,EAAOC,EAAUC,GAClBA,EAAKA,GAAM,MACX,MAAM/T,EAAU7G,KAChB0a,EAAM/H,KAAK,WACP,MAAMT,EAAOqD,EAAAA,OAASvV,MAChB6a,EAAQ3I,EAAKA,OAAO4I,MAAMF,GAAIG,UACpC,IAAI1R,EAAO,GACP2R,EAAa,EACjB,MACMxa,EAAI0R,EAAKF,KAAK,KACdnR,EAAIqR,EAAKF,KAAK,KACdiJ,EAAKC,WAAWhJ,EAAK2G,MAAM,eAAiB,GAC5CsC,EAAkBzb,KAAK0b,MAAMT,GAJhB,IAI4BM,IAAoB,EAC7DI,EAAkBxU,EAAQkO,eAAiB,EAAIrV,KAAK4b,KAAKT,EAAMpS,OAAS0S,GACxEhY,EAAK+X,WAAWhJ,EAAKF,KAAK,OAEhC,IAAIuJ,EAAQrJ,EAAKA,KAAK,MAAMH,OAAO,SAC9BC,KAAK,IAAKxR,GACVwR,KAAK,IAAKnR,GACVmR,KAAK,KAAM7O,EAAK,MAEjBqY,EAAc,EACdC,EAAOZ,EAAMa,MACjB,KAAOD,GACHpS,EAAKgD,KAAKoP,GACVF,EAAMrJ,KAAK7I,EAAKsS,KAAK,MACrBH,IACKD,EAAM/B,OAAeoC,wBAA0BjB,GAAYa,GAAeH,IAC3EhS,EAAKqS,MACLH,EAAMrJ,KAAK7I,EAAKsS,KAAK,MACrBtS,EAAO,CAACoS,GACRF,EAAQrJ,EAAKH,OAAO,SAASC,KAAK,IAAKxR,GAAGwR,KAAK,IAAKnR,GAAGmR,KAAK,KAvBjD,MAuByDgJ,EAA0B7X,EAAK,MAAM+O,KAAKuJ,GAC9GD,EAAc,GAElBC,EAAOZ,EAAMa,MAEZ7U,EAAQkO,gBACT7C,EAAKV,UAAU,SACVQ,KAAK,KAAOgJ,EAAa,EAAK,KAG3C,EACJ,CAEA,SAAA9B,CAAUhH,EAAMyI,GACZ3a,KAAKmZ,KAAKjH,EAAMyI,EAAU,KAC9B,CAEA,MAAAkB,CAAOpG,EAASC,GACZ1B,MAAM6H,OAAOpG,EAASC,GAEtB1V,KAAK4T,IAAIiF,MAAM,UAAW7Y,KAAKka,SAAW,OAAS,MAEnD,MAAM4B,EAAU9b,KAAKga,aAAatE,GAE5BqG,EAAmB/b,KAAK+U,eAAiB+G,EAAQ/B,KAAO/Z,KAAKgY,SAAW8D,EAAQ3B,IAAM2B,EAAQ1B,OAC9F4B,EAAmBhc,KAAK+U,eAAiB/U,KAAK+X,QAAU+D,EAAQhC,MAAQ9Z,KAAKic,UAAY,EAAIjc,KAAKic,UAExGjc,KAAKkR,MAAMlR,KAAK+a,UAAY,CAACiB,EAAUD,GAAY,CAACA,EAAUC,IAE9D,MAAMnV,EAAU7G,KAChB,SAASkc,EAAWxG,GAChBA,EAAQ1D,KAAK,YAAa,WACtB,OAAQnL,EAAQmO,eACZ,IAAK,OACD,MAAO,aAAe8G,EAAQzB,MAAQ,KAAOyB,EAAQ3B,IAAM,IAC/D,IAAK,MACD,MAAO,eAAiB2B,EAAQzB,MAAQ,IAC5C,IAAK,QACD,MAAO,cAAgBxT,EAAQkR,QAAU+D,EAAQzB,OAAS,KAAOyB,EAAQ3B,IAAM,IACnF,IAAK,SACD,MAAO,gBAAkBtT,EAAQmR,SAAW8D,EAAQzB,OAAS,IAGrE,MAAO,gBACX,EACJ,CAfS5Z,EAAAyb,EAAA,cAgBTlc,KAAK4T,IAEAiF,MAAM,aAA8B,SAAhB7Y,KAAK8U,OAAoB,SAAW,MACxDzC,aACAlD,KAAK+M,GAENlc,KAAK2T,eACL3T,KAAK8T,UACAzB,aACAlD,KAAK+M,GAGdlc,KAAK6T,QACA1E,KAAKnP,KAAKyT,QAEfzT,KAAKuY,WAAWvY,KAAK6T,QAASiI,EAAQtD,oBAG/BxY,KAAKqV,MAAM7U,EADlB,MAAM2b,EAEKnc,KAAK+X,QAEVqE,EAAUpc,KAAK6T,QAAQrC,UAAU,cAAclI,KAAKtJ,KAAKqc,QAAU,CAACrc,KAAKqc,SAAW,IAKpFC,EAJgBF,EAAQtK,QAAQC,OAAO,QACxCC,KAAK,QAAS,aACdG,MAAMiK,GAE8B/J,aACpCL,KAAK,KAAM,MACX6G,MAAM,cAAe,OAE1B,OAAQ7Y,KAAKgV,eACT,IAAK,OACDsH,EACKtK,KAAK,YAAa,eAClBA,KAAK,KAAK,GACVA,KAAK,IAAK,GACVA,KAAK,KAAM,SAEhB,MACJ,IAAK,QACDsK,EACKtK,KAAK,YAAa,eAClBA,KAAK,QACLA,KAAK,IAAK,GACVA,KAAK,KAAM,MACXA,KAAK,KAAM,UAEhB,MACJ,IAAK,MACDsK,EACKtK,KAAK,YAAa,aAClBA,KAAK,IAAKmK,EAAoB,GAC9BnK,KAAK,IAAK,GACVA,KAAK,KAAM,MACXA,KAAK,KAAM,SAEhB,MACJ,IAAK,SACDsK,EACKtK,KAAK,YAAa,aAClBA,KAAK,IAAKmK,EAAoB,GAC9BnK,KAAK,KAAK,GACVA,KAAK,KAAM,MAKxBsK,EACKpK,KAAKlS,KAAKuc,eAAiBvc,KAAKqc,QAAU,IAE/CD,EAAQxK,OAAOa,SACfzS,KAAK8T,UACA3E,KAAKnP,KAAK0T,UACVlC,UAAU,SAASgL,QAAQ,aAAsB,IAANvY,GAAWjE,KAAKqU,MAAQ,EAE5E,CAEA,QAAAoI,GACIzc,KAAK6T,QAAQ1E,KAAKnP,KAAKyT,QACvBzT,KAAK8T,UAAU3E,KAAKnP,KAAK0T,SAC7B,CAEA,UAAAgJ,CAAWjH,EAASC,GAChB1B,MAAM0I,WAAWjH,EAASC,GACtB1V,KAAK2T,eACL3T,KAAK2T,cACA3B,KAAK,YAAahS,KAAK2c,SAAS3K,KAAK,aAGlD,GA9mBgCvR,EAAAwS,GAAA,QAA7B,IAAM2J,GAAN3J,GAgnBP2J,GAAKlc,UAAU8U,QAAU,cA4EzBoH,GAAKlc,UAAUmc,QAAQ,OAAQ,SAAU,MAAO,OAAQ,CAAC,OAAQ,UAAW,SAAU,MAAO,MAAO,SACpGD,GAAKlc,UAAUmc,QAAQ,cAAe,WAAY,SAAU,sBAAuB,KAAM,CAAEC,QAASrc,EAAC+C,GAAwB,SAAbA,EAAEsR,OAAd,aACpG8H,GAAKlc,UAAUmc,QAAQ,WAAW,EAAO,UAAW,WAEpDD,GAAKlc,UAAUmc,QAAQ,QAAS,KAAM,SAAU,SAChDD,GAAKlc,UAAUmc,QAAQ,cAAe,SAAU,MAAO,oCAAqC,CAAC,OAAQ,MAAO,QAAS,WACrHD,GAAKlc,UAAUmc,QAAQ,cAAe,EAAG,SAAU,mDAAoD,KAAM,CAAEC,QAASrc,EAAC+C,GAAwB,QAAbA,EAAEsR,OAAd,aACxH8H,GAAKlc,UAAUmc,QAAQ,UAAW,GAAI,SAAU,qDAAsD,KAAM,CAAEC,QAASrc,EAAC+C,GAAwB,QAAbA,EAAEsR,OAAd,aACvH8H,GAAKlc,UAAUmc,QAAQ,WAAY,GAAI,QAAS,2EAA4E,KAAM,CAAEC,UAAUtZ,GAAwB,YAAbA,EAAEsR,OAAd,aAC7I8H,GAAKlc,UAAUmc,QAAQ,WAAY,KAAM,SAAU,mCAAoC,KAAM,CAAEE,UAAU,IACzGH,GAAKlc,UAAUmc,QAAQ,aAAc,KAAM,SAAU,6BAA8B,KAAM,CAAEE,UAAU,IACrGH,GAAKlc,UAAUmc,QAAQ,YAAa,KAAM,SAAU,+DAAgE,KAAM,CAAEE,UAAU,EAAMD,UAAUtZ,GAAwB,YAAbA,EAAEsR,OAAd,aACrJ8H,GAAKlc,UAAUmc,QAAQ,aAAc,KAAM,SAAU,+DAAgE,KAAM,CAAEE,UAAU,EAAMD,UAAUtZ,GAAwB,YAAbA,EAAEsR,OAAd,aACtJ8H,GAAKlc,UAAUmc,QAAQ,aAAc,KAAM,SAAU,8EAA+E,KAAM,CAAEE,UAAU,IACtJH,GAAKlc,UAAUmc,QAAQ,QAAS,GAAI,QAAS,qBAAsB,KAAM,CAAEE,UAAU,IACrFH,GAAKlc,UAAUmc,QAAQ,MAAO,KAAM,MAAO,qDAAsD,KAAM,CAAEE,UAAU,EAAMD,UAAUtZ,GAAwB,YAAbA,EAAEsR,OAAd,aAClI8H,GAAKlc,UAAUmc,QAAQ,OAAQ,KAAM,MAAO,qDAAsD,KAAM,CAAEE,UAAU,EAAMD,UAAUtZ,GAAwB,YAAbA,EAAEsR,OAAd,aACnI8H,GAAKlc,UAAUmc,QAAQ,cAAe,OAAQ,MAAO,kDAAmD,CAAC,OAAQ,UAAW,OAAQ,SAAU,YAAa,SAC3JD,GAAKlc,UAAUmc,QAAQ,gBAAiB,GAAI,SAAU,gFAAiF,KAAM,CAAEE,UAAU,EAAMD,UAAUtZ,GAA+B,WAApBA,EAAEyV,cAAd,aACxK2D,GAAKlc,UAAUmc,QAAQ,cAAe,OAAQ,MAAO,cAAe,CAAC,OAAQ,MAAO,OAAQ,SAC5FD,GAAKlc,UAAUmc,QAAQ,SAAU,EAAG,SAAU,8GAA+G,KAAM,CAAEE,UAAU,EAAMD,UAAUtZ,GAAwB,YAAbA,EAAEsR,OAAd,aAC9L8H,GAAKlc,UAAUmc,QAAQ,UAAU,EAAO,UAAW,0BAEnDD,GAAKlc,UAAUmc,QAAQ,sBAAuB,GAAK,SAAU,yFAA0F,KAAM,CAAEC,QAASrc,EAAC+C,GAAyB,YAAbA,EAAEsR,OAAf,aACxK8H,GAAKlc,UAAUmc,QAAQ,sBAAuB,GAAK,SAAU,0HAA2H,KAAM,CAAEC,QAASrc,EAAC+C,GAAyB,YAAbA,EAAEsR,OAAf,aACzM8H,GAAKlc,UAAUmc,QAAQ,kBAAmB,KAAM,SAAU,qCAAsC,KAAM,CAAEE,UAAU,IAClHH,GAAKlc,UAAUmc,QAAQ,UAAW,EAAG,SAAU,wCAAyC,KAAM,CAAEE,UAAU,IAE1GH,GAAKlc,UAAUyS,UAAYyJ,GAAKlc,UAAUoU,KAC1C8H,GAAKlc,UAAUoU,KAAO,SAAUzU,GAC5B,MAAMwU,EAAS+H,GAAKlc,UAAUyS,UAAUnM,MAAMhH,KAAMiH,WAKpD,YAJU,IAAN5G,IACAL,KAAKgd,MAAQ3c,EACbL,KAAKkU,eAEFW,CACX,EAEA+H,GAAKlc,UAAU0S,iBAAmBwJ,GAAKlc,UAAU0W,YACjDwF,GAAKlc,UAAU0W,YAAc,SAAU/W,GACnC,MAAMwU,EAAS+H,GAAKlc,UAAU0S,iBAAiBpM,MAAMhH,KAAMiH,WAK3D,YAJU,IAAN5G,IACAL,KAAKid,aAAe5c,EACpBL,KAAKkU,eAEFW,CACX,ECpvBO,MAAMqI,GAAN,MAAMA,gBAAehK,EAAAA,UACdiK,WACAC,UACAC,MACAC,MACAC,QACAC,OACAC,OACAC,OACAC,WAEV,WAAAhd,GACIqT,QACA4J,UAAQC,qBAAqB1O,KAAKnP,MAElCA,KAAKiU,cAAgB,SAErBjU,KAAKmd,YAAa,IAAIP,IACjBJ,QAAQ,CAAEzL,QAAQ,IAClB+M,oBAAoB,UACpBhJ,KAAK,WACLiJ,oBAAoB,WACpBC,oBAAoB,QACpBC,eAAe,GAEpBje,KAAKod,WAAY,IAAIR,IAChBJ,QAAQ,CAAExR,OAAO,IACjB8S,oBAAoB,QACpBhJ,KAAK,UACLkJ,oBAAoB,QAGzBhe,KAAKud,QAAUW,EAAAA,QACVC,GAAG,MAAO,IACAne,KAAKoe,cAEfD,GAAG,uCAAwC,IACjCne,KAAKqe,eAGpBre,KAAKwd,OAASc,EAAAA,SACTH,GAAG,MAAO,IACAne,KAAKoe,cAEfD,GAAG,uCAAwC,IACjCne,KAAKqe,eAGpBre,KAAKyd,OAASc,EAAAA,SACTJ,GAAG,MAAO,IACAne,KAAKoe,cAEfD,GAAG,uCAAwC,IACjCne,KAAKqe,cAGxB,CAEUG,WACV,cAAAC,GAEI,OADAze,KAAKwe,WAAa,KACXxe,IACX,CAEA,SAAA0e,CAAUza,GACN,OAAOjE,KAAKmd,WAAW/I,MAAMnQ,EACjC,CAEA,UAAA0a,CAAW1a,GACP,OAAOjE,KAAKod,UAAUhJ,MAAMnQ,GAAG,EACnC,CAEA,UAAA2a,CAAW3a,GACP,OAAOjE,KAAKmd,WAAWnM,OAAO/M,EAClC,CAEA,WAAA4a,CAAY5a,GACR,OAAOjE,KAAKod,UAAUpM,OAAO/M,EACjC,CAEA,UAAA6a,GAeI,OAde9e,KAAKsJ,OAAOmL,IAAI,SAAUsK,GACrC,IAAIC,EAAY,EAChB,OAAOD,EAAItK,IAAI,SAAUwK,EAAMC,GAC3B,GAAY,IAARA,EACA,OAAOlf,KAAK0e,UAAUO,GAE1B,GAAIC,GAAOlf,KAAKmf,UAAU1W,OACtB,OAAOwW,EAEX,MAAMG,EAAUpf,KAAKqf,eAAiB,CAACL,EAAWA,EAAYhf,KAAK2e,WAAWM,IAASjf,KAAK2e,WAAWM,GAEvG,OADAD,GAAahf,KAAK2e,WAAWM,GACtBG,CACX,EAAGpf,KACP,EAAGA,KAEP,CAEA,SAAAgQ,GACI,OAAOhQ,KAAKmd,WAAWnN,WAC3B,CAEU4D,IACA0L,WACAC,eACAC,cACAC,QACAC,gBACAC,SACAC,SACV,KAAA9N,CAAM2D,EAASC,GACX1B,MAAMlC,MAAM2D,EAASC,GACrB1V,KAAK4T,IAAM8B,EAAQ3D,OAAO,KAC1B/R,KAAKsf,WAAa5J,EAAQ3D,OAAO,KACjC/R,KAAKuf,eAAiBvf,KAAK4T,IAAI7B,OAAO,KACtC/R,KAAKwf,cAAgBxf,KAAK4T,IAAI7B,OAAO,KACrC/R,KAAKyf,QAAUzf,KAAK4T,IAAI7B,OAAO,KAE/B/R,KAAK0f,gBAAkB1f,KAAK4T,IAAI7B,OAAO,YAClCC,KAAK,KAAMhS,KAAK6f,KAAO,aACvB9N,OAAO,QACPC,KAAK,IAAK,GACVA,KAAK,IAAK,GAEfhS,KAAKyf,QAAUzf,KAAK4T,IAAI7B,OAAO,KAC1BC,KAAK,YAAa,QAAUhS,KAAK6f,KAAO,cAE7C7f,KAAK8f,WAAWC,cAAc/f,KAAKyf,SAEnCzf,KAAK2f,SAAWjK,EAAQ3D,OAAO,KAE/B/R,KAAKmd,WACA6C,OAAOhgB,KAAK4T,IAAI4F,QAChBlE,YAAYtV,KAAKuf,eAAe/F,QAGrCxZ,KAAKod,UACA4C,OAAOhgB,KAAK4T,IAAI4F,QAChBlE,YAAYtV,KAAKwf,cAAchG,QAGpCxZ,KAAK4f,SAAWlK,EAAQ3D,OAAO,KAC1BC,KAAK,QAAS,SAEnBhS,KAAKigB,YAAYjgB,KAAMA,KAAKyf,QAAS,IACzC,CAEA,iBAAAS,CAAkBjc,EAAG8T,EAAOC,GACxB,IAAImI,EACA3f,EACAK,EACJ,MAAe,MAAXoD,EAAE6Q,MAA2B,MAAX7Q,EAAE6Q,MACpBqL,IAAiB,MAAXlc,EAAE6Q,MACRtU,EAAI2f,EAAI,GAAI,EACZtf,EAAImX,EAAS,EACN,IAAO,GAAMxX,EAAK,IAAMK,EAC3B,YAAcsf,EAAI,IAAO,IAAM3f,EAAK,KAAOK,EAAI,GAC/C,KAAO,EAAIA,EAAI,GACf,YAAcsf,EAAI,IAAO,GAAM3f,EAAK,IAAO,EAAIK,EAC/C,KACO,IAAML,EAAK,KAAOK,EAAI,GAC7B,KAAO,EAAIA,EAAI,GACf,IAAO,IAAML,EAAK,KAAOK,EAAI,GAC7B,KAAO,EAAIA,EAAI,KAEnBsf,IAAiB,MAAXlc,EAAE6Q,MACRjU,EAAIsf,EAAI,GAAI,EACZ3f,EAAIuX,EAAQ,EACL,IAAMvX,EAAI,KAAQ,GAAMK,EAC3B,aAAesf,EAAI,GAAK,EAAI,KAAO3f,EAAI,GAAK,IAAO,IAAMK,EACzD,KAAO,EAAIL,EAAI,GACf,aAAe2f,EAAI,GAAK,EAAI,IAAO,EAAI3f,EAAK,IAAO,GAAMK,EACzD,MACOL,EAAI,GAAK,IAAO,IAAMK,EAC7B,KAAO,EAAIL,EAAI,GACf,KAAOA,EAAI,GAAK,IAAO,IAAMK,EAC7B,KAAO,EAAIL,EAAI,GAE3B,CAEQ4f,gBAAiB,EAGzB,aAAAC,CAAchgB,GACV,OAAK4G,UAAUwB,QACfzI,KAAKogB,eAAiB/f,EACfL,MAFuBA,KAAKogB,cAGvC,CAEA,UAAAhC,GACI,GAAIpe,KAAKogB,eAAgB,OACzB,IAAIE,EAAW,GACf,MAAMzZ,EAAU7G,KACVugB,EAAeC,EAAAA,eAAiBxgB,KAAK4f,SAASpG,QAChD+G,IACAD,EAAWtgB,KAAKsJ,OAAOoJ,OAAO,SAAUzO,GACpC,MAAMoR,EAAMxO,EAAQ4Z,QAAQxc,EAAE,IAC9B,GAAI4C,EAAQ6Z,iBAAkB,CAC1B,MAAMC,EAAO9Z,EAAQ+Z,SAAS3c,EAAE,IAAM4C,EAAQuW,UAAUpN,YAAc,EACtE,OAAOqF,GAAOkL,EAAQ,GAAG,IAAMlL,GAAOkL,EAAQ,GAAG,IAAMI,GAAQJ,EAAQ,GAAG,IAAMI,GAAQJ,EAAQ,GAAG,EACvG,CACI,OAAOlL,GAAOkL,EAAQ,IAAMlL,GAAOkL,EAAQ,EAEnD,IAEJvgB,KAAKuR,UAAU+O,EACnB,CAEA,WAAAjC,GACI,MAAMtJ,EAAsC,eAAvB/U,KAAKgV,cACpB6L,EAAc7gB,KAAK0gB,iBAAmB,GAAK3L,EAAe,CAAC,CAAED,KAAM,KAAO,CAAEA,KAAM,MAAS,CAAC,CAAEA,KAAM,KAAO,CAAEA,KAAM,MACnHgM,EAAa9gB,KAAK4f,SAASpO,UAAU,mBAAmBlI,KAAKuX,GAC7DE,EAAIC,EAAAA,WAAWzP,UACZ,MAALwP,EACAD,EAAW9O,KAAK,UAAW,QACpB+C,EACP+L,EAAW9O,KAAK,UAAW,MAAMA,KAAK,YAAa,CAACqG,EAAI9O,IAAM,aAAewX,EAAExX,GAAK,OAEpFuX,EAAW9O,KAAK,UAAW,MAAMA,KAAK,YAAa,CAACqG,EAAI9O,IAAM,gBAA0BwX,EAAExX,GAAK,IAEvG,CAEA,OAAAkX,CAAQxc,GACJ,OAAOjE,KAAKmd,WAAWvI,SAAS3Q,EACpC,CAEA,QAAA2c,CAAS3c,GACL,OAAOjE,KAAKod,UAAUxI,SAAS3Q,EACnC,CAEA,WAAAgd,CAAYC,GACR,MAAO,CACHnJ,MAAQ/X,KAAKqd,MAA6Brd,KAAKqd,MAAMtF,QAAhCmJ,EAAK7D,MAAMtF,QAChCC,OAAShY,KAAKsd,MAA6Btd,KAAKsd,MAAMtF,SAAhCkJ,EAAK5D,MAAMvF,QAEzC,CAEA,UAAAoJ,CAAWC,EAAU1L,EAASX,GAC1B,MAAM2I,EAAS,CACXvD,KAAMpF,GAAgB/U,KAAKqhB,gBAAkB,GAAK,EAClDvH,MAAO/E,IAAiB/U,KAAKqhB,iBAAmBrhB,KAAKshB,cAAgB,GAAK,EAC1ElH,QAASpa,KAAKshB,aAAethB,KAAKuhB,mBAAqB,GAAK,EAC5DxH,KAAM,GAEJhC,EAAQ/X,KAAK+X,QAAU2F,EAAO3D,KAAO2D,EAAO5D,MAC5C9B,EAAShY,KAAKgY,SAAW0F,EAAOvD,IAAMuD,EAAOtD,OAEnD,IAAIoH,EAAS,EACTC,EAAU,GACVC,EAAO,EACPC,EAAS,GACb,IAAA,IAASpY,EAAI,EAAGA,EAAI,KAAMA,EAAG,CACzBvJ,KAAKqd,MAAMtF,MAAMA,EAAQ4J,GAAQ3J,OAAO,GACxC,MAAM4J,EAAe5hB,KAAKqd,MAAMrD,aAAatE,GACvCmM,EAAaD,EAAavH,MAEhCra,KAAKsd,MAAMvF,MAAM,GAAGC,OAAOA,EAASyJ,GACpC,MAAMK,EAAe9hB,KAAKsd,MAAMtD,aAAatE,GACvCqM,EAAYD,EAAazH,MAK/B,GAHAmH,EAASI,EAAa9H,MACtB4H,EAAOI,EAAa3H,IAEhB0H,IAAeJ,GAAWM,IAAcJ,EACxC,MAEJF,EAAUI,EACVF,EAASI,CACb,CAeA,OAdA/hB,KAAKqd,MACA7c,EAAEuX,EAAQ,EAAI4J,EAAS,EAAIjE,EAAO3D,MAClClZ,EAAEmX,EAAS0F,EAAOvD,KAClBpC,MAAMA,EAAQ4J,GAEnB3hB,KAAKsd,MACA9c,EAAEkd,EAAO3D,MACTlZ,EAAEmX,EAAS,EAAIyJ,EAAU,EAAI/D,EAAOvD,KACpCnC,OAAOA,EAASyJ,GAErB/D,EAAO3D,MAAQ4H,EACfjE,EAAOvD,KAAOuH,EACdhE,EAAO5D,OAAS0H,EAChB9D,EAAOtD,QAAUqH,EACV/D,CACX,CAEA,aAAAsE,CAAcZ,EAAUzE,EAAU5H,GAC9B,MAAMlO,EAAU7G,KAEViiB,EAAUjiB,KAAKsf,WAAW9N,UAAU,WAAWlI,KAAKtJ,KAAKiiB,WAC/DA,EAAQnQ,QAAQC,OAAO,QAClBC,KAAK,QAAS,UAEf+C,EACAkN,EACKjQ,KAAK,IAAK,SAAU/N,GAAK,OAAO4C,EAAQ4Z,QAAQxc,EAAEzC,GAAK,GACvDwQ,KAAK,IAAK,GACVA,KAAK,QAAS,SAAU/N,GAAK,OAAO4C,EAAQ4Z,QAAQxc,EAAEhD,IAAM4F,EAAQ4Z,QAAQxc,EAAEzC,GAAK,GACnFwQ,KAAK,SAAUhS,KAAKgY,UACpBa,MAAM,SAAU,SAAU5U,GAAK,OAAO4C,EAAQqb,SAASje,EAAEke,QAAU,GACnEtJ,MAAM,OAAQ,SAAU5U,GAAK,OAAOme,EAAAA,IAAMvb,EAAQqb,SAASje,EAAEke,UAAUE,UAAY,GAGxFJ,EACKjQ,KAAK,IAAK,GACVA,KAAK,IAAK,SAAU/N,GAAK,OAAO4C,EAAQ4Z,QAAQxc,EAAEzC,GAAK,GACvDwQ,KAAK,QAAShS,KAAK+X,SACnB/F,KAAK,SAAU,SAAU/N,GAAK,OAAO4C,EAAQ4Z,QAAQxc,EAAEzC,IAAMqF,EAAQ4Z,QAAQxc,EAAEhD,GAAK,GACpF4X,MAAM,SAAU,SAAU5U,GAAK,OAAO4C,EAAQqb,SAASje,EAAEke,QAAU,GACnEtJ,MAAM,OAAQ,SAAU5U,GAAK,OAAOme,EAAAA,IAAMvb,EAAQqb,SAASje,EAAEke,UAAUE,UAAY,GAG5FJ,EAAQrQ,OAAOa,QACnB,CAEU6P,eACV,MAAAzG,CAAOpG,EAASC,GACZ1B,MAAM6H,OAAOpG,EAASC,GACtB,MAAM7O,EAAU7G,KAEV+U,EAAsC,eAAvB/U,KAAKgV,cAc1B,GAbAhV,KAAKgiB,cAAcvM,EAASC,EAASX,GAErC/U,KAAKmd,WACAnI,YAAYD,EAAe,SAAW,QACtCsH,MAAMrc,KAAKuiB,oBAAsBviB,KAAKwiB,aAAexiB,KAAKmf,UAAU,IAEzEnf,KAAKod,UACApI,YAAYD,EAAe,OAAS,UAEzC/U,KAAKqd,MAAQtI,EAAe/U,KAAKmd,WAAand,KAAKod,UACnDpd,KAAKsd,MAAQvI,EAAe/U,KAAKod,UAAYpd,KAAKmd,WAIzC,YADDnd,KAAKyiB,YACT,CACI,MAAMC,EAAS1iB,KAAKmf,UAAU1W,OACxB4N,EAAkB,CAAA,EACxBrW,KAAKmd,WACAjH,SAASlW,KAAKsJ,OAAOmL,IAAI,SAAUxQ,GAEhC,OADAoS,EAAgBpS,EAAE,IAAM4C,EAAQ8b,oBAAoB1e,EAAGA,EAAEye,IAClDze,EAAE,EACb,IACCoS,gBAAgBA,EAGrB,KACJ,CACI,MAAMuM,EAAY5iB,KAAK6iB,iBAAmB7iB,KAAK6iB,iBAAmB7iB,KAAKmd,WAAWzI,YAAYoO,EAAAA,IAAM9iB,KAAK8e,aAAc,SAAUxV,GAC7H,OAAOA,EAAK,EAChB,IACMyZ,EAAY/iB,KAAKgjB,kBAAoBhjB,KAAKgjB,kBAAoBhjB,KAAKmd,WAAWzI,YAAYuO,EAAAA,IAAMjjB,KAAK8e,aAAc,SAAUxV,GAC/H,OAAOA,EAAK,EAChB,SACkB,IAAdsZ,QAAyC,IAAdG,GAC3B/iB,KAAKmd,WACA9I,IAAIuO,GACJrO,KAAKwO,EAGd,CAGR,MAAMlf,EAAM7D,KAAKkjB,iBAAmBljB,KAAKkjB,iBAAmBljB,KAAKod,UAAU1I,YAAYoO,EAAAA,IAAM9iB,KAAK8e,aAAc,SAAUxV,GACtH,OAAOwZ,EAAAA,IAAMxZ,EAAKoJ,OAAO,SAAUuM,EAAM1V,GAAK,OAAOA,EAAI,GAAK1C,EAAQsY,UAAU5V,IAA6C,IAAvC1C,EAAQsY,UAAU5V,GAAG4Z,QAAQ,OAAwB,OAATlE,CAAe,GAAI,SAAUhb,GAAK,OAAOA,aAAaiG,MAAQjG,EAAE,GAAKA,CAAG,EAC9M,IACML,EAAM5D,KAAKojB,kBAAoBpjB,KAAKojB,kBAAoBpjB,KAAKod,UAAU1I,YAAYuO,EAAAA,IAAMjjB,KAAK8e,aAAc,SAAUxV,GACxH,OAAO2Z,EAAAA,IAAM3Z,EAAKoJ,OAAO,SAAUuM,EAAM1V,GAAK,OAAOA,EAAI,GAAK1C,EAAQsY,UAAU5V,IAA6C,IAAvC1C,EAAQsY,UAAU5V,GAAG4Z,QAAQ,OAAwB,OAATlE,CAAe,GAAI,SAAUhb,GAAK,OAAOA,aAAaiG,MAAQjG,EAAE,GAAKA,CAAG,EAC9M,IACAjE,KAAKod,UACA/I,IAAIxQ,GACJ0Q,KAAK3Q,GAIV5D,KAAK0d,OAAS1d,KAAKmhB,WAAW1L,EAASC,EAASX,GAGhD,IAAIgD,EAAQ/X,KAAK+X,QAAU/X,KAAK0d,OAAO3D,KAAO/Z,KAAK0d,OAAO5D,MACtD/B,EAAQ,IAAGA,EAAQ,GACvB,IAAIC,EAAShY,KAAKgY,SAAWhY,KAAK0d,OAAOvD,IAAMna,KAAK0d,OAAOtD,OACvDpC,EAAS,IAAGA,EAAS,GACzB,MAAMqL,EAAgBtO,EAAegD,EAAQC,EACvCsL,EAAiBvO,EAAeiD,EAASD,EAuB/C,GApBA/X,KAAKmd,WACAhF,WAAWnY,KAAKujB,kBAAoBD,EAAiB,GACrDE,SAELxjB,KAAKod,UACAjF,WAAWnY,KAAKyjB,kBAAoBJ,EAAgB,GACpDG,SAGLxjB,KAAK0f,gBACA1N,KAAK,QAAS+F,GACd/F,KAAK,SAAUgG,GAEpBhY,KAAKyf,QAAQpN,aACRL,KAAK,YAAa,aAAehS,KAAK0d,OAAO3D,KAAO,IAAM/Z,KAAK0d,OAAOvD,IAAM,KAGjFna,KAAK0jB,YAAY3L,EAAOC,EAAQqL,EAAetO,GAC/C/U,KAAK2jB,iBAAiBlO,EAASC,EAAS1V,KAAK0d,OAAQ3F,EAAOC,EAAQjD,GACpE/U,KAAK4jB,aAAa7L,EAAOC,EAAQ,KAC7BhY,KAAKqhB,gBACL,OAAOrhB,KAAKoe,YAEpB,CAEA,WAAAsF,CAAY3L,EAAOC,EAAQqL,EAAetO,GACtC,MAAM8O,EAAY7jB,KAAK0gB,iBAAmB1gB,KAAKud,QAAUxI,EAAe/U,KAAKwd,OAASxd,KAAKyd,OACrFqG,EAAoBtD,EAAAA,eAAiBxgB,KAAK4f,SAASpG,QACzDqK,EAAUE,OAAO,CAAC,CAAC,EAAG,GAAI,CAAChM,EAAOC,KAClChY,KAAK4f,SACA5N,KAAK,YAAa,aAAehS,KAAK0d,OAAO3D,KAAO,KAAO/Z,KAAK0d,OAAOvD,IAAM,KAC7EtB,MAAM,UAAW7Y,KAAKqhB,gBAAkB,KAAO,QAC/ClS,KAAK0U,GAEV,MAAMhD,EAAc7gB,KAAK0gB,iBAAmB,GAAK3L,EAAe,CAAC,CAAED,KAAM,KAAO,CAAEA,KAAM,MAAS,CAAC,CAAEA,KAAM,KAAO,CAAEA,KAAM,MACnHgM,EAAa9gB,KAAK4f,SAASpO,UAAU,mBAAmBlI,KAAKuX,GAQnE,GAPAC,EAAWhP,QAAQC,OAAO,QACrBC,KAAK,QAAS,kBACdG,MAAM2O,GACN9O,KAAK,SAAU+C,EAAe,YAAc,aAC5C/C,KAAK,IAAM/N,GAAMjE,KAAKkgB,kBAAkBjc,EAAG8T,EAAOC,IAGnDhY,KAAKqhB,gBAAiB,CAKtB,GAJIrhB,KAAKsiB,iBAAmBtiB,KAAKyiB,cAC7BziB,KAAKsiB,eAAiBtiB,KAAKyiB,YAC3BziB,KAAKwe,WAAa,MAElBxe,KAAKwe,YACL,GAAIsF,EAAc,CACd,GAAI9jB,KAAKwe,WAAWxJ,cAAgBhV,KAAKgV,cAAe,CACpD,MAAMgP,EAAMF,EAAa,GACzBA,EAAa,GAAK9jB,KAAKwe,WAAW6E,cAAgBS,EAAa,GAC/DA,EAAa,GAAK9jB,KAAKwe,WAAW6E,cAAgBW,CACtD,CACA,MAAMC,EAAQZ,EAAgBrjB,KAAKwe,WAAW6E,cAChC,IAAVY,GACAjkB,KAAK4f,SAASvN,aACT8L,GAAG,QAAS,WACT0F,EAAU1F,GAAG,MAAO,KACxB,GACChP,KAAK0U,EAAUK,KAAM,CAACJ,EAAa,GAAKG,EAAOH,EAAa,GAAKG,IACjE9F,GAAG,MAAO,KACP0F,EAAU1F,GAAG,MAAO,IACTne,KAAKoe,eAKhC,OAEApe,KAAK4f,SACAzQ,KAAK0U,EAAUK,KAAM,CAAC,EAAGb,IAGlCrjB,KAAKwe,WAAa,CACdxJ,YAAahV,KAAKgV,cAClBqO,gBAER,CACJ,CAEA,gBAAAM,CAAiBlO,EAASC,EAASgI,EAAQ3F,EAAOC,EAAQjD,GACtD,MAAMlO,EAAkB7G,KAClB2d,EAAa3d,KAAK2f,SAASnO,UAAU,IAAMxR,KAAK6f,KAAO,eAAevW,KAAKtJ,KAAKshB,aAAe,EAAC,GAAQ,IAC9G3D,EAAW7L,QAAQC,OAAO,KACrBC,KAAK,KAAMhS,KAAK6f,KAAO,eACvB7N,KAAK,QAAS,SACdW,KAAK,WACF9L,EAAQ8W,YAAa,IAAK9W,EAAQlG,aAC7Bqf,OAAOhgB,MAEZ6G,EAAQ8W,WAAWH,OACdW,GAAG,cAAe,WACftX,EAAQsd,SAASpM,GACjBlR,EAAQ+c,aAAa7L,EAAOC,EAAQ,EACxC,GAEJnR,EAAQ8W,WACHyG,OAAOvd,EAAQud,SAAS3P,IAAKjR,GAAW,IAAIA,EAAE7C,aAEvD,GACCwR,MAAMwL,GACNhL,KAAK,WACF9L,EAAQwd,YAAYxd,EAAQ8W,WAAY,CAAC,WACzC,IAAI2G,EAAW,EACf,IAAA,MAAWC,KAAS1d,EAAQud,SACxBG,EAAMF,YAAYxd,EAAQ8W,WAAWyG,SAASE,IAC9CA,IAEJzd,EAAQ8W,WACH2D,YAAW,GACXD,eAAc,GACdhB,eAAc,GACdrL,YAAY,cACZuO,iBAAgB,GAChBV,eAAe,MACfG,gBAAgB,MAChBS,iBAAgB,GAChBjjB,EAAEqG,EAAQkR,QAAU,GACpBlX,EAAEgG,EAAQmR,SAAWnR,EAAQ0a,mBAAqB,GAClDxJ,MAAMlR,EAAQkR,SACdC,OAAOnR,EAAQ0a,oBACfpC,QAAQtY,EAAQsY,WAChB7V,KAAKzC,EAAQyC,QACbka,SAEL3c,EAAQsd,SAASpM,EACrB,GAEJ4F,EAAW/L,OACNe,KAAK,WACE9L,EAAQ8W,aACR9W,EAAQ8W,WACHqC,OAAO,aAELnZ,EAAQ8W,WAEvB,GACClL,QAET,CAEA,QAAA0R,CAASpM,GACL,MAAMwI,EAAUC,EAAAA,eAAiBxgB,KAAK2d,WAAWiC,SAASpG,QAC1D,GAAI+G,EAAS,CACT,GAAoC,YAAhCvgB,KAAK2d,WAAW8E,YAChBziB,KAAKqd,MAAMtM,OAAO,CAAC/Q,KAAK2d,WAAWN,MAAMjI,OAAOmL,EAAQ,IAAKvgB,KAAK2d,WAAWN,MAAMjI,OAAOmL,EAAQ,UAC/F,CACH,MACM1Q,GADa0Q,EAAQ,GAAKA,EAAQ,IACbxI,EAC3B/X,KAAKqd,MAAMnM,MAAM,EAAEqP,EAAQ,GAAK1Q,GAAQkI,EAAQwI,EAAQ,IAAM1Q,GAClE,CACA7P,KAAKqd,MAAMZ,UACf,CACJ,CAGA,YAAA+H,CAAatD,GACT,MAAMuD,EAAgBvD,EAAK/B,UACrBtK,EAASb,MAAMmL,UAAUzM,OAAOgS,GAAOA,IAAQD,EAAc,IACnE,OAAK5P,EAAOpM,OAGL,CAACgc,EAAc,MAAO5P,GAFlB4P,CAGf,CAEA,kBAAAE,CAAmBzD,GACf,MAAMuD,EAAgBvD,EAAK/B,UAE3B,OADqBnf,KAAKwkB,aAAatD,GACnBzM,IAAIiQ,GAAOD,EAActB,QAAQuB,GACzD,CAEA,gBAAAE,CAAiB1D,EAAc2D,GAE3B,OADsB3D,EAAK/B,UACNgE,QAAQ0B,EACjC,CAEA,SAAAC,CAAU5D,GACN,GAAyB,IAArBja,UAAUwB,OAAc,CACxB,MAAMsc,EAAU/kB,KAAK2kB,mBAAmBzD,GACxC,OAAOA,EAAK5X,OAAOmL,IAAIsK,IACnB,MAAMlK,EAASkQ,EAAQtQ,IAAIyK,GAAOH,EAAIG,IAEtC,OADCrK,EAAemQ,eAAiBjG,EAC1BlK,GAEf,CACA,MAAM,IAAI9S,MAAM,gDACpB,CAEA,UAAAkjB,CAAW/D,EAAcxL,EAASwP,EAAmB,KACrD,CAEA,WAAAC,CAAYjE,EAAcxL,EAASwP,EAAmB,KACtD,CAEA,SAAAE,CAAUlE,EAAcxL,EAASwP,EAAmB,KACpD,CAEA,WAAAjF,CAAYiB,EAAcxL,EAASwP,EAAmB,KAClDllB,KAAKilB,WAAWjlB,KAAM0V,EAASwP,GAC/B,IAAA,MAAW1hB,KAAKxD,KAAKokB,SACjB5gB,EAAmB,gBAAIkS,EAAQ3D,OAAO,KACjCC,KAAK,QAASxO,EAAE6hB,SAErB7hB,EACKwc,OAAOxc,EAAmB,gBAAEgW,QAC5ByL,WAAWjlB,KAAM0V,EAASwP,EAGvC,CAEA,YAAAtB,CAAa7L,EAAOC,EAAQkN,GACxBllB,KAAKmlB,YAAYnlB,KAAMA,KAAKyf,QAASyF,GACrC,IAAA,MAAW1hB,KAAKxD,KAAKokB,SACjB5gB,EACK8hB,OAAO,CAAEvN,QAAOC,WAChBmN,YAAYnlB,KAAMwD,EAAmB,gBAAG0hB,EAGrD,CAEA,IAAAtT,CAAK6D,EAASC,GACV1V,KAAKod,UAAU4C,OAAO,MACtBhgB,KAAKmd,WAAW6C,OAAO,MACvBhM,MAAMpC,KAAK6D,EAASC,EACxB,CAEA,SAAAnE,CAAUgU,GACN,MAAM1e,EAAU7G,KAChBA,KAAK8f,WAAWC,gBAAgBvO,UAAU,yBACrCmB,KAAK,SAAU1O,GACZ,MAAMqc,EAAWiF,EAAUpC,QAAQlf,EAAEuhB,UAAY,EACjDjQ,EAAAA,OAASvV,MACJwc,QAAQ,WAAY8D,GACpB9D,QAAQ,cAAe8D,GACvBtO,KAAK,SAAUnL,EAAQiZ,WAAW2F,aAAenF,EAAW,QAAQzZ,EAAQiZ,WAAW2F,eAAiB,KAEjH,GAGJ,MAAMC,EAAUH,EAAU9Q,IAAIxQ,GACnBjE,KAAK2lB,SAAS1hB,IAEzB2hB,WAAW,KACP5lB,KAAK6lB,MAAMH,EAAS,IAAI,IACzB,EACP,CAGA,mBAAA/C,CAAoB6C,EAASM,GACzB,OAAON,EAAQ,EACnB,CAGA,KAAAK,CAAM9G,EAAK8F,EAAQvE,GAEnB,CAGAR,YAtoBkCrf,EAAAyc,GAAA,UAA/B,IAAM6I,GAAN7I,GAwoBP6I,GAAOrlB,UAAU8U,QAAU,gBAC3BuQ,GAAOrlB,UAAUslB,MAAMpI,EAAAA,QAAQC,sBAqG/BkI,GAAOrlB,UAAUmc,QAAQ,cAAe,aAAc,MAAO,mCAAoC,CAAC,aAAc,aAChHkJ,GAAOrlB,UAAUmc,QAAQ,kBAAmB,KAAM,SAAU,kBAAmB,KAAM,CAAEE,UAAU,IACjGgJ,GAAOrlB,UAAUmc,QAAQ,eAAgB,EAAG,SAAU,gBACtDkJ,GAAOrlB,UAAUmc,QAAQ,eAAgB,GAAI,SAAU,gBACvDkJ,GAAOrlB,UAAUmc,QAAQ,kBAAkB,EAAO,UAAW,qBAC7DkJ,GAAOrlB,UAAUmc,QAAQ,iBAAiB,EAAO,UAAW,kBAC5DkJ,GAAOrlB,UAAUulB,aAAa,aAAc,aAAc,SAC1DF,GAAOrlB,UAAUulB,aAAa,iBAAkB,aAAc,aAC9DF,GAAOrlB,UAAUulB,aAAa,kBAAmB,aAAc,cAC/DF,GAAOrlB,UAAUulB,aAAa,aAAc,aAAc,SAC1DF,GAAOrlB,UAAUulB,aAAa,YAAa,aAAc,QACzDF,GAAOrlB,UAAUulB,aAAa,uBAAwB,aAAc,eACpEF,GAAOrlB,UAAUmc,QAAQ,iBAAkB,KAAM,SAAU,aAAc,KAAM,CAAEE,UAAU,EAAMD,UAAUtZ,GAAgC,YAAlBA,EAAEif,YAAjB,aAC1GsD,GAAOrlB,UAAUmc,QAAQ,kBAAmB,KAAM,SAAU,cAAe,KAAM,CAAEE,UAAU,EAAMD,UAAUtZ,GAAgC,YAAlBA,EAAEif,YAAjB,aAC5GsD,GAAOrlB,UAAUulB,aAAa,gBAAiB,aAAc,YAC7DF,GAAOrlB,UAAUulB,aAAa,kBAAmB,aAAc,cAC/DF,GAAOrlB,UAAUulB,aAAa,2BAA4B,aAAc,uBACxEF,GAAOrlB,UAAUulB,aAAa,2BAA4B,aAAc,uBACxEF,GAAOrlB,UAAUulB,aAAa,mBAAoB,aAAc,eAChEF,GAAOrlB,UAAUulB,aAAa,qBAAsB,aAAc,iBAClEF,GAAOrlB,UAAUulB,aAAa,qBAAsB,aAAc,UAClEF,GAAOrlB,UAAUmc,QAAQ,mBAAmB,EAAO,UAAW,sBAC9DkJ,GAAOrlB,UAAUmc,QAAQ,cAAc,EAAO,UAAW,eAAgB,KAAM,CAAEC,QAASrc,EAAC+C,GAA+B,eAApBA,EAAEwR,cAAd,aAC1F+Q,GAAOrlB,UAAUmc,QAAQ,mBAAoB,GAAI,SAAU,sBAAuB,KAAM,CAAEC,QAASrc,EAAC+C,IAAYA,EAAE8d,aAAf,aACnGyE,GAAOrlB,UAAUulB,aAAa,cAAe,aAAc,UAC3DF,GAAOrlB,UAAUulB,aAAa,gBAAiB,YAAa,YAC5DF,GAAOrlB,UAAUulB,aAAa,kBAAmB,YAAa,cAC9DF,GAAOrlB,UAAUulB,aAAa,aAAc,YAAa,SACzDF,GAAOrlB,UAAUulB,aAAa,iBAAkB,YAAa,aAC7DF,GAAOrlB,UAAUulB,aAAa,kBAAmB,YAAa,cAC9DF,GAAOrlB,UAAUulB,aAAa,aAAc,YAAa,SACzDF,GAAOrlB,UAAUulB,aAAa,YAAa,YAAa,QACxDF,GAAOrlB,UAAUulB,aAAa,uBAAwB,YAAa,eACnEF,GAAOrlB,UAAUulB,aAAa,uBAAwB,YAAa,eACnEF,GAAOrlB,UAAUulB,aAAa,mBAAoB,YAAa,WAC/DF,GAAOrlB,UAAUmc,QAAQ,gBAAgB,EAAO,UAAW,gBAAiB,KAAM,CAAEqJ,KAAM,CAAC,SAAUpJ,UAAUtZ,GAA6B,YAAlBA,EAAEif,aAA6Bjf,EAAEgS,OAAO2N,QAAQ,gBAAkB,EAA9E,aAC9G4C,GAAOrlB,UAAUmc,QAAQ,iBAAkB,KAAM,SAAU,aAAc,KAAM,CAAEE,UAAU,EAAMD,UAAUtZ,GAA6B,YAAlBA,EAAE2iB,YAAd,aAC1GJ,GAAOrlB,UAAUmc,QAAQ,kBAAmB,KAAM,SAAU,cAAe,KAAM,CAAEE,UAAU,EAAMD,UAAUtZ,GAA6B,YAAlBA,EAAE2iB,YAAd,aAC5GJ,GAAOrlB,UAAUulB,aAAa,qBAAsB,YAAa,UACjEF,GAAOrlB,UAAUmc,QAAQ,mBAAmB,EAAM,UAAW,sBAC7DkJ,GAAOrlB,UAAUulB,aAAa,cAAe,YAAa,UAC1DF,GAAOrlB,UAAUmc,QAAQ,UAAW,GAAI,QAAS,WACjDkJ,GAAOrlB,UAAUmc,QAAQ,SAAU,GAAI,cAAe,SAAU,KAAM,CAAE2G,QAAQ,IAChFuC,GAAOrlB,UAAUulB,aAAa,eAAgB,aAAc,WAC5DF,GAAOrlB,UAAUulB,aAAa,eAAgB,YAAa,WCnxBpD,MAAMG,GAAN,MAAMA,iBAAgBL,GAUzB,WAAAplB,GACIqT,QACAqS,EAAAA,SAASlX,KAAKnP,MACdsmB,EAAAA,SAASnX,KAAKnP,MACdA,KACKumB,yBAAwB,GACxBC,yBAAwB,EAEjC,CAEA,IAAAC,CAAKvF,EAAcjd,GACf,MAA8B,eAAvBid,EAAKlM,cAAiCkM,EAAKT,QAAQxc,EAAEqU,OAAS4I,EAAKN,SAAS3c,EAAE+G,MACzF,CAEA,IAAA0b,CAAKxF,EAAcjd,GACf,MAA8B,eAAvBid,EAAKlM,cAAiCkM,EAAKN,SAAS3c,EAAE+G,OAASkW,EAAKT,QAAQxc,EAAEqU,MACzF,CAEQ,KAAApP,GACJ,OAAQlJ,KAAK2mB,eACT,IAAK,SACD,OAAO/d,EACX,IAAK,OACD,OAAOiG,GACX,IAAK,cACD,OAAO+X,GACX,IAAK,aACD,OAAOC,GACX,IAAK,QACD,OAAOjb,EACX,IAAK,SACD,OAAOU,EACX,IAAK,WACD,OAAOQ,EACX,IAAK,aACD,OAAOe,GACX,IAAK,UACD,OAAOa,GAEX,QACI,OAAOoY,GAEnB,CAEQ,QAAAC,GACJ,OAAQ/mB,KAAKgnB,kBACT,IAAK,SACD,OAAO1Q,gBACX,IAAK,MACD,OAAOK,EAAAA,WAAaC,SAAS,GACjC,IAAK,MACD,OAAOE,aACX,IAAK,OACD,OAAOmQ,cAEnB,CAEU,UAAAC,CAAWnI,EAAK2F,EAAK1Z,EAAOwa,GAClC,OAAIxlB,KAAK2mB,eAAiB3mB,KAAKmnB,cACpBnnB,KAAKonB,YAAYrI,EAAK2F,EAAK1Z,EAAOwa,GAEtCxlB,KAAKqnB,UAAUtI,EAAK2F,EAAK1Z,EAAOwa,EAC3C,CAEU,SAAA8B,CAAUvI,EAAK2F,EAAK1Z,EAAOwa,GACjC,OAAIxlB,KAAKunB,mBAAqBvnB,KAAKwnB,oBACxBxnB,KAAKonB,YAAYrI,EAAK2F,EAAK1Z,EAAOwa,GAEtCxlB,KAAKqnB,UAAUtI,EAAK2F,EAAK1Z,EAAOwa,EAC3C,CAEU,SAAAiC,CAAU1I,EAAK2F,EAAK1Z,EAAOwa,GACjC,OAAOxlB,KAAKqnB,UAAUtI,EAAK2F,EAAK1Z,EAAOwa,EAC3C,CAEA,UAAAP,CAAW/D,EAAcxL,EAASwP,EAAmB,KACjDlR,MAAMiR,WAAW/D,EAAMxL,EAASwP,GAChC,MAAMre,EAAU7G,KAChBA,KACK0nB,YAAY,SAAUzjB,GACnB,MACS,iBADD4C,EAAQ8gB,eAED9gB,EAAQ+gB,cAAc,CACzBtP,MAAOrU,EAAEqU,MACTuP,IAAKhhB,EAAQsY,UAAU3P,MAAM,GAAGiF,IAAI,SAAUoQ,EAAQtb,GAClD,MAAO,CACH+O,MAAOuM,EACPiD,MAAOjhB,EAAQqb,SAAS2C,GACxB7Z,MAAOnE,EAAQyC,OAAOrF,EAAE8jB,QAAQxe,EAAI,GAE5C,KAGG1C,EAAQ+gB,cAAc,CAAEtP,MAAOrU,EAAEqU,MAAO0P,OAAQ/jB,EAAE4gB,OAAQ7Z,MAAO/G,EAAE+G,OAEtF,EAER,CAEUid,gBACV,WAAA9C,CAAYjE,EAAcxL,EAASwP,EAAmB,KAClDlR,MAAMmR,YAAYjE,EAAMxL,GACxB,MAAMX,EAAsC,eAAvBmM,EAAKlM,cACpBgD,EAASjD,EAAe/U,KAAKgY,SAAWhY,KAAK+X,QAC7ClR,EAAU7G,KAYhB,SAASkoB,EAASC,GACd,OAAQA,GACJ,IAAK,YACD,MAAO,OACX,IAAK,SACD,MAAO,SACX,IAAK,QACD,MAAO,OAGnB,CApBAnoB,KAAKkiB,SAAWliB,KAAKkiB,SAASkG,OAAOpoB,KAAKqoB,aACtCroB,KAAKsoB,qBACLtoB,KAAKkiB,SAAWliB,KAAKkiB,SAASqG,eAAevoB,KAAKqoB,YAAc,IAAMroB,KAAK6f,OAG3E7f,KAAKioB,kBAAoBjoB,KAAKwoB,eAC9B9S,EAAQlE,UAAU,SAASiB,SAC3BzS,KAAKioB,gBAAkBjoB,KAAKwoB,cAGvB/nB,EAAAynB,EAAA,YAYT,IAAIO,EACA1E,EACAlU,EAHuB7P,KAAK0oB,2BAK5BD,EAAqBzoB,KAAKmf,UAAUgE,QAAQnjB,KAAK2oB,mBACjD5E,EAAS6E,EAAAA,OAAS5oB,KAAKsJ,OAAQrF,GAAKA,EAAEwkB,IACtC5Y,EAAQ7P,KAAK+mB,WAAWhW,OAAOgT,IAEnC,MAAMS,EAAexkB,KAAKwkB,aAAatD,GACjC4D,EAAY9kB,KAAK8kB,UAAU5D,GAC3B2H,EAAW7oB,KAAK8oB,YAAYtE,EAAcM,GAAWrQ,IAAI,SAAUxQ,GAKrE,OAJAA,EAAEkkB,MAAQD,EAASrhB,EAAQ2hB,cAC3BvkB,EAAE4gB,OAASL,EAAavgB,EAAE8kB,QAC1B9kB,EAAE8a,IAAM+F,EAAU7gB,EAAE8jB,QACpB9jB,EAAEuhB,QAAWV,EAAU7gB,EAAE8jB,QAAgB/C,eACrCjB,GACA9f,EAAE+kB,KAAOnZ,EAAM5L,EAAE8a,IAAI0J,KAAwB5hB,EAAQoiB,eAAiBpiB,EAAQqiB,gBAAkBriB,EAAQqiB,eACjGjlB,EAAE4gB,SAAWhe,EAAQ8hB,mBAA4B1kB,IAExDA,EAAE+kB,KAAOniB,EAAQsiB,YACVllB,EAGf,GAAGyO,OAAOzO,GAAKA,GAETmlB,EAAQ1T,EAAQlE,UAAU,SAASlI,KAAKkb,EAAa9R,OAAO,SAAU2F,EAAI6G,GAAO,OAAOrY,EAAQ8f,eAAiB9f,EAAQ0gB,mBAAqBrI,EAAM,CAAG,IACvJmK,EAAaD,EAAMtX,QAAQC,OAAO,QAClCjI,EAAOD,IACRX,MAAMlJ,KAAKkJ,SAEZ6L,EACAjL,EACKtJ,EAAE,SAAUyD,GAAK,OAAO4C,EAAQ4f,KAAKvF,EAAMjd,EAAI,GAC/CxC,GAAG/B,KAAKmE,IAAImU,EAAQhY,KAAK0mB,KAAKxF,EAAM,CAAElW,MAAO,MAC7C9J,GAAG,SAAU+C,GAAK,OAAO4C,EAAQ6f,KAAKxF,EAAMjd,EAAI,GAGrD6F,EACKjJ,EAAE,SAAUoD,GAAK,OAAO4C,EAAQ6f,KAAKxF,EAAMjd,EAAI,GAC/CzC,GAAG9B,KAAKkE,IAAI,EAAG5D,KAAKymB,KAAKvF,EAAM,CAAElW,MAAO,MACxC/J,GAAG,SAAUgD,GAAK,OAAO4C,EAAQ4f,KAAKvF,EAAMjd,EAAI,GAGzDolB,EAAWlX,MAAMiX,GACZpX,KAAK,QAAS/N,GAAK,sBAAwBjE,KAAKspB,OAAOrlB,IACvD0O,KAAK,SAAU0F,EAAI6G,GACA3J,EAAAA,OAASvV,MAEpBgS,KAAK,IAAKlI,EAAK+e,EAASnW,OAAO,SAAU7M,GAAM,OAAOA,EAAGkjB,SAAW7J,EAAM,CAAG,KAC7ErG,MAAM,UAAWhS,EAAQ0iB,0BACzB1Q,MAAM,SAAU,QAChBA,MAAM,OAAQhS,EAAQ4gB,UAAU,GAAIpP,OAAI,EAAW,IAE5D,GACJ+Q,EAAMxX,OAAOa,SAEb,MAAM+W,EAAQ9T,EAAQlE,UAAU,SAASlI,KAAKkb,EAAa9R,OAAO,SAAU2F,EAAI6G,GAAO,OAAOrY,EAAQ8f,eAAiBzH,EAAM,CAAG,IAC1HuK,EAAaD,EAAM1X,QAAQC,OAAO,QAClC1I,EAAOP,IACRtI,EAAE,SAAUyD,GAAK,OAAO4C,EAAQ4f,KAAKvF,EAAMjd,EAAI,GAC/CpD,EAAE,SAAUoD,GAAK,OAAO4C,EAAQ6f,KAAKxF,EAAMjd,EAAI,GAC/CiF,MAAMlJ,KAAKkJ,SAEhBugB,EAAWtX,MAAMqX,GACZxX,KAAK,QAAS/N,GAAK,sBAAwBjE,KAAKspB,OAAOrlB,IACvD0O,KAAK,SAAU0F,EAAI6G,GAChB,MAAMxJ,EAAUH,EAAAA,OAASvV,MACnB0pB,EAAQb,EAASnW,OAAO,SAAU7M,GAAM,OAAOA,EAAGkjB,SAAW7J,EAAM,CAAG,GAC5ExJ,EACK1D,KAAK,IAAK3I,EAAKqgB,IACf7Q,MAAM,SAAUhS,EAAQygB,UAAU,GAAIjP,OAAI,EAAW,KACrDQ,MAAM,OAAQ,OAEvB,GACJ2Q,EAAM5X,OAAOa,SAEb,MAAMkX,EAASjU,EAAQlE,UAAU,UAAUlI,KAAKuf,EAAU,SAAU5kB,EAAGib,GAAO,OAAOjb,EAAEkkB,MAAQ,IAAMjJ,CAAK,GAC1GyK,EAAO7X,QAAQC,OAAO,KACjBY,KAAK,SAA4B9M,GAC9B,MAAM6P,EAAUH,EAAAA,OAASvV,MACzB0V,EACK3D,OAAOlM,EAAGsiB,OACVnW,KAAK,QAAS,cAEnB0D,EACK3D,OAAO,QACPC,KAAK,QAAS,cACd6G,MAAM,UAAW,QACjB7G,KAAK,cAAenL,EAAQ+iB,eAC5B5X,KAAK,qBAAsBnL,EAAQgjB,iBACnC7X,KAAK,OAAQ,SAAU/N,EAAQ6lB,GAE5B,MADiD,WAA5BjjB,EAAQgjB,iBAA4D,YAA5BhjB,EAAQgjB,gBAC/ChjB,EAAQkjB,UAAU9lB,EAAE8a,IAAK9a,EAAE4gB,OAAQ5gB,EAAE+G,MAAO/G,EAAEuhB,SAAW,IACnF,GAEJ9P,EACK3D,OAAO,UACPC,KAAK,QAAS,kBACdmM,GAAG,mBAAoBtX,EAAQmjB,QAAQC,MACvC9L,GAAG,oBAAqBtX,EAAQmjB,QAAQE,MACxC/a,KAAK+R,EAAKpB,WAAWhO,MAAMqY,KAAKjJ,EAAKpB,aACrC3B,GAAG,QAAS,SAAUla,EAAQ6lB,GAC3BjjB,EAAQgf,MAAM3E,EAAKyE,SAASzE,EAAK5X,OAAOrF,EAAE8jB,SAAU9jB,EAAE4gB,OAAQ3D,EAAKpB,WAAWQ,SAAStgB,MAC3F,GACCme,GAAG,WAAY,SAAUla,EAAQ6lB,GAC9BjjB,EAAQujB,SAASlJ,EAAKyE,SAASzE,EAAK5X,OAAOrF,EAAE8jB,SAAU9jB,EAAE4gB,OAAQ3D,EAAKpB,WAAWQ,SAAStgB,MAC9F,EAER,GACCmS,MAAMwX,GACN3X,KAAK,QAAS/N,GAAK,uBAAyBjE,KAAKspB,OAAOrlB,EAAE4gB,SAC1DlS,KAAK,SAA4B9M,GACR0P,EAAAA,OAASvV,MAAMiS,OAAO,eAEvCD,KAAK,IAAK,SAAU/N,GAAK,OAAO4C,EAAQ4f,KAAKvF,EAAMjd,EAAI,GACvD+N,KAAK,IAAK,SAAU/N,GAAK,OAAO4C,EAAQ6f,KAAKxF,EAAMjd,EAAI,GACvD4U,MAAM,UAAWhS,EAAQwjB,YAAc,QAAU,QACjDrY,KAAK,cAAenL,EAAQ+iB,eAC5B5X,KAAK,qBAAsBnL,EAAQgjB,iBACnC3X,KAAK,SAAUjO,GACZ,OAAOA,EAAS,KACpB,GAEqBsR,EAAAA,OAASvV,MAAMiS,OAAO,mBAE1CD,KAAK,KAAM,SAAU/N,GAAK,OAAO4C,EAAQ4f,KAAKvF,EAAMjd,EAAI,GACxD+N,KAAK,KAAM,SAAU/N,GAAK,OAAO4C,EAAQ6f,KAAKxF,EAAMjd,EAAI,GACxD+N,KAAK,IAAKnM,EAAGmjB,MAGlB,MAAMtT,EAAUH,EAAAA,OAASvV,MAAMiS,OAAO,eACtC,OAAQpM,EAAGsiB,OACP,IAAK,OACDzS,EACK1D,KAAK,IAAK,SAAU/N,GAAK,OAAO4C,EAAQ4f,KAAKvF,EAAMjd,GAAK4B,EAAGmjB,KAAO,CAAG,GACrEhX,KAAK,IAAK,SAAU/N,GAAK,OAAO4C,EAAQ6f,KAAKxF,EAAMjd,GAAK4B,EAAGmjB,KAAO,CAAG,GACrEhX,KAAK,QAASnM,EAAGmjB,MACjBhX,KAAK,SAAUnM,EAAGmjB,MAClBnQ,MAAM,OAAQhS,EAAQqgB,WAAWrhB,EAAGkZ,IAAKlZ,EAAGgf,OAAQhf,EAAGmF,MAAOnF,EAAG2f,UAEtE,MACJ,IAAK,SACD9P,EACK1D,KAAK,KAAM,SAAU/N,GAAK,OAAO4C,EAAQ4f,KAAKvF,EAAMjd,EAAI,GACxD+N,KAAK,KAAM,SAAU/N,GAAK,OAAO4C,EAAQ6f,KAAKxF,EAAMjd,EAAI,GACxD+N,KAAK,IAAe,GAAVnM,EAAGmjB,MACbnQ,MAAM,OAAQhS,EAAQqgB,WAAWrhB,EAAGkZ,IAAKlZ,EAAGgf,OAAQhf,EAAGmF,MAAOnF,EAAG2f,UAEtE,MACJ,IAAK,OACD9P,EACK1D,KAAK,IAAK,SAAU/N,GACjB,MAAO,KAAO4C,EAAQ4f,KAAKvF,EAAMjd,GAAK4B,EAAGmjB,KAAO,GAAK,KAAOniB,EAAQ6f,KAAKxF,EAAMjd,GAAK4B,EAAGmjB,KAAO,GAAK,MACxFniB,EAAQ4f,KAAKvF,EAAMjd,GAAK4B,EAAGmjB,KAAO,GAAK,KAAOniB,EAAQ6f,KAAKxF,EAAMjd,GAAK4B,EAAGmjB,KAAO,GAAK,MACrFniB,EAAQ4f,KAAKvF,EAAMjd,GAAK4B,EAAGmjB,KAAO,GAAK,KAAOniB,EAAQ6f,KAAKxF,EAAMjd,GAAK4B,EAAGmjB,KAAO,GAAK,MACrFniB,EAAQ4f,KAAKvF,EAAMjd,GAAK4B,EAAGmjB,KAAO,GAAK,KAAOniB,EAAQ6f,KAAKxF,EAAMjd,GAAK4B,EAAGmjB,KAAO,EAC/F,GACCnQ,MAAM,SAAUhS,EAAQqgB,WAAWrhB,EAAGkZ,IAAKlZ,EAAGgf,OAAQhf,EAAGmF,MAAOnF,EAAG2f,UAKpF,GAEJmE,EAAO/X,OAAOa,QAClB,CAEA,IAAAb,CAAK6D,EAASC,GACV1B,MAAMpC,KAAK6D,EAASC,EACxB,GAnTgCjV,EAAA2lB,GAAA,WAChCkE,EADSlE,GACF,WAAyB,CAAC,CAC7BvG,GAAI,QACJ/K,KAAM,OACP,CACC+K,GAAI,SACJ/K,KAAM,SACNyV,OAAO,KAPR,IAAMC,GAANpE,GAqTPoE,GAAQ9pB,UAAU8U,QAAU,iBAC5BgV,GAAQ9pB,UAAU+pB,WAAWpE,EAAAA,SAAS3lB,WACtC8pB,GAAQ9pB,UAAU+pB,WAAWnE,EAAAA,SAAS5lB,WAgDtC8pB,GAAQ9pB,UAAUmc,QAAQ,YAAa,UAAW,MAAO,gCAAiC2N,GAAQ9pB,UAAUwhB,SAASkG,SAAU,CAAElC,KAAM,CAAC,QAAS,YACjJsE,GAAQ9pB,UAAUmc,QAAQ,iBAAkB,SAAU,MAAO,iBAAkB,CAAC,SAAU,MAAO,MAAO,SACxG2N,GAAQ9pB,UAAUmc,QAAQ,aAAc,QAAS,MAAO,2BAA4B,CAAC,SAAU,YAAa,UAC5G2N,GAAQ9pB,UAAUmc,QAAQ,YAAa,EAAG,SAAU,aAAc,KAAM,CAAE3L,MAAO,CAAErN,IAAK,EAAG6mB,KAAM,EAAG9mB,IAAK,OACzG4mB,GAAQ9pB,UAAUmc,QAAQ,cAAe,GAAI,MAAO,mBAAoB,CAAC,GAAI,SAAU,OAAQ,cAAe,aAAc,QAAS,SAAU,WAAY,aAAc,UAAW,aACpL2N,GAAQ9pB,UAAUmc,QAAQ,eAAe,EAAM,UAAW,mHAAoH,KAAM,CAAEC,QAASrc,EAAA+C,IAAMA,EAAEmjB,cAAR,aAC/L6D,GAAQ9pB,UAAUmc,QAAQ,qBAAqB,EAAM,UAAW,uHAAwH,KAAM,CAAEC,QAASrc,EAAA+C,IAAMA,EAAE+jB,kBAAR,aACzMiD,GAAQ9pB,UAAUmc,QAAQ,mBAAmB,EAAO,UAAW,8DAC/D2N,GAAQ9pB,UAAUmc,QAAQ,yBAA0B,IAAM,SAAU,6BAA8B,KAAM,CAAE3L,MAAO,CAAErN,IAAK,EAAG6mB,KAAM,IAAM9mB,IAAK,KAC5I4mB,GAAQ9pB,UAAUmc,QAAQ,oBAAoB,EAAO,UAAW,2CAA4C,KAAM,CAAEqJ,KAAM,CAAC,eAAgB,YAC3IsE,GAAQ9pB,UAAUmc,QAAQ,aAAa,EAAO,WAC9C2N,GAAQ9pB,UAAUmc,QAAQ,cAAe,SAAU,MAAO,mCAAoC,CAAC,QAAS,SAAU,QAClH2N,GAAQ9pB,UAAUmc,QAAQ,gBAAiB,cAAe,MAAO,0CAA2C,CAAC,OAAQ,WAAY,cAAe,mBAAoB,SAAU,UAAW,aAAc,kBAAmB,cAAe,aAAc,UAAW,eAAgB,YChY3Q,MAAM8N,GAAN,MAAMA,cAAaH,GACtB,WAAA7pB,GACIqT,QACAhU,KACK4qB,oBAAoB,UACpBC,yBAAwB,EAEjC,GAP8BpqB,EAAAkqB,GAAA,QAA3B,IAAMG,GAANH,GASPG,GAAKpqB,UAAU8U,QAAU,cCFlB,MAAMuV,GAAN,MAAMA,gBAAehF,GAUdiF,WACFC,UAAYC,EAAAA,QACZC,iBAAmBD,EAAAA,QACnBnW,aAER,WAAApU,GACIqT,QACAqS,EAAAA,SAASlX,KAAKnP,MACdsmB,EAAAA,SAASnX,KAAKnP,MAEdA,KAAK8f,WAAWsL,gBAAe,GAE/BprB,KAAKgrB,WAAa,EACtB,CAEA,UAAA/F,CAAW/D,EAAcxL,EAASwP,EAAmB,KACjDlR,MAAMiR,WAAW/D,EAAMxL,EAASwP,GAChC,MAAMre,EAAU7G,KAChBA,KACK0nB,YAAY,SAAUzjB,GACnB,GACS,iBADD4C,EAAQ8gB,eAER,OAAO9gB,EAAQ+gB,cAAc,CACzBtP,MAAOrU,EAAE8a,IAAI,GACb8I,IAAKhhB,EAAQsY,UAAU3P,MAAM,GAAGiF,IAAI,SAAUoQ,EAAQtb,GAClD,MAAO,CACH+O,MAAOuM,EACPiD,MAAOjhB,EAAQqb,SAAS2C,GACxB7Z,MAAO/G,EAAE8a,IAAIxV,EAAI,GAEzB,KAER,CACI,IAAIyB,EAAQ/G,EAAE8a,IAAI9a,EAAEib,KAIpB,OAHIlU,aAAiBd,QACjBc,EAAQA,EAAM,GAAKA,EAAM,IAEtBnE,EAAQ+gB,cAAc,CAAEtP,MAAOrU,EAAE8a,IAAI,GAAIiJ,OAAQnhB,EAAQ2d,aAAatD,GAAMjd,EAAEib,KAAMlU,SAAO,CAE9G,EAER,CAEA,YAAAqgB,CAAanK,GAeT,OAdelhB,KAAK8kB,UAAU5D,GAAMzM,IAAIsK,IACpC,IAAIC,EAAY,EAChB,OAAOD,EAAItK,IAAI,CAACwK,EAAMC,KAClB,GAAY,IAARA,EACA,OAAOD,EAEX,GAAIC,GAAOlf,KAAKwkB,aAAatD,GAAMzY,OAC/B,OAAOwW,EAEX,MAAMqM,EAAUpK,EAAK7B,eAAiB,CAACL,EAAWA,EAAYC,GAAQA,EAEtE,OADAD,GAAaC,EACNqM,GACRtrB,OACJA,KAEP,CAEA,WAAAmlB,CAAYjE,EAAcxL,EAASwP,EAAmB,KAClDlR,MAAMmR,YAAYjE,EAAMxL,EAASwP,GACjC,MAAMnQ,EAAsC,eAAvBmM,EAAKlM,cAC1BhV,KAAK+U,aAAeA,EACpB,MAAMlO,EAAU7G,KAEhBA,KAAKkiB,SAAWliB,KAAKkiB,SAASkG,OAAOpoB,KAAKqoB,aACtCroB,KAAKsoB,qBACLtoB,KAAKkiB,SAAWliB,KAAKkiB,SAASqG,eAAevoB,KAAKqoB,YAAc,IAAMroB,KAAK6f,OAE/E,MAAM0L,EAAY7U,EAAAA,OAAS7P,EAAQ2kB,4BAEnC,IAAIC,EAAU,GACV1b,EAAS,EACb,OAAQmR,EAAKuB,aACT,IAAK,UACDgJ,EAAUvK,EAAKlR,YACfD,GAAU0b,EAAU,EACpB,MACJ,IAAK,SACL,IAAK,OACDA,EAAU/rB,KAAKkE,IAAIlE,KAAKsC,IAAIkf,EAAKT,QAAQ,GAAKS,EAAKT,QAAQ,KAAO,IAAMzgB,KAAKgrB,YAAc,IAAKS,GAChG1b,GAAU0b,EAAU,EAK5BzrB,KAAKgqB,QAAQ0B,UAAU3W,EAAe,IAAM,KAE5C,MAAM4W,EAAc/V,EAAAA,YACf7E,OAAOlK,EAAQ2d,aAAatD,GAAMxO,OAAO,SAAU2F,EAAI6G,GAAO,OAAOA,EAAM,CAAG,IAC9E/J,WAAWJ,EAAe,CAAC,EAAG0W,GAAW,CAACA,EAAS,IACnD5V,aAAa7V,KAAK4rB,2BAClB7V,aAAa,GAElB,IAAI8V,EAAa,GACjB,MAAMC,EAAa,GACbC,EAAe/rB,KAAKmf,UAAU1W,OAC9BujB,EAAUhsB,KAAKsJ,OACjBtJ,KAAKqqB,aAA6C,WAA9BrqB,KAAKisB,sBACzBD,EAAQE,QAASnN,IACbA,EAAIrM,OAAO,CAACrS,EAAG6e,IAAQA,EAAM,GAAKA,EAAM6M,GAAcG,QAAQ,CAACxH,EAAKxF,UACpC,IAAxB4M,EAAW5M,EAAM,KACjB4M,EAAW5M,EAAM,GAAK,GAE1B4M,EAAW5M,EAAM,IAAMwF,OAK/B1kB,KAAKmsB,mBAAsBnsB,KAAKqqB,aAA6C,WAA9BrqB,KAAKisB,wBACpDJ,EAAaG,EAAQvX,IAAIsK,GACdA,EAAIrM,OAAO,CAACuM,EAAMC,IAAQA,EAAM,GAAKA,EAAM6M,GAAcK,OAAO,CAAC9gB,EAAK2T,IAClE3T,EAAM2T,EACd,KAIX,MAAM4F,EAASnP,EAAQlE,UAAU,YAC5BlI,KAAKtJ,KAAKqrB,aAAanK,IAEtBmL,EAAWnL,EAAK5X,OAChBgjB,EAAWtsB,KAAKihB,YAAYC,GAClC2D,EAAO/S,QAAQC,OAAO,KACjBC,KAAK,QAAS,WACdG,MAAM0S,GACNlS,KAAK,SAAU4Z,EAASC,GACrB,MAAM9W,EAAUH,EAAAA,OAASvV,MAEnBysB,EAAc/W,EAAQlE,UAAU,aAAalI,KAAKijB,EAAQ7Z,OAAO,SAAU2F,EAAI9O,GAAK,OAAOA,EAAI1C,EAAQ2d,aAAatD,GAAMzY,MAAQ,GAAGgM,IAAI,SAAUxQ,EAAGsF,GACxJ,MAAO,CACHsb,OAAQhe,EAAQ2d,aAAatD,GAAM3X,GACnCwV,IAAKwN,EACL/G,QAAS6G,EAASG,GAClBxhB,MAAO/G,EACPib,IAAK3V,EAEb,GAAGmJ,OAAO,SAAUzO,GAAK,OAAmB,OAAZA,EAAE+G,OAAkB/G,EAAEib,IAAM,CAAG,GAAKjb,GAAWA,EAAE4gB,QAE3E6H,EAAeD,EAChB3a,QAAQC,OAAO,KACfC,KAAK,QAAS,YACdmM,GAAG,mBAAoB,SAAUla,KACzB4C,EAAQ8lB,gCAAmC1oB,EAAE2oB,cAAgB3oB,EAAE2oB,aAAaC,cAC7EhmB,EAAQmjB,QAAQC,KAAKjjB,MAAMH,EAASI,UAE5C,GACCkX,GAAG,oBAAqB,SAAUla,KAC1B4C,EAAQ8lB,gCAAmC1oB,EAAE2oB,cAAgB3oB,EAAE2oB,aAAaC,cAC7EhmB,EAAQmjB,QAAQE,KAAKljB,MAAMH,EAASI,UAE5C,GACCkI,KAAK+R,EAAKpB,WAAWhO,MAAMqY,KAAKjJ,EAAKpB,aACrC3B,GAAG,QAAS,SAAUla,GACnB4C,EAAQgf,MAAM3E,EAAKyE,SAAS1hB,EAAEuhB,SAAUvhB,EAAE4gB,OAAQ3D,EAAKpB,WAAWQ,SAAStgB,MAC/E,GACCme,GAAG,WAAY,SAAUla,GACtB4C,EAAQujB,SAASlJ,EAAKyE,SAAS1hB,EAAEuhB,SAAUvhB,EAAE4gB,OAAQ3D,EAAKpB,WAAWQ,SAAStgB,MAClF,GACC6Y,MAAM,UAAW,GACjBlG,KAAK,SAA4B1O,GAC9B,MAAMyR,EAAUH,EAAAA,OAASvV,MACzB0V,EAAQ3D,OAAO,QACVC,KAAK,QAAS,4BAA8BnL,EAAQyiB,OAAOrlB,EAAE4gB,SAElEnP,EAAQ3D,OAAO,QACVC,KAAK,QAAS,kBACd6G,MAAM,SAAU,cAEzB,GAEJ6T,EAAara,aAAa6S,SAASA,GAC9BrM,MAAM,UAAW,GAEtB,MAAMiU,EAAe5L,EAAK7B,eAAiBoM,EAAUE,EAAY3b,YACjE0c,EAAava,MAAMsa,GAAoB9Z,KAAK,SAA4B1O,GACpE,MAAMyR,EAAUH,EAAAA,OAASvV,MACnB+sB,EAAY7L,EAAKT,QAAQ8L,EAAQ,KAAOrL,EAAK7B,eAAiB,EAAIsM,EAAY1nB,EAAE4gB,SAAW9U,EAC3Fid,EAAa/oB,EAAE+G,iBAAiBd,MAAQjG,EAAE+G,MAAM,GAAK/G,EAAE+G,MAC7D,IAAIiiB,EAAYhpB,EAAEuhB,QAAQvhB,EAAEib,KAC5B,GAAIrY,EAAQwjB,YAAa,CACrB,MAAM6C,EAAKrmB,EAAQsmB,WACnB,OAAQtmB,EAAQolB,sBACZ,IAAK,SACD,MAAMmB,OAA8B,IAAXF,EAAG5hB,IAAsB4hB,EAAG5hB,IAAMwgB,EAAW7nB,EAAEib,KACxE+N,EAAY1B,EAAU0B,EAAYG,GAClC,MACJ,IAAK,SACD,MAAMC,OAA8B,IAAXH,EAAG5hB,IAAsB4hB,EAAG5hB,IAAMugB,EAAWW,GACtES,EAAY1B,EAAU0B,EAAYI,GAClC,MAEJ,QACIJ,EAAYvW,EAAAA,OAAS7P,EAAQymB,kBAAjB5W,CAAoCuW,GAG5D,CACA,MAAMM,EAAgBrM,EAAKN,SAASoM,GAC9BQ,EAAgBtM,EAAKN,SAAS3c,EAAE+G,iBAAiBd,MAAQjG,EAAE+G,MAAM,GAAK,GACtE4V,EAAWlhB,KAAKmE,IAAI2pB,EAAeD,GACnCE,EAAc/tB,KAAKsC,IAAIurB,EAAgBC,GAEvCE,EAAkB7mB,EAAQ8mB,oBAC1BC,EAAmB/mB,EAAQgnB,0BAA4BhnB,EAAQ+mB,mBAAqBF,EAAkB,IAEtGI,EAAWjnB,EAAQknB,kBACrB,CACIvtB,EAAGuU,EAAegY,EAAYnM,EAC9B/f,EAAGkU,EAAe6L,EAAWmM,EAC7BhV,MAAOhD,EAAe+X,EAAeW,EACrCzV,OAAQjD,EAAe0Y,EAAcX,GAEzC,CACItsB,EAAG,EACHK,EAAG,EACHkX,MAAOuU,EAASvU,MAChBC,OAAQsU,EAAStU,SAInBgW,EAAStY,EAAQzD,OAAO,QAAQI,aAAa6S,SAASA,GACvDrM,MAAM,OAAS5U,GAAW4C,EAAQwgB,UAAUpjB,EAAE8a,IAAK9a,EAAE4gB,OAAQ5gB,EAAE+G,MAAO/G,EAAEuhB,UAGzEzQ,EACAiZ,EACKhc,KAAK,IAAK+a,GACV/a,KAAK,IAAK4O,GACV5O,KAAK,QAAS8a,GACd9a,KAAK,SAAUyb,GAGpBO,EACKhc,KAAK,IAAK+a,GACV/a,KAAK,IAAK4O,GACV5O,KAAK,SAAU8a,GACf9a,KAAK,QAASyb,GAGvB,MAAMQ,EAASvY,EAAQzD,OAAO,QAAQI,aAAa6S,SAASA,GACvDrM,MAAM,YAAa6U,EAAkB,MACrC7U,MAAM,OAAS5U,GAAW4C,EAAQkjB,UAAU9lB,EAAE8a,IAAK9a,EAAE4gB,OAAQ5gB,EAAE+G,MAAO/G,EAAEuhB,UAG7EyI,EAAOpV,MAAM,cAAehS,EAAQqnB,6BAA+BrnB,EAAQsnB,sBAAwB,MAEnG,MAAMlS,EAAUpV,EAAQgnB,0BAA4BhnB,EAAQ+mB,mBAAqB,EAE3EQ,EAAmBV,EAAkB,IAE3C,GAAI3Y,EAAc,CACd,MAAMlU,EAAIitB,EAASjtB,EAAIitB,EAAS9V,OAAS4V,EACzCK,EACKjc,KAAK,IAAK+a,EAAaD,EAAe,GACtC9a,KAAK,IAAKnR,EAAIutB,GACdpc,KAAK,YAAa,eAAe+a,EAAaD,EAAe,MAAOjsB,KAE7E,MACIotB,EACKjc,KAAK,IAAK8b,EAASttB,EAAIyb,GACvBjK,KAAK,IAAK+a,EAAaD,EAAe,EAAKsB,GAGpDH,EACKjc,KAAK,SAAU8a,GACf9a,KAAK,QAASyb,GAEf5mB,EAAQwnB,iBACRJ,EACK/b,KAAMjO,IACH,MAAMqqB,EAAYznB,EAAQynB,UAAUrqB,EAAEuhB,QAASvhB,EAAEuhB,QAAQuG,GAAe9nB,EAAEib,KAC1E,GAAIoP,EAAW,CACX,MAAMC,EAAqBxZ,EAAe+Y,EAAS9V,OAAS8V,EAAS/V,MAC/D6U,EAAe/lB,EAAQ2nB,cAAcD,EAAoBD,EAAWrB,GAG1E,OAFAhpB,EAAE2oB,aAAeA,EAEVA,EAAa1a,IACxB,CACA,MAAO,KAInB,MAAMuc,EAAW/Y,EAAQlE,UAAU,aAAalI,KAAKzC,EAAQwjB,YAAc,CAAC,GAAG2C,KAAgB,IACzEyB,EAAS3c,QAAQC,OAAO,KACzCC,KAAK,QAAS,YACdW,KAAK,SAA4B1O,GAC9B4C,EAAQokB,UAAUyD,IAAI1uB,MAAM,IAAI2uB,EAAAA,MAAO3O,OAAOhgB,MAAM4uB,oBAAoB,eAC5E,GACUzc,MAAMsc,GACf9b,KAAK,WACF,MAAM0C,EAAM,CAAE7U,EAAG,EAAGK,EAAG,GACjBguB,EAAkBhoB,EAAQgoB,kBAC1BC,EAAgBjoB,EAAQioB,gBACxBC,EAAWloB,EAAQkoB,SAAS9B,EAAW4B,EAAiBC,GAExDE,EAAa9T,WAAW+R,IAAc,EAE5C,IAAIrD,EAAc/iB,EAAQ+iB,cAAgB/iB,EAAQ+iB,cAAgB7U,EAAe,SAAW,QAE5F,MAAMka,EAAYnB,EAASttB,EACrB0uB,EAAa5C,EAASvU,OAAS+V,EAASttB,EAAIstB,EAAS/V,OACrDoX,EAAWrB,EAASjtB,EACpBuuB,EAAc9C,EAAStU,QAAU8V,EAASjtB,EAAIitB,EAAS9V,QAE7D,IAAIqX,EACAC,EACAC,EAEJ,GAAItrB,EAAE2oB,aAAc,CAChB,MAAQ3Q,QAAAA,EAAAA,eAASuT,GAAmBvrB,EAAE2oB,aACtC0C,GAAY,EACRva,GACA6U,EAAc,SACdvU,EAAI7U,EAAIusB,EAAaD,EAAe,EAEJ,IAA5B7oB,EAAE2oB,aAAa6C,UACfH,GAAY,EACZja,EAAIxU,EAAI+f,EAAW3E,EAAW6S,EAAgB,GAE9CzZ,EAAIxU,EAAI+f,EAAW3E,EAAW6S,EAAgB,IAGlDlF,EAAc,QACkB,IAA5B3lB,EAAE2oB,aAAa6C,UACfH,GAAY,EACZja,EAAI7U,EAAKitB,EAAc7M,EAAY3E,GAEnC5G,EAAI7U,EAAKitB,EAAc7M,EAAY4O,EAAiBvT,EAExD5G,EAAIxU,EAAIksB,EAAaD,EAAe,EAE5C,MAOQ/X,GACAsa,EAAevB,EAAS9V,OAAS+W,EAAS/W,OAC1CsX,GAAazoB,EAAQ6oB,iBAAmBL,EAExCha,EAAI7U,EAAIstB,EAASttB,EAAKstB,EAAS/V,MAAQ,EAEnCuX,EACIN,GACAO,EAAuBJ,EAAWJ,EAAS/W,OAASiE,EAChDsT,EACKF,EAIDha,EAAIxU,EAAIitB,EAASjtB,EAAIitB,EAAS9V,OAAS+W,EAAS/W,QAHhDsX,GAAY,EACZja,EAAIxU,EAAIitB,EAASjtB,EAAKitB,EAAS9V,OAAS,GAK5C3C,EAAIxU,EAAIitB,EAASjtB,EAAKkuB,EAAS/W,OAAS,EAAKiE,IAGjDsT,EAAuBH,EAAcL,EAAS/W,OAC1CuX,EACKF,EAIDha,EAAIxU,EAAIitB,EAASjtB,EAAKkuB,EAAS/W,OAAS,EAAKiE,GAH7CqT,GAAY,EACZja,EAAIxU,EAAIitB,EAASjtB,EAAKitB,EAAS9V,OAAS,GAK5C3C,EAAIxU,EAAIitB,EAASjtB,EAAIkuB,EAAS/W,OAASiE,GAI/C5G,EAAIxU,EAAIitB,EAASjtB,EAAKitB,EAAS9V,OAAS,IAG5CqX,EAAevB,EAAS/V,MAAQgX,EAAShX,MACzCuX,GAAazoB,EAAQ6oB,iBAAmBL,EAExCha,EAAIxU,EAAIitB,EAASjtB,EAAKitB,EAAS9V,OAAS,EAEpCsX,EACIN,GACAO,EAAuBL,EAAaH,EAAShX,MAAQkE,EACjDsT,EACI1oB,EAAQwnB,kBAAoBgB,GAC5BC,GAAY,EACZja,EAAI7U,EAAIstB,EAASttB,EAAKstB,EAAS/V,MAAQ,GAEvC1C,EAAI7U,EAAIstB,EAASttB,GAAKuuB,EAAShX,MAAQkE,GAG3C5G,EAAI7U,EAAIstB,EAASttB,EAAIstB,EAAS/V,MAASgX,EAAShX,MAAQ,EAAKkE,IAGjEsT,EAAuBN,EAAYF,EAAShX,MACxCwX,EACI1oB,EAAQwnB,kBAAoBgB,GAC5BC,GAAY,EACZja,EAAI7U,EAAIstB,EAASttB,EAAKstB,EAAS/V,MAAQ,GAEvC1C,EAAI7U,EAAIstB,EAASttB,EAAIstB,EAAS/V,OAASgX,EAAShX,MAAQkE,GAG5D5G,EAAI7U,EAAIstB,EAASttB,GAAKuuB,EAAShX,MAAQkE,IAI/C5G,EAAI7U,EAAIstB,EAASttB,EAAKstB,EAAS/V,MAAQ,GAInD,MAAMgS,EAAYuF,EAAY,KAAOzoB,EAAQkjB,UAAU9lB,EAAE8a,IAAK9a,EAAE4gB,OAAQ5gB,EAAE+G,MAAO/G,EAAEuhB,SAG7ErG,EAAUtY,EAAQsY,UAClBwQ,EAAa9oB,EAAQwY,gBAAkBgQ,GACxCC,GAAazoB,EAAQwY,gBAAkBF,EAAQgE,QAAQlf,EAAE4gB,UAAY1F,EAAQ1W,OAAS,EAC3F5B,EAAQokB,UAAU2E,IAAI5vB,MACjBqV,IAAIA,GACJwa,OAAOjG,GACP9Q,WAAW+V,GACX7V,SAAS8V,GACT5c,KAAK,GAAG+a,KACR6C,UAAU/F,GACVgG,QAAQlpB,EAAQwjB,cAAgBsF,GAChCnM,QAGT,GACJiL,EAAS7c,OACJe,KAAK,SAA4B1O,GAC9B4C,EAAQokB,UAAU2E,IAAI5vB,MAAMggB,OAAO,KACvC,GACCvN,QAET,GACAga,EAAY7a,OAAOS,aAAa6S,SAASA,GACpCrM,MAAM,UAAW,GACjBpG,SAGL,MAAMud,EAAY9O,EAAK7B,eAAiBwM,EAAWW,GAAc9sB,KAAKkE,OAAO2oB,EAAQ7Z,OAAO,CAACrS,EAAG6e,IAAQA,EAAM,GAAKA,EAAM6M,IACnHkE,EAAmBva,EAAQlE,UAAU,qBAAqBlI,KAAKzC,EAAQslB,kBAAoB,CAACN,EAAWW,IAAe,IAC9FyD,EAAiBne,QAAQC,OAAO,KACzDC,KAAK,QAAS,oBACdW,KAAK,SAA4B1O,GAC9B4C,EAAQskB,iBAAiBuD,IAAI1uB,MAAM,IAAI2uB,EAAAA,MAAO3O,OAAOhgB,MAAM4uB,oBAAoB,eACnF,GACkBzc,MAAM8d,GACvBtd,KAAK,SAA4B1O,GAC9B,MAAMoR,EAAM,CAAE7U,EAAG,EAAGK,EAAG,GACjBksB,EAAY7L,EAAKT,QAAQ8L,EAAQ,IACjC3L,EAAWM,EAAKN,SAASoP,GAEzBnB,EAAkBhoB,EAAQgoB,kBAC1BC,EAAgBjoB,EAAQioB,gBACxBC,EAAWloB,EAAQkoB,SAAS9qB,EAAG4qB,EAAiBC,GAEhDE,EAAa9T,WAAWjX,IAAM,EACpC,IAAI2lB,EAA0C,SAC1C7U,GACAM,EAAI7U,EAAIusB,EAEJ1X,EAAIxU,EADJmuB,EACQpO,EAAWmO,EAAS/W,OAAS,EAE7B4I,EAAWmO,EAAS/W,OAAS,IAGzC4R,EAAc,QACdvU,EAAIxU,EAAIksB,EAEJ1X,EAAI7U,EADJwuB,EACQpO,EAAWmO,EAAShX,MAAQ,EAE5B6I,EAAWmO,EAAShX,MAAQ,GAI5ClR,EAAQskB,iBAAiByE,IAAI5vB,MACxBqV,IAAIA,GACJwa,OAAOjG,GACP9Q,WAAW+V,GACX7V,SAAS8V,GACT5c,KAAKjO,GACLuf,QAGT,GACJyM,EAAiBre,OACZe,KAAK,SAA4B1O,GAC9B4C,EAAQokB,UAAU2E,IAAI5vB,MAAMggB,OAAO,KACvC,GACCvN,QAET,GACJoS,EAAOjT,OAAOS,aAAa6S,SAASA,GAC/BzS,QAET,CAEA,aAAA+b,CAAcze,EAAQue,EAAWrB,GAE7B,MAAMnU,EAAa9Y,KAAKkuB,6BAA+BluB,KAAKmuB,sBAAwB,UAC9EnV,EAAWhZ,KAAK2tB,oBAChBkB,EAAkB7uB,KAAKkwB,yBAA2BlwB,KAAK6uB,kBAAoB,UAC3EC,EAAgB9uB,KAAK8uB,gBACrB7S,EAAUjc,KAAK6tB,0BAA4B7tB,KAAK4tB,mBAAqB5U,EAAW,IAChFwW,EAAiBxvB,KAAK+U,aAAe+Z,EAAgB9uB,KAAK+uB,SAAS9B,EAAW4B,EAAiBC,GAAe/W,MAG9GoY,EAAgB7B,EAGhB8B,EAAwB,EAAVnU,EALEjc,KAAK+uB,SAAS,MAAOjW,EAAYE,GAAUjB,MAKdyX,EAC7Ca,EAAwB,EAAVpU,EAAeuT,EAQnC,IAAIC,EAAW,EACf,GAX6B,EAAVxT,EAHIjc,KAAK+uB,SAAST,EAAWxV,EAAYE,GAAUjB,MAGnByX,EAWnCzf,EACZ0f,EAAW,OACf,GAAWW,EAAargB,EAAQ,CAC5B,MAAMugB,EAAcvgB,EAASqgB,EAC7B,IAAI1V,EAAQ,GACZ,IAAA,MAAW6V,KAAUjC,EAAW,CAC5B,GAAItuB,KAAK+uB,SAASrU,EAAQ6V,EAAQzX,EAAYE,GAAUjB,MAAQuY,EAAa,CACzEhC,EAAY5T,EAAQ,MACpB,KACJ,CACIA,GAAS6V,CAEjB,CACAd,EAAW,CACf,MAAWY,EAAatgB,GACpBue,EAAY,GACZmB,EAAW,GAEXnB,EAAY,GAGhB,MAAO,CACHpc,KAAMoc,EACNzB,YAAasD,IAAkB7B,EAC/BrS,UACAwT,WACAD,iBAER,CAEA,SAAAlB,CAAU9I,EAASM,EAAQ5G,GACvB,OAAOsG,EAAQ,EACnB,GApjB+B/kB,EAAAsqB,GAAA,UAC/BT,EADSS,GACF,WAAyB,CAAC,CAC7BlL,GAAI,QACJ/K,KAAM,UACP,CACC+K,GAAI,SACJ/K,KAAM,SACNyV,OAAO,KAPR,IAAMiG,GAANzF,GAsjBPyF,GAAO9vB,UAAU8U,QAAU,gBAC3Bgb,GAAO9vB,UAAU+pB,WAAWpE,EAAAA,SAAS3lB,WACrC8vB,GAAO9vB,UAAU+pB,WAAWnE,EAAAA,SAAS5lB,WAsDrC8vB,GAAO9vB,UAAUmc,QAAQ,kBAAmB,KAAM,SAAU,4BAA6B,KAAM,CAAEE,UAAU,IAC3GyT,GAAO9vB,UAAUmc,QAAQ,gBAAiB,GAAI,SAAU,iCACxD2T,GAAO9vB,UAAUmc,QAAQ,sBAAuB,KAAM,SAAU,4BAA6B,KAAM,CAAEE,UAAU,IAC/GyT,GAAO9vB,UAAUmc,QAAQ,mBAAoB,EAAG,SAAU,gCAAiC,KAAM,CAAEE,UAAU,IAC7GyT,GAAO9vB,UAAUmc,QAAQ,oBAAqB,GAAI,SAAU,iCAC5D2T,GAAO9vB,UAAUmc,QAAQ,YAAa,UAAW,MAAO,gCAAiC,IAAM2T,GAAO9vB,UAAUwhB,SAASkG,SAAU,CAAElC,KAAM,CAAC,QAAS,YACrJsK,GAAO9vB,UAAUmc,QAAQ,oBAAoB,EAAO,UAAW,2CAA4C,KAAM,CAAEqJ,KAAM,CAAC,eAAgB,YAC1IsK,GAAO9vB,UAAUmc,QAAQ,aAAa,EAAO,UAAW,wBACxD2T,GAAO9vB,UAAUmc,QAAQ,iBAAiB,EAAO,UAAW,wBAC5D2T,GAAO9vB,UAAUmc,QAAQ,kBAAmB,IAAK,SAAU,sBAAuB,KAAM,CAAEC,QAASrc,EAAC+C,IAAeA,EAAE6mB,eAAiB7mB,EAAEyoB,qBAArC,aACnGuE,GAAO9vB,UAAUmc,QAAQ,qBAAsB,KAAM,MAAO,kFAAmF,CAAC,KAAM,SAAU,UAAW,CAAEC,QAASrc,MAAM+C,EAAE6mB,YAAR,WAAqBtN,UAAU,IACrNyT,GAAO9vB,UAAUmc,QAAQ,2BAA4B,MAAO,SAAU,kBAAmB,KAAM,CAAEC,QAASrc,EAAC+C,IAAeA,EAAE6mB,cAAgB7mB,EAAEyoB,qBAApC,aAC1GuE,GAAO9vB,UAAUmc,QAAQ,mBAAmB,EAAO,UAAW,uCAAwC,MACtG2T,GAAO9vB,UAAUmc,QAAQ,iBAAiB,EAAO,UAAW,kCAC5D2T,GAAO9vB,UAAUmc,QAAQ,cAAe,SAAU,MAAO,mCAAoC,CAAC,QAAS,SAAU,QACjH2T,GAAO9vB,UAAUmc,QAAQ,0BAA2B,EAAG,SAAU,0FACjE2T,GAAO9vB,UAAUmc,QAAQ,gCAAgC,EAAO,UAAW,mECroBpE,MAAM4T,GAAN,MAAMA,aAAYD,GACrB,WAAA7vB,GACIqT,QACAhU,KAAK8d,oBAAoB,WAC7B,GAJ4Brd,EAAAgwB,GAAA,OAAzB,IAAMC,GAAND,GCFP,SAASE,GAAMnX,GACb,IAAIlO,EAAM,EACNslB,EAAWpX,EAAKoX,SAChBrnB,EAAIqnB,GAAYA,EAASnoB,OAC7B,GAAKc,SACSA,GAAK,GAAG+B,GAAOslB,EAASrnB,GAAGyB,WADjCM,EAAM,EAEdkO,EAAKxO,MAAQM,CACf,CAEe,SAAAulB,KACb,OAAO7wB,KAAK8wB,UAAUH,GACxB,CCXe,SAAAI,GAASC,GACtB,IAAiBC,EAAwBL,EAAUrnB,EAAGC,EAAlDgQ,EAAOxZ,KAAekxB,EAAO,CAAC1X,GAClC,GAEE,IADAyX,EAAUC,EAAKnW,UAAWmW,EAAO,GAC1B1X,EAAOyX,EAAQvV,OAEpB,GADAsV,EAASxX,GAAOoX,EAAWpX,EAAKoX,SAClB,IAAKrnB,EAAI,EAAGC,EAAIonB,EAASnoB,OAAQc,EAAIC,IAAKD,EACtD2nB,EAAK7kB,KAAKukB,EAASrnB,UAGhB2nB,EAAKzoB,QACd,OAAOzI,IACT,CCZe,SAAAmxB,GAASH,GAEtB,IADA,IAAiCJ,EAAUrnB,EAAvCiQ,EAAOxZ,KAAMoxB,EAAQ,CAAC5X,GACnBA,EAAO4X,EAAM1V,OAElB,GADAsV,EAASxX,GAAOoX,EAAWpX,EAAKoX,aACbrnB,EAAIqnB,EAASnoB,OAAS,EAAGc,GAAK,IAAKA,EACpD6nB,EAAM/kB,KAAKukB,EAASrnB,IAGxB,OAAOvJ,IACT,CCTe,SAAAqxB,GAASL,GAEtB,IADA,IAA4CJ,EAAUrnB,EAAGC,EAArDgQ,EAAOxZ,KAAMoxB,EAAQ,CAAC5X,GAAO0X,EAAO,GACjC1X,EAAO4X,EAAM1V,OAElB,GADAwV,EAAK7kB,KAAKmN,GAAOoX,EAAWpX,EAAKoX,SACnB,IAAKrnB,EAAI,EAAGC,EAAIonB,EAASnoB,OAAQc,EAAIC,IAAKD,EACtD6nB,EAAM/kB,KAAKukB,EAASrnB,IAGxB,KAAOiQ,EAAO0X,EAAKxV,OACjBsV,EAASxX,GAEX,OAAOxZ,IACT,CCZe,SAAAsxB,GAAStmB,GACtB,OAAOhL,KAAK8wB,UAAU,SAAStX,GAI7B,IAHA,IAAIlO,GAAON,EAAMwO,EAAKlQ,OAAS,EAC3BsnB,EAAWpX,EAAKoX,SAChBrnB,EAAIqnB,GAAYA,EAASnoB,SACpBc,GAAK,GAAG+B,GAAOslB,EAASrnB,GAAGyB,MACpCwO,EAAKxO,MAAQM,CACf,EACF,CCRe,SAAAimB,GAASC,GACtB,OAAOxxB,KAAKyxB,WAAW,SAASjY,GAC1BA,EAAKoX,UACPpX,EAAKoX,SAASzlB,KAAKqmB,EAEvB,EACF,CCNe,SAAAE,GAASC,GAItB,IAHA,IAAIC,EAAQ5xB,KACR6xB,EAAWC,GAAoBF,EAAOD,GACtCP,EAAQ,CAACQ,GACNA,IAAUC,GACfD,EAAQA,EAAMG,OACdX,EAAM/kB,KAAKulB,GAGb,IADA,IAAI5nB,EAAIonB,EAAM3oB,OACPkpB,IAAQE,GACbT,EAAMY,OAAOhoB,EAAG,EAAG2nB,GACnBA,EAAMA,EAAII,OAEZ,OAAOX,CACT,CAEA,SAASU,GAAoBtpB,EAAGoC,GAC9B,GAAIpC,IAAMoC,EAAG,OAAOpC,EACpB,IAAIypB,EAASzpB,EAAE0pB,YACXC,EAASvnB,EAAEsnB,YACXE,EAAI,KAGR,IAFA5pB,EAAIypB,EAAOvW,MACX9Q,EAAIunB,EAAOzW,MACJlT,IAAMoC,GACXwnB,EAAI5pB,EACJA,EAAIypB,EAAOvW,MACX9Q,EAAIunB,EAAOzW,MAEb,OAAO0W,CACT,CC7Be,SAAAC,KAEb,IADA,IAAI7Y,EAAOxZ,KAAMoxB,EAAQ,CAAC5X,GACnBA,EAAOA,EAAKuY,QACjBX,EAAM/kB,KAAKmN,GAEb,OAAO4X,CACT,CCNe,SAAAkB,KACb,IAAIlB,EAAQ,GAIZ,OAHApxB,KAAK2S,KAAK,SAAS6G,GACjB4X,EAAM/kB,KAAKmN,EACb,GACO4X,CACT,CCNe,SAAAmB,KACb,IAAIC,EAAS,GAMb,OALAxyB,KAAKyxB,WAAW,SAASjY,GAClBA,EAAKoX,UACR4B,EAAOnmB,KAAKmN,EAEhB,GACOgZ,CACT,CCRe,SAAAC,KACb,IAAIC,EAAO1yB,KAAM2yB,EAAQ,GAMzB,OALAD,EAAK/f,KAAK,SAAS6G,GACbA,IAASkZ,GACXC,EAAMtmB,KAAK,CAACumB,OAAQpZ,EAAKuY,OAAQ/R,OAAQxG,GAE7C,GACOmZ,CACT,CCIe,SAASE,GAAUvpB,EAAMsnB,GACtC,IAEIpX,EAEAsZ,EACAC,EACAxpB,EACAC,EAPAkpB,EAAO,IAAIM,GAAK1pB,GAChB2pB,GAAU3pB,EAAK0B,QAAU0nB,EAAK1nB,MAAQ1B,EAAK0B,OAE3ComB,EAAQ,CAACsB,GAQb,IAFgB,MAAZ9B,IAAkBA,EAAWsC,IAE1B1Z,EAAO4X,EAAM1V,OAElB,GADIuX,IAAQzZ,EAAKxO,OAASwO,EAAKlQ,KAAK0B,QAC/B+nB,EAASnC,EAASpX,EAAKlQ,SAAWE,EAAIupB,EAAOtqB,QAEhD,IADA+Q,EAAKoX,SAAW,IAAI1mB,MAAMV,GACrBD,EAAIC,EAAI,EAAGD,GAAK,IAAKA,EACxB6nB,EAAM/kB,KAAKymB,EAAQtZ,EAAKoX,SAASrnB,GAAK,IAAIypB,GAAKD,EAAOxpB,KACtDupB,EAAMf,OAASvY,EACfsZ,EAAMzY,MAAQb,EAAKa,MAAQ,EAKjC,OAAOqY,EAAKjB,WAAW0B,GACzB,CAEA,SAASC,KACP,OAAOP,GAAU7yB,MAAMyxB,WAAW4B,GACpC,CAEA,SAASH,GAAgBjvB,GACvB,OAAOA,EAAE2sB,QACX,CAEA,SAASyC,GAAS7Z,GAChBA,EAAKlQ,KAAOkQ,EAAKlQ,KAAKA,IACxB,CAEO,SAAS6pB,GAAc3Z,GAC5B,IAAIxB,EAAS,EACb,GAAGwB,EAAKxB,OAASA,SACTwB,EAAOA,EAAKuY,SAAYvY,EAAKxB,SAAWA,EAClD,CAEO,SAASgb,GAAK1pB,GACnBtJ,KAAKsJ,KAAOA,EACZtJ,KAAKqa,MACLra,KAAKgY,OAAS,EACdhY,KAAK+xB,OAAS,IAChB,CZtDArB,GAAIhwB,UAAU8U,QAAU,aCRf/U,EAAAkwB,GAAA,SASMlwB,EAAAowB,GAAA,cCTApwB,EAAAswB,GAAA,aCAAtwB,EAAA0wB,GAAA,mBCAA1wB,EAAA4wB,GAAA,kBCAA5wB,EAAA6wB,GAAA,YCAA7wB,EAAA8wB,GAAA,aCAA9wB,EAAAixB,GAAA,aAgBNjxB,EAAAqxB,GAAA,uBChBMrxB,EAAA4xB,GAAA,kBCAA5xB,EAAA6xB,GAAA,oBCAA7xB,EAAA8xB,GAAA,eCAA9xB,EAAAgyB,GAAA,cCYShyB,EAAAoyB,GAAA,aA2BfpyB,EAAA2yB,GAAA,aAIA3yB,EAAAyyB,GAAA,mBAIAzyB,EAAA4yB,GAAA,YAIO5yB,EAAA0yB,GAAA,iBAMAH,EAAAA,GAAAA,UAOhBA,GAAKtyB,UAAYmyB,GAAUnyB,UAAY,CACrCC,YAAaqyB,GACbrC,MAAOE,GACPle,KAAMoe,GACND,UAAWO,GACXI,WAAYN,GACZ7lB,IAAKgmB,GACLnmB,KAAMomB,GACNjxB,KAAMoxB,GACNQ,UAAWG,GACXiB,YAAahB,GACbE,OAAQD,GACRI,MAAOF,GACPnhB,KAAM8hB,IC7ED,IAAI5jB,GAAQtF,MAAMxJ,UAAU8O,MAE5B,SAAS+jB,GAAQC,GAKtB,IAJA,IACItuB,EACAqE,EAFA+D,EAAIkmB,EAAM/qB,OAIP6E,GACL/D,EAAI7J,KAAK+zB,SAAWnmB,IAAM,EAC1BpI,EAAIsuB,EAAMlmB,GACVkmB,EAAMlmB,GAAKkmB,EAAMjqB,GACjBiqB,EAAMjqB,GAAKrE,EAGb,OAAOsuB,CACT,CCbe,SAAAE,GAASC,GAGtB,IAFA,IAAwE9qB,EAAGsX,EAAvE5W,EAAI,EAAGC,GAAKmqB,EAAUJ,GAAQ/jB,GAAML,KAAKwkB,KAAWlrB,OAAQmrB,EAAI,GAE7DrqB,EAAIC,GACTX,EAAI8qB,EAAQpqB,GACR4W,GAAK0T,GAAa1T,EAAGtX,KAAMU,GAC1B4W,EAAI2T,GAAaF,EAAIG,GAAYH,EAAG/qB,IAAKU,EAAI,GAGpD,OAAO4W,CACT,CAEA,SAAS4T,GAAYH,EAAG/qB,GACtB,IAAIU,EAAGQ,EAEP,GAAIiqB,GAAgBnrB,EAAG+qB,GAAI,MAAO,CAAC/qB,GAGnC,IAAKU,EAAI,EAAGA,EAAIqqB,EAAEnrB,SAAUc,EAC1B,GAAI0qB,GAAYprB,EAAG+qB,EAAErqB,KACdyqB,GAAgBE,GAAcN,EAAErqB,GAAIV,GAAI+qB,GAC7C,MAAO,CAACA,EAAErqB,GAAIV,GAKlB,IAAKU,EAAI,EAAGA,EAAIqqB,EAAEnrB,OAAS,IAAKc,EAC9B,IAAKQ,EAAIR,EAAI,EAAGQ,EAAI6pB,EAAEnrB,SAAUsB,EAC9B,GAAIkqB,GAAYC,GAAcN,EAAErqB,GAAIqqB,EAAE7pB,IAAKlB,IACpCorB,GAAYC,GAAcN,EAAErqB,GAAIV,GAAI+qB,EAAE7pB,KACtCkqB,GAAYC,GAAcN,EAAE7pB,GAAIlB,GAAI+qB,EAAErqB,KACtCyqB,GAAgBG,GAAcP,EAAErqB,GAAIqqB,EAAE7pB,GAAIlB,GAAI+qB,GACnD,MAAO,CAACA,EAAErqB,GAAIqqB,EAAE7pB,GAAIlB,GAM1B,MAAM,IAAI9G,KACZ,CAEA,SAASkyB,GAAYzrB,EAAGoC,GACtB,IAAIwpB,EAAK5rB,EAAEjH,EAAIqJ,EAAErJ,EAAG0B,EAAK2H,EAAEpK,EAAIgI,EAAEhI,EAAG2C,EAAKyH,EAAE/J,EAAI2H,EAAE3H,EACjD,OAAOuzB,EAAK,GAAKA,EAAKA,EAAKnxB,EAAKA,EAAKE,EAAKA,CAC5C,CAEA,SAAS0wB,GAAarrB,EAAGoC,GACvB,IAAIwpB,EAAK5rB,EAAEjH,EAAIqJ,EAAErJ,EAAI,KAAM0B,EAAK2H,EAAEpK,EAAIgI,EAAEhI,EAAG2C,EAAKyH,EAAE/J,EAAI2H,EAAE3H,EACxD,OAAOuzB,EAAK,GAAKA,EAAKA,EAAKnxB,EAAKA,EAAKE,EAAKA,CAC5C,CAEA,SAAS6wB,GAAgBxrB,EAAGorB,GAC1B,IAAA,IAASrqB,EAAI,EAAGA,EAAIqqB,EAAEnrB,SAAUc,EAC9B,IAAKsqB,GAAarrB,EAAGorB,EAAErqB,IACrB,OAAO,EAGX,OAAO,CACT,CAEA,SAASuqB,GAAaF,GACpB,OAAQA,EAAEnrB,QACR,KAAK,EAAG,OAAO4rB,GAAcT,EAAE,IAC/B,KAAK,EAAG,OAAOM,GAAcN,EAAE,GAAIA,EAAE,IACrC,KAAK,EAAG,OAAOO,GAAcP,EAAE,GAAIA,EAAE,GAAIA,EAAE,IAE/C,CAEA,SAASS,GAAc7rB,GACrB,MAAO,CACLhI,EAAGgI,EAAEhI,EACLK,EAAG2H,EAAE3H,EACLU,EAAGiH,EAAEjH,EAET,CAEA,SAAS2yB,GAAc1rB,EAAGoC,GACxB,IAAI3J,EAAKuH,EAAEhI,EAAGU,EAAKsH,EAAE3H,EAAGuE,EAAKoD,EAAEjH,EAC3BH,EAAKwJ,EAAEpK,EAAGa,EAAKuJ,EAAE/J,EAAGyzB,EAAK1pB,EAAErJ,EAC3BG,EAAMN,EAAKH,EAAIU,EAAMN,EAAKH,EAAIqzB,EAAMD,EAAKlvB,EACzC5C,EAAI9C,KAAK4C,KAAKZ,EAAMA,EAAMC,EAAMA,GACpC,MAAO,CACLnB,GAAIS,EAAKG,EAAKM,EAAMc,EAAI+xB,GAAO,EAC/B1zB,GAAIK,EAAKG,EAAKM,EAAMa,EAAI+xB,GAAO,EAC/BhzB,GAAIiB,EAAI4C,EAAKkvB,GAAM,EAEvB,CAEA,SAASH,GAAc3rB,EAAGoC,EAAGwnB,GAC3B,IAAInxB,EAAKuH,EAAEhI,EAAGU,EAAKsH,EAAE3H,EAAGuE,EAAKoD,EAAEjH,EAC3BH,EAAKwJ,EAAEpK,EAAGa,EAAKuJ,EAAE/J,EAAGyzB,EAAK1pB,EAAErJ,EAC3BqD,EAAKwtB,EAAE5xB,EAAGqE,EAAKutB,EAAEvxB,EAAG2zB,EAAKpC,EAAE7wB,EAC3BkzB,EAAKxzB,EAAKG,EACVszB,EAAKzzB,EAAK2D,EACV+vB,EAAKzzB,EAAKG,EACVuzB,EAAK1zB,EAAK2D,EACVgwB,EAAKP,EAAKlvB,EACV0vB,EAAKN,EAAKpvB,EACV2vB,EAAK9zB,EAAKA,EAAKC,EAAKA,EAAKkE,EAAKA,EAC9BS,EAAKkvB,EAAK3zB,EAAKA,EAAKC,EAAKA,EAAKizB,EAAKA,EACnCU,EAAKD,EAAKnwB,EAAKA,EAAKC,EAAKA,EAAK2vB,EAAKA,EACnCS,EAAKP,EAAKC,EAAKF,EAAKG,EACpBM,GAAMP,EAAKK,EAAKJ,EAAK/uB,IAAY,EAALovB,GAAUh0B,EACtCk0B,GAAMP,EAAKC,EAAKF,EAAKG,GAAMG,EAC3BG,GAAMV,EAAK7uB,EAAK4uB,EAAKO,IAAY,EAALC,GAAU/zB,EACtCm0B,GAAMZ,EAAKK,EAAKJ,EAAKG,GAAMI,EAC3BK,EAAIH,EAAKA,EAAKE,EAAKA,EAAK,EACxBzB,EAAI,GAAKxuB,EAAK8vB,EAAKC,EAAKC,EAAKC,GAC7BE,EAAIL,EAAKA,EAAKE,EAAKA,EAAKhwB,EAAKA,EAC7B7D,IAAM+zB,GAAK1B,EAAIl0B,KAAK4C,KAAKsxB,EAAIA,EAAI,EAAI0B,EAAIC,KAAO,EAAID,GAAKC,EAAI3B,GACjE,MAAO,CACLpzB,EAAGS,EAAKi0B,EAAKC,EAAK5zB,EAClBV,EAAGK,EAAKk0B,EAAKC,EAAK9zB,EAClBA,IAEJ,CCnHA,SAASi0B,GAAM5qB,EAAGpC,EAAG4pB,GACnB,IAAoB5xB,EAAGi0B,EACH5zB,EAAG8zB,EADnB1xB,EAAK2H,EAAEpK,EAAIgI,EAAEhI,EACb2C,EAAKyH,EAAE/J,EAAI2H,EAAE3H,EACbgF,EAAK5C,EAAKA,EAAKE,EAAKA,EACpB0C,GACF4uB,EAAKjsB,EAAEjH,EAAI6wB,EAAE7wB,EAAGkzB,GAAMA,EACtBE,EAAK/pB,EAAErJ,EAAI6wB,EAAE7wB,EACTkzB,GADYE,GAAMA,IAEpBn0B,GAAKqF,EAAK8uB,EAAKF,IAAO,EAAI5uB,GAC1BhF,EAAInB,KAAK4C,KAAK5C,KAAKkE,IAAI,EAAG+wB,EAAK9uB,EAAKrF,EAAIA,IACxC4xB,EAAE5xB,EAAIoK,EAAEpK,EAAIA,EAAIyC,EAAKpC,EAAIsC,EACzBivB,EAAEvxB,EAAI+J,EAAE/J,EAAIL,EAAI2C,EAAKtC,EAAIoC,IAEzBzC,GAAKqF,EAAK4uB,EAAKE,IAAO,EAAI9uB,GAC1BhF,EAAInB,KAAK4C,KAAK5C,KAAKkE,IAAI,EAAG6wB,EAAK5uB,EAAKrF,EAAIA,IACxC4xB,EAAE5xB,EAAIgI,EAAEhI,EAAIA,EAAIyC,EAAKpC,EAAIsC,EACzBivB,EAAEvxB,EAAI2H,EAAE3H,EAAIL,EAAI2C,EAAKtC,EAAIoC,KAG3BmvB,EAAE5xB,EAAIgI,EAAEhI,EAAI4xB,EAAE7wB,EACd6wB,EAAEvxB,EAAI2H,EAAE3H,EAEZ,CAEA,SAAS40B,GAAWjtB,EAAGoC,GACrB,IAAIwpB,EAAK5rB,EAAEjH,EAAIqJ,EAAErJ,EAAI,KAAM0B,EAAK2H,EAAEpK,EAAIgI,EAAEhI,EAAG2C,EAAKyH,EAAE/J,EAAI2H,EAAE3H,EACxD,OAAOuzB,EAAK,GAAKA,EAAKA,EAAKnxB,EAAKA,EAAKE,EAAKA,CAC5C,CAEA,SAASuyB,GAAMlc,GACb,IAAIhR,EAAIgR,EAAKnZ,EACTuK,EAAI4O,EAAK0X,KAAK7wB,EACd40B,EAAKzsB,EAAEjH,EAAIqJ,EAAErJ,EACb0B,GAAMuF,EAAEhI,EAAIoK,EAAErJ,EAAIqJ,EAAEpK,EAAIgI,EAAEjH,GAAK0zB,EAC/B9xB,GAAMqF,EAAE3H,EAAI+J,EAAErJ,EAAIqJ,EAAE/J,EAAI2H,EAAEjH,GAAK0zB,EACnC,OAAOhyB,EAAKA,EAAKE,EAAKA,CACxB,CAEA,SAAS6vB,GAAK2C,GACZ31B,KAAKK,EAAIs1B,EACT31B,KAAKkxB,KAAO,KACZlxB,KAAK41B,SAAW,IAClB,CAEO,SAASC,GAAYlC,GAC1B,KAAMnqB,EAAImqB,EAAQlrB,QAAS,OAAO,EAElC,IAAID,EAAGoC,EAAGwnB,EAAG5oB,EAAGssB,EAAIC,EAAIxsB,EAAGQ,EAAGC,EAAGgsB,EAAIC,EAIrC,IADAztB,EAAImrB,EAAQ,IAAMnzB,EAAI,EAAGgI,EAAE3H,EAAI,IACzB2I,EAAI,GAAI,OAAOhB,EAAEjH,EAIvB,GADAqJ,EAAI+oB,EAAQ,GAAInrB,EAAEhI,GAAKoK,EAAErJ,EAAGqJ,EAAEpK,EAAIgI,EAAEjH,EAAGqJ,EAAE/J,EAAI,IACvC2I,EAAI,GAAI,OAAOhB,EAAEjH,EAAIqJ,EAAErJ,EAG7Bi0B,GAAM5qB,EAAGpC,EAAG4pB,EAAIuB,EAAQ,IAGxBnrB,EAAI,IAAIwqB,GAAKxqB,GAAIoC,EAAI,IAAIooB,GAAKpoB,GAAIwnB,EAAI,IAAIY,GAAKZ,GAC/C5pB,EAAE0oB,KAAOkB,EAAEwD,SAAWhrB,EACtBA,EAAEsmB,KAAO1oB,EAAEotB,SAAWxD,EACtBA,EAAElB,KAAOtmB,EAAEgrB,SAAWptB,EAGtB0tB,MAAW3sB,EAAI,EAAGA,EAAIC,IAAKD,EAAG,CAC5BisB,GAAMhtB,EAAEnI,EAAGuK,EAAEvK,EAAG+xB,EAAIuB,EAAQpqB,IAAK6oB,EAAI,IAAIY,GAAKZ,GAK9CroB,EAAIa,EAAEsmB,KAAMlnB,EAAIxB,EAAEotB,SAAUI,EAAKprB,EAAEvK,EAAEkB,EAAG00B,EAAKztB,EAAEnI,EAAEkB,EACjD,GACE,GAAIy0B,GAAMC,EAAI,CACZ,GAAIR,GAAW1rB,EAAE1J,EAAG+xB,EAAE/xB,GAAI,CACxBuK,EAAIb,EAAGvB,EAAE0oB,KAAOtmB,EAAGA,EAAEgrB,SAAWptB,IAAKe,EACrC,SAAS2sB,CACX,CACAF,GAAMjsB,EAAE1J,EAAEkB,EAAGwI,EAAIA,EAAEmnB,IACrB,KAAO,CACL,GAAIuE,GAAWzrB,EAAE3J,EAAG+xB,EAAE/xB,GAAI,EACxBmI,EAAIwB,GAAKknB,KAAOtmB,EAAGA,EAAEgrB,SAAWptB,IAAKe,EACrC,SAAS2sB,CACX,CACAD,GAAMjsB,EAAE3J,EAAEkB,EAAGyI,EAAIA,EAAE4rB,QACrB,QACO7rB,IAAMC,EAAEknB,MAOjB,IAJAkB,EAAEwD,SAAWptB,EAAG4pB,EAAElB,KAAOtmB,EAAGpC,EAAE0oB,KAAOtmB,EAAEgrB,SAAWhrB,EAAIwnB,EAGtD0D,EAAKJ,GAAMltB,IACH4pB,EAAIA,EAAElB,QAAUtmB,IACjBmrB,EAAKL,GAAMtD,IAAM0D,IACpBttB,EAAI4pB,EAAG0D,EAAKC,GAGhBnrB,EAAIpC,EAAE0oB,IACR,CAGkB,IAAlB1oB,EAAI,CAACoC,EAAEvK,GAAI+xB,EAAIxnB,GAAWwnB,EAAIA,EAAElB,QAAUtmB,GAAGpC,EAAE6D,KAAK+lB,EAAE/xB,GAGtD,IAH0D+xB,EAAIsB,GAAQlrB,GAGjEe,EAAI,EAAGA,EAAIC,IAAKD,GAAGf,EAAImrB,EAAQpqB,IAAM/I,GAAK4xB,EAAE5xB,EAAGgI,EAAE3H,GAAKuxB,EAAEvxB,EAE7D,OAAOuxB,EAAE7wB,CACX,CChHO,SAASwb,GAASoZ,GACvB,OAAY,MAALA,EAAY,KAAOC,GAASD,EACrC,CAEO,SAASC,GAASD,GACvB,GAAiB,mBAANA,EAAkB,MAAM,IAAIp0B,MACvC,OAAOo0B,CACT,CCPO,SAASE,KACd,OAAO,CACT,CAEe,SAAAC,GAAS91B,GACtB,OAAO,WACL,OAAOA,CACT,CACF,CCJA,SAAS+1B,GAActyB,GACrB,OAAOvE,KAAK4C,KAAK2B,EAAE+G,MACrB,CAEe,SAAAwrB,KACb,IAAIC,EAAS,KACTxzB,EAAK,EACLE,EAAK,EACL8Y,EAAUoa,GAEd,SAASH,EAAKxD,GAYZ,OAXAA,EAAKlyB,EAAIyC,EAAK,EAAGyvB,EAAK7xB,EAAIsC,EAAK,EAC3BszB,EACF/D,EAAKjB,WAAWiF,GAAWD,IACtB3F,UAAU6F,GAAa1a,EAAS,KAChCwV,WAAWmF,GAAe,IAE/BlE,EAAKjB,WAAWiF,GAAWH,KACtBzF,UAAU6F,GAAaN,GAAc,IACrCvF,UAAU6F,GAAa1a,EAASyW,EAAKnxB,EAAI7B,KAAKmE,IAAIZ,EAAIE,KACtDsuB,WAAWmF,GAAel3B,KAAKmE,IAAIZ,EAAIE,IAAO,EAAIuvB,EAAKnxB,KAEvDmxB,CACT,CAcA,OA3BSjyB,EAAAy1B,EAAA,QAeTA,EAAKO,OAAS,SAASj2B,GACrB,OAAOyG,UAAUwB,QAAUguB,EAAS1Z,GAASvc,GAAI01B,GAAQO,CAC3D,EAEAP,EAAKlN,KAAO,SAASxoB,GACnB,OAAOyG,UAAUwB,QAAUxF,GAAMzC,EAAE,GAAI2C,GAAM3C,EAAE,GAAI01B,GAAQ,CAACjzB,EAAIE,EAClE,EAEA+yB,EAAKja,QAAU,SAASzb,GACtB,OAAOyG,UAAUwB,QAAUwT,EAAuB,mBAANzb,EAAmBA,EAAImG,IAAUnG,GAAI01B,GAAQja,CAC3F,EAEOia,CACT,CAEA,SAASQ,GAAWD,GAClB,OAAO,SAASjd,GACTA,EAAKoX,WACRpX,EAAKjY,EAAI7B,KAAKkE,IAAI,GAAI6yB,EAAOjd,IAAS,GAE1C,CACF,CAEA,SAASmd,GAAa1a,EAASjS,GAC7B,OAAO,SAASwP,GACd,GAAIoX,EAAWpX,EAAKoX,SAAU,CAC5B,IAAIA,EACArnB,EAGA4W,EAFA3W,EAAIonB,EAASnoB,OACblH,EAAI0a,EAAQzC,GAAQxP,GAAK,EAG7B,GAAIzI,EAAG,IAAKgI,EAAI,EAAGA,EAAIC,IAAKD,EAAGqnB,EAASrnB,GAAGhI,GAAKA,EAEhD,GADA4e,EAAI0V,GAAYjF,GACZrvB,EAAG,IAAKgI,EAAI,EAAGA,EAAIC,IAAKD,EAAGqnB,EAASrnB,GAAGhI,GAAKA,EAChDiY,EAAKjY,EAAI4e,EAAI5e,CACf,CACF,CACF,CAEA,SAASq1B,GAAe5sB,GACtB,OAAO,SAASwP,GACd,IAAIuY,EAASvY,EAAKuY,OAClBvY,EAAKjY,GAAKyI,EACN+nB,IACFvY,EAAKhZ,EAAIuxB,EAAOvxB,EAAIwJ,EAAIwP,EAAKhZ,EAC7BgZ,EAAK3Y,EAAIkxB,EAAOlxB,EAAImJ,EAAIwP,EAAK3Y,EAEjC,CACF,CL5EgBJ,EAAA8yB,GAAA,WCAD9yB,EAAAizB,GAAA,WAYNjzB,EAAAszB,GAAA,eA6BAtzB,EAAAwzB,GAAA,eAKAxzB,EAAAozB,GAAA,gBAKApzB,EAAAuzB,GAAA,mBASAvzB,EAAAqzB,GAAA,gBAQArzB,EAAA4zB,GAAA,iBAQA5zB,EAAAyzB,GAAA,iBAYAzzB,EAAA0zB,GAAA,iBCxFA1zB,EAAA+0B,GAAA,SAwBA/0B,EAAAg1B,GAAA,cAKAh1B,EAAAi1B,GAAA,SASAj1B,EAAAuyB,GAAA,QAMOvyB,EAAAo1B,GAAA,eC9CAp1B,EAAAsc,GAAA,YAIAtc,EAAA21B,GAAA,YCJA31B,EAAA41B,GAAA,gBAID51B,EAAA61B,GAAA,cCAN71B,EAAA81B,GAAA,iBAIM91B,EAAA+1B,GAAA,UAoCN/1B,EAAAi2B,GAAA,cAQAj2B,EAAAk2B,GAAA,gBAiBAl2B,EAAAm2B,GAAA,kBC9DF,MAAMC,GAAN,MAAMA,gBAAe3jB,EAAAA,UASxB4jB,aACAN,OAEA,WAAA71B,GACIqT,QACA+iB,EAAAA,SAAS5nB,KAAKnP,MACdsmB,EAAAA,SAASnX,KAAKnP,MACd4d,UAAQC,qBAAqB1O,KAAKnP,MAElCA,KAAKiU,cAAgB,SAErBjU,KAAK82B,aAAe,CAAA,EAEpB92B,KAAKw2B,OAASA,KACTxN,KAAK,CAAChpB,KAAK+X,QAAS/X,KAAKgY,WACzBiE,QAAQ,IAEjB,CAIA,IAAA+M,CAAK3oB,GACD,MAAMwU,EAASb,MAAMgV,KAAKhiB,MAAMhH,KAAMiH,WAMtC,OALIA,UAAUwB,QACVzI,KAAKw2B,OACAxN,KAAK,CAAChpB,KAAK+X,QAAS/X,KAAKgY,WAG3BnD,CACX,CAEA,KAAA/C,CAAM2D,EAASC,GACX1B,MAAMlC,MAAM2D,EAASC,GACrB1V,KAAK8f,WAAWC,cAAcrK,GAC9B,MAAM7O,EAAU7G,KAChBA,KACK0nB,YAAY,SAAUzjB,GACnB,MACS,iBADD4C,EAAQ8gB,eAED9gB,EAAQ+gB,cAAc,CACzBtP,MAAOrU,EAAE,GACT4jB,IAAKhhB,EAAQsY,UAAU3P,MAAM,GAAGiF,IAAI,SAAUoQ,EAAQtb,GAClD,MAAO,CACH+O,MAAOuM,EACPiD,MAAOjhB,EAAQqb,SAASje,EAAE,IAC1B+G,MAAO/G,EAAE,GAEjB,KAGG4C,EAAQ+gB,cAAc,CAAEtP,MAAOrU,EAAEqF,KAAK,GAAI0B,MAAO/G,EAAEqF,KAAK,IAE3E,EAER,CAEA,MAAAuS,CAAOpG,EAASC,GACZ1B,MAAM6H,OAAOpG,EAASC,GACtB,MAAM7O,EAAU7G,KAEhBA,KAAKkiB,SAAWliB,KAAKkiB,SAASkG,OAAOpoB,KAAKqoB,aACtCroB,KAAKsoB,qBACLtoB,KAAKkiB,SAAWliB,KAAKkiB,SAASqG,eAAevoB,KAAKqoB,YAAc,IAAMroB,KAAK6f,OAG/E,MAAM6S,EAAOsE,GAAY,CAAEpG,SAAU5wB,KAAKi3B,cACrC3rB,IAAI,SAAUrH,GAAK,OAAOA,EAAE,EAAI,GAChCkH,KAAK,SAAUP,EAAGpC,GACf,OAAOA,EAAE,GAAKoC,EAAE,IAAK,EAAKpC,EAAE,GAAKoC,EAAE,GAAK,EAAI,CAChD,GAEJ5K,KAAKw2B,OAAO9D,GAEZ,MAAMlZ,EAAO9D,EAAQlE,UAAU,SAASlI,KAAKopB,EAAK9B,UAAY,GAAI3sB,GAAKA,EAAEqF,KAAK,IAG9EkQ,EAAK1H,QAAQC,OAAO,KACfC,KAAK,QAAS,CAAC/N,EAAGsF,IAAM,sBAAwBvJ,KAAKspB,OAAOrlB,EAAEqF,KAAK,KACnE0I,KAAK,UAAW,GAChB7C,KAAKnP,KAAK8f,WAAWhO,MAAMqY,KAAKnqB,KAAK8f,aACrC3B,GAAG,QAAS,SAAUla,GACnB4C,EAAQgf,MAAMhf,EAAQ8e,SAAS1hB,EAAEqF,MAAOzC,EAAQsY,UAAU,GAAItY,EAAQiZ,WAAWQ,SAAStgB,MAC9F,GACCme,GAAG,WAAY,SAAUla,GACtB4C,EAAQujB,SAASvjB,EAAQ8e,SAAS1hB,EAAEqF,MAAOzC,EAAQsY,UAAU,GAAItY,EAAQiZ,WAAWQ,SAAStgB,MACjG,GACC2S,KAAK,SAAU1O,GACZ,MAAMizB,EAAW3hB,EAAAA,OAASvV,MACpBqV,EAAWpR,EAAEzD,EAAb6U,EAAmBpR,EAAEpD,EAC3Bq2B,EAASnlB,OAAO,UACXC,KAAK,YAAa,aAAeqD,EAAQ,IAAMA,EAAQ,KACvDrD,KAAK,IAAK,GACVmM,GAAG,mBAAoBtX,EAAQmjB,QAAQC,MACvC9L,GAAG,oBAAqBtX,EAAQmjB,QAAQE,MAEzCjmB,EAAEkzB,aACFtwB,EAAQiwB,aAAa7yB,EAAEqF,KAAK,KAAM,IAAI8tB,EAAAA,QACjCC,KAAKpzB,EAAEkzB,cACPnX,OAAOhgB,MACPwjB,SAGL3c,EAAQiwB,aAAa7yB,EAAEqF,KAAK,KAAM,IAAIqlB,QACjCzc,KAAKjO,EAAEqF,KAAK,IACZ0W,OAAOhgB,MACPwjB,QAGb,GACCrR,MAAMqH,GAAMnH,aACZL,KAAK,UAAW,GAChBW,KAAK,SAAU1O,GACZ,MAAMizB,EAAW3hB,EAAAA,OAASvV,MACpBqV,EAAM,CAAE7U,EAAGyD,EAAEzD,EAAGK,EAAGoD,EAAEpD,GAC3Bq2B,EAASjlB,OAAO,UAAUI,aACrBL,KAAK,YAAa,aAAeqD,EAAI7U,EAAI,IAAM6U,EAAIxU,EAAI,KACvDgY,MAAM,OAAQhS,EAAQwgB,UAAUpjB,EAAEqF,KAAMzC,EAAQsY,UAAU,GAAIlb,EAAEqF,KAAK,KACrE0I,KAAK,IAAK/N,EAAE1C,GACZ0Q,OAAO,SACPC,KAAKjO,EAAEqF,KAAK,GAAK,KAAOrF,EAAEqF,KAAK,GAAK,KAErCrF,EAAEkzB,aACFtwB,EAAQiwB,aAAa7yB,EAAEqF,KAAK,IACvB+L,IAAIA,GACJmO,SAGL3c,EAAQiwB,aAAa7yB,EAAEqF,KAAK,IACvB+L,IAAIA,GACJiiB,kBAAkBzwB,EAAQkjB,UAAU9lB,EAAEqF,KAAMzC,EAAQsY,UAAU,GAAIlb,EAAEqF,KAAK,KACzEyO,MAAY,EAAN9T,EAAE1C,GACR2Q,KAAKjO,EAAEqF,KAAK,IACZka,QAGb,GAIJhK,EAAK5H,OAAOS,aACPwG,MAAM,UAAW,GACjBpG,QAET,CAEA,IAAAb,CAAK6D,EAASC,GACV1B,MAAMpC,KAAK6D,EAASC,EACxB,GA5JkCjV,EAAAo2B,GAAA,UAClCvM,EADSuM,GACF,WAAyB,CAAC,CAC7BhX,GAAI,QACJ/K,KAAM,UACP,CACC+K,GAAI,QACJ/K,KAAM,YANP,IAAMyiB,GAANV,GA+JPU,GAAO72B,UAAU8U,QAAU,gBAC3B+hB,GAAO72B,UAAU+pB,WAAWsM,EAAAA,SAASr2B,WACrC62B,GAAO72B,UAAU+pB,WAAWnE,EAAAA,SAAS5lB,WACrC62B,GAAO72B,UAAUslB,MAAMpI,EAAAA,QAAQC,sBAyB/B0Z,GAAO72B,UAAUmc,QAAQ,YAAa,UAAW,MAAO,gCAAiC0a,GAAO72B,UAAUwhB,SAASkG,SAAU,CAAElC,KAAM,CAAC,QAAS,YAC/IqR,GAAO72B,UAAUmc,QAAQ,oBAAoB,EAAO,UAAW,2CAA4C,KAAM,CAAEqJ,KAAM,CAAC,eAAgB,YCjMnI,MAAMsR,GAAN,MAAMA,kBAAiBhN,GAC1B,WAAA7pB,GACIqT,OACJ,CACA,KAAAlC,CAAM2D,EAASC,GACN1V,KAAK0oB,0BACN1oB,KAAK2oB,gBAAgB3oB,KAAKmf,UAAUnf,KAAKmf,UAAU1W,OAAS,IAEhEuL,MAAMlC,MAAM2D,EAASC,EACzB,GATkCjV,EAAA+2B,GAAA,YAA/B,IAAMC,GAAND,GAWPC,GAAS/2B,UAAU8U,QAAU,kBCb7B,IAIIkiB,GACAC,GALAC,GAAQ,EACRC,GAAU,EACVC,GAAW,EAIXC,GAAY,EACZC,GAAW,EACXC,GAAY,EACZC,GAA+B,iBAAhBC,aAA4BA,YAAYC,IAAMD,YAAcE,KAC3EC,GAA6B,iBAAXC,QAAuBA,OAAOC,sBAAwBD,OAAOC,sBAAsBrO,KAAKoO,QAAU,SAASpC,GAAKvQ,WAAWuQ,EAAG,GAAK,EAElJ,SAASiC,KACd,OAAOJ,KAAaM,GAASG,IAAWT,GAAWE,GAAME,MAAQH,GACnE,CAEA,SAASQ,KACPT,GAAW,CACb,CAEO,SAASU,KACd14B,KAAK24B,MACL34B,KAAK44B,MACL54B,KAAK64B,MAAQ,IACf,CA+BO,SAASC,KACdV,OACER,GAEF,IADA,IAAkBzX,EAAdjb,EAAIwyB,GACDxyB,IACAib,EAAI6X,GAAW9yB,EAAE0zB,QAAU,GAAG1zB,EAAEyzB,MAAMxpB,KAAK,KAAMgR,GACtDjb,EAAIA,EAAE2zB,QAENjB,EACJ,CAEA,SAASmB,KACPf,IAAYD,GAAYG,GAAME,OAASH,GACvCL,GAAQC,GAAU,EAClB,IACEiB,IACF,CAAA,QACElB,GAAQ,EACRoB,KACAhB,GAAW,CACb,CACF,CAEA,SAASiB,KACP,IAAIb,EAAMF,GAAME,MAAOc,EAAQd,EAAML,GACjCmB,EA7EU,MA6ESjB,IAAaiB,EAAOnB,GAAYK,EACzD,CAEA,SAASY,KAEP,IADA,IAAI9xB,EAAmBiyB,EAAfhyB,EAAKuwB,GAAc0B,EAAOC,IAC3BlyB,GACDA,EAAGwxB,OACDS,EAAOjyB,EAAGyxB,QAAOQ,EAAOjyB,EAAGyxB,OAC/B1xB,EAAKC,EAAIA,EAAKA,EAAG0xB,QAEjBM,EAAKhyB,EAAG0xB,MAAO1xB,EAAG0xB,MAAQ,KAC1B1xB,EAAKD,EAAKA,EAAG2xB,MAAQM,EAAKzB,GAAWyB,GAGzCxB,GAAWzwB,EACXoyB,GAAMF,EACR,CAEA,SAASE,GAAMF,GACTxB,KACAC,KAASA,GAAU0B,aAAa1B,KACxBuB,EAAOpB,GACP,IACNoB,EAAOC,MAAUxB,GAAUjS,WAAWmT,GAAMK,EAAOlB,GAAME,MAAQH,KACjEH,KAAUA,GAAW0B,cAAc1B,OAElCA,KAAUC,GAAYG,GAAME,MAAON,GAAW2B,YAAYR,GAvGnD,MAwGZrB,GAAQ,EAAGU,GAASS,KAExB,CCtGe,SAAAW,KACX,IAAIrpB,EAAS,OACT0K,GAAU,EACV4e,GAAW,EACXC,EAASC,GACTC,EAAUC,GACVC,EAAWC,GACXliB,EAAQ,IACRC,EAAS,GACTqF,EAAQ/F,KAGZ,SAAS4iB,EAAOC,GACZA,EAAExnB,KAAK,SAAU1O,EAAGsF,GAChB,IAII6wB,EACAC,EALAC,EAASV,EAAOzqB,KAAKnP,KAAMiE,EAAGsF,GAAGiG,QAAQrE,KAAKovB,cAC9CC,EAAUV,EAAQ3qB,KAAKnP,KAAMiE,EAAGsF,GAAGiG,QAAQrE,KAAKovB,cAChDE,EAAWT,EAAS7qB,KAAKnP,KAAMiE,EAAGsF,GAAGiG,QAAQrE,KAAKovB,cAClDG,EAAKnlB,EAAAA,OAASvV,MAIdmZ,EAAOuhB,EAAGzoB,OAAO,UACjBkH,EAAKwhB,UAASxhB,EAAOuhB,EAAG3oB,OAAO,KAAKC,KAAK,QAAS,SAElD2nB,GACAS,EAAUpiB,EAAQqiB,EAAUtiB,EAC5BoB,EAAKnH,KAAK,YAAa,0BAA4B+F,EAAQ,OAE3DqiB,EAAUriB,EAAOsiB,EAAUriB,EAC3BmB,EAAKnH,KAAK,YAAa,OAI3B,IAAI/Q,EAAKqV,EAAAA,cACJvF,OAAO,CAAC,EAAGrR,KAAKkE,IAAI02B,EAAO,GAAIE,EAAQ,GAAIC,EAAS,MACpDvpB,MAAM6J,EAAU,CAACqf,EAAS,GAAK,CAAC,EAAGA,IAGpC54B,EAAKxB,KAAK46B,WAAatkB,gBACtBvF,OAAO,CAAC,EAAGsoB,MACXnoB,MAAMjQ,EAAGiQ,SAGdlR,KAAK46B,UAAY35B,EAGjB,IAAI45B,EAAKC,GAAYt5B,GACjBu5B,EAAKD,GAAY75B,GAGjBiQ,EAAQiI,EAAK3H,UAAU,cACtBlI,KAAKgxB,GAEVppB,EAAMY,QAAQC,OAAO,QAChBC,KAAK,QAAS,SAAUqG,EAAI2iB,GAAM,MAAO,UAAYA,CAAI,GACzDhpB,KAAK,QAAS6oB,GACd7oB,KAAK,SAAUqoB,GACfroB,KAAK,IAAK+I,EAAUvZ,EAAK,GACzB2Q,MAAMjB,GACNmB,WAAWnB,GACXc,KAAK,IAAK+I,EAAU9Z,EAAK,GACzB+Q,KAAK,QAAS+oB,GACd/oB,KAAK,SAAUqoB,GAGpB,IAAIY,EAAU9hB,EAAK3H,UAAU,gBACxBlI,KAAKmxB,GAEVQ,EAAQnpB,QAAQC,OAAO,QAClBC,KAAK,QAAS,SAAUqG,EAAI2iB,GAAM,MAAO,YAAcA,CAAI,GAC3DhpB,KAAK,QAAS6oB,GACd7oB,KAAK,SAAUqoB,EAAU,GACzBroB,KAAK,IAAK+I,EAAUvZ,EAAK,GACzBwQ,KAAK,IAAKqoB,EAAU,GACpBloB,MAAM8oB,GACN5oB,WAAW4oB,GACXjpB,KAAK,QAAS+oB,GACd/oB,KAAK,SAAUqoB,EAAU,GACzBroB,KAAK,IAAK+I,EAAU9Z,EAAK,GACzB+Q,KAAK,IAAKqoB,EAAU,GAGzB,IAAIa,EAAS/hB,EAAK3H,UAAU,eACvBlI,KAAKkxB,GAEVU,EAAOppB,QAAQC,OAAO,QACjBC,KAAK,QAAS,UACdA,KAAK,KAAMxQ,GACXwQ,KAAK,KAAMxQ,GACXwQ,KAAK,KAAMqoB,EAAU,GACrBroB,KAAK,KAAgB,EAAVqoB,EAAc,GACzBloB,MAAM+oB,GACN7oB,WAAW6oB,GACXlpB,KAAK,KAAM/Q,GACX+Q,KAAK,KAAM/Q,GACX+Q,KAAK,KAAMqoB,EAAU,GACrBroB,KAAK,KAAgB,EAAVqoB,EAAc,GAE9B,IAAIjqB,EAAOsqB,EAAGlpB,UAAU,UAAUlI,KAAK,CAAC,IACxC8G,EAAK0B,QAAQC,OAAO,KAAKC,KAAK,QAAS,QACvC5B,EAAK4B,KAAK,YAAa2nB,EAAW,KAAO,eAAiBU,EAAU,KAC/DlrB,KAAKkO,EAAMxN,MAAM5O,GAC1B,GACAk6B,IACJ,CAkDA,OA9IS16B,EAAAy5B,EAAA,UA+FTA,EAAO7pB,OAAS,SAAUhQ,GACtB,OAAK4G,UAAUwB,QAEfsS,EAAqB,WADrB1K,EAAShQ,EAAI,KAC8B,WAAXgQ,EAChCgN,EAAMhN,QAAQspB,EAAsB,QAAXtpB,GAA+B,WAAXA,GAAuB,OAAS,UACtE6pB,GAJuB7pB,CAKlC,EAGA6pB,EAAON,OAAS,SAAUv5B,GACtB,OAAK4G,UAAUwB,QACfmxB,EAASv5B,EACF65B,GAFuBN,CAGlC,EAGAM,EAAOJ,QAAU,SAAUz5B,GACvB,OAAK4G,UAAUwB,QACfqxB,EAAUz5B,EACH65B,GAFuBJ,CAGlC,EAGAI,EAAOF,SAAW,SAAU35B,GACxB,OAAK4G,UAAUwB,QACfuxB,EAAW35B,EACJ65B,GAFuBF,CAGlC,EAEAE,EAAOniB,MAAQ,SAAU1X,GACrB,OAAK4G,UAAUwB,QACfsP,GAAS1X,EACF65B,GAFuBniB,CAGlC,EAEAmiB,EAAOliB,OAAS,SAAU3X,GACtB,OAAK4G,UAAUwB,QACfuP,GAAU3X,EACH65B,GAFuBliB,CAGlC,EAEAkiB,EAAO1pB,WAAa,SAAUnQ,GAC1B,OAAK4G,UAAUwB,QACf4U,EAAM7M,WAAWnQ,GACV65B,GAFuB7c,EAAM7M,YAGxC,EAEO0pB,CACX,CAEA,SAASL,GAAa51B,GAClB,OAAOA,EAAE21B,MACb,CAEA,SAASG,GAAc91B,GACnB,OAAOA,EAAE61B,OACb,CAEA,SAASG,GAAeh2B,GACpB,OAAOA,EAAE+1B,QACb,CAEA,SAASc,GAAYt6B,GACjB,IAAIgB,EAAKhB,EAAE,GACX,OAAO,SAAUyD,GACb,OAAOvE,KAAKsC,IAAIxB,EAAEyD,GAAKzC,EAC3B,CACJ,CDzKgBf,EAAA23B,GAAA,OAIP33B,EAAAg4B,GAAA,YAIOh4B,EAAAi4B,GAAA,SAMhBA,GAAMh4B,UAA8B,CAClCC,YAAa+3B,GACb0C,QAAS36B,EAAA,SAASuwB,EAAUkI,EAAOE,GACjC,GAAwB,mBAAbpI,EAAyB,MAAM,IAAIqK,UAAU,8BACxDjC,GAAgB,MAARA,EAAehB,MAASgB,IAAkB,MAATF,EAAgB,GAAKA,GACzDl5B,KAAK64B,OAASlB,KAAa33B,OAC1B23B,MAAmBkB,MAAQ74B,KAC1B03B,GAAW13B,KAChB23B,GAAW33B,MAEbA,KAAK24B,MAAQ3H,EACbhxB,KAAK44B,MAAQQ,EACbE,IACF,EAXS,WAYTgC,KAAM76B,EAAA,WACAT,KAAK24B,QACP34B,KAAK24B,MAAQ,KACb34B,KAAK44B,MAAQS,IACbC,KAEJ,EANM,SAeQ74B,EAAAq4B,GAAA,cAWPr4B,EAAAs4B,GAAA,QAYAt4B,EAAAw4B,GAAA,QAKAx4B,EAAAu4B,GAAA,OAeAv4B,EAAA64B,GAAA,SC3FM74B,EAAAi5B,GAAA,YA6JNj5B,EAAAo5B,GAAA,gBAIAp5B,EAAAs5B,GAAA,iBAIAt5B,EAAAw5B,GAAA,kBAIAx5B,EAAAq6B,GAAA,eC1KF,MAAMS,GAAN,MAAMA,gBAAeC,EAAAA,WAEhBC,eAAiB,CAAA,EAEzB,WAAA96B,GACIqT,QACA4J,EAAAA,QAAQC,qBAAqB1O,KAAKnP,MAAM,EAC5C,CAEA,UAAA07B,GACI,MAAM70B,EAAU7G,KAChBA,KAAKy7B,eAAiB,CAAA,EACtB,MAAMtc,EAAUnf,KAAKmf,UACrB,OAAOnf,KAAKsJ,OAAOmL,IAAI,SAAUsK,GAC7B,MAAO,CACH1C,MAAOsf,EAAQ5c,EAAK/e,KAAK47B,eACzBC,SAAUF,EAAQ5c,EAAK/e,KAAK87B,kBAC5BlC,OAAQ+B,EAAQ5c,EAAK/e,KAAK+7B,eAAgB,SAC1C/B,SAAU2B,EAAQ5c,EAAK/e,KAAKg8B,iBAAkB,WAC9ClC,QAAS6B,EAAQ5c,EAAK/e,KAAKi8B,gBAAiB,UAC5CzW,QAASzG,EAEjB,EAAG/e,MAEH,SAAS27B,EAAQ5c,EAAK8F,EAAQqX,GAC1B,MAAMnT,EAAS5J,EAAQgE,QAAQ0B,GAC/B,OAAIkE,GAAU,EACNhK,EAAIgK,aAAmB7e,MAChB6U,EAAIgK,GAER,CAAChK,EAAIgK,KAEZmT,IACAr1B,EAAQ40B,eAAeS,IAAc,GAElC,CAAC,GACZ,CACJ,CAEA,KAAApqB,CAAM2D,EAASC,GACX1B,MAAMlC,MAAM2D,EAASC,GACrBH,EAAAA,OAASE,EAAQjD,YAAYqG,MAAM,WAAY,QAC/C7Y,KAAK8f,WAAWC,cAAcrK,EAClC,CAEA,MAAAmG,CAAOuF,EAAU1L,GACb1B,MAAM6H,OAAOuF,EAAU1L,GACvB,MAAM7O,EAAU7G,KAEhB0V,EAAQlE,UAAU,SACbqH,MAAM,UAAW,QAEtBnD,EAAQlE,UAAU,2BACbqH,MAAM,UAAW,MAGtB,MAAM6E,EAAiB,EAAjBA,EAAyB,EAAzBA,EAAmC,EAAnCA,EAA8C,EAC9C3F,EAAQ/X,KAAK+X,QAAU2F,EAAcA,EACrC1F,EAAS,GAAK0F,EAAaA,EAE3B9J,EAAM8B,EAAQlE,UAAU,OAAOlI,KAAKtJ,KAAK07B,cACzCS,EAAYvoB,EAAI9B,QAAQC,OAAO,OAChCC,KAAK,QAAS,UACd7C,KAAKnP,KAAK8f,WAAWhO,MAAMqY,KAAKnqB,KAAK8f,aACrC3B,GAAG,QAAS,SAAUla,GACnB4C,EAAQgf,MAAMhf,EAAQ8e,SAAS1hB,EAAEuhB,SAAU3e,EAAQ+0B,cAAe/0B,EAAQiZ,WAAWQ,SAAStgB,MAClG,GACCme,GAAG,WAAY,SAAUla,GACtB4C,EAAQujB,SAASvjB,EAAQ8e,SAAS1hB,EAAEuhB,SAAU3e,EAAQ+0B,cAAe/0B,EAAQiZ,WAAWQ,SAAStgB,MACrG,GACC2S,KAAK,WACF,MAIMypB,EAJW7mB,EAAAA,OAASvV,MACC+R,OAAO,KAC7BC,KAAK,QAAS,CAAC/N,EAAGsF,IAAM,2BAA6B1C,EAAQyiB,OAAOziB,EAAQ+0B,gBAEnD7pB,OAAO,KAChCC,KAAK,QAAS,eAEnBoqB,EAAYrqB,OAAO,QACdC,KAAK,QAAS,SAEnBoqB,EAAYrqB,OAAO,QACdC,KAAK,QAAS,YACdA,KAAK,KAAM,MAEpB,GACCG,MAAMyB,GAILyI,EAAQ8f,EAAUlqB,OAAO,gBAC1B4G,MAAM,cAAe,OACrB7G,KAAK,YAAa,gBAAkBgG,EAAS,EAAI,KAEtDqE,EAAMpK,OAAO,UACRC,KAAK,SAAUjO,GAAK,OAAOA,EAAEoY,KAAO,GAEzCA,EAAMpK,OAAO,aACRC,KAAK,SAAUjO,GAAK,OAAOA,EAAE43B,QAAU,GAG5C,IAAIQ,EAAa,EACjBhgB,EAAM1J,KAAK,WACP,MAAM4G,EAAOvZ,KAAKyZ,UACdF,EAAKxB,MAAQskB,IACbA,EAAa9iB,EAAKxB,MAE1B,GAGA,MAAMukB,EAAQ5C,KACT3hB,MAAMA,EAAQskB,EAAa,GAC3BrkB,OAAOA,GAEZmkB,EACKnqB,KAAK,QAAS+F,GACd/F,KAAK,SAAUgG,EAAS0F,EAAaA,GACrC7E,MAAM,cAAe,GAAG6E,OAE7Bye,EAAUlqB,OAAO,cACZD,KAAK,YAAa,cAAgBqqB,EAAa,GAAK,IAAM3e,EAAa,KACvEvO,KAAKmtB,GAGV1oB,EAAIhC,OAAOa,SAEPxD,OAAOstB,KAAKv8B,KAAKy7B,gBAAgBhzB,OAAS,GAC1CiN,EAAQlE,UAAU,IAAIvC,OAAOstB,KAAKv8B,KAAKy7B,gBAAgB9f,KAAK,SACvD9C,MAAM,UAAW,OAG9B,CAEA,IAAAjH,CAAK6D,EAASC,GACV1B,MAAMpC,KAAK6D,EAASC,EACxB,CAGA,KAAAmQ,CAAM9G,EAAK8F,EAAQvE,GAEnB,CAEA,QAAA8J,CAASrL,EAAK8F,EAAQvE,GAEtB,CAGAR,YAnJmCrf,EAAA86B,GAAA,UAAhC,IAAMiB,GAANjB,GAqJPiB,GAAO97B,UAAU8U,QAAU,gBAe3BgnB,GAAO97B,UAAUmc,QAAQ,cAAe,KAAM,MAAO,eAAgB,WAAc,OAAO7c,KAAKmf,SAAW,EAAG,CAAEpC,UAAU,IACzHyf,GAAO97B,UAAUmc,QAAQ,iBAAkB,KAAM,MAAO,kBAAmB,WAAc,OAAO7c,KAAKmf,SAAW,EAAG,CAAEpC,UAAU,IAC/Hyf,GAAO97B,UAAUmc,QAAQ,eAAgB,KAAM,MAAO,gBAAiB,WAAc,OAAO7c,KAAKmf,SAAW,EAAG,CAAEpC,UAAU,IAC3Hyf,GAAO97B,UAAUmc,QAAQ,iBAAkB,KAAM,MAAO,kBAAmB,WAAc,OAAO7c,KAAKmf,SAAW,EAAG,CAAEpC,UAAU,IAC/Hyf,GAAO97B,UAAUmc,QAAQ,gBAAiB,KAAM,MAAO,iBAAkB,WAAc,OAAO7c,KAAKmf,SAAW,EAAG,CAAEpC,UAAU,IC9K7H,IAEWvN,GAFCtF,MAAMxJ,UAEO8O,MCFV,SAAAitB,GAASj0B,EAAGoC,GACzB,OAAOpC,EAAIoC,CACb,CCFe,SAAAd,GAAS4yB,GAEtB,IADA,IAAInzB,EAAI,EAAGC,EAAIkzB,EAAKj0B,OAAQqB,EAAO4yB,EAAKlzB,EAAI,GAAG,GAAKkzB,EAAK,GAAG,GAAKA,EAAKlzB,EAAI,GAAG,GAAKkzB,EAAK,GAAG,KACjFnzB,EAAIC,GAAGM,GAAQ4yB,EAAKnzB,EAAI,GAAG,GAAKmzB,EAAKnzB,GAAG,GAAKmzB,EAAKnzB,EAAI,GAAG,GAAKmzB,EAAKnzB,GAAG,GAC/E,OAAOO,CACT,CCJe,SAAA6yB,GAASn8B,GACtB,OAAO,WACL,OAAOA,CACT,CACF,CCJe,SAAAo8B,GAASF,EAAMG,GAE5B,IADA,IAA6BzK,EAAzB7oB,GAAI,EAAIC,EAAIqzB,EAAKp0B,SACZc,EAAIC,MAAO4oB,EAAI0K,GAAaJ,EAAMG,EAAKtzB,IAAK,OAAO6oB,EAC5D,OAAO,CACT,CAEA,SAAS0K,GAAaJ,EAAM9yB,GAE1B,IADA,IAAIpJ,EAAIoJ,EAAM,GAAI/I,EAAI+I,EAAM,GAAIgzB,GAAW,EAClCrzB,EAAI,EAAGC,EAAIkzB,EAAKj0B,OAAQsB,EAAIP,EAAI,EAAGD,EAAIC,EAAGO,EAAIR,IAAK,CAC1D,IAAI9J,EAAKi9B,EAAKnzB,GAAIwzB,EAAKt9B,EAAG,GAAIu9B,EAAKv9B,EAAG,GAAIw9B,EAAKP,EAAK3yB,GAAImzB,EAAKD,EAAG,GAAIE,EAAKF,EAAG,GAC5E,GAAIG,GAAgB39B,EAAIw9B,EAAIrzB,GAAQ,OAAO,EACrCozB,EAAKn8B,GAAQs8B,EAAKt8B,GAASL,GAAK08B,EAAKH,IAAOl8B,EAAIm8B,IAAOG,EAAKH,GAAMD,IAAMH,GAAYA,EAC5F,CACA,OAAOA,CACT,CAEA,SAASQ,GAAgB50B,EAAGoC,EAAGwnB,GAC7B,IAAI7oB,EAAG,OAAO8zB,GAAU70B,EAAGoC,EAAGwnB,IAAMkL,GAAO90B,EAAEe,IAAMf,EAAE,KAAOoC,EAAE,KAAMwnB,EAAE7oB,GAAIqB,EAAErB,GAC9E,CAEA,SAAS8zB,GAAU70B,EAAGoC,EAAGwnB,GACvB,OAAQxnB,EAAE,GAAKpC,EAAE,KAAO4pB,EAAE,GAAK5pB,EAAE,OAAS4pB,EAAE,GAAK5pB,EAAE,KAAOoC,EAAE,GAAKpC,EAAE,GACrE,CAEA,SAAS80B,GAAOz0B,EAAG00B,EAAGh8B,GACpB,OAAOsH,GAAK00B,GAAKA,GAAKh8B,GAAKA,GAAKg8B,GAAKA,GAAK10B,CAC5C,CC1Be,SAAA20B,KAAY,CJAZ/8B,EAAAg8B,GAAA,aCAAh8B,EAAAqJ,GAAA,QCAArJ,EAAAk8B,GAAA,cCAAl8B,EAAAm8B,GAAA,YAMNn8B,EAAAq8B,GAAA,gBAUAr8B,EAAA28B,GAAA,mBAIA38B,EAAA48B,GAAA,aAIA58B,EAAA68B,GAAA,UCxBM78B,EAAA+8B,GAAA,UCQf,IAAIC,GAAQ,CACV,GACA,CAAC,CAAC,CAAC,EAAK,KAAM,CAAC,GAAK,KACpB,CAAC,CAAC,CAAC,IAAK,GAAM,CAAC,EAAK,OACpB,CAAC,CAAC,CAAC,IAAK,GAAM,CAAC,GAAK,KACpB,CAAC,CAAC,CAAC,EAAK,IAAM,CAAC,IAAK,KACpB,CAAC,CAAC,CAAC,EAAK,KAAM,CAAC,GAAK,IAAO,CAAC,CAAC,EAAK,IAAM,CAAC,IAAK,KAC9C,CAAC,CAAC,CAAC,EAAK,IAAM,CAAC,EAAK,OACpB,CAAC,CAAC,CAAC,EAAK,IAAM,CAAC,GAAK,KACpB,CAAC,CAAC,CAAC,GAAK,GAAM,CAAC,EAAK,MACpB,CAAC,CAAC,CAAC,EAAK,KAAM,CAAC,EAAK,MACpB,CAAC,CAAC,CAAC,GAAK,GAAM,CAAC,EAAK,KAAO,CAAC,CAAC,IAAK,GAAM,CAAC,EAAK,OAC9C,CAAC,CAAC,CAAC,IAAK,GAAM,CAAC,EAAK,MACpB,CAAC,CAAC,CAAC,GAAK,GAAM,CAAC,IAAK,KACpB,CAAC,CAAC,CAAC,EAAK,KAAM,CAAC,IAAK,KACpB,CAAC,CAAC,CAAC,GAAK,GAAM,CAAC,EAAK,OACpB,IAGa,SAAAC,KACb,IAAIz6B,EAAK,EACLE,EAAK,EACLw6B,EAAYC,EAAAA,iBACZC,EAASC,EAEb,SAASJ,EAAS7sB,GAChB,IAAIktB,EAAKJ,EAAU9sB,GAGnB,GAAK3G,MAAM8zB,QAAQD,GAKjBA,EAAKA,EAAGvuB,QAAQrE,KAAKsxB,QALC,CACtB,IAAI1rB,EAASgT,EAAAA,OAAOlT,GAAS+gB,EAAQ7gB,EAAO,GAAIuqB,EAAOvqB,EAAO,GAC9DgtB,EAAKE,EAAAA,SAASrM,EAAO0J,EAAMyC,GAC3BA,EAAK7sB,EAAAA,MAAMxR,KAAK0b,MAAMwW,EAAQmM,GAAMA,EAAIr+B,KAAK0b,MAAMkgB,EAAOyC,GAAMA,EAAIA,EACtE,CAIA,OAAOA,EAAGtpB,IAAI,SAASzJ,GACrB,OAAOkzB,EAAQrtB,EAAQ7F,EACzB,EACF,CAIA,SAASkzB,EAAQrtB,EAAQ7F,GACvB,IAAImzB,EAAW,GACXC,EAAQ,GAiBZ,OAfAC,EAASxtB,EAAQ7F,EAAO,SAAS0xB,GAC/BmB,EAAOnB,EAAM7rB,EAAQ7F,GACjBlB,GAAK4yB,GAAQ,IAAYrwB,KAAK,CAACqwB,IAC9B0B,EAAM/xB,KAAKqwB,EAClB,GAEA0B,EAAMlS,QAAQ,SAAS2Q,GACrB,IAAA,IAAqCyB,EAA5B/0B,EAAI,EAAGC,EAAI20B,EAAS11B,OAAiBc,EAAIC,IAAKD,EACrD,IAAmD,IAA/CqzB,IAAU0B,EAAUH,EAAS50B,IAAI,GAAIszB,GAEvC,YADAyB,EAAQjyB,KAAKwwB,EAInB,GAEO,CACL/nB,KAAM,eACN9J,QACAuzB,YAAaJ,EAEjB,CAIA,SAASE,EAASxtB,EAAQ7F,EAAOgmB,GAC/B,IAEIxwB,EAAGK,EAAGqG,EAAIC,EAAIgyB,EAAIqF,EAFlBC,EAAkB,IAAIv0B,MACtBw0B,EAAgB,IAAIx0B,MAOxB,IAHA1J,EAAIK,GAAI,EACRsG,EAAK0J,EAAO,IAAM7F,EAClByyB,GAAMt2B,GAAM,GAAG+kB,QAAQyS,KACdn+B,EAAIyC,EAAK,GAChBiE,EAAKC,EAAIA,EAAK0J,EAAOrQ,EAAI,IAAMwK,EAC/ByyB,GAAMv2B,EAAKC,GAAM,GAAG+kB,QAAQyS,GAK9B,IAHAlB,GAAMt2B,EAAM,GAAG+kB,QAAQyS,KAGd99B,EAAIsC,EAAK,GAAG,CAKnB,IAJA3C,GAAI,EACJ2G,EAAK0J,EAAOhQ,EAAIoC,EAAKA,IAAO+H,EAC5BmuB,EAAKtoB,EAAOhQ,EAAIoC,IAAO+H,EACvByyB,GAAMt2B,GAAM,EAAIgyB,GAAM,GAAGjN,QAAQyS,KACxBn+B,EAAIyC,EAAK,GAChBiE,EAAKC,EAAIA,EAAK0J,EAAOhQ,EAAIoC,EAAKA,EAAKzC,EAAI,IAAMwK,EAC7CwzB,EAAKrF,EAAIA,EAAKtoB,EAAOhQ,EAAIoC,EAAKzC,EAAI,IAAMwK,EACxCyyB,GAAMv2B,EAAKC,GAAM,EAAIgyB,GAAM,EAAIqF,GAAM,GAAGtS,QAAQyS,GAElDlB,GAAMt2B,EAAKgyB,GAAM,GAAGjN,QAAQyS,EAC9B,CAMA,IAHAn+B,GAAI,EACJ24B,EAAKtoB,EAAOhQ,EAAIoC,IAAO+H,EACvByyB,GAAMtE,GAAM,GAAGjN,QAAQyS,KACdn+B,EAAIyC,EAAK,GAChBu7B,EAAKrF,EAAIA,EAAKtoB,EAAOhQ,EAAIoC,EAAKzC,EAAI,IAAMwK,EACxCyyB,GAAMtE,GAAM,EAAIqF,GAAM,GAAGtS,QAAQyS,GAInC,SAASA,EAAOt1B,GACd,IAII8sB,EAAGgE,EAJHvI,EAAQ,CAACvoB,EAAK,GAAG,GAAK7I,EAAG6I,EAAK,GAAG,GAAKxI,GACtC8wB,EAAM,CAACtoB,EAAK,GAAG,GAAK7I,EAAG6I,EAAK,GAAG,GAAKxI,GACpC+9B,EAAarzB,EAAMqmB,GACnBiN,EAAWtzB,EAAMomB,IAEjBwE,EAAIuI,EAAcE,KAChBzE,EAAIsE,EAAgBI,YACfH,EAAcvI,EAAExE,YAChB8M,EAAgBtE,EAAEvI,OACrBuE,IAAMgE,GACRhE,EAAEuG,KAAKrwB,KAAKslB,GACZX,EAASmF,EAAEuG,OAEX+B,EAAgBtI,EAAEvE,OAAS8M,EAAcvE,EAAExI,KAAO,CAACC,MAAOuE,EAAEvE,MAAOD,IAAKwI,EAAExI,IAAK+K,KAAMvG,EAAEuG,KAAKoC,OAAO3E,EAAEuC,gBAGhGgC,EAAcvI,EAAExE,KACvBwE,EAAEuG,KAAKrwB,KAAKslB,GACZ+M,EAAcvI,EAAExE,IAAMkN,GAAY1I,IAE3BA,EAAIsI,EAAgBI,KACzB1E,EAAIuE,EAAcE,YACbH,EAAgBtI,EAAEvE,cAClB8M,EAAcvE,EAAExI,KACnBwE,IAAMgE,GACRhE,EAAEuG,KAAKrwB,KAAKslB,GACZX,EAASmF,EAAEuG,OAEX+B,EAAgBtE,EAAEvI,OAAS8M,EAAcvI,EAAExE,KAAO,CAACC,MAAOuI,EAAEvI,MAAOD,IAAKwE,EAAExE,IAAK+K,KAAMvC,EAAEuC,KAAKoC,OAAO3I,EAAEuG,gBAGhG+B,EAAgBtI,EAAEvE,OACzBuE,EAAEuG,KAAKqC,QAAQnN,GACf6M,EAAgBtI,EAAEvE,MAAQgN,GAAczI,GAG1CsI,EAAgBG,GAAcF,EAAcG,GAAY,CAACjN,MAAOgN,EAAYjN,IAAKkN,EAAUnC,KAAM,CAAC9K,EAAOD,GAE7G,CAzCA8L,GAAMtE,GAAM,GAAGjN,QAAQyS,GAEdl+B,EAAAk+B,EAAA,SAwCX,CAEA,SAASpzB,EAAM3B,GACb,OAAkB,EAAXA,EAAM,GAASA,EAAM,IAAM3G,EAAK,GAAK,CAC9C,CAEA,SAAS66B,EAAapB,EAAM7rB,EAAQ7F,GAClC0xB,EAAKxQ,QAAQ,SAAStiB,GACpB,IAIIo1B,EAJAx+B,EAAIoJ,EAAM,GACV/I,EAAI+I,EAAM,GACVq1B,EAAS,EAAJz+B,EACL0+B,EAAS,EAAJr+B,EAELs+B,EAAKtuB,EAAOquB,EAAKj8B,EAAKg8B,GACtBz+B,EAAI,GAAKA,EAAIyC,GAAMg8B,IAAOz+B,IAC5Bw+B,EAAKnuB,EAAOquB,EAAKj8B,EAAKg8B,EAAK,GAC3Br1B,EAAM,GAAKpJ,GAAKwK,EAAQg0B,IAAOG,EAAKH,GAAM,IAExCn+B,EAAI,GAAKA,EAAIsC,GAAM+7B,IAAOr+B,IAC5Bm+B,EAAKnuB,GAAQquB,EAAK,GAAKj8B,EAAKg8B,GAC5Br1B,EAAM,GAAK/I,GAAKmK,EAAQg0B,IAAOG,EAAKH,GAAM,GAE9C,EACF,CAmBA,OAxKSv+B,EAAAi9B,EAAA,YAmBAj9B,EAAAy9B,EAAA,WA4BAz9B,EAAA49B,EAAA,YAiFA59B,EAAA8K,EAAA,SAIA9K,EAAAq9B,EAAA,gBAmBTJ,EAASQ,QAAUA,EAEnBR,EAAS1U,KAAO,SAAS3oB,GACvB,IAAK4G,UAAUwB,OAAQ,MAAO,CAACxF,EAAIE,GACnC,IAAIi8B,EAAK1/B,KAAK4b,KAAKjb,EAAE,IAAKg/B,EAAK3/B,KAAK4b,KAAKjb,EAAE,IAC3C,KAAM++B,EAAK,GAAQC,EAAK,GAAI,MAAM,IAAIt9B,MAAM,gBAC5C,OAAOkB,EAAKm8B,EAAIj8B,EAAKk8B,EAAI3B,CAC3B,EAEAA,EAAS4B,WAAa,SAASj/B,GAC7B,OAAO4G,UAAUwB,QAAUk1B,EAAyB,mBAANt9B,EAAmBA,EAAI6J,MAAM8zB,QAAQ39B,GAAKsG,GAAS6I,GAAML,KAAK9O,IAAMsG,GAAStG,GAAIq9B,GAAYC,CAC7I,EAEAD,EAASG,OAAS,SAASx9B,GACzB,OAAO4G,UAAUwB,QAAUo1B,EAASx9B,EAAIy9B,EAAeyB,GAAM7B,GAAYG,IAAWC,CACtF,EAEOJ,CACT,CCvMO,SAAS8B,GAAM5M,EAAQ5S,EAAQze,GAIpC,IAHA,IAAIiI,EAAIopB,EAAO7a,MACXzK,EAAIslB,EAAO5a,OACXxU,EAAe,GAAVjC,GAAK,GACLwI,EAAI,EAAGA,EAAIuD,IAAKvD,EACvB,IAAA,IAASR,EAAI,EAAGk2B,EAAK,EAAGl2B,EAAIC,EAAIjI,IAAKgI,EAC/BA,EAAIC,IACNi2B,GAAM7M,EAAOtpB,KAAKC,EAAIQ,EAAIP,IAExBD,GAAKhI,IACHgI,GAAK/F,IACPi8B,GAAM7M,EAAOtpB,KAAKC,EAAI/F,EAAIuG,EAAIP,IAEhCwW,EAAO1W,KAAKC,EAAIhI,EAAIwI,EAAIP,GAAKi2B,EAAK//B,KAAKmE,IAAI0F,EAAI,EAAGC,EAAI,EAAIhG,EAAI+F,EAAG/F,GAIzE,CAKO,SAASk8B,GAAM9M,EAAQ5S,EAAQze,GAIpC,IAHA,IAAIiI,EAAIopB,EAAO7a,MACXzK,EAAIslB,EAAO5a,OACXxU,EAAe,GAAVjC,GAAK,GACLgI,EAAI,EAAGA,EAAIC,IAAKD,EACvB,IAAA,IAASQ,EAAI,EAAG01B,EAAK,EAAG11B,EAAIuD,EAAI/L,IAAKwI,EAC/BA,EAAIuD,IACNmyB,GAAM7M,EAAOtpB,KAAKC,EAAIQ,EAAIP,IAExBO,GAAKxI,IACHwI,GAAKvG,IACPi8B,GAAM7M,EAAOtpB,KAAKC,GAAKQ,EAAIvG,GAAKgG,IAElCwW,EAAO1W,KAAKC,GAAKQ,EAAIxI,GAAKiI,GAAKi2B,EAAK//B,KAAKmE,IAAIkG,EAAI,EAAGuD,EAAI,EAAI9J,EAAIuG,EAAGvG,GAI3E,CCpCA,SAASm8B,GAAS17B,GAChB,OAAOA,EAAE,EACX,CAEA,SAAS27B,GAAS37B,GAChB,OAAOA,EAAE,EACX,CAEA,SAAS47B,KACP,OAAO,CACT,CAEe,SAAAC,KACb,IAAIt/B,EAAIm/B,GACJ9+B,EAAI++B,GACJG,EAASF,GACT58B,EAAK,IACLE,EAAK,IACL5B,EAAI,GACJyI,EAAI,EACJg2B,EAAQ,EAAJz+B,EACJiI,EAAKvG,EAAS,EAAJ+8B,GAAUh2B,EACpBsD,EAAKnK,EAAS,EAAJ68B,GAAUh2B,EACpB2zB,EAAYh3B,GAAS,IAEzB,SAASs5B,EAAQ32B,GACf,IAAI42B,EAAU,IAAIC,aAAa32B,EAAI8D,GAC/B8yB,EAAU,IAAID,aAAa32B,EAAI8D,GAEnChE,EAAK4iB,QAAQ,SAASjoB,EAAGsF,EAAGD,GAC1B,IAAIyzB,GAAOv8B,EAAEyD,EAAGsF,EAAGD,GAAQ02B,GAAMh2B,EAC7BgzB,GAAOn8B,EAAEoD,EAAGsF,EAAGD,GAAQ02B,GAAMh2B,EAC7Bq2B,GAAMN,EAAO97B,EAAGsF,EAAGD,GACnByzB,GAAM,GAAKA,EAAKvzB,GAAKwzB,GAAM,GAAKA,EAAK1vB,IACvC4yB,EAAQnD,EAAKC,EAAKxzB,IAAM62B,EAE5B,GAGAb,GAAM,CAACznB,MAAOvO,EAAGwO,OAAQ1K,EAAGhE,KAAM42B,GAAU,CAAsB52B,KAAM82B,GAAU7+B,GAAKyI,GACvF01B,GAAM,CAAC3nB,MAAOvO,EAAGwO,OAAQ1K,EAAGhE,KAAM82B,GAAU,CAAsB92B,KAAM42B,GAAU3+B,GAAKyI,GACvFw1B,GAAM,CAACznB,MAAOvO,EAAGwO,OAAQ1K,EAAGhE,KAAM42B,GAAU,CAAsB52B,KAAM82B,GAAU7+B,GAAKyI,GACvF01B,GAAM,CAAC3nB,MAAOvO,EAAGwO,OAAQ1K,EAAGhE,KAAM82B,GAAU,CAAsB92B,KAAM42B,GAAU3+B,GAAKyI,GACvFw1B,GAAM,CAACznB,MAAOvO,EAAGwO,OAAQ1K,EAAGhE,KAAM42B,GAAU,CAAsB52B,KAAM82B,GAAU7+B,GAAKyI,GACvF01B,GAAM,CAAC3nB,MAAOvO,EAAGwO,OAAQ1K,EAAGhE,KAAM82B,GAAU,CAAsB92B,KAAM42B,GAAU3+B,GAAKyI,GAEvF,IAAI+zB,EAAKJ,EAAUuC,GAGnB,IAAKh2B,MAAM8zB,QAAQD,GAAK,CACtB,IAAIzC,EAAO13B,EAAAA,IAAIs8B,GACfnC,EAAKE,EAAAA,SAAS,EAAG3C,EAAMyC,IACvBA,EAAK7sB,EAAAA,MAAM,EAAGxR,KAAK0b,MAAMkgB,EAAOyC,GAAMA,EAAIA,IACvCuC,OACL,CAEA,OAAO5C,KACF4B,WAAWvB,GACX/U,KAAK,CAACxf,EAAG8D,GAFPowB,CAGJwC,GACEzrB,IAAI7D,EACX,CAEA,SAASA,EAAU2vB,GAGjB,OAFAA,EAASv1B,OAAStL,KAAKkO,IAAI,KAAQ5D,GACnCu2B,EAAShC,YAAYrS,QAAQsU,GACtBD,CACT,CAEA,SAASC,EAAiBjC,GACxBA,EAAYrS,QAAQuU,EACtB,CAEA,SAASA,EAAclC,GACrBA,EAAYrS,QAAQwU,EACtB,CAGA,SAASA,EAAenC,GACtBA,EAAY,GAAKA,EAAY,GAAK7+B,KAAKkO,IAAI,EAAG5D,GAAKg2B,EACnDzB,EAAY,GAAKA,EAAY,GAAK7+B,KAAKkO,IAAI,EAAG5D,GAAKg2B,CACrD,CAEA,SAAS1a,IAIP,OAFA9b,EAAKvG,EAAS,GADd+8B,EAAQ,EAAJz+B,IACgByI,EACpBsD,EAAKnK,EAAS,EAAJ68B,GAAUh2B,EACbi2B,CACT,CAqCA,OApGSx/B,EAAAw/B,EAAA,WAsCAx/B,EAAAmQ,EAAA,aAMAnQ,EAAA+/B,EAAA,oBAIA//B,EAAAggC,EAAA,iBAKAhgC,EAAAigC,EAAA,kBAKAjgC,EAAA6kB,EAAA,UAOT2a,EAAQz/B,EAAI,SAASH,GACnB,OAAO4G,UAAUwB,QAAUjI,EAAiB,mBAANH,EAAmBA,EAAIsG,IAAUtG,GAAI4/B,GAAWz/B,CACxF,EAEAy/B,EAAQp/B,EAAI,SAASR,GACnB,OAAO4G,UAAUwB,QAAU5H,EAAiB,mBAANR,EAAmBA,EAAIsG,IAAUtG,GAAI4/B,GAAWp/B,CACxF,EAEAo/B,EAAQF,OAAS,SAAS1/B,GACxB,OAAO4G,UAAUwB,QAAUs3B,EAAsB,mBAAN1/B,EAAmBA,EAAIsG,IAAUtG,GAAI4/B,GAAWF,CAC7F,EAEAE,EAAQjX,KAAO,SAAS3oB,GACtB,IAAK4G,UAAUwB,OAAQ,MAAO,CAACxF,EAAIE,GACnC,IAAIi8B,EAAK1/B,KAAK4b,KAAKjb,EAAE,IAAKg/B,EAAK3/B,KAAK4b,KAAKjb,EAAE,IAC3C,KAAM++B,GAAM,GAAQA,GAAM,GAAI,MAAM,IAAIr9B,MAAM,gBAC9C,OAAOkB,EAAKm8B,EAAIj8B,EAAKk8B,EAAI/Z,GAC3B,EAEA2a,EAAQU,SAAW,SAAStgC,GAC1B,IAAK4G,UAAUwB,OAAQ,OAAO,GAAKuB,EACnC,MAAO3J,GAAKA,IAAM,GAAI,MAAM,IAAI0B,MAAM,qBACtC,OAAOiI,EAAItK,KAAK0b,MAAM1b,KAAKkhC,IAAIvgC,GAAKX,KAAKmhC,KAAMvb,GACjD,EAEA2a,EAAQX,WAAa,SAASj/B,GAC5B,OAAO4G,UAAUwB,QAAUk1B,EAAyB,mBAANt9B,EAAmBA,EAAI6J,MAAM8zB,QAAQ39B,GAAKsG,GAAS6I,GAAML,KAAK9O,IAAMsG,GAAStG,GAAI4/B,GAAWtC,CAC5I,EAEAsC,EAAQjwB,UAAY,SAAS3P,GAC3B,IAAK4G,UAAUwB,OAAQ,OAAO/I,KAAK4C,KAAKf,GAAKA,EAAI,IACjD,MAAOlB,GAAKA,IAAM,GAAI,MAAM,IAAI0B,MAAM,qBACtC,OAAOR,EAAI7B,KAAKuQ,OAAOvQ,KAAK4C,KAAK,EAAIjC,EAAIA,EAAI,GAAK,GAAK,GAAIilB,GAC7D,EAEO2a,CACT,CC7He,SAAAa,KACb,OAAO,IAAIC,EACb,CAEA,SAASA,KACP/gC,KAAKghC,OACP,CHcevgC,EAAAi9B,GAAA,YCxBCj9B,EAAA++B,GAAA,SAsBA/+B,EAAAi/B,GAAA,SCnBPj/B,EAAAk/B,GAAA,YAIAl/B,EAAAm/B,GAAA,YAIAn/B,EAAAo/B,GAAA,iBAIMp/B,EAAAq/B,GAAA,oBCXAr/B,EAAAqgC,GAAA,SAINrgC,EAAAsgC,GAAA,SAITA,GAAMrgC,UAAY,CAChBC,YAAaogC,GACbC,MAAOvgC,EAAA,WACLT,KAAK+gB,EACL/gB,KAAKkF,EAAI,CACX,EAHO,SAIP+7B,eAAcpgC,GACZogC,GAAIC,GAAMrgC,EAAGb,KAAKkF,GAClB+7B,GAAIjhC,KAAMkhC,GAAKngB,EAAG/gB,KAAK+gB,GACnB/gB,KAAK+gB,EAAG/gB,KAAKkF,GAAKg8B,GAAKh8B,EACtBlF,KAAK+gB,EAAImgB,GAAKh8B,CACrB,EALK,OAMLy2B,QAASl7B,EAAA,WACP,OAAOT,KAAK+gB,CACd,EAFS,YAKX,IAAImgB,GAAO,IAAIH,GAEf,SAASE,GAAIH,EAAOt4B,EAAGoC,GACrB,IAAIpK,EAAIsgC,EAAM/f,EAAIvY,EAAIoC,EAClBu2B,EAAK3gC,EAAIgI,EACT44B,EAAK5gC,EAAI2gC,EACbL,EAAM57B,EAAKsD,EAAI44B,GAAOx2B,EAAIu2B,EAC5B,CALS1gC,EAAAwgC,GAAA,OChCF,IAGIrhC,GAAW,EAHNF,KAAKC,GAQVqC,GAAMtC,KAAKsC,IAWXM,GAAO5C,KAAK4C,KCrBR,SAASi9B,KAAQ,CCAhC,SAAS8B,GAAed,EAAUe,GAC5Bf,GAAYgB,GAAmBC,eAAejB,EAASzrB,OACzDysB,GAAmBhB,EAASzrB,MAAMyrB,EAAUe,EAEhD,CDJwB/B,EAAAA,GAAAA,UCAf9+B,EAAA4gC,GAAA,kBAMT,IAAII,GAAmB,CACrBC,QAASjhC,EAAA,SAASkhC,EAAQL,GACxBD,GAAeM,EAAOpB,SAAUe,EAClC,EAFS,WAGTM,kBAAmBnhC,EAAA,SAASkhC,EAAQL,GAElC,IADA,IAAIO,EAAWF,EAAOE,SAAUt4B,GAAI,EAAIC,EAAIq4B,EAASp5B,SAC5Cc,EAAIC,GAAG63B,GAAeQ,EAASt4B,GAAGg3B,SAAUe,EACvD,EAHmB,sBAMjBC,GAAqB,CACvBO,OAAQrhC,EAAA,SAASkhC,EAAQL,GACvBA,EAAOS,QACT,EAFQ,UAGRC,MAAOvhC,EAAA,SAASkhC,EAAQL,GACtBK,EAASA,EAAOpD,YAChB+C,EAAO13B,MAAM+3B,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAC5C,EAHO,SAIPM,WAAYxhC,EAAA,SAASkhC,EAAQL,GAE3B,IADA,IAAI/C,EAAcoD,EAAOpD,YAAah1B,GAAI,EAAIC,EAAI+0B,EAAY91B,SACrDc,EAAIC,GAAGm4B,EAASpD,EAAYh1B,GAAI+3B,EAAO13B,MAAM+3B,EAAO,GAAIA,EAAO,GAAIA,EAAO,GACrF,EAHY,cAIZO,WAAYzhC,EAAA,SAASkhC,EAAQL,GAC3Ba,GAAWR,EAAOpD,YAAa+C,EAAQ,EACzC,EAFY,cAGZc,gBAAiB3hC,EAAA,SAASkhC,EAAQL,GAEhC,IADA,IAAI/C,EAAcoD,EAAOpD,YAAah1B,GAAI,EAAIC,EAAI+0B,EAAY91B,SACrDc,EAAIC,GAAG24B,GAAW5D,EAAYh1B,GAAI+3B,EAAQ,EACrD,EAHiB,mBAIjBe,QAAS5hC,EAAA,SAASkhC,EAAQL,GACxBgB,GAAcX,EAAOpD,YAAa+C,EACpC,EAFS,WAGTiB,aAAc9hC,EAAA,SAASkhC,EAAQL,GAE7B,IADA,IAAI/C,EAAcoD,EAAOpD,YAAah1B,GAAI,EAAIC,EAAI+0B,EAAY91B,SACrDc,EAAIC,MAAiB+0B,EAAYh1B,GAAI+3B,EAChD,EAHc,gBAIdkB,mBAAoB/hC,EAAA,SAASkhC,EAAQL,GAEnC,IADA,IAAImB,EAAad,EAAOc,WAAYl5B,GAAI,EAAIC,EAAIi5B,EAAWh6B,SAClDc,EAAIC,MAAkBi5B,EAAWl5B,GAAI+3B,EAChD,EAHoB,uBAMtB,SAASa,GAAW5D,EAAa+C,EAAQoB,GACvC,IAA6CC,EAAzCp5B,GAAI,EAAIC,EAAI+0B,EAAY91B,OAASi6B,EAErC,IADApB,EAAO53B,cACEH,EAAIC,GAAGm5B,EAAapE,EAAYh1B,GAAI+3B,EAAO13B,MAAM+4B,EAAW,GAAIA,EAAW,GAAIA,EAAW,IACnGrB,EAAO33B,SACT,CAEA,SAAS24B,GAAc/D,EAAa+C,GAClC,IAAI/3B,GAAI,EAAIC,EAAI+0B,EAAY91B,OAE5B,IADA64B,EAAOsB,iBACEr5B,EAAIC,GAAG24B,GAAW5D,EAAYh1B,GAAI+3B,EAAQ,GACnDA,EAAOuB,YACT,CAEe,SAAAC,GAASnB,EAAQL,GAC1BK,GAAUF,GAAiBD,eAAeG,EAAO7sB,MACnD2sB,GAAiBE,EAAO7sB,MAAM6sB,EAAQL,GAEtCD,GAAeM,EAAQL,EAE3B,CCpEe,SAAAr2B,GAASzK,GACtB,OAAOA,CACT,CD8CSC,EAAA0hC,GAAA,cAOA1hC,EAAA6hC,GAAA,iBAOM7hC,EAAAqiC,GAAA,aC9DAriC,EAAAwK,GAAA,YCIf,IAEItF,GACAC,GACApE,GACAC,GALAshC,GAAUjC,KACVkC,GAAclC,KAMdmC,GAAa,CACfr5B,MAAO21B,GACP71B,UAAW61B,GACX51B,QAAS41B,GACTqD,aAAcniC,EAAA,WACZwiC,GAAWv5B,UAAYw5B,GACvBD,GAAWt5B,QAAUw5B,EACvB,EAHc,gBAIdN,WAAYpiC,EAAA,WACVwiC,GAAWv5B,UAAYu5B,GAAWt5B,QAAUs5B,GAAWr5B,MAAQ21B,GAC/DwD,GAAQ9B,IAAIj/B,GAAIghC,KAChBA,GAAYhC,OACd,EAJY,cAKZoC,OAAQ3iC,EAAA,WACN,IAAIqJ,EAAOi5B,GAAU,EAErB,OADAA,GAAQ/B,QACDl3B,CACT,EAJQ,WAOV,SAASo5B,KACPD,GAAWr5B,MAAQy5B,EACrB,CAEA,SAASA,GAAe7iC,EAAGK,GACzBoiC,GAAWr5B,MAAQ05B,GACnB39B,GAAMnE,GAAKhB,EAAGoF,GAAMnE,GAAKZ,CAC3B,CAEA,SAASyiC,GAAU9iC,EAAGK,GACpBmiC,GAAY/B,IAAIx/B,GAAKjB,EAAIgB,GAAKX,GAC9BW,GAAKhB,EAAGiB,GAAKZ,CACf,CAEA,SAASsiC,KACPG,GAAU39B,GAAKC,GACjB,CAhBSnF,EAAAyiC,GAAA,iBAIAziC,EAAA4iC,GAAA,kBAKA5iC,EAAA6iC,GAAA,aAKA7iC,EAAA0iC,GAAA,eC3CT,IAAI3hC,GAAK63B,IACL53B,GAAKD,GACLP,IAAMO,GACNN,GAAKD,GAELsiC,GAAe,CACjB35B,MAAO45B,GACP95B,UAAW61B,GACX51B,QAAS41B,GACTqD,aAAcrD,GACdsD,WAAYtD,GACZ6D,OAAQ3iC,EAAA,WACN,IAAIgjC,EAAS,CAAC,CAACjiC,GAAIC,IAAK,CAACR,GAAIC,KAE7B,OADAD,GAAKC,KAAOO,GAAKD,GAAK63B,KACfoK,CACT,EAJQ,WAOV,SAASD,GAAYhjC,EAAGK,GAClBL,EAAIgB,KAAIA,GAAKhB,GACbA,EAAIS,KAAIA,GAAKT,GACbK,EAAIY,KAAIA,GAAKZ,GACbA,EAAIK,KAAIA,GAAKL,EACnB,CALSJ,EAAA+iC,GAAA,eChBT,IASI79B,GACAC,GACApE,GACAC,GAZAiiC,GAAK,EACLC,GAAK,EACLC,GAAK,EACLC,GAAK,EACLC,GAAK,EACLC,GAAK,EACLC,GAAK,EACLC,GAAK,EACLC,GAAK,EAMLC,GAAiB,CACnBv6B,MAAOw6B,GACP16B,UAAW26B,GACX16B,QAAS26B,GACT1B,aAAcniC,EAAA,WACZ0jC,GAAez6B,UAAY66B,GAC3BJ,GAAex6B,QAAU66B,EAC3B,EAHc,gBAId3B,WAAYpiC,EAAA,WACV0jC,GAAev6B,MAAQw6B,GACvBD,GAAez6B,UAAY26B,GAC3BF,GAAex6B,QAAU26B,EAC3B,EAJY,cAKZlB,OAAQ3iC,EAAA,WACN,IAAI8H,EAAW27B,GAAK,CAACF,GAAKE,GAAID,GAAKC,IAC7BH,GAAK,CAACF,GAAKE,GAAID,GAAKC,IACpBH,GAAK,CAACF,GAAKE,GAAID,GAAKC,IACpB,CAAC/4B,IAAKA,KAIZ,OAHA64B,GAAKC,GAAKC,GACVC,GAAKC,GAAKC,GACVC,GAAKC,GAAKC,GAAK,EACR37B,CACT,EATQ,WAYV,SAAS67B,GAAc5jC,EAAGK,GACxB6iC,IAAMljC,EACNmjC,IAAM9iC,IACJ+iC,EACJ,CAEA,SAASS,KACPF,GAAev6B,MAAQ66B,EACzB,CAEA,SAASA,GAAuBjkC,EAAGK,GACjCsjC,GAAev6B,MAAQ86B,GACvBN,GAAc5iC,GAAKhB,EAAGiB,GAAKZ,EAC7B,CAEA,SAAS6jC,GAAkBlkC,EAAGK,GAC5B,IAAIoC,EAAKzC,EAAIgB,GAAI2B,EAAKtC,EAAIY,GAAIkjC,EAAIriC,GAAKW,EAAKA,EAAKE,EAAKA,GACtD0gC,IAAMc,GAAKnjC,GAAKhB,GAAK,EACrBsjC,IAAMa,GAAKljC,GAAKZ,GAAK,EACrBkjC,IAAMY,EACNP,GAAc5iC,GAAKhB,EAAGiB,GAAKZ,EAC7B,CAEA,SAASyjC,KACPH,GAAev6B,MAAQw6B,EACzB,CAEA,SAASG,KACPJ,GAAev6B,MAAQg7B,EACzB,CAEA,SAASJ,KACPK,GAAkBl/B,GAAKC,GACzB,CAEA,SAASg/B,GAAuBpkC,EAAGK,GACjCsjC,GAAev6B,MAAQi7B,GACvBT,GAAcz+B,GAAMnE,GAAKhB,EAAGoF,GAAMnE,GAAKZ,EACzC,CAEA,SAASgkC,GAAkBrkC,EAAGK,GAC5B,IAAIoC,EAAKzC,EAAIgB,GACT2B,EAAKtC,EAAIY,GACTkjC,EAAIriC,GAAKW,EAAKA,EAAKE,EAAKA,GAE5B0gC,IAAMc,GAAKnjC,GAAKhB,GAAK,EACrBsjC,IAAMa,GAAKljC,GAAKZ,GAAK,EACrBkjC,IAAMY,EAGNX,KADAW,EAAIljC,GAAKjB,EAAIgB,GAAKX,IACPW,GAAKhB,GAChByjC,IAAMU,GAAKljC,GAAKZ,GAChBqjC,IAAU,EAAJS,EACNP,GAAc5iC,GAAKhB,EAAGiB,GAAKZ,EAC7B,CC9Fe,SAASikC,GAAYj+B,GAClC7G,KAAK2I,SAAW9B,CAClB,CDsCSpG,EAAA2jC,GAAA,iBAMA3jC,EAAA4jC,GAAA,qBAIA5jC,EAAAgkC,GAAA,0BAKAhkC,EAAAikC,GAAA,qBAQAjkC,EAAA6jC,GAAA,mBAIA7jC,EAAA8jC,GAAA,qBAIA9jC,EAAA+jC,GAAA,mBAIA/jC,EAAAmkC,GAAA,0BAKAnkC,EAAAokC,GAAA,qBChFepkC,EAAAqkC,GAAA,eAIxBA,GAAYpkC,UAAY,CACtBqkC,QAAS,IACTC,uBAAsB3kC,GACpB,OAAOL,KAAK+kC,QAAU1kC,EAAGL,IAC3B,EAFa,eAGb4iC,aAAcniC,EAAA,WACZT,KAAKiM,MAAQ,CACf,EAFc,gBAGd42B,WAAYpiC,EAAA,WACVT,KAAKiM,MAAQpB,GACf,EAFY,cAGZnB,UAAWjJ,EAAA,WACTT,KAAKkM,OAAS,CAChB,EAFW,aAGXvC,QAASlJ,EAAA,WACY,IAAfT,KAAKiM,OAAajM,KAAK2I,SAAS7H,YACpCd,KAAKkM,OAASrB,GAChB,EAHS,WAITjB,MAAOnJ,EAAA,SAASD,EAAGK,GACjB,OAAQb,KAAKkM,QACX,KAAK,EACHlM,KAAK2I,SAAS/H,OAAOJ,EAAGK,GACxBb,KAAKkM,OAAS,EACd,MAEF,KAAK,EACHlM,KAAK2I,SAAS5H,OAAOP,EAAGK,GACxB,MAEF,QACEb,KAAK2I,SAAS/H,OAAOJ,EAAIR,KAAK+kC,QAASlkC,GACvCb,KAAK2I,SAAS9F,IAAIrC,EAAGK,EAAGb,KAAK+kC,QAAS,EAAGnlC,IAI/C,EAjBO,SAkBPwjC,OAAQ7D,ICvCV,IACI0F,GACAt/B,GACAC,GACApE,GACAC,GALAyjC,GAAYpE,KAOZqE,GAAe,CACjBv7B,MAAO21B,GACP71B,UAAWjJ,EAAA,WACT0kC,GAAav7B,MAAQw7B,EACvB,EAFW,aAGXz7B,QAASlJ,EAAA,WACHwkC,IAAYI,GAAY1/B,GAAKC,IACjCu/B,GAAav7B,MAAQ21B,EACvB,EAHS,WAITqD,aAAcniC,EAAA,WACZwkC,IAAa,CACf,EAFc,gBAGdpC,WAAYpiC,EAAA,WACVwkC,GAAa,IACf,EAFY,cAGZ7B,OAAQ3iC,EAAA,WACN,IAAIgI,GAAUy8B,GAEd,OADAA,GAAUlE,QACHv4B,CACT,EAJQ,WAOV,SAAS28B,GAAiB5kC,EAAGK,GAC3BskC,GAAav7B,MAAQy7B,GACrB1/B,GAAMnE,GAAKhB,EAAGoF,GAAMnE,GAAKZ,CAC3B,CAEA,SAASwkC,GAAY7kC,EAAGK,GACtBW,IAAMhB,EAAGiB,IAAMZ,EACfqkC,GAAUjE,IAAI3+B,GAAKd,GAAKA,GAAKC,GAAKA,KAClCD,GAAKhB,EAAGiB,GAAKZ,CACf,CC1Ce,SAASykC,KACtBtlC,KAAKulC,QAAU,EACjB,CAmDA,SAAS5P,GAAOc,GACd,MAAO,MAAQA,EACT,IAAMA,EAAS,IAAMA,EAAS,aAAc,EAAKA,EACjD,IAAMA,EAAS,IAAMA,EAAS,YAAc,EAAIA,EAChD,GACR,CCjDe,SAAA+O,GAASC,EAAY5+B,GAClC,IACI6+B,EACAC,EAFAX,EAAc,IAIlB,SAAS1kC,EAAKqhC,GAKZ,OAJIA,IACyB,mBAAhBqD,GAA4BW,EAAcX,aAAaA,EAAYh+B,MAAMhH,KAAMiH,YAC1Fq6B,GAAOK,EAAQ+D,EAAiBC,KAE3BA,EAAcvC,QACvB,CAuCA,OA7CS3iC,EAAAH,EAAA,QAQTA,EAAKwJ,KAAO,SAAS63B,GAEnB,OADAL,GAAOK,EAAQ+D,EAAiBE,KACzBA,GAASxC,QAClB,EAEA9iC,EAAK26B,QAAU,SAAS0G,GAEtB,OADAL,GAAOK,EAAQ+D,EAAiBG,KACzBA,GAAYzC,QACrB,EAEA9iC,EAAKmjC,OAAS,SAAS9B,GAErB,OADAL,GAAOK,EAAQ+D,EAAiBI,KACzBA,GAAW1C,QACpB,EAEA9iC,EAAKiI,SAAW,SAASo5B,GAEvB,OADAL,GAAOK,EAAQ+D,EAAiBK,KACzBA,GAAa3C,QACtB,EAEA9iC,EAAKmlC,WAAa,SAASplC,GACzB,OAAO4G,UAAUwB,QAAUi9B,EAAwB,MAALrlC,GAAaolC,EAAa,KAAMx6B,KAAaw6B,EAAaplC,GAAGihC,OAAQhhC,GAAQmlC,CAC7H,EAEAnlC,EAAKuG,QAAU,SAASxG,GACtB,OAAK4G,UAAUwB,QACfk9B,EAAqB,MAALtlC,GAAawG,EAAU,KAAM,IAAIy+B,IAAc,IAAIR,GAAYj+B,EAAUxG,GAC9D,mBAAhB2kC,GAA4BW,EAAcX,YAAYA,GAC1D1kC,GAHuBuG,CAIhC,EAEAvG,EAAK0kC,YAAc,SAAS3kC,GAC1B,OAAK4G,UAAUwB,QACfu8B,EAA2B,mBAAN3kC,EAAmBA,GAAKslC,EAAcX,aAAa3kC,IAAKA,GACtEC,GAFuB0kC,CAGhC,EAEO1kC,EAAKmlC,WAAWA,GAAY5+B,QAAQA,EAC7C,CF3BSpG,EAAA2kC,GAAA,oBAKA3kC,EAAA4kC,GAAA,eCtCe5kC,EAAA6kC,GAAA,cAIxBA,GAAW5kC,UAAY,CACrBqkC,QAAS,IACTiB,QAASrQ,GAAO,KAChBqP,uBAAsB3kC,GAEpB,OADKA,GAAKA,KAAOL,KAAK+kC,UAAS/kC,KAAK+kC,QAAU1kC,EAAGL,KAAKgmC,QAAU,MACzDhmC,IACT,EAHa,eAIb4iC,aAAcniC,EAAA,WACZT,KAAKiM,MAAQ,CACf,EAFc,gBAGd42B,WAAYpiC,EAAA,WACVT,KAAKiM,MAAQpB,GACf,EAFY,cAGZnB,UAAWjJ,EAAA,WACTT,KAAKkM,OAAS,CAChB,EAFW,aAGXvC,QAASlJ,EAAA,WACY,IAAfT,KAAKiM,OAAajM,KAAKulC,QAAQl5B,KAAK,KACxCrM,KAAKkM,OAASrB,GAChB,EAHS,WAITjB,MAAOnJ,EAAA,SAASD,EAAGK,GACjB,OAAQb,KAAKkM,QACX,KAAK,EACHlM,KAAKulC,QAAQl5B,KAAK,IAAK7L,EAAG,IAAKK,GAC/Bb,KAAKkM,OAAS,EACd,MAEF,KAAK,EACHlM,KAAKulC,QAAQl5B,KAAK,IAAK7L,EAAG,IAAKK,GAC/B,MAEF,QACsB,MAAhBb,KAAKgmC,eAAsBA,QAAUrQ,GAAO31B,KAAK+kC,UACrD/kC,KAAKulC,QAAQl5B,KAAK,IAAK7L,EAAG,IAAKK,EAAGb,KAAKgmC,SAI7C,EAjBO,SAkBP5C,OAAQ3iC,EAAA,WACN,GAAIT,KAAKulC,QAAQ98B,OAAQ,CACvB,IAAI26B,EAASpjC,KAAKulC,QAAQ5pB,KAAK,IAE/B,OADA3b,KAAKulC,QAAU,GACRnC,CACT,CACE,OAAO,IAEX,EARQ,WAWD3iC,EAAAk1B,GAAA,UC5CMl1B,EAAA+kC,GAAA,WCHR,MAAMS,GAAN,MAAMA,iBAAgBlgB,GASfmgB,eACAC,eACV,WAAAxlC,GACIqT,QACAhU,KACKumB,yBAAwB,GACxBC,yBAAwB,GACxB4f,kBAAkB,SAE3B,CAEA,IAAA3f,CAAKvF,EAAcjd,GACf,MAA8B,eAAvBid,EAAKlM,cAAiCkM,EAAKT,QAAQxc,EAAEqU,OAAS4I,EAAKN,SAAS3c,EAAE+G,MACzF,CAEA,IAAA0b,CAAKxF,EAAcjd,GACf,MAA8B,eAAvBid,EAAKlM,cAAiCkM,EAAKN,SAAS3c,EAAE+G,OAASkW,EAAKT,QAAQxc,EAAEqU,MACzF,CAEA,UAAA2M,CAAW/D,EAAcxL,EAASwP,EAAmB,KACjDlR,MAAMiR,WAAW/D,EAAMxL,EAASwP,EACpC,CAEA,WAAAC,CAAYjE,EAAcxL,EAASwP,EAAmB,KAClDlR,MAAMmR,YAAYjE,EAAMxL,EAASwP,GAEjCllB,KAAKkiB,SAAWliB,KAAKkiB,SAASkG,OAAOpoB,KAAKqoB,aAE1C,MAAM/e,EAAOtJ,KAAK8oB,YAAY9oB,KAAKwkB,aAAatD,GAAOlhB,KAAK8kB,UAAU5D,IAChEmlB,EAAcvG,KACft/B,KAAOR,KAAKymB,KAAKvF,EAAMjd,IACvBpD,EAAEoD,GAAKjE,KAAK0mB,KAAKxF,EAAMjd,IACvB+kB,KAAK,CAAChpB,KAAK+X,QAAS/X,KAAKgY,WACzBhI,UAAUhQ,KAAKsmC,mBAJAxG,CAIoBx2B,GAElCi9B,EAAQF,EAAY5xB,IAAIxQ,GAAKA,EAAE+G,OAC/Bw7B,EAAW9mC,KAAKmE,IAAImD,MAAMhH,KAAMumC,GAChCE,EAAW/mC,KAAKkE,IAAIoD,MAAMhH,KAAMumC,GACtCvmC,KAAKkmC,eAAiBM,EACtBxmC,KAAKmmC,eAAiBM,EACtB,MAAMjd,EAAQ9T,EAAQlE,UAAU,QAAQlI,KAAK+8B,GAC7C7c,EAAM1X,QAAQC,OAAO,QAChBI,MAAMqX,GACNxX,KAAK,IAAKwzB,MACVxzB,KAAK,UAAahS,KAAK0mC,kBAAoB1mC,KAAKkiB,SAASje,EAAE+G,MAAOw7B,EAAUC,GAAY,QACxFz0B,KAAK,SAAUhS,KAAK2mC,sBACpB30B,KAAK,kBAAmB,SACxBA,KAAK,eAAgBhS,KAAK4mC,sBAE/Bpd,EAAM5X,OAAOa,QACjB,CAEA,IAAAb,CAAKwP,EAAUzE,GACX3I,MAAMpC,KAAKwP,EAAUzE,EACzB,GA/DgClc,EAAAwlC,GAAA,WAChC3b,EADS2b,GACF,WAAyB,CAAC,CAC7BpmB,GAAI,IACJ/K,KAAM,OACP,CACC+K,GAAI,IACJ/K,KAAM,YANP,IAAM+xB,GAANZ,GAiEPY,GAAQnmC,UAAU8U,QAAU,iBAC5BqxB,GAAQnmC,UAAU+pB,WAAWqc,EAAAA,SAASpmC,WAkBtCmmC,GAAQnmC,UAAUmc,QAAQ,YAAa,SAAU,SAAU,iCAC3DgqB,GAAQnmC,UAAUmc,QAAQ,oBAAoB,EAAM,UAAW,4CAC/DgqB,GAAQnmC,UAAUmc,QAAQ,mBAAmB,EAAM,UAAW,2CAC9DgqB,GAAQnmC,UAAUmc,QAAQ,eAAe,EAAM,UAAW,sCAC1DgqB,GAAQnmC,UAAUmc,QAAQ,mBAAoB,GAAI,SAAU,8DAC5DgqB,GAAQnmC,UAAUmc,QAAQ,qBAAsB,UAAW,aAAc,qCACzEgqB,GAAQnmC,UAAUmc,QAAQ,qBAAsB,EAAG,SAAU,qCC9FtD,MAAMkqB,GAAN,MAAMA,eAAcrW,GACvB,WAAA/vB,GACIqT,QAEAhU,KACK8d,oBAAoB,YACpBsoB,kBAAkB,WAClBY,kBAAkB,OAE3B,GAT2BvmC,EAAAsmC,GAAA,SAAxB,IAAME,GAANF,GCFQ,SAAApgC,GAASnG,GACtB,oBACE,OAAOA,CACT,EAFO,WAGT,CDSAymC,GAAMvmC,UAAU8U,QAAU,eCbX/U,EAAAkG,GAAA,YCAR,IAAI9G,GAAU,MACVJ,GAAKC,KAAKC,GACVmE,GAASrE,GAAK,EACdG,GAAM,EAAIH,GCCrB,SAASuE,GAAeC,GACtB,OAAOA,EAAEC,WACX,CAEA,SAASC,GAAeF,GACtB,OAAOA,EAAEG,WACX,CAEA,SAASC,GAAcJ,GACrB,OAAOA,EAAEK,UACX,CAEA,SAASC,GAAYN,GACnB,OAAOA,EAAEO,QACX,CAEA,SAASC,GAAYR,GACnB,OAAOA,GAAKA,EAAES,QAChB,CAEA,SAASX,GAAKvD,GACZ,OAAOA,GAAK,EAAIsD,GAAStD,OAAWsD,GAASpE,KAAKqE,KAAKvD,EACzD,CAEA,SAASmE,GAAUnD,EAAIC,EAAIR,EAAIC,EAAIE,EAAIC,EAAIuD,EAAIC,GAC7C,IAAIC,EAAM7D,EAAKO,EAAIuD,EAAM7D,EAAKO,EAC1BuD,EAAMJ,EAAKxD,EAAI6D,EAAMJ,EAAKxD,EAC1B6D,GAAKF,GAAOvD,EAAKJ,GAAM4D,GAAOzD,EAAKJ,KAAQ6D,EAAMH,EAAME,EAAMD,GACjE,MAAO,CAACvD,EAAK0D,EAAIJ,EAAKrD,EAAKyD,EAAIH,EACjC,CAIA,SAASI,GAAe3D,EAAIC,EAAIR,EAAIC,EAAIkE,EAAIC,EAAIhC,GAC9C,IAAIzB,EAAMJ,EAAKP,EACXY,EAAMJ,EAAKP,EACXoE,GAAMjC,EAAKgC,GAAMA,GAAM3F,KAAK4C,KAAKV,EAAMA,EAAMC,EAAMA,GACnD0D,EAAKD,EAAKzD,EACV2D,GAAMF,EAAK1D,EACX6D,EAAMjE,EAAK+D,EACXG,EAAMjE,EAAK+D,EACXV,EAAM7D,EAAKsE,EACXR,EAAM7D,EAAKsE,EACXG,GAAOF,EAAMX,GAAO,EACpBc,GAAOF,EAAMX,GAAO,EACpB9B,EAAK6B,EAAMW,EACXtC,EAAK4B,EAAMW,EACXG,EAAK5C,EAAKA,EAAKE,EAAKA,EACpB5B,EAAI6D,EAAKC,EACTS,EAAIL,EAAMV,EAAMD,EAAMY,EACtBzB,GAAKd,EAAK,GAAI,EAAK,GAAKzD,KAAK4C,KAAK5C,KAAKkE,IAAI,EAAGrC,EAAIA,EAAIsE,EAAKC,EAAIA,IAC/DC,GAAOD,EAAI3C,EAAKF,EAAKgB,GAAK4B,EAC1BG,IAAQF,EAAI7C,EAAKE,EAAKc,GAAK4B,EAC3BI,GAAOH,EAAI3C,EAAKF,EAAKgB,GAAK4B,EAC1BK,IAAQJ,EAAI7C,EAAKE,EAAKc,GAAK4B,EAC3BM,EAAMJ,EAAMJ,EACZS,EAAMJ,EAAMJ,EACZS,EAAMJ,EAAMN,EACZW,EAAMJ,EAAMN,EAMhB,OAFIO,EAAMA,EAAMC,EAAMA,EAAMC,EAAMA,EAAMC,EAAMA,IAAKP,EAAME,EAAKD,EAAME,GAE7D,CACLK,GAAIR,EACJS,GAAIR,EACJpE,KAAM2D,EACN1D,KAAM2D,EACNC,IAAKM,GAAOX,EAAK7D,EAAI,GACrBmE,IAAKM,GAAOZ,EAAK7D,EAAI,GAEzB,CAEe,SAAAsB,KACb,IAAIqB,EAAcF,GACdI,EAAcD,GACduC,EAAeC,GAAS,GACxBC,EAAY,KACZtC,EAAaD,GACbG,EAAWD,GACXG,EAAWD,GACXoC,EAAU,KAEd,SAAShE,IACP,IAAIiE,EACAvF,EACAwF,GAAM7C,EAAY8C,MAAMhH,KAAMiH,WAC9B7B,GAAMhB,EAAY4C,MAAMhH,KAAMiH,WAC9BnE,EAAKwB,EAAW0C,MAAMhH,KAAMiH,WAAanD,GACzCf,EAAKyB,EAASwC,MAAMhH,KAAMiH,WAAanD,GACvCR,EAAK5D,KAAKsC,IAAIe,EAAKD,GACnBO,EAAKN,EAAKD,EAQd,GANK+D,IAASA,EAAUC,EAASxG,KAG7B8E,EAAK2B,IAAIxF,EAAI6D,EAAIA,EAAK2B,EAAIA,EAAKxF,GAG7B6D,EAAKvF,GAA6B,GAG/ByD,EAAK1D,GAAMC,GAClBgH,EAAQjG,OAAOwE,EAAK1F,KAAKwD,IAAIJ,GAAKsC,EAAK1F,KAAK0D,IAAIN,IAChD+D,EAAQhE,IAAI,EAAG,EAAGuC,EAAItC,EAAIC,GAAKM,GAC3B0D,EAAKlH,KACPgH,EAAQjG,OAAOmG,EAAKrH,KAAKwD,IAAIH,GAAKgE,EAAKrH,KAAK0D,IAAIL,IAChD8D,EAAQhE,IAAI,EAAG,EAAGkE,EAAIhE,EAAID,EAAIO,QAK7B,CACH,IAWI6D,EACAC,EAZAC,EAAMtE,EACNuE,EAAMtE,EACNuE,EAAMxE,EACNyE,EAAMxE,EACNyE,EAAMlE,EACNmE,EAAMnE,EACNoE,EAAKhD,EAASsC,MAAMhH,KAAMiH,WAAa,EACvCU,EAAMD,EAAK7H,KAAa+G,GAAaA,EAAUI,MAAMhH,KAAMiH,WAAavH,KAAK4C,KAAKyE,EAAKA,EAAK3B,EAAKA,IACjGC,EAAK3F,KAAKmE,IAAInE,KAAKsC,IAAIoD,EAAK2B,GAAM,GAAIL,EAAaM,MAAMhH,KAAMiH,YAC/DW,EAAMvC,EACNwC,EAAMxC,EAKV,GAAIsC,EAAK9H,GAAS,CAChB,IAAIiI,EAAK/D,GAAK4D,EAAKZ,EAAKrH,KAAK0D,IAAIsE,IAC7BK,EAAKhE,GAAK4D,EAAKvC,EAAK1F,KAAK0D,IAAIsE,KAC5BF,GAAY,EAALM,GAAUjI,IAA8ByH,GAArBQ,GAAOzE,EAAK,GAAI,EAAgBkE,GAAOO,IACjEN,EAAM,EAAGF,EAAMC,GAAOzE,EAAKC,GAAM,IACjC0E,GAAY,EAALM,GAAUlI,IAA8BuH,GAArBW,GAAO1E,EAAK,GAAI,EAAgBgE,GAAOU,IACjEN,EAAM,EAAGL,EAAMC,GAAOvE,EAAKC,GAAM,EACxC,CAEA,IAAInB,EAAMwD,EAAK1F,KAAKwD,IAAIkE,GACpBvF,EAAMuD,EAAK1F,KAAK0D,IAAIgE,GACpBtC,EAAMiC,EAAKrH,KAAKwD,IAAIqE,GACpBxC,EAAMgC,EAAKrH,KAAK0D,IAAImE,GAGxB,GAAIlC,EAAKxF,GAAS,CAChB,IAAI4F,EAAML,EAAK1F,KAAKwD,IAAImE,GACpB3B,EAAMN,EAAK1F,KAAK0D,IAAIiE,GACpB1B,EAAMoB,EAAKrH,KAAKwD,IAAIoE,GACpB1B,EAAMmB,EAAKrH,KAAK0D,IAAIkE,GAGxB,GAAIhE,EAAK7D,GAAI,CACX,IAAIuI,EAAKR,EAAM3H,GAAU8E,GAAU/C,EAAKC,EAAK8D,EAAKC,EAAKH,EAAKC,EAAKZ,EAAKC,GAAO,CAACD,EAAKC,GAC/EkD,EAAKrG,EAAMoG,EAAG,GACdE,EAAKrG,EAAMmG,EAAG,GACdG,EAAK1C,EAAMuC,EAAG,GACdI,EAAK1C,EAAMsC,EAAG,GACdK,EAAK,EAAI3I,KAAK0D,IAAI1D,KAAKgD,MAAMuF,EAAKE,EAAKD,EAAKE,IAAO1I,KAAK4C,KAAK2F,EAAKA,EAAKC,EAAKA,GAAMxI,KAAK4C,KAAK6F,EAAKA,EAAKC,EAAKA,KAAQ,GACnHE,EAAK5I,KAAK4C,KAAK0F,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,IAC9CJ,EAAMlI,KAAKmE,IAAIwB,GAAK0B,EAAKuB,IAAOD,EAAK,IACrCR,EAAMnI,KAAKmE,IAAIwB,GAAKD,EAAKkD,IAAOD,EAAK,GACvC,CACF,CAGMZ,EAAM5H,GAGHgI,EAAMhI,IACbqH,EAAK/B,GAAeQ,EAAKC,EAAKhE,EAAKC,EAAKuD,EAAIyC,EAAKxE,GACjD8D,EAAKhC,GAAeM,EAAKC,EAAKZ,EAAKC,EAAKK,EAAIyC,EAAKxE,GAEjDwD,EAAQjG,OAAOsG,EAAGX,GAAKW,EAAGtF,IAAKsF,EAAGV,GAAKU,EAAGrF,KAGtCgG,EAAMxC,EAAIwB,EAAQhE,IAAIqE,EAAGX,GAAIW,EAAGV,GAAIqB,EAAKnI,KAAKiE,MAAMuD,EAAGrF,IAAKqF,EAAGtF,KAAMlC,KAAKiE,MAAMwD,EAAGtF,IAAKsF,EAAGvF,MAAOyB,IAIpGwD,EAAQhE,IAAIqE,EAAGX,GAAIW,EAAGV,GAAIqB,EAAKnI,KAAKiE,MAAMuD,EAAGrF,IAAKqF,EAAGtF,KAAMlC,KAAKiE,MAAMuD,EAAGxB,IAAKwB,EAAGzB,MAAOpC,GACxFwD,EAAQhE,IAAI,EAAG,EAAGuC,EAAI1F,KAAKiE,MAAMuD,EAAGV,GAAKU,EAAGxB,IAAKwB,EAAGX,GAAKW,EAAGzB,KAAM/F,KAAKiE,MAAMwD,EAAGX,GAAKW,EAAGzB,IAAKyB,EAAGZ,GAAKY,EAAG1B,MAAOpC,GAC/GwD,EAAQhE,IAAIsE,EAAGZ,GAAIY,EAAGX,GAAIqB,EAAKnI,KAAKiE,MAAMwD,EAAGzB,IAAKyB,EAAG1B,KAAM/F,KAAKiE,MAAMwD,EAAGtF,IAAKsF,EAAGvF,MAAOyB,MAKvFwD,EAAQjG,OAAOgB,EAAKC,GAAMgF,EAAQhE,IAAI,EAAG,EAAGuC,EAAIgC,EAAKC,GAAMhE,IArB1CwD,EAAQjG,OAAOgB,EAAKC,GAyBpCkF,EAAKlH,IAAc2H,EAAM3H,GAGtB+H,EAAM/H,IACbqH,EAAK/B,GAAeL,EAAKC,EAAKU,EAAKC,EAAKqB,GAAKa,EAAKvE,GAClD8D,EAAKhC,GAAevD,EAAKC,EAAK8D,EAAKC,EAAKmB,GAAKa,EAAKvE,GAElDwD,EAAQ9F,OAAOmG,EAAGX,GAAKW,EAAGtF,IAAKsF,EAAGV,GAAKU,EAAGrF,KAGtC+F,EAAMvC,EAAIwB,EAAQhE,IAAIqE,EAAGX,GAAIW,EAAGV,GAAIoB,EAAKlI,KAAKiE,MAAMuD,EAAGrF,IAAKqF,EAAGtF,KAAMlC,KAAKiE,MAAMwD,EAAGtF,IAAKsF,EAAGvF,MAAOyB,IAIpGwD,EAAQhE,IAAIqE,EAAGX,GAAIW,EAAGV,GAAIoB,EAAKlI,KAAKiE,MAAMuD,EAAGrF,IAAKqF,EAAGtF,KAAMlC,KAAKiE,MAAMuD,EAAGxB,IAAKwB,EAAGzB,MAAOpC,GACxFwD,EAAQhE,IAAI,EAAG,EAAGkE,EAAIrH,KAAKiE,MAAMuD,EAAGV,GAAKU,EAAGxB,IAAKwB,EAAGX,GAAKW,EAAGzB,KAAM/F,KAAKiE,MAAMwD,EAAGX,GAAKW,EAAGzB,IAAKyB,EAAGZ,GAAKY,EAAG1B,KAAMpC,GAC9GwD,EAAQhE,IAAIsE,EAAGZ,GAAIY,EAAGX,GAAIoB,EAAKlI,KAAKiE,MAAMwD,EAAGzB,IAAKyB,EAAG1B,KAAM/F,KAAKiE,MAAMwD,EAAGtF,IAAKsF,EAAGvF,MAAOyB,OAK/ER,IAAI,EAAG,EAAGkE,EAAIQ,EAAKD,EAAKjE,GArBIwD,EAAQ9F,OAAO+D,EAAKC,EAsB/D,MAhHqB8B,EAAQjG,OAAO,EAAG,GAoHvC,GAFAiG,EAAQ/F,YAEJgG,EAAQ,OAAOD,EAAU,KAAMC,EAAS,IAAM,IACpD,CAwCA,OA7KSrG,EAAAoC,EAAA,OAuITA,EAAI0F,SAAW,WACb,IAAIhH,IAAM2C,EAAY8C,MAAMhH,KAAMiH,aAAc7C,EAAY4C,MAAMhH,KAAMiH,YAAc,EAClFuB,IAAMlE,EAAW0C,MAAMhH,KAAMiH,aAAczC,EAASwC,MAAMhH,KAAMiH,YAAc,EAAIxH,GAAK,EAC3F,MAAO,CAACC,KAAKwD,IAAIsF,GAAKjH,EAAG7B,KAAK0D,IAAIoF,GAAKjH,EACzC,EAEAsB,EAAIqB,YAAc,SAAS7D,GACzB,OAAO4G,UAAUwB,QAAUvE,EAA2B,mBAAN7D,EAAmBA,EAAIsG,IAAUtG,GAAIwC,GAAOqB,CAC9F,EAEArB,EAAIuB,YAAc,SAAS/D,GACzB,OAAO4G,UAAUwB,QAAUrE,EAA2B,mBAAN/D,EAAmBA,EAAIsG,IAAUtG,GAAIwC,GAAOuB,CAC9F,EAEAvB,EAAI6D,aAAe,SAASrG,GAC1B,OAAO4G,UAAUwB,QAAU/B,EAA4B,mBAANrG,EAAmBA,EAAIsG,IAAUtG,GAAIwC,GAAO6D,CAC/F,EAEA7D,EAAI+D,UAAY,SAASvG,GACvB,OAAO4G,UAAUwB,QAAU7B,EAAiB,MAALvG,EAAY,KAAoB,mBAANA,EAAmBA,EAAIsG,IAAUtG,GAAIwC,GAAO+D,CAC/G,EAEA/D,EAAIyB,WAAa,SAASjE,GACxB,OAAO4G,UAAUwB,QAAUnE,EAA0B,mBAANjE,EAAmBA,EAAIsG,IAAUtG,GAAIwC,GAAOyB,CAC7F,EAEAzB,EAAI2B,SAAW,SAASnE,GACtB,OAAO4G,UAAUwB,QAAUjE,EAAwB,mBAANnE,EAAmBA,EAAIsG,IAAUtG,GAAIwC,GAAO2B,CAC3F,EAEA3B,EAAI6B,SAAW,SAASrE,GACtB,OAAO4G,UAAUwB,QAAU/D,EAAwB,mBAANrE,EAAmBA,EAAIsG,IAAUtG,GAAIwC,GAAO6B,CAC3F,EAEA7B,EAAIgE,QAAU,SAASxG,GACrB,OAAO4G,UAAUwB,QAAW5B,EAAe,MAALxG,EAAY,KAAOA,EAAIwC,GAAOgE,CACtE,EAEOhE,CACT,CCtQA,SAAS6F,GAAO7B,GACd7G,KAAK2I,SAAW9B,CAClB,CA0Be,SAAAsC,GAAStC,GACtB,OAAO,IAAI6B,GAAO7B,EACpB,CC9BO,SAASrG,GAAEqI,GAChB,OAAOA,EAAE,EACX,CAEO,SAAShI,GAAEgI,GAChB,OAAOA,EAAE,EACX,CCDe,SAAAQ,KACb,IAAI7I,EAAIuI,GACJlI,EAAImI,GACJC,EAAUtC,IAAS,GACnBE,EAAU,KACVqC,EAAQC,GACRC,EAAS,KAEb,SAASC,EAAKC,GACZ,IAAIC,EAEAtF,EAEA6C,EAHA0C,EAAIF,EAAKb,OAETgB,GAAW,EAKf,IAFe,MAAX5C,IAAiBuC,EAASF,EAAMpC,EAASxG,MAExCiJ,EAAI,EAAGA,GAAKC,IAAKD,IACdA,EAAIC,GAAKP,EAAQhF,EAAIqF,EAAKC,GAAIA,EAAGD,MAAWG,KAC5CA,GAAYA,GAAUL,EAAOM,cACrBC,WAEVF,GAAUL,EAAOQ,OAAOpJ,EAAEyD,EAAGsF,EAAGD,IAAQzI,EAAEoD,EAAGsF,EAAGD,IAGtD,GAAIxC,EAAQ,OAAOsC,EAAS,KAAMtC,EAAS,IAAM,IACnD,CAsBA,OAxCSrG,EAAA4I,EAAA,QAoBTA,EAAK7I,EAAI,SAASH,GAChB,OAAO4G,UAAUwB,QAAUjI,EAAiB,mBAANH,EAAmBA,EAAIsG,IAAUtG,GAAIgJ,GAAQ7I,CACrF,EAEA6I,EAAKxI,EAAI,SAASR,GAChB,OAAO4G,UAAUwB,QAAU5H,EAAiB,mBAANR,EAAmBA,EAAIsG,IAAUtG,GAAIgJ,GAAQxI,CACrF,EAEAwI,EAAKJ,QAAU,SAAS5I,GACtB,OAAO4G,UAAUwB,QAAUQ,EAAuB,mBAAN5I,EAAmBA,EAAIsG,KAAWtG,GAAIgJ,GAAQJ,CAC5F,EAEAI,EAAKH,MAAQ,SAAS7I,GACpB,OAAO4G,UAAUwB,QAAUS,EAAQ7I,EAAc,MAAXwG,IAAoBuC,EAASF,EAAMrC,IAAWwC,GAAQH,CAC9F,EAEAG,EAAKxC,QAAU,SAASxG,GACtB,OAAO4G,UAAUwB,QAAe,MAALpI,EAAYwG,EAAUuC,EAAS,KAAOA,EAASF,EAAMrC,EAAUxG,GAAIgJ,GAAQxC,CACxG,EAEOwC,CACT,CCtDe,SAAAk2B,KAAY,CCApB,SAAS31B,GAAM8B,EAAMlL,EAAGK,GAC7B6K,EAAK/C,SAASxH,eACX,EAAIuK,EAAKzL,IAAMyL,EAAKvL,KAAO,GAC3B,EAAIuL,EAAKxL,IAAMwL,EAAKtL,KAAO,GAC3BsL,EAAKzL,IAAM,EAAIyL,EAAKvL,KAAO,GAC3BuL,EAAKxL,IAAM,EAAIwL,EAAKtL,KAAO,GAC3BsL,EAAKzL,IAAM,EAAIyL,EAAKvL,IAAMK,GAAK,GAC/BkL,EAAKxL,IAAM,EAAIwL,EAAKtL,IAAMS,GAAK,EAEpC,CAEO,SAAS8K,GAAM9E,GACpB7G,KAAK2I,SAAW9B,CAClB,CCXA,SAASgF,GAAOhF,EAASiF,GACvB9L,KAAK+L,OAAS,IAAIJ,GAAM9E,GACxB7G,KAAKgM,MAAQF,CACf,CCLO,SAASlC,GAAM8B,EAAMlL,EAAGK,GAC7B6K,EAAK/C,SAASxH,cACZuK,EAAKvL,IAAMuL,EAAKe,IAAMf,EAAKgB,IAAMhB,EAAKzL,KACtCyL,EAAKtL,IAAMsL,EAAKe,IAAMf,EAAKiB,IAAMjB,EAAKxL,KACtCwL,EAAKgB,IAAMhB,EAAKe,IAAMf,EAAKvL,IAAMK,GACjCkL,EAAKiB,IAAMjB,EAAKe,IAAMf,EAAKtL,IAAMS,GACjC6K,EAAKgB,IACLhB,EAAKiB,IAET,CAEO,SAASC,GAAS/F,EAASgG,GAChC7M,KAAK2I,SAAW9B,EAChB7G,KAAKyM,IAAM,EAAII,GAAW,CAC5B,CCXO,SAASq6B,GAAergC,EAASgG,GACtC7M,KAAK2I,SAAW9B,EAChB7G,KAAKyM,IAAM,EAAII,GAAW,CAC5B,CCJO,SAASs6B,GAAatgC,EAASgG,GACpC7M,KAAK2I,SAAW9B,EAChB7G,KAAKyM,IAAM,EAAII,GAAW,CAC5B,CCFO,SAASjD,GAAM8B,EAAMlL,EAAGK,GAC7B,IAAII,EAAKyK,EAAKvL,IACVe,EAAKwK,EAAKtL,IACVgB,EAAKsK,EAAKgB,IACVrL,EAAKqK,EAAKiB,IAEd,GAAIjB,EAAKsB,OAASnN,GAAS,CACzB,IAAI2I,EAAI,EAAIkD,EAAKuB,QAAU,EAAIvB,EAAKsB,OAAStB,EAAKwB,OAASxB,EAAKyB,QAC5D3D,EAAI,EAAIkC,EAAKsB,QAAUtB,EAAKsB,OAAStB,EAAKwB,QAC9CjM,GAAMA,EAAKuH,EAAIkD,EAAKzL,IAAMyL,EAAKyB,QAAUzB,EAAKgB,IAAMhB,EAAKuB,SAAWzD,EACpEtI,GAAMA,EAAKsH,EAAIkD,EAAKxL,IAAMwL,EAAKyB,QAAUzB,EAAKiB,IAAMjB,EAAKuB,SAAWzD,CACtE,CAEA,GAAIkC,EAAK0B,OAASvN,GAAS,CACzB,IAAI+K,EAAI,EAAIc,EAAK2B,QAAU,EAAI3B,EAAK0B,OAAS1B,EAAKwB,OAASxB,EAAKyB,QAC5DG,EAAI,EAAI5B,EAAK0B,QAAU1B,EAAK0B,OAAS1B,EAAKwB,QAC9C9L,GAAMA,EAAKwJ,EAAIc,EAAKvL,IAAMuL,EAAK2B,QAAU7M,EAAIkL,EAAKyB,SAAWG,EAC7DjM,GAAMA,EAAKuJ,EAAIc,EAAKtL,IAAMsL,EAAK2B,QAAUxM,EAAI6K,EAAKyB,SAAWG,CAC/D,CAEA5B,EAAK/C,SAASxH,cAAcF,EAAIC,EAAIE,EAAIC,EAAIqK,EAAKgB,IAAKhB,EAAKiB,IAC7D,CAEA,SAASY,GAAW1G,EAAS2G,GAC3BxN,KAAK2I,SAAW9B,EAChB7G,KAAKyN,OAASD,CAChB,CVzBS/M,EAAAuD,GAAA,kBAIAvD,EAAA0D,GAAA,kBAIA1D,EAAA4D,GAAA,iBAIA5D,EAAA8D,GAAA,eAIA9D,EAAAgE,GAAA,eAIAhE,EAAAsD,GAAA,QAIAtD,EAAAkE,GAAA,aASAlE,EAAA0E,GAAA,kBAyCM1E,EAAAoC,GAAA,OC9ENpC,EAAAiI,GAAA,UAITA,GAAOhI,UAAY,CACjB0J,UAAW3J,EAAA,WACTT,KAAKiM,MAAQ,CACf,EAFW,aAGX5B,QAAS5J,EAAA,WACPT,KAAKiM,MAAQpB,GACf,EAFS,WAGTnB,UAAWjJ,EAAA,WACTT,KAAKkM,OAAS,CAChB,EAFW,aAGXvC,QAASlJ,EAAA,YACHT,KAAKiM,OAAyB,IAAfjM,KAAKiM,OAA+B,IAAhBjM,KAAKkM,SAAelM,KAAK2I,SAAS7H,YACzEd,KAAKiM,MAAQ,EAAIjM,KAAKiM,KACxB,EAHS,WAITrC,MAAOnJ,EAAA,SAASD,EAAGK,GAEjB,OADAL,GAAKA,EAAGK,GAAKA,EACLb,KAAKkM,QACX,KAAK,EAAGlM,KAAKkM,OAAS,EAAGlM,KAAKiM,MAAQjM,KAAK2I,SAAS5H,OAAOP,EAAGK,GAAKb,KAAK2I,SAAS/H,OAAOJ,EAAGK,GAAI,MAC/F,KAAK,EAAGb,KAAKkM,OAAS,EACtB,QAASlM,KAAK2I,SAAS5H,OAAOP,EAAGK,GAErC,EAPO,UAUMJ,EAAA0I,GAAA,eC5BC1I,EAAAD,GAAA,KAIAC,EAAAI,GAAA,KCCDJ,EAAA4I,GAAA,QCLA5I,EAAA8+B,GAAA,QCAC31B,EAAAA,GAAAA,WAWAnJ,EAAAkL,GAAA,SAIhBA,GAAMjL,UAAY,CAChB0J,UAAW3J,EAAA,WACTT,KAAKiM,MAAQ,CACf,EAFW,aAGX5B,QAAS5J,EAAA,WACPT,KAAKiM,MAAQpB,GACf,EAFS,WAGTnB,UAAWjJ,EAAA,WACTT,KAAKC,IAAMD,KAAKG,IAChBH,KAAKE,IAAMF,KAAKI,IAAMyK,IACtB7K,KAAKkM,OAAS,CAChB,EAJW,aAKXvC,QAASlJ,EAAA,WACP,OAAQT,KAAKkM,QACX,KAAK,EAAGtC,GAAM5J,KAAMA,KAAKG,IAAKH,KAAKI,KACnC,KAAK,EAAGJ,KAAK2I,SAAS5H,OAAOf,KAAKG,IAAKH,KAAKI,MAE1CJ,KAAKiM,OAAyB,IAAfjM,KAAKiM,OAA+B,IAAhBjM,KAAKkM,SAAelM,KAAK2I,SAAS7H,YACzEd,KAAKiM,MAAQ,EAAIjM,KAAKiM,KACxB,EAPS,WAQTrC,MAAOnJ,EAAA,SAASD,EAAGK,GAEjB,OADAL,GAAKA,EAAGK,GAAKA,EACLb,KAAKkM,QACX,KAAK,EAAGlM,KAAKkM,OAAS,EAAGlM,KAAKiM,MAAQjM,KAAK2I,SAAS5H,OAAOP,EAAGK,GAAKb,KAAK2I,SAAS/H,OAAOJ,EAAGK,GAAI,MAC/F,KAAK,EAAGb,KAAKkM,OAAS,EAAG,MACzB,KAAK,EAAGlM,KAAKkM,OAAS,EAAGlM,KAAK2I,SAAS5H,QAAQ,EAAIf,KAAKC,IAAMD,KAAKG,KAAO,GAAI,EAAIH,KAAKE,IAAMF,KAAKI,KAAO,GACzG,QAASwJ,GAAM5J,KAAMQ,EAAGK,GAE1Bb,KAAKC,IAAMD,KAAKG,IAAKH,KAAKG,IAAMK,EAChCR,KAAKE,IAAMF,KAAKI,IAAKJ,KAAKI,IAAMS,CAClC,EAVO,UCjCAJ,EAAAoL,GAAA,UAKTA,GAAOnL,UAAY,CACjBgJ,UAAWjJ,EAAA,WACTT,KAAKmM,GAAK,GACVnM,KAAKoM,GAAK,GACVpM,KAAK+L,OAAOrC,WACd,EAJW,aAKXC,QAASlJ,EAAA,WACP,IAAID,EAAIR,KAAKmM,GACTtL,EAAIb,KAAKoM,GACTrC,EAAIvJ,EAAEiI,OAAS,EAEnB,GAAIsB,EAAI,EAQN,IAPA,IAKI7E,EALA1D,EAAKhB,EAAE,GACPiB,EAAKZ,EAAE,GACPoC,EAAKzC,EAAEuJ,GAAKvI,EACZ2B,EAAKtC,EAAEkJ,GAAKtI,EACZ8H,GAAI,IAGCA,GAAKQ,GACZ7E,EAAIqE,EAAIQ,EACR/J,KAAK+L,OAAOnC,MACV5J,KAAKgM,MAAQxL,EAAE+I,IAAM,EAAIvJ,KAAKgM,QAAUxK,EAAK0D,EAAIjC,GACjDjD,KAAKgM,MAAQnL,EAAE0I,IAAM,EAAIvJ,KAAKgM,QAAUvK,EAAKyD,EAAI/B,IAKvDnD,KAAKmM,GAAKnM,KAAKoM,GAAK,KACpBpM,KAAK+L,OAAOpC,SACd,EAxBS,WAyBTC,MAAOnJ,EAAA,SAASD,EAAGK,GACjBb,KAAKmM,GAAGE,MAAM7L,GACdR,KAAKoM,GAAGC,MAAMxL,EAChB,EAHO,UAMOJ,EAAA,SAAS8L,EAAOT,GAE9B,SAASU,EAAO3F,GACd,OAAgB,IAATiF,EAAa,IAAIH,GAAM9E,GAAW,IAAIgF,GAAOhF,EAASiF,EAC/D,CAMA,OARSrL,EAAA+L,EAAA,UAITA,EAAOV,KAAO,SAASA,GACrB,OAAOS,GAAQT,EACjB,EAEOU,CACT,EAXgB,SAAD,CAWZ,KCvDa5C,EAAAA,GAAAA,WAWAnJ,EAAAmM,GAAA,YAKhBA,GAASlM,UAAY,CACnB0J,UAAW3J,EAAA,WACTT,KAAKiM,MAAQ,CACf,EAFW,aAGX5B,QAAS5J,EAAA,WACPT,KAAKiM,MAAQpB,GACf,EAFS,WAGTnB,UAAWjJ,EAAA,WACTT,KAAKC,IAAMD,KAAKG,IAAMH,KAAK0M,IAC3B1M,KAAKE,IAAMF,KAAKI,IAAMJ,KAAK2M,IAAM9B,IACjC7K,KAAKkM,OAAS,CAChB,EAJW,aAKXvC,QAASlJ,EAAA,WACP,OAAQT,KAAKkM,QACX,KAAK,EAAGlM,KAAK2I,SAAS5H,OAAOf,KAAK0M,IAAK1M,KAAK2M,KAAM,MAClD,KAAK,EAAG/C,GAAM5J,KAAMA,KAAKG,IAAKH,KAAKI,MAEjCJ,KAAKiM,OAAyB,IAAfjM,KAAKiM,OAA+B,IAAhBjM,KAAKkM,SAAelM,KAAK2I,SAAS7H,YACzEd,KAAKiM,MAAQ,EAAIjM,KAAKiM,KACxB,EAPS,WAQTrC,MAAOnJ,EAAA,SAASD,EAAGK,GAEjB,OADAL,GAAKA,EAAGK,GAAKA,EACLb,KAAKkM,QACX,KAAK,EAAGlM,KAAKkM,OAAS,EAAGlM,KAAKiM,MAAQjM,KAAK2I,SAAS5H,OAAOP,EAAGK,GAAKb,KAAK2I,SAAS/H,OAAOJ,EAAGK,GAAI,MAC/F,KAAK,EAAGb,KAAKkM,OAAS,EAAGlM,KAAKG,IAAMK,EAAGR,KAAKI,IAAMS,EAAG,MACrD,KAAK,EAAGb,KAAKkM,OAAS,EACtB,QAAStC,GAAM5J,KAAMQ,EAAGK,GAE1Bb,KAAKC,IAAMD,KAAKG,IAAKH,KAAKG,IAAMH,KAAK0M,IAAK1M,KAAK0M,IAAMlM,EACrDR,KAAKE,IAAMF,KAAKI,IAAKJ,KAAKI,IAAMJ,KAAK2M,IAAK3M,KAAK2M,IAAM9L,CACvD,EAVO,UAaOJ,EAAA,SAAS8L,EAAOM,GAE9B,SAASE,EAASlG,GAChB,OAAO,IAAI+F,GAAS/F,EAASgG,EAC/B,CAMA,OARSpM,EAAAsM,EAAA,YAITA,EAASF,QAAU,SAASA,GAC1B,OAAON,GAAQM,EACjB,EAEOE,CACT,EAXgB,SAAD,CAWZ,GCzDatM,EAAAymC,GAAA,kBAKhBA,GAAexmC,UAAY,CACzB0J,UAAWm1B,GACXl1B,QAASk1B,GACT71B,UAAWjJ,EAAA,WACTT,KAAKC,IAAMD,KAAKG,IAAMH,KAAK0M,IAAM1M,KAAKonC,IAAMpnC,KAAKqnC,IAAMrnC,KAAKsnC,IAC5DtnC,KAAKE,IAAMF,KAAKI,IAAMJ,KAAK2M,IAAM3M,KAAKunC,IAAMvnC,KAAKwnC,IAAMxnC,KAAKynC,IAAM58B,IAClE7K,KAAKkM,OAAS,CAChB,EAJW,aAKXvC,QAASlJ,EAAA,WACP,OAAQT,KAAKkM,QACX,KAAK,EACHlM,KAAK2I,SAAS/H,OAAOZ,KAAKonC,IAAKpnC,KAAKunC,KACpCvnC,KAAK2I,SAAS7H,YACd,MAEF,KAAK,EACHd,KAAK2I,SAAS5H,OAAOf,KAAKonC,IAAKpnC,KAAKunC,KACpCvnC,KAAK2I,SAAS7H,YACd,MAEF,KAAK,EACHd,KAAK4J,MAAM5J,KAAKonC,IAAKpnC,KAAKunC,KAC1BvnC,KAAK4J,MAAM5J,KAAKqnC,IAAKrnC,KAAKwnC,KAC1BxnC,KAAK4J,MAAM5J,KAAKsnC,IAAKtnC,KAAKynC,KAIhC,EAnBS,WAoBT79B,MAAOnJ,EAAA,SAASD,EAAGK,GAEjB,OADAL,GAAKA,EAAGK,GAAKA,EACLb,KAAKkM,QACX,KAAK,EAAGlM,KAAKkM,OAAS,EAAGlM,KAAKonC,IAAM5mC,EAAGR,KAAKunC,IAAM1mC,EAAG,MACrD,KAAK,EAAGb,KAAKkM,OAAS,EAAGlM,KAAK2I,SAAS/H,OAAOZ,KAAKqnC,IAAM7mC,EAAGR,KAAKwnC,IAAM3mC,GAAI,MAC3E,KAAK,EAAGb,KAAKkM,OAAS,EAAGlM,KAAKsnC,IAAM9mC,EAAGR,KAAKynC,IAAM5mC,EAAG,MACrD,QAAS+I,GAAM5J,KAAMQ,EAAGK,GAE1Bb,KAAKC,IAAMD,KAAKG,IAAKH,KAAKG,IAAMH,KAAK0M,IAAK1M,KAAK0M,IAAMlM,EACrDR,KAAKE,IAAMF,KAAKI,IAAKJ,KAAKI,IAAMJ,KAAK2M,IAAK3M,KAAK2M,IAAM9L,CACvD,EAVO,UAaOJ,EAAA,SAAS8L,EAAOM,GAE9B,SAASE,EAASlG,GAChB,OAAO,IAAIqgC,GAAergC,EAASgG,EACrC,CAMA,OARSpM,EAAAsM,EAAA,YAITA,EAASF,QAAU,SAASA,GAC1B,OAAON,GAAQM,EACjB,EAEOE,CACT,EAXgB,SAAD,CAWZ,GC1DatM,EAAA0mC,GAAA,gBAKhBA,GAAazmC,UAAY,CACvB0J,UAAW3J,EAAA,WACTT,KAAKiM,MAAQ,CACf,EAFW,aAGX5B,QAAS5J,EAAA,WACPT,KAAKiM,MAAQpB,GACf,EAFS,WAGTnB,UAAWjJ,EAAA,WACTT,KAAKC,IAAMD,KAAKG,IAAMH,KAAK0M,IAC3B1M,KAAKE,IAAMF,KAAKI,IAAMJ,KAAK2M,IAAM9B,IACjC7K,KAAKkM,OAAS,CAChB,EAJW,aAKXvC,QAASlJ,EAAA,YACHT,KAAKiM,OAAyB,IAAfjM,KAAKiM,OAA+B,IAAhBjM,KAAKkM,SAAelM,KAAK2I,SAAS7H,YACzEd,KAAKiM,MAAQ,EAAIjM,KAAKiM,KACxB,EAHS,WAITrC,MAAOnJ,EAAA,SAASD,EAAGK,GAEjB,OADAL,GAAKA,EAAGK,GAAKA,EACLb,KAAKkM,QACX,KAAK,EAAGlM,KAAKkM,OAAS,EAAG,MACzB,KAAK,EAAGlM,KAAKkM,OAAS,EAAG,MACzB,KAAK,EAAGlM,KAAKkM,OAAS,EAAGlM,KAAKiM,MAAQjM,KAAK2I,SAAS5H,OAAOf,KAAK0M,IAAK1M,KAAK2M,KAAO3M,KAAK2I,SAAS/H,OAAOZ,KAAK0M,IAAK1M,KAAK2M,KAAM,MAC3H,KAAK,EAAG3M,KAAKkM,OAAS,EACtB,QAAStC,GAAM5J,KAAMQ,EAAGK,GAE1Bb,KAAKC,IAAMD,KAAKG,IAAKH,KAAKG,IAAMH,KAAK0M,IAAK1M,KAAK0M,IAAMlM,EACrDR,KAAKE,IAAMF,KAAKI,IAAKJ,KAAKI,IAAMJ,KAAK2M,IAAK3M,KAAK2M,IAAM9L,CACvD,EAXO,UAcOJ,EAAA,SAAS8L,EAAOM,GAE9B,SAASE,EAASlG,GAChB,OAAO,IAAIsgC,GAAatgC,EAASgG,EACnC,CAMA,OARSpM,EAAAsM,EAAA,YAITA,EAASF,QAAU,SAASA,GAC1B,OAAON,GAAQM,EACjB,EAEOE,CACT,EAXgB,SAAD,CAWZ,GC7CanD,EAAAA,GAAAA,WAuBPnJ,EAAA8M,GAAA,cAKTA,GAAW7M,UAAY,CACrB0J,UAAW3J,EAAA,WACTT,KAAKiM,MAAQ,CACf,EAFW,aAGX5B,QAAS5J,EAAA,WACPT,KAAKiM,MAAQpB,GACf,EAFS,WAGTnB,UAAWjJ,EAAA,WACTT,KAAKC,IAAMD,KAAKG,IAAMH,KAAK0M,IAC3B1M,KAAKE,IAAMF,KAAKI,IAAMJ,KAAK2M,IAAM9B,IACjC7K,KAAKgN,OAAShN,KAAKkN,OAASlN,KAAKoN,OACjCpN,KAAKiN,QAAUjN,KAAKmN,QAAUnN,KAAKqN,QACnCrN,KAAKkM,OAAS,CAChB,EANW,aAOXvC,QAASlJ,EAAA,WACP,OAAQT,KAAKkM,QACX,KAAK,EAAGlM,KAAK2I,SAAS5H,OAAOf,KAAK0M,IAAK1M,KAAK2M,KAAM,MAClD,KAAK,EAAG3M,KAAK4J,MAAM5J,KAAK0M,IAAK1M,KAAK2M,MAEhC3M,KAAKiM,OAAyB,IAAfjM,KAAKiM,OAA+B,IAAhBjM,KAAKkM,SAAelM,KAAK2I,SAAS7H,YACzEd,KAAKiM,MAAQ,EAAIjM,KAAKiM,KACxB,EAPS,WAQTrC,MAAOnJ,EAAA,SAASD,EAAGK,GAGjB,GAFAL,GAAKA,EAAGK,GAAKA,EAETb,KAAKkM,OAAQ,CACf,IAAIwB,EAAM1N,KAAK0M,IAAMlM,EACjBmN,EAAM3N,KAAK2M,IAAM9L,EACrBb,KAAKoN,OAAS1N,KAAK4C,KAAKtC,KAAKqN,QAAU3N,KAAKkO,IAAIF,EAAMA,EAAMC,EAAMA,EAAK3N,KAAKyN,QAC9E,CAEA,OAAQzN,KAAKkM,QACX,KAAK,EAAGlM,KAAKkM,OAAS,EAAGlM,KAAKiM,MAAQjM,KAAK2I,SAAS5H,OAAOP,EAAGK,GAAKb,KAAK2I,SAAS/H,OAAOJ,EAAGK,GAAI,MAC/F,KAAK,EAAGb,KAAKkM,OAAS,EAAG,MACzB,KAAK,EAAGlM,KAAKkM,OAAS,EACtB,QAAStC,GAAM5J,KAAMQ,EAAGK,GAG1Bb,KAAKgN,OAAShN,KAAKkN,OAAQlN,KAAKkN,OAASlN,KAAKoN,OAC9CpN,KAAKiN,QAAUjN,KAAKmN,QAASnN,KAAKmN,QAAUnN,KAAKqN,QACjDrN,KAAKC,IAAMD,KAAKG,IAAKH,KAAKG,IAAMH,KAAK0M,IAAK1M,KAAK0M,IAAMlM,EACrDR,KAAKE,IAAMF,KAAKI,IAAKJ,KAAKI,IAAMJ,KAAK2M,IAAK3M,KAAK2M,IAAM9L,CACvD,EApBO,UAuBT,MAAA6mC,GAAgBjnC,EAAA,SAAS8L,EAAOiB,GAE9B,SAASM,EAAWjH,GAClB,OAAO2G,EAAQ,IAAID,GAAW1G,EAAS2G,GAAS,IAAIZ,GAAS/F,EAAS,EACxE,CAMA,OARSpG,EAAAqN,EAAA,cAITA,EAAWN,MAAQ,SAASA,GAC1B,OAAOjB,GAAQiB,EACjB,EAEOM,CACT,EAXgB,SAAhB,CAWG,ICnFH,SAAS65B,GAAiB9gC,EAAS2G,GACjCxN,KAAK2I,SAAW9B,EAChB7G,KAAKyN,OAASD,CAChB,CCJA,SAASo6B,GAAe/gC,EAAS2G,GAC/BxN,KAAK2I,SAAW9B,EAChB7G,KAAKyN,OAASD,CAChB,CCNA,SAASO,GAAKvN,GACZ,OAAOA,EAAI,GAAI,EAAK,CACtB,CAMA,SAASwN,GAAOtC,EAAMtK,EAAIC,GACxB,IAAI4M,EAAKvC,EAAKvL,IAAMuL,EAAKzL,IACrBiO,EAAK9M,EAAKsK,EAAKvL,IACfgO,GAAMzC,EAAKtL,IAAMsL,EAAKxL,MAAQ+N,GAAMC,EAAK,IAAK,GAC9CE,GAAM/M,EAAKqK,EAAKtL,MAAQ8N,GAAMD,EAAK,IAAK,GACxCpF,GAAKsF,EAAKD,EAAKE,EAAKH,IAAOA,EAAKC,GACpC,OAAQH,GAAKI,GAAMJ,GAAKK,IAAO1O,KAAKmE,IAAInE,KAAKsC,IAAImM,GAAKzO,KAAKsC,IAAIoM,GAAK,GAAM1O,KAAKsC,IAAI6G,KAAO,CAC5F,CAGA,SAASwF,GAAO3C,EAAMxG,GACpB,IAAIzB,EAAIiI,EAAKvL,IAAMuL,EAAKzL,IACxB,OAAOwD,GAAK,GAAKiI,EAAKtL,IAAMsL,EAAKxL,KAAOuD,EAAIyB,GAAK,EAAIA,CACvD,CAKA,SAAS0E,GAAM8B,EAAMxE,EAAIC,GACvB,IAAI3F,EAAKkK,EAAKzL,IACVwB,EAAKiK,EAAKxL,IACVe,EAAKyK,EAAKvL,IACVe,EAAKwK,EAAKtL,IACV6C,GAAMhC,EAAKO,GAAM,EACrBkK,EAAK/C,SAASxH,cAAcK,EAAKyB,EAAIxB,EAAKwB,EAAKiE,EAAIjG,EAAKgC,EAAI/B,EAAK+B,EAAKkE,EAAIlG,EAAIC,EAChF,CAEA,SAASoN,GAAUzH,GACjB7G,KAAK2I,SAAW9B,CAClB,CFjCSpG,EAAAknC,GAAA,oBAKTA,GAAiBjnC,UAAY,CAC3B0J,UAAWm1B,GACXl1B,QAASk1B,GACT71B,UAAWjJ,EAAA,WACTT,KAAKC,IAAMD,KAAKG,IAAMH,KAAK0M,IAAM1M,KAAKonC,IAAMpnC,KAAKqnC,IAAMrnC,KAAKsnC,IAC5DtnC,KAAKE,IAAMF,KAAKI,IAAMJ,KAAK2M,IAAM3M,KAAKunC,IAAMvnC,KAAKwnC,IAAMxnC,KAAKynC,IAAM58B,IAClE7K,KAAKgN,OAAShN,KAAKkN,OAASlN,KAAKoN,OACjCpN,KAAKiN,QAAUjN,KAAKmN,QAAUnN,KAAKqN,QACnCrN,KAAKkM,OAAS,CAChB,EANW,aAOXvC,QAASlJ,EAAA,WACP,OAAQT,KAAKkM,QACX,KAAK,EACHlM,KAAK2I,SAAS/H,OAAOZ,KAAKonC,IAAKpnC,KAAKunC,KACpCvnC,KAAK2I,SAAS7H,YACd,MAEF,KAAK,EACHd,KAAK2I,SAAS5H,OAAOf,KAAKonC,IAAKpnC,KAAKunC,KACpCvnC,KAAK2I,SAAS7H,YACd,MAEF,KAAK,EACHd,KAAK4J,MAAM5J,KAAKonC,IAAKpnC,KAAKunC,KAC1BvnC,KAAK4J,MAAM5J,KAAKqnC,IAAKrnC,KAAKwnC,KAC1BxnC,KAAK4J,MAAM5J,KAAKsnC,IAAKtnC,KAAKynC,KAIhC,EAnBS,WAoBT79B,MAAOnJ,EAAA,SAASD,EAAGK,GAGjB,GAFAL,GAAKA,EAAGK,GAAKA,EAETb,KAAKkM,OAAQ,CACf,IAAIwB,EAAM1N,KAAK0M,IAAMlM,EACjBmN,EAAM3N,KAAK2M,IAAM9L,EACrBb,KAAKoN,OAAS1N,KAAK4C,KAAKtC,KAAKqN,QAAU3N,KAAKkO,IAAIF,EAAMA,EAAMC,EAAMA,EAAK3N,KAAKyN,QAC9E,CAEA,OAAQzN,KAAKkM,QACX,KAAK,EAAGlM,KAAKkM,OAAS,EAAGlM,KAAKonC,IAAM5mC,EAAGR,KAAKunC,IAAM1mC,EAAG,MACrD,KAAK,EAAGb,KAAKkM,OAAS,EAAGlM,KAAK2I,SAAS/H,OAAOZ,KAAKqnC,IAAM7mC,EAAGR,KAAKwnC,IAAM3mC,GAAI,MAC3E,KAAK,EAAGb,KAAKkM,OAAS,EAAGlM,KAAKsnC,IAAM9mC,EAAGR,KAAKynC,IAAM5mC,EAAG,MACrD,QAAS+I,GAAM5J,KAAMQ,EAAGK,GAG1Bb,KAAKgN,OAAShN,KAAKkN,OAAQlN,KAAKkN,OAASlN,KAAKoN,OAC9CpN,KAAKiN,QAAUjN,KAAKmN,QAASnN,KAAKmN,QAAUnN,KAAKqN,QACjDrN,KAAKC,IAAMD,KAAKG,IAAKH,KAAKG,IAAMH,KAAK0M,IAAK1M,KAAK0M,IAAMlM,EACrDR,KAAKE,IAAMF,KAAKI,IAAKJ,KAAKI,IAAMJ,KAAK2M,IAAK3M,KAAK2M,IAAM9L,CACvD,EApBO,UAuBOJ,EAAA,SAAS8L,EAAOiB,GAE9B,SAASM,EAAWjH,GAClB,OAAO2G,EAAQ,IAAIm6B,GAAiB9gC,EAAS2G,GAAS,IAAI05B,GAAergC,EAAS,EACpF,CAMA,OARSpG,EAAAqN,EAAA,cAITA,EAAWN,MAAQ,SAASA,GAC1B,OAAOjB,GAAQiB,EACjB,EAEOM,CACT,EAXgB,SAAD,CAWZ,ICtEMrN,EAAAmnC,GAAA,kBAKTA,GAAelnC,UAAY,CACzB0J,UAAW3J,EAAA,WACTT,KAAKiM,MAAQ,CACf,EAFW,aAGX5B,QAAS5J,EAAA,WACPT,KAAKiM,MAAQpB,GACf,EAFS,WAGTnB,UAAWjJ,EAAA,WACTT,KAAKC,IAAMD,KAAKG,IAAMH,KAAK0M,IAC3B1M,KAAKE,IAAMF,KAAKI,IAAMJ,KAAK2M,IAAM9B,IACjC7K,KAAKgN,OAAShN,KAAKkN,OAASlN,KAAKoN,OACjCpN,KAAKiN,QAAUjN,KAAKmN,QAAUnN,KAAKqN,QACnCrN,KAAKkM,OAAS,CAChB,EANW,aAOXvC,QAASlJ,EAAA,YACHT,KAAKiM,OAAyB,IAAfjM,KAAKiM,OAA+B,IAAhBjM,KAAKkM,SAAelM,KAAK2I,SAAS7H,YACzEd,KAAKiM,MAAQ,EAAIjM,KAAKiM,KACxB,EAHS,WAITrC,MAAOnJ,EAAA,SAASD,EAAGK,GAGjB,GAFAL,GAAKA,EAAGK,GAAKA,EAETb,KAAKkM,OAAQ,CACf,IAAIwB,EAAM1N,KAAK0M,IAAMlM,EACjBmN,EAAM3N,KAAK2M,IAAM9L,EACrBb,KAAKoN,OAAS1N,KAAK4C,KAAKtC,KAAKqN,QAAU3N,KAAKkO,IAAIF,EAAMA,EAAMC,EAAMA,EAAK3N,KAAKyN,QAC9E,CAEA,OAAQzN,KAAKkM,QACX,KAAK,EAAGlM,KAAKkM,OAAS,EAAG,MACzB,KAAK,EAAGlM,KAAKkM,OAAS,EAAG,MACzB,KAAK,EAAGlM,KAAKkM,OAAS,EAAGlM,KAAKiM,MAAQjM,KAAK2I,SAAS5H,OAAOf,KAAK0M,IAAK1M,KAAK2M,KAAO3M,KAAK2I,SAAS/H,OAAOZ,KAAK0M,IAAK1M,KAAK2M,KAAM,MAC3H,KAAK,EAAG3M,KAAKkM,OAAS,EACtB,QAAStC,GAAM5J,KAAMQ,EAAGK,GAG1Bb,KAAKgN,OAAShN,KAAKkN,OAAQlN,KAAKkN,OAASlN,KAAKoN,OAC9CpN,KAAKiN,QAAUjN,KAAKmN,QAASnN,KAAKmN,QAAUnN,KAAKqN,QACjDrN,KAAKC,IAAMD,KAAKG,IAAKH,KAAKG,IAAMH,KAAK0M,IAAK1M,KAAK0M,IAAMlM,EACrDR,KAAKE,IAAMF,KAAKI,IAAKJ,KAAKI,IAAMJ,KAAK2M,IAAK3M,KAAK2M,IAAM9L,CACvD,EArBO,UAwBOJ,EAAA,SAAS8L,EAAOiB,GAE9B,SAASM,EAAWjH,GAClB,OAAO2G,EAAQ,IAAIo6B,GAAe/gC,EAAS2G,GAAS,IAAI25B,GAAatgC,EAAS,EAChF,CAMA,OARSpG,EAAAqN,EAAA,cAITA,EAAWN,MAAQ,SAASA,GAC1B,OAAOjB,GAAQiB,EACjB,EAEOM,CACT,EAXgB,SAAD,CAWZ,IC7DMrN,EAAAsN,GAAA,QAQAtN,EAAAuN,GAAA,UAUAvN,EAAA4N,GAAA,UAQA5N,EAAAmJ,GAAA,SASAnJ,EAAA6N,GAAA,aAITA,GAAU5N,UAAY,CACpB0J,UAAW3J,EAAA,WACTT,KAAKiM,MAAQ,CACf,EAFW,aAGX5B,QAAS5J,EAAA,WACPT,KAAKiM,MAAQpB,GACf,EAFS,WAGTnB,UAAWjJ,EAAA,WACTT,KAAKC,IAAMD,KAAKG,IAChBH,KAAKE,IAAMF,KAAKI,IAChBJ,KAAKgP,IAAMnE,IACX7K,KAAKkM,OAAS,CAChB,EALW,aAMXvC,QAASlJ,EAAA,WACP,OAAQT,KAAKkM,QACX,KAAK,EAAGlM,KAAK2I,SAAS5H,OAAOf,KAAKG,IAAKH,KAAKI,KAAM,MAClD,KAAK,EAAGwJ,GAAM5J,KAAMA,KAAKgP,IAAKX,GAAOrO,KAAMA,KAAKgP,OAE9ChP,KAAKiM,OAAyB,IAAfjM,KAAKiM,OAA+B,IAAhBjM,KAAKkM,SAAelM,KAAK2I,SAAS7H,YACzEd,KAAKiM,MAAQ,EAAIjM,KAAKiM,KACxB,EAPS,WAQTrC,MAAOnJ,EAAA,SAASD,EAAGK,GACjB,IAAIsG,EAAK0D,IAGT,GADQhK,GAAKA,GAAbL,GAAKA,KACKR,KAAKG,KAAOU,IAAMb,KAAKI,IAAjC,CACA,OAAQJ,KAAKkM,QACX,KAAK,EAAGlM,KAAKkM,OAAS,EAAGlM,KAAKiM,MAAQjM,KAAK2I,SAAS5H,OAAOP,EAAGK,GAAKb,KAAK2I,SAAS/H,OAAOJ,EAAGK,GAAI,MAC/F,KAAK,EAAGb,KAAKkM,OAAS,EAAG,MACzB,KAAK,EAAGlM,KAAKkM,OAAS,EAAGtC,GAAM5J,KAAMqO,GAAOrO,KAAMmH,EAAK6G,GAAOhO,KAAMQ,EAAGK,IAAKsG,GAAK,MACjF,QAASyC,GAAM5J,KAAMA,KAAKgP,IAAK7H,EAAK6G,GAAOhO,KAAMQ,EAAGK,IAGtDb,KAAKC,IAAMD,KAAKG,IAAKH,KAAKG,IAAMK,EAChCR,KAAKE,IAAMF,KAAKI,IAAKJ,KAAKI,IAAMS,EAChCb,KAAKgP,IAAM7H,CAV2B,CAWxC,EAfO,UAsBc8H,OAAOC,OAAOZ,GAAU5N,WAAYkJ,MAAQ,SAASpJ,EAAGK,GAC7EyN,GAAU5N,UAAUkJ,MAAMuF,KAAKnP,KAAMa,EAAGL,EAC1C,EC/EA,IAAIqnC,GAA4B,mBAAXC,QAAoD,iBAApBA,OAAOC,SAAwB,SAAUC,GAC5F,cAAcA,CAChB,EAAI,SAAUA,GACZ,OAAOA,GAAyB,mBAAXF,QAAyBE,EAAIrnC,cAAgBmnC,QAAUE,IAAQF,OAAOpnC,UAAY,gBAAkBsnC,CAC3H,EAYIC,GAAiBxnC,EAAA,SAAUynC,EAAUC,GACvC,KAAMD,aAAoBC,GACxB,MAAM,IAAI9M,UAAU,oCAExB,EAJqB,kBAMjB+M,GAAc,WAChB,SAASC,EAAiBroB,EAAQsoB,GAChC,IAAA,IAAS/+B,EAAI,EAAGA,EAAI++B,EAAM7/B,OAAQc,IAAK,CACrC,IAAIg/B,EAAaD,EAAM/+B,GACvBg/B,EAAWC,WAAaD,EAAWC,aAAc,EACjDD,EAAWE,cAAe,EACtB,UAAWF,IAAYA,EAAWG,UAAW,GACjDz5B,OAAO05B,eAAe3oB,EAAQuoB,EAAWK,IAAKL,EAChD,CACF,CAEA,OAVS9nC,EAAA4nC,EAAA,oBAUF,SAAUF,EAAaU,EAAYC,GAGxC,OAFID,GAAYR,EAAiBF,EAAYznC,UAAWmoC,GACpDC,GAAaT,EAAiBF,EAAaW,GACxCX,CACT,CACF,CAhBkB,GAwBdY,GAAW95B,OAAO+5B,QAAU,SAAUhpB,GACxC,IAAA,IAASzW,EAAI,EAAGA,EAAItC,UAAUwB,OAAQc,IAAK,CACzC,IAAIqpB,EAAS3rB,UAAUsC,GAEvB,IAAA,IAASq/B,KAAOhW,EACV3jB,OAAOvO,UAAU8gC,eAAeryB,KAAKyjB,EAAQgW,KAC/C5oB,EAAO4oB,GAAOhW,EAAOgW,GAG3B,CAEA,OAAO5oB,CACT,EAEI4P,GAAMnvB,EAAA,SAASmvB,EAAI+R,EAAQsH,EAAUC,GACxB,OAAXvH,IAAiBA,EAASwH,SAASzoC,WACvC,IAAI0oC,EAAOn6B,OAAOo6B,yBAAyB1H,EAAQsH,GAEnD,QAAa,IAATG,EAAoB,CACtB,IAAIrX,EAAS9iB,OAAOq6B,eAAe3H,GAEnC,OAAe,OAAX5P,OACF,EAEOnC,EAAImC,EAAQkX,EAAUC,EAEjC,CAAA,GAAW,UAAWE,EACpB,OAAOA,EAAKp+B,MAEZ,IAAIu+B,EAASH,EAAKxZ,IAElB,YAAe,IAAX2Z,EAIGA,EAAOp6B,KAAK+5B,QAJnB,CAMJ,EAvBU,OAyBNM,GAAW/oC,EAAA,SAAUgpC,EAAUC,GACjC,GAA0B,mBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIrO,UAAU,kEAAoEqO,GAG1FD,EAAS/oC,UAAYuO,OAAOC,OAAOw6B,GAAcA,EAAWhpC,UAAW,CACrEC,YAAa,CACXqK,MAAOy+B,EACPjB,YAAY,EACZE,UAAU,EACVD,cAAc,KAGdiB,WAAmBC,eAAiB16B,OAAO06B,eAAeF,EAAUC,GAAcD,EAASG,UAAYF,EAC7G,EAde,YA0BXG,GAA4BppC,EAAA,SAAUqpC,EAAM36B,GAC9C,IAAK26B,EACH,MAAM,IAAIC,eAAe,6DAG3B,OAAO56B,GAAyB,iBAATA,GAAqC,mBAATA,EAA8B26B,EAAP36B,CAC5E,EANgC,6BA0B5B66B,cAA8BniB,GAChC,GAAI3d,MAAM8zB,QAAQnW,GAAM,CACtB,IAAA,IAASte,EAAI,EAAG0gC,EAAO//B,MAAM2d,EAAIpf,QAASc,EAAIse,EAAIpf,OAAQc,IAAK0gC,EAAK1gC,GAAKse,EAAIte,GAE7E,OAAO0gC,CACT,CACE,OAAO//B,MAAMggC,KAAKriB,EAEtB,EARwB,qBAUpBsiB,cACF,SAASA,EAAWC,GAClB,IAAIC,EAASD,EAAK5pC,EACdA,OAAe,IAAX6pC,EAAuB,EAAIA,EAC/BC,EAASF,EAAKvpC,EACdA,OAAe,IAAXypC,EAAuB,EAAIA,EAC/BC,EAAKH,EAAKG,GACVC,EAAKJ,EAAKI,GACVC,EAAUL,EAAKjnC,GACfA,OAAiB,IAAZsnC,EAAwB,EAAIA,EACjCC,EAAUN,EAAKnnC,GACfA,OAAiB,IAAZynC,EAAwB,EAAIA,EACjCC,EAAaP,EAAKtiB,MAClBA,OAAuB,IAAf6iB,EAA2B,OAASA,EAC5CrhC,EAAO8gC,EAAK9gC,KACZwL,EAAOs1B,EAAKt1B,KACZ81B,EAAUR,EAAKQ,QACfC,EAAYT,EAAKS,UACjBC,EAAOV,EAAKU,KACZhuB,EAAUstB,EAAKttB,QACf+C,EAAKuqB,EAAKvqB,GACVkrB,EAAYX,EAAKW,UACrB9C,GAAejoC,KAAMmqC,GAErBnqC,KAAKgrC,SAAa,IAAPT,EAAmBA,EAAK/pC,EAAIyC,EACvCjD,KAAKirC,SAAa,IAAPT,EAAmBA,EAAK3pC,EAAIsC,EACvCnD,KAAKmM,GAAK3L,EACVR,KAAKoM,GAAKvL,EACVb,KAAKkrC,OAASpjB,EACd9nB,KAAK6f,GAAKA,EACV7f,KAAKmrC,WAAaJ,GAAa,GAE/B/qC,KAAKgd,MAAQlI,GAAQ,GACrB9U,KAAKsJ,KAAOA,EAEZtJ,KAAK8qC,KAAOA,GAAQ,CAAA,EACpB9qC,KAAK6qC,UAAYA,GAAa,CAAA,EAC9B7qC,KAAK4qC,QAAUA,GAAW,CAAA,EAE1B5qC,KAAK8c,QAAUA,GAAW,EAC5B,CAgKA,OAvMSrc,EAAA0pC,EAAA,cAyCT/B,GAAY+B,EAAY,CAAC,CACvBvB,IAAK,iBACL59B,mBACMhL,KAAK8U,KAAKs2B,cACZprC,KAAK8U,KAAKs2B,cACNprC,KAAK8U,KAAK81B,SAA2E,IAAhE5qC,KAAK8U,KAAK81B,QAAQp5B,UAAU,iBAAiB4f,QAAQ3oB,QAC5EzI,KAAK8U,KAAKu2B,gBAGhB,EAPO,mBAQN,CACDzC,IAAK,kBACL59B,mBACEhL,KAAK8U,KAAKw2B,iBAAmBtrC,KAAK8U,KAAKw2B,iBACzC,EAFO,oBAGN,CACD1C,IAAK,eACL59B,mBACMhL,KAAK8U,KAAKy2B,YACZvrC,KAAK8U,KAAKy2B,YAE4D,IAAlEvrC,KAAK8U,KAAK+1B,UAAUr5B,UAAU,iBAAiB4f,QAAQ3oB,QACzDzI,KAAK8U,KAAK02B,kBAGZxrC,KAAK8U,KAAK22B,aAEd,EAVO,iBAWN,CACD7C,IAAK,YACLhZ,iBACE,OAAO5vB,KAAKmrC,UACd,EAFK,UAGLzc,IAAKjuB,EAAA,SAAgBsqC,GACnB/qC,KAAKmrC,WAAaJ,EACd/qC,KAAK8U,KAAK42B,cAAc1rC,KAAK8U,KAAK42B,cACxC,EAHK,WAIJ,CACD9C,IAAK,OACLhZ,iBACE,OAAO5vB,KAAKgd,KACd,EAFK,UAGL0R,IAAKjuB,EAAA,SAAgBqU,GACnB9U,KAAKgd,MAAQlI,EACb9U,KAAKsrC,iBACP,EAHK,WAIJ,CACD1C,IAAK,IACLhZ,iBACE,OAAO5vB,KAAKmM,EACd,EAFK,UAGLuiB,IAAKjuB,EAAA,SAAgBD,GACnBR,KAAKmM,GAAK3L,EACVR,KAAK2rC,gBACP,EAHK,WAIJ,CACD/C,IAAK,IACLhZ,iBACE,OAAO5vB,KAAKoM,EACd,EAFK,UAGLsiB,IAAKjuB,EAAA,SAAgBI,GACnBb,KAAKoM,GAAKvL,EACVb,KAAK2rC,gBACP,EAHK,WAIJ,CACD/C,IAAK,QACLhZ,iBACE,OAAO5vB,KAAKkrC,MACd,EAFK,UAGLxc,IAAKjuB,EAAA,SAAgBqnB,GACnB9nB,KAAKkrC,OAASpjB,EACd9nB,KAAK2rC,gBACP,EAHK,WAIJ,CACD/C,IAAK,KACLhZ,iBACE,OAAO5vB,KAAKgrC,GACd,EAFK,UAGLtc,IAAKjuB,EAAA,SAAgBwC,GACnBjD,KAAKgrC,IAAM/nC,EACXjD,KAAK4rC,cACP,EAHK,WAIJ,CACDhD,IAAK,KACLhZ,iBACE,OAAO5vB,KAAKirC,GACd,EAFK,UAGLvc,IAAKjuB,EAAA,SAAgB0C,GACnBnD,KAAKirC,IAAM9nC,EACXnD,KAAK4rC,cACP,EAHK,WAIJ,CACDhD,IAAK,KACLla,IAAKjuB,EAAA,SAAgB8pC,GACnBvqC,KAAKgrC,IAAMT,EAAKvqC,KAAKmM,GACrBnM,KAAK4rC,cACP,EAHK,WAIJ,CACDhD,IAAK,KACLla,IAAKjuB,EAAA,SAAgB+pC,GACnBxqC,KAAKirC,IAAMT,EAAKxqC,KAAKoM,GACrBpM,KAAK4rC,cACP,EAHK,WAIJ,CACDhD,IAAK,SACLhZ,iBACE,MAAO,CAAEpvB,EAAGR,KAAKgrC,IAAKnqC,EAAGb,KAAKirC,IAChC,EAFK,UAGLvc,IAAKjuB,EAAA,SAAgBorC,GACnB,IAAIrrC,EAAIqrC,EAAMrrC,EACVK,EAAIgrC,EAAMhrC,EAEdb,KAAKgrC,IAAMxqC,EACXR,KAAKirC,IAAMpqC,EACXb,KAAK4rC,cACP,EAPK,WAQJ,CACDhD,IAAK,WACLhZ,iBACE,MAAO,CAAEpvB,EAAGR,KAAKmM,GAAItL,EAAGb,KAAKoM,GAC/B,EAFK,UAGLsiB,IAAKjuB,EAAA,SAAgBqrC,GACnB,IAAItrC,EAAIsrC,EAAMtrC,EACVK,EAAIirC,EAAMjrC,EAEdb,KAAKmM,GAAK3L,EACVR,KAAKoM,GAAKvL,EACVb,KAAK2rC,gBACP,EAPK,WAQJ,CACD/C,IAAK,cACLhZ,iBACE,MAAO,CACLpvB,EAAGR,KAAKmM,GAAKnM,KAAKgrC,IAClBnqC,EAAGb,KAAKoM,GAAKpM,KAAKirC,IAEtB,EALK,WAMJ,CACDrC,IAAK,OACLhZ,iBACE,IAAImc,EAAO,CACTvrC,EAAGR,KAAKmM,GACRtL,EAAGb,KAAKoM,GACRnJ,GAAIjD,KAAKgrC,IACT7nC,GAAInD,KAAKirC,KAWX,OARIjrC,KAAKsJ,MAAQ2F,OAAOstB,KAAKv8B,KAAKsJ,MAAMb,OAAS,IAAGsjC,EAAKziC,KAAOtJ,KAAKsJ,MACjEtJ,KAAK8U,OAAMi3B,EAAKj3B,KAAO9U,KAAK8U,MAC5B9U,KAAKmrC,aAAYY,EAAKhB,UAAY/qC,KAAKmrC,YAEvCl8B,OAAOstB,KAAKv8B,KAAK6qC,WAAWpiC,OAAS,IAAGsjC,EAAKlB,UAAY7qC,KAAK6qC,WAC9D57B,OAAOstB,KAAKv8B,KAAK4qC,SAASniC,OAAS,IAAGsjC,EAAKnB,QAAU5qC,KAAK4qC,SAC1D37B,OAAOstB,KAAKv8B,KAAK8qC,MAAMriC,OAAS,IAAGsjC,EAAKjB,KAAO9qC,KAAK8qC,MAEjDiB,CACT,EAjBK,aAmBA5B,CACT,IAEI6B,cACF,SAASA,EAAqB5B,GAC5B,IAAI6B,EAAc7B,EAAK6B,YACnBC,EAAY9B,EAAK8B,UACjBC,EAAmB/B,EAAK+B,iBAC5BlE,GAAejoC,KAAMgsC,GAErBhsC,KAAKksC,UAAYA,EACjBlsC,KAAKmsC,iBAAmBA,EACxBnsC,KAAKisC,YAAcA,CACrB,CAiHA,OA1HSxrC,EAAAurC,EAAA,wBAWT5D,GAAY4D,EAAsB,CAAC,CACjCpD,IAAK,aACL59B,MAAOvK,EAAA,SAAoB2rC,GACzBpsC,KAAKisC,YAAY/f,QAAQ,SAAUjoB,GACjCA,EAAE6Q,UAAO,EACT7Q,EAAE2mC,QAAUwB,GAAeA,EAAYxB,SAAW3mC,EAAE2mC,QACpD3mC,EAAE4mC,UAAYuB,GAAeA,EAAYvB,WAAa5mC,EAAE4mC,UACxD5mC,EAAE6mC,KAAOsB,GAAeA,EAAYtB,MAAQ7mC,EAAE6mC,IAChD,EACF,EAPO,eAQN,CACDlC,IAAK,2BACL59B,mBACE,IAAIqhC,EAAQrsC,KAEZA,KAAKisC,YAAY/f,QAAQ,SAAUjoB,GACjCA,EAAE6Q,KAAKw3B,yBAAyBD,EAAMH,UACxC,EACF,EANO,6BAON,CACDtD,IAAK,WACL59B,MAAOvK,EAAA,SAAkB8rC,GACvBvsC,KAAKisC,YAAY/f,QAAQ,SAAU1jB,GAC7BA,EAAEsM,OACJtM,EAAEsM,KAAK03B,SAAWD,EAClB/jC,EAAEsM,KAAK23B,iBAEX,EACF,EAPO,aAQN,CACD7D,IAAK,gBACL59B,MAAOvK,EAAA,SAAuBqc,GAC5B9c,KAAKisC,YAAY/f,QAAQ,SAAU1jB,GACjCA,EAAEsU,QAAUA,EACRtU,EAAEsM,MACJgI,EAAQoP,QAAQ,SAAUjoB,GACpBuE,EAAEsM,KAAK7Q,KACTuE,EAAEsM,KAAK7Q,GAAGwO,QAAUjK,EAAEsM,KAAK7Q,GAAGwO,SAC9BjK,EAAEsM,KAAK7Q,QAAK,EAEhB,EAEJ,EACF,EAZO,kBAaN,CACD2kC,IAAK,iBACL59B,MAAOvK,EAAA,SAAwBisC,GAC7B1sC,KAAKisC,YAAY/f,QAAQ,SAAU1jB,GAC7BA,EAAEsM,MAAQtM,EAAEsM,KAAK63B,gBACnBnkC,EAAEsM,KAAK63B,eAAeD,EAE1B,EACF,EANO,mBAON,CACD9D,IAAK,aACL59B,mBACEhL,KAAKisC,YAAY/f,QAAQ,SAAU1jB,GAC7BA,EAAEsM,MAAQtM,EAAEsM,KAAK83B,UACnBpkC,EAAEsM,KAAK83B,UAEX,EACF,EANO,eAON,CACDhE,IAAK,oBACL59B,MAAOvK,EAAA,SAA2BosC,GAChC7sC,KAAKisC,YAAY/f,QAAQ,SAAU1jB,GAC7BA,EAAEsM,OACJtM,EAAEsM,KAAK+3B,YAAcA,EAEzB,EACF,EANO,sBAON,CACDjE,IAAK,OACLhZ,iBACE,IAAIkd,EAAS9sC,KAEb,OAAOA,KAAKisC,YAAYx3B,IAAI,SAAUjM,GACpC,IAAIujC,EAAOvjC,EAAEujC,KASb,OARIe,EAAOX,kBAAoB3jC,EAAEc,OAC/ByiC,EAAKziC,KAAO,CAAA,EACZ2F,OAAOstB,KAAKuQ,EAAOX,kBAAkBjgB,QAAQ,SAAUliB,GACrD+hC,EAAKziC,KAAKU,GAAK8iC,EAAOX,iBAAiBniC,GAAG,CAAExJ,EAAGgI,EAAEhI,EAAGK,EAAG2H,EAAE3H,GAG3D,IAEKkrC,CACT,EACF,EAfK,WAgBJ,CACDnD,IAAK,YACLhZ,iBACE,OAAO5vB,KAAKisC,YAAYx3B,IAAI,SAAUjM,GACpC,OAAOugC,GAAS,CAAA,EAAIvgC,EAAEsM,KAAKi4B,oBAAqB,CAAEC,UAAWxkC,EAAEhI,EAAGysC,UAAWzkC,EAAE3H,GACjF,EACF,EAJK,aAoBAmrC,CACT,IAEIkB,GAAczsC,EAAA,SAAqB2pC,GACrC,IAAI+C,EAAU/C,EAAK7jC,GACfA,OAAiB,IAAZ4mC,EAAwB,EAAIA,EACjCC,EAAUhD,EAAK5jC,GAGnB,MAAO,CAAE0d,KAAM,CAAE1jB,EAAG+F,EAAI1F,OAFH,IAAZusC,EAAwB,EAAIA,GAGvC,EAPkB,eASdC,GAAgB5sC,EAAA,SAAuBorC,GACzC,IAAIyB,EAAWzB,EAAMtlC,GACjBA,OAAkB,IAAb+mC,EAAyB,EAAIA,EAClCC,EAAW1B,EAAMrlC,GACjBA,OAAkB,IAAb+mC,EAAyB,EAAIA,EAClCnoC,EAAKymC,EAAMzmC,GACXkvB,EAAKuX,EAAMvX,GACXrY,EAAU4vB,EAAM5vB,QAEhBxY,EAAI,CAAEygB,KAAM,CAAE1jB,EAAG+F,EAAI1F,EAAG2F,IAc5B,YAZW,IAAPpB,IACF3B,EAAE2B,GAAK,CAAE5E,EAAG+F,EAAKnB,EAAK1F,KAAK4C,KAAK,GAAIzB,EAAG2F,EAAKpB,EAAK1F,KAAK4C,KAAK,UAGlD,IAAPgyB,IACF7wB,EAAE6wB,GAAK,CAAE9zB,EAAG+F,EAAK+tB,EAAK50B,KAAK4C,KAAK,GAAIzB,EAAG2F,EAAK8tB,EAAK50B,KAAK4C,KAAK,UAG7C,IAAZ2Z,IACFxY,EAAEwY,QAAU,CAAEzb,EAAG+F,EAAKnB,EAAK6W,EAASpb,EAAG2F,IAGlC/C,CACT,EAxBoB,iBA+BhB+pC,GAAa/sC,EAAA,SAAoBgtC,GACnC,IAAIC,EAAQD,EAAMC,MACdC,EAAUF,EAAME,QAChBC,EAAUH,EAAMlsC,EAChBA,OAAgB,IAAZqsC,EAAwB,GAAKA,EAIjCnqC,EAAIiqC,EAAMl8B,UAAU,iBAAiBlI,KAAKqkC,GAE9ClqC,EAAEqO,QAAQC,OAAO,UAAUC,KAAK,QAAS,UAAUA,KAAK,OAAQ,QAAQA,KAAK,eAAgB,IAAKA,KAAK,SAAU,QAAQA,KAAK,mBAAoB,GAAGA,KAAK,SAAU,QAAQ7C,KAAK0+B,EAAAA,OAAOC,UAAU77B,EAAAA,OAAO,iBAAiBuH,QAAQ2E,GAAG,QAAS,SAAUla,GACtP,OAAOA,EAAE2tB,OAAS3tB,EAAE2tB,MAAM3tB,EAC5B,GAAGka,GAAG,OAAQ,SAAUla,GACtB,OAAOA,EAAE4pC,MAAQ5pC,EAAE4pC,KAAK5pC,EAC1B,GAAGka,GAAG,MAAO,SAAUla,GACrB,OAAOA,EAAE0tB,KAAO1tB,EAAE0tB,IAAI1tB,EACxB,IAEAypC,EAAMl8B,UAAU,iBAAiBQ,KAAK,KAAM,SAAU/N,GACpD,OAAOA,EAAEzD,CACX,GAAGwR,KAAK,KAAM,SAAU/N,GACtB,OAAOA,EAAEpD,CACX,GAAGmR,KAAK,IAAK,SAAU/N,GACrB,OAAOA,EAAE1C,GAAKA,CAChB,GAAGyQ,KAAK,QAAS,SAAU/N,GACzB,MAAO,WAAaA,EAAE8mC,WAAa,GACrC,GAEAtnC,EAAEmO,OAAOa,QACX,EA7BiB,cA+Bbs7B,GAAmBttC,EAAA,SAA0ButC,EAAOntC,GAQtD,MAPc,YAAVmtC,GAAiC,SAAVA,GAA8B,UAAVA,IAE3CA,EADEntC,EAAI,EACE,MAEA,UAGLmtC,CACT,EATuB,oBAWnBC,GAAmBxtC,EAAA,SAA0ButC,EAAOxtC,GAQtD,MAPc,YAAVwtC,GAAiC,QAAVA,GAA6B,WAAVA,IAE1CA,EADExtC,EAAI,EACE,QAEA,QAGLwtC,CACT,EATuB,oBAWnBE,GAAuB,CAAC,YAAa,MAAO,UAC5CC,GAAuB,CAAC,YAAa,OAAQ,SAE7CC,cAA2BhE,GAC7B,IAAIiE,EAAejE,EAAKnuB,QACpBA,OAA2B,IAAjBoyB,EAA6B,EAAIA,EAC3CC,EAAYlE,EAAK7wB,KACjBA,OAAqB,IAAd+0B,EAA0B,CAAE9tC,EAAG,EAASuX,MAAO,EAAGC,OAAQ,GAAMs2B,EACvEN,EAAQ5D,EAAK4D,MACbh5B,EAAco1B,EAAKp1B,YACnBu5B,EAAcnE,EAAKr6B,OACnBA,OAAyB,IAAhBw+B,EAA4B,CAAE/tC,EAAG,EAAGK,EAAG,GAAM0tC,EAEtD/tC,GAAK+Y,EAAK/Y,EACVK,EAAI,EA6BR,OA5BkD,IAA9CqtC,GAAqB/qB,QAAQnO,IAC/Bg5B,EAAQC,GAAiBD,EAAOj+B,EAAOvP,GACnCuP,EAAOlP,EAAI,GAAqB,cAAhBmU,GAA+C,QAAhBA,EACjDnU,GAAK0Y,EAAKvB,OAASiE,EAEnBpb,GAAKob,EAGO,WAAV+xB,EACFxtC,GAAK+Y,EAAKxB,MAAQ,EACC,UAAVi2B,IACTxtC,GAAK+Y,EAAKxB,SAE2C,IAA9Co2B,GAAqBhrB,QAAQnO,KACtCg5B,EAAQD,GAAiBC,EAAOj+B,EAAOlP,GACnCkP,EAAOvP,EAAI,GAAqB,cAAhBwU,GAA+C,SAAhBA,EACjDxU,GAAK+Y,EAAKxB,MAAQkE,EAElBzb,GAAKyb,EAGO,WAAV+xB,EACFntC,GAAK0Y,EAAKvB,OAAS,EACA,QAAVg2B,IACTntC,GAAK0Y,EAAKvB,SAIP,CAAExX,EAAGA,EAAGK,EAAGA,EACpB,EAzCqB,iBA2CjB2tC,GAAc/tC,EAAA,SAAqB2pC,GACrC,IAAI9gC,EAAO8gC,EAAK9gC,KACZmlC,EAAarE,EAAKlhC,MAClBA,OAAuB,IAAfulC,EAA2BtlC,GAAcslC,EACjDC,EAAgBtE,EAAKsE,cACrB3D,EAAYX,EAAKW,UACjBxwB,EAAU6vB,EAAK7vB,QAEfo0B,EAAUtlC,KAAOH,MAAMA,GAEvB0lC,EAAU,CACZ95B,KAAM,OACNi2B,YACAxwB,UACAjR,QAYF,OATIolC,GACFC,EAAQ9nC,QAAQ6nC,GAChBE,EAAQC,YAAcF,GAEtBC,EAAQE,MAAQ,CACd7qC,EAAG0qC,EAAQrlC,IAIRslC,CACT,EA3BkB,eA6BdG,GAAatuC,EAAA,SAAoBorC,GACnC,IAAIviC,EAAOuiC,EAAMviC,KACbolC,EAAgB7C,EAAM6C,cAKtBE,EAAU,CACZ95B,KAAM,OACNi2B,UANcc,EAAMd,UAOpBxwB,QANYsxB,EAAMtxB,QAOlBjR,QAGE0lC,EAAWnsC,KAAMqB,YAAYoF,EAAKpF,aAAe,GAAGE,YAAYkF,EAAKlF,aAAekF,EAAKmtB,QAAU,GAAGnyB,WAAWgF,EAAKhF,YAAc,GAAGE,SAAS8E,EAAK9E,UAAY,EAAI9E,KAAKC,IAY9K,OAVI+uC,GACFM,EAASnoC,QAAQ6nC,GACjBE,EAAQC,YAAcF,SAGtBC,EAAQE,MAAQ,CACd7qC,EAAG+qC,KAIAJ,CACT,EA3BiB,cA6BbK,cAA0B7E,GAC5B,IAAI4D,EAAQ5D,EAAK4D,MACb3D,EAASD,EAAK5pC,EACdA,OAAe,IAAX6pC,EAAuB,EAAIA,EAC/BC,EAASF,EAAKvpC,EACdA,OAAe,IAAXypC,EAAuB,EAAIA,EAC/B/wB,EAAO6wB,EAAK7wB,KACZxJ,EAASq6B,EAAKr6B,OAIJ,SAFdi+B,EAAQD,GAAiBC,EAAOj+B,EAAOlP,IAGrCA,GAAK0Y,EAAKvB,OACS,WAAVg2B,IACTntC,GAAK0Y,EAAKvB,OAAS,GAGrB,IAAI1O,EAAO,CAAC,CAAC9I,EAAGK,GAAI,CAACL,EAAGK,EAAI0Y,EAAKvB,SACjC,MAAO,CAAEk3B,WAAY,CAACV,GAAY,CAAEllC,OAAYyhC,UAAW,eAC7D,EAnBoB,gBAqBhBoE,cAA4B/E,GAC9B,IAAI4D,EAAQ5D,EAAK4D,MACb3D,EAASD,EAAK5pC,EACdA,OAAe,IAAX6pC,EAAuB,EAAIA,EAC/BC,EAASF,EAAKvpC,EACdA,OAAe,IAAXypC,EAAuB,EAAIA,EAC/Bv6B,EAASq6B,EAAKr6B,OACdwJ,EAAO6wB,EAAK7wB,KAIF,WAFdy0B,EAAQC,GAAiBD,EAAOj+B,EAAOvP,IAGrCA,GAAK+Y,EAAKxB,MACS,WAAVi2B,IACTxtC,GAAK+Y,EAAKxB,MAAQ,GAGpB,IAAIzO,EAAO,CAAC,CAAC9I,EAAGK,GAAI,CAACL,EAAI+Y,EAAKxB,MAAOlX,IACrC,MAAO,CAAEquC,WAAY,CAACV,GAAY,CAAEllC,OAAYyhC,UAAW,eAC7D,EAnBsB,kBAqBlBqE,GAAY3uC,EAAA,SAAmB2pC,GACjC,IAAIt1B,EAAOs1B,EAAKt1B,KACZu6B,EAAcjF,EAAKiF,YAEnBC,EAAax6B,EAAKw6B,WAClBv/B,EAASu/B,EAAWj+B,SAEpBpQ,EAAKquC,EAAW9uC,EAAIuP,EAAOvP,EAC3BY,EAAKH,EAAKquC,EAAWrsC,GACrB/B,EAAKouC,EAAWzuC,EAAIkP,EAAOlP,EAC3BQ,EAAKH,EAAKouC,EAAWnsC,GAErBosC,EAAcD,EAAW1E,QAE7B,GAAoB,WAAhByE,IAA6BE,EAAYnrC,aAAemrC,EAAY9Y,QAAS,CAC/E,IAAIhzB,EAAI/D,KAAK4C,MAAMrB,EAAKG,IAAOH,EAAKG,IAAOF,EAAKG,IAAOH,EAAKG,IACxDmuC,EAAQ9vC,KAAKqE,MAAM1C,EAAKoC,GACxBlC,EAAIguC,EAAYnrC,aAAemrC,EAAY9Y,QAAU8Y,EAAYE,eAAiB,GAEtFxuC,EAAKvB,KAAKsC,IAAItC,KAAKwD,IAAIssC,GAASjuC,IAAMH,EAAK,GAAI,EAAK,GACpDF,EAAKxB,KAAKsC,IAAItC,KAAK0D,IAAIosC,GAASjuC,IAAMF,EAAK,GAAI,EAAK,EACtD,CAEA,GAAoB,SAAhBguC,EAAwB,CAC1B,IAAIt3B,EAAQw3B,EAAYx3B,MACpBC,EAASu3B,EAAYv3B,QAGrBD,EAAQ,GAAKu3B,EAAWrsC,GAAK,GAAK8U,EAAQ,GAAKu3B,EAAWrsC,GAAK,KAClBhC,EAA3CvB,KAAKsC,IAAI+V,GAASrY,KAAKsC,IAAIstC,EAAWrsC,IAAU8U,EAAQ,EAAYA,IAEtEC,EAAS,GAAKs3B,EAAWnsC,GAAK,GAAK6U,EAAS,GAAKs3B,EAAWnsC,GAAK,KACnBjC,EAA5CxB,KAAKsC,IAAIgW,GAAUtY,KAAKsC,IAAIstC,EAAWnsC,IAAU6U,EAAS,EAAYA,GAExE/W,IAAO8W,EAAQ,GAAK7W,IAAO8W,EAAS,IACtC/W,EAAKG,EAAGF,EAAKG,EAEjB,CAEA,MAAO,CAAC,CAACJ,EAAIC,GAAK,CAACE,EAAIC,GACzB,EAxCgB,aA0CZquC,cAA2BC,GAC7B,IAAIrmC,EAAO8lC,GAAUO,GACrB,MAAO,CAAET,WAAY,CAACV,GAAY,CAAEllC,OAAYyhC,UAAW,eAC7D,EAHqB,iBAKjB6E,cAA4BxF,GAC9B,IAAIt1B,EAAOs1B,EAAKt1B,KACZu6B,EAAcjF,EAAKiF,YAGnBC,EAAax6B,EAAKw6B,WAClBv/B,EAASu/B,EAAWj+B,SAEpBpQ,EAAKquC,EAAW9uC,EAAIuP,EAAOvP,EAC3BY,EAAKH,EAAKquC,EAAWrsC,GACrB/B,EAAKouC,EAAWzuC,EAAIkP,EAAOlP,EAC3BQ,EAAKH,EAAKouC,EAAWnsC,GAErBosC,EAAcD,EAAW1E,QAE7B,GAAoB,SAAhByE,EAAwB,CAC1B,IAAIt3B,EAAQw3B,EAAYx3B,MACpBC,EAASu3B,EAAYv3B,QAGrBD,EAAQ,GAAKu3B,EAAWrsC,GAAK,GAAK8U,EAAQ,GAAKu3B,EAAWrsC,GAAK,KAClBhC,EAA3CvB,KAAKsC,IAAI+V,GAASrY,KAAKsC,IAAIstC,EAAWrsC,IAAU8U,EAAQ,EAAYA,IAEtEC,EAAS,GAAKs3B,EAAWnsC,GAAK,GAAK6U,EAAS,GAAKs3B,EAAWnsC,GAAK,KACnBjC,EAA5CxB,KAAKsC,IAAIgW,GAAUtY,KAAKsC,IAAIstC,EAAWnsC,IAAU6U,EAAS,EAAYA,GAExE/W,IAAO8W,EAAQ,GAAK7W,IAAO8W,EAAS,IACtC/W,EAAKG,EAAGF,EAAKG,EAEjB,CAEA,IAAIiI,EAAO,CAAC,CAACrI,EAAIC,GAAK,CAACE,EAAIC,IAEvBwuC,EAAQxuC,EAAKH,EACb4uC,EAAQ1uC,EAAKH,EACb8uC,EAAK3uC,EACL4uC,EAAK3uC,EACL4uC,EAAW5uC,EAAKH,GAAME,EAAKH,GAAMG,EAAKH,GAAMI,EAAKH,GAAK,EAAK,EAU/D,GARIxB,KAAKsC,IAAI8tC,GAASpwC,KAAKsC,IAAI6tC,IAC7BE,EAAK3uC,EACL4uC,EAAK9uC,EAAK4uC,EAAQG,IAElBD,EAAK3uC,EACL0uC,EAAK9uC,EAAK4uC,EAAQI,GAGA,WAAhBZ,IAA6BE,EAAYnrC,aAAemrC,EAAY9Y,QAAS,CAC/E,IAAIl1B,GAAKguC,EAAYnrC,aAAemrC,EAAY9Y,SAAW8Y,EAAYE,eAAiB,GACpFhnC,EAASlH,EAAI7B,KAAK4C,KAAK,GAE3B,GAAI5C,KAAKsC,IAAI8tC,GAASrnC,GAAU/I,KAAKsC,IAAI6tC,GAASpnC,EAGhDa,EAAO,CAAC,CAFRrI,EAAKwH,GAAUrH,EAAK,GAAI,EAAK,GAC7BF,EAAKuH,GAAUpH,EAAK,GAAI,EAAK,IACX,CAAC0uC,EAAIC,GAAK,CAAC5uC,EAAIC,SACnC,GAAW3B,KAAKsC,IAAI8tC,GAASpwC,KAAKsC,IAAI6tC,GAAQ,CAC5C,IAAIL,EAAQ9vC,KAAKqE,MAAM1C,EAAKE,GAE5B+H,EAAO,CAAC,CADRrI,EAAKvB,KAAKsC,IAAItC,KAAKwD,IAAIssC,GAASjuC,IAAMH,EAAK,GAAI,EAAK,GACvCC,GAAK,CAACD,EAAIC,GACzB,KAAO,CACL,IAAI6uC,EAASxwC,KAAKgD,KAAKtB,EAAKG,GAE5B+H,EAAO,CAAC,CAAClI,EADTF,EAAKxB,KAAKsC,IAAItC,KAAK0D,IAAI8sC,GAAU3uC,IAAMF,EAAK,GAAI,EAAK,IACnC,CAACD,EAAIC,GACzB,CACF,MACEiI,EAAO,CAAC,CAACrI,EAAIC,GAAK,CAAC6uC,EAAIC,GAAK,CAAC5uC,EAAIC,IAGnC,MAAO,CAAE6tC,WAAY,CAACV,GAAY,CAAEllC,OAAYyhC,UAAW,eAC7D,EArEsB,kBAuElBoF,cAA4B/F,GAC9B,IAAIt1B,EAAOs1B,EAAKt1B,KACZ66B,EAAgBvF,EAAKuF,cACrBN,EAAcjF,EAAKiF,YAGlBM,IACHA,EAAgB,CAAA,GAEbA,EAAchmB,QAA0C,iBAAzBgmB,EAAchmB,SAChDgmB,EAAchmB,OAASymB,GAAat7B,EAAKw6B,WAAWv/B,OAAQ4/B,EAAchmB,SAEvEgmB,EAAczmC,QACjBymC,EAAczmC,MAAQw+B,IAGxB,IAAIiG,EAAU,GAEd,GAAI74B,EAAK03B,SAAU,CACjB,IAAI6D,EAAWV,EAAchmB,OAAOlV,IAAI,SAAU2d,EAAG7oB,GACnD,OAAOw/B,GAAS,CAAA,EAAImE,GAAY,CAAE3mC,GAAI6rB,EAAE,GAAI5rB,GAAI4rB,EAAE,KAAO,CAAE7mB,MAAOhC,GACpE,GAEI+mC,EAAc7vC,EAAA,SAAqB8K,GACrCokC,EAAchmB,OAAOpe,GAAO,IAAMglC,EAAAA,MAAMttC,GACxC0sC,EAAchmB,OAAOpe,GAAO,IAAMglC,EAAAA,MAAMptC,GACxC2R,EAAK02B,iBACP,EAJkB,eAMlBmC,EAAU74B,EAAK07B,WAAWH,EAAS57B,IAAI,SAAUhR,GAC/C,OAAOslC,GAAS,CAAA,EAAItlC,EAAEygB,KAAM,CAAE2pB,KAAMyC,EAAYnmB,KAAKrV,EAAMrR,EAAE8H,QAC/D,GACF,CAEA,IAAIjC,EAAO8lC,GAAU,CAAEt6B,OAAYu6B,gBAInC,OAHA/lC,EAAO,CAACA,EAAK,IAAIw1B,OAAOkL,GAAkB2F,EAAchmB,QAAS,CAACrgB,EAAK,KAGhE,CAAE4lC,WAFQ,CAACV,GAAY,CAAEllC,OAAYJ,MAAOymC,EAAczmC,MAAO6hC,UAAW,eAElD4C,UACnC,EAvCsB,kBAyClByC,GAAe3vC,EAAA,SAAsBsP,GAOvC,IANA,IAAI0gC,EAAUxpC,UAAUwB,OAAS,QAAsB,IAAjBxB,UAAU,GAAmBA,UAAU,GAAK,EAE9EypC,EAAY3gC,EAAOvP,GAAKiwC,EAAU,GAAlCC,EAAyC3gC,EAAOlP,GAAK4vC,EAAU,GAC/D5nC,EAAI,GAEJU,EAAI,EACDA,GAAKknC,EAASlnC,IACnBV,EAAEwD,KAAK,CAACqkC,EAASnnC,EAAIA,EAAI,EAAI,GAAImnC,EAASnnC,EAAIA,EAAI,EAAI,KAExD,OAAOV,CACT,EAXmB,gBAaf8nC,cAA4BvG,GAC9B,IAAIkF,EAAalF,EAAKkF,WAClB1d,EAAQwY,EAAKxY,MACbD,EAAMyY,EAAKzY,IACXif,EAAaxG,EAAKv6B,MAClBA,OAAuB,IAAf+gC,EAA2B,EAAIA,EAEvC7gC,EAASu/B,EAAWj+B,SAItBugB,EAHGA,EAGK,EAAED,EAAI,GAAKC,EAAM,IAAKD,EAAI,GAAKC,EAAM,IAFrC,CAAC0d,EAAWrsC,GAAIqsC,EAAWnsC,IAIhCwuB,IACHA,EAAM,CAAC2d,EAAW9uC,EAAIuP,EAAOvP,EAAG8uC,EAAWzuC,EAAIkP,EAAOlP,IAGxD,IAAII,EAAK0wB,EAAI,GACTzwB,EAAKywB,EAAI,GAET1uB,EAAK2uB,EAAM,GACXzuB,EAAKyuB,EAAM,GAEX5I,EAAO,GAAKnZ,EACZghC,EAAc,GAAK,IAAMnxC,KAAKC,GAC9B6vC,EAAQ9vC,KAAKoxC,KAAK3tC,EAAKF,GAEvBA,EAAK,IACPusC,GAAS9vC,KAAKC,IAGhB,IAAI2J,EAAO,CAAC,CAACrI,EAAIC,GAAK,CAACxB,KAAKwD,IAAIssC,EAAQqB,GAAe7nB,EAAO/nB,EAAIvB,KAAK0D,IAAIosC,EAAQqB,GAAe7nB,EAAO9nB,GAAK,CAACxB,KAAKwD,IAAIssC,EAAQqB,GAAe7nB,EAAO/nB,EAAIvB,KAAK0D,IAAIosC,EAAQqB,GAAe7nB,EAAO9nB,GAAK,CAACD,EAAIC,IAiB3M,MAAO,CACLguC,WAAY,CAACV,GAAY,CACvBllC,OACAyhC,UAAW,gCACXxwB,QAAS,mBAGf,EAvDsB,kBAyDlBw2B,cAA0B3G,GAC5B,IAAI4G,EAAU5G,EAAK/gC,KACfunC,EAAaxG,EAAKv6B,MAClBA,OAAuB,IAAf+gC,EAA2B,EAAIA,EAEvCK,EAAMlC,GAAW,CACnBhE,UAAW,8BACXxwB,QAAS,gBACTjR,KAAM,CAAEmtB,OAAQ,EAAI/2B,KAAK4C,KAAKuN,MAIhC,OAFAohC,EAAInC,MAAMl+B,UAAY,aAAeogC,EAAQ1nC,KAAK,GAAG,GAAK,KAAO0nC,EAAQ1nC,KAAK,GAAG,GAAK,IAE/E,CAAE4lC,WAAY,CAAC+B,GACxB,EAboB,gBAehBC,cAA2B9G,GAC7B,IAAImF,EAAcnF,EAAKmF,YACnBz6B,EAAOs1B,EAAKt1B,KAEXy6B,EAAY9Y,QAAW8Y,EAAYnrC,cACtCmrC,EAAY9Y,OAAS,IAGvB,IAAIkX,EAAU,GACVvb,EAAI2c,GAAW,CAAEzlC,KAAMimC,EAAaxE,UAAW,YACnD,GAAIj2B,EAAK03B,SAAU,CACjB,IAAI/oC,EAAI4pC,GAAc,CACpBjoC,GAAIgtB,EAAE9oB,KAAKlF,aAAeguB,EAAE9oB,KAAKmtB,OACjCnC,GAAIlC,EAAE9oB,KAAKpF,YACX+X,QAASszB,EAAYE,gBAGnB0B,EAAe1wC,EAAA,SAAsBuR,GACvC,IAAIzQ,EAAIguC,EAAYv9B,GAAQu+B,EAAAA,MAAMttC,GAAKvD,KAAK4C,KAAK,GACjDitC,EAAYv9B,GAAQzQ,EACpBuT,EAAKu2B,gBACLv2B,EAAK02B,iBACP,EALmB,gBAOf6E,EAAW,CAACtH,GAAS,CAAA,EAAItlC,EAAE2B,GAAI,CACjCyoC,KAAMsD,EAAahnB,KAAKrV,OAAkC,IAA5By6B,EAAYnrC,YAA4B,cAAgB,aAGpFmrC,EAAYrrC,aACdmsC,EAAShkC,KAAK08B,GAAS,CAAA,EAAItlC,EAAE6wB,GAAI,CAAEuZ,KAAMsD,EAAahnB,KAAKrV,EAAM,kBAEnE64B,EAAU74B,EAAK07B,WAAWH,EAC5B,CAIA,OAFAje,EAAE0c,MAAM,gBAAkB,EAEnB,CAAEI,WAAY,CAAC9c,GAAIub,UAC5B,EArCqB,iBAuCjByD,cAAyBhH,GAC3B,IAAImF,EAAcnF,EAAKmF,YACnBz6B,EAAOs1B,EAAKt1B,KAEXy6B,EAAYx3B,QACfw3B,EAAYx3B,MAAQ,KAEjBw3B,EAAYv3B,SACfu3B,EAAYv3B,OAAS,KAGvB,IAAI21B,EAAU,GACV51B,EAAQw3B,EAAYx3B,MACpBC,EAASu3B,EAAYv3B,OAIrBzU,EAAOirC,GAAY,CAAEllC,KADd,CAAC,CAAC,EAAG,GAAI,CAACyO,EAAO,GAAI,CAACA,EAAOC,GAAS,CAAC,EAAGA,GAAS,CAAC,EAAG,IAC7B+yB,UAAW,YAEhD,GAAIj2B,EAAK03B,SAAU,CACjB,IAAI6E,eACF9B,EAAYx3B,MAAQw4B,EAAAA,MAAM/vC,EAC1BsU,EAAKu2B,gBACLv2B,EAAK02B,iBACP,EAJkB,eAMd8F,eACF/B,EAAYv3B,OAASu4B,EAAAA,MAAM1vC,EAC3BiU,EAAKu2B,gBACLv2B,EAAK02B,iBACP,EAJmB,gBAMf+F,EAAW,CAAC,CAAE/wC,EAAGuX,EAAOlX,EAAGmX,EAAS,EAAG61B,KAAMwD,EAAYlnB,KAAKrV,IAAS,CAAEtU,EAAGuX,EAAQ,EAAGlX,EAAGmX,EAAQ61B,KAAMyD,EAAannB,KAAKrV,KAE9H64B,EAAU74B,EAAK07B,WAAWe,EAC5B,CAEA,OADAhuC,EAAKurC,MAAM,gBAAkB,GACtB,CAAEI,WAAY,CAAC3rC,GAAOoqC,UAC/B,EAtCmB,eAwCf6D,cAA8BpH,GAChC,IAAImF,EAAcnF,EAAKmF,YAGnBx/B,EAFOq6B,EAAKt1B,KAEEw6B,WAAWj+B,SAEzBpQ,QAAyB,IAAnBsuC,EAAYtuC,GAAmBsuC,EAAYtuC,GAAK8O,EAAOvP,GAAKuP,EAAOvP,EACzEY,QAAyB,IAAnBmuC,EAAYnuC,GAAmBmuC,EAAYnuC,GAAK2O,EAAOvP,GAAKuP,EAAOvP,EACzEU,QAAyB,IAAnBquC,EAAYruC,GAAmBquC,EAAYruC,GAAK6O,EAAOlP,GAAKkP,EAAOlP,EACzEQ,QAAyB,IAAnBkuC,EAAYluC,GAAmBkuC,EAAYluC,GAAK0O,EAAOlP,GAAKkP,EAAOlP,EAG7E,MAAO,CAAEquC,WAAY,CAACV,GAAY,CAAEllC,KADzB,CAAC,CAACrI,EAAIC,GAAK,CAACE,EAAIC,IACqB0pC,UAAW,aAC7D,EAbwB,oBAepB0G,cAA0BrH,GAC5B,IAAIsH,EAAmBtH,EAAKmF,YACxBA,OAAmC,IAArBmC,EAAiC,CAAA,EAAKA,EACpDC,EAAYvH,EAAKt1B,KACjBA,OAAqB,IAAd68B,EAA0B,CAAA,EAAKA,EACtCrC,EAAaroC,UAAUwB,OAAS,QAAsB,IAAjBxB,UAAU,GAAmBA,UAAU,GAAK,CAAA,EAEjF2qC,EAAe98B,EAAK88B,cAAgB98B,EAAK88B,aAAahH,QAErD2E,EAAY9Y,SACXmb,GAAgBA,EAAanb,OAC/B8Y,EAAY9Y,OAASmb,EAAanb,OAElC8Y,EAAY9Y,OAAS,IAGpB8Y,EAAY/uC,GACXoxC,GAAgBA,EAAapxC,IAC/B+uC,EAAY/uC,EAAIoxC,EAAapxC,GAG5B+uC,EAAY1uC,GACX+wC,GAAgBA,EAAa/wC,IAC/B0uC,EAAY1uC,EAAI+wC,EAAa/wC,GAIjC,IAAI8sC,EAAU,GACVuB,EAAa,GACbzY,EAAS8Y,EAAY9Y,OACrBvyB,EAAuB,GAATuyB,EACdj2B,EAAI,EACJK,EAAI,EAEJgxC,EAAkBnyC,KAAK4C,KAAK,GAAKm0B,EACjCqb,EAAY,CACdC,aAActb,EACdub,aAAcvb,EACdwb,YAAaxb,EACbyb,cAAezb,EACf0b,OAAQN,EACRO,OAAQP,EACRQ,MAAOR,EACPS,QAAST,GAGPtC,EAAY/uC,IAAM+uC,EAAY1uC,EAChCL,EAAIsxC,EAAU,IAAMvC,EAAY/uC,GACvB+uC,EAAY1uC,IAAM0uC,EAAY/uC,EACvCK,EAAIixC,EAAU,IAAMvC,EAAY1uC,GACvB0uC,EAAY/uC,GAAK+uC,EAAY1uC,IACtCL,EAAIsxC,EAAU,IAAMvC,EAAY/uC,EAAI,UACpCK,EAAIixC,EAAU,IAAMvC,EAAY1uC,EAAI,WAGtC,IAAI+P,EAAY,aAAepQ,EAAI,KAAOK,EAAI,IAC1C0xC,EAAWxD,GAAW,CAAEhE,UAAW,UAAWzhC,KAAM,CAAEmtB,YAC1D8b,EAASzD,MAAMl+B,UAAYA,EAC3B2hC,EAASzD,MAAM0D,KAAOlD,EAAWxnB,MACjCyqB,EAASzD,MAAM,kBAAoB,QACnCyD,EAASzD,MAAM,gBAAkB,MAEjC,IAAInZ,EAASoZ,GAAW,CACtBhE,UAAW,eACXzhC,KAAM,CAAElF,YAAaqyB,EAAQvyB,iBAG/ByxB,EAAOmZ,MAAMl+B,UAAYA,EAEzB+kB,EAAOmZ,MAAM,gBAAkB,MAC/BnZ,EAAOmZ,MAAM0D,KAAO,QAEpB,IAAIC,OAAU,EACd,GAAIjyC,GAAKK,IAAML,IAAMK,EACnB4xC,EAAUjE,GAAY,CACpBzD,UAAW,kBACXzhC,KAAM,CAAC,CAAC,EAAG,GAAI,CAAC9I,GAAK,EAAG,GAAI,CAAC,EAAGK,GAAK,GAAI,CAAC,EAAG,WAEjD,GAAWL,GAAKK,EAAG,CACjB,IAAI6xC,EAAqBjyC,EAAA,SAA4B4K,GACnD,IAAI0C,EAAO9G,UAAUwB,OAAS,QAAsB,IAAjBxB,UAAU,GAAmBA,UAAU,GAAK,EAC/E,OAAOoE,GAAKA,EAAI3L,KAAK4C,KAAK,GAAK5C,KAAK4C,KAAK,IAAMyL,EAAO0oB,EAAS/2B,KAAK4C,KAAK,EAC3E,EAHyB,sBAKzBmwC,EAAUjE,GAAY,CACpBzD,UAAW,kBACXzhC,KAAM,CAAC,CAAC,EAAG,GAAI,CAACopC,EAAmBlyC,GAAIkyC,EAAmB7xC,IAAK,CAAC6xC,EAAmBlyC,GAAG,GAAKkyC,EAAmB7xC,GAAG,IAAM,CAAC,EAAG,KAE/H,CASA,GAPI4xC,IACFA,EAAQ3D,MAAM0D,KAAOlD,EAAWxnB,MAChC2qB,EAAQ3D,MAAM,kBAAoB,QAClC2D,EAAQ3D,MAAM,gBAAkB,MAChCI,EAAW7iC,KAAKomC,IAGd39B,EAAK03B,SAAU,CACjB,IAOImG,EAAW,CAAEnyC,EAAO,EAAJA,EAAOK,EAAO,EAAJA,EAAOgtC,kBANnC0B,EAAY/uC,EAAI+vC,EAAAA,MAAM/vC,EAAc,GAATi2B,EAAa,OAAS8Z,EAAAA,MAAM/vC,EAAa,EAATi2B,EAAa,aAAU,EAClF8Y,EAAY1uC,EAAI0vC,EAAAA,MAAM1vC,EAAc,GAAT41B,EAAa,MAAQ8Z,EAAAA,MAAM1vC,EAAa,EAAT41B,EAAa,cAAW,EAElF3hB,EAAKu2B,eACP,EALgB,aAOqClhB,KAAKrV,IACrD69B,EAASnyC,GAAMmyC,EAAS9xC,IAC3B8xC,EAAS9xC,GAAK41B,GAGhBkX,EAAU74B,EAAK07B,WAAW,CAACmC,GAC7B,CAEA,IAAIzgC,OAAO,EAsBX,OArBIq9B,EAAYr9B,OACdA,EAAO,CACL4C,KAAM,OACNi2B,UAAW,aACX+D,MAAO,CACL0D,KAAM,QACNI,OAAQ,OACR,YAAa,OACb1gC,KAAMq9B,EAAYr9B,KAClB,cAAe,SACf/O,GAAI,QACJ3C,EAAGA,EACHK,EAAGA,KAKTquC,EAAW7iC,KAAKkmC,GAChBrD,EAAW7iC,KAAKspB,GAChBuZ,EAAW7iC,KAAK6F,GAET,CAAEg9B,aAAwBvB,UACnC,EAxIoB,gBA6IhBkF,cACF,SAASA,EAAKzI,GACZ,IAAI5hC,EAAI4hC,EAAK5hC,EACT8mC,EAAalF,EAAKkF,WAClB9C,EAAWpC,EAAKoC,SAChBsG,EAAa1I,EAAK0I,WAClBjG,EAAczC,EAAKyC,YACnBX,EAAY9B,EAAK8B,UAWrB,GAVAjE,GAAejoC,KAAM6yC,GAErB7yC,KAAKwI,EAAIA,EAETxI,KAAK8qC,MAA8C,IAAvCwE,EAAWxyB,QAAQqG,QAAQ,SAAkB3a,EAAEyJ,OAAO,qBAClEjS,KAAK+yC,YAAc/yC,KAAK8qC,MAAQtiC,EAAEyJ,OAAO,6BACzCjS,KAAK6qC,WAAwD,IAA5CyE,EAAWxyB,QAAQqG,QAAQ,cAAuB3a,EAAEyJ,OAAO,0BAC5EjS,KAAK4qC,SAAoD,IAA1C0E,EAAWxyB,QAAQqG,QAAQ,YAAqB3a,EAAEyJ,OAAO,wBACxEjS,KAAK8yC,WAAaA,EAEdA,EAAY,CACd,IAAIE,EAAUC,GAAY9oB,KAAK,KAAM2oB,EAAYxD,GACjD0D,EAAQ,CAAEE,UAAWlzC,KAAK8qC,KAAMqI,KAAM,SACtCH,EAAQ,CAAEE,UAAWlzC,KAAK6qC,UAAWsI,KAAM,cAC3CH,EAAQ,CAAEE,UAAWlzC,KAAK4qC,QAASuI,KAAM,WAC3C,CAEAnzC,KAAKsvC,WAAaA,EAClBtvC,KAAKwsC,SAAW8C,EAAW9C,UAAYA,EACvCxsC,KAAK6sC,iBAA8B,IAAhBA,EAA4BA,EAAc,EAC7D7sC,KAAKozC,cAAgB,EACrBpzC,KAAKqzC,cAAgB,EAEjBnH,GAAaoD,EAAWhmC,MAC1BtJ,KAAKszC,KAAKpH,EAEd,CAyXA,OA1ZSzrC,EAAAoyC,EAAA,QAmCTzK,GAAYyK,EAAM,CAAC,CACjBjK,IAAK,OACL59B,MAAOvK,EAAA,SAAcyrC,GACdlsC,KAAKsvC,WAAW9uC,GACnBR,KAAKuzC,KAAKrH,GAEPlsC,KAAKsvC,WAAWzuC,GACnBb,KAAKwzC,KAAKtH,EAEd,EAPO,SAQN,CACDtD,IAAK,OACL59B,MAAOvK,EAAA,SAAcyrC,GACfA,EAAUrrC,IACZb,KAAKsvC,WAAWzuC,EAAIqrC,EAAUrrC,EAAEb,KAAKsvC,WAAWhmC,MAEpD,EAJO,SAKN,CACDs/B,IAAK,OACL59B,MAAOvK,EAAA,SAAcyrC,GACfA,EAAU1rC,IACZR,KAAKsvC,WAAW9uC,EAAI0rC,EAAU1rC,EAAER,KAAKsvC,WAAWhmC,MAEpD,EAJO,SAKN,CACDs/B,IAAK,iBACL59B,mBACEhL,KAAKwI,EAAEgJ,UAAU,iBAAiBiB,QACpC,EAFO,mBAGN,CACDm2B,IAAK,YACL59B,MAAOvK,EAAA,SAAmByyC,EAAWO,GACnC,IAAIpH,EAAQrsC,KAEPkK,MAAM8zB,QAAQyV,KACjBA,EAAW,CAACA,IAGdA,EAAS/gC,OAAO,SAAU9H,GACxB,OAAOA,CACT,GAAGshB,QAAQ,SAAU2f,GACnB,IAAI/2B,EAAO+2B,EAAM/2B,KACbi2B,EAAYc,EAAMd,UAClB+D,EAAQjD,EAAMiD,MACdnB,EAAU9B,EAAM8B,QAChBpzB,EAAUsxB,EAAMtxB,QAEpB,GAAa,WAATzF,EACF04B,GAAW,CAAEE,MAAOwF,EAAW3xC,EAAGutC,GAASA,EAAMvtC,EAAGosC,gBAC/C,CACL+F,GAAaR,EAAW,CAAC7G,EAAMiD,YAAax6B,EAAMi2B,EAAWxwB,GAM7D,IALA,IAAIo5B,EAAKT,EAAUjhC,OAAO6C,EAAO,KAAOyF,GAAWwwB,IAC/C6I,EAAW3kC,OAAOstB,KAAKuS,GACvB+E,EAAc,GAEdC,EAAeH,EAAGn6B,OAAOu6B,WACpBxqC,EAAIuqC,EAAarrC,OAAS,EAAGc,GAAK,EAAGA,IAAK,CACjD,IAAI4pC,EAAOW,EAAavqC,GAAG4pC,UACvBS,EAASzwB,QAAQgwB,IAAyB,UAATA,GAAkBU,EAAYxnC,KAAK8mC,EAC1E,CAEAS,EAAS1nB,QAAQ,SAAUla,GACZ,SAATA,EACF2hC,EAAGzhC,KAAK48B,EAAM98B,IAEd2hC,EAAG3hC,KAAKA,EAAM88B,EAAM98B,GAExB,GAEA6hC,EAAY3nB,QAAQ,SAAUla,GAC5B,OAAO2hC,EAAG3hC,KAAKA,EAAM,KACvB,EACF,CACF,EACF,EA3CO,cA+CN,CACD42B,IAAK,cACL59B,mBACE,OAAOgpC,GAAmBh0C,KAAK8qC,KAAM,gCACvC,EAFO,gBAGN,CACDlC,IAAK,oBACL59B,mBACE,IAAIuO,EAAOy6B,GAAmBh0C,KAAK8qC,KAAM,4BACrCl6B,EAAY5Q,KAAK+yC,YAAY/gC,KAAK,aAAa8I,MAAM,aAKzD,OAJAvB,EAAK65B,cAAgBl4B,WAAWtK,EAAU,IAAM5Q,KAAKsvC,WAAWrsC,GAChEsW,EAAK85B,cAAgBn4B,WAAWtK,EAAU,IAAM5Q,KAAKsvC,WAAWnsC,GAChEoW,EAAK06B,QAAUj0C,KAAKsvC,WAAWrsC,GAC/BsW,EAAK26B,QAAUl0C,KAAKsvC,WAAWnsC,GACxBoW,CACT,EARO,sBASN,CACDqvB,IAAK,cACL59B,mBACE,IAAI8hC,EAAS9sC,KAET6G,EAAUI,UAAUwB,OAAS,QAAsB,IAAjBxB,UAAU,GAAmBA,UAAU,GAAK,CAAA,EAE9EsoC,EAAcvvC,KAAKsvC,WAAW1E,QAC9B91B,EAAOjO,EAAQiO,KACfq/B,EAAgB,CAAEr/B,KAAM9U,KAAMuvC,eAE9B3E,EAAU,CAAA,EACD,WAAT91B,EAAmB81B,EAAUsG,GAAciD,GAAiC,SAATr/B,EAAiB81B,EAAUwG,GAAY+C,GAAiC,cAATr/B,EAAsB81B,EAAU4G,GAAiB2C,GAAiC,UAATr/B,IAAkB81B,EAAU6G,GAAa0C,EAAen0C,KAAKsvC,aAE5Q,IAAI8E,EAAWxJ,EACXyJ,EAAsBD,EAASlF,WAC/BA,OAAqC,IAAxBmF,EAAoC,GAAKA,EACtDC,EAAmBF,EAASzG,QAC5BA,OAA+B,IAArB2G,EAAiC,GAAKA,EAapD,OAXApF,EAAWhjB,QAAQ,SAAUkG,GACvBA,GAAKA,EAAE0c,QAAU1c,EAAE0c,MAAM8D,SAC3BxgB,EAAE0c,MAAM8D,OAAS9F,EAAOwC,WAAWxnB,MAEvC,GAEI9nB,KAAKwsC,WACPmB,EAAUA,EAAQ7O,OAAO9+B,KAAKwwC,WAAW,CAAC,CAAE3C,KAAM7tC,KAAKu0C,YAAYpqB,KAAKnqB,UACxEkvC,EAAW7iC,KAAK,CAAEyI,KAAM,SAAU64B,aAG7BuB,CACT,EA9BO,gBA+BN,CACDtG,IAAK,gBACL59B,mBACE,IAAIwpC,EAASx0C,KAET6G,EAAUI,UAAUwB,OAAS,QAAsB,IAAjBxB,UAAU,GAAmBA,UAAU,GAAK,CAAA,EAE9E0oC,EAAgB3vC,KAAKsvC,WAAWzE,UAChC/1B,EAAO66B,EAAc76B,MAAQjO,EAAQiO,KACrC2/B,EAAkB,CAAE3/B,KAAM9U,KAAM2vC,iBACpC8E,EAAgBpF,YAAcrvC,KAAK4xC,cAAgB5xC,KAAK4xC,aAAahH,SAAW5qC,KAAK4xC,aAAahH,QAAQ91B,KAE1G,IAEI4/B,EADS,UAAT5/B,EAA8Bq7B,GAAesE,GAAmC,UAAT3/B,EAA8B86B,GAAe6E,GAAkC/E,GAAc+E,GAEpKE,EAAwBD,EAAWxF,WACnCA,OAAuC,IAA1ByF,EAAsC,GAAKA,EACxDC,EAAqBF,EAAW/G,QAChCA,OAAiC,IAAvBiH,EAAmC,GAAKA,EAElD5D,EAAU9B,EAAW,GAErB8B,IACFA,EAAQlC,MAAM8D,OAAS5yC,KAAKsvC,WAAWxnB,MACvCkpB,EAAQlC,MAAM0D,KAAO,QAEvB,IAAIqC,EAAUlF,EAAche,KAAO9qB,EAAQ8qB,IACvCA,EAAM,CAAA,EACV,GAAgB,UAAZkjB,EAAqB,CACvB,IAAI9zB,EAAIiwB,EAAQ1nC,KAAK,GACjB6W,EAAI6wB,EAAQ1nC,KAAK,GACN5J,KAAK4C,KAAK5C,KAAKkO,IAAImT,EAAE,GAAKZ,EAAE,GAAI,GAAKzgB,KAAKkO,IAAImT,EAAE,GAAKZ,EAAE,GAAI,IAC3D,GAAK6wB,EAAQ1nC,KAAK,KAC/ByX,EAAIiwB,EAAQ1nC,KAAK,IAEnBqoB,EAAMgf,GAAe,CACnBrB,WAAYtvC,KAAKsvC,WACjB1d,MAAO7Q,EACP4Q,IAAKxR,EACLtQ,MAAO8/B,EAAcmF,UAEzB,KAAuB,QAAZD,EACTljB,EAAMof,GAAa,CAAE1nC,KAAM2nC,EAASnhC,MAAO8/B,EAAcmF,WAC/CD,GAAuB,SAAZA,GACrB70C,KAAK6qC,WAAa7qC,KAAK6qC,UAAU54B,OAAO,kBAAkBQ,SAc5D,OAXIkf,EAAIud,aACNvd,EAAIud,WAAWhjB,QAAQ,SAAUkG,GAC/BA,EAAE0c,MAAM0D,KAAOgC,EAAOlF,WAAWxnB,MACjCsK,EAAE0c,MAAM8D,OAAS4B,EAAOlF,WAAWxnB,KACrC,GACAonB,EAAaA,EAAWpQ,OAAOnN,EAAIud,aAGjClvC,KAAKwsC,UACgB,IAAnBmB,EAAQllC,QAAcymC,EAAW7iC,KAAK,CAAEyI,KAAM,SAAU64B,YAEvDuB,CACT,EAzDO,kBA0DN,CACDtG,IAAK,WACL59B,mBACE,IAAI+pC,EAAS/0C,KAET6G,EAAUI,UAAUwB,OAAS,QAAsB,IAAjBxB,UAAU,GAAmBA,UAAU,GAAK,CAAA,EAE9E+tC,EAAWh1C,KAAKsvC,WAAWxE,KAC3BkD,EAAQgH,EAAShH,OAASnnC,EAAQmnC,OAAS,UAC3CiH,EAAa,CACf17B,KAAM1S,EAAQ0S,KACdy0B,QACAj+B,OAAQ/P,KAAKsvC,WAAWv/B,QAEtBmlC,EAAWF,EAASE,UAAYruC,EAAQquC,SACxCpK,EAAO,CAAA,EACM,aAAboK,EAAyBpK,EAAOmE,GAAagG,GAAkC,eAAbC,IAA2BpK,EAAOqE,GAAe8F,IAEvH,IAAIE,EAAQrK,EACRsK,EAAmBD,EAAMjG,WACzBA,OAAkC,IAArBkG,EAAiC,GAAKA,EACnDC,EAAgBF,EAAMxH,QACtBA,OAA4B,IAAlB0H,EAA8B,GAAKA,EAMjD,GAJAnG,EAAWhjB,QAAQ,SAAUkG,GAC3BA,EAAE0c,MAAM8D,OAASmC,EAAOzF,WAAWxnB,KACrC,GAEI9nB,KAAKwsC,SAAU,CACjBmB,EAAU3tC,KAAKwwC,WAAW,CAAC,CAAEhwC,EAAG,EAAGK,EAAG,EAAGgtC,KAAM7tC,KAAKs1C,SAASnrB,KAAKnqB,SAClEkvC,EAAW7iC,KAAK,CAAEyI,KAAM,SAAU64B,YAElC,IAAI4H,EAAWv1C,KAAKs1C,SAASnrB,KAAKnqB,MAC9B4xB,EAAQ5xB,KAAKw1C,YAAYrrB,KAAKnqB,MAC9B2xB,EAAM3xB,KAAKy1C,UAAUtrB,KAAKnqB,MAC9BA,KAAK8qC,KAAK37B,KAAK0+B,EAAAA,OAAOC,UAAU77B,EAAAA,OAAO,iBAAiBuH,QAAQ2E,GAAG,QAAS,SAAUla,GACpF,OAAO2tB,EAAM3tB,EACf,GAAGka,GAAG,OAAQ,SAAUla,GACtB,OAAOsxC,EAAStxC,EAClB,GAAGka,GAAG,MAAO,SAAUla,GACrB,OAAO0tB,EAAI1tB,EACb,GACF,MACEjE,KAAK8qC,KAAK3sB,GAAG,iBAAkB,MAEjC,OAAO+wB,CACT,EA5CO,aA6CN,CACDtG,IAAK,kBACL59B,MAAOvK,EAAA,SAAyBoG,GAC9B,IAAImuC,EAAWh1C,KAAKsvC,WAAWxE,KAC3B7uB,OAA+B,IAArB+4B,EAAS/4B,QAAwB+4B,EAAS/4B,QAAUjc,KAAK6sC,YACnE73B,EAAcggC,EAAShgC,aAAenO,EAAQmO,aAAe,YAC7DkgC,EAAWF,EAASE,UAAYruC,EAAQquC,SACxClH,EAAQgH,EAAShH,OAASnnC,EAAQmnC,OAAS,UAE9B,aAAbkH,EAAyBlgC,EAAc,YAAkC,eAAbkgC,IAA2BlgC,EAAc,aAEzG,IAAIigC,EAAa,CACfh5B,UACA1C,KAAM1S,EAAQ0S,KACdxJ,OAAQ/P,KAAKsvC,WAAWv/B,OACxBiF,cACAg5B,SAGE0H,EAAiBtH,GAAc6G,GAC/Bz0C,EAAIk1C,EAAel1C,EACnBK,EAAI60C,EAAe70C,EAMvB,OAJAb,KAAKozC,cAAgB5yC,EAAIR,KAAKsvC,WAAWrsC,GACzCjD,KAAKqzC,cAAgBxyC,EAAIb,KAAKsvC,WAAWnsC,GACzCnD,KAAK8qC,MAAQ9qC,KAAK+yC,YAAY/gC,KAAK,YAAa,aAAexR,EAAI,KAAOK,EAAI,KAEvE,EACT,EA1BO,oBA2BN,CACD+nC,IAAK,eACL59B,MAAOvK,EAAA,SAAsByyC,EAAWyC,GACtC,OAAO31C,KAAK41C,UAAU1C,EAAWyC,EACnC,EAFO,iBAGN,CACD/M,IAAK,gBACL59B,mBACEhL,KAAK4qC,SAAW5qC,KAAK61C,aAAa71C,KAAK4qC,QAAS5qC,KAAK81C,cACvD,EAFO,kBAGN,CACDlN,IAAK,kBACL59B,mBACEhL,KAAK6qC,WAAa7qC,KAAK61C,aAAa71C,KAAK6qC,UAAW7qC,KAAK+1C,gBAC3D,EAFO,oBAGN,CACDnN,IAAK,aACL59B,mBACE,IAAIuO,EAAOtS,UAAUwB,OAAS,QAAsB,IAAjBxB,UAAU,GAAmBA,UAAU,GAAKjH,KAAKg2C,cAEpFh2C,KAAK+yC,aAAe/yC,KAAK61C,aAAa71C,KAAK+yC,YAAa/yC,KAAKi2C,gBAAgB,CAAE18B,UAC/EvZ,KAAK8qC,MAAQ9qC,KAAK61C,aAAa71C,KAAK8qC,KAAM9qC,KAAKk2C,SAAS,CAAE38B,SAC5D,EALO,eAMN,CACDqvB,IAAK,cACL59B,mBACE,IAAIqG,EAAWrR,KAAKsvC,WAAWj+B,SAC/BrR,KAAKwI,EAAEwJ,KAAK,YAAa,aAAeX,EAAS7Q,EAAI,KAAO6Q,EAASxQ,EAAI,IAC3E,EAHO,gBAIN,CACD+nC,IAAK,kBACL59B,mBACEhL,KAAK4qC,SAAW5qC,KAAK4qC,QAAQ34B,OAAO,KAAKQ,SACzCzS,KAAK6qC,WAAa7qC,KAAK6qC,UAAU54B,OAAO,KAAKQ,QAE/C,EAJO,oBAKN,CACDm2B,IAAK,YACL59B,mBACE,GAAIhL,KAAK8qC,KAAM,CACb,IAAI/6B,EAAS/P,KAAKsvC,WAAWv/B,OAC7B/P,KAAK8qC,KAAK94B,KAAK,YAAa,aAAejC,EAAOvP,EAAI,KAAOuP,EAAOlP,EAAI,IAC1E,CACF,EALO,cAMN,CACD+nC,IAAK,2BACL59B,MAAOvK,EAAA,SAAkCyrC,GACnCA,GAAalsC,KAAKsvC,WAAWhmC,OAC/BtJ,KAAKuzC,KAAKrH,GACVlsC,KAAKwzC,KAAKtH,IAEZlsC,KAAKorC,aACP,EANO,6BAON,CACDxC,IAAK,eACL59B,mBACEhL,KAAKwI,EAAEwJ,KAAK,QAAS,eAAiBhS,KAAK+qC,WAAa/qC,KAAK+qC,aAAe,KAAO/qC,KAAKwsC,SAAW,WAAa,IAAM,KAAOxsC,KAAKsvC,WAAWvE,WAAa,IAC5J,EAFO,iBAGN,CACDnC,IAAK,OACL59B,mBACEhL,KAAK0rC,eACL1rC,KAAKorC,cACLprC,KAAKurC,YACLvrC,KAAKqrC,gBACLrrC,KAAKwrC,kBACLxrC,KAAKyrC,YACP,EAPO,SAQN,CACD7C,IAAK,cACL59B,mBACEulC,EAAAA,MAAM4F,YAAYC,kBAClBp2C,KAAK8yC,YAAc9yC,KAAK8yC,WAAW3jC,KAAK,YAAanP,KAAKwI,EAAGxI,KAAKsvC,YAClEtvC,KAAKwI,EAAEgU,QAAQ,YAAY,GAC3Bxc,KAAKwI,EAAEgJ,UAAU,iBAAiBqH,MAAM,iBAAkB,OAC5D,EALO,gBAMN,CACD+vB,IAAK,YACL59B,mBACEhL,KAAK8yC,YAAc9yC,KAAK8yC,WAAW3jC,KAAK,UAAWnP,KAAKwI,EAAGxI,KAAKsvC,YAChEtvC,KAAKwI,EAAEgU,QAAQ,YAAY,GAC3Bxc,KAAKwI,EAAEgJ,UAAU,iBAAiBqH,MAAM,iBAAkB,MAC5D,EAJO,cAKN,CACD+vB,IAAK,cACL59B,mBACE,IAAIqG,EAAWrR,KAAKsvC,WAAWj+B,SAC/BA,EAAS7Q,GAAK+vC,EAAAA,MAAMttC,GACpBoO,EAASxQ,GAAK0vC,EAAAA,MAAMptC,GACpBnD,KAAKsvC,WAAWj+B,SAAWA,CAC7B,EALO,gBAMN,CACDu3B,IAAK,WACL59B,mBACE,IAAI+E,EAAS/P,KAAKsvC,WAAWv/B,OAC7BA,EAAOvP,GAAK+vC,EAAAA,MAAMttC,GAClB8M,EAAOlP,GAAK0vC,EAAAA,MAAMptC,GAClBnD,KAAKsvC,WAAWv/B,OAASA,CAC3B,EALO,aAMN,CACD64B,IAAK,aACL59B,MAAOvK,EAAA,SAAoBktC,GACzB,IAAI0I,EAASr2C,KAEb,OAAO2tC,EAAQl5B,IAAI,SAAUhR,GAC3B,OAAOslC,GAAS,CAAA,EAAItlC,EAAG,CACrBmuB,MAAOykB,EAAOb,YAAYrrB,KAAKksB,GAC/B1kB,IAAK0kB,EAAOZ,UAAUtrB,KAAKksB,IAE/B,EACF,EATO,iBAWFxD,CACT,IAEIyD,GAAa71C,EAAA,SAAoB81C,EAAa3E,EAAc4E,GAC9D,OAAA,SAAiBC,GAGf,SAASH,EAAWI,GAClBzO,GAAejoC,KAAMs2C,GAErB,IAAIK,EAAS9M,GAA0B7pC,MAAOs2C,EAAW1M,WAAa36B,OAAOq6B,eAAegN,IAAannC,KAAKnP,KAAM02C,IAcpH,OAZAC,EAAO/E,aAAeA,EAElBA,EAAa90B,SACf80B,EAAa90B,QAAQoP,QAAQ,SAAUjoB,GACrC0yC,EAAO1yC,IAAM0yC,EAAO1yC,GAAGwO,SAEvBkkC,EAAO1yC,QAAK,EACF,SAANA,IACF0yC,EAAO5D,iBAAc,EAEzB,GAEK4D,CACT,CAwCA,OA5DAnN,GAAS8M,EAAYG,GAEZh2C,EAAA61C,EAAA,cAoBTlO,GAAYkO,EAAY,CAAC,CACvB1N,IAAK,YACL59B,mBACE,MAAO,IAAM4mC,EAAa7G,WAAanb,GAAI0mB,EAAW51C,UAAUkpC,WAAa36B,OAAOq6B,eAAegN,EAAW51C,WAAY,YAAaV,OAAS4vB,GAAI0mB,EAAW51C,UAAUkpC,WAAa36B,OAAOq6B,eAAegN,EAAW51C,WAAY,YAAaV,MAAMmP,KAAKnP,OAAS,GACtQ,EAFO,cAGN,CACD4oC,IAAK,cACL59B,MAAOvK,EAAA,SAAqBoG,GAE1B,OADA7G,KAAK4xC,aAAahH,QAAU7B,GAAS,CAAA,EAAI6I,EAAahH,QAAS5qC,KAAK4xC,aAAahH,SAC1Ehb,GAAI0mB,EAAW51C,UAAUkpC,WAAa36B,OAAOq6B,eAAegN,EAAW51C,WAAY,cAAeV,MAAMmP,KAAKnP,KAAM+oC,GAAS,CAAA,EAAIliC,EAAS7G,KAAK4xC,aAAahH,SACpK,EAHO,gBAIN,CACDhC,IAAK,gBACL59B,MAAOvK,EAAA,SAAuBoG,GAE5B,OADA7G,KAAK4xC,aAAa/G,UAAY9B,GAAS,CAAA,EAAI6I,EAAa/G,UAAW7qC,KAAK4xC,aAAa/G,WAC9Ejb,GAAI0mB,EAAW51C,UAAUkpC,WAAa36B,OAAOq6B,eAAegN,EAAW51C,WAAY,gBAAiBV,MAAMmP,KAAKnP,KAAM+oC,GAAS,CAAA,EAAIliC,EAAS+qC,EAAa/G,UAAW7qC,KAAK4xC,aAAa/G,WAC9L,EAHO,kBAIN,CACDjC,IAAK,WACL59B,MAAOvK,EAAA,SAAkBoG,GAEvB,OADA7G,KAAK4xC,aAAa9G,KAAO/B,GAAS,CAAA,EAAI6I,EAAa9G,KAAM9qC,KAAK4xC,aAAa9G,MACpElb,GAAI0mB,EAAW51C,UAAUkpC,WAAa36B,OAAOq6B,eAAegN,EAAW51C,WAAY,WAAYV,MAAMmP,KAAKnP,KAAM+oC,GAAS,CAAA,EAAIliC,EAAS+qC,EAAa9G,KAAM9qC,KAAK4xC,aAAa9G,MACpL,EAHO,aAIN,CACDlC,IAAK,kBACL59B,MAAOvK,EAAA,SAAyBoG,GAC9B,OAAO+oB,GAAI0mB,EAAW51C,UAAUkpC,WAAa36B,OAAOq6B,eAAegN,EAAW51C,WAAY,kBAAmBV,MAAMmP,KAAKnP,KAAM+oC,GAAS,CAAA,EAAIliC,EAAS+qC,EAAa9G,KAAM9qC,KAAK4xC,aAAa9G,MAC3L,EAFO,qBAGL,CAAC,CACHlC,IAAK,OACL59B,MAAOvK,EAAA,SAAc6uC,EAAYpD,GAK/B,OAJAtc,GAAI0mB,EAAW1M,WAAa36B,OAAOq6B,eAAegN,GAAa,OAAQt2C,MAAMmP,KAAKnP,KAAMsvC,EAAYpD,GAChGsK,IACFlH,EAAakH,EAAMlH,EAAYpD,IAE1BoD,CACT,EANO,WAQFgH,EA7DT,CA8DEC,EACJ,EAhEiB,cAkEbK,GAAA,SAAuBC,GAGzB,SAASD,EAAWE,GAClB7O,GAAejoC,KAAM42C,GAErB,IAAIG,EAASlN,GAA0B7pC,MAAO42C,EAAWhN,WAAa36B,OAAOq6B,eAAesN,IAAaznC,KAAKnP,KAAM82C,IAIpH,OAFAC,EAAOrK,SAAWoK,EAAOpK,UAAY,IACrCqK,EAAOnK,WACAmK,CACT,CA+DA,OAzEAvN,GAASoN,EAAYC,GAEZp2C,EAAAm2C,EAAA,cAUTxO,GAAYwO,EAAY,CAAC,CACvBhO,IAAK,iBACL59B,MAAOvK,EAAA,SAAwBisC,GAC7B1sC,KAAK0sC,SAAWA,EAChB1sC,KAAK4sC,UACP,EAHO,mBAON,CACDhE,IAAK,WACL59B,mBACE,GAAIhL,KAAK8qC,KAAM,CACb4I,GAAa1zC,KAAK8qC,KAAM,CAAC9qC,KAAKsvC,YAAa,IAAK,2BAEhD,IAAIyD,EAAc/yC,KAAK8qC,KAAK74B,OAAO,6BACnCyhC,GAAaX,EAAa,CAAC/yC,KAAKsvC,YAAa,OAAQ,sBACrDoE,GAAaX,EAAa,CAAC/yC,KAAKsvC,YAAa,OAAQ,yBACrDoE,GAAaX,EAAa,CAAC/yC,KAAKsvC,YAAa,OAAQ,yBAErD,IAAI0H,EAAY,CAAEh/B,OAAQ,GACtBM,EAAQtY,KAAKwI,EAAEyJ,OAAO,8BACtBglC,EAAaj3C,KAAKsvC,WAAWxE,MAAQ9qC,KAAKsvC,WAAWxE,KAAK3xB,MAAQnZ,KAAK4xC,cAAgB5xC,KAAK4xC,aAAa9G,MAAQ9qC,KAAK4xC,aAAa9G,KAAK3xB,MAAQnZ,KAAK0sC,SAErJwK,EAAel3C,KAAKsvC,WAAWxE,MAAQ9qC,KAAKsvC,WAAWxE,KAAKoM,cAAgBl3C,KAAK4xC,cAAgB5xC,KAAK4xC,aAAa9G,MAAQ9qC,KAAK4xC,aAAa9G,KAAKoM,aAElJC,EAAYn3C,KAAKsvC,WAAWxE,MAAQ9qC,KAAKsvC,WAAWxE,KAAKqM,WAAan3C,KAAK4xC,cAAgB5xC,KAAK4xC,aAAa9G,MAAQ9qC,KAAK4xC,aAAa9G,KAAKqM,UAE5IC,EAAiB,CAAEj9B,IAAK,EAAGC,OAAQ,EAAGL,KAAM,EAAGD,MAAO,GAY1D,GAXyB,iBAAdq9B,EACTC,EAAiB,CACfj9B,IAAKg9B,EACL/8B,OAAQ+8B,EACRp9B,KAAMo9B,EACNr9B,MAAOq9B,GAEAA,GAAuF,iBAApD,IAAdA,EAA4B,YAActP,GAAQsP,MAChFC,EAAiBrO,GAASqO,EAAgBD,IAGxCn3C,KAAKsvC,WAAWxE,KAAKzuB,MAAO,CAC9B,IAAIA,EAAQrc,KAAKwI,EAAEyJ,OAAO,8BAC1BoK,EAAMnK,KAAKlS,KAAKsvC,WAAWxE,KAAKzuB,OAChCA,EAAMrK,KAAK,OAAQhS,KAAKsvC,WAAWxnB,OACnCzL,EAAMrK,KAAK,cAAe,QAC1BqK,EAAMlN,KAAKgK,GAAM89B,EAAYC,GAC7BF,EAAY36B,EAAM7C,OAAOC,SAC3B,CAEAnB,EAAMpG,KAAKlS,KAAKsvC,WAAWxE,KAAKxyB,OAAOtG,KAAK,KAAM,KAClDsG,EAAMnJ,KAAKgK,GAAM89B,EAAYC,GAE7B5+B,EAAMtG,KAAK,IAAwB,IAAnBglC,EAAUh/B,QAAgB,GAC1CM,EAAMtG,KAAK,OAAQhS,KAAKsvC,WAAWxnB,OAEnC,IAAIvO,EAAOvZ,KAAKg2C,cAEhBh2C,KAAKwI,EAAEyJ,OAAO,2BAA2BD,KAAK,QAASuH,EAAKxB,MAAQq/B,EAAer9B,KAAOq9B,EAAet9B,OAAO9H,KAAK,SAAUuH,EAAKvB,OAASo/B,EAAej9B,IAAMi9B,EAAeh9B,QAAQpI,KAAK,IAAKuH,EAAK/Y,EAAI42C,EAAer9B,MAAM/H,KAAK,KAAMolC,EAAej9B,KAAKnI,KAAK,OAAQ,SAASA,KAAK,eAAgB,EAC7S,CACF,EAhDO,eAkDF4kC,EA1EL,CA2EF/D,IAEYyD,GAAWM,GAAY,CACnC7L,UAAW,QACXD,KAAM,CAAEkD,MAAO,YAGjB,IAAIqJ,GAAYf,GAAWM,GAAY,CACrC7L,UAAW,UACXD,KAAM,CAAEoK,SAAU,gBAGhBoC,GAAiBhB,GAAWe,GAAW,CACzCtM,UAAW,gBACXF,UAAW,CAAE/1B,KAAM,WAGAwhC,GAAWe,GAAW,CACzCtM,UAAW,gBACXF,UAAW,CAAE/1B,KAAM,WAGPwhC,GAAWzD,GAAM,CAC7B9H,UAAW,QACXH,QAAS,CAAE91B,KAAM,SACjBgI,QAAS,CAAC,YAAa,UAGHw5B,GAAWM,GAAY,CAC3C7L,UAAW,iBACXH,QAAS,CAAE91B,KAAM,UACjBg2B,KAAM,CAAEoK,SAAU,cAClBrK,UAAW,CAAE/1B,KAAM,WAGDwhC,GAAWM,GAAY,CACzC7L,UAAW,eACXH,QAAS,CAAE91B,KAAM,QACjBg2B,KAAM,CAAEoK,SAAU,cAClBrK,UAAW,CAAE/1B,KAAM,WAGrB,IAAIyiC,GAAA,SAAyBC,GAG3B,SAASD,IAEP,OADAtP,GAAejoC,KAAMu3C,GACd1N,GAA0B7pC,MAAOu3C,EAAa3N,WAAa36B,OAAOq6B,eAAeiO,IAAevwC,MAAMhH,KAAMiH,WACrH,CA2BA,OAhCAuiC,GAAS+N,EAAcC,GAEd/2C,EAAA82C,EAAA,gBAKTnP,GAAYmP,EAAc,CAAC,CACzB3O,IAAK,OACL59B,MAAOvK,EAAA,SAAcyrC,GACnBtc,GAAI2nB,EAAa72C,UAAUkpC,WAAa36B,OAAOq6B,eAAeiO,EAAa72C,WAAY,OAAQV,MAAMmP,KAAKnP,KAAMksC,GAChH,IAAI1jC,EAAIxI,KAAKsvC,YACR9mC,EAAEoiC,QAAQ3pC,IAAMuH,EAAEoiC,QAAQxpC,KAAOoH,EAAEc,MAAQ4iC,EAAUrrC,IACxD2H,EAAE3H,EAAIqrC,EAAUrrC,EAAE2H,EAAEc,QAEjBd,EAAEoiC,QAAQ3pC,KAAMuH,EAAEoiC,QAAQxpC,IAAQoH,EAAEhI,IACvCgI,EAAEhI,EAAIgI,EAAEoiC,QAAQ3pC,IAAMuH,EAAEoiC,QAAQxpC,GAEpC,EATO,SAUN,CACDwnC,IAAK,OACL59B,MAAOvK,EAAA,SAAcyrC,GACnBtc,GAAI2nB,EAAa72C,UAAUkpC,WAAa36B,OAAOq6B,eAAeiO,EAAa72C,WAAY,OAAQV,MAAMmP,KAAKnP,KAAMksC,GAChH,IAAI1jC,EAAIxI,KAAKsvC,YACR9mC,EAAEoiC,QAAQ1pC,IAAMsH,EAAEoiC,QAAQvpC,KAAOmH,EAAEc,MAAQ4iC,EAAU1rC,IACxDgI,EAAEhI,EAAI0rC,EAAU1rC,EAAEgI,EAAEc,QAEjBd,EAAEoiC,QAAQ1pC,KAAMsH,EAAEoiC,QAAQvpC,IAAQmH,EAAE3H,IACvC2H,EAAE3H,EAAI2H,EAAEoiC,QAAQ1pC,IAAMsH,EAAEoiC,QAAQvpC,GAEpC,EATO,WAWFk2C,EAjCL,CAkCFF,IAEkBf,GAAWiB,GAAc,CAC3CxM,UAAW,sBACXH,QAAS,CAAE91B,KAAM,eAGnB,IAAI4+B,GAAejzC,EAAA,SAAsB+H,EAAGvE,EAAG6Q,EAAMi2B,EAAWxwB,GAC9D,IAAImzB,EAAQllC,EAAEgJ,UAAUsD,EAAO,KAAOyF,GAAWwwB,IAAYzhC,KAAKrF,GAIlE,OAHAypC,EAAM57B,QAAQC,OAAO+C,GAAM3C,MAAMu7B,GAAO17B,KAAK,QAAS+4B,GAEtD2C,EAAM97B,OAAOa,SACNjK,CACT,EANmB,gBAQfyqC,GAAcxyC,EAAA,SAAqBqyC,EAAYxD,EAAYxD,GAC7D,IAAIoH,EAAYpH,EAAMoH,UAClBC,EAAOrH,EAAMqH,KAEbD,GACFA,EAAU/0B,GAAG,wBAAyB,WACpC20B,EAAW3jC,KAAKgkC,EAAO,OAAQD,EAAW5D,EAC5C,GAAGnxB,GAAG,uBAAwB,WAC5B,OAAO20B,EAAW3jC,KAAKgkC,EAAO,MAAOD,EAAW5D,EAClD,GAAGnxB,GAAG,oBAAqB,WACzB,OAAO20B,EAAW3jC,KAAKgkC,EAAO,QAASD,EAAW5D,EACpD,EAEJ,EAbkB,eAgBdn2B,GAAO1Y,EAAA,SAAcyR,EAAM6F,EAAOm/B,GACpC,IAAIO,EAAaxwC,UAAUwB,OAAS,QAAsB,IAAjBxB,UAAU,GAAmBA,UAAU,GAAK,IAErFiL,EAAKS,KAAK,WASR,IARA,IAAIT,EAAOD,EAAAA,OAAOjS,MACd6a,EAAQ3I,EAAKA,OAAO4I,MAAMo8B,GAAgB,cAAcn8B,UAAUrI,OAAO,SAAUlP,GACrF,MAAa,KAANA,CACT,GACIiY,OAAO,EACPu1B,EAAU,GACVz1B,EAAQrJ,EAAKA,KAAK,MAAMH,OAAO,SAASC,KAAK,IAAK,GAAGA,KAAK,KAAM,SAE7DyJ,EAAOZ,EAAMa,OAClBs1B,EAAQ3kC,KAAKoP,GACbF,EAAMrJ,KAAK8+B,EAAQr1B,KAAK,MACpBJ,EAAM/B,OAAOoC,wBAA0B7D,GAASi5B,EAAQvoC,OAAS,IACnEuoC,EAAQt1B,MACRH,EAAMrJ,KAAK8+B,EAAQr1B,KAAK,MACxBq1B,EAAU,CAACv1B,GACXF,EAAQrJ,EAAKH,OAAO,SAASC,KAAK,IAAK,GAAGA,KAAK,KAAMylC,EAAa,MAAMvlC,KAAKuJ,GAGnF,EACF,EAvBW,QAyBPu4B,GAAqBvzC,EAAA,SAA4B8Q,GACnD,IAAImmC,EAAWzwC,UAAUwB,OAAS,QAAsB,IAAjBxB,UAAU,GAAmBA,UAAU,GAAK,gBAEnF,OAAKsK,EAIEA,EAAUC,UAAUkmC,GAAUtmB,QAAQhF,OAAO,SAAUvjB,EAAGupB,GAC/D,IAAI7Y,EAAO6Y,EAAE3Y,UACb5Q,EAAErI,EAAId,KAAKmE,IAAIgF,EAAErI,EAAG+Y,EAAK/Y,GACzBqI,EAAEhI,EAAInB,KAAKmE,IAAIgF,EAAEhI,EAAG0Y,EAAK1Y,GACzBgI,EAAEkP,MAAQrY,KAAKkE,IAAIiF,EAAEkP,MAAOwB,EAAKxB,OAEjC,IAAI4/B,EAAUvlB,GAAKA,EAAE2hB,YAAc3hB,EAAE2hB,WAAWlzC,EAEhD,OADAgI,EAAEmP,OAAStY,KAAKkE,IAAIiF,EAAEmP,QAAS2/B,GAAWz8B,WAAWy8B,EAAQ3sC,QAAU,GAAKuO,EAAKvB,QAC1EnP,CACT,EAAG,CAAErI,EAAG,EAAGK,EAAG,EAAGkX,MAAO,EAAGC,OAAQ,IAZ1B,CAAExX,EAAG,EAAGK,EAAG,EAAGkX,MAAO,EAAGC,OAAQ,EAa3C,EAjByB,sBAmBzB,SAASs3B,KACP,IAAIrD,EAAc,GACd2L,OAAa,EACb/wC,OAAU,EAEdiW,EAAU,GACNovB,EAAY,CAAA,EACZC,EAAmB,CAAA,EACnBK,GAAW,EACXqL,OAAM,EACN/iC,EAAOuiC,GACP3K,OAAW,EACXG,OAAc,EACdiL,EAAuBC,EAAAA,SAAS,cAAe,aAAc,eAAgB,gBAAiB,eAAgB,iBAAkB,WAAY,UAAW,YAAa,UAAW,aAC/KC,OAAM,EAEN1I,EAAa7uC,EAAA,SAAoB8Q,GACnCymC,EAAMzmC,EAEDi7B,GACHj7B,EAAUC,UAAU,iBAAiBiB,SAGvC,IAAIwlC,EAAwBhM,EAAYx3B,IAAI,SAAUjM,GAOpD,OANKA,EAAEsM,OACLtM,EAAEsM,KAAOA,GAENtM,EAAEsU,UACLtU,EAAEsU,QAAUA,GAEP,IAAIqtB,GAAW3hC,EACxB,GAEAovC,EAAaA,GAAc,IAAI5L,GAAqB,CAClDC,YAAagM,EACb/L,YACAC,mBACA0L,QAGgBtmC,EAAUC,UAAU,KAAKlI,KAAK,CAACsuC,IACrC9lC,QAAQC,OAAO,KAAKC,KAAK,QAAS,eAE9C,IAAI07B,EAAQn8B,EAAUU,OAAO,iBAC7ByhC,GAAahG,EAAOkK,EAAW3L,YAAa,IAAK,cAEhCyB,EAAMl8B,UAAU,gBAEtBmB,KAAK,SAAU1O,GACxB,IAAIuE,EAAIyJ,EAAAA,OAAOjS,MAEfwI,EAAEwJ,KAAK,QAAS,cAEhB0hC,GAAalrC,EAAG,CAACvE,GAAI,IAAK,wBAC1ByvC,GAAalrC,EAAG,CAACvE,GAAI,IAAK,sBAC1ByvC,GAAalrC,EAAG,CAACvE,GAAI,IAAK,mBAC1ByvC,GAAalrC,EAAEyJ,OAAO,qBAAsB,CAAChO,GAAI,IAAK,2BACtDA,EAAE6Q,KAA6B,oBAAtB7Q,EAAE6Q,KAAKpR,WAAmCO,EAAE6Q,KAAO,IAAI7Q,EAAE6Q,KAAK,CACrEtM,IACA8mC,WAAYrrC,EACZyoC,WACAG,cACAL,WACAsG,WAAYgF,EACZ5L,cAEFjoC,EAAE6Q,KAAKojC,OACPj0C,EAAE6Q,KAAK83B,UAAY3oC,EAAE6Q,KAAK83B,UAC5B,EACF,EArDiB,cAmNjB,OA5JA0C,EAAWvD,KAAO,WAQhB,OANAoM,QAAQvX,IAAI,qLAAsLgX,EAAW7L,MAE7MxT,OAAOjnB,KAAK8mC,KAAKC,UAAUT,EAAW7L,KAAKt3B,IAAI,SAAUjM,GAEvD,cADOA,EAAEsM,KACFtM,CACT,KACO8mC,CACT,EAEAA,EAAWzzB,OAAS,WAOlB,OANIowB,GAAe2L,IACjB3L,EAAc2L,EAAW3L,YAAYx3B,IAAI,SAAUjM,GAEjD,OADAA,EAAEsM,KAAKojC,OACA1vC,CACT,IAEK8mC,CACT,EAEAA,EAAWgJ,WAAa,WAKtB,OAJIV,IACFA,EAAWU,WAAW5L,GACtBT,EAAc2L,EAAW3L,aAEpBqD,CACT,EAEAA,EAAWiJ,iBAAmB,WAG5B,OAFAX,EAAWtL,2BACXL,EAAc2L,EAAW3L,YAClBqD,CACT,EAEAA,EAAWxyB,QAAU,SAAUzc,GAC7B,OAAK4G,UAAUwB,QACfqU,EAAUzc,EACNu3C,IACFA,EAAWY,cAAc17B,GACzBmvB,EAAc2L,EAAW3L,aAEpBqD,GANuBxyB,CAOhC,EAEAwyB,EAAW5C,SAAW,SAAUrsC,GAC9B,OAAK4G,UAAUwB,QACfikC,EAAWrsC,EACPu3C,IACFA,EAAWjL,eAAeD,GAC1BT,EAAc2L,EAAW3L,aAEpBqD,GANuB5C,CAOhC,EAEA4C,EAAWzC,YAAc,SAAUxsC,GACjC,OAAK4G,UAAUwB,QACfokC,EAAcxsC,EACVu3C,IACFA,EAAWa,kBAAkB5L,GAC7BZ,EAAc2L,EAAW3L,aAEpBqD,GANuBzC,CAOhC,EAEAyC,EAAWx6B,KAAO,SAAUzU,EAAGq2C,GAC7B,OAAKzvC,UAAUwB,QACfqM,EAAOzU,EACHu3C,IACFA,EAAW3L,YAAYx3B,IAAI,SAAUjM,GACnCA,EAAEsM,KAAKg2B,MAAQtiC,EAAEsM,KAAKg2B,KAAKt5B,UAAU,mCAAmCiB,SACxEjK,EAAEsM,KAAKi+B,aAAevqC,EAAEsM,KAAKi+B,YAAYvhC,UAAU,KAAKiB,SACxDjK,EAAEsM,KAAK81B,SAAWpiC,EAAEsM,KAAK81B,QAAQp5B,UAAU,KAAKiB,SAChDjK,EAAEsM,KAAK+1B,WAAariC,EAAEsM,KAAK+1B,UAAUr5B,UAAU,KAAKiB,SACpDjK,EAAEsM,KAAK88B,aAAe,CAAA,EACtBppC,EAAEsM,KAAOA,EAETtM,EAAEoiC,QAAU8L,GAAYA,EAAS9L,SAAWpiC,EAAEoiC,QAC9CpiC,EAAEqiC,UAAY6L,GAAYA,EAAS7L,WAAariC,EAAEqiC,UAClDriC,EAAEsiC,KAAO4L,GAAYA,EAAS5L,MAAQtiC,EAAEsiC,IAC1C,GAEAmB,EAAc2L,EAAW3L,aAEpBqD,GAlBuBx6B,CAmBhC,EAEAw6B,EAAWrD,YAAc,SAAU5rC,GACjC,IAAK4G,UAAUwB,OAAQ,OAAOmvC,GAAcA,EAAW3L,aAAeA,GACtEA,EAAc5rC,EAEVu3C,GAAcA,EAAW3L,eACfA,EAAYyM,KAAK,SAAUz0C,GACrC,OAAQA,EAAE6Q,MAA8B,oBAAtB7Q,EAAE6Q,KAAKpR,UAC3B,IAGEk0C,EAAa,KACbtI,EAAW0I,IAEXJ,EAAW3L,YAAcA,GAG7B,OAAOqD,CACT,EAEAA,EAAWzoC,QAAU,SAAUxG,GAC7B,OAAK4G,UAAUwB,QACf5B,EAAUxG,EACHivC,GAFuBzoC,CAGhC,EAEAyoC,EAAWpD,UAAY,SAAU7rC,GAC/B,OAAK4G,UAAUwB,QACfyjC,EAAY7rC,EACLivC,GAFuBpD,CAGhC,EAEAoD,EAAWnD,iBAAmB,SAAU9rC,GACtC,OAAK4G,UAAUwB,QACf0jC,EAAmB9rC,EACZivC,GAFuBnD,CAGhC,EAEAmD,EAAWuI,IAAM,SAAUx3C,GACzB,OAAK4G,UAAUwB,QACfovC,EAAMx3C,EACCivC,GAFuBuI,CAGhC,EAEAvI,EAAW9C,SAAW,SAAUnsC,GAC9B,OAAK4G,UAAUwB,QACf+jC,EAAWnsC,EAEP23C,GACFA,EAAIxmC,UAAU,gBAAgBgL,QAAQ,WAAYgwB,GAGhDoL,IACFA,EAAWpL,SAASA,GACpBP,EAAc2L,EAAW3L,aAEpBqD,GAXuB9C,CAYhC,EAEA8C,EAAWsI,WAAa,SAAUv3C,GAChC,OAAK4G,UAAUwB,QACfmvC,EAAav3C,EACNivC,GAFuBsI,CAGhC,EAEAtI,EAAWnxB,GAAK,WACd,IAAInT,EAAQ8sC,EAAqB35B,GAAGnX,MAAM8wC,EAAsB7wC,WAChE,OAAO+D,IAAU8sC,EAAuBxI,EAAatkC,CACvD,EAEOskC,CACT,CC9kEA,SAASqJ,GAAY3tC,GACjB,MAAuB,KAAfA,EAAQ,IAAa,EAAItL,KAAKC,EAC1C,CAEA,SAASi5C,GAAWpJ,EAAe/Y,GAC/B,MAAO,CACHj2B,EAAGd,KAAKwD,IAAIssC,EAAQ9vC,KAAKC,GAAK,GAAK82B,EACnC51B,EAAGnB,KAAK0D,IAAIosC,EAAQ9vC,KAAKC,GAAK,GAAK82B,EAE3C,CAEA,SAASoiB,GAAmBrJ,EAAe/Y,EAAgBqiB,GAAiB,GACxE,MAAMlvC,EAAQgvC,GAAWpJ,EAAO/Y,GAC1BsiB,EAAmB,IAARvJ,EAAc9vC,KAAKC,KAAgB,IAAVm5C,EAAiB,IAAM,GACjE,MAAO,aAAalvC,EAAMpJ,MAAMoJ,EAAM/I,aAAak4C,IACvD,CAGA,SAASC,GAAeC,EAAkBxiB,EAAgBqiB,GAAiB,GACvE,OAAO,SAAU70C,GACb,MAAM0iB,EAAcuyB,EAAAA,YAAcj1C,EAAEurC,MAAOyJ,GAE3C,OADAh1C,EAAEurC,MAAQyJ,EACH,SAAU/zC,GACb,OAAO2zC,GAAmBlyB,EAAYzhB,GAAIuxB,EAAQqiB,EACtD,CACJ,CACJ,CAEA,SAASK,GAAS70C,EAAoBE,EAAkB3B,GACpD,OAAO,SAAUoB,GACb,MAAMm1C,EAAmBF,EAAAA,YAAcj1C,EAAEK,WAAYA,GAC/C+0C,EAAiBH,EAAAA,YAAcj1C,EAAEO,SAAUA,GACjD,OAAO,SAAUU,GAGb,OAFAjB,EAAEK,WAAa80C,EAAiBl0C,GAChCjB,EAAEO,SAAW60C,EAAen0C,GACrBrC,EAAIoB,EACf,CACJ,CACJ,CDo0DSxD,EAAA6uC,GAAA,cC12DA7uC,EAAAk4C,GAAA,eAIAl4C,EAAAm4C,GAAA,cAOAn4C,EAAAo4C,GAAA,sBAOAp4C,EAAAu4C,GAAA,kBAUAv4C,EAAA04C,GAAA,YAYF,MAAMG,GAAN,MAAMA,eAAcpmC,EAAAA,UAEfqmC,OAAqC9yC,IACxCvC,YAAY,IACZE,YAAY,KAETo1C,YAAcC,EAAAA,cACjB9yB,YAAY+yB,kBAGPC,UACAC,SACAC,SACAC,UACAC,UACAC,aACAC,YACAC,YACAC,UACAC,aAEV,WAAAz5C,GACIqT,OACJ,CAEU,GAAAqmC,CAAIp2C,GACV,GAAU,OAANA,GAA0B,KAAZA,EAAEqU,MAChBtY,KAAKm6C,UACA9nC,aACAwG,MAAM,UAAW,GACjBsF,GAAG,gBAAiB,KACjBne,KAAKm6C,UACA3oC,UAAU,KACViB,eAIV,CACHzS,KAAKm6C,UACAG,YACAzhC,MAAM,UAAW,GAEtB5U,EAAET,EAAKxD,KAAKi6C,YAAYM,QAAgB/2C,EAAI,GAC5C,IAAI0xC,EAAW,aACXsF,EAAU,EACV7C,EAAU,EACV17B,EAA8B,EAC9BhY,EAAEpD,GAAK,GAAKoD,EAAEpD,GAAK,IACnB25C,EAAUv2C,EAAEzD,EAAI,GAAKyD,EAAET,EAAI,EAAIS,EAAET,EAAI,EACrCm0C,EAAU,KACV17B,OAAU,EACVi5B,EAAW,YACJjxC,EAAEpD,EAAI,KACb82C,EAAU,GACV17B,EAAU,GAEd,MAAMw+B,EAAgBC,KACjB5lC,KAAK6lC,IACL1O,YAAY,CAAC,CACV3iC,KAAMrF,EACNhB,IAAKgB,EAAEzD,EAAIg6C,EACXr3C,IAAKc,EAAEpD,EAAI82C,EACX7vB,MAAO,QACPgjB,KAAM,CACFxyB,MAAOrU,EAAEqU,MACT48B,WACAj5B,UACA+xB,MAAO,aAGd9B,UAAU,CAAE1rC,EAAGC,EAACoF,GAAYA,EAAGrF,EAAhB,KAAmBK,EAAGJ,EAACoF,GAAYA,EAAGhF,EAAhB,OAC1Cb,KAAKm6C,UAAUhrC,KAAKsrC,EACxB,CACJ,CAEU,QAAAG,CAASC,EAAa9iC,EAAeC,GAC3C,MAAM8iC,EAAMD,EAAYrhC,OAAeC,UACjCshC,EAAiBhjC,EAAQ+iC,EAAG/iC,MAC5BijC,EAAkBhjC,EAAS8iC,EAAG9iC,OAC9BnI,EAAQkrC,EAAiBC,EAAkBD,EAAiBC,EAClE,MAAO,CACHjjC,MAAO+iC,EAAG/iC,MACVC,OAAQ8iC,EAAG9iC,OACXnI,QAER,CAEU,UAAAyoC,CAAWuC,EAAar6C,EAAWK,EAAW2C,EAAWC,GAC/Do3C,EACKN,MAAM,CAAE/5C,EAAAA,EAAGK,EAAAA,EAAG2C,IAAGC,MACjBuO,KAAK,YAAa,MAEvB,MAAMgX,EAAOhpB,KAAK46C,SAASC,EAAar3C,EAAGC,GACrCrC,EAAKZ,EAAIgD,EAAI,EAAIwlB,EAAKjR,MAAQ,EAAIiR,EAAKnZ,MACvCxO,EAAKR,EAAI4C,EAAI,EAAIulB,EAAKhR,OAAS,EAAIgR,EAAKnZ,MAC9CgrC,EAAY7oC,KAAK,YAAa,aAAa5Q,MAAOC,YAAa2nB,EAAKnZ,SACxE,CAEA,SAAAorC,GACI,OAAOv7C,KAAKmE,IAAI7D,KAAK+X,QAAS/X,KAAKgY,SAAUhY,KAAKk7C,cACtD,CAEA,KAAAppC,CAAM2D,EAAsBC,GACxB1B,MAAMlC,MAAM2D,EAASC,GAErBA,EAAQyI,GAAG,QAAUla,IACjBjE,KAAK6lB,MAAM5hB,KAGfjE,KAAK25C,UAAYjkC,EAAQ3D,OAAO,QAAQwoC,MAAM,CAAEj2C,WAAYq0C,GAAY,GAAIn0C,SAAUm0C,GAAY,KAC7F9/B,MAAM,OAAQ,SACdsF,GAAG,YAAcla,IACd,MAAOzD,EAAGK,GAAKb,KAAKu5C,OAAOhxC,SAAStE,GACpCjE,KAAKq6C,IAAI,CAAE75C,EAAAA,EAAGK,EAAAA,EAAGyX,MAAOtY,KAAKm7C,uBAEhCh9B,GAAG,WAAala,IACbjE,KAAKq6C,IAAI,QAGjBr6C,KAAK65C,SAAWnkC,EAAQ3D,OAAO,QAAQwoC,MAAM,CAAEj2C,WAAYq0C,GAAY,GAAIn0C,SAAUm0C,GAAY,KAC5F9/B,MAAM,OAAQ,aAEnB7Y,KAAK45C,SAAWlkC,EAAQ3D,OAAO,QAAQwoC,MAAM,CAAEj2C,WAAYq0C,GAAY,GAAIn0C,SAAUm0C,GAAY,KAC5F9/B,MAAM,OAAQ,SACdsF,GAAG,YAAcla,IACd,MAAOzD,EAAGK,GAAKb,KAAKu5C,OAAOhxC,SAAStE,GACpCjE,KAAKq6C,IAAI,CAAE75C,EAAAA,EAAGK,EAAAA,EAAGyX,MAAOtY,KAAKo7C,2BAEhCj9B,GAAG,WAAala,IACbjE,KAAKq6C,IAAI,QAIjBr6C,KAAKo6C,aAAe1kC,EAAQ3D,OAAO,SAEnC,MAAMlL,EAAU7G,KAChB,SAASq7C,IACL,OAAO3lC,EAAQ3D,OAAO,QAAQwoC,MAAM,CAAE/K,MAAOmJ,GAAY,KACpD9/B,MAAM,OAAQ,SACdA,MAAM,SAAU,SAChB7G,KAAK,IAAK,0BACVmM,GAAG,YAAcla,IACd,MAAOzD,EAAGK,GAAKgG,EAAQ0yC,OAAOhxC,SAAS1B,EAAQ+yC,SAASW,SACxD1zC,EAAQwzC,IAAI,CAAE75C,EAAAA,EAAGK,EAAAA,EAAGyX,MAAOzR,EAAQu0C,2BAEtCj9B,GAAG,WAAala,IACb4C,EAAQwzC,IAAI,OAGxB,CAbS55C,EAAA46C,EAAA,mBAcTr7C,KAAK85C,UAAYuB,IACjBr7C,KAAK+5C,UAAYsB,IACjBr7C,KAAKi6C,YAAcvkC,EAAQ3D,OAAO,QAC7BC,KAAK,KAAM,SACX6G,MAAM,OAAQ,SACdsF,GAAG,YAAcla,IACdjE,KAAKq6C,IAAI,CAAE75C,EAAG,EAAGK,EAAG,EAAGyX,MAAOtY,KAAKm7C,uBAEtCh9B,GAAG,WAAala,IACbjE,KAAKq6C,IAAI,QAGjBr6C,KAAKk6C,YAAcxkC,EAAQ3D,OAAO,QAC7BC,KAAK,KAAM,SACXmM,GAAG,YAAcla,IACdjE,KAAKq6C,IAAI,CAAE75C,EAAG,EAAGK,EAAGoD,EAAEpD,EAAGyX,MAAOtY,KAAKs7C,uBAExCn9B,GAAG,WAAala,IACbjE,KAAKq6C,IAAI,QAIjBr6C,KAAKm6C,UAAYzkC,EAAQ3D,OAAO,KAC3BC,KAAK,QAAS,iBAEvB,CAEA,MAAA6J,CAAOpG,EAAsBC,GACzB1B,MAAM6H,OAAOpG,EAASC,GAEtB1V,KAAKw5C,YACAzoC,OAAO/Q,KAAKu7C,eACZrqC,MAAMlR,KAAKw7C,cAEhB9lC,EACK1D,KAAK,QAAShS,KAAKgqB,WACnBnR,MAAM,SAAU7Y,KAAK6lB,QAAUyzB,OAAM54C,UAAUmlB,MAAQ,UAAY,MAGxE,MAAM3hB,EAAclE,KAAKi7C,YAAc,EACjC72C,EAAcpE,KAAKi7C,YAAc,EAAI,EAC3Cj7C,KAAKu5C,OACAr1C,YAAYA,GACZE,YAAYA,GAGjB,MAAMq3C,EAAMz7C,KAAKgL,QACX0wC,EAAU17C,KAAK27C,YAErB37C,KAAK25C,UACA9gC,MAAM,OAAQ7Y,KAAKw5C,YAAYiC,IAC/BppC,aACA6S,SAAS,KACT02B,UAAU,IAAKzC,GAASR,GAAY,GAAIA,GAAY8C,GAAMz7C,KAAKu5C,SAGpEv5C,KAAK65C,SACAhhC,MAAM,OAAQ7Y,KAAK67C,cACnBxpC,aACA6S,SAAS,KACT02B,UAAU,IAAKzC,GAASR,GAAY8C,GAAM9C,GAAY,GAAI34C,KAAKu5C,SAGpEv5C,KAAK45C,SACA/gC,MAAM,OAAQ7Y,KAAK87C,aACnBjjC,MAAM,aAAc7Y,KAAK+7C,WAAa,UAAY,UAClD1pC,aACA6S,SAAS,KACT02B,UAAU,IAAKzC,GAASR,GAAY+C,EAAU,MAAQ/C,GAAY+C,EAAU,MAAQ17C,KAAKu5C,SAG9Fv5C,KAAK85C,UACAjhC,MAAM,OAAQ7Y,KAAK87C,aACnBjjC,MAAM,SAAU7Y,KAAK87C,aACrBjjC,MAAM,aAAc7Y,KAAK+7C,WAAa,UAAY,UAClD1pC,aACA6S,SAAS,KACT02B,UAAU,YAAa5C,GAAeL,GAAY+C,GAAUx3C,GAAa,IAG9ElE,KAAK+5C,UACAlhC,MAAM,OAAQ7Y,KAAK87C,aACnBjjC,MAAM,SAAU7Y,KAAK87C,aACrBjjC,MAAM,aAAc7Y,KAAK+7C,WAAa,UAAY,UAClD1pC,aACA6S,SAAS,KACT02B,UAAU,YAAa5C,GAAeL,GAAY+C,GAAUt3C,IAGjEpE,KAAKi6C,YACAphC,MAAM,OAAQ7Y,KAAKw5C,YAAYiC,IAC/BvpC,KAAKwE,EAAAA,OAAS,MAATA,CAAgB+kC,IAG1Bz7C,KAAKk6C,YACArhC,MAAM,OAAQ7Y,KAAK6lB,QAAUyzB,OAAM54C,UAAUmlB,MAAQ7lB,KAAKg8C,kBAAoBh8C,KAAKi8C,cACnFpjC,MAAM,kBAAmB7Y,KAAK6lB,QAAUyzB,OAAM54C,UAAUmlB,MAAQ,YAAc,MAC9E3T,KAAKlS,KAAKqc,SAIf,MAAMzS,EAAQgvC,GAAWD,GAAY,GAAIz0C,EAAc,GACvDlE,KAAKs4C,WAAWt4C,KAAKi6C,aAAcrwC,EAAMpJ,GAAIoJ,EAAM/I,EAAG,EAAI+I,EAAMpJ,EAAG,EAAIoJ,EAAM/I,GAE7E,MAAMq7C,EAAStD,GAAWD,GAAY,GAAIv0C,GAC1C83C,EAAOr7C,GAAK,EACZ,MAAMkX,EAAQ/X,KAAKi7C,YAAc,GAC3BjjC,EAAShY,KAAKi7C,YAAc,EAAIiB,EAAOr7C,EAAI,EACjDb,KAAKs4C,WAAWt4C,KAAKk6C,aAAcniC,EAAQ,EAAGmkC,EAAOr7C,EAAGkX,EAAOC,GAE/DhY,KAAKo6C,aAAaloC,KAAKlS,KAAKgqB,UAChC,CAGA,KAAAnE,CAAMriB,GACN,GAzQiC/C,EAAA64C,GAAA,SAA9B,IAAM6C,GAAN7C,GA2QP6C,GAAMz7C,UAAU8U,QAAU,eAqC1B2mC,GAAMz7C,UAAUmc,QAAQ,QAAS,GAAI,SAAU,SAC/Cs/B,GAAMz7C,UAAUmc,QAAQ,mBAAoB,GAAI,SAAU,qBAC1Ds/B,GAAMz7C,UAAUmc,QAAQ,aAAc,QAAS,aAAc,2BAC7Ds/B,GAAMz7C,UAAUmc,QAAQ,kBAAmB,OAAQ,aAAc,0CAEjEs/B,GAAMz7C,UAAUmc,QAAQ,cAAe,IAAK,SAAU,gBACtDs/B,GAAMz7C,UAAUmc,QAAQ,QAAS,EAAG,SAAU,SAC9Cs/B,GAAMz7C,UAAUmc,QAAQ,mBAAoB,GAAI,SAAU,qBAC1Ds/B,GAAMz7C,UAAUmc,QAAQ,YAAY,EAAO,UAAW,aACtDs/B,GAAMz7C,UAAUmc,QAAQ,YAAa,EAAG,SAAU,cAClDs/B,GAAMz7C,UAAUmc,QAAQ,uBAAwB,GAAI,SAAU,0BAC9Ds/B,GAAMz7C,UAAUmc,QAAQ,UAAW,GAAI,SAAU,WAEjDs/B,GAAMz7C,UAAUmc,QAAQ,aAAc,CAAC,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,SAAU,MAAO,OAAQ,QAAS,qGACjJs/B,GAAMz7C,UAAUmc,QAAQ,cAAe,CAAC,EAAG,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAI,QAAS,wEACrGs/B,GAAMz7C,UAAUmc,QAAQ,aAAc,YAAa,aAAc,2CACjEs/B,GAAMz7C,UAAUmc,QAAQ,YAAa,QAAS,aAAc,qBCrW5D,MAAMu/B,GAAgB37C,EAAA,CAAC+H,EAAGoC,IAAMpC,EAAE,GAAKoC,EAAE,GAAK,EAAI,GAAI,EAAhC,iBAChByxC,GAAiB57C,EAAA,CAAC+H,EAAGoC,IAAMpC,EAAE,GAAKoC,EAAE,GAAK,GAAI,EAAK,EAAjC,kBAEV0xC,GAAN,MAAMA,aAAYppC,EAAAA,UASXqpC,YAEVxxC,MACAtE,MACA+1C,WACQC,gBACAC,uBACAC,iBACAC,YACAC,aAAe,EACfC,gBAAkB,EAClBC,sBACAC,2BACR,WAAAr8C,GACIqT,QACA+iB,EAAAA,SAAS5nB,KAAKnP,MACdsmB,EAAAA,SAASnX,KAAKnP,MACd4d,UAAQC,qBAAqB1O,KAAKnP,MAElCA,KAAK+K,MAAQA,IAEb/K,KAAKyG,MAAQA,IACbzG,KAAKw8C,WAAa/1C,IAClBzG,KACKi9C,qBAAoB,GACpBC,sBAAsB,EAE/B,CAEA,YAAAC,CAAaC,EAAQC,GACjB,OAAOr9C,KAAKs9C,gBAAgBt9C,KAAKu9C,kBAAmBH,EAAQC,EAChE,CAEA,eAAAG,GACI,OAAOx9C,KAAKy9C,qBAAuBz9C,KAAKu9C,kBAAqBv9C,KAAKkE,cAA2B,IAAM,CACvG,CAEA,eAAAq5C,GACI,MAAMG,EAAe19C,KAAK+uB,SAAS/uB,KAAKsJ,OAAOmL,IAAIxQ,GAAKjE,KAAK29C,aAAa,CAAEr0C,KAAMrF,IAAK,IAAS,UAAW,IAAI8T,MACzG6lC,EAAkB59C,KAAK69C,MAAM9lC,OAAS/X,KAAK89C,aAA8B,EAAfJ,EAAmB,GAAK,GAClFK,EAAgB/9C,KAAK69C,MAAM7lC,OAAS,IAAUhY,KAAK89C,aAAe99C,KAAK08C,uBAAyB,GAChGt4C,EAAc1E,KAAKmE,IAAI+5C,EAAiBG,GAAiB,EAAI,EAMnE,OALKH,EAAkB,EAAK,EAAI59C,KAAKg+C,iBACjCh+C,KAAK28C,iBAAmBe,GAAgB19C,KAAKg+C,kBAAqBJ,EAAkB,EAAK,IAEzF59C,KAAK28C,iBAAmBe,EAExBt5C,EAAcpE,KAAKg+C,iBACZh+C,KAAKg+C,iBAET55C,CACX,CAEA,yBAAA65C,GACI,MACMC,EAAWl+C,KAAKsJ,OAAO8iB,OAAO,CAAC+xB,EAAK30C,IAAM20C,EAAM30C,EAAE,GAAI,GAC5D,IAAI40C,EAAa,EAMjB,OALAp+C,KAAKsJ,OAAO4iB,QAAQnN,IACZA,EAAI,GAAKm/B,EAJA,IAKTE,MAGDp+C,KAAKq+C,cAAgBD,CAChC,CAEA,cAAAE,GACI,OAAOt+C,KAAKsJ,OAAO8iB,OAAO,CAAC+xB,EAAKl6C,IACrBk6C,EAAMl6C,EAAE,GAChB,EACP,CAEA,YAAA05C,CAAa15C,EAAGs6C,GACZ,IAAIC,EACAlmC,EAAQrU,EAAEqF,KAAK,GACnB,QAAqC,IAA1BtJ,KAAK28C,kBAAoC4B,EAAU,CAC1D,MAAME,EAAaz+C,KAAK+uB,SAASzW,EAAO,UAAWtY,KAAKq+C,eAAetmC,MACnE/X,KAAK28C,iBAAmB8B,IACxBD,EAAMlmC,EAAM7P,QAAUzI,KAAK28C,iBAAmB8B,GAAc,EAC5DnmC,EAAQkmC,EAAMlmC,EAAM7P,OAAS6P,EAAM9I,MAAM,EAAGgvC,GAAO,MAAQlmC,EAEnE,CAIA,GAHItY,KAAK0+C,oBACLpmC,GAAS,MAAMtY,KAAK+8C,sBAAsB94C,EAAEqF,KAAK,OAEjDtJ,KAAK2+C,uBAAwB,CAC7B,IAAIrzC,EAAMtL,KAAKu8C,YACf,MAAMrvB,EAAKltB,KAAKmtB,gBACM,IAAXD,EAAG5hB,MACVA,EAAM4hB,EAAG5hB,KAEb,MAAMszC,EAAQ36C,EAAEqF,KAAK,GAAKgC,EAAO,IACjCgN,GAAS,MAAMtY,KAAKg9C,2BAA2B4B,KACnD,CACA,OAAOtmC,CACX,CAIA,SAAA/G,CAAUlR,GACN,IAAK4G,UAAUwB,OACX,IACI,OAAOzI,KAAK8f,WAAW++B,aAAa,IAAIv1C,IAC5C,OAAS6W,GACL,MACJ,CAGJ,MAAM2+B,EAAS1G,KAAKC,UAAUh4C,GAC9BL,KAAK8f,WAAW++B,WAAW56C,GAAK66C,IAAW1G,KAAKC,UAAUp0C,EAAEqF,MAChE,CAEA,aAAAy1C,CAAc1+C,GACV,MAAM0e,EAAM/e,KAAKsJ,OAAOoJ,OAAOqM,GAAOA,EAAI,KAAO1e,GAAG,GAChD0e,GACA/e,KAAKuR,UAAUwN,EAEvB,CAEAigC,QACAC,QACA,KAAAntC,CAAMsP,EAAU1L,GACZ1B,MAAMlC,MAAMsP,EAAU1L,GACtB1V,KAAK8f,WAAWC,cAAcrK,GAC9B1V,KAAKg/C,QAAUtpC,EAAQ3D,OAAO,KAC9B/R,KAAKi/C,QAAUvpC,EAAQ3D,OAAO,KAC9B,MAAMlL,EAAU7G,KAChBA,KACK0nB,YAAY,SAAUzjB,GACnB,MACS,iBADD4C,EAAQ8gB,eAED9gB,EAAQ+gB,cAAc,CACzBtP,MAAOrU,EAAEqF,KAAK,GACdue,IAAKhhB,EAAQsY,UAAU3P,MAAM,GAAGiF,IAAI,SAAUoQ,EAAQtb,GAClD,MAAO,CACH+O,MAAOuM,EACPiD,MAAOjhB,EAAQqb,SAASje,EAAEqF,KAAK,IAC/B0B,MAAO/G,EAAEqF,KAAKC,EAAI,GAE1B,KAGG1C,EAAQ+gB,cAAc,CAAEtP,MAAOrU,EAAEqF,KAAK,GAAI0B,MAAO/G,EAAEqF,KAAK,IAE3E,EAER,CAEA,MAAAuS,CAAOuF,EAAU1L,GACb1B,MAAM6H,OAAOuF,EAAU1L,GACvB,MAAM7O,EAAU7G,KAChBA,KAAKk/C,cACLl/C,KAAKkiB,SAAWliB,KAAKkiB,SAASkG,OAAOpoB,KAAKqoB,aAC1CroB,KAAK+8C,sBAAwBrmC,EAAAA,OAAS1W,KAAKm/C,qBAC3Cn/C,KAAKg9C,2BAA6BtmC,EAAAA,OAAS1W,KAAKo/C,0BAC5Cp/C,KAAKsoB,qBACLtoB,KAAKkiB,SAAWliB,KAAKkiB,SAASqG,eAAevoB,KAAKqoB,YAAc,IAAMroB,KAAK6f,OAE/E7f,KAAK08C,uBAAyB18C,KAAKi+C,4BACnCj+C,KAAKu8C,YAAcv8C,KAAKs+C,iBACxB,MAAMp6C,EAAclE,KAAKw9C,kBACnBp5C,EAAcpE,KAAKu9C,kBACnB8B,EAAcj7C,EAAc,GAClCpE,KAAKyG,MACAvC,YAAYA,GACZ0C,UAAUxC,GACVA,YAAYA,GAGjBpE,KAAK48C,YAAc,CAAC,GAAI,GAAI,GAAI,IAChC,MAAMtzC,EAAO,IAAItJ,KAAKsJ,QACtB,OAAQtJ,KAAKs/C,mBACT,IAAK,YACDh2C,EAAK6B,KAAKixC,IACV,MACJ,IAAK,aACD9yC,EAAK6B,KAAKkxC,IAGlB,MAAMx5C,EAAM7C,KAAKg/C,QAAQxtC,UAAU,QAAQlI,KAAKtJ,KAAK+K,MAAMzB,GAAOrF,GAAKA,EAAEqF,KAAK,IAE9EtJ,KAAKy8C,gBAAkB,GAGvB55C,EAAIiP,QAAQC,OAAO,KACdC,KAAK,QAAS,CAAC/N,EAAGsF,IAAM,qBAAuBvJ,KAAKspB,OAAOrlB,EAAEqF,KAAK,KAClE0I,KAAK,UAAW,GAChB7C,KAAKnP,KAAK8f,WAAWhO,MAAMqY,KAAKnqB,KAAK8f,aACrC3B,GAAG,QAAS,SAAUla,GACnB4C,EAAQgf,MAAMhf,EAAQ8e,SAAS1hB,EAAEqF,MAAOzC,EAAQsY,UAAU,GAAItY,EAAQiZ,WAAWQ,SAAStgB,MAC9F,GACCme,GAAG,WAAY,SAAUla,GACtB4C,EAAQujB,SAASvjB,EAAQ8e,SAAS1hB,EAAEqF,MAAOzC,EAAQsY,UAAU,GAAItY,EAAQiZ,WAAWQ,SAAStgB,MACjG,GACC2S,KAAK,SAAU1O,EAAGsF,GACfgM,EAAAA,OAASvV,MAAM+R,OAAO,QACjBoM,GAAG,mBAAoBtX,EAAQmjB,QAAQC,MACvC9L,GAAG,oBAAqBtX,EAAQmjB,QAAQE,MACxC/L,GAAG,YAAag7B,EAAS,EAAG,IAC5Bh7B,GAAG,WAAYg7B,GAAS,EAAI,KAErC,GACChnC,MAAMtP,GAAKwP,aACXL,KAAK,UAAW,GAChBW,KAAK,SAAU1O,EAAGsF,GACf,MAAMg2C,EAAO14C,EAAQ24C,YAAYC,EAASx7C,IAC1C4C,EAAQ+1C,YAAY2C,GAAMlzC,KAAK9C,GAC/BtF,EAAEG,YAAcA,EAAc,EACbmR,EAAAA,OAASvV,MACjBiS,OAAO,QAAQI,aACnBL,KAAK,IAAKnL,EAAQJ,OAClBoS,MAAM,OAAQhS,EAAQwgB,UAAUpjB,EAAEqF,KAAMzC,EAAQsY,UAAU,GAAIlb,EAAEqF,KAAK,IAE9E,GAIJzG,EAAI+O,OAAOS,aACNwG,MAAM,UAAW,GACjBpG,SAGLzS,KAAKw8C,WACAt4C,YAAYm7C,GACZj7C,YAAYi7C,GAEjB,MAAMntC,EAAOlS,KAAKi/C,QAAQztC,UAAU,QAAQlI,KAAKtJ,KAAK89C,aAAe99C,KAAK+K,MAAMzB,GAAQ,MAASrF,EAAEqF,KAAK,IAElGo2C,EAAaxtC,EAAKJ,QAAQC,OAAO,QAClCoM,GAAG,mBAAoBtX,EAAQmjB,QAAQC,MACvC9L,GAAG,oBAAqBtX,EAAQmjB,QAAQE,MACxClY,KAAK,KAAM,QACXmM,GAAG,QAAS,SAAUla,GACnB4C,EAAQm4C,QAAQxtC,UAAU,KAAKkB,OAAO,SAAU7M,GACxC5B,EAAEqF,OAASzD,EAAGyD,OACdzC,EAAQiZ,WAAW+F,MAAM7lB,MACzB6G,EAAQgf,MAAMhf,EAAQ8e,SAAS1hB,EAAEqF,MAAOzC,EAAQsY,UAAU,GAAItY,EAAQiZ,WAAWQ,SAAStgB,OAElG,EACJ,GACCme,GAAG,WAAY,SAAUla,GACtB4C,EAAQm4C,QAAQxtC,UAAU,KAAKkB,OAAO,SAAU7M,GACxC5B,EAAEqF,OAASzD,EAAGyD,MACdzC,EAAQujB,SAASvjB,EAAQ8e,SAAS1hB,EAAEqF,MAAOzC,EAAQsY,UAAU,GAAItY,EAAQiZ,WAAWQ,SAAStgB,MAErG,EACJ,GACCmS,MAAMD,GACNA,KAAKjO,GAAKjE,KAAK29C,aAAa15C,GAAG,IAC/B0O,KAAK,SAAU1O,EAAGsF,GACf,MAAM8L,EAAMxO,EAAQ21C,WAAWj0C,SAAStE,GAClC07C,EAAYF,EAASx7C,GAC3BoR,EAAI,GAAKgqC,GAAex4C,EAAQ+4C,WAAWD,GAAa,GAAI,GAC5D94C,EAAQ41C,gBAAgBpwC,KAAK,CACzB8N,IAAK9E,EAAI,GACT+E,OAAQ/E,EAAI,GAAKxO,EAAQw3C,eAEjC,GACAr+C,KAAK89C,eACL99C,KAAK6/C,mBACLH,EAAWrtC,aACNwG,MAAM,YAAa7Y,KAAKq+C,cAAgB,MACxCrsC,KAAK,YAAa,CAAC/N,EAAGsF,KACnB,MAAM8L,EAAMxO,EAAQ21C,WAAWj0C,SAAStE,GAGxC,OAFAoR,EAAI,GAAKgqC,GAAex4C,EAAQ+4C,WAAWH,EAASx7C,IAAM,GAAI,GAC9DoR,EAAI,GAAKxO,EAAQ41C,gBAAgBlzC,GAAG4Q,IAC7B,aAAe9E,EAAM,MAE/BwD,MAAM,cAAe5U,GAAKjE,KAAK4/C,WAAWH,EAASx7C,IAAM,QAAU,QAG5EiO,EAAKN,OACAa,SAEL,MAAMqtC,EAAW9/C,KAAKi/C,QAAQztC,UAAU,YAAYlI,KAAKtJ,KAAK89C,aAAe99C,KAAK+K,MAAMzB,GAAQ,MAAStJ,KAAK29C,aAAa15C,GAAG,IAoB9H,SAASw7C,EAASx7C,GACd,OAAOA,EAAEK,YAAcL,EAAEO,SAAWP,EAAEK,YAAc,CACxD,CAEA,SAAS60C,EAAS4G,EAAkB7mB,GAChC,OAAO,WACH3jB,SAASvV,MAAMqS,aAAa6mB,MAAMA,GAAO0iB,UAAU,IAAK,SAAU33C,GAC9D,MAAMsF,EAAI2vC,EAAAA,YAAcj1C,EAAEG,YAAaA,EAAc27C,GACrD,OAAO,SAAU76C,GAA2B,OAAtBjB,EAAEG,YAAcmF,EAAErE,GAAW2B,EAAQJ,MAAMxC,EAAI,CACzE,EACJ,CACJ,CA7BA67C,EAAShuC,QACJC,OAAO,YACPI,MAAM2tC,GAAUztC,aAChBL,KAAK,SAAU,SAAU/N,EAAGsF,GACzB,MAAM8L,EAAMxO,EAAQ21C,WAAWj0C,SAAStE,GAClC+7C,EAAOn5C,EAAQJ,MAAM8B,SAAStE,GAC9B0c,EAAO,IAAItL,GAGjB,OAFAA,EAAI,GAAKgqC,GAAex4C,EAAQ+4C,WAAWH,EAASx7C,IAAM,GAAI,GAC9DoR,EAAI,GAAKxO,EAAQ41C,gBAAgBlzC,GAAG4Q,IAC7B,CAAC6lC,EAAMr/B,EAAMtL,EACxB,GAEJyqC,EAASluC,OACJa,SAEDzS,KAAK89C,cACL99C,KAAKigD,iBAEAx/C,EAAAg/C,EAAA,YAIAh/C,EAAA04C,EAAA,WAQb,CAEA,UAAAyG,CAAWH,GAGP,OAFAA,EAAWS,EAAAA,iBAAiBT,IACQ,EAAV//C,KAAKC,GAAS8/C,EAAWA,EAAW//C,KAAKC,IAAM8/C,EAAW,CAExF,CAEA,WAAAD,CAAYW,GACR,IAAIZ,EAAO,EACX,MAAMa,EAAMF,EAAAA,iBAAiBC,GAI7B,OAHAZ,EAAOa,GAAiB,EAAV1gD,KAAKC,IAAYygD,GAAiB,GAAV1gD,KAAKC,GAAW,EAAI4/C,EAC1DA,EAAOa,GAAiB,GAAV1gD,KAAKC,IAAYygD,GAAiB,EAAV1gD,KAAKC,GAAW,EAAI4/C,EAC1DA,EAAOa,GAAiB,EAAV1gD,KAAKC,IAAYygD,OAAO1gD,KAAKC,GAAY,EAAI4/C,EACpDA,CACX,CAEA,cAAAU,GACI,MAAMI,EAAKrgD,KAAKqV,MAAMxU,EAChBy/C,EAAW,EAALD,EACN5pB,EAASz2B,KAAKu9C,kBACdpjC,EAAMza,KAAKmE,IAAI7D,KAAK68C,cAAepmB,GACnCrc,EAAS1a,KAAKkE,IAAI5D,KAAK88C,gBAAiBrmB,GAExC8pB,EAAaD,GADTlmC,EAASD,GAEbqmC,EAAS9gD,KAAKsC,IAAIhC,KAAK68C,cAC7B,IAAI4D,EAAS,EACTrmC,EAASimC,GACTI,EAASJ,EAAKjmC,EAAUpa,KAAKq+C,cAAgB,EAC7CoC,GAAUF,EAAa,GAChBpmC,EAAM,GAAKqmC,EAASH,IAC3BI,EAASD,EAASH,EAAMrgD,KAAKq+C,cAAgB,EAC7CoC,GAAUF,EAAa,GAE3B,MAAMlrC,EAAMrV,KAAKqV,MACjBrV,KAAKqV,IAAI,CACLxU,EAAGwU,EAAIxU,EAAI4/C,EACXjgD,EAAG6U,EAAI7U,GAEf,CAEA,gBAAAq/C,GACI,MAAMxB,EAAcr+C,KAAKq+C,cACzBr+C,KAAK48C,YAAY1wB,QAAQ,CAACrE,EAAK03B,KAQ3B,IAAImB,EAPJ1gD,KAAK48C,YAAY2C,GAAMp0C,KAAK,CAAC3C,EAAGoC,IACf,IAAT20C,GAAuB,IAATA,EACPv/C,KAAKy8C,gBAAgBj0C,GAAG2R,IAAMna,KAAKy8C,gBAAgB7xC,GAAGuP,KAAM,EAAK,EACxD,IAATolC,GAAuB,IAATA,EACdv/C,KAAKy8C,gBAAgBj0C,GAAG2R,IAAMna,KAAKy8C,gBAAgB7xC,GAAGuP,IAAM,GAAI,OAD3E,GAKJna,KAAK48C,YAAY2C,GAAMrzB,QAAQ,CAAC1iB,EAAGD,KAC/B,GAAIA,EAAI,EACJ,GAAa,IAATg2C,GAAuB,IAATA,GACd,GAAImB,EAAU1gD,KAAKy8C,gBAAgBjzC,GAAG4Q,OAAQ,CAC1C,MAAM0B,EAAU9b,KAAKy8C,gBAAgBjzC,GAAG4Q,OAASsmC,EACjD1gD,KAAKy8C,gBAAgBjzC,GAAG2Q,KAAO2B,EAC/B9b,KAAKy8C,gBAAgBjzC,GAAG4Q,QAAU0B,CACtC,OACJ,IAAoB,IAATyjC,GAAuB,IAATA,IACjBmB,EAAUrC,EAAcr+C,KAAKy8C,gBAAgBjzC,GAAG2Q,IAAK,CACrD,MAAM2B,EAAUpc,KAAKsC,IAAIhC,KAAKy8C,gBAAgBjzC,GAAG2Q,KAAOza,KAAKsC,IAAI0+C,EAAUrC,GAC3Er+C,KAAKy8C,gBAAgBjzC,GAAG2Q,KAAO2B,EAC/B9b,KAAKy8C,gBAAgBjzC,GAAG4Q,QAAU0B,CACtC,CAGR4kC,EAAU1gD,KAAKy8C,gBAAgBjzC,GAAG2Q,QAG1Cna,KAAK68C,aAAe,EACpB78C,KAAK88C,gBAAkB,EACvB98C,KAAK48C,YAAY1wB,QAAQ,CAACrE,EAAK03B,KAC3Bv/C,KAAK48C,YAAY2C,GAAMrzB,QAAQ,CAAC1iB,EAAGD,KAC3BvJ,KAAK68C,aAAe78C,KAAKy8C,gBAAgBjzC,GAAG2Q,MAC5Cna,KAAK68C,aAAe78C,KAAKy8C,gBAAgBjzC,GAAG2Q,KAE5Cna,KAAK88C,gBAAkB98C,KAAKy8C,gBAAgBjzC,GAAG4Q,SAC/Cpa,KAAK88C,gBAAkB98C,KAAKy8C,gBAAgBjzC,GAAG4Q,WAI/D,CAEA,IAAAxI,CAAK6D,EAASC,GACV1B,MAAMpC,KAAK6D,EAASC,EACxB,CAEA,WAAAwpC,GACI,MAAM56C,EAAa47C,EAAAA,iBAAiBS,EAAAA,iBAAiB3gD,KAAKsE,eAE1D,OAAQtE,KAAKs/C,mBACT,IAAK,YACDt/C,KAAK+K,MAAMI,KAAKixC,IAChB,MACJ,IAAK,aACDp8C,KAAK+K,MAAMI,KAAKkxC,IAChB,MACJ,QACIr8C,KAAK+K,MAAMI,KAAK,MAGxBnL,KAAK+K,MACArG,SAAS,OACTJ,WAAWA,GACXE,SAAS,EAAI9E,KAAKC,GAAK2E,GACvB0G,MAAM,SAAU/G,GACb,OAAOA,EAAE,EACb,EAER,GAza+BxD,EAAA67C,GAAA,OAC/BhyB,EADSgyB,GACF,WAAyB,CAAC,CAC7Bz8B,GAAI,QACJ/K,KAAM,UACP,CACC+K,GAAI,QACJ/K,KAAM,YANP,IAAM8rC,GAANtE,GA2aPsE,GAAIlgD,UAAU8U,QAAU,aACxBorC,GAAIlgD,UAAU+pB,WAAWsM,EAAAA,SAASr2B,WAClCkgD,GAAIlgD,UAAU+pB,WAAWnE,EAAAA,SAAS5lB,WAClCkgD,GAAIlgD,UAAUslB,MAAMpI,EAAAA,QAAQC,sBAoD5B+iC,GAAIlgD,UAAUmc,QAAQ,cAAc,EAAM,UAAW,sCACrD+jC,GAAIlgD,UAAUmc,QAAQ,mBAAmB,EAAO,UAAW,yCAA0C,KAAM,CAAEC,QAASrc,EAAA+C,IAAMA,EAAEs6C,aAAR,aACtH8C,GAAIlgD,UAAUmc,QAAQ,oBAAqB,OAAQ,SAAU,kDAAmD,KAAM,CAAEC,QAASrc,EAAA+C,IAAMA,EAAEk7C,kBAAR,aACjIkC,GAAIlgD,UAAUmc,QAAQ,wBAAwB,EAAO,UAAW,8CAA+C,KAAM,CAAEC,QAASrc,EAAA+C,IAAMA,EAAEs6C,aAAR,aAChI8C,GAAIlgD,UAAUmc,QAAQ,yBAA0B,OAAQ,SAAU,uDAAwD,KAAM,CAAEC,QAASrc,EAAA+C,IAAMA,EAAEm7C,uBAAR,aAC3IiC,GAAIlgD,UAAUmc,QAAQ,YAAa,UAAW,MAAO,gCAAiC+jC,GAAIlgD,UAAUwhB,SAASkG,SAAU,CAAElC,KAAM,CAAC,QAAS,YACzI06B,GAAIlgD,UAAUmc,QAAQ,oBAAoB,EAAO,UAAW,2CAA4C,KAAM,CAAEqJ,KAAM,CAAC,eAAgB,YACvI06B,GAAIlgD,UAAUmc,QAAQ,cAAe,EAAG,SAAU,4EAA6E,KAAM,CAAEqJ,KAAM,CAAC,SAAUhV,MAAO,CAAErN,IAAK,EAAG6mB,KAAM,EAAG9mB,IAAK,OACvLg9C,GAAIlgD,UAAUmc,QAAQ,iBAAkB,GAAI,SAAU,iCACtD+jC,GAAIlgD,UAAUmc,QAAQ,aAAc,EAAG,SAAU,6DACjD+jC,GAAIlgD,UAAUmc,QAAQ,cAAe,GAAI,SAAU,+BAAgC,KAAM,CAAEC,QAASrc,EAAA+C,IAAMA,EAAEs6C,aAAR,aACpG8C,GAAIlgD,UAAUmc,QAAQ,kBAAmB,aAAc,MAAO,qBAAsB,CAAC,OAAQ,YAAa,eCxfnG,MAAMgkC,GAAN,MAAMA,iBAAgBD,GACzB,WAAAjgD,GACIqT,OACJ,CACA,UAAA0I,CAAWjH,EAASC,GAChB1B,MAAM0I,WAAWjH,EAASC,GAC1B,IAAIlV,EAAIR,KAAK8gD,KAAKtgD,EACdK,EAAIb,KAAK8gD,KAAKjgD,EACS,WAAvBb,KAAKiU,eAA8BjU,KAAK+gD,mBAAmBC,aAC3DxgD,GAAKR,KAAK69C,MAAM9lC,MAAQ,EACxBlX,GAAKb,KAAK69C,MAAM7lC,OAAS,GAE7BnX,GAAMb,KAAK69C,MAAM7lC,OAAS,EAC1BhY,KAAK2c,SAAS3K,KAAK,YAAa,aAAexR,EAAI,IAAMK,EAAI,UAAYb,KAAKihD,aAAe,IACjG,CACA,WAAA/B,GACIlrC,MAAMkrC,cACNl/C,KAAK+K,MACAzG,YAAY5E,KAAKC,GAAK,GACtB6E,SAAS9E,KAAKC,GAAK,EAE5B,GArB6Bc,EAAAogD,GAAA,WAA1B,IAAMK,GAANL,GAuBPK,GAAQxgD,UAAU8U,QAAU,iBCtBrB,MAAM2rC,GAAN,MAAMA,cAAap7B,GAEZq7B,kBACAC,WACAC,MAEV,WAAA3gD,GACIqT,QACAhU,KACKumB,yBAAwB,GACxBC,yBAAwB,EAEjC,CAEA,MAAAiQ,CAAOl1B,GAGH,OAFAvB,KAAKuhD,QAAQhgD,GACbvB,KAAKwhD,QAAQjgD,GACNvB,IACX,CAEA,UAAAilB,CAAW/D,EAAcxL,EAASwP,EAAmB,KACjDlR,MAAMiR,WAAW/D,EAAMxL,EAASwP,GAChCllB,KAAKohD,kBAAoBphD,KAAK4T,IAAIxB,OAAO,gBAAiB,KAAIpS,KAAK6f,KAAO,cAC1E7f,KAAKqhD,WAAarhD,KAAKohD,kBAAkBrvC,OAAO,cAC3C8G,MAAM,SAAU,OAChBA,MAAM,UAAW,OACjBA,MAAM,mBAAoB,eAC1B9G,OAAO,UAEZ/R,KAAKshD,MAAQG,GAAWzhD,KAAKqhD,WAAW7nC,OAC5C,CAEA,WAAA2L,CAAYjE,EAAcxL,EAASwP,EAAmB,KAClDlR,MAAMmR,YAAYjE,EAAMxL,GAExB1V,KAAKkiB,SAAWliB,KAAKkiB,SAASkG,OAAOpoB,KAAKqoB,aAE1C,IAAItQ,EAAQ/X,KAAK+X,QAAU/X,KAAK0d,OAAO3D,KAAO/Z,KAAK0d,OAAO5D,MACtD/B,EAAQ,IAAGA,EAAQ,GACvB,IAAIC,EAAShY,KAAKgY,SAAWhY,KAAK0d,OAAOvD,IAAMna,KAAK0d,OAAOtD,OACvDpC,EAAS,IAAGA,EAAS,GAEzBhY,KAAKohD,kBACApvC,KAAK,IAAKhS,KAAK0d,OAAO3D,MACtB/H,KAAK,IAAKhS,KAAK0d,OAAOvD,KACtBnI,KAAK,QAAS+F,GACd/F,KAAK,SAAUgG,GAEpBhY,KAAKqhD,WACArvC,KAAK,QAAS+F,GACd/F,KAAK,SAAUgG,GAGpB,MAAM1O,EAA8B,eAAvB4X,EAAKlM,cACdhV,KAAKsJ,OAAOmL,IAAIlT,GAAK,CAAC2f,EAAKT,QAAQlf,EAAE,IAAK2f,EAAKN,SAASrf,EAAE,IAAKA,EAAE,KACjEvB,KAAKsJ,OAAOmL,IAAIlT,GAAK,CAAC2f,EAAKN,SAASrf,EAAE,IAAK2f,EAAKT,QAAQlf,EAAE,IAAKA,EAAE,KAG/DmgD,EAAY1hD,KAAK2hD,mBAAqB3hD,KAAK0hD,YAAc99C,EAAAA,IAAI0F,EAAM/H,GAAKA,EAAE,IAEhF,GAAyB,YAArBvB,KAAKqoB,YAA2B,CAChC,MAAMu5B,EAAW,CAAA,EACXjxB,EAAQ,EACR5V,EAAU/a,KAAK6hD,iBACrB,IAAA,IAASt4C,EAAI,EAAGA,EAAIonB,IAASpnB,EACzBq4C,EAASr4C,EAAIonB,GAAS3wB,KAAKkiB,UAAUnH,EAAU4V,EAAQpnB,EAAIA,GAAKonB,EAAO,EAAG,GAE9E3wB,KAAKshD,MAAMM,SAASA,EACxB,MACI5hD,KAAKshD,MAAMM,SAAS5hD,KAAKshD,MAAMQ,iBAGnC9hD,KAAKshD,MAAMh8B,SAEX,MAAMi8B,EAAUvhD,KAAK+hD,kBAAoB/hD,KAAKuhD,UAAYxpC,EAAQ,IAAM/X,KAAKuhD,UACvEC,EAAUxhD,KAAK+hD,kBAAoB/hD,KAAKwhD,UAAYxpC,EAAS,IAAMhY,KAAKwhD,UAE9ExhD,KAAKshD,MACAU,QACAvrB,OAAO8qB,EAASC,EAASxhD,KAAKiiD,QAC9Br+C,IAAI89C,GACJp4C,KAAKA,GACL4uC,KAAKl4C,KAAKkiD,aAEnB,GApF6BzhD,EAAA0gD,GAAA,QAA1B,IAAMgB,GAANhB,GAsIP,SAASM,GAAWW,GAChB,KAAMpiD,gBAAgByhD,IAAa,OAAO,IAAIA,GAAWW,GAEzDpiD,KAAKqiD,QAAUD,EAA2B,iBAAXA,EAAsBE,SAASC,eAAeH,GAAUA,EAEvFpiD,KAAKwiD,KAAOJ,EAAOK,WAAW,MAC9BziD,KAAK0iD,OAASN,EAAOrqC,MACrB/X,KAAK2iD,QAAUP,EAAOpqC,OAEtBhY,KAAK4iD,KAAO,EACZ5iD,KAAK6iD,MAAQ,EACjB,CA1DAV,GAAKzhD,UAAU8U,QAAU,cACzB2sC,GAAKzhD,UAAUwhB,SAAW4gC,UAAQC,QAAQ,WA2B1CZ,GAAKzhD,UAAUmc,QAAQ,YAAa,UAAW,MAAO,gCAAiCslC,GAAKzhD,UAAUwhB,SAASkG,SAAU,CAAElC,KAAM,CAAC,WAClIi8B,GAAKzhD,UAAUmc,QAAQ,oBAAoB,EAAO,UAAW,2CAA4C,KAAM,CAAEqJ,KAAM,CAAC,eAAgB,YACxIi8B,GAAKzhD,UAAUmc,QAAQ,kBAAkB,EAAO,UAAW,yBAA0B,KAAM,CAAEC,QAASrc,EAAA+C,GAAuB,YAAlBA,EAAE6kB,YAAP,aAEtG85B,GAAKzhD,UAAUmc,QAAQ,UAAW,GAAI,SAAU,kCAChDslC,GAAKzhD,UAAUmc,QAAQ,UAAW,GAAI,SAAU,kCAChDslC,GAAKzhD,UAAUmc,QAAQ,mBAAmB,EAAO,UAAW,4CAC5DslC,GAAKzhD,UAAUmc,QAAQ,OAAQ,GAAI,SAAU,qCAE7CslC,GAAKzhD,UAAUmc,QAAQ,iBAAa,EAAW,SAAU,0EAAsE,EAAW,CAAEE,UAAU,IACtJolC,GAAKzhD,UAAUmc,QAAQ,aAAc,IAAM,SAAU,2CAS5Cpc,EAAAghD,GAAA,cAaTA,GAAW/gD,UAAY,CAEnB61B,cAAe,GAEfurB,gBAAiB,CACb,GAAK,OACL,GAAK,OACL,GAAK,OACL,GAAK,SACL,EAAK,OAGTx4C,gBAAgBA,GAEZ,OADAtJ,KAAK6iD,MAAQv5C,EACNtJ,IACX,EAHM,QAKN4D,eAAeA,GAEX,OADA5D,KAAK4iD,KAAOh/C,EACL5D,IACX,EAHK,OAKLihC,eAAer3B,GAEX,OADA5J,KAAK6iD,MAAMx2C,KAAKzC,GACT5J,IACX,EAHK,OAKLgiD,MAAOvhD,EAAA,WAEH,OADAT,KAAK6iD,MAAQ,GACN7iD,IACX,EAHO,SAKPy2B,OAAQh2B,EAAA,SAAUuiD,EAAIC,EAAIhB,GACtBA,OAAgB,IAATA,EAAqB,GAAKA,EAGjC,MAAMiB,EAAUljD,KAAKmjD,SAAWnjD,KAAKojD,gBAC/BC,EAAMH,EAAQT,WAAW,MACzBa,EAAMtjD,KAAKujD,GAAKP,EAAKf,EACrBuB,EAAMxjD,KAAKujD,GAAKN,EAAKhB,EAe3B,OAbAiB,EAAQnrC,MAAc,EAANurC,EAChBJ,EAAQlrC,OAAe,EAANwrC,EAEjBH,EAAII,cAAgBJ,EAAIK,cAAsB,EAANJ,EACxCD,EAAIK,cAAgBL,EAAIK,cAAsB,EAANF,EACxCH,EAAIM,WAAa1B,EACjBoB,EAAIO,YAAc,QAElBP,EAAIQ,YACJR,EAAIH,SAASI,GAAME,EAAKR,EAAIC,EAAI,EAAG,EAAa,EAAVvjD,KAAKC,IAAQ,GACnD0jD,EAAIviD,YACJuiD,EAAI7Q,OAEGxyC,IACX,EAvBQ,UAyBRslB,OAAQ7kB,EAAA,WACJT,KAAK0iD,OAAS1iD,KAAKqiD,QAAQtqC,MAC3B/X,KAAK2iD,QAAU3iD,KAAKqiD,QAAQrqC,MAChC,EAHQ,UAKR4pC,oBAAoBkC,GAEhB,MAAM1B,EAASpiD,KAAKojD,gBAChBC,EAAMjB,EAAOK,WAAW,MACxBb,EAAWyB,EAAIU,qBAAqB,EAAG,EAAG,EAAG,KAEjD3B,EAAOrqC,MAAQ,EACfqqC,EAAOpqC,OAAS,IAEhB,IAAA,MAAWzO,KAAKu6C,EACZlC,EAASoC,cAAcz6C,EAAGu6C,EAAKv6C,IAQnC,OALA85C,EAAIY,UAAYrC,EAChByB,EAAIa,SAAS,EAAG,EAAG,EAAG,KAEtBlkD,KAAKmkD,MAAQd,EAAIe,aAAa,EAAG,EAAG,EAAG,KAAK96C,KAErCtJ,IACX,EAnBU,YAqBVk4C,gBAAgBgK,GACPliD,KAAKmjD,UAAUnjD,KAAKy2B,OAAOz2B,KAAKu2B,cAAev2B,KAAKu2B,eACpDv2B,KAAKmkD,OAAOnkD,KAAK4hD,SAAS5hD,KAAK8hD,iBAEpC,MAAMuB,EAAMrjD,KAAKwiD,KAEjBa,EAAIgB,UAAU,EAAG,EAAGrkD,KAAK0iD,OAAQ1iD,KAAK2iD,SAGtC,IAAA,IAAyC95C,EAAhCU,EAAI,EAAGi1C,EAAMx+C,KAAK6iD,MAAMp6C,OAAWc,EAAIi1C,EAAKj1C,IACjDV,EAAI7I,KAAK6iD,MAAMt5C,GACXV,EAAE,GAAK,EACPA,EAAE,GAAK,EACAA,EAAE,GAAK7I,KAAK4iD,OACnB/5C,EAAE,GAAK7I,KAAK4iD,MAEhBS,EAAIiB,YAAc5kD,KAAKkE,IAAIiF,EAAE,GAAK7I,KAAK4iD,UAAqB,IAAfV,EAA2B,IAAOA,GAC/EmB,EAAIkB,UAAUvkD,KAAKmjD,SAAUt6C,EAAE,GAAK7I,KAAKujD,GAAI16C,EAAE,GAAK7I,KAAKujD,IAI7D,MAAMiB,EAAUnB,EAAIe,aAAa,EAAG,EAAGpkD,KAAK0iD,OAAQ1iD,KAAK2iD,SAIzD,OAHA3iD,KAAKykD,UAAUD,EAAQl7C,KAAMtJ,KAAKmkD,OAClCd,EAAIqB,aAAaF,EAAS,EAAG,GAEtBxkD,IACX,EA1BM,QA4BNykD,UAAWhkD,EAAA,SAAUkkD,EAAQ/C,GACzB,IAAA,IAAqC73C,EAA5BR,EAAI,EAAGi1C,EAAMmG,EAAOl8C,OAAWc,EAAIi1C,EAAKj1C,GAAK,EAClDQ,EAAoB,EAAhB46C,EAAOp7C,EAAI,GAEXQ,IACA46C,EAAOp7C,GAAKq4C,EAAS73C,GACrB46C,EAAOp7C,EAAI,GAAKq4C,EAAS73C,EAAI,GAC7B46C,EAAOp7C,EAAI,GAAKq4C,EAAS73C,EAAI,GAGzC,EAVW,aAYXq5C,cAAe3iD,EAAA,WACX,MAAwB,oBAAb6hD,SACAA,SAASsC,cAAc,UAIvB,IAAI5kD,KAAKqiD,QAAQ1hD,WAEhC,EARe,kBCjRnB,IAAIkkD,GAAUnlD,KAAKC,GAAK,EACpBmlD,GAAS,CAAC,EAAGD,GAAS,EAAIA,GAAS,EAAIA,GAAS,EAAIA,GAAS,EAAIA,IAErE,SAAS97C,GAAO9E,GACd,OAAOA,EAAE,EACX,CAEA,SAAS+E,GAAO/E,GACd,OAAOA,EAAE,EACX,CAEe,SAAA8gD,KACb,IAMIxjD,EACA0B,EACAE,EARA3B,EAAK,EACLC,EAAK,EACLR,EAAK,EACLC,EAAK,EACLV,EAAIuI,GACJlI,EAAImI,GAKR,SAASg8C,EAAOr7B,GACd,IAA8BpgB,EAA1B07C,EAAW,CAAA,EAAIC,EAAO,GAAO17C,EAAImgB,EAAOlhB,OAE5C,IAAKc,EAAI,EAAGA,EAAIC,IAAKD,EACnB,IAAI47C,MAAM/1C,GAAM5O,EAAE2O,KAAK,KAAMvF,EAAQ+f,EAAOpgB,GAAIA,EAAGogB,MAC5Cw7B,MAAM91C,GAAMxO,EAAEsO,KAAK,KAAMvF,EAAOL,EAAGogB,IAD1C,CAGA,IAAI/f,EACAwF,EACAC,EACA4tB,EAAKv9B,KAAKuQ,MAAMZ,GAAUlM,GAC1B1D,EAAKC,KAAKuQ,MAAMb,EAAKA,EAAKnM,GAAW,EAALg6B,GAAU,GAC1CmoB,EAAM/1C,EAAK4tB,EAEf,GAAoB,EAAhBv9B,KAAKsC,IAAIojD,GAAW,EAAG,CACzB,IAAIC,EAAMj2C,EAAK3P,EACX6lD,EAAM7lD,GAAM2P,EAAK3P,KAAU,GAAK,EAChC8lD,EAAMtoB,GAAM5tB,EAAK4tB,GAAK,EAAK,GAC3BuoB,EAAMp2C,EAAKk2C,EACXG,EAAMp2C,EAAKk2C,EACXF,EAAMA,EAAMD,EAAMA,EAAMI,EAAMA,EAAMC,EAAMA,IAAKhmD,EAAK6lD,GAAY,EAALroB,EAAS,GAAI,GAAM,EAAGA,EAAKsoB,EAC5F,CAEA,IAAI1lC,EAAKpgB,EAAK,IAAMw9B,EAAIyoB,EAAMT,EAASplC,GACnC6lC,EAAKA,EAAIr5C,KAAKzC,IAEhBs7C,EAAK74C,KAAKq5C,EAAMT,EAASplC,GAAM,CAACjW,IAChC87C,EAAIllD,GAAKf,GAAW,EAALw9B,GAAU,GAAKh6B,EAC9ByiD,EAAI7kD,EAAIo8B,EAAK95B,EAvBqC,CA2BtD,OAAO+hD,CACT,CAEA,SAASS,EAAQlvB,GACf,IAAIj1B,EAAK,EAAGC,EAAK,EACjB,OAAOqjD,GAAOrwC,IAAI,SAAS+6B,GACzB,IAAIvuC,EAAKvB,KAAK0D,IAAIosC,GAAS/Y,EACvBv1B,GAAMxB,KAAKwD,IAAIssC,GAAS/Y,EACxBxzB,EAAKhC,EAAKO,EACV2B,EAAKjC,EAAKO,EAEd,OADAD,EAAKP,EAAIQ,EAAKP,EACP,CAAC+B,EAAIE,EACd,EACF,CA2CA,OAxFS1C,EAAAukD,EAAA,UAmCAvkD,EAAAklD,EAAA,WAYTX,EAAOW,QAAU,SAASlvB,GACxB,MAAO,IAAMkvB,EAAkB,MAAVlvB,EAAiBl1B,GAAKk1B,GAAQ9a,KAAK,KAAO,GACjE,EAEAqpC,EAAOY,QAAU,WAIf,IAHA,IAAIA,EAAU,GACV77C,EAAIrK,KAAKuQ,MAAMxO,EAAK0B,GACpBoG,EAAI7J,KAAKuQ,MAAMzO,EAAKyB,GACfpC,EAAIkJ,EAAI5G,EAAItC,EAAIK,EAAKK,EAAGV,GAAKsC,IAAM4G,EAC1C,IAAA,IAASvJ,EAAI+I,EAAItG,GAAU,EAAJ8G,GAAS9G,EAAK,EAAGzC,EAAIS,EAAKgC,EAAK,EAAGzC,GAAKyC,EAC5D2iD,EAAQv5C,KAAK,CAAC7L,EAAGK,IAGrB,OAAO+kD,CACT,EAEAZ,EAAOa,KAAO,WACZ,IAAIC,EAAWH,EAAQpkD,GAAGiO,MAAM,EAAG,GAAGmM,KAAK,KAC3C,OAAOqpC,EAAOY,UAAUnxC,IAAI,SAAS5L,GAAK,MAAO,IAAMA,EAAI,IAAMi9C,CAAU,GAAGnqC,KAAK,GACrF,EAEAqpC,EAAOxkD,EAAI,SAASH,GAClB,OAAO4G,UAAUwB,QAAUjI,EAAIH,EAAG2kD,GAAUxkD,CAC9C,EAEAwkD,EAAOnkD,EAAI,SAASR,GAClB,OAAO4G,UAAUwB,QAAU5H,EAAIR,EAAG2kD,GAAUnkD,CAC9C,EAEAmkD,EAAOvuB,OAAS,SAASp2B,GACvB,OAAO4G,UAAUwB,QAAkBxF,EAAS,GAAjB1B,GAAKlB,GAAgBX,KAAK0D,IAAIyhD,IAAU1hD,EAAS,IAAJ5B,EAASyjD,GAAUzjD,CAC7F,EAEAyjD,EAAOh8B,KAAO,SAAS3oB,GACrB,OAAO4G,UAAUwB,QAAUjH,EAAKC,EAAK,EAAGR,GAAMZ,EAAE,GAAIa,GAAMb,EAAE,GAAI2kD,GAAU,CAAC/jD,EAAKO,EAAIN,EAAKO,EAC3F,EAEAujD,EAAOjhC,OAAS,SAAS1jB,GACvB,OAAO4G,UAAUwB,QAAUjH,GAAMnB,EAAE,GAAG,GAAIoB,GAAMpB,EAAE,GAAG,GAAIY,GAAMZ,EAAE,GAAG,GAAIa,GAAMb,EAAE,GAAG,GAAI2kD,GAAU,CAAC,CAACxjD,EAAIC,GAAK,CAACR,EAAIC,GACnH,EAEO8jD,EAAOvuB,OAAO,EACvB,CA5GSh2B,EAAAsI,GAAA,UAIAtI,EAAAuI,GAAA,UAIMvI,EAAAskD,GAAA,YCHR,MAAMgB,GAAN,MAAMA,gBAAehgC,GASdigC,QACA9f,eACAC,eACV,WAAAxlC,GACIqT,QACAiyC,EAAAA,aAAa92C,KAAKnP,MAClBA,KAAKkmD,2BAA2B,QAChC5/B,EAAAA,SAASnX,KAAKnP,MACdA,KAAK0nB,YAAYzjB,IACb,MAAMkiD,EAAev9B,EAAAA,OAAqC3kB,EAAGA,GAAKA,EAAEqU,OAC9D8tC,EAAcx9B,EAAAA,OAAqC3kB,EAAGA,GAAKA,EAAE+G,OACnE,OAAOhL,KAAK4nB,cAAc,CACtBI,OAAQm+B,EAAa,KAAOA,EAAa,GAAKA,EAAa,GAAK,GAAGA,EAAa,SAASA,EAAa,KACtG7tC,MAAO8tC,EAAY,KAAOA,EAAY,GAAKA,EAAY,GAAK,GAAGA,EAAY,SAASA,EAAY,KAChGp7C,MAAO/G,EAAEwE,WAGjBzI,KAAKgmD,QAAUjB,KACVvkD,EAAEyD,GAAKA,EAAEzD,GACTK,EAAEoD,GAAKA,EAAEpD,GAEdb,KACKumB,yBAAwB,GACxBC,yBAAwB,GACxB4f,kBAAkB,SAE3B,CAEA,IAAA3f,CAAKvF,EAAcjd,GACf,MAA8B,eAAvBid,EAAKlM,cAAiCkM,EAAKT,QAAQxc,EAAEqU,OAAS4I,EAAKN,SAAS3c,EAAE+G,MACzF,CAEA,IAAA0b,CAAKxF,EAAcjd,GACf,MAA8B,eAAvBid,EAAKlM,cAAiCkM,EAAKN,SAAS3c,EAAE+G,OAASkW,EAAKT,QAAQxc,EAAEqU,MACzF,CAEA,WAAA6M,CAAYjE,EAAcxL,EAASwP,EAAmB,KAClDlR,MAAMmR,YAAYjE,EAAMxL,EAASwP,GACjC,MAAMre,EAAU7G,KAEhBA,KAAKkiB,SAAWliB,KAAKkiB,SAASkG,OAAOpoB,KAAKqoB,aACtCroB,KAAKsoB,qBACLtoB,KAAKkiB,SAAWliB,KAAKkiB,SAASqG,eAAevoB,KAAKqoB,YAAc,IAAMroB,KAAK6f,OAG/E7f,KAAKgmD,QACAjiC,OAAO,CAAC,EAAG,GAAI,CAAC/jB,KAAK+X,QAAS/X,KAAKgY,WACnCye,OAAOz2B,KAAKqmD,WAGjB,MACMC,EADWtmD,KAAK8oB,cACMrU,IAAIxQ,IACrB,CACHzD,EAAGqG,EAAQ4f,KAAKvF,EAAMjd,GACtBpD,EAAGgG,EAAQ6f,KAAKxF,EAAMjd,GACtBqU,MAAO4I,EAAKxC,UAAUza,EAAEqU,OACxBtN,MAAOkW,EAAKvC,WAAW1a,EAAE+G,OACzBwa,QAASvhB,KAGXsiD,EAAevmD,KAAKgmD,QAAQM,GAC5BE,EAAe1jC,EAAAA,IAAMyjC,EAAc,SAAUtiD,GAAU,OAAOA,EAAEwE,MAAQ,GACxEg+C,EAAexjC,EAAAA,IAAMsjC,EAAc,SAAUtiD,GAAU,OAAOA,EAAEwE,MAAQ,GAC9EzI,KAAKkmC,eAAiBsgB,EACtBxmD,KAAKmmC,eAAiBsgB,EAEtB,MAAM98B,EAASjU,EAAQlE,UAAU,YAAYlI,KAAKi9C,EAAc,SAAUtiD,GAAK,OAAOA,EAAEsF,EAAI,IAAMtF,EAAE8F,CAAG,GACvG4f,EAAO7X,QAAQC,OAAO,QACjBC,KAAK,QAAS,WACd7C,KAAK+R,EAAKpB,WAAWhO,MAAMqY,KAAKjJ,EAAKpB,aACrC3B,GAAG,QAAS,SAAUla,GACnB,MAAMqF,EAAOzC,EAAQyC,OACrBzC,EAAQgf,MAAM5hB,EAAEwQ,IAAIsK,GAAOmC,EAAKyE,SAASrc,EAAKyV,EAAIyG,QAAQuC,UAAWlhB,EAAQsY,UAAU,GAAI+B,EAAKpB,WAAWQ,SAAStgB,MACxH,GACCme,GAAG,WAAY,SAAUla,GACtB,MAAMqF,EAAOzC,EAAQyC,OACrBzC,EAAQujB,SAASnmB,EAAEwQ,IAAIsK,GAAOmC,EAAKyE,SAASrc,EAAKyV,EAAIyG,QAAQuC,UAAWlhB,EAAQsY,UAAU,GAAI+B,EAAKpB,WAAWQ,SAAStgB,MAC3H,GACCme,GAAG,mBAAoBtX,EAAQmjB,QAAQC,MACvC9L,GAAG,oBAAqBtX,EAAQmjB,QAAQE,MACxClY,KAAK,YAAa,SAAU/N,GAAK,MAAO,aAAeA,EAAEzD,EAAI,IAAMyD,EAAEpD,EAAI,WAAa,GACtFsR,MAAMwX,GAAQtX,aAAa6S,SAASA,GACpClT,KAAK,IAAKhS,KAAKgmD,QAAQL,WACvB3zC,KAAK,YAAa,SAAU/N,GAAK,MAAO,aAAeA,EAAEzD,EAAI,IAAMyD,EAAEpD,EAAI,WAAa,GACtFgY,MAAM,OAAQ,SAAU5U,GAAK,OAAO4C,EAAQqb,SAASje,EAAEwE,OAAQ+9C,EAAcC,EAAe,GAEjG98B,EAAO/X,OAAOS,aAAa6S,SAASA,GAC/BlT,KAAK,YAAa,SAAU/N,GAAK,MAAO,aAAeA,EAAEzD,EAAI,IAAMyD,EAAEpD,EAAI,WAAa,GACtF4R,QAET,CAEA,IAAAb,CAAK6D,EAASC,GACV1B,MAAMpC,KAAK6D,EAASC,EACxB,CAGA,KAAAmQ,CAAM9G,EAAe8F,EAAQvE,GAE7B,CACA,QAAA8J,CAASrL,EAAe8F,EAAQvE,GAEhC,GA/G+B7f,EAAAslD,GAAA,UAC/Bz7B,EADSy7B,GACF,WAAyB,CAAC,CAC7BlmC,GAAI,IACJ/K,KAAM,OACP,CACC+K,GAAI,IACJ/K,KAAM,YANP,IAAM4xC,GAANX,GAiHPW,GAAOhmD,UAAU8U,QAAU,gBAC3BkxC,GAAOhmD,UAAU+pB,WAAWw7B,EAAAA,aAAavlD,WACzCgmD,GAAOhmD,UAAU+pB,WAAWnE,EAAAA,SAAS5lB,WAkBrCgmD,GAAOhmD,UAAUmc,QAAQ,YAAa,QAAS,MAAO,gCAAiC6pC,GAAOhmD,UAAUwhB,SAASkG,SAAU,CAAElC,KAAM,CAAC,QAAS,YAC7IwgC,GAAOhmD,UAAUmc,QAAQ,oBAAoB,EAAO,UAAW,2CAA4C,KAAM,CAAEqJ,KAAM,CAAC,eAAgB,YAC1IwgC,GAAOhmD,UAAUmc,QAAQ,UAAW,GAAI,SAAU,aAAc,KAAM,CAAE3L,MAAO,CAAErN,IAAK,EAAGD,IAAK,IAAK8mB,KAAM,KC3IlG,MAAMi8B,GAAN,MAAMA,cAAan8B,GACtB,WAAA7pB,GACIqT,QAEAhU,KACK4qB,oBAAoB,SAE7B,GAP8BnqB,EAAAkmD,GAAA,QAA3B,IAAMC,GAAND,GASPC,GAAKlmD,UAAU8U,QAAU,cCXlB,MAAMqxC,GAAN,MAAMA,oBAAmBjG,GAC5B,WAAAjgD,GACIqT,OACJ,CACA,UAAA0I,CAAWjH,EAASC,GAChB1B,MAAM0I,WAAWjH,EAASC,GAC1B,IAAIlV,EAA2B,SAAvBR,KAAKgV,cAA2B,EAAIhV,KAAK69C,MAAM9lC,MACnDlX,EAAIb,KAAK69C,MAAM7lC,OACQ,WAAvBhY,KAAKiU,eAA8BjU,KAAK+gD,mBAAmBC,aAC3DxgD,GAAKR,KAAK69C,MAAM9lC,MAAQ,EACxBlX,GAAKb,KAAK69C,MAAM7lC,OAAS,GAE7BhY,KAAK2c,SAAS3K,KAAK,YAAa,aAAexR,EAAI,IAAMK,EAAI,UAAYb,KAAKihD,aAAe,IACjG,CACA,WAAA/B,GACIlrC,MAAMkrC,cACNl/C,KAAK+K,MACAzG,WAAkC,SAAvBtE,KAAKgV,cAA2B,GAAKtV,KAAKC,GAAK,GAC1D6E,SAAgC,SAAvBxE,KAAKgV,cAA2BtV,KAAKC,GAAK,EAAI,EAEhE,CACA,eAAA49C,GACI,MAAMG,EAAe19C,KAAK+uB,SAAS/uB,KAAKsJ,OAAOmL,IAAIxQ,GAAKjE,KAAK29C,aAAa,CAAEr0C,KAAMrF,KAAO,UAAW,IAAI8T,MACxG,OAAOrY,KAAKmE,IAAI7D,KAAK69C,MAAM9lC,MAAQ2lC,EAAe,GAAI19C,KAAK69C,MAAM7lC,OAAS,IAAU,CACxF,GAxBgCvX,EAAAomD,GAAA,cAA7B,IAAMC,GAAND,GA0BPC,GAAWpmD,UAAU8U,QAAU,oBAM/BsxC,GAAWpmD,UAAUmc,QAAQ,cAAe,OAAQ,MAAO,gDAAiD,CAAC,OAAQ,UC/B9G,MAAMkqC,GAAN,MAAMA,6BAA4B7zC,EAAAA,UAC3B8zC,GACAC,UACAC,WACAC,SACAC,cACAC,eACAC,eACAC,QACAC,QACAC,QACAC,QACAC,QACAC,OACAC,OACAC,OACAC,OACAC,OACV,WAAArnD,GACIqT,OACJ,CACA,KAAAlC,CAAM2D,EAASC,GACX1B,MAAMlC,MAAM2D,EAASC,GACrB1V,KAAKgnD,GAAKtxC,EAAQ3D,OAAO,KACzB/R,KAAKinD,UAAYjnD,KAAKgnD,GAAGj1C,OAAO,QAChC/R,KAAKknD,WAAalnD,KAAKgnD,GAAGj1C,OAAO,QACjC/R,KAAKmnD,SAAWnnD,KAAKgnD,GAAGj1C,OAAO,QAC/B/R,KAAKonD,cAAgBpnD,KAAKgnD,GAAGj1C,OAAO,QACpC/R,KAAKqnD,eAAiBrnD,KAAKgnD,GAAGj1C,OAAO,QACrC/R,KAAKsnD,eAAiBtnD,KAAKgnD,GAAGj1C,OAAO,QACrC/R,KAAKunD,QAAUvnD,KAAKgnD,GAAGj1C,OAAO,QAC9B/R,KAAKwnD,QAAUxnD,KAAKgnD,GAAGj1C,OAAO,QAC9B/R,KAAKynD,QAAUznD,KAAKgnD,GAAGj1C,OAAO,QAC9B/R,KAAK0nD,QAAU1nD,KAAKgnD,GAAGj1C,OAAO,QAC9B/R,KAAK2nD,QAAU3nD,KAAKgnD,GAAGj1C,OAAO,QAC9B/R,KAAK4nD,OAAS5nD,KAAKgnD,GAAGj1C,OAAO,QAC7B/R,KAAK6nD,OAAS7nD,KAAKgnD,GAAGj1C,OAAO,QAC7B/R,KAAK8nD,OAAS9nD,KAAKgnD,GAAGj1C,OAAO,QAC7B/R,KAAK+nD,OAAS/nD,KAAKgnD,GAAGj1C,OAAO,QAC7B/R,KAAKgoD,OAAShoD,KAAKgnD,GAAGj1C,OAAO,OACjC,CACA,MAAA8J,CAAOpG,EAASC,GACZ1B,MAAM6H,OAAOpG,EAASC,GACtB,MAAMuyC,GAAoC,eAAvBjoD,KAAKgV,cAAiChV,KAAK+X,QAAU/X,KAAKgY,UAAYhY,KAAKkoD,YACxFC,EAAoC,eAAvBnoD,KAAKgV,cAAiChV,KAAKgY,SAAWhY,KAAK+X,QACxElI,EAAQyG,gBACTvF,OAAO,CACJ/Q,KAAKsJ,OAAO,GACZtJ,KAAKsJ,OAAO,KAEf4H,MAAM,CACHlR,KAAKooD,cACLH,EAAYjoD,KAAKooD,gBAGnBC,EAAcroD,KAAKsoD,qBAAuBtoD,KAAKqoD,cAAgBF,EAC/DD,EAAYloD,KAAKkoD,YACjB5gC,EAAYtnB,KAAKsnB,YACjBihC,EAAiBvoD,KAAKuoD,iBACtBC,EAAMxoD,KAAKooD,cACjB,IAAIK,EAAM54C,EAAM7P,KAAKsJ,OAAO,IACxBo/C,EAAM74C,EAAM7P,KAAKsJ,OAAO,IACxBq/C,EAAM94C,EAAM7P,KAAKsJ,OAAO,IAC5B,MAAMs/C,GAAWP,EAAc,EACzBQ,EAAaR,EAAc,EAC3BS,EAAoB9oD,KAAK8oD,oBACzBC,EAAoB/oD,KAAK+oD,oBACzB9sC,EAAUjc,KAAKgpD,cACfC,EAAgBjpD,KAAKipD,gBACrBn6B,EAAgB9uB,KAAK8uB,gBACrBo6B,EAAKxpD,KAAKkE,IAAIqlD,EAAen6B,GAC7Bq6B,EAAMlB,EAAYO,EACxB,GAAIU,EAAK,EAAG,CACR,KAAOT,EAAMD,EAAMU,GACfT,GAAOS,EAEX,KAAOR,EAAMD,EAAMS,GACfR,GAAOQ,EAEX,KAAOP,EAAMD,EAAMQ,GACfP,GAAOO,EAEX,KAAOC,EAAMR,EAAMO,GACfP,GAAOO,EAEX,KAAOP,EAAMD,EAAMQ,GACfR,GAAOQ,EAEX,KAAOR,EAAMD,EAAMS,GACfT,GAAOS,CAEf,CACA,IAAIE,GAAWnB,EAAY,EAAMjoD,KAAKkoD,YAAc,EAChDmB,EAAS,EACTC,EAAS,EAEb,IAAIC,EAAY,EACZC,EAAc,QACd5/B,EAAc,MACS,aAAvB5pB,KAAKgV,gBACLo0C,EAAS,EACTC,EAASpB,EAAY,EAAKjoD,KAAKkoD,YAAc,EAC7CoB,GAAS,GACTE,EAAc,MACd5/B,EAAc,QACd2/B,GAAY,GAEhBvpD,KAAKgnD,GACAnuC,MAAM,kBAAmB,cACzB7G,KAAK,YAAa,aAAao3C,KAAUC,YAAiBC,cAE/DtpD,KAAKinD,UACAj1C,KAAK,OAAQsV,GACbtV,KAAK,SAAUq2C,GACfr2C,KAAK,QAASk2C,GACdl2C,KAAK,IAAKw2C,GACVx2C,KAAK,IAAK42C,GACV52C,KAAK,KAAMu2C,GACXv2C,KAAK,KAAMu2C,GAEhBvoD,KAAKknD,WACAl1C,KAAK,QAAS,cACdA,KAAK,OAAQsV,GACbtV,KAAK,SAAUq2C,GACfr2C,KAAK,QAASk2C,GACdl2C,KAAK,IAAKm3C,GACVn3C,KAAK,IAAK42C,GACV52C,KAAK,KAAMu2C,GACXv2C,KAAK,KAAMu2C,GAEhBvoD,KAAKmnD,SACAn1C,KAAK,OAAQsV,GACbtV,KAAK,SAAUk2C,GACfl2C,KAAK,QAASm3C,EAAMX,GACpBx2C,KAAK,IAAKw2C,GACVx2C,KAAK,KAAMk2C,EAAY,GAE5BloD,KAAKonD,cACAp1C,KAAK,OAAQsV,GACbtV,KAAK,SAAUq2C,GACfr2C,KAAK,QAAS22C,EAAMF,GACpBz2C,KAAK,IAAKy2C,GACVz2C,KAAK,IAAK42C,GACV52C,KAAK,KAAMu2C,GACXv2C,KAAK,KAAMu2C,GAEhBvoD,KAAKqnD,eACAr1C,KAAK,OAAQhS,KAAKypD,kBAClBz3C,KAAK,SAAUq2C,EAA2B,EAAZH,GAC9Bl2C,KAAK,QAAS02C,GAAOD,EAAmB,EAAZP,IAC5Bl2C,KAAK,IAAKy2C,EAAMP,GAChBl2C,KAAK,IAAKk2C,EAAaG,EAAc,GACrCr2C,KAAK,KAAuB,KAAjBu2C,GACXv2C,KAAK,KAAuB,KAAjBu2C,GAEhBvoD,KAAKsnD,eACAt1C,KAAK,OAAQhS,KAAKypD,kBAClBz3C,KAAK,SAAUq2C,EAA2B,EAAZH,GAC9Bl2C,KAAK,QAAS22C,EAAMD,EAAMR,GAC1Bl2C,KAAK,IAAK02C,GACV12C,KAAK,IAAKk2C,EAAaG,EAAc,GACrCr2C,KAAK,KAAuB,KAAjBu2C,GACXv2C,KAAK,KAAuB,KAAjBu2C,GAEhBvoD,KAAKunD,QACAv1C,KAAK,SAAUq2C,GACfr2C,KAAK,QAAS22C,EAAMF,GACpBz2C,KAAK,UAAWhS,KAAK89C,aAAe,KAAO,QAC3C9rC,KAAK,OAAQhS,KAAK+pB,aAClB/X,KAAK,IAAK,GACVA,KAAK,IAAK,GACVA,KAAK,YAAa,aAAaw2C,MAAQI,EAAU3sC,YAAkB6sC,WAA2BS,MAC9Fv3C,KAAK,YAAai3C,GAClBj3C,KAAK,cAAew3C,GACpBx3C,KAAK,qBAAsB,WAC3BE,KAAKlS,KAAKmf,UAAU,IAEzBnf,KAAKwnD,QACAx1C,KAAK,SAAUq2C,GACfr2C,KAAK,QAAS22C,EAAMF,GACpBz2C,KAAK,UAAWhS,KAAK89C,aAAe,KAAO,QAC3C9rC,KAAK,OAAQhS,KAAK+pB,aAClB/X,KAAK,IAAK,GACVA,KAAK,IAAK,GACVA,KAAK,YAAa,aAAay2C,MAAQG,EAAU3sC,YAAkB6sC,WAA2BS,MAC9Fv3C,KAAK,YAAai3C,GAClBj3C,KAAK,cAAew3C,GACpBx3C,KAAK,qBAAsB,UAC3BE,KAAKlS,KAAKmf,UAAU,IAEzBnf,KAAKynD,QACAz1C,KAAK,SAAUq2C,GACfr2C,KAAK,QAAS22C,EAAMF,GACpBz2C,KAAK,UAAWhS,KAAK89C,aAAe,KAAO,QAC3C9rC,KAAK,OAAQhS,KAAK+pB,aAClB/X,KAAK,IAAK,GACVA,KAAK,IAAK,GACVA,KAAK,YAAa,aAAa02C,MAAQE,EAAU3sC,YAAkB6sC,WAA2BS,MAC9Fv3C,KAAK,YAAai3C,GAClBj3C,KAAK,cAAew3C,GACpBx3C,KAAK,qBAAsB,UAC3BE,KAAKlS,KAAKmf,UAAU,IAEzBnf,KAAK0nD,QACA11C,KAAK,SAAUq2C,GACfr2C,KAAK,QAAS22C,EAAMF,GACpBz2C,KAAK,UAAWhS,KAAK89C,aAAe,KAAO,QAC3C9rC,KAAK,OAAQhS,KAAK+pB,aAClB/X,KAAK,IAAK,GACVA,KAAK,IAAK,GACVA,KAAK,YAAa,aAAa22C,MAAQC,EAAU3sC,YAAkB6sC,WAA2BS,MAC9Fv3C,KAAK,YAAai3C,GAClBj3C,KAAK,cAAew3C,GACpBx3C,KAAK,qBAAsB,UAC3BE,KAAKlS,KAAKmf,UAAU,IAEzBnf,KAAK2nD,QACA31C,KAAK,SAAUq2C,GACfr2C,KAAK,QAAS22C,EAAMF,GACpBz2C,KAAK,UAAWhS,KAAK89C,aAAe,KAAO,QAC3C9rC,KAAK,OAAQhS,KAAK+pB,aAClB/X,KAAK,IAAK,GACVA,KAAK,IAAK,GACVA,KAAK,YAAa,aAAam3C,EAAMjB,MAAcU,EAAU3sC,YAAkB6sC,WAA2BS,MAC1Gv3C,KAAK,YAAai3C,GAClBj3C,KAAK,cAAew3C,GACpBx3C,KAAK,qBAAsB,YAC3BE,KAAKlS,KAAKmf,UAAU,IAEzBnf,KAAK4nD,OACA51C,KAAK,SAAUq2C,GACfr2C,KAAK,QAAS22C,EAAMF,GACpBz2C,KAAK,UAAWhS,KAAK0pD,aAAe,KAAO,QAC3C13C,KAAK,OAAQhS,KAAK+pB,aAClB/X,KAAK,IAAK,GACVA,KAAK,IAAK,GACVA,KAAK,YAAa,aAAaw2C,MAAQK,EAAa5sC,YAAkB8sC,WAA2BQ,MACjGv3C,KAAK,YAAa8c,GAClB9c,KAAK,cAAe4X,GACpB5X,KAAK,qBAAsB,WAC3BE,KAAKlS,KAAKsJ,OAAO,IAEtBtJ,KAAK6nD,OACA71C,KAAK,SAAUq2C,GACfr2C,KAAK,QAAS22C,EAAMF,GACpBz2C,KAAK,UAAWhS,KAAK0pD,aAAe,KAAO,QAC3C13C,KAAK,OAAQhS,KAAK+pB,aAClB/X,KAAK,IAAK,GACVA,KAAK,IAAK,GACVA,KAAK,YAAa,aAAay2C,MAAQI,EAAa5sC,YAAkB8sC,WAA2BQ,MACjGv3C,KAAK,YAAa8c,GAClB9c,KAAK,cAAe4X,GACpB5X,KAAK,qBAAsB,UAC3BE,KAAKlS,KAAKsJ,OAAO,IAEtBtJ,KAAK8nD,OACA91C,KAAK,SAAUq2C,GACfr2C,KAAK,QAAS22C,EAAMF,GACpBz2C,KAAK,UAAWhS,KAAK0pD,aAAe,KAAO,QAC3C13C,KAAK,OAAQhS,KAAK+pB,aAClB/X,KAAK,IAAK,GACVA,KAAK,IAAK,GACVA,KAAK,YAAa,aAAa02C,MAAQG,EAAa5sC,YAAkB8sC,WAA2BQ,MACjGv3C,KAAK,YAAa8c,GAClB9c,KAAK,cAAe4X,GACpB5X,KAAK,qBAAsB,UAC3BE,KAAKlS,KAAKsJ,OAAO,IAEtBtJ,KAAK+nD,OACA/1C,KAAK,SAAUq2C,GACfr2C,KAAK,QAAS22C,EAAMF,GACpBz2C,KAAK,UAAWhS,KAAK0pD,aAAe,KAAO,QAC3C13C,KAAK,OAAQhS,KAAK+pB,aAClB/X,KAAK,IAAK,GACVA,KAAK,IAAK,GACVA,KAAK,YAAa,aAAa22C,MAAQE,EAAa5sC,YAAkB8sC,WAA2BQ,MACjGv3C,KAAK,YAAa8c,GAClB9c,KAAK,cAAe4X,GACpB5X,KAAK,qBAAsB,UAC3BE,KAAKlS,KAAKsJ,OAAO,IAEtBtJ,KAAKgoD,OACAh2C,KAAK,SAAUq2C,GACfr2C,KAAK,QAAS22C,EAAMF,GACpBz2C,KAAK,UAAWhS,KAAK0pD,aAAe,KAAO,QAC3C13C,KAAK,OAAQhS,KAAK+pB,aAClB/X,KAAK,IAAK,GACVA,KAAK,IAAK,GACVA,KAAK,YAAa,aAAam3C,EAAMjB,MAAcW,EAAa5sC,YAAkB8sC,WAA2BQ,MAC7Gv3C,KAAK,YAAa8c,GAClB9c,KAAK,cAAe4X,GACpB5X,KAAK,qBAAsB,YAC3BE,KAAKlS,KAAKsJ,OAAO,GAE1B,GAtS+C7I,EAAAsmD,GAAA,uBAA5C,IAAM4C,GAAN5C,GAwSP4C,GAAoBjpD,UAAU8U,QAAU,6BAmCxCm0C,GAAoBjpD,UAAUmc,QAAQ,YAAa,QAAS,aAAc,iCAC1E8sC,GAAoBjpD,UAAUmc,QAAQ,cAAc,EAAM,UAAW,iCACrE8sC,GAAoBjpD,UAAUmc,QAAQ,cAAc,EAAM,UAAW,iCACrE8sC,GAAoBjpD,UAAUmc,QAAQ,cAAe,aAAc,MAAO,oBAAqB,CAAC,aAAc,aAC9G8sC,GAAoBjpD,UAAUmc,QAAQ,gBAAiB,GAAI,SAAU,oCACrE8sC,GAAoBjpD,UAAUmc,QAAQ,gBAAiB,GAAI,SAAU,oCACrE8sC,GAAoBjpD,UAAUmc,QAAQ,iBAAkB,EAAG,SAAU,2CACrE8sC,GAAoBjpD,UAAUmc,QAAQ,YAAa,EAAG,SAAU,2BAChE8sC,GAAoBjpD,UAAUmc,QAAQ,cAAe,KAAM,SAAU,gCAAiC,KAAM,CAACE,UAAU,IACvH4sC,GAAoBjpD,UAAUmc,QAAQ,cAAe,EAAG,SAAU,gDAClE8sC,GAAoBjpD,UAAUmc,QAAQ,cAAe,GAAI,SAAU,4DACnE8sC,GAAoBjpD,UAAUmc,QAAQ,YAAa,OAAQ,aAAc,iCACzE8sC,GAAoBjpD,UAAUmc,QAAQ,iBAAkB,QAAS,aAAc,4BAC/E8sC,GAAoBjpD,UAAUmc,QAAQ,qBAAqB,GAAK,SAAU,oCAC1E8sC,GAAoBjpD,UAAUmc,QAAQ,qBAAqB,GAAK,SAAU,oCCvVnE,MAAM+sC,GAAN,MAAMA,eAAc12C,EAAAA,UAEvB,WAAAvS,GACIqT,QACAqS,EAAAA,SAASlX,KAAKnP,MACdsmB,EAAAA,SAASnX,KAAKnP,MACd4d,UAAQC,qBAAqB1O,KAAKnP,KACtC,CAEA,QAAAkoB,CAASC,GACL,OAAQA,GACJ,IAAK,YACD,MAAO,OACX,IAAK,SACD,MAAO,SACX,IAAK,QACD,MAAO,OAGnB,CACA,kBAAA0hC,CAAmBn0C,EAASlV,EAAGK,GAC3B,MACMgG,EAAU7G,KAChB,OAFcA,KAAKkoB,SAASloB,KAAKwoB,eAG7B,IAAK,OACD9S,EACK1D,KAAK,QAASnL,EAAQsiB,aACtBnX,KAAK,SAAUnL,EAAQsiB,aACvBtQ,MAAM,OAAQ5U,GAAKjE,KAAKonB,YAAYnjB,EAAEqF,KAAMrF,EAAE4gB,OAAQ5gB,EAAE+G,QAE7D,MACJ,IAAK,SACD0K,EACK1D,KAAK,IAAKnL,EAAQsiB,YAAc,GAChCnX,KAAK,KAAMxR,GACXwR,KAAK,KAAMnR,GACXgY,MAAM,OAAQ5U,GAAKjE,KAAKonB,YAAYnjB,EAAEqF,KAAMrF,EAAE4gB,OAAQ5gB,EAAE+G,QAE7D,MACJ,IAAK,OACD,MAAM8+C,EAAYjjD,EAAQsiB,YAAc,EACxCzT,EACK1D,KAAK,IAAK,SAAU/N,GACjB,MAAO,KAAOzD,EAAIspD,GAAa,KAAOjpD,EAAIipD,GAAa,MAC5CtpD,EAAIspD,GAAa,KAAOjpD,EAAIipD,GAAa,MACzCtpD,EAAIspD,GAAa,KAAOjpD,EAAIipD,GAAa,MACzCtpD,EAAIspD,GAAa,KAAOjpD,EAAIipD,EAC3C,GACCjxC,MAAM,SAAU5U,GAAKjE,KAAKonB,YAAYnjB,EAAEqF,KAAMrF,EAAE4gB,OAAQ5gB,EAAE+G,QAK3E,CACA,KAAA8G,CAAM2D,EAASC,GACX1B,MAAMlC,MAAM2D,EAASC,GACrB1V,KAAK8f,WAAWC,cAAcrK,GAE9B1V,KACK0nB,YAAYzjB,GACFjE,KAAK4nB,cAAc,CAAEtP,MAAOrU,EAAEqU,MAAO0P,OAAQ/jB,EAAE4gB,OAAQ7Z,MAAO/G,EAAE+G,QAGnF,CACA,MAAA6Q,CAAOpG,EAASC,GACZ1B,MAAM6H,OAAOpG,EAASC,GACtB1V,KAAKkiB,SAAWliB,KAAKkiB,SAASkG,OAAOpoB,KAAKqoB,aAC1C,MAAMxhB,EAAU7G,KAGV+pD,EAFI/pD,KAAKgY,SAEK,EACdgyC,EAFIhqD,KAAK+X,QAEK,EAEdoH,EAAUnf,KAAKmf,UACf7V,EAAOtJ,KAAKsJ,OACZuf,EAAW7oB,KAAK8oB,YAAY3J,EAAS7V,GAAMmL,IAAI,CAACxQ,EAAQib,KAC1Djb,EAAEkkB,MAAQnoB,KAAKkoB,SAASloB,KAAKwoB,cAC7BvkB,EAAE4gB,OAAS1F,EAAQlb,EAAE8kB,QACrB9kB,EAAE8a,IAAMzV,EAAK4V,GACNjb,IAELgmD,EAAgB,GAChBpnD,EAAM7C,KAAKkqD,gBAAgB,IAAMlqD,KAAKsJ,OAAOb,QAC7C0hD,EAAcnqD,KAAKgZ,WACzB,IAAIoxC,EAAc,EAClBvhC,EAASnW,OAAOlJ,GAAkB,IAAbA,EAAEuf,QAAcmD,QAAQ1iB,IACzC,MAAM6gD,EAAQr2C,MAAM+a,SAASvlB,EAAE8O,MAAO,GAAGtY,KAAK8Y,eAAgB9Y,KAAKgZ,YAC/DoxC,EAAcC,EAAMtyC,QAAOqyC,EAAcC,EAAMtyC,SAEvD,MAAM0e,EAAS/2B,KAAKmE,IAAIkmD,EAASI,EAAaH,EAASI,GACjDE,EAAS50C,EACVlE,UAAU,UACVlI,KAAKuf,EAASnW,OAAOlJ,GAAkB,IAAbA,EAAEuf,SAE3BwhC,EAAU7qD,KAAKkE,IAAIoD,MAAMH,EAASgiB,EAASpU,IAAIjL,GAAKA,EAAEwB,QAC5Ds/C,EAAOx4C,QACFC,OAAO,QACPC,KAAK,QAAS,SACdA,KAAK,cAAe,UACpBG,MAAMm4C,GACNt4C,KAAK,YAAahS,KAAKgZ,YACvBhH,KAAK,cAAehS,KAAK8Y,cACzBnG,KAAK,SAA4BnJ,EAAGD,GACjC,MAAMihD,EAAK3jD,EAAQ4jD,gBAAgBh0B,EAASltB,EAAI1G,EAAQnD,KAAKC,GAAK,GAClEsqD,EAAc59C,KAAKm+C,EAAG/1C,IAAIjL,GAAKA,EAAI3C,EAAQ6jD,sBAC3C,IAAIC,EAAc,SAClB,MAAMx+C,EAAKzM,KAAKuQ,MAAMu6C,EAAG,IACzBG,EAAcx+C,EAAK,EAAI,QAAUw+C,EACjCA,EAAcx+C,EAAK,EAAI,MAAQw+C,EAC/Bp1C,EAAAA,OAASvV,MACJgS,KAAK,cAAe24C,GACpB34C,KAAK,IAAKw4C,EAAG,IACbx4C,KAAK,IAAKw4C,EAAG,GAEtB,GACCt4C,KAAK1I,GAAKA,EAAE8O,OAEjBgyC,EAAO14C,OAAOa,SACd,MAAMm4C,EAAUl1C,EACXlE,UAAU,WACVlI,KAAKuf,EAASnW,OAAOlJ,GAAkB,IAAbA,EAAEuf,SACjC6hC,EAAQ94C,QACHC,OAAO,QACPyK,QAAQ,UAAU,GAClB3D,MAAM,SAAU,QAChBA,MAAM,iBAAkB,QACxBA,MAAM,eAAgB,OACtB1G,MAAMy4C,GACN54C,KAAK,KAAM,GACXA,KAAK,KAAM,GACXA,KAAK,KAAM,CAACxI,EAAGD,IAAM0gD,EAAc1gD,GAAG,IACtCyI,KAAK,KAAM,CAACxI,EAAGD,IAAM0gD,EAAc1gD,GAAG,IAC3CqhD,EAAQh5C,OAAOa,SACf,MAAMo4C,EAAen1C,EAChBlE,UAAU,gBACVlI,KAAKtJ,KAAK8qD,oBAEfD,EAAa/4C,QACRC,OAAO,WACPyK,QAAQ,eAAe,GACvB3D,MAAM,SAAU,QAChBA,MAAM,iBAAkB,QACxBA,MAAM,eAAgB,SACtB1G,MAAM04C,GACNl4C,KAAK,SAAUo4C,EAAMxhD,GAClB,MAAMyhD,EAAc,GACpBf,EAAc/9B,QAAQ,CAAC++B,EAAcC,KACjCF,EAAY3+C,KAAK,CACb4+C,EAAa,GAAKF,EAClBE,EAAa,GAAKF,MAG1Bx1C,SAASvV,MACJgS,KAAK,SAAUg5C,EAAYrvC,KAAK,MAChC3J,KAAK,SAAU,gBACfA,KAAK,iBAAkB,KACvBA,KAAK,eAAgB,IACrBA,KAAK,eAAgB,EAE9B,GAEJ64C,EAAaj5C,OAAOa,SAEpB,MAAM04C,EAAmBz1C,EACpBlE,UAAU,qBACVlI,KAAKtJ,KAAK8qD,oBAEfK,EAAiBr5C,QACZC,OAAO,QACPC,KAAK,QAAS,oBACdA,KAAK,cAAe,SACpBA,KAAK,YAAahS,KAAKgZ,YACvBhH,KAAK,cAAehS,KAAK8Y,cACzB3G,MAAMg5C,GACNn5C,KAAK,IAAK,GACVA,KAAK,IAAK+4C,GAAQd,EAAc,GAAG,GAAKc,GACxC74C,KAAK,CAAC64C,EAAMxhD,IAAM7J,KAAKuQ,MAAM86C,EAAOR,IAEzCM,EAAaj5C,OAAOa,SAGpB,MAAM24C,EAAkB11C,EACnBlE,UAAU,SACVlI,KAAK6V,EAAQzM,OAAO,CAAClJ,EAAGD,IAAMA,EAAI,IACvC6hD,EAAgBt5C,QACXC,OAAO,WACPC,KAAK,QAAS,QACd6G,MAAM,iBAAkB,QACxBA,MAAM,eAAgB,SACtB1G,MAAMi5C,GACNvyC,MAAM,SAAU5U,GAAKjE,KAAKonB,YAAY,GAAInjB,EAAG,IAC7C4U,MAAM,UAAa7Y,KAAKqnB,UAAU,GAAIpjB,EAAG,IACzC4U,MAAM,eAAgB7Y,KAAKqrD,eAC3Br5C,KAAK,SAAU,CAAC/N,EAAGqnD,IACTrB,EAAcx1C,IAAI,CAACw2C,EAAcC,KACpC,MAAMzP,EAAMnyC,EAAK4hD,GAASI,EAAU,GAC9BC,EAAmB,IAAR9P,EAAY,EAAIA,EAAM8O,EACvC,OAAOU,EAAa,GAAKM,EAAW,IAAMN,EAAa,GAAKM,IAC7D5vC,KAAK,MAEhByvC,EAAgBx5C,OAAOa,SAGvB,MAAM+4C,EAAY91C,EACblE,UAAU,UACVlI,KAAKuf,GACV2iC,EAAU15C,QACLC,OAAO,KACPC,KAAK,QAAS,SACdmM,GAAG,mBAAoBtX,EAAQmjB,QAAQC,MACvC9L,GAAG,oBAAqBtX,EAAQmjB,QAAQE,MACxC/L,GAAG,QAAS,SAAUla,EAAQ6lB,GAC3B,MAAM2hC,EAAW5kD,EAAQyC,OAAOrF,EAAE8jB,QAC5B2jC,EAAU7kD,EAAQ8e,SAAS8lC,GAC3BnrC,EAAWzZ,EAAQiZ,WAAWQ,SAAStgB,MAC7C6G,EAAQgf,MAAM6lC,EAAS7kD,EAAQsY,UAAUlb,EAAE8kB,QAASzI,EACxD,GACCnC,GAAG,WAAY,SAAUla,EAAQ6lB,GAC9BjjB,EAAQujB,SAASvjB,EAAQ8e,SAAS9e,EAAQyC,OAAOrF,EAAE8jB,SAAU9jB,EAAE4gB,OAAQhe,EAAQiZ,WAAWQ,SAAStgB,MACvG,GACC2S,KAAK,SAAU1O,GACZ,MAAMyR,EAAUH,EAAAA,OAASvV,MACzB0V,EAAQ3D,OAAO,UACVC,KAAK,QAAS,kBACdA,KAAK,IAAKnL,EAAQsiB,aAClBha,KAAKtI,EAAQiZ,WAAWhO,MAAMqY,KAAKtjB,EAAQiZ,aAEhDpK,EAAQ3D,OAAOlL,EAAQqhB,SAASrhB,EAAQ2hB,eACnCxW,KAAK,QAAS,aAEvB,GACCG,MAAMq5C,GACN74C,KAAK,SAAU1O,GACZ,MAAMyR,EAAUH,EAAAA,OAASvV,MACnBurD,EAAuB,IAAZtnD,EAAE+G,MAAc,EAAI/G,EAAE+G,MAAQu/C,EACzC/pD,EAAIypD,EAAchmD,EAAE8jB,QAAQ,GAAKwjC,EACjC1qD,EAAIopD,EAAchmD,EAAE8jB,QAAQ,GAAKwjC,EACvC71C,EAAQzD,OAAO,mBACVD,KAAK,KAAMxR,GACXwR,KAAK,KAAMnR,GAGhB,MAAM8qD,EAAej2C,EAAQzD,OAAO,eAC/B4G,MAAM,SAAUhS,EAAQugB,YAAYnjB,EAAE8a,IAAK9a,EAAE4gB,OAAQ5gB,EAAE+G,QACvD6N,MAAM,OAAQhS,EAAQwgB,UAAUpjB,EAAE8a,IAAK9a,EAAE4gB,OAAQ5gB,EAAE+G,QAExDnE,EAAQgjD,mBAAmB8B,EAAcnrD,EAAGK,EAChD,GAEJ2qD,EAAU55C,OAAOa,QACrB,CAEA,eAAAg4C,CAAgBlpD,EAAGqqD,GACf,MAAO,CAACrqD,EAAI7B,KAAKwD,IAAI0oD,GAAQrqD,EAAI7B,KAAK0D,IAAIwoD,GAC9C,CACA,eAAAC,CAAgBrrD,EAAGK,GACf,MAAO,CAACnB,KAAKiE,MAAM9C,EAAGL,GAAId,KAAK4C,KAAK9B,EAAIA,EAAIK,EAAIA,GACpD,CACA,eAAAqpD,CAAgBjmD,GACZ,OAAOA,EAAI,YACf,CACA,eAAA6nD,CAAgBvqD,GACZ,OAAW,aAAJA,CACX,CACA,gBAAAwqD,CAAiBniD,EAAOoiD,GACpB,MAAMxrD,EAAIoJ,EAAM,GACV/I,EAAI+I,EAAM,GAChB,IAAIqiD,GAAS,EACb,IAAA,IAAS1iD,EAAI,EAAGQ,EAAIiiD,EAAGvjD,OAAS,EAAGc,EAAIyiD,EAAGvjD,OAAQsB,EAAIR,IAAK,CACvD,MAAMwzB,EAAKivB,EAAGziD,GAAG,GACXyzB,EAAKgvB,EAAGziD,GAAG,GACX2zB,EAAK8uB,EAAGjiD,GAAG,GACXozB,EAAK6uB,EAAGjiD,GAAG,GACGizB,EAAKn8B,GAAQs8B,EAAKt8B,GAC9BL,GAAK08B,EAAKH,IAAOl8B,EAAIm8B,IAAOG,EAAKH,GAAMD,OACtBkvB,EAC7B,CACA,OAAOA,CACX,GAtRiCxrD,EAAAmpD,GAAA,SAA9B,IAAMsC,GAANtC,GAwRPsC,GAAMxrD,UAAU8U,QAAU,eAC1B02C,GAAMxrD,UAAU+pB,WAAWpE,EAAAA,SAAS3lB,WACpCwrD,GAAMxrD,UAAU+pB,WAAWnE,EAAAA,SAAS5lB,WACpCwrD,GAAMxrD,UAAUslB,MAAMpI,EAAAA,QAAQC,sBAwC9BquC,GAAMxrD,UAAUmc,QAAQ,YAAa,UAAW,MAAO,gCAAiCqvC,GAAMxrD,UAAUwhB,SAASkG,UACjH8jC,GAAMxrD,UAAUmc,QAAQ,aAAc,QAAS,MAAO,aAAc,CAAC,SAAU,YAAa,UAC5FqvC,GAAMxrD,UAAUmc,QAAQ,YAAa,EAAG,SAAU,aAAc,KAAM,CAAE3L,MAAO,CAAErN,IAAK,EAAG6mB,KAAM,EAAG9mB,IAAK,OACvGsoD,GAAMxrD,UAAUmc,QAAQ,mBAAoB,CAAC,GAAK,GAAK,GAAK,GAAK,GAAI,QAAS,mGAC9EqvC,GAAMxrD,UAAUmc,QAAQ,cAAe,IAAM,SAAU,kCACvDqvC,GAAMxrD,UAAUmc,QAAQ,aAAc,GAAI,SAAU,cACpDqvC,GAAMxrD,UAAUmc,QAAQ,WAAY,GAAI,SAAU,YAClDqvC,GAAMxrD,UAAUmc,QAAQ,oBAAqB,GAAK,SAAU,qBCvUrD,MAAMsvC,GAAN,MAAMA,mBAAkBj5C,EAAAA,UASnBk5C,aAAex2C,EAAAA,YACfy2C,YAAc/1C,EAAAA,cACdijC,OAAS9yC,IACZnC,WAAW,GACXE,SAAUP,GAAMjE,KAAKqsD,YAAYpoD,EAAE,KAG9BqoD,MACAC,WACAC,YAEV,WAAA7rD,GACIqT,QACAqS,EAAAA,SAASlX,KAAKnP,MACdsmB,EAAAA,SAASnX,KAAKnP,MACd4d,UAAQC,qBAAqB1O,KAAKnP,KACtC,CAEA,KAAA8R,CAAM2D,EAASC,GACX1B,MAAMlC,MAAM2D,EAASC,GACrB1V,KAAK8f,WAAWC,cAAcrK,GAC9B1V,KAAK0nB,YAAYzjB,GACNjE,KAAK4nB,cAAc,CAAEtP,MAAOrU,EAAE,GAAI+G,MAAO/G,EAAE,MAGtDjE,KAAKwsD,YAAc92C,EAAQ3D,OAAO,KAC7BC,KAAK,QAAS,UAEnBhS,KAAKusD,WAAa72C,EAAQ3D,OAAO,KAC5BC,KAAK,QAAS,UAEnBhS,KAAKssD,MAAQ52C,EAAQ3D,OAAO,KACvBC,KAAK,QAAS,OAEvB,CAEA,MAAA6J,CAAOpG,EAASC,GACZ1B,MAAM6H,OAAOpG,EAASC,GACtB,MAAM7O,EAAU7G,KACVymC,EAAW/mC,KAAKkE,IAAI5D,KAAKysD,yBAA2BzsD,KAAK0sD,kBAAoB,KAAM1sD,KAAKsJ,OAAOmL,OAASxQ,EAAE,KAEhHjE,KAAKqsD,YACAt7C,OAAO,CAAC,EAAG01B,IACXv1B,MAAM,CAAC,EAAGlR,KAAKmgD,QAAQngD,KAAK2sD,mBAGjC,MAAM77C,EAAQ9Q,KAAKqsD,YAAYv7C,MAAM9Q,KAAKiY,aAEpCylC,EAAe19C,KAAK+uB,SAASje,EAAM2D,IAAIxQ,GAAK,GAAKA,GAAI,UAAW,IAAI8T,MACpE60C,EAAeltD,KAAKmE,IAAI7D,KAAK+X,QAAgC,GAArB,GAAK2lC,GAAmB19C,KAAKgY,aAA4B,EAGjG60C,EAAa7sD,KAAKsJ,OAAOmL,IAAIxQ,GAAKA,EAAE,IAE1CjE,KAAKosD,aACAr7C,OAAO87C,GACP37C,MAAM,CAAC,EAAG07C,IACV3wC,QAAQjc,KAAK8sD,iBAElB,MAAMA,EAAgB9sD,KAAKosD,aAAa1hC,OAAS1qB,KAAKosD,aAAanwC,UAE7D8wC,EAAgB/sD,KAAKwsD,YAAYh7C,UAAU,UAAUlI,KAAKujD,GAChEE,EAAcj7C,QAAQC,OAAO,UACxBC,KAAK,OAAQ,eACbG,MAAM46C,GACN/6C,KAAK,IAAK/N,GAAKjE,KAAKosD,aAAanoD,GAAKjE,KAAKosD,aAAa1hC,OAASoiC,EAAgB,GAEtFC,EAAcn7C,OAAOa,SAErB,MAAMu6C,EAAahtD,KAAKwsD,YAAYh7C,UAAU,aAAalI,KAAKujD,GAChEG,EAAWl7C,QAAQC,OAAO,QACrBC,KAAK,QAAS,YACdA,KAAK,KAAK,GACVA,KAAK,qBAAsB,UAC3BA,KAAK,cAAe,OACpBG,MAAM66C,GACNh7C,KAAK,IAAK/N,IAAMjE,KAAKosD,aAAanoD,GAAKjE,KAAKosD,aAAap8C,YAAc,GACvEkC,QAAUjO,GACf+oD,EAAWp7C,OAAOa,SAGlB,MAAMw6C,EAAajtD,KAAKusD,WAAW/6C,UAAU,QAAQlI,KAAKwH,GAC1Dm8C,EAAWn7C,QAAQC,OAAO,QACrBI,MAAM86C,GACNj7C,KAAK,QAAW46C,EAAcltD,KAAKwD,IAAIlD,KAAKqsD,YAAYpoD,GAAKjE,KAAKmgD,QAAQ,MAC1EnuC,KAAK,QAAW46C,EAAcltD,KAAK0D,IAAIpD,KAAKqsD,YAAYpoD,GAAKjE,KAAKmgD,QAAQ,MAE/E8M,EAAWr7C,OAAOa,SAElB,MAAMwa,EAAYjtB,KAAKusD,WAAW/6C,UAAU,QAAQlI,KAAKwH,GACzDmc,EAAUnb,QAAQC,OAAO,QACpB8G,MAAM,oBAAqB,WAC3B1G,MAAM8a,GACNjb,KAAK,QAAW46C,EAAc,IAAMltD,KAAKwD,IAAIlD,KAAKqsD,YAAYpoD,GAAKjE,KAAKmgD,QAAQ,MAChFnuC,KAAK,IAAK/N,IAAM2oD,EAAc,IAAMltD,KAAK0D,IAAIpD,KAAKqsD,YAAYpoD,GAAKjE,KAAKmgD,QAAQ,MAChFtnC,MAAM,cAAe5U,IAClB,MACMurC,EAAQxvC,KAAKktD,QAAQltD,KAAKqsD,YAAYpoD,IAC5C,OAAIurC,GAAS,GAAKA,GAFC,IAGfA,GAAS,KAAoBA,GAAS,KACtCA,GAAS,KAAoBA,GAAS,IAE/B,SACAA,GAAS,KAAOA,GAAS,IACzB,MAEA,OAGdt9B,KAAKjO,GAAKA,GAEfgpB,EAAUrb,OAAOa,SAEjB,MAAM06C,EAAcntD,KAAKmf,UAAU1W,OAAS,EAAIzI,KAAKmf,UAAU,GAAK,GAEpEnf,KAAKu5C,OACAr1C,YAAYD,GAAKjE,KAAKosD,aAAanoD,EAAE,KACrCG,YAAYH,GAAKjE,KAAKosD,aAAanoD,EAAE,IAAMjE,KAAKosD,aAAap8C,aAElE,MAAMxE,EAAOxL,KAAKssD,MAAM96C,UAAU,QAAQlI,KAAKtJ,KAAKsJ,OAAQrF,GAAKA,EAAE,IACnEuH,EAAKsG,QAAQC,OAAO,QACfC,KAAK,QAAS,OACd7C,KAAKnP,KAAK8f,WAAWhO,MAAMqY,KAAKnqB,KAAK8f,aACrC3B,GAAG,mBAAoBne,KAAKgqB,QAAQC,MACpC9L,GAAG,oBAAqBne,KAAKgqB,QAAQE,MACrC/L,GAAG,QAAS,SAAUla,EAAQ6lB,GAC3BjjB,EAAQgf,MAAMhf,EAAQ8e,SAAS1hB,GAAIkpD,EAAatmD,EAAQiZ,WAAWQ,SAAStgB,MAChF,GACCme,GAAG,WAAY,SAAUla,EAAQ6lB,GAC9BjjB,EAAQujB,SAASvjB,EAAQ8e,SAAS1hB,GAAIkpD,EAAatmD,EAAQiZ,WAAWQ,SAAStgB,MACnF,GACCmS,MAAM3G,GACNqN,MAAM,OAAQ,CAAC5U,EAAGsF,IAAMvJ,KAAKqnB,UAAUpjB,EAAGA,EAAE,GAAIA,EAAE,KAClDoO,aACA6mB,MAAM,CAACj1B,EAAGsF,IAAMA,EAAIvJ,KAAKotD,mBACzBloC,SAASllB,KAAKqtD,sBACdzR,UAAU,IAAK,CAAC33C,EAAGqpD,KAChB,MAAM3mC,EAAcuyB,EAAAA,YAAcj1C,EAAEspD,UAAY,EAAGtpD,EAAE,IAErD,OADAA,EAAEspD,SAAWtpD,EAAE,GACRiB,GAAKlF,KAAKu5C,OAAO,CAACt1C,EAAE,GAAI0iB,EAAYzhB,IAAKooD,KAGxD9hD,EAAKoG,OAAOa,QAChB,CAEA,OAAAy6C,CAAQ/M,GACJ,OAAiB,IAAVA,EAAgBzgD,KAAKC,EAChC,CAEA,OAAAwgD,CAAQ+M,GACJ,OAAOA,EAAUxtD,KAAKC,GAAK,GAC/B,GAhKqCc,EAAA0rD,GAAA,aACrC7hC,EADS6hC,GACF,WAAyB,CAAC,CAC7BtsC,GAAI,QACJ/K,KAAM,OACP,CACC+K,GAAI,SACJ/K,KAAM,YANP,IAAM04C,GAANrB,GAmKPqB,GAAU9sD,UAAU8U,QAAU,mBAC9Bg4C,GAAU9sD,UAAU+pB,WAAWpE,EAAAA,SAAS3lB,WACxC8sD,GAAU9sD,UAAU+pB,WAAWnE,EAAAA,SAAS5lB,WACxC8sD,GAAU9sD,UAAUslB,MAAMpI,EAAAA,QAAQC,sBAoClC2vC,GAAU9sD,UAAUmc,QAAQ,YAAa,UAAW,MAAO,gCAAiC2wC,GAAU9sD,UAAUwhB,SAASkG,UACzHolC,GAAU9sD,UAAUmc,QAAQ,YAAa,GAAI,SAAU,8BACvD2wC,GAAU9sD,UAAUmc,QAAQ,gBAAiB,IAAM,SAAU,wDAC7D2wC,GAAU9sD,UAAUmc,QAAQ,gBAAiB,IAAK,SAAU,6CAC5D2wC,GAAU9sD,UAAUmc,QAAQ,kBAAmB,KAAM,SAAU,yBAAqB,EAAW,CAAEE,UAAU,IAC3GywC,GAAU9sD,UAAUmc,QAAQ,kBAAmB,IAAK,SAAU,sDAC9D2wC,GAAU9sD,UAAUmc,QAAQ,qBAAsB,IAAK,SAAU,sCCpNjE,MAAMkmC,GAAUD,EAAAA,QAAQC,QAAQ,SAC1B0K,GAAU3K,EAAAA,QAAQ4K,QAAQ,WAAY,CAAC3K,GAAQ,IAAK,EAAG,KAAMA,GAAQ,GAAI,EAAG,KAAMA,GAAQ,GAAI,EAAG,KAAMA,GAAQ,GAAI,EAAG,OAY5H,SAAS4K,GAAY38C,GACjB,MAAMuC,EAAYmD,EAAAA,OAAS1F,GAC3B,OAAO,SAAU48C,GACb,MAAMC,GAAUnuD,KAAKuQ,MAAY,IAAN29C,GAAa,KAAKlqD,WAC7C,OAAImqD,EAAOplD,QAAU,EAAUolD,EACxBt6C,EAAUq6C,EACrB,CACJ,CAlBAH,GAAQ,aACRA,GAAQ,UACRA,GAAQ,OACRA,GAAQ,OAQChtD,EAAAktD,GAAA,eAaF,MAAMG,GAAN,MAAMA,mBAAkBtyB,EAAAA,WAEjBuyB,eACAC,eAEAC,YAAsB,IAAIzjC,IAC/BrL,QAAQ,CAAC,GAAI,cACbkJ,UAAU,YACVuC,oBAAoB,SACpBzB,UAAU,GACV1G,UAAU,UACVyrC,iBAAiB,QACjBC,gBAAgB,KAChBC,aAAY,GACZlrC,eAAe,GACfE,gBAAgB,KAChBK,iBAAgB,GAGX4qC,SAAU,IAAI1E,IACnBxqC,QAAQ,CAAC,MAAO,MAAO,MAAO,MAAO,QACrCipC,YAAY,GACZG,eAAe,GACfL,UAAU,GACVY,uBACAC,uBACAE,cAAc,GACdn6B,cAAc,GACdxH,UAAUy7B,GAAQ,GAAI,EAAG,MACzB0G,eAAe1G,GAAQ,GAAI,EAAG,MAGnC,WAAApiD,GACIqT,QACAhU,KACKmf,QAAQ,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,OAAQ,aAE7D,CAEU,MAAAmvC,CAAOpB,GACb,OAAOltD,KAAKuuD,OAASrB,EAAUltD,KAAKwuD,mBACxC,CAEU,YAAAC,CAAavB,GACnB,OAAOltD,KAAKguD,eAAehuD,KAAKsuD,OAAOpB,GAC3C,CAEU,QAAAwB,CAASnxB,GACf,OAAOv9B,KAAK2uD,YAAYpxB,EAC5B,CAEU,OAAAqxB,CAAQrxB,GACd,OAAOv9B,KAAKguD,eAAehuD,KAAK0uD,SAASnxB,GAC7C,CAEU,MAAAxsB,CAAO89C,GACb,OAAQA,GACJ,IAAK,QACD,MAAO,CAAC7uD,KAAK0uD,SAAS,GAAI1uD,KAAK0uD,SAAS,IAC5C,IAAK,SACD,MAAO,CAAC1uD,KAAKsuD,QAAO,GAAKtuD,KAAKsuD,OAAO,IAEzC,QACI,MAAO,CAACtuD,KAAK0uD,SAAS,GAAI1uD,KAAK0uD,SAAS,IAEpD,CAEU,GAAA7qD,GACN,OAAO7D,KAAK0uD,SAAS,EACzB,CAEU,GAAA9qD,GACN,OAAO5D,KAAK0uD,SAAS,EACzB,CAIA,IAAAplD,CAAKjJ,GACD,IAAK4G,UAAUwB,OAAQ,MAAO,CAAC,IAAIzI,KAAK2uD,YAAa3uD,KAAKuuD,OAAQvuD,KAAKwuD,sBACvE,MAAMzvC,EAAM1e,EAAE,GAId,OAHAL,KAAK2uD,UAAU,CAAC5vC,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,KACpD/e,KAAKuuD,KAAKxvC,EAAI,IACd/e,KAAKwuD,kBAAkBzvC,EAAI,IACpB/e,IACX,CAEA,KAAA8R,CAAM2D,EAASC,GACX1B,MAAMlC,MAAM2D,EAASC,GAErB1V,KAAKiuD,WAAWjuC,OAAOtK,EAAQ3D,OAAO,OAAOyH,QAE7CxZ,KAAKquD,QAAQruC,OAAOtK,EAAQ3D,OAAO,OAAOyH,QAE1CxZ,KAAK+tD,eAAiBr4C,EAAQ3D,OAAO,OAChC8G,MAAM,WAAY,YAClBA,MAAM,MAAO,OACbA,MAAM,QAAS,OAAO9G,OAAO,UAC7BoM,GAAG,SAAU,KACVne,KAAK8uD,KAAK9uD,KAAK+tD,eAAev0C,OAAOxO,OACrChL,KAAK+uD,eAGb/uD,KAAK+tD,eAAeh8C,OAAO,UAAUC,KAAK,QAAS,WAAWE,KAAK,aACnElS,KAAK+tD,eAAeh8C,OAAO,UAAUC,KAAK,QAAS,SAASE,KAAK,aACjElS,KAAK+tD,eAAeh8C,OAAO,UAAUC,KAAK,QAAS,UAAUE,KAAK,SACtE,CAEU,SAAA88C,CAAUH,GAChB,IAAI/9C,EACJ,OAAQ+9C,GACJ,IAAK,QACD/9C,EAAQ,CACJ,CAAEwH,MAAOtY,KAAK4uD,QAAQ,GAAI5jD,MAAOhL,KAAK0uD,SAAS,IAC/C,CAAEp2C,MAAOtY,KAAK4uD,QAAQ,GAAI5jD,MAAOhL,KAAK0uD,SAAS,IAC/C,CAAEp2C,MAAOtY,KAAK4uD,QAAQ,GAAI5jD,MAAOhL,KAAK0uD,SAAS,KAEnD,MACJ,IAAK,SACD59C,EAAQ,CACJ,CAAEwH,MAAOtY,KAAKyuD,cAAa,GAAKzjD,MAAOhL,KAAKsuD,QAAO,IACnD,CAAEh2C,MAAO,MAAOtN,MAAOhL,KAAKsuD,YAC5B,CAAEh2C,MAAO,MAAOtN,MAAOhL,KAAKsuD,YAC5B,CAAEh2C,MAAO,MAAOtN,MAAOhL,KAAKsuD,YAC5B,CAAEh2C,MAAOtY,KAAKyuD,aAAa,GAAIzjD,MAAOhL,KAAKsuD,OAAO,IAClD,CAAEh2C,MAAO,MAAOtN,MAAOhL,KAAKsuD,OAAO,IACnC,CAAEh2C,MAAO,MAAOtN,MAAOhL,KAAKsuD,OAAO,IACnC,CAAEh2C,MAAO,MAAOtN,MAAOhL,KAAKsuD,OAAO,IACnC,CAAEh2C,MAAOtY,KAAKyuD,aAAa,GAAIzjD,MAAOhL,KAAKsuD,OAAO,KAEtD,MAEJ,QACIx9C,EAAQ,CACJ,CAAEwH,MAAOtY,KAAK4uD,QAAQ,GAAI5jD,MAAOhL,KAAK0uD,SAAS,IAC/C,CAAEp2C,MAAOtY,KAAK4uD,QAAQ,GAAI5jD,MAAOhL,KAAK0uD,SAAS,IAC/C,CAAEp2C,MAAOtY,KAAK4uD,QAAQ,GAAI5jD,MAAOhL,KAAK0uD,SAAS,IAC/C,CAAEp2C,MAAOtY,KAAK4uD,QAAQ,GAAI5jD,MAAOhL,KAAK0uD,SAAS,IAC/C,CAAEp2C,MAAOtY,KAAK4uD,QAAQ,GAAI5jD,MAAOhL,KAAK0uD,SAAS,KAI3D,MAAOO,EAAWC,GAAclvD,KAAK+Q,OAAO/Q,KAAK+tD,eAAev0C,OAAOxO,OACvE,OAAO8F,EACF4B,OAAOy8C,GAAMA,EAAGnkD,OAASikD,GAAaE,EAAGnkD,OAASkkD,GAClDz6C,IAAI06C,IAAA,CAAS72C,MAAO62C,EAAG72C,MAAOtN,MAAOmkD,EAAGnkD,MAAMtH,aAEvD,CAEA,aAAA0rD,GACI,MAAMP,EAAO7uD,KAAK+tD,eAAev0C,OAAOxO,OACjCikD,EAAWC,GAAclvD,KAAK+Q,OAAO89C,GACtC5yC,GAAWizC,EAAaD,IAAcjvD,KAAK8sD,gBAAkB,KAEnE9sD,KAAKiuD,WACAprC,eAAeosC,EAAYhzC,GAC3B+G,gBAAgBksC,EAAajzC,GAC7BozC,WAAWrvD,KAAKgvD,UAAUH,IAC1BvlD,KAAK,CACF,CAACtJ,KAAKsuD,QAAO,GAAK,GAClB,CAACtuD,KAAKsuD,QAAO,GAAK,IAClB,CAACtuD,KAAKsuD,QAAO,GAAK,GAClB,CAACtuD,KAAKsuD,QAAO,GAAK,IAClB,CAACtuD,KAAKsuD,OAAO,GAAI,KACjB,CAACtuD,KAAKsuD,OAAO,GAAI,IACjB,CAACtuD,KAAKsuD,OAAO,GAAI,GACjB,CAACtuD,KAAKsuD,OAAO,GAAI,IACjB,CAACtuD,KAAKsuD,OAAO,GAAI,KAEpBhpC,OAAO,CAAEvN,MAAO/X,KAAK+X,QAASC,OAAQhY,KAAKgY,SAAWhY,KAAKsvD,iBAC3D9rC,QAET,CAEA,YAAA+rC,GACI,MAAMC,EAAUxvD,KAAKiuD,WAAWxtC,QAAQzgB,KAAK0uD,SAAS,IAChDe,EAAUzvD,KAAKiuD,WAAWxtC,QAAQzgB,KAAK0uD,SAAS,IAAMc,EAC5DxvD,KAAKquD,QACA/oC,OAAO,CAAEvN,MAAO/X,KAAK+X,QAASC,OAAQhY,KAAKsvD,iBAC3Cj6C,IAAI,CAAE7U,EAAIgvD,EAAUC,EAAU,EAAK,EAAG5uD,EAAGb,KAAKsvD,eAAiB,IAC/Dv3C,MAAM03C,GACNpH,YAAYroD,KAAKsvD,gBACjBhmD,KAAKtJ,KAAK2uD,aACVnrC,QAET,CAEA,MAAA3H,CAAOpG,EAASC,GACZ1B,MAAM6H,OAAOpG,EAASC,GACtB1V,KAAKguD,eAAiBL,GAAY3tD,KAAKwQ,cACvCxQ,KAAK+tD,eAAev0C,OAAOxO,MAAQhL,KAAK8uD,OACxC9uD,KAAKovD,gBACLpvD,KAAKuvD,cACT,CAEA,IAAA39C,CAAK6D,EAASC,GACV1V,KAAKiuD,WAAWjuC,OAAO,MACvBhgB,KAAKquD,QAAQruC,OAAO,MACpBhgB,KAAK+tD,eAAet7C,SAEpBuB,MAAMpC,KAAK6D,EAASC,EACxB,GAxMsCjV,EAAAqtD,GAAA,aAAnC,IAAM4B,GAAN5B,GA0MP4B,GAAUhvD,UAAU8U,QAAU,mBAoB9Bk6C,GAAUhvD,UAAUmc,QAAQ,OAAQ,UAAW,MAAO,OAAQ,CAAC,UAAW,QAAS,WAEnF6yC,GAAUhvD,UAAUmc,QAAQ,aAAc,MAAO,SAAU,sBAC3D6yC,GAAUhvD,UAAUmc,QAAQ,eAAgB,GAAI,SAAU,oCAC1D6yC,GAAUhvD,UAAUmc,QAAQ,gBAAiB,GAAI,SAAU,wBAE3D6yC,GAAUhvD,UAAUmc,QAAQ,OAAQ,GAAI,SAAU,QAClD6yC,GAAUhvD,UAAUmc,QAAQ,oBAAqB,KAAM,SAAU,0BACjE6yC,GAAUhvD,UAAUmc,QAAQ,YAAa,CAAC,EAAG,IAAK,GAAI,IAAK,GAAI,SAAU,uCClQlE,MAAM8yC,GAAN,MAAMA,cAAanlC,GACtB,WAAA7pB,GACIqT,QAEAhU,KACK4qB,oBAAoB,OAE7B,GAP8BnqB,EAAAkvD,GAAA,QAA3B,IAAMhhD,GAANghD,GASPhhD,GAAKjO,UAAU8U,QAAU,cCJzB,MAAMo6C,GAAO,OACPC,GAAO,OAEAC,GAAN,MAAMA,iBAAgBt0B,EAAAA,WACfu0B,iBAAmB,EACnBC,SACAC,WACAC,SAEV,WAAAvvD,GACIqT,QACAhU,KAAKmwD,KAAO,MAEZnwD,KAAKiU,cAAgB,SACrBjU,KAAKowD,aAAapwD,KAAKowD,eAC3B,CAEA,cAAAC,CAAeC,EAAQC,GACnB,IAAI17C,EAAS07C,EACb,KAAIvwD,KAAKswD,EAAS,eACdz7C,EAAS7U,KAAKmf,UAAUgE,QAAQnjB,KAAKswD,MACjCz7C,EAAS,IAIjB,OAAOA,CACX,CAEA,eAAA27C,CAAgBF,EAAQC,GACpB,OAAIvwD,KAAKswD,EAAS,aACPtwD,KAAKswD,UAEG,IAAfC,GACOvwD,KAAKmf,UAAUoxC,IAEnB,EACX,CAEA,UAAAE,GACI,OAAOzwD,KAAKsJ,OAAOtJ,KAAK+vD,iBAC5B,CAEA,WAAAW,GACI,IAAIC,EACC3wD,KAAK4wD,cACND,EAAgB3wD,KAAKqwD,eAAe,cAAe,IAEvD,MAAMQ,EAAe7wD,KAAKqwD,eAAe,cACnCS,EAAgB9wD,KAAKqwD,eAAe,cAAe,GACzD,IAAIU,EACAC,EACChxD,KAAKixD,aACNF,EAAc/wD,KAAKqwD,eAAe,kBAClCW,EAAchxD,KAAKqwD,eAAe,mBAEtC,MAAMa,EAAelxD,KAAKqwD,eAAe,mBACnCc,EAAiBnxD,KAAKqwD,eAAe,qBAC3C,OAAOrwD,KAAKoxD,gBAAgB38C,IAAI,SAAUsK,GACtC,MAAO,CACHsyC,UAAuB,IAAjBR,EAA6B7wD,KAAKqxD,OAAStyC,EAAI8xC,GACrDv4C,WAAyB,IAAlBq4C,EAA8B,GAAK5xC,EAAI4xC,GAC9C3lD,MAAO+T,EAAI+xC,GACXQ,cAA0B,IAAhBP,EAA6B/wD,KAAKixD,WAAa,GAAKjxD,KAAKsxD,WAAcvyC,EAAIgyC,GACrFQ,cAA0B,IAAhBP,EAA6BhxD,KAAKixD,WAAa,GAAKjxD,KAAKuxD,WAAcxyC,EAAIiyC,GACrFxe,UAAuB,IAAjB0e,EAA6BlxD,KAAK8vB,YAAc/Q,EAAImyC,GAC1Dte,YAA2B,IAAnBue,EAA+BnxD,KAAKwxD,cAAgBzyC,EAAIoyC,GAExE,EAAGnxD,KACP,CAEA,KAAA8R,CAAM2D,EAASC,GACX1B,MAAMlC,MAAM2D,EAASC,GACrB1V,KAAKgwD,SAAWt6C,EAAQ3D,OAAO,OAE/B,MAAMlL,EAAU7G,KAChBA,KAAKiwD,WAAajwD,KAAKgwD,SAASj+C,OAAO,MAClCoM,GAAG,QAAS,WACTtX,EAAQgf,MAAMhf,EAAQ8e,SAAS9e,EAAQ4pD,cAAe5pD,EAAQ2pD,gBAAgB,cAAe,IAAI,EACrG,GACCryC,GAAG,WAAY,WACZtX,EAAQujB,SAASvjB,EAAQ8e,SAAS9e,EAAQ4pD,cAAe5pD,EAAQ2pD,gBAAgB,cAAe,IAAI,EACxG,GAEJxwD,KAAKkwD,SAAWlwD,KAAKgwD,SAASj+C,OAAO,OAChCC,KAAK,QAAS,QACdmM,GAAG,QAAS,WACTtX,EAAQgf,MAAMhf,EAAQ8e,SAAS9e,EAAQ4pD,cAAe5pD,EAAQ2pD,gBAAgB,cAAe,IAAI,EACrG,GACCryC,GAAG,WAAY,WACZtX,EAAQujB,SAASvjB,EAAQ8e,SAAS9e,EAAQ4pD,cAAe5pD,EAAQ2pD,gBAAgB,cAAe,IAAI,EACxG,EAER,CAEA,MAAA30C,CAAOpG,EAASC,GACZ1B,MAAM6H,OAAOpG,EAASC,GAClB1V,KAAKsJ,OAAOb,OAGhB,MAAMa,EAAOtJ,KAAK0wD,cACd1wD,KAAK+vD,kBAAoBzmD,EAAKb,SAC9BzI,KAAK+vD,iBAAmB,GAE5B,MAAMhxC,EAAW/e,KAAK+vD,iBAAmBzmD,EAAKb,OAASa,EAAKtJ,KAAK+vD,kBAAoB,CAAC,GAAI,IAC1Fr6C,EACKmD,MAAM,QAAS7Y,KAAKyxD,YAAczxD,KAAK0xD,kBAAoB1xD,KAAK2xD,WAAa,KAAO,KAAO,QAC3F94C,MAAM,SAAU7Y,KAAKyxD,YAAczxD,KAAK4xD,mBAAqB5xD,KAAK6xD,YAAc,KAAO,KAAO,QAEnG7xD,KAAKgwD,SACAh+C,KAAK,QAAS,kBAAoB+M,EAAIsyC,MACtCh/C,aACAwG,MAAM,mBAAoBkG,EAAIyzB,MAC9B35B,MAAM,QAASkG,EAAI6zB,QACnB/5B,MAAM,YAAa7Y,KAAK0xD,kBAAoB1xD,KAAK2xD,WAAa,KAAO,MACrE94C,MAAM,aAAc7Y,KAAK4xD,mBAAqB5xD,KAAK6xD,YAAc,KAAO,MACxEh5C,MAAM,YAAa7Y,KAAK8xD,eAAiB,MAE9C9xD,KAAKiwD,WACA59C,aACAwG,MAAM,QAASkG,EAAI6zB,QACnB/5B,MAAM,YAAa7Y,KAAK+xD,iBAAmB,MAC/C/xD,KAAKgyD,YAAcnC,GAAOD,IAAM7wC,EAAI/T,OAErChL,KAAKkwD,SACAr3C,MAAM,YAAa7Y,KAAKiyD,eAAiB,MAC7CjyD,KAAKkyD,YAAcrC,GAAOD,IAAM7wC,EAAIzG,OAErC,MAAMzR,EAAU7G,KACVmyD,EAAWnyD,KAAKgwD,SAASx+C,UAAU,SAASlI,KAAK,CAACyV,IAalDqzC,EAZgBD,EAASrgD,QAC1BC,OAAO,OACPC,KAAK,QAAS,QACdmM,GAAG,QAAS,SAAUla,GACnB4C,EAAQgf,MAAMhf,EAAQ8e,SAAS9e,EAAQ4pD,cAAe5pD,EAAQ2pD,gBAAgB,mBAAqB,QAAQ,EAC/G,GACC79C,KAAK,WACF,MAAMukB,EAAW3hB,EAAAA,OAASvV,MAC1Bk3B,EAASnlB,OAAO,KAChBmlB,EAASnlB,OAAO,OACpB,GAGCI,MAAMggD,GACNt5C,MAAM,UAAW7Y,KAAKqyD,kBAAoB,OAAS,MACnDx5C,MAAM,YAAa7Y,KAAKsyD,eAAiB,MACzCz5C,MAAM,SAAU7Y,KAAKuyD,2BAA6BvyD,KAAKwyD,oBAAsB,KAAO,MACpFngD,aACAwG,MAAM,mBAAoB45C,EAAAA,IAAM1zC,EAAIyzB,MAAMkgB,OAAO,KAAMhvD,YAE5D0uD,EACKngD,OAAO,KACPD,KAAK,QAAS,SAAU/N,GACrB,MAAO,MAAQA,EAAEqtD,QACrB,GAEAtxD,KAAK2yD,eACLP,EAAengD,OAAO,QACjBU,KAAK,SAAU1O,GACZjE,KAAK4yD,UAAY3uD,EAAEstD,QACvB,GAEJa,EAAengD,OAAO,QAAQC,KAAKjO,GAAKA,EAAEstD,UAE9CY,EAASvgD,OAAOa,QACpB,CAEA,IAAAb,CAAK6D,EAASC,GACV1B,MAAMpC,KAAK6D,EAASC,EACxB,GArKoCjV,EAAAqvD,GAAA,WAAjC,IAAM+C,GAAN/C,GAuKP+C,GAAQnyD,UAAU8U,QAAU,iBAC5Bq9C,GAAQnyD,UAAU+pB,WAAWsM,EAAAA,SAASr2B,WA2FtCmyD,GAAQnyD,UAAUmc,QAAQ,aAAc,KAAM,MAAO,qBAAsB,WAAc,OAAO7c,KAAKmf,SAAW,EAAG,CAAEpC,UAAU,IAC/H81C,GAAQnyD,UAAUmc,QAAQ,OAAQ,eAAgB,SAAU,qBAAsB,KAAM,CAAEC,UAAUtZ,GAAMA,EAAEsvD,aAAT,aAEnGD,GAAQnyD,UAAUmc,QAAQ,iBAAkB,KAAM,SAAU,kBAC5Dg2C,GAAQnyD,UAAUmc,QAAQ,eAAgB,KAAM,SAAU,gBAC1Dg2C,GAAQnyD,UAAUmc,QAAQ,eAAgB,KAAM,SAAU,gBAC1Dg2C,GAAQnyD,UAAUmc,QAAQ,eAAgB,KAAM,SAAU,gBAE1Dg2C,GAAQnyD,UAAUmc,QAAQ,aAAa,EAAO,UAAW,qBACzDg2C,GAAQnyD,UAAUmc,QAAQ,cAAe,KAAM,MAAO,uBAAwB,WAAc,OAAO7c,KAAKmf,SAAW,EAAG,CAAEpC,UAAU,EAAMD,QAASrc,EAAC+C,GAAMA,EAAEotD,YAAT,aACjJiC,GAAQnyD,UAAUmc,QAAQ,aAAa,EAAO,UAAW,aAAc,KAAM,CAAEC,UAAUtZ,GAAMA,EAAEotD,YAAT,aAExFiC,GAAQnyD,UAAUmc,QAAQ,cAAe,KAAM,MAAO,uBAAwB,WAAc,OAAO7c,KAAKmf,SAAW,EAAG,CAAEpC,UAAU,IAClI81C,GAAQnyD,UAAUmc,QAAQ,aAAa,EAAO,UAAW,cAEzDg2C,GAAQnyD,UAAUmc,QAAQ,YAAY,EAAO,UAAW,yBACxDg2C,GAAQnyD,UAAUmc,QAAQ,mBAAmB,EAAO,UAAW,iCAC/Dg2C,GAAQnyD,UAAUmc,QAAQ,oBAAqB,KAAM,SAAU,8CAC/Dg2C,GAAQnyD,UAAUmc,QAAQ,iBAAkB,KAAM,MAAO,0BAA2B,WAAc,OAAO7c,KAAKmf,SAAW,EAAG,CAAEpC,UAAU,EAAMD,QAASrc,EAAC+C,GAAMA,EAAEytD,WAAT,aACvJ4B,GAAQnyD,UAAUmc,QAAQ,WAAY,iBAAkB,SAAU,qBAAsB,KAAM,CAAEC,QAASrc,EAAC+C,GAAMA,EAAEytD,YAAcztD,EAAEuvD,iBAAzB,aACzGF,GAAQnyD,UAAUmc,QAAQ,iBAAkB,KAAM,MAAO,uBAAwB,WAAc,OAAO7c,KAAKmf,SAAW,EAAG,CAAEpC,UAAU,EAAMD,QAASrc,EAAC+C,GAAMA,EAAEytD,WAAT,aACpJ4B,GAAQnyD,UAAUmc,QAAQ,WAAY,YAAa,SAAU,YAAa,KAAM,CAAEC,QAASrc,EAAC+C,GAAMA,EAAEytD,YAAcztD,EAAEwvD,iBAAzB,aAC3FH,GAAQnyD,UAAUmc,QAAQ,gBAAgB,EAAO,UAAW,aAAc,KAAM,CAAEC,UAAUtZ,GAAMA,EAAEytD,WAAT,aAE3F4B,GAAQnyD,UAAUmc,QAAQ,kBAAmB,KAAM,MAAO,mBAAoB,WAAc,OAAO7c,KAAKmf,SAAW,EAAG,CAAEpC,UAAU,IAClI81C,GAAQnyD,UAAUmc,QAAQ,YAAa,UAAW,aAAc,aAAc,KAAM,CAAEC,UAAUtZ,GAAMA,EAAEyvD,kBAAT,aAC/FJ,GAAQnyD,UAAUmc,QAAQ,oBAAqB,KAAM,MAAO,mBAAoB,WAAc,OAAO7c,KAAKmf,SAAW,EAAG,CAAEpC,UAAU,IACpI81C,GAAQnyD,UAAUmc,QAAQ,cAAe,UAAW,aAAc,aAAc,KAAM,CAAEC,UAAUtZ,GAAMA,EAAE0vD,oBAAT,aAEjGL,GAAQnyD,UAAUmc,QAAQ,aAAa,EAAM,UAAW,gCACxDg2C,GAAQnyD,UAAUmc,QAAQ,WAAY,IAAK,SAAU,iBACrDg2C,GAAQnyD,UAAUmc,QAAQ,YAAa,IAAK,SAAU,kBACtDg2C,GAAQnyD,UAAUmc,QAAQ,eAAgB,KAAM,SAAU,gBAAiB,KAAM,CAAEE,UAAU,IAE7F,MAAMqzC,GAAeyC,GAAQnyD,UAAU0vD,aACvCyC,GAAQnyD,UAAU0vD,aAAe,SAAU/vD,GACvC,MAAMwU,EAASu7C,GAAappD,MAAMhH,KAAMiH,WACxC,GAAIA,UAAUwB,OAAQ,CACdzI,KAAKmzD,qBACL35B,cAAcx5B,KAAKmzD,qBAEvB,MAAMtsD,EAAU7G,KACZK,IACAL,KAAKmzD,oBAAsB15B,YAAY,WACnC5yB,EAAQkpD,mBACJlpD,EAAQusD,cAAgBvsD,EAAQyC,OAAOb,QACvC5B,EAAQ2c,QAEhB,EAAGnjB,GAEX,CACA,OAAOwU,CACX,EC9TO,MAAMw+C,GAAN,MAAMA,kBAAiBC,EAAAA,aAChBvD,iBAAmB,EAE7B,WAAApvD,GACIqT,QACA+iB,EAAAA,SAAS5nB,KAAKnP,MACdA,KAAKowD,aAAapwD,KAAKowD,eAC3B,CAEA,UAAAK,GACI,OAAOzwD,KAAKsJ,OAAOtJ,KAAK+vD,iBAC5B,CAEA,KAAAj+C,CAAM2D,EAASC,GACX1B,MAAMlC,MAAM9K,MAAMhH,KAAMiH,WACxB,MAAM8Q,MAAEA,EAAAC,OAAOA,GAAWhY,KAAKgpB,OAC/BvT,EAAQuC,OAASA,EACjBvC,EAAQsC,MAAQA,CACpB,CAEA,MAAA8D,CAAOpG,EAASC,GACZ1B,MAAM6H,OAAO7U,MAAMhH,KAAMiH,WACzB,MAAMJ,EAAU7G,KACZA,KAAK+vD,kBAAoB/vD,KAAKsJ,OAAOb,SACrCzI,KAAK+vD,iBAAmB,GAE5B,MAAM/mC,EAAOhpB,KAAKgpB,OACZuqC,EAAe7zD,KAAKmE,IAAImlB,EAAKjR,MAAOiR,EAAKhR,QACzCw7C,EAAYxzD,KAAKyzD,gBACjBC,EAAW1zD,KAAKmf,UAAUgE,QAAQnjB,KAAK2zD,eACvCC,EAAW5zD,KAAKmf,UAAUgE,QAAQnjB,KAAKmtD,eACvC0G,EAAa7zD,KAAKmf,UAAUgE,QAAQnjB,KAAKizD,mBACzCa,EAAe9zD,KAAKmf,UAAUgE,QAAQnjB,KAAKkzD,qBAC3Ca,EAAU/zD,KAAKmf,UAAUgE,QAAQnjB,KAAK8yD,cACtCzB,GAAmB,IAAZ0C,EAAiB/zD,KAAKywD,aAAasD,GAAW/zD,KAAKqxD,OAC1D/4C,GAAqB,IAAbo7C,EAAkB1zD,KAAKywD,aAAaiD,GAAY,GACxD1oD,GAAqB,IAAb4oD,EAAkB5zD,KAAKywD,aAAamD,GAAY,GACxDI,GAAyB,IAAfH,EAAoB7zD,KAAKywD,aAAaoD,GAAc7zD,KAAK8vB,YACnEmkC,GAA6B,IAAjBH,EAAsB9zD,KAAKywD,aAAaqD,GAAgB9zD,KAAKwxD,cAE/E,IAAI0C,EAAelrC,EAAKhR,QAAUw7C,EAAYxzD,KAAKm0D,oBACnD,MAAMC,EAAcprC,EAAKhR,QAAU,EAAIw7C,EAAYxzD,KAAKm0D,oBAClDE,EAAWrrC,EAAKhR,QAAUhY,KAAKs0D,gBAAkBt0D,KAAKm0D,oBACtDtrD,EAAI0qD,EAAevzD,KAAKm0D,mBACxB9Q,EAAM5tC,EAAQgtC,WAAW,MAE/BY,EAAIgB,UAAU,EAAG,EAAGr7B,EAAKjR,MAAOiR,EAAKhR,QAErC,MAAMc,EAAajS,EAAQiS,aAc3B,SAAS8zB,EAAS16B,EAAMrR,EAAGmY,EAAUu7C,GACjClR,EAAImR,aAAe,MACnBnR,EAAIoR,KAAO,GAAGz7C,OAAcF,IAC5BuqC,EAAIY,UAAYgQ,EAChB,IAAIS,EAAcrR,EAAIsR,YAAYziD,GAClC,GAAIwiD,EAAY38C,MAASiR,EAAKjR,MAAa,EAAJlP,EAAS,CAE5CmQ,IADsBgQ,EAAKjR,MAAa,EAAJlP,GAAU6rD,EAAY38C,MAE1DsrC,EAAIoR,KAAO,GAAGz7C,OAAcF,IAC5B47C,EAAcrR,EAAIsR,YAAYziD,EAClC,CACA,MAAM1R,EAAIo0D,EAAeF,EAAY38C,MAAOw8C,GAE5C,OADAlR,EAAIwR,SAAS3iD,EAAM1R,EAAGK,GACfmY,CACX,CAEA,SAAS87C,EAAS5iD,EAAM8G,EAAUu7C,GAC9B,QAAoB,IAATriD,EAAsB,OACjCmxC,EAAImR,aAAe3tD,EAAQkuD,eAC3B1R,EAAIoR,KAAO,GAAGz7C,kBACdqqC,EAAIY,UAAYgQ,EAChB,IAAIS,EAAcrR,EAAIsR,YAAYziD,GAClC,GAAIwiD,EAAY38C,MAASiR,EAAKjR,MAAa,EAAJlP,EAAS,CAC5C,MAAMmsD,GAAgBhsC,EAAKjR,MAAa,EAAJlP,GAAU6rD,EAAY38C,MAC1DsrC,EAAIoR,KAAUz7C,EAAWg8C,EAAd,iBACXN,EAAcrR,EAAIsR,YAAYziD,EAClC,CACA,MAAM1R,EAAIo0D,EAAeF,EAAY38C,MAAOw8C,GACtC1zD,EAAIo0D,EAAepuD,EAAQkuD,gBACjC1R,EAAIwR,SAAS3iD,EAAM1R,EAAGK,EAC1B,CAEA,SAAS+zD,EAAe78C,EAAOw8C,GAC3B,OAAQA,GACJ,IAAK,QACD,OAAO1rD,EACX,IAAK,SACD,OAAQmgB,EAAKjR,MAAQ,EAAMA,EAAQ,EACvC,IAAK,MACD,OAAOiR,EAAKjR,MAAQA,EAAQlP,EAExC,CACA,SAASosD,EAAeV,GACpB,OAAQA,GACJ,IAAK,MACD,OAAO1rD,EACX,IAAK,SACD,OAAOmgB,EAAKhR,OAAS,EACzB,IAAK,SACD,OAAOgR,EAAKhR,OAASnP,EAEjC,CA/DAw6C,EAAIY,UAAY+P,EAChB3Q,EAAIa,SAAS,EAAG,EAAGl7B,EAAKjR,MAAOiR,EAAKhR,QAEpCqrC,EAAIiB,YAActkD,KAAKk1D,cACvBJ,EAASl3C,EAAAA,QAAQu3C,OAAO9D,GAAOgD,EAAUxtD,EAAQuuD,cAEjD/R,EAAIiB,YAActkD,KAAKq1D,eACvBnB,EAAetnB,EAAS5hC,EAAOnC,EAAGqrD,EAAcrtD,EAAQ+iB,eAExDy5B,EAAIiB,YAActkD,KAAKs1D,eACvB1oB,EAASt0B,EAAO47C,EAAerrD,EAAGurD,EAAavtD,EAAQ2iD,eAE9C/oD,EAAAmsC,EAAA,YAgBAnsC,EAAAq0D,EAAA,YAgBAr0D,EAAAm0D,EAAA,kBAUAn0D,EAAAw0D,EAAA,iBAUb,GAlHuCx0D,EAAA4yD,GAAA,YAApC,IAAMkC,GAANlC,GAoHPkC,GAAS70D,UAAU8U,QAAU,kBAC7B+/C,GAAS70D,UAAU+pB,WAAWsM,EAAAA,SAASr2B,WAuEvC60D,GAAS70D,UAAUmc,QAAQ,eAAgB,SAAU,SAAU,6BAA8B,CAAC,MAAO,SAAU,WAC/G04C,GAAS70D,UAAUmc,QAAQ,aAAc,MAAO,MAAO,sEAAuE,CAAC,QAAS,SAAU,QAClJ04C,GAAS70D,UAAUmc,QAAQ,cAAe,QAAS,MAAO,uEAAwE,CAAC,QAAS,SAAU,QACtJ04C,GAAS70D,UAAUmc,QAAQ,cAAe,QAAS,MAAO,uEAAwE,CAAC,QAAS,SAAU,QACtJ04C,GAAS70D,UAAUmc,QAAQ,aAAc,KAAM,MAAO,qBAAsB,WAAc,OAAO7c,KAAKmf,SAAW,EAAG,CAAEpC,UAAU,IAChIw4C,GAAS70D,UAAUmc,QAAQ,OAAQ,eAAgB,SAAU,qBAAsB,KAAM,CAAEC,UAAUtZ,GAAMA,EAAEsvD,aAAT,aAEpGyC,GAAS70D,UAAUmc,QAAQ,aAAc,QAAS,SAAU,eAE5D04C,GAAS70D,UAAUmc,QAAQ,cAAe,KAAM,MAAO,uBAAwB,WAAc,OAAO7c,KAAKmf,SAAW,EAAG,CAAEpC,UAAU,IACnIw4C,GAAS70D,UAAUmc,QAAQ,cAAe,KAAM,MAAO,uBAAwB,WAAc,OAAO7c,KAAKmf,SAAW,EAAG,CAAEpC,UAAU,IAEnIw4C,GAAS70D,UAAUmc,QAAQ,kBAAmB,KAAM,MAAO,8BAA+B,WAAc,OAAO7c,KAAKmf,SAAW,EAAG,CAAEpC,UAAU,IAC9Iw4C,GAAS70D,UAAUmc,QAAQ,YAAa,UAAW,aAAc,mBAAoB,KAAM,CAAEC,UAAUtZ,GAAMA,EAAEyvD,kBAAT,aACtGsC,GAAS70D,UAAUmc,QAAQ,oBAAqB,KAAM,MAAO,wBAAyB,WAAc,OAAO7c,KAAKmf,SAAW,EAAG,CAAEpC,UAAU,IAC1Iw4C,GAAS70D,UAAUmc,QAAQ,cAAe,UAAW,aAAc,aAAc,KAAM,CAAEC,UAAUtZ,GAAMA,EAAE0vD,oBAAT,aAElGqC,GAAS70D,UAAUmc,QAAQ,aAAa,EAAM,UAAW,gCACzD04C,GAAS70D,UAAUmc,QAAQ,WAAY,IAAK,SAAU,iBACtD04C,GAAS70D,UAAUmc,QAAQ,YAAa,IAAK,SAAU,kBACvD04C,GAAS70D,UAAUmc,QAAQ,eAAgB,KAAM,SAAU,gBAAiB,KAAM,CAAEE,UAAU,IAE9Fw4C,GAAS70D,UAAUmc,QAAQ,gBAAiB,KAAO,SAAU,mDAC7D04C,GAAS70D,UAAUmc,QAAQ,eAAgB,EAAG,SAAU,gCACxD04C,GAAS70D,UAAUmc,QAAQ,eAAgB,GAAK,SAAU,gCAC1D04C,GAAS70D,UAAUmc,QAAQ,cAAe,GAAK,SAAU,+BAEzD04C,GAAS70D,UAAUmc,QAAQ,mBAAoB,GAAK,SAAU,2DAC9D04C,GAAS70D,UAAUmc,QAAQ,gBAAiB,GAAK,SAAU,4CAE3D,MAAMuzC,GAAemF,GAAS70D,UAAU0vD,aACxCmF,GAAS70D,UAAU0vD,aAAe,SAAU/vD,GACxC,MAAMwU,EAASu7C,GAAappD,MAAMhH,KAAMiH,WACxC,GAAIA,UAAUwB,OAAQ,CACdzI,KAAKmzD,qBACL35B,cAAcx5B,KAAKmzD,qBAEvB,MAAMtsD,EAAU7G,KACZK,IACAL,KAAKmzD,oBAAsB15B,YAAY,WACnC5yB,EAAQkpD,mBACJlpD,EAAQusD,cAAgBvsD,EAAQyC,OAAOb,QACvC5B,EAAQ2c,QAEhB,EAAGnjB,GAEX,CACA,OAAOwU,CACX,EC1OA,MAAM2gD,GAAe91D,KAAKC,GAAK,IAEzB81D,GAAK,KAEJ,SAASC,KACZ,MAAMnlB,EAAQwH,EAAAA,SAAS,OAAQ,OACzB4d,EAAa,CAAA,EAEnB,IAAI3sC,EAAO,CAAC,IAAK,KACb9W,EAAO0jD,GACPnB,EAAOoB,GACP78C,EAAW88C,GACXC,EAAYC,GACZC,EAAaD,GACb1M,EAAS4M,GACTj6C,EAAUk6C,GACVt7C,EAAQ,GACRu7C,EAASC,GACTC,EAAej9B,IACfk9B,EAAQ,KACR9iC,EAAS/zB,KAAK+zB,OACd2uB,EAASoU,GA8Db,SAAS/T,EAAWL,GAChBA,EAAOrqC,MAAQqqC,EAAOpqC,OAAS,EAC/B,MAAMiM,EAAQvkB,KAAK4C,KAAK8/C,EAAOK,WAAW,MAAM2B,aAAa,EAAG,EAAG,EAAG,GAAG96C,KAAKb,QAAU,GACxF25C,EAAOrqC,MAAA,KAAoBkM,EAC3Bm+B,EAAOpqC,OAASy9C,GAAKxxC,EAErB,MAAMpd,EAAUu7C,EAAOK,WAAW,MAIlC,OAHA57C,EAAQo9C,UAAYp9C,EAAQ4vD,YAAc,MAC1C5vD,EAAQ6vD,UAAY,SAEb,CAAE7vD,UAASod,QACtB,CAEA,SAASuR,EAAMmhC,EAAOC,EAAKnzB,GACvB,MAAMozB,EAASD,EAAIp2D,EACbs2D,EAASF,EAAI/1D,EACbk2D,EAAWr3D,KAAK4C,KAAK0mB,EAAK,GAAKA,EAAK,GAAKA,EAAK,GAAKA,EAAK,IACxDjI,EAAIq1C,EAAOptC,GACXguC,EAAKvjC,IAAW,GAAK,GAAI,EAC/B,IACIwjC,EACAh0D,EACAE,EAHA+B,GAAK8xD,EAMT,MAAOC,EAAOl2C,EAAE7b,GAAK8xD,MACjB/zD,IAAOg0D,EAAK,GACZ9zD,IAAO8zD,EAAK,KAERv3D,KAAKmE,IAAInE,KAAKsC,IAAIiB,GAAKvD,KAAKsC,IAAImB,KAAQ4zD,KAK5C,GAHAH,EAAIp2D,EAAIq2D,EAAS5zD,EACjB2zD,EAAI/1D,EAAIi2D,EAAS3zD,IAEbyzD,EAAIp2D,EAAIo2D,EAAIp1D,GAAK,GAAKo1D,EAAI/1D,EAAI+1D,EAAIn1D,GAAK,GACvCm1D,EAAIp2D,EAAIo2D,EAAI31D,GAAK+nB,EAAK,IAAM4tC,EAAI/1D,EAAI+1D,EAAI11D,GAAK8nB,EAAK,OAEjDya,IAAWyzB,GAAaN,EAAKD,EAAO3tC,EAAK,QACrCya,GAAU0zB,GAAaP,EAAKnzB,IAAS,CACtC,MAAM2zB,EAASR,EAAIQ,OACb5zD,EAAIozD,EAAI7+C,OAAS,EACjBs/C,EAAKruC,EAAK,IAAM,EAChBsuC,EAAKV,EAAIp2D,GAAKgD,GAAK,GACnB+zD,EAAU,IAALD,EACLE,EAAM,GAAKD,EACX9zD,EAAImzD,EAAI11D,GAAK01D,EAAIn1D,GACvB,IACIg2D,EADAj3D,GAAKo2D,EAAI/1D,EAAI+1D,EAAIn1D,IAAM41D,GAAMC,GAAM,GAEvC,IAAA,IAASvtD,EAAI,EAAGA,EAAItG,EAAGsG,IAAK,CACxB0tD,EAAO,EACP,IAAA,IAASluD,EAAI,EAAGA,GAAK/F,EAAG+F,IACpBotD,EAAMn2D,EAAI+I,IAAOkuD,GAAQD,GAAQjuD,EAAI/F,GAAKi0D,EAAOL,EAAOrtD,EAAIvG,EAAI+F,MAAQguD,EAAK,GAEjF/2D,GAAK62D,CACT,CAEA,cADOT,EAAIQ,QACJ,CACX,CAGR,OAAO,CACX,CAuDA,OAhLAzB,EAAMvT,OAAS,SAAU/hD,GACrB,OAAO4G,UAAUwB,QAAU25C,EAASsV,GAAQr3D,GAAIs1D,GAASvT,CAC7D,EAEAuT,EAAM/jC,MAAQ,WACV,MAAM+lC,EAAkBlV,EAAWL,KAC7BuU,EAAQiB,IAAW5uC,EAAK,IAAM,GAAKA,EAAK,IAC9C,IAAIya,EAAS,KACb,MAAMj6B,EAAIqR,EAAMpS,OAChB,IAAIc,GAAI,EACR,MAAM2c,EAAO,GACP5c,EAAOuR,EAAMpG,IAAI,SAAUxQ,EAAGsF,GAQhC,OAPAtF,EAAEiO,KAAOA,EAAK/C,KAAKnP,KAAMiE,EAAGsF,GAC5BtF,EAAEwwD,KAAOA,EAAKtlD,KAAKnP,KAAMiE,EAAGsF,GAC5BtF,EAAE4U,MAAQk9C,EAAU5mD,KAAKnP,KAAMiE,EAAGsF,GAClCtF,EAAE87B,OAASk2B,EAAW9mD,KAAKnP,KAAMiE,EAAGsF,GACpCtF,EAAEqlD,OAASA,EAAOn6C,KAAKnP,KAAMiE,EAAGsF,GAChCtF,EAAE+kB,OAAShQ,EAAS7J,KAAKnP,KAAMiE,EAAGsF,GAClCtF,EAAEgY,QAAUA,EAAQ9M,KAAKnP,KAAMiE,EAAGsF,GAC3BtF,CACX,GAAGkH,KAAK,SAAU3C,EAAGoC,GAAK,OAAOA,EAAEoe,KAAOxgB,EAAEwgB,IAAM,GAMlD,OAJIutC,iBAAqBA,GACzBA,EAAQ98B,YAAY/O,EAAM,GAC1BA,IAEOirC,EAEP,SAASjrC,IACL,MAAMkH,EAAQyG,KAAKD,MACnB,KAAOC,KAAKD,MAAQxG,EAAQ0kC,KAAkB/sD,EAAIC,GAAK+sD,GAAO,CAC1D,MAAMtyD,EAAIqF,EAAKC,GACftF,EAAEzD,EAAKwoB,EAAK,IAAMyK,IAAW,KAAQ,EACrCxvB,EAAEpD,EAAKmoB,EAAK,IAAMyK,IAAW,KAAQ,EACrCokC,GAAYF,EAAiB1zD,EAAGqF,EAAMC,GAClCtF,EAAE6zD,SAAWtiC,EAAMmhC,EAAO1yD,EAAGw/B,KAC7Bvd,EAAK7Z,KAAKpI,GACVssC,EAAMphC,KAAK,OAAQwmD,EAAO1xD,GACtBw/B,EAAQs0B,GAAYt0B,EAAQx/B,GAC3Bw/B,EAAS,CAAC,CAAEjjC,EAAGyD,EAAEzD,EAAIyD,EAAEzC,GAAIX,EAAGoD,EAAEpD,EAAIoD,EAAExC,IAAM,CAAEjB,EAAGyD,EAAEzD,EAAIyD,EAAEhD,GAAIJ,EAAGoD,EAAEpD,EAAIoD,EAAE/C,KAE7E+C,EAAEzD,GAAKwoB,EAAK,IAAM,EAClB/kB,EAAEpD,GAAKmoB,EAAK,IAAM,EAE1B,CACIzf,GAAKC,IACLmsD,EAAMr6B,OACNiV,EAAMphC,KAAK,MAAOwmD,EAAOzvC,EAAMud,GAEvC,CACJ,EAEAkyB,EAAMr6B,KAAO,WAKT,OAJIi7B,IACA/8B,cAAc+8B,GACdA,EAAQ,MAELZ,CACX,EAESl1D,EAAAgiD,EAAA,cAaAhiD,EAAA+0B,EAAA,SAkDTmgC,EAAMW,aAAe,SAAUj2D,GAC3B,OAAO4G,UAAUwB,QAAU6tD,EAAoB,MAALj2D,EAAYg5B,IAAWh5B,EAAGs1D,GAASW,CACjF,EAEAX,EAAM96C,MAAQ,SAAUxa,GACpB,OAAO4G,UAAUwB,QAAUoS,EAAQxa,EAAGs1D,GAAS96C,CACnD,EAEA86C,EAAM3sC,KAAO,SAAU3oB,GACnB,OAAO4G,UAAUwB,QAAUugB,EAAO,EAAE3oB,EAAE,IAAKA,EAAE,IAAKs1D,GAAS3sC,CAC/D,EAEA2sC,EAAMlB,KAAO,SAAUp0D,GACnB,OAAO4G,UAAUwB,QAAUgsD,EAAOiD,GAAQr3D,GAAIs1D,GAASlB,CAC3D,EAEAkB,EAAMI,UAAY,SAAU11D,GACxB,OAAO4G,UAAUwB,QAAUstD,EAAY2B,GAAQr3D,GAAIs1D,GAASI,CAChE,EAEAJ,EAAMM,WAAa,SAAU51D,GACzB,OAAO4G,UAAUwB,QAAUwtD,EAAayB,GAAQr3D,GAAIs1D,GAASM,CACjE,EAEAN,EAAMrM,OAAS,SAAUjpD,GACrB,OAAO4G,UAAUwB,QAAU6gD,EAASoO,GAAQr3D,GAAIs1D,GAASrM,CAC7D,EAEAqM,EAAMzjD,KAAO,SAAU7R,GACnB,OAAO4G,UAAUwB,QAAUyJ,EAAOwlD,GAAQr3D,GAAIs1D,GAASzjD,CAC3D,EAEAyjD,EAAMS,OAAS,SAAU/1D,GACrB,OAAO4G,UAAUwB,QAAU2tD,EAAS4B,GAAQ33D,IAAMA,EAAGs1D,GAASS,CAClE,EAEAT,EAAM38C,SAAW,SAAU3Y,GACvB,OAAO4G,UAAUwB,QAAUuQ,EAAW0+C,GAAQr3D,GAAIs1D,GAAS38C,CAC/D,EAEA28C,EAAM15C,QAAU,SAAU5b,GACtB,OAAO4G,UAAUwB,QAAUwT,EAAUy7C,GAAQr3D,GAAIs1D,GAAS15C,CAC9D,EAEA05C,EAAMliC,OAAS,SAAUpzB,GACrB,OAAO4G,UAAUwB,QAAUgrB,EAASpzB,EAAGs1D,GAASliC,CACpD,EAEAkiC,EAAMx3C,GAAK,WACP,MAAMnT,EAAQulC,EAAMpyB,GAAGnX,MAAMupC,EAAOtpC,WACpC,OAAO+D,IAAUulC,EAAQolB,EAAQ3qD,CACrC,EAEO2qD,CACX,CAEA,SAASC,GAAU3xD,GACf,OAAOA,EAAEiO,IACb,CAEA,SAAS2jD,KACL,MAAO,OACX,CAEA,SAASG,KACL,MAAO,QACX,CAEA,SAASF,GAAc7xD,GACnB,OAAOvE,KAAK4C,KAAK2B,EAAE+G,MACvB,CAEA,SAASkrD,KACL,OAAqC,OAAV,EAAhBx2D,KAAK+zB,UAAgB,EACpC,CAEA,SAAS0iC,KACL,OAAO,CACX,CAIA,SAAS0B,GAAYF,EAAiB1zD,EAAGqF,EAAM2uD,GAC3C,GAAIh0D,EAAEmzD,OAAQ,OACd,MAAMhlC,EAAIulC,EAAgB9wD,QACpBod,EAAQ0zC,EAAgB1zC,MAE9BmO,EAAEiyB,UAAU,EAAG,EAAA,KAAepgC,EAAOwxC,GAAKxxC,GAC1C,IAAIzjB,EAAI,EACJK,EAAI,EACJq3D,EAAO,EACX,MAAM1uD,EAAIF,EAAKb,OAEf,MADEwvD,IACOA,EAAKzuD,GAAG,CACbvF,EAAIqF,EAAK2uD,GACT7lC,EAAE+lC,OACF/lC,EAAEqiC,KAAOxwD,EAAE4U,MAAQ,IAAM5U,EAAE87B,OAAS,QAAU97B,EAAE+kB,KAAO,GAAK/E,GAAS,MAAQhgB,EAAEwwD,KAC/E,IAAIjxD,EAAI4uB,EAAEuiC,YAAY1wD,EAAEiO,KAAO,KAAK6F,MAAQkM,EACxCxgB,EAAIQ,EAAE+kB,MAAQ,EAClB,GAAI/kB,EAAEqlD,OAAQ,CACV,MAAM7pB,EAAK//B,KAAK0D,IAAIa,EAAEqlD,OAASkM,IACzB4C,EAAK14D,KAAKwD,IAAIe,EAAEqlD,OAASkM,IACzB6C,EAAM70D,EAAI40D,EACVE,EAAM90D,EAAIi8B,EACV84B,EAAM90D,EAAI20D,EACVI,EAAM/0D,EAAIg8B,EAChBj8B,EAAK9D,KAAKkE,IAAIlE,KAAKsC,IAAIq2D,EAAMG,GAAM94D,KAAKsC,IAAIq2D,EAAMG,IAAQ,IAAS,GAAK,EACxE/0D,IAAM/D,KAAKkE,IAAIlE,KAAKsC,IAAIs2D,EAAMC,GAAM74D,KAAKsC,IAAIs2D,EAAMC,GACvD,MACI/0D,EAAKA,EAAI,IAAS,GAAK,EAQ3B,GANIC,EAAIy0D,IAAMA,EAAOz0D,GACjBjD,EAAIgD,GAAMH,OACV7C,EAAI,EACJK,GAAKq3D,EACLA,EAAO,GAEPr3D,EAAI4C,GAAKgyD,GAAI,MACjBrjC,EAAEqmC,WAAWj4D,GAAKgD,GAAK,IAAMygB,GAAQpjB,GAAK4C,GAAK,IAAMwgB,GACjDhgB,EAAEqlD,QAAQl3B,EAAEk3B,OAAOrlD,EAAEqlD,OAASkM,IAClCpjC,EAAEyiC,SAAS5wD,EAAEiO,KAAM,EAAG,GAClBjO,EAAEgY,UACFmW,EAAE81B,UAAY,EAAIjkD,EAAEgY,QACpBmW,EAAEsmC,WAAWz0D,EAAEiO,KAAM,EAAG,IAE5BkgB,EAAEumC,UACF10D,EAAE8T,MAAQvU,EACVS,EAAE+T,OAASvU,EACXQ,EAAE20D,KAAOp4D,EACTyD,EAAE40D,KAAOh4D,EACToD,EAAEhD,GAAKuC,GAAK,EACZS,EAAE/C,GAAKuC,GAAK,EACZQ,EAAEzC,IAAMyC,EAAEhD,GACVgD,EAAExC,IAAMwC,EAAE/C,GACV+C,EAAE6zD,SAAU,EACZt3D,GAAKgD,CACT,CACA,MAAMmhD,EAASvyB,EAAEgyB,aAAa,EAAG,EAAA,KAAengC,EAAOwxC,GAAKxxC,GAAO3a,KAC7D8tD,EAAS,GACf,OAASa,GAAM,GAAG,CAEd,KADAh0D,EAAIqF,EAAK2uD,IACFH,QAAS,SAChB,MAAMt0D,EAAIS,EAAE8T,MACN+gD,EAAMt1D,GAAK,EACjB,IAAIC,EAAIQ,EAAE/C,GAAK+C,EAAExC,GAEjB,IAAA,IAAS8H,EAAI,EAAGA,EAAI9F,EAAIq1D,EAAKvvD,IAAK6tD,EAAO7tD,GAAK,EAE9C,GADA/I,EAAIyD,EAAE20D,KACG,MAALp4D,EAAW,OACfK,EAAIoD,EAAE40D,KACN,IAAIE,EAAO,EACPC,GAAU,EACd,IAAA,IAASjvD,EAAI,EAAGA,EAAItG,EAAGsG,IAAK,CACxB,IAAA,IAASR,EAAI,EAAGA,EAAI/F,EAAG+F,IAAK,CACxB,MAAMS,EAAI8uD,EAAM/uD,GAAKR,GAAK,GACpB+D,EAAIq3C,EAAa,MAAJ9jD,EAAIkJ,IAAkBvJ,EAAI+I,IAAO,GAAK,GAAM,GAAMA,EAAI,GAAO,EAChF6tD,EAAOptD,IAAMsD,EACbyrD,GAAQzrD,CACZ,CACIyrD,EAAMC,EAAUjvD,GAEhB9F,EAAExC,KACFgC,IACAsG,IACAlJ,IAER,CACAoD,EAAE/C,GAAK+C,EAAExC,GAAKu3D,EACd/0D,EAAEmzD,OAASA,EAAO5nD,MAAM,GAAIvL,EAAE/C,GAAK+C,EAAExC,IAAMq3D,EAC/C,CACJ,CAGA,SAAS5B,GAAaN,EAAKD,EAAOU,GAC9BA,IAAO,EACP,MAAMD,EAASR,EAAIQ,OACb5zD,EAAIozD,EAAI7+C,OAAS,EACjBu/C,EAAKV,EAAIp2D,GAAKgD,GAAK,GACnB+zD,EAAU,IAALD,EACLE,EAAM,GAAKD,EACX9zD,EAAImzD,EAAI11D,GAAK01D,EAAIn1D,GACvB,IACIg2D,EADAj3D,GAAKo2D,EAAI/1D,EAAI+1D,EAAIn1D,IAAM41D,GAAMC,GAAM,GAEvC,IAAA,IAASvtD,EAAI,EAAGA,EAAItG,EAAGsG,IAAK,CACxB0tD,EAAO,EACP,IAAA,IAASluD,EAAI,EAAGA,GAAK/F,EAAG+F,IACpB,IAAMkuD,GAAQD,GAAQjuD,EAAI/F,GAAKi0D,EAAOL,EAAOrtD,EAAIvG,EAAI+F,MAAQguD,EAAK,IAC5DZ,EAAMn2D,EAAI+I,GAAI,OAAO,EAE/B/I,GAAK62D,CACT,CACA,OAAO,CACX,CAEA,SAASU,GAAYt0B,EAAQx/B,GACzB,MAAMg1D,EAAKx1B,EAAO,GACZy1B,EAAKz1B,EAAO,GACdx/B,EAAEzD,EAAIyD,EAAEzC,GAAKy3D,EAAGz4D,IAAGy4D,EAAGz4D,EAAIyD,EAAEzD,EAAIyD,EAAEzC,IAClCyC,EAAEpD,EAAIoD,EAAExC,GAAKw3D,EAAGp4D,IAAGo4D,EAAGp4D,EAAIoD,EAAEpD,EAAIoD,EAAExC,IAClCwC,EAAEzD,EAAIyD,EAAEhD,GAAKi4D,EAAG14D,IAAG04D,EAAG14D,EAAIyD,EAAEzD,EAAIyD,EAAEhD,IAClCgD,EAAEpD,EAAIoD,EAAE/C,GAAKg4D,EAAGr4D,IAAGq4D,EAAGr4D,EAAIoD,EAAEpD,EAAIoD,EAAE/C,GAC1C,CAEA,SAASi2D,GAAa3uD,EAAGoC,GACrB,OAAOpC,EAAEhI,EAAIgI,EAAEvH,GAAK2J,EAAE,GAAGpK,GAAKgI,EAAEhI,EAAIgI,EAAEhH,GAAKoJ,EAAE,GAAGpK,GAAKgI,EAAE3H,EAAI2H,EAAEtH,GAAK0J,EAAE,GAAG/J,GAAK2H,EAAE3H,EAAI2H,EAAE/G,GAAKmJ,EAAE,GAAG/J,CAClG,CAEA,SAASw1D,GAAkBrtC,GACvB,MAAM7I,EAAI6I,EAAK,GAAKA,EAAK,GACzB,OAAO,SAAU9jB,GACb,MAAO,CAACib,GAAKjb,GAAK,IAAMxF,KAAKwD,IAAIgC,GAAIA,EAAIxF,KAAK0D,IAAI8B,GACtD,CACJ,CAEA,SAASi0D,GAAkBnwC,GACvB,MACM/lB,EADK,EACK+lB,EAAK,GAAKA,EAAK,GAC/B,IAAIxoB,EAAI,EACJK,EAAI,EACR,OAAO,SAAUqE,GACb,MAAM6I,EAAO7I,EAAI,GAAI,EAAK,EAE1B,OAASxF,KAAK4C,KAAK,EAAI,EAAIyL,EAAO7I,GAAK6I,EAAQ,GAC3C,KAAK,EAAGvN,GAAKyC,EAAI,MACjB,KAAK,EAAGpC,GATL,EASc,MACjB,KAAK,EAAGL,GAAKyC,EAAI,MACjB,QAASpC,GAXN,EAaP,MAAO,CAACL,EAAGK,EACf,CACJ,CAGA,SAAS+2D,GAAUpuD,GACf,MAAMhB,EAAI,GACV,IAAIe,GAAI,EACR,OAASA,EAAIC,GAAGhB,EAAEe,GAAK,EACvB,OAAOf,CACX,CAEA,SAASguD,KACL,OAAOlU,SAASsC,cAAc,SAClC,CAEA,SAAS8S,GAAQzzD,GACb,MAAoB,mBAANA,EAAmBA,EAAI,WAAc,OAAOA,CAAG,CACjE,CApYgBxD,EAAAi1D,GAAA,WAsMPj1D,EAAAm1D,GAAA,aAIAn1D,EAAAo1D,GAAA,aAIAp1D,EAAAu1D,GAAA,mBAIAv1D,EAAAq1D,GAAA,iBAIAr1D,EAAAy1D,GAAA,eAIAz1D,EAAA01D,GAAA,gBAMA11D,EAAAo3D,GAAA,eA2FAp3D,EAAAy2D,GAAA,gBAqBAz2D,EAAAs3D,GAAA,eASAt3D,EAAA02D,GAAA,gBAIA12D,EAAA41D,GAAA,qBAOA51D,EAAA04D,GAAA,qBAmBA14D,EAAAm3D,GAAA,aAOAn3D,EAAA+1D,GAAA,eAIA/1D,EAAAi3D,GAAA,WAIT,MAAMM,GAAU,CACZoB,YAAa/C,GACbgD,YAAaF,ICzYJG,GAAN,MAAMA,mBAAkBpmD,EAAAA,UASnBqmD,aACAC,aACAC,UACAC,MACArX,QACAsX,SACAC,QAER,WAAAj5D,GACIqT,QACA+iB,EAAAA,SAAS5nB,KAAKnP,MACdsmB,EAAAA,SAASnX,KAAKnP,MACd4d,UAAQC,qBAAqB1O,KAAKnP,MAElCA,KAAKu5D,aAAev5D,KAAKi0C,UACzBj0C,KAAKw5D,aAAex5D,KAAKk0C,UACzBl0C,KAAKy5D,UAAYz5D,KAAK65D,MAC1B,CAEA,QAAAC,GACI,OAAO95D,KAAKsJ,OAAOmL,IAAIsK,IACZ,CACHg7C,YAAah7C,EAAI,GACjBi7C,aAAcj7C,EAAI,GAClBk7C,UAAWl7C,IAGvB,CAEA,KAAAjN,CAAM2D,EAASC,GACX1B,MAAMlC,MAAM2D,EAASC,GACrB1V,KAAK8f,WAAWC,cAAcrK,GAE9B1V,KAAK05D,MAAQhkD,EAAQ3D,OAAO,KAC5B/R,KAAKqiD,QAAUC,SAASsC,cAAc,UAEtC,MAAM/9C,EAAU7G,KAChBA,KAAK45D,QAAUM,SACVC,YAAY,CAAC,GAAK,KAEvBn6D,KAAK45D,QACAz7C,GAAG,OAAQ,SAAUi8C,GAClB,MAAM7pB,EAAQvvB,EAAAA,UACVuvB,GAASA,EAAM3/B,WACf/J,EAAQwzD,OAAOxzD,EAAQ+yD,QAAS,CAACrpB,EAAM3/B,UAAUpQ,EAAG+vC,EAAM3/B,UAAU/P,GAAI0vC,EAAM3/B,UAAU5G,EAEhG,GAEJ0L,EAAQvG,KAAKnP,KAAK45D,SAElB55D,KACK0nB,YAAY,SAAUzjB,GACnB,MAAMkb,EAAUtY,EAAQsY,UAClB6I,EAAS7I,GAAWA,EAAQ1W,OAAS0W,EAAQ,GAAK,OACxD,OAAOtY,EAAQ+gB,cAAc,CAAEtP,MAAOrU,EAAE81D,YAAa/xC,SAAQhd,MAAO/G,EAAE+1D,cAC1E,EAER,CAEA,MAAAn+C,CAAOpG,EAASC,GACZ1B,MAAM6H,OAAOpG,EAASC,GAEtB1V,KAAKkiB,SAAWliB,KAAKkiB,SAASkG,OAAOpoB,KAAKqoB,aACtCroB,KAAKsoB,qBACLtoB,KAAKkiB,SAAWliB,KAAKkiB,SAASqG,eAAevoB,KAAKqoB,YAAc,IAAMroB,KAAK6f,OAG/E7f,KAAK25D,SAAWjE,KACXtT,OAAO,IAAMpiD,KAAKqiD,SAGvBriD,KAAKq6D,OAAOr6D,KAAM,CAACA,KAAKi0C,UAAWj0C,KAAKk0C,WAAYl0C,KAAK65D,QAEzD,MAAMvwD,EAAOtJ,KAAK85D,WACZjzD,EAAU7G,KACV+jB,EAAS6E,EAAAA,OAAStf,EAAM,SAAUrF,GAAU,OAAOA,EAAE+1D,YAAc,GACzE,IAAIM,EACJ,OAAQt6D,KAAKu6D,aACT,IAAK,MACDD,EAASxjD,EAAAA,SACT,MACJ,IAAK,OACDwjD,EAASrzC,EAAAA,UACT,MACJ,IAAK,MACDqzC,EAAS3jD,EAAAA,SACT,MAEJ,QACI2jD,EAAShkD,EAAAA,YAGjB,MAAMzG,EAAQyqD,IAASvpD,OAAOgT,GAAQ7S,MAAM,CAAClR,KAAKw6D,eAAgBx6D,KAAKy6D,eACjEC,EAAcpkD,EAAAA,cAAgBvF,OAAO,CAAC,EAAGlK,EAAQ8zD,aAAe,IAAIzpD,MAAM,CAACrK,EAAQ+zD,YAAa/zD,EAAQg0D,YAqB9G,SAAS3iB,EAAK5uC,EAAMm6B,GAChB,MAAMvxB,EAAOrL,EAAQ6yD,MAAMloD,UAAU,QAChClI,KAAKA,EAAM,SAAUrF,GAAK,OAAOA,EAAE81D,YAAc91D,EAAE81D,YAAYe,cAAgB,EAAI,GAExF5oD,EAAKJ,QAAQC,OAAO,QACfC,KAAK,cAAe,UACpB7C,KAAKtI,EAAQiZ,WAAWhO,MAAMqY,KAAKtjB,EAAQiZ,aAC3C5N,KAAK,SAAUjO,GAAK,OAAOA,EAAE81D,WAAa,GAC1C57C,GAAG,QAAS,SAAUla,GACnB4C,EAAQgf,MAAMhf,EAAQ8e,SAAS1hB,EAAEg2D,WAAYpzD,EAAQsY,UAAU,GAAItY,EAAQiZ,WAAWQ,SAAStgB,MACnG,GACCme,GAAG,WAAY,SAAUla,GACtB4C,EAAQujB,SAASvjB,EAAQ8e,SAAS1hB,EAAEg2D,WAAYpzD,EAAQsY,UAAU,GAAItY,EAAQiZ,WAAWQ,SAAStgB,MACtG,GACCme,GAAG,mBAAoBtX,EAAQmjB,QAAQC,MACvC9L,GAAG,oBAAqBtX,EAAQmjB,QAAQE,MACxCrR,MAAM,UAAW,MACjB1G,MAAMD,GACN2G,MAAM,YAAa,SAAU5U,GAAK,OAAO4L,EAAM5L,EAAE+1D,cAAgB,IAAM,GACvEnhD,MAAM,cAAehS,EAAQiS,cAC7BzG,aAAa6S,SAAS,KACtBlT,KAAK,YAAa,SAAU/N,GAAK,MAAO,aAAe,CAACA,EAAEzD,EAAGyD,EAAEpD,GAAK,WAAaoD,EAAEqlD,OAAS,GAAK,GACjGzwC,MAAM,OAAQ,SAAU5U,GAAK,OAAO4C,EAAQqb,SAASje,EAAE81D,YAAc91D,EAAE81D,YAAYe,cAAgB,GAAK,GACxGjiD,MAAM,UAAW,GAEtB3G,EAAKN,OAAOS,aAAa6S,SAAS,KAC7BrM,MAAM,UAAW,MACjBpG,QAET,CAhDAzS,KAAK25D,SAASr+B,OACTtS,KAAK,CAAChpB,KAAK+X,QAAS/X,KAAKgY,WACzB6C,MAAMvR,GACNmrD,KAAKz0D,KAAK8Y,cACVmD,QAAQjc,KAAKic,WACbm6C,OAAOp2D,KAAKo2D,UACZlkD,KAAK,SAAUjO,GACZ,OAAOA,EAAE81D,YAAYgB,MACzB,GACC/hD,SAAS,SAAU/U,GAChB,OAAO4L,EAAM5L,EAAE+1D,aACnB,GACC1Q,OAAO,CAACrlD,EAAGsF,IAAMmxD,EAAYnxD,EAAI1C,EAAQ8zD,eACzCx8C,GAAG,OAAQ3a,OAEX2a,GAAG,MAAO+5B,GACVtmB,QAGInxB,EAAAy3C,EAAA,OA8Bb,CAEA,MAAAmiB,CAAOznC,EAAQ6lC,EAAW5oD,GACtB,GAAI4oD,EAAU,KAAOz4D,KAAKu5D,cAAgBd,EAAU,KAAOz4D,KAAKw5D,cAAgB3pD,IAAU7P,KAAKy5D,UAAW,CAEtG,OADAz5D,KAAK05D,MAAM1nD,KAAK,YAAaymD,GACrB7lC,GACJ,KAAK5yB,KAOD,MACJ,KAAKA,KAAK45D,QACN55D,KAAKi0C,QAAQwkB,EAAU,IACvBz4D,KAAKk0C,QAAQukB,EAAU,IACvBz4D,KAAK65D,KAAKhqD,GAGlB7P,KAAKu5D,aAAed,EAAU,GAC9Bz4D,KAAKw5D,aAAef,EAAU,GAC9Bz4D,KAAKy5D,UAAY5pD,CACrB,CACJ,GAjLqCpP,EAAA64D,GAAA,aACrChvC,EADSgvC,GACF,WAAyB,CAAC,CAC7Bz5C,GAAI,QACJ/K,KAAM,UACP,CACC+K,GAAI,QACJ/K,KAAM,YANP,IAAMkmD,GAAN1B,GAmLP0B,GAAUt6D,UAAU8U,QAAU,mBAC9BwlD,GAAUt6D,UAAU+pB,WAAWsM,EAAAA,SAASr2B,WACxCs6D,GAAUt6D,UAAU+pB,WAAWnE,EAAAA,SAAS5lB,WACxCs6D,GAAUt6D,UAAUslB,MAAMpI,EAAAA,QAAQC,sBA+DlCm9C,GAAUt6D,UAAUmc,QAAQ,YAAa,UAAW,MAAO,gCAAiCm+C,GAAUt6D,UAAUwhB,SAASkG,SAAU,CAAElC,KAAM,CAAC,QAAS,YACrJ80C,GAAUt6D,UAAUmc,QAAQ,oBAAoB,EAAO,UAAW,2CAA4C,KAAM,CAAEqJ,KAAM,CAAC,eAAgB,YAE7I80C,GAAUt6D,UAAUmc,QAAQ,aAAc,SAAU,SAAU,YAAa,KAAM,CAAEqJ,KAAM,CAAC,WAC1F80C,GAAUt6D,UAAUmc,QAAQ,eAAgB,EAAG,SAAU,6BAA8B,KAAM,CAAEqJ,KAAM,CAAC,WACtG80C,GAAUt6D,UAAUmc,QAAQ,aAAc,GAAI,SAAU,6BAA8B,KAAM,CAAEqJ,KAAM,CAAC,WACrG80C,GAAUt6D,UAAUmc,QAAQ,aAAa,GAAK,SAAU,0BAA2B,KAAM,CAAEqJ,KAAM,CAAC,WAClG80C,GAAUt6D,UAAUmc,QAAQ,UAAW,GAAI,SAAU,0BAA2B,KAAM,CAAEqJ,KAAM,CAAC,WAC/F80C,GAAUt6D,UAAUmc,QAAQ,aAAc,EAAG,SAAU,6BAA8B,KAAM,CAAEqJ,KAAM,CAAC,WACpG80C,GAAUt6D,UAAUmc,QAAQ,UAAW,EAAG,SAAU,iCAAkC,KAAM,CAAEqJ,KAAM,CAAC,kBACrG80C,GAAUt6D,UAAUmc,QAAQ,YAAa,SAAU,MAAO,oBAAqB,CAAC,SAAU,MAAO,OAAQ,OAAQ,CAAEqJ,KAAM,CAAC,kBAC1H80C,GAAUt6D,UAAUmc,QAAQ,SAAU,cAAe,MAAO,oBAAqB,CAAC,cAAe,eAAgB,CAAEqJ,KAAM,CAAC,kBAC1H80C,GAAUt6D,UAAUmc,QAAQ,UAAW,EAAG,SAAU,WAAY,KAAM,CAAEqJ,KAAM,CAAC,cAC/E80C,GAAUt6D,UAAUmc,QAAQ,UAAW,EAAG,SAAU,WAAY,KAAM,CAAEqJ,KAAM,CAAC,cAC/E80C,GAAUt6D,UAAUmc,QAAQ,OAAQ,EAAG,SAAU,OAAQ,KAAM,CAAEqJ,KAAM,CAAC,kDCzQ3C,+JAFL,+BACG","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,47,48,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,94]}
1
+ {"version":3,"file":"index.umd.cjs","sources":["../../../node_modules/d3-path/src/path.js","../../../node_modules/d3-shape/src/constant.js","../../../node_modules/d3-shape/src/math.js","../../../node_modules/d3-shape/src/arc.js","../../../node_modules/d3-shape/src/curve/linear.js","../../../node_modules/d3-shape/src/point.js","../../../node_modules/d3-shape/src/line.js","../../../node_modules/d3-shape/src/area.js","../../../node_modules/d3-shape/src/descending.js","../../../node_modules/d3-shape/src/identity.js","../../../node_modules/d3-shape/src/pie.js","../../../node_modules/d3-shape/src/curve/basis.js","../../../node_modules/d3-shape/src/curve/bundle.js","../../../node_modules/d3-shape/src/curve/cardinal.js","../../../node_modules/d3-shape/src/curve/catmullRom.js","../../../node_modules/d3-shape/src/curve/monotone.js","../../../node_modules/d3-shape/src/curve/natural.js","../../../node_modules/d3-shape/src/curve/step.js","../../../node_modules/d3-axis/src/array.js","../../../node_modules/d3-axis/src/identity.js","../../../node_modules/d3-axis/src/axis.js","../src/Axis.ts","../src/XYAxis.ts","../src/Scatter.ts","../src/Area.ts","../src/Column.ts","../src/Bar.ts","../node_modules/d3-hierarchy/src/hierarchy/count.js","../node_modules/d3-hierarchy/src/hierarchy/each.js","../node_modules/d3-hierarchy/src/hierarchy/eachBefore.js","../node_modules/d3-hierarchy/src/hierarchy/eachAfter.js","../node_modules/d3-hierarchy/src/hierarchy/sum.js","../node_modules/d3-hierarchy/src/hierarchy/sort.js","../node_modules/d3-hierarchy/src/hierarchy/path.js","../node_modules/d3-hierarchy/src/hierarchy/ancestors.js","../node_modules/d3-hierarchy/src/hierarchy/descendants.js","../node_modules/d3-hierarchy/src/hierarchy/leaves.js","../node_modules/d3-hierarchy/src/hierarchy/links.js","../node_modules/d3-hierarchy/src/hierarchy/index.js","../node_modules/d3-hierarchy/src/array.js","../node_modules/d3-hierarchy/src/pack/enclose.js","../node_modules/d3-hierarchy/src/pack/siblings.js","../node_modules/d3-hierarchy/src/accessors.js","../node_modules/d3-hierarchy/src/constant.js","../node_modules/d3-hierarchy/src/pack/index.js","../src/Bubble.ts","../src/BubbleXY.ts","../../../node_modules/d3-timer/src/timer.js","../../../node_modules/d3v4-bullet/src/bullet.js","../src/Bullet.ts","../../../node_modules/d3-contour/src/array.js","../../../node_modules/d3-contour/src/ascending.js","../../../node_modules/d3-contour/src/area.js","../../../node_modules/d3-contour/src/constant.js","../../../node_modules/d3-contour/src/contains.js","../../../node_modules/d3-contour/src/noop.js","../../../node_modules/d3-contour/src/contours.js","../../../node_modules/d3-contour/src/blur.js","../../../node_modules/d3-contour/src/density.js","../../../node_modules/d3-geo/src/adder.js","../../../node_modules/d3-geo/src/math.js","../../../node_modules/d3-geo/src/noop.js","../../../node_modules/d3-geo/src/stream.js","../../../node_modules/d3-geo/src/identity.js","../../../node_modules/d3-geo/src/path/area.js","../../../node_modules/d3-geo/src/path/bounds.js","../../../node_modules/d3-geo/src/path/centroid.js","../../../node_modules/d3-geo/src/path/context.js","../../../node_modules/d3-geo/src/path/measure.js","../../../node_modules/d3-geo/src/path/string.js","../../../node_modules/d3-geo/src/path/index.js","../src/Contour.ts","../src/Gantt.ts","../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/constant.js","../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/math.js","../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/arc.js","../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/curve/linear.js","../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/point.js","../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/line.js","../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/noop.js","../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/curve/basis.js","../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/curve/bundle.js","../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/curve/cardinal.js","../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/curve/cardinalClosed.js","../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/curve/cardinalOpen.js","../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/curve/catmullRom.js","../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/curve/catmullRomClosed.js","../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/curve/catmullRomOpen.js","../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/curve/monotone.js","../../../node_modules/d3-svg-annotation/indexRollupNext.js","../src/Gauge.ts","../src/Pie.ts","../src/HalfPie.ts","../src/Heat.ts","../../../node_modules/d3-hexbin/src/hexbin.js","../src/HexBin.ts","../src/Line.ts","../src/QuarterPie.ts","../src/QuartileCandlestick.ts","../src/Radar.ts","../src/RadialBar.ts","../src/StatChart.ts","../src/Step.ts","../src/Summary.ts","../src/SummaryC.ts","../src/D3Cloud.ts","../src/WordCloud.ts","../src/timeFormats.ts","../src/__package__.ts"],"sourcesContent":["var pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction Path() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n}\n\nfunction path() {\n return new Path;\n}\n\nPath.prototype = path.prototype = {\n constructor: Path,\n moveTo: function(x, y) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n },\n closePath: function() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n },\n lineTo: function(x, y) {\n this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n quadraticCurveTo: function(x1, y1, x, y) {\n this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n arcTo: function(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n var x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Otherwise, draw an arc!\n else {\n var x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n }\n\n this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n }\n },\n arc: function(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n var dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._ += \"M\" + x0 + \",\" + y0;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._ += \"L\" + x0 + \",\" + y0;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n }\n },\n rect: function(x, y, w, h) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n },\n toString: function() {\n return this._;\n }\n};\n\nexport default path;\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","export var abs = Math.abs;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var max = Math.max;\nexport var min = Math.min;\nexport var sin = Math.sin;\nexport var sqrt = Math.sqrt;\n\nexport var epsilon = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport {abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau} from \"./math.js\";\n\nfunction arcInnerRadius(d) {\n return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n var x10 = x1 - x0, y10 = y1 - y0,\n x32 = x3 - x2, y32 = y3 - y2,\n t = y32 * x10 - x32 * y10;\n if (t * t < epsilon) return;\n t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n var x01 = x0 - x1,\n y01 = y0 - y1,\n lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01),\n ox = lo * y01,\n oy = -lo * x01,\n x11 = x0 + ox,\n y11 = y0 + oy,\n x10 = x1 + ox,\n y10 = y1 + oy,\n x00 = (x11 + x10) / 2,\n y00 = (y11 + y10) / 2,\n dx = x10 - x11,\n dy = y10 - y11,\n d2 = dx * dx + dy * dy,\n r = r1 - rc,\n D = x11 * y10 - x10 * y11,\n d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)),\n cx0 = (D * dy - dx * d) / d2,\n cy0 = (-D * dx - dy * d) / d2,\n cx1 = (D * dy + dx * d) / d2,\n cy1 = (-D * dx + dy * d) / d2,\n dx0 = cx0 - x00,\n dy0 = cy0 - y00,\n dx1 = cx1 - x00,\n dy1 = cy1 - y00;\n\n // Pick the closer of the two intersection points.\n // TODO Is there a faster way to determine which intersection to use?\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n return {\n cx: cx0,\n cy: cy0,\n x01: -ox,\n y01: -oy,\n x11: cx0 * (r1 / r - 1),\n y11: cy0 * (r1 / r - 1)\n };\n}\n\nexport default function() {\n var innerRadius = arcInnerRadius,\n outerRadius = arcOuterRadius,\n cornerRadius = constant(0),\n padRadius = null,\n startAngle = arcStartAngle,\n endAngle = arcEndAngle,\n padAngle = arcPadAngle,\n context = null;\n\n function arc() {\n var buffer,\n r,\n r0 = +innerRadius.apply(this, arguments),\n r1 = +outerRadius.apply(this, arguments),\n a0 = startAngle.apply(this, arguments) - halfPi,\n a1 = endAngle.apply(this, arguments) - halfPi,\n da = abs(a1 - a0),\n cw = a1 > a0;\n\n if (!context) context = buffer = path();\n\n // Ensure that the outer radius is always larger than the inner radius.\n if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n // Is it a point?\n if (!(r1 > epsilon)) context.moveTo(0, 0);\n\n // Or is it a circle or annulus?\n else if (da > tau - epsilon) {\n context.moveTo(r1 * cos(a0), r1 * sin(a0));\n context.arc(0, 0, r1, a0, a1, !cw);\n if (r0 > epsilon) {\n context.moveTo(r0 * cos(a1), r0 * sin(a1));\n context.arc(0, 0, r0, a1, a0, cw);\n }\n }\n\n // Or is it a circular or annular sector?\n else {\n var a01 = a0,\n a11 = a1,\n a00 = a0,\n a10 = a1,\n da0 = da,\n da1 = da,\n ap = padAngle.apply(this, arguments) / 2,\n rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)),\n rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n rc0 = rc,\n rc1 = rc,\n t0,\n t1;\n\n // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n if (rp > epsilon) {\n var p0 = asin(rp / r0 * sin(ap)),\n p1 = asin(rp / r1 * sin(ap));\n if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n }\n\n var x01 = r1 * cos(a01),\n y01 = r1 * sin(a01),\n x10 = r0 * cos(a10),\n y10 = r0 * sin(a10);\n\n // Apply rounded corners?\n if (rc > epsilon) {\n var x11 = r1 * cos(a11),\n y11 = r1 * sin(a11),\n x00 = r0 * cos(a00),\n y00 = r0 * sin(a00),\n oc;\n\n // Restrict the corner radius according to the sector angle.\n if (da < pi && (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10))) {\n var ax = x01 - oc[0],\n ay = y01 - oc[1],\n bx = x11 - oc[0],\n by = y11 - oc[1],\n kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2),\n lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = min(rc, (r0 - lc) / (kc - 1));\n rc1 = min(rc, (r1 - lc) / (kc + 1));\n }\n }\n\n // Is the sector collapsed to a line?\n if (!(da1 > epsilon)) context.moveTo(x01, y01);\n\n // Does the sector’s outer ring have rounded corners?\n else if (rc1 > epsilon) {\n t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the outer ring just a circular arc?\n else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n // Is there no inner ring, and it’s a circular sector?\n // Or perhaps it’s an annular sector collapsed due to padding?\n if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n // Does the sector’s inner ring (or point) have rounded corners?\n else if (rc0 > epsilon) {\n t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the inner ring just a circular arc?\n else context.arc(0, 0, r0, a10, a00, cw);\n }\n\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n arc.centroid = function() {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;\n return [cos(a) * r, sin(a) * r];\n };\n\n arc.innerRadius = function(_) {\n return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n };\n\n arc.outerRadius = function(_) {\n return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n };\n\n arc.cornerRadius = function(_) {\n return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n };\n\n arc.padRadius = function(_) {\n return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n };\n\n arc.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n };\n\n arc.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n };\n\n arc.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n };\n\n arc.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n };\n\n return arc;\n}\n","function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function() {\n var x = pointX,\n y = pointY,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n function line(data) {\n var i,\n n = data.length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport line from \"./line.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function() {\n var x0 = pointX,\n x1 = null,\n y0 = constant(0),\n y1 = pointY,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n function area(data) {\n var i,\n j,\n k,\n n = data.length,\n d,\n defined0 = false,\n buffer,\n x0z = new Array(n),\n y0z = new Array(n);\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) {\n j = i;\n output.areaStart();\n output.lineStart();\n } else {\n output.lineEnd();\n output.lineStart();\n for (k = i - 1; k >= j; --k) {\n output.point(x0z[k], y0z[k]);\n }\n output.lineEnd();\n output.areaEnd();\n }\n }\n if (defined0) {\n x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);\n output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);\n }\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n function arealine() {\n return line().defined(defined).curve(curve).context(context);\n }\n\n area.x = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), x1 = null, area) : x0;\n };\n\n area.x0 = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), area) : x0;\n };\n\n area.x1 = function(_) {\n return arguments.length ? (x1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : x1;\n };\n\n area.y = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), y1 = null, area) : y0;\n };\n\n area.y0 = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), area) : y0;\n };\n\n area.y1 = function(_) {\n return arguments.length ? (y1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : y1;\n };\n\n area.lineX0 =\n area.lineY0 = function() {\n return arealine().x(x0).y(y0);\n };\n\n area.lineY1 = function() {\n return arealine().x(x0).y(y1);\n };\n\n area.lineX1 = function() {\n return arealine().x(x1).y(y0);\n };\n\n area.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), area) : defined;\n };\n\n area.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;\n };\n\n area.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;\n };\n\n return area;\n}\n","export default function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n","export default function(d) {\n return d;\n}\n","import constant from \"./constant.js\";\nimport descending from \"./descending.js\";\nimport identity from \"./identity.js\";\nimport {tau} from \"./math.js\";\n\nexport default function() {\n var value = identity,\n sortValues = descending,\n sort = null,\n startAngle = constant(0),\n endAngle = constant(tau),\n padAngle = constant(0);\n\n function pie(data) {\n var i,\n n = data.length,\n j,\n k,\n sum = 0,\n index = new Array(n),\n arcs = new Array(n),\n a0 = +startAngle.apply(this, arguments),\n da = Math.min(tau, Math.max(-tau, endAngle.apply(this, arguments) - a0)),\n a1,\n p = Math.min(Math.abs(da) / n, padAngle.apply(this, arguments)),\n pa = p * (da < 0 ? -1 : 1),\n v;\n\n for (i = 0; i < n; ++i) {\n if ((v = arcs[index[i] = i] = +value(data[i], i, data)) > 0) {\n sum += v;\n }\n }\n\n // Optionally sort the arcs by previously-computed values or by data.\n if (sortValues != null) index.sort(function(i, j) { return sortValues(arcs[i], arcs[j]); });\n else if (sort != null) index.sort(function(i, j) { return sort(data[i], data[j]); });\n\n // Compute the arcs! They are stored in the original data's order.\n for (i = 0, k = sum ? (da - n * pa) / sum : 0; i < n; ++i, a0 = a1) {\n j = index[i], v = arcs[j], a1 = a0 + (v > 0 ? v * k : 0) + pa, arcs[j] = {\n data: data[j],\n index: i,\n value: v,\n startAngle: a0,\n endAngle: a1,\n padAngle: p\n };\n }\n\n return arcs;\n }\n\n pie.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), pie) : value;\n };\n\n pie.sortValues = function(_) {\n return arguments.length ? (sortValues = _, sort = null, pie) : sortValues;\n };\n\n pie.sort = function(_) {\n return arguments.length ? (sort = _, sortValues = null, pie) : sort;\n };\n\n pie.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : startAngle;\n };\n\n pie.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : endAngle;\n };\n\n pie.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : padAngle;\n };\n\n return pie;\n}\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n (2 * that._x0 + that._x1) / 3,\n (2 * that._y0 + that._y1) / 3,\n (that._x0 + 2 * that._x1) / 3,\n (that._y0 + 2 * that._y1) / 3,\n (that._x0 + 4 * that._x1 + x) / 6,\n (that._y0 + 4 * that._y1 + y) / 6\n );\n}\n\nexport function Basis(context) {\n this._context = context;\n}\n\nBasis.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 3: point(this, this._x1, this._y1); // proceed\n case 2: this._context.lineTo(this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new Basis(context);\n}\n","import {Basis} from \"./basis.js\";\n\nfunction Bundle(context, beta) {\n this._basis = new Basis(context);\n this._beta = beta;\n}\n\nBundle.prototype = {\n lineStart: function() {\n this._x = [];\n this._y = [];\n this._basis.lineStart();\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n j = x.length - 1;\n\n if (j > 0) {\n var x0 = x[0],\n y0 = y[0],\n dx = x[j] - x0,\n dy = y[j] - y0,\n i = -1,\n t;\n\n while (++i <= j) {\n t = i / j;\n this._basis.point(\n this._beta * x[i] + (1 - this._beta) * (x0 + t * dx),\n this._beta * y[i] + (1 - this._beta) * (y0 + t * dy)\n );\n }\n }\n\n this._x = this._y = null;\n this._basis.lineEnd();\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\nexport default (function custom(beta) {\n\n function bundle(context) {\n return beta === 1 ? new Basis(context) : new Bundle(context, beta);\n }\n\n bundle.beta = function(beta) {\n return custom(+beta);\n };\n\n return bundle;\n})(0.85);\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n that._x1 + that._k * (that._x2 - that._x0),\n that._y1 + that._k * (that._y2 - that._y0),\n that._x2 + that._k * (that._x1 - x),\n that._y2 + that._k * (that._y1 - y),\n that._x2,\n that._y2\n );\n}\n\nexport function Cardinal(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinal.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: point(this, this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; this._x1 = x, this._y1 = y; break;\n case 2: this._point = 3; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new Cardinal(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import {epsilon} from \"../math.js\";\nimport {Cardinal} from \"./cardinal.js\";\n\nexport function point(that, x, y) {\n var x1 = that._x1,\n y1 = that._y1,\n x2 = that._x2,\n y2 = that._y2;\n\n if (that._l01_a > epsilon) {\n var a = 2 * that._l01_2a + 3 * that._l01_a * that._l12_a + that._l12_2a,\n n = 3 * that._l01_a * (that._l01_a + that._l12_a);\n x1 = (x1 * a - that._x0 * that._l12_2a + that._x2 * that._l01_2a) / n;\n y1 = (y1 * a - that._y0 * that._l12_2a + that._y2 * that._l01_2a) / n;\n }\n\n if (that._l23_a > epsilon) {\n var b = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a,\n m = 3 * that._l23_a * (that._l23_a + that._l12_a);\n x2 = (x2 * b + that._x1 * that._l23_2a - x * that._l12_2a) / m;\n y2 = (y2 * b + that._y1 * that._l23_2a - y * that._l12_2a) / m;\n }\n\n that._context.bezierCurveTo(x1, y1, x2, y2, that._x2, that._y2);\n}\n\nfunction CatmullRom(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRom.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: this.point(this._x2, this._y2); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; // proceed\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRom(context, alpha) : new Cardinal(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","function sign(x) {\n return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n var h0 = that._x1 - that._x0,\n h1 = x2 - that._x1,\n s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n p = (s0 * h1 + s1 * h0) / (h0 + h1);\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n var h = that._x1 - that._x0;\n return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n var x0 = that._x0,\n y0 = that._y0,\n x1 = that._x1,\n y1 = that._y1,\n dx = (x1 - x0) / 3;\n that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n this._context = context;\n}\n\nMonotoneX.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 =\n this._t0 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x1, this._y1); break;\n case 3: point(this, this._t0, slope2(this, this._t0)); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n var t1 = NaN;\n\n x = +x, y = +y;\n if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n }\n\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n this._t0 = t1;\n }\n}\n\nfunction MonotoneY(context) {\n this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n this._context = context;\n}\n\nReflectContext.prototype = {\n moveTo: function(x, y) { this._context.moveTo(y, x); },\n closePath: function() { this._context.closePath(); },\n lineTo: function(x, y) { this._context.lineTo(y, x); },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nexport function monotoneX(context) {\n return new MonotoneX(context);\n}\n\nexport function monotoneY(context) {\n return new MonotoneY(context);\n}\n","function Natural(context) {\n this._context = context;\n}\n\nNatural.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = [];\n this._y = [];\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n n = x.length;\n\n if (n) {\n this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]);\n if (n === 2) {\n this._context.lineTo(x[1], y[1]);\n } else {\n var px = controlPoints(x),\n py = controlPoints(y);\n for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) {\n this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]);\n }\n }\n }\n\n if (this._line || (this._line !== 0 && n === 1)) this._context.closePath();\n this._line = 1 - this._line;\n this._x = this._y = null;\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\n// See https://www.particleincell.com/2012/bezier-splines/ for derivation.\nfunction controlPoints(x) {\n var i,\n n = x.length - 1,\n m,\n a = new Array(n),\n b = new Array(n),\n r = new Array(n);\n a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1];\n for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1];\n a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n];\n for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1];\n a[n - 1] = r[n - 1] / b[n - 1];\n for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i];\n b[n - 1] = (x[n] + a[n - 1]) / 2;\n for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1];\n return [a, b];\n}\n\nexport default function(context) {\n return new Natural(context);\n}\n","function Step(context, t) {\n this._context = context;\n this._t = t;\n}\n\nStep.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = this._y = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: {\n if (this._t <= 0) {\n this._context.lineTo(this._x, y);\n this._context.lineTo(x, y);\n } else {\n var x1 = this._x * (1 - this._t) + x * this._t;\n this._context.lineTo(x1, this._y);\n this._context.lineTo(x1, y);\n }\n break;\n }\n }\n this._x = x, this._y = y;\n }\n};\n\nexport default function(context) {\n return new Step(context, 0.5);\n}\n\nexport function stepBefore(context) {\n return new Step(context, 0);\n}\n\nexport function stepAfter(context) {\n return new Step(context, 1);\n}\n","export var slice = Array.prototype.slice;\n","export default function(x) {\n return x;\n}\n","import {slice} from \"./array\";\nimport identity from \"./identity\";\n\nvar top = 1,\n right = 2,\n bottom = 3,\n left = 4,\n epsilon = 1e-6;\n\nfunction translateX(x) {\n return \"translate(\" + (x + 0.5) + \",0)\";\n}\n\nfunction translateY(y) {\n return \"translate(0,\" + (y + 0.5) + \")\";\n}\n\nfunction number(scale) {\n return function(d) {\n return +scale(d);\n };\n}\n\nfunction center(scale) {\n var offset = Math.max(0, scale.bandwidth() - 1) / 2; // Adjust for 0.5px offset.\n if (scale.round()) offset = Math.round(offset);\n return function(d) {\n return +scale(d) + offset;\n };\n}\n\nfunction entering() {\n return !this.__axis;\n}\n\nfunction axis(orient, scale) {\n var tickArguments = [],\n tickValues = null,\n tickFormat = null,\n tickSizeInner = 6,\n tickSizeOuter = 6,\n tickPadding = 3,\n k = orient === top || orient === left ? -1 : 1,\n x = orient === left || orient === right ? \"x\" : \"y\",\n transform = orient === top || orient === bottom ? translateX : translateY;\n\n function axis(context) {\n var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues,\n format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity) : tickFormat,\n spacing = Math.max(tickSizeInner, 0) + tickPadding,\n range = scale.range(),\n range0 = +range[0] + 0.5,\n range1 = +range[range.length - 1] + 0.5,\n position = (scale.bandwidth ? center : number)(scale.copy()),\n selection = context.selection ? context.selection() : context,\n path = selection.selectAll(\".domain\").data([null]),\n tick = selection.selectAll(\".tick\").data(values, scale).order(),\n tickExit = tick.exit(),\n tickEnter = tick.enter().append(\"g\").attr(\"class\", \"tick\"),\n line = tick.select(\"line\"),\n text = tick.select(\"text\");\n\n path = path.merge(path.enter().insert(\"path\", \".tick\")\n .attr(\"class\", \"domain\")\n .attr(\"stroke\", \"currentColor\"));\n\n tick = tick.merge(tickEnter);\n\n line = line.merge(tickEnter.append(\"line\")\n .attr(\"stroke\", \"currentColor\")\n .attr(x + \"2\", k * tickSizeInner));\n\n text = text.merge(tickEnter.append(\"text\")\n .attr(\"fill\", \"currentColor\")\n .attr(x, k * spacing)\n .attr(\"dy\", orient === top ? \"0em\" : orient === bottom ? \"0.71em\" : \"0.32em\"));\n\n if (context !== selection) {\n path = path.transition(context);\n tick = tick.transition(context);\n line = line.transition(context);\n text = text.transition(context);\n\n tickExit = tickExit.transition(context)\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { return isFinite(d = position(d)) ? transform(d) : this.getAttribute(\"transform\"); });\n\n tickEnter\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { var p = this.parentNode.__axis; return transform(p && isFinite(p = p(d)) ? p : position(d)); });\n }\n\n tickExit.remove();\n\n path\n .attr(\"d\", orient === left || orient == right\n ? (tickSizeOuter ? \"M\" + k * tickSizeOuter + \",\" + range0 + \"H0.5V\" + range1 + \"H\" + k * tickSizeOuter : \"M0.5,\" + range0 + \"V\" + range1)\n : (tickSizeOuter ? \"M\" + range0 + \",\" + k * tickSizeOuter + \"V0.5H\" + range1 + \"V\" + k * tickSizeOuter : \"M\" + range0 + \",0.5H\" + range1));\n\n tick\n .attr(\"opacity\", 1)\n .attr(\"transform\", function(d) { return transform(position(d)); });\n\n line\n .attr(x + \"2\", k * tickSizeInner);\n\n text\n .attr(x, k * spacing)\n .text(format);\n\n selection.filter(entering)\n .attr(\"fill\", \"none\")\n .attr(\"font-size\", 10)\n .attr(\"font-family\", \"sans-serif\")\n .attr(\"text-anchor\", orient === right ? \"start\" : orient === left ? \"end\" : \"middle\");\n\n selection\n .each(function() { this.__axis = position; });\n }\n\n axis.scale = function(_) {\n return arguments.length ? (scale = _, axis) : scale;\n };\n\n axis.ticks = function() {\n return tickArguments = slice.call(arguments), axis;\n };\n\n axis.tickArguments = function(_) {\n return arguments.length ? (tickArguments = _ == null ? [] : slice.call(_), axis) : tickArguments.slice();\n };\n\n axis.tickValues = function(_) {\n return arguments.length ? (tickValues = _ == null ? null : slice.call(_), axis) : tickValues && tickValues.slice();\n };\n\n axis.tickFormat = function(_) {\n return arguments.length ? (tickFormat = _, axis) : tickFormat;\n };\n\n axis.tickSize = function(_) {\n return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeInner = function(_) {\n return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeOuter = function(_) {\n return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter;\n };\n\n axis.tickPadding = function(_) {\n return arguments.length ? (tickPadding = +_, axis) : tickPadding;\n };\n\n return axis;\n}\n\nexport function axisTop(scale) {\n return axis(top, scale);\n}\n\nexport function axisRight(scale) {\n return axis(right, scale);\n}\n\nexport function axisBottom(scale) {\n return axis(bottom, scale);\n}\n\nexport function axisLeft(scale) {\n return axis(left, scale);\n}\n","import { SVGWidget } from \"@hpcc-js/common\";\nimport { axisBottom as d3AxisBottom, axisLeft as d3AxisLeft, axisRight as d3AxisRight, axisTop as d3AxisTop } from \"d3-axis\";\nimport { format as d3Format } from \"d3-format\";\nimport { scaleBand as d3ScaleBand, scaleLinear as d3ScaleLinear, scaleLog as d3ScaleLog, scalePow as d3ScalePow, scaleTime as d3ScaleTime } from \"d3-scale\";\nimport { select as d3Select } from \"d3-selection\";\nimport { timeFormat as d3TimeFormat, timeParse as d3TimeParse } from \"d3-time-format\";\n\nimport \"../src/Axis.css\";\n\nexport interface IOverflow {\n left: number;\n top: number;\n right: number;\n bottom: number;\n depth: number;\n tickOverlapModulus: number;\n}\n\nexport class Axis extends SVGWidget {\n _origType;\n _origTimePattern;\n\n protected parser;\n protected parserInvert;\n protected formatter: ((d: Date | any) => string) | null;\n protected d3Scale;\n protected d3Axis;\n protected d3Guides;\n protected _guideElement;\n protected svg;\n protected svgAxis;\n protected svgGuides;\n protected _tickFormatFunc?: (d: any) => string;\n\n constructor(drawStartPosition: \"origin\" | \"center\" = \"origin\") {\n super();\n this._drawStartPos = drawStartPosition;\n\n this.updateScale();\n }\n\n lowValue() {\n return this.parse(this.low());\n }\n\n highValue() {\n return this.parse(this.high());\n }\n\n parse(d, forceNumeric?) {\n if (d instanceof Array) {\n return d.map(function (d2) {\n return this.parse(d2);\n }, this);\n }\n if (d !== undefined && d !== null) {\n if (this.parser) {\n return this.parser(typeof d === \"number\" ? d.toString() : d);\n }\n if (forceNumeric && typeof d === \"string\") {\n return +d;\n }\n }\n return d;\n }\n\n parseInvert(d) {\n if (d instanceof Array) {\n return d.map(function (d2) {\n return this.parseInvert(d2);\n }, this);\n }\n if (this.parserInvert && d) {\n return this.parserInvert(d);\n }\n return d;\n }\n\n format(d) {\n if (d instanceof Array) {\n return d.map(function (d2) {\n return this.format(d2);\n }, this);\n }\n if (d !== undefined && d !== null && this.formatter) {\n return this.formatter(d);\n }\n return d;\n }\n\n parseFormat(d) {\n return this.format(this.parse(d));\n }\n\n tickFormatFunc(fn: (d: any) => string): this;\n tickFormatFunc(): ((d: any) => string) | undefined;\n tickFormatFunc(fn?: (d: any) => string): this | ((d: any) => string) | undefined {\n if (!arguments.length) return this._tickFormatFunc;\n this._tickFormatFunc = fn;\n this.updateScale();\n return this;\n }\n\n scalePos(d) {\n let retVal = this.d3Scale(this.parse(d));\n if (this.type() === \"ordinal\") {\n retVal += this.bandwidth() / 2;\n }\n return retVal;\n }\n\n bandwidth() {\n return this.d3Scale.bandwidth ? this.d3Scale.bandwidth() : 0;\n }\n\n isHorizontal() {\n switch (this.orientation()) {\n case \"left\":\n case \"right\":\n return false;\n default:\n }\n return true;\n }\n\n domain(_?) {\n if (!arguments.length) return this.d3Scale.domain();\n this.d3Scale.domain(_);\n return this;\n }\n\n range(_?) {\n if (!arguments.length) {\n if (this.d3Scale.rangeRoundBands) {\n return this.d3Scale.rangeExtent();\n } else if (this.d3Scale.rangeRound) {\n return this.d3Scale.range();\n }\n }\n if (this.d3Scale.rangeRoundBands) {\n this.d3Scale.rangeRoundBands(_, 0.1);\n } else if (this.d3Scale.rangeRound) {\n this.d3Scale.range(_);\n }\n return this;\n }\n\n invert(pos) {\n return this.d3Scale.invert(pos);\n }\n\n guideTarget(_) {\n this._guideElement = d3Select(_)\n .attr(\"class\", this._class)\n ;\n return this;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this.svg = element.append(\"g\");\n this.svgAxis = this.svg.append(\"g\")\n .attr(\"class\", \"axis\")\n ;\n this.svgGuides = (this._guideElement || element).append(\"g\")\n .attr(\"class\", \"guide\")\n ;\n }\n\n protected _prevOrientation;\n updateScale(): this {\n switch (this.type()) {\n case \"ordinal\":\n this.d3Scale = d3ScaleBand()\n .paddingInner(this.ordinalPaddingInner())\n .paddingOuter(this.ordinalPaddingOuter())\n ;\n if (this.ordinals_exists()) {\n this.d3Scale.domain(this.ordinals());\n }\n this.parser = null;\n if (this.ordinalMappings_exists()) {\n const mappings = this.ordinalMappings();\n this.formatter = (_: any) => mappings[_] || _;\n } else {\n this.formatter = null;\n }\n break;\n case \"linear\":\n this.d3Scale = d3ScaleLinear();\n if (this.low_exists() && this.high_exists()) {\n this.d3Scale.domain([this.lowValue(), this.highValue()]);\n }\n this.parser = null;\n this.formatter = this.tickFormat_exists() ? d3Format(this.tickFormat()) : null;\n break;\n case \"pow\":\n this.d3Scale = d3ScalePow()\n .exponent(this.powExponent())\n ;\n if (this.low_exists() && this.high_exists()) {\n this.d3Scale.domain([this.lowValue(), this.highValue()]);\n }\n this.parser = null;\n this.formatter = this.tickFormat_exists() ? d3Format(this.tickFormat()) : null;\n break;\n case \"log\":\n this.d3Scale = d3ScaleLog()\n .base(this.logBase())\n ;\n if (this.low_exists() && this.high_exists()) {\n this.d3Scale.domain([this.lowValue(), this.highValue()]);\n }\n this.parser = null;\n this.formatter = this.tickFormat_exists() ? d3Format(this.tickFormat()) : null;\n break;\n case \"time\":\n this.d3Scale = d3ScaleTime();\n if (this.low_exists() && this.high_exists()) {\n this.d3Scale.domain([this.lowValue(), this.highValue()]);\n }\n this.parser = this.timePattern_exists() ? d3TimeParse(this.timePattern()) : null;\n this.parserInvert = this.timePattern_exists() ? d3TimeFormat(this.timePattern()) : null;\n if (this._tickFormatFunc) {\n this.formatter = this._tickFormatFunc;\n } else {\n this.formatter = this.tickFormat_exists() ? d3TimeFormat(this.tickFormat()) : null;\n }\n break;\n default:\n }\n if (this._prevOrientation !== this.orientation()) {\n switch (this.orientation()) {\n case \"left\":\n this.d3Axis = d3AxisLeft(this.d3Scale);\n this.d3Guides = d3AxisLeft(this.d3Scale);\n break;\n case \"top\":\n this.d3Axis = d3AxisTop(this.d3Scale);\n this.d3Guides = d3AxisTop(this.d3Scale);\n break;\n case \"right\":\n this.d3Axis = d3AxisRight(this.d3Scale);\n this.d3Guides = d3AxisRight(this.d3Scale);\n break;\n case \"bottom\":\n default:\n this.d3Axis = d3AxisBottom(this.d3Scale);\n this.d3Guides = d3AxisBottom(this.d3Scale);\n break;\n }\n this._prevOrientation = this.orientation();\n if (this.svgAxis) {\n this.svgAxis.html(\"\");\n }\n if (this.svgGuides) {\n this.svgGuides.html(\"\");\n }\n }\n\n if (this.extend()) {\n switch (this.type()) {\n case \"ordinal\":\n break;\n default:\n let length;\n let delta;\n let low;\n let high;\n let newLow;\n let newHigh;\n if (this.isHorizontal()) {\n length = this.width();\n this.d3Scale.range([0, length]);\n delta = length * this.extend() / 100;\n low = this.d3Scale.invert(0);\n newLow = this.d3Scale.invert(-delta);\n high = this.d3Scale.invert(length);\n newHigh = this.d3Scale.invert(length + delta);\n } else {\n length = this.height();\n this.d3Scale.range([length, 0]);\n delta = length * this.extend() / 100;\n low = this.d3Scale.invert(length);\n newLow = this.d3Scale.invert(length + delta);\n high = this.d3Scale.invert(0);\n newHigh = this.d3Scale.invert(-delta);\n }\n if (newLow === low) { // Edge case when there is only one item in the domain ---\n newLow = low - low * this.extend() / 100;\n }\n if (newHigh === high) { // Edge case when there is only one item in the domain ---\n newHigh = high + high * this.extend() / 100;\n }\n if ((Math as any).sign(low) !== (Math as any).sign(newLow)) {\n newLow = 0;\n }\n if ((Math as any).sign(high) !== (Math as any).sign(newHigh)) {\n newHigh = 0;\n }\n this.d3Scale.domain([newLow, newHigh]);\n break;\n }\n }\n\n this.d3Axis\n .scale(this.d3Scale)\n .tickFormat(this.formatter)\n .ticks(this.tickCount())\n ;\n this.d3Guides\n .scale(this.d3Scale)\n .tickSize(this.tickLength_exists() ? -this.tickLength() : 0)\n .tickFormat(\"\")\n .ticks(this.tickCount())\n ;\n const customTicks = this.ticks();\n if (customTicks.length) {\n this.d3Axis\n .tickValues(customTicks.map(d => this.parse(d.value)))\n .tickFormat((_d, i) => {\n return customTicks[i].label;\n });\n this.d3Guides\n .tickValues(customTicks.map(d => this.parse(d.value)));\n }\n return this;\n }\n\n adjustText(svg, tickOverlapModulus) {\n const isHoriztontal = this.isHorizontal();\n const isLeft = this.orientation() === \"left\";\n const isBottom = this.orientation() === \"bottom\";\n const context = this;\n const textSelection = svg.selectAll(\".tick > text\")\n .style(\"font-family\", this.fontFamily())\n .style(\"font-size\", this.fontSize_exists() ? this.fontSize() + \"px\" : null)\n ;\n if (this.overlapMode() === \"linebreak\") {\n if (this.type() === \"ordinal\") {\n textSelection\n .call(function () {\n return context.linebreak.apply(context, arguments);\n }, this.bandwidth())\n ;\n }\n } else if (this.overlapMode() === \"wrap\") {\n if (this.type() === \"ordinal\") {\n textSelection\n .call(function () {\n return context.wrap.apply(context, arguments);\n }, this.bandwidth())\n ;\n }\n } else {\n switch (isHoriztontal ? this.overlapMode() : \"none\") {\n case \"stagger\":\n textSelection\n .style(\"text-anchor\", \"middle\")\n .attr(\"dy\", function (_d, i) { return (isBottom ? 1 : -1) * ((isBottom ? 0.71 : 0) + i % tickOverlapModulus) + \"em\"; })\n .attr(\"dx\", 0)\n .attr(\"visibility\", null)\n .attr(\"transform\", \"rotate(0)\")\n ;\n break;\n case \"hide\":\n textSelection\n .style(\"text-anchor\", \"middle\")\n .attr(\"dy\", (isBottom ? 0.71 : 0) + \"em\")\n .attr(\"dx\", 0)\n .attr(\"visibility\", function (_d, i) { return i % tickOverlapModulus ? \"hidden\" : null; })\n .attr(\"transform\", \"rotate(0)\")\n ;\n break;\n case \"rotate\":\n const deg = -(this.labelRotation()) || 0;\n if (deg !== 0 && tickOverlapModulus > 1) {\n textSelection\n .each(function () {\n const elm = d3Select(this);\n const bbox = elm.node().getBBox();\n const dyOff = (isBottom ? 1 : -1) * Math.sin(Math.PI * (-Math.abs(deg) / 180));\n elm\n .style(\"text-anchor\", deg > 0 ? (isBottom ? \"start\" : \"end\") : (isBottom ? \"end\" : \"start\"))\n .attr(\"dy\", (bbox.height / 2 * dyOff) + \"px\")\n .attr(\"dx\", deg > 0 ? (isBottom ? \"0.71em\" : \"-0.71em\") : (isBottom ? \"-0.71em\" : \"0.71em\"))\n .attr(\"transform\", \"rotate(\" + deg + \")\")\n .attr(\"visibility\", null)\n ;\n })\n ;\n break;\n }\n /* falls through */\n default:\n textSelection\n .style(\"text-anchor\", isHoriztontal ? \"middle\" : isLeft ? \"end\" : \"start\")\n .attr(\"dy\", isHoriztontal ? ((isBottom ? 0.71 : 0) + \"em\") : \"0.32em\")\n .attr(\"dx\", 0)\n .attr(\"visibility\", null)\n .attr(\"transform\", \"rotate(0)\")\n ;\n }\n }\n }\n\n calcTickOverlapModulus(element) {\n let retVal = 1;\n switch (this.overlapMode()) {\n case \"rotate\":\n case \"stagger\":\n case \"hide\":\n const bboxArr = [];\n element.selectAll(\".tick > text\").each(function () {\n const bbox = this.getBoundingClientRect();\n for (let i = bboxArr.length - 1; i >= 0; --i) {\n if (bboxArr[i].right < bbox.left) {\n break;\n }\n if (bboxArr.length + 1 - i > retVal) {\n retVal = bboxArr.length + 1 - i;\n }\n }\n bboxArr.push(bbox);\n });\n break;\n default:\n }\n return retVal;\n }\n\n calcOverflow(element, ignoreText?): IOverflow {\n this.updateScale();\n if (this.hidden()) {\n return {\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n depth: 0,\n tickOverlapModulus: 1\n };\n }\n const isHorizontal = this.isHorizontal();\n this.range(isHorizontal ? [0, this.width()] : [this.height(), 0]);\n const tmpSvg = element.append(\"g\").attr(\"class\", this.classID());\n const tmpSvgG = tmpSvg.append(\"g\");\n tmpSvgG\n .attr(\"class\", isHorizontal ? \"x\" : \"y\")\n .call(this.d3Axis)\n ;\n if (ignoreText) {\n element.selectAll(\".tick > text\").remove();\n }\n\n const retVal: IOverflow = {\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n depth: 0,\n tickOverlapModulus: this.calcTickOverlapModulus(tmpSvgG)\n };\n this.adjustText(tmpSvgG, retVal.tickOverlapModulus);\n\n const bbox = tmpSvgG.node().getBBox();\n retVal.depth = isHorizontal ? bbox.height : bbox.width;\n switch (this.shrinkToFit()) {\n case \"low\":\n case \"both\":\n retVal.left = isHorizontal ? -bbox.x : 0;\n retVal.bottom = isHorizontal ? 0 : -(this.height() - (bbox.height + bbox.y));\n break;\n default:\n }\n switch (this.shrinkToFit()) {\n case \"high\":\n case \"both\":\n retVal.top = isHorizontal ? 0 : -bbox.y;\n retVal.right = isHorizontal ? -(this.width() - bbox.x - bbox.width) : 0;\n break;\n default:\n }\n tmpSvg.remove();\n\n return retVal;\n }\n\n wrap(_text, bandSize, re) {\n re = re || /\\s+/;\n const context = this;\n _text.each(function () {\n const text = d3Select(this);\n const words = text.text().split(re).reverse();\n let line = [];\n let lineNumber = 0;\n const lineHeight = 1.1;\n const x = text.attr(\"x\");\n const y = text.attr(\"y\");\n const fs = parseFloat(text.style(\"font-size\")) || 10;\n const maxLinesPerBand = Math.floor(bandSize / (fs * lineHeight)) - 1;\n const minWordsPerLine = context.isHorizontal() ? 1 : Math.ceil(words.length / maxLinesPerBand);\n const dy = parseFloat(text.attr(\"dy\"))\n ;\n let tspan = text.text(null).append(\"tspan\")\n .attr(\"x\", x)\n .attr(\"y\", y)\n .attr(\"dy\", dy + \"em\")\n ;\n let wordsOnLine = 0;\n let word = words.pop();\n while (word) {\n line.push(word);\n tspan.text(line.join(\" \"));\n wordsOnLine++;\n if ((tspan.node() as any).getComputedTextLength() > bandSize && wordsOnLine >= minWordsPerLine) {\n line.pop();\n tspan.text(line.join(\" \"));\n line = [word];\n tspan = text.append(\"tspan\").attr(\"x\", x).attr(\"y\", y).attr(\"dy\", ++lineNumber * lineHeight + dy + \"em\").text(word);\n wordsOnLine = 0;\n }\n word = words.pop();\n }\n if (!context.isHorizontal()) {\n text.selectAll(\"tspan\")\n .attr(\"y\", (-lineNumber / 2) + \"em\")\n ;\n }\n });\n }\n\n linebreak(text, bandSize) {\n this.wrap(text, bandSize, \"\\n\");\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this.svg.style(\"display\", this.hidden() ? \"none\" : null);\n\n const overlap = this.calcOverflow(element);\n\n const lowerPos: number = this.isHorizontal() ? overlap.left : this.height() - overlap.top - overlap.bottom;\n const upperPos: number = this.isHorizontal() ? this.width() - overlap.right - this.padding() : 0 + this.padding();\n\n this.range(this.reverse() ? [upperPos, lowerPos] : [lowerPos, upperPos]);\n\n const context = this;\n function doPosition(element) {\n element.attr(\"transform\", function () {\n switch (context.orientation()) {\n case \"left\":\n return \"translate(\" + overlap.depth + \", \" + overlap.top + \")\";\n case \"top\":\n return \"translate(0,\" + overlap.depth + \")\";\n case \"right\":\n return \"translate(\" + (context.width() - overlap.depth) + \", \" + overlap.top + \")\";\n case \"bottom\":\n return \"translate(0,\" + (context.height() - overlap.depth) + \")\";\n default:\n }\n return \"translate(0,0)\";\n });\n }\n this.svg\n // .attr(\"class\", this.isHorizontal() ? \"x\" : \"y\")\n .style(\"visibility\", this.type() === \"none\" ? \"hidden\" : null)\n .transition()\n .call(doPosition)\n ;\n if (this._guideElement) {\n this.svgGuides\n .transition()\n .call(doPosition)\n ;\n }\n this.svgAxis\n .call(this.d3Axis)\n ;\n this.adjustText(this.svgAxis, overlap.tickOverlapModulus);\n\n const svgLineBBox = {\n x: this.pos().x,\n width: this.width()\n };\n const svgText = this.svgAxis.selectAll(\".axisTitle\").data(this.title() ? [this.title()] : []);\n const svgTextUpdate = svgText.enter().append(\"text\")\n .attr(\"class\", \"axisTitle\")\n .merge(svgText)\n ;\n const svgTitleTransition = svgTextUpdate.transition()\n .attr(\"dx\", null)\n .style(\"text-anchor\", \"end\")\n ;\n switch (this.orientation()) {\n case \"left\":\n svgTitleTransition\n .attr(\"transform\", \"rotate(-90)\")\n .attr(\"x\", -2)\n .attr(\"y\", 2)\n .attr(\"dy\", \".71em\")\n ;\n break;\n case \"right\":\n svgTitleTransition\n .attr(\"transform\", \"rotate(-90)\")\n .attr(\"x\", -2)\n .attr(\"y\", 4)\n .attr(\"dx\", null)\n .attr(\"dy\", \"-.71em\")\n ;\n break;\n case \"top\":\n svgTitleTransition\n .attr(\"transform\", \"rotate(0)\")\n .attr(\"x\", svgLineBBox.width - 2)\n .attr(\"y\", 2)\n .attr(\"dx\", null)\n .attr(\"dy\", \".71em\")\n ;\n break;\n case \"bottom\":\n svgTitleTransition\n .attr(\"transform\", \"rotate(0)\")\n .attr(\"x\", svgLineBBox.width - 2)\n .attr(\"y\", -2)\n .attr(\"dy\", null)\n ;\n break;\n default:\n }\n svgTitleTransition\n .text(this.title_exists() ? this.title() : \"\")\n ;\n svgText.exit().remove();\n this.svgGuides\n .call(this.d3Guides)\n .selectAll(\".tick\").classed(\"guide-0\", d => d === 0 && this.low() < 0)\n ;\n }\n\n rerender() {\n this.svgAxis.call(this.d3Axis);\n this.svgGuides.call(this.d3Guides);\n }\n\n postUpdate(domNode, element) {\n super.postUpdate(domNode, element);\n if (this._guideElement) {\n this._guideElement\n .attr(\"transform\", this._element.attr(\"transform\"))\n ;\n }\n }\n}\nAxis.prototype._class += \" chart_Axis\";\n\nexport interface Axis {\n type(): string;\n type(_: string): this;\n type_exists(): boolean;\n timePattern(): string;\n timePattern(_: string): this;\n timePattern_exists(): boolean;\n reverse(): boolean;\n reverse(_: boolean): this;\n\n title(): string;\n title(_: string): this;\n title_exists(): boolean;\n orientation(): string;\n orientation(_: string): this;\n orientation_default(): string;\n orientation_default(_: string): this;\n powExponent(): number;\n powExponent(_: number): this;\n logBase(): number;\n logBase(_: number): this;\n ordinals(): string[];\n ordinals(_: string[]): this;\n ordinals_exists(): boolean;\n fontSize(): number;\n fontSize(_: number): this;\n fontSize_exists(): boolean;\n fontFamily(): string;\n fontFamily(_: string): this;\n tickCount(): number;\n tickCount(_: number): this;\n tickFormat(): string;\n tickFormat(_: string): this;\n tickFormat_exists(): boolean;\n tickFormat_reset(): void;\n tickFormatFunc(fn: (d: any) => string): this;\n tickFormatFunc(): ((d: any) => string) | undefined;\n tickLength(): number;\n tickLength(_: number): this;\n tickLength_exists(): boolean;\n ticks(): Array<{ value: string, label: string }>;\n ticks(_: Array<{ value: string, label: string }>): this;\n low(): any;\n low(_: any): this;\n low_exists(): boolean;\n high(): any;\n high(_: any): this;\n high_exists(): boolean;\n overlapMode(): string;\n overlapMode(_: string): this;\n overlapMode_default(): string;\n overlapMode_default(_: string): this;\n labelRotation(): number;\n labelRotation(_: number): this;\n shrinkToFit(): string;\n shrinkToFit(_: string): this;\n shrinkToFit_default(): string;\n shrinkToFit_default(_: string): this;\n extend(): number;\n extend(_: number): this;\n extend_default(): number;\n extend_default(_: number): this;\n hidden(): boolean;\n hidden(_: boolean): this;\n\n ordinalPaddingInner(): number;\n ordinalPaddingInner(_: number): this;\n ordinalPaddingOuter(): number;\n ordinalPaddingOuter(_: number): this;\n ordinalMappings(_: { [key: string]: string }): this;\n ordinalMappings(): { [key: string]: string };\n ordinalMappings_exists(): boolean;\n padding(): number;\n padding(_: number): this;\n}\n\nAxis.prototype.publish(\"type\", \"linear\", \"set\", \"Type\", [\"none\", \"ordinal\", \"linear\", \"pow\", \"log\", \"time\"]);\nAxis.prototype.publish(\"timePattern\", \"%Y-%m-%d\", \"string\", \"Time Series Pattern\", null, { disable: (w: any) => w.type() !== \"time\" });\nAxis.prototype.publish(\"reverse\", false, \"boolean\", \"Reverse\");\n\nAxis.prototype.publish(\"title\", null, \"string\", \"Title\");\nAxis.prototype.publish(\"orientation\", \"bottom\", \"set\", \"Placement/orientation of the axis\", [\"left\", \"top\", \"right\", \"bottom\"]);\nAxis.prototype.publish(\"powExponent\", 2, \"number\", \"Power exponent (disabled when type is not 'pow')\", null, { disable: (w: any) => w.type() !== \"pow\" });\nAxis.prototype.publish(\"logBase\", 10, \"number\", \"Logarithmic base (disabled when type is not 'log')\", null, { disable: (w: any) => w.type() !== \"log\" });\nAxis.prototype.publish(\"ordinals\", [], \"array\", \"Array of ordinal values to display (disabled when type is not 'ordinal')\", null, { disable: (w: any) => w.type() !== \"ordinal\" });\nAxis.prototype.publish(\"fontSize\", null, \"number\", \"Size of tick label font (pixels)\", null, { optional: true });\nAxis.prototype.publish(\"fontFamily\", null, \"string\", \"Font family of tick labels\", null, { optional: true });\nAxis.prototype.publish(\"tickCount\", null, \"number\", \"Number of ticks to display (disabled when type is 'ordinal')\", null, { optional: true, disable: (w: any) => w.type() === \"ordinal\" });\nAxis.prototype.publish(\"tickFormat\", null, \"string\", \"Format rules for tick text (disabled when type is 'ordinal')\", null, { optional: true, disable: (w: any) => w.type() === \"ordinal\" });\nAxis.prototype.publish(\"tickLength\", null, \"number\", \"Height (or width for left/right orientations) of the axis ticks (in pixels)\", null, { optional: true });\nAxis.prototype.publish(\"ticks\", [], \"array\", \"Custom tick labels\", null, { optional: true }); // TODO: What does this control?\nAxis.prototype.publish(\"low\", null, \"any\", \"Minimum tick value (disabled when type is ordinal)\", null, { optional: true, disable: (w: any) => w.type() === \"ordinal\" });\nAxis.prototype.publish(\"high\", null, \"any\", \"Maximum tick value (disabled when type is ordinal)\", null, { optional: true, disable: (w: any) => w.type() === \"ordinal\" });\nAxis.prototype.publish(\"overlapMode\", \"none\", \"set\", \"Specifies the behavior when tick labels overlap\", [\"none\", \"stagger\", \"hide\", \"rotate\", \"linebreak\", \"wrap\"]);\nAxis.prototype.publish(\"labelRotation\", 33, \"number\", \"Angle of rotation for tick labels (disabled when overlapMode is not 'rotate')\", null, { optional: true, disable: (w: any) => w.overlapMode() !== \"rotate\" });\nAxis.prototype.publish(\"shrinkToFit\", \"both\", \"set\", \"shrinkToFit\", [\"none\", \"low\", \"high\", \"both\"]); // TODO: What does this control?\nAxis.prototype.publish(\"extend\", 5, \"number\", \"Extend the axis range by this % beyond what is needed to display the data (disabled when type is 'ordinal')\", null, { optional: true, disable: (w: any) => w.type() === \"ordinal\" });\nAxis.prototype.publish(\"hidden\", false, \"boolean\", \"Hides axis when 'true'\");\n\nAxis.prototype.publish(\"ordinalPaddingInner\", 0.1, \"number\", \"Determines the ratio of the range that is reserved for blank space between band (0->1)\", null, { disable: (w: Axis) => w.type() !== \"ordinal\" });\nAxis.prototype.publish(\"ordinalPaddingOuter\", 0.1, \"number\", \"Determines the ratio of the range that is reserved for blank space before the first band and after the last band (0->1)\", null, { disable: (w: Axis) => w.type() !== \"ordinal\" });\nAxis.prototype.publish(\"ordinalMappings\", null, \"object\", \"Alternative label mappings (icons)\", null, { optional: true });\nAxis.prototype.publish(\"padding\", 0, \"number\", \"Padding space at top of axis (pixels)\", null, { optional: true });\n\nAxis.prototype._origType = Axis.prototype.type;\nAxis.prototype.type = function (_?: string) {\n const retVal = Axis.prototype._origType.apply(this, arguments);\n if (_ !== undefined) {\n this._type = _;\n this.updateScale();\n }\n return retVal;\n};\n\nAxis.prototype._origTimePattern = Axis.prototype.timePattern;\nAxis.prototype.timePattern = function (_?: string) {\n const retVal = Axis.prototype._origTimePattern.apply(this, arguments);\n if (_ !== undefined) {\n this._timePattern = _;\n this.updateScale();\n }\n return retVal;\n};\n","import { d3Event, select as d3Select, SVGWidget, Utility } from \"@hpcc-js/common\";\nimport { max as d3Max, min as d3Min } from \"d3-array\";\nimport { brush as d3Brush, brushSelection as d3BrushSelection, brushX as d3BrushX, brushY as d3BrushY } from \"d3-brush\";\nimport { hsl as d3Hsl } from \"d3-color\";\nimport { Axis } from \"./Axis.ts\";\n\nimport \"../src/XYAxis.css\";\n\nexport class XYAxis extends SVGWidget {\n protected domainAxis: Axis;\n protected valueAxis: Axis;\n protected xAxis: Axis;\n protected yAxis: Axis;\n protected xyBrush;\n protected xBrush;\n protected yBrush;\n protected margin;\n protected focusChart: XYAxis;\n\n constructor() {\n super();\n Utility.SimpleSelectionMixin.call(this);\n\n this._drawStartPos = \"origin\";\n\n this.domainAxis = new Axis()\n .classed({ domain: true })\n .orientation_default(\"bottom\")\n .type(\"ordinal\")\n .overlapMode_default(\"stagger\")\n .shrinkToFit_default(\"high\")\n .extend_default(0)\n ;\n this.valueAxis = new Axis()\n .classed({ value: true })\n .orientation_default(\"left\")\n .type(\"linear\")\n .shrinkToFit_default(\"high\")\n ;\n\n this.xyBrush = d3Brush()\n .on(\"end\", () => {\n return this.brushMoved();\n })\n .on(\"start.handle brush.handle end.handle\", () => {\n return this.brushMoved2();\n })\n ;\n this.xBrush = d3BrushX()\n .on(\"end\", () => {\n return this.brushMoved();\n })\n .on(\"start.handle brush.handle end.handle\", () => {\n return this.brushMoved2();\n })\n ;\n this.yBrush = d3BrushY()\n .on(\"end\", () => {\n return this.brushMoved();\n })\n .on(\"start.handle brush.handle end.handle\", () => {\n return this.brushMoved2();\n })\n ;\n }\n\n protected _prevBrush;\n resetSelection() {\n this._prevBrush = null;\n return this;\n }\n\n parseData(d) {\n return this.domainAxis.parse(d);\n }\n\n parseValue(d) {\n return this.valueAxis.parse(d, true);\n }\n\n formatData(d) {\n return this.domainAxis.format(d);\n }\n\n formatValue(d) {\n return this.valueAxis.format(d);\n }\n\n parsedData() {\n const retVal = this.data().map(function (row) {\n let prevValue = 0;\n return row.map(function (cell, idx) {\n if (idx === 0) {\n return this.parseData(cell);\n }\n if (idx >= this.columns().length) {\n return cell;\n }\n const _retVal = this.yAxisStacked() ? [prevValue, prevValue + this.parseValue(cell)] : this.parseValue(cell);\n prevValue += this.parseValue(cell);\n return _retVal;\n }, this);\n }, this);\n return retVal;\n }\n\n bandwidth() {\n return this.domainAxis.bandwidth();\n }\n\n protected svg;\n protected svgRegions;\n protected svgDomainGuide;\n protected svgValueGuide;\n protected svgData;\n protected svgDataClipRect;\n protected svgFocus;\n protected svgBrush;\n enter(domNode, element) {\n super.enter(domNode, element);\n this.svg = element.append(\"g\");\n this.svgRegions = element.append(\"g\");\n this.svgDomainGuide = this.svg.append(\"g\");\n this.svgValueGuide = this.svg.append(\"g\");\n this.svgData = this.svg.append(\"g\");\n\n this.svgDataClipRect = this.svg.append(\"clipPath\")\n .attr(\"id\", this.id() + \"_clippath\")\n .append(\"rect\")\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n ;\n this.svgData = this.svg.append(\"g\")\n .attr(\"clip-path\", \"url(#\" + this.id() + \"_clippath)\")\n ;\n this._selection.widgetElement(this.svgData);\n\n this.svgFocus = element.append(\"g\");\n\n this.domainAxis\n .target(this.svg.node())\n .guideTarget(this.svgDomainGuide.node())\n ;\n\n this.valueAxis\n .target(this.svg.node())\n .guideTarget(this.svgValueGuide.node())\n ;\n\n this.svgBrush = element.append(\"g\")\n .attr(\"class\", \"brush\")\n ;\n this.chartsEnter(this, this.svgData, 250);\n }\n\n resizeBrushHandle(d, width, height) {\n let e;\n let x;\n let y;\n if (d.type === \"e\" || d.type === \"w\") {\n e = +(d.type === \"e\");\n x = e ? 1 : -1;\n y = height / 3;\n return \"M\" + (0.5 * x) + \",\" + y +\n \"A6,6 0 0 \" + e + \" \" + (6.5 * x) + \",\" + (y + 6) +\n \"V\" + (2 * y - 6) +\n \"A6,6 0 0 \" + e + \" \" + (0.5 * x) + \",\" + (2 * y) +\n \"Z\" +\n \"M\" + (2.5 * x) + \",\" + (y + 8) +\n \"V\" + (2 * y - 8) +\n \"M\" + (4.5 * x) + \",\" + (y + 8) +\n \"V\" + (2 * y - 8);\n } else {\n e = +(d.type === \"s\");\n y = e ? 1 : -1;\n x = width / 3;\n return \"M\" + x + \", \" + (0.5 * y) +\n \"A6,6 0 0 \" + (e + 1) % 2 + \" \" + (x + 6) + \",\" + (6.5 * y) +\n \"H\" + (2 * x - 6) +\n \"A6,6 0 0 \" + (e + 1) % 2 + \" \" + (2 * x) + \",\" + (0.5 * y) +\n \"Z\" +\n \"M\" + (x + 8) + \",\" + (2.5 * y) +\n \"H\" + (2 * x - 8) +\n \"M\" + (x + 8) + \",\" + (4.5 * y) +\n \"H\" + (2 * x - 8);\n }\n }\n\n private _skipSelection = false;\n skipSelection(): boolean;\n skipSelection(_: boolean): this;\n skipSelection(_?: boolean): boolean | this {\n if (!arguments.length) return this._skipSelection;\n this._skipSelection = _;\n return this;\n }\n\n brushMoved() {\n if (this._skipSelection) return;\n let selected = [];\n const context = this;\n const currSel: any = d3BrushSelection(this.svgBrush.node());\n if (currSel) {\n selected = this.data().filter(function (d) {\n const pos = context.dataPos(d[0]);\n if (context.use2dSelection()) {\n const pos2 = context.valuePos(d[1]) + context.valueAxis.bandwidth() / 2;\n return pos >= currSel[0][0] && pos <= currSel[1][0] && pos2 >= currSel[0][1] && pos2 <= currSel[1][1];\n } else {\n return pos >= currSel[0] && pos <= currSel[1];\n }\n });\n }\n this.selection(selected);\n }\n\n brushMoved2() {\n const isHorizontal = this.orientation() === \"horizontal\";\n const handleTypes = this.use2dSelection() ? [] : isHorizontal ? [{ type: \"w\" }, { type: \"e\" }] : [{ type: \"n\" }, { type: \"s\" }];\n const handlePath = this.svgBrush.selectAll(\".handle--custom\").data(handleTypes);\n const s = d3Event()?.selection;\n if (s == null) {\n handlePath.attr(\"display\", \"none\");\n } else if (isHorizontal) {\n handlePath.attr(\"display\", null).attr(\"transform\", (_d, i) => \"translate(\" + s[i] + \",\" + 0 + \")\");\n } else {\n handlePath.attr(\"display\", null).attr(\"transform\", (_d, i) => \"translate(\" + 0 + \", \" + s[i] + \")\");\n }\n }\n\n dataPos(d) {\n return this.domainAxis.scalePos(d);\n }\n\n valuePos(d) {\n return this.valueAxis.scalePos(d);\n }\n\n getAxisSize(host: XYAxis): { width: number, height: number } {\n return {\n width: !this.xAxis ? host.xAxis.width() : this.xAxis.width(),\n height: !this.yAxis ? host.yAxis.width() : this.yAxis.height()\n };\n }\n\n calcMargin(_domNode, element, isHorizontal) {\n const margin = {\n top: !isHorizontal && this.selectionMode() ? 10 : 2,\n right: isHorizontal && (this.selectionMode() || this.xAxisFocus()) ? 10 : 2,\n bottom: (this.xAxisFocus() ? this.xAxisFocusHeight() : 0) + 2,\n left: 2\n };\n const width = this.width() - margin.left - margin.right;\n const height = this.height() - margin.top - margin.bottom;\n\n let xRight = 0;\n let xHeight = 30;\n let yTop = 0;\n let yWidth = 30;\n for (let i = 0; i < 10; ++i) {\n this.xAxis.width(width - yWidth).height(0);\n const xAxisOverlap = this.xAxis.calcOverflow(element);\n const newXHeight = xAxisOverlap.depth;\n\n this.yAxis.width(0).height(height - xHeight);\n const yAxisOverlap = this.yAxis.calcOverflow(element);\n const newYWidth = yAxisOverlap.depth;\n\n xRight = xAxisOverlap.right;\n yTop = yAxisOverlap.top;\n\n if (newXHeight === xHeight && newYWidth === yWidth) {\n break;\n }\n xHeight = newXHeight;\n yWidth = newYWidth;\n }\n this.xAxis\n .x(width / 2 + yWidth / 2 + margin.left)\n .y(height + margin.top)\n .width(width - yWidth)\n ;\n this.yAxis\n .x(margin.left)\n .y(height / 2 - xHeight / 2 + margin.top)\n .height(height - xHeight)\n ;\n margin.left += yWidth;\n margin.top += yTop;\n margin.right += xRight;\n margin.bottom += xHeight;\n return margin;\n }\n\n updateRegions(_domNode, _element, isHorizontal) {\n const context = this;\n\n const regions = this.svgRegions.selectAll(\".region\").data(this.regions());\n regions.enter().append(\"rect\")\n .attr(\"class\", \"region\")\n ;\n if (isHorizontal) {\n regions\n .attr(\"x\", function (d) { return context.dataPos(d.x0); })\n .attr(\"y\", 0)\n .attr(\"width\", function (d) { return context.dataPos(d.x1) - context.dataPos(d.x0); })\n .attr(\"height\", this.height())\n .style(\"stroke\", function (d) { return context._palette(d.colorID); })\n .style(\"fill\", function (d) { return d3Hsl(context._palette(d.colorID)).brighter(); })\n ;\n } else {\n regions\n .attr(\"x\", 0)\n .attr(\"y\", function (d) { return context.dataPos(d.x0); })\n .attr(\"width\", this.width())\n .attr(\"height\", function (d) { return context.dataPos(d.x0) - context.dataPos(d.x1); })\n .style(\"stroke\", function (d) { return context._palette(d.colorID); })\n .style(\"fill\", function (d) { return d3Hsl(context._palette(d.colorID)).brighter(); })\n ;\n }\n regions.exit().remove();\n }\n\n protected _prevXAxisType;\n update(domNode, element) {\n super.update(domNode, element);\n const context = this;\n\n const isHorizontal = this.orientation() === \"horizontal\";\n this.updateRegions(domNode, element, isHorizontal);\n\n this.domainAxis\n .orientation(isHorizontal ? \"bottom\" : \"left\")\n .title(this.xAxisTitle_exists() ? this.xAxisTitle() : this.columns()[0])\n ;\n this.valueAxis\n .orientation(isHorizontal ? \"left\" : \"bottom\")\n ;\n this.xAxis = isHorizontal ? this.domainAxis : this.valueAxis;\n this.yAxis = isHorizontal ? this.valueAxis : this.domainAxis;\n\n // Update Domain ---\n switch (this.xAxisType()) {\n case \"ordinal\":\n const colLen = this.columns().length;\n const ordinalMappings = {};\n this.domainAxis\n .ordinals(this.data().map(function (d) {\n ordinalMappings[d[0]] = context.xAxisOrdinalMapping(d, d[colLen]);\n return d[0];\n }))\n .ordinalMappings(ordinalMappings)\n ;\n\n break;\n default:\n const domainMin = this.xAxisDomainLow() ? this.xAxisDomainLow() : this.domainAxis.parseInvert(d3Min(this.parsedData(), function (data) {\n return data[0];\n }));\n const domainMax = this.xAxisDomainHigh() ? this.xAxisDomainHigh() : this.domainAxis.parseInvert(d3Max(this.parsedData(), function (data) {\n return data[0];\n }));\n if (domainMin !== undefined && domainMax !== undefined) {\n this.domainAxis\n .low(domainMin)\n .high(domainMax)\n ;\n }\n break;\n }\n\n const min = this.yAxisDomainLow() ? this.yAxisDomainLow() : this.valueAxis.parseInvert(d3Min(this.parsedData(), function (data: any[]) {\n return d3Min(data.filter(function (cell, i) { return i > 0 && context.columns()[i] && context.columns()[i].indexOf(\"__\") !== 0 && cell !== null; }), function (d) { return d instanceof Array ? d[0] : d; });\n }));\n const max = this.yAxisDomainHigh() ? this.yAxisDomainHigh() : this.valueAxis.parseInvert(d3Max(this.parsedData(), function (data: any[]) {\n return d3Max(data.filter(function (cell, i) { return i > 0 && context.columns()[i] && context.columns()[i].indexOf(\"__\") !== 0 && cell !== null; }), function (d) { return d instanceof Array ? d[1] : d; });\n }));\n this.valueAxis\n .low(min)\n .high(max)\n ;\n\n // Calculate Margins ---\n this.margin = this.calcMargin(domNode, element, isHorizontal);\n\n // Update Range ---\n let width = this.width() - this.margin.left - this.margin.right;\n if (width < 0) width = 0;\n let height = this.height() - this.margin.top - this.margin.bottom;\n if (height < 0) height = 0;\n const maxCurrExtent = isHorizontal ? width : height;\n const maxOtherExtent = isHorizontal ? height : width;\n\n // Render ---\n this.domainAxis\n .tickLength(this.xAxisGuideLines() ? maxOtherExtent : 0)\n .render()\n ;\n this.valueAxis\n .tickLength(this.yAxisGuideLines() ? maxCurrExtent : 0)\n .render()\n ;\n\n this.svgDataClipRect\n .attr(\"width\", width)\n .attr(\"height\", height)\n ;\n this.svgData.transition()\n .attr(\"transform\", \"translate(\" + this.margin.left + \",\" + this.margin.top + \")\")\n ;\n\n this.updateBrush(width, height, maxCurrExtent, isHorizontal);\n this.updateFocusChart(domNode, element, this.margin, width, height, isHorizontal);\n this.chartsUpdate(width, height, 250);\n if (this.selectionMode()) {\n return this.brushMoved();\n }\n }\n\n updateBrush(width, height, maxCurrExtent, isHorizontal) {\n const currBrush = this.use2dSelection() ? this.xyBrush : isHorizontal ? this.xBrush : this.yBrush;\n const prevBrushSel: any = d3BrushSelection(this.svgBrush.node());\n currBrush.extent([[0, 0], [width, height]]);\n this.svgBrush\n .attr(\"transform\", \"translate(\" + this.margin.left + \", \" + this.margin.top + \")\")\n .style(\"display\", this.selectionMode() ? null : \"none\")\n .call(currBrush)\n ;\n const handleTypes = this.use2dSelection() ? [] : isHorizontal ? [{ type: \"w\" }, { type: \"e\" }] : [{ type: \"n\" }, { type: \"s\" }];\n const handlePath = this.svgBrush.selectAll(\".handle--custom\").data(handleTypes);\n handlePath.enter().append(\"path\")\n .attr(\"class\", \"handle--custom\")\n .merge(handlePath)\n .attr(\"cursor\", isHorizontal ? \"ew-resize\" : \"ns-resize\")\n .attr(\"d\", (d) => this.resizeBrushHandle(d, width, height))\n ;\n\n if (this.selectionMode()) {\n if (this._prevXAxisType !== this.xAxisType()) {\n this._prevXAxisType = this.xAxisType();\n this._prevBrush = null;\n }\n if (this._prevBrush) {\n if (prevBrushSel) {\n if (this._prevBrush.orientation !== this.orientation()) {\n const tmp = prevBrushSel[0];\n prevBrushSel[0] = this._prevBrush.maxCurrExtent - prevBrushSel[1];\n prevBrushSel[1] = this._prevBrush.maxCurrExtent - tmp;\n }\n const ratio = maxCurrExtent / this._prevBrush.maxCurrExtent;\n if (ratio !== 1) {\n this.svgBrush.transition()\n .on(\"start\", function () {\n currBrush.on(\"end\", null);\n })\n .call(currBrush.move, [prevBrushSel[0] * ratio, prevBrushSel[1] * ratio])\n .on(\"end\", () => {\n currBrush.on(\"end\", () => {\n return this.brushMoved();\n });\n })\n ;\n }\n }\n } else {\n this.svgBrush\n .call(currBrush.move, [0, maxCurrExtent])\n ;\n }\n this._prevBrush = {\n orientation: this.orientation(),\n maxCurrExtent\n };\n }\n }\n\n updateFocusChart(domNode, element, margin, width, height, isHorizontal) {\n const context: XYAxis = this;\n const focusChart = this.svgFocus.selectAll(\"#\" + this.id() + \"_focusChart\").data(this.xAxisFocus() ? [true] : []);\n focusChart.enter().append(\"g\")\n .attr(\"id\", this.id() + \"_focusChart\")\n .attr(\"class\", \"focus\")\n .each(function () {\n context.focusChart = new (context.constructor as any)()\n .target(this)\n ;\n context.focusChart.xBrush\n .on(\"brush.focus\", function () {\n context.syncAxis(width);\n context.chartsUpdate(width, height, 0);\n })\n ;\n context.focusChart\n .layers(context.layers().map((w: any) => new w.constructor()))\n ;\n })\n .merge(focusChart)\n .each(function (this: SVGElement) {\n context.copyPropsTo(context.focusChart, [\"layers\"]);\n let layerIdx = 0;\n for (const layer of context.layers()) {\n layer.copyPropsTo(context.focusChart.layers()[layerIdx]);\n layerIdx++;\n }\n context.focusChart\n .xAxisFocus(false)\n .selectionMode(true)\n .skipSelection(true)\n .orientation(\"horizontal\")\n .xAxisGuideLines(false)\n .xAxisDomainLow(null)\n .xAxisDomainHigh(null)\n .yAxisGuideLines(false)\n .x(context.width() / 2)\n .y(context.height() - context.xAxisFocusHeight() / 2)\n .width(context.width())\n .height(context.xAxisFocusHeight())\n .columns(context.columns())\n .data(context.data())\n .render()\n ;\n context.syncAxis(width);\n })\n ;\n focusChart.exit()\n .each(function () {\n if (context.focusChart) {\n context.focusChart\n .target(null)\n ;\n delete context.focusChart;\n }\n })\n .remove()\n ;\n }\n\n syncAxis(width: number) {\n const currSel = d3BrushSelection(this.focusChart.svgBrush.node()) as [number, number];\n if (currSel) {\n if (this.focusChart.xAxisType() !== \"ordinal\") {\n this.xAxis.domain([this.focusChart.xAxis.invert(currSel[0]), this.focusChart.xAxis.invert(currSel[1])]);\n } else {\n const brushWidth = currSel[1] - currSel[0];\n const scale = brushWidth / width;\n this.xAxis.range([-currSel[0] / scale, (width - currSel[0]) / scale]);\n }\n this.xAxis.rerender();\n }\n }\n\n // Layers ---\n layerColumns(host: XYAxis): string[] {\n const masterColumns = host.columns();\n const retVal = super.columns().filter(col => col !== masterColumns[0]);\n if (!retVal.length) {\n return masterColumns;\n }\n return [masterColumns[0], ...retVal];\n }\n\n layerColumnIndices(host: XYAxis): number[] {\n const masterColumns = host.columns();\n const layerColumns = this.layerColumns(host);\n return layerColumns.map(col => masterColumns.indexOf(col));\n }\n\n layerColumnIndex(host: XYAxis, column: string): number {\n const masterColumns = host.columns();\n return masterColumns.indexOf(column);\n }\n\n layerData(host?: XYAxis): any[][] {\n if (arguments.length === 1) {\n const indices = this.layerColumnIndices(host);\n return host.data().map(row => {\n const retVal = indices.map(idx => row[idx]);\n (retVal as any).__hpcc_origRow = row;\n return retVal;\n });\n }\n throw new Error(\"Setting data on XYAxisLayer is not supported.\");\n }\n\n layerEnter(host: XYAxis, element, duration: number = 250) {\n }\n\n layerUpdate(host: XYAxis, element, duration: number = 250) {\n }\n\n layerExit(host: XYAxis, element, duration: number = 250) {\n }\n\n chartsEnter(host: XYAxis, element, duration: number = 250) {\n this.layerEnter(this, element, duration);\n for (const w of this.layers()) {\n w[\"__xyAxisElement\"] = element.append(\"g\")\n .attr(\"class\", w.class())\n ;\n w\n .target(w[\"__xyAxisElement\"].node() as SVGElement)\n .layerEnter(this, element, duration)\n ;\n }\n }\n\n chartsUpdate(width, height, duration): void {\n this.layerUpdate(this, this.svgData, duration);\n for (const w of this.layers()) {\n w\n .resize({ width, height })\n .layerUpdate(this, w[\"__xyAxisElement\"], duration)\n ;\n }\n }\n\n exit(domNode, element) {\n this.valueAxis.target(null);\n this.domainAxis.target(null);\n super.exit(domNode, element);\n }\n\n selection(_selected) {\n const context = this;\n this._selection.widgetElement().selectAll(\".selected,.deselected\")\n .each(function (d) {\n const selected = _selected.indexOf(d.origRow) >= 0;\n d3Select(this)\n .classed(\"selected\", selected)\n .classed(\"deselected\", !selected)\n .attr(\"filter\", context._selection.svgGlowID() && selected ? `url(#${context._selection.svgGlowID()})` : null)\n ;\n })\n ;\n\n const selRows = _selected.map(d => {\n return this.rowToObj(d);\n });\n setTimeout(() => {\n this.click(selRows, \"\", true);\n }, 0);\n }\n\n // XYAxis ---\n xAxisOrdinalMapping(origRow, lparam) {\n return origRow[0];\n }\n\n // Events ---\n click(row, column, selected) {\n // console.log(\"Click: \" + JSON.stringify(row) + \", \" + column + \", \" + selected);\n }\n\n // Selection ---\n _selection: Utility.SimpleSelection;\n}\nXYAxis.prototype._class += \" chart_XYAxis\";\nXYAxis.prototype.mixin(Utility.SimpleSelectionMixin);\n\nexport interface XYAxis {\n _palette;\n orientation(): \"horizontal\" | \"vertical\";\n orientation(_: \"horizontal\" | \"vertical\"): this;\n orientation_default(_: string);\n pointSizeColumn(): string;\n pointSizeColumn(_: string): this;\n pointSizeColumn_exists(): boolean;\n minPointSize(): number;\n minPointSize(_: number): this;\n maxPointSize(): number;\n maxPointSize(_: number): this;\n use2dSelection(): boolean;\n use2dSelection(_: boolean): this;\n selectionMode(): boolean;\n selectionMode(_: boolean): this;\n xAxisTitle(): string;\n xAxisTitle(_: string): this;\n xAxisTitle_exists(): boolean;\n xAxisTickCount(): number;\n xAxisTickCount(_: number): this;\n xAxisTickFormat(): string;\n xAxisTickFormat(_: string): this;\n xAxisTicks(): Array<{ value: string, label: string }>;\n xAxisTicks(_: Array<{ value: string, label: string }>): this;\n xAxisType(): \"none\" | \"ordinal\" | \"linear\" | \"pow\" | \"log\" | \"time\";\n xAxisType(_: \"none\" | \"ordinal\" | \"linear\" | \"pow\" | \"log\" | \"time\"): this;\n xAxisType_default(_: string);\n xAxisTypeTimePattern(): string;\n xAxisTypeTimePattern(_: string): this;\n xAxisDomainLow(): number | string;\n xAxisDomainLow(_: number | string): this;\n xAxisDomainHigh(): number | string;\n xAxisDomainHigh(_: number | string): this;\n xAxisFontSize(): number | string;\n xAxisFontSize(_: number | string): this;\n xAxisFontFamily(): string;\n xAxisFontFamily(_: string): this;\n xAxisOrdinalPaddingInner(): number;\n xAxisOrdinalPaddingInner(_: number): this;\n xAxisOrdinalPaddingOuter(): number;\n xAxisOrdinalPaddingOuter(_: number): this;\n xAxisOverlapMode(): \"none\" | \"stagger\" | \"hide\" | \"rotate\" | \"linebreak\" | \"wrap\";\n xAxisOverlapMode(_: \"none\" | \"stagger\" | \"hide\" | \"rotate\" | \"linebreak\" | \"wrap\"): this;\n xAxisLabelRotation(): number;\n xAxisLabelRotation(_: number): this;\n xAxisDomainPadding(): number;\n xAxisDomainPadding(_: number): this;\n xAxisGuideLines(): boolean;\n xAxisGuideLines(_: boolean): this;\n xAxisGuideLines_default(_: boolean);\n xAxisFocus(): boolean;\n xAxisFocus(_: boolean): this;\n xAxisFocusHeight(): number;\n xAxisFocusHeight(_: number): this;\n xAxisHidden(): boolean;\n xAxisHidden(_: boolean): this;\n xAxisHidden_default(_: boolean);\n yAxisTitle(): string;\n yAxisTitle(_: string): this;\n yAxisTickCount(): number;\n yAxisTickCount(_: number): this;\n yAxisTickFormat(): string;\n yAxisTickFormat(_: string): this;\n yAxisTicks(): Array<{ value: string, label: string }>;\n yAxisTicks(_: Array<{ value: string, label: string }>): this;\n yAxisType(): \"none\" | \"ordinal\" | \"linear\" | \"pow\" | \"log\" | \"time\";\n yAxisType(_: \"none\" | \"ordinal\" | \"linear\" | \"pow\" | \"log\" | \"time\"): this;\n yAxisType_default(_: string);\n yAxisTypeTimePattern(): string;\n yAxisTypeTimePattern(_: string): this;\n yAxisTypePowExponent(): number;\n yAxisTypePowExponent(_: number): this;\n yAxisTypeLogBase(): number;\n yAxisTypeLogBase(_: number): this;\n yAxisStacked(): boolean;\n yAxisStacked(_: boolean): this;\n yAxisDomainLow(): number | string;\n yAxisDomainLow(_: number | string): this;\n yAxisDomainHigh(): number | string;\n yAxisDomainHigh(_: number | string): this;\n yAxisDomainPadding(): number;\n yAxisDomainPadding(_: number): this;\n yAxisGuideLines(): boolean;\n yAxisGuideLines(_: boolean): this;\n yAxisGuideLines_default(_: boolean);\n yAxisHidden(): boolean;\n yAxisHidden(_: boolean): this;\n yAxisHidden_default(_: boolean);\n regions(): object[];\n regions(_: object[]): this;\n layers(): XYAxis[];\n layers(_: XYAxis[]): this;\n xAxisPadding(): number;\n xAxisPadding(_: number): this;\n yAxisPadding(): number;\n yAxisPadding(_: number): this;\n}\n\nXYAxis.prototype.publish(\"orientation\", \"horizontal\", \"set\", \"Selects orientation for the axis\", [\"horizontal\", \"vertical\"]);\nXYAxis.prototype.publish(\"pointSizeColumn\", null, \"string\", \"pointSizeColumn\", null, { optional: true });\nXYAxis.prototype.publish(\"minPointSize\", 6, \"number\", \"minPointSize\");\nXYAxis.prototype.publish(\"maxPointSize\", 26, \"number\", \"maxPointSize\");\nXYAxis.prototype.publish(\"use2dSelection\", false, \"boolean\", \"2D Range Selector\");\nXYAxis.prototype.publish(\"selectionMode\", false, \"boolean\", \"Range Selector\");\nXYAxis.prototype.publishProxy(\"xAxisTitle\", \"domainAxis\", \"title\");\nXYAxis.prototype.publishProxy(\"xAxisTickCount\", \"domainAxis\", \"tickCount\");\nXYAxis.prototype.publishProxy(\"xAxisTickFormat\", \"domainAxis\", \"tickFormat\");\nXYAxis.prototype.publishProxy(\"xAxisTicks\", \"domainAxis\", \"ticks\");\nXYAxis.prototype.publishProxy(\"xAxisType\", \"domainAxis\", \"type\");\nXYAxis.prototype.publishProxy(\"xAxisTypeTimePattern\", \"domainAxis\", \"timePattern\");\nXYAxis.prototype.publish(\"xAxisDomainLow\", null, \"string\", \"X-Axis Low\", null, { optional: true, disable: (w: XYAxis) => w.xAxisType() === \"ordinal\" });\nXYAxis.prototype.publish(\"xAxisDomainHigh\", null, \"string\", \"X-Axis High\", null, { optional: true, disable: (w: XYAxis) => w.xAxisType() === \"ordinal\" });\nXYAxis.prototype.publishProxy(\"xAxisFontSize\", \"domainAxis\", \"fontSize\");\nXYAxis.prototype.publishProxy(\"xAxisFontFamily\", \"domainAxis\", \"fontFamily\");\nXYAxis.prototype.publishProxy(\"xAxisOrdinalPaddingInner\", \"domainAxis\", \"ordinalPaddingInner\");\nXYAxis.prototype.publishProxy(\"xAxisOrdinalPaddingOuter\", \"domainAxis\", \"ordinalPaddingOuter\");\nXYAxis.prototype.publishProxy(\"xAxisOverlapMode\", \"domainAxis\", \"overlapMode\");\nXYAxis.prototype.publishProxy(\"xAxisLabelRotation\", \"domainAxis\", \"labelRotation\");\nXYAxis.prototype.publishProxy(\"xAxisDomainPadding\", \"domainAxis\", \"extend\");\nXYAxis.prototype.publish(\"xAxisGuideLines\", false, \"boolean\", \"Y-Axis Guide Lines\");\nXYAxis.prototype.publish(\"xAxisFocus\", false, \"boolean\", \"X-Axis Focus\", null, { disable: (w: any) => w.orientation() !== \"horizontal\" });\nXYAxis.prototype.publish(\"xAxisFocusHeight\", 80, \"number\", \"X-Axis Focus Height\", null, { disable: (w: any) => !w.xAxisFocus() });\nXYAxis.prototype.publishProxy(\"xAxisHidden\", \"domainAxis\", \"hidden\");\nXYAxis.prototype.publishProxy(\"yAxisFontSize\", \"valueAxis\", \"fontSize\");\nXYAxis.prototype.publishProxy(\"yAxisFontFamily\", \"valueAxis\", \"fontFamily\");\nXYAxis.prototype.publishProxy(\"yAxisTitle\", \"valueAxis\", \"title\");\nXYAxis.prototype.publishProxy(\"yAxisTickCount\", \"valueAxis\", \"tickCount\");\nXYAxis.prototype.publishProxy(\"yAxisTickFormat\", \"valueAxis\", \"tickFormat\");\nXYAxis.prototype.publishProxy(\"yAxisTicks\", \"valueAxis\", \"ticks\");\nXYAxis.prototype.publishProxy(\"yAxisType\", \"valueAxis\", \"type\");\nXYAxis.prototype.publishProxy(\"yAxisTypeTimePattern\", \"valueAxis\", \"timePattern\");\nXYAxis.prototype.publishProxy(\"yAxisTypePowExponent\", \"valueAxis\", \"powExponent\");\nXYAxis.prototype.publishProxy(\"yAxisTypeLogBase\", \"valueAxis\", \"logBase\");\nXYAxis.prototype.publish(\"yAxisStacked\", false, \"boolean\", \"Stacked Chart\", null, { tags: [\"Basic\"], disable: (w: any) => w.xAxisType() !== \"ordinal\" || w._class.indexOf(\"chart_Column\") < 0 });\nXYAxis.prototype.publish(\"yAxisDomainLow\", null, \"string\", \"Y-Axis Low\", null, { optional: true, disable: (w: any) => w.yAxisType() === \"ordinal\" });\nXYAxis.prototype.publish(\"yAxisDomainHigh\", null, \"string\", \"Y-Axis High\", null, { optional: true, disable: (w: any) => w.yAxisType() === \"ordinal\" });\nXYAxis.prototype.publishProxy(\"yAxisDomainPadding\", \"valueAxis\", \"extend\");\nXYAxis.prototype.publish(\"yAxisGuideLines\", true, \"boolean\", \"Y-Axis Guide Lines\");\nXYAxis.prototype.publishProxy(\"yAxisHidden\", \"valueAxis\", \"hidden\");\nXYAxis.prototype.publish(\"regions\", [], \"array\", \"Regions\");\nXYAxis.prototype.publish(\"layers\", [], \"widgetArray\", \"Layers\", null, { render: false });\nXYAxis.prototype.publishProxy(\"xAxisPadding\", \"domainAxis\", \"padding\");\nXYAxis.prototype.publishProxy(\"yAxisPadding\", \"valueAxis\", \"padding\");\n","import { INDChart, ITooltip } from \"@hpcc-js/api\";\nimport { InputField } from \"@hpcc-js/common\";\nimport { extent as d3Extent } from \"d3-array\";\nimport { scaleLinear as d3ScaleLinear, scaleLog as d3ScaleLog, scalePow as d3ScalePow, scaleSqrt as d3ScaleSqrt } from \"d3-scale\";\nimport { select as d3Select } from \"d3-selection\";\nimport {\n area as d3Area,\n curveBasis as d3CurveBasis, curveBundle as d3CurveBundle, curveCardinal as d3CurveCardinal, curveCatmullRom as d3curveCatmullRom, curveLinear as d3CurveLinear,\n curveMonotoneX as d3CurveMonotoneX, curveNatural as d3CurveNatural, curveStep as d3CurveStep, curveStepAfter as d3CurveStepAfter, curveStepBefore as d3CurveStepBefore,\n line as d3Line\n} from \"d3-shape\";\nimport { XYAxis } from \"./XYAxis.ts\";\n\nimport \"../src/Scatter.css\";\n\nexport class Scatter extends XYAxis {\n static __inputs: InputField[] = [{\n id: \"label\",\n type: \"any\"\n }, {\n id: \"values\",\n type: \"number\",\n multi: true\n }];\n\n constructor() {\n super();\n INDChart.call(this);\n ITooltip.call(this);\n this\n .xAxisGuideLines_default(true)\n .yAxisGuideLines_default(true)\n ;\n }\n\n xPos(host: XYAxis, d) {\n return host.orientation() === \"horizontal\" ? host.dataPos(d.label) : host.valuePos(d.value);\n }\n\n yPos(host: XYAxis, d) {\n return host.orientation() === \"horizontal\" ? host.valuePos(d.value) : host.dataPos(d.label);\n }\n\n private curve(): any {\n switch (this.interpolate()) {\n case \"linear\":\n return d3CurveLinear;\n case \"step\":\n return d3CurveStep;\n case \"step-before\":\n return d3CurveStepBefore;\n case \"step-after\":\n return d3CurveStepAfter;\n case \"basis\":\n return d3CurveBasis;\n case \"bundle\":\n return d3CurveBundle;\n case \"cardinal\":\n return d3CurveCardinal;\n case \"catmullRom\":\n return d3curveCatmullRom;\n case \"natural\":\n return d3CurveNatural;\n case \"monotone\":\n default:\n return d3CurveMonotoneX;\n }\n }\n\n private getScale() {\n switch (this.pointSizeScale()) {\n case \"linear\":\n return d3ScaleLinear();\n case \"pow\":\n return d3ScalePow().exponent(2);\n case \"log\":\n return d3ScaleLog();\n case \"sqrt\":\n return d3ScaleSqrt();\n }\n }\n\n protected pointColor(row, col, value, origRow) {\n if (this.interpolate() && this.pointDarken()) {\n return this.strokeColor(row, col, value, origRow);\n }\n return this.fillColor(row, col, value, origRow);\n }\n\n protected lineColor(row, col, value, origRow) {\n if (this.interpolateFill() && this.interpolateDarken()) {\n return this.strokeColor(row, col, value, origRow);\n }\n return this.fillColor(row, col, value, origRow);\n }\n\n protected areaColor(row, col, value, origRow) {\n return this.fillColor(row, col, value, origRow);\n }\n\n layerEnter(host: XYAxis, element, duration: number = 250) {\n super.layerEnter(host, element, duration);\n const context = this;\n this\n .tooltipHTML(function (d) {\n switch (context.tooltipStyle()) {\n case \"series-table\":\n return context.tooltipFormat({\n label: d.label,\n arr: context.columns().slice(1).map(function (column, i) {\n return {\n label: column,\n color: context._palette(column),\n value: context.data()[d.rowIdx][i + 1]\n };\n })\n });\n default:\n return context.tooltipFormat({ label: d.label, series: d.column, value: d.value });\n }\n })\n ;\n }\n\n protected _prevPointShape;\n layerUpdate(host: XYAxis, element, duration: number = 250) {\n super.layerUpdate(host, element);\n const isHorizontal = host.orientation() === \"horizontal\";\n const height = isHorizontal ? this.height() : this.width();\n const context = this;\n\n this._palette = this._palette.switch(this.paletteID());\n if (this.useClonedPalette()) {\n this._palette = this._palette.cloneNotExists(this.paletteID() + \"_\" + this.id());\n }\n\n if (this._prevPointShape !== this.pointShape()) {\n element.selectAll(\".data\").remove();\n this._prevPointShape = this.pointShape();\n }\n\n function mapShape(shape) {\n switch (shape) {\n case \"rectangle\":\n return \"rect\";\n case \"circle\":\n return \"circle\";\n case \"cross\":\n return \"path\";\n default:\n }\n }\n const usePointSizeColumn = this.pointSizeColumn_exists();\n let pointSizeColumnIdx;\n let extent;\n let scale;\n if (usePointSizeColumn) {\n pointSizeColumnIdx = this.columns().indexOf(this.pointSizeColumn());\n extent = d3Extent(this.data(), d => d[pointSizeColumnIdx]);\n scale = this.getScale().domain(extent);\n }\n const layerColumns = this.layerColumns(host);\n const layerData = this.layerData(host);\n const flatData = this.flattenData(layerColumns, layerData).map(function (d) {\n d.shape = mapShape(context.pointShape());\n d.column = layerColumns[d.colIdx];\n d.row = layerData[d.rowIdx];\n d.origRow = (layerData[d.rowIdx] as any).__hpcc_origRow;\n if (extent) {\n d.size = scale(d.row[pointSizeColumnIdx]) * (context.maxPointSize() - context.minPointSize()) + context.minPointSize();\n return d.column === context.pointSizeColumn() ? false : d;\n } else {\n d.size = context.pointSize();\n return d;\n }\n\n }).filter(d => d);\n\n const areas = element.selectAll(\".area\").data(layerColumns.filter(function (_d, idx) { return context.interpolate() && context.interpolateFill() && idx > 0; }));\n const areasEnter = areas.enter().append(\"path\");\n const area = d3Area()\n .curve(this.curve())\n ;\n if (isHorizontal) {\n area\n .x(function (d) { return context.xPos(host, d); })\n .y0(Math.min(height, this.yPos(host, { value: 0 })))\n .y1(function (d) { return context.yPos(host, d); })\n ;\n } else {\n area\n .y(function (d) { return context.yPos(host, d); })\n .x0(Math.max(0, this.xPos(host, { value: 0 })))\n .x1(function (d) { return context.xPos(host, d); })\n ;\n }\n areasEnter.merge(areas)\n .attr(\"class\", d => \"area series series-\" + this.cssTag(d))\n .each(function (_d, idx) {\n const element = d3Select(this);\n element\n .attr(\"d\", area(flatData.filter(function (d2) { return d2.colIdx === idx + 1; })))\n .style(\"opacity\", context.interpolateFillOpacity())\n .style(\"stroke\", \"none\")\n .style(\"fill\", context.areaColor([], _d, undefined, []))\n ;\n });\n areas.exit().remove();\n\n const lines = element.selectAll(\".line\").data(layerColumns.filter(function (_d, idx) { return context.interpolate() && idx > 0; }));\n const linesEnter = lines.enter().append(\"path\");\n const line = d3Line()\n .x(function (d) { return context.xPos(host, d); })\n .y(function (d) { return context.yPos(host, d); })\n .curve(this.curve())\n ;\n linesEnter.merge(lines)\n .attr(\"class\", d => \"line series series-\" + this.cssTag(d))\n .each(function (_d, idx) {\n const element = d3Select(this);\n const data2 = flatData.filter(function (d2) { return d2.colIdx === idx + 1; });\n element\n .attr(\"d\", line(data2))\n .style(\"stroke\", context.lineColor([], _d, undefined, []))\n .style(\"fill\", \"none\")\n ;\n });\n lines.exit().remove();\n\n const points = element.selectAll(\".point\").data(flatData, function (d, idx) { return d.shape + \"_\" + idx; });\n points.enter().append(\"g\")\n .each(function (this: SVGElement, d2) {\n const element = d3Select(this);\n element\n .append(d2.shape)\n .attr(\"class\", \"pointShape\")\n ;\n element\n .append(\"text\")\n .attr(\"class\", \"pointValue\")\n .style(\"display\", \"none\")\n .attr(\"text-anchor\", context.valueAnchor())\n .attr(\"alignment-baseline\", context.valueBaseline())\n .attr(\"fill\", function (d: any, _idx) {\n const useTextColor = context.valueBaseline() === \"middle\" || context.valueBaseline() === \"central\";\n return useTextColor ? context.textColor(d.row, d.column, d.value, d.origRow) : null;\n })\n ;\n element\n .append(\"circle\")\n .attr(\"class\", \"pointSelection\")\n .on(\"mouseout.tooltip\", context.tooltip.hide)\n .on(\"mousemove.tooltip\", context.tooltip.show)\n .call(host._selection.enter.bind(host._selection))\n .on(\"click\", function (d: any, _idx) {\n context.click(host.rowToObj(host.data()[d.rowIdx]), d.column, host._selection.selected(this));\n })\n .on(\"dblclick\", function (d: any, _idx) {\n context.dblclick(host.rowToObj(host.data()[d.rowIdx]), d.column, host._selection.selected(this));\n })\n ;\n })\n .merge(points)\n .attr(\"class\", d => \"point series series-\" + this.cssTag(d.column))\n .each(function (this: SVGElement, d2) {\n const textSelection = d3Select(this).select(\".pointValue\");\n textSelection\n .attr(\"x\", function (d) { return context.xPos(host, d); })\n .attr(\"y\", function (d) { return context.yPos(host, d); })\n .style(\"display\", context.showValue() ? \"block\" : \"none\")\n .attr(\"text-anchor\", context.valueAnchor())\n .attr(\"alignment-baseline\", context.valueBaseline())\n .text(function (d) {\n return d[\"value\"];\n })\n ;\n const elementSelection = d3Select(this).select(\".pointSelection\");\n elementSelection\n .attr(\"cx\", function (d) { return context.xPos(host, d); })\n .attr(\"cy\", function (d) { return context.yPos(host, d); })\n .attr(\"r\", d2.size)\n ;\n\n const element = d3Select(this).select(\".pointShape\");\n switch (d2.shape) {\n case \"rect\":\n element\n .attr(\"x\", function (d) { return context.xPos(host, d) - d2.size / 2; })\n .attr(\"y\", function (d) { return context.yPos(host, d) - d2.size / 2; })\n .attr(\"width\", d2.size)\n .attr(\"height\", d2.size)\n .style(\"fill\", context.pointColor(d2.row, d2.column, d2.value, d2.origRow))\n ;\n break;\n case \"circle\":\n element\n .attr(\"cx\", function (d) { return context.xPos(host, d); })\n .attr(\"cy\", function (d) { return context.yPos(host, d); })\n .attr(\"r\", d2.size * 0.9)\n .style(\"fill\", context.pointColor(d2.row, d2.column, d2.value, d2.origRow))\n ;\n break;\n case \"path\":\n element\n .attr(\"d\", function (d: any) {\n return \"M\" + (context.xPos(host, d) - d2.size / 2) + \" \" + (context.yPos(host, d) - d2.size / 2) + \" \" +\n \"L\" + (context.xPos(host, d) + d2.size / 2) + \" \" + (context.yPos(host, d) + d2.size / 2) + \" \" +\n \"M\" + (context.xPos(host, d) - d2.size / 2) + \" \" + (context.yPos(host, d) + d2.size / 2) + \" \" +\n \"L\" + (context.xPos(host, d) + d2.size / 2) + \" \" + (context.yPos(host, d) - d2.size / 2);\n })\n .style(\"stroke\", context.pointColor(d2.row, d2.column, d2.value, d2.origRow))\n ;\n break;\n default:\n }\n })\n ;\n points.exit().remove();\n }\n\n exit(domNode, element) {\n super.exit(domNode, element);\n }\n}\nScatter.prototype._class += \" chart_Scatter\";\nScatter.prototype.implements(INDChart.prototype);\nScatter.prototype.implements(ITooltip.prototype);\n\nexport interface Scatter {\n\n valueAnchor(): string;\n valueAnchor(_: string): this;\n valueBaseline(): string;\n valueBaseline(_: string): this;\n showValue(): boolean;\n showValue(_: boolean): this;\n pointDarken(): boolean;\n pointDarken(_: boolean): this;\n interpolateDarken(): boolean;\n interpolateDarken(_: boolean): this;\n\n paletteID(): string;\n paletteID(_: string): this;\n useClonedPalette(): boolean;\n useClonedPalette(_: boolean): this;\n pointSizeScale(): string;\n pointSizeScale(_: string): this;\n pointShape(): string;\n pointShape(_: string): this;\n pointSize(): number;\n pointSize(_: number): this;\n interpolate(): string;\n interpolate(_: string): this;\n interpolate_default(): string;\n interpolate_default(_: string): this;\n interpolateFill(): boolean;\n interpolateFill(_: boolean): this;\n interpolateFill_default(): boolean;\n interpolateFill_default(_: boolean): this;\n interpolateFillOpacity(): number;\n interpolateFillOpacity(_: number): this;\n\n // INDChart\n fillColor(row, column, value, origRow): string;\n strokeColor(row, column, value, origRow): string;\n textColor(row, column, value, origRow): string;\n dblclick(row, column, selected): void;\n\n // ITooltip\n tooltip;\n tooltipHTML(_): string;\n tooltipFormat(_): string;\n tooltipStyle(): \"default\" | \"none\" | \"series-table\";\n}\nScatter.prototype.publish(\"paletteID\", \"default\", \"set\", \"Color palette for this widget\", Scatter.prototype._palette.switch(), { tags: [\"Basic\", \"Shared\"] });\nScatter.prototype.publish(\"pointSizeScale\", \"linear\", \"set\", \"pointSizeScale\", [\"linear\", \"pow\", \"log\", \"sqrt\"]);\nScatter.prototype.publish(\"pointShape\", \"cross\", \"set\", \"Shape of the data points\", [\"circle\", \"rectangle\", \"cross\"]);\nScatter.prototype.publish(\"pointSize\", 6, \"number\", \"Point Size\", null, { range: { min: 1, step: 1, max: 200 } });\nScatter.prototype.publish(\"interpolate\", \"\", \"set\", \"Interpolate Data\", [\"\", \"linear\", \"step\", \"step-before\", \"step-after\", \"basis\", \"bundle\", \"cardinal\", \"catmullRom\", \"natural\", \"monotone\"]);\nScatter.prototype.publish(\"pointDarken\", true, \"boolean\", \"If true, and interpolate is set, then points will have a slightly darker color than their assigned palette color\", null, { disable: w => !w.interpolate() });\nScatter.prototype.publish(\"interpolateDarken\", true, \"boolean\", \"If true, and interpolateFill is true, then lines will have a slightly darker color than their assigned palette color\", null, { disable: w => !w.interpolateFill() });\nScatter.prototype.publish(\"interpolateFill\", false, \"boolean\", \"If true, the area between the line and zero will be filled\");\nScatter.prototype.publish(\"interpolateFillOpacity\", 0.66, \"number\", \"Fill interpolation Opacity\", null, { range: { min: 0, step: 0.01, max: 1 } });\nScatter.prototype.publish(\"useClonedPalette\", false, \"boolean\", \"Enable or disable using a cloned palette\", null, { tags: [\"Intermediate\", \"Shared\"] });\nScatter.prototype.publish(\"showValue\", false, \"boolean\");\nScatter.prototype.publish(\"valueAnchor\", \"middle\", \"set\", \"text-anchor for shown value text\", [\"start\", \"middle\", \"end\"]);\nScatter.prototype.publish(\"valueBaseline\", \"ideographic\", \"set\", \"alignment-baseline for shown value text\", [\"auto\", \"baseline\", \"before-edge\", \"text-before-edge\", \"middle\", \"central\", \"after-edge\", \"text-after-edge\", \"ideographic\", \"alphabetic\", \"hanging\", \"mathematical\", \"inherit\"]);\n","import { Scatter } from \"./Scatter.ts\";\n\nexport class Area extends Scatter {\n constructor() {\n super();\n this\n .interpolate_default(\"linear\")\n .interpolateFill_default(true)\n ;\n }\n}\nArea.prototype._class += \" chart_Area\";\n","import { INDChart, ITooltip } from \"@hpcc-js/api\";\nimport { InputField, Text } from \"@hpcc-js/common\";\nimport { format as d3Format } from \"d3-format\";\nimport { scaleBand as d3ScaleBand } from \"d3-scale\";\nimport { local as d3Local, select as d3Select } from \"d3-selection\";\nimport { XYAxis } from \"./XYAxis.ts\";\n\nimport \"../src/Column.css\";\n\nexport class Column extends XYAxis {\n static __inputs: InputField[] = [{\n id: \"label\",\n type: \"string\"\n }, {\n id: \"values\",\n type: \"number\",\n multi: true\n }];\n\n protected _linearGap: number;\n private textLocal = d3Local<Text>();\n private stackedTextLocal = d3Local<Text>();\n private isHorizontal: boolean;\n\n constructor() {\n super();\n INDChart.call(this);\n ITooltip.call(this);\n\n this._selection.skipBringToTop(true);\n\n this._linearGap = 25.0;\n }\n\n layerEnter(host: XYAxis, element, duration: number = 250) {\n super.layerEnter(host, element, duration);\n const context = this;\n this\n .tooltipHTML(function (d) {\n switch (context.tooltipStyle()) {\n case \"series-table\":\n return context.tooltipFormat({\n label: d.row[0],\n arr: context.columns().slice(1).map(function (column, i) {\n return {\n label: column,\n color: context._palette(column),\n value: d.row[i + 1]\n };\n })\n });\n default:\n let value = d.row[d.idx];\n if (value instanceof Array) {\n value = value[1] - value[0];\n }\n return context.tooltipFormat({ label: d.row[0], series: context.layerColumns(host)[d.idx], value });\n }\n })\n ;\n }\n\n adjustedData(host: XYAxis) {\n const retVal = this.layerData(host).map(row => {\n let prevValue = 0;\n return row.map((cell, idx) => {\n if (idx === 0) {\n return cell;\n }\n if (idx >= this.layerColumns(host).length) {\n return cell;\n }\n const retVal2 = host.yAxisStacked() ? [prevValue, prevValue + cell] : cell;\n prevValue += cell;\n return retVal2;\n }, this);\n }, this);\n return retVal;\n }\n\n layerUpdate(host: XYAxis, element, duration: number = 250) {\n super.layerUpdate(host, element, duration);\n const isHorizontal = host.orientation() === \"horizontal\";\n this.isHorizontal = isHorizontal;\n const context = this;\n\n this._palette = this._palette.switch(this.paletteID());\n if (this.useClonedPalette()) {\n this._palette = this._palette.cloneNotExists(this.paletteID() + \"_\" + this.id());\n }\n const formatPct = d3Format(context.showValueAsPercentFormat());\n\n let dataLen = 10;\n let offset = 0;\n switch (host.xAxisType()) {\n case \"ordinal\":\n dataLen = host.bandwidth();\n offset = -dataLen / 2;\n break;\n case \"linear\":\n case \"time\":\n dataLen = Math.max(Math.abs(host.dataPos(2) - host.dataPos(1)) * (100 - this._linearGap) / 100, dataLen);\n offset = -dataLen / 2;\n break;\n default:\n }\n\n this.tooltip.direction(isHorizontal ? \"n\" : \"e\");\n\n const columnScale = d3ScaleBand()\n .domain(context.layerColumns(host).filter(function (_d, idx) { return idx > 0; }))\n .rangeRound(isHorizontal ? [0, dataLen] : [dataLen, 0])\n .paddingInner(this.xAxisSeriesPaddingInner())\n .paddingOuter(0)\n ;\n let domainSums = [];\n const seriesSums = [];\n const columnLength = this.columns().length;\n const rowData = this.data();\n if (this.showValue() && this.showValueAsPercent() === \"series\") {\n rowData.forEach((row) => {\n row.filter((_, idx) => idx > 0 && idx < columnLength).forEach((col, idx) => {\n if (seriesSums[idx + 1] === undefined) {\n seriesSums[idx + 1] = 0;\n }\n seriesSums[idx + 1] += col;\n });\n });\n }\n\n if (this.showDomainTotal() || (this.showValue() && this.showValueAsPercent() === \"domain\")) {\n domainSums = rowData.map(row => {\n return row.filter((cell, idx) => idx > 0 && idx < columnLength).reduce((sum, cell) => {\n return sum + cell;\n }, 0);\n });\n }\n\n const column = element.selectAll(\".dataRow\")\n .data(this.adjustedData(host))\n ;\n const hostData = host.data();\n const axisSize = this.getAxisSize(host);\n column.enter().append(\"g\")\n .attr(\"class\", \"dataRow\")\n .merge(column)\n .each(function (dataRow, dataRowIdx) {\n const element = d3Select(this);\n\n const columnGRect = element.selectAll(\".dataCell\").data(dataRow.filter(function (_d, i) { return i < context.layerColumns(host).length; }).map(function (d, i) {\n return {\n column: context.layerColumns(host)[i],\n row: dataRow,\n origRow: hostData[dataRowIdx],\n value: d,\n idx: i\n };\n }).filter(function (d) { return d.value !== null && d.idx > 0; }), (d: any) => d.column);\n\n const columnGEnter = columnGRect\n .enter().append(\"g\")\n .attr(\"class\", \"dataCell\")\n .on(\"mouseout.tooltip\", function (d: any) {\n if (!context.tooltipInnerTextEllipsedOnly() || (d.innerTextObj && d.innerTextObj.isTruncated)) {\n context.tooltip.hide.apply(context, arguments);\n }\n })\n .on(\"mousemove.tooltip\", function (d: any) {\n if (!context.tooltipInnerTextEllipsedOnly() || (d.innerTextObj && d.innerTextObj.isTruncated)) {\n context.tooltip.show.apply(context, arguments);\n }\n })\n .call(host._selection.enter.bind(host._selection))\n .on(\"click\", function (d: any) {\n context.click(host.rowToObj(d.origRow), d.column, host._selection.selected(this));\n })\n .on(\"dblclick\", function (d: any) {\n context.dblclick(host.rowToObj(d.origRow), d.column, host._selection.selected(this));\n })\n .style(\"opacity\", 0)\n .each(function (this: SVGElement, d: any) {\n const element = d3Select(this);\n element.append(\"rect\")\n .attr(\"class\", \"columnRect series series-\" + context.cssTag(d.column))\n ;\n element.append(\"text\")\n .attr(\"class\", \"columnRectText\")\n .style(\"stroke\", \"transparent\")\n ;\n })\n ;\n columnGEnter.transition().duration(duration)\n .style(\"opacity\", 1)\n ;\n const domainLength = host.yAxisStacked() ? dataLen : columnScale.bandwidth();\n columnGEnter.merge(columnGRect as any).each(function (this: SVGElement, d: any) {\n const element = d3Select(this);\n const domainPos = host.dataPos(dataRow[0]) + (host.yAxisStacked() ? 0 : columnScale(d.column)) + offset;\n const upperValue = d.value instanceof Array ? d.value[1] : d.value;\n let valueText = d.origRow[d.idx];\n if (context.showValue()) {\n const dm = context.dataMeta();\n switch (context.showValueAsPercent()) {\n case \"series\":\n const seriesSum = typeof dm.sum !== \"undefined\" ? dm.sum : seriesSums[d.idx];\n valueText = formatPct(valueText / seriesSum);\n break;\n case \"domain\":\n const domainSum = typeof dm.sum !== \"undefined\" ? dm.sum : domainSums[dataRowIdx];\n valueText = formatPct(valueText / domainSum);\n break;\n case null:\n default:\n valueText = d3Format(context.showValueFormat())(valueText);\n break;\n }\n }\n const upperValuePos = host.valuePos(upperValue);\n const lowerValuePos = host.valuePos(d.value instanceof Array ? d.value[0] : 0);\n const valuePos = Math.min(lowerValuePos, upperValuePos);\n const valueLength = Math.abs(upperValuePos - lowerValuePos);\n\n const innerTextHeight = context.innerTextFontSize();\n const innerTextPadding = context.innerTextPadding_exists() ? context.innerTextPadding() : innerTextHeight / 2.5;\n\n const dataRect = context.intersectRectRect(\n {\n x: isHorizontal ? domainPos : valuePos,\n y: isHorizontal ? valuePos : domainPos,\n width: isHorizontal ? domainLength : valueLength,\n height: isHorizontal ? valueLength : domainLength\n },\n {\n x: 0,\n y: 0,\n width: axisSize.width,\n height: axisSize.height\n }\n );\n\n const _rects = element.select(\"rect\").transition().duration(duration)\n .style(\"fill\", (d: any) => context.fillColor(d.row, d.column, d.value, d.origRow))\n ;\n\n if (isHorizontal) {\n _rects\n .attr(\"x\", domainPos)\n .attr(\"y\", valuePos)\n .attr(\"width\", domainLength)\n .attr(\"height\", valueLength)\n ;\n } else {\n _rects\n .attr(\"y\", domainPos)\n .attr(\"x\", valuePos)\n .attr(\"height\", domainLength)\n .attr(\"width\", valueLength)\n ;\n }\n const _texts = element.select(\"text\").transition().duration(duration)\n .style(\"font-size\", innerTextHeight + \"px\")\n .style(\"fill\", (d: any) => context.textColor(d.row, d.column, d.value, d.origRow))\n ;\n\n _texts.style(\"font-family\", context.innerTextFontFamily_exists() ? context.innerTextFontFamily() : null);\n\n const padding = context.innerTextPadding_exists() ? context.innerTextPadding() : 8;\n\n const textHeightOffset = innerTextHeight / 2.7;\n\n if (isHorizontal) { // Column\n const y = dataRect.y + dataRect.height - innerTextPadding;\n _texts\n .attr(\"x\", domainPos + (domainLength / 2))\n .attr(\"y\", y + textHeightOffset)\n .attr(\"transform\", `rotate(-90, ${domainPos + (domainLength / 2)}, ${y})`)\n ;\n } else { // Bar\n _texts\n .attr(\"x\", dataRect.x + padding)\n .attr(\"y\", domainPos + (domainLength / 2) + textHeightOffset)\n ;\n }\n _texts\n .attr(\"height\", domainLength)\n .attr(\"width\", valueLength)\n ;\n if (context.showInnerText()) {\n _texts\n .text((d: any) => {\n const innerText = context.innerText(d.origRow, d.origRow[columnLength], d.idx);\n if (innerText) {\n const clippedValueLength = isHorizontal ? dataRect.height : dataRect.width;\n const innerTextObj = context.calcInnerText(clippedValueLength, innerText, valueText);\n d.innerTextObj = innerTextObj;\n\n return innerTextObj.text;\n }\n return \"\";\n })\n ;\n }\n const dataText = element.selectAll(\".dataText\").data(context.showValue() ? [`${upperValue}`] : []);\n const dataTextEnter = dataText.enter().append(\"g\")\n .attr(\"class\", \"dataText\")\n .each(function (this: SVGElement, d) {\n context.textLocal.set(this, new Text().target(this).colorStroke_default(\"transparent\"));\n });\n dataTextEnter.merge(dataText as any)\n .each(function (this: SVGElement) {\n const pos = { x: 0, y: 0 };\n const valueFontFamily = context.valueFontFamily();\n const valueFontSize = context.valueFontSize();\n const textSize = context.textSize(valueText, valueFontFamily, valueFontSize);\n\n const isPositive = parseFloat(valueText) >= 0;\n\n let valueAnchor = context.valueAnchor() ? context.valueAnchor() : isHorizontal ? \"middle\" : \"start\";\n\n const leftSpace = dataRect.x;\n const rightSpace = axisSize.width - (dataRect.x + dataRect.width);\n const topSpace = dataRect.y;\n const bottomSpace = axisSize.height - (dataRect.y + dataRect.height);\n\n let noRoomInside;\n let isOutside;\n let noRoomOnExpectedSide;\n\n if (d.innerTextObj) {\n const { padding, valueTextWidth } = d.innerTextObj;\n isOutside = false;\n if (isHorizontal) { // Column\n valueAnchor = \"middle\";\n pos.x = domainPos + (domainLength / 2);\n\n if (d.innerTextObj.category === 4) {\n isOutside = true;\n pos.y = valuePos - padding - (valueFontSize / 2);\n } else {\n pos.y = valuePos + padding + (valueFontSize / 2);\n }\n } else { // Bar\n valueAnchor = \"start\";\n if (d.innerTextObj.category === 4) {\n isOutside = true;\n pos.x = (valueLength + valuePos) + padding;\n } else {\n pos.x = (valueLength + valuePos) - valueTextWidth - padding;\n }\n pos.y = domainPos + (domainLength / 2);\n }\n } else {\n /*\n IF this.valueCentered() and NO ROOM INSIDE\n ...then ASSUME THERES ROOM OUTSIDE\n IF NO ROOM OUTSIDE ON EXPECTED SIDE\n ...then ASSUME THERES ROOM ON THE OPPOSITE SIDE\n */\n if (isHorizontal) { // Column\n noRoomInside = dataRect.height < textSize.height;\n isOutside = !context.valueCentered() || noRoomInside;\n\n pos.x = dataRect.x + (dataRect.width / 2);\n\n if (isOutside) {\n if (isPositive) {\n noRoomOnExpectedSide = topSpace < textSize.height + padding;\n if (noRoomOnExpectedSide) {\n if (!noRoomInside) {\n isOutside = false;\n pos.y = dataRect.y + (dataRect.height / 2);\n } else {\n pos.y = dataRect.y + dataRect.height + textSize.height;\n }\n } else {\n pos.y = dataRect.y - (textSize.height / 2) - padding;\n }\n } else {\n noRoomOnExpectedSide = bottomSpace < textSize.height;\n if (noRoomOnExpectedSide) {\n if (!noRoomInside) {\n isOutside = false;\n pos.y = dataRect.y + (dataRect.height / 2);\n } else {\n pos.y = dataRect.y - (textSize.height / 2) - padding;\n }\n } else {\n pos.y = dataRect.y + textSize.height + padding;\n }\n }\n } else {\n pos.y = dataRect.y + (dataRect.height / 2);\n }\n } else { // Bar\n noRoomInside = dataRect.width < textSize.width;\n isOutside = !context.valueCentered() || noRoomInside;\n\n pos.y = dataRect.y + (dataRect.height / 2);\n\n if (isOutside) {\n if (isPositive) {\n noRoomOnExpectedSide = rightSpace < textSize.width + padding;\n if (noRoomOnExpectedSide) {\n if (context.showInnerText() || !noRoomInside) {\n isOutside = false;\n pos.x = dataRect.x + (dataRect.width / 2);\n } else {\n pos.x = dataRect.x - (textSize.width - padding);\n }\n } else {\n pos.x = dataRect.x + dataRect.width + (textSize.width / 2) + padding;\n }\n } else {\n noRoomOnExpectedSide = leftSpace < textSize.width;\n if (noRoomOnExpectedSide) {\n if (context.showInnerText() || !noRoomInside) {\n isOutside = false;\n pos.x = dataRect.x + (dataRect.width / 2);\n } else {\n pos.x = dataRect.x + dataRect.width + (textSize.width - padding);\n }\n } else {\n pos.x = dataRect.x - (textSize.width - padding);\n }\n }\n } else {\n pos.x = dataRect.x + (dataRect.width / 2);\n }\n }\n }\n const textColor = isOutside ? null : context.textColor(d.row, d.column, d.value, d.origRow);\n\n // Prevent overlapping labels on stacked columns\n const columns = context.columns();\n const hideValue = (context.yAxisStacked() && noRoomInside) ||\n (isOutside && context.yAxisStacked() && columns.indexOf(d.column) !== columns.length - 1);\n context.textLocal.get(this)\n .pos(pos)\n .anchor(valueAnchor)\n .fontFamily(valueFontFamily)\n .fontSize(valueFontSize)\n .text(`${valueText}`)\n .colorFill(textColor)\n .visible(context.showValue() && !hideValue)\n .render()\n ;\n\n });\n dataText.exit()\n .each(function (this: SVGElement, d) {\n context.textLocal.get(this).target(null);\n })\n .remove()\n ;\n });\n columnGRect.exit().transition().duration(duration)\n .style(\"opacity\", 0)\n .remove()\n ;\n\n const value4pos = host.yAxisStacked() ? domainSums[dataRowIdx] : Math.max(...dataRow.filter((_, idx) => idx > 0 && idx < columnLength));\n const stackedTotalText = element.selectAll(\".stackedTotalText\").data(context.showDomainTotal() ? [domainSums[dataRowIdx]] : []);\n const stackedTotalTextEnter = stackedTotalText.enter().append(\"g\")\n .attr(\"class\", \"stackedTotalText\")\n .each(function (this: SVGElement, d) {\n context.stackedTextLocal.set(this, new Text().target(this).colorStroke_default(\"transparent\"));\n });\n stackedTotalTextEnter.merge(stackedTotalText as any)\n .each(function (this: SVGElement, d: any) {\n const pos = { x: 0, y: 0 };\n const domainPos = host.dataPos(dataRow[0]);\n const valuePos = host.valuePos(value4pos);\n\n const valueFontFamily = context.valueFontFamily();\n const valueFontSize = context.valueFontSize();\n const textSize = context.textSize(d, valueFontFamily, valueFontSize);\n\n const isPositive = parseFloat(d) >= 0;\n let valueAnchor: \"start\" | \"middle\" | \"end\" = \"middle\";\n if (isHorizontal) {\n pos.x = domainPos;\n if (isPositive) {\n pos.y = valuePos - textSize.height / 2;\n } else {\n pos.y = valuePos + textSize.height / 2;\n }\n } else {\n valueAnchor = \"start\";\n pos.y = domainPos;\n if (isPositive) {\n pos.x = valuePos + textSize.width / 2;\n } else {\n pos.x = valuePos - textSize.width / 2;\n }\n }\n\n context.stackedTextLocal.get(this)\n .pos(pos)\n .anchor(valueAnchor)\n .fontFamily(valueFontFamily)\n .fontSize(valueFontSize)\n .text(d)\n .render()\n ;\n\n });\n stackedTotalText.exit()\n .each(function (this: SVGElement, d) {\n context.textLocal.get(this).target(null);\n })\n .remove()\n ;\n });\n column.exit().transition().duration(duration)\n .remove()\n ;\n }\n\n calcInnerText(offset, innerText, valueText) {\n\n const fontFamily = this.innerTextFontFamily_exists() ? this.innerTextFontFamily() : \"Verdana\";\n const fontSize = this.innerTextFontSize();\n const valueFontFamily = this.valueFontFamily_exists() ? this.valueFontFamily() : \"Verdana\";\n const valueFontSize = this.valueFontSize();\n const padding = this.innerTextPadding_exists() ? this.innerTextPadding() : fontSize / 2.5;\n const valueTextWidth = this.isHorizontal ? valueFontSize : this.textSize(valueText, valueFontFamily, valueFontSize).width;\n const ellipsisWidth = this.textSize(\"...\", fontFamily, fontSize).width;\n const innerTextWidth = this.textSize(innerText, fontFamily, fontSize).width;\n const origInnerText = innerText;\n\n const fullWidth = (padding * 3) + innerTextWidth + valueTextWidth;\n const fullWidth2 = (padding * 3) + ellipsisWidth + valueTextWidth;\n const fullWidth3 = (padding * 1) + valueTextWidth;\n /*\n Categories:\n 1) room to display inner text (with padding) AND value text (with padding)\n 2) room to display ellipsis (with padding) AND value text (with padding)\n 3) room to display value text only (with padding)\n 4) no room to display any text except value on the outside\n */\n let category = 4;\n if (fullWidth < offset) {\n category = 1;\n } else if (fullWidth2 < offset) {\n const excessWidth = offset - fullWidth2;\n let _text = \"\";\n for (const letter of innerText) {\n if (this.textSize(_text + letter, fontFamily, fontSize).width > excessWidth) {\n innerText = _text + \"...\";\n break;\n } else {\n _text += letter;\n }\n }\n category = 2;\n } else if (fullWidth3 < offset) {\n innerText = \"\";\n category = 3;\n } else {\n innerText = \"\";\n }\n\n return {\n text: innerText,\n isTruncated: origInnerText !== innerText,\n padding,\n category,\n valueTextWidth\n };\n }\n\n innerText(origRow, lparam, idx): string {\n return origRow[0];\n }\n}\nColumn.prototype._class += \" chart_Column\";\nColumn.prototype.implements(INDChart.prototype);\nColumn.prototype.implements(ITooltip.prototype);\n\nexport interface Column {\n paletteID(): string;\n paletteID(_: string): this;\n useClonedPalette(): boolean;\n useClonedPalette(_: boolean): this;\n showValue(): boolean;\n showValue(_: boolean): this;\n showInnerText(): boolean;\n showInnerText(_: boolean): this;\n showValueFormat(): string;\n showValueFormat(_: string): this;\n showValueAsPercent(): null | \"series\" | \"domain\";\n showValueAsPercent(_: null | \"series\" | \"domain\"): this;\n showValueAsPercentFormat(): string;\n showValueAsPercentFormat(_: string): this;\n showDomainTotal(): boolean;\n showDomainTotal(_: boolean): this;\n valueCentered(): boolean;\n valueCentered(_: boolean): this;\n valueAnchor(): \"start\" | \"middle\" | \"end\";\n valueAnchor(_: \"start\" | \"middle\" | \"end\"): this;\n valueFontFamily(): string;\n valueFontFamily(_: string): this;\n valueFontFamily_exists(): boolean;\n valueFontSize(): number;\n valueFontSize(_: number): this;\n xAxisSeriesPaddingInner(): number;\n xAxisSeriesPaddingInner(_: number): this;\n innerTextFontFamily(): string;\n innerTextFontFamily(_: string): this;\n innerTextFontFamily_exists(): boolean;\n innerTextFontSize(): number;\n innerTextFontSize(_: number): this;\n innerTextPadding(): number;\n innerTextPadding(_: number): this;\n innerTextPadding_exists(): boolean;\n tooltipInnerTextEllipsedOnly(): boolean;\n tooltipInnerTextEllipsedOnly(_: boolean): this;\n\n // INDChart ---\n fillColor(row, column, value, origRow): string;\n textColor(row, column, value, origRow): string;\n dblclick(row, column, selected): void;\n\n // ITooltip ---\n tooltip;\n tooltipHTML(_): string;\n tooltipFormat(_): string;\n tooltipStyle(): \"default\" | \"none\" | \"series-table\";\n tooltipStyle(_: \"default\" | \"none\" | \"series-table\"): this;\n}\n\nColumn.prototype.publish(\"valueFontFamily\", null, \"string\", \"Font family of value text\", null, { optional: true });\nColumn.prototype.publish(\"valueFontSize\", 12, \"number\", \"Height of value text (pixels)\");\nColumn.prototype.publish(\"innerTextFontFamily\", null, \"string\", \"Font family of inner text\", null, { optional: true });\nColumn.prototype.publish(\"innerTextPadding\", 8, \"number\", \"Offset of inner text (pixels)\", null, { optional: true });\nColumn.prototype.publish(\"innerTextFontSize\", 12, \"number\", \"Height of inner text (pixels)\");\nColumn.prototype.publish(\"paletteID\", \"default\", \"set\", \"Color palette for this widget\", () => Column.prototype._palette.switch(), { tags: [\"Basic\", \"Shared\"] });\nColumn.prototype.publish(\"useClonedPalette\", false, \"boolean\", \"Enable or disable using a cloned palette\", null, { tags: [\"Intermediate\", \"Shared\"] });\nColumn.prototype.publish(\"showValue\", false, \"boolean\", \"Show Value in column\");\nColumn.prototype.publish(\"showInnerText\", false, \"boolean\", \"Show Label in column\");\nColumn.prototype.publish(\"showValueFormat\", \",\", \"string\", \"D3 Format for Value\", null, { disable: (w: Column) => !w.showValue() || !!w.showValueAsPercent() });\nColumn.prototype.publish(\"showValueAsPercent\", null, \"set\", \"If showValue is true, optionally show value as a percentage by Series or Domain\", [null, \"series\", \"domain\"], { disable: w => !w.showValue(), optional: true });\nColumn.prototype.publish(\"showValueAsPercentFormat\", \".0%\", \"string\", \"D3 Format for %\", null, { disable: (w: Column) => !w.showValue() || !w.showValueAsPercent() });\nColumn.prototype.publish(\"showDomainTotal\", false, \"boolean\", \"Show Total Value for Stacked Columns\", null);\nColumn.prototype.publish(\"valueCentered\", false, \"boolean\", \"Show Value in center of column\");\nColumn.prototype.publish(\"valueAnchor\", \"middle\", \"set\", \"text-anchor for shown value text\", [\"start\", \"middle\", \"end\"]);\nColumn.prototype.publish(\"xAxisSeriesPaddingInner\", 0, \"number\", \"Determines the ratio of the range that is reserved for blank space between band (0->1)\");\nColumn.prototype.publish(\"tooltipInnerTextEllipsedOnly\", false, \"boolean\", \"Show tooltip only when inner text is truncated with an ellipsis\");\n\n/*\nconst origUseClonedPalette = Column.prototype.useClonedPalette;\nColumn.prototype.useClonedPalette = function (this: Column, _?) {\n const retVal = origUseClonedPalette.apply(this, arguments);\n if (arguments.length) {\n this._useClonedPalette = _;\n }\n return retVal;;\n}\n*/\n","import { Column } from \"./Column.ts\";\n\nexport class Bar extends Column {\n constructor() {\n super();\n this.orientation_default(\"vertical\");\n }\n}\nBar.prototype._class += \" chart_Bar\";\n","function count(node) {\n var sum = 0,\n children = node.children,\n i = children && children.length;\n if (!i) sum = 1;\n else while (--i >= 0) sum += children[i].value;\n node.value = sum;\n}\n\nexport default function() {\n return this.eachAfter(count);\n}\n","export default function(callback) {\n var node = this, current, next = [node], children, i, n;\n do {\n current = next.reverse(), next = [];\n while (node = current.pop()) {\n callback(node), children = node.children;\n if (children) for (i = 0, n = children.length; i < n; ++i) {\n next.push(children[i]);\n }\n }\n } while (next.length);\n return this;\n}\n","export default function(callback) {\n var node = this, nodes = [node], children, i;\n while (node = nodes.pop()) {\n callback(node), children = node.children;\n if (children) for (i = children.length - 1; i >= 0; --i) {\n nodes.push(children[i]);\n }\n }\n return this;\n}\n","export default function(callback) {\n var node = this, nodes = [node], next = [], children, i, n;\n while (node = nodes.pop()) {\n next.push(node), children = node.children;\n if (children) for (i = 0, n = children.length; i < n; ++i) {\n nodes.push(children[i]);\n }\n }\n while (node = next.pop()) {\n callback(node);\n }\n return this;\n}\n","export default function(value) {\n return this.eachAfter(function(node) {\n var sum = +value(node.data) || 0,\n children = node.children,\n i = children && children.length;\n while (--i >= 0) sum += children[i].value;\n node.value = sum;\n });\n}\n","export default function(compare) {\n return this.eachBefore(function(node) {\n if (node.children) {\n node.children.sort(compare);\n }\n });\n}\n","export default function(end) {\n var start = this,\n ancestor = leastCommonAncestor(start, end),\n nodes = [start];\n while (start !== ancestor) {\n start = start.parent;\n nodes.push(start);\n }\n var k = nodes.length;\n while (end !== ancestor) {\n nodes.splice(k, 0, end);\n end = end.parent;\n }\n return nodes;\n}\n\nfunction leastCommonAncestor(a, b) {\n if (a === b) return a;\n var aNodes = a.ancestors(),\n bNodes = b.ancestors(),\n c = null;\n a = aNodes.pop();\n b = bNodes.pop();\n while (a === b) {\n c = a;\n a = aNodes.pop();\n b = bNodes.pop();\n }\n return c;\n}\n","export default function() {\n var node = this, nodes = [node];\n while (node = node.parent) {\n nodes.push(node);\n }\n return nodes;\n}\n","export default function() {\n var nodes = [];\n this.each(function(node) {\n nodes.push(node);\n });\n return nodes;\n}\n","export default function() {\n var leaves = [];\n this.eachBefore(function(node) {\n if (!node.children) {\n leaves.push(node);\n }\n });\n return leaves;\n}\n","export default function() {\n var root = this, links = [];\n root.each(function(node) {\n if (node !== root) { // Don’t include the root’s parent, if any.\n links.push({source: node.parent, target: node});\n }\n });\n return links;\n}\n","import node_count from \"./count.js\";\nimport node_each from \"./each.js\";\nimport node_eachBefore from \"./eachBefore.js\";\nimport node_eachAfter from \"./eachAfter.js\";\nimport node_sum from \"./sum.js\";\nimport node_sort from \"./sort.js\";\nimport node_path from \"./path.js\";\nimport node_ancestors from \"./ancestors.js\";\nimport node_descendants from \"./descendants.js\";\nimport node_leaves from \"./leaves.js\";\nimport node_links from \"./links.js\";\n\nexport default function hierarchy(data, children) {\n var root = new Node(data),\n valued = +data.value && (root.value = data.value),\n node,\n nodes = [root],\n child,\n childs,\n i,\n n;\n\n if (children == null) children = defaultChildren;\n\n while (node = nodes.pop()) {\n if (valued) node.value = +node.data.value;\n if ((childs = children(node.data)) && (n = childs.length)) {\n node.children = new Array(n);\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = node.children[i] = new Node(childs[i]));\n child.parent = node;\n child.depth = node.depth + 1;\n }\n }\n }\n\n return root.eachBefore(computeHeight);\n}\n\nfunction node_copy() {\n return hierarchy(this).eachBefore(copyData);\n}\n\nfunction defaultChildren(d) {\n return d.children;\n}\n\nfunction copyData(node) {\n node.data = node.data.data;\n}\n\nexport function computeHeight(node) {\n var height = 0;\n do node.height = height;\n while ((node = node.parent) && (node.height < ++height));\n}\n\nexport function Node(data) {\n this.data = data;\n this.depth =\n this.height = 0;\n this.parent = null;\n}\n\nNode.prototype = hierarchy.prototype = {\n constructor: Node,\n count: node_count,\n each: node_each,\n eachAfter: node_eachAfter,\n eachBefore: node_eachBefore,\n sum: node_sum,\n sort: node_sort,\n path: node_path,\n ancestors: node_ancestors,\n descendants: node_descendants,\n leaves: node_leaves,\n links: node_links,\n copy: node_copy\n};\n","export var slice = Array.prototype.slice;\n\nexport function shuffle(array) {\n var m = array.length,\n t,\n i;\n\n while (m) {\n i = Math.random() * m-- | 0;\n t = array[m];\n array[m] = array[i];\n array[i] = t;\n }\n\n return array;\n}\n","import {shuffle, slice} from \"../array.js\";\n\nexport default function(circles) {\n var i = 0, n = (circles = shuffle(slice.call(circles))).length, B = [], p, e;\n\n while (i < n) {\n p = circles[i];\n if (e && enclosesWeak(e, p)) ++i;\n else e = encloseBasis(B = extendBasis(B, p)), i = 0;\n }\n\n return e;\n}\n\nfunction extendBasis(B, p) {\n var i, j;\n\n if (enclosesWeakAll(p, B)) return [p];\n\n // If we get here then B must have at least one element.\n for (i = 0; i < B.length; ++i) {\n if (enclosesNot(p, B[i])\n && enclosesWeakAll(encloseBasis2(B[i], p), B)) {\n return [B[i], p];\n }\n }\n\n // If we get here then B must have at least two elements.\n for (i = 0; i < B.length - 1; ++i) {\n for (j = i + 1; j < B.length; ++j) {\n if (enclosesNot(encloseBasis2(B[i], B[j]), p)\n && enclosesNot(encloseBasis2(B[i], p), B[j])\n && enclosesNot(encloseBasis2(B[j], p), B[i])\n && enclosesWeakAll(encloseBasis3(B[i], B[j], p), B)) {\n return [B[i], B[j], p];\n }\n }\n }\n\n // If we get here then something is very wrong.\n throw new Error;\n}\n\nfunction enclosesNot(a, b) {\n var dr = a.r - b.r, dx = b.x - a.x, dy = b.y - a.y;\n return dr < 0 || dr * dr < dx * dx + dy * dy;\n}\n\nfunction enclosesWeak(a, b) {\n var dr = a.r - b.r + 1e-6, dx = b.x - a.x, dy = b.y - a.y;\n return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction enclosesWeakAll(a, B) {\n for (var i = 0; i < B.length; ++i) {\n if (!enclosesWeak(a, B[i])) {\n return false;\n }\n }\n return true;\n}\n\nfunction encloseBasis(B) {\n switch (B.length) {\n case 1: return encloseBasis1(B[0]);\n case 2: return encloseBasis2(B[0], B[1]);\n case 3: return encloseBasis3(B[0], B[1], B[2]);\n }\n}\n\nfunction encloseBasis1(a) {\n return {\n x: a.x,\n y: a.y,\n r: a.r\n };\n}\n\nfunction encloseBasis2(a, b) {\n var x1 = a.x, y1 = a.y, r1 = a.r,\n x2 = b.x, y2 = b.y, r2 = b.r,\n x21 = x2 - x1, y21 = y2 - y1, r21 = r2 - r1,\n l = Math.sqrt(x21 * x21 + y21 * y21);\n return {\n x: (x1 + x2 + x21 / l * r21) / 2,\n y: (y1 + y2 + y21 / l * r21) / 2,\n r: (l + r1 + r2) / 2\n };\n}\n\nfunction encloseBasis3(a, b, c) {\n var x1 = a.x, y1 = a.y, r1 = a.r,\n x2 = b.x, y2 = b.y, r2 = b.r,\n x3 = c.x, y3 = c.y, r3 = c.r,\n a2 = x1 - x2,\n a3 = x1 - x3,\n b2 = y1 - y2,\n b3 = y1 - y3,\n c2 = r2 - r1,\n c3 = r3 - r1,\n d1 = x1 * x1 + y1 * y1 - r1 * r1,\n d2 = d1 - x2 * x2 - y2 * y2 + r2 * r2,\n d3 = d1 - x3 * x3 - y3 * y3 + r3 * r3,\n ab = a3 * b2 - a2 * b3,\n xa = (b2 * d3 - b3 * d2) / (ab * 2) - x1,\n xb = (b3 * c2 - b2 * c3) / ab,\n ya = (a3 * d2 - a2 * d3) / (ab * 2) - y1,\n yb = (a2 * c3 - a3 * c2) / ab,\n A = xb * xb + yb * yb - 1,\n B = 2 * (r1 + xa * xb + ya * yb),\n C = xa * xa + ya * ya - r1 * r1,\n r = -(A ? (B + Math.sqrt(B * B - 4 * A * C)) / (2 * A) : C / B);\n return {\n x: x1 + xa + xb * r,\n y: y1 + ya + yb * r,\n r: r\n };\n}\n","import enclose from \"./enclose.js\";\n\nfunction place(b, a, c) {\n var dx = b.x - a.x, x, a2,\n dy = b.y - a.y, y, b2,\n d2 = dx * dx + dy * dy;\n if (d2) {\n a2 = a.r + c.r, a2 *= a2;\n b2 = b.r + c.r, b2 *= b2;\n if (a2 > b2) {\n x = (d2 + b2 - a2) / (2 * d2);\n y = Math.sqrt(Math.max(0, b2 / d2 - x * x));\n c.x = b.x - x * dx - y * dy;\n c.y = b.y - x * dy + y * dx;\n } else {\n x = (d2 + a2 - b2) / (2 * d2);\n y = Math.sqrt(Math.max(0, a2 / d2 - x * x));\n c.x = a.x + x * dx - y * dy;\n c.y = a.y + x * dy + y * dx;\n }\n } else {\n c.x = a.x + c.r;\n c.y = a.y;\n }\n}\n\nfunction intersects(a, b) {\n var dr = a.r + b.r - 1e-6, dx = b.x - a.x, dy = b.y - a.y;\n return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction score(node) {\n var a = node._,\n b = node.next._,\n ab = a.r + b.r,\n dx = (a.x * b.r + b.x * a.r) / ab,\n dy = (a.y * b.r + b.y * a.r) / ab;\n return dx * dx + dy * dy;\n}\n\nfunction Node(circle) {\n this._ = circle;\n this.next = null;\n this.previous = null;\n}\n\nexport function packEnclose(circles) {\n if (!(n = circles.length)) return 0;\n\n var a, b, c, n, aa, ca, i, j, k, sj, sk;\n\n // Place the first circle.\n a = circles[0], a.x = 0, a.y = 0;\n if (!(n > 1)) return a.r;\n\n // Place the second circle.\n b = circles[1], a.x = -b.r, b.x = a.r, b.y = 0;\n if (!(n > 2)) return a.r + b.r;\n\n // Place the third circle.\n place(b, a, c = circles[2]);\n\n // Initialize the front-chain using the first three circles a, b and c.\n a = new Node(a), b = new Node(b), c = new Node(c);\n a.next = c.previous = b;\n b.next = a.previous = c;\n c.next = b.previous = a;\n\n // Attempt to place each remaining circle…\n pack: for (i = 3; i < n; ++i) {\n place(a._, b._, c = circles[i]), c = new Node(c);\n\n // Find the closest intersecting circle on the front-chain, if any.\n // “Closeness” is determined by linear distance along the front-chain.\n // “Ahead” or “behind” is likewise determined by linear distance.\n j = b.next, k = a.previous, sj = b._.r, sk = a._.r;\n do {\n if (sj <= sk) {\n if (intersects(j._, c._)) {\n b = j, a.next = b, b.previous = a, --i;\n continue pack;\n }\n sj += j._.r, j = j.next;\n } else {\n if (intersects(k._, c._)) {\n a = k, a.next = b, b.previous = a, --i;\n continue pack;\n }\n sk += k._.r, k = k.previous;\n }\n } while (j !== k.next);\n\n // Success! Insert the new circle c between a and b.\n c.previous = a, c.next = b, a.next = b.previous = b = c;\n\n // Compute the new closest circle pair to the centroid.\n aa = score(a);\n while ((c = c.next) !== b) {\n if ((ca = score(c)) < aa) {\n a = c, aa = ca;\n }\n }\n b = a.next;\n }\n\n // Compute the enclosing circle of the front chain.\n a = [b._], c = b; while ((c = c.next) !== b) a.push(c._); c = enclose(a);\n\n // Translate the circles to put the enclosing circle around the origin.\n for (i = 0; i < n; ++i) a = circles[i], a.x -= c.x, a.y -= c.y;\n\n return c.r;\n}\n\nexport default function(circles) {\n packEnclose(circles);\n return circles;\n}\n","export function optional(f) {\n return f == null ? null : required(f);\n}\n\nexport function required(f) {\n if (typeof f !== \"function\") throw new Error;\n return f;\n}\n","export function constantZero() {\n return 0;\n}\n\nexport default function(x) {\n return function() {\n return x;\n };\n}\n","import {packEnclose} from \"./siblings.js\";\nimport {optional} from \"../accessors.js\";\nimport constant, {constantZero} from \"../constant.js\";\n\nfunction defaultRadius(d) {\n return Math.sqrt(d.value);\n}\n\nexport default function() {\n var radius = null,\n dx = 1,\n dy = 1,\n padding = constantZero;\n\n function pack(root) {\n root.x = dx / 2, root.y = dy / 2;\n if (radius) {\n root.eachBefore(radiusLeaf(radius))\n .eachAfter(packChildren(padding, 0.5))\n .eachBefore(translateChild(1));\n } else {\n root.eachBefore(radiusLeaf(defaultRadius))\n .eachAfter(packChildren(constantZero, 1))\n .eachAfter(packChildren(padding, root.r / Math.min(dx, dy)))\n .eachBefore(translateChild(Math.min(dx, dy) / (2 * root.r)));\n }\n return root;\n }\n\n pack.radius = function(x) {\n return arguments.length ? (radius = optional(x), pack) : radius;\n };\n\n pack.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], pack) : [dx, dy];\n };\n\n pack.padding = function(x) {\n return arguments.length ? (padding = typeof x === \"function\" ? x : constant(+x), pack) : padding;\n };\n\n return pack;\n}\n\nfunction radiusLeaf(radius) {\n return function(node) {\n if (!node.children) {\n node.r = Math.max(0, +radius(node) || 0);\n }\n };\n}\n\nfunction packChildren(padding, k) {\n return function(node) {\n if (children = node.children) {\n var children,\n i,\n n = children.length,\n r = padding(node) * k || 0,\n e;\n\n if (r) for (i = 0; i < n; ++i) children[i].r += r;\n e = packEnclose(children);\n if (r) for (i = 0; i < n; ++i) children[i].r -= r;\n node.r = e + r;\n }\n };\n}\n\nfunction translateChild(k) {\n return function(node) {\n var parent = node.parent;\n node.r *= k;\n if (parent) {\n node.x = parent.x + k * node.x;\n node.y = parent.y + k * node.y;\n }\n };\n}\n","import { I2DChart, ITooltip } from \"@hpcc-js/api\";\nimport { FAChar, InputField, ISize, SVGWidget, Text, Utility } from \"@hpcc-js/common\";\nimport { hierarchy as d3Hierarchy, pack as d3Pack } from \"d3-hierarchy\";\nimport { select as d3Select } from \"d3-selection\";\n\nimport \"../src/Bubble.css\";\n\nexport class Bubble extends SVGWidget {\n static __inputs: InputField[] = [{\n id: \"label\",\n type: \"string\"\n }, {\n id: \"value\",\n type: \"number\"\n }];\n\n labelWidgets;\n d3Pack;\n\n constructor() {\n super();\n I2DChart.call(this);\n ITooltip.call(this);\n Utility.SimpleSelectionMixin.call(this);\n\n this._drawStartPos = \"origin\";\n\n this.labelWidgets = {};\n\n this.d3Pack = d3Pack()\n .size([this.width(), this.height()])\n .padding(1.5)\n ;\n }\n\n size(): ISize;\n size(_): this;\n size(_?): ISize | this {\n const retVal = super.size.apply(this, arguments);\n if (arguments.length) {\n this.d3Pack\n .size([this.width(), this.height()])\n ;\n }\n return retVal;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this._selection.widgetElement(element);\n const context = this;\n this\n .tooltipHTML(function (d) {\n switch (context.tooltipStyle()) {\n case \"series-table\":\n return context.tooltipFormat({\n label: d[0],\n arr: context.columns().slice(1).map(function (column, i) {\n return {\n label: column,\n color: context._palette(d[0]),\n value: d[1]\n };\n })\n });\n default:\n return context.tooltipFormat({ label: d.data[0], value: d.data[1] });\n }\n })\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n const context = this;\n\n this._palette = this._palette.switch(this.paletteID());\n if (this.useClonedPalette()) {\n this._palette = this._palette.cloneNotExists(this.paletteID() + \"_\" + this.id());\n }\n\n const root = d3Hierarchy({ children: this.cloneData() })\n .sum(function (d) { return d[1]; })\n .sort(function (b, a) {\n return a[1] < b[1] ? -1 : a[1] > b[1] ? 1 : 0;\n })\n ;\n this.d3Pack(root);\n\n const node = element.selectAll(\".node\").data(root.children || [], d => d.data[0]);\n\n // Enter ---\n node.enter().append(\"g\")\n .attr(\"class\", (d, i) => \"node series series-\" + this.cssTag(d.data[0]))\n .attr(\"opacity\", 0)\n .call(this._selection.enter.bind(this._selection))\n .on(\"click\", function (d) {\n context.click(context.rowToObj(d.data), context.columns()[1], context._selection.selected(this));\n })\n .on(\"dblclick\", function (d) {\n context.dblclick(context.rowToObj(d.data), context.columns()[1], context._selection.selected(this));\n })\n .each(function (d) {\n const element2 = d3Select(this);\n const pos = { x: d.x, y: d.y };\n element2.append(\"circle\")\n .attr(\"transform\", \"translate(\" + pos.x + \",\" + pos.y + \")\")\n .attr(\"r\", 0)\n .on(\"mouseout.tooltip\", context.tooltip.hide)\n .on(\"mousemove.tooltip\", context.tooltip.show)\n ;\n if (d.__viz_faChar) {\n context.labelWidgets[d.data[0]] = new FAChar()\n .char(d.__viz_faChar)\n .target(this)\n .render()\n ;\n } else {\n context.labelWidgets[d.data[0]] = new Text()\n .text(d.data[0])\n .target(this)\n .render()\n ;\n }\n })\n .merge(node).transition()\n .attr(\"opacity\", 1)\n .each(function (d) {\n const element2 = d3Select(this);\n const pos = { x: d.x, y: d.y };\n element2.select(\"circle\").transition()\n .attr(\"transform\", \"translate(\" + pos.x + \",\" + pos.y + \")\")\n .style(\"fill\", context.fillColor(d.data, context.columns()[1], d.data[1]))\n .attr(\"r\", d.r)\n .select(\"title\")\n .text(d.data[0] + \" (\" + d.data[1] + \")\")\n ;\n if (d.__viz_faChar) {\n context.labelWidgets[d.data[0]]\n .pos(pos)\n .render()\n ;\n } else {\n context.labelWidgets[d.data[0]]\n .pos(pos)\n .colorFill_default(context.textColor(d.data, context.columns()[1], d.data[1]))\n .width(d.r * 2)\n .text(d.data[0])\n .render()\n ;\n }\n })\n ;\n\n // Exit ---\n node.exit().transition()\n .style(\"opacity\", 0)\n .remove()\n ;\n }\n\n exit(domNode, element) {\n super.exit(domNode, element);\n }\n\n}\nBubble.prototype._class += \" chart_Bubble\";\nBubble.prototype.implements(I2DChart.prototype);\nBubble.prototype.implements(ITooltip.prototype);\nBubble.prototype.mixin(Utility.SimpleSelectionMixin);\n\nexport interface Bubble {\n paletteID(): string;\n paletteID(_: string): this;\n useClonedPalette(): boolean;\n useClonedPalette(_: boolean): this;\n\n // I2DChart\n _palette;\n fillColor(row: any[], column: string, value: number): string;\n textColor(row: any[], column: string, value: number): string;\n click(row, column, selected): void;\n dblclick(row, column, selected): void;\n\n // ITooltip\n tooltip;\n tooltipHTML(_): string;\n tooltipFormat(_): string;\n tooltipStyle(): \"default\" | \"none\" | \"series-table\";\n\n // SimpleSelectionMixin\n _selection;\n}\n\nBubble.prototype.publish(\"paletteID\", \"default\", \"set\", \"Color palette for this widget\", Bubble.prototype._palette.switch(), { tags: [\"Basic\", \"Shared\"] });\nBubble.prototype.publish(\"useClonedPalette\", false, \"boolean\", \"Enable or disable using a cloned palette\", null, { tags: [\"Intermediate\", \"Shared\"] });\n","import { Scatter } from \"./Scatter.ts\";\n\nexport class BubbleXY extends Scatter {\n constructor() {\n super();\n }\n enter(domNode, element) {\n if (!this.pointSizeColumn_exists()) {\n this.pointSizeColumn(this.columns()[this.columns().length - 1]);\n }\n super.enter(domNode, element);\n }\n}\nBubbleXY.prototype._class += \" chart_BubbleXY\";\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(null, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import { descending as d3Descending } from \"d3-array\";\r\nimport { axisLeft as d3AxisLeft } from \"d3-axis\";\r\nimport { scaleLinear as d3ScaleLinear } from \"d3-scale\";\r\nimport { select as d3Select } from \"d3-selection\";\r\nimport { timerFlush as d3TimerFlush } from \"d3-timer\";\r\nimport \"d3-transition\";\r\n\r\nexport default function () {\r\n var orient = \"left\",\r\n reverse = false,\r\n vertical = false,\r\n ranges = bulvarRanges,\r\n markers = bulvarMarkers,\r\n measures = bulvarMeasures,\r\n width = 380,\r\n height = 30,\r\n xAxis = d3AxisLeft();\r\n\r\n // For each small multiple…\r\n function bulvar(g) {\r\n g.each(function (d, i) {\r\n var rangez = ranges.call(this, d, i).slice().sort(d3Descending),\r\n markerz = markers.call(this, d, i).slice().sort(d3Descending),\r\n measurez = measures.call(this, d, i).slice().sort(d3Descending),\r\n g2 = d3Select(this),\r\n extentX,\r\n extentY;\r\n\r\n var wrap = g2.select(\"g.wrap\");\r\n if (wrap.empty()) wrap = g2.append(\"g\").attr(\"class\", \"wrap\");\r\n\r\n if (vertical) {\r\n extentX = height, extentY = width;\r\n wrap.attr(\"transform\", \"rotate(90)translate(0,\" + -width + \")\");\r\n } else {\r\n extentX = width, extentY = height;\r\n wrap.attr(\"transform\", null);\r\n }\r\n\r\n // Compute the new x-scale.\r\n var x1 = d3ScaleLinear()\r\n .domain([0, Math.max(rangez[0], markerz[0], measurez[0])])\r\n .range(reverse ? [extentX, 0] : [0, extentX]);\r\n\r\n // Retrieve the old x-scale, if this is an update.\r\n var x0 = this.__chart__ || d3ScaleLinear()\r\n .domain([0, Infinity])\r\n .range(x1.range());\r\n\r\n // Stash the new scale.\r\n this.__chart__ = x1;\r\n\r\n // Derive width-scales from the x-scales.\r\n var w0 = bulvarWidth(x0),\r\n w1 = bulvarWidth(x1);\r\n\r\n // Update the range rects.\r\n var range = wrap.selectAll(\"rect.range\")\r\n .data(rangez);\r\n\r\n range.enter().append(\"rect\")\r\n .attr(\"class\", function (_d, i2) { return \"range s\" + i2; })\r\n .attr(\"width\", w0)\r\n .attr(\"height\", extentY)\r\n .attr(\"x\", reverse ? x0 : 0)\r\n .merge(range)\r\n .transition(range)\r\n .attr(\"x\", reverse ? x1 : 0)\r\n .attr(\"width\", w1)\r\n .attr(\"height\", extentY);\r\n\r\n // Update the measure rects.\r\n var measure = wrap.selectAll(\"rect.measure\")\r\n .data(measurez);\r\n\r\n measure.enter().append(\"rect\")\r\n .attr(\"class\", function (_d, i2) { return \"measure s\" + i2; })\r\n .attr(\"width\", w0)\r\n .attr(\"height\", extentY / 3)\r\n .attr(\"x\", reverse ? x0 : 0)\r\n .attr(\"y\", extentY / 3)\r\n .merge(measure)\r\n .transition(measure)\r\n .attr(\"width\", w1)\r\n .attr(\"height\", extentY / 3)\r\n .attr(\"x\", reverse ? x1 : 0)\r\n .attr(\"y\", extentY / 3);\r\n\r\n // Update the marker lines.\r\n var marker = wrap.selectAll(\"line.marker\")\r\n .data(markerz);\r\n\r\n marker.enter().append(\"line\")\r\n .attr(\"class\", \"marker\")\r\n .attr(\"x1\", x0)\r\n .attr(\"x2\", x0)\r\n .attr(\"y1\", extentY / 6)\r\n .attr(\"y2\", extentY * 5 / 6)\r\n .merge(marker)\r\n .transition(marker)\r\n .attr(\"x1\", x1)\r\n .attr(\"x2\", x1)\r\n .attr(\"y1\", extentY / 6)\r\n .attr(\"y2\", extentY * 5 / 6);\r\n\r\n var axis = g2.selectAll(\"g.axis\").data([0]);\r\n axis.enter().append(\"g\").attr(\"class\", \"axis\");\r\n axis.attr(\"transform\", vertical ? null : \"translate(0,\" + extentY + \")\")\r\n .call(xAxis.scale(x1));\r\n });\r\n d3TimerFlush();\r\n }\r\n\r\n // left, right, top, bottom\r\n bulvar.orient = function (_) {\r\n if (!arguments.length) return orient;\r\n orient = _ + \"\";\r\n reverse = orient === \"right\" || orient === \"bottom\";\r\n xAxis.orient((vertical = orient === \"top\" || orient === \"bottom\") ? \"left\" : \"bottom\"); // eslint-disable-line\r\n return bulvar;\r\n };\r\n\r\n // ranges (bad, satisfactory, good)\r\n bulvar.ranges = function (_) {\r\n if (!arguments.length) return ranges;\r\n ranges = _;\r\n return bulvar;\r\n };\r\n\r\n // markers (previous, goal)\r\n bulvar.markers = function (_) {\r\n if (!arguments.length) return markers;\r\n markers = _;\r\n return bulvar;\r\n };\r\n\r\n // measures (actual, forecast)\r\n bulvar.measures = function (_) {\r\n if (!arguments.length) return measures;\r\n measures = _;\r\n return bulvar;\r\n };\r\n\r\n bulvar.width = function (_) {\r\n if (!arguments.length) return width;\r\n width = +_;\r\n return bulvar;\r\n };\r\n\r\n bulvar.height = function (_) {\r\n if (!arguments.length) return height;\r\n height = +_;\r\n return bulvar;\r\n };\r\n\r\n bulvar.tickFormat = function (_) {\r\n if (!arguments.length) return xAxis.tickFormat();\r\n xAxis.tickFormat(_);\r\n return bulvar;\r\n };\r\n\r\n return bulvar;\r\n}\r\n\r\nfunction bulvarRanges(d) {\r\n return d.ranges;\r\n}\r\n\r\nfunction bulvarMarkers(d) {\r\n return d.markers;\r\n}\r\n\r\nfunction bulvarMeasures(d) {\r\n return d.measures;\r\n}\r\n\r\nfunction bulvarWidth(x) {\r\n var x0 = x(0);\r\n return function (d) {\r\n return Math.abs(x(d) - x0);\r\n };\r\n}\r\n","import { HTMLWidget, Utility } from \"@hpcc-js/common\";\nimport { select as d3Select } from \"d3-selection\";\nimport { bullet as d3Bullet } from \"d3v4-bullet\";\n\nimport \"../src/Bullet.css\";\n\nexport class Bullet extends HTMLWidget {\n\n private _hiddenColumns = {};\n\n constructor() {\n super();\n Utility.SimpleSelectionMixin.call(this, true);\n }\n\n bulletData() {\n const context = this;\n this._hiddenColumns = {};\n const columns = this.columns();\n return this.data().map(function (row) {\n return {\n title: valueOf(row, this.titleColumn()),\n subtitle: valueOf(row, this.subtitleColumn()),\n ranges: valueOf(row, this.rangesColumn(), \"range\"),\n measures: valueOf(row, this.measuresColumn(), \"measure\"),\n markers: valueOf(row, this.markersColumn(), \"marker\"),\n origRow: row\n };\n }, this);\n\n function valueOf(row, column, columnType?) {\n const colIdx = columns.indexOf(column);\n if (colIdx >= 0) {\n if (row[colIdx] instanceof Array) {\n return row[colIdx];\n }\n return [row[colIdx]];\n }\n if (columnType) {\n context._hiddenColumns[columnType] = true;\n }\n return [0];\n }\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n d3Select(domNode.parentNode).style(\"overflow\", \"auto\");\n this._selection.widgetElement(element);\n }\n\n update(_domNode, element) {\n super.update(_domNode, element);\n const context = this;\n\n element.selectAll(\".axis\")\n .style(\"display\", \"none\")\n ;\n element.selectAll(\".range,.measure,.marker\")\n .style(\"display\", null)\n ;\n\n const margin = { left: 2, top: 8, right: 2, bottom: 8 };\n const width = this.width() - margin.left - margin.right;\n const height = 40 - margin.top - margin.bottom;\n\n const svg = element.selectAll(\"svg\").data(this.bulletData());\n const svgUpdate = svg.enter().append(\"svg\")\n .attr(\"class\", \"bullet\")\n .call(this._selection.enter.bind(this._selection))\n .on(\"click\", function (d) {\n context.click(context.rowToObj(d.origRow), context.titleColumn(), context._selection.selected(this));\n })\n .on(\"dblclick\", function (d) {\n context.dblclick(context.rowToObj(d.origRow), context.titleColumn(), context._selection.selected(this));\n })\n .each(function () {\n const element2 = d3Select(this);\n const bulletBar = element2.append(\"g\")\n .attr(\"class\", (d, i) => \"bulletBar series series-\" + context.cssTag(context.titleColumn()))\n ;\n const bulletTitle = bulletBar.append(\"g\")\n .attr(\"class\", \"bulletTitle\")\n ;\n bulletTitle.append(\"text\")\n .attr(\"class\", \"title\")\n ;\n bulletTitle.append(\"text\")\n .attr(\"class\", \"subtitle\")\n .attr(\"dy\", \"1em\")\n ;\n })\n .merge(svg)\n ;\n\n // Title ---\n const title = svgUpdate.select(\".bulletTitle\")\n .style(\"text-anchor\", \"end\")\n .attr(\"transform\", \"translate(-6,\" + height / 2 + \")\")\n ;\n title.select(\".title\")\n .text(function (d) { return d.title; })\n ;\n title.select(\".subtitle\")\n .text(function (d) { return d.subtitle; })\n ;\n\n let titleWidth = 0;\n title.each(function () {\n const bbox = this.getBBox();\n if (bbox.width > titleWidth) {\n titleWidth = bbox.width;\n }\n });\n\n // Bullet Chart ---\n const chart = d3Bullet()\n .width(width - titleWidth - 6)\n .height(height)\n ;\n svgUpdate\n .attr(\"width\", width)\n .attr(\"height\", height + margin.top + margin.bottom)\n .style(\"margin-left\", `${margin.left}px`)\n ;\n svgUpdate.select(\".bulletBar\")\n .attr(\"transform\", \"translate(\" + (titleWidth + 6) + \",\" + margin.top + \")\")\n .call(chart)\n ;\n\n svg.exit().remove();\n\n if (Object.keys(this._hiddenColumns).length > 0) {\n element.selectAll(`.${Object.keys(this._hiddenColumns).join(\",.\")}`)\n .style(\"display\", \"none\")\n ;\n }\n }\n\n exit(domNode, element) {\n super.exit(domNode, element);\n }\n\n // Events ---\n click(row, column, selected) {\n // console.log(\"Click: \" + JSON.stringify(row) + \", \" + column + \",\" + selected);\n }\n\n dblclick(row, column, selected) {\n // console.log(\"Double click: \" + JSON.stringify(row) + \", \" + column + \",\" + selected);\n }\n\n // SimpleSelectionMixin\n _selection;\n}\nBullet.prototype._class += \" chart_Bullet\";\n\nexport interface Bullet {\n titleColumn(): string;\n titleColumn(_: string): this;\n subtitleColumn(): string;\n subtitleColumn(_: string): this;\n rangesColumn(): string;\n rangesColumn(_: string): this;\n measuresColumn(): string;\n measuresColumn(_: string): this;\n markersColumn(): string;\n markersColumn(_: string): this;\n}\n\nBullet.prototype.publish(\"titleColumn\", null, \"set\", \"Title Column\", function () { return this.columns(); }, { optional: true });\nBullet.prototype.publish(\"subtitleColumn\", null, \"set\", \"Subtitle Column\", function () { return this.columns(); }, { optional: true });\nBullet.prototype.publish(\"rangesColumn\", null, \"set\", \"Ranges Column\", function () { return this.columns(); }, { optional: true });\nBullet.prototype.publish(\"measuresColumn\", null, \"set\", \"Measures Column\", function () { return this.columns(); }, { optional: true });\nBullet.prototype.publish(\"markersColumn\", null, \"set\", \"Markers Column\", function () { return this.columns(); }, { optional: true });\n\n","var array = Array.prototype;\n\nexport var slice = array.slice;\n","export default function(a, b) {\n return a - b;\n}\n","export default function(ring) {\n var i = 0, n = ring.length, area = ring[n - 1][1] * ring[0][0] - ring[n - 1][0] * ring[0][1];\n while (++i < n) area += ring[i - 1][1] * ring[i][0] - ring[i - 1][0] * ring[i][1];\n return area;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(ring, hole) {\n var i = -1, n = hole.length, c;\n while (++i < n) if (c = ringContains(ring, hole[i])) return c;\n return 0;\n}\n\nfunction ringContains(ring, point) {\n var x = point[0], y = point[1], contains = -1;\n for (var i = 0, n = ring.length, j = n - 1; i < n; j = i++) {\n var pi = ring[i], xi = pi[0], yi = pi[1], pj = ring[j], xj = pj[0], yj = pj[1];\n if (segmentContains(pi, pj, point)) return 0;\n if (((yi > y) !== (yj > y)) && ((x < (xj - xi) * (y - yi) / (yj - yi) + xi))) contains = -contains;\n }\n return contains;\n}\n\nfunction segmentContains(a, b, c) {\n var i; return collinear(a, b, c) && within(a[i = +(a[0] === b[0])], c[i], b[i]);\n}\n\nfunction collinear(a, b, c) {\n return (b[0] - a[0]) * (c[1] - a[1]) === (c[0] - a[0]) * (b[1] - a[1]);\n}\n\nfunction within(p, q, r) {\n return p <= q && q <= r || r <= q && q <= p;\n}\n","export default function() {}\n","import {extent, thresholdSturges, tickStep, range} from \"d3-array\";\nimport {slice} from \"./array\";\nimport ascending from \"./ascending\";\nimport area from \"./area\";\nimport constant from \"./constant\";\nimport contains from \"./contains\";\nimport noop from \"./noop\";\n\nvar cases = [\n [],\n [[[1.0, 1.5], [0.5, 1.0]]],\n [[[1.5, 1.0], [1.0, 1.5]]],\n [[[1.5, 1.0], [0.5, 1.0]]],\n [[[1.0, 0.5], [1.5, 1.0]]],\n [[[1.0, 1.5], [0.5, 1.0]], [[1.0, 0.5], [1.5, 1.0]]],\n [[[1.0, 0.5], [1.0, 1.5]]],\n [[[1.0, 0.5], [0.5, 1.0]]],\n [[[0.5, 1.0], [1.0, 0.5]]],\n [[[1.0, 1.5], [1.0, 0.5]]],\n [[[0.5, 1.0], [1.0, 0.5]], [[1.5, 1.0], [1.0, 1.5]]],\n [[[1.5, 1.0], [1.0, 0.5]]],\n [[[0.5, 1.0], [1.5, 1.0]]],\n [[[1.0, 1.5], [1.5, 1.0]]],\n [[[0.5, 1.0], [1.0, 1.5]]],\n []\n];\n\nexport default function() {\n var dx = 1,\n dy = 1,\n threshold = thresholdSturges,\n smooth = smoothLinear;\n\n function contours(values) {\n var tz = threshold(values);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n var domain = extent(values), start = domain[0], stop = domain[1];\n tz = tickStep(start, stop, tz);\n tz = range(Math.floor(start / tz) * tz, Math.floor(stop / tz) * tz, tz);\n } else {\n tz = tz.slice().sort(ascending);\n }\n\n return tz.map(function(value) {\n return contour(values, value);\n });\n }\n\n // Accumulate, smooth contour rings, assign holes to exterior rings.\n // Based on https://github.com/mbostock/shapefile/blob/v0.6.2/shp/polygon.js\n function contour(values, value) {\n var polygons = [],\n holes = [];\n\n isorings(values, value, function(ring) {\n smooth(ring, values, value);\n if (area(ring) > 0) polygons.push([ring]);\n else holes.push(ring);\n });\n\n holes.forEach(function(hole) {\n for (var i = 0, n = polygons.length, polygon; i < n; ++i) {\n if (contains((polygon = polygons[i])[0], hole) !== -1) {\n polygon.push(hole);\n return;\n }\n }\n });\n\n return {\n type: \"MultiPolygon\",\n value: value,\n coordinates: polygons\n };\n }\n\n // Marching squares with isolines stitched into rings.\n // Based on https://github.com/topojson/topojson-client/blob/v3.0.0/src/stitch.js\n function isorings(values, value, callback) {\n var fragmentByStart = new Array,\n fragmentByEnd = new Array,\n x, y, t0, t1, t2, t3;\n\n // Special case for the first row (y = -1, t2 = t3 = 0).\n x = y = -1;\n t1 = values[0] >= value;\n cases[t1 << 1].forEach(stitch);\n while (++x < dx - 1) {\n t0 = t1, t1 = values[x + 1] >= value;\n cases[t0 | t1 << 1].forEach(stitch);\n }\n cases[t1 << 0].forEach(stitch);\n\n // General case for the intermediate rows.\n while (++y < dy - 1) {\n x = -1;\n t1 = values[y * dx + dx] >= value;\n t2 = values[y * dx] >= value;\n cases[t1 << 1 | t2 << 2].forEach(stitch);\n while (++x < dx - 1) {\n t0 = t1, t1 = values[y * dx + dx + x + 1] >= value;\n t3 = t2, t2 = values[y * dx + x + 1] >= value;\n cases[t0 | t1 << 1 | t2 << 2 | t3 << 3].forEach(stitch);\n }\n cases[t1 | t2 << 3].forEach(stitch);\n }\n\n // Special case for the last row (y = dy - 1, t0 = t1 = 0).\n x = -1;\n t2 = values[y * dx] >= value;\n cases[t2 << 2].forEach(stitch);\n while (++x < dx - 1) {\n t3 = t2, t2 = values[y * dx + x + 1] >= value;\n cases[t2 << 2 | t3 << 3].forEach(stitch);\n }\n cases[t2 << 3].forEach(stitch);\n\n function stitch(line) {\n var start = [line[0][0] + x, line[0][1] + y],\n end = [line[1][0] + x, line[1][1] + y],\n startIndex = index(start),\n endIndex = index(end),\n f, g;\n if (f = fragmentByEnd[startIndex]) {\n if (g = fragmentByStart[endIndex]) {\n delete fragmentByEnd[f.end];\n delete fragmentByStart[g.start];\n if (f === g) {\n f.ring.push(end);\n callback(f.ring);\n } else {\n fragmentByStart[f.start] = fragmentByEnd[g.end] = {start: f.start, end: g.end, ring: f.ring.concat(g.ring)};\n }\n } else {\n delete fragmentByEnd[f.end];\n f.ring.push(end);\n fragmentByEnd[f.end = endIndex] = f;\n }\n } else if (f = fragmentByStart[endIndex]) {\n if (g = fragmentByEnd[startIndex]) {\n delete fragmentByStart[f.start];\n delete fragmentByEnd[g.end];\n if (f === g) {\n f.ring.push(end);\n callback(f.ring);\n } else {\n fragmentByStart[g.start] = fragmentByEnd[f.end] = {start: g.start, end: f.end, ring: g.ring.concat(f.ring)};\n }\n } else {\n delete fragmentByStart[f.start];\n f.ring.unshift(start);\n fragmentByStart[f.start = startIndex] = f;\n }\n } else {\n fragmentByStart[startIndex] = fragmentByEnd[endIndex] = {start: startIndex, end: endIndex, ring: [start, end]};\n }\n }\n }\n\n function index(point) {\n return point[0] * 2 + point[1] * (dx + 1) * 4;\n }\n\n function smoothLinear(ring, values, value) {\n ring.forEach(function(point) {\n var x = point[0],\n y = point[1],\n xt = x | 0,\n yt = y | 0,\n v0,\n v1 = values[yt * dx + xt];\n if (x > 0 && x < dx && xt === x) {\n v0 = values[yt * dx + xt - 1];\n point[0] = x + (value - v0) / (v1 - v0) - 0.5;\n }\n if (y > 0 && y < dy && yt === y) {\n v0 = values[(yt - 1) * dx + xt];\n point[1] = y + (value - v0) / (v1 - v0) - 0.5;\n }\n });\n }\n\n contours.contour = contour;\n\n contours.size = function(_) {\n if (!arguments.length) return [dx, dy];\n var _0 = Math.ceil(_[0]), _1 = Math.ceil(_[1]);\n if (!(_0 > 0) || !(_1 > 0)) throw new Error(\"invalid size\");\n return dx = _0, dy = _1, contours;\n };\n\n contours.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), contours) : threshold;\n };\n\n contours.smooth = function(_) {\n return arguments.length ? (smooth = _ ? smoothLinear : noop, contours) : smooth === smoothLinear;\n };\n\n return contours;\n}\n","// TODO Optimize edge cases.\n// TODO Optimize index calculation.\n// TODO Optimize arguments.\nexport function blurX(source, target, r) {\n var n = source.width,\n m = source.height,\n w = (r << 1) + 1;\n for (var j = 0; j < m; ++j) {\n for (var i = 0, sr = 0; i < n + r; ++i) {\n if (i < n) {\n sr += source.data[i + j * n];\n }\n if (i >= r) {\n if (i >= w) {\n sr -= source.data[i - w + j * n];\n }\n target.data[i - r + j * n] = sr / Math.min(i + 1, n - 1 + w - i, w);\n }\n }\n }\n}\n\n// TODO Optimize edge cases.\n// TODO Optimize index calculation.\n// TODO Optimize arguments.\nexport function blurY(source, target, r) {\n var n = source.width,\n m = source.height,\n w = (r << 1) + 1;\n for (var i = 0; i < n; ++i) {\n for (var j = 0, sr = 0; j < m + r; ++j) {\n if (j < m) {\n sr += source.data[i + j * n];\n }\n if (j >= r) {\n if (j >= w) {\n sr -= source.data[i + (j - w) * n];\n }\n target.data[i + (j - r) * n] = sr / Math.min(j + 1, m - 1 + w - j, w);\n }\n }\n }\n}\n","import {max, range, tickStep} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {blurX, blurY} from \"./blur\";\nimport constant from \"./constant\";\nimport contours from \"./contours\";\n\nfunction defaultX(d) {\n return d[0];\n}\n\nfunction defaultY(d) {\n return d[1];\n}\n\nfunction defaultWeight() {\n return 1;\n}\n\nexport default function() {\n var x = defaultX,\n y = defaultY,\n weight = defaultWeight,\n dx = 960,\n dy = 500,\n r = 20, // blur radius\n k = 2, // log2(grid cell size)\n o = r * 3, // grid offset, to pad for blur\n n = (dx + o * 2) >> k, // grid width\n m = (dy + o * 2) >> k, // grid height\n threshold = constant(20);\n\n function density(data) {\n var values0 = new Float32Array(n * m),\n values1 = new Float32Array(n * m);\n\n data.forEach(function(d, i, data) {\n var xi = (+x(d, i, data) + o) >> k,\n yi = (+y(d, i, data) + o) >> k,\n wi = +weight(d, i, data);\n if (xi >= 0 && xi < n && yi >= 0 && yi < m) {\n values0[xi + yi * n] += wi;\n }\n });\n\n // TODO Optimize.\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n\n var tz = threshold(values0);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n var stop = max(values0);\n tz = tickStep(0, stop, tz);\n tz = range(0, Math.floor(stop / tz) * tz, tz);\n tz.shift();\n }\n\n return contours()\n .thresholds(tz)\n .size([n, m])\n (values0)\n .map(transform);\n }\n\n function transform(geometry) {\n geometry.value *= Math.pow(2, -2 * k); // Density in points per square pixel.\n geometry.coordinates.forEach(transformPolygon);\n return geometry;\n }\n\n function transformPolygon(coordinates) {\n coordinates.forEach(transformRing);\n }\n\n function transformRing(coordinates) {\n coordinates.forEach(transformPoint);\n }\n\n // TODO Optimize.\n function transformPoint(coordinates) {\n coordinates[0] = coordinates[0] * Math.pow(2, k) - o;\n coordinates[1] = coordinates[1] * Math.pow(2, k) - o;\n }\n\n function resize() {\n o = r * 3;\n n = (dx + o * 2) >> k;\n m = (dy + o * 2) >> k;\n return density;\n }\n\n density.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), density) : x;\n };\n\n density.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), density) : y;\n };\n\n density.weight = function(_) {\n return arguments.length ? (weight = typeof _ === \"function\" ? _ : constant(+_), density) : weight;\n };\n\n density.size = function(_) {\n if (!arguments.length) return [dx, dy];\n var _0 = Math.ceil(_[0]), _1 = Math.ceil(_[1]);\n if (!(_0 >= 0) && !(_0 >= 0)) throw new Error(\"invalid size\");\n return dx = _0, dy = _1, resize();\n };\n\n density.cellSize = function(_) {\n if (!arguments.length) return 1 << k;\n if (!((_ = +_) >= 1)) throw new Error(\"invalid cell size\");\n return k = Math.floor(Math.log(_) / Math.LN2), resize();\n };\n\n density.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), density) : threshold;\n };\n\n density.bandwidth = function(_) {\n if (!arguments.length) return Math.sqrt(r * (r + 1));\n if (!((_ = +_) >= 0)) throw new Error(\"invalid bandwidth\");\n return r = Math.round((Math.sqrt(4 * _ * _ + 1) - 1) / 2), resize();\n };\n\n return density;\n}\n","// Adds floating point numbers with twice the normal precision.\n// Reference: J. R. Shewchuk, Adaptive Precision Floating-Point Arithmetic and\n// Fast Robust Geometric Predicates, Discrete & Computational Geometry 18(3)\n// 305–363 (1997).\n// Code adapted from GeographicLib by Charles F. F. Karney,\n// http://geographiclib.sourceforge.net/\n\nexport default function() {\n return new Adder;\n}\n\nfunction Adder() {\n this.reset();\n}\n\nAdder.prototype = {\n constructor: Adder,\n reset: function() {\n this.s = // rounded value\n this.t = 0; // exact error\n },\n add: function(y) {\n add(temp, y, this.t);\n add(this, temp.s, this.s);\n if (this.s) this.t += temp.t;\n else this.s = temp.t;\n },\n valueOf: function() {\n return this.s;\n }\n};\n\nvar temp = new Adder;\n\nfunction add(adder, a, b) {\n var x = adder.s = a + b,\n bv = x - a,\n av = x - bv;\n adder.t = (a - av) + (b - bv);\n}\n","export var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var quarterPi = pi / 4;\nexport var tau = pi * 2;\n\nexport var degrees = 180 / pi;\nexport var radians = pi / 180;\n\nexport var abs = Math.abs;\nexport var atan = Math.atan;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var ceil = Math.ceil;\nexport var exp = Math.exp;\nexport var floor = Math.floor;\nexport var log = Math.log;\nexport var pow = Math.pow;\nexport var sin = Math.sin;\nexport var sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; };\nexport var sqrt = Math.sqrt;\nexport var tan = Math.tan;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x);\n}\n\nexport function haversin(x) {\n return (x = sin(x / 2)) * x;\n}\n","export default function noop() {}\n","function streamGeometry(geometry, stream) {\n if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) {\n streamGeometryType[geometry.type](geometry, stream);\n }\n}\n\nvar streamObjectType = {\n Feature: function(object, stream) {\n streamGeometry(object.geometry, stream);\n },\n FeatureCollection: function(object, stream) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) streamGeometry(features[i].geometry, stream);\n }\n};\n\nvar streamGeometryType = {\n Sphere: function(object, stream) {\n stream.sphere();\n },\n Point: function(object, stream) {\n object = object.coordinates;\n stream.point(object[0], object[1], object[2]);\n },\n MultiPoint: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]);\n },\n LineString: function(object, stream) {\n streamLine(object.coordinates, stream, 0);\n },\n MultiLineString: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamLine(coordinates[i], stream, 0);\n },\n Polygon: function(object, stream) {\n streamPolygon(object.coordinates, stream);\n },\n MultiPolygon: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamPolygon(coordinates[i], stream);\n },\n GeometryCollection: function(object, stream) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) streamGeometry(geometries[i], stream);\n }\n};\n\nfunction streamLine(coordinates, stream, closed) {\n var i = -1, n = coordinates.length - closed, coordinate;\n stream.lineStart();\n while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]);\n stream.lineEnd();\n}\n\nfunction streamPolygon(coordinates, stream) {\n var i = -1, n = coordinates.length;\n stream.polygonStart();\n while (++i < n) streamLine(coordinates[i], stream, 1);\n stream.polygonEnd();\n}\n\nexport default function(object, stream) {\n if (object && streamObjectType.hasOwnProperty(object.type)) {\n streamObjectType[object.type](object, stream);\n } else {\n streamGeometry(object, stream);\n }\n}\n","export default function(x) {\n return x;\n}\n","import adder from \"../adder.js\";\nimport {abs} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nvar areaSum = adder(),\n areaRingSum = adder(),\n x00,\n y00,\n x0,\n y0;\n\nvar areaStream = {\n point: noop,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: function() {\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function() {\n areaStream.lineStart = areaStream.lineEnd = areaStream.point = noop;\n areaSum.add(abs(areaRingSum));\n areaRingSum.reset();\n },\n result: function() {\n var area = areaSum / 2;\n areaSum.reset();\n return area;\n }\n};\n\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\n\nfunction areaPointFirst(x, y) {\n areaStream.point = areaPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction areaPoint(x, y) {\n areaRingSum.add(y0 * x - x0 * y);\n x0 = x, y0 = y;\n}\n\nfunction areaRingEnd() {\n areaPoint(x00, y00);\n}\n\nexport default areaStream;\n","import noop from \"../noop.js\";\n\nvar x0 = Infinity,\n y0 = x0,\n x1 = -x0,\n y1 = x1;\n\nvar boundsStream = {\n point: boundsPoint,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: noop,\n polygonEnd: noop,\n result: function() {\n var bounds = [[x0, y0], [x1, y1]];\n x1 = y1 = -(y0 = x0 = Infinity);\n return bounds;\n }\n};\n\nfunction boundsPoint(x, y) {\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n}\n\nexport default boundsStream;\n","import {sqrt} from \"../math.js\";\n\n// TODO Enforce positive area for exterior, negative area for interior?\n\nvar X0 = 0,\n Y0 = 0,\n Z0 = 0,\n X1 = 0,\n Y1 = 0,\n Z1 = 0,\n X2 = 0,\n Y2 = 0,\n Z2 = 0,\n x00,\n y00,\n x0,\n y0;\n\nvar centroidStream = {\n point: centroidPoint,\n lineStart: centroidLineStart,\n lineEnd: centroidLineEnd,\n polygonStart: function() {\n centroidStream.lineStart = centroidRingStart;\n centroidStream.lineEnd = centroidRingEnd;\n },\n polygonEnd: function() {\n centroidStream.point = centroidPoint;\n centroidStream.lineStart = centroidLineStart;\n centroidStream.lineEnd = centroidLineEnd;\n },\n result: function() {\n var centroid = Z2 ? [X2 / Z2, Y2 / Z2]\n : Z1 ? [X1 / Z1, Y1 / Z1]\n : Z0 ? [X0 / Z0, Y0 / Z0]\n : [NaN, NaN];\n X0 = Y0 = Z0 =\n X1 = Y1 = Z1 =\n X2 = Y2 = Z2 = 0;\n return centroid;\n }\n};\n\nfunction centroidPoint(x, y) {\n X0 += x;\n Y0 += y;\n ++Z0;\n}\n\nfunction centroidLineStart() {\n centroidStream.point = centroidPointFirstLine;\n}\n\nfunction centroidPointFirstLine(x, y) {\n centroidStream.point = centroidPointLine;\n centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidPointLine(x, y) {\n var dx = x - x0, dy = y - y0, z = sqrt(dx * dx + dy * dy);\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidLineEnd() {\n centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingStart() {\n centroidStream.point = centroidPointFirstRing;\n}\n\nfunction centroidRingEnd() {\n centroidPointRing(x00, y00);\n}\n\nfunction centroidPointFirstRing(x, y) {\n centroidStream.point = centroidPointRing;\n centroidPoint(x00 = x0 = x, y00 = y0 = y);\n}\n\nfunction centroidPointRing(x, y) {\n var dx = x - x0,\n dy = y - y0,\n z = sqrt(dx * dx + dy * dy);\n\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n\n z = y0 * x - x0 * y;\n X2 += z * (x0 + x);\n Y2 += z * (y0 + y);\n Z2 += z * 3;\n centroidPoint(x0 = x, y0 = y);\n}\n\nexport default centroidStream;\n","import {tau} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nexport default function PathContext(context) {\n this._context = context;\n}\n\nPathContext.prototype = {\n _radius: 4.5,\n pointRadius: function(_) {\n return this._radius = _, this;\n },\n polygonStart: function() {\n this._line = 0;\n },\n polygonEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line === 0) this._context.closePath();\n this._point = NaN;\n },\n point: function(x, y) {\n switch (this._point) {\n case 0: {\n this._context.moveTo(x, y);\n this._point = 1;\n break;\n }\n case 1: {\n this._context.lineTo(x, y);\n break;\n }\n default: {\n this._context.moveTo(x + this._radius, y);\n this._context.arc(x, y, this._radius, 0, tau);\n break;\n }\n }\n },\n result: noop\n};\n","import adder from \"../adder.js\";\nimport {sqrt} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nvar lengthSum = adder(),\n lengthRing,\n x00,\n y00,\n x0,\n y0;\n\nvar lengthStream = {\n point: noop,\n lineStart: function() {\n lengthStream.point = lengthPointFirst;\n },\n lineEnd: function() {\n if (lengthRing) lengthPoint(x00, y00);\n lengthStream.point = noop;\n },\n polygonStart: function() {\n lengthRing = true;\n },\n polygonEnd: function() {\n lengthRing = null;\n },\n result: function() {\n var length = +lengthSum;\n lengthSum.reset();\n return length;\n }\n};\n\nfunction lengthPointFirst(x, y) {\n lengthStream.point = lengthPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction lengthPoint(x, y) {\n x0 -= x, y0 -= y;\n lengthSum.add(sqrt(x0 * x0 + y0 * y0));\n x0 = x, y0 = y;\n}\n\nexport default lengthStream;\n","export default function PathString() {\n this._string = [];\n}\n\nPathString.prototype = {\n _radius: 4.5,\n _circle: circle(4.5),\n pointRadius: function(_) {\n if ((_ = +_) !== this._radius) this._radius = _, this._circle = null;\n return this;\n },\n polygonStart: function() {\n this._line = 0;\n },\n polygonEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line === 0) this._string.push(\"Z\");\n this._point = NaN;\n },\n point: function(x, y) {\n switch (this._point) {\n case 0: {\n this._string.push(\"M\", x, \",\", y);\n this._point = 1;\n break;\n }\n case 1: {\n this._string.push(\"L\", x, \",\", y);\n break;\n }\n default: {\n if (this._circle == null) this._circle = circle(this._radius);\n this._string.push(\"M\", x, \",\", y, this._circle);\n break;\n }\n }\n },\n result: function() {\n if (this._string.length) {\n var result = this._string.join(\"\");\n this._string = [];\n return result;\n } else {\n return null;\n }\n }\n};\n\nfunction circle(radius) {\n return \"m0,\" + radius\n + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + -2 * radius\n + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + 2 * radius\n + \"z\";\n}\n","import identity from \"../identity.js\";\nimport stream from \"../stream.js\";\nimport pathArea from \"./area.js\";\nimport pathBounds from \"./bounds.js\";\nimport pathCentroid from \"./centroid.js\";\nimport PathContext from \"./context.js\";\nimport pathMeasure from \"./measure.js\";\nimport PathString from \"./string.js\";\n\nexport default function(projection, context) {\n var pointRadius = 4.5,\n projectionStream,\n contextStream;\n\n function path(object) {\n if (object) {\n if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n stream(object, projectionStream(contextStream));\n }\n return contextStream.result();\n }\n\n path.area = function(object) {\n stream(object, projectionStream(pathArea));\n return pathArea.result();\n };\n\n path.measure = function(object) {\n stream(object, projectionStream(pathMeasure));\n return pathMeasure.result();\n };\n\n path.bounds = function(object) {\n stream(object, projectionStream(pathBounds));\n return pathBounds.result();\n };\n\n path.centroid = function(object) {\n stream(object, projectionStream(pathCentroid));\n return pathCentroid.result();\n };\n\n path.projection = function(_) {\n return arguments.length ? (projectionStream = _ == null ? (projection = null, identity) : (projection = _).stream, path) : projection;\n };\n\n path.context = function(_) {\n if (!arguments.length) return context;\n contextStream = _ == null ? (context = null, new PathString) : new PathContext(context = _);\n if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n return path;\n };\n\n path.pointRadius = function(_) {\n if (!arguments.length) return pointRadius;\n pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n return path;\n };\n\n return path.projection(projection).context(context);\n}\n","import { I1DChart } from \"@hpcc-js/api\";\nimport { InputField } from \"@hpcc-js/common\";\nimport { contourDensity as d3ContourDensity } from \"d3-contour\";\nimport { geoPath } from \"d3-geo\";\nimport { XYAxis } from \"./XYAxis.ts\";\n\nexport class Contour extends XYAxis {\n static __inputs: InputField[] = [{\n id: \"x\",\n type: \"any\"\n }, {\n id: \"y\",\n type: \"number\"\n }];\n\n protected _dataMinWeight;\n protected _dataMaxWeight;\n constructor() {\n super();\n this\n .xAxisGuideLines_default(false)\n .yAxisGuideLines_default(false)\n .xAxisType_default(\"linear\")\n ;\n }\n\n xPos(host: XYAxis, d) {\n return host.orientation() === \"horizontal\" ? host.dataPos(d.label) : host.valuePos(d.value);\n }\n\n yPos(host: XYAxis, d) {\n return host.orientation() === \"horizontal\" ? host.valuePos(d.value) : host.dataPos(d.label);\n }\n\n layerEnter(host: XYAxis, element, duration: number = 250) {\n super.layerEnter(host, element, duration);\n }\n\n layerUpdate(host: XYAxis, element, duration: number = 250) {\n super.layerUpdate(host, element, duration);\n\n this._palette = this._palette.switch(this.paletteID());\n\n const data = this.flattenData(this.layerColumns(host), this.layerData(host));\n const contourData = d3ContourDensity()\n .x(d => this.xPos(host, d))\n .y(d => this.yPos(host, d))\n .size([this.width(), this.height()])\n .bandwidth(this.contourBandwidth())(data)\n ;\n const _vals = contourData.map(d => d.value);\n const minValue = Math.min.apply(this, _vals);\n const maxValue = Math.max.apply(this, _vals);\n this._dataMinWeight = minValue;\n this._dataMaxWeight = maxValue;\n const lines = element.selectAll(\"path\").data(contourData);\n lines.enter().append(\"path\")\n .merge(lines)\n .attr(\"d\", geoPath())\n .attr(\"fill\", d => this.showContourFill() ? this._palette(d.value, minValue, maxValue) : \"none\")\n .attr(\"stroke\", this.contourStrokeColor())\n .attr(\"stroke-linejoin\", \"round\")\n .attr(\"stroke-width\", this.contourStrokeWidth())\n ;\n lines.exit().remove();\n }\n\n exit(_domNode, _element) {\n super.exit(_domNode, _element);\n }\n}\nContour.prototype._class += \" chart_Contour\";\nContour.prototype.implements(I1DChart.prototype);\n\nexport interface Contour {\n paletteID(): string;\n paletteID(_: string): this;\n useClonedPalette(): boolean;\n useClonedPalette(_: boolean): this;\n showContourFill(): boolean;\n showContourFill(_: boolean): this;\n showContour(): boolean;\n showContour(_: boolean): this;\n contourBandwidth(): number;\n contourBandwidth(_: number): this;\n contourStrokeColor(): string;\n contourStrokeColor(_: string): this;\n contourStrokeWidth(): number;\n contourStrokeWidth(_: number): this;\n}\nContour.prototype.publish(\"paletteID\", \"YlGnBu\", \"string\", \"Color palette for this widget\");\nContour.prototype.publish(\"useClonedPalette\", true, \"boolean\", \"Enable or disable using a cloned palette\");\nContour.prototype.publish(\"showContourFill\", true, \"boolean\", \"Show/hide the contour background colors\");\nContour.prototype.publish(\"showContour\", true, \"boolean\", \"Show/hide the contour border lines\");\nContour.prototype.publish(\"contourBandwidth\", 40, \"number\", \"Controls the sensitivity of the contour grouping algorithm\");\nContour.prototype.publish(\"contourStrokeColor\", \"#2C3A47\", \"html-color\", \"Color of the contour border lines\");\nContour.prototype.publish(\"contourStrokeWidth\", 1, \"number\", \"Width of the contour border lines\");\n","import { Bar } from \"./Bar.ts\";\n\nexport class Gantt extends Bar {\n constructor() {\n super();\n\n this\n .orientation_default(\"vertical\")\n .xAxisType_default(\"ordinal\")\n .yAxisType_default(\"time\")\n ;\n }\n}\nGantt.prototype._class += \" chart_Gantt\";\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","export var epsilon = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = 2 * pi;\n","import {path} from \"d3-path\";\nimport constant from \"./constant\";\nimport {epsilon, pi, halfPi, tau} from \"./math\";\n\nfunction arcInnerRadius(d) {\n return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n return d && d.padAngle; // Note: optional!\n}\n\nfunction asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n var x10 = x1 - x0, y10 = y1 - y0,\n x32 = x3 - x2, y32 = y3 - y2,\n t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / (y32 * x10 - x32 * y10);\n return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n var x01 = x0 - x1,\n y01 = y0 - y1,\n lo = (cw ? rc : -rc) / Math.sqrt(x01 * x01 + y01 * y01),\n ox = lo * y01,\n oy = -lo * x01,\n x11 = x0 + ox,\n y11 = y0 + oy,\n x10 = x1 + ox,\n y10 = y1 + oy,\n x00 = (x11 + x10) / 2,\n y00 = (y11 + y10) / 2,\n dx = x10 - x11,\n dy = y10 - y11,\n d2 = dx * dx + dy * dy,\n r = r1 - rc,\n D = x11 * y10 - x10 * y11,\n d = (dy < 0 ? -1 : 1) * Math.sqrt(Math.max(0, r * r * d2 - D * D)),\n cx0 = (D * dy - dx * d) / d2,\n cy0 = (-D * dx - dy * d) / d2,\n cx1 = (D * dy + dx * d) / d2,\n cy1 = (-D * dx + dy * d) / d2,\n dx0 = cx0 - x00,\n dy0 = cy0 - y00,\n dx1 = cx1 - x00,\n dy1 = cy1 - y00;\n\n // Pick the closer of the two intersection points.\n // TODO Is there a faster way to determine which intersection to use?\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n return {\n cx: cx0,\n cy: cy0,\n x01: -ox,\n y01: -oy,\n x11: cx0 * (r1 / r - 1),\n y11: cy0 * (r1 / r - 1)\n };\n}\n\nexport default function() {\n var innerRadius = arcInnerRadius,\n outerRadius = arcOuterRadius,\n cornerRadius = constant(0),\n padRadius = null,\n startAngle = arcStartAngle,\n endAngle = arcEndAngle,\n padAngle = arcPadAngle,\n context = null;\n\n function arc() {\n var buffer,\n r,\n r0 = +innerRadius.apply(this, arguments),\n r1 = +outerRadius.apply(this, arguments),\n a0 = startAngle.apply(this, arguments) - halfPi,\n a1 = endAngle.apply(this, arguments) - halfPi,\n da = Math.abs(a1 - a0),\n cw = a1 > a0;\n\n if (!context) context = buffer = path();\n\n // Ensure that the outer radius is always larger than the inner radius.\n if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n // Is it a point?\n if (!(r1 > epsilon)) context.moveTo(0, 0);\n\n // Or is it a circle or annulus?\n else if (da > tau - epsilon) {\n context.moveTo(r1 * Math.cos(a0), r1 * Math.sin(a0));\n context.arc(0, 0, r1, a0, a1, !cw);\n if (r0 > epsilon) {\n context.moveTo(r0 * Math.cos(a1), r0 * Math.sin(a1));\n context.arc(0, 0, r0, a1, a0, cw);\n }\n }\n\n // Or is it a circular or annular sector?\n else {\n var a01 = a0,\n a11 = a1,\n a00 = a0,\n a10 = a1,\n da0 = da,\n da1 = da,\n ap = padAngle.apply(this, arguments) / 2,\n rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : Math.sqrt(r0 * r0 + r1 * r1)),\n rc = Math.min(Math.abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n rc0 = rc,\n rc1 = rc,\n t0,\n t1;\n\n // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n if (rp > epsilon) {\n var p0 = asin(rp / r0 * Math.sin(ap)),\n p1 = asin(rp / r1 * Math.sin(ap));\n if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n }\n\n var x01 = r1 * Math.cos(a01),\n y01 = r1 * Math.sin(a01),\n x10 = r0 * Math.cos(a10),\n y10 = r0 * Math.sin(a10);\n\n // Apply rounded corners?\n if (rc > epsilon) {\n var x11 = r1 * Math.cos(a11),\n y11 = r1 * Math.sin(a11),\n x00 = r0 * Math.cos(a00),\n y00 = r0 * Math.sin(a00);\n\n // Restrict the corner radius according to the sector angle.\n if (da < pi) {\n var oc = da0 > epsilon ? intersect(x01, y01, x00, y00, x11, y11, x10, y10) : [x10, y10],\n ax = x01 - oc[0],\n ay = y01 - oc[1],\n bx = x11 - oc[0],\n by = y11 - oc[1],\n kc = 1 / Math.sin(Math.acos((ax * bx + ay * by) / (Math.sqrt(ax * ax + ay * ay) * Math.sqrt(bx * bx + by * by))) / 2),\n lc = Math.sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = Math.min(rc, (r0 - lc) / (kc - 1));\n rc1 = Math.min(rc, (r1 - lc) / (kc + 1));\n }\n }\n\n // Is the sector collapsed to a line?\n if (!(da1 > epsilon)) context.moveTo(x01, y01);\n\n // Does the sector’s outer ring have rounded corners?\n else if (rc1 > epsilon) {\n t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, Math.atan2(t0.y01, t0.x01), Math.atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc1, Math.atan2(t0.y01, t0.x01), Math.atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r1, Math.atan2(t0.cy + t0.y11, t0.cx + t0.x11), Math.atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n context.arc(t1.cx, t1.cy, rc1, Math.atan2(t1.y11, t1.x11), Math.atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the outer ring just a circular arc?\n else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n // Is there no inner ring, and it’s a circular sector?\n // Or perhaps it’s an annular sector collapsed due to padding?\n if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n // Does the sector’s inner ring (or point) have rounded corners?\n else if (rc0 > epsilon) {\n t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, Math.atan2(t0.y01, t0.x01), Math.atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc0, Math.atan2(t0.y01, t0.x01), Math.atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r0, Math.atan2(t0.cy + t0.y11, t0.cx + t0.x11), Math.atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n context.arc(t1.cx, t1.cy, rc0, Math.atan2(t1.y11, t1.x11), Math.atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the inner ring just a circular arc?\n else context.arc(0, 0, r0, a10, a00, cw);\n }\n\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n arc.centroid = function() {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;\n return [Math.cos(a) * r, Math.sin(a) * r];\n };\n\n arc.innerRadius = function(_) {\n return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n };\n\n arc.outerRadius = function(_) {\n return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n };\n\n arc.cornerRadius = function(_) {\n return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n };\n\n arc.padRadius = function(_) {\n return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n };\n\n arc.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n };\n\n arc.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n };\n\n arc.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n };\n\n arc.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n };\n\n return arc;\n}\n","function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant\";\nimport curveLinear from \"./curve/linear\";\nimport {x as pointX, y as pointY} from \"./point\";\n\nexport default function() {\n var x = pointX,\n y = pointY,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n function line(data) {\n var i,\n n = data.length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n","export default function() {}\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n (2 * that._x0 + that._x1) / 3,\n (2 * that._y0 + that._y1) / 3,\n (that._x0 + 2 * that._x1) / 3,\n (that._y0 + 2 * that._y1) / 3,\n (that._x0 + 4 * that._x1 + x) / 6,\n (that._y0 + 4 * that._y1 + y) / 6\n );\n}\n\nexport function Basis(context) {\n this._context = context;\n}\n\nBasis.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 3: point(this, this._x1, this._y1); // proceed\n case 2: this._context.lineTo(this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new Basis(context);\n}\n","import {Basis} from \"./basis\";\n\nfunction Bundle(context, beta) {\n this._basis = new Basis(context);\n this._beta = beta;\n}\n\nBundle.prototype = {\n lineStart: function() {\n this._x = [];\n this._y = [];\n this._basis.lineStart();\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n j = x.length - 1;\n\n if (j > 0) {\n var x0 = x[0],\n y0 = y[0],\n dx = x[j] - x0,\n dy = y[j] - y0,\n i = -1,\n t;\n\n while (++i <= j) {\n t = i / j;\n this._basis.point(\n this._beta * x[i] + (1 - this._beta) * (x0 + t * dx),\n this._beta * y[i] + (1 - this._beta) * (y0 + t * dy)\n );\n }\n }\n\n this._x = this._y = null;\n this._basis.lineEnd();\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\nexport default (function custom(beta) {\n\n function bundle(context) {\n return beta === 1 ? new Basis(context) : new Bundle(context, beta);\n }\n\n bundle.beta = function(beta) {\n return custom(+beta);\n };\n\n return bundle;\n})(0.85);\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n that._x1 + that._k * (that._x2 - that._x0),\n that._y1 + that._k * (that._y2 - that._y0),\n that._x2 + that._k * (that._x1 - x),\n that._y2 + that._k * (that._y1 - y),\n that._x2,\n that._y2\n );\n}\n\nexport function Cardinal(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinal.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: point(this, this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; this._x1 = x, this._y1 = y; break;\n case 2: this._point = 3; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new Cardinal(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import noop from \"../noop\";\nimport {point} from \"./cardinal\";\n\nexport function CardinalClosed(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new CardinalClosed(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import {point} from \"./cardinal\";\n\nexport function CardinalOpen(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new CardinalOpen(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import {epsilon} from \"../math\";\nimport {Cardinal} from \"./cardinal\";\n\nexport function point(that, x, y) {\n var x1 = that._x1,\n y1 = that._y1,\n x2 = that._x2,\n y2 = that._y2;\n\n if (that._l01_a > epsilon) {\n var a = 2 * that._l01_2a + 3 * that._l01_a * that._l12_a + that._l12_2a,\n n = 3 * that._l01_a * (that._l01_a + that._l12_a);\n x1 = (x1 * a - that._x0 * that._l12_2a + that._x2 * that._l01_2a) / n;\n y1 = (y1 * a - that._y0 * that._l12_2a + that._y2 * that._l01_2a) / n;\n }\n\n if (that._l23_a > epsilon) {\n var b = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a,\n m = 3 * that._l23_a * (that._l23_a + that._l12_a);\n x2 = (x2 * b + that._x1 * that._l23_2a - x * that._l12_2a) / m;\n y2 = (y2 * b + that._y1 * that._l23_2a - y * that._l12_2a) / m;\n }\n\n that._context.bezierCurveTo(x1, y1, x2, y2, that._x2, that._y2);\n}\n\nfunction CatmullRom(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRom.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: this.point(this._x2, this._y2); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; // proceed\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRom(context, alpha) : new Cardinal(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import {CardinalClosed} from \"./cardinalClosed\";\nimport noop from \"../noop\";\nimport {point} from \"./catmullRom\";\n\nfunction CatmullRomClosed(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomClosed(context, alpha) : new CardinalClosed(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import {CardinalOpen} from \"./cardinalOpen\";\nimport {point} from \"./catmullRom\";\n\nfunction CatmullRomOpen(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomOpen(context, alpha) : new CardinalOpen(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","function sign(x) {\n return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n var h0 = that._x1 - that._x0,\n h1 = x2 - that._x1,\n s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n p = (s0 * h1 + s1 * h0) / (h0 + h1);\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n var h = that._x1 - that._x0;\n return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n var x0 = that._x0,\n y0 = that._y0,\n x1 = that._x1,\n y1 = that._y1,\n dx = (x1 - x0) / 3;\n that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n this._context = context;\n}\n\nMonotoneX.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 =\n this._t0 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x1, this._y1); break;\n case 3: point(this, this._t0, slope2(this, this._t0)); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n var t1 = NaN;\n\n x = +x, y = +y;\n if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n }\n\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n this._t0 = t1;\n }\n}\n\nfunction MonotoneY(context) {\n this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n this._context = context;\n}\n\nReflectContext.prototype = {\n moveTo: function(x, y) { this._context.moveTo(y, x); },\n closePath: function() { this._context.closePath(); },\n lineTo: function(x, y) { this._context.lineTo(y, x); },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nexport function monotoneX(context) {\n return new MonotoneX(context);\n}\n\nexport function monotoneY(context) {\n return new MonotoneY(context);\n}\n","import { event, select } from 'd3-selection';\nimport { drag } from 'd3-drag';\nimport { arc, curveCatmullRom, curveLinear, line } from 'd3-shape';\nimport { dispatch } from 'd3-dispatch';\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\n\n\n\n\n\n\n\n\n\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n\n\n\n\n\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar get = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n};\n\nvar inherits = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\n\n\n\n\n\n\n\n\n\n\nvar possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar toConsumableArray = function (arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n } else {\n return Array.from(arr);\n }\n};\n\nvar Annotation = function () {\n function Annotation(_ref) {\n var _ref$x = _ref.x,\n x = _ref$x === undefined ? 0 : _ref$x,\n _ref$y = _ref.y,\n y = _ref$y === undefined ? 0 : _ref$y,\n nx = _ref.nx,\n ny = _ref.ny,\n _ref$dy = _ref.dy,\n dy = _ref$dy === undefined ? 0 : _ref$dy,\n _ref$dx = _ref.dx,\n dx = _ref$dx === undefined ? 0 : _ref$dx,\n _ref$color = _ref.color,\n color = _ref$color === undefined ? \"grey\" : _ref$color,\n data = _ref.data,\n type = _ref.type,\n subject = _ref.subject,\n connector = _ref.connector,\n note = _ref.note,\n disable = _ref.disable,\n id = _ref.id,\n className = _ref.className;\n classCallCheck(this, Annotation);\n\n this._dx = nx !== undefined ? nx - x : dx;\n this._dy = ny !== undefined ? ny - y : dy;\n this._x = x;\n this._y = y;\n this._color = color;\n this.id = id;\n this._className = className || \"\";\n\n this._type = type || \"\";\n this.data = data;\n\n this.note = note || {};\n this.connector = connector || {};\n this.subject = subject || {};\n\n this.disable = disable || [];\n }\n\n createClass(Annotation, [{\n key: \"updatePosition\",\n value: function updatePosition() {\n if (this.type.setPosition) {\n this.type.setPosition();\n if (this.type.subject && this.type.subject.selectAll(\":not(.handle)\").nodes().length !== 0) {\n this.type.redrawSubject();\n }\n }\n }\n }, {\n key: \"clearComponents\",\n value: function clearComponents() {\n this.type.clearComponents && this.type.clearComponents();\n }\n }, {\n key: \"updateOffset\",\n value: function updateOffset() {\n if (this.type.setOffset) {\n this.type.setOffset();\n\n if (this.type.connector.selectAll(\":not(.handle)\").nodes().length !== 0) {\n this.type.redrawConnector();\n }\n\n this.type.redrawNote();\n }\n }\n }, {\n key: \"className\",\n get: function get$$1() {\n return this._className;\n },\n set: function set$$1(className) {\n this._className = className;\n if (this.type.setClassName) this.type.setClassName();\n }\n }, {\n key: \"type\",\n get: function get$$1() {\n return this._type;\n },\n set: function set$$1(type) {\n this._type = type;\n this.clearComponents();\n }\n }, {\n key: \"x\",\n get: function get$$1() {\n return this._x;\n },\n set: function set$$1(x) {\n this._x = x;\n this.updatePosition();\n }\n }, {\n key: \"y\",\n get: function get$$1() {\n return this._y;\n },\n set: function set$$1(y) {\n this._y = y;\n this.updatePosition();\n }\n }, {\n key: \"color\",\n get: function get$$1() {\n return this._color;\n },\n set: function set$$1(color) {\n this._color = color;\n this.updatePosition();\n }\n }, {\n key: \"dx\",\n get: function get$$1() {\n return this._dx;\n },\n set: function set$$1(dx) {\n this._dx = dx;\n this.updateOffset();\n }\n }, {\n key: \"dy\",\n get: function get$$1() {\n return this._dy;\n },\n set: function set$$1(dy) {\n this._dy = dy;\n this.updateOffset();\n }\n }, {\n key: \"nx\",\n set: function set$$1(nx) {\n this._dx = nx - this._x;\n this.updateOffset();\n }\n }, {\n key: \"ny\",\n set: function set$$1(ny) {\n this._dy = ny - this._y;\n this.updateOffset();\n }\n }, {\n key: \"offset\",\n get: function get$$1() {\n return { x: this._dx, y: this._dy };\n },\n set: function set$$1(_ref2) {\n var x = _ref2.x,\n y = _ref2.y;\n\n this._dx = x;\n this._dy = y;\n this.updateOffset();\n }\n }, {\n key: \"position\",\n get: function get$$1() {\n return { x: this._x, y: this._y };\n },\n set: function set$$1(_ref3) {\n var x = _ref3.x,\n y = _ref3.y;\n\n this._x = x;\n this._y = y;\n this.updatePosition();\n }\n }, {\n key: \"translation\",\n get: function get$$1() {\n return {\n x: this._x + this._dx,\n y: this._y + this._dy\n };\n }\n }, {\n key: \"json\",\n get: function get$$1() {\n var json = {\n x: this._x,\n y: this._y,\n dx: this._dx,\n dy: this._dy\n };\n\n if (this.data && Object.keys(this.data).length > 0) json.data = this.data;\n if (this.type) json.type = this.type;\n if (this._className) json.className = this._className;\n\n if (Object.keys(this.connector).length > 0) json.connector = this.connector;\n if (Object.keys(this.subject).length > 0) json.subject = this.subject;\n if (Object.keys(this.note).length > 0) json.note = this.note;\n\n return json;\n }\n }]);\n return Annotation;\n}();\n\nvar AnnotationCollection = function () {\n function AnnotationCollection(_ref) {\n var annotations = _ref.annotations,\n accessors = _ref.accessors,\n accessorsInverse = _ref.accessorsInverse;\n classCallCheck(this, AnnotationCollection);\n\n this.accessors = accessors;\n this.accessorsInverse = accessorsInverse;\n this.annotations = annotations;\n }\n\n createClass(AnnotationCollection, [{\n key: \"clearTypes\",\n value: function clearTypes(newSettings) {\n this.annotations.forEach(function (d) {\n d.type = undefined;\n d.subject = newSettings && newSettings.subject || d.subject;\n d.connector = newSettings && newSettings.connector || d.connector;\n d.note = newSettings && newSettings.note || d.note;\n });\n }\n }, {\n key: \"setPositionWithAccessors\",\n value: function setPositionWithAccessors() {\n var _this = this;\n\n this.annotations.forEach(function (d) {\n d.type.setPositionWithAccessors(_this.accessors);\n });\n }\n }, {\n key: \"editMode\",\n value: function editMode(_editMode) {\n this.annotations.forEach(function (a) {\n if (a.type) {\n a.type.editMode = _editMode;\n a.type.updateEditMode();\n }\n });\n }\n }, {\n key: \"updateDisable\",\n value: function updateDisable(disable) {\n this.annotations.forEach(function (a) {\n a.disable = disable;\n if (a.type) {\n disable.forEach(function (d) {\n if (a.type[d]) {\n a.type[d].remove && a.type[d].remove();\n a.type[d] = undefined;\n }\n });\n }\n });\n }\n }, {\n key: \"updateTextWrap\",\n value: function updateTextWrap(textWrap) {\n this.annotations.forEach(function (a) {\n if (a.type && a.type.updateTextWrap) {\n a.type.updateTextWrap(textWrap);\n }\n });\n }\n }, {\n key: \"updateText\",\n value: function updateText() {\n this.annotations.forEach(function (a) {\n if (a.type && a.type.drawText) {\n a.type.drawText();\n }\n });\n }\n }, {\n key: \"updateNotePadding\",\n value: function updateNotePadding(notePadding) {\n this.annotations.forEach(function (a) {\n if (a.type) {\n a.type.notePadding = notePadding;\n }\n });\n }\n }, {\n key: \"json\",\n get: function get$$1() {\n var _this2 = this;\n\n return this.annotations.map(function (a) {\n var json = a.json;\n if (_this2.accessorsInverse && a.data) {\n json.data = {};\n Object.keys(_this2.accessorsInverse).forEach(function (k) {\n json.data[k] = _this2.accessorsInverse[k]({ x: a.x, y: a.y });\n\n //TODO make this feasible to map back to data for other types of subjects\n });\n }\n return json;\n });\n }\n }, {\n key: \"noteNodes\",\n get: function get$$1() {\n return this.annotations.map(function (a) {\n return _extends({}, a.type.getNoteBBoxOffset(), { positionX: a.x, positionY: a.y });\n });\n }\n\n //TODO: come back and rethink if a.x and a.y are applicable in all situations\n // get connectorNodes() {\n // return this.annotations.map(a => ({ ...a.type.getConnectorBBox(), startX: a.x, startY: a.y}))\n // }\n\n // get subjectNodes() {\n // return this.annotations.map(a => ({ ...a.type.getSubjectBBox(), startX: a.x, startY: a.y}))\n // }\n\n // get annotationNodes() {\n // return this.annotations.map(a => ({ ...a.type.getAnnotationBBox(), startX: a.x, startY: a.y}))\n // }\n\n }]);\n return AnnotationCollection;\n}();\n\nvar pointHandle = function pointHandle(_ref) {\n var _ref$cx = _ref.cx,\n cx = _ref$cx === undefined ? 0 : _ref$cx,\n _ref$cy = _ref.cy,\n cy = _ref$cy === undefined ? 0 : _ref$cy;\n\n return { move: { x: cx, y: cy } };\n};\n\nvar circleHandles = function circleHandles(_ref2) {\n var _ref2$cx = _ref2.cx,\n cx = _ref2$cx === undefined ? 0 : _ref2$cx,\n _ref2$cy = _ref2.cy,\n cy = _ref2$cy === undefined ? 0 : _ref2$cy,\n r1 = _ref2.r1,\n r2 = _ref2.r2,\n padding = _ref2.padding;\n\n var h = { move: { x: cx, y: cy } };\n\n if (r1 !== undefined) {\n h.r1 = { x: cx + r1 / Math.sqrt(2), y: cy + r1 / Math.sqrt(2) };\n }\n\n if (r2 !== undefined) {\n h.r2 = { x: cx + r2 / Math.sqrt(2), y: cy + r2 / Math.sqrt(2) };\n }\n\n if (padding !== undefined) {\n h.padding = { x: cx + r1 + padding, y: cy };\n }\n\n return h;\n};\n\n\n\n\n\n//arc handles\nvar addHandles = function addHandles(_ref5) {\n var group = _ref5.group,\n handles = _ref5.handles,\n _ref5$r = _ref5.r,\n r = _ref5$r === undefined ? 10 : _ref5$r;\n\n //give it a group and x,y to draw handles\n //then give it instructions on what the handles change\n var h = group.selectAll(\"circle.handle\").data(handles);\n\n h.enter().append(\"circle\").attr(\"class\", \"handle\").attr(\"fill\", \"grey\").attr(\"fill-opacity\", 0.1).attr(\"cursor\", \"move\").attr(\"stroke-dasharray\", 5).attr(\"stroke\", \"grey\").call(drag().container(select(\"g.annotations\").node()).on(\"start\", function (d) {\n return d.start && d.start(d);\n }).on(\"drag\", function (d) {\n return d.drag && d.drag(d);\n }).on(\"end\", function (d) {\n return d.end && d.end(d);\n }));\n\n group.selectAll(\"circle.handle\").attr(\"cx\", function (d) {\n return d.x;\n }).attr(\"cy\", function (d) {\n return d.y;\n }).attr(\"r\", function (d) {\n return d.r || r;\n }).attr(\"class\", function (d) {\n return \"handle \" + (d.className || \"\");\n });\n\n h.exit().remove();\n};\n\nvar leftRightDynamic = function leftRightDynamic(align, y) {\n if (align === \"dynamic\" || align === \"left\" || align === \"right\") {\n if (y < 0) {\n align = \"top\";\n } else {\n align = \"bottom\";\n }\n }\n return align;\n};\n\nvar topBottomDynamic = function topBottomDynamic(align, x) {\n if (align === \"dynamic\" || align === \"top\" || align === \"bottom\") {\n if (x < 0) {\n align = \"right\";\n } else {\n align = \"left\";\n }\n }\n return align;\n};\n\nvar orientationTopBottom = [\"topBottom\", \"top\", \"bottom\"];\nvar orientationLeftRight = [\"leftRight\", \"left\", \"right\"];\n\nvar noteAlignment = (function (_ref) {\n var _ref$padding = _ref.padding,\n padding = _ref$padding === undefined ? 0 : _ref$padding,\n _ref$bbox = _ref.bbox,\n bbox = _ref$bbox === undefined ? { x: 0, y: 0, width: 0, height: 0 } : _ref$bbox,\n align = _ref.align,\n orientation = _ref.orientation,\n _ref$offset = _ref.offset,\n offset = _ref$offset === undefined ? { x: 0, y: 0 } : _ref$offset;\n\n var x = -bbox.x;\n var y = 0; //-bbox.y\n if (orientationTopBottom.indexOf(orientation) !== -1) {\n align = topBottomDynamic(align, offset.x);\n if (offset.y < 0 && orientation === \"topBottom\" || orientation === \"top\") {\n y -= bbox.height + padding;\n } else {\n y += padding;\n }\n\n if (align === \"middle\") {\n x -= bbox.width / 2;\n } else if (align === \"right\") {\n x -= bbox.width;\n }\n } else if (orientationLeftRight.indexOf(orientation) !== -1) {\n align = leftRightDynamic(align, offset.y);\n if (offset.x < 0 && orientation === \"leftRight\" || orientation === \"left\") {\n x -= bbox.width + padding;\n } else {\n x += padding;\n }\n\n if (align === \"middle\") {\n y -= bbox.height / 2;\n } else if (align === \"top\") {\n y -= bbox.height;\n }\n }\n\n return { x: x, y: y };\n});\n\nvar lineBuilder = function lineBuilder(_ref) {\n var data = _ref.data,\n _ref$curve = _ref.curve,\n curve = _ref$curve === undefined ? curveLinear : _ref$curve,\n canvasContext = _ref.canvasContext,\n className = _ref.className,\n classID = _ref.classID;\n\n var lineGen = line().curve(curve);\n\n var builder = {\n type: 'path',\n className: className,\n classID: classID,\n data: data\n };\n\n if (canvasContext) {\n lineGen.context(canvasContext);\n builder.pathMethods = lineGen;\n } else {\n builder.attrs = {\n d: lineGen(data)\n };\n }\n\n return builder;\n};\n\nvar arcBuilder = function arcBuilder(_ref2) {\n var data = _ref2.data,\n canvasContext = _ref2.canvasContext,\n className = _ref2.className,\n classID = _ref2.classID;\n\n\n var builder = {\n type: 'path',\n className: className,\n classID: classID,\n data: data\n };\n\n var arcShape = arc().innerRadius(data.innerRadius || 0).outerRadius(data.outerRadius || data.radius || 2).startAngle(data.startAngle || 0).endAngle(data.endAngle || 2 * Math.PI);\n\n if (canvasContext) {\n arcShape.context(canvasContext);\n builder.pathMethods = lineGen;\n } else {\n\n builder.attrs = {\n d: arcShape()\n };\n }\n\n return builder;\n};\n\nvar noteVertical = (function (_ref) {\n var align = _ref.align,\n _ref$x = _ref.x,\n x = _ref$x === undefined ? 0 : _ref$x,\n _ref$y = _ref.y,\n y = _ref$y === undefined ? 0 : _ref$y,\n bbox = _ref.bbox,\n offset = _ref.offset;\n\n align = leftRightDynamic(align, offset.y);\n\n if (align === \"top\") {\n y -= bbox.height;\n } else if (align === \"middle\") {\n y -= bbox.height / 2;\n }\n\n var data = [[x, y], [x, y + bbox.height]];\n return { components: [lineBuilder({ data: data, className: \"note-line\" })] };\n});\n\nvar noteHorizontal = (function (_ref) {\n var align = _ref.align,\n _ref$x = _ref.x,\n x = _ref$x === undefined ? 0 : _ref$x,\n _ref$y = _ref.y,\n y = _ref$y === undefined ? 0 : _ref$y,\n offset = _ref.offset,\n bbox = _ref.bbox;\n\n align = topBottomDynamic(align, offset.x);\n\n if (align === \"right\") {\n x -= bbox.width;\n } else if (align === \"middle\") {\n x -= bbox.width / 2;\n }\n\n var data = [[x, y], [x + bbox.width, y]];\n return { components: [lineBuilder({ data: data, className: \"note-line\" })] };\n});\n\nvar lineSetup = function lineSetup(_ref) {\n var type = _ref.type,\n subjectType = _ref.subjectType;\n\n var annotation = type.annotation;\n var offset = annotation.position;\n\n var x1 = annotation.x - offset.x,\n x2 = x1 + annotation.dx,\n y1 = annotation.y - offset.y,\n y2 = y1 + annotation.dy;\n\n var subjectData = annotation.subject;\n\n if (subjectType === \"circle\" && (subjectData.outerRadius || subjectData.radius)) {\n var h = Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));\n var angle = Math.asin(-y2 / h);\n var r = subjectData.outerRadius || subjectData.radius + (subjectData.radiusPadding || 0);\n\n x1 = Math.abs(Math.cos(angle) * r) * (x2 < 0 ? -1 : 1);\n y1 = Math.abs(Math.sin(angle) * r) * (y2 < 0 ? -1 : 1);\n }\n\n if (subjectType === \"rect\") {\n var width = subjectData.width,\n height = subjectData.height;\n\n\n if (width > 0 && annotation.dx > 0 || width < 0 && annotation.dx < 0) {\n if (Math.abs(width) > Math.abs(annotation.dx)) x1 = width / 2;else x1 = width;\n }\n if (height > 0 && annotation.dy > 0 || height < 0 && annotation.dy < 0) {\n if (Math.abs(height) > Math.abs(annotation.dy)) y1 = height / 2;else y1 = height;\n }\n if (x1 === width / 2 && y1 === height / 2) {\n x1 = x2;y1 = y2;\n }\n }\n\n return [[x1, y1], [x2, y2]];\n};\n\nvar connectorLine = (function (connectorData) {\n var data = lineSetup(connectorData);\n return { components: [lineBuilder({ data: data, className: \"connector\" })] };\n});\n\nvar connectorElbow = (function (_ref) {\n var type = _ref.type,\n subjectType = _ref.subjectType;\n\n\n var annotation = type.annotation;\n var offset = annotation.position;\n\n var x1 = annotation.x - offset.x,\n x2 = x1 + annotation.dx,\n y1 = annotation.y - offset.y,\n y2 = y1 + annotation.dy;\n\n var subjectData = annotation.subject;\n\n if (subjectType === \"rect\") {\n var width = subjectData.width,\n height = subjectData.height;\n\n\n if (width > 0 && annotation.dx > 0 || width < 0 && annotation.dx < 0) {\n if (Math.abs(width) > Math.abs(annotation.dx)) x1 = width / 2;else x1 = width;\n }\n if (height > 0 && annotation.dy > 0 || height < 0 && annotation.dy < 0) {\n if (Math.abs(height) > Math.abs(annotation.dy)) y1 = height / 2;else y1 = height;\n }\n if (x1 === width / 2 && y1 === height / 2) {\n x1 = x2;y1 = y2;\n }\n }\n\n var data = [[x1, y1], [x2, y2]];\n\n var diffY = y2 - y1;\n var diffX = x2 - x1;\n var xe = x2;\n var ye = y2;\n var opposite = y2 < y1 && x2 > x1 || x2 < x1 && y2 > y1 ? -1 : 1;\n\n if (Math.abs(diffX) < Math.abs(diffY)) {\n xe = x2;\n ye = y1 + diffX * opposite;\n } else {\n ye = y2;\n xe = x1 + diffY * opposite;\n }\n\n if (subjectType === \"circle\" && (subjectData.outerRadius || subjectData.radius)) {\n var r = (subjectData.outerRadius || subjectData.radius) + (subjectData.radiusPadding || 0);\n var length = r / Math.sqrt(2);\n\n if (Math.abs(diffX) > length && Math.abs(diffY) > length) {\n x1 = length * (x2 < 0 ? -1 : 1);\n y1 = length * (y2 < 0 ? -1 : 1);\n data = [[x1, y1], [xe, ye], [x2, y2]];\n } else if (Math.abs(diffX) > Math.abs(diffY)) {\n var angle = Math.asin(-y2 / r);\n x1 = Math.abs(Math.cos(angle) * r) * (x2 < 0 ? -1 : 1);\n data = [[x1, y2], [x2, y2]];\n } else {\n var _angle = Math.acos(x2 / r);\n y1 = Math.abs(Math.sin(_angle) * r) * (y2 < 0 ? -1 : 1);\n data = [[x2, y1], [x2, y2]];\n }\n } else {\n data = [[x1, y1], [xe, ye], [x2, y2]];\n }\n\n return { components: [lineBuilder({ data: data, className: \"connector\" })] };\n});\n\nvar connectorCurve = (function (_ref) {\n var type = _ref.type,\n connectorData = _ref.connectorData,\n subjectType = _ref.subjectType;\n\n\n if (!connectorData) {\n connectorData = {};\n }\n if (!connectorData.points || typeof connectorData.points === \"number\") {\n connectorData.points = createPoints(type.annotation.offset, connectorData.points);\n }\n if (!connectorData.curve) {\n connectorData.curve = curveCatmullRom;\n }\n\n var handles = [];\n\n if (type.editMode) {\n var cHandles = connectorData.points.map(function (c, i) {\n return _extends({}, pointHandle({ cx: c[0], cy: c[1] }), { index: i });\n });\n\n var updatePoint = function updatePoint(index) {\n connectorData.points[index][0] += event.dx;\n connectorData.points[index][1] += event.dy;\n type.redrawConnector();\n };\n\n handles = type.mapHandles(cHandles.map(function (h) {\n return _extends({}, h.move, { drag: updatePoint.bind(type, h.index) });\n }));\n }\n\n var data = lineSetup({ type: type, subjectType: subjectType });\n data = [data[0]].concat(toConsumableArray(connectorData.points), [data[1]]);\n var components = [lineBuilder({ data: data, curve: connectorData.curve, className: \"connector\" })];\n\n return { components: components, handles: handles };\n});\n\nvar createPoints = function createPoints(offset) {\n var anchors = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;\n\n var diff = { x: offset.x / (anchors + 1), y: offset.y / (anchors + 1) };\n var p = [];\n\n var i = 1;\n for (; i <= anchors; i++) {\n p.push([diff.x * i + i % 2 * 20, diff.y * i - i % 2 * 20]);\n }\n return p;\n};\n\nvar connectorArrow = (function (_ref) {\n var annotation = _ref.annotation,\n start = _ref.start,\n end = _ref.end,\n _ref$scale = _ref.scale,\n scale = _ref$scale === undefined ? 1 : _ref$scale;\n\n var offset = annotation.position;\n if (!start) {\n start = [annotation.dx, annotation.dy];\n } else {\n start = [-end[0] + start[0], -end[1] + start[1]];\n }\n if (!end) {\n end = [annotation.x - offset.x, annotation.y - offset.y];\n }\n\n var x1 = end[0],\n y1 = end[1];\n\n var dx = start[0];\n var dy = start[1];\n\n var size = 10 * scale;\n var angleOffset = 16 / 180 * Math.PI;\n var angle = Math.atan(dy / dx);\n\n if (dx < 0) {\n angle += Math.PI;\n }\n\n var data = [[x1, y1], [Math.cos(angle + angleOffset) * size + x1, Math.sin(angle + angleOffset) * size + y1], [Math.cos(angle - angleOffset) * size + x1, Math.sin(angle - angleOffset) * size + y1], [x1, y1]];\n\n //TODO add in reverse\n // if (canvasContext.arrowReverse){\n // data = [[x1, y1],\n // [Math.cos(angle + angleOffset)*size, Math.sin(angle + angleOffset)*size],\n // [Math.cos(angle - angleOffset)*size, Math.sin(angle - angleOffset)*size],\n // [x1, y1]\n // ]\n // } else {\n // data = [[x1, y1],\n // [Math.cos(angle + angleOffset)*size, Math.sin(angle + angleOffset)*size],\n // [Math.cos(angle - angleOffset)*size, Math.sin(angle - angleOffset)*size],\n // [x1, y1]\n // ]\n // }\n\n return {\n components: [lineBuilder({\n data: data,\n className: \"connector-end connector-arrow\",\n classID: \"connector-end\"\n })]\n };\n});\n\nvar connectorDot = (function (_ref) {\n var line$$1 = _ref.line,\n _ref$scale = _ref.scale,\n scale = _ref$scale === undefined ? 1 : _ref$scale;\n\n var dot = arcBuilder({\n className: \"connector-end connector-dot\",\n classID: \"connector-end\",\n data: { radius: 3 * Math.sqrt(scale) }\n });\n dot.attrs.transform = \"translate(\" + line$$1.data[0][0] + \", \" + line$$1.data[0][1] + \")\";\n\n return { components: [dot] };\n});\n\nvar subjectCircle = (function (_ref) {\n var subjectData = _ref.subjectData,\n type = _ref.type;\n\n if (!subjectData.radius && !subjectData.outerRadius) {\n subjectData.radius = 20;\n }\n\n var handles = [];\n var c = arcBuilder({ data: subjectData, className: \"subject\" });\n if (type.editMode) {\n var h = circleHandles({\n r1: c.data.outerRadius || c.data.radius,\n r2: c.data.innerRadius,\n padding: subjectData.radiusPadding\n });\n\n var updateRadius = function updateRadius(attr) {\n var r = subjectData[attr] + event.dx * Math.sqrt(2);\n subjectData[attr] = r;\n type.redrawSubject();\n type.redrawConnector();\n };\n\n var cHandles = [_extends({}, h.r1, {\n drag: updateRadius.bind(type, subjectData.outerRadius !== undefined ? \"outerRadius\" : \"radius\")\n })];\n\n if (subjectData.innerRadius) {\n cHandles.push(_extends({}, h.r2, { drag: updateRadius.bind(type, \"innerRadius\") }));\n }\n handles = type.mapHandles(cHandles);\n }\n\n c.attrs[\"fill-opacity\"] = 0;\n\n return { components: [c], handles: handles };\n});\n\nvar subjectRect = (function (_ref) {\n var subjectData = _ref.subjectData,\n type = _ref.type;\n\n if (!subjectData.width) {\n subjectData.width = 100;\n }\n if (!subjectData.height) {\n subjectData.height = 100;\n }\n\n var handles = [];\n var width = subjectData.width,\n height = subjectData.height;\n\n\n var data = [[0, 0], [width, 0], [width, height], [0, height], [0, 0]];\n var rect = lineBuilder({ data: data, className: \"subject\" });\n\n if (type.editMode) {\n var updateWidth = function updateWidth() {\n subjectData.width = event.x;\n type.redrawSubject();\n type.redrawConnector();\n };\n\n var updateHeight = function updateHeight() {\n subjectData.height = event.y;\n type.redrawSubject();\n type.redrawConnector();\n };\n\n var rHandles = [{ x: width, y: height / 2, drag: updateWidth.bind(type) }, { x: width / 2, y: height, drag: updateHeight.bind(type) }];\n\n handles = type.mapHandles(rHandles);\n }\n rect.attrs[\"fill-opacity\"] = 0.1;\n return { components: [rect], handles: handles };\n});\n\nvar subjectThreshold = (function (_ref) {\n var subjectData = _ref.subjectData,\n type = _ref.type;\n\n var offset = type.annotation.position;\n\n var x1 = (subjectData.x1 !== undefined ? subjectData.x1 : offset.x) - offset.x,\n x2 = (subjectData.x2 !== undefined ? subjectData.x2 : offset.x) - offset.x,\n y1 = (subjectData.y1 !== undefined ? subjectData.y1 : offset.y) - offset.y,\n y2 = (subjectData.y2 !== undefined ? subjectData.y2 : offset.y) - offset.y;\n\n var data = [[x1, y1], [x2, y2]];\n return { components: [lineBuilder({ data: data, className: 'subject' })] };\n});\n\nvar subjectBadge = (function (_ref) {\n var _ref$subjectData = _ref.subjectData,\n subjectData = _ref$subjectData === undefined ? {} : _ref$subjectData,\n _ref$type = _ref.type,\n type = _ref$type === undefined ? {} : _ref$type;\n var annotation = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var typeSettings = type.typeSettings && type.typeSettings.subject;\n\n if (!subjectData.radius) {\n if (typeSettings && typeSettings.radius) {\n subjectData.radius = typeSettings.radius;\n } else {\n subjectData.radius = 14;\n }\n }\n if (!subjectData.x) {\n if (typeSettings && typeSettings.x) {\n subjectData.x = typeSettings.x;\n }\n }\n if (!subjectData.y) {\n if (typeSettings && typeSettings.y) {\n subjectData.y = typeSettings.y;\n }\n }\n\n var handles = [];\n var components = [];\n var radius = subjectData.radius;\n var innerRadius = radius * 0.7;\n var x = 0;\n var y = 0;\n\n var notCornerOffset = Math.sqrt(2) * radius;\n var placement = {\n xleftcorner: -radius,\n xrightcorner: radius,\n ytopcorner: -radius,\n ybottomcorner: radius,\n xleft: -notCornerOffset,\n xright: notCornerOffset,\n ytop: -notCornerOffset,\n ybottom: notCornerOffset\n };\n\n if (subjectData.x && !subjectData.y) {\n x = placement[\"x\" + subjectData.x];\n } else if (subjectData.y && !subjectData.x) {\n y = placement[\"y\" + subjectData.y];\n } else if (subjectData.x && subjectData.y) {\n x = placement[\"x\" + subjectData.x + \"corner\"];\n y = placement[\"y\" + subjectData.y + \"corner\"];\n }\n\n var transform = \"translate(\" + x + \", \" + y + \")\";\n var circlebg = arcBuilder({ className: \"subject\", data: { radius: radius } });\n circlebg.attrs.transform = transform;\n circlebg.attrs.fill = annotation.color;\n circlebg.attrs[\"stroke-linecap\"] = \"round\";\n circlebg.attrs[\"stroke-width\"] = \"3px\";\n\n var circle = arcBuilder({\n className: \"subject-ring\",\n data: { outerRadius: radius, innerRadius: innerRadius }\n });\n\n circle.attrs.transform = transform;\n // circle.attrs.fill = annotation.color\n circle.attrs[\"stroke-width\"] = \"3px\";\n circle.attrs.fill = \"white\";\n\n var pointer = void 0;\n if (x && y || !x && !y) {\n pointer = lineBuilder({\n className: \"subject-pointer\",\n data: [[0, 0], [x || 0, 0], [0, y || 0], [0, 0]]\n });\n } else if (x || y) {\n var notCornerPointerXY = function notCornerPointerXY(v) {\n var sign = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n return v && v / Math.sqrt(2) / Math.sqrt(2) || sign * radius / Math.sqrt(2);\n };\n\n pointer = lineBuilder({\n className: \"subject-pointer\",\n data: [[0, 0], [notCornerPointerXY(x), notCornerPointerXY(y)], [notCornerPointerXY(x, -1), notCornerPointerXY(y, -1)], [0, 0]]\n });\n }\n\n if (pointer) {\n pointer.attrs.fill = annotation.color;\n pointer.attrs[\"stroke-linecap\"] = \"round\";\n pointer.attrs[\"stroke-width\"] = \"3px\";\n components.push(pointer);\n }\n\n if (type.editMode) {\n var dragBadge = function dragBadge() {\n subjectData.x = event.x < -radius * 2 ? \"left\" : event.x > radius * 2 ? \"right\" : undefined;\n subjectData.y = event.y < -radius * 2 ? \"top\" : event.y > radius * 2 ? \"bottom\" : undefined;\n\n type.redrawSubject();\n };\n\n var bHandles = { x: x * 2, y: y * 2, drag: dragBadge.bind(type) };\n if (!bHandles.x && !bHandles.y) {\n bHandles.y = -radius;\n }\n\n handles = type.mapHandles([bHandles]);\n }\n\n var text = void 0;\n if (subjectData.text) {\n text = {\n type: \"text\",\n className: \"badge-text\",\n attrs: {\n fill: \"white\",\n stroke: \"none\",\n \"font-size\": \".7em\",\n text: subjectData.text,\n \"text-anchor\": \"middle\",\n dy: \".25em\",\n x: x,\n y: y\n }\n };\n }\n\n components.push(circlebg);\n components.push(circle);\n components.push(text);\n\n return { components: components, handles: handles };\n});\n\n//Note options\n//Connector options\n//Subject options\nvar Type = function () {\n function Type(_ref) {\n var a = _ref.a,\n annotation = _ref.annotation,\n editMode = _ref.editMode,\n dispatcher = _ref.dispatcher,\n notePadding = _ref.notePadding,\n accessors = _ref.accessors;\n classCallCheck(this, Type);\n\n this.a = a;\n\n this.note = annotation.disable.indexOf(\"note\") === -1 && a.select(\"g.annotation-note\");\n this.noteContent = this.note && a.select(\"g.annotation-note-content\");\n this.connector = annotation.disable.indexOf(\"connector\") === -1 && a.select(\"g.annotation-connector\");\n this.subject = annotation.disable.indexOf(\"subject\") === -1 && a.select(\"g.annotation-subject\");\n this.dispatcher = dispatcher;\n\n if (dispatcher) {\n var handler = addHandlers.bind(null, dispatcher, annotation);\n handler({ component: this.note, name: \"note\" });\n handler({ component: this.connector, name: \"connector\" });\n handler({ component: this.subject, name: \"subject\" });\n }\n\n this.annotation = annotation;\n this.editMode = annotation.editMode || editMode;\n this.notePadding = notePadding !== undefined ? notePadding : 3;\n this.offsetCornerX = 0;\n this.offsetCornerY = 0;\n\n if (accessors && annotation.data) {\n this.init(accessors);\n }\n }\n\n createClass(Type, [{\n key: \"init\",\n value: function init(accessors) {\n if (!this.annotation.x) {\n this.mapX(accessors);\n }\n if (!this.annotation.y) {\n this.mapY(accessors);\n }\n }\n }, {\n key: \"mapY\",\n value: function mapY(accessors) {\n if (accessors.y) {\n this.annotation.y = accessors.y(this.annotation.data);\n }\n }\n }, {\n key: \"mapX\",\n value: function mapX(accessors) {\n if (accessors.x) {\n this.annotation.x = accessors.x(this.annotation.data);\n }\n }\n }, {\n key: \"updateEditMode\",\n value: function updateEditMode() {\n this.a.selectAll(\"circle.handle\").remove();\n }\n }, {\n key: \"drawOnSVG\",\n value: function drawOnSVG(component, builders) {\n var _this = this;\n\n if (!Array.isArray(builders)) {\n builders = [builders];\n }\n\n builders.filter(function (b) {\n return b;\n }).forEach(function (_ref2) {\n var type = _ref2.type,\n className = _ref2.className,\n attrs = _ref2.attrs,\n handles = _ref2.handles,\n classID = _ref2.classID;\n\n if (type === \"handle\") {\n addHandles({ group: component, r: attrs && attrs.r, handles: handles });\n } else {\n newWithClass(component, [_this.annotation], type, className, classID);\n var el = component.select(type + \".\" + (classID || className));\n var addAttrs = Object.keys(attrs);\n var removeAttrs = [];\n\n var currentAttrs = el.node().attributes;\n for (var i = currentAttrs.length - 1; i >= 0; i--) {\n var name = currentAttrs[i].name;\n if (addAttrs.indexOf(name) === -1 && name !== \"class\") removeAttrs.push(name);\n }\n\n addAttrs.forEach(function (attr) {\n if (attr === \"text\") {\n el.text(attrs[attr]);\n } else {\n el.attr(attr, attrs[attr]);\n }\n });\n\n removeAttrs.forEach(function (attr) {\n return el.attr(attr, null);\n });\n }\n });\n }\n\n //TODO: how to extend this to a drawOnCanvas mode?\n\n }, {\n key: \"getNoteBBox\",\n value: function getNoteBBox() {\n return bboxWithoutHandles(this.note, \".annotation-note-content text\");\n }\n }, {\n key: \"getNoteBBoxOffset\",\n value: function getNoteBBoxOffset() {\n var bbox = bboxWithoutHandles(this.note, \".annotation-note-content\");\n var transform = this.noteContent.attr(\"transform\").split(/\\(|\\,|\\)/g);\n bbox.offsetCornerX = parseFloat(transform[1]) + this.annotation.dx;\n bbox.offsetCornerY = parseFloat(transform[2]) + this.annotation.dy;\n bbox.offsetX = this.annotation.dx;\n bbox.offsetY = this.annotation.dy;\n return bbox;\n }\n }, {\n key: \"drawSubject\",\n value: function drawSubject() {\n var _this2 = this;\n\n var context = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var subjectData = this.annotation.subject;\n var type = context.type;\n var subjectParams = { type: this, subjectData: subjectData };\n\n var subject = {};\n if (type === \"circle\") subject = subjectCircle(subjectParams);else if (type === \"rect\") subject = subjectRect(subjectParams);else if (type === \"threshold\") subject = subjectThreshold(subjectParams);else if (type === \"badge\") subject = subjectBadge(subjectParams, this.annotation);\n\n var _subject = subject,\n _subject$components = _subject.components,\n components = _subject$components === undefined ? [] : _subject$components,\n _subject$handles = _subject.handles,\n handles = _subject$handles === undefined ? [] : _subject$handles;\n\n components.forEach(function (c) {\n if (c && c.attrs && !c.attrs.stroke) {\n c.attrs.stroke = _this2.annotation.color;\n }\n });\n\n if (this.editMode) {\n handles = handles.concat(this.mapHandles([{ drag: this.dragSubject.bind(this) }]));\n components.push({ type: \"handle\", handles: handles });\n }\n\n return components;\n }\n }, {\n key: \"drawConnector\",\n value: function drawConnector() {\n var _this3 = this;\n\n var context = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var connectorData = this.annotation.connector;\n var type = connectorData.type || context.type;\n var connectorParams = { type: this, connectorData: connectorData };\n connectorParams.subjectType = this.typeSettings && this.typeSettings.subject && this.typeSettings.subject.type;\n\n var connector = {};\n if (type === \"curve\") connector = connectorCurve(connectorParams);else if (type === \"elbow\") connector = connectorElbow(connectorParams);else connector = connectorLine(connectorParams);\n var _connector = connector,\n _connector$components = _connector.components,\n components = _connector$components === undefined ? [] : _connector$components,\n _connector$handles = _connector.handles,\n handles = _connector$handles === undefined ? [] : _connector$handles;\n\n var line$$1 = components[0];\n //TODO: genericize this into fill t/f stroke t/f\n if (line$$1) {\n line$$1.attrs.stroke = this.annotation.color;\n line$$1.attrs.fill = \"none\";\n }\n var endType = connectorData.end || context.end;\n var end = {};\n if (endType === \"arrow\") {\n var s = line$$1.data[1];\n var e = line$$1.data[0];\n var distance = Math.sqrt(Math.pow(s[0] - e[0], 2) + Math.pow(s[1] - e[1], 2));\n if (distance < 5 && line$$1.data[2]) {\n s = line$$1.data[2];\n }\n end = connectorArrow({\n annotation: this.annotation,\n start: s,\n end: e,\n scale: connectorData.endScale\n });\n } else if (endType === \"dot\") {\n end = connectorDot({ line: line$$1, scale: connectorData.endScale });\n } else if (!endType || endType === \"none\") {\n this.connector && this.connector.select(\".connector-end\").remove();\n }\n\n if (end.components) {\n end.components.forEach(function (c) {\n c.attrs.fill = _this3.annotation.color;\n c.attrs.stroke = _this3.annotation.color;\n });\n components = components.concat(end.components);\n }\n\n if (this.editMode) {\n if (handles.length !== 0) components.push({ type: \"handle\", handles: handles });\n }\n return components;\n }\n }, {\n key: \"drawNote\",\n value: function drawNote() {\n var _this4 = this;\n\n var context = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var noteData = this.annotation.note;\n var align = noteData.align || context.align || \"dynamic\";\n var noteParams = {\n bbox: context.bbox,\n align: align,\n offset: this.annotation.offset\n };\n var lineType = noteData.lineType || context.lineType;\n var note = {};\n if (lineType === \"vertical\") note = noteVertical(noteParams);else if (lineType === \"horizontal\") note = noteHorizontal(noteParams);\n\n var _note = note,\n _note$components = _note.components,\n components = _note$components === undefined ? [] : _note$components,\n _note$handles = _note.handles,\n handles = _note$handles === undefined ? [] : _note$handles;\n\n components.forEach(function (c) {\n c.attrs.stroke = _this4.annotation.color;\n });\n\n if (this.editMode) {\n handles = this.mapHandles([{ x: 0, y: 0, drag: this.dragNote.bind(this) }]);\n components.push({ type: \"handle\", handles: handles });\n\n var dragging = this.dragNote.bind(this),\n start = this.dragstarted.bind(this),\n end = this.dragended.bind(this);\n this.note.call(drag().container(select(\"g.annotations\").node()).on(\"start\", function (d) {\n return start(d);\n }).on(\"drag\", function (d) {\n return dragging(d);\n }).on(\"end\", function (d) {\n return end(d);\n }));\n } else {\n this.note.on(\"mousedown.drag\", null);\n }\n return components;\n }\n }, {\n key: \"drawNoteContent\",\n value: function drawNoteContent(context) {\n var noteData = this.annotation.note;\n var padding = noteData.padding !== undefined ? noteData.padding : this.notePadding;\n var orientation = noteData.orientation || context.orientation || \"topBottom\";\n var lineType = noteData.lineType || context.lineType;\n var align = noteData.align || context.align || \"dynamic\";\n\n if (lineType === \"vertical\") orientation = \"leftRight\";else if (lineType === \"horizontal\") orientation = \"topBottom\";\n\n var noteParams = {\n padding: padding,\n bbox: context.bbox,\n offset: this.annotation.offset,\n orientation: orientation,\n align: align\n };\n\n var _noteAlignment = noteAlignment(noteParams),\n x = _noteAlignment.x,\n y = _noteAlignment.y;\n\n this.offsetCornerX = x + this.annotation.dx;\n this.offsetCornerY = y + this.annotation.dy;\n this.note && this.noteContent.attr(\"transform\", \"translate(\" + x + \", \" + y + \")\");\n\n return [];\n }\n }, {\n key: \"drawOnScreen\",\n value: function drawOnScreen(component, drawFunction) {\n return this.drawOnSVG(component, drawFunction);\n }\n }, {\n key: \"redrawSubject\",\n value: function redrawSubject() {\n this.subject && this.drawOnScreen(this.subject, this.drawSubject());\n }\n }, {\n key: \"redrawConnector\",\n value: function redrawConnector() {\n this.connector && this.drawOnScreen(this.connector, this.drawConnector());\n }\n }, {\n key: \"redrawNote\",\n value: function redrawNote() {\n var bbox = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.getNoteBBox();\n\n this.noteContent && this.drawOnScreen(this.noteContent, this.drawNoteContent({ bbox: bbox }));\n this.note && this.drawOnScreen(this.note, this.drawNote({ bbox: bbox }));\n }\n }, {\n key: \"setPosition\",\n value: function setPosition() {\n var position = this.annotation.position;\n this.a.attr(\"transform\", \"translate(\" + position.x + \", \" + position.y + \")\");\n }\n }, {\n key: \"clearComponents\",\n value: function clearComponents() {\n this.subject && this.subject.select(\"*\").remove();\n this.connector && this.connector.select(\"*\").remove();\n // this.note && this.note.select(\"*\").remove()\n }\n }, {\n key: \"setOffset\",\n value: function setOffset() {\n if (this.note) {\n var offset = this.annotation.offset;\n this.note.attr(\"transform\", \"translate(\" + offset.x + \", \" + offset.y + \")\");\n }\n }\n }, {\n key: \"setPositionWithAccessors\",\n value: function setPositionWithAccessors(accessors) {\n if (accessors && this.annotation.data) {\n this.mapX(accessors);\n this.mapY(accessors);\n }\n this.setPosition();\n }\n }, {\n key: \"setClassName\",\n value: function setClassName() {\n this.a.attr(\"class\", \"annotation \" + (this.className && this.className()) + \" \" + (this.editMode ? \"editable\" : \"\") + \" \" + (this.annotation.className || \"\"));\n }\n }, {\n key: \"draw\",\n value: function draw() {\n this.setClassName();\n this.setPosition();\n this.setOffset();\n this.redrawSubject();\n this.redrawConnector();\n this.redrawNote();\n }\n }, {\n key: \"dragstarted\",\n value: function dragstarted() {\n event.sourceEvent.stopPropagation();\n this.dispatcher && this.dispatcher.call(\"dragstart\", this.a, this.annotation);\n this.a.classed(\"dragging\", true);\n this.a.selectAll(\"circle.handle\").style(\"pointer-events\", \"none\");\n }\n }, {\n key: \"dragended\",\n value: function dragended() {\n this.dispatcher && this.dispatcher.call(\"dragend\", this.a, this.annotation);\n this.a.classed(\"dragging\", false);\n this.a.selectAll(\"circle.handle\").style(\"pointer-events\", \"all\");\n }\n }, {\n key: \"dragSubject\",\n value: function dragSubject() {\n var position = this.annotation.position;\n position.x += event.dx;\n position.y += event.dy;\n this.annotation.position = position;\n }\n }, {\n key: \"dragNote\",\n value: function dragNote() {\n var offset = this.annotation.offset;\n offset.x += event.dx;\n offset.y += event.dy;\n this.annotation.offset = offset;\n }\n }, {\n key: \"mapHandles\",\n value: function mapHandles(handles) {\n var _this5 = this;\n\n return handles.map(function (h) {\n return _extends({}, h, {\n start: _this5.dragstarted.bind(_this5),\n end: _this5.dragended.bind(_this5)\n });\n });\n }\n }]);\n return Type;\n}();\n\nvar customType = function customType(initialType, typeSettings, _init) {\n return function (_initialType) {\n inherits(customType, _initialType);\n\n function customType(settings) {\n classCallCheck(this, customType);\n\n var _this6 = possibleConstructorReturn(this, (customType.__proto__ || Object.getPrototypeOf(customType)).call(this, settings));\n\n _this6.typeSettings = typeSettings;\n\n if (typeSettings.disable) {\n typeSettings.disable.forEach(function (d) {\n _this6[d] && _this6[d].remove();\n\n _this6[d] = undefined;\n if (d === \"note\") {\n _this6.noteContent = undefined;\n }\n });\n }\n return _this6;\n }\n\n createClass(customType, [{\n key: \"className\",\n value: function className() {\n return \"\" + (typeSettings.className || get(customType.prototype.__proto__ || Object.getPrototypeOf(customType.prototype), \"className\", this) && get(customType.prototype.__proto__ || Object.getPrototypeOf(customType.prototype), \"className\", this).call(this) || \"\");\n }\n }, {\n key: \"drawSubject\",\n value: function drawSubject(context) {\n this.typeSettings.subject = _extends({}, typeSettings.subject, this.typeSettings.subject);\n return get(customType.prototype.__proto__ || Object.getPrototypeOf(customType.prototype), \"drawSubject\", this).call(this, _extends({}, context, this.typeSettings.subject));\n }\n }, {\n key: \"drawConnector\",\n value: function drawConnector(context) {\n this.typeSettings.connector = _extends({}, typeSettings.connector, this.typeSettings.connector);\n return get(customType.prototype.__proto__ || Object.getPrototypeOf(customType.prototype), \"drawConnector\", this).call(this, _extends({}, context, typeSettings.connector, this.typeSettings.connector));\n }\n }, {\n key: \"drawNote\",\n value: function drawNote(context) {\n this.typeSettings.note = _extends({}, typeSettings.note, this.typeSettings.note);\n return get(customType.prototype.__proto__ || Object.getPrototypeOf(customType.prototype), \"drawNote\", this).call(this, _extends({}, context, typeSettings.note, this.typeSettings.note));\n }\n }, {\n key: \"drawNoteContent\",\n value: function drawNoteContent(context) {\n return get(customType.prototype.__proto__ || Object.getPrototypeOf(customType.prototype), \"drawNoteContent\", this).call(this, _extends({}, context, typeSettings.note, this.typeSettings.note));\n }\n }], [{\n key: \"init\",\n value: function init(annotation, accessors) {\n get(customType.__proto__ || Object.getPrototypeOf(customType), \"init\", this).call(this, annotation, accessors);\n if (_init) {\n annotation = _init(annotation, accessors);\n }\n return annotation;\n }\n }]);\n return customType;\n }(initialType);\n};\n\nvar d3NoteText = function (_Type) {\n inherits(d3NoteText, _Type);\n\n function d3NoteText(params) {\n classCallCheck(this, d3NoteText);\n\n var _this7 = possibleConstructorReturn(this, (d3NoteText.__proto__ || Object.getPrototypeOf(d3NoteText)).call(this, params));\n\n _this7.textWrap = params.textWrap || 120;\n _this7.drawText();\n return _this7;\n }\n\n createClass(d3NoteText, [{\n key: \"updateTextWrap\",\n value: function updateTextWrap(textWrap) {\n this.textWrap = textWrap;\n this.drawText();\n }\n\n //TODO: add update text functionality\n\n }, {\n key: \"drawText\",\n value: function drawText() {\n if (this.note) {\n newWithClass(this.note, [this.annotation], \"g\", \"annotation-note-content\");\n\n var noteContent = this.note.select(\"g.annotation-note-content\");\n newWithClass(noteContent, [this.annotation], \"rect\", \"annotation-note-bg\");\n newWithClass(noteContent, [this.annotation], \"text\", \"annotation-note-label\");\n newWithClass(noteContent, [this.annotation], \"text\", \"annotation-note-title\");\n\n var titleBBox = { height: 0 };\n var label = this.a.select(\"text.annotation-note-label\");\n var wrapLength = this.annotation.note && this.annotation.note.wrap || this.typeSettings && this.typeSettings.note && this.typeSettings.note.wrap || this.textWrap;\n\n var wrapSplitter = this.annotation.note && this.annotation.note.wrapSplitter || this.typeSettings && this.typeSettings.note && this.typeSettings.note.wrapSplitter;\n\n var bgPadding = this.annotation.note && this.annotation.note.bgPadding || this.typeSettings && this.typeSettings.note && this.typeSettings.note.bgPadding;\n\n var bgPaddingFinal = { top: 0, bottom: 0, left: 0, right: 0 };\n if (typeof bgPadding === \"number\") {\n bgPaddingFinal = {\n top: bgPadding,\n bottom: bgPadding,\n left: bgPadding,\n right: bgPadding\n };\n } else if (bgPadding && (typeof bgPadding === \"undefined\" ? \"undefined\" : _typeof(bgPadding)) === \"object\") {\n bgPaddingFinal = _extends(bgPaddingFinal, bgPadding);\n }\n\n if (this.annotation.note.title) {\n var title = this.a.select(\"text.annotation-note-title\");\n title.text(this.annotation.note.title);\n title.attr(\"fill\", this.annotation.color);\n title.attr(\"font-weight\", \"bold\");\n title.call(wrap, wrapLength, wrapSplitter);\n titleBBox = title.node().getBBox();\n }\n\n label.text(this.annotation.note.label).attr(\"dx\", \"0\");\n label.call(wrap, wrapLength, wrapSplitter);\n\n label.attr(\"y\", titleBBox.height * 1.1 || 0);\n label.attr(\"fill\", this.annotation.color);\n\n var bbox = this.getNoteBBox();\n\n this.a.select(\"rect.annotation-note-bg\").attr(\"width\", bbox.width + bgPaddingFinal.left + bgPaddingFinal.right).attr(\"height\", bbox.height + bgPaddingFinal.top + bgPaddingFinal.bottom).attr(\"x\", bbox.x - bgPaddingFinal.left).attr(\"y\", -bgPaddingFinal.top).attr(\"fill\", \"white\").attr(\"fill-opacity\", 0);\n }\n }\n }]);\n return d3NoteText;\n}(Type);\n\nvar d3Label = customType(d3NoteText, {\n className: \"label\",\n note: { align: \"middle\" }\n});\n\nvar d3Callout = customType(d3NoteText, {\n className: \"callout\",\n note: { lineType: \"horizontal\" }\n});\n\nvar d3CalloutElbow = customType(d3Callout, {\n className: \"callout elbow\",\n connector: { type: \"elbow\" }\n});\n\nvar d3CalloutCurve = customType(d3Callout, {\n className: \"callout curve\",\n connector: { type: \"curve\" }\n});\n\nvar d3Badge = customType(Type, {\n className: \"badge\",\n subject: { type: \"badge\" },\n disable: [\"connector\", \"note\"]\n});\n\nvar d3CalloutCircle = customType(d3NoteText, {\n className: \"callout circle\",\n subject: { type: \"circle\" },\n note: { lineType: \"horizontal\" },\n connector: { type: \"elbow\" }\n});\n\nvar d3CalloutRect = customType(d3NoteText, {\n className: \"callout rect\",\n subject: { type: \"rect\" },\n note: { lineType: \"horizontal\" },\n connector: { type: \"elbow\" }\n});\n\nvar ThresholdMap = function (_d3Callout) {\n inherits(ThresholdMap, _d3Callout);\n\n function ThresholdMap() {\n classCallCheck(this, ThresholdMap);\n return possibleConstructorReturn(this, (ThresholdMap.__proto__ || Object.getPrototypeOf(ThresholdMap)).apply(this, arguments));\n }\n\n createClass(ThresholdMap, [{\n key: \"mapY\",\n value: function mapY(accessors) {\n get(ThresholdMap.prototype.__proto__ || Object.getPrototypeOf(ThresholdMap.prototype), \"mapY\", this).call(this, accessors);\n var a = this.annotation;\n if ((a.subject.x1 || a.subject.x2) && a.data && accessors.y) {\n a.y = accessors.y(a.data);\n }\n if ((a.subject.x1 || a.subject.x2) && !a.x) {\n a.x = a.subject.x1 || a.subject.x2;\n }\n }\n }, {\n key: \"mapX\",\n value: function mapX(accessors) {\n get(ThresholdMap.prototype.__proto__ || Object.getPrototypeOf(ThresholdMap.prototype), \"mapX\", this).call(this, accessors);\n var a = this.annotation;\n if ((a.subject.y1 || a.subject.y2) && a.data && accessors.x) {\n a.x = accessors.x(a.data);\n }\n if ((a.subject.y1 || a.subject.y2) && !a.y) {\n a.y = a.subject.y1 || a.subject.y2;\n }\n }\n }]);\n return ThresholdMap;\n}(d3Callout);\n\nvar d3XYThreshold = customType(ThresholdMap, {\n className: \"callout xythreshold\",\n subject: { type: \"threshold\" }\n});\n\nvar newWithClass = function newWithClass(a, d, type, className, classID) {\n var group = a.selectAll(type + \".\" + (classID || className)).data(d);\n group.enter().append(type).merge(group).attr(\"class\", className);\n\n group.exit().remove();\n return a;\n};\n\nvar addHandlers = function addHandlers(dispatcher, annotation, _ref3) {\n var component = _ref3.component,\n name = _ref3.name;\n\n if (component) {\n component.on(\"mouseover.annotations\", function () {\n dispatcher.call(name + \"over\", component, annotation);\n }).on(\"mouseout.annotations\", function () {\n return dispatcher.call(name + \"out\", component, annotation);\n }).on(\"click.annotations\", function () {\n return dispatcher.call(name + \"click\", component, annotation);\n });\n }\n};\n\n//Text wrapping code adapted from Mike Bostock\nvar wrap = function wrap(text, width, wrapSplitter) {\n var lineHeight = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1.2;\n\n text.each(function () {\n var text = select(this),\n words = text.text().split(wrapSplitter || /[ \\t\\r\\n]+/).reverse().filter(function (w) {\n return w !== \"\";\n });\n var word = void 0,\n line$$1 = [],\n tspan = text.text(null).append(\"tspan\").attr(\"x\", 0).attr(\"dy\", 0.8 + \"em\");\n\n while (word = words.pop()) {\n line$$1.push(word);\n tspan.text(line$$1.join(\" \"));\n if (tspan.node().getComputedTextLength() > width && line$$1.length > 1) {\n line$$1.pop();\n tspan.text(line$$1.join(\" \"));\n line$$1 = [word];\n tspan = text.append(\"tspan\").attr(\"x\", 0).attr(\"dy\", lineHeight + \"em\").text(word);\n }\n }\n });\n};\n\nvar bboxWithoutHandles = function bboxWithoutHandles(selection) {\n var selector = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \":not(.handle)\";\n\n if (!selection) {\n return { x: 0, y: 0, width: 0, height: 0 };\n }\n\n return selection.selectAll(selector).nodes().reduce(function (p, c) {\n var bbox = c.getBBox();\n p.x = Math.min(p.x, bbox.x);\n p.y = Math.min(p.y, bbox.y);\n p.width = Math.max(p.width, bbox.width);\n\n var yOffset = c && c.attributes && c.attributes.y;\n p.height = Math.max(p.height, (yOffset && parseFloat(yOffset.value) || 0) + bbox.height);\n return p;\n }, { x: 0, y: 0, width: 0, height: 0 });\n};\n\nfunction annotation() {\n var annotations = [],\n collection = void 0,\n context = void 0,\n //TODO: add canvas functionality\n disable = [],\n accessors = {},\n accessorsInverse = {},\n editMode = false,\n ids = void 0,\n type = d3Callout,\n textWrap = void 0,\n notePadding = void 0,\n annotationDispatcher = dispatch(\"subjectover\", \"subjectout\", \"subjectclick\", \"connectorover\", \"connectorout\", \"connectorclick\", \"noteover\", \"noteout\", \"noteclick\", \"dragend\", \"dragstart\"),\n sel = void 0;\n\n var annotation = function annotation(selection) {\n sel = selection;\n //TODO: check to see if this is still needed\n if (!editMode) {\n selection.selectAll(\"circle.handle\").remove();\n }\n\n var translatedAnnotations = annotations.map(function (a) {\n if (!a.type) {\n a.type = type;\n }\n if (!a.disable) {\n a.disable = disable;\n }\n return new Annotation(a);\n });\n\n collection = collection || new AnnotationCollection({\n annotations: translatedAnnotations,\n accessors: accessors,\n accessorsInverse: accessorsInverse,\n ids: ids\n });\n\n var annotationG = selection.selectAll(\"g\").data([collection]);\n annotationG.enter().append(\"g\").attr(\"class\", \"annotations\");\n\n var group = selection.select(\"g.annotations\");\n newWithClass(group, collection.annotations, \"g\", \"annotation\");\n\n var annotation = group.selectAll(\"g.annotation\");\n\n annotation.each(function (d) {\n var a = select(this);\n\n a.attr(\"class\", \"annotation\");\n\n newWithClass(a, [d], \"g\", \"annotation-connector\");\n newWithClass(a, [d], \"g\", \"annotation-subject\");\n newWithClass(a, [d], \"g\", \"annotation-note\");\n newWithClass(a.select(\"g.annotation-note\"), [d], \"g\", \"annotation-note-content\");\n d.type = d.type.toString() === \"[object Object]\" ? d.type : new d.type({\n a: a,\n annotation: d,\n textWrap: textWrap,\n notePadding: notePadding,\n editMode: editMode,\n dispatcher: annotationDispatcher,\n accessors: accessors\n });\n d.type.draw();\n d.type.drawText && d.type.drawText();\n });\n };\n\n annotation.json = function () {\n /* eslint-disable no-console */\n console.log(\"Annotations JSON was copied to your clipboard. Please note the annotation type is not JSON compatible. It appears in the objects array in the console, but not in the copied JSON.\", collection.json);\n /* eslint-enable no-console */\n window.copy(JSON.stringify(collection.json.map(function (a) {\n delete a.type;\n return a;\n })));\n return annotation;\n };\n\n annotation.update = function () {\n if (annotations && collection) {\n annotations = collection.annotations.map(function (a) {\n a.type.draw();\n return a;\n });\n }\n return annotation;\n };\n\n annotation.updateText = function () {\n if (collection) {\n collection.updateText(textWrap);\n annotations = collection.annotations;\n }\n return annotation;\n };\n\n annotation.updatedAccessors = function () {\n collection.setPositionWithAccessors();\n annotations = collection.annotations;\n return annotation;\n };\n\n annotation.disable = function (_) {\n if (!arguments.length) return disable;\n disable = _;\n if (collection) {\n collection.updateDisable(disable);\n annotations = collection.annotations;\n }\n return annotation;\n };\n\n annotation.textWrap = function (_) {\n if (!arguments.length) return textWrap;\n textWrap = _;\n if (collection) {\n collection.updateTextWrap(textWrap);\n annotations = collection.annotations;\n }\n return annotation;\n };\n\n annotation.notePadding = function (_) {\n if (!arguments.length) return notePadding;\n notePadding = _;\n if (collection) {\n collection.updateNotePadding(notePadding);\n annotations = collection.annotations;\n }\n return annotation;\n };\n //todo think of how to handle when undefined is sent\n annotation.type = function (_, settings) {\n if (!arguments.length) return type;\n type = _;\n if (collection) {\n collection.annotations.map(function (a) {\n a.type.note && a.type.note.selectAll(\"*:not(.annotation-note-content)\").remove();\n a.type.noteContent && a.type.noteContent.selectAll(\"*\").remove();\n a.type.subject && a.type.subject.selectAll(\"*\").remove();\n a.type.connector && a.type.connector.selectAll(\"*\").remove();\n a.type.typeSettings = {};\n a.type = type;\n\n a.subject = settings && settings.subject || a.subject;\n a.connector = settings && settings.connector || a.connector;\n a.note = settings && settings.note || a.note;\n });\n\n annotations = collection.annotations;\n }\n return annotation;\n };\n\n annotation.annotations = function (_) {\n if (!arguments.length) return collection && collection.annotations || annotations;\n annotations = _;\n\n if (collection && collection.annotations) {\n var rerun = annotations.some(function (d) {\n return !d.type || d.type.toString() !== \"[object Object]\";\n });\n\n if (rerun) {\n collection = null;\n annotation(sel);\n } else {\n collection.annotations = annotations;\n }\n }\n return annotation;\n };\n\n annotation.context = function (_) {\n if (!arguments.length) return context;\n context = _;\n return annotation;\n };\n\n annotation.accessors = function (_) {\n if (!arguments.length) return accessors;\n accessors = _;\n return annotation;\n };\n\n annotation.accessorsInverse = function (_) {\n if (!arguments.length) return accessorsInverse;\n accessorsInverse = _;\n return annotation;\n };\n\n annotation.ids = function (_) {\n if (!arguments.length) return ids;\n ids = _;\n return annotation;\n };\n\n annotation.editMode = function (_) {\n if (!arguments.length) return editMode;\n editMode = _;\n\n if (sel) {\n sel.selectAll(\"g.annotation\").classed(\"editable\", editMode);\n }\n\n if (collection) {\n collection.editMode(editMode);\n annotations = collection.annotations;\n }\n return annotation;\n };\n\n annotation.collection = function (_) {\n if (!arguments.length) return collection;\n collection = _;\n return annotation;\n };\n\n annotation.on = function () {\n var value = annotationDispatcher.on.apply(annotationDispatcher, arguments);\n return value === annotationDispatcher ? annotation : value;\n };\n\n return annotation;\n}\n\nvar index = {\n annotation: annotation,\n annotationTypeBase: Type,\n annotationLabel: d3Label,\n annotationCallout: d3Callout,\n annotationCalloutCurve: d3CalloutCurve,\n annotationCalloutElbow: d3CalloutElbow,\n annotationCalloutCircle: d3CalloutCircle,\n annotationCalloutRect: d3CalloutRect,\n annotationXYThreshold: d3XYThreshold,\n annotationBadge: d3Badge,\n annotationCustomType: customType\n};\n\nexport { annotation, Type as annotationTypeBase, d3Label as annotationLabel, d3Callout as annotationCallout, d3CalloutCurve as annotationCalloutCurve, d3CalloutElbow as annotationCalloutElbow, d3CalloutCircle as annotationCalloutCircle, d3CalloutRect as annotationCalloutRect, d3XYThreshold as annotationXYThreshold, d3Badge as annotationBadge, customType as annotationCustomType };export default index;\n//# sourceMappingURL=indexRollupNext.js.map\n","import { SVGWidget } from \"@hpcc-js/common\";\nimport { format as d3Format } from \"d3-format\";\nimport { interpolate as d3Interpolate, interpolateHcl as d3InterpolateHcl } from \"d3-interpolate\";\nimport { scaleLinear } from \"d3-scale\";\nimport { Arc, arc as d3Arc, DefaultArcObject } from \"d3-shape\";\nimport { annotation as d3Annotation, annotationCalloutElbow } from \"d3-svg-annotation\";\n\nfunction value2Angle(value: number): number {\n return (value - 0.5) * .65 * 2 * Math.PI;\n}\n\nfunction pointOnArc(angle: number, radius: number): { x: number, y: number } {\n return {\n x: Math.cos(angle - Math.PI / 2) * radius,\n y: Math.sin(angle - Math.PI / 2) * radius\n };\n}\n\nfunction indicatorTranslate(angle: number, radius: number, inner: boolean = false) {\n const point = pointOnArc(angle, radius);\n const rotation = angle * 180 / Math.PI + (inner === true ? 180 : 0);\n return `translate(${point.x}, ${point.y}) rotate(${rotation})`;\n}\n\ntype IndicatorDatum = { angle: number };\nfunction indicatorTween(newAngle: number, radius: number, inner: boolean = false) {\n return function (d: IndicatorDatum) {\n const interpolate = d3Interpolate(d.angle, newAngle);\n d.angle = newAngle;\n return function (t: number) {\n return indicatorTranslate(interpolate(t), radius, inner);\n };\n };\n}\n\nfunction arcTween(startAngle: number, endAngle: number, arc: Arc<any, DefaultArcObject>) {\n return function (d: DefaultArcObject) {\n const startInterpolate = d3Interpolate(d.startAngle, startAngle);\n const endInterpolate = d3Interpolate(d.endAngle, endAngle);\n return function (t: number): string {\n d.startAngle = startInterpolate(t);\n d.endAngle = endInterpolate(t);\n return arc(d)!;\n };\n };\n}\n\nexport class Gauge extends SVGWidget {\n\n private _d3Arc: Arc<any, DefaultArcObject> = d3Arc()\n .innerRadius(85)\n .outerRadius(100)\n ;\n private _colorScale = scaleLinear<string, string>()\n .interpolate(d3InterpolateHcl)\n ;\n\n protected _usageArc: any;\n protected _meanArc: any;\n protected _freeArc: any;\n protected _indInner: any;\n protected _indOuter: any;\n protected _centerTextG: any;\n protected _centerText: any;\n protected _bottomText: any;\n protected _tooltipG: any;\n protected _mainTooltip: any;\n\n constructor() {\n super();\n }\n\n protected tip(d: any) {\n if (d === null || d.label === \"\") {\n this._tooltipG\n .transition()\n .style(\"opacity\", 0)\n .on(\"interrupt end\", () => {\n this._tooltipG\n .selectAll(\"g\")\n .remove()\n ;\n })\n ;\n } else {\n this._tooltipG\n .interrupt()\n .style(\"opacity\", 1)\n ;\n d.w = (this._centerText.datum() as any).w + 10;\n let lineType = \"horizontal\";\n let xOffset = 0;\n let yOffset = 5;\n let padding: number | undefined = 5;\n if (d.y >= 5 && d.y <= 25) {\n xOffset = d.x < 0 ? -d.w / 2 : d.w / 2;\n yOffset = 12.5;\n padding = undefined;\n lineType = \"vertical\";\n } else if (d.y > 25) {\n yOffset = 25;\n padding = 0;\n }\n const annotationtip = d3Annotation()\n .type(annotationCalloutElbow)\n .annotations([{\n data: d,\n dx: -d.x + xOffset,\n dy: -d.y + yOffset,\n color: \"black\",\n note: {\n label: d.label,\n lineType,\n padding,\n align: \"middle\"\n }\n }])\n .accessors({ x: (d2: any) => d2.x, y: (d2: any) => d2.y });\n this._tooltipG.call(annotationtip as any);\n }\n }\n\n protected calcSize(textElement, width: number, height: number): { width: number, height: number, scale: number } {\n const bb = (textElement.node() as any).getBBox();\n const widthTransform = width / bb.width;\n const heightTransform = height / bb.height;\n const scale = widthTransform < heightTransform ? widthTransform : heightTransform;\n return {\n width: bb.width,\n height: bb.height,\n scale\n };\n }\n\n protected updateText(textElement, x: number, y: number, w: number, h: number) {\n textElement\n .datum({ x, y, w, h })\n .attr(\"transform\", null)\n ;\n const size = this.calcSize(textElement, w, h);\n const x2 = x + w / 2 - size.width / 2 * size.scale;\n const y2 = y + h / 2 - size.height / 2 * size.scale;\n textElement.attr(\"transform\", `translate(${x2}, ${y2}) scale(${size.scale})`);\n }\n\n calcWidth(): number {\n return Math.min(this.width(), this.height(), this.maxDiameter());\n }\n\n enter(domNode: HTMLElement, element) {\n super.enter(domNode, element);\n\n element.on(\"click\", (d: Gauge) => {\n this.click(d);\n });\n\n this._usageArc = element.append(\"path\").datum({ startAngle: value2Angle(0), endAngle: value2Angle(0) })\n .style(\"fill\", \"green\")\n .on(\"mousemove\", (d: any) => {\n const [x, y] = this._d3Arc.centroid(d);\n this.tip({ x, y, label: this.valueDescription() });\n })\n .on(\"mouseout\", (d: any) => {\n this.tip(null);\n })\n ;\n this._freeArc = element.append(\"path\").datum({ startAngle: value2Angle(0), endAngle: value2Angle(1) })\n .style(\"fill\", \"lightGrey\")\n ;\n this._meanArc = element.append(\"path\").datum({ startAngle: value2Angle(0), endAngle: value2Angle(0) })\n .style(\"fill\", \"black\")\n .on(\"mousemove\", (d: any) => {\n const [x, y] = this._d3Arc.centroid(d);\n this.tip({ x, y, label: this.tickValueDescription() });\n })\n .on(\"mouseout\", (d: any) => {\n this.tip(null);\n })\n ;\n\n this._mainTooltip = element.append(\"title\");\n\n const context = this;\n function appendIndicator() {\n return element.append(\"path\").datum({ angle: value2Angle(0) })\n .style(\"fill\", \"black\")\n .style(\"stroke\", \"black\")\n .attr(\"d\", \"M 0 0 l -3 -3 l 6 0 z\")\n .on(\"mousemove\", (d: any) => {\n const [x, y] = context._d3Arc.centroid(context._meanArc.datum() as any);\n context.tip({ x, y, label: context.tickValueDescription() });\n })\n .on(\"mouseout\", (d: any) => {\n context.tip(null);\n })\n ;\n }\n this._indInner = appendIndicator();\n this._indOuter = appendIndicator();\n this._centerText = element.append(\"text\")\n .attr(\"dy\", \".66em\")\n .style(\"fill\", \"green\")\n .on(\"mousemove\", (d: any) => {\n this.tip({ x: 0, y: 0, label: this.valueDescription() });\n })\n .on(\"mouseout\", (d: any) => {\n this.tip(null);\n })\n ;\n this._bottomText = element.append(\"text\")\n .attr(\"dy\", \".66em\")\n .on(\"mousemove\", (d: any) => {\n this.tip({ x: 0, y: d.y, label: this.titleDescription() });\n })\n .on(\"mouseout\", (d: any) => {\n this.tip(null);\n })\n ;\n\n this._tooltipG = element.append(\"g\")\n .attr(\"class\", \"annotation-tip\")\n ;\n }\n\n update(domNode: HTMLElement, element) {\n super.update(domNode, element);\n\n this._colorScale\n .domain(this.colorDomain())\n .range(this.colorRange())\n ;\n element\n .attr(\"title\", this.tooltip())\n .style(\"cursor\", this.click !== Gauge.prototype.click ? \"pointer\" : null)\n ;\n\n const innerRadius = this.calcWidth() / 3;\n const outerRadius = this.calcWidth() / 2 - 5;\n this._d3Arc\n .innerRadius(innerRadius)\n .outerRadius(outerRadius)\n ;\n\n const val = this.value();\n const tickVal = this.tickValue();\n\n this._usageArc\n .style(\"fill\", this._colorScale(val))\n .transition()\n .duration(750)\n .attrTween(\"d\", arcTween(value2Angle(0), value2Angle(val), this._d3Arc))\n ;\n\n this._freeArc\n .style(\"fill\", this.emptyColor())\n .transition()\n .duration(750)\n .attrTween(\"d\", arcTween(value2Angle(val), value2Angle(1), this._d3Arc))\n ;\n\n this._meanArc\n .style(\"fill\", this.tickColor())\n .style(\"visibility\", this.showTick() ? \"visible\" : \"hidden\")\n .transition()\n .duration(750)\n .attrTween(\"d\", arcTween(value2Angle(tickVal - 0.001), value2Angle(tickVal + 0.001), this._d3Arc))\n ;\n\n this._indInner\n .style(\"fill\", this.tickColor())\n .style(\"stroke\", this.tickColor())\n .style(\"visibility\", this.showTick() ? \"visible\" : \"hidden\")\n .transition()\n .duration(750)\n .attrTween(\"transform\", indicatorTween(value2Angle(tickVal), innerRadius, true))\n ;\n\n this._indOuter\n .style(\"fill\", this.tickColor())\n .style(\"stroke\", this.tickColor())\n .style(\"visibility\", this.showTick() ? \"visible\" : \"hidden\")\n .transition()\n .duration(750)\n .attrTween(\"transform\", indicatorTween(value2Angle(tickVal), outerRadius))\n ;\n\n this._centerText\n .style(\"fill\", this._colorScale(val))\n .text(d3Format(\".0%\")(val))\n ;\n\n this._bottomText\n .style(\"fill\", this.click !== Gauge.prototype.click ? this.titleClickColor() : this.titleColor())\n .style(\"text-decoration\", this.click !== Gauge.prototype.click ? \"underline\" : null)\n .text(this.title())\n ;\n\n // Update Text ---\n const point = pointOnArc(value2Angle(1), innerRadius - 8);\n this.updateText(this._centerText, -point.x, -point.y, 2 * point.x, 2 * point.y);\n\n const point2 = pointOnArc(value2Angle(1), outerRadius);\n point2.y += 5;\n const width = this.calcWidth() - 20;\n const height = this.calcWidth() / 2 - point2.y - 5;\n this.updateText(this._bottomText, -width / 2, point2.y, width, height);\n\n this._mainTooltip.text(this.tooltip());\n }\n\n // Events ---\n click(w: Gauge) {\n }\n}\nGauge.prototype._class += \" chart_Gauge\";\n\nexport interface Gauge {\n title(): string;\n title(_: string): this;\n titleDescription(): string;\n titleDescription(_: string): this;\n titleColor(): string;\n titleColor(_: string): this;\n titleClickColor(): string;\n titleClickColor(_: string): this;\n\n maxDiameter(): number;\n maxDiameter(_: number): this;\n value(): number;\n value(_: number): this;\n valueDescription(): string;\n valueDescription(_: string): this;\n showTick(): boolean;\n showTick(_: boolean): this;\n tickValue(): number;\n tickValue(_: number): this;\n tickValueDescription(): string;\n tickValueDescription(_: string): this;\n tooltip(): string;\n tooltip(_: string): this;\n\n tickColor(): string;\n tickColor(_: string): this;\n emptyColor(): string;\n emptyColor(_: string): this;\n colorDomain(): number[];\n colorDomain(_: number[]): this;\n colorRange(): string[];\n colorRange(_: string[]): this;\n}\n\nGauge.prototype.publish(\"title\", \"\", \"string\", \"Title\");\nGauge.prototype.publish(\"titleDescription\", \"\", \"string\", \"Title Description\");\nGauge.prototype.publish(\"titleColor\", \"black\", \"html-color\", \"Color of the title text\");\nGauge.prototype.publish(\"titleClickColor\", \"blue\", \"html-color\", \"Color of the title text when clickable\");\n\nGauge.prototype.publish(\"maxDiameter\", 128, \"number\", \"Max Diameter\");\nGauge.prototype.publish(\"value\", 0, \"number\", \"Value\");\nGauge.prototype.publish(\"valueDescription\", \"\", \"string\", \"Value Description\");\nGauge.prototype.publish(\"showTick\", false, \"boolean\", \"Show Tick\");\nGauge.prototype.publish(\"tickValue\", 0, \"number\", \"Tick Value\");\nGauge.prototype.publish(\"tickValueDescription\", \"\", \"string\", \"Tick Value Description\");\nGauge.prototype.publish(\"tooltip\", \"\", \"string\", \"Tooltip\");\n\nGauge.prototype.publish(\"colorRange\", [\"green\", \"green\", \"green\", \"green\", \"green\", \"green\", \"green\", \"green\", \"orange\", \"red\", \"red\"], \"array\", \"Array of colors for the filled gauge portion. The fill color will be relative to the gauge value.\");\nGauge.prototype.publish(\"colorDomain\", [0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1], \"array\", \"This array augments the mapping of the value to the fill colorRange.\");\nGauge.prototype.publish(\"emptyColor\", \"lightgrey\", \"html-color\", \"Color of the empty portion of the gauge\");\nGauge.prototype.publish(\"tickColor\", \"black\", \"html-color\", \"Color of the tick\");\n","import { I2DChart, ITooltip } from \"@hpcc-js/api\";\nimport { InputField, SVGWidget, Utility } from \"@hpcc-js/common\";\nimport { degreesToRadians, normalizeRadians } from \"@hpcc-js/util\";\nimport { format as d3Format } from \"d3-format\";\nimport { interpolate as d3Interpolate } from \"d3-interpolate\";\nimport { select as d3Select } from \"d3-selection\";\nimport { arc as d3Arc, pie as d3Pie } from \"d3-shape\";\n\nimport \"../src/Pie.css\";\n\nconst sortAscending = (a, b) => a[1] - b[1] > 0 ? 1 : -1;\nconst sortDescending = (a, b) => a[1] - b[1] > 0 ? -1 : 1;\n\nexport class Pie extends SVGWidget {\n static __inputs: InputField[] = [{\n id: \"label\",\n type: \"string\"\n }, {\n id: \"value\",\n type: \"number\"\n }];\n\n protected _totalValue: number;\n\n d3Pie;\n d3Arc;\n d3LabelArc;\n private _labelPositions;\n private _smallValueLabelHeight;\n private _labelWidthLimit: number;\n private _quadIdxArr;\n private _minLabelTop = 0;\n private _maxLabelBottom = 0;\n private _seriesValueFormatter;\n private _seriesPercentageFormatter;\n constructor() {\n super();\n I2DChart.call(this);\n ITooltip.call(this);\n Utility.SimpleSelectionMixin.call(this);\n\n this.d3Pie = d3Pie();\n\n this.d3Arc = d3Arc();\n this.d3LabelArc = d3Arc();\n this\n .tooltipTick_default(false)\n .tooltipOffset_default(0)\n ;\n }\n\n intersection(pointA, pointB) {\n return this.intersectCircle(this.calcOuterRadius(), pointA, pointB);\n }\n\n calcInnerRadius() {\n return this.innerRadius_exists() ? this.calcOuterRadius() * (this.innerRadius() as number) / 100 : 0;\n }\n\n calcOuterRadius() {\n const maxTextWidth = this.textSize(this.data().map(d => this.getLabelText({ data: d }, false)), \"Verdana\", 12).width;\n const horizontalLimit = this._size.width - (this.showLabels() ? maxTextWidth * 2 : 0) - 20;\n const verticalLimit = this._size.height - 12 * 3 - (this.showLabels() ? this._smallValueLabelHeight : 0);\n const outerRadius = Math.min(horizontalLimit, verticalLimit) / 2 - 2;\n if ((horizontalLimit / 2) - 2 < this.minOuterRadius()) {\n this._labelWidthLimit = maxTextWidth - (this.minOuterRadius() - ((horizontalLimit / 2) - 2));\n } else {\n this._labelWidthLimit = maxTextWidth;\n }\n if (outerRadius < this.minOuterRadius()) {\n return this.minOuterRadius();\n }\n return outerRadius;\n }\n\n calcSmallValueLabelHeight() {\n const smallDef = 0.1;\n const totalVal = this.data().reduce((acc, n) => acc + n[1], 0);\n let smallCount = 0;\n this.data().forEach(row => {\n if (row[1] / totalVal < smallDef) {\n smallCount++;\n }\n });\n return this.labelHeight() * smallCount;\n }\n\n calcTotalValue(): number {\n return this.data().reduce((acc, d) => {\n return acc + d[1];\n }, 0);\n }\n\n getLabelText(d, truncate?) {\n let len;\n let label = d.data[0];\n if (typeof this._labelWidthLimit !== \"undefined\" && truncate) {\n const labelWidth = this.textSize(label, \"Verdana\", this.labelHeight()).width;\n if (this._labelWidthLimit < labelWidth) {\n len = label.length * (this._labelWidthLimit / labelWidth) - 3;\n label = len < label.length ? label.slice(0, len) + \"...\" : label;\n }\n }\n if (this.showSeriesValue()) {\n label += ` : ${this._seriesValueFormatter(d.data[1])}`;\n }\n if (this.showSeriesPercentage()) {\n let sum = this._totalValue;\n const dm = this.dataMeta();\n if (typeof dm.sum !== \"undefined\") {\n sum = dm.sum;\n }\n const perc = (d.data[1] / sum) * 100;\n label += ` : ${this._seriesPercentageFormatter(perc)}%`;\n }\n return label;\n }\n\n selection(): any[]; // any[] === single row\n selection(_: any[]): this;\n selection(_?: any[]): any[] | this {\n if (!arguments.length) {\n try {\n return this._selection.selection2()[0]?.data;\n } catch (e) {\n return undefined;\n }\n }\n // Stringify to enable a deep equal\n const strRow = JSON.stringify(_);\n this._selection.selection2(d => strRow === JSON.stringify(d.data));\n }\n\n selectByLabel(_: string) {\n const row = this.data().filter(row => row[0] === _)[0];\n if (row) {\n this.selection(row);\n }\n }\n\n _slices;\n _labels;\n enter(_domNode, element) {\n super.enter(_domNode, element);\n this._selection.widgetElement(element);\n this._slices = element.append(\"g\");\n this._labels = element.append(\"g\");\n const context = this;\n this\n .tooltipHTML(function (d) {\n switch (context.tooltipStyle()) {\n case \"series-table\":\n return context.tooltipFormat({\n label: d.data[0],\n arr: context.columns().slice(1).map(function (column, i) {\n return {\n label: column,\n color: context._palette(d.data[0]),\n value: d.data[i + 1]\n };\n })\n });\n default:\n return context.tooltipFormat({ label: d.data[0], value: d.data[1] });\n }\n })\n ;\n }\n\n update(_domNode, element) {\n super.update(_domNode, element);\n const context = this;\n this.updateD3Pie();\n this._palette = this._palette.switch(this.paletteID());\n this._seriesValueFormatter = d3Format(this.seriesValueFormat() as string);\n this._seriesPercentageFormatter = d3Format(this.seriesPercentageFormat() as string);\n if (this.useClonedPalette()) {\n this._palette = this._palette.cloneNotExists(this.paletteID() + \"_\" + this.id());\n }\n this._smallValueLabelHeight = this.calcSmallValueLabelHeight();\n this._totalValue = this.calcTotalValue();\n const innerRadius = this.calcInnerRadius();\n const outerRadius = this.calcOuterRadius();\n const labelRadius = outerRadius + 12;\n this.d3Arc\n .innerRadius(innerRadius)\n .padRadius(outerRadius)\n .outerRadius(outerRadius)\n ;\n\n this._quadIdxArr = [[], [], [], []];\n const data = [...this.data()];\n switch (this.sortDataByValue()) {\n case \"ascending\":\n data.sort(sortAscending);\n break;\n case \"descending\":\n data.sort(sortDescending);\n break;\n }\n const arc = this._slices.selectAll(\".arc\").data(this.d3Pie(data), d => d.data[0]);\n\n this._labelPositions = [];\n\n // Enter ---\n arc.enter().append(\"g\")\n .attr(\"class\", (d, i) => \"arc series series-\" + this.cssTag(d.data[0]))\n .attr(\"opacity\", 0)\n .call(this._selection.enter.bind(this._selection))\n .on(\"click\", function (d) {\n context.click(context.rowToObj(d.data), context.columns()[1], context._selection.selected(this));\n })\n .on(\"dblclick\", function (d) {\n context.dblclick(context.rowToObj(d.data), context.columns()[1], context._selection.selected(this));\n })\n .each(function (d, i) {\n d3Select(this).append(\"path\")\n .on(\"mouseout.tooltip\", context.tooltip.hide)\n .on(\"mousemove.tooltip\", context.tooltip.show)\n .on(\"mouseover\", arcTween(0, 0))\n .on(\"mouseout\", arcTween(-5, 150))\n ;\n })\n .merge(arc).transition()\n .attr(\"opacity\", 1)\n .each(function (d, i) {\n const quad = context.getQuadrant(midAngle(d));\n context._quadIdxArr[quad].push(i);\n d.outerRadius = outerRadius - 5;\n const element2 = d3Select(this);\n element2.select(\"path\").transition()\n .attr(\"d\", context.d3Arc)\n .style(\"fill\", context.fillColor(d.data, context.columns()[1], d.data[1]))\n ;\n })\n ;\n\n // Exit ---\n arc.exit().transition()\n .style(\"opacity\", 0)\n .remove()\n ;\n // Labels ---\n this.d3LabelArc\n .innerRadius(labelRadius)\n .outerRadius(labelRadius)\n ;\n const text = this._labels.selectAll(\"text\").data(this.showLabels() ? this.d3Pie(data) : [], d => d.data[0]);\n\n const mergedText = text.enter().append(\"text\")\n .on(\"mouseout.tooltip\", context.tooltip.hide)\n .on(\"mousemove.tooltip\", context.tooltip.show)\n .attr(\"dy\", \".5em\")\n .on(\"click\", function (d) {\n context._slices.selectAll(\"g\").filter(function (d2) {\n if (d.data === d2.data) {\n context._selection.click(this);\n context.click(context.rowToObj(d.data), context.columns()[1], context._selection.selected(this));\n }\n });\n })\n .on(\"dblclick\", function (d) {\n context._slices.selectAll(\"g\").filter(function (d2) {\n if (d.data === d2.data) {\n context.dblclick(context.rowToObj(d.data), context.columns()[1], context._selection.selected(this));\n }\n });\n })\n .merge(text)\n .text(d => this.getLabelText(d, true))\n .each(function (d, i) {\n const pos = context.d3LabelArc.centroid(d);\n const mid_angle = midAngle(d);\n pos[0] = labelRadius * (context.isLeftSide(mid_angle) ? 1 : -1);\n context._labelPositions.push({\n top: pos[1],\n bottom: pos[1] + context.labelHeight()\n });\n });\n if (this.showLabels()) {\n this.adjustForOverlap();\n mergedText.transition()\n .style(\"font-size\", this.labelHeight() + \"px\")\n .attr(\"transform\", (d, i) => {\n const pos = context.d3LabelArc.centroid(d);\n pos[0] = labelRadius * (context.isLeftSide(midAngle(d)) ? 1 : -1);\n pos[1] = context._labelPositions[i].top;\n return \"translate(\" + pos + \")\";\n })\n .style(\"text-anchor\", d => this.isLeftSide(midAngle(d)) ? \"start\" : \"end\");\n }\n\n text.exit()\n .remove();\n\n const polyline = this._labels.selectAll(\"polyline\").data(this.showLabels() ? this.d3Pie(data) : [], d => this.getLabelText(d, true));\n\n polyline.enter()\n .append(\"polyline\")\n .merge(polyline).transition()\n .attr(\"points\", function (d, i) {\n const pos = context.d3LabelArc.centroid(d);\n const pos1 = context.d3Arc.centroid(d);\n const pos2 = [...pos];\n pos[0] = labelRadius * (context.isLeftSide(midAngle(d)) ? 1 : -1);\n pos[1] = context._labelPositions[i].top;\n return [pos1, pos2, pos];\n });\n\n polyline.exit()\n .remove();\n\n if (this.showLabels()) {\n this.centerOnLabels();\n }\n function midAngle(d) {\n return d.startAngle + (d.endAngle - d.startAngle) / 2;\n }\n\n function arcTween(outerRadiusDelta, delay) {\n return function () {\n d3Select(this).transition().delay(delay).attrTween(\"d\", function (d: any) {\n const i = d3Interpolate(d.outerRadius, outerRadius + outerRadiusDelta);\n return function (t) { d.outerRadius = i(t); return context.d3Arc(d); };\n });\n };\n }\n }\n\n isLeftSide(midAngle) {\n midAngle = normalizeRadians(midAngle);\n const isLeft = midAngle > Math.PI * 2 ? midAngle : midAngle < Math.PI && midAngle > 0;\n return isLeft;\n }\n\n getQuadrant(radians) {\n let quad = 0;\n const rad = normalizeRadians(radians);\n quad = rad <= Math.PI * 1.0 && rad >= Math.PI * 0.5 ? 3 : quad;\n quad = rad <= Math.PI * 0.5 && rad >= Math.PI * 0.0 ? 2 : quad;\n quad = rad <= Math.PI * 0.0 && rad >= Math.PI * -0.5 ? 1 : quad;\n return quad;\n }\n\n centerOnLabels() {\n const gY = this.pos().y;\n const gY2 = gY * 2;\n const radius = this.calcOuterRadius();\n const top = Math.min(this._minLabelTop, -radius);\n const bottom = Math.max(this._maxLabelBottom, radius);\n const h = bottom - top;\n const heightDiff = gY2 - h;\n const absTop = Math.abs(this._minLabelTop);\n let yShift = 0;\n if (bottom > gY) {\n yShift = gY - bottom + (this.labelHeight() / 2);\n yShift -= heightDiff / 2;\n } else if (top < 0 && absTop > gY) {\n yShift = absTop - gY + (this.labelHeight() / 2);\n yShift += heightDiff / 2;\n }\n const pos = this.pos();\n this.pos({\n y: pos.y + yShift,\n x: pos.x\n });\n }\n\n adjustForOverlap() {\n const labelHeight = this.labelHeight();\n this._quadIdxArr.forEach((arr, quad) => {\n this._quadIdxArr[quad].sort((a, b) => {\n if (quad === 1 || quad === 2) {\n return this._labelPositions[a].top > this._labelPositions[b].top ? -1 : 1;\n } else if (quad === 0 || quad === 3) {\n return this._labelPositions[a].top > this._labelPositions[b].top ? 1 : -1;\n }\n });\n let prevTop;\n this._quadIdxArr[quad].forEach((n, i) => {\n if (i > 0) {\n if (quad === 1 || quad === 2) {\n if (prevTop < this._labelPositions[n].bottom) {\n const overlap = this._labelPositions[n].bottom - prevTop;\n this._labelPositions[n].top -= overlap;\n this._labelPositions[n].bottom -= overlap;\n }\n } else if (quad === 0 || quad === 3) {\n if (prevTop + labelHeight > this._labelPositions[n].top) {\n const overlap = Math.abs(this._labelPositions[n].top) - Math.abs(prevTop + labelHeight);\n this._labelPositions[n].top -= overlap;\n this._labelPositions[n].bottom -= overlap;\n }\n }\n }\n prevTop = this._labelPositions[n].top;\n });\n });\n this._minLabelTop = 0;\n this._maxLabelBottom = 0;\n this._quadIdxArr.forEach((arr, quad) => {\n this._quadIdxArr[quad].forEach((n, i) => {\n if (this._minLabelTop > this._labelPositions[n].top) {\n this._minLabelTop = this._labelPositions[n].top;\n }\n if (this._maxLabelBottom < this._labelPositions[n].bottom) {\n this._maxLabelBottom = this._labelPositions[n].bottom;\n }\n });\n });\n }\n\n exit(domNode, element) {\n super.exit(domNode, element);\n }\n\n updateD3Pie() {\n const startAngle = normalizeRadians(degreesToRadians(this.startAngle()));\n\n switch (this.sortDataByValue()) {\n case \"ascending\":\n this.d3Pie.sort(sortAscending);\n break;\n case \"descending\":\n this.d3Pie.sort(sortDescending);\n break;\n default:\n this.d3Pie.sort(null);\n }\n\n this.d3Pie\n .padAngle(0.0025)\n .startAngle(startAngle)\n .endAngle(2 * Math.PI + startAngle)\n .value(function (d) {\n return d[1];\n })\n ;\n }\n}\nPie.prototype._class += \" chart_Pie\";\nPie.prototype.implements(I2DChart.prototype);\nPie.prototype.implements(ITooltip.prototype);\nPie.prototype.mixin(Utility.SimpleSelectionMixin);\n\nexport interface Pie {\n showSeriesValue(): boolean;\n showSeriesValue(_: boolean): this;\n seriesValueFormat(): string;\n seriesValueFormat(_: string): this;\n showSeriesPercentage(): boolean;\n showSeriesPercentage(_: boolean): this;\n minOuterRadius(): number;\n minOuterRadius(_: number): this;\n startAngle(): number;\n startAngle(_: number): this;\n labelHeight(): number;\n labelHeight(_: number): this;\n seriesPercentageFormat(): string;\n seriesPercentageFormat(_: string): this;\n showLabels(): boolean;\n showLabels(_: boolean): this;\n sortDataByValue(): \"none\" | \"ascending\" | \"descending\";\n sortDataByValue(_: \"none\" | \"ascending\" | \"descending\"): this;\n\n paletteID(_?: string): string | Pie;\n useClonedPalette(_?: boolean): boolean | Pie;\n outerText(_?: boolean): boolean | Pie;\n innerRadius(): number;\n innerRadius_exists(): boolean;\n\n // I2DChart\n _palette;\n fillColor(row: any[], column: string, value: number): string;\n textColor(row: any[], column: string, value: number): string;\n click(row, column, selected): void;\n dblclick(row, column, selected): void;\n\n // ITooltip\n tooltip;\n tooltipHTML(_): string;\n tooltipFormat(_): string;\n tooltipStyle(): \"default\" | \"none\" | \"series-table\";\n tooltipTick(): boolean;\n tooltipTick(_: boolean): Pie;\n tooltipTick_default(): boolean;\n tooltipTick_default(_: boolean): Pie;\n tooltipOffset(): number;\n tooltipOffset(_: number): Pie;\n tooltipOffset_default(): number;\n tooltipOffset_default(_: number): Pie;\n\n // SimpleSelectionMixin\n _selection: Utility.SimpleSelection;\n}\nPie.prototype.publish(\"showLabels\", true, \"boolean\", \"If true, wedge labels will display\");\nPie.prototype.publish(\"showSeriesValue\", false, \"boolean\", \"Append data series value next to label\", null, { disable: w => !w.showLabels() });\nPie.prototype.publish(\"seriesValueFormat\", \",.0f\", \"string\", \"Number format used for formatting series values\", null, { disable: w => !w.showSeriesValue() });\nPie.prototype.publish(\"showSeriesPercentage\", false, \"boolean\", \"Append data series percentage next to label\", null, { disable: w => !w.showLabels() });\nPie.prototype.publish(\"seriesPercentageFormat\", \",.0f\", \"string\", \"Number format used for formatting series percentages\", null, { disable: w => !w.showSeriesPercentage() });\nPie.prototype.publish(\"paletteID\", \"default\", \"set\", \"Color palette for this widget\", Pie.prototype._palette.switch(), { tags: [\"Basic\", \"Shared\"] });\nPie.prototype.publish(\"useClonedPalette\", false, \"boolean\", \"Enable or disable using a cloned palette\", null, { tags: [\"Intermediate\", \"Shared\"] });\nPie.prototype.publish(\"innerRadius\", 0, \"number\", \"Sets inner pie hole radius as a percentage of the radius of the pie chart\", null, { tags: [\"Basic\"], range: { min: 0, step: 1, max: 100 } });\nPie.prototype.publish(\"minOuterRadius\", 20, \"number\", \"Minimum outer radius (pixels)\");\nPie.prototype.publish(\"startAngle\", 0, \"number\", \"Starting angle of the first (and largest) wedge (degrees)\");\nPie.prototype.publish(\"labelHeight\", 12, \"number\", \"Font size of labels (pixels)\", null, { disable: w => !w.showLabels() });\nPie.prototype.publish(\"sortDataByValue\", \"descending\", \"set\", \"Sort data by value\", [\"none\", \"ascending\", \"descending\"]);\n","import { Pie } from \"./Pie.ts\";\n\nexport class HalfPie extends Pie {\n constructor() {\n super();\n }\n postUpdate(domNode, element) {\n super.postUpdate(domNode, element);\n let x = this._pos.x;\n let y = this._pos.y;\n if (this._drawStartPos === \"origin\" && this._target instanceof SVGElement) {\n x -= this._size.width / 2;\n y -= this._size.height / 2;\n }\n y += (this._size.height / 4);\n this._element.attr(\"transform\", \"translate(\" + x + \",\" + y + \")scale(\" + this._widgetScale + \")\");\n }\n updateD3Pie() {\n super.updateD3Pie();\n this.d3Pie\n .startAngle(-Math.PI / 2)\n .endAngle(Math.PI / 2)\n ;\n }\n}\nHalfPie.prototype._class += \" chart_HalfPie\";\n","import { max, Palette } from \"@hpcc-js/common\";\nimport { XYAxis } from \"./XYAxis.ts\";\n\nexport class Heat extends XYAxis {\n\n protected _domForeignObject;\n protected _domCanvas;\n protected _heat;\n\n constructor() {\n super();\n this\n .xAxisGuideLines_default(true)\n .yAxisGuideLines_default(true)\n ;\n }\n\n radius(r: number): this {\n this.radiusX(r);\n this.radiusY(r);\n return this;\n }\n\n layerEnter(host: XYAxis, element, duration: number = 250) {\n super.layerEnter(host, element, duration);\n this._domForeignObject = this.svg.insert(\"foreignObject\", `#${this.id() + \"_clippath\"}`);\n this._domCanvas = this._domForeignObject.append(\"xhtml:body\")\n .style(\"margin\", \"0px\")\n .style(\"padding\", \"0px\")\n .style(\"background-color\", \"transparent\")\n .append(\"canvas\")\n ;\n this._heat = simpleheat(this._domCanvas.node());\n }\n\n layerUpdate(host: XYAxis, element, duration: number = 250) {\n super.layerUpdate(host, element);\n\n this._palette = this._palette.switch(this.paletteID());\n\n let width = this.width() - this.margin.left - this.margin.right;\n if (width < 0) width = 0;\n let height = this.height() - this.margin.top - this.margin.bottom;\n if (height < 0) height = 0;\n\n this._domForeignObject\n .attr(\"x\", this.margin.left)\n .attr(\"y\", this.margin.top)\n .attr(\"width\", width)\n .attr(\"height\", height)\n ;\n this._domCanvas\n .attr(\"width\", width)\n .attr(\"height\", height)\n ;\n\n const data = host.orientation() === \"horizontal\" ?\n this.data().map(r => [host.dataPos(r[0]), host.valuePos(r[1]), r[2]]) :\n this.data().map(r => [host.valuePos(r[1]), host.dataPos(r[0]), r[2]])\n ;\n\n const maxWeight = this.maxWeight_exists() ? this.maxWeight() : max(data, r => r[2]);\n\n if (this.paletteID() !== \"default\") {\n const gradient = {};\n const count = 8;\n const reverse = this.reversePalette();\n for (let i = 0; i < count; ++i) {\n gradient[i / count] = this._palette((reverse ? count - i : i) / count, 0, 1);\n }\n this._heat.gradient(gradient);\n } else {\n this._heat.gradient(this._heat.defaultGradient);\n }\n\n this._heat.resize();\n\n const radiusX = this.radiusAsPercent() ? this.radiusX() * width / 100 : this.radiusX();\n const radiusY = this.radiusAsPercent() ? this.radiusY() * height / 100 : this.radiusY();\n\n this._heat\n .clear()\n .radius(radiusX, radiusY, this.blur())\n .max(maxWeight)\n .data(data)\n .draw(this.minOpacity())\n ;\n }\n}\n\nHeat.prototype._class += \" chart_Heat\";\nHeat.prototype._palette = Palette.rainbow(\"default\");\n\nexport interface Heat {\n paletteID(): string;\n paletteID(_: string): this;\n useClonedPalette(): boolean;\n useClonedPalette(_: boolean): this;\n reversePalette(): boolean;\n reversePalette(_: boolean): this;\n\n radiusX(): number;\n radiusX(_: number): this;\n radiusY(): number;\n radiusY(_: number): this;\n radiusAsPercent(): boolean;\n radiusAsPercent(_: boolean): this;\n blur(): number;\n blur(_: number): this;\n\n maxWeight(): number;\n maxWeight(_: number): this;\n maxWeight_exists(): boolean;\n\n minOpacity(): number;\n minOpacity(_: number): this;\n}\n\nHeat.prototype.publish(\"paletteID\", \"default\", \"set\", \"Color palette for this widget\", Heat.prototype._palette.switch(), { tags: [\"Basic\"] });\nHeat.prototype.publish(\"useClonedPalette\", false, \"boolean\", \"Enable or disable using a cloned palette\", null, { tags: [\"Intermediate\", \"Shared\"] });\nHeat.prototype.publish(\"reversePalette\", false, \"boolean\", \"Reverse Palette Colors\", null, { disable: w => w.paletteID() === \"default\" });\n\nHeat.prototype.publish(\"radiusX\", 25, \"number\", \"Point X radius (25 by default)\");\nHeat.prototype.publish(\"radiusY\", 25, \"number\", \"Point Y radius (25 by default)\");\nHeat.prototype.publish(\"radiusAsPercent\", false, \"boolean\", \"Calculate RadiusX + RadiusY as % of size\");\nHeat.prototype.publish(\"blur\", 15, \"number\", \"Point blur radius (15 by default)\");\n\nHeat.prototype.publish(\"maxWeight\", undefined, \"number\", \"Clamp max weight to value (optional), omitting uses max data point\", undefined, { optional: true });\nHeat.prototype.publish(\"minOpacity\", 0.05, \"number\", \"Minimum point opacity (0.05 by default)\");\n\n// The following code is a modified version of \n// - https://github.com/mourner/simpleheat\n// - Licensed under BSD-2-Clause - https://github.com/mourner/simpleheat/blob/gh-pages/LICENSE\n// Changes:\n// * Fixed TS syntax issues\n// * Added support for eliptical shapes instead of circles\n\nfunction simpleheat(canvas): void {\n if (!(this instanceof simpleheat)) return new simpleheat(canvas);\n\n this._canvas = canvas = typeof canvas === \"string\" ? document.getElementById(canvas) : canvas;\n\n this._ctx = canvas.getContext(\"2d\");\n this._width = canvas.width;\n this._height = canvas.height;\n\n this._max = 1;\n this._data = [];\n}\n\nsimpleheat.prototype = {\n\n defaultRadius: 25,\n\n defaultGradient: {\n 0.4: \"blue\",\n 0.6: \"cyan\",\n 0.7: \"lime\",\n 0.8: \"yellow\",\n 1.0: \"red\"\n },\n\n data: function (data) {\n this._data = data;\n return this;\n },\n\n max: function (max) {\n this._max = max;\n return this;\n },\n\n add: function (point) {\n this._data.push(point);\n return this;\n },\n\n clear: function () {\n this._data = [];\n return this;\n },\n\n radius: function (rX, rY, blur) {\n blur = blur === undefined ? 15 : blur;\n\n // create a grayscale blurred ellipse image that we'll use for drawing points\n const ellipse = this._ellipse = this._createCanvas();\n const ctx = ellipse.getContext(\"2d\");\n const rX2 = this._r = rX + blur;\n const rY2 = this._r = rY + blur;\n\n ellipse.width = rX2 * 2;\n ellipse.height = rY2 * 2;\n\n ctx.shadowOffsetX = ctx.shadowOffsetY = rX2 * 2;\n ctx.shadowOffsetY = ctx.shadowOffsetY = rY2 * 2;\n ctx.shadowBlur = blur;\n ctx.shadowColor = \"black\";\n\n ctx.beginPath();\n ctx.ellipse(-rX2, -rY2, rX, rY, 0, 0, Math.PI * 2, true);\n ctx.closePath();\n ctx.fill();\n\n return this;\n },\n\n resize: function () {\n this._width = this._canvas.width;\n this._height = this._canvas.height;\n },\n\n gradient: function (grad) {\n // create a 256x1 gradient that we'll use to turn a grayscale heatmap into a colored one\n const canvas = this._createCanvas(),\n ctx = canvas.getContext(\"2d\"),\n gradient = ctx.createLinearGradient(0, 0, 0, 256);\n\n canvas.width = 1;\n canvas.height = 256;\n\n for (const i in grad) {\n gradient.addColorStop(+i, grad[i]);\n }\n\n ctx.fillStyle = gradient;\n ctx.fillRect(0, 0, 1, 256);\n\n this._grad = ctx.getImageData(0, 0, 1, 256).data;\n\n return this;\n },\n\n draw: function (minOpacity) {\n if (!this._ellipse) this.radius(this.defaultRadius, this.defaultRadius);\n if (!this._grad) this.gradient(this.defaultGradient);\n\n const ctx = this._ctx;\n\n ctx.clearRect(0, 0, this._width, this._height);\n\n // draw a grayscale heatmap by putting a blurred ellipse at each data point\n for (let i = 0, len = this._data.length, p; i < len; i++) {\n p = this._data[i];\n if (p[2] < 0) {\n p[2] = 0;\n } else if (p[2] > this._max) {\n p[2] = this._max;\n }\n ctx.globalAlpha = Math.max(p[2] / this._max, minOpacity === undefined ? 0.05 : minOpacity);\n ctx.drawImage(this._ellipse, p[0] - this._r, p[1] - this._r);\n }\n\n // colorize the heatmap, using opacity value of each pixel to get the right color from our gradient\n const colored = ctx.getImageData(0, 0, this._width, this._height);\n this._colorize(colored.data, this._grad);\n ctx.putImageData(colored, 0, 0);\n\n return this;\n },\n\n _colorize: function (pixels, gradient) {\n for (let i = 0, len = pixels.length, j; i < len; i += 4) {\n j = pixels[i + 3] * 4; // get gradient color from opacity value\n\n if (j) {\n pixels[i] = gradient[j];\n pixels[i + 1] = gradient[j + 1];\n pixels[i + 2] = gradient[j + 2];\n }\n }\n },\n\n _createCanvas: function () {\n if (typeof document !== \"undefined\") {\n return document.createElement(\"canvas\");\n } else {\n // create a new canvas instance in node.js\n // the canvas class needs to have a default constructor without any parameter\n return new this._canvas.constructor();\n }\n }\n};\n","var thirdPi = Math.PI / 3,\n angles = [0, thirdPi, 2 * thirdPi, 3 * thirdPi, 4 * thirdPi, 5 * thirdPi];\n\nfunction pointX(d) {\n return d[0];\n}\n\nfunction pointY(d) {\n return d[1];\n}\n\nexport default function() {\n var x0 = 0,\n y0 = 0,\n x1 = 1,\n y1 = 1,\n x = pointX,\n y = pointY,\n r,\n dx,\n dy;\n\n function hexbin(points) {\n var binsById = {}, bins = [], i, n = points.length;\n\n for (i = 0; i < n; ++i) {\n if (isNaN(px = +x.call(null, point = points[i], i, points))\n || isNaN(py = +y.call(null, point, i, points))) continue;\n\n var point,\n px,\n py,\n pj = Math.round(py = py / dy),\n pi = Math.round(px = px / dx - (pj & 1) / 2),\n py1 = py - pj;\n\n if (Math.abs(py1) * 3 > 1) {\n var px1 = px - pi,\n pi2 = pi + (px < pi ? -1 : 1) / 2,\n pj2 = pj + (py < pj ? -1 : 1),\n px2 = px - pi2,\n py2 = py - pj2;\n if (px1 * px1 + py1 * py1 > px2 * px2 + py2 * py2) pi = pi2 + (pj & 1 ? 1 : -1) / 2, pj = pj2;\n }\n\n var id = pi + \"-\" + pj, bin = binsById[id];\n if (bin) bin.push(point);\n else {\n bins.push(bin = binsById[id] = [point]);\n bin.x = (pi + (pj & 1) / 2) * dx;\n bin.y = pj * dy;\n }\n }\n\n return bins;\n }\n\n function hexagon(radius) {\n var x0 = 0, y0 = 0;\n return angles.map(function(angle) {\n var x1 = Math.sin(angle) * radius,\n y1 = -Math.cos(angle) * radius,\n dx = x1 - x0,\n dy = y1 - y0;\n x0 = x1, y0 = y1;\n return [dx, dy];\n });\n }\n\n hexbin.hexagon = function(radius) {\n return \"m\" + hexagon(radius == null ? r : +radius).join(\"l\") + \"z\";\n };\n\n hexbin.centers = function() {\n var centers = [],\n j = Math.round(y0 / dy),\n i = Math.round(x0 / dx);\n for (var y = j * dy; y < y1 + r; y += dy, ++j) {\n for (var x = i * dx + (j & 1) * dx / 2; x < x1 + dx / 2; x += dx) {\n centers.push([x, y]);\n }\n }\n return centers;\n };\n\n hexbin.mesh = function() {\n var fragment = hexagon(r).slice(0, 4).join(\"l\");\n return hexbin.centers().map(function(p) { return \"M\" + p + \"m\" + fragment; }).join(\"\");\n };\n\n hexbin.x = function(_) {\n return arguments.length ? (x = _, hexbin) : x;\n };\n\n hexbin.y = function(_) {\n return arguments.length ? (y = _, hexbin) : y;\n };\n\n hexbin.radius = function(_) {\n return arguments.length ? (r = +_, dx = r * 2 * Math.sin(thirdPi), dy = r * 1.5, hexbin) : r;\n };\n\n hexbin.size = function(_) {\n return arguments.length ? (x0 = y0 = 0, x1 = +_[0], y1 = +_[1], hexbin) : [x1 - x0, y1 - y0];\n };\n\n hexbin.extent = function(_) {\n return arguments.length ? (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1], hexbin) : [[x0, y0], [x1, y1]];\n };\n\n return hexbin.radius(1);\n}\n","import { I2DAggrChart, ITooltip } from \"@hpcc-js/api\";\nimport { InputField } from \"@hpcc-js/common\";\nimport { extent as d3Extent, max as d3Max, min as d3Min } from \"d3-array\";\nimport { hexbin as d3HexBin } from \"d3-hexbin\";\nimport { XYAxis } from \"./XYAxis.ts\";\n\nimport \"../src/HexBin.css\";\n\nexport class HexBin extends XYAxis {\n static __inputs: InputField[] = [{\n id: \"x\",\n type: \"any\"\n }, {\n id: \"y\",\n type: \"number\"\n }];\n\n protected _hexbin;\n protected _dataMinWeight;\n protected _dataMaxWeight;\n constructor() {\n super();\n I2DAggrChart.call(this);\n this.tooltipValueFormat_default(\",.0f\");\n ITooltip.call(this);\n this.tooltipHTML(d => {\n const seriesExtent = d3Extent<{ label: any, value: any }>(d, d => d.label);\n const labelExtent = d3Extent<{ label: any, value: any }>(d, d => d.value);\n return this.tooltipFormat({\n series: seriesExtent[0] === seriesExtent[1] ? seriesExtent[0] : `${seriesExtent[0]} -> ${seriesExtent[1]}`,\n label: labelExtent[0] === labelExtent[1] ? labelExtent[0] : `${labelExtent[0]} -> ${labelExtent[1]}`,\n value: d.length\n });\n });\n this._hexbin = d3HexBin()\n .x(d => d.x)\n .y(d => d.y)\n ;\n this\n .xAxisGuideLines_default(false)\n .yAxisGuideLines_default(false)\n .xAxisType_default(\"linear\")\n ;\n }\n\n xPos(host: XYAxis, d) {\n return host.orientation() === \"horizontal\" ? host.dataPos(d.label) : host.valuePos(d.value);\n }\n\n yPos(host: XYAxis, d) {\n return host.orientation() === \"horizontal\" ? host.valuePos(d.value) : host.dataPos(d.label);\n }\n\n layerUpdate(host: XYAxis, element, duration: number = 250) {\n super.layerUpdate(host, element, duration);\n const context = this;\n\n this._palette = this._palette.switch(this.paletteID());\n if (this.useClonedPalette()) {\n this._palette = this._palette.cloneNotExists(this.paletteID() + \"_\" + this.id());\n }\n\n this._hexbin\n .extent([0, 0], [this.width(), this.height()])\n .radius(this.binSize())\n ;\n\n const flatData = this.flattenData();\n const dataPoints = flatData.map(d => {\n return {\n x: context.xPos(host, d),\n y: context.yPos(host, d),\n label: host.parseData(d.label),\n value: host.parseValue(d.value),\n origRow: d\n };\n });\n const hexBinPoints = this._hexbin(dataPoints);\n const minBinPoints = d3Min(hexBinPoints, function (d: any) { return d.length; });\n const maxBinPoints = d3Max(hexBinPoints, function (d: any) { return d.length; });\n this._dataMinWeight = minBinPoints;\n this._dataMaxWeight = maxBinPoints;\n\n const points = element.selectAll(\".hexagon\").data(hexBinPoints, function (d) { return d.i + \"_\" + d.j; });\n points.enter().append(\"path\")\n .attr(\"class\", \"hexagon\")\n .call(host._selection.enter.bind(host._selection))\n .on(\"click\", function (d: any) {\n const data = context.data();\n context.click(d.map(row => host.rowToObj(data[row.origRow.rowIdx])), context.columns()[1], host._selection.selected(this));\n })\n .on(\"dblclick\", function (d: any) {\n const data = context.data();\n context.dblclick(d.map(row => host.rowToObj(data[row.origRow.rowIdx])), context.columns()[1], host._selection.selected(this));\n })\n .on(\"mouseout.tooltip\", context.tooltip.hide)\n .on(\"mousemove.tooltip\", context.tooltip.show)\n .attr(\"transform\", function (d) { return \"translate(\" + d.x + \",\" + d.y + \")scale(0)\"; })\n .merge(points).transition().duration(duration)\n .attr(\"d\", this._hexbin.hexagon())\n .attr(\"transform\", function (d) { return \"translate(\" + d.x + \",\" + d.y + \")scale(1)\"; })\n .style(\"fill\", function (d) { return context._palette(d.length, minBinPoints, maxBinPoints); })\n ;\n points.exit().transition().duration(duration)\n .attr(\"transform\", function (d) { return \"translate(\" + d.x + \",\" + d.y + \")scale(0)\"; })\n .remove()\n ;\n }\n\n exit(domNode, element) {\n super.exit(domNode, element);\n }\n\n // Events ---\n click(row: object[], column, selected) {\n // console.log(\"Click: \" + JSON.stringify(row) + \", \" + column + \", \" + selected);\n }\n dblclick(row: object[], column, selected) {\n // console.log(\"Click: \" + JSON.stringify(row) + \", \" + column + \", \" + selected);\n }\n}\nHexBin.prototype._class += \" chart_HexBin\";\nHexBin.prototype.implements(I2DAggrChart.prototype);\nHexBin.prototype.implements(ITooltip.prototype);\n\nexport interface HexBin {\n // ITooltip\n tooltip;\n tooltipHTML(_): string;\n tooltipFormat(_): string;\n tooltipValueFormat(_): string;\n tooltipValueFormat_default(_): string;\n\n paletteID(): string;\n paletteID(_: string): this;\n useClonedPalette(): boolean;\n useClonedPalette(_: boolean): this;\n binSize(): number;\n binSize(_: number): this;\n}\n\nHexBin.prototype.publish(\"paletteID\", \"Blues\", \"set\", \"Color palette for this widget\", HexBin.prototype._palette.switch(), { tags: [\"Basic\", \"Shared\"] });\nHexBin.prototype.publish(\"useClonedPalette\", false, \"boolean\", \"Enable or disable using a cloned palette\", null, { tags: [\"Intermediate\", \"Shared\"] });\nHexBin.prototype.publish(\"binSize\", 20, \"number\", \"Bin radius\", null, { range: { min: 1, max: 300, step: 1 } });\n","import { Scatter } from \"./Scatter.ts\";\n\nimport \"../src/Line.css\";\n\nexport class Line extends Scatter {\n constructor() {\n super();\n\n this\n .interpolate_default(\"linear\")\n ;\n }\n}\nLine.prototype._class += \" chart_Line\";\n","import { Pie } from \"./Pie.ts\";\n\nexport class QuarterPie extends Pie {\n constructor() {\n super();\n }\n postUpdate(domNode, element) {\n super.postUpdate(domNode, element);\n let x = this.orientation() === \"left\" ? 0 : this._size.width;\n let y = this._size.height;\n if (this._drawStartPos === \"origin\" && this._target instanceof SVGElement) {\n x -= this._size.width / 2;\n y -= this._size.height / 2;\n }\n this._element.attr(\"transform\", \"translate(\" + x + \",\" + y + \")scale(\" + this._widgetScale + \")\");\n }\n updateD3Pie() {\n super.updateD3Pie();\n this.d3Pie\n .startAngle(this.orientation() === \"left\" ? 0 : -Math.PI / 2)\n .endAngle(this.orientation() === \"left\" ? Math.PI / 2 : 0)\n ;\n }\n calcOuterRadius() {\n const maxTextWidth = this.textSize(this.data().map(d => this.getLabelText({ data: d })), \"Verdana\", 12).width;\n return Math.min(this._size.width - maxTextWidth - 10, this._size.height - 12 * 3) - 2;\n }\n}\nQuarterPie.prototype._class += \" chart_QuarterPie\";\n\nexport interface QuarterPie {\n orientation(): string;\n orientation(_: string): this;\n}\nQuarterPie.prototype.publish(\"orientation\", \"left\", \"set\", \"Determines the placement and start/end angle.\", [\"left\", \"right\"]);\n","import { SVGWidget } from \"@hpcc-js/common\";\nimport { scaleLinear as d3ScaleLinear } from \"d3-scale\";\n\nexport class QuartileCandlestick extends SVGWidget {\n protected _g;\n protected _leftLine;\n protected _rightLine;\n protected _midLine;\n protected _midOuterRect;\n protected _midInnerRect1;\n protected _midInnerRect2;\n protected _q0text;\n protected _q1text;\n protected _q2text;\n protected _q3text;\n protected _q4text;\n protected _q0val;\n protected _q1val;\n protected _q2val;\n protected _q3val;\n protected _q4val;\n constructor() {\n super();\n }\n enter(domNode, element) {\n super.enter(domNode, element);\n this._g = element.append(\"g\");\n this._leftLine = this._g.append(\"rect\");\n this._rightLine = this._g.append(\"rect\");\n this._midLine = this._g.append(\"rect\");\n this._midOuterRect = this._g.append(\"rect\");\n this._midInnerRect1 = this._g.append(\"rect\");\n this._midInnerRect2 = this._g.append(\"rect\");\n this._q0text = this._g.append(\"text\");\n this._q1text = this._g.append(\"text\");\n this._q2text = this._g.append(\"text\");\n this._q3text = this._g.append(\"text\");\n this._q4text = this._g.append(\"text\");\n this._q0val = this._g.append(\"text\");\n this._q1val = this._g.append(\"text\");\n this._q2val = this._g.append(\"text\");\n this._q3val = this._g.append(\"text\");\n this._q4val = this._g.append(\"text\");\n }\n update(domNode, element) {\n super.update(domNode, element);\n const valueSize = (this.orientation() === \"horizontal\" ? this.width() : this.height()) - this.lineWidth();\n const domainSize = this.orientation() === \"horizontal\" ? this.height() : this.width();\n const scale = d3ScaleLinear()\n .domain([\n this.data()[0],\n this.data()[4]\n ])\n .range([\n this.edgePadding(),\n valueSize - this.edgePadding()\n ])\n ;\n const candleWidth = this.candleWidth_exists() ? this.candleWidth() : domainSize;\n const lineWidth = this.lineWidth();\n const lineColor = this.lineColor();\n const roundedCorners = this.roundedCorners();\n const q0x = this.edgePadding();\n let q1x = scale(this.data()[1]);\n let q2x = scale(this.data()[2]);\n let q3x = scale(this.data()[3]);\n const dataTop = -candleWidth / 2;\n const dataBottom = candleWidth / 2;\n const upperTextRotation = this.upperTextRotation();\n const lowerTextRotation = this.lowerTextRotation();\n const padding = this.textPadding();\n const labelFontSize = this.labelFontSize();\n const valueFontSize = this.valueFontSize();\n const sz = Math.max(labelFontSize, valueFontSize);\n const q4x = valueSize - q0x;\n if (sz > 0) {\n while (q1x - q0x < sz) {\n q1x += sz;\n }\n while (q2x - q1x < sz) {\n q2x += sz;\n }\n while (q3x - q2x < sz) {\n q3x += sz;\n }\n while (q4x - q3x < sz) {\n q3x -= sz;\n }\n while (q3x - q2x < sz) {\n q2x -= sz;\n }\n while (q2x - q1x < sz) {\n q1x -= sz;\n }\n }\n let transX = (-valueSize / 2) - (this.lineWidth() / 2);\n let transY = 0;\n let rotate = 0;\n const s = 1;\n let textScale = 1;\n let labelAnchor = \"start\";\n let valueAnchor = \"end\";\n if (this.orientation() === \"vertical\") {\n transX = 0;\n transY = valueSize / 2 + (this.lineWidth() / 2);\n rotate = -90;\n labelAnchor = \"end\";\n valueAnchor = \"start\";\n textScale = -1;\n }\n this._g\n .style(\"shape-rendering\", \"crispEdges\")\n .attr(\"transform\", `translate(${transX},${transY})rotate(${rotate})scale(${s})`)\n ;\n this._leftLine\n .attr(\"fill\", lineColor)\n .attr(\"height\", candleWidth)\n .attr(\"width\", lineWidth)\n .attr(\"x\", q0x)\n .attr(\"y\", dataTop)\n .attr(\"rx\", roundedCorners)\n .attr(\"ry\", roundedCorners)\n ;\n this._rightLine\n .attr(\"class\", \"right-line\")\n .attr(\"fill\", lineColor)\n .attr(\"height\", candleWidth)\n .attr(\"width\", lineWidth)\n .attr(\"x\", q4x)\n .attr(\"y\", dataTop)\n .attr(\"rx\", roundedCorners)\n .attr(\"ry\", roundedCorners)\n ;\n this._midLine\n .attr(\"fill\", lineColor)\n .attr(\"height\", lineWidth)\n .attr(\"width\", q4x - q0x)\n .attr(\"x\", q0x)\n .attr(\"y\", -lineWidth / 2)\n ;\n this._midOuterRect\n .attr(\"fill\", lineColor)\n .attr(\"height\", candleWidth)\n .attr(\"width\", q3x - q1x)\n .attr(\"x\", q1x)\n .attr(\"y\", dataTop)\n .attr(\"rx\", roundedCorners)\n .attr(\"ry\", roundedCorners)\n ;\n this._midInnerRect1\n .attr(\"fill\", this.innerRectColor())\n .attr(\"height\", candleWidth - (lineWidth * 2))\n .attr(\"width\", q2x - (q1x + (lineWidth * 2)))\n .attr(\"x\", q1x + lineWidth)\n .attr(\"y\", lineWidth - (candleWidth / 2))\n .attr(\"rx\", roundedCorners * 0.618)\n .attr(\"ry\", roundedCorners * 0.618)\n ;\n this._midInnerRect2\n .attr(\"fill\", this.innerRectColor())\n .attr(\"height\", candleWidth - (lineWidth * 2))\n .attr(\"width\", q3x - q2x - lineWidth)\n .attr(\"x\", q2x)\n .attr(\"y\", lineWidth - (candleWidth / 2))\n .attr(\"rx\", roundedCorners * 0.618)\n .attr(\"ry\", roundedCorners * 0.618)\n ;\n this._q0text\n .attr(\"height\", candleWidth)\n .attr(\"width\", q3x - q1x)\n .attr(\"display\", this.showLabels() ? null : \"none\")\n .attr(\"fill\", this.textColor())\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"transform\", `translate(${q0x}, ${dataTop - padding})rotate(${upperTextRotation})scale(${textScale})`)\n .attr(\"font-size\", labelFontSize)\n .attr(\"text-anchor\", labelAnchor)\n .attr(\"alignment-baseline\", \"hanging\")\n .text(this.columns()[0])\n ;\n this._q1text\n .attr(\"height\", candleWidth)\n .attr(\"width\", q3x - q1x)\n .attr(\"display\", this.showLabels() ? null : \"none\")\n .attr(\"fill\", this.textColor())\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"transform\", `translate(${q1x}, ${dataTop - padding})rotate(${upperTextRotation})scale(${textScale})`)\n .attr(\"font-size\", labelFontSize)\n .attr(\"text-anchor\", labelAnchor)\n .attr(\"alignment-baseline\", \"middle\")\n .text(this.columns()[1])\n ;\n this._q2text\n .attr(\"height\", candleWidth)\n .attr(\"width\", q3x - q1x)\n .attr(\"display\", this.showLabels() ? null : \"none\")\n .attr(\"fill\", this.textColor())\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"transform\", `translate(${q2x}, ${dataTop - padding})rotate(${upperTextRotation})scale(${textScale})`)\n .attr(\"font-size\", labelFontSize)\n .attr(\"text-anchor\", labelAnchor)\n .attr(\"alignment-baseline\", \"middle\")\n .text(this.columns()[2])\n ;\n this._q3text\n .attr(\"height\", candleWidth)\n .attr(\"width\", q3x - q1x)\n .attr(\"display\", this.showLabels() ? null : \"none\")\n .attr(\"fill\", this.textColor())\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"transform\", `translate(${q3x}, ${dataTop - padding})rotate(${upperTextRotation})scale(${textScale})`)\n .attr(\"font-size\", labelFontSize)\n .attr(\"text-anchor\", labelAnchor)\n .attr(\"alignment-baseline\", \"middle\")\n .text(this.columns()[3])\n ;\n this._q4text\n .attr(\"height\", candleWidth)\n .attr(\"width\", q3x - q1x)\n .attr(\"display\", this.showLabels() ? null : \"none\")\n .attr(\"fill\", this.textColor())\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"transform\", `translate(${q4x + lineWidth}, ${dataTop - padding})rotate(${upperTextRotation})scale(${textScale})`)\n .attr(\"font-size\", labelFontSize)\n .attr(\"text-anchor\", labelAnchor)\n .attr(\"alignment-baseline\", \"baseline\")\n .text(this.columns()[4])\n ;\n this._q0val\n .attr(\"height\", candleWidth)\n .attr(\"width\", q3x - q1x)\n .attr(\"display\", this.showValues() ? null : \"none\")\n .attr(\"fill\", this.textColor())\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"transform\", `translate(${q0x}, ${dataBottom + padding})rotate(${lowerTextRotation})scale(${textScale})`)\n .attr(\"font-size\", valueFontSize)\n .attr(\"text-anchor\", valueAnchor)\n .attr(\"alignment-baseline\", \"hanging\")\n .text(this.data()[0])\n ;\n this._q1val\n .attr(\"height\", candleWidth)\n .attr(\"width\", q3x - q1x)\n .attr(\"display\", this.showValues() ? null : \"none\")\n .attr(\"fill\", this.textColor())\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"transform\", `translate(${q1x}, ${dataBottom + padding})rotate(${lowerTextRotation})scale(${textScale})`)\n .attr(\"font-size\", valueFontSize)\n .attr(\"text-anchor\", valueAnchor)\n .attr(\"alignment-baseline\", \"middle\")\n .text(this.data()[1])\n ;\n this._q2val\n .attr(\"height\", candleWidth)\n .attr(\"width\", q3x - q1x)\n .attr(\"display\", this.showValues() ? null : \"none\")\n .attr(\"fill\", this.textColor())\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"transform\", `translate(${q2x}, ${dataBottom + padding})rotate(${lowerTextRotation})scale(${textScale})`)\n .attr(\"font-size\", valueFontSize)\n .attr(\"text-anchor\", valueAnchor)\n .attr(\"alignment-baseline\", \"middle\")\n .text(this.data()[2])\n ;\n this._q3val\n .attr(\"height\", candleWidth)\n .attr(\"width\", q3x - q1x)\n .attr(\"display\", this.showValues() ? null : \"none\")\n .attr(\"fill\", this.textColor())\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"transform\", `translate(${q3x}, ${dataBottom + padding})rotate(${lowerTextRotation})scale(${textScale})`)\n .attr(\"font-size\", valueFontSize)\n .attr(\"text-anchor\", valueAnchor)\n .attr(\"alignment-baseline\", \"middle\")\n .text(this.data()[3])\n ;\n this._q4val\n .attr(\"height\", candleWidth)\n .attr(\"width\", q3x - q1x)\n .attr(\"display\", this.showValues() ? null : \"none\")\n .attr(\"fill\", this.textColor())\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"transform\", `translate(${q4x + lineWidth}, ${dataBottom + padding})rotate(${lowerTextRotation})scale(${textScale})`)\n .attr(\"font-size\", valueFontSize)\n .attr(\"text-anchor\", valueAnchor)\n .attr(\"alignment-baseline\", \"baseline\")\n .text(this.data()[4])\n ;\n }\n}\nQuartileCandlestick.prototype._class += \" chart_QuartileCandlestick\";\n\nexport interface QuartileCandlestick {\n orientation(): \"horizontal\" | \"vertical\";\n orientation(_: \"horizontal\" | \"vertical\"): this;\n textPadding(): number;\n textPadding(_: number): this;\n edgePadding(): number;\n edgePadding(_: number): this;\n candleWidth(): number;\n candleWidth(_: number): this;\n candleWidth_exists(): boolean;\n lineWidth(): number;\n lineWidth(_: number): this;\n lineColor(): string;\n lineColor(_: string): this;\n innerRectColor(): string;\n innerRectColor(_: string): this;\n lowerTextRotation(): number;\n lowerTextRotation(_: number): this;\n upperTextRotation(): number;\n upperTextRotation(_: number): this;\n roundedCorners(): number;\n roundedCorners(_: number): this;\n labelFontSize(): number;\n labelFontSize(_: number): this;\n valueFontSize(): number;\n valueFontSize(_: number): this;\n textColor(): string;\n textColor(_: string): this;\n showLabels(): boolean;\n showLabels(_: boolean): this;\n showValues(): boolean;\n showValues(_: boolean): this;\n}\nQuartileCandlestick.prototype.publish(\"textColor\", \"black\", \"html-color\", \"Color of label and value text\");\nQuartileCandlestick.prototype.publish(\"showLabels\", true, \"boolean\", \"If true, labels will be shown\");\nQuartileCandlestick.prototype.publish(\"showValues\", true, \"boolean\", \"If true, values will be shown\");\nQuartileCandlestick.prototype.publish(\"orientation\", \"horizontal\", \"set\", \"Determines layout\", [\"horizontal\", \"vertical\"]);\nQuartileCandlestick.prototype.publish(\"valueFontSize\", 12, \"number\", \"Font size of value text (pixels)\");\nQuartileCandlestick.prototype.publish(\"labelFontSize\", 12, \"number\", \"Font size of label text (pixels)\");\nQuartileCandlestick.prototype.publish(\"roundedCorners\", 8, \"number\", \"Radius of rounded rect corners (pixels)\");\nQuartileCandlestick.prototype.publish(\"lineWidth\", 4, \"number\", \"Width of lines (pixels)\");\nQuartileCandlestick.prototype.publish(\"candleWidth\", null, \"number\", \"Height of outer rect (pixels)\", null, {optional: true});\nQuartileCandlestick.prototype.publish(\"textPadding\", 8, \"number\", \"Padding between outer rect and text (pixels)\");\nQuartileCandlestick.prototype.publish(\"edgePadding\", 30, \"number\", \"Padding between outer rect and left/right sides (pixels)\");\nQuartileCandlestick.prototype.publish(\"lineColor\", \"#333\", \"html-color\", \"Color of outer rect and lines\");\nQuartileCandlestick.prototype.publish(\"innerRectColor\", \"white\", \"html-color\", \"Color of the inner rects\");\nQuartileCandlestick.prototype.publish(\"upperTextRotation\", -60, \"number\", \"Rotation of label text (degrees)\");\nQuartileCandlestick.prototype.publish(\"lowerTextRotation\", -60, \"number\", \"Rotation of value text (degrees)\");\n","import { INDChart, ITooltip } from \"@hpcc-js/api\";\nimport { SVGWidget, Utility } from \"@hpcc-js/common\";\nimport { select as d3Select } from \"d3-selection\";\n\nimport \"../src/Radar.css\";\nexport class Radar extends SVGWidget {\n\n constructor() {\n super();\n INDChart.call(this);\n ITooltip.call(this);\n Utility.SimpleSelectionMixin.call(this);\n }\n\n mapShape(shape) {\n switch (shape) {\n case \"rectangle\":\n return \"rect\";\n case \"circle\":\n return \"circle\";\n case \"cross\":\n return \"path\";\n default:\n }\n }\n setPointAttributes(element, x, y) {\n const shape = this.mapShape(this.pointShape());\n const context = this;\n switch (shape) {\n case \"rect\":\n element\n .attr(\"width\", context.pointSize())\n .attr(\"height\", context.pointSize())\n .style(\"fill\", d => this.strokeColor(d.data, d.column, d.value))\n ;\n break;\n case \"circle\":\n element\n .attr(\"r\", context.pointSize() / 2)\n .attr(\"cx\", x)\n .attr(\"cy\", y)\n .style(\"fill\", d => this.strokeColor(d.data, d.column, d.value))\n ;\n break;\n case \"path\":\n const half_size = context.pointSize() / 2;\n element\n .attr(\"d\", function (d: any) {\n return \"M\" + (x - half_size) + \" \" + (y - half_size) + \" \" +\n \"L\" + (x + half_size) + \" \" + (y + half_size) + \" \" +\n \"M\" + (x - half_size) + \" \" + (y + half_size) + \" \" +\n \"L\" + (x + half_size) + \" \" + (y - half_size);\n })\n .style(\"stroke\", d => this.strokeColor(d.data, d.column, d.value))\n ;\n break;\n default:\n }\n }\n enter(domNode, element) {\n super.enter(domNode, element);\n this._selection.widgetElement(element);\n\n this\n .tooltipHTML(d => {\n return this.tooltipFormat({ label: d.label, series: d.column, value: d.value });\n })\n ;\n }\n update(domNode, element) {\n super.update(domNode, element);\n this._palette = this._palette.switch(this.paletteID());\n const context = this;\n const h = this.height();\n const w = this.width();\n const half_h = (h / 2);\n const half_w = (w / 2);\n\n const columns = this.columns();\n const data = this.data();\n const flatData = this.flattenData(columns, data).map((d: any, idx: number) => {\n d.shape = this.mapShape(this.pointShape());\n d.column = columns[d.colIdx];\n d.row = data[idx];\n return d;\n });\n const domain_points = [];\n const arc = this.degrees2radians(360 / this.data().length);\n const max_label_h = this.fontSize();\n let max_label_w = 0;\n flatData.filter(n => n.colIdx === 1).forEach(n => {\n const isize = super.textSize(n.label, `${this.fontFamily()}`, this.fontSize());\n if (max_label_w < isize.width) max_label_w = isize.width;\n });\n const radius = Math.min(half_h - max_label_h, half_w - max_label_w);\n const labels = element\n .selectAll(\".label\")\n .data(flatData.filter(n => n.colIdx === 1))\n ;\n const max_val = Math.max.apply(context, flatData.map(n => n.value));\n labels.enter()\n .append(\"text\")\n .attr(\"class\", \"label\")\n .attr(\"text-anchor\", \"middle\")\n .merge(labels)\n .attr(\"font-size\", this.fontSize())\n .attr(\"font-family\", this.fontFamily())\n .each(function (this: SVGElement, n, i) {\n const xy = context.polar2cartesian(radius, (i * arc) - (Math.PI / 2));\n domain_points.push(xy.map(n => n * context.labelPaddingRatio()));\n let text_anchor = \"middle\";\n const _x = Math.round(xy[0]);\n text_anchor = _x > 0 ? \"start\" : text_anchor;\n text_anchor = _x < 0 ? \"end\" : text_anchor;\n d3Select(this)\n .attr(\"text-anchor\", text_anchor)\n .attr(\"x\", xy[0])\n .attr(\"y\", xy[1])\n ;\n })\n .text(n => n.label)\n ;\n labels.exit().remove();\n const domains = element\n .selectAll(\".domain\")\n .data(flatData.filter(n => n.colIdx === 1));\n domains.enter()\n .append(\"line\")\n .classed(\"domain\", true)\n .style(\"stroke\", \"#000\")\n .style(\"stroke-opacity\", \"0.75\")\n .style(\"stroke-width\", \"1px\")\n .merge(domains)\n .attr(\"x1\", 0)\n .attr(\"y1\", 0)\n .attr(\"x2\", (n, i) => domain_points[i][0])\n .attr(\"y2\", (n, i) => domain_points[i][1]);\n domains.exit().remove();\n const value_guides = element\n .selectAll(\".value_guide\")\n .data(this.valueGuideRatios())\n ;\n value_guides.enter()\n .append(\"polygon\")\n .classed(\"value_guide\", true)\n .style(\"stroke\", \"grey\")\n .style(\"stroke-opacity\", \"0.75\")\n .style(\"stroke-width\", \"0.3px\")\n .merge(value_guides)\n .each(function (mult, i) {\n const poly_points = [];\n domain_points.forEach((domain_point, row_idx) => {\n poly_points.push([\n domain_point[0] * mult,\n domain_point[1] * mult\n ]);\n });\n d3Select(this)\n .attr(\"points\", poly_points.join(\" \"))\n .attr(\"stroke\", \"rgb(0, 0, 0)\")\n .attr(\"stroke-opacity\", 0.75)\n .attr(\"stroke-width\", 0.3)\n .attr(\"fill-opacity\", 0)\n ;\n })\n ;\n value_guides.exit().remove();\n\n const value_guide_text = element\n .selectAll(\".value_guide_text\")\n .data(this.valueGuideRatios())\n ;\n value_guide_text.enter()\n .append(\"text\")\n .attr(\"class\", \"value_guide_text\")\n .attr(\"text-anchor\", \"start\")\n .attr(\"font-size\", this.fontSize())\n .attr(\"font-family\", this.fontFamily())\n .merge(value_guide_text)\n .attr(\"x\", 2)\n .attr(\"y\", mult => domain_points[0][1] * mult)\n .text((mult, i) => Math.round(mult * max_val))\n ;\n value_guides.exit().remove();\n\n // Polygon shapes ---\n const series_polygons = element\n .selectAll(\".area\")\n .data(columns.filter((n, i) => i > 0));\n series_polygons.enter()\n .append(\"polygon\")\n .attr(\"class\", \"area\")\n .style(\"stroke-opacity\", \"0.75\")\n .style(\"stroke-width\", \"0.3px\")\n .merge(series_polygons)\n .style(\"stroke\", d => this.strokeColor([], d, 0))\n .style(\"fill\", d => this.fillColor([], d, 0))\n .style(\"fill-opacity\", this.fillOpacity())\n .attr(\"points\", (d, col_idx) => {\n return domain_points.map((domain_point, row_idx) => {\n const val = data[row_idx][col_idx + 1];\n const val_mult = val === 0 ? 0 : val / max_val;\n return domain_point[0] * val_mult + \",\" + domain_point[1] * val_mult;\n }).join(\" \");\n });\n series_polygons.exit().remove();\n\n // Points ---\n const point_elm = element\n .selectAll(\".point\")\n .data(flatData);\n point_elm.enter()\n .append(\"g\")\n .attr(\"class\", \"point\")\n .on(\"mouseout.tooltip\", context.tooltip.hide)\n .on(\"mousemove.tooltip\", context.tooltip.show)\n .on(\"click\", function (d: any, _idx) {\n const data_row = context.data()[d.rowIdx];\n const row_obj = context.rowToObj(data_row);\n const selected = context._selection.selected(this);\n context.click(row_obj, context.columns()[d.colIdx], selected);\n })\n .on(\"dblclick\", function (d: any, _idx) {\n context.dblclick(context.rowToObj(context.data()[d.rowIdx]), d.column, context._selection.selected(this));\n })\n .each(function (d) {\n const element = d3Select(this);\n element.append(\"circle\")\n .attr(\"class\", \"pointSelection\")\n .attr(\"r\", context.pointSize())\n .call(context._selection.enter.bind(context._selection))\n ;\n element.append(context.mapShape(context.pointShape()))\n .attr(\"class\", \"pointShape\")\n ;\n })\n .merge(point_elm)\n .each(function (d) {\n const element = d3Select(this);\n const val_mult = d.value === 0 ? 0 : d.value / max_val;\n const x = domain_points[d.rowIdx][0] * val_mult;\n const y = domain_points[d.rowIdx][1] * val_mult;\n element.select(\".pointSelection\")\n .attr(\"cx\", x)\n .attr(\"cy\", y)\n ;\n\n const pointElement = element.select(\".pointShape\")\n .style(\"stroke\", context.strokeColor(d.row, d.column, d.value))\n .style(\"fill\", context.fillColor(d.row, d.column, d.value))\n ;\n context.setPointAttributes(pointElement, x, y);\n })\n ;\n point_elm.exit().remove();\n }\n\n polar2cartesian(r, theta) {\n return [r * Math.cos(theta), r * Math.sin(theta)];\n }\n cartesian2polar(x, y) {\n return [Math.atan2(y, x), Math.sqrt(x * x + y * y)];\n }\n degrees2radians(d) {\n return d / 57.295779513;\n }\n radians2degrees(r) {\n return r * 57.295779513;\n }\n point_in_polygon(point, vs) {\n const x = point[0];\n const y = point[1];\n let inside = false;\n for (let i = 0, j = vs.length - 1; i < vs.length; j = i++) {\n const xi = vs[i][0];\n const yi = vs[i][1];\n const xj = vs[j][0];\n const yj = vs[j][1];\n const intersect = ((yi > y) !== (yj > y))\n && (x < (xj - xi) * (y - yi) / (yj - yi) + xi);\n if (intersect) inside = !inside;\n }\n return inside;\n }\n}\nRadar.prototype._class += \" chart_Radar\";\nRadar.prototype.implements(INDChart.prototype);\nRadar.prototype.implements(ITooltip.prototype);\nRadar.prototype.mixin(Utility.SimpleSelectionMixin);\n\nexport interface Radar {\n labelPaddingRatio(): number;\n labelPaddingRatio(_: number): this;\n fillOpacity(): number;\n fillOpacity(_: number): this;\n fontFamily(): string;\n fontFamily(_: string): this;\n fontSize(): number;\n fontSize(_: number): this;\n valueGuideRatios(): any;\n valueGuideRatios(_: any): this;\n valueGuideFontSize(): number;\n valueGuideFontSize(_: number): this;\n valueGuideFontFamily(): string;\n valueGuideFontFamily(_: string): this;\n paletteID(): string;\n paletteID(_: string): this;\n pointShape(): string;\n pointShape(_: string): this;\n pointSize(): number;\n pointSize(_: number): this;\n\n // INDChart\n _palette;\n fillColor(row, column, value): string;\n strokeColor(row, column, value): string;\n textColor(row, column, value): string;\n click(row, column, selected): void;\n dblclick(row, column, selected): void;\n\n // ITooltip\n tooltip;\n tooltipHTML(_): string;\n tooltipFormat(_): string;\n\n _selection;\n}\n\nRadar.prototype.publish(\"paletteID\", \"default\", \"set\", \"Color palette for this widget\", Radar.prototype._palette.switch());\nRadar.prototype.publish(\"pointShape\", \"cross\", \"set\", \"pointShape\", [\"circle\", \"rectangle\", \"cross\"]);\nRadar.prototype.publish(\"pointSize\", 6, \"number\", \"Point Size\", null, { range: { min: 1, step: 1, max: 200 } });\nRadar.prototype.publish(\"valueGuideRatios\", [0.2, 0.4, 0.6, 0.8, 1], \"array\", \"Array of values between 0 and 1 that are multiplied by the widget radius to produce guide lines\");\nRadar.prototype.publish(\"fillOpacity\", 0.66, \"number\", \"Opacity of the data polygon(s)\");\nRadar.prototype.publish(\"fontFamily\", \"\", \"string\", \"fontFamily\");\nRadar.prototype.publish(\"fontSize\", 16, \"number\", \"fontSize\");\nRadar.prototype.publish(\"labelPaddingRatio\", 0.9, \"number\", \"labelPaddingRatio\");\n","import { INDChart, ITooltip } from \"@hpcc-js/api\";\nimport { InputField, SVGWidget, Utility } from \"@hpcc-js/common\";\nimport { interpolate as d3Interpolate } from \"d3-interpolate\";\nimport { scaleBand as d3ScaleBand, scaleLinear as d3ScaleLinear } from \"d3-scale\";\nimport { arc as d3Arc } from \"d3-shape\";\n\nimport \"../src/RadialBar.css\";\n\nexport class RadialBar extends SVGWidget {\n static __inputs: InputField[] = [{\n id: \"label\",\n type: \"any\"\n }, {\n id: \"values\",\n type: \"number\"\n }];\n\n private _domainScale = d3ScaleBand();\n private _valueScale = d3ScaleLinear();\n private _d3Arc = d3Arc<[string, number]>()\n .startAngle(0)\n .endAngle((d) => this._valueScale(d[1]))\n ;\n\n protected _arcs;\n protected _axialAxis;\n protected _radialAxis;\n\n constructor() {\n super();\n INDChart.call(this);\n ITooltip.call(this);\n Utility.SimpleSelectionMixin.call(this);\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this._selection.widgetElement(element);\n this.tooltipHTML(d => {\n return this.tooltipFormat({ label: d[0], value: d[1] });\n });\n\n this._radialAxis = element.append(\"g\")\n .attr(\"class\", \"r axis\")\n ;\n this._axialAxis = element.append(\"g\")\n .attr(\"class\", \"a axis\")\n ;\n this._arcs = element.append(\"g\")\n .attr(\"class\", \"data\")\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n const context = this;\n const maxValue = Math.max(this.valueDomainHigh_exists() ? this.valueDomainHigh() : 0, ...this.data().map(d => d[1]));\n\n this._valueScale\n .domain([0, maxValue])\n .range([0, this.radians(this.valueMaxAngle())])\n ;\n\n const ticks = this._valueScale.ticks(this.tickCount());\n\n const maxTextWidth = this.textSize(ticks.map(d => \"\" + d), \"Verdana\", 12).width;\n const chartRadius = (Math.min(this.width() - (10 + maxTextWidth) * 2, this.height() - (10 + 12) * 2) / 2);\n\n // Domain Axis (x-axis) ---\n const domainData = this.data().map(d => d[0]);\n\n this._domainScale\n .domain(domainData)\n .range([0, chartRadius])\n .padding(this.domainPadding())\n ;\n const domainPadding = this._domainScale.step() * this._domainScale.padding();\n\n const domainCircles = this._radialAxis.selectAll(\"circle\").data(domainData);\n domainCircles.enter().append(\"circle\")\n .attr(\"fill\", \"transparent\")\n .merge(domainCircles)\n .attr(\"r\", d => this._domainScale(d) + this._domainScale.step() - domainPadding / 2)\n ;\n domainCircles.exit().remove();\n\n const domainText = this._radialAxis.selectAll(\".arc-text\").data(domainData);\n domainText.enter().append(\"text\")\n .attr(\"class\", \"arc-text\")\n .attr(\"x\", -4)\n .attr(\"alignment-baseline\", \"middle\")\n .attr(\"text-anchor\", \"end\")\n .merge(domainText)\n .attr(\"y\", d => -this._domainScale(d) - this._domainScale.bandwidth() / 2)\n .text(d => d);\n domainText.exit().remove();\n\n // Value Axis (y-axis) ---\n const valueLines = this._axialAxis.selectAll(\"line\").data(ticks);\n valueLines.enter().append(\"line\")\n .merge(valueLines)\n .attr(\"x2\", d => chartRadius * Math.cos(this._valueScale(d) - this.radians(90)))\n .attr(\"y2\", d => chartRadius * Math.sin(this._valueScale(d) - this.radians(90)))\n ;\n valueLines.exit().remove();\n\n const valueText = this._axialAxis.selectAll(\"text\").data(ticks);\n valueText.enter().append(\"text\")\n .style(\"dominant-baseline\", \"central\")\n .merge(valueText)\n .attr(\"x\", d => (chartRadius + 10) * Math.cos(this._valueScale(d) - this.radians(90)))\n .attr(\"y\", d => (chartRadius + 10) * Math.sin(this._valueScale(d) - this.radians(90)))\n .style(\"text-anchor\", d => {\n const middleZone = 20;\n const angle = this.degrees(this._valueScale(d));\n if (angle >= 0 && angle <= middleZone ||\n angle >= 180 - middleZone && angle <= 180 + middleZone ||\n angle >= 360 - middleZone && angle <= 360\n ) {\n return \"middle\";\n } else if (angle >= 180 && angle <= 360) {\n return \"end\";\n } else {\n return null;\n }\n })\n .text(d => d)\n ;\n valueText.exit().remove();\n\n const valueColumn = this.columns().length > 1 ? this.columns()[1] : \"\";\n // Data (arcs) ---\n this._d3Arc\n .innerRadius(d => this._domainScale(d[0]))\n .outerRadius(d => this._domainScale(d[0]) + this._domainScale.bandwidth())\n ;\n const arcs = this._arcs.selectAll(\"path\").data(this.data(), d => d[0]);\n arcs.enter().append(\"path\")\n .attr(\"class\", \"arc\")\n .call(this._selection.enter.bind(this._selection))\n .on(\"mouseout.tooltip\", this.tooltip.hide)\n .on(\"mousemove.tooltip\", this.tooltip.show)\n .on(\"click\", function (d: any, _idx) {\n context.click(context.rowToObj(d), valueColumn, context._selection.selected(this));\n })\n .on(\"dblclick\", function (d: any, _idx) {\n context.dblclick(context.rowToObj(d), valueColumn, context._selection.selected(this));\n })\n .merge(arcs)\n .style(\"fill\", (d, i) => this.fillColor(d, d[0], d[1]))\n .transition()\n .delay((d, i) => i * this.transitionDelay())\n .duration(this.transitionDuration())\n .attrTween(\"d\", (d, indx) => {\n const interpolate = d3Interpolate(d._current || 0, d[1]);\n d._current = d[1];\n return t => this._d3Arc([d[0], interpolate(t)], indx);\n })\n ;\n arcs.exit().remove();\n }\n\n degrees(radians) {\n return radians * 180 / Math.PI;\n }\n\n radians(degrees) {\n return degrees * Math.PI / 180;\n }\n\n}\nRadialBar.prototype._class += \" chart_RadialBar\";\nRadialBar.prototype.implements(INDChart.prototype);\nRadialBar.prototype.implements(ITooltip.prototype);\nRadialBar.prototype.mixin(Utility.SimpleSelectionMixin);\n\nexport interface RadialBar {\n paletteID(): string;\n paletteID(_: string): this;\n tickCount(): number;\n tickCount(_: number): this;\n domainPadding(): number;\n domainPadding(_: number): this;\n valueMaxAngle(): number;\n valueMaxAngle(_: number): this;\n valueDomainHigh(): number;\n valueDomainHigh(_: number): this;\n valueDomainHigh_exists(): boolean;\n transitionDelay(): number;\n transitionDelay(_: number): this;\n transitionDuration(): number;\n transitionDuration(_: number): this;\n\n // INDChart\n _palette;\n fillColor(row, column, value): string;\n strokeColor(row, column, value): string;\n textColor(row, column, value): string;\n click(row, column, selected): void;\n dblclick(row, column, selected): void;\n\n // ITooltip\n tooltip;\n tooltipHTML(_): string;\n tooltipFormat(_): string;\n\n // SimpleSelectionMixin\n _selection;\n}\n\nRadialBar.prototype.publish(\"paletteID\", \"default\", \"set\", \"Color palette for this widget\", RadialBar.prototype._palette.switch());\nRadialBar.prototype.publish(\"tickCount\", 10, \"number\", \"Number of ticks to display\");\nRadialBar.prototype.publish(\"domainPadding\", 0.25, \"number\", \"Padding between chart edge and container edge (0..1)\");\nRadialBar.prototype.publish(\"valueMaxAngle\", 270, \"number\", \"Maximum angular length of a bar (degrees)\");\nRadialBar.prototype.publish(\"valueDomainHigh\", null, \"number\", \"Value domain high\", undefined, { optional: true });\nRadialBar.prototype.publish(\"transitionDelay\", 100, \"number\", \"Delay between the start of each row animation (ms)\");\nRadialBar.prototype.publish(\"transitionDuration\", 750, \"number\", \"Duration of a row's animation (ms)\");\n","import { format as d3Format, HTMLWidget, Palette } from \"@hpcc-js/common\";\nimport { QuartileCandlestick } from \"./QuartileCandlestick.ts\";\nimport { Scatter } from \"./Scatter.ts\";\n\nconst rainbow = Palette.rainbow(\"Blues\");\nconst palette = Palette.ordinal(\"Quartile\", [rainbow(100, 0, 100), rainbow(50, 0, 100), rainbow(50, 0, 100), rainbow(75, 0, 100)]);\npalette(\"Std. Dev.\");\npalette(\"MinMax\");\npalette(\"25%\");\npalette(\"50%\");\n\ntype View = \"min_max\" | \"25_75\" | \"normal\";\ntype Tick = { label: string, value: number };\ntype Ticks = Tick[];\ntype AxisTick = { label: string, value: string };\ntype AxisTicks = AxisTick[];\n\nfunction myFormatter(format: string): (num: number) => string {\n const formatter = d3Format(format);\n return function (num: number) {\n const strVal = (Math.round(num * 100) / 100).toString();\n if (strVal.length <= 4) return strVal;\n return formatter(num);\n };\n}\n\nexport type StatChartView = \"min_max\" | \"25_75\" | \"normal\";\nexport type Quartiles = [number, number, number, number, number];\nexport type Data = [[number, number, number, number, number, number, number]];\n\nexport class StatChart extends HTMLWidget {\n\n protected _selectElement: any;\n protected _tickFormatter: (_: number) => string;\n\n protected _bellCurve: Scatter = new Scatter()\n .columns([\"\", \"Std. Dev.\"])\n .paletteID(\"Quartile\")\n .interpolate_default(\"basis\")\n .pointSize(0)\n .xAxisType(\"linear\")\n .xAxisOverlapMode(\"none\")\n .xAxisTickFormat(\",\")\n .yAxisHidden(true)\n .yAxisDomainLow(0)\n .yAxisDomainHigh(110)\n .yAxisGuideLines(false) as Scatter\n ;\n\n protected _candle = new QuartileCandlestick()\n .columns([\"Min\", \"25%\", \"50%\", \"75%\", \"Max\"])\n .edgePadding(0)\n .roundedCorners(1)\n .lineWidth(1)\n .upperTextRotation(-90)\n .lowerTextRotation(-90)\n .labelFontSize(0)\n .valueFontSize(0)\n .lineColor(rainbow(90, 0, 100))\n .innerRectColor(rainbow(10, 0, 100))\n ;\n\n constructor() {\n super();\n this\n .columns([\"Min\", \"25%\", \"50%\", \"75%\", \"Max\", \"Mean\", \"Std. Dev.\"])\n ;\n }\n\n protected stdDev(degrees: number): number {\n return this.mean() + degrees * this.standardDeviation();\n }\n\n protected formatStdDev(degrees: number): string {\n return this._tickFormatter(this.stdDev(degrees));\n }\n\n protected quartile(q: 0 | 1 | 2 | 3 | 4): number {\n return this.quartiles()[q];\n }\n\n protected formatQ(q: 0 | 1 | 2 | 3 | 4): string {\n return this._tickFormatter(this.quartile(q));\n }\n\n protected domain(mode: View): [number, number] {\n switch (mode) {\n case \"25_75\":\n return [this.quartile(1), this.quartile(3)];\n case \"normal\":\n return [this.stdDev(-4), this.stdDev(4)];\n case \"min_max\":\n default:\n return [this.quartile(0), this.quartile(4)];\n }\n }\n\n protected min(): number {\n return this.quartile(0);\n }\n\n protected max(): number {\n return this.quartile(4);\n }\n\n data(): Data;\n data(_: Data): this;\n data(_?: Data): Data | this {\n if (!arguments.length) return [[...this.quartiles(), this.mean(), this.standardDeviation()]];\n const row = _[0];\n this.quartiles([row[0], row[1], row[2], row[3], row[4]]);\n this.mean(row[5]);\n this.standardDeviation(row[6]);\n return this;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n\n this._bellCurve.target(element.append(\"div\").node());\n\n this._candle.target(element.append(\"div\").node());\n\n this._selectElement = element.append(\"div\")\n .style(\"position\", \"absolute\")\n .style(\"top\", \"0px\")\n .style(\"right\", \"0px\").append(\"select\")\n .on(\"change\", () => {\n this.view(this._selectElement.node().value);\n this.lazyRender();\n })\n ;\n this._selectElement.append(\"option\").attr(\"value\", \"min_max\").text(\"Min / Max\");\n this._selectElement.append(\"option\").attr(\"value\", \"25_75\").text(\"25% / 75%\");\n this._selectElement.append(\"option\").attr(\"value\", \"normal\").text(\"Normal\");\n }\n\n protected bellTicks(mode: View): AxisTicks {\n let ticks: Ticks;\n switch (mode) {\n case \"25_75\":\n ticks = [\n { label: this.formatQ(1), value: this.quartile(1) },\n { label: this.formatQ(2), value: this.quartile(2) },\n { label: this.formatQ(3), value: this.quartile(3) }\n ];\n break;\n case \"normal\":\n ticks = [\n { label: this.formatStdDev(-4), value: this.stdDev(-4) },\n { label: \"-3σ\", value: this.stdDev(-3) },\n { label: \"-2σ\", value: this.stdDev(-2) },\n { label: \"-1σ\", value: this.stdDev(-1) },\n { label: this.formatStdDev(0), value: this.stdDev(0) },\n { label: \"+1σ\", value: this.stdDev(1) },\n { label: \"+2σ\", value: this.stdDev(2) },\n { label: \"+3σ\", value: this.stdDev(3) },\n { label: this.formatStdDev(4), value: this.stdDev(4) }\n ];\n break;\n case \"min_max\":\n default:\n ticks = [\n { label: this.formatQ(0), value: this.quartile(0) },\n { label: this.formatQ(1), value: this.quartile(1) },\n { label: this.formatQ(2), value: this.quartile(2) },\n { label: this.formatQ(3), value: this.quartile(3) },\n { label: this.formatQ(4), value: this.quartile(4) }\n ];\n }\n\n const [domainLow, domainHigh] = this.domain(this._selectElement.node().value);\n return ticks\n .filter(sd => sd.value >= domainLow && sd.value <= domainHigh)\n .map(sd => ({ label: sd.label, value: sd.value.toString() }))\n ;\n }\n\n updateScatter() {\n const mode = this._selectElement.node().value;\n const [domainLow, domainHigh] = this.domain(mode);\n const padding = (domainHigh - domainLow) * (this.domainPadding() / 100);\n\n this._bellCurve\n .xAxisDomainLow(domainLow - padding)\n .xAxisDomainHigh(domainHigh + padding)\n .xAxisTicks(this.bellTicks(mode))\n .data([\n [this.stdDev(-4), 0],\n [this.stdDev(-3), 0.3],\n [this.stdDev(-2), 5],\n [this.stdDev(-1), 68],\n [this.stdDev(0), 100],\n [this.stdDev(1), 68],\n [this.stdDev(2), 5],\n [this.stdDev(3), 0.3],\n [this.stdDev(4), 0]\n ])\n .resize({ width: this.width(), height: this.height() - this.candleHeight() })\n .render()\n ;\n }\n\n updateCandle() {\n const candleX = this._bellCurve.dataPos(this.quartile(0));\n const candleW = this._bellCurve.dataPos(this.quartile(4)) - candleX;\n this._candle\n .resize({ width: this.width(), height: this.candleHeight() })\n .pos({ x: (candleX + candleW / 2) + 2, y: this.candleHeight() / 2 })\n .width(candleW)\n .candleWidth(this.candleHeight())\n .data(this.quartiles())\n .render()\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n this._tickFormatter = myFormatter(this.tickFormat());\n this._selectElement.node().value = this.view();\n this.updateScatter();\n this.updateCandle();\n }\n\n exit(domNode, element) {\n this._bellCurve.target(null);\n this._candle.target(null);\n this._selectElement.remove();\n\n super.exit(domNode, element);\n }\n}\nStatChart.prototype._class += \" chart_StatChart\";\n\nexport interface StatChart {\n view(): StatChartView;\n view(_: StatChartView): this;\n\n tickFormat(): string;\n tickFormat(_: string): this;\n candleHeight(): number;\n candleHeight(_: number): this;\n domainPadding(): number;\n domainPadding(_: number): this;\n\n mean(): number;\n mean(_: number): this;\n standardDeviation(): number;\n standardDeviation(_: number): this;\n quartiles(): Quartiles;\n quartiles(_: Quartiles): this;\n}\nStatChart.prototype.publish(\"view\", \"min_max\", \"set\", \"View\", [\"min_max\", \"25_75\", \"normal\"]);\n\nStatChart.prototype.publish(\"tickFormat\", \".2e\", \"string\", \"X-Axis Tick Format\");\nStatChart.prototype.publish(\"candleHeight\", 20, \"number\", \"Height of candle widget (pixels)\");\nStatChart.prototype.publish(\"domainPadding\", 10, \"number\", \"Domain value padding\");\n\nStatChart.prototype.publish(\"mean\", .5, \"number\", \"Mean\");\nStatChart.prototype.publish(\"standardDeviation\", .125, \"number\", \"Standard Deviation (σ)\");\nStatChart.prototype.publish(\"quartiles\", [0, .25, .5, .75, 1], \"object\", \"Quartiles (Min, 25%, 50%, 75%, Max)\");\n","import { Scatter } from \"./Scatter.ts\";\n\nexport class Step extends Scatter {\n constructor() {\n super();\n\n this\n .interpolate_default(\"step\")\n ;\n }\n}\nStep.prototype._class += \" chart_Step\";\n","import { I2DChart } from \"@hpcc-js/api\";\nimport { HTMLWidget } from \"@hpcc-js/common\";\nimport { rgb as d3Rgb } from \"d3-color\";\nimport { select as d3Select } from \"d3-selection\";\n\nimport \"../src/Summary.css\";\n\nconst TEXT = \"text\";\nconst HTML = \"html\";\n\nexport class Summary extends HTMLWidget {\n protected _playIntervalIdx = 0;\n protected _mainDiv;\n protected _headerDiv;\n protected _textDiv;\n\n constructor() {\n super();\n this._tag = \"div\";\n\n this._drawStartPos = \"center\";\n this.playInterval(this.playInterval());\n }\n\n lookupFieldIdx(propID, defaultIdx?: number) {\n let retVal = defaultIdx;\n if (this[propID + \"_exists\"]()) {\n retVal = this.columns().indexOf(this[propID]());\n if (retVal < 0) {\n return undefined;\n }\n }\n return retVal;\n }\n\n lookupFieldText(propID, defaultIdx?: number) {\n if (this[propID + \"_exists\"]()) {\n return this[propID]();\n }\n if (defaultIdx !== undefined) {\n return this.columns()[defaultIdx] || \"\";\n }\n return \"\";\n }\n\n currentRow() {\n return this.data()[this._playIntervalIdx];\n }\n\n summaryData() {\n let labelFieldIdx; // undefined\n if (!this.hideLabel()) {\n labelFieldIdx = this.lookupFieldIdx(\"labelColumn\", 0);\n }\n const iconFieldIdx = this.lookupFieldIdx(\"iconColumn\");\n const valueFieldIdx = this.lookupFieldIdx(\"valueColumn\", 1);\n let moreIconIdx; // undefined\n let moreTextIdx; // undefined\n if (!this.hideMore()) {\n moreIconIdx = this.lookupFieldIdx(\"moreIconColumn\");\n moreTextIdx = this.lookupFieldIdx(\"moreTextColumn\");\n }\n const colorFillIdx = this.lookupFieldIdx(\"colorFillColumn\");\n const colorStrokeIdx = this.lookupFieldIdx(\"colorStrokeColumn\");\n return this.formattedData().map(function (row) {\n return {\n icon: iconFieldIdx === undefined ? this.icon() : row[iconFieldIdx],\n label: labelFieldIdx === undefined ? \"\" : row[labelFieldIdx],\n value: row[valueFieldIdx],\n moreIcon: moreIconIdx === undefined ? (this.hideMore() ? \"\" : this.moreIcon()) : row[moreIconIdx],\n moreText: moreTextIdx === undefined ? (this.hideMore() ? \"\" : this.moreText()) : row[moreTextIdx],\n fill: colorFillIdx === undefined ? this.colorFill() : row[colorFillIdx],\n stroke: colorStrokeIdx === undefined ? this.colorStroke() : row[colorStrokeIdx]\n };\n }, this);\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this._mainDiv = element.append(\"div\")\n ;\n const context = this;\n this._headerDiv = this._mainDiv.append(\"h2\")\n .on(\"click\", function () {\n context.click(context.rowToObj(context.currentRow()), context.lookupFieldText(\"valueColumn\", 1), true);\n })\n .on(\"dblclick\", function () {\n context.dblclick(context.rowToObj(context.currentRow()), context.lookupFieldText(\"valueColumn\", 1), true);\n })\n ;\n this._textDiv = this._mainDiv.append(\"div\")\n .attr(\"class\", \"text\")\n .on(\"click\", function () {\n context.click(context.rowToObj(context.currentRow()), context.lookupFieldText(\"labelColumn\", 0), true);\n })\n .on(\"dblclick\", function () {\n context.dblclick(context.rowToObj(context.currentRow()), context.lookupFieldText(\"labelColumn\", 0), true);\n })\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n if (this.data().length) {\n\n }\n const data = this.summaryData();\n if (this._playIntervalIdx >= data.length) {\n this._playIntervalIdx = 0;\n }\n const row: any = this._playIntervalIdx < data.length ? data[this._playIntervalIdx] : [\"\", \"\"];\n element\n .style(\"width\", this.fixedSize() ? this.minWidth_exists() ? this.minWidth() + \"px\" : null : \"100%\")\n .style(\"height\", this.fixedSize() ? this.minHeight_exists() ? this.minHeight() + \"px\" : null : \"100%\")\n ;\n this._mainDiv\n .attr(\"class\", \"content bgIcon \" + row.icon)\n .transition()\n .style(\"background-color\", row.fill)\n .style(\"color\", row.stroke)\n .style(\"min-width\", this.minWidth_exists() ? this.minWidth() + \"px\" : null)\n .style(\"min-height\", this.minHeight_exists() ? this.minHeight() + \"px\" : null)\n .style(\"font-size\", this.iconFontSize() + \"px\")\n ;\n this._headerDiv\n .transition()\n .style(\"color\", row.stroke)\n .style(\"font-size\", this.headerFontSize() + \"px\")\n [this.valueHTML() ? HTML : TEXT](row.value)\n ;\n this._textDiv\n .style(\"font-size\", this.textFontSize() + \"px\")\n [this.labelHTML() ? HTML : TEXT](row.label)\n ;\n const context = this;\n const moreDivs = this._mainDiv.selectAll(\".more\").data([row]);\n const moreDivsEnter = moreDivs.enter()\n .append(\"div\")\n .attr(\"class\", \"more\")\n .on(\"click\", function (d) {\n context.click(context.rowToObj(context.currentRow()), context.lookupFieldText(\"moreTextColumn\") || \"more\", true);\n })\n .each(function () {\n const element2 = d3Select(this);\n element2.append(\"i\");\n element2.append(\"span\");\n })\n ;\n const moreDivsUpdate = moreDivsEnter\n .merge(moreDivs)\n .style(\"display\", this.hideMoreWrapper() ? \"none\" : null)\n .style(\"font-size\", this.moreFontSize() + \"px\")\n .style(\"height\", this.moreWrapperHeight_exists() ? this.moreWrapperHeight() + \"px\" : null)\n .transition()\n .style(\"background-color\", d3Rgb(row.fill).darker(0.75).toString())\n ;\n moreDivsUpdate\n .select(\"i\")\n .attr(\"class\", function (d) {\n return \"fa \" + d.moreIcon;\n })\n ;\n if (this.moreTextHTML()) {\n moreDivsUpdate.select(\"span\")\n .each(function (d) {\n this.innerHTML = d.moreText;\n });\n } else {\n moreDivsUpdate.select(\"span\").text(d => d.moreText);\n }\n moreDivs.exit().remove();\n }\n\n exit(domNode, element) {\n super.exit(domNode, element);\n }\n}\nSummary.prototype._class += \" chart_Summary\";\nSummary.prototype.implements(I2DChart.prototype);\n\nexport interface Summary {\n iconColumn(): string;\n iconColumn(_: string): this;\n iconColumn_exists(): boolean;\n icon(): string;\n icon(_: string): this;\n icon_exists(): boolean;\n\n headerFontSize(): number;\n headerFontSize(_: number): this;\n textFontSize(): number;\n textFontSize(_: number): this;\n moreFontSize(): number;\n moreFontSize(_: number): this;\n iconFontSize(): number;\n iconFontSize(_: number): this;\n\n hideLabel(): boolean;\n hideLabel(_: boolean): this;\n hideLabel_exists(): boolean;\n labelColumn(): string;\n labelColumn(_: string): this;\n labelColumn_exists(): boolean;\n labelHTML(): boolean;\n labelHTML(_: boolean): this;\n labelHTML_exists(): boolean;\n\n valueColumn(): string;\n valueColumn(_: string): this;\n valueColumn_exists(): boolean;\n valueHTML(): boolean;\n valueHTML(_: boolean): this;\n valueHTML_exists(): boolean;\n\n hideMore(): boolean;\n hideMore(_: boolean): this;\n hideMore_exists(): boolean;\n hideMoreWrapper(): boolean;\n hideMoreWrapper(_: boolean): this;\n moreWrapperHeight(): number;\n moreWrapperHeight(_: number): this;\n moreWrapperHeight_exists(): boolean;\n moreIconColumn(): string;\n moreIconColumn(_: string): this;\n moreIconColumn_exists(): boolean;\n moreIcon(): string;\n moreIcon(_: string): this;\n moreIcon_exists(): boolean;\n moreTextColumn(): string;\n moreTextColumn(_: string): this;\n moreTextColumn_exists(): boolean;\n moreText(): string;\n moreText(_: string): this;\n moreText_exists(): boolean;\n moreTextHTML(): boolean;\n moreTextHTML(_: boolean): this;\n moreTextHTML_exists(): boolean;\n\n colorFillColumn(): string;\n colorFillColumn(_: string): this;\n colorFillColumn_exists(): boolean;\n colorFill(): string;\n colorFill(_: string): this;\n colorFill_exists(): boolean;\n colorStrokeColumn(): string;\n colorStrokeColumn(_: string): this;\n colorStrokeColumn_exists(): boolean;\n colorStroke(): string;\n colorStroke(_: string): this;\n colorStroke_exists(): boolean;\n\n fixedSize(): boolean;\n fixedSize(_: boolean): this;\n fixedSize_exists(): boolean;\n minWidth(): number;\n minWidth(_: number): this;\n minWidth_exists(): boolean;\n minHeight(): number;\n minHeight(_: number): this;\n minHeight_exists(): boolean;\n playInterval(): number;\n playInterval(_: number): this;\n playInterval_exists(): boolean;\n\n // I2DChart ---\n click(row, column, selected);\n dblclick(row, column, selected);\n}\n\nSummary.prototype.publish(\"iconColumn\", null, \"set\", \"Select Icon Column\", function () { return this.columns(); }, { optional: true });\nSummary.prototype.publish(\"icon\", \"fa-briefcase\", \"string\", \"FA Char icon class\", null, { disable: (w) => w.iconColumn() });\n\nSummary.prototype.publish(\"headerFontSize\", null, \"number\", \"headerFontSize\");\nSummary.prototype.publish(\"textFontSize\", null, \"number\", \"textFontSize\");\nSummary.prototype.publish(\"moreFontSize\", null, \"number\", \"moreFontSize\");\nSummary.prototype.publish(\"iconFontSize\", null, \"number\", \"iconFontSize\");\n\nSummary.prototype.publish(\"hideLabel\", false, \"boolean\", \"Hide label column\");\nSummary.prototype.publish(\"labelColumn\", null, \"set\", \"Select display value\", function () { return this.columns(); }, { optional: true, disable: (w) => w.hideLabel() });\nSummary.prototype.publish(\"labelHTML\", false, \"boolean\", \"Allow HTML\", null, { disable: (w) => w.hideLabel() });\n\nSummary.prototype.publish(\"valueColumn\", null, \"set\", \"Select display value\", function () { return this.columns(); }, { optional: true });\nSummary.prototype.publish(\"valueHTML\", false, \"boolean\", \"Allow HTML\");\n\nSummary.prototype.publish(\"hideMore\", false, \"boolean\", \"Hide More Information\");\nSummary.prototype.publish(\"hideMoreWrapper\", false, \"boolean\", \"Hide More Information Wrapper\");\nSummary.prototype.publish(\"moreWrapperHeight\", null, \"number\", \"Height of the 'more' text wrapper (pixels)\");\nSummary.prototype.publish(\"moreIconColumn\", null, \"set\", \"Select More Icon Column\", function () { return this.columns(); }, { optional: true, disable: (w) => w.hideMore() });\nSummary.prototype.publish(\"moreIcon\", \"fa-info-circle\", \"string\", \"FA Char icon class\", null, { disable: (w) => w.hideMore() || w.moreIconColumn() });\nSummary.prototype.publish(\"moreTextColumn\", null, \"set\", \"Select display value\", function () { return this.columns(); }, { optional: true, disable: (w) => w.hideMore() });\nSummary.prototype.publish(\"moreText\", \"More Info\", \"string\", \"More text\", null, { disable: (w) => w.hideMore() || w.moreTextColumn() });\nSummary.prototype.publish(\"moreTextHTML\", false, \"boolean\", \"Allow HTML\", null, { disable: (w) => w.hideMore() });\n\nSummary.prototype.publish(\"colorFillColumn\", null, \"set\", \"Column for color\", function () { return this.columns(); }, { optional: true });\nSummary.prototype.publish(\"colorFill\", \"#3498db\", \"html-color\", \"Fill Color\", null, { disable: (w) => w.colorFillColumn() });\nSummary.prototype.publish(\"colorStrokeColumn\", null, \"set\", \"Column for color\", function () { return this.columns(); }, { optional: true });\nSummary.prototype.publish(\"colorStroke\", \"#ffffff\", \"html-color\", \"Fill Color\", null, { disable: (w) => w.colorStrokeColumn() });\n\nSummary.prototype.publish(\"fixedSize\", true, \"boolean\", \"Fix Size to Min Width/Height\");\nSummary.prototype.publish(\"minWidth\", 225, \"number\", \"Minimum Width\");\nSummary.prototype.publish(\"minHeight\", 150, \"number\", \"Minimum Height\");\nSummary.prototype.publish(\"playInterval\", null, \"number\", \"Play Interval\", null, { optional: true });\n\nconst playInterval = Summary.prototype.playInterval;\nSummary.prototype.playInterval = function (_?: number): number | any {\n const retVal = playInterval.apply(this, arguments);\n if (arguments.length) {\n if (this._playIntervalHandle) {\n clearInterval(this._playIntervalHandle);\n }\n const context = this;\n if (_) {\n this._playIntervalHandle = setInterval(function () {\n context._playIntervalIdx++;\n if (context._renderCount && context.data().length) {\n context.render();\n }\n }, _);\n }\n }\n return retVal;\n};\n","import { I2DChart } from \"@hpcc-js/api\";\nimport { CanvasWidget, Utility } from \"@hpcc-js/common\";\n\nexport class SummaryC extends CanvasWidget {\n protected _playIntervalIdx = 0;\n\n constructor() {\n super();\n I2DChart.call(this);\n this.playInterval(this.playInterval());\n }\n\n currentRow() {\n return this.data()[this._playIntervalIdx];\n }\n\n enter(domNode, element) {\n super.enter.apply(this, arguments);\n const { width, height } = this.size();\n domNode.height = height;\n domNode.width = width;\n }\n\n update(domNode, element) {\n super.update.apply(this, arguments);\n const context = this;\n if (this._playIntervalIdx >= this.data().length) {\n this._playIntervalIdx = 0;\n }\n const size = this.size();\n const minDimension = Math.min(size.width, size.height);\n const sizeRatio = this.fontSizeRatio();\n const labelIdx = this.columns().indexOf(this.labelColumn());\n const valueIdx = this.columns().indexOf(this.valueColumn());\n const bgColorIdx = this.columns().indexOf(this.colorFillColumn());\n const fontColorIdx = this.columns().indexOf(this.colorStrokeColumn());\n const iconIdx = this.columns().indexOf(this.iconColumn());\n const icon = iconIdx !== -1 ? this.currentRow()[iconIdx] : this.icon();\n const label = labelIdx !== -1 ? this.currentRow()[labelIdx] : \"\";\n const value = valueIdx !== -1 ? this.currentRow()[valueIdx] : \"\";\n const bgColor = bgColorIdx !== -1 ? this.currentRow()[bgColorIdx] : this.colorFill();\n const fontColor = fontColorIdx !== -1 ? this.currentRow()[fontColorIdx] : this.colorStroke();\n\n let mainFontSize = size.height * (sizeRatio - this.paddingSizeRatio());\n const subFontSize = size.height * (1 - sizeRatio - this.paddingSizeRatio());\n const iconSize = size.height * (this.iconSizeRatio() - this.paddingSizeRatio());\n const p = minDimension * this.paddingSizeRatio();\n const ctx = domNode.getContext(\"2d\");\n\n ctx.clearRect(0, 0, size.width, size.height);\n\n const fontFamily = context.fontFamily();\n\n ctx.fillStyle = bgColor;\n ctx.fillRect(0, 0, size.width, size.height);\n\n ctx.globalAlpha = this.iconOpacity();\n drawIcon(Utility.faChar(icon), iconSize, context.iconAnchor());\n\n ctx.globalAlpha = this.valueOpacity();\n mainFontSize = drawText(value, p, mainFontSize, context.valueAnchor());\n\n ctx.globalAlpha = this.labelOpacity();\n drawText(label, mainFontSize + p, subFontSize, context.labelAnchor());\n\n function drawText(text, y, fontSize, anchorMode) {\n ctx.textBaseline = \"top\";\n ctx.font = `${fontSize}px ${fontFamily}`;\n ctx.fillStyle = fontColor;\n let measurement = ctx.measureText(text);\n if (measurement.width > (size.width - (p * 2))) {\n const fontSizeMult = (size.width - (p * 2)) / measurement.width;\n fontSize = fontSize * fontSizeMult;\n ctx.font = `${fontSize}px ${fontFamily}`;\n measurement = ctx.measureText(text);\n }\n const x = getTextOffsetX(measurement.width, anchorMode);\n ctx.fillText(text, x, y);\n return fontSize;\n }\n\n function drawIcon(text, fontSize, anchorMode) {\n if (typeof text === \"undefined\") return;\n ctx.textBaseline = context.iconBaseline();\n ctx.font = `${fontSize}px FontAwesome`;\n ctx.fillStyle = fontColor;\n let measurement = ctx.measureText(text);\n if (measurement.width > (size.width - (p * 2))) {\n const fontSizeMult = (size.width - (p * 2)) / measurement.width;\n ctx.font = `${fontSize * fontSizeMult}px FontAwesome`;\n measurement = ctx.measureText(text);\n }\n const x = getTextOffsetX(measurement.width, anchorMode);\n const y = getTextOffsetY(context.iconBaseline());\n ctx.fillText(text, x, y);\n }\n\n function getTextOffsetX(width, anchorMode) {\n switch (anchorMode) {\n case \"start\":\n return p;\n case \"middle\":\n return (size.width / 2) - (width / 2);\n case \"end\":\n return size.width - width - p;\n }\n }\n function getTextOffsetY(anchorMode) {\n switch (anchorMode) {\n case \"top\":\n return p;\n case \"middle\":\n return size.height / 2;\n case \"bottom\":\n return size.height - p;\n }\n }\n }\n}\nSummaryC.prototype._class += \" chart_SummaryC\";\nSummaryC.prototype.implements(I2DChart.prototype);\n\nexport interface SummaryC {\n iconColumn(): string;\n iconColumn(_: string): this;\n iconColumn_exists(): boolean;\n icon(): string;\n icon(_: string): this;\n icon_exists(): boolean;\n iconOpacity(): number;\n iconOpacity(_: number): this;\n\n fontFamily(): string;\n fontFamily(_: string): this;\n\n labelColumn(): string;\n labelColumn(_: string): this;\n labelColumn_exists(): boolean;\n labelOpacity(): number;\n labelOpacity(_: number): this;\n\n valueColumn(): string;\n valueColumn(_: string): this;\n valueColumn_exists(): boolean;\n valueOpacity(): number;\n valueOpacity(_: number): this;\n\n fontSizeRatio(): number;\n fontSizeRatio(_: number): this;\n\n colorFillColumn(): string;\n colorFillColumn(_: string): this;\n colorFillColumn_exists(): boolean;\n colorFill(): string;\n colorFill(_: string): this;\n colorFill_exists(): boolean;\n colorStrokeColumn(): string;\n colorStrokeColumn(_: string): this;\n colorStrokeColumn_exists(): boolean;\n colorStroke(): string;\n colorStroke(_: string): this;\n colorStroke_exists(): boolean;\n\n fixedSize(): boolean;\n fixedSize(_: boolean): this;\n fixedSize_exists(): boolean;\n minWidth(): number;\n minWidth(_: number): this;\n minWidth_exists(): boolean;\n minHeight(): number;\n minHeight(_: number): this;\n minHeight_exists(): boolean;\n playInterval(): number;\n playInterval(_: number): this;\n playInterval_exists(): boolean;\n paddingSizeRatio(): number;\n paddingSizeRatio(_: number): this;\n iconSizeRatio(): number;\n iconSizeRatio(_: number): this;\n\n iconAnchor(): \"start\" | \"middle\" | \"end\";\n iconAnchor(_: \"start\" | \"middle\" | \"end\"): this;\n labelAnchor(): \"start\" | \"middle\" | \"end\";\n labelAnchor(_: \"start\" | \"middle\" | \"end\"): this;\n valueAnchor(): \"start\" | \"middle\" | \"end\";\n valueAnchor(_: \"start\" | \"middle\" | \"end\"): this;\n\n iconBaseline(): \"top\" | \"middle\" | \"bottom\";\n iconBaseline(_: \"top\" | \"middle\" | \"bottom\"): this;\n}\n\nSummaryC.prototype.publish(\"iconBaseline\", \"bottom\", \"string\", \"Text baseline for the icon\", [\"top\", \"middle\", \"bottom\"]);\nSummaryC.prototype.publish(\"iconAnchor\", \"end\", \"set\", \"Anchors the icon either at the start, middle, or end of the summary\", [\"start\", \"middle\", \"end\"]);\nSummaryC.prototype.publish(\"valueAnchor\", \"start\", \"set\", \"Anchors the value either at the start, middle, or end of the summary\", [\"start\", \"middle\", \"end\"]);\nSummaryC.prototype.publish(\"labelAnchor\", \"start\", \"set\", \"Anchors the label either at the start, middle, or end of the summary\", [\"start\", \"middle\", \"end\"]);\nSummaryC.prototype.publish(\"iconColumn\", null, \"set\", \"Select Icon Column\", function () { return this.columns(); }, { optional: true });\nSummaryC.prototype.publish(\"icon\", \"fa-briefcase\", \"string\", \"FA Char icon class\", null, { disable: (w) => w.iconColumn() });\n\nSummaryC.prototype.publish(\"fontFamily\", \"Arial\", \"string\", \"Font Family\");\n\nSummaryC.prototype.publish(\"labelColumn\", null, \"set\", \"Select display value\", function () { return this.columns(); }, { optional: true });\nSummaryC.prototype.publish(\"valueColumn\", null, \"set\", \"Select display value\", function () { return this.columns(); }, { optional: true });\n\nSummaryC.prototype.publish(\"colorFillColumn\", null, \"set\", \"Column for background color\", function () { return this.columns(); }, { optional: true });\nSummaryC.prototype.publish(\"colorFill\", \"#0097e6\", \"html-color\", \"Background Color\", null, { disable: (w) => w.colorFillColumn() });\nSummaryC.prototype.publish(\"colorStrokeColumn\", null, \"set\", \"Column for font color\", function () { return this.columns(); }, { optional: true });\nSummaryC.prototype.publish(\"colorStroke\", \"#2f3640\", \"html-color\", \"Font Color\", null, { disable: (w) => w.colorStrokeColumn() });\n\nSummaryC.prototype.publish(\"fixedSize\", true, \"boolean\", \"Fix Size to Min Width/Height\");\nSummaryC.prototype.publish(\"minWidth\", 225, \"number\", \"Minimum Width\");\nSummaryC.prototype.publish(\"minHeight\", 150, \"number\", \"Minimum Height\");\nSummaryC.prototype.publish(\"playInterval\", null, \"number\", \"Play Interval\", null, { optional: true });\n\nSummaryC.prototype.publish(\"fontSizeRatio\", 0.618, \"number\", \"Ratio between widget height and value font size\");\nSummaryC.prototype.publish(\"valueOpacity\", 1, \"number\", \"Opacity of value text (0..1)\");\nSummaryC.prototype.publish(\"labelOpacity\", 0.9, \"number\", \"Opacity of label text (0..1)\");\nSummaryC.prototype.publish(\"iconOpacity\", 0.3, \"number\", \"Opacity of icon text (0..1)\");\n\nSummaryC.prototype.publish(\"paddingSizeRatio\", 0.1, \"number\", \"Ratio of the smallest dimension for edge padding (0..1)\");\nSummaryC.prototype.publish(\"iconSizeRatio\", 0.9, \"number\", \"Ratio of the height for icon size (0..1)\");\n\nconst playInterval = SummaryC.prototype.playInterval;\nSummaryC.prototype.playInterval = function (_?: number): number | any {\n const retVal = playInterval.apply(this, arguments);\n if (arguments.length) {\n if (this._playIntervalHandle) {\n clearInterval(this._playIntervalHandle);\n }\n const context = this;\n if (_) {\n this._playIntervalHandle = setInterval(function () {\n context._playIntervalIdx++;\n if (context._renderCount && context.data().length) {\n context.render();\n }\n }, _);\n }\n }\n return retVal;\n};\n","// Word cloud layout by Jason Davies, https://www.jasondavies.com/wordcloud/\n// Algorithm due to Jonathan Feinberg, http://static.mrfeinberg.com/bv_ch03.pdf\n\nimport { dispatch } from \"d3-dispatch\";\n\nconst cloudRadians = Math.PI / 180;\nconst cw = 1 << 11 >> 5;\nconst ch = 1 << 11;\n\nexport function d3Cloud() {\n const event = dispatch(\"word\", \"end\");\n const cloud: any = {};\n\n let size = [256, 256];\n let text = cloudText;\n let font = cloudFont;\n let fontSize = cloudFontSize;\n let fontStyle = cloudFontNormal;\n let fontWeight = cloudFontNormal;\n let rotate = cloudRotate;\n let padding = cloudPadding;\n let words = [];\n let spiral = archimedeanSpiral;\n let timeInterval = Infinity;\n let timer = null;\n let random = Math.random;\n let canvas = cloudCanvas;\n\n cloud.canvas = function (_?) {\n return arguments.length ? (canvas = functor(_), cloud) : canvas;\n };\n\n cloud.start = function () {\n const contextAndRatio = getContext(canvas());\n const board = zeroArray((size[0] >> 5) * size[1]);\n let bounds = null;\n const n = words.length;\n let i = -1;\n const tags = [];\n const data = words.map(function (d, i) {\n d.text = text.call(this, d, i);\n d.font = font.call(this, d, i);\n d.style = fontStyle.call(this, d, i);\n d.weight = fontWeight.call(this, d, i);\n d.rotate = rotate.call(this, d, i);\n d.size = ~~fontSize.call(this, d, i);\n d.padding = padding.call(this, d, i);\n return d;\n }).sort(function (a, b) { return b.size - a.size; });\n\n if (timer) clearInterval(timer);\n timer = setInterval(step, 0);\n step();\n\n return cloud;\n\n function step() {\n const start = Date.now();\n while (Date.now() - start < timeInterval && ++i < n && timer) {\n const d = data[i];\n d.x = (size[0] * (random() + .5)) >> 1;\n d.y = (size[1] * (random() + .5)) >> 1;\n cloudSprite(contextAndRatio, d, data, i);\n if (d.hasText && place(board, d, bounds)) {\n tags.push(d);\n event.call(\"word\", cloud, d);\n if (bounds) cloudBounds(bounds, d);\n else bounds = [{ x: d.x + d.x0, y: d.y + d.y0 }, { x: d.x + d.x1, y: d.y + d.y1 }];\n // Temporary hack\n d.x -= size[0] >> 1;\n d.y -= size[1] >> 1;\n }\n }\n if (i >= n) {\n cloud.stop();\n event.call(\"end\", cloud, tags, bounds);\n }\n }\n };\n\n cloud.stop = function () {\n if (timer) {\n clearInterval(timer);\n timer = null;\n }\n return cloud;\n };\n\n function getContext(canvas) {\n canvas.width = canvas.height = 1;\n const ratio = Math.sqrt(canvas.getContext(\"2d\").getImageData(0, 0, 1, 1).data.length >> 2);\n canvas.width = (cw << 5) / ratio;\n canvas.height = ch / ratio;\n\n const context = canvas.getContext(\"2d\");\n context.fillStyle = context.strokeStyle = \"red\";\n context.textAlign = \"center\";\n\n return { context, ratio };\n }\n\n function place(board, tag, bounds) {\n const startX = tag.x;\n const startY = tag.y;\n const maxDelta = Math.sqrt(size[0] * size[0] + size[1] * size[1]);\n const s = spiral(size);\n const dt = random() < .5 ? 1 : -1;\n let t = -dt;\n let dxdy;\n let dx;\n let dy;\n\n // eslint-disable-next-line no-cond-assign\n while (dxdy = s(t += dt)) {\n dx = ~~dxdy[0];\n dy = ~~dxdy[1];\n\n if (Math.min(Math.abs(dx), Math.abs(dy)) >= maxDelta) break;\n\n tag.x = startX + dx;\n tag.y = startY + dy;\n\n if (tag.x + tag.x0 < 0 || tag.y + tag.y0 < 0 ||\n tag.x + tag.x1 > size[0] || tag.y + tag.y1 > size[1]) continue;\n // TODO only check for collisions within current bounds.\n if (!bounds || !cloudCollide(tag, board, size[0])) {\n if (!bounds || collideRects(tag, bounds)) {\n const sprite = tag.sprite;\n const w = tag.width >> 5;\n const sw = size[0] >> 5;\n const lx = tag.x - (w << 4);\n const sx = lx & 0x7f;\n const msx = 32 - sx;\n const h = tag.y1 - tag.y0;\n let x = (tag.y + tag.y0) * sw + (lx >> 5);\n let last;\n for (let j = 0; j < h; j++) {\n last = 0;\n for (let i = 0; i <= w; i++) {\n board[x + i] |= (last << msx) | (i < w ? (last = sprite[j * w + i]) >>> sx : 0);\n }\n x += sw;\n }\n delete tag.sprite;\n return true;\n }\n }\n }\n return false;\n }\n\n cloud.timeInterval = function (_?) {\n return arguments.length ? (timeInterval = _ == null ? Infinity : _, cloud) : timeInterval;\n };\n\n cloud.words = function (_?) {\n return arguments.length ? (words = _, cloud) : words;\n };\n\n cloud.size = function (_?) {\n return arguments.length ? (size = [+_[0], +_[1]], cloud) : size;\n };\n\n cloud.font = function (_?) {\n return arguments.length ? (font = functor(_), cloud) : font;\n };\n\n cloud.fontStyle = function (_?) {\n return arguments.length ? (fontStyle = functor(_), cloud) : fontStyle;\n };\n\n cloud.fontWeight = function (_?) {\n return arguments.length ? (fontWeight = functor(_), cloud) : fontWeight;\n };\n\n cloud.rotate = function (_?) {\n return arguments.length ? (rotate = functor(_), cloud) : rotate;\n };\n\n cloud.text = function (_?) {\n return arguments.length ? (text = functor(_), cloud) : text;\n };\n\n cloud.spiral = function (_?) {\n return arguments.length ? (spiral = spirals[_] || _, cloud) : spiral;\n };\n\n cloud.fontSize = function (_?) {\n return arguments.length ? (fontSize = functor(_), cloud) : fontSize;\n };\n\n cloud.padding = function (_?) {\n return arguments.length ? (padding = functor(_), cloud) : padding;\n };\n\n cloud.random = function (_?) {\n return arguments.length ? (random = _, cloud) : random;\n };\n\n cloud.on = function () {\n const value = event.on.apply(event, arguments);\n return value === event ? cloud : value;\n };\n\n return cloud;\n}\n\nfunction cloudText(d) {\n return d.text;\n}\n\nfunction cloudFont() {\n return \"serif\";\n}\n\nfunction cloudFontNormal() {\n return \"normal\";\n}\n\nfunction cloudFontSize(d) {\n return Math.sqrt(d.value);\n}\n\nfunction cloudRotate() {\n return (~~(Math.random() * 6) - 3) * 30;\n}\n\nfunction cloudPadding() {\n return 1;\n}\n\n// Fetches a monochrome sprite bitmap for the specified text.\n// Load in batches for speed.\nfunction cloudSprite(contextAndRatio, d, data, di) {\n if (d.sprite) return;\n const c = contextAndRatio.context;\n const ratio = contextAndRatio.ratio;\n\n c.clearRect(0, 0, (cw << 5) / ratio, ch / ratio);\n let x = 0;\n let y = 0;\n let maxh = 0;\n const n = data.length;\n --di;\n while (++di < n) {\n d = data[di];\n c.save();\n c.font = d.style + \" \" + d.weight + \" \" + ~~((d.size + 1) / ratio) + \"px \" + d.font;\n let w = c.measureText(d.text + \"m\").width * ratio;\n let h = d.size << 1;\n if (d.rotate) {\n const sr = Math.sin(d.rotate * cloudRadians);\n const cr = Math.cos(d.rotate * cloudRadians);\n const wcr = w * cr;\n const wsr = w * sr;\n const hcr = h * cr;\n const hsr = h * sr;\n w = (Math.max(Math.abs(wcr + hsr), Math.abs(wcr - hsr)) + 0x1f) >> 5 << 5;\n h = ~~Math.max(Math.abs(wsr + hcr), Math.abs(wsr - hcr));\n } else {\n w = (w + 0x1f) >> 5 << 5;\n }\n if (h > maxh) maxh = h;\n if (x + w >= (cw << 5)) {\n x = 0;\n y += maxh;\n maxh = 0;\n }\n if (y + h >= ch) break;\n c.translate((x + (w >> 1)) / ratio, (y + (h >> 1)) / ratio);\n if (d.rotate) c.rotate(d.rotate * cloudRadians);\n c.fillText(d.text, 0, 0);\n if (d.padding) {\n c.lineWidth = 2 * d.padding;\n c.strokeText(d.text, 0, 0);\n }\n c.restore();\n d.width = w;\n d.height = h;\n d.xoff = x;\n d.yoff = y;\n d.x1 = w >> 1;\n d.y1 = h >> 1;\n d.x0 = -d.x1;\n d.y0 = -d.y1;\n d.hasText = true;\n x += w;\n }\n const pixels = c.getImageData(0, 0, (cw << 5) / ratio, ch / ratio).data;\n const sprite = [];\n while (--di >= 0) {\n d = data[di];\n if (!d.hasText) continue;\n const w = d.width;\n const w32 = w >> 5;\n let h = d.y1 - d.y0;\n // Zero the buffer\n for (let i = 0; i < h * w32; i++) sprite[i] = 0;\n x = d.xoff;\n if (x == null) return;\n y = d.yoff;\n let seen = 0;\n let seenRow = -1;\n for (let j = 0; j < h; j++) {\n for (let i = 0; i < w; i++) {\n const k = w32 * j + (i >> 5);\n const m = pixels[((y + j) * (cw << 5) + (x + i)) << 2] ? 1 << (31 - (i % 32)) : 0;\n sprite[k] |= m;\n seen |= m;\n }\n if (seen) seenRow = j;\n else {\n d.y0++;\n h--;\n j--;\n y++;\n }\n }\n d.y1 = d.y0 + seenRow;\n d.sprite = sprite.slice(0, (d.y1 - d.y0) * w32);\n }\n}\n\n// Use mask-based collision detection.\nfunction cloudCollide(tag, board, sw) {\n sw >>= 5;\n const sprite = tag.sprite;\n const w = tag.width >> 5;\n const lx = tag.x - (w << 4);\n const sx = lx & 0x7f;\n const msx = 32 - sx;\n const h = tag.y1 - tag.y0;\n let x = (tag.y + tag.y0) * sw + (lx >> 5);\n let last;\n for (let j = 0; j < h; j++) {\n last = 0;\n for (let i = 0; i <= w; i++) {\n if (((last << msx) | (i < w ? (last = sprite[j * w + i]) >>> sx : 0))\n & board[x + i]) return true;\n }\n x += sw;\n }\n return false;\n}\n\nfunction cloudBounds(bounds, d) {\n const b0 = bounds[0];\n const b1 = bounds[1];\n if (d.x + d.x0 < b0.x) b0.x = d.x + d.x0;\n if (d.y + d.y0 < b0.y) b0.y = d.y + d.y0;\n if (d.x + d.x1 > b1.x) b1.x = d.x + d.x1;\n if (d.y + d.y1 > b1.y) b1.y = d.y + d.y1;\n}\n\nfunction collideRects(a, b) {\n return a.x + a.x1 > b[0].x && a.x + a.x0 < b[1].x && a.y + a.y1 > b[0].y && a.y + a.y0 < b[1].y;\n}\n\nfunction archimedeanSpiral(size) {\n const e = size[0] / size[1];\n return function (t) {\n return [e * (t *= .1) * Math.cos(t), t * Math.sin(t)];\n };\n}\n\nfunction rectangularSpiral(size) {\n const dy = 4;\n const dx = dy * size[0] / size[1];\n let x = 0;\n let y = 0;\n return function (t) {\n const sign = t < 0 ? -1 : 1;\n // See triangular numbers: T_n = n * (n + 1) / 2.\n switch ((Math.sqrt(1 + 4 * sign * t) - sign) & 3) {\n case 0: x += dx; break;\n case 1: y += dy; break;\n case 2: x -= dx; break;\n default: y -= dy; break;\n }\n return [x, y];\n };\n}\n\n// TODO reuse arrays?\nfunction zeroArray(n) {\n const a = [];\n let i = -1;\n while (++i < n) a[i] = 0;\n return a;\n}\n\nfunction cloudCanvas() {\n return document.createElement(\"canvas\");\n}\n\nfunction functor(d) {\n return typeof d === \"function\" ? d : function () { return d; };\n}\n\nconst spirals = {\n archimedean: archimedeanSpiral,\n rectangular: rectangularSpiral\n};\n","import { I2DChart, ITooltip } from \"@hpcc-js/api\";\nimport { d3Event, InputField, SVGWidget, Utility, zoom as d3Zoom } from \"@hpcc-js/common\";\nimport { extent as d3Extent } from \"d3-array\";\nimport { scaleLinear as d3ScaleLinear, scaleLog as d3ScaleLog, scalePow as d3ScalePow, scaleSqrt as d3ScaleSqrt } from \"d3-scale\";\nimport { d3Cloud } from \"./D3Cloud.ts\";\n\nimport \"../src/WordCloud.css\";\n\nexport class WordCloud extends SVGWidget {\n static __inputs: InputField[] = [{\n id: \"label\",\n type: \"string\"\n }, {\n id: \"value\",\n type: \"number\"\n }];\n\n private _prevOffsetX;\n private _prevOffsetY;\n private _prevZoom;\n private _root;\n private _canvas;\n private _d3Cloud;\n private _d3Zoom;\n\n constructor() {\n super();\n I2DChart.call(this);\n ITooltip.call(this);\n Utility.SimpleSelectionMixin.call(this);\n\n this._prevOffsetX = this.offsetX();\n this._prevOffsetY = this.offsetY();\n this._prevZoom = this.zoom();\n }\n\n calcData() {\n return this.data().map(row => {\n return {\n __viz_label: row[0],\n __viz_weight: row[1],\n __viz_row: row\n };\n });\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this._selection.widgetElement(element);\n\n this._root = element.append(\"g\");\n this._canvas = document.createElement(\"canvas\");\n\n const context = this;\n this._d3Zoom = d3Zoom()\n .scaleExtent([0.1, 10])\n ;\n this._d3Zoom\n .on(\"zoom\", function (evt) {\n const event = d3Event();\n if (event && event.transform) {\n context.zoomed(context._d3Zoom, [event.transform.x, event.transform.y], event.transform.k);\n }\n })\n ;\n element.call(this._d3Zoom);\n\n this\n .tooltipHTML(function (d) {\n const columns = context.columns();\n const series = columns && columns.length ? columns[0] : \"Word\";\n return context.tooltipFormat({ label: d.__viz_label, series, value: d.__viz_weight });\n })\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this._palette = this._palette.switch(this.paletteID());\n if (this.useClonedPalette()) {\n this._palette = this._palette.cloneNotExists(this.paletteID() + \"_\" + this.id());\n }\n\n this._d3Cloud = d3Cloud()\n .canvas(() => this._canvas)\n ;\n\n this.zoomed(this, [this.offsetX(), this.offsetY()], this.zoom());\n\n const data = this.calcData();\n const context = this;\n const extent = d3Extent(data, function (d: any) { return d.__viz_weight; });\n let scaler;\n switch (this.scaleMode()) {\n case \"log\":\n scaler = d3ScaleLog;\n break;\n case \"sqrt\":\n scaler = d3ScaleSqrt;\n break;\n case \"pow\":\n scaler = d3ScalePow;\n break;\n case \"linear\":\n default:\n scaler = d3ScaleLinear;\n break;\n }\n const scale = scaler().domain(extent).range([this.fontSizeFrom(), this.fontSizeTo()]);\n const angleDomain = d3ScaleLinear().domain([0, context.angleCount() - 1]).range([context.angleFrom(), context.angleTo()]);\n\n this._d3Cloud.stop()\n .size([this.width(), this.height()])\n .words(data)\n .font(this.fontFamily())\n .padding(this.padding())\n .spiral(this.spiral())\n .text(function (d) {\n return d.__viz_label.trim();\n })\n .fontSize(function (d) {\n return scale(d.__viz_weight);\n })\n .rotate((d, i) => angleDomain(i % context.angleCount()))\n .on(\"word\", w => {\n })\n .on(\"end\", draw)\n .start()\n ;\n\n function draw(data, bounds) {\n const text = context._root.selectAll(\"text\")\n .data(data, function (d) { return d.__viz_label ? d.__viz_label.toLowerCase() : \"\"; })\n ;\n text.enter().append(\"text\")\n .attr(\"text-anchor\", \"middle\")\n .call(context._selection.enter.bind(context._selection))\n .text(function (d) { return d.__viz_label; })\n .on(\"click\", function (d) {\n context.click(context.rowToObj(d.__viz_row), context.columns()[1], context._selection.selected(this));\n })\n .on(\"dblclick\", function (d) {\n context.dblclick(context.rowToObj(d.__viz_row), context.columns()[1], context._selection.selected(this));\n })\n .on(\"mouseout.tooltip\", context.tooltip.hide)\n .on(\"mousemove.tooltip\", context.tooltip.show)\n .style(\"opacity\", 1e-6)\n .merge(text)\n .style(\"font-size\", function (d) { return scale(d.__viz_weight) + \"px\"; })\n .style(\"font-family\", context.fontFamily())\n .transition().duration(1000)\n .attr(\"transform\", function (d) { return \"translate(\" + [d.x, d.y] + \")rotate(\" + d.rotate + \")\"; })\n .style(\"fill\", function (d) { return context._palette(d.__viz_label ? d.__viz_label.toLowerCase() : \"\"); })\n .style(\"opacity\", 1)\n ;\n text.exit().transition().duration(1000)\n .style(\"opacity\", 1e-4)\n .remove()\n ;\n }\n }\n\n zoomed(source, translate, scale) {\n if (translate[0] !== this._prevOffsetX || translate[1] !== this._prevOffsetY || scale !== this._prevZoom) {\n this._root.attr(\"transform\", translate);\n switch (source) {\n case this:\n /*\n this._d3Zoom\n .scale(scale)\n .translate(translate)\n ;\n */\n break;\n case this._d3Zoom:\n this.offsetX(translate[0]);\n this.offsetY(translate[1]);\n this.zoom(scale);\n break;\n }\n this._prevOffsetX = translate[0];\n this._prevOffsetY = translate[1];\n this._prevZoom = scale;\n }\n }\n}\nWordCloud.prototype._class += \" chart_WordCloud\";\nWordCloud.prototype.implements(I2DChart.prototype);\nWordCloud.prototype.implements(ITooltip.prototype);\nWordCloud.prototype.mixin(Utility.SimpleSelectionMixin);\n\nexport interface WordCloud {\n\n paletteID(): string;\n paletteID(_: string): this;\n useClonedPalette(): boolean;\n useClonedPalette(_: boolean): this;\n fontFamily(): string;\n fontFamily(_: string): this;\n fontSizeFrom(): number;\n fontSizeFrom(_: number): this;\n fontSizeTo(): number;\n fontSizeTo(_: number): this;\n angleFrom(): number;\n angleFrom(_: number): this;\n angleTo(): number;\n angleTo(_: number): this;\n angleCount(): number;\n angleCount(_: number): this;\n padding(): number;\n padding(_: number): this;\n scaleMode(): string;\n scaleMode(_: string): this;\n spiral(): string;\n spiral(_: string): this;\n offsetX(): number;\n offsetX(_: number): this;\n offsetY(): number;\n offsetY(_: number): this;\n zoom(): number;\n zoom(_: number): this;\n zoom_exists(): boolean;\n\n // I2DChart\n _palette;\n click(row, column, selected): void;\n dblclick(row, column, selected): void;\n\n // ITooltip ---\n tooltip;\n tooltipHTML(_?): any;\n tooltipFormat(opts): any;\n tooltipStyle(): string;\n tooltipStyle(_: string): this;\n tooltipValueFormat(): string;\n tooltipValueFormat(_: string): this;\n tooltipSeriesColor(): string;\n tooltipSeriesColor(_: string): this;\n tooltipLabelColor(): string;\n tooltipLabelColor(_: string): this;\n tooltipValueColor(): string;\n tooltipValueColor(_: string): this;\n tooltipTick(): boolean;\n tooltipTick(_: boolean): this;\n tooltipOffset(): number;\n tooltipOffset(_: number): this;\n tooltipOffset_exists(): boolean;\n\n // SimpleSelectionMixin\n _selection: Utility.SimpleSelection;\n}\n\nWordCloud.prototype.publish(\"paletteID\", \"default\", \"set\", \"Color palette for this widget\", WordCloud.prototype._palette.switch(), { tags: [\"Basic\", \"Shared\"] });\nWordCloud.prototype.publish(\"useClonedPalette\", false, \"boolean\", \"Enable or disable using a cloned palette\", null, { tags: [\"Intermediate\", \"Shared\"] });\n\nWordCloud.prototype.publish(\"fontFamily\", \"Impact\", \"string\", \"Font Name\", null, { tags: [\"Basic\"] });\nWordCloud.prototype.publish(\"fontSizeFrom\", 6, \"number\", \"Minimum font size (pixels)\", null, { tags: [\"Basic\"] });\nWordCloud.prototype.publish(\"fontSizeTo\", 48, \"number\", \"Maximum font size (pixels)\", null, { tags: [\"Basic\"] });\nWordCloud.prototype.publish(\"angleFrom\", -60, \"number\", \"Minimum angle (degrees)\", null, { tags: [\"Basic\"] });\nWordCloud.prototype.publish(\"angleTo\", 60, \"number\", \"Maximum angle (degrees)\", null, { tags: [\"Basic\"] });\nWordCloud.prototype.publish(\"angleCount\", 5, \"number\", \"Number of different angles\", null, { tags: [\"Basic\"] });\nWordCloud.prototype.publish(\"padding\", 0, \"number\", \"Padding between words (pixels)\", null, { tags: [\"Intermediate\"] });\nWordCloud.prototype.publish(\"scaleMode\", \"linear\", \"set\", \"Text scaling mode\", [\"linear\", \"log\", \"sqrt\", \"pow\"], { tags: [\"Intermediate\"] });\nWordCloud.prototype.publish(\"spiral\", \"archimedean\", \"set\", \"Text scaling mode\", [\"archimedean\", \"rectangular\"], { tags: [\"Intermediate\"] });\nWordCloud.prototype.publish(\"offsetX\", 0, \"number\", \"X offset\", null, { tags: [\"Advanced\"] });\nWordCloud.prototype.publish(\"offsetY\", 0, \"number\", \"Y offset\", null, { tags: [\"Advanced\"] });\nWordCloud.prototype.publish(\"zoom\", 1, \"number\", \"Zoom\", null, { tags: [\"Advanced\"] });\n","import { timeFormat } from \"d3-time-format\";\n\n/**\n * Adaptive 24-hour multi-scale tick formatter.\n * Order of precedence (first predicate that matches):\n * milliseconds -> seconds -> minutes -> hours -> day -> month -> year.\n */\nexport function multiScale24Hours(): (d: Date) => string {\n const fmtMs = timeFormat(\".%L\");\n const fmtSec = timeFormat(\":%S\");\n const fmtMin = timeFormat(\"%H:%M\");\n const fmtHour = timeFormat(\"%H:00\");\n const fmtDay = timeFormat(\"%b %d\");\n const fmtMonth = timeFormat(\"%b\");\n const fmtYear = timeFormat(\"%Y\");\n\n return (d: Date): string => {\n if (d.getMilliseconds() !== 0) return fmtMs(d);\n if (d.getSeconds() !== 0) return fmtSec(d);\n if (d.getMinutes() !== 0) return fmtMin(d);\n if (d.getHours() !== 0) return fmtHour(d);\n if (d.getDate() !== 1) return fmtDay(d);\n if (d.getMonth() !== 0) return fmtMonth(d);\n return fmtYear(d);\n };\n}\n","export const PKG_NAME = \"__PACKAGE_NAME__\";\nexport const PKG_VERSION = \"__PACKAGE_VERSION__\";\nexport const BUILD_VERSION = \"__BUILD_VERSION__\";\n"],"names":["pi","Math","PI","tau","epsilon","tauEpsilon","Path","this","_x0","_y0","_x1","_y1","_","path","constant$3","x","__name","prototype","constructor","moveTo","y","closePath","lineTo","quadraticCurveTo","x1","y1","bezierCurveTo","x2","y2","arcTo","r","x0","y0","x21","y21","x01","y01","l01_2","Error","abs","x20","y20","l21_2","l20_2","l21","sqrt","l01","l","tan","acos","t01","t21","arc","a0","a1","ccw","dx","cos","dy","sin","cw","da","rect","w","h","toString","atan2","max","min","halfPi","asin","arcInnerRadius","d","innerRadius","arcOuterRadius","outerRadius","arcStartAngle","startAngle","arcEndAngle","endAngle","arcPadAngle","padAngle","intersect","x3","y3","x10","y10","x32","y32","t","cornerTangents","r1","rc","lo","ox","oy","x11","y11","x00","y00","d2","D","cx0","cy0","cx1","cy1","dx0","dy0","dx1","dy1","cx","cy","d3Arc","cornerRadius","constant","padRadius","context","buffer","r0","apply","arguments","t0","t1","a01","a11","a00","a10","da0","da1","ap","rp","rc0","rc1","p0","p1","oc","ax","ay","bx","by","kc","lc","centroid","a","length","Linear","_context","d3CurveLinear","p","d3Line","pointX","pointY","defined","curve","curveLinear","output","line","data","i","n","defined0","lineStart","lineEnd","point","d3Area","area","j","k","x0z","Array","y0z","areaStart","areaEnd","arealine","lineX0","lineY0","lineY1","lineX1","descending","b","NaN","identity$2","d3Pie","value","identity","sortValues","sort","pie","v","sum","index","arcs","pa","that","Basis","d3CurveBasis","Bundle","beta","_basis","_beta","_line","_point","_x","_y","push","d3CurveBundle","custom","bundle","_k","_x2","_y2","Cardinal","tension","d3CurveCardinal","cardinal","_l01_a","_l01_2a","_l12_a","_l12_2a","_l23_a","_l23_2a","m","CatmullRom","alpha","_alpha","x23","y23","pow","d3curveCatmullRom","catmullRom","sign","slope3","h0","h1","s0","s1","slope2","MonotoneX","monotoneX","Natural","controlPoints","d3CurveNatural","Step","_t","d3CurveStep","stepBefore","stepAfter","_t0","Object","create","call","px","py","i0","i1","slice","identity$1","translateX","translateY","number","scale","center","offset","bandwidth","round","entering","__axis","axis","orient","tickArguments","tickValues","tickFormat","tickSizeInner","tickSizeOuter","tickPadding","transform","values","ticks","domain","format","spacing","range","range0","range1","position","copy","selection","selectAll","tick","order","tickExit","exit","tickEnter","enter","append","attr","select","text","merge","insert","transition","isFinite","getAttribute","parentNode","remove","filter","each","tickSize","axisTop","axisRight","axisBottom","axisLeft","_Axis","SVGWidget","_origType","_origTimePattern","parser","parserInvert","formatter","d3Scale","d3Axis","d3Guides","_guideElement","svg","svgAxis","svgGuides","_tickFormatFunc","drawStartPosition","super","_drawStartPos","updateScale","lowValue","parse","low","highValue","high","forceNumeric","map","parseInvert","parseFormat","tickFormatFunc","fn","scalePos","retVal","type","isHorizontal","orientation","rangeRoundBands","rangeExtent","rangeRound","invert","pos","guideTarget","d3Select","_class","domNode","element","_prevOrientation","d3ScaleBand","paddingInner","ordinalPaddingInner","paddingOuter","ordinalPaddingOuter","ordinals_exists","ordinals","ordinalMappings_exists","mappings","ordinalMappings","d3ScaleLinear","low_exists","high_exists","tickFormat_exists","d3Format","d3ScalePow","exponent","powExponent","d3ScaleLog","base","logBase","d3ScaleTime","timePattern_exists","d3TimeParse","timePattern","d3TimeFormat","d3AxisLeft","d3AxisTop","d3AxisRight","d3AxisBottom","html","extend","delta","newLow","newHigh","width","height","tickCount","tickLength_exists","tickLength","customTicks","_d","label","adjustText","tickOverlapModulus","isHoriztontal","isLeft","isBottom","textSelection","style","fontFamily","fontSize_exists","fontSize","overlapMode","linebreak","wrap","deg","labelRotation","elm","bbox","node","getBBox","dyOff","calcTickOverlapModulus","bboxArr","getBoundingClientRect","right","left","calcOverflow","ignoreText","hidden","top","bottom","depth","tmpSvg","classID","tmpSvgG","shrinkToFit","_text","bandSize","re","words","split","reverse","lineNumber","fs","parseFloat","maxLinesPerBand","floor","minWordsPerLine","ceil","tspan","wordsOnLine","word","pop","join","getComputedTextLength","update","overlap","lowerPos","upperPos","padding","doPosition","svgLineBBox","svgText","title","svgTitleTransition","title_exists","classed","rerender","postUpdate","_element","Axis","publish","disable","optional","_type","_timePattern","_XYAxis","domainAxis","valueAxis","xAxis","yAxis","xyBrush","xBrush","yBrush","margin","focusChart","Utility","SimpleSelectionMixin","orientation_default","overlapMode_default","shrinkToFit_default","extend_default","d3Brush","on","brushMoved","brushMoved2","d3BrushX","d3BrushY","_prevBrush","resetSelection","parseData","parseValue","formatData","formatValue","parsedData","row","prevValue","cell","idx","columns","_retVal","yAxisStacked","svgRegions","svgDomainGuide","svgValueGuide","svgData","svgDataClipRect","svgFocus","svgBrush","id","_selection","widgetElement","target","chartsEnter","resizeBrushHandle","e","_skipSelection","skipSelection","selected","currSel","d3BrushSelection","dataPos","use2dSelection","pos2","valuePos","handleTypes","handlePath","s","d3Event","getAxisSize","host","calcMargin","_domNode","selectionMode","xAxisFocus","xAxisFocusHeight","xRight","xHeight","yTop","yWidth","xAxisOverlap","newXHeight","yAxisOverlap","newYWidth","updateRegions","regions","_palette","colorID","d3Hsl","brighter","_prevXAxisType","xAxisTitle_exists","xAxisTitle","xAxisType","colLen","xAxisOrdinalMapping","domainMin","xAxisDomainLow","d3Min","domainMax","xAxisDomainHigh","d3Max","yAxisDomainLow","indexOf","yAxisDomainHigh","maxCurrExtent","maxOtherExtent","xAxisGuideLines","render","yAxisGuideLines","updateBrush","updateFocusChart","chartsUpdate","currBrush","prevBrushSel","extent","tmp","ratio","move","syncAxis","layers","copyPropsTo","layerIdx","layer","layerColumns","masterColumns","col","layerColumnIndices","layerColumnIndex","column","layerData","indices","__hpcc_origRow","layerEnter","duration","layerUpdate","layerExit","class","resize","_selected","origRow","svgGlowID","selRows","rowToObj","setTimeout","click","lparam","XYAxis","mixin","publishProxy","tags","yAxisType","_Scatter","INDChart","ITooltip","xAxisGuideLines_default","yAxisGuideLines_default","xPos","yPos","interpolate","d3CurveStepBefore","d3CurveStepAfter","d3CurveMonotoneX","getScale","pointSizeScale","d3ScaleSqrt","pointColor","pointDarken","strokeColor","fillColor","lineColor","interpolateFill","interpolateDarken","areaColor","tooltipHTML","tooltipStyle","tooltipFormat","arr","color","rowIdx","series","_prevPointShape","mapShape","shape","switch","paletteID","useClonedPalette","cloneNotExists","pointShape","pointSizeColumnIdx","pointSizeColumn_exists","pointSizeColumn","d3Extent","flatData","flattenData","colIdx","size","maxPointSize","minPointSize","pointSize","areas","areasEnter","cssTag","interpolateFillOpacity","lines","linesEnter","data2","points","valueAnchor","valueBaseline","_idx","textColor","tooltip","hide","show","bind","dblclick","showValue","__publicField","multi","Scatter","implements","step","_Area","interpolate_default","interpolateFill_default","Area","_Column","_linearGap","textLocal","d3Local","stackedTextLocal","skipBringToTop","adjustedData","retVal2","formatPct","showValueAsPercentFormat","dataLen","direction","columnScale","xAxisSeriesPaddingInner","domainSums","seriesSums","columnLength","rowData","showValueAsPercent","forEach","showDomainTotal","reduce","hostData","axisSize","dataRow","dataRowIdx","columnGRect","columnGEnter","tooltipInnerTextEllipsedOnly","innerTextObj","isTruncated","domainLength","domainPos","upperValue","valueText","dm","dataMeta","seriesSum","domainSum","showValueFormat","upperValuePos","lowerValuePos","valueLength","innerTextHeight","innerTextFontSize","innerTextPadding","innerTextPadding_exists","dataRect","intersectRectRect","_rects","_texts","innerTextFontFamily_exists","innerTextFontFamily","textHeightOffset","showInnerText","innerText","clippedValueLength","calcInnerText","dataText","set","Text","colorStroke_default","valueFontFamily","valueFontSize","textSize","isPositive","leftSpace","rightSpace","topSpace","bottomSpace","noRoomInside","isOutside","noRoomOnExpectedSide","valueTextWidth","category","valueCentered","hideValue","get","anchor","colorFill","visible","value4pos","stackedTotalText","valueFontFamily_exists","origInnerText","fullWidth2","fullWidth3","excessWidth","letter","Column","_Bar","Bar","count","children","node_count","eachAfter","node_each","callback","current","next","node_eachBefore","nodes","node_eachAfter","node_sum","node_sort","compare","eachBefore","node_path","end","start","ancestor","leastCommonAncestor","parent","splice","aNodes","ancestors","bNodes","c","node_ancestors","node_descendants","node_leaves","leaves","node_links","root","links","source","hierarchy","child","childs","Node","valued","defaultChildren","computeHeight","node_copy","copyData","descendants","shuffle","array","random","enclose","circles","B","enclosesWeak","encloseBasis","extendBasis","enclosesWeakAll","enclosesNot","encloseBasis2","encloseBasis3","dr","encloseBasis1","r2","r21","r3","a2","a3","b2","b3","c2","c3","d1","d3","ab","xa","xb","ya","yb","A","C","place","intersects","score","circle","previous","packEnclose","aa","ca","sj","sk","pack","f","required","constantZero","constant$2","defaultRadius","d3Pack","radius","radiusLeaf","packChildren","translateChild","_Bubble","labelWidgets","I2DChart","d3Hierarchy","cloneData","element2","__viz_faChar","FAChar","char","colorFill_default","Bubble","_BubbleXY","BubbleXY","taskHead","taskTail","frame","timeout","interval","clockLast","clockNow","clockSkew","clock","performance","now","Date","setFrame","window","requestAnimationFrame","clearNow","Timer","_call","_time","_next","timerFlush","wake","nap","poke","delay","t2","time","Infinity","sleep","clearTimeout","clearInterval","setInterval","d3Bullet","vertical","ranges","bulvarRanges","markers","bulvarMarkers","measures","bulvarMeasures","bulvar","g","extentX","extentY","rangez","d3Descending","markerz","measurez","g2","empty","__chart__","w0","bulvarWidth","w1","i2","measure","marker","d3TimerFlush","restart","TypeError","stop","_Bullet","HTMLWidget","_hiddenColumns","bulletData","valueOf","titleColumn","subtitle","subtitleColumn","rangesColumn","measuresColumn","markersColumn","columnType","svgUpdate","bulletTitle","titleWidth","chart","keys","Bullet","ascending","ring","constant$1","contains","hole","ringContains","xi","yi","pj","xj","yj","segmentContains","collinear","within","q","noop$2","cases","contours","threshold","thresholdSturges","smooth","smoothLinear","tz","isArray","tickStep","contour","polygons","holes","isorings","polygon","coordinates","t3","fragmentByStart","fragmentByEnd","stitch","startIndex","endIndex","concat","unshift","v0","xt","yt","v1","_0","_1","thresholds","noop","blurX","sr","blurY","defaultX","defaultY","defaultWeight","d3ContourDensity","weight","o","density","values0","Float32Array","values1","wi","shift","geometry","transformPolygon","transformRing","transformPoint","cellSize","log","LN2","adder","Adder","reset","add","temp","bv","av","streamGeometry","stream","streamGeometryType","hasOwnProperty","streamObjectType","Feature","object","FeatureCollection","features","Sphere","sphere","Point","MultiPoint","LineString","streamLine","MultiLineString","Polygon","streamPolygon","MultiPolygon","GeometryCollection","geometries","closed","coordinate","polygonStart","polygonEnd","geoStream","areaSum","areaRingSum","areaStream","areaRingStart","areaRingEnd","result","areaPointFirst","areaPoint","boundsStream","boundsPoint","bounds","X0","Y0","Z0","X1","Y1","Z1","X2","Y2","Z2","centroidStream","centroidPoint","centroidLineStart","centroidLineEnd","centroidRingStart","centroidRingEnd","centroidPointFirstLine","centroidPointLine","z","centroidPointFirstRing","centroidPointRing","PathContext","_radius","pointRadius","lengthRing","lengthSum","lengthStream","lengthPointFirst","lengthPoint","PathString","_string","geoPath","projection","projectionStream","contextStream","pathArea","pathMeasure","pathBounds","pathCentroid","_circle","_Contour","_dataMinWeight","_dataMaxWeight","xAxisType_default","contourData","contourBandwidth","_vals","minValue","maxValue","showContourFill","contourStrokeColor","contourStrokeWidth","Contour","I1DChart","_Gantt","yAxisType_default","Gantt","CardinalClosed","CardinalOpen","_x3","_x4","_x5","_y3","_y4","_y5","curveCatmullRom","CatmullRomClosed","CatmullRomOpen","_typeof","Symbol","iterator","obj","classCallCheck","instance","Constructor","createClass","defineProperties","props","descriptor","enumerable","configurable","writable","defineProperty","key","protoProps","staticProps","_extends","assign","property","receiver","Function","desc","getOwnPropertyDescriptor","getPrototypeOf","getter","inherits","subClass","superClass","setPrototypeOf","__proto__","possibleConstructorReturn","self","ReferenceError","toConsumableArray","arr2","from","Annotation","_ref","_ref$x","_ref$y","nx","ny","_ref$dy","_ref$dx","_ref$color","subject","connector","note","className","_dx","_dy","_color","_className","setPosition","redrawSubject","clearComponents","setOffset","redrawConnector","redrawNote","setClassName","updatePosition","updateOffset","_ref2","_ref3","json","AnnotationCollection","annotations","accessors","accessorsInverse","newSettings","_this","setPositionWithAccessors","_editMode","editMode","updateEditMode","textWrap","updateTextWrap","drawText","notePadding","_this2","getNoteBBoxOffset","positionX","positionY","pointHandle","_ref$cx","_ref$cy","circleHandles","_ref2$cx","_ref2$cy","addHandles","_ref5","group","handles","_ref5$r","drag","container","leftRightDynamic","align","topBottomDynamic","orientationTopBottom","orientationLeftRight","noteAlignment","_ref$padding","_ref$bbox","_ref$offset","lineBuilder","_ref$curve","canvasContext","lineGen","builder","pathMethods","attrs","arcBuilder","arcShape","noteVertical","components","noteHorizontal","lineSetup","subjectType","annotation","subjectData","angle","radiusPadding","connectorLine","connectorData","connectorElbow","diffY","diffX","xe","ye","opposite","_angle","connectorCurve","createPoints","cHandles","updatePoint","event","mapHandles","anchors","diff","connectorArrow","_ref$scale","angleOffset","atan","connectorDot","line$$1","dot","subjectCircle","updateRadius","subjectRect","updateWidth","updateHeight","rHandles","subjectThreshold","subjectBadge","_ref$subjectData","_ref$type","typeSettings","notCornerOffset","placement","xleftcorner","xrightcorner","ytopcorner","ybottomcorner","xleft","xright","ytop","ybottom","circlebg","fill","pointer","notCornerPointerXY","bHandles","stroke","Type","dispatcher","noteContent","handler","addHandlers","component","name","offsetCornerX","offsetCornerY","init","mapX","mapY","builders","newWithClass","el","addAttrs","removeAttrs","currentAttrs","attributes","bboxWithoutHandles","offsetX","offsetY","subjectParams","_subject","_subject$components","_subject$handles","dragSubject","_this3","connectorParams","_connector","_connector$components","_connector$handles","endType","endScale","_this4","noteData","noteParams","lineType","_note","_note$components","_note$handles","dragNote","dragging","dragstarted","dragended","_noteAlignment","drawFunction","drawOnSVG","drawOnScreen","drawSubject","drawConnector","getNoteBBox","drawNoteContent","drawNote","sourceEvent","stopPropagation","_this5","customType","initialType","_init","_initialType","settings","_this6","d3NoteText","_Type","params","_this7","titleBBox","wrapLength","wrapSplitter","bgPadding","bgPaddingFinal","d3Callout","d3CalloutElbow","ThresholdMap","_d3Callout","lineHeight","selector","yOffset","collection","ids","annotationDispatcher","dispatch","sel","translatedAnnotations","draw","console","JSON","stringify","updateText","updatedAccessors","updateDisable","updateNotePadding","some","value2Angle","pointOnArc","indicatorTranslate","inner","rotation","indicatorTween","newAngle","d3Interpolate","arcTween","startInterpolate","endInterpolate","_Gauge","_d3Arc","_colorScale","scaleLinear","d3InterpolateHcl","_usageArc","_meanArc","_freeArc","_indInner","_indOuter","_centerTextG","_centerText","_bottomText","_tooltipG","_mainTooltip","tip","interrupt","datum","xOffset","annotationtip","d3Annotation","annotationCalloutElbow","calcSize","textElement","bb","widthTransform","heightTransform","calcWidth","maxDiameter","valueDescription","tickValueDescription","appendIndicator","titleDescription","colorDomain","colorRange","val","tickVal","tickValue","attrTween","emptyColor","tickColor","showTick","titleClickColor","titleColor","point2","Gauge","sortAscending","sortDescending","_Pie","_totalValue","d3LabelArc","_labelPositions","_smallValueLabelHeight","_labelWidthLimit","_quadIdxArr","_minLabelTop","_maxLabelBottom","_seriesValueFormatter","_seriesPercentageFormatter","tooltipTick_default","tooltipOffset_default","intersection","pointA","pointB","intersectCircle","calcOuterRadius","calcInnerRadius","innerRadius_exists","maxTextWidth","getLabelText","horizontalLimit","_size","showLabels","verticalLimit","minOuterRadius","calcSmallValueLabelHeight","totalVal","acc","smallCount","labelHeight","calcTotalValue","truncate","len","labelWidth","showSeriesValue","showSeriesPercentage","perc","selection2","strRow","selectByLabel","_slices","_labels","updateD3Pie","seriesValueFormat","seriesPercentageFormat","labelRadius","sortDataByValue","quad","getQuadrant","midAngle","mergedText","mid_angle","isLeftSide","adjustForOverlap","polyline","outerRadiusDelta","pos1","centerOnLabels","normalizeRadians","radians","rad","gY","gY2","heightDiff","absTop","yShift","prevTop","degreesToRadians","Pie","_HalfPie","_pos","_target","SVGElement","_widgetScale","HalfPie","_Heat","_domForeignObject","_domCanvas","_heat","radiusX","radiusY","simpleheat","maxWeight","maxWeight_exists","gradient","reversePalette","defaultGradient","radiusAsPercent","clear","blur","minOpacity","Heat","canvas","_canvas","document","getElementById","_ctx","getContext","_width","_height","_max","_data","Palette","rainbow","rX","rY","ellipse","_ellipse","_createCanvas","ctx","rX2","_r","rY2","shadowOffsetX","shadowOffsetY","shadowBlur","shadowColor","beginPath","grad","createLinearGradient","addColorStop","fillStyle","fillRect","_grad","getImageData","clearRect","globalAlpha","drawImage","colored","_colorize","putImageData","pixels","createElement","thirdPi","angles","d3HexBin","hexbin","binsById","bins","isNaN","py1","px1","pi2","pj2","px2","py2","bin","hexagon","centers","mesh","fragment","_HexBin","_hexbin","I2DAggrChart","tooltipValueFormat_default","seriesExtent","labelExtent","binSize","dataPoints","hexBinPoints","minBinPoints","maxBinPoints","HexBin","_Line","Line","_QuarterPie","QuarterPie","_QuartileCandlestick","_g","_leftLine","_rightLine","_midLine","_midOuterRect","_midInnerRect1","_midInnerRect2","_q0text","_q1text","_q2text","_q3text","_q4text","_q0val","_q1val","_q2val","_q3val","_q4val","valueSize","lineWidth","domainSize","edgePadding","candleWidth","candleWidth_exists","roundedCorners","q0x","q1x","q2x","q3x","dataTop","dataBottom","upperTextRotation","lowerTextRotation","textPadding","labelFontSize","sz","q4x","transX","transY","rotate","textScale","labelAnchor","innerRectColor","showValues","QuartileCandlestick","_Radar","setPointAttributes","half_size","half_h","half_w","domain_points","degrees2radians","max_label_h","max_label_w","isize","labels","max_val","xy","polar2cartesian","labelPaddingRatio","text_anchor","domains","value_guides","valueGuideRatios","mult","poly_points","domain_point","row_idx","value_guide_text","series_polygons","fillOpacity","col_idx","val_mult","point_elm","data_row","row_obj","pointElement","theta","cartesian2polar","radians2degrees","point_in_polygon","vs","inside","Radar","_RadialBar","_domainScale","_valueScale","_arcs","_axialAxis","_radialAxis","valueDomainHigh_exists","valueDomainHigh","valueMaxAngle","chartRadius","domainData","domainPadding","domainCircles","domainText","valueLines","degrees","valueColumn","transitionDelay","transitionDuration","indx","_current","RadialBar","palette","ordinal","myFormatter","num","strVal","_StatChart","_selectElement","_tickFormatter","_bellCurve","xAxisOverlapMode","xAxisTickFormat","yAxisHidden","_candle","stdDev","mean","standardDeviation","formatStdDev","quartile","quartiles","formatQ","mode","view","lazyRender","bellTicks","domainLow","domainHigh","sd","updateScatter","xAxisTicks","candleHeight","updateCandle","candleX","candleW","StatChart","_Step","TEXT","HTML","_Summary","_playIntervalIdx","_mainDiv","_headerDiv","_textDiv","_tag","playInterval","lookupFieldIdx","propID","defaultIdx","lookupFieldText","currentRow","summaryData","labelFieldIdx","hideLabel","iconFieldIdx","valueFieldIdx","moreIconIdx","moreTextIdx","hideMore","colorFillIdx","colorStrokeIdx","formattedData","icon","moreIcon","moreText","colorStroke","fixedSize","minWidth_exists","minWidth","minHeight_exists","minHeight","iconFontSize","headerFontSize","valueHTML","textFontSize","labelHTML","moreDivs","moreDivsUpdate","hideMoreWrapper","moreFontSize","moreWrapperHeight_exists","moreWrapperHeight","d3Rgb","darker","moreTextHTML","innerHTML","Summary","iconColumn","moreIconColumn","moreTextColumn","colorFillColumn","colorStrokeColumn","_playIntervalHandle","_renderCount","_SummaryC","CanvasWidget","minDimension","sizeRatio","fontSizeRatio","labelIdx","labelColumn","valueIdx","bgColorIdx","fontColorIdx","iconIdx","bgColor","fontColor","mainFontSize","paddingSizeRatio","subFontSize","iconSize","iconSizeRatio","anchorMode","textBaseline","font","measurement","measureText","getTextOffsetX","fillText","drawIcon","iconBaseline","fontSizeMult","getTextOffsetY","iconOpacity","faChar","iconAnchor","valueOpacity","labelOpacity","SummaryC","cloudRadians","ch","d3Cloud","cloud","cloudText","cloudFont","cloudFontSize","fontStyle","cloudFontNormal","fontWeight","cloudRotate","cloudPadding","spiral","archimedeanSpiral","timeInterval","timer","cloudCanvas","strokeStyle","textAlign","board","tag","startX","startY","maxDelta","dt","dxdy","cloudCollide","collideRects","sprite","sw","lx","sx","msx","last","functor","contextAndRatio","zeroArray","cloudSprite","hasText","cloudBounds","spirals","di","maxh","save","cr","wcr","wsr","hcr","hsr","translate","strokeText","restore","xoff","yoff","w32","seen","seenRow","b0","b1","rectangularSpiral","archimedean","rectangular","_WordCloud","_prevOffsetX","_prevOffsetY","_prevZoom","_root","_d3Cloud","_d3Zoom","zoom","calcData","__viz_label","__viz_weight","__viz_row","d3Zoom","scaleExtent","evt","zoomed","scaler","scaleMode","fontSizeFrom","fontSizeTo","angleDomain","angleCount","angleFrom","angleTo","toLowerCase","trim","WordCloud","multiScale24Hours","fmtMs","timeFormat","fmtSec","fmtMin","fmtHour","fmtDay","fmtMonth","fmtYear","getMilliseconds","getSeconds","getMinutes","getHours","getDate","getMonth"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,47,48,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,94]}