dielines 0.8.0 → 0.8.1

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":"dielines.umd.cjs","sources":["../../pantograph/dist/QuadraticBezier-e116a2d6.js","../../pantograph/dist/Diagram-2450b2e6.js","../../pantograph/dist/draw-c7b2705c.js","../../pantograph/dist/wrapSVG-0ec8a111.js","../../pantograph/dist/pantograph.js","../src/Dieline.ts","../src/drawFlaps.ts","../src/FoldLockBump.ts","../src/linearDistribution.ts"],"sourcesContent":["var ue = Object.defineProperty;\nvar ce = (r, n, e) => n in r ? ue(r, n, { enumerable: !0, configurable: !0, writable: !0, value: e }) : r[n] = e;\nvar _ = (r, n, e) => (ce(r, typeof n != \"symbol\" ? n + \"\" : n, e), e);\nfunction Tt(r, n, e, t) {\n return r <= t && n >= e;\n}\nclass ot {\n constructor(n = 1 / 0, e = 1 / 0, t = -1 / 0, s = -1 / 0) {\n _(this, \"xMin\");\n _(this, \"yMin\");\n _(this, \"xMax\");\n _(this, \"yMax\");\n this.xMin = n, this.yMin = e, this.xMax = t, this.yMax = s;\n }\n get width() {\n return this.xMax - this.xMin;\n }\n get height() {\n return this.yMax - this.yMin;\n }\n get center() {\n return [(this.xMin + this.xMax) / 2, (this.yMin + this.yMax) / 2];\n }\n grow(n) {\n return new ot(\n this.xMin - n,\n this.yMin - n,\n this.xMax + n,\n this.yMax + n\n );\n }\n contains(n) {\n const [e, t] = n;\n return Tt(this.xMin, this.xMax, e, e) && Tt(this.yMin, this.yMax, t, t);\n }\n overlaps(n) {\n return Tt(this.xMin, this.xMax, n.xMin, n.xMax) && Tt(this.yMin, this.yMax, n.yMin, n.yMax);\n }\n addPoint(n) {\n const [e, t] = n;\n return new ot(\n Math.min(this.xMin, e),\n Math.min(this.yMin, t),\n Math.max(this.xMax, e),\n Math.max(this.yMax, t)\n );\n }\n merge(n) {\n return new ot(\n Math.min(this.xMin, n.xMin),\n Math.min(this.yMin, n.yMin),\n Math.max(this.xMax, n.xMax),\n Math.max(this.yMax, n.yMax)\n );\n }\n intersection(n) {\n return new ot(\n Math.max(this.xMin, n.xMin),\n Math.max(this.yMin, n.yMin),\n Math.min(this.xMax, n.xMax),\n Math.min(this.yMax, n.yMax)\n );\n }\n}\nfunction Dt(r) {\n return r.reduce((n, e) => n.addPoint(e), new ot());\n}\nconst Gt = (r, n = 1e-9) => {\n let e = r;\n return Math.abs(r) < n && (e = 0), e.toFixed(-Math.log10(n));\n};\nfunction ie(r, n = 1e-9) {\n return Array.from(\n new Map(\n r.map(([e, t]) => [\n `[${Gt(e, n)},${Gt(t, n)}]`,\n [e, t]\n ])\n ).values()\n );\n}\nconst Yt = Math.PI / 180, fe = 180 / Math.PI, D = (r) => `[${r[0]}, ${r[1]}]`, N = ([r, n], [e, t], s = 1e-9) => Math.abs(r - e) <= s && Math.abs(n - t) <= s, nt = ([r, n], [e, t]) => [r + e, n + t], O = ([r, n], [e, t]) => [r - e, n - t], _t = ([r, n]) => r * r + n * n, us = ([r, n]) => Math.sqrt(_t([r, n])), at = ([r, n], e) => [r * e, n * e], Mt = ([r, n], [e, t] = [0, 0]) => (r - e) ** 2 + (n - t) ** 2, Y = (r, n = [0, 0]) => Math.sqrt(Mt(r, n));\nfunction dt([r, n], [e, t]) {\n return r * t - n * e;\n}\nfunction Xt([r, n], [e, t]) {\n return r * e + n * t;\n}\nfunction W([r, n]) {\n const e = Y([r, n]);\n return [r / e, n / e];\n}\nfunction yt(r, n) {\n const e = Math.cos(n) * r, t = Math.sin(n) * r;\n return [e, t];\n}\nfunction me([r, n]) {\n return Math.atan2(n, r);\n}\nfunction ge(r) {\n const n = Y(r), e = me(r);\n return [n, e];\n}\nfunction re(r, n, e = 1e-9) {\n const t = dt(r, n), s = _t(r), i = _t(n);\n return t * t < s * i * e * e;\n}\nfunction K(r) {\n return [-r[1], r[0]];\n}\nfunction $t(r) {\n return [r[1], -r[0]];\n}\nfunction we(r, n, e) {\n return N(e, r) || re(O(e, r), n);\n}\nconst ut = (r, n) => {\n const [e, t, s, i, o, h, a, l, c] = r, [u, m, d, p, g, M, f, w, P] = n;\n return [\n e * u + t * p + s * f,\n e * m + t * g + s * w,\n e * d + t * M + s * P,\n i * u + o * p + h * f,\n i * m + o * g + h * w,\n i * d + o * M + h * P,\n a * u + l * p + c * f,\n a * m + l * g + c * w,\n a * d + l * M + c * P\n ];\n}, pe = (r) => {\n const [n, e, t, s, i, o, h, a, l] = r, c = n * (i * l - o * a) - e * (s * l - o * h) + t * (s * a - i * h);\n return [\n (i * l - o * a) / c,\n (t * a - e * l) / c,\n (e * o - t * i) / c,\n (o * h - s * l) / c,\n (n * l - t * h) / c,\n (t * s - n * o) / c,\n (s * a - i * h) / c,\n (e * h - n * a) / c,\n (n * i - e * s) / c\n ];\n}, de = (r) => {\n const [n, e, t, s, i, o, h, a, l] = r;\n return [n, s, h, e, i, a, t, o, l];\n};\nclass X {\n constructor(n) {\n _(this, \"_matrix\", [1, 0, 0, 0, 1, 0, 0, 0, 1]);\n n && (this._matrix = [...n]);\n }\n clone() {\n return new X(this._matrix);\n }\n transpose() {\n return this._matrix = de(this._matrix), this;\n }\n inverse() {\n return this._matrix = pe(this._matrix), this;\n }\n translate(n, e) {\n return this._matrix = ut(this._matrix, [1, 0, n, 0, 1, e, 0, 0, 1]), this;\n }\n rotate(n, e) {\n const t = Math.cos(n), s = Math.sin(n), i = [t, -s, 0, s, t, 0, 0, 0, 1];\n return e && this.translate(e[0], e[1]), this._matrix = ut(this._matrix, i), e && this.translate(-e[0], -e[1]), this;\n }\n mirrorX() {\n return this._matrix = ut(this._matrix, [1, 0, 0, 0, -1, 0, 0, 0, 1]), this;\n }\n mirrorY() {\n return this._matrix = ut(this._matrix, [-1, 0, 0, 0, 1, 0, 0, 0, 1]), this;\n }\n mirrorLine(n, e) {\n const [t, s] = n, i = Math.atan2(s, t);\n return e && this.translate(e[0], e[1]), this.rotate(i), this.mirrorX(), this.rotate(-i), e && this.translate(-e[0], -e[1]), this;\n }\n mirrorCenter(n) {\n return n && this.translate(n[0], n[1]), this._matrix = ut(this._matrix, [-1, 0, 0, 0, -1, 0, 0, 0, 1]), n && this.translate(-n[0], -n[1]), this;\n }\n scale(n, e) {\n return e && this.translate(e[0], e[1]), this._matrix = ut(this._matrix, [n, 0, 0, 0, n, 0, 0, 0, 1]), e && this.translate(-e[0], -e[1]), this;\n }\n transform(n) {\n const [e, t] = n, [s, i, o, h, a, l] = this._matrix;\n return [s * e + i * t + o, h * e + a * t + l];\n }\n transformAngle(n) {\n const [e, t] = this.transform([Math.cos(n), Math.sin(n)]), [s, i] = this.transform([0, 0]);\n return Math.atan2(t - i, e - s);\n }\n keepsOrientation() {\n const [n, , , , e] = this._matrix;\n return n * e > 0;\n }\n scaleFactor() {\n const [n, , , e] = this._matrix;\n return Math.sqrt(n * n + e * e);\n }\n}\nclass Pe {\n translateX(n) {\n const e = new X().translate(n, 0);\n return this.transform(e);\n }\n translateY(n) {\n const e = new X().translate(0, n);\n return this.transform(e);\n }\n translate(n, e) {\n const t = new X().translate(n, e);\n return this.transform(t);\n }\n translateTo([n, e]) {\n const t = new X().translate(n, e);\n return this.transform(t);\n }\n rotate(n, e) {\n const t = new X().rotate(\n n * Yt,\n e\n );\n return this.transform(t);\n }\n scale(n, e) {\n const t = new X().scale(n, e);\n return this.transform(t);\n }\n mirrorCenter(n) {\n const e = new X().mirrorCenter(n);\n return this.transform(e);\n }\n mirror(n = \"x\", e) {\n const t = new X();\n return n === \"x\" ? t.mirrorX() : n === \"y\" ? t.mirrorY() : t.mirrorLine(n, e), this.transform(t);\n }\n}\nclass Et extends Pe {\n constructor(e, t) {\n super();\n _(this, \"precision\", 1e-9);\n this.firstPoint = e, this.lastPoint = t, this.firstPoint = e, this.lastPoint = t;\n }\n get repr() {\n return `${this.segmentType} ${D(this.firstPoint)} - ${D(\n this.lastPoint\n )}`;\n }\n get info() {\n return this.repr;\n }\n [Symbol.for(\"nodejs.util.inspect.custom\")]() {\n return this.repr;\n }\n}\nclass tt extends Et {\n constructor() {\n super(...arguments);\n _(this, \"segmentType\", \"LINE\");\n _(this, \"_V\", null);\n _(this, \"_slope\", null);\n _(this, \"_yIntercept\", null);\n _(this, \"_boundingBox\", null);\n }\n isValidParameter(e) {\n const t = this.length * this.precision;\n return e >= -t && 1 - e >= -t;\n }\n paramPoint(e) {\n return nt(this.firstPoint, at(this.V, e));\n }\n get length() {\n return Y(this.firstPoint, this.lastPoint);\n }\n get squareLength() {\n return Mt(this.firstPoint, this.lastPoint);\n }\n get V() {\n return this._V === null && (this._V = O(this.lastPoint, this.firstPoint)), this._V;\n }\n get slope() {\n if (this._slope === null) {\n const [e, t] = this.V;\n this._slope = t / e;\n }\n return this._slope;\n }\n get yIntercept() {\n return this._yIntercept === null && (this._yIntercept = this.firstPoint[1] - this.slope * this.firstPoint[0]), this._yIntercept;\n }\n get midPoint() {\n return nt(this.firstPoint, at(this.V, 0.5));\n }\n isSame(e) {\n return e instanceof tt ? N(this.firstPoint, e.firstPoint) && N(this.lastPoint, e.lastPoint) || N(this.lastPoint, e.firstPoint) && N(this.firstPoint, e.lastPoint) : !1;\n }\n clone() {\n return new tt(this.firstPoint, this.lastPoint);\n }\n reverse() {\n return new tt(this.lastPoint, this.firstPoint);\n }\n get boundingBox() {\n return this._boundingBox === null && (this._boundingBox = new ot(\n Math.min(this.firstPoint[0], this.lastPoint[0]) - this.precision,\n Math.min(this.firstPoint[1], this.lastPoint[1]) - this.precision,\n Math.max(this.firstPoint[0], this.lastPoint[0]) + this.precision,\n Math.max(this.firstPoint[1], this.lastPoint[1]) + this.precision\n )), this._boundingBox;\n }\n distanceFrom(e) {\n const t = O(e, this.firstPoint), s = Xt(t, this.V) / this.squareLength;\n if (s < 0)\n return Y(e, this.firstPoint);\n if (s > 1)\n return Y(e, this.lastPoint);\n const i = this.paramPoint(s);\n return Y(e, i);\n }\n isOnSegment(e) {\n if (N(e, this.firstPoint, this.precision))\n return !0;\n const t = O(e, this.firstPoint);\n if (!re(this.V, t))\n return !1;\n const s = Xt(t, this.V) / this.squareLength;\n return this.isValidParameter(s);\n }\n gradientAt(e) {\n return this.V;\n }\n tangentAt(e) {\n if (!this.isOnSegment(e))\n throw new Error(\"Point is not on segment\");\n return W(this.V);\n }\n get normalVector() {\n return K(W(this.V));\n }\n get tangentAtFirstPoint() {\n return W(this.V);\n }\n get tangentAtLastPoint() {\n return W(this.V);\n }\n splitAt(e) {\n let t;\n if (Array.isArray(e) && e.length === 0)\n return [this];\n Array.isArray(e[0]) ? t = e : t = [e], t.forEach((l) => {\n if (!this.isOnSegment(l))\n throw new Error(\n `Point ${D(l)} is not on segment ${this.repr}`\n );\n });\n const s = [this.firstPoint, ...t, this.lastPoint], i = ie(s), o = this.lastPoint[0] - this.firstPoint[0];\n let h = Math.sign(o), a = 0;\n return Math.abs(o) < this.precision && (h = Math.sign(this.lastPoint[1] - this.firstPoint[1]), a = 1), i.sort(\n (l, c) => h * (l[a] - c[a])\n ), i.flatMap((l, c) => c === i.length - 1 ? [] : new tt(l, i[c + 1]));\n }\n transform(e) {\n return new tt(\n e.transform(this.firstPoint),\n e.transform(this.lastPoint)\n );\n }\n}\nfunction Me(r) {\n return Array.from(Array(r).keys());\n}\nfunction Nt(r) {\n const n = Math.min(...r.map((e) => e.length));\n return Me(n).map((e) => r.map((t) => t[e]));\n}\nfunction lt(r, n = 1e-9) {\n return r < 0 ? r + 2 * Math.PI : r >= 2 * Math.PI ? r % (2 * Math.PI) : r > 2 * Math.PI - n ? 0 : r;\n}\nfunction xt(r, n, e, t = 1e-9) {\n let s = n - r;\n return e && (s = -s), s < 0 && (s += 2 * Math.PI), s > 2 * Math.PI - t ? 0 : s;\n}\nconst Ut = (r, n, e) => {\n const t = dt(r.V, n.V), s = _t(r.V), i = _t(n.V), o = e ? e * e : r.precision * n.precision;\n if (t * t < s * i * o)\n return \"parallel\";\n const h = O(n.firstPoint, r.firstPoint), a = dt(h, n.V) / t, l = dt(h, r.V) / t;\n return {\n intersectionParam1: a,\n intersectionParam2: l\n };\n};\nfunction cs(r, n, e = !1, t) {\n const s = Ut(r, n, t);\n if (s === \"parallel\") {\n if (!e)\n return null;\n if (r.isSame(n))\n return r;\n const h = ie(\n [\n n.isOnSegment(r.firstPoint) ? r.firstPoint : null,\n n.isOnSegment(r.lastPoint) ? r.lastPoint : null,\n r.isOnSegment(n.firstPoint) ? n.firstPoint : null,\n r.isOnSegment(n.lastPoint) ? n.lastPoint : null\n ].filter((a) => a !== null)\n ).sort((a, l) => a[0] - l[0]);\n if (h.length === 0)\n return null;\n if (h.length === 1)\n return null;\n if (h.length === 2)\n return new tt(h[0], h[1]);\n throw console.error(h), new Error(\n \"Unexpected number of points while intersecting parallel lines\"\n );\n }\n const { intersectionParam1: i, intersectionParam2: o } = s;\n return !r.isValidParameter(i) || !n.isValidParameter(o) ? null : r.paramPoint(i);\n}\nconst vt = (r, n) => {\n const e = O(r, n);\n return ge(e);\n};\nclass st extends Et {\n constructor(e, t, s, i = !1, { ignoreChecks: o = !1 } = {}) {\n super(e, t);\n _(this, \"segmentType\", \"ARC\");\n _(this, \"center\");\n _(this, \"clockwise\");\n _(this, \"_coefficients\", null);\n _(this, \"_angularLength\", null);\n _(this, \"_radius\", null);\n _(this, \"_firstAngle\", null);\n _(this, \"_lastAngle\", null);\n _(this, \"_boundingBox\", null);\n if (this.center = s, this.clockwise = i, !o) {\n if (N(e, t))\n throw new Error(\"Invalid arc, cannot be a full circle\");\n if (Math.abs(this.radius - Y(this.lastPoint, this.center)) > this.precision)\n throw new Error(\n `Invalid arc, radius does not match between ${D(\n e\n )} and ${D(t)}} (center ${D(s)})`\n );\n }\n }\n get info() {\n return `ARC(${D(this.firstPoint)}, ${D(\n this.lastPoint\n )}, ${D(this.center)}, ${this.clockwise ? \"CW\" : \"CCW\"})`;\n }\n get coefficients() {\n if (this._coefficients === null) {\n const [e, t] = this.center, s = this.radius * this.radius;\n this._coefficients = {\n x2: 1 / s,\n xy: 0,\n y2: 1 / s,\n x: -(2 * e) / s,\n y: -(2 * t) / s,\n c: (e * e + t * t - s) / s\n };\n }\n return this._coefficients;\n }\n isValidParameter(e) {\n return 1 - e >= -this.precision && e >= -this.precision;\n }\n angleToParam(e) {\n return xt(this.firstAngle, lt(e), this.clockwise) / this.angularLength;\n }\n get angularLength() {\n return this._angularLength || (this._angularLength = xt(\n this.firstAngle,\n this.lastAngle,\n this.clockwise\n )), this._angularLength;\n }\n paramPoint(e) {\n return nt(\n this.center,\n yt(\n this.radius,\n this.firstAngle + e * this.angularLength * (this.clockwise ? -1 : 1)\n )\n );\n }\n pointToParam(e) {\n const [t, s] = vt(e, this.center);\n if (Math.abs(t - this.radius) > this.precision)\n throw new Error(\n `Point ${D(e)} is not on segment ${this.repr}`\n );\n const i = this.angleToParam(s);\n if (!this.isValidParameter(i))\n throw new Error(\n `Point ${D(e)} is not on segment ${this.repr}`\n );\n return i;\n }\n get radius() {\n return this._radius === null && (this._radius = Y(this.firstPoint, this.center)), this._radius;\n }\n get firstAngle() {\n if (this._firstAngle === null) {\n const [e, t] = O(this.firstPoint, this.center);\n this._firstAngle = lt(Math.atan2(t, e));\n }\n return this._firstAngle;\n }\n get lastAngle() {\n if (this._lastAngle === null) {\n const [e, t] = O(this.lastPoint, this.center);\n this._lastAngle = lt(Math.atan2(t, e));\n }\n return this._lastAngle;\n }\n get length() {\n return this.radius * this.angularLength;\n }\n get squareLength() {\n return this.length * this.length;\n }\n get midPoint() {\n return this.paramPoint(0.5);\n }\n isSame(e) {\n return !(e instanceof st) || !N(this.center, e.center) ? !1 : N(this.firstPoint, e.firstPoint) && N(this.lastPoint, e.lastPoint) && this.clockwise === e.clockwise || N(this.lastPoint, e.firstPoint) && N(this.firstPoint, e.lastPoint) && this.clockwise === !e.clockwise;\n }\n clone() {\n return new st(\n this.firstPoint,\n this.lastPoint,\n this.center,\n this.clockwise\n );\n }\n reverse() {\n return new st(\n this.lastPoint,\n this.firstPoint,\n this.center,\n !this.clockwise\n );\n }\n get boundingBox() {\n if (this._boundingBox === null) {\n const e = this.radius + this.precision, t = (s) => this.isValidParameter(this.angleToParam(s));\n this._boundingBox = new ot(\n t(Math.PI) ? this.center[0] - e : Math.min(this.firstPoint[0], this.lastPoint[0]) - this.precision,\n t(Math.PI * 1.5) ? this.center[1] - e : Math.min(this.firstPoint[1], this.lastPoint[1]) - this.precision,\n t(0) ? this.center[0] + e : Math.max(this.firstPoint[0], this.lastPoint[0]) + this.precision,\n t(Math.PI / 2) ? this.center[1] + e : Math.max(this.firstPoint[1], this.lastPoint[1]) + this.precision\n );\n }\n return this._boundingBox;\n }\n distanceFrom(e) {\n const [t, s] = vt(e, this.center);\n return this.isValidParameter(this.angleToParam(s)) ? Math.abs(t - this.radius) : Math.sqrt(\n Math.min(\n Mt(e, this.firstPoint),\n Mt(e, this.lastPoint)\n )\n );\n }\n isOnSegment(e) {\n if (N(e, this.firstPoint) || N(e, this.lastPoint))\n return !0;\n const [t, s] = vt(e, this.center);\n if (Math.abs(t - this.radius) > this.precision)\n return !1;\n const i = this.angleToParam(s);\n return this.isValidParameter(i);\n }\n gradientAt(e) {\n const t = this.firstAngle + e * this.angularLength * (this.clockwise ? -1 : 1), s = this.radius * this.angularLength, i = -s * Math.sin(t), o = s * Math.cos(t);\n return this.clockwise ? [-i, -o] : [i, o];\n }\n tangentAt(e) {\n const [t, s] = vt(e, this.center);\n if (Math.abs(t - this.radius) > this.precision)\n throw new Error(\"Point is not on the arc\");\n const i = this.angleToParam(s);\n if (!this.isValidParameter(i))\n throw new Error(\"Point is not on the arc\");\n const o = yt(1, s);\n return (this.clockwise ? $t : K)(W(o));\n }\n get tangentAtFirstPoint() {\n const e = yt(1, this.firstAngle);\n return (this.clockwise ? $t : K)(W(e));\n }\n get tangentAtLastPoint() {\n const e = yt(1, this.lastAngle);\n return (this.clockwise ? $t : K)(W(e));\n }\n splitAt(e) {\n let t;\n if (Array.isArray(e) && e.length === 0)\n return [this];\n Array.isArray(e[0]) ? t = e : t = [e];\n const i = [0, 1, ...t.map((a) => this.pointToParam(a))], o = new Map(\n Nt([i, [this.firstPoint, this.lastPoint, ...t]])\n );\n i.sort((a, l) => a - l);\n let h = null;\n return i.flatMap((a, l) => {\n if (l === i.length - 1)\n return [];\n const c = i[l + 1];\n if (c - a < this.precision)\n return h === null && (h = a), [];\n const u = h === null ? a : h, m = new st(\n o.get(u) || this.paramPoint(u),\n o.get(c) || this.paramPoint(c),\n this.center,\n this.clockwise\n );\n return h = null, m;\n });\n }\n transform(e) {\n return new st(\n e.transform(this.firstPoint),\n e.transform(this.lastPoint),\n e.transform(this.center),\n e.keepsOrientation() ? this.clockwise : !this.clockwise\n );\n }\n}\nfunction fs(r, n, e) {\n const t = new tt(n, r), s = new tt(n, e), i = K(t.tangentAtFirstPoint), o = K(s.tangentAtLastPoint), h = Ut(\n { firstPoint: t.midPoint, V: i, precision: 1e-9 },\n { firstPoint: s.midPoint, V: o, precision: 1e-9 }\n );\n if (h === \"parallel\")\n throw new Error(\"Cannot create an arc from three colinear points\");\n const a = dt(\n O(r, n),\n O(e, n)\n ) > 0;\n return new st(\n r,\n e,\n nt(t.midPoint, at(i, h.intersectionParam1)),\n a,\n { ignoreChecks: !0 }\n );\n}\nfunction ms(r, n, e) {\n const t = new tt(n, r), s = K(t.tangentAtFirstPoint), i = Ut(\n { firstPoint: t.midPoint, V: s, precision: 1e-9 },\n {\n firstPoint: r,\n V: K(e),\n precision: 1e-9\n }\n );\n if (i === \"parallel\")\n throw new Error(\"Cannot create an arc from three colinear points\");\n const o = nt(\n t.midPoint,\n at(s, i.intersectionParam1)\n ), h = dt(\n O(o, r),\n O(o, nt(r, e))\n ) < 0;\n return new st(r, n, o, h, {\n ignoreChecks: !0\n });\n}\nconst Zt = 1e-21, It = 1.618034;\nfunction Kt(r, n = 0, e = 1, t = 110, s = 1e3) {\n let i, o, h, a, l, c, u, m, d, p, g, M, f;\n for (o = r(n), h = r(e), o < h && ([n, e] = [e, n], [o, h] = [h, o]), f = e + It * (e - n), a = r(f), l = 3, u = 0; a < h; ) {\n if (m = (e - n) * (h - a), d = (e - f) * (h - o), p = d - m, Math.abs(p) < Zt ? i = 2 * Zt : i = 2 * p, g = e - ((e - f) * d - (e - n) * m) / i, M = e + t * (f - e), u > s)\n throw new Error(\"Too many iterations.\");\n if (u += 1, (g - f) * (e - g) > 0) {\n if (c = r(g), l += 1, c < a)\n return n = e, e = g, o = h, h = c, [n, e, f, o, h, a, l];\n if (c > h)\n return f = g, a = c, [n, e, f, o, h, a, l];\n g = f + It * (f - e), c = r(g), l += 1;\n } else\n (g - M) * (M - f) >= 0 ? (g = M, c = r(g), l += 1) : (g - M) * (f - g) > 0 ? (c = r(g), l += 1, c < a && (e = f, f = g, g = f + It * (f - e), h = a, a = c, c = r(g), l += 1)) : (g = f + It * (f - e), c = r(g), l += 1);\n n = e, e = f, f = g, o = h, h = a, a = c;\n }\n return [n, e, f, o, h, a, l];\n}\nconst Jt = 0.381966, ye = 1e-11;\nclass _e {\n constructor(n, e = 148e-10, t = 500) {\n _(this, \"xmin\");\n _(this, \"fval\");\n _(this, \"iter\");\n _(this, \"funcalls\");\n _(this, \"brack\");\n this.func = n, this.tol = e, this.maxiter = t, this.func = n, this.tol = e, this.maxiter = t, this.xmin = 1 / 0, this.fval = 1 / 0, this.iter = 0, this.funcalls = 0, this.brack = null;\n }\n setBracket(n = null) {\n this.brack = n;\n }\n getBracketInfo() {\n let n, e, t, s, i, o, h;\n const a = this.func, l = this.brack;\n if (l === null)\n [i, o, h, n, e, t, s] = Kt(a);\n else if (l.length === 2)\n [i, o, h, n, e, t, s] = Kt(a, l[0], l[1]);\n else if (l.length === 3) {\n if ([i, o, h] = l, i > h && ([h, i] = [i, h]), !(i < o && o < h))\n throw new Error(\"Not a bracketing interval.\");\n if (n = a(i), e = a(o), t = a(h), !(e < n && e < t))\n throw new Error(\"Not a bracketing interval.\");\n s = 3;\n } else\n throw new Error(\n \"Bracketing interval must be length 2 or 3 sequence.\"\n );\n return [i, o, h, n, e, t, s];\n }\n optimize() {\n const n = this.func;\n let [e, t, s, , , , i] = this.getBracketInfo(), o = t, h = t, a = t, l = n(o), c = l, u = l, m, d;\n e < s ? (m = e, d = s) : (m = s, d = e);\n let p = 0;\n i = 1;\n let g = 0, M = 0, f;\n for (; g < this.maxiter; ) {\n const w = this.tol * Math.abs(o) + ye, P = 2 * w, E = 0.5 * (m + d);\n if (Math.abs(o - E) < P - 0.5 * (d - m))\n break;\n if (Math.abs(p) <= w)\n o >= E ? p = m - o : p = d - o, M = Jt * p;\n else {\n const F = (o - h) * (u - c);\n let j = (o - a) * (u - l), y = (o - a) * j - (o - h) * F;\n j = 2 * (j - F), j > 0 && (y = -y), j = Math.abs(j);\n const x = p;\n p = M, y > j * (m - o) && y < j * (d - o) && Math.abs(y) < Math.abs(0.5 * j * x) ? (M = y * 1 / j, f = o + M, (f - m < P || d - f < P) && (E - o >= 0 ? M = w : M = -w)) : (o >= E ? p = m - o : p = d - o, M = Jt * p);\n }\n Math.abs(M) < w ? M >= 0 ? f = o + w : f = o - w : f = o + M;\n const b = n(f);\n i += 1, b > u ? (f < o ? m = f : d = f, b <= l || h === o ? (a = h, h = f, c = l, l = b) : (b <= c || a === o || a === h) && (a = f, c = b)) : (f >= o ? m = o : d = o, a = h, h = o, o = f, c = l, l = u, u = b), g += 1;\n }\n this.xmin = o, this.fval = u, this.iter = g, this.funcalls = i;\n }\n results() {\n return {\n argMin: this.xmin,\n fMin: this.fval,\n iterations: this.iter,\n funcCalls: this.funcalls\n };\n }\n run() {\n return this.optimize(), this.results();\n }\n}\nfunction oe(r, n = 1e-8, e = 1e3) {\n const t = new _e(r, n, e);\n return t.setBracket([0, 1]), t.run();\n}\nconst Ee = Object.prototype.toString;\nfunction Z(r) {\n const n = Ee.call(r);\n return n.endsWith(\"Array]\") && !n.includes(\"Big\");\n}\nfunction be(r) {\n var n = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n if (!Z(r))\n throw new TypeError(\"input must be an array\");\n if (r.length === 0)\n throw new TypeError(\"input must not be empty\");\n var e = n.fromIndex, t = e === void 0 ? 0 : e, s = n.toIndex, i = s === void 0 ? r.length : s;\n if (t < 0 || t >= r.length || !Number.isInteger(t))\n throw new Error(\"fromIndex must be a positive integer smaller than length\");\n if (i <= t || i > r.length || !Number.isInteger(i))\n throw new Error(\"toIndex must be an integer greater than fromIndex and at most equal to length\");\n for (var o = r[t], h = t + 1; h < i; h++)\n r[h] > o && (o = r[h]);\n return o;\n}\nfunction je(r) {\n var n = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n if (!Z(r))\n throw new TypeError(\"input must be an array\");\n if (r.length === 0)\n throw new TypeError(\"input must not be empty\");\n var e = n.fromIndex, t = e === void 0 ? 0 : e, s = n.toIndex, i = s === void 0 ? r.length : s;\n if (t < 0 || t >= r.length || !Number.isInteger(t))\n throw new Error(\"fromIndex must be a positive integer smaller than length\");\n if (i <= t || i > r.length || !Number.isInteger(i))\n throw new Error(\"toIndex must be an integer greater than fromIndex and at most equal to length\");\n for (var o = r[t], h = t + 1; h < i; h++)\n r[h] < o && (o = r[h]);\n return o;\n}\nfunction Qt(r) {\n var n = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n if (Z(r)) {\n if (r.length === 0)\n throw new TypeError(\"input must not be empty\");\n } else\n throw new TypeError(\"input must be an array\");\n var e;\n if (n.output !== void 0) {\n if (!Z(n.output))\n throw new TypeError(\"output option must be an array if specified\");\n e = n.output;\n } else\n e = new Array(r.length);\n var t = je(r), s = be(r);\n if (t === s)\n throw new RangeError(\"minimum and maximum input values are equal. Cannot rescale a constant array\");\n var i = n.min, o = i === void 0 ? n.autoMinMax ? t : 0 : i, h = n.max, a = h === void 0 ? n.autoMinMax ? s : 1 : h;\n if (o >= a)\n throw new RangeError(\"min option must be smaller than max option\");\n for (var l = (a - o) / (s - t), c = 0; c < r.length; c++)\n e[c] = (r[c] - t) * l + o;\n return e;\n}\nconst qt = \" \".repeat(2), he = \" \".repeat(4);\nfunction Se() {\n return le(this);\n}\nfunction le(r, n = {}) {\n const {\n maxRows: e = 15,\n maxColumns: t = 10,\n maxNumSize: s = 8,\n padMinus: i = \"auto\"\n } = n;\n return `${r.constructor.name} {\n${qt}[\n${he}${ke(r, e, t, s, i)}\n${qt}]\n${qt}rows: ${r.rows}\n${qt}columns: ${r.columns}\n}`;\n}\nfunction ke(r, n, e, t, s) {\n const { rows: i, columns: o } = r, h = Math.min(i, n), a = Math.min(o, e), l = [];\n if (s === \"auto\") {\n s = !1;\n t:\n for (let c = 0; c < h; c++)\n for (let u = 0; u < a; u++)\n if (r.get(c, u) < 0) {\n s = !0;\n break t;\n }\n }\n for (let c = 0; c < h; c++) {\n let u = [];\n for (let m = 0; m < a; m++)\n u.push(Re(r.get(c, m), t, s));\n l.push(`${u.join(\" \")}`);\n }\n return a !== o && (l[l.length - 1] += ` ... ${o - e} more columns`), h !== i && l.push(`... ${i - n} more rows`), l.join(`\n${he}`);\n}\nfunction Re(r, n, e) {\n return (r >= 0 && e ? ` ${Ht(r, n - 1)}` : Ht(r, n)).padEnd(n);\n}\nfunction Ht(r, n) {\n let e = r.toString();\n if (e.length <= n)\n return e;\n let t = r.toFixed(n);\n if (t.length > n && (t = r.toFixed(Math.max(0, n - (t.length - n)))), t.length <= n && !t.startsWith(\"0.000\") && !t.startsWith(\"-0.000\"))\n return t;\n let s = r.toExponential(n);\n return s.length > n && (s = r.toExponential(Math.max(0, n - (s.length - n)))), s.slice(0);\n}\nfunction Te(r, n) {\n r.prototype.add = function(t) {\n return typeof t == \"number\" ? this.addS(t) : this.addM(t);\n }, r.prototype.addS = function(t) {\n for (let s = 0; s < this.rows; s++)\n for (let i = 0; i < this.columns; i++)\n this.set(s, i, this.get(s, i) + t);\n return this;\n }, r.prototype.addM = function(t) {\n if (t = n.checkMatrix(t), this.rows !== t.rows || this.columns !== t.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let s = 0; s < this.rows; s++)\n for (let i = 0; i < this.columns; i++)\n this.set(s, i, this.get(s, i) + t.get(s, i));\n return this;\n }, r.add = function(t, s) {\n return new n(t).add(s);\n }, r.prototype.sub = function(t) {\n return typeof t == \"number\" ? this.subS(t) : this.subM(t);\n }, r.prototype.subS = function(t) {\n for (let s = 0; s < this.rows; s++)\n for (let i = 0; i < this.columns; i++)\n this.set(s, i, this.get(s, i) - t);\n return this;\n }, r.prototype.subM = function(t) {\n if (t = n.checkMatrix(t), this.rows !== t.rows || this.columns !== t.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let s = 0; s < this.rows; s++)\n for (let i = 0; i < this.columns; i++)\n this.set(s, i, this.get(s, i) - t.get(s, i));\n return this;\n }, r.sub = function(t, s) {\n return new n(t).sub(s);\n }, r.prototype.subtract = r.prototype.sub, r.prototype.subtractS = r.prototype.subS, r.prototype.subtractM = r.prototype.subM, r.subtract = r.sub, r.prototype.mul = function(t) {\n return typeof t == \"number\" ? this.mulS(t) : this.mulM(t);\n }, r.prototype.mulS = function(t) {\n for (let s = 0; s < this.rows; s++)\n for (let i = 0; i < this.columns; i++)\n this.set(s, i, this.get(s, i) * t);\n return this;\n }, r.prototype.mulM = function(t) {\n if (t = n.checkMatrix(t), this.rows !== t.rows || this.columns !== t.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let s = 0; s < this.rows; s++)\n for (let i = 0; i < this.columns; i++)\n this.set(s, i, this.get(s, i) * t.get(s, i));\n return this;\n }, r.mul = function(t, s) {\n return new n(t).mul(s);\n }, r.prototype.multiply = r.prototype.mul, r.prototype.multiplyS = r.prototype.mulS, r.prototype.multiplyM = r.prototype.mulM, r.multiply = r.mul, r.prototype.div = function(t) {\n return typeof t == \"number\" ? this.divS(t) : this.divM(t);\n }, r.prototype.divS = function(t) {\n for (let s = 0; s < this.rows; s++)\n for (let i = 0; i < this.columns; i++)\n this.set(s, i, this.get(s, i) / t);\n return this;\n }, r.prototype.divM = function(t) {\n if (t = n.checkMatrix(t), this.rows !== t.rows || this.columns !== t.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let s = 0; s < this.rows; s++)\n for (let i = 0; i < this.columns; i++)\n this.set(s, i, this.get(s, i) / t.get(s, i));\n return this;\n }, r.div = function(t, s) {\n return new n(t).div(s);\n }, r.prototype.divide = r.prototype.div, r.prototype.divideS = r.prototype.divS, r.prototype.divideM = r.prototype.divM, r.divide = r.div, r.prototype.mod = function(t) {\n return typeof t == \"number\" ? this.modS(t) : this.modM(t);\n }, r.prototype.modS = function(t) {\n for (let s = 0; s < this.rows; s++)\n for (let i = 0; i < this.columns; i++)\n this.set(s, i, this.get(s, i) % t);\n return this;\n }, r.prototype.modM = function(t) {\n if (t = n.checkMatrix(t), this.rows !== t.rows || this.columns !== t.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let s = 0; s < this.rows; s++)\n for (let i = 0; i < this.columns; i++)\n this.set(s, i, this.get(s, i) % t.get(s, i));\n return this;\n }, r.mod = function(t, s) {\n return new n(t).mod(s);\n }, r.prototype.modulus = r.prototype.mod, r.prototype.modulusS = r.prototype.modS, r.prototype.modulusM = r.prototype.modM, r.modulus = r.mod, r.prototype.and = function(t) {\n return typeof t == \"number\" ? this.andS(t) : this.andM(t);\n }, r.prototype.andS = function(t) {\n for (let s = 0; s < this.rows; s++)\n for (let i = 0; i < this.columns; i++)\n this.set(s, i, this.get(s, i) & t);\n return this;\n }, r.prototype.andM = function(t) {\n if (t = n.checkMatrix(t), this.rows !== t.rows || this.columns !== t.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let s = 0; s < this.rows; s++)\n for (let i = 0; i < this.columns; i++)\n this.set(s, i, this.get(s, i) & t.get(s, i));\n return this;\n }, r.and = function(t, s) {\n return new n(t).and(s);\n }, r.prototype.or = function(t) {\n return typeof t == \"number\" ? this.orS(t) : this.orM(t);\n }, r.prototype.orS = function(t) {\n for (let s = 0; s < this.rows; s++)\n for (let i = 0; i < this.columns; i++)\n this.set(s, i, this.get(s, i) | t);\n return this;\n }, r.prototype.orM = function(t) {\n if (t = n.checkMatrix(t), this.rows !== t.rows || this.columns !== t.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let s = 0; s < this.rows; s++)\n for (let i = 0; i < this.columns; i++)\n this.set(s, i, this.get(s, i) | t.get(s, i));\n return this;\n }, r.or = function(t, s) {\n return new n(t).or(s);\n }, r.prototype.xor = function(t) {\n return typeof t == \"number\" ? this.xorS(t) : this.xorM(t);\n }, r.prototype.xorS = function(t) {\n for (let s = 0; s < this.rows; s++)\n for (let i = 0; i < this.columns; i++)\n this.set(s, i, this.get(s, i) ^ t);\n return this;\n }, r.prototype.xorM = function(t) {\n if (t = n.checkMatrix(t), this.rows !== t.rows || this.columns !== t.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let s = 0; s < this.rows; s++)\n for (let i = 0; i < this.columns; i++)\n this.set(s, i, this.get(s, i) ^ t.get(s, i));\n return this;\n }, r.xor = function(t, s) {\n return new n(t).xor(s);\n }, r.prototype.leftShift = function(t) {\n return typeof t == \"number\" ? this.leftShiftS(t) : this.leftShiftM(t);\n }, r.prototype.leftShiftS = function(t) {\n for (let s = 0; s < this.rows; s++)\n for (let i = 0; i < this.columns; i++)\n this.set(s, i, this.get(s, i) << t);\n return this;\n }, r.prototype.leftShiftM = function(t) {\n if (t = n.checkMatrix(t), this.rows !== t.rows || this.columns !== t.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let s = 0; s < this.rows; s++)\n for (let i = 0; i < this.columns; i++)\n this.set(s, i, this.get(s, i) << t.get(s, i));\n return this;\n }, r.leftShift = function(t, s) {\n return new n(t).leftShift(s);\n }, r.prototype.signPropagatingRightShift = function(t) {\n return typeof t == \"number\" ? this.signPropagatingRightShiftS(t) : this.signPropagatingRightShiftM(t);\n }, r.prototype.signPropagatingRightShiftS = function(t) {\n for (let s = 0; s < this.rows; s++)\n for (let i = 0; i < this.columns; i++)\n this.set(s, i, this.get(s, i) >> t);\n return this;\n }, r.prototype.signPropagatingRightShiftM = function(t) {\n if (t = n.checkMatrix(t), this.rows !== t.rows || this.columns !== t.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let s = 0; s < this.rows; s++)\n for (let i = 0; i < this.columns; i++)\n this.set(s, i, this.get(s, i) >> t.get(s, i));\n return this;\n }, r.signPropagatingRightShift = function(t, s) {\n return new n(t).signPropagatingRightShift(s);\n }, r.prototype.rightShift = function(t) {\n return typeof t == \"number\" ? this.rightShiftS(t) : this.rightShiftM(t);\n }, r.prototype.rightShiftS = function(t) {\n for (let s = 0; s < this.rows; s++)\n for (let i = 0; i < this.columns; i++)\n this.set(s, i, this.get(s, i) >>> t);\n return this;\n }, r.prototype.rightShiftM = function(t) {\n if (t = n.checkMatrix(t), this.rows !== t.rows || this.columns !== t.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let s = 0; s < this.rows; s++)\n for (let i = 0; i < this.columns; i++)\n this.set(s, i, this.get(s, i) >>> t.get(s, i));\n return this;\n }, r.rightShift = function(t, s) {\n return new n(t).rightShift(s);\n }, r.prototype.zeroFillRightShift = r.prototype.rightShift, r.prototype.zeroFillRightShiftS = r.prototype.rightShiftS, r.prototype.zeroFillRightShiftM = r.prototype.rightShiftM, r.zeroFillRightShift = r.rightShift, r.prototype.not = function() {\n for (let t = 0; t < this.rows; t++)\n for (let s = 0; s < this.columns; s++)\n this.set(t, s, ~this.get(t, s));\n return this;\n }, r.not = function(t) {\n return new n(t).not();\n }, r.prototype.abs = function() {\n for (let t = 0; t < this.rows; t++)\n for (let s = 0; s < this.columns; s++)\n this.set(t, s, Math.abs(this.get(t, s)));\n return this;\n }, r.abs = function(t) {\n return new n(t).abs();\n }, r.prototype.acos = function() {\n for (let t = 0; t < this.rows; t++)\n for (let s = 0; s < this.columns; s++)\n this.set(t, s, Math.acos(this.get(t, s)));\n return this;\n }, r.acos = function(t) {\n return new n(t).acos();\n }, r.prototype.acosh = function() {\n for (let t = 0; t < this.rows; t++)\n for (let s = 0; s < this.columns; s++)\n this.set(t, s, Math.acosh(this.get(t, s)));\n return this;\n }, r.acosh = function(t) {\n return new n(t).acosh();\n }, r.prototype.asin = function() {\n for (let t = 0; t < this.rows; t++)\n for (let s = 0; s < this.columns; s++)\n this.set(t, s, Math.asin(this.get(t, s)));\n return this;\n }, r.asin = function(t) {\n return new n(t).asin();\n }, r.prototype.asinh = function() {\n for (let t = 0; t < this.rows; t++)\n for (let s = 0; s < this.columns; s++)\n this.set(t, s, Math.asinh(this.get(t, s)));\n return this;\n }, r.asinh = function(t) {\n return new n(t).asinh();\n }, r.prototype.atan = function() {\n for (let t = 0; t < this.rows; t++)\n for (let s = 0; s < this.columns; s++)\n this.set(t, s, Math.atan(this.get(t, s)));\n return this;\n }, r.atan = function(t) {\n return new n(t).atan();\n }, r.prototype.atanh = function() {\n for (let t = 0; t < this.rows; t++)\n for (let s = 0; s < this.columns; s++)\n this.set(t, s, Math.atanh(this.get(t, s)));\n return this;\n }, r.atanh = function(t) {\n return new n(t).atanh();\n }, r.prototype.cbrt = function() {\n for (let t = 0; t < this.rows; t++)\n for (let s = 0; s < this.columns; s++)\n this.set(t, s, Math.cbrt(this.get(t, s)));\n return this;\n }, r.cbrt = function(t) {\n return new n(t).cbrt();\n }, r.prototype.ceil = function() {\n for (let t = 0; t < this.rows; t++)\n for (let s = 0; s < this.columns; s++)\n this.set(t, s, Math.ceil(this.get(t, s)));\n return this;\n }, r.ceil = function(t) {\n return new n(t).ceil();\n }, r.prototype.clz32 = function() {\n for (let t = 0; t < this.rows; t++)\n for (let s = 0; s < this.columns; s++)\n this.set(t, s, Math.clz32(this.get(t, s)));\n return this;\n }, r.clz32 = function(t) {\n return new n(t).clz32();\n }, r.prototype.cos = function() {\n for (let t = 0; t < this.rows; t++)\n for (let s = 0; s < this.columns; s++)\n this.set(t, s, Math.cos(this.get(t, s)));\n return this;\n }, r.cos = function(t) {\n return new n(t).cos();\n }, r.prototype.cosh = function() {\n for (let t = 0; t < this.rows; t++)\n for (let s = 0; s < this.columns; s++)\n this.set(t, s, Math.cosh(this.get(t, s)));\n return this;\n }, r.cosh = function(t) {\n return new n(t).cosh();\n }, r.prototype.exp = function() {\n for (let t = 0; t < this.rows; t++)\n for (let s = 0; s < this.columns; s++)\n this.set(t, s, Math.exp(this.get(t, s)));\n return this;\n }, r.exp = function(t) {\n return new n(t).exp();\n }, r.prototype.expm1 = function() {\n for (let t = 0; t < this.rows; t++)\n for (let s = 0; s < this.columns; s++)\n this.set(t, s, Math.expm1(this.get(t, s)));\n return this;\n }, r.expm1 = function(t) {\n return new n(t).expm1();\n }, r.prototype.floor = function() {\n for (let t = 0; t < this.rows; t++)\n for (let s = 0; s < this.columns; s++)\n this.set(t, s, Math.floor(this.get(t, s)));\n return this;\n }, r.floor = function(t) {\n return new n(t).floor();\n }, r.prototype.fround = function() {\n for (let t = 0; t < this.rows; t++)\n for (let s = 0; s < this.columns; s++)\n this.set(t, s, Math.fround(this.get(t, s)));\n return this;\n }, r.fround = function(t) {\n return new n(t).fround();\n }, r.prototype.log = function() {\n for (let t = 0; t < this.rows; t++)\n for (let s = 0; s < this.columns; s++)\n this.set(t, s, Math.log(this.get(t, s)));\n return this;\n }, r.log = function(t) {\n return new n(t).log();\n }, r.prototype.log1p = function() {\n for (let t = 0; t < this.rows; t++)\n for (let s = 0; s < this.columns; s++)\n this.set(t, s, Math.log1p(this.get(t, s)));\n return this;\n }, r.log1p = function(t) {\n return new n(t).log1p();\n }, r.prototype.log10 = function() {\n for (let t = 0; t < this.rows; t++)\n for (let s = 0; s < this.columns; s++)\n this.set(t, s, Math.log10(this.get(t, s)));\n return this;\n }, r.log10 = function(t) {\n return new n(t).log10();\n }, r.prototype.log2 = function() {\n for (let t = 0; t < this.rows; t++)\n for (let s = 0; s < this.columns; s++)\n this.set(t, s, Math.log2(this.get(t, s)));\n return this;\n }, r.log2 = function(t) {\n return new n(t).log2();\n }, r.prototype.round = function() {\n for (let t = 0; t < this.rows; t++)\n for (let s = 0; s < this.columns; s++)\n this.set(t, s, Math.round(this.get(t, s)));\n return this;\n }, r.round = function(t) {\n return new n(t).round();\n }, r.prototype.sign = function() {\n for (let t = 0; t < this.rows; t++)\n for (let s = 0; s < this.columns; s++)\n this.set(t, s, Math.sign(this.get(t, s)));\n return this;\n }, r.sign = function(t) {\n return new n(t).sign();\n }, r.prototype.sin = function() {\n for (let t = 0; t < this.rows; t++)\n for (let s = 0; s < this.columns; s++)\n this.set(t, s, Math.sin(this.get(t, s)));\n return this;\n }, r.sin = function(t) {\n return new n(t).sin();\n }, r.prototype.sinh = function() {\n for (let t = 0; t < this.rows; t++)\n for (let s = 0; s < this.columns; s++)\n this.set(t, s, Math.sinh(this.get(t, s)));\n return this;\n }, r.sinh = function(t) {\n return new n(t).sinh();\n }, r.prototype.sqrt = function() {\n for (let t = 0; t < this.rows; t++)\n for (let s = 0; s < this.columns; s++)\n this.set(t, s, Math.sqrt(this.get(t, s)));\n return this;\n }, r.sqrt = function(t) {\n return new n(t).sqrt();\n }, r.prototype.tan = function() {\n for (let t = 0; t < this.rows; t++)\n for (let s = 0; s < this.columns; s++)\n this.set(t, s, Math.tan(this.get(t, s)));\n return this;\n }, r.tan = function(t) {\n return new n(t).tan();\n }, r.prototype.tanh = function() {\n for (let t = 0; t < this.rows; t++)\n for (let s = 0; s < this.columns; s++)\n this.set(t, s, Math.tanh(this.get(t, s)));\n return this;\n }, r.tanh = function(t) {\n return new n(t).tanh();\n }, r.prototype.trunc = function() {\n for (let t = 0; t < this.rows; t++)\n for (let s = 0; s < this.columns; s++)\n this.set(t, s, Math.trunc(this.get(t, s)));\n return this;\n }, r.trunc = function(t) {\n return new n(t).trunc();\n }, r.pow = function(t, s) {\n return new n(t).pow(s);\n }, r.prototype.pow = function(t) {\n return typeof t == \"number\" ? this.powS(t) : this.powM(t);\n }, r.prototype.powS = function(t) {\n for (let s = 0; s < this.rows; s++)\n for (let i = 0; i < this.columns; i++)\n this.set(s, i, Math.pow(this.get(s, i), t));\n return this;\n }, r.prototype.powM = function(t) {\n if (t = n.checkMatrix(t), this.rows !== t.rows || this.columns !== t.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let s = 0; s < this.rows; s++)\n for (let i = 0; i < this.columns; i++)\n this.set(s, i, Math.pow(this.get(s, i), t.get(s, i)));\n return this;\n };\n}\nfunction J(r, n, e) {\n let t = e ? r.rows : r.rows - 1;\n if (n < 0 || n > t)\n throw new RangeError(\"Row index out of range\");\n}\nfunction Q(r, n, e) {\n let t = e ? r.columns : r.columns - 1;\n if (n < 0 || n > t)\n throw new RangeError(\"Column index out of range\");\n}\nfunction ft(r, n) {\n if (n.to1DArray && (n = n.to1DArray()), n.length !== r.columns)\n throw new RangeError(\n \"vector size must be the same as the number of columns\"\n );\n return n;\n}\nfunction mt(r, n) {\n if (n.to1DArray && (n = n.to1DArray()), n.length !== r.rows)\n throw new RangeError(\"vector size must be the same as the number of rows\");\n return n;\n}\nfunction ve(r, n) {\n if (!Z(n))\n throw new TypeError(\"row indices must be an array\");\n for (let e = 0; e < n.length; e++)\n if (n[e] < 0 || n[e] >= r.rows)\n throw new RangeError(\"row indices are out of range\");\n}\nfunction Ie(r, n) {\n if (!Z(n))\n throw new TypeError(\"column indices must be an array\");\n for (let e = 0; e < n.length; e++)\n if (n[e] < 0 || n[e] >= r.columns)\n throw new RangeError(\"column indices are out of range\");\n}\nfunction te(r, n, e, t, s) {\n if (arguments.length !== 5)\n throw new RangeError(\"expected 4 arguments\");\n if (Ft(\"startRow\", n), Ft(\"endRow\", e), Ft(\"startColumn\", t), Ft(\"endColumn\", s), n > e || t > s || n < 0 || n >= r.rows || e < 0 || e >= r.rows || t < 0 || t >= r.columns || s < 0 || s >= r.columns)\n throw new RangeError(\"Submatrix indices are out of range\");\n}\nfunction Bt(r, n = 0) {\n let e = [];\n for (let t = 0; t < r; t++)\n e.push(n);\n return e;\n}\nfunction Ft(r, n) {\n if (typeof n != \"number\")\n throw new TypeError(`${r} must be a number`);\n}\nfunction ct(r) {\n if (r.isEmpty())\n throw new Error(\"Empty matrix has no elements to index\");\n}\nfunction qe(r) {\n let n = Bt(r.rows);\n for (let e = 0; e < r.rows; ++e)\n for (let t = 0; t < r.columns; ++t)\n n[e] += r.get(e, t);\n return n;\n}\nfunction Fe(r) {\n let n = Bt(r.columns);\n for (let e = 0; e < r.rows; ++e)\n for (let t = 0; t < r.columns; ++t)\n n[t] += r.get(e, t);\n return n;\n}\nfunction Ce(r) {\n let n = 0;\n for (let e = 0; e < r.rows; e++)\n for (let t = 0; t < r.columns; t++)\n n += r.get(e, t);\n return n;\n}\nfunction $e(r) {\n let n = Bt(r.rows, 1);\n for (let e = 0; e < r.rows; ++e)\n for (let t = 0; t < r.columns; ++t)\n n[e] *= r.get(e, t);\n return n;\n}\nfunction xe(r) {\n let n = Bt(r.columns, 1);\n for (let e = 0; e < r.rows; ++e)\n for (let t = 0; t < r.columns; ++t)\n n[t] *= r.get(e, t);\n return n;\n}\nfunction Ne(r) {\n let n = 1;\n for (let e = 0; e < r.rows; e++)\n for (let t = 0; t < r.columns; t++)\n n *= r.get(e, t);\n return n;\n}\nfunction Be(r, n, e) {\n const t = r.rows, s = r.columns, i = [];\n for (let o = 0; o < t; o++) {\n let h = 0, a = 0, l = 0;\n for (let c = 0; c < s; c++)\n l = r.get(o, c) - e[o], h += l, a += l * l;\n n ? i.push((a - h * h / s) / (s - 1)) : i.push((a - h * h / s) / s);\n }\n return i;\n}\nfunction Le(r, n, e) {\n const t = r.rows, s = r.columns, i = [];\n for (let o = 0; o < s; o++) {\n let h = 0, a = 0, l = 0;\n for (let c = 0; c < t; c++)\n l = r.get(c, o) - e[o], h += l, a += l * l;\n n ? i.push((a - h * h / t) / (t - 1)) : i.push((a - h * h / t) / t);\n }\n return i;\n}\nfunction ze(r, n, e) {\n const t = r.rows, s = r.columns, i = t * s;\n let o = 0, h = 0, a = 0;\n for (let l = 0; l < t; l++)\n for (let c = 0; c < s; c++)\n a = r.get(l, c) - e, o += a, h += a * a;\n return n ? (h - o * o / i) / (i - 1) : (h - o * o / i) / i;\n}\nfunction Ae(r, n) {\n for (let e = 0; e < r.rows; e++)\n for (let t = 0; t < r.columns; t++)\n r.set(e, t, r.get(e, t) - n[e]);\n}\nfunction Ve(r, n) {\n for (let e = 0; e < r.rows; e++)\n for (let t = 0; t < r.columns; t++)\n r.set(e, t, r.get(e, t) - n[t]);\n}\nfunction Oe(r, n) {\n for (let e = 0; e < r.rows; e++)\n for (let t = 0; t < r.columns; t++)\n r.set(e, t, r.get(e, t) - n);\n}\nfunction De(r) {\n const n = [];\n for (let e = 0; e < r.rows; e++) {\n let t = 0;\n for (let s = 0; s < r.columns; s++)\n t += Math.pow(r.get(e, s), 2) / (r.columns - 1);\n n.push(Math.sqrt(t));\n }\n return n;\n}\nfunction Ye(r, n) {\n for (let e = 0; e < r.rows; e++)\n for (let t = 0; t < r.columns; t++)\n r.set(e, t, r.get(e, t) / n[e]);\n}\nfunction Ue(r) {\n const n = [];\n for (let e = 0; e < r.columns; e++) {\n let t = 0;\n for (let s = 0; s < r.rows; s++)\n t += Math.pow(r.get(s, e), 2) / (r.rows - 1);\n n.push(Math.sqrt(t));\n }\n return n;\n}\nfunction We(r, n) {\n for (let e = 0; e < r.rows; e++)\n for (let t = 0; t < r.columns; t++)\n r.set(e, t, r.get(e, t) / n[t]);\n}\nfunction Ge(r) {\n const n = r.size - 1;\n let e = 0;\n for (let t = 0; t < r.columns; t++)\n for (let s = 0; s < r.rows; s++)\n e += Math.pow(r.get(s, t), 2) / n;\n return Math.sqrt(e);\n}\nfunction Xe(r, n) {\n for (let e = 0; e < r.rows; e++)\n for (let t = 0; t < r.columns; t++)\n r.set(e, t, r.get(e, t) / n);\n}\nclass I {\n static from1DArray(n, e, t) {\n if (n * e !== t.length)\n throw new RangeError(\"data length does not match given dimensions\");\n let i = new R(n, e);\n for (let o = 0; o < n; o++)\n for (let h = 0; h < e; h++)\n i.set(o, h, t[o * e + h]);\n return i;\n }\n static rowVector(n) {\n let e = new R(1, n.length);\n for (let t = 0; t < n.length; t++)\n e.set(0, t, n[t]);\n return e;\n }\n static columnVector(n) {\n let e = new R(n.length, 1);\n for (let t = 0; t < n.length; t++)\n e.set(t, 0, n[t]);\n return e;\n }\n static zeros(n, e) {\n return new R(n, e);\n }\n static ones(n, e) {\n return new R(n, e).fill(1);\n }\n static rand(n, e, t = {}) {\n if (typeof t != \"object\")\n throw new TypeError(\"options must be an object\");\n const { random: s = Math.random } = t;\n let i = new R(n, e);\n for (let o = 0; o < n; o++)\n for (let h = 0; h < e; h++)\n i.set(o, h, s());\n return i;\n }\n static randInt(n, e, t = {}) {\n if (typeof t != \"object\")\n throw new TypeError(\"options must be an object\");\n const { min: s = 0, max: i = 1e3, random: o = Math.random } = t;\n if (!Number.isInteger(s))\n throw new TypeError(\"min must be an integer\");\n if (!Number.isInteger(i))\n throw new TypeError(\"max must be an integer\");\n if (s >= i)\n throw new RangeError(\"min must be smaller than max\");\n let h = i - s, a = new R(n, e);\n for (let l = 0; l < n; l++)\n for (let c = 0; c < e; c++) {\n let u = s + Math.round(o() * h);\n a.set(l, c, u);\n }\n return a;\n }\n static eye(n, e, t) {\n e === void 0 && (e = n), t === void 0 && (t = 1);\n let s = Math.min(n, e), i = this.zeros(n, e);\n for (let o = 0; o < s; o++)\n i.set(o, o, t);\n return i;\n }\n static diag(n, e, t) {\n let s = n.length;\n e === void 0 && (e = s), t === void 0 && (t = e);\n let i = Math.min(s, e, t), o = this.zeros(e, t);\n for (let h = 0; h < i; h++)\n o.set(h, h, n[h]);\n return o;\n }\n static min(n, e) {\n n = this.checkMatrix(n), e = this.checkMatrix(e);\n let t = n.rows, s = n.columns, i = new R(t, s);\n for (let o = 0; o < t; o++)\n for (let h = 0; h < s; h++)\n i.set(o, h, Math.min(n.get(o, h), e.get(o, h)));\n return i;\n }\n static max(n, e) {\n n = this.checkMatrix(n), e = this.checkMatrix(e);\n let t = n.rows, s = n.columns, i = new this(t, s);\n for (let o = 0; o < t; o++)\n for (let h = 0; h < s; h++)\n i.set(o, h, Math.max(n.get(o, h), e.get(o, h)));\n return i;\n }\n static checkMatrix(n) {\n return I.isMatrix(n) ? n : new R(n);\n }\n static isMatrix(n) {\n return n != null && n.klass === \"Matrix\";\n }\n get size() {\n return this.rows * this.columns;\n }\n apply(n) {\n if (typeof n != \"function\")\n throw new TypeError(\"callback must be a function\");\n for (let e = 0; e < this.rows; e++)\n for (let t = 0; t < this.columns; t++)\n n.call(this, e, t);\n return this;\n }\n to1DArray() {\n let n = [];\n for (let e = 0; e < this.rows; e++)\n for (let t = 0; t < this.columns; t++)\n n.push(this.get(e, t));\n return n;\n }\n to2DArray() {\n let n = [];\n for (let e = 0; e < this.rows; e++) {\n n.push([]);\n for (let t = 0; t < this.columns; t++)\n n[e].push(this.get(e, t));\n }\n return n;\n }\n toJSON() {\n return this.to2DArray();\n }\n isRowVector() {\n return this.rows === 1;\n }\n isColumnVector() {\n return this.columns === 1;\n }\n isVector() {\n return this.rows === 1 || this.columns === 1;\n }\n isSquare() {\n return this.rows === this.columns;\n }\n isEmpty() {\n return this.rows === 0 || this.columns === 0;\n }\n isSymmetric() {\n if (this.isSquare()) {\n for (let n = 0; n < this.rows; n++)\n for (let e = 0; e <= n; e++)\n if (this.get(n, e) !== this.get(e, n))\n return !1;\n return !0;\n }\n return !1;\n }\n isEchelonForm() {\n let n = 0, e = 0, t = -1, s = !0, i = !1;\n for (; n < this.rows && s; ) {\n for (e = 0, i = !1; e < this.columns && i === !1; )\n this.get(n, e) === 0 ? e++ : this.get(n, e) === 1 && e > t ? (i = !0, t = e) : (s = !1, i = !0);\n n++;\n }\n return s;\n }\n isReducedEchelonForm() {\n let n = 0, e = 0, t = -1, s = !0, i = !1;\n for (; n < this.rows && s; ) {\n for (e = 0, i = !1; e < this.columns && i === !1; )\n this.get(n, e) === 0 ? e++ : this.get(n, e) === 1 && e > t ? (i = !0, t = e) : (s = !1, i = !0);\n for (let o = e + 1; o < this.rows; o++)\n this.get(n, o) !== 0 && (s = !1);\n n++;\n }\n return s;\n }\n echelonForm() {\n let n = this.clone(), e = 0, t = 0;\n for (; e < n.rows && t < n.columns; ) {\n let s = e;\n for (let i = e; i < n.rows; i++)\n n.get(i, t) > n.get(s, t) && (s = i);\n if (n.get(s, t) === 0)\n t++;\n else {\n n.swapRows(e, s);\n let i = n.get(e, t);\n for (let o = t; o < n.columns; o++)\n n.set(e, o, n.get(e, o) / i);\n for (let o = e + 1; o < n.rows; o++) {\n let h = n.get(o, t) / n.get(e, t);\n n.set(o, t, 0);\n for (let a = t + 1; a < n.columns; a++)\n n.set(o, a, n.get(o, a) - n.get(e, a) * h);\n }\n e++, t++;\n }\n }\n return n;\n }\n reducedEchelonForm() {\n let n = this.echelonForm(), e = n.columns, t = n.rows, s = t - 1;\n for (; s >= 0; )\n if (n.maxRow(s) === 0)\n s--;\n else {\n let i = 0, o = !1;\n for (; i < t && o === !1; )\n n.get(s, i) === 1 ? o = !0 : i++;\n for (let h = 0; h < s; h++) {\n let a = n.get(h, i);\n for (let l = i; l < e; l++) {\n let c = n.get(h, l) - a * n.get(s, l);\n n.set(h, l, c);\n }\n }\n s--;\n }\n return n;\n }\n set() {\n throw new Error(\"set method is unimplemented\");\n }\n get() {\n throw new Error(\"get method is unimplemented\");\n }\n repeat(n = {}) {\n if (typeof n != \"object\")\n throw new TypeError(\"options must be an object\");\n const { rows: e = 1, columns: t = 1 } = n;\n if (!Number.isInteger(e) || e <= 0)\n throw new TypeError(\"rows must be a positive integer\");\n if (!Number.isInteger(t) || t <= 0)\n throw new TypeError(\"columns must be a positive integer\");\n let s = new R(this.rows * e, this.columns * t);\n for (let i = 0; i < e; i++)\n for (let o = 0; o < t; o++)\n s.setSubMatrix(this, this.rows * i, this.columns * o);\n return s;\n }\n fill(n) {\n for (let e = 0; e < this.rows; e++)\n for (let t = 0; t < this.columns; t++)\n this.set(e, t, n);\n return this;\n }\n neg() {\n return this.mulS(-1);\n }\n getRow(n) {\n J(this, n);\n let e = [];\n for (let t = 0; t < this.columns; t++)\n e.push(this.get(n, t));\n return e;\n }\n getRowVector(n) {\n return R.rowVector(this.getRow(n));\n }\n setRow(n, e) {\n J(this, n), e = ft(this, e);\n for (let t = 0; t < this.columns; t++)\n this.set(n, t, e[t]);\n return this;\n }\n swapRows(n, e) {\n J(this, n), J(this, e);\n for (let t = 0; t < this.columns; t++) {\n let s = this.get(n, t);\n this.set(n, t, this.get(e, t)), this.set(e, t, s);\n }\n return this;\n }\n getColumn(n) {\n Q(this, n);\n let e = [];\n for (let t = 0; t < this.rows; t++)\n e.push(this.get(t, n));\n return e;\n }\n getColumnVector(n) {\n return R.columnVector(this.getColumn(n));\n }\n setColumn(n, e) {\n Q(this, n), e = mt(this, e);\n for (let t = 0; t < this.rows; t++)\n this.set(t, n, e[t]);\n return this;\n }\n swapColumns(n, e) {\n Q(this, n), Q(this, e);\n for (let t = 0; t < this.rows; t++) {\n let s = this.get(t, n);\n this.set(t, n, this.get(t, e)), this.set(t, e, s);\n }\n return this;\n }\n addRowVector(n) {\n n = ft(this, n);\n for (let e = 0; e < this.rows; e++)\n for (let t = 0; t < this.columns; t++)\n this.set(e, t, this.get(e, t) + n[t]);\n return this;\n }\n subRowVector(n) {\n n = ft(this, n);\n for (let e = 0; e < this.rows; e++)\n for (let t = 0; t < this.columns; t++)\n this.set(e, t, this.get(e, t) - n[t]);\n return this;\n }\n mulRowVector(n) {\n n = ft(this, n);\n for (let e = 0; e < this.rows; e++)\n for (let t = 0; t < this.columns; t++)\n this.set(e, t, this.get(e, t) * n[t]);\n return this;\n }\n divRowVector(n) {\n n = ft(this, n);\n for (let e = 0; e < this.rows; e++)\n for (let t = 0; t < this.columns; t++)\n this.set(e, t, this.get(e, t) / n[t]);\n return this;\n }\n addColumnVector(n) {\n n = mt(this, n);\n for (let e = 0; e < this.rows; e++)\n for (let t = 0; t < this.columns; t++)\n this.set(e, t, this.get(e, t) + n[e]);\n return this;\n }\n subColumnVector(n) {\n n = mt(this, n);\n for (let e = 0; e < this.rows; e++)\n for (let t = 0; t < this.columns; t++)\n this.set(e, t, this.get(e, t) - n[e]);\n return this;\n }\n mulColumnVector(n) {\n n = mt(this, n);\n for (let e = 0; e < this.rows; e++)\n for (let t = 0; t < this.columns; t++)\n this.set(e, t, this.get(e, t) * n[e]);\n return this;\n }\n divColumnVector(n) {\n n = mt(this, n);\n for (let e = 0; e < this.rows; e++)\n for (let t = 0; t < this.columns; t++)\n this.set(e, t, this.get(e, t) / n[e]);\n return this;\n }\n mulRow(n, e) {\n J(this, n);\n for (let t = 0; t < this.columns; t++)\n this.set(n, t, this.get(n, t) * e);\n return this;\n }\n mulColumn(n, e) {\n Q(this, n);\n for (let t = 0; t < this.rows; t++)\n this.set(t, n, this.get(t, n) * e);\n return this;\n }\n max(n) {\n if (this.isEmpty())\n return NaN;\n switch (n) {\n case \"row\": {\n const e = new Array(this.rows).fill(Number.NEGATIVE_INFINITY);\n for (let t = 0; t < this.rows; t++)\n for (let s = 0; s < this.columns; s++)\n this.get(t, s) > e[t] && (e[t] = this.get(t, s));\n return e;\n }\n case \"column\": {\n const e = new Array(this.columns).fill(Number.NEGATIVE_INFINITY);\n for (let t = 0; t < this.rows; t++)\n for (let s = 0; s < this.columns; s++)\n this.get(t, s) > e[s] && (e[s] = this.get(t, s));\n return e;\n }\n case void 0: {\n let e = this.get(0, 0);\n for (let t = 0; t < this.rows; t++)\n for (let s = 0; s < this.columns; s++)\n this.get(t, s) > e && (e = this.get(t, s));\n return e;\n }\n default:\n throw new Error(`invalid option: ${n}`);\n }\n }\n maxIndex() {\n ct(this);\n let n = this.get(0, 0), e = [0, 0];\n for (let t = 0; t < this.rows; t++)\n for (let s = 0; s < this.columns; s++)\n this.get(t, s) > n && (n = this.get(t, s), e[0] = t, e[1] = s);\n return e;\n }\n min(n) {\n if (this.isEmpty())\n return NaN;\n switch (n) {\n case \"row\": {\n const e = new Array(this.rows).fill(Number.POSITIVE_INFINITY);\n for (let t = 0; t < this.rows; t++)\n for (let s = 0; s < this.columns; s++)\n this.get(t, s) < e[t] && (e[t] = this.get(t, s));\n return e;\n }\n case \"column\": {\n const e = new Array(this.columns).fill(Number.POSITIVE_INFINITY);\n for (let t = 0; t < this.rows; t++)\n for (let s = 0; s < this.columns; s++)\n this.get(t, s) < e[s] && (e[s] = this.get(t, s));\n return e;\n }\n case void 0: {\n let e = this.get(0, 0);\n for (let t = 0; t < this.rows; t++)\n for (let s = 0; s < this.columns; s++)\n this.get(t, s) < e && (e = this.get(t, s));\n return e;\n }\n default:\n throw new Error(`invalid option: ${n}`);\n }\n }\n minIndex() {\n ct(this);\n let n = this.get(0, 0), e = [0, 0];\n for (let t = 0; t < this.rows; t++)\n for (let s = 0; s < this.columns; s++)\n this.get(t, s) < n && (n = this.get(t, s), e[0] = t, e[1] = s);\n return e;\n }\n maxRow(n) {\n if (J(this, n), this.isEmpty())\n return NaN;\n let e = this.get(n, 0);\n for (let t = 1; t < this.columns; t++)\n this.get(n, t) > e && (e = this.get(n, t));\n return e;\n }\n maxRowIndex(n) {\n J(this, n), ct(this);\n let e = this.get(n, 0), t = [n, 0];\n for (let s = 1; s < this.columns; s++)\n this.get(n, s) > e && (e = this.get(n, s), t[1] = s);\n return t;\n }\n minRow(n) {\n if (J(this, n), this.isEmpty())\n return NaN;\n let e = this.get(n, 0);\n for (let t = 1; t < this.columns; t++)\n this.get(n, t) < e && (e = this.get(n, t));\n return e;\n }\n minRowIndex(n) {\n J(this, n), ct(this);\n let e = this.get(n, 0), t = [n, 0];\n for (let s = 1; s < this.columns; s++)\n this.get(n, s) < e && (e = this.get(n, s), t[1] = s);\n return t;\n }\n maxColumn(n) {\n if (Q(this, n), this.isEmpty())\n return NaN;\n let e = this.get(0, n);\n for (let t = 1; t < this.rows; t++)\n this.get(t, n) > e && (e = this.get(t, n));\n return e;\n }\n maxColumnIndex(n) {\n Q(this, n), ct(this);\n let e = this.get(0, n), t = [0, n];\n for (let s = 1; s < this.rows; s++)\n this.get(s, n) > e && (e = this.get(s, n), t[0] = s);\n return t;\n }\n minColumn(n) {\n if (Q(this, n), this.isEmpty())\n return NaN;\n let e = this.get(0, n);\n for (let t = 1; t < this.rows; t++)\n this.get(t, n) < e && (e = this.get(t, n));\n return e;\n }\n minColumnIndex(n) {\n Q(this, n), ct(this);\n let e = this.get(0, n), t = [0, n];\n for (let s = 1; s < this.rows; s++)\n this.get(s, n) < e && (e = this.get(s, n), t[0] = s);\n return t;\n }\n diag() {\n let n = Math.min(this.rows, this.columns), e = [];\n for (let t = 0; t < n; t++)\n e.push(this.get(t, t));\n return e;\n }\n norm(n = \"frobenius\") {\n let e = 0;\n if (n === \"max\")\n return this.max();\n if (n === \"frobenius\") {\n for (let t = 0; t < this.rows; t++)\n for (let s = 0; s < this.columns; s++)\n e = e + this.get(t, s) * this.get(t, s);\n return Math.sqrt(e);\n } else\n throw new RangeError(`unknown norm type: ${n}`);\n }\n cumulativeSum() {\n let n = 0;\n for (let e = 0; e < this.rows; e++)\n for (let t = 0; t < this.columns; t++)\n n += this.get(e, t), this.set(e, t, n);\n return this;\n }\n dot(n) {\n I.isMatrix(n) && (n = n.to1DArray());\n let e = this.to1DArray();\n if (e.length !== n.length)\n throw new RangeError(\"vectors do not have the same size\");\n let t = 0;\n for (let s = 0; s < e.length; s++)\n t += e[s] * n[s];\n return t;\n }\n mmul(n) {\n n = R.checkMatrix(n);\n let e = this.rows, t = this.columns, s = n.columns, i = new R(e, s), o = new Float64Array(t);\n for (let h = 0; h < s; h++) {\n for (let a = 0; a < t; a++)\n o[a] = n.get(a, h);\n for (let a = 0; a < e; a++) {\n let l = 0;\n for (let c = 0; c < t; c++)\n l += this.get(a, c) * o[c];\n i.set(a, h, l);\n }\n }\n return i;\n }\n strassen2x2(n) {\n n = R.checkMatrix(n);\n let e = new R(2, 2);\n const t = this.get(0, 0), s = n.get(0, 0), i = this.get(0, 1), o = n.get(0, 1), h = this.get(1, 0), a = n.get(1, 0), l = this.get(1, 1), c = n.get(1, 1), u = (t + l) * (s + c), m = (h + l) * s, d = t * (o - c), p = l * (a - s), g = (t + i) * c, M = (h - t) * (s + o), f = (i - l) * (a + c), w = u + p - g + f, P = d + g, E = m + p, b = u - m + d + M;\n return e.set(0, 0, w), e.set(0, 1, P), e.set(1, 0, E), e.set(1, 1, b), e;\n }\n strassen3x3(n) {\n n = R.checkMatrix(n);\n let e = new R(3, 3);\n const t = this.get(0, 0), s = this.get(0, 1), i = this.get(0, 2), o = this.get(1, 0), h = this.get(1, 1), a = this.get(1, 2), l = this.get(2, 0), c = this.get(2, 1), u = this.get(2, 2), m = n.get(0, 0), d = n.get(0, 1), p = n.get(0, 2), g = n.get(1, 0), M = n.get(1, 1), f = n.get(1, 2), w = n.get(2, 0), P = n.get(2, 1), E = n.get(2, 2), b = (t + s + i - o - h - c - u) * M, F = (t - o) * (-d + M), j = h * (-m + d + g - M - f - w + E), y = (-t + o + h) * (m - d + M), x = (o + h) * (-m + d), B = t * m, V = (-t + l + c) * (m - p + f), G = (-t + l) * (p - f), C = (l + c) * (-m + p), T = (t + s + i - h - a - l - c) * f, k = c * (-m + p + g - M - f - w + P), S = (-i + c + u) * (M + w - P), it = (i - u) * (M - P), q = i * w, $ = (c + u) * (-w + P), v = (-i + h + a) * (f + w - E), L = (i - a) * (f - E), A = (h + a) * (-w + E), z = s * g, U = a * P, et = o * p, H = l * d, rt = u * E, zt = B + q + z, At = b + y + x + B + S + q + $, Vt = B + V + C + T + q + v + A, Ot = F + j + y + B + q + v + L, bt = F + y + x + B + U, jt = q + v + L + A + et, St = B + V + G + k + S + it + q, kt = S + it + q + $ + H, Rt = B + V + G + C + rt;\n return e.set(0, 0, zt), e.set(0, 1, At), e.set(0, 2, Vt), e.set(1, 0, Ot), e.set(1, 1, bt), e.set(1, 2, jt), e.set(2, 0, St), e.set(2, 1, kt), e.set(2, 2, Rt), e;\n }\n mmulStrassen(n) {\n n = R.checkMatrix(n);\n let e = this.clone(), t = e.rows, s = e.columns, i = n.rows, o = n.columns;\n s !== i && console.warn(\n `Multiplying ${t} x ${s} and ${i} x ${o} matrix: dimensions do not match.`\n );\n function h(u, m, d) {\n let p = u.rows, g = u.columns;\n if (p === m && g === d)\n return u;\n {\n let M = I.zeros(m, d);\n return M = M.setSubMatrix(u, 0, 0), M;\n }\n }\n let a = Math.max(t, i), l = Math.max(s, o);\n e = h(e, a, l), n = h(n, a, l);\n function c(u, m, d, p) {\n if (d <= 512 || p <= 512)\n return u.mmul(m);\n d % 2 === 1 && p % 2 === 1 ? (u = h(u, d + 1, p + 1), m = h(m, d + 1, p + 1)) : d % 2 === 1 ? (u = h(u, d + 1, p), m = h(m, d + 1, p)) : p % 2 === 1 && (u = h(u, d, p + 1), m = h(m, d, p + 1));\n let g = parseInt(u.rows / 2, 10), M = parseInt(u.columns / 2, 10), f = u.subMatrix(0, g - 1, 0, M - 1), w = m.subMatrix(0, g - 1, 0, M - 1), P = u.subMatrix(0, g - 1, M, u.columns - 1), E = m.subMatrix(0, g - 1, M, m.columns - 1), b = u.subMatrix(g, u.rows - 1, 0, M - 1), F = m.subMatrix(g, m.rows - 1, 0, M - 1), j = u.subMatrix(g, u.rows - 1, M, u.columns - 1), y = m.subMatrix(g, m.rows - 1, M, m.columns - 1), x = c(\n I.add(f, j),\n I.add(w, y),\n g,\n M\n ), B = c(I.add(b, j), w, g, M), V = c(f, I.sub(E, y), g, M), G = c(j, I.sub(F, w), g, M), C = c(I.add(f, P), y, g, M), T = c(\n I.sub(b, f),\n I.add(w, E),\n g,\n M\n ), k = c(\n I.sub(P, j),\n I.add(F, y),\n g,\n M\n ), S = I.add(x, G);\n S.sub(C), S.add(k);\n let it = I.add(V, C), q = I.add(B, G), $ = I.sub(x, B);\n $.add(V), $.add(T);\n let v = I.zeros(2 * S.rows, 2 * S.columns);\n return v = v.setSubMatrix(S, 0, 0), v = v.setSubMatrix(it, S.rows, 0), v = v.setSubMatrix(q, 0, S.columns), v = v.setSubMatrix($, S.rows, S.columns), v.subMatrix(0, d - 1, 0, p - 1);\n }\n return c(e, n, a, l);\n }\n scaleRows(n = {}) {\n if (typeof n != \"object\")\n throw new TypeError(\"options must be an object\");\n const { min: e = 0, max: t = 1 } = n;\n if (!Number.isFinite(e))\n throw new TypeError(\"min must be a number\");\n if (!Number.isFinite(t))\n throw new TypeError(\"max must be a number\");\n if (e >= t)\n throw new RangeError(\"min must be smaller than max\");\n let s = new R(this.rows, this.columns);\n for (let i = 0; i < this.rows; i++) {\n const o = this.getRow(i);\n o.length > 0 && Qt(o, { min: e, max: t, output: o }), s.setRow(i, o);\n }\n return s;\n }\n scaleColumns(n = {}) {\n if (typeof n != \"object\")\n throw new TypeError(\"options must be an object\");\n const { min: e = 0, max: t = 1 } = n;\n if (!Number.isFinite(e))\n throw new TypeError(\"min must be a number\");\n if (!Number.isFinite(t))\n throw new TypeError(\"max must be a number\");\n if (e >= t)\n throw new RangeError(\"min must be smaller than max\");\n let s = new R(this.rows, this.columns);\n for (let i = 0; i < this.columns; i++) {\n const o = this.getColumn(i);\n o.length && Qt(o, {\n min: e,\n max: t,\n output: o\n }), s.setColumn(i, o);\n }\n return s;\n }\n flipRows() {\n const n = Math.ceil(this.columns / 2);\n for (let e = 0; e < this.rows; e++)\n for (let t = 0; t < n; t++) {\n let s = this.get(e, t), i = this.get(e, this.columns - 1 - t);\n this.set(e, t, i), this.set(e, this.columns - 1 - t, s);\n }\n return this;\n }\n flipColumns() {\n const n = Math.ceil(this.rows / 2);\n for (let e = 0; e < this.columns; e++)\n for (let t = 0; t < n; t++) {\n let s = this.get(t, e), i = this.get(this.rows - 1 - t, e);\n this.set(t, e, i), this.set(this.rows - 1 - t, e, s);\n }\n return this;\n }\n kroneckerProduct(n) {\n n = R.checkMatrix(n);\n let e = this.rows, t = this.columns, s = n.rows, i = n.columns, o = new R(e * s, t * i);\n for (let h = 0; h < e; h++)\n for (let a = 0; a < t; a++)\n for (let l = 0; l < s; l++)\n for (let c = 0; c < i; c++)\n o.set(s * h + l, i * a + c, this.get(h, a) * n.get(l, c));\n return o;\n }\n kroneckerSum(n) {\n if (n = R.checkMatrix(n), !this.isSquare() || !n.isSquare())\n throw new Error(\"Kronecker Sum needs two Square Matrices\");\n let e = this.rows, t = n.rows, s = this.kroneckerProduct(R.eye(t, t)), i = R.eye(e, e).kroneckerProduct(n);\n return s.add(i);\n }\n transpose() {\n let n = new R(this.columns, this.rows);\n for (let e = 0; e < this.rows; e++)\n for (let t = 0; t < this.columns; t++)\n n.set(t, e, this.get(e, t));\n return n;\n }\n sortRows(n = ee) {\n for (let e = 0; e < this.rows; e++)\n this.setRow(e, this.getRow(e).sort(n));\n return this;\n }\n sortColumns(n = ee) {\n for (let e = 0; e < this.columns; e++)\n this.setColumn(e, this.getColumn(e).sort(n));\n return this;\n }\n subMatrix(n, e, t, s) {\n te(this, n, e, t, s);\n let i = new R(\n e - n + 1,\n s - t + 1\n );\n for (let o = n; o <= e; o++)\n for (let h = t; h <= s; h++)\n i.set(o - n, h - t, this.get(o, h));\n return i;\n }\n subMatrixRow(n, e, t) {\n if (e === void 0 && (e = 0), t === void 0 && (t = this.columns - 1), e > t || e < 0 || e >= this.columns || t < 0 || t >= this.columns)\n throw new RangeError(\"Argument out of range\");\n let s = new R(n.length, t - e + 1);\n for (let i = 0; i < n.length; i++)\n for (let o = e; o <= t; o++) {\n if (n[i] < 0 || n[i] >= this.rows)\n throw new RangeError(`Row index out of range: ${n[i]}`);\n s.set(i, o - e, this.get(n[i], o));\n }\n return s;\n }\n subMatrixColumn(n, e, t) {\n if (e === void 0 && (e = 0), t === void 0 && (t = this.rows - 1), e > t || e < 0 || e >= this.rows || t < 0 || t >= this.rows)\n throw new RangeError(\"Argument out of range\");\n let s = new R(t - e + 1, n.length);\n for (let i = 0; i < n.length; i++)\n for (let o = e; o <= t; o++) {\n if (n[i] < 0 || n[i] >= this.columns)\n throw new RangeError(`Column index out of range: ${n[i]}`);\n s.set(o - e, i, this.get(o, n[i]));\n }\n return s;\n }\n setSubMatrix(n, e, t) {\n if (n = R.checkMatrix(n), n.isEmpty())\n return this;\n let s = e + n.rows - 1, i = t + n.columns - 1;\n te(this, e, s, t, i);\n for (let o = 0; o < n.rows; o++)\n for (let h = 0; h < n.columns; h++)\n this.set(e + o, t + h, n.get(o, h));\n return this;\n }\n selection(n, e) {\n ve(this, n), Ie(this, e);\n let t = new R(n.length, e.length);\n for (let s = 0; s < n.length; s++) {\n let i = n[s];\n for (let o = 0; o < e.length; o++) {\n let h = e[o];\n t.set(s, o, this.get(i, h));\n }\n }\n return t;\n }\n trace() {\n let n = Math.min(this.rows, this.columns), e = 0;\n for (let t = 0; t < n; t++)\n e += this.get(t, t);\n return e;\n }\n clone() {\n let n = new R(this.rows, this.columns);\n for (let e = 0; e < this.rows; e++)\n for (let t = 0; t < this.columns; t++)\n n.set(e, t, this.get(e, t));\n return n;\n }\n sum(n) {\n switch (n) {\n case \"row\":\n return qe(this);\n case \"column\":\n return Fe(this);\n case void 0:\n return Ce(this);\n default:\n throw new Error(`invalid option: ${n}`);\n }\n }\n product(n) {\n switch (n) {\n case \"row\":\n return $e(this);\n case \"column\":\n return xe(this);\n case void 0:\n return Ne(this);\n default:\n throw new Error(`invalid option: ${n}`);\n }\n }\n mean(n) {\n const e = this.sum(n);\n switch (n) {\n case \"row\": {\n for (let t = 0; t < this.rows; t++)\n e[t] /= this.columns;\n return e;\n }\n case \"column\": {\n for (let t = 0; t < this.columns; t++)\n e[t] /= this.rows;\n return e;\n }\n case void 0:\n return e / this.size;\n default:\n throw new Error(`invalid option: ${n}`);\n }\n }\n variance(n, e = {}) {\n if (typeof n == \"object\" && (e = n, n = void 0), typeof e != \"object\")\n throw new TypeError(\"options must be an object\");\n const { unbiased: t = !0, mean: s = this.mean(n) } = e;\n if (typeof t != \"boolean\")\n throw new TypeError(\"unbiased must be a boolean\");\n switch (n) {\n case \"row\": {\n if (!Z(s))\n throw new TypeError(\"mean must be an array\");\n return Be(this, t, s);\n }\n case \"column\": {\n if (!Z(s))\n throw new TypeError(\"mean must be an array\");\n return Le(this, t, s);\n }\n case void 0: {\n if (typeof s != \"number\")\n throw new TypeError(\"mean must be a number\");\n return ze(this, t, s);\n }\n default:\n throw new Error(`invalid option: ${n}`);\n }\n }\n standardDeviation(n, e) {\n typeof n == \"object\" && (e = n, n = void 0);\n const t = this.variance(n, e);\n if (n === void 0)\n return Math.sqrt(t);\n for (let s = 0; s < t.length; s++)\n t[s] = Math.sqrt(t[s]);\n return t;\n }\n center(n, e = {}) {\n if (typeof n == \"object\" && (e = n, n = void 0), typeof e != \"object\")\n throw new TypeError(\"options must be an object\");\n const { center: t = this.mean(n) } = e;\n switch (n) {\n case \"row\": {\n if (!Z(t))\n throw new TypeError(\"center must be an array\");\n return Ae(this, t), this;\n }\n case \"column\": {\n if (!Z(t))\n throw new TypeError(\"center must be an array\");\n return Ve(this, t), this;\n }\n case void 0: {\n if (typeof t != \"number\")\n throw new TypeError(\"center must be a number\");\n return Oe(this, t), this;\n }\n default:\n throw new Error(`invalid option: ${n}`);\n }\n }\n scale(n, e = {}) {\n if (typeof n == \"object\" && (e = n, n = void 0), typeof e != \"object\")\n throw new TypeError(\"options must be an object\");\n let t = e.scale;\n switch (n) {\n case \"row\": {\n if (t === void 0)\n t = De(this);\n else if (!Z(t))\n throw new TypeError(\"scale must be an array\");\n return Ye(this, t), this;\n }\n case \"column\": {\n if (t === void 0)\n t = Ue(this);\n else if (!Z(t))\n throw new TypeError(\"scale must be an array\");\n return We(this, t), this;\n }\n case void 0: {\n if (t === void 0)\n t = Ge(this);\n else if (typeof t != \"number\")\n throw new TypeError(\"scale must be a number\");\n return Xe(this, t), this;\n }\n default:\n throw new Error(`invalid option: ${n}`);\n }\n }\n toString(n) {\n return le(this, n);\n }\n}\nI.prototype.klass = \"Matrix\";\ntypeof Symbol < \"u\" && (I.prototype[Symbol.for(\"nodejs.util.inspect.custom\")] = Se);\nfunction ee(r, n) {\n return r - n;\n}\nfunction Ze(r) {\n return r.every((n) => typeof n == \"number\");\n}\nI.random = I.rand;\nI.randomInt = I.randInt;\nI.diagonal = I.diag;\nI.prototype.diagonal = I.prototype.diag;\nI.identity = I.eye;\nI.prototype.negate = I.prototype.neg;\nI.prototype.tensorProduct = I.prototype.kroneckerProduct;\nclass R extends I {\n constructor(n, e) {\n if (super(), R.isMatrix(n))\n return n.clone();\n if (Number.isInteger(n) && n >= 0)\n if (this.data = [], Number.isInteger(e) && e >= 0)\n for (let t = 0; t < n; t++)\n this.data.push(new Float64Array(e));\n else\n throw new TypeError(\"nColumns must be a positive integer\");\n else if (Z(n)) {\n const t = n;\n if (n = t.length, e = n ? t[0].length : 0, typeof e != \"number\")\n throw new TypeError(\n \"Data must be a 2D array with at least one element\"\n );\n this.data = [];\n for (let s = 0; s < n; s++) {\n if (t[s].length !== e)\n throw new RangeError(\"Inconsistent array dimensions\");\n if (!Ze(t[s]))\n throw new TypeError(\"Input data contains non-numeric values\");\n this.data.push(Float64Array.from(t[s]));\n }\n } else\n throw new TypeError(\n \"First argument must be a positive number or an array\"\n );\n this.rows = n, this.columns = e;\n }\n set(n, e, t) {\n return this.data[n][e] = t, this;\n }\n get(n, e) {\n return this.data[n][e];\n }\n removeRow(n) {\n return J(this, n), this.data.splice(n, 1), this.rows -= 1, this;\n }\n addRow(n, e) {\n return e === void 0 && (e = n, n = this.rows), J(this, n, !0), e = Float64Array.from(ft(this, e)), this.data.splice(n, 0, e), this.rows += 1, this;\n }\n removeColumn(n) {\n Q(this, n);\n for (let e = 0; e < this.rows; e++) {\n const t = new Float64Array(this.columns - 1);\n for (let s = 0; s < n; s++)\n t[s] = this.data[e][s];\n for (let s = n + 1; s < this.columns; s++)\n t[s - 1] = this.data[e][s];\n this.data[e] = t;\n }\n return this.columns -= 1, this;\n }\n addColumn(n, e) {\n typeof e > \"u\" && (e = n, n = this.columns), Q(this, n, !0), e = mt(this, e);\n for (let t = 0; t < this.rows; t++) {\n const s = new Float64Array(this.columns + 1);\n let i = 0;\n for (; i < n; i++)\n s[i] = this.data[t][i];\n for (s[i++] = e[t]; i < this.columns + 1; i++)\n s[i] = this.data[t][i - 1];\n this.data[t] = s;\n }\n return this.columns += 1, this;\n }\n}\nTe(I, R);\nclass Ke extends I {\n constructor(n) {\n super(), this.data = n, this.rows = n.length, this.columns = n[0].length;\n }\n set(n, e, t) {\n return this.data[n][e] = t, this;\n }\n get(n, e) {\n return this.data[n][e];\n }\n}\nfunction se(r, n) {\n let e = 0;\n return Math.abs(r) > Math.abs(n) ? (e = n / r, Math.abs(r) * Math.sqrt(1 + e * e)) : n !== 0 ? (e = r / n, Math.abs(n) * Math.sqrt(1 + e * e)) : 0;\n}\nclass Je {\n constructor(n, e = {}) {\n const { assumeSymmetric: t = !1 } = e;\n if (n = Ke.checkMatrix(n), !n.isSquare())\n throw new Error(\"Matrix is not a square matrix\");\n if (n.isEmpty())\n throw new Error(\"Matrix must be non-empty\");\n let s = n.columns, i = new R(s, s), o = new Float64Array(s), h = new Float64Array(s), a = n, l, c, u = !1;\n if (t ? u = !0 : u = n.isSymmetric(), u) {\n for (l = 0; l < s; l++)\n for (c = 0; c < s; c++)\n i.set(l, c, a.get(l, c));\n Qe(s, h, o, i), He(s, h, o, i);\n } else {\n let m = new R(s, s), d = new Float64Array(s);\n for (c = 0; c < s; c++)\n for (l = 0; l < s; l++)\n m.set(l, c, a.get(l, c));\n ts(s, m, d, i), es(s, h, o, i, m);\n }\n this.n = s, this.e = h, this.d = o, this.V = i;\n }\n get realEigenvalues() {\n return Array.from(this.d);\n }\n get imaginaryEigenvalues() {\n return Array.from(this.e);\n }\n get eigenvectorMatrix() {\n return this.V;\n }\n get diagonalMatrix() {\n let n = this.n, e = this.e, t = this.d, s = new R(n, n), i, o;\n for (i = 0; i < n; i++) {\n for (o = 0; o < n; o++)\n s.set(i, o, 0);\n s.set(i, i, t[i]), e[i] > 0 ? s.set(i, i + 1, e[i]) : e[i] < 0 && s.set(i, i - 1, e[i]);\n }\n return s;\n }\n}\nfunction Qe(r, n, e, t) {\n let s, i, o, h, a, l, c, u;\n for (a = 0; a < r; a++)\n e[a] = t.get(r - 1, a);\n for (h = r - 1; h > 0; h--) {\n for (u = 0, o = 0, l = 0; l < h; l++)\n u = u + Math.abs(e[l]);\n if (u === 0)\n for (n[h] = e[h - 1], a = 0; a < h; a++)\n e[a] = t.get(h - 1, a), t.set(h, a, 0), t.set(a, h, 0);\n else {\n for (l = 0; l < h; l++)\n e[l] /= u, o += e[l] * e[l];\n for (s = e[h - 1], i = Math.sqrt(o), s > 0 && (i = -i), n[h] = u * i, o = o - s * i, e[h - 1] = s - i, a = 0; a < h; a++)\n n[a] = 0;\n for (a = 0; a < h; a++) {\n for (s = e[a], t.set(a, h, s), i = n[a] + t.get(a, a) * s, l = a + 1; l <= h - 1; l++)\n i += t.get(l, a) * e[l], n[l] += t.get(l, a) * s;\n n[a] = i;\n }\n for (s = 0, a = 0; a < h; a++)\n n[a] /= o, s += n[a] * e[a];\n for (c = s / (o + o), a = 0; a < h; a++)\n n[a] -= c * e[a];\n for (a = 0; a < h; a++) {\n for (s = e[a], i = n[a], l = a; l <= h - 1; l++)\n t.set(l, a, t.get(l, a) - (s * n[l] + i * e[l]));\n e[a] = t.get(h - 1, a), t.set(h, a, 0);\n }\n }\n e[h] = o;\n }\n for (h = 0; h < r - 1; h++) {\n if (t.set(r - 1, h, t.get(h, h)), t.set(h, h, 1), o = e[h + 1], o !== 0) {\n for (l = 0; l <= h; l++)\n e[l] = t.get(l, h + 1) / o;\n for (a = 0; a <= h; a++) {\n for (i = 0, l = 0; l <= h; l++)\n i += t.get(l, h + 1) * t.get(l, a);\n for (l = 0; l <= h; l++)\n t.set(l, a, t.get(l, a) - i * e[l]);\n }\n }\n for (l = 0; l <= h; l++)\n t.set(l, h + 1, 0);\n }\n for (a = 0; a < r; a++)\n e[a] = t.get(r - 1, a), t.set(r - 1, a, 0);\n t.set(r - 1, r - 1, 1), n[0] = 0;\n}\nfunction He(r, n, e, t) {\n let s, i, o, h, a, l, c, u, m, d, p, g, M, f, w, P;\n for (o = 1; o < r; o++)\n n[o - 1] = n[o];\n n[r - 1] = 0;\n let E = 0, b = 0, F = Number.EPSILON;\n for (l = 0; l < r; l++) {\n for (b = Math.max(b, Math.abs(e[l]) + Math.abs(n[l])), c = l; c < r && !(Math.abs(n[c]) <= F * b); )\n c++;\n if (c > l)\n do {\n for (s = e[l], u = (e[l + 1] - s) / (2 * n[l]), m = se(u, 1), u < 0 && (m = -m), e[l] = n[l] / (u + m), e[l + 1] = n[l] * (u + m), d = e[l + 1], i = s - e[l], o = l + 2; o < r; o++)\n e[o] -= i;\n for (E = E + i, u = e[c], p = 1, g = p, M = p, f = n[l + 1], w = 0, P = 0, o = c - 1; o >= l; o--)\n for (M = g, g = p, P = w, s = p * n[o], i = p * u, m = se(u, n[o]), n[o + 1] = w * m, w = n[o] / m, p = u / m, u = p * e[o] - w * s, e[o + 1] = i + w * (p * s + w * e[o]), a = 0; a < r; a++)\n i = t.get(a, o + 1), t.set(a, o + 1, w * t.get(a, o) + p * i), t.set(a, o, p * t.get(a, o) - w * i);\n u = -w * P * M * f * n[l] / d, n[l] = w * u, e[l] = p * u;\n } while (Math.abs(n[l]) > F * b);\n e[l] = e[l] + E, n[l] = 0;\n }\n for (o = 0; o < r - 1; o++) {\n for (a = o, u = e[o], h = o + 1; h < r; h++)\n e[h] < u && (a = h, u = e[h]);\n if (a !== o)\n for (e[a] = e[o], e[o] = u, h = 0; h < r; h++)\n u = t.get(h, o), t.set(h, o, t.get(h, a)), t.set(h, a, u);\n }\n}\nfunction ts(r, n, e, t) {\n let s = 0, i = r - 1, o, h, a, l, c, u, m;\n for (u = s + 1; u <= i - 1; u++) {\n for (m = 0, l = u; l <= i; l++)\n m = m + Math.abs(n.get(l, u - 1));\n if (m !== 0) {\n for (a = 0, l = i; l >= u; l--)\n e[l] = n.get(l, u - 1) / m, a += e[l] * e[l];\n for (h = Math.sqrt(a), e[u] > 0 && (h = -h), a = a - e[u] * h, e[u] = e[u] - h, c = u; c < r; c++) {\n for (o = 0, l = i; l >= u; l--)\n o += e[l] * n.get(l, c);\n for (o = o / a, l = u; l <= i; l++)\n n.set(l, c, n.get(l, c) - o * e[l]);\n }\n for (l = 0; l <= i; l++) {\n for (o = 0, c = i; c >= u; c--)\n o += e[c] * n.get(l, c);\n for (o = o / a, c = u; c <= i; c++)\n n.set(l, c, n.get(l, c) - o * e[c]);\n }\n e[u] = m * e[u], n.set(u, u - 1, m * h);\n }\n }\n for (l = 0; l < r; l++)\n for (c = 0; c < r; c++)\n t.set(l, c, l === c ? 1 : 0);\n for (u = i - 1; u >= s + 1; u--)\n if (n.get(u, u - 1) !== 0) {\n for (l = u + 1; l <= i; l++)\n e[l] = n.get(l, u - 1);\n for (c = u; c <= i; c++) {\n for (h = 0, l = u; l <= i; l++)\n h += e[l] * t.get(l, c);\n for (h = h / e[u] / n.get(u, u - 1), l = u; l <= i; l++)\n t.set(l, c, t.get(l, c) + h * e[l]);\n }\n }\n}\nfunction es(r, n, e, t, s) {\n let i = r - 1, o = 0, h = r - 1, a = Number.EPSILON, l = 0, c = 0, u = 0, m = 0, d = 0, p = 0, g = 0, M = 0, f, w, P, E, b, F, j, y, x, B, V, G, C, T, k;\n for (f = 0; f < r; f++)\n for ((f < o || f > h) && (e[f] = s.get(f, f), n[f] = 0), w = Math.max(f - 1, 0); w < r; w++)\n c = c + Math.abs(s.get(f, w));\n for (; i >= o; ) {\n for (E = i; E > o && (p = Math.abs(s.get(E - 1, E - 1)) + Math.abs(s.get(E, E)), p === 0 && (p = c), !(Math.abs(s.get(E, E - 1)) < a * p)); )\n E--;\n if (E === i)\n s.set(i, i, s.get(i, i) + l), e[i] = s.get(i, i), n[i] = 0, i--, M = 0;\n else if (E === i - 1) {\n if (j = s.get(i, i - 1) * s.get(i - 1, i), u = (s.get(i - 1, i - 1) - s.get(i, i)) / 2, m = u * u + j, g = Math.sqrt(Math.abs(m)), s.set(i, i, s.get(i, i) + l), s.set(i - 1, i - 1, s.get(i - 1, i - 1) + l), y = s.get(i, i), m >= 0) {\n for (g = u >= 0 ? u + g : u - g, e[i - 1] = y + g, e[i] = e[i - 1], g !== 0 && (e[i] = y - j / g), n[i - 1] = 0, n[i] = 0, y = s.get(i, i - 1), p = Math.abs(y) + Math.abs(g), u = y / p, m = g / p, d = Math.sqrt(u * u + m * m), u = u / d, m = m / d, w = i - 1; w < r; w++)\n g = s.get(i - 1, w), s.set(i - 1, w, m * g + u * s.get(i, w)), s.set(i, w, m * s.get(i, w) - u * g);\n for (f = 0; f <= i; f++)\n g = s.get(f, i - 1), s.set(f, i - 1, m * g + u * s.get(f, i)), s.set(f, i, m * s.get(f, i) - u * g);\n for (f = o; f <= h; f++)\n g = t.get(f, i - 1), t.set(f, i - 1, m * g + u * t.get(f, i)), t.set(f, i, m * t.get(f, i) - u * g);\n } else\n e[i - 1] = y + u, e[i] = y + u, n[i - 1] = g, n[i] = -g;\n i = i - 2, M = 0;\n } else {\n if (y = s.get(i, i), x = 0, j = 0, E < i && (x = s.get(i - 1, i - 1), j = s.get(i, i - 1) * s.get(i - 1, i)), M === 10) {\n for (l += y, f = o; f <= i; f++)\n s.set(f, f, s.get(f, f) - y);\n p = Math.abs(s.get(i, i - 1)) + Math.abs(s.get(i - 1, i - 2)), y = x = 0.75 * p, j = -0.4375 * p * p;\n }\n if (M === 30 && (p = (x - y) / 2, p = p * p + j, p > 0)) {\n for (p = Math.sqrt(p), x < y && (p = -p), p = y - j / ((x - y) / 2 + p), f = o; f <= i; f++)\n s.set(f, f, s.get(f, f) - p);\n l += p, y = x = j = 0.964;\n }\n for (M = M + 1, b = i - 2; b >= E && (g = s.get(b, b), d = y - g, p = x - g, u = (d * p - j) / s.get(b + 1, b) + s.get(b, b + 1), m = s.get(b + 1, b + 1) - g - d - p, d = s.get(b + 2, b + 1), p = Math.abs(u) + Math.abs(m) + Math.abs(d), u = u / p, m = m / p, d = d / p, !(b === E || Math.abs(s.get(b, b - 1)) * (Math.abs(m) + Math.abs(d)) < a * (Math.abs(u) * (Math.abs(s.get(b - 1, b - 1)) + Math.abs(g) + Math.abs(s.get(b + 1, b + 1)))))); )\n b--;\n for (f = b + 2; f <= i; f++)\n s.set(f, f - 2, 0), f > b + 2 && s.set(f, f - 3, 0);\n for (P = b; P <= i - 1 && (T = P !== i - 1, P !== b && (u = s.get(P, P - 1), m = s.get(P + 1, P - 1), d = T ? s.get(P + 2, P - 1) : 0, y = Math.abs(u) + Math.abs(m) + Math.abs(d), y !== 0 && (u = u / y, m = m / y, d = d / y)), y !== 0); P++)\n if (p = Math.sqrt(u * u + m * m + d * d), u < 0 && (p = -p), p !== 0) {\n for (P !== b ? s.set(P, P - 1, -p * y) : E !== b && s.set(P, P - 1, -s.get(P, P - 1)), u = u + p, y = u / p, x = m / p, g = d / p, m = m / u, d = d / u, w = P; w < r; w++)\n u = s.get(P, w) + m * s.get(P + 1, w), T && (u = u + d * s.get(P + 2, w), s.set(P + 2, w, s.get(P + 2, w) - u * g)), s.set(P, w, s.get(P, w) - u * y), s.set(P + 1, w, s.get(P + 1, w) - u * x);\n for (f = 0; f <= Math.min(i, P + 3); f++)\n u = y * s.get(f, P) + x * s.get(f, P + 1), T && (u = u + g * s.get(f, P + 2), s.set(f, P + 2, s.get(f, P + 2) - u * d)), s.set(f, P, s.get(f, P) - u), s.set(f, P + 1, s.get(f, P + 1) - u * m);\n for (f = o; f <= h; f++)\n u = y * t.get(f, P) + x * t.get(f, P + 1), T && (u = u + g * t.get(f, P + 2), t.set(f, P + 2, t.get(f, P + 2) - u * d)), t.set(f, P, t.get(f, P) - u), t.set(f, P + 1, t.get(f, P + 1) - u * m);\n }\n }\n }\n if (c !== 0) {\n for (i = r - 1; i >= 0; i--)\n if (u = e[i], m = n[i], m === 0)\n for (E = i, s.set(i, i, 1), f = i - 1; f >= 0; f--) {\n for (j = s.get(f, f) - u, d = 0, w = E; w <= i; w++)\n d = d + s.get(f, w) * s.get(w, i);\n if (n[f] < 0)\n g = j, p = d;\n else if (E = f, n[f] === 0 ? s.set(f, i, j !== 0 ? -d / j : -d / (a * c)) : (y = s.get(f, f + 1), x = s.get(f + 1, f), m = (e[f] - u) * (e[f] - u) + n[f] * n[f], F = (y * p - g * d) / m, s.set(f, i, F), s.set(\n f + 1,\n i,\n Math.abs(y) > Math.abs(g) ? (-d - j * F) / y : (-p - x * F) / g\n )), F = Math.abs(s.get(f, i)), a * F * F > 1)\n for (w = f; w <= i; w++)\n s.set(w, i, s.get(w, i) / F);\n }\n else if (m < 0)\n for (E = i - 1, Math.abs(s.get(i, i - 1)) > Math.abs(s.get(i - 1, i)) ? (s.set(i - 1, i - 1, m / s.get(i, i - 1)), s.set(i - 1, i, -(s.get(i, i) - u) / s.get(i, i - 1))) : (k = Ct(0, -s.get(i - 1, i), s.get(i - 1, i - 1) - u, m), s.set(i - 1, i - 1, k[0]), s.set(i - 1, i, k[1])), s.set(i, i - 1, 0), s.set(i, i, 1), f = i - 2; f >= 0; f--) {\n for (B = 0, V = 0, w = E; w <= i; w++)\n B = B + s.get(f, w) * s.get(w, i - 1), V = V + s.get(f, w) * s.get(w, i);\n if (j = s.get(f, f) - u, n[f] < 0)\n g = j, d = B, p = V;\n else if (E = f, n[f] === 0 ? (k = Ct(-B, -V, j, m), s.set(f, i - 1, k[0]), s.set(f, i, k[1])) : (y = s.get(f, f + 1), x = s.get(f + 1, f), G = (e[f] - u) * (e[f] - u) + n[f] * n[f] - m * m, C = (e[f] - u) * 2 * m, G === 0 && C === 0 && (G = a * c * (Math.abs(j) + Math.abs(m) + Math.abs(y) + Math.abs(x) + Math.abs(g))), k = Ct(\n y * d - g * B + m * V,\n y * p - g * V - m * B,\n G,\n C\n ), s.set(f, i - 1, k[0]), s.set(f, i, k[1]), Math.abs(y) > Math.abs(g) + Math.abs(m) ? (s.set(\n f + 1,\n i - 1,\n (-B - j * s.get(f, i - 1) + m * s.get(f, i)) / y\n ), s.set(\n f + 1,\n i,\n (-V - j * s.get(f, i) - m * s.get(f, i - 1)) / y\n )) : (k = Ct(\n -d - x * s.get(f, i - 1),\n -p - x * s.get(f, i),\n g,\n m\n ), s.set(f + 1, i - 1, k[0]), s.set(f + 1, i, k[1]))), F = Math.max(Math.abs(s.get(f, i - 1)), Math.abs(s.get(f, i))), a * F * F > 1)\n for (w = f; w <= i; w++)\n s.set(w, i - 1, s.get(w, i - 1) / F), s.set(w, i, s.get(w, i) / F);\n }\n for (f = 0; f < r; f++)\n if (f < o || f > h)\n for (w = f; w < r; w++)\n t.set(f, w, s.get(f, w));\n for (w = r - 1; w >= o; w--)\n for (f = o; f <= h; f++) {\n for (g = 0, P = o; P <= Math.min(w, h); P++)\n g = g + t.get(f, P) * s.get(P, w);\n t.set(f, w, g);\n }\n }\n}\nfunction Ct(r, n, e, t) {\n let s, i;\n return Math.abs(e) > Math.abs(t) ? (s = t / e, i = e + s * t, [(r + s * n) / i, (n - s * r) / i]) : (s = e / t, i = t + s * e, [(s * r + n) / i, (s * n - r) / i]);\n}\nfunction Lt(r, n, e) {\n const t = r / e, s = n / e;\n if (!(isFinite(t) && isFinite(s))) {\n const a = -r / n;\n return isFinite(a) ? [a] : r == 0 && n == 0 ? [0] : [];\n }\n const i = s * s - 4 * t;\n let o = 0;\n if (isFinite(i)) {\n if (i < 0)\n return [];\n if (i == 0)\n return [-0.5 * s];\n o = -0.5 * (s + Pt(Math.sqrt(i), s));\n } else\n o = -s;\n const h = t / o;\n return isFinite(h) ? h > o ? [o, h] : [h, o] : [o];\n}\nfunction ae(r, n, e, t) {\n const s = e / (3 * t), i = n / (3 * t), o = r / t;\n if (!(isFinite(o) && isFinite(i) && isFinite(s)))\n return Lt(r, n, e);\n const h = -s * s + i, a = -i * s + o, l = s * o - i * i, c = 4 * h * l - a * a, u = -2 * s * h + a;\n if (c < 0) {\n const m = Math.sqrt(-0.25 * c), d = -0.5 * u;\n return [Math.cbrt(d + m) + Math.cbrt(d - m) - s];\n } else if (c == 0) {\n const m = Pt(Math.sqrt(-h), u);\n return [m - s, -2 * m - s];\n } else {\n const m = Math.atan2(Math.sqrt(c), -u) / 3, d = Math.cos(m), p = Math.sin(m) * Math.sqrt(3), g = 0.5 * (-d + p), M = 0.5 * (-d - p), f = 2 * Math.sqrt(-h);\n return [f * d - s, f * g - s, f * M - s];\n }\n}\nfunction gs(r, n, e, t, s) {\n if (s == 0)\n return ae(r, n, e, t);\n const i = t / s, o = e / s, h = n / s, a = r / s;\n let l = ne(i, o, h, a, !1);\n if (l !== null)\n return l;\n const c = 716e74;\n for (let u = 0; u < 2; u++)\n if (l = ne(\n i / c,\n o / (c * c),\n h / (c * c * c),\n a / (c * c * c * c),\n u != 0\n ), l !== null) {\n for (let m = 0; m < l.length; m++)\n l[m] *= c;\n return l;\n }\n return [];\n}\nfunction ht(r, n) {\n return n == 0 ? Math.abs(r) : Math.abs((r - n) / n);\n}\nfunction ne(r, n, e, t, s) {\n const i = ss(r, n, e, t, s);\n if (i !== null && i.length == 4) {\n let o = [];\n for (let h = 0; h < 2; h++) {\n const a = i[h * 2], l = i[h * 2 + 1];\n o = o.concat(Lt(l, a, 1));\n }\n return o;\n }\n return null;\n}\nfunction ss(r, n, e, t, s) {\n function i(q, $, v, L) {\n const A = ht(q + v, r), z = ht($ + q * v + L, n), U = ht($ * v + q * L, e);\n return A + z + U;\n }\n function o(q, $, v, L) {\n return i(q, $, v, L) + ht($ * L, t);\n }\n const h = 9 * r * r - 24 * n, a = h >= 0 ? -2 * n / (3 * r + Pt(Math.sqrt(h), r)) : -0.25 * r, l = r + 4 * a, c = n + 3 * a * (r + 2 * a), u = e + a * (2 * n + a * (3 * r + 4 * a)), m = t + a * (e + a * (n + a * (r + a)));\n let d = 0, p = 0;\n const g = 349e100;\n if (s) {\n const q = l / g, $ = c / g, v = u / g, L = m / g;\n d = q * v - 4 / g * L - 1 / 3 * $ * $, p = (q * v - 8 / g * L - 2 / 9 * $ * $) * (1 / 3) * $ - v * (v / g) - q * q * L;\n } else\n d = l * u - 4 * m - 1 / 3 * c * c, p = (l * u + 8 * m - 2 / 9 * c * c) * (1 / 3) * c - u * u - l * l * m;\n if (!isFinite(d) && isFinite(p))\n return null;\n let M = ns(d, p);\n s && (M *= g);\n const f = r * 0.5, w = 1 / 6 * n + 0.5 * M, P = e - r * w, E = 2 / 3 * n - M - f * f, b = 0.5 * P / E, F = 2 * (t - w * w) / P, j = 0.5 * P / F;\n let y = 0, x = 0, B = 0;\n for (let q = 0; q < 3; q++) {\n const $ = q == 1 ? j : E, v = q == 0 ? b : F, L = ht($ + f * f + 2 * w, n), A = ht(2 * ($ * v + f * w), e), z = ht($ * v * v + w * w, t), U = L + A + z;\n (q == 0 || U < B) && (y = $, x = v, B = U);\n }\n const V = y, G = x;\n let C = 0, T = 0, k = 0, S = 0;\n if (V < 0) {\n const q = Math.sqrt(-V);\n if (C = f + q, T = w + q * G, k = f - q, S = w - q * G, Math.abs(S) < Math.abs(T) ? S = t / T : Math.abs(S) > Math.abs(T) && (T = t / S), Math.abs(C) != Math.abs(k)) {\n let $ = null, v = null;\n if (Math.abs(C) < Math.abs(k)) {\n const A = (e - T * k) / S, z = (n - S - T) / k;\n $ = [r - k, A, z], v = [k, k, k];\n } else {\n const A = (e - C * S) / T, z = (n - S - T) / C, U = r - C;\n $ = [C, C, C], v = [U, A, z];\n }\n let L = 0;\n for (let A = 0; A < 3; A++) {\n const z = $[A], U = v[A];\n if (isFinite(z) && isFinite(U)) {\n const et = i(z, T, U, S);\n (A == 0 || et < L) && (C = z, k = U, L = et);\n }\n }\n }\n } else if (V == 0) {\n const q = t - w * w;\n C = f, T = w + Math.sqrt(-q), k = f, S = w - Math.sqrt(-q), Math.abs(T) > Math.abs(S) ? S = t / T : Math.abs(S) > Math.abs(T) && (T = t / S);\n } else\n return [];\n let it = o(C, T, k, S);\n for (let q = 0; q < 8 && it != 0; q++) {\n const $ = T * S - t, v = T * k + C * S - e, L = T + C * k + S - n, A = C + k - r, z = C - k, U = T * T - T * (k * z + 2 * S) + S * (C * z + S);\n if (U == 0)\n break;\n const et = 1 / U, H = S - T, rt = T * k - C * S, zt = z * $ + H * v + rt * L - (T * H + C * rt) * A, At = (C * z + H) * $ - T * (z * v + H * L + rt * A), Vt = -z * $ - H * v - rt * L + (k * rt + S * H) * A, Ot = -(k * z + H) * $ + S * (z * v + H * L + rt * A), bt = C - et * zt, jt = T - et * At, St = k - et * Vt, kt = S - et * Ot, Rt = o(bt, jt, St, kt);\n if (Rt < it)\n C = bt, T = jt, k = St, S = kt, it = Rt;\n else\n break;\n }\n return [C, T, k, S];\n}\nfunction ns(r, n) {\n const e = -0.3333333333333333 * r, t = 0.5 * n;\n let s, i = null;\n if ((Math.abs(e) >= 1e102 || Math.abs(t) >= 1e164) && (Math.abs(e) < Math.abs(t) ? i = 1 - e * (e / t) * (e / t) : i = Math.sign(e) * (t / e * (t / e) / e - 1)), i !== null && t == 0)\n r > 0 ? s = 0 : s = Math.sqrt(-r);\n else if (i !== null ? i < 0 : t * t < e * e * e) {\n const l = i !== null ? t / e / Math.sqrt(e) : t / Math.sqrt(e * e * e);\n s = -2 * Math.sqrt(e) * Pt(Math.cos(Math.acos(Math.abs(l)) * (1 / 3)), l);\n } else {\n let l;\n i !== null ? Math.abs(e) < Math.abs(t) ? l = -t * (1 + Math.sqrt(i)) : l = -t - Pt(Math.sqrt(Math.abs(e)) * e * Math.sqrt(i), t) : l = Math.cbrt(-t - Pt(Math.sqrt(t * t - e * e * e), t));\n const c = l == 0 ? 0 : e / l;\n s = l + c;\n }\n let o = s, h = (o * o + r) * o + n;\n const a = 222045e-21;\n if (Math.abs(h) < a * Math.max(o * o * o, r * o, n))\n return o;\n for (let l = 0; l < 8; l++) {\n const c = 3 * o * o + r;\n if (c == 0)\n break;\n const u = o - h / c, m = (u * u + r) * u + n;\n if (m == 0)\n return u;\n if (Math.abs(m) >= Math.abs(h))\n break;\n o = u, h = m;\n }\n return o;\n}\nfunction Pt(r, n) {\n const e = Math.abs(r);\n return n < 0 ? -e : e;\n}\nfunction is(r, n = 1e-9) {\n if (r[r.length - 1] == 0)\n return is(r.slice(0, -1), n);\n const e = new R([\n r.slice(0, -1).reverse().map((s) => -s / r[r.length - 1]),\n ...Array.from({ length: r.length - 2 }, (s, i) => {\n const o = new Array(r.length - 1).fill(0);\n return o[i] = 1, o;\n })\n ]), t = new Je(e);\n return t.realEigenvalues.filter(\n (s, i) => Math.abs(t.imaginaryEigenvalues[i]) < n\n );\n}\nconst rs = (r, n, e) => [r[0] * (1 - e) + n[0] * e, r[1] * (1 - e) + n[1] * e];\nfunction os(r) {\n const n = [];\n for (let e = 0; e < r.length - 1; e++)\n n.push([r[e], r[e + 1]]);\n return n;\n}\nfunction Wt(r, n) {\n const e = os(r).map(([t, s]) => rs(t, s, n));\n return r.length === 2 ? [e] : [...Wt(e, n), e];\n}\nclass gt extends Et {\n constructor(e, t, s, i) {\n super(e, t);\n _(this, \"segmentType\", \"CUBIC_BEZIER\");\n _(this, \"firstControlPoint\");\n _(this, \"lastControlPoint\");\n _(this, \"_boundingBox\", null);\n _(this, \"_polynomialCoefficients\", null);\n this.firstControlPoint = s, this.lastControlPoint = i;\n }\n get midPoint() {\n return this.paramPoint(0.5);\n }\n get boundingBox() {\n if (this._boundingBox === null) {\n const e = (t) => {\n const [s, i, o, h] = [\n this.firstPoint[t],\n this.firstControlPoint[t],\n this.lastControlPoint[t],\n this.lastPoint[t]\n ], a = -s + 3 * i - 3 * o + h, l = 2 * s - 4 * i + 2 * o, c = -s + i;\n return Lt(c, l, a).filter(\n (u) => u >= -this.precision && u <= 1 + this.precision\n );\n };\n this._boundingBox = Dt([\n this.firstPoint,\n ...e(0).map((t) => this.paramPoint(t)),\n ...e(1).map((t) => this.paramPoint(t)),\n this.lastPoint\n ]).grow(this.precision);\n }\n return this._boundingBox;\n }\n clone() {\n return new gt(\n this.firstPoint,\n this.lastPoint,\n this.firstControlPoint,\n this.lastControlPoint\n );\n }\n reverse() {\n return new gt(\n this.lastPoint,\n this.firstPoint,\n this.lastControlPoint,\n this.firstControlPoint\n );\n }\n isSame(e) {\n return e.segmentType !== \"CUBIC_BEZIER\" ? !1 : N(this.firstPoint, e.firstPoint) && N(this.lastPoint, e.lastPoint) && N(this.firstControlPoint, e.firstControlPoint) && N(this.lastControlPoint, e.lastControlPoint);\n }\n distanceFrom(e) {\n const s = oe((i) => Mt(this.paramPoint(i), e), this.precision);\n return s.argMin < -this.precision || s.argMin > 1 + this.precision ? Math.min(\n Y(this.firstPoint, e),\n Y(this.lastPoint, e)\n ) : Math.sqrt(s.fMin);\n }\n isOnSegment(e) {\n if (!this.boundingBox.contains(e))\n return !1;\n try {\n const t = this.pointToParam(e);\n return t >= -this.precision && t <= 1 + this.precision;\n } catch {\n return !1;\n }\n }\n gradientAt(e) {\n const t = 1 - e, s = t * t, i = e * e, o = 3 * s, h = 6 * t * e, a = 3 * i, l = O(this.firstControlPoint, this.firstPoint), c = O(this.lastControlPoint, this.firstControlPoint), u = O(this.lastPoint, this.lastControlPoint);\n return [\n o * l[0] + h * c[0] + a * u[0],\n o * l[1] + h * c[1] + a * u[1]\n ];\n }\n tangentAt(e) {\n const t = this.pointToParam(e);\n return W(this.gradientAt(t));\n }\n get tangentAtFirstPoint() {\n return W(O(this.firstControlPoint, this.firstPoint));\n }\n get tangentAtLastPoint() {\n return W(O(this.lastControlPoint, this.lastPoint));\n }\n normalAt(e) {\n const t = this.tangentAt(e);\n return K(t);\n }\n splitAtParameters(e, t = null) {\n const s = [...e];\n s.sort((o, h) => o - h);\n let i = {\n originalParam: 0,\n param: 0,\n p0: this.firstPoint,\n p1: this.firstControlPoint,\n p2: this.lastControlPoint\n };\n return s.flatMap((o, h) => {\n if (o - i.originalParam < this.precision)\n return [];\n let a = !1;\n o > 1 - this.precision && (a = !0);\n const l = (o - i.originalParam) / (1 - i.originalParam), c = Wt(\n [\n i.p0,\n i.p1,\n i.p2,\n this.lastPoint\n ],\n a ? 1 : l\n ), u = a ? this.lastPoint : (t == null ? void 0 : t.get(o)) ?? c[0][0], m = c[1][0], d = c[2][0], p = c[1][1], g = c[2][2], M = new gt(\n i.p0,\n u,\n d,\n m\n );\n return i = {\n param: l,\n originalParam: o,\n p0: u,\n p1: p,\n p2: g\n }, h === s.length - 1 && !a ? [\n M,\n new gt(\n i.p0,\n this.lastPoint,\n i.p1,\n i.p2\n )\n ] : M;\n });\n }\n splitAt(e) {\n let t;\n if (Array.isArray(e) && e.length === 0)\n return [this];\n Array.isArray(e[0]) ? t = e : t = [e];\n const s = t.map((o) => this.pointToParam(o)), i = new Map(\n Nt([s, t])\n );\n return this.splitAtParameters(s, i);\n }\n transform(e) {\n return new gt(\n e.transform(this.firstPoint),\n e.transform(this.lastPoint),\n e.transform(this.firstControlPoint),\n e.transform(this.lastControlPoint)\n );\n }\n paramPoint(e) {\n const t = 1 - e, s = t * t, i = e * e, o = s * t, h = 3 * s * e, a = 3 * t * i, l = i * e;\n return [\n o * this.firstPoint[0] + h * this.firstControlPoint[0] + a * this.lastControlPoint[0] + l * this.lastPoint[0],\n o * this.firstPoint[1] + h * this.firstControlPoint[1] + a * this.lastControlPoint[1] + l * this.lastPoint[1]\n ];\n }\n get polynomialCoefficients() {\n if (this._polynomialCoefficients === null) {\n const e = (t) => {\n const s = this.firstPoint[t], i = this.firstControlPoint[t], o = this.lastControlPoint[t], h = this.lastPoint[t], a = -s + 3 * i - 3 * o + h, l = 3 * s - 6 * i + 3 * o, c = -3 * s + 3 * i;\n return [s, c, l, a];\n };\n this._polynomialCoefficients = [e(0), e(1)];\n }\n return this._polynomialCoefficients;\n }\n paramsAtY(e) {\n const [t, s, i, o] = this.polynomialCoefficients[1];\n return ae(t - e, s, i, o).filter(\n (h) => h >= -this.precision && h <= 1 + this.precision\n );\n }\n pointToParam(e) {\n const t = this.paramsAtY(e[1]);\n if (t.length === 0)\n throw new Error(\"Point is not on the curve\");\n const s = (o) => Math.abs(this.paramPoint(o)[0] - e[0]) <= this.precision, i = t.find(s);\n if (i === void 0)\n throw new Error(\"Point is not on the curve\");\n return i;\n }\n}\nclass pt extends Et {\n constructor(e, t, s, i, o, h, a = !1, {\n ignoreChecks: l = !1,\n angleUnits: c = \"deg\"\n } = {}) {\n super(e, t);\n _(this, \"segmentType\", \"ELLIPSE_ARC\");\n // I would need to do some more work to improve the precision that I can have\n // on an ellipse with intersection algorithms\n _(this, \"precision\", 1e-6);\n _(this, \"majorRadius\");\n _(this, \"minorRadius\");\n _(this, \"center\");\n _(this, \"tiltAngle\");\n _(this, \"clockwise\");\n _(this, \"_coefficients\", null);\n _(this, \"_boundingBox\");\n _(this, \"_linearExentricity\");\n _(this, \"_exentricity\");\n _(this, \"_focals\");\n _(this, \"_ellipseReferenceFrameTransform\");\n _(this, \"_reverseEllipseReferenceFrameTransform\");\n _(this, \"_rotateFromEllipseReferenceFrame\");\n _(this, \"_firstAngle\");\n _(this, \"_lastAngle\");\n _(this, \"_deltaAngle\");\n this.center = s;\n const u = i >= o;\n this.majorRadius = u ? i : o, this.minorRadius = u ? o : i;\n const m = c === \"deg\" ? h * Yt : h;\n if (this.tiltAngle = lt(\n u ? m : m + Math.PI / 2\n ), this.clockwise = a, !l) {\n if (N(e, t))\n throw new Error(\"Invalid arc, cannot be a full circle\");\n if (!this.isPointOnEllipse(e))\n throw new Error(\n `First point ${D(\n e\n )} not on the ellipse defined by ${this.info}`\n );\n if (!this.isPointOnEllipse(t))\n throw new Error(\n `Last point ${D(t)} not on the ellipse defined by ${this.info}`\n );\n if (Math.abs(this.majorRadius - this.minorRadius) < this.precision)\n throw new Error(\n \"Both radii should be different, create an arc instead\"\n );\n }\n }\n get coefficients() {\n if (this._coefficients === null) {\n const [e, t] = this.center, s = this.majorRadius * this.majorRadius, i = this.minorRadius * this.minorRadius, o = Math.cos(this.tiltAngle), h = Math.sin(this.tiltAngle), a = s * h * h + i * o * o, l = 2 * (i - s) * h * o, c = s * o * o + i * h * h;\n this._coefficients = {\n x2: a,\n xy: l,\n y2: c,\n x: -2 * a * e - l * t,\n y: -2 * c * t - l * e,\n c: a * e * e + l * e * t + c * t * t - s * i\n };\n }\n return this._coefficients;\n }\n get info() {\n return `ELLIPSE_ARC(${D(this.firstPoint)}, ${D(\n this.lastPoint\n )}, ${D(this.center)}, ${this.majorRadius}, ${this.minorRadius}, ${this.tiltAngle * fe}, ${this.clockwise ? \"CW\" : \"CCW\"})`;\n }\n reverse() {\n return new pt(\n this.lastPoint,\n this.firstPoint,\n this.center,\n this.majorRadius,\n this.minorRadius,\n this.tiltAngle,\n !this.clockwise,\n { ignoreChecks: !0, angleUnits: \"rad\" }\n );\n }\n clone() {\n return new pt(\n this.firstPoint,\n this.lastPoint,\n this.center,\n this.majorRadius,\n this.minorRadius,\n this.tiltAngle,\n this.clockwise,\n { ignoreChecks: !0, angleUnits: \"rad\" }\n );\n }\n computeEllipseExtrema() {\n const e = Math.tan(this.tiltAngle), t = this.minorRadius / this.majorRadius, s = -Math.atan(t * e), i = Math.atan(t / e);\n return [s, Math.PI + s, i, Math.PI + i].map((h) => this.thetaToParam(h)).filter((h) => this.isValidParameter(h)).map((h) => this.paramPoint(h));\n }\n get boundingBox() {\n if (this._boundingBox === void 0) {\n const e = this.computeEllipseExtrema(), t = [\n this.firstPoint,\n this.lastPoint,\n ...e\n ];\n this._boundingBox = Dt(t).grow(this.precision);\n }\n return this._boundingBox;\n }\n get linearExentricity() {\n return this._linearExentricity === void 0 && (this._linearExentricity = Math.sqrt(\n this.majorRadius * this.majorRadius - this.minorRadius * this.minorRadius\n )), this._linearExentricity;\n }\n get exentricity() {\n return this._exentricity === void 0 && (this._exentricity = this.linearExentricity / this.majorRadius), this._exentricity;\n }\n get focals() {\n if (this._focals === void 0) {\n const e = this.majorAxis;\n this._focals = [\n nt(this.center, at(e, this.linearExentricity)),\n nt(this.center, at(e, -this.linearExentricity))\n ];\n }\n return this._focals;\n }\n get majorAxis() {\n return yt(1, this.tiltAngle);\n }\n paramPoint(e) {\n const t = this.firstAngle + e * this.deltaAngle * (this.clockwise ? -1 : 1);\n return this.reverseEllipseReferenceFrameTransform.transform([\n this.majorRadius * Math.cos(t),\n this.minorRadius * Math.sin(t)\n ]);\n }\n pointToParam(e) {\n if (!this.isPointOnEllipse(e))\n throw new Error(\n `Point ${D(e)} not on the ellipse defined by ${this.repr}`\n );\n const t = this.thetaToParam(this.pointTheta(e));\n if (!this.isValidParameter(t))\n throw new Error(\n `Point ${D(e)} is not on segment ${this.repr}`\n );\n return t;\n }\n get midPoint() {\n return this.paramPoint(0.5);\n }\n isValidParameter(e) {\n return 1 - e >= -this.precision && e >= -this.precision;\n }\n isSame(e) {\n return N(this.center, e.center) && Math.abs(this.majorRadius - e.majorRadius) < this.precision && Math.abs(this.minorRadius - e.minorRadius) < this.precision && (Math.abs(this.tiltAngle - e.tiltAngle) < this.precision || Math.abs(Math.abs(this.tiltAngle - e.tiltAngle) - Math.PI) < this.precision) && (N(this.firstPoint, e.firstPoint) && this.clockwise === e.clockwise || N(this.firstPoint, e.lastPoint) && this.clockwise !== e.clockwise);\n }\n pointTheta(e) {\n const t = this.ellipseReferenceFrameTransform.transform(e), s = Math.atan2(\n t[1] / this.minorRadius,\n t[0] / this.majorRadius\n );\n return lt(s);\n }\n thetaToParam(e) {\n return xt(this.firstAngle, lt(e), this.clockwise) / this.deltaAngle;\n }\n isPointOnEllipse(e) {\n const [t, s] = this.focals, i = Y(e, t), o = Y(e, s);\n return Math.abs(2 * this.majorRadius - i - o) < this.precision;\n }\n isOnSegment(e) {\n return this.isPointOnEllipse(e) ? this.isValidParameter(this.thetaToParam(this.pointTheta(e))) : !1;\n }\n distanceFrom(e) {\n let t;\n if (N(e, this.center) ? t = nt(\n this.center,\n at(K(this.majorAxis), this.minorRadius)\n ) : t = this.reverseEllipseReferenceFrameTransform.transform(\n ls(\n this.majorRadius,\n this.minorRadius,\n this.ellipseReferenceFrameTransform.transform(e)\n )\n ), this.isValidParameter(this.thetaToParam(this.pointTheta(e))))\n return Y(e, t);\n if (we(e, this.majorAxis, this.center)) {\n const s = lt(\n 2 * Math.PI - this.pointTheta(e)\n ), i = this.thetaToParam(s);\n if (this.isValidParameter(i))\n return Y(e, this.paramPoint(i));\n }\n return Math.min(\n Y(e, this.firstPoint),\n Y(e, this.lastPoint)\n );\n }\n get ellipseReferenceFrameTransform() {\n return this._ellipseReferenceFrameTransform === void 0 && (this._ellipseReferenceFrameTransform = new X().rotate(-this.tiltAngle).translate(-this.center[0], -this.center[1])), this._ellipseReferenceFrameTransform;\n }\n get reverseEllipseReferenceFrameTransform() {\n return this._reverseEllipseReferenceFrameTransform === void 0 && (this._reverseEllipseReferenceFrameTransform = new X().translate(this.center[0], this.center[1]).rotate(this.tiltAngle)), this._reverseEllipseReferenceFrameTransform;\n }\n get rotateFromEllipseReferenceFrame() {\n return this._rotateFromEllipseReferenceFrame === void 0 && (this._rotateFromEllipseReferenceFrame = new X().rotate(\n this.tiltAngle\n )), this._rotateFromEllipseReferenceFrame;\n }\n get firstAngle() {\n return this._firstAngle === void 0 && (this._firstAngle = this.pointTheta(this.firstPoint)), this._firstAngle;\n }\n get lastAngle() {\n return this._lastAngle === void 0 && (this._lastAngle = this.pointTheta(this.lastPoint)), this._lastAngle;\n }\n get deltaAngle() {\n return this._deltaAngle === void 0 && (this._deltaAngle = xt(\n this.firstAngle,\n this.lastAngle,\n this.clockwise\n )), this._deltaAngle;\n }\n normalAt(e) {\n const t = this.tangentAt(e);\n return this.clockwise ? K(t) : $t(t);\n }\n gradientAt(e) {\n const t = this.firstAngle + e * this.deltaAngle * (this.clockwise ? -1 : 1), s = -this.majorRadius * this.deltaAngle * Math.sin(t), i = this.minorRadius * this.deltaAngle * Math.cos(t), o = this.clockwise ? [-s, -i] : [s, i];\n return this.rotateFromEllipseReferenceFrame.transform(o);\n }\n tangentAt(e) {\n const t = this.pointTheta(e), s = -this.majorRadius * Math.sin(t), i = this.minorRadius * Math.cos(t), o = this.clockwise ? [-s, -i] : [s, i];\n return W(this.rotateFromEllipseReferenceFrame.transform(o));\n }\n get tangentAtFirstPoint() {\n const e = -this.majorRadius * Math.sin(this.firstAngle), t = this.minorRadius * Math.cos(this.firstAngle), s = this.clockwise ? [-e, -t] : [e, t];\n return W(this.rotateFromEllipseReferenceFrame.transform(s));\n }\n get tangentAtLastPoint() {\n const e = -this.majorRadius * Math.sin(this.lastAngle), t = this.minorRadius * Math.cos(this.lastAngle), s = this.clockwise ? [-e, -t] : [e, t];\n return W(this.rotateFromEllipseReferenceFrame.transform(s));\n }\n transform(e) {\n const t = e.transformAngle(this.tiltAngle), s = e.scaleFactor();\n return new pt(\n e.transform(this.firstPoint),\n e.transform(this.lastPoint),\n e.transform(this.center),\n this.majorRadius * s,\n this.minorRadius * s,\n t,\n e.keepsOrientation() ? this.clockwise : !this.clockwise,\n { angleUnits: \"rad\" }\n );\n }\n splitAt(e) {\n let t;\n if (Array.isArray(e) && e.length === 0)\n return [this];\n Array.isArray(e[0]) ? t = e : t = [e];\n const i = [0, 1, ...t.map((a) => this.pointToParam(a))], o = new Map(\n Nt([i, [this.firstPoint, this.lastPoint, ...t]])\n );\n i.sort((a, l) => a - l);\n let h = null;\n return i.flatMap((a, l) => {\n if (l === i.length - 1)\n return [];\n const c = i[l + 1];\n if (c - a < this.precision)\n return h === null && (h = a), [];\n const u = h === null ? a : h, m = new pt(\n o.get(u) || this.paramPoint(u),\n o.get(c) || this.paramPoint(c),\n this.center,\n this.majorRadius,\n this.minorRadius,\n this.tiltAngle,\n this.clockwise,\n { angleUnits: \"rad\" }\n );\n return h = null, m;\n });\n }\n}\nfunction ws(r, n, e, t, s, i, o) {\n const { center: h, rx: a, ry: l } = hs(\n r,\n n,\n e,\n t,\n s * Yt,\n !i,\n o\n );\n return Math.abs(a - l) < 1e-9 ? new st(r, n, h, o) : new pt(r, n, h, a, l, s, o);\n}\nfunction hs([r, n], [e, t], s, i, o, h, a) {\n if (s < 0 && (s = -s), i < 0 && (i = -i), s == 0 || i == 0)\n throw Error(\"rx and ry can not be 0\");\n const l = Math.sin(o), c = Math.cos(o), u = (r - e) / 2, m = (n - t) / 2, d = (r + e) / 2, p = (n + t) / 2, g = c * u + l * m, M = c * m - l * u, f = g * g / (s * s) + M * M / (i * i);\n f > 1 && (s = s * Math.sqrt(f), i = i * Math.sqrt(f));\n const w = s * i, P = s * M, E = i * g, b = P * P + E * E;\n if (!b)\n throw Error(\"start point can not be same as end point\");\n let F = Math.sqrt(Math.abs((w * w - b) / b));\n h == a && (F = -F);\n const j = F * P / i, y = -F * E / s, x = c * j - l * y + d, B = l * j + c * y + p;\n return {\n center: [x, B],\n rx: s,\n ry: i\n };\n}\nfunction ls(r, n, e) {\n const t = Math.abs(e[0]), s = Math.abs(e[1]);\n let i = 0.707, o = 0.707;\n const h = r, a = n;\n for (let l = 0; l < 3; l++) {\n const c = h * i, u = a * o, m = (h * h - a * a) * i ** 3 / h, d = (a * a - h * h) * o ** 3 / a, p = c - m, g = u - d, M = t - m, f = s - d, w = Math.hypot(p, g), P = Math.hypot(M, f);\n i = Math.min(1, Math.max(0, (M * w / P + m) / h)), o = Math.min(1, Math.max(0, (f * w / P + d) / a));\n const E = Math.hypot(i, o);\n i /= E, o /= E;\n }\n return [h * i * Math.sign(e[0]), a * o * Math.sign(e[1])];\n}\nclass wt extends Et {\n constructor(e, t, s) {\n super(e, t);\n _(this, \"segmentType\", \"QUADRATIC_BEZIER\");\n _(this, \"controlPoint\");\n _(this, \"_boundingBox\", null);\n _(this, \"_polynomialCoefficients\", null);\n this.controlPoint = s;\n }\n get midPoint() {\n return this.paramPoint(0.5);\n }\n get boundingBox() {\n if (this._boundingBox === null) {\n const e = (t) => {\n const [s, i, o] = [\n this.firstPoint[t],\n this.controlPoint[t],\n this.lastPoint[t]\n ], h = s - 2 * i + o;\n if (!h)\n return [];\n const a = (s - i) / h;\n return a >= -this.precision && a <= 1 + this.precision ? [a] : [];\n };\n this._boundingBox = Dt([\n this.firstPoint,\n // There is either one or zero extrema in each direction\n ...e(0).map((t) => this.paramPoint(t)),\n ...e(1).map((t) => this.paramPoint(t)),\n this.lastPoint\n ]).grow(this.precision);\n }\n return this._boundingBox;\n }\n clone() {\n return new wt(\n this.firstPoint,\n this.lastPoint,\n this.controlPoint\n );\n }\n reverse() {\n return new wt(\n this.lastPoint,\n this.firstPoint,\n this.controlPoint\n );\n }\n isSame(e) {\n return e.segmentType !== \"QUADRATIC_BEZIER\" ? !1 : N(this.firstPoint, e.firstPoint) && N(this.lastPoint, e.lastPoint) && N(this.controlPoint, e.controlPoint);\n }\n distanceFrom(e) {\n const s = oe((i) => Mt(this.paramPoint(i), e), this.precision);\n return s.argMin < -this.precision || s.argMin > 1 + this.precision ? Math.min(\n Y(this.firstPoint, e),\n Y(this.lastPoint, e)\n ) : Math.sqrt(s.fMin);\n }\n isOnSegment(e) {\n if (!this.boundingBox.contains(e))\n return !1;\n try {\n const t = this.pointToParam(e);\n return t >= -this.precision && t <= 1 + this.precision;\n } catch {\n return !1;\n }\n }\n gradientAt(e) {\n const t = (s) => {\n const i = this.firstPoint[s], o = this.controlPoint[s], h = this.lastPoint[s];\n return 2 * (e * (i - 2 * o + h) - i + o);\n };\n return [t(0), t(1)];\n }\n tangentAt(e) {\n const t = this.pointToParam(e);\n return W(this.gradientAt(t));\n }\n get tangentAtFirstPoint() {\n return W(O(this.controlPoint, this.firstPoint));\n }\n get tangentAtLastPoint() {\n return W(O(this.controlPoint, this.lastPoint));\n }\n normalAt(e) {\n const t = this.tangentAt(e);\n return K(t);\n }\n splitAtParameters(e, t = null) {\n const s = [...e];\n s.sort((o, h) => o - h);\n let i = {\n originalParam: 0,\n param: 0,\n p0: this.firstPoint,\n p1: this.controlPoint\n };\n return s.flatMap((o, h) => {\n if (o - i.originalParam < this.precision)\n return [];\n let a = !1;\n o > 1 - this.precision && (a = !0);\n const l = (o - i.originalParam) / (1 - i.originalParam), c = Wt(\n [i.p0, i.p1, this.lastPoint],\n a ? 1 : l\n ), u = a ? this.lastPoint : (t == null ? void 0 : t.get(o)) ?? c[0][0], m = c[1][0], d = c[1][1], p = new wt(\n i.p0,\n u,\n m\n );\n return i = {\n param: l,\n originalParam: o,\n p0: u,\n p1: d\n }, h === s.length - 1 && !a ? [\n p,\n new wt(\n i.p0,\n this.lastPoint,\n i.p1\n )\n ] : p;\n });\n }\n splitAt(e) {\n let t;\n if (Array.isArray(e) && e.length === 0)\n return [this];\n Array.isArray(e[0]) ? t = e : t = [e];\n const s = t.map((o) => this.pointToParam(o)), i = new Map(\n Nt([s, t])\n );\n return this.splitAtParameters(s, i);\n }\n transform(e) {\n return new wt(\n e.transform(this.firstPoint),\n e.transform(this.lastPoint),\n e.transform(this.controlPoint)\n );\n }\n paramPoint(e) {\n const t = 1 - e, s = t * t, i = 2 * t * e, o = e * e;\n return [\n s * this.firstPoint[0] + i * this.controlPoint[0] + o * this.lastPoint[0],\n s * this.firstPoint[1] + i * this.controlPoint[1] + o * this.lastPoint[1]\n ];\n }\n get polynomialCoefficients() {\n if (this._polynomialCoefficients === null) {\n const e = (t) => {\n const s = this.firstPoint[t], i = this.controlPoint[t], o = this.lastPoint[t], h = s - 2 * i + o, a = 2 * (i - s);\n return [s, a, h];\n };\n this._polynomialCoefficients = [e(0), e(1)];\n }\n return this._polynomialCoefficients;\n }\n paramsAtY(e) {\n const [t, s, i] = this.polynomialCoefficients[1];\n return Lt(t - e, s, i).filter(\n (o) => o >= -this.precision && o <= 1 + this.precision\n );\n }\n pointToParam(e) {\n const t = this.paramsAtY(e[1]);\n if (t.length === 0)\n throw new Error(\"Point is not on the curve!\");\n const s = (o) => Math.abs(this.paramPoint(o)[0] - e[0]) <= this.precision, i = t.find(s);\n if (i === void 0)\n throw new Error(\"Point is not on the curve\");\n return i;\n }\n}\nexport {\n st as A,\n ot as B,\n gt as C,\n Yt as D,\n pt as E,\n re as F,\n D as G,\n tt as L,\n wt as Q,\n fe as R,\n X as T,\n nt as a,\n at as b,\n Mt as c,\n Y as d,\n N as e,\n dt as f,\n Pe as g,\n K as h,\n $t as i,\n fs as j,\n ws as k,\n Ut as l,\n ge as m,\n W as n,\n yt as o,\n me as p,\n Xt as q,\n ie as r,\n O as s,\n ms as t,\n is as u,\n gs as v,\n _t as w,\n us as x,\n cs as y,\n Nt as z\n};\n//# sourceMappingURL=QuadraticBezier-e116a2d6.js.map\n","var tn = Object.defineProperty;\nvar nn = (t, n, e) => n in t ? tn(t, n, { enumerable: !0, configurable: !0, writable: !0, value: e }) : t[n] = e;\nvar C = (t, n, e) => (nn(t, typeof n != \"symbol\" ? n + \"\" : n, e), e);\nimport { s as k, q as en, d as Ot, a as q, b as V, n as sn, h as Tt, r as U, A as S, e as g, u as Lt, E as M, T as on, v as rn, Q as A, w as $, C as I, f as ln, x as cn, L as y, y as zt, g as lt, z as N, F as un, l as an, c as fn, G as dt, B as hn } from \"./QuadraticBezier-e116a2d6.js\";\nfunction pn(t, n) {\n const e = k(n, t.firstPoint), s = en(e, t.V) / t.squareLength;\n return t.paramPoint(s);\n}\nfunction J(t, n, e) {\n const s = e || t.precision, i = pn(t, n.center), o = Ot(i, n.center);\n if (o > n.radius + s)\n return [];\n if (Math.abs(o - n.radius) < s) {\n const c = i;\n return t.isOnSegment(c) && n.isOnSegment(c) ? [c] : [];\n }\n const r = [], l = Math.sqrt(\n n.radius * n.radius - o * o\n ), u = t.tangentAtFirstPoint, a = q(i, V(u, l));\n t.isOnSegment(a) && n.isOnSegment(a) && r.push(a);\n const f = q(i, V(u, -l));\n return t.isOnSegment(f) && n.isOnSegment(f) && r.push(f), r;\n}\nconst dn = (t) => {\n const { firstPoint: n, lastPoint: e, center: s, clockwise: i } = t;\n return new S(e, n, s, i, {\n ignoreChecks: !0\n });\n}, mn = (t, n) => {\n if (t.isSame(n))\n return [t];\n const e = U(\n [\n n.isOnSegment(t.firstPoint) ? t.firstPoint : null,\n n.isOnSegment(t.lastPoint) ? t.lastPoint : null,\n t.isOnSegment(n.firstPoint) ? n.firstPoint : null,\n t.isOnSegment(n.lastPoint) ? n.lastPoint : null\n ].filter((s) => s !== null)\n // We sort by the param value of the first arc. This means that the points\n // will be sorted with the same orientation than arc1\n ).sort((s, i) => t.pointToParam(s) - t.pointToParam(i));\n if (e.length === 0)\n return [];\n if (e.length === 1)\n return [];\n if (e.length === 2)\n return t.isSame(dn(n)) ? [] : [new S(e[0], e[1], t.center, t.clockwise)];\n if (e.length === 3) {\n const s = g(e[0], n.lastPoint) || g(e[0], n.firstPoint) ? 1 : 0;\n return [\n new S(\n e[0 + s],\n e[1 + s],\n t.center,\n t.clockwise\n )\n ];\n } else if (e.length === 4)\n return [\n new S(e[0], e[1], t.center, t.clockwise),\n new S(e[2], e[3], t.center, t.clockwise)\n ];\n throw new Error(\"Bug in the arc arc overlap algorithm\");\n};\nfunction qt(t, n, e = !1, s) {\n const i = s || t.precision, o = Ot(t.center, n.center), r = t.radius + n.radius;\n if (o > r + i)\n return [];\n const l = Math.abs(t.radius - n.radius);\n if (o < l - i)\n return [];\n if (o < i)\n return l > i ? [] : e ? mn(t, n) : [];\n const u = sn(k(n.center, t.center)), a = o > r - i;\n if (\n // circles are outside each other\n a || // circles are inside each other\n Math.abs(o - l) < i\n ) {\n const w = a || t.radius > n.radius ? 1 : -1, x = q(\n t.center,\n V(u, w * t.radius)\n );\n return t.isOnSegment(x) && n.isOnSegment(x) ? [x] : [];\n }\n const f = t.radius * t.radius / (2 * o) - n.radius * n.radius / (2 * o) + o / 2, c = q(\n t.center,\n V(u, f)\n ), h = Math.sqrt(\n t.radius * t.radius - f * f\n ), p = Tt(u), d = q(c, V(p, h)), m = q(c, V(p, -h)), P = [];\n return t.isOnSegment(d) && n.isOnSegment(d) && P.push(d), t.isOnSegment(m) && n.isOnSegment(m) && P.push(m), P;\n}\nfunction et(t, n, e = 1e-9) {\n const s = t.transform(n.ellipseReferenceFrameTransform), i = s.slope, o = s.yIntercept, r = n.majorRadius * n.majorRadius, l = n.minorRadius * n.minorRadius, u = n.majorRadius * n.minorRadius, a = s.slope * s.slope, f = s.yIntercept * s.yIntercept, c = (w) => w.map(\n (x) => n.reverseEllipseReferenceFrameTransform.transform(x)\n ).filter((x) => t.isOnSegment(x) && n.isOnSegment(x));\n if (!Number.isFinite(i)) {\n const w = s.firstPoint[0];\n if (Math.abs(w) - n.majorRadius > e)\n return [];\n if (Math.abs(Math.abs(w) - n.majorRadius) < e)\n return c([[w, 0]]);\n const x = n.minorRadius * Math.sqrt(1 - w * w / r), E = [w, x], b = [w, -x];\n return c([E, b]);\n }\n const h = r * a + l - f;\n if (h < -e)\n return [];\n const p = r * a + l;\n if (Math.abs(h) < e) {\n const w = -(r * i * o) / p, x = l * o / p;\n return c([[w, x]]);\n }\n const d = Math.sqrt(h), m = [\n -(r * i * o + u * d) / p,\n (l * o - u * i * d) / p\n ], P = [\n -(r * i * o - u * d) / p,\n (l * o + u * i * d) / p\n ];\n return c([m, P]);\n}\nfunction Dt(t, n) {\n const e = Math.max(t.precision, n.precision), s = t.coefficients, i = s.x2, o = s.xy, r = s.y2, l = s.x, u = s.y, a = s.c, f = n.coefficients, c = f.x2, h = f.xy, p = f.y2, d = f.x, m = f.y, P = f.c, w = {\n z0: a * i * d * d + i * i * P * P - l * i * d * P + c * c * a * a - 2 * i * P * c * a - l * d * c * a + c * l * l * P,\n z1: m * l * l * c - P * d * i * o - 2 * i * P * c * u - a * c * h * l + 2 * d * h * i * a + 2 * m * P * i * i + d * d * i * u - m * d * i * l - 2 * i * m * c * a - a * c * d * o + 2 * a * u * c * c - P * h * i * l - u * c * d * l + 2 * P * o * c * l,\n z2: m * m * i * i + 2 * p * P * i * i - u * c * d * o + P * c * o * o - u * c * h * l - P * h * i * o - 2 * i * m * c * u + 2 * d * h * i * u - p * d * i * l - 2 * i * p * c * a + h * h * i * a + 2 * m * o * c * l + u * u * c * c - r * c * d * l - m * h * i * l + 2 * a * r * c * c - a * c * h * o + p * l * l * c + d * d * i * r - m * d * i * o - 2 * i * P * c * r,\n z3: -2 * i * c * r * m + m * c * o * o + 2 * p * o * c * l - r * c * h * l + h * h * i * u - m * h * i * o - 2 * i * p * c * u - u * c * h * o - p * h * i * l + 2 * m * p * i * i + 2 * u * r * c * c - r * c * d * o + 2 * d * h * i * r - p * d * i * o,\n z4: i * i * p * p - 2 * i * p * c * r + c * c * r * r - o * i * h * p - o * h * c * r + o * o * c * p + r * i * h * h\n }, E = Lt(\n [w.z0, w.z1, w.z2, w.z3, w.z4],\n e\n ).flatMap((b) => {\n const R = i * h * b + i * d - c * o * b - c * l;\n if (R)\n return [[-(i * P + i * p * b * b - c * r * b * b + i * m * b - c * u * b - c * a) / R, b]];\n const T = o * b + l, L = -T / (2 * i), j = r * b * b + u * b + a, z = T * T / (4 * i * i) - j / i;\n if (Math.abs(z) < e)\n return [[L, b]];\n if (z > 0) {\n const Y = Math.sqrt(z);\n return [[L + Y, b], [L - Y, b]];\n }\n return [];\n });\n return U(E, e);\n}\nfunction mt(t, n) {\n return Dt(t, n).filter((s) => t.isOnSegment(s) && n.isOnSegment(s));\n}\nconst gn = (t) => {\n const {\n firstPoint: n,\n lastPoint: e,\n center: s,\n majorRadius: i,\n minorRadius: o,\n tiltAngle: r,\n clockwise: l\n } = t;\n return new M(\n e,\n n,\n s,\n i,\n o,\n r,\n l,\n {\n ignoreChecks: !0,\n angleUnits: \"rad\"\n }\n );\n}, Pn = (t, n) => {\n if (t.isSame(n))\n return [t];\n const e = (i, o) => new M(\n i,\n o,\n t.center,\n t.majorRadius,\n t.minorRadius,\n t.tiltAngle,\n t.clockwise,\n { ignoreChecks: !0, angleUnits: \"rad\" }\n ), s = U(\n [\n n.isOnSegment(t.firstPoint) ? t.firstPoint : null,\n n.isOnSegment(t.lastPoint) ? t.lastPoint : null,\n t.isOnSegment(n.firstPoint) ? n.firstPoint : null,\n t.isOnSegment(n.lastPoint) ? n.lastPoint : null\n ].filter((i) => i !== null)\n // We sort by the param value of the first arc. This means that the points\n // will be sorted with the same orientation than arc1\n ).sort((i, o) => t.pointToParam(i) - t.pointToParam(o));\n if (s.length === 0)\n return [];\n if (s.length === 1)\n return [];\n if (s.length === 2)\n return t.isSame(gn(n)) ? [] : [e(s[0], s[1])];\n if (s.length === 3) {\n const i = g(s[0], n.lastPoint) || g(s[0], n.firstPoint) ? 1 : 0;\n return [e(s[0 + i], s[1 + i])];\n } else if (s.length === 4)\n return [e(s[0], s[1]), e(s[2], s[3])];\n throw new Error(\"Bug in the ellipse arc ellipse arc overlap algorithm\");\n};\nfunction wn(t, n, e = !1) {\n const s = Math.max(t.precision, n.precision);\n return g(t.center, n.center) && Math.abs(t.majorRadius - n.majorRadius) < s && Math.abs(t.minorRadius - n.minorRadius) < s && (Math.abs(t.tiltAngle - n.tiltAngle) < s || Math.abs(Math.abs(t.tiltAngle - n.tiltAngle) - Math.PI) < s) ? e ? Pn(t, n) : [] : Dt(t, n).filter((r) => t.isOnSegment(r) && n.isOnSegment(r));\n}\nfunction gt(t, n) {\n const [e, s] = t.firstPoint, [i, o] = t.lastPoint, r = new on().rotate(-Math.atan2(o - s, i - e)).translate(-e, -s), l = r.clone().inverse(), u = n.transform(r);\n return u.paramsAtY(0).map((a) => u.paramPoint(a)).map((a) => l.transform(a)).filter((a) => t.isOnSegment(a));\n}\nconst xn = (t, n = 1e-9) => {\n let e = t;\n return Math.abs(t) < n && (e = 0), e.toFixed(-Math.log10(n));\n};\nfunction Rt(t, n = 1e-9) {\n return Array.from(\n new Map(t.map((e) => [xn(e, n), e])).values()\n );\n}\nconst Sn = (t, n) => {\n const [[e, s, i, o], [r, l, u, a]] = n.polynomialCoefficients, f = t.coefficients, c = f.x2, h = f.xy, p = f.y2, d = f.x, m = f.y, P = f.c, w = e * e, x = s * s, E = i * i, b = o * o, R = r * r, T = l * l, L = u * u, j = a * a, z = P + d * e + c * w + m * r + h * e * r + p * R, Y = d * s + 2 * c * e * s + h * s * r + m * l + h * e * l + 2 * p * r * l, Qt = c * x + d * i + 2 * c * e * i + h * i * r + h * s * l + p * T + m * u + h * e * u + 2 * p * r * u, Wt = 2 * c * s * i + d * o + 2 * c * e * o + h * o * r + h * i * l + h * s * u + 2 * p * l * u + m * a + h * e * a + 2 * p * r * a, Jt = c * E + 2 * c * s * o + h * o * l + h * i * u + p * L + h * s * a + 2 * p * l * a, Kt = 2 * c * i * o + h * o * u + h * i * a + 2 * p * u * a, Zt = c * b + h * o * a + p * j;\n return [z, Y, Qt, Wt, Jt, Kt, Zt];\n};\nfunction Pt(t, n) {\n const e = Math.max(t.precision, n.precision), s = Sn(t, n), i = Lt(s, e).filter((o) => o >= -n.precision && o <= 1 + n.precision);\n return Rt(i, e).map((o) => n.paramPoint(o)).filter((o) => t.isOnSegment(o));\n}\nconst yn = (t, n) => {\n const [[e, s, i], [o, r, l]] = n.polynomialCoefficients, u = t.coefficients, a = u.x2, f = u.xy, c = u.y2, h = u.x, p = u.y, d = u.c, m = e * e, P = s * s, w = i * i, x = o * o, E = r * r, b = l * l, R = a * m + f * e * o + c * x + h * e + p * o + d, T = 2 * a * e * s + f * e * r + f * s * o + 2 * c * o * r + h * s + p * r, L = 2 * a * e * i + a * P + f * e * l + f * s * r + f * i * o + 2 * c * o * l + c * E + h * i + p * l, j = 2 * a * s * i + f * s * l + f * i * r + 2 * c * r * l, z = a * w + f * i * l + c * b;\n return [R, T, L, j, z];\n};\nfunction wt(t, n) {\n const e = Math.max(t.precision, n.precision), s = yn(t, n), i = rn(...s).filter((o) => o >= -n.precision && o <= 1 + n.precision);\n return Rt(i, e).map((o) => n.paramPoint(o)).filter((o) => t.isOnSegment(o));\n}\nfunction F(t, { firstPoint: n, lastPoint: e }, s = 1e-9) {\n const i = k(e, n);\n return Math.abs(i[0]) < s ? i[1] > 0 ? n[0] - t[0] : t[0] - n[0] : Math.abs(i[1]) < s ? i[0] > 0 ? t[1] - n[1] : n[1] - t[1] : ln(i, k(t, n)) / cn(i);\n}\nclass ct {\n constructor(n, e, s, i) {\n this.firstPoint = n, this.lastPoint = e, this.negativeThickness = s, this.positiveThickness = i;\n }\n get width() {\n return this.positiveThickness - this.negativeThickness;\n }\n}\nconst bn = 3 / 4, Cn = 4 / 9;\nfunction Mn(t) {\n const n = F(t.firstControlPoint, t), e = F(t.lastControlPoint, t), s = n * e > 0 ? bn : Cn;\n return new ct(\n t.firstPoint,\n t.lastPoint,\n s * Math.min(0, n, e),\n s * Math.max(0, n, e)\n );\n}\nfunction An(t) {\n const n = F(t.controlPoint, t);\n return new ct(\n t.firstPoint,\n t.lastPoint,\n Math.min(0, n / 2),\n Math.max(0, n / 2)\n );\n}\nfunction In(t) {\n if (t instanceof I)\n return Mn(t);\n if (t instanceof A)\n return An(t);\n throw new Error(\"Not implemented\");\n}\nfunction Fn(t) {\n const n = t.paramPoint(0.5), e = Tt(k(n, t.firstPoint)), s = q(n, e), i = {\n firstPoint: n,\n lastPoint: s\n }, o = [\n F(t.firstPoint, i),\n F(t.lastPoint, i)\n ];\n return t instanceof I ? o.push(\n F(t.firstControlPoint, i),\n F(t.lastControlPoint, i)\n ) : t instanceof A && o.push(F(t.controlPoint, i)), new ct(\n n,\n s,\n Math.min(...o),\n Math.max(...o)\n );\n}\nfunction xt(t, n) {\n const e = [];\n for (let s = 1; s < t.length; s++) {\n const i = t[s];\n if (i[1] === n) {\n e.push(i[0]);\n continue;\n }\n const o = t[s - 1], r = n - o[1], l = n - i[1];\n if (r * l < 0) {\n e.push(\n o[0] + (n - o[1]) * (i[0] - o[0]) / (i[1] - o[1])\n );\n continue;\n }\n }\n return e;\n}\nclass H {\n constructor(n, e) {\n this.from = n, this.to = e;\n }\n get size() {\n return this.from === \"start\" ? this.to === \"end\" ? 1 : this.to : this.to === \"end\" ? 1 - this.from : Math.abs(this.from - this.to);\n }\n clipCurve(n) {\n return this.from === \"start\" ? this.to === \"end\" ? n : n.splitAtParameters([this.to])[0] : this.to === \"end\" ? n.splitAtParameters([this.from])[1] : n.splitAtParameters([this.from, this.to])[1];\n }\n}\nfunction En(t, n) {\n if (t instanceof I)\n return new Bn([\n F(t.firstPoint, n),\n F(t.firstControlPoint, n),\n F(t.lastControlPoint, n),\n F(t.lastPoint, n)\n ]);\n if (t instanceof A)\n return new vn([\n F(t.firstPoint, n),\n F(t.controlPoint, n),\n F(t.lastPoint, n)\n ]);\n throw new Error(\"Not implemented\");\n}\nclass vn {\n constructor(n) {\n C(this, \"topHull\", []);\n C(this, \"bottomHull\", []);\n this.distances = n;\n const [e, s, i] = n, o = [0, e], r = [1 / 2, s], l = [1, i], u = i - e, a = e;\n s - (u * (1 / 2) + a) > 0 ? (this.topHull = [o, r, l], this.bottomHull = [o, l]) : (this.topHull = [o, l], this.bottomHull = [o, r, l]);\n }\n get startDistance() {\n return this.distances[0];\n }\n get endDistance() {\n return this.distances[2];\n }\n}\nclass Bn {\n constructor(n) {\n C(this, \"topHull\", []);\n C(this, \"bottomHull\", []);\n this.distances = n;\n const [e, s, i, o] = n, r = [0, e], l = [1 / 3, s], u = [2 / 3, i], a = [1, o], f = o - e, c = e, h = s - (f * (1 / 3) + c), p = i - (f * (2 / 3) + c);\n let d = null, m = null;\n if (h * p < 0)\n d = [r, l, a], m = [r, u, a];\n else {\n const w = h / p;\n w >= 2 ? (d = [r, l, a], m = [r, a]) : w <= 0.5 ? (d = [r, u, a], m = [r, a]) : (d = [r, l, u, a], m = [r, a]);\n }\n h < 0 && ([d, m] = [m, d]), this.topHull = d, this.bottomHull = m;\n }\n get startDistance() {\n return this.distances[0];\n }\n get endDistance() {\n return this.distances[3];\n }\n}\nfunction St(t, n) {\n const e = En(n, t), s = xt(\n e.topHull,\n t.negativeThickness\n ), i = xt(\n e.bottomHull,\n t.positiveThickness\n ), o = e.endDistance >= t.negativeThickness && e.endDistance <= t.positiveThickness;\n if (!s.length && !i.length)\n return o ? new H(\"start\", \"end\") : null;\n if (s.length === 1 && i.length === 1)\n return new H(s[0], i[0]);\n if (s.length === 2 && i.length === 2)\n throw new Error(\n \"Bug in the clipping algorithm, unexpected number of crossing points\"\n );\n const r = s.length ? s : i;\n return r.length === 2 ? new H(r[0], r[1]) : o ? new H(r[0], \"end\") : new H(\"start\", r[0]);\n}\nfunction yt(t, n) {\n const e = In(t), s = St(e, n);\n if (!s)\n return null;\n const i = Fn(t), o = St(\n i,\n n\n );\n return o ? s.size > o.size ? o.clipCurve(n) : s.clipCurve(n) : null;\n}\nconst W = (t) => t instanceof A ? $(k(t.controlPoint, t.firstPoint)) + $(k(t.controlPoint, t.lastPoint)) : $(k(t.firstControlPoint, t.firstPoint)) + $(k(t.lastControlPoint, t.firstControlPoint)) + $(k(t.lastControlPoint, t.lastPoint));\nfunction D(t, n, e = 1e-9, { maxIterations: s = 100 } = {}) {\n const i = Math.max(e * e, Number.EPSILON * 10);\n let o = t, r = n, l = W(o), u = W(r);\n for (let a = 0; a < s; a++) {\n const f = l > i ? yt(r, o) : o;\n if (!f)\n return [];\n const c = W(f), h = u > i ? yt(f, r) : r;\n if (!h)\n return [];\n const p = W(h);\n if (c <= i && p <= i)\n return [\n f.boundingBox.intersection(h.boundingBox).center\n ];\n if (g(f.firstPoint, f.lastPoint) && h.isOnSegment(f.firstPoint))\n return [f.firstPoint];\n if (g(h.firstPoint, h.lastPoint) && f.isOnSegment(h.firstPoint))\n return [h.firstPoint];\n if (c > 0.8 * l && p > 0.8 * u)\n if (c / l > p / u) {\n const [d, m] = f.splitAtParameters([\n 0.5\n ]);\n return U(\n [\n ...D(d, h, e, {\n maxIterations: s - a\n }),\n ...D(m, h, e, {\n maxIterations: s - a\n })\n ],\n e\n );\n } else {\n const [d, m] = h.splitAtParameters([\n 0.5\n ]);\n return U(\n [\n ...D(f, d, e, {\n maxIterations: s - a\n }),\n ...D(f, m, e, {\n maxIterations: s - a\n })\n ],\n e\n );\n }\n o = f, r = h, l = c, u = p;\n }\n throw new Error(\"Bézier clip: Maximum number of iterations reached\");\n}\nfunction kn(t, n) {\n const e = [];\n if ([\n [t.firstPoint, n],\n [t.lastPoint, n],\n [n.firstPoint, t],\n [n.lastPoint, t]\n ].forEach(([i, o]) => {\n o.isOnSegment(i) && e.push(i);\n }), e.length < 2)\n return null;\n if (e.length === 2)\n return [t.splitAt(e)[1]];\n if (e.length === 3)\n return g(e[0], t.firstPoint) && g(e[1], t.lastPoint) ? [t] : [n];\n if (e.length === 4)\n return [t];\n}\nfunction _n(t, n, e = !1) {\n const s = Math.max(t.precision, n.precision);\n if (e) {\n const i = kn(t, n);\n if (i)\n return i;\n }\n return D(t, n, s);\n}\nfunction On(t, n) {\n const e = [];\n if ([\n [t.firstPoint, n],\n [t.lastPoint, n],\n [n.firstPoint, t],\n [n.lastPoint, t]\n ].forEach(([i, o]) => {\n o.isOnSegment(i) && e.push(i);\n }), e.length < 2)\n return null;\n if (e.length === 2)\n return [t.splitAt(e)[1]];\n if (e.length === 3)\n return g(e[0], t.firstPoint) && g(e[1], t.lastPoint) ? [t] : [n];\n if (e.length === 4)\n return [t];\n}\nfunction Tn(t, n, e = !1) {\n const s = Math.max(t.precision, n.precision);\n if (e) {\n const i = On(t, n);\n if (i)\n return i;\n }\n return D(t, n, s);\n}\nfunction ae(t, n, e) {\n if (t instanceof y && n instanceof y) {\n const s = zt(\n t,\n n,\n !1,\n e\n );\n return s === null ? [] : [s];\n }\n if (t instanceof y && n instanceof S)\n return J(t, n, e);\n if (t instanceof S && n instanceof y)\n return J(n, t, e);\n if (t instanceof S && n instanceof S)\n return qt(t, n, !1, e);\n throw new Error(\"Not implemented\");\n}\nfunction K(t, n, e) {\n if (t instanceof y && n instanceof y) {\n const s = zt(\n t,\n n,\n !0,\n e\n );\n return s === null ? { intersections: [], overlaps: [], count: 0 } : s instanceof y ? { intersections: [], overlaps: [s], count: 1 } : { intersections: [s], overlaps: [], count: 1 };\n }\n if (!t.boundingBox.overlaps(n.boundingBox))\n return { intersections: [], overlaps: [], count: 0 };\n if (t instanceof y && n instanceof S) {\n const s = J(t, n, e);\n return { intersections: s, overlaps: [], count: s.length };\n }\n if (t instanceof S && n instanceof y) {\n const s = J(n, t, e);\n return { intersections: s, overlaps: [], count: s.length };\n }\n if (t instanceof S && n instanceof S) {\n const s = qt(\n t,\n n,\n !0,\n e\n );\n return s.length ? s[0] instanceof S ? {\n intersections: [],\n overlaps: s,\n count: s.length\n } : {\n intersections: s,\n overlaps: [],\n count: s.length\n } : { intersections: [], overlaps: [], count: 0 };\n }\n if (t instanceof y && n instanceof M) {\n const s = et(\n t,\n n,\n e\n );\n return { intersections: s, overlaps: [], count: s.length };\n }\n if (n instanceof y && t instanceof M) {\n const s = et(\n n,\n t,\n e\n );\n return { intersections: s, overlaps: [], count: s.length };\n }\n if (t instanceof S && n instanceof M) {\n const s = mt(t, n);\n return { intersections: s, overlaps: [], count: s.length };\n }\n if (n instanceof S && t instanceof M) {\n const s = mt(n, t);\n return { intersections: s, overlaps: [], count: s.length };\n }\n if (t instanceof M && n instanceof M) {\n const s = wn(\n t,\n n,\n !0\n );\n return s.length ? s[0] instanceof M ? {\n intersections: [],\n overlaps: s,\n count: s.length\n } : {\n intersections: s,\n overlaps: [],\n count: s.length\n } : { intersections: [], overlaps: [], count: 0 };\n }\n if (t instanceof y && (n instanceof I || n instanceof A)) {\n const s = gt(t, n);\n return { intersections: s, overlaps: [], count: s.length };\n }\n if (n instanceof y && (t instanceof I || t instanceof A)) {\n const s = gt(n, t);\n return { intersections: s, overlaps: [], count: s.length };\n }\n if ((t instanceof S || t instanceof M) && n instanceof A) {\n const s = wt(t, n);\n return { intersections: s, overlaps: [], count: s.length };\n }\n if ((n instanceof S || n instanceof M) && t instanceof A) {\n const s = wt(n, t);\n return { intersections: s, overlaps: [], count: s.length };\n }\n if ((t instanceof S || t instanceof M) && n instanceof I) {\n const s = Pt(t, n);\n return { intersections: s, overlaps: [], count: s.length };\n }\n if ((n instanceof S || n instanceof M) && t instanceof I) {\n const s = Pt(n, t);\n return { intersections: s, overlaps: [], count: s.length };\n }\n if (t instanceof A && n instanceof A) {\n const s = Tn(\n t,\n n\n );\n return s.length ? s[0] instanceof A ? {\n intersections: [],\n overlaps: s,\n count: s.length\n } : {\n intersections: s,\n overlaps: [],\n count: s.length\n } : { intersections: [], overlaps: [], count: 0 };\n }\n if (t instanceof A && n instanceof I || n instanceof A && t instanceof I) {\n const s = D(t, n);\n return { intersections: s, overlaps: [], count: s.length };\n }\n if (t instanceof I && n instanceof I) {\n const s = _n(\n t,\n n\n );\n return s.length ? s[0] instanceof I ? {\n intersections: [],\n overlaps: s,\n count: s.length\n } : {\n intersections: s,\n overlaps: [],\n count: s.length\n } : { intersections: [], overlaps: [], count: 0 };\n }\n throw new Error(\"Not implemented\");\n}\nfunction Vt(t) {\n const n = [];\n for (let e = 0; e < t; e++)\n for (let s = 0; s <= e; s++)\n n.push([e, s]);\n return n;\n}\nfunction* st(t) {\n for (const [n, e] of Vt(t.length))\n n !== e && (yield [t[n], t[e]]);\n}\nclass Nt extends lt {\n constructor(e, { ignoreChecks: s = !1 } = {}) {\n super();\n C(this, \"segments\");\n C(this, \"_boundingBox\", null);\n s || Ut(e), this.segments = e;\n }\n get repr() {\n return this.segments.map((e) => e.repr).join(`\n`) + `\n`;\n }\n get info() {\n return this.repr;\n }\n get firstPoint() {\n return this.segments[0].firstPoint;\n }\n get lastPoint() {\n return this.segments[this.segments.length - 1].lastPoint;\n }\n get segmentsCount() {\n return this.segments.length;\n }\n onStroke(e) {\n return this.segments.some((s) => s.isOnSegment(e));\n }\n intersects(e) {\n return this.boundingBox.overlaps(e.boundingBox) ? this.segments.some(\n (s) => e.segments.some(\n (i) => K(s, i).count > 0\n )\n ) : !1;\n }\n overlappingSegments(e) {\n return this.segments.flatMap((s) => e.segments.flatMap((i) => s.boundingBox.overlaps(i.boundingBox) ? K(s, i).overlaps : []));\n }\n get boundingBox() {\n if (this._boundingBox === null) {\n let e = this.segments[0].boundingBox;\n this.segments.slice(1).forEach((s) => {\n e = e.merge(s.boundingBox);\n }), this._boundingBox = e;\n }\n return this._boundingBox;\n }\n [Symbol.for(\"nodejs.util.inspect.custom\")]() {\n return this.repr;\n }\n}\nfunction Ln(t, n = \"Stroke\") {\n Vt(t.length).forEach(\n ([e, s]) => {\n if (e === s)\n return;\n const i = t[e], o = t[s], r = K(i, o), l = Math.max(i.precision, o.precision);\n if (r.count !== 0) {\n if (r.count === 1 && !r.overlaps.length) {\n const u = e - s, a = r.intersections[0];\n if (u === 1 && g(i.firstPoint, a, l) || u === -1 && g(i.lastPoint, a, l) || u === t.length - 1 && g(i.lastPoint, a, l) && g(o.firstPoint, a, l) || -u === t.length - 1 && g(i.firstPoint, a, l) && g(o.lastPoint, a, l))\n return;\n }\n if (!(r.count === 2 && t.length === 2 && (g(\n i.firstPoint,\n r.intersections[0],\n l\n ) && g(\n i.lastPoint,\n r.intersections[1],\n l\n ) || g(\n i.firstPoint,\n r.intersections[1],\n l\n ) && g(\n i.lastPoint,\n r.intersections[0],\n l\n ))))\n throw new Error(\n `${n} segments must not intersect, but segments ${i.info} and ${o.info} do at ${JSON.stringify(\n r.intersections\n )}`\n );\n }\n }\n );\n}\nfunction Ut(t, n = \"Stroke\") {\n if (t.length === 0)\n throw new Error(`${n} must have at least one segment`);\n N([t.slice(0, -1), t.slice(1)]).forEach(\n ([e, s]) => {\n if (!g(e.lastPoint, s.firstPoint))\n throw new Error(\n `${n} segments must be connected, but ${e.info} and ${s.info} are not`\n );\n }\n ), Ln(t, n);\n}\nfunction bt(t, n) {\n return !!(t instanceof y && n instanceof y && un(t.V, n.V) || t instanceof S && n instanceof S && g(t.center, n.center) && t.radius - n.radius < t.precision);\n}\nfunction Ct(t, n) {\n if (t instanceof y && n instanceof y)\n return new y(t.firstPoint, n.lastPoint);\n if (t instanceof S && n instanceof S)\n return new S(\n t.firstPoint,\n n.lastPoint,\n t.center,\n t.clockwise\n );\n throw new Error(\"Not implemented\");\n}\nfunction jt(t) {\n let n = !1;\n const e = [];\n for (const s of t.segments) {\n if (e.length === 0) {\n e.push(s);\n continue;\n }\n const i = e[e.length - 1];\n bt(i, s) ? (n = !0, e.pop(), e.push(Ct(i, s))) : e.push(s);\n }\n if (g(t.firstPoint, t.lastPoint) && bt(\n e[0],\n e[e.length - 1]\n )) {\n n = !0;\n const s = e.pop();\n e[0] = Ct(s, e[0]);\n }\n return n ? e : null;\n}\nclass B extends Nt {\n constructor() {\n super(...arguments);\n C(this, \"strokeType\", \"STRAND\");\n }\n reverse() {\n const e = this.segments.map((s) => s.reverse());\n return e.reverse(), new B(e, { ignoreChecks: !0 });\n }\n clone() {\n return new B(\n this.segments.map((e) => e.clone()),\n { ignoreChecks: !0 }\n );\n }\n extend(e) {\n if (!g(this.lastPoint, e.firstPoint))\n throw console.error(this.repr, e.repr), new Error(\"Cannot extend strand: connection point is not the same\");\n return new B([...this.segments, ...e.segments]);\n }\n simplify() {\n const e = jt(this);\n return e ? new B(e, { ignoreChecks: !0 }) : this;\n }\n transform(e) {\n return new B(\n this.segments.map((s) => s.transform(e)),\n { ignoreChecks: !0 }\n );\n }\n}\nconst zn = (t, n) => {\n const e = an(n, {\n V: [1, 0],\n firstPoint: t,\n precision: n.precision\n });\n if (e === \"parallel\")\n return 0;\n const { intersectionParam1: s, intersectionParam2: i } = e;\n if (!n.isValidParameter(s) || i <= -n.precision)\n return 0;\n if (Math.abs(s) < n.precision || Math.abs(s - 1) < n.precision) {\n const [, o] = n.midPoint;\n return t[1] - o < 0 ? 1 : 0;\n }\n return 1;\n};\nclass ut {\n constructor(n) {\n C(this, \"_count\", 0);\n C(this, \"segment\");\n this.segment = n;\n }\n update(n, e = !1) {\n !e && !this.segment.isOnSegment(n) || (g(n, this.segment.firstPoint) ? this._count += this.segment.tangentAtFirstPoint[1] > 0 ? 1 : 0 : g(n, this.segment.lastPoint) ? this._count += this.segment.tangentAtLastPoint[1] > 0 ? 0 : 1 : this._count += 1);\n }\n get count() {\n return this._count;\n }\n}\nconst qn = (t, n) => {\n const e = n.precision, s = Math.abs(t[1] - n.center[1]);\n if (s > n.radius + e)\n return 0;\n const i = fn(t, n.center), o = n.radius * n.radius, r = e * e;\n if (Math.abs(i - o) < r && n.isOnSegment(t))\n return 0;\n const l = i - o > r;\n if (l && n.center[0] < t[0])\n return 0;\n const u = Math.sqrt(\n n.radius * n.radius - s * s\n ), a = new ut(n);\n return a.update([n.center[0] + u, t[1]]), l && a.update([n.center[0] - u, t[1]]), a.count;\n}, Dn = (t, n) => {\n const e = n.boundingBox.xMax + n.boundingBox.width / 2, s = new y(t, [e, t[1]]), i = new ut(n);\n return et(s, n).forEach((o) => {\n i.update(o, !0);\n }), i.count;\n}, Rn = (t, n) => {\n const e = new ut(n);\n return n.paramsAtY(t[1]).map((s) => {\n try {\n return n.paramPoint(s);\n } catch {\n return null;\n }\n }).filter((s) => s !== null).filter((s) => {\n const [i] = s;\n return i >= t[0];\n }).forEach((s) => {\n e.update(s, !0);\n }), e.count;\n};\nfunction Vn(t, n) {\n if (n instanceof y)\n return zn(t, n);\n if (n instanceof S)\n return qn(t, n);\n if (n instanceof M)\n return Dn(t, n);\n if (n instanceof I || n instanceof A)\n return Rn(t, n);\n throw new Error(\"Not implemented\");\n}\nclass O extends Nt {\n constructor(e, { ignoreChecks: s = !1 } = {}) {\n super(e, { ignoreChecks: !0 });\n C(this, \"strokeType\", \"LOOP\");\n C(this, \"_clockwise\", null);\n s || Nn(e);\n }\n get clockwise() {\n if (this._clockwise === null) {\n const e = this.segments.flatMap((i) => i instanceof y ? [i.firstPoint] : [i.firstPoint, i.paramPoint(0.5)]), s = e.map((i, o) => {\n const r = e[(o + 1) % e.length];\n return (r[0] - i[0]) * (r[1] + i[1]);\n }).reduce((i, o) => i + o, 0);\n this._clockwise = s > 0;\n }\n return this._clockwise;\n }\n clone() {\n return new O(\n this.segments.map((e) => e.clone()),\n { ignoreChecks: !0 }\n );\n }\n reverse() {\n const e = this.segments.map((s) => s.reverse());\n return e.reverse(), new O(e, { ignoreChecks: !0 });\n }\n transform(e) {\n return new O(\n this.segments.map((s) => s.transform(e)),\n { ignoreChecks: !0 }\n );\n }\n contains(e) {\n return this.onStroke(e) || !this.boundingBox.contains(e) ? !1 : this.segments.reduce((i, o) => i + Vn(e, o), 0) % 2 === 1;\n }\n simplify() {\n const e = jt(this);\n return e ? new O(e, { ignoreChecks: !0 }) : this;\n }\n}\nfunction Nn(t) {\n if (Ut(t, \"Loop\"), !g(t[0].firstPoint, t[t.length - 1].lastPoint))\n throw new Error(\"Loop segment must be closed\");\n}\nconst Un = [\n y,\n S,\n M,\n A,\n I\n];\nfunction jn(t) {\n return Un.some((n) => t instanceof n);\n}\nfunction Yt(t) {\n if (t instanceof y)\n return {\n type: t.segmentType,\n firstPoint: t.firstPoint,\n lastPoint: t.lastPoint\n };\n if (t instanceof S)\n return {\n type: t.segmentType,\n firstPoint: t.firstPoint,\n lastPoint: t.lastPoint,\n center: t.center,\n clockwise: t.clockwise\n };\n if (t instanceof M)\n return {\n type: t.segmentType,\n firstPoint: t.firstPoint,\n lastPoint: t.lastPoint,\n center: t.center,\n clockwise: t.clockwise,\n majorRadius: t.majorRadius,\n minorRadius: t.minorRadius,\n tiltAngle: t.tiltAngle\n };\n if (t instanceof A)\n return {\n type: t.segmentType,\n firstPoint: t.firstPoint,\n lastPoint: t.lastPoint,\n controlPoint: t.controlPoint\n };\n if (t instanceof I)\n return {\n type: t.segmentType,\n firstPoint: t.firstPoint,\n lastPoint: t.lastPoint,\n firstControlPoint: t.firstControlPoint,\n lastControlPoint: t.lastControlPoint\n };\n throw new Error(\"Unknown segment type\");\n}\nfunction it(t) {\n return {\n type: \"LOOP\",\n segments: t.segments.map(Yt)\n };\n}\nfunction $t(t) {\n return {\n type: \"FIGURE\",\n contour: it(t.contour),\n holes: t.holes.map(it)\n };\n}\nfunction Yn(t) {\n return {\n type: \"DIAGRAM\",\n figures: t.figures.map($t)\n };\n}\nfunction Mt(t) {\n if (t instanceof _)\n return Yn(t);\n if (t instanceof v)\n return $t(t);\n if (t instanceof O)\n return it(t);\n if (jn(t))\n return Yt(t);\n throw new Error(\"Unknown shape type\");\n}\nclass $n {\n constructor() {\n this.ids = [], this.values = [], this.length = 0;\n }\n clear() {\n this.length = 0;\n }\n push(n, e) {\n let s = this.length++;\n for (; s > 0; ) {\n const i = s - 1 >> 1, o = this.values[i];\n if (e >= o)\n break;\n this.ids[s] = this.ids[i], this.values[s] = o, s = i;\n }\n this.ids[s] = n, this.values[s] = e;\n }\n pop() {\n if (this.length === 0)\n return;\n const n = this.ids[0];\n if (this.length--, this.length > 0) {\n const e = this.ids[0] = this.ids[this.length], s = this.values[0] = this.values[this.length], i = this.length >> 1;\n let o = 0;\n for (; o < i; ) {\n let r = (o << 1) + 1;\n const l = r + 1;\n let u = this.ids[r], a = this.values[r];\n const f = this.values[l];\n if (l < this.length && f < a && (r = l, u = this.ids[l], a = f), a >= s)\n break;\n this.ids[o] = u, this.values[o] = a, o = r;\n }\n this.ids[o] = e, this.values[o] = s;\n }\n return n;\n }\n peek() {\n if (this.length !== 0)\n return this.ids[0];\n }\n peekValue() {\n if (this.length !== 0)\n return this.values[0];\n }\n shrink() {\n this.ids.length = this.values.length = this.length;\n }\n}\nconst At = [\n Int8Array,\n Uint8Array,\n Uint8ClampedArray,\n Int16Array,\n Uint16Array,\n Int32Array,\n Uint32Array,\n Float32Array,\n Float64Array\n], nt = 3;\nclass at {\n static from(n) {\n if (!n || n.byteLength === void 0 || n.buffer)\n throw new Error(\"Data must be an instance of ArrayBuffer or SharedArrayBuffer.\");\n const [e, s] = new Uint8Array(n, 0, 2);\n if (e !== 251)\n throw new Error(\"Data does not appear to be in a Flatbush format.\");\n if (s >> 4 !== nt)\n throw new Error(`Got v${s >> 4} data when expected v${nt}.`);\n const [i] = new Uint16Array(n, 2, 1), [o] = new Uint32Array(n, 4, 1);\n return new at(o, i, At[s & 15], void 0, n);\n }\n constructor(n, e = 16, s = Float64Array, i = ArrayBuffer, o) {\n if (n === void 0)\n throw new Error(\"Missing required argument: numItems.\");\n if (isNaN(n) || n <= 0)\n throw new Error(`Unexpected numItems value: ${n}.`);\n this.numItems = +n, this.nodeSize = Math.min(Math.max(+e, 2), 65535);\n let r = n, l = r;\n this._levelBounds = [r * 4];\n do\n r = Math.ceil(r / this.nodeSize), l += r, this._levelBounds.push(l * 4);\n while (r !== 1);\n this.ArrayType = s || Float64Array, this.IndexArrayType = l < 16384 ? Uint16Array : Uint32Array;\n const u = At.indexOf(this.ArrayType), a = l * 4 * this.ArrayType.BYTES_PER_ELEMENT;\n if (u < 0)\n throw new Error(`Unexpected typed array class: ${s}.`);\n o && o.byteLength !== void 0 && !o.buffer ? (this.data = o, this._boxes = new this.ArrayType(this.data, 8, l * 4), this._indices = new this.IndexArrayType(this.data, 8 + a, l), this._pos = l * 4, this.minX = this._boxes[this._pos - 4], this.minY = this._boxes[this._pos - 3], this.maxX = this._boxes[this._pos - 2], this.maxY = this._boxes[this._pos - 1]) : (this.data = new i(8 + a + l * this.IndexArrayType.BYTES_PER_ELEMENT), this._boxes = new this.ArrayType(this.data, 8, l * 4), this._indices = new this.IndexArrayType(this.data, 8 + a, l), this._pos = 0, this.minX = 1 / 0, this.minY = 1 / 0, this.maxX = -1 / 0, this.maxY = -1 / 0, new Uint8Array(this.data, 0, 2).set([251, (nt << 4) + u]), new Uint16Array(this.data, 2, 1)[0] = e, new Uint32Array(this.data, 4, 1)[0] = n), this._queue = new $n();\n }\n add(n, e, s, i) {\n const o = this._pos >> 2, r = this._boxes;\n return this._indices[o] = o, r[this._pos++] = n, r[this._pos++] = e, r[this._pos++] = s, r[this._pos++] = i, n < this.minX && (this.minX = n), e < this.minY && (this.minY = e), s > this.maxX && (this.maxX = s), i > this.maxY && (this.maxY = i), o;\n }\n finish() {\n if (this._pos >> 2 !== this.numItems)\n throw new Error(`Added ${this._pos >> 2} items when expected ${this.numItems}.`);\n const n = this._boxes;\n if (this.numItems <= this.nodeSize) {\n n[this._pos++] = this.minX, n[this._pos++] = this.minY, n[this._pos++] = this.maxX, n[this._pos++] = this.maxY;\n return;\n }\n const e = this.maxX - this.minX || 1, s = this.maxY - this.minY || 1, i = new Uint32Array(this.numItems), o = (1 << 16) - 1;\n for (let r = 0, l = 0; r < this.numItems; r++) {\n const u = n[l++], a = n[l++], f = n[l++], c = n[l++], h = Math.floor(o * ((u + f) / 2 - this.minX) / e), p = Math.floor(o * ((a + c) / 2 - this.minY) / s);\n i[r] = Xn(h, p);\n }\n ot(i, n, this._indices, 0, this.numItems - 1, this.nodeSize);\n for (let r = 0, l = 0; r < this._levelBounds.length - 1; r++) {\n const u = this._levelBounds[r];\n for (; l < u; ) {\n const a = l;\n let f = n[l++], c = n[l++], h = n[l++], p = n[l++];\n for (let d = 1; d < this.nodeSize && l < u; d++)\n f = Math.min(f, n[l++]), c = Math.min(c, n[l++]), h = Math.max(h, n[l++]), p = Math.max(p, n[l++]);\n this._indices[this._pos >> 2] = a, n[this._pos++] = f, n[this._pos++] = c, n[this._pos++] = h, n[this._pos++] = p;\n }\n }\n }\n search(n, e, s, i, o) {\n if (this._pos !== this._boxes.length)\n throw new Error(\"Data not yet indexed - call index.finish().\");\n let r = this._boxes.length - 4;\n const l = [], u = [];\n for (; r !== void 0; ) {\n const a = Math.min(r + this.nodeSize * 4, Ft(r, this._levelBounds));\n for (let f = r; f < a; f += 4) {\n if (s < this._boxes[f] || i < this._boxes[f + 1] || n > this._boxes[f + 2] || e > this._boxes[f + 3])\n continue;\n const c = this._indices[f >> 2] | 0;\n r >= this.numItems * 4 ? l.push(c) : (o === void 0 || o(c)) && u.push(c);\n }\n r = l.pop();\n }\n return u;\n }\n neighbors(n, e, s = 1 / 0, i = 1 / 0, o) {\n if (this._pos !== this._boxes.length)\n throw new Error(\"Data not yet indexed - call index.finish().\");\n let r = this._boxes.length - 4;\n const l = this._queue, u = [], a = i * i;\n for (; r !== void 0; ) {\n const f = Math.min(r + this.nodeSize * 4, Ft(r, this._levelBounds));\n for (let c = r; c < f; c += 4) {\n const h = this._indices[c >> 2] | 0, p = It(n, this._boxes[c], this._boxes[c + 2]), d = It(e, this._boxes[c + 1], this._boxes[c + 3]), m = p * p + d * d;\n r >= this.numItems * 4 ? l.push(h << 1, m) : (o === void 0 || o(h)) && l.push((h << 1) + 1, m);\n }\n for (; l.length && l.peek() & 1; )\n if (l.peekValue() > a || (u.push(l.pop() >> 1), u.length === s))\n return l.clear(), u;\n r = l.pop() >> 1;\n }\n return l.clear(), u;\n }\n}\nfunction It(t, n, e) {\n return t < n ? n - t : t <= e ? 0 : t - e;\n}\nfunction Ft(t, n) {\n let e = 0, s = n.length - 1;\n for (; e < s; ) {\n const i = e + s >> 1;\n n[i] > t ? s = i : e = i + 1;\n }\n return n[e];\n}\nfunction ot(t, n, e, s, i, o) {\n if (Math.floor(s / o) >= Math.floor(i / o))\n return;\n const r = t[s + i >> 1];\n let l = s - 1, u = i + 1;\n for (; ; ) {\n do\n l++;\n while (t[l] < r);\n do\n u--;\n while (t[u] > r);\n if (l >= u)\n break;\n Hn(t, n, e, l, u);\n }\n ot(t, n, e, s, u, o), ot(t, n, e, u + 1, i, o);\n}\nfunction Hn(t, n, e, s, i) {\n const o = t[s];\n t[s] = t[i], t[i] = o;\n const r = 4 * s, l = 4 * i, u = n[r], a = n[r + 1], f = n[r + 2], c = n[r + 3];\n n[r] = n[l], n[r + 1] = n[l + 1], n[r + 2] = n[l + 2], n[r + 3] = n[l + 3], n[l] = u, n[l + 1] = a, n[l + 2] = f, n[l + 3] = c;\n const h = e[s];\n e[s] = e[i], e[i] = h;\n}\nfunction Xn(t, n) {\n let e = t ^ n, s = 65535 ^ e, i = 65535 ^ (t | n), o = t & (n ^ 65535), r = e | s >> 1, l = e >> 1 ^ e, u = i >> 1 ^ s & o >> 1 ^ i, a = e & i >> 1 ^ o >> 1 ^ o;\n e = r, s = l, i = u, o = a, r = e & e >> 2 ^ s & s >> 2, l = e & s >> 2 ^ s & (e ^ s) >> 2, u ^= e & i >> 2 ^ s & o >> 2, a ^= s & i >> 2 ^ (e ^ s) & o >> 2, e = r, s = l, i = u, o = a, r = e & e >> 4 ^ s & s >> 4, l = e & s >> 4 ^ s & (e ^ s) >> 4, u ^= e & i >> 4 ^ s & o >> 4, a ^= s & i >> 4 ^ (e ^ s) & o >> 4, e = r, s = l, i = u, o = a, u ^= e & i >> 8 ^ s & o >> 8, a ^= s & i >> 8 ^ (e ^ s) & o >> 8, e = u ^ u >> 1, s = a ^ a >> 1;\n let f = t ^ n, c = s | 65535 ^ (f | e);\n return f = (f | f << 8) & 16711935, f = (f | f << 4) & 252645135, f = (f | f << 2) & 858993459, f = (f | f << 1) & 1431655765, c = (c | c << 8) & 16711935, c = (c | c << 4) & 252645135, c = (c | c << 2) & 858993459, c = (c | c << 1) & 1431655765, (c << 1 | f) >>> 0;\n}\nfunction Ht(t, n = 1e-7) {\n if (t.length === 0)\n return [];\n if (t.length === 1)\n return [t];\n const e = new at(t.length);\n t.forEach((o) => {\n const [r, l] = o.firstPoint;\n e.add(r - n, l - n, r + n, l + n);\n }), e.finish();\n const s = [], i = /* @__PURE__ */ new Set();\n return t.forEach((o, r) => {\n if (i.has(r))\n return;\n const l = [o];\n let u = r;\n i.add(r);\n let a = t.length;\n for (; ; ) {\n if (a-- < 0)\n throw new Error(\"Infinite loop detected\");\n const f = l[l.length - 1].lastPoint, [c, h] = f, p = e.search(\n c - n,\n h - n,\n c + n,\n h + n\n ), d = (x) => Math.abs((u - x) % t.length), m = p.filter((x) => !i.has(x)).map((x) => [\n t[x],\n x,\n d(x)\n ]).sort(([, , x], [, , E]) => d(x) - d(E));\n if (m.length === 0) {\n s.push(l);\n break;\n }\n const [P, w] = m[0];\n l.push(P), i.add(w), u = w;\n }\n }), s;\n}\nclass v extends lt {\n constructor(e, s = [], { ignoreChecks: i = !1 } = {}) {\n super();\n C(this, \"contour\");\n C(this, \"holes\");\n i || Gn(e, s), this.contour = e, this.holes = s;\n }\n get boundingBox() {\n return this.contour.boundingBox;\n }\n get isFull() {\n return this.holes.length === 0;\n }\n get allLoops() {\n return [this.contour, ...this.holes];\n }\n clone() {\n return new v(\n this.contour.clone(),\n this.holes.map((e) => e.clone())\n );\n }\n transform(e) {\n return new v(\n this.contour.transform(e),\n this.holes.map((s) => s.transform(e))\n );\n }\n contains(e) {\n return this.contour.contains(e) && !this.holes.some((s) => s.contains(e));\n }\n intersects(e) {\n return this.allLoops.some(\n (s) => e.allLoops.some((i) => s.intersects(i))\n );\n }\n overlappingStrands(e) {\n const s = e instanceof v ? e.allLoops : [e], i = this.allLoops.flatMap((o) => s.flatMap((r) => o.overlappingSegments(r)));\n return Ht(i).map((o) => new B(o));\n }\n}\nfunction Gn(t, n = []) {\n if (!t)\n throw new Error(\"Figure must have a contour\");\n for (const [e, s] of st([t, ...n]))\n if (e.intersects(s))\n throw new Error(\"Loops in a figure must not intersect\");\n if (n.some(\n (e) => !t.contains(e.firstPoint) && !t.onStroke(e.firstPoint)\n ))\n throw new Error(\"Holes must be inside the contour\");\n for (const [e, s] of st(n))\n if (e.contains(s.firstPoint))\n throw console.error(Mt(e), Mt(s)), new Error(\"Holes must not be inside other holes\");\n}\nconst Qn = (t) => {\n const n = t.map((i, o) => t.slice(o + 1).map((r, l) => [l + o + 1, r]).filter(([, r]) => i.boundingBox.overlaps(r.boundingBox)).map(([r]) => r)), e = [], s = Array(n.length);\n return n.forEach((i, o) => {\n let r = s[o];\n r || (r = [], e.push(r)), r.push(t[o]), i.length && i.forEach((l) => {\n s[l] = r;\n });\n }), e;\n}, Xt = (t) => t.map((n, e) => {\n const i = n.segments[0].midPoint, o = t.filter((r, l) => e === l ? !1 : r.contains(i));\n return {\n loop: n,\n isIn: o\n };\n}), Wn = (t, n) => t.flatMap(({ loop: e }) => ft(\n n.filter(\n ({ loop: s, isIn: i }) => s === e || i.indexOf(e) !== -1\n )\n)), Jn = (t, n) => {\n const e = n.filter(({ isIn: i }) => i.length <= 1), s = ft(\n Xt(t.map(({ loop: i }) => i))\n );\n return [e, ...s];\n}, ft = (t) => {\n if (!t.length)\n return [];\n const n = t.filter(({ isIn: s }) => !s.length), e = t.filter(({ isIn: s }) => s.length > 1);\n return n.length === 1 && e.length === 0 ? [t] : n.length > 1 ? Wn(n, t) : Jn(e, t);\n};\nfunction X(t) {\n return Qn(t).map(Xt).flatMap(ft).map((e) => {\n if (e.length === 1)\n return new v(e[0].loop);\n e.sort((o, r) => o.isIn.length - r.isIn.length);\n const [s, ...i] = e.map(({ loop: o }) => o);\n return new v(s, i);\n });\n}\nfunction Kn(t, n) {\n const e = [];\n for (const s of t)\n for (const i of n)\n e.push([s, i]);\n return e;\n}\nfunction* Et(t, n, e) {\n const s = (r) => n.some((l) => g(l, r.lastPoint)), i = (r) => e.some((l) => r.isSame(l));\n let o = [];\n for (const r of t)\n s(r) ? (o.push(r), yield new B(o, { ignoreChecks: !0 }), o = []) : i(r) ? (o.length && (yield new B(o, { ignoreChecks: !0 }), o = []), yield new B([r], { ignoreChecks: !0 })) : o.push(r);\n o.length && (yield new B(o, { ignoreChecks: !0 }));\n}\nconst vt = (t, n) => {\n const e = t.findIndex((o) => g(n, o.firstPoint)), s = t.slice(0, e);\n return t.slice(e).concat(s);\n}, Bt = (t, n) => {\n let e = t;\n const s = (l) => g(l.firstPoint, n.firstPoint) && g(l.lastPoint, n.lastPoint);\n let i = t.findIndex(s);\n if (i === -1) {\n const l = t.map((u) => u.reverse());\n if (l.reverse(), i = l.findIndex(s), i === -1)\n throw console.error(\n l.map((u) => u.repr),\n n.repr\n ), new Error(\"Failed to rotate to segment start\");\n e = l;\n }\n const o = e.slice(0, i);\n return e.slice(i).concat(o);\n};\nfunction Zn(t, n, e) {\n return t.filter((s) => {\n const i = n.filter((l) => g(l.firstPoint, s) || g(l.lastPoint, s));\n if (i.length % 2)\n throw new Error(\"Bug in the intersection algo on non crossing point\");\n const o = i.map((l) => e.contains(l.midPoint));\n return !(o.every((l) => l) || !o.some((l) => l));\n });\n}\nfunction te(t, n, e) {\n let s = [];\n const i = [], o = new Array(t.segments.length).fill(0).map(() => []), r = new Array(n.segments.length).fill(0).map(() => []);\n if (t.segments.forEach((h, p) => {\n n.segments.forEach((d, m) => {\n const { intersections: P, overlaps: w } = K(\n h,\n d,\n e\n );\n s.push(...P), o[p].push(...P), r[m].push(...P), i.push(...w);\n const x = w.flatMap((E) => [\n E.firstPoint,\n E.lastPoint\n ]);\n s.push(...x), o[p].push(...x), r[m].push(...x);\n });\n }), s = U(s, e), !s.length || s.length === 1)\n return null;\n const l = ([h, p]) => p.length ? h.splitAt(p) : [h];\n let u = N([t.segments, o]).flatMap(l), a = N([n.segments, r]).flatMap(l);\n if (s = Zn(\n s,\n u,\n n\n ), !s.length && !i.length)\n return null;\n if (i.length) {\n const h = i[0];\n u = Bt(\n u,\n h\n ), a = Bt(\n a,\n h\n );\n } else {\n const h = s[0];\n u = vt(u, h), a = vt(a, h);\n }\n let f = Array.from(\n Et(\n u,\n s,\n i\n )\n ), c = Array.from(\n Et(\n a,\n s,\n i\n )\n );\n return (!g(\n c[0].lastPoint,\n f[0].lastPoint\n ) || i.length > 0 && c[0].segmentsCount !== 1) && (c = c.map((h) => h.reverse()).reverse(), g(c[0].lastPoint, f[0].lastPoint) || (f = f.map((h) => h.reverse()).reverse())), N([f, c]).map(([h, p]) => h.segmentsCount === 1 && i.some((d) => h.segments[0].isSame(d)) ? [h, \"same\"] : [h, p]);\n}\nfunction kt(t) {\n let n = t[0];\n for (const e of t.slice(1))\n n = n.extend(e);\n if (!g(n.firstPoint, n.lastPoint))\n throw console.error(\n dt(n.firstPoint),\n dt(n.lastPoint)\n ), new Error(\"Bug in the intersection algo on non closing strand\");\n return new O(n.segments);\n}\nfunction ne(t, n) {\n const e = N([\n n.slice(0, -1),\n n.slice(1)\n ]).map(([i, o]) => kt(t.slice(i, o)));\n let s = t.slice(\n n[n.length - 1]\n );\n return n[0] !== 0 && (s = s.concat(t.slice(0, n[0]))), e.push(kt(s)), e;\n}\nfunction ee(t) {\n if (!t.length)\n return [];\n const n = t.map((i) => i.firstPoint);\n let e = t.map((i) => i.lastPoint);\n e = e.slice(-1).concat(e.slice(0, -1));\n const s = N([n, e]).flatMap(\n ([i, o], r) => g(i, o) ? [] : r\n );\n try {\n return ne(t, s);\n } catch {\n return Ht(t.flatMap((o) => o.segments)).filter((o) => o.length > 1).filter((o) => g(o[0].firstPoint, o.at(-1).lastPoint)).map((o) => new O(o));\n }\n}\nconst _t = (t, n) => {\n if (t.length === 0)\n return [n];\n const e = t.at(-1);\n return g(e.lastPoint, n.firstPoint) ? t.slice(0, -1).concat([e.extend(n)]) : g(e.lastPoint, n.lastPoint) ? t.slice(0, -1).concat([e.extend(n.reverse())]) : t.concat([n]);\n}, se = (t, n) => t.length === 0 ? [n] : g(t[0].firstPoint, n.lastPoint) ? [n.extend(t[0])].concat(t.slice(1)) : [n].concat(t);\nfunction ht(t, n, {\n firstInside: e,\n secondInside: s\n}) {\n const i = te(t, n);\n if (!i) {\n const u = t.segments[0].midPoint, a = n.contains(u), f = n.segments[0].midPoint, c = t.contains(f);\n return {\n identical: !1,\n firstCurveInSecond: a,\n secondCurveInFirst: c\n };\n }\n if (i.every(([, u]) => u === \"same\"))\n return { identical: !0 };\n let o = null, r = null;\n const l = i.flatMap(([u, a]) => {\n let f = [], c = 0;\n if (a === \"same\")\n return r === 1 ? (r = 1, u) : r === 2 || r === 0 ? (r = null, []) : r === null ? (o ? o = o.extend(u) : o = u, []) : (console.error(\"weird situation\"), []);\n const h = u.segments[0].midPoint, p = n.contains(h);\n (e === \"keep\" && p || e === \"remove\" && !p) && (c += 1, f = _t(f, u));\n const d = a.segments[0].midPoint, m = t.contains(d);\n if (s === \"keep\" && m || s === \"remove\" && !m) {\n const P = a;\n c += 1, c === 2 && f.length ? (f = _t(f, P), o = null) : f = [P];\n }\n return r === null && c === 1 && o && (f = se(f, o)), c === 1 && (r = c, o = null), f.length ? f : (o = null, []);\n });\n return ee(l);\n}\nconst ie = (t, n) => {\n const e = ht(t, n, {\n firstInside: \"remove\",\n secondInside: \"remove\"\n });\n return Array.isArray(e) ? e : e.identical ? [t] : e.firstCurveInSecond ? [n] : e.secondCurveInFirst ? [t] : [t, n];\n}, Z = (t, n) => {\n const e = ht(t, n, {\n firstInside: \"remove\",\n secondInside: \"keep\"\n });\n return Array.isArray(e) ? e : e.identical ? [] : e.firstCurveInSecond ? [] : e.secondCurveInFirst ? [t, n] : [t];\n}, pt = (t, n) => {\n const e = ht(t, n, {\n firstInside: \"keep\",\n secondInside: \"keep\"\n });\n return Array.isArray(e) ? e : e.identical ? [t] : e.firstCurveInSecond ? [t] : e.secondCurveInFirst ? [n] : [];\n};\nfunction oe(t) {\n const n = /* @__PURE__ */ new Map(), e = [];\n return t.forEach((s, i) => {\n let o;\n n.has(i) ? o = n.get(i) : (o = { current: [s], fusedWith: /* @__PURE__ */ new Set([i]) }, e.push(o)), t.slice(i + 1).forEach((r, l) => {\n const u = o.current, a = i + l + 1;\n if (o.fusedWith.has(a))\n return;\n let f = [r], c = !1;\n if (n.has(a) && (f = n.get(a).current, c = !0), !u.some(\n (d) => f.some((m) => d.intersects(m))\n ))\n return;\n let p;\n u.length > 1 || f.length > 1 ? p = G(u, f) : p = Gt(u[0], f[0]), o.fusedWith.add(a), o.current = p, c || n.set(a, o);\n });\n }), e.flatMap(({ current: s }) => s);\n}\nfunction Gt(t, n) {\n const e = ie(t.contour, n.contour), s = n.holes.flatMap((r) => Z(r, t.contour)), i = t.holes.flatMap((r) => Z(r, n.contour)), o = Kn(t.holes, n.holes).flatMap(\n ([r, l]) => pt(r, l)\n );\n return X([\n ...e,\n ...s,\n ...i,\n ...o\n ]);\n}\nfunction tt(t, n) {\n if (t.isFull && n.isFull)\n return X(Z(t.contour, n.contour));\n if (t.isFull) {\n const s = Z(t.contour, n.contour), i = n.holes.flatMap(\n (o) => pt(o, t.contour)\n );\n return X([...s, ...i]);\n } else if (n.isFull && !t.contour.intersects(n.contour))\n if (t.contour.contains(n.contour.firstPoint)) {\n const s = G(\n t.holes.map((i) => new v(i)),\n [n]\n );\n return X([\n t.contour,\n ...s.flatMap((i) => i.allLoops)\n ]);\n } else\n return [t];\n let e = tt(new v(t.contour), n);\n return t.holes.forEach((s) => {\n e = e.flatMap((i) => tt(i, new v(s)));\n }), e;\n}\nfunction re(t, n) {\n const e = pt(t.contour, n.contour);\n if (!e.length)\n return [];\n let s = X(e);\n return s = Q(\n s,\n t.holes.map((i) => new v(i))\n ), Q(\n s,\n n.holes.map((i) => new v(i))\n );\n}\nfunction G(t, n) {\n if (!t.length)\n return n;\n if (!n.length)\n return t;\n if (t.length === 1 && n.length > 1 || n.length === 1 && t.length > 1)\n return oe([...t, ...n]);\n if (t.length > 1 && n.length > 1) {\n let e = G([t[0]], n);\n return t.slice(1).forEach((s) => {\n e = G([s], e);\n }), e;\n }\n return t.length === 1 && n.length === 1 ? Gt(t[0], n[0]) : [];\n}\nfunction Q(t, n) {\n if (!t.length)\n return [];\n if (!n.length)\n return t;\n if (t.length === 1 && n.length === 1)\n return tt(t[0], n[0]);\n if (t.length > 1)\n return t.flatMap((s) => Q([s], n));\n let e = tt(t[0], n[0]);\n return n.slice(1).forEach((s) => {\n e = Q(e, [s]);\n }), e;\n}\nfunction rt(t, n) {\n return !t.length || !n.length ? [] : t.length === 1 && n.length === 1 ? re(t[0], n[0]) : t.length > 1 ? t.flatMap((e) => rt([e], n)) : n.flatMap((e) => rt(t, [e]));\n}\nclass _ extends lt {\n constructor(e = [], { ignoreChecks: s = !1 } = {}) {\n super();\n C(this, \"figures\");\n C(this, \"_boundingBox\", null);\n s || le(e), this.figures = e;\n }\n get isEmpty() {\n return this.figures.length === 0;\n }\n get boundingBox() {\n if (this.isEmpty)\n return new hn();\n if (this._boundingBox === null) {\n let e = this.figures[0].boundingBox;\n for (const s of this.figures.slice(1))\n e = e.merge(s.boundingBox);\n this._boundingBox = e;\n }\n return this._boundingBox;\n }\n clone() {\n return new _(this.figures.map((e) => e.clone()));\n }\n transform(e) {\n return new _(this.figures.map((s) => s.transform(e)));\n }\n contains(e) {\n return this.figures.some((s) => s.contains(e));\n }\n intersects(e) {\n return this.figures.some(\n (s) => e.figures.some((i) => s.intersects(i))\n );\n }\n overlappingStrands(e) {\n return this.figures.flatMap((s) => e instanceof _ ? e.figures.flatMap(\n (i) => s.overlappingStrands(i)\n ) : s.overlappingStrands(e));\n }\n fuse(e) {\n return new _(G(this.figures, e.figures));\n }\n cut(e) {\n return new _(Q(this.figures, e.figures));\n }\n intersect(e) {\n return new _(rt(this.figures, e.figures));\n }\n}\nfunction le(t) {\n for (const [n, e] of st(t))\n if (n.intersects(e))\n throw new Error(\"Diagram figures must not intersect\");\n}\nexport {\n _ as D,\n v as F,\n O as L,\n B as S,\n G as a,\n qt as b,\n Q as c,\n Ht as d,\n jn as e,\n K as f,\n Mt as g,\n ae as h,\n rt as i,\n J as l,\n pn as p,\n Et as s\n};\n//# sourceMappingURL=Diagram-2450b2e6.js.map\n","var N = Object.defineProperty;\nvar Y = (r, t, e) => t in r ? N(r, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : r[t] = e;\nvar p = (r, t, e) => (Y(r, typeof t != \"symbol\" ? t + \"\" : t, e), e);\nimport { L as f, A as F, a as u, b as g, h as S, t as _, f as I, i as O, e as A, j as V, d as v, k as W, m as G, s as L, R as Q, C as j, Q as q, T as $, o as d, n as b, D as T } from \"./QuadraticBezier-e116a2d6.js\";\nimport { h as H, S as J, D as K, F as U, L as X } from \"./Diagram-2450b2e6.js\";\nclass C {\n constructor(t, e) {\n this.firstPoint = t, this.lastPoint = e;\n }\n}\nfunction x(r, t) {\n if (r instanceof f)\n return Z(r, t);\n if (r instanceof F)\n return tt(r, t);\n throw new Error(\"Not implemented\");\n}\nfunction Z(r, t) {\n const { firstPoint: e, lastPoint: n } = r, i = r.normalVector;\n return new f(\n u(e, g(i, t)),\n u(n, g(i, t))\n );\n}\nfunction tt(r, t) {\n const e = u(\n r.firstPoint,\n g(S(r.tangentAtFirstPoint), t)\n ), n = u(\n r.lastPoint,\n g(S(r.tangentAtLastPoint), t)\n ), i = t * (r.clockwise ? 1 : -1);\n return r.radius + i < r.precision ? new C(e, n) : new F(e, n, r.center, r.clockwise);\n}\nfunction R(r, t, e) {\n const n = I(\n r.tangentAtLastPoint,\n t.tangentAtFirstPoint\n );\n if (Math.abs(n) < 1e-10)\n return null;\n const i = n > 0 ? 1 : -1, s = Math.abs(e) * i, o = x(r, s), a = x(t, s);\n if (o instanceof C || a instanceof C)\n return null;\n let c;\n try {\n c = H(o, a, 1e-9).at(-1);\n } catch {\n return null;\n }\n if (!c)\n return null;\n const h = c, m = (w, k) => {\n const B = k.tangentAt(h), z = O(B), M = u(h, g(z, s));\n return w.splitAt(M);\n }, [l] = m(r, o), [, P] = m(t, a);\n return { first: l, second: P, center: h };\n}\nfunction E(r, t, e) {\n const n = R(r, t, e);\n if (!n)\n return console.warn(\n \"Cannot fillet between segments\",\n r.repr,\n t.repr\n ), [r, t];\n const { first: i, second: s } = n;\n return [\n i,\n _(i.lastPoint, s.firstPoint, i.tangentAtLastPoint),\n s\n ];\n}\nfunction D(r, t, e) {\n const n = R(r, t, e);\n if (!n)\n return console.warn(\n \"Cannot chamfer between segments\",\n r.repr,\n t.repr\n ), [r, t];\n const { first: i, second: s } = n;\n return [i, new f(i.lastPoint, s.firstPoint), s];\n}\nconst et = (r) => {\n let t;\n r ? typeof r == \"number\" || Array.isArray(r) && r.length === 2 ? t = { endTangent: r } : t = { endTangent: 0, ...r } : t = { endTangent: [1, 0] };\n const {\n endTangent: e,\n startFactor: n = 1,\n endFactor: i = 1,\n startTangent: s\n } = t;\n let o;\n typeof e == \"number\" ? o = d(1, e * T) : o = e;\n let a;\n return typeof s == \"number\" ? a = d(1, s * T) : a = s, { endTangent: o, startFactor: n, endFactor: i, startTangent: a };\n};\nfunction y(r, { ignoreChecks: t = !1 } = {}) {\n return new K([new U(new X([...r], { ignoreChecks: t }))]);\n}\nclass nt {\n constructor(t = [0, 0]) {\n p(this, \"pointer\");\n p(this, \"firstPoint\");\n p(this, \"pendingSegments\");\n p(this, \"_nextCorner\");\n this.pointer = t, this.firstPoint = t, this.pendingSegments = [], this._nextCorner = null;\n }\n movePointerTo(t) {\n if (this.pendingSegments.length)\n throw new Error(\n \"You can only move the pointer if there is no segment defined\"\n );\n return this.pointer = t, this.firstPoint = t, this;\n }\n saveSegment(t) {\n if (A(t.firstPoint, t.lastPoint))\n throw new Error(`Segment has no length, ${t.repr}`);\n if (!this._nextCorner)\n return this.pendingSegments.push(t), this;\n const e = this.pendingSegments.pop();\n if (!e)\n throw new Error(\"bug in the custom corner algorithm\");\n const n = this._nextCorner.mode === \"chamfer\" ? D : E;\n return this.pendingSegments.push(\n ...n(e, t, this._nextCorner.radius)\n ), this._nextCorner = null, this;\n }\n lineTo(t) {\n const e = new f(this.pointer, t);\n return this.pointer = t, this.saveSegment(e);\n }\n line(t, e) {\n return this.lineTo([this.pointer[0] + t, this.pointer[1] + e]);\n }\n vLine(t) {\n return this.line(0, t);\n }\n hLine(t) {\n return this.line(t, 0);\n }\n vLineTo(t) {\n return this.lineTo([this.pointer[0], t]);\n }\n hLineTo(t) {\n return this.lineTo([t, this.pointer[1]]);\n }\n polarLineTo([t, e]) {\n const n = e * T, i = d(t, n);\n return this.lineTo(i);\n }\n polarLine(t, e) {\n const n = e * T, [i, s] = d(t, n);\n return this.line(i, s);\n }\n tangentLine(t) {\n const e = this.pendingSegments.at(-1);\n if (!e)\n throw new Error(\"You need a previous segment to sketch a tangent line\");\n const [n, i] = e.tangentAtLastPoint;\n return this.line(n * t, i * t);\n }\n threePointsArcTo(t, e) {\n return this.saveSegment(V(this.pointer, e, t)), this.pointer = t, this;\n }\n threePointsArc(t, e, n, i) {\n const [s, o] = this.pointer;\n return this.threePointsArcTo(\n [s + t, o + e],\n [s + n, o + i]\n );\n }\n sagittaArcTo(t, e) {\n if (!e)\n return this.lineTo(t);\n const n = new f(this.pointer, t), i = S(n.tangentAtFirstPoint), s = u(n.midPoint, g(i, e));\n return this.threePointsArcTo(t, s);\n }\n sagittaArc(t, e, n) {\n return this.sagittaArcTo(\n [t + this.pointer[0], e + this.pointer[1]],\n n\n );\n }\n vSagittaArc(t, e) {\n return this.sagittaArc(0, t, e);\n }\n hSagittaArc(t, e) {\n return this.sagittaArc(t, 0, e);\n }\n bulgeArcTo(t, e) {\n if (!e)\n return this.lineTo(t);\n const n = v(this.pointer, t) / 2, i = -e * n;\n return this.sagittaArcTo(t, i);\n }\n bulgeArc(t, e, n) {\n return this.bulgeArcTo(\n [t + this.pointer[0], e + this.pointer[1]],\n n\n );\n }\n vBulgeArc(t, e) {\n return this.bulgeArc(0, t, e);\n }\n hBulgeArc(t, e) {\n return this.bulgeArc(t, 0, e);\n }\n tangentArcTo(t, e) {\n const n = this.pendingSegments.at(-1);\n if (!n)\n throw new Error(\"You need a previous curve to sketch a tangent arc\");\n return this.saveSegment(\n _(\n this.pointer,\n t,\n e ?? n.tangentAtLastPoint\n )\n ), this.pointer = t, this;\n }\n tangentArc(t, e, n) {\n const [i, s] = this.pointer;\n return this.tangentArcTo([t + i, e + s], n);\n }\n ellipseTo(t, e, n, i, s, o) {\n return this.saveSegment(\n W(this.pointer, t, e, n, i, s, o)\n ), this.pointer = t, this;\n }\n ellipse(t, e, n, i, s, o, a) {\n return this.ellipseTo(\n [t + this.pointer[0], e + this.pointer[1]],\n n,\n i,\n s,\n o,\n a\n );\n }\n halfEllipseTo(t, e) {\n const [n, i] = G(L(t, this.pointer));\n return this.ellipseTo(\n t,\n n / 2,\n Math.abs(e),\n i * Q,\n !0,\n e > 0\n );\n }\n halfEllipse(t, e, n) {\n return this.halfEllipseTo(\n [t + this.pointer[0], e + this.pointer[1]],\n n\n );\n }\n cubicBezierCurveTo(t, e, n) {\n return this.saveSegment(\n new j(this.pointer, t, e, n)\n ), this.pointer = t, this;\n }\n quadraticBezierCurveTo(t, e) {\n return this.saveSegment(new q(this.pointer, t, e)), this.pointer = t, this;\n }\n smoothCurveTo(t, e) {\n const { endTangent: n, startTangent: i, startFactor: s, endFactor: o } = et(e), a = this.pendingSegments.length ? this.pendingSegments[this.pendingSegments.length - 1] : null, c = v(this.pointer, t) / 3;\n let h;\n i ? h = i : a ? h = a.tangentAtLastPoint : h = [1, 0], h = b(h);\n const m = [\n this.pointer[0] + h[0] * s * c,\n this.pointer[1] + h[1] * s * c\n ];\n let l = n;\n l = b(l);\n const P = [\n t[0] - l[0] * o * c,\n t[1] - l[1] * o * c\n ];\n return this.cubicBezierCurveTo(t, m, P);\n }\n smoothCurve(t, e, n) {\n return this.smoothCurveTo(\n [t + this.pointer[0], e + this.pointer[1]],\n n\n );\n }\n customCorner(t, e = \"fillet\") {\n if (!this.pendingSegments.length)\n throw new Error(\"You need a segment defined to fillet the angle\");\n return t ? (this._nextCorner = { mode: e, radius: t }, this) : this;\n }\n _customCornerLastWithFirst(t, e = \"fillet\") {\n if (!t)\n return;\n const n = this.pendingSegments.pop(), i = this.pendingSegments.shift();\n if (!n || !i)\n throw new Error(\"Not enough curves to close and fillet\");\n const s = e === \"chamfer\" ? D : E;\n this.pendingSegments.push(...s(n, i, t));\n }\n close(t = !1) {\n if (!this.pendingSegments.length)\n throw new Error(\"No segments to close\");\n const e = this.pendingSegments[0], n = this.pendingSegments.at(-1);\n return A(e.firstPoint, n.lastPoint) || this.lineTo(e.firstPoint), this._nextCorner !== null && (this._customCornerLastWithFirst(\n this._nextCorner.radius,\n this._nextCorner.mode\n ), this._nextCorner = null), y(this.pendingSegments, { ignoreChecks: t });\n }\n closeWithMirror(t = !1) {\n if (!this.pendingSegments.length)\n throw new Error(\"No segments to close\");\n const e = this.pendingSegments[0], n = this.pendingSegments.at(-1), i = L(\n n.lastPoint,\n e.firstPoint\n ), s = new $().mirrorLine(\n i,\n e.firstPoint\n ), o = this.pendingSegments.map(\n (a) => a.transform(s).reverse()\n );\n return o.reverse(), y(\n [...this.pendingSegments, ...o],\n { ignoreChecks: t }\n );\n }\n asStrand() {\n return new J([...this.pendingSegments]);\n }\n get isClosed() {\n var t;\n return A(this.pointer, (t = this.pendingSegments[0]) == null ? void 0 : t.firstPoint);\n }\n}\nfunction ot(r = [0, 0]) {\n return new nt(r);\n}\nexport {\n C as D,\n ot as d,\n x as o\n};\n//# sourceMappingURL=draw-c7b2705c.js.map\n","import { L as $, A as f, E as l, R as u, Q as e, C as h } from \"./QuadraticBezier-e116a2d6.js\";\nfunction i([t, n]) {\n return `${t} ${n}`;\n}\nfunction s(t) {\n if (t instanceof $)\n return `L ${i(t.lastPoint)}`;\n if (t instanceof f)\n return `A ${t.radius} ${t.radius} 0 ${t.angularLength > Math.PI ? \"1\" : \"0\"} ${t.clockwise ? \"0\" : \"1\"} ${i(t.lastPoint)}`;\n if (t instanceof l)\n return `A ${t.majorRadius} ${t.minorRadius} ${t.tiltAngle * u} ${t.deltaAngle > Math.PI ? \"1\" : \"0\"} ${t.clockwise ? \"0\" : \"1\"} ${i(t.lastPoint)}`;\n if (t instanceof e)\n return `Q ${[\n i(t.controlPoint),\n i(t.lastPoint)\n ].join(\" \")}`;\n if (t instanceof h)\n return `C ${[\n i(t.firstControlPoint),\n i(t.lastControlPoint),\n i(t.lastPoint)\n ].join(\" \")}`;\n throw new Error(\"Unknown segment type\");\n}\nfunction w(t) {\n const n = `M ${t.firstPoint.join(\" \")}`, o = t.segments.map(s).join(\" \");\n return `${n} ${o} Z`;\n}\nfunction p(t) {\n return `<path d=\"${t.allLoops.map(w).join(\" \")}\" />`;\n}\nfunction d(t) {\n return `<g>\n ${t.figures.map(p).join(`\n`)}\n</g>`;\n}\nfunction j(t) {\n const n = `M ${t.firstPoint.join(\" \")}`, o = t.segments.map(s).join(\" \");\n return `${n} ${o}`;\n}\nfunction v(t, n = 1) {\n const o = t.xMin - n, r = t.yMin - n;\n return `${o} ${r} ${t.width + 2 * n} ${t.height + 2 * n}`;\n}\nfunction A(t, n, o = 1, r) {\n const a = v(n, o), c = r ? `width=\"${n.width + 2 * o}${r}\" height=\"${n.height + 2 * o}${r}\"` : \"\";\n return `<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"${a}\" fill=\"none\" stroke=\"black\" stroke-width=\"0.2%\" vector-effect=\"non-scaling-stroke\" ${c}>\n ${t}\n</svg>`;\n}\nexport {\n p as a,\n w as b,\n j as c,\n s as d,\n v as e,\n d as s,\n A as w\n};\n//# sourceMappingURL=wrapSVG-0ec8a111.js.map\n","var lt = Object.defineProperty;\nvar ut = (t, e, n) => e in t ? lt(t, e, { enumerable: !0, configurable: !0, writable: !0, value: n }) : t[e] = n;\nvar p = (t, e, n) => (ut(t, typeof e != \"symbol\" ? e + \"\" : e, n), n);\nimport { o as gt, D } from \"./draw-c7b2705c.js\";\nimport { d as Pe } from \"./draw-c7b2705c.js\";\nimport { F as d, L as P, D as g, f as B, s as ht, a as pt, c as dt, i as mt, S as C, l as Pt, p as wt, b as Mt, d as X, e as It } from \"./Diagram-2450b2e6.js\";\nimport { g as Me } from \"./Diagram-2450b2e6.js\";\nimport { r as St, z as bt, l as Lt, d as w, n as Y, s as E, a as vt, b as At, p as kt, c as j, L as S, A as b, e as M, t as Et, f as yt, B as Ft, E as Ct, Q as xt, C as Dt } from \"./QuadraticBezier-e116a2d6.js\";\nimport { s as Rt, a as Ot, b as Bt, c as $t, d as Gt, w as z } from \"./wrapSVG-0ec8a111.js\";\nfunction I(t) {\n if (t instanceof d)\n return [t];\n if (t instanceof P)\n return [new d(t)];\n if (t instanceof g)\n return t.figures;\n throw new Error(\"Unknown shape\");\n}\nfunction tt(t, e, n = 1e-9) {\n let s = [];\n const r = [], i = new Array(e.segments.length).fill(0).map(() => []);\n e.segments.forEach((c, f) => {\n t.segments.forEach((a) => {\n const { intersections: u, overlaps: m } = B(\n c,\n a,\n n\n );\n s.push(...u), i[f].push(...u), r.push(...m);\n const h = m.flatMap((l) => [\n l.firstPoint,\n l.lastPoint\n ]);\n s.push(...h), i[f].push(...h);\n });\n }), s = St(s, n);\n const o = bt([e.segments, i]).flatMap(([c, f]) => f.length ? c.splitAt(f) : [c]);\n return Array.from(\n ht(\n o,\n s,\n r\n )\n );\n}\nfunction $(t, e, n = !1) {\n return tt(e, t).filter((r) => {\n const i = r.segments[0].midPoint;\n return e.onStroke(i) ? !n : !e.contains(i);\n });\n}\nfunction G(t, e, n = !1) {\n return tt(e, t).filter((r) => {\n const i = r.segments[0].midPoint;\n return e.onStroke(i) ? !n : e.contains(i);\n });\n}\nfunction V(t, e, n = !1) {\n const s = $(\n t,\n e.contour,\n n\n ), r = e.holes.flatMap(\n (i) => G(t, i, n)\n );\n return [...s, ...r];\n}\nfunction _(t, e, n = !1) {\n let s = G(\n t,\n e.contour,\n n\n );\n return e.holes.forEach((r) => {\n s = s.flatMap(\n (i) => $(i, r, n)\n );\n }), s;\n}\nfunction Tt(t, e) {\n return new g(\n pt(I(t), I(e))\n );\n}\nfunction y(t) {\n return t.reduce(\n (e, n) => Tt(e, n),\n new g()\n );\n}\nfunction et(t, e) {\n return new g(\n dt(I(t), I(e))\n );\n}\nfunction oe(t, e) {\n return new g(\n mt(I(t), I(e))\n );\n}\nfunction ae(t, e, n = !0) {\n if (e instanceof P)\n return $(t, e, n);\n if (e instanceof d)\n return V(t, e, n);\n let s = [new C([...t.segments])];\n return e.figures.forEach((r) => {\n s = s.flatMap((i) => V(i, r, n));\n }), s;\n}\nfunction ce(t, e, n = !1) {\n if (e instanceof P)\n return G(t, e, n);\n if (e instanceof d)\n return _(t, e, n);\n let s = [new C([...t.segments])];\n return e.figures.forEach((r) => {\n s = s.flatMap((i) => _(i, r, n));\n }), s;\n}\nfunction N(t) {\n return t < 0 ? \"before\" : t > 1 ? \"after\" : \"between\";\n}\nconst q = (t, e, n) => {\n if (n === \"before\")\n return t.distanceFrom(e.firstPoint);\n if (n === \"after\")\n return t.distanceFrom(e.lastPoint);\n throw new Error(\"Invalid position\");\n};\nfunction Ut(t, e) {\n const n = Lt(t, e);\n if (n === \"parallel\")\n return Math.min(\n t.distanceFrom(e.firstPoint),\n t.distanceFrom(e.lastPoint)\n );\n const { intersectionParam1: s, intersectionParam2: r } = n, i = N(s), o = N(r);\n if (i === \"between\" && o === \"between\")\n return 0;\n if (i === \"between\" && o !== \"between\")\n return q(t, e, o);\n if (o === \"between\" && i !== \"between\")\n return q(e, t, i);\n if (i === \"before\" && o === \"before\")\n return w(t.firstPoint, e.firstPoint);\n if (i === \"after\" && o === \"after\")\n return w(t.lastPoint, e.lastPoint);\n if (i === \"before\" && o === \"after\")\n return w(t.firstPoint, e.lastPoint);\n if (i === \"after\" && o === \"before\")\n return w(t.lastPoint, e.firstPoint);\n throw new Error(\"Invalid position\");\n}\nfunction J(t, e) {\n if (Pt(t, e).length > 0)\n return 0;\n const n = wt(t, e.center);\n if (t.isOnSegment(n)) {\n const s = w(n, e.center);\n if (Math.abs(s - e.radius) < t.precision && e.isOnSegment(n))\n return 0;\n if (s - e.radius > t.precision) {\n const r = Y(\n E(n, e.center)\n ), i = vt(\n e.center,\n At(r, e.radius)\n );\n if (e.isOnSegment(i))\n return w(i, n);\n }\n }\n return Math.min(\n e.distanceFrom(t.firstPoint),\n e.distanceFrom(t.lastPoint),\n t.distanceFrom(e.firstPoint),\n t.distanceFrom(e.lastPoint)\n );\n}\nconst zt = (t, e) => {\n const n = t.angleToParam(e.firstAngle);\n if (t.isValidParameter(n))\n return !0;\n const s = t.angleToParam(e.lastAngle);\n return !!t.isValidParameter(s);\n};\nfunction Vt(t, e) {\n if (Mt(t, e, !0).length > 0)\n return 0;\n const n = w(t.center, e.center);\n if (n < t.precision && zt(t, e))\n return Math.abs(t.radius - e.radius);\n const s = Y(E(e.center, t.center)), r = n - Math.abs(t.radius - e.radius) < t.precision;\n let i = kt(s);\n r && e.radius > t.radius && (i += Math.PI);\n const o = r ? i : i + Math.PI, c = t.angleToParam(i), f = e.angleToParam(o);\n return t.isValidParameter(c) && e.isValidParameter(f) ? w(t.paramPoint(c), e.paramPoint(f)) : Math.min(\n t.distanceFrom(e.firstPoint),\n t.distanceFrom(e.lastPoint),\n e.distanceFrom(t.firstPoint),\n e.distanceFrom(t.lastPoint)\n );\n}\nfunction _t(t, e, n) {\n let s = 0, r = t.length - 1;\n for (; s <= r; ) {\n const i = Math.floor((s + r) / 2), o = n(t[i], e);\n if (o < 0)\n s = i + 1;\n else if (o > 0)\n r = i - 1;\n else\n return i;\n }\n return -(s + 1);\n}\nfunction Nt(t, e, n) {\n const s = _t(t, e, n);\n s < 0 ? t.splice(-(s + 1), 0, e) : t.splice(s, 0, e);\n}\nclass qt {\n constructor() {\n p(this, \"buckets\");\n this.buckets = [];\n }\n addInterval(e) {\n const n = this.buckets[e.rectangle.diagonalBucketIndex];\n n === void 0 ? this.buckets[e.rectangle.diagonalBucketIndex] = [e] : Nt(n, e, (s, r) => s.value - r.value);\n }\n removeInterval(e) {\n const n = this.buckets[e.rectangle.diagonalBucketIndex];\n if (n === void 0)\n throw new Error(\"Interval not found\");\n n.shift();\n }\n getBottomRightHullIntervals() {\n const e = [];\n for (let n = this.buckets.length - 1; n >= 0; n--) {\n const s = this.buckets[n];\n if (!s === void 0)\n continue;\n const r = s[0];\n if (r !== void 0) {\n if (!e.length) {\n e.push(r);\n continue;\n }\n for (; e.length && e[e.length - 1].value >= r.value; )\n e.pop();\n for (; e.length >= 2; ) {\n const i = e[e.length - 1], o = e[e.length - 2], c = (r.value - o.value) / ((r.rectangle.diagonal - o.rectangle.diagonal) * 2);\n if (o.value + (i.rectangle.diagonal - o.rectangle.diagonal) / 2 * c < i.value)\n e.pop();\n else\n break;\n }\n e.push(r);\n }\n }\n return e;\n }\n}\nclass Jt {\n constructor(e, n) {\n p(this, \"diagonal\");\n p(this, \"diagonalBucketIndex\");\n p(this, \"xLength\");\n p(this, \"yLength\");\n p(this, \"index\");\n this.x = e, this.y = n, this.xLength = Math.pow(3, -e), this.yLength = Math.pow(3, -n), this.diagonal = Math.sqrt(\n this.xLength * this.xLength + this.yLength * this.yLength\n ), this.diagonalBucketIndex = e + n, this.index = `${e},${n}`;\n }\n}\nclass Qt {\n constructor(e, n = 1e-8, s = 1e3, r = 1e-6) {\n p(this, \"rectangles\");\n p(this, \"buckets\");\n p(this, \"fMin\");\n p(this, \"argMin\");\n p(this, \"tol\");\n this.fcn = e, this.endTolerance = n, this.maxIterations = s, this.epsilon = r, this.fcn = e, this.epsilon = r, this.endTolerance = n, this.maxIterations = s, this.rectangles = /* @__PURE__ */ new Map(), this.buckets = new qt();\n const i = [0.5, 0.5], o = this.rect(0, 0), c = this.fcn(i);\n this.buckets.addInterval(new k(i, c, o)), this.fMin = c, this.argMin = i, this.tol = o.diagonal;\n }\n registerInterval(e) {\n this.buckets.addInterval(e), e.value <= this.fMin && (this.fMin = e.value, this.argMin = e.center, this.tol = e.rectangle.diagonal);\n }\n rect(e, n) {\n const s = `${e},${n}`;\n return this.rectangles.has(s) || this.rectangles.set(s, new Jt(e, n)), this.rectangles.get(s);\n }\n splitInterval(e) {\n let n, s, r;\n const [i, o] = e.center;\n return e.rectangle.x <= e.rectangle.y ? (n = this.rect(e.rectangle.x + 1, e.rectangle.y), s = [i - n.xLength, o], r = [i + n.xLength, o]) : (n = this.rect(e.rectangle.x, e.rectangle.y + 1), s = [i, o - n.yLength], r = [i, o + n.yLength]), [\n new k(s, this.fcn(s), n),\n new k(e.center, e.value, n),\n new k(r, this.fcn(r), n)\n ];\n }\n single_iteration() {\n const e = this.buckets.getBottomRightHullIntervals();\n for (; e.length >= 2; ) {\n const n = e[0], s = e[1], r = (s.value - n.value) / ((s.rectangle.diagonal - n.rectangle.diagonal) / 2), i = n.value - r * s.value / 2;\n if ((this.fMin - i) / Math.abs(this.fMin) < this.epsilon)\n e.shift();\n else\n break;\n }\n e.forEach((n) => {\n this.buckets.removeInterval(n);\n });\n for (const n of e) {\n const [s, r, i] = this.splitInterval(n);\n this.registerInterval(s), this.registerInterval(r), this.registerInterval(i);\n }\n }\n run() {\n let e = 0;\n for (; this.tol > this.endTolerance / 2 && (this.single_iteration(), e++, !(e > this.maxIterations)); )\n ;\n return {\n fMin: this.fMin,\n argMin: this.argMin,\n tol: this.tol,\n iterations: e\n };\n }\n}\nclass k {\n constructor(e, n, s) {\n this.center = e, this.value = n, this.rectangle = s;\n }\n}\nfunction Zt(t, e = 1e-8, n = 1e3, s = 1e-6) {\n return new Qt(\n t,\n e,\n n,\n s\n ).run();\n}\nfunction Ht(t, e, n = 1e-9) {\n const s = Zt((r) => {\n const i = t.paramPoint(r[0]), o = e.paramPoint(r[1]);\n return j(i, o);\n }, n);\n return Math.sqrt(s.fMin);\n}\nfunction Wt(t, e) {\n return t instanceof S && e instanceof S ? Ut(t, e) : t instanceof S && e instanceof b ? J(t, e) : t instanceof b && e instanceof S ? J(e, t) : t instanceof b && e instanceof b ? Vt(t, e) : Ht(t, e);\n}\nconst T = 1e-8;\nfunction R(t, e, n = !0) {\n const s = t.map((a) => ({\n offset: gt(a, e),\n original: a\n })), r = [];\n let i = n ? null : s.at(-1), o = n ? s.at(-1) : null;\n if (r.length === 1)\n return r;\n const c = (a) => {\n i ? a.offset instanceof D ? M(a.offset.firstPoint, a.offset.lastPoint) || r.push(\n new S(a.offset.firstPoint, a.offset.lastPoint)\n ) : r.push(a.offset) : i = a;\n }, f = function* () {\n for (const a of s.slice(0, -1))\n yield a;\n if (!i)\n throw new Error(\"Bug in the offset algorithm\");\n yield i;\n };\n for (const a of f()) {\n if (!o) {\n o = a;\n continue;\n }\n const u = o.offset.lastPoint, m = a.offset.firstPoint;\n if (M(u, m)) {\n c(o), o = a;\n continue;\n }\n let h = [];\n if (!(o.offset instanceof D) && !(a.offset instanceof D)) {\n const { intersections: L, overlaps: x } = B(\n o.offset,\n a.offset,\n T / 100\n );\n h = [\n ...L,\n ...x.flatMap((v) => [v.firstPoint, v.lastPoint])\n ];\n }\n if (h.length > 0) {\n let L = h[0];\n if (h.length > 1) {\n const ct = o == null ? void 0 : o.original.lastPoint, U = h.map(\n (ft) => j(ft, ct)\n );\n L = h[U.indexOf(Math.min(...U))];\n }\n const x = o.offset.splitAt([\n L\n ])[0], v = a.offset.splitAt([L]).at(-1);\n if (!v)\n throw new Error(\"Bug in the splitting algo in offset\");\n c({\n offset: x,\n original: o.original\n }), o = { offset: v, original: a.original };\n continue;\n }\n const l = o.original.lastPoint, A = yt(\n E(m, l),\n E(u, l)\n ) > 0, at = new b(u, m, l, A);\n c(o), r.push(at), o = a;\n }\n return o && c(o), r;\n}\nfunction nt(t) {\n const e = /* @__PURE__ */ new Map(), n = (s, r) => {\n const i = e.get(s) || [];\n e.set(s, [...i, ...r]);\n };\n return t.forEach((s, r) => {\n t.slice(r + 1).forEach((i, o) => {\n const { intersections: c, overlaps: f } = B(s, i, T), a = [\n ...c,\n ...f.flatMap((u) => [u.firstPoint, u.lastPoint])\n ].filter((u) => {\n const m = M(u, s.firstPoint) || M(u, s.lastPoint), h = M(u, i.firstPoint) || M(u, i.lastPoint);\n return !(m && h);\n });\n a.length && (n(r, a), n(o + r + 1, a));\n });\n }), e;\n}\nfunction st(t, e) {\n return e.flatMap((n, s) => {\n if (!t.has(s))\n return n;\n const r = t.get(s);\n return r ? n.splitAt(r) : n;\n });\n}\nfunction it(t, e, n) {\n return t.filter((s) => !e.segments.some((i) => Wt(i, s) < Math.abs(n) - T));\n}\nfunction F(t, e) {\n const n = t.clockwise ? e : -e, s = R(t.segments, n);\n if (s.length < 2)\n return new g();\n const r = nt(s);\n if (!r.size) {\n const a = new P(s);\n return new g([new d(a)]);\n }\n const i = st(\n r,\n s\n ), o = it(i, t, e);\n if (!o.length)\n return new g();\n const f = X(o).filter((a) => a.length > 1).filter((a) => M(a[0].firstPoint, a.at(-1).lastPoint)).map((a) => new P(a));\n return f.length ? new g(f.map((a) => new d(a))) : new g();\n}\nfunction Kt(t, e, n = \"round\") {\n const s = e / 2, r = R(t.segments, s, !1), i = R(t.segments, -s, !1).map(\n (l) => l.reverse()\n );\n i.reverse();\n const o = (l, A) => n === \"round\" ? Et(\n l.lastPoint,\n A.firstPoint,\n l.tangentAtLastPoint\n ) : new S(l.lastPoint, A.firstPoint), c = [\n ...r,\n o(\n r[r.length - 1],\n i[0]\n ),\n ...i,\n o(\n i[i.length - 1],\n r[0]\n )\n ], f = nt(c);\n if (!f.size) {\n const l = new P(c);\n return new g([new d(l)]);\n }\n const a = st(\n f,\n c\n ), u = it(a, t, s);\n if (!u.length)\n return new g();\n const h = X(u).filter((l) => l.length > 1).filter((l) => M(l[0].firstPoint, l.at(-1).lastPoint)).map((l) => new P(l));\n return h.length ? new g(h.map((l) => new d(l))) : new g();\n}\nfunction Xt(t, e) {\n const n = t.map((s) => {\n const r = y(\n s.holes.map((i) => F(i, e))\n );\n return et(F(s.contour, e), r);\n });\n return y(n);\n}\nfunction Yt(t, e) {\n const n = Math.abs(e / 2), s = t.map(\n (r) => y(\n r.allLoops.map((i) => et(F(i, n), F(i, -n)))\n )\n );\n return y(s);\n}\nfunction fe(t, e) {\n return Xt(I(t), e);\n}\nfunction le(t, e, { endCap: n = \"round\" } = {}) {\n return t instanceof C ? Kt(t, e, n) : Yt(I(t), e);\n}\nfunction Q(t) {\n if (t instanceof g)\n return Rt(t);\n if (t instanceof d)\n return Ot(t);\n if (t instanceof P)\n return `<path d=\"${Bt(t)}\" />`;\n if (t instanceof C)\n return `<path d=\"${$t(t)}\" />`;\n if (It(t))\n return `<path d=\"${`M ${t.firstPoint.join(\" \")}`} ${Gt(\n t\n )}\" />`;\n throw new Error(\"Unknown shape type\");\n}\nconst Z = (t) => \"shape\" in t ? t.shape : t, H = (t, e) => {\n if (!(\"shape\" in t))\n return e;\n const { color: n } = t;\n return n ? `<g stroke=\"${n}\">${e}</g>` : e;\n}, W = (t) => new Ft(t.xMin, -t.yMax, t.xMax, -t.yMin);\nfunction ue(t, {\n margin: e = 1,\n unit: n = null,\n viewBox: s\n} = {}) {\n if (Array.isArray(t)) {\n const i = t.map((f) => Z(f).mirror()), o = i.map((f, a) => H(t[a], Q(f))).join(`\n`), c = i.slice(1).reduce((f, a) => f.merge(a.boundingBox), i[0].boundingBox);\n return z(o, s ? W(s) : c, e, n);\n }\n const r = Z(t).mirror();\n return z(\n H(t, Q(r)),\n s ? W(s) : r.boundingBox,\n e,\n n\n );\n}\nconst rt = (t) => {\n if (t.type === \"LINE\")\n return new S(t.firstPoint, t.lastPoint);\n if (t.type === \"ARC\")\n return new b(\n t.firstPoint,\n t.lastPoint,\n t.center,\n t.clockwise\n );\n if (t.type === \"ELLIPSE_ARC\")\n return new Ct(\n t.firstPoint,\n t.lastPoint,\n t.center,\n t.majorRadius,\n t.minorRadius,\n t.tiltAngle,\n t.clockwise,\n { angleUnits: \"rad\" }\n );\n if (t.type === \"QUADRATIC_BEZIER\")\n return new xt(\n t.firstPoint,\n t.lastPoint,\n t.controlPoint\n );\n if (t.type === \"CUBIC_BEZIER\")\n return new Dt(\n t.firstPoint,\n t.lastPoint,\n t.firstControlPoint,\n t.lastControlPoint\n );\n throw new Error(\"Unknown segment type\");\n}, O = (t) => {\n const e = t.segments.map(rt);\n return new P(e);\n}, ot = (t) => {\n const e = O(t.contour), n = t.holes.map(O);\n return new d(e, n);\n}, jt = (t) => {\n const e = t.figures.map(ot);\n return new g(e);\n};\nfunction ge(t) {\n if (t.type === \"DIAGRAM\")\n return jt(t);\n if (t.type === \"FIGURE\")\n return ot(t);\n if (t.type === \"LOOP\")\n return O(t);\n if (t.type === \"LINE\" || t.type === \"ARC\" || t.type === \"ELLIPSE_ARC\" || t.type === \"CUBIC_BEZIER\")\n return rt(t);\n throw new Error(\"Unknown shape type\");\n}\nconst K = Math.PI / 180, te = 180 / Math.PI;\nfunction he(t, e) {\n const n = Math.cos(e * K) * t, s = Math.sin(e * K) * t;\n return [n, s];\n}\nfunction pe([t, e]) {\n const n = Math.sqrt(t * t + e * e), s = Math.atan2(e, t) * te;\n return [n, s];\n}\nexport {\n K as DEG2RAD,\n te as RAD2DEG,\n pe as cartesianToPolar,\n ce as confineStrand,\n et as cut,\n Pe as draw,\n ae as eraseStrand,\n Me as exportJSON,\n ue as exportSVG,\n Tt as fuse,\n y as fuseAll,\n ge as importJSON,\n oe as intersect,\n fe as offset,\n le as outlineStroke,\n he as polarToCartesian,\n Q as svgBody\n};\n//# sourceMappingURL=pantograph.js.map\n","import { cut, eraseStrand, exportSVG } from \"pantograph2d\";\nimport {\n Transformable,\n Diagram,\n Strand,\n TransformationMatrix,\n Stroke,\n} from \"pantograph2d/models\";\n\nexport class Dieline extends Transformable<Dieline> {\n public body: Diagram;\n public cutLines: Stroke[];\n public foldLinesBackwards: Stroke[];\n public foldLinesForwards: Stroke[];\n\n constructor(\n body: Diagram,\n {\n cutLines = [],\n foldLines = [],\n foldLinesForwards = [],\n foldLinesBackwards = [],\n }: {\n cutLines?: Stroke[];\n foldLines?: Stroke[];\n foldLinesBackwards?: Stroke[];\n foldLinesForwards?: Stroke[];\n } = {},\n ) {\n super();\n this.body = body;\n this.cutLines = [...cutLines];\n this.foldLinesBackwards = [...foldLines, ...foldLinesBackwards];\n this.foldLinesForwards = [...foldLinesForwards];\n }\n\n get foldLines() {\n return [...this.foldLinesForwards, ...this.foldLinesBackwards];\n }\n\n clone() {\n return new Dieline(this.body, {\n cutLines: [...this.cutLines],\n foldLinesForwards: [...this.foldLinesForwards],\n foldLinesBackwards: [...this.foldLinesBackwards],\n });\n }\n\n addCutLine(cut: Strand) {\n this.cutLines.push(cut);\n return this;\n }\n\n addFoldLine(fold: Strand, direction: \"forwards\" | \"backwards\" = \"backwards\") {\n if (direction === \"forwards\") {\n this.foldLinesForwards.push(fold);\n } else {\n this.foldLinesBackwards.push(fold);\n }\n }\n\n fuseFold(\n fold: Diagram | Dieline,\n direction: \"forwards\" | \"backwards\" = \"backwards\",\n ) {\n const otherBody: Diagram = fold instanceof Dieline ? fold.body : fold;\n\n const commonLines = this.body.overlappingStrands(otherBody);\n if (direction === \"forwards\") {\n this.foldLinesForwards.push(...commonLines);\n } else {\n this.foldLinesBackwards.push(...commonLines);\n }\n\n this.fuseBody(fold);\n return this;\n }\n\n fuseBody(other: Dieline | Diagram) {\n let otherBody: Diagram;\n\n if (other instanceof Dieline) {\n otherBody = other.body;\n this.cutLines.push(...other.cutLines);\n this.foldLinesForwards.push(...other.foldLinesForwards);\n this.foldLinesBackwards.push(...other.foldLinesBackwards);\n } else {\n otherBody = other;\n }\n\n this.body = this.body.fuse(otherBody);\n return this;\n }\n\n cutShape(shape: Diagram) {\n this.body = cut(this.body, shape);\n this.cutLines = this.cutLines.flatMap((cut) =>\n eraseStrand(cut, shape, true),\n );\n this.eraseFolds(shape);\n return this;\n }\n\n eraseFolds(shape: Diagram) {\n this.foldLinesBackwards = this.foldLinesBackwards.flatMap((fold) =>\n eraseStrand(fold, shape, true),\n );\n this.foldLinesForwards = this.foldLinesForwards.flatMap((fold) =>\n eraseStrand(fold, shape, true),\n );\n }\n\n transform(matrix: TransformationMatrix) {\n const newDieline = new Dieline(this.body.transform(matrix), {\n cutLines: this.cutLines.map((cut) => cut.transform(matrix)),\n foldLinesForwards: this.foldLinesForwards.map((fold) =>\n fold.transform(matrix),\n ),\n foldLinesBackwards: this.foldLinesBackwards.map((fold) =>\n fold.transform(matrix),\n ),\n });\n\n return newDieline;\n }\n\n asSVG() {\n const shapes: { shape: Diagram | Stroke; color: string }[] = [];\n if (this.body) {\n shapes.push({ shape: this.body, color: \"red\" });\n }\n if (this.cutLines.length) {\n this.cutLines.map((shape) => shapes.push({ shape, color: \"red\" }));\n }\n\n if (this.foldLinesBackwards.length) {\n this.foldLinesBackwards.map((shape) =>\n shapes.push({ shape, color: \"green\" }),\n );\n }\n\n if (this.foldLinesForwards.length) {\n this.foldLinesForwards.map((shape) =>\n shapes.push({ shape, color: \"blue\" }),\n );\n }\n\n return exportSVG(shapes, { unit: \"mm\" });\n }\n}\n","import { draw } from \"pantograph2d\";\n\nexport type FlapContractionMode = \"rounded\" | \"sharp\";\nexport type HorizontalFlapOptions = {\n fillet?: number;\n contraction?: number;\n contractionMode?: FlapContractionMode;\n contractionLeft?: number;\n contractionRight?: number;\n leftContractionMode?: FlapContractionMode;\n rightContractionMode?: FlapContractionMode;\n};\nexport type VerticalFlapTopOptions = HorizontalFlapOptions & {\n contractionTop?: number;\n contractionBottom?: number;\n topContractionMode?: FlapContractionMode;\n bottomContractionMode?: FlapContractionMode;\n};\n\nfunction drawFlap(\n width: number,\n height: number,\n {\n fillet = 1,\n contraction = 1,\n contractionMode = \"rounded\",\n contractionLeft: contractionLeftInput,\n contractionRight: contractionRightInput,\n leftContractionMode,\n rightContractionMode,\n }: HorizontalFlapOptions = {},\n) {\n const contractionLeft = contractionLeftInput ?? contraction;\n const contractionRight = contractionRightInput ?? contraction;\n\n const flapMaker = draw([-width / 2, 0]).hLine(width);\n\n if (contractionRight) {\n if ((rightContractionMode ?? contractionMode) === \"rounded\") {\n flapMaker.tangentArc(-contractionRight, contractionRight, [-1, 0]);\n flapMaker.vLine(height - contractionRight);\n } else {\n flapMaker.line(-contractionRight, height);\n }\n } else {\n flapMaker.vLine(height);\n }\n\n flapMaker.customCorner(fillet);\n flapMaker.hLine(-width + contractionLeft + contractionRight);\n flapMaker.customCorner(fillet);\n\n if (contractionLeft) {\n if ((leftContractionMode ?? contractionMode) === \"rounded\") {\n flapMaker.vLine(-height + contractionLeft);\n flapMaker.tangentArcTo([-width / 2, 0]);\n } else {\n flapMaker.lineTo([-width / 2, 0]);\n }\n } else {\n flapMaker.vLine(-height);\n }\n\n return flapMaker.close();\n}\n\nexport function topFlap(\n width: number,\n height: number,\n options: HorizontalFlapOptions = {},\n) {\n return drawFlap(width, height, options);\n}\n\nexport function bottomFlap(\n width: number,\n height: number,\n options: HorizontalFlapOptions = {},\n) {\n return drawFlap(width, height, options).mirror(\"x\");\n}\n\nexport function leftFlap(\n width: number,\n height: number,\n {\n contractionTop,\n contractionBottom,\n topContractionMode,\n bottomContractionMode,\n ...options\n }: VerticalFlapTopOptions = {},\n) {\n return drawFlap(width, height, {\n contractionLeft: contractionTop,\n contractionRight: contractionBottom,\n leftContractionMode: topContractionMode,\n rightContractionMode: bottomContractionMode,\n ...options,\n }).rotate(90);\n}\n\nexport function rightFlap(\n width: number,\n height: number,\n options: VerticalFlapTopOptions = {},\n) {\n return leftFlap(width, height, options).mirror(\"y\");\n}\n\nexport const drawFlaps = {\n right: rightFlap,\n left: leftFlap,\n top: topFlap,\n bottom: bottomFlap,\n};\n","import { draw } from \"pantograph2d\";\nimport {\n Diagram,\n Strand,\n Transformable,\n TransformationMatrix,\n} from \"pantograph2d/models\";\nimport { Dieline } from \"./Dieline.js\";\n\nconst drawBump = (width: number, height: number) => {\n return draw([-width / 2, 0])\n .line(height, -height)\n .hLine(width - 2 * height)\n .line(height, height);\n};\n\n// A helper class to create bumps for locking parts together without glue\nexport class FoldLockBump extends Transformable<FoldLockBump> {\n cut: Strand;\n unfold: Diagram;\n bump: Diagram;\n constructor(\n width: number | { cut: Strand; unfold: Diagram; bump: Diagram },\n paperThickness = 0.2,\n ) {\n super();\n\n if (typeof width !== \"number\") {\n this.cut = width.cut;\n this.unfold = width.unfold;\n this.bump = width.bump;\n return;\n }\n\n const pen = drawBump(width, paperThickness * 2.5);\n\n this.cut = pen.asStrand();\n this.unfold = pen.close();\n\n this.bump = drawBump(width - 5 * paperThickness, 5 * paperThickness)\n .close()\n .mirror(\"x\");\n }\n\n clone() {\n return new FoldLockBump(this);\n }\n\n transform(matrix: TransformationMatrix) {\n return new FoldLockBump({\n cut: this.cut.transform(matrix),\n unfold: this.unfold.transform(matrix),\n bump: this.bump.transform(matrix),\n });\n }\n\n makeCut(dieline: Dieline) {\n dieline.eraseFolds(this.unfold);\n dieline.addCutLine(this.cut);\n }\n\n fuseBump(dieline: Dieline) {\n dieline.fuseBody(this.bump);\n }\n}\n","import { Vector } from \"pantograph2d\";\nimport { Transformable, TransformationMatrix } from \"pantograph2d/models\";\n\ninterface Clonable {\n clone(): this;\n}\n\ninterface Translatable {\n translateTo(point: Vector): this;\n}\n\nclass PointsDistribution extends Transformable<PointsDistribution> {\n constructor(public points: Vector[]) {\n super();\n this.points = points;\n }\n\n transform(matrix: TransformationMatrix) {\n return new PointsDistribution(this.points.map(matrix.transform));\n }\n\n distribute<T extends Translatable>(s: T): T[] {\n return this.points.map((p) => s.translateTo(p));\n }\n\n cloneDistribute<T extends Translatable & Clonable>(s: T): T[] {\n return this.points.map((p) => s.clone().translateTo(p));\n }\n}\n\nexport function linearDistribution(\n totalWidth: number,\n objectWidth: number,\n gapShare = 3,\n margin = 0,\n) {\n if (totalWidth <= objectWidth * 2) {\n throw new Error(\"totalWidth must be greater than twice the objectWidth\");\n }\n\n const objectsCount = Math.max(\n Math.floor((totalWidth - 2 * margin) / (objectWidth * (gapShare + 1))),\n 2,\n );\n const freeSpace = totalWidth - 2 * margin - objectsCount * objectWidth;\n const gapSize = freeSpace / (objectsCount - 1);\n const points: number[] = [];\n for (let i = 0; i < objectsCount; i++) {\n points.push(\n margin + i * (objectWidth + gapSize) - totalWidth / 2 + objectWidth / 2,\n );\n }\n return new PointsDistribution(points.map((p) => [p, 0]));\n}\n\nexport function linearSpread(\n gap: number,\n count: number,\n direction: \"x\" | \"y\" = \"x\",\n) {\n const totalLength = gap * (count - 1);\n const points: number[] = [];\n for (let i = 0; i < count; i++) {\n points.push(i * gap - totalLength / 2);\n }\n return new PointsDistribution(\n points.map((p) => (direction.toLowerCase() === \"x\" ? [p, 0] : [0, p])),\n );\n}\n"],"names":["ue","ce","r","n","_","Tt","t","ot$2","ot","s","Dt","Gt","ie","Yt","fe","D","N","nt","O","_t","us","at","Mt","Y","dt","Xt","W","yt","me","ge","re","i","K","$t","we","ut","a","l","m","d","p","g","M","f","w","P","pe","de","X$1","X","Pe","e","tt","Et","o","h","c","Me","Nt","lt","xt","Ut","cs","vt","st","u","fs","ms","Zt","It","Kt","Jt","ye","_e","E","F","j","y","x","b","oe","Ee","Z","be","je","Qt","qt","he","Se","le","ke","Re","Ht","Te","J","Q","ft","mt","ve","Ie","te","Ft","Bt","ct","qe","Fe","Ce","$e","xe","Ne","Be","Le","ze","Ae","Ve","Oe","De","Ye","Ue","We","Ge","Xe","I$1","I","R","B","V","G","C","T","it","q","$","v","L","A","z","U","et","H","rt","zt","At","Vt","Ot","bt","jt","St","kt","Rt","ee","Ze","Ke","se","Je","Qe","He","ts","es","Ct","Lt","Pt","ae","gs","ne","ht","ss","ns","is","rs","os","Wt","gt","pt","ls","ws","hs","wt","tn","nn","pn","k","en","dn","S","mn","sn","gn","Pn","wn","on","xn","Sn","rn","ln","cn","Cn","Mn","In","Fn","H$1","En","Bn","vn","kn","_n","On","Tn","un","zn","an","qn","fn","Dn","Rn","Vn","Un","jn","Yn","$n","Hn","Gn","Qn","Jn","Kn","Zn","hn","Dieline","Transformable","body","cutLines","foldLines","foldLinesForwards","foldLinesBackwards","__publicField","cut","fold","direction","otherBody","commonLines","other","shape","eraseStrand","matrix","shapes","exportSVG","drawFlap","width","height","fillet","contraction","contractionMode","contractionLeftInput","contractionRightInput","leftContractionMode","rightContractionMode","contractionLeft","contractionRight","flapMaker","draw","topFlap","options","bottomFlap","leftFlap","contractionTop","contractionBottom","topContractionMode","bottomContractionMode","rightFlap","drawFlaps","drawBump","FoldLockBump","paperThickness","pen","dieline","PointsDistribution","points","linearDistribution","totalWidth","objectWidth","gapShare","margin","objectsCount","gapSize","linearSpread","gap","count","totalLength"],"mappings":"0ZAAA,IAAIA,GAAK,OAAO,eACZC,GAAK,CAACC,EAAGC,EAAG,IAAMA,KAAKD,EAAIF,GAAGE,EAAGC,EAAG,CAAE,WAAY,GAAI,aAAc,GAAI,SAAU,GAAI,MAAO,CAAC,CAAE,EAAID,EAAEC,CAAC,EAAI,EAC3GC,EAAI,CAACF,EAAGC,EAAG,KAAOF,GAAGC,EAAG,OAAOC,GAAK,SAAWA,EAAI,GAAKA,EAAG,CAAC,EAAG,GACnE,SAASE,GAAGH,EAAGC,EAAG,EAAGG,EAAG,CACtB,OAAOJ,GAAKI,GAAKH,GAAK,CACxB,CACA,IAAAI,GAAA,MAAMC,EAAG,CACP,YAAYL,EAAI,IAAO,EAAI,IAAOG,EAAI,KAAQG,EAAI,KAAQ,CACxDL,EAAE,KAAM,MAAM,EACdA,EAAE,KAAM,MAAM,EACdA,EAAE,KAAM,MAAM,EACdA,EAAE,KAAM,MAAM,EACd,KAAK,KAAOD,EAAG,KAAK,KAAO,EAAG,KAAK,KAAOG,EAAG,KAAK,KAAOG,CAC1D,CACD,IAAI,OAAQ,CACV,OAAO,KAAK,KAAO,KAAK,IACzB,CACD,IAAI,QAAS,CACX,OAAO,KAAK,KAAO,KAAK,IACzB,CACD,IAAI,QAAS,CACX,MAAO,EAAE,KAAK,KAAO,KAAK,MAAQ,GAAI,KAAK,KAAO,KAAK,MAAQ,CAAC,CACjE,CACD,KAAKN,EAAG,CACN,OAAO,IAAIK,GACT,KAAK,KAAOL,EACZ,KAAK,KAAOA,EACZ,KAAK,KAAOA,EACZ,KAAK,KAAOA,CAClB,CACG,CACD,SAASA,EAAG,CACV,KAAM,CAAC,EAAGG,CAAC,EAAIH,EACf,OAAOE,GAAG,KAAK,KAAM,KAAK,KAAM,EAAG,CAAC,GAAKA,GAAG,KAAK,KAAM,KAAK,KAAMC,EAAGA,CAAC,CACvE,CACD,SAASH,EAAG,CACV,OAAOE,GAAG,KAAK,KAAM,KAAK,KAAMF,EAAE,KAAMA,EAAE,IAAI,GAAKE,GAAG,KAAK,KAAM,KAAK,KAAMF,EAAE,KAAMA,EAAE,IAAI,CAC3F,CACD,SAASA,EAAG,CACV,KAAM,CAAC,EAAGG,CAAC,EAAIH,EACf,OAAO,IAAIK,GACT,KAAK,IAAI,KAAK,KAAM,CAAC,EACrB,KAAK,IAAI,KAAK,KAAMF,CAAC,EACrB,KAAK,IAAI,KAAK,KAAM,CAAC,EACrB,KAAK,IAAI,KAAK,KAAMA,CAAC,CAC3B,CACG,CACD,MAAMH,EAAG,CACP,OAAO,IAAIK,GACT,KAAK,IAAI,KAAK,KAAML,EAAE,IAAI,EAC1B,KAAK,IAAI,KAAK,KAAMA,EAAE,IAAI,EAC1B,KAAK,IAAI,KAAK,KAAMA,EAAE,IAAI,EAC1B,KAAK,IAAI,KAAK,KAAMA,EAAE,IAAI,CAChC,CACG,CACD,aAAaA,EAAG,CACd,OAAO,IAAIK,GACT,KAAK,IAAI,KAAK,KAAML,EAAE,IAAI,EAC1B,KAAK,IAAI,KAAK,KAAMA,EAAE,IAAI,EAC1B,KAAK,IAAI,KAAK,KAAMA,EAAE,IAAI,EAC1B,KAAK,IAAI,KAAK,KAAMA,EAAE,IAAI,CAChC,CACG,CACH,EACA,SAASO,GAAGR,EAAG,CACb,OAAOA,EAAE,OAAO,CAACC,EAAG,IAAMA,EAAE,SAAS,CAAC,EAAG,IAAIK,EAAI,CACnD,CACA,MAAMG,GAAK,CAACT,EAAGC,EAAI,OAAS,CAC1B,IAAI,EAAID,EACR,OAAO,KAAK,IAAIA,CAAC,EAAIC,IAAM,EAAI,GAAI,EAAE,QAAQ,CAAC,KAAK,MAAMA,CAAC,CAAC,CAC7D,EACA,SAASS,GAAGV,EAAGC,EAAI,KAAM,CACvB,OAAO,MAAM,KACX,IAAI,IACFD,EAAE,IAAI,CAAC,CAAC,EAAGI,CAAC,IAAM,CAChB,IAAIK,GAAG,EAAGR,CAAC,CAAC,IAAIQ,GAAGL,EAAGH,CAAC,CAAC,IACxB,CAAC,EAAGG,CAAC,CACb,CAAO,CACF,EAAC,OAAQ,CACd,CACA,CACA,MAAMO,GAAK,KAAK,GAAK,IAAKC,GAAK,IAAM,KAAK,GAAIC,EAAKb,GAAM,IAAIA,EAAE,CAAC,CAAC,KAAKA,EAAE,CAAC,CAAC,IAAKc,EAAI,CAAC,CAACd,EAAGC,CAAC,EAAG,CAAC,EAAGG,CAAC,EAAGG,EAAI,OAAS,KAAK,IAAIP,EAAI,CAAC,GAAKO,GAAK,KAAK,IAAIN,EAAIG,CAAC,GAAKG,EAAGQ,EAAK,CAAC,CAACf,EAAGC,CAAC,EAAG,CAAC,EAAGG,CAAC,IAAM,CAACJ,EAAI,EAAGC,EAAIG,CAAC,EAAGY,EAAI,CAAC,CAAChB,EAAGC,CAAC,EAAG,CAAC,EAAGG,CAAC,IAAM,CAACJ,EAAI,EAAGC,EAAIG,CAAC,EAAGa,GAAK,CAAC,CAACjB,EAAGC,CAAC,IAAMD,EAAIA,EAAIC,EAAIA,EAAGiB,GAAK,CAAC,CAAClB,EAAGC,CAAC,IAAM,KAAK,KAAKgB,GAAG,CAACjB,EAAGC,CAAC,CAAC,CAAC,EAAGkB,EAAK,CAAC,CAACnB,EAAGC,CAAC,EAAG,IAAM,CAACD,EAAI,EAAGC,EAAI,CAAC,EAAGmB,GAAK,CAAC,CAACpB,EAAGC,CAAC,EAAG,CAAC,EAAGG,CAAC,EAAI,CAAC,EAAG,CAAC,KAAOJ,EAAI,IAAM,GAAKC,EAAIG,IAAM,EAAGiB,EAAI,CAACrB,EAAGC,EAAI,CAAC,EAAG,CAAC,IAAM,KAAK,KAAKmB,GAAGpB,EAAGC,CAAC,CAAC,EACpc,SAASqB,GAAG,CAACtB,EAAGC,CAAC,EAAG,CAAC,EAAGG,CAAC,EAAG,CAC1B,OAAOJ,EAAII,EAAIH,EAAI,CACrB,CACA,SAASsB,GAAG,CAACvB,EAAGC,CAAC,EAAG,CAAC,EAAGG,CAAC,EAAG,CAC1B,OAAOJ,EAAI,EAAIC,EAAIG,CACrB,CACA,SAASoB,EAAE,CAACxB,EAAGC,CAAC,EAAG,CACjB,MAAM,EAAIoB,EAAE,CAACrB,EAAGC,CAAC,CAAC,EAClB,MAAO,CAACD,EAAI,EAAGC,EAAI,CAAC,CACtB,CACA,SAASwB,GAAGzB,EAAGC,EAAG,CAChB,MAAM,EAAI,KAAK,IAAIA,CAAC,EAAID,EAAGI,EAAI,KAAK,IAAIH,CAAC,EAAID,EAC7C,MAAO,CAAC,EAAGI,CAAC,CACd,CACA,SAASsB,GAAG,CAAC1B,EAAGC,CAAC,EAAG,CAClB,OAAO,KAAK,MAAMA,EAAGD,CAAC,CACxB,CACA,SAAS2B,GAAG3B,EAAG,CACb,MAAMC,EAAIoB,EAAErB,CAAC,EAAG,EAAI0B,GAAG1B,CAAC,EACxB,MAAO,CAACC,EAAG,CAAC,CACd,CACA,SAAS2B,GAAG5B,EAAGC,EAAG,EAAI,KAAM,CAC1B,MAAMG,EAAIkB,GAAGtB,EAAGC,CAAC,EAAGM,EAAIU,GAAGjB,CAAC,EAAG6B,EAAIZ,GAAGhB,CAAC,EACvC,OAAOG,EAAIA,EAAIG,EAAIsB,EAAI,EAAI,CAC7B,CACA,SAASC,GAAE9B,EAAG,CACZ,MAAO,CAAC,CAACA,EAAE,CAAC,EAAGA,EAAE,CAAC,CAAC,CACrB,CACA,SAAS+B,GAAG/B,EAAG,CACb,MAAO,CAACA,EAAE,CAAC,EAAG,CAACA,EAAE,CAAC,CAAC,CACrB,CACA,SAASgC,GAAGhC,EAAGC,EAAG,EAAG,CACnB,OAAOa,EAAE,EAAGd,CAAC,GAAK4B,GAAGZ,EAAE,EAAGhB,CAAC,EAAGC,CAAC,CACjC,CACA,MAAMgC,GAAK,CAACjC,EAAGC,IAAM,CACnB,KAAM,CAAC,EAAGG,EAAGG,EAAGsB,EAAG,EAAG,EAAGK,EAAGC,EAAG,CAAC,EAAInC,EAAG,CAAC,EAAGoC,EAAGC,EAAGC,EAAGC,EAAGC,EAAGC,EAAGC,EAAGC,CAAC,EAAI1C,EACrE,MAAO,CACL,EAAI,EAAIG,EAAIkC,EAAI/B,EAAIkC,EACpB,EAAIL,EAAIhC,EAAImC,EAAIhC,EAAImC,EACpB,EAAIL,EAAIjC,EAAIoC,EAAIjC,EAAIoC,EACpBd,EAAI,EAAI,EAAIS,EAAI,EAAIG,EACpBZ,EAAIO,EAAI,EAAIG,EAAI,EAAIG,EACpBb,EAAIQ,EAAI,EAAIG,EAAI,EAAIG,EACpBT,EAAI,EAAIC,EAAIG,EAAI,EAAIG,EACpBP,EAAIE,EAAID,EAAII,EAAI,EAAIG,EACpBR,EAAIG,EAAIF,EAAIK,EAAI,EAAIG,CACxB,CACA,EAAGC,GAAM5C,GAAM,CACb,KAAM,CAACC,EAAG,EAAGG,EAAGG,EAAGsB,EAAG,EAAG,EAAGK,EAAGC,CAAC,EAAInC,EAAG,EAAIC,GAAK4B,EAAIM,EAAI,EAAID,GAAK,GAAK3B,EAAI4B,EAAI,EAAI,GAAK/B,GAAKG,EAAI2B,EAAIL,EAAI,GACxG,MAAO,EACJA,EAAIM,EAAI,EAAID,GAAK,GACjB9B,EAAI8B,EAAI,EAAIC,GAAK,GACjB,EAAI,EAAI/B,EAAIyB,GAAK,GACjB,EAAI,EAAItB,EAAI4B,GAAK,GACjBlC,EAAIkC,EAAI/B,EAAI,GAAK,GACjBA,EAAIG,EAAIN,EAAI,GAAK,GACjBM,EAAI2B,EAAIL,EAAI,GAAK,GACjB,EAAI,EAAI5B,EAAIiC,GAAK,GACjBjC,EAAI4B,EAAI,EAAItB,GAAK,CACtB,CACA,EAAGsC,GAAM7C,GAAM,CACb,KAAM,CAACC,EAAG,EAAGG,EAAGG,EAAGsB,EAAG,EAAG,EAAGK,EAAGC,CAAC,EAAInC,EACpC,MAAO,CAACC,EAAGM,EAAG,EAAG,EAAGsB,EAAGK,EAAG9B,EAAG,EAAG+B,CAAC,CACnC,EACA,IAAAW,GAAA,MAAMC,EAAE,CACN,YAAY9C,EAAG,CACbC,EAAE,KAAM,UAAW,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAC9CD,IAAM,KAAK,QAAU,CAAC,GAAGA,CAAC,EAC3B,CACD,OAAQ,CACN,OAAO,IAAI8C,GAAE,KAAK,OAAO,CAC1B,CACD,WAAY,CACV,OAAO,KAAK,QAAUF,GAAG,KAAK,OAAO,EAAG,IACzC,CACD,SAAU,CACR,OAAO,KAAK,QAAUD,GAAG,KAAK,OAAO,EAAG,IACzC,CACD,UAAU3C,EAAG,EAAG,CACd,OAAO,KAAK,QAAUgC,GAAG,KAAK,QAAS,CAAC,EAAG,EAAGhC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAAG,IACtE,CACD,OAAOA,EAAG,EAAG,CACX,MAAMG,EAAI,KAAK,IAAIH,CAAC,EAAGM,EAAI,KAAK,IAAIN,CAAC,EAAG4B,EAAI,CAACzB,EAAG,CAACG,EAAG,EAAGA,EAAGH,EAAG,EAAG,EAAG,EAAG,CAAC,EACvE,OAAO,GAAK,KAAK,UAAU,EAAE,CAAC,EAAG,EAAE,CAAC,CAAC,EAAG,KAAK,QAAU6B,GAAG,KAAK,QAASJ,CAAC,EAAG,GAAK,KAAK,UAAU,CAAC,EAAE,CAAC,EAAG,CAAC,EAAE,CAAC,CAAC,EAAG,IAChH,CACD,SAAU,CACR,OAAO,KAAK,QAAUI,GAAG,KAAK,QAAS,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,CAAC,CAAC,EAAG,IACvE,CACD,SAAU,CACR,OAAO,KAAK,QAAUA,GAAG,KAAK,QAAS,CAAC,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAAG,IACvE,CACD,WAAWhC,EAAG,EAAG,CACf,KAAM,CAACG,EAAGG,CAAC,EAAIN,EAAG4B,EAAI,KAAK,MAAMtB,EAAGH,CAAC,EACrC,OAAO,GAAK,KAAK,UAAU,EAAE,CAAC,EAAG,EAAE,CAAC,CAAC,EAAG,KAAK,OAAOyB,CAAC,EAAG,KAAK,QAAO,EAAI,KAAK,OAAO,CAACA,CAAC,EAAG,GAAK,KAAK,UAAU,CAAC,EAAE,CAAC,EAAG,CAAC,EAAE,CAAC,CAAC,EAAG,IAC7H,CACD,aAAa5B,EAAG,CACd,OAAOA,GAAK,KAAK,UAAUA,EAAE,CAAC,EAAGA,EAAE,CAAC,CAAC,EAAG,KAAK,QAAUgC,GAAG,KAAK,QAAS,CAAC,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,CAAC,CAAC,EAAGhC,GAAK,KAAK,UAAU,CAACA,EAAE,CAAC,EAAG,CAACA,EAAE,CAAC,CAAC,EAAG,IAC5I,CACD,MAAMA,EAAG,EAAG,CACV,OAAO,GAAK,KAAK,UAAU,EAAE,CAAC,EAAG,EAAE,CAAC,CAAC,EAAG,KAAK,QAAUgC,GAAG,KAAK,QAAS,CAAChC,EAAG,EAAG,EAAG,EAAGA,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAAG,GAAK,KAAK,UAAU,CAAC,EAAE,CAAC,EAAG,CAAC,EAAE,CAAC,CAAC,EAAG,IAC1I,CACD,UAAUA,EAAG,CACX,KAAM,CAAC,EAAGG,CAAC,EAAIH,EAAG,CAACM,EAAGsB,EAAG,EAAG,EAAGK,EAAGC,CAAC,EAAI,KAAK,QAC5C,MAAO,CAAC5B,EAAI,EAAIsB,EAAIzB,EAAI,EAAG,EAAI,EAAI8B,EAAI9B,EAAI+B,CAAC,CAC7C,CACD,eAAelC,EAAG,CAChB,KAAM,CAAC,EAAGG,CAAC,EAAI,KAAK,UAAU,CAAC,KAAK,IAAIH,CAAC,EAAG,KAAK,IAAIA,CAAC,CAAC,CAAC,EAAG,CAACM,EAAGsB,CAAC,EAAI,KAAK,UAAU,CAAC,EAAG,CAAC,CAAC,EACzF,OAAO,KAAK,MAAMzB,EAAIyB,EAAG,EAAItB,CAAC,CAC/B,CACD,kBAAmB,CACjB,KAAM,CAACN,EAAS,CAAA,CAAA,CAAA,CAAC,EAAI,KAAK,QAC1B,OAAOA,EAAI,EAAI,CAChB,CACD,aAAc,CACZ,KAAM,CAACA,EAAO,CAAA,CAAA,CAAC,EAAI,KAAK,QACxB,OAAO,KAAK,KAAKA,EAAIA,EAAI,EAAI,CAAC,CAC/B,CACH,EACA,MAAM+C,EAAG,CACP,WAAW/C,EAAG,CACZ,MAAM,EAAI,IAAI8C,GAAC,EAAG,UAAU9C,EAAG,CAAC,EAChC,OAAO,KAAK,UAAU,CAAC,CACxB,CACD,WAAWA,EAAG,CACZ,MAAM,EAAI,IAAI8C,GAAC,EAAG,UAAU,EAAG9C,CAAC,EAChC,OAAO,KAAK,UAAU,CAAC,CACxB,CACD,UAAUA,EAAG,EAAG,CACd,MAAMG,EAAI,IAAI2C,GAAC,EAAG,UAAU9C,EAAG,CAAC,EAChC,OAAO,KAAK,UAAUG,CAAC,CACxB,CACD,YAAY,CAACH,EAAG,CAAC,EAAG,CAClB,MAAMG,EAAI,IAAI2C,GAAC,EAAG,UAAU9C,EAAG,CAAC,EAChC,OAAO,KAAK,UAAUG,CAAC,CACxB,CACD,OAAOH,EAAG,EAAG,CACX,MAAMG,EAAI,IAAI2C,GAAC,EAAG,OAChB9C,EAAIU,GACJ,CACN,EACI,OAAO,KAAK,UAAUP,CAAC,CACxB,CACD,MAAMH,EAAG,EAAG,CACV,MAAMG,EAAI,IAAI2C,GAAC,EAAG,MAAM9C,EAAG,CAAC,EAC5B,OAAO,KAAK,UAAUG,CAAC,CACxB,CACD,aAAaH,EAAG,CACd,MAAM,EAAI,IAAI8C,GAAG,EAAC,aAAa9C,CAAC,EAChC,OAAO,KAAK,UAAU,CAAC,CACxB,CACD,OAAOA,EAAI,IAAK,EAAG,CACjB,MAAMG,EAAI,IAAI2C,GACd,OAAO9C,IAAM,IAAMG,EAAE,QAAO,EAAKH,IAAM,IAAMG,EAAE,QAAS,EAAGA,EAAE,WAAWH,EAAG,CAAC,EAAG,KAAK,UAAUG,CAAC,CAChG,CACH,QACA,cAAiB4C,EAAG,CAClB,YAAYC,EAAG7C,EAAG,CAChB,QACAF,EAAE,KAAM,YAAa,IAAI,EACzB,KAAK,WAAa+C,EAAG,KAAK,UAAY7C,EAAG,KAAK,WAAa6C,EAAG,KAAK,UAAY7C,CAChF,CACD,IAAI,MAAO,CACT,MAAO,GAAG,KAAK,WAAW,IAAIS,EAAE,KAAK,UAAU,CAAC,MAAMA,EACpD,KAAK,SACN,CAAA,EACF,CACD,IAAI,MAAO,CACT,OAAO,KAAK,IACb,CACD,CAAC,OAAO,IAAI,4BAA4B,CAAC,GAAI,CAC3C,OAAO,KAAK,IACb,CACH,IACA,MAAMqC,WAAWC,EAAG,CAClB,aAAc,CACZ,MAAM,GAAG,SAAS,EAClBjD,EAAE,KAAM,cAAe,MAAM,EAC7BA,EAAE,KAAM,KAAM,IAAI,EAClBA,EAAE,KAAM,SAAU,IAAI,EACtBA,EAAE,KAAM,cAAe,IAAI,EAC3BA,EAAE,KAAM,eAAgB,IAAI,CAC7B,CACD,iBAAiB+C,EAAG,CAClB,MAAM7C,EAAI,KAAK,OAAS,KAAK,UAC7B,OAAO6C,GAAK,CAAC7C,GAAK,EAAI6C,GAAK,CAAC7C,CAC7B,CACD,WAAW6C,EAAG,CACZ,OAAOlC,EAAG,KAAK,WAAYI,EAAG,KAAK,EAAG8B,CAAC,CAAC,CACzC,CACD,IAAI,QAAS,CACX,OAAO5B,EAAE,KAAK,WAAY,KAAK,SAAS,CACzC,CACD,IAAI,cAAe,CACjB,OAAOD,GAAG,KAAK,WAAY,KAAK,SAAS,CAC1C,CACD,IAAI,GAAI,CACN,OAAO,KAAK,KAAO,OAAS,KAAK,GAAKJ,EAAE,KAAK,UAAW,KAAK,UAAU,GAAI,KAAK,EACjF,CACD,IAAI,OAAQ,CACV,GAAI,KAAK,SAAW,KAAM,CACxB,KAAM,CAACiC,EAAG7C,CAAC,EAAI,KAAK,EACpB,KAAK,OAASA,EAAI6C,CACnB,CACD,OAAO,KAAK,MACb,CACD,IAAI,YAAa,CACf,OAAO,KAAK,cAAgB,OAAS,KAAK,YAAc,KAAK,WAAW,CAAC,EAAI,KAAK,MAAQ,KAAK,WAAW,CAAC,GAAI,KAAK,WACrH,CACD,IAAI,UAAW,CACb,OAAOlC,EAAG,KAAK,WAAYI,EAAG,KAAK,EAAG,EAAG,CAAC,CAC3C,CACD,OAAO8B,EAAG,CACR,OAAOA,aAAaC,GAAKpC,EAAE,KAAK,WAAYmC,EAAE,UAAU,GAAKnC,EAAE,KAAK,UAAWmC,EAAE,SAAS,GAAKnC,EAAE,KAAK,UAAWmC,EAAE,UAAU,GAAKnC,EAAE,KAAK,WAAYmC,EAAE,SAAS,EAAI,EACrK,CACD,OAAQ,CACN,OAAO,IAAIC,GAAG,KAAK,WAAY,KAAK,SAAS,CAC9C,CACD,SAAU,CACR,OAAO,IAAIA,GAAG,KAAK,UAAW,KAAK,UAAU,CAC9C,CACD,IAAI,aAAc,CAChB,OAAO,KAAK,eAAiB,OAAS,KAAK,aAAe,IAAI5C,GAC5D,KAAK,IAAI,KAAK,WAAW,CAAC,EAAG,KAAK,UAAU,CAAC,CAAC,EAAI,KAAK,UACvD,KAAK,IAAI,KAAK,WAAW,CAAC,EAAG,KAAK,UAAU,CAAC,CAAC,EAAI,KAAK,UACvD,KAAK,IAAI,KAAK,WAAW,CAAC,EAAG,KAAK,UAAU,CAAC,CAAC,EAAI,KAAK,UACvD,KAAK,IAAI,KAAK,WAAW,CAAC,EAAG,KAAK,UAAU,CAAC,CAAC,EAAI,KAAK,SAC7D,GAAQ,KAAK,YACV,CACD,aAAa2C,EAAG,CACd,MAAM7C,EAAIY,EAAEiC,EAAG,KAAK,UAAU,EAAG,EAAI1B,GAAGnB,EAAG,KAAK,CAAC,EAAI,KAAK,aAC1D,GAAI,EAAI,EACN,OAAOiB,EAAE4B,EAAG,KAAK,UAAU,EAC7B,GAAI,EAAI,EACN,OAAO5B,EAAE4B,EAAG,KAAK,SAAS,EAC5B,MAAMpB,EAAI,KAAK,WAAW,CAAC,EAC3B,OAAOR,EAAE4B,EAAGpB,CAAC,CACd,CACD,YAAYoB,EAAG,CACb,GAAInC,EAAEmC,EAAG,KAAK,WAAY,KAAK,SAAS,EACtC,MAAO,GACT,MAAM7C,EAAIY,EAAEiC,EAAG,KAAK,UAAU,EAC9B,GAAI,CAACrB,GAAG,KAAK,EAAGxB,CAAC,EACf,MAAO,GACT,MAAM,EAAImB,GAAGnB,EAAG,KAAK,CAAC,EAAI,KAAK,aAC/B,OAAO,KAAK,iBAAiB,CAAC,CAC/B,CACD,WAAW6C,EAAG,CACZ,OAAO,KAAK,CACb,CACD,UAAUA,EAAG,CACX,GAAI,CAAC,KAAK,YAAYA,CAAC,EACrB,MAAM,IAAI,MAAM,yBAAyB,EAC3C,OAAOzB,EAAE,KAAK,CAAC,CAChB,CACD,IAAI,cAAe,CACjB,OAAOM,GAAEN,EAAE,KAAK,CAAC,CAAC,CACnB,CACD,IAAI,qBAAsB,CACxB,OAAOA,EAAE,KAAK,CAAC,CAChB,CACD,IAAI,oBAAqB,CACvB,OAAOA,EAAE,KAAK,CAAC,CAChB,CACD,QAAQyB,EAAG,CACT,IAAI7C,EACJ,GAAI,MAAM,QAAQ6C,CAAC,GAAKA,EAAE,SAAW,EACnC,MAAO,CAAC,IAAI,EACd,MAAM,QAAQA,EAAE,CAAC,CAAC,EAAI7C,EAAI6C,EAAI7C,EAAI,CAAC6C,CAAC,EAAG7C,EAAE,QAAS,GAAM,CACtD,GAAI,CAAC,KAAK,YAAY,CAAC,EACrB,MAAM,IAAI,MACR,SAASS,EAAE,CAAC,CAAC,sBAAsB,KAAK,IAAI,EACtD,CACA,CAAK,EACD,MAAM,EAAI,CAAC,KAAK,WAAY,GAAGT,EAAG,KAAK,SAAS,EAAGyB,EAAInB,GAAG,CAAC,EAAG0C,EAAI,KAAK,UAAU,CAAC,EAAI,KAAK,WAAW,CAAC,EACvG,IAAIC,EAAI,KAAK,KAAKD,CAAC,EAAGlB,EAAI,EAC1B,OAAO,KAAK,IAAIkB,CAAC,EAAI,KAAK,YAAcC,EAAI,KAAK,KAAK,KAAK,UAAU,CAAC,EAAI,KAAK,WAAW,CAAC,CAAC,EAAGnB,EAAI,GAAIL,EAAE,KACvG,CAAC,EAAGyB,IAAMD,GAAK,EAAEnB,CAAC,EAAIoB,EAAEpB,CAAC,EAC/B,EAAOL,EAAE,QAAQ,CAAC,EAAGyB,IAAMA,IAAMzB,EAAE,OAAS,EAAI,CAAE,EAAG,IAAIqB,GAAG,EAAGrB,EAAEyB,EAAI,CAAC,CAAC,CAAC,CACrE,CACD,UAAUL,EAAG,CACX,OAAO,IAAIC,GACTD,EAAE,UAAU,KAAK,UAAU,EAC3BA,EAAE,UAAU,KAAK,SAAS,CAChC,CACG,CACH,EACA,SAASM,GAAGvD,EAAG,CACb,OAAO,MAAM,KAAK,MAAMA,CAAC,EAAE,KAAI,CAAE,CACnC,CACA,SAASwD,GAAGxD,EAAG,CACb,MAAMC,EAAI,KAAK,IAAI,GAAGD,EAAE,IAAK,GAAM,EAAE,MAAM,CAAC,EAC5C,OAAOuD,GAAGtD,CAAC,EAAE,IAAK,GAAMD,EAAE,IAAKI,GAAMA,EAAE,CAAC,CAAC,CAAC,CAC5C,CACA,SAASqD,GAAGzD,EAAGC,EAAI,KAAM,CACvB,OAAOD,EAAI,EAAIA,EAAI,EAAI,KAAK,GAAKA,GAAK,EAAI,KAAK,GAAKA,GAAK,EAAI,KAAK,IAAMA,EAAI,EAAI,KAAK,GAAKC,EAAI,EAAID,CACpG,CACA,SAAS0D,GAAG1D,EAAGC,EAAG,EAAGG,EAAI,KAAM,CAC7B,IAAIG,EAAIN,EAAID,EACZ,OAAO,IAAMO,EAAI,CAACA,GAAIA,EAAI,IAAMA,GAAK,EAAI,KAAK,IAAKA,EAAI,EAAI,KAAK,GAAKH,EAAI,EAAIG,CAC/E,CACA,MAAMoD,GAAK,CAAC3D,EAAGC,EAAG,IAAM,CACtB,MAAMG,EAAIkB,GAAGtB,EAAE,EAAGC,EAAE,CAAC,EAAGM,EAAIU,GAAGjB,EAAE,CAAC,EAAG6B,EAAIZ,GAAGhB,EAAE,CAAC,EAAG,EAAI,EAAI,EAAI,EAAID,EAAE,UAAYC,EAAE,UAClF,GAAIG,EAAIA,EAAIG,EAAIsB,EAAI,EAClB,MAAO,WACT,MAAM,EAAIb,EAAEf,EAAE,WAAYD,EAAE,UAAU,EAAGkC,EAAIZ,GAAG,EAAGrB,EAAE,CAAC,EAAIG,EAAG+B,EAAIb,GAAG,EAAGtB,EAAE,CAAC,EAAII,EAC9E,MAAO,CACL,mBAAoB8B,EACpB,mBAAoBC,CACxB,CACA,EACA,SAASyB,GAAG5D,EAAGC,EAAG,EAAI,GAAIG,EAAG,CAC3B,MAAMG,EAAIoD,GAAG3D,EAAGC,EAAGG,CAAC,EACpB,GAAIG,IAAM,WAAY,CACpB,GAAI,CAAC,EACH,OAAO,KACT,GAAIP,EAAE,OAAOC,CAAC,EACZ,OAAOD,EACT,MAAM,EAAIU,GACR,CACET,EAAE,YAAYD,EAAE,UAAU,EAAIA,EAAE,WAAa,KAC7CC,EAAE,YAAYD,EAAE,SAAS,EAAIA,EAAE,UAAY,KAC3CA,EAAE,YAAYC,EAAE,UAAU,EAAIA,EAAE,WAAa,KAC7CD,EAAE,YAAYC,EAAE,SAAS,EAAIA,EAAE,UAAY,IAC5C,EAAC,OAAQiC,GAAMA,IAAM,IAAI,CAChC,EAAM,KAAK,CAACA,EAAGC,IAAMD,EAAE,CAAC,EAAIC,EAAE,CAAC,CAAC,EAG5B,GAFI,EAAE,SAAW,GAEb,EAAE,SAAW,EACf,OAAO,KACT,GAAI,EAAE,SAAW,EACf,OAAO,IAAIe,EAAG,EAAE,CAAC,EAAG,EAAE,CAAC,CAAC,EAC1B,MAAM,QAAQ,MAAM,CAAC,EAAG,IAAI,MAC1B,+DACN,CACG,CACD,KAAM,CAAE,mBAAoBrB,EAAG,mBAAoB,CAAC,EAAKtB,EACzD,MAAO,CAACP,EAAE,iBAAiB6B,CAAC,GAAK,CAAC5B,EAAE,iBAAiB,CAAC,EAAI,KAAOD,EAAE,WAAW6B,CAAC,CACjF,CACA,MAAMgC,GAAK,CAAC7D,EAAGC,IAAM,CACnB,MAAM,EAAIe,EAAEhB,EAAGC,CAAC,EAChB,OAAO0B,GAAG,CAAC,CACb,QACA,MAAMmC,WAAWX,EAAG,CAClB,YAAYF,EAAG7C,EAAG,EAAGyB,EAAI,GAAI,CAAE,aAAcuB,EAAI,EAAE,EAAK,CAAA,EAAI,CAW1D,GAVA,MAAMH,EAAG7C,CAAC,EACVF,EAAE,KAAM,cAAe,KAAK,EAC5BA,EAAE,KAAM,QAAQ,EAChBA,EAAE,KAAM,WAAW,EACnBA,EAAE,KAAM,gBAAiB,IAAI,EAC7BA,EAAE,KAAM,iBAAkB,IAAI,EAC9BA,EAAE,KAAM,UAAW,IAAI,EACvBA,EAAE,KAAM,cAAe,IAAI,EAC3BA,EAAE,KAAM,aAAc,IAAI,EAC1BA,EAAE,KAAM,eAAgB,IAAI,EACxB,KAAK,OAAS,EAAG,KAAK,UAAY2B,EAAG,CAACuB,EAAG,CAC3C,GAAItC,EAAEmC,EAAG7C,CAAC,EACR,MAAM,IAAI,MAAM,sCAAsC,EACxD,GAAI,KAAK,IAAI,KAAK,OAASiB,EAAE,KAAK,UAAW,KAAK,MAAM,CAAC,EAAI,KAAK,UAChE,MAAM,IAAI,MACR,8CAA8CR,EAC5CoC,CACZ,CAAW,QAAQpC,EAAET,CAAC,CAAC,aAAaS,EAAE,CAAC,CAAC,GACxC,CACK,CACF,CACD,IAAI,MAAO,CACT,MAAO,OAAOA,EAAE,KAAK,UAAU,CAAC,KAAKA,EACnC,KAAK,SACN,CAAA,KAAKA,EAAE,KAAK,MAAM,CAAC,KAAK,KAAK,UAAY,KAAO,KAAK,GACvD,CACD,IAAI,cAAe,CACjB,GAAI,KAAK,gBAAkB,KAAM,CAC/B,KAAM,CAACoC,EAAG7C,CAAC,EAAI,KAAK,OAAQ,EAAI,KAAK,OAAS,KAAK,OACnD,KAAK,cAAgB,CACnB,GAAI,EAAI,EACR,GAAI,EACJ,GAAI,EAAI,EACR,EAAG,EAAE,EAAI6C,GAAK,EACd,EAAG,EAAE,EAAI7C,GAAK,EACd,GAAI6C,EAAIA,EAAI7C,EAAIA,EAAI,GAAK,CACjC,CACK,CACD,OAAO,KAAK,aACb,CACD,iBAAiB6C,EAAG,CAClB,MAAO,GAAIA,GAAK,CAAC,KAAK,WAAaA,GAAK,CAAC,KAAK,SAC/C,CACD,aAAaA,EAAG,CACd,OAAOS,GAAG,KAAK,WAAYD,GAAGR,CAAC,EAAG,KAAK,SAAS,EAAI,KAAK,aAC1D,CACD,IAAI,eAAgB,CAClB,OAAO,KAAK,iBAAmB,KAAK,eAAiBS,GACnD,KAAK,WACL,KAAK,UACL,KAAK,SACX,GAAQ,KAAK,cACV,CACD,WAAWT,EAAG,CACZ,OAAOlC,EACL,KAAK,OACLU,GACE,KAAK,OACL,KAAK,WAAawB,EAAI,KAAK,eAAiB,KAAK,UAAY,GAAK,EACnE,CACP,CACG,CACD,aAAaA,EAAG,CACd,KAAM,CAAC7C,EAAG,CAAC,EAAIyD,GAAGZ,EAAG,KAAK,MAAM,EAChC,GAAI,KAAK,IAAI7C,EAAI,KAAK,MAAM,EAAI,KAAK,UACnC,MAAM,IAAI,MACR,SAASS,EAAEoC,CAAC,CAAC,sBAAsB,KAAK,IAAI,EACpD,EACI,MAAMpB,EAAI,KAAK,aAAa,CAAC,EAC7B,GAAI,CAAC,KAAK,iBAAiBA,CAAC,EAC1B,MAAM,IAAI,MACR,SAAShB,EAAEoC,CAAC,CAAC,sBAAsB,KAAK,IAAI,EACpD,EACI,OAAOpB,CACR,CACD,IAAI,QAAS,CACX,OAAO,KAAK,UAAY,OAAS,KAAK,QAAUR,EAAE,KAAK,WAAY,KAAK,MAAM,GAAI,KAAK,OACxF,CACD,IAAI,YAAa,CACf,GAAI,KAAK,cAAgB,KAAM,CAC7B,KAAM,CAAC4B,EAAG7C,CAAC,EAAIY,EAAE,KAAK,WAAY,KAAK,MAAM,EAC7C,KAAK,YAAcyC,GAAG,KAAK,MAAMrD,EAAG6C,CAAC,CAAC,CACvC,CACD,OAAO,KAAK,WACb,CACD,IAAI,WAAY,CACd,GAAI,KAAK,aAAe,KAAM,CAC5B,KAAM,CAACA,EAAG7C,CAAC,EAAIY,EAAE,KAAK,UAAW,KAAK,MAAM,EAC5C,KAAK,WAAayC,GAAG,KAAK,MAAMrD,EAAG6C,CAAC,CAAC,CACtC,CACD,OAAO,KAAK,UACb,CACD,IAAI,QAAS,CACX,OAAO,KAAK,OAAS,KAAK,aAC3B,CACD,IAAI,cAAe,CACjB,OAAO,KAAK,OAAS,KAAK,MAC3B,CACD,IAAI,UAAW,CACb,OAAO,KAAK,WAAW,EAAG,CAC3B,CACD,OAAOA,EAAG,CACR,MAAO,EAAEA,aAAaa,KAAO,CAAChD,EAAE,KAAK,OAAQmC,EAAE,MAAM,EAAI,GAAKnC,EAAE,KAAK,WAAYmC,EAAE,UAAU,GAAKnC,EAAE,KAAK,UAAWmC,EAAE,SAAS,GAAK,KAAK,YAAcA,EAAE,WAAanC,EAAE,KAAK,UAAWmC,EAAE,UAAU,GAAKnC,EAAE,KAAK,WAAYmC,EAAE,SAAS,GAAK,KAAK,YAAc,CAACA,EAAE,SACnQ,CACD,OAAQ,CACN,OAAO,IAAIa,GACT,KAAK,WACL,KAAK,UACL,KAAK,OACL,KAAK,SACX,CACG,CACD,SAAU,CACR,OAAO,IAAIA,GACT,KAAK,UACL,KAAK,WACL,KAAK,OACL,CAAC,KAAK,SACZ,CACG,CACD,IAAI,aAAc,CAChB,GAAI,KAAK,eAAiB,KAAM,CAC9B,MAAMb,EAAI,KAAK,OAAS,KAAK,UAAW7C,EAAK,GAAM,KAAK,iBAAiB,KAAK,aAAa,CAAC,CAAC,EAC7F,KAAK,aAAe,IAAIE,GACtBF,EAAE,KAAK,EAAE,EAAI,KAAK,OAAO,CAAC,EAAI6C,EAAI,KAAK,IAAI,KAAK,WAAW,CAAC,EAAG,KAAK,UAAU,CAAC,CAAC,EAAI,KAAK,UACzF7C,EAAE,KAAK,GAAK,GAAG,EAAI,KAAK,OAAO,CAAC,EAAI6C,EAAI,KAAK,IAAI,KAAK,WAAW,CAAC,EAAG,KAAK,UAAU,CAAC,CAAC,EAAI,KAAK,UAC/F7C,EAAE,CAAC,EAAI,KAAK,OAAO,CAAC,EAAI6C,EAAI,KAAK,IAAI,KAAK,WAAW,CAAC,EAAG,KAAK,UAAU,CAAC,CAAC,EAAI,KAAK,UACnF7C,EAAE,KAAK,GAAK,CAAC,EAAI,KAAK,OAAO,CAAC,EAAI6C,EAAI,KAAK,IAAI,KAAK,WAAW,CAAC,EAAG,KAAK,UAAU,CAAC,CAAC,EAAI,KAAK,SACrG,CACK,CACD,OAAO,KAAK,YACb,CACD,aAAaA,EAAG,CACd,KAAM,CAAC7C,EAAG,CAAC,EAAIyD,GAAGZ,EAAG,KAAK,MAAM,EAChC,OAAO,KAAK,iBAAiB,KAAK,aAAa,CAAC,CAAC,EAAI,KAAK,IAAI7C,EAAI,KAAK,MAAM,EAAI,KAAK,KACpF,KAAK,IACHgB,GAAG6B,EAAG,KAAK,UAAU,EACrB7B,GAAG6B,EAAG,KAAK,SAAS,CACrB,CACP,CACG,CACD,YAAYA,EAAG,CACb,GAAInC,EAAEmC,EAAG,KAAK,UAAU,GAAKnC,EAAEmC,EAAG,KAAK,SAAS,EAC9C,MAAO,GACT,KAAM,CAAC7C,EAAG,CAAC,EAAIyD,GAAGZ,EAAG,KAAK,MAAM,EAChC,GAAI,KAAK,IAAI7C,EAAI,KAAK,MAAM,EAAI,KAAK,UACnC,MAAO,GACT,MAAMyB,EAAI,KAAK,aAAa,CAAC,EAC7B,OAAO,KAAK,iBAAiBA,CAAC,CAC/B,CACD,WAAWoB,EAAG,CACZ,MAAM7C,EAAI,KAAK,WAAa6C,EAAI,KAAK,eAAiB,KAAK,UAAY,GAAK,GAAI,EAAI,KAAK,OAAS,KAAK,cAAepB,EAAI,CAAC,EAAI,KAAK,IAAIzB,CAAC,EAAGgD,EAAI,EAAI,KAAK,IAAIhD,CAAC,EAC9J,OAAO,KAAK,UAAY,CAAC,CAACyB,EAAG,CAACuB,CAAC,EAAI,CAACvB,EAAGuB,CAAC,CACzC,CACD,UAAUH,EAAG,CACX,KAAM,CAAC7C,EAAG,CAAC,EAAIyD,GAAGZ,EAAG,KAAK,MAAM,EAChC,GAAI,KAAK,IAAI7C,EAAI,KAAK,MAAM,EAAI,KAAK,UACnC,MAAM,IAAI,MAAM,yBAAyB,EAC3C,MAAMyB,EAAI,KAAK,aAAa,CAAC,EAC7B,GAAI,CAAC,KAAK,iBAAiBA,CAAC,EAC1B,MAAM,IAAI,MAAM,yBAAyB,EAC3C,MAAMuB,EAAI3B,GAAG,EAAG,CAAC,EACjB,OAAQ,KAAK,UAAYM,GAAKD,IAAGN,EAAE4B,CAAC,CAAC,CACtC,CACD,IAAI,qBAAsB,CACxB,MAAMH,EAAIxB,GAAG,EAAG,KAAK,UAAU,EAC/B,OAAQ,KAAK,UAAYM,GAAKD,IAAGN,EAAEyB,CAAC,CAAC,CACtC,CACD,IAAI,oBAAqB,CACvB,MAAMA,EAAIxB,GAAG,EAAG,KAAK,SAAS,EAC9B,OAAQ,KAAK,UAAYM,GAAKD,IAAGN,EAAEyB,CAAC,CAAC,CACtC,CACD,QAAQA,EAAG,CACT,IAAI7C,EACJ,GAAI,MAAM,QAAQ6C,CAAC,GAAKA,EAAE,SAAW,EACnC,MAAO,CAAC,IAAI,EACd,MAAM,QAAQA,EAAE,CAAC,CAAC,EAAI7C,EAAI6C,EAAI7C,EAAI,CAAC6C,CAAC,EACpC,MAAMpB,EAAI,CAAC,EAAG,EAAG,GAAGzB,EAAE,IAAK8B,GAAM,KAAK,aAAaA,CAAC,CAAC,CAAC,EAAGkB,EAAI,IAAI,IAC/DI,GAAG,CAAC3B,EAAG,CAAC,KAAK,WAAY,KAAK,UAAW,GAAGzB,CAAC,CAAC,CAAC,CACrD,EACIyB,EAAE,KAAK,CAACK,EAAGC,IAAMD,EAAIC,CAAC,EACtB,IAAIkB,EAAI,KACR,OAAOxB,EAAE,QAAQ,CAACK,EAAGC,IAAM,CACzB,GAAIA,IAAMN,EAAE,OAAS,EACnB,MAAO,GACT,MAAMyB,EAAIzB,EAAEM,EAAI,CAAC,EACjB,GAAImB,EAAIpB,EAAI,KAAK,UACf,OAAOmB,IAAM,OAASA,EAAInB,GAAI,CAAA,EAChC,MAAM6B,EAAIV,IAAM,KAAOnB,EAAImB,EAAGjB,EAAI,IAAI0B,GACpCV,EAAE,IAAIW,CAAC,GAAK,KAAK,WAAWA,CAAC,EAC7BX,EAAE,IAAIE,CAAC,GAAK,KAAK,WAAWA,CAAC,EAC7B,KAAK,OACL,KAAK,SACb,EACM,OAAOD,EAAI,KAAMjB,CACvB,CAAK,CACF,CACD,UAAUa,EAAG,CACX,OAAO,IAAIa,GACTb,EAAE,UAAU,KAAK,UAAU,EAC3BA,EAAE,UAAU,KAAK,SAAS,EAC1BA,EAAE,UAAU,KAAK,MAAM,EACvBA,EAAE,iBAAgB,EAAK,KAAK,UAAY,CAAC,KAAK,SACpD,CACG,CACH,EACA,SAASe,GAAGhE,EAAGC,EAAG,EAAG,CACnB,MAAMG,EAAI,IAAI8C,EAAGjD,EAAGD,CAAC,EAAGO,EAAI,IAAI2C,EAAGjD,EAAG,CAAC,EAAG4B,EAAIC,GAAE1B,EAAE,mBAAmB,EAAG,EAAI0B,GAAEvB,EAAE,kBAAkB,EAAG,EAAIoD,GACvG,CAAE,WAAYvD,EAAE,SAAU,EAAGyB,EAAG,UAAW,IAAM,EACjD,CAAE,WAAYtB,EAAE,SAAU,EAAG,EAAG,UAAW,IAAM,CACrD,EACE,GAAI,IAAM,WACR,MAAM,IAAI,MAAM,iDAAiD,EACnE,MAAM2B,EAAIZ,GACRN,EAAEhB,EAAGC,CAAC,EACNe,EAAE,EAAGf,CAAC,CACP,EAAG,EACJ,OAAO,IAAI6D,EACT9D,EACA,EACAe,EAAGX,EAAE,SAAUe,EAAGU,EAAG,EAAE,kBAAkB,CAAC,EAC1CK,EACA,CAAE,aAAc,EAAI,CACxB,CACA,CACA,SAAS+B,GAAGjE,EAAGC,EAAG,EAAG,CACnB,MAAMG,EAAI,IAAI8C,EAAGjD,EAAGD,CAAC,EAAGO,EAAIuB,GAAE1B,EAAE,mBAAmB,EAAGyB,EAAI8B,GACxD,CAAE,WAAYvD,EAAE,SAAU,EAAGG,EAAG,UAAW,IAAM,EACjD,CACE,WAAYP,EACZ,EAAG8B,GAAE,CAAC,EACN,UAAW,IACZ,CACL,EACE,GAAID,IAAM,WACR,MAAM,IAAI,MAAM,iDAAiD,EACnE,MAAM,EAAId,EACRX,EAAE,SACFe,EAAGZ,EAAGsB,EAAE,kBAAkB,CAC3B,EAAE,EAAIP,GACLN,EAAE,EAAGhB,CAAC,EACNgB,EAAE,EAAGD,EAAGf,EAAG,CAAC,CAAC,CACd,EAAG,EACJ,OAAO,IAAI8D,EAAG9D,EAAGC,EAAG,EAAG,EAAG,CACxB,aAAc,EAClB,CAAG,CACH,CACA,MAAMiE,GAAK,MAAOC,GAAK,SACvB,SAASC,GAAGpE,EAAGC,EAAI,EAAG,EAAI,EAAGG,EAAI,IAAKG,EAAI,IAAK,CAC7C,IAAIsB,EAAG,EAAG,EAAGK,EAAGC,EAAG,EAAG,EAAGC,EAAGC,EAAGC,EAAGC,EAAGC,EAAGC,EACxC,IAAK,EAAIzC,EAAEC,CAAC,EAAG,EAAID,EAAE,CAAC,EAAG,EAAI,IAAM,CAACC,EAAG,CAAC,EAAI,CAAC,EAAGA,CAAC,EAAG,CAAC,EAAG,CAAC,EAAI,CAAC,EAAG,CAAC,GAAIwC,EAAI,EAAI0B,IAAM,EAAIlE,GAAIiC,EAAIlC,EAAEyC,CAAC,EAAGN,EAAI,EAAG,EAAI,EAAGD,EAAI,GAAK,CAC3H,GAAIE,GAAK,EAAInC,IAAM,EAAIiC,GAAIG,GAAK,EAAII,IAAM,EAAI,GAAIH,EAAID,EAAID,EAAG,KAAK,IAAIE,CAAC,EAAI4B,GAAKrC,EAAI,EAAIqC,GAAKrC,EAAI,EAAIS,EAAGC,EAAI,IAAM,EAAIE,GAAKJ,GAAK,EAAIpC,GAAKmC,GAAKP,EAAGW,EAAI,EAAIpC,GAAKqC,EAAI,GAAI,EAAIlC,EACxK,MAAM,IAAI,MAAM,sBAAsB,EACxC,GAAI,GAAK,GAAIgC,EAAIE,IAAM,EAAIF,GAAK,EAAG,CACjC,GAAI,EAAIvC,EAAEuC,CAAC,EAAGJ,GAAK,EAAG,EAAID,EACxB,OAAOjC,EAAI,EAAG,EAAIsC,EAAG,EAAI,EAAG,EAAI,EAAG,CAACtC,EAAG,EAAGwC,EAAG,EAAG,EAAGP,EAAGC,CAAC,EACzD,GAAI,EAAI,EACN,OAAOM,EAAIF,EAAGL,EAAI,EAAG,CAACjC,EAAG,EAAGwC,EAAG,EAAG,EAAGP,EAAGC,CAAC,EAC3CI,EAAIE,EAAI0B,IAAM1B,EAAI,GAAI,EAAIzC,EAAEuC,CAAC,EAAGJ,GAAK,CACtC,MACEI,EAAIC,IAAMA,EAAIC,IAAM,GAAKF,EAAIC,EAAG,EAAIxC,EAAEuC,CAAC,EAAGJ,GAAK,IAAMI,EAAIC,IAAMC,EAAIF,GAAK,GAAK,EAAIvC,EAAEuC,CAAC,EAAGJ,GAAK,EAAG,EAAID,IAAM,EAAIO,EAAGA,EAAIF,EAAGA,EAAIE,EAAI0B,IAAM1B,EAAI,GAAI,EAAIP,EAAGA,EAAI,EAAG,EAAIlC,EAAEuC,CAAC,EAAGJ,GAAK,KAAOI,EAAIE,EAAI0B,IAAM1B,EAAI,GAAI,EAAIzC,EAAEuC,CAAC,EAAGJ,GAAK,GACzNlC,EAAI,EAAG,EAAIwC,EAAGA,EAAIF,EAAG,EAAI,EAAG,EAAIL,EAAGA,EAAI,CACxC,CACD,MAAO,CAACjC,EAAG,EAAGwC,EAAG,EAAG,EAAGP,EAAGC,CAAC,CAC7B,CACA,MAAMkC,GAAK,QAAUC,GAAK,MAC1B,MAAMC,EAAG,CACP,YAAYtE,EAAG,EAAI,QAASG,EAAI,IAAK,CACnCF,EAAE,KAAM,MAAM,EACdA,EAAE,KAAM,MAAM,EACdA,EAAE,KAAM,MAAM,EACdA,EAAE,KAAM,UAAU,EAClBA,EAAE,KAAM,OAAO,EACf,KAAK,KAAOD,EAAG,KAAK,IAAM,EAAG,KAAK,QAAUG,EAAG,KAAK,KAAOH,EAAG,KAAK,IAAM,EAAG,KAAK,QAAUG,EAAG,KAAK,KAAO,IAAO,KAAK,KAAO,IAAO,KAAK,KAAO,EAAG,KAAK,SAAW,EAAG,KAAK,MAAQ,IACpL,CACD,WAAWH,EAAI,KAAM,CACnB,KAAK,MAAQA,CACd,CACD,gBAAiB,CACf,IAAIA,EAAG,EAAGG,EAAGG,EAAGsB,EAAG,EAAG,EACtB,MAAMK,EAAI,KAAK,KAAMC,EAAI,KAAK,MAC9B,GAAIA,IAAM,KACR,CAACN,EAAG,EAAG,EAAG5B,EAAG,EAAGG,EAAGG,CAAC,EAAI6D,GAAGlC,CAAC,UACrBC,EAAE,SAAW,EACpB,CAACN,EAAG,EAAG,EAAG5B,EAAG,EAAGG,EAAGG,CAAC,EAAI6D,GAAGlC,EAAGC,EAAE,CAAC,EAAGA,EAAE,CAAC,CAAC,UACjCA,EAAE,SAAW,EAAG,CACvB,GAAI,CAACN,EAAG,EAAG,CAAC,EAAIM,EAAGN,EAAI,IAAM,CAAC,EAAGA,CAAC,EAAI,CAACA,EAAG,CAAC,GAAI,EAAEA,EAAI,GAAK,EAAI,GAC5D,MAAM,IAAI,MAAM,4BAA4B,EAC9C,GAAI5B,EAAIiC,EAAEL,CAAC,EAAG,EAAIK,EAAE,CAAC,EAAG9B,EAAI8B,EAAE,CAAC,EAAG,EAAE,EAAIjC,GAAK,EAAIG,GAC/C,MAAM,IAAI,MAAM,4BAA4B,EAC9CG,EAAI,CACL,KACC,OAAM,IAAI,MACR,qDACR,EACI,MAAO,CAACsB,EAAG,EAAG,EAAG5B,EAAG,EAAGG,EAAGG,CAAC,CAC5B,CACD,UAAW,CACT,MAAMN,EAAI,KAAK,KACf,GAAI,CAAC,EAAGG,EAAGG,KAASsB,CAAC,EAAI,KAAK,eAAgB,EAAE,EAAIzB,EAAG,EAAIA,EAAG8B,EAAI9B,EAAG+B,EAAIlC,EAAE,CAAC,EAAG,EAAIkC,EAAG,EAAIA,EAAGC,EAAGC,EAChG,EAAI9B,GAAK6B,EAAI,EAAGC,EAAI9B,IAAM6B,EAAI7B,EAAG8B,EAAI,GACrC,IAAIC,EAAI,EACRT,EAAI,EACJ,IAAIU,EAAI,EAAGC,EAAI,EAAGC,EAClB,KAAOF,EAAI,KAAK,SAAW,CACzB,MAAMG,EAAI,KAAK,IAAM,KAAK,IAAI,CAAC,EAAI4B,GAAI3B,EAAI,EAAID,EAAG8B,EAAI,IAAOpC,EAAIC,GACjE,GAAI,KAAK,IAAI,EAAImC,CAAC,EAAI7B,EAAI,IAAON,EAAID,GACnC,MACF,GAAI,KAAK,IAAIE,CAAC,GAAKI,EACjB,GAAK8B,EAAIlC,EAAIF,EAAI,EAAIE,EAAID,EAAI,EAAGG,EAAI6B,GAAK/B,MACtC,CACH,MAAMmC,GAAK,EAAI,IAAM,EAAI,GACzB,IAAIC,GAAK,EAAIxC,IAAM,EAAIC,GAAIwC,GAAK,EAAIzC,GAAKwC,GAAK,EAAI,GAAKD,EACvDC,EAAI,GAAKA,EAAID,GAAIC,EAAI,IAAMC,EAAI,CAACA,GAAID,EAAI,KAAK,IAAIA,CAAC,EAClD,MAAME,EAAItC,EACVA,EAAIE,EAAGmC,EAAID,GAAKtC,EAAI,IAAMuC,EAAID,GAAKrC,EAAI,IAAM,KAAK,IAAIsC,CAAC,EAAI,KAAK,IAAI,GAAMD,EAAIE,CAAC,GAAKpC,EAAImC,EAAI,EAAID,EAAGjC,EAAI,EAAID,GAAIC,EAAIL,EAAIO,GAAKN,EAAII,EAAIE,KAAO6B,EAAI,GAAK,EAAIhC,EAAIE,EAAIF,EAAI,CAACE,KAAO,GAAK8B,EAAIlC,EAAIF,EAAI,EAAIE,EAAID,EAAI,EAAGG,EAAI6B,GAAK/B,EACtN,CACD,KAAK,IAAIE,CAAC,EAAIE,EAAIF,GAAK,EAAIC,EAAI,EAAIC,EAAID,EAAI,EAAIC,EAAID,EAAI,EAAID,EAC3D,MAAMqC,EAAI5E,EAAEwC,CAAC,EACbZ,GAAK,EAAGgD,EAAI,GAAKpC,EAAI,EAAIL,EAAIK,EAAIJ,EAAII,EAAGoC,GAAK1C,GAAK,IAAM,GAAKD,EAAI,EAAG,EAAIO,EAAG,EAAIN,EAAGA,EAAI0C,IAAMA,GAAK,GAAK3C,IAAM,GAAKA,IAAM,KAAOA,EAAIO,EAAG,EAAIoC,KAAOpC,GAAK,EAAIL,EAAI,EAAIC,EAAI,EAAGH,EAAI,EAAG,EAAI,EAAG,EAAIO,EAAG,EAAIN,EAAGA,EAAI,EAAG,EAAI0C,GAAItC,GAAK,CACzN,CACD,KAAK,KAAO,EAAG,KAAK,KAAO,EAAG,KAAK,KAAOA,EAAG,KAAK,SAAWV,CAC9D,CACD,SAAU,CACR,MAAO,CACL,OAAQ,KAAK,KACb,KAAM,KAAK,KACX,WAAY,KAAK,KACjB,UAAW,KAAK,QACtB,CACG,CACD,KAAM,CACJ,OAAO,KAAK,SAAQ,EAAI,KAAK,QAAO,CACrC,CACH,CACA,SAASiD,GAAG9E,EAAGC,EAAI,KAAM,EAAI,IAAK,CAChC,MAAMG,EAAI,IAAImE,GAAGvE,EAAGC,EAAG,CAAC,EACxB,OAAOG,EAAE,WAAW,CAAC,EAAG,CAAC,CAAC,EAAGA,EAAE,KACjC,CACA,MAAM2E,GAAK,OAAO,UAAU,SAC5B,SAASC,GAAEhF,EAAG,CACZ,MAAMC,EAAI8E,GAAG,KAAK/E,CAAC,EACnB,OAAOC,EAAE,SAAS,QAAQ,GAAK,CAACA,EAAE,SAAS,KAAK,CAClD,CACA,SAASgF,GAAGjF,EAAG,CACb,IAAIC,EAAI,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAS,UAAU,CAAC,EAAI,CAAA,EACzE,GAAI,CAAC+E,GAAEhF,CAAC,EACN,MAAM,IAAI,UAAU,wBAAwB,EAC9C,GAAIA,EAAE,SAAW,EACf,MAAM,IAAI,UAAU,yBAAyB,EAC/C,IAAI,EAAIC,EAAE,UAAWG,EAAI,IAAM,OAAS,EAAI,EAAGG,EAAIN,EAAE,QAAS4B,EAAItB,IAAM,OAASP,EAAE,OAASO,EAC5F,GAAIH,EAAI,GAAKA,GAAKJ,EAAE,QAAU,CAAC,OAAO,UAAUI,CAAC,EAC/C,MAAM,IAAI,MAAM,0DAA0D,EAC5E,GAAIyB,GAAKzB,GAAKyB,EAAI7B,EAAE,QAAU,CAAC,OAAO,UAAU6B,CAAC,EAC/C,MAAM,IAAI,MAAM,+EAA+E,EACjG,QAAS,EAAI7B,EAAEI,CAAC,EAAG,EAAIA,EAAI,EAAG,EAAIyB,EAAG,IACnC7B,EAAE,CAAC,EAAI,IAAM,EAAIA,EAAE,CAAC,GACtB,OAAO,CACT,CACA,SAASkF,GAAGlF,EAAG,CACb,IAAIC,EAAI,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAS,UAAU,CAAC,EAAI,CAAA,EACzE,GAAI,CAAC+E,GAAEhF,CAAC,EACN,MAAM,IAAI,UAAU,wBAAwB,EAC9C,GAAIA,EAAE,SAAW,EACf,MAAM,IAAI,UAAU,yBAAyB,EAC/C,IAAI,EAAIC,EAAE,UAAWG,EAAI,IAAM,OAAS,EAAI,EAAGG,EAAIN,EAAE,QAAS4B,EAAItB,IAAM,OAASP,EAAE,OAASO,EAC5F,GAAIH,EAAI,GAAKA,GAAKJ,EAAE,QAAU,CAAC,OAAO,UAAUI,CAAC,EAC/C,MAAM,IAAI,MAAM,0DAA0D,EAC5E,GAAIyB,GAAKzB,GAAKyB,EAAI7B,EAAE,QAAU,CAAC,OAAO,UAAU6B,CAAC,EAC/C,MAAM,IAAI,MAAM,+EAA+E,EACjG,QAAS,EAAI7B,EAAEI,CAAC,EAAG,EAAIA,EAAI,EAAG,EAAIyB,EAAG,IACnC7B,EAAE,CAAC,EAAI,IAAM,EAAIA,EAAE,CAAC,GACtB,OAAO,CACT,CACA,SAASmF,GAAGnF,EAAG,CACb,IAAIC,EAAI,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAS,UAAU,CAAC,EAAI,CAAA,EACzE,GAAI+E,GAAEhF,CAAC,GACL,GAAIA,EAAE,SAAW,EACf,MAAM,IAAI,UAAU,yBAAyB,MAE/C,OAAM,IAAI,UAAU,wBAAwB,EAC9C,IAAI,EACJ,GAAIC,EAAE,SAAW,OAAQ,CACvB,GAAI,CAAC+E,GAAE/E,EAAE,MAAM,EACb,MAAM,IAAI,UAAU,6CAA6C,EACnE,EAAIA,EAAE,MACP,MACC,EAAI,IAAI,MAAMD,EAAE,MAAM,EACxB,IAAII,EAAI8E,GAAGlF,CAAC,EAAGO,EAAI0E,GAAGjF,CAAC,EACvB,GAAII,IAAMG,EACR,MAAM,IAAI,WAAW,6EAA6E,EACpG,IAAIsB,EAAI5B,EAAE,IAAK,EAAI4B,IAAM,OAAS5B,EAAE,WAAaG,EAAI,EAAIyB,EAAG,EAAI5B,EAAE,IAAKiC,EAAI,IAAM,OAASjC,EAAE,WAAaM,EAAI,EAAI,EACjH,GAAI,GAAK2B,EACP,MAAM,IAAI,WAAW,4CAA4C,EACnE,QAASC,GAAKD,EAAI,IAAM3B,EAAIH,GAAI,EAAI,EAAG,EAAIJ,EAAE,OAAQ,IACnD,EAAE,CAAC,GAAKA,EAAE,CAAC,EAAII,GAAK+B,EAAI,EAC1B,OAAO,CACT,CACA,MAAMiD,GAAK,IAAI,OAAO,CAAC,EAAGC,GAAK,IAAI,OAAO,CAAC,EAC3C,SAASC,IAAK,CACZ,OAAOC,GAAG,IAAI,CAChB,CACA,SAASA,GAAGvF,EAAGC,EAAI,GAAI,CACrB,KAAM,CACJ,QAAS,EAAI,GACb,WAAYG,EAAI,GAChB,WAAYG,EAAI,EAChB,SAAUsB,EAAI,MACf,EAAG5B,EACJ,MAAO,GAAGD,EAAE,YAAY,IAAI;AAAA,EAC5BoF,EAAE;AAAA,EACFC,EAAE,GAAGG,GAAGxF,EAAG,EAAGI,EAAGG,EAAGsB,CAAC,CAAC;AAAA,EACtBuD,EAAE;AAAA,EACFA,EAAE,SAASpF,EAAE,IAAI;AAAA,EACjBoF,EAAE,YAAYpF,EAAE,OAAO;AAAA,EAEzB,CACA,SAASwF,GAAGxF,EAAGC,EAAG,EAAGG,EAAGG,EAAG,CACzB,KAAM,CAAE,KAAMsB,EAAG,QAAS,CAAC,EAAK7B,EAAG,EAAI,KAAK,IAAI6B,EAAG5B,CAAC,EAAGiC,EAAI,KAAK,IAAI,EAAG,CAAC,EAAGC,EAAI,GAC/E,GAAI5B,IAAM,OAAQ,CAChBA,EAAI,GACJ,EACE,QAAS,EAAI,EAAG,EAAI,EAAG,IACrB,QAAS,EAAI,EAAG,EAAI2B,EAAG,IACrB,GAAIlC,EAAE,IAAI,EAAG,CAAC,EAAI,EAAG,CACnBO,EAAI,GACJ,MAAM,CACP,CACR,CACD,QAAS,EAAI,EAAG,EAAI,EAAG,IAAK,CAC1B,IAAI,EAAI,CAAA,EACR,QAAS6B,EAAI,EAAGA,EAAIF,EAAGE,IACrB,EAAE,KAAKqD,GAAGzF,EAAE,IAAI,EAAGoC,CAAC,EAAGhC,EAAGG,CAAC,CAAC,EAC9B4B,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,CAAC,EAAE,CACxB,CACD,OAAOD,IAAM,IAAMC,EAAEA,EAAE,OAAS,CAAC,GAAK,QAAQ,EAAI,CAAC,iBAAkB,IAAMN,GAAKM,EAAE,KAAK,OAAON,EAAI5B,CAAC,YAAY,EAAGkC,EAAE,KAAK;AAAA,EACzHkD,EAAE,EAAE,CACN,CACA,SAASI,GAAGzF,EAAGC,EAAG,EAAG,CACnB,OAAQD,GAAK,GAAK,EAAI,IAAI0F,GAAG1F,EAAGC,EAAI,CAAC,CAAC,GAAKyF,GAAG1F,EAAGC,CAAC,GAAG,OAAOA,CAAC,CAC/D,CACA,SAASyF,GAAG1F,EAAGC,EAAG,CAChB,IAAI,EAAID,EAAE,WACV,GAAI,EAAE,QAAUC,EACd,OAAO,EACT,IAAIG,EAAIJ,EAAE,QAAQC,CAAC,EACnB,GAAIG,EAAE,OAASH,IAAMG,EAAIJ,EAAE,QAAQ,KAAK,IAAI,EAAGC,GAAKG,EAAE,OAASH,EAAE,CAAC,GAAIG,EAAE,QAAUH,GAAK,CAACG,EAAE,WAAW,OAAO,GAAK,CAACA,EAAE,WAAW,QAAQ,EACrI,OAAOA,EACT,IAAIG,EAAIP,EAAE,cAAcC,CAAC,EACzB,OAAOM,EAAE,OAASN,IAAMM,EAAIP,EAAE,cAAc,KAAK,IAAI,EAAGC,GAAKM,EAAE,OAASN,EAAE,CAAC,GAAIM,EAAE,MAAM,CAAC,CAC1F,CACA,SAASoF,GAAG3F,EAAGC,EAAG,CAChBD,EAAE,UAAU,IAAM,SAASI,EAAG,CAC5B,OAAO,OAAOA,GAAK,SAAW,KAAK,KAAKA,CAAC,EAAI,KAAK,KAAKA,CAAC,CACzD,EAAEJ,EAAE,UAAU,KAAO,SAASI,EAAG,CAChC,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAASyB,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAI,EAAGA,EAAG,KAAK,IAAI,EAAGA,CAAC,EAAIzB,CAAC,EACrC,OAAO,IACR,EAAEJ,EAAE,UAAU,KAAO,SAASI,EAAG,CAChC,GAAIA,EAAIH,EAAE,YAAYG,CAAC,EAAG,KAAK,OAASA,EAAE,MAAQ,KAAK,UAAYA,EAAE,QACnE,MAAM,IAAI,WAAW,mCAAmC,EAC1D,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAASyB,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAI,EAAGA,EAAG,KAAK,IAAI,EAAGA,CAAC,EAAIzB,EAAE,IAAI,EAAGyB,CAAC,CAAC,EAC/C,OAAO,IACR,EAAE7B,EAAE,IAAM,SAASI,EAAG,EAAG,CACxB,OAAO,IAAIH,EAAEG,CAAC,EAAE,IAAI,CAAC,CACtB,EAAEJ,EAAE,UAAU,IAAM,SAASI,EAAG,CAC/B,OAAO,OAAOA,GAAK,SAAW,KAAK,KAAKA,CAAC,EAAI,KAAK,KAAKA,CAAC,CACzD,EAAEJ,EAAE,UAAU,KAAO,SAASI,EAAG,CAChC,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAASyB,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAI,EAAGA,EAAG,KAAK,IAAI,EAAGA,CAAC,EAAIzB,CAAC,EACrC,OAAO,IACR,EAAEJ,EAAE,UAAU,KAAO,SAASI,EAAG,CAChC,GAAIA,EAAIH,EAAE,YAAYG,CAAC,EAAG,KAAK,OAASA,EAAE,MAAQ,KAAK,UAAYA,EAAE,QACnE,MAAM,IAAI,WAAW,mCAAmC,EAC1D,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAASyB,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAI,EAAGA,EAAG,KAAK,IAAI,EAAGA,CAAC,EAAIzB,EAAE,IAAI,EAAGyB,CAAC,CAAC,EAC/C,OAAO,IACR,EAAE7B,EAAE,IAAM,SAASI,EAAG,EAAG,CACxB,OAAO,IAAIH,EAAEG,CAAC,EAAE,IAAI,CAAC,CACtB,EAAEJ,EAAE,UAAU,SAAWA,EAAE,UAAU,IAAKA,EAAE,UAAU,UAAYA,EAAE,UAAU,KAAMA,EAAE,UAAU,UAAYA,EAAE,UAAU,KAAMA,EAAE,SAAWA,EAAE,IAAKA,EAAE,UAAU,IAAM,SAASI,EAAG,CAC/K,OAAO,OAAOA,GAAK,SAAW,KAAK,KAAKA,CAAC,EAAI,KAAK,KAAKA,CAAC,CACzD,EAAEJ,EAAE,UAAU,KAAO,SAASI,EAAG,CAChC,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAASyB,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAI,EAAGA,EAAG,KAAK,IAAI,EAAGA,CAAC,EAAIzB,CAAC,EACrC,OAAO,IACR,EAAEJ,EAAE,UAAU,KAAO,SAASI,EAAG,CAChC,GAAIA,EAAIH,EAAE,YAAYG,CAAC,EAAG,KAAK,OAASA,EAAE,MAAQ,KAAK,UAAYA,EAAE,QACnE,MAAM,IAAI,WAAW,mCAAmC,EAC1D,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAASyB,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAI,EAAGA,EAAG,KAAK,IAAI,EAAGA,CAAC,EAAIzB,EAAE,IAAI,EAAGyB,CAAC,CAAC,EAC/C,OAAO,IACR,EAAE7B,EAAE,IAAM,SAASI,EAAG,EAAG,CACxB,OAAO,IAAIH,EAAEG,CAAC,EAAE,IAAI,CAAC,CACtB,EAAEJ,EAAE,UAAU,SAAWA,EAAE,UAAU,IAAKA,EAAE,UAAU,UAAYA,EAAE,UAAU,KAAMA,EAAE,UAAU,UAAYA,EAAE,UAAU,KAAMA,EAAE,SAAWA,EAAE,IAAKA,EAAE,UAAU,IAAM,SAASI,EAAG,CAC/K,OAAO,OAAOA,GAAK,SAAW,KAAK,KAAKA,CAAC,EAAI,KAAK,KAAKA,CAAC,CACzD,EAAEJ,EAAE,UAAU,KAAO,SAASI,EAAG,CAChC,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAASyB,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAI,EAAGA,EAAG,KAAK,IAAI,EAAGA,CAAC,EAAIzB,CAAC,EACrC,OAAO,IACR,EAAEJ,EAAE,UAAU,KAAO,SAASI,EAAG,CAChC,GAAIA,EAAIH,EAAE,YAAYG,CAAC,EAAG,KAAK,OAASA,EAAE,MAAQ,KAAK,UAAYA,EAAE,QACnE,MAAM,IAAI,WAAW,mCAAmC,EAC1D,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAASyB,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAI,EAAGA,EAAG,KAAK,IAAI,EAAGA,CAAC,EAAIzB,EAAE,IAAI,EAAGyB,CAAC,CAAC,EAC/C,OAAO,IACR,EAAE7B,EAAE,IAAM,SAASI,EAAG,EAAG,CACxB,OAAO,IAAIH,EAAEG,CAAC,EAAE,IAAI,CAAC,CACtB,EAAEJ,EAAE,UAAU,OAASA,EAAE,UAAU,IAAKA,EAAE,UAAU,QAAUA,EAAE,UAAU,KAAMA,EAAE,UAAU,QAAUA,EAAE,UAAU,KAAMA,EAAE,OAASA,EAAE,IAAKA,EAAE,UAAU,IAAM,SAASI,EAAG,CACvK,OAAO,OAAOA,GAAK,SAAW,KAAK,KAAKA,CAAC,EAAI,KAAK,KAAKA,CAAC,CACzD,EAAEJ,EAAE,UAAU,KAAO,SAASI,EAAG,CAChC,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAASyB,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAI,EAAGA,EAAG,KAAK,IAAI,EAAGA,CAAC,EAAIzB,CAAC,EACrC,OAAO,IACR,EAAEJ,EAAE,UAAU,KAAO,SAASI,EAAG,CAChC,GAAIA,EAAIH,EAAE,YAAYG,CAAC,EAAG,KAAK,OAASA,EAAE,MAAQ,KAAK,UAAYA,EAAE,QACnE,MAAM,IAAI,WAAW,mCAAmC,EAC1D,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAASyB,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAI,EAAGA,EAAG,KAAK,IAAI,EAAGA,CAAC,EAAIzB,EAAE,IAAI,EAAGyB,CAAC,CAAC,EAC/C,OAAO,IACR,EAAE7B,EAAE,IAAM,SAASI,EAAG,EAAG,CACxB,OAAO,IAAIH,EAAEG,CAAC,EAAE,IAAI,CAAC,CACtB,EAAEJ,EAAE,UAAU,QAAUA,EAAE,UAAU,IAAKA,EAAE,UAAU,SAAWA,EAAE,UAAU,KAAMA,EAAE,UAAU,SAAWA,EAAE,UAAU,KAAMA,EAAE,QAAUA,EAAE,IAAKA,EAAE,UAAU,IAAM,SAASI,EAAG,CAC3K,OAAO,OAAOA,GAAK,SAAW,KAAK,KAAKA,CAAC,EAAI,KAAK,KAAKA,CAAC,CACzD,EAAEJ,EAAE,UAAU,KAAO,SAASI,EAAG,CAChC,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAASyB,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAI,EAAGA,EAAG,KAAK,IAAI,EAAGA,CAAC,EAAIzB,CAAC,EACrC,OAAO,IACR,EAAEJ,EAAE,UAAU,KAAO,SAASI,EAAG,CAChC,GAAIA,EAAIH,EAAE,YAAYG,CAAC,EAAG,KAAK,OAASA,EAAE,MAAQ,KAAK,UAAYA,EAAE,QACnE,MAAM,IAAI,WAAW,mCAAmC,EAC1D,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAASyB,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAI,EAAGA,EAAG,KAAK,IAAI,EAAGA,CAAC,EAAIzB,EAAE,IAAI,EAAGyB,CAAC,CAAC,EAC/C,OAAO,IACR,EAAE7B,EAAE,IAAM,SAASI,EAAG,EAAG,CACxB,OAAO,IAAIH,EAAEG,CAAC,EAAE,IAAI,CAAC,CACtB,EAAEJ,EAAE,UAAU,GAAK,SAASI,EAAG,CAC9B,OAAO,OAAOA,GAAK,SAAW,KAAK,IAAIA,CAAC,EAAI,KAAK,IAAIA,CAAC,CACvD,EAAEJ,EAAE,UAAU,IAAM,SAASI,EAAG,CAC/B,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAASyB,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAI,EAAGA,EAAG,KAAK,IAAI,EAAGA,CAAC,EAAIzB,CAAC,EACrC,OAAO,IACR,EAAEJ,EAAE,UAAU,IAAM,SAASI,EAAG,CAC/B,GAAIA,EAAIH,EAAE,YAAYG,CAAC,EAAG,KAAK,OAASA,EAAE,MAAQ,KAAK,UAAYA,EAAE,QACnE,MAAM,IAAI,WAAW,mCAAmC,EAC1D,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAASyB,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAI,EAAGA,EAAG,KAAK,IAAI,EAAGA,CAAC,EAAIzB,EAAE,IAAI,EAAGyB,CAAC,CAAC,EAC/C,OAAO,IACR,EAAE7B,EAAE,GAAK,SAASI,EAAG,EAAG,CACvB,OAAO,IAAIH,EAAEG,CAAC,EAAE,GAAG,CAAC,CACrB,EAAEJ,EAAE,UAAU,IAAM,SAASI,EAAG,CAC/B,OAAO,OAAOA,GAAK,SAAW,KAAK,KAAKA,CAAC,EAAI,KAAK,KAAKA,CAAC,CACzD,EAAEJ,EAAE,UAAU,KAAO,SAASI,EAAG,CAChC,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAASyB,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAI,EAAGA,EAAG,KAAK,IAAI,EAAGA,CAAC,EAAIzB,CAAC,EACrC,OAAO,IACR,EAAEJ,EAAE,UAAU,KAAO,SAASI,EAAG,CAChC,GAAIA,EAAIH,EAAE,YAAYG,CAAC,EAAG,KAAK,OAASA,EAAE,MAAQ,KAAK,UAAYA,EAAE,QACnE,MAAM,IAAI,WAAW,mCAAmC,EAC1D,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAASyB,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAI,EAAGA,EAAG,KAAK,IAAI,EAAGA,CAAC,EAAIzB,EAAE,IAAI,EAAGyB,CAAC,CAAC,EAC/C,OAAO,IACR,EAAE7B,EAAE,IAAM,SAASI,EAAG,EAAG,CACxB,OAAO,IAAIH,EAAEG,CAAC,EAAE,IAAI,CAAC,CACtB,EAAEJ,EAAE,UAAU,UAAY,SAASI,EAAG,CACrC,OAAO,OAAOA,GAAK,SAAW,KAAK,WAAWA,CAAC,EAAI,KAAK,WAAWA,CAAC,CACrE,EAAEJ,EAAE,UAAU,WAAa,SAASI,EAAG,CACtC,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAASyB,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAI,EAAGA,EAAG,KAAK,IAAI,EAAGA,CAAC,GAAKzB,CAAC,EACtC,OAAO,IACR,EAAEJ,EAAE,UAAU,WAAa,SAASI,EAAG,CACtC,GAAIA,EAAIH,EAAE,YAAYG,CAAC,EAAG,KAAK,OAASA,EAAE,MAAQ,KAAK,UAAYA,EAAE,QACnE,MAAM,IAAI,WAAW,mCAAmC,EAC1D,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAASyB,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAI,EAAGA,EAAG,KAAK,IAAI,EAAGA,CAAC,GAAKzB,EAAE,IAAI,EAAGyB,CAAC,CAAC,EAChD,OAAO,IACR,EAAE7B,EAAE,UAAY,SAASI,EAAG,EAAG,CAC9B,OAAO,IAAIH,EAAEG,CAAC,EAAE,UAAU,CAAC,CAC5B,EAAEJ,EAAE,UAAU,0BAA4B,SAASI,EAAG,CACrD,OAAO,OAAOA,GAAK,SAAW,KAAK,2BAA2BA,CAAC,EAAI,KAAK,2BAA2BA,CAAC,CACrG,EAAEJ,EAAE,UAAU,2BAA6B,SAASI,EAAG,CACtD,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAASyB,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAI,EAAGA,EAAG,KAAK,IAAI,EAAGA,CAAC,GAAKzB,CAAC,EACtC,OAAO,IACR,EAAEJ,EAAE,UAAU,2BAA6B,SAASI,EAAG,CACtD,GAAIA,EAAIH,EAAE,YAAYG,CAAC,EAAG,KAAK,OAASA,EAAE,MAAQ,KAAK,UAAYA,EAAE,QACnE,MAAM,IAAI,WAAW,mCAAmC,EAC1D,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAASyB,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAI,EAAGA,EAAG,KAAK,IAAI,EAAGA,CAAC,GAAKzB,EAAE,IAAI,EAAGyB,CAAC,CAAC,EAChD,OAAO,IACR,EAAE7B,EAAE,0BAA4B,SAASI,EAAG,EAAG,CAC9C,OAAO,IAAIH,EAAEG,CAAC,EAAE,0BAA0B,CAAC,CAC5C,EAAEJ,EAAE,UAAU,WAAa,SAASI,EAAG,CACtC,OAAO,OAAOA,GAAK,SAAW,KAAK,YAAYA,CAAC,EAAI,KAAK,YAAYA,CAAC,CACvE,EAAEJ,EAAE,UAAU,YAAc,SAASI,EAAG,CACvC,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAASyB,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAI,EAAGA,EAAG,KAAK,IAAI,EAAGA,CAAC,IAAMzB,CAAC,EACvC,OAAO,IACR,EAAEJ,EAAE,UAAU,YAAc,SAASI,EAAG,CACvC,GAAIA,EAAIH,EAAE,YAAYG,CAAC,EAAG,KAAK,OAASA,EAAE,MAAQ,KAAK,UAAYA,EAAE,QACnE,MAAM,IAAI,WAAW,mCAAmC,EAC1D,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAASyB,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAI,EAAGA,EAAG,KAAK,IAAI,EAAGA,CAAC,IAAMzB,EAAE,IAAI,EAAGyB,CAAC,CAAC,EACjD,OAAO,IACR,EAAE7B,EAAE,WAAa,SAASI,EAAG,EAAG,CAC/B,OAAO,IAAIH,EAAEG,CAAC,EAAE,WAAW,CAAC,CAC7B,EAAEJ,EAAE,UAAU,mBAAqBA,EAAE,UAAU,WAAYA,EAAE,UAAU,oBAAsBA,EAAE,UAAU,YAAaA,EAAE,UAAU,oBAAsBA,EAAE,UAAU,YAAaA,EAAE,mBAAqBA,EAAE,WAAYA,EAAE,UAAU,IAAM,UAAW,CAClP,QAASI,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,QAAS,EAAI,EAAG,EAAI,KAAK,QAAS,IAChC,KAAK,IAAIA,EAAG,EAAG,CAAC,KAAK,IAAIA,EAAG,CAAC,CAAC,EAClC,OAAO,IACX,EAAKJ,EAAE,IAAM,SAASI,EAAG,CACrB,OAAO,IAAIH,EAAEG,CAAC,EAAE,IAAG,CACvB,EAAKJ,EAAE,UAAU,IAAM,UAAW,CAC9B,QAASI,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,QAAS,EAAI,EAAG,EAAI,KAAK,QAAS,IAChC,KAAK,IAAIA,EAAG,EAAG,KAAK,IAAI,KAAK,IAAIA,EAAG,CAAC,CAAC,CAAC,EAC3C,OAAO,IACX,EAAKJ,EAAE,IAAM,SAASI,EAAG,CACrB,OAAO,IAAIH,EAAEG,CAAC,EAAE,IAAG,CACvB,EAAKJ,EAAE,UAAU,KAAO,UAAW,CAC/B,QAASI,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,QAAS,EAAI,EAAG,EAAI,KAAK,QAAS,IAChC,KAAK,IAAIA,EAAG,EAAG,KAAK,KAAK,KAAK,IAAIA,EAAG,CAAC,CAAC,CAAC,EAC5C,OAAO,IACX,EAAKJ,EAAE,KAAO,SAASI,EAAG,CACtB,OAAO,IAAIH,EAAEG,CAAC,EAAE,KAAI,CACxB,EAAKJ,EAAE,UAAU,MAAQ,UAAW,CAChC,QAASI,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,QAAS,EAAI,EAAG,EAAI,KAAK,QAAS,IAChC,KAAK,IAAIA,EAAG,EAAG,KAAK,MAAM,KAAK,IAAIA,EAAG,CAAC,CAAC,CAAC,EAC7C,OAAO,IACX,EAAKJ,EAAE,MAAQ,SAASI,EAAG,CACvB,OAAO,IAAIH,EAAEG,CAAC,EAAE,MAAK,CACzB,EAAKJ,EAAE,UAAU,KAAO,UAAW,CAC/B,QAASI,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,QAAS,EAAI,EAAG,EAAI,KAAK,QAAS,IAChC,KAAK,IAAIA,EAAG,EAAG,KAAK,KAAK,KAAK,IAAIA,EAAG,CAAC,CAAC,CAAC,EAC5C,OAAO,IACX,EAAKJ,EAAE,KAAO,SAASI,EAAG,CACtB,OAAO,IAAIH,EAAEG,CAAC,EAAE,KAAI,CACxB,EAAKJ,EAAE,UAAU,MAAQ,UAAW,CAChC,QAASI,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,QAAS,EAAI,EAAG,EAAI,KAAK,QAAS,IAChC,KAAK,IAAIA,EAAG,EAAG,KAAK,MAAM,KAAK,IAAIA,EAAG,CAAC,CAAC,CAAC,EAC7C,OAAO,IACX,EAAKJ,EAAE,MAAQ,SAASI,EAAG,CACvB,OAAO,IAAIH,EAAEG,CAAC,EAAE,MAAK,CACzB,EAAKJ,EAAE,UAAU,KAAO,UAAW,CAC/B,QAASI,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,QAAS,EAAI,EAAG,EAAI,KAAK,QAAS,IAChC,KAAK,IAAIA,EAAG,EAAG,KAAK,KAAK,KAAK,IAAIA,EAAG,CAAC,CAAC,CAAC,EAC5C,OAAO,IACX,EAAKJ,EAAE,KAAO,SAASI,EAAG,CACtB,OAAO,IAAIH,EAAEG,CAAC,EAAE,KAAI,CACxB,EAAKJ,EAAE,UAAU,MAAQ,UAAW,CAChC,QAASI,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,QAAS,EAAI,EAAG,EAAI,KAAK,QAAS,IAChC,KAAK,IAAIA,EAAG,EAAG,KAAK,MAAM,KAAK,IAAIA,EAAG,CAAC,CAAC,CAAC,EAC7C,OAAO,IACX,EAAKJ,EAAE,MAAQ,SAASI,EAAG,CACvB,OAAO,IAAIH,EAAEG,CAAC,EAAE,MAAK,CACzB,EAAKJ,EAAE,UAAU,KAAO,UAAW,CAC/B,QAASI,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,QAAS,EAAI,EAAG,EAAI,KAAK,QAAS,IAChC,KAAK,IAAIA,EAAG,EAAG,KAAK,KAAK,KAAK,IAAIA,EAAG,CAAC,CAAC,CAAC,EAC5C,OAAO,IACX,EAAKJ,EAAE,KAAO,SAASI,EAAG,CACtB,OAAO,IAAIH,EAAEG,CAAC,EAAE,KAAI,CACxB,EAAKJ,EAAE,UAAU,KAAO,UAAW,CAC/B,QAASI,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,QAAS,EAAI,EAAG,EAAI,KAAK,QAAS,IAChC,KAAK,IAAIA,EAAG,EAAG,KAAK,KAAK,KAAK,IAAIA,EAAG,CAAC,CAAC,CAAC,EAC5C,OAAO,IACX,EAAKJ,EAAE,KAAO,SAASI,EAAG,CACtB,OAAO,IAAIH,EAAEG,CAAC,EAAE,KAAI,CACxB,EAAKJ,EAAE,UAAU,MAAQ,UAAW,CAChC,QAASI,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,QAAS,EAAI,EAAG,EAAI,KAAK,QAAS,IAChC,KAAK,IAAIA,EAAG,EAAG,KAAK,MAAM,KAAK,IAAIA,EAAG,CAAC,CAAC,CAAC,EAC7C,OAAO,IACX,EAAKJ,EAAE,MAAQ,SAASI,EAAG,CACvB,OAAO,IAAIH,EAAEG,CAAC,EAAE,MAAK,CACzB,EAAKJ,EAAE,UAAU,IAAM,UAAW,CAC9B,QAASI,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,QAAS,EAAI,EAAG,EAAI,KAAK,QAAS,IAChC,KAAK,IAAIA,EAAG,EAAG,KAAK,IAAI,KAAK,IAAIA,EAAG,CAAC,CAAC,CAAC,EAC3C,OAAO,IACX,EAAKJ,EAAE,IAAM,SAASI,EAAG,CACrB,OAAO,IAAIH,EAAEG,CAAC,EAAE,IAAG,CACvB,EAAKJ,EAAE,UAAU,KAAO,UAAW,CAC/B,QAASI,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,QAAS,EAAI,EAAG,EAAI,KAAK,QAAS,IAChC,KAAK,IAAIA,EAAG,EAAG,KAAK,KAAK,KAAK,IAAIA,EAAG,CAAC,CAAC,CAAC,EAC5C,OAAO,IACX,EAAKJ,EAAE,KAAO,SAASI,EAAG,CACtB,OAAO,IAAIH,EAAEG,CAAC,EAAE,KAAI,CACxB,EAAKJ,EAAE,UAAU,IAAM,UAAW,CAC9B,QAASI,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,QAAS,EAAI,EAAG,EAAI,KAAK,QAAS,IAChC,KAAK,IAAIA,EAAG,EAAG,KAAK,IAAI,KAAK,IAAIA,EAAG,CAAC,CAAC,CAAC,EAC3C,OAAO,IACX,EAAKJ,EAAE,IAAM,SAASI,EAAG,CACrB,OAAO,IAAIH,EAAEG,CAAC,EAAE,IAAG,CACvB,EAAKJ,EAAE,UAAU,MAAQ,UAAW,CAChC,QAASI,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,QAAS,EAAI,EAAG,EAAI,KAAK,QAAS,IAChC,KAAK,IAAIA,EAAG,EAAG,KAAK,MAAM,KAAK,IAAIA,EAAG,CAAC,CAAC,CAAC,EAC7C,OAAO,IACX,EAAKJ,EAAE,MAAQ,SAASI,EAAG,CACvB,OAAO,IAAIH,EAAEG,CAAC,EAAE,MAAK,CACzB,EAAKJ,EAAE,UAAU,MAAQ,UAAW,CAChC,QAASI,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,QAAS,EAAI,EAAG,EAAI,KAAK,QAAS,IAChC,KAAK,IAAIA,EAAG,EAAG,KAAK,MAAM,KAAK,IAAIA,EAAG,CAAC,CAAC,CAAC,EAC7C,OAAO,IACX,EAAKJ,EAAE,MAAQ,SAASI,EAAG,CACvB,OAAO,IAAIH,EAAEG,CAAC,EAAE,MAAK,CACzB,EAAKJ,EAAE,UAAU,OAAS,UAAW,CACjC,QAASI,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,QAAS,EAAI,EAAG,EAAI,KAAK,QAAS,IAChC,KAAK,IAAIA,EAAG,EAAG,KAAK,OAAO,KAAK,IAAIA,EAAG,CAAC,CAAC,CAAC,EAC9C,OAAO,IACX,EAAKJ,EAAE,OAAS,SAASI,EAAG,CACxB,OAAO,IAAIH,EAAEG,CAAC,EAAE,OAAM,CAC1B,EAAKJ,EAAE,UAAU,IAAM,UAAW,CAC9B,QAASI,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,QAAS,EAAI,EAAG,EAAI,KAAK,QAAS,IAChC,KAAK,IAAIA,EAAG,EAAG,KAAK,IAAI,KAAK,IAAIA,EAAG,CAAC,CAAC,CAAC,EAC3C,OAAO,IACX,EAAKJ,EAAE,IAAM,SAASI,EAAG,CACrB,OAAO,IAAIH,EAAEG,CAAC,EAAE,IAAG,CACvB,EAAKJ,EAAE,UAAU,MAAQ,UAAW,CAChC,QAASI,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,QAAS,EAAI,EAAG,EAAI,KAAK,QAAS,IAChC,KAAK,IAAIA,EAAG,EAAG,KAAK,MAAM,KAAK,IAAIA,EAAG,CAAC,CAAC,CAAC,EAC7C,OAAO,IACX,EAAKJ,EAAE,MAAQ,SAASI,EAAG,CACvB,OAAO,IAAIH,EAAEG,CAAC,EAAE,MAAK,CACzB,EAAKJ,EAAE,UAAU,MAAQ,UAAW,CAChC,QAASI,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,QAAS,EAAI,EAAG,EAAI,KAAK,QAAS,IAChC,KAAK,IAAIA,EAAG,EAAG,KAAK,MAAM,KAAK,IAAIA,EAAG,CAAC,CAAC,CAAC,EAC7C,OAAO,IACX,EAAKJ,EAAE,MAAQ,SAASI,EAAG,CACvB,OAAO,IAAIH,EAAEG,CAAC,EAAE,MAAK,CACzB,EAAKJ,EAAE,UAAU,KAAO,UAAW,CAC/B,QAASI,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,QAAS,EAAI,EAAG,EAAI,KAAK,QAAS,IAChC,KAAK,IAAIA,EAAG,EAAG,KAAK,KAAK,KAAK,IAAIA,EAAG,CAAC,CAAC,CAAC,EAC5C,OAAO,IACX,EAAKJ,EAAE,KAAO,SAASI,EAAG,CACtB,OAAO,IAAIH,EAAEG,CAAC,EAAE,KAAI,CACxB,EAAKJ,EAAE,UAAU,MAAQ,UAAW,CAChC,QAASI,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,QAAS,EAAI,EAAG,EAAI,KAAK,QAAS,IAChC,KAAK,IAAIA,EAAG,EAAG,KAAK,MAAM,KAAK,IAAIA,EAAG,CAAC,CAAC,CAAC,EAC7C,OAAO,IACX,EAAKJ,EAAE,MAAQ,SAASI,EAAG,CACvB,OAAO,IAAIH,EAAEG,CAAC,EAAE,MAAK,CACzB,EAAKJ,EAAE,UAAU,KAAO,UAAW,CAC/B,QAASI,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,QAAS,EAAI,EAAG,EAAI,KAAK,QAAS,IAChC,KAAK,IAAIA,EAAG,EAAG,KAAK,KAAK,KAAK,IAAIA,EAAG,CAAC,CAAC,CAAC,EAC5C,OAAO,IACX,EAAKJ,EAAE,KAAO,SAASI,EAAG,CACtB,OAAO,IAAIH,EAAEG,CAAC,EAAE,KAAI,CACxB,EAAKJ,EAAE,UAAU,IAAM,UAAW,CAC9B,QAASI,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,QAAS,EAAI,EAAG,EAAI,KAAK,QAAS,IAChC,KAAK,IAAIA,EAAG,EAAG,KAAK,IAAI,KAAK,IAAIA,EAAG,CAAC,CAAC,CAAC,EAC3C,OAAO,IACX,EAAKJ,EAAE,IAAM,SAASI,EAAG,CACrB,OAAO,IAAIH,EAAEG,CAAC,EAAE,IAAG,CACvB,EAAKJ,EAAE,UAAU,KAAO,UAAW,CAC/B,QAASI,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,QAAS,EAAI,EAAG,EAAI,KAAK,QAAS,IAChC,KAAK,IAAIA,EAAG,EAAG,KAAK,KAAK,KAAK,IAAIA,EAAG,CAAC,CAAC,CAAC,EAC5C,OAAO,IACX,EAAKJ,EAAE,KAAO,SAASI,EAAG,CACtB,OAAO,IAAIH,EAAEG,CAAC,EAAE,KAAI,CACxB,EAAKJ,EAAE,UAAU,KAAO,UAAW,CAC/B,QAASI,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,QAAS,EAAI,EAAG,EAAI,KAAK,QAAS,IAChC,KAAK,IAAIA,EAAG,EAAG,KAAK,KAAK,KAAK,IAAIA,EAAG,CAAC,CAAC,CAAC,EAC5C,OAAO,IACX,EAAKJ,EAAE,KAAO,SAASI,EAAG,CACtB,OAAO,IAAIH,EAAEG,CAAC,EAAE,KAAI,CACxB,EAAKJ,EAAE,UAAU,IAAM,UAAW,CAC9B,QAASI,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,QAAS,EAAI,EAAG,EAAI,KAAK,QAAS,IAChC,KAAK,IAAIA,EAAG,EAAG,KAAK,IAAI,KAAK,IAAIA,EAAG,CAAC,CAAC,CAAC,EAC3C,OAAO,IACX,EAAKJ,EAAE,IAAM,SAASI,EAAG,CACrB,OAAO,IAAIH,EAAEG,CAAC,EAAE,IAAG,CACvB,EAAKJ,EAAE,UAAU,KAAO,UAAW,CAC/B,QAASI,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,QAAS,EAAI,EAAG,EAAI,KAAK,QAAS,IAChC,KAAK,IAAIA,EAAG,EAAG,KAAK,KAAK,KAAK,IAAIA,EAAG,CAAC,CAAC,CAAC,EAC5C,OAAO,IACX,EAAKJ,EAAE,KAAO,SAASI,EAAG,CACtB,OAAO,IAAIH,EAAEG,CAAC,EAAE,KAAI,CACxB,EAAKJ,EAAE,UAAU,MAAQ,UAAW,CAChC,QAASI,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,QAAS,EAAI,EAAG,EAAI,KAAK,QAAS,IAChC,KAAK,IAAIA,EAAG,EAAG,KAAK,MAAM,KAAK,IAAIA,EAAG,CAAC,CAAC,CAAC,EAC7C,OAAO,IACX,EAAKJ,EAAE,MAAQ,SAASI,EAAG,CACvB,OAAO,IAAIH,EAAEG,CAAC,EAAE,MAAK,CACtB,EAAEJ,EAAE,IAAM,SAASI,EAAG,EAAG,CACxB,OAAO,IAAIH,EAAEG,CAAC,EAAE,IAAI,CAAC,CACtB,EAAEJ,EAAE,UAAU,IAAM,SAASI,EAAG,CAC/B,OAAO,OAAOA,GAAK,SAAW,KAAK,KAAKA,CAAC,EAAI,KAAK,KAAKA,CAAC,CACzD,EAAEJ,EAAE,UAAU,KAAO,SAASI,EAAG,CAChC,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAASyB,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAI,EAAGA,EAAG,KAAK,IAAI,KAAK,IAAI,EAAGA,CAAC,EAAGzB,CAAC,CAAC,EAC9C,OAAO,IACR,EAAEJ,EAAE,UAAU,KAAO,SAASI,EAAG,CAChC,GAAIA,EAAIH,EAAE,YAAYG,CAAC,EAAG,KAAK,OAASA,EAAE,MAAQ,KAAK,UAAYA,EAAE,QACnE,MAAM,IAAI,WAAW,mCAAmC,EAC1D,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAASyB,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAI,EAAGA,EAAG,KAAK,IAAI,KAAK,IAAI,EAAGA,CAAC,EAAGzB,EAAE,IAAI,EAAGyB,CAAC,CAAC,CAAC,EACxD,OAAO,IACX,CACA,CACA,SAAS+D,GAAE5F,EAAGC,EAAG,EAAG,CAClB,IAAIG,EAAI,EAAIJ,EAAE,KAAOA,EAAE,KAAO,EAC9B,GAAIC,EAAI,GAAKA,EAAIG,EACf,MAAM,IAAI,WAAW,wBAAwB,CACjD,CACA,SAASyF,GAAE7F,EAAGC,EAAG,EAAG,CAClB,IAAIG,EAAI,EAAIJ,EAAE,QAAUA,EAAE,QAAU,EACpC,GAAIC,EAAI,GAAKA,EAAIG,EACf,MAAM,IAAI,WAAW,2BAA2B,CACpD,CACA,SAAS0F,GAAG9F,EAAGC,EAAG,CAChB,GAAIA,EAAE,YAAcA,EAAIA,EAAE,UAAW,GAAGA,EAAE,SAAWD,EAAE,QACrD,MAAM,IAAI,WACR,uDACN,EACE,OAAOC,CACT,CACA,SAAS8F,GAAG/F,EAAGC,EAAG,CAChB,GAAIA,EAAE,YAAcA,EAAIA,EAAE,UAAW,GAAGA,EAAE,SAAWD,EAAE,KACrD,MAAM,IAAI,WAAW,oDAAoD,EAC3E,OAAOC,CACT,CACA,SAAS+F,GAAGhG,EAAGC,EAAG,CAChB,GAAI,CAAC+E,GAAE/E,CAAC,EACN,MAAM,IAAI,UAAU,8BAA8B,EACpD,QAAS,EAAI,EAAG,EAAIA,EAAE,OAAQ,IAC5B,GAAIA,EAAE,CAAC,EAAI,GAAKA,EAAE,CAAC,GAAKD,EAAE,KACxB,MAAM,IAAI,WAAW,8BAA8B,CACzD,CACA,SAASiG,GAAGjG,EAAGC,EAAG,CAChB,GAAI,CAAC+E,GAAE/E,CAAC,EACN,MAAM,IAAI,UAAU,iCAAiC,EACvD,QAAS,EAAI,EAAG,EAAIA,EAAE,OAAQ,IAC5B,GAAIA,EAAE,CAAC,EAAI,GAAKA,EAAE,CAAC,GAAKD,EAAE,QACxB,MAAM,IAAI,WAAW,iCAAiC,CAC5D,CACA,SAASkG,GAAGlG,EAAGC,EAAG,EAAGG,EAAGG,EAAG,CACzB,GAAI,UAAU,SAAW,EACvB,MAAM,IAAI,WAAW,sBAAsB,EAC7C,GAAI4F,GAAG,WAAYlG,CAAC,EAAGkG,GAAG,SAAU,CAAC,EAAGA,GAAG,cAAe/F,CAAC,EAAG+F,GAAG,YAAa5F,CAAC,EAAGN,EAAI,GAAKG,EAAIG,GAAKN,EAAI,GAAKA,GAAKD,EAAE,MAAQ,EAAI,GAAK,GAAKA,EAAE,MAAQI,EAAI,GAAKA,GAAKJ,EAAE,SAAWO,EAAI,GAAKA,GAAKP,EAAE,QAC7L,MAAM,IAAI,WAAW,oCAAoC,CAC7D,CACA,SAASoG,GAAGpG,EAAGC,EAAI,EAAG,CACpB,IAAI,EAAI,CAAA,EACR,QAASG,EAAI,EAAGA,EAAIJ,EAAGI,IACrB,EAAE,KAAKH,CAAC,EACV,OAAO,CACT,CACA,SAASkG,GAAGnG,EAAGC,EAAG,CAChB,GAAI,OAAOA,GAAK,SACd,MAAM,IAAI,UAAU,GAAGD,CAAC,mBAAmB,CAC/C,CACA,SAASqG,GAAGrG,EAAG,CACb,GAAIA,EAAE,QAAS,EACb,MAAM,IAAI,MAAM,uCAAuC,CAC3D,CACA,SAASsG,GAAGtG,EAAG,CACb,IAAIC,EAAImG,GAAGpG,EAAE,IAAI,EACjB,QAAS,EAAI,EAAG,EAAIA,EAAE,KAAM,EAAE,EAC5B,QAASI,EAAI,EAAGA,EAAIJ,EAAE,QAAS,EAAEI,EAC/BH,EAAE,CAAC,GAAKD,EAAE,IAAI,EAAGI,CAAC,EACtB,OAAOH,CACT,CACA,SAASsG,GAAGvG,EAAG,CACb,IAAIC,EAAImG,GAAGpG,EAAE,OAAO,EACpB,QAAS,EAAI,EAAG,EAAIA,EAAE,KAAM,EAAE,EAC5B,QAASI,EAAI,EAAGA,EAAIJ,EAAE,QAAS,EAAEI,EAC/BH,EAAEG,CAAC,GAAKJ,EAAE,IAAI,EAAGI,CAAC,EACtB,OAAOH,CACT,CACA,SAASuG,GAAGxG,EAAG,CACb,IAAIC,EAAI,EACR,QAAS,EAAI,EAAG,EAAID,EAAE,KAAM,IAC1B,QAASI,EAAI,EAAGA,EAAIJ,EAAE,QAASI,IAC7BH,GAAKD,EAAE,IAAI,EAAGI,CAAC,EACnB,OAAOH,CACT,CACA,SAASwG,GAAGzG,EAAG,CACb,IAAIC,EAAImG,GAAGpG,EAAE,KAAM,CAAC,EACpB,QAAS,EAAI,EAAG,EAAIA,EAAE,KAAM,EAAE,EAC5B,QAASI,EAAI,EAAGA,EAAIJ,EAAE,QAAS,EAAEI,EAC/BH,EAAE,CAAC,GAAKD,EAAE,IAAI,EAAGI,CAAC,EACtB,OAAOH,CACT,CACA,SAASyG,GAAG1G,EAAG,CACb,IAAIC,EAAImG,GAAGpG,EAAE,QAAS,CAAC,EACvB,QAAS,EAAI,EAAG,EAAIA,EAAE,KAAM,EAAE,EAC5B,QAASI,EAAI,EAAGA,EAAIJ,EAAE,QAAS,EAAEI,EAC/BH,EAAEG,CAAC,GAAKJ,EAAE,IAAI,EAAGI,CAAC,EACtB,OAAOH,CACT,CACA,SAAS0G,GAAG3G,EAAG,CACb,IAAIC,EAAI,EACR,QAAS,EAAI,EAAG,EAAID,EAAE,KAAM,IAC1B,QAASI,EAAI,EAAGA,EAAIJ,EAAE,QAASI,IAC7BH,GAAKD,EAAE,IAAI,EAAGI,CAAC,EACnB,OAAOH,CACT,CACA,SAAS2G,GAAG5G,EAAGC,EAAG,EAAG,CACnB,MAAMG,EAAIJ,EAAE,KAAMO,EAAIP,EAAE,QAAS6B,EAAI,GACrC,QAAS,EAAI,EAAG,EAAIzB,EAAG,IAAK,CAC1B,IAAI,EAAI,EAAG8B,EAAI,EAAGC,EAAI,EACtB,QAAS,EAAI,EAAG,EAAI5B,EAAG,IACrB4B,EAAInC,EAAE,IAAI,EAAG,CAAC,EAAI,EAAE,CAAC,EAAG,GAAKmC,EAAGD,GAAKC,EAAIA,EAC3ClC,EAAI4B,EAAE,MAAMK,EAAI,EAAI,EAAI3B,IAAMA,EAAI,EAAE,EAAIsB,EAAE,MAAMK,EAAI,EAAI,EAAI3B,GAAKA,CAAC,CACnE,CACD,OAAOsB,CACT,CACA,SAASgF,GAAG7G,EAAGC,EAAG,EAAG,CACnB,MAAMG,EAAIJ,EAAE,KAAMO,EAAIP,EAAE,QAAS6B,EAAI,GACrC,QAAS,EAAI,EAAG,EAAItB,EAAG,IAAK,CAC1B,IAAI,EAAI,EAAG2B,EAAI,EAAGC,EAAI,EACtB,QAAS,EAAI,EAAG,EAAI/B,EAAG,IACrB+B,EAAInC,EAAE,IAAI,EAAG,CAAC,EAAI,EAAE,CAAC,EAAG,GAAKmC,EAAGD,GAAKC,EAAIA,EAC3ClC,EAAI4B,EAAE,MAAMK,EAAI,EAAI,EAAI9B,IAAMA,EAAI,EAAE,EAAIyB,EAAE,MAAMK,EAAI,EAAI,EAAI9B,GAAKA,CAAC,CACnE,CACD,OAAOyB,CACT,CACA,SAASiF,GAAG9G,EAAGC,EAAG,EAAG,CACnB,MAAMG,EAAIJ,EAAE,KAAMO,EAAIP,EAAE,QAAS6B,EAAIzB,EAAIG,EACzC,IAAI,EAAI,EAAG,EAAI,EAAG2B,EAAI,EACtB,QAASC,EAAI,EAAGA,EAAI/B,EAAG+B,IACrB,QAAS,EAAI,EAAG,EAAI5B,EAAG,IACrB2B,EAAIlC,EAAE,IAAImC,EAAG,CAAC,EAAI,EAAG,GAAKD,EAAG,GAAKA,EAAIA,EAC1C,OAAOjC,GAAK,EAAI,EAAI,EAAI4B,IAAMA,EAAI,IAAM,EAAI,EAAI,EAAIA,GAAKA,CAC3D,CACA,SAASkF,GAAG/G,EAAGC,EAAG,CAChB,QAAS,EAAI,EAAG,EAAID,EAAE,KAAM,IAC1B,QAASI,EAAI,EAAGA,EAAIJ,EAAE,QAASI,IAC7BJ,EAAE,IAAI,EAAGI,EAAGJ,EAAE,IAAI,EAAGI,CAAC,EAAIH,EAAE,CAAC,CAAC,CACpC,CACA,SAAS+G,GAAGhH,EAAGC,EAAG,CAChB,QAAS,EAAI,EAAG,EAAID,EAAE,KAAM,IAC1B,QAASI,EAAI,EAAGA,EAAIJ,EAAE,QAASI,IAC7BJ,EAAE,IAAI,EAAGI,EAAGJ,EAAE,IAAI,EAAGI,CAAC,EAAIH,EAAEG,CAAC,CAAC,CACpC,CACA,SAAS6G,GAAGjH,EAAGC,EAAG,CAChB,QAAS,EAAI,EAAG,EAAID,EAAE,KAAM,IAC1B,QAASI,EAAI,EAAGA,EAAIJ,EAAE,QAASI,IAC7BJ,EAAE,IAAI,EAAGI,EAAGJ,EAAE,IAAI,EAAGI,CAAC,EAAIH,CAAC,CACjC,CACA,SAASiH,GAAGlH,EAAG,CACb,MAAMC,EAAI,CAAA,EACV,QAAS,EAAI,EAAG,EAAID,EAAE,KAAM,IAAK,CAC/B,IAAII,EAAI,EACR,QAASG,EAAI,EAAGA,EAAIP,EAAE,QAASO,IAC7BH,GAAK,KAAK,IAAIJ,EAAE,IAAI,EAAGO,CAAC,EAAG,CAAC,GAAKP,EAAE,QAAU,GAC/CC,EAAE,KAAK,KAAK,KAAKG,CAAC,CAAC,CACpB,CACD,OAAOH,CACT,CACA,SAASkH,GAAGnH,EAAGC,EAAG,CAChB,QAAS,EAAI,EAAG,EAAID,EAAE,KAAM,IAC1B,QAASI,EAAI,EAAGA,EAAIJ,EAAE,QAASI,IAC7BJ,EAAE,IAAI,EAAGI,EAAGJ,EAAE,IAAI,EAAGI,CAAC,EAAIH,EAAE,CAAC,CAAC,CACpC,CACA,SAASmH,GAAGpH,EAAG,CACb,MAAMC,EAAI,CAAA,EACV,QAAS,EAAI,EAAG,EAAID,EAAE,QAAS,IAAK,CAClC,IAAII,EAAI,EACR,QAASG,EAAI,EAAGA,EAAIP,EAAE,KAAMO,IAC1BH,GAAK,KAAK,IAAIJ,EAAE,IAAIO,EAAG,CAAC,EAAG,CAAC,GAAKP,EAAE,KAAO,GAC5CC,EAAE,KAAK,KAAK,KAAKG,CAAC,CAAC,CACpB,CACD,OAAOH,CACT,CACA,SAASoH,GAAGrH,EAAGC,EAAG,CAChB,QAAS,EAAI,EAAG,EAAID,EAAE,KAAM,IAC1B,QAASI,EAAI,EAAGA,EAAIJ,EAAE,QAASI,IAC7BJ,EAAE,IAAI,EAAGI,EAAGJ,EAAE,IAAI,EAAGI,CAAC,EAAIH,EAAEG,CAAC,CAAC,CACpC,CACA,SAASkH,GAAGtH,EAAG,CACb,MAAMC,EAAID,EAAE,KAAO,EACnB,IAAI,EAAI,EACR,QAASI,EAAI,EAAGA,EAAIJ,EAAE,QAASI,IAC7B,QAASG,EAAI,EAAGA,EAAIP,EAAE,KAAMO,IAC1B,GAAK,KAAK,IAAIP,EAAE,IAAIO,EAAGH,CAAC,EAAG,CAAC,EAAIH,EACpC,OAAO,KAAK,KAAK,CAAC,CACpB,CACA,SAASsH,GAAGvH,EAAGC,EAAG,CAChB,QAAS,EAAI,EAAG,EAAID,EAAE,KAAM,IAC1B,QAASI,EAAI,EAAGA,EAAIJ,EAAE,QAASI,IAC7BJ,EAAE,IAAI,EAAGI,EAAGJ,EAAE,IAAI,EAAGI,CAAC,EAAIH,CAAC,CACjC,CACA,IAAAuH,EAAA,MAAMC,CAAE,CACN,OAAO,YAAYxH,EAAG,EAAGG,EAAG,CAC1B,GAAIH,EAAI,IAAMG,EAAE,OACd,MAAM,IAAI,WAAW,6CAA6C,EACpE,IAAIyB,EAAI,IAAI6F,EAAEzH,EAAG,CAAC,EAClB,QAASmD,EAAI,EAAGA,EAAInD,EAAGmD,IACrB,QAASC,EAAI,EAAGA,EAAI,EAAGA,IACrBxB,EAAE,IAAIuB,EAAGC,EAAGjD,EAAEgD,EAAI,EAAIC,CAAC,CAAC,EAC5B,OAAOxB,CACR,CACD,OAAO,UAAU5B,EAAG,CAClB,IAAI,EAAI,IAAIyH,EAAE,EAAGzH,EAAE,MAAM,EACzB,QAASG,EAAI,EAAGA,EAAIH,EAAE,OAAQG,IAC5B,EAAE,IAAI,EAAGA,EAAGH,EAAEG,CAAC,CAAC,EAClB,OAAO,CACR,CACD,OAAO,aAAaH,EAAG,CACrB,IAAI,EAAI,IAAIyH,EAAEzH,EAAE,OAAQ,CAAC,EACzB,QAASG,EAAI,EAAGA,EAAIH,EAAE,OAAQG,IAC5B,EAAE,IAAIA,EAAG,EAAGH,EAAEG,CAAC,CAAC,EAClB,OAAO,CACR,CACD,OAAO,MAAMH,EAAG,EAAG,CACjB,OAAO,IAAIyH,EAAEzH,EAAG,CAAC,CAClB,CACD,OAAO,KAAKA,EAAG,EAAG,CAChB,OAAO,IAAIyH,EAAEzH,EAAG,CAAC,EAAE,KAAK,CAAC,CAC1B,CACD,OAAO,KAAKA,EAAG,EAAGG,EAAI,CAAA,EAAI,CACxB,GAAI,OAAOA,GAAK,SACd,MAAM,IAAI,UAAU,2BAA2B,EACjD,KAAM,CAAE,OAAQG,EAAI,KAAK,MAAM,EAAKH,EACpC,IAAIyB,EAAI,IAAI6F,EAAEzH,EAAG,CAAC,EAClB,QAAS,EAAI,EAAG,EAAIA,EAAG,IACrB,QAAS,EAAI,EAAG,EAAI,EAAG,IACrB4B,EAAE,IAAI,EAAG,EAAGtB,EAAG,CAAA,EACnB,OAAOsB,CACR,CACD,OAAO,QAAQ5B,EAAG,EAAGG,EAAI,CAAA,EAAI,CAC3B,GAAI,OAAOA,GAAK,SACd,MAAM,IAAI,UAAU,2BAA2B,EACjD,KAAM,CAAE,IAAKG,EAAI,EAAG,IAAKsB,EAAI,IAAK,OAAQ,EAAI,KAAK,MAAM,EAAKzB,EAC9D,GAAI,CAAC,OAAO,UAAUG,CAAC,EACrB,MAAM,IAAI,UAAU,wBAAwB,EAC9C,GAAI,CAAC,OAAO,UAAUsB,CAAC,EACrB,MAAM,IAAI,UAAU,wBAAwB,EAC9C,GAAItB,GAAKsB,EACP,MAAM,IAAI,WAAW,8BAA8B,EACrD,IAAI,EAAIA,EAAItB,EAAG2B,EAAI,IAAIwF,EAAEzH,EAAG,CAAC,EAC7B,QAASkC,EAAI,EAAGA,EAAIlC,EAAGkC,IACrB,QAAS,EAAI,EAAG,EAAI,EAAG,IAAK,CAC1B,IAAI,EAAI5B,EAAI,KAAK,MAAM,EAAC,EAAK,CAAC,EAC9B2B,EAAE,IAAIC,EAAG,EAAG,CAAC,CACd,CACH,OAAOD,CACR,CACD,OAAO,IAAIjC,EAAG,EAAGG,EAAG,CAClB,IAAM,SAAW,EAAIH,GAAIG,IAAM,SAAWA,EAAI,GAC9C,IAAIG,EAAI,KAAK,IAAIN,EAAG,CAAC,EAAG4B,EAAI,KAAK,MAAM5B,EAAG,CAAC,EAC3C,QAAS,EAAI,EAAG,EAAIM,EAAG,IACrBsB,EAAE,IAAI,EAAG,EAAGzB,CAAC,EACf,OAAOyB,CACR,CACD,OAAO,KAAK5B,EAAG,EAAGG,EAAG,CACnB,IAAIG,EAAIN,EAAE,OACV,IAAM,SAAW,EAAIM,GAAIH,IAAM,SAAWA,EAAI,GAC9C,IAAIyB,EAAI,KAAK,IAAItB,EAAG,EAAGH,CAAC,EAAG,EAAI,KAAK,MAAM,EAAGA,CAAC,EAC9C,QAAS,EAAI,EAAG,EAAIyB,EAAG,IACrB,EAAE,IAAI,EAAG,EAAG5B,EAAE,CAAC,CAAC,EAClB,OAAO,CACR,CACD,OAAO,IAAIA,EAAG,EAAG,CACfA,EAAI,KAAK,YAAYA,CAAC,EAAG,EAAI,KAAK,YAAY,CAAC,EAC/C,IAAIG,EAAIH,EAAE,KAAMM,EAAIN,EAAE,QAAS4B,EAAI,IAAI6F,EAAEtH,EAAGG,CAAC,EAC7C,QAAS,EAAI,EAAG,EAAIH,EAAG,IACrB,QAAS,EAAI,EAAG,EAAIG,EAAG,IACrBsB,EAAE,IAAI,EAAG,EAAG,KAAK,IAAI5B,EAAE,IAAI,EAAG,CAAC,EAAG,EAAE,IAAI,EAAG,CAAC,CAAC,CAAC,EAClD,OAAO4B,CACR,CACD,OAAO,IAAI5B,EAAG,EAAG,CACfA,EAAI,KAAK,YAAYA,CAAC,EAAG,EAAI,KAAK,YAAY,CAAC,EAC/C,IAAIG,EAAIH,EAAE,KAAMM,EAAIN,EAAE,QAAS4B,EAAI,IAAI,KAAKzB,EAAGG,CAAC,EAChD,QAAS,EAAI,EAAG,EAAIH,EAAG,IACrB,QAAS,EAAI,EAAG,EAAIG,EAAG,IACrBsB,EAAE,IAAI,EAAG,EAAG,KAAK,IAAI5B,EAAE,IAAI,EAAG,CAAC,EAAG,EAAE,IAAI,EAAG,CAAC,CAAC,CAAC,EAClD,OAAO4B,CACR,CACD,OAAO,YAAY5B,EAAG,CACpB,OAAOwH,EAAE,SAASxH,CAAC,EAAIA,EAAI,IAAIyH,EAAEzH,CAAC,CACnC,CACD,OAAO,SAASA,EAAG,CACjB,OAAOA,GAAK,MAAQA,EAAE,QAAU,QACjC,CACD,IAAI,MAAO,CACT,OAAO,KAAK,KAAO,KAAK,OACzB,CACD,MAAMA,EAAG,CACP,GAAI,OAAOA,GAAK,WACd,MAAM,IAAI,UAAU,6BAA6B,EACnD,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAASG,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChCH,EAAE,KAAK,KAAM,EAAGG,CAAC,EACrB,OAAO,IACR,CACD,WAAY,CACV,IAAIH,EAAI,CAAA,EACR,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAASG,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChCH,EAAE,KAAK,KAAK,IAAI,EAAGG,CAAC,CAAC,EACzB,OAAOH,CACR,CACD,WAAY,CACV,IAAIA,EAAI,CAAA,EACR,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAAK,CAClCA,EAAE,KAAK,CAAA,CAAE,EACT,QAASG,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChCH,EAAE,CAAC,EAAE,KAAK,KAAK,IAAI,EAAGG,CAAC,CAAC,CAC3B,CACD,OAAOH,CACR,CACD,QAAS,CACP,OAAO,KAAK,WACb,CACD,aAAc,CACZ,OAAO,KAAK,OAAS,CACtB,CACD,gBAAiB,CACf,OAAO,KAAK,UAAY,CACzB,CACD,UAAW,CACT,OAAO,KAAK,OAAS,GAAK,KAAK,UAAY,CAC5C,CACD,UAAW,CACT,OAAO,KAAK,OAAS,KAAK,OAC3B,CACD,SAAU,CACR,OAAO,KAAK,OAAS,GAAK,KAAK,UAAY,CAC5C,CACD,aAAc,CACZ,GAAI,KAAK,WAAY,CACnB,QAASA,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,QAAS,EAAI,EAAG,GAAKA,EAAG,IACtB,GAAI,KAAK,IAAIA,EAAG,CAAC,IAAM,KAAK,IAAI,EAAGA,CAAC,EAClC,MAAO,GACb,MAAO,EACR,CACD,MAAO,EACR,CACD,eAAgB,CACd,IAAIA,EAAI,EAAG,EAAI,EAAGG,EAAI,GAAIG,EAAI,GAAIsB,EAAI,GACtC,KAAO5B,EAAI,KAAK,MAAQM,GAAK,CAC3B,IAAK,EAAI,EAAGsB,EAAI,GAAI,EAAI,KAAK,SAAWA,IAAM,IAC5C,KAAK,IAAI5B,EAAG,CAAC,IAAM,EAAI,IAAM,KAAK,IAAIA,EAAG,CAAC,IAAM,GAAK,EAAIG,GAAKyB,EAAI,GAAIzB,EAAI,IAAMG,EAAI,GAAIsB,EAAI,IAC9F5B,GACD,CACD,OAAOM,CACR,CACD,sBAAuB,CACrB,IAAIN,EAAI,EAAG,EAAI,EAAGG,EAAI,GAAIG,EAAI,GAAIsB,EAAI,GACtC,KAAO5B,EAAI,KAAK,MAAQM,GAAK,CAC3B,IAAK,EAAI,EAAGsB,EAAI,GAAI,EAAI,KAAK,SAAWA,IAAM,IAC5C,KAAK,IAAI5B,EAAG,CAAC,IAAM,EAAI,IAAM,KAAK,IAAIA,EAAG,CAAC,IAAM,GAAK,EAAIG,GAAKyB,EAAI,GAAIzB,EAAI,IAAMG,EAAI,GAAIsB,EAAI,IAC9F,QAAS,EAAI,EAAI,EAAG,EAAI,KAAK,KAAM,IACjC,KAAK,IAAI5B,EAAG,CAAC,IAAM,IAAMM,EAAI,IAC/BN,GACD,CACD,OAAOM,CACR,CACD,aAAc,CACZ,IAAIN,EAAI,KAAK,MAAK,EAAI,EAAI,EAAGG,EAAI,EACjC,KAAO,EAAIH,EAAE,MAAQG,EAAIH,EAAE,SAAW,CACpC,IAAIM,EAAI,EACR,QAASsB,EAAI,EAAGA,EAAI5B,EAAE,KAAM4B,IAC1B5B,EAAE,IAAI4B,EAAGzB,CAAC,EAAIH,EAAE,IAAIM,EAAGH,CAAC,IAAMG,EAAIsB,GACpC,GAAI5B,EAAE,IAAIM,EAAGH,CAAC,IAAM,EAClBA,QACG,CACHH,EAAE,SAAS,EAAGM,CAAC,EACf,IAAIsB,EAAI5B,EAAE,IAAI,EAAGG,CAAC,EAClB,QAAS,EAAIA,EAAG,EAAIH,EAAE,QAAS,IAC7BA,EAAE,IAAI,EAAG,EAAGA,EAAE,IAAI,EAAG,CAAC,EAAI4B,CAAC,EAC7B,QAAS,EAAI,EAAI,EAAG,EAAI5B,EAAE,KAAM,IAAK,CACnC,IAAI,EAAIA,EAAE,IAAI,EAAGG,CAAC,EAAIH,EAAE,IAAI,EAAGG,CAAC,EAChCH,EAAE,IAAI,EAAGG,EAAG,CAAC,EACb,QAAS8B,EAAI9B,EAAI,EAAG8B,EAAIjC,EAAE,QAASiC,IACjCjC,EAAE,IAAI,EAAGiC,EAAGjC,EAAE,IAAI,EAAGiC,CAAC,EAAIjC,EAAE,IAAI,EAAGiC,CAAC,EAAI,CAAC,CAC5C,CACD,IAAK9B,GACN,CACF,CACD,OAAOH,CACR,CACD,oBAAqB,CACnB,IAAIA,EAAI,KAAK,YAAa,EAAE,EAAIA,EAAE,QAASG,EAAIH,EAAE,KAAMM,EAAIH,EAAI,EAC/D,KAAOG,GAAK,GACV,GAAIN,EAAE,OAAOM,CAAC,IAAM,EAClBA,QACG,CACH,IAAIsB,EAAI,EAAG,EAAI,GACf,KAAOA,EAAIzB,GAAK,IAAM,IACpBH,EAAE,IAAIM,EAAGsB,CAAC,IAAM,EAAI,EAAI,GAAKA,IAC/B,QAAS,EAAI,EAAG,EAAItB,EAAG,IAAK,CAC1B,IAAI2B,EAAIjC,EAAE,IAAI,EAAG4B,CAAC,EAClB,QAASM,EAAIN,EAAGM,EAAI,EAAGA,IAAK,CAC1B,IAAI,EAAIlC,EAAE,IAAI,EAAGkC,CAAC,EAAID,EAAIjC,EAAE,IAAIM,EAAG4B,CAAC,EACpClC,EAAE,IAAI,EAAGkC,EAAG,CAAC,CACd,CACF,CACD5B,GACD,CACH,OAAON,CACR,CACD,KAAM,CACJ,MAAM,IAAI,MAAM,6BAA6B,CAC9C,CACD,KAAM,CACJ,MAAM,IAAI,MAAM,6BAA6B,CAC9C,CACD,OAAOA,EAAI,GAAI,CACb,GAAI,OAAOA,GAAK,SACd,MAAM,IAAI,UAAU,2BAA2B,EACjD,KAAM,CAAE,KAAM,EAAI,EAAG,QAASG,EAAI,CAAG,EAAGH,EACxC,GAAI,CAAC,OAAO,UAAU,CAAC,GAAK,GAAK,EAC/B,MAAM,IAAI,UAAU,iCAAiC,EACvD,GAAI,CAAC,OAAO,UAAUG,CAAC,GAAKA,GAAK,EAC/B,MAAM,IAAI,UAAU,oCAAoC,EAC1D,IAAIG,EAAI,IAAImH,EAAE,KAAK,KAAO,EAAG,KAAK,QAAUtH,CAAC,EAC7C,QAASyB,EAAI,EAAGA,EAAI,EAAGA,IACrB,QAAS,EAAI,EAAG,EAAIzB,EAAG,IACrBG,EAAE,aAAa,KAAM,KAAK,KAAOsB,EAAG,KAAK,QAAU,CAAC,EACxD,OAAOtB,CACR,CACD,KAAKN,EAAG,CACN,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAASG,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAI,EAAGA,EAAGH,CAAC,EACpB,OAAO,IACR,CACD,KAAM,CACJ,OAAO,KAAK,KAAK,EAAE,CACpB,CACD,OAAOA,EAAG,CACR2F,GAAE,KAAM3F,CAAC,EACT,IAAI,EAAI,CAAA,EACR,QAASG,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,EAAE,KAAK,KAAK,IAAIH,EAAGG,CAAC,CAAC,EACvB,OAAO,CACR,CACD,aAAaH,EAAG,CACd,OAAOyH,EAAE,UAAU,KAAK,OAAOzH,CAAC,CAAC,CAClC,CACD,OAAOA,EAAG,EAAG,CACX2F,GAAE,KAAM3F,CAAC,EAAG,EAAI6F,GAAG,KAAM,CAAC,EAC1B,QAAS1F,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAIH,EAAGG,EAAG,EAAEA,CAAC,CAAC,EACrB,OAAO,IACR,CACD,SAASH,EAAG,EAAG,CACb2F,GAAE,KAAM3F,CAAC,EAAG2F,GAAE,KAAM,CAAC,EACrB,QAASxF,EAAI,EAAGA,EAAI,KAAK,QAASA,IAAK,CACrC,IAAIG,EAAI,KAAK,IAAIN,EAAGG,CAAC,EACrB,KAAK,IAAIH,EAAGG,EAAG,KAAK,IAAI,EAAGA,CAAC,CAAC,EAAG,KAAK,IAAI,EAAGA,EAAGG,CAAC,CACjD,CACD,OAAO,IACR,CACD,UAAUN,EAAG,CACX4F,GAAE,KAAM5F,CAAC,EACT,IAAI,EAAI,CAAA,EACR,QAASG,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,EAAE,KAAK,KAAK,IAAIA,EAAGH,CAAC,CAAC,EACvB,OAAO,CACR,CACD,gBAAgBA,EAAG,CACjB,OAAOyH,EAAE,aAAa,KAAK,UAAUzH,CAAC,CAAC,CACxC,CACD,UAAUA,EAAG,EAAG,CACd4F,GAAE,KAAM5F,CAAC,EAAG,EAAI8F,GAAG,KAAM,CAAC,EAC1B,QAAS3F,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,KAAK,IAAIA,EAAGH,EAAG,EAAEG,CAAC,CAAC,EACrB,OAAO,IACR,CACD,YAAYH,EAAG,EAAG,CAChB4F,GAAE,KAAM5F,CAAC,EAAG4F,GAAE,KAAM,CAAC,EACrB,QAASzF,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAAK,CAClC,IAAIG,EAAI,KAAK,IAAIH,EAAGH,CAAC,EACrB,KAAK,IAAIG,EAAGH,EAAG,KAAK,IAAIG,EAAG,CAAC,CAAC,EAAG,KAAK,IAAIA,EAAG,EAAGG,CAAC,CACjD,CACD,OAAO,IACR,CACD,aAAaN,EAAG,CACdA,EAAI6F,GAAG,KAAM7F,CAAC,EACd,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAASG,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAI,EAAGA,EAAG,KAAK,IAAI,EAAGA,CAAC,EAAIH,EAAEG,CAAC,CAAC,EACxC,OAAO,IACR,CACD,aAAaH,EAAG,CACdA,EAAI6F,GAAG,KAAM7F,CAAC,EACd,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAASG,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAI,EAAGA,EAAG,KAAK,IAAI,EAAGA,CAAC,EAAIH,EAAEG,CAAC,CAAC,EACxC,OAAO,IACR,CACD,aAAaH,EAAG,CACdA,EAAI6F,GAAG,KAAM7F,CAAC,EACd,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAASG,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAI,EAAGA,EAAG,KAAK,IAAI,EAAGA,CAAC,EAAIH,EAAEG,CAAC,CAAC,EACxC,OAAO,IACR,CACD,aAAaH,EAAG,CACdA,EAAI6F,GAAG,KAAM7F,CAAC,EACd,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAASG,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAI,EAAGA,EAAG,KAAK,IAAI,EAAGA,CAAC,EAAIH,EAAEG,CAAC,CAAC,EACxC,OAAO,IACR,CACD,gBAAgBH,EAAG,CACjBA,EAAI8F,GAAG,KAAM9F,CAAC,EACd,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAASG,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAI,EAAGA,EAAG,KAAK,IAAI,EAAGA,CAAC,EAAIH,EAAE,CAAC,CAAC,EACxC,OAAO,IACR,CACD,gBAAgBA,EAAG,CACjBA,EAAI8F,GAAG,KAAM9F,CAAC,EACd,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAASG,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAI,EAAGA,EAAG,KAAK,IAAI,EAAGA,CAAC,EAAIH,EAAE,CAAC,CAAC,EACxC,OAAO,IACR,CACD,gBAAgBA,EAAG,CACjBA,EAAI8F,GAAG,KAAM9F,CAAC,EACd,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAASG,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAI,EAAGA,EAAG,KAAK,IAAI,EAAGA,CAAC,EAAIH,EAAE,CAAC,CAAC,EACxC,OAAO,IACR,CACD,gBAAgBA,EAAG,CACjBA,EAAI8F,GAAG,KAAM9F,CAAC,EACd,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAASG,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAI,EAAGA,EAAG,KAAK,IAAI,EAAGA,CAAC,EAAIH,EAAE,CAAC,CAAC,EACxC,OAAO,IACR,CACD,OAAOA,EAAG,EAAG,CACX2F,GAAE,KAAM3F,CAAC,EACT,QAASG,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAIH,EAAGG,EAAG,KAAK,IAAIH,EAAGG,CAAC,EAAI,CAAC,EACnC,OAAO,IACR,CACD,UAAUH,EAAG,EAAG,CACd4F,GAAE,KAAM5F,CAAC,EACT,QAASG,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,KAAK,IAAIA,EAAGH,EAAG,KAAK,IAAIG,EAAGH,CAAC,EAAI,CAAC,EACnC,OAAO,IACR,CACD,IAAIA,EAAG,CACL,GAAI,KAAK,QAAS,EAChB,MAAO,KACT,OAAQA,EAAC,CACP,IAAK,MAAO,CACV,MAAM,EAAI,IAAI,MAAM,KAAK,IAAI,EAAE,KAAK,OAAO,iBAAiB,EAC5D,QAASG,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,QAASG,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAIH,EAAGG,CAAC,EAAI,EAAEH,CAAC,IAAM,EAAEA,CAAC,EAAI,KAAK,IAAIA,EAAGG,CAAC,GAClD,OAAO,CACR,CACD,IAAK,SAAU,CACb,MAAM,EAAI,IAAI,MAAM,KAAK,OAAO,EAAE,KAAK,OAAO,iBAAiB,EAC/D,QAASH,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,QAASG,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAIH,EAAGG,CAAC,EAAI,EAAEA,CAAC,IAAM,EAAEA,CAAC,EAAI,KAAK,IAAIH,EAAGG,CAAC,GAClD,OAAO,CACR,CACD,KAAK,OAAQ,CACX,IAAI,EAAI,KAAK,IAAI,EAAG,CAAC,EACrB,QAASH,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,QAASG,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAIH,EAAGG,CAAC,EAAI,IAAM,EAAI,KAAK,IAAIH,EAAGG,CAAC,GAC5C,OAAO,CACR,CACD,QACE,MAAM,IAAI,MAAM,mBAAmBN,CAAC,EAAE,CACzC,CACF,CACD,UAAW,CACToG,GAAG,IAAI,EACP,IAAIpG,EAAI,KAAK,IAAI,EAAG,CAAC,EAAG,EAAI,CAAC,EAAG,CAAC,EACjC,QAASG,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,QAASG,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAIH,EAAGG,CAAC,EAAIN,IAAMA,EAAI,KAAK,IAAIG,EAAGG,CAAC,EAAG,EAAE,CAAC,EAAIH,EAAG,EAAE,CAAC,EAAIG,GAChE,OAAO,CACR,CACD,IAAIN,EAAG,CACL,GAAI,KAAK,QAAS,EAChB,MAAO,KACT,OAAQA,EAAC,CACP,IAAK,MAAO,CACV,MAAM,EAAI,IAAI,MAAM,KAAK,IAAI,EAAE,KAAK,OAAO,iBAAiB,EAC5D,QAASG,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,QAASG,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAIH,EAAGG,CAAC,EAAI,EAAEH,CAAC,IAAM,EAAEA,CAAC,EAAI,KAAK,IAAIA,EAAGG,CAAC,GAClD,OAAO,CACR,CACD,IAAK,SAAU,CACb,MAAM,EAAI,IAAI,MAAM,KAAK,OAAO,EAAE,KAAK,OAAO,iBAAiB,EAC/D,QAASH,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,QAASG,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAIH,EAAGG,CAAC,EAAI,EAAEA,CAAC,IAAM,EAAEA,CAAC,EAAI,KAAK,IAAIH,EAAGG,CAAC,GAClD,OAAO,CACR,CACD,KAAK,OAAQ,CACX,IAAI,EAAI,KAAK,IAAI,EAAG,CAAC,EACrB,QAASH,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,QAASG,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAIH,EAAGG,CAAC,EAAI,IAAM,EAAI,KAAK,IAAIH,EAAGG,CAAC,GAC5C,OAAO,CACR,CACD,QACE,MAAM,IAAI,MAAM,mBAAmBN,CAAC,EAAE,CACzC,CACF,CACD,UAAW,CACToG,GAAG,IAAI,EACP,IAAIpG,EAAI,KAAK,IAAI,EAAG,CAAC,EAAG,EAAI,CAAC,EAAG,CAAC,EACjC,QAASG,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,QAASG,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAIH,EAAGG,CAAC,EAAIN,IAAMA,EAAI,KAAK,IAAIG,EAAGG,CAAC,EAAG,EAAE,CAAC,EAAIH,EAAG,EAAE,CAAC,EAAIG,GAChE,OAAO,CACR,CACD,OAAON,EAAG,CACR,GAAI2F,GAAE,KAAM3F,CAAC,EAAG,KAAK,QAAS,EAC5B,MAAO,KACT,IAAI,EAAI,KAAK,IAAIA,EAAG,CAAC,EACrB,QAASG,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAIH,EAAGG,CAAC,EAAI,IAAM,EAAI,KAAK,IAAIH,EAAGG,CAAC,GAC1C,OAAO,CACR,CACD,YAAYH,EAAG,CACb2F,GAAE,KAAM3F,CAAC,EAAGoG,GAAG,IAAI,EACnB,IAAI,EAAI,KAAK,IAAIpG,EAAG,CAAC,EAAGG,EAAI,CAACH,EAAG,CAAC,EACjC,QAASM,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAIN,EAAGM,CAAC,EAAI,IAAM,EAAI,KAAK,IAAIN,EAAGM,CAAC,EAAGH,EAAE,CAAC,EAAIG,GACpD,OAAOH,CACR,CACD,OAAOH,EAAG,CACR,GAAI2F,GAAE,KAAM3F,CAAC,EAAG,KAAK,QAAS,EAC5B,MAAO,KACT,IAAI,EAAI,KAAK,IAAIA,EAAG,CAAC,EACrB,QAASG,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAIH,EAAGG,CAAC,EAAI,IAAM,EAAI,KAAK,IAAIH,EAAGG,CAAC,GAC1C,OAAO,CACR,CACD,YAAYH,EAAG,CACb2F,GAAE,KAAM3F,CAAC,EAAGoG,GAAG,IAAI,EACnB,IAAI,EAAI,KAAK,IAAIpG,EAAG,CAAC,EAAGG,EAAI,CAACH,EAAG,CAAC,EACjC,QAASM,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAIN,EAAGM,CAAC,EAAI,IAAM,EAAI,KAAK,IAAIN,EAAGM,CAAC,EAAGH,EAAE,CAAC,EAAIG,GACpD,OAAOH,CACR,CACD,UAAUH,EAAG,CACX,GAAI4F,GAAE,KAAM5F,CAAC,EAAG,KAAK,QAAS,EAC5B,MAAO,KACT,IAAI,EAAI,KAAK,IAAI,EAAGA,CAAC,EACrB,QAASG,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,KAAK,IAAIA,EAAGH,CAAC,EAAI,IAAM,EAAI,KAAK,IAAIG,EAAGH,CAAC,GAC1C,OAAO,CACR,CACD,eAAeA,EAAG,CAChB4F,GAAE,KAAM5F,CAAC,EAAGoG,GAAG,IAAI,EACnB,IAAI,EAAI,KAAK,IAAI,EAAGpG,CAAC,EAAGG,EAAI,CAAC,EAAGH,CAAC,EACjC,QAASM,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,KAAK,IAAIA,EAAGN,CAAC,EAAI,IAAM,EAAI,KAAK,IAAIM,EAAGN,CAAC,EAAGG,EAAE,CAAC,EAAIG,GACpD,OAAOH,CACR,CACD,UAAUH,EAAG,CACX,GAAI4F,GAAE,KAAM5F,CAAC,EAAG,KAAK,QAAS,EAC5B,MAAO,KACT,IAAI,EAAI,KAAK,IAAI,EAAGA,CAAC,EACrB,QAASG,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,KAAK,IAAIA,EAAGH,CAAC,EAAI,IAAM,EAAI,KAAK,IAAIG,EAAGH,CAAC,GAC1C,OAAO,CACR,CACD,eAAeA,EAAG,CAChB4F,GAAE,KAAM5F,CAAC,EAAGoG,GAAG,IAAI,EACnB,IAAI,EAAI,KAAK,IAAI,EAAGpG,CAAC,EAAGG,EAAI,CAAC,EAAGH,CAAC,EACjC,QAASM,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,KAAK,IAAIA,EAAGN,CAAC,EAAI,IAAM,EAAI,KAAK,IAAIM,EAAGN,CAAC,EAAGG,EAAE,CAAC,EAAIG,GACpD,OAAOH,CACR,CACD,MAAO,CACL,IAAIH,EAAI,KAAK,IAAI,KAAK,KAAM,KAAK,OAAO,EAAG,EAAI,GAC/C,QAASG,EAAI,EAAGA,EAAIH,EAAGG,IACrB,EAAE,KAAK,KAAK,IAAIA,EAAGA,CAAC,CAAC,EACvB,OAAO,CACR,CACD,KAAKH,EAAI,YAAa,CACpB,IAAI,EAAI,EACR,GAAIA,IAAM,MACR,OAAO,KAAK,MACd,GAAIA,IAAM,YAAa,CACrB,QAASG,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,QAASG,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,EAAI,EAAI,KAAK,IAAIH,EAAGG,CAAC,EAAI,KAAK,IAAIH,EAAGG,CAAC,EAC1C,OAAO,KAAK,KAAK,CAAC,CACnB,KACC,OAAM,IAAI,WAAW,sBAAsBN,CAAC,EAAE,CACjD,CACD,eAAgB,CACd,IAAIA,EAAI,EACR,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAASG,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChCH,GAAK,KAAK,IAAI,EAAGG,CAAC,EAAG,KAAK,IAAI,EAAGA,EAAGH,CAAC,EACzC,OAAO,IACR,CACD,IAAIA,EAAG,CACLwH,EAAE,SAASxH,CAAC,IAAMA,EAAIA,EAAE,UAAS,GACjC,IAAI,EAAI,KAAK,YACb,GAAI,EAAE,SAAWA,EAAE,OACjB,MAAM,IAAI,WAAW,mCAAmC,EAC1D,IAAIG,EAAI,EACR,QAASG,EAAI,EAAGA,EAAI,EAAE,OAAQA,IAC5BH,GAAK,EAAEG,CAAC,EAAIN,EAAEM,CAAC,EACjB,OAAOH,CACR,CACD,KAAKH,EAAG,CACNA,EAAIyH,EAAE,YAAYzH,CAAC,EACnB,IAAI,EAAI,KAAK,KAAMG,EAAI,KAAK,QAASG,EAAIN,EAAE,QAAS4B,EAAI,IAAI6F,EAAE,EAAGnH,CAAC,EAAG,EAAI,IAAI,aAAaH,CAAC,EAC3F,QAAS,EAAI,EAAG,EAAIG,EAAG,IAAK,CAC1B,QAAS2B,EAAI,EAAGA,EAAI9B,EAAG8B,IACrB,EAAEA,CAAC,EAAIjC,EAAE,IAAIiC,EAAG,CAAC,EACnB,QAASA,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1B,IAAIC,EAAI,EACR,QAAS,EAAI,EAAG,EAAI/B,EAAG,IACrB+B,GAAK,KAAK,IAAID,EAAG,CAAC,EAAI,EAAE,CAAC,EAC3BL,EAAE,IAAIK,EAAG,EAAGC,CAAC,CACd,CACF,CACD,OAAON,CACR,CACD,YAAY5B,EAAG,CACbA,EAAIyH,EAAE,YAAYzH,CAAC,EACnB,IAAI,EAAI,IAAIyH,EAAE,EAAG,CAAC,EAClB,MAAMtH,EAAI,KAAK,IAAI,EAAG,CAAC,EAAGG,EAAIN,EAAE,IAAI,EAAG,CAAC,EAAG4B,EAAI,KAAK,IAAI,EAAG,CAAC,EAAG,EAAI5B,EAAE,IAAI,EAAG,CAAC,EAAG,EAAI,KAAK,IAAI,EAAG,CAAC,EAAGiC,EAAIjC,EAAE,IAAI,EAAG,CAAC,EAAGkC,EAAI,KAAK,IAAI,EAAG,CAAC,EAAG,EAAIlC,EAAE,IAAI,EAAG,CAAC,EAAG,GAAKG,EAAI+B,IAAM5B,EAAI,GAAI6B,GAAK,EAAID,GAAK5B,EAAG8B,EAAIjC,GAAK,EAAI,GAAIkC,EAAIH,GAAKD,EAAI3B,GAAIgC,GAAKnC,EAAIyB,GAAK,EAAGW,GAAK,EAAIpC,IAAMG,EAAI,GAAIkC,GAAKZ,EAAIM,IAAMD,EAAI,GAAIQ,EAAI,EAAIJ,EAAIC,EAAIE,EAAGE,EAAIN,EAAIE,EAAGiC,EAAIpC,EAAIE,EAAGuC,EAAI,EAAIzC,EAAIC,EAAIG,EAC5V,OAAO,EAAE,IAAI,EAAG,EAAGE,CAAC,EAAG,EAAE,IAAI,EAAG,EAAGC,CAAC,EAAG,EAAE,IAAI,EAAG,EAAG6B,CAAC,EAAG,EAAE,IAAI,EAAG,EAAGK,CAAC,EAAG,CACxE,CACD,YAAY5E,EAAG,CACbA,EAAIyH,EAAE,YAAYzH,CAAC,EACnB,IAAI,EAAI,IAAIyH,EAAE,EAAG,CAAC,EAClB,MAAMtH,EAAI,KAAK,IAAI,EAAG,CAAC,EAAGG,EAAI,KAAK,IAAI,EAAG,CAAC,EAAGsB,EAAI,KAAK,IAAI,EAAG,CAAC,EAAG,EAAI,KAAK,IAAI,EAAG,CAAC,EAAG,EAAI,KAAK,IAAI,EAAG,CAAC,EAAGK,EAAI,KAAK,IAAI,EAAG,CAAC,EAAGC,EAAI,KAAK,IAAI,EAAG,CAAC,EAAG,EAAI,KAAK,IAAI,EAAG,CAAC,EAAG,EAAI,KAAK,IAAI,EAAG,CAAC,EAAGC,EAAInC,EAAE,IAAI,EAAG,CAAC,EAAGoC,EAAIpC,EAAE,IAAI,EAAG,CAAC,EAAGqC,EAAIrC,EAAE,IAAI,EAAG,CAAC,EAAGsC,EAAItC,EAAE,IAAI,EAAG,CAAC,EAAGuC,EAAIvC,EAAE,IAAI,EAAG,CAAC,EAAGwC,EAAIxC,EAAE,IAAI,EAAG,CAAC,EAAGyC,EAAIzC,EAAE,IAAI,EAAG,CAAC,EAAG0C,EAAI1C,EAAE,IAAI,EAAG,CAAC,EAAGuE,EAAIvE,EAAE,IAAI,EAAG,CAAC,EAAG4E,GAAKzE,EAAIG,EAAIsB,EAAI,EAAI,EAAI,EAAI,GAAKW,EAAGiC,GAAKrE,EAAI,IAAM,CAACiC,EAAIG,GAAIkC,EAAI,GAAK,CAACtC,EAAIC,EAAIE,EAAIC,EAAIC,EAAIC,EAAI8B,GAAIG,GAAK,CAACvE,EAAI,EAAI,IAAMgC,EAAIC,EAAIG,GAAIoC,GAAK,EAAI,IAAM,CAACxC,EAAIC,GAAIsF,EAAIvH,EAAIgC,EAAGwF,GAAK,CAACxH,EAAI+B,EAAI,IAAMC,EAAIE,EAAIG,GAAIoF,IAAK,CAACzH,EAAI+B,IAAMG,EAAIG,GAAIqF,GAAK3F,EAAI,IAAM,CAACC,EAAIE,GAAIyF,GAAK3H,EAAIG,EAAIsB,EAAI,EAAIK,EAAIC,EAAI,GAAKM,EAAG,EAAI,GAAK,CAACL,EAAIE,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,GAAI,GAAK,CAACd,EAAI,EAAI,IAAMW,EAAIE,EAAIC,GAAIqF,IAAMnG,EAAI,IAAMW,EAAIG,GAAIsF,EAAIpG,EAAIa,EAAGwF,GAAK,EAAI,IAAM,CAACxF,EAAIC,GAAIwF,GAAK,CAACtG,EAAI,EAAIK,IAAMO,EAAIC,EAAI8B,GAAI4D,GAAKvG,EAAIK,IAAMO,EAAI+B,GAAI6D,GAAK,EAAInG,IAAM,CAACQ,EAAI8B,GAAI8D,EAAI/H,EAAIgC,EAAGgG,GAAIrG,EAAIS,EAAG6F,GAAK,EAAIlG,EAAGmG,GAAItG,EAAIE,EAAGqG,GAAK,EAAIlE,EAAGmE,GAAKhB,EAAIM,EAAIK,EAAGM,GAAK/D,EAAIF,EAAIC,EAAI+C,EAAI,EAAIM,EAAIC,EAAGW,GAAKlB,EAAIC,EAAIE,EAAIC,EAAIE,EAAIE,EAAIE,EAAGS,GAAKrE,EAAIC,EAAIC,EAAIgD,EAAIM,EAAIE,EAAIC,EAAGW,GAAKtE,EAAIE,EAAIC,EAAI+C,EAAIY,GAAGS,GAAKf,EAAIE,EAAIC,EAAIC,EAAIG,GAAIS,GAAKtB,EAAIC,EAAIC,GAAI,EAAI,EAAIG,GAAKC,EAAGiB,GAAK,EAAIlB,GAAKC,EAAIC,EAAIO,GAAGU,GAAKxB,EAAIC,EAAIC,GAAIC,EAAIY,GACvmC,OAAO,EAAE,IAAI,EAAG,EAAGC,EAAE,EAAG,EAAE,IAAI,EAAG,EAAGC,EAAE,EAAG,EAAE,IAAI,EAAG,EAAGC,EAAE,EAAG,EAAE,IAAI,EAAG,EAAGC,EAAE,EAAG,EAAE,IAAI,EAAG,EAAGC,EAAE,EAAG,EAAE,IAAI,EAAG,EAAGC,EAAE,EAAG,EAAE,IAAI,EAAG,EAAGC,EAAE,EAAG,EAAE,IAAI,EAAG,EAAGC,EAAE,EAAG,EAAE,IAAI,EAAG,EAAGC,EAAE,EAAG,CACjK,CACD,aAAalJ,EAAG,CACdA,EAAIyH,EAAE,YAAYzH,CAAC,EACnB,IAAI,EAAI,KAAK,MAAO,EAAEG,EAAI,EAAE,KAAMG,EAAI,EAAE,QAASsB,EAAI5B,EAAE,KAAM,EAAIA,EAAE,QACnEM,IAAMsB,GAAK,QAAQ,KACjB,eAAezB,CAAC,MAAMG,CAAC,QAAQsB,CAAC,MAAM,CAAC,mCAC7C,EACI,SAAS,EAAE,EAAGO,EAAGC,EAAG,CAClB,IAAIC,EAAI,EAAE,KAAMC,EAAI,EAAE,QACtB,GAAID,IAAMF,GAAKG,IAAMF,EACnB,OAAO,EACT,CACE,IAAIG,EAAIiF,EAAE,MAAMrF,EAAGC,CAAC,EACpB,OAAOG,EAAIA,EAAE,aAAa,EAAG,EAAG,CAAC,EAAGA,CACrC,CACF,CACD,IAAIN,EAAI,KAAK,IAAI9B,EAAGyB,CAAC,EAAGM,EAAI,KAAK,IAAI5B,EAAG,CAAC,EACzC,EAAI,EAAE,EAAG2B,EAAGC,CAAC,EAAGlC,EAAI,EAAEA,EAAGiC,EAAGC,CAAC,EAC7B,SAAS,EAAE,EAAGC,EAAGC,EAAGC,EAAG,CACrB,GAAID,GAAK,KAAOC,GAAK,IACnB,OAAO,EAAE,KAAKF,CAAC,EACjBC,EAAI,IAAM,GAAKC,EAAI,IAAM,GAAK,EAAI,EAAE,EAAGD,EAAI,EAAGC,EAAI,CAAC,EAAGF,EAAI,EAAEA,EAAGC,EAAI,EAAGC,EAAI,CAAC,GAAKD,EAAI,IAAM,GAAK,EAAI,EAAE,EAAGA,EAAI,EAAGC,CAAC,EAAGF,EAAI,EAAEA,EAAGC,EAAI,EAAGC,CAAC,GAAKA,EAAI,IAAM,IAAM,EAAI,EAAE,EAAGD,EAAGC,EAAI,CAAC,EAAGF,EAAI,EAAEA,EAAGC,EAAGC,EAAI,CAAC,GAC9L,IAAIC,EAAI,SAAS,EAAE,KAAO,EAAG,EAAE,EAAGC,EAAI,SAAS,EAAE,QAAU,EAAG,EAAE,EAAGC,EAAI,EAAE,UAAU,EAAGF,EAAI,EAAG,EAAGC,EAAI,CAAC,EAAGE,EAAIN,EAAE,UAAU,EAAGG,EAAI,EAAG,EAAGC,EAAI,CAAC,EAAGG,EAAI,EAAE,UAAU,EAAGJ,EAAI,EAAGC,EAAG,EAAE,QAAU,CAAC,EAAGgC,EAAIpC,EAAE,UAAU,EAAGG,EAAI,EAAGC,EAAGJ,EAAE,QAAU,CAAC,EAAGyC,EAAI,EAAE,UAAUtC,EAAG,EAAE,KAAO,EAAG,EAAGC,EAAI,CAAC,EAAGiC,EAAIrC,EAAE,UAAUG,EAAGH,EAAE,KAAO,EAAG,EAAGI,EAAI,CAAC,EAAGkC,EAAI,EAAE,UAAUnC,EAAG,EAAE,KAAO,EAAGC,EAAG,EAAE,QAAU,CAAC,EAAGmC,EAAIvC,EAAE,UAAUG,EAAGH,EAAE,KAAO,EAAGI,EAAGJ,EAAE,QAAU,CAAC,EAAGwC,EAAI,EACja6C,EAAE,IAAIhF,EAAGiC,CAAC,EACV+C,EAAE,IAAI/E,EAAGiC,CAAC,EACVpC,EACAC,CACR,EAASmF,EAAI,EAAEF,EAAE,IAAI5C,EAAGH,CAAC,EAAGhC,EAAGH,EAAGC,CAAC,EAAGoF,EAAI,EAAEnF,EAAGgF,EAAE,IAAIjD,EAAGG,CAAC,EAAGpC,EAAGC,CAAC,EAAGqF,GAAI,EAAEnD,EAAG+C,EAAE,IAAIhD,EAAG/B,CAAC,EAAGH,EAAGC,CAAC,EAAGsF,EAAI,EAAEL,EAAE,IAAIhF,EAAGE,CAAC,EAAGgC,EAAGpC,EAAGC,CAAC,EAAGuF,EAAI,EACzHN,EAAE,IAAI5C,EAAGpC,CAAC,EACVgF,EAAE,IAAI/E,EAAG8B,CAAC,EACVjC,EACAC,CACD,EAAE,EAAI,EACLiF,EAAE,IAAI9E,EAAG+B,CAAC,EACV+C,EAAE,IAAIhD,EAAGE,CAAC,EACVpC,EACAC,CACD,EAAE,EAAIiF,EAAE,IAAI7C,EAAGiD,EAAC,EACjB,EAAE,IAAIC,CAAC,EAAG,EAAE,IAAI,CAAC,EACjB,IAAIE,GAAKP,EAAE,IAAIG,EAAGE,CAAC,EAAGG,EAAIR,EAAE,IAAIE,EAAGE,EAAC,EAAGK,EAAIT,EAAE,IAAI7C,EAAG+C,CAAC,EACrDO,EAAE,IAAIN,CAAC,EAAGM,EAAE,IAAIH,CAAC,EACjB,IAAII,EAAIV,EAAE,MAAM,EAAI,EAAE,KAAM,EAAI,EAAE,OAAO,EACzC,OAAOU,EAAIA,EAAE,aAAa,EAAG,EAAG,CAAC,EAAGA,EAAIA,EAAE,aAAaH,GAAI,EAAE,KAAM,CAAC,EAAGG,EAAIA,EAAE,aAAaF,EAAG,EAAG,EAAE,OAAO,EAAGE,EAAIA,EAAE,aAAaD,EAAG,EAAE,KAAM,EAAE,OAAO,EAAGC,EAAE,UAAU,EAAG9F,EAAI,EAAG,EAAGC,EAAI,CAAC,CACrL,CACD,OAAO,EAAE,EAAGrC,EAAGiC,EAAGC,CAAC,CACpB,CACD,UAAUlC,EAAI,GAAI,CAChB,GAAI,OAAOA,GAAK,SACd,MAAM,IAAI,UAAU,2BAA2B,EACjD,KAAM,CAAE,IAAK,EAAI,EAAG,IAAKG,EAAI,CAAG,EAAGH,EACnC,GAAI,CAAC,OAAO,SAAS,CAAC,EACpB,MAAM,IAAI,UAAU,sBAAsB,EAC5C,GAAI,CAAC,OAAO,SAASG,CAAC,EACpB,MAAM,IAAI,UAAU,sBAAsB,EAC5C,GAAI,GAAKA,EACP,MAAM,IAAI,WAAW,8BAA8B,EACrD,IAAIG,EAAI,IAAImH,EAAE,KAAK,KAAM,KAAK,OAAO,EACrC,QAAS7F,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAAK,CAClC,MAAM,EAAI,KAAK,OAAOA,CAAC,EACvB,EAAE,OAAS,GAAKsD,GAAG,EAAG,CAAE,IAAK,EAAG,IAAK/E,EAAG,OAAQ,EAAG,EAAGG,EAAE,OAAOsB,EAAG,CAAC,CACpE,CACD,OAAOtB,CACR,CACD,aAAaN,EAAI,GAAI,CACnB,GAAI,OAAOA,GAAK,SACd,MAAM,IAAI,UAAU,2BAA2B,EACjD,KAAM,CAAE,IAAK,EAAI,EAAG,IAAKG,EAAI,CAAG,EAAGH,EACnC,GAAI,CAAC,OAAO,SAAS,CAAC,EACpB,MAAM,IAAI,UAAU,sBAAsB,EAC5C,GAAI,CAAC,OAAO,SAASG,CAAC,EACpB,MAAM,IAAI,UAAU,sBAAsB,EAC5C,GAAI,GAAKA,EACP,MAAM,IAAI,WAAW,8BAA8B,EACrD,IAAIG,EAAI,IAAImH,EAAE,KAAK,KAAM,KAAK,OAAO,EACrC,QAAS7F,EAAI,EAAGA,EAAI,KAAK,QAASA,IAAK,CACrC,MAAM,EAAI,KAAK,UAAUA,CAAC,EAC1B,EAAE,QAAUsD,GAAG,EAAG,CAChB,IAAK,EACL,IAAK/E,EACL,OAAQ,CACT,CAAA,EAAGG,EAAE,UAAUsB,EAAG,CAAC,CACrB,CACD,OAAOtB,CACR,CACD,UAAW,CACT,MAAMN,EAAI,KAAK,KAAK,KAAK,QAAU,CAAC,EACpC,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAASG,EAAI,EAAGA,EAAIH,EAAGG,IAAK,CAC1B,IAAIG,EAAI,KAAK,IAAI,EAAGH,CAAC,EAAGyB,EAAI,KAAK,IAAI,EAAG,KAAK,QAAU,EAAIzB,CAAC,EAC5D,KAAK,IAAI,EAAGA,EAAGyB,CAAC,EAAG,KAAK,IAAI,EAAG,KAAK,QAAU,EAAIzB,EAAGG,CAAC,CACvD,CACH,OAAO,IACR,CACD,aAAc,CACZ,MAAMN,EAAI,KAAK,KAAK,KAAK,KAAO,CAAC,EACjC,QAAS,EAAI,EAAG,EAAI,KAAK,QAAS,IAChC,QAASG,EAAI,EAAGA,EAAIH,EAAGG,IAAK,CAC1B,IAAIG,EAAI,KAAK,IAAIH,EAAG,CAAC,EAAGyB,EAAI,KAAK,IAAI,KAAK,KAAO,EAAIzB,EAAG,CAAC,EACzD,KAAK,IAAIA,EAAG,EAAGyB,CAAC,EAAG,KAAK,IAAI,KAAK,KAAO,EAAIzB,EAAG,EAAGG,CAAC,CACpD,CACH,OAAO,IACR,CACD,iBAAiBN,EAAG,CAClBA,EAAIyH,EAAE,YAAYzH,CAAC,EACnB,IAAI,EAAI,KAAK,KAAMG,EAAI,KAAK,QAASG,EAAIN,EAAE,KAAM4B,EAAI5B,EAAE,QAAS,EAAI,IAAIyH,EAAE,EAAInH,EAAGH,EAAIyB,CAAC,EACtF,QAAS,EAAI,EAAG,EAAI,EAAG,IACrB,QAASK,EAAI,EAAGA,EAAI9B,EAAG8B,IACrB,QAASC,EAAI,EAAGA,EAAI5B,EAAG4B,IACrB,QAAS,EAAI,EAAG,EAAIN,EAAG,IACrB,EAAE,IAAItB,EAAI,EAAI4B,EAAGN,EAAIK,EAAI,EAAG,KAAK,IAAI,EAAGA,CAAC,EAAIjC,EAAE,IAAIkC,EAAG,CAAC,CAAC,EAChE,OAAO,CACR,CACD,aAAalC,EAAG,CACd,GAAIA,EAAIyH,EAAE,YAAYzH,CAAC,EAAG,CAAC,KAAK,SAAU,GAAI,CAACA,EAAE,SAAU,EACzD,MAAM,IAAI,MAAM,yCAAyC,EAC3D,IAAI,EAAI,KAAK,KAAMG,EAAIH,EAAE,KAAMM,EAAI,KAAK,iBAAiBmH,EAAE,IAAItH,EAAGA,CAAC,CAAC,EAAGyB,EAAI6F,EAAE,IAAI,EAAG,CAAC,EAAE,iBAAiBzH,CAAC,EACzG,OAAOM,EAAE,IAAIsB,CAAC,CACf,CACD,WAAY,CACV,IAAI5B,EAAI,IAAIyH,EAAE,KAAK,QAAS,KAAK,IAAI,EACrC,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAAStH,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChCH,EAAE,IAAIG,EAAG,EAAG,KAAK,IAAI,EAAGA,CAAC,CAAC,EAC9B,OAAOH,CACR,CACD,SAASA,EAAImJ,GAAI,CACf,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,KAAK,OAAO,EAAG,KAAK,OAAO,CAAC,EAAE,KAAKnJ,CAAC,CAAC,EACvC,OAAO,IACR,CACD,YAAYA,EAAImJ,GAAI,CAClB,QAAS,EAAI,EAAG,EAAI,KAAK,QAAS,IAChC,KAAK,UAAU,EAAG,KAAK,UAAU,CAAC,EAAE,KAAKnJ,CAAC,CAAC,EAC7C,OAAO,IACR,CACD,UAAUA,EAAG,EAAGG,EAAGG,EAAG,CACpB2F,GAAG,KAAMjG,EAAG,EAAGG,EAAGG,CAAC,EACnB,IAAIsB,EAAI,IAAI6F,EACV,EAAIzH,EAAI,EACRM,EAAIH,EAAI,CACd,EACI,QAAS,EAAIH,EAAG,GAAK,EAAG,IACtB,QAAS,EAAIG,EAAG,GAAKG,EAAG,IACtBsB,EAAE,IAAI,EAAI5B,EAAG,EAAIG,EAAG,KAAK,IAAI,EAAG,CAAC,CAAC,EACtC,OAAOyB,CACR,CACD,aAAa5B,EAAG,EAAGG,EAAG,CACpB,GAAI,IAAM,SAAW,EAAI,GAAIA,IAAM,SAAWA,EAAI,KAAK,QAAU,GAAI,EAAIA,GAAK,EAAI,GAAK,GAAK,KAAK,SAAWA,EAAI,GAAKA,GAAK,KAAK,QAC7H,MAAM,IAAI,WAAW,uBAAuB,EAC9C,IAAIG,EAAI,IAAImH,EAAEzH,EAAE,OAAQG,EAAI,EAAI,CAAC,EACjC,QAASyB,EAAI,EAAGA,EAAI5B,EAAE,OAAQ4B,IAC5B,QAAS,EAAI,EAAG,GAAKzB,EAAG,IAAK,CAC3B,GAAIH,EAAE4B,CAAC,EAAI,GAAK5B,EAAE4B,CAAC,GAAK,KAAK,KAC3B,MAAM,IAAI,WAAW,2BAA2B5B,EAAE4B,CAAC,CAAC,EAAE,EACxDtB,EAAE,IAAIsB,EAAG,EAAI,EAAG,KAAK,IAAI5B,EAAE4B,CAAC,EAAG,CAAC,CAAC,CAClC,CACH,OAAOtB,CACR,CACD,gBAAgBN,EAAG,EAAGG,EAAG,CACvB,GAAI,IAAM,SAAW,EAAI,GAAIA,IAAM,SAAWA,EAAI,KAAK,KAAO,GAAI,EAAIA,GAAK,EAAI,GAAK,GAAK,KAAK,MAAQA,EAAI,GAAKA,GAAK,KAAK,KACvH,MAAM,IAAI,WAAW,uBAAuB,EAC9C,IAAIG,EAAI,IAAImH,EAAEtH,EAAI,EAAI,EAAGH,EAAE,MAAM,EACjC,QAAS4B,EAAI,EAAGA,EAAI5B,EAAE,OAAQ4B,IAC5B,QAAS,EAAI,EAAG,GAAKzB,EAAG,IAAK,CAC3B,GAAIH,EAAE4B,CAAC,EAAI,GAAK5B,EAAE4B,CAAC,GAAK,KAAK,QAC3B,MAAM,IAAI,WAAW,8BAA8B5B,EAAE4B,CAAC,CAAC,EAAE,EAC3DtB,EAAE,IAAI,EAAI,EAAGsB,EAAG,KAAK,IAAI,EAAG5B,EAAE4B,CAAC,CAAC,CAAC,CAClC,CACH,OAAOtB,CACR,CACD,aAAaN,EAAG,EAAGG,EAAG,CACpB,GAAIH,EAAIyH,EAAE,YAAYzH,CAAC,EAAGA,EAAE,QAAS,EACnC,OAAO,KACT,IAAIM,EAAI,EAAIN,EAAE,KAAO,EAAG4B,EAAIzB,EAAIH,EAAE,QAAU,EAC5CiG,GAAG,KAAM,EAAG3F,EAAGH,EAAGyB,CAAC,EACnB,QAAS,EAAI,EAAG,EAAI5B,EAAE,KAAM,IAC1B,QAAS,EAAI,EAAG,EAAIA,EAAE,QAAS,IAC7B,KAAK,IAAI,EAAI,EAAGG,EAAI,EAAGH,EAAE,IAAI,EAAG,CAAC,CAAC,EACtC,OAAO,IACR,CACD,UAAUA,EAAG,EAAG,CACd+F,GAAG,KAAM/F,CAAC,EAAGgG,GAAG,KAAM,CAAC,EACvB,IAAI7F,EAAI,IAAIsH,EAAEzH,EAAE,OAAQ,EAAE,MAAM,EAChC,QAASM,EAAI,EAAGA,EAAIN,EAAE,OAAQM,IAAK,CACjC,IAAIsB,EAAI5B,EAAEM,CAAC,EACX,QAAS,EAAI,EAAG,EAAI,EAAE,OAAQ,IAAK,CACjC,IAAI,EAAI,EAAE,CAAC,EACXH,EAAE,IAAIG,EAAG,EAAG,KAAK,IAAIsB,EAAG,CAAC,CAAC,CAC3B,CACF,CACD,OAAOzB,CACR,CACD,OAAQ,CACN,IAAIH,EAAI,KAAK,IAAI,KAAK,KAAM,KAAK,OAAO,EAAG,EAAI,EAC/C,QAASG,EAAI,EAAGA,EAAIH,EAAGG,IACrB,GAAK,KAAK,IAAIA,EAAGA,CAAC,EACpB,OAAO,CACR,CACD,OAAQ,CACN,IAAIH,EAAI,IAAIyH,EAAE,KAAK,KAAM,KAAK,OAAO,EACrC,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAAStH,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChCH,EAAE,IAAI,EAAGG,EAAG,KAAK,IAAI,EAAGA,CAAC,CAAC,EAC9B,OAAOH,CACR,CACD,IAAIA,EAAG,CACL,OAAQA,EAAC,CACP,IAAK,MACH,OAAOqG,GAAG,IAAI,EAChB,IAAK,SACH,OAAOC,GAAG,IAAI,EAChB,KAAK,OACH,OAAOC,GAAG,IAAI,EAChB,QACE,MAAM,IAAI,MAAM,mBAAmBvG,CAAC,EAAE,CACzC,CACF,CACD,QAAQA,EAAG,CACT,OAAQA,EAAC,CACP,IAAK,MACH,OAAOwG,GAAG,IAAI,EAChB,IAAK,SACH,OAAOC,GAAG,IAAI,EAChB,KAAK,OACH,OAAOC,GAAG,IAAI,EAChB,QACE,MAAM,IAAI,MAAM,mBAAmB1G,CAAC,EAAE,CACzC,CACF,CACD,KAAKA,EAAG,CACN,MAAM,EAAI,KAAK,IAAIA,CAAC,EACpB,OAAQA,EAAC,CACP,IAAK,MAAO,CACV,QAASG,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,EAAEA,CAAC,GAAK,KAAK,QACf,OAAO,CACR,CACD,IAAK,SAAU,CACb,QAASA,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,EAAEA,CAAC,GAAK,KAAK,KACf,OAAO,CACR,CACD,KAAK,OACH,OAAO,EAAI,KAAK,KAClB,QACE,MAAM,IAAI,MAAM,mBAAmBH,CAAC,EAAE,CACzC,CACF,CACD,SAASA,EAAG,EAAI,GAAI,CAClB,GAAI,OAAOA,GAAK,WAAa,EAAIA,EAAGA,EAAI,QAAS,OAAO,GAAK,SAC3D,MAAM,IAAI,UAAU,2BAA2B,EACjD,KAAM,CAAE,SAAUG,EAAI,GAAI,KAAMG,EAAI,KAAK,KAAKN,CAAC,CAAC,EAAK,EACrD,GAAI,OAAOG,GAAK,UACd,MAAM,IAAI,UAAU,4BAA4B,EAClD,OAAQH,EAAC,CACP,IAAK,MAAO,CACV,GAAI,CAAC+E,GAAEzE,CAAC,EACN,MAAM,IAAI,UAAU,uBAAuB,EAC7C,OAAOqG,GAAG,KAAMxG,EAAGG,CAAC,CACrB,CACD,IAAK,SAAU,CACb,GAAI,CAACyE,GAAEzE,CAAC,EACN,MAAM,IAAI,UAAU,uBAAuB,EAC7C,OAAOsG,GAAG,KAAMzG,EAAGG,CAAC,CACrB,CACD,KAAK,OAAQ,CACX,GAAI,OAAOA,GAAK,SACd,MAAM,IAAI,UAAU,uBAAuB,EAC7C,OAAOuG,GAAG,KAAM1G,EAAGG,CAAC,CACrB,CACD,QACE,MAAM,IAAI,MAAM,mBAAmBN,CAAC,EAAE,CACzC,CACF,CACD,kBAAkBA,EAAG,EAAG,CACtB,OAAOA,GAAK,WAAa,EAAIA,EAAGA,EAAI,QACpC,MAAMG,EAAI,KAAK,SAASH,EAAG,CAAC,EAC5B,GAAIA,IAAM,OACR,OAAO,KAAK,KAAKG,CAAC,EACpB,QAASG,EAAI,EAAGA,EAAIH,EAAE,OAAQG,IAC5BH,EAAEG,CAAC,EAAI,KAAK,KAAKH,EAAEG,CAAC,CAAC,EACvB,OAAOH,CACR,CACD,OAAOH,EAAG,EAAI,GAAI,CAChB,GAAI,OAAOA,GAAK,WAAa,EAAIA,EAAGA,EAAI,QAAS,OAAO,GAAK,SAC3D,MAAM,IAAI,UAAU,2BAA2B,EACjD,KAAM,CAAE,OAAQG,EAAI,KAAK,KAAKH,CAAC,CAAG,EAAG,EACrC,OAAQA,EAAC,CACP,IAAK,MAAO,CACV,GAAI,CAAC+E,GAAE5E,CAAC,EACN,MAAM,IAAI,UAAU,yBAAyB,EAC/C,OAAO2G,GAAG,KAAM3G,CAAC,EAAG,IACrB,CACD,IAAK,SAAU,CACb,GAAI,CAAC4E,GAAE5E,CAAC,EACN,MAAM,IAAI,UAAU,yBAAyB,EAC/C,OAAO4G,GAAG,KAAM5G,CAAC,EAAG,IACrB,CACD,KAAK,OAAQ,CACX,GAAI,OAAOA,GAAK,SACd,MAAM,IAAI,UAAU,yBAAyB,EAC/C,OAAO6G,GAAG,KAAM7G,CAAC,EAAG,IACrB,CACD,QACE,MAAM,IAAI,MAAM,mBAAmBH,CAAC,EAAE,CACzC,CACF,CACD,MAAMA,EAAG,EAAI,GAAI,CACf,GAAI,OAAOA,GAAK,WAAa,EAAIA,EAAGA,EAAI,QAAS,OAAO,GAAK,SAC3D,MAAM,IAAI,UAAU,2BAA2B,EACjD,IAAIG,EAAI,EAAE,MACV,OAAQH,EAAC,CACP,IAAK,MAAO,CACV,GAAIG,IAAM,OACRA,EAAI8G,GAAG,IAAI,UACJ,CAAClC,GAAE5E,CAAC,EACX,MAAM,IAAI,UAAU,wBAAwB,EAC9C,OAAO+G,GAAG,KAAM/G,CAAC,EAAG,IACrB,CACD,IAAK,SAAU,CACb,GAAIA,IAAM,OACRA,EAAIgH,GAAG,IAAI,UACJ,CAACpC,GAAE5E,CAAC,EACX,MAAM,IAAI,UAAU,wBAAwB,EAC9C,OAAOiH,GAAG,KAAMjH,CAAC,EAAG,IACrB,CACD,KAAK,OAAQ,CACX,GAAIA,IAAM,OACRA,EAAIkH,GAAG,IAAI,UACJ,OAAOlH,GAAK,SACnB,MAAM,IAAI,UAAU,wBAAwB,EAC9C,OAAOmH,GAAG,KAAMnH,CAAC,EAAG,IACrB,CACD,QACE,MAAM,IAAI,MAAM,mBAAmBH,CAAC,EAAE,CACzC,CACF,CACD,SAASA,EAAG,CACV,OAAOsF,GAAG,KAAMtF,CAAC,CAClB,CACH,EACAwH,EAAE,UAAU,MAAQ,SACpB,OAAO,OAAS,MAAQA,EAAE,UAAU,OAAO,IAAI,4BAA4B,CAAC,EAAInC,IAChF,SAAS8D,GAAGpJ,EAAGC,EAAG,CAChB,OAAOD,EAAIC,CACb,CACA,SAASoJ,GAAGrJ,EAAG,CACb,OAAOA,EAAE,MAAOC,GAAM,OAAOA,GAAK,QAAQ,CAC5C,CACAwH,EAAE,OAASA,EAAE,KACbA,EAAE,UAAYA,EAAE,QAChBA,EAAE,SAAWA,EAAE,KACdD,EAAC,UAAU,SAAWC,EAAE,UAAU,KACnCA,EAAE,SAAWA,EAAE,IACdD,EAAC,UAAU,OAASC,EAAE,UAAU,IAChCD,EAAC,UAAU,cAAgBC,EAAE,UAAU,uBACxC,MAAMC,WAAUD,CAAE,CAChB,YAAYxH,EAAG,EAAG,CAChB,GAAI,MAAO,EAAEyH,GAAE,SAASzH,CAAC,EACvB,OAAOA,EAAE,QACX,GAAI,OAAO,UAAUA,CAAC,GAAKA,GAAK,EAC9B,GAAI,KAAK,KAAO,GAAI,OAAO,UAAU,CAAC,GAAK,GAAK,EAC9C,QAASG,EAAI,EAAGA,EAAIH,EAAGG,IACrB,KAAK,KAAK,KAAK,IAAI,aAAa,CAAC,CAAC,MAEpC,OAAM,IAAI,UAAU,qCAAqC,UACpD4E,GAAE/E,CAAC,EAAG,CACb,MAAMG,EAAIH,EACV,GAAIA,EAAIG,EAAE,OAAQ,EAAIH,EAAIG,EAAE,CAAC,EAAE,OAAS,EAAG,OAAO,GAAK,SACrD,MAAM,IAAI,UACR,mDACV,EACM,KAAK,KAAO,GACZ,QAASG,EAAI,EAAGA,EAAIN,EAAGM,IAAK,CAC1B,GAAIH,EAAEG,CAAC,EAAE,SAAW,EAClB,MAAM,IAAI,WAAW,+BAA+B,EACtD,GAAI,CAAC8I,GAAGjJ,EAAEG,CAAC,CAAC,EACV,MAAM,IAAI,UAAU,wCAAwC,EAC9D,KAAK,KAAK,KAAK,aAAa,KAAKH,EAAEG,CAAC,CAAC,CAAC,CACvC,CACF,KACC,OAAM,IAAI,UACR,sDACR,EACI,KAAK,KAAON,EAAG,KAAK,QAAU,CAC/B,CACD,IAAIA,EAAG,EAAGG,EAAG,CACX,OAAO,KAAK,KAAKH,CAAC,EAAE,CAAC,EAAIG,EAAG,IAC7B,CACD,IAAIH,EAAG,EAAG,CACR,OAAO,KAAK,KAAKA,CAAC,EAAE,CAAC,CACtB,CACD,UAAUA,EAAG,CACX,OAAO2F,GAAE,KAAM3F,CAAC,EAAG,KAAK,KAAK,OAAOA,EAAG,CAAC,EAAG,KAAK,MAAQ,EAAG,IAC5D,CACD,OAAOA,EAAG,EAAG,CACX,OAAO,IAAM,SAAW,EAAIA,EAAGA,EAAI,KAAK,MAAO2F,GAAE,KAAM3F,EAAG,EAAE,EAAG,EAAI,aAAa,KAAK6F,GAAG,KAAM,CAAC,CAAC,EAAG,KAAK,KAAK,OAAO7F,EAAG,EAAG,CAAC,EAAG,KAAK,MAAQ,EAAG,IAC/I,CACD,aAAaA,EAAG,CACd4F,GAAE,KAAM5F,CAAC,EACT,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAAK,CAClC,MAAMG,EAAI,IAAI,aAAa,KAAK,QAAU,CAAC,EAC3C,QAASG,EAAI,EAAGA,EAAIN,EAAGM,IACrBH,EAAEG,CAAC,EAAI,KAAK,KAAK,CAAC,EAAEA,CAAC,EACvB,QAASA,EAAIN,EAAI,EAAGM,EAAI,KAAK,QAASA,IACpCH,EAAEG,EAAI,CAAC,EAAI,KAAK,KAAK,CAAC,EAAEA,CAAC,EAC3B,KAAK,KAAK,CAAC,EAAIH,CAChB,CACD,OAAO,KAAK,SAAW,EAAG,IAC3B,CACD,UAAUH,EAAG,EAAG,CACd,OAAO,EAAI,MAAQ,EAAIA,EAAGA,EAAI,KAAK,SAAU4F,GAAE,KAAM5F,EAAG,EAAE,EAAG,EAAI8F,GAAG,KAAM,CAAC,EAC3E,QAAS3F,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAAK,CAClC,MAAMG,EAAI,IAAI,aAAa,KAAK,QAAU,CAAC,EAC3C,IAAIsB,EAAI,EACR,KAAOA,EAAI5B,EAAG4B,IACZtB,EAAEsB,CAAC,EAAI,KAAK,KAAKzB,CAAC,EAAEyB,CAAC,EACvB,IAAKtB,EAAEsB,GAAG,EAAI,EAAEzB,CAAC,EAAGyB,EAAI,KAAK,QAAU,EAAGA,IACxCtB,EAAEsB,CAAC,EAAI,KAAK,KAAKzB,CAAC,EAAEyB,EAAI,CAAC,EAC3B,KAAK,KAAKzB,CAAC,EAAIG,CAChB,CACD,OAAO,KAAK,SAAW,EAAG,IAC3B,CACH,EACAoF,GAAG8B,EAAGC,CAAC,EACP,MAAM4B,WAAW7B,CAAE,CACjB,YAAYxH,EAAG,CACb,MAAO,EAAE,KAAK,KAAOA,EAAG,KAAK,KAAOA,EAAE,OAAQ,KAAK,QAAUA,EAAE,CAAC,EAAE,MACnE,CACD,IAAIA,EAAG,EAAGG,EAAG,CACX,OAAO,KAAK,KAAKH,CAAC,EAAE,CAAC,EAAIG,EAAG,IAC7B,CACD,IAAIH,EAAG,EAAG,CACR,OAAO,KAAK,KAAKA,CAAC,EAAE,CAAC,CACtB,CACH,CACA,SAASsJ,GAAGvJ,EAAGC,EAAG,CAChB,IAAI,EAAI,EACR,OAAO,KAAK,IAAID,CAAC,EAAI,KAAK,IAAIC,CAAC,GAAK,EAAIA,EAAID,EAAG,KAAK,IAAIA,CAAC,EAAI,KAAK,KAAK,EAAI,EAAI,CAAC,GAAKC,IAAM,GAAK,EAAID,EAAIC,EAAG,KAAK,IAAIA,CAAC,EAAI,KAAK,KAAK,EAAI,EAAI,CAAC,GAAK,CACnJ,CACA,MAAMuJ,EAAG,CACP,YAAYvJ,EAAG,EAAI,GAAI,CACrB,KAAM,CAAE,gBAAiBG,EAAI,EAAE,EAAK,EACpC,GAAIH,EAAIqJ,GAAG,YAAYrJ,CAAC,EAAG,CAACA,EAAE,SAAU,EACtC,MAAM,IAAI,MAAM,+BAA+B,EACjD,GAAIA,EAAE,QAAS,EACb,MAAM,IAAI,MAAM,0BAA0B,EAC5C,IAAIM,EAAIN,EAAE,QAAS4B,EAAI,IAAI6F,EAAEnH,EAAGA,CAAC,EAAG,EAAI,IAAI,aAAaA,CAAC,EAAG,EAAI,IAAI,aAAaA,CAAC,EAAG2B,EAAIjC,EAAGkC,EAAG,EAAG,EAAI,GACvG,GAAI/B,EAAI,EAAI,GAAK,EAAIH,EAAE,YAAa,EAAE,EAAG,CACvC,IAAKkC,EAAI,EAAGA,EAAI5B,EAAG4B,IACjB,IAAK,EAAI,EAAG,EAAI5B,EAAG,IACjBsB,EAAE,IAAIM,EAAG,EAAGD,EAAE,IAAIC,EAAG,CAAC,CAAC,EAC3BsH,GAAGlJ,EAAG,EAAG,EAAGsB,CAAC,EAAG6H,GAAGnJ,EAAG,EAAG,EAAGsB,CAAC,CACnC,KAAW,CACL,IAAIO,EAAI,IAAIsF,EAAEnH,EAAGA,CAAC,EAAG8B,EAAI,IAAI,aAAa9B,CAAC,EAC3C,IAAK,EAAI,EAAG,EAAIA,EAAG,IACjB,IAAK4B,EAAI,EAAGA,EAAI5B,EAAG4B,IACjBC,EAAE,IAAID,EAAG,EAAGD,EAAE,IAAIC,EAAG,CAAC,CAAC,EAC3BwH,GAAGpJ,EAAG6B,EAAGC,EAAGR,CAAC,EAAG+H,GAAGrJ,EAAG,EAAG,EAAGsB,EAAGO,CAAC,CACjC,CACD,KAAK,EAAI7B,EAAG,KAAK,EAAI,EAAG,KAAK,EAAI,EAAG,KAAK,EAAIsB,CAC9C,CACD,IAAI,iBAAkB,CACpB,OAAO,MAAM,KAAK,KAAK,CAAC,CACzB,CACD,IAAI,sBAAuB,CACzB,OAAO,MAAM,KAAK,KAAK,CAAC,CACzB,CACD,IAAI,mBAAoB,CACtB,OAAO,KAAK,CACb,CACD,IAAI,gBAAiB,CACnB,IAAI5B,EAAI,KAAK,EAAG,EAAI,KAAK,EAAGG,EAAI,KAAK,EAAGG,EAAI,IAAImH,EAAEzH,EAAGA,CAAC,EAAG4B,EAAG,EAC5D,IAAKA,EAAI,EAAGA,EAAI5B,EAAG4B,IAAK,CACtB,IAAK,EAAI,EAAG,EAAI5B,EAAG,IACjBM,EAAE,IAAIsB,EAAG,EAAG,CAAC,EACftB,EAAE,IAAIsB,EAAGA,EAAGzB,EAAEyB,CAAC,CAAC,EAAG,EAAEA,CAAC,EAAI,EAAItB,EAAE,IAAIsB,EAAGA,EAAI,EAAG,EAAEA,CAAC,CAAC,EAAI,EAAEA,CAAC,EAAI,GAAKtB,EAAE,IAAIsB,EAAGA,EAAI,EAAG,EAAEA,CAAC,CAAC,CACvF,CACD,OAAOtB,CACR,CACH,CACA,SAASkJ,GAAGzJ,EAAGC,EAAG,EAAGG,EAAG,CACtB,IAAIG,EAAGsB,EAAG,EAAG,EAAGK,EAAGC,EAAG,EAAG,EACzB,IAAKD,EAAI,EAAGA,EAAIlC,EAAGkC,IACjB,EAAEA,CAAC,EAAI9B,EAAE,IAAIJ,EAAI,EAAGkC,CAAC,EACvB,IAAK,EAAIlC,EAAI,EAAG,EAAI,EAAG,IAAK,CAC1B,IAAK,EAAI,EAAG,EAAI,EAAGmC,EAAI,EAAGA,EAAI,EAAGA,IAC/B,EAAI,EAAI,KAAK,IAAI,EAAEA,CAAC,CAAC,EACvB,GAAI,IAAM,EACR,IAAKlC,EAAE,CAAC,EAAI,EAAE,EAAI,CAAC,EAAGiC,EAAI,EAAGA,EAAI,EAAGA,IAClC,EAAEA,CAAC,EAAI9B,EAAE,IAAI,EAAI,EAAG8B,CAAC,EAAG9B,EAAE,IAAI,EAAG8B,EAAG,CAAC,EAAG9B,EAAE,IAAI8B,EAAG,EAAG,CAAC,MACpD,CACH,IAAKC,EAAI,EAAGA,EAAI,EAAGA,IACjB,EAAEA,CAAC,GAAK,EAAG,GAAK,EAAEA,CAAC,EAAI,EAAEA,CAAC,EAC5B,IAAK5B,EAAI,EAAE,EAAI,CAAC,EAAGsB,EAAI,KAAK,KAAK,CAAC,EAAGtB,EAAI,IAAMsB,EAAI,CAACA,GAAI5B,EAAE,CAAC,EAAI,EAAI4B,EAAG,EAAI,EAAItB,EAAIsB,EAAG,EAAE,EAAI,CAAC,EAAItB,EAAIsB,EAAGK,EAAI,EAAGA,EAAI,EAAGA,IACnHjC,EAAEiC,CAAC,EAAI,EACT,IAAKA,EAAI,EAAGA,EAAI,EAAGA,IAAK,CACtB,IAAK3B,EAAI,EAAE2B,CAAC,EAAG9B,EAAE,IAAI8B,EAAG,EAAG3B,CAAC,EAAGsB,EAAI5B,EAAEiC,CAAC,EAAI9B,EAAE,IAAI8B,EAAGA,CAAC,EAAI3B,EAAG4B,EAAID,EAAI,EAAGC,GAAK,EAAI,EAAGA,IAChFN,GAAKzB,EAAE,IAAI+B,EAAGD,CAAC,EAAI,EAAEC,CAAC,EAAGlC,EAAEkC,CAAC,GAAK/B,EAAE,IAAI+B,EAAGD,CAAC,EAAI3B,EACjDN,EAAEiC,CAAC,EAAIL,CACR,CACD,IAAKtB,EAAI,EAAG2B,EAAI,EAAGA,EAAI,EAAGA,IACxBjC,EAAEiC,CAAC,GAAK,EAAG3B,GAAKN,EAAEiC,CAAC,EAAI,EAAEA,CAAC,EAC5B,IAAK,EAAI3B,GAAK,EAAI,GAAI2B,EAAI,EAAGA,EAAI,EAAGA,IAClCjC,EAAEiC,CAAC,GAAK,EAAI,EAAEA,CAAC,EACjB,IAAKA,EAAI,EAAGA,EAAI,EAAGA,IAAK,CACtB,IAAK3B,EAAI,EAAE2B,CAAC,EAAGL,EAAI5B,EAAEiC,CAAC,EAAGC,EAAID,EAAGC,GAAK,EAAI,EAAGA,IAC1C/B,EAAE,IAAI+B,EAAGD,EAAG9B,EAAE,IAAI+B,EAAGD,CAAC,GAAK3B,EAAIN,EAAEkC,CAAC,EAAIN,EAAI,EAAEM,CAAC,EAAE,EACjD,EAAED,CAAC,EAAI9B,EAAE,IAAI,EAAI,EAAG8B,CAAC,EAAG9B,EAAE,IAAI,EAAG8B,EAAG,CAAC,CACtC,CACF,CACD,EAAE,CAAC,EAAI,CACR,CACD,IAAK,EAAI,EAAG,EAAIlC,EAAI,EAAG,IAAK,CAC1B,GAAII,EAAE,IAAIJ,EAAI,EAAG,EAAGI,EAAE,IAAI,EAAG,CAAC,CAAC,EAAGA,EAAE,IAAI,EAAG,EAAG,CAAC,EAAG,EAAI,EAAE,EAAI,CAAC,EAAG,IAAM,EAAG,CACvE,IAAK+B,EAAI,EAAGA,GAAK,EAAGA,IAClB,EAAEA,CAAC,EAAI/B,EAAE,IAAI+B,EAAG,EAAI,CAAC,EAAI,EAC3B,IAAKD,EAAI,EAAGA,GAAK,EAAGA,IAAK,CACvB,IAAKL,EAAI,EAAGM,EAAI,EAAGA,GAAK,EAAGA,IACzBN,GAAKzB,EAAE,IAAI+B,EAAG,EAAI,CAAC,EAAI/B,EAAE,IAAI+B,EAAGD,CAAC,EACnC,IAAKC,EAAI,EAAGA,GAAK,EAAGA,IAClB/B,EAAE,IAAI+B,EAAGD,EAAG9B,EAAE,IAAI+B,EAAGD,CAAC,EAAIL,EAAI,EAAEM,CAAC,CAAC,CACrC,CACF,CACD,IAAKA,EAAI,EAAGA,GAAK,EAAGA,IAClB/B,EAAE,IAAI+B,EAAG,EAAI,EAAG,CAAC,CACpB,CACD,IAAKD,EAAI,EAAGA,EAAIlC,EAAGkC,IACjB,EAAEA,CAAC,EAAI9B,EAAE,IAAIJ,EAAI,EAAGkC,CAAC,EAAG9B,EAAE,IAAIJ,EAAI,EAAGkC,EAAG,CAAC,EAC3C9B,EAAE,IAAIJ,EAAI,EAAGA,EAAI,EAAG,CAAC,EAAGC,EAAE,CAAC,EAAI,CACjC,CACA,SAASyJ,GAAG1J,EAAGC,EAAG,EAAGG,EAAG,CACtB,IAAIG,EAAGsB,EAAG,EAAG,EAAGK,EAAGC,EAAG,EAAG,EAAGC,EAAGC,EAAGC,EAAGC,EAAGC,EAAGC,EAAGC,EAAGC,EACjD,IAAK,EAAI,EAAG,EAAI3C,EAAG,IACjBC,EAAE,EAAI,CAAC,EAAIA,EAAE,CAAC,EAChBA,EAAED,EAAI,CAAC,EAAI,EACX,IAAIwE,EAAI,EAAGK,EAAI,EAAGJ,EAAI,OAAO,QAC7B,IAAKtC,EAAI,EAAGA,EAAInC,EAAGmC,IAAK,CACtB,IAAK0C,EAAI,KAAK,IAAIA,EAAG,KAAK,IAAI,EAAE1C,CAAC,CAAC,EAAI,KAAK,IAAIlC,EAAEkC,CAAC,CAAC,CAAC,EAAG,EAAIA,EAAG,EAAInC,GAAK,EAAE,KAAK,IAAIC,EAAE,CAAC,CAAC,GAAKwE,EAAII,IAC7F,IACF,GAAI,EAAI1C,EACN,EAAG,CACD,IAAK5B,EAAI,EAAE4B,CAAC,EAAG,GAAK,EAAEA,EAAI,CAAC,EAAI5B,IAAM,EAAIN,EAAEkC,CAAC,GAAIC,EAAImH,GAAG,EAAG,CAAC,EAAG,EAAI,IAAMnH,EAAI,CAACA,GAAI,EAAED,CAAC,EAAIlC,EAAEkC,CAAC,GAAK,EAAIC,GAAI,EAAED,EAAI,CAAC,EAAIlC,EAAEkC,CAAC,GAAK,EAAIC,GAAIC,EAAI,EAAEF,EAAI,CAAC,EAAGN,EAAItB,EAAI,EAAE4B,CAAC,EAAG,EAAIA,EAAI,EAAG,EAAInC,EAAG,IAC/K,EAAE,CAAC,GAAK6B,EACV,IAAK2C,EAAIA,EAAI3C,EAAG,EAAI,EAAE,CAAC,EAAGS,EAAI,EAAGC,EAAID,EAAGE,EAAIF,EAAGG,EAAIxC,EAAEkC,EAAI,CAAC,EAAGO,EAAI,EAAGC,EAAI,EAAG,EAAI,EAAI,EAAG,GAAKR,EAAG,IAC5F,IAAKK,EAAID,EAAGA,EAAID,EAAGK,EAAID,EAAGnC,EAAI+B,EAAIrC,EAAE,CAAC,EAAG4B,EAAIS,EAAI,EAAGF,EAAImH,GAAG,EAAGtJ,EAAE,CAAC,CAAC,EAAGA,EAAE,EAAI,CAAC,EAAIyC,EAAIN,EAAGM,EAAIzC,EAAE,CAAC,EAAImC,EAAGE,EAAI,EAAIF,EAAG,EAAIE,EAAI,EAAE,CAAC,EAAII,EAAInC,EAAG,EAAE,EAAI,CAAC,EAAIsB,EAAIa,GAAKJ,EAAI/B,EAAImC,EAAI,EAAE,CAAC,GAAIR,EAAI,EAAGA,EAAIlC,EAAGkC,IACxLL,EAAIzB,EAAE,IAAI8B,EAAG,EAAI,CAAC,EAAG9B,EAAE,IAAI8B,EAAG,EAAI,EAAGQ,EAAItC,EAAE,IAAI8B,EAAG,CAAC,EAAII,EAAIT,CAAC,EAAGzB,EAAE,IAAI8B,EAAG,EAAGI,EAAIlC,EAAE,IAAI8B,EAAG,CAAC,EAAIQ,EAAIb,CAAC,EACtG,EAAI,CAACa,EAAIC,EAAIH,EAAIC,EAAIxC,EAAEkC,CAAC,EAAIE,EAAGpC,EAAEkC,CAAC,EAAIO,EAAI,EAAG,EAAEP,CAAC,EAAIG,EAAI,CAChE,OAAe,KAAK,IAAIrC,EAAEkC,CAAC,CAAC,EAAIsC,EAAII,GAChC,EAAE1C,CAAC,EAAI,EAAEA,CAAC,EAAIqC,EAAGvE,EAAEkC,CAAC,EAAI,CACzB,CACD,IAAK,EAAI,EAAG,EAAInC,EAAI,EAAG,IAAK,CAC1B,IAAKkC,EAAI,EAAG,EAAI,EAAE,CAAC,EAAG,EAAI,EAAI,EAAG,EAAIlC,EAAG,IACtC,EAAE,CAAC,EAAI,IAAMkC,EAAI,EAAG,EAAI,EAAE,CAAC,GAC7B,GAAIA,IAAM,EACR,IAAK,EAAEA,CAAC,EAAI,EAAE,CAAC,EAAG,EAAE,CAAC,EAAI,EAAG,EAAI,EAAG,EAAIlC,EAAG,IACxC,EAAII,EAAE,IAAI,EAAG,CAAC,EAAGA,EAAE,IAAI,EAAG,EAAGA,EAAE,IAAI,EAAG8B,CAAC,CAAC,EAAG9B,EAAE,IAAI,EAAG8B,EAAG,CAAC,CAC7D,CACH,CACA,SAASyH,GAAG3J,EAAGC,EAAG,EAAGG,EAAG,CACtB,IAAIG,EAAI,EAAGsB,EAAI7B,EAAI,EAAG,EAAG,EAAGkC,EAAGC,EAAG,EAAG,EAAGC,EACxC,IAAK,EAAI7B,EAAI,EAAG,GAAKsB,EAAI,EAAG,IAAK,CAC/B,IAAKO,EAAI,EAAGD,EAAI,EAAGA,GAAKN,EAAGM,IACzBC,EAAIA,EAAI,KAAK,IAAInC,EAAE,IAAIkC,EAAG,EAAI,CAAC,CAAC,EAClC,GAAIC,IAAM,EAAG,CACX,IAAKF,EAAI,EAAGC,EAAIN,EAAGM,GAAK,EAAGA,IACzB,EAAEA,CAAC,EAAIlC,EAAE,IAAIkC,EAAG,EAAI,CAAC,EAAIC,EAAGF,GAAK,EAAEC,CAAC,EAAI,EAAEA,CAAC,EAC7C,IAAK,EAAI,KAAK,KAAKD,CAAC,EAAG,EAAE,CAAC,EAAI,IAAM,EAAI,CAAC,GAAIA,EAAIA,EAAI,EAAE,CAAC,EAAI,EAAG,EAAE,CAAC,EAAI,EAAE,CAAC,EAAI,EAAG,EAAI,EAAG,EAAIlC,EAAG,IAAK,CACjG,IAAK,EAAI,EAAGmC,EAAIN,EAAGM,GAAK,EAAGA,IACzB,GAAK,EAAEA,CAAC,EAAIlC,EAAE,IAAIkC,EAAG,CAAC,EACxB,IAAK,EAAI,EAAID,EAAGC,EAAI,EAAGA,GAAKN,EAAGM,IAC7BlC,EAAE,IAAIkC,EAAG,EAAGlC,EAAE,IAAIkC,EAAG,CAAC,EAAI,EAAI,EAAEA,CAAC,CAAC,CACrC,CACD,IAAKA,EAAI,EAAGA,GAAKN,EAAGM,IAAK,CACvB,IAAK,EAAI,EAAG,EAAIN,EAAG,GAAK,EAAG,IACzB,GAAK,EAAE,CAAC,EAAI5B,EAAE,IAAIkC,EAAG,CAAC,EACxB,IAAK,EAAI,EAAID,EAAG,EAAI,EAAG,GAAKL,EAAG,IAC7B5B,EAAE,IAAIkC,EAAG,EAAGlC,EAAE,IAAIkC,EAAG,CAAC,EAAI,EAAI,EAAE,CAAC,CAAC,CACrC,CACD,EAAE,CAAC,EAAIC,EAAI,EAAE,CAAC,EAAGnC,EAAE,IAAI,EAAG,EAAI,EAAGmC,EAAI,CAAC,CACvC,CACF,CACD,IAAKD,EAAI,EAAGA,EAAInC,EAAGmC,IACjB,IAAK,EAAI,EAAG,EAAInC,EAAG,IACjBI,EAAE,IAAI+B,EAAG,EAAGA,IAAM,EAAI,EAAI,CAAC,EAC/B,IAAK,EAAIN,EAAI,EAAG,GAAKtB,EAAI,EAAG,IAC1B,GAAIN,EAAE,IAAI,EAAG,EAAI,CAAC,IAAM,EAAG,CACzB,IAAKkC,EAAI,EAAI,EAAGA,GAAKN,EAAGM,IACtB,EAAEA,CAAC,EAAIlC,EAAE,IAAIkC,EAAG,EAAI,CAAC,EACvB,IAAK,EAAI,EAAG,GAAKN,EAAG,IAAK,CACvB,IAAK,EAAI,EAAGM,EAAI,EAAGA,GAAKN,EAAGM,IACzB,GAAK,EAAEA,CAAC,EAAI/B,EAAE,IAAI+B,EAAG,CAAC,EACxB,IAAK,EAAI,EAAI,EAAE,CAAC,EAAIlC,EAAE,IAAI,EAAG,EAAI,CAAC,EAAGkC,EAAI,EAAGA,GAAKN,EAAGM,IAClD/B,EAAE,IAAI+B,EAAG,EAAG/B,EAAE,IAAI+B,EAAG,CAAC,EAAI,EAAI,EAAEA,CAAC,CAAC,CACrC,CACF,CACL,CACA,SAASyH,GAAG5J,EAAGC,EAAG,EAAGG,EAAGG,EAAG,CACzB,IAAIsB,EAAI7B,EAAI,EAAG,EAAI,EAAG,EAAIA,EAAI,EAAGkC,EAAI,OAAO,QAASC,EAAI,EAAG,EAAI,EAAG,EAAI,EAAGC,EAAI,EAAGC,EAAI,EAAGC,EAAI,EAAGC,EAAI,EAAGC,EAAI,EAAGC,EAAGC,EAAGC,EAAG6B,EAAGK,EAAGJ,EAAGC,EAAGC,EAAGC,EAAG+C,EAAGC,EAAGC,GAAGC,EAAGC,EAAG,EACvJ,IAAKtF,EAAI,EAAGA,EAAIzC,EAAGyC,IACjB,KAAMA,EAAI,GAAKA,EAAI,KAAO,EAAEA,CAAC,EAAIlC,EAAE,IAAIkC,EAAGA,CAAC,EAAGxC,EAAEwC,CAAC,EAAI,GAAIC,EAAI,KAAK,IAAID,EAAI,EAAG,CAAC,EAAGC,EAAI1C,EAAG0C,IACtF,EAAI,EAAI,KAAK,IAAInC,EAAE,IAAIkC,EAAGC,CAAC,CAAC,EAChC,KAAOb,GAAK,GAAK,CACf,IAAK2C,EAAI3C,EAAG2C,EAAI,IAAMlC,EAAI,KAAK,IAAI/B,EAAE,IAAIiE,EAAI,EAAGA,EAAI,CAAC,CAAC,EAAI,KAAK,IAAIjE,EAAE,IAAIiE,EAAGA,CAAC,CAAC,EAAGlC,IAAM,IAAMA,EAAI,GAAI,EAAE,KAAK,IAAI/B,EAAE,IAAIiE,EAAGA,EAAI,CAAC,CAAC,EAAItC,EAAII,KACrIkC,IACF,GAAIA,IAAM3C,EACRtB,EAAE,IAAIsB,EAAGA,EAAGtB,EAAE,IAAIsB,EAAGA,CAAC,EAAIM,CAAC,EAAG,EAAEN,CAAC,EAAItB,EAAE,IAAIsB,EAAGA,CAAC,EAAG5B,EAAE4B,CAAC,EAAI,EAAGA,IAAKW,EAAI,UAC9DgC,IAAM3C,EAAI,EAAG,CACpB,GAAI6C,EAAInE,EAAE,IAAIsB,EAAGA,EAAI,CAAC,EAAItB,EAAE,IAAIsB,EAAI,EAAGA,CAAC,EAAG,GAAKtB,EAAE,IAAIsB,EAAI,EAAGA,EAAI,CAAC,EAAItB,EAAE,IAAIsB,EAAGA,CAAC,GAAK,EAAGO,EAAI,EAAI,EAAIsC,EAAGnC,EAAI,KAAK,KAAK,KAAK,IAAIH,CAAC,CAAC,EAAG7B,EAAE,IAAIsB,EAAGA,EAAGtB,EAAE,IAAIsB,EAAGA,CAAC,EAAIM,CAAC,EAAG5B,EAAE,IAAIsB,EAAI,EAAGA,EAAI,EAAGtB,EAAE,IAAIsB,EAAI,EAAGA,EAAI,CAAC,EAAIM,CAAC,EAAGwC,EAAIpE,EAAE,IAAIsB,EAAGA,CAAC,EAAGO,GAAK,EAAG,CACtO,IAAKG,EAAI,GAAK,EAAI,EAAIA,EAAI,EAAIA,EAAG,EAAEV,EAAI,CAAC,EAAI8C,EAAIpC,EAAG,EAAEV,CAAC,EAAI,EAAEA,EAAI,CAAC,EAAGU,IAAM,IAAM,EAAEV,CAAC,EAAI8C,EAAID,EAAInC,GAAItC,EAAE4B,EAAI,CAAC,EAAI,EAAG5B,EAAE4B,CAAC,EAAI,EAAG8C,EAAIpE,EAAE,IAAIsB,EAAGA,EAAI,CAAC,EAAGS,EAAI,KAAK,IAAIqC,CAAC,EAAI,KAAK,IAAIpC,CAAC,EAAG,EAAIoC,EAAIrC,EAAGF,EAAIG,EAAID,EAAGD,EAAI,KAAK,KAAK,EAAI,EAAID,EAAIA,CAAC,EAAG,EAAI,EAAIC,EAAGD,EAAIA,EAAIC,EAAGK,EAAIb,EAAI,EAAGa,EAAI1C,EAAG0C,IACzQH,EAAIhC,EAAE,IAAIsB,EAAI,EAAGa,CAAC,EAAGnC,EAAE,IAAIsB,EAAI,EAAGa,EAAGN,EAAIG,EAAI,EAAIhC,EAAE,IAAIsB,EAAGa,CAAC,CAAC,EAAGnC,EAAE,IAAIsB,EAAGa,EAAGN,EAAI7B,EAAE,IAAIsB,EAAGa,CAAC,EAAI,EAAIH,CAAC,EACpG,IAAKE,EAAI,EAAGA,GAAKZ,EAAGY,IAClBF,EAAIhC,EAAE,IAAIkC,EAAGZ,EAAI,CAAC,EAAGtB,EAAE,IAAIkC,EAAGZ,EAAI,EAAGO,EAAIG,EAAI,EAAIhC,EAAE,IAAIkC,EAAGZ,CAAC,CAAC,EAAGtB,EAAE,IAAIkC,EAAGZ,EAAGO,EAAI7B,EAAE,IAAIkC,EAAGZ,CAAC,EAAI,EAAIU,CAAC,EACpG,IAAKE,EAAI,EAAGA,GAAK,EAAGA,IAClBF,EAAInC,EAAE,IAAIqC,EAAGZ,EAAI,CAAC,EAAGzB,EAAE,IAAIqC,EAAGZ,EAAI,EAAGO,EAAIG,EAAI,EAAInC,EAAE,IAAIqC,EAAGZ,CAAC,CAAC,EAAGzB,EAAE,IAAIqC,EAAGZ,EAAGO,EAAIhC,EAAE,IAAIqC,EAAGZ,CAAC,EAAI,EAAIU,CAAC,CACrG,MACC,EAAEV,EAAI,CAAC,EAAI8C,EAAI,EAAG,EAAE9C,CAAC,EAAI8C,EAAI,EAAG1E,EAAE4B,EAAI,CAAC,EAAIU,EAAGtC,EAAE4B,CAAC,EAAI,CAACU,EACxDV,EAAIA,EAAI,EAAGW,EAAI,CACrB,KAAW,CACL,GAAImC,EAAIpE,EAAE,IAAIsB,EAAGA,CAAC,EAAG+C,EAAI,EAAGF,EAAI,EAAGF,EAAI3C,IAAM+C,EAAIrE,EAAE,IAAIsB,EAAI,EAAGA,EAAI,CAAC,EAAG6C,EAAInE,EAAE,IAAIsB,EAAGA,EAAI,CAAC,EAAItB,EAAE,IAAIsB,EAAI,EAAGA,CAAC,GAAIW,IAAM,GAAI,CACtH,IAAKL,GAAKwC,EAAGlC,EAAI,EAAGA,GAAKZ,EAAGY,IAC1BlC,EAAE,IAAIkC,EAAGA,EAAGlC,EAAE,IAAIkC,EAAGA,CAAC,EAAIkC,CAAC,EAC7BrC,EAAI,KAAK,IAAI/B,EAAE,IAAIsB,EAAGA,EAAI,CAAC,CAAC,EAAI,KAAK,IAAItB,EAAE,IAAIsB,EAAI,EAAGA,EAAI,CAAC,CAAC,EAAG8C,EAAIC,EAAI,IAAOtC,EAAGoC,EAAI,OAAUpC,EAAIA,CACpG,CACD,GAAIE,IAAM,KAAOF,GAAKsC,EAAID,GAAK,EAAGrC,EAAIA,EAAIA,EAAIoC,EAAGpC,EAAI,GAAI,CACvD,IAAKA,EAAI,KAAK,KAAKA,CAAC,EAAGsC,EAAID,IAAMrC,EAAI,CAACA,GAAIA,EAAIqC,EAAID,IAAME,EAAID,GAAK,EAAIrC,GAAIG,EAAI,EAAGA,GAAKZ,EAAGY,IACtFlC,EAAE,IAAIkC,EAAGA,EAAGlC,EAAE,IAAIkC,EAAGA,CAAC,EAAIH,CAAC,EAC7BH,GAAKG,EAAGqC,EAAIC,EAAIF,EAAI,IACrB,CACD,IAAKlC,EAAIA,EAAI,EAAGqC,EAAIhD,EAAI,EAAGgD,GAAKL,IAAMjC,EAAIhC,EAAE,IAAIsE,EAAGA,CAAC,EAAGxC,EAAIsC,EAAIpC,EAAGD,EAAIsC,EAAIrC,EAAG,GAAKF,EAAIC,EAAIoC,GAAKnE,EAAE,IAAIsE,EAAI,EAAGA,CAAC,EAAItE,EAAE,IAAIsE,EAAGA,EAAI,CAAC,EAAGzC,EAAI7B,EAAE,IAAIsE,EAAI,EAAGA,EAAI,CAAC,EAAItC,EAAIF,EAAIC,EAAGD,EAAI9B,EAAE,IAAIsE,EAAI,EAAGA,EAAI,CAAC,EAAGvC,EAAI,KAAK,IAAI,CAAC,EAAI,KAAK,IAAIF,CAAC,EAAI,KAAK,IAAIC,CAAC,EAAG,EAAI,EAAIC,EAAGF,EAAIA,EAAIE,EAAGD,EAAIA,EAAIC,EAAG,EAAEuC,IAAML,GAAK,KAAK,IAAIjE,EAAE,IAAIsE,EAAGA,EAAI,CAAC,CAAC,GAAK,KAAK,IAAIzC,CAAC,EAAI,KAAK,IAAIC,CAAC,GAAKH,GAAK,KAAK,IAAI,CAAC,GAAK,KAAK,IAAI3B,EAAE,IAAIsE,EAAI,EAAGA,EAAI,CAAC,CAAC,EAAI,KAAK,IAAItC,CAAC,EAAI,KAAK,IAAIhC,EAAE,IAAIsE,EAAI,EAAGA,EAAI,CAAC,CAAC,OACjbA,IACF,IAAKpC,EAAIoC,EAAI,EAAGpC,GAAKZ,EAAGY,IACtBlC,EAAE,IAAIkC,EAAGA,EAAI,EAAG,CAAC,EAAGA,EAAIoC,EAAI,GAAKtE,EAAE,IAAIkC,EAAGA,EAAI,EAAG,CAAC,EACpD,IAAKE,EAAIkC,EAAGlC,GAAKd,EAAI,IAAMkG,EAAIpF,IAAMd,EAAI,EAAGc,IAAMkC,IAAM,EAAItE,EAAE,IAAIoC,EAAGA,EAAI,CAAC,EAAGP,EAAI7B,EAAE,IAAIoC,EAAI,EAAGA,EAAI,CAAC,EAAGN,EAAI0F,EAAIxH,EAAE,IAAIoC,EAAI,EAAGA,EAAI,CAAC,EAAI,EAAGgC,EAAI,KAAK,IAAI,CAAC,EAAI,KAAK,IAAIvC,CAAC,EAAI,KAAK,IAAIC,CAAC,EAAGsC,IAAM,IAAM,EAAI,EAAIA,EAAGvC,EAAIA,EAAIuC,EAAGtC,EAAIA,EAAIsC,IAAKA,IAAM,GAAIhC,IAC3O,GAAIL,EAAI,KAAK,KAAK,EAAI,EAAIF,EAAIA,EAAIC,EAAIA,CAAC,EAAG,EAAI,IAAMC,EAAI,CAACA,GAAIA,IAAM,EAAG,CACpE,IAAKK,IAAMkC,EAAItE,EAAE,IAAIoC,EAAGA,EAAI,EAAG,CAACL,EAAIqC,CAAC,EAAIH,IAAMK,GAAKtE,EAAE,IAAIoC,EAAGA,EAAI,EAAG,CAACpC,EAAE,IAAIoC,EAAGA,EAAI,CAAC,CAAC,EAAG,EAAI,EAAIL,EAAGqC,EAAI,EAAIrC,EAAGsC,EAAIxC,EAAIE,EAAGC,EAAIF,EAAIC,EAAGF,EAAIA,EAAI,EAAGC,EAAIA,EAAI,EAAGK,EAAIC,EAAGD,EAAI1C,EAAG0C,IACrK,EAAInC,EAAE,IAAIoC,EAAGD,CAAC,EAAIN,EAAI7B,EAAE,IAAIoC,EAAI,EAAGD,CAAC,EAAGqF,IAAM,EAAI,EAAI1F,EAAI9B,EAAE,IAAIoC,EAAI,EAAGD,CAAC,EAAGnC,EAAE,IAAIoC,EAAI,EAAGD,EAAGnC,EAAE,IAAIoC,EAAI,EAAGD,CAAC,EAAI,EAAIH,CAAC,GAAIhC,EAAE,IAAIoC,EAAGD,EAAGnC,EAAE,IAAIoC,EAAGD,CAAC,EAAI,EAAIiC,CAAC,EAAGpE,EAAE,IAAIoC,EAAI,EAAGD,EAAGnC,EAAE,IAAIoC,EAAI,EAAGD,CAAC,EAAI,EAAIkC,CAAC,EAChM,IAAKnC,EAAI,EAAGA,GAAK,KAAK,IAAIZ,EAAGc,EAAI,CAAC,EAAGF,IACnC,EAAIkC,EAAIpE,EAAE,IAAIkC,EAAGE,CAAC,EAAIiC,EAAIrE,EAAE,IAAIkC,EAAGE,EAAI,CAAC,EAAGoF,IAAM,EAAI,EAAIxF,EAAIhC,EAAE,IAAIkC,EAAGE,EAAI,CAAC,EAAGpC,EAAE,IAAIkC,EAAGE,EAAI,EAAGpC,EAAE,IAAIkC,EAAGE,EAAI,CAAC,EAAI,EAAIN,CAAC,GAAI9B,EAAE,IAAIkC,EAAGE,EAAGpC,EAAE,IAAIkC,EAAGE,CAAC,EAAI,CAAC,EAAGpC,EAAE,IAAIkC,EAAGE,EAAI,EAAGpC,EAAE,IAAIkC,EAAGE,EAAI,CAAC,EAAI,EAAIP,CAAC,EAChM,IAAKK,EAAI,EAAGA,GAAK,EAAGA,IAClB,EAAIkC,EAAIvE,EAAE,IAAIqC,EAAGE,CAAC,EAAIiC,EAAIxE,EAAE,IAAIqC,EAAGE,EAAI,CAAC,EAAGoF,IAAM,EAAI,EAAIxF,EAAInC,EAAE,IAAIqC,EAAGE,EAAI,CAAC,EAAGvC,EAAE,IAAIqC,EAAGE,EAAI,EAAGvC,EAAE,IAAIqC,EAAGE,EAAI,CAAC,EAAI,EAAIN,CAAC,GAAIjC,EAAE,IAAIqC,EAAGE,EAAGvC,EAAE,IAAIqC,EAAGE,CAAC,EAAI,CAAC,EAAGvC,EAAE,IAAIqC,EAAGE,EAAI,EAAGvC,EAAE,IAAIqC,EAAGE,EAAI,CAAC,EAAI,EAAIP,CAAC,CACjM,CACJ,CACF,CACD,GAAI,IAAM,EAAG,CACX,IAAKP,EAAI7B,EAAI,EAAG6B,GAAK,EAAGA,IACtB,GAAI,EAAI,EAAEA,CAAC,EAAGO,EAAInC,EAAE4B,CAAC,EAAGO,IAAM,EAC5B,IAAKoC,EAAI3C,EAAGtB,EAAE,IAAIsB,EAAGA,EAAG,CAAC,EAAGY,EAAIZ,EAAI,EAAGY,GAAK,EAAGA,IAAK,CAClD,IAAKiC,EAAInE,EAAE,IAAIkC,EAAGA,CAAC,EAAI,EAAGJ,EAAI,EAAGK,EAAI8B,EAAG9B,GAAKb,EAAGa,IAC9CL,EAAIA,EAAI9B,EAAE,IAAIkC,EAAGC,CAAC,EAAInC,EAAE,IAAImC,EAAGb,CAAC,EAClC,GAAI5B,EAAEwC,CAAC,EAAI,EACTF,EAAImC,EAAGpC,EAAID,UACJmC,EAAI/B,EAAGxC,EAAEwC,CAAC,IAAM,EAAIlC,EAAE,IAAIkC,EAAGZ,EAAG6C,IAAM,EAAI,CAACrC,EAAIqC,EAAI,CAACrC,GAAKH,EAAI,EAAE,GAAKyC,EAAIpE,EAAE,IAAIkC,EAAGA,EAAI,CAAC,EAAGmC,EAAIrE,EAAE,IAAIkC,EAAI,EAAGA,CAAC,EAAGL,GAAK,EAAEK,CAAC,EAAI,IAAM,EAAEA,CAAC,EAAI,GAAKxC,EAAEwC,CAAC,EAAIxC,EAAEwC,CAAC,EAAGgC,GAAKE,EAAIrC,EAAIC,EAAIF,GAAKD,EAAG7B,EAAE,IAAIkC,EAAGZ,EAAG4C,CAAC,EAAGlE,EAAE,IAC3MkC,EAAI,EACJZ,EACA,KAAK,IAAI8C,CAAC,EAAI,KAAK,IAAIpC,CAAC,GAAK,CAACF,EAAIqC,EAAID,GAAKE,GAAK,CAACrC,EAAIsC,EAAIH,GAAKlC,CAC/D,GAAGkC,EAAI,KAAK,IAAIlE,EAAE,IAAIkC,EAAGZ,CAAC,CAAC,EAAGK,EAAIuC,EAAIA,EAAI,EACzC,IAAK/B,EAAID,EAAGC,GAAKb,EAAGa,IAClBnC,EAAE,IAAImC,EAAGb,EAAGtB,EAAE,IAAImC,EAAGb,CAAC,EAAI4C,CAAC,CAChC,SACMrC,EAAI,EACX,IAAKoC,EAAI3C,EAAI,EAAG,KAAK,IAAItB,EAAE,IAAIsB,EAAGA,EAAI,CAAC,CAAC,EAAI,KAAK,IAAItB,EAAE,IAAIsB,EAAI,EAAGA,CAAC,CAAC,GAAKtB,EAAE,IAAIsB,EAAI,EAAGA,EAAI,EAAGO,EAAI7B,EAAE,IAAIsB,EAAGA,EAAI,CAAC,CAAC,EAAGtB,EAAE,IAAIsB,EAAI,EAAGA,EAAG,EAAEtB,EAAE,IAAIsB,EAAGA,CAAC,EAAI,GAAKtB,EAAE,IAAIsB,EAAGA,EAAI,CAAC,CAAC,IAAM,EAAIgI,GAAG,EAAG,CAACtJ,EAAE,IAAIsB,EAAI,EAAGA,CAAC,EAAGtB,EAAE,IAAIsB,EAAI,EAAGA,EAAI,CAAC,EAAI,EAAGO,CAAC,EAAG7B,EAAE,IAAIsB,EAAI,EAAGA,EAAI,EAAG,EAAE,CAAC,CAAC,EAAGtB,EAAE,IAAIsB,EAAI,EAAGA,EAAG,EAAE,CAAC,CAAC,GAAItB,EAAE,IAAIsB,EAAGA,EAAI,EAAG,CAAC,EAAGtB,EAAE,IAAIsB,EAAGA,EAAG,CAAC,EAAGY,EAAIZ,EAAI,EAAGY,GAAK,EAAGA,IAAK,CACnV,IAAKkF,EAAI,EAAGC,EAAI,EAAGlF,EAAI8B,EAAG9B,GAAKb,EAAGa,IAChCiF,EAAIA,EAAIpH,EAAE,IAAIkC,EAAGC,CAAC,EAAInC,EAAE,IAAImC,EAAGb,EAAI,CAAC,EAAG+F,EAAIA,EAAIrH,EAAE,IAAIkC,EAAGC,CAAC,EAAInC,EAAE,IAAImC,EAAGb,CAAC,EACzE,GAAI6C,EAAInE,EAAE,IAAIkC,EAAGA,CAAC,EAAI,EAAGxC,EAAEwC,CAAC,EAAI,EAC9BF,EAAImC,EAAGrC,EAAIsF,EAAGrF,EAAIsF,UACXpD,EAAI/B,EAAGxC,EAAEwC,CAAC,IAAM,GAAK,EAAIoH,GAAG,CAAClC,EAAG,CAACC,EAAGlD,EAAGtC,CAAC,EAAG7B,EAAE,IAAIkC,EAAGZ,EAAI,EAAG,EAAE,CAAC,CAAC,EAAGtB,EAAE,IAAIkC,EAAGZ,EAAG,EAAE,CAAC,CAAC,IAAM8C,EAAIpE,EAAE,IAAIkC,EAAGA,EAAI,CAAC,EAAGmC,EAAIrE,EAAE,IAAIkC,EAAI,EAAGA,CAAC,EAAGoF,IAAK,EAAEpF,CAAC,EAAI,IAAM,EAAEA,CAAC,EAAI,GAAKxC,EAAEwC,CAAC,EAAIxC,EAAEwC,CAAC,EAAIL,EAAIA,EAAG0F,GAAK,EAAErF,CAAC,EAAI,GAAK,EAAIL,EAAGyF,KAAM,GAAKC,IAAM,IAAMD,GAAI3F,EAAI,GAAK,KAAK,IAAIwC,CAAC,EAAI,KAAK,IAAItC,CAAC,EAAI,KAAK,IAAIuC,CAAC,EAAI,KAAK,IAAIC,CAAC,EAAI,KAAK,IAAIrC,CAAC,IAAK,EAAIsH,GACnUlF,EAAItC,EAAIE,EAAIoF,EAAIvF,EAAIwF,EACpBjD,EAAIrC,EAAIC,EAAIqF,EAAIxF,EAAIuF,EACpBE,GACAC,CACD,EAAEvH,EAAE,IAAIkC,EAAGZ,EAAI,EAAG,EAAE,CAAC,CAAC,EAAGtB,EAAE,IAAIkC,EAAGZ,EAAG,EAAE,CAAC,CAAC,EAAG,KAAK,IAAI8C,CAAC,EAAI,KAAK,IAAIpC,CAAC,EAAI,KAAK,IAAIH,CAAC,GAAK7B,EAAE,IACxFkC,EAAI,EACJZ,EAAI,GACH,CAAC8F,EAAIjD,EAAInE,EAAE,IAAIkC,EAAGZ,EAAI,CAAC,EAAIO,EAAI7B,EAAE,IAAIkC,EAAGZ,CAAC,GAAK8C,CAChD,EAAEpE,EAAE,IACHkC,EAAI,EACJZ,GACC,CAAC+F,EAAIlD,EAAInE,EAAE,IAAIkC,EAAGZ,CAAC,EAAIO,EAAI7B,EAAE,IAAIkC,EAAGZ,EAAI,CAAC,GAAK8C,CAChD,IAAK,EAAIkF,GACR,CAACxH,EAAIuC,EAAIrE,EAAE,IAAIkC,EAAGZ,EAAI,CAAC,EACvB,CAACS,EAAIsC,EAAIrE,EAAE,IAAIkC,EAAGZ,CAAC,EACnBU,EACAH,CACZ,EAAa7B,EAAE,IAAIkC,EAAI,EAAGZ,EAAI,EAAG,EAAE,CAAC,CAAC,EAAGtB,EAAE,IAAIkC,EAAI,EAAGZ,EAAG,EAAE,CAAC,CAAC,IAAK4C,EAAI,KAAK,IAAI,KAAK,IAAIlE,EAAE,IAAIkC,EAAGZ,EAAI,CAAC,CAAC,EAAG,KAAK,IAAItB,EAAE,IAAIkC,EAAGZ,CAAC,CAAC,CAAC,EAAGK,EAAIuC,EAAIA,EAAI,EACjI,IAAK/B,EAAID,EAAGC,GAAKb,EAAGa,IAClBnC,EAAE,IAAImC,EAAGb,EAAI,EAAGtB,EAAE,IAAImC,EAAGb,EAAI,CAAC,EAAI4C,CAAC,EAAGlE,EAAE,IAAImC,EAAGb,EAAGtB,EAAE,IAAImC,EAAGb,CAAC,EAAI4C,CAAC,CACtE,CACL,IAAKhC,EAAI,EAAGA,EAAIzC,EAAGyC,IACjB,GAAIA,EAAI,GAAKA,EAAI,EACf,IAAKC,EAAID,EAAGC,EAAI1C,EAAG0C,IACjBtC,EAAE,IAAIqC,EAAGC,EAAGnC,EAAE,IAAIkC,EAAGC,CAAC,CAAC,EAC7B,IAAKA,EAAI1C,EAAI,EAAG0C,GAAK,EAAGA,IACtB,IAAKD,EAAI,EAAGA,GAAK,EAAGA,IAAK,CACvB,IAAKF,EAAI,EAAGI,EAAI,EAAGA,GAAK,KAAK,IAAID,EAAG,CAAC,EAAGC,IACtCJ,EAAIA,EAAInC,EAAE,IAAIqC,EAAGE,CAAC,EAAIpC,EAAE,IAAIoC,EAAGD,CAAC,EAClCtC,EAAE,IAAIqC,EAAGC,EAAGH,CAAC,CACd,CACJ,CACH,CACA,SAASsH,GAAG7J,EAAGC,EAAG,EAAGG,EAAG,CACtB,IAAIG,EAAGsB,EACP,OAAO,KAAK,IAAI,CAAC,EAAI,KAAK,IAAIzB,CAAC,GAAKG,EAAIH,EAAI,EAAGyB,EAAI,EAAItB,EAAIH,EAAG,EAAEJ,EAAIO,EAAIN,GAAK4B,GAAI5B,EAAIM,EAAIP,GAAK6B,CAAC,IAAMtB,EAAI,EAAIH,EAAGyB,EAAIzB,EAAIG,EAAI,EAAG,EAAEA,EAAIP,EAAIC,GAAK4B,GAAItB,EAAIN,EAAID,GAAK6B,CAAC,EAClK,CACA,SAASiI,GAAG9J,EAAGC,EAAG,EAAG,CACnB,MAAMG,EAAIJ,EAAI,EAAGO,EAAIN,EAAI,EACzB,GAAI,EAAE,SAASG,CAAC,GAAK,SAASG,CAAC,GAAI,CACjC,MAAM2B,EAAI,CAAClC,EAAIC,EACf,OAAO,SAASiC,CAAC,EAAI,CAACA,CAAC,EAAIlC,GAAK,GAAKC,GAAK,EAAI,CAAC,CAAC,EAAI,CAAA,CACrD,CACD,MAAM4B,EAAItB,EAAIA,EAAI,EAAIH,EACtB,IAAI,EAAI,EACR,GAAI,SAASyB,CAAC,EAAG,CACf,GAAIA,EAAI,EACN,MAAO,GACT,GAAIA,GAAK,EACP,MAAO,CAAC,IAAOtB,CAAC,EAClB,EAAI,KAAQA,EAAIwJ,GAAG,KAAK,KAAKlI,CAAC,EAAGtB,CAAC,EACnC,MACC,EAAI,CAACA,EACP,MAAM,EAAIH,EAAI,EACd,OAAO,SAAS,CAAC,EAAI,EAAI,EAAI,CAAC,EAAG,CAAC,EAAI,CAAC,EAAG,CAAC,EAAI,CAAC,CAAC,CACnD,CACA,SAAS4J,GAAGhK,EAAGC,EAAG,EAAGG,EAAG,CACtB,MAAMG,EAAI,GAAK,EAAIH,GAAIyB,EAAI5B,GAAK,EAAIG,GAAI,EAAIJ,EAAII,EAChD,GAAI,EAAE,SAAS,CAAC,GAAK,SAASyB,CAAC,GAAK,SAAStB,CAAC,GAC5C,OAAOuJ,GAAG9J,EAAGC,EAAG,CAAC,EACnB,MAAM,EAAI,CAACM,EAAIA,EAAIsB,EAAGK,EAAI,CAACL,EAAItB,EAAI,EAAG4B,EAAI5B,EAAI,EAAIsB,EAAIA,EAAG,EAAI,EAAI,EAAIM,EAAID,EAAIA,EAAG,EAAI,GAAK3B,EAAI,EAAI2B,EACjG,GAAI,EAAI,EAAG,CACT,MAAME,EAAI,KAAK,KAAK,KAAQ,CAAC,EAAGC,EAAI,IAAO,EAC3C,MAAO,CAAC,KAAK,KAAKA,EAAID,CAAC,EAAI,KAAK,KAAKC,EAAID,CAAC,EAAI7B,CAAC,CACnD,SAAa,GAAK,EAAG,CACjB,MAAM6B,EAAI2H,GAAG,KAAK,KAAK,CAAC,CAAC,EAAG,CAAC,EAC7B,MAAO,CAAC3H,EAAI7B,EAAG,GAAK6B,EAAI7B,CAAC,CAC7B,KAAS,CACL,MAAM6B,EAAI,KAAK,MAAM,KAAK,KAAK,CAAC,EAAG,CAAC,CAAC,EAAI,EAAGC,EAAI,KAAK,IAAID,CAAC,EAAGE,EAAI,KAAK,IAAIF,CAAC,EAAI,KAAK,KAAK,CAAC,EAAGG,EAAI,IAAO,CAACF,EAAIC,GAAIE,EAAI,IAAO,CAACH,EAAIC,GAAIG,EAAI,EAAI,KAAK,KAAK,CAAC,CAAC,EACzJ,MAAO,CAACA,EAAIJ,EAAI9B,EAAGkC,EAAIF,EAAIhC,EAAGkC,EAAID,EAAIjC,CAAC,CACxC,CACH,CACA,SAAS0J,GAAGjK,EAAGC,EAAG,EAAGG,EAAGG,EAAG,CACzB,GAAIA,GAAK,EACP,OAAOyJ,GAAGhK,EAAGC,EAAG,EAAGG,CAAC,EACtB,MAAMyB,EAAIzB,EAAIG,EAAG,EAAI,EAAIA,EAAG,EAAIN,EAAIM,EAAG2B,EAAIlC,EAAIO,EAC/C,IAAI4B,EAAI+H,GAAGrI,EAAG,EAAG,EAAGK,EAAG,EAAE,EACzB,GAAIC,IAAM,KACR,OAAOA,EACT,MAAM,EAAI,OACV,QAAS,EAAI,EAAG,EAAI,EAAG,IACrB,GAAIA,EAAI+H,GACNrI,EAAI,EACJ,GAAK,EAAI,GACT,GAAK,EAAI,EAAI,GACbK,GAAK,EAAI,EAAI,EAAI,GACjB,GAAK,CACX,EAAOC,IAAM,KAAM,CACb,QAASC,EAAI,EAAGA,EAAID,EAAE,OAAQC,IAC5BD,EAAEC,CAAC,GAAK,EACV,OAAOD,CACR,CACH,MAAO,EACT,CACA,SAASgI,GAAGnK,EAAGC,EAAG,CAChB,OAAOA,GAAK,EAAI,KAAK,IAAID,CAAC,EAAI,KAAK,KAAKA,EAAIC,GAAKA,CAAC,CACpD,CACA,SAASiK,GAAGlK,EAAGC,EAAG,EAAGG,EAAGG,EAAG,CACzB,MAAMsB,EAAIuI,GAAGpK,EAAGC,EAAG,EAAGG,EAAGG,CAAC,EAC1B,GAAIsB,IAAM,MAAQA,EAAE,QAAU,EAAG,CAC/B,IAAI,EAAI,CAAA,EACR,QAAS,EAAI,EAAG,EAAI,EAAG,IAAK,CAC1B,MAAMK,EAAIL,EAAE,EAAI,CAAC,EAAGM,EAAIN,EAAE,EAAI,EAAI,CAAC,EACnC,EAAI,EAAE,OAAOiI,GAAG3H,EAAGD,EAAG,CAAC,CAAC,CACzB,CACD,OAAO,CACR,CACD,OAAO,IACT,CACA,SAASkI,GAAGpK,EAAGC,EAAG,EAAGG,EAAGG,EAAG,CACzB,SAASsB,EAAEoG,EAAGC,EAAGC,EAAGC,EAAG,CACrB,MAAMC,EAAI8B,GAAGlC,EAAIE,EAAGnI,CAAC,EAAGsI,EAAI6B,GAAGjC,EAAID,EAAIE,EAAIC,EAAGnI,CAAC,EAAGsI,GAAI4B,GAAGjC,EAAIC,EAAIF,EAAIG,EAAG,CAAC,EACzE,OAAOC,EAAIC,EAAIC,EAChB,CACD,SAAS,EAAEN,EAAGC,EAAGC,EAAGC,EAAG,CACrB,OAAOvG,EAAEoG,EAAGC,EAAGC,EAAGC,CAAC,EAAI+B,GAAGjC,EAAIE,EAAGhI,CAAC,CACnC,CACD,MAAM,EAAI,EAAIJ,EAAIA,EAAI,GAAKC,EAAGiC,EAAI,GAAK,EAAI,GAAKjC,GAAK,EAAID,EAAI+J,GAAG,KAAK,KAAK,CAAC,EAAG/J,CAAC,GAAK,KAAQA,EAAGmC,EAAInC,EAAI,EAAIkC,EAAG,EAAIjC,EAAI,EAAIiC,GAAKlC,EAAI,EAAIkC,GAAI,EAAI,EAAIA,GAAK,EAAIjC,EAAIiC,GAAK,EAAIlC,EAAI,EAAIkC,IAAKE,EAAIhC,EAAI8B,GAAK,EAAIA,GAAKjC,EAAIiC,GAAKlC,EAAIkC,KACzN,IAAIG,EAAI,EAAGC,EAAI,EACf,MAAMC,EAAI,QACV,GAAIhC,EAAG,CACL,MAAM0H,EAAI9F,EAAII,EAAG2F,EAAI,EAAI3F,EAAG4F,EAAI,EAAI5F,EAAG6F,EAAIhG,EAAIG,EAC/CF,EAAI4F,EAAIE,EAAI,EAAI5F,EAAI6F,EAAI,EAAI,EAAIF,EAAIA,EAAG5F,GAAK2F,EAAIE,EAAI,EAAI5F,EAAI6F,EAAI,EAAI,EAAIF,EAAIA,IAAM,EAAI,GAAKA,EAAIC,GAAKA,EAAI5F,GAAK0F,EAAIA,EAAIG,CACtH,MACC/F,EAAIF,EAAI,EAAI,EAAIC,EAAI,EAAI,EAAI,EAAI,EAAGE,GAAKH,EAAI,EAAI,EAAIC,EAAI,EAAI,EAAI,EAAI,IAAM,EAAI,GAAK,EAAI,EAAI,EAAID,EAAIA,EAAIC,EACzG,GAAI,CAAC,SAASC,CAAC,GAAK,SAASC,CAAC,EAC5B,OAAO,KACT,IAAIE,EAAI6H,GAAGhI,EAAGC,CAAC,EACf/B,IAAMiC,GAAKD,GACX,MAAME,EAAIzC,EAAI,GAAK0C,EAAI,EAAI,EAAIzC,EAAI,GAAMuC,EAAGG,EAAI,EAAI3C,EAAI0C,EAAG8B,EAAI,EAAI,EAAIvE,EAAIuC,EAAIC,EAAIA,EAAGoC,EAAI,GAAMlC,EAAI6B,EAAGC,EAAI,GAAKrE,EAAIsC,EAAIA,GAAKC,EAAG+B,EAAI,GAAM/B,EAAI8B,EAC9I,IAAIE,EAAI,EAAGC,EAAI,EAAG+C,EAAI,EACtB,QAASM,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1B,MAAMC,EAAID,GAAK,EAAIvD,EAAIF,EAAG2D,EAAIF,GAAK,EAAIpD,EAAIJ,EAAG2D,EAAI+B,GAAGjC,EAAIzF,EAAIA,EAAI,EAAIC,EAAGzC,CAAC,EAAGoI,EAAI8B,GAAG,GAAKjC,EAAIC,EAAI1F,EAAIC,GAAI,CAAC,EAAG4F,EAAI6B,GAAGjC,EAAIC,EAAIA,EAAIzF,EAAIA,EAAGtC,CAAC,EAAGmI,GAAIH,EAAIC,EAAIC,GACrJL,GAAK,GAAKM,GAAIZ,KAAOhD,EAAIuD,EAAGtD,EAAIuD,EAAGR,EAAIY,GACzC,CACD,MAAMX,EAAIjD,EAAGkD,GAAIjD,EACjB,IAAIkD,EAAI,EAAGC,EAAI,EAAG,EAAI,EAAG,EAAI,EAC7B,GAAIH,EAAI,EAAG,CACT,MAAMK,EAAI,KAAK,KAAK,CAACL,CAAC,EACtB,GAAIE,EAAIrF,EAAIwF,EAAGF,EAAIrF,EAAIuF,EAAIJ,GAAG,EAAIpF,EAAIwF,EAAG,EAAIvF,EAAIuF,EAAIJ,GAAG,KAAK,IAAI,CAAC,EAAI,KAAK,IAAIE,CAAC,EAAI,EAAI3H,EAAI2H,EAAI,KAAK,IAAI,CAAC,EAAI,KAAK,IAAIA,CAAC,IAAMA,EAAI3H,EAAI,GAAI,KAAK,IAAI0H,CAAC,GAAK,KAAK,IAAI,CAAC,EAAG,CACpK,IAAII,EAAI,KAAMC,EAAI,KAClB,GAAI,KAAK,IAAIL,CAAC,EAAI,KAAK,IAAI,CAAC,EAAG,CAC7B,MAAMO,GAAK,EAAIN,EAAI,GAAK,EAAGO,GAAKrI,EAAI,EAAI8H,GAAK,EAC7CG,EAAI,CAAClI,EAAI,EAAGqI,EAAGC,CAAC,EAAGH,EAAI,CAAC,EAAG,EAAG,CAAC,CACvC,KAAa,CACL,MAAME,GAAK,EAAIP,EAAI,GAAKC,EAAGO,GAAKrI,EAAI,EAAI8H,GAAKD,EAAGS,GAAIvI,EAAI8H,EACxDI,EAAI,CAACJ,EAAGA,EAAGA,CAAC,EAAGK,EAAI,CAACI,GAAGF,EAAGC,CAAC,CAC5B,CACD,IAAIF,EAAI,EACR,QAASC,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1B,MAAMC,EAAIJ,EAAEG,CAAC,EAAGE,GAAIJ,EAAEE,CAAC,EACvB,GAAI,SAASC,CAAC,GAAK,SAASC,EAAC,EAAG,CAC9B,MAAMC,GAAK3G,EAAEyG,EAAGP,EAAGQ,GAAG,CAAC,GACtBF,GAAK,GAAKG,GAAKJ,KAAON,EAAIQ,EAAG,EAAIC,GAAGH,EAAII,GAC1C,CACF,CACF,CACL,SAAaZ,GAAK,EAAG,CACjB,MAAMK,EAAI7H,EAAIsC,EAAIA,EAClBoF,EAAIrF,EAAGsF,EAAIrF,EAAI,KAAK,KAAK,CAACuF,CAAC,EAAG,EAAIxF,EAAG,EAAIC,EAAI,KAAK,KAAK,CAACuF,CAAC,EAAG,KAAK,IAAIF,CAAC,EAAI,KAAK,IAAI,CAAC,EAAI,EAAI3H,EAAI2H,EAAI,KAAK,IAAI,CAAC,EAAI,KAAK,IAAIA,CAAC,IAAMA,EAAI3H,EAAI,EAC3I,KACC,OAAO,GACT,IAAI4H,GAAK,EAAEF,EAAGC,EAAG,EAAG,CAAC,EACrB,QAASE,EAAI,EAAGA,EAAI,GAAKD,IAAM,EAAGC,IAAK,CACrC,MAAMC,EAAIH,EAAI,EAAI3H,EAAG+H,EAAIJ,EAAI,EAAID,EAAI,EAAI,EAAGM,EAAIL,EAAID,EAAI,EAAI,EAAI7H,EAAGoI,EAAIP,EAAI,EAAI9H,EAAGsI,EAAIR,EAAI,EAAGS,GAAIR,EAAIA,EAAIA,GAAK,EAAIO,EAAI,EAAI,GAAK,GAAKR,EAAIQ,EAAI,GAC5I,GAAIC,IAAK,EACP,MACF,MAAMC,GAAK,EAAID,GAAGE,GAAI,EAAIV,EAAGW,GAAKX,EAAI,EAAID,EAAI,EAAGa,GAAKL,EAAIJ,EAAIO,GAAIN,EAAIO,GAAKN,GAAKL,EAAIU,GAAIX,EAAIY,IAAML,EAAGO,IAAMd,EAAIQ,EAAIG,IAAKP,EAAIH,GAAKO,EAAIH,EAAIM,GAAIL,EAAIM,GAAKL,GAAIQ,GAAK,CAACP,EAAIJ,EAAIO,GAAIN,EAAIO,GAAKN,GAAK,EAAIM,GAAK,EAAID,IAAKJ,EAAGS,GAAK,EAAE,EAAIR,EAAIG,IAAKP,EAAI,GAAKI,EAAIH,EAAIM,GAAIL,EAAIM,GAAKL,GAAIU,GAAKjB,EAAIU,GAAKG,GAAIK,GAAKjB,EAAIS,GAAKI,GAAIK,GAAK,EAAIT,GAAKK,GAAIK,GAAK,EAAIV,GAAKM,GAAIK,GAAK,EAAEJ,GAAIC,GAAIC,GAAIC,EAAE,EAClW,GAAIC,GAAKnB,GACPF,EAAIiB,GAAIhB,EAAIiB,GAAI,EAAIC,GAAI,EAAIC,GAAIlB,GAAKmB,OAErC,MACH,CACD,MAAO,CAACrB,EAAGC,EAAG,EAAG,CAAC,CACpB,CACA,SAASsC,GAAGrK,EAAGC,EAAG,CAChB,MAAM,EAAI,mBAAsBD,EAAGI,EAAI,GAAMH,EAC7C,IAAIM,EAAGsB,EAAI,KACX,IAAK,KAAK,IAAI,CAAC,GAAK,OAAS,KAAK,IAAIzB,CAAC,GAAK,SAAW,KAAK,IAAI,CAAC,EAAI,KAAK,IAAIA,CAAC,EAAIyB,EAAI,EAAI,GAAK,EAAIzB,IAAM,EAAIA,GAAKyB,EAAI,KAAK,KAAK,CAAC,GAAKzB,EAAI,GAAKA,EAAI,GAAK,EAAI,IAAKyB,IAAM,MAAQzB,GAAK,EACnLJ,EAAI,EAAIO,EAAI,EAAIA,EAAI,KAAK,KAAK,CAACP,CAAC,UACzB6B,IAAM,KAAOA,EAAI,EAAIzB,EAAIA,EAAI,EAAI,EAAI,EAAG,CAC/C,MAAM+B,EAAIN,IAAM,KAAOzB,EAAI,EAAI,KAAK,KAAK,CAAC,EAAIA,EAAI,KAAK,KAAK,EAAI,EAAI,CAAC,EACrEG,EAAI,GAAK,KAAK,KAAK,CAAC,EAAIwJ,GAAG,KAAK,IAAI,KAAK,KAAK,KAAK,IAAI5H,CAAC,CAAC,GAAK,EAAI,EAAE,EAAGA,CAAC,CAC5E,KAAS,CACL,IAAIA,EACJN,IAAM,KAAO,KAAK,IAAI,CAAC,EAAI,KAAK,IAAIzB,CAAC,EAAI+B,EAAI,CAAC/B,GAAK,EAAI,KAAK,KAAKyB,CAAC,GAAKM,EAAI,CAAC/B,EAAI2J,GAAG,KAAK,KAAK,KAAK,IAAI,CAAC,CAAC,EAAI,EAAI,KAAK,KAAKlI,CAAC,EAAGzB,CAAC,EAAI+B,EAAI,KAAK,KAAK,CAAC/B,EAAI2J,GAAG,KAAK,KAAK3J,EAAIA,EAAI,EAAI,EAAI,CAAC,EAAGA,CAAC,CAAC,EACzL,MAAM,EAAI+B,GAAK,EAAI,EAAI,EAAIA,EAC3B5B,EAAI4B,EAAI,CACT,CACD,IAAI,EAAI5B,EAAG,GAAK,EAAI,EAAIP,GAAK,EAAIC,EAEjC,GAAI,KAAK,IAAI,CAAC,EADJ,WACY,KAAK,IAAI,EAAI,EAAI,EAAGD,EAAI,EAAGC,CAAC,EAChD,OAAO,EACT,QAASkC,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1B,MAAM,EAAI,EAAI,EAAI,EAAInC,EACtB,GAAI,GAAK,EACP,MACF,MAAM,EAAI,EAAI,EAAI,EAAGoC,GAAK,EAAI,EAAIpC,GAAK,EAAIC,EAC3C,GAAImC,GAAK,EACP,OAAO,EACT,GAAI,KAAK,IAAIA,CAAC,GAAK,KAAK,IAAI,CAAC,EAC3B,MACF,EAAI,EAAG,EAAIA,CACZ,CACD,OAAO,CACT,CACA,SAAS2H,GAAG/J,EAAGC,EAAG,CAChB,MAAM,EAAI,KAAK,IAAID,CAAC,EACpB,OAAOC,EAAI,EAAI,CAAC,EAAI,CACtB,CACA,SAASqK,GAAGtK,EAAGC,EAAI,KAAM,CACvB,GAAID,EAAEA,EAAE,OAAS,CAAC,GAAK,EACrB,OAAOsK,GAAGtK,EAAE,MAAM,EAAG,EAAE,EAAGC,CAAC,EAC7B,MAAM,EAAI,IAAIyH,EAAE,CACd1H,EAAE,MAAM,EAAG,EAAE,EAAE,QAAO,EAAG,IAAKO,GAAM,CAACA,EAAIP,EAAEA,EAAE,OAAS,CAAC,CAAC,EACxD,GAAG,MAAM,KAAK,CAAE,OAAQA,EAAE,OAAS,CAAG,EAAE,CAACO,EAAGsB,IAAM,CAChD,MAAM,EAAI,IAAI,MAAM7B,EAAE,OAAS,CAAC,EAAE,KAAK,CAAC,EACxC,OAAO,EAAE6B,CAAC,EAAI,EAAG,CACvB,CAAK,CACF,CAAA,EAAGzB,EAAI,IAAIoJ,GAAG,CAAC,EAChB,OAAOpJ,EAAE,gBAAgB,OACvB,CAACG,EAAGsB,IAAM,KAAK,IAAIzB,EAAE,qBAAqByB,CAAC,CAAC,EAAI5B,CACpD,CACA,CACA,MAAMsK,GAAK,CAACvK,EAAGC,EAAG,IAAM,CAACD,EAAE,CAAC,GAAK,EAAI,GAAKC,EAAE,CAAC,EAAI,EAAGD,EAAE,CAAC,GAAK,EAAI,GAAKC,EAAE,CAAC,EAAI,CAAC,EAC7E,SAASuK,GAAGxK,EAAG,CACb,MAAMC,EAAI,CAAA,EACV,QAAS,EAAI,EAAG,EAAID,EAAE,OAAS,EAAG,IAChCC,EAAE,KAAK,CAACD,EAAE,CAAC,EAAGA,EAAE,EAAI,CAAC,CAAC,CAAC,EACzB,OAAOC,CACT,CACA,SAASwK,GAAGzK,EAAGC,EAAG,CAChB,MAAM,EAAIuK,GAAGxK,CAAC,EAAE,IAAI,CAAC,CAACI,EAAGG,CAAC,IAAMgK,GAAGnK,EAAGG,EAAGN,CAAC,CAAC,EAC3C,OAAOD,EAAE,SAAW,EAAI,CAAC,CAAC,EAAI,CAAC,GAAGyK,GAAG,EAAGxK,CAAC,EAAG,CAAC,CAC/C,QACA,MAAMyK,WAAWvH,EAAG,CAClB,YAAYF,EAAG7C,EAAG,EAAGyB,EAAG,CACtB,MAAMoB,EAAG7C,CAAC,EACVF,EAAE,KAAM,cAAe,cAAc,EACrCA,EAAE,KAAM,mBAAmB,EAC3BA,EAAE,KAAM,kBAAkB,EAC1BA,EAAE,KAAM,eAAgB,IAAI,EAC5BA,EAAE,KAAM,0BAA2B,IAAI,EACvC,KAAK,kBAAoB,EAAG,KAAK,iBAAmB2B,CACrD,CACD,IAAI,UAAW,CACb,OAAO,KAAK,WAAW,EAAG,CAC3B,CACD,IAAI,aAAc,CAChB,GAAI,KAAK,eAAiB,KAAM,CAC9B,MAAMoB,EAAK7C,GAAM,CACf,KAAM,CAAC,EAAGyB,EAAGuB,EAAGC,CAAC,EAAI,CACnB,KAAK,WAAWjD,CAAC,EACjB,KAAK,kBAAkBA,CAAC,EACxB,KAAK,iBAAiBA,CAAC,EACvB,KAAK,UAAUA,CAAC,CAC1B,EAAW8B,EAAI,CAAC,EAAI,EAAIL,EAAI,EAAIuB,EAAIC,EAAG,EAAI,EAAI,EAAI,EAAIxB,EAAI,EAAIuB,EAAGE,EAAI,CAAC,EAAIzB,EACnE,OAAOiI,GAAGxG,EAAG,EAAGpB,CAAC,EAAE,OAChB6B,GAAMA,GAAK,CAAC,KAAK,WAAaA,GAAK,EAAI,KAAK,SACvD,CACA,EACM,KAAK,aAAevD,GAAG,CACrB,KAAK,WACL,GAAGyC,EAAE,CAAC,EAAE,IAAK7C,GAAM,KAAK,WAAWA,CAAC,CAAC,EACrC,GAAG6C,EAAE,CAAC,EAAE,IAAK7C,GAAM,KAAK,WAAWA,CAAC,CAAC,EACrC,KAAK,SACN,CAAA,EAAE,KAAK,KAAK,SAAS,CACvB,CACD,OAAO,KAAK,YACb,CACD,OAAQ,CACN,OAAO,IAAIsK,GACT,KAAK,WACL,KAAK,UACL,KAAK,kBACL,KAAK,gBACX,CACG,CACD,SAAU,CACR,OAAO,IAAIA,GACT,KAAK,UACL,KAAK,WACL,KAAK,iBACL,KAAK,iBACX,CACG,CACD,OAAOzH,EAAG,CACR,OAAOA,EAAE,cAAgB,eAAiB,GAAKnC,EAAE,KAAK,WAAYmC,EAAE,UAAU,GAAKnC,EAAE,KAAK,UAAWmC,EAAE,SAAS,GAAKnC,EAAE,KAAK,kBAAmBmC,EAAE,iBAAiB,GAAKnC,EAAE,KAAK,iBAAkBmC,EAAE,gBAAgB,CACnN,CACD,aAAaA,EAAG,CACd,MAAM1C,EAAIuE,GAAIjD,GAAMT,GAAG,KAAK,WAAWS,CAAC,EAAGoB,CAAC,EAAG,KAAK,SAAS,EAC7D,OAAO1C,EAAE,OAAS,CAAC,KAAK,WAAaA,EAAE,OAAS,EAAI,KAAK,UAAY,KAAK,IACxEc,EAAE,KAAK,WAAY4B,CAAC,EACpB5B,EAAE,KAAK,UAAW4B,CAAC,CACpB,EAAG,KAAK,KAAK1C,EAAE,IAAI,CACrB,CACD,YAAY0C,EAAG,CACb,GAAI,CAAC,KAAK,YAAY,SAASA,CAAC,EAC9B,MAAO,GACT,GAAI,CACF,MAAM7C,EAAI,KAAK,aAAa6C,CAAC,EAC7B,OAAO7C,GAAK,CAAC,KAAK,WAAaA,GAAK,EAAI,KAAK,SACnD,MAAY,CACN,MAAO,EACR,CACF,CACD,WAAW6C,EAAG,CACZ,MAAM7C,EAAI,EAAI6C,EAAG,EAAI7C,EAAIA,EAAGyB,EAAIoB,EAAIA,EAAGG,EAAI,EAAI,EAAGC,EAAI,EAAIjD,EAAI6C,EAAGf,EAAI,EAAIL,EAAG,EAAIb,EAAE,KAAK,kBAAmB,KAAK,UAAU,EAAGsC,EAAItC,EAAE,KAAK,iBAAkB,KAAK,iBAAiB,EAAG+C,EAAI/C,EAAE,KAAK,UAAW,KAAK,gBAAgB,EAC7N,MAAO,CACLoC,EAAI,EAAE,CAAC,EAAIC,EAAIC,EAAE,CAAC,EAAIpB,EAAI6B,EAAE,CAAC,EAC7BX,EAAI,EAAE,CAAC,EAAIC,EAAIC,EAAE,CAAC,EAAIpB,EAAI6B,EAAE,CAAC,CACnC,CACG,CACD,UAAUd,EAAG,CACX,MAAM7C,EAAI,KAAK,aAAa6C,CAAC,EAC7B,OAAOzB,EAAE,KAAK,WAAWpB,CAAC,CAAC,CAC5B,CACD,IAAI,qBAAsB,CACxB,OAAOoB,EAAER,EAAE,KAAK,kBAAmB,KAAK,UAAU,CAAC,CACpD,CACD,IAAI,oBAAqB,CACvB,OAAOQ,EAAER,EAAE,KAAK,iBAAkB,KAAK,SAAS,CAAC,CAClD,CACD,SAASiC,EAAG,CACV,MAAM7C,EAAI,KAAK,UAAU6C,CAAC,EAC1B,OAAOnB,GAAE1B,CAAC,CACX,CACD,kBAAkB6C,EAAG7C,EAAI,KAAM,CAC7B,MAAM,EAAI,CAAC,GAAG6C,CAAC,EACf,EAAE,KAAK,CAACG,EAAGC,IAAMD,EAAIC,CAAC,EACtB,IAAIxB,EAAI,CACN,cAAe,EACf,MAAO,EACP,GAAI,KAAK,WACT,GAAI,KAAK,kBACT,GAAI,KAAK,gBACf,EACI,OAAO,EAAE,QAAQ,CAACuB,EAAGC,IAAM,CACzB,GAAID,EAAIvB,EAAE,cAAgB,KAAK,UAC7B,MAAO,GACT,IAAIK,EAAI,GACRkB,EAAI,EAAI,KAAK,YAAclB,EAAI,IAC/B,MAAM,GAAKkB,EAAIvB,EAAE,gBAAkB,EAAIA,EAAE,eAAgByB,EAAImH,GAC3D,CACE5I,EAAE,GACFA,EAAE,GACFA,EAAE,GACF,KAAK,SACN,EACDK,EAAI,EAAI,CAChB,EAAS6B,EAAI7B,EAAI,KAAK,WAAa9B,GAAK,KAAO,OAASA,EAAE,IAAIgD,CAAC,IAAME,EAAE,CAAC,EAAE,CAAC,EAAGlB,EAAIkB,EAAE,CAAC,EAAE,CAAC,EAAGjB,EAAIiB,EAAE,CAAC,EAAE,CAAC,EAAG,EAAIA,EAAE,CAAC,EAAE,CAAC,EAAG,EAAIA,EAAE,CAAC,EAAE,CAAC,EAAGd,EAAI,IAAIkI,GAClI7I,EAAE,GACFkC,EACA1B,EACAD,CACR,EACM,OAAOP,EAAI,CACT,MAAO,EACP,cAAeuB,EACf,GAAIW,EACJ,GAAI,EACJ,GAAI,CACL,EAAEV,IAAM,EAAE,OAAS,GAAK,CAACnB,EAAI,CAC5BM,EACA,IAAIkI,GACF7I,EAAE,GACF,KAAK,UACLA,EAAE,GACFA,EAAE,EACH,CACF,EAAGW,CACV,CAAK,CACF,CACD,QAAQS,EAAG,CACT,IAAI7C,EACJ,GAAI,MAAM,QAAQ6C,CAAC,GAAKA,EAAE,SAAW,EACnC,MAAO,CAAC,IAAI,EACd,MAAM,QAAQA,EAAE,CAAC,CAAC,EAAI7C,EAAI6C,EAAI7C,EAAI,CAAC6C,CAAC,EACpC,MAAM,EAAI7C,EAAE,IAAKgD,GAAM,KAAK,aAAaA,CAAC,CAAC,EAAGvB,EAAI,IAAI,IACpD2B,GAAG,CAAC,EAAGpD,CAAC,CAAC,CACf,EACI,OAAO,KAAK,kBAAkB,EAAGyB,CAAC,CACnC,CACD,UAAUoB,EAAG,CACX,OAAO,IAAIyH,GACTzH,EAAE,UAAU,KAAK,UAAU,EAC3BA,EAAE,UAAU,KAAK,SAAS,EAC1BA,EAAE,UAAU,KAAK,iBAAiB,EAClCA,EAAE,UAAU,KAAK,gBAAgB,CACvC,CACG,CACD,WAAWA,EAAG,CACZ,MAAM7C,EAAI,EAAI6C,EAAG,EAAI7C,EAAIA,EAAGyB,EAAIoB,EAAIA,EAAGG,EAAI,EAAIhD,EAAGiD,EAAI,EAAI,EAAIJ,EAAGf,EAAI,EAAI9B,EAAIyB,EAAG,EAAIA,EAAIoB,EACxF,MAAO,CACLG,EAAI,KAAK,WAAW,CAAC,EAAIC,EAAI,KAAK,kBAAkB,CAAC,EAAInB,EAAI,KAAK,iBAAiB,CAAC,EAAI,EAAI,KAAK,UAAU,CAAC,EAC5GkB,EAAI,KAAK,WAAW,CAAC,EAAIC,EAAI,KAAK,kBAAkB,CAAC,EAAInB,EAAI,KAAK,iBAAiB,CAAC,EAAI,EAAI,KAAK,UAAU,CAAC,CAClH,CACG,CACD,IAAI,wBAAyB,CAC3B,GAAI,KAAK,0BAA4B,KAAM,CACzC,MAAMe,EAAK7C,GAAM,CACf,MAAM,EAAI,KAAK,WAAWA,CAAC,EAAGyB,EAAI,KAAK,kBAAkBzB,CAAC,EAAGgD,EAAI,KAAK,iBAAiBhD,CAAC,EAAGiD,EAAI,KAAK,UAAUjD,CAAC,EAAG8B,EAAI,CAAC,EAAI,EAAIL,EAAI,EAAIuB,EAAIC,EAAG,EAAI,EAAI,EAAI,EAAIxB,EAAI,EAAIuB,EAAGE,EAAI,GAAK,EAAI,EAAIzB,EAC1L,MAAO,CAAC,EAAGyB,EAAG,EAAGpB,CAAC,CAC1B,EACM,KAAK,wBAA0B,CAACe,EAAE,CAAC,EAAGA,EAAE,CAAC,CAAC,CAC3C,CACD,OAAO,KAAK,uBACb,CACD,UAAUA,EAAG,CACX,KAAM,CAAC7C,EAAG,EAAGyB,EAAGuB,CAAC,EAAI,KAAK,uBAAuB,CAAC,EAClD,OAAO4G,GAAG5J,EAAI6C,EAAG,EAAGpB,EAAGuB,CAAC,EAAE,OACvBC,GAAMA,GAAK,CAAC,KAAK,WAAaA,GAAK,EAAI,KAAK,SACnD,CACG,CACD,aAAaJ,EAAG,CACd,MAAM7C,EAAI,KAAK,UAAU6C,EAAE,CAAC,CAAC,EAC7B,GAAI7C,EAAE,SAAW,EACf,MAAM,IAAI,MAAM,2BAA2B,EAC7C,MAAM,EAAKgD,GAAM,KAAK,IAAI,KAAK,WAAWA,CAAC,EAAE,CAAC,EAAIH,EAAE,CAAC,CAAC,GAAK,KAAK,UAAWpB,EAAIzB,EAAE,KAAK,CAAC,EACvF,GAAIyB,IAAM,OACR,MAAM,IAAI,MAAM,2BAA2B,EAC7C,OAAOA,CACR,CACH,IACA,MAAM8I,WAAWxH,EAAG,CAClB,YAAYF,EAAG7C,EAAG,EAAGyB,EAAGuB,EAAGC,EAAGnB,EAAI,GAAI,CACpC,aAAc,EAAI,GAClB,WAAYoB,EAAI,KACjB,EAAG,GAAI,CACN,MAAML,EAAG7C,CAAC,EACVF,EAAE,KAAM,cAAe,aAAa,EAGpCA,EAAE,KAAM,YAAa,IAAI,EACzBA,EAAE,KAAM,aAAa,EACrBA,EAAE,KAAM,aAAa,EACrBA,EAAE,KAAM,QAAQ,EAChBA,EAAE,KAAM,WAAW,EACnBA,EAAE,KAAM,WAAW,EACnBA,EAAE,KAAM,gBAAiB,IAAI,EAC7BA,EAAE,KAAM,cAAc,EACtBA,EAAE,KAAM,oBAAoB,EAC5BA,EAAE,KAAM,cAAc,EACtBA,EAAE,KAAM,SAAS,EACjBA,EAAE,KAAM,iCAAiC,EACzCA,EAAE,KAAM,wCAAwC,EAChDA,EAAE,KAAM,kCAAkC,EAC1CA,EAAE,KAAM,aAAa,EACrBA,EAAE,KAAM,YAAY,EACpBA,EAAE,KAAM,aAAa,EACrB,KAAK,OAAS,EACd,MAAM6D,EAAIlC,GAAKuB,EACf,KAAK,YAAcW,EAAIlC,EAAIuB,EAAG,KAAK,YAAcW,EAAIX,EAAIvB,EACzD,MAAMO,EAAIkB,IAAM,MAAQD,EAAI1C,GAAK0C,EACjC,GAAI,KAAK,UAAYI,GACnBM,EAAI3B,EAAIA,EAAI,KAAK,GAAK,CACvB,EAAE,KAAK,UAAYF,EAAG,CAAC,EAAG,CACzB,GAAIpB,EAAEmC,EAAG7C,CAAC,EACR,MAAM,IAAI,MAAM,sCAAsC,EACxD,GAAI,CAAC,KAAK,iBAAiB6C,CAAC,EAC1B,MAAM,IAAI,MACR,eAAepC,EACboC,CACZ,CAAW,kCAAkC,KAAK,IAAI,EACtD,EACM,GAAI,CAAC,KAAK,iBAAiB7C,CAAC,EAC1B,MAAM,IAAI,MACR,cAAcS,EAAET,CAAC,CAAC,kCAAkC,KAAK,IAAI,EACvE,EACM,GAAI,KAAK,IAAI,KAAK,YAAc,KAAK,WAAW,EAAI,KAAK,UACvD,MAAM,IAAI,MACR,uDACV,CACK,CACF,CACD,IAAI,cAAe,CACjB,GAAI,KAAK,gBAAkB,KAAM,CAC/B,KAAM,CAAC6C,EAAG7C,CAAC,EAAI,KAAK,OAAQ,EAAI,KAAK,YAAc,KAAK,YAAayB,EAAI,KAAK,YAAc,KAAK,YAAauB,EAAI,KAAK,IAAI,KAAK,SAAS,EAAGC,EAAI,KAAK,IAAI,KAAK,SAAS,EAAGnB,EAAI,EAAImB,EAAIA,EAAIxB,EAAIuB,EAAIA,EAAG,EAAI,GAAKvB,EAAI,GAAKwB,EAAID,EAAGE,EAAI,EAAIF,EAAIA,EAAIvB,EAAIwB,EAAIA,EACtP,KAAK,cAAgB,CACnB,GAAInB,EACJ,GAAI,EACJ,GAAIoB,EACJ,EAAG,GAAKpB,EAAIe,EAAI,EAAI7C,EACpB,EAAG,GAAKkD,EAAIlD,EAAI,EAAI6C,EACpB,EAAGf,EAAIe,EAAIA,EAAI,EAAIA,EAAI7C,EAAIkD,EAAIlD,EAAIA,EAAI,EAAIyB,CACnD,CACK,CACD,OAAO,KAAK,aACb,CACD,IAAI,MAAO,CACT,MAAO,eAAehB,EAAE,KAAK,UAAU,CAAC,KAAKA,EAC3C,KAAK,SACX,CAAK,KAAKA,EAAE,KAAK,MAAM,CAAC,KAAK,KAAK,WAAW,KAAK,KAAK,WAAW,KAAK,KAAK,UAAYD,EAAE,KAAK,KAAK,UAAY,KAAO,KAAK,GACzH,CACD,SAAU,CACR,OAAO,IAAI+J,GACT,KAAK,UACL,KAAK,WACL,KAAK,OACL,KAAK,YACL,KAAK,YACL,KAAK,UACL,CAAC,KAAK,UACN,CAAE,aAAc,GAAI,WAAY,KAAO,CAC7C,CACG,CACD,OAAQ,CACN,OAAO,IAAIA,GACT,KAAK,WACL,KAAK,UACL,KAAK,OACL,KAAK,YACL,KAAK,YACL,KAAK,UACL,KAAK,UACL,CAAE,aAAc,GAAI,WAAY,KAAO,CAC7C,CACG,CACD,uBAAwB,CACtB,MAAM1H,EAAI,KAAK,IAAI,KAAK,SAAS,EAAG7C,EAAI,KAAK,YAAc,KAAK,YAAa,EAAI,CAAC,KAAK,KAAKA,EAAI6C,CAAC,EAAGpB,EAAI,KAAK,KAAKzB,EAAI6C,CAAC,EACvH,MAAO,CAAC,EAAG,KAAK,GAAK,EAAGpB,EAAG,KAAK,GAAKA,CAAC,EAAE,IAAKwB,GAAM,KAAK,aAAaA,CAAC,CAAC,EAAE,OAAQA,GAAM,KAAK,iBAAiBA,CAAC,CAAC,EAAE,IAAKA,GAAM,KAAK,WAAWA,CAAC,CAAC,CAC/I,CACD,IAAI,aAAc,CAChB,GAAI,KAAK,eAAiB,OAAQ,CAChC,MAAMJ,EAAI,KAAK,sBAAqB,EAAI7C,EAAI,CAC1C,KAAK,WACL,KAAK,UACL,GAAG6C,CACX,EACM,KAAK,aAAezC,GAAGJ,CAAC,EAAE,KAAK,KAAK,SAAS,CAC9C,CACD,OAAO,KAAK,YACb,CACD,IAAI,mBAAoB,CACtB,OAAO,KAAK,qBAAuB,SAAW,KAAK,mBAAqB,KAAK,KAC3E,KAAK,YAAc,KAAK,YAAc,KAAK,YAAc,KAAK,WACpE,GAAQ,KAAK,kBACV,CACD,IAAI,aAAc,CAChB,OAAO,KAAK,eAAiB,SAAW,KAAK,aAAe,KAAK,kBAAoB,KAAK,aAAc,KAAK,YAC9G,CACD,IAAI,QAAS,CACX,GAAI,KAAK,UAAY,OAAQ,CAC3B,MAAM6C,EAAI,KAAK,UACf,KAAK,QAAU,CACblC,EAAG,KAAK,OAAQI,EAAG8B,EAAG,KAAK,iBAAiB,CAAC,EAC7ClC,EAAG,KAAK,OAAQI,EAAG8B,EAAG,CAAC,KAAK,iBAAiB,CAAC,CACtD,CACK,CACD,OAAO,KAAK,OACb,CACD,IAAI,WAAY,CACd,OAAOxB,GAAG,EAAG,KAAK,SAAS,CAC5B,CACD,WAAWwB,EAAG,CACZ,MAAM7C,EAAI,KAAK,WAAa6C,EAAI,KAAK,YAAc,KAAK,UAAY,GAAK,GACzE,OAAO,KAAK,sCAAsC,UAAU,CAC1D,KAAK,YAAc,KAAK,IAAI7C,CAAC,EAC7B,KAAK,YAAc,KAAK,IAAIA,CAAC,CACnC,CAAK,CACF,CACD,aAAa6C,EAAG,CACd,GAAI,CAAC,KAAK,iBAAiBA,CAAC,EAC1B,MAAM,IAAI,MACR,SAASpC,EAAEoC,CAAC,CAAC,kCAAkC,KAAK,IAAI,EAChE,EACI,MAAM7C,EAAI,KAAK,aAAa,KAAK,WAAW6C,CAAC,CAAC,EAC9C,GAAI,CAAC,KAAK,iBAAiB7C,CAAC,EAC1B,MAAM,IAAI,MACR,SAASS,EAAEoC,CAAC,CAAC,sBAAsB,KAAK,IAAI,EACpD,EACI,OAAO7C,CACR,CACD,IAAI,UAAW,CACb,OAAO,KAAK,WAAW,EAAG,CAC3B,CACD,iBAAiB6C,EAAG,CAClB,MAAO,GAAIA,GAAK,CAAC,KAAK,WAAaA,GAAK,CAAC,KAAK,SAC/C,CACD,OAAOA,EAAG,CACR,OAAOnC,EAAE,KAAK,OAAQmC,EAAE,MAAM,GAAK,KAAK,IAAI,KAAK,YAAcA,EAAE,WAAW,EAAI,KAAK,WAAa,KAAK,IAAI,KAAK,YAAcA,EAAE,WAAW,EAAI,KAAK,YAAc,KAAK,IAAI,KAAK,UAAYA,EAAE,SAAS,EAAI,KAAK,WAAa,KAAK,IAAI,KAAK,IAAI,KAAK,UAAYA,EAAE,SAAS,EAAI,KAAK,EAAE,EAAI,KAAK,aAAenC,EAAE,KAAK,WAAYmC,EAAE,UAAU,GAAK,KAAK,YAAcA,EAAE,WAAanC,EAAE,KAAK,WAAYmC,EAAE,SAAS,GAAK,KAAK,YAAcA,EAAE,UAC7a,CACD,WAAWA,EAAG,CACZ,MAAM7C,EAAI,KAAK,+BAA+B,UAAU6C,CAAC,EAAG,EAAI,KAAK,MACnE7C,EAAE,CAAC,EAAI,KAAK,YACZA,EAAE,CAAC,EAAI,KAAK,WAClB,EACI,OAAOqD,GAAG,CAAC,CACZ,CACD,aAAaR,EAAG,CACd,OAAOS,GAAG,KAAK,WAAYD,GAAGR,CAAC,EAAG,KAAK,SAAS,EAAI,KAAK,UAC1D,CACD,iBAAiBA,EAAG,CAClB,KAAM,CAAC7C,EAAG,CAAC,EAAI,KAAK,OAAQyB,EAAIR,EAAE4B,EAAG7C,CAAC,EAAGgD,EAAI/B,EAAE4B,EAAG,CAAC,EACnD,OAAO,KAAK,IAAI,EAAI,KAAK,YAAcpB,EAAIuB,CAAC,EAAI,KAAK,SACtD,CACD,YAAYH,EAAG,CACb,OAAO,KAAK,iBAAiBA,CAAC,EAAI,KAAK,iBAAiB,KAAK,aAAa,KAAK,WAAWA,CAAC,CAAC,CAAC,EAAI,EAClG,CACD,aAAaA,EAAG,CACd,IAAI7C,EACJ,GAAIU,EAAEmC,EAAG,KAAK,MAAM,EAAI7C,EAAIW,EAC1B,KAAK,OACLI,EAAGW,GAAE,KAAK,SAAS,EAAG,KAAK,WAAW,CAC5C,EAAQ1B,EAAI,KAAK,sCAAsC,UACjDwK,GACE,KAAK,YACL,KAAK,YACL,KAAK,+BAA+B,UAAU3H,CAAC,CAChD,CACP,EAAO,KAAK,iBAAiB,KAAK,aAAa,KAAK,WAAWA,CAAC,CAAC,CAAC,EAC5D,OAAO5B,EAAE4B,EAAG7C,CAAC,EACf,GAAI4B,GAAGiB,EAAG,KAAK,UAAW,KAAK,MAAM,EAAG,CACtC,MAAM,EAAIQ,GACR,EAAI,KAAK,GAAK,KAAK,WAAWR,CAAC,CAChC,EAAEpB,EAAI,KAAK,aAAa,CAAC,EAC1B,GAAI,KAAK,iBAAiBA,CAAC,EACzB,OAAOR,EAAE4B,EAAG,KAAK,WAAWpB,CAAC,CAAC,CACjC,CACD,OAAO,KAAK,IACVR,EAAE4B,EAAG,KAAK,UAAU,EACpB5B,EAAE4B,EAAG,KAAK,SAAS,CACzB,CACG,CACD,IAAI,gCAAiC,CACnC,OAAO,KAAK,kCAAoC,SAAW,KAAK,gCAAkC,IAAIF,GAAG,EAAC,OAAO,CAAC,KAAK,SAAS,EAAE,UAAU,CAAC,KAAK,OAAO,CAAC,EAAG,CAAC,KAAK,OAAO,CAAC,CAAC,GAAI,KAAK,+BACtL,CACD,IAAI,uCAAwC,CAC1C,OAAO,KAAK,yCAA2C,SAAW,KAAK,uCAAyC,IAAIA,GAAG,EAAC,UAAU,KAAK,OAAO,CAAC,EAAG,KAAK,OAAO,CAAC,CAAC,EAAE,OAAO,KAAK,SAAS,GAAI,KAAK,sCACjM,CACD,IAAI,iCAAkC,CACpC,OAAO,KAAK,mCAAqC,SAAW,KAAK,iCAAmC,IAAIA,GAAC,EAAG,OAC1G,KAAK,SACX,GAAQ,KAAK,gCACV,CACD,IAAI,YAAa,CACf,OAAO,KAAK,cAAgB,SAAW,KAAK,YAAc,KAAK,WAAW,KAAK,UAAU,GAAI,KAAK,WACnG,CACD,IAAI,WAAY,CACd,OAAO,KAAK,aAAe,SAAW,KAAK,WAAa,KAAK,WAAW,KAAK,SAAS,GAAI,KAAK,UAChG,CACD,IAAI,YAAa,CACf,OAAO,KAAK,cAAgB,SAAW,KAAK,YAAcW,GACxD,KAAK,WACL,KAAK,UACL,KAAK,SACX,GAAQ,KAAK,WACV,CACD,SAAST,EAAG,CACV,MAAM7C,EAAI,KAAK,UAAU6C,CAAC,EAC1B,OAAO,KAAK,UAAYnB,GAAE1B,CAAC,EAAI2B,GAAG3B,CAAC,CACpC,CACD,WAAW6C,EAAG,CACZ,MAAM7C,EAAI,KAAK,WAAa6C,EAAI,KAAK,YAAc,KAAK,UAAY,GAAK,GAAI,EAAI,CAAC,KAAK,YAAc,KAAK,WAAa,KAAK,IAAI7C,CAAC,EAAGyB,EAAI,KAAK,YAAc,KAAK,WAAa,KAAK,IAAIzB,CAAC,EAAGgD,EAAI,KAAK,UAAY,CAAC,CAAC,EAAG,CAACvB,CAAC,EAAI,CAAC,EAAGA,CAAC,EAC/N,OAAO,KAAK,gCAAgC,UAAUuB,CAAC,CACxD,CACD,UAAUH,EAAG,CACX,MAAM7C,EAAI,KAAK,WAAW6C,CAAC,EAAG,EAAI,CAAC,KAAK,YAAc,KAAK,IAAI7C,CAAC,EAAGyB,EAAI,KAAK,YAAc,KAAK,IAAIzB,CAAC,EAAGgD,EAAI,KAAK,UAAY,CAAC,CAAC,EAAG,CAACvB,CAAC,EAAI,CAAC,EAAGA,CAAC,EAC5I,OAAOL,EAAE,KAAK,gCAAgC,UAAU4B,CAAC,CAAC,CAC3D,CACD,IAAI,qBAAsB,CACxB,MAAMH,EAAI,CAAC,KAAK,YAAc,KAAK,IAAI,KAAK,UAAU,EAAG7C,EAAI,KAAK,YAAc,KAAK,IAAI,KAAK,UAAU,EAAG,EAAI,KAAK,UAAY,CAAC,CAAC6C,EAAG,CAAC7C,CAAC,EAAI,CAAC6C,EAAG7C,CAAC,EAChJ,OAAOoB,EAAE,KAAK,gCAAgC,UAAU,CAAC,CAAC,CAC3D,CACD,IAAI,oBAAqB,CACvB,MAAMyB,EAAI,CAAC,KAAK,YAAc,KAAK,IAAI,KAAK,SAAS,EAAG7C,EAAI,KAAK,YAAc,KAAK,IAAI,KAAK,SAAS,EAAG,EAAI,KAAK,UAAY,CAAC,CAAC6C,EAAG,CAAC7C,CAAC,EAAI,CAAC6C,EAAG7C,CAAC,EAC9I,OAAOoB,EAAE,KAAK,gCAAgC,UAAU,CAAC,CAAC,CAC3D,CACD,UAAUyB,EAAG,CACX,MAAM7C,EAAI6C,EAAE,eAAe,KAAK,SAAS,EAAG,EAAIA,EAAE,cAClD,OAAO,IAAI0H,GACT1H,EAAE,UAAU,KAAK,UAAU,EAC3BA,EAAE,UAAU,KAAK,SAAS,EAC1BA,EAAE,UAAU,KAAK,MAAM,EACvB,KAAK,YAAc,EACnB,KAAK,YAAc,EACnB7C,EACA6C,EAAE,iBAAgB,EAAK,KAAK,UAAY,CAAC,KAAK,UAC9C,CAAE,WAAY,KAAO,CAC3B,CACG,CACD,QAAQA,EAAG,CACT,IAAI7C,EACJ,GAAI,MAAM,QAAQ6C,CAAC,GAAKA,EAAE,SAAW,EACnC,MAAO,CAAC,IAAI,EACd,MAAM,QAAQA,EAAE,CAAC,CAAC,EAAI7C,EAAI6C,EAAI7C,EAAI,CAAC6C,CAAC,EACpC,MAAMpB,EAAI,CAAC,EAAG,EAAG,GAAGzB,EAAE,IAAK8B,GAAM,KAAK,aAAaA,CAAC,CAAC,CAAC,EAAGkB,EAAI,IAAI,IAC/DI,GAAG,CAAC3B,EAAG,CAAC,KAAK,WAAY,KAAK,UAAW,GAAGzB,CAAC,CAAC,CAAC,CACrD,EACIyB,EAAE,KAAK,CAACK,EAAGC,IAAMD,EAAIC,CAAC,EACtB,IAAIkB,EAAI,KACR,OAAOxB,EAAE,QAAQ,CAACK,EAAGC,IAAM,CACzB,GAAIA,IAAMN,EAAE,OAAS,EACnB,MAAO,GACT,MAAMyB,EAAIzB,EAAEM,EAAI,CAAC,EACjB,GAAImB,EAAIpB,EAAI,KAAK,UACf,OAAOmB,IAAM,OAASA,EAAInB,GAAI,CAAA,EAChC,MAAM6B,EAAIV,IAAM,KAAOnB,EAAImB,EAAGjB,EAAI,IAAIuI,GACpCvH,EAAE,IAAIW,CAAC,GAAK,KAAK,WAAWA,CAAC,EAC7BX,EAAE,IAAIE,CAAC,GAAK,KAAK,WAAWA,CAAC,EAC7B,KAAK,OACL,KAAK,YACL,KAAK,YACL,KAAK,UACL,KAAK,UACL,CAAE,WAAY,KAAO,CAC7B,EACM,OAAOD,EAAI,KAAMjB,CACvB,CAAK,CACF,CACH,EACA,SAASyI,GAAG7K,EAAGC,EAAG,EAAGG,EAAGG,EAAGsB,EAAG,EAAG,CAC/B,KAAM,CAAE,OAAQ,EAAG,GAAIK,EAAG,GAAIC,CAAC,EAAK2I,GAClC9K,EACAC,EACA,EACAG,EACAG,EAAII,GACJ,CAACkB,EACD,CACJ,EACE,OAAO,KAAK,IAAIK,EAAIC,CAAC,EAAI,KAAO,IAAI2B,EAAG9D,EAAGC,EAAG,EAAG,CAAC,EAAI,IAAI0K,EAAG3K,EAAGC,EAAG,EAAGiC,EAAGC,EAAG5B,EAAG,CAAC,CACjF,CACA,SAASuK,GAAG,CAAC9K,EAAGC,CAAC,EAAG,CAAC,EAAGG,CAAC,EAAGG,EAAGsB,EAAG,EAAG,EAAGK,EAAG,CACzC,GAAI3B,EAAI,IAAMA,EAAI,CAACA,GAAIsB,EAAI,IAAMA,EAAI,CAACA,GAAItB,GAAK,GAAKsB,GAAK,EACvD,MAAM,MAAM,wBAAwB,EACtC,MAAMM,EAAI,KAAK,IAAI,CAAC,EAAG,EAAI,KAAK,IAAI,CAAC,EAAG,GAAKnC,EAAI,GAAK,EAAGoC,GAAKnC,EAAIG,GAAK,EAAGiC,GAAKrC,EAAI,GAAK,EAAGsC,GAAKrC,EAAIG,GAAK,EAAGmC,EAAI,EAAI,EAAIJ,EAAIC,EAAGI,EAAI,EAAIJ,EAAID,EAAI,EAAGM,EAAIF,EAAIA,GAAKhC,EAAIA,GAAKiC,EAAIA,GAAKX,EAAIA,GACrLY,EAAI,IAAMlC,EAAIA,EAAI,KAAK,KAAKkC,CAAC,EAAGZ,EAAIA,EAAI,KAAK,KAAKY,CAAC,GACnD,MAAMC,EAAInC,EAAIsB,EAAGc,EAAIpC,EAAIiC,EAAGgC,EAAI3C,EAAIU,EAAGsC,EAAIlC,EAAIA,EAAI6B,EAAIA,EACvD,GAAI,CAACK,EACH,MAAM,MAAM,0CAA0C,EACxD,IAAIJ,EAAI,KAAK,KAAK,KAAK,KAAK/B,EAAIA,EAAImC,GAAKA,CAAC,CAAC,EAC3C,GAAK3C,IAAMuC,EAAI,CAACA,GAChB,MAAMC,EAAID,EAAI9B,EAAId,EAAG8C,EAAI,CAACF,EAAID,EAAIjE,EAAGqE,EAAI,EAAIF,EAAIvC,EAAIwC,EAAItC,EAAGsF,EAAIxF,EAAIuC,EAAI,EAAIC,EAAIrC,EAChF,MAAO,CACL,OAAQ,CAACsC,EAAG+C,CAAC,EACb,GAAIpH,EACJ,GAAIsB,CACR,CACA,CACA,SAAS+I,GAAG5K,EAAGC,EAAG,EAAG,CACnB,MAAMG,EAAI,KAAK,IAAI,EAAE,CAAC,CAAC,EAAGG,EAAI,KAAK,IAAI,EAAE,CAAC,CAAC,EAC3C,IAAIsB,EAAI,KAAO,EAAI,KACnB,MAAM,EAAI7B,EAAGkC,EAAIjC,EACjB,QAASkC,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1B,MAAM,EAAI,EAAIN,EAAG,EAAIK,EAAI,EAAGE,GAAK,EAAI,EAAIF,EAAIA,GAAKL,GAAK,EAAI,EAAGQ,GAAKH,EAAIA,EAAI,EAAI,GAAK,GAAK,EAAIA,EAAGI,EAAI,EAAIF,EAAGG,EAAI,EAAIF,EAAGG,EAAIpC,EAAIgC,EAAGK,EAAIlC,EAAI8B,EAAGK,EAAI,KAAK,MAAMJ,EAAGC,CAAC,EAAGI,EAAI,KAAK,MAAMH,EAAGC,CAAC,EACrLZ,EAAI,KAAK,IAAI,EAAG,KAAK,IAAI,GAAIW,EAAIE,EAAIC,EAAIP,GAAK,CAAC,CAAC,EAAG,EAAI,KAAK,IAAI,EAAG,KAAK,IAAI,GAAIK,EAAIC,EAAIC,EAAIN,GAAKH,CAAC,CAAC,EACnG,MAAMsC,EAAI,KAAK,MAAM3C,EAAG,CAAC,EACzBA,GAAK2C,EAAG,GAAKA,CACd,CACD,MAAO,CAAC,EAAI3C,EAAI,KAAK,KAAK,EAAE,CAAC,CAAC,EAAGK,EAAI,EAAI,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,CAC1D,OACA,MAAM6I,WAAW5H,EAAG,CAClB,YAAYF,EAAG7C,EAAG,EAAG,CACnB,MAAM6C,EAAG7C,CAAC,EACVF,EAAE,KAAM,cAAe,kBAAkB,EACzCA,EAAE,KAAM,cAAc,EACtBA,EAAE,KAAM,eAAgB,IAAI,EAC5BA,EAAE,KAAM,0BAA2B,IAAI,EACvC,KAAK,aAAe,CACrB,CACD,IAAI,UAAW,CACb,OAAO,KAAK,WAAW,EAAG,CAC3B,CACD,IAAI,aAAc,CAChB,GAAI,KAAK,eAAiB,KAAM,CAC9B,MAAM+C,EAAK7C,GAAM,CACf,KAAM,CAAC,EAAGyB,EAAGuB,CAAC,EAAI,CAChB,KAAK,WAAWhD,CAAC,EACjB,KAAK,aAAaA,CAAC,EACnB,KAAK,UAAUA,CAAC,CACjB,EAAEiD,EAAI,EAAI,EAAIxB,EAAIuB,EACnB,GAAI,CAACC,EACH,MAAO,GACT,MAAMnB,GAAK,EAAIL,GAAKwB,EACpB,OAAOnB,GAAK,CAAC,KAAK,WAAaA,GAAK,EAAI,KAAK,UAAY,CAACA,CAAC,EAAI,CAAA,CACvE,EACM,KAAK,aAAe1B,GAAG,CACrB,KAAK,WAEL,GAAGyC,EAAE,CAAC,EAAE,IAAK7C,GAAM,KAAK,WAAWA,CAAC,CAAC,EACrC,GAAG6C,EAAE,CAAC,EAAE,IAAK7C,GAAM,KAAK,WAAWA,CAAC,CAAC,EACrC,KAAK,SACN,CAAA,EAAE,KAAK,KAAK,SAAS,CACvB,CACD,OAAO,KAAK,YACb,CACD,OAAQ,CACN,OAAO,IAAI2K,GACT,KAAK,WACL,KAAK,UACL,KAAK,YACX,CACG,CACD,SAAU,CACR,OAAO,IAAIA,GACT,KAAK,UACL,KAAK,WACL,KAAK,YACX,CACG,CACD,OAAO9H,EAAG,CACR,OAAOA,EAAE,cAAgB,mBAAqB,GAAKnC,EAAE,KAAK,WAAYmC,EAAE,UAAU,GAAKnC,EAAE,KAAK,UAAWmC,EAAE,SAAS,GAAKnC,EAAE,KAAK,aAAcmC,EAAE,YAAY,CAC7J,CACD,aAAaA,EAAG,CACd,MAAM1C,EAAIuE,GAAIjD,GAAMT,GAAG,KAAK,WAAWS,CAAC,EAAGoB,CAAC,EAAG,KAAK,SAAS,EAC7D,OAAO1C,EAAE,OAAS,CAAC,KAAK,WAAaA,EAAE,OAAS,EAAI,KAAK,UAAY,KAAK,IACxEc,EAAE,KAAK,WAAY4B,CAAC,EACpB5B,EAAE,KAAK,UAAW4B,CAAC,CACpB,EAAG,KAAK,KAAK1C,EAAE,IAAI,CACrB,CACD,YAAY0C,EAAG,CACb,GAAI,CAAC,KAAK,YAAY,SAASA,CAAC,EAC9B,MAAO,GACT,GAAI,CACF,MAAM7C,EAAI,KAAK,aAAa6C,CAAC,EAC7B,OAAO7C,GAAK,CAAC,KAAK,WAAaA,GAAK,EAAI,KAAK,SACnD,MAAY,CACN,MAAO,EACR,CACF,CACD,WAAW6C,EAAG,CACZ,MAAM7C,EAAK,GAAM,CACf,MAAMyB,EAAI,KAAK,WAAW,CAAC,EAAGuB,EAAI,KAAK,aAAa,CAAC,EAAGC,EAAI,KAAK,UAAU,CAAC,EAC5E,MAAO,IAAKJ,GAAKpB,EAAI,EAAIuB,EAAIC,GAAKxB,EAAIuB,EAC5C,EACI,MAAO,CAAChD,EAAE,CAAC,EAAGA,EAAE,CAAC,CAAC,CACnB,CACD,UAAU6C,EAAG,CACX,MAAM7C,EAAI,KAAK,aAAa6C,CAAC,EAC7B,OAAOzB,EAAE,KAAK,WAAWpB,CAAC,CAAC,CAC5B,CACD,IAAI,qBAAsB,CACxB,OAAOoB,EAAER,EAAE,KAAK,aAAc,KAAK,UAAU,CAAC,CAC/C,CACD,IAAI,oBAAqB,CACvB,OAAOQ,EAAER,EAAE,KAAK,aAAc,KAAK,SAAS,CAAC,CAC9C,CACD,SAASiC,EAAG,CACV,MAAM7C,EAAI,KAAK,UAAU6C,CAAC,EAC1B,OAAOnB,GAAE1B,CAAC,CACX,CACD,kBAAkB6C,EAAG7C,EAAI,KAAM,CAC7B,MAAM,EAAI,CAAC,GAAG6C,CAAC,EACf,EAAE,KAAK,CAACG,EAAGC,IAAMD,EAAIC,CAAC,EACtB,IAAIxB,EAAI,CACN,cAAe,EACf,MAAO,EACP,GAAI,KAAK,WACT,GAAI,KAAK,YACf,EACI,OAAO,EAAE,QAAQ,CAACuB,EAAGC,IAAM,CACzB,GAAID,EAAIvB,EAAE,cAAgB,KAAK,UAC7B,MAAO,GACT,IAAIK,EAAI,GACRkB,EAAI,EAAI,KAAK,YAAclB,EAAI,IAC/B,MAAM,GAAKkB,EAAIvB,EAAE,gBAAkB,EAAIA,EAAE,eAAgByB,EAAImH,GAC3D,CAAC5I,EAAE,GAAIA,EAAE,GAAI,KAAK,SAAS,EAC3BK,EAAI,EAAI,CACT,EAAE6B,EAAI7B,EAAI,KAAK,WAAa9B,GAAK,KAAO,OAASA,EAAE,IAAIgD,CAAC,IAAME,EAAE,CAAC,EAAE,CAAC,EAAGlB,EAAIkB,EAAE,CAAC,EAAE,CAAC,EAAGjB,EAAIiB,EAAE,CAAC,EAAE,CAAC,EAAG,EAAI,IAAIyH,GACxGlJ,EAAE,GACFkC,EACA3B,CACR,EACM,OAAOP,EAAI,CACT,MAAO,EACP,cAAeuB,EACf,GAAIW,EACJ,GAAI1B,CACL,EAAEgB,IAAM,EAAE,OAAS,GAAK,CAACnB,EAAI,CAC5B,EACA,IAAI6I,GACFlJ,EAAE,GACF,KAAK,UACLA,EAAE,EACH,CACF,EAAG,CACV,CAAK,CACF,CACD,QAAQoB,EAAG,CACT,IAAI7C,EACJ,GAAI,MAAM,QAAQ6C,CAAC,GAAKA,EAAE,SAAW,EACnC,MAAO,CAAC,IAAI,EACd,MAAM,QAAQA,EAAE,CAAC,CAAC,EAAI7C,EAAI6C,EAAI7C,EAAI,CAAC6C,CAAC,EACpC,MAAM,EAAI7C,EAAE,IAAKgD,GAAM,KAAK,aAAaA,CAAC,CAAC,EAAGvB,EAAI,IAAI,IACpD2B,GAAG,CAAC,EAAGpD,CAAC,CAAC,CACf,EACI,OAAO,KAAK,kBAAkB,EAAGyB,CAAC,CACnC,CACD,UAAUoB,EAAG,CACX,OAAO,IAAI8H,GACT9H,EAAE,UAAU,KAAK,UAAU,EAC3BA,EAAE,UAAU,KAAK,SAAS,EAC1BA,EAAE,UAAU,KAAK,YAAY,CACnC,CACG,CACD,WAAWA,EAAG,CACZ,MAAM7C,EAAI,EAAI6C,EAAG,EAAI7C,EAAIA,EAAGyB,EAAI,EAAIzB,EAAI6C,EAAGG,EAAIH,EAAIA,EACnD,MAAO,CACL,EAAI,KAAK,WAAW,CAAC,EAAIpB,EAAI,KAAK,aAAa,CAAC,EAAIuB,EAAI,KAAK,UAAU,CAAC,EACxE,EAAI,KAAK,WAAW,CAAC,EAAIvB,EAAI,KAAK,aAAa,CAAC,EAAIuB,EAAI,KAAK,UAAU,CAAC,CAC9E,CACG,CACD,IAAI,wBAAyB,CAC3B,GAAI,KAAK,0BAA4B,KAAM,CACzC,MAAMH,EAAK7C,GAAM,CACf,MAAM,EAAI,KAAK,WAAWA,CAAC,EAAGyB,EAAI,KAAK,aAAazB,CAAC,EAAGgD,EAAI,KAAK,UAAUhD,CAAC,EAAGiD,EAAI,EAAI,EAAIxB,EAAIuB,EAAGlB,EAAI,GAAKL,EAAI,GAC/G,MAAO,CAAC,EAAGK,EAAGmB,CAAC,CACvB,EACM,KAAK,wBAA0B,CAACJ,EAAE,CAAC,EAAGA,EAAE,CAAC,CAAC,CAC3C,CACD,OAAO,KAAK,uBACb,CACD,UAAUA,EAAG,CACX,KAAM,CAAC7C,EAAG,EAAGyB,CAAC,EAAI,KAAK,uBAAuB,CAAC,EAC/C,OAAOiI,GAAG1J,EAAI6C,EAAG,EAAGpB,CAAC,EAAE,OACpBuB,GAAMA,GAAK,CAAC,KAAK,WAAaA,GAAK,EAAI,KAAK,SACnD,CACG,CACD,aAAaH,EAAG,CACd,MAAM7C,EAAI,KAAK,UAAU6C,EAAE,CAAC,CAAC,EAC7B,GAAI7C,EAAE,SAAW,EACf,MAAM,IAAI,MAAM,4BAA4B,EAC9C,MAAM,EAAKgD,GAAM,KAAK,IAAI,KAAK,WAAWA,CAAC,EAAE,CAAC,EAAIH,EAAE,CAAC,CAAC,GAAK,KAAK,UAAWpB,EAAIzB,EAAE,KAAK,CAAC,EACvF,GAAIyB,IAAM,OACR,MAAM,IAAI,MAAM,2BAA2B,EAC7C,OAAOA,CACR,CACH,ECthHA,IAAImJ,GAAK,OAAO,eACZC,GAAK,CAAC7K,EAAGH,EAAG,IAAMA,KAAKG,EAAI4K,GAAG5K,EAAGH,EAAG,CAAE,WAAY,GAAI,aAAc,GAAI,SAAU,GAAI,MAAO,CAAC,CAAE,EAAIG,EAAEH,CAAC,EAAI,EAC3G6H,GAAI,CAAC1H,EAAGH,EAAG,KAAOgL,GAAG7K,EAAG,OAAOH,GAAK,SAAWA,EAAI,GAAKA,EAAG,CAAC,EAAG,GAEnE,SAASiL,GAAG9K,EAAGH,EAAG,CAChB,MAAM,EAAIkL,EAAElL,EAAGG,EAAE,UAAU,EAAG,EAAIgL,GAAG,EAAGhL,EAAE,CAAC,EAAIA,EAAE,aACjD,OAAOA,EAAE,WAAW,CAAC,CACvB,CACA,SAASwF,GAAExF,EAAGH,EAAG,EAAG,CAClB,MAAM,EAAI,GAAKG,EAAE,UAAWyB,EAAIqJ,GAAG9K,EAAGH,EAAE,MAAM,EAAGmD,EAAI0F,EAAGjH,EAAG5B,EAAE,MAAM,EACnE,GAAImD,EAAInD,EAAE,OAAS,EACjB,MAAO,GACT,GAAI,KAAK,IAAImD,EAAInD,EAAE,MAAM,EAAI,EAAG,CAC9B,MAAMqD,EAAIzB,EACV,OAAOzB,EAAE,YAAYkD,CAAC,GAAKrD,EAAE,YAAYqD,CAAC,EAAI,CAACA,CAAC,EAAI,EACrD,CACD,MAAMtD,EAAI,CAAA,EAAImC,EAAI,KAAK,KACrBlC,EAAE,OAASA,EAAE,OAASmD,EAAIA,CAC3B,EAAEW,EAAI3D,EAAE,oBAAqB,EAAI6H,EAAEpG,EAAG+F,EAAE7D,EAAG5B,CAAC,CAAC,EAC9C/B,EAAE,YAAY,CAAC,GAAKH,EAAE,YAAY,CAAC,GAAKD,EAAE,KAAK,CAAC,EAChD,MAAMyC,EAAIwF,EAAEpG,EAAG+F,EAAE7D,EAAG,CAAC5B,CAAC,CAAC,EACvB,OAAO/B,EAAE,YAAYqC,CAAC,GAAKxC,EAAE,YAAYwC,CAAC,GAAKzC,EAAE,KAAKyC,CAAC,EAAGzC,CAC5D,CACA,MAAMqL,GAAMjL,GAAM,CAChB,KAAM,CAAE,WAAYH,EAAG,UAAW,EAAG,OAAQ,EAAG,UAAW4B,CAAG,EAAGzB,EACjE,OAAO,IAAIkL,EAAE,EAAGrL,EAAG,EAAG4B,EAAG,CACvB,aAAc,EAClB,CAAG,CACH,EAAG0J,GAAK,CAACnL,EAAGH,IAAM,CAChB,GAAIG,EAAE,OAAOH,CAAC,EACZ,MAAO,CAACG,CAAC,EACX,MAAM,EAAImI,GACR,CACEtI,EAAE,YAAYG,EAAE,UAAU,EAAIA,EAAE,WAAa,KAC7CH,EAAE,YAAYG,EAAE,SAAS,EAAIA,EAAE,UAAY,KAC3CA,EAAE,YAAYH,EAAE,UAAU,EAAIA,EAAE,WAAa,KAC7CG,EAAE,YAAYH,EAAE,SAAS,EAAIA,EAAE,UAAY,IAC5C,EAAC,OAAQ,GAAM,IAAM,IAAI,CAG3B,EAAC,KAAK,CAAC,EAAG4B,IAAMzB,EAAE,aAAa,CAAC,EAAIA,EAAE,aAAayB,CAAC,CAAC,EACtD,GAAI,EAAE,SAAW,EACf,MAAO,GACT,GAAI,EAAE,SAAW,EACf,MAAO,GACT,GAAI,EAAE,SAAW,EACf,OAAOzB,EAAE,OAAOiL,GAAGpL,CAAC,CAAC,EAAI,CAAE,EAAG,CAAC,IAAIqL,EAAE,EAAE,CAAC,EAAG,EAAE,CAAC,EAAGlL,EAAE,OAAQA,EAAE,SAAS,CAAC,EACzE,GAAI,EAAE,SAAW,EAAG,CAClB,MAAM,EAAImC,EAAE,EAAE,CAAC,EAAGtC,EAAE,SAAS,GAAKsC,EAAE,EAAE,CAAC,EAAGtC,EAAE,UAAU,EAAI,EAAI,EAC9D,MAAO,CACL,IAAIqL,EACF,EAAE,EAAI,CAAC,EACP,EAAE,EAAI,CAAC,EACPlL,EAAE,OACFA,EAAE,SACH,CACP,CACA,SAAa,EAAE,SAAW,EACtB,MAAO,CACL,IAAIkL,EAAE,EAAE,CAAC,EAAG,EAAE,CAAC,EAAGlL,EAAE,OAAQA,EAAE,SAAS,EACvC,IAAIkL,EAAE,EAAE,CAAC,EAAG,EAAE,CAAC,EAAGlL,EAAE,OAAQA,EAAE,SAAS,CAC7C,EACE,MAAM,IAAI,MAAM,sCAAsC,CACxD,EACA,SAASgF,GAAGhF,EAAGH,EAAG,EAAI,GAAI,EAAG,CAC3B,MAAM4B,EAAI,GAAKzB,EAAE,UAAWgD,EAAI0F,EAAG1I,EAAE,OAAQH,EAAE,MAAM,EAAGD,EAAII,EAAE,OAASH,EAAE,OACzE,GAAImD,EAAIpD,EAAI6B,EACV,MAAO,GACT,MAAMM,EAAI,KAAK,IAAI/B,EAAE,OAASH,EAAE,MAAM,EACtC,GAAImD,EAAIjB,EAAIN,EACV,MAAO,GACT,GAAIuB,EAAIvB,EACN,OAAOM,EAAIN,EAAI,GAAK,EAAI0J,GAAGnL,EAAGH,CAAC,EAAI,GACrC,MAAM8D,EAAIyH,EAAGL,EAAElL,EAAE,OAAQG,EAAE,MAAM,CAAC,EAAG,EAAIgD,EAAIpD,EAAI6B,EACjD,GAEE,GACA,KAAK,IAAIuB,EAAIjB,CAAC,EAAIN,EAClB,CACA,MAAMa,EAAI,GAAKtC,EAAE,OAASH,EAAE,OAAS,EAAI,GAAI2E,EAAIqD,EAC/C7H,EAAE,OACFwH,EAAE7D,EAAGrB,EAAItC,EAAE,MAAM,CACvB,EACI,OAAOA,EAAE,YAAYwE,CAAC,GAAK3E,EAAE,YAAY2E,CAAC,EAAI,CAACA,CAAC,EAAI,EACrD,CACD,MAAMnC,EAAIrC,EAAE,OAASA,EAAE,QAAU,EAAIgD,GAAKnD,EAAE,OAASA,EAAE,QAAU,EAAImD,GAAKA,EAAI,EAAGE,EAAI2E,EACnF7H,EAAE,OACFwH,EAAE7D,EAAGtB,CAAC,CACV,EAAKY,EAAI,KAAK,KACVjD,EAAE,OAASA,EAAE,OAASqC,EAAIA,CAC9B,EAAK,EAAItC,GAAG4D,CAAC,EAAG1B,EAAI4F,EAAE3E,EAAGsE,EAAE,EAAGvE,CAAC,CAAC,EAAGjB,EAAI6F,EAAE3E,EAAGsE,EAAE,EAAG,CAACvE,CAAC,CAAC,EAAG,EAAI,GACzD,OAAOjD,EAAE,YAAYiC,CAAC,GAAKpC,EAAE,YAAYoC,CAAC,GAAK,EAAE,KAAKA,CAAC,EAAGjC,EAAE,YAAYgC,CAAC,GAAKnC,EAAE,YAAYmC,CAAC,GAAK,EAAE,KAAKA,CAAC,EAAG,CAC/G,CACA,SAASoG,GAAGpI,EAAGH,EAAG,EAAI,KAAM,CAC1B,MAAM,EAAIG,EAAE,UAAUH,EAAE,8BAA8B,EAAG4B,EAAI,EAAE,MAAOuB,EAAI,EAAE,WAAYpD,EAAIC,EAAE,YAAcA,EAAE,YAAakC,EAAIlC,EAAE,YAAcA,EAAE,YAAa8D,EAAI9D,EAAE,YAAcA,EAAE,YAAa,EAAI,EAAE,MAAQ,EAAE,MAAOwC,EAAI,EAAE,WAAa,EAAE,WAAYa,EAAKZ,GAAMA,EAAE,IACnQkC,GAAM3E,EAAE,sCAAsC,UAAU2E,CAAC,CAC3D,EAAC,OAAQA,GAAMxE,EAAE,YAAYwE,CAAC,GAAK3E,EAAE,YAAY2E,CAAC,CAAC,EACpD,GAAI,CAAC,OAAO,SAAS/C,CAAC,EAAG,CACvB,MAAMa,EAAI,EAAE,WAAW,CAAC,EACxB,GAAI,KAAK,IAAIA,CAAC,EAAIzC,EAAE,YAAc,EAChC,MAAO,GACT,GAAI,KAAK,IAAI,KAAK,IAAIyC,CAAC,EAAIzC,EAAE,WAAW,EAAI,EAC1C,OAAOqD,EAAE,CAAC,CAACZ,EAAG,CAAC,CAAC,CAAC,EACnB,MAAMkC,EAAI3E,EAAE,YAAc,KAAK,KAAK,EAAIyC,EAAIA,EAAI1C,CAAC,EAAGwE,EAAI,CAAC9B,EAAGkC,CAAC,EAAGC,EAAI,CAACnC,EAAG,CAACkC,CAAC,EAC1E,OAAOtB,EAAE,CAACkB,EAAGK,CAAC,CAAC,CAChB,CACD,MAAMxB,EAAIrD,EAAI,EAAImC,EAAIM,EACtB,GAAIY,EAAI,CAAC,EACP,MAAO,GACT,MAAM,EAAIrD,EAAI,EAAImC,EAClB,GAAI,KAAK,IAAIkB,CAAC,EAAI,EAAG,CACnB,MAAMX,EAAI,EAAE1C,EAAI6B,EAAIuB,GAAK,EAAGwB,EAAIzC,EAAIiB,EAAI,EACxC,OAAOE,EAAE,CAAC,CAACZ,EAAGkC,CAAC,CAAC,CAAC,CAClB,CACD,MAAMvC,EAAI,KAAK,KAAKgB,CAAC,EAAGjB,EAAI,CAC1B,EAAEpC,EAAI6B,EAAIuB,EAAIW,EAAI1B,GAAK,GACtBF,EAAIiB,EAAIW,EAAIlC,EAAIQ,GAAK,CACvB,EAAE,EAAI,CACL,EAAErC,EAAI6B,EAAIuB,EAAIW,EAAI1B,GAAK,GACtBF,EAAIiB,EAAIW,EAAIlC,EAAIQ,GAAK,CAC1B,EACE,OAAOiB,EAAE,CAAClB,EAAG,CAAC,CAAC,CACjB,CACA,SAAS5B,GAAGJ,EAAGH,EAAG,CAChB,MAAM,EAAI,KAAK,IAAIG,EAAE,UAAWH,EAAE,SAAS,EAAG,EAAIG,EAAE,aAAcyB,EAAI,EAAE,GAAIuB,EAAI,EAAE,GAAIpD,EAAI,EAAE,GAAImC,EAAI,EAAE,EAAG4B,EAAI,EAAE,EAAG,EAAI,EAAE,EAAGtB,EAAIxC,EAAE,aAAcqD,EAAIb,EAAE,GAAIY,EAAIZ,EAAE,GAAI,EAAIA,EAAE,GAAIJ,EAAII,EAAE,EAAGL,EAAIK,EAAE,EAAG,EAAIA,EAAE,EAAGC,EAAI,CAC1M,GAAI,EAAIb,EAAIQ,EAAIA,EAAIR,EAAIA,EAAI,EAAI,EAAIM,EAAIN,EAAIQ,EAAI,EAAIiB,EAAIA,EAAI,EAAI,EAAI,EAAIzB,EAAI,EAAIyB,EAAI,EAAInB,EAAIE,EAAIiB,EAAI,EAAIA,EAAInB,EAAIA,EAAI,EACpH,GAAIC,EAAID,EAAIA,EAAImB,EAAI,EAAIjB,EAAIR,EAAIuB,EAAI,EAAIvB,EAAI,EAAIyB,EAAIS,EAAI,EAAIT,EAAID,EAAIlB,EAAI,EAAIE,EAAIgB,EAAIxB,EAAI,EAAI,EAAIO,EAAI,EAAIP,EAAIA,EAAIQ,EAAIA,EAAIR,EAAIkC,EAAI3B,EAAIC,EAAIR,EAAIM,EAAI,EAAIN,EAAIO,EAAIkB,EAAI,EAAI,EAAIA,EAAIjB,EAAIe,EAAI,EAAI,EAAIW,EAAIT,EAAIA,EAAI,EAAID,EAAIxB,EAAIM,EAAI4B,EAAIT,EAAIjB,EAAIF,EAAI,EAAI,EAAIiB,EAAIE,EAAInB,EACxP,GAAIC,EAAIA,EAAIP,EAAIA,EAAI,EAAI,EAAI,EAAIA,EAAIA,EAAIkC,EAAIT,EAAIjB,EAAIe,EAAI,EAAIE,EAAIF,EAAIA,EAAIW,EAAIT,EAAID,EAAIlB,EAAI,EAAIkB,EAAIxB,EAAIuB,EAAI,EAAIvB,EAAIO,EAAIkB,EAAIS,EAAI,EAAI1B,EAAIgB,EAAIxB,EAAIkC,EAAI,EAAI1B,EAAIR,EAAIM,EAAI,EAAIN,EAAI,EAAIyB,EAAI,EAAID,EAAIA,EAAIxB,EAAI,EAAI,EAAIO,EAAIgB,EAAIE,EAAInB,EAAI4B,EAAIA,EAAIT,EAAIA,EAAItD,EAAIsD,EAAIjB,EAAIF,EAAIC,EAAIiB,EAAIxB,EAAIM,EAAI,EAAI,EAAInC,EAAIsD,EAAIA,EAAI,EAAIA,EAAID,EAAID,EAAI,EAAIjB,EAAIA,EAAImB,EAAIjB,EAAIA,EAAIR,EAAI7B,EAAIoC,EAAIC,EAAIR,EAAIuB,EAAI,EAAIvB,EAAI,EAAIyB,EAAItD,EAC5W,GAAI,GAAK6B,EAAIyB,EAAItD,EAAIoC,EAAIA,EAAIkB,EAAIF,EAAIA,EAAI,EAAI,EAAIA,EAAIE,EAAInB,EAAInC,EAAIsD,EAAID,EAAIlB,EAAIkB,EAAIA,EAAIxB,EAAIkC,EAAI3B,EAAIiB,EAAIxB,EAAIuB,EAAI,EAAIvB,EAAI,EAAIyB,EAAIS,EAAIA,EAAIT,EAAID,EAAID,EAAI,EAAIC,EAAIxB,EAAIM,EAAI,EAAIC,EAAI,EAAIP,EAAIA,EAAI,EAAIkC,EAAI/D,EAAIsD,EAAIA,EAAItD,EAAIsD,EAAIjB,EAAIe,EAAI,EAAIf,EAAIgB,EAAIxB,EAAI7B,EAAI,EAAIqC,EAAIR,EAAIuB,EACzP,GAAIvB,EAAIA,EAAI,EAAI,EAAI,EAAIA,EAAI,EAAIyB,EAAItD,EAAIsD,EAAIA,EAAItD,EAAIA,EAAIoD,EAAIvB,EAAIwB,EAAI,EAAID,EAAIC,EAAIC,EAAItD,EAAIoD,EAAIA,EAAIE,EAAI,EAAItD,EAAI6B,EAAIwB,EAAIA,CACrH,EAAEmB,EAAIsF,GACL,CAACpH,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,EAAE,EAC7B,CACJ,EAAI,QAASmC,GAAM,CACf,MAAM6C,EAAI7F,EAAIwB,EAAIwB,EAAIhD,EAAIQ,EAAIiB,EAAIF,EAAIyB,EAAIvB,EAAInB,EAC9C,GAAIuF,EACF,MAAO,CAAC,CAAC,EAAE7F,EAAI,EAAIA,EAAI,EAAIgD,EAAIA,EAAIvB,EAAItD,EAAI6E,EAAIA,EAAIhD,EAAIO,EAAIyC,EAAIvB,EAAIS,EAAIc,EAAIvB,EAAI,GAAKoE,EAAG7C,CAAC,CAAC,EAC3F,MAAMkD,EAAI3E,EAAIyB,EAAI1C,EAAGiG,EAAI,CAACL,GAAK,EAAIlG,GAAI6C,EAAI1E,EAAI6E,EAAIA,EAAId,EAAIc,EAAI,EAAGyD,EAAIP,EAAIA,GAAK,EAAIlG,EAAIA,GAAK6C,EAAI7C,EAChG,GAAI,KAAK,IAAIyG,CAAC,EAAI,EAChB,MAAO,CAAC,CAACF,EAAGvD,CAAC,CAAC,EAChB,GAAIyD,EAAI,EAAG,CACT,MAAMjH,EAAI,KAAK,KAAKiH,CAAC,EACrB,MAAO,CAAC,CAACF,EAAI/G,EAAGwD,CAAC,EAAG,CAACuD,EAAI/G,EAAGwD,CAAC,CAAC,CAC/B,CACD,MAAO,EACX,CAAG,EACD,OAAO0D,GAAE/D,EAAG,CAAC,CACf,CACA,SAASuB,GAAG3F,EAAGH,EAAG,CAChB,OAAOO,GAAGJ,EAAGH,CAAC,EAAE,OAAQM,GAAMH,EAAE,YAAYG,CAAC,GAAKN,EAAE,YAAYM,CAAC,CAAC,CACpE,CACA,MAAMkL,GAAMrL,GAAM,CAChB,KAAM,CACJ,WAAYH,EACZ,UAAW,EACX,OAAQ,EACR,YAAa4B,EACb,YAAauB,EACb,UAAWpD,EACX,UAAWmC,CACZ,EAAG/B,EACJ,OAAO,IAAIoC,EACT,EACAvC,EACA,EACA4B,EACAuB,EACApD,EACAmC,EACA,CACE,aAAc,GACd,WAAY,KACb,CACL,CACA,EAAGuJ,GAAK,CAACtL,EAAGH,IAAM,CAChB,GAAIG,EAAE,OAAOH,CAAC,EACZ,MAAO,CAACG,CAAC,EACX,MAAM,EAAI,CAACyB,EAAGuB,IAAM,IAAIZ,EACtBX,EACAuB,EACAhD,EAAE,OACFA,EAAE,YACFA,EAAE,YACFA,EAAE,UACFA,EAAE,UACF,CAAE,aAAc,GAAI,WAAY,KAAO,CACxC,EAAE,EAAImI,GACL,CACEtI,EAAE,YAAYG,EAAE,UAAU,EAAIA,EAAE,WAAa,KAC7CH,EAAE,YAAYG,EAAE,SAAS,EAAIA,EAAE,UAAY,KAC3CA,EAAE,YAAYH,EAAE,UAAU,EAAIA,EAAE,WAAa,KAC7CG,EAAE,YAAYH,EAAE,SAAS,EAAIA,EAAE,UAAY,IAC5C,EAAC,OAAQ4B,GAAMA,IAAM,IAAI,CAG3B,EAAC,KAAK,CAACA,EAAGuB,IAAMhD,EAAE,aAAayB,CAAC,EAAIzB,EAAE,aAAagD,CAAC,CAAC,EACtD,GAAI,EAAE,SAAW,EACf,MAAO,GACT,GAAI,EAAE,SAAW,EACf,MAAO,GACT,GAAI,EAAE,SAAW,EACf,OAAOhD,EAAE,OAAOqL,GAAGxL,CAAC,CAAC,EAAI,CAAE,EAAG,CAAC,EAAE,EAAE,CAAC,EAAG,EAAE,CAAC,CAAC,CAAC,EAC9C,GAAI,EAAE,SAAW,EAAG,CAClB,MAAM4B,EAAIU,EAAE,EAAE,CAAC,EAAGtC,EAAE,SAAS,GAAKsC,EAAE,EAAE,CAAC,EAAGtC,EAAE,UAAU,EAAI,EAAI,EAC9D,MAAO,CAAC,EAAE,EAAE,EAAI4B,CAAC,EAAG,EAAE,EAAIA,CAAC,CAAC,CAAC,CACjC,SAAa,EAAE,SAAW,EACtB,MAAO,CAAC,EAAE,EAAE,CAAC,EAAG,EAAE,CAAC,CAAC,EAAG,EAAE,EAAE,CAAC,EAAG,EAAE,CAAC,CAAC,CAAC,EACtC,MAAM,IAAI,MAAM,sDAAsD,CACxE,EACA,SAAS8J,GAAGvL,EAAGH,EAAG,EAAI,GAAI,CACxB,MAAM,EAAI,KAAK,IAAIG,EAAE,UAAWH,EAAE,SAAS,EAC3C,OAAOsC,EAAEnC,EAAE,OAAQH,EAAE,MAAM,GAAK,KAAK,IAAIG,EAAE,YAAcH,EAAE,WAAW,EAAI,GAAK,KAAK,IAAIG,EAAE,YAAcH,EAAE,WAAW,EAAI,IAAM,KAAK,IAAIG,EAAE,UAAYH,EAAE,SAAS,EAAI,GAAK,KAAK,IAAI,KAAK,IAAIG,EAAE,UAAYH,EAAE,SAAS,EAAI,KAAK,EAAE,EAAI,GAAK,EAAIyL,GAAGtL,EAAGH,CAAC,EAAI,CAAE,EAAGO,GAAGJ,EAAGH,CAAC,EAAE,OAAQD,GAAMI,EAAE,YAAYJ,CAAC,GAAKC,EAAE,YAAYD,CAAC,CAAC,CAC1T,CACA,SAAS0K,GAAGtK,EAAGH,EAAG,CAChB,KAAM,CAAC,EAAG,CAAC,EAAIG,EAAE,WAAY,CAACyB,EAAGuB,CAAC,EAAIhD,EAAE,UAAWJ,EAAI,IAAI4L,GAAI,EAAC,OAAO,CAAC,KAAK,MAAMxI,EAAI,EAAGvB,EAAI,CAAC,CAAC,EAAE,UAAU,CAAC,EAAG,CAAC,CAAC,EAAGM,EAAInC,EAAE,MAAO,EAAC,QAAS,EAAE+D,EAAI9D,EAAE,UAAUD,CAAC,EAC/J,OAAO+D,EAAE,UAAU,CAAC,EAAE,IAAK,GAAMA,EAAE,WAAW,CAAC,CAAC,EAAE,IAAK,GAAM5B,EAAE,UAAU,CAAC,CAAC,EAAE,OAAQ,GAAM/B,EAAE,YAAY,CAAC,CAAC,CAC7G,CACA,MAAMyL,GAAK,CAACzL,EAAGH,EAAI,OAAS,CAC1B,IAAI,EAAIG,EACR,OAAO,KAAK,IAAIA,CAAC,EAAIH,IAAM,EAAI,GAAI,EAAE,QAAQ,CAAC,KAAK,MAAMA,CAAC,CAAC,CAC7D,EACA,SAASkJ,GAAG/I,EAAGH,EAAI,KAAM,CACvB,OAAO,MAAM,KACX,IAAI,IAAIG,EAAE,IAAK,GAAM,CAACyL,GAAG,EAAG5L,CAAC,EAAG,CAAC,CAAC,CAAC,EAAE,OAAQ,CACjD,CACA,CACA,MAAM6L,GAAK,CAAC1L,EAAGH,IAAM,CACnB,KAAM,CAAC,CAAC,EAAG,EAAG4B,EAAGuB,CAAC,EAAG,CAACpD,EAAGmC,EAAG4B,EAAG,CAAC,CAAC,EAAI9D,EAAE,uBAAwBwC,EAAIrC,EAAE,aAAckD,EAAIb,EAAE,GAAIY,EAAIZ,EAAE,GAAI,EAAIA,EAAE,GAAIJ,EAAII,EAAE,EAAGL,EAAIK,EAAE,EAAG,EAAIA,EAAE,EAAGC,EAAI,EAAI,EAAGkC,EAAI,EAAI,EAAGJ,EAAI3C,EAAIA,EAAGgD,EAAIzB,EAAIA,EAAGsE,EAAI1H,EAAIA,EAAG+H,EAAI5F,EAAIA,EAAGiG,EAAIrE,EAAIA,EAAGW,EAAI,EAAI,EAAG4D,EAAI,EAAIjG,EAAI,EAAIiB,EAAIZ,EAAIN,EAAIpC,EAAIqD,EAAI,EAAIrD,EAAI,EAAI0H,EAAGrG,EAAIgB,EAAI,EAAI,EAAIiB,EAAI,EAAI,EAAID,EAAI,EAAIrD,EAAIoC,EAAID,EAAIkB,EAAI,EAAIlB,EAAI,EAAI,EAAInC,EAAImC,EAAGgD,EAAK7B,EAAIsB,EAAIvC,EAAIR,EAAI,EAAIyB,EAAI,EAAIzB,EAAIwB,EAAIxB,EAAI7B,EAAIqD,EAAI,EAAIlB,EAAI,EAAI4F,EAAI3F,EAAI2B,EAAIV,EAAI,EAAIU,EAAI,EAAI,EAAI/D,EAAI+D,EAAG0G,GAAK,EAAInH,EAAI,EAAIzB,EAAIQ,EAAIe,EAAI,EAAIE,EAAI,EAAIF,EAAIC,EAAID,EAAIpD,EAAIqD,EAAIxB,EAAIM,EAAIkB,EAAI,EAAIU,EAAI,EAAI,EAAI5B,EAAI4B,EAAI3B,EAAI,EAAIiB,EAAI,EAAI,EAAI,EAAI,EAAIrD,EAAI,EAAGqE,EAAKf,EAAIkB,EAAI,EAAIlB,EAAI,EAAIF,EAAIC,EAAID,EAAIjB,EAAIkB,EAAIxB,EAAIkC,EAAI,EAAIqE,EAAI/E,EAAI,EAAI,EAAI,EAAI,EAAIlB,EAAI,EAAGiC,EAAK,EAAId,EAAIzB,EAAIuB,EAAIC,EAAID,EAAIW,EAAIV,EAAIxB,EAAI,EAAI,EAAI,EAAIkC,EAAI,EAAGG,EAAKZ,EAAIuB,EAAIxB,EAAID,EAAI,EAAI,EAAIsB,EAC/vB,MAAO,CAAC4D,EAAGjH,EAAG8D,EAAIsF,GAAIpG,EAAID,EAAIF,CAAE,CAClC,EACA,SAAS6F,GAAG3J,EAAGH,EAAG,CAChB,MAAM,EAAI,KAAK,IAAIG,EAAE,UAAWH,EAAE,SAAS,EAAG,EAAI6L,GAAG1L,EAAGH,CAAC,EAAG4B,EAAIiI,GAAG,EAAG,CAAC,EAAE,OAAQ1G,GAAMA,GAAK,CAACnD,EAAE,WAAamD,GAAK,EAAInD,EAAE,SAAS,EAChI,OAAOkJ,GAAGtH,EAAG,CAAC,EAAE,IAAKuB,GAAMnD,EAAE,WAAWmD,CAAC,CAAC,EAAE,OAAQA,GAAMhD,EAAE,YAAYgD,CAAC,CAAC,CAC5E,CACA,MAAM,GAAK,CAAChD,EAAGH,IAAM,CACnB,KAAM,CAAC,CAAC,EAAG,EAAG4B,CAAC,EAAG,CAACuB,EAAGpD,EAAGmC,CAAC,CAAC,EAAIlC,EAAE,uBAAwB8D,EAAI3D,EAAE,aAAc,EAAI2D,EAAE,GAAItB,EAAIsB,EAAE,GAAIT,EAAIS,EAAE,GAAIV,EAAIU,EAAE,EAAG,EAAIA,EAAE,EAAG1B,EAAI0B,EAAE,EAAG3B,EAAI,EAAI,EAAG,EAAI,EAAI,EAAGM,EAAIb,EAAIA,EAAG+C,EAAIxB,EAAIA,EAAGoB,EAAIxE,EAAIA,EAAG6E,EAAI1C,EAAIA,EAAGuF,EAAI,EAAItF,EAAIK,EAAI,EAAIW,EAAIE,EAAIsB,EAAIvB,EAAI,EAAI,EAAID,EAAIf,EAAG0F,EAAI,EAAI,EAAI,EAAI,EAAItF,EAAI,EAAIzC,EAAIyC,EAAI,EAAIW,EAAI,EAAIE,EAAIF,EAAIpD,EAAIqD,EAAI,EAAI,EAAIrD,EAAGoI,EAAI,EAAI,EAAI,EAAIvG,EAAI,EAAI,EAAIY,EAAI,EAAIN,EAAIM,EAAI,EAAIzC,EAAIyC,EAAIZ,EAAIuB,EAAI,EAAIE,EAAIF,EAAIjB,EAAImB,EAAIkB,EAAInB,EAAIxB,EAAI,EAAIM,EAAGuC,EAAI,EAAI,EAAI,EAAI7C,EAAIY,EAAI,EAAIN,EAAIM,EAAIZ,EAAI7B,EAAI,EAAIsD,EAAItD,EAAImC,EAAGmG,EAAI,EAAI5F,EAAID,EAAIZ,EAAIM,EAAImB,EAAIuB,EACpgB,MAAO,CAAC6C,EAAGK,EAAGK,EAAG1D,EAAG4D,CAAC,CACvB,EACA,SAASyC,GAAG3K,EAAGH,EAAG,CAChB,MAAM,EAAI,KAAK,IAAIG,EAAE,UAAWH,EAAE,SAAS,EAAG,EAAI,GAAGG,EAAGH,CAAC,EAAG4B,EAAIkK,GAAG,GAAG,CAAC,EAAE,OAAQ3I,GAAMA,GAAK,CAACnD,EAAE,WAAamD,GAAK,EAAInD,EAAE,SAAS,EAChI,OAAOkJ,GAAGtH,EAAG,CAAC,EAAE,IAAKuB,GAAMnD,EAAE,WAAWmD,CAAC,CAAC,EAAE,OAAQA,GAAMhD,EAAE,YAAYgD,CAAC,CAAC,CAC5E,CACA,SAASqB,GAAErE,EAAG,CAAE,WAAYH,EAAG,UAAW,CAAC,EAAI,EAAI,KAAM,CACvD,MAAM4B,EAAIsJ,EAAE,EAAGlL,CAAC,EAChB,OAAO,KAAK,IAAI4B,EAAE,CAAC,CAAC,EAAI,EAAIA,EAAE,CAAC,EAAI,EAAI5B,EAAE,CAAC,EAAIG,EAAE,CAAC,EAAIA,EAAE,CAAC,EAAIH,EAAE,CAAC,EAAI,KAAK,IAAI4B,EAAE,CAAC,CAAC,EAAI,EAAIA,EAAE,CAAC,EAAI,EAAIzB,EAAE,CAAC,EAAIH,EAAE,CAAC,EAAIA,EAAE,CAAC,EAAIG,EAAE,CAAC,EAAI4L,GAAGnK,EAAGsJ,EAAE/K,EAAGH,CAAC,CAAC,EAAIgM,GAAGpK,CAAC,CACtJ,CACA,MAAMwE,EAAG,CACP,YAAYpG,EAAG,EAAG,EAAG4B,EAAG,CACtB,KAAK,WAAa5B,EAAG,KAAK,UAAY,EAAG,KAAK,kBAAoB,EAAG,KAAK,kBAAoB4B,CAC/F,CACD,IAAI,OAAQ,CACV,OAAO,KAAK,kBAAoB,KAAK,iBACtC,CACH,CACA,MAAM,GAAK,EAAI,EAAGqK,GAAK,EAAI,EAC3B,SAASC,GAAG/L,EAAG,CACb,MAAMH,EAAIwE,GAAErE,EAAE,kBAAmBA,CAAC,EAAG,EAAIqE,GAAErE,EAAE,iBAAkBA,CAAC,EAAG,EAAIH,EAAI,EAAI,EAAI,GAAKiM,GACxF,OAAO,IAAI7F,GACTjG,EAAE,WACFA,EAAE,UACF,EAAI,KAAK,IAAI,EAAGH,EAAG,CAAC,EACpB,EAAI,KAAK,IAAI,EAAGA,EAAG,CAAC,CACxB,CACA,CACA,SAAS,GAAGG,EAAG,CACb,MAAMH,EAAIwE,GAAErE,EAAE,aAAcA,CAAC,EAC7B,OAAO,IAAIiG,GACTjG,EAAE,WACFA,EAAE,UACF,KAAK,IAAI,EAAGH,EAAI,CAAC,EACjB,KAAK,IAAI,EAAGA,EAAI,CAAC,CACrB,CACA,CACA,SAASmM,GAAGhM,EAAG,CACb,GAAIA,aAAaqH,GACf,OAAO0E,GAAG/L,CAAC,EACb,GAAIA,aAAaiI,EACf,OAAO,GAAGjI,CAAC,EACb,MAAM,IAAI,MAAM,iBAAiB,CACnC,CACA,SAASiM,GAAGjM,EAAG,CACb,MAAMH,EAAIG,EAAE,WAAW,EAAG,EAAG,EAAID,GAAGgL,EAAElL,EAAGG,EAAE,UAAU,CAAC,EAAG,EAAI6H,EAAEhI,EAAG,CAAC,EAAG4B,EAAI,CACxE,WAAY5B,EACZ,UAAW,CACZ,EAAEmD,EAAI,CACLqB,GAAErE,EAAE,WAAYyB,CAAC,EACjB4C,GAAErE,EAAE,UAAWyB,CAAC,CACpB,EACE,OAAOzB,aAAaqH,GAAIrE,EAAE,KACxBqB,GAAErE,EAAE,kBAAmByB,CAAC,EACxB4C,GAAErE,EAAE,iBAAkByB,CAAC,CACxB,EAAGzB,aAAaiI,GAAKjF,EAAE,KAAKqB,GAAErE,EAAE,aAAcyB,CAAC,CAAC,EAAG,IAAIwE,GACtDpG,EACA,EACA,KAAK,IAAI,GAAGmD,CAAC,EACb,KAAK,IAAI,GAAGA,CAAC,CACjB,CACA,CACA,SAASM,GAAGtD,EAAGH,EAAG,CAChB,MAAM,EAAI,CAAA,EACV,QAAS,EAAI,EAAG,EAAIG,EAAE,OAAQ,IAAK,CACjC,MAAMyB,EAAIzB,EAAE,CAAC,EACb,GAAIyB,EAAE,CAAC,IAAM5B,EAAG,CACd,EAAE,KAAK4B,EAAE,CAAC,CAAC,EACX,QACD,CACD,MAAMuB,EAAIhD,EAAE,EAAI,CAAC,EAAGJ,EAAIC,EAAImD,EAAE,CAAC,EAAGjB,EAAIlC,EAAI4B,EAAE,CAAC,EAC7C,GAAI7B,EAAImC,EAAI,EAAG,CACb,EAAE,KACAiB,EAAE,CAAC,GAAKnD,EAAImD,EAAE,CAAC,IAAMvB,EAAE,CAAC,EAAIuB,EAAE,CAAC,IAAMvB,EAAE,CAAC,EAAIuB,EAAE,CAAC,EACvD,EACM,QACD,CACF,CACD,OAAO,CACT,CACA,IAAAkJ,GAAA,KAAQ,CACN,YAAYrM,EAAG,EAAG,CAChB,KAAK,KAAOA,EAAG,KAAK,GAAK,CAC1B,CACD,IAAI,MAAO,CACT,OAAO,KAAK,OAAS,QAAU,KAAK,KAAO,MAAQ,EAAI,KAAK,GAAK,KAAK,KAAO,MAAQ,EAAI,KAAK,KAAO,KAAK,IAAI,KAAK,KAAO,KAAK,EAAE,CAClI,CACD,UAAUA,EAAG,CACX,OAAO,KAAK,OAAS,QAAU,KAAK,KAAO,MAAQA,EAAIA,EAAE,kBAAkB,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAI,KAAK,KAAO,MAAQA,EAAE,kBAAkB,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,EAAIA,EAAE,kBAAkB,CAAC,KAAK,KAAM,KAAK,EAAE,CAAC,EAAE,CAAC,CACjM,CACH,EACA,SAASsM,GAAGnM,EAAGH,EAAG,CAChB,GAAIG,aAAaqH,GACf,OAAO,IAAI+E,GAAG,CACZ/H,GAAErE,EAAE,WAAYH,CAAC,EACjBwE,GAAErE,EAAE,kBAAmBH,CAAC,EACxBwE,GAAErE,EAAE,iBAAkBH,CAAC,EACvBwE,GAAErE,EAAE,UAAWH,CAAC,CACtB,CAAK,EACH,GAAIG,aAAaiI,EACf,OAAO,IAAIoE,GAAG,CACZhI,GAAErE,EAAE,WAAYH,CAAC,EACjBwE,GAAErE,EAAE,aAAcH,CAAC,EACnBwE,GAAErE,EAAE,UAAWH,CAAC,CACtB,CAAK,EACH,MAAM,IAAI,MAAM,iBAAiB,CACnC,CACA,MAAMwM,EAAG,CACP,YAAYxM,EAAG,CACb6H,GAAE,KAAM,UAAW,CAAA,CAAE,EACrBA,GAAE,KAAM,aAAc,CAAA,CAAE,EACxB,KAAK,UAAY7H,EACjB,KAAM,CAAC,EAAG,EAAG4B,CAAC,EAAI5B,EAAGmD,EAAI,CAAC,EAAG,CAAC,EAAGpD,EAAI,CAAC,EAAI,EAAG,CAAC,EAAGmC,EAAI,CAAC,EAAGN,CAAC,EAAGkC,EAAIlC,EAAI,EAAG,EAAI,EAC5E,GAAKkC,GAAK,EAAI,GAAK,GAAK,GAAK,KAAK,QAAU,CAACX,EAAGpD,EAAGmC,CAAC,EAAG,KAAK,WAAa,CAACiB,EAAGjB,CAAC,IAAM,KAAK,QAAU,CAACiB,EAAGjB,CAAC,EAAG,KAAK,WAAa,CAACiB,EAAGpD,EAAGmC,CAAC,EACtI,CACD,IAAI,eAAgB,CAClB,OAAO,KAAK,UAAU,CAAC,CACxB,CACD,IAAI,aAAc,CAChB,OAAO,KAAK,UAAU,CAAC,CACxB,CACH,CACA,MAAMqK,EAAG,CACP,YAAYvM,EAAG,CACb6H,GAAE,KAAM,UAAW,CAAA,CAAE,EACrBA,GAAE,KAAM,aAAc,CAAA,CAAE,EACxB,KAAK,UAAY7H,EACjB,KAAM,CAAC,EAAG,EAAG4B,EAAGuB,CAAC,EAAInD,EAAGD,EAAI,CAAC,EAAG,CAAC,EAAGmC,EAAI,CAAC,EAAI,EAAG,CAAC,EAAG4B,EAAI,CAAC,EAAI,EAAGlC,CAAC,EAAG,EAAI,CAAC,EAAGuB,CAAC,EAAGX,EAAIW,EAAI,EAAGE,EAAI,EAAGD,EAAI,GAAKZ,GAAK,EAAI,GAAKa,GAAI,EAAIzB,GAAKY,GAAK,EAAI,GAAKa,GACpJ,IAAIjB,EAAI,KAAMD,EAAI,KAClB,GAAIiB,EAAI,EAAI,EACVhB,EAAI,CAACrC,EAAGmC,EAAG,CAAC,EAAGC,EAAI,CAACpC,EAAG+D,EAAG,CAAC,MACxB,CACH,MAAMrB,EAAIW,EAAI,EACdX,GAAK,GAAKL,EAAI,CAACrC,EAAGmC,EAAG,CAAC,EAAGC,EAAI,CAACpC,EAAG,CAAC,GAAK0C,GAAK,IAAOL,EAAI,CAACrC,EAAG+D,EAAG,CAAC,EAAG3B,EAAI,CAACpC,EAAG,CAAC,IAAMqC,EAAI,CAACrC,EAAGmC,EAAG4B,EAAG,CAAC,EAAG3B,EAAI,CAACpC,EAAG,CAAC,EAC7G,CACDqD,EAAI,IAAM,CAAChB,EAAGD,CAAC,EAAI,CAACA,EAAGC,CAAC,GAAI,KAAK,QAAUA,EAAG,KAAK,WAAaD,CACjE,CACD,IAAI,eAAgB,CAClB,OAAO,KAAK,UAAU,CAAC,CACxB,CACD,IAAI,aAAc,CAChB,OAAO,KAAK,UAAU,CAAC,CACxB,CACH,CACA,SAAS6G,GAAG7I,EAAGH,EAAG,CAChB,MAAM,EAAIsM,GAAGtM,EAAGG,CAAC,EAAG,EAAIsD,GACtB,EAAE,QACFtD,EAAE,iBACH,EAAEyB,EAAI6B,GACL,EAAE,WACFtD,EAAE,iBACN,EAAKgD,EAAI,EAAE,aAAehD,EAAE,mBAAqB,EAAE,aAAeA,EAAE,kBAClE,GAAI,CAAC,EAAE,QAAU,CAACyB,EAAE,OAClB,OAAOuB,EAAI,IAAIqF,GAAE,QAAS,KAAK,EAAI,KACrC,GAAI,EAAE,SAAW,GAAK5G,EAAE,SAAW,EACjC,OAAO,IAAI4G,GAAE,EAAE,CAAC,EAAG5G,EAAE,CAAC,CAAC,EACzB,GAAI,EAAE,SAAW,GAAKA,EAAE,SAAW,EACjC,MAAM,IAAI,MACR,qEACN,EACE,MAAM7B,EAAI,EAAE,OAAS,EAAI6B,EACzB,OAAO7B,EAAE,SAAW,EAAI,IAAIyI,GAAEzI,EAAE,CAAC,EAAGA,EAAE,CAAC,CAAC,EAAIoD,EAAI,IAAIqF,GAAEzI,EAAE,CAAC,EAAG,KAAK,EAAI,IAAIyI,GAAE,QAASzI,EAAE,CAAC,CAAC,CAC1F,CACA,SAASyB,GAAGrB,EAAGH,EAAG,CAChB,MAAM,EAAImM,GAAGhM,CAAC,EAAG,EAAI6I,GAAG,EAAGhJ,CAAC,EAC5B,GAAI,CAAC,EACH,OAAO,KACT,MAAM4B,EAAIwK,GAAGjM,CAAC,EAAGgD,EAAI6F,GACnBpH,EACA5B,CACJ,EACE,OAAOmD,EAAI,EAAE,KAAOA,EAAE,KAAOA,EAAE,UAAUnD,CAAC,EAAI,EAAE,UAAUA,CAAC,EAAI,IACjE,CACA,MAAMuB,GAAKpB,GAAMA,aAAaiI,EAAIH,GAAEiD,EAAE/K,EAAE,aAAcA,EAAE,UAAU,CAAC,EAAI8H,GAAEiD,EAAE/K,EAAE,aAAcA,EAAE,SAAS,CAAC,EAAI8H,GAAEiD,EAAE/K,EAAE,kBAAmBA,EAAE,UAAU,CAAC,EAAI8H,GAAEiD,EAAE/K,EAAE,iBAAkBA,EAAE,iBAAiB,CAAC,EAAI8H,GAAEiD,EAAE/K,EAAE,iBAAkBA,EAAE,SAAS,CAAC,EACzO,SAASS,GAAET,EAAGH,EAAG,EAAI,KAAM,CAAE,cAAe,EAAI,GAAK,EAAG,GAAI,CAC1D,MAAM4B,EAAI,KAAK,IAAI,EAAI,EAAG,OAAO,QAAU,EAAE,EAC7C,IAAIuB,EAAIhD,EAAGJ,EAAIC,EAAGkC,EAAIX,GAAE4B,CAAC,EAAGW,EAAIvC,GAAExB,CAAC,EACnC,QAAS,EAAI,EAAG,EAAI,EAAG,IAAK,CAC1B,MAAMyC,EAAIN,EAAIN,EAAIJ,GAAGzB,EAAGoD,CAAC,EAAIA,EAC7B,GAAI,CAACX,EACH,MAAO,GACT,MAAMa,EAAI9B,GAAEiB,CAAC,EAAGY,EAAIU,EAAIlC,EAAIJ,GAAGgB,EAAGzC,CAAC,EAAIA,EACvC,GAAI,CAACqD,EACH,MAAO,GACT,MAAM,EAAI7B,GAAE6B,CAAC,EACb,GAAIC,GAAKzB,GAAK,GAAKA,EACjB,MAAO,CACLY,EAAE,YAAY,aAAaY,EAAE,WAAW,EAAE,MAClD,EACI,GAAId,EAAEE,EAAE,WAAYA,EAAE,SAAS,GAAKY,EAAE,YAAYZ,EAAE,UAAU,EAC5D,MAAO,CAACA,EAAE,UAAU,EACtB,GAAIF,EAAEc,EAAE,WAAYA,EAAE,SAAS,GAAKZ,EAAE,YAAYY,EAAE,UAAU,EAC5D,MAAO,CAACA,EAAE,UAAU,EACtB,GAAIC,EAAI,GAAMnB,GAAK,EAAI,GAAM4B,EAC3B,GAAIT,EAAInB,EAAI,EAAI4B,EAAG,CACjB,KAAM,CAAC1B,EAAGD,CAAC,EAAIK,EAAE,kBAAkB,CACjC,EACV,CAAS,EACD,OAAO8F,GACL,CACE,GAAG1H,GAAEwB,EAAGgB,EAAG,EAAG,CACZ,cAAe,EAAI,CACjC,CAAa,EACD,GAAGxC,GAAEuB,EAAGiB,EAAG,EAAG,CACZ,cAAe,EAAI,CACjC,CAAa,CACF,EACD,CACV,CACA,KAAa,CACL,KAAM,CAAChB,EAAGD,CAAC,EAAIiB,EAAE,kBAAkB,CACjC,EACV,CAAS,EACD,OAAOkF,GACL,CACE,GAAG1H,GAAE4B,EAAGJ,EAAG,EAAG,CACZ,cAAe,EAAI,CACjC,CAAa,EACD,GAAGxB,GAAE4B,EAAGL,EAAG,EAAG,CACZ,cAAe,EAAI,CACjC,CAAa,CACF,EACD,CACV,CACO,CACHgB,EAAIX,EAAGzC,EAAIqD,EAAGlB,EAAImB,EAAGS,EAAI,CAC1B,CACD,MAAM,IAAI,MAAM,mDAAmD,CACrE,CACA,SAAS2I,GAAGtM,EAAGH,EAAG,CAChB,MAAM,EAAI,CAAA,EACV,GAAI,CACF,CAACG,EAAE,WAAYH,CAAC,EAChB,CAACG,EAAE,UAAWH,CAAC,EACf,CAACA,EAAE,WAAYG,CAAC,EAChB,CAACH,EAAE,UAAWG,CAAC,CAChB,EAAC,QAAQ,CAAC,CAACyB,EAAGuB,CAAC,IAAM,CACpBA,EAAE,YAAYvB,CAAC,GAAK,EAAE,KAAKA,CAAC,CAChC,CAAG,EAAG,EAAE,OAAS,EACb,OAAO,KACT,GAAI,EAAE,SAAW,EACf,MAAO,CAACzB,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,EACzB,GAAI,EAAE,SAAW,EACf,OAAOmC,EAAE,EAAE,CAAC,EAAGnC,EAAE,UAAU,GAAKmC,EAAE,EAAE,CAAC,EAAGnC,EAAE,SAAS,EAAI,CAACA,CAAC,EAAI,CAACH,CAAC,EACjE,GAAI,EAAE,SAAW,EACf,MAAO,CAACG,CAAC,CACb,CACA,SAASuM,GAAGvM,EAAGH,EAAG,EAAI,GAAI,CACxB,MAAM,EAAI,KAAK,IAAIG,EAAE,UAAWH,EAAE,SAAS,EAC3C,GAAI,EAAG,CACL,MAAM4B,EAAI6K,GAAGtM,EAAGH,CAAC,EACjB,GAAI4B,EACF,OAAOA,CACV,CACD,OAAOhB,GAAET,EAAGH,EAAG,CAAC,CAClB,CACA,SAAS2M,GAAGxM,EAAGH,EAAG,CAChB,MAAM,EAAI,CAAA,EACV,GAAI,CACF,CAACG,EAAE,WAAYH,CAAC,EAChB,CAACG,EAAE,UAAWH,CAAC,EACf,CAACA,EAAE,WAAYG,CAAC,EAChB,CAACH,EAAE,UAAWG,CAAC,CAChB,EAAC,QAAQ,CAAC,CAACyB,EAAGuB,CAAC,IAAM,CACpBA,EAAE,YAAYvB,CAAC,GAAK,EAAE,KAAKA,CAAC,CAChC,CAAG,EAAG,EAAE,OAAS,EACb,OAAO,KACT,GAAI,EAAE,SAAW,EACf,MAAO,CAACzB,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,EACzB,GAAI,EAAE,SAAW,EACf,OAAOmC,EAAE,EAAE,CAAC,EAAGnC,EAAE,UAAU,GAAKmC,EAAE,EAAE,CAAC,EAAGnC,EAAE,SAAS,EAAI,CAACA,CAAC,EAAI,CAACH,CAAC,EACjE,GAAI,EAAE,SAAW,EACf,MAAO,CAACG,CAAC,CACb,CACA,SAASyM,GAAGzM,EAAGH,EAAG,EAAI,GAAI,CACxB,MAAM,EAAI,KAAK,IAAIG,EAAE,UAAWH,EAAE,SAAS,EAC3C,GAAI,EAAG,CACL,MAAM4B,EAAI+K,GAAGxM,EAAGH,CAAC,EACjB,GAAI4B,EACF,OAAOA,CACV,CACD,OAAOhB,GAAET,EAAGH,EAAG,CAAC,CAClB,CACA,SAAS+J,GAAG5J,EAAGH,EAAG,EAAG,CACnB,GAAIG,aAAauE,GAAK1E,aAAa0E,EAAG,CACpC,MAAM,EAAIgE,GACRvI,EACAH,EACA,GACA,CACN,EACI,OAAO,IAAM,KAAO,GAAK,CAAC,CAAC,CAC5B,CACD,GAAIG,aAAauE,GAAK1E,aAAaqL,EACjC,OAAO1F,GAAExF,EAAGH,EAAG,CAAC,EAClB,GAAIG,aAAakL,GAAKrL,aAAa0E,EACjC,OAAOiB,GAAE3F,EAAGG,EAAG,CAAC,EAClB,GAAIA,aAAakL,GAAKrL,aAAaqL,EACjC,OAAOlG,GAAGhF,EAAGH,EAAG,GAAI,CAAC,EACvB,MAAM,IAAI,MAAM,iBAAiB,CACnC,CACA,SAAS6B,GAAE1B,EAAGH,EAAG,EAAG,CAClB,GAAIG,aAAauE,GAAK1E,aAAa0E,EAAG,CACpC,MAAM,EAAIgE,GACRvI,EACAH,EACA,GACA,CACN,EACI,OAAO,IAAM,KAAO,CAAE,cAAe,CAAE,EAAE,SAAU,GAAI,MAAO,CAAG,EAAG,aAAa0E,EAAI,CAAE,cAAe,CAAA,EAAI,SAAU,CAAC,CAAC,EAAG,MAAO,CAAG,EAAG,CAAE,cAAe,CAAC,CAAC,EAAG,SAAU,CAAE,EAAE,MAAO,CAAC,CACnL,CACD,GAAI,CAACvE,EAAE,YAAY,SAASH,EAAE,WAAW,EACvC,MAAO,CAAE,cAAe,GAAI,SAAU,CAAA,EAAI,MAAO,GACnD,GAAIG,aAAauE,GAAK1E,aAAaqL,EAAG,CACpC,MAAM,EAAI1F,GAAExF,EAAGH,EAAG,CAAC,EACnB,MAAO,CAAE,cAAe,EAAG,SAAU,CAAE,EAAE,MAAO,EAAE,OACnD,CACD,GAAIG,aAAakL,GAAKrL,aAAa0E,EAAG,CACpC,MAAM,EAAIiB,GAAE3F,EAAGG,EAAG,CAAC,EACnB,MAAO,CAAE,cAAe,EAAG,SAAU,CAAE,EAAE,MAAO,EAAE,OACnD,CACD,GAAIA,aAAakL,GAAKrL,aAAaqL,EAAG,CACpC,MAAM,EAAIlG,GACRhF,EACAH,EACA,GACA,CACN,EACI,OAAO,EAAE,OAAS,EAAE,CAAC,YAAaqL,EAAI,CACpC,cAAe,CAAE,EACjB,SAAU,EACV,MAAO,EAAE,MACf,EAAQ,CACF,cAAe,EACf,SAAU,CAAE,EACZ,MAAO,EAAE,MACf,EAAQ,CAAE,cAAe,GAAI,SAAU,CAAA,EAAI,MAAO,EAC/C,CACD,GAAIlL,aAAauE,GAAK1E,aAAauC,EAAG,CACpC,MAAM,EAAIgG,GACRpI,EACAH,EACA,CACN,EACI,MAAO,CAAE,cAAe,EAAG,SAAU,CAAE,EAAE,MAAO,EAAE,OACnD,CACD,GAAIA,aAAa0E,GAAKvE,aAAaoC,EAAG,CACpC,MAAM,EAAIgG,GACRvI,EACAG,EACA,CACN,EACI,MAAO,CAAE,cAAe,EAAG,SAAU,CAAE,EAAE,MAAO,EAAE,OACnD,CACD,GAAIA,aAAakL,GAAKrL,aAAauC,EAAG,CACpC,MAAM,EAAIuD,GAAG3F,EAAGH,CAAC,EACjB,MAAO,CAAE,cAAe,EAAG,SAAU,CAAE,EAAE,MAAO,EAAE,OACnD,CACD,GAAIA,aAAaqL,GAAKlL,aAAaoC,EAAG,CACpC,MAAM,EAAIuD,GAAG9F,EAAGG,CAAC,EACjB,MAAO,CAAE,cAAe,EAAG,SAAU,CAAE,EAAE,MAAO,EAAE,OACnD,CACD,GAAIA,aAAaoC,GAAKvC,aAAauC,EAAG,CACpC,MAAM,EAAImJ,GACRvL,EACAH,EACA,EACN,EACI,OAAO,EAAE,OAAS,EAAE,CAAC,YAAauC,EAAI,CACpC,cAAe,CAAE,EACjB,SAAU,EACV,MAAO,EAAE,MACf,EAAQ,CACF,cAAe,EACf,SAAU,CAAE,EACZ,MAAO,EAAE,MACf,EAAQ,CAAE,cAAe,GAAI,SAAU,CAAA,EAAI,MAAO,EAC/C,CACD,GAAIpC,aAAauE,IAAM1E,aAAawH,IAAKxH,aAAaoI,GAAI,CACxD,MAAM,EAAIqC,GAAGtK,EAAGH,CAAC,EACjB,MAAO,CAAE,cAAe,EAAG,SAAU,CAAE,EAAE,MAAO,EAAE,OACnD,CACD,GAAIA,aAAa0E,IAAMvE,aAAaqH,IAAKrH,aAAaiI,GAAI,CACxD,MAAM,EAAIqC,GAAGzK,EAAGG,CAAC,EACjB,MAAO,CAAE,cAAe,EAAG,SAAU,CAAE,EAAE,MAAO,EAAE,OACnD,CACD,IAAKA,aAAakL,GAAKlL,aAAaoC,IAAMvC,aAAaoI,EAAG,CACxD,MAAM,EAAI0C,GAAG3K,EAAGH,CAAC,EACjB,MAAO,CAAE,cAAe,EAAG,SAAU,CAAE,EAAE,MAAO,EAAE,OACnD,CACD,IAAKA,aAAaqL,GAAKrL,aAAauC,IAAMpC,aAAaiI,EAAG,CACxD,MAAM,EAAI0C,GAAG9K,EAAGG,CAAC,EACjB,MAAO,CAAE,cAAe,EAAG,SAAU,CAAE,EAAE,MAAO,EAAE,OACnD,CACD,IAAKA,aAAakL,GAAKlL,aAAaoC,IAAMvC,aAAawH,GAAG,CACxD,MAAM,EAAIsC,GAAG3J,EAAGH,CAAC,EACjB,MAAO,CAAE,cAAe,EAAG,SAAU,CAAE,EAAE,MAAO,EAAE,OACnD,CACD,IAAKA,aAAaqL,GAAKrL,aAAauC,IAAMpC,aAAaqH,GAAG,CACxD,MAAM,EAAIsC,GAAG9J,EAAGG,CAAC,EACjB,MAAO,CAAE,cAAe,EAAG,SAAU,CAAE,EAAE,MAAO,EAAE,OACnD,CACD,GAAIA,aAAaiI,GAAKpI,aAAaoI,EAAG,CACpC,MAAM,EAAIwE,GACRzM,EACAH,CACN,EACI,OAAO,EAAE,OAAS,EAAE,CAAC,YAAaoI,EAAI,CACpC,cAAe,CAAE,EACjB,SAAU,EACV,MAAO,EAAE,MACf,EAAQ,CACF,cAAe,EACf,SAAU,CAAE,EACZ,MAAO,EAAE,MACf,EAAQ,CAAE,cAAe,GAAI,SAAU,CAAA,EAAI,MAAO,EAC/C,CACD,GAAIjI,aAAaiI,GAAKpI,aAAawH,IAAKxH,aAAaoI,GAAKjI,aAAaqH,GAAG,CACxE,MAAM,EAAI5G,GAAET,EAAGH,CAAC,EAChB,MAAO,CAAE,cAAe,EAAG,SAAU,CAAE,EAAE,MAAO,EAAE,OACnD,CACD,GAAIG,aAAaqH,IAAKxH,aAAawH,GAAG,CACpC,MAAM,EAAIkF,GACRvM,EACAH,CACN,EACI,OAAO,EAAE,OAAS,EAAE,CAAC,YAAawH,GAAI,CACpC,cAAe,CAAE,EACjB,SAAU,EACV,MAAO,EAAE,MACf,EAAQ,CACF,cAAe,EACf,SAAU,CAAE,EACZ,MAAO,EAAE,MACf,EAAQ,CAAE,cAAe,GAAI,SAAU,CAAA,EAAI,MAAO,EAC/C,CACD,MAAM,IAAI,MAAM,iBAAiB,CACnC,CACA,SAASoB,GAAGzI,EAAG,CACb,MAAMH,EAAI,CAAA,EACV,QAAS,EAAI,EAAG,EAAIG,EAAG,IACrB,QAAS,EAAI,EAAG,GAAK,EAAG,IACtBH,EAAE,KAAK,CAAC,EAAG,CAAC,CAAC,EACjB,OAAOA,CACT,CACA,SAAU6D,GAAG1D,EAAG,CACd,SAAW,CAACH,EAAG,CAAC,IAAK4I,GAAGzI,EAAE,MAAM,EAC9BH,IAAM,IAAM,KAAM,CAACG,EAAEH,CAAC,EAAGG,EAAE,CAAC,CAAC,EACjC,CACA,MAAMoD,WAAWC,EAAG,CAClB,YAAYR,EAAG,CAAE,aAAc1C,EAAI,EAAI,EAAG,GAAI,CAC5C,QACAuH,GAAE,KAAM,UAAU,EAClBA,GAAE,KAAM,eAAgB,IAAI,EAC5BvH,GAAKoD,GAAGV,CAAC,EAAG,KAAK,SAAWA,CAC7B,CACD,IAAI,MAAO,CACT,OAAO,KAAK,SAAS,IAAKA,GAAMA,EAAE,IAAI,EAAE,KAAK;AAAA,CAChD,EAAI;AAAA,CAEF,CACD,IAAI,MAAO,CACT,OAAO,KAAK,IACb,CACD,IAAI,YAAa,CACf,OAAO,KAAK,SAAS,CAAC,EAAE,UACzB,CACD,IAAI,WAAY,CACd,OAAO,KAAK,SAAS,KAAK,SAAS,OAAS,CAAC,EAAE,SAChD,CACD,IAAI,eAAgB,CAClB,OAAO,KAAK,SAAS,MACtB,CACD,SAASA,EAAG,CACV,OAAO,KAAK,SAAS,KAAM1C,GAAMA,EAAE,YAAY0C,CAAC,CAAC,CAClD,CACD,WAAWA,EAAG,CACZ,OAAO,KAAK,YAAY,SAASA,EAAE,WAAW,EAAI,KAAK,SAAS,KAC7D1C,GAAM0C,EAAE,SAAS,KACfpB,GAAMC,GAAEvB,EAAGsB,CAAC,EAAE,MAAQ,CACxB,CACF,EAAG,EACL,CACD,oBAAoBoB,EAAG,CACrB,OAAO,KAAK,SAAS,QAAS1C,GAAM0C,EAAE,SAAS,QAASpB,GAAMtB,EAAE,YAAY,SAASsB,EAAE,WAAW,EAAIC,GAAEvB,EAAGsB,CAAC,EAAE,SAAW,CAAE,CAAA,CAAC,CAC7H,CACD,IAAI,aAAc,CAChB,GAAI,KAAK,eAAiB,KAAM,CAC9B,IAAIoB,EAAI,KAAK,SAAS,CAAC,EAAE,YACzB,KAAK,SAAS,MAAM,CAAC,EAAE,QAAS1C,GAAM,CACpC0C,EAAIA,EAAE,MAAM1C,EAAE,WAAW,CACjC,CAAO,EAAG,KAAK,aAAe0C,CACzB,CACD,OAAO,KAAK,YACb,CACD,CAAC,OAAO,IAAI,4BAA4B,CAAC,GAAI,CAC3C,OAAO,KAAK,IACb,CACH,CACA,SAAS,GAAG7C,EAAGH,EAAI,SAAU,CAC3B4I,GAAGzI,EAAE,MAAM,EAAE,QACX,CAAC,CAAC,EAAG,CAAC,IAAM,CACV,GAAI,IAAM,EACR,OACF,MAAMyB,EAAIzB,EAAE,CAAC,EAAGgD,EAAIhD,EAAE,CAAC,EAAGJ,EAAI8B,GAAED,EAAGuB,CAAC,EAAGjB,EAAI,KAAK,IAAIN,EAAE,UAAWuB,EAAE,SAAS,EAC5E,GAAIpD,EAAE,QAAU,EAAG,CACjB,GAAIA,EAAE,QAAU,GAAK,CAACA,EAAE,SAAS,OAAQ,CACvC,MAAM+D,EAAI,EAAI,EAAG,EAAI/D,EAAE,cAAc,CAAC,EACtC,GAAI+D,IAAM,GAAKxB,EAAEV,EAAE,WAAY,EAAGM,CAAC,GAAK4B,IAAM,IAAMxB,EAAEV,EAAE,UAAW,EAAGM,CAAC,GAAK4B,IAAM3D,EAAE,OAAS,GAAKmC,EAAEV,EAAE,UAAW,EAAGM,CAAC,GAAKI,EAAEa,EAAE,WAAY,EAAGjB,CAAC,GAAK,CAAC4B,IAAM3D,EAAE,OAAS,GAAKmC,EAAEV,EAAE,WAAY,EAAGM,CAAC,GAAKI,EAAEa,EAAE,UAAW,EAAGjB,CAAC,EACpN,MACH,CACD,GAAI,EAAEnC,EAAE,QAAU,GAAKI,EAAE,SAAW,IAAMmC,EACxCV,EAAE,WACF7B,EAAE,cAAc,CAAC,EACjBmC,CACV,GAAaI,EACHV,EAAE,UACF7B,EAAE,cAAc,CAAC,EACjBmC,CACV,GAAaI,EACHV,EAAE,WACF7B,EAAE,cAAc,CAAC,EACjBmC,CACV,GAAaI,EACHV,EAAE,UACF7B,EAAE,cAAc,CAAC,EACjBmC,CACV,IACU,MAAM,IAAI,MACR,GAAGlC,CAAC,8CAA8C4B,EAAE,IAAI,QAAQuB,EAAE,IAAI,UAAU,KAAK,UACnFpD,EAAE,aAChB,CAAa,EACb,CACO,CACF,CACL,CACA,CACA,SAAS2D,GAAGvD,EAAGH,EAAI,SAAU,CAC3B,GAAIG,EAAE,SAAW,EACf,MAAM,IAAI,MAAM,GAAGH,CAAC,iCAAiC,EACvDa,GAAE,CAACV,EAAE,MAAM,EAAG,EAAE,EAAGA,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,QAC9B,CAAC,CAAC,EAAG,CAAC,IAAM,CACV,GAAI,CAACmC,EAAE,EAAE,UAAW,EAAE,UAAU,EAC9B,MAAM,IAAI,MACR,GAAGtC,CAAC,oCAAoC,EAAE,IAAI,QAAQ,EAAE,IAAI,UACtE,CACK,CACL,EAAK,GAAGG,EAAGH,CAAC,CACZ,CACA,SAAS8I,GAAG3I,EAAGH,EAAG,CAChB,MAAO,CAAC,EAAEG,aAAauE,GAAK1E,aAAa0E,GAAKmI,GAAG1M,EAAE,EAAGH,EAAE,CAAC,GAAKG,aAAakL,GAAKrL,aAAaqL,GAAK/I,EAAEnC,EAAE,OAAQH,EAAE,MAAM,GAAKG,EAAE,OAASH,EAAE,OAASG,EAAE,UACrJ,CACA,SAASyJ,GAAGzJ,EAAGH,EAAG,CAChB,GAAIG,aAAauE,GAAK1E,aAAa0E,EACjC,OAAO,IAAIA,EAAEvE,EAAE,WAAYH,EAAE,SAAS,EACxC,GAAIG,aAAakL,GAAKrL,aAAaqL,EACjC,OAAO,IAAIA,EACTlL,EAAE,WACFH,EAAE,UACFG,EAAE,OACFA,EAAE,SACR,EACE,MAAM,IAAI,MAAM,iBAAiB,CACnC,CACA,SAAS4I,GAAG5I,EAAG,CACb,IAAIH,EAAI,GACR,MAAM,EAAI,CAAA,EACV,UAAW,KAAKG,EAAE,SAAU,CAC1B,GAAI,EAAE,SAAW,EAAG,CAClB,EAAE,KAAK,CAAC,EACR,QACD,CACD,MAAMyB,EAAI,EAAE,EAAE,OAAS,CAAC,EACxBkH,GAAGlH,EAAG,CAAC,GAAK5B,EAAI,GAAI,EAAE,IAAK,EAAE,EAAE,KAAK4J,GAAGhI,EAAG,CAAC,CAAC,GAAK,EAAE,KAAK,CAAC,CAC1D,CACD,GAAIU,EAAEnC,EAAE,WAAYA,EAAE,SAAS,GAAK2I,GAClC,EAAE,CAAC,EACH,EAAE,EAAE,OAAS,CAAC,CAClB,EAAK,CACD9I,EAAI,GACJ,MAAM,EAAI,EAAE,MACZ,EAAE,CAAC,EAAI4J,GAAG,EAAG,EAAE,CAAC,CAAC,CAClB,CACD,OAAO5J,EAAI,EAAI,IACjB,CACA,MAAM0H,WAAUnE,EAAG,CACjB,aAAc,CACZ,MAAM,GAAG,SAAS,EAClBsE,GAAE,KAAM,aAAc,QAAQ,CAC/B,CACD,SAAU,CACR,MAAM7E,EAAI,KAAK,SAAS,IAAK1C,GAAMA,EAAE,QAAO,CAAE,EAC9C,OAAO0C,EAAE,QAAS,EAAE,IAAI0E,GAAE1E,EAAG,CAAE,aAAc,EAAE,CAAE,CAClD,CACD,OAAQ,CACN,OAAO,IAAI0E,GACT,KAAK,SAAS,IAAK1E,GAAMA,EAAE,OAAO,EAClC,CAAE,aAAc,EAAI,CAC1B,CACG,CACD,OAAOA,EAAG,CACR,GAAI,CAACV,EAAE,KAAK,UAAWU,EAAE,UAAU,EACjC,MAAM,QAAQ,MAAM,KAAK,KAAMA,EAAE,IAAI,EAAG,IAAI,MAAM,wDAAwD,EAC5G,OAAO,IAAI0E,GAAE,CAAC,GAAG,KAAK,SAAU,GAAG1E,EAAE,QAAQ,CAAC,CAC/C,CACD,UAAW,CACT,MAAMA,EAAI+F,GAAG,IAAI,EACjB,OAAO/F,EAAI,IAAI0E,GAAE1E,EAAG,CAAE,aAAc,GAAI,EAAI,IAC7C,CACD,UAAUA,EAAG,CACX,OAAO,IAAI0E,GACT,KAAK,SAAS,IAAKpH,GAAMA,EAAE,UAAU0C,CAAC,CAAC,EACvC,CAAE,aAAc,EAAI,CAC1B,CACG,CACH,CACA,MAAM8J,GAAK,CAAC3M,EAAGH,IAAM,CACnB,MAAM,EAAI+M,GAAG/M,EAAG,CACd,EAAG,CAAC,EAAG,CAAC,EACR,WAAYG,EACZ,UAAWH,EAAE,SACjB,CAAG,EACD,GAAI,IAAM,WACR,MAAO,GACT,KAAM,CAAE,mBAAoB,EAAG,mBAAoB4B,CAAC,EAAK,EACzD,GAAI,CAAC5B,EAAE,iBAAiB,CAAC,GAAK4B,GAAK,CAAC5B,EAAE,UACpC,MAAO,GACT,GAAI,KAAK,IAAI,CAAC,EAAIA,EAAE,WAAa,KAAK,IAAI,EAAI,CAAC,EAAIA,EAAE,UAAW,CAC9D,KAAM,EAAGmD,CAAC,EAAInD,EAAE,SAChB,OAAOG,EAAE,CAAC,EAAIgD,EAAI,EAAI,EAAI,CAC3B,CACD,MAAO,EACT,EACA,MAAMnB,EAAG,CACP,YAAYhC,EAAG,CACb6H,GAAE,KAAM,SAAU,CAAC,EACnBA,GAAE,KAAM,SAAS,EACjB,KAAK,QAAU7H,CAChB,CACD,OAAOA,EAAG,EAAI,GAAI,CAChB,CAAC,GAAK,CAAC,KAAK,QAAQ,YAAYA,CAAC,IAAMsC,EAAEtC,EAAG,KAAK,QAAQ,UAAU,EAAI,KAAK,QAAU,KAAK,QAAQ,oBAAoB,CAAC,EAAI,EAAI,EAAI,EAAIsC,EAAEtC,EAAG,KAAK,QAAQ,SAAS,EAAI,KAAK,QAAU,KAAK,QAAQ,mBAAmB,CAAC,EAAI,EAAI,EAAI,EAAI,KAAK,QAAU,EACvP,CACD,IAAI,OAAQ,CACV,OAAO,KAAK,MACb,CACH,CACA,MAAMgN,GAAK,CAAC7M,EAAGH,IAAM,CACnB,MAAM,EAAIA,EAAE,UAAW,EAAI,KAAK,IAAIG,EAAE,CAAC,EAAIH,EAAE,OAAO,CAAC,CAAC,EACtD,GAAI,EAAIA,EAAE,OAAS,EACjB,MAAO,GACT,MAAM4B,EAAIqL,GAAG9M,EAAGH,EAAE,MAAM,EAAGmD,EAAInD,EAAE,OAASA,EAAE,OAAQD,EAAI,EAAI,EAC5D,GAAI,KAAK,IAAI6B,EAAIuB,CAAC,EAAIpD,GAAKC,EAAE,YAAYG,CAAC,EACxC,MAAO,GACT,MAAM+B,EAAIN,EAAIuB,EAAIpD,EAClB,GAAImC,GAAKlC,EAAE,OAAO,CAAC,EAAIG,EAAE,CAAC,EACxB,MAAO,GACT,MAAM2D,EAAI,KAAK,KACb9D,EAAE,OAASA,EAAE,OAAS,EAAI,CAC3B,EAAE,EAAI,IAAIgC,GAAGhC,CAAC,EACf,OAAO,EAAE,OAAO,CAACA,EAAE,OAAO,CAAC,EAAI8D,EAAG3D,EAAE,CAAC,CAAC,CAAC,EAAG+B,GAAK,EAAE,OAAO,CAAClC,EAAE,OAAO,CAAC,EAAI8D,EAAG3D,EAAE,CAAC,CAAC,CAAC,EAAG,EAAE,KACtF,EAAG+M,GAAK,CAAC/M,EAAGH,IAAM,CAChB,MAAM,EAAIA,EAAE,YAAY,KAAOA,EAAE,YAAY,MAAQ,EAAG,EAAI,IAAI0E,EAAEvE,EAAG,CAAC,EAAGA,EAAE,CAAC,CAAC,CAAC,EAAGyB,EAAI,IAAII,GAAGhC,CAAC,EAC7F,OAAOuI,GAAG,EAAGvI,CAAC,EAAE,QAASmD,GAAM,CAC7BvB,EAAE,OAAOuB,EAAG,EAAE,CAClB,CAAG,EAAGvB,EAAE,KACR,EAAGuL,GAAK,CAAChN,EAAGH,IAAM,CAChB,MAAM,EAAI,IAAIgC,GAAGhC,CAAC,EAClB,OAAOA,EAAE,UAAUG,EAAE,CAAC,CAAC,EAAE,IAAK,GAAM,CAClC,GAAI,CACF,OAAOH,EAAE,WAAW,CAAC,CAC3B,MAAY,CACN,OAAO,IACR,CACL,CAAG,EAAE,OAAQ,GAAM,IAAM,IAAI,EAAE,OAAQ,GAAM,CACzC,KAAM,CAAC4B,CAAC,EAAI,EACZ,OAAOA,GAAKzB,EAAE,CAAC,CACnB,CAAG,EAAE,QAAS,GAAM,CAChB,EAAE,OAAO,EAAG,EAAE,CAClB,CAAG,EAAG,EAAE,KACR,EACA,SAASiN,GAAGjN,EAAGH,EAAG,CAChB,GAAIA,aAAa0E,EACf,OAAOoI,GAAG3M,EAAGH,CAAC,EAChB,GAAIA,aAAaqL,EACf,OAAO2B,GAAG7M,EAAGH,CAAC,EAChB,GAAIA,aAAauC,EACf,OAAO2K,GAAG/M,EAAGH,CAAC,EAChB,GAAIA,aAAawH,IAAKxH,aAAaoI,EACjC,OAAO+E,GAAGhN,EAAGH,CAAC,EAChB,MAAM,IAAI,MAAM,iBAAiB,CACnC,CACA,MAAMe,WAAUwC,EAAG,CACjB,YAAYP,EAAG,CAAE,aAAc1C,EAAI,EAAI,EAAG,GAAI,CAC5C,MAAM0C,EAAG,CAAE,aAAc,EAAI,CAAA,EAC7B6E,GAAE,KAAM,aAAc,MAAM,EAC5BA,GAAE,KAAM,aAAc,IAAI,EAC1BvH,GAAK,GAAG0C,CAAC,CACV,CACD,IAAI,WAAY,CACd,GAAI,KAAK,aAAe,KAAM,CAC5B,MAAMA,EAAI,KAAK,SAAS,QAASpB,GAAMA,aAAa8C,EAAI,CAAC9C,EAAE,UAAU,EAAI,CAACA,EAAE,WAAYA,EAAE,WAAW,EAAG,CAAC,CAAC,EAAGtB,EAAI0C,EAAE,IAAI,CAACpB,EAAGuB,IAAM,CAC/H,MAAM,EAAIH,GAAGG,EAAI,GAAKH,EAAE,MAAM,EAC9B,OAAQ,EAAE,CAAC,EAAIpB,EAAE,CAAC,IAAM,EAAE,CAAC,EAAIA,EAAE,CAAC,EAC1C,CAAO,EAAE,OAAO,CAACA,EAAGuB,IAAMvB,EAAIuB,EAAG,CAAC,EAC5B,KAAK,WAAa7C,EAAI,CACvB,CACD,OAAO,KAAK,UACb,CACD,OAAQ,CACN,OAAO,IAAIS,GACT,KAAK,SAAS,IAAKiC,GAAMA,EAAE,OAAO,EAClC,CAAE,aAAc,EAAI,CAC1B,CACG,CACD,SAAU,CACR,MAAMA,EAAI,KAAK,SAAS,IAAK1C,GAAMA,EAAE,QAAO,CAAE,EAC9C,OAAO0C,EAAE,QAAS,EAAE,IAAIjC,GAAEiC,EAAG,CAAE,aAAc,EAAE,CAAE,CAClD,CACD,UAAUA,EAAG,CACX,OAAO,IAAIjC,GACT,KAAK,SAAS,IAAKT,GAAMA,EAAE,UAAU0C,CAAC,CAAC,EACvC,CAAE,aAAc,EAAI,CAC1B,CACG,CACD,SAASA,EAAG,CACV,OAAO,KAAK,SAASA,CAAC,GAAK,CAAC,KAAK,YAAY,SAASA,CAAC,EAAI,GAAK,KAAK,SAAS,OAAO,CAACpB,EAAGuB,IAAMvB,EAAIwL,GAAGpK,EAAGG,CAAC,EAAG,CAAC,EAAI,IAAM,CACzH,CACD,UAAW,CACT,MAAMH,EAAI+F,GAAG,IAAI,EACjB,OAAO/F,EAAI,IAAIjC,GAAEiC,EAAG,CAAE,aAAc,GAAI,EAAI,IAC7C,CACH,CACA,SAAS,GAAG7C,EAAG,CACb,GAAIuD,GAAGvD,EAAG,MAAM,EAAG,CAACmC,EAAEnC,EAAE,CAAC,EAAE,WAAYA,EAAEA,EAAE,OAAS,CAAC,EAAE,SAAS,EAC9D,MAAM,IAAI,MAAM,6BAA6B,CACjD,CACA,MAAMkN,GAAK,CACT3I,EACA2G,EACA9I,EACA6F,EACAZ,EACF,EACA,SAAS8F,GAAGnN,EAAG,CACb,OAAOkN,GAAG,KAAMrN,GAAMG,aAAaH,CAAC,CACtC,CACA,SAASU,GAAGP,EAAG,CACb,GAAIA,aAAauE,EACf,MAAO,CACL,KAAMvE,EAAE,YACR,WAAYA,EAAE,WACd,UAAWA,EAAE,SACnB,EACE,GAAIA,aAAakL,EACf,MAAO,CACL,KAAMlL,EAAE,YACR,WAAYA,EAAE,WACd,UAAWA,EAAE,UACb,OAAQA,EAAE,OACV,UAAWA,EAAE,SACnB,EACE,GAAIA,aAAaoC,EACf,MAAO,CACL,KAAMpC,EAAE,YACR,WAAYA,EAAE,WACd,UAAWA,EAAE,UACb,OAAQA,EAAE,OACV,UAAWA,EAAE,UACb,YAAaA,EAAE,YACf,YAAaA,EAAE,YACf,UAAWA,EAAE,SACnB,EACE,GAAIA,aAAaiI,EACf,MAAO,CACL,KAAMjI,EAAE,YACR,WAAYA,EAAE,WACd,UAAWA,EAAE,UACb,aAAcA,EAAE,YACtB,EACE,GAAIA,aAAaqH,GACf,MAAO,CACL,KAAMrH,EAAE,YACR,WAAYA,EAAE,WACd,UAAWA,EAAE,UACb,kBAAmBA,EAAE,kBACrB,iBAAkBA,EAAE,gBAC1B,EACE,MAAM,IAAI,MAAM,sBAAsB,CACxC,CACA,SAAS4H,GAAG5H,EAAG,CACb,MAAO,CACL,KAAM,OACN,SAAUA,EAAE,SAAS,IAAIO,EAAE,CAC/B,CACA,CACA,SAASoB,GAAG3B,EAAG,CACb,MAAO,CACL,KAAM,SACN,QAAS4H,GAAG5H,EAAE,OAAO,EACrB,MAAOA,EAAE,MAAM,IAAI4H,EAAE,CACzB,CACA,CACA,SAASwF,GAAGpN,EAAG,CACb,MAAO,CACL,KAAM,UACN,QAASA,EAAE,QAAQ,IAAI2B,EAAE,CAC7B,CACA,CACA,SAASX,GAAGhB,EAAG,CACb,GAAIA,aAAaF,GACf,OAAOsN,GAAGpN,CAAC,EACb,GAAIA,aAAa+H,GACf,OAAOpG,GAAG3B,CAAC,EACb,GAAIA,aAAaY,GACf,OAAOgH,GAAG5H,CAAC,EACb,GAAImN,GAAGnN,CAAC,EACN,OAAOO,GAAGP,CAAC,EACb,MAAM,IAAI,MAAM,oBAAoB,CACtC,CACA,MAAMqN,EAAG,CACP,aAAc,CACZ,KAAK,IAAM,CAAA,EAAI,KAAK,OAAS,GAAI,KAAK,OAAS,CAChD,CACD,OAAQ,CACN,KAAK,OAAS,CACf,CACD,KAAKxN,EAAG,EAAG,CACT,IAAI,EAAI,KAAK,SACb,KAAO,EAAI,GAAK,CACd,MAAM4B,EAAI,EAAI,GAAK,EAAGuB,EAAI,KAAK,OAAOvB,CAAC,EACvC,GAAI,GAAKuB,EACP,MACF,KAAK,IAAI,CAAC,EAAI,KAAK,IAAIvB,CAAC,EAAG,KAAK,OAAO,CAAC,EAAIuB,EAAG,EAAIvB,CACpD,CACD,KAAK,IAAI,CAAC,EAAI5B,EAAG,KAAK,OAAO,CAAC,EAAI,CACnC,CACD,KAAM,CACJ,GAAI,KAAK,SAAW,EAClB,OACF,MAAMA,EAAI,KAAK,IAAI,CAAC,EACpB,GAAI,KAAK,SAAU,KAAK,OAAS,EAAG,CAClC,MAAM,EAAI,KAAK,IAAI,CAAC,EAAI,KAAK,IAAI,KAAK,MAAM,EAAG,EAAI,KAAK,OAAO,CAAC,EAAI,KAAK,OAAO,KAAK,MAAM,EAAG4B,EAAI,KAAK,QAAU,EACjH,IAAIuB,EAAI,EACR,KAAOA,EAAIvB,GAAK,CACd,IAAI7B,GAAKoD,GAAK,GAAK,EACnB,MAAMjB,EAAInC,EAAI,EACd,IAAI+D,EAAI,KAAK,IAAI/D,CAAC,EAAG,EAAI,KAAK,OAAOA,CAAC,EACtC,MAAMyC,EAAI,KAAK,OAAON,CAAC,EACvB,GAAIA,EAAI,KAAK,QAAUM,EAAI,IAAMzC,EAAImC,EAAG4B,EAAI,KAAK,IAAI5B,CAAC,EAAG,EAAIM,GAAI,GAAK,EACpE,MACF,KAAK,IAAIW,CAAC,EAAIW,EAAG,KAAK,OAAOX,CAAC,EAAI,EAAGA,EAAIpD,CAC1C,CACD,KAAK,IAAIoD,CAAC,EAAI,EAAG,KAAK,OAAOA,CAAC,EAAI,CACnC,CACD,OAAOnD,CACR,CACD,MAAO,CACL,GAAI,KAAK,SAAW,EAClB,OAAO,KAAK,IAAI,CAAC,CACpB,CACD,WAAY,CACV,GAAI,KAAK,SAAW,EAClB,OAAO,KAAK,OAAO,CAAC,CACvB,CACD,QAAS,CACP,KAAK,IAAI,OAAS,KAAK,OAAO,OAAS,KAAK,MAC7C,CACH,CACA,MAAM2I,GAAK,CACT,UACA,WACA,kBACA,WACA,YACA,WACA,YACA,aACA,YACF,EAAG7H,GAAK,EACR,MAAMI,EAAG,CACP,OAAO,KAAKlB,EAAG,CACb,GAAI,CAACA,GAAKA,EAAE,aAAe,QAAUA,EAAE,OACrC,MAAM,IAAI,MAAM,+DAA+D,EACjF,KAAM,CAAC,EAAG,CAAC,EAAI,IAAI,WAAWA,EAAG,EAAG,CAAC,EACrC,GAAI,IAAM,IACR,MAAM,IAAI,MAAM,kDAAkD,EACpE,GAAI,GAAK,IAAMc,GACb,MAAM,IAAI,MAAM,QAAQ,GAAK,CAAC,wBAAwBA,EAAE,GAAG,EAC7D,KAAM,CAACc,CAAC,EAAI,IAAI,YAAY5B,EAAG,EAAG,CAAC,EAAG,CAACmD,CAAC,EAAI,IAAI,YAAYnD,EAAG,EAAG,CAAC,EACnE,OAAO,IAAIkB,GAAGiC,EAAGvB,EAAG+G,GAAG,EAAI,EAAE,EAAG,OAAQ3I,CAAC,CAC1C,CACD,YAAYA,EAAG,EAAI,GAAI,EAAI,aAAc4B,EAAI,YAAauB,EAAG,CAC3D,GAAInD,IAAM,OACR,MAAM,IAAI,MAAM,sCAAsC,EACxD,GAAI,MAAMA,CAAC,GAAKA,GAAK,EACnB,MAAM,IAAI,MAAM,8BAA8BA,CAAC,GAAG,EACpD,KAAK,SAAW,CAACA,EAAG,KAAK,SAAW,KAAK,IAAI,KAAK,IAAI,CAAC,EAAG,CAAC,EAAG,KAAK,EACnE,IAAID,EAAIC,EAAGkC,EAAInC,EACf,KAAK,aAAe,CAACA,EAAI,CAAC,EAC1B,GACEA,EAAI,KAAK,KAAKA,EAAI,KAAK,QAAQ,EAAGmC,GAAKnC,EAAG,KAAK,aAAa,KAAKmC,EAAI,CAAC,QACjEnC,IAAM,GACb,KAAK,UAAY,GAAK,aAAc,KAAK,eAAiBmC,EAAI,MAAQ,YAAc,YACpF,MAAM4B,EAAI6E,GAAG,QAAQ,KAAK,SAAS,EAAG,EAAIzG,EAAI,EAAI,KAAK,UAAU,kBACjE,GAAI4B,EAAI,EACN,MAAM,IAAI,MAAM,iCAAiC,CAAC,GAAG,EACvDX,GAAKA,EAAE,aAAe,QAAU,CAACA,EAAE,QAAU,KAAK,KAAOA,EAAG,KAAK,OAAS,IAAI,KAAK,UAAU,KAAK,KAAM,EAAGjB,EAAI,CAAC,EAAG,KAAK,SAAW,IAAI,KAAK,eAAe,KAAK,KAAM,EAAI,EAAGA,CAAC,EAAG,KAAK,KAAOA,EAAI,EAAG,KAAK,KAAO,KAAK,OAAO,KAAK,KAAO,CAAC,EAAG,KAAK,KAAO,KAAK,OAAO,KAAK,KAAO,CAAC,EAAG,KAAK,KAAO,KAAK,OAAO,KAAK,KAAO,CAAC,EAAG,KAAK,KAAO,KAAK,OAAO,KAAK,KAAO,CAAC,IAAM,KAAK,KAAO,IAAIN,EAAE,EAAI,EAAIM,EAAI,KAAK,eAAe,iBAAiB,EAAG,KAAK,OAAS,IAAI,KAAK,UAAU,KAAK,KAAM,EAAGA,EAAI,CAAC,EAAG,KAAK,SAAW,IAAI,KAAK,eAAe,KAAK,KAAM,EAAI,EAAGA,CAAC,EAAG,KAAK,KAAO,EAAG,KAAK,KAAO,IAAO,KAAK,KAAO,IAAO,KAAK,KAAO,KAAQ,KAAK,KAAO,KAAQ,IAAI,WAAW,KAAK,KAAM,EAAG,CAAC,EAAE,IAAI,CAAC,KAAMpB,IAAM,GAAKgD,CAAC,CAAC,EAAG,IAAI,YAAY,KAAK,KAAM,EAAG,CAAC,EAAE,CAAC,EAAI,EAAG,IAAI,YAAY,KAAK,KAAM,EAAG,CAAC,EAAE,CAAC,EAAI9D,GAAI,KAAK,OAAS,IAAIwN,EAChyB,CACD,IAAIxN,EAAG,EAAG,EAAG4B,EAAG,CACd,MAAMuB,EAAI,KAAK,MAAQ,EAAGpD,EAAI,KAAK,OACnC,OAAO,KAAK,SAASoD,CAAC,EAAIA,EAAGpD,EAAE,KAAK,MAAM,EAAIC,EAAGD,EAAE,KAAK,MAAM,EAAI,EAAGA,EAAE,KAAK,MAAM,EAAI,EAAGA,EAAE,KAAK,MAAM,EAAI6B,EAAG5B,EAAI,KAAK,OAAS,KAAK,KAAOA,GAAI,EAAI,KAAK,OAAS,KAAK,KAAO,GAAI,EAAI,KAAK,OAAS,KAAK,KAAO,GAAI4B,EAAI,KAAK,OAAS,KAAK,KAAOA,GAAIuB,CACtP,CACD,QAAS,CACP,GAAI,KAAK,MAAQ,IAAM,KAAK,SAC1B,MAAM,IAAI,MAAM,SAAS,KAAK,MAAQ,CAAC,wBAAwB,KAAK,QAAQ,GAAG,EACjF,MAAMnD,EAAI,KAAK,OACf,GAAI,KAAK,UAAY,KAAK,SAAU,CAClCA,EAAE,KAAK,MAAM,EAAI,KAAK,KAAMA,EAAE,KAAK,MAAM,EAAI,KAAK,KAAMA,EAAE,KAAK,MAAM,EAAI,KAAK,KAAMA,EAAE,KAAK,MAAM,EAAI,KAAK,KAC1G,MACD,CACD,MAAM,EAAI,KAAK,KAAO,KAAK,MAAQ,EAAG,EAAI,KAAK,KAAO,KAAK,MAAQ,EAAG4B,EAAI,IAAI,YAAY,KAAK,QAAQ,EAAGuB,EAAK,MAC/G,QAASpD,EAAI,EAAGmC,EAAI,EAAGnC,EAAI,KAAK,SAAUA,IAAK,CAC7C,MAAM+D,EAAI9D,EAAEkC,GAAG,EAAG,EAAIlC,EAAEkC,GAAG,EAAGM,EAAIxC,EAAEkC,GAAG,EAAGmB,EAAIrD,EAAEkC,GAAG,EAAGkB,EAAI,KAAK,MAAMD,IAAMW,EAAItB,GAAK,EAAI,KAAK,MAAQ,CAAC,EAAG,EAAI,KAAK,MAAMW,IAAM,EAAIE,GAAK,EAAI,KAAK,MAAQ,CAAC,EACzJzB,EAAE7B,CAAC,EAAI,GAAGqD,EAAG,CAAC,CACf,CACD/C,GAAGuB,EAAG5B,EAAG,KAAK,SAAU,EAAG,KAAK,SAAW,EAAG,KAAK,QAAQ,EAC3D,QAASD,EAAI,EAAGmC,EAAI,EAAGnC,EAAI,KAAK,aAAa,OAAS,EAAGA,IAAK,CAC5D,MAAM+D,EAAI,KAAK,aAAa/D,CAAC,EAC7B,KAAOmC,EAAI4B,GAAK,CACd,MAAM,EAAI5B,EACV,IAAIM,EAAIxC,EAAEkC,GAAG,EAAGmB,EAAIrD,EAAEkC,GAAG,EAAGkB,EAAIpD,EAAEkC,GAAG,EAAG,EAAIlC,EAAEkC,GAAG,EACjD,QAASE,EAAI,EAAGA,EAAI,KAAK,UAAYF,EAAI4B,EAAG1B,IAC1CI,EAAI,KAAK,IAAIA,EAAGxC,EAAEkC,GAAG,CAAC,EAAGmB,EAAI,KAAK,IAAIA,EAAGrD,EAAEkC,GAAG,CAAC,EAAGkB,EAAI,KAAK,IAAIA,EAAGpD,EAAEkC,GAAG,CAAC,EAAG,EAAI,KAAK,IAAI,EAAGlC,EAAEkC,GAAG,CAAC,EACnG,KAAK,SAAS,KAAK,MAAQ,CAAC,EAAI,EAAGlC,EAAE,KAAK,MAAM,EAAIwC,EAAGxC,EAAE,KAAK,MAAM,EAAIqD,EAAGrD,EAAE,KAAK,MAAM,EAAIoD,EAAGpD,EAAE,KAAK,MAAM,EAAI,CACjH,CACF,CACF,CACD,OAAOA,EAAG,EAAG,EAAG4B,EAAGuB,EAAG,CACpB,GAAI,KAAK,OAAS,KAAK,OAAO,OAC5B,MAAM,IAAI,MAAM,6CAA6C,EAC/D,IAAIpD,EAAI,KAAK,OAAO,OAAS,EAC7B,MAAMmC,EAAI,CAAA,EAAI4B,EAAI,GAClB,KAAO/D,IAAM,QAAU,CACrB,MAAM,EAAI,KAAK,IAAIA,EAAI,KAAK,SAAW,EAAGmG,GAAGnG,EAAG,KAAK,YAAY,CAAC,EAClE,QAASyC,EAAIzC,EAAGyC,EAAI,EAAGA,GAAK,EAAG,CAC7B,GAAI,EAAI,KAAK,OAAOA,CAAC,GAAKZ,EAAI,KAAK,OAAOY,EAAI,CAAC,GAAKxC,EAAI,KAAK,OAAOwC,EAAI,CAAC,GAAK,EAAI,KAAK,OAAOA,EAAI,CAAC,EACjG,SACF,MAAMa,EAAI,KAAK,SAASb,GAAK,CAAC,EAAI,EAClCzC,GAAK,KAAK,SAAW,EAAImC,EAAE,KAAKmB,CAAC,GAAKF,IAAM,QAAUA,EAAEE,CAAC,IAAMS,EAAE,KAAKT,CAAC,CACxE,CACDtD,EAAImC,EAAE,KACP,CACD,OAAO4B,CACR,CACD,UAAU9D,EAAG,EAAG,EAAI,IAAO4B,EAAI,IAAOuB,EAAG,CACvC,GAAI,KAAK,OAAS,KAAK,OAAO,OAC5B,MAAM,IAAI,MAAM,6CAA6C,EAC/D,IAAIpD,EAAI,KAAK,OAAO,OAAS,EAC7B,MAAMmC,EAAI,KAAK,OAAQ4B,EAAI,CAAA,EAAI,EAAIlC,EAAIA,EACvC,KAAO7B,IAAM,QAAU,CACrB,MAAMyC,EAAI,KAAK,IAAIzC,EAAI,KAAK,SAAW,EAAGmG,GAAGnG,EAAG,KAAK,YAAY,CAAC,EAClE,QAASsD,EAAItD,EAAGsD,EAAIb,EAAGa,GAAK,EAAG,CAC7B,MAAMD,EAAI,KAAK,SAASC,GAAK,CAAC,EAAI,EAAG,EAAIa,GAAGlE,EAAG,KAAK,OAAOqD,CAAC,EAAG,KAAK,OAAOA,EAAI,CAAC,CAAC,EAAGjB,EAAI8B,GAAG,EAAG,KAAK,OAAOb,EAAI,CAAC,EAAG,KAAK,OAAOA,EAAI,CAAC,CAAC,EAAGlB,EAAI,EAAI,EAAIC,EAAIA,EACvJrC,GAAK,KAAK,SAAW,EAAImC,EAAE,KAAKkB,GAAK,EAAGjB,CAAC,GAAKgB,IAAM,QAAUA,EAAEC,CAAC,IAAMlB,EAAE,MAAMkB,GAAK,GAAK,EAAGjB,CAAC,CAC9F,CACD,KAAOD,EAAE,QAAUA,EAAE,KAAM,EAAG,GAC5B,GAAIA,EAAE,UAAS,EAAK,IAAM4B,EAAE,KAAK5B,EAAE,IAAK,GAAI,CAAC,EAAG4B,EAAE,SAAW,GAC3D,OAAO5B,EAAE,MAAO,EAAE4B,EACtB/D,EAAImC,EAAE,IAAK,GAAI,CAChB,CACD,OAAOA,EAAE,MAAO,EAAE4B,CACnB,CACH,CACA,SAASI,GAAG/D,EAAGH,EAAG,EAAG,CACnB,OAAOG,EAAIH,EAAIA,EAAIG,EAAIA,GAAK,EAAI,EAAIA,EAAI,CAC1C,CACA,SAAS+F,GAAG/F,EAAGH,EAAG,CAChB,IAAI,EAAI,EAAG,EAAIA,EAAE,OAAS,EAC1B,KAAO,EAAI,GAAK,CACd,MAAM4B,EAAI,EAAI,GAAK,EACnB5B,EAAE4B,CAAC,EAAIzB,EAAI,EAAIyB,EAAI,EAAIA,EAAI,CAC5B,CACD,OAAO5B,EAAE,CAAC,CACZ,CACA,SAASK,GAAGF,EAAGH,EAAG,EAAG,EAAG4B,EAAGuB,EAAG,CAC5B,GAAI,KAAK,MAAM,EAAIA,CAAC,GAAK,KAAK,MAAMvB,EAAIuB,CAAC,EACvC,OACF,MAAMpD,EAAII,EAAE,EAAIyB,GAAK,CAAC,EACtB,IAAIM,EAAI,EAAI,EAAG4B,EAAIlC,EAAI,EACvB,OAAW,CACT,GACEM,UACK/B,EAAE+B,CAAC,EAAInC,GACd,GACE+D,UACK3D,EAAE2D,CAAC,EAAI/D,GACd,GAAImC,GAAK4B,EACP,MACF2J,GAAGtN,EAAGH,EAAG,EAAGkC,EAAG4B,CAAC,CACjB,CACDzD,GAAGF,EAAGH,EAAG,EAAG,EAAG8D,EAAGX,CAAC,EAAG9C,GAAGF,EAAGH,EAAG,EAAG8D,EAAI,EAAGlC,EAAGuB,CAAC,CAC/C,CACA,SAASsK,GAAGtN,EAAGH,EAAG,EAAG,EAAG4B,EAAG,CACzB,MAAMuB,EAAIhD,EAAE,CAAC,EACbA,EAAE,CAAC,EAAIA,EAAEyB,CAAC,EAAGzB,EAAEyB,CAAC,EAAIuB,EACpB,MAAMpD,EAAI,EAAI,EAAGmC,EAAI,EAAIN,EAAGkC,EAAI9D,EAAED,CAAC,EAAG,EAAIC,EAAED,EAAI,CAAC,EAAGyC,EAAIxC,EAAED,EAAI,CAAC,EAAGsD,EAAIrD,EAAED,EAAI,CAAC,EAC7EC,EAAED,CAAC,EAAIC,EAAEkC,CAAC,EAAGlC,EAAED,EAAI,CAAC,EAAIC,EAAEkC,EAAI,CAAC,EAAGlC,EAAED,EAAI,CAAC,EAAIC,EAAEkC,EAAI,CAAC,EAAGlC,EAAED,EAAI,CAAC,EAAIC,EAAEkC,EAAI,CAAC,EAAGlC,EAAEkC,CAAC,EAAI4B,EAAG9D,EAAEkC,EAAI,CAAC,EAAI,EAAGlC,EAAEkC,EAAI,CAAC,EAAIM,EAAGxC,EAAEkC,EAAI,CAAC,EAAImB,EAC7H,MAAMD,EAAI,EAAE,CAAC,EACb,EAAE,CAAC,EAAI,EAAExB,CAAC,EAAG,EAAEA,CAAC,EAAIwB,CACtB,CACA,SAAS,GAAGjD,EAAGH,EAAG,CAChB,IAAI,EAAIG,EAAIH,EAAG,EAAI,MAAQ,EAAG4B,EAAI,OAASzB,EAAIH,GAAImD,EAAIhD,GAAKH,EAAI,OAAQD,EAAI,EAAI,GAAK,EAAGmC,EAAI,GAAK,EAAI,EAAG4B,EAAIlC,GAAK,EAAI,EAAIuB,GAAK,EAAIvB,EAAG,EAAI,EAAIA,GAAK,EAAIuB,GAAK,EAAIA,EAC/J,EAAIpD,EAAG,EAAImC,EAAGN,EAAIkC,EAAGX,EAAI,EAAGpD,EAAI,EAAI,GAAK,EAAI,EAAI,GAAK,EAAGmC,EAAI,EAAI,GAAK,EAAI,GAAK,EAAI,IAAM,EAAG4B,GAAK,EAAIlC,GAAK,EAAI,EAAIuB,GAAK,EAAG,GAAK,EAAIvB,GAAK,GAAK,EAAI,GAAKuB,GAAK,EAAG,EAAIpD,EAAG,EAAImC,EAAGN,EAAIkC,EAAGX,EAAI,EAAGpD,EAAI,EAAI,GAAK,EAAI,EAAI,GAAK,EAAGmC,EAAI,EAAI,GAAK,EAAI,GAAK,EAAI,IAAM,EAAG4B,GAAK,EAAIlC,GAAK,EAAI,EAAIuB,GAAK,EAAG,GAAK,EAAIvB,GAAK,GAAK,EAAI,GAAKuB,GAAK,EAAG,EAAIpD,EAAG,EAAImC,EAAGN,EAAIkC,EAAGX,EAAI,EAAGW,GAAK,EAAIlC,GAAK,EAAI,EAAIuB,GAAK,EAAG,GAAK,EAAIvB,GAAK,GAAK,EAAI,GAAKuB,GAAK,EAAG,EAAIW,EAAIA,GAAK,EAAG,EAAI,EAAI,GAAK,EACvb,IAAItB,EAAIrC,EAAIH,EAAGqD,EAAI,EAAI,OAASb,EAAI,GACpC,OAAOA,GAAKA,EAAIA,GAAK,GAAK,SAAUA,GAAKA,EAAIA,GAAK,GAAK,UAAWA,GAAKA,EAAIA,GAAK,GAAK,UAAWA,GAAKA,EAAIA,GAAK,GAAK,WAAYa,GAAKA,EAAIA,GAAK,GAAK,SAAUA,GAAKA,EAAIA,GAAK,GAAK,UAAWA,GAAKA,EAAIA,GAAK,GAAK,UAAWA,GAAKA,EAAIA,GAAK,GAAK,YAAaA,GAAK,EAAIb,KAAO,CAC1Q,CACA,SAASiD,GAAGtF,EAAGH,EAAI,KAAM,CACvB,GAAIG,EAAE,SAAW,EACf,MAAO,GACT,GAAIA,EAAE,SAAW,EACf,MAAO,CAACA,CAAC,EACX,MAAM,EAAI,IAAIe,GAAGf,EAAE,MAAM,EACzBA,EAAE,QAASgD,GAAM,CACf,KAAM,CAACpD,EAAGmC,CAAC,EAAIiB,EAAE,WACjB,EAAE,IAAIpD,EAAIC,EAAGkC,EAAIlC,EAAGD,EAAIC,EAAGkC,EAAIlC,CAAC,CACpC,CAAG,EAAG,EAAE,SACN,MAAM,EAAI,CAAE,EAAE4B,EAAoB,IAAI,IACtC,OAAOzB,EAAE,QAAQ,CAACgD,EAAGpD,IAAM,CACzB,GAAI6B,EAAE,IAAI7B,CAAC,EACT,OACF,MAAMmC,EAAI,CAACiB,CAAC,EACZ,IAAIW,EAAI/D,EACR6B,EAAE,IAAI7B,CAAC,EACP,IAAI,EAAII,EAAE,OACV,OAAW,CACT,GAAI,IAAM,EACR,MAAM,IAAI,MAAM,wBAAwB,EAC1C,MAAMqC,EAAIN,EAAEA,EAAE,OAAS,CAAC,EAAE,UAAW,CAACmB,EAAGD,CAAC,EAAIZ,EAAG,EAAI,EAAE,OACrDa,EAAIrD,EACJoD,EAAIpD,EACJqD,EAAIrD,EACJoD,EAAIpD,CACZ,EAASoC,EAAKuC,GAAM,KAAK,KAAKb,EAAIa,GAAKxE,EAAE,MAAM,EAAGgC,EAAI,EAAE,OAAQwC,GAAM,CAAC/C,EAAE,IAAI+C,CAAC,CAAC,EAAE,IAAKA,GAAM,CACpFxE,EAAEwE,CAAC,EACHA,EACAvC,EAAEuC,CAAC,CACJ,CAAA,EAAE,KAAK,CAAC,CAAK,CAAA,CAAAA,CAAC,EAAG,CAAK,CAAA,CAAAJ,CAAC,IAAMnC,EAAEuC,CAAC,EAAIvC,EAAEmC,CAAC,CAAC,EACzC,GAAIpC,EAAE,SAAW,EAAG,CAClB,EAAE,KAAKD,CAAC,EACR,KACD,CACD,KAAM,CAAC,EAAGO,CAAC,EAAIN,EAAE,CAAC,EAClBD,EAAE,KAAK,CAAC,EAAGN,EAAE,IAAIa,CAAC,EAAGqB,EAAIrB,CAC1B,CACF,CAAA,EAAG,CACN,QACA,MAAMyF,WAAU1E,EAAG,CACjB,YAAYR,EAAG1C,EAAI,GAAI,CAAE,aAAcsB,EAAI,EAAI,EAAG,GAAI,CACpD,QACAiG,GAAE,KAAM,SAAS,EACjBA,GAAE,KAAM,OAAO,EACfjG,GAAK8L,GAAG1K,EAAG1C,CAAC,EAAG,KAAK,QAAU0C,EAAG,KAAK,MAAQ1C,CAC/C,CACD,IAAI,aAAc,CAChB,OAAO,KAAK,QAAQ,WACrB,CACD,IAAI,QAAS,CACX,OAAO,KAAK,MAAM,SAAW,CAC9B,CACD,IAAI,UAAW,CACb,MAAO,CAAC,KAAK,QAAS,GAAG,KAAK,KAAK,CACpC,CACD,OAAQ,CACN,OAAO,IAAI4H,GACT,KAAK,QAAQ,MAAO,EACpB,KAAK,MAAM,IAAKlF,GAAMA,EAAE,OAAO,CACrC,CACG,CACD,UAAUA,EAAG,CACX,OAAO,IAAIkF,GACT,KAAK,QAAQ,UAAUlF,CAAC,EACxB,KAAK,MAAM,IAAK1C,GAAMA,EAAE,UAAU0C,CAAC,CAAC,CAC1C,CACG,CACD,SAASA,EAAG,CACV,OAAO,KAAK,QAAQ,SAASA,CAAC,GAAK,CAAC,KAAK,MAAM,KAAM1C,GAAMA,EAAE,SAAS0C,CAAC,CAAC,CACzE,CACD,WAAWA,EAAG,CACZ,OAAO,KAAK,SAAS,KAClB1C,GAAM0C,EAAE,SAAS,KAAMpB,GAAMtB,EAAE,WAAWsB,CAAC,CAAC,CACnD,CACG,CACD,mBAAmBoB,EAAG,CACpB,MAAM1C,EAAI0C,aAAakF,GAAIlF,EAAE,SAAW,CAACA,CAAC,EAAGpB,EAAI,KAAK,SAAS,QAASuB,GAAM7C,EAAE,QAAS,GAAM6C,EAAE,oBAAoB,CAAC,CAAC,CAAC,EACxH,OAAOsC,GAAG7D,CAAC,EAAE,IAAKuB,GAAM,IAAIuE,GAAEvE,CAAC,CAAC,CACjC,CACH,EACA,SAASuK,GAAGvN,EAAGH,EAAI,GAAI,CACrB,GAAI,CAACG,EACH,MAAM,IAAI,MAAM,4BAA4B,EAC9C,SAAW,CAAC,EAAG,CAAC,IAAK0D,GAAG,CAAC1D,EAAG,GAAGH,CAAC,CAAC,EAC/B,GAAI,EAAE,WAAW,CAAC,EAChB,MAAM,IAAI,MAAM,sCAAsC,EAC1D,GAAIA,EAAE,KACH,GAAM,CAACG,EAAE,SAAS,EAAE,UAAU,GAAK,CAACA,EAAE,SAAS,EAAE,UAAU,CAC7D,EACC,MAAM,IAAI,MAAM,kCAAkC,EACpD,SAAW,CAAC,EAAG,CAAC,IAAK0D,GAAG7D,CAAC,EACvB,GAAI,EAAE,SAAS,EAAE,UAAU,EACzB,MAAM,QAAQ,MAAMmB,GAAG,CAAC,EAAGA,GAAG,CAAC,CAAC,EAAG,IAAI,MAAM,sCAAsC,CACzF,CACA,MAAMwM,GAAMxN,GAAM,CAChB,MAAMH,EAAIG,EAAE,IAAI,CAACyB,EAAGuB,IAAMhD,EAAE,MAAMgD,EAAI,CAAC,EAAE,IAAI,CAACpD,EAAGmC,IAAM,CAACA,EAAIiB,EAAI,EAAGpD,CAAC,CAAC,EAAE,OAAO,CAAC,EAAGA,CAAC,IAAM6B,EAAE,YAAY,SAAS7B,EAAE,WAAW,CAAC,EAAE,IAAI,CAAC,CAACA,CAAC,IAAMA,CAAC,CAAC,EAAG,EAAI,CAAA,EAAI,EAAI,MAAMC,EAAE,MAAM,EAC5K,OAAOA,EAAE,QAAQ,CAAC4B,EAAGuB,IAAM,CACzB,IAAIpD,EAAI,EAAEoD,CAAC,EACXpD,IAAMA,EAAI,GAAI,EAAE,KAAKA,CAAC,GAAIA,EAAE,KAAKI,EAAEgD,CAAC,CAAC,EAAGvB,EAAE,QAAUA,EAAE,QAASM,GAAM,CACnE,EAAEA,CAAC,EAAInC,CACb,CAAK,CACF,CAAA,EAAG,CACN,EAAGuB,GAAMnB,GAAMA,EAAE,IAAI,CAACH,EAAG,IAAM,CAC7B,MAAM4B,EAAI5B,EAAE,SAAS,CAAC,EAAE,SAAUmD,EAAIhD,EAAE,OAAO,CAAC,EAAG+B,IAAM,IAAMA,EAAI,GAAK,EAAE,SAASN,CAAC,CAAC,EACrF,MAAO,CACL,KAAM5B,EACN,KAAMmD,CACV,CACA,CAAC,EAAG,GAAK,CAAChD,EAAGH,IAAMG,EAAE,QAAQ,CAAC,CAAE,KAAM,CAAC,IAAO0F,GAC5C7F,EAAE,OACA,CAAC,CAAE,KAAM,EAAG,KAAM4B,CAAG,IAAK,IAAM,GAAKA,EAAE,QAAQ,CAAC,IAAM,EACvD,CACH,CAAC,EAAGgM,GAAK,CAACzN,EAAGH,IAAM,CACjB,MAAM,EAAIA,EAAE,OAAO,CAAC,CAAE,KAAM4B,CAAG,IAAKA,EAAE,QAAU,CAAC,EAAG,EAAIiE,GACtDvE,GAAGnB,EAAE,IAAI,CAAC,CAAE,KAAMyB,CAAC,IAAOA,CAAC,CAAC,CAChC,EACE,MAAO,CAAC,EAAG,GAAG,CAAC,CACjB,EAAGiE,GAAM1F,GAAM,CACb,GAAI,CAACA,EAAE,OACL,MAAO,GACT,MAAMH,EAAIG,EAAE,OAAO,CAAC,CAAE,KAAM,CAAC,IAAO,CAAC,EAAE,MAAM,EAAG,EAAIA,EAAE,OAAO,CAAC,CAAE,KAAM,CAAC,IAAO,EAAE,OAAS,CAAC,EAC1F,OAAOH,EAAE,SAAW,GAAK,EAAE,SAAW,EAAI,CAACG,CAAC,EAAIH,EAAE,OAAS,EAAI,GAAGA,EAAGG,CAAC,EAAIyN,GAAG,EAAGzN,CAAC,CACnF,EACA,SAAS2C,GAAE3C,EAAG,CACZ,OAAOwN,GAAGxN,CAAC,EAAE,IAAImB,EAAE,EAAE,QAAQuE,EAAE,EAAE,IAAK7C,GAAM,CAC1C,GAAIA,EAAE,SAAW,EACf,OAAO,IAAIkF,GAAElF,EAAE,CAAC,EAAE,IAAI,EACxBA,EAAE,KAAK,CAACG,EAAG,IAAMA,EAAE,KAAK,OAAS,EAAE,KAAK,MAAM,EAC9C,KAAM,CAAC7C,EAAG,GAAGsB,CAAC,EAAIoB,EAAE,IAAI,CAAC,CAAE,KAAMG,CAAG,IAAKA,CAAC,EAC1C,OAAO,IAAI+E,GAAE5H,EAAGsB,CAAC,CACrB,CAAG,CACH,CACA,SAASiM,GAAG1N,EAAGH,EAAG,CAChB,MAAM,EAAI,CAAA,EACV,UAAW,KAAKG,EACd,UAAWyB,KAAK5B,EACd,EAAE,KAAK,CAAC,EAAG4B,CAAC,CAAC,EACjB,OAAO,CACT,CACA,SAAUsB,GAAG/C,EAAGH,EAAG,EAAG,CACpB,MAAM,EAAKD,GAAMC,EAAE,KAAMkC,GAAMI,EAAEJ,EAAGnC,EAAE,SAAS,CAAC,EAAG6B,EAAK7B,GAAM,EAAE,KAAMmC,GAAMnC,EAAE,OAAOmC,CAAC,CAAC,EACvF,IAAIiB,EAAI,CAAA,EACR,UAAWpD,KAAKI,EACd,EAAEJ,CAAC,GAAKoD,EAAE,KAAKpD,CAAC,EAAG,MAAM,IAAI2H,GAAEvE,EAAG,CAAE,aAAc,EAAE,CAAE,EAAGA,EAAI,CAAA,GAAMvB,EAAE7B,CAAC,GAAKoD,EAAE,SAAW,MAAM,IAAIuE,GAAEvE,EAAG,CAAE,aAAc,EAAI,CAAA,EAAGA,EAAI,IAAK,MAAM,IAAIuE,GAAE,CAAC3H,CAAC,EAAG,CAAE,aAAc,EAAI,CAAA,GAAKoD,EAAE,KAAKpD,CAAC,EAC3LoD,EAAE,SAAW,MAAM,IAAIuE,GAAEvE,EAAG,CAAE,aAAc,EAAI,CAAA,EAClD,CACA,MAAMS,GAAK,CAACzD,EAAGH,IAAM,CACnB,MAAM,EAAIG,EAAE,UAAWgD,GAAMb,EAAEtC,EAAGmD,EAAE,UAAU,CAAC,EAAG,EAAIhD,EAAE,MAAM,EAAG,CAAC,EAClE,OAAOA,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,CAC5B,EAAGgG,GAAK,CAAChG,EAAGH,IAAM,CAChB,IAAI,EAAIG,EACR,MAAM,EAAK+B,GAAMI,EAAEJ,EAAE,WAAYlC,EAAE,UAAU,GAAKsC,EAAEJ,EAAE,UAAWlC,EAAE,SAAS,EAC5E,IAAI4B,EAAIzB,EAAE,UAAU,CAAC,EACrB,GAAIyB,IAAM,GAAI,CACZ,MAAMM,EAAI/B,EAAE,IAAK2D,GAAMA,EAAE,QAAO,CAAE,EAClC,GAAI5B,EAAE,QAAS,EAAEN,EAAIM,EAAE,UAAU,CAAC,EAAGN,IAAM,GACzC,MAAM,QAAQ,MACZM,EAAE,IAAK4B,GAAMA,EAAE,IAAI,EACnB9D,EAAE,IACV,EAAS,IAAI,MAAM,mCAAmC,EAClD,EAAIkC,CACL,CACD,MAAMiB,EAAI,EAAE,MAAM,EAAGvB,CAAC,EACtB,OAAO,EAAE,MAAMA,CAAC,EAAE,OAAOuB,CAAC,CAC5B,EACA,SAAS2K,GAAG3N,EAAGH,EAAG,EAAG,CACnB,OAAOG,EAAE,OAAQ,GAAM,CACrB,MAAMyB,EAAI5B,EAAE,OAAQkC,GAAMI,EAAEJ,EAAE,WAAY,CAAC,GAAKI,EAAEJ,EAAE,UAAW,CAAC,CAAC,EACjE,GAAIN,EAAE,OAAS,EACb,MAAM,IAAI,MAAM,oDAAoD,EACtE,MAAMuB,EAAIvB,EAAE,IAAKM,GAAM,EAAE,SAASA,EAAE,QAAQ,CAAC,EAC7C,MAAO,EAAEiB,EAAE,MAAOjB,GAAMA,CAAC,GAAK,CAACiB,EAAE,KAAMjB,GAAMA,CAAC,EAClD,CAAG,CACH,CACA,SAAS+D,GAAG9F,EAAGH,EAAG,EAAG,CACnB,IAAI,EAAI,CAAA,EACR,MAAM4B,EAAI,CAAA,EAAIuB,EAAI,IAAI,MAAMhD,EAAE,SAAS,MAAM,EAAE,KAAK,CAAC,EAAE,IAAI,IAAM,EAAE,EAAGJ,EAAI,IAAI,MAAMC,EAAE,SAAS,MAAM,EAAE,KAAK,CAAC,EAAE,IAAI,IAAM,CAAE,CAAA,EAC3H,GAAIG,EAAE,SAAS,QAAQ,CAACiD,EAAG,IAAM,CAC/BpD,EAAE,SAAS,QAAQ,CAACoC,EAAGD,IAAM,CAC3B,KAAM,CAAE,cAAe,EAAG,SAAUM,CAAG,EAAGZ,GACxCuB,EACAhB,EACA,CACR,EACM,EAAE,KAAK,GAAG,CAAC,EAAGe,EAAE,CAAC,EAAE,KAAK,GAAG,CAAC,EAAGpD,EAAEoC,CAAC,EAAE,KAAK,GAAG,CAAC,EAAGP,EAAE,KAAK,GAAGa,CAAC,EAC3D,MAAMkC,EAAIlC,EAAE,QAAS8B,GAAM,CACzBA,EAAE,WACFA,EAAE,SACV,CAAO,EACD,EAAE,KAAK,GAAGI,CAAC,EAAGxB,EAAE,CAAC,EAAE,KAAK,GAAGwB,CAAC,EAAG5E,EAAEoC,CAAC,EAAE,KAAK,GAAGwC,CAAC,CACnD,CAAK,CACF,CAAA,EAAG,EAAI2D,GAAE,EAAG,CAAC,EAAG,CAAC,EAAE,QAAU,EAAE,SAAW,EACzC,OAAO,KACT,MAAMpG,EAAI,CAAC,CAACkB,EAAG,CAAC,IAAM,EAAE,OAASA,EAAE,QAAQ,CAAC,EAAI,CAACA,CAAC,EAClD,IAAIU,EAAIjD,GAAE,CAACV,EAAE,SAAUgD,CAAC,CAAC,EAAE,QAAQjB,CAAC,EAAG,EAAIrB,GAAE,CAACb,EAAE,SAAUD,CAAC,CAAC,EAAE,QAAQmC,CAAC,EACvE,GAAI,EAAI4L,GACN,EACAhK,EACA9D,CACD,EAAE,CAAC,EAAE,QAAU,CAAC4B,EAAE,OACjB,OAAO,KACT,GAAIA,EAAE,OAAQ,CACZ,MAAMwB,EAAIxB,EAAE,CAAC,EACbkC,EAAIqC,GACFrC,EACAV,CACD,EAAE,EAAI+C,GACL,EACA/C,CACN,CACA,KAAS,CACL,MAAMA,EAAI,EAAE,CAAC,EACbU,EAAIF,GAAGE,EAAGV,CAAC,EAAG,EAAIQ,GAAG,EAAGR,CAAC,CAC1B,CACD,IAAIZ,EAAI,MAAM,KACZU,GACEY,EACA,EACAlC,CACD,CACL,EAAKyB,EAAI,MAAM,KACXH,GACE,EACA,EACAtB,CACD,CACL,EACE,OAAQ,CAACU,EACPe,EAAE,CAAC,EAAE,UACLb,EAAE,CAAC,EAAE,SACT,GAAOZ,EAAE,OAAS,GAAKyB,EAAE,CAAC,EAAE,gBAAkB,KAAOA,EAAIA,EAAE,IAAKD,GAAMA,EAAE,QAAS,CAAA,EAAE,QAAS,EAAEd,EAAEe,EAAE,CAAC,EAAE,UAAWb,EAAE,CAAC,EAAE,SAAS,IAAMA,EAAIA,EAAE,IAAKY,GAAMA,EAAE,QAAS,CAAA,EAAE,QAAS,IAAIvC,GAAE,CAAC2B,EAAGa,CAAC,CAAC,EAAE,IAAI,CAAC,CAACD,EAAG,CAAC,IAAMA,EAAE,gBAAkB,GAAKxB,EAAE,KAAMQ,GAAMgB,EAAE,SAAS,CAAC,EAAE,OAAOhB,CAAC,CAAC,EAAI,CAACgB,EAAG,MAAM,EAAI,CAACA,EAAG,CAAC,CAAC,CAC/R,CACA,SAAS6F,GAAG9I,EAAG,CACb,IAAIH,EAAIG,EAAE,CAAC,EACX,UAAW,KAAKA,EAAE,MAAM,CAAC,EACvBH,EAAIA,EAAE,OAAO,CAAC,EAChB,GAAI,CAACsC,EAAEtC,EAAE,WAAYA,EAAE,SAAS,EAC9B,MAAM,QAAQ,MACZqB,EAAGrB,EAAE,UAAU,EACfqB,EAAGrB,EAAE,SAAS,CACpB,EAAO,IAAI,MAAM,oDAAoD,EACnE,OAAO,IAAIe,GAAEf,EAAE,QAAQ,CACzB,CACA,SAASiK,GAAG9J,EAAGH,EAAG,CAChB,MAAM,EAAIa,GAAE,CACVb,EAAE,MAAM,EAAG,EAAE,EACbA,EAAE,MAAM,CAAC,CACV,CAAA,EAAE,IAAI,CAAC,CAAC4B,EAAGuB,CAAC,IAAM8F,GAAG9I,EAAE,MAAMyB,EAAGuB,CAAC,CAAC,CAAC,EACpC,IAAI,EAAIhD,EAAE,MACRH,EAAEA,EAAE,OAAS,CAAC,CAClB,EACE,OAAOA,EAAE,CAAC,IAAM,IAAM,EAAI,EAAE,OAAOG,EAAE,MAAM,EAAGH,EAAE,CAAC,CAAC,CAAC,GAAI,EAAE,KAAKiJ,GAAG,CAAC,CAAC,EAAG,CACxE,CACA,SAASE,GAAGhJ,EAAG,CACb,GAAI,CAACA,EAAE,OACL,MAAO,GACT,MAAMH,EAAIG,EAAE,IAAKyB,GAAMA,EAAE,UAAU,EACnC,IAAI,EAAIzB,EAAE,IAAKyB,GAAMA,EAAE,SAAS,EAChC,EAAI,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAG,EAAE,CAAC,EACrC,MAAM,EAAIf,GAAE,CAACb,EAAG,CAAC,CAAC,EAAE,QAClB,CAAC,CAAC4B,EAAGuB,CAAC,EAAGpD,IAAMuC,EAAEV,EAAGuB,CAAC,EAAI,CAAA,EAAKpD,CAClC,EACE,GAAI,CACF,OAAOkK,GAAG9J,EAAG,CAAC,CAClB,MAAU,CACN,OAAOsF,GAAGtF,EAAE,QAASgD,GAAMA,EAAE,QAAQ,CAAC,EAAE,OAAQA,GAAMA,EAAE,OAAS,CAAC,EAAE,OAAQA,GAAMb,EAAEa,EAAE,CAAC,EAAE,WAAYA,EAAE,GAAG,EAAE,EAAE,SAAS,CAAC,EAAE,IAAKA,GAAM,IAAIpC,GAAEoC,CAAC,CAAC,CAC9I,CACH,CACA,MAAMnC,GAAK,CAACb,EAAGH,IAAM,CACnB,GAAIG,EAAE,SAAW,EACf,MAAO,CAACH,CAAC,EACX,MAAM,EAAIG,EAAE,GAAG,EAAE,EACjB,OAAOmC,EAAE,EAAE,UAAWtC,EAAE,UAAU,EAAIG,EAAE,MAAM,EAAG,EAAE,EAAE,OAAO,CAAC,EAAE,OAAOH,CAAC,CAAC,CAAC,EAAIsC,EAAE,EAAE,UAAWtC,EAAE,SAAS,EAAIG,EAAE,MAAM,EAAG,EAAE,EAAE,OAAO,CAAC,EAAE,OAAOH,EAAE,QAAO,CAAE,CAAC,CAAC,EAAIG,EAAE,OAAO,CAACH,CAAC,CAAC,CAC1K,EAAGsJ,GAAK,CAACnJ,EAAGH,IAAMG,EAAE,SAAW,EAAI,CAACH,CAAC,EAAIsC,EAAEnC,EAAE,CAAC,EAAE,WAAYH,EAAE,SAAS,EAAI,CAACA,EAAE,OAAOG,EAAE,CAAC,CAAC,CAAC,EAAE,OAAOA,EAAE,MAAM,CAAC,CAAC,EAAI,CAACH,CAAC,EAAE,OAAOG,CAAC,EAC7H,SAAS+J,GAAG/J,EAAGH,EAAG,CAChB,YAAa,EACb,aAAc,CAChB,EAAG,CACD,MAAM4B,EAAIqE,GAAG9F,EAAGH,CAAC,EACjB,GAAI,CAAC4B,EAAG,CACN,MAAMkC,EAAI3D,EAAE,SAAS,CAAC,EAAE,SAAU,EAAIH,EAAE,SAAS8D,CAAC,EAAGtB,EAAIxC,EAAE,SAAS,CAAC,EAAE,SAAUqD,EAAIlD,EAAE,SAASqC,CAAC,EACjG,MAAO,CACL,UAAW,GACX,mBAAoB,EACpB,mBAAoBa,CAC1B,CACG,CACD,GAAIzB,EAAE,MAAM,CAAC,CAAG,CAAAkC,CAAC,IAAMA,IAAM,MAAM,EACjC,MAAO,CAAE,UAAW,IACtB,IAAIX,EAAI,KAAMpD,EAAI,KAClB,MAAMmC,EAAIN,EAAE,QAAQ,CAAC,CAACkC,EAAG,CAAC,IAAM,CAC9B,IAAItB,EAAI,CAAA,EAAIa,EAAI,EAChB,GAAI,IAAM,OACR,OAAOtD,IAAM,GAAKA,EAAI,EAAG+D,GAAK/D,IAAM,GAAKA,IAAM,GAAKA,EAAI,KAAM,CAAE,GAAIA,IAAM,MAAQoD,EAAIA,EAAIA,EAAE,OAAOW,CAAC,EAAIX,EAAIW,EAAG,CAAA,IAAO,QAAQ,MAAM,iBAAiB,EAAG,CAAE,GAC5J,MAAMV,EAAIU,EAAE,SAAS,CAAC,EAAE,SAAU,EAAI9D,EAAE,SAASoD,CAAC,GACjD,IAAM,QAAU,GAAK,IAAM,UAAY,CAAC,KAAOC,GAAK,EAAGb,EAAIxB,GAAGwB,EAAGsB,CAAC,GACnE,MAAM1B,EAAI,EAAE,SAAS,CAAC,EAAE,SAAUD,EAAIhC,EAAE,SAASiC,CAAC,EAClD,GAAI,IAAM,QAAUD,GAAK,IAAM,UAAY,CAACA,EAAG,CAC7C,MAAM,EAAI,EACVkB,GAAK,EAAGA,IAAM,GAAKb,EAAE,QAAUA,EAAIxB,GAAGwB,EAAG,CAAC,EAAGW,EAAI,MAAQX,EAAI,CAAC,CAAC,CAChE,CACD,OAAOzC,IAAM,MAAQsD,IAAM,GAAKF,IAAMX,EAAI8G,GAAG9G,EAAGW,CAAC,GAAIE,IAAM,IAAMtD,EAAIsD,EAAGF,EAAI,MAAOX,EAAE,OAASA,GAAKW,EAAI,KAAM,CAAE,EACnH,CAAG,EACD,OAAOgG,GAAGjH,CAAC,CACb,CACA,MAAMzB,GAAK,CAACN,EAAGH,IAAM,CACnB,MAAM,EAAIkK,GAAG/J,EAAGH,EAAG,CACjB,YAAa,SACb,aAAc,QAClB,CAAG,EACD,OAAO,MAAM,QAAQ,CAAC,EAAI,EAAI,EAAE,UAAY,CAACG,CAAC,EAAI,EAAE,mBAAqB,CAACH,CAAC,EAAI,EAAE,mBAAqB,CAACG,CAAC,EAAI,CAACA,EAAGH,CAAC,CACnH,EAAG+E,GAAI,CAAC5E,EAAGH,IAAM,CACf,MAAM,EAAIkK,GAAG/J,EAAGH,EAAG,CACjB,YAAa,SACb,aAAc,MAClB,CAAG,EACD,OAAO,MAAM,QAAQ,CAAC,EAAI,EAAI,EAAE,UAAY,GAAK,EAAE,mBAAqB,CAAE,EAAG,EAAE,mBAAqB,CAACG,EAAGH,CAAC,EAAI,CAACG,CAAC,CACjH,EAAGuK,GAAK,CAACvK,EAAGH,IAAM,CAChB,MAAM,EAAIkK,GAAG/J,EAAGH,EAAG,CACjB,YAAa,OACb,aAAc,MAClB,CAAG,EACD,OAAO,MAAM,QAAQ,CAAC,EAAI,EAAI,EAAE,UAAY,CAACG,CAAC,EAAI,EAAE,mBAAqB,CAACA,CAAC,EAAI,EAAE,mBAAqB,CAACH,CAAC,EAAI,EAC9G,EACA,SAAS6E,GAAG1E,EAAG,CACb,MAAMH,EAAoB,IAAI,IAAO,EAAI,CAAA,EACzC,OAAOG,EAAE,QAAQ,CAAC,EAAGyB,IAAM,CACzB,IAAIuB,EACJnD,EAAE,IAAI4B,CAAC,EAAIuB,EAAInD,EAAE,IAAI4B,CAAC,GAAKuB,EAAI,CAAE,QAAS,CAAC,CAAC,EAAG,UAA2B,IAAI,IAAI,CAACvB,CAAC,CAAC,CAAC,EAAI,EAAE,KAAKuB,CAAC,GAAIhD,EAAE,MAAMyB,EAAI,CAAC,EAAE,QAAQ,CAAC7B,EAAGmC,IAAM,CACrI,MAAM4B,EAAIX,EAAE,QAAS,EAAIvB,EAAIM,EAAI,EACjC,GAAIiB,EAAE,UAAU,IAAI,CAAC,EACnB,OACF,IAAIX,EAAI,CAACzC,CAAC,EAAGsD,EAAI,GACjB,GAAIrD,EAAE,IAAI,CAAC,IAAMwC,EAAIxC,EAAE,IAAI,CAAC,EAAE,QAASqD,EAAI,IAAK,CAACS,EAAE,KAChD1B,GAAMI,EAAE,KAAML,GAAMC,EAAE,WAAWD,CAAC,CAAC,CACrC,EACC,OACF,IAAIE,EACJyB,EAAE,OAAS,GAAKtB,EAAE,OAAS,EAAIH,EAAIuF,GAAE9D,EAAGtB,CAAC,EAAIH,EAAI7B,GAAGsD,EAAE,CAAC,EAAGtB,EAAE,CAAC,CAAC,EAAGW,EAAE,UAAU,IAAI,CAAC,EAAGA,EAAE,QAAUd,EAAGgB,GAAKrD,EAAE,IAAI,EAAGmD,CAAC,CACzH,CAAK,CACL,CAAG,EAAG,EAAE,QAAQ,CAAC,CAAE,QAAS,CAAC,IAAO,CAAC,CACrC,CACA,SAAS3C,GAAGL,EAAGH,EAAG,CAChB,MAAM,EAAIS,GAAGN,EAAE,QAASH,EAAE,OAAO,EAAG,EAAIA,EAAE,MAAM,QAASD,GAAMgF,GAAEhF,EAAGI,EAAE,OAAO,CAAC,EAAGyB,EAAIzB,EAAE,MAAM,QAASJ,GAAMgF,GAAEhF,EAAGC,EAAE,OAAO,CAAC,EAAGmD,EAAI0K,GAAG1N,EAAE,MAAOH,EAAE,KAAK,EAAE,QACrJ,CAAC,CAACD,EAAGmC,CAAC,IAAMwI,GAAG3K,EAAGmC,CAAC,CACvB,EACE,OAAOY,GAAE,CACP,GAAG,EACH,GAAG,EACH,GAAGlB,EACH,GAAGuB,CACP,CAAG,CACH,CACA,SAASF,GAAG9C,EAAGH,EAAG,CAChB,GAAIG,EAAE,QAAUH,EAAE,OAChB,OAAO8C,GAAEiC,GAAE5E,EAAE,QAASH,EAAE,OAAO,CAAC,EAClC,GAAIG,EAAE,OAAQ,CACZ,MAAM,EAAI4E,GAAE5E,EAAE,QAASH,EAAE,OAAO,EAAG4B,EAAI5B,EAAE,MAAM,QAC5CmD,GAAMuH,GAAGvH,EAAGhD,EAAE,OAAO,CAC5B,EACI,OAAO2C,GAAE,CAAC,GAAG,EAAG,GAAGlB,CAAC,CAAC,CACzB,SAAa5B,EAAE,QAAU,CAACG,EAAE,QAAQ,WAAWH,EAAE,OAAO,EACpD,GAAIG,EAAE,QAAQ,SAASH,EAAE,QAAQ,UAAU,EAAG,CAC5C,MAAM,EAAI4H,GACRzH,EAAE,MAAM,IAAKyB,GAAM,IAAIsG,GAAEtG,CAAC,CAAC,EAC3B,CAAC5B,CAAC,CACV,EACM,OAAO8C,GAAE,CACP3C,EAAE,QACF,GAAG,EAAE,QAASyB,GAAMA,EAAE,QAAQ,CACtC,CAAO,CACF,KACC,OAAO,CAACzB,CAAC,EACb,IAAI,EAAI8C,GAAG,IAAIiF,GAAE/H,EAAE,OAAO,EAAGH,CAAC,EAC9B,OAAOG,EAAE,MAAM,QAAS,GAAM,CAC5B,EAAI,EAAE,QAASyB,GAAMqB,GAAGrB,EAAG,IAAIsG,GAAE,CAAC,CAAC,CAAC,CACrC,CAAA,EAAG,CACN,CACA,SAASvG,GAAGxB,EAAGH,EAAG,CAChB,MAAM,EAAI0K,GAAGvK,EAAE,QAASH,EAAE,OAAO,EACjC,GAAI,CAAC,EAAE,OACL,MAAO,GACT,IAAI,EAAI8C,GAAE,CAAC,EACX,OAAO,EAAI8C,GACT,EACAzF,EAAE,MAAM,IAAKyB,GAAM,IAAIsG,GAAEtG,CAAC,CAAC,CAC/B,EAAKgE,GACD,EACA5F,EAAE,MAAM,IAAK4B,GAAM,IAAIsG,GAAEtG,CAAC,CAAC,CAC/B,CACA,CACA,SAASgG,GAAEzH,EAAGH,EAAG,CACf,GAAI,CAACG,EAAE,OACL,OAAOH,EACT,GAAI,CAACA,EAAE,OACL,OAAOG,EACT,GAAIA,EAAE,SAAW,GAAKH,EAAE,OAAS,GAAKA,EAAE,SAAW,GAAKG,EAAE,OAAS,EACjE,OAAO0E,GAAG,CAAC,GAAG1E,EAAG,GAAGH,CAAC,CAAC,EACxB,GAAIG,EAAE,OAAS,GAAKH,EAAE,OAAS,EAAG,CAChC,IAAI,EAAI4H,GAAE,CAACzH,EAAE,CAAC,CAAC,EAAGH,CAAC,EACnB,OAAOG,EAAE,MAAM,CAAC,EAAE,QAAS,GAAM,CAC/B,EAAIyH,GAAE,CAAC,CAAC,EAAG,CAAC,CACb,CAAA,EAAG,CACL,CACD,OAAOzH,EAAE,SAAW,GAAKH,EAAE,SAAW,EAAIQ,GAAGL,EAAE,CAAC,EAAGH,EAAE,CAAC,CAAC,EAAI,CAAA,CAC7D,CACA,SAAS4F,GAAEzF,EAAGH,EAAG,CACf,GAAI,CAACG,EAAE,OACL,MAAO,GACT,GAAI,CAACH,EAAE,OACL,OAAOG,EACT,GAAIA,EAAE,SAAW,GAAKH,EAAE,SAAW,EACjC,OAAOiD,GAAG9C,EAAE,CAAC,EAAGH,EAAE,CAAC,CAAC,EACtB,GAAIG,EAAE,OAAS,EACb,OAAOA,EAAE,QAAS,GAAMyF,GAAE,CAAC,CAAC,EAAG5F,CAAC,CAAC,EACnC,IAAI,EAAIiD,GAAG9C,EAAE,CAAC,EAAGH,EAAE,CAAC,CAAC,EACrB,OAAOA,EAAE,MAAM,CAAC,EAAE,QAAS,GAAM,CAC/B,EAAI4F,GAAE,EAAG,CAAC,CAAC,CAAC,CACb,CAAA,EAAG,CACN,CACA,SAAS6C,GAAGtI,EAAGH,EAAG,CAChB,MAAO,CAACG,EAAE,QAAU,CAACH,EAAE,OAAS,CAAE,EAAGG,EAAE,SAAW,GAAKH,EAAE,SAAW,EAAI2B,GAAGxB,EAAE,CAAC,EAAGH,EAAE,CAAC,CAAC,EAAIG,EAAE,OAAS,EAAIA,EAAE,QAAS,GAAMsI,GAAG,CAAC,CAAC,EAAGzI,CAAC,CAAC,EAAIA,EAAE,QAAS,GAAMyI,GAAGtI,EAAG,CAAC,CAAC,CAAC,CAAC,CACpK,CACA,MAAMF,WAAUuD,EAAG,CACjB,YAAYR,EAAI,CAAA,EAAI,CAAE,aAAc1C,EAAI,EAAI,EAAG,GAAI,CACjD,QACAuH,GAAE,KAAM,SAAS,EACjBA,GAAE,KAAM,eAAgB,IAAI,EAC5BvH,GAAKgF,GAAGtC,CAAC,EAAG,KAAK,QAAUA,CAC5B,CACD,IAAI,SAAU,CACZ,OAAO,KAAK,QAAQ,SAAW,CAChC,CACD,IAAI,aAAc,CAChB,GAAI,KAAK,QACP,OAAO,IAAI+K,GACb,GAAI,KAAK,eAAiB,KAAM,CAC9B,IAAI/K,EAAI,KAAK,QAAQ,CAAC,EAAE,YACxB,UAAW1C,KAAK,KAAK,QAAQ,MAAM,CAAC,EAClC0C,EAAIA,EAAE,MAAM1C,EAAE,WAAW,EAC3B,KAAK,aAAe0C,CACrB,CACD,OAAO,KAAK,YACb,CACD,OAAQ,CACN,OAAO,IAAI/C,GAAE,KAAK,QAAQ,IAAK+C,GAAMA,EAAE,MAAO,CAAA,CAAC,CAChD,CACD,UAAUA,EAAG,CACX,OAAO,IAAI/C,GAAE,KAAK,QAAQ,IAAKK,GAAMA,EAAE,UAAU0C,CAAC,CAAC,CAAC,CACrD,CACD,SAASA,EAAG,CACV,OAAO,KAAK,QAAQ,KAAM1C,GAAMA,EAAE,SAAS0C,CAAC,CAAC,CAC9C,CACD,WAAWA,EAAG,CACZ,OAAO,KAAK,QAAQ,KACjB1C,GAAM0C,EAAE,QAAQ,KAAMpB,GAAMtB,EAAE,WAAWsB,CAAC,CAAC,CAClD,CACG,CACD,mBAAmBoB,EAAG,CACpB,OAAO,KAAK,QAAQ,QAAS1C,GAAM0C,aAAa/C,GAAI+C,EAAE,QAAQ,QAC3DpB,GAAMtB,EAAE,mBAAmBsB,CAAC,CAC9B,EAAGtB,EAAE,mBAAmB0C,CAAC,CAAC,CAC5B,CACD,KAAKA,EAAG,CACN,OAAO,IAAI/C,GAAE2H,GAAE,KAAK,QAAS5E,EAAE,OAAO,CAAC,CACxC,CACD,IAAIA,EAAG,CACL,OAAO,IAAI/C,GAAE2F,GAAE,KAAK,QAAS5C,EAAE,OAAO,CAAC,CACxC,CACD,UAAUA,EAAG,CACX,OAAO,IAAI/C,GAAEwI,GAAG,KAAK,QAASzF,EAAE,OAAO,CAAC,CACzC,CACH,CACA,SAASsC,GAAGnF,EAAG,CACb,SAAW,CAACH,EAAG,CAAC,IAAK6D,GAAG1D,CAAC,EACvB,GAAIH,EAAE,WAAW,CAAC,EAChB,MAAM,IAAI,MAAM,oCAAoC,CAC1D,CClsDA,IAAIa,GAAI,OAAO,eACXO,GAAI,CAACrB,EAAG,EAAG,IAAM,KAAKA,EAAIc,GAAEd,EAAG,EAAG,CAAE,WAAY,GAAI,aAAc,GAAI,SAAU,GAAI,MAAO,CAAC,CAAE,EAAIA,EAAE,CAAC,EAAI,EACzGsC,GAAI,CAACtC,EAAG,EAAG,KAAOqB,GAAErB,EAAG,OAAO,GAAK,SAAW,EAAI,GAAK,EAAG,CAAC,EAAG,GAGlE,MAAM8H,EAAE,CACN,YAAY,EAAG,EAAG,CAChB,KAAK,WAAa,EAAG,KAAK,UAAY,CACvC,CACH,CACA,SAASlD,GAAE5E,EAAG,EAAG,CACf,GAAIA,aAAayC,EACf,OAAOuC,GAAEhF,EAAG,CAAC,EACf,GAAIA,aAAayE,EACf,OAAOvB,GAAGlD,EAAG,CAAC,EAChB,MAAM,IAAI,MAAM,iBAAiB,CACnC,CACA,SAASgF,GAAEhF,EAAG,EAAG,CACf,KAAM,CAAE,WAAY,EAAG,UAAWC,CAAG,EAAGD,EAAG6B,EAAI7B,EAAE,aACjD,OAAO,IAAIyC,EACTsB,EAAE,EAAGxB,EAAEV,EAAG,CAAC,CAAC,EACZkC,EAAE9D,EAAGsC,EAAEV,EAAG,CAAC,CAAC,CAChB,CACA,CACA,SAASqB,GAAGlD,EAAG,EAAG,CAChB,MAAM,EAAI+D,EACR/D,EAAE,WACFuC,EAAE+I,GAAEtL,EAAE,mBAAmB,EAAG,CAAC,CAC9B,EAAEC,EAAI8D,EACL/D,EAAE,UACFuC,EAAE+I,GAAEtL,EAAE,kBAAkB,EAAG,CAAC,CAChC,EAAK6B,EAAI,GAAK7B,EAAE,UAAY,EAAI,IAC9B,OAAOA,EAAE,OAAS6B,EAAI7B,EAAE,UAAY,IAAI8H,GAAE,EAAG7H,CAAC,EAAI,IAAIwE,EAAE,EAAGxE,EAAGD,EAAE,OAAQA,EAAE,SAAS,CACrF,CACA,SAAS0H,GAAE1H,EAAG,EAAG,EAAG,CAClB,MAAMC,EAAIwH,GACRzH,EAAE,mBACF,EAAE,mBACN,EACE,GAAI,KAAK,IAAIC,CAAC,EAAI,MAChB,OAAO,KACT,MAAM4B,EAAI5B,EAAI,EAAI,EAAI,GAAIM,EAAI,KAAK,IAAI,CAAC,EAAIsB,EAAG,EAAI+C,GAAE5E,EAAGO,CAAC,EAAG2B,EAAI0C,GAAE,EAAGrE,CAAC,EACtE,GAAI,aAAauH,IAAK5F,aAAa4F,GACjC,OAAO,KACT,IAAIxE,EACJ,GAAI,CACFA,EAAImF,GAAE,EAAGvG,EAAG,IAAI,EAAE,GAAG,EAAE,CAC3B,MAAU,CACN,OAAO,IACR,CACD,GAAI,CAACoB,EACH,OAAO,KACT,MAAMD,EAAIC,EAAGlB,EAAI,CAACM,EAAGyI,IAAM,CACzB,MAAMxD,EAAIwD,EAAE,UAAU9H,CAAC,EAAGiF,EAAItH,GAAE2G,CAAC,EAAGnF,EAAIuB,EAAEV,EAAGd,EAAE+F,EAAG/H,CAAC,CAAC,EACpD,OAAOmC,EAAE,QAAQF,CAAC,CACnB,EAAE,CAACL,CAAC,EAAIC,EAAEpC,EAAG,CAAC,EAAG,CAAG,CAAA2C,CAAC,EAAIP,EAAE,EAAGF,CAAC,EAChC,MAAO,CAAE,MAAOC,EAAG,OAAQQ,EAAG,OAAQU,EACxC,CACA,SAASmB,GAAExE,EAAG,EAAG,EAAG,CAClB,MAAMC,EAAIyH,GAAE1H,EAAG,EAAG,CAAC,EACnB,GAAI,CAACC,EACH,OAAO,QAAQ,KACb,iCACAD,EAAE,KACF,EAAE,IACR,EAAO,CAACA,EAAG,CAAC,EACV,KAAM,CAAE,MAAO6B,EAAG,OAAQtB,CAAC,EAAKN,EAChC,MAAO,CACL4B,EACA3B,GAAE2B,EAAE,UAAWtB,EAAE,WAAYsB,EAAE,kBAAkB,EACjDtB,CACJ,CACA,CACA,SAASM,GAAEb,EAAG,EAAG,EAAG,CAClB,MAAMC,EAAIyH,GAAE1H,EAAG,EAAG,CAAC,EACnB,GAAI,CAACC,EACH,OAAO,QAAQ,KACb,kCACAD,EAAE,KACF,EAAE,IACR,EAAO,CAACA,EAAG,CAAC,EACV,KAAM,CAAE,MAAO6B,EAAG,OAAQtB,CAAC,EAAKN,EAChC,MAAO,CAAC4B,EAAG,IAAIY,EAAEZ,EAAE,UAAWtB,EAAE,UAAU,EAAGA,CAAC,CAChD,CACA,MAAMiI,GAAMxI,GAAM,CAChB,IAAI,EACJA,EAAI,OAAOA,GAAK,UAAY,MAAM,QAAQA,CAAC,GAAKA,EAAE,SAAW,EAAI,EAAI,CAAE,WAAYA,CAAG,EAAG,EAAI,CAAE,WAAY,EAAG,GAAGA,CAAC,EAAK,EAAI,CAAE,WAAY,CAAC,EAAG,CAAC,CAAC,EAC/I,KAAM,CACJ,WAAY,EACZ,YAAaC,EAAI,EACjB,UAAW4B,EAAI,EACf,aAActB,CACf,EAAG,EACJ,IAAI,EACJ,OAAO,GAAK,SAAW,EAAI8B,GAAE,EAAG,EAAI0F,EAAC,EAAI,EAAI,EAC7C,IAAI7F,EACJ,OAAO,OAAO3B,GAAK,SAAW2B,EAAIG,GAAE,EAAG9B,EAAIwH,EAAC,EAAI7F,EAAI3B,EAAG,CAAE,WAAY,EAAG,YAAaN,EAAG,UAAW4B,EAAG,aAAcK,EACtH,EACA,SAASyC,GAAE3E,EAAG,CAAE,aAAc,EAAI,EAAI,EAAG,GAAI,CAC3C,OAAO,IAAI8B,GAAE,CAAC,IAAIyG,GAAE,IAAIxF,GAAE,CAAC,GAAG/C,CAAC,EAAG,CAAE,aAAc,CAAC,CAAE,CAAC,CAAC,CAAC,CAC1D,CACA,MAAMe,EAAG,CACP,YAAY,EAAI,CAAC,EAAG,CAAC,EAAG,CACtBuB,GAAE,KAAM,SAAS,EACjBA,GAAE,KAAM,YAAY,EACpBA,GAAE,KAAM,iBAAiB,EACzBA,GAAE,KAAM,aAAa,EACrB,KAAK,QAAU,EAAG,KAAK,WAAa,EAAG,KAAK,gBAAkB,CAAE,EAAE,KAAK,YAAc,IACtF,CACD,cAAc,EAAG,CACf,GAAI,KAAK,gBAAgB,OACvB,MAAM,IAAI,MACR,8DACR,EACI,OAAO,KAAK,QAAU,EAAG,KAAK,WAAa,EAAG,IAC/C,CACD,YAAY,EAAG,CACb,GAAI+F,EAAE,EAAE,WAAY,EAAE,SAAS,EAC7B,MAAM,IAAI,MAAM,0BAA0B,EAAE,IAAI,EAAE,EACpD,GAAI,CAAC,KAAK,YACR,OAAO,KAAK,gBAAgB,KAAK,CAAC,EAAG,KACvC,MAAM,EAAI,KAAK,gBAAgB,IAAG,EAClC,GAAI,CAAC,EACH,MAAM,IAAI,MAAM,oCAAoC,EACtD,MAAMpI,EAAI,KAAK,YAAY,OAAS,UAAYY,GAAI2D,GACpD,OAAO,KAAK,gBAAgB,KAC1B,GAAGvE,EAAE,EAAG,EAAG,KAAK,YAAY,MAAM,CACnC,EAAE,KAAK,YAAc,KAAM,IAC7B,CACD,OAAO,EAAG,CACR,MAAM,EAAI,IAAIwC,EAAE,KAAK,QAAS,CAAC,EAC/B,OAAO,KAAK,QAAU,EAAG,KAAK,YAAY,CAAC,CAC5C,CACD,KAAK,EAAG,EAAG,CACT,OAAO,KAAK,OAAO,CAAC,KAAK,QAAQ,CAAC,EAAI,EAAG,KAAK,QAAQ,CAAC,EAAI,CAAC,CAAC,CAC9D,CACD,MAAM,EAAG,CACP,OAAO,KAAK,KAAK,EAAG,CAAC,CACtB,CACD,MAAM,EAAG,CACP,OAAO,KAAK,KAAK,EAAG,CAAC,CACtB,CACD,QAAQ,EAAG,CACT,OAAO,KAAK,OAAO,CAAC,KAAK,QAAQ,CAAC,EAAG,CAAC,CAAC,CACxC,CACD,QAAQ,EAAG,CACT,OAAO,KAAK,OAAO,CAAC,EAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,CACxC,CACD,YAAY,CAAC,EAAG,CAAC,EAAG,CAClB,MAAMxC,EAAI,EAAI8H,GAAGlG,EAAIQ,GAAE,EAAGpC,CAAC,EAC3B,OAAO,KAAK,OAAO4B,CAAC,CACrB,CACD,UAAU,EAAG,EAAG,CACd,MAAM5B,EAAI,EAAI8H,GAAG,CAAClG,EAAGtB,CAAC,EAAI8B,GAAE,EAAGpC,CAAC,EAChC,OAAO,KAAK,KAAK4B,EAAGtB,CAAC,CACtB,CACD,YAAY,EAAG,CACb,MAAM,EAAI,KAAK,gBAAgB,GAAG,EAAE,EACpC,GAAI,CAAC,EACH,MAAM,IAAI,MAAM,sDAAsD,EACxE,KAAM,CAACN,EAAG4B,CAAC,EAAI,EAAE,mBACjB,OAAO,KAAK,KAAK5B,EAAI,EAAG4B,EAAI,CAAC,CAC9B,CACD,iBAAiB,EAAG,EAAG,CACrB,OAAO,KAAK,YAAY+F,GAAE,KAAK,QAAS,EAAG,CAAC,CAAC,EAAG,KAAK,QAAU,EAAG,IACnE,CACD,eAAe,EAAG,EAAG3H,EAAG4B,EAAG,CACzB,KAAM,CAACtB,EAAG,CAAC,EAAI,KAAK,QACpB,OAAO,KAAK,iBACV,CAACA,EAAI,EAAG,EAAI,CAAC,EACb,CAACA,EAAIN,EAAG,EAAI4B,CAAC,CACnB,CACG,CACD,aAAa,EAAG,EAAG,CACjB,GAAI,CAAC,EACH,OAAO,KAAK,OAAO,CAAC,EACtB,MAAM5B,EAAI,IAAIwC,EAAE,KAAK,QAAS,CAAC,EAAGZ,EAAIyJ,GAAErL,EAAE,mBAAmB,EAAGM,EAAIwD,EAAE9D,EAAE,SAAUsC,EAAEV,EAAG,CAAC,CAAC,EACzF,OAAO,KAAK,iBAAiB,EAAGtB,CAAC,CAClC,CACD,WAAW,EAAG,EAAGN,EAAG,CAClB,OAAO,KAAK,aACV,CAAC,EAAI,KAAK,QAAQ,CAAC,EAAG,EAAI,KAAK,QAAQ,CAAC,CAAC,EACzCA,CACN,CACG,CACD,YAAY,EAAG,EAAG,CAChB,OAAO,KAAK,WAAW,EAAG,EAAG,CAAC,CAC/B,CACD,YAAY,EAAG,EAAG,CAChB,OAAO,KAAK,WAAW,EAAG,EAAG,CAAC,CAC/B,CACD,WAAW,EAAG,EAAG,CACf,GAAI,CAAC,EACH,OAAO,KAAK,OAAO,CAAC,EACtB,MAAMA,EAAIkI,EAAE,KAAK,QAAS,CAAC,EAAI,EAAGtG,EAAI,CAAC,EAAI5B,EAC3C,OAAO,KAAK,aAAa,EAAG4B,CAAC,CAC9B,CACD,SAAS,EAAG,EAAG5B,EAAG,CAChB,OAAO,KAAK,WACV,CAAC,EAAI,KAAK,QAAQ,CAAC,EAAG,EAAI,KAAK,QAAQ,CAAC,CAAC,EACzCA,CACN,CACG,CACD,UAAU,EAAG,EAAG,CACd,OAAO,KAAK,SAAS,EAAG,EAAG,CAAC,CAC7B,CACD,UAAU,EAAG,EAAG,CACd,OAAO,KAAK,SAAS,EAAG,EAAG,CAAC,CAC7B,CACD,aAAa,EAAG,EAAG,CACjB,MAAMA,EAAI,KAAK,gBAAgB,GAAG,EAAE,EACpC,GAAI,CAACA,EACH,MAAM,IAAI,MAAM,mDAAmD,EACrE,OAAO,KAAK,YACVC,GACE,KAAK,QACL,EACA,GAAKD,EAAE,kBACR,CACF,EAAE,KAAK,QAAU,EAAG,IACtB,CACD,WAAW,EAAG,EAAGA,EAAG,CAClB,KAAM,CAAC4B,EAAGtB,CAAC,EAAI,KAAK,QACpB,OAAO,KAAK,aAAa,CAAC,EAAIsB,EAAG,EAAItB,CAAC,EAAGN,CAAC,CAC3C,CACD,UAAU,EAAG,EAAGA,EAAG4B,EAAGtB,EAAG,EAAG,CAC1B,OAAO,KAAK,YACViB,GAAE,KAAK,QAAS,EAAG,EAAGvB,EAAG4B,EAAGtB,EAAG,CAAC,CACjC,EAAE,KAAK,QAAU,EAAG,IACtB,CACD,QAAQ,EAAG,EAAGN,EAAG4B,EAAGtB,EAAG,EAAG2B,EAAG,CAC3B,OAAO,KAAK,UACV,CAAC,EAAI,KAAK,QAAQ,CAAC,EAAG,EAAI,KAAK,QAAQ,CAAC,CAAC,EACzCjC,EACA4B,EACAtB,EACA,EACA2B,CACN,CACG,CACD,cAAc,EAAG,EAAG,CAClB,KAAM,CAACjC,EAAG4B,CAAC,EAAIgG,GAAEO,EAAE,EAAG,KAAK,OAAO,CAAC,EACnC,OAAO,KAAK,UACV,EACAnI,EAAI,EACJ,KAAK,IAAI,CAAC,EACV4B,EAAIgE,GACJ,GACA,EAAI,CACV,CACG,CACD,YAAY,EAAG,EAAG5F,EAAG,CACnB,OAAO,KAAK,cACV,CAAC,EAAI,KAAK,QAAQ,CAAC,EAAG,EAAI,KAAK,QAAQ,CAAC,CAAC,EACzCA,CACN,CACG,CACD,mBAAmB,EAAG,EAAGA,EAAG,CAC1B,OAAO,KAAK,YACV,IAAIyE,GAAE,KAAK,QAAS,EAAG,EAAGzE,CAAC,CAC5B,EAAE,KAAK,QAAU,EAAG,IACtB,CACD,uBAAuB,EAAG,EAAG,CAC3B,OAAO,KAAK,YAAY,IAAIgI,EAAE,KAAK,QAAS,EAAG,CAAC,CAAC,EAAG,KAAK,QAAU,EAAG,IACvE,CACD,cAAc,EAAG,EAAG,CAClB,KAAM,CAAE,WAAYhI,EAAG,aAAc4B,EAAG,YAAatB,EAAG,UAAW,CAAG,EAAGiI,GAAG,CAAC,EAAGtG,EAAI,KAAK,gBAAgB,OAAS,KAAK,gBAAgB,KAAK,gBAAgB,OAAS,CAAC,EAAI,KAAMoB,EAAI6E,EAAE,KAAK,QAAS,CAAC,EAAI,EACzM,IAAI9E,EACJxB,EAAIwB,EAAIxB,EAAIK,EAAImB,EAAInB,EAAE,mBAAqBmB,EAAI,CAAC,EAAG,CAAC,EAAGA,EAAIwB,EAAExB,CAAC,EAC9D,MAAMjB,EAAI,CACR,KAAK,QAAQ,CAAC,EAAIiB,EAAE,CAAC,EAAI9C,EAAI+C,EAC7B,KAAK,QAAQ,CAAC,EAAID,EAAE,CAAC,EAAI9C,EAAI+C,CACnC,EACI,IAAInB,EAAIlC,EACRkC,EAAI0C,EAAE1C,CAAC,EACP,MAAMQ,EAAI,CACR,EAAE,CAAC,EAAIR,EAAE,CAAC,EAAI,EAAImB,EAClB,EAAE,CAAC,EAAInB,EAAE,CAAC,EAAI,EAAImB,CACxB,EACI,OAAO,KAAK,mBAAmB,EAAGlB,EAAGO,CAAC,CACvC,CACD,YAAY,EAAG,EAAG1C,EAAG,CACnB,OAAO,KAAK,cACV,CAAC,EAAI,KAAK,QAAQ,CAAC,EAAG,EAAI,KAAK,QAAQ,CAAC,CAAC,EACzCA,CACN,CACG,CACD,aAAa,EAAG,EAAI,SAAU,CAC5B,GAAI,CAAC,KAAK,gBAAgB,OACxB,MAAM,IAAI,MAAM,gDAAgD,EAClE,OAAO,GAAK,KAAK,YAAc,CAAE,KAAM,EAAG,OAAQ,CAAC,EAAI,MAAQ,IAChE,CACD,2BAA2B,EAAG,EAAI,SAAU,CAC1C,GAAI,CAAC,EACH,OACF,MAAMA,EAAI,KAAK,gBAAgB,IAAG,EAAI4B,EAAI,KAAK,gBAAgB,QAC/D,GAAI,CAAC5B,GAAK,CAAC4B,EACT,MAAM,IAAI,MAAM,uCAAuC,EACzD,MAAMtB,EAAI,IAAM,UAAYM,GAAI2D,GAChC,KAAK,gBAAgB,KAAK,GAAGjE,EAAEN,EAAG4B,EAAG,CAAC,CAAC,CACxC,CACD,MAAM,EAAI,GAAI,CACZ,GAAI,CAAC,KAAK,gBAAgB,OACxB,MAAM,IAAI,MAAM,sBAAsB,EACxC,MAAM,EAAI,KAAK,gBAAgB,CAAC,EAAG5B,EAAI,KAAK,gBAAgB,GAAG,EAAE,EACjE,OAAOoI,EAAE,EAAE,WAAYpI,EAAE,SAAS,GAAK,KAAK,OAAO,EAAE,UAAU,EAAG,KAAK,cAAgB,OAAS,KAAK,2BACnG,KAAK,YAAY,OACjB,KAAK,YAAY,IAClB,EAAE,KAAK,YAAc,MAAO0E,GAAE,KAAK,gBAAiB,CAAE,aAAc,CAAC,CAAE,CACzE,CACD,gBAAgB,EAAI,GAAI,CACtB,GAAI,CAAC,KAAK,gBAAgB,OACxB,MAAM,IAAI,MAAM,sBAAsB,EACxC,MAAM,EAAI,KAAK,gBAAgB,CAAC,EAAG1E,EAAI,KAAK,gBAAgB,GAAG,EAAE,EAAG4B,EAAIuG,EACtEnI,EAAE,UACF,EAAE,UACR,EAAOM,EAAI,IAAI2H,GAAC,EAAG,WACbrG,EACA,EAAE,UACR,EAAO,EAAI,KAAK,gBAAgB,IACzBK,GAAMA,EAAE,UAAU3B,CAAC,EAAE,QAAS,CACrC,EACI,OAAO,EAAE,QAAO,EAAIoE,GAClB,CAAC,GAAG,KAAK,gBAAiB,GAAG,CAAC,EAC9B,CAAE,aAAc,CAAG,CACzB,CACG,CACD,UAAW,CACT,OAAO,IAAIiB,GAAE,CAAC,GAAG,KAAK,eAAe,CAAC,CACvC,CACD,IAAI,UAAW,CACb,IAAI,EACJ,OAAOyC,EAAE,KAAK,SAAU,EAAI,KAAK,gBAAgB,CAAC,IAAM,KAAO,OAAS,EAAE,UAAU,CACrF,CACH,CACA,SAAS/H,GAAGN,EAAI,CAAC,EAAG,CAAC,EAAG,CACtB,OAAO,IAAIe,GAAGf,CAAC,CACjB,CChVA,SAAS6B,GAAE,CAACzB,EAAGH,CAAC,EAAG,CACjB,MAAO,GAAGG,CAAC,IAAIH,CAAC,EAClB,CACA,SAASM,GAAEH,EAAG,CACZ,GAAIA,aAAa8H,EACf,MAAO,KAAKrG,GAAEzB,EAAE,SAAS,CAAC,GAC5B,GAAIA,aAAaqC,EACf,MAAO,KAAKrC,EAAE,MAAM,IAAIA,EAAE,MAAM,MAAMA,EAAE,cAAgB,KAAK,GAAK,IAAM,GAAG,IAAIA,EAAE,UAAY,IAAM,GAAG,IAAIyB,GAAEzB,EAAE,SAAS,CAAC,GAC1H,GAAIA,aAAa+B,EACf,MAAO,KAAK/B,EAAE,WAAW,IAAIA,EAAE,WAAW,IAAIA,EAAE,UAAY2D,EAAC,IAAI3D,EAAE,WAAa,KAAK,GAAK,IAAM,GAAG,IAAIA,EAAE,UAAY,IAAM,GAAG,IAAIyB,GAAEzB,EAAE,SAAS,CAAC,GAClJ,GAAIA,aAAa6C,EACf,MAAO,KAAK,CACVpB,GAAEzB,EAAE,YAAY,EAChByB,GAAEzB,EAAE,SAAS,CACnB,EAAM,KAAK,GAAG,CAAC,GACb,GAAIA,aAAaiD,GACf,MAAO,KAAK,CACVxB,GAAEzB,EAAE,iBAAiB,EACrByB,GAAEzB,EAAE,gBAAgB,EACpByB,GAAEzB,EAAE,SAAS,CACnB,EAAM,KAAK,GAAG,CAAC,GACb,MAAM,IAAI,MAAM,sBAAsB,CACxC,CACA,SAASsC,GAAEtC,EAAG,CACZ,MAAMH,EAAI,KAAKG,EAAE,WAAW,KAAK,GAAG,CAAC,GAAIgD,EAAIhD,EAAE,SAAS,IAAIG,EAAC,EAAE,KAAK,GAAG,EACvE,MAAO,GAAGN,CAAC,IAAImD,CAAC,IAClB,CACA,SAASd,GAAElC,EAAG,CACZ,MAAO,YAAYA,EAAE,SAAS,IAAIsC,EAAC,EAAE,KAAK,GAAG,CAAC,MAChD,CACA,SAASL,GAAEjC,EAAG,CACZ,MAAO;AAAA,IACLA,EAAE,QAAQ,IAAIkC,EAAC,EAAE,KAAK;AAAA,CACzB,CAAC;AAAA,KAEF,CACA,SAASoC,GAAEtE,EAAG,CACZ,MAAMH,EAAI,KAAKG,EAAE,WAAW,KAAK,GAAG,CAAC,GAAIgD,EAAIhD,EAAE,SAAS,IAAIG,EAAC,EAAE,KAAK,GAAG,EACvE,MAAO,GAAGN,CAAC,IAAImD,CAAC,EAClB,CACA,SAAS+E,GAAE/H,EAAGH,EAAI,EAAG,CACnB,MAAMmD,EAAIhD,EAAE,KAAOH,EAAGD,EAAII,EAAE,KAAOH,EACnC,MAAO,GAAGmD,CAAC,IAAIpD,CAAC,IAAII,EAAE,MAAQ,EAAIH,CAAC,IAAIG,EAAE,OAAS,EAAIH,CAAC,EACzD,CACA,SAASoI,GAAEjI,EAAGH,EAAGmD,EAAI,EAAGpD,EAAG,CACzB,MAAMkC,EAAIiG,GAAElI,EAAGmD,CAAC,EAAGE,EAAItD,EAAI,UAAUC,EAAE,MAAQ,EAAImD,CAAC,GAAGpD,CAAC,aAAaC,EAAE,OAAS,EAAImD,CAAC,GAAGpD,CAAC,IAAM,GAC/F,MAAO;AAAA,iEACwDkC,CAAC,uFAAuFoB,CAAC;AAAA,MACpJlD,CAAC;AAAA,OAEP,CC1CA,SAASqH,GAAErH,EAAG,CACZ,GAAIA,aAAaiC,GACf,MAAO,CAACjC,CAAC,EACX,GAAIA,aAAauC,GACf,MAAO,CAAC,IAAIN,GAAEjC,CAAC,CAAC,EAClB,GAAIA,aAAamC,GACf,OAAOnC,EAAE,QACX,MAAM,IAAI,MAAM,eAAe,CACjC,CACA,SAAS8C,GAAG9C,EAAG6C,EAAGhD,EAAI,KAAM,CAC1B,IAAI,EAAI,CAAA,EACR,MAAMD,EAAI,CAAE,EAAE6B,EAAI,IAAI,MAAMoB,EAAE,SAAS,MAAM,EAAE,KAAK,CAAC,EAAE,IAAI,IAAM,CAAE,CAAA,EACnEA,EAAE,SAAS,QAAQ,CAACK,EAAGb,IAAM,CAC3BrC,EAAE,SAAS,QAAS,GAAM,CACxB,KAAM,CAAE,cAAe2D,EAAG,SAAU3B,CAAG,EAAGuF,GACxCrE,EACA,EACArD,CACR,EACM,EAAE,KAAK,GAAG8D,CAAC,EAAGlC,EAAEY,CAAC,EAAE,KAAK,GAAGsB,CAAC,EAAG/D,EAAE,KAAK,GAAGoC,CAAC,EAC1C,MAAMiB,EAAIjB,EAAE,QAASD,GAAM,CACzBA,EAAE,WACFA,EAAE,SACV,CAAO,EACD,EAAE,KAAK,GAAGkB,CAAC,EAAGxB,EAAEY,CAAC,EAAE,KAAK,GAAGY,CAAC,CAClC,CAAK,CACF,CAAA,EAAG,EAAI4F,GAAG,EAAGhJ,CAAC,EACf,MAAM,EAAI8I,GAAG,CAAC9F,EAAE,SAAUpB,CAAC,CAAC,EAAE,QAAQ,CAAC,CAACyB,EAAGb,CAAC,IAAMA,EAAE,OAASa,EAAE,QAAQb,CAAC,EAAI,CAACa,CAAC,CAAC,EAC/E,OAAO,MAAM,KACX6G,GACE,EACA,EACAnK,CACD,CACL,CACA,CACA,SAASkI,GAAE9H,EAAG6C,EAAGhD,EAAI,GAAI,CACvB,OAAOiD,GAAGD,EAAG7C,CAAC,EAAE,OAAQJ,GAAM,CAC5B,MAAM6B,EAAI7B,EAAE,SAAS,CAAC,EAAE,SACxB,OAAOiD,EAAE,SAASpB,CAAC,EAAI,CAAC5B,EAAI,CAACgD,EAAE,SAASpB,CAAC,CAC7C,CAAG,CACH,CACA,SAASgG,GAAEzH,EAAG6C,EAAGhD,EAAI,GAAI,CACvB,OAAOiD,GAAGD,EAAG7C,CAAC,EAAE,OAAQJ,GAAM,CAC5B,MAAM6B,EAAI7B,EAAE,SAAS,CAAC,EAAE,SACxB,OAAOiD,EAAE,SAASpB,CAAC,EAAI,CAAC5B,EAAIgD,EAAE,SAASpB,CAAC,CAC5C,CAAG,CACH,CACA,SAAS+F,GAAExH,EAAG6C,EAAGhD,EAAI,GAAI,CACvB,MAAM,EAAIiI,GACR9H,EACA6C,EAAE,QACFhD,CACJ,EAAKD,EAAIiD,EAAE,MAAM,QACZpB,GAAMgG,GAAEzH,EAAGyB,EAAG5B,CAAC,CACpB,EACE,MAAO,CAAC,GAAG,EAAG,GAAGD,CAAC,CACpB,CAwBA,SAASwI,GAAGpI,EAAG6C,EAAG,CAChB,OAAO,IAAIV,GACTjB,GAAGmG,GAAErH,CAAC,EAAGqH,GAAExE,CAAC,CAAC,CACjB,CACA,CAMA,SAAS+G,GAAG5J,EAAG6C,EAAGhD,EAAI,GAAI,CACxB,GAAIgD,aAAaN,GACf,OAAOuF,GAAE9H,EAAG6C,EAAGhD,CAAC,EAClB,GAAIgD,aAAaZ,GACf,OAAOuF,GAAExH,EAAG6C,EAAGhD,CAAC,EAClB,IAAI,EAAI,CAAC,IAAI6H,GAAE,CAAC,GAAG1H,EAAE,QAAQ,CAAC,CAAC,EAC/B,OAAO6C,EAAE,QAAQ,QAASjD,GAAM,CAC9B,EAAI,EAAE,QAAS6B,GAAM+F,GAAE/F,EAAG7B,EAAGC,CAAC,CAAC,CAChC,CAAA,EAAG,CACN,CAkaA,SAAS4F,GAAEzF,EAAG,CACZ,GAAIA,aAAamC,GACf,OAAO4G,GAAG/I,CAAC,EACb,GAAIA,aAAaiC,GACf,OAAOyG,GAAG1I,CAAC,EACb,GAAIA,aAAauC,GACf,MAAO,YAAYyD,GAAGhG,CAAC,CAAC,OAC1B,GAAIA,aAAa0H,GACf,MAAO,YAAY/F,GAAG3B,CAAC,CAAC,OAC1B,GAAI+D,GAAG/D,CAAC,EACN,MAAO,YAAY,KAAKA,EAAE,WAAW,KAAK,GAAG,CAAC,EAAE,IAAIK,GAClDL,CACD,CAAA,OACH,MAAM,IAAI,MAAM,oBAAoB,CACtC,CACA,MAAM4E,GAAK5E,GAAM,UAAWA,EAAIA,EAAE,MAAQA,EAAGqI,GAAI,CAACrI,EAAG6C,IAAM,CACzD,GAAI,EAAE,UAAW7C,GACf,OAAO6C,EACT,KAAM,CAAE,MAAOhD,CAAG,EAAGG,EACrB,OAAOH,EAAI,cAAcA,CAAC,KAAKgD,CAAC,OAASA,CAC3C,EAAGzB,GAAKpB,GAAM,IAAI+F,GAAG/F,EAAE,KAAM,CAACA,EAAE,KAAMA,EAAE,KAAM,CAACA,EAAE,IAAI,EACrD,SAASN,GAAGM,EAAG,CACb,OAAQ6C,EAAI,EACZ,KAAMhD,EAAI,KACV,QAAS,CACX,EAAI,GAAI,CACN,GAAI,MAAM,QAAQG,CAAC,EAAG,CACpB,MAAMyB,EAAIzB,EAAE,IAAKqC,GAAMuC,GAAEvC,CAAC,EAAE,QAAQ,EAAG,EAAIZ,EAAE,IAAI,CAACY,EAAG,IAAMgG,GAAErI,EAAE,CAAC,EAAGyF,GAAEpD,CAAC,CAAC,CAAC,EAAE,KAAK;AAAA,CAClF,EAAGa,EAAIzB,EAAE,MAAM,CAAC,EAAE,OAAO,CAACY,EAAG,IAAMA,EAAE,MAAM,EAAE,WAAW,EAAGZ,EAAE,CAAC,EAAE,WAAW,EACxE,OAAOyG,GAAE,EAAG,EAAI9G,GAAE,CAAC,EAAI8B,EAAGL,EAAGhD,CAAC,CAC/B,CACD,MAAMD,EAAIgF,GAAE5E,CAAC,EAAE,OAAM,EACrB,OAAOkI,GACLG,GAAErI,EAAGyF,GAAE7F,CAAC,CAAC,EACT,EAAIwB,GAAE,CAAC,EAAIxB,EAAE,YACbiD,EACAhD,CACJ,CACA,CC5iBO,MAAMgO,WAAgBC,EAAuB,CAMlD,YACEC,EACA,CACE,SAAAC,EAAW,CAAC,EACZ,UAAAC,EAAY,CAAC,EACb,kBAAAC,EAAoB,CAAC,EACrB,mBAAAC,EAAqB,CAAC,CACxB,EAKI,GACJ,CACM,QAnBDC,GAAA,aACAA,GAAA,iBACAA,GAAA,2BACAA,GAAA,0BAiBL,KAAK,KAAOL,EACP,KAAA,SAAW,CAAC,GAAGC,CAAQ,EAC5B,KAAK,mBAAqB,CAAC,GAAGC,EAAW,GAAGE,CAAkB,EACzD,KAAA,kBAAoB,CAAC,GAAGD,CAAiB,CAChD,CAEA,IAAI,WAAY,CACd,MAAO,CAAC,GAAG,KAAK,kBAAmB,GAAG,KAAK,kBAAkB,CAC/D,CAEA,OAAQ,CACC,OAAA,IAAIL,GAAQ,KAAK,KAAM,CAC5B,SAAU,CAAC,GAAG,KAAK,QAAQ,EAC3B,kBAAmB,CAAC,GAAG,KAAK,iBAAiB,EAC7C,mBAAoB,CAAC,GAAG,KAAK,kBAAkB,CAAA,CAChD,CACH,CAEA,WAAWQ,EAAa,CACjB,YAAA,SAAS,KAAKA,CAAG,EACf,IACT,CAEA,YAAYC,EAAcC,EAAsC,YAAa,CACvEA,IAAc,WACX,KAAA,kBAAkB,KAAKD,CAAI,EAE3B,KAAA,mBAAmB,KAAKA,CAAI,CAErC,CAEA,SACEA,EACAC,EAAsC,YACtC,CACA,MAAMC,EAAqBF,aAAgBT,GAAUS,EAAK,KAAOA,EAE3DG,EAAc,KAAK,KAAK,mBAAmBD,CAAS,EAC1D,OAAID,IAAc,WACX,KAAA,kBAAkB,KAAK,GAAGE,CAAW,EAErC,KAAA,mBAAmB,KAAK,GAAGA,CAAW,EAG7C,KAAK,SAASH,CAAI,EACX,IACT,CAEA,SAASI,EAA0B,CAC7B,IAAAF,EAEJ,OAAIE,aAAiBb,IACnBW,EAAYE,EAAM,KAClB,KAAK,SAAS,KAAK,GAAGA,EAAM,QAAQ,EACpC,KAAK,kBAAkB,KAAK,GAAGA,EAAM,iBAAiB,EACtD,KAAK,mBAAmB,KAAK,GAAGA,EAAM,kBAAkB,GAE5CF,EAAAE,EAGd,KAAK,KAAO,KAAK,KAAK,KAAKF,CAAS,EAC7B,IACT,CAEA,SAASG,EAAgB,CACvB,YAAK,KAAON,GAAI,KAAK,KAAMM,CAAK,EAC3B,KAAA,SAAW,KAAK,SAAS,QAASN,GACrCO,GAAYP,EAAKM,EAAO,EAAI,CAAA,EAE9B,KAAK,WAAWA,CAAK,EACd,IACT,CAEA,WAAWA,EAAgB,CACpB,KAAA,mBAAqB,KAAK,mBAAmB,QAASL,GACzDM,GAAYN,EAAMK,EAAO,EAAI,CAAA,EAE1B,KAAA,kBAAoB,KAAK,kBAAkB,QAASL,GACvDM,GAAYN,EAAMK,EAAO,EAAI,CAAA,CAEjC,CAEA,UAAUE,EAA8B,CAW/B,OAVY,IAAIhB,GAAQ,KAAK,KAAK,UAAUgB,CAAM,EAAG,CAC1D,SAAU,KAAK,SAAS,IAAKR,GAAQA,EAAI,UAAUQ,CAAM,CAAC,EAC1D,kBAAmB,KAAK,kBAAkB,IAAKP,GAC7CA,EAAK,UAAUO,CAAM,CACvB,EACA,mBAAoB,KAAK,mBAAmB,IAAKP,GAC/CA,EAAK,UAAUO,CAAM,CACvB,CAAA,CACD,CAGH,CAEA,OAAQ,CACN,MAAMC,EAAuD,CAAA,EAC7D,OAAI,KAAK,MACPA,EAAO,KAAK,CAAE,MAAO,KAAK,KAAM,MAAO,MAAO,EAE5C,KAAK,SAAS,QACX,KAAA,SAAS,IAAKH,GAAUG,EAAO,KAAK,CAAE,MAAAH,EAAO,MAAO,KAAM,CAAC,CAAC,EAG/D,KAAK,mBAAmB,QAC1B,KAAK,mBAAmB,IAAKA,GAC3BG,EAAO,KAAK,CAAE,MAAAH,EAAO,MAAO,QAAS,CAAA,EAIrC,KAAK,kBAAkB,QACzB,KAAK,kBAAkB,IAAKA,GAC1BG,EAAO,KAAK,CAAE,MAAAH,EAAO,MAAO,OAAQ,CAAA,EAIjCI,GAAUD,EAAQ,CAAE,KAAM,IAAM,CAAA,CACzC,CACF,CClIA,SAASE,GACPC,EACAC,EACA,CACE,OAAAC,EAAS,EACT,YAAAC,EAAc,EACd,gBAAAC,EAAkB,UAClB,gBAAiBC,EACjB,iBAAkBC,EAClB,oBAAAC,EACA,qBAAAC,CACF,EAA2B,GAC3B,CACA,MAAMC,EAAkBJ,GAAwBF,EAC1CO,EAAmBJ,GAAyBH,EAE5CQ,EAAYC,GAAK,CAAC,CAACZ,EAAQ,EAAG,CAAC,CAAC,EAAE,MAAMA,CAAK,EAEnD,OAAIU,GACGF,GAAwBJ,KAAqB,WAChDO,EAAU,WAAW,CAACD,EAAkBA,EAAkB,CAAC,GAAI,CAAC,CAAC,EACvDC,EAAA,MAAMV,EAASS,CAAgB,GAE/BC,EAAA,KAAK,CAACD,EAAkBT,CAAM,EAG1CU,EAAU,MAAMV,CAAM,EAGxBU,EAAU,aAAaT,CAAM,EAC7BS,EAAU,MAAM,CAACX,EAAQS,EAAkBC,CAAgB,EAC3DC,EAAU,aAAaT,CAAM,EAEzBO,GACGF,GAAuBH,KAAqB,WACrCO,EAAA,MAAM,CAACV,EAASQ,CAAe,EACzCE,EAAU,aAAa,CAAC,CAACX,EAAQ,EAAG,CAAC,CAAC,GAEtCW,EAAU,OAAO,CAAC,CAACX,EAAQ,EAAG,CAAC,CAAC,EAGxBW,EAAA,MAAM,CAACV,CAAM,EAGlBU,EAAU,OACnB,CAEO,SAASE,GACdb,EACAC,EACAa,EAAiC,CAAA,EACjC,CACO,OAAAf,GAASC,EAAOC,EAAQa,CAAO,CACxC,CAEO,SAASC,GACdf,EACAC,EACAa,EAAiC,CAAA,EACjC,CACA,OAAOf,GAASC,EAAOC,EAAQa,CAAO,EAAE,OAAO,GAAG,CACpD,CAEgB,SAAAE,GACdhB,EACAC,EACA,CACE,eAAAgB,EACA,kBAAAC,EACA,mBAAAC,EACA,sBAAAC,EACA,GAAGN,CACL,EAA4B,GAC5B,CACO,OAAAf,GAASC,EAAOC,EAAQ,CAC7B,gBAAiBgB,EACjB,iBAAkBC,EAClB,oBAAqBC,EACrB,qBAAsBC,EACtB,GAAGN,CAAA,CACJ,EAAE,OAAO,EAAE,CACd,CAEO,SAASO,GACdrB,EACAC,EACAa,EAAkC,CAAA,EAClC,CACA,OAAOE,GAAShB,EAAOC,EAAQa,CAAO,EAAE,OAAO,GAAG,CACpD,CAEO,MAAMQ,GAAY,CACvB,MAAOD,GACP,KAAML,GACN,IAAKH,GACL,OAAQE,EACV,EC1GMQ,GAAW,CAACvB,EAAeC,IACxBW,GAAK,CAAC,CAACZ,EAAQ,EAAG,CAAC,CAAC,EACxB,KAAKC,EAAQ,CAACA,CAAM,EACpB,MAAMD,EAAQ,EAAIC,CAAM,EACxB,KAAKA,EAAQA,CAAM,EAIjB,MAAMuB,WAAqB3C,EAA4B,CAI5D,YACEmB,EACAyB,EAAiB,GACjB,CACM,QAPRtC,GAAA,YACAA,GAAA,eACAA,GAAA,aAOM,UAAOa,GAAU,SAAU,CAC7B,KAAK,IAAMA,EAAM,IACjB,KAAK,OAASA,EAAM,OACpB,KAAK,KAAOA,EAAM,KAClB,MACF,CAEA,MAAM0B,EAAMH,GAASvB,EAAOyB,EAAiB,GAAG,EAE3C,KAAA,IAAMC,EAAI,WACV,KAAA,OAASA,EAAI,QAEb,KAAA,KAAOH,GAASvB,EAAQ,EAAIyB,EAAgB,EAAIA,CAAc,EAChE,MAAA,EACA,OAAO,GAAG,CACf,CAEA,OAAQ,CACC,OAAA,IAAID,GAAa,IAAI,CAC9B,CAEA,UAAU5B,EAA8B,CACtC,OAAO,IAAI4B,GAAa,CACtB,IAAK,KAAK,IAAI,UAAU5B,CAAM,EAC9B,OAAQ,KAAK,OAAO,UAAUA,CAAM,EACpC,KAAM,KAAK,KAAK,UAAUA,CAAM,CAAA,CACjC,CACH,CAEA,QAAQ+B,EAAkB,CAChBA,EAAA,WAAW,KAAK,MAAM,EACtBA,EAAA,WAAW,KAAK,GAAG,CAC7B,CAEA,SAASA,EAAkB,CACjBA,EAAA,SAAS,KAAK,IAAI,CAC5B,CACF,CCrDA,MAAMC,WAA2B/C,EAAkC,CACjE,YAAmBgD,EAAkB,CAC7B,QADW,KAAA,OAAAA,EAEjB,KAAK,OAASA,CAChB,CAEA,UAAUjC,EAA8B,CACtC,OAAO,IAAIgC,GAAmB,KAAK,OAAO,IAAIhC,EAAO,SAAS,CAAC,CACjE,CAEA,WAAmC1O,EAAW,CACrC,OAAA,KAAK,OAAO,IAAK+B,GAAM/B,EAAE,YAAY+B,CAAC,CAAC,CAChD,CAEA,gBAAmD/B,EAAW,CACrD,OAAA,KAAK,OAAO,IAAK+B,GAAM/B,EAAE,QAAQ,YAAY+B,CAAC,CAAC,CACxD,CACF,CAEO,SAAS6O,GACdC,EACAC,EACAC,EAAW,EACXC,EAAS,EACT,CACI,GAAAH,GAAcC,EAAc,EACxB,MAAA,IAAI,MAAM,uDAAuD,EAGzE,MAAMG,EAAe,KAAK,IACxB,KAAK,OAAOJ,EAAa,EAAIG,IAAWF,GAAeC,EAAW,GAAG,EACrE,CAAA,EAGIG,GADYL,EAAa,EAAIG,EAASC,EAAeH,IAC9BG,EAAe,GACtCN,EAAmB,CAAA,EACzB,QAASrP,EAAI,EAAGA,EAAI2P,EAAc3P,IACzBqP,EAAA,KACLK,EAAS1P,GAAKwP,EAAcI,GAAWL,EAAa,EAAIC,EAAc,CAAA,EAGnE,OAAA,IAAIJ,GAAmBC,EAAO,IAAK5O,GAAM,CAACA,EAAG,CAAC,CAAC,CAAC,CACzD,CAEO,SAASoP,GACdC,EACAC,EACAjD,EAAuB,IACvB,CACM,MAAAkD,EAAcF,GAAOC,EAAQ,GAC7BV,EAAmB,CAAA,EACzB,QAASrP,EAAI,EAAGA,EAAI+P,EAAO/P,IACzBqP,EAAO,KAAKrP,EAAI8P,EAAME,EAAc,CAAC,EAEvC,OAAO,IAAIZ,GACTC,EAAO,IAAK5O,GAAOqM,EAAU,YAAY,IAAM,IAAM,CAACrM,EAAG,CAAC,EAAI,CAAC,EAAGA,CAAC,CAAE,CAAA,CAEzE"}
1
+ {"version":3,"file":"dielines.umd.cjs","sources":["../../pantograph/dist/QuadraticBezier-BzVqiExF.js","../../pantograph/dist/models-WQ-B7GSL.js","../../pantograph/dist/draw-DqsKIWJD.js","../../pantograph/dist/svg-BylQQgsL.js","../../pantograph/dist/pantograph.js","../src/Dieline.ts","../src/drawFlaps.ts","../src/FoldLockBump.ts","../src/linearDistribution.ts"],"sourcesContent":["var Be = Object.defineProperty;\nvar Me = (r) => {\n throw TypeError(r);\n};\nvar Oe = (r, s, e) => s in r ? Be(r, s, { enumerable: !0, configurable: !0, writable: !0, value: e }) : r[s] = e;\nvar q = (r, s, e) => Oe(r, typeof s != \"symbol\" ? s + \"\" : s, e), oe = (r, s, e) => s.has(r) || Me(\"Cannot \" + e);\nvar ot = (r, s, e) => (oe(r, s, \"read from private field\"), e ? e.call(r) : s.get(r)), le = (r, s, e) => s.has(r) ? Me(\"Cannot add the same private member more than once\") : s instanceof WeakSet ? s.add(r) : s.set(r, e), Lt = (r, s, e, t) => (oe(r, s, \"write to private field\"), t ? t.call(r, e) : s.set(r, e), e), he = (r, s, e) => (oe(r, s, \"access private method\"), e);\nfunction Dt(r, s, e, t) {\n return r <= t && s >= e;\n}\nclass ft {\n constructor(s = 1 / 0, e = 1 / 0, t = -1 / 0, n = -1 / 0) {\n q(this, \"xMin\");\n q(this, \"yMin\");\n q(this, \"xMax\");\n q(this, \"yMax\");\n this.xMin = s, this.yMin = e, this.xMax = t, this.yMax = n;\n }\n get width() {\n return this.xMax - this.xMin;\n }\n get height() {\n return this.yMax - this.yMin;\n }\n get center() {\n return [(this.xMin + this.xMax) / 2, (this.yMin + this.yMax) / 2];\n }\n grow(s) {\n return new ft(\n this.xMin - s,\n this.yMin - s,\n this.xMax + s,\n this.yMax + s\n );\n }\n contains(s) {\n const [e, t] = s;\n return Dt(this.xMin, this.xMax, e, e) && Dt(this.yMin, this.yMax, t, t);\n }\n overlaps(s) {\n return Dt(this.xMin, this.xMax, s.xMin, s.xMax) && Dt(this.yMin, this.yMax, s.yMin, s.yMax);\n }\n addPoint(s) {\n const [e, t] = s;\n return new ft(\n Math.min(this.xMin, e),\n Math.min(this.yMin, t),\n Math.max(this.xMax, e),\n Math.max(this.yMax, t)\n );\n }\n merge(s) {\n return new ft(\n Math.min(this.xMin, s.xMin),\n Math.min(this.yMin, s.yMin),\n Math.max(this.xMax, s.xMax),\n Math.max(this.yMax, s.yMax)\n );\n }\n intersection(s) {\n return new ft(\n Math.max(this.xMin, s.xMin),\n Math.max(this.yMin, s.yMin),\n Math.min(this.xMax, s.xMax),\n Math.min(this.yMax, s.yMax)\n );\n }\n}\nfunction ce(r) {\n return r.reduce((s, e) => s.addPoint(e), new ft());\n}\nconst ye = (r, s = 1e-9) => {\n let e = r;\n return Math.abs(r) < s && (e = 0), e.toFixed(-Math.log10(s));\n};\nfunction Te(r, s = 1e-9) {\n return Array.from(\n new Map(\n r.map(([e, t]) => [\n `[${ye(e, s)},${ye(t, s)}]`,\n [e, t]\n ])\n ).values()\n );\n}\nconst fe = Math.PI / 180, Ue = 180 / Math.PI, Z = (r) => `[${r[0]}, ${r[1]}]`, W = ([r, s], [e, t], n = 1e-9) => Math.abs(r - e) <= n && Math.abs(s - t) <= n, ut = ([r, s], [e, t]) => [r + e, s + t], X = ([r, s], [e, t]) => [r - e, s - t], It = ([r, s]) => r * r + s * s, an = ([r, s]) => Math.sqrt(It([r, s])), wt = ([r, s], e) => [r * e, s * e], Rt = ([r, s], [e, t] = [0, 0]) => (r - e) ** 2 + (s - t) ** 2, J = (r, s = [0, 0]) => Math.sqrt(Rt(r, s));\nfunction St([r, s], [e, t]) {\n return r * t - s * e;\n}\nfunction Pe([r, s], [e, t]) {\n return r * e + s * t;\n}\nfunction H([r, s]) {\n const e = J([r, s]);\n return [r / e, s / e];\n}\nfunction Tt(r, s) {\n const e = Math.cos(s) * r, t = Math.sin(s) * r;\n return [e, t];\n}\nfunction Ye([r, s]) {\n return Math.atan2(s, r);\n}\nfunction We(r) {\n const s = J(r), e = Ye(r);\n return [s, e];\n}\nfunction Ie(r, s, e = 1e-9) {\n const t = St(r, s), n = It(r), i = It(s);\n return t * t < n * i * e * e;\n}\nfunction rt(r) {\n return [-r[1], r[0]];\n}\nfunction Wt(r) {\n return [r[1], -r[0]];\n}\nfunction Qe(r, s, e) {\n return W(e, r) || Ie(X(e, r), s);\n}\nconst Mt = (r, s) => {\n const [e, t, n, i, o, l, h, a, u] = r, [c, g, d, w, p, P, f, M, E] = s;\n return [\n e * c + t * w + n * f,\n e * g + t * p + n * M,\n e * d + t * P + n * E,\n i * c + o * w + l * f,\n i * g + o * p + l * M,\n i * d + o * P + l * E,\n h * c + a * w + u * f,\n h * g + a * p + u * M,\n h * d + a * P + u * E\n ];\n}, Ge = (r) => {\n const [s, e, t, n, i, o, l, h, a] = r, u = s * (i * a - o * h) - e * (n * a - o * l) + t * (n * h - i * l);\n return [\n (i * a - o * h) / u,\n (t * h - e * a) / u,\n (e * o - t * i) / u,\n (o * l - n * a) / u,\n (s * a - t * l) / u,\n (t * n - s * o) / u,\n (n * h - i * l) / u,\n (e * l - s * h) / u,\n (s * i - e * n) / u\n ];\n}, Xe = (r) => {\n const [s, e, t, n, i, o, l, h, a] = r;\n return [s, n, l, e, i, h, t, o, a];\n};\nclass et {\n constructor(s) {\n q(this, \"_matrix\", [1, 0, 0, 0, 1, 0, 0, 0, 1]);\n s && (this._matrix = [...s]);\n }\n clone() {\n return new et(this._matrix);\n }\n transpose() {\n return this._matrix = Xe(this._matrix), this;\n }\n inverse() {\n return this._matrix = Ge(this._matrix), this;\n }\n translate(s, e) {\n return this._matrix = Mt(this._matrix, [1, 0, s, 0, 1, e, 0, 0, 1]), this;\n }\n rotate(s, e) {\n const t = Math.cos(s), n = Math.sin(s), i = [t, -n, 0, n, t, 0, 0, 0, 1];\n return e && this.translate(e[0], e[1]), this._matrix = Mt(this._matrix, i), e && this.translate(-e[0], -e[1]), this;\n }\n mirrorX() {\n return this._matrix = Mt(this._matrix, [1, 0, 0, 0, -1, 0, 0, 0, 1]), this;\n }\n mirrorY() {\n return this._matrix = Mt(this._matrix, [-1, 0, 0, 0, 1, 0, 0, 0, 1]), this;\n }\n mirrorLine(s, e) {\n const [t, n] = s, i = Math.atan2(n, t);\n return e && this.translate(e[0], e[1]), this.rotate(i), this.mirrorX(), this.rotate(-i), e && this.translate(-e[0], -e[1]), this;\n }\n mirrorCenter(s) {\n return s && this.translate(s[0], s[1]), this._matrix = Mt(this._matrix, [-1, 0, 0, 0, -1, 0, 0, 0, 1]), s && this.translate(-s[0], -s[1]), this;\n }\n scale(s, e) {\n return e && this.translate(e[0], e[1]), this._matrix = Mt(this._matrix, [s, 0, 0, 0, s, 0, 0, 0, 1]), e && this.translate(-e[0], -e[1]), this;\n }\n transform(s) {\n const [e, t] = s, [n, i, o, l, h, a] = this._matrix;\n return [n * e + i * t + o, l * e + h * t + a];\n }\n transformAngle(s) {\n const [e, t] = this.transform([Math.cos(s), Math.sin(s)]), [n, i] = this.transform([0, 0]);\n return Math.atan2(t - i, e - n);\n }\n keepsOrientation() {\n const [s, , , , e] = this._matrix;\n return s * e > 0;\n }\n scaleFactor() {\n const [s, , , e] = this._matrix;\n return Math.sqrt(s * s + e * e);\n }\n}\nclass Ze {\n translateX(s) {\n const e = new et().translate(s, 0);\n return this.transform(e);\n }\n translateY(s) {\n const e = new et().translate(0, s);\n return this.transform(e);\n }\n translate(s, e) {\n const t = new et().translate(s, e);\n return this.transform(t);\n }\n translateTo([s, e]) {\n const t = new et().translate(s, e);\n return this.transform(t);\n }\n rotate(s, e) {\n const t = new et().rotate(\n s * fe,\n e\n );\n return this.transform(t);\n }\n scale(s, e) {\n const t = new et().scale(s, e);\n return this.transform(t);\n }\n mirrorCenter(s) {\n const e = new et().mirrorCenter(s);\n return this.transform(e);\n }\n mirror(s = \"x\", e) {\n const t = new et();\n return s === \"x\" ? t.mirrorX() : s === \"y\" ? t.mirrorY() : t.mirrorLine(s, e), this.transform(t);\n }\n}\nclass Ft extends Ze {\n constructor(e, t) {\n super();\n q(this, \"precision\", 1e-9);\n this.firstPoint = e, this.lastPoint = t, this.firstPoint = e, this.lastPoint = t;\n }\n get repr() {\n return `${this.segmentType} ${Z(this.firstPoint)} - ${Z(\n this.lastPoint\n )}`;\n }\n get info() {\n return this.repr;\n }\n [Symbol.for(\"nodejs.util.inspect.custom\")]() {\n return this.repr;\n }\n}\nclass lt extends Ft {\n constructor() {\n super(...arguments);\n q(this, \"segmentType\", \"LINE\");\n q(this, \"_V\", null);\n q(this, \"_slope\", null);\n q(this, \"_yIntercept\", null);\n q(this, \"_boundingBox\", null);\n }\n isValidParameter(e) {\n const t = this.length * this.precision;\n return e >= -t && 1 - e >= -t;\n }\n paramPoint(e) {\n return ut(this.firstPoint, wt(this.V, e));\n }\n get length() {\n return J(this.firstPoint, this.lastPoint);\n }\n get squareLength() {\n return Rt(this.firstPoint, this.lastPoint);\n }\n get V() {\n return this._V === null && (this._V = X(this.lastPoint, this.firstPoint)), this._V;\n }\n get slope() {\n if (this._slope === null) {\n const [e, t] = this.V;\n this._slope = t / e;\n }\n return this._slope;\n }\n get yIntercept() {\n return this._yIntercept === null && (this._yIntercept = this.firstPoint[1] - this.slope * this.firstPoint[0]), this._yIntercept;\n }\n get midPoint() {\n return ut(this.firstPoint, wt(this.V, 0.5));\n }\n isSame(e) {\n return e instanceof lt ? W(this.firstPoint, e.firstPoint) && W(this.lastPoint, e.lastPoint) || W(this.lastPoint, e.firstPoint) && W(this.firstPoint, e.lastPoint) : !1;\n }\n clone() {\n return new lt(this.firstPoint, this.lastPoint);\n }\n reverse() {\n return new lt(this.lastPoint, this.firstPoint);\n }\n get boundingBox() {\n return this._boundingBox === null && (this._boundingBox = new ft(\n Math.min(this.firstPoint[0], this.lastPoint[0]) - this.precision,\n Math.min(this.firstPoint[1], this.lastPoint[1]) - this.precision,\n Math.max(this.firstPoint[0], this.lastPoint[0]) + this.precision,\n Math.max(this.firstPoint[1], this.lastPoint[1]) + this.precision\n )), this._boundingBox;\n }\n distanceFrom(e) {\n const t = X(e, this.firstPoint), n = Pe(t, this.V) / this.squareLength;\n if (n < 0)\n return J(e, this.firstPoint);\n if (n > 1)\n return J(e, this.lastPoint);\n const i = this.paramPoint(n);\n return J(e, i);\n }\n isOnSegment(e) {\n if (W(e, this.firstPoint, this.precision)) return !0;\n const t = X(e, this.firstPoint);\n if (!Ie(this.V, t)) return !1;\n const n = Pe(t, this.V) / this.squareLength;\n return this.isValidParameter(n);\n }\n gradientAt(e) {\n return this.V;\n }\n tangentAt(e) {\n if (!this.isOnSegment(e)) throw new Error(\"Point is not on segment\");\n return H(this.V);\n }\n get normalVector() {\n return rt(H(this.V));\n }\n get tangentAtFirstPoint() {\n return H(this.V);\n }\n get tangentAtLastPoint() {\n return H(this.V);\n }\n splitAt(e) {\n let t;\n if (Array.isArray(e) && e.length === 0)\n return [this];\n Array.isArray(e[0]) ? t = e : t = [e], t.forEach((a) => {\n if (!this.isOnSegment(a))\n throw new Error(\n `Point ${Z(a)} is not on segment ${this.repr}`\n );\n });\n const n = [this.firstPoint, ...t, this.lastPoint], i = Te(n), o = this.lastPoint[0] - this.firstPoint[0];\n let l = Math.sign(o), h = 0;\n return Math.abs(o) < this.precision && (l = Math.sign(this.lastPoint[1] - this.firstPoint[1]), h = 1), i.sort(\n (a, u) => l * (a[h] - u[h])\n ), i.flatMap((a, u) => u === i.length - 1 ? [] : new lt(a, i[u + 1]));\n }\n transform(e) {\n return new lt(\n e.transform(this.firstPoint),\n e.transform(this.lastPoint)\n );\n }\n}\nfunction Je(r) {\n return Array.from(Array(r).keys());\n}\nfunction Jt(r) {\n const s = Math.min(...r.map((e) => e.length));\n return Je(s).map((e) => r.map((t) => t[e]));\n}\nfunction gt(r, s = 1e-9) {\n return r < 0 ? r + 2 * Math.PI : r >= 2 * Math.PI ? r % (2 * Math.PI) : r > 2 * Math.PI - s ? 0 : r;\n}\nfunction Xt(r, s, e, t = 1e-9) {\n let n = s - r;\n return e && (n = -n), n < 0 && (n += 2 * Math.PI), n > 2 * Math.PI - t ? 0 : n;\n}\nconst me = (r, s, e) => {\n const t = St(r.V, s.V), n = It(r.V), i = It(s.V), o = e ? e * e : r.precision * s.precision;\n if (t * t < n * i * o)\n return \"parallel\";\n const l = X(s.firstPoint, r.firstPoint), h = St(l, s.V) / t, a = St(l, r.V) / t;\n return {\n intersectionParam1: h,\n intersectionParam2: a\n };\n};\nfunction un(r, s, e = !1, t) {\n const n = me(r, s, t);\n if (n === \"parallel\") {\n if (!e) return null;\n if (r.isSame(s)) return r;\n const l = Te(\n [\n s.isOnSegment(r.firstPoint) ? r.firstPoint : null,\n s.isOnSegment(r.lastPoint) ? r.lastPoint : null,\n r.isOnSegment(s.firstPoint) ? s.firstPoint : null,\n r.isOnSegment(s.lastPoint) ? s.lastPoint : null\n ].filter((h) => h !== null)\n ).sort((h, a) => h[0] - a[0]);\n if (l.length === 0) return null;\n if (l.length === 1) return null;\n if (l.length === 2) return new lt(l[0], l[1]);\n throw console.error(l), new Error(\n \"Unexpected number of points while intersecting parallel lines\"\n );\n }\n const { intersectionParam1: i, intersectionParam2: o } = n;\n return !r.isValidParameter(i) || !s.isValidParameter(o) ? null : r.paramPoint(i);\n}\nconst zt = (r, s) => {\n const e = X(r, s);\n return We(e);\n};\nclass at extends Ft {\n constructor(e, t, n, i = !1, { ignoreChecks: o = !1 } = {}) {\n super(e, t);\n q(this, \"segmentType\", \"ARC\");\n q(this, \"center\");\n q(this, \"clockwise\");\n q(this, \"_coefficients\", null);\n q(this, \"_angularLength\", null);\n q(this, \"_radius\", null);\n q(this, \"_firstAngle\", null);\n q(this, \"_lastAngle\", null);\n q(this, \"_boundingBox\", null);\n if (this.center = n, this.clockwise = i, !o) {\n if (W(e, t))\n throw new Error(\"Invalid arc, cannot be a full circle\");\n if (Math.abs(this.radius - J(this.lastPoint, this.center)) > this.precision)\n throw new Error(\n `Invalid arc, radius does not match between ${Z(\n e\n )} and ${Z(t)}} (center ${Z(n)})`\n );\n }\n }\n get info() {\n return `ARC(${Z(this.firstPoint)}, ${Z(\n this.lastPoint\n )}, ${Z(this.center)}, ${this.clockwise ? \"CW\" : \"CCW\"})`;\n }\n get coefficients() {\n if (this._coefficients === null) {\n const [e, t] = this.center, n = this.radius * this.radius;\n this._coefficients = {\n x2: 1 / n,\n xy: 0,\n y2: 1 / n,\n x: -(2 * e) / n,\n y: -(2 * t) / n,\n c: (e * e + t * t - n) / n\n };\n }\n return this._coefficients;\n }\n isValidParameter(e) {\n return 1 - e >= -this.precision && e >= -this.precision;\n }\n angleToParam(e) {\n return Xt(this.firstAngle, gt(e), this.clockwise) / this.angularLength;\n }\n get angularLength() {\n return this._angularLength || (this._angularLength = Xt(\n this.firstAngle,\n this.lastAngle,\n this.clockwise\n )), this._angularLength;\n }\n paramPoint(e) {\n return ut(\n this.center,\n Tt(\n this.radius,\n this.firstAngle + e * this.angularLength * (this.clockwise ? -1 : 1)\n )\n );\n }\n pointToParam(e) {\n const [t, n] = zt(e, this.center);\n if (Math.abs(t - this.radius) > this.precision)\n throw new Error(\n `Point ${Z(e)} is not on segment ${this.repr}`\n );\n const i = this.angleToParam(n);\n if (!this.isValidParameter(i))\n throw new Error(\n `Point ${Z(e)} is not on segment ${this.repr}`\n );\n return i;\n }\n get radius() {\n return this._radius === null && (this._radius = J(this.firstPoint, this.center)), this._radius;\n }\n get firstAngle() {\n if (this._firstAngle === null) {\n const [e, t] = X(this.firstPoint, this.center);\n this._firstAngle = gt(Math.atan2(t, e));\n }\n return this._firstAngle;\n }\n get lastAngle() {\n if (this._lastAngle === null) {\n const [e, t] = X(this.lastPoint, this.center);\n this._lastAngle = gt(Math.atan2(t, e));\n }\n return this._lastAngle;\n }\n get length() {\n return this.radius * this.angularLength;\n }\n get squareLength() {\n return this.length * this.length;\n }\n get midPoint() {\n return this.paramPoint(0.5);\n }\n isSame(e) {\n return !(e instanceof at) || !W(this.center, e.center) ? !1 : W(this.firstPoint, e.firstPoint) && W(this.lastPoint, e.lastPoint) && this.clockwise === e.clockwise || W(this.lastPoint, e.firstPoint) && W(this.firstPoint, e.lastPoint) && this.clockwise === !e.clockwise;\n }\n clone() {\n return new at(\n this.firstPoint,\n this.lastPoint,\n this.center,\n this.clockwise\n );\n }\n reverse() {\n return new at(\n this.lastPoint,\n this.firstPoint,\n this.center,\n !this.clockwise\n );\n }\n get boundingBox() {\n if (this._boundingBox === null) {\n const e = this.radius + this.precision, t = (n) => this.isValidParameter(this.angleToParam(n));\n this._boundingBox = new ft(\n t(Math.PI) ? this.center[0] - e : Math.min(this.firstPoint[0], this.lastPoint[0]) - this.precision,\n t(Math.PI * 1.5) ? this.center[1] - e : Math.min(this.firstPoint[1], this.lastPoint[1]) - this.precision,\n t(0) ? this.center[0] + e : Math.max(this.firstPoint[0], this.lastPoint[0]) + this.precision,\n t(Math.PI / 2) ? this.center[1] + e : Math.max(this.firstPoint[1], this.lastPoint[1]) + this.precision\n );\n }\n return this._boundingBox;\n }\n distanceFrom(e) {\n const [t, n] = zt(e, this.center);\n return this.isValidParameter(this.angleToParam(n)) ? Math.abs(t - this.radius) : Math.sqrt(\n Math.min(\n Rt(e, this.firstPoint),\n Rt(e, this.lastPoint)\n )\n );\n }\n isOnSegment(e) {\n if (W(e, this.firstPoint) || W(e, this.lastPoint))\n return !0;\n const [t, n] = zt(e, this.center);\n if (Math.abs(t - this.radius) > this.precision) return !1;\n const i = this.angleToParam(n);\n return this.isValidParameter(i);\n }\n gradientAt(e) {\n const t = this.firstAngle + e * this.angularLength * (this.clockwise ? -1 : 1), n = this.radius * this.angularLength, i = -n * Math.sin(t), o = n * Math.cos(t);\n return this.clockwise ? [-i, -o] : [i, o];\n }\n tangentAt(e) {\n const [t, n] = zt(e, this.center);\n if (Math.abs(t - this.radius) > this.precision)\n throw new Error(\"Point is not on the arc\");\n const i = this.angleToParam(n);\n if (!this.isValidParameter(i))\n throw new Error(\"Point is not on the arc\");\n const o = Tt(1, n);\n return (this.clockwise ? Wt : rt)(H(o));\n }\n get tangentAtFirstPoint() {\n const e = Tt(1, this.firstAngle);\n return (this.clockwise ? Wt : rt)(H(e));\n }\n get tangentAtLastPoint() {\n const e = Tt(1, this.lastAngle);\n return (this.clockwise ? Wt : rt)(H(e));\n }\n splitAt(e) {\n let t;\n if (Array.isArray(e) && e.length === 0)\n return [this];\n Array.isArray(e[0]) ? t = e : t = [e];\n const i = [0, 1, ...t.map((h) => this.pointToParam(h))], o = new Map(\n Jt([i, [this.firstPoint, this.lastPoint, ...t]])\n );\n i.sort((h, a) => h - a);\n let l = null;\n return i.flatMap((h, a) => {\n if (a === i.length - 1) return [];\n const u = i[a + 1];\n if (u - h < this.precision)\n return l === null && (l = h), [];\n const c = l === null ? h : l, g = new at(\n o.get(c) || this.paramPoint(c),\n o.get(u) || this.paramPoint(u),\n this.center,\n this.clockwise\n );\n return l = null, g;\n });\n }\n transform(e) {\n return new at(\n e.transform(this.firstPoint),\n e.transform(this.lastPoint),\n e.transform(this.center),\n e.keepsOrientation() ? this.clockwise : !this.clockwise\n );\n }\n}\nfunction cn(r, s, e) {\n const t = new lt(s, r), n = new lt(s, e), i = rt(t.tangentAtFirstPoint), o = rt(n.tangentAtLastPoint), l = me(\n { firstPoint: t.midPoint, V: i, precision: 1e-9 },\n { firstPoint: n.midPoint, V: o, precision: 1e-9 }\n );\n if (l === \"parallel\")\n throw new Error(\"Cannot create an arc from three colinear points\");\n const h = St(\n X(r, s),\n X(e, s)\n ) > 0;\n return new at(\n r,\n e,\n ut(t.midPoint, wt(i, l.intersectionParam1)),\n h,\n { ignoreChecks: !0 }\n );\n}\nfunction fn(r, s, e) {\n const t = new lt(s, r), n = rt(t.tangentAtFirstPoint), i = me(\n { firstPoint: t.midPoint, V: n, precision: 1e-9 },\n {\n firstPoint: r,\n V: rt(e),\n precision: 1e-9\n }\n );\n if (i === \"parallel\")\n throw new Error(\"Cannot create an arc from three colinear points\");\n const o = ut(\n t.midPoint,\n wt(n, i.intersectionParam1)\n ), l = St(\n X(o, r),\n X(o, ut(r, e))\n ) < 0;\n return new at(r, s, o, l, {\n ignoreChecks: !0\n });\n}\nconst be = 1e-21, Bt = 1.618034;\nfunction Ee(r, s = 0, e = 1, t = 110, n = 1e3) {\n let i, o, l, h, a, u, c, g, d, w, p, P, f;\n for (o = r(s), l = r(e), o < l && ([s, e] = [e, s], [o, l] = [l, o]), f = e + Bt * (e - s), h = r(f), a = 3, c = 0; h < l; ) {\n if (g = (e - s) * (l - h), d = (e - f) * (l - o), w = d - g, Math.abs(w) < be ? i = 2 * be : i = 2 * w, p = e - ((e - f) * d - (e - s) * g) / i, P = e + t * (f - e), c > n)\n throw new Error(\"Too many iterations.\");\n if (c += 1, (p - f) * (e - p) > 0) {\n if (u = r(p), a += 1, u < h)\n return s = e, e = p, o = l, l = u, [s, e, f, o, l, h, a];\n if (u > l)\n return f = p, h = u, [s, e, f, o, l, h, a];\n p = f + Bt * (f - e), u = r(p), a += 1;\n } else\n (p - P) * (P - f) >= 0 ? (p = P, u = r(p), a += 1) : (p - P) * (f - p) > 0 ? (u = r(p), a += 1, u < h && (e = f, f = p, p = f + Bt * (f - e), l = h, h = u, u = r(p), a += 1)) : (p = f + Bt * (f - e), u = r(p), a += 1);\n s = e, e = f, f = p, o = l, l = h, h = u;\n }\n return [s, e, f, o, l, h, a];\n}\nconst _e = 0.381966, Ke = 1e-11;\nclass He {\n constructor(s, e = 148e-10, t = 500) {\n q(this, \"xmin\");\n q(this, \"fval\");\n q(this, \"iter\");\n q(this, \"funcalls\");\n q(this, \"brack\");\n this.func = s, this.tol = e, this.maxiter = t, this.func = s, this.tol = e, this.maxiter = t, this.xmin = 1 / 0, this.fval = 1 / 0, this.iter = 0, this.funcalls = 0, this.brack = null;\n }\n setBracket(s = null) {\n this.brack = s;\n }\n getBracketInfo() {\n let s, e, t, n, i, o, l;\n const h = this.func, a = this.brack;\n if (a === null)\n [i, o, l, s, e, t, n] = Ee(h);\n else if (a.length === 2)\n [i, o, l, s, e, t, n] = Ee(h, a[0], a[1]);\n else if (a.length === 3) {\n if ([i, o, l] = a, i > l && ([l, i] = [i, l]), !(i < o && o < l))\n throw new Error(\"Not a bracketing interval.\");\n if (s = h(i), e = h(o), t = h(l), !(e < s && e < t))\n throw new Error(\"Not a bracketing interval.\");\n n = 3;\n } else\n throw new Error(\n \"Bracketing interval must be length 2 or 3 sequence.\"\n );\n return [i, o, l, s, e, t, n];\n }\n optimize() {\n const s = this.func;\n let [e, t, n, , , , i] = this.getBracketInfo(), o = t, l = t, h = t, a = s(o), u = a, c = a, g, d;\n e < n ? (g = e, d = n) : (g = n, d = e);\n let w = 0;\n i = 1;\n let p = 0, P = 0, f;\n for (; p < this.maxiter; ) {\n const M = this.tol * Math.abs(o) + Ke, E = 2 * M, R = 0.5 * (g + d);\n if (Math.abs(o - R) < E - 0.5 * (d - g))\n break;\n if (Math.abs(w) <= M)\n o >= R ? w = g - o : w = d - o, P = _e * w;\n else {\n const L = (o - l) * (c - u);\n let S = (o - h) * (c - a), k = (o - h) * S - (o - l) * L;\n S = 2 * (S - L), S > 0 && (k = -k), S = Math.abs(S);\n const D = w;\n w = P, k > S * (g - o) && k < S * (d - o) && Math.abs(k) < Math.abs(0.5 * S * D) ? (P = k * 1 / S, f = o + P, (f - g < E || d - f < E) && (R - o >= 0 ? P = M : P = -M)) : (o >= R ? w = g - o : w = d - o, P = _e * w);\n }\n Math.abs(P) < M ? P >= 0 ? f = o + M : f = o - M : f = o + P;\n const v = s(f);\n i += 1, v > c ? (f < o ? g = f : d = f, v <= a || l === o ? (h = l, l = f, u = a, a = v) : (v <= u || h === o || h === l) && (h = f, u = v)) : (f >= o ? g = o : d = o, h = l, l = o, o = f, u = a, a = c, c = v), p += 1;\n }\n this.xmin = o, this.fval = c, this.iter = p, this.funcalls = i;\n }\n results() {\n return {\n argMin: this.xmin,\n fMin: this.fval,\n iterations: this.iter,\n funcCalls: this.funcalls\n };\n }\n run() {\n return this.optimize(), this.results();\n }\n}\nfunction Ce(r, s = 1e-8, e = 1e3) {\n const t = new He(r, s, e);\n return t.setBracket([0, 1]), t.run();\n}\nfunction qe(r) {\n if (r.__esModule) return r;\n var s = r.default;\n if (typeof s == \"function\") {\n var e = function t() {\n return this instanceof t ? Reflect.construct(s, arguments, this.constructor) : s.apply(this, arguments);\n };\n e.prototype = s.prototype;\n } else e = {};\n return Object.defineProperty(e, \"__esModule\", { value: !0 }), Object.keys(r).forEach(function(t) {\n var n = Object.getOwnPropertyDescriptor(r, t);\n Object.defineProperty(e, t, n.get ? n : {\n enumerable: !0,\n get: function() {\n return r[t];\n }\n });\n }), e;\n}\nvar $ = {};\nconst ts = Object.prototype.toString;\nfunction Ct(r) {\n const s = ts.call(r);\n return s.endsWith(\"Array]\") && !s.includes(\"Big\");\n}\nconst es = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n isAnyArray: Ct\n}, Symbol.toStringTag, { value: \"Module\" })), ss = /* @__PURE__ */ qe(es);\nfunction ns(r) {\n var s = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n if (!Ct(r))\n throw new TypeError(\"input must be an array\");\n if (r.length === 0)\n throw new TypeError(\"input must not be empty\");\n var e = s.fromIndex, t = e === void 0 ? 0 : e, n = s.toIndex, i = n === void 0 ? r.length : n;\n if (t < 0 || t >= r.length || !Number.isInteger(t))\n throw new Error(\"fromIndex must be a positive integer smaller than length\");\n if (i <= t || i > r.length || !Number.isInteger(i))\n throw new Error(\"toIndex must be an integer greater than fromIndex and at most equal to length\");\n for (var o = r[t], l = t + 1; l < i; l++)\n r[l] > o && (o = r[l]);\n return o;\n}\nfunction is(r) {\n var s = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n if (!Ct(r))\n throw new TypeError(\"input must be an array\");\n if (r.length === 0)\n throw new TypeError(\"input must not be empty\");\n var e = s.fromIndex, t = e === void 0 ? 0 : e, n = s.toIndex, i = n === void 0 ? r.length : n;\n if (t < 0 || t >= r.length || !Number.isInteger(t))\n throw new Error(\"fromIndex must be a positive integer smaller than length\");\n if (i <= t || i > r.length || !Number.isInteger(i))\n throw new Error(\"toIndex must be an integer greater than fromIndex and at most equal to length\");\n for (var o = r[t], l = t + 1; l < i; l++)\n r[l] < o && (o = r[l]);\n return o;\n}\nfunction rs(r) {\n var s = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n if (Ct(r)) {\n if (r.length === 0)\n throw new TypeError(\"input must not be empty\");\n } else throw new TypeError(\"input must be an array\");\n var e;\n if (s.output !== void 0) {\n if (!Ct(s.output))\n throw new TypeError(\"output option must be an array if specified\");\n e = s.output;\n } else\n e = new Array(r.length);\n var t = is(r), n = ns(r);\n if (t === n)\n throw new RangeError(\"minimum and maximum input values are equal. Cannot rescale a constant array\");\n var i = s.min, o = i === void 0 ? s.autoMinMax ? t : 0 : i, l = s.max, h = l === void 0 ? s.autoMinMax ? n : 1 : l;\n if (o >= h)\n throw new RangeError(\"min option must be smaller than max option\");\n for (var a = (h - o) / (n - t), u = 0; u < r.length; u++)\n e[u] = (r[u] - t) * a + o;\n return e;\n}\nconst os = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n default: rs\n}, Symbol.toStringTag, { value: \"Module\" })), ls = /* @__PURE__ */ qe(os);\nObject.defineProperty($, \"__esModule\", { value: !0 });\nvar tt = ss, je = ls;\nconst Ot = \" \".repeat(2), Fe = \" \".repeat(4);\nfunction hs() {\n return xe(this);\n}\nfunction xe(r, s = {}) {\n const {\n maxRows: e = 15,\n maxColumns: t = 10,\n maxNumSize: n = 8,\n padMinus: i = \"auto\"\n } = s;\n return `${r.constructor.name} {\n${Ot}[\n${Fe}${as(r, e, t, n, i)}\n${Ot}]\n${Ot}rows: ${r.rows}\n${Ot}columns: ${r.columns}\n}`;\n}\nfunction as(r, s, e, t, n) {\n const { rows: i, columns: o } = r, l = Math.min(i, s), h = Math.min(o, e), a = [];\n if (n === \"auto\") {\n n = !1;\n t: for (let u = 0; u < l; u++)\n for (let c = 0; c < h; c++)\n if (r.get(u, c) < 0) {\n n = !0;\n break t;\n }\n }\n for (let u = 0; u < l; u++) {\n let c = [];\n for (let g = 0; g < h; g++)\n c.push(us(r.get(u, g), t, n));\n a.push(`${c.join(\" \")}`);\n }\n return h !== o && (a[a.length - 1] += ` ... ${o - e} more columns`), l !== i && a.push(`... ${i - s} more rows`), a.join(`\n${Fe}`);\n}\nfunction us(r, s, e) {\n return (r >= 0 && e ? ` ${Se(r, s - 1)}` : Se(r, s)).padEnd(s);\n}\nfunction Se(r, s) {\n let e = r.toString();\n if (e.length <= s) return e;\n let t = r.toFixed(s);\n if (t.length > s && (t = r.toFixed(Math.max(0, s - (t.length - s)))), t.length <= s && !t.startsWith(\"0.000\") && !t.startsWith(\"-0.000\"))\n return t;\n let n = r.toExponential(s);\n return n.length > s && (n = r.toExponential(Math.max(0, s - (n.length - s)))), n.slice(0);\n}\nfunction cs(r, s) {\n r.prototype.add = function(t) {\n return typeof t == \"number\" ? this.addS(t) : this.addM(t);\n }, r.prototype.addS = function(t) {\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) + t);\n return this;\n }, r.prototype.addM = function(t) {\n if (t = s.checkMatrix(t), this.rows !== t.rows || this.columns !== t.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) + t.get(n, i));\n return this;\n }, r.add = function(t, n) {\n return new s(t).add(n);\n }, r.prototype.sub = function(t) {\n return typeof t == \"number\" ? this.subS(t) : this.subM(t);\n }, r.prototype.subS = function(t) {\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) - t);\n return this;\n }, r.prototype.subM = function(t) {\n if (t = s.checkMatrix(t), this.rows !== t.rows || this.columns !== t.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) - t.get(n, i));\n return this;\n }, r.sub = function(t, n) {\n return new s(t).sub(n);\n }, r.prototype.subtract = r.prototype.sub, r.prototype.subtractS = r.prototype.subS, r.prototype.subtractM = r.prototype.subM, r.subtract = r.sub, r.prototype.mul = function(t) {\n return typeof t == \"number\" ? this.mulS(t) : this.mulM(t);\n }, r.prototype.mulS = function(t) {\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) * t);\n return this;\n }, r.prototype.mulM = function(t) {\n if (t = s.checkMatrix(t), this.rows !== t.rows || this.columns !== t.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) * t.get(n, i));\n return this;\n }, r.mul = function(t, n) {\n return new s(t).mul(n);\n }, r.prototype.multiply = r.prototype.mul, r.prototype.multiplyS = r.prototype.mulS, r.prototype.multiplyM = r.prototype.mulM, r.multiply = r.mul, r.prototype.div = function(t) {\n return typeof t == \"number\" ? this.divS(t) : this.divM(t);\n }, r.prototype.divS = function(t) {\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) / t);\n return this;\n }, r.prototype.divM = function(t) {\n if (t = s.checkMatrix(t), this.rows !== t.rows || this.columns !== t.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) / t.get(n, i));\n return this;\n }, r.div = function(t, n) {\n return new s(t).div(n);\n }, r.prototype.divide = r.prototype.div, r.prototype.divideS = r.prototype.divS, r.prototype.divideM = r.prototype.divM, r.divide = r.div, r.prototype.mod = function(t) {\n return typeof t == \"number\" ? this.modS(t) : this.modM(t);\n }, r.prototype.modS = function(t) {\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) % t);\n return this;\n }, r.prototype.modM = function(t) {\n if (t = s.checkMatrix(t), this.rows !== t.rows || this.columns !== t.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) % t.get(n, i));\n return this;\n }, r.mod = function(t, n) {\n return new s(t).mod(n);\n }, r.prototype.modulus = r.prototype.mod, r.prototype.modulusS = r.prototype.modS, r.prototype.modulusM = r.prototype.modM, r.modulus = r.mod, r.prototype.and = function(t) {\n return typeof t == \"number\" ? this.andS(t) : this.andM(t);\n }, r.prototype.andS = function(t) {\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) & t);\n return this;\n }, r.prototype.andM = function(t) {\n if (t = s.checkMatrix(t), this.rows !== t.rows || this.columns !== t.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) & t.get(n, i));\n return this;\n }, r.and = function(t, n) {\n return new s(t).and(n);\n }, r.prototype.or = function(t) {\n return typeof t == \"number\" ? this.orS(t) : this.orM(t);\n }, r.prototype.orS = function(t) {\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) | t);\n return this;\n }, r.prototype.orM = function(t) {\n if (t = s.checkMatrix(t), this.rows !== t.rows || this.columns !== t.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) | t.get(n, i));\n return this;\n }, r.or = function(t, n) {\n return new s(t).or(n);\n }, r.prototype.xor = function(t) {\n return typeof t == \"number\" ? this.xorS(t) : this.xorM(t);\n }, r.prototype.xorS = function(t) {\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) ^ t);\n return this;\n }, r.prototype.xorM = function(t) {\n if (t = s.checkMatrix(t), this.rows !== t.rows || this.columns !== t.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) ^ t.get(n, i));\n return this;\n }, r.xor = function(t, n) {\n return new s(t).xor(n);\n }, r.prototype.leftShift = function(t) {\n return typeof t == \"number\" ? this.leftShiftS(t) : this.leftShiftM(t);\n }, r.prototype.leftShiftS = function(t) {\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) << t);\n return this;\n }, r.prototype.leftShiftM = function(t) {\n if (t = s.checkMatrix(t), this.rows !== t.rows || this.columns !== t.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) << t.get(n, i));\n return this;\n }, r.leftShift = function(t, n) {\n return new s(t).leftShift(n);\n }, r.prototype.signPropagatingRightShift = function(t) {\n return typeof t == \"number\" ? this.signPropagatingRightShiftS(t) : this.signPropagatingRightShiftM(t);\n }, r.prototype.signPropagatingRightShiftS = function(t) {\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) >> t);\n return this;\n }, r.prototype.signPropagatingRightShiftM = function(t) {\n if (t = s.checkMatrix(t), this.rows !== t.rows || this.columns !== t.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) >> t.get(n, i));\n return this;\n }, r.signPropagatingRightShift = function(t, n) {\n return new s(t).signPropagatingRightShift(n);\n }, r.prototype.rightShift = function(t) {\n return typeof t == \"number\" ? this.rightShiftS(t) : this.rightShiftM(t);\n }, r.prototype.rightShiftS = function(t) {\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) >>> t);\n return this;\n }, r.prototype.rightShiftM = function(t) {\n if (t = s.checkMatrix(t), this.rows !== t.rows || this.columns !== t.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) >>> t.get(n, i));\n return this;\n }, r.rightShift = function(t, n) {\n return new s(t).rightShift(n);\n }, r.prototype.zeroFillRightShift = r.prototype.rightShift, r.prototype.zeroFillRightShiftS = r.prototype.rightShiftS, r.prototype.zeroFillRightShiftM = r.prototype.rightShiftM, r.zeroFillRightShift = r.rightShift, r.prototype.not = function() {\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.set(t, n, ~this.get(t, n));\n return this;\n }, r.not = function(t) {\n return new s(t).not();\n }, r.prototype.abs = function() {\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.set(t, n, Math.abs(this.get(t, n)));\n return this;\n }, r.abs = function(t) {\n return new s(t).abs();\n }, r.prototype.acos = function() {\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.set(t, n, Math.acos(this.get(t, n)));\n return this;\n }, r.acos = function(t) {\n return new s(t).acos();\n }, r.prototype.acosh = function() {\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.set(t, n, Math.acosh(this.get(t, n)));\n return this;\n }, r.acosh = function(t) {\n return new s(t).acosh();\n }, r.prototype.asin = function() {\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.set(t, n, Math.asin(this.get(t, n)));\n return this;\n }, r.asin = function(t) {\n return new s(t).asin();\n }, r.prototype.asinh = function() {\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.set(t, n, Math.asinh(this.get(t, n)));\n return this;\n }, r.asinh = function(t) {\n return new s(t).asinh();\n }, r.prototype.atan = function() {\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.set(t, n, Math.atan(this.get(t, n)));\n return this;\n }, r.atan = function(t) {\n return new s(t).atan();\n }, r.prototype.atanh = function() {\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.set(t, n, Math.atanh(this.get(t, n)));\n return this;\n }, r.atanh = function(t) {\n return new s(t).atanh();\n }, r.prototype.cbrt = function() {\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.set(t, n, Math.cbrt(this.get(t, n)));\n return this;\n }, r.cbrt = function(t) {\n return new s(t).cbrt();\n }, r.prototype.ceil = function() {\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.set(t, n, Math.ceil(this.get(t, n)));\n return this;\n }, r.ceil = function(t) {\n return new s(t).ceil();\n }, r.prototype.clz32 = function() {\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.set(t, n, Math.clz32(this.get(t, n)));\n return this;\n }, r.clz32 = function(t) {\n return new s(t).clz32();\n }, r.prototype.cos = function() {\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.set(t, n, Math.cos(this.get(t, n)));\n return this;\n }, r.cos = function(t) {\n return new s(t).cos();\n }, r.prototype.cosh = function() {\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.set(t, n, Math.cosh(this.get(t, n)));\n return this;\n }, r.cosh = function(t) {\n return new s(t).cosh();\n }, r.prototype.exp = function() {\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.set(t, n, Math.exp(this.get(t, n)));\n return this;\n }, r.exp = function(t) {\n return new s(t).exp();\n }, r.prototype.expm1 = function() {\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.set(t, n, Math.expm1(this.get(t, n)));\n return this;\n }, r.expm1 = function(t) {\n return new s(t).expm1();\n }, r.prototype.floor = function() {\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.set(t, n, Math.floor(this.get(t, n)));\n return this;\n }, r.floor = function(t) {\n return new s(t).floor();\n }, r.prototype.fround = function() {\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.set(t, n, Math.fround(this.get(t, n)));\n return this;\n }, r.fround = function(t) {\n return new s(t).fround();\n }, r.prototype.log = function() {\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.set(t, n, Math.log(this.get(t, n)));\n return this;\n }, r.log = function(t) {\n return new s(t).log();\n }, r.prototype.log1p = function() {\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.set(t, n, Math.log1p(this.get(t, n)));\n return this;\n }, r.log1p = function(t) {\n return new s(t).log1p();\n }, r.prototype.log10 = function() {\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.set(t, n, Math.log10(this.get(t, n)));\n return this;\n }, r.log10 = function(t) {\n return new s(t).log10();\n }, r.prototype.log2 = function() {\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.set(t, n, Math.log2(this.get(t, n)));\n return this;\n }, r.log2 = function(t) {\n return new s(t).log2();\n }, r.prototype.round = function() {\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.set(t, n, Math.round(this.get(t, n)));\n return this;\n }, r.round = function(t) {\n return new s(t).round();\n }, r.prototype.sign = function() {\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.set(t, n, Math.sign(this.get(t, n)));\n return this;\n }, r.sign = function(t) {\n return new s(t).sign();\n }, r.prototype.sin = function() {\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.set(t, n, Math.sin(this.get(t, n)));\n return this;\n }, r.sin = function(t) {\n return new s(t).sin();\n }, r.prototype.sinh = function() {\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.set(t, n, Math.sinh(this.get(t, n)));\n return this;\n }, r.sinh = function(t) {\n return new s(t).sinh();\n }, r.prototype.sqrt = function() {\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.set(t, n, Math.sqrt(this.get(t, n)));\n return this;\n }, r.sqrt = function(t) {\n return new s(t).sqrt();\n }, r.prototype.tan = function() {\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.set(t, n, Math.tan(this.get(t, n)));\n return this;\n }, r.tan = function(t) {\n return new s(t).tan();\n }, r.prototype.tanh = function() {\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.set(t, n, Math.tanh(this.get(t, n)));\n return this;\n }, r.tanh = function(t) {\n return new s(t).tanh();\n }, r.prototype.trunc = function() {\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.set(t, n, Math.trunc(this.get(t, n)));\n return this;\n }, r.trunc = function(t) {\n return new s(t).trunc();\n }, r.pow = function(t, n) {\n return new s(t).pow(n);\n }, r.prototype.pow = function(t) {\n return typeof t == \"number\" ? this.powS(t) : this.powM(t);\n }, r.prototype.powS = function(t) {\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) ** t);\n return this;\n }, r.prototype.powM = function(t) {\n if (t = s.checkMatrix(t), this.rows !== t.rows || this.columns !== t.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) ** t.get(n, i));\n return this;\n };\n}\nfunction nt(r, s, e) {\n let t = e ? r.rows : r.rows - 1;\n if (s < 0 || s > t)\n throw new RangeError(\"Row index out of range\");\n}\nfunction it(r, s, e) {\n let t = e ? r.columns : r.columns - 1;\n if (s < 0 || s > t)\n throw new RangeError(\"Column index out of range\");\n}\nfunction Pt(r, s) {\n if (s.to1DArray && (s = s.to1DArray()), s.length !== r.columns)\n throw new RangeError(\n \"vector size must be the same as the number of columns\"\n );\n return s;\n}\nfunction bt(r, s) {\n if (s.to1DArray && (s = s.to1DArray()), s.length !== r.rows)\n throw new RangeError(\"vector size must be the same as the number of rows\");\n return s;\n}\nfunction ge(r, s) {\n if (!tt.isAnyArray(s))\n throw new TypeError(\"row indices must be an array\");\n for (let e = 0; e < s.length; e++)\n if (s[e] < 0 || s[e] >= r.rows)\n throw new RangeError(\"row indices are out of range\");\n}\nfunction we(r, s) {\n if (!tt.isAnyArray(s))\n throw new TypeError(\"column indices must be an array\");\n for (let e = 0; e < s.length; e++)\n if (s[e] < 0 || s[e] >= r.columns)\n throw new RangeError(\"column indices are out of range\");\n}\nfunction ae(r, s, e, t, n) {\n if (arguments.length !== 5)\n throw new RangeError(\"expected 4 arguments\");\n if (Ut(\"startRow\", s), Ut(\"endRow\", e), Ut(\"startColumn\", t), Ut(\"endColumn\", n), s > e || t > n || s < 0 || s >= r.rows || e < 0 || e >= r.rows || t < 0 || t >= r.columns || n < 0 || n >= r.columns)\n throw new RangeError(\"Submatrix indices are out of range\");\n}\nfunction Kt(r, s = 0) {\n let e = [];\n for (let t = 0; t < r; t++)\n e.push(s);\n return e;\n}\nfunction Ut(r, s) {\n if (typeof s != \"number\")\n throw new TypeError(`${r} must be a number`);\n}\nfunction yt(r) {\n if (r.isEmpty())\n throw new Error(\"Empty matrix has no elements to index\");\n}\nfunction fs(r) {\n let s = Kt(r.rows);\n for (let e = 0; e < r.rows; ++e)\n for (let t = 0; t < r.columns; ++t)\n s[e] += r.get(e, t);\n return s;\n}\nfunction ms(r) {\n let s = Kt(r.columns);\n for (let e = 0; e < r.rows; ++e)\n for (let t = 0; t < r.columns; ++t)\n s[t] += r.get(e, t);\n return s;\n}\nfunction gs(r) {\n let s = 0;\n for (let e = 0; e < r.rows; e++)\n for (let t = 0; t < r.columns; t++)\n s += r.get(e, t);\n return s;\n}\nfunction ws(r) {\n let s = Kt(r.rows, 1);\n for (let e = 0; e < r.rows; ++e)\n for (let t = 0; t < r.columns; ++t)\n s[e] *= r.get(e, t);\n return s;\n}\nfunction ps(r) {\n let s = Kt(r.columns, 1);\n for (let e = 0; e < r.rows; ++e)\n for (let t = 0; t < r.columns; ++t)\n s[t] *= r.get(e, t);\n return s;\n}\nfunction ds(r) {\n let s = 1;\n for (let e = 0; e < r.rows; e++)\n for (let t = 0; t < r.columns; t++)\n s *= r.get(e, t);\n return s;\n}\nfunction Ms(r, s, e) {\n const t = r.rows, n = r.columns, i = [];\n for (let o = 0; o < t; o++) {\n let l = 0, h = 0, a = 0;\n for (let u = 0; u < n; u++)\n a = r.get(o, u) - e[o], l += a, h += a * a;\n s ? i.push((h - l * l / n) / (n - 1)) : i.push((h - l * l / n) / n);\n }\n return i;\n}\nfunction ys(r, s, e) {\n const t = r.rows, n = r.columns, i = [];\n for (let o = 0; o < n; o++) {\n let l = 0, h = 0, a = 0;\n for (let u = 0; u < t; u++)\n a = r.get(u, o) - e[o], l += a, h += a * a;\n s ? i.push((h - l * l / t) / (t - 1)) : i.push((h - l * l / t) / t);\n }\n return i;\n}\nfunction Ps(r, s, e) {\n const t = r.rows, n = r.columns, i = t * n;\n let o = 0, l = 0, h = 0;\n for (let a = 0; a < t; a++)\n for (let u = 0; u < n; u++)\n h = r.get(a, u) - e, o += h, l += h * h;\n return s ? (l - o * o / i) / (i - 1) : (l - o * o / i) / i;\n}\nfunction bs(r, s) {\n for (let e = 0; e < r.rows; e++)\n for (let t = 0; t < r.columns; t++)\n r.set(e, t, r.get(e, t) - s[e]);\n}\nfunction Es(r, s) {\n for (let e = 0; e < r.rows; e++)\n for (let t = 0; t < r.columns; t++)\n r.set(e, t, r.get(e, t) - s[t]);\n}\nfunction _s(r, s) {\n for (let e = 0; e < r.rows; e++)\n for (let t = 0; t < r.columns; t++)\n r.set(e, t, r.get(e, t) - s);\n}\nfunction js(r) {\n const s = [];\n for (let e = 0; e < r.rows; e++) {\n let t = 0;\n for (let n = 0; n < r.columns; n++)\n t += r.get(e, n) ** 2 / (r.columns - 1);\n s.push(Math.sqrt(t));\n }\n return s;\n}\nfunction Ss(r, s) {\n for (let e = 0; e < r.rows; e++)\n for (let t = 0; t < r.columns; t++)\n r.set(e, t, r.get(e, t) / s[e]);\n}\nfunction ks(r) {\n const s = [];\n for (let e = 0; e < r.columns; e++) {\n let t = 0;\n for (let n = 0; n < r.rows; n++)\n t += r.get(n, e) ** 2 / (r.rows - 1);\n s.push(Math.sqrt(t));\n }\n return s;\n}\nfunction Rs(r, s) {\n for (let e = 0; e < r.rows; e++)\n for (let t = 0; t < r.columns; t++)\n r.set(e, t, r.get(e, t) / s[t]);\n}\nfunction vs(r) {\n const s = r.size - 1;\n let e = 0;\n for (let t = 0; t < r.columns; t++)\n for (let n = 0; n < r.rows; n++)\n e += r.get(n, t) ** 2 / s;\n return Math.sqrt(e);\n}\nfunction Ts(r, s) {\n for (let e = 0; e < r.rows; e++)\n for (let t = 0; t < r.columns; t++)\n r.set(e, t, r.get(e, t) / s);\n}\nclass V {\n static from1DArray(s, e, t) {\n if (s * e !== t.length)\n throw new RangeError(\"data length does not match given dimensions\");\n let i = new _(s, e);\n for (let o = 0; o < s; o++)\n for (let l = 0; l < e; l++)\n i.set(o, l, t[o * e + l]);\n return i;\n }\n static rowVector(s) {\n let e = new _(1, s.length);\n for (let t = 0; t < s.length; t++)\n e.set(0, t, s[t]);\n return e;\n }\n static columnVector(s) {\n let e = new _(s.length, 1);\n for (let t = 0; t < s.length; t++)\n e.set(t, 0, s[t]);\n return e;\n }\n static zeros(s, e) {\n return new _(s, e);\n }\n static ones(s, e) {\n return new _(s, e).fill(1);\n }\n static rand(s, e, t = {}) {\n if (typeof t != \"object\")\n throw new TypeError(\"options must be an object\");\n const { random: n = Math.random } = t;\n let i = new _(s, e);\n for (let o = 0; o < s; o++)\n for (let l = 0; l < e; l++)\n i.set(o, l, n());\n return i;\n }\n static randInt(s, e, t = {}) {\n if (typeof t != \"object\")\n throw new TypeError(\"options must be an object\");\n const { min: n = 0, max: i = 1e3, random: o = Math.random } = t;\n if (!Number.isInteger(n)) throw new TypeError(\"min must be an integer\");\n if (!Number.isInteger(i)) throw new TypeError(\"max must be an integer\");\n if (n >= i) throw new RangeError(\"min must be smaller than max\");\n let l = i - n, h = new _(s, e);\n for (let a = 0; a < s; a++)\n for (let u = 0; u < e; u++) {\n let c = n + Math.round(o() * l);\n h.set(a, u, c);\n }\n return h;\n }\n static eye(s, e, t) {\n e === void 0 && (e = s), t === void 0 && (t = 1);\n let n = Math.min(s, e), i = this.zeros(s, e);\n for (let o = 0; o < n; o++)\n i.set(o, o, t);\n return i;\n }\n static diag(s, e, t) {\n let n = s.length;\n e === void 0 && (e = n), t === void 0 && (t = e);\n let i = Math.min(n, e, t), o = this.zeros(e, t);\n for (let l = 0; l < i; l++)\n o.set(l, l, s[l]);\n return o;\n }\n static min(s, e) {\n s = this.checkMatrix(s), e = this.checkMatrix(e);\n let t = s.rows, n = s.columns, i = new _(t, n);\n for (let o = 0; o < t; o++)\n for (let l = 0; l < n; l++)\n i.set(o, l, Math.min(s.get(o, l), e.get(o, l)));\n return i;\n }\n static max(s, e) {\n s = this.checkMatrix(s), e = this.checkMatrix(e);\n let t = s.rows, n = s.columns, i = new this(t, n);\n for (let o = 0; o < t; o++)\n for (let l = 0; l < n; l++)\n i.set(o, l, Math.max(s.get(o, l), e.get(o, l)));\n return i;\n }\n static checkMatrix(s) {\n return V.isMatrix(s) ? s : new _(s);\n }\n static isMatrix(s) {\n return s != null && s.klass === \"Matrix\";\n }\n get size() {\n return this.rows * this.columns;\n }\n apply(s) {\n if (typeof s != \"function\")\n throw new TypeError(\"callback must be a function\");\n for (let e = 0; e < this.rows; e++)\n for (let t = 0; t < this.columns; t++)\n s.call(this, e, t);\n return this;\n }\n to1DArray() {\n let s = [];\n for (let e = 0; e < this.rows; e++)\n for (let t = 0; t < this.columns; t++)\n s.push(this.get(e, t));\n return s;\n }\n to2DArray() {\n let s = [];\n for (let e = 0; e < this.rows; e++) {\n s.push([]);\n for (let t = 0; t < this.columns; t++)\n s[e].push(this.get(e, t));\n }\n return s;\n }\n toJSON() {\n return this.to2DArray();\n }\n isRowVector() {\n return this.rows === 1;\n }\n isColumnVector() {\n return this.columns === 1;\n }\n isVector() {\n return this.rows === 1 || this.columns === 1;\n }\n isSquare() {\n return this.rows === this.columns;\n }\n isEmpty() {\n return this.rows === 0 || this.columns === 0;\n }\n isSymmetric() {\n if (this.isSquare()) {\n for (let s = 0; s < this.rows; s++)\n for (let e = 0; e <= s; e++)\n if (this.get(s, e) !== this.get(e, s))\n return !1;\n return !0;\n }\n return !1;\n }\n isDistance() {\n if (!this.isSymmetric()) return !1;\n for (let s = 0; s < this.rows; s++)\n if (this.get(s, s) !== 0) return !1;\n return !0;\n }\n isEchelonForm() {\n let s = 0, e = 0, t = -1, n = !0, i = !1;\n for (; s < this.rows && n; ) {\n for (e = 0, i = !1; e < this.columns && i === !1; )\n this.get(s, e) === 0 ? e++ : this.get(s, e) === 1 && e > t ? (i = !0, t = e) : (n = !1, i = !0);\n s++;\n }\n return n;\n }\n isReducedEchelonForm() {\n let s = 0, e = 0, t = -1, n = !0, i = !1;\n for (; s < this.rows && n; ) {\n for (e = 0, i = !1; e < this.columns && i === !1; )\n this.get(s, e) === 0 ? e++ : this.get(s, e) === 1 && e > t ? (i = !0, t = e) : (n = !1, i = !0);\n for (let o = e + 1; o < this.rows; o++)\n this.get(s, o) !== 0 && (n = !1);\n s++;\n }\n return n;\n }\n echelonForm() {\n let s = this.clone(), e = 0, t = 0;\n for (; e < s.rows && t < s.columns; ) {\n let n = e;\n for (let i = e; i < s.rows; i++)\n s.get(i, t) > s.get(n, t) && (n = i);\n if (s.get(n, t) === 0)\n t++;\n else {\n s.swapRows(e, n);\n let i = s.get(e, t);\n for (let o = t; o < s.columns; o++)\n s.set(e, o, s.get(e, o) / i);\n for (let o = e + 1; o < s.rows; o++) {\n let l = s.get(o, t) / s.get(e, t);\n s.set(o, t, 0);\n for (let h = t + 1; h < s.columns; h++)\n s.set(o, h, s.get(o, h) - s.get(e, h) * l);\n }\n e++, t++;\n }\n }\n return s;\n }\n reducedEchelonForm() {\n let s = this.echelonForm(), e = s.columns, t = s.rows, n = t - 1;\n for (; n >= 0; )\n if (s.maxRow(n) === 0)\n n--;\n else {\n let i = 0, o = !1;\n for (; i < t && o === !1; )\n s.get(n, i) === 1 ? o = !0 : i++;\n for (let l = 0; l < n; l++) {\n let h = s.get(l, i);\n for (let a = i; a < e; a++) {\n let u = s.get(l, a) - h * s.get(n, a);\n s.set(l, a, u);\n }\n }\n n--;\n }\n return s;\n }\n set() {\n throw new Error(\"set method is unimplemented\");\n }\n get() {\n throw new Error(\"get method is unimplemented\");\n }\n repeat(s = {}) {\n if (typeof s != \"object\")\n throw new TypeError(\"options must be an object\");\n const { rows: e = 1, columns: t = 1 } = s;\n if (!Number.isInteger(e) || e <= 0)\n throw new TypeError(\"rows must be a positive integer\");\n if (!Number.isInteger(t) || t <= 0)\n throw new TypeError(\"columns must be a positive integer\");\n let n = new _(this.rows * e, this.columns * t);\n for (let i = 0; i < e; i++)\n for (let o = 0; o < t; o++)\n n.setSubMatrix(this, this.rows * i, this.columns * o);\n return n;\n }\n fill(s) {\n for (let e = 0; e < this.rows; e++)\n for (let t = 0; t < this.columns; t++)\n this.set(e, t, s);\n return this;\n }\n neg() {\n return this.mulS(-1);\n }\n getRow(s) {\n nt(this, s);\n let e = [];\n for (let t = 0; t < this.columns; t++)\n e.push(this.get(s, t));\n return e;\n }\n getRowVector(s) {\n return _.rowVector(this.getRow(s));\n }\n setRow(s, e) {\n nt(this, s), e = Pt(this, e);\n for (let t = 0; t < this.columns; t++)\n this.set(s, t, e[t]);\n return this;\n }\n swapRows(s, e) {\n nt(this, s), nt(this, e);\n for (let t = 0; t < this.columns; t++) {\n let n = this.get(s, t);\n this.set(s, t, this.get(e, t)), this.set(e, t, n);\n }\n return this;\n }\n getColumn(s) {\n it(this, s);\n let e = [];\n for (let t = 0; t < this.rows; t++)\n e.push(this.get(t, s));\n return e;\n }\n getColumnVector(s) {\n return _.columnVector(this.getColumn(s));\n }\n setColumn(s, e) {\n it(this, s), e = bt(this, e);\n for (let t = 0; t < this.rows; t++)\n this.set(t, s, e[t]);\n return this;\n }\n swapColumns(s, e) {\n it(this, s), it(this, e);\n for (let t = 0; t < this.rows; t++) {\n let n = this.get(t, s);\n this.set(t, s, this.get(t, e)), this.set(t, e, n);\n }\n return this;\n }\n addRowVector(s) {\n s = Pt(this, s);\n for (let e = 0; e < this.rows; e++)\n for (let t = 0; t < this.columns; t++)\n this.set(e, t, this.get(e, t) + s[t]);\n return this;\n }\n subRowVector(s) {\n s = Pt(this, s);\n for (let e = 0; e < this.rows; e++)\n for (let t = 0; t < this.columns; t++)\n this.set(e, t, this.get(e, t) - s[t]);\n return this;\n }\n mulRowVector(s) {\n s = Pt(this, s);\n for (let e = 0; e < this.rows; e++)\n for (let t = 0; t < this.columns; t++)\n this.set(e, t, this.get(e, t) * s[t]);\n return this;\n }\n divRowVector(s) {\n s = Pt(this, s);\n for (let e = 0; e < this.rows; e++)\n for (let t = 0; t < this.columns; t++)\n this.set(e, t, this.get(e, t) / s[t]);\n return this;\n }\n addColumnVector(s) {\n s = bt(this, s);\n for (let e = 0; e < this.rows; e++)\n for (let t = 0; t < this.columns; t++)\n this.set(e, t, this.get(e, t) + s[e]);\n return this;\n }\n subColumnVector(s) {\n s = bt(this, s);\n for (let e = 0; e < this.rows; e++)\n for (let t = 0; t < this.columns; t++)\n this.set(e, t, this.get(e, t) - s[e]);\n return this;\n }\n mulColumnVector(s) {\n s = bt(this, s);\n for (let e = 0; e < this.rows; e++)\n for (let t = 0; t < this.columns; t++)\n this.set(e, t, this.get(e, t) * s[e]);\n return this;\n }\n divColumnVector(s) {\n s = bt(this, s);\n for (let e = 0; e < this.rows; e++)\n for (let t = 0; t < this.columns; t++)\n this.set(e, t, this.get(e, t) / s[e]);\n return this;\n }\n mulRow(s, e) {\n nt(this, s);\n for (let t = 0; t < this.columns; t++)\n this.set(s, t, this.get(s, t) * e);\n return this;\n }\n mulColumn(s, e) {\n it(this, s);\n for (let t = 0; t < this.rows; t++)\n this.set(t, s, this.get(t, s) * e);\n return this;\n }\n max(s) {\n if (this.isEmpty())\n return NaN;\n switch (s) {\n case \"row\": {\n const e = new Array(this.rows).fill(Number.NEGATIVE_INFINITY);\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.get(t, n) > e[t] && (e[t] = this.get(t, n));\n return e;\n }\n case \"column\": {\n const e = new Array(this.columns).fill(Number.NEGATIVE_INFINITY);\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.get(t, n) > e[n] && (e[n] = this.get(t, n));\n return e;\n }\n case void 0: {\n let e = this.get(0, 0);\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.get(t, n) > e && (e = this.get(t, n));\n return e;\n }\n default:\n throw new Error(`invalid option: ${s}`);\n }\n }\n maxIndex() {\n yt(this);\n let s = this.get(0, 0), e = [0, 0];\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.get(t, n) > s && (s = this.get(t, n), e[0] = t, e[1] = n);\n return e;\n }\n min(s) {\n if (this.isEmpty())\n return NaN;\n switch (s) {\n case \"row\": {\n const e = new Array(this.rows).fill(Number.POSITIVE_INFINITY);\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.get(t, n) < e[t] && (e[t] = this.get(t, n));\n return e;\n }\n case \"column\": {\n const e = new Array(this.columns).fill(Number.POSITIVE_INFINITY);\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.get(t, n) < e[n] && (e[n] = this.get(t, n));\n return e;\n }\n case void 0: {\n let e = this.get(0, 0);\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.get(t, n) < e && (e = this.get(t, n));\n return e;\n }\n default:\n throw new Error(`invalid option: ${s}`);\n }\n }\n minIndex() {\n yt(this);\n let s = this.get(0, 0), e = [0, 0];\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.get(t, n) < s && (s = this.get(t, n), e[0] = t, e[1] = n);\n return e;\n }\n maxRow(s) {\n if (nt(this, s), this.isEmpty())\n return NaN;\n let e = this.get(s, 0);\n for (let t = 1; t < this.columns; t++)\n this.get(s, t) > e && (e = this.get(s, t));\n return e;\n }\n maxRowIndex(s) {\n nt(this, s), yt(this);\n let e = this.get(s, 0), t = [s, 0];\n for (let n = 1; n < this.columns; n++)\n this.get(s, n) > e && (e = this.get(s, n), t[1] = n);\n return t;\n }\n minRow(s) {\n if (nt(this, s), this.isEmpty())\n return NaN;\n let e = this.get(s, 0);\n for (let t = 1; t < this.columns; t++)\n this.get(s, t) < e && (e = this.get(s, t));\n return e;\n }\n minRowIndex(s) {\n nt(this, s), yt(this);\n let e = this.get(s, 0), t = [s, 0];\n for (let n = 1; n < this.columns; n++)\n this.get(s, n) < e && (e = this.get(s, n), t[1] = n);\n return t;\n }\n maxColumn(s) {\n if (it(this, s), this.isEmpty())\n return NaN;\n let e = this.get(0, s);\n for (let t = 1; t < this.rows; t++)\n this.get(t, s) > e && (e = this.get(t, s));\n return e;\n }\n maxColumnIndex(s) {\n it(this, s), yt(this);\n let e = this.get(0, s), t = [0, s];\n for (let n = 1; n < this.rows; n++)\n this.get(n, s) > e && (e = this.get(n, s), t[0] = n);\n return t;\n }\n minColumn(s) {\n if (it(this, s), this.isEmpty())\n return NaN;\n let e = this.get(0, s);\n for (let t = 1; t < this.rows; t++)\n this.get(t, s) < e && (e = this.get(t, s));\n return e;\n }\n minColumnIndex(s) {\n it(this, s), yt(this);\n let e = this.get(0, s), t = [0, s];\n for (let n = 1; n < this.rows; n++)\n this.get(n, s) < e && (e = this.get(n, s), t[0] = n);\n return t;\n }\n diag() {\n let s = Math.min(this.rows, this.columns), e = [];\n for (let t = 0; t < s; t++)\n e.push(this.get(t, t));\n return e;\n }\n norm(s = \"frobenius\") {\n switch (s) {\n case \"max\":\n return this.max();\n case \"frobenius\":\n return Math.sqrt(this.dot(this));\n default:\n throw new RangeError(`unknown norm type: ${s}`);\n }\n }\n cumulativeSum() {\n let s = 0;\n for (let e = 0; e < this.rows; e++)\n for (let t = 0; t < this.columns; t++)\n s += this.get(e, t), this.set(e, t, s);\n return this;\n }\n dot(s) {\n V.isMatrix(s) && (s = s.to1DArray());\n let e = this.to1DArray();\n if (e.length !== s.length)\n throw new RangeError(\"vectors do not have the same size\");\n let t = 0;\n for (let n = 0; n < e.length; n++)\n t += e[n] * s[n];\n return t;\n }\n mmul(s) {\n s = _.checkMatrix(s);\n let e = this.rows, t = this.columns, n = s.columns, i = new _(e, n), o = new Float64Array(t);\n for (let l = 0; l < n; l++) {\n for (let h = 0; h < t; h++)\n o[h] = s.get(h, l);\n for (let h = 0; h < e; h++) {\n let a = 0;\n for (let u = 0; u < t; u++)\n a += this.get(h, u) * o[u];\n i.set(h, l, a);\n }\n }\n return i;\n }\n mpow(s) {\n if (!this.isSquare())\n throw new RangeError(\"Matrix must be square\");\n if (!Number.isInteger(s) || s < 0)\n throw new RangeError(\"Exponent must be a non-negative integer\");\n let e = _.eye(this.rows), t = this;\n for (let n = s; n > 1; n /= 2)\n n & 1 && (e = e.mmul(t)), t = t.mmul(t);\n return e;\n }\n strassen2x2(s) {\n s = _.checkMatrix(s);\n let e = new _(2, 2);\n const t = this.get(0, 0), n = s.get(0, 0), i = this.get(0, 1), o = s.get(0, 1), l = this.get(1, 0), h = s.get(1, 0), a = this.get(1, 1), u = s.get(1, 1), c = (t + a) * (n + u), g = (l + a) * n, d = t * (o - u), w = a * (h - n), p = (t + i) * u, P = (l - t) * (n + o), f = (i - a) * (h + u), M = c + w - p + f, E = d + p, R = g + w, v = c - g + d + P;\n return e.set(0, 0, M), e.set(0, 1, E), e.set(1, 0, R), e.set(1, 1, v), e;\n }\n strassen3x3(s) {\n s = _.checkMatrix(s);\n let e = new _(3, 3);\n const t = this.get(0, 0), n = this.get(0, 1), i = this.get(0, 2), o = this.get(1, 0), l = this.get(1, 1), h = this.get(1, 2), a = this.get(2, 0), u = this.get(2, 1), c = this.get(2, 2), g = s.get(0, 0), d = s.get(0, 1), w = s.get(0, 2), p = s.get(1, 0), P = s.get(1, 1), f = s.get(1, 2), M = s.get(2, 0), E = s.get(2, 1), R = s.get(2, 2), v = (t + n + i - o - l - u - c) * P, L = (t - o) * (-d + P), S = l * (-g + d + p - P - f - M + R), k = (-t + o + l) * (g - d + P), D = (o + l) * (-g + d), m = t * g, b = (-t + a + u) * (g - w + f), j = (-t + a) * (w - f), y = (a + u) * (-g + w), C = (t + n + i - l - h - a - u) * f, F = u * (-g + w + p - P - f - M + E), I = (-i + u + c) * (P + M - E), O = (i - c) * (P - E), x = i * M, N = (u + c) * (-M + E), A = (-i + l + h) * (f + M - R), B = (i - h) * (f - R), U = (l + h) * (-M + R), T = n * p, z = h * E, G = o * w, Q = a * d, Y = c * R, se = m + x + T, ne = v + k + D + m + I + x + N, ie = m + b + y + C + x + A + U, re = L + S + k + m + x + A + B, xt = L + k + D + m + z, At = x + A + B + U + G, Vt = m + b + j + F + I + O + x, Nt = I + O + x + N + Q, $t = m + b + j + y + Y;\n return e.set(0, 0, se), e.set(0, 1, ne), e.set(0, 2, ie), e.set(1, 0, re), e.set(1, 1, xt), e.set(1, 2, At), e.set(2, 0, Vt), e.set(2, 1, Nt), e.set(2, 2, $t), e;\n }\n mmulStrassen(s) {\n s = _.checkMatrix(s);\n let e = this.clone(), t = e.rows, n = e.columns, i = s.rows, o = s.columns;\n n !== i && console.warn(\n `Multiplying ${t} x ${n} and ${i} x ${o} matrix: dimensions do not match.`\n );\n function l(c, g, d) {\n let w = c.rows, p = c.columns;\n if (w === g && p === d)\n return c;\n {\n let P = V.zeros(g, d);\n return P = P.setSubMatrix(c, 0, 0), P;\n }\n }\n let h = Math.max(t, i), a = Math.max(n, o);\n e = l(e, h, a), s = l(s, h, a);\n function u(c, g, d, w) {\n if (d <= 512 || w <= 512)\n return c.mmul(g);\n d % 2 === 1 && w % 2 === 1 ? (c = l(c, d + 1, w + 1), g = l(g, d + 1, w + 1)) : d % 2 === 1 ? (c = l(c, d + 1, w), g = l(g, d + 1, w)) : w % 2 === 1 && (c = l(c, d, w + 1), g = l(g, d, w + 1));\n let p = parseInt(c.rows / 2, 10), P = parseInt(c.columns / 2, 10), f = c.subMatrix(0, p - 1, 0, P - 1), M = g.subMatrix(0, p - 1, 0, P - 1), E = c.subMatrix(0, p - 1, P, c.columns - 1), R = g.subMatrix(0, p - 1, P, g.columns - 1), v = c.subMatrix(p, c.rows - 1, 0, P - 1), L = g.subMatrix(p, g.rows - 1, 0, P - 1), S = c.subMatrix(p, c.rows - 1, P, c.columns - 1), k = g.subMatrix(p, g.rows - 1, P, g.columns - 1), D = u(\n V.add(f, S),\n V.add(M, k),\n p,\n P\n ), m = u(V.add(v, S), M, p, P), b = u(f, V.sub(R, k), p, P), j = u(S, V.sub(L, M), p, P), y = u(V.add(f, E), k, p, P), C = u(\n V.sub(v, f),\n V.add(M, R),\n p,\n P\n ), F = u(\n V.sub(E, S),\n V.add(L, k),\n p,\n P\n ), I = V.add(D, j);\n I.sub(y), I.add(F);\n let O = V.add(b, y), x = V.add(m, j), N = V.sub(D, m);\n N.add(b), N.add(C);\n let A = V.zeros(2 * I.rows, 2 * I.columns);\n return A = A.setSubMatrix(I, 0, 0), A = A.setSubMatrix(O, I.rows, 0), A = A.setSubMatrix(x, 0, I.columns), A = A.setSubMatrix(N, I.rows, I.columns), A.subMatrix(0, d - 1, 0, w - 1);\n }\n return u(e, s, h, a);\n }\n scaleRows(s = {}) {\n if (typeof s != \"object\")\n throw new TypeError(\"options must be an object\");\n const { min: e = 0, max: t = 1 } = s;\n if (!Number.isFinite(e)) throw new TypeError(\"min must be a number\");\n if (!Number.isFinite(t)) throw new TypeError(\"max must be a number\");\n if (e >= t) throw new RangeError(\"min must be smaller than max\");\n let n = new _(this.rows, this.columns);\n for (let i = 0; i < this.rows; i++) {\n const o = this.getRow(i);\n o.length > 0 && je(o, { min: e, max: t, output: o }), n.setRow(i, o);\n }\n return n;\n }\n scaleColumns(s = {}) {\n if (typeof s != \"object\")\n throw new TypeError(\"options must be an object\");\n const { min: e = 0, max: t = 1 } = s;\n if (!Number.isFinite(e)) throw new TypeError(\"min must be a number\");\n if (!Number.isFinite(t)) throw new TypeError(\"max must be a number\");\n if (e >= t) throw new RangeError(\"min must be smaller than max\");\n let n = new _(this.rows, this.columns);\n for (let i = 0; i < this.columns; i++) {\n const o = this.getColumn(i);\n o.length && je(o, {\n min: e,\n max: t,\n output: o\n }), n.setColumn(i, o);\n }\n return n;\n }\n flipRows() {\n const s = Math.ceil(this.columns / 2);\n for (let e = 0; e < this.rows; e++)\n for (let t = 0; t < s; t++) {\n let n = this.get(e, t), i = this.get(e, this.columns - 1 - t);\n this.set(e, t, i), this.set(e, this.columns - 1 - t, n);\n }\n return this;\n }\n flipColumns() {\n const s = Math.ceil(this.rows / 2);\n for (let e = 0; e < this.columns; e++)\n for (let t = 0; t < s; t++) {\n let n = this.get(t, e), i = this.get(this.rows - 1 - t, e);\n this.set(t, e, i), this.set(this.rows - 1 - t, e, n);\n }\n return this;\n }\n kroneckerProduct(s) {\n s = _.checkMatrix(s);\n let e = this.rows, t = this.columns, n = s.rows, i = s.columns, o = new _(e * n, t * i);\n for (let l = 0; l < e; l++)\n for (let h = 0; h < t; h++)\n for (let a = 0; a < n; a++)\n for (let u = 0; u < i; u++)\n o.set(n * l + a, i * h + u, this.get(l, h) * s.get(a, u));\n return o;\n }\n kroneckerSum(s) {\n if (s = _.checkMatrix(s), !this.isSquare() || !s.isSquare())\n throw new Error(\"Kronecker Sum needs two Square Matrices\");\n let e = this.rows, t = s.rows, n = this.kroneckerProduct(_.eye(t, t)), i = _.eye(e, e).kroneckerProduct(s);\n return n.add(i);\n }\n transpose() {\n let s = new _(this.columns, this.rows);\n for (let e = 0; e < this.rows; e++)\n for (let t = 0; t < this.columns; t++)\n s.set(t, e, this.get(e, t));\n return s;\n }\n sortRows(s = ke) {\n for (let e = 0; e < this.rows; e++)\n this.setRow(e, this.getRow(e).sort(s));\n return this;\n }\n sortColumns(s = ke) {\n for (let e = 0; e < this.columns; e++)\n this.setColumn(e, this.getColumn(e).sort(s));\n return this;\n }\n subMatrix(s, e, t, n) {\n ae(this, s, e, t, n);\n let i = new _(\n e - s + 1,\n n - t + 1\n );\n for (let o = s; o <= e; o++)\n for (let l = t; l <= n; l++)\n i.set(o - s, l - t, this.get(o, l));\n return i;\n }\n subMatrixRow(s, e, t) {\n if (e === void 0 && (e = 0), t === void 0 && (t = this.columns - 1), e > t || e < 0 || e >= this.columns || t < 0 || t >= this.columns)\n throw new RangeError(\"Argument out of range\");\n let n = new _(s.length, t - e + 1);\n for (let i = 0; i < s.length; i++)\n for (let o = e; o <= t; o++) {\n if (s[i] < 0 || s[i] >= this.rows)\n throw new RangeError(`Row index out of range: ${s[i]}`);\n n.set(i, o - e, this.get(s[i], o));\n }\n return n;\n }\n subMatrixColumn(s, e, t) {\n if (e === void 0 && (e = 0), t === void 0 && (t = this.rows - 1), e > t || e < 0 || e >= this.rows || t < 0 || t >= this.rows)\n throw new RangeError(\"Argument out of range\");\n let n = new _(t - e + 1, s.length);\n for (let i = 0; i < s.length; i++)\n for (let o = e; o <= t; o++) {\n if (s[i] < 0 || s[i] >= this.columns)\n throw new RangeError(`Column index out of range: ${s[i]}`);\n n.set(o - e, i, this.get(o, s[i]));\n }\n return n;\n }\n setSubMatrix(s, e, t) {\n if (s = _.checkMatrix(s), s.isEmpty())\n return this;\n let n = e + s.rows - 1, i = t + s.columns - 1;\n ae(this, e, n, t, i);\n for (let o = 0; o < s.rows; o++)\n for (let l = 0; l < s.columns; l++)\n this.set(e + o, t + l, s.get(o, l));\n return this;\n }\n selection(s, e) {\n ge(this, s), we(this, e);\n let t = new _(s.length, e.length);\n for (let n = 0; n < s.length; n++) {\n let i = s[n];\n for (let o = 0; o < e.length; o++) {\n let l = e[o];\n t.set(n, o, this.get(i, l));\n }\n }\n return t;\n }\n trace() {\n let s = Math.min(this.rows, this.columns), e = 0;\n for (let t = 0; t < s; t++)\n e += this.get(t, t);\n return e;\n }\n clone() {\n return this.constructor.copy(this, new _(this.rows, this.columns));\n }\n /**\n * @template {AbstractMatrix} M\n * @param {AbstractMatrix} from\n * @param {M} to\n * @return {M}\n */\n static copy(s, e) {\n for (const [t, n, i] of s.entries())\n e.set(t, n, i);\n return e;\n }\n sum(s) {\n switch (s) {\n case \"row\":\n return fs(this);\n case \"column\":\n return ms(this);\n case void 0:\n return gs(this);\n default:\n throw new Error(`invalid option: ${s}`);\n }\n }\n product(s) {\n switch (s) {\n case \"row\":\n return ws(this);\n case \"column\":\n return ps(this);\n case void 0:\n return ds(this);\n default:\n throw new Error(`invalid option: ${s}`);\n }\n }\n mean(s) {\n const e = this.sum(s);\n switch (s) {\n case \"row\": {\n for (let t = 0; t < this.rows; t++)\n e[t] /= this.columns;\n return e;\n }\n case \"column\": {\n for (let t = 0; t < this.columns; t++)\n e[t] /= this.rows;\n return e;\n }\n case void 0:\n return e / this.size;\n default:\n throw new Error(`invalid option: ${s}`);\n }\n }\n variance(s, e = {}) {\n if (typeof s == \"object\" && (e = s, s = void 0), typeof e != \"object\")\n throw new TypeError(\"options must be an object\");\n const { unbiased: t = !0, mean: n = this.mean(s) } = e;\n if (typeof t != \"boolean\")\n throw new TypeError(\"unbiased must be a boolean\");\n switch (s) {\n case \"row\": {\n if (!tt.isAnyArray(n))\n throw new TypeError(\"mean must be an array\");\n return Ms(this, t, n);\n }\n case \"column\": {\n if (!tt.isAnyArray(n))\n throw new TypeError(\"mean must be an array\");\n return ys(this, t, n);\n }\n case void 0: {\n if (typeof n != \"number\")\n throw new TypeError(\"mean must be a number\");\n return Ps(this, t, n);\n }\n default:\n throw new Error(`invalid option: ${s}`);\n }\n }\n standardDeviation(s, e) {\n typeof s == \"object\" && (e = s, s = void 0);\n const t = this.variance(s, e);\n if (s === void 0)\n return Math.sqrt(t);\n for (let n = 0; n < t.length; n++)\n t[n] = Math.sqrt(t[n]);\n return t;\n }\n center(s, e = {}) {\n if (typeof s == \"object\" && (e = s, s = void 0), typeof e != \"object\")\n throw new TypeError(\"options must be an object\");\n const { center: t = this.mean(s) } = e;\n switch (s) {\n case \"row\": {\n if (!tt.isAnyArray(t))\n throw new TypeError(\"center must be an array\");\n return bs(this, t), this;\n }\n case \"column\": {\n if (!tt.isAnyArray(t))\n throw new TypeError(\"center must be an array\");\n return Es(this, t), this;\n }\n case void 0: {\n if (typeof t != \"number\")\n throw new TypeError(\"center must be a number\");\n return _s(this, t), this;\n }\n default:\n throw new Error(`invalid option: ${s}`);\n }\n }\n scale(s, e = {}) {\n if (typeof s == \"object\" && (e = s, s = void 0), typeof e != \"object\")\n throw new TypeError(\"options must be an object\");\n let t = e.scale;\n switch (s) {\n case \"row\": {\n if (t === void 0)\n t = js(this);\n else if (!tt.isAnyArray(t))\n throw new TypeError(\"scale must be an array\");\n return Ss(this, t), this;\n }\n case \"column\": {\n if (t === void 0)\n t = ks(this);\n else if (!tt.isAnyArray(t))\n throw new TypeError(\"scale must be an array\");\n return Rs(this, t), this;\n }\n case void 0: {\n if (t === void 0)\n t = vs(this);\n else if (typeof t != \"number\")\n throw new TypeError(\"scale must be a number\");\n return Ts(this, t), this;\n }\n default:\n throw new Error(`invalid option: ${s}`);\n }\n }\n toString(s) {\n return xe(this, s);\n }\n [Symbol.iterator]() {\n return this.entries();\n }\n /**\n * iterator from left to right, from top to bottom\n * yield [row, column, value]\n * @returns {Generator<[number, number, number], void, void>}\n */\n *entries() {\n for (let s = 0; s < this.rows; s++)\n for (let e = 0; e < this.columns; e++)\n yield [s, e, this.get(s, e)];\n }\n /**\n * iterator from left to right, from top to bottom\n * yield value\n * @returns {Generator<number, void, void>}\n */\n *values() {\n for (let s = 0; s < this.rows; s++)\n for (let e = 0; e < this.columns; e++)\n yield this.get(s, e);\n }\n}\nV.prototype.klass = \"Matrix\";\ntypeof Symbol < \"u\" && (V.prototype[Symbol.for(\"nodejs.util.inspect.custom\")] = hs);\nfunction ke(r, s) {\n return r - s;\n}\nfunction Is(r) {\n return r.every((s) => typeof s == \"number\");\n}\nV.random = V.rand;\nV.randomInt = V.randInt;\nV.diagonal = V.diag;\nV.prototype.diagonal = V.prototype.diag;\nV.identity = V.eye;\nV.prototype.negate = V.prototype.neg;\nV.prototype.tensorProduct = V.prototype.kroneckerProduct;\nvar qt, ue, dt;\nlet _ = (dt = class extends V {\n constructor(e, t) {\n super();\n le(this, qt);\n /**\n * @type {Float64Array[]}\n */\n q(this, \"data\");\n if (dt.isMatrix(e))\n he(this, qt, ue).call(this, e.rows, e.columns), dt.copy(e, this);\n else if (Number.isInteger(e) && e >= 0)\n he(this, qt, ue).call(this, e, t);\n else if (tt.isAnyArray(e)) {\n const n = e;\n if (e = n.length, t = e ? n[0].length : 0, typeof t != \"number\")\n throw new TypeError(\n \"Data must be a 2D array with at least one element\"\n );\n this.data = [];\n for (let i = 0; i < e; i++) {\n if (n[i].length !== t)\n throw new RangeError(\"Inconsistent array dimensions\");\n if (!Is(n[i]))\n throw new TypeError(\"Input data contains non-numeric values\");\n this.data.push(Float64Array.from(n[i]));\n }\n this.rows = e, this.columns = t;\n } else\n throw new TypeError(\n \"First argument must be a positive number or an array\"\n );\n }\n set(e, t, n) {\n return this.data[e][t] = n, this;\n }\n get(e, t) {\n return this.data[e][t];\n }\n removeRow(e) {\n return nt(this, e), this.data.splice(e, 1), this.rows -= 1, this;\n }\n addRow(e, t) {\n return t === void 0 && (t = e, e = this.rows), nt(this, e, !0), t = Float64Array.from(Pt(this, t)), this.data.splice(e, 0, t), this.rows += 1, this;\n }\n removeColumn(e) {\n it(this, e);\n for (let t = 0; t < this.rows; t++) {\n const n = new Float64Array(this.columns - 1);\n for (let i = 0; i < e; i++)\n n[i] = this.data[t][i];\n for (let i = e + 1; i < this.columns; i++)\n n[i - 1] = this.data[t][i];\n this.data[t] = n;\n }\n return this.columns -= 1, this;\n }\n addColumn(e, t) {\n typeof t > \"u\" && (t = e, e = this.columns), it(this, e, !0), t = bt(this, t);\n for (let n = 0; n < this.rows; n++) {\n const i = new Float64Array(this.columns + 1);\n let o = 0;\n for (; o < e; o++)\n i[o] = this.data[n][o];\n for (i[o++] = t[n]; o < this.columns + 1; o++)\n i[o] = this.data[n][o - 1];\n this.data[n] = i;\n }\n return this.columns += 1, this;\n }\n}, qt = new WeakSet(), /**\n * Init an empty matrix\n * @param {number} nRows\n * @param {number} nColumns\n */\nue = function(e, t) {\n if (this.data = [], Number.isInteger(t) && t >= 0)\n for (let n = 0; n < e; n++)\n this.data.push(new Float64Array(t));\n else\n throw new TypeError(\"nColumns must be a positive integer\");\n this.rows = e, this.columns = t;\n}, dt);\ncs(V, _);\nvar K;\nconst Zt = class Zt extends V {\n /**\n * @param {number | AbstractMatrix | ArrayLike<ArrayLike<number>>} diagonalSize\n * @return {this}\n */\n constructor(e) {\n super();\n /** @type {Matrix} */\n le(this, K);\n if (_.isMatrix(e)) {\n if (!e.isSymmetric())\n throw new TypeError(\"not symmetric data\");\n Lt(this, K, _.copy(\n e,\n new _(e.rows, e.rows)\n ));\n } else if (Number.isInteger(e) && e >= 0)\n Lt(this, K, new _(e, e));\n else if (Lt(this, K, new _(e)), !this.isSymmetric())\n throw new TypeError(\"not symmetric data\");\n }\n get size() {\n return ot(this, K).size;\n }\n get rows() {\n return ot(this, K).rows;\n }\n get columns() {\n return ot(this, K).columns;\n }\n get diagonalSize() {\n return this.rows;\n }\n /**\n * not the same as matrix.isSymmetric()\n * Here is to check if it's instanceof SymmetricMatrix without bundling issues\n *\n * @param value\n * @returns {boolean}\n */\n static isSymmetricMatrix(e) {\n return _.isMatrix(e) && e.klassType === \"SymmetricMatrix\";\n }\n /**\n * @param diagonalSize\n * @return {SymmetricMatrix}\n */\n static zeros(e) {\n return new this(e);\n }\n /**\n * @param diagonalSize\n * @return {SymmetricMatrix}\n */\n static ones(e) {\n return new this(e).fill(1);\n }\n clone() {\n const e = new Zt(this.diagonalSize);\n for (const [t, n, i] of this.upperRightEntries())\n e.set(t, n, i);\n return e;\n }\n toMatrix() {\n return new _(this);\n }\n get(e, t) {\n return ot(this, K).get(e, t);\n }\n set(e, t, n) {\n return ot(this, K).set(e, t, n), ot(this, K).set(t, e, n), this;\n }\n removeCross(e) {\n return ot(this, K).removeRow(e), ot(this, K).removeColumn(e), this;\n }\n addCross(e, t) {\n t === void 0 && (t = e, e = this.diagonalSize);\n const n = t.slice();\n return n.splice(e, 1), ot(this, K).addRow(e, n), ot(this, K).addColumn(e, t), this;\n }\n /**\n * @param {Mask[]} mask\n */\n applyMask(e) {\n if (e.length !== this.diagonalSize)\n throw new RangeError(\"Mask size do not match with matrix size\");\n const t = [];\n for (const [n, i] of e.entries())\n i || t.push(n);\n t.reverse();\n for (const n of t)\n this.removeCross(n);\n return this;\n }\n /**\n * Compact format upper-right corner of matrix\n * iterate from left to right, from top to bottom.\n *\n * ```\n * A B C D\n * A 1 2 3 4\n * B 2 5 6 7\n * C 3 6 8 9\n * D 4 7 9 10\n * ```\n *\n * will return compact 1D array `[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]`\n *\n * length is S(i=0, n=sideSize) => 10 for a 4 sideSized matrix\n *\n * @returns {number[]}\n */\n toCompact() {\n const { diagonalSize: e } = this, t = new Array(e * (e + 1) / 2);\n for (let n = 0, i = 0, o = 0; o < t.length; o++)\n t[o] = this.get(i, n), ++n >= e && (n = ++i);\n return t;\n }\n /**\n * @param {number[]} compact\n * @return {SymmetricMatrix}\n */\n static fromCompact(e) {\n const t = e.length, n = (Math.sqrt(8 * t + 1) - 1) / 2;\n if (!Number.isInteger(n))\n throw new TypeError(\n `This array is not a compact representation of a Symmetric Matrix, ${JSON.stringify(\n e\n )}`\n );\n const i = new Zt(n);\n for (let o = 0, l = 0, h = 0; h < t; h++)\n i.set(o, l, e[h]), ++o >= n && (o = ++l);\n return i;\n }\n /**\n * half iterator upper-right-corner from left to right, from top to bottom\n * yield [row, column, value]\n *\n * @returns {Generator<[number, number, number], void, void>}\n */\n *upperRightEntries() {\n for (let e = 0, t = 0; e < this.diagonalSize; void 0) {\n const n = this.get(e, t);\n yield [e, t, n], ++t >= this.diagonalSize && (t = ++e);\n }\n }\n /**\n * half iterator upper-right-corner from left to right, from top to bottom\n * yield value\n *\n * @returns {Generator<[number, number, number], void, void>}\n */\n *upperRightValues() {\n for (let e = 0, t = 0; e < this.diagonalSize; void 0)\n yield this.get(e, t), ++t >= this.diagonalSize && (t = ++e);\n }\n};\nK = new WeakMap();\nlet pt = Zt;\npt.prototype.klassType = \"SymmetricMatrix\";\nclass Ht extends pt {\n /**\n * not the same as matrix.isSymmetric()\n * Here is to check if it's instanceof SymmetricMatrix without bundling issues\n *\n * @param value\n * @returns {boolean}\n */\n static isDistanceMatrix(s) {\n return pt.isSymmetricMatrix(s) && s.klassSubType === \"DistanceMatrix\";\n }\n constructor(s) {\n if (super(s), !this.isDistance())\n throw new TypeError(\"Provided arguments do no produce a distance matrix\");\n }\n set(s, e, t) {\n return s === e && (t = 0), super.set(s, e, t);\n }\n addCross(s, e) {\n return e === void 0 && (e = s, s = this.diagonalSize), e = e.slice(), e[s] = 0, super.addCross(s, e);\n }\n toSymmetricMatrix() {\n return new pt(this);\n }\n clone() {\n const s = new Ht(this.diagonalSize);\n for (const [e, t, n] of this.upperRightEntries())\n e !== t && s.set(e, t, n);\n return s;\n }\n /**\n * Compact format upper-right corner of matrix\n * no diagonal (only zeros)\n * iterable from left to right, from top to bottom.\n *\n * ```\n * A B C D\n * A 0 1 2 3\n * B 1 0 4 5\n * C 2 4 0 6\n * D 3 5 6 0\n * ```\n *\n * will return compact 1D array `[1, 2, 3, 4, 5, 6]`\n *\n * length is S(i=0, n=sideSize-1) => 6 for a 4 side sized matrix\n *\n * @returns {number[]}\n */\n toCompact() {\n const { diagonalSize: s } = this, e = (s - 1) * s / 2, t = new Array(e);\n for (let n = 1, i = 0, o = 0; o < t.length; o++)\n t[o] = this.get(i, n), ++n >= s && (n = ++i + 1);\n return t;\n }\n /**\n * @param {number[]} compact\n */\n static fromCompact(s) {\n const e = s.length;\n if (e === 0)\n return new this(0);\n const t = (Math.sqrt(8 * e + 1) + 1) / 2;\n if (!Number.isInteger(t))\n throw new TypeError(\n `This array is not a compact representation of a DistanceMatrix, ${JSON.stringify(\n s\n )}`\n );\n const n = new this(t);\n for (let i = 1, o = 0, l = 0; l < e; l++)\n n.set(i, o, s[l]), ++i >= t && (i = ++o + 1);\n return n;\n }\n}\nHt.prototype.klassSubType = \"DistanceMatrix\";\nclass ct extends V {\n constructor(s, e, t) {\n super(), this.matrix = s, this.rows = e, this.columns = t;\n }\n}\nclass Cs extends ct {\n constructor(s, e) {\n it(s, e), super(s, s.rows, 1), this.column = e;\n }\n set(s, e, t) {\n return this.matrix.set(s, this.column, t), this;\n }\n get(s) {\n return this.matrix.get(s, this.column);\n }\n}\nclass qs extends ct {\n constructor(s, e) {\n we(s, e), super(s, s.rows, e.length), this.columnIndices = e;\n }\n set(s, e, t) {\n return this.matrix.set(s, this.columnIndices[e], t), this;\n }\n get(s, e) {\n return this.matrix.get(s, this.columnIndices[e]);\n }\n}\nclass Fs extends ct {\n constructor(s) {\n super(s, s.rows, s.columns);\n }\n set(s, e, t) {\n return this.matrix.set(s, this.columns - e - 1, t), this;\n }\n get(s, e) {\n return this.matrix.get(s, this.columns - e - 1);\n }\n}\nclass xs extends ct {\n constructor(s) {\n super(s, s.rows, s.columns);\n }\n set(s, e, t) {\n return this.matrix.set(this.rows - s - 1, e, t), this;\n }\n get(s, e) {\n return this.matrix.get(this.rows - s - 1, e);\n }\n}\nclass As extends ct {\n constructor(s, e) {\n nt(s, e), super(s, 1, s.columns), this.row = e;\n }\n set(s, e, t) {\n return this.matrix.set(this.row, e, t), this;\n }\n get(s, e) {\n return this.matrix.get(this.row, e);\n }\n}\nclass Vs extends ct {\n constructor(s, e) {\n ge(s, e), super(s, e.length, s.columns), this.rowIndices = e;\n }\n set(s, e, t) {\n return this.matrix.set(this.rowIndices[s], e, t), this;\n }\n get(s, e) {\n return this.matrix.get(this.rowIndices[s], e);\n }\n}\nclass Qt extends ct {\n constructor(s, e, t) {\n ge(s, e), we(s, t), super(s, e.length, t.length), this.rowIndices = e, this.columnIndices = t;\n }\n set(s, e, t) {\n return this.matrix.set(\n this.rowIndices[s],\n this.columnIndices[e],\n t\n ), this;\n }\n get(s, e) {\n return this.matrix.get(\n this.rowIndices[s],\n this.columnIndices[e]\n );\n }\n}\nclass Ns extends ct {\n constructor(s, e, t, n, i) {\n ae(s, e, t, n, i), super(s, t - e + 1, i - n + 1), this.startRow = e, this.startColumn = n;\n }\n set(s, e, t) {\n return this.matrix.set(\n this.startRow + s,\n this.startColumn + e,\n t\n ), this;\n }\n get(s, e) {\n return this.matrix.get(\n this.startRow + s,\n this.startColumn + e\n );\n }\n}\nclass $s extends ct {\n constructor(s) {\n super(s, s.columns, s.rows);\n }\n set(s, e, t) {\n return this.matrix.set(e, s, t), this;\n }\n get(s, e) {\n return this.matrix.get(e, s);\n }\n}\nclass Ae extends V {\n constructor(s, e = {}) {\n const { rows: t = 1 } = e;\n if (s.length % t !== 0)\n throw new Error(\"the data length is not divisible by the number of rows\");\n super(), this.rows = t, this.columns = s.length / t, this.data = s;\n }\n set(s, e, t) {\n let n = this._calculateIndex(s, e);\n return this.data[n] = t, this;\n }\n get(s, e) {\n let t = this._calculateIndex(s, e);\n return this.data[t];\n }\n _calculateIndex(s, e) {\n return s * this.columns + e;\n }\n}\nclass st extends V {\n constructor(s) {\n super(), this.data = s, this.rows = s.length, this.columns = s[0].length;\n }\n set(s, e, t) {\n return this.data[s][e] = t, this;\n }\n get(s, e) {\n return this.data[s][e];\n }\n}\nfunction Ls(r, s) {\n if (tt.isAnyArray(r))\n return r[0] && tt.isAnyArray(r[0]) ? new st(r) : new Ae(r, s);\n throw new Error(\"the argument is not an array\");\n}\nclass te {\n constructor(s) {\n s = st.checkMatrix(s);\n let e = s.clone(), t = e.rows, n = e.columns, i = new Float64Array(t), o = 1, l, h, a, u, c, g, d, w, p;\n for (l = 0; l < t; l++)\n i[l] = l;\n for (w = new Float64Array(t), h = 0; h < n; h++) {\n for (l = 0; l < t; l++)\n w[l] = e.get(l, h);\n for (l = 0; l < t; l++) {\n for (p = Math.min(l, h), c = 0, a = 0; a < p; a++)\n c += e.get(l, a) * w[a];\n w[l] -= c, e.set(l, h, w[l]);\n }\n for (u = h, l = h + 1; l < t; l++)\n Math.abs(w[l]) > Math.abs(w[u]) && (u = l);\n if (u !== h) {\n for (a = 0; a < n; a++)\n g = e.get(u, a), e.set(u, a, e.get(h, a)), e.set(h, a, g);\n d = i[u], i[u] = i[h], i[h] = d, o = -o;\n }\n if (h < t && e.get(h, h) !== 0)\n for (l = h + 1; l < t; l++)\n e.set(l, h, e.get(l, h) / e.get(h, h));\n }\n this.LU = e, this.pivotVector = i, this.pivotSign = o;\n }\n isSingular() {\n let s = this.LU, e = s.columns;\n for (let t = 0; t < e; t++)\n if (s.get(t, t) === 0)\n return !0;\n return !1;\n }\n solve(s) {\n s = _.checkMatrix(s);\n let e = this.LU;\n if (e.rows !== s.rows)\n throw new Error(\"Invalid matrix dimensions\");\n if (this.isSingular())\n throw new Error(\"LU matrix is singular\");\n let n = s.columns, i = s.subMatrixRow(this.pivotVector, 0, n - 1), o = e.columns, l, h, a;\n for (a = 0; a < o; a++)\n for (l = a + 1; l < o; l++)\n for (h = 0; h < n; h++)\n i.set(l, h, i.get(l, h) - i.get(a, h) * e.get(l, a));\n for (a = o - 1; a >= 0; a--) {\n for (h = 0; h < n; h++)\n i.set(a, h, i.get(a, h) / e.get(a, a));\n for (l = 0; l < a; l++)\n for (h = 0; h < n; h++)\n i.set(l, h, i.get(l, h) - i.get(a, h) * e.get(l, a));\n }\n return i;\n }\n get determinant() {\n let s = this.LU;\n if (!s.isSquare())\n throw new Error(\"Matrix must be square\");\n let e = this.pivotSign, t = s.columns;\n for (let n = 0; n < t; n++)\n e *= s.get(n, n);\n return e;\n }\n get lowerTriangularMatrix() {\n let s = this.LU, e = s.rows, t = s.columns, n = new _(e, t);\n for (let i = 0; i < e; i++)\n for (let o = 0; o < t; o++)\n i > o ? n.set(i, o, s.get(i, o)) : i === o ? n.set(i, o, 1) : n.set(i, o, 0);\n return n;\n }\n get upperTriangularMatrix() {\n let s = this.LU, e = s.rows, t = s.columns, n = new _(e, t);\n for (let i = 0; i < e; i++)\n for (let o = 0; o < t; o++)\n i <= o ? n.set(i, o, s.get(i, o)) : n.set(i, o, 0);\n return n;\n }\n get pivotPermutationVector() {\n return Array.from(this.pivotVector);\n }\n}\nfunction ht(r, s) {\n let e = 0;\n return Math.abs(r) > Math.abs(s) ? (e = s / r, Math.abs(r) * Math.sqrt(1 + e * e)) : s !== 0 ? (e = r / s, Math.abs(s) * Math.sqrt(1 + e * e)) : 0;\n}\nclass pe {\n constructor(s) {\n s = st.checkMatrix(s);\n let e = s.clone(), t = s.rows, n = s.columns, i = new Float64Array(n), o, l, h, a;\n for (h = 0; h < n; h++) {\n let u = 0;\n for (o = h; o < t; o++)\n u = ht(u, e.get(o, h));\n if (u !== 0) {\n for (e.get(h, h) < 0 && (u = -u), o = h; o < t; o++)\n e.set(o, h, e.get(o, h) / u);\n for (e.set(h, h, e.get(h, h) + 1), l = h + 1; l < n; l++) {\n for (a = 0, o = h; o < t; o++)\n a += e.get(o, h) * e.get(o, l);\n for (a = -a / e.get(h, h), o = h; o < t; o++)\n e.set(o, l, e.get(o, l) + a * e.get(o, h));\n }\n }\n i[h] = -u;\n }\n this.QR = e, this.Rdiag = i;\n }\n solve(s) {\n s = _.checkMatrix(s);\n let e = this.QR, t = e.rows;\n if (s.rows !== t)\n throw new Error(\"Matrix row dimensions must agree\");\n if (!this.isFullRank())\n throw new Error(\"Matrix is rank deficient\");\n let n = s.columns, i = s.clone(), o = e.columns, l, h, a, u;\n for (a = 0; a < o; a++)\n for (h = 0; h < n; h++) {\n for (u = 0, l = a; l < t; l++)\n u += e.get(l, a) * i.get(l, h);\n for (u = -u / e.get(a, a), l = a; l < t; l++)\n i.set(l, h, i.get(l, h) + u * e.get(l, a));\n }\n for (a = o - 1; a >= 0; a--) {\n for (h = 0; h < n; h++)\n i.set(a, h, i.get(a, h) / this.Rdiag[a]);\n for (l = 0; l < a; l++)\n for (h = 0; h < n; h++)\n i.set(l, h, i.get(l, h) - i.get(a, h) * e.get(l, a));\n }\n return i.subMatrix(0, o - 1, 0, n - 1);\n }\n isFullRank() {\n let s = this.QR.columns;\n for (let e = 0; e < s; e++)\n if (this.Rdiag[e] === 0)\n return !1;\n return !0;\n }\n get upperTriangularMatrix() {\n let s = this.QR, e = s.columns, t = new _(e, e), n, i;\n for (n = 0; n < e; n++)\n for (i = 0; i < e; i++)\n n < i ? t.set(n, i, s.get(n, i)) : n === i ? t.set(n, i, this.Rdiag[n]) : t.set(n, i, 0);\n return t;\n }\n get orthogonalMatrix() {\n let s = this.QR, e = s.rows, t = s.columns, n = new _(e, t), i, o, l, h;\n for (l = t - 1; l >= 0; l--) {\n for (i = 0; i < e; i++)\n n.set(i, l, 0);\n for (n.set(l, l, 1), o = l; o < t; o++)\n if (s.get(l, l) !== 0) {\n for (h = 0, i = l; i < e; i++)\n h += s.get(i, l) * n.get(i, o);\n for (h = -h / s.get(l, l), i = l; i < e; i++)\n n.set(i, o, n.get(i, o) + h * s.get(i, l));\n }\n }\n return n;\n }\n}\nclass vt {\n constructor(s, e = {}) {\n if (s = st.checkMatrix(s), s.isEmpty())\n throw new Error(\"Matrix must be non-empty\");\n let t = s.rows, n = s.columns;\n const {\n computeLeftSingularVectors: i = !0,\n computeRightSingularVectors: o = !0,\n autoTranspose: l = !1\n } = e;\n let h = !!i, a = !!o, u = !1, c;\n if (t < n)\n if (!l)\n c = s.clone(), console.warn(\n \"Computing SVD on a matrix with more columns than rows. Consider enabling autoTranspose\"\n );\n else {\n c = s.transpose(), t = c.rows, n = c.columns, u = !0;\n let m = h;\n h = a, a = m;\n }\n else\n c = s.clone();\n let g = Math.min(t, n), d = Math.min(t + 1, n), w = new Float64Array(d), p = new _(t, g), P = new _(n, n), f = new Float64Array(n), M = new Float64Array(t), E = new Float64Array(d);\n for (let m = 0; m < d; m++) E[m] = m;\n let R = Math.min(t - 1, n), v = Math.max(0, Math.min(n - 2, t)), L = Math.max(R, v);\n for (let m = 0; m < L; m++) {\n if (m < R) {\n w[m] = 0;\n for (let b = m; b < t; b++)\n w[m] = ht(w[m], c.get(b, m));\n if (w[m] !== 0) {\n c.get(m, m) < 0 && (w[m] = -w[m]);\n for (let b = m; b < t; b++)\n c.set(b, m, c.get(b, m) / w[m]);\n c.set(m, m, c.get(m, m) + 1);\n }\n w[m] = -w[m];\n }\n for (let b = m + 1; b < n; b++) {\n if (m < R && w[m] !== 0) {\n let j = 0;\n for (let y = m; y < t; y++)\n j += c.get(y, m) * c.get(y, b);\n j = -j / c.get(m, m);\n for (let y = m; y < t; y++)\n c.set(y, b, c.get(y, b) + j * c.get(y, m));\n }\n f[b] = c.get(m, b);\n }\n if (h && m < R)\n for (let b = m; b < t; b++)\n p.set(b, m, c.get(b, m));\n if (m < v) {\n f[m] = 0;\n for (let b = m + 1; b < n; b++)\n f[m] = ht(f[m], f[b]);\n if (f[m] !== 0) {\n f[m + 1] < 0 && (f[m] = 0 - f[m]);\n for (let b = m + 1; b < n; b++)\n f[b] /= f[m];\n f[m + 1] += 1;\n }\n if (f[m] = -f[m], m + 1 < t && f[m] !== 0) {\n for (let b = m + 1; b < t; b++)\n M[b] = 0;\n for (let b = m + 1; b < t; b++)\n for (let j = m + 1; j < n; j++)\n M[b] += f[j] * c.get(b, j);\n for (let b = m + 1; b < n; b++) {\n let j = -f[b] / f[m + 1];\n for (let y = m + 1; y < t; y++)\n c.set(y, b, c.get(y, b) + j * M[y]);\n }\n }\n if (a)\n for (let b = m + 1; b < n; b++)\n P.set(b, m, f[b]);\n }\n }\n let S = Math.min(n, t + 1);\n if (R < n && (w[R] = c.get(R, R)), t < S && (w[S - 1] = 0), v + 1 < S && (f[v] = c.get(v, S - 1)), f[S - 1] = 0, h) {\n for (let m = R; m < g; m++) {\n for (let b = 0; b < t; b++)\n p.set(b, m, 0);\n p.set(m, m, 1);\n }\n for (let m = R - 1; m >= 0; m--)\n if (w[m] !== 0) {\n for (let b = m + 1; b < g; b++) {\n let j = 0;\n for (let y = m; y < t; y++)\n j += p.get(y, m) * p.get(y, b);\n j = -j / p.get(m, m);\n for (let y = m; y < t; y++)\n p.set(y, b, p.get(y, b) + j * p.get(y, m));\n }\n for (let b = m; b < t; b++)\n p.set(b, m, -p.get(b, m));\n p.set(m, m, 1 + p.get(m, m));\n for (let b = 0; b < m - 1; b++)\n p.set(b, m, 0);\n } else {\n for (let b = 0; b < t; b++)\n p.set(b, m, 0);\n p.set(m, m, 1);\n }\n }\n if (a)\n for (let m = n - 1; m >= 0; m--) {\n if (m < v && f[m] !== 0)\n for (let b = m + 1; b < n; b++) {\n let j = 0;\n for (let y = m + 1; y < n; y++)\n j += P.get(y, m) * P.get(y, b);\n j = -j / P.get(m + 1, m);\n for (let y = m + 1; y < n; y++)\n P.set(y, b, P.get(y, b) + j * P.get(y, m));\n }\n for (let b = 0; b < n; b++)\n P.set(b, m, 0);\n P.set(m, m, 1);\n }\n let k = S - 1, D = Number.EPSILON;\n for (; S > 0; ) {\n let m, b;\n for (m = S - 2; m >= -1 && m !== -1; m--) {\n const j = Number.MIN_VALUE + D * Math.abs(w[m] + Math.abs(w[m + 1]));\n if (Math.abs(f[m]) <= j || Number.isNaN(f[m])) {\n f[m] = 0;\n break;\n }\n }\n if (m === S - 2)\n b = 4;\n else {\n let j;\n for (j = S - 1; j >= m && j !== m; j--) {\n let y = (j !== S ? Math.abs(f[j]) : 0) + (j !== m + 1 ? Math.abs(f[j - 1]) : 0);\n if (Math.abs(w[j]) <= D * y) {\n w[j] = 0;\n break;\n }\n }\n j === m ? b = 3 : j === S - 1 ? b = 1 : (b = 2, m = j);\n }\n switch (m++, b) {\n case 1: {\n let j = f[S - 2];\n f[S - 2] = 0;\n for (let y = S - 2; y >= m; y--) {\n let C = ht(w[y], j), F = w[y] / C, I = j / C;\n if (w[y] = C, y !== m && (j = -I * f[y - 1], f[y - 1] = F * f[y - 1]), a)\n for (let O = 0; O < n; O++)\n C = F * P.get(O, y) + I * P.get(O, S - 1), P.set(O, S - 1, -I * P.get(O, y) + F * P.get(O, S - 1)), P.set(O, y, C);\n }\n break;\n }\n case 2: {\n let j = f[m - 1];\n f[m - 1] = 0;\n for (let y = m; y < S; y++) {\n let C = ht(w[y], j), F = w[y] / C, I = j / C;\n if (w[y] = C, j = -I * f[y], f[y] = F * f[y], h)\n for (let O = 0; O < t; O++)\n C = F * p.get(O, y) + I * p.get(O, m - 1), p.set(O, m - 1, -I * p.get(O, y) + F * p.get(O, m - 1)), p.set(O, y, C);\n }\n break;\n }\n case 3: {\n const j = Math.max(\n Math.abs(w[S - 1]),\n Math.abs(w[S - 2]),\n Math.abs(f[S - 2]),\n Math.abs(w[m]),\n Math.abs(f[m])\n ), y = w[S - 1] / j, C = w[S - 2] / j, F = f[S - 2] / j, I = w[m] / j, O = f[m] / j, x = ((C + y) * (C - y) + F * F) / 2, N = y * F * (y * F);\n let A = 0;\n (x !== 0 || N !== 0) && (x < 0 ? A = 0 - Math.sqrt(x * x + N) : A = Math.sqrt(x * x + N), A = N / (x + A));\n let B = (I + y) * (I - y) + A, U = I * O;\n for (let T = m; T < S - 1; T++) {\n let z = ht(B, U);\n z === 0 && (z = Number.MIN_VALUE);\n let G = B / z, Q = U / z;\n if (T !== m && (f[T - 1] = z), B = G * w[T] + Q * f[T], f[T] = G * f[T] - Q * w[T], U = Q * w[T + 1], w[T + 1] = G * w[T + 1], a)\n for (let Y = 0; Y < n; Y++)\n z = G * P.get(Y, T) + Q * P.get(Y, T + 1), P.set(Y, T + 1, -Q * P.get(Y, T) + G * P.get(Y, T + 1)), P.set(Y, T, z);\n if (z = ht(B, U), z === 0 && (z = Number.MIN_VALUE), G = B / z, Q = U / z, w[T] = z, B = G * f[T] + Q * w[T + 1], w[T + 1] = -Q * f[T] + G * w[T + 1], U = Q * f[T + 1], f[T + 1] = G * f[T + 1], h && T < t - 1)\n for (let Y = 0; Y < t; Y++)\n z = G * p.get(Y, T) + Q * p.get(Y, T + 1), p.set(Y, T + 1, -Q * p.get(Y, T) + G * p.get(Y, T + 1)), p.set(Y, T, z);\n }\n f[S - 2] = B;\n break;\n }\n case 4: {\n if (w[m] <= 0 && (w[m] = w[m] < 0 ? -w[m] : 0, a))\n for (let j = 0; j <= k; j++)\n P.set(j, m, -P.get(j, m));\n for (; m < k && !(w[m] >= w[m + 1]); ) {\n let j = w[m];\n if (w[m] = w[m + 1], w[m + 1] = j, a && m < n - 1)\n for (let y = 0; y < n; y++)\n j = P.get(y, m + 1), P.set(y, m + 1, P.get(y, m)), P.set(y, m, j);\n if (h && m < t - 1)\n for (let y = 0; y < t; y++)\n j = p.get(y, m + 1), p.set(y, m + 1, p.get(y, m)), p.set(y, m, j);\n m++;\n }\n S--;\n break;\n }\n }\n }\n if (u) {\n let m = P;\n P = p, p = m;\n }\n this.m = t, this.n = n, this.s = w, this.U = p, this.V = P;\n }\n solve(s) {\n let e = s, t = this.threshold, n = this.s.length, i = _.zeros(n, n);\n for (let g = 0; g < n; g++)\n Math.abs(this.s[g]) <= t ? i.set(g, g, 0) : i.set(g, g, 1 / this.s[g]);\n let o = this.U, l = this.rightSingularVectors, h = l.mmul(i), a = l.rows, u = o.rows, c = _.zeros(a, u);\n for (let g = 0; g < a; g++)\n for (let d = 0; d < u; d++) {\n let w = 0;\n for (let p = 0; p < n; p++)\n w += h.get(g, p) * o.get(d, p);\n c.set(g, d, w);\n }\n return c.mmul(e);\n }\n solveForDiagonal(s) {\n return this.solve(_.diag(s));\n }\n inverse() {\n let s = this.V, e = this.threshold, t = s.rows, n = s.columns, i = new _(t, this.s.length);\n for (let u = 0; u < t; u++)\n for (let c = 0; c < n; c++)\n Math.abs(this.s[c]) > e && i.set(u, c, s.get(u, c) / this.s[c]);\n let o = this.U, l = o.rows, h = o.columns, a = new _(t, l);\n for (let u = 0; u < t; u++)\n for (let c = 0; c < l; c++) {\n let g = 0;\n for (let d = 0; d < h; d++)\n g += i.get(u, d) * o.get(c, d);\n a.set(u, c, g);\n }\n return a;\n }\n get condition() {\n return this.s[0] / this.s[Math.min(this.m, this.n) - 1];\n }\n get norm2() {\n return this.s[0];\n }\n get rank() {\n let s = Math.max(this.m, this.n) * this.s[0] * Number.EPSILON, e = 0, t = this.s;\n for (let n = 0, i = t.length; n < i; n++)\n t[n] > s && e++;\n return e;\n }\n get diagonal() {\n return Array.from(this.s);\n }\n get threshold() {\n return Number.EPSILON / 2 * Math.max(this.m, this.n) * this.s[0];\n }\n get leftSingularVectors() {\n return this.U;\n }\n get rightSingularVectors() {\n return this.V;\n }\n get diagonalMatrix() {\n return _.diag(this.s);\n }\n}\nfunction Ds(r, s = !1) {\n return r = st.checkMatrix(r), s ? new vt(r).inverse() : Ve(r, _.eye(r.rows));\n}\nfunction Ve(r, s, e = !1) {\n return r = st.checkMatrix(r), s = st.checkMatrix(s), e ? new vt(r).solve(s) : r.isSquare() ? new te(r).solve(s) : new pe(r).solve(s);\n}\nfunction Gt(r) {\n if (r = _.checkMatrix(r), r.isSquare()) {\n if (r.columns === 0)\n return 1;\n let s, e, t, n;\n if (r.columns === 2)\n return s = r.get(0, 0), e = r.get(0, 1), t = r.get(1, 0), n = r.get(1, 1), s * n - e * t;\n if (r.columns === 3) {\n let i, o, l;\n return i = new Qt(r, [1, 2], [1, 2]), o = new Qt(r, [1, 2], [0, 2]), l = new Qt(r, [1, 2], [0, 1]), s = r.get(0, 0), e = r.get(0, 1), t = r.get(0, 2), s * Gt(i) - e * Gt(o) + t * Gt(l);\n } else\n return new te(r).determinant;\n } else\n throw Error(\"determinant can only be calculated for a square matrix\");\n}\nfunction zs(r, s) {\n let e = [];\n for (let t = 0; t < r; t++)\n t !== s && e.push(t);\n return e;\n}\nfunction Bs(r, s, e, t = 1e-9, n = 1e-9) {\n if (r > n)\n return new Array(s.rows + 1).fill(0);\n {\n let i = s.addRow(e, [0]);\n for (let o = 0; o < i.rows; o++)\n Math.abs(i.get(o, 0)) < t && i.set(o, 0, 0);\n return i.to1DArray();\n }\n}\nfunction Os(r, s = {}) {\n const { thresholdValue: e = 1e-9, thresholdError: t = 1e-9 } = s;\n r = _.checkMatrix(r);\n let n = r.rows, i = new _(n, n);\n for (let o = 0; o < n; o++) {\n let l = _.columnVector(r.getRow(o)), h = r.subMatrixRow(zs(n, o)).transpose(), u = new vt(h).solve(l), c = _.sub(l, h.mmul(u)).abs().max();\n i.setRow(\n o,\n Bs(c, u, o, e, t)\n );\n }\n return i;\n}\nfunction Us(r, s = Number.EPSILON) {\n if (r = _.checkMatrix(r), r.isEmpty())\n return r.transpose();\n let e = new vt(r, { autoTranspose: !0 }), t = e.leftSingularVectors, n = e.rightSingularVectors, i = e.diagonal;\n for (let o = 0; o < i.length; o++)\n Math.abs(i[o]) > s ? i[o] = 1 / i[o] : i[o] = 0;\n return n.mmul(_.diag(i).mmul(t.transpose()));\n}\nfunction Ys(r, s = r, e = {}) {\n r = new _(r);\n let t = !1;\n if (typeof s == \"object\" && !_.isMatrix(s) && !tt.isAnyArray(s) ? (e = s, s = r, t = !0) : s = new _(s), r.rows !== s.rows)\n throw new TypeError(\"Both matrices must have the same number of rows\");\n const { center: n = !0 } = e;\n n && (r = r.center(\"column\"), t || (s = s.center(\"column\")));\n const i = r.transpose().mmul(s);\n for (let o = 0; o < i.rows; o++)\n for (let l = 0; l < i.columns; l++)\n i.set(o, l, i.get(o, l) * (1 / (r.rows - 1)));\n return i;\n}\nfunction Ws(r, s = r, e = {}) {\n r = new _(r);\n let t = !1;\n if (typeof s == \"object\" && !_.isMatrix(s) && !tt.isAnyArray(s) ? (e = s, s = r, t = !0) : s = new _(s), r.rows !== s.rows)\n throw new TypeError(\"Both matrices must have the same number of rows\");\n const { center: n = !0, scale: i = !0 } = e;\n n && (r.center(\"column\"), t || s.center(\"column\")), i && (r.scale(\"column\"), t || s.scale(\"column\"));\n const o = r.standardDeviation(\"column\", { unbiased: !0 }), l = t ? o : s.standardDeviation(\"column\", { unbiased: !0 }), h = r.transpose().mmul(s);\n for (let a = 0; a < h.rows; a++)\n for (let u = 0; u < h.columns; u++)\n h.set(\n a,\n u,\n h.get(a, u) * (1 / (o[a] * l[u])) * (1 / (r.rows - 1))\n );\n return h;\n}\nlet Ne = class {\n constructor(s, e = {}) {\n const { assumeSymmetric: t = !1 } = e;\n if (s = st.checkMatrix(s), !s.isSquare())\n throw new Error(\"Matrix is not a square matrix\");\n if (s.isEmpty())\n throw new Error(\"Matrix must be non-empty\");\n let n = s.columns, i = new _(n, n), o = new Float64Array(n), l = new Float64Array(n), h = s, a, u, c = !1;\n if (t ? c = !0 : c = s.isSymmetric(), c) {\n for (a = 0; a < n; a++)\n for (u = 0; u < n; u++)\n i.set(a, u, h.get(a, u));\n Qs(n, l, o, i), Gs(n, l, o, i);\n } else {\n let g = new _(n, n), d = new Float64Array(n);\n for (u = 0; u < n; u++)\n for (a = 0; a < n; a++)\n g.set(a, u, h.get(a, u));\n Xs(n, g, d, i), Zs(n, l, o, i, g);\n }\n this.n = n, this.e = l, this.d = o, this.V = i;\n }\n get realEigenvalues() {\n return Array.from(this.d);\n }\n get imaginaryEigenvalues() {\n return Array.from(this.e);\n }\n get eigenvectorMatrix() {\n return this.V;\n }\n get diagonalMatrix() {\n let s = this.n, e = this.e, t = this.d, n = new _(s, s), i, o;\n for (i = 0; i < s; i++) {\n for (o = 0; o < s; o++)\n n.set(i, o, 0);\n n.set(i, i, t[i]), e[i] > 0 ? n.set(i, i + 1, e[i]) : e[i] < 0 && n.set(i, i - 1, e[i]);\n }\n return n;\n }\n};\nfunction Qs(r, s, e, t) {\n let n, i, o, l, h, a, u, c;\n for (h = 0; h < r; h++)\n e[h] = t.get(r - 1, h);\n for (l = r - 1; l > 0; l--) {\n for (c = 0, o = 0, a = 0; a < l; a++)\n c = c + Math.abs(e[a]);\n if (c === 0)\n for (s[l] = e[l - 1], h = 0; h < l; h++)\n e[h] = t.get(l - 1, h), t.set(l, h, 0), t.set(h, l, 0);\n else {\n for (a = 0; a < l; a++)\n e[a] /= c, o += e[a] * e[a];\n for (n = e[l - 1], i = Math.sqrt(o), n > 0 && (i = -i), s[l] = c * i, o = o - n * i, e[l - 1] = n - i, h = 0; h < l; h++)\n s[h] = 0;\n for (h = 0; h < l; h++) {\n for (n = e[h], t.set(h, l, n), i = s[h] + t.get(h, h) * n, a = h + 1; a <= l - 1; a++)\n i += t.get(a, h) * e[a], s[a] += t.get(a, h) * n;\n s[h] = i;\n }\n for (n = 0, h = 0; h < l; h++)\n s[h] /= o, n += s[h] * e[h];\n for (u = n / (o + o), h = 0; h < l; h++)\n s[h] -= u * e[h];\n for (h = 0; h < l; h++) {\n for (n = e[h], i = s[h], a = h; a <= l - 1; a++)\n t.set(a, h, t.get(a, h) - (n * s[a] + i * e[a]));\n e[h] = t.get(l - 1, h), t.set(l, h, 0);\n }\n }\n e[l] = o;\n }\n for (l = 0; l < r - 1; l++) {\n if (t.set(r - 1, l, t.get(l, l)), t.set(l, l, 1), o = e[l + 1], o !== 0) {\n for (a = 0; a <= l; a++)\n e[a] = t.get(a, l + 1) / o;\n for (h = 0; h <= l; h++) {\n for (i = 0, a = 0; a <= l; a++)\n i += t.get(a, l + 1) * t.get(a, h);\n for (a = 0; a <= l; a++)\n t.set(a, h, t.get(a, h) - i * e[a]);\n }\n }\n for (a = 0; a <= l; a++)\n t.set(a, l + 1, 0);\n }\n for (h = 0; h < r; h++)\n e[h] = t.get(r - 1, h), t.set(r - 1, h, 0);\n t.set(r - 1, r - 1, 1), s[0] = 0;\n}\nfunction Gs(r, s, e, t) {\n let n, i, o, l, h, a, u, c, g, d, w, p, P, f, M, E;\n for (o = 1; o < r; o++)\n s[o - 1] = s[o];\n s[r - 1] = 0;\n let R = 0, v = 0, L = Number.EPSILON;\n for (a = 0; a < r; a++) {\n for (v = Math.max(v, Math.abs(e[a]) + Math.abs(s[a])), u = a; u < r && !(Math.abs(s[u]) <= L * v); )\n u++;\n if (u > a)\n do {\n for (n = e[a], c = (e[a + 1] - n) / (2 * s[a]), g = ht(c, 1), c < 0 && (g = -g), e[a] = s[a] / (c + g), e[a + 1] = s[a] * (c + g), d = e[a + 1], i = n - e[a], o = a + 2; o < r; o++)\n e[o] -= i;\n for (R = R + i, c = e[u], w = 1, p = w, P = w, f = s[a + 1], M = 0, E = 0, o = u - 1; o >= a; o--)\n for (P = p, p = w, E = M, n = w * s[o], i = w * c, g = ht(c, s[o]), s[o + 1] = M * g, M = s[o] / g, w = c / g, c = w * e[o] - M * n, e[o + 1] = i + M * (w * n + M * e[o]), h = 0; h < r; h++)\n i = t.get(h, o + 1), t.set(h, o + 1, M * t.get(h, o) + w * i), t.set(h, o, w * t.get(h, o) - M * i);\n c = -M * E * P * f * s[a] / d, s[a] = M * c, e[a] = w * c;\n } while (Math.abs(s[a]) > L * v);\n e[a] = e[a] + R, s[a] = 0;\n }\n for (o = 0; o < r - 1; o++) {\n for (h = o, c = e[o], l = o + 1; l < r; l++)\n e[l] < c && (h = l, c = e[l]);\n if (h !== o)\n for (e[h] = e[o], e[o] = c, l = 0; l < r; l++)\n c = t.get(l, o), t.set(l, o, t.get(l, h)), t.set(l, h, c);\n }\n}\nfunction Xs(r, s, e, t) {\n let n = 0, i = r - 1, o, l, h, a, u, c, g;\n for (c = n + 1; c <= i - 1; c++) {\n for (g = 0, a = c; a <= i; a++)\n g = g + Math.abs(s.get(a, c - 1));\n if (g !== 0) {\n for (h = 0, a = i; a >= c; a--)\n e[a] = s.get(a, c - 1) / g, h += e[a] * e[a];\n for (l = Math.sqrt(h), e[c] > 0 && (l = -l), h = h - e[c] * l, e[c] = e[c] - l, u = c; u < r; u++) {\n for (o = 0, a = i; a >= c; a--)\n o += e[a] * s.get(a, u);\n for (o = o / h, a = c; a <= i; a++)\n s.set(a, u, s.get(a, u) - o * e[a]);\n }\n for (a = 0; a <= i; a++) {\n for (o = 0, u = i; u >= c; u--)\n o += e[u] * s.get(a, u);\n for (o = o / h, u = c; u <= i; u++)\n s.set(a, u, s.get(a, u) - o * e[u]);\n }\n e[c] = g * e[c], s.set(c, c - 1, g * l);\n }\n }\n for (a = 0; a < r; a++)\n for (u = 0; u < r; u++)\n t.set(a, u, a === u ? 1 : 0);\n for (c = i - 1; c >= n + 1; c--)\n if (s.get(c, c - 1) !== 0) {\n for (a = c + 1; a <= i; a++)\n e[a] = s.get(a, c - 1);\n for (u = c; u <= i; u++) {\n for (l = 0, a = c; a <= i; a++)\n l += e[a] * t.get(a, u);\n for (l = l / e[c] / s.get(c, c - 1), a = c; a <= i; a++)\n t.set(a, u, t.get(a, u) + l * e[a]);\n }\n }\n}\nfunction Zs(r, s, e, t, n) {\n let i = r - 1, o = 0, l = r - 1, h = Number.EPSILON, a = 0, u = 0, c = 0, g = 0, d = 0, w = 0, p = 0, P = 0, f, M, E, R, v, L, S, k, D, m, b, j, y, C, F;\n for (f = 0; f < r; f++)\n for ((f < o || f > l) && (e[f] = n.get(f, f), s[f] = 0), M = Math.max(f - 1, 0); M < r; M++)\n u = u + Math.abs(n.get(f, M));\n for (; i >= o; ) {\n for (R = i; R > o && (w = Math.abs(n.get(R - 1, R - 1)) + Math.abs(n.get(R, R)), w === 0 && (w = u), !(Math.abs(n.get(R, R - 1)) < h * w)); )\n R--;\n if (R === i)\n n.set(i, i, n.get(i, i) + a), e[i] = n.get(i, i), s[i] = 0, i--, P = 0;\n else if (R === i - 1) {\n if (S = n.get(i, i - 1) * n.get(i - 1, i), c = (n.get(i - 1, i - 1) - n.get(i, i)) / 2, g = c * c + S, p = Math.sqrt(Math.abs(g)), n.set(i, i, n.get(i, i) + a), n.set(i - 1, i - 1, n.get(i - 1, i - 1) + a), k = n.get(i, i), g >= 0) {\n for (p = c >= 0 ? c + p : c - p, e[i - 1] = k + p, e[i] = e[i - 1], p !== 0 && (e[i] = k - S / p), s[i - 1] = 0, s[i] = 0, k = n.get(i, i - 1), w = Math.abs(k) + Math.abs(p), c = k / w, g = p / w, d = Math.sqrt(c * c + g * g), c = c / d, g = g / d, M = i - 1; M < r; M++)\n p = n.get(i - 1, M), n.set(i - 1, M, g * p + c * n.get(i, M)), n.set(i, M, g * n.get(i, M) - c * p);\n for (f = 0; f <= i; f++)\n p = n.get(f, i - 1), n.set(f, i - 1, g * p + c * n.get(f, i)), n.set(f, i, g * n.get(f, i) - c * p);\n for (f = o; f <= l; f++)\n p = t.get(f, i - 1), t.set(f, i - 1, g * p + c * t.get(f, i)), t.set(f, i, g * t.get(f, i) - c * p);\n } else\n e[i - 1] = k + c, e[i] = k + c, s[i - 1] = p, s[i] = -p;\n i = i - 2, P = 0;\n } else {\n if (k = n.get(i, i), D = 0, S = 0, R < i && (D = n.get(i - 1, i - 1), S = n.get(i, i - 1) * n.get(i - 1, i)), P === 10) {\n for (a += k, f = o; f <= i; f++)\n n.set(f, f, n.get(f, f) - k);\n w = Math.abs(n.get(i, i - 1)) + Math.abs(n.get(i - 1, i - 2)), k = D = 0.75 * w, S = -0.4375 * w * w;\n }\n if (P === 30 && (w = (D - k) / 2, w = w * w + S, w > 0)) {\n for (w = Math.sqrt(w), D < k && (w = -w), w = k - S / ((D - k) / 2 + w), f = o; f <= i; f++)\n n.set(f, f, n.get(f, f) - w);\n a += w, k = D = S = 0.964;\n }\n for (P = P + 1, v = i - 2; v >= R && (p = n.get(v, v), d = k - p, w = D - p, c = (d * w - S) / n.get(v + 1, v) + n.get(v, v + 1), g = n.get(v + 1, v + 1) - p - d - w, d = n.get(v + 2, v + 1), w = Math.abs(c) + Math.abs(g) + Math.abs(d), c = c / w, g = g / w, d = d / w, !(v === R || Math.abs(n.get(v, v - 1)) * (Math.abs(g) + Math.abs(d)) < h * (Math.abs(c) * (Math.abs(n.get(v - 1, v - 1)) + Math.abs(p) + Math.abs(n.get(v + 1, v + 1)))))); )\n v--;\n for (f = v + 2; f <= i; f++)\n n.set(f, f - 2, 0), f > v + 2 && n.set(f, f - 3, 0);\n for (E = v; E <= i - 1 && (C = E !== i - 1, E !== v && (c = n.get(E, E - 1), g = n.get(E + 1, E - 1), d = C ? n.get(E + 2, E - 1) : 0, k = Math.abs(c) + Math.abs(g) + Math.abs(d), k !== 0 && (c = c / k, g = g / k, d = d / k)), k !== 0); E++)\n if (w = Math.sqrt(c * c + g * g + d * d), c < 0 && (w = -w), w !== 0) {\n for (E !== v ? n.set(E, E - 1, -w * k) : R !== v && n.set(E, E - 1, -n.get(E, E - 1)), c = c + w, k = c / w, D = g / w, p = d / w, g = g / c, d = d / c, M = E; M < r; M++)\n c = n.get(E, M) + g * n.get(E + 1, M), C && (c = c + d * n.get(E + 2, M), n.set(E + 2, M, n.get(E + 2, M) - c * p)), n.set(E, M, n.get(E, M) - c * k), n.set(E + 1, M, n.get(E + 1, M) - c * D);\n for (f = 0; f <= Math.min(i, E + 3); f++)\n c = k * n.get(f, E) + D * n.get(f, E + 1), C && (c = c + p * n.get(f, E + 2), n.set(f, E + 2, n.get(f, E + 2) - c * d)), n.set(f, E, n.get(f, E) - c), n.set(f, E + 1, n.get(f, E + 1) - c * g);\n for (f = o; f <= l; f++)\n c = k * t.get(f, E) + D * t.get(f, E + 1), C && (c = c + p * t.get(f, E + 2), t.set(f, E + 2, t.get(f, E + 2) - c * d)), t.set(f, E, t.get(f, E) - c), t.set(f, E + 1, t.get(f, E + 1) - c * g);\n }\n }\n }\n if (u !== 0) {\n for (i = r - 1; i >= 0; i--)\n if (c = e[i], g = s[i], g === 0)\n for (R = i, n.set(i, i, 1), f = i - 1; f >= 0; f--) {\n for (S = n.get(f, f) - c, d = 0, M = R; M <= i; M++)\n d = d + n.get(f, M) * n.get(M, i);\n if (s[f] < 0)\n p = S, w = d;\n else if (R = f, s[f] === 0 ? n.set(f, i, S !== 0 ? -d / S : -d / (h * u)) : (k = n.get(f, f + 1), D = n.get(f + 1, f), g = (e[f] - c) * (e[f] - c) + s[f] * s[f], L = (k * w - p * d) / g, n.set(f, i, L), n.set(\n f + 1,\n i,\n Math.abs(k) > Math.abs(p) ? (-d - S * L) / k : (-w - D * L) / p\n )), L = Math.abs(n.get(f, i)), h * L * L > 1)\n for (M = f; M <= i; M++)\n n.set(M, i, n.get(M, i) / L);\n }\n else if (g < 0)\n for (R = i - 1, Math.abs(n.get(i, i - 1)) > Math.abs(n.get(i - 1, i)) ? (n.set(i - 1, i - 1, g / n.get(i, i - 1)), n.set(i - 1, i, -(n.get(i, i) - c) / n.get(i, i - 1))) : (F = Yt(0, -n.get(i - 1, i), n.get(i - 1, i - 1) - c, g), n.set(i - 1, i - 1, F[0]), n.set(i - 1, i, F[1])), n.set(i, i - 1, 0), n.set(i, i, 1), f = i - 2; f >= 0; f--) {\n for (m = 0, b = 0, M = R; M <= i; M++)\n m = m + n.get(f, M) * n.get(M, i - 1), b = b + n.get(f, M) * n.get(M, i);\n if (S = n.get(f, f) - c, s[f] < 0)\n p = S, d = m, w = b;\n else if (R = f, s[f] === 0 ? (F = Yt(-m, -b, S, g), n.set(f, i - 1, F[0]), n.set(f, i, F[1])) : (k = n.get(f, f + 1), D = n.get(f + 1, f), j = (e[f] - c) * (e[f] - c) + s[f] * s[f] - g * g, y = (e[f] - c) * 2 * g, j === 0 && y === 0 && (j = h * u * (Math.abs(S) + Math.abs(g) + Math.abs(k) + Math.abs(D) + Math.abs(p))), F = Yt(\n k * d - p * m + g * b,\n k * w - p * b - g * m,\n j,\n y\n ), n.set(f, i - 1, F[0]), n.set(f, i, F[1]), Math.abs(k) > Math.abs(p) + Math.abs(g) ? (n.set(\n f + 1,\n i - 1,\n (-m - S * n.get(f, i - 1) + g * n.get(f, i)) / k\n ), n.set(\n f + 1,\n i,\n (-b - S * n.get(f, i) - g * n.get(f, i - 1)) / k\n )) : (F = Yt(\n -d - D * n.get(f, i - 1),\n -w - D * n.get(f, i),\n p,\n g\n ), n.set(f + 1, i - 1, F[0]), n.set(f + 1, i, F[1]))), L = Math.max(Math.abs(n.get(f, i - 1)), Math.abs(n.get(f, i))), h * L * L > 1)\n for (M = f; M <= i; M++)\n n.set(M, i - 1, n.get(M, i - 1) / L), n.set(M, i, n.get(M, i) / L);\n }\n for (f = 0; f < r; f++)\n if (f < o || f > l)\n for (M = f; M < r; M++)\n t.set(f, M, n.get(f, M));\n for (M = r - 1; M >= o; M--)\n for (f = o; f <= l; f++) {\n for (p = 0, E = o; E <= Math.min(M, l); E++)\n p = p + t.get(f, E) * n.get(E, M);\n t.set(f, M, p);\n }\n }\n}\nfunction Yt(r, s, e, t) {\n let n, i;\n return Math.abs(e) > Math.abs(t) ? (n = t / e, i = e + n * t, [(r + n * s) / i, (s - n * r) / i]) : (n = e / t, i = t + n * e, [(n * r + s) / i, (n * s - r) / i]);\n}\nclass $e {\n constructor(s) {\n if (s = st.checkMatrix(s), !s.isSymmetric())\n throw new Error(\"Matrix is not symmetric\");\n let e = s, t = e.rows, n = new _(t, t), i = !0, o, l, h;\n for (l = 0; l < t; l++) {\n let a = 0;\n for (h = 0; h < l; h++) {\n let u = 0;\n for (o = 0; o < h; o++)\n u += n.get(h, o) * n.get(l, o);\n u = (e.get(l, h) - u) / n.get(h, h), n.set(l, h, u), a = a + u * u;\n }\n for (a = e.get(l, l) - a, i && (i = a > 0), n.set(l, l, Math.sqrt(Math.max(a, 0))), h = l + 1; h < t; h++)\n n.set(l, h, 0);\n }\n this.L = n, this.positiveDefinite = i;\n }\n isPositiveDefinite() {\n return this.positiveDefinite;\n }\n solve(s) {\n s = st.checkMatrix(s);\n let e = this.L, t = e.rows;\n if (s.rows !== t)\n throw new Error(\"Matrix dimensions do not match\");\n if (this.isPositiveDefinite() === !1)\n throw new Error(\"Matrix is not positive definite\");\n let n = s.columns, i = s.clone(), o, l, h;\n for (h = 0; h < t; h++)\n for (l = 0; l < n; l++) {\n for (o = 0; o < h; o++)\n i.set(h, l, i.get(h, l) - i.get(o, l) * e.get(h, o));\n i.set(h, l, i.get(h, l) / e.get(h, h));\n }\n for (h = t - 1; h >= 0; h--)\n for (l = 0; l < n; l++) {\n for (o = h + 1; o < t; o++)\n i.set(h, l, i.get(h, l) - i.get(o, l) * e.get(o, h));\n i.set(h, l, i.get(h, l) / e.get(h, h));\n }\n return i;\n }\n get lowerTriangularMatrix() {\n return this.L;\n }\n}\nclass Le {\n constructor(s, e = {}) {\n s = st.checkMatrix(s);\n let { Y: t } = e;\n const {\n scaleScores: n = !1,\n maxIterations: i = 1e3,\n terminationCriteria: o = 1e-10\n } = e;\n let l;\n if (t) {\n if (tt.isAnyArray(t) && typeof t[0] == \"number\" ? t = _.columnVector(t) : t = st.checkMatrix(t), t.rows !== s.rows)\n throw new Error(\"Y should have the same number of rows as X\");\n l = t.getColumnVector(0);\n } else\n l = s.getColumnVector(0);\n let h = 1, a, u, c, g;\n for (let d = 0; d < i && h > o; d++)\n c = s.transpose().mmul(l).div(l.transpose().mmul(l).get(0, 0)), c = c.div(c.norm()), a = s.mmul(c).div(c.transpose().mmul(c).get(0, 0)), d > 0 && (h = a.clone().sub(g).pow(2).sum()), g = a.clone(), t ? (u = t.transpose().mmul(a).div(a.transpose().mmul(a).get(0, 0)), u = u.div(u.norm()), l = t.mmul(u).div(u.transpose().mmul(u).get(0, 0))) : l = a;\n if (t) {\n let d = s.transpose().mmul(a).div(a.transpose().mmul(a).get(0, 0));\n d = d.div(d.norm());\n let w = s.clone().sub(a.clone().mmul(d.transpose())), p = l.transpose().mmul(a).div(a.transpose().mmul(a).get(0, 0)), P = t.clone().sub(\n a.clone().mulS(p.get(0, 0)).mmul(u.transpose())\n );\n this.t = a, this.p = d.transpose(), this.w = c.transpose(), this.q = u, this.u = l, this.s = a.transpose().mmul(a), this.xResidual = w, this.yResidual = P, this.betas = p;\n } else\n this.w = c.transpose(), this.s = a.transpose().mmul(a).sqrt(), n ? this.t = a.clone().div(this.s.get(0, 0)) : this.t = a, this.xResidual = s.sub(a.mmul(c.transpose()));\n }\n}\n$.AbstractMatrix = V;\n$.CHO = $e;\n$.CholeskyDecomposition = $e;\n$.DistanceMatrix = Ht;\n$.EVD = Ne;\nvar Js = $.EigenvalueDecomposition = Ne;\n$.LU = te;\n$.LuDecomposition = te;\nvar De = $.Matrix = _;\n$.MatrixColumnSelectionView = qs;\n$.MatrixColumnView = Cs;\n$.MatrixFlipColumnView = Fs;\n$.MatrixFlipRowView = xs;\n$.MatrixRowSelectionView = Vs;\n$.MatrixRowView = As;\n$.MatrixSelectionView = Qt;\n$.MatrixSubView = Ns;\n$.MatrixTransposeView = $s;\n$.NIPALS = Le;\n$.Nipals = Le;\n$.QR = pe;\n$.QrDecomposition = pe;\n$.SVD = vt;\n$.SingularValueDecomposition = vt;\n$.SymmetricMatrix = pt;\n$.WrapperMatrix1D = Ae;\n$.WrapperMatrix2D = st;\n$.correlation = Ws;\n$.covariance = Ys;\nvar Re = $.default = _;\n$.determinant = Gt;\n$.inverse = Ds;\n$.linearDependencies = Os;\n$.pseudoInverse = Us;\n$.solve = Ve;\n$.wrap = Ls;\nconst Ks = Js, Hs = De;\nRe.Matrix && Re.Matrix;\nfunction ee(r, s, e) {\n const t = r / e, n = s / e;\n if (!(isFinite(t) && isFinite(n))) {\n const h = -r / s;\n return isFinite(h) ? [h] : r == 0 && s == 0 ? [0] : [];\n }\n const i = n * n - 4 * t;\n let o = 0;\n if (isFinite(i)) {\n if (i < 0)\n return [];\n if (i == 0)\n return [-0.5 * n];\n o = -0.5 * (n + kt(Math.sqrt(i), n));\n } else\n o = -n;\n const l = t / o;\n return isFinite(l) ? l > o ? [o, l] : [l, o] : [o];\n}\nfunction ze(r, s, e, t) {\n const n = e / (3 * t), i = s / (3 * t), o = r / t;\n if (!(isFinite(o) && isFinite(i) && isFinite(n)))\n return ee(r, s, e);\n const l = -n * n + i, h = -i * n + o, a = n * o - i * i, u = 4 * l * a - h * h, c = -2 * n * l + h;\n if (u < 0) {\n const g = Math.sqrt(-0.25 * u), d = -0.5 * c;\n return [Math.cbrt(d + g) + Math.cbrt(d - g) - n];\n } else if (u == 0) {\n const g = kt(Math.sqrt(-l), c);\n return [g - n, -2 * g - n];\n } else {\n const g = Math.atan2(Math.sqrt(u), -c) / 3, d = Math.cos(g), w = Math.sin(g) * Math.sqrt(3), p = 0.5 * (-d + w), P = 0.5 * (-d - w), f = 2 * Math.sqrt(-l);\n return [f * d - n, f * p - n, f * P - n];\n }\n}\nfunction gn(r, s, e, t, n) {\n if (n == 0)\n return ze(r, s, e, t);\n const i = t / n, o = e / n, l = s / n, h = r / n;\n let a = ve(i, o, l, h, !1);\n if (a !== null)\n return a;\n const u = 716e74;\n for (let c = 0; c < 2; c++)\n if (a = ve(\n i / u,\n o / (u * u),\n l / (u * u * u),\n h / (u * u * u * u),\n c != 0\n ), a !== null) {\n for (let g = 0; g < a.length; g++)\n a[g] *= u;\n return a;\n }\n return [];\n}\nfunction mt(r, s) {\n return s == 0 ? Math.abs(r) : Math.abs((r - s) / s);\n}\nfunction ve(r, s, e, t, n) {\n const i = tn(r, s, e, t, n);\n if (i !== null && i.length == 4) {\n let o = [];\n for (let l = 0; l < 2; l++) {\n const h = i[l * 2], a = i[l * 2 + 1];\n o = o.concat(ee(a, h, 1));\n }\n return o;\n }\n return null;\n}\nfunction tn(r, s, e, t, n) {\n function i(x, N, A, B) {\n const U = mt(x + A, r), T = mt(N + x * A + B, s), z = mt(N * A + x * B, e);\n return U + T + z;\n }\n function o(x, N, A, B) {\n return i(x, N, A, B) + mt(N * B, t);\n }\n const l = 9 * r * r - 24 * s, h = l >= 0 ? -2 * s / (3 * r + kt(Math.sqrt(l), r)) : -0.25 * r, a = r + 4 * h, u = s + 3 * h * (r + 2 * h), c = e + h * (2 * s + h * (3 * r + 4 * h)), g = t + h * (e + h * (s + h * (r + h)));\n let d = 0, w = 0;\n const p = 349e100;\n if (n) {\n const x = a / p, N = u / p, A = c / p, B = g / p;\n d = x * A - 4 / p * B - 1 / 3 * N * N, w = (x * A - 8 / p * B - 2 / 9 * N * N) * (1 / 3) * N - A * (A / p) - x * x * B;\n } else\n d = a * c - 4 * g - 1 / 3 * u * u, w = (a * c + 8 * g - 2 / 9 * u * u) * (1 / 3) * u - c * c - a * a * g;\n if (!isFinite(d) && isFinite(w))\n return null;\n let P = en(d, w);\n n && (P *= p);\n const f = r * 0.5, M = 1 / 6 * s + 0.5 * P, E = e - r * M, R = 2 / 3 * s - P - f * f, v = 0.5 * E / R, L = 2 * (t - M * M) / E, S = 0.5 * E / L;\n let k = 0, D = 0, m = 0;\n for (let x = 0; x < 3; x++) {\n const N = x == 1 ? S : R, A = x == 0 ? v : L, B = mt(N + f * f + 2 * M, s), U = mt(2 * (N * A + f * M), e), T = mt(N * A * A + M * M, t), z = B + U + T;\n (x == 0 || z < m) && (k = N, D = A, m = z);\n }\n const b = k, j = D;\n let y = 0, C = 0, F = 0, I = 0;\n if (b < 0) {\n const x = Math.sqrt(-b);\n if (y = f + x, C = M + x * j, F = f - x, I = M - x * j, Math.abs(I) < Math.abs(C) ? I = t / C : Math.abs(I) > Math.abs(C) && (C = t / I), Math.abs(y) != Math.abs(F)) {\n let N = null, A = null;\n if (Math.abs(y) < Math.abs(F)) {\n const U = (e - C * F) / I, T = (s - I - C) / F;\n N = [r - F, U, T], A = [F, F, F];\n } else {\n const U = (e - y * I) / C, T = (s - I - C) / y, z = r - y;\n N = [y, y, y], A = [z, U, T];\n }\n let B = 0;\n for (let U = 0; U < 3; U++) {\n const T = N[U], z = A[U];\n if (isFinite(T) && isFinite(z)) {\n const G = i(T, C, z, I);\n (U == 0 || G < B) && (y = T, F = z, B = G);\n }\n }\n }\n } else if (b == 0) {\n const x = t - M * M;\n y = f, C = M + Math.sqrt(-x), F = f, I = M - Math.sqrt(-x), Math.abs(C) > Math.abs(I) ? I = t / C : Math.abs(I) > Math.abs(C) && (C = t / I);\n } else\n return [];\n let O = o(y, C, F, I);\n for (let x = 0; x < 8 && O != 0; x++) {\n const N = C * I - t, A = C * F + y * I - e, B = C + y * F + I - s, U = y + F - r, T = y - F, z = C * C - C * (F * T + 2 * I) + I * (y * T + I);\n if (z == 0)\n break;\n const G = 1 / z, Q = I - C, Y = C * F - y * I, se = T * N + Q * A + Y * B - (C * Q + y * Y) * U, ne = (y * T + Q) * N - C * (T * A + Q * B + Y * U), ie = -T * N - Q * A - Y * B + (F * Y + I * Q) * U, re = -(F * T + Q) * N + I * (T * A + Q * B + Y * U), xt = y - G * se, At = C - G * ne, Vt = F - G * ie, Nt = I - G * re, $t = o(xt, At, Vt, Nt);\n if ($t < O)\n y = xt, C = At, F = Vt, I = Nt, O = $t;\n else\n break;\n }\n return [y, C, F, I];\n}\nfunction en(r, s) {\n const e = -0.3333333333333333 * r, t = 0.5 * s;\n let n, i = null;\n if ((Math.abs(e) >= 1e102 || Math.abs(t) >= 1e164) && (Math.abs(e) < Math.abs(t) ? i = 1 - e * (e / t) * (e / t) : i = Math.sign(e) * (t / e * (t / e) / e - 1)), i !== null && t == 0)\n r > 0 ? n = 0 : n = Math.sqrt(-r);\n else if (i !== null ? i < 0 : t * t < e * e * e) {\n const a = i !== null ? t / e / Math.sqrt(e) : t / Math.sqrt(e * e * e);\n n = -2 * Math.sqrt(e) * kt(Math.cos(Math.acos(Math.abs(a)) * (1 / 3)), a);\n } else {\n let a;\n i !== null ? Math.abs(e) < Math.abs(t) ? a = -t * (1 + Math.sqrt(i)) : a = -t - kt(Math.sqrt(Math.abs(e)) * e * Math.sqrt(i), t) : a = Math.cbrt(-t - kt(Math.sqrt(t * t - e * e * e), t));\n const u = a == 0 ? 0 : e / a;\n n = a + u;\n }\n let o = n, l = (o * o + r) * o + s;\n if (Math.abs(l) < 222045e-21 * Math.max(o * o * o, r * o, s))\n return o;\n for (let a = 0; a < 8; a++) {\n const u = 3 * o * o + r;\n if (u == 0)\n break;\n const c = o - l / u, g = (c * c + r) * c + s;\n if (g == 0)\n return c;\n if (Math.abs(g) >= Math.abs(l))\n break;\n o = c, l = g;\n }\n return o;\n}\nfunction kt(r, s) {\n const e = Math.abs(r);\n return s < 0 ? -e : e;\n}\nfunction sn(r, s = 1e-9) {\n if (r[r.length - 1] == 0)\n return sn(r.slice(0, -1), s);\n const e = new Hs([\n r.slice(0, -1).reverse().map((n) => -n / r[r.length - 1]),\n ...Array.from({ length: r.length - 2 }, (n, i) => {\n const o = new Array(r.length - 1).fill(0);\n return o[i] = 1, o;\n })\n ]), t = new Ks(e);\n return t.realEigenvalues.filter(\n (n, i) => Math.abs(t.imaginaryEigenvalues[i]) < s\n );\n}\nconst nn = (r, s, e) => [r[0] * (1 - e) + s[0] * e, r[1] * (1 - e) + s[1] * e];\nfunction rn(r) {\n const s = [];\n for (let e = 0; e < r.length - 1; e++)\n s.push([r[e], r[e + 1]]);\n return s;\n}\nfunction de(r, s) {\n const e = rn(r).map(([t, n]) => nn(t, n, s));\n return r.length === 2 ? [e] : [...de(e, s), e];\n}\nclass Et extends Ft {\n constructor(e, t, n, i) {\n super(e, t);\n q(this, \"segmentType\", \"CUBIC_BEZIER\");\n q(this, \"firstControlPoint\");\n q(this, \"lastControlPoint\");\n q(this, \"_boundingBox\", null);\n q(this, \"_polynomialCoefficients\", null);\n this.firstControlPoint = n, this.lastControlPoint = i;\n }\n get midPoint() {\n return this.paramPoint(0.5);\n }\n get boundingBox() {\n if (this._boundingBox === null) {\n const e = (t) => {\n const [n, i, o, l] = [\n this.firstPoint[t],\n this.firstControlPoint[t],\n this.lastControlPoint[t],\n this.lastPoint[t]\n ], h = -n + 3 * i - 3 * o + l, a = 2 * n - 4 * i + 2 * o, u = -n + i;\n return ee(u, a, h).filter(\n (c) => c >= -this.precision && c <= 1 + this.precision\n );\n };\n this._boundingBox = ce([\n this.firstPoint,\n ...e(0).map((t) => this.paramPoint(t)),\n ...e(1).map((t) => this.paramPoint(t)),\n this.lastPoint\n ]).grow(this.precision);\n }\n return this._boundingBox;\n }\n clone() {\n return new Et(\n this.firstPoint,\n this.lastPoint,\n this.firstControlPoint,\n this.lastControlPoint\n );\n }\n reverse() {\n return new Et(\n this.lastPoint,\n this.firstPoint,\n this.lastControlPoint,\n this.firstControlPoint\n );\n }\n isSame(e) {\n return e.segmentType !== \"CUBIC_BEZIER\" ? !1 : W(this.firstPoint, e.firstPoint) && W(this.lastPoint, e.lastPoint) && W(this.firstControlPoint, e.firstControlPoint) && W(this.lastControlPoint, e.lastControlPoint);\n }\n distanceFrom(e) {\n const n = Ce((i) => Rt(this.paramPoint(i), e), this.precision);\n return n.argMin < -this.precision || n.argMin > 1 + this.precision ? Math.min(\n J(this.firstPoint, e),\n J(this.lastPoint, e)\n ) : Math.sqrt(n.fMin);\n }\n isOnSegment(e) {\n if (!this.boundingBox.contains(e))\n return !1;\n try {\n const t = this.pointToParam(e);\n return t >= -this.precision && t <= 1 + this.precision;\n } catch {\n return !1;\n }\n }\n gradientAt(e) {\n const t = 1 - e, n = t * t, i = e * e, o = 3 * n, l = 6 * t * e, h = 3 * i, a = X(this.firstControlPoint, this.firstPoint), u = X(this.lastControlPoint, this.firstControlPoint), c = X(this.lastPoint, this.lastControlPoint);\n return [\n o * a[0] + l * u[0] + h * c[0],\n o * a[1] + l * u[1] + h * c[1]\n ];\n }\n tangentAt(e) {\n const t = this.pointToParam(e);\n return H(this.gradientAt(t));\n }\n get tangentAtFirstPoint() {\n return H(X(this.firstControlPoint, this.firstPoint));\n }\n get tangentAtLastPoint() {\n return H(X(this.lastControlPoint, this.lastPoint));\n }\n normalAt(e) {\n const t = this.tangentAt(e);\n return rt(t);\n }\n splitAtParameters(e, t = null) {\n const n = [...e];\n n.sort((o, l) => o - l);\n let i = {\n originalParam: 0,\n param: 0,\n p0: this.firstPoint,\n p1: this.firstControlPoint,\n p2: this.lastControlPoint\n };\n return n.flatMap((o, l) => {\n if (o - i.originalParam < this.precision)\n return [];\n let h = !1;\n o > 1 - this.precision && (h = !0);\n const a = (o - i.originalParam) / (1 - i.originalParam), u = de(\n [\n i.p0,\n i.p1,\n i.p2,\n this.lastPoint\n ],\n h ? 1 : a\n ), c = h ? this.lastPoint : (t == null ? void 0 : t.get(o)) ?? u[0][0], g = u[1][0], d = u[2][0], w = u[1][1], p = u[2][2], P = new Et(\n i.p0,\n c,\n d,\n g\n );\n return i = {\n param: a,\n originalParam: o,\n p0: c,\n p1: w,\n p2: p\n }, l === n.length - 1 && !h ? [\n P,\n new Et(\n i.p0,\n this.lastPoint,\n i.p1,\n i.p2\n )\n ] : P;\n });\n }\n splitAt(e) {\n let t;\n if (Array.isArray(e) && e.length === 0)\n return [this];\n Array.isArray(e[0]) ? t = e : t = [e];\n const n = t.map((o) => this.pointToParam(o)), i = new Map(\n Jt([n, t])\n );\n return this.splitAtParameters(n, i);\n }\n transform(e) {\n return new Et(\n e.transform(this.firstPoint),\n e.transform(this.lastPoint),\n e.transform(this.firstControlPoint),\n e.transform(this.lastControlPoint)\n );\n }\n paramPoint(e) {\n const t = 1 - e, n = t * t, i = e * e, o = n * t, l = 3 * n * e, h = 3 * t * i, a = i * e;\n return [\n o * this.firstPoint[0] + l * this.firstControlPoint[0] + h * this.lastControlPoint[0] + a * this.lastPoint[0],\n o * this.firstPoint[1] + l * this.firstControlPoint[1] + h * this.lastControlPoint[1] + a * this.lastPoint[1]\n ];\n }\n get polynomialCoefficients() {\n if (this._polynomialCoefficients === null) {\n const e = (t) => {\n const n = this.firstPoint[t], i = this.firstControlPoint[t], o = this.lastControlPoint[t], l = this.lastPoint[t], h = -n + 3 * i - 3 * o + l, a = 3 * n - 6 * i + 3 * o, u = -3 * n + 3 * i;\n return [n, u, a, h];\n };\n this._polynomialCoefficients = [e(0), e(1)];\n }\n return this._polynomialCoefficients;\n }\n paramsAtY(e) {\n const [t, n, i, o] = this.polynomialCoefficients[1];\n return ze(t - e, n, i, o).filter(\n (l) => l >= -this.precision && l <= 1 + this.precision\n );\n }\n pointToParam(e) {\n const t = this.paramsAtY(e[1]);\n if (t.length === 0)\n throw new Error(\"Point is not on the curve\");\n const n = (o) => Math.abs(this.paramPoint(o)[0] - e[0]) <= this.precision, i = t.find(n);\n if (i === void 0)\n throw new Error(\"Point is not on the curve\");\n return i;\n }\n}\nclass jt extends Ft {\n constructor(e, t, n, i, o, l, h = !1, {\n ignoreChecks: a = !1,\n angleUnits: u = \"deg\"\n } = {}) {\n super(e, t);\n q(this, \"segmentType\", \"ELLIPSE_ARC\");\n // I would need to do some more work to improve the precision that I can have\n // on an ellipse with intersection algorithms\n q(this, \"precision\", 1e-6);\n q(this, \"majorRadius\");\n q(this, \"minorRadius\");\n q(this, \"center\");\n q(this, \"tiltAngle\");\n q(this, \"clockwise\");\n q(this, \"_coefficients\", null);\n q(this, \"_boundingBox\");\n q(this, \"_linearExentricity\");\n q(this, \"_exentricity\");\n q(this, \"_focals\");\n q(this, \"_ellipseReferenceFrameTransform\");\n q(this, \"_reverseEllipseReferenceFrameTransform\");\n q(this, \"_rotateFromEllipseReferenceFrame\");\n q(this, \"_firstAngle\");\n q(this, \"_lastAngle\");\n q(this, \"_deltaAngle\");\n this.center = n;\n const c = i >= o;\n this.majorRadius = c ? i : o, this.minorRadius = c ? o : i;\n const g = u === \"deg\" ? l * fe : l;\n if (this.tiltAngle = gt(\n c ? g : g + Math.PI / 2\n ), this.clockwise = h, !a) {\n if (W(e, t))\n throw new Error(\"Invalid arc, cannot be a full circle\");\n if (!this.isPointOnEllipse(e))\n throw new Error(\n `First point ${Z(\n e\n )} not on the ellipse defined by ${this.info}`\n );\n if (!this.isPointOnEllipse(t))\n throw new Error(\n `Last point ${Z(t)} not on the ellipse defined by ${this.info}`\n );\n if (Math.abs(this.majorRadius - this.minorRadius) < this.precision)\n throw new Error(\n \"Both radii should be different, create an arc instead\"\n );\n }\n }\n get coefficients() {\n if (this._coefficients === null) {\n const [e, t] = this.center, n = this.majorRadius * this.majorRadius, i = this.minorRadius * this.minorRadius, o = Math.cos(this.tiltAngle), l = Math.sin(this.tiltAngle), h = n * l * l + i * o * o, a = 2 * (i - n) * l * o, u = n * o * o + i * l * l;\n this._coefficients = {\n x2: h,\n xy: a,\n y2: u,\n x: -2 * h * e - a * t,\n y: -2 * u * t - a * e,\n c: h * e * e + a * e * t + u * t * t - n * i\n };\n }\n return this._coefficients;\n }\n get info() {\n return `ELLIPSE_ARC(${Z(this.firstPoint)}, ${Z(\n this.lastPoint\n )}, ${Z(this.center)}, ${this.majorRadius}, ${this.minorRadius}, ${this.tiltAngle * Ue}, ${this.clockwise ? \"CW\" : \"CCW\"})`;\n }\n reverse() {\n return new jt(\n this.lastPoint,\n this.firstPoint,\n this.center,\n this.majorRadius,\n this.minorRadius,\n this.tiltAngle,\n !this.clockwise,\n { ignoreChecks: !0, angleUnits: \"rad\" }\n );\n }\n clone() {\n return new jt(\n this.firstPoint,\n this.lastPoint,\n this.center,\n this.majorRadius,\n this.minorRadius,\n this.tiltAngle,\n this.clockwise,\n { ignoreChecks: !0, angleUnits: \"rad\" }\n );\n }\n computeEllipseExtrema() {\n const e = Math.tan(this.tiltAngle), t = this.minorRadius / this.majorRadius, n = -Math.atan(t * e), i = Math.atan(t / e);\n return [n, Math.PI + n, i, Math.PI + i].map((l) => this.thetaToParam(l)).filter((l) => this.isValidParameter(l)).map((l) => this.paramPoint(l));\n }\n get boundingBox() {\n if (this._boundingBox === void 0) {\n const e = this.computeEllipseExtrema(), t = [\n this.firstPoint,\n this.lastPoint,\n ...e\n ];\n this._boundingBox = ce(t).grow(this.precision);\n }\n return this._boundingBox;\n }\n get linearExentricity() {\n return this._linearExentricity === void 0 && (this._linearExentricity = Math.sqrt(\n this.majorRadius * this.majorRadius - this.minorRadius * this.minorRadius\n )), this._linearExentricity;\n }\n get exentricity() {\n return this._exentricity === void 0 && (this._exentricity = this.linearExentricity / this.majorRadius), this._exentricity;\n }\n get focals() {\n if (this._focals === void 0) {\n const e = this.majorAxis;\n this._focals = [\n ut(this.center, wt(e, this.linearExentricity)),\n ut(this.center, wt(e, -this.linearExentricity))\n ];\n }\n return this._focals;\n }\n get majorAxis() {\n return Tt(1, this.tiltAngle);\n }\n paramPoint(e) {\n const t = this.firstAngle + e * this.deltaAngle * (this.clockwise ? -1 : 1);\n return this.reverseEllipseReferenceFrameTransform.transform([\n this.majorRadius * Math.cos(t),\n this.minorRadius * Math.sin(t)\n ]);\n }\n pointToParam(e) {\n if (!this.isPointOnEllipse(e))\n throw new Error(\n `Point ${Z(e)} not on the ellipse defined by ${this.repr}`\n );\n const t = this.thetaToParam(this.pointTheta(e));\n if (!this.isValidParameter(t))\n throw new Error(\n `Point ${Z(e)} is not on segment ${this.repr}`\n );\n return t;\n }\n get midPoint() {\n return this.paramPoint(0.5);\n }\n isValidParameter(e) {\n return 1 - e >= -this.precision && e >= -this.precision;\n }\n isSame(e) {\n return W(this.center, e.center) && Math.abs(this.majorRadius - e.majorRadius) < this.precision && Math.abs(this.minorRadius - e.minorRadius) < this.precision && (Math.abs(this.tiltAngle - e.tiltAngle) < this.precision || Math.abs(Math.abs(this.tiltAngle - e.tiltAngle) - Math.PI) < this.precision) && (W(this.firstPoint, e.firstPoint) && this.clockwise === e.clockwise || W(this.firstPoint, e.lastPoint) && this.clockwise !== e.clockwise);\n }\n pointTheta(e) {\n const t = this.ellipseReferenceFrameTransform.transform(e), n = Math.atan2(\n t[1] / this.minorRadius,\n t[0] / this.majorRadius\n );\n return gt(n);\n }\n thetaToParam(e) {\n return Xt(this.firstAngle, gt(e), this.clockwise) / this.deltaAngle;\n }\n isPointOnEllipse(e) {\n const [t, n] = this.focals, i = J(e, t), o = J(e, n);\n return Math.abs(2 * this.majorRadius - i - o) < this.precision;\n }\n isOnSegment(e) {\n return this.isPointOnEllipse(e) ? this.isValidParameter(this.thetaToParam(this.pointTheta(e))) : !1;\n }\n distanceFrom(e) {\n let t;\n if (W(e, this.center) ? t = ut(\n this.center,\n wt(rt(this.majorAxis), this.minorRadius)\n ) : t = this.reverseEllipseReferenceFrameTransform.transform(\n ln(\n this.majorRadius,\n this.minorRadius,\n this.ellipseReferenceFrameTransform.transform(e)\n )\n ), this.isValidParameter(this.thetaToParam(this.pointTheta(e))))\n return J(e, t);\n if (Qe(e, this.majorAxis, this.center)) {\n const n = gt(\n 2 * Math.PI - this.pointTheta(e)\n ), i = this.thetaToParam(n);\n if (this.isValidParameter(i))\n return J(e, this.paramPoint(i));\n }\n return Math.min(\n J(e, this.firstPoint),\n J(e, this.lastPoint)\n );\n }\n get ellipseReferenceFrameTransform() {\n return this._ellipseReferenceFrameTransform === void 0 && (this._ellipseReferenceFrameTransform = new et().rotate(-this.tiltAngle).translate(-this.center[0], -this.center[1])), this._ellipseReferenceFrameTransform;\n }\n get reverseEllipseReferenceFrameTransform() {\n return this._reverseEllipseReferenceFrameTransform === void 0 && (this._reverseEllipseReferenceFrameTransform = new et().translate(this.center[0], this.center[1]).rotate(this.tiltAngle)), this._reverseEllipseReferenceFrameTransform;\n }\n get rotateFromEllipseReferenceFrame() {\n return this._rotateFromEllipseReferenceFrame === void 0 && (this._rotateFromEllipseReferenceFrame = new et().rotate(\n this.tiltAngle\n )), this._rotateFromEllipseReferenceFrame;\n }\n get firstAngle() {\n return this._firstAngle === void 0 && (this._firstAngle = this.pointTheta(this.firstPoint)), this._firstAngle;\n }\n get lastAngle() {\n return this._lastAngle === void 0 && (this._lastAngle = this.pointTheta(this.lastPoint)), this._lastAngle;\n }\n get deltaAngle() {\n return this._deltaAngle === void 0 && (this._deltaAngle = Xt(\n this.firstAngle,\n this.lastAngle,\n this.clockwise\n )), this._deltaAngle;\n }\n normalAt(e) {\n const t = this.tangentAt(e);\n return this.clockwise ? rt(t) : Wt(t);\n }\n gradientAt(e) {\n const t = this.firstAngle + e * this.deltaAngle * (this.clockwise ? -1 : 1), n = -this.majorRadius * this.deltaAngle * Math.sin(t), i = this.minorRadius * this.deltaAngle * Math.cos(t), o = this.clockwise ? [-n, -i] : [n, i];\n return this.rotateFromEllipseReferenceFrame.transform(o);\n }\n tangentAt(e) {\n const t = this.pointTheta(e), n = -this.majorRadius * Math.sin(t), i = this.minorRadius * Math.cos(t), o = this.clockwise ? [-n, -i] : [n, i];\n return H(this.rotateFromEllipseReferenceFrame.transform(o));\n }\n get tangentAtFirstPoint() {\n const e = -this.majorRadius * Math.sin(this.firstAngle), t = this.minorRadius * Math.cos(this.firstAngle), n = this.clockwise ? [-e, -t] : [e, t];\n return H(this.rotateFromEllipseReferenceFrame.transform(n));\n }\n get tangentAtLastPoint() {\n const e = -this.majorRadius * Math.sin(this.lastAngle), t = this.minorRadius * Math.cos(this.lastAngle), n = this.clockwise ? [-e, -t] : [e, t];\n return H(this.rotateFromEllipseReferenceFrame.transform(n));\n }\n transform(e) {\n const t = e.transformAngle(this.tiltAngle), n = e.scaleFactor();\n return new jt(\n e.transform(this.firstPoint),\n e.transform(this.lastPoint),\n e.transform(this.center),\n this.majorRadius * n,\n this.minorRadius * n,\n t,\n e.keepsOrientation() ? this.clockwise : !this.clockwise,\n { angleUnits: \"rad\" }\n );\n }\n splitAt(e) {\n let t;\n if (Array.isArray(e) && e.length === 0)\n return [this];\n Array.isArray(e[0]) ? t = e : t = [e];\n const i = [0, 1, ...t.map((h) => this.pointToParam(h))], o = new Map(\n Jt([i, [this.firstPoint, this.lastPoint, ...t]])\n );\n i.sort((h, a) => h - a);\n let l = null;\n return i.flatMap((h, a) => {\n if (a === i.length - 1) return [];\n const u = i[a + 1];\n if (u - h < this.precision)\n return l === null && (l = h), [];\n const c = l === null ? h : l, g = new jt(\n o.get(c) || this.paramPoint(c),\n o.get(u) || this.paramPoint(u),\n this.center,\n this.majorRadius,\n this.minorRadius,\n this.tiltAngle,\n this.clockwise,\n { angleUnits: \"rad\" }\n );\n return l = null, g;\n });\n }\n}\nfunction wn(r, s, e, t, n, i, o) {\n const { center: l, rx: h, ry: a } = on(\n r,\n s,\n e,\n t,\n n * fe,\n !i,\n o\n );\n return Math.abs(h - a) < 1e-9 ? new at(r, s, l, o) : new jt(r, s, l, h, a, n, o);\n}\nfunction on([r, s], [e, t], n, i, o, l, h) {\n if (n < 0 && (n = -n), i < 0 && (i = -i), n == 0 || i == 0)\n throw Error(\"rx and ry can not be 0\");\n const a = Math.sin(o), u = Math.cos(o), c = (r - e) / 2, g = (s - t) / 2, d = (r + e) / 2, w = (s + t) / 2, p = u * c + a * g, P = u * g - a * c, f = p * p / (n * n) + P * P / (i * i);\n f > 1 && (n = n * Math.sqrt(f), i = i * Math.sqrt(f));\n const M = n * i, E = n * P, R = i * p, v = E * E + R * R;\n if (!v)\n throw Error(\"start point can not be same as end point\");\n let L = Math.sqrt(Math.abs((M * M - v) / v));\n l == h && (L = -L);\n const S = L * E / i, k = -L * R / n, D = u * S - a * k + d, m = a * S + u * k + w;\n return {\n center: [D, m],\n rx: n,\n ry: i\n };\n}\nfunction ln(r, s, e) {\n const t = Math.abs(e[0]), n = Math.abs(e[1]);\n let i = 0.707, o = 0.707;\n const l = r, h = s;\n for (let a = 0; a < 3; a++) {\n const u = l * i, c = h * o, g = (l * l - h * h) * i ** 3 / l, d = (h * h - l * l) * o ** 3 / h, w = u - g, p = c - d, P = t - g, f = n - d, M = Math.hypot(w, p), E = Math.hypot(P, f);\n i = Math.min(1, Math.max(0, (P * M / E + g) / l)), o = Math.min(1, Math.max(0, (f * M / E + d) / h));\n const R = Math.hypot(i, o);\n i /= R, o /= R;\n }\n return [l * i * Math.sign(e[0]), h * o * Math.sign(e[1])];\n}\nclass _t extends Ft {\n constructor(e, t, n) {\n super(e, t);\n q(this, \"segmentType\", \"QUADRATIC_BEZIER\");\n q(this, \"controlPoint\");\n q(this, \"_boundingBox\", null);\n q(this, \"_polynomialCoefficients\", null);\n this.controlPoint = n;\n }\n get midPoint() {\n return this.paramPoint(0.5);\n }\n get boundingBox() {\n if (this._boundingBox === null) {\n const e = (t) => {\n const [n, i, o] = [\n this.firstPoint[t],\n this.controlPoint[t],\n this.lastPoint[t]\n ], l = n - 2 * i + o;\n if (!l)\n return [];\n const h = (n - i) / l;\n return h >= -this.precision && h <= 1 + this.precision ? [h] : [];\n };\n this._boundingBox = ce([\n this.firstPoint,\n // There is either one or zero extrema in each direction\n ...e(0).map((t) => this.paramPoint(t)),\n ...e(1).map((t) => this.paramPoint(t)),\n this.lastPoint\n ]).grow(this.precision);\n }\n return this._boundingBox;\n }\n clone() {\n return new _t(\n this.firstPoint,\n this.lastPoint,\n this.controlPoint\n );\n }\n reverse() {\n return new _t(\n this.lastPoint,\n this.firstPoint,\n this.controlPoint\n );\n }\n isSame(e) {\n return e.segmentType !== \"QUADRATIC_BEZIER\" ? !1 : W(this.firstPoint, e.firstPoint) && W(this.lastPoint, e.lastPoint) && W(this.controlPoint, e.controlPoint);\n }\n distanceFrom(e) {\n const n = Ce((i) => Rt(this.paramPoint(i), e), this.precision);\n return n.argMin < -this.precision || n.argMin > 1 + this.precision ? Math.min(\n J(this.firstPoint, e),\n J(this.lastPoint, e)\n ) : Math.sqrt(n.fMin);\n }\n isOnSegment(e) {\n if (!this.boundingBox.contains(e))\n return !1;\n try {\n const t = this.pointToParam(e);\n return t >= -this.precision && t <= 1 + this.precision;\n } catch {\n return !1;\n }\n }\n gradientAt(e) {\n const t = (n) => {\n const i = this.firstPoint[n], o = this.controlPoint[n], l = this.lastPoint[n];\n return 2 * (e * (i - 2 * o + l) - i + o);\n };\n return [t(0), t(1)];\n }\n tangentAt(e) {\n const t = this.pointToParam(e);\n return H(this.gradientAt(t));\n }\n get tangentAtFirstPoint() {\n return H(X(this.controlPoint, this.firstPoint));\n }\n get tangentAtLastPoint() {\n return H(X(this.controlPoint, this.lastPoint));\n }\n normalAt(e) {\n const t = this.tangentAt(e);\n return rt(t);\n }\n splitAtParameters(e, t = null) {\n const n = [...e];\n n.sort((o, l) => o - l);\n let i = {\n originalParam: 0,\n param: 0,\n p0: this.firstPoint,\n p1: this.controlPoint\n };\n return n.flatMap((o, l) => {\n if (o - i.originalParam < this.precision)\n return [];\n let h = !1;\n o > 1 - this.precision && (h = !0);\n const a = (o - i.originalParam) / (1 - i.originalParam), u = de(\n [i.p0, i.p1, this.lastPoint],\n h ? 1 : a\n ), c = h ? this.lastPoint : (t == null ? void 0 : t.get(o)) ?? u[0][0], g = u[1][0], d = u[1][1], w = new _t(\n i.p0,\n c,\n g\n );\n return i = {\n param: a,\n originalParam: o,\n p0: c,\n p1: d\n }, l === n.length - 1 && !h ? [\n w,\n new _t(\n i.p0,\n this.lastPoint,\n i.p1\n )\n ] : w;\n });\n }\n splitAt(e) {\n let t;\n if (Array.isArray(e) && e.length === 0)\n return [this];\n Array.isArray(e[0]) ? t = e : t = [e];\n const n = t.map((o) => this.pointToParam(o)), i = new Map(\n Jt([n, t])\n );\n return this.splitAtParameters(n, i);\n }\n transform(e) {\n return new _t(\n e.transform(this.firstPoint),\n e.transform(this.lastPoint),\n e.transform(this.controlPoint)\n );\n }\n paramPoint(e) {\n const t = 1 - e, n = t * t, i = 2 * t * e, o = e * e;\n return [\n n * this.firstPoint[0] + i * this.controlPoint[0] + o * this.lastPoint[0],\n n * this.firstPoint[1] + i * this.controlPoint[1] + o * this.lastPoint[1]\n ];\n }\n get polynomialCoefficients() {\n if (this._polynomialCoefficients === null) {\n const e = (t) => {\n const n = this.firstPoint[t], i = this.controlPoint[t], o = this.lastPoint[t], l = n - 2 * i + o, h = 2 * (i - n);\n return [n, h, l];\n };\n this._polynomialCoefficients = [e(0), e(1)];\n }\n return this._polynomialCoefficients;\n }\n paramsAtY(e) {\n const [t, n, i] = this.polynomialCoefficients[1];\n return ee(t - e, n, i).filter(\n (o) => o >= -this.precision && o <= 1 + this.precision\n );\n }\n pointToParam(e) {\n const t = this.paramsAtY(e[1]);\n if (t.length === 0)\n throw new Error(\"Point is not on the curve!\");\n const n = (o) => Math.abs(this.paramPoint(o)[0] - e[0]) <= this.precision, i = t.find(n);\n if (i === void 0)\n throw new Error(\"Point is not on the curve\");\n return i;\n }\n}\nexport {\n at as A,\n ft as B,\n Et as C,\n fe as D,\n jt as E,\n Ie as F,\n Z as G,\n lt as L,\n _t as Q,\n Ue as R,\n et as T,\n ut as a,\n Wt as b,\n St as c,\n W as d,\n cn as e,\n J as f,\n wn as g,\n We as h,\n X as i,\n Tt as j,\n Ye as k,\n me as l,\n Rt as m,\n H as n,\n Pe as o,\n rt as p,\n sn as q,\n Te as r,\n wt as s,\n fn as t,\n gn as u,\n It as v,\n an as w,\n un as x,\n Ze as y,\n Jt as z\n};\n//# sourceMappingURL=QuadraticBezier-BzVqiExF.js.map\n","var tn = Object.defineProperty;\nvar nn = (t, n, e) => n in t ? tn(t, n, { enumerable: !0, configurable: !0, writable: !0, value: e }) : t[n] = e;\nvar C = (t, n, e) => nn(t, typeof n != \"symbol\" ? n + \"\" : n, e);\nimport { i as k, o as en, f as Ot, a as q, s as V, n as sn, p as Tt, r as U, A as S, d as g, q as Lt, E as M, T as on, u as rn, Q as A, v as H, C as I, c as ln, w as cn, L as y, x as zt, y as lt, z as N, F as un, l as an, m as fn, G as dt, B as hn } from \"./QuadraticBezier-BzVqiExF.js\";\nfunction pn(t, n) {\n const e = k(n, t.firstPoint), s = en(e, t.V) / t.squareLength;\n return t.paramPoint(s);\n}\nfunction J(t, n, e) {\n const s = e || t.precision, i = pn(t, n.center), o = Ot(i, n.center);\n if (o > n.radius + s) return [];\n if (Math.abs(o - n.radius) < s) {\n const u = i;\n return t.isOnSegment(u) && n.isOnSegment(u) ? [u] : [];\n }\n const r = [], l = Math.sqrt(\n n.radius * n.radius - o * o\n ), c = t.tangentAtFirstPoint, a = q(i, V(c, l));\n t.isOnSegment(a) && n.isOnSegment(a) && r.push(a);\n const f = q(i, V(c, -l));\n return t.isOnSegment(f) && n.isOnSegment(f) && r.push(f), r;\n}\nconst dn = (t) => {\n const { firstPoint: n, lastPoint: e, center: s, clockwise: i } = t;\n return new S(e, n, s, i, {\n ignoreChecks: !0\n });\n}, mn = (t, n) => {\n if (t.isSame(n))\n return [t];\n const e = U(\n [\n n.isOnSegment(t.firstPoint) ? t.firstPoint : null,\n n.isOnSegment(t.lastPoint) ? t.lastPoint : null,\n t.isOnSegment(n.firstPoint) ? n.firstPoint : null,\n t.isOnSegment(n.lastPoint) ? n.lastPoint : null\n ].filter((s) => s !== null)\n // We sort by the param value of the first arc. This means that the points\n // will be sorted with the same orientation than arc1\n ).sort((s, i) => t.pointToParam(s) - t.pointToParam(i));\n if (e.length === 0) return [];\n if (e.length === 1) return [];\n if (e.length === 2)\n return t.isSame(dn(n)) ? [] : [new S(e[0], e[1], t.center, t.clockwise)];\n if (e.length === 3) {\n const s = g(e[0], n.lastPoint) || g(e[0], n.firstPoint) ? 1 : 0;\n return [\n new S(\n e[0 + s],\n e[1 + s],\n t.center,\n t.clockwise\n )\n ];\n } else if (e.length === 4)\n return [\n new S(e[0], e[1], t.center, t.clockwise),\n new S(e[2], e[3], t.center, t.clockwise)\n ];\n throw new Error(\"Bug in the arc arc overlap algorithm\");\n};\nfunction qt(t, n, e = !1, s) {\n const i = s || t.precision, o = Ot(t.center, n.center), r = t.radius + n.radius;\n if (o > r + i)\n return [];\n const l = Math.abs(t.radius - n.radius);\n if (o < l - i)\n return [];\n if (o < i)\n return l > i ? [] : e ? mn(t, n) : [];\n const c = sn(k(n.center, t.center)), a = o > r - i;\n if (\n // circles are outside each other\n a || // circles are inside each other\n Math.abs(o - l) < i\n ) {\n const w = a || t.radius > n.radius ? 1 : -1, x = q(\n t.center,\n V(c, w * t.radius)\n );\n return t.isOnSegment(x) && n.isOnSegment(x) ? [x] : [];\n }\n const f = t.radius * t.radius / (2 * o) - n.radius * n.radius / (2 * o) + o / 2, u = q(\n t.center,\n V(c, f)\n ), h = Math.sqrt(\n t.radius * t.radius - f * f\n ), p = Tt(c), d = q(u, V(p, h)), m = q(u, V(p, -h)), P = [];\n return t.isOnSegment(d) && n.isOnSegment(d) && P.push(d), t.isOnSegment(m) && n.isOnSegment(m) && P.push(m), P;\n}\nfunction et(t, n, e = 1e-9) {\n const s = t.transform(n.ellipseReferenceFrameTransform), i = s.slope, o = s.yIntercept, r = n.majorRadius * n.majorRadius, l = n.minorRadius * n.minorRadius, c = n.majorRadius * n.minorRadius, a = s.slope * s.slope, f = s.yIntercept * s.yIntercept, u = (w) => w.map(\n (x) => n.reverseEllipseReferenceFrameTransform.transform(x)\n ).filter((x) => t.isOnSegment(x) && n.isOnSegment(x));\n if (!Number.isFinite(i)) {\n const w = s.firstPoint[0];\n if (Math.abs(w) - n.majorRadius > e) return [];\n if (Math.abs(Math.abs(w) - n.majorRadius) < e)\n return u([[w, 0]]);\n const x = n.minorRadius * Math.sqrt(1 - w * w / r), F = [w, x], b = [w, -x];\n return u([F, b]);\n }\n const h = r * a + l - f;\n if (h < -e)\n return [];\n const p = r * a + l;\n if (Math.abs(h) < e) {\n const w = -(r * i * o) / p, x = l * o / p;\n return u([[w, x]]);\n }\n const d = Math.sqrt(h), m = [\n -(r * i * o + c * d) / p,\n (l * o - c * i * d) / p\n ], P = [\n -(r * i * o - c * d) / p,\n (l * o + c * i * d) / p\n ];\n return u([m, P]);\n}\nfunction Dt(t, n) {\n const e = Math.max(t.precision, n.precision), s = t.coefficients, i = s.x2, o = s.xy, r = s.y2, l = s.x, c = s.y, a = s.c, f = n.coefficients, u = f.x2, h = f.xy, p = f.y2, d = f.x, m = f.y, P = f.c, w = {\n z0: a * i * d * d + i * i * P * P - l * i * d * P + u * u * a * a - 2 * i * P * u * a - l * d * u * a + u * l * l * P,\n z1: m * l * l * u - P * d * i * o - 2 * i * P * u * c - a * u * h * l + 2 * d * h * i * a + 2 * m * P * i * i + d * d * i * c - m * d * i * l - 2 * i * m * u * a - a * u * d * o + 2 * a * c * u * u - P * h * i * l - c * u * d * l + 2 * P * o * u * l,\n z2: m * m * i * i + 2 * p * P * i * i - c * u * d * o + P * u * o * o - c * u * h * l - P * h * i * o - 2 * i * m * u * c + 2 * d * h * i * c - p * d * i * l - 2 * i * p * u * a + h * h * i * a + 2 * m * o * u * l + c * c * u * u - r * u * d * l - m * h * i * l + 2 * a * r * u * u - a * u * h * o + p * l * l * u + d * d * i * r - m * d * i * o - 2 * i * P * u * r,\n z3: -2 * i * u * r * m + m * u * o * o + 2 * p * o * u * l - r * u * h * l + h * h * i * c - m * h * i * o - 2 * i * p * u * c - c * u * h * o - p * h * i * l + 2 * m * p * i * i + 2 * c * r * u * u - r * u * d * o + 2 * d * h * i * r - p * d * i * o,\n z4: i * i * p * p - 2 * i * p * u * r + u * u * r * r - o * i * h * p - o * h * u * r + o * o * u * p + r * i * h * h\n }, F = Lt(\n [w.z0, w.z1, w.z2, w.z3, w.z4],\n e\n ).flatMap((b) => {\n const R = i * h * b + i * d - u * o * b - u * l;\n if (R)\n return [[-(i * P + i * p * b * b - u * r * b * b + i * m * b - u * c * b - u * a) / R, b]];\n const T = o * b + l, L = -T / (2 * i), j = r * b * b + c * b + a, z = T * T / (4 * i * i) - j / i;\n if (Math.abs(z) < e)\n return [[L, b]];\n if (z > 0) {\n const $ = Math.sqrt(z);\n return [[L + $, b], [L - $, b]];\n }\n return [];\n });\n return U(F, e);\n}\nfunction mt(t, n) {\n return Dt(t, n).filter((s) => t.isOnSegment(s) && n.isOnSegment(s));\n}\nconst gn = (t) => {\n const {\n firstPoint: n,\n lastPoint: e,\n center: s,\n majorRadius: i,\n minorRadius: o,\n tiltAngle: r,\n clockwise: l\n } = t;\n return new M(\n e,\n n,\n s,\n i,\n o,\n r,\n l,\n {\n ignoreChecks: !0,\n angleUnits: \"rad\"\n }\n );\n}, Pn = (t, n) => {\n if (t.isSame(n))\n return [t];\n const e = (i, o) => new M(\n i,\n o,\n t.center,\n t.majorRadius,\n t.minorRadius,\n t.tiltAngle,\n t.clockwise,\n { ignoreChecks: !0, angleUnits: \"rad\" }\n ), s = U(\n [\n n.isOnSegment(t.firstPoint) ? t.firstPoint : null,\n n.isOnSegment(t.lastPoint) ? t.lastPoint : null,\n t.isOnSegment(n.firstPoint) ? n.firstPoint : null,\n t.isOnSegment(n.lastPoint) ? n.lastPoint : null\n ].filter((i) => i !== null)\n // We sort by the param value of the first arc. This means that the points\n // will be sorted with the same orientation than arc1\n ).sort((i, o) => t.pointToParam(i) - t.pointToParam(o));\n if (s.length === 0) return [];\n if (s.length === 1) return [];\n if (s.length === 2)\n return t.isSame(gn(n)) ? [] : [e(s[0], s[1])];\n if (s.length === 3) {\n const i = g(s[0], n.lastPoint) || g(s[0], n.firstPoint) ? 1 : 0;\n return [e(s[0 + i], s[1 + i])];\n } else if (s.length === 4)\n return [e(s[0], s[1]), e(s[2], s[3])];\n throw new Error(\"Bug in the ellipse arc ellipse arc overlap algorithm\");\n};\nfunction wn(t, n, e = !1) {\n const s = Math.max(t.precision, n.precision);\n return g(t.center, n.center) && Math.abs(t.majorRadius - n.majorRadius) < s && Math.abs(t.minorRadius - n.minorRadius) < s && (Math.abs(t.tiltAngle - n.tiltAngle) < s || Math.abs(Math.abs(t.tiltAngle - n.tiltAngle) - Math.PI) < s) ? e ? Pn(t, n) : [] : Dt(t, n).filter((r) => t.isOnSegment(r) && n.isOnSegment(r));\n}\nfunction gt(t, n) {\n const [e, s] = t.firstPoint, [i, o] = t.lastPoint, r = new on().rotate(-Math.atan2(o - s, i - e)).translate(-e, -s), l = r.clone().inverse(), c = n.transform(r);\n return c.paramsAtY(0).map((a) => c.paramPoint(a)).map((a) => l.transform(a)).filter((a) => t.isOnSegment(a));\n}\nconst xn = (t, n = 1e-9) => {\n let e = t;\n return Math.abs(t) < n && (e = 0), e.toFixed(-Math.log10(n));\n};\nfunction Rt(t, n = 1e-9) {\n return Array.from(\n new Map(t.map((e) => [xn(e, n), e])).values()\n );\n}\nconst Sn = (t, n) => {\n const [[e, s, i, o], [r, l, c, a]] = n.polynomialCoefficients, f = t.coefficients, u = f.x2, h = f.xy, p = f.y2, d = f.x, m = f.y, P = f.c, w = e * e, x = s * s, F = i * i, b = o * o, R = r * r, T = l * l, L = c * c, j = a * a, z = P + d * e + u * w + m * r + h * e * r + p * R, $ = d * s + 2 * u * e * s + h * s * r + m * l + h * e * l + 2 * p * r * l, Qt = u * x + d * i + 2 * u * e * i + h * i * r + h * s * l + p * T + m * c + h * e * c + 2 * p * r * c, Wt = 2 * u * s * i + d * o + 2 * u * e * o + h * o * r + h * i * l + h * s * c + 2 * p * l * c + m * a + h * e * a + 2 * p * r * a, Jt = u * F + 2 * u * s * o + h * o * l + h * i * c + p * L + h * s * a + 2 * p * l * a, Kt = 2 * u * i * o + h * o * c + h * i * a + 2 * p * c * a, Zt = u * b + h * o * a + p * j;\n return [z, $, Qt, Wt, Jt, Kt, Zt];\n};\nfunction Pt(t, n) {\n const e = Math.max(t.precision, n.precision), s = Sn(t, n), i = Lt(s, e).filter((o) => o >= -n.precision && o <= 1 + n.precision);\n return Rt(i, e).map((o) => n.paramPoint(o)).filter((o) => t.isOnSegment(o));\n}\nconst yn = (t, n) => {\n const [[e, s, i], [o, r, l]] = n.polynomialCoefficients, c = t.coefficients, a = c.x2, f = c.xy, u = c.y2, h = c.x, p = c.y, d = c.c, m = e * e, P = s * s, w = i * i, x = o * o, F = r * r, b = l * l, R = a * m + f * e * o + u * x + h * e + p * o + d, T = 2 * a * e * s + f * e * r + f * s * o + 2 * u * o * r + h * s + p * r, L = 2 * a * e * i + a * P + f * e * l + f * s * r + f * i * o + 2 * u * o * l + u * F + h * i + p * l, j = 2 * a * s * i + f * s * l + f * i * r + 2 * u * r * l, z = a * w + f * i * l + u * b;\n return [R, T, L, j, z];\n};\nfunction wt(t, n) {\n const e = Math.max(t.precision, n.precision), s = yn(t, n), i = rn(...s).filter((o) => o >= -n.precision && o <= 1 + n.precision);\n return Rt(i, e).map((o) => n.paramPoint(o)).filter((o) => t.isOnSegment(o));\n}\nfunction E(t, { firstPoint: n, lastPoint: e }, s = 1e-9) {\n const i = k(e, n);\n return Math.abs(i[0]) < s ? i[1] > 0 ? n[0] - t[0] : t[0] - n[0] : Math.abs(i[1]) < s ? i[0] > 0 ? t[1] - n[1] : n[1] - t[1] : ln(i, k(t, n)) / cn(i);\n}\nclass ct {\n constructor(n, e, s, i) {\n this.firstPoint = n, this.lastPoint = e, this.negativeThickness = s, this.positiveThickness = i;\n }\n get width() {\n return this.positiveThickness - this.negativeThickness;\n }\n}\nconst bn = 3 / 4, Cn = 4 / 9;\nfunction Mn(t) {\n const n = E(t.firstControlPoint, t), e = E(t.lastControlPoint, t), s = n * e > 0 ? bn : Cn;\n return new ct(\n t.firstPoint,\n t.lastPoint,\n s * Math.min(0, n, e),\n s * Math.max(0, n, e)\n );\n}\nfunction An(t) {\n const n = E(t.controlPoint, t);\n return new ct(\n t.firstPoint,\n t.lastPoint,\n Math.min(0, n / 2),\n Math.max(0, n / 2)\n );\n}\nfunction In(t) {\n if (t instanceof I)\n return Mn(t);\n if (t instanceof A)\n return An(t);\n throw new Error(\"Not implemented\");\n}\nfunction En(t) {\n const n = t.paramPoint(0.5), e = Tt(k(n, t.firstPoint)), s = q(n, e), i = {\n firstPoint: n,\n lastPoint: s\n }, o = [\n E(t.firstPoint, i),\n E(t.lastPoint, i)\n ];\n return t instanceof I ? o.push(\n E(t.firstControlPoint, i),\n E(t.lastControlPoint, i)\n ) : t instanceof A && o.push(E(t.controlPoint, i)), new ct(\n n,\n s,\n Math.min(...o),\n Math.max(...o)\n );\n}\nfunction xt(t, n) {\n const e = [];\n for (let s = 1; s < t.length; s++) {\n const i = t[s];\n if (i[1] === n) {\n e.push(i[0]);\n continue;\n }\n const o = t[s - 1], r = n - o[1], l = n - i[1];\n if (r * l < 0) {\n e.push(\n o[0] + (n - o[1]) * (i[0] - o[0]) / (i[1] - o[1])\n );\n continue;\n }\n }\n return e;\n}\nclass Y {\n constructor(n, e) {\n this.from = n, this.to = e;\n }\n get size() {\n return this.from === \"start\" ? this.to === \"end\" ? 1 : this.to : this.to === \"end\" ? 1 - this.from : Math.abs(this.from - this.to);\n }\n clipCurve(n) {\n return this.from === \"start\" ? this.to === \"end\" ? n : n.splitAtParameters([this.to])[0] : this.to === \"end\" ? n.splitAtParameters([this.from])[1] : n.splitAtParameters([this.from, this.to])[1];\n }\n}\nfunction Fn(t, n) {\n if (t instanceof I)\n return new Bn([\n E(t.firstPoint, n),\n E(t.firstControlPoint, n),\n E(t.lastControlPoint, n),\n E(t.lastPoint, n)\n ]);\n if (t instanceof A)\n return new vn([\n E(t.firstPoint, n),\n E(t.controlPoint, n),\n E(t.lastPoint, n)\n ]);\n throw new Error(\"Not implemented\");\n}\nclass vn {\n constructor(n) {\n C(this, \"topHull\", []);\n C(this, \"bottomHull\", []);\n this.distances = n;\n const [e, s, i] = n, o = [0, e], r = [1 / 2, s], l = [1, i], c = i - e, a = e;\n s - (c * (1 / 2) + a) > 0 ? (this.topHull = [o, r, l], this.bottomHull = [o, l]) : (this.topHull = [o, l], this.bottomHull = [o, r, l]);\n }\n get startDistance() {\n return this.distances[0];\n }\n get endDistance() {\n return this.distances[2];\n }\n}\nclass Bn {\n constructor(n) {\n C(this, \"topHull\", []);\n C(this, \"bottomHull\", []);\n this.distances = n;\n const [e, s, i, o] = n, r = [0, e], l = [1 / 3, s], c = [2 / 3, i], a = [1, o], f = o - e, u = e, h = s - (f * (1 / 3) + u), p = i - (f * (2 / 3) + u);\n let d = null, m = null;\n if (h * p < 0)\n d = [r, l, a], m = [r, c, a];\n else {\n const w = h / p;\n w >= 2 ? (d = [r, l, a], m = [r, a]) : w <= 0.5 ? (d = [r, c, a], m = [r, a]) : (d = [r, l, c, a], m = [r, a]);\n }\n h < 0 && ([d, m] = [m, d]), this.topHull = d, this.bottomHull = m;\n }\n get startDistance() {\n return this.distances[0];\n }\n get endDistance() {\n return this.distances[3];\n }\n}\nfunction St(t, n) {\n const e = Fn(n, t), s = xt(\n e.topHull,\n t.negativeThickness\n ), i = xt(\n e.bottomHull,\n t.positiveThickness\n ), o = e.endDistance >= t.negativeThickness && e.endDistance <= t.positiveThickness;\n if (!s.length && !i.length)\n return o ? new Y(\"start\", \"end\") : null;\n if (s.length === 1 && i.length === 1)\n return new Y(s[0], i[0]);\n if (s.length === 2 && i.length === 2)\n throw new Error(\n \"Bug in the clipping algorithm, unexpected number of crossing points\"\n );\n const r = s.length ? s : i;\n return r.length === 2 ? new Y(r[0], r[1]) : o ? new Y(r[0], \"end\") : new Y(\"start\", r[0]);\n}\nfunction yt(t, n) {\n const e = In(t), s = St(e, n);\n if (!s)\n return null;\n const i = En(t), o = St(\n i,\n n\n );\n return o ? s.size > o.size ? o.clipCurve(n) : s.clipCurve(n) : null;\n}\nconst W = (t) => t instanceof A ? H(k(t.controlPoint, t.firstPoint)) + H(k(t.controlPoint, t.lastPoint)) : H(k(t.firstControlPoint, t.firstPoint)) + H(k(t.lastControlPoint, t.firstControlPoint)) + H(k(t.lastControlPoint, t.lastPoint));\nfunction D(t, n, e = 1e-9, { maxIterations: s = 100 } = {}) {\n const i = Math.max(e * e, Number.EPSILON * 10);\n let o = t, r = n, l = W(o), c = W(r);\n for (let a = 0; a < s; a++) {\n const f = l > i ? yt(r, o) : o;\n if (!f) return [];\n const u = W(f), h = c > i ? yt(f, r) : r;\n if (!h) return [];\n const p = W(h);\n if (u <= i && p <= i)\n return [\n f.boundingBox.intersection(h.boundingBox).center\n ];\n if (g(f.firstPoint, f.lastPoint) && h.isOnSegment(f.firstPoint))\n return [f.firstPoint];\n if (g(h.firstPoint, h.lastPoint) && f.isOnSegment(h.firstPoint))\n return [h.firstPoint];\n if (u > 0.8 * l && p > 0.8 * c)\n if (u / l > p / c) {\n const [d, m] = f.splitAtParameters([\n 0.5\n ]);\n return U(\n [\n ...D(d, h, e, {\n maxIterations: s - a\n }),\n ...D(m, h, e, {\n maxIterations: s - a\n })\n ],\n e\n );\n } else {\n const [d, m] = h.splitAtParameters([\n 0.5\n ]);\n return U(\n [\n ...D(f, d, e, {\n maxIterations: s - a\n }),\n ...D(f, m, e, {\n maxIterations: s - a\n })\n ],\n e\n );\n }\n o = f, r = h, l = u, c = p;\n }\n throw new Error(\"Bézier clip: Maximum number of iterations reached\");\n}\nfunction kn(t, n) {\n const e = [];\n if ([\n [t.firstPoint, n],\n [t.lastPoint, n],\n [n.firstPoint, t],\n [n.lastPoint, t]\n ].forEach(([i, o]) => {\n o.isOnSegment(i) && e.push(i);\n }), e.length < 2)\n return null;\n if (e.length === 2)\n return [t.splitAt(e)[1]];\n if (e.length === 3)\n return g(e[0], t.firstPoint) && g(e[1], t.lastPoint) ? [t] : [n];\n if (e.length === 4)\n return [t];\n}\nfunction _n(t, n, e = !1) {\n const s = Math.max(t.precision, n.precision);\n if (e) {\n const i = kn(t, n);\n if (i)\n return i;\n }\n return D(t, n, s);\n}\nfunction On(t, n) {\n const e = [];\n if ([\n [t.firstPoint, n],\n [t.lastPoint, n],\n [n.firstPoint, t],\n [n.lastPoint, t]\n ].forEach(([i, o]) => {\n o.isOnSegment(i) && e.push(i);\n }), e.length < 2)\n return null;\n if (e.length === 2)\n return [t.splitAt(e)[1]];\n if (e.length === 3)\n return g(e[0], t.firstPoint) && g(e[1], t.lastPoint) ? [t] : [n];\n if (e.length === 4)\n return [t];\n}\nfunction Tn(t, n, e = !1) {\n const s = Math.max(t.precision, n.precision);\n if (e) {\n const i = On(t, n);\n if (i)\n return i;\n }\n return D(t, n, s);\n}\nfunction ae(t, n, e) {\n if (t instanceof y && n instanceof y) {\n const s = zt(\n t,\n n,\n !1,\n e\n );\n return s === null ? [] : [s];\n }\n if (t instanceof y && n instanceof S)\n return J(t, n, e);\n if (t instanceof S && n instanceof y)\n return J(n, t, e);\n if (t instanceof S && n instanceof S)\n return qt(t, n, !1, e);\n throw new Error(\"Not implemented\");\n}\nfunction K(t, n, e) {\n if (t instanceof y && n instanceof y) {\n const s = zt(\n t,\n n,\n !0,\n e\n );\n return s === null ? { intersections: [], overlaps: [], count: 0 } : s instanceof y ? { intersections: [], overlaps: [s], count: 1 } : { intersections: [s], overlaps: [], count: 1 };\n }\n if (!t.boundingBox.overlaps(n.boundingBox))\n return { intersections: [], overlaps: [], count: 0 };\n if (t instanceof y && n instanceof S) {\n const s = J(t, n, e);\n return { intersections: s, overlaps: [], count: s.length };\n }\n if (t instanceof S && n instanceof y) {\n const s = J(n, t, e);\n return { intersections: s, overlaps: [], count: s.length };\n }\n if (t instanceof S && n instanceof S) {\n const s = qt(\n t,\n n,\n !0,\n e\n );\n return s.length ? s[0] instanceof S ? {\n intersections: [],\n overlaps: s,\n count: s.length\n } : {\n intersections: s,\n overlaps: [],\n count: s.length\n } : { intersections: [], overlaps: [], count: 0 };\n }\n if (t instanceof y && n instanceof M) {\n const s = et(\n t,\n n,\n e\n );\n return { intersections: s, overlaps: [], count: s.length };\n }\n if (n instanceof y && t instanceof M) {\n const s = et(\n n,\n t,\n e\n );\n return { intersections: s, overlaps: [], count: s.length };\n }\n if (t instanceof S && n instanceof M) {\n const s = mt(t, n);\n return { intersections: s, overlaps: [], count: s.length };\n }\n if (n instanceof S && t instanceof M) {\n const s = mt(n, t);\n return { intersections: s, overlaps: [], count: s.length };\n }\n if (t instanceof M && n instanceof M) {\n const s = wn(\n t,\n n,\n !0\n );\n return s.length ? s[0] instanceof M ? {\n intersections: [],\n overlaps: s,\n count: s.length\n } : {\n intersections: s,\n overlaps: [],\n count: s.length\n } : { intersections: [], overlaps: [], count: 0 };\n }\n if (t instanceof y && (n instanceof I || n instanceof A)) {\n const s = gt(t, n);\n return { intersections: s, overlaps: [], count: s.length };\n }\n if (n instanceof y && (t instanceof I || t instanceof A)) {\n const s = gt(n, t);\n return { intersections: s, overlaps: [], count: s.length };\n }\n if ((t instanceof S || t instanceof M) && n instanceof A) {\n const s = wt(t, n);\n return { intersections: s, overlaps: [], count: s.length };\n }\n if ((n instanceof S || n instanceof M) && t instanceof A) {\n const s = wt(n, t);\n return { intersections: s, overlaps: [], count: s.length };\n }\n if ((t instanceof S || t instanceof M) && n instanceof I) {\n const s = Pt(t, n);\n return { intersections: s, overlaps: [], count: s.length };\n }\n if ((n instanceof S || n instanceof M) && t instanceof I) {\n const s = Pt(n, t);\n return { intersections: s, overlaps: [], count: s.length };\n }\n if (t instanceof A && n instanceof A) {\n const s = Tn(\n t,\n n\n );\n return s.length ? s[0] instanceof A ? {\n intersections: [],\n overlaps: s,\n count: s.length\n } : {\n intersections: s,\n overlaps: [],\n count: s.length\n } : { intersections: [], overlaps: [], count: 0 };\n }\n if (t instanceof A && n instanceof I || n instanceof A && t instanceof I) {\n const s = D(t, n);\n return { intersections: s, overlaps: [], count: s.length };\n }\n if (t instanceof I && n instanceof I) {\n const s = _n(\n t,\n n\n );\n return s.length ? s[0] instanceof I ? {\n intersections: [],\n overlaps: s,\n count: s.length\n } : {\n intersections: s,\n overlaps: [],\n count: s.length\n } : { intersections: [], overlaps: [], count: 0 };\n }\n throw new Error(\"Not implemented\");\n}\nfunction Vt(t) {\n const n = [];\n for (let e = 0; e < t; e++)\n for (let s = 0; s <= e; s++)\n n.push([e, s]);\n return n;\n}\nfunction* st(t) {\n for (const [n, e] of Vt(t.length))\n n !== e && (yield [t[n], t[e]]);\n}\nclass Nt extends lt {\n constructor(e, { ignoreChecks: s = !1 } = {}) {\n super();\n C(this, \"segments\");\n C(this, \"_boundingBox\", null);\n s || Ut(e), this.segments = e;\n }\n get repr() {\n return this.segments.map((e) => e.repr).join(`\n`) + `\n`;\n }\n get info() {\n return this.repr;\n }\n get firstPoint() {\n return this.segments[0].firstPoint;\n }\n get lastPoint() {\n return this.segments[this.segments.length - 1].lastPoint;\n }\n get segmentsCount() {\n return this.segments.length;\n }\n onStroke(e) {\n return this.segments.some((s) => s.isOnSegment(e));\n }\n intersects(e) {\n return this.boundingBox.overlaps(e.boundingBox) ? this.segments.some(\n (s) => e.segments.some(\n (i) => K(s, i).count > 0\n )\n ) : !1;\n }\n overlappingSegments(e) {\n return this.segments.flatMap((s) => e.segments.flatMap((i) => s.boundingBox.overlaps(i.boundingBox) ? K(s, i).overlaps : []));\n }\n get boundingBox() {\n if (this._boundingBox === null) {\n let e = this.segments[0].boundingBox;\n this.segments.slice(1).forEach((s) => {\n e = e.merge(s.boundingBox);\n }), this._boundingBox = e;\n }\n return this._boundingBox;\n }\n [Symbol.for(\"nodejs.util.inspect.custom\")]() {\n return this.repr;\n }\n}\nfunction Ln(t, n = \"Stroke\") {\n Vt(t.length).forEach(\n ([e, s]) => {\n if (e === s) return;\n const i = t[e], o = t[s], r = K(i, o), l = Math.max(i.precision, o.precision);\n if (r.count !== 0) {\n if (r.count === 1 && !r.overlaps.length) {\n const c = e - s, a = r.intersections[0];\n if (c === 1 && g(i.firstPoint, a, l) || c === -1 && g(i.lastPoint, a, l) || c === t.length - 1 && g(i.lastPoint, a, l) && g(o.firstPoint, a, l) || -c === t.length - 1 && g(i.firstPoint, a, l) && g(o.lastPoint, a, l))\n return;\n }\n if (!(r.count === 2 && t.length === 2 && (g(\n i.firstPoint,\n r.intersections[0],\n l\n ) && g(\n i.lastPoint,\n r.intersections[1],\n l\n ) || g(\n i.firstPoint,\n r.intersections[1],\n l\n ) && g(\n i.lastPoint,\n r.intersections[0],\n l\n ))))\n throw new Error(\n `${n} segments must not intersect, but segments ${i.info} and ${o.info} do at ${JSON.stringify(\n r.intersections\n )}`\n );\n }\n }\n );\n}\nfunction Ut(t, n = \"Stroke\") {\n if (t.length === 0)\n throw new Error(`${n} must have at least one segment`);\n N([t.slice(0, -1), t.slice(1)]).forEach(\n ([e, s]) => {\n if (!g(e.lastPoint, s.firstPoint))\n throw new Error(\n `${n} segments must be connected, but ${e.info} and ${s.info} are not`\n );\n }\n ), Ln(t, n);\n}\nfunction bt(t, n) {\n return !!(t instanceof y && n instanceof y && un(t.V, n.V) || t instanceof S && n instanceof S && g(t.center, n.center) && t.radius - n.radius < t.precision);\n}\nfunction Ct(t, n) {\n if (t instanceof y && n instanceof y)\n return new y(t.firstPoint, n.lastPoint);\n if (t instanceof S && n instanceof S)\n return new S(\n t.firstPoint,\n n.lastPoint,\n t.center,\n t.clockwise\n );\n throw new Error(\"Not implemented\");\n}\nfunction jt(t) {\n let n = !1;\n const e = [];\n for (const s of t.segments) {\n if (e.length === 0) {\n e.push(s);\n continue;\n }\n const i = e[e.length - 1];\n bt(i, s) ? (n = !0, e.pop(), e.push(Ct(i, s))) : e.push(s);\n }\n if (g(t.firstPoint, t.lastPoint) && bt(\n e[0],\n e[e.length - 1]\n )) {\n n = !0;\n const s = e.pop();\n e[0] = Ct(s, e[0]);\n }\n return n ? e : null;\n}\nclass B extends Nt {\n constructor() {\n super(...arguments);\n C(this, \"strokeType\", \"STRAND\");\n }\n reverse() {\n const e = this.segments.map((s) => s.reverse());\n return e.reverse(), new B(e, { ignoreChecks: !0 });\n }\n clone() {\n return new B(\n this.segments.map((e) => e.clone()),\n { ignoreChecks: !0 }\n );\n }\n extend(e) {\n if (!g(this.lastPoint, e.firstPoint))\n throw console.error(this.repr, e.repr), new Error(\"Cannot extend strand: connection point is not the same\");\n return new B([...this.segments, ...e.segments]);\n }\n simplify() {\n const e = jt(this);\n return e ? new B(e, { ignoreChecks: !0 }) : this;\n }\n transform(e) {\n return new B(\n this.segments.map((s) => s.transform(e)),\n { ignoreChecks: !0 }\n );\n }\n}\nconst zn = (t, n) => {\n const e = an(n, {\n V: [1, 0],\n firstPoint: t,\n precision: n.precision\n });\n if (e === \"parallel\")\n return 0;\n const { intersectionParam1: s, intersectionParam2: i } = e;\n if (!n.isValidParameter(s) || i <= -n.precision) return 0;\n if (Math.abs(s) < n.precision || Math.abs(s - 1) < n.precision) {\n const [, o] = n.midPoint;\n return t[1] - o < 0 ? 1 : 0;\n }\n return 1;\n};\nclass ut {\n constructor(n) {\n C(this, \"_count\", 0);\n C(this, \"segment\");\n this.segment = n;\n }\n update(n, e = !1) {\n !e && !this.segment.isOnSegment(n) || (g(n, this.segment.firstPoint) ? this._count += this.segment.tangentAtFirstPoint[1] > 0 ? 1 : 0 : g(n, this.segment.lastPoint) ? this._count += this.segment.tangentAtLastPoint[1] > 0 ? 0 : 1 : this._count += 1);\n }\n get count() {\n return this._count;\n }\n}\nconst qn = (t, n) => {\n const e = n.precision, s = Math.abs(t[1] - n.center[1]);\n if (s > n.radius + e) return 0;\n const i = fn(t, n.center), o = n.radius * n.radius, r = e * e;\n if (Math.abs(i - o) < r && n.isOnSegment(t))\n return 0;\n const l = i - o > r;\n if (l && n.center[0] < t[0]) return 0;\n const c = Math.sqrt(\n n.radius * n.radius - s * s\n ), a = new ut(n);\n return a.update([n.center[0] + c, t[1]]), l && a.update([n.center[0] - c, t[1]]), a.count;\n}, Dn = (t, n) => {\n const e = n.boundingBox.xMax + n.boundingBox.width / 2, s = new y(t, [e, t[1]]), i = new ut(n);\n return et(s, n).forEach((o) => {\n i.update(o, !0);\n }), i.count;\n}, Rn = (t, n) => {\n const e = new ut(n);\n return n.paramsAtY(t[1]).map((s) => {\n try {\n return n.paramPoint(s);\n } catch {\n return null;\n }\n }).filter((s) => s !== null).filter((s) => {\n const [i] = s;\n return i >= t[0];\n }).forEach((s) => {\n e.update(s, !0);\n }), e.count;\n};\nfunction Vn(t, n) {\n if (n instanceof y)\n return zn(t, n);\n if (n instanceof S)\n return qn(t, n);\n if (n instanceof M)\n return Dn(t, n);\n if (n instanceof I || n instanceof A)\n return Rn(t, n);\n throw new Error(\"Not implemented\");\n}\nclass O extends Nt {\n constructor(e, { ignoreChecks: s = !1 } = {}) {\n super(e, { ignoreChecks: !0 });\n C(this, \"strokeType\", \"LOOP\");\n C(this, \"_clockwise\", null);\n s || Nn(e);\n }\n get clockwise() {\n if (this._clockwise === null) {\n const e = this.segments.flatMap((i) => i instanceof y ? [i.firstPoint] : [i.firstPoint, i.paramPoint(0.5)]), s = e.map((i, o) => {\n const r = e[(o + 1) % e.length];\n return (r[0] - i[0]) * (r[1] + i[1]);\n }).reduce((i, o) => i + o, 0);\n this._clockwise = s > 0;\n }\n return this._clockwise;\n }\n clone() {\n return new O(\n this.segments.map((e) => e.clone()),\n { ignoreChecks: !0 }\n );\n }\n reverse() {\n const e = this.segments.map((s) => s.reverse());\n return e.reverse(), new O(e, { ignoreChecks: !0 });\n }\n transform(e) {\n return new O(\n this.segments.map((s) => s.transform(e)),\n { ignoreChecks: !0 }\n );\n }\n contains(e) {\n return this.onStroke(e) || !this.boundingBox.contains(e) ? !1 : this.segments.reduce((i, o) => i + Vn(e, o), 0) % 2 === 1;\n }\n simplify() {\n const e = jt(this);\n return e ? new O(e, { ignoreChecks: !0 }) : this;\n }\n}\nfunction Nn(t) {\n if (Ut(t, \"Loop\"), !g(t[0].firstPoint, t[t.length - 1].lastPoint))\n throw new Error(\"Loop segment must be closed\");\n}\nconst Un = [\n y,\n S,\n M,\n A,\n I\n];\nfunction jn(t) {\n return Un.some((n) => t instanceof n);\n}\nfunction $t(t) {\n if (t instanceof y)\n return {\n type: t.segmentType,\n firstPoint: t.firstPoint,\n lastPoint: t.lastPoint\n };\n if (t instanceof S)\n return {\n type: t.segmentType,\n firstPoint: t.firstPoint,\n lastPoint: t.lastPoint,\n center: t.center,\n clockwise: t.clockwise\n };\n if (t instanceof M)\n return {\n type: t.segmentType,\n firstPoint: t.firstPoint,\n lastPoint: t.lastPoint,\n center: t.center,\n clockwise: t.clockwise,\n majorRadius: t.majorRadius,\n minorRadius: t.minorRadius,\n tiltAngle: t.tiltAngle\n };\n if (t instanceof A)\n return {\n type: t.segmentType,\n firstPoint: t.firstPoint,\n lastPoint: t.lastPoint,\n controlPoint: t.controlPoint\n };\n if (t instanceof I)\n return {\n type: t.segmentType,\n firstPoint: t.firstPoint,\n lastPoint: t.lastPoint,\n firstControlPoint: t.firstControlPoint,\n lastControlPoint: t.lastControlPoint\n };\n throw new Error(\"Unknown segment type\");\n}\nfunction it(t) {\n return {\n type: \"LOOP\",\n segments: t.segments.map($t)\n };\n}\nfunction Ht(t) {\n return {\n type: \"FIGURE\",\n contour: it(t.contour),\n holes: t.holes.map(it)\n };\n}\nfunction $n(t) {\n return {\n type: \"DIAGRAM\",\n figures: t.figures.map(Ht)\n };\n}\nfunction Mt(t) {\n if (t instanceof _)\n return $n(t);\n if (t instanceof v)\n return Ht(t);\n if (t instanceof O)\n return it(t);\n if (jn(t))\n return $t(t);\n throw new Error(\"Unknown shape type\");\n}\nclass Hn {\n constructor() {\n this.ids = [], this.values = [], this.length = 0;\n }\n clear() {\n this.length = 0;\n }\n push(n, e) {\n let s = this.length++;\n for (; s > 0; ) {\n const i = s - 1 >> 1, o = this.values[i];\n if (e >= o) break;\n this.ids[s] = this.ids[i], this.values[s] = o, s = i;\n }\n this.ids[s] = n, this.values[s] = e;\n }\n pop() {\n if (this.length === 0) return;\n const n = this.ids[0];\n if (this.length--, this.length > 0) {\n const e = this.ids[0] = this.ids[this.length], s = this.values[0] = this.values[this.length], i = this.length >> 1;\n let o = 0;\n for (; o < i; ) {\n let r = (o << 1) + 1;\n const l = r + 1;\n let c = this.ids[r], a = this.values[r];\n const f = this.values[l];\n if (l < this.length && f < a && (r = l, c = this.ids[l], a = f), a >= s) break;\n this.ids[o] = c, this.values[o] = a, o = r;\n }\n this.ids[o] = e, this.values[o] = s;\n }\n return n;\n }\n peek() {\n if (this.length !== 0)\n return this.ids[0];\n }\n peekValue() {\n if (this.length !== 0)\n return this.values[0];\n }\n shrink() {\n this.ids.length = this.values.length = this.length;\n }\n}\nconst At = [Int8Array, Uint8Array, Uint8ClampedArray, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array, Float64Array], nt = 3;\nclass at {\n /**\n * Recreate a Flatbush index from raw `ArrayBuffer` or `SharedArrayBuffer` data.\n * @param {ArrayBuffer | SharedArrayBuffer} data\n * @param {number} [byteOffset=0] byte offset to the start of the Flatbush buffer in the referenced ArrayBuffer.\n * @returns {Flatbush} index\n */\n static from(n, e = 0) {\n if (e % 8 !== 0)\n throw new Error(\"byteOffset must be 8-byte aligned.\");\n if (!n || n.byteLength === void 0 || n.buffer)\n throw new Error(\"Data must be an instance of ArrayBuffer or SharedArrayBuffer.\");\n const [s, i] = new Uint8Array(n, e + 0, 2);\n if (s !== 251)\n throw new Error(\"Data does not appear to be in a Flatbush format.\");\n const o = i >> 4;\n if (o !== nt)\n throw new Error(`Got v${o} data when expected v${nt}.`);\n const r = At[i & 15];\n if (!r)\n throw new Error(\"Unrecognized array type.\");\n const [l] = new Uint16Array(n, e + 2, 1), [c] = new Uint32Array(n, e + 4, 1);\n return new at(c, l, r, void 0, n, e);\n }\n /**\n * Create a Flatbush index that will hold a given number of items.\n * @param {number} numItems\n * @param {number} [nodeSize=16] Size of the tree node (16 by default).\n * @param {TypedArrayConstructor} [ArrayType=Float64Array] The array type used for coordinates storage (`Float64Array` by default).\n * @param {ArrayBufferConstructor | SharedArrayBufferConstructor} [ArrayBufferType=ArrayBuffer] The array buffer type used to store data (`ArrayBuffer` by default).\n * @param {ArrayBuffer | SharedArrayBuffer} [data] (Only used internally)\n * @param {number} [byteOffset=0] (Only used internally)\n */\n constructor(n, e = 16, s = Float64Array, i = ArrayBuffer, o, r = 0) {\n if (n === void 0) throw new Error(\"Missing required argument: numItems.\");\n if (isNaN(n) || n <= 0) throw new Error(`Unexpected numItems value: ${n}.`);\n this.numItems = +n, this.nodeSize = Math.min(Math.max(+e, 2), 65535), this.byteOffset = r;\n let l = n, c = l;\n this._levelBounds = [l * 4];\n do\n l = Math.ceil(l / this.nodeSize), c += l, this._levelBounds.push(c * 4);\n while (l !== 1);\n this.ArrayType = s, this.IndexArrayType = c < 16384 ? Uint16Array : Uint32Array;\n const a = At.indexOf(this.ArrayType), f = c * 4 * this.ArrayType.BYTES_PER_ELEMENT;\n if (a < 0)\n throw new Error(`Unexpected typed array class: ${s}.`);\n o && o.byteLength !== void 0 && !o.buffer ? (this.data = o, this._boxes = new this.ArrayType(this.data, r + 8, c * 4), this._indices = new this.IndexArrayType(this.data, r + 8 + f, c), this._pos = c * 4, this.minX = this._boxes[this._pos - 4], this.minY = this._boxes[this._pos - 3], this.maxX = this._boxes[this._pos - 2], this.maxY = this._boxes[this._pos - 1]) : (this.data = new i(8 + f + c * this.IndexArrayType.BYTES_PER_ELEMENT), this._boxes = new this.ArrayType(this.data, 8, c * 4), this._indices = new this.IndexArrayType(this.data, 8 + f, c), this._pos = 0, this.minX = 1 / 0, this.minY = 1 / 0, this.maxX = -1 / 0, this.maxY = -1 / 0, new Uint8Array(this.data, 0, 2).set([251, (nt << 4) + a]), new Uint16Array(this.data, 2, 1)[0] = e, new Uint32Array(this.data, 4, 1)[0] = n), this._queue = new Hn();\n }\n /**\n * Add a given rectangle to the index.\n * @param {number} minX\n * @param {number} minY\n * @param {number} maxX\n * @param {number} maxY\n * @returns {number} A zero-based, incremental number that represents the newly added rectangle.\n */\n add(n, e, s = n, i = e) {\n const o = this._pos >> 2, r = this._boxes;\n return this._indices[o] = o, r[this._pos++] = n, r[this._pos++] = e, r[this._pos++] = s, r[this._pos++] = i, n < this.minX && (this.minX = n), e < this.minY && (this.minY = e), s > this.maxX && (this.maxX = s), i > this.maxY && (this.maxY = i), o;\n }\n /** Perform indexing of the added rectangles. */\n finish() {\n if (this._pos >> 2 !== this.numItems)\n throw new Error(`Added ${this._pos >> 2} items when expected ${this.numItems}.`);\n const n = this._boxes;\n if (this.numItems <= this.nodeSize) {\n n[this._pos++] = this.minX, n[this._pos++] = this.minY, n[this._pos++] = this.maxX, n[this._pos++] = this.maxY;\n return;\n }\n const e = this.maxX - this.minX || 1, s = this.maxY - this.minY || 1, i = new Uint32Array(this.numItems), o = 65535;\n for (let r = 0, l = 0; r < this.numItems; r++) {\n const c = n[l++], a = n[l++], f = n[l++], u = n[l++], h = Math.floor(o * ((c + f) / 2 - this.minX) / e), p = Math.floor(o * ((a + u) / 2 - this.minY) / s);\n i[r] = Xn(h, p);\n }\n ot(i, n, this._indices, 0, this.numItems - 1, this.nodeSize);\n for (let r = 0, l = 0; r < this._levelBounds.length - 1; r++) {\n const c = this._levelBounds[r];\n for (; l < c; ) {\n const a = l;\n let f = n[l++], u = n[l++], h = n[l++], p = n[l++];\n for (let d = 1; d < this.nodeSize && l < c; d++)\n f = Math.min(f, n[l++]), u = Math.min(u, n[l++]), h = Math.max(h, n[l++]), p = Math.max(p, n[l++]);\n this._indices[this._pos >> 2] = a, n[this._pos++] = f, n[this._pos++] = u, n[this._pos++] = h, n[this._pos++] = p;\n }\n }\n }\n /**\n * Search the index by a bounding box.\n * @param {number} minX\n * @param {number} minY\n * @param {number} maxX\n * @param {number} maxY\n * @param {(index: number) => boolean} [filterFn] An optional function for filtering the results.\n * @returns {number[]} An array of indices of items intersecting or touching the given bounding box.\n */\n search(n, e, s, i, o) {\n if (this._pos !== this._boxes.length)\n throw new Error(\"Data not yet indexed - call index.finish().\");\n let r = this._boxes.length - 4;\n const l = [], c = [];\n for (; r !== void 0; ) {\n const a = Math.min(r + this.nodeSize * 4, Et(r, this._levelBounds));\n for (let f = r; f < a; f += 4) {\n if (s < this._boxes[f] || i < this._boxes[f + 1] || n > this._boxes[f + 2] || e > this._boxes[f + 3]) continue;\n const u = this._indices[f >> 2] | 0;\n r >= this.numItems * 4 ? l.push(u) : (o === void 0 || o(u)) && c.push(u);\n }\n r = l.pop();\n }\n return c;\n }\n /**\n * Search items in order of distance from the given point.\n * @param {number} x\n * @param {number} y\n * @param {number} [maxResults=Infinity]\n * @param {number} [maxDistance=Infinity]\n * @param {(index: number) => boolean} [filterFn] An optional function for filtering the results.\n * @returns {number[]} An array of indices of items found.\n */\n neighbors(n, e, s = 1 / 0, i = 1 / 0, o) {\n if (this._pos !== this._boxes.length)\n throw new Error(\"Data not yet indexed - call index.finish().\");\n let r = this._boxes.length - 4;\n const l = this._queue, c = [], a = i * i;\n t: for (; r !== void 0; ) {\n const f = Math.min(r + this.nodeSize * 4, Et(r, this._levelBounds));\n for (let u = r; u < f; u += 4) {\n const h = this._indices[u >> 2] | 0, p = It(n, this._boxes[u], this._boxes[u + 2]), d = It(e, this._boxes[u + 1], this._boxes[u + 3]), m = p * p + d * d;\n m > a || (r >= this.numItems * 4 ? l.push(h << 1, m) : (o === void 0 || o(h)) && l.push((h << 1) + 1, m));\n }\n for (; l.length && l.peek() & 1; )\n if (l.peekValue() > a || (c.push(l.pop() >> 1), c.length === s)) break t;\n r = l.length ? l.pop() >> 1 : void 0;\n }\n return l.clear(), c;\n }\n}\nfunction It(t, n, e) {\n return t < n ? n - t : t <= e ? 0 : t - e;\n}\nfunction Et(t, n) {\n let e = 0, s = n.length - 1;\n for (; e < s; ) {\n const i = e + s >> 1;\n n[i] > t ? s = i : e = i + 1;\n }\n return n[e];\n}\nfunction ot(t, n, e, s, i, o) {\n if (Math.floor(s / o) >= Math.floor(i / o)) return;\n const r = t[s + i >> 1];\n let l = s - 1, c = i + 1;\n for (; ; ) {\n do\n l++;\n while (t[l] < r);\n do\n c--;\n while (t[c] > r);\n if (l >= c) break;\n Yn(t, n, e, l, c);\n }\n ot(t, n, e, s, c, o), ot(t, n, e, c + 1, i, o);\n}\nfunction Yn(t, n, e, s, i) {\n const o = t[s];\n t[s] = t[i], t[i] = o;\n const r = 4 * s, l = 4 * i, c = n[r], a = n[r + 1], f = n[r + 2], u = n[r + 3];\n n[r] = n[l], n[r + 1] = n[l + 1], n[r + 2] = n[l + 2], n[r + 3] = n[l + 3], n[l] = c, n[l + 1] = a, n[l + 2] = f, n[l + 3] = u;\n const h = e[s];\n e[s] = e[i], e[i] = h;\n}\nfunction Xn(t, n) {\n let e = t ^ n, s = 65535 ^ e, i = 65535 ^ (t | n), o = t & (n ^ 65535), r = e | s >> 1, l = e >> 1 ^ e, c = i >> 1 ^ s & o >> 1 ^ i, a = e & i >> 1 ^ o >> 1 ^ o;\n e = r, s = l, i = c, o = a, r = e & e >> 2 ^ s & s >> 2, l = e & s >> 2 ^ s & (e ^ s) >> 2, c ^= e & i >> 2 ^ s & o >> 2, a ^= s & i >> 2 ^ (e ^ s) & o >> 2, e = r, s = l, i = c, o = a, r = e & e >> 4 ^ s & s >> 4, l = e & s >> 4 ^ s & (e ^ s) >> 4, c ^= e & i >> 4 ^ s & o >> 4, a ^= s & i >> 4 ^ (e ^ s) & o >> 4, e = r, s = l, i = c, o = a, c ^= e & i >> 8 ^ s & o >> 8, a ^= s & i >> 8 ^ (e ^ s) & o >> 8, e = c ^ c >> 1, s = a ^ a >> 1;\n let f = t ^ n, u = s | 65535 ^ (f | e);\n return f = (f | f << 8) & 16711935, f = (f | f << 4) & 252645135, f = (f | f << 2) & 858993459, f = (f | f << 1) & 1431655765, u = (u | u << 8) & 16711935, u = (u | u << 4) & 252645135, u = (u | u << 2) & 858993459, u = (u | u << 1) & 1431655765, (u << 1 | f) >>> 0;\n}\nfunction Yt(t, n = 1e-7) {\n if (t.length === 0) return [];\n if (t.length === 1) return [t];\n const e = new at(t.length);\n t.forEach((o) => {\n const [r, l] = o.firstPoint;\n e.add(r - n, l - n, r + n, l + n);\n }), e.finish();\n const s = [], i = /* @__PURE__ */ new Set();\n return t.forEach((o, r) => {\n if (i.has(r)) return;\n const l = [o];\n let c = r;\n i.add(r);\n let a = t.length;\n for (; ; ) {\n if (a-- < 0)\n throw new Error(\"Infinite loop detected\");\n const f = l[l.length - 1].lastPoint, [u, h] = f, p = e.search(\n u - n,\n h - n,\n u + n,\n h + n\n ), d = (x) => Math.abs((c - x) % t.length), m = p.filter((x) => !i.has(x)).map((x) => [\n t[x],\n x,\n d(x)\n ]).sort(([, , x], [, , F]) => d(x) - d(F));\n if (m.length === 0) {\n s.push(l);\n break;\n }\n const [P, w] = m[0];\n l.push(P), i.add(w), c = w;\n }\n }), s;\n}\nclass v extends lt {\n constructor(e, s = [], { ignoreChecks: i = !1 } = {}) {\n super();\n C(this, \"contour\");\n C(this, \"holes\");\n i || Gn(e, s), this.contour = e, this.holes = s;\n }\n get boundingBox() {\n return this.contour.boundingBox;\n }\n get isFull() {\n return this.holes.length === 0;\n }\n get allLoops() {\n return [this.contour, ...this.holes];\n }\n clone() {\n return new v(\n this.contour.clone(),\n this.holes.map((e) => e.clone())\n );\n }\n transform(e) {\n return new v(\n this.contour.transform(e),\n this.holes.map((s) => s.transform(e))\n );\n }\n contains(e) {\n return this.contour.contains(e) && !this.holes.some((s) => s.contains(e));\n }\n intersects(e) {\n return this.allLoops.some(\n (s) => e.allLoops.some((i) => s.intersects(i))\n );\n }\n overlappingStrands(e) {\n const s = e instanceof v ? e.allLoops : [e], i = this.allLoops.flatMap((o) => s.flatMap((r) => o.overlappingSegments(r)));\n return Yt(i).map((o) => new B(o));\n }\n}\nfunction Gn(t, n = []) {\n if (!t) throw new Error(\"Figure must have a contour\");\n for (const [e, s] of st([t, ...n]))\n if (e.intersects(s))\n throw new Error(\"Loops in a figure must not intersect\");\n if (n.some(\n (e) => !t.contains(e.firstPoint) && !t.onStroke(e.firstPoint)\n ))\n throw new Error(\"Holes must be inside the contour\");\n for (const [e, s] of st(n))\n if (e.contains(s.firstPoint))\n throw console.error(Mt(e), Mt(s)), new Error(\"Holes must not be inside other holes\");\n}\nconst Qn = (t) => {\n const n = t.map((i, o) => t.slice(o + 1).map((r, l) => [l + o + 1, r]).filter(([, r]) => i.boundingBox.overlaps(r.boundingBox)).map(([r]) => r)), e = [], s = Array(n.length);\n return n.forEach((i, o) => {\n let r = s[o];\n r || (r = [], e.push(r)), r.push(t[o]), i.length && i.forEach((l) => {\n s[l] = r;\n });\n }), e;\n}, Xt = (t) => t.map((n, e) => {\n const i = n.segments[0].midPoint, o = t.filter((r, l) => e === l ? !1 : r.contains(i));\n return {\n loop: n,\n isIn: o\n };\n}), Wn = (t, n) => t.flatMap(({ loop: e }) => ft(\n n.filter(\n ({ loop: s, isIn: i }) => s === e || i.indexOf(e) !== -1\n )\n)), Jn = (t, n) => {\n const e = n.filter(({ isIn: i }) => i.length <= 1), s = ft(\n Xt(t.map(({ loop: i }) => i))\n );\n return [e, ...s];\n}, ft = (t) => {\n if (!t.length) return [];\n const n = t.filter(({ isIn: s }) => !s.length), e = t.filter(({ isIn: s }) => s.length > 1);\n return n.length === 1 && e.length === 0 ? [t] : n.length > 1 ? Wn(n, t) : Jn(e, t);\n};\nfunction X(t) {\n return Qn(t).map(Xt).flatMap(ft).map((e) => {\n if (e.length === 1) return new v(e[0].loop);\n e.sort((o, r) => o.isIn.length - r.isIn.length);\n const [s, ...i] = e.map(({ loop: o }) => o);\n return new v(s, i);\n });\n}\nfunction Kn(t, n) {\n const e = [];\n for (const s of t)\n for (const i of n)\n e.push([s, i]);\n return e;\n}\nfunction* Ft(t, n, e) {\n const s = (r) => n.some((l) => g(l, r.lastPoint)), i = (r) => e.some((l) => r.isSame(l));\n let o = [];\n for (const r of t)\n s(r) ? (o.push(r), yield new B(o, { ignoreChecks: !0 }), o = []) : i(r) ? (o.length && (yield new B(o, { ignoreChecks: !0 }), o = []), yield new B([r], { ignoreChecks: !0 })) : o.push(r);\n o.length && (yield new B(o, { ignoreChecks: !0 }));\n}\nconst vt = (t, n) => {\n const e = t.findIndex((o) => g(n, o.firstPoint)), s = t.slice(0, e);\n return t.slice(e).concat(s);\n}, Bt = (t, n) => {\n let e = t;\n const s = (l) => g(l.firstPoint, n.firstPoint) && g(l.lastPoint, n.lastPoint);\n let i = t.findIndex(s);\n if (i === -1) {\n const l = t.map((c) => c.reverse());\n if (l.reverse(), i = l.findIndex(s), i === -1)\n throw console.error(\n l.map((c) => c.repr),\n n.repr\n ), new Error(\"Failed to rotate to segment start\");\n e = l;\n }\n const o = e.slice(0, i);\n return e.slice(i).concat(o);\n};\nfunction Zn(t, n, e) {\n return t.filter((s) => {\n const i = n.filter((l) => g(l.firstPoint, s) || g(l.lastPoint, s));\n if (i.length % 2)\n throw new Error(\"Bug in the intersection algo on non crossing point\");\n const o = i.map((l) => e.contains(l.midPoint));\n return !(o.every((l) => l) || !o.some((l) => l));\n });\n}\nfunction te(t, n, e) {\n let s = [];\n const i = [], o = new Array(t.segments.length).fill(0).map(() => []), r = new Array(n.segments.length).fill(0).map(() => []);\n if (t.segments.forEach((h, p) => {\n n.segments.forEach((d, m) => {\n const { intersections: P, overlaps: w } = K(\n h,\n d,\n e\n );\n s.push(...P), o[p].push(...P), r[m].push(...P), i.push(...w);\n const x = w.flatMap((F) => [\n F.firstPoint,\n F.lastPoint\n ]);\n s.push(...x), o[p].push(...x), r[m].push(...x);\n });\n }), s = U(s, e), !s.length || s.length === 1) return null;\n const l = ([h, p]) => p.length ? h.splitAt(p) : [h];\n let c = N([t.segments, o]).flatMap(l), a = N([n.segments, r]).flatMap(l);\n if (s = Zn(\n s,\n c,\n n\n ), !s.length && !i.length) return null;\n if (i.length) {\n const h = i[0];\n c = Bt(\n c,\n h\n ), a = Bt(\n a,\n h\n );\n } else {\n const h = s[0];\n c = vt(c, h), a = vt(a, h);\n }\n let f = Array.from(\n Ft(\n c,\n s,\n i\n )\n ), u = Array.from(\n Ft(\n a,\n s,\n i\n )\n );\n return (!g(\n u[0].lastPoint,\n f[0].lastPoint\n ) || i.length > 0 && u[0].segmentsCount !== 1) && (u = u.map((h) => h.reverse()).reverse(), g(u[0].lastPoint, f[0].lastPoint) || (f = f.map((h) => h.reverse()).reverse())), N([f, u]).map(([h, p]) => h.segmentsCount === 1 && i.some((d) => h.segments[0].isSame(d)) ? [h, \"same\"] : [h, p]);\n}\nfunction kt(t) {\n let n = t[0];\n for (const e of t.slice(1))\n n = n.extend(e);\n if (!g(n.firstPoint, n.lastPoint))\n throw console.error(\n dt(n.firstPoint),\n dt(n.lastPoint)\n ), new Error(\"Bug in the intersection algo on non closing strand\");\n return new O(n.segments);\n}\nfunction ne(t, n) {\n const e = N([\n n.slice(0, -1),\n n.slice(1)\n ]).map(([i, o]) => kt(t.slice(i, o)));\n let s = t.slice(\n n[n.length - 1]\n );\n return n[0] !== 0 && (s = s.concat(t.slice(0, n[0]))), e.push(kt(s)), e;\n}\nfunction ee(t) {\n if (!t.length) return [];\n const n = t.map((i) => i.firstPoint);\n let e = t.map((i) => i.lastPoint);\n e = e.slice(-1).concat(e.slice(0, -1));\n const s = N([n, e]).flatMap(\n ([i, o], r) => g(i, o) ? [] : r\n );\n try {\n return ne(t, s);\n } catch {\n return Yt(t.flatMap((o) => o.segments)).filter((o) => o.length > 1).filter((o) => g(o[0].firstPoint, o.at(-1).lastPoint)).map((o) => new O(o));\n }\n}\nconst _t = (t, n) => {\n if (t.length === 0) return [n];\n const e = t.at(-1);\n return g(e.lastPoint, n.firstPoint) ? t.slice(0, -1).concat([e.extend(n)]) : g(e.lastPoint, n.lastPoint) ? t.slice(0, -1).concat([e.extend(n.reverse())]) : t.concat([n]);\n}, se = (t, n) => t.length === 0 ? [n] : g(t[0].firstPoint, n.lastPoint) ? [n.extend(t[0])].concat(t.slice(1)) : [n].concat(t);\nfunction ht(t, n, {\n firstInside: e,\n secondInside: s\n}) {\n const i = te(t, n);\n if (!i) {\n const c = t.segments[0].midPoint, a = n.contains(c), f = n.segments[0].midPoint, u = t.contains(f);\n return {\n identical: !1,\n firstCurveInSecond: a,\n secondCurveInFirst: u\n };\n }\n if (i.every(([, c]) => c === \"same\"))\n return { identical: !0 };\n let o = null, r = null;\n const l = i.flatMap(([c, a]) => {\n let f = [], u = 0;\n if (a === \"same\")\n return r === 1 ? (r = 1, c) : r === 2 || r === 0 ? (r = null, []) : r === null ? (o ? o = o.extend(c) : o = c, []) : (console.error(\"weird situation\"), []);\n const h = c.segments[0].midPoint, p = n.contains(h);\n (e === \"keep\" && p || e === \"remove\" && !p) && (u += 1, f = _t(f, c));\n const d = a.segments[0].midPoint, m = t.contains(d);\n if (s === \"keep\" && m || s === \"remove\" && !m) {\n const P = a;\n u += 1, u === 2 && f.length ? (f = _t(f, P), o = null) : f = [P];\n }\n return r === null && u === 1 && o && (f = se(f, o)), u === 1 && (r = u, o = null), f.length ? f : (o = null, []);\n });\n return ee(l);\n}\nconst ie = (t, n) => {\n const e = ht(t, n, {\n firstInside: \"remove\",\n secondInside: \"remove\"\n });\n return Array.isArray(e) ? e : e.identical ? [t] : e.firstCurveInSecond ? [n] : e.secondCurveInFirst ? [t] : [t, n];\n}, Z = (t, n) => {\n const e = ht(t, n, {\n firstInside: \"remove\",\n secondInside: \"keep\"\n });\n return Array.isArray(e) ? e : e.identical ? [] : e.firstCurveInSecond ? [] : e.secondCurveInFirst ? [t, n] : [t];\n}, pt = (t, n) => {\n const e = ht(t, n, {\n firstInside: \"keep\",\n secondInside: \"keep\"\n });\n return Array.isArray(e) ? e : e.identical ? [t] : e.firstCurveInSecond ? [t] : e.secondCurveInFirst ? [n] : [];\n};\nfunction oe(t) {\n const n = /* @__PURE__ */ new Map(), e = [];\n return t.forEach((s, i) => {\n let o;\n n.has(i) ? o = n.get(i) : (o = { current: [s], fusedWith: /* @__PURE__ */ new Set([i]) }, e.push(o)), t.slice(i + 1).forEach((r, l) => {\n const c = o.current, a = i + l + 1;\n if (o.fusedWith.has(a)) return;\n let f = [r], u = !1;\n if (n.has(a) && (f = n.get(a).current, u = !0), !c.some(\n (d) => f.some((m) => d.intersects(m))\n )) return;\n let p;\n c.length > 1 || f.length > 1 ? p = G(c, f) : p = Gt(c[0], f[0]), o.fusedWith.add(a), o.current = p, u || n.set(a, o);\n });\n }), e.flatMap(({ current: s }) => s);\n}\nfunction Gt(t, n) {\n const e = ie(t.contour, n.contour), s = n.holes.flatMap((r) => Z(r, t.contour)), i = t.holes.flatMap((r) => Z(r, n.contour)), o = Kn(t.holes, n.holes).flatMap(\n ([r, l]) => pt(r, l)\n );\n return X([\n ...e,\n ...s,\n ...i,\n ...o\n ]);\n}\nfunction tt(t, n) {\n if (t.isFull && n.isFull)\n return X(Z(t.contour, n.contour));\n if (t.isFull) {\n const s = Z(t.contour, n.contour), i = n.holes.flatMap(\n (o) => pt(o, t.contour)\n );\n return X([...s, ...i]);\n } else if (n.isFull && !t.contour.intersects(n.contour))\n if (t.contour.contains(n.contour.firstPoint)) {\n const s = G(\n t.holes.map((i) => new v(i)),\n [n]\n );\n return X([\n t.contour,\n ...s.flatMap((i) => i.allLoops)\n ]);\n } else\n return [t];\n let e = tt(new v(t.contour), n);\n return t.holes.forEach((s) => {\n e = e.flatMap((i) => tt(i, new v(s)));\n }), e;\n}\nfunction re(t, n) {\n const e = pt(t.contour, n.contour);\n if (!e.length) return [];\n let s = X(e);\n return s = Q(\n s,\n t.holes.map((i) => new v(i))\n ), Q(\n s,\n n.holes.map((i) => new v(i))\n );\n}\nfunction G(t, n) {\n if (!t.length) return n;\n if (!n.length) return t;\n if (t.length === 1 && n.length > 1 || n.length === 1 && t.length > 1)\n return oe([...t, ...n]);\n if (t.length > 1 && n.length > 1) {\n let e = G([t[0]], n);\n return t.slice(1).forEach((s) => {\n e = G([s], e);\n }), e;\n }\n return t.length === 1 && n.length === 1 ? Gt(t[0], n[0]) : [];\n}\nfunction Q(t, n) {\n if (!t.length) return [];\n if (!n.length) return t;\n if (t.length === 1 && n.length === 1)\n return tt(t[0], n[0]);\n if (t.length > 1)\n return t.flatMap((s) => Q([s], n));\n let e = tt(t[0], n[0]);\n return n.slice(1).forEach((s) => {\n e = Q(e, [s]);\n }), e;\n}\nfunction rt(t, n) {\n return !t.length || !n.length ? [] : t.length === 1 && n.length === 1 ? re(t[0], n[0]) : t.length > 1 ? t.flatMap((e) => rt([e], n)) : n.flatMap((e) => rt(t, [e]));\n}\nclass _ extends lt {\n constructor(e = [], { ignoreChecks: s = !1 } = {}) {\n super();\n C(this, \"figures\");\n C(this, \"_boundingBox\", null);\n s || le(e), this.figures = e;\n }\n get isEmpty() {\n return this.figures.length === 0;\n }\n get boundingBox() {\n if (this.isEmpty) return new hn();\n if (this._boundingBox === null) {\n let e = this.figures[0].boundingBox;\n for (const s of this.figures.slice(1))\n e = e.merge(s.boundingBox);\n this._boundingBox = e;\n }\n return this._boundingBox;\n }\n clone() {\n return new _(this.figures.map((e) => e.clone()));\n }\n transform(e) {\n return new _(this.figures.map((s) => s.transform(e)));\n }\n contains(e) {\n return this.figures.some((s) => s.contains(e));\n }\n intersects(e) {\n return this.figures.some(\n (s) => e.figures.some((i) => s.intersects(i))\n );\n }\n overlappingStrands(e) {\n return this.figures.flatMap((s) => e instanceof _ ? e.figures.flatMap(\n (i) => s.overlappingStrands(i)\n ) : s.overlappingStrands(e));\n }\n fuse(e) {\n return new _(G(this.figures, e.figures));\n }\n cut(e) {\n return new _(Q(this.figures, e.figures));\n }\n intersect(e) {\n return new _(rt(this.figures, e.figures));\n }\n}\nfunction le(t) {\n for (const [n, e] of st(t))\n if (n.intersects(e))\n throw new Error(\"Diagram figures must not intersect\");\n}\nexport {\n _ as D,\n v as F,\n O as L,\n B as S,\n K as a,\n G as b,\n Q as c,\n qt as d,\n Yt as e,\n ae as f,\n jn as g,\n Mt as h,\n rt as i,\n J as l,\n pn as p,\n Ft as s\n};\n//# sourceMappingURL=models-WQ-B7GSL.js.map\n","var N = Object.defineProperty;\nvar Y = (r, t, e) => t in r ? N(r, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : r[t] = e;\nvar p = (r, t, e) => Y(r, typeof t != \"symbol\" ? t + \"\" : t, e);\nimport { L as f, A as F, a as u, s as g, p as S, t as _, c as I, b as O, d as A, e as V, f as v, g as W, h as G, i as L, R as Q, C as j, Q as q, T as $, j as d, n as b, D as T } from \"./QuadraticBezier-BzVqiExF.js\";\nimport { f as H, S as J, D as K, F as U, L as X } from \"./models-WQ-B7GSL.js\";\nclass C {\n constructor(t, e) {\n this.firstPoint = t, this.lastPoint = e;\n }\n}\nfunction x(r, t) {\n if (r instanceof f)\n return Z(r, t);\n if (r instanceof F)\n return tt(r, t);\n throw new Error(\"Not implemented\");\n}\nfunction Z(r, t) {\n const { firstPoint: e, lastPoint: n } = r, i = r.normalVector;\n return new f(\n u(e, g(i, t)),\n u(n, g(i, t))\n );\n}\nfunction tt(r, t) {\n const e = u(\n r.firstPoint,\n g(S(r.tangentAtFirstPoint), t)\n ), n = u(\n r.lastPoint,\n g(S(r.tangentAtLastPoint), t)\n ), i = t * (r.clockwise ? 1 : -1);\n return r.radius + i < r.precision ? new C(e, n) : new F(e, n, r.center, r.clockwise);\n}\nfunction R(r, t, e) {\n const n = I(\n r.tangentAtLastPoint,\n t.tangentAtFirstPoint\n );\n if (Math.abs(n) < 1e-10) return null;\n const i = n > 0 ? 1 : -1, s = Math.abs(e) * i, o = x(r, s), a = x(t, s);\n if (o instanceof C || a instanceof C)\n return null;\n let c;\n try {\n c = H(o, a, 1e-9).at(-1);\n } catch {\n return null;\n }\n if (!c)\n return null;\n const h = c, m = (w, k) => {\n const B = k.tangentAt(h), z = O(B), M = u(h, g(z, s));\n return w.splitAt(M);\n }, [l] = m(r, o), [, P] = m(t, a);\n return { first: l, second: P, center: h };\n}\nfunction E(r, t, e) {\n const n = R(r, t, e);\n if (!n)\n return console.warn(\n \"Cannot fillet between segments\",\n r.repr,\n t.repr\n ), [r, t];\n const { first: i, second: s } = n;\n return [\n i,\n _(i.lastPoint, s.firstPoint, i.tangentAtLastPoint),\n s\n ];\n}\nfunction D(r, t, e) {\n const n = R(r, t, e);\n if (!n)\n return console.warn(\n \"Cannot chamfer between segments\",\n r.repr,\n t.repr\n ), [r, t];\n const { first: i, second: s } = n;\n return [i, new f(i.lastPoint, s.firstPoint), s];\n}\nconst et = (r) => {\n let t;\n r ? typeof r == \"number\" || Array.isArray(r) && r.length === 2 ? t = { endTangent: r } : t = { endTangent: 0, ...r } : t = { endTangent: [1, 0] };\n const {\n endTangent: e,\n startFactor: n = 1,\n endFactor: i = 1,\n startTangent: s\n } = t;\n let o;\n typeof e == \"number\" ? o = d(1, e * T) : o = e;\n let a;\n return typeof s == \"number\" ? a = d(1, s * T) : a = s, { endTangent: o, startFactor: n, endFactor: i, startTangent: a };\n};\nfunction y(r, { ignoreChecks: t = !1 } = {}) {\n return new K([new U(new X([...r], { ignoreChecks: t }))]);\n}\nclass nt {\n constructor(t = [0, 0]) {\n p(this, \"pointer\");\n p(this, \"firstPoint\");\n p(this, \"pendingSegments\");\n p(this, \"_nextCorner\");\n this.pointer = t, this.firstPoint = t, this.pendingSegments = [], this._nextCorner = null;\n }\n movePointerTo(t) {\n if (this.pendingSegments.length)\n throw new Error(\n \"You can only move the pointer if there is no segment defined\"\n );\n return this.pointer = t, this.firstPoint = t, this;\n }\n saveSegment(t) {\n if (A(t.firstPoint, t.lastPoint))\n throw new Error(`Segment has no length, ${t.repr}`);\n if (!this._nextCorner)\n return this.pendingSegments.push(t), this;\n const e = this.pendingSegments.pop();\n if (!e) throw new Error(\"bug in the custom corner algorithm\");\n const n = this._nextCorner.mode === \"chamfer\" ? D : E;\n return this.pendingSegments.push(\n ...n(e, t, this._nextCorner.radius)\n ), this._nextCorner = null, this;\n }\n lineTo(t) {\n const e = new f(this.pointer, t);\n return this.pointer = t, this.saveSegment(e);\n }\n line(t, e) {\n return this.lineTo([this.pointer[0] + t, this.pointer[1] + e]);\n }\n vLine(t) {\n return this.line(0, t);\n }\n hLine(t) {\n return this.line(t, 0);\n }\n vLineTo(t) {\n return this.lineTo([this.pointer[0], t]);\n }\n hLineTo(t) {\n return this.lineTo([t, this.pointer[1]]);\n }\n polarLineTo([t, e]) {\n const n = e * T, i = d(t, n);\n return this.lineTo(i);\n }\n polarLine(t, e) {\n const n = e * T, [i, s] = d(t, n);\n return this.line(i, s);\n }\n tangentLine(t) {\n const e = this.pendingSegments.at(-1);\n if (!e)\n throw new Error(\"You need a previous segment to sketch a tangent line\");\n const [n, i] = e.tangentAtLastPoint;\n return this.line(n * t, i * t);\n }\n threePointsArcTo(t, e) {\n return this.saveSegment(V(this.pointer, e, t)), this.pointer = t, this;\n }\n threePointsArc(t, e, n, i) {\n const [s, o] = this.pointer;\n return this.threePointsArcTo(\n [s + t, o + e],\n [s + n, o + i]\n );\n }\n sagittaArcTo(t, e) {\n if (!e) return this.lineTo(t);\n const n = new f(this.pointer, t), i = S(n.tangentAtFirstPoint), s = u(n.midPoint, g(i, e));\n return this.threePointsArcTo(t, s);\n }\n sagittaArc(t, e, n) {\n return this.sagittaArcTo(\n [t + this.pointer[0], e + this.pointer[1]],\n n\n );\n }\n vSagittaArc(t, e) {\n return this.sagittaArc(0, t, e);\n }\n hSagittaArc(t, e) {\n return this.sagittaArc(t, 0, e);\n }\n bulgeArcTo(t, e) {\n if (!e) return this.lineTo(t);\n const n = v(this.pointer, t) / 2, i = -e * n;\n return this.sagittaArcTo(t, i);\n }\n bulgeArc(t, e, n) {\n return this.bulgeArcTo(\n [t + this.pointer[0], e + this.pointer[1]],\n n\n );\n }\n vBulgeArc(t, e) {\n return this.bulgeArc(0, t, e);\n }\n hBulgeArc(t, e) {\n return this.bulgeArc(t, 0, e);\n }\n tangentArcTo(t, e) {\n const n = this.pendingSegments.at(-1);\n if (!n)\n throw new Error(\"You need a previous curve to sketch a tangent arc\");\n return this.saveSegment(\n _(\n this.pointer,\n t,\n e ?? n.tangentAtLastPoint\n )\n ), this.pointer = t, this;\n }\n tangentArc(t, e, n) {\n const [i, s] = this.pointer;\n return this.tangentArcTo([t + i, e + s], n);\n }\n ellipseTo(t, e, n, i, s, o) {\n return this.saveSegment(\n W(this.pointer, t, e, n, i, s, o)\n ), this.pointer = t, this;\n }\n ellipse(t, e, n, i, s, o, a) {\n return this.ellipseTo(\n [t + this.pointer[0], e + this.pointer[1]],\n n,\n i,\n s,\n o,\n a\n );\n }\n halfEllipseTo(t, e) {\n const [n, i] = G(L(t, this.pointer));\n return this.ellipseTo(\n t,\n n / 2,\n Math.abs(e),\n i * Q,\n !0,\n e > 0\n );\n }\n halfEllipse(t, e, n) {\n return this.halfEllipseTo(\n [t + this.pointer[0], e + this.pointer[1]],\n n\n );\n }\n cubicBezierCurveTo(t, e, n) {\n return this.saveSegment(\n new j(this.pointer, t, e, n)\n ), this.pointer = t, this;\n }\n quadraticBezierCurveTo(t, e) {\n return this.saveSegment(new q(this.pointer, t, e)), this.pointer = t, this;\n }\n smoothCurveTo(t, e) {\n const { endTangent: n, startTangent: i, startFactor: s, endFactor: o } = et(e), a = this.pendingSegments.length ? this.pendingSegments[this.pendingSegments.length - 1] : null, c = v(this.pointer, t) / 3;\n let h;\n i ? h = i : a ? h = a.tangentAtLastPoint : h = [1, 0], h = b(h);\n const m = [\n this.pointer[0] + h[0] * s * c,\n this.pointer[1] + h[1] * s * c\n ];\n let l = n;\n l = b(l);\n const P = [\n t[0] - l[0] * o * c,\n t[1] - l[1] * o * c\n ];\n return this.cubicBezierCurveTo(t, m, P);\n }\n smoothCurve(t, e, n) {\n return this.smoothCurveTo(\n [t + this.pointer[0], e + this.pointer[1]],\n n\n );\n }\n customCorner(t, e = \"fillet\") {\n if (!this.pendingSegments.length)\n throw new Error(\"You need a segment defined to fillet the angle\");\n return t ? (this._nextCorner = { mode: e, radius: t }, this) : this;\n }\n _customCornerLastWithFirst(t, e = \"fillet\") {\n if (!t) return;\n const n = this.pendingSegments.pop(), i = this.pendingSegments.shift();\n if (!n || !i)\n throw new Error(\"Not enough curves to close and fillet\");\n const s = e === \"chamfer\" ? D : E;\n this.pendingSegments.push(...s(n, i, t));\n }\n close(t = !1) {\n if (!this.pendingSegments.length) throw new Error(\"No segments to close\");\n const e = this.pendingSegments[0], n = this.pendingSegments.at(-1);\n return A(e.firstPoint, n.lastPoint) || this.lineTo(e.firstPoint), this._nextCorner !== null && (this._customCornerLastWithFirst(\n this._nextCorner.radius,\n this._nextCorner.mode\n ), this._nextCorner = null), y(this.pendingSegments, { ignoreChecks: t });\n }\n closeWithMirror(t = !1) {\n if (!this.pendingSegments.length) throw new Error(\"No segments to close\");\n const e = this.pendingSegments[0], n = this.pendingSegments.at(-1), i = L(\n n.lastPoint,\n e.firstPoint\n ), s = new $().mirrorLine(\n i,\n e.firstPoint\n ), o = this.pendingSegments.map(\n (a) => a.transform(s).reverse()\n );\n return o.reverse(), y(\n [...this.pendingSegments, ...o],\n { ignoreChecks: t }\n );\n }\n asStrand() {\n return new J([...this.pendingSegments]);\n }\n get isClosed() {\n var t;\n return A(this.pointer, (t = this.pendingSegments[0]) == null ? void 0 : t.firstPoint);\n }\n}\nfunction ot(r = [0, 0]) {\n return new nt(r);\n}\nexport {\n C as D,\n ot as d,\n x as o\n};\n//# sourceMappingURL=draw-DqsKIWJD.js.map\n","import { L as $, A as f, E as l, R as u, Q as e, C as h } from \"./QuadraticBezier-BzVqiExF.js\";\nfunction i([t, n]) {\n return `${t} ${n}`;\n}\nfunction s(t) {\n if (t instanceof $)\n return `L ${i(t.lastPoint)}`;\n if (t instanceof f)\n return `A ${t.radius} ${t.radius} 0 ${t.angularLength > Math.PI ? \"1\" : \"0\"} ${t.clockwise ? \"0\" : \"1\"} ${i(t.lastPoint)}`;\n if (t instanceof l)\n return `A ${t.majorRadius} ${t.minorRadius} ${t.tiltAngle * u} ${t.deltaAngle > Math.PI ? \"1\" : \"0\"} ${t.clockwise ? \"0\" : \"1\"} ${i(t.lastPoint)}`;\n if (t instanceof e)\n return `Q ${[\n i(t.controlPoint),\n i(t.lastPoint)\n ].join(\" \")}`;\n if (t instanceof h)\n return `C ${[\n i(t.firstControlPoint),\n i(t.lastControlPoint),\n i(t.lastPoint)\n ].join(\" \")}`;\n throw new Error(\"Unknown segment type\");\n}\nfunction w(t) {\n const n = `M ${t.firstPoint.join(\" \")}`, o = t.segments.map(s).join(\" \");\n return `${n} ${o} Z`;\n}\nfunction p(t) {\n return `<path d=\"${t.allLoops.map(w).join(\" \")}\" />`;\n}\nfunction d(t) {\n return `<g>\n ${t.figures.map(p).join(`\n`)}\n</g>`;\n}\nfunction j(t) {\n const n = `M ${t.firstPoint.join(\" \")}`, o = t.segments.map(s).join(\" \");\n return `${n} ${o}`;\n}\nfunction v(t, n = 1) {\n const o = t.xMin - n, r = t.yMin - n;\n return `${o} ${r} ${t.width + 2 * n} ${t.height + 2 * n}`;\n}\nfunction A(t, n, o = 1, r) {\n const a = v(n, o), c = r ? `width=\"${n.width + 2 * o}${r}\" height=\"${n.height + 2 * o}${r}\"` : \"\";\n return `<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"${a}\" fill=\"none\" stroke=\"black\" stroke-width=\"0.2%\" vector-effect=\"non-scaling-stroke\" ${c}>\n ${t}\n</svg>`;\n}\nexport {\n p as a,\n w as b,\n j as c,\n s as d,\n v as e,\n d as s,\n A as w\n};\n//# sourceMappingURL=svg-BylQQgsL.js.map\n","var lt = Object.defineProperty;\nvar ut = (t, e, n) => e in t ? lt(t, e, { enumerable: !0, configurable: !0, writable: !0, value: n }) : t[e] = n;\nvar p = (t, e, n) => ut(t, typeof e != \"symbol\" ? e + \"\" : e, n);\nimport { o as gt, D } from \"./draw-DqsKIWJD.js\";\nimport { d as Pe } from \"./draw-DqsKIWJD.js\";\nimport { F as d, L as P, D as g, a as B, s as ht, b as pt, c as dt, i as mt, S as C, l as Pt, p as wt, d as Mt, e as X, g as It } from \"./models-WQ-B7GSL.js\";\nimport { h as Me } from \"./models-WQ-B7GSL.js\";\nimport { r as St, z as bt, l as Lt, f as w, n as Y, i as E, a as vt, s as kt, k as At, m as j, L as S, A as b, d as M, t as Et, c as yt, B as Ft, E as Ct, Q as xt, C as Dt } from \"./QuadraticBezier-BzVqiExF.js\";\nimport { s as Rt, a as Ot, b as Bt, c as $t, d as Gt, w as z } from \"./svg-BylQQgsL.js\";\nfunction I(t) {\n if (t instanceof d)\n return [t];\n if (t instanceof P)\n return [new d(t)];\n if (t instanceof g)\n return t.figures;\n throw new Error(\"Unknown shape\");\n}\nfunction tt(t, e, n = 1e-9) {\n let s = [];\n const r = [], i = new Array(e.segments.length).fill(0).map(() => []);\n e.segments.forEach((c, f) => {\n t.segments.forEach((a) => {\n const { intersections: u, overlaps: m } = B(\n c,\n a,\n n\n );\n s.push(...u), i[f].push(...u), r.push(...m);\n const h = m.flatMap((l) => [\n l.firstPoint,\n l.lastPoint\n ]);\n s.push(...h), i[f].push(...h);\n });\n }), s = St(s, n);\n const o = bt([e.segments, i]).flatMap(([c, f]) => f.length ? c.splitAt(f) : [c]);\n return Array.from(\n ht(\n o,\n s,\n r\n )\n );\n}\nfunction $(t, e, n = !1) {\n return tt(e, t).filter((r) => {\n const i = r.segments[0].midPoint;\n return e.onStroke(i) ? !n : !e.contains(i);\n });\n}\nfunction G(t, e, n = !1) {\n return tt(e, t).filter((r) => {\n const i = r.segments[0].midPoint;\n return e.onStroke(i) ? !n : e.contains(i);\n });\n}\nfunction V(t, e, n = !1) {\n const s = $(\n t,\n e.contour,\n n\n ), r = e.holes.flatMap(\n (i) => G(t, i, n)\n );\n return [...s, ...r];\n}\nfunction _(t, e, n = !1) {\n let s = G(\n t,\n e.contour,\n n\n );\n return e.holes.forEach((r) => {\n s = s.flatMap(\n (i) => $(i, r, n)\n );\n }), s;\n}\nfunction Tt(t, e) {\n return new g(\n pt(I(t), I(e))\n );\n}\nfunction y(t) {\n return t.reduce(\n (e, n) => Tt(e, n),\n new g()\n );\n}\nfunction et(t, e) {\n return new g(\n dt(I(t), I(e))\n );\n}\nfunction oe(t, e) {\n return new g(\n mt(I(t), I(e))\n );\n}\nfunction ae(t, e, n = !0) {\n if (e instanceof P)\n return $(t, e, n);\n if (e instanceof d)\n return V(t, e, n);\n let s = [new C([...t.segments])];\n return e.figures.forEach((r) => {\n s = s.flatMap((i) => V(i, r, n));\n }), s;\n}\nfunction ce(t, e, n = !1) {\n if (e instanceof P)\n return G(t, e, n);\n if (e instanceof d)\n return _(t, e, n);\n let s = [new C([...t.segments])];\n return e.figures.forEach((r) => {\n s = s.flatMap((i) => _(i, r, n));\n }), s;\n}\nfunction N(t) {\n return t < 0 ? \"before\" : t > 1 ? \"after\" : \"between\";\n}\nconst q = (t, e, n) => {\n if (n === \"before\")\n return t.distanceFrom(e.firstPoint);\n if (n === \"after\")\n return t.distanceFrom(e.lastPoint);\n throw new Error(\"Invalid position\");\n};\nfunction Ut(t, e) {\n const n = Lt(t, e);\n if (n === \"parallel\")\n return Math.min(\n t.distanceFrom(e.firstPoint),\n t.distanceFrom(e.lastPoint)\n );\n const { intersectionParam1: s, intersectionParam2: r } = n, i = N(s), o = N(r);\n if (i === \"between\" && o === \"between\")\n return 0;\n if (i === \"between\" && o !== \"between\")\n return q(t, e, o);\n if (o === \"between\" && i !== \"between\")\n return q(e, t, i);\n if (i === \"before\" && o === \"before\")\n return w(t.firstPoint, e.firstPoint);\n if (i === \"after\" && o === \"after\")\n return w(t.lastPoint, e.lastPoint);\n if (i === \"before\" && o === \"after\")\n return w(t.firstPoint, e.lastPoint);\n if (i === \"after\" && o === \"before\")\n return w(t.lastPoint, e.firstPoint);\n throw new Error(\"Invalid position\");\n}\nfunction J(t, e) {\n if (Pt(t, e).length > 0)\n return 0;\n const n = wt(t, e.center);\n if (t.isOnSegment(n)) {\n const s = w(n, e.center);\n if (Math.abs(s - e.radius) < t.precision && e.isOnSegment(n))\n return 0;\n if (s - e.radius > t.precision) {\n const r = Y(\n E(n, e.center)\n ), i = vt(\n e.center,\n kt(r, e.radius)\n );\n if (e.isOnSegment(i))\n return w(i, n);\n }\n }\n return Math.min(\n e.distanceFrom(t.firstPoint),\n e.distanceFrom(t.lastPoint),\n t.distanceFrom(e.firstPoint),\n t.distanceFrom(e.lastPoint)\n );\n}\nconst zt = (t, e) => {\n const n = t.angleToParam(e.firstAngle);\n if (t.isValidParameter(n)) return !0;\n const s = t.angleToParam(e.lastAngle);\n return !!t.isValidParameter(s);\n};\nfunction Vt(t, e) {\n if (Mt(t, e, !0).length > 0) return 0;\n const n = w(t.center, e.center);\n if (n < t.precision && zt(t, e))\n return Math.abs(t.radius - e.radius);\n const s = Y(E(e.center, t.center)), r = n - Math.abs(t.radius - e.radius) < t.precision;\n let i = At(s);\n r && e.radius > t.radius && (i += Math.PI);\n const o = r ? i : i + Math.PI, c = t.angleToParam(i), f = e.angleToParam(o);\n return t.isValidParameter(c) && e.isValidParameter(f) ? w(t.paramPoint(c), e.paramPoint(f)) : Math.min(\n t.distanceFrom(e.firstPoint),\n t.distanceFrom(e.lastPoint),\n e.distanceFrom(t.firstPoint),\n e.distanceFrom(t.lastPoint)\n );\n}\nfunction _t(t, e, n) {\n let s = 0, r = t.length - 1;\n for (; s <= r; ) {\n const i = Math.floor((s + r) / 2), o = n(t[i], e);\n if (o < 0)\n s = i + 1;\n else if (o > 0)\n r = i - 1;\n else\n return i;\n }\n return -(s + 1);\n}\nfunction Nt(t, e, n) {\n const s = _t(t, e, n);\n s < 0 ? t.splice(-(s + 1), 0, e) : t.splice(s, 0, e);\n}\nclass qt {\n constructor() {\n p(this, \"buckets\");\n this.buckets = [];\n }\n addInterval(e) {\n const n = this.buckets[e.rectangle.diagonalBucketIndex];\n n === void 0 ? this.buckets[e.rectangle.diagonalBucketIndex] = [e] : Nt(n, e, (s, r) => s.value - r.value);\n }\n removeInterval(e) {\n const n = this.buckets[e.rectangle.diagonalBucketIndex];\n if (n === void 0)\n throw new Error(\"Interval not found\");\n n.shift();\n }\n getBottomRightHullIntervals() {\n const e = [];\n for (let n = this.buckets.length - 1; n >= 0; n--) {\n const s = this.buckets[n];\n if (!s === void 0) continue;\n const r = s[0];\n if (r !== void 0) {\n if (!e.length) {\n e.push(r);\n continue;\n }\n for (; e.length && e[e.length - 1].value >= r.value; )\n e.pop();\n for (; e.length >= 2; ) {\n const i = e[e.length - 1], o = e[e.length - 2], c = (r.value - o.value) / ((r.rectangle.diagonal - o.rectangle.diagonal) * 2);\n if (o.value + (i.rectangle.diagonal - o.rectangle.diagonal) / 2 * c < i.value)\n e.pop();\n else\n break;\n }\n e.push(r);\n }\n }\n return e;\n }\n}\nclass Jt {\n constructor(e, n) {\n p(this, \"diagonal\");\n p(this, \"diagonalBucketIndex\");\n p(this, \"xLength\");\n p(this, \"yLength\");\n p(this, \"index\");\n this.x = e, this.y = n, this.xLength = Math.pow(3, -e), this.yLength = Math.pow(3, -n), this.diagonal = Math.sqrt(\n this.xLength * this.xLength + this.yLength * this.yLength\n ), this.diagonalBucketIndex = e + n, this.index = `${e},${n}`;\n }\n}\nclass Qt {\n constructor(e, n = 1e-8, s = 1e3, r = 1e-6) {\n p(this, \"rectangles\");\n p(this, \"buckets\");\n p(this, \"fMin\");\n p(this, \"argMin\");\n p(this, \"tol\");\n this.fcn = e, this.endTolerance = n, this.maxIterations = s, this.epsilon = r, this.fcn = e, this.epsilon = r, this.endTolerance = n, this.maxIterations = s, this.rectangles = /* @__PURE__ */ new Map(), this.buckets = new qt();\n const i = [0.5, 0.5], o = this.rect(0, 0), c = this.fcn(i);\n this.buckets.addInterval(new A(i, c, o)), this.fMin = c, this.argMin = i, this.tol = o.diagonal;\n }\n registerInterval(e) {\n this.buckets.addInterval(e), e.value <= this.fMin && (this.fMin = e.value, this.argMin = e.center, this.tol = e.rectangle.diagonal);\n }\n rect(e, n) {\n const s = `${e},${n}`;\n return this.rectangles.has(s) || this.rectangles.set(s, new Jt(e, n)), this.rectangles.get(s);\n }\n splitInterval(e) {\n let n, s, r;\n const [i, o] = e.center;\n return e.rectangle.x <= e.rectangle.y ? (n = this.rect(e.rectangle.x + 1, e.rectangle.y), s = [i - n.xLength, o], r = [i + n.xLength, o]) : (n = this.rect(e.rectangle.x, e.rectangle.y + 1), s = [i, o - n.yLength], r = [i, o + n.yLength]), [\n new A(s, this.fcn(s), n),\n new A(e.center, e.value, n),\n new A(r, this.fcn(r), n)\n ];\n }\n single_iteration() {\n const e = this.buckets.getBottomRightHullIntervals();\n for (; e.length >= 2; ) {\n const n = e[0], s = e[1], r = (s.value - n.value) / ((s.rectangle.diagonal - n.rectangle.diagonal) / 2), i = n.value - r * s.value / 2;\n if ((this.fMin - i) / Math.abs(this.fMin) < this.epsilon)\n e.shift();\n else\n break;\n }\n e.forEach((n) => {\n this.buckets.removeInterval(n);\n });\n for (const n of e) {\n const [s, r, i] = this.splitInterval(n);\n this.registerInterval(s), this.registerInterval(r), this.registerInterval(i);\n }\n }\n run() {\n let e = 0;\n for (; this.tol > this.endTolerance / 2 && (this.single_iteration(), e++, !(e > this.maxIterations)); )\n ;\n return {\n fMin: this.fMin,\n argMin: this.argMin,\n tol: this.tol,\n iterations: e\n };\n }\n}\nclass A {\n constructor(e, n, s) {\n this.center = e, this.value = n, this.rectangle = s;\n }\n}\nfunction Zt(t, e = 1e-8, n = 1e3, s = 1e-6) {\n return new Qt(\n t,\n e,\n n,\n s\n ).run();\n}\nfunction Ht(t, e, n = 1e-9) {\n const s = Zt((r) => {\n const i = t.paramPoint(r[0]), o = e.paramPoint(r[1]);\n return j(i, o);\n }, n);\n return Math.sqrt(s.fMin);\n}\nfunction Wt(t, e) {\n return t instanceof S && e instanceof S ? Ut(t, e) : t instanceof S && e instanceof b ? J(t, e) : t instanceof b && e instanceof S ? J(e, t) : t instanceof b && e instanceof b ? Vt(t, e) : Ht(t, e);\n}\nconst T = 1e-8;\nfunction R(t, e, n = !0) {\n const s = t.map((a) => ({\n offset: gt(a, e),\n original: a\n })), r = [];\n let i = n ? null : s.at(-1), o = n ? s.at(-1) : null;\n if (r.length === 1) return r;\n const c = (a) => {\n i ? a.offset instanceof D ? M(a.offset.firstPoint, a.offset.lastPoint) || r.push(\n new S(a.offset.firstPoint, a.offset.lastPoint)\n ) : r.push(a.offset) : i = a;\n }, f = function* () {\n for (const a of s.slice(0, -1))\n yield a;\n if (!i) throw new Error(\"Bug in the offset algorithm\");\n yield i;\n };\n for (const a of f()) {\n if (!o) {\n o = a;\n continue;\n }\n const u = o.offset.lastPoint, m = a.offset.firstPoint;\n if (M(u, m)) {\n c(o), o = a;\n continue;\n }\n let h = [];\n if (!(o.offset instanceof D) && !(a.offset instanceof D)) {\n const { intersections: L, overlaps: x } = B(\n o.offset,\n a.offset,\n T / 100\n );\n h = [\n ...L,\n ...x.flatMap((v) => [v.firstPoint, v.lastPoint])\n ];\n }\n if (h.length > 0) {\n let L = h[0];\n if (h.length > 1) {\n const ct = o == null ? void 0 : o.original.lastPoint, U = h.map(\n (ft) => j(ft, ct)\n );\n L = h[U.indexOf(Math.min(...U))];\n }\n const x = o.offset.splitAt([\n L\n ])[0], v = a.offset.splitAt([L]).at(-1);\n if (!v) throw new Error(\"Bug in the splitting algo in offset\");\n c({\n offset: x,\n original: o.original\n }), o = { offset: v, original: a.original };\n continue;\n }\n const l = o.original.lastPoint, k = yt(\n E(m, l),\n E(u, l)\n ) > 0, at = new b(u, m, l, k);\n c(o), r.push(at), o = a;\n }\n return o && c(o), r;\n}\nfunction nt(t) {\n const e = /* @__PURE__ */ new Map(), n = (s, r) => {\n const i = e.get(s) || [];\n e.set(s, [...i, ...r]);\n };\n return t.forEach((s, r) => {\n t.slice(r + 1).forEach((i, o) => {\n const { intersections: c, overlaps: f } = B(s, i, T), a = [\n ...c,\n ...f.flatMap((u) => [u.firstPoint, u.lastPoint])\n ].filter((u) => {\n const m = M(u, s.firstPoint) || M(u, s.lastPoint), h = M(u, i.firstPoint) || M(u, i.lastPoint);\n return !(m && h);\n });\n a.length && (n(r, a), n(o + r + 1, a));\n });\n }), e;\n}\nfunction st(t, e) {\n return e.flatMap((n, s) => {\n if (!t.has(s)) return n;\n const r = t.get(s);\n return r ? n.splitAt(r) : n;\n });\n}\nfunction it(t, e, n) {\n return t.filter((s) => !e.segments.some((i) => Wt(i, s) < Math.abs(n) - T));\n}\nfunction F(t, e) {\n const n = t.clockwise ? e : -e, s = R(t.segments, n);\n if (s.length < 2) return new g();\n const r = nt(s);\n if (!r.size) {\n const a = new P(s);\n return new g([new d(a)]);\n }\n const i = st(\n r,\n s\n ), o = it(i, t, e);\n if (!o.length) return new g();\n const f = X(o).filter((a) => a.length > 1).filter((a) => M(a[0].firstPoint, a.at(-1).lastPoint)).map((a) => new P(a));\n return f.length ? new g(f.map((a) => new d(a))) : new g();\n}\nfunction Kt(t, e, n = \"round\") {\n const s = e / 2, r = R(t.segments, s, !1), i = R(t.segments, -s, !1).map(\n (l) => l.reverse()\n );\n i.reverse();\n const o = (l, k) => n === \"round\" ? Et(\n l.lastPoint,\n k.firstPoint,\n l.tangentAtLastPoint\n ) : new S(l.lastPoint, k.firstPoint), c = [\n ...r,\n o(\n r[r.length - 1],\n i[0]\n ),\n ...i,\n o(\n i[i.length - 1],\n r[0]\n )\n ], f = nt(c);\n if (!f.size) {\n const l = new P(c);\n return new g([new d(l)]);\n }\n const a = st(\n f,\n c\n ), u = it(a, t, s);\n if (!u.length) return new g();\n const h = X(u).filter((l) => l.length > 1).filter((l) => M(l[0].firstPoint, l.at(-1).lastPoint)).map((l) => new P(l));\n return h.length ? new g(h.map((l) => new d(l))) : new g();\n}\nfunction Xt(t, e) {\n const n = t.map((s) => {\n const r = y(\n s.holes.map((i) => F(i, e))\n );\n return et(F(s.contour, e), r);\n });\n return y(n);\n}\nfunction Yt(t, e) {\n const n = Math.abs(e / 2), s = t.map(\n (r) => y(\n r.allLoops.map((i) => et(F(i, n), F(i, -n)))\n )\n );\n return y(s);\n}\nfunction fe(t, e) {\n return Xt(I(t), e);\n}\nfunction le(t, e, { endCap: n = \"round\" } = {}) {\n return t instanceof C ? Kt(t, e, n) : Yt(I(t), e);\n}\nfunction Q(t) {\n if (t instanceof g)\n return Rt(t);\n if (t instanceof d)\n return Ot(t);\n if (t instanceof P)\n return `<path d=\"${Bt(t)}\" />`;\n if (t instanceof C)\n return `<path d=\"${$t(t)}\" />`;\n if (It(t))\n return `<path d=\"${`M ${t.firstPoint.join(\" \")}`} ${Gt(\n t\n )}\" />`;\n throw new Error(\"Unknown shape type\");\n}\nconst Z = (t) => \"shape\" in t ? t.shape : t, H = (t, e) => {\n if (!(\"shape\" in t)) return e;\n const { color: n } = t;\n return n ? `<g stroke=\"${n}\">${e}</g>` : e;\n}, W = (t) => new Ft(t.xMin, -t.yMax, t.xMax, -t.yMin);\nfunction ue(t, {\n margin: e = 1,\n unit: n = null,\n viewBox: s\n} = {}) {\n if (Array.isArray(t)) {\n const i = t.map((f) => Z(f).mirror()), o = i.map((f, a) => H(t[a], Q(f))).join(`\n`), c = i.slice(1).reduce((f, a) => f.merge(a.boundingBox), i[0].boundingBox);\n return z(o, s ? W(s) : c, e, n);\n }\n const r = Z(t).mirror();\n return z(\n H(t, Q(r)),\n s ? W(s) : r.boundingBox,\n e,\n n\n );\n}\nconst rt = (t) => {\n if (t.type === \"LINE\")\n return new S(t.firstPoint, t.lastPoint);\n if (t.type === \"ARC\")\n return new b(\n t.firstPoint,\n t.lastPoint,\n t.center,\n t.clockwise\n );\n if (t.type === \"ELLIPSE_ARC\")\n return new Ct(\n t.firstPoint,\n t.lastPoint,\n t.center,\n t.majorRadius,\n t.minorRadius,\n t.tiltAngle,\n t.clockwise,\n { angleUnits: \"rad\" }\n );\n if (t.type === \"QUADRATIC_BEZIER\")\n return new xt(\n t.firstPoint,\n t.lastPoint,\n t.controlPoint\n );\n if (t.type === \"CUBIC_BEZIER\")\n return new Dt(\n t.firstPoint,\n t.lastPoint,\n t.firstControlPoint,\n t.lastControlPoint\n );\n throw new Error(\"Unknown segment type\");\n}, O = (t) => {\n const e = t.segments.map(rt);\n return new P(e);\n}, ot = (t) => {\n const e = O(t.contour), n = t.holes.map(O);\n return new d(e, n);\n}, jt = (t) => {\n const e = t.figures.map(ot);\n return new g(e);\n};\nfunction ge(t) {\n if (t.type === \"DIAGRAM\")\n return jt(t);\n if (t.type === \"FIGURE\")\n return ot(t);\n if (t.type === \"LOOP\")\n return O(t);\n if (t.type === \"LINE\" || t.type === \"ARC\" || t.type === \"ELLIPSE_ARC\" || t.type === \"CUBIC_BEZIER\")\n return rt(t);\n throw new Error(\"Unknown shape type\");\n}\nconst K = Math.PI / 180, te = 180 / Math.PI;\nfunction he(t, e) {\n const n = Math.cos(e * K) * t, s = Math.sin(e * K) * t;\n return [n, s];\n}\nfunction pe([t, e]) {\n const n = Math.sqrt(t * t + e * e), s = Math.atan2(e, t) * te;\n return [n, s];\n}\nexport {\n K as DEG2RAD,\n te as RAD2DEG,\n pe as cartesianToPolar,\n ce as confineStrand,\n et as cut,\n Pe as draw,\n ae as eraseStrand,\n Me as exportJSON,\n ue as exportSVG,\n Tt as fuse,\n y as fuseAll,\n ge as importJSON,\n oe as intersect,\n fe as offset,\n le as outlineStroke,\n he as polarToCartesian,\n Q as svgBody\n};\n//# sourceMappingURL=pantograph.js.map\n","import { cut, eraseStrand, exportSVG } from \"pantograph2d\";\nimport {\n Transformable,\n Diagram,\n Strand,\n TransformationMatrix,\n Stroke,\n} from \"pantograph2d/models\";\n\nexport class Dieline extends Transformable<Dieline> {\n public body: Diagram;\n public cutLines: Stroke[];\n public foldLinesBackwards: Stroke[];\n public foldLinesForwards: Stroke[];\n\n constructor(\n body: Diagram,\n {\n cutLines = [],\n foldLines = [],\n foldLinesForwards = [],\n foldLinesBackwards = [],\n }: {\n cutLines?: Stroke[];\n foldLines?: Stroke[];\n foldLinesBackwards?: Stroke[];\n foldLinesForwards?: Stroke[];\n } = {},\n ) {\n super();\n this.body = body;\n this.cutLines = [...cutLines];\n this.foldLinesBackwards = [...foldLines, ...foldLinesBackwards];\n this.foldLinesForwards = [...foldLinesForwards];\n }\n\n get foldLines() {\n return [...this.foldLinesForwards, ...this.foldLinesBackwards];\n }\n\n clone() {\n return new Dieline(this.body, {\n cutLines: [...this.cutLines],\n foldLinesForwards: [...this.foldLinesForwards],\n foldLinesBackwards: [...this.foldLinesBackwards],\n });\n }\n\n addCutLine(cut: Strand) {\n this.cutLines.push(cut);\n return this;\n }\n\n addFoldLine(fold: Strand, direction: \"forwards\" | \"backwards\" = \"backwards\") {\n if (direction === \"forwards\") {\n this.foldLinesForwards.push(fold);\n } else {\n this.foldLinesBackwards.push(fold);\n }\n }\n\n fuseFold(\n fold: Diagram | Dieline,\n direction: \"forwards\" | \"backwards\" = \"backwards\",\n ) {\n const otherBody: Diagram = fold instanceof Dieline ? fold.body : fold;\n\n const commonLines = this.body.overlappingStrands(otherBody);\n if (direction === \"forwards\") {\n this.foldLinesForwards.push(...commonLines);\n } else {\n this.foldLinesBackwards.push(...commonLines);\n }\n\n this.fuseBody(fold);\n return this;\n }\n\n fuseBody(other: Dieline | Diagram) {\n let otherBody: Diagram;\n\n if (other instanceof Dieline) {\n otherBody = other.body;\n this.cutLines.push(...other.cutLines);\n this.foldLinesForwards.push(...other.foldLinesForwards);\n this.foldLinesBackwards.push(...other.foldLinesBackwards);\n } else {\n otherBody = other;\n }\n\n this.body = this.body.fuse(otherBody);\n return this;\n }\n\n cutShape(shape: Diagram) {\n this.body = cut(this.body, shape);\n this.cutLines = this.cutLines.flatMap((cut) =>\n eraseStrand(cut, shape, true),\n );\n this.eraseFolds(shape);\n return this;\n }\n\n eraseFolds(shape: Diagram) {\n this.foldLinesBackwards = this.foldLinesBackwards.flatMap((fold) =>\n eraseStrand(fold, shape, true),\n );\n this.foldLinesForwards = this.foldLinesForwards.flatMap((fold) =>\n eraseStrand(fold, shape, true),\n );\n }\n\n transform(matrix: TransformationMatrix) {\n const newDieline = new Dieline(this.body.transform(matrix), {\n cutLines: this.cutLines.map((cut) => cut.transform(matrix)),\n foldLinesForwards: this.foldLinesForwards.map((fold) =>\n fold.transform(matrix),\n ),\n foldLinesBackwards: this.foldLinesBackwards.map((fold) =>\n fold.transform(matrix),\n ),\n });\n\n return newDieline;\n }\n\n asSVG() {\n const shapes: { shape: Diagram | Stroke; color: string }[] = [];\n if (this.body) {\n shapes.push({ shape: this.body, color: \"red\" });\n }\n if (this.cutLines.length) {\n this.cutLines.map((shape) => shapes.push({ shape, color: \"red\" }));\n }\n\n if (this.foldLinesBackwards.length) {\n this.foldLinesBackwards.map((shape) =>\n shapes.push({ shape, color: \"green\" }),\n );\n }\n\n if (this.foldLinesForwards.length) {\n this.foldLinesForwards.map((shape) =>\n shapes.push({ shape, color: \"blue\" }),\n );\n }\n\n return exportSVG(shapes, { unit: \"mm\" });\n }\n}\n","import { draw } from \"pantograph2d\";\n\nexport type FlapContractionMode = \"rounded\" | \"sharp\";\nexport type HorizontalFlapOptions = {\n fillet?: number;\n contraction?: number;\n contractionMode?: FlapContractionMode;\n contractionLeft?: number;\n contractionRight?: number;\n leftContractionMode?: FlapContractionMode;\n rightContractionMode?: FlapContractionMode;\n};\nexport type VerticalFlapTopOptions = HorizontalFlapOptions & {\n contractionTop?: number;\n contractionBottom?: number;\n topContractionMode?: FlapContractionMode;\n bottomContractionMode?: FlapContractionMode;\n};\n\nfunction drawFlap(\n width: number,\n height: number,\n {\n fillet = 1,\n contraction = 1,\n contractionMode = \"rounded\",\n contractionLeft: contractionLeftInput,\n contractionRight: contractionRightInput,\n leftContractionMode,\n rightContractionMode,\n }: HorizontalFlapOptions = {},\n) {\n const contractionLeft = contractionLeftInput ?? contraction;\n const contractionRight = contractionRightInput ?? contraction;\n\n const flapMaker = draw([-width / 2, 0]).hLine(width);\n\n if (contractionRight) {\n if ((rightContractionMode ?? contractionMode) === \"rounded\") {\n flapMaker.tangentArc(-contractionRight, contractionRight, [-1, 0]);\n flapMaker.vLine(height - contractionRight);\n } else {\n flapMaker.line(-contractionRight, height);\n }\n } else {\n flapMaker.vLine(height);\n }\n\n flapMaker.customCorner(fillet);\n flapMaker.hLine(-width + contractionLeft + contractionRight);\n flapMaker.customCorner(fillet);\n\n if (contractionLeft) {\n if ((leftContractionMode ?? contractionMode) === \"rounded\") {\n flapMaker.vLine(-height + contractionLeft);\n flapMaker.tangentArcTo([-width / 2, 0]);\n } else {\n flapMaker.lineTo([-width / 2, 0]);\n }\n } else {\n flapMaker.vLine(-height);\n }\n\n return flapMaker.close();\n}\n\nexport function topFlap(\n width: number,\n height: number,\n options: HorizontalFlapOptions = {},\n) {\n return drawFlap(width, height, options);\n}\n\nexport function bottomFlap(\n width: number,\n height: number,\n options: HorizontalFlapOptions = {},\n) {\n return drawFlap(width, height, options).mirror(\"x\");\n}\n\nexport function leftFlap(\n width: number,\n height: number,\n {\n contractionTop,\n contractionBottom,\n topContractionMode,\n bottomContractionMode,\n ...options\n }: VerticalFlapTopOptions = {},\n) {\n return drawFlap(width, height, {\n contractionLeft: contractionTop,\n contractionRight: contractionBottom,\n leftContractionMode: topContractionMode,\n rightContractionMode: bottomContractionMode,\n ...options,\n }).rotate(90);\n}\n\nexport function rightFlap(\n width: number,\n height: number,\n options: VerticalFlapTopOptions = {},\n) {\n return leftFlap(width, height, options).mirror(\"y\");\n}\n\nexport const drawFlaps = {\n right: rightFlap,\n left: leftFlap,\n top: topFlap,\n bottom: bottomFlap,\n};\n","import { draw } from \"pantograph2d\";\nimport {\n Diagram,\n Strand,\n Transformable,\n TransformationMatrix,\n} from \"pantograph2d/models\";\nimport { Dieline } from \"./Dieline.js\";\n\nconst drawBump = (width: number, height: number) => {\n return draw([-width / 2, 0])\n .line(height, -height)\n .hLine(width - 2 * height)\n .line(height, height);\n};\n\n// A helper class to create bumps for locking parts together without glue\nexport class FoldLockBump extends Transformable<FoldLockBump> {\n cut: Strand;\n unfold: Diagram;\n bump: Diagram;\n constructor(\n width: number | { cut: Strand; unfold: Diagram; bump: Diagram },\n paperThickness = 0.2,\n ) {\n super();\n\n if (typeof width !== \"number\") {\n this.cut = width.cut;\n this.unfold = width.unfold;\n this.bump = width.bump;\n return;\n }\n\n const pen = drawBump(width, paperThickness * 2.5);\n\n this.cut = pen.asStrand();\n this.unfold = pen.close();\n\n this.bump = drawBump(width - 5 * paperThickness, 5 * paperThickness)\n .close()\n .mirror(\"x\");\n }\n\n clone() {\n return new FoldLockBump(this);\n }\n\n transform(matrix: TransformationMatrix) {\n return new FoldLockBump({\n cut: this.cut.transform(matrix),\n unfold: this.unfold.transform(matrix),\n bump: this.bump.transform(matrix),\n });\n }\n\n makeCut(dieline: Dieline) {\n dieline.eraseFolds(this.unfold);\n dieline.addCutLine(this.cut);\n }\n\n fuseBump(dieline: Dieline) {\n dieline.fuseBody(this.bump);\n }\n}\n","import { Vector } from \"pantograph2d\";\nimport { Transformable, TransformationMatrix } from \"pantograph2d/models\";\n\ninterface Clonable {\n clone(): this;\n}\n\ninterface Translatable {\n translateTo(point: Vector): this;\n}\n\nclass PointsDistribution extends Transformable<PointsDistribution> {\n constructor(public points: Vector[]) {\n super();\n this.points = points;\n }\n\n transform(matrix: TransformationMatrix) {\n return new PointsDistribution(this.points.map(matrix.transform));\n }\n\n distribute<T extends Translatable>(s: T): T[] {\n return this.points.map((p) => s.translateTo(p));\n }\n\n cloneDistribute<T extends Translatable & Clonable>(s: T): T[] {\n return this.points.map((p) => s.clone().translateTo(p));\n }\n}\n\nexport function linearDistribution(\n totalWidth: number,\n objectWidth: number,\n gapShare = 3,\n margin = 0,\n) {\n if (totalWidth <= objectWidth * 2) {\n throw new Error(\"totalWidth must be greater than twice the objectWidth\");\n }\n\n const objectsCount = Math.max(\n Math.floor((totalWidth - 2 * margin) / (objectWidth * (gapShare + 1))),\n 2,\n );\n const freeSpace = totalWidth - 2 * margin - objectsCount * objectWidth;\n const gapSize = freeSpace / (objectsCount - 1);\n const points: number[] = [];\n for (let i = 0; i < objectsCount; i++) {\n points.push(\n margin + i * (objectWidth + gapSize) - totalWidth / 2 + objectWidth / 2,\n );\n }\n return new PointsDistribution(points.map((p) => [p, 0]));\n}\n\nexport function linearSpread(\n gap: number,\n count: number,\n direction: \"x\" | \"y\" = \"x\",\n) {\n const totalLength = gap * (count - 1);\n const points: number[] = [];\n for (let i = 0; i < count; i++) {\n points.push(i * gap - totalLength / 2);\n }\n return new PointsDistribution(\n points.map((p) => (direction.toLowerCase() === \"x\" ? [p, 0] : [0, p])),\n );\n}\n"],"names":["Be","Me","r","Oe","s","q","oe","ot","le","Lt","t","he","Dt","ft$1","ft","n","ce","ye","Te","fe","Ue","Z","W","ut","X","It","an","wt","Rt","J","St","Pe","H","Tt","Ye","We","Ie","i","rt","Wt","Qe","Mt","l","a","u","c","g","d","w","E","Ge","Xe","et$3","et","Ze","e","lt","Ft","o","h","Je","Jt","gt","Xt","me","un","zt","at","cn","fn","be","Bt","Ee","_e","Ke","He","L","S","k","D","v","Ce","qe","$","ts","Ct","es","ss","ns","is","rs","os","ls","tt","je","Ot","Fe","hs","xe","us","Se","cs","nt","it","Pt","bt","ge","we","ae","Ut","Kt","yt","fs","ms","gs","ws","ps","ds","Ms","ys","Ps","bs","Es","_s","js","Ss","ks","Rs","vs","Ts","V$1","V","_","m","b","j","C","F","I","O","x","N","A","B","U","z","G","Q","Y","se","ne","ie","re","xt","At","Vt","Nt","$t","ke","Is","qt","ue","dt","K","Zt","pt","Ht","Cs","ct","qs","Fs","xs","As","Vs","Qt","Ns","$s","Ae","Ls","st","te$1","ht","pe","vt$1","Ds","vt","Ve","te","Gt","zs","Bs","Os","Us","Ys","Ws","Ne","Qs","Gs","Xs","Zs","Yt","$e","Le","Js","De","Re","Ks","Hs","ee","kt","ze","gn","ve","mt","tn","en","sn","nn","rn","de","Et","p","P","jt","ln","wn","on","_t","pn","f","dn","mn","T","M","Pn","xn","Sn","R","yn","bn","Cn","Mn","An","In","En","Y$1","Fn","Bn","vn","kn","_n","On","Tn","y","Ln","zn","qn","Dn","Rn","Vn","Nn","Un","jn","$n","Hn","Xn","Yn","Gn","Qn","Wn","Jn","Kn","Zn","hn","Dieline","Transformable","body","cutLines","foldLines","foldLinesForwards","foldLinesBackwards","__publicField","cut","fold","direction","otherBody","commonLines","other","shape","eraseStrand","matrix","shapes","exportSVG","drawFlap","width","height","fillet","contraction","contractionMode","contractionLeftInput","contractionRightInput","leftContractionMode","rightContractionMode","contractionLeft","contractionRight","flapMaker","draw","topFlap","options","bottomFlap","leftFlap","contractionTop","contractionBottom","topContractionMode","bottomContractionMode","rightFlap","drawFlaps","drawBump","FoldLockBump","paperThickness","pen","dieline","PointsDistribution","points","linearDistribution","totalWidth","objectWidth","gapShare","margin","objectsCount","gapSize","linearSpread","gap","count","totalLength"],"mappings":"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"}