dielines 0.6.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dielines.js +3339 -2218
- package/dist/dielines.js.map +1 -1
- package/dist/dielines.umd.cjs +15 -15
- package/dist/dielines.umd.cjs.map +1 -1
- package/dist/examples/framePieces.d.ts +3 -0
- package/dist/examples/noGlueTray.d.ts +4 -0
- package/dist/{types → src}/Dieline.d.ts +2 -2
- package/dist/{types → src}/FoldLockBump.d.ts +2 -2
- package/dist/{types → src}/drawFlaps.d.ts +4 -4
- package/dist/{types → src}/linearDistribution.d.ts +2 -2
- package/dist/src/main.d.ts +4 -0
- package/package.json +10 -10
- package/dist/types/main.d.ts +0 -4
package/dist/dielines.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dielines.js","sources":["../../pantograph/dist/Diagram-d848c815.js","../../pantograph/dist/draw-a830827a.js","../../pantograph/dist/pantograph.js","../src/Dieline.ts","../src/drawFlaps.ts","../src/FoldLockBump.ts","../src/linearDistribution.ts"],"sourcesContent":["function yt(i, t, n, e) {\n return i <= e && t >= n;\n}\nclass it {\n constructor(t = 1 / 0, n = 1 / 0, e = -1 / 0, s = -1 / 0) {\n this.xMin = t, this.yMin = n, this.xMax = e, 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 contains(t) {\n const [n, e] = t;\n return yt(this.xMin, this.xMax, n, n) && yt(this.yMin, this.yMax, e, e);\n }\n overlaps(t) {\n return yt(this.xMin, this.xMax, t.xMin, t.xMax) && yt(this.yMin, this.yMax, t.yMin, t.yMax);\n }\n addPoint(t) {\n const [n, e] = t;\n return new it(\n Math.min(this.xMin, n),\n Math.min(this.yMin, e),\n Math.max(this.xMax, n),\n Math.max(this.yMax, e)\n );\n }\n merge(t) {\n return new it(\n Math.min(this.xMin, t.xMin),\n Math.min(this.yMin, t.yMin),\n Math.max(this.xMax, t.xMax),\n Math.max(this.yMax, t.yMax)\n );\n }\n}\nfunction De(i) {\n return i.reduce((t, n) => t.addPoint(n), new it());\n}\nconst Jt = (i, t = 1e-9) => {\n let n = i;\n return Math.abs(i) < t && (n = 0), n.toFixed(-Math.log10(t));\n};\nfunction ct(i, t = 1e-9) {\n return Array.from(\n new Map(\n i.map(([n, e]) => [\n `[${Jt(n, t)},${Jt(e, t)}]`,\n [n, e]\n ])\n ).values()\n );\n}\nconst Lt = Math.PI / 180, Ue = 180 / Math.PI, T = (i) => `[${i[0]}, ${i[1]}]`, E = ([i, t], [n, e], s = 1e-9) => Math.abs(i - n) <= s && Math.abs(t - e) <= s, O = ([i, t], [n, e]) => [i + n, t + e], A = ([i, t], [n, e]) => [i - n, t - e], jt = ([i, t]) => i * i + t * t, D = ([i, t], n) => [i * n, t * n], mt = ([i, t], [n, e] = [0, 0]) => (i - n) ** 2 + (t - e) ** 2, q = (i, t = [0, 0]) => Math.sqrt(mt(i, t));\nfunction at([i, t], [n, e]) {\n return i * e - t * n;\n}\nfunction $t([i, t], [n, e]) {\n return i * n + t * e;\n}\nfunction W([i, t]) {\n const n = q([i, t]);\n return [i / n, t / n];\n}\nfunction ft(i, t) {\n const n = Math.cos(t) * i, e = Math.sin(t) * i;\n return [n, e];\n}\nfunction Ye([i, t]) {\n return Math.atan2(t, i);\n}\nfunction Xe(i) {\n const t = q(i), n = Ye(i);\n return [t, n];\n}\nfunction Vt(i, t, n = 1e-9) {\n const e = at(i, t), s = jt(i), r = jt(t);\n return e * e < s * r * n * n;\n}\nfunction J(i) {\n return [-i[1], i[0]];\n}\nfunction bt(i) {\n return [i[1], -i[0]];\n}\nfunction Ge(i, t, n) {\n return E(n, i) || Vt(A(n, i), t);\n}\nconst ot = (i, t) => {\n const [n, e, s, r, o, h, u, l, c] = i, [a, g, w, m, d, P, f, p, y] = t;\n return [\n n * a + e * m + s * f,\n n * g + e * d + s * p,\n n * w + e * P + s * y,\n r * a + o * m + h * f,\n r * g + o * d + h * p,\n r * w + o * P + h * y,\n u * a + l * m + c * f,\n u * g + l * d + c * p,\n u * w + l * P + c * y\n ];\n}, We = (i) => {\n const [t, n, e, s, r, o, h, u, l] = i, c = t * (r * l - o * u) - n * (s * l - o * h) + e * (s * u - r * h);\n return [\n (r * l - o * u) / c,\n (e * u - n * l) / c,\n (n * o - e * r) / c,\n (o * h - s * l) / c,\n (t * l - e * h) / c,\n (e * s - t * o) / c,\n (s * u - r * h) / c,\n (n * h - t * u) / c,\n (t * r - n * s) / c\n ];\n}, Je = (i) => {\n const [t, n, e, s, r, o, h, u, l] = i;\n return [t, s, h, n, r, u, e, o, l];\n};\nclass V {\n constructor(t) {\n this._matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1], t && (this._matrix = [...t]);\n }\n clone() {\n return new V(this._matrix);\n }\n transpose() {\n return this._matrix = Je(this._matrix), this;\n }\n inverse() {\n return this._matrix = We(this._matrix), this;\n }\n translate(t, n) {\n return this._matrix = ot(this._matrix, [1, 0, t, 0, 1, n, 0, 0, 1]), this;\n }\n rotate(t, n) {\n const e = Math.cos(t), s = Math.sin(t), r = [e, -s, 0, s, e, 0, 0, 0, 1];\n return n && this.translate(n[0], n[1]), this._matrix = ot(this._matrix, r), n && this.translate(-n[0], -n[1]), this;\n }\n mirrorX() {\n return this._matrix = ot(this._matrix, [1, 0, 0, 0, -1, 0, 0, 0, 1]), this;\n }\n mirrorY() {\n return this._matrix = ot(this._matrix, [-1, 0, 0, 0, 1, 0, 0, 0, 1]), this;\n }\n mirrorLine(t, n) {\n const [e, s] = t, r = Math.atan2(s, e);\n return n && this.translate(n[0], n[1]), this.rotate(r), this.mirrorX(), this.rotate(-r), n && this.translate(-n[0], -n[1]), this;\n }\n mirrorCenter(t) {\n return t && this.translate(t[0], t[1]), this._matrix = ot(this._matrix, [-1, 0, 0, 0, -1, 0, 0, 0, 1]), t && this.translate(-t[0], -t[1]), this;\n }\n scale(t, n) {\n return n && this.translate(n[0], n[1]), this._matrix = ot(this._matrix, [t, 0, 0, 0, t, 0, 0, 0, 1]), n && this.translate(-n[0], -n[1]), this;\n }\n transform(t) {\n const [n, e] = t, [s, r, o, h, u, l] = this._matrix;\n return [s * n + r * e + o, h * n + u * e + l];\n }\n transformAngle(t) {\n const [n, e] = this.transform([Math.cos(t), Math.sin(t)]), [s, r] = this.transform([0, 0]);\n return Math.atan2(e - r, n - s);\n }\n keepsOrientation() {\n const [t, , , , n] = this._matrix;\n return t * n > 0;\n }\n scaleFactor() {\n const [t, , , n] = this._matrix;\n return Math.sqrt(t * t + n * n);\n }\n}\nclass _t {\n translateX(t) {\n const n = new V().translate(t, 0);\n return this.transform(n);\n }\n translateY(t) {\n const n = new V().translate(0, t);\n return this.transform(n);\n }\n translate(t, n) {\n const e = new V().translate(t, n);\n return this.transform(e);\n }\n translateTo([t, n]) {\n const e = new V().translate(t, n);\n return this.transform(e);\n }\n rotate(t, n) {\n const e = new V().rotate(\n t * Lt,\n n\n );\n return this.transform(e);\n }\n scale(t, n) {\n const e = new V().scale(t, n);\n return this.transform(e);\n }\n mirrorCenter(t) {\n const n = new V().mirrorCenter(t);\n return this.transform(n);\n }\n mirror(t = \"x\", n) {\n const e = new V();\n return t === \"x\" ? e.mirrorX() : t === \"y\" ? e.mirrorY() : e.mirrorLine(t, n), this.transform(e);\n }\n}\nclass zt extends _t {\n constructor(t, n) {\n super(), this.firstPoint = t, this.lastPoint = n, this.precision = 1e-9, this.firstPoint = t, this.lastPoint = n;\n }\n get repr() {\n return `${this.segmentType} ${T(this.firstPoint)} - ${T(\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 R extends zt {\n constructor() {\n super(...arguments), this.segmentType = \"LINE\", this._V = null, this._slope = null, this._yIntercept = null, this._boundingBox = null;\n }\n isValidParameter(t) {\n const n = this.length * this.precision;\n return t >= -n && 1 - t >= -n;\n }\n paramPoint(t) {\n return O(this.firstPoint, D(this.V, t));\n }\n get length() {\n return q(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 = A(this.lastPoint, this.firstPoint)), this._V;\n }\n get slope() {\n if (this._slope === null) {\n const [t, n] = this.V;\n this._slope = n / t;\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 O(this.firstPoint, D(this.V, 0.5));\n }\n isSame(t) {\n return t instanceof R ? E(this.firstPoint, t.firstPoint) && E(this.lastPoint, t.lastPoint) || E(this.lastPoint, t.firstPoint) && E(this.firstPoint, t.lastPoint) : !1;\n }\n clone() {\n return new R(this.firstPoint, this.lastPoint);\n }\n reverse() {\n return new R(this.lastPoint, this.firstPoint);\n }\n get boundingBox() {\n return this._boundingBox === null && (this._boundingBox = new it(\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(t) {\n const n = A(t, this.firstPoint), e = $t(n, this.V) / this.squareLength;\n if (e < 0)\n return q(t, this.firstPoint);\n if (e > 1)\n return q(t, this.lastPoint);\n const s = this.paramPoint(e);\n return q(t, s);\n }\n isOnSegment(t) {\n if (E(t, this.firstPoint, this.precision))\n return !0;\n const n = A(t, this.firstPoint);\n if (!Vt(this.V, n))\n return !1;\n const e = $t(n, this.V) / this.squareLength;\n return this.isValidParameter(e);\n }\n gradientAt(t) {\n return this.V;\n }\n tangentAt(t) {\n if (!this.isOnSegment(t))\n throw new Error(\"Point is not on segment\");\n return W(this.V);\n }\n get normalVector() {\n return J(W(this.V));\n }\n get tangentAtFirstPoint() {\n return W(this.V);\n }\n get tangentAtLastPoint() {\n return W(this.V);\n }\n splitAt(t) {\n let n;\n if (Array.isArray(t) && t.length === 0)\n return [this];\n Array.isArray(t[0]) ? n = t : n = [t], n.forEach((u) => {\n if (!this.isOnSegment(u))\n throw new Error(\n `Point ${T(u)} is not on segment ${this.repr}`\n );\n });\n const e = [this.firstPoint, ...n, this.lastPoint], s = ct(e), r = this.lastPoint[0] - this.firstPoint[0];\n let o = Math.sign(r), h = 0;\n return Math.abs(r) < this.precision && (o = Math.sign(this.lastPoint[1] - this.firstPoint[1]), h = 1), s.sort(\n (u, l) => o * (u[h] - l[h])\n ), s.flatMap((u, l) => l === s.length - 1 ? [] : new R(u, s[l + 1]));\n }\n transform(t) {\n return new R(\n t.transform(this.firstPoint),\n t.transform(this.lastPoint)\n );\n }\n}\nfunction Ke(i) {\n return Array.from(Array(i).keys());\n}\nfunction nt(i) {\n const t = Math.min(...i.map((n) => n.length));\n return Ke(t).map((n) => i.map((e) => e[n]));\n}\nfunction st(i, t = 1e-9) {\n return i < 0 ? i + 2 * Math.PI : i >= 2 * Math.PI ? i % (2 * Math.PI) : i > 2 * Math.PI - t ? 0 : i;\n}\nfunction vt(i, t, n, e = 1e-9) {\n let s = t - i;\n return n && (s = -s), s < 0 && (s += 2 * Math.PI), s > 2 * Math.PI - e ? 0 : s;\n}\nconst Ft = (i, t, n) => {\n const e = at(i.V, t.V), s = jt(i.V), r = jt(t.V), o = n ? n * n : i.precision * t.precision;\n if (e * e < s * r * o)\n return \"parallel\";\n const h = A(t.firstPoint, i.firstPoint), u = at(h, t.V) / e, l = at(h, i.V) / e;\n return {\n intersectionParam1: u,\n intersectionParam2: l\n };\n};\nfunction ge(i, t, n = !1, e) {\n const s = Ft(i, t, e);\n if (s === \"parallel\") {\n if (!n)\n return null;\n if (i.isSame(t))\n return i;\n const h = ct(\n [\n t.isOnSegment(i.firstPoint) ? i.firstPoint : null,\n t.isOnSegment(i.lastPoint) ? i.lastPoint : null,\n i.isOnSegment(t.firstPoint) ? t.firstPoint : null,\n i.isOnSegment(t.lastPoint) ? t.lastPoint : null\n ].filter((u) => u !== null)\n ).sort((u, l) => u[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 R(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: r, intersectionParam2: o } = s;\n return !i.isValidParameter(r) || !t.isValidParameter(o) ? null : i.paramPoint(r);\n}\nconst Pt = (i, t) => {\n const n = A(i, t);\n return Xe(n);\n};\nclass I extends zt {\n constructor(t, n, e, s = !1, { ignoreChecks: r = !1 } = {}) {\n if (super(t, n), this.segmentType = \"ARC\", this._coefficients = null, this._angularLength = null, this._radius = null, this._firstAngle = null, this._lastAngle = null, this._boundingBox = null, this.center = e, this.clockwise = s, !r) {\n if (E(t, n))\n throw new Error(\"Invalid arc, cannot be a full circle\");\n if (Math.abs(this.radius - q(this.lastPoint, this.center)) > this.precision)\n throw new Error(\n `Invalid arc, radius does not match between ${T(\n t\n )} and ${T(n)}} (center ${T(e)})`\n );\n }\n }\n get info() {\n return `ARC(${T(this.firstPoint)}, ${T(\n this.lastPoint\n )}, ${T(this.center)}, ${this.clockwise ? \"CW\" : \"CCW\"})`;\n }\n get coefficients() {\n if (this._coefficients === null) {\n const [t, n] = this.center, e = this.radius * this.radius;\n this._coefficients = {\n x2: 1 / e,\n xy: 0,\n y2: 1 / e,\n x: -(2 * t) / e,\n y: -(2 * n) / e,\n c: (t * t + n * n - e) / e\n };\n }\n return this._coefficients;\n }\n isValidParameter(t) {\n return 1 - t >= -this.precision && t >= -this.precision;\n }\n angleToParam(t) {\n return vt(this.firstAngle, st(t), this.clockwise) / this.angularLength;\n }\n get angularLength() {\n return this._angularLength || (this._angularLength = vt(\n this.firstAngle,\n this.lastAngle,\n this.clockwise\n )), this._angularLength;\n }\n paramPoint(t) {\n return O(\n this.center,\n ft(\n this.radius,\n this.firstAngle + t * this.angularLength * (this.clockwise ? -1 : 1)\n )\n );\n }\n pointToParam(t) {\n const [n, e] = Pt(t, this.center);\n if (Math.abs(n - this.radius) > this.precision)\n throw new Error(\n `Point ${T(t)} is not on segment ${this.repr}`\n );\n const s = this.angleToParam(e);\n if (!this.isValidParameter(s))\n throw new Error(\n `Point ${T(t)} is not on segment ${this.repr}`\n );\n return s;\n }\n get radius() {\n return this._radius === null && (this._radius = q(this.firstPoint, this.center)), this._radius;\n }\n get firstAngle() {\n if (this._firstAngle === null) {\n const [t, n] = A(this.firstPoint, this.center);\n this._firstAngle = st(Math.atan2(n, t));\n }\n return this._firstAngle;\n }\n get lastAngle() {\n if (this._lastAngle === null) {\n const [t, n] = A(this.lastPoint, this.center);\n this._lastAngle = st(Math.atan2(n, t));\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(t) {\n return !(t instanceof I) || !E(this.center, t.center) ? !1 : E(this.firstPoint, t.firstPoint) && E(this.lastPoint, t.lastPoint) && this.clockwise === t.clockwise || E(this.lastPoint, t.firstPoint) && E(this.firstPoint, t.lastPoint) && this.clockwise === !t.clockwise;\n }\n clone() {\n return new I(\n this.firstPoint,\n this.lastPoint,\n this.center,\n this.clockwise\n );\n }\n reverse() {\n return new I(\n this.lastPoint,\n this.firstPoint,\n this.center,\n !this.clockwise\n );\n }\n get boundingBox() {\n if (this._boundingBox === null) {\n const t = this.radius + this.precision, n = (e) => this.isValidParameter(this.angleToParam(e));\n this._boundingBox = new it(\n n(Math.PI) ? this.center[0] - t : Math.min(this.firstPoint[0], this.lastPoint[0]) - this.precision,\n n(Math.PI * 1.5) ? this.center[1] - t : Math.min(this.firstPoint[1], this.lastPoint[1]) - this.precision,\n n(0) ? this.center[0] + t : Math.max(this.firstPoint[0], this.lastPoint[0]) + this.precision,\n n(Math.PI / 2) ? this.center[1] + t : Math.max(this.firstPoint[1], this.lastPoint[1]) + this.precision\n );\n }\n return this._boundingBox;\n }\n distanceFrom(t) {\n const [n, e] = Pt(t, this.center);\n return this.isValidParameter(this.angleToParam(e)) ? Math.abs(n - this.radius) : Math.sqrt(\n Math.min(\n mt(t, this.firstPoint),\n mt(t, this.lastPoint)\n )\n );\n }\n isOnSegment(t) {\n if (E(t, this.firstPoint) || E(t, this.lastPoint))\n return !0;\n const [n, e] = Pt(t, this.center);\n if (Math.abs(n - this.radius) > this.precision)\n return !1;\n const s = this.angleToParam(e);\n return this.isValidParameter(s);\n }\n gradientAt(t) {\n const n = this.firstAngle + t * this.angularLength * (this.clockwise ? -1 : 1), e = this.radius * this.angularLength, s = -e * Math.sin(n), r = e * Math.cos(n);\n return this.clockwise ? [-s, -r] : [s, r];\n }\n tangentAt(t) {\n const [n, e] = Pt(t, this.center);\n if (Math.abs(n - this.radius) > this.precision)\n throw new Error(\"Point is not on the arc\");\n const s = this.angleToParam(e);\n if (!this.isValidParameter(s))\n throw new Error(\"Point is not on the arc\");\n const r = ft(1, e);\n return (this.clockwise ? bt : J)(W(r));\n }\n get tangentAtFirstPoint() {\n const t = ft(1, this.firstAngle);\n return (this.clockwise ? bt : J)(W(t));\n }\n get tangentAtLastPoint() {\n const t = ft(1, this.lastAngle);\n return (this.clockwise ? bt : J)(W(t));\n }\n splitAt(t) {\n let n;\n if (Array.isArray(t) && t.length === 0)\n return [this];\n Array.isArray(t[0]) ? n = t : n = [t];\n const s = [0, 1, ...n.map((h) => this.pointToParam(h))], r = new Map(\n nt([s, [this.firstPoint, this.lastPoint, ...n]])\n );\n s.sort((h, u) => h - u);\n let o = null;\n return s.flatMap((h, u) => {\n if (u === s.length - 1)\n return [];\n const l = s[u + 1];\n if (l - h < this.precision)\n return o === null && (o = h), [];\n const c = o === null ? h : o, a = new I(\n r.get(c) || this.paramPoint(c),\n r.get(l) || this.paramPoint(l),\n this.center,\n this.clockwise\n );\n return o = null, a;\n });\n }\n transform(t) {\n return new I(\n t.transform(this.firstPoint),\n t.transform(this.lastPoint),\n t.transform(this.center),\n t.keepsOrientation() ? this.clockwise : !this.clockwise\n );\n }\n}\nfunction as(i, t, n) {\n const e = new R(t, i), s = new R(t, n), r = J(e.tangentAtFirstPoint), o = J(s.tangentAtLastPoint), h = Ft(\n { firstPoint: e.midPoint, V: r, 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 u = at(\n A(i, t),\n A(n, t)\n ) > 0;\n return new I(\n i,\n n,\n O(e.midPoint, D(r, h.intersectionParam1)),\n u,\n { ignoreChecks: !0 }\n );\n}\nfunction cs(i, t, n) {\n const e = new R(t, i), s = J(e.tangentAtFirstPoint), r = Ft(\n { firstPoint: e.midPoint, V: s, precision: 1e-9 },\n {\n firstPoint: i,\n V: J(n),\n precision: 1e-9\n }\n );\n if (r === \"parallel\")\n throw new Error(\"Cannot create an arc from three colinear points\");\n const o = O(\n e.midPoint,\n D(s, r.intersectionParam1)\n ), h = at(\n A(o, i),\n A(o, O(i, n))\n ) < 0;\n return new I(i, t, o, h, {\n ignoreChecks: !0\n });\n}\nfunction Qe(i, t) {\n const n = A(t, i.firstPoint), e = $t(n, i.V) / i.squareLength;\n return i.paramPoint(e);\n}\nfunction kt(i, t, n) {\n const e = n || i.precision, s = Qe(i, t.center), r = q(s, t.center);\n if (r > t.radius + e)\n return [];\n if (Math.abs(r - t.radius) < e) {\n const a = s;\n return i.isOnSegment(a) && t.isOnSegment(a) ? [a] : [];\n }\n const o = [], h = Math.sqrt(\n t.radius * t.radius - r * r\n ), u = i.tangentAtFirstPoint, l = O(s, D(u, h));\n i.isOnSegment(l) && t.isOnSegment(l) && o.push(l);\n const c = O(s, D(u, -h));\n return i.isOnSegment(c) && t.isOnSegment(c) && o.push(c), o;\n}\nconst Ze = (i) => {\n const { firstPoint: t, lastPoint: n, center: e, clockwise: s } = i;\n return new I(n, t, e, s, {\n ignoreChecks: !0\n });\n}, He = (i, t) => {\n if (i.isSame(t))\n return [i];\n const n = ct(\n [\n t.isOnSegment(i.firstPoint) ? i.firstPoint : null,\n t.isOnSegment(i.lastPoint) ? i.lastPoint : null,\n i.isOnSegment(t.firstPoint) ? t.firstPoint : null,\n i.isOnSegment(t.lastPoint) ? t.lastPoint : null\n ].filter((e) => e !== 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((e, s) => i.pointToParam(e) - i.pointToParam(s));\n if (n.length === 0)\n return [];\n if (n.length === 1)\n return [];\n if (n.length === 2)\n return i.isSame(Ze(t)) ? [] : [new I(n[0], n[1], i.center, i.clockwise)];\n if (n.length === 3) {\n const e = E(n[0], t.lastPoint) || E(n[0], t.firstPoint) ? 1 : 0;\n return [\n new I(\n n[0 + e],\n n[1 + e],\n i.center,\n i.clockwise\n )\n ];\n } else if (n.length === 4)\n return [\n new I(n[0], n[1], i.center, i.clockwise),\n new I(n[2], n[3], i.center, i.clockwise)\n ];\n throw new Error(\"Bug in the arc arc overlap algorithm\");\n};\nfunction me(i, t, n = !1, e) {\n const s = e || i.precision, r = q(i.center, t.center), o = i.radius + t.radius;\n if (r > o + s)\n return [];\n const h = Math.abs(i.radius - t.radius);\n if (r < h - s)\n return [];\n if (r < s)\n return h > s ? [] : n ? He(i, t) : [];\n const u = W(A(t.center, i.center)), l = r > o - s;\n if (\n // circles are outside each other\n l || // circles are inside each other\n Math.abs(r - h) < s\n ) {\n const f = l || i.radius > t.radius ? 1 : -1, p = O(\n i.center,\n D(u, f * i.radius)\n );\n return i.isOnSegment(p) && t.isOnSegment(p) ? [p] : [];\n }\n const c = i.radius * i.radius / (2 * r) - t.radius * t.radius / (2 * r) + r / 2, a = O(\n i.center,\n D(u, c)\n ), g = Math.sqrt(\n i.radius * i.radius - c * c\n ), w = J(u), m = O(a, D(w, g)), d = O(a, D(w, -g)), P = [];\n return i.isOnSegment(m) && t.isOnSegment(m) && P.push(m), i.isOnSegment(d) && t.isOnSegment(d) && P.push(d), P;\n}\nclass C extends zt {\n constructor(t, n, e, s, r, o, h = !1, {\n ignoreChecks: u = !1,\n angleUnits: l = \"deg\"\n } = {}) {\n super(t, n), this.segmentType = \"ELLIPSE_ARC\", this.precision = 1e-6, this._coefficients = null, this.center = e;\n const c = s >= r;\n this.majorRadius = c ? s : r, this.minorRadius = c ? r : s;\n const a = l === \"deg\" ? o * Lt : o;\n if (this.tiltAngle = st(\n c ? a : a + Math.PI / 2\n ), this.clockwise = h, !u) {\n if (E(t, n))\n throw new Error(\"Invalid arc, cannot be a full circle\");\n if (!this.isPointOnEllipse(t))\n throw new Error(\n `First point ${T(\n t\n )} not on the ellipse defined by ${this.info}`\n );\n if (!this.isPointOnEllipse(n))\n throw new Error(\n `Last point ${T(n)} 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 [t, n] = this.center, e = this.majorRadius * this.majorRadius, s = this.minorRadius * this.minorRadius, r = Math.cos(this.tiltAngle), o = Math.sin(this.tiltAngle), h = e * o * o + s * r * r, u = 2 * (s - e) * o * r, l = e * r * r + s * o * o;\n this._coefficients = {\n x2: h,\n xy: u,\n y2: l,\n x: -2 * h * t - u * n,\n y: -2 * l * n - u * t,\n c: h * t * t + u * t * n + l * n * n - e * s\n };\n }\n return this._coefficients;\n }\n get info() {\n return `ELLIPSE_ARC(${T(this.firstPoint)}, ${T(\n this.lastPoint\n )}, ${T(this.center)}, ${this.majorRadius}, ${this.minorRadius}, ${this.tiltAngle * Ue}, ${this.clockwise ? \"CW\" : \"CCW\"})`;\n }\n reverse() {\n return new C(\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 C(\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 t = Math.tan(this.tiltAngle), n = this.minorRadius / this.majorRadius, e = -Math.atan(n * t), s = Math.atan(n / t);\n return [e, Math.PI + e, s, Math.PI + s].map((o) => this.thetaToParam(o)).filter((o) => this.isValidParameter(o)).map((o) => this.paramPoint(o));\n }\n get boundingBox() {\n if (this._boundingBox === void 0) {\n const t = this.computeEllipseExtrema(), n = [\n this.firstPoint,\n this.lastPoint,\n ...t\n ];\n this._boundingBox = De(n);\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 t = this.majorAxis;\n this._focals = [\n O(this.center, D(t, this.linearExentricity)),\n O(this.center, D(t, -this.linearExentricity))\n ];\n }\n return this._focals;\n }\n get majorAxis() {\n return ft(1, this.tiltAngle);\n }\n paramPoint(t) {\n const n = this.firstAngle + t * this.deltaAngle * (this.clockwise ? -1 : 1);\n return this.reverseEllipseReferenceFrameTransform.transform([\n this.majorRadius * Math.cos(n),\n this.minorRadius * Math.sin(n)\n ]);\n }\n pointToParam(t) {\n if (!this.isPointOnEllipse(t))\n throw new Error(\n `Point ${T(t)} not on the ellipse defined by ${this.repr}`\n );\n const n = this.thetaToParam(this.pointTheta(t));\n if (!this.isValidParameter(n))\n throw new Error(\n `Point ${T(t)} is not on segment ${this.repr}`\n );\n return n;\n }\n get midPoint() {\n return this.paramPoint(0.5);\n }\n isValidParameter(t) {\n return 1 - t >= -this.precision && t >= -this.precision;\n }\n isSame(t) {\n return E(this.center, t.center) && Math.abs(this.majorRadius - t.majorRadius) < this.precision && Math.abs(this.minorRadius - t.minorRadius) < this.precision && (Math.abs(this.tiltAngle - t.tiltAngle) < this.precision || Math.abs(Math.abs(this.tiltAngle - t.tiltAngle) - Math.PI) < this.precision) && (E(this.firstPoint, t.firstPoint) && this.clockwise === t.clockwise || E(this.firstPoint, t.lastPoint) && this.clockwise !== t.clockwise);\n }\n pointTheta(t) {\n const n = this.ellipseReferenceFrameTransform.transform(t), e = Math.atan2(\n n[1] / this.minorRadius,\n n[0] / this.majorRadius\n );\n return st(e);\n }\n thetaToParam(t) {\n return vt(this.firstAngle, st(t), this.clockwise) / this.deltaAngle;\n }\n isPointOnEllipse(t) {\n const [n, e] = this.focals, s = q(t, n), r = q(t, e);\n return Math.abs(2 * this.majorRadius - s - r) < this.precision;\n }\n isOnSegment(t) {\n return this.isPointOnEllipse(t) ? this.isValidParameter(this.thetaToParam(this.pointTheta(t))) : !1;\n }\n distanceFrom(t) {\n let n;\n if (E(t, this.center) ? n = O(\n this.center,\n D(J(this.majorAxis), this.minorRadius)\n ) : n = this.reverseEllipseReferenceFrameTransform.transform(\n en(\n this.majorRadius,\n this.minorRadius,\n this.ellipseReferenceFrameTransform.transform(t)\n )\n ), this.isValidParameter(this.thetaToParam(this.pointTheta(t))))\n return q(t, n);\n if (Ge(t, this.majorAxis, this.center)) {\n const e = st(\n 2 * Math.PI - this.pointTheta(t)\n ), s = this.thetaToParam(e);\n if (this.isValidParameter(s))\n return q(t, this.paramPoint(s));\n }\n return Math.min(\n q(t, this.firstPoint),\n q(t, this.lastPoint)\n );\n }\n get ellipseReferenceFrameTransform() {\n return this._ellipseReferenceFrameTransform === void 0 && (this._ellipseReferenceFrameTransform = new V().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 V().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 V().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 = vt(\n this.firstAngle,\n this.lastAngle,\n this.clockwise\n )), this._deltaAngle;\n }\n normalAt(t) {\n const n = this.tangentAt(t);\n return this.clockwise ? J(n) : bt(n);\n }\n gradientAt(t) {\n const n = this.firstAngle + t * this.deltaAngle * (this.clockwise ? -1 : 1), e = -this.majorRadius * this.deltaAngle * Math.sin(n), s = this.minorRadius * this.deltaAngle * Math.cos(n), r = this.clockwise ? [-e, -s] : [e, s];\n return this.rotateFromEllipseReferenceFrame.transform(r);\n }\n tangentAt(t) {\n const n = this.pointTheta(t), e = -this.majorRadius * Math.sin(n), s = this.minorRadius * Math.cos(n), r = this.clockwise ? [-e, -s] : [e, s];\n return W(this.rotateFromEllipseReferenceFrame.transform(r));\n }\n get tangentAtFirstPoint() {\n const t = -this.majorRadius * Math.sin(this.firstAngle), n = this.minorRadius * Math.cos(this.firstAngle), e = this.clockwise ? [-t, -n] : [t, n];\n return W(this.rotateFromEllipseReferenceFrame.transform(e));\n }\n get tangentAtLastPoint() {\n const t = -this.majorRadius * Math.sin(this.lastAngle), n = this.minorRadius * Math.cos(this.lastAngle), e = this.clockwise ? [-t, -n] : [t, n];\n return W(this.rotateFromEllipseReferenceFrame.transform(e));\n }\n transform(t) {\n const n = t.transformAngle(this.tiltAngle), e = t.scaleFactor();\n return new C(\n t.transform(this.firstPoint),\n t.transform(this.lastPoint),\n t.transform(this.center),\n this.majorRadius * e,\n this.minorRadius * e,\n n,\n t.keepsOrientation() ? this.clockwise : !this.clockwise,\n { angleUnits: \"rad\" }\n );\n }\n splitAt(t) {\n let n;\n if (Array.isArray(t) && t.length === 0)\n return [this];\n Array.isArray(t[0]) ? n = t : n = [t];\n const s = [0, 1, ...n.map((h) => this.pointToParam(h))], r = new Map(\n nt([s, [this.firstPoint, this.lastPoint, ...n]])\n );\n s.sort((h, u) => h - u);\n let o = null;\n return s.flatMap((h, u) => {\n if (u === s.length - 1)\n return [];\n const l = s[u + 1];\n if (l - h < this.precision)\n return o === null && (o = h), [];\n const c = o === null ? h : o, a = new C(\n r.get(c) || this.paramPoint(c),\n r.get(l) || this.paramPoint(l),\n this.center,\n this.majorRadius,\n this.minorRadius,\n this.tiltAngle,\n this.clockwise,\n { angleUnits: \"rad\" }\n );\n return o = null, a;\n });\n }\n}\nfunction fs(i, t, n, e, s, r, o) {\n const { center: h, rx: u, ry: l } = tn(\n i,\n t,\n n,\n e,\n s * Lt,\n !r,\n o\n );\n return Math.abs(u - l) < 1e-9 ? new I(i, t, h, o) : new C(i, t, h, u, l, s, o);\n}\nfunction tn([i, t], [n, e], s, r, o, h, u) {\n if (s < 0 && (s = -s), r < 0 && (r = -r), s == 0 || r == 0)\n throw Error(\"rx and ry can not be 0\");\n const l = Math.sin(o), c = Math.cos(o), a = (i - n) / 2, g = (t - e) / 2, w = (i + n) / 2, m = (t + e) / 2, d = c * a + l * g, P = c * g - l * a, f = d * d / (s * s) + P * P / (r * r);\n f > 1 && (s = s * Math.sqrt(f), r = r * Math.sqrt(f));\n const p = s * r, y = s * P, M = r * d, b = y * y + M * M;\n if (!b)\n throw Error(\"start point can not be same as end point\");\n let x = Math.sqrt(Math.abs((p * p - b) / b));\n h == u && (x = -x);\n const k = x * y / r, S = -x * M / s, _ = c * k - l * S + w, F = l * k + c * S + m;\n return {\n center: [_, F],\n rx: s,\n ry: r\n };\n}\nfunction en(i, t, n) {\n const e = Math.abs(n[0]), s = Math.abs(n[1]);\n let r = 0.707, o = 0.707;\n const h = i, u = t;\n for (let l = 0; l < 3; l++) {\n const c = h * r, a = u * o, g = (h * h - u * u) * r ** 3 / h, w = (u * u - h * h) * o ** 3 / u, m = c - g, d = a - w, P = e - g, f = s - w, p = Math.hypot(m, d), y = Math.hypot(P, f);\n r = Math.min(1, Math.max(0, (P * p / y + g) / h)), o = Math.min(1, Math.max(0, (f * p / y + w) / u));\n const M = Math.hypot(r, o);\n r /= M, o /= M;\n }\n return [h * r * Math.sign(n[0]), u * o * Math.sign(n[1])];\n}\nfunction qt(i, t, n = 1e-9) {\n const e = i.transform(t.ellipseReferenceFrameTransform), s = e.slope, r = e.yIntercept, o = t.majorRadius * t.majorRadius, h = t.minorRadius * t.minorRadius, u = t.majorRadius * t.minorRadius, l = e.slope * e.slope, c = e.yIntercept * e.yIntercept, a = (f) => f.map(\n (p) => t.reverseEllipseReferenceFrameTransform.transform(p)\n ).filter((p) => i.isOnSegment(p) && t.isOnSegment(p));\n if (!Number.isFinite(s)) {\n const f = e.firstPoint[0];\n if (Math.abs(f) - t.majorRadius > n)\n return [];\n if (Math.abs(Math.abs(f) - t.majorRadius) < n)\n return a([[f, 0]]);\n const p = t.minorRadius * Math.sqrt(1 - f * f / o), y = [f, p], M = [f, -p];\n return a([y, M]);\n }\n const g = o * l + h - c;\n if (g < -n)\n return [];\n const w = o * l + h;\n if (Math.abs(g) < n) {\n const f = -(o * s * r) / w, p = h * r / w;\n return a([[f, p]]);\n }\n const m = Math.sqrt(g), d = [\n -(o * s * r + u * m) / w,\n (h * r - u * s * m) / w\n ], P = [\n -(o * s * r - u * m) / w,\n (h * r + u * s * m) / w\n ];\n return a([d, P]);\n}\nconst nn = Object.prototype.toString;\nfunction z(i) {\n const t = nn.call(i);\n return t.endsWith(\"Array]\") && !t.includes(\"Big\");\n}\nfunction sn(i) {\n var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n if (!z(i))\n throw new TypeError(\"input must be an array\");\n if (i.length === 0)\n throw new TypeError(\"input must not be empty\");\n var n = t.fromIndex, e = n === void 0 ? 0 : n, s = t.toIndex, r = s === void 0 ? i.length : s;\n if (e < 0 || e >= i.length || !Number.isInteger(e))\n throw new Error(\"fromIndex must be a positive integer smaller than length\");\n if (r <= e || r > i.length || !Number.isInteger(r))\n throw new Error(\"toIndex must be an integer greater than fromIndex and at most equal to length\");\n for (var o = i[e], h = e + 1; h < r; h++)\n i[h] > o && (o = i[h]);\n return o;\n}\nfunction rn(i) {\n var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n if (!z(i))\n throw new TypeError(\"input must be an array\");\n if (i.length === 0)\n throw new TypeError(\"input must not be empty\");\n var n = t.fromIndex, e = n === void 0 ? 0 : n, s = t.toIndex, r = s === void 0 ? i.length : s;\n if (e < 0 || e >= i.length || !Number.isInteger(e))\n throw new Error(\"fromIndex must be a positive integer smaller than length\");\n if (r <= e || r > i.length || !Number.isInteger(r))\n throw new Error(\"toIndex must be an integer greater than fromIndex and at most equal to length\");\n for (var o = i[e], h = e + 1; h < r; h++)\n i[h] < o && (o = i[h]);\n return o;\n}\nfunction Kt(i) {\n var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n if (z(i)) {\n if (i.length === 0)\n throw new TypeError(\"input must not be empty\");\n } else\n throw new TypeError(\"input must be an array\");\n var n;\n if (t.output !== void 0) {\n if (!z(t.output))\n throw new TypeError(\"output option must be an array if specified\");\n n = t.output;\n } else\n n = new Array(i.length);\n var e = rn(i), s = sn(i);\n if (e === s)\n throw new RangeError(\"minimum and maximum input values are equal. Cannot rescale a constant array\");\n var r = t.min, o = r === void 0 ? t.autoMinMax ? e : 0 : r, h = t.max, u = h === void 0 ? t.autoMinMax ? s : 1 : h;\n if (o >= u)\n throw new RangeError(\"min option must be smaller than max option\");\n for (var l = (u - o) / (s - e), c = 0; c < i.length; c++)\n n[c] = (i[c] - e) * l + o;\n return n;\n}\nconst Mt = \" \".repeat(2), pe = \" \".repeat(4);\nfunction on() {\n return we(this);\n}\nfunction we(i, t = {}) {\n const {\n maxRows: n = 15,\n maxColumns: e = 10,\n maxNumSize: s = 8,\n padMinus: r = \"auto\"\n } = t;\n return `${i.constructor.name} {\n${Mt}[\n${pe}${hn(i, n, e, s, r)}\n${Mt}]\n${Mt}rows: ${i.rows}\n${Mt}columns: ${i.columns}\n}`;\n}\nfunction hn(i, t, n, e, s) {\n const { rows: r, columns: o } = i, h = Math.min(r, t), u = Math.min(o, n), l = [];\n if (s === \"auto\") {\n s = !1;\n t:\n for (let c = 0; c < h; c++)\n for (let a = 0; a < u; a++)\n if (i.get(c, a) < 0) {\n s = !0;\n break t;\n }\n }\n for (let c = 0; c < h; c++) {\n let a = [];\n for (let g = 0; g < u; g++)\n a.push(ln(i.get(c, g), e, s));\n l.push(`${a.join(\" \")}`);\n }\n return u !== o && (l[l.length - 1] += ` ... ${o - n} more columns`), h !== r && l.push(`... ${r - t} more rows`), l.join(`\n${pe}`);\n}\nfunction ln(i, t, n) {\n return (i >= 0 && n ? ` ${Qt(i, t - 1)}` : Qt(i, t)).padEnd(t);\n}\nfunction Qt(i, t) {\n let n = i.toString();\n if (n.length <= t)\n return n;\n let e = i.toFixed(t);\n if (e.length > t && (e = i.toFixed(Math.max(0, t - (e.length - t)))), e.length <= t && !e.startsWith(\"0.000\") && !e.startsWith(\"-0.000\"))\n return e;\n let s = i.toExponential(t);\n return s.length > t && (s = i.toExponential(Math.max(0, t - (s.length - t)))), s.slice(0);\n}\nfunction un(i, t) {\n i.prototype.add = function(e) {\n return typeof e == \"number\" ? this.addS(e) : this.addM(e);\n }, i.prototype.addS = function(e) {\n for (let s = 0; s < this.rows; s++)\n for (let r = 0; r < this.columns; r++)\n this.set(s, r, this.get(s, r) + e);\n return this;\n }, i.prototype.addM = function(e) {\n if (e = t.checkMatrix(e), this.rows !== e.rows || this.columns !== e.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let s = 0; s < this.rows; s++)\n for (let r = 0; r < this.columns; r++)\n this.set(s, r, this.get(s, r) + e.get(s, r));\n return this;\n }, i.add = function(e, s) {\n return new t(e).add(s);\n }, i.prototype.sub = function(e) {\n return typeof e == \"number\" ? this.subS(e) : this.subM(e);\n }, i.prototype.subS = function(e) {\n for (let s = 0; s < this.rows; s++)\n for (let r = 0; r < this.columns; r++)\n this.set(s, r, this.get(s, r) - e);\n return this;\n }, i.prototype.subM = function(e) {\n if (e = t.checkMatrix(e), this.rows !== e.rows || this.columns !== e.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let s = 0; s < this.rows; s++)\n for (let r = 0; r < this.columns; r++)\n this.set(s, r, this.get(s, r) - e.get(s, r));\n return this;\n }, i.sub = function(e, s) {\n return new t(e).sub(s);\n }, i.prototype.subtract = i.prototype.sub, i.prototype.subtractS = i.prototype.subS, i.prototype.subtractM = i.prototype.subM, i.subtract = i.sub, i.prototype.mul = function(e) {\n return typeof e == \"number\" ? this.mulS(e) : this.mulM(e);\n }, i.prototype.mulS = function(e) {\n for (let s = 0; s < this.rows; s++)\n for (let r = 0; r < this.columns; r++)\n this.set(s, r, this.get(s, r) * e);\n return this;\n }, i.prototype.mulM = function(e) {\n if (e = t.checkMatrix(e), this.rows !== e.rows || this.columns !== e.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let s = 0; s < this.rows; s++)\n for (let r = 0; r < this.columns; r++)\n this.set(s, r, this.get(s, r) * e.get(s, r));\n return this;\n }, i.mul = function(e, s) {\n return new t(e).mul(s);\n }, i.prototype.multiply = i.prototype.mul, i.prototype.multiplyS = i.prototype.mulS, i.prototype.multiplyM = i.prototype.mulM, i.multiply = i.mul, i.prototype.div = function(e) {\n return typeof e == \"number\" ? this.divS(e) : this.divM(e);\n }, i.prototype.divS = function(e) {\n for (let s = 0; s < this.rows; s++)\n for (let r = 0; r < this.columns; r++)\n this.set(s, r, this.get(s, r) / e);\n return this;\n }, i.prototype.divM = function(e) {\n if (e = t.checkMatrix(e), this.rows !== e.rows || this.columns !== e.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let s = 0; s < this.rows; s++)\n for (let r = 0; r < this.columns; r++)\n this.set(s, r, this.get(s, r) / e.get(s, r));\n return this;\n }, i.div = function(e, s) {\n return new t(e).div(s);\n }, i.prototype.divide = i.prototype.div, i.prototype.divideS = i.prototype.divS, i.prototype.divideM = i.prototype.divM, i.divide = i.div, i.prototype.mod = function(e) {\n return typeof e == \"number\" ? this.modS(e) : this.modM(e);\n }, i.prototype.modS = function(e) {\n for (let s = 0; s < this.rows; s++)\n for (let r = 0; r < this.columns; r++)\n this.set(s, r, this.get(s, r) % e);\n return this;\n }, i.prototype.modM = function(e) {\n if (e = t.checkMatrix(e), this.rows !== e.rows || this.columns !== e.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let s = 0; s < this.rows; s++)\n for (let r = 0; r < this.columns; r++)\n this.set(s, r, this.get(s, r) % e.get(s, r));\n return this;\n }, i.mod = function(e, s) {\n return new t(e).mod(s);\n }, i.prototype.modulus = i.prototype.mod, i.prototype.modulusS = i.prototype.modS, i.prototype.modulusM = i.prototype.modM, i.modulus = i.mod, i.prototype.and = function(e) {\n return typeof e == \"number\" ? this.andS(e) : this.andM(e);\n }, i.prototype.andS = function(e) {\n for (let s = 0; s < this.rows; s++)\n for (let r = 0; r < this.columns; r++)\n this.set(s, r, this.get(s, r) & e);\n return this;\n }, i.prototype.andM = function(e) {\n if (e = t.checkMatrix(e), this.rows !== e.rows || this.columns !== e.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let s = 0; s < this.rows; s++)\n for (let r = 0; r < this.columns; r++)\n this.set(s, r, this.get(s, r) & e.get(s, r));\n return this;\n }, i.and = function(e, s) {\n return new t(e).and(s);\n }, i.prototype.or = function(e) {\n return typeof e == \"number\" ? this.orS(e) : this.orM(e);\n }, i.prototype.orS = function(e) {\n for (let s = 0; s < this.rows; s++)\n for (let r = 0; r < this.columns; r++)\n this.set(s, r, this.get(s, r) | e);\n return this;\n }, i.prototype.orM = function(e) {\n if (e = t.checkMatrix(e), this.rows !== e.rows || this.columns !== e.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let s = 0; s < this.rows; s++)\n for (let r = 0; r < this.columns; r++)\n this.set(s, r, this.get(s, r) | e.get(s, r));\n return this;\n }, i.or = function(e, s) {\n return new t(e).or(s);\n }, i.prototype.xor = function(e) {\n return typeof e == \"number\" ? this.xorS(e) : this.xorM(e);\n }, i.prototype.xorS = function(e) {\n for (let s = 0; s < this.rows; s++)\n for (let r = 0; r < this.columns; r++)\n this.set(s, r, this.get(s, r) ^ e);\n return this;\n }, i.prototype.xorM = function(e) {\n if (e = t.checkMatrix(e), this.rows !== e.rows || this.columns !== e.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let s = 0; s < this.rows; s++)\n for (let r = 0; r < this.columns; r++)\n this.set(s, r, this.get(s, r) ^ e.get(s, r));\n return this;\n }, i.xor = function(e, s) {\n return new t(e).xor(s);\n }, i.prototype.leftShift = function(e) {\n return typeof e == \"number\" ? this.leftShiftS(e) : this.leftShiftM(e);\n }, i.prototype.leftShiftS = function(e) {\n for (let s = 0; s < this.rows; s++)\n for (let r = 0; r < this.columns; r++)\n this.set(s, r, this.get(s, r) << e);\n return this;\n }, i.prototype.leftShiftM = function(e) {\n if (e = t.checkMatrix(e), this.rows !== e.rows || this.columns !== e.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let s = 0; s < this.rows; s++)\n for (let r = 0; r < this.columns; r++)\n this.set(s, r, this.get(s, r) << e.get(s, r));\n return this;\n }, i.leftShift = function(e, s) {\n return new t(e).leftShift(s);\n }, i.prototype.signPropagatingRightShift = function(e) {\n return typeof e == \"number\" ? this.signPropagatingRightShiftS(e) : this.signPropagatingRightShiftM(e);\n }, i.prototype.signPropagatingRightShiftS = function(e) {\n for (let s = 0; s < this.rows; s++)\n for (let r = 0; r < this.columns; r++)\n this.set(s, r, this.get(s, r) >> e);\n return this;\n }, i.prototype.signPropagatingRightShiftM = function(e) {\n if (e = t.checkMatrix(e), this.rows !== e.rows || this.columns !== e.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let s = 0; s < this.rows; s++)\n for (let r = 0; r < this.columns; r++)\n this.set(s, r, this.get(s, r) >> e.get(s, r));\n return this;\n }, i.signPropagatingRightShift = function(e, s) {\n return new t(e).signPropagatingRightShift(s);\n }, i.prototype.rightShift = function(e) {\n return typeof e == \"number\" ? this.rightShiftS(e) : this.rightShiftM(e);\n }, i.prototype.rightShiftS = function(e) {\n for (let s = 0; s < this.rows; s++)\n for (let r = 0; r < this.columns; r++)\n this.set(s, r, this.get(s, r) >>> e);\n return this;\n }, i.prototype.rightShiftM = function(e) {\n if (e = t.checkMatrix(e), this.rows !== e.rows || this.columns !== e.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let s = 0; s < this.rows; s++)\n for (let r = 0; r < this.columns; r++)\n this.set(s, r, this.get(s, r) >>> e.get(s, r));\n return this;\n }, i.rightShift = function(e, s) {\n return new t(e).rightShift(s);\n }, i.prototype.zeroFillRightShift = i.prototype.rightShift, i.prototype.zeroFillRightShiftS = i.prototype.rightShiftS, i.prototype.zeroFillRightShiftM = i.prototype.rightShiftM, i.zeroFillRightShift = i.rightShift, i.prototype.not = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, ~this.get(e, s));\n return this;\n }, i.not = function(e) {\n return new t(e).not();\n }, i.prototype.abs = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.abs(this.get(e, s)));\n return this;\n }, i.abs = function(e) {\n return new t(e).abs();\n }, i.prototype.acos = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.acos(this.get(e, s)));\n return this;\n }, i.acos = function(e) {\n return new t(e).acos();\n }, i.prototype.acosh = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.acosh(this.get(e, s)));\n return this;\n }, i.acosh = function(e) {\n return new t(e).acosh();\n }, i.prototype.asin = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.asin(this.get(e, s)));\n return this;\n }, i.asin = function(e) {\n return new t(e).asin();\n }, i.prototype.asinh = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.asinh(this.get(e, s)));\n return this;\n }, i.asinh = function(e) {\n return new t(e).asinh();\n }, i.prototype.atan = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.atan(this.get(e, s)));\n return this;\n }, i.atan = function(e) {\n return new t(e).atan();\n }, i.prototype.atanh = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.atanh(this.get(e, s)));\n return this;\n }, i.atanh = function(e) {\n return new t(e).atanh();\n }, i.prototype.cbrt = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.cbrt(this.get(e, s)));\n return this;\n }, i.cbrt = function(e) {\n return new t(e).cbrt();\n }, i.prototype.ceil = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.ceil(this.get(e, s)));\n return this;\n }, i.ceil = function(e) {\n return new t(e).ceil();\n }, i.prototype.clz32 = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.clz32(this.get(e, s)));\n return this;\n }, i.clz32 = function(e) {\n return new t(e).clz32();\n }, i.prototype.cos = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.cos(this.get(e, s)));\n return this;\n }, i.cos = function(e) {\n return new t(e).cos();\n }, i.prototype.cosh = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.cosh(this.get(e, s)));\n return this;\n }, i.cosh = function(e) {\n return new t(e).cosh();\n }, i.prototype.exp = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.exp(this.get(e, s)));\n return this;\n }, i.exp = function(e) {\n return new t(e).exp();\n }, i.prototype.expm1 = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.expm1(this.get(e, s)));\n return this;\n }, i.expm1 = function(e) {\n return new t(e).expm1();\n }, i.prototype.floor = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.floor(this.get(e, s)));\n return this;\n }, i.floor = function(e) {\n return new t(e).floor();\n }, i.prototype.fround = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.fround(this.get(e, s)));\n return this;\n }, i.fround = function(e) {\n return new t(e).fround();\n }, i.prototype.log = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.log(this.get(e, s)));\n return this;\n }, i.log = function(e) {\n return new t(e).log();\n }, i.prototype.log1p = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.log1p(this.get(e, s)));\n return this;\n }, i.log1p = function(e) {\n return new t(e).log1p();\n }, i.prototype.log10 = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.log10(this.get(e, s)));\n return this;\n }, i.log10 = function(e) {\n return new t(e).log10();\n }, i.prototype.log2 = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.log2(this.get(e, s)));\n return this;\n }, i.log2 = function(e) {\n return new t(e).log2();\n }, i.prototype.round = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.round(this.get(e, s)));\n return this;\n }, i.round = function(e) {\n return new t(e).round();\n }, i.prototype.sign = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.sign(this.get(e, s)));\n return this;\n }, i.sign = function(e) {\n return new t(e).sign();\n }, i.prototype.sin = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.sin(this.get(e, s)));\n return this;\n }, i.sin = function(e) {\n return new t(e).sin();\n }, i.prototype.sinh = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.sinh(this.get(e, s)));\n return this;\n }, i.sinh = function(e) {\n return new t(e).sinh();\n }, i.prototype.sqrt = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.sqrt(this.get(e, s)));\n return this;\n }, i.sqrt = function(e) {\n return new t(e).sqrt();\n }, i.prototype.tan = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.tan(this.get(e, s)));\n return this;\n }, i.tan = function(e) {\n return new t(e).tan();\n }, i.prototype.tanh = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.tanh(this.get(e, s)));\n return this;\n }, i.tanh = function(e) {\n return new t(e).tanh();\n }, i.prototype.trunc = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.trunc(this.get(e, s)));\n return this;\n }, i.trunc = function(e) {\n return new t(e).trunc();\n }, i.pow = function(e, s) {\n return new t(e).pow(s);\n }, i.prototype.pow = function(e) {\n return typeof e == \"number\" ? this.powS(e) : this.powM(e);\n }, i.prototype.powS = function(e) {\n for (let s = 0; s < this.rows; s++)\n for (let r = 0; r < this.columns; r++)\n this.set(s, r, Math.pow(this.get(s, r), e));\n return this;\n }, i.prototype.powM = function(e) {\n if (e = t.checkMatrix(e), this.rows !== e.rows || this.columns !== e.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let s = 0; s < this.rows; s++)\n for (let r = 0; r < this.columns; r++)\n this.set(s, r, Math.pow(this.get(s, r), e.get(s, r)));\n return this;\n };\n}\nfunction Y(i, t, n) {\n let e = n ? i.rows : i.rows - 1;\n if (t < 0 || t > e)\n throw new RangeError(\"Row index out of range\");\n}\nfunction X(i, t, n) {\n let e = n ? i.columns : i.columns - 1;\n if (t < 0 || t > e)\n throw new RangeError(\"Column index out of range\");\n}\nfunction lt(i, t) {\n if (t.to1DArray && (t = t.to1DArray()), t.length !== i.columns)\n throw new RangeError(\n \"vector size must be the same as the number of columns\"\n );\n return t;\n}\nfunction ut(i, t) {\n if (t.to1DArray && (t = t.to1DArray()), t.length !== i.rows)\n throw new RangeError(\"vector size must be the same as the number of rows\");\n return t;\n}\nfunction an(i, t) {\n if (!z(t))\n throw new TypeError(\"row indices must be an array\");\n for (let n = 0; n < t.length; n++)\n if (t[n] < 0 || t[n] >= i.rows)\n throw new RangeError(\"row indices are out of range\");\n}\nfunction cn(i, t) {\n if (!z(t))\n throw new TypeError(\"column indices must be an array\");\n for (let n = 0; n < t.length; n++)\n if (t[n] < 0 || t[n] >= i.columns)\n throw new RangeError(\"column indices are out of range\");\n}\nfunction Zt(i, t, n, e, s) {\n if (arguments.length !== 5)\n throw new RangeError(\"expected 4 arguments\");\n if (Et(\"startRow\", t), Et(\"endRow\", n), Et(\"startColumn\", e), Et(\"endColumn\", s), t > n || e > s || t < 0 || t >= i.rows || n < 0 || n >= i.rows || e < 0 || e >= i.columns || s < 0 || s >= i.columns)\n throw new RangeError(\"Submatrix indices are out of range\");\n}\nfunction Tt(i, t = 0) {\n let n = [];\n for (let e = 0; e < i; e++)\n n.push(t);\n return n;\n}\nfunction Et(i, t) {\n if (typeof t != \"number\")\n throw new TypeError(`${i} must be a number`);\n}\nfunction ht(i) {\n if (i.isEmpty())\n throw new Error(\"Empty matrix has no elements to index\");\n}\nfunction fn(i) {\n let t = Tt(i.rows);\n for (let n = 0; n < i.rows; ++n)\n for (let e = 0; e < i.columns; ++e)\n t[n] += i.get(n, e);\n return t;\n}\nfunction gn(i) {\n let t = Tt(i.columns);\n for (let n = 0; n < i.rows; ++n)\n for (let e = 0; e < i.columns; ++e)\n t[e] += i.get(n, e);\n return t;\n}\nfunction mn(i) {\n let t = 0;\n for (let n = 0; n < i.rows; n++)\n for (let e = 0; e < i.columns; e++)\n t += i.get(n, e);\n return t;\n}\nfunction pn(i) {\n let t = Tt(i.rows, 1);\n for (let n = 0; n < i.rows; ++n)\n for (let e = 0; e < i.columns; ++e)\n t[n] *= i.get(n, e);\n return t;\n}\nfunction wn(i) {\n let t = Tt(i.columns, 1);\n for (let n = 0; n < i.rows; ++n)\n for (let e = 0; e < i.columns; ++e)\n t[e] *= i.get(n, e);\n return t;\n}\nfunction dn(i) {\n let t = 1;\n for (let n = 0; n < i.rows; n++)\n for (let e = 0; e < i.columns; e++)\n t *= i.get(n, e);\n return t;\n}\nfunction yn(i, t, n) {\n const e = i.rows, s = i.columns, r = [];\n for (let o = 0; o < e; o++) {\n let h = 0, u = 0, l = 0;\n for (let c = 0; c < s; c++)\n l = i.get(o, c) - n[o], h += l, u += l * l;\n t ? r.push((u - h * h / s) / (s - 1)) : r.push((u - h * h / s) / s);\n }\n return r;\n}\nfunction Pn(i, t, n) {\n const e = i.rows, s = i.columns, r = [];\n for (let o = 0; o < s; o++) {\n let h = 0, u = 0, l = 0;\n for (let c = 0; c < e; c++)\n l = i.get(c, o) - n[o], h += l, u += l * l;\n t ? r.push((u - h * h / e) / (e - 1)) : r.push((u - h * h / e) / e);\n }\n return r;\n}\nfunction Mn(i, t, n) {\n const e = i.rows, s = i.columns, r = e * s;\n let o = 0, h = 0, u = 0;\n for (let l = 0; l < e; l++)\n for (let c = 0; c < s; c++)\n u = i.get(l, c) - n, o += u, h += u * u;\n return t ? (h - o * o / r) / (r - 1) : (h - o * o / r) / r;\n}\nfunction En(i, t) {\n for (let n = 0; n < i.rows; n++)\n for (let e = 0; e < i.columns; e++)\n i.set(n, e, i.get(n, e) - t[n]);\n}\nfunction Sn(i, t) {\n for (let n = 0; n < i.rows; n++)\n for (let e = 0; e < i.columns; e++)\n i.set(n, e, i.get(n, e) - t[e]);\n}\nfunction bn(i, t) {\n for (let n = 0; n < i.rows; n++)\n for (let e = 0; e < i.columns; e++)\n i.set(n, e, i.get(n, e) - t);\n}\nfunction jn(i) {\n const t = [];\n for (let n = 0; n < i.rows; n++) {\n let e = 0;\n for (let s = 0; s < i.columns; s++)\n e += Math.pow(i.get(n, s), 2) / (i.columns - 1);\n t.push(Math.sqrt(e));\n }\n return t;\n}\nfunction vn(i, t) {\n for (let n = 0; n < i.rows; n++)\n for (let e = 0; e < i.columns; e++)\n i.set(n, e, i.get(n, e) / t[n]);\n}\nfunction kn(i) {\n const t = [];\n for (let n = 0; n < i.columns; n++) {\n let e = 0;\n for (let s = 0; s < i.rows; s++)\n e += Math.pow(i.get(s, n), 2) / (i.rows - 1);\n t.push(Math.sqrt(e));\n }\n return t;\n}\nfunction In(i, t) {\n for (let n = 0; n < i.rows; n++)\n for (let e = 0; e < i.columns; e++)\n i.set(n, e, i.get(n, e) / t[e]);\n}\nfunction xn(i) {\n const t = i.size - 1;\n let n = 0;\n for (let e = 0; e < i.columns; e++)\n for (let s = 0; s < i.rows; s++)\n n += Math.pow(i.get(s, e), 2) / t;\n return Math.sqrt(n);\n}\nfunction Rn(i, t) {\n for (let n = 0; n < i.rows; n++)\n for (let e = 0; e < i.columns; e++)\n i.set(n, e, i.get(n, e) / t);\n}\nclass v {\n static from1DArray(t, n, e) {\n if (t * n !== e.length)\n throw new RangeError(\"data length does not match given dimensions\");\n let r = new j(t, n);\n for (let o = 0; o < t; o++)\n for (let h = 0; h < n; h++)\n r.set(o, h, e[o * n + h]);\n return r;\n }\n static rowVector(t) {\n let n = new j(1, t.length);\n for (let e = 0; e < t.length; e++)\n n.set(0, e, t[e]);\n return n;\n }\n static columnVector(t) {\n let n = new j(t.length, 1);\n for (let e = 0; e < t.length; e++)\n n.set(e, 0, t[e]);\n return n;\n }\n static zeros(t, n) {\n return new j(t, n);\n }\n static ones(t, n) {\n return new j(t, n).fill(1);\n }\n static rand(t, n, e = {}) {\n if (typeof e != \"object\")\n throw new TypeError(\"options must be an object\");\n const { random: s = Math.random } = e;\n let r = new j(t, n);\n for (let o = 0; o < t; o++)\n for (let h = 0; h < n; h++)\n r.set(o, h, s());\n return r;\n }\n static randInt(t, n, e = {}) {\n if (typeof e != \"object\")\n throw new TypeError(\"options must be an object\");\n const { min: s = 0, max: r = 1e3, random: o = Math.random } = e;\n if (!Number.isInteger(s))\n throw new TypeError(\"min must be an integer\");\n if (!Number.isInteger(r))\n throw new TypeError(\"max must be an integer\");\n if (s >= r)\n throw new RangeError(\"min must be smaller than max\");\n let h = r - s, u = new j(t, n);\n for (let l = 0; l < t; l++)\n for (let c = 0; c < n; c++) {\n let a = s + Math.round(o() * h);\n u.set(l, c, a);\n }\n return u;\n }\n static eye(t, n, e) {\n n === void 0 && (n = t), e === void 0 && (e = 1);\n let s = Math.min(t, n), r = this.zeros(t, n);\n for (let o = 0; o < s; o++)\n r.set(o, o, e);\n return r;\n }\n static diag(t, n, e) {\n let s = t.length;\n n === void 0 && (n = s), e === void 0 && (e = n);\n let r = Math.min(s, n, e), o = this.zeros(n, e);\n for (let h = 0; h < r; h++)\n o.set(h, h, t[h]);\n return o;\n }\n static min(t, n) {\n t = this.checkMatrix(t), n = this.checkMatrix(n);\n let e = t.rows, s = t.columns, r = new j(e, s);\n for (let o = 0; o < e; o++)\n for (let h = 0; h < s; h++)\n r.set(o, h, Math.min(t.get(o, h), n.get(o, h)));\n return r;\n }\n static max(t, n) {\n t = this.checkMatrix(t), n = this.checkMatrix(n);\n let e = t.rows, s = t.columns, r = new this(e, s);\n for (let o = 0; o < e; o++)\n for (let h = 0; h < s; h++)\n r.set(o, h, Math.max(t.get(o, h), n.get(o, h)));\n return r;\n }\n static checkMatrix(t) {\n return v.isMatrix(t) ? t : new j(t);\n }\n static isMatrix(t) {\n return t != null && t.klass === \"Matrix\";\n }\n get size() {\n return this.rows * this.columns;\n }\n apply(t) {\n if (typeof t != \"function\")\n throw new TypeError(\"callback must be a function\");\n for (let n = 0; n < this.rows; n++)\n for (let e = 0; e < this.columns; e++)\n t.call(this, n, e);\n return this;\n }\n to1DArray() {\n let t = [];\n for (let n = 0; n < this.rows; n++)\n for (let e = 0; e < this.columns; e++)\n t.push(this.get(n, e));\n return t;\n }\n to2DArray() {\n let t = [];\n for (let n = 0; n < this.rows; n++) {\n t.push([]);\n for (let e = 0; e < this.columns; e++)\n t[n].push(this.get(n, e));\n }\n return t;\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 t = 0; t < this.rows; t++)\n for (let n = 0; n <= t; n++)\n if (this.get(t, n) !== this.get(n, t))\n return !1;\n return !0;\n }\n return !1;\n }\n isEchelonForm() {\n let t = 0, n = 0, e = -1, s = !0, r = !1;\n for (; t < this.rows && s; ) {\n for (n = 0, r = !1; n < this.columns && r === !1; )\n this.get(t, n) === 0 ? n++ : this.get(t, n) === 1 && n > e ? (r = !0, e = n) : (s = !1, r = !0);\n t++;\n }\n return s;\n }\n isReducedEchelonForm() {\n let t = 0, n = 0, e = -1, s = !0, r = !1;\n for (; t < this.rows && s; ) {\n for (n = 0, r = !1; n < this.columns && r === !1; )\n this.get(t, n) === 0 ? n++ : this.get(t, n) === 1 && n > e ? (r = !0, e = n) : (s = !1, r = !0);\n for (let o = n + 1; o < this.rows; o++)\n this.get(t, o) !== 0 && (s = !1);\n t++;\n }\n return s;\n }\n echelonForm() {\n let t = this.clone(), n = 0, e = 0;\n for (; n < t.rows && e < t.columns; ) {\n let s = n;\n for (let r = n; r < t.rows; r++)\n t.get(r, e) > t.get(s, e) && (s = r);\n if (t.get(s, e) === 0)\n e++;\n else {\n t.swapRows(n, s);\n let r = t.get(n, e);\n for (let o = e; o < t.columns; o++)\n t.set(n, o, t.get(n, o) / r);\n for (let o = n + 1; o < t.rows; o++) {\n let h = t.get(o, e) / t.get(n, e);\n t.set(o, e, 0);\n for (let u = e + 1; u < t.columns; u++)\n t.set(o, u, t.get(o, u) - t.get(n, u) * h);\n }\n n++, e++;\n }\n }\n return t;\n }\n reducedEchelonForm() {\n let t = this.echelonForm(), n = t.columns, e = t.rows, s = e - 1;\n for (; s >= 0; )\n if (t.maxRow(s) === 0)\n s--;\n else {\n let r = 0, o = !1;\n for (; r < e && o === !1; )\n t.get(s, r) === 1 ? o = !0 : r++;\n for (let h = 0; h < s; h++) {\n let u = t.get(h, r);\n for (let l = r; l < n; l++) {\n let c = t.get(h, l) - u * t.get(s, l);\n t.set(h, l, c);\n }\n }\n s--;\n }\n return t;\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(t = {}) {\n if (typeof t != \"object\")\n throw new TypeError(\"options must be an object\");\n const { rows: n = 1, columns: e = 1 } = t;\n if (!Number.isInteger(n) || n <= 0)\n throw new TypeError(\"rows must be a positive integer\");\n if (!Number.isInteger(e) || e <= 0)\n throw new TypeError(\"columns must be a positive integer\");\n let s = new j(this.rows * n, this.columns * e);\n for (let r = 0; r < n; r++)\n for (let o = 0; o < e; o++)\n s.setSubMatrix(this, this.rows * r, this.columns * o);\n return s;\n }\n fill(t) {\n for (let n = 0; n < this.rows; n++)\n for (let e = 0; e < this.columns; e++)\n this.set(n, e, t);\n return this;\n }\n neg() {\n return this.mulS(-1);\n }\n getRow(t) {\n Y(this, t);\n let n = [];\n for (let e = 0; e < this.columns; e++)\n n.push(this.get(t, e));\n return n;\n }\n getRowVector(t) {\n return j.rowVector(this.getRow(t));\n }\n setRow(t, n) {\n Y(this, t), n = lt(this, n);\n for (let e = 0; e < this.columns; e++)\n this.set(t, e, n[e]);\n return this;\n }\n swapRows(t, n) {\n Y(this, t), Y(this, n);\n for (let e = 0; e < this.columns; e++) {\n let s = this.get(t, e);\n this.set(t, e, this.get(n, e)), this.set(n, e, s);\n }\n return this;\n }\n getColumn(t) {\n X(this, t);\n let n = [];\n for (let e = 0; e < this.rows; e++)\n n.push(this.get(e, t));\n return n;\n }\n getColumnVector(t) {\n return j.columnVector(this.getColumn(t));\n }\n setColumn(t, n) {\n X(this, t), n = ut(this, n);\n for (let e = 0; e < this.rows; e++)\n this.set(e, t, n[e]);\n return this;\n }\n swapColumns(t, n) {\n X(this, t), X(this, n);\n for (let e = 0; e < this.rows; e++) {\n let s = this.get(e, t);\n this.set(e, t, this.get(e, n)), this.set(e, n, s);\n }\n return this;\n }\n addRowVector(t) {\n t = lt(this, t);\n for (let n = 0; n < this.rows; n++)\n for (let e = 0; e < this.columns; e++)\n this.set(n, e, this.get(n, e) + t[e]);\n return this;\n }\n subRowVector(t) {\n t = lt(this, t);\n for (let n = 0; n < this.rows; n++)\n for (let e = 0; e < this.columns; e++)\n this.set(n, e, this.get(n, e) - t[e]);\n return this;\n }\n mulRowVector(t) {\n t = lt(this, t);\n for (let n = 0; n < this.rows; n++)\n for (let e = 0; e < this.columns; e++)\n this.set(n, e, this.get(n, e) * t[e]);\n return this;\n }\n divRowVector(t) {\n t = lt(this, t);\n for (let n = 0; n < this.rows; n++)\n for (let e = 0; e < this.columns; e++)\n this.set(n, e, this.get(n, e) / t[e]);\n return this;\n }\n addColumnVector(t) {\n t = ut(this, t);\n for (let n = 0; n < this.rows; n++)\n for (let e = 0; e < this.columns; e++)\n this.set(n, e, this.get(n, e) + t[n]);\n return this;\n }\n subColumnVector(t) {\n t = ut(this, t);\n for (let n = 0; n < this.rows; n++)\n for (let e = 0; e < this.columns; e++)\n this.set(n, e, this.get(n, e) - t[n]);\n return this;\n }\n mulColumnVector(t) {\n t = ut(this, t);\n for (let n = 0; n < this.rows; n++)\n for (let e = 0; e < this.columns; e++)\n this.set(n, e, this.get(n, e) * t[n]);\n return this;\n }\n divColumnVector(t) {\n t = ut(this, t);\n for (let n = 0; n < this.rows; n++)\n for (let e = 0; e < this.columns; e++)\n this.set(n, e, this.get(n, e) / t[n]);\n return this;\n }\n mulRow(t, n) {\n Y(this, t);\n for (let e = 0; e < this.columns; e++)\n this.set(t, e, this.get(t, e) * n);\n return this;\n }\n mulColumn(t, n) {\n X(this, t);\n for (let e = 0; e < this.rows; e++)\n this.set(e, t, this.get(e, t) * n);\n return this;\n }\n max(t) {\n if (this.isEmpty())\n return NaN;\n switch (t) {\n case \"row\": {\n const n = new Array(this.rows).fill(Number.NEGATIVE_INFINITY);\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.get(e, s) > n[e] && (n[e] = this.get(e, s));\n return n;\n }\n case \"column\": {\n const n = new Array(this.columns).fill(Number.NEGATIVE_INFINITY);\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.get(e, s) > n[s] && (n[s] = this.get(e, s));\n return n;\n }\n case void 0: {\n let n = this.get(0, 0);\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.get(e, s) > n && (n = this.get(e, s));\n return n;\n }\n default:\n throw new Error(`invalid option: ${t}`);\n }\n }\n maxIndex() {\n ht(this);\n let t = this.get(0, 0), n = [0, 0];\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.get(e, s) > t && (t = this.get(e, s), n[0] = e, n[1] = s);\n return n;\n }\n min(t) {\n if (this.isEmpty())\n return NaN;\n switch (t) {\n case \"row\": {\n const n = new Array(this.rows).fill(Number.POSITIVE_INFINITY);\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.get(e, s) < n[e] && (n[e] = this.get(e, s));\n return n;\n }\n case \"column\": {\n const n = new Array(this.columns).fill(Number.POSITIVE_INFINITY);\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.get(e, s) < n[s] && (n[s] = this.get(e, s));\n return n;\n }\n case void 0: {\n let n = this.get(0, 0);\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.get(e, s) < n && (n = this.get(e, s));\n return n;\n }\n default:\n throw new Error(`invalid option: ${t}`);\n }\n }\n minIndex() {\n ht(this);\n let t = this.get(0, 0), n = [0, 0];\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.get(e, s) < t && (t = this.get(e, s), n[0] = e, n[1] = s);\n return n;\n }\n maxRow(t) {\n if (Y(this, t), this.isEmpty())\n return NaN;\n let n = this.get(t, 0);\n for (let e = 1; e < this.columns; e++)\n this.get(t, e) > n && (n = this.get(t, e));\n return n;\n }\n maxRowIndex(t) {\n Y(this, t), ht(this);\n let n = this.get(t, 0), e = [t, 0];\n for (let s = 1; s < this.columns; s++)\n this.get(t, s) > n && (n = this.get(t, s), e[1] = s);\n return e;\n }\n minRow(t) {\n if (Y(this, t), this.isEmpty())\n return NaN;\n let n = this.get(t, 0);\n for (let e = 1; e < this.columns; e++)\n this.get(t, e) < n && (n = this.get(t, e));\n return n;\n }\n minRowIndex(t) {\n Y(this, t), ht(this);\n let n = this.get(t, 0), e = [t, 0];\n for (let s = 1; s < this.columns; s++)\n this.get(t, s) < n && (n = this.get(t, s), e[1] = s);\n return e;\n }\n maxColumn(t) {\n if (X(this, t), this.isEmpty())\n return NaN;\n let n = this.get(0, t);\n for (let e = 1; e < this.rows; e++)\n this.get(e, t) > n && (n = this.get(e, t));\n return n;\n }\n maxColumnIndex(t) {\n X(this, t), ht(this);\n let n = this.get(0, t), e = [0, t];\n for (let s = 1; s < this.rows; s++)\n this.get(s, t) > n && (n = this.get(s, t), e[0] = s);\n return e;\n }\n minColumn(t) {\n if (X(this, t), this.isEmpty())\n return NaN;\n let n = this.get(0, t);\n for (let e = 1; e < this.rows; e++)\n this.get(e, t) < n && (n = this.get(e, t));\n return n;\n }\n minColumnIndex(t) {\n X(this, t), ht(this);\n let n = this.get(0, t), e = [0, t];\n for (let s = 1; s < this.rows; s++)\n this.get(s, t) < n && (n = this.get(s, t), e[0] = s);\n return e;\n }\n diag() {\n let t = Math.min(this.rows, this.columns), n = [];\n for (let e = 0; e < t; e++)\n n.push(this.get(e, e));\n return n;\n }\n norm(t = \"frobenius\") {\n let n = 0;\n if (t === \"max\")\n return this.max();\n if (t === \"frobenius\") {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n n = n + this.get(e, s) * this.get(e, s);\n return Math.sqrt(n);\n } else\n throw new RangeError(`unknown norm type: ${t}`);\n }\n cumulativeSum() {\n let t = 0;\n for (let n = 0; n < this.rows; n++)\n for (let e = 0; e < this.columns; e++)\n t += this.get(n, e), this.set(n, e, t);\n return this;\n }\n dot(t) {\n v.isMatrix(t) && (t = t.to1DArray());\n let n = this.to1DArray();\n if (n.length !== t.length)\n throw new RangeError(\"vectors do not have the same size\");\n let e = 0;\n for (let s = 0; s < n.length; s++)\n e += n[s] * t[s];\n return e;\n }\n mmul(t) {\n t = j.checkMatrix(t);\n let n = this.rows, e = this.columns, s = t.columns, r = new j(n, s), o = new Float64Array(e);\n for (let h = 0; h < s; h++) {\n for (let u = 0; u < e; u++)\n o[u] = t.get(u, h);\n for (let u = 0; u < n; u++) {\n let l = 0;\n for (let c = 0; c < e; c++)\n l += this.get(u, c) * o[c];\n r.set(u, h, l);\n }\n }\n return r;\n }\n strassen2x2(t) {\n t = j.checkMatrix(t);\n let n = new j(2, 2);\n const e = this.get(0, 0), s = t.get(0, 0), r = this.get(0, 1), o = t.get(0, 1), h = this.get(1, 0), u = t.get(1, 0), l = this.get(1, 1), c = t.get(1, 1), a = (e + l) * (s + c), g = (h + l) * s, w = e * (o - c), m = l * (u - s), d = (e + r) * c, P = (h - e) * (s + o), f = (r - l) * (u + c), p = a + m - d + f, y = w + d, M = g + m, b = a - g + w + P;\n return n.set(0, 0, p), n.set(0, 1, y), n.set(1, 0, M), n.set(1, 1, b), n;\n }\n strassen3x3(t) {\n t = j.checkMatrix(t);\n let n = new j(3, 3);\n const e = this.get(0, 0), s = this.get(0, 1), r = this.get(0, 2), o = this.get(1, 0), h = this.get(1, 1), u = this.get(1, 2), l = this.get(2, 0), c = this.get(2, 1), a = this.get(2, 2), g = t.get(0, 0), w = t.get(0, 1), m = t.get(0, 2), d = t.get(1, 0), P = t.get(1, 1), f = t.get(1, 2), p = t.get(2, 0), y = t.get(2, 1), M = t.get(2, 2), b = (e + s + r - o - h - c - a) * P, x = (e - o) * (-w + P), k = h * (-g + w + d - P - f - p + M), S = (-e + o + h) * (g - w + P), _ = (o + h) * (-g + w), F = e * g, B = (-e + l + c) * (g - m + f), K = (-e + l) * (m - f), Q = (l + c) * (-g + m), Z = (e + s + r - h - u - l - c) * f, $ = c * (-g + m + d - P - f - p + y), N = (-r + c + a) * (P + p - y), dt = (r - a) * (P - y), H = r * p, rt = (c + a) * (-p + y), L = (-r + h + u) * (f + p - M), Gt = (r - u) * (f - M), Wt = (h + u) * (-p + M), Re = s * d, _e = u * y, Fe = o * m, Te = l * w, Ce = a * M, $e = F + H + Re, qe = b + S + _ + F + N + H + rt, Be = F + B + Q + Z + H + L + Wt, Oe = x + k + S + F + H + L + Gt, Ae = x + S + _ + F + _e, Ne = H + L + Gt + Wt + Fe, Le = F + B + K + $ + N + dt + H, Ve = N + dt + H + rt + Te, ze = F + B + K + Q + Ce;\n return n.set(0, 0, $e), n.set(0, 1, qe), n.set(0, 2, Be), n.set(1, 0, Oe), n.set(1, 1, Ae), n.set(1, 2, Ne), n.set(2, 0, Le), n.set(2, 1, Ve), n.set(2, 2, ze), n;\n }\n mmulStrassen(t) {\n t = j.checkMatrix(t);\n let n = this.clone(), e = n.rows, s = n.columns, r = t.rows, o = t.columns;\n s !== r && console.warn(\n `Multiplying ${e} x ${s} and ${r} x ${o} matrix: dimensions do not match.`\n );\n function h(a, g, w) {\n let m = a.rows, d = a.columns;\n if (m === g && d === w)\n return a;\n {\n let P = v.zeros(g, w);\n return P = P.setSubMatrix(a, 0, 0), P;\n }\n }\n let u = Math.max(e, r), l = Math.max(s, o);\n n = h(n, u, l), t = h(t, u, l);\n function c(a, g, w, m) {\n if (w <= 512 || m <= 512)\n return a.mmul(g);\n w % 2 === 1 && m % 2 === 1 ? (a = h(a, w + 1, m + 1), g = h(g, w + 1, m + 1)) : w % 2 === 1 ? (a = h(a, w + 1, m), g = h(g, w + 1, m)) : m % 2 === 1 && (a = h(a, w, m + 1), g = h(g, w, m + 1));\n let d = parseInt(a.rows / 2, 10), P = parseInt(a.columns / 2, 10), f = a.subMatrix(0, d - 1, 0, P - 1), p = g.subMatrix(0, d - 1, 0, P - 1), y = a.subMatrix(0, d - 1, P, a.columns - 1), M = g.subMatrix(0, d - 1, P, g.columns - 1), b = a.subMatrix(d, a.rows - 1, 0, P - 1), x = g.subMatrix(d, g.rows - 1, 0, P - 1), k = a.subMatrix(d, a.rows - 1, P, a.columns - 1), S = g.subMatrix(d, g.rows - 1, P, g.columns - 1), _ = c(\n v.add(f, k),\n v.add(p, S),\n d,\n P\n ), F = c(v.add(b, k), p, d, P), B = c(f, v.sub(M, S), d, P), K = c(k, v.sub(x, p), d, P), Q = c(v.add(f, y), S, d, P), Z = c(\n v.sub(b, f),\n v.add(p, M),\n d,\n P\n ), $ = c(\n v.sub(y, k),\n v.add(x, S),\n d,\n P\n ), N = v.add(_, K);\n N.sub(Q), N.add($);\n let dt = v.add(B, Q), H = v.add(F, K), rt = v.sub(_, F);\n rt.add(B), rt.add(Z);\n let L = v.zeros(2 * N.rows, 2 * N.columns);\n return L = L.setSubMatrix(N, 0, 0), L = L.setSubMatrix(dt, N.rows, 0), L = L.setSubMatrix(H, 0, N.columns), L = L.setSubMatrix(rt, N.rows, N.columns), L.subMatrix(0, w - 1, 0, m - 1);\n }\n return c(n, t, u, l);\n }\n scaleRows(t = {}) {\n if (typeof t != \"object\")\n throw new TypeError(\"options must be an object\");\n const { min: n = 0, max: e = 1 } = t;\n if (!Number.isFinite(n))\n throw new TypeError(\"min must be a number\");\n if (!Number.isFinite(e))\n throw new TypeError(\"max must be a number\");\n if (n >= e)\n throw new RangeError(\"min must be smaller than max\");\n let s = new j(this.rows, this.columns);\n for (let r = 0; r < this.rows; r++) {\n const o = this.getRow(r);\n o.length > 0 && Kt(o, { min: n, max: e, output: o }), s.setRow(r, o);\n }\n return s;\n }\n scaleColumns(t = {}) {\n if (typeof t != \"object\")\n throw new TypeError(\"options must be an object\");\n const { min: n = 0, max: e = 1 } = t;\n if (!Number.isFinite(n))\n throw new TypeError(\"min must be a number\");\n if (!Number.isFinite(e))\n throw new TypeError(\"max must be a number\");\n if (n >= e)\n throw new RangeError(\"min must be smaller than max\");\n let s = new j(this.rows, this.columns);\n for (let r = 0; r < this.columns; r++) {\n const o = this.getColumn(r);\n o.length && Kt(o, {\n min: n,\n max: e,\n output: o\n }), s.setColumn(r, o);\n }\n return s;\n }\n flipRows() {\n const t = Math.ceil(this.columns / 2);\n for (let n = 0; n < this.rows; n++)\n for (let e = 0; e < t; e++) {\n let s = this.get(n, e), r = this.get(n, this.columns - 1 - e);\n this.set(n, e, r), this.set(n, this.columns - 1 - e, s);\n }\n return this;\n }\n flipColumns() {\n const t = Math.ceil(this.rows / 2);\n for (let n = 0; n < this.columns; n++)\n for (let e = 0; e < t; e++) {\n let s = this.get(e, n), r = this.get(this.rows - 1 - e, n);\n this.set(e, n, r), this.set(this.rows - 1 - e, n, s);\n }\n return this;\n }\n kroneckerProduct(t) {\n t = j.checkMatrix(t);\n let n = this.rows, e = this.columns, s = t.rows, r = t.columns, o = new j(n * s, e * r);\n for (let h = 0; h < n; h++)\n for (let u = 0; u < e; u++)\n for (let l = 0; l < s; l++)\n for (let c = 0; c < r; c++)\n o.set(s * h + l, r * u + c, this.get(h, u) * t.get(l, c));\n return o;\n }\n kroneckerSum(t) {\n if (t = j.checkMatrix(t), !this.isSquare() || !t.isSquare())\n throw new Error(\"Kronecker Sum needs two Square Matrices\");\n let n = this.rows, e = t.rows, s = this.kroneckerProduct(j.eye(e, e)), r = j.eye(n, n).kroneckerProduct(t);\n return s.add(r);\n }\n transpose() {\n let t = new j(this.columns, this.rows);\n for (let n = 0; n < this.rows; n++)\n for (let e = 0; e < this.columns; e++)\n t.set(e, n, this.get(n, e));\n return t;\n }\n sortRows(t = Ht) {\n for (let n = 0; n < this.rows; n++)\n this.setRow(n, this.getRow(n).sort(t));\n return this;\n }\n sortColumns(t = Ht) {\n for (let n = 0; n < this.columns; n++)\n this.setColumn(n, this.getColumn(n).sort(t));\n return this;\n }\n subMatrix(t, n, e, s) {\n Zt(this, t, n, e, s);\n let r = new j(\n n - t + 1,\n s - e + 1\n );\n for (let o = t; o <= n; o++)\n for (let h = e; h <= s; h++)\n r.set(o - t, h - e, this.get(o, h));\n return r;\n }\n subMatrixRow(t, n, e) {\n if (n === void 0 && (n = 0), e === void 0 && (e = this.columns - 1), n > e || n < 0 || n >= this.columns || e < 0 || e >= this.columns)\n throw new RangeError(\"Argument out of range\");\n let s = new j(t.length, e - n + 1);\n for (let r = 0; r < t.length; r++)\n for (let o = n; o <= e; o++) {\n if (t[r] < 0 || t[r] >= this.rows)\n throw new RangeError(`Row index out of range: ${t[r]}`);\n s.set(r, o - n, this.get(t[r], o));\n }\n return s;\n }\n subMatrixColumn(t, n, e) {\n if (n === void 0 && (n = 0), e === void 0 && (e = this.rows - 1), n > e || n < 0 || n >= this.rows || e < 0 || e >= this.rows)\n throw new RangeError(\"Argument out of range\");\n let s = new j(e - n + 1, t.length);\n for (let r = 0; r < t.length; r++)\n for (let o = n; o <= e; o++) {\n if (t[r] < 0 || t[r] >= this.columns)\n throw new RangeError(`Column index out of range: ${t[r]}`);\n s.set(o - n, r, this.get(o, t[r]));\n }\n return s;\n }\n setSubMatrix(t, n, e) {\n if (t = j.checkMatrix(t), t.isEmpty())\n return this;\n let s = n + t.rows - 1, r = e + t.columns - 1;\n Zt(this, n, s, e, r);\n for (let o = 0; o < t.rows; o++)\n for (let h = 0; h < t.columns; h++)\n this.set(n + o, e + h, t.get(o, h));\n return this;\n }\n selection(t, n) {\n an(this, t), cn(this, n);\n let e = new j(t.length, n.length);\n for (let s = 0; s < t.length; s++) {\n let r = t[s];\n for (let o = 0; o < n.length; o++) {\n let h = n[o];\n e.set(s, o, this.get(r, h));\n }\n }\n return e;\n }\n trace() {\n let t = Math.min(this.rows, this.columns), n = 0;\n for (let e = 0; e < t; e++)\n n += this.get(e, e);\n return n;\n }\n clone() {\n let t = new j(this.rows, this.columns);\n for (let n = 0; n < this.rows; n++)\n for (let e = 0; e < this.columns; e++)\n t.set(n, e, this.get(n, e));\n return t;\n }\n sum(t) {\n switch (t) {\n case \"row\":\n return fn(this);\n case \"column\":\n return gn(this);\n case void 0:\n return mn(this);\n default:\n throw new Error(`invalid option: ${t}`);\n }\n }\n product(t) {\n switch (t) {\n case \"row\":\n return pn(this);\n case \"column\":\n return wn(this);\n case void 0:\n return dn(this);\n default:\n throw new Error(`invalid option: ${t}`);\n }\n }\n mean(t) {\n const n = this.sum(t);\n switch (t) {\n case \"row\": {\n for (let e = 0; e < this.rows; e++)\n n[e] /= this.columns;\n return n;\n }\n case \"column\": {\n for (let e = 0; e < this.columns; e++)\n n[e] /= this.rows;\n return n;\n }\n case void 0:\n return n / this.size;\n default:\n throw new Error(`invalid option: ${t}`);\n }\n }\n variance(t, n = {}) {\n if (typeof t == \"object\" && (n = t, t = void 0), typeof n != \"object\")\n throw new TypeError(\"options must be an object\");\n const { unbiased: e = !0, mean: s = this.mean(t) } = n;\n if (typeof e != \"boolean\")\n throw new TypeError(\"unbiased must be a boolean\");\n switch (t) {\n case \"row\": {\n if (!z(s))\n throw new TypeError(\"mean must be an array\");\n return yn(this, e, s);\n }\n case \"column\": {\n if (!z(s))\n throw new TypeError(\"mean must be an array\");\n return Pn(this, e, s);\n }\n case void 0: {\n if (typeof s != \"number\")\n throw new TypeError(\"mean must be a number\");\n return Mn(this, e, s);\n }\n default:\n throw new Error(`invalid option: ${t}`);\n }\n }\n standardDeviation(t, n) {\n typeof t == \"object\" && (n = t, t = void 0);\n const e = this.variance(t, n);\n if (t === void 0)\n return Math.sqrt(e);\n for (let s = 0; s < e.length; s++)\n e[s] = Math.sqrt(e[s]);\n return e;\n }\n center(t, n = {}) {\n if (typeof t == \"object\" && (n = t, t = void 0), typeof n != \"object\")\n throw new TypeError(\"options must be an object\");\n const { center: e = this.mean(t) } = n;\n switch (t) {\n case \"row\": {\n if (!z(e))\n throw new TypeError(\"center must be an array\");\n return En(this, e), this;\n }\n case \"column\": {\n if (!z(e))\n throw new TypeError(\"center must be an array\");\n return Sn(this, e), this;\n }\n case void 0: {\n if (typeof e != \"number\")\n throw new TypeError(\"center must be a number\");\n return bn(this, e), this;\n }\n default:\n throw new Error(`invalid option: ${t}`);\n }\n }\n scale(t, n = {}) {\n if (typeof t == \"object\" && (n = t, t = void 0), typeof n != \"object\")\n throw new TypeError(\"options must be an object\");\n let e = n.scale;\n switch (t) {\n case \"row\": {\n if (e === void 0)\n e = jn(this);\n else if (!z(e))\n throw new TypeError(\"scale must be an array\");\n return vn(this, e), this;\n }\n case \"column\": {\n if (e === void 0)\n e = kn(this);\n else if (!z(e))\n throw new TypeError(\"scale must be an array\");\n return In(this, e), this;\n }\n case void 0: {\n if (e === void 0)\n e = xn(this);\n else if (typeof e != \"number\")\n throw new TypeError(\"scale must be a number\");\n return Rn(this, e), this;\n }\n default:\n throw new Error(`invalid option: ${t}`);\n }\n }\n toString(t) {\n return we(this, t);\n }\n}\nv.prototype.klass = \"Matrix\";\ntypeof Symbol < \"u\" && (v.prototype[Symbol.for(\"nodejs.util.inspect.custom\")] = on);\nfunction Ht(i, t) {\n return i - t;\n}\nfunction _n(i) {\n return i.every((t) => typeof t == \"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;\nclass j extends v {\n constructor(t, n) {\n if (super(), j.isMatrix(t))\n return t.clone();\n if (Number.isInteger(t) && t >= 0)\n if (this.data = [], Number.isInteger(n) && n >= 0)\n for (let e = 0; e < t; e++)\n this.data.push(new Float64Array(n));\n else\n throw new TypeError(\"nColumns must be a positive integer\");\n else if (z(t)) {\n const e = t;\n if (t = e.length, n = t ? e[0].length : 0, typeof n != \"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 < t; s++) {\n if (e[s].length !== n)\n throw new RangeError(\"Inconsistent array dimensions\");\n if (!_n(e[s]))\n throw new TypeError(\"Input data contains non-numeric values\");\n this.data.push(Float64Array.from(e[s]));\n }\n } else\n throw new TypeError(\n \"First argument must be a positive number or an array\"\n );\n this.rows = t, this.columns = n;\n }\n set(t, n, e) {\n return this.data[t][n] = e, this;\n }\n get(t, n) {\n return this.data[t][n];\n }\n removeRow(t) {\n return Y(this, t), this.data.splice(t, 1), this.rows -= 1, this;\n }\n addRow(t, n) {\n return n === void 0 && (n = t, t = this.rows), Y(this, t, !0), n = Float64Array.from(lt(this, n)), this.data.splice(t, 0, n), this.rows += 1, this;\n }\n removeColumn(t) {\n X(this, t);\n for (let n = 0; n < this.rows; n++) {\n const e = new Float64Array(this.columns - 1);\n for (let s = 0; s < t; s++)\n e[s] = this.data[n][s];\n for (let s = t + 1; s < this.columns; s++)\n e[s - 1] = this.data[n][s];\n this.data[n] = e;\n }\n return this.columns -= 1, this;\n }\n addColumn(t, n) {\n typeof n > \"u\" && (n = t, t = this.columns), X(this, t, !0), n = ut(this, n);\n for (let e = 0; e < this.rows; e++) {\n const s = new Float64Array(this.columns + 1);\n let r = 0;\n for (; r < t; r++)\n s[r] = this.data[e][r];\n for (s[r++] = n[e]; r < this.columns + 1; r++)\n s[r] = this.data[e][r - 1];\n this.data[e] = s;\n }\n return this.columns += 1, this;\n }\n}\nun(v, j);\nclass Fn extends v {\n constructor(t) {\n super(), this.data = t, this.rows = t.length, this.columns = t[0].length;\n }\n set(t, n, e) {\n return this.data[t][n] = e, this;\n }\n get(t, n) {\n return this.data[t][n];\n }\n}\nfunction te(i, t) {\n let n = 0;\n return Math.abs(i) > Math.abs(t) ? (n = t / i, Math.abs(i) * Math.sqrt(1 + n * n)) : t !== 0 ? (n = i / t, Math.abs(t) * Math.sqrt(1 + n * n)) : 0;\n}\nclass Tn {\n constructor(t, n = {}) {\n const { assumeSymmetric: e = !1 } = n;\n if (t = Fn.checkMatrix(t), !t.isSquare())\n throw new Error(\"Matrix is not a square matrix\");\n if (t.isEmpty())\n throw new Error(\"Matrix must be non-empty\");\n let s = t.columns, r = new j(s, s), o = new Float64Array(s), h = new Float64Array(s), u = t, l, c, a = !1;\n if (e ? a = !0 : a = t.isSymmetric(), a) {\n for (l = 0; l < s; l++)\n for (c = 0; c < s; c++)\n r.set(l, c, u.get(l, c));\n Cn(s, h, o, r), $n(s, h, o, r);\n } else {\n let g = new j(s, s), w = new Float64Array(s);\n for (c = 0; c < s; c++)\n for (l = 0; l < s; l++)\n g.set(l, c, u.get(l, c));\n qn(s, g, w, r), Bn(s, h, o, r, g);\n }\n this.n = s, this.e = h, this.d = o, this.V = r;\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 t = this.n, n = this.e, e = this.d, s = new j(t, t), r, o;\n for (r = 0; r < t; r++) {\n for (o = 0; o < t; o++)\n s.set(r, o, 0);\n s.set(r, r, e[r]), n[r] > 0 ? s.set(r, r + 1, n[r]) : n[r] < 0 && s.set(r, r - 1, n[r]);\n }\n return s;\n }\n}\nfunction Cn(i, t, n, e) {\n let s, r, o, h, u, l, c, a;\n for (u = 0; u < i; u++)\n n[u] = e.get(i - 1, u);\n for (h = i - 1; h > 0; h--) {\n for (a = 0, o = 0, l = 0; l < h; l++)\n a = a + Math.abs(n[l]);\n if (a === 0)\n for (t[h] = n[h - 1], u = 0; u < h; u++)\n n[u] = e.get(h - 1, u), e.set(h, u, 0), e.set(u, h, 0);\n else {\n for (l = 0; l < h; l++)\n n[l] /= a, o += n[l] * n[l];\n for (s = n[h - 1], r = Math.sqrt(o), s > 0 && (r = -r), t[h] = a * r, o = o - s * r, n[h - 1] = s - r, u = 0; u < h; u++)\n t[u] = 0;\n for (u = 0; u < h; u++) {\n for (s = n[u], e.set(u, h, s), r = t[u] + e.get(u, u) * s, l = u + 1; l <= h - 1; l++)\n r += e.get(l, u) * n[l], t[l] += e.get(l, u) * s;\n t[u] = r;\n }\n for (s = 0, u = 0; u < h; u++)\n t[u] /= o, s += t[u] * n[u];\n for (c = s / (o + o), u = 0; u < h; u++)\n t[u] -= c * n[u];\n for (u = 0; u < h; u++) {\n for (s = n[u], r = t[u], l = u; l <= h - 1; l++)\n e.set(l, u, e.get(l, u) - (s * t[l] + r * n[l]));\n n[u] = e.get(h - 1, u), e.set(h, u, 0);\n }\n }\n n[h] = o;\n }\n for (h = 0; h < i - 1; h++) {\n if (e.set(i - 1, h, e.get(h, h)), e.set(h, h, 1), o = n[h + 1], o !== 0) {\n for (l = 0; l <= h; l++)\n n[l] = e.get(l, h + 1) / o;\n for (u = 0; u <= h; u++) {\n for (r = 0, l = 0; l <= h; l++)\n r += e.get(l, h + 1) * e.get(l, u);\n for (l = 0; l <= h; l++)\n e.set(l, u, e.get(l, u) - r * n[l]);\n }\n }\n for (l = 0; l <= h; l++)\n e.set(l, h + 1, 0);\n }\n for (u = 0; u < i; u++)\n n[u] = e.get(i - 1, u), e.set(i - 1, u, 0);\n e.set(i - 1, i - 1, 1), t[0] = 0;\n}\nfunction $n(i, t, n, e) {\n let s, r, o, h, u, l, c, a, g, w, m, d, P, f, p, y;\n for (o = 1; o < i; o++)\n t[o - 1] = t[o];\n t[i - 1] = 0;\n let M = 0, b = 0, x = Number.EPSILON;\n for (l = 0; l < i; l++) {\n for (b = Math.max(b, Math.abs(n[l]) + Math.abs(t[l])), c = l; c < i && !(Math.abs(t[c]) <= x * b); )\n c++;\n if (c > l)\n do {\n for (s = n[l], a = (n[l + 1] - s) / (2 * t[l]), g = te(a, 1), a < 0 && (g = -g), n[l] = t[l] / (a + g), n[l + 1] = t[l] * (a + g), w = n[l + 1], r = s - n[l], o = l + 2; o < i; o++)\n n[o] -= r;\n for (M = M + r, a = n[c], m = 1, d = m, P = m, f = t[l + 1], p = 0, y = 0, o = c - 1; o >= l; o--)\n for (P = d, d = m, y = p, s = m * t[o], r = m * a, g = te(a, t[o]), t[o + 1] = p * g, p = t[o] / g, m = a / g, a = m * n[o] - p * s, n[o + 1] = r + p * (m * s + p * n[o]), u = 0; u < i; u++)\n r = e.get(u, o + 1), e.set(u, o + 1, p * e.get(u, o) + m * r), e.set(u, o, m * e.get(u, o) - p * r);\n a = -p * y * P * f * t[l] / w, t[l] = p * a, n[l] = m * a;\n } while (Math.abs(t[l]) > x * b);\n n[l] = n[l] + M, t[l] = 0;\n }\n for (o = 0; o < i - 1; o++) {\n for (u = o, a = n[o], h = o + 1; h < i; h++)\n n[h] < a && (u = h, a = n[h]);\n if (u !== o)\n for (n[u] = n[o], n[o] = a, h = 0; h < i; h++)\n a = e.get(h, o), e.set(h, o, e.get(h, u)), e.set(h, u, a);\n }\n}\nfunction qn(i, t, n, e) {\n let s = 0, r = i - 1, o, h, u, l, c, a, g;\n for (a = s + 1; a <= r - 1; a++) {\n for (g = 0, l = a; l <= r; l++)\n g = g + Math.abs(t.get(l, a - 1));\n if (g !== 0) {\n for (u = 0, l = r; l >= a; l--)\n n[l] = t.get(l, a - 1) / g, u += n[l] * n[l];\n for (h = Math.sqrt(u), n[a] > 0 && (h = -h), u = u - n[a] * h, n[a] = n[a] - h, c = a; c < i; c++) {\n for (o = 0, l = r; l >= a; l--)\n o += n[l] * t.get(l, c);\n for (o = o / u, l = a; l <= r; l++)\n t.set(l, c, t.get(l, c) - o * n[l]);\n }\n for (l = 0; l <= r; l++) {\n for (o = 0, c = r; c >= a; c--)\n o += n[c] * t.get(l, c);\n for (o = o / u, c = a; c <= r; c++)\n t.set(l, c, t.get(l, c) - o * n[c]);\n }\n n[a] = g * n[a], t.set(a, a - 1, g * h);\n }\n }\n for (l = 0; l < i; l++)\n for (c = 0; c < i; c++)\n e.set(l, c, l === c ? 1 : 0);\n for (a = r - 1; a >= s + 1; a--)\n if (t.get(a, a - 1) !== 0) {\n for (l = a + 1; l <= r; l++)\n n[l] = t.get(l, a - 1);\n for (c = a; c <= r; c++) {\n for (h = 0, l = a; l <= r; l++)\n h += n[l] * e.get(l, c);\n for (h = h / n[a] / t.get(a, a - 1), l = a; l <= r; l++)\n e.set(l, c, e.get(l, c) + h * n[l]);\n }\n }\n}\nfunction Bn(i, t, n, e, s) {\n let r = i - 1, o = 0, h = i - 1, u = Number.EPSILON, l = 0, c = 0, a = 0, g = 0, w = 0, m = 0, d = 0, P = 0, f, p, y, M, b, x, k, S, _, F, B, K, Q, Z, $;\n for (f = 0; f < i; f++)\n for ((f < o || f > h) && (n[f] = s.get(f, f), t[f] = 0), p = Math.max(f - 1, 0); p < i; p++)\n c = c + Math.abs(s.get(f, p));\n for (; r >= o; ) {\n for (M = r; M > o && (m = Math.abs(s.get(M - 1, M - 1)) + Math.abs(s.get(M, M)), m === 0 && (m = c), !(Math.abs(s.get(M, M - 1)) < u * m)); )\n M--;\n if (M === r)\n s.set(r, r, s.get(r, r) + l), n[r] = s.get(r, r), t[r] = 0, r--, P = 0;\n else if (M === r - 1) {\n if (k = s.get(r, r - 1) * s.get(r - 1, r), a = (s.get(r - 1, r - 1) - s.get(r, r)) / 2, g = a * a + k, d = Math.sqrt(Math.abs(g)), s.set(r, r, s.get(r, r) + l), s.set(r - 1, r - 1, s.get(r - 1, r - 1) + l), S = s.get(r, r), g >= 0) {\n for (d = a >= 0 ? a + d : a - d, n[r - 1] = S + d, n[r] = n[r - 1], d !== 0 && (n[r] = S - k / d), t[r - 1] = 0, t[r] = 0, S = s.get(r, r - 1), m = Math.abs(S) + Math.abs(d), a = S / m, g = d / m, w = Math.sqrt(a * a + g * g), a = a / w, g = g / w, p = r - 1; p < i; p++)\n d = s.get(r - 1, p), s.set(r - 1, p, g * d + a * s.get(r, p)), s.set(r, p, g * s.get(r, p) - a * d);\n for (f = 0; f <= r; f++)\n d = s.get(f, r - 1), s.set(f, r - 1, g * d + a * s.get(f, r)), s.set(f, r, g * s.get(f, r) - a * d);\n for (f = o; f <= h; f++)\n d = e.get(f, r - 1), e.set(f, r - 1, g * d + a * e.get(f, r)), e.set(f, r, g * e.get(f, r) - a * d);\n } else\n n[r - 1] = S + a, n[r] = S + a, t[r - 1] = d, t[r] = -d;\n r = r - 2, P = 0;\n } else {\n if (S = s.get(r, r), _ = 0, k = 0, M < r && (_ = s.get(r - 1, r - 1), k = s.get(r, r - 1) * s.get(r - 1, r)), P === 10) {\n for (l += S, f = o; f <= r; f++)\n s.set(f, f, s.get(f, f) - S);\n m = Math.abs(s.get(r, r - 1)) + Math.abs(s.get(r - 1, r - 2)), S = _ = 0.75 * m, k = -0.4375 * m * m;\n }\n if (P === 30 && (m = (_ - S) / 2, m = m * m + k, m > 0)) {\n for (m = Math.sqrt(m), _ < S && (m = -m), m = S - k / ((_ - S) / 2 + m), f = o; f <= r; f++)\n s.set(f, f, s.get(f, f) - m);\n l += m, S = _ = k = 0.964;\n }\n for (P = P + 1, b = r - 2; b >= M && (d = s.get(b, b), w = S - d, m = _ - d, a = (w * m - k) / s.get(b + 1, b) + s.get(b, b + 1), g = s.get(b + 1, b + 1) - d - w - m, w = s.get(b + 2, b + 1), m = Math.abs(a) + Math.abs(g) + Math.abs(w), a = a / m, g = g / m, w = w / m, !(b === M || Math.abs(s.get(b, b - 1)) * (Math.abs(g) + Math.abs(w)) < u * (Math.abs(a) * (Math.abs(s.get(b - 1, b - 1)) + Math.abs(d) + Math.abs(s.get(b + 1, b + 1)))))); )\n b--;\n for (f = b + 2; f <= r; f++)\n s.set(f, f - 2, 0), f > b + 2 && s.set(f, f - 3, 0);\n for (y = b; y <= r - 1 && (Z = y !== r - 1, y !== b && (a = s.get(y, y - 1), g = s.get(y + 1, y - 1), w = Z ? s.get(y + 2, y - 1) : 0, S = Math.abs(a) + Math.abs(g) + Math.abs(w), S !== 0 && (a = a / S, g = g / S, w = w / S)), S !== 0); y++)\n if (m = Math.sqrt(a * a + g * g + w * w), a < 0 && (m = -m), m !== 0) {\n for (y !== b ? s.set(y, y - 1, -m * S) : M !== b && s.set(y, y - 1, -s.get(y, y - 1)), a = a + m, S = a / m, _ = g / m, d = w / m, g = g / a, w = w / a, p = y; p < i; p++)\n a = s.get(y, p) + g * s.get(y + 1, p), Z && (a = a + w * s.get(y + 2, p), s.set(y + 2, p, s.get(y + 2, p) - a * d)), s.set(y, p, s.get(y, p) - a * S), s.set(y + 1, p, s.get(y + 1, p) - a * _);\n for (f = 0; f <= Math.min(r, y + 3); f++)\n a = S * s.get(f, y) + _ * s.get(f, y + 1), Z && (a = a + d * s.get(f, y + 2), s.set(f, y + 2, s.get(f, y + 2) - a * w)), s.set(f, y, s.get(f, y) - a), s.set(f, y + 1, s.get(f, y + 1) - a * g);\n for (f = o; f <= h; f++)\n a = S * e.get(f, y) + _ * e.get(f, y + 1), Z && (a = a + d * e.get(f, y + 2), e.set(f, y + 2, e.get(f, y + 2) - a * w)), e.set(f, y, e.get(f, y) - a), e.set(f, y + 1, e.get(f, y + 1) - a * g);\n }\n }\n }\n if (c !== 0) {\n for (r = i - 1; r >= 0; r--)\n if (a = n[r], g = t[r], g === 0)\n for (M = r, s.set(r, r, 1), f = r - 1; f >= 0; f--) {\n for (k = s.get(f, f) - a, w = 0, p = M; p <= r; p++)\n w = w + s.get(f, p) * s.get(p, r);\n if (t[f] < 0)\n d = k, m = w;\n else if (M = f, t[f] === 0 ? s.set(f, r, k !== 0 ? -w / k : -w / (u * c)) : (S = s.get(f, f + 1), _ = s.get(f + 1, f), g = (n[f] - a) * (n[f] - a) + t[f] * t[f], x = (S * m - d * w) / g, s.set(f, r, x), s.set(\n f + 1,\n r,\n Math.abs(S) > Math.abs(d) ? (-w - k * x) / S : (-m - _ * x) / d\n )), x = Math.abs(s.get(f, r)), u * x * x > 1)\n for (p = f; p <= r; p++)\n s.set(p, r, s.get(p, r) / x);\n }\n else if (g < 0)\n for (M = r - 1, Math.abs(s.get(r, r - 1)) > Math.abs(s.get(r - 1, r)) ? (s.set(r - 1, r - 1, g / s.get(r, r - 1)), s.set(r - 1, r, -(s.get(r, r) - a) / s.get(r, r - 1))) : ($ = St(0, -s.get(r - 1, r), s.get(r - 1, r - 1) - a, g), s.set(r - 1, r - 1, $[0]), s.set(r - 1, r, $[1])), s.set(r, r - 1, 0), s.set(r, r, 1), f = r - 2; f >= 0; f--) {\n for (F = 0, B = 0, p = M; p <= r; p++)\n F = F + s.get(f, p) * s.get(p, r - 1), B = B + s.get(f, p) * s.get(p, r);\n if (k = s.get(f, f) - a, t[f] < 0)\n d = k, w = F, m = B;\n else if (M = f, t[f] === 0 ? ($ = St(-F, -B, k, g), s.set(f, r - 1, $[0]), s.set(f, r, $[1])) : (S = s.get(f, f + 1), _ = s.get(f + 1, f), K = (n[f] - a) * (n[f] - a) + t[f] * t[f] - g * g, Q = (n[f] - a) * 2 * g, K === 0 && Q === 0 && (K = u * c * (Math.abs(k) + Math.abs(g) + Math.abs(S) + Math.abs(_) + Math.abs(d))), $ = St(\n S * w - d * F + g * B,\n S * m - d * B - g * F,\n K,\n Q\n ), s.set(f, r - 1, $[0]), s.set(f, r, $[1]), Math.abs(S) > Math.abs(d) + Math.abs(g) ? (s.set(\n f + 1,\n r - 1,\n (-F - k * s.get(f, r - 1) + g * s.get(f, r)) / S\n ), s.set(\n f + 1,\n r,\n (-B - k * s.get(f, r) - g * s.get(f, r - 1)) / S\n )) : ($ = St(\n -w - _ * s.get(f, r - 1),\n -m - _ * s.get(f, r),\n d,\n g\n ), s.set(f + 1, r - 1, $[0]), s.set(f + 1, r, $[1]))), x = Math.max(Math.abs(s.get(f, r - 1)), Math.abs(s.get(f, r))), u * x * x > 1)\n for (p = f; p <= r; p++)\n s.set(p, r - 1, s.get(p, r - 1) / x), s.set(p, r, s.get(p, r) / x);\n }\n for (f = 0; f < i; f++)\n if (f < o || f > h)\n for (p = f; p < i; p++)\n e.set(f, p, s.get(f, p));\n for (p = i - 1; p >= o; p--)\n for (f = o; f <= h; f++) {\n for (d = 0, y = o; y <= Math.min(p, h); y++)\n d = d + e.get(f, y) * s.get(y, p);\n e.set(f, p, d);\n }\n }\n}\nfunction St(i, t, n, e) {\n let s, r;\n return Math.abs(n) > Math.abs(e) ? (s = e / n, r = n + s * e, [(i + s * t) / r, (t - s * i) / r]) : (s = n / e, r = e + s * n, [(s * i + t) / r, (s * t - i) / r]);\n}\nfunction de(i, t = 1e-9) {\n if (i[i.length - 1] == 0)\n return de(i.slice(0, -1), t);\n const n = new j([\n i.slice(0, -1).reverse().map((s) => -s / i[i.length - 1]),\n ...Array.from({ length: i.length - 2 }, (s, r) => {\n const o = new Array(i.length - 1).fill(0);\n return o[r] = 1, o;\n })\n ]), e = new Tn(n);\n return e.realEigenvalues.filter(\n (s, r) => Math.abs(e.imaginaryEigenvalues[r]) < t\n );\n}\nfunction ye(i, t) {\n const n = Math.max(i.precision, t.precision), e = i.coefficients, s = e.x2, r = e.xy, o = e.y2, h = e.x, u = e.y, l = e.c, c = t.coefficients, a = c.x2, g = c.xy, w = c.y2, m = c.x, d = c.y, P = c.c, f = {\n z0: l * s * m * m + s * s * P * P - h * s * m * P + a * a * l * l - 2 * s * P * a * l - h * m * a * l + a * h * h * P,\n z1: d * h * h * a - P * m * s * r - 2 * s * P * a * u - l * a * g * h + 2 * m * g * s * l + 2 * d * P * s * s + m * m * s * u - d * m * s * h - 2 * s * d * a * l - l * a * m * r + 2 * l * u * a * a - P * g * s * h - u * a * m * h + 2 * P * r * a * h,\n z2: d * d * s * s + 2 * w * P * s * s - u * a * m * r + P * a * r * r - u * a * g * h - P * g * s * r - 2 * s * d * a * u + 2 * m * g * s * u - w * m * s * h - 2 * s * w * a * l + g * g * s * l + 2 * d * r * a * h + u * u * a * a - o * a * m * h - d * g * s * h + 2 * l * o * a * a - l * a * g * r + w * h * h * a + m * m * s * o - d * m * s * r - 2 * s * P * a * o,\n z3: -2 * s * a * o * d + d * a * r * r + 2 * w * r * a * h - o * a * g * h + g * g * s * u - d * g * s * r - 2 * s * w * a * u - u * a * g * r - w * g * s * h + 2 * d * w * s * s + 2 * u * o * a * a - o * a * m * r + 2 * m * g * s * o - w * m * s * r,\n z4: s * s * w * w - 2 * s * w * a * o + a * a * o * o - r * s * g * w - r * g * a * o + r * r * a * w + o * s * g * g\n }, y = de(\n [f.z0, f.z1, f.z2, f.z3, f.z4],\n n\n ).flatMap((M) => {\n const b = s * g * M + s * m - a * r * M - a * h;\n if (b)\n return [[-(s * P + s * w * M * M - a * o * M * M + s * d * M - a * u * M - a * l) / b, M]];\n const x = r * M + h, k = -x / (2 * s), S = o * M * M + u * M + l, _ = x * x / (4 * s * s) - S / s;\n if (Math.abs(_) < n)\n return [[k, M]];\n if (_ > 0) {\n const F = Math.sqrt(_);\n return [[k + F, M], [k - F, M]];\n }\n return [];\n });\n return ct(y, n);\n}\nfunction ee(i, t) {\n return ye(i, t).filter((e) => i.isOnSegment(e) && t.isOnSegment(e));\n}\nconst On = (i) => {\n const {\n firstPoint: t,\n lastPoint: n,\n center: e,\n majorRadius: s,\n minorRadius: r,\n tiltAngle: o,\n clockwise: h\n } = i;\n return new C(\n n,\n t,\n e,\n s,\n r,\n o,\n h,\n {\n ignoreChecks: !0,\n angleUnits: \"rad\"\n }\n );\n}, An = (i, t) => {\n if (i.isSame(t))\n return [i];\n const n = (s, r) => new C(\n s,\n r,\n i.center,\n i.majorRadius,\n i.minorRadius,\n i.tiltAngle,\n i.clockwise,\n { ignoreChecks: !0, angleUnits: \"rad\" }\n ), e = ct(\n [\n t.isOnSegment(i.firstPoint) ? i.firstPoint : null,\n t.isOnSegment(i.lastPoint) ? i.lastPoint : null,\n i.isOnSegment(t.firstPoint) ? t.firstPoint : null,\n i.isOnSegment(t.lastPoint) ? t.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, r) => i.pointToParam(s) - i.pointToParam(r));\n if (e.length === 0)\n return [];\n if (e.length === 1)\n return [];\n if (e.length === 2)\n return i.isSame(On(t)) ? [] : [n(e[0], e[1])];\n if (e.length === 3) {\n const s = E(e[0], t.lastPoint) || E(e[0], t.firstPoint) ? 1 : 0;\n return [n(e[0 + s], e[1 + s])];\n } else if (e.length === 4)\n return [n(e[0], e[1]), n(e[2], e[3])];\n throw new Error(\"Bug in the ellipse arc ellipse arc overlap algorithm\");\n};\nfunction Nn(i, t, n = !1) {\n const e = Math.max(i.precision, t.precision);\n return E(i.center, t.center) && Math.abs(i.majorRadius - t.majorRadius) < e && Math.abs(i.minorRadius - t.minorRadius) < e && (Math.abs(i.tiltAngle - t.tiltAngle) < e || Math.abs(Math.abs(i.tiltAngle - t.tiltAngle) - Math.PI) < e) ? n ? An(i, t) : [] : ye(i, t).filter((o) => i.isOnSegment(o) && t.isOnSegment(o));\n}\nfunction gs(i, t, n) {\n if (i instanceof R && t instanceof R) {\n const e = ge(\n i,\n t,\n !1,\n n\n );\n return e === null ? [] : [e];\n }\n if (i instanceof R && t instanceof I)\n return kt(i, t, n);\n if (i instanceof I && t instanceof R)\n return kt(t, i, n);\n if (i instanceof I && t instanceof I)\n return me(i, t, !1, n);\n throw new Error(\"Not implemented\");\n}\nfunction It(i, t, n) {\n if (i instanceof R && t instanceof R) {\n const e = ge(\n i,\n t,\n !0,\n n\n );\n return e === null ? { intersections: [], overlaps: [], count: 0 } : e instanceof R ? { intersections: [], overlaps: [e], count: 1 } : { intersections: [e], overlaps: [], count: 1 };\n }\n if (!i.boundingBox.overlaps(t.boundingBox))\n return { intersections: [], overlaps: [], count: 0 };\n if (i instanceof R && t instanceof I) {\n const e = kt(i, t, n);\n return { intersections: e, overlaps: [], count: e.length };\n }\n if (i instanceof I && t instanceof R) {\n const e = kt(t, i, n);\n return { intersections: e, overlaps: [], count: e.length };\n }\n if (i instanceof I && t instanceof I) {\n const e = me(\n i,\n t,\n !0,\n n\n );\n return e.length ? e[0] instanceof I ? {\n intersections: [],\n overlaps: e,\n count: e.length\n } : {\n intersections: e,\n overlaps: [],\n count: e.length\n } : { intersections: [], overlaps: [], count: 0 };\n }\n if (i instanceof R && t instanceof C) {\n const e = qt(\n i,\n t,\n n\n );\n return { intersections: e, overlaps: [], count: e.length };\n }\n if (t instanceof R && i instanceof C) {\n const e = qt(\n t,\n i,\n n\n );\n return { intersections: e, overlaps: [], count: e.length };\n }\n if (i instanceof I && t instanceof C) {\n const e = ee(i, t);\n return { intersections: e, overlaps: [], count: e.length };\n }\n if (t instanceof I && i instanceof C) {\n const e = ee(t, i);\n return { intersections: e, overlaps: [], count: e.length };\n }\n if (i instanceof C && t instanceof C) {\n const e = Nn(\n i,\n t,\n !0\n );\n return e.length ? e[0] instanceof C ? {\n intersections: [],\n overlaps: e,\n count: e.length\n } : {\n intersections: e,\n overlaps: [],\n count: e.length\n } : { intersections: [], overlaps: [], count: 0 };\n }\n throw new Error(\"Not implemented\");\n}\nfunction Pe(i) {\n const t = [];\n for (let n = 0; n < i; n++)\n for (let e = 0; e <= n; e++)\n t.push([n, e]);\n return t;\n}\nfunction* Bt(i) {\n for (const [t, n] of Pe(i.length))\n t !== n && (yield [i[t], i[n]]);\n}\nclass Me extends _t {\n constructor(t, { ignoreChecks: n = !1 } = {}) {\n super(), this._boundingBox = null, n || Ee(t), this.segments = t;\n }\n get repr() {\n return this.segments.map((t) => t.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(t) {\n return this.segments.some((n) => n.isOnSegment(t));\n }\n intersects(t) {\n return this.boundingBox.overlaps(t.boundingBox) ? this.segments.some(\n (n) => t.segments.some(\n (e) => It(n, e).count > 0\n )\n ) : !1;\n }\n overlappingSegments(t) {\n return this.segments.flatMap((n) => t.segments.flatMap((e) => n.boundingBox.overlaps(e.boundingBox) ? It(n, e).overlaps : []));\n }\n get boundingBox() {\n if (this._boundingBox === null) {\n let t = this.segments[0].boundingBox;\n this.segments.slice(1).forEach((n) => {\n t = t.merge(n.boundingBox);\n }), this._boundingBox = t;\n }\n return this._boundingBox;\n }\n [Symbol.for(\"nodejs.util.inspect.custom\")]() {\n return this.repr;\n }\n}\nfunction Ln(i, t = \"Stroke\") {\n Pe(i.length).forEach(\n ([n, e]) => {\n if (n === e)\n return;\n const s = i[n], r = i[e], o = It(s, r), h = Math.max(s.precision, r.precision);\n if (o.count !== 0) {\n if (o.count === 1 && !o.overlaps.length) {\n const u = n - e, l = o.intersections[0];\n if (u === 1 && E(s.firstPoint, l, h) || u === -1 && E(s.lastPoint, l, h) || u === i.length - 1 && E(s.lastPoint, l, h) && E(r.firstPoint, l, h) || -u === i.length - 1 && E(s.firstPoint, l, h) && E(r.lastPoint, l, h))\n return;\n }\n if (!(o.count === 2 && i.length === 2 && (E(\n s.firstPoint,\n o.intersections[0],\n h\n ) && E(\n s.lastPoint,\n o.intersections[1],\n h\n ) || E(\n s.firstPoint,\n o.intersections[1],\n h\n ) && E(\n s.lastPoint,\n o.intersections[0],\n h\n ))))\n throw new Error(\n `${t} segments must not intersect, but segments ${s.info} and ${r.info} do at ${JSON.stringify(\n o.intersections\n )}`\n );\n }\n }\n );\n}\nfunction Ee(i, t = \"Stroke\") {\n if (i.length === 0)\n throw new Error(`${t} must have at least one segment`);\n nt([i.slice(0, -1), i.slice(1)]).forEach(\n ([n, e]) => {\n if (!E(n.lastPoint, e.firstPoint))\n throw new Error(\n `${t} segments must be connected, but ${n.info} and ${e.info} are not`\n );\n }\n ), Ln(i, t);\n}\nfunction ne(i, t) {\n return !!(i instanceof R && t instanceof R && Vt(i.V, t.V) || i instanceof I && t instanceof I && E(i.center, t.center) && i.radius - t.radius < i.precision);\n}\nfunction se(i, t) {\n if (i instanceof R && t instanceof R)\n return new R(i.firstPoint, t.lastPoint);\n if (i instanceof I && t instanceof I)\n return new I(\n i.firstPoint,\n t.lastPoint,\n i.center,\n i.clockwise\n );\n throw new Error(\"Not implemented\");\n}\nfunction Se(i) {\n let t = !1;\n const n = [];\n for (const e of i.segments) {\n if (n.length === 0) {\n n.push(e);\n continue;\n }\n const s = n[n.length - 1];\n ne(s, e) ? (t = !0, n.pop(), n.push(se(s, e))) : n.push(e);\n }\n if (E(i.firstPoint, i.lastPoint) && ne(\n n[0],\n n[n.length - 1]\n )) {\n t = !0;\n const e = n.pop();\n n[0] = se(e, n[0]);\n }\n return t ? n : null;\n}\nclass G extends Me {\n constructor() {\n super(...arguments), this.strokeType = \"STRAND\";\n }\n reverse() {\n const t = this.segments.map((n) => n.reverse());\n return t.reverse(), new G(t, { ignoreChecks: !0 });\n }\n clone() {\n return new G(\n this.segments.map((t) => t.clone()),\n { ignoreChecks: !0 }\n );\n }\n extend(t) {\n if (!E(this.lastPoint, t.firstPoint))\n throw console.error(this.repr, t.repr), new Error(\"Cannot extend strand: connection point is not the same\");\n return new G([...this.segments, ...t.segments]);\n }\n simplify() {\n const t = Se(this);\n return t ? new G(t, { ignoreChecks: !0 }) : this;\n }\n transform(t) {\n return new G(\n this.segments.map((n) => n.transform(t)),\n { ignoreChecks: !0 }\n );\n }\n}\nconst Vn = (i, t) => {\n const n = Ft(t, {\n V: [1, 0],\n firstPoint: i,\n precision: t.precision\n });\n if (n === \"parallel\")\n return 0;\n const { intersectionParam1: e, intersectionParam2: s } = n;\n if (!t.isValidParameter(e) || s <= -t.precision)\n return 0;\n if (Math.abs(e) < t.precision || Math.abs(e - 1) < t.precision) {\n const [, r] = t.midPoint;\n return i[1] - r < 0 ? 1 : 0;\n }\n return 1;\n};\nclass be {\n constructor(t) {\n this._count = 0, this.segment = t;\n }\n update(t, n = !1) {\n !n && !this.segment.isOnSegment(t) || (E(t, this.segment.firstPoint) ? this._count += this.segment.tangentAtFirstPoint[1] > 0 ? 1 : 0 : E(t, 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 zn = (i, t) => {\n const n = t.precision, e = Math.abs(i[1] - t.center[1]);\n if (e > t.radius + n)\n return 0;\n const s = mt(i, t.center), r = t.radius * t.radius, o = n * n;\n if (Math.abs(s - r) < o && t.isOnSegment(i))\n return 0;\n const h = s - r > o;\n if (h && t.center[0] < i[0])\n return 0;\n const u = Math.sqrt(\n t.radius * t.radius - e * e\n ), l = new be(t);\n return l.update([t.center[0] + u, i[1]]), h && l.update([t.center[0] - u, i[1]]), l.count;\n}, Dn = (i, t) => {\n const n = t.boundingBox.xMax + t.boundingBox.width / 2, e = new R(i, [n, i[1]]), s = new be(t);\n return qt(e, t).forEach((r) => {\n s.update(r, !0);\n }), s.count;\n};\nfunction Un(i, t) {\n if (t instanceof R)\n return Vn(i, t);\n if (t instanceof I)\n return zn(i, t);\n if (t instanceof C)\n return Dn(i, t);\n throw new Error(\"Not implemented\");\n}\nclass et extends Me {\n constructor(t, { ignoreChecks: n = !1 } = {}) {\n super(t, { ignoreChecks: !0 }), this.strokeType = \"LOOP\", this._clockwise = null, n || Yn(t);\n }\n get clockwise() {\n if (this._clockwise === null) {\n const t = this.segments.flatMap((e) => e instanceof R ? [e.firstPoint] : [e.firstPoint, e.paramPoint(0.5)]), n = t.map((e, s) => {\n const r = t[(s + 1) % t.length];\n return (r[0] - e[0]) * (r[1] + e[1]);\n }).reduce((e, s) => e + s, 0);\n this._clockwise = n > 0;\n }\n return this._clockwise;\n }\n clone() {\n return new et(\n this.segments.map((t) => t.clone()),\n { ignoreChecks: !0 }\n );\n }\n reverse() {\n const t = this.segments.map((n) => n.reverse());\n return t.reverse(), new et(t, { ignoreChecks: !0 });\n }\n transform(t) {\n return new et(\n this.segments.map((n) => n.transform(t)),\n { ignoreChecks: !0 }\n );\n }\n contains(t) {\n return this.onStroke(t) || !this.boundingBox.contains(t) ? !1 : this.segments.reduce((e, s) => e + Un(t, s), 0) % 2 === 1;\n }\n simplify() {\n const t = Se(this);\n return t ? new et(t, { ignoreChecks: !0 }) : this;\n }\n}\nfunction Yn(i) {\n if (Ee(i, \"Loop\"), !E(i[0].firstPoint, i[i.length - 1].lastPoint))\n throw new Error(\"Loop segment must be closed\");\n}\nfunction je(i) {\n if (i instanceof R)\n return {\n type: i.segmentType,\n firstPoint: i.firstPoint,\n lastPoint: i.lastPoint\n };\n if (i instanceof I)\n return {\n type: i.segmentType,\n firstPoint: i.firstPoint,\n lastPoint: i.lastPoint,\n center: i.center,\n clockwise: i.clockwise\n };\n if (i instanceof C)\n return {\n type: i.segmentType,\n firstPoint: i.firstPoint,\n lastPoint: i.lastPoint,\n center: i.center,\n clockwise: i.clockwise,\n majorRadius: i.majorRadius,\n minorRadius: i.minorRadius,\n tiltAngle: i.tiltAngle\n };\n throw new Error(\"Unknown segment type\");\n}\nfunction Ot(i) {\n return {\n type: \"LOOP\",\n segments: i.segments.map(je)\n };\n}\nfunction ve(i) {\n return {\n type: \"FIGURE\",\n contour: Ot(i.contour),\n holes: i.holes.map(Ot)\n };\n}\nfunction Xn(i) {\n return {\n type: \"DIAGRAM\",\n figures: i.figures.map(ve)\n };\n}\nfunction ie(i) {\n if (i instanceof tt)\n return Xn(i);\n if (i instanceof U)\n return ve(i);\n if (i instanceof et)\n return Ot(i);\n if (i instanceof I || i instanceof R)\n return je(i);\n throw new Error(\"Unknown shape type\");\n}\nclass Gn {\n constructor() {\n this.ids = [], this.values = [], this.length = 0;\n }\n clear() {\n this.length = 0;\n }\n push(t, n) {\n let e = this.length++;\n for (; e > 0; ) {\n const s = e - 1 >> 1, r = this.values[s];\n if (n >= r)\n break;\n this.ids[e] = this.ids[s], this.values[e] = r, e = s;\n }\n this.ids[e] = t, this.values[e] = n;\n }\n pop() {\n if (this.length === 0)\n return;\n const t = this.ids[0];\n if (this.length--, this.length > 0) {\n const n = this.ids[0] = this.ids[this.length], e = this.values[0] = this.values[this.length], s = this.length >> 1;\n let r = 0;\n for (; r < s; ) {\n let o = (r << 1) + 1;\n const h = o + 1;\n let u = this.ids[o], l = this.values[o];\n const c = this.values[h];\n if (h < this.length && c < l && (o = h, u = this.ids[h], l = c), l >= e)\n break;\n this.ids[r] = u, this.values[r] = l, r = o;\n }\n this.ids[r] = n, this.values[r] = e;\n }\n return t;\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 re = [\n Int8Array,\n Uint8Array,\n Uint8ClampedArray,\n Int16Array,\n Uint16Array,\n Int32Array,\n Uint32Array,\n Float32Array,\n Float64Array\n], Ct = 3;\nclass Dt {\n static from(t) {\n if (!t || t.byteLength === void 0 || t.buffer)\n throw new Error(\"Data must be an instance of ArrayBuffer or SharedArrayBuffer.\");\n const [n, e] = new Uint8Array(t, 0, 2);\n if (n !== 251)\n throw new Error(\"Data does not appear to be in a Flatbush format.\");\n if (e >> 4 !== Ct)\n throw new Error(`Got v${e >> 4} data when expected v${Ct}.`);\n const [s] = new Uint16Array(t, 2, 1), [r] = new Uint32Array(t, 4, 1);\n return new Dt(r, s, re[e & 15], void 0, t);\n }\n constructor(t, n = 16, e = Float64Array, s = ArrayBuffer, r) {\n if (t === void 0)\n throw new Error(\"Missing required argument: numItems.\");\n if (isNaN(t) || t <= 0)\n throw new Error(`Unexpected numItems value: ${t}.`);\n this.numItems = +t, this.nodeSize = Math.min(Math.max(+n, 2), 65535);\n let o = t, h = o;\n this._levelBounds = [o * 4];\n do\n o = Math.ceil(o / this.nodeSize), h += o, this._levelBounds.push(h * 4);\n while (o !== 1);\n this.ArrayType = e || Float64Array, this.IndexArrayType = h < 16384 ? Uint16Array : Uint32Array;\n const u = re.indexOf(this.ArrayType), l = h * 4 * this.ArrayType.BYTES_PER_ELEMENT;\n if (u < 0)\n throw new Error(`Unexpected typed array class: ${e}.`);\n r && r.byteLength !== void 0 && !r.buffer ? (this.data = r, this._boxes = new this.ArrayType(this.data, 8, h * 4), this._indices = new this.IndexArrayType(this.data, 8 + l, h), this._pos = h * 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 s(8 + l + h * this.IndexArrayType.BYTES_PER_ELEMENT), this._boxes = new this.ArrayType(this.data, 8, h * 4), this._indices = new this.IndexArrayType(this.data, 8 + l, h), 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, (Ct << 4) + u]), new Uint16Array(this.data, 2, 1)[0] = n, new Uint32Array(this.data, 4, 1)[0] = t), this._queue = new Gn();\n }\n add(t, n, e, s) {\n const r = this._pos >> 2, o = this._boxes;\n return this._indices[r] = r, o[this._pos++] = t, o[this._pos++] = n, o[this._pos++] = e, o[this._pos++] = s, t < this.minX && (this.minX = t), n < this.minY && (this.minY = n), e > this.maxX && (this.maxX = e), s > this.maxY && (this.maxY = s), r;\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 t = this._boxes;\n if (this.numItems <= this.nodeSize) {\n t[this._pos++] = this.minX, t[this._pos++] = this.minY, t[this._pos++] = this.maxX, t[this._pos++] = this.maxY;\n return;\n }\n const n = this.maxX - this.minX || 1, e = this.maxY - this.minY || 1, s = new Uint32Array(this.numItems), r = (1 << 16) - 1;\n for (let o = 0, h = 0; o < this.numItems; o++) {\n const u = t[h++], l = t[h++], c = t[h++], a = t[h++], g = Math.floor(r * ((u + c) / 2 - this.minX) / n), w = Math.floor(r * ((l + a) / 2 - this.minY) / e);\n s[o] = Jn(g, w);\n }\n At(s, t, this._indices, 0, this.numItems - 1, this.nodeSize);\n for (let o = 0, h = 0; o < this._levelBounds.length - 1; o++) {\n const u = this._levelBounds[o];\n for (; h < u; ) {\n const l = h;\n let c = t[h++], a = t[h++], g = t[h++], w = t[h++];\n for (let m = 1; m < this.nodeSize && h < u; m++)\n c = Math.min(c, t[h++]), a = Math.min(a, t[h++]), g = Math.max(g, t[h++]), w = Math.max(w, t[h++]);\n this._indices[this._pos >> 2] = l, t[this._pos++] = c, t[this._pos++] = a, t[this._pos++] = g, t[this._pos++] = w;\n }\n }\n }\n search(t, n, e, s, r) {\n if (this._pos !== this._boxes.length)\n throw new Error(\"Data not yet indexed - call index.finish().\");\n let o = this._boxes.length - 4;\n const h = [], u = [];\n for (; o !== void 0; ) {\n const l = Math.min(o + this.nodeSize * 4, he(o, this._levelBounds));\n for (let c = o; c < l; c += 4) {\n if (e < this._boxes[c] || s < this._boxes[c + 1] || t > this._boxes[c + 2] || n > this._boxes[c + 3])\n continue;\n const a = this._indices[c >> 2] | 0;\n o >= this.numItems * 4 ? h.push(a) : (r === void 0 || r(a)) && u.push(a);\n }\n o = h.pop();\n }\n return u;\n }\n neighbors(t, n, e = 1 / 0, s = 1 / 0, r) {\n if (this._pos !== this._boxes.length)\n throw new Error(\"Data not yet indexed - call index.finish().\");\n let o = this._boxes.length - 4;\n const h = this._queue, u = [], l = s * s;\n for (; o !== void 0; ) {\n const c = Math.min(o + this.nodeSize * 4, he(o, this._levelBounds));\n for (let a = o; a < c; a += 4) {\n const g = this._indices[a >> 2] | 0, w = oe(t, this._boxes[a], this._boxes[a + 2]), m = oe(n, this._boxes[a + 1], this._boxes[a + 3]), d = w * w + m * m;\n o >= this.numItems * 4 ? h.push(g << 1, d) : (r === void 0 || r(g)) && h.push((g << 1) + 1, d);\n }\n for (; h.length && h.peek() & 1; )\n if (h.peekValue() > l || (u.push(h.pop() >> 1), u.length === e))\n return h.clear(), u;\n o = h.pop() >> 1;\n }\n return h.clear(), u;\n }\n}\nfunction oe(i, t, n) {\n return i < t ? t - i : i <= n ? 0 : i - n;\n}\nfunction he(i, t) {\n let n = 0, e = t.length - 1;\n for (; n < e; ) {\n const s = n + e >> 1;\n t[s] > i ? e = s : n = s + 1;\n }\n return t[n];\n}\nfunction At(i, t, n, e, s, r) {\n if (Math.floor(e / r) >= Math.floor(s / r))\n return;\n const o = i[e + s >> 1];\n let h = e - 1, u = s + 1;\n for (; ; ) {\n do\n h++;\n while (i[h] < o);\n do\n u--;\n while (i[u] > o);\n if (h >= u)\n break;\n Wn(i, t, n, h, u);\n }\n At(i, t, n, e, u, r), At(i, t, n, u + 1, s, r);\n}\nfunction Wn(i, t, n, e, s) {\n const r = i[e];\n i[e] = i[s], i[s] = r;\n const o = 4 * e, h = 4 * s, u = t[o], l = t[o + 1], c = t[o + 2], a = t[o + 3];\n t[o] = t[h], t[o + 1] = t[h + 1], t[o + 2] = t[h + 2], t[o + 3] = t[h + 3], t[h] = u, t[h + 1] = l, t[h + 2] = c, t[h + 3] = a;\n const g = n[e];\n n[e] = n[s], n[s] = g;\n}\nfunction Jn(i, t) {\n let n = i ^ t, e = 65535 ^ n, s = 65535 ^ (i | t), r = i & (t ^ 65535), o = n | e >> 1, h = n >> 1 ^ n, u = s >> 1 ^ e & r >> 1 ^ s, l = n & s >> 1 ^ r >> 1 ^ r;\n n = o, e = h, s = u, r = l, o = n & n >> 2 ^ e & e >> 2, h = n & e >> 2 ^ e & (n ^ e) >> 2, u ^= n & s >> 2 ^ e & r >> 2, l ^= e & s >> 2 ^ (n ^ e) & r >> 2, n = o, e = h, s = u, r = l, o = n & n >> 4 ^ e & e >> 4, h = n & e >> 4 ^ e & (n ^ e) >> 4, u ^= n & s >> 4 ^ e & r >> 4, l ^= e & s >> 4 ^ (n ^ e) & r >> 4, n = o, e = h, s = u, r = l, u ^= n & s >> 8 ^ e & r >> 8, l ^= e & s >> 8 ^ (n ^ e) & r >> 8, n = u ^ u >> 1, e = l ^ l >> 1;\n let c = i ^ t, a = e | 65535 ^ (c | n);\n return c = (c | c << 8) & 16711935, c = (c | c << 4) & 252645135, c = (c | c << 2) & 858993459, c = (c | c << 1) & 1431655765, a = (a | a << 8) & 16711935, a = (a | a << 4) & 252645135, a = (a | a << 2) & 858993459, a = (a | a << 1) & 1431655765, (a << 1 | c) >>> 0;\n}\nfunction ke(i, t = 1e-7) {\n if (i.length === 0)\n return [];\n if (i.length === 1)\n return [i];\n const n = new Dt(i.length);\n i.forEach((r) => {\n const [o, h] = r.firstPoint;\n n.add(o - t, h - t, o + t, h + t);\n }), n.finish();\n const e = [], s = /* @__PURE__ */ new Set();\n return i.forEach((r, o) => {\n if (s.has(o))\n return;\n const h = [r];\n let u = o;\n s.add(o);\n let l = i.length;\n for (; ; ) {\n if (l-- < 0)\n throw new Error(\"Infinite loop detected\");\n const c = h[h.length - 1].lastPoint, [a, g] = c, w = n.search(\n a - t,\n g - t,\n a + t,\n g + t\n ), m = (p) => Math.abs((u - p) % i.length), d = w.filter((p) => !s.has(p)).map((p) => [\n i[p],\n p,\n m(p)\n ]).sort(([, , p], [, , y]) => m(p) - m(y));\n if (d.length === 0) {\n e.push(h);\n break;\n }\n const [P, f] = d[0];\n h.push(P), s.add(f), u = f;\n }\n }), e;\n}\nclass U extends _t {\n constructor(t, n = [], { ignoreChecks: e = !1 } = {}) {\n super(), e || Kn(t, n), this.contour = t, this.holes = n;\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 U(\n this.contour.clone(),\n this.holes.map((t) => t.clone())\n );\n }\n transform(t) {\n return new U(\n this.contour.transform(t),\n this.holes.map((n) => n.transform(t))\n );\n }\n contains(t) {\n return this.contour.contains(t) && !this.holes.some((n) => n.contains(t));\n }\n intersects(t) {\n return this.allLoops.some(\n (n) => t.allLoops.some((e) => n.intersects(e))\n );\n }\n overlappingStrands(t) {\n const n = t instanceof U ? t.allLoops : [t], e = this.allLoops.flatMap((s) => n.flatMap((r) => s.overlappingSegments(r)));\n return ke(e).map((s) => new G(s));\n }\n}\nfunction Kn(i, t = []) {\n if (!i)\n throw new Error(\"Figure must have a contour\");\n for (const [n, e] of Bt([i, ...t]))\n if (n.intersects(e))\n throw new Error(\"Loops in a figure must not intersect\");\n if (t.some(\n (n) => !i.contains(n.firstPoint) && !i.onStroke(n.firstPoint)\n ))\n throw new Error(\"Holes must be inside the contour\");\n for (const [n, e] of Bt(t))\n if (n.contains(e.firstPoint))\n throw console.error(ie(n), ie(e)), new Error(\"Holes must not be inside other holes\");\n}\nconst Qn = (i) => {\n const t = i.map((s, r) => i.slice(r + 1).map((o, h) => [h + r + 1, o]).filter(([, o]) => s.boundingBox.overlaps(o.boundingBox)).map(([o]) => o)), n = [], e = Array(t.length);\n return t.forEach((s, r) => {\n let o = e[r];\n o || (o = [], n.push(o)), o.push(i[r]), s.length && s.forEach((h) => {\n e[h] = o;\n });\n }), n;\n}, Ie = (i) => i.map((t, n) => {\n const s = t.segments[0].midPoint, r = i.filter((o, h) => n === h ? !1 : o.contains(s));\n return {\n loop: t,\n isIn: r\n };\n}), Zn = (i, t) => i.flatMap(({ loop: n }) => Ut(\n t.filter(\n ({ loop: e, isIn: s }) => e === n || s.indexOf(n) !== -1\n )\n)), Hn = (i, t) => {\n const n = t.filter(({ isIn: s }) => s.length <= 1), e = Ut(\n Ie(i.map(({ loop: s }) => s))\n );\n return [n, ...e];\n}, Ut = (i) => {\n if (!i.length)\n return [];\n const t = i.filter(({ isIn: e }) => !e.length), n = i.filter(({ isIn: e }) => e.length > 1);\n return t.length === 1 && n.length === 0 ? [i] : t.length > 1 ? Zn(t, i) : Hn(n, i);\n};\nfunction gt(i) {\n return Qn(i).map(Ie).flatMap(Ut).map((n) => {\n if (n.length === 1)\n return new U(n[0].loop);\n n.sort((r, o) => r.isIn.length - o.isIn.length);\n const [e, ...s] = n.map(({ loop: r }) => r);\n return new U(e, s);\n });\n}\nfunction ts(i, t) {\n const n = [];\n for (const e of i)\n for (const s of t)\n n.push([e, s]);\n return n;\n}\nfunction* le(i, t, n) {\n const e = (o) => t.some((h) => E(h, o.lastPoint)), s = (o) => n.some((h) => o.isSame(h));\n let r = [];\n for (const o of i)\n e(o) ? (r.push(o), yield new G(r, { ignoreChecks: !0 }), r = []) : s(o) ? (r.length && (yield new G(r, { ignoreChecks: !0 }), r = []), yield new G([o], { ignoreChecks: !0 })) : r.push(o);\n r.length && (yield new G(r, { ignoreChecks: !0 }));\n}\nconst ue = (i, t) => {\n const n = i.findIndex((r) => E(t, r.firstPoint)), e = i.slice(0, n);\n return i.slice(n).concat(e);\n}, ae = (i, t) => {\n let n = i;\n const e = (h) => E(h.firstPoint, t.firstPoint) && E(h.lastPoint, t.lastPoint);\n let s = i.findIndex(e);\n if (s === -1) {\n const h = i.map((u) => u.reverse());\n if (h.reverse(), s = h.findIndex(e), s === -1)\n throw console.error(\n h.map((u) => u.repr),\n t.repr\n ), new Error(\"Failed to rotate to segment start\");\n n = h;\n }\n const r = n.slice(0, s);\n return n.slice(s).concat(r);\n};\nfunction es(i, t, n) {\n return i.filter((e) => {\n const s = t.filter((h) => E(h.firstPoint, e) || E(h.lastPoint, e));\n if (s.length % 2)\n throw new Error(\"Bug in the intersection algo on non crossing point\");\n const r = s.map((h) => n.contains(h.midPoint));\n return !(r.every((h) => h) || !r.some((h) => h));\n });\n}\nfunction ns(i, t, n) {\n let e = [];\n const s = [], r = new Array(i.segments.length).fill(0).map(() => []), o = new Array(t.segments.length).fill(0).map(() => []);\n if (i.segments.forEach((g, w) => {\n t.segments.forEach((m, d) => {\n const { intersections: P, overlaps: f } = It(\n g,\n m,\n n\n );\n e.push(...P), r[w].push(...P), o[d].push(...P), s.push(...f);\n const p = f.flatMap((y) => [\n y.firstPoint,\n y.lastPoint\n ]);\n e.push(...p), r[w].push(...p), o[d].push(...p);\n });\n }), e = ct(e, n), !e.length || e.length === 1)\n return null;\n const h = ([g, w]) => w.length ? g.splitAt(w) : [g];\n let u = nt([i.segments, r]).flatMap(h), l = nt([t.segments, o]).flatMap(h);\n if (e = es(\n e,\n u,\n t\n ), !e.length && !s.length)\n return null;\n if (s.length) {\n const g = s[0];\n u = ae(\n u,\n g\n ), l = ae(\n l,\n g\n );\n } else {\n const g = e[0];\n u = ue(u, g), l = ue(l, g);\n }\n let c = Array.from(\n le(\n u,\n e,\n s\n )\n ), a = Array.from(\n le(\n l,\n e,\n s\n )\n );\n return (!E(\n a[0].lastPoint,\n c[0].lastPoint\n ) || s.length > 0 && a[0].segmentsCount !== 1) && (a = a.map((g) => g.reverse()).reverse(), E(a[0].lastPoint, c[0].lastPoint) || (c = c.map((g) => g.reverse()).reverse())), nt([c, a]).map(([g, w]) => g.segmentsCount === 1 && s.some((m) => g.segments[0].isSame(m)) ? [g, \"same\"] : [g, w]);\n}\nfunction ce(i) {\n let t = i[0];\n for (const n of i.slice(1))\n t = t.extend(n);\n if (!E(t.firstPoint, t.lastPoint))\n throw console.error(\n T(t.firstPoint),\n T(t.lastPoint)\n ), new Error(\"Bug in the intersection algo on non closing strand\");\n return new et(t.segments);\n}\nfunction ss(i, t) {\n const n = nt([\n t.slice(0, -1),\n t.slice(1)\n ]).map(([s, r]) => ce(i.slice(s, r)));\n let e = i.slice(\n t[t.length - 1]\n );\n return t[0] !== 0 && (e = e.concat(i.slice(0, t[0]))), n.push(ce(e)), n;\n}\nfunction is(i) {\n if (!i.length)\n return [];\n const t = i.map((s) => s.firstPoint);\n let n = i.map((s) => s.lastPoint);\n n = n.slice(-1).concat(n.slice(0, -1));\n const e = nt([t, n]).flatMap(\n ([s, r], o) => E(s, r) ? [] : o\n );\n try {\n return ss(i, e);\n } catch {\n return ke(i.flatMap((r) => r.segments)).filter((r) => r.length > 1).filter((r) => E(r[0].firstPoint, r.at(-1).lastPoint)).map((r) => new et(r));\n }\n}\nconst fe = (i, t) => {\n if (i.length === 0)\n return [t];\n const n = i.at(-1);\n return E(n.lastPoint, t.firstPoint) ? i.slice(0, -1).concat([n.extend(t)]) : E(n.lastPoint, t.lastPoint) ? i.slice(0, -1).concat([n.extend(t.reverse())]) : i.concat([t]);\n}, rs = (i, t) => i.length === 0 ? [t] : E(i[0].firstPoint, t.lastPoint) ? [t.extend(i[0])].concat(i.slice(1)) : [t].concat(i);\nfunction Yt(i, t, {\n firstInside: n,\n secondInside: e\n}) {\n const s = ns(i, t);\n if (!s) {\n const u = i.segments[0].midPoint, l = t.contains(u), c = t.segments[0].midPoint, a = i.contains(c);\n return {\n identical: !1,\n firstCurveInSecond: l,\n secondCurveInFirst: a\n };\n }\n if (s.every(([, u]) => u === \"same\"))\n return { identical: !0 };\n let r = null, o = null;\n const h = s.flatMap(([u, l]) => {\n let c = [], a = 0;\n if (l === \"same\")\n return o === 1 ? (o = 1, u) : o === 2 || o === 0 ? (o = null, []) : o === null ? (r ? r = r.extend(u) : r = u, []) : (console.error(\"weird situation\"), []);\n const g = u.segments[0].midPoint, w = t.contains(g);\n (n === \"keep\" && w || n === \"remove\" && !w) && (a += 1, c = fe(c, u));\n const m = l.segments[0].midPoint, d = i.contains(m);\n if (e === \"keep\" && d || e === \"remove\" && !d) {\n const P = l;\n a += 1, a === 2 && c.length ? (c = fe(c, P), r = null) : c = [P];\n }\n return o === null && a === 1 && r && (c = rs(c, r)), a === 1 && (o = a, r = null), c.length ? c : (r = null, []);\n });\n return is(h);\n}\nconst os = (i, t) => {\n const n = Yt(i, t, {\n firstInside: \"remove\",\n secondInside: \"remove\"\n });\n return Array.isArray(n) ? n : n.identical ? [i] : n.firstCurveInSecond ? [t] : n.secondCurveInFirst ? [i] : [i, t];\n}, xt = (i, t) => {\n const n = Yt(i, t, {\n firstInside: \"remove\",\n secondInside: \"keep\"\n });\n return Array.isArray(n) ? n : n.identical ? [] : n.firstCurveInSecond ? [] : n.secondCurveInFirst ? [i, t] : [i];\n}, Xt = (i, t) => {\n const n = Yt(i, t, {\n firstInside: \"keep\",\n secondInside: \"keep\"\n });\n return Array.isArray(n) ? n : n.identical ? [i] : n.firstCurveInSecond ? [i] : n.secondCurveInFirst ? [t] : [];\n};\nfunction hs(i) {\n const t = /* @__PURE__ */ new Map(), n = [];\n return i.forEach((e, s) => {\n let r;\n t.has(s) ? r = t.get(s) : (r = { current: [e], fusedWith: /* @__PURE__ */ new Set([s]) }, n.push(r)), i.slice(s + 1).forEach((o, h) => {\n const u = r.current, l = s + h + 1;\n if (r.fusedWith.has(l))\n return;\n let c = [o], a = !1;\n if (t.has(l) && (c = t.get(l).current, a = !0), !u.some(\n (m) => c.some((d) => m.intersects(d))\n ))\n return;\n let w;\n u.length > 1 || c.length > 1 ? w = pt(u, c) : w = xe(u[0], c[0]), r.fusedWith.add(l), r.current = w, a || t.set(l, r);\n });\n }), n.flatMap(({ current: e }) => e);\n}\nfunction xe(i, t) {\n const n = os(i.contour, t.contour), e = t.holes.flatMap((o) => xt(o, i.contour)), s = i.holes.flatMap((o) => xt(o, t.contour)), r = ts(i.holes, t.holes).flatMap(\n ([o, h]) => Xt(o, h)\n );\n return gt([\n ...n,\n ...e,\n ...s,\n ...r\n ]);\n}\nfunction Rt(i, t) {\n if (i.isFull && t.isFull)\n return gt(xt(i.contour, t.contour));\n if (i.isFull) {\n const e = xt(i.contour, t.contour), s = t.holes.flatMap(\n (r) => Xt(r, i.contour)\n );\n return gt([...e, ...s]);\n } else if (t.isFull && !i.contour.intersects(t.contour))\n if (i.contour.contains(t.contour.firstPoint)) {\n const e = pt(\n i.holes.map((s) => new U(s)),\n [t]\n );\n return gt([\n i.contour,\n ...e.flatMap((s) => s.allLoops)\n ]);\n } else\n return [i];\n let n = Rt(new U(i.contour), t);\n return i.holes.forEach((e) => {\n n = n.flatMap((s) => Rt(s, new U(e)));\n }), n;\n}\nfunction ls(i, t) {\n const n = Xt(i.contour, t.contour);\n if (!n.length)\n return [];\n let e = gt(n);\n return e = wt(\n e,\n i.holes.map((s) => new U(s))\n ), wt(\n e,\n t.holes.map((s) => new U(s))\n );\n}\nfunction pt(i, t) {\n if (!i.length)\n return t;\n if (!t.length)\n return i;\n if (i.length === 1 && t.length > 1 || t.length === 1 && i.length > 1)\n return hs([...i, ...t]);\n if (i.length > 1 && t.length > 1) {\n let n = pt([i[0]], t);\n return i.slice(1).forEach((e) => {\n n = pt([e], n);\n }), n;\n }\n return i.length === 1 && t.length === 1 ? xe(i[0], t[0]) : [];\n}\nfunction wt(i, t) {\n if (!i.length)\n return [];\n if (!t.length)\n return i;\n if (i.length === 1 && t.length === 1)\n return Rt(i[0], t[0]);\n if (i.length > 1)\n return i.flatMap((e) => wt([e], t));\n let n = Rt(i[0], t[0]);\n return t.slice(1).forEach((e) => {\n n = wt(n, [e]);\n }), n;\n}\nfunction Nt(i, t) {\n return !i.length || !t.length ? [] : i.length === 1 && t.length === 1 ? ls(i[0], t[0]) : i.length > 1 ? i.flatMap((n) => Nt([n], t)) : t.flatMap((n) => Nt(i, [n]));\n}\nclass tt extends _t {\n constructor(t = [], { ignoreChecks: n = !1 } = {}) {\n super(), this._boundingBox = null, n || us(t), this.figures = t;\n }\n get isEmpty() {\n return this.figures.length === 0;\n }\n get boundingBox() {\n if (this.isEmpty)\n return new it();\n if (this._boundingBox === null) {\n let t = this.figures[0].boundingBox;\n for (const n of this.figures.slice(1))\n t = t.merge(n.boundingBox);\n this._boundingBox = t;\n }\n return this._boundingBox;\n }\n clone() {\n return new tt(this.figures.map((t) => t.clone()));\n }\n transform(t) {\n return new tt(this.figures.map((n) => n.transform(t)));\n }\n contains(t) {\n return this.figures.some((n) => n.contains(t));\n }\n intersects(t) {\n return this.figures.some(\n (n) => t.figures.some((e) => n.intersects(e))\n );\n }\n overlappingStrands(t) {\n return this.figures.flatMap((n) => t instanceof tt ? t.figures.flatMap(\n (e) => n.overlappingStrands(e)\n ) : n.overlappingStrands(t));\n }\n fuse(t) {\n return new tt(pt(this.figures, t.figures));\n }\n cut(t) {\n return new tt(wt(this.figures, t.figures));\n }\n intersect(t) {\n return new tt(Nt(this.figures, t.figures));\n }\n}\nfunction us(i) {\n for (const [t, n] of Bt(i))\n if (t.intersects(n))\n throw new Error(\"Diagram figures must not intersect\");\n}\nexport {\n I as A,\n it as B,\n gs as C,\n tt as D,\n C as E,\n U as F,\n bt as G,\n as as H,\n fs as I,\n Xe as J,\n ft as K,\n et as L,\n Lt as M,\n Ue as R,\n G as S,\n V as T,\n pt as a,\n kt as b,\n wt as c,\n q as d,\n A as e,\n It as f,\n O as g,\n D as h,\n Nt as i,\n me as j,\n Ye as k,\n Ft as l,\n mt as m,\n W as n,\n R as o,\n Qe as p,\n ke as q,\n ct as r,\n le as s,\n E as t,\n cs as u,\n at as v,\n ie as w,\n _t as x,\n J as y,\n nt as z\n};\n//# sourceMappingURL=Diagram-d848c815.js.map\n","import { o as l, A as E, g as h, h as c, y as f, u as x, v as M, C as I, G as N, t as w, H as Y, d as G, I as O, J as V, e as P, R as W, T as B, S as H, D as J, F as K, L as $, K as A, M as S } from \"./Diagram-d848c815.js\";\nclass m {\n constructor(t, n) {\n this.firstPoint = t, this.lastPoint = n;\n }\n}\nfunction T(i, t) {\n if (i instanceof l)\n return j(i, t);\n if (i instanceof E)\n return q(i, t);\n throw new Error(\"Not implemented\");\n}\nfunction j(i, t) {\n const { firstPoint: n, lastPoint: e } = i, r = i.normalVector;\n return new l(\n h(n, c(r, t)),\n h(e, c(r, t))\n );\n}\nfunction q(i, t) {\n const n = h(\n i.firstPoint,\n c(f(i.tangentAtFirstPoint), t)\n ), e = h(\n i.lastPoint,\n c(f(i.tangentAtLastPoint), t)\n ), r = t * (i.clockwise ? 1 : -1);\n return i.radius + r < i.precision ? new m(n, e) : new E(n, e, i.center, i.clockwise);\n}\nfunction b(i, t, n) {\n const e = M(\n i.tangentAtLastPoint,\n t.tangentAtFirstPoint\n );\n if (Math.abs(e) < 1e-10)\n return null;\n const r = e > 0 ? 1 : -1, s = Math.abs(n) * r, o = T(i, s), a = T(t, s);\n if (o instanceof m || a instanceof m)\n return null;\n let u;\n try {\n u = I(o, a, 1e-9).at(-1);\n } catch {\n return null;\n }\n if (!u)\n return null;\n const g = u, d = (p, y) => {\n const F = y.tangentAt(g), R = N(F), k = h(g, c(R, s));\n return p.splitAt(k);\n }, [D] = d(i, o), [, _] = d(t, a);\n return { first: D, second: _, center: g };\n}\nfunction v(i, t, n) {\n const e = b(i, t, n);\n if (!e)\n return console.warn(\n \"Cannot fillet between segments\",\n i.repr,\n t.repr\n ), [i, t];\n const { first: r, second: s } = e;\n return [\n r,\n x(r.lastPoint, s.firstPoint, r.tangentAtLastPoint),\n s\n ];\n}\nfunction C(i, t, n) {\n const e = b(i, t, n);\n if (!e)\n return console.warn(\n \"Cannot chamfer between segments\",\n i.repr,\n t.repr\n ), [i, t];\n const { first: r, second: s } = e;\n return [r, new l(r.lastPoint, s.firstPoint), s];\n}\nfunction L(i, { ignoreChecks: t = !1 } = {}) {\n return new J([new K(new $([...i], { ignoreChecks: t }))]);\n}\nclass z {\n constructor(t = [0, 0]) {\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 (w(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 n = this.pendingSegments.pop();\n if (!n)\n throw new Error(\"bug in the custom corner algorithm\");\n const e = this._nextCorner.mode === \"chamfer\" ? C : v;\n return this.pendingSegments.push(\n ...e(n, t, this._nextCorner.radius)\n ), this._nextCorner = null, this;\n }\n lineTo(t) {\n const n = new l(this.pointer, t);\n return this.pointer = t, this.saveSegment(n);\n }\n line(t, n) {\n return this.lineTo([this.pointer[0] + t, this.pointer[1] + n]);\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, n]) {\n const e = n * S, r = A(t, e);\n return this.lineTo(r);\n }\n polarLine(t, n) {\n const e = n * S, [r, s] = A(t, e);\n return this.line(r, s);\n }\n tangentLine(t) {\n const n = this.pendingSegments.at(-1);\n if (!n)\n throw new Error(\"You need a previous segment to sketch a tangent line\");\n const [e, r] = n.tangentAtLastPoint;\n return this.line(e * t, r * t);\n }\n threePointsArcTo(t, n) {\n return this.saveSegment(Y(this.pointer, n, t)), this.pointer = t, this;\n }\n threePointsArc(t, n, e, r) {\n const [s, o] = this.pointer;\n return this.threePointsArcTo(\n [s + t, o + n],\n [s + e, o + r]\n );\n }\n sagittaArcTo(t, n) {\n if (!n)\n return this.lineTo(t);\n const e = new l(this.pointer, t), r = f(e.tangentAtFirstPoint), s = h(e.midPoint, c(r, n));\n return this.threePointsArcTo(t, s);\n }\n sagittaArc(t, n, e) {\n return this.sagittaArcTo(\n [t + this.pointer[0], n + this.pointer[1]],\n e\n );\n }\n vSagittaArc(t, n) {\n return this.sagittaArc(0, t, n);\n }\n hSagittaArc(t, n) {\n return this.sagittaArc(t, 0, n);\n }\n bulgeArcTo(t, n) {\n if (!n)\n return this.lineTo(t);\n const e = G(this.pointer, t) / 2, r = -n * e;\n return this.sagittaArcTo(t, r);\n }\n bulgeArc(t, n, e) {\n return this.bulgeArcTo(\n [t + this.pointer[0], n + this.pointer[1]],\n e\n );\n }\n vBulgeArc(t, n) {\n return this.bulgeArc(0, t, n);\n }\n hBulgeArc(t, n) {\n return this.bulgeArc(t, 0, n);\n }\n tangentArcTo(t, n) {\n const e = this.pendingSegments.at(-1);\n if (!e)\n throw new Error(\"You need a previous curve to sketch a tangent arc\");\n return this.saveSegment(\n x(\n this.pointer,\n t,\n n ?? e.tangentAtLastPoint\n )\n ), this.pointer = t, this;\n }\n tangentArc(t, n, e) {\n const [r, s] = this.pointer;\n return this.tangentArcTo([t + r, n + s], e);\n }\n ellipseTo(t, n, e, r, s, o) {\n return this.saveSegment(\n O(this.pointer, t, n, e, r, s, o)\n ), this.pointer = t, this;\n }\n ellipse(t, n, e, r, s, o, a) {\n return this.ellipseTo(\n [t + this.pointer[0], n + this.pointer[1]],\n e,\n r,\n s,\n o,\n a\n );\n }\n halfEllipseTo(t, n) {\n const [e, r] = V(P(t, this.pointer));\n return this.ellipseTo(\n t,\n e / 2,\n Math.abs(n),\n r * W,\n !0,\n n > 0\n );\n }\n halfEllipse(t, n, e) {\n return this.halfEllipseTo(\n [t + this.pointer[0], n + this.pointer[1]],\n e\n );\n }\n customCorner(t, n = \"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: n, radius: t }, this) : this;\n }\n _customCornerLastWithFirst(t, n = \"fillet\") {\n if (!t)\n return;\n const e = this.pendingSegments.pop(), r = this.pendingSegments.shift();\n if (!e || !r)\n throw new Error(\"Not enough curves to close and fillet\");\n const s = n === \"chamfer\" ? C : v;\n this.pendingSegments.push(...s(e, r, t));\n }\n close(t = !1) {\n if (!this.pendingSegments.length)\n throw new Error(\"No segments to close\");\n const n = this.pendingSegments[0], e = this.pendingSegments.at(-1);\n return w(n.firstPoint, e.lastPoint) || this.lineTo(n.firstPoint), this._nextCorner !== null && (this._customCornerLastWithFirst(\n this._nextCorner.radius,\n this._nextCorner.mode\n ), this._nextCorner = null), L(this.pendingSegments, { ignoreChecks: t });\n }\n closeWithMirror(t = !1) {\n if (!this.pendingSegments.length)\n throw new Error(\"No segments to close\");\n const n = this.pendingSegments[0], e = this.pendingSegments.at(-1), r = P(\n e.lastPoint,\n n.firstPoint\n ), s = new B().mirrorLine(\n r,\n n.firstPoint\n ), o = this.pendingSegments.map(\n (a) => a.transform(s).reverse()\n );\n return o.reverse(), L(\n [...this.pendingSegments, ...o],\n { ignoreChecks: t }\n );\n }\n asStrand() {\n return new H([...this.pendingSegments]);\n }\n}\nfunction U(i = [0, 0]) {\n return new z(i);\n}\nexport {\n m as D,\n U as d,\n T as o\n};\n//# sourceMappingURL=draw-a830827a.js.map\n","import { o as ht, D } from \"./draw-a830827a.js\";\nimport { d as fn } from \"./draw-a830827a.js\";\nimport { F as p, L as P, D as h, f as C, r as gt, z as pt, s as dt, a as wt, c as Pt, i as mt, S as y, l as Mt, d as m, b as vt, p as St, n as K, e as $, g as It, h as Lt, j as kt, k as At, m as Q, o as w, A as M, q as j, t as v, u as $t, v as bt, E as O, R as Et } from \"./Diagram-d848c815.js\";\nimport { w as un } from \"./Diagram-d848c815.js\";\nfunction S(t) {\n if (t instanceof p)\n return [t];\n if (t instanceof P)\n return [new p(t)];\n if (t instanceof h)\n return t.figures;\n throw new Error(\"Unknown shape\");\n}\nfunction tt(t, n, e = 1e-9) {\n let s = [];\n const r = [], i = new Array(n.segments.length).fill(0).map(() => []);\n n.segments.forEach((c, f) => {\n t.segments.forEach((a) => {\n const { intersections: u, overlaps: d } = C(\n c,\n a,\n e\n );\n s.push(...u), i[f].push(...u), r.push(...d);\n const g = d.flatMap((l) => [\n l.firstPoint,\n l.lastPoint\n ]);\n s.push(...g), i[f].push(...g);\n });\n }), s = gt(s, e);\n const o = pt([n.segments, i]).flatMap(([c, f]) => f.length ? c.splitAt(f) : [c]);\n return Array.from(\n dt(\n o,\n s,\n r\n )\n );\n}\nfunction G(t, n, e = !1) {\n return tt(n, t).filter((r) => {\n const i = r.segments[0].midPoint;\n return n.onStroke(i) ? !e : !n.contains(i);\n });\n}\nfunction T(t, n, e = !1) {\n return tt(n, t).filter((r) => {\n const i = r.segments[0].midPoint;\n return n.onStroke(i) ? !e : n.contains(i);\n });\n}\nfunction z(t, n, e = !1) {\n const s = G(\n t,\n n.contour,\n e\n ), r = n.holes.flatMap(\n (i) => T(t, i, e)\n );\n return [...s, ...r];\n}\nfunction q(t, n, e = !1) {\n let s = T(\n t,\n n.contour,\n e\n );\n return n.holes.forEach((r) => {\n s = s.flatMap(\n (i) => G(i, r, e)\n );\n }), s;\n}\nfunction yt(t, n) {\n return new h(\n wt(S(t), S(n))\n );\n}\nfunction b(t) {\n return t.reduce(\n (n, e) => yt(n, e),\n new h()\n );\n}\nfunction nt(t, n) {\n return new h(\n Pt(S(t), S(n))\n );\n}\nfunction Kt(t, n) {\n return new h(\n mt(S(t), S(n))\n );\n}\nfunction Qt(t, n, e = !0) {\n if (n instanceof P)\n return G(t, n, e);\n if (n instanceof p)\n return z(t, n, e);\n let s = [new y([...t.segments])];\n return n.figures.forEach((r) => {\n s = s.flatMap((i) => z(i, r, e));\n }), s;\n}\nfunction jt(t, n, e = !1) {\n if (n instanceof P)\n return T(t, n, e);\n if (n instanceof p)\n return q(t, n, e);\n let s = [new y([...t.segments])];\n return n.figures.forEach((r) => {\n s = s.flatMap((i) => q(i, r, e));\n }), s;\n}\nfunction N(t) {\n return t < 0 ? \"before\" : t > 1 ? \"after\" : \"between\";\n}\nconst _ = (t, n, e) => {\n if (e === \"before\")\n return t.distanceFrom(n.firstPoint);\n if (e === \"after\")\n return t.distanceFrom(n.lastPoint);\n throw new Error(\"Invalid position\");\n};\nfunction Ft(t, n) {\n const e = Mt(t, n);\n if (e === \"parallel\")\n return Math.min(\n t.distanceFrom(n.firstPoint),\n t.distanceFrom(n.lastPoint)\n );\n const { intersectionParam1: s, intersectionParam2: r } = e, i = N(s), o = N(r);\n if (i === \"between\" && o === \"between\")\n return 0;\n if (i === \"between\" && o !== \"between\")\n return _(t, n, o);\n if (o === \"between\" && i !== \"between\")\n return _(n, t, i);\n if (i === \"before\" && o === \"before\")\n return m(t.firstPoint, n.firstPoint);\n if (i === \"after\" && o === \"after\")\n return m(t.lastPoint, n.lastPoint);\n if (i === \"before\" && o === \"after\")\n return m(t.firstPoint, n.lastPoint);\n if (i === \"after\" && o === \"before\")\n return m(t.lastPoint, n.firstPoint);\n throw new Error(\"Invalid position\");\n}\nfunction J(t, n) {\n if (vt(t, n).length > 0)\n return 0;\n const e = St(t, n.center);\n if (t.isOnSegment(e)) {\n const s = m(e, n.center);\n if (Math.abs(s - n.radius) < t.precision && n.isOnSegment(e))\n return 0;\n if (s - n.radius > t.precision) {\n const r = K(\n $(e, n.center)\n ), i = It(\n n.center,\n Lt(r, n.radius)\n );\n if (n.isOnSegment(i))\n return m(i, e);\n }\n }\n return Math.min(\n n.distanceFrom(t.firstPoint),\n n.distanceFrom(t.lastPoint),\n t.distanceFrom(n.firstPoint),\n t.distanceFrom(n.lastPoint)\n );\n}\nconst Dt = (t, n) => {\n const e = t.angleToParam(n.firstAngle);\n if (t.isValidParameter(e))\n return !0;\n const s = t.angleToParam(n.lastAngle);\n return !!t.isValidParameter(s);\n};\nfunction xt(t, n) {\n if (kt(t, n, !0).length > 0)\n return 0;\n const e = m(t.center, n.center);\n if (e < t.precision && Dt(t, n))\n return Math.abs(t.radius - n.radius);\n const s = K($(n.center, t.center)), r = e - Math.abs(t.radius - n.radius) < t.precision;\n let i = At(s);\n r && n.radius > t.radius && (i += Math.PI);\n const o = r ? i : i + Math.PI, c = t.angleToParam(i), f = n.angleToParam(o);\n return t.isValidParameter(c) && n.isValidParameter(f) ? m(t.paramPoint(c), n.paramPoint(f)) : Math.min(\n t.distanceFrom(n.firstPoint),\n t.distanceFrom(n.lastPoint),\n n.distanceFrom(t.firstPoint),\n n.distanceFrom(t.lastPoint)\n );\n}\nfunction Rt(t, n, e) {\n let s = 0, r = t.length - 1;\n for (; s <= r; ) {\n const i = Math.floor((s + r) / 2), o = e(t[i], n);\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 Ct(t, n, e) {\n const s = Rt(t, n, e);\n s < 0 ? t.splice(-(s + 1), 0, n) : t.splice(s, 0, n);\n}\nclass Ot {\n constructor() {\n this.buckets = [];\n }\n addInterval(n) {\n const e = this.buckets[n.rectangle.diagonalBucketIndex];\n e === void 0 ? this.buckets[n.rectangle.diagonalBucketIndex] = [n] : Ct(e, n, (s, r) => s.value - r.value);\n }\n removeInterval(n) {\n const e = this.buckets[n.rectangle.diagonalBucketIndex];\n if (e === void 0)\n throw new Error(\"Interval not found\");\n e.shift();\n }\n getBottomRightHullIntervals() {\n const n = [];\n for (let e = this.buckets.length - 1; e >= 0; e--) {\n const s = this.buckets[e];\n if (!s === void 0)\n continue;\n const r = s[0];\n if (r !== void 0) {\n if (!n.length) {\n n.push(r);\n continue;\n }\n for (; n.length && n[n.length - 1].value >= r.value; )\n n.pop();\n for (; n.length >= 2; ) {\n const i = n[n.length - 1], o = n[n.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 n.pop();\n else\n break;\n }\n n.push(r);\n }\n }\n return n;\n }\n}\nclass Gt {\n constructor(n, e) {\n this.x = n, this.y = e, this.xLength = Math.pow(3, -n), this.yLength = Math.pow(3, -e), this.diagonal = Math.sqrt(\n this.xLength * this.xLength + this.yLength * this.yLength\n ), this.diagonalBucketIndex = n + e, this.index = `${n},${e}`;\n }\n}\nclass Tt {\n constructor(n, e = 1e-8, s = 1e3, r = 1e-6) {\n this.fcn = n, this.endTolerance = e, this.maxIterations = s, this.epsilon = r, this.fcn = n, this.epsilon = r, this.endTolerance = e, this.maxIterations = s, this.rectangles = /* @__PURE__ */ new Map(), this.buckets = new Ot();\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(n) {\n this.buckets.addInterval(n), n.value <= this.fMin && (this.fMin = n.value, this.argMin = n.center, this.tol = n.rectangle.diagonal);\n }\n rect(n, e) {\n const s = `${n},${e}`;\n return this.rectangles.has(s) || this.rectangles.set(s, new Gt(n, e)), this.rectangles.get(s);\n }\n splitInterval(n) {\n let e, s, r;\n const [i, o] = n.center;\n return n.rectangle.x <= n.rectangle.y ? (e = this.rect(n.rectangle.x + 1, n.rectangle.y), s = [i - e.xLength, o], r = [i + e.xLength, o]) : (e = this.rect(n.rectangle.x, n.rectangle.y + 1), s = [i, o - e.yLength], r = [i, o + e.yLength]), [\n new A(s, this.fcn(s), e),\n new A(n.center, n.value, e),\n new A(r, this.fcn(r), e)\n ];\n }\n single_iteration() {\n const n = this.buckets.getBottomRightHullIntervals();\n for (; n.length >= 2; ) {\n const e = n[0], s = n[1], r = (s.value - e.value) / ((s.rectangle.diagonal - e.rectangle.diagonal) / 2), i = e.value - r * s.value / 2;\n if ((this.fMin - i) / Math.abs(this.fMin) < this.epsilon)\n n.shift();\n else\n break;\n }\n n.forEach((e) => {\n this.buckets.removeInterval(e);\n });\n for (const e of n) {\n const [s, r, i] = this.splitInterval(e);\n this.registerInterval(s), this.registerInterval(r), this.registerInterval(i);\n }\n }\n run() {\n let n = 0;\n for (; this.tol > this.endTolerance / 2 && (this.single_iteration(), n++, !(n > this.maxIterations)); )\n ;\n return {\n fMin: this.fMin,\n argMin: this.argMin,\n tol: this.tol,\n iterations: n\n };\n }\n}\nclass A {\n constructor(n, e, s) {\n this.center = n, this.value = e, this.rectangle = s;\n }\n}\nfunction Vt(t, n = 1e-8, e = 1e3, s = 1e-6) {\n return new Tt(\n t,\n n,\n e,\n s\n ).run();\n}\nfunction Ut(t, n, e = 1e-9) {\n const s = Vt((r) => {\n const i = t.paramPoint(r[0]), o = n.paramPoint(r[1]);\n return Q(i, o);\n }, e);\n return Math.sqrt(s.fMin);\n}\nfunction Bt(t, n) {\n return t instanceof w && n instanceof w ? Ft(t, n) : t instanceof w && n instanceof M ? J(t, n) : t instanceof M && n instanceof w ? J(n, t) : t instanceof M && n instanceof M ? xt(t, n) : Ut(t, n);\n}\nconst V = 1e-8;\nfunction x(t, n, e = !0) {\n const s = t.map((a) => ({\n offset: ht(a, n),\n original: a\n })), r = [];\n let i = e ? null : s.at(-1), o = e ? s.at(-1) : null;\n if (r.length === 1)\n return r;\n const c = (a) => {\n i ? a.offset instanceof D ? v(a.offset.firstPoint, a.offset.lastPoint) || r.push(\n new w(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, d = a.offset.firstPoint;\n if (v(u, d)) {\n c(o), o = a;\n continue;\n }\n let g = [];\n if (!(o.offset instanceof D) && !(a.offset instanceof D)) {\n const { intersections: I, overlaps: F } = C(\n o.offset,\n a.offset,\n V / 100\n );\n g = [\n ...I,\n ...F.flatMap((L) => [L.firstPoint, L.lastPoint])\n ];\n }\n if (g.length > 0) {\n let I = g[0];\n if (g.length > 1) {\n const lt = o == null ? void 0 : o.original.lastPoint, B = g.map(\n (ut) => Q(ut, lt)\n );\n I = g[B.indexOf(Math.min(...B))];\n }\n const F = o.offset.splitAt([\n I\n ])[0], L = a.offset.splitAt([I]).at(-1);\n if (!L)\n throw new Error(\"Bug in the splitting algo in offset\");\n c({\n offset: F,\n original: o.original\n }), o = { offset: L, original: a.original };\n continue;\n }\n const l = o.original.lastPoint, k = bt(\n $(d, l),\n $(u, l)\n ) > 0, ft = new M(u, d, l, k);\n c(o), r.push(ft), o = a;\n }\n return o && c(o), r;\n}\nfunction et(t) {\n const n = /* @__PURE__ */ new Map(), e = (s, r) => {\n const i = n.get(s) || [];\n n.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 } = C(s, i, V), a = [\n ...c,\n ...f.flatMap((u) => [u.firstPoint, u.lastPoint])\n ].filter((u) => {\n const d = v(u, s.firstPoint) || v(u, s.lastPoint), g = v(u, i.firstPoint) || v(u, i.lastPoint);\n return !(d && g);\n });\n a.length && (e(r, a), e(o + r + 1, a));\n });\n }), n;\n}\nfunction st(t, n) {\n return n.flatMap((e, s) => {\n if (!t.has(s))\n return e;\n const r = t.get(s);\n return r ? e.splitAt(r) : e;\n });\n}\nfunction it(t, n, e) {\n return t.filter((s) => !n.segments.some((i) => Bt(i, s) < Math.abs(e) - V));\n}\nfunction E(t, n) {\n const e = t.clockwise ? n : -n, s = x(t.segments, e);\n if (s.length < 2)\n return new h();\n const r = et(s);\n if (!r.size) {\n const a = new P(s);\n return new h([new p(a)]);\n }\n const i = st(\n r,\n s\n ), o = it(i, t, n);\n if (!o.length)\n return new h();\n const f = j(o).filter((a) => a.length > 1).filter((a) => v(a[0].firstPoint, a.at(-1).lastPoint)).map((a) => new P(a));\n return f.length ? new h(f.map((a) => new p(a))) : new h();\n}\nfunction zt(t, n, e = \"round\") {\n const s = n / 2, r = x(t.segments, s, !1), i = x(t.segments, -s, !1).map(\n (l) => l.reverse()\n );\n i.reverse();\n const o = (l, k) => e === \"round\" ? $t(\n l.lastPoint,\n k.firstPoint,\n l.tangentAtLastPoint\n ) : new w(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 = et(c);\n if (!f.size) {\n const l = new P(c);\n return new h([new p(l)]);\n }\n const a = st(\n f,\n c\n ), u = it(a, t, s);\n if (!u.length)\n return new h();\n const g = j(u).filter((l) => l.length > 1).filter((l) => v(l[0].firstPoint, l.at(-1).lastPoint)).map((l) => new P(l));\n return g.length ? new h(g.map((l) => new p(l))) : new h();\n}\nfunction qt(t, n) {\n const e = t.map((s) => {\n const r = b(\n s.holes.map((i) => E(i, n))\n );\n return nt(E(s.contour, n), r);\n });\n return b(e);\n}\nfunction Nt(t, n) {\n const e = Math.abs(n / 2), s = t.map(\n (r) => b(\n r.allLoops.map((i) => nt(E(i, e), E(i, -e)))\n )\n );\n return b(s);\n}\nfunction tn(t, n) {\n return qt(S(t), n);\n}\nfunction nn(t, n, { endCap: e = \"round\" } = {}) {\n return t instanceof y ? zt(t, n, e) : Nt(S(t), n);\n}\nfunction U(t) {\n if (t instanceof w)\n return `L ${t.lastPoint.join(\" \")}`;\n if (t instanceof M)\n return `A ${t.radius} ${t.radius} 0 ${t.angularLength > Math.PI ? \"1\" : \"0\"} ${t.clockwise ? \"0\" : \"1\"} ${t.lastPoint.join(\" \")}`;\n if (t instanceof O)\n return `A ${t.majorRadius} ${t.minorRadius} ${t.tiltAngle * Et} ${t.deltaAngle > Math.PI ? \"1\" : \"0\"} ${t.clockwise ? \"0\" : \"1\"} ${t.lastPoint.join(\" \")}`;\n throw new Error(\"Unknown segment type\");\n}\nfunction rt(t) {\n const n = `M ${t.firstPoint.join(\" \")}`, e = t.segments.map(U).join(\" \");\n return `${n} ${e} Z`;\n}\nfunction ot(t) {\n return `<path d=\"${t.allLoops.map(rt).join(\" \")}\" />`;\n}\nfunction _t(t) {\n return `<g>\n ${t.figures.map(ot).join(`\n`)}\n</g>`;\n}\nfunction Jt(t) {\n const n = `M ${t.firstPoint.join(\" \")}`, e = t.segments.map(U).join(\" \");\n return `${n} ${e}`;\n}\nfunction Ht(t, n = 1) {\n const e = t.xMin - n, s = t.yMin - n;\n return `${e} ${s} ${t.width + 2 * n} ${t.height + 2 * n}`;\n}\nfunction H(t, n, e = 1, s) {\n const r = Ht(n, e), i = s ? `width=\"${n.width + 2 * e}${s}\" height=\"${n.height + 2 * e}${s}\"` : \"\";\n return `<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"${r}\" fill=\"none\" stroke=\"black\" stroke-width=\"0.2%\" vector-effect=\"non-scaling-stroke\" ${i}>\n ${t}\n</svg>`;\n}\nfunction W(t) {\n if (t instanceof h)\n return _t(t);\n if (t instanceof p)\n return ot(t);\n if (t instanceof P)\n return `<path d=\"${rt(t)}\" />`;\n if (t instanceof y)\n return `<path d=\"${Jt(t)}\" />`;\n if (t instanceof M || t instanceof w || t instanceof O)\n return `<path d=\"${`M ${t.firstPoint.join(\" \")}`} ${U(\n t\n )}\" />`;\n throw new Error(\"Unknown shape type\");\n}\nconst X = (t) => \"shape\" in t ? t.shape : t, Y = (t, n) => {\n if (!(\"shape\" in t))\n return n;\n const { color: e } = t;\n return e ? `<g stroke=\"${e}\">${n}</g>` : n;\n};\nfunction en(t, {\n margin: n = 1,\n unit: e = null\n} = {}) {\n if (Array.isArray(t)) {\n const r = t.map((c) => X(c).mirror()), i = r.map((c, f) => Y(t[f], W(c))).join(`\n`), o = r.slice(1).reduce((c, f) => c.merge(f.boundingBox), r[0].boundingBox);\n return H(i, o, n, e);\n }\n const s = X(t).mirror();\n return H(\n Y(t, W(s)),\n s.boundingBox,\n n,\n e\n );\n}\nconst at = (t) => {\n if (t.type === \"LINE\")\n return new w(t.firstPoint, t.lastPoint);\n if (t.type === \"ARC\")\n return new M(\n t.firstPoint,\n t.lastPoint,\n t.center,\n t.clockwise\n );\n if (t.type === \"ELLIPSE_ARC\")\n return new O(\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 throw new Error(\"Unknown segment type\");\n}, R = (t) => {\n const n = t.segments.map(at);\n return new P(n);\n}, ct = (t) => {\n const n = R(t.contour), e = t.holes.map(R);\n return new p(n, e);\n}, Wt = (t) => {\n const n = t.figures.map(ct);\n return new h(n);\n};\nfunction sn(t) {\n if (t.type === \"DIAGRAM\")\n return Wt(t);\n if (t.type === \"FIGURE\")\n return ct(t);\n if (t.type === \"LOOP\")\n return R(t);\n if (t.type === \"LINE\" || t.type === \"ARC\" || t.type === \"ELLIPSE_ARC\")\n return at(t);\n throw new Error(\"Unknown shape type\");\n}\nconst Z = Math.PI / 180, Xt = 180 / Math.PI;\nfunction rn(t, n) {\n const e = Math.cos(n * Z) * t, s = Math.sin(n * Z) * t;\n return [e, s];\n}\nfunction on([t, n]) {\n const e = Math.sqrt(t * t + n * n), s = Math.atan2(n, t) * Xt;\n return [e, s];\n}\nexport {\n Z as DEG2RAD,\n Xt as RAD2DEG,\n on as cartesianToPolar,\n jt as confineStrand,\n nt as cut,\n fn as draw,\n Qt as eraseStrand,\n un as exportJSON,\n en as exportSVG,\n yt as fuse,\n b as fuseAll,\n sn as importJSON,\n Kt as intersect,\n tn as offset,\n nn as outlineStroke,\n rn as polarToCartesian,\n W 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":["yt","i","n","e","it","s","De","Jt","ct","Lt","Ue","T","E","O","A","jt","D","mt","q","at","$t","W","ft","Ye","Xe","Vt","r","J","bt","Ge","ot","o","u","l","a","g","w","m","P","p","We","Je","V","_t$1","zt","_t","R","Ke","nt","st","vt","Ft","ge","Pt","I","h","c","as","cs","Qe","kt","Ze","He","me","C","en","fs","tn","M","b","x","S","_","F","qt","nn","z","sn","rn","Kt","Mt","pe","on","we","hn","ln","Qt","un","Y","X","lt","ut","an","cn","Zt","Et","Tt","ht","fn","gn","mn","pn","wn","dn","yn","Pn","Mn","En","Sn","bn","jn","vn","kn","In","xn","Rn","v$1","v","j","B","$","N","dt","H","rt","L","Gt","Wt","Re","_e","Fe","Te","Ce","$e","qe","Be","Oe","Ae","Ne","Le","Ve","ze","Ht","_n","Fn","te","Tn","Cn","$n","qn","Bn","St","de","ye","y","k","ee","On","An","Nn","gs","It","Pe","Bt","Me","Ee","Ln","ne","se","Se","G","Vn","be","zn","Dn","Un","et","Yn","je","Ot","ve","Xn","ie","tt","U","Gn","re","Ct","Dt","Jn","At","he","oe","Wn","ke","Kn","Qn","Ie","Zn","Ut","Hn","gt","ts","le","ue","ae","es","ns","ce","ss","is","fe","rs","Yt","os","xt","Xt","hs","d","pt","xe","Rt","ls","Nt","us","f","K","z$1","t","Dieline","Transformable","body","cutLines","foldLines","foldLinesForwards","foldLinesBackwards","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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"}
|
|
1
|
+
{"version":3,"file":"dielines.js","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","yn","rn","ln","cn","bn","Cn","Mn","An","In","Fn","H$1","Bn","vn","kn","_n","On","Ln","un","zn","an","qn","fn","Dn","Rn","Vn","Nn","Un","jn","Yn","$n","Xn","Hn","Gn","Qn","Wn","Jn","Kn","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":";;;AAAA,IAAIA,KAAK,OAAO,gBACZC,KAAK,CAACC,GAAGC,GAAG,MAAMA,KAAKD,IAAIF,GAAGE,GAAGC,GAAG,EAAE,YAAY,IAAI,cAAc,IAAI,UAAU,IAAI,OAAO,EAAC,CAAE,IAAID,EAAEC,CAAC,IAAI,GAC3GC,IAAI,CAACF,GAAGC,GAAG,OAAOF,GAAGC,GAAG,OAAOC,KAAK,WAAWA,IAAI,KAAKA,GAAG,CAAC,GAAG;AACnE,SAASE,GAAGH,GAAGC,GAAG,GAAGG,GAAG;AACtB,SAAOJ,KAAKI,KAAKH,KAAK;AACxB;AACA,IAAAI,KAAA,MAAMC,GAAG;AAAA,EACP,YAAYL,IAAI,OAAO,IAAI,OAAOG,IAAI,QAAQG,IAAI,QAAQ;AACxDL,IAAAA,EAAE,MAAM,MAAM,GACdA,EAAE,MAAM,MAAM,GACdA,EAAE,MAAM,MAAM,GACdA,EAAE,MAAM,MAAM,GACd,KAAK,OAAOD,GAAG,KAAK,OAAO,GAAG,KAAK,OAAOG,GAAG,KAAK,OAAOG;AAAA,EAC1D;AAAA,EACD,IAAI,QAAQ;AACV,WAAO,KAAK,OAAO,KAAK;AAAA,EACzB;AAAA,EACD,IAAI,SAAS;AACX,WAAO,KAAK,OAAO,KAAK;AAAA,EACzB;AAAA,EACD,IAAI,SAAS;AACX,WAAO,EAAE,KAAK,OAAO,KAAK,QAAQ,IAAI,KAAK,OAAO,KAAK,QAAQ,CAAC;AAAA,EACjE;AAAA,EACD,KAAKN,GAAG;AACN,WAAO,IAAIK;AAAA,MACT,KAAK,OAAOL;AAAA,MACZ,KAAK,OAAOA;AAAA,MACZ,KAAK,OAAOA;AAAA,MACZ,KAAK,OAAOA;AAAA,IAClB;AAAA,EACG;AAAA,EACD,SAASA,GAAG;AACV,UAAM,CAAC,GAAGG,CAAC,IAAIH;AACf,WAAOE,GAAG,KAAK,MAAM,KAAK,MAAM,GAAG,CAAC,KAAKA,GAAG,KAAK,MAAM,KAAK,MAAMC,GAAGA,CAAC;AAAA,EACvE;AAAA,EACD,SAASH,GAAG;AACV,WAAOE,GAAG,KAAK,MAAM,KAAK,MAAMF,EAAE,MAAMA,EAAE,IAAI,KAAKE,GAAG,KAAK,MAAM,KAAK,MAAMF,EAAE,MAAMA,EAAE,IAAI;AAAA,EAC3F;AAAA,EACD,SAASA,GAAG;AACV,UAAM,CAAC,GAAGG,CAAC,IAAIH;AACf,WAAO,IAAIK;AAAA,MACT,KAAK,IAAI,KAAK,MAAM,CAAC;AAAA,MACrB,KAAK,IAAI,KAAK,MAAMF,CAAC;AAAA,MACrB,KAAK,IAAI,KAAK,MAAM,CAAC;AAAA,MACrB,KAAK,IAAI,KAAK,MAAMA,CAAC;AAAA,IAC3B;AAAA,EACG;AAAA,EACD,MAAMH,GAAG;AACP,WAAO,IAAIK;AAAA,MACT,KAAK,IAAI,KAAK,MAAML,EAAE,IAAI;AAAA,MAC1B,KAAK,IAAI,KAAK,MAAMA,EAAE,IAAI;AAAA,MAC1B,KAAK,IAAI,KAAK,MAAMA,EAAE,IAAI;AAAA,MAC1B,KAAK,IAAI,KAAK,MAAMA,EAAE,IAAI;AAAA,IAChC;AAAA,EACG;AAAA,EACD,aAAaA,GAAG;AACd,WAAO,IAAIK;AAAA,MACT,KAAK,IAAI,KAAK,MAAML,EAAE,IAAI;AAAA,MAC1B,KAAK,IAAI,KAAK,MAAMA,EAAE,IAAI;AAAA,MAC1B,KAAK,IAAI,KAAK,MAAMA,EAAE,IAAI;AAAA,MAC1B,KAAK,IAAI,KAAK,MAAMA,EAAE,IAAI;AAAA,IAChC;AAAA,EACG;AACH;AACA,SAASO,GAAGR,GAAG;AACb,SAAOA,EAAE,OAAO,CAACC,GAAG,MAAMA,EAAE,SAAS,CAAC,GAAG,IAAIK,GAAI,CAAA;AACnD;AACA,MAAMG,KAAK,CAACT,GAAGC,IAAI,SAAS;AAC1B,MAAI,IAAID;AACR,SAAO,KAAK,IAAIA,CAAC,IAAIC,MAAM,IAAI,IAAI,EAAE,QAAQ,CAAC,KAAK,MAAMA,CAAC,CAAC;AAC7D;AACA,SAASS,GAAGV,GAAGC,IAAI,MAAM;AACvB,SAAO,MAAM;AAAA,IACX,IAAI;AAAA,MACFD,EAAE,IAAI,CAAC,CAAC,GAAGI,CAAC,MAAM;AAAA,QAChB,IAAIK,GAAG,GAAGR,CAAC,CAAC,IAAIQ,GAAGL,GAAGH,CAAC,CAAC;AAAA,QACxB,CAAC,GAAGG,CAAC;AAAA,MACb,CAAO;AAAA,IACF,EAAC,OAAQ;AAAA,EACd;AACA;AACA,MAAMO,KAAK,KAAK,KAAK,KAAKC,KAAK,MAAM,KAAK,IAAIC,IAAI,CAACb,MAAM,IAAIA,EAAE,CAAC,CAAC,KAAKA,EAAE,CAAC,CAAC,KAAKc,IAAI,CAAC,CAACd,GAAGC,CAAC,GAAG,CAAC,GAAGG,CAAC,GAAGG,IAAI,SAAS,KAAK,IAAIP,IAAI,CAAC,KAAKO,KAAK,KAAK,IAAIN,IAAIG,CAAC,KAAKG,GAAGQ,IAAK,CAAC,CAACf,GAAGC,CAAC,GAAG,CAAC,GAAGG,CAAC,MAAM,CAACJ,IAAI,GAAGC,IAAIG,CAAC,GAAGY,IAAI,CAAC,CAAChB,GAAGC,CAAC,GAAG,CAAC,GAAGG,CAAC,MAAM,CAACJ,IAAI,GAAGC,IAAIG,CAAC,GAAGa,KAAK,CAAC,CAACjB,GAAGC,CAAC,MAAMD,IAAIA,IAAIC,IAAIA,GAAGiB,KAAK,CAAC,CAAClB,GAAGC,CAAC,MAAM,KAAK,KAAKgB,GAAG,CAACjB,GAAGC,CAAC,CAAC,CAAC,GAAGkB,IAAK,CAAC,CAACnB,GAAGC,CAAC,GAAG,MAAM,CAACD,IAAI,GAAGC,IAAI,CAAC,GAAGmB,KAAK,CAAC,CAACpB,GAAGC,CAAC,GAAG,CAAC,GAAGG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAOJ,IAAI,MAAM,KAAKC,IAAIG,MAAM,GAAGiB,IAAI,CAACrB,GAAGC,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,KAAKmB,GAAGpB,GAAGC,CAAC,CAAC;AACpc,SAASqB,GAAG,CAACtB,GAAGC,CAAC,GAAG,CAAC,GAAGG,CAAC,GAAG;AAC1B,SAAOJ,IAAII,IAAIH,IAAI;AACrB;AACA,SAASsB,GAAG,CAACvB,GAAGC,CAAC,GAAG,CAAC,GAAGG,CAAC,GAAG;AAC1B,SAAOJ,IAAI,IAAIC,IAAIG;AACrB;AACA,SAASoB,EAAE,CAACxB,GAAGC,CAAC,GAAG;AACjB,QAAM,IAAIoB,EAAE,CAACrB,GAAGC,CAAC,CAAC;AAClB,SAAO,CAACD,IAAI,GAAGC,IAAI,CAAC;AACtB;AACA,SAASwB,GAAGzB,GAAGC,GAAG;AAChB,QAAM,IAAI,KAAK,IAAIA,CAAC,IAAID,GAAGI,IAAI,KAAK,IAAIH,CAAC,IAAID;AAC7C,SAAO,CAAC,GAAGI,CAAC;AACd;AACA,SAASsB,GAAG,CAAC1B,GAAGC,CAAC,GAAG;AAClB,SAAO,KAAK,MAAMA,GAAGD,CAAC;AACxB;AACA,SAAS2B,GAAG3B,GAAG;AACb,QAAMC,IAAIoB,EAAErB,CAAC,GAAG,IAAI0B,GAAG1B,CAAC;AACxB,SAAO,CAACC,GAAG,CAAC;AACd;AACA,SAAS2B,GAAG5B,GAAGC,GAAG,IAAI,MAAM;AAC1B,QAAMG,IAAIkB,GAAGtB,GAAGC,CAAC,GAAGM,IAAIU,GAAGjB,CAAC,GAAG6B,IAAIZ,GAAGhB,CAAC;AACvC,SAAOG,IAAIA,IAAIG,IAAIsB,IAAI,IAAI;AAC7B;AACA,SAASC,GAAE9B,GAAG;AACZ,SAAO,CAAC,CAACA,EAAE,CAAC,GAAGA,EAAE,CAAC,CAAC;AACrB;AACA,SAAS+B,GAAG/B,GAAG;AACb,SAAO,CAACA,EAAE,CAAC,GAAG,CAACA,EAAE,CAAC,CAAC;AACrB;AACA,SAASgC,GAAGhC,GAAGC,GAAG,GAAG;AACnB,SAAOa,EAAE,GAAGd,CAAC,KAAK4B,GAAGZ,EAAE,GAAGhB,CAAC,GAAGC,CAAC;AACjC;AACA,MAAMgC,KAAK,CAACjC,GAAGC,MAAM;AACnB,QAAM,CAAC,GAAGG,GAAGG,GAAGsB,GAAG,GAAG,GAAGK,GAAGC,GAAG,CAAC,IAAInC,GAAG,CAAC,GAAGoC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,CAAC,IAAI1C;AACrE,SAAO;AAAA,IACL,IAAI,IAAIG,IAAIkC,IAAI/B,IAAIkC;AAAA,IACpB,IAAIL,IAAIhC,IAAImC,IAAIhC,IAAImC;AAAA,IACpB,IAAIL,IAAIjC,IAAIoC,IAAIjC,IAAIoC;AAAA,IACpBd,IAAI,IAAI,IAAIS,IAAI,IAAIG;AAAA,IACpBZ,IAAIO,IAAI,IAAIG,IAAI,IAAIG;AAAA,IACpBb,IAAIQ,IAAI,IAAIG,IAAI,IAAIG;AAAA,IACpBT,IAAI,IAAIC,IAAIG,IAAI,IAAIG;AAAA,IACpBP,IAAIE,IAAID,IAAII,IAAI,IAAIG;AAAA,IACpBR,IAAIG,IAAIF,IAAIK,IAAI,IAAIG;AAAA,EACxB;AACA,GAAGC,KAAK,CAAC5C,MAAM;AACb,QAAM,CAACC,GAAG,GAAGG,GAAGG,GAAGsB,GAAG,GAAG,GAAGK,GAAGC,CAAC,IAAInC,GAAG,IAAIC,KAAK4B,IAAIM,IAAI,IAAID,KAAK,KAAK3B,IAAI4B,IAAI,IAAI,KAAK/B,KAAKG,IAAI2B,IAAIL,IAAI;AACxG,SAAO;AAAA,KACJA,IAAIM,IAAI,IAAID,KAAK;AAAA,KACjB9B,IAAI8B,IAAI,IAAIC,KAAK;AAAA,KACjB,IAAI,IAAI/B,IAAIyB,KAAK;AAAA,KACjB,IAAI,IAAItB,IAAI4B,KAAK;AAAA,KACjBlC,IAAIkC,IAAI/B,IAAI,KAAK;AAAA,KACjBA,IAAIG,IAAIN,IAAI,KAAK;AAAA,KACjBM,IAAI2B,IAAIL,IAAI,KAAK;AAAA,KACjB,IAAI,IAAI5B,IAAIiC,KAAK;AAAA,KACjBjC,IAAI4B,IAAI,IAAItB,KAAK;AAAA,EACtB;AACA,GAAGsC,KAAK,CAAC7C,MAAM;AACb,QAAM,CAACC,GAAG,GAAGG,GAAGG,GAAGsB,GAAG,GAAG,GAAGK,GAAGC,CAAC,IAAInC;AACpC,SAAO,CAACC,GAAGM,GAAG,GAAG,GAAGsB,GAAGK,GAAG9B,GAAG,GAAG+B,CAAC;AACnC;AACA,IAAAW,KAAA,MAAMC,GAAE;AAAA,EACN,YAAY9C,GAAG;AACbC,IAAAA,EAAE,MAAM,WAAW,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,GAC9CD,MAAM,KAAK,UAAU,CAAC,GAAGA,CAAC;AAAA,EAC3B;AAAA,EACD,QAAQ;AACN,WAAO,IAAI8C,GAAE,KAAK,OAAO;AAAA,EAC1B;AAAA,EACD,YAAY;AACV,WAAO,KAAK,UAAUF,GAAG,KAAK,OAAO,GAAG;AAAA,EACzC;AAAA,EACD,UAAU;AACR,WAAO,KAAK,UAAUD,GAAG,KAAK,OAAO,GAAG;AAAA,EACzC;AAAA,EACD,UAAU3C,GAAG,GAAG;AACd,WAAO,KAAK,UAAUgC,GAAG,KAAK,SAAS,CAAC,GAAG,GAAGhC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG;AAAA,EACtE;AAAA,EACD,OAAOA,GAAG,GAAG;AACX,UAAMG,IAAI,KAAK,IAAIH,CAAC,GAAGM,IAAI,KAAK,IAAIN,CAAC,GAAG4B,IAAI,CAACzB,GAAG,CAACG,GAAG,GAAGA,GAAGH,GAAG,GAAG,GAAG,GAAG,CAAC;AACvE,WAAO,KAAK,KAAK,UAAU,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,KAAK,UAAU6B,GAAG,KAAK,SAASJ,CAAC,GAAG,KAAK,KAAK,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG;AAAA,EAChH;AAAA,EACD,UAAU;AACR,WAAO,KAAK,UAAUI,GAAG,KAAK,SAAS,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG;AAAA,EACvE;AAAA,EACD,UAAU;AACR,WAAO,KAAK,UAAUA,GAAG,KAAK,SAAS,CAAC,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG;AAAA,EACvE;AAAA,EACD,WAAWhC,GAAG,GAAG;AACf,UAAM,CAACG,GAAGG,CAAC,IAAIN,GAAG4B,IAAI,KAAK,MAAMtB,GAAGH,CAAC;AACrC,WAAO,KAAK,KAAK,UAAU,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,KAAK,OAAOyB,CAAC,GAAG,KAAK,QAAO,GAAI,KAAK,OAAO,CAACA,CAAC,GAAG,KAAK,KAAK,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG;AAAA,EAC7H;AAAA,EACD,aAAa5B,GAAG;AACd,WAAOA,KAAK,KAAK,UAAUA,EAAE,CAAC,GAAGA,EAAE,CAAC,CAAC,GAAG,KAAK,UAAUgC,GAAG,KAAK,SAAS,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,GAAGhC,KAAK,KAAK,UAAU,CAACA,EAAE,CAAC,GAAG,CAACA,EAAE,CAAC,CAAC,GAAG;AAAA,EAC5I;AAAA,EACD,MAAMA,GAAG,GAAG;AACV,WAAO,KAAK,KAAK,UAAU,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,KAAK,UAAUgC,GAAG,KAAK,SAAS,CAAChC,GAAG,GAAG,GAAG,GAAGA,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,KAAK,KAAK,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG;AAAA,EAC1I;AAAA,EACD,UAAUA,GAAG;AACX,UAAM,CAAC,GAAGG,CAAC,IAAIH,GAAG,CAACM,GAAGsB,GAAG,GAAG,GAAGK,GAAGC,CAAC,IAAI,KAAK;AAC5C,WAAO,CAAC5B,IAAI,IAAIsB,IAAIzB,IAAI,GAAG,IAAI,IAAI8B,IAAI9B,IAAI+B,CAAC;AAAA,EAC7C;AAAA,EACD,eAAelC,GAAG;AAChB,UAAM,CAAC,GAAGG,CAAC,IAAI,KAAK,UAAU,CAAC,KAAK,IAAIH,CAAC,GAAG,KAAK,IAAIA,CAAC,CAAC,CAAC,GAAG,CAACM,GAAGsB,CAAC,IAAI,KAAK,UAAU,CAAC,GAAG,CAAC,CAAC;AACzF,WAAO,KAAK,MAAMzB,IAAIyB,GAAG,IAAItB,CAAC;AAAA,EAC/B;AAAA,EACD,mBAAmB;AACjB,UAAM,CAACN,GAAS,EAAA,EAAA,EAAA,CAAC,IAAI,KAAK;AAC1B,WAAOA,IAAI,IAAI;AAAA,EAChB;AAAA,EACD,cAAc;AACZ,UAAM,CAACA,GAAO,EAAA,EAAA,CAAC,IAAI,KAAK;AACxB,WAAO,KAAK,KAAKA,IAAIA,IAAI,IAAI,CAAC;AAAA,EAC/B;AACH;AACA,MAAM+C,GAAG;AAAA,EACP,WAAW/C,GAAG;AACZ,UAAM,IAAI,IAAI8C,GAAC,EAAG,UAAU9C,GAAG,CAAC;AAChC,WAAO,KAAK,UAAU,CAAC;AAAA,EACxB;AAAA,EACD,WAAWA,GAAG;AACZ,UAAM,IAAI,IAAI8C,GAAC,EAAG,UAAU,GAAG9C,CAAC;AAChC,WAAO,KAAK,UAAU,CAAC;AAAA,EACxB;AAAA,EACD,UAAUA,GAAG,GAAG;AACd,UAAMG,IAAI,IAAI2C,GAAC,EAAG,UAAU9C,GAAG,CAAC;AAChC,WAAO,KAAK,UAAUG,CAAC;AAAA,EACxB;AAAA,EACD,YAAY,CAACH,GAAG,CAAC,GAAG;AAClB,UAAMG,IAAI,IAAI2C,GAAC,EAAG,UAAU9C,GAAG,CAAC;AAChC,WAAO,KAAK,UAAUG,CAAC;AAAA,EACxB;AAAA,EACD,OAAOH,GAAG,GAAG;AACX,UAAMG,IAAI,IAAI2C,GAAC,EAAG;AAAA,MAChB9C,IAAIU;AAAAA,MACJ;AAAA,IACN;AACI,WAAO,KAAK,UAAUP,CAAC;AAAA,EACxB;AAAA,EACD,MAAMH,GAAG,GAAG;AACV,UAAMG,IAAI,IAAI2C,GAAC,EAAG,MAAM9C,GAAG,CAAC;AAC5B,WAAO,KAAK,UAAUG,CAAC;AAAA,EACxB;AAAA,EACD,aAAaH,GAAG;AACd,UAAM,IAAI,IAAI8C,GAAG,EAAC,aAAa9C,CAAC;AAChC,WAAO,KAAK,UAAU,CAAC;AAAA,EACxB;AAAA,EACD,OAAOA,IAAI,KAAK,GAAG;AACjB,UAAMG,IAAI,IAAI2C;AACd,WAAO9C,MAAM,MAAMG,EAAE,QAAO,IAAKH,MAAM,MAAMG,EAAE,QAAS,IAAGA,EAAE,WAAWH,GAAG,CAAC,GAAG,KAAK,UAAUG,CAAC;AAAA,EAChG;AACH;SACA,cAAiB4C,GAAG;AAAA,EAClB,YAAYC,GAAG7C,GAAG;AAChB,aACAF,EAAE,MAAM,aAAa,IAAI,GACzB,KAAK,aAAa+C,GAAG,KAAK,YAAY7C,GAAG,KAAK,aAAa6C,GAAG,KAAK,YAAY7C;AAAA,EAChF;AAAA,EACD,IAAI,OAAO;AACT,WAAO,GAAG,KAAK,WAAW,IAAIS,EAAE,KAAK,UAAU,CAAC,MAAMA;AAAAA,MACpD,KAAK;AAAA,IACN,CAAA;AAAA,EACF;AAAA,EACD,IAAI,OAAO;AACT,WAAO,KAAK;AAAA,EACb;AAAA,EACD,CAAC,OAAO,IAAI,4BAA4B,CAAC,IAAI;AAC3C,WAAO,KAAK;AAAA,EACb;AACH,OACA,MAAMqC,WAAWC,GAAG;AAAA,EAClB,cAAc;AACZ,UAAM,GAAG,SAAS,GAClBjD,EAAE,MAAM,eAAe,MAAM,GAC7BA,EAAE,MAAM,MAAM,IAAI,GAClBA,EAAE,MAAM,UAAU,IAAI,GACtBA,EAAE,MAAM,eAAe,IAAI,GAC3BA,EAAE,MAAM,gBAAgB,IAAI;AAAA,EAC7B;AAAA,EACD,iBAAiB+C,GAAG;AAClB,UAAM7C,IAAI,KAAK,SAAS,KAAK;AAC7B,WAAO6C,KAAK,CAAC7C,KAAK,IAAI6C,KAAK,CAAC7C;AAAA,EAC7B;AAAA,EACD,WAAW6C,GAAG;AACZ,WAAOlC,EAAG,KAAK,YAAYI,EAAG,KAAK,GAAG8B,CAAC,CAAC;AAAA,EACzC;AAAA,EACD,IAAI,SAAS;AACX,WAAO5B,EAAE,KAAK,YAAY,KAAK,SAAS;AAAA,EACzC;AAAA,EACD,IAAI,eAAe;AACjB,WAAOD,GAAG,KAAK,YAAY,KAAK,SAAS;AAAA,EAC1C;AAAA,EACD,IAAI,IAAI;AACN,WAAO,KAAK,OAAO,SAAS,KAAK,KAAKJ,EAAE,KAAK,WAAW,KAAK,UAAU,IAAI,KAAK;AAAA,EACjF;AAAA,EACD,IAAI,QAAQ;AACV,QAAI,KAAK,WAAW,MAAM;AACxB,YAAM,CAACiC,GAAG7C,CAAC,IAAI,KAAK;AACpB,WAAK,SAASA,IAAI6C;AAAA,IACnB;AACD,WAAO,KAAK;AAAA,EACb;AAAA,EACD,IAAI,aAAa;AACf,WAAO,KAAK,gBAAgB,SAAS,KAAK,cAAc,KAAK,WAAW,CAAC,IAAI,KAAK,QAAQ,KAAK,WAAW,CAAC,IAAI,KAAK;AAAA,EACrH;AAAA,EACD,IAAI,WAAW;AACb,WAAOlC,EAAG,KAAK,YAAYI,EAAG,KAAK,GAAG,GAAG,CAAC;AAAA,EAC3C;AAAA,EACD,OAAO8B,GAAG;AACR,WAAOA,aAAaC,KAAKpC,EAAE,KAAK,YAAYmC,EAAE,UAAU,KAAKnC,EAAE,KAAK,WAAWmC,EAAE,SAAS,KAAKnC,EAAE,KAAK,WAAWmC,EAAE,UAAU,KAAKnC,EAAE,KAAK,YAAYmC,EAAE,SAAS,IAAI;AAAA,EACrK;AAAA,EACD,QAAQ;AACN,WAAO,IAAIC,GAAG,KAAK,YAAY,KAAK,SAAS;AAAA,EAC9C;AAAA,EACD,UAAU;AACR,WAAO,IAAIA,GAAG,KAAK,WAAW,KAAK,UAAU;AAAA,EAC9C;AAAA,EACD,IAAI,cAAc;AAChB,WAAO,KAAK,iBAAiB,SAAS,KAAK,eAAe,IAAI5C;AAAAA,MAC5D,KAAK,IAAI,KAAK,WAAW,CAAC,GAAG,KAAK,UAAU,CAAC,CAAC,IAAI,KAAK;AAAA,MACvD,KAAK,IAAI,KAAK,WAAW,CAAC,GAAG,KAAK,UAAU,CAAC,CAAC,IAAI,KAAK;AAAA,MACvD,KAAK,IAAI,KAAK,WAAW,CAAC,GAAG,KAAK,UAAU,CAAC,CAAC,IAAI,KAAK;AAAA,MACvD,KAAK,IAAI,KAAK,WAAW,CAAC,GAAG,KAAK,UAAU,CAAC,CAAC,IAAI,KAAK;AAAA,IAC7D,IAAQ,KAAK;AAAA,EACV;AAAA,EACD,aAAa2C,GAAG;AACd,UAAM7C,IAAIY,EAAEiC,GAAG,KAAK,UAAU,GAAG,IAAI1B,GAAGnB,GAAG,KAAK,CAAC,IAAI,KAAK;AAC1D,QAAI,IAAI;AACN,aAAOiB,EAAE4B,GAAG,KAAK,UAAU;AAC7B,QAAI,IAAI;AACN,aAAO5B,EAAE4B,GAAG,KAAK,SAAS;AAC5B,UAAMpB,IAAI,KAAK,WAAW,CAAC;AAC3B,WAAOR,EAAE4B,GAAGpB,CAAC;AAAA,EACd;AAAA,EACD,YAAYoB,GAAG;AACb,QAAInC,EAAEmC,GAAG,KAAK,YAAY,KAAK,SAAS;AACtC,aAAO;AACT,UAAM7C,IAAIY,EAAEiC,GAAG,KAAK,UAAU;AAC9B,QAAI,CAACrB,GAAG,KAAK,GAAGxB,CAAC;AACf,aAAO;AACT,UAAM,IAAImB,GAAGnB,GAAG,KAAK,CAAC,IAAI,KAAK;AAC/B,WAAO,KAAK,iBAAiB,CAAC;AAAA,EAC/B;AAAA,EACD,WAAW6C,GAAG;AACZ,WAAO,KAAK;AAAA,EACb;AAAA,EACD,UAAUA,GAAG;AACX,QAAI,CAAC,KAAK,YAAYA,CAAC;AACrB,YAAM,IAAI,MAAM,yBAAyB;AAC3C,WAAOzB,EAAE,KAAK,CAAC;AAAA,EAChB;AAAA,EACD,IAAI,eAAe;AACjB,WAAOM,GAAEN,EAAE,KAAK,CAAC,CAAC;AAAA,EACnB;AAAA,EACD,IAAI,sBAAsB;AACxB,WAAOA,EAAE,KAAK,CAAC;AAAA,EAChB;AAAA,EACD,IAAI,qBAAqB;AACvB,WAAOA,EAAE,KAAK,CAAC;AAAA,EAChB;AAAA,EACD,QAAQyB,GAAG;AACT,QAAI7C;AACJ,QAAI,MAAM,QAAQ6C,CAAC,KAAKA,EAAE,WAAW;AACnC,aAAO,CAAC,IAAI;AACd,UAAM,QAAQA,EAAE,CAAC,CAAC,IAAI7C,IAAI6C,IAAI7C,IAAI,CAAC6C,CAAC,GAAG7C,EAAE,QAAQ,CAAC,MAAM;AACtD,UAAI,CAAC,KAAK,YAAY,CAAC;AACrB,cAAM,IAAI;AAAA,UACR,SAASS,EAAE,CAAC,CAAC,sBAAsB,KAAK,IAAI;AAAA,QACtD;AAAA,IACA,CAAK;AACD,UAAM,IAAI,CAAC,KAAK,YAAY,GAAGT,GAAG,KAAK,SAAS,GAAGyB,IAAInB,GAAG,CAAC,GAAG0C,IAAI,KAAK,UAAU,CAAC,IAAI,KAAK,WAAW,CAAC;AACvG,QAAIC,IAAI,KAAK,KAAKD,CAAC,GAAGlB,IAAI;AAC1B,WAAO,KAAK,IAAIkB,CAAC,IAAI,KAAK,cAAcC,IAAI,KAAK,KAAK,KAAK,UAAU,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,GAAGnB,IAAI,IAAIL,EAAE;AAAA,MACvG,CAAC,GAAGyB,MAAMD,KAAK,EAAEnB,CAAC,IAAIoB,EAAEpB,CAAC;AAAA,IAC/B,GAAOL,EAAE,QAAQ,CAAC,GAAGyB,MAAMA,MAAMzB,EAAE,SAAS,IAAI,CAAE,IAAG,IAAIqB,GAAG,GAAGrB,EAAEyB,IAAI,CAAC,CAAC,CAAC;AAAA,EACrE;AAAA,EACD,UAAUL,GAAG;AACX,WAAO,IAAIC;AAAA,MACTD,EAAE,UAAU,KAAK,UAAU;AAAA,MAC3BA,EAAE,UAAU,KAAK,SAAS;AAAA,IAChC;AAAA,EACG;AACH;AACA,SAASM,GAAGvD,GAAG;AACb,SAAO,MAAM,KAAK,MAAMA,CAAC,EAAE,KAAI,CAAE;AACnC;AACA,SAASwD,GAAGxD,GAAG;AACb,QAAMC,IAAI,KAAK,IAAI,GAAGD,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC;AAC5C,SAAOuD,GAAGtD,CAAC,EAAE,IAAI,CAAC,MAAMD,EAAE,IAAI,CAACI,MAAMA,EAAE,CAAC,CAAC,CAAC;AAC5C;AACA,SAASqD,GAAGzD,GAAGC,IAAI,MAAM;AACvB,SAAOD,IAAI,IAAIA,IAAI,IAAI,KAAK,KAAKA,KAAK,IAAI,KAAK,KAAKA,KAAK,IAAI,KAAK,MAAMA,IAAI,IAAI,KAAK,KAAKC,IAAI,IAAID;AACpG;AACA,SAAS0D,GAAG1D,GAAGC,GAAG,GAAGG,IAAI,MAAM;AAC7B,MAAIG,IAAIN,IAAID;AACZ,SAAO,MAAMO,IAAI,CAACA,IAAIA,IAAI,MAAMA,KAAK,IAAI,KAAK,KAAKA,IAAI,IAAI,KAAK,KAAKH,IAAI,IAAIG;AAC/E;AACA,MAAMoD,KAAK,CAAC3D,GAAGC,GAAG,MAAM;AACtB,QAAMG,IAAIkB,GAAGtB,EAAE,GAAGC,EAAE,CAAC,GAAGM,IAAIU,GAAGjB,EAAE,CAAC,GAAG6B,IAAIZ,GAAGhB,EAAE,CAAC,GAAG,IAAI,IAAI,IAAI,IAAID,EAAE,YAAYC,EAAE;AAClF,MAAIG,IAAIA,IAAIG,IAAIsB,IAAI;AAClB,WAAO;AACT,QAAM,IAAIb,EAAEf,EAAE,YAAYD,EAAE,UAAU,GAAGkC,IAAIZ,GAAG,GAAGrB,EAAE,CAAC,IAAIG,GAAG+B,IAAIb,GAAG,GAAGtB,EAAE,CAAC,IAAII;AAC9E,SAAO;AAAA,IACL,oBAAoB8B;AAAA,IACpB,oBAAoBC;AAAA,EACxB;AACA;AACA,SAASyB,GAAG5D,GAAGC,GAAG,IAAI,IAAIG,GAAG;AAC3B,QAAMG,IAAIoD,GAAG3D,GAAGC,GAAGG,CAAC;AACpB,MAAIG,MAAM,YAAY;AACpB,QAAI,CAAC;AACH,aAAO;AACT,QAAIP,EAAE,OAAOC,CAAC;AACZ,aAAOD;AACT,UAAM,IAAIU;AAAAA,MACR;AAAA,QACET,EAAE,YAAYD,EAAE,UAAU,IAAIA,EAAE,aAAa;AAAA,QAC7CC,EAAE,YAAYD,EAAE,SAAS,IAAIA,EAAE,YAAY;AAAA,QAC3CA,EAAE,YAAYC,EAAE,UAAU,IAAIA,EAAE,aAAa;AAAA,QAC7CD,EAAE,YAAYC,EAAE,SAAS,IAAIA,EAAE,YAAY;AAAA,MAC5C,EAAC,OAAO,CAACiC,MAAMA,MAAM,IAAI;AAAA,IAChC,EAAM,KAAK,CAACA,GAAGC,MAAMD,EAAE,CAAC,IAAIC,EAAE,CAAC,CAAC;AAG5B,QAFI,EAAE,WAAW,KAEb,EAAE,WAAW;AACf,aAAO;AACT,QAAI,EAAE,WAAW;AACf,aAAO,IAAIe,EAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC1B,UAAM,QAAQ,MAAM,CAAC,GAAG,IAAI;AAAA,MAC1B;AAAA,IACN;AAAA,EACG;AACD,QAAM,EAAE,oBAAoBrB,GAAG,oBAAoB,EAAC,IAAKtB;AACzD,SAAO,CAACP,EAAE,iBAAiB6B,CAAC,KAAK,CAAC5B,EAAE,iBAAiB,CAAC,IAAI,OAAOD,EAAE,WAAW6B,CAAC;AACjF;AACA,MAAMgC,KAAK,CAAC7D,GAAGC,MAAM;AACnB,QAAM,IAAIe,EAAEhB,GAAGC,CAAC;AAChB,SAAO0B,GAAG,CAAC;AACb;QACA,MAAMmC,WAAWX,GAAG;AAAA,EAClB,YAAYF,GAAG7C,GAAG,GAAGyB,IAAI,IAAI,EAAE,cAAcuB,IAAI,GAAE,IAAK,CAAA,GAAI;AAW1D,QAVA,MAAMH,GAAG7C,CAAC,GACVF,EAAE,MAAM,eAAe,KAAK,GAC5BA,EAAE,MAAM,QAAQ,GAChBA,EAAE,MAAM,WAAW,GACnBA,EAAE,MAAM,iBAAiB,IAAI,GAC7BA,EAAE,MAAM,kBAAkB,IAAI,GAC9BA,EAAE,MAAM,WAAW,IAAI,GACvBA,EAAE,MAAM,eAAe,IAAI,GAC3BA,EAAE,MAAM,cAAc,IAAI,GAC1BA,EAAE,MAAM,gBAAgB,IAAI,GACxB,KAAK,SAAS,GAAG,KAAK,YAAY2B,GAAG,CAACuB,GAAG;AAC3C,UAAItC,EAAEmC,GAAG7C,CAAC;AACR,cAAM,IAAI,MAAM,sCAAsC;AACxD,UAAI,KAAK,IAAI,KAAK,SAASiB,EAAE,KAAK,WAAW,KAAK,MAAM,CAAC,IAAI,KAAK;AAChE,cAAM,IAAI;AAAA,UACR,8CAA8CR;AAAAA,YAC5CoC;AAAA,UACZ,CAAW,QAAQpC,EAAET,CAAC,CAAC,aAAaS,EAAE,CAAC,CAAC;AAAA,QACxC;AAAA,IACK;AAAA,EACF;AAAA,EACD,IAAI,OAAO;AACT,WAAO,OAAOA,EAAE,KAAK,UAAU,CAAC,KAAKA;AAAAA,MACnC,KAAK;AAAA,IACN,CAAA,KAAKA,EAAE,KAAK,MAAM,CAAC,KAAK,KAAK,YAAY,OAAO,KAAK;AAAA,EACvD;AAAA,EACD,IAAI,eAAe;AACjB,QAAI,KAAK,kBAAkB,MAAM;AAC/B,YAAM,CAACoC,GAAG7C,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,SAAS,KAAK;AACnD,WAAK,gBAAgB;AAAA,QACnB,IAAI,IAAI;AAAA,QACR,IAAI;AAAA,QACJ,IAAI,IAAI;AAAA,QACR,GAAG,EAAE,IAAI6C,KAAK;AAAA,QACd,GAAG,EAAE,IAAI7C,KAAK;AAAA,QACd,IAAI6C,IAAIA,IAAI7C,IAAIA,IAAI,KAAK;AAAA,MACjC;AAAA,IACK;AACD,WAAO,KAAK;AAAA,EACb;AAAA,EACD,iBAAiB6C,GAAG;AAClB,WAAO,IAAIA,KAAK,CAAC,KAAK,aAAaA,KAAK,CAAC,KAAK;AAAA,EAC/C;AAAA,EACD,aAAaA,GAAG;AACd,WAAOS,GAAG,KAAK,YAAYD,GAAGR,CAAC,GAAG,KAAK,SAAS,IAAI,KAAK;AAAA,EAC1D;AAAA,EACD,IAAI,gBAAgB;AAClB,WAAO,KAAK,mBAAmB,KAAK,iBAAiBS;AAAAA,MACnD,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,IACX,IAAQ,KAAK;AAAA,EACV;AAAA,EACD,WAAWT,GAAG;AACZ,WAAOlC;AAAAA,MACL,KAAK;AAAA,MACLU;AAAAA,QACE,KAAK;AAAA,QACL,KAAK,aAAawB,IAAI,KAAK,iBAAiB,KAAK,YAAY,KAAK;AAAA,MACnE;AAAA,IACP;AAAA,EACG;AAAA,EACD,aAAaA,GAAG;AACd,UAAM,CAAC7C,GAAG,CAAC,IAAIyD,GAAGZ,GAAG,KAAK,MAAM;AAChC,QAAI,KAAK,IAAI7C,IAAI,KAAK,MAAM,IAAI,KAAK;AACnC,YAAM,IAAI;AAAA,QACR,SAASS,EAAEoC,CAAC,CAAC,sBAAsB,KAAK,IAAI;AAAA,MACpD;AACI,UAAMpB,IAAI,KAAK,aAAa,CAAC;AAC7B,QAAI,CAAC,KAAK,iBAAiBA,CAAC;AAC1B,YAAM,IAAI;AAAA,QACR,SAAShB,EAAEoC,CAAC,CAAC,sBAAsB,KAAK,IAAI;AAAA,MACpD;AACI,WAAOpB;AAAA,EACR;AAAA,EACD,IAAI,SAAS;AACX,WAAO,KAAK,YAAY,SAAS,KAAK,UAAUR,EAAE,KAAK,YAAY,KAAK,MAAM,IAAI,KAAK;AAAA,EACxF;AAAA,EACD,IAAI,aAAa;AACf,QAAI,KAAK,gBAAgB,MAAM;AAC7B,YAAM,CAAC4B,GAAG7C,CAAC,IAAIY,EAAE,KAAK,YAAY,KAAK,MAAM;AAC7C,WAAK,cAAcyC,GAAG,KAAK,MAAMrD,GAAG6C,CAAC,CAAC;AAAA,IACvC;AACD,WAAO,KAAK;AAAA,EACb;AAAA,EACD,IAAI,YAAY;AACd,QAAI,KAAK,eAAe,MAAM;AAC5B,YAAM,CAACA,GAAG7C,CAAC,IAAIY,EAAE,KAAK,WAAW,KAAK,MAAM;AAC5C,WAAK,aAAayC,GAAG,KAAK,MAAMrD,GAAG6C,CAAC,CAAC;AAAA,IACtC;AACD,WAAO,KAAK;AAAA,EACb;AAAA,EACD,IAAI,SAAS;AACX,WAAO,KAAK,SAAS,KAAK;AAAA,EAC3B;AAAA,EACD,IAAI,eAAe;AACjB,WAAO,KAAK,SAAS,KAAK;AAAA,EAC3B;AAAA,EACD,IAAI,WAAW;AACb,WAAO,KAAK,WAAW,GAAG;AAAA,EAC3B;AAAA,EACD,OAAOA,GAAG;AACR,WAAO,EAAEA,aAAaa,OAAO,CAAChD,EAAE,KAAK,QAAQmC,EAAE,MAAM,IAAI,KAAKnC,EAAE,KAAK,YAAYmC,EAAE,UAAU,KAAKnC,EAAE,KAAK,WAAWmC,EAAE,SAAS,KAAK,KAAK,cAAcA,EAAE,aAAanC,EAAE,KAAK,WAAWmC,EAAE,UAAU,KAAKnC,EAAE,KAAK,YAAYmC,EAAE,SAAS,KAAK,KAAK,cAAc,CAACA,EAAE;AAAA,EACnQ;AAAA,EACD,QAAQ;AACN,WAAO,IAAIa;AAAA,MACT,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,IACX;AAAA,EACG;AAAA,EACD,UAAU;AACR,WAAO,IAAIA;AAAA,MACT,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,CAAC,KAAK;AAAA,IACZ;AAAA,EACG;AAAA,EACD,IAAI,cAAc;AAChB,QAAI,KAAK,iBAAiB,MAAM;AAC9B,YAAMb,IAAI,KAAK,SAAS,KAAK,WAAW7C,IAAI,CAAC,MAAM,KAAK,iBAAiB,KAAK,aAAa,CAAC,CAAC;AAC7F,WAAK,eAAe,IAAIE;AAAAA,QACtBF,EAAE,KAAK,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI6C,IAAI,KAAK,IAAI,KAAK,WAAW,CAAC,GAAG,KAAK,UAAU,CAAC,CAAC,IAAI,KAAK;AAAA,QACzF7C,EAAE,KAAK,KAAK,GAAG,IAAI,KAAK,OAAO,CAAC,IAAI6C,IAAI,KAAK,IAAI,KAAK,WAAW,CAAC,GAAG,KAAK,UAAU,CAAC,CAAC,IAAI,KAAK;AAAA,QAC/F7C,EAAE,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI6C,IAAI,KAAK,IAAI,KAAK,WAAW,CAAC,GAAG,KAAK,UAAU,CAAC,CAAC,IAAI,KAAK;AAAA,QACnF7C,EAAE,KAAK,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI6C,IAAI,KAAK,IAAI,KAAK,WAAW,CAAC,GAAG,KAAK,UAAU,CAAC,CAAC,IAAI,KAAK;AAAA,MACrG;AAAA,IACK;AACD,WAAO,KAAK;AAAA,EACb;AAAA,EACD,aAAaA,GAAG;AACd,UAAM,CAAC7C,GAAG,CAAC,IAAIyD,GAAGZ,GAAG,KAAK,MAAM;AAChC,WAAO,KAAK,iBAAiB,KAAK,aAAa,CAAC,CAAC,IAAI,KAAK,IAAI7C,IAAI,KAAK,MAAM,IAAI,KAAK;AAAA,MACpF,KAAK;AAAA,QACHgB,GAAG6B,GAAG,KAAK,UAAU;AAAA,QACrB7B,GAAG6B,GAAG,KAAK,SAAS;AAAA,MACrB;AAAA,IACP;AAAA,EACG;AAAA,EACD,YAAYA,GAAG;AACb,QAAInC,EAAEmC,GAAG,KAAK,UAAU,KAAKnC,EAAEmC,GAAG,KAAK,SAAS;AAC9C,aAAO;AACT,UAAM,CAAC7C,GAAG,CAAC,IAAIyD,GAAGZ,GAAG,KAAK,MAAM;AAChC,QAAI,KAAK,IAAI7C,IAAI,KAAK,MAAM,IAAI,KAAK;AACnC,aAAO;AACT,UAAMyB,IAAI,KAAK,aAAa,CAAC;AAC7B,WAAO,KAAK,iBAAiBA,CAAC;AAAA,EAC/B;AAAA,EACD,WAAWoB,GAAG;AACZ,UAAM7C,IAAI,KAAK,aAAa6C,IAAI,KAAK,iBAAiB,KAAK,YAAY,KAAK,IAAI,IAAI,KAAK,SAAS,KAAK,eAAepB,IAAI,CAAC,IAAI,KAAK,IAAIzB,CAAC,GAAGgD,IAAI,IAAI,KAAK,IAAIhD,CAAC;AAC9J,WAAO,KAAK,YAAY,CAAC,CAACyB,GAAG,CAACuB,CAAC,IAAI,CAACvB,GAAGuB,CAAC;AAAA,EACzC;AAAA,EACD,UAAUH,GAAG;AACX,UAAM,CAAC7C,GAAG,CAAC,IAAIyD,GAAGZ,GAAG,KAAK,MAAM;AAChC,QAAI,KAAK,IAAI7C,IAAI,KAAK,MAAM,IAAI,KAAK;AACnC,YAAM,IAAI,MAAM,yBAAyB;AAC3C,UAAMyB,IAAI,KAAK,aAAa,CAAC;AAC7B,QAAI,CAAC,KAAK,iBAAiBA,CAAC;AAC1B,YAAM,IAAI,MAAM,yBAAyB;AAC3C,UAAMuB,IAAI3B,GAAG,GAAG,CAAC;AACjB,YAAQ,KAAK,YAAYM,KAAKD,IAAGN,EAAE4B,CAAC,CAAC;AAAA,EACtC;AAAA,EACD,IAAI,sBAAsB;AACxB,UAAMH,IAAIxB,GAAG,GAAG,KAAK,UAAU;AAC/B,YAAQ,KAAK,YAAYM,KAAKD,IAAGN,EAAEyB,CAAC,CAAC;AAAA,EACtC;AAAA,EACD,IAAI,qBAAqB;AACvB,UAAMA,IAAIxB,GAAG,GAAG,KAAK,SAAS;AAC9B,YAAQ,KAAK,YAAYM,KAAKD,IAAGN,EAAEyB,CAAC,CAAC;AAAA,EACtC;AAAA,EACD,QAAQA,GAAG;AACT,QAAI7C;AACJ,QAAI,MAAM,QAAQ6C,CAAC,KAAKA,EAAE,WAAW;AACnC,aAAO,CAAC,IAAI;AACd,UAAM,QAAQA,EAAE,CAAC,CAAC,IAAI7C,IAAI6C,IAAI7C,IAAI,CAAC6C,CAAC;AACpC,UAAMpB,IAAI,CAAC,GAAG,GAAG,GAAGzB,EAAE,IAAI,CAAC8B,MAAM,KAAK,aAAaA,CAAC,CAAC,CAAC,GAAGkB,IAAI,IAAI;AAAA,MAC/DI,GAAG,CAAC3B,GAAG,CAAC,KAAK,YAAY,KAAK,WAAW,GAAGzB,CAAC,CAAC,CAAC;AAAA,IACrD;AACI,IAAAyB,EAAE,KAAK,CAACK,GAAGC,MAAMD,IAAIC,CAAC;AACtB,QAAIkB,IAAI;AACR,WAAOxB,EAAE,QAAQ,CAACK,GAAGC,MAAM;AACzB,UAAIA,MAAMN,EAAE,SAAS;AACnB,eAAO;AACT,YAAMyB,IAAIzB,EAAEM,IAAI,CAAC;AACjB,UAAImB,IAAIpB,IAAI,KAAK;AACf,eAAOmB,MAAM,SAASA,IAAInB,IAAI,CAAA;AAChC,YAAM6B,IAAIV,MAAM,OAAOnB,IAAImB,GAAGjB,IAAI,IAAI0B;AAAA,QACpCV,EAAE,IAAIW,CAAC,KAAK,KAAK,WAAWA,CAAC;AAAA,QAC7BX,EAAE,IAAIE,CAAC,KAAK,KAAK,WAAWA,CAAC;AAAA,QAC7B,KAAK;AAAA,QACL,KAAK;AAAA,MACb;AACM,aAAOD,IAAI,MAAMjB;AAAA,IACvB,CAAK;AAAA,EACF;AAAA,EACD,UAAUa,GAAG;AACX,WAAO,IAAIa;AAAA,MACTb,EAAE,UAAU,KAAK,UAAU;AAAA,MAC3BA,EAAE,UAAU,KAAK,SAAS;AAAA,MAC1BA,EAAE,UAAU,KAAK,MAAM;AAAA,MACvBA,EAAE,iBAAgB,IAAK,KAAK,YAAY,CAAC,KAAK;AAAA,IACpD;AAAA,EACG;AACH;AACA,SAASe,GAAGhE,GAAGC,GAAG,GAAG;AACnB,QAAMG,IAAI,IAAI8C,EAAGjD,GAAGD,CAAC,GAAGO,IAAI,IAAI2C,EAAGjD,GAAG,CAAC,GAAG4B,IAAIC,GAAE1B,EAAE,mBAAmB,GAAG,IAAI0B,GAAEvB,EAAE,kBAAkB,GAAG,IAAIoD;AAAAA,IACvG,EAAE,YAAYvD,EAAE,UAAU,GAAGyB,GAAG,WAAW,KAAM;AAAA,IACjD,EAAE,YAAYtB,EAAE,UAAU,GAAG,GAAG,WAAW,KAAM;AAAA,EACrD;AACE,MAAI,MAAM;AACR,UAAM,IAAI,MAAM,iDAAiD;AACnE,QAAM2B,IAAIZ;AAAA,IACRN,EAAEhB,GAAGC,CAAC;AAAA,IACNe,EAAE,GAAGf,CAAC;AAAA,EACP,IAAG;AACJ,SAAO,IAAI6D;AAAAA,IACT9D;AAAA,IACA;AAAA,IACAe,EAAGX,EAAE,UAAUe,EAAGU,GAAG,EAAE,kBAAkB,CAAC;AAAA,IAC1CK;AAAA,IACA,EAAE,cAAc,GAAI;AAAA,EACxB;AACA;AACA,SAAS+B,GAAGjE,GAAGC,GAAG,GAAG;AACnB,QAAMG,IAAI,IAAI8C,EAAGjD,GAAGD,CAAC,GAAGO,IAAIuB,GAAE1B,EAAE,mBAAmB,GAAGyB,IAAI8B;AAAAA,IACxD,EAAE,YAAYvD,EAAE,UAAU,GAAGG,GAAG,WAAW,KAAM;AAAA,IACjD;AAAA,MACE,YAAYP;AAAA,MACZ,GAAG8B,GAAE,CAAC;AAAA,MACN,WAAW;AAAA,IACZ;AAAA,EACL;AACE,MAAID,MAAM;AACR,UAAM,IAAI,MAAM,iDAAiD;AACnE,QAAM,IAAId;AAAAA,IACRX,EAAE;AAAA,IACFe,EAAGZ,GAAGsB,EAAE,kBAAkB;AAAA,EAC3B,GAAE,IAAIP;AAAA,IACLN,EAAE,GAAGhB,CAAC;AAAA,IACNgB,EAAE,GAAGD,EAAGf,GAAG,CAAC,CAAC;AAAA,EACd,IAAG;AACJ,SAAO,IAAI8D,EAAG9D,GAAGC,GAAG,GAAG,GAAG;AAAA,IACxB,cAAc;AAAA,EAClB,CAAG;AACH;AACA,MAAMiE,KAAK,OAAOC,KAAK;AACvB,SAASC,GAAGpE,GAAGC,IAAI,GAAG,IAAI,GAAGG,IAAI,KAAKG,IAAI,KAAK;AAC7C,MAAIsB,GAAG,GAAG,GAAGK,GAAGC,GAAG,GAAG,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC;AACxC,OAAK,IAAIzC,EAAEC,CAAC,GAAG,IAAID,EAAE,CAAC,GAAG,IAAI,MAAM,CAACC,GAAG,CAAC,IAAI,CAAC,GAAGA,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAIwC,IAAI,IAAI0B,MAAM,IAAIlE,IAAIiC,IAAIlC,EAAEyC,CAAC,GAAGN,IAAI,GAAG,IAAI,GAAGD,IAAI,KAAK;AAC3H,QAAIE,KAAK,IAAInC,MAAM,IAAIiC,IAAIG,KAAK,IAAII,MAAM,IAAI,IAAIH,IAAID,IAAID,GAAG,KAAK,IAAIE,CAAC,IAAI4B,KAAKrC,IAAI,IAAIqC,KAAKrC,IAAI,IAAIS,GAAGC,IAAI,MAAM,IAAIE,KAAKJ,KAAK,IAAIpC,KAAKmC,KAAKP,GAAGW,IAAI,IAAIpC,KAAKqC,IAAI,IAAI,IAAIlC;AACxK,YAAM,IAAI,MAAM,sBAAsB;AACxC,QAAI,KAAK,IAAIgC,IAAIE,MAAM,IAAIF,KAAK,GAAG;AACjC,UAAI,IAAIvC,EAAEuC,CAAC,GAAGJ,KAAK,GAAG,IAAID;AACxB,eAAOjC,IAAI,GAAG,IAAIsC,GAAG,IAAI,GAAG,IAAI,GAAG,CAACtC,GAAG,GAAGwC,GAAG,GAAG,GAAGP,GAAGC,CAAC;AACzD,UAAI,IAAI;AACN,eAAOM,IAAIF,GAAGL,IAAI,GAAG,CAACjC,GAAG,GAAGwC,GAAG,GAAG,GAAGP,GAAGC,CAAC;AAC3C,MAAAI,IAAIE,IAAI0B,MAAM1B,IAAI,IAAI,IAAIzC,EAAEuC,CAAC,GAAGJ,KAAK;AAAA,IACtC;AACC,OAACI,IAAIC,MAAMA,IAAIC,MAAM,KAAKF,IAAIC,GAAG,IAAIxC,EAAEuC,CAAC,GAAGJ,KAAK,MAAMI,IAAIC,MAAMC,IAAIF,KAAK,KAAK,IAAIvC,EAAEuC,CAAC,GAAGJ,KAAK,GAAG,IAAID,MAAM,IAAIO,GAAGA,IAAIF,GAAGA,IAAIE,IAAI0B,MAAM1B,IAAI,IAAI,IAAIP,GAAGA,IAAI,GAAG,IAAIlC,EAAEuC,CAAC,GAAGJ,KAAK,OAAOI,IAAIE,IAAI0B,MAAM1B,IAAI,IAAI,IAAIzC,EAAEuC,CAAC,GAAGJ,KAAK;AACzN,IAAAlC,IAAI,GAAG,IAAIwC,GAAGA,IAAIF,GAAG,IAAI,GAAG,IAAIL,GAAGA,IAAI;AAAA,EACxC;AACD,SAAO,CAACjC,GAAG,GAAGwC,GAAG,GAAG,GAAGP,GAAGC,CAAC;AAC7B;AACA,MAAMkC,KAAK,UAAUC,KAAK;AAC1B,MAAMC,GAAG;AAAA,EACP,YAAYtE,GAAG,IAAI,SAASG,IAAI,KAAK;AACnCF,IAAAA,EAAE,MAAM,MAAM,GACdA,EAAE,MAAM,MAAM,GACdA,EAAE,MAAM,MAAM,GACdA,EAAE,MAAM,UAAU,GAClBA,EAAE,MAAM,OAAO,GACf,KAAK,OAAOD,GAAG,KAAK,MAAM,GAAG,KAAK,UAAUG,GAAG,KAAK,OAAOH,GAAG,KAAK,MAAM,GAAG,KAAK,UAAUG,GAAG,KAAK,OAAO,OAAO,KAAK,OAAO,OAAO,KAAK,OAAO,GAAG,KAAK,WAAW,GAAG,KAAK,QAAQ;AAAA,EACpL;AAAA,EACD,WAAWH,IAAI,MAAM;AACnB,SAAK,QAAQA;AAAA,EACd;AAAA,EACD,iBAAiB;AACf,QAAIA,GAAG,GAAGG,GAAGG,GAAGsB,GAAG,GAAG;AACtB,UAAMK,IAAI,KAAK,MAAMC,IAAI,KAAK;AAC9B,QAAIA,MAAM;AACR,OAACN,GAAG,GAAG,GAAG5B,GAAG,GAAGG,GAAGG,CAAC,IAAI6D,GAAGlC,CAAC;AAAA,aACrBC,EAAE,WAAW;AACpB,OAACN,GAAG,GAAG,GAAG5B,GAAG,GAAGG,GAAGG,CAAC,IAAI6D,GAAGlC,GAAGC,EAAE,CAAC,GAAGA,EAAE,CAAC,CAAC;AAAA,aACjCA,EAAE,WAAW,GAAG;AACvB,UAAI,CAACN,GAAG,GAAG,CAAC,IAAIM,GAAGN,IAAI,MAAM,CAAC,GAAGA,CAAC,IAAI,CAACA,GAAG,CAAC,IAAI,EAAEA,IAAI,KAAK,IAAI;AAC5D,cAAM,IAAI,MAAM,4BAA4B;AAC9C,UAAI5B,IAAIiC,EAAEL,CAAC,GAAG,IAAIK,EAAE,CAAC,GAAG9B,IAAI8B,EAAE,CAAC,GAAG,EAAE,IAAIjC,KAAK,IAAIG;AAC/C,cAAM,IAAI,MAAM,4BAA4B;AAC9C,MAAAG,IAAI;AAAA,IACL;AACC,YAAM,IAAI;AAAA,QACR;AAAA,MACR;AACI,WAAO,CAACsB,GAAG,GAAG,GAAG5B,GAAG,GAAGG,GAAGG,CAAC;AAAA,EAC5B;AAAA,EACD,WAAW;AACT,UAAMN,IAAI,KAAK;AACf,QAAI,CAAC,GAAGG,GAAGG,SAASsB,CAAC,IAAI,KAAK,eAAgB,GAAE,IAAIzB,GAAG,IAAIA,GAAG8B,IAAI9B,GAAG+B,IAAIlC,EAAE,CAAC,GAAG,IAAIkC,GAAG,IAAIA,GAAGC,GAAGC;AAChG,QAAI9B,KAAK6B,IAAI,GAAGC,IAAI9B,MAAM6B,IAAI7B,GAAG8B,IAAI;AACrC,QAAIC,IAAI;AACR,IAAAT,IAAI;AACJ,QAAIU,IAAI,GAAGC,IAAI,GAAGC;AAClB,WAAOF,IAAI,KAAK,WAAW;AACzB,YAAMG,IAAI,KAAK,MAAM,KAAK,IAAI,CAAC,IAAI4B,IAAI3B,IAAI,IAAID,GAAG8B,IAAI,OAAOpC,IAAIC;AACjE,UAAI,KAAK,IAAI,IAAImC,CAAC,IAAI7B,IAAI,OAAON,IAAID;AACnC;AACF,UAAI,KAAK,IAAIE,CAAC,KAAKI;AACjB,aAAK8B,IAAIlC,IAAIF,IAAI,IAAIE,IAAID,IAAI,GAAGG,IAAI6B,KAAK/B;AAAA,WACtC;AACH,cAAMmC,KAAK,IAAI,MAAM,IAAI;AACzB,YAAIC,KAAK,IAAIxC,MAAM,IAAIC,IAAIwC,KAAK,IAAIzC,KAAKwC,KAAK,IAAI,KAAKD;AACvD,QAAAC,IAAI,KAAKA,IAAID,IAAIC,IAAI,MAAMC,IAAI,CAACA,IAAID,IAAI,KAAK,IAAIA,CAAC;AAClD,cAAME,IAAItC;AACV,QAAAA,IAAIE,GAAGmC,IAAID,KAAKtC,IAAI,MAAMuC,IAAID,KAAKrC,IAAI,MAAM,KAAK,IAAIsC,CAAC,IAAI,KAAK,IAAI,MAAMD,IAAIE,CAAC,KAAKpC,IAAImC,IAAI,IAAID,GAAGjC,IAAI,IAAID,IAAIC,IAAIL,IAAIO,KAAKN,IAAII,IAAIE,OAAO6B,IAAI,KAAK,IAAIhC,IAAIE,IAAIF,IAAI,CAACE,OAAO,KAAK8B,IAAIlC,IAAIF,IAAI,IAAIE,IAAID,IAAI,GAAGG,IAAI6B,KAAK/B;AAAA,MACtN;AACD,WAAK,IAAIE,CAAC,IAAIE,IAAIF,KAAK,IAAIC,IAAI,IAAIC,IAAID,IAAI,IAAIC,IAAID,IAAI,IAAID;AAC3D,YAAMqC,IAAI5E,EAAEwC,CAAC;AACb,MAAAZ,KAAK,GAAGgD,IAAI,KAAKpC,IAAI,IAAIL,IAAIK,IAAIJ,IAAII,GAAGoC,KAAK1C,KAAK,MAAM,KAAKD,IAAI,GAAG,IAAIO,GAAG,IAAIN,GAAGA,IAAI0C,MAAMA,KAAK,KAAK3C,MAAM,KAAKA,MAAM,OAAOA,IAAIO,GAAG,IAAIoC,OAAOpC,KAAK,IAAIL,IAAI,IAAIC,IAAI,GAAGH,IAAI,GAAG,IAAI,GAAG,IAAIO,GAAG,IAAIN,GAAGA,IAAI,GAAG,IAAI0C,IAAItC,KAAK;AAAA,IACzN;AACD,SAAK,OAAO,GAAG,KAAK,OAAO,GAAG,KAAK,OAAOA,GAAG,KAAK,WAAWV;AAAA,EAC9D;AAAA,EACD,UAAU;AACR,WAAO;AAAA,MACL,QAAQ,KAAK;AAAA,MACb,MAAM,KAAK;AAAA,MACX,YAAY,KAAK;AAAA,MACjB,WAAW,KAAK;AAAA,IACtB;AAAA,EACG;AAAA,EACD,MAAM;AACJ,WAAO,KAAK,SAAQ,GAAI,KAAK,QAAO;AAAA,EACrC;AACH;AACA,SAASiD,GAAG9E,GAAGC,IAAI,MAAM,IAAI,KAAK;AAChC,QAAMG,IAAI,IAAImE,GAAGvE,GAAGC,GAAG,CAAC;AACxB,SAAOG,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,GAAGA,EAAE;AACjC;AACA,MAAM2E,KAAK,OAAO,UAAU;AAC5B,SAASC,GAAEhF,GAAG;AACZ,QAAMC,IAAI8E,GAAG,KAAK/E,CAAC;AACnB,SAAOC,EAAE,SAAS,QAAQ,KAAK,CAACA,EAAE,SAAS,KAAK;AAClD;AACA,SAASgF,GAAGjF,GAAG;AACb,MAAIC,IAAI,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAS,UAAU,CAAC,IAAI,CAAA;AACzE,MAAI,CAAC+E,GAAEhF,CAAC;AACN,UAAM,IAAI,UAAU,wBAAwB;AAC9C,MAAIA,EAAE,WAAW;AACf,UAAM,IAAI,UAAU,yBAAyB;AAC/C,MAAI,IAAIC,EAAE,WAAWG,IAAI,MAAM,SAAS,IAAI,GAAGG,IAAIN,EAAE,SAAS4B,IAAItB,MAAM,SAASP,EAAE,SAASO;AAC5F,MAAIH,IAAI,KAAKA,KAAKJ,EAAE,UAAU,CAAC,OAAO,UAAUI,CAAC;AAC/C,UAAM,IAAI,MAAM,0DAA0D;AAC5E,MAAIyB,KAAKzB,KAAKyB,IAAI7B,EAAE,UAAU,CAAC,OAAO,UAAU6B,CAAC;AAC/C,UAAM,IAAI,MAAM,+EAA+E;AACjG,WAAS,IAAI7B,EAAEI,CAAC,GAAG,IAAIA,IAAI,GAAG,IAAIyB,GAAG;AACnC,IAAA7B,EAAE,CAAC,IAAI,MAAM,IAAIA,EAAE,CAAC;AACtB,SAAO;AACT;AACA,SAASkF,GAAGlF,GAAG;AACb,MAAIC,IAAI,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAS,UAAU,CAAC,IAAI,CAAA;AACzE,MAAI,CAAC+E,GAAEhF,CAAC;AACN,UAAM,IAAI,UAAU,wBAAwB;AAC9C,MAAIA,EAAE,WAAW;AACf,UAAM,IAAI,UAAU,yBAAyB;AAC/C,MAAI,IAAIC,EAAE,WAAWG,IAAI,MAAM,SAAS,IAAI,GAAGG,IAAIN,EAAE,SAAS4B,IAAItB,MAAM,SAASP,EAAE,SAASO;AAC5F,MAAIH,IAAI,KAAKA,KAAKJ,EAAE,UAAU,CAAC,OAAO,UAAUI,CAAC;AAC/C,UAAM,IAAI,MAAM,0DAA0D;AAC5E,MAAIyB,KAAKzB,KAAKyB,IAAI7B,EAAE,UAAU,CAAC,OAAO,UAAU6B,CAAC;AAC/C,UAAM,IAAI,MAAM,+EAA+E;AACjG,WAAS,IAAI7B,EAAEI,CAAC,GAAG,IAAIA,IAAI,GAAG,IAAIyB,GAAG;AACnC,IAAA7B,EAAE,CAAC,IAAI,MAAM,IAAIA,EAAE,CAAC;AACtB,SAAO;AACT;AACA,SAASmF,GAAGnF,GAAG;AACb,MAAIC,IAAI,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAS,UAAU,CAAC,IAAI,CAAA;AACzE,MAAI+E,GAAEhF,CAAC;AACL,QAAIA,EAAE,WAAW;AACf,YAAM,IAAI,UAAU,yBAAyB;AAAA;AAE/C,UAAM,IAAI,UAAU,wBAAwB;AAC9C,MAAI;AACJ,MAAIC,EAAE,WAAW,QAAQ;AACvB,QAAI,CAAC+E,GAAE/E,EAAE,MAAM;AACb,YAAM,IAAI,UAAU,6CAA6C;AACnE,QAAIA,EAAE;AAAA,EACP;AACC,QAAI,IAAI,MAAMD,EAAE,MAAM;AACxB,MAAII,IAAI8E,GAAGlF,CAAC,GAAGO,IAAI0E,GAAGjF,CAAC;AACvB,MAAII,MAAMG;AACR,UAAM,IAAI,WAAW,6EAA6E;AACpG,MAAIsB,IAAI5B,EAAE,KAAK,IAAI4B,MAAM,SAAS5B,EAAE,aAAaG,IAAI,IAAIyB,GAAG,IAAI5B,EAAE,KAAKiC,IAAI,MAAM,SAASjC,EAAE,aAAaM,IAAI,IAAI;AACjH,MAAI,KAAK2B;AACP,UAAM,IAAI,WAAW,4CAA4C;AACnE,WAASC,KAAKD,IAAI,MAAM3B,IAAIH,IAAI,IAAI,GAAG,IAAIJ,EAAE,QAAQ;AACnD,MAAE,CAAC,KAAKA,EAAE,CAAC,IAAII,KAAK+B,IAAI;AAC1B,SAAO;AACT;AACA,MAAMiD,KAAK,IAAI,OAAO,CAAC,GAAGC,KAAK,IAAI,OAAO,CAAC;AAC3C,SAASC,KAAK;AACZ,SAAOC,GAAG,IAAI;AAChB;AACA,SAASA,GAAGvF,GAAGC,IAAI,IAAI;AACrB,QAAM;AAAA,IACJ,SAAS,IAAI;AAAA,IACb,YAAYG,IAAI;AAAA,IAChB,YAAYG,IAAI;AAAA,IAChB,UAAUsB,IAAI;AAAA,EACf,IAAG5B;AACJ,SAAO,GAAGD,EAAE,YAAY,IAAI;AAAA,EAC5BoF,EAAE;AAAA,EACFC,EAAE,GAAGG,GAAGxF,GAAG,GAAGI,GAAGG,GAAGsB,CAAC,CAAC;AAAA,EACtBuD,EAAE;AAAA,EACFA,EAAE,SAASpF,EAAE,IAAI;AAAA,EACjBoF,EAAE,YAAYpF,EAAE,OAAO;AAAA;AAEzB;AACA,SAASwF,GAAGxF,GAAGC,GAAG,GAAGG,GAAGG,GAAG;AACzB,QAAM,EAAE,MAAMsB,GAAG,SAAS,EAAC,IAAK7B,GAAG,IAAI,KAAK,IAAI6B,GAAG5B,CAAC,GAAGiC,IAAI,KAAK,IAAI,GAAG,CAAC,GAAGC,IAAI;AAC/E,MAAI5B,MAAM,QAAQ;AAChB,IAAAA,IAAI;AACJ;AACE,eAAS,IAAI,GAAG,IAAI,GAAG;AACrB,iBAAS,IAAI,GAAG,IAAI2B,GAAG;AACrB,cAAIlC,EAAE,IAAI,GAAG,CAAC,IAAI,GAAG;AACnB,YAAAO,IAAI;AACJ,kBAAM;AAAA,UACP;AAAA,EACR;AACD,WAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,QAAI,IAAI,CAAA;AACR,aAAS6B,IAAI,GAAGA,IAAIF,GAAGE;AACrB,QAAE,KAAKqD,GAAGzF,EAAE,IAAI,GAAGoC,CAAC,GAAGhC,GAAGG,CAAC,CAAC;AAC9B,IAAA4B,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,CAAC,EAAE;AAAA,EACxB;AACD,SAAOD,MAAM,MAAMC,EAAEA,EAAE,SAAS,CAAC,KAAK,QAAQ,IAAI,CAAC,kBAAkB,MAAMN,KAAKM,EAAE,KAAK,OAAON,IAAI5B,CAAC,YAAY,GAAGkC,EAAE,KAAK;AAAA,EACzHkD,EAAE,EAAE;AACN;AACA,SAASI,GAAGzF,GAAGC,GAAG,GAAG;AACnB,UAAQD,KAAK,KAAK,IAAI,IAAI0F,GAAG1F,GAAGC,IAAI,CAAC,CAAC,KAAKyF,GAAG1F,GAAGC,CAAC,GAAG,OAAOA,CAAC;AAC/D;AACA,SAASyF,GAAG1F,GAAGC,GAAG;AAChB,MAAI,IAAID,EAAE;AACV,MAAI,EAAE,UAAUC;AACd,WAAO;AACT,MAAIG,IAAIJ,EAAE,QAAQC,CAAC;AACnB,MAAIG,EAAE,SAASH,MAAMG,IAAIJ,EAAE,QAAQ,KAAK,IAAI,GAAGC,KAAKG,EAAE,SAASH,EAAE,CAAC,IAAIG,EAAE,UAAUH,KAAK,CAACG,EAAE,WAAW,OAAO,KAAK,CAACA,EAAE,WAAW,QAAQ;AACrI,WAAOA;AACT,MAAIG,IAAIP,EAAE,cAAcC,CAAC;AACzB,SAAOM,EAAE,SAASN,MAAMM,IAAIP,EAAE,cAAc,KAAK,IAAI,GAAGC,KAAKM,EAAE,SAASN,EAAE,CAAC,IAAIM,EAAE,MAAM,CAAC;AAC1F;AACA,SAASoF,GAAG3F,GAAGC,GAAG;AAChB,EAAAD,EAAE,UAAU,MAAM,SAASI,GAAG;AAC5B,WAAO,OAAOA,KAAK,WAAW,KAAK,KAAKA,CAAC,IAAI,KAAK,KAAKA,CAAC;AAAA,EACzD,GAAEJ,EAAE,UAAU,OAAO,SAASI,GAAG;AAChC,aAAS,IAAI,GAAG,IAAI,KAAK,MAAM;AAC7B,eAASyB,IAAI,GAAGA,IAAI,KAAK,SAASA;AAChC,aAAK,IAAI,GAAGA,GAAG,KAAK,IAAI,GAAGA,CAAC,IAAIzB,CAAC;AACrC,WAAO;AAAA,EACR,GAAEJ,EAAE,UAAU,OAAO,SAASI,GAAG;AAChC,QAAIA,IAAIH,EAAE,YAAYG,CAAC,GAAG,KAAK,SAASA,EAAE,QAAQ,KAAK,YAAYA,EAAE;AACnE,YAAM,IAAI,WAAW,mCAAmC;AAC1D,aAAS,IAAI,GAAG,IAAI,KAAK,MAAM;AAC7B,eAASyB,IAAI,GAAGA,IAAI,KAAK,SAASA;AAChC,aAAK,IAAI,GAAGA,GAAG,KAAK,IAAI,GAAGA,CAAC,IAAIzB,EAAE,IAAI,GAAGyB,CAAC,CAAC;AAC/C,WAAO;AAAA,EACR,GAAE7B,EAAE,MAAM,SAASI,GAAG,GAAG;AACxB,WAAO,IAAIH,EAAEG,CAAC,EAAE,IAAI,CAAC;AAAA,EACtB,GAAEJ,EAAE,UAAU,MAAM,SAASI,GAAG;AAC/B,WAAO,OAAOA,KAAK,WAAW,KAAK,KAAKA,CAAC,IAAI,KAAK,KAAKA,CAAC;AAAA,EACzD,GAAEJ,EAAE,UAAU,OAAO,SAASI,GAAG;AAChC,aAAS,IAAI,GAAG,IAAI,KAAK,MAAM;AAC7B,eAASyB,IAAI,GAAGA,IAAI,KAAK,SAASA;AAChC,aAAK,IAAI,GAAGA,GAAG,KAAK,IAAI,GAAGA,CAAC,IAAIzB,CAAC;AACrC,WAAO;AAAA,EACR,GAAEJ,EAAE,UAAU,OAAO,SAASI,GAAG;AAChC,QAAIA,IAAIH,EAAE,YAAYG,CAAC,GAAG,KAAK,SAASA,EAAE,QAAQ,KAAK,YAAYA,EAAE;AACnE,YAAM,IAAI,WAAW,mCAAmC;AAC1D,aAAS,IAAI,GAAG,IAAI,KAAK,MAAM;AAC7B,eAASyB,IAAI,GAAGA,IAAI,KAAK,SAASA;AAChC,aAAK,IAAI,GAAGA,GAAG,KAAK,IAAI,GAAGA,CAAC,IAAIzB,EAAE,IAAI,GAAGyB,CAAC,CAAC;AAC/C,WAAO;AAAA,EACR,GAAE7B,EAAE,MAAM,SAASI,GAAG,GAAG;AACxB,WAAO,IAAIH,EAAEG,CAAC,EAAE,IAAI,CAAC;AAAA,EACtB,GAAEJ,EAAE,UAAU,WAAWA,EAAE,UAAU,KAAKA,EAAE,UAAU,YAAYA,EAAE,UAAU,MAAMA,EAAE,UAAU,YAAYA,EAAE,UAAU,MAAMA,EAAE,WAAWA,EAAE,KAAKA,EAAE,UAAU,MAAM,SAASI,GAAG;AAC/K,WAAO,OAAOA,KAAK,WAAW,KAAK,KAAKA,CAAC,IAAI,KAAK,KAAKA,CAAC;AAAA,EACzD,GAAEJ,EAAE,UAAU,OAAO,SAASI,GAAG;AAChC,aAAS,IAAI,GAAG,IAAI,KAAK,MAAM;AAC7B,eAASyB,IAAI,GAAGA,IAAI,KAAK,SAASA;AAChC,aAAK,IAAI,GAAGA,GAAG,KAAK,IAAI,GAAGA,CAAC,IAAIzB,CAAC;AACrC,WAAO;AAAA,EACR,GAAEJ,EAAE,UAAU,OAAO,SAASI,GAAG;AAChC,QAAIA,IAAIH,EAAE,YAAYG,CAAC,GAAG,KAAK,SAASA,EAAE,QAAQ,KAAK,YAAYA,EAAE;AACnE,YAAM,IAAI,WAAW,mCAAmC;AAC1D,aAAS,IAAI,GAAG,IAAI,KAAK,MAAM;AAC7B,eAASyB,IAAI,GAAGA,IAAI,KAAK,SAASA;AAChC,aAAK,IAAI,GAAGA,GAAG,KAAK,IAAI,GAAGA,CAAC,IAAIzB,EAAE,IAAI,GAAGyB,CAAC,CAAC;AAC/C,WAAO;AAAA,EACR,GAAE7B,EAAE,MAAM,SAASI,GAAG,GAAG;AACxB,WAAO,IAAIH,EAAEG,CAAC,EAAE,IAAI,CAAC;AAAA,EACtB,GAAEJ,EAAE,UAAU,WAAWA,EAAE,UAAU,KAAKA,EAAE,UAAU,YAAYA,EAAE,UAAU,MAAMA,EAAE,UAAU,YAAYA,EAAE,UAAU,MAAMA,EAAE,WAAWA,EAAE,KAAKA,EAAE,UAAU,MAAM,SAASI,GAAG;AAC/K,WAAO,OAAOA,KAAK,WAAW,KAAK,KAAKA,CAAC,IAAI,KAAK,KAAKA,CAAC;AAAA,EACzD,GAAEJ,EAAE,UAAU,OAAO,SAASI,GAAG;AAChC,aAAS,IAAI,GAAG,IAAI,KAAK,MAAM;AAC7B,eAASyB,IAAI,GAAGA,IAAI,KAAK,SAASA;AAChC,aAAK,IAAI,GAAGA,GAAG,KAAK,IAAI,GAAGA,CAAC,IAAIzB,CAAC;AACrC,WAAO;AAAA,EACR,GAAEJ,EAAE,UAAU,OAAO,SAASI,GAAG;AAChC,QAAIA,IAAIH,EAAE,YAAYG,CAAC,GAAG,KAAK,SAASA,EAAE,QAAQ,KAAK,YAAYA,EAAE;AACnE,YAAM,IAAI,WAAW,mCAAmC;AAC1D,aAAS,IAAI,GAAG,IAAI,KAAK,MAAM;AAC7B,eAASyB,IAAI,GAAGA,IAAI,KAAK,SAASA;AAChC,aAAK,IAAI,GAAGA,GAAG,KAAK,IAAI,GAAGA,CAAC,IAAIzB,EAAE,IAAI,GAAGyB,CAAC,CAAC;AAC/C,WAAO;AAAA,EACR,GAAE7B,EAAE,MAAM,SAASI,GAAG,GAAG;AACxB,WAAO,IAAIH,EAAEG,CAAC,EAAE,IAAI,CAAC;AAAA,EACtB,GAAEJ,EAAE,UAAU,SAASA,EAAE,UAAU,KAAKA,EAAE,UAAU,UAAUA,EAAE,UAAU,MAAMA,EAAE,UAAU,UAAUA,EAAE,UAAU,MAAMA,EAAE,SAASA,EAAE,KAAKA,EAAE,UAAU,MAAM,SAASI,GAAG;AACvK,WAAO,OAAOA,KAAK,WAAW,KAAK,KAAKA,CAAC,IAAI,KAAK,KAAKA,CAAC;AAAA,EACzD,GAAEJ,EAAE,UAAU,OAAO,SAASI,GAAG;AAChC,aAAS,IAAI,GAAG,IAAI,KAAK,MAAM;AAC7B,eAASyB,IAAI,GAAGA,IAAI,KAAK,SAASA;AAChC,aAAK,IAAI,GAAGA,GAAG,KAAK,IAAI,GAAGA,CAAC,IAAIzB,CAAC;AACrC,WAAO;AAAA,EACR,GAAEJ,EAAE,UAAU,OAAO,SAASI,GAAG;AAChC,QAAIA,IAAIH,EAAE,YAAYG,CAAC,GAAG,KAAK,SAASA,EAAE,QAAQ,KAAK,YAAYA,EAAE;AACnE,YAAM,IAAI,WAAW,mCAAmC;AAC1D,aAAS,IAAI,GAAG,IAAI,KAAK,MAAM;AAC7B,eAASyB,IAAI,GAAGA,IAAI,KAAK,SAASA;AAChC,aAAK,IAAI,GAAGA,GAAG,KAAK,IAAI,GAAGA,CAAC,IAAIzB,EAAE,IAAI,GAAGyB,CAAC,CAAC;AAC/C,WAAO;AAAA,EACR,GAAE7B,EAAE,MAAM,SAASI,GAAG,GAAG;AACxB,WAAO,IAAIH,EAAEG,CAAC,EAAE,IAAI,CAAC;AAAA,EACtB,GAAEJ,EAAE,UAAU,UAAUA,EAAE,UAAU,KAAKA,EAAE,UAAU,WAAWA,EAAE,UAAU,MAAMA,EAAE,UAAU,WAAWA,EAAE,UAAU,MAAMA,EAAE,UAAUA,EAAE,KAAKA,EAAE,UAAU,MAAM,SAASI,GAAG;AAC3K,WAAO,OAAOA,KAAK,WAAW,KAAK,KAAKA,CAAC,IAAI,KAAK,KAAKA,CAAC;AAAA,EACzD,GAAEJ,EAAE,UAAU,OAAO,SAASI,GAAG;AAChC,aAAS,IAAI,GAAG,IAAI,KAAK,MAAM;AAC7B,eAASyB,IAAI,GAAGA,IAAI,KAAK,SAASA;AAChC,aAAK,IAAI,GAAGA,GAAG,KAAK,IAAI,GAAGA,CAAC,IAAIzB,CAAC;AACrC,WAAO;AAAA,EACR,GAAEJ,EAAE,UAAU,OAAO,SAASI,GAAG;AAChC,QAAIA,IAAIH,EAAE,YAAYG,CAAC,GAAG,KAAK,SAASA,EAAE,QAAQ,KAAK,YAAYA,EAAE;AACnE,YAAM,IAAI,WAAW,mCAAmC;AAC1D,aAAS,IAAI,GAAG,IAAI,KAAK,MAAM;AAC7B,eAASyB,IAAI,GAAGA,IAAI,KAAK,SAASA;AAChC,aAAK,IAAI,GAAGA,GAAG,KAAK,IAAI,GAAGA,CAAC,IAAIzB,EAAE,IAAI,GAAGyB,CAAC,CAAC;AAC/C,WAAO;AAAA,EACR,GAAE7B,EAAE,MAAM,SAASI,GAAG,GAAG;AACxB,WAAO,IAAIH,EAAEG,CAAC,EAAE,IAAI,CAAC;AAAA,EACtB,GAAEJ,EAAE,UAAU,KAAK,SAASI,GAAG;AAC9B,WAAO,OAAOA,KAAK,WAAW,KAAK,IAAIA,CAAC,IAAI,KAAK,IAAIA,CAAC;AAAA,EACvD,GAAEJ,EAAE,UAAU,MAAM,SAASI,GAAG;AAC/B,aAAS,IAAI,GAAG,IAAI,KAAK,MAAM;AAC7B,eAASyB,IAAI,GAAGA,IAAI,KAAK,SAASA;AAChC,aAAK,IAAI,GAAGA,GAAG,KAAK,IAAI,GAAGA,CAAC,IAAIzB,CAAC;AACrC,WAAO;AAAA,EACR,GAAEJ,EAAE,UAAU,MAAM,SAASI,GAAG;AAC/B,QAAIA,IAAIH,EAAE,YAAYG,CAAC,GAAG,KAAK,SAASA,EAAE,QAAQ,KAAK,YAAYA,EAAE;AACnE,YAAM,IAAI,WAAW,mCAAmC;AAC1D,aAAS,IAAI,GAAG,IAAI,KAAK,MAAM;AAC7B,eAASyB,IAAI,GAAGA,IAAI,KAAK,SAASA;AAChC,aAAK,IAAI,GAAGA,GAAG,KAAK,IAAI,GAAGA,CAAC,IAAIzB,EAAE,IAAI,GAAGyB,CAAC,CAAC;AAC/C,WAAO;AAAA,EACR,GAAE7B,EAAE,KAAK,SAASI,GAAG,GAAG;AACvB,WAAO,IAAIH,EAAEG,CAAC,EAAE,GAAG,CAAC;AAAA,EACrB,GAAEJ,EAAE,UAAU,MAAM,SAASI,GAAG;AAC/B,WAAO,OAAOA,KAAK,WAAW,KAAK,KAAKA,CAAC,IAAI,KAAK,KAAKA,CAAC;AAAA,EACzD,GAAEJ,EAAE,UAAU,OAAO,SAASI,GAAG;AAChC,aAAS,IAAI,GAAG,IAAI,KAAK,MAAM;AAC7B,eAASyB,IAAI,GAAGA,IAAI,KAAK,SAASA;AAChC,aAAK,IAAI,GAAGA,GAAG,KAAK,IAAI,GAAGA,CAAC,IAAIzB,CAAC;AACrC,WAAO;AAAA,EACR,GAAEJ,EAAE,UAAU,OAAO,SAASI,GAAG;AAChC,QAAIA,IAAIH,EAAE,YAAYG,CAAC,GAAG,KAAK,SAASA,EAAE,QAAQ,KAAK,YAAYA,EAAE;AACnE,YAAM,IAAI,WAAW,mCAAmC;AAC1D,aAAS,IAAI,GAAG,IAAI,KAAK,MAAM;AAC7B,eAASyB,IAAI,GAAGA,IAAI,KAAK,SAASA;AAChC,aAAK,IAAI,GAAGA,GAAG,KAAK,IAAI,GAAGA,CAAC,IAAIzB,EAAE,IAAI,GAAGyB,CAAC,CAAC;AAC/C,WAAO;AAAA,EACR,GAAE7B,EAAE,MAAM,SAASI,GAAG,GAAG;AACxB,WAAO,IAAIH,EAAEG,CAAC,EAAE,IAAI,CAAC;AAAA,EACtB,GAAEJ,EAAE,UAAU,YAAY,SAASI,GAAG;AACrC,WAAO,OAAOA,KAAK,WAAW,KAAK,WAAWA,CAAC,IAAI,KAAK,WAAWA,CAAC;AAAA,EACrE,GAAEJ,EAAE,UAAU,aAAa,SAASI,GAAG;AACtC,aAAS,IAAI,GAAG,IAAI,KAAK,MAAM;AAC7B,eAASyB,IAAI,GAAGA,IAAI,KAAK,SAASA;AAChC,aAAK,IAAI,GAAGA,GAAG,KAAK,IAAI,GAAGA,CAAC,KAAKzB,CAAC;AACtC,WAAO;AAAA,EACR,GAAEJ,EAAE,UAAU,aAAa,SAASI,GAAG;AACtC,QAAIA,IAAIH,EAAE,YAAYG,CAAC,GAAG,KAAK,SAASA,EAAE,QAAQ,KAAK,YAAYA,EAAE;AACnE,YAAM,IAAI,WAAW,mCAAmC;AAC1D,aAAS,IAAI,GAAG,IAAI,KAAK,MAAM;AAC7B,eAASyB,IAAI,GAAGA,IAAI,KAAK,SAASA;AAChC,aAAK,IAAI,GAAGA,GAAG,KAAK,IAAI,GAAGA,CAAC,KAAKzB,EAAE,IAAI,GAAGyB,CAAC,CAAC;AAChD,WAAO;AAAA,EACR,GAAE7B,EAAE,YAAY,SAASI,GAAG,GAAG;AAC9B,WAAO,IAAIH,EAAEG,CAAC,EAAE,UAAU,CAAC;AAAA,EAC5B,GAAEJ,EAAE,UAAU,4BAA4B,SAASI,GAAG;AACrD,WAAO,OAAOA,KAAK,WAAW,KAAK,2BAA2BA,CAAC,IAAI,KAAK,2BAA2BA,CAAC;AAAA,EACrG,GAAEJ,EAAE,UAAU,6BAA6B,SAASI,GAAG;AACtD,aAAS,IAAI,GAAG,IAAI,KAAK,MAAM;AAC7B,eAASyB,IAAI,GAAGA,IAAI,KAAK,SAASA;AAChC,aAAK,IAAI,GAAGA,GAAG,KAAK,IAAI,GAAGA,CAAC,KAAKzB,CAAC;AACtC,WAAO;AAAA,EACR,GAAEJ,EAAE,UAAU,6BAA6B,SAASI,GAAG;AACtD,QAAIA,IAAIH,EAAE,YAAYG,CAAC,GAAG,KAAK,SAASA,EAAE,QAAQ,KAAK,YAAYA,EAAE;AACnE,YAAM,IAAI,WAAW,mCAAmC;AAC1D,aAAS,IAAI,GAAG,IAAI,KAAK,MAAM;AAC7B,eAASyB,IAAI,GAAGA,IAAI,KAAK,SAASA;AAChC,aAAK,IAAI,GAAGA,GAAG,KAAK,IAAI,GAAGA,CAAC,KAAKzB,EAAE,IAAI,GAAGyB,CAAC,CAAC;AAChD,WAAO;AAAA,EACR,GAAE7B,EAAE,4BAA4B,SAASI,GAAG,GAAG;AAC9C,WAAO,IAAIH,EAAEG,CAAC,EAAE,0BAA0B,CAAC;AAAA,EAC5C,GAAEJ,EAAE,UAAU,aAAa,SAASI,GAAG;AACtC,WAAO,OAAOA,KAAK,WAAW,KAAK,YAAYA,CAAC,IAAI,KAAK,YAAYA,CAAC;AAAA,EACvE,GAAEJ,EAAE,UAAU,cAAc,SAASI,GAAG;AACvC,aAAS,IAAI,GAAG,IAAI,KAAK,MAAM;AAC7B,eAASyB,IAAI,GAAGA,IAAI,KAAK,SAASA;AAChC,aAAK,IAAI,GAAGA,GAAG,KAAK,IAAI,GAAGA,CAAC,MAAMzB,CAAC;AACvC,WAAO;AAAA,EACR,GAAEJ,EAAE,UAAU,cAAc,SAASI,GAAG;AACvC,QAAIA,IAAIH,EAAE,YAAYG,CAAC,GAAG,KAAK,SAASA,EAAE,QAAQ,KAAK,YAAYA,EAAE;AACnE,YAAM,IAAI,WAAW,mCAAmC;AAC1D,aAAS,IAAI,GAAG,IAAI,KAAK,MAAM;AAC7B,eAASyB,IAAI,GAAGA,IAAI,KAAK,SAASA;AAChC,aAAK,IAAI,GAAGA,GAAG,KAAK,IAAI,GAAGA,CAAC,MAAMzB,EAAE,IAAI,GAAGyB,CAAC,CAAC;AACjD,WAAO;AAAA,EACR,GAAE7B,EAAE,aAAa,SAASI,GAAG,GAAG;AAC/B,WAAO,IAAIH,EAAEG,CAAC,EAAE,WAAW,CAAC;AAAA,EAC7B,GAAEJ,EAAE,UAAU,qBAAqBA,EAAE,UAAU,YAAYA,EAAE,UAAU,sBAAsBA,EAAE,UAAU,aAAaA,EAAE,UAAU,sBAAsBA,EAAE,UAAU,aAAaA,EAAE,qBAAqBA,EAAE,YAAYA,EAAE,UAAU,MAAM,WAAW;AAClP,aAASI,IAAI,GAAGA,IAAI,KAAK,MAAMA;AAC7B,eAAS,IAAI,GAAG,IAAI,KAAK,SAAS;AAChC,aAAK,IAAIA,GAAG,GAAG,CAAC,KAAK,IAAIA,GAAG,CAAC,CAAC;AAClC,WAAO;AAAA,EACX,GAAKJ,EAAE,MAAM,SAASI,GAAG;AACrB,WAAO,IAAIH,EAAEG,CAAC,EAAE,IAAG;AAAA,EACvB,GAAKJ,EAAE,UAAU,MAAM,WAAW;AAC9B,aAASI,IAAI,GAAGA,IAAI,KAAK,MAAMA;AAC7B,eAAS,IAAI,GAAG,IAAI,KAAK,SAAS;AAChC,aAAK,IAAIA,GAAG,GAAG,KAAK,IAAI,KAAK,IAAIA,GAAG,CAAC,CAAC,CAAC;AAC3C,WAAO;AAAA,EACX,GAAKJ,EAAE,MAAM,SAASI,GAAG;AACrB,WAAO,IAAIH,EAAEG,CAAC,EAAE,IAAG;AAAA,EACvB,GAAKJ,EAAE,UAAU,OAAO,WAAW;AAC/B,aAASI,IAAI,GAAGA,IAAI,KAAK,MAAMA;AAC7B,eAAS,IAAI,GAAG,IAAI,KAAK,SAAS;AAChC,aAAK,IAAIA,GAAG,GAAG,KAAK,KAAK,KAAK,IAAIA,GAAG,CAAC,CAAC,CAAC;AAC5C,WAAO;AAAA,EACX,GAAKJ,EAAE,OAAO,SAASI,GAAG;AACtB,WAAO,IAAIH,EAAEG,CAAC,EAAE,KAAI;AAAA,EACxB,GAAKJ,EAAE,UAAU,QAAQ,WAAW;AAChC,aAASI,IAAI,GAAGA,IAAI,KAAK,MAAMA;AAC7B,eAAS,IAAI,GAAG,IAAI,KAAK,SAAS;AAChC,aAAK,IAAIA,GAAG,GAAG,KAAK,MAAM,KAAK,IAAIA,GAAG,CAAC,CAAC,CAAC;AAC7C,WAAO;AAAA,EACX,GAAKJ,EAAE,QAAQ,SAASI,GAAG;AACvB,WAAO,IAAIH,EAAEG,CAAC,EAAE,MAAK;AAAA,EACzB,GAAKJ,EAAE,UAAU,OAAO,WAAW;AAC/B,aAASI,IAAI,GAAGA,IAAI,KAAK,MAAMA;AAC7B,eAAS,IAAI,GAAG,IAAI,KAAK,SAAS;AAChC,aAAK,IAAIA,GAAG,GAAG,KAAK,KAAK,KAAK,IAAIA,GAAG,CAAC,CAAC,CAAC;AAC5C,WAAO;AAAA,EACX,GAAKJ,EAAE,OAAO,SAASI,GAAG;AACtB,WAAO,IAAIH,EAAEG,CAAC,EAAE,KAAI;AAAA,EACxB,GAAKJ,EAAE,UAAU,QAAQ,WAAW;AAChC,aAASI,IAAI,GAAGA,IAAI,KAAK,MAAMA;AAC7B,eAAS,IAAI,GAAG,IAAI,KAAK,SAAS;AAChC,aAAK,IAAIA,GAAG,GAAG,KAAK,MAAM,KAAK,IAAIA,GAAG,CAAC,CAAC,CAAC;AAC7C,WAAO;AAAA,EACX,GAAKJ,EAAE,QAAQ,SAASI,GAAG;AACvB,WAAO,IAAIH,EAAEG,CAAC,EAAE,MAAK;AAAA,EACzB,GAAKJ,EAAE,UAAU,OAAO,WAAW;AAC/B,aAASI,IAAI,GAAGA,IAAI,KAAK,MAAMA;AAC7B,eAAS,IAAI,GAAG,IAAI,KAAK,SAAS;AAChC,aAAK,IAAIA,GAAG,GAAG,KAAK,KAAK,KAAK,IAAIA,GAAG,CAAC,CAAC,CAAC;AAC5C,WAAO;AAAA,EACX,GAAKJ,EAAE,OAAO,SAASI,GAAG;AACtB,WAAO,IAAIH,EAAEG,CAAC,EAAE,KAAI;AAAA,EACxB,GAAKJ,EAAE,UAAU,QAAQ,WAAW;AAChC,aAASI,IAAI,GAAGA,IAAI,KAAK,MAAMA;AAC7B,eAAS,IAAI,GAAG,IAAI,KAAK,SAAS;AAChC,aAAK,IAAIA,GAAG,GAAG,KAAK,MAAM,KAAK,IAAIA,GAAG,CAAC,CAAC,CAAC;AAC7C,WAAO;AAAA,EACX,GAAKJ,EAAE,QAAQ,SAASI,GAAG;AACvB,WAAO,IAAIH,EAAEG,CAAC,EAAE,MAAK;AAAA,EACzB,GAAKJ,EAAE,UAAU,OAAO,WAAW;AAC/B,aAASI,IAAI,GAAGA,IAAI,KAAK,MAAMA;AAC7B,eAAS,IAAI,GAAG,IAAI,KAAK,SAAS;AAChC,aAAK,IAAIA,GAAG,GAAG,KAAK,KAAK,KAAK,IAAIA,GAAG,CAAC,CAAC,CAAC;AAC5C,WAAO;AAAA,EACX,GAAKJ,EAAE,OAAO,SAASI,GAAG;AACtB,WAAO,IAAIH,EAAEG,CAAC,EAAE,KAAI;AAAA,EACxB,GAAKJ,EAAE,UAAU,OAAO,WAAW;AAC/B,aAASI,IAAI,GAAGA,IAAI,KAAK,MAAMA;AAC7B,eAAS,IAAI,GAAG,IAAI,KAAK,SAAS;AAChC,aAAK,IAAIA,GAAG,GAAG,KAAK,KAAK,KAAK,IAAIA,GAAG,CAAC,CAAC,CAAC;AAC5C,WAAO;AAAA,EACX,GAAKJ,EAAE,OAAO,SAASI,GAAG;AACtB,WAAO,IAAIH,EAAEG,CAAC,EAAE,KAAI;AAAA,EACxB,GAAKJ,EAAE,UAAU,QAAQ,WAAW;AAChC,aAASI,IAAI,GAAGA,IAAI,KAAK,MAAMA;AAC7B,eAAS,IAAI,GAAG,IAAI,KAAK,SAAS;AAChC,aAAK,IAAIA,GAAG,GAAG,KAAK,MAAM,KAAK,IAAIA,GAAG,CAAC,CAAC,CAAC;AAC7C,WAAO;AAAA,EACX,GAAKJ,EAAE,QAAQ,SAASI,GAAG;AACvB,WAAO,IAAIH,EAAEG,CAAC,EAAE,MAAK;AAAA,EACzB,GAAKJ,EAAE,UAAU,MAAM,WAAW;AAC9B,aAASI,IAAI,GAAGA,IAAI,KAAK,MAAMA;AAC7B,eAAS,IAAI,GAAG,IAAI,KAAK,SAAS;AAChC,aAAK,IAAIA,GAAG,GAAG,KAAK,IAAI,KAAK,IAAIA,GAAG,CAAC,CAAC,CAAC;AAC3C,WAAO;AAAA,EACX,GAAKJ,EAAE,MAAM,SAASI,GAAG;AACrB,WAAO,IAAIH,EAAEG,CAAC,EAAE,IAAG;AAAA,EACvB,GAAKJ,EAAE,UAAU,OAAO,WAAW;AAC/B,aAASI,IAAI,GAAGA,IAAI,KAAK,MAAMA;AAC7B,eAAS,IAAI,GAAG,IAAI,KAAK,SAAS;AAChC,aAAK,IAAIA,GAAG,GAAG,KAAK,KAAK,KAAK,IAAIA,GAAG,CAAC,CAAC,CAAC;AAC5C,WAAO;AAAA,EACX,GAAKJ,EAAE,OAAO,SAASI,GAAG;AACtB,WAAO,IAAIH,EAAEG,CAAC,EAAE,KAAI;AAAA,EACxB,GAAKJ,EAAE,UAAU,MAAM,WAAW;AAC9B,aAASI,IAAI,GAAGA,IAAI,KAAK,MAAMA;AAC7B,eAAS,IAAI,GAAG,IAAI,KAAK,SAAS;AAChC,aAAK,IAAIA,GAAG,GAAG,KAAK,IAAI,KAAK,IAAIA,GAAG,CAAC,CAAC,CAAC;AAC3C,WAAO;AAAA,EACX,GAAKJ,EAAE,MAAM,SAASI,GAAG;AACrB,WAAO,IAAIH,EAAEG,CAAC,EAAE,IAAG;AAAA,EACvB,GAAKJ,EAAE,UAAU,QAAQ,WAAW;AAChC,aAASI,IAAI,GAAGA,IAAI,KAAK,MAAMA;AAC7B,eAAS,IAAI,GAAG,IAAI,KAAK,SAAS;AAChC,aAAK,IAAIA,GAAG,GAAG,KAAK,MAAM,KAAK,IAAIA,GAAG,CAAC,CAAC,CAAC;AAC7C,WAAO;AAAA,EACX,GAAKJ,EAAE,QAAQ,SAASI,GAAG;AACvB,WAAO,IAAIH,EAAEG,CAAC,EAAE,MAAK;AAAA,EACzB,GAAKJ,EAAE,UAAU,QAAQ,WAAW;AAChC,aAASI,IAAI,GAAGA,IAAI,KAAK,MAAMA;AAC7B,eAAS,IAAI,GAAG,IAAI,KAAK,SAAS;AAChC,aAAK,IAAIA,GAAG,GAAG,KAAK,MAAM,KAAK,IAAIA,GAAG,CAAC,CAAC,CAAC;AAC7C,WAAO;AAAA,EACX,GAAKJ,EAAE,QAAQ,SAASI,GAAG;AACvB,WAAO,IAAIH,EAAEG,CAAC,EAAE,MAAK;AAAA,EACzB,GAAKJ,EAAE,UAAU,SAAS,WAAW;AACjC,aAASI,IAAI,GAAGA,IAAI,KAAK,MAAMA;AAC7B,eAAS,IAAI,GAAG,IAAI,KAAK,SAAS;AAChC,aAAK,IAAIA,GAAG,GAAG,KAAK,OAAO,KAAK,IAAIA,GAAG,CAAC,CAAC,CAAC;AAC9C,WAAO;AAAA,EACX,GAAKJ,EAAE,SAAS,SAASI,GAAG;AACxB,WAAO,IAAIH,EAAEG,CAAC,EAAE,OAAM;AAAA,EAC1B,GAAKJ,EAAE,UAAU,MAAM,WAAW;AAC9B,aAASI,IAAI,GAAGA,IAAI,KAAK,MAAMA;AAC7B,eAAS,IAAI,GAAG,IAAI,KAAK,SAAS;AAChC,aAAK,IAAIA,GAAG,GAAG,KAAK,IAAI,KAAK,IAAIA,GAAG,CAAC,CAAC,CAAC;AAC3C,WAAO;AAAA,EACX,GAAKJ,EAAE,MAAM,SAASI,GAAG;AACrB,WAAO,IAAIH,EAAEG,CAAC,EAAE,IAAG;AAAA,EACvB,GAAKJ,EAAE,UAAU,QAAQ,WAAW;AAChC,aAASI,IAAI,GAAGA,IAAI,KAAK,MAAMA;AAC7B,eAAS,IAAI,GAAG,IAAI,KAAK,SAAS;AAChC,aAAK,IAAIA,GAAG,GAAG,KAAK,MAAM,KAAK,IAAIA,GAAG,CAAC,CAAC,CAAC;AAC7C,WAAO;AAAA,EACX,GAAKJ,EAAE,QAAQ,SAASI,GAAG;AACvB,WAAO,IAAIH,EAAEG,CAAC,EAAE,MAAK;AAAA,EACzB,GAAKJ,EAAE,UAAU,QAAQ,WAAW;AAChC,aAASI,IAAI,GAAGA,IAAI,KAAK,MAAMA;AAC7B,eAAS,IAAI,GAAG,IAAI,KAAK,SAAS;AAChC,aAAK,IAAIA,GAAG,GAAG,KAAK,MAAM,KAAK,IAAIA,GAAG,CAAC,CAAC,CAAC;AAC7C,WAAO;AAAA,EACX,GAAKJ,EAAE,QAAQ,SAASI,GAAG;AACvB,WAAO,IAAIH,EAAEG,CAAC,EAAE,MAAK;AAAA,EACzB,GAAKJ,EAAE,UAAU,OAAO,WAAW;AAC/B,aAASI,IAAI,GAAGA,IAAI,KAAK,MAAMA;AAC7B,eAAS,IAAI,GAAG,IAAI,KAAK,SAAS;AAChC,aAAK,IAAIA,GAAG,GAAG,KAAK,KAAK,KAAK,IAAIA,GAAG,CAAC,CAAC,CAAC;AAC5C,WAAO;AAAA,EACX,GAAKJ,EAAE,OAAO,SAASI,GAAG;AACtB,WAAO,IAAIH,EAAEG,CAAC,EAAE,KAAI;AAAA,EACxB,GAAKJ,EAAE,UAAU,QAAQ,WAAW;AAChC,aAASI,IAAI,GAAGA,IAAI,KAAK,MAAMA;AAC7B,eAAS,IAAI,GAAG,IAAI,KAAK,SAAS;AAChC,aAAK,IAAIA,GAAG,GAAG,KAAK,MAAM,KAAK,IAAIA,GAAG,CAAC,CAAC,CAAC;AAC7C,WAAO;AAAA,EACX,GAAKJ,EAAE,QAAQ,SAASI,GAAG;AACvB,WAAO,IAAIH,EAAEG,CAAC,EAAE,MAAK;AAAA,EACzB,GAAKJ,EAAE,UAAU,OAAO,WAAW;AAC/B,aAASI,IAAI,GAAGA,IAAI,KAAK,MAAMA;AAC7B,eAAS,IAAI,GAAG,IAAI,KAAK,SAAS;AAChC,aAAK,IAAIA,GAAG,GAAG,KAAK,KAAK,KAAK,IAAIA,GAAG,CAAC,CAAC,CAAC;AAC5C,WAAO;AAAA,EACX,GAAKJ,EAAE,OAAO,SAASI,GAAG;AACtB,WAAO,IAAIH,EAAEG,CAAC,EAAE,KAAI;AAAA,EACxB,GAAKJ,EAAE,UAAU,MAAM,WAAW;AAC9B,aAASI,IAAI,GAAGA,IAAI,KAAK,MAAMA;AAC7B,eAAS,IAAI,GAAG,IAAI,KAAK,SAAS;AAChC,aAAK,IAAIA,GAAG,GAAG,KAAK,IAAI,KAAK,IAAIA,GAAG,CAAC,CAAC,CAAC;AAC3C,WAAO;AAAA,EACX,GAAKJ,EAAE,MAAM,SAASI,GAAG;AACrB,WAAO,IAAIH,EAAEG,CAAC,EAAE,IAAG;AAAA,EACvB,GAAKJ,EAAE,UAAU,OAAO,WAAW;AAC/B,aAASI,IAAI,GAAGA,IAAI,KAAK,MAAMA;AAC7B,eAAS,IAAI,GAAG,IAAI,KAAK,SAAS;AAChC,aAAK,IAAIA,GAAG,GAAG,KAAK,KAAK,KAAK,IAAIA,GAAG,CAAC,CAAC,CAAC;AAC5C,WAAO;AAAA,EACX,GAAKJ,EAAE,OAAO,SAASI,GAAG;AACtB,WAAO,IAAIH,EAAEG,CAAC,EAAE,KAAI;AAAA,EACxB,GAAKJ,EAAE,UAAU,OAAO,WAAW;AAC/B,aAASI,IAAI,GAAGA,IAAI,KAAK,MAAMA;AAC7B,eAAS,IAAI,GAAG,IAAI,KAAK,SAAS;AAChC,aAAK,IAAIA,GAAG,GAAG,KAAK,KAAK,KAAK,IAAIA,GAAG,CAAC,CAAC,CAAC;AAC5C,WAAO;AAAA,EACX,GAAKJ,EAAE,OAAO,SAASI,GAAG;AACtB,WAAO,IAAIH,EAAEG,CAAC,EAAE,KAAI;AAAA,EACxB,GAAKJ,EAAE,UAAU,MAAM,WAAW;AAC9B,aAASI,IAAI,GAAGA,IAAI,KAAK,MAAMA;AAC7B,eAAS,IAAI,GAAG,IAAI,KAAK,SAAS;AAChC,aAAK,IAAIA,GAAG,GAAG,KAAK,IAAI,KAAK,IAAIA,GAAG,CAAC,CAAC,CAAC;AAC3C,WAAO;AAAA,EACX,GAAKJ,EAAE,MAAM,SAASI,GAAG;AACrB,WAAO,IAAIH,EAAEG,CAAC,EAAE,IAAG;AAAA,EACvB,GAAKJ,EAAE,UAAU,OAAO,WAAW;AAC/B,aAASI,IAAI,GAAGA,IAAI,KAAK,MAAMA;AAC7B,eAAS,IAAI,GAAG,IAAI,KAAK,SAAS;AAChC,aAAK,IAAIA,GAAG,GAAG,KAAK,KAAK,KAAK,IAAIA,GAAG,CAAC,CAAC,CAAC;AAC5C,WAAO;AAAA,EACX,GAAKJ,EAAE,OAAO,SAASI,GAAG;AACtB,WAAO,IAAIH,EAAEG,CAAC,EAAE,KAAI;AAAA,EACxB,GAAKJ,EAAE,UAAU,QAAQ,WAAW;AAChC,aAASI,IAAI,GAAGA,IAAI,KAAK,MAAMA;AAC7B,eAAS,IAAI,GAAG,IAAI,KAAK,SAAS;AAChC,aAAK,IAAIA,GAAG,GAAG,KAAK,MAAM,KAAK,IAAIA,GAAG,CAAC,CAAC,CAAC;AAC7C,WAAO;AAAA,EACX,GAAKJ,EAAE,QAAQ,SAASI,GAAG;AACvB,WAAO,IAAIH,EAAEG,CAAC,EAAE,MAAK;AAAA,EACtB,GAAEJ,EAAE,MAAM,SAASI,GAAG,GAAG;AACxB,WAAO,IAAIH,EAAEG,CAAC,EAAE,IAAI,CAAC;AAAA,EACtB,GAAEJ,EAAE,UAAU,MAAM,SAASI,GAAG;AAC/B,WAAO,OAAOA,KAAK,WAAW,KAAK,KAAKA,CAAC,IAAI,KAAK,KAAKA,CAAC;AAAA,EACzD,GAAEJ,EAAE,UAAU,OAAO,SAASI,GAAG;AAChC,aAAS,IAAI,GAAG,IAAI,KAAK,MAAM;AAC7B,eAASyB,IAAI,GAAGA,IAAI,KAAK,SAASA;AAChC,aAAK,IAAI,GAAGA,GAAG,KAAK,IAAI,KAAK,IAAI,GAAGA,CAAC,GAAGzB,CAAC,CAAC;AAC9C,WAAO;AAAA,EACR,GAAEJ,EAAE,UAAU,OAAO,SAASI,GAAG;AAChC,QAAIA,IAAIH,EAAE,YAAYG,CAAC,GAAG,KAAK,SAASA,EAAE,QAAQ,KAAK,YAAYA,EAAE;AACnE,YAAM,IAAI,WAAW,mCAAmC;AAC1D,aAAS,IAAI,GAAG,IAAI,KAAK,MAAM;AAC7B,eAASyB,IAAI,GAAGA,IAAI,KAAK,SAASA;AAChC,aAAK,IAAI,GAAGA,GAAG,KAAK,IAAI,KAAK,IAAI,GAAGA,CAAC,GAAGzB,EAAE,IAAI,GAAGyB,CAAC,CAAC,CAAC;AACxD,WAAO;AAAA,EACX;AACA;AACA,SAAS+D,GAAE5F,GAAGC,GAAG,GAAG;AAClB,MAAIG,IAAI,IAAIJ,EAAE,OAAOA,EAAE,OAAO;AAC9B,MAAIC,IAAI,KAAKA,IAAIG;AACf,UAAM,IAAI,WAAW,wBAAwB;AACjD;AACA,SAASyF,GAAE7F,GAAGC,GAAG,GAAG;AAClB,MAAIG,IAAI,IAAIJ,EAAE,UAAUA,EAAE,UAAU;AACpC,MAAIC,IAAI,KAAKA,IAAIG;AACf,UAAM,IAAI,WAAW,2BAA2B;AACpD;AACA,SAAS0F,GAAG9F,GAAGC,GAAG;AAChB,MAAIA,EAAE,cAAcA,IAAIA,EAAE,UAAW,IAAGA,EAAE,WAAWD,EAAE;AACrD,UAAM,IAAI;AAAA,MACR;AAAA,IACN;AACE,SAAOC;AACT;AACA,SAAS8F,GAAG/F,GAAGC,GAAG;AAChB,MAAIA,EAAE,cAAcA,IAAIA,EAAE,UAAW,IAAGA,EAAE,WAAWD,EAAE;AACrD,UAAM,IAAI,WAAW,oDAAoD;AAC3E,SAAOC;AACT;AACA,SAAS+F,GAAGhG,GAAGC,GAAG;AAChB,MAAI,CAAC+E,GAAE/E,CAAC;AACN,UAAM,IAAI,UAAU,8BAA8B;AACpD,WAAS,IAAI,GAAG,IAAIA,EAAE,QAAQ;AAC5B,QAAIA,EAAE,CAAC,IAAI,KAAKA,EAAE,CAAC,KAAKD,EAAE;AACxB,YAAM,IAAI,WAAW,8BAA8B;AACzD;AACA,SAASiG,GAAGjG,GAAGC,GAAG;AAChB,MAAI,CAAC+E,GAAE/E,CAAC;AACN,UAAM,IAAI,UAAU,iCAAiC;AACvD,WAAS,IAAI,GAAG,IAAIA,EAAE,QAAQ;AAC5B,QAAIA,EAAE,CAAC,IAAI,KAAKA,EAAE,CAAC,KAAKD,EAAE;AACxB,YAAM,IAAI,WAAW,iCAAiC;AAC5D;AACA,SAASkG,GAAGlG,GAAGC,GAAG,GAAGG,GAAGG,GAAG;AACzB,MAAI,UAAU,WAAW;AACvB,UAAM,IAAI,WAAW,sBAAsB;AAC7C,MAAI4F,GAAG,YAAYlG,CAAC,GAAGkG,GAAG,UAAU,CAAC,GAAGA,GAAG,eAAe/F,CAAC,GAAG+F,GAAG,aAAa5F,CAAC,GAAGN,IAAI,KAAKG,IAAIG,KAAKN,IAAI,KAAKA,KAAKD,EAAE,QAAQ,IAAI,KAAK,KAAKA,EAAE,QAAQI,IAAI,KAAKA,KAAKJ,EAAE,WAAWO,IAAI,KAAKA,KAAKP,EAAE;AAC7L,UAAM,IAAI,WAAW,oCAAoC;AAC7D;AACA,SAASoG,GAAGpG,GAAGC,IAAI,GAAG;AACpB,MAAI,IAAI,CAAA;AACR,WAASG,IAAI,GAAGA,IAAIJ,GAAGI;AACrB,MAAE,KAAKH,CAAC;AACV,SAAO;AACT;AACA,SAASkG,GAAGnG,GAAGC,GAAG;AAChB,MAAI,OAAOA,KAAK;AACd,UAAM,IAAI,UAAU,GAAGD,CAAC,mBAAmB;AAC/C;AACA,SAASqG,GAAGrG,GAAG;AACb,MAAIA,EAAE,QAAS;AACb,UAAM,IAAI,MAAM,uCAAuC;AAC3D;AACA,SAASsG,GAAGtG,GAAG;AACb,MAAIC,IAAImG,GAAGpG,EAAE,IAAI;AACjB,WAAS,IAAI,GAAG,IAAIA,EAAE,MAAM,EAAE;AAC5B,aAASI,IAAI,GAAGA,IAAIJ,EAAE,SAAS,EAAEI;AAC/B,MAAAH,EAAE,CAAC,KAAKD,EAAE,IAAI,GAAGI,CAAC;AACtB,SAAOH;AACT;AACA,SAASsG,GAAGvG,GAAG;AACb,MAAIC,IAAImG,GAAGpG,EAAE,OAAO;AACpB,WAAS,IAAI,GAAG,IAAIA,EAAE,MAAM,EAAE;AAC5B,aAASI,IAAI,GAAGA,IAAIJ,EAAE,SAAS,EAAEI;AAC/B,MAAAH,EAAEG,CAAC,KAAKJ,EAAE,IAAI,GAAGI,CAAC;AACtB,SAAOH;AACT;AACA,SAASuG,GAAGxG,GAAG;AACb,MAAIC,IAAI;AACR,WAAS,IAAI,GAAG,IAAID,EAAE,MAAM;AAC1B,aAASI,IAAI,GAAGA,IAAIJ,EAAE,SAASI;AAC7B,MAAAH,KAAKD,EAAE,IAAI,GAAGI,CAAC;AACnB,SAAOH;AACT;AACA,SAASwG,GAAGzG,GAAG;AACb,MAAIC,IAAImG,GAAGpG,EAAE,MAAM,CAAC;AACpB,WAAS,IAAI,GAAG,IAAIA,EAAE,MAAM,EAAE;AAC5B,aAASI,IAAI,GAAGA,IAAIJ,EAAE,SAAS,EAAEI;AAC/B,MAAAH,EAAE,CAAC,KAAKD,EAAE,IAAI,GAAGI,CAAC;AACtB,SAAOH;AACT;AACA,SAASyG,GAAG1G,GAAG;AACb,MAAIC,IAAImG,GAAGpG,EAAE,SAAS,CAAC;AACvB,WAAS,IAAI,GAAG,IAAIA,EAAE,MAAM,EAAE;AAC5B,aAASI,IAAI,GAAGA,IAAIJ,EAAE,SAAS,EAAEI;AAC/B,MAAAH,EAAEG,CAAC,KAAKJ,EAAE,IAAI,GAAGI,CAAC;AACtB,SAAOH;AACT;AACA,SAAS0G,GAAG3G,GAAG;AACb,MAAIC,IAAI;AACR,WAAS,IAAI,GAAG,IAAID,EAAE,MAAM;AAC1B,aAASI,IAAI,GAAGA,IAAIJ,EAAE,SAASI;AAC7B,MAAAH,KAAKD,EAAE,IAAI,GAAGI,CAAC;AACnB,SAAOH;AACT;AACA,SAAS2G,GAAG5G,GAAGC,GAAG,GAAG;AACnB,QAAMG,IAAIJ,EAAE,MAAMO,IAAIP,EAAE,SAAS6B,IAAI;AACrC,WAAS,IAAI,GAAG,IAAIzB,GAAG,KAAK;AAC1B,QAAI,IAAI,GAAG8B,IAAI,GAAGC,IAAI;AACtB,aAAS,IAAI,GAAG,IAAI5B,GAAG;AACrB,MAAA4B,IAAInC,EAAE,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,KAAKmC,GAAGD,KAAKC,IAAIA;AAC3C,IAAAlC,IAAI4B,EAAE,MAAMK,IAAI,IAAI,IAAI3B,MAAMA,IAAI,EAAE,IAAIsB,EAAE,MAAMK,IAAI,IAAI,IAAI3B,KAAKA,CAAC;AAAA,EACnE;AACD,SAAOsB;AACT;AACA,SAASgF,GAAG7G,GAAGC,GAAG,GAAG;AACnB,QAAMG,IAAIJ,EAAE,MAAMO,IAAIP,EAAE,SAAS6B,IAAI;AACrC,WAAS,IAAI,GAAG,IAAItB,GAAG,KAAK;AAC1B,QAAI,IAAI,GAAG2B,IAAI,GAAGC,IAAI;AACtB,aAAS,IAAI,GAAG,IAAI/B,GAAG;AACrB,MAAA+B,IAAInC,EAAE,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,KAAKmC,GAAGD,KAAKC,IAAIA;AAC3C,IAAAlC,IAAI4B,EAAE,MAAMK,IAAI,IAAI,IAAI9B,MAAMA,IAAI,EAAE,IAAIyB,EAAE,MAAMK,IAAI,IAAI,IAAI9B,KAAKA,CAAC;AAAA,EACnE;AACD,SAAOyB;AACT;AACA,SAASiF,GAAG9G,GAAGC,GAAG,GAAG;AACnB,QAAMG,IAAIJ,EAAE,MAAMO,IAAIP,EAAE,SAAS6B,IAAIzB,IAAIG;AACzC,MAAI,IAAI,GAAG,IAAI,GAAG2B,IAAI;AACtB,WAASC,IAAI,GAAGA,IAAI/B,GAAG+B;AACrB,aAAS,IAAI,GAAG,IAAI5B,GAAG;AACrB,MAAA2B,IAAIlC,EAAE,IAAImC,GAAG,CAAC,IAAI,GAAG,KAAKD,GAAG,KAAKA,IAAIA;AAC1C,SAAOjC,KAAK,IAAI,IAAI,IAAI4B,MAAMA,IAAI,MAAM,IAAI,IAAI,IAAIA,KAAKA;AAC3D;AACA,SAASkF,GAAG/G,GAAGC,GAAG;AAChB,WAAS,IAAI,GAAG,IAAID,EAAE,MAAM;AAC1B,aAASI,IAAI,GAAGA,IAAIJ,EAAE,SAASI;AAC7B,MAAAJ,EAAE,IAAI,GAAGI,GAAGJ,EAAE,IAAI,GAAGI,CAAC,IAAIH,EAAE,CAAC,CAAC;AACpC;AACA,SAAS+G,GAAGhH,GAAGC,GAAG;AAChB,WAAS,IAAI,GAAG,IAAID,EAAE,MAAM;AAC1B,aAASI,IAAI,GAAGA,IAAIJ,EAAE,SAASI;AAC7B,MAAAJ,EAAE,IAAI,GAAGI,GAAGJ,EAAE,IAAI,GAAGI,CAAC,IAAIH,EAAEG,CAAC,CAAC;AACpC;AACA,SAAS6G,GAAGjH,GAAGC,GAAG;AAChB,WAAS,IAAI,GAAG,IAAID,EAAE,MAAM;AAC1B,aAASI,IAAI,GAAGA,IAAIJ,EAAE,SAASI;AAC7B,MAAAJ,EAAE,IAAI,GAAGI,GAAGJ,EAAE,IAAI,GAAGI,CAAC,IAAIH,CAAC;AACjC;AACA,SAASiH,GAAGlH,GAAG;AACb,QAAMC,IAAI,CAAA;AACV,WAAS,IAAI,GAAG,IAAID,EAAE,MAAM,KAAK;AAC/B,QAAII,IAAI;AACR,aAASG,IAAI,GAAGA,IAAIP,EAAE,SAASO;AAC7B,MAAAH,KAAK,KAAK,IAAIJ,EAAE,IAAI,GAAGO,CAAC,GAAG,CAAC,KAAKP,EAAE,UAAU;AAC/C,IAAAC,EAAE,KAAK,KAAK,KAAKG,CAAC,CAAC;AAAA,EACpB;AACD,SAAOH;AACT;AACA,SAASkH,GAAGnH,GAAGC,GAAG;AAChB,WAAS,IAAI,GAAG,IAAID,EAAE,MAAM;AAC1B,aAASI,IAAI,GAAGA,IAAIJ,EAAE,SAASI;AAC7B,MAAAJ,EAAE,IAAI,GAAGI,GAAGJ,EAAE,IAAI,GAAGI,CAAC,IAAIH,EAAE,CAAC,CAAC;AACpC;AACA,SAASmH,GAAGpH,GAAG;AACb,QAAMC,IAAI,CAAA;AACV,WAAS,IAAI,GAAG,IAAID,EAAE,SAAS,KAAK;AAClC,QAAII,IAAI;AACR,aAASG,IAAI,GAAGA,IAAIP,EAAE,MAAMO;AAC1B,MAAAH,KAAK,KAAK,IAAIJ,EAAE,IAAIO,GAAG,CAAC,GAAG,CAAC,KAAKP,EAAE,OAAO;AAC5C,IAAAC,EAAE,KAAK,KAAK,KAAKG,CAAC,CAAC;AAAA,EACpB;AACD,SAAOH;AACT;AACA,SAASoH,GAAGrH,GAAGC,GAAG;AAChB,WAAS,IAAI,GAAG,IAAID,EAAE,MAAM;AAC1B,aAASI,IAAI,GAAGA,IAAIJ,EAAE,SAASI;AAC7B,MAAAJ,EAAE,IAAI,GAAGI,GAAGJ,EAAE,IAAI,GAAGI,CAAC,IAAIH,EAAEG,CAAC,CAAC;AACpC;AACA,SAASkH,GAAGtH,GAAG;AACb,QAAMC,IAAID,EAAE,OAAO;AACnB,MAAI,IAAI;AACR,WAASI,IAAI,GAAGA,IAAIJ,EAAE,SAASI;AAC7B,aAASG,IAAI,GAAGA,IAAIP,EAAE,MAAMO;AAC1B,WAAK,KAAK,IAAIP,EAAE,IAAIO,GAAGH,CAAC,GAAG,CAAC,IAAIH;AACpC,SAAO,KAAK,KAAK,CAAC;AACpB;AACA,SAASsH,GAAGvH,GAAGC,GAAG;AAChB,WAAS,IAAI,GAAG,IAAID,EAAE,MAAM;AAC1B,aAASI,IAAI,GAAGA,IAAIJ,EAAE,SAASI;AAC7B,MAAAJ,EAAE,IAAI,GAAGI,GAAGJ,EAAE,IAAI,GAAGI,CAAC,IAAIH,CAAC;AACjC;AACA,IAAAuH,IAAA,MAAMC,EAAE;AAAA,EACN,OAAO,YAAYxH,GAAG,GAAGG,GAAG;AAC1B,QAAIH,IAAI,MAAMG,EAAE;AACd,YAAM,IAAI,WAAW,6CAA6C;AACpE,QAAIyB,IAAI,IAAI6F,EAAEzH,GAAG,CAAC;AAClB,aAASmD,IAAI,GAAGA,IAAInD,GAAGmD;AACrB,eAASC,IAAI,GAAGA,IAAI,GAAGA;AACrB,QAAAxB,EAAE,IAAIuB,GAAGC,GAAGjD,EAAEgD,IAAI,IAAIC,CAAC,CAAC;AAC5B,WAAOxB;AAAA,EACR;AAAA,EACD,OAAO,UAAU5B,GAAG;AAClB,QAAI,IAAI,IAAIyH,EAAE,GAAGzH,EAAE,MAAM;AACzB,aAASG,IAAI,GAAGA,IAAIH,EAAE,QAAQG;AAC5B,QAAE,IAAI,GAAGA,GAAGH,EAAEG,CAAC,CAAC;AAClB,WAAO;AAAA,EACR;AAAA,EACD,OAAO,aAAaH,GAAG;AACrB,QAAI,IAAI,IAAIyH,EAAEzH,EAAE,QAAQ,CAAC;AACzB,aAASG,IAAI,GAAGA,IAAIH,EAAE,QAAQG;AAC5B,QAAE,IAAIA,GAAG,GAAGH,EAAEG,CAAC,CAAC;AAClB,WAAO;AAAA,EACR;AAAA,EACD,OAAO,MAAMH,GAAG,GAAG;AACjB,WAAO,IAAIyH,EAAEzH,GAAG,CAAC;AAAA,EAClB;AAAA,EACD,OAAO,KAAKA,GAAG,GAAG;AAChB,WAAO,IAAIyH,EAAEzH,GAAG,CAAC,EAAE,KAAK,CAAC;AAAA,EAC1B;AAAA,EACD,OAAO,KAAKA,GAAG,GAAGG,IAAI,CAAA,GAAI;AACxB,QAAI,OAAOA,KAAK;AACd,YAAM,IAAI,UAAU,2BAA2B;AACjD,UAAM,EAAE,QAAQG,IAAI,KAAK,OAAM,IAAKH;AACpC,QAAIyB,IAAI,IAAI6F,EAAEzH,GAAG,CAAC;AAClB,aAAS,IAAI,GAAG,IAAIA,GAAG;AACrB,eAAS,IAAI,GAAG,IAAI,GAAG;AACrB,QAAA4B,EAAE,IAAI,GAAG,GAAGtB,EAAG,CAAA;AACnB,WAAOsB;AAAA,EACR;AAAA,EACD,OAAO,QAAQ5B,GAAG,GAAGG,IAAI,CAAA,GAAI;AAC3B,QAAI,OAAOA,KAAK;AACd,YAAM,IAAI,UAAU,2BAA2B;AACjD,UAAM,EAAE,KAAKG,IAAI,GAAG,KAAKsB,IAAI,KAAK,QAAQ,IAAI,KAAK,OAAM,IAAKzB;AAC9D,QAAI,CAAC,OAAO,UAAUG,CAAC;AACrB,YAAM,IAAI,UAAU,wBAAwB;AAC9C,QAAI,CAAC,OAAO,UAAUsB,CAAC;AACrB,YAAM,IAAI,UAAU,wBAAwB;AAC9C,QAAItB,KAAKsB;AACP,YAAM,IAAI,WAAW,8BAA8B;AACrD,QAAI,IAAIA,IAAItB,GAAG2B,IAAI,IAAIwF,EAAEzH,GAAG,CAAC;AAC7B,aAASkC,IAAI,GAAGA,IAAIlC,GAAGkC;AACrB,eAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,YAAI,IAAI5B,IAAI,KAAK,MAAM,EAAC,IAAK,CAAC;AAC9B,QAAA2B,EAAE,IAAIC,GAAG,GAAG,CAAC;AAAA,MACd;AACH,WAAOD;AAAA,EACR;AAAA,EACD,OAAO,IAAIjC,GAAG,GAAGG,GAAG;AAClB,UAAM,WAAW,IAAIH,IAAIG,MAAM,WAAWA,IAAI;AAC9C,QAAIG,IAAI,KAAK,IAAIN,GAAG,CAAC,GAAG4B,IAAI,KAAK,MAAM5B,GAAG,CAAC;AAC3C,aAAS,IAAI,GAAG,IAAIM,GAAG;AACrB,MAAAsB,EAAE,IAAI,GAAG,GAAGzB,CAAC;AACf,WAAOyB;AAAA,EACR;AAAA,EACD,OAAO,KAAK5B,GAAG,GAAGG,GAAG;AACnB,QAAIG,IAAIN,EAAE;AACV,UAAM,WAAW,IAAIM,IAAIH,MAAM,WAAWA,IAAI;AAC9C,QAAIyB,IAAI,KAAK,IAAItB,GAAG,GAAGH,CAAC,GAAG,IAAI,KAAK,MAAM,GAAGA,CAAC;AAC9C,aAAS,IAAI,GAAG,IAAIyB,GAAG;AACrB,QAAE,IAAI,GAAG,GAAG5B,EAAE,CAAC,CAAC;AAClB,WAAO;AAAA,EACR;AAAA,EACD,OAAO,IAAIA,GAAG,GAAG;AACf,IAAAA,IAAI,KAAK,YAAYA,CAAC,GAAG,IAAI,KAAK,YAAY,CAAC;AAC/C,QAAIG,IAAIH,EAAE,MAAMM,IAAIN,EAAE,SAAS4B,IAAI,IAAI6F,EAAEtH,GAAGG,CAAC;AAC7C,aAAS,IAAI,GAAG,IAAIH,GAAG;AACrB,eAAS,IAAI,GAAG,IAAIG,GAAG;AACrB,QAAAsB,EAAE,IAAI,GAAG,GAAG,KAAK,IAAI5B,EAAE,IAAI,GAAG,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC;AAClD,WAAO4B;AAAA,EACR;AAAA,EACD,OAAO,IAAI5B,GAAG,GAAG;AACf,IAAAA,IAAI,KAAK,YAAYA,CAAC,GAAG,IAAI,KAAK,YAAY,CAAC;AAC/C,QAAIG,IAAIH,EAAE,MAAMM,IAAIN,EAAE,SAAS4B,IAAI,IAAI,KAAKzB,GAAGG,CAAC;AAChD,aAAS,IAAI,GAAG,IAAIH,GAAG;AACrB,eAAS,IAAI,GAAG,IAAIG,GAAG;AACrB,QAAAsB,EAAE,IAAI,GAAG,GAAG,KAAK,IAAI5B,EAAE,IAAI,GAAG,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC;AAClD,WAAO4B;AAAA,EACR;AAAA,EACD,OAAO,YAAY5B,GAAG;AACpB,WAAOwH,EAAE,SAASxH,CAAC,IAAIA,IAAI,IAAIyH,EAAEzH,CAAC;AAAA,EACnC;AAAA,EACD,OAAO,SAASA,GAAG;AACjB,WAAOA,KAAK,QAAQA,EAAE,UAAU;AAAA,EACjC;AAAA,EACD,IAAI,OAAO;AACT,WAAO,KAAK,OAAO,KAAK;AAAA,EACzB;AAAA,EACD,MAAMA,GAAG;AACP,QAAI,OAAOA,KAAK;AACd,YAAM,IAAI,UAAU,6BAA6B;AACnD,aAAS,IAAI,GAAG,IAAI,KAAK,MAAM;AAC7B,eAASG,IAAI,GAAGA,IAAI,KAAK,SAASA;AAChC,QAAAH,EAAE,KAAK,MAAM,GAAGG,CAAC;AACrB,WAAO;AAAA,EACR;AAAA,EACD,YAAY;AACV,QAAIH,IAAI,CAAA;AACR,aAAS,IAAI,GAAG,IAAI,KAAK,MAAM;AAC7B,eAASG,IAAI,GAAGA,IAAI,KAAK,SAASA;AAChC,QAAAH,EAAE,KAAK,KAAK,IAAI,GAAGG,CAAC,CAAC;AACzB,WAAOH;AAAA,EACR;AAAA,EACD,YAAY;AACV,QAAIA,IAAI,CAAA;AACR,aAAS,IAAI,GAAG,IAAI,KAAK,MAAM,KAAK;AAClC,MAAAA,EAAE,KAAK,CAAA,CAAE;AACT,eAASG,IAAI,GAAGA,IAAI,KAAK,SAASA;AAChC,QAAAH,EAAE,CAAC,EAAE,KAAK,KAAK,IAAI,GAAGG,CAAC,CAAC;AAAA,IAC3B;AACD,WAAOH;AAAA,EACR;AAAA,EACD,SAAS;AACP,WAAO,KAAK;EACb;AAAA,EACD,cAAc;AACZ,WAAO,KAAK,SAAS;AAAA,EACtB;AAAA,EACD,iBAAiB;AACf,WAAO,KAAK,YAAY;AAAA,EACzB;AAAA,EACD,WAAW;AACT,WAAO,KAAK,SAAS,KAAK,KAAK,YAAY;AAAA,EAC5C;AAAA,EACD,WAAW;AACT,WAAO,KAAK,SAAS,KAAK;AAAA,EAC3B;AAAA,EACD,UAAU;AACR,WAAO,KAAK,SAAS,KAAK,KAAK,YAAY;AAAA,EAC5C;AAAA,EACD,cAAc;AACZ,QAAI,KAAK,YAAY;AACnB,eAASA,IAAI,GAAGA,IAAI,KAAK,MAAMA;AAC7B,iBAAS,IAAI,GAAG,KAAKA,GAAG;AACtB,cAAI,KAAK,IAAIA,GAAG,CAAC,MAAM,KAAK,IAAI,GAAGA,CAAC;AAClC,mBAAO;AACb,aAAO;AAAA,IACR;AACD,WAAO;AAAA,EACR;AAAA,EACD,gBAAgB;AACd,QAAIA,IAAI,GAAG,IAAI,GAAGG,IAAI,IAAIG,IAAI,IAAIsB,IAAI;AACtC,WAAO5B,IAAI,KAAK,QAAQM,KAAK;AAC3B,WAAK,IAAI,GAAGsB,IAAI,IAAI,IAAI,KAAK,WAAWA,MAAM;AAC5C,aAAK,IAAI5B,GAAG,CAAC,MAAM,IAAI,MAAM,KAAK,IAAIA,GAAG,CAAC,MAAM,KAAK,IAAIG,KAAKyB,IAAI,IAAIzB,IAAI,MAAMG,IAAI,IAAIsB,IAAI;AAC9F,MAAA5B;AAAA,IACD;AACD,WAAOM;AAAA,EACR;AAAA,EACD,uBAAuB;AACrB,QAAIN,IAAI,GAAG,IAAI,GAAGG,IAAI,IAAIG,IAAI,IAAIsB,IAAI;AACtC,WAAO5B,IAAI,KAAK,QAAQM,KAAK;AAC3B,WAAK,IAAI,GAAGsB,IAAI,IAAI,IAAI,KAAK,WAAWA,MAAM;AAC5C,aAAK,IAAI5B,GAAG,CAAC,MAAM,IAAI,MAAM,KAAK,IAAIA,GAAG,CAAC,MAAM,KAAK,IAAIG,KAAKyB,IAAI,IAAIzB,IAAI,MAAMG,IAAI,IAAIsB,IAAI;AAC9F,eAAS,IAAI,IAAI,GAAG,IAAI,KAAK,MAAM;AACjC,aAAK,IAAI5B,GAAG,CAAC,MAAM,MAAMM,IAAI;AAC/B,MAAAN;AAAA,IACD;AACD,WAAOM;AAAA,EACR;AAAA,EACD,cAAc;AACZ,QAAIN,IAAI,KAAK,MAAK,GAAI,IAAI,GAAGG,IAAI;AACjC,WAAO,IAAIH,EAAE,QAAQG,IAAIH,EAAE,WAAW;AACpC,UAAIM,IAAI;AACR,eAASsB,IAAI,GAAGA,IAAI5B,EAAE,MAAM4B;AAC1B,QAAA5B,EAAE,IAAI4B,GAAGzB,CAAC,IAAIH,EAAE,IAAIM,GAAGH,CAAC,MAAMG,IAAIsB;AACpC,UAAI5B,EAAE,IAAIM,GAAGH,CAAC,MAAM;AAClB,QAAAA;AAAA,WACG;AACH,QAAAH,EAAE,SAAS,GAAGM,CAAC;AACf,YAAIsB,IAAI5B,EAAE,IAAI,GAAGG,CAAC;AAClB,iBAAS,IAAIA,GAAG,IAAIH,EAAE,SAAS;AAC7B,UAAAA,EAAE,IAAI,GAAG,GAAGA,EAAE,IAAI,GAAG,CAAC,IAAI4B,CAAC;AAC7B,iBAAS,IAAI,IAAI,GAAG,IAAI5B,EAAE,MAAM,KAAK;AACnC,cAAI,IAAIA,EAAE,IAAI,GAAGG,CAAC,IAAIH,EAAE,IAAI,GAAGG,CAAC;AAChC,UAAAH,EAAE,IAAI,GAAGG,GAAG,CAAC;AACb,mBAAS8B,IAAI9B,IAAI,GAAG8B,IAAIjC,EAAE,SAASiC;AACjC,YAAAjC,EAAE,IAAI,GAAGiC,GAAGjC,EAAE,IAAI,GAAGiC,CAAC,IAAIjC,EAAE,IAAI,GAAGiC,CAAC,IAAI,CAAC;AAAA,QAC5C;AACD,aAAK9B;AAAA,MACN;AAAA,IACF;AACD,WAAOH;AAAA,EACR;AAAA,EACD,qBAAqB;AACnB,QAAIA,IAAI,KAAK,YAAa,GAAE,IAAIA,EAAE,SAASG,IAAIH,EAAE,MAAMM,IAAIH,IAAI;AAC/D,WAAOG,KAAK;AACV,UAAIN,EAAE,OAAOM,CAAC,MAAM;AAClB,QAAAA;AAAA,WACG;AACH,YAAIsB,IAAI,GAAG,IAAI;AACf,eAAOA,IAAIzB,KAAK,MAAM;AACpB,UAAAH,EAAE,IAAIM,GAAGsB,CAAC,MAAM,IAAI,IAAI,KAAKA;AAC/B,iBAAS,IAAI,GAAG,IAAItB,GAAG,KAAK;AAC1B,cAAI2B,IAAIjC,EAAE,IAAI,GAAG4B,CAAC;AAClB,mBAASM,IAAIN,GAAGM,IAAI,GAAGA,KAAK;AAC1B,gBAAI,IAAIlC,EAAE,IAAI,GAAGkC,CAAC,IAAID,IAAIjC,EAAE,IAAIM,GAAG4B,CAAC;AACpC,YAAAlC,EAAE,IAAI,GAAGkC,GAAG,CAAC;AAAA,UACd;AAAA,QACF;AACD,QAAA5B;AAAA,MACD;AACH,WAAON;AAAA,EACR;AAAA,EACD,MAAM;AACJ,UAAM,IAAI,MAAM,6BAA6B;AAAA,EAC9C;AAAA,EACD,MAAM;AACJ,UAAM,IAAI,MAAM,6BAA6B;AAAA,EAC9C;AAAA,EACD,OAAOA,IAAI,IAAI;AACb,QAAI,OAAOA,KAAK;AACd,YAAM,IAAI,UAAU,2BAA2B;AACjD,UAAM,EAAE,MAAM,IAAI,GAAG,SAASG,IAAI,EAAG,IAAGH;AACxC,QAAI,CAAC,OAAO,UAAU,CAAC,KAAK,KAAK;AAC/B,YAAM,IAAI,UAAU,iCAAiC;AACvD,QAAI,CAAC,OAAO,UAAUG,CAAC,KAAKA,KAAK;AAC/B,YAAM,IAAI,UAAU,oCAAoC;AAC1D,QAAIG,IAAI,IAAImH,EAAE,KAAK,OAAO,GAAG,KAAK,UAAUtH,CAAC;AAC7C,aAASyB,IAAI,GAAGA,IAAI,GAAGA;AACrB,eAAS,IAAI,GAAG,IAAIzB,GAAG;AACrB,QAAAG,EAAE,aAAa,MAAM,KAAK,OAAOsB,GAAG,KAAK,UAAU,CAAC;AACxD,WAAOtB;AAAA,EACR;AAAA,EACD,KAAKN,GAAG;AACN,aAAS,IAAI,GAAG,IAAI,KAAK,MAAM;AAC7B,eAASG,IAAI,GAAGA,IAAI,KAAK,SAASA;AAChC,aAAK,IAAI,GAAGA,GAAGH,CAAC;AACpB,WAAO;AAAA,EACR;AAAA,EACD,MAAM;AACJ,WAAO,KAAK,KAAK,EAAE;AAAA,EACpB;AAAA,EACD,OAAOA,GAAG;AACR2F,IAAAA,GAAE,MAAM3F,CAAC;AACT,QAAI,IAAI,CAAA;AACR,aAASG,IAAI,GAAGA,IAAI,KAAK,SAASA;AAChC,QAAE,KAAK,KAAK,IAAIH,GAAGG,CAAC,CAAC;AACvB,WAAO;AAAA,EACR;AAAA,EACD,aAAaH,GAAG;AACd,WAAOyH,EAAE,UAAU,KAAK,OAAOzH,CAAC,CAAC;AAAA,EAClC;AAAA,EACD,OAAOA,GAAG,GAAG;AACX2F,IAAAA,GAAE,MAAM3F,CAAC,GAAG,IAAI6F,GAAG,MAAM,CAAC;AAC1B,aAAS1F,IAAI,GAAGA,IAAI,KAAK,SAASA;AAChC,WAAK,IAAIH,GAAGG,GAAG,EAAEA,CAAC,CAAC;AACrB,WAAO;AAAA,EACR;AAAA,EACD,SAASH,GAAG,GAAG;AACb2F,IAAAA,GAAE,MAAM3F,CAAC,GAAG2F,GAAE,MAAM,CAAC;AACrB,aAASxF,IAAI,GAAGA,IAAI,KAAK,SAASA,KAAK;AACrC,UAAIG,IAAI,KAAK,IAAIN,GAAGG,CAAC;AACrB,WAAK,IAAIH,GAAGG,GAAG,KAAK,IAAI,GAAGA,CAAC,CAAC,GAAG,KAAK,IAAI,GAAGA,GAAGG,CAAC;AAAA,IACjD;AACD,WAAO;AAAA,EACR;AAAA,EACD,UAAUN,GAAG;AACX4F,IAAAA,GAAE,MAAM5F,CAAC;AACT,QAAI,IAAI,CAAA;AACR,aAASG,IAAI,GAAGA,IAAI,KAAK,MAAMA;AAC7B,QAAE,KAAK,KAAK,IAAIA,GAAGH,CAAC,CAAC;AACvB,WAAO;AAAA,EACR;AAAA,EACD,gBAAgBA,GAAG;AACjB,WAAOyH,EAAE,aAAa,KAAK,UAAUzH,CAAC,CAAC;AAAA,EACxC;AAAA,EACD,UAAUA,GAAG,GAAG;AACd4F,IAAAA,GAAE,MAAM5F,CAAC,GAAG,IAAI8F,GAAG,MAAM,CAAC;AAC1B,aAAS3F,IAAI,GAAGA,IAAI,KAAK,MAAMA;AAC7B,WAAK,IAAIA,GAAGH,GAAG,EAAEG,CAAC,CAAC;AACrB,WAAO;AAAA,EACR;AAAA,EACD,YAAYH,GAAG,GAAG;AAChB4F,IAAAA,GAAE,MAAM5F,CAAC,GAAG4F,GAAE,MAAM,CAAC;AACrB,aAASzF,IAAI,GAAGA,IAAI,KAAK,MAAMA,KAAK;AAClC,UAAIG,IAAI,KAAK,IAAIH,GAAGH,CAAC;AACrB,WAAK,IAAIG,GAAGH,GAAG,KAAK,IAAIG,GAAG,CAAC,CAAC,GAAG,KAAK,IAAIA,GAAG,GAAGG,CAAC;AAAA,IACjD;AACD,WAAO;AAAA,EACR;AAAA,EACD,aAAaN,GAAG;AACd,IAAAA,IAAI6F,GAAG,MAAM7F,CAAC;AACd,aAAS,IAAI,GAAG,IAAI,KAAK,MAAM;AAC7B,eAASG,IAAI,GAAGA,IAAI,KAAK,SAASA;AAChC,aAAK,IAAI,GAAGA,GAAG,KAAK,IAAI,GAAGA,CAAC,IAAIH,EAAEG,CAAC,CAAC;AACxC,WAAO;AAAA,EACR;AAAA,EACD,aAAaH,GAAG;AACd,IAAAA,IAAI6F,GAAG,MAAM7F,CAAC;AACd,aAAS,IAAI,GAAG,IAAI,KAAK,MAAM;AAC7B,eAASG,IAAI,GAAGA,IAAI,KAAK,SAASA;AAChC,aAAK,IAAI,GAAGA,GAAG,KAAK,IAAI,GAAGA,CAAC,IAAIH,EAAEG,CAAC,CAAC;AACxC,WAAO;AAAA,EACR;AAAA,EACD,aAAaH,GAAG;AACd,IAAAA,IAAI6F,GAAG,MAAM7F,CAAC;AACd,aAAS,IAAI,GAAG,IAAI,KAAK,MAAM;AAC7B,eAASG,IAAI,GAAGA,IAAI,KAAK,SAASA;AAChC,aAAK,IAAI,GAAGA,GAAG,KAAK,IAAI,GAAGA,CAAC,IAAIH,EAAEG,CAAC,CAAC;AACxC,WAAO;AAAA,EACR;AAAA,EACD,aAAaH,GAAG;AACd,IAAAA,IAAI6F,GAAG,MAAM7F,CAAC;AACd,aAAS,IAAI,GAAG,IAAI,KAAK,MAAM;AAC7B,eAASG,IAAI,GAAGA,IAAI,KAAK,SAASA;AAChC,aAAK,IAAI,GAAGA,GAAG,KAAK,IAAI,GAAGA,CAAC,IAAIH,EAAEG,CAAC,CAAC;AACxC,WAAO;AAAA,EACR;AAAA,EACD,gBAAgBH,GAAG;AACjB,IAAAA,IAAI8F,GAAG,MAAM9F,CAAC;AACd,aAAS,IAAI,GAAG,IAAI,KAAK,MAAM;AAC7B,eAASG,IAAI,GAAGA,IAAI,KAAK,SAASA;AAChC,aAAK,IAAI,GAAGA,GAAG,KAAK,IAAI,GAAGA,CAAC,IAAIH,EAAE,CAAC,CAAC;AACxC,WAAO;AAAA,EACR;AAAA,EACD,gBAAgBA,GAAG;AACjB,IAAAA,IAAI8F,GAAG,MAAM9F,CAAC;AACd,aAAS,IAAI,GAAG,IAAI,KAAK,MAAM;AAC7B,eAASG,IAAI,GAAGA,IAAI,KAAK,SAASA;AAChC,aAAK,IAAI,GAAGA,GAAG,KAAK,IAAI,GAAGA,CAAC,IAAIH,EAAE,CAAC,CAAC;AACxC,WAAO;AAAA,EACR;AAAA,EACD,gBAAgBA,GAAG;AACjB,IAAAA,IAAI8F,GAAG,MAAM9F,CAAC;AACd,aAAS,IAAI,GAAG,IAAI,KAAK,MAAM;AAC7B,eAASG,IAAI,GAAGA,IAAI,KAAK,SAASA;AAChC,aAAK,IAAI,GAAGA,GAAG,KAAK,IAAI,GAAGA,CAAC,IAAIH,EAAE,CAAC,CAAC;AACxC,WAAO;AAAA,EACR;AAAA,EACD,gBAAgBA,GAAG;AACjB,IAAAA,IAAI8F,GAAG,MAAM9F,CAAC;AACd,aAAS,IAAI,GAAG,IAAI,KAAK,MAAM;AAC7B,eAASG,IAAI,GAAGA,IAAI,KAAK,SAASA;AAChC,aAAK,IAAI,GAAGA,GAAG,KAAK,IAAI,GAAGA,CAAC,IAAIH,EAAE,CAAC,CAAC;AACxC,WAAO;AAAA,EACR;AAAA,EACD,OAAOA,GAAG,GAAG;AACX2F,IAAAA,GAAE,MAAM3F,CAAC;AACT,aAASG,IAAI,GAAGA,IAAI,KAAK,SAASA;AAChC,WAAK,IAAIH,GAAGG,GAAG,KAAK,IAAIH,GAAGG,CAAC,IAAI,CAAC;AACnC,WAAO;AAAA,EACR;AAAA,EACD,UAAUH,GAAG,GAAG;AACd4F,IAAAA,GAAE,MAAM5F,CAAC;AACT,aAASG,IAAI,GAAGA,IAAI,KAAK,MAAMA;AAC7B,WAAK,IAAIA,GAAGH,GAAG,KAAK,IAAIG,GAAGH,CAAC,IAAI,CAAC;AACnC,WAAO;AAAA,EACR;AAAA,EACD,IAAIA,GAAG;AACL,QAAI,KAAK,QAAS;AAChB,aAAO;AACT,YAAQA,GAAC;AAAA,MACP,KAAK,OAAO;AACV,cAAM,IAAI,IAAI,MAAM,KAAK,IAAI,EAAE,KAAK,OAAO,iBAAiB;AAC5D,iBAASG,IAAI,GAAGA,IAAI,KAAK,MAAMA;AAC7B,mBAASG,IAAI,GAAGA,IAAI,KAAK,SAASA;AAChC,iBAAK,IAAIH,GAAGG,CAAC,IAAI,EAAEH,CAAC,MAAM,EAAEA,CAAC,IAAI,KAAK,IAAIA,GAAGG,CAAC;AAClD,eAAO;AAAA,MACR;AAAA,MACD,KAAK,UAAU;AACb,cAAM,IAAI,IAAI,MAAM,KAAK,OAAO,EAAE,KAAK,OAAO,iBAAiB;AAC/D,iBAASH,IAAI,GAAGA,IAAI,KAAK,MAAMA;AAC7B,mBAASG,IAAI,GAAGA,IAAI,KAAK,SAASA;AAChC,iBAAK,IAAIH,GAAGG,CAAC,IAAI,EAAEA,CAAC,MAAM,EAAEA,CAAC,IAAI,KAAK,IAAIH,GAAGG,CAAC;AAClD,eAAO;AAAA,MACR;AAAA,MACD,KAAK,QAAQ;AACX,YAAI,IAAI,KAAK,IAAI,GAAG,CAAC;AACrB,iBAASH,IAAI,GAAGA,IAAI,KAAK,MAAMA;AAC7B,mBAASG,IAAI,GAAGA,IAAI,KAAK,SAASA;AAChC,iBAAK,IAAIH,GAAGG,CAAC,IAAI,MAAM,IAAI,KAAK,IAAIH,GAAGG,CAAC;AAC5C,eAAO;AAAA,MACR;AAAA,MACD;AACE,cAAM,IAAI,MAAM,mBAAmBN,CAAC,EAAE;AAAA,IACzC;AAAA,EACF;AAAA,EACD,WAAW;AACToG,IAAAA,GAAG,IAAI;AACP,QAAIpG,IAAI,KAAK,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC;AACjC,aAASG,IAAI,GAAGA,IAAI,KAAK,MAAMA;AAC7B,eAASG,IAAI,GAAGA,IAAI,KAAK,SAASA;AAChC,aAAK,IAAIH,GAAGG,CAAC,IAAIN,MAAMA,IAAI,KAAK,IAAIG,GAAGG,CAAC,GAAG,EAAE,CAAC,IAAIH,GAAG,EAAE,CAAC,IAAIG;AAChE,WAAO;AAAA,EACR;AAAA,EACD,IAAIN,GAAG;AACL,QAAI,KAAK,QAAS;AAChB,aAAO;AACT,YAAQA,GAAC;AAAA,MACP,KAAK,OAAO;AACV,cAAM,IAAI,IAAI,MAAM,KAAK,IAAI,EAAE,KAAK,OAAO,iBAAiB;AAC5D,iBAASG,IAAI,GAAGA,IAAI,KAAK,MAAMA;AAC7B,mBAASG,IAAI,GAAGA,IAAI,KAAK,SAASA;AAChC,iBAAK,IAAIH,GAAGG,CAAC,IAAI,EAAEH,CAAC,MAAM,EAAEA,CAAC,IAAI,KAAK,IAAIA,GAAGG,CAAC;AAClD,eAAO;AAAA,MACR;AAAA,MACD,KAAK,UAAU;AACb,cAAM,IAAI,IAAI,MAAM,KAAK,OAAO,EAAE,KAAK,OAAO,iBAAiB;AAC/D,iBAASH,IAAI,GAAGA,IAAI,KAAK,MAAMA;AAC7B,mBAASG,IAAI,GAAGA,IAAI,KAAK,SAASA;AAChC,iBAAK,IAAIH,GAAGG,CAAC,IAAI,EAAEA,CAAC,MAAM,EAAEA,CAAC,IAAI,KAAK,IAAIH,GAAGG,CAAC;AAClD,eAAO;AAAA,MACR;AAAA,MACD,KAAK,QAAQ;AACX,YAAI,IAAI,KAAK,IAAI,GAAG,CAAC;AACrB,iBAASH,IAAI,GAAGA,IAAI,KAAK,MAAMA;AAC7B,mBAASG,IAAI,GAAGA,IAAI,KAAK,SAASA;AAChC,iBAAK,IAAIH,GAAGG,CAAC,IAAI,MAAM,IAAI,KAAK,IAAIH,GAAGG,CAAC;AAC5C,eAAO;AAAA,MACR;AAAA,MACD;AACE,cAAM,IAAI,MAAM,mBAAmBN,CAAC,EAAE;AAAA,IACzC;AAAA,EACF;AAAA,EACD,WAAW;AACToG,IAAAA,GAAG,IAAI;AACP,QAAIpG,IAAI,KAAK,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC;AACjC,aAASG,IAAI,GAAGA,IAAI,KAAK,MAAMA;AAC7B,eAASG,IAAI,GAAGA,IAAI,KAAK,SAASA;AAChC,aAAK,IAAIH,GAAGG,CAAC,IAAIN,MAAMA,IAAI,KAAK,IAAIG,GAAGG,CAAC,GAAG,EAAE,CAAC,IAAIH,GAAG,EAAE,CAAC,IAAIG;AAChE,WAAO;AAAA,EACR;AAAA,EACD,OAAON,GAAG;AACR,QAAI2F,GAAE,MAAM3F,CAAC,GAAG,KAAK,QAAS;AAC5B,aAAO;AACT,QAAI,IAAI,KAAK,IAAIA,GAAG,CAAC;AACrB,aAASG,IAAI,GAAGA,IAAI,KAAK,SAASA;AAChC,WAAK,IAAIH,GAAGG,CAAC,IAAI,MAAM,IAAI,KAAK,IAAIH,GAAGG,CAAC;AAC1C,WAAO;AAAA,EACR;AAAA,EACD,YAAYH,GAAG;AACb2F,IAAAA,GAAE,MAAM3F,CAAC,GAAGoG,GAAG,IAAI;AACnB,QAAI,IAAI,KAAK,IAAIpG,GAAG,CAAC,GAAGG,IAAI,CAACH,GAAG,CAAC;AACjC,aAASM,IAAI,GAAGA,IAAI,KAAK,SAASA;AAChC,WAAK,IAAIN,GAAGM,CAAC,IAAI,MAAM,IAAI,KAAK,IAAIN,GAAGM,CAAC,GAAGH,EAAE,CAAC,IAAIG;AACpD,WAAOH;AAAA,EACR;AAAA,EACD,OAAOH,GAAG;AACR,QAAI2F,GAAE,MAAM3F,CAAC,GAAG,KAAK,QAAS;AAC5B,aAAO;AACT,QAAI,IAAI,KAAK,IAAIA,GAAG,CAAC;AACrB,aAASG,IAAI,GAAGA,IAAI,KAAK,SAASA;AAChC,WAAK,IAAIH,GAAGG,CAAC,IAAI,MAAM,IAAI,KAAK,IAAIH,GAAGG,CAAC;AAC1C,WAAO;AAAA,EACR;AAAA,EACD,YAAYH,GAAG;AACb2F,IAAAA,GAAE,MAAM3F,CAAC,GAAGoG,GAAG,IAAI;AACnB,QAAI,IAAI,KAAK,IAAIpG,GAAG,CAAC,GAAGG,IAAI,CAACH,GAAG,CAAC;AACjC,aAASM,IAAI,GAAGA,IAAI,KAAK,SAASA;AAChC,WAAK,IAAIN,GAAGM,CAAC,IAAI,MAAM,IAAI,KAAK,IAAIN,GAAGM,CAAC,GAAGH,EAAE,CAAC,IAAIG;AACpD,WAAOH;AAAA,EACR;AAAA,EACD,UAAUH,GAAG;AACX,QAAI4F,GAAE,MAAM5F,CAAC,GAAG,KAAK,QAAS;AAC5B,aAAO;AACT,QAAI,IAAI,KAAK,IAAI,GAAGA,CAAC;AACrB,aAASG,IAAI,GAAGA,IAAI,KAAK,MAAMA;AAC7B,WAAK,IAAIA,GAAGH,CAAC,IAAI,MAAM,IAAI,KAAK,IAAIG,GAAGH,CAAC;AAC1C,WAAO;AAAA,EACR;AAAA,EACD,eAAeA,GAAG;AAChB4F,IAAAA,GAAE,MAAM5F,CAAC,GAAGoG,GAAG,IAAI;AACnB,QAAI,IAAI,KAAK,IAAI,GAAGpG,CAAC,GAAGG,IAAI,CAAC,GAAGH,CAAC;AACjC,aAASM,IAAI,GAAGA,IAAI,KAAK,MAAMA;AAC7B,WAAK,IAAIA,GAAGN,CAAC,IAAI,MAAM,IAAI,KAAK,IAAIM,GAAGN,CAAC,GAAGG,EAAE,CAAC,IAAIG;AACpD,WAAOH;AAAA,EACR;AAAA,EACD,UAAUH,GAAG;AACX,QAAI4F,GAAE,MAAM5F,CAAC,GAAG,KAAK,QAAS;AAC5B,aAAO;AACT,QAAI,IAAI,KAAK,IAAI,GAAGA,CAAC;AACrB,aAASG,IAAI,GAAGA,IAAI,KAAK,MAAMA;AAC7B,WAAK,IAAIA,GAAGH,CAAC,IAAI,MAAM,IAAI,KAAK,IAAIG,GAAGH,CAAC;AAC1C,WAAO;AAAA,EACR;AAAA,EACD,eAAeA,GAAG;AAChB4F,IAAAA,GAAE,MAAM5F,CAAC,GAAGoG,GAAG,IAAI;AACnB,QAAI,IAAI,KAAK,IAAI,GAAGpG,CAAC,GAAGG,IAAI,CAAC,GAAGH,CAAC;AACjC,aAASM,IAAI,GAAGA,IAAI,KAAK,MAAMA;AAC7B,WAAK,IAAIA,GAAGN,CAAC,IAAI,MAAM,IAAI,KAAK,IAAIM,GAAGN,CAAC,GAAGG,EAAE,CAAC,IAAIG;AACpD,WAAOH;AAAA,EACR;AAAA,EACD,OAAO;AACL,QAAIH,IAAI,KAAK,IAAI,KAAK,MAAM,KAAK,OAAO,GAAG,IAAI;AAC/C,aAASG,IAAI,GAAGA,IAAIH,GAAGG;AACrB,QAAE,KAAK,KAAK,IAAIA,GAAGA,CAAC,CAAC;AACvB,WAAO;AAAA,EACR;AAAA,EACD,KAAKH,IAAI,aAAa;AACpB,QAAI,IAAI;AACR,QAAIA,MAAM;AACR,aAAO,KAAK;AACd,QAAIA,MAAM,aAAa;AACrB,eAASG,IAAI,GAAGA,IAAI,KAAK,MAAMA;AAC7B,iBAASG,IAAI,GAAGA,IAAI,KAAK,SAASA;AAChC,cAAI,IAAI,KAAK,IAAIH,GAAGG,CAAC,IAAI,KAAK,IAAIH,GAAGG,CAAC;AAC1C,aAAO,KAAK,KAAK,CAAC;AAAA,IACnB;AACC,YAAM,IAAI,WAAW,sBAAsBN,CAAC,EAAE;AAAA,EACjD;AAAA,EACD,gBAAgB;AACd,QAAIA,IAAI;AACR,aAAS,IAAI,GAAG,IAAI,KAAK,MAAM;AAC7B,eAASG,IAAI,GAAGA,IAAI,KAAK,SAASA;AAChC,QAAAH,KAAK,KAAK,IAAI,GAAGG,CAAC,GAAG,KAAK,IAAI,GAAGA,GAAGH,CAAC;AACzC,WAAO;AAAA,EACR;AAAA,EACD,IAAIA,GAAG;AACL,IAAAwH,EAAE,SAASxH,CAAC,MAAMA,IAAIA,EAAE,UAAS;AACjC,QAAI,IAAI,KAAK;AACb,QAAI,EAAE,WAAWA,EAAE;AACjB,YAAM,IAAI,WAAW,mCAAmC;AAC1D,QAAIG,IAAI;AACR,aAASG,IAAI,GAAGA,IAAI,EAAE,QAAQA;AAC5B,MAAAH,KAAK,EAAEG,CAAC,IAAIN,EAAEM,CAAC;AACjB,WAAOH;AAAA,EACR;AAAA,EACD,KAAKH,GAAG;AACN,IAAAA,IAAIyH,EAAE,YAAYzH,CAAC;AACnB,QAAI,IAAI,KAAK,MAAMG,IAAI,KAAK,SAASG,IAAIN,EAAE,SAAS4B,IAAI,IAAI6F,EAAE,GAAGnH,CAAC,GAAG,IAAI,IAAI,aAAaH,CAAC;AAC3F,aAAS,IAAI,GAAG,IAAIG,GAAG,KAAK;AAC1B,eAAS2B,IAAI,GAAGA,IAAI9B,GAAG8B;AACrB,UAAEA,CAAC,IAAIjC,EAAE,IAAIiC,GAAG,CAAC;AACnB,eAASA,IAAI,GAAGA,IAAI,GAAGA,KAAK;AAC1B,YAAIC,IAAI;AACR,iBAAS,IAAI,GAAG,IAAI/B,GAAG;AACrB,UAAA+B,KAAK,KAAK,IAAID,GAAG,CAAC,IAAI,EAAE,CAAC;AAC3B,QAAAL,EAAE,IAAIK,GAAG,GAAGC,CAAC;AAAA,MACd;AAAA,IACF;AACD,WAAON;AAAA,EACR;AAAA,EACD,YAAY5B,GAAG;AACb,IAAAA,IAAIyH,EAAE,YAAYzH,CAAC;AACnB,QAAI,IAAI,IAAIyH,EAAE,GAAG,CAAC;AAClB,UAAMtH,IAAI,KAAK,IAAI,GAAG,CAAC,GAAGG,IAAIN,EAAE,IAAI,GAAG,CAAC,GAAG4B,IAAI,KAAK,IAAI,GAAG,CAAC,GAAG,IAAI5B,EAAE,IAAI,GAAG,CAAC,GAAG,IAAI,KAAK,IAAI,GAAG,CAAC,GAAGiC,IAAIjC,EAAE,IAAI,GAAG,CAAC,GAAGkC,IAAI,KAAK,IAAI,GAAG,CAAC,GAAG,IAAIlC,EAAE,IAAI,GAAG,CAAC,GAAG,KAAKG,IAAI+B,MAAM5B,IAAI,IAAI6B,KAAK,IAAID,KAAK5B,GAAG8B,IAAIjC,KAAK,IAAI,IAAIkC,IAAIH,KAAKD,IAAI3B,IAAIgC,KAAKnC,IAAIyB,KAAK,GAAGW,KAAK,IAAIpC,MAAMG,IAAI,IAAIkC,KAAKZ,IAAIM,MAAMD,IAAI,IAAIQ,IAAI,IAAIJ,IAAIC,IAAIE,GAAGE,IAAIN,IAAIE,GAAGiC,IAAIpC,IAAIE,GAAGuC,IAAI,IAAIzC,IAAIC,IAAIG;AAC5V,WAAO,EAAE,IAAI,GAAG,GAAGE,CAAC,GAAG,EAAE,IAAI,GAAG,GAAGC,CAAC,GAAG,EAAE,IAAI,GAAG,GAAG6B,CAAC,GAAG,EAAE,IAAI,GAAG,GAAGK,CAAC,GAAG;AAAA,EACxE;AAAA,EACD,YAAY5E,GAAG;AACb,IAAAA,IAAIyH,EAAE,YAAYzH,CAAC;AACnB,QAAI,IAAI,IAAIyH,EAAE,GAAG,CAAC;AAClB,UAAMtH,IAAI,KAAK,IAAI,GAAG,CAAC,GAAGG,IAAI,KAAK,IAAI,GAAG,CAAC,GAAGsB,IAAI,KAAK,IAAI,GAAG,CAAC,GAAG,IAAI,KAAK,IAAI,GAAG,CAAC,GAAG,IAAI,KAAK,IAAI,GAAG,CAAC,GAAGK,IAAI,KAAK,IAAI,GAAG,CAAC,GAAGC,IAAI,KAAK,IAAI,GAAG,CAAC,GAAG,IAAI,KAAK,IAAI,GAAG,CAAC,GAAG,IAAI,KAAK,IAAI,GAAG,CAAC,GAAGC,IAAInC,EAAE,IAAI,GAAG,CAAC,GAAGoC,IAAIpC,EAAE,IAAI,GAAG,CAAC,GAAGqC,IAAIrC,EAAE,IAAI,GAAG,CAAC,GAAGsC,IAAItC,EAAE,IAAI,GAAG,CAAC,GAAGuC,IAAIvC,EAAE,IAAI,GAAG,CAAC,GAAGwC,IAAIxC,EAAE,IAAI,GAAG,CAAC,GAAGyC,IAAIzC,EAAE,IAAI,GAAG,CAAC,GAAG0C,IAAI1C,EAAE,IAAI,GAAG,CAAC,GAAGuE,IAAIvE,EAAE,IAAI,GAAG,CAAC,GAAG4E,KAAKzE,IAAIG,IAAIsB,IAAI,IAAI,IAAI,IAAI,KAAKW,GAAGiC,KAAKrE,IAAI,MAAM,CAACiC,IAAIG,IAAIkC,IAAI,KAAK,CAACtC,IAAIC,IAAIE,IAAIC,IAAIC,IAAIC,IAAI8B,IAAIG,KAAK,CAACvE,IAAI,IAAI,MAAMgC,IAAIC,IAAIG,IAAIoC,KAAK,IAAI,MAAM,CAACxC,IAAIC,IAAIsF,IAAIvH,IAAIgC,GAAGwF,KAAK,CAACxH,IAAI+B,IAAI,MAAMC,IAAIE,IAAIG,IAAIoF,MAAK,CAACzH,IAAI+B,MAAMG,IAAIG,IAAIqF,KAAK3F,IAAI,MAAM,CAACC,IAAIE,IAAIyF,KAAK3H,IAAIG,IAAIsB,IAAI,IAAIK,IAAIC,IAAI,KAAKM,GAAG,IAAI,KAAK,CAACL,IAAIE,IAAIC,IAAIC,IAAIC,IAAIC,IAAIC,IAAI,KAAK,CAACd,IAAI,IAAI,MAAMW,IAAIE,IAAIC,IAAIqF,MAAMnG,IAAI,MAAMW,IAAIG,IAAIsF,IAAIpG,IAAIa,GAAGwF,KAAK,IAAI,MAAM,CAACxF,IAAIC,IAAIwF,KAAK,CAACtG,IAAI,IAAIK,MAAMO,IAAIC,IAAI8B,IAAI4D,KAAKvG,IAAIK,MAAMO,IAAI+B,IAAI6D,KAAK,IAAInG,MAAM,CAACQ,IAAI8B,IAAI8D,IAAI/H,IAAIgC,GAAGgG,KAAIrG,IAAIS,GAAG6F,KAAK,IAAIlG,GAAGmG,KAAItG,IAAIE,GAAGqG,KAAK,IAAIlE,GAAGmE,KAAKhB,IAAIM,IAAIK,GAAGM,KAAK/D,IAAIF,IAAIC,IAAI+C,IAAI,IAAIM,IAAIC,GAAGW,KAAKlB,IAAIC,IAAIE,IAAIC,IAAIE,IAAIE,IAAIE,GAAGS,KAAKrE,IAAIC,IAAIC,IAAIgD,IAAIM,IAAIE,IAAIC,GAAGW,KAAKtE,IAAIE,IAAIC,IAAI+C,IAAIY,IAAGS,KAAKf,IAAIE,IAAIC,IAAIC,IAAIG,IAAIS,KAAKtB,IAAIC,IAAIC,KAAI,IAAI,IAAIG,KAAKC,GAAGiB,KAAK,IAAIlB,KAAKC,IAAIC,IAAIO,IAAGU,KAAKxB,IAAIC,IAAIC,KAAIC,IAAIY;AACvmC,WAAO,EAAE,IAAI,GAAG,GAAGC,EAAE,GAAG,EAAE,IAAI,GAAG,GAAGC,EAAE,GAAG,EAAE,IAAI,GAAG,GAAGC,EAAE,GAAG,EAAE,IAAI,GAAG,GAAGC,EAAE,GAAG,EAAE,IAAI,GAAG,GAAGC,EAAE,GAAG,EAAE,IAAI,GAAG,GAAGC,EAAE,GAAG,EAAE,IAAI,GAAG,GAAGC,EAAE,GAAG,EAAE,IAAI,GAAG,GAAGC,EAAE,GAAG,EAAE,IAAI,GAAG,GAAGC,EAAE,GAAG;AAAA,EACjK;AAAA,EACD,aAAalJ,GAAG;AACd,IAAAA,IAAIyH,EAAE,YAAYzH,CAAC;AACnB,QAAI,IAAI,KAAK,MAAO,GAAEG,IAAI,EAAE,MAAMG,IAAI,EAAE,SAASsB,IAAI5B,EAAE,MAAM,IAAIA,EAAE;AACnE,IAAAM,MAAMsB,KAAK,QAAQ;AAAA,MACjB,eAAezB,CAAC,MAAMG,CAAC,QAAQsB,CAAC,MAAM,CAAC;AAAA,IAC7C;AACI,aAAS,EAAE,GAAGO,GAAGC,GAAG;AAClB,UAAIC,IAAI,EAAE,MAAMC,IAAI,EAAE;AACtB,UAAID,MAAMF,KAAKG,MAAMF;AACnB,eAAO;AACT;AACE,YAAIG,IAAIiF,EAAE,MAAMrF,GAAGC,CAAC;AACpB,eAAOG,IAAIA,EAAE,aAAa,GAAG,GAAG,CAAC,GAAGA;AAAA,MACrC;AAAA,IACF;AACD,QAAIN,IAAI,KAAK,IAAI9B,GAAGyB,CAAC,GAAGM,IAAI,KAAK,IAAI5B,GAAG,CAAC;AACzC,QAAI,EAAE,GAAG2B,GAAGC,CAAC,GAAGlC,IAAI,EAAEA,GAAGiC,GAAGC,CAAC;AAC7B,aAAS,EAAE,GAAGC,GAAGC,GAAGC,GAAG;AACrB,UAAID,KAAK,OAAOC,KAAK;AACnB,eAAO,EAAE,KAAKF,CAAC;AACjB,MAAAC,IAAI,MAAM,KAAKC,IAAI,MAAM,KAAK,IAAI,EAAE,GAAGD,IAAI,GAAGC,IAAI,CAAC,GAAGF,IAAI,EAAEA,GAAGC,IAAI,GAAGC,IAAI,CAAC,KAAKD,IAAI,MAAM,KAAK,IAAI,EAAE,GAAGA,IAAI,GAAGC,CAAC,GAAGF,IAAI,EAAEA,GAAGC,IAAI,GAAGC,CAAC,KAAKA,IAAI,MAAM,MAAM,IAAI,EAAE,GAAGD,GAAGC,IAAI,CAAC,GAAGF,IAAI,EAAEA,GAAGC,GAAGC,IAAI,CAAC;AAC9L,UAAIC,IAAI,SAAS,EAAE,OAAO,GAAG,EAAE,GAAGC,IAAI,SAAS,EAAE,UAAU,GAAG,EAAE,GAAGC,IAAI,EAAE,UAAU,GAAGF,IAAI,GAAG,GAAGC,IAAI,CAAC,GAAGE,IAAIN,EAAE,UAAU,GAAGG,IAAI,GAAG,GAAGC,IAAI,CAAC,GAAGG,IAAI,EAAE,UAAU,GAAGJ,IAAI,GAAGC,GAAG,EAAE,UAAU,CAAC,GAAGgC,IAAIpC,EAAE,UAAU,GAAGG,IAAI,GAAGC,GAAGJ,EAAE,UAAU,CAAC,GAAGyC,IAAI,EAAE,UAAUtC,GAAG,EAAE,OAAO,GAAG,GAAGC,IAAI,CAAC,GAAGiC,IAAIrC,EAAE,UAAUG,GAAGH,EAAE,OAAO,GAAG,GAAGI,IAAI,CAAC,GAAGkC,IAAI,EAAE,UAAUnC,GAAG,EAAE,OAAO,GAAGC,GAAG,EAAE,UAAU,CAAC,GAAGmC,IAAIvC,EAAE,UAAUG,GAAGH,EAAE,OAAO,GAAGI,GAAGJ,EAAE,UAAU,CAAC,GAAGwC,IAAI;AAAA,QACja6C,EAAE,IAAIhF,GAAGiC,CAAC;AAAA,QACV+C,EAAE,IAAI/E,GAAGiC,CAAC;AAAA,QACVpC;AAAA,QACAC;AAAA,MACR,GAASmF,IAAI,EAAEF,EAAE,IAAI5C,GAAGH,CAAC,GAAGhC,GAAGH,GAAGC,CAAC,GAAGoF,IAAI,EAAEnF,GAAGgF,EAAE,IAAIjD,GAAGG,CAAC,GAAGpC,GAAGC,CAAC,GAAGqF,KAAI,EAAEnD,GAAG+C,EAAE,IAAIhD,GAAG/B,CAAC,GAAGH,GAAGC,CAAC,GAAGsF,IAAI,EAAEL,EAAE,IAAIhF,GAAGE,CAAC,GAAGgC,GAAGpC,GAAGC,CAAC,GAAGuF,IAAI;AAAA,QACzHN,EAAE,IAAI5C,GAAGpC,CAAC;AAAA,QACVgF,EAAE,IAAI/E,GAAG8B,CAAC;AAAA,QACVjC;AAAA,QACAC;AAAA,MACD,GAAE,IAAI;AAAA,QACLiF,EAAE,IAAI9E,GAAG+B,CAAC;AAAA,QACV+C,EAAE,IAAIhD,GAAGE,CAAC;AAAA,QACVpC;AAAA,QACAC;AAAA,MACD,GAAE,IAAIiF,EAAE,IAAI7C,GAAGiD,EAAC;AACjB,QAAE,IAAIC,CAAC,GAAG,EAAE,IAAI,CAAC;AACjB,UAAIE,KAAKP,EAAE,IAAIG,GAAGE,CAAC,GAAGG,IAAIR,EAAE,IAAIE,GAAGE,EAAC,GAAGK,IAAIT,EAAE,IAAI7C,GAAG+C,CAAC;AACrD,MAAAO,EAAE,IAAIN,CAAC,GAAGM,EAAE,IAAIH,CAAC;AACjB,UAAII,IAAIV,EAAE,MAAM,IAAI,EAAE,MAAM,IAAI,EAAE,OAAO;AACzC,aAAOU,IAAIA,EAAE,aAAa,GAAG,GAAG,CAAC,GAAGA,IAAIA,EAAE,aAAaH,IAAI,EAAE,MAAM,CAAC,GAAGG,IAAIA,EAAE,aAAaF,GAAG,GAAG,EAAE,OAAO,GAAGE,IAAIA,EAAE,aAAaD,GAAG,EAAE,MAAM,EAAE,OAAO,GAAGC,EAAE,UAAU,GAAG9F,IAAI,GAAG,GAAGC,IAAI,CAAC;AAAA,IACrL;AACD,WAAO,EAAE,GAAGrC,GAAGiC,GAAGC,CAAC;AAAA,EACpB;AAAA,EACD,UAAUlC,IAAI,IAAI;AAChB,QAAI,OAAOA,KAAK;AACd,YAAM,IAAI,UAAU,2BAA2B;AACjD,UAAM,EAAE,KAAK,IAAI,GAAG,KAAKG,IAAI,EAAG,IAAGH;AACnC,QAAI,CAAC,OAAO,SAAS,CAAC;AACpB,YAAM,IAAI,UAAU,sBAAsB;AAC5C,QAAI,CAAC,OAAO,SAASG,CAAC;AACpB,YAAM,IAAI,UAAU,sBAAsB;AAC5C,QAAI,KAAKA;AACP,YAAM,IAAI,WAAW,8BAA8B;AACrD,QAAIG,IAAI,IAAImH,EAAE,KAAK,MAAM,KAAK,OAAO;AACrC,aAAS7F,IAAI,GAAGA,IAAI,KAAK,MAAMA,KAAK;AAClC,YAAM,IAAI,KAAK,OAAOA,CAAC;AACvB,QAAE,SAAS,KAAKsD,GAAG,GAAG,EAAE,KAAK,GAAG,KAAK/E,GAAG,QAAQ,GAAG,GAAGG,EAAE,OAAOsB,GAAG,CAAC;AAAA,IACpE;AACD,WAAOtB;AAAA,EACR;AAAA,EACD,aAAaN,IAAI,IAAI;AACnB,QAAI,OAAOA,KAAK;AACd,YAAM,IAAI,UAAU,2BAA2B;AACjD,UAAM,EAAE,KAAK,IAAI,GAAG,KAAKG,IAAI,EAAG,IAAGH;AACnC,QAAI,CAAC,OAAO,SAAS,CAAC;AACpB,YAAM,IAAI,UAAU,sBAAsB;AAC5C,QAAI,CAAC,OAAO,SAASG,CAAC;AACpB,YAAM,IAAI,UAAU,sBAAsB;AAC5C,QAAI,KAAKA;AACP,YAAM,IAAI,WAAW,8BAA8B;AACrD,QAAIG,IAAI,IAAImH,EAAE,KAAK,MAAM,KAAK,OAAO;AACrC,aAAS7F,IAAI,GAAGA,IAAI,KAAK,SAASA,KAAK;AACrC,YAAM,IAAI,KAAK,UAAUA,CAAC;AAC1B,QAAE,UAAUsD,GAAG,GAAG;AAAA,QAChB,KAAK;AAAA,QACL,KAAK/E;AAAA,QACL,QAAQ;AAAA,MACT,CAAA,GAAGG,EAAE,UAAUsB,GAAG,CAAC;AAAA,IACrB;AACD,WAAOtB;AAAA,EACR;AAAA,EACD,WAAW;AACT,UAAMN,IAAI,KAAK,KAAK,KAAK,UAAU,CAAC;AACpC,aAAS,IAAI,GAAG,IAAI,KAAK,MAAM;AAC7B,eAASG,IAAI,GAAGA,IAAIH,GAAGG,KAAK;AAC1B,YAAIG,IAAI,KAAK,IAAI,GAAGH,CAAC,GAAGyB,IAAI,KAAK,IAAI,GAAG,KAAK,UAAU,IAAIzB,CAAC;AAC5D,aAAK,IAAI,GAAGA,GAAGyB,CAAC,GAAG,KAAK,IAAI,GAAG,KAAK,UAAU,IAAIzB,GAAGG,CAAC;AAAA,MACvD;AACH,WAAO;AAAA,EACR;AAAA,EACD,cAAc;AACZ,UAAMN,IAAI,KAAK,KAAK,KAAK,OAAO,CAAC;AACjC,aAAS,IAAI,GAAG,IAAI,KAAK,SAAS;AAChC,eAASG,IAAI,GAAGA,IAAIH,GAAGG,KAAK;AAC1B,YAAIG,IAAI,KAAK,IAAIH,GAAG,CAAC,GAAGyB,IAAI,KAAK,IAAI,KAAK,OAAO,IAAIzB,GAAG,CAAC;AACzD,aAAK,IAAIA,GAAG,GAAGyB,CAAC,GAAG,KAAK,IAAI,KAAK,OAAO,IAAIzB,GAAG,GAAGG,CAAC;AAAA,MACpD;AACH,WAAO;AAAA,EACR;AAAA,EACD,iBAAiBN,GAAG;AAClB,IAAAA,IAAIyH,EAAE,YAAYzH,CAAC;AACnB,QAAI,IAAI,KAAK,MAAMG,IAAI,KAAK,SAASG,IAAIN,EAAE,MAAM4B,IAAI5B,EAAE,SAAS,IAAI,IAAIyH,EAAE,IAAInH,GAAGH,IAAIyB,CAAC;AACtF,aAAS,IAAI,GAAG,IAAI,GAAG;AACrB,eAASK,IAAI,GAAGA,IAAI9B,GAAG8B;AACrB,iBAASC,IAAI,GAAGA,IAAI5B,GAAG4B;AACrB,mBAAS,IAAI,GAAG,IAAIN,GAAG;AACrB,cAAE,IAAItB,IAAI,IAAI4B,GAAGN,IAAIK,IAAI,GAAG,KAAK,IAAI,GAAGA,CAAC,IAAIjC,EAAE,IAAIkC,GAAG,CAAC,CAAC;AAChE,WAAO;AAAA,EACR;AAAA,EACD,aAAalC,GAAG;AACd,QAAIA,IAAIyH,EAAE,YAAYzH,CAAC,GAAG,CAAC,KAAK,SAAU,KAAI,CAACA,EAAE,SAAU;AACzD,YAAM,IAAI,MAAM,yCAAyC;AAC3D,QAAI,IAAI,KAAK,MAAMG,IAAIH,EAAE,MAAMM,IAAI,KAAK,iBAAiBmH,EAAE,IAAItH,GAAGA,CAAC,CAAC,GAAGyB,IAAI6F,EAAE,IAAI,GAAG,CAAC,EAAE,iBAAiBzH,CAAC;AACzG,WAAOM,EAAE,IAAIsB,CAAC;AAAA,EACf;AAAA,EACD,YAAY;AACV,QAAI5B,IAAI,IAAIyH,EAAE,KAAK,SAAS,KAAK,IAAI;AACrC,aAAS,IAAI,GAAG,IAAI,KAAK,MAAM;AAC7B,eAAStH,IAAI,GAAGA,IAAI,KAAK,SAASA;AAChC,QAAAH,EAAE,IAAIG,GAAG,GAAG,KAAK,IAAI,GAAGA,CAAC,CAAC;AAC9B,WAAOH;AAAA,EACR;AAAA,EACD,SAASA,IAAImJ,IAAI;AACf,aAAS,IAAI,GAAG,IAAI,KAAK,MAAM;AAC7B,WAAK,OAAO,GAAG,KAAK,OAAO,CAAC,EAAE,KAAKnJ,CAAC,CAAC;AACvC,WAAO;AAAA,EACR;AAAA,EACD,YAAYA,IAAImJ,IAAI;AAClB,aAAS,IAAI,GAAG,IAAI,KAAK,SAAS;AAChC,WAAK,UAAU,GAAG,KAAK,UAAU,CAAC,EAAE,KAAKnJ,CAAC,CAAC;AAC7C,WAAO;AAAA,EACR;AAAA,EACD,UAAUA,GAAG,GAAGG,GAAGG,GAAG;AACpB2F,IAAAA,GAAG,MAAMjG,GAAG,GAAGG,GAAGG,CAAC;AACnB,QAAIsB,IAAI,IAAI6F;AAAAA,MACV,IAAIzH,IAAI;AAAA,MACRM,IAAIH,IAAI;AAAA,IACd;AACI,aAAS,IAAIH,GAAG,KAAK,GAAG;AACtB,eAAS,IAAIG,GAAG,KAAKG,GAAG;AACtB,QAAAsB,EAAE,IAAI,IAAI5B,GAAG,IAAIG,GAAG,KAAK,IAAI,GAAG,CAAC,CAAC;AACtC,WAAOyB;AAAA,EACR;AAAA,EACD,aAAa5B,GAAG,GAAGG,GAAG;AACpB,QAAI,MAAM,WAAW,IAAI,IAAIA,MAAM,WAAWA,IAAI,KAAK,UAAU,IAAI,IAAIA,KAAK,IAAI,KAAK,KAAK,KAAK,WAAWA,IAAI,KAAKA,KAAK,KAAK;AAC7H,YAAM,IAAI,WAAW,uBAAuB;AAC9C,QAAIG,IAAI,IAAImH,EAAEzH,EAAE,QAAQG,IAAI,IAAI,CAAC;AACjC,aAASyB,IAAI,GAAGA,IAAI5B,EAAE,QAAQ4B;AAC5B,eAAS,IAAI,GAAG,KAAKzB,GAAG,KAAK;AAC3B,YAAIH,EAAE4B,CAAC,IAAI,KAAK5B,EAAE4B,CAAC,KAAK,KAAK;AAC3B,gBAAM,IAAI,WAAW,2BAA2B5B,EAAE4B,CAAC,CAAC,EAAE;AACxD,QAAAtB,EAAE,IAAIsB,GAAG,IAAI,GAAG,KAAK,IAAI5B,EAAE4B,CAAC,GAAG,CAAC,CAAC;AAAA,MAClC;AACH,WAAOtB;AAAA,EACR;AAAA,EACD,gBAAgBN,GAAG,GAAGG,GAAG;AACvB,QAAI,MAAM,WAAW,IAAI,IAAIA,MAAM,WAAWA,IAAI,KAAK,OAAO,IAAI,IAAIA,KAAK,IAAI,KAAK,KAAK,KAAK,QAAQA,IAAI,KAAKA,KAAK,KAAK;AACvH,YAAM,IAAI,WAAW,uBAAuB;AAC9C,QAAIG,IAAI,IAAImH,EAAEtH,IAAI,IAAI,GAAGH,EAAE,MAAM;AACjC,aAAS4B,IAAI,GAAGA,IAAI5B,EAAE,QAAQ4B;AAC5B,eAAS,IAAI,GAAG,KAAKzB,GAAG,KAAK;AAC3B,YAAIH,EAAE4B,CAAC,IAAI,KAAK5B,EAAE4B,CAAC,KAAK,KAAK;AAC3B,gBAAM,IAAI,WAAW,8BAA8B5B,EAAE4B,CAAC,CAAC,EAAE;AAC3D,QAAAtB,EAAE,IAAI,IAAI,GAAGsB,GAAG,KAAK,IAAI,GAAG5B,EAAE4B,CAAC,CAAC,CAAC;AAAA,MAClC;AACH,WAAOtB;AAAA,EACR;AAAA,EACD,aAAaN,GAAG,GAAGG,GAAG;AACpB,QAAIH,IAAIyH,EAAE,YAAYzH,CAAC,GAAGA,EAAE,QAAS;AACnC,aAAO;AACT,QAAIM,IAAI,IAAIN,EAAE,OAAO,GAAG4B,IAAIzB,IAAIH,EAAE,UAAU;AAC5CiG,IAAAA,GAAG,MAAM,GAAG3F,GAAGH,GAAGyB,CAAC;AACnB,aAAS,IAAI,GAAG,IAAI5B,EAAE,MAAM;AAC1B,eAAS,IAAI,GAAG,IAAIA,EAAE,SAAS;AAC7B,aAAK,IAAI,IAAI,GAAGG,IAAI,GAAGH,EAAE,IAAI,GAAG,CAAC,CAAC;AACtC,WAAO;AAAA,EACR;AAAA,EACD,UAAUA,GAAG,GAAG;AACd,IAAA+F,GAAG,MAAM/F,CAAC,GAAGgG,GAAG,MAAM,CAAC;AACvB,QAAI7F,IAAI,IAAIsH,EAAEzH,EAAE,QAAQ,EAAE,MAAM;AAChC,aAASM,IAAI,GAAGA,IAAIN,EAAE,QAAQM,KAAK;AACjC,UAAIsB,IAAI5B,EAAEM,CAAC;AACX,eAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AACjC,YAAI,IAAI,EAAE,CAAC;AACX,QAAAH,EAAE,IAAIG,GAAG,GAAG,KAAK,IAAIsB,GAAG,CAAC,CAAC;AAAA,MAC3B;AAAA,IACF;AACD,WAAOzB;AAAA,EACR;AAAA,EACD,QAAQ;AACN,QAAIH,IAAI,KAAK,IAAI,KAAK,MAAM,KAAK,OAAO,GAAG,IAAI;AAC/C,aAASG,IAAI,GAAGA,IAAIH,GAAGG;AACrB,WAAK,KAAK,IAAIA,GAAGA,CAAC;AACpB,WAAO;AAAA,EACR;AAAA,EACD,QAAQ;AACN,QAAIH,IAAI,IAAIyH,EAAE,KAAK,MAAM,KAAK,OAAO;AACrC,aAAS,IAAI,GAAG,IAAI,KAAK,MAAM;AAC7B,eAAStH,IAAI,GAAGA,IAAI,KAAK,SAASA;AAChC,QAAAH,EAAE,IAAI,GAAGG,GAAG,KAAK,IAAI,GAAGA,CAAC,CAAC;AAC9B,WAAOH;AAAA,EACR;AAAA,EACD,IAAIA,GAAG;AACL,YAAQA,GAAC;AAAA,MACP,KAAK;AACH,eAAOqG,GAAG,IAAI;AAAA,MAChB,KAAK;AACH,eAAOC,GAAG,IAAI;AAAA,MAChB,KAAK;AACH,eAAOC,GAAG,IAAI;AAAA,MAChB;AACE,cAAM,IAAI,MAAM,mBAAmBvG,CAAC,EAAE;AAAA,IACzC;AAAA,EACF;AAAA,EACD,QAAQA,GAAG;AACT,YAAQA,GAAC;AAAA,MACP,KAAK;AACH,eAAOwG,GAAG,IAAI;AAAA,MAChB,KAAK;AACH,eAAOC,GAAG,IAAI;AAAA,MAChB,KAAK;AACH,eAAOC,GAAG,IAAI;AAAA,MAChB;AACE,cAAM,IAAI,MAAM,mBAAmB1G,CAAC,EAAE;AAAA,IACzC;AAAA,EACF;AAAA,EACD,KAAKA,GAAG;AACN,UAAM,IAAI,KAAK,IAAIA,CAAC;AACpB,YAAQA,GAAC;AAAA,MACP,KAAK,OAAO;AACV,iBAASG,IAAI,GAAGA,IAAI,KAAK,MAAMA;AAC7B,YAAEA,CAAC,KAAK,KAAK;AACf,eAAO;AAAA,MACR;AAAA,MACD,KAAK,UAAU;AACb,iBAASA,IAAI,GAAGA,IAAI,KAAK,SAASA;AAChC,YAAEA,CAAC,KAAK,KAAK;AACf,eAAO;AAAA,MACR;AAAA,MACD,KAAK;AACH,eAAO,IAAI,KAAK;AAAA,MAClB;AACE,cAAM,IAAI,MAAM,mBAAmBH,CAAC,EAAE;AAAA,IACzC;AAAA,EACF;AAAA,EACD,SAASA,GAAG,IAAI,IAAI;AAClB,QAAI,OAAOA,KAAK,aAAa,IAAIA,GAAGA,IAAI,SAAS,OAAO,KAAK;AAC3D,YAAM,IAAI,UAAU,2BAA2B;AACjD,UAAM,EAAE,UAAUG,IAAI,IAAI,MAAMG,IAAI,KAAK,KAAKN,CAAC,EAAC,IAAK;AACrD,QAAI,OAAOG,KAAK;AACd,YAAM,IAAI,UAAU,4BAA4B;AAClD,YAAQH,GAAC;AAAA,MACP,KAAK,OAAO;AACV,YAAI,CAAC+E,GAAEzE,CAAC;AACN,gBAAM,IAAI,UAAU,uBAAuB;AAC7C,eAAOqG,GAAG,MAAMxG,GAAGG,CAAC;AAAA,MACrB;AAAA,MACD,KAAK,UAAU;AACb,YAAI,CAACyE,GAAEzE,CAAC;AACN,gBAAM,IAAI,UAAU,uBAAuB;AAC7C,eAAOsG,GAAG,MAAMzG,GAAGG,CAAC;AAAA,MACrB;AAAA,MACD,KAAK,QAAQ;AACX,YAAI,OAAOA,KAAK;AACd,gBAAM,IAAI,UAAU,uBAAuB;AAC7C,eAAOuG,GAAG,MAAM1G,GAAGG,CAAC;AAAA,MACrB;AAAA,MACD;AACE,cAAM,IAAI,MAAM,mBAAmBN,CAAC,EAAE;AAAA,IACzC;AAAA,EACF;AAAA,EACD,kBAAkBA,GAAG,GAAG;AACtB,WAAOA,KAAK,aAAa,IAAIA,GAAGA,IAAI;AACpC,UAAMG,IAAI,KAAK,SAASH,GAAG,CAAC;AAC5B,QAAIA,MAAM;AACR,aAAO,KAAK,KAAKG,CAAC;AACpB,aAASG,IAAI,GAAGA,IAAIH,EAAE,QAAQG;AAC5B,MAAAH,EAAEG,CAAC,IAAI,KAAK,KAAKH,EAAEG,CAAC,CAAC;AACvB,WAAOH;AAAA,EACR;AAAA,EACD,OAAOH,GAAG,IAAI,IAAI;AAChB,QAAI,OAAOA,KAAK,aAAa,IAAIA,GAAGA,IAAI,SAAS,OAAO,KAAK;AAC3D,YAAM,IAAI,UAAU,2BAA2B;AACjD,UAAM,EAAE,QAAQG,IAAI,KAAK,KAAKH,CAAC,EAAG,IAAG;AACrC,YAAQA,GAAC;AAAA,MACP,KAAK,OAAO;AACV,YAAI,CAAC+E,GAAE5E,CAAC;AACN,gBAAM,IAAI,UAAU,yBAAyB;AAC/C,eAAO2G,GAAG,MAAM3G,CAAC,GAAG;AAAA,MACrB;AAAA,MACD,KAAK,UAAU;AACb,YAAI,CAAC4E,GAAE5E,CAAC;AACN,gBAAM,IAAI,UAAU,yBAAyB;AAC/C,eAAO4G,GAAG,MAAM5G,CAAC,GAAG;AAAA,MACrB;AAAA,MACD,KAAK,QAAQ;AACX,YAAI,OAAOA,KAAK;AACd,gBAAM,IAAI,UAAU,yBAAyB;AAC/C,eAAO6G,GAAG,MAAM7G,CAAC,GAAG;AAAA,MACrB;AAAA,MACD;AACE,cAAM,IAAI,MAAM,mBAAmBH,CAAC,EAAE;AAAA,IACzC;AAAA,EACF;AAAA,EACD,MAAMA,GAAG,IAAI,IAAI;AACf,QAAI,OAAOA,KAAK,aAAa,IAAIA,GAAGA,IAAI,SAAS,OAAO,KAAK;AAC3D,YAAM,IAAI,UAAU,2BAA2B;AACjD,QAAIG,IAAI,EAAE;AACV,YAAQH,GAAC;AAAA,MACP,KAAK,OAAO;AACV,YAAIG,MAAM;AACR,UAAAA,IAAI8G,GAAG,IAAI;AAAA,iBACJ,CAAClC,GAAE5E,CAAC;AACX,gBAAM,IAAI,UAAU,wBAAwB;AAC9C,eAAO+G,GAAG,MAAM/G,CAAC,GAAG;AAAA,MACrB;AAAA,MACD,KAAK,UAAU;AACb,YAAIA,MAAM;AACR,UAAAA,IAAIgH,GAAG,IAAI;AAAA,iBACJ,CAACpC,GAAE5E,CAAC;AACX,gBAAM,IAAI,UAAU,wBAAwB;AAC9C,eAAOiH,GAAG,MAAMjH,CAAC,GAAG;AAAA,MACrB;AAAA,MACD,KAAK,QAAQ;AACX,YAAIA,MAAM;AACR,UAAAA,IAAIkH,GAAG,IAAI;AAAA,iBACJ,OAAOlH,KAAK;AACnB,gBAAM,IAAI,UAAU,wBAAwB;AAC9C,eAAOmH,GAAG,MAAMnH,CAAC,GAAG;AAAA,MACrB;AAAA,MACD;AACE,cAAM,IAAI,MAAM,mBAAmBH,CAAC,EAAE;AAAA,IACzC;AAAA,EACF;AAAA,EACD,SAASA,GAAG;AACV,WAAOsF,GAAG,MAAMtF,CAAC;AAAA,EAClB;AACH;AACAwH,EAAE,UAAU,QAAQ;AACpB,OAAO,SAAS,QAAQA,EAAE,UAAU,OAAO,IAAI,4BAA4B,CAAC,IAAInC;AAChF,SAAS8D,GAAGpJ,GAAGC,GAAG;AAChB,SAAOD,IAAIC;AACb;AACA,SAASoJ,GAAGrJ,GAAG;AACb,SAAOA,EAAE,MAAM,CAACC,MAAM,OAAOA,KAAK,QAAQ;AAC5C;AACAwH,EAAE,SAASA,EAAE;AACbA,EAAE,YAAYA,EAAE;AAChBA,EAAE,WAAWA,EAAE;AACfA,EAAE,UAAU,WAAWA,EAAE,UAAU;AACnCA,EAAE,WAAWA,EAAE;AACfA,EAAE,UAAU,SAASA,EAAE,UAAU;AACjCA,EAAE,UAAU,gBAAgBA,EAAE,UAAU;QACxC,MAAMC,WAAUD,EAAE;AAAA,EAChB,YAAYxH,GAAG,GAAG;AAChB,QAAI,MAAO,GAAEyH,GAAE,SAASzH,CAAC;AACvB,aAAOA,EAAE;AACX,QAAI,OAAO,UAAUA,CAAC,KAAKA,KAAK;AAC9B,UAAI,KAAK,OAAO,IAAI,OAAO,UAAU,CAAC,KAAK,KAAK;AAC9C,iBAASG,IAAI,GAAGA,IAAIH,GAAGG;AACrB,eAAK,KAAK,KAAK,IAAI,aAAa,CAAC,CAAC;AAAA;AAEpC,cAAM,IAAI,UAAU,qCAAqC;AAAA,aACpD4E,GAAE/E,CAAC,GAAG;AACb,YAAMG,IAAIH;AACV,UAAIA,IAAIG,EAAE,QAAQ,IAAIH,IAAIG,EAAE,CAAC,EAAE,SAAS,GAAG,OAAO,KAAK;AACrD,cAAM,IAAI;AAAA,UACR;AAAA,QACV;AACM,WAAK,OAAO;AACZ,eAASG,IAAI,GAAGA,IAAIN,GAAGM,KAAK;AAC1B,YAAIH,EAAEG,CAAC,EAAE,WAAW;AAClB,gBAAM,IAAI,WAAW,+BAA+B;AACtD,YAAI,CAAC8I,GAAGjJ,EAAEG,CAAC,CAAC;AACV,gBAAM,IAAI,UAAU,wCAAwC;AAC9D,aAAK,KAAK,KAAK,aAAa,KAAKH,EAAEG,CAAC,CAAC,CAAC;AAAA,MACvC;AAAA,IACF;AACC,YAAM,IAAI;AAAA,QACR;AAAA,MACR;AACI,SAAK,OAAON,GAAG,KAAK,UAAU;AAAA,EAC/B;AAAA,EACD,IAAIA,GAAG,GAAGG,GAAG;AACX,WAAO,KAAK,KAAKH,CAAC,EAAE,CAAC,IAAIG,GAAG;AAAA,EAC7B;AAAA,EACD,IAAIH,GAAG,GAAG;AACR,WAAO,KAAK,KAAKA,CAAC,EAAE,CAAC;AAAA,EACtB;AAAA,EACD,UAAUA,GAAG;AACX,WAAO2F,GAAE,MAAM3F,CAAC,GAAG,KAAK,KAAK,OAAOA,GAAG,CAAC,GAAG,KAAK,QAAQ,GAAG;AAAA,EAC5D;AAAA,EACD,OAAOA,GAAG,GAAG;AACX,WAAO,MAAM,WAAW,IAAIA,GAAGA,IAAI,KAAK,OAAO2F,GAAE,MAAM3F,GAAG,EAAE,GAAG,IAAI,aAAa,KAAK6F,GAAG,MAAM,CAAC,CAAC,GAAG,KAAK,KAAK,OAAO7F,GAAG,GAAG,CAAC,GAAG,KAAK,QAAQ,GAAG;AAAA,EAC/I;AAAA,EACD,aAAaA,GAAG;AACd4F,IAAAA,GAAE,MAAM5F,CAAC;AACT,aAAS,IAAI,GAAG,IAAI,KAAK,MAAM,KAAK;AAClC,YAAMG,IAAI,IAAI,aAAa,KAAK,UAAU,CAAC;AAC3C,eAASG,IAAI,GAAGA,IAAIN,GAAGM;AACrB,QAAAH,EAAEG,CAAC,IAAI,KAAK,KAAK,CAAC,EAAEA,CAAC;AACvB,eAASA,IAAIN,IAAI,GAAGM,IAAI,KAAK,SAASA;AACpC,QAAAH,EAAEG,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,EAAEA,CAAC;AAC3B,WAAK,KAAK,CAAC,IAAIH;AAAA,IAChB;AACD,WAAO,KAAK,WAAW,GAAG;AAAA,EAC3B;AAAA,EACD,UAAUH,GAAG,GAAG;AACd,WAAO,IAAI,QAAQ,IAAIA,GAAGA,IAAI,KAAK,UAAU4F,GAAE,MAAM5F,GAAG,EAAE,GAAG,IAAI8F,GAAG,MAAM,CAAC;AAC3E,aAAS3F,IAAI,GAAGA,IAAI,KAAK,MAAMA,KAAK;AAClC,YAAMG,IAAI,IAAI,aAAa,KAAK,UAAU,CAAC;AAC3C,UAAIsB,IAAI;AACR,aAAOA,IAAI5B,GAAG4B;AACZ,QAAAtB,EAAEsB,CAAC,IAAI,KAAK,KAAKzB,CAAC,EAAEyB,CAAC;AACvB,WAAKtB,EAAEsB,GAAG,IAAI,EAAEzB,CAAC,GAAGyB,IAAI,KAAK,UAAU,GAAGA;AACxC,QAAAtB,EAAEsB,CAAC,IAAI,KAAK,KAAKzB,CAAC,EAAEyB,IAAI,CAAC;AAC3B,WAAK,KAAKzB,CAAC,IAAIG;AAAA,IAChB;AACD,WAAO,KAAK,WAAW,GAAG;AAAA,EAC3B;AACH;AACAoF,GAAG8B,GAAGC,CAAC;AACP,MAAM4B,WAAW7B,EAAE;AAAA,EACjB,YAAYxH,GAAG;AACb,UAAO,GAAE,KAAK,OAAOA,GAAG,KAAK,OAAOA,EAAE,QAAQ,KAAK,UAAUA,EAAE,CAAC,EAAE;AAAA,EACnE;AAAA,EACD,IAAIA,GAAG,GAAGG,GAAG;AACX,WAAO,KAAK,KAAKH,CAAC,EAAE,CAAC,IAAIG,GAAG;AAAA,EAC7B;AAAA,EACD,IAAIH,GAAG,GAAG;AACR,WAAO,KAAK,KAAKA,CAAC,EAAE,CAAC;AAAA,EACtB;AACH;AACA,SAASsJ,GAAGvJ,GAAGC,GAAG;AAChB,MAAI,IAAI;AACR,SAAO,KAAK,IAAID,CAAC,IAAI,KAAK,IAAIC,CAAC,KAAK,IAAIA,IAAID,GAAG,KAAK,IAAIA,CAAC,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAKC,MAAM,KAAK,IAAID,IAAIC,GAAG,KAAK,IAAIA,CAAC,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK;AACnJ;AACA,MAAMuJ,GAAG;AAAA,EACP,YAAYvJ,GAAG,IAAI,IAAI;AACrB,UAAM,EAAE,iBAAiBG,IAAI,GAAE,IAAK;AACpC,QAAIH,IAAIqJ,GAAG,YAAYrJ,CAAC,GAAG,CAACA,EAAE,SAAU;AACtC,YAAM,IAAI,MAAM,+BAA+B;AACjD,QAAIA,EAAE,QAAS;AACb,YAAM,IAAI,MAAM,0BAA0B;AAC5C,QAAIM,IAAIN,EAAE,SAAS4B,IAAI,IAAI6F,EAAEnH,GAAGA,CAAC,GAAG,IAAI,IAAI,aAAaA,CAAC,GAAG,IAAI,IAAI,aAAaA,CAAC,GAAG2B,IAAIjC,GAAGkC,GAAG,GAAG,IAAI;AACvG,QAAI/B,IAAI,IAAI,KAAK,IAAIH,EAAE,YAAa,GAAE,GAAG;AACvC,WAAKkC,IAAI,GAAGA,IAAI5B,GAAG4B;AACjB,aAAK,IAAI,GAAG,IAAI5B,GAAG;AACjB,UAAAsB,EAAE,IAAIM,GAAG,GAAGD,EAAE,IAAIC,GAAG,CAAC,CAAC;AAC3B,MAAAsH,GAAGlJ,GAAG,GAAG,GAAGsB,CAAC,GAAG6H,GAAGnJ,GAAG,GAAG,GAAGsB,CAAC;AAAA,IACnC,OAAW;AACL,UAAIO,IAAI,IAAIsF,EAAEnH,GAAGA,CAAC,GAAG8B,IAAI,IAAI,aAAa9B,CAAC;AAC3C,WAAK,IAAI,GAAG,IAAIA,GAAG;AACjB,aAAK4B,IAAI,GAAGA,IAAI5B,GAAG4B;AACjB,UAAAC,EAAE,IAAID,GAAG,GAAGD,EAAE,IAAIC,GAAG,CAAC,CAAC;AAC3B,MAAAwH,GAAGpJ,GAAG6B,GAAGC,GAAGR,CAAC,GAAG+H,GAAGrJ,GAAG,GAAG,GAAGsB,GAAGO,CAAC;AAAA,IACjC;AACD,SAAK,IAAI7B,GAAG,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,KAAK,IAAIsB;AAAA,EAC9C;AAAA,EACD,IAAI,kBAAkB;AACpB,WAAO,MAAM,KAAK,KAAK,CAAC;AAAA,EACzB;AAAA,EACD,IAAI,uBAAuB;AACzB,WAAO,MAAM,KAAK,KAAK,CAAC;AAAA,EACzB;AAAA,EACD,IAAI,oBAAoB;AACtB,WAAO,KAAK;AAAA,EACb;AAAA,EACD,IAAI,iBAAiB;AACnB,QAAI5B,IAAI,KAAK,GAAG,IAAI,KAAK,GAAGG,IAAI,KAAK,GAAGG,IAAI,IAAImH,EAAEzH,GAAGA,CAAC,GAAG4B,GAAG;AAC5D,SAAKA,IAAI,GAAGA,IAAI5B,GAAG4B,KAAK;AACtB,WAAK,IAAI,GAAG,IAAI5B,GAAG;AACjB,QAAAM,EAAE,IAAIsB,GAAG,GAAG,CAAC;AACf,MAAAtB,EAAE,IAAIsB,GAAGA,GAAGzB,EAAEyB,CAAC,CAAC,GAAG,EAAEA,CAAC,IAAI,IAAItB,EAAE,IAAIsB,GAAGA,IAAI,GAAG,EAAEA,CAAC,CAAC,IAAI,EAAEA,CAAC,IAAI,KAAKtB,EAAE,IAAIsB,GAAGA,IAAI,GAAG,EAAEA,CAAC,CAAC;AAAA,IACvF;AACD,WAAOtB;AAAA,EACR;AACH;AACA,SAASkJ,GAAGzJ,GAAGC,GAAG,GAAGG,GAAG;AACtB,MAAIG,GAAGsB,GAAG,GAAG,GAAGK,GAAGC,GAAG,GAAG;AACzB,OAAKD,IAAI,GAAGA,IAAIlC,GAAGkC;AACjB,MAAEA,CAAC,IAAI9B,EAAE,IAAIJ,IAAI,GAAGkC,CAAC;AACvB,OAAK,IAAIlC,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,SAAK,IAAI,GAAG,IAAI,GAAGmC,IAAI,GAAGA,IAAI,GAAGA;AAC/B,UAAI,IAAI,KAAK,IAAI,EAAEA,CAAC,CAAC;AACvB,QAAI,MAAM;AACR,WAAKlC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,GAAGiC,IAAI,GAAGA,IAAI,GAAGA;AAClC,UAAEA,CAAC,IAAI9B,EAAE,IAAI,IAAI,GAAG8B,CAAC,GAAG9B,EAAE,IAAI,GAAG8B,GAAG,CAAC,GAAG9B,EAAE,IAAI8B,GAAG,GAAG,CAAC;AAAA,SACpD;AACH,WAAKC,IAAI,GAAGA,IAAI,GAAGA;AACjB,UAAEA,CAAC,KAAK,GAAG,KAAK,EAAEA,CAAC,IAAI,EAAEA,CAAC;AAC5B,WAAK5B,IAAI,EAAE,IAAI,CAAC,GAAGsB,IAAI,KAAK,KAAK,CAAC,GAAGtB,IAAI,MAAMsB,IAAI,CAACA,IAAI5B,EAAE,CAAC,IAAI,IAAI4B,GAAG,IAAI,IAAItB,IAAIsB,GAAG,EAAE,IAAI,CAAC,IAAItB,IAAIsB,GAAGK,IAAI,GAAGA,IAAI,GAAGA;AACnH,QAAAjC,EAAEiC,CAAC,IAAI;AACT,WAAKA,IAAI,GAAGA,IAAI,GAAGA,KAAK;AACtB,aAAK3B,IAAI,EAAE2B,CAAC,GAAG9B,EAAE,IAAI8B,GAAG,GAAG3B,CAAC,GAAGsB,IAAI5B,EAAEiC,CAAC,IAAI9B,EAAE,IAAI8B,GAAGA,CAAC,IAAI3B,GAAG4B,IAAID,IAAI,GAAGC,KAAK,IAAI,GAAGA;AAChF,UAAAN,KAAKzB,EAAE,IAAI+B,GAAGD,CAAC,IAAI,EAAEC,CAAC,GAAGlC,EAAEkC,CAAC,KAAK/B,EAAE,IAAI+B,GAAGD,CAAC,IAAI3B;AACjD,QAAAN,EAAEiC,CAAC,IAAIL;AAAA,MACR;AACD,WAAKtB,IAAI,GAAG2B,IAAI,GAAGA,IAAI,GAAGA;AACxB,QAAAjC,EAAEiC,CAAC,KAAK,GAAG3B,KAAKN,EAAEiC,CAAC,IAAI,EAAEA,CAAC;AAC5B,WAAK,IAAI3B,KAAK,IAAI,IAAI2B,IAAI,GAAGA,IAAI,GAAGA;AAClC,QAAAjC,EAAEiC,CAAC,KAAK,IAAI,EAAEA,CAAC;AACjB,WAAKA,IAAI,GAAGA,IAAI,GAAGA,KAAK;AACtB,aAAK3B,IAAI,EAAE2B,CAAC,GAAGL,IAAI5B,EAAEiC,CAAC,GAAGC,IAAID,GAAGC,KAAK,IAAI,GAAGA;AAC1C,UAAA/B,EAAE,IAAI+B,GAAGD,GAAG9B,EAAE,IAAI+B,GAAGD,CAAC,KAAK3B,IAAIN,EAAEkC,CAAC,IAAIN,IAAI,EAAEM,CAAC,EAAE;AACjD,UAAED,CAAC,IAAI9B,EAAE,IAAI,IAAI,GAAG8B,CAAC,GAAG9B,EAAE,IAAI,GAAG8B,GAAG,CAAC;AAAA,MACtC;AAAA,IACF;AACD,MAAE,CAAC,IAAI;AAAA,EACR;AACD,OAAK,IAAI,GAAG,IAAIlC,IAAI,GAAG,KAAK;AAC1B,QAAII,EAAE,IAAIJ,IAAI,GAAG,GAAGI,EAAE,IAAI,GAAG,CAAC,CAAC,GAAGA,EAAE,IAAI,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,IAAI,CAAC,GAAG,MAAM,GAAG;AACvE,WAAK+B,IAAI,GAAGA,KAAK,GAAGA;AAClB,UAAEA,CAAC,IAAI/B,EAAE,IAAI+B,GAAG,IAAI,CAAC,IAAI;AAC3B,WAAKD,IAAI,GAAGA,KAAK,GAAGA,KAAK;AACvB,aAAKL,IAAI,GAAGM,IAAI,GAAGA,KAAK,GAAGA;AACzB,UAAAN,KAAKzB,EAAE,IAAI+B,GAAG,IAAI,CAAC,IAAI/B,EAAE,IAAI+B,GAAGD,CAAC;AACnC,aAAKC,IAAI,GAAGA,KAAK,GAAGA;AAClB,UAAA/B,EAAE,IAAI+B,GAAGD,GAAG9B,EAAE,IAAI+B,GAAGD,CAAC,IAAIL,IAAI,EAAEM,CAAC,CAAC;AAAA,MACrC;AAAA,IACF;AACD,SAAKA,IAAI,GAAGA,KAAK,GAAGA;AAClB,MAAA/B,EAAE,IAAI+B,GAAG,IAAI,GAAG,CAAC;AAAA,EACpB;AACD,OAAKD,IAAI,GAAGA,IAAIlC,GAAGkC;AACjB,MAAEA,CAAC,IAAI9B,EAAE,IAAIJ,IAAI,GAAGkC,CAAC,GAAG9B,EAAE,IAAIJ,IAAI,GAAGkC,GAAG,CAAC;AAC3C,EAAA9B,EAAE,IAAIJ,IAAI,GAAGA,IAAI,GAAG,CAAC,GAAGC,EAAE,CAAC,IAAI;AACjC;AACA,SAASyJ,GAAG1J,GAAGC,GAAG,GAAGG,GAAG;AACtB,MAAIG,GAAGsB,GAAG,GAAG,GAAGK,GAAGC,GAAG,GAAG,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC;AACjD,OAAK,IAAI,GAAG,IAAI3C,GAAG;AACjB,IAAAC,EAAE,IAAI,CAAC,IAAIA,EAAE,CAAC;AAChB,EAAAA,EAAED,IAAI,CAAC,IAAI;AACX,MAAIwE,IAAI,GAAGK,IAAI,GAAGJ,IAAI,OAAO;AAC7B,OAAKtC,IAAI,GAAGA,IAAInC,GAAGmC,KAAK;AACtB,SAAK0C,IAAI,KAAK,IAAIA,GAAG,KAAK,IAAI,EAAE1C,CAAC,CAAC,IAAI,KAAK,IAAIlC,EAAEkC,CAAC,CAAC,CAAC,GAAG,IAAIA,GAAG,IAAInC,KAAK,EAAE,KAAK,IAAIC,EAAE,CAAC,CAAC,KAAKwE,IAAII;AAC7F;AACF,QAAI,IAAI1C;AACN,SAAG;AACD,aAAK5B,IAAI,EAAE4B,CAAC,GAAG,KAAK,EAAEA,IAAI,CAAC,IAAI5B,MAAM,IAAIN,EAAEkC,CAAC,IAAIC,IAAImH,GAAG,GAAG,CAAC,GAAG,IAAI,MAAMnH,IAAI,CAACA,IAAI,EAAED,CAAC,IAAIlC,EAAEkC,CAAC,KAAK,IAAIC,IAAI,EAAED,IAAI,CAAC,IAAIlC,EAAEkC,CAAC,KAAK,IAAIC,IAAIC,IAAI,EAAEF,IAAI,CAAC,GAAGN,IAAItB,IAAI,EAAE4B,CAAC,GAAG,IAAIA,IAAI,GAAG,IAAInC,GAAG;AAC/K,YAAE,CAAC,KAAK6B;AACV,aAAK2C,IAAIA,IAAI3C,GAAG,IAAI,EAAE,CAAC,GAAGS,IAAI,GAAGC,IAAID,GAAGE,IAAIF,GAAGG,IAAIxC,EAAEkC,IAAI,CAAC,GAAGO,IAAI,GAAGC,IAAI,GAAG,IAAI,IAAI,GAAG,KAAKR,GAAG;AAC5F,eAAKK,IAAID,GAAGA,IAAID,GAAGK,IAAID,GAAGnC,IAAI+B,IAAIrC,EAAE,CAAC,GAAG4B,IAAIS,IAAI,GAAGF,IAAImH,GAAG,GAAGtJ,EAAE,CAAC,CAAC,GAAGA,EAAE,IAAI,CAAC,IAAIyC,IAAIN,GAAGM,IAAIzC,EAAE,CAAC,IAAImC,GAAGE,IAAI,IAAIF,GAAG,IAAIE,IAAI,EAAE,CAAC,IAAII,IAAInC,GAAG,EAAE,IAAI,CAAC,IAAIsB,IAAIa,KAAKJ,IAAI/B,IAAImC,IAAI,EAAE,CAAC,IAAIR,IAAI,GAAGA,IAAIlC,GAAGkC;AACxL,YAAAL,IAAIzB,EAAE,IAAI8B,GAAG,IAAI,CAAC,GAAG9B,EAAE,IAAI8B,GAAG,IAAI,GAAGQ,IAAItC,EAAE,IAAI8B,GAAG,CAAC,IAAII,IAAIT,CAAC,GAAGzB,EAAE,IAAI8B,GAAG,GAAGI,IAAIlC,EAAE,IAAI8B,GAAG,CAAC,IAAIQ,IAAIb,CAAC;AACtG,YAAI,CAACa,IAAIC,IAAIH,IAAIC,IAAIxC,EAAEkC,CAAC,IAAIE,GAAGpC,EAAEkC,CAAC,IAAIO,IAAI,GAAG,EAAEP,CAAC,IAAIG,IAAI;AAAA,MAChE,SAAe,KAAK,IAAIrC,EAAEkC,CAAC,CAAC,IAAIsC,IAAII;AAChC,MAAE1C,CAAC,IAAI,EAAEA,CAAC,IAAIqC,GAAGvE,EAAEkC,CAAC,IAAI;AAAA,EACzB;AACD,OAAK,IAAI,GAAG,IAAInC,IAAI,GAAG,KAAK;AAC1B,SAAKkC,IAAI,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,IAAI,GAAG,IAAIlC,GAAG;AACtC,QAAE,CAAC,IAAI,MAAMkC,IAAI,GAAG,IAAI,EAAE,CAAC;AAC7B,QAAIA,MAAM;AACR,WAAK,EAAEA,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,GAAG,IAAI,GAAG,IAAIlC,GAAG;AACxC,YAAII,EAAE,IAAI,GAAG,CAAC,GAAGA,EAAE,IAAI,GAAG,GAAGA,EAAE,IAAI,GAAG8B,CAAC,CAAC,GAAG9B,EAAE,IAAI,GAAG8B,GAAG,CAAC;AAAA,EAC7D;AACH;AACA,SAASyH,GAAG3J,GAAGC,GAAG,GAAGG,GAAG;AACtB,MAAIG,IAAI,GAAGsB,IAAI7B,IAAI,GAAG,GAAG,GAAGkC,GAAGC,GAAG,GAAG,GAAGC;AACxC,OAAK,IAAI7B,IAAI,GAAG,KAAKsB,IAAI,GAAG,KAAK;AAC/B,SAAKO,IAAI,GAAGD,IAAI,GAAGA,KAAKN,GAAGM;AACzB,MAAAC,IAAIA,IAAI,KAAK,IAAInC,EAAE,IAAIkC,GAAG,IAAI,CAAC,CAAC;AAClC,QAAIC,MAAM,GAAG;AACX,WAAKF,IAAI,GAAGC,IAAIN,GAAGM,KAAK,GAAGA;AACzB,UAAEA,CAAC,IAAIlC,EAAE,IAAIkC,GAAG,IAAI,CAAC,IAAIC,GAAGF,KAAK,EAAEC,CAAC,IAAI,EAAEA,CAAC;AAC7C,WAAK,IAAI,KAAK,KAAKD,CAAC,GAAG,EAAE,CAAC,IAAI,MAAM,IAAI,CAAC,IAAIA,IAAIA,IAAI,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG,IAAI,GAAG,IAAIlC,GAAG,KAAK;AACjG,aAAK,IAAI,GAAGmC,IAAIN,GAAGM,KAAK,GAAGA;AACzB,eAAK,EAAEA,CAAC,IAAIlC,EAAE,IAAIkC,GAAG,CAAC;AACxB,aAAK,IAAI,IAAID,GAAGC,IAAI,GAAGA,KAAKN,GAAGM;AAC7B,UAAAlC,EAAE,IAAIkC,GAAG,GAAGlC,EAAE,IAAIkC,GAAG,CAAC,IAAI,IAAI,EAAEA,CAAC,CAAC;AAAA,MACrC;AACD,WAAKA,IAAI,GAAGA,KAAKN,GAAGM,KAAK;AACvB,aAAK,IAAI,GAAG,IAAIN,GAAG,KAAK,GAAG;AACzB,eAAK,EAAE,CAAC,IAAI5B,EAAE,IAAIkC,GAAG,CAAC;AACxB,aAAK,IAAI,IAAID,GAAG,IAAI,GAAG,KAAKL,GAAG;AAC7B,UAAA5B,EAAE,IAAIkC,GAAG,GAAGlC,EAAE,IAAIkC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;AAAA,MACrC;AACD,QAAE,CAAC,IAAIC,IAAI,EAAE,CAAC,GAAGnC,EAAE,IAAI,GAAG,IAAI,GAAGmC,IAAI,CAAC;AAAA,IACvC;AAAA,EACF;AACD,OAAKD,IAAI,GAAGA,IAAInC,GAAGmC;AACjB,SAAK,IAAI,GAAG,IAAInC,GAAG;AACjB,MAAAI,EAAE,IAAI+B,GAAG,GAAGA,MAAM,IAAI,IAAI,CAAC;AAC/B,OAAK,IAAIN,IAAI,GAAG,KAAKtB,IAAI,GAAG;AAC1B,QAAIN,EAAE,IAAI,GAAG,IAAI,CAAC,MAAM,GAAG;AACzB,WAAKkC,IAAI,IAAI,GAAGA,KAAKN,GAAGM;AACtB,UAAEA,CAAC,IAAIlC,EAAE,IAAIkC,GAAG,IAAI,CAAC;AACvB,WAAK,IAAI,GAAG,KAAKN,GAAG,KAAK;AACvB,aAAK,IAAI,GAAGM,IAAI,GAAGA,KAAKN,GAAGM;AACzB,eAAK,EAAEA,CAAC,IAAI/B,EAAE,IAAI+B,GAAG,CAAC;AACxB,aAAK,IAAI,IAAI,EAAE,CAAC,IAAIlC,EAAE,IAAI,GAAG,IAAI,CAAC,GAAGkC,IAAI,GAAGA,KAAKN,GAAGM;AAClD,UAAA/B,EAAE,IAAI+B,GAAG,GAAG/B,EAAE,IAAI+B,GAAG,CAAC,IAAI,IAAI,EAAEA,CAAC,CAAC;AAAA,MACrC;AAAA,IACF;AACL;AACA,SAASyH,GAAG5J,GAAGC,GAAG,GAAGG,GAAGG,GAAG;AACzB,MAAIsB,IAAI7B,IAAI,GAAG,IAAI,GAAG,IAAIA,IAAI,GAAGkC,IAAI,OAAO,SAASC,IAAI,GAAG,IAAI,GAAG,IAAI,GAAGC,IAAI,GAAGC,IAAI,GAAGC,IAAI,GAAGC,IAAI,GAAGC,IAAI,GAAGC,GAAGC,GAAGC,GAAG6B,GAAGK,GAAGJ,GAAGC,GAAGC,GAAGC,GAAG+C,GAAGC,GAAGC,IAAGC,GAAGC,GAAG;AACvJ,OAAKtF,IAAI,GAAGA,IAAIzC,GAAGyC;AACjB,UAAMA,IAAI,KAAKA,IAAI,OAAO,EAAEA,CAAC,IAAIlC,EAAE,IAAIkC,GAAGA,CAAC,GAAGxC,EAAEwC,CAAC,IAAI,IAAIC,IAAI,KAAK,IAAID,IAAI,GAAG,CAAC,GAAGC,IAAI1C,GAAG0C;AACtF,UAAI,IAAI,KAAK,IAAInC,EAAE,IAAIkC,GAAGC,CAAC,CAAC;AAChC,SAAOb,KAAK,KAAK;AACf,SAAK2C,IAAI3C,GAAG2C,IAAI,MAAMlC,IAAI,KAAK,IAAI/B,EAAE,IAAIiE,IAAI,GAAGA,IAAI,CAAC,CAAC,IAAI,KAAK,IAAIjE,EAAE,IAAIiE,GAAGA,CAAC,CAAC,GAAGlC,MAAM,MAAMA,IAAI,IAAI,EAAE,KAAK,IAAI/B,EAAE,IAAIiE,GAAGA,IAAI,CAAC,CAAC,IAAItC,IAAII;AACrI,MAAAkC;AACF,QAAIA,MAAM3C;AACR,MAAAtB,EAAE,IAAIsB,GAAGA,GAAGtB,EAAE,IAAIsB,GAAGA,CAAC,IAAIM,CAAC,GAAG,EAAEN,CAAC,IAAItB,EAAE,IAAIsB,GAAGA,CAAC,GAAG5B,EAAE4B,CAAC,IAAI,GAAGA,KAAKW,IAAI;AAAA,aAC9DgC,MAAM3C,IAAI,GAAG;AACpB,UAAI6C,IAAInE,EAAE,IAAIsB,GAAGA,IAAI,CAAC,IAAItB,EAAE,IAAIsB,IAAI,GAAGA,CAAC,GAAG,KAAKtB,EAAE,IAAIsB,IAAI,GAAGA,IAAI,CAAC,IAAItB,EAAE,IAAIsB,GAAGA,CAAC,KAAK,GAAGO,IAAI,IAAI,IAAIsC,GAAGnC,IAAI,KAAK,KAAK,KAAK,IAAIH,CAAC,CAAC,GAAG7B,EAAE,IAAIsB,GAAGA,GAAGtB,EAAE,IAAIsB,GAAGA,CAAC,IAAIM,CAAC,GAAG5B,EAAE,IAAIsB,IAAI,GAAGA,IAAI,GAAGtB,EAAE,IAAIsB,IAAI,GAAGA,IAAI,CAAC,IAAIM,CAAC,GAAGwC,IAAIpE,EAAE,IAAIsB,GAAGA,CAAC,GAAGO,KAAK,GAAG;AACtO,aAAKG,IAAI,KAAK,IAAI,IAAIA,IAAI,IAAIA,GAAG,EAAEV,IAAI,CAAC,IAAI8C,IAAIpC,GAAG,EAAEV,CAAC,IAAI,EAAEA,IAAI,CAAC,GAAGU,MAAM,MAAM,EAAEV,CAAC,IAAI8C,IAAID,IAAInC,IAAItC,EAAE4B,IAAI,CAAC,IAAI,GAAG5B,EAAE4B,CAAC,IAAI,GAAG8C,IAAIpE,EAAE,IAAIsB,GAAGA,IAAI,CAAC,GAAGS,IAAI,KAAK,IAAIqC,CAAC,IAAI,KAAK,IAAIpC,CAAC,GAAG,IAAIoC,IAAIrC,GAAGF,IAAIG,IAAID,GAAGD,IAAI,KAAK,KAAK,IAAI,IAAID,IAAIA,CAAC,GAAG,IAAI,IAAIC,GAAGD,IAAIA,IAAIC,GAAGK,IAAIb,IAAI,GAAGa,IAAI1C,GAAG0C;AACzQ,UAAAH,IAAIhC,EAAE,IAAIsB,IAAI,GAAGa,CAAC,GAAGnC,EAAE,IAAIsB,IAAI,GAAGa,GAAGN,IAAIG,IAAI,IAAIhC,EAAE,IAAIsB,GAAGa,CAAC,CAAC,GAAGnC,EAAE,IAAIsB,GAAGa,GAAGN,IAAI7B,EAAE,IAAIsB,GAAGa,CAAC,IAAI,IAAIH,CAAC;AACpG,aAAKE,IAAI,GAAGA,KAAKZ,GAAGY;AAClB,UAAAF,IAAIhC,EAAE,IAAIkC,GAAGZ,IAAI,CAAC,GAAGtB,EAAE,IAAIkC,GAAGZ,IAAI,GAAGO,IAAIG,IAAI,IAAIhC,EAAE,IAAIkC,GAAGZ,CAAC,CAAC,GAAGtB,EAAE,IAAIkC,GAAGZ,GAAGO,IAAI7B,EAAE,IAAIkC,GAAGZ,CAAC,IAAI,IAAIU,CAAC;AACpG,aAAKE,IAAI,GAAGA,KAAK,GAAGA;AAClB,UAAAF,IAAInC,EAAE,IAAIqC,GAAGZ,IAAI,CAAC,GAAGzB,EAAE,IAAIqC,GAAGZ,IAAI,GAAGO,IAAIG,IAAI,IAAInC,EAAE,IAAIqC,GAAGZ,CAAC,CAAC,GAAGzB,EAAE,IAAIqC,GAAGZ,GAAGO,IAAIhC,EAAE,IAAIqC,GAAGZ,CAAC,IAAI,IAAIU,CAAC;AAAA,MACrG;AACC,UAAEV,IAAI,CAAC,IAAI8C,IAAI,GAAG,EAAE9C,CAAC,IAAI8C,IAAI,GAAG1E,EAAE4B,IAAI,CAAC,IAAIU,GAAGtC,EAAE4B,CAAC,IAAI,CAACU;AACxD,MAAAV,IAAIA,IAAI,GAAGW,IAAI;AAAA,IACrB,OAAW;AACL,UAAImC,IAAIpE,EAAE,IAAIsB,GAAGA,CAAC,GAAG+C,IAAI,GAAGF,IAAI,GAAGF,IAAI3C,MAAM+C,IAAIrE,EAAE,IAAIsB,IAAI,GAAGA,IAAI,CAAC,GAAG6C,IAAInE,EAAE,IAAIsB,GAAGA,IAAI,CAAC,IAAItB,EAAE,IAAIsB,IAAI,GAAGA,CAAC,IAAIW,MAAM,IAAI;AACtH,aAAKL,KAAKwC,GAAGlC,IAAI,GAAGA,KAAKZ,GAAGY;AAC1B,UAAAlC,EAAE,IAAIkC,GAAGA,GAAGlC,EAAE,IAAIkC,GAAGA,CAAC,IAAIkC,CAAC;AAC7B,QAAArC,IAAI,KAAK,IAAI/B,EAAE,IAAIsB,GAAGA,IAAI,CAAC,CAAC,IAAI,KAAK,IAAItB,EAAE,IAAIsB,IAAI,GAAGA,IAAI,CAAC,CAAC,GAAG8C,IAAIC,IAAI,OAAOtC,GAAGoC,IAAI,UAAUpC,IAAIA;AAAA,MACpG;AACD,UAAIE,MAAM,OAAOF,KAAKsC,IAAID,KAAK,GAAGrC,IAAIA,IAAIA,IAAIoC,GAAGpC,IAAI,IAAI;AACvD,aAAKA,IAAI,KAAK,KAAKA,CAAC,GAAGsC,IAAID,MAAMrC,IAAI,CAACA,IAAIA,IAAIqC,IAAID,MAAME,IAAID,KAAK,IAAIrC,IAAIG,IAAI,GAAGA,KAAKZ,GAAGY;AACtF,UAAAlC,EAAE,IAAIkC,GAAGA,GAAGlC,EAAE,IAAIkC,GAAGA,CAAC,IAAIH,CAAC;AAC7B,QAAAH,KAAKG,GAAGqC,IAAIC,IAAIF,IAAI;AAAA,MACrB;AACD,WAAKlC,IAAIA,IAAI,GAAGqC,IAAIhD,IAAI,GAAGgD,KAAKL,MAAMjC,IAAIhC,EAAE,IAAIsE,GAAGA,CAAC,GAAGxC,IAAIsC,IAAIpC,GAAGD,IAAIsC,IAAIrC,GAAG,KAAKF,IAAIC,IAAIoC,KAAKnE,EAAE,IAAIsE,IAAI,GAAGA,CAAC,IAAItE,EAAE,IAAIsE,GAAGA,IAAI,CAAC,GAAGzC,IAAI7B,EAAE,IAAIsE,IAAI,GAAGA,IAAI,CAAC,IAAItC,IAAIF,IAAIC,GAAGD,IAAI9B,EAAE,IAAIsE,IAAI,GAAGA,IAAI,CAAC,GAAGvC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,IAAIF,CAAC,IAAI,KAAK,IAAIC,CAAC,GAAG,IAAI,IAAIC,GAAGF,IAAIA,IAAIE,GAAGD,IAAIA,IAAIC,GAAG,EAAEuC,MAAML,KAAK,KAAK,IAAIjE,EAAE,IAAIsE,GAAGA,IAAI,CAAC,CAAC,KAAK,KAAK,IAAIzC,CAAC,IAAI,KAAK,IAAIC,CAAC,KAAKH,KAAK,KAAK,IAAI,CAAC,KAAK,KAAK,IAAI3B,EAAE,IAAIsE,IAAI,GAAGA,IAAI,CAAC,CAAC,IAAI,KAAK,IAAItC,CAAC,IAAI,KAAK,IAAIhC,EAAE,IAAIsE,IAAI,GAAGA,IAAI,CAAC,CAAC;AACjb,QAAAA;AACF,WAAKpC,IAAIoC,IAAI,GAAGpC,KAAKZ,GAAGY;AACtB,QAAAlC,EAAE,IAAIkC,GAAGA,IAAI,GAAG,CAAC,GAAGA,IAAIoC,IAAI,KAAKtE,EAAE,IAAIkC,GAAGA,IAAI,GAAG,CAAC;AACpD,WAAKE,IAAIkC,GAAGlC,KAAKd,IAAI,MAAMkG,IAAIpF,MAAMd,IAAI,GAAGc,MAAMkC,MAAM,IAAItE,EAAE,IAAIoC,GAAGA,IAAI,CAAC,GAAGP,IAAI7B,EAAE,IAAIoC,IAAI,GAAGA,IAAI,CAAC,GAAGN,IAAI0F,IAAIxH,EAAE,IAAIoC,IAAI,GAAGA,IAAI,CAAC,IAAI,GAAGgC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,IAAIvC,CAAC,IAAI,KAAK,IAAIC,CAAC,GAAGsC,MAAM,MAAM,IAAI,IAAIA,GAAGvC,IAAIA,IAAIuC,GAAGtC,IAAIA,IAAIsC,KAAKA,MAAM,IAAIhC;AAC3O,YAAIL,IAAI,KAAK,KAAK,IAAI,IAAIF,IAAIA,IAAIC,IAAIA,CAAC,GAAG,IAAI,MAAMC,IAAI,CAACA,IAAIA,MAAM,GAAG;AACpE,eAAKK,MAAMkC,IAAItE,EAAE,IAAIoC,GAAGA,IAAI,GAAG,CAACL,IAAIqC,CAAC,IAAIH,MAAMK,KAAKtE,EAAE,IAAIoC,GAAGA,IAAI,GAAG,CAACpC,EAAE,IAAIoC,GAAGA,IAAI,CAAC,CAAC,GAAG,IAAI,IAAIL,GAAGqC,IAAI,IAAIrC,GAAGsC,IAAIxC,IAAIE,GAAGC,IAAIF,IAAIC,GAAGF,IAAIA,IAAI,GAAGC,IAAIA,IAAI,GAAGK,IAAIC,GAAGD,IAAI1C,GAAG0C;AACrK,gBAAInC,EAAE,IAAIoC,GAAGD,CAAC,IAAIN,IAAI7B,EAAE,IAAIoC,IAAI,GAAGD,CAAC,GAAGqF,MAAM,IAAI,IAAI1F,IAAI9B,EAAE,IAAIoC,IAAI,GAAGD,CAAC,GAAGnC,EAAE,IAAIoC,IAAI,GAAGD,GAAGnC,EAAE,IAAIoC,IAAI,GAAGD,CAAC,IAAI,IAAIH,CAAC,IAAIhC,EAAE,IAAIoC,GAAGD,GAAGnC,EAAE,IAAIoC,GAAGD,CAAC,IAAI,IAAIiC,CAAC,GAAGpE,EAAE,IAAIoC,IAAI,GAAGD,GAAGnC,EAAE,IAAIoC,IAAI,GAAGD,CAAC,IAAI,IAAIkC,CAAC;AAChM,eAAKnC,IAAI,GAAGA,KAAK,KAAK,IAAIZ,GAAGc,IAAI,CAAC,GAAGF;AACnC,gBAAIkC,IAAIpE,EAAE,IAAIkC,GAAGE,CAAC,IAAIiC,IAAIrE,EAAE,IAAIkC,GAAGE,IAAI,CAAC,GAAGoF,MAAM,IAAI,IAAIxF,IAAIhC,EAAE,IAAIkC,GAAGE,IAAI,CAAC,GAAGpC,EAAE,IAAIkC,GAAGE,IAAI,GAAGpC,EAAE,IAAIkC,GAAGE,IAAI,CAAC,IAAI,IAAIN,CAAC,IAAI9B,EAAE,IAAIkC,GAAGE,GAAGpC,EAAE,IAAIkC,GAAGE,CAAC,IAAI,CAAC,GAAGpC,EAAE,IAAIkC,GAAGE,IAAI,GAAGpC,EAAE,IAAIkC,GAAGE,IAAI,CAAC,IAAI,IAAIP,CAAC;AAChM,eAAKK,IAAI,GAAGA,KAAK,GAAGA;AAClB,gBAAIkC,IAAIvE,EAAE,IAAIqC,GAAGE,CAAC,IAAIiC,IAAIxE,EAAE,IAAIqC,GAAGE,IAAI,CAAC,GAAGoF,MAAM,IAAI,IAAIxF,IAAInC,EAAE,IAAIqC,GAAGE,IAAI,CAAC,GAAGvC,EAAE,IAAIqC,GAAGE,IAAI,GAAGvC,EAAE,IAAIqC,GAAGE,IAAI,CAAC,IAAI,IAAIN,CAAC,IAAIjC,EAAE,IAAIqC,GAAGE,GAAGvC,EAAE,IAAIqC,GAAGE,CAAC,IAAI,CAAC,GAAGvC,EAAE,IAAIqC,GAAGE,IAAI,GAAGvC,EAAE,IAAIqC,GAAGE,IAAI,CAAC,IAAI,IAAIP,CAAC;AAAA,QACjM;AAAA,IACJ;AAAA,EACF;AACD,MAAI,MAAM,GAAG;AACX,SAAKP,IAAI7B,IAAI,GAAG6B,KAAK,GAAGA;AACtB,UAAI,IAAI,EAAEA,CAAC,GAAGO,IAAInC,EAAE4B,CAAC,GAAGO,MAAM;AAC5B,aAAKoC,IAAI3C,GAAGtB,EAAE,IAAIsB,GAAGA,GAAG,CAAC,GAAGY,IAAIZ,IAAI,GAAGY,KAAK,GAAGA,KAAK;AAClD,eAAKiC,IAAInE,EAAE,IAAIkC,GAAGA,CAAC,IAAI,GAAGJ,IAAI,GAAGK,IAAI8B,GAAG9B,KAAKb,GAAGa;AAC9C,YAAAL,IAAIA,IAAI9B,EAAE,IAAIkC,GAAGC,CAAC,IAAInC,EAAE,IAAImC,GAAGb,CAAC;AAClC,cAAI5B,EAAEwC,CAAC,IAAI;AACT,YAAAF,IAAImC,GAAGpC,IAAID;AAAA,mBACJmC,IAAI/B,GAAGxC,EAAEwC,CAAC,MAAM,IAAIlC,EAAE,IAAIkC,GAAGZ,GAAG6C,MAAM,IAAI,CAACrC,IAAIqC,IAAI,CAACrC,KAAKH,IAAI,EAAE,KAAKyC,IAAIpE,EAAE,IAAIkC,GAAGA,IAAI,CAAC,GAAGmC,IAAIrE,EAAE,IAAIkC,IAAI,GAAGA,CAAC,GAAGL,KAAK,EAAEK,CAAC,IAAI,MAAM,EAAEA,CAAC,IAAI,KAAKxC,EAAEwC,CAAC,IAAIxC,EAAEwC,CAAC,GAAGgC,KAAKE,IAAIrC,IAAIC,IAAIF,KAAKD,GAAG7B,EAAE,IAAIkC,GAAGZ,GAAG4C,CAAC,GAAGlE,EAAE;AAAA,YAC3MkC,IAAI;AAAA,YACJZ;AAAA,YACA,KAAK,IAAI8C,CAAC,IAAI,KAAK,IAAIpC,CAAC,KAAK,CAACF,IAAIqC,IAAID,KAAKE,KAAK,CAACrC,IAAIsC,IAAIH,KAAKlC;AAAA,UAC/D,IAAGkC,IAAI,KAAK,IAAIlE,EAAE,IAAIkC,GAAGZ,CAAC,CAAC,GAAGK,IAAIuC,IAAIA,IAAI;AACzC,iBAAK/B,IAAID,GAAGC,KAAKb,GAAGa;AAClB,cAAAnC,EAAE,IAAImC,GAAGb,GAAGtB,EAAE,IAAImC,GAAGb,CAAC,IAAI4C,CAAC;AAAA,QAChC;AAAA,eACMrC,IAAI;AACX,aAAKoC,IAAI3C,IAAI,GAAG,KAAK,IAAItB,EAAE,IAAIsB,GAAGA,IAAI,CAAC,CAAC,IAAI,KAAK,IAAItB,EAAE,IAAIsB,IAAI,GAAGA,CAAC,CAAC,KAAKtB,EAAE,IAAIsB,IAAI,GAAGA,IAAI,GAAGO,IAAI7B,EAAE,IAAIsB,GAAGA,IAAI,CAAC,CAAC,GAAGtB,EAAE,IAAIsB,IAAI,GAAGA,GAAG,EAAEtB,EAAE,IAAIsB,GAAGA,CAAC,IAAI,KAAKtB,EAAE,IAAIsB,GAAGA,IAAI,CAAC,CAAC,MAAM,IAAIgI,GAAG,GAAG,CAACtJ,EAAE,IAAIsB,IAAI,GAAGA,CAAC,GAAGtB,EAAE,IAAIsB,IAAI,GAAGA,IAAI,CAAC,IAAI,GAAGO,CAAC,GAAG7B,EAAE,IAAIsB,IAAI,GAAGA,IAAI,GAAG,EAAE,CAAC,CAAC,GAAGtB,EAAE,IAAIsB,IAAI,GAAGA,GAAG,EAAE,CAAC,CAAC,IAAItB,EAAE,IAAIsB,GAAGA,IAAI,GAAG,CAAC,GAAGtB,EAAE,IAAIsB,GAAGA,GAAG,CAAC,GAAGY,IAAIZ,IAAI,GAAGY,KAAK,GAAGA,KAAK;AACnV,eAAKkF,IAAI,GAAGC,IAAI,GAAGlF,IAAI8B,GAAG9B,KAAKb,GAAGa;AAChC,YAAAiF,IAAIA,IAAIpH,EAAE,IAAIkC,GAAGC,CAAC,IAAInC,EAAE,IAAImC,GAAGb,IAAI,CAAC,GAAG+F,IAAIA,IAAIrH,EAAE,IAAIkC,GAAGC,CAAC,IAAInC,EAAE,IAAImC,GAAGb,CAAC;AACzE,cAAI6C,IAAInE,EAAE,IAAIkC,GAAGA,CAAC,IAAI,GAAGxC,EAAEwC,CAAC,IAAI;AAC9B,YAAAF,IAAImC,GAAGrC,IAAIsF,GAAGrF,IAAIsF;AAAA,mBACXpD,IAAI/B,GAAGxC,EAAEwC,CAAC,MAAM,KAAK,IAAIoH,GAAG,CAAClC,GAAG,CAACC,GAAGlD,GAAGtC,CAAC,GAAG7B,EAAE,IAAIkC,GAAGZ,IAAI,GAAG,EAAE,CAAC,CAAC,GAAGtB,EAAE,IAAIkC,GAAGZ,GAAG,EAAE,CAAC,CAAC,MAAM8C,IAAIpE,EAAE,IAAIkC,GAAGA,IAAI,CAAC,GAAGmC,IAAIrE,EAAE,IAAIkC,IAAI,GAAGA,CAAC,GAAGoF,MAAK,EAAEpF,CAAC,IAAI,MAAM,EAAEA,CAAC,IAAI,KAAKxC,EAAEwC,CAAC,IAAIxC,EAAEwC,CAAC,IAAIL,IAAIA,GAAG0F,KAAK,EAAErF,CAAC,IAAI,KAAK,IAAIL,GAAGyF,OAAM,KAAKC,MAAM,MAAMD,KAAI3F,IAAI,KAAK,KAAK,IAAIwC,CAAC,IAAI,KAAK,IAAItC,CAAC,IAAI,KAAK,IAAIuC,CAAC,IAAI,KAAK,IAAIC,CAAC,IAAI,KAAK,IAAIrC,CAAC,KAAK,IAAIsH;AAAAA,YACnUlF,IAAItC,IAAIE,IAAIoF,IAAIvF,IAAIwF;AAAA,YACpBjD,IAAIrC,IAAIC,IAAIqF,IAAIxF,IAAIuF;AAAA,YACpBE;AAAA,YACAC;AAAA,UACD,GAAEvH,EAAE,IAAIkC,GAAGZ,IAAI,GAAG,EAAE,CAAC,CAAC,GAAGtB,EAAE,IAAIkC,GAAGZ,GAAG,EAAE,CAAC,CAAC,GAAG,KAAK,IAAI8C,CAAC,IAAI,KAAK,IAAIpC,CAAC,IAAI,KAAK,IAAIH,CAAC,KAAK7B,EAAE;AAAA,YACxFkC,IAAI;AAAA,YACJZ,IAAI;AAAA,aACH,CAAC8F,IAAIjD,IAAInE,EAAE,IAAIkC,GAAGZ,IAAI,CAAC,IAAIO,IAAI7B,EAAE,IAAIkC,GAAGZ,CAAC,KAAK8C;AAAA,UAChD,GAAEpE,EAAE;AAAA,YACHkC,IAAI;AAAA,YACJZ;AAAA,aACC,CAAC+F,IAAIlD,IAAInE,EAAE,IAAIkC,GAAGZ,CAAC,IAAIO,IAAI7B,EAAE,IAAIkC,GAAGZ,IAAI,CAAC,KAAK8C;AAAA,UAChD,MAAK,IAAIkF;AAAAA,YACR,CAACxH,IAAIuC,IAAIrE,EAAE,IAAIkC,GAAGZ,IAAI,CAAC;AAAA,YACvB,CAACS,IAAIsC,IAAIrE,EAAE,IAAIkC,GAAGZ,CAAC;AAAA,YACnBU;AAAA,YACAH;AAAA,UACZ,GAAa7B,EAAE,IAAIkC,IAAI,GAAGZ,IAAI,GAAG,EAAE,CAAC,CAAC,GAAGtB,EAAE,IAAIkC,IAAI,GAAGZ,GAAG,EAAE,CAAC,CAAC,KAAK4C,IAAI,KAAK,IAAI,KAAK,IAAIlE,EAAE,IAAIkC,GAAGZ,IAAI,CAAC,CAAC,GAAG,KAAK,IAAItB,EAAE,IAAIkC,GAAGZ,CAAC,CAAC,CAAC,GAAGK,IAAIuC,IAAIA,IAAI;AACjI,iBAAK/B,IAAID,GAAGC,KAAKb,GAAGa;AAClB,cAAAnC,EAAE,IAAImC,GAAGb,IAAI,GAAGtB,EAAE,IAAImC,GAAGb,IAAI,CAAC,IAAI4C,CAAC,GAAGlE,EAAE,IAAImC,GAAGb,GAAGtB,EAAE,IAAImC,GAAGb,CAAC,IAAI4C,CAAC;AAAA,QACtE;AACL,SAAKhC,IAAI,GAAGA,IAAIzC,GAAGyC;AACjB,UAAIA,IAAI,KAAKA,IAAI;AACf,aAAKC,IAAID,GAAGC,IAAI1C,GAAG0C;AACjB,UAAAtC,EAAE,IAAIqC,GAAGC,GAAGnC,EAAE,IAAIkC,GAAGC,CAAC,CAAC;AAC7B,SAAKA,IAAI1C,IAAI,GAAG0C,KAAK,GAAGA;AACtB,WAAKD,IAAI,GAAGA,KAAK,GAAGA,KAAK;AACvB,aAAKF,IAAI,GAAGI,IAAI,GAAGA,KAAK,KAAK,IAAID,GAAG,CAAC,GAAGC;AACtC,UAAAJ,IAAIA,IAAInC,EAAE,IAAIqC,GAAGE,CAAC,IAAIpC,EAAE,IAAIoC,GAAGD,CAAC;AAClC,QAAAtC,EAAE,IAAIqC,GAAGC,GAAGH,CAAC;AAAA,MACd;AAAA,EACJ;AACH;AACA,SAASsH,GAAG7J,GAAGC,GAAG,GAAGG,GAAG;AACtB,MAAIG,GAAGsB;AACP,SAAO,KAAK,IAAI,CAAC,IAAI,KAAK,IAAIzB,CAAC,KAAKG,IAAIH,IAAI,GAAGyB,IAAI,IAAItB,IAAIH,GAAG,EAAEJ,IAAIO,IAAIN,KAAK4B,IAAI5B,IAAIM,IAAIP,KAAK6B,CAAC,MAAMtB,IAAI,IAAIH,GAAGyB,IAAIzB,IAAIG,IAAI,GAAG,EAAEA,IAAIP,IAAIC,KAAK4B,IAAItB,IAAIN,IAAID,KAAK6B,CAAC;AAClK;AACA,SAASiI,GAAG9J,GAAGC,GAAG,GAAG;AACnB,QAAMG,IAAIJ,IAAI,GAAGO,IAAIN,IAAI;AACzB,MAAI,EAAE,SAASG,CAAC,KAAK,SAASG,CAAC,IAAI;AACjC,UAAM2B,IAAI,CAAClC,IAAIC;AACf,WAAO,SAASiC,CAAC,IAAI,CAACA,CAAC,IAAIlC,KAAK,KAAKC,KAAK,IAAI,CAAC,CAAC,IAAI,CAAA;AAAA,EACrD;AACD,QAAM4B,IAAItB,IAAIA,IAAI,IAAIH;AACtB,MAAI,IAAI;AACR,MAAI,SAASyB,CAAC,GAAG;AACf,QAAIA,IAAI;AACN,aAAO;AACT,QAAIA,KAAK;AACP,aAAO,CAAC,OAAOtB,CAAC;AAClB,QAAI,QAAQA,IAAIwJ,GAAG,KAAK,KAAKlI,CAAC,GAAGtB,CAAC;AAAA,EACnC;AACC,QAAI,CAACA;AACP,QAAM,IAAIH,IAAI;AACd,SAAO,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACnD;AACA,SAAS4J,GAAGhK,GAAGC,GAAG,GAAGG,GAAG;AACtB,QAAMG,IAAI,KAAK,IAAIH,IAAIyB,IAAI5B,KAAK,IAAIG,IAAI,IAAIJ,IAAII;AAChD,MAAI,EAAE,SAAS,CAAC,KAAK,SAASyB,CAAC,KAAK,SAAStB,CAAC;AAC5C,WAAOuJ,GAAG9J,GAAGC,GAAG,CAAC;AACnB,QAAM,IAAI,CAACM,IAAIA,IAAIsB,GAAGK,IAAI,CAACL,IAAItB,IAAI,GAAG4B,IAAI5B,IAAI,IAAIsB,IAAIA,GAAG,IAAI,IAAI,IAAIM,IAAID,IAAIA,GAAG,IAAI,KAAK3B,IAAI,IAAI2B;AACjG,MAAI,IAAI,GAAG;AACT,UAAME,IAAI,KAAK,KAAK,QAAQ,CAAC,GAAGC,IAAI,OAAO;AAC3C,WAAO,CAAC,KAAK,KAAKA,IAAID,CAAC,IAAI,KAAK,KAAKC,IAAID,CAAC,IAAI7B,CAAC;AAAA,EACnD,WAAa,KAAK,GAAG;AACjB,UAAM6B,IAAI2H,GAAG,KAAK,KAAK,CAAC,CAAC,GAAG,CAAC;AAC7B,WAAO,CAAC3H,IAAI7B,GAAG,KAAK6B,IAAI7B,CAAC;AAAA,EAC7B,OAAS;AACL,UAAM6B,IAAI,KAAK,MAAM,KAAK,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,GAAGC,IAAI,KAAK,IAAID,CAAC,GAAGE,IAAI,KAAK,IAAIF,CAAC,IAAI,KAAK,KAAK,CAAC,GAAGG,IAAI,OAAO,CAACF,IAAIC,IAAIE,IAAI,OAAO,CAACH,IAAIC,IAAIG,IAAI,IAAI,KAAK,KAAK,CAAC,CAAC;AACzJ,WAAO,CAACA,IAAIJ,IAAI9B,GAAGkC,IAAIF,IAAIhC,GAAGkC,IAAID,IAAIjC,CAAC;AAAA,EACxC;AACH;AACA,SAAS0J,GAAGjK,GAAGC,GAAG,GAAGG,GAAGG,GAAG;AACzB,MAAIA,KAAK;AACP,WAAOyJ,GAAGhK,GAAGC,GAAG,GAAGG,CAAC;AACtB,QAAMyB,IAAIzB,IAAIG,GAAG,IAAI,IAAIA,GAAG,IAAIN,IAAIM,GAAG2B,IAAIlC,IAAIO;AAC/C,MAAI4B,IAAI+H,GAAGrI,GAAG,GAAG,GAAGK,GAAG,EAAE;AACzB,MAAIC,MAAM;AACR,WAAOA;AACT,QAAM,IAAI;AACV,WAAS,IAAI,GAAG,IAAI,GAAG;AACrB,QAAIA,IAAI+H;AAAAA,MACNrI,IAAI;AAAA,MACJ,KAAK,IAAI;AAAA,MACT,KAAK,IAAI,IAAI;AAAA,MACbK,KAAK,IAAI,IAAI,IAAI;AAAA,MACjB,KAAK;AAAA,IACX,GAAOC,MAAM,MAAM;AACb,eAASC,IAAI,GAAGA,IAAID,EAAE,QAAQC;AAC5B,QAAAD,EAAEC,CAAC,KAAK;AACV,aAAOD;AAAA,IACR;AACH,SAAO;AACT;AACA,SAASgI,GAAGnK,GAAGC,GAAG;AAChB,SAAOA,KAAK,IAAI,KAAK,IAAID,CAAC,IAAI,KAAK,KAAKA,IAAIC,KAAKA,CAAC;AACpD;AACA,SAASiK,GAAGlK,GAAGC,GAAG,GAAGG,GAAGG,GAAG;AACzB,QAAMsB,IAAIuI,GAAGpK,GAAGC,GAAG,GAAGG,GAAGG,CAAC;AAC1B,MAAIsB,MAAM,QAAQA,EAAE,UAAU,GAAG;AAC/B,QAAI,IAAI,CAAA;AACR,aAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,YAAMK,IAAIL,EAAE,IAAI,CAAC,GAAGM,IAAIN,EAAE,IAAI,IAAI,CAAC;AACnC,UAAI,EAAE,OAAOiI,GAAG3H,GAAGD,GAAG,CAAC,CAAC;AAAA,IACzB;AACD,WAAO;AAAA,EACR;AACD,SAAO;AACT;AACA,SAASkI,GAAGpK,GAAGC,GAAG,GAAGG,GAAGG,GAAG;AACzB,WAASsB,EAAEoG,GAAGC,GAAGC,GAAGC,GAAG;AACrB,UAAMC,IAAI8B,GAAGlC,IAAIE,GAAGnI,CAAC,GAAGsI,IAAI6B,GAAGjC,IAAID,IAAIE,IAAIC,GAAGnI,CAAC,GAAGsI,KAAI4B,GAAGjC,IAAIC,IAAIF,IAAIG,GAAG,CAAC;AACzE,WAAOC,IAAIC,IAAIC;AAAA,EAChB;AACD,WAAS,EAAEN,GAAGC,GAAGC,GAAGC,GAAG;AACrB,WAAOvG,EAAEoG,GAAGC,GAAGC,GAAGC,CAAC,IAAI+B,GAAGjC,IAAIE,GAAGhI,CAAC;AAAA,EACnC;AACD,QAAM,IAAI,IAAIJ,IAAIA,IAAI,KAAKC,GAAGiC,IAAI,KAAK,IAAI,KAAKjC,KAAK,IAAID,IAAI+J,GAAG,KAAK,KAAK,CAAC,GAAG/J,CAAC,KAAK,QAAQA,GAAGmC,IAAInC,IAAI,IAAIkC,GAAG,IAAIjC,IAAI,IAAIiC,KAAKlC,IAAI,IAAIkC,IAAI,IAAI,IAAIA,KAAK,IAAIjC,IAAIiC,KAAK,IAAIlC,IAAI,IAAIkC,KAAKE,IAAIhC,IAAI8B,KAAK,IAAIA,KAAKjC,IAAIiC,KAAKlC,IAAIkC;AACzN,MAAIG,IAAI,GAAGC,IAAI;AACf,QAAMC,IAAI;AACV,MAAIhC,GAAG;AACL,UAAM0H,IAAI9F,IAAII,GAAG2F,IAAI,IAAI3F,GAAG4F,IAAI,IAAI5F,GAAG6F,IAAIhG,IAAIG;AAC/C,IAAAF,IAAI4F,IAAIE,IAAI,IAAI5F,IAAI6F,IAAI,IAAI,IAAIF,IAAIA,GAAG5F,KAAK2F,IAAIE,IAAI,IAAI5F,IAAI6F,IAAI,IAAI,IAAIF,IAAIA,MAAM,IAAI,KAAKA,IAAIC,KAAKA,IAAI5F,KAAK0F,IAAIA,IAAIG;AAAA,EACtH;AACC,IAAA/F,IAAIF,IAAI,IAAI,IAAIC,IAAI,IAAI,IAAI,IAAI,GAAGE,KAAKH,IAAI,IAAI,IAAIC,IAAI,IAAI,IAAI,IAAI,MAAM,IAAI,KAAK,IAAI,IAAI,IAAID,IAAIA,IAAIC;AACzG,MAAI,CAAC,SAASC,CAAC,KAAK,SAASC,CAAC;AAC5B,WAAO;AACT,MAAIE,IAAI6H,GAAGhI,GAAGC,CAAC;AACf,EAAA/B,MAAMiC,KAAKD;AACX,QAAME,IAAIzC,IAAI,KAAK0C,IAAI,IAAI,IAAIzC,IAAI,MAAMuC,GAAGG,IAAI,IAAI3C,IAAI0C,GAAG8B,IAAI,IAAI,IAAIvE,IAAIuC,IAAIC,IAAIA,GAAGoC,IAAI,MAAMlC,IAAI6B,GAAGC,IAAI,KAAKrE,IAAIsC,IAAIA,KAAKC,GAAG+B,IAAI,MAAM/B,IAAI8B;AAC9I,MAAIE,IAAI,GAAGC,IAAI,GAAG+C,IAAI;AACtB,WAASM,IAAI,GAAGA,IAAI,GAAGA,KAAK;AAC1B,UAAMC,IAAID,KAAK,IAAIvD,IAAIF,GAAG2D,IAAIF,KAAK,IAAIpD,IAAIJ,GAAG2D,IAAI+B,GAAGjC,IAAIzF,IAAIA,IAAI,IAAIC,GAAGzC,CAAC,GAAGoI,IAAI8B,GAAG,KAAKjC,IAAIC,IAAI1F,IAAIC,IAAI,CAAC,GAAG4F,IAAI6B,GAAGjC,IAAIC,IAAIA,IAAIzF,IAAIA,GAAGtC,CAAC,GAAGmI,KAAIH,IAAIC,IAAIC;AACtJ,KAACL,KAAK,KAAKM,KAAIZ,OAAOhD,IAAIuD,GAAGtD,IAAIuD,GAAGR,IAAIY;AAAA,EACzC;AACD,QAAMX,IAAIjD,GAAGkD,KAAIjD;AACjB,MAAIkD,IAAI,GAAGC,IAAI,GAAG,IAAI,GAAG,IAAI;AAC7B,MAAIH,IAAI,GAAG;AACT,UAAMK,IAAI,KAAK,KAAK,CAACL,CAAC;AACtB,QAAIE,IAAIrF,IAAIwF,GAAGF,IAAIrF,IAAIuF,IAAIJ,IAAG,IAAIpF,IAAIwF,GAAG,IAAIvF,IAAIuF,IAAIJ,IAAG,KAAK,IAAI,CAAC,IAAI,KAAK,IAAIE,CAAC,IAAI,IAAI3H,IAAI2H,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,IAAIA,CAAC,MAAMA,IAAI3H,IAAI,IAAI,KAAK,IAAI0H,CAAC,KAAK,KAAK,IAAI,CAAC,GAAG;AACpK,UAAII,IAAI,MAAMC,IAAI;AAClB,UAAI,KAAK,IAAIL,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG;AAC7B,cAAMO,KAAK,IAAIN,IAAI,KAAK,GAAGO,KAAKrI,IAAI,IAAI8H,KAAK;AAC7C,QAAAG,IAAI,CAAClI,IAAI,GAAGqI,GAAGC,CAAC,GAAGH,IAAI,CAAC,GAAG,GAAG,CAAC;AAAA,MACvC,OAAa;AACL,cAAME,KAAK,IAAIP,IAAI,KAAKC,GAAGO,KAAKrI,IAAI,IAAI8H,KAAKD,GAAGS,KAAIvI,IAAI8H;AACxD,QAAAI,IAAI,CAACJ,GAAGA,GAAGA,CAAC,GAAGK,IAAI,CAACI,IAAGF,GAAGC,CAAC;AAAA,MAC5B;AACD,UAAIF,IAAI;AACR,eAASC,IAAI,GAAGA,IAAI,GAAGA,KAAK;AAC1B,cAAMC,IAAIJ,EAAEG,CAAC,GAAGE,KAAIJ,EAAEE,CAAC;AACvB,YAAI,SAASC,CAAC,KAAK,SAASC,EAAC,GAAG;AAC9B,gBAAMC,KAAK3G,EAAEyG,GAAGP,GAAGQ,IAAG,CAAC;AACvB,WAACF,KAAK,KAAKG,KAAKJ,OAAON,IAAIQ,GAAG,IAAIC,IAAGH,IAAII;AAAA,QAC1C;AAAA,MACF;AAAA,IACF;AAAA,EACL,WAAaZ,KAAK,GAAG;AACjB,UAAMK,IAAI7H,IAAIsC,IAAIA;AAClB,IAAAoF,IAAIrF,GAAGsF,IAAIrF,IAAI,KAAK,KAAK,CAACuF,CAAC,GAAG,IAAIxF,GAAG,IAAIC,IAAI,KAAK,KAAK,CAACuF,CAAC,GAAG,KAAK,IAAIF,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI3H,IAAI2H,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,IAAIA,CAAC,MAAMA,IAAI3H,IAAI;AAAA,EAC3I;AACC,WAAO;AACT,MAAI4H,KAAK,EAAEF,GAAGC,GAAG,GAAG,CAAC;AACrB,WAASE,IAAI,GAAGA,IAAI,KAAKD,MAAM,GAAGC,KAAK;AACrC,UAAMC,IAAIH,IAAI,IAAI3H,GAAG+H,IAAIJ,IAAI,IAAID,IAAI,IAAI,GAAGM,IAAIL,IAAID,IAAI,IAAI,IAAI7H,GAAGoI,IAAIP,IAAI,IAAI9H,GAAGsI,IAAIR,IAAI,GAAGS,KAAIR,IAAIA,IAAIA,KAAK,IAAIO,IAAI,IAAI,KAAK,KAAKR,IAAIQ,IAAI;AAC5I,QAAIC,MAAK;AACP;AACF,UAAMC,KAAK,IAAID,IAAGE,KAAI,IAAIV,GAAGW,KAAKX,IAAI,IAAID,IAAI,GAAGa,KAAKL,IAAIJ,IAAIO,KAAIN,IAAIO,KAAKN,KAAKL,IAAIU,KAAIX,IAAIY,MAAML,GAAGO,MAAMd,IAAIQ,IAAIG,MAAKP,IAAIH,KAAKO,IAAIH,IAAIM,KAAIL,IAAIM,KAAKL,IAAIQ,KAAK,CAACP,IAAIJ,IAAIO,KAAIN,IAAIO,KAAKN,KAAK,IAAIM,KAAK,IAAID,MAAKJ,GAAGS,KAAK,EAAE,IAAIR,IAAIG,MAAKP,IAAI,KAAKI,IAAIH,IAAIM,KAAIL,IAAIM,KAAKL,IAAIU,KAAKjB,IAAIU,KAAKG,IAAIK,KAAKjB,IAAIS,KAAKI,IAAIK,KAAK,IAAIT,KAAKK,IAAIK,KAAK,IAAIV,KAAKM,IAAIK,KAAK,EAAEJ,IAAIC,IAAIC,IAAIC,EAAE;AAClW,QAAIC,KAAKnB;AACP,MAAAF,IAAIiB,IAAIhB,IAAIiB,IAAI,IAAIC,IAAI,IAAIC,IAAIlB,KAAKmB;AAAA;AAErC;AAAA,EACH;AACD,SAAO,CAACrB,GAAGC,GAAG,GAAG,CAAC;AACpB;AACA,SAASsC,GAAGrK,GAAGC,GAAG;AAChB,QAAM,IAAI,sBAAsBD,GAAGI,IAAI,MAAMH;AAC7C,MAAIM,GAAGsB,IAAI;AACX,OAAK,KAAK,IAAI,CAAC,KAAK,SAAS,KAAK,IAAIzB,CAAC,KAAK,WAAW,KAAK,IAAI,CAAC,IAAI,KAAK,IAAIA,CAAC,IAAIyB,IAAI,IAAI,KAAK,IAAIzB,MAAM,IAAIA,KAAKyB,IAAI,KAAK,KAAK,CAAC,KAAKzB,IAAI,KAAKA,IAAI,KAAK,IAAI,KAAKyB,MAAM,QAAQzB,KAAK;AACnL,IAAAJ,IAAI,IAAIO,IAAI,IAAIA,IAAI,KAAK,KAAK,CAACP,CAAC;AAAA,WACzB6B,MAAM,OAAOA,IAAI,IAAIzB,IAAIA,IAAI,IAAI,IAAI,GAAG;AAC/C,UAAM+B,IAAIN,MAAM,OAAOzB,IAAI,IAAI,KAAK,KAAK,CAAC,IAAIA,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC;AACrE,IAAAG,IAAI,KAAK,KAAK,KAAK,CAAC,IAAIwJ,GAAG,KAAK,IAAI,KAAK,KAAK,KAAK,IAAI5H,CAAC,CAAC,KAAK,IAAI,EAAE,GAAGA,CAAC;AAAA,EAC5E,OAAS;AACL,QAAIA;AACJ,IAAAN,MAAM,OAAO,KAAK,IAAI,CAAC,IAAI,KAAK,IAAIzB,CAAC,IAAI+B,IAAI,CAAC/B,KAAK,IAAI,KAAK,KAAKyB,CAAC,KAAKM,IAAI,CAAC/B,IAAI2J,GAAG,KAAK,KAAK,KAAK,IAAI,CAAC,CAAC,IAAI,IAAI,KAAK,KAAKlI,CAAC,GAAGzB,CAAC,IAAI+B,IAAI,KAAK,KAAK,CAAC/B,IAAI2J,GAAG,KAAK,KAAK3J,IAAIA,IAAI,IAAI,IAAI,CAAC,GAAGA,CAAC,CAAC;AACzL,UAAM,IAAI+B,KAAK,IAAI,IAAI,IAAIA;AAC3B,IAAA5B,IAAI4B,IAAI;AAAA,EACT;AACD,MAAI,IAAI5B,GAAG,KAAK,IAAI,IAAIP,KAAK,IAAIC;AAEjC,MAAI,KAAK,IAAI,CAAC,IADJ,aACY,KAAK,IAAI,IAAI,IAAI,GAAGD,IAAI,GAAGC,CAAC;AAChD,WAAO;AACT,WAASkC,IAAI,GAAGA,IAAI,GAAGA,KAAK;AAC1B,UAAM,IAAI,IAAI,IAAI,IAAInC;AACtB,QAAI,KAAK;AACP;AACF,UAAM,IAAI,IAAI,IAAI,GAAGoC,KAAK,IAAI,IAAIpC,KAAK,IAAIC;AAC3C,QAAImC,KAAK;AACP,aAAO;AACT,QAAI,KAAK,IAAIA,CAAC,KAAK,KAAK,IAAI,CAAC;AAC3B;AACF,QAAI,GAAG,IAAIA;AAAA,EACZ;AACD,SAAO;AACT;AACA,SAAS2H,GAAG/J,GAAGC,GAAG;AAChB,QAAM,IAAI,KAAK,IAAID,CAAC;AACpB,SAAOC,IAAI,IAAI,CAAC,IAAI;AACtB;AACA,SAASqK,GAAGtK,GAAGC,IAAI,MAAM;AACvB,MAAID,EAAEA,EAAE,SAAS,CAAC,KAAK;AACrB,WAAOsK,GAAGtK,EAAE,MAAM,GAAG,EAAE,GAAGC,CAAC;AAC7B,QAAM,IAAI,IAAIyH,EAAE;AAAA,IACd1H,EAAE,MAAM,GAAG,EAAE,EAAE,QAAO,EAAG,IAAI,CAACO,MAAM,CAACA,IAAIP,EAAEA,EAAE,SAAS,CAAC,CAAC;AAAA,IACxD,GAAG,MAAM,KAAK,EAAE,QAAQA,EAAE,SAAS,EAAG,GAAE,CAACO,GAAGsB,MAAM;AAChD,YAAM,IAAI,IAAI,MAAM7B,EAAE,SAAS,CAAC,EAAE,KAAK,CAAC;AACxC,aAAO,EAAE6B,CAAC,IAAI,GAAG;AAAA,IACvB,CAAK;AAAA,EACF,CAAA,GAAGzB,IAAI,IAAIoJ,GAAG,CAAC;AAChB,SAAOpJ,EAAE,gBAAgB;AAAA,IACvB,CAACG,GAAGsB,MAAM,KAAK,IAAIzB,EAAE,qBAAqByB,CAAC,CAAC,IAAI5B;AAAA,EACpD;AACA;AACA,MAAMsK,KAAK,CAACvK,GAAGC,GAAG,MAAM,CAACD,EAAE,CAAC,KAAK,IAAI,KAAKC,EAAE,CAAC,IAAI,GAAGD,EAAE,CAAC,KAAK,IAAI,KAAKC,EAAE,CAAC,IAAI,CAAC;AAC7E,SAASuK,GAAGxK,GAAG;AACb,QAAMC,IAAI,CAAA;AACV,WAAS,IAAI,GAAG,IAAID,EAAE,SAAS,GAAG;AAChC,IAAAC,EAAE,KAAK,CAACD,EAAE,CAAC,GAAGA,EAAE,IAAI,CAAC,CAAC,CAAC;AACzB,SAAOC;AACT;AACA,SAASwK,GAAGzK,GAAGC,GAAG;AAChB,QAAM,IAAIuK,GAAGxK,CAAC,EAAE,IAAI,CAAC,CAACI,GAAGG,CAAC,MAAMgK,GAAGnK,GAAGG,GAAGN,CAAC,CAAC;AAC3C,SAAOD,EAAE,WAAW,IAAI,CAAC,CAAC,IAAI,CAAC,GAAGyK,GAAG,GAAGxK,CAAC,GAAG,CAAC;AAC/C;QACA,MAAMyK,WAAWvH,GAAG;AAAA,EAClB,YAAYF,GAAG7C,GAAG,GAAGyB,GAAG;AACtB,UAAMoB,GAAG7C,CAAC,GACVF,EAAE,MAAM,eAAe,cAAc,GACrCA,EAAE,MAAM,mBAAmB,GAC3BA,EAAE,MAAM,kBAAkB,GAC1BA,EAAE,MAAM,gBAAgB,IAAI,GAC5BA,EAAE,MAAM,2BAA2B,IAAI,GACvC,KAAK,oBAAoB,GAAG,KAAK,mBAAmB2B;AAAA,EACrD;AAAA,EACD,IAAI,WAAW;AACb,WAAO,KAAK,WAAW,GAAG;AAAA,EAC3B;AAAA,EACD,IAAI,cAAc;AAChB,QAAI,KAAK,iBAAiB,MAAM;AAC9B,YAAMoB,IAAI,CAAC7C,MAAM;AACf,cAAM,CAAC,GAAGyB,GAAGuB,GAAGC,CAAC,IAAI;AAAA,UACnB,KAAK,WAAWjD,CAAC;AAAA,UACjB,KAAK,kBAAkBA,CAAC;AAAA,UACxB,KAAK,iBAAiBA,CAAC;AAAA,UACvB,KAAK,UAAUA,CAAC;AAAA,QAC1B,GAAW8B,IAAI,CAAC,IAAI,IAAIL,IAAI,IAAIuB,IAAIC,GAAG,IAAI,IAAI,IAAI,IAAIxB,IAAI,IAAIuB,GAAGE,IAAI,CAAC,IAAIzB;AACnE,eAAOiI,GAAGxG,GAAG,GAAGpB,CAAC,EAAE;AAAA,UACjB,CAAC6B,MAAMA,KAAK,CAAC,KAAK,aAAaA,KAAK,IAAI,KAAK;AAAA,QACvD;AAAA,MACA;AACM,WAAK,eAAevD,GAAG;AAAA,QACrB,KAAK;AAAA,QACL,GAAGyC,EAAE,CAAC,EAAE,IAAI,CAAC7C,MAAM,KAAK,WAAWA,CAAC,CAAC;AAAA,QACrC,GAAG6C,EAAE,CAAC,EAAE,IAAI,CAAC7C,MAAM,KAAK,WAAWA,CAAC,CAAC;AAAA,QACrC,KAAK;AAAA,MACN,CAAA,EAAE,KAAK,KAAK,SAAS;AAAA,IACvB;AACD,WAAO,KAAK;AAAA,EACb;AAAA,EACD,QAAQ;AACN,WAAO,IAAIsK;AAAA,MACT,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,IACX;AAAA,EACG;AAAA,EACD,UAAU;AACR,WAAO,IAAIA;AAAA,MACT,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,IACX;AAAA,EACG;AAAA,EACD,OAAOzH,GAAG;AACR,WAAOA,EAAE,gBAAgB,iBAAiB,KAAKnC,EAAE,KAAK,YAAYmC,EAAE,UAAU,KAAKnC,EAAE,KAAK,WAAWmC,EAAE,SAAS,KAAKnC,EAAE,KAAK,mBAAmBmC,EAAE,iBAAiB,KAAKnC,EAAE,KAAK,kBAAkBmC,EAAE,gBAAgB;AAAA,EACnN;AAAA,EACD,aAAaA,GAAG;AACd,UAAM1C,IAAIuE,GAAG,CAACjD,MAAMT,GAAG,KAAK,WAAWS,CAAC,GAAGoB,CAAC,GAAG,KAAK,SAAS;AAC7D,WAAO1C,EAAE,SAAS,CAAC,KAAK,aAAaA,EAAE,SAAS,IAAI,KAAK,YAAY,KAAK;AAAA,MACxEc,EAAE,KAAK,YAAY4B,CAAC;AAAA,MACpB5B,EAAE,KAAK,WAAW4B,CAAC;AAAA,IACpB,IAAG,KAAK,KAAK1C,EAAE,IAAI;AAAA,EACrB;AAAA,EACD,YAAY0C,GAAG;AACb,QAAI,CAAC,KAAK,YAAY,SAASA,CAAC;AAC9B,aAAO;AACT,QAAI;AACF,YAAM7C,IAAI,KAAK,aAAa6C,CAAC;AAC7B,aAAO7C,KAAK,CAAC,KAAK,aAAaA,KAAK,IAAI,KAAK;AAAA,IACnD,QAAY;AACN,aAAO;AAAA,IACR;AAAA,EACF;AAAA,EACD,WAAW6C,GAAG;AACZ,UAAM7C,IAAI,IAAI6C,GAAG,IAAI7C,IAAIA,GAAGyB,IAAIoB,IAAIA,GAAGG,IAAI,IAAI,GAAGC,IAAI,IAAIjD,IAAI6C,GAAGf,IAAI,IAAIL,GAAG,IAAIb,EAAE,KAAK,mBAAmB,KAAK,UAAU,GAAGsC,IAAItC,EAAE,KAAK,kBAAkB,KAAK,iBAAiB,GAAG+C,IAAI/C,EAAE,KAAK,WAAW,KAAK,gBAAgB;AAC7N,WAAO;AAAA,MACLoC,IAAI,EAAE,CAAC,IAAIC,IAAIC,EAAE,CAAC,IAAIpB,IAAI6B,EAAE,CAAC;AAAA,MAC7BX,IAAI,EAAE,CAAC,IAAIC,IAAIC,EAAE,CAAC,IAAIpB,IAAI6B,EAAE,CAAC;AAAA,IACnC;AAAA,EACG;AAAA,EACD,UAAUd,GAAG;AACX,UAAM7C,IAAI,KAAK,aAAa6C,CAAC;AAC7B,WAAOzB,EAAE,KAAK,WAAWpB,CAAC,CAAC;AAAA,EAC5B;AAAA,EACD,IAAI,sBAAsB;AACxB,WAAOoB,EAAER,EAAE,KAAK,mBAAmB,KAAK,UAAU,CAAC;AAAA,EACpD;AAAA,EACD,IAAI,qBAAqB;AACvB,WAAOQ,EAAER,EAAE,KAAK,kBAAkB,KAAK,SAAS,CAAC;AAAA,EAClD;AAAA,EACD,SAASiC,GAAG;AACV,UAAM7C,IAAI,KAAK,UAAU6C,CAAC;AAC1B,WAAOnB,GAAE1B,CAAC;AAAA,EACX;AAAA,EACD,kBAAkB6C,GAAG7C,IAAI,MAAM;AAC7B,UAAM,IAAI,CAAC,GAAG6C,CAAC;AACf,MAAE,KAAK,CAACG,GAAGC,MAAMD,IAAIC,CAAC;AACtB,QAAIxB,IAAI;AAAA,MACN,eAAe;AAAA,MACf,OAAO;AAAA,MACP,IAAI,KAAK;AAAA,MACT,IAAI,KAAK;AAAA,MACT,IAAI,KAAK;AAAA,IACf;AACI,WAAO,EAAE,QAAQ,CAACuB,GAAGC,MAAM;AACzB,UAAID,IAAIvB,EAAE,gBAAgB,KAAK;AAC7B,eAAO;AACT,UAAIK,IAAI;AACR,MAAAkB,IAAI,IAAI,KAAK,cAAclB,IAAI;AAC/B,YAAM,KAAKkB,IAAIvB,EAAE,kBAAkB,IAAIA,EAAE,gBAAgByB,IAAImH;AAAA,QAC3D;AAAA,UACE5I,EAAE;AAAA,UACFA,EAAE;AAAA,UACFA,EAAE;AAAA,UACF,KAAK;AAAA,QACN;AAAA,QACDK,IAAI,IAAI;AAAA,MAChB,GAAS6B,IAAI7B,IAAI,KAAK,aAAa9B,KAAK,OAAO,SAASA,EAAE,IAAIgD,CAAC,MAAME,EAAE,CAAC,EAAE,CAAC,GAAGlB,IAAIkB,EAAE,CAAC,EAAE,CAAC,GAAGjB,IAAIiB,EAAE,CAAC,EAAE,CAAC,GAAG,IAAIA,EAAE,CAAC,EAAE,CAAC,GAAG,IAAIA,EAAE,CAAC,EAAE,CAAC,GAAGd,IAAI,IAAIkI;AAAA,QAClI7I,EAAE;AAAA,QACFkC;AAAA,QACA1B;AAAA,QACAD;AAAA,MACR;AACM,aAAOP,IAAI;AAAA,QACT,OAAO;AAAA,QACP,eAAeuB;AAAA,QACf,IAAIW;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MACL,GAAEV,MAAM,EAAE,SAAS,KAAK,CAACnB,IAAI;AAAA,QAC5BM;AAAA,QACA,IAAIkI;AAAA,UACF7I,EAAE;AAAA,UACF,KAAK;AAAA,UACLA,EAAE;AAAA,UACFA,EAAE;AAAA,QACH;AAAA,MACF,IAAGW;AAAA,IACV,CAAK;AAAA,EACF;AAAA,EACD,QAAQS,GAAG;AACT,QAAI7C;AACJ,QAAI,MAAM,QAAQ6C,CAAC,KAAKA,EAAE,WAAW;AACnC,aAAO,CAAC,IAAI;AACd,UAAM,QAAQA,EAAE,CAAC,CAAC,IAAI7C,IAAI6C,IAAI7C,IAAI,CAAC6C,CAAC;AACpC,UAAM,IAAI7C,EAAE,IAAI,CAACgD,MAAM,KAAK,aAAaA,CAAC,CAAC,GAAGvB,IAAI,IAAI;AAAA,MACpD2B,GAAG,CAAC,GAAGpD,CAAC,CAAC;AAAA,IACf;AACI,WAAO,KAAK,kBAAkB,GAAGyB,CAAC;AAAA,EACnC;AAAA,EACD,UAAUoB,GAAG;AACX,WAAO,IAAIyH;AAAA,MACTzH,EAAE,UAAU,KAAK,UAAU;AAAA,MAC3BA,EAAE,UAAU,KAAK,SAAS;AAAA,MAC1BA,EAAE,UAAU,KAAK,iBAAiB;AAAA,MAClCA,EAAE,UAAU,KAAK,gBAAgB;AAAA,IACvC;AAAA,EACG;AAAA,EACD,WAAWA,GAAG;AACZ,UAAM7C,IAAI,IAAI6C,GAAG,IAAI7C,IAAIA,GAAGyB,IAAIoB,IAAIA,GAAGG,IAAI,IAAIhD,GAAGiD,IAAI,IAAI,IAAIJ,GAAGf,IAAI,IAAI9B,IAAIyB,GAAG,IAAIA,IAAIoB;AACxF,WAAO;AAAA,MACLG,IAAI,KAAK,WAAW,CAAC,IAAIC,IAAI,KAAK,kBAAkB,CAAC,IAAInB,IAAI,KAAK,iBAAiB,CAAC,IAAI,IAAI,KAAK,UAAU,CAAC;AAAA,MAC5GkB,IAAI,KAAK,WAAW,CAAC,IAAIC,IAAI,KAAK,kBAAkB,CAAC,IAAInB,IAAI,KAAK,iBAAiB,CAAC,IAAI,IAAI,KAAK,UAAU,CAAC;AAAA,IAClH;AAAA,EACG;AAAA,EACD,IAAI,yBAAyB;AAC3B,QAAI,KAAK,4BAA4B,MAAM;AACzC,YAAMe,IAAI,CAAC7C,MAAM;AACf,cAAM,IAAI,KAAK,WAAWA,CAAC,GAAGyB,IAAI,KAAK,kBAAkBzB,CAAC,GAAGgD,IAAI,KAAK,iBAAiBhD,CAAC,GAAGiD,IAAI,KAAK,UAAUjD,CAAC,GAAG8B,IAAI,CAAC,IAAI,IAAIL,IAAI,IAAIuB,IAAIC,GAAG,IAAI,IAAI,IAAI,IAAIxB,IAAI,IAAIuB,GAAGE,IAAI,KAAK,IAAI,IAAIzB;AAC1L,eAAO,CAAC,GAAGyB,GAAG,GAAGpB,CAAC;AAAA,MAC1B;AACM,WAAK,0BAA0B,CAACe,EAAE,CAAC,GAAGA,EAAE,CAAC,CAAC;AAAA,IAC3C;AACD,WAAO,KAAK;AAAA,EACb;AAAA,EACD,UAAUA,GAAG;AACX,UAAM,CAAC7C,GAAG,GAAGyB,GAAGuB,CAAC,IAAI,KAAK,uBAAuB,CAAC;AAClD,WAAO4G,GAAG5J,IAAI6C,GAAG,GAAGpB,GAAGuB,CAAC,EAAE;AAAA,MACxB,CAACC,MAAMA,KAAK,CAAC,KAAK,aAAaA,KAAK,IAAI,KAAK;AAAA,IACnD;AAAA,EACG;AAAA,EACD,aAAaJ,GAAG;AACd,UAAM7C,IAAI,KAAK,UAAU6C,EAAE,CAAC,CAAC;AAC7B,QAAI7C,EAAE,WAAW;AACf,YAAM,IAAI,MAAM,2BAA2B;AAC7C,UAAM,IAAI,CAACgD,MAAM,KAAK,IAAI,KAAK,WAAWA,CAAC,EAAE,CAAC,IAAIH,EAAE,CAAC,CAAC,KAAK,KAAK,WAAWpB,IAAIzB,EAAE,KAAK,CAAC;AACvF,QAAIyB,MAAM;AACR,YAAM,IAAI,MAAM,2BAA2B;AAC7C,WAAOA;AAAA,EACR;AACH,OACA,MAAM8I,WAAWxH,GAAG;AAAA,EAClB,YAAYF,GAAG7C,GAAG,GAAGyB,GAAGuB,GAAGC,GAAGnB,IAAI,IAAI;AAAA,IACpC,cAAc,IAAI;AAAA,IAClB,YAAYoB,IAAI;AAAA,EACjB,IAAG,IAAI;AACN,UAAML,GAAG7C,CAAC,GACVF,EAAE,MAAM,eAAe,aAAa,GAGpCA,EAAE,MAAM,aAAa,IAAI,GACzBA,EAAE,MAAM,aAAa,GACrBA,EAAE,MAAM,aAAa,GACrBA,EAAE,MAAM,QAAQ,GAChBA,EAAE,MAAM,WAAW,GACnBA,EAAE,MAAM,WAAW,GACnBA,EAAE,MAAM,iBAAiB,IAAI,GAC7BA,EAAE,MAAM,cAAc,GACtBA,EAAE,MAAM,oBAAoB,GAC5BA,EAAE,MAAM,cAAc,GACtBA,EAAE,MAAM,SAAS,GACjBA,EAAE,MAAM,iCAAiC,GACzCA,EAAE,MAAM,wCAAwC,GAChDA,EAAE,MAAM,kCAAkC,GAC1CA,EAAE,MAAM,aAAa,GACrBA,EAAE,MAAM,YAAY,GACpBA,EAAE,MAAM,aAAa,GACrB,KAAK,SAAS;AACd,UAAM6D,IAAIlC,KAAKuB;AACf,SAAK,cAAcW,IAAIlC,IAAIuB,GAAG,KAAK,cAAcW,IAAIX,IAAIvB;AACzD,UAAMO,IAAIkB,MAAM,QAAQD,IAAI1C,KAAK0C;AACjC,QAAI,KAAK,YAAYI;AAAA,MACnBM,IAAI3B,IAAIA,IAAI,KAAK,KAAK;AAAA,IACvB,GAAE,KAAK,YAAYF,GAAG,CAAC,GAAG;AACzB,UAAIpB,EAAEmC,GAAG7C,CAAC;AACR,cAAM,IAAI,MAAM,sCAAsC;AACxD,UAAI,CAAC,KAAK,iBAAiB6C,CAAC;AAC1B,cAAM,IAAI;AAAA,UACR,eAAepC;AAAAA,YACboC;AAAA,UACZ,CAAW,kCAAkC,KAAK,IAAI;AAAA,QACtD;AACM,UAAI,CAAC,KAAK,iBAAiB7C,CAAC;AAC1B,cAAM,IAAI;AAAA,UACR,cAAcS,EAAET,CAAC,CAAC,kCAAkC,KAAK,IAAI;AAAA,QACvE;AACM,UAAI,KAAK,IAAI,KAAK,cAAc,KAAK,WAAW,IAAI,KAAK;AACvD,cAAM,IAAI;AAAA,UACR;AAAA,QACV;AAAA,IACK;AAAA,EACF;AAAA,EACD,IAAI,eAAe;AACjB,QAAI,KAAK,kBAAkB,MAAM;AAC/B,YAAM,CAAC6C,GAAG7C,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,cAAc,KAAK,aAAayB,IAAI,KAAK,cAAc,KAAK,aAAauB,IAAI,KAAK,IAAI,KAAK,SAAS,GAAGC,IAAI,KAAK,IAAI,KAAK,SAAS,GAAGnB,IAAI,IAAImB,IAAIA,IAAIxB,IAAIuB,IAAIA,GAAG,IAAI,KAAKvB,IAAI,KAAKwB,IAAID,GAAGE,IAAI,IAAIF,IAAIA,IAAIvB,IAAIwB,IAAIA;AACtP,WAAK,gBAAgB;AAAA,QACnB,IAAInB;AAAA,QACJ,IAAI;AAAA,QACJ,IAAIoB;AAAA,QACJ,GAAG,KAAKpB,IAAIe,IAAI,IAAI7C;AAAA,QACpB,GAAG,KAAKkD,IAAIlD,IAAI,IAAI6C;AAAA,QACpB,GAAGf,IAAIe,IAAIA,IAAI,IAAIA,IAAI7C,IAAIkD,IAAIlD,IAAIA,IAAI,IAAIyB;AAAA,MACnD;AAAA,IACK;AACD,WAAO,KAAK;AAAA,EACb;AAAA,EACD,IAAI,OAAO;AACT,WAAO,eAAehB,EAAE,KAAK,UAAU,CAAC,KAAKA;AAAAA,MAC3C,KAAK;AAAA,IACX,CAAK,KAAKA,EAAE,KAAK,MAAM,CAAC,KAAK,KAAK,WAAW,KAAK,KAAK,WAAW,KAAK,KAAK,YAAYD,EAAE,KAAK,KAAK,YAAY,OAAO,KAAK;AAAA,EACzH;AAAA,EACD,UAAU;AACR,WAAO,IAAI+J;AAAA,MACT,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,CAAC,KAAK;AAAA,MACN,EAAE,cAAc,IAAI,YAAY,MAAO;AAAA,IAC7C;AAAA,EACG;AAAA,EACD,QAAQ;AACN,WAAO,IAAIA;AAAA,MACT,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,EAAE,cAAc,IAAI,YAAY,MAAO;AAAA,IAC7C;AAAA,EACG;AAAA,EACD,wBAAwB;AACtB,UAAM1H,IAAI,KAAK,IAAI,KAAK,SAAS,GAAG7C,IAAI,KAAK,cAAc,KAAK,aAAa,IAAI,CAAC,KAAK,KAAKA,IAAI6C,CAAC,GAAGpB,IAAI,KAAK,KAAKzB,IAAI6C,CAAC;AACvH,WAAO,CAAC,GAAG,KAAK,KAAK,GAAGpB,GAAG,KAAK,KAAKA,CAAC,EAAE,IAAI,CAACwB,MAAM,KAAK,aAAaA,CAAC,CAAC,EAAE,OAAO,CAACA,MAAM,KAAK,iBAAiBA,CAAC,CAAC,EAAE,IAAI,CAACA,MAAM,KAAK,WAAWA,CAAC,CAAC;AAAA,EAC/I;AAAA,EACD,IAAI,cAAc;AAChB,QAAI,KAAK,iBAAiB,QAAQ;AAChC,YAAMJ,IAAI,KAAK,sBAAqB,GAAI7C,IAAI;AAAA,QAC1C,KAAK;AAAA,QACL,KAAK;AAAA,QACL,GAAG6C;AAAA,MACX;AACM,WAAK,eAAezC,GAAGJ,CAAC,EAAE,KAAK,KAAK,SAAS;AAAA,IAC9C;AACD,WAAO,KAAK;AAAA,EACb;AAAA,EACD,IAAI,oBAAoB;AACtB,WAAO,KAAK,uBAAuB,WAAW,KAAK,qBAAqB,KAAK;AAAA,MAC3E,KAAK,cAAc,KAAK,cAAc,KAAK,cAAc,KAAK;AAAA,IACpE,IAAQ,KAAK;AAAA,EACV;AAAA,EACD,IAAI,cAAc;AAChB,WAAO,KAAK,iBAAiB,WAAW,KAAK,eAAe,KAAK,oBAAoB,KAAK,cAAc,KAAK;AAAA,EAC9G;AAAA,EACD,IAAI,SAAS;AACX,QAAI,KAAK,YAAY,QAAQ;AAC3B,YAAM6C,IAAI,KAAK;AACf,WAAK,UAAU;AAAA,QACblC,EAAG,KAAK,QAAQI,EAAG8B,GAAG,KAAK,iBAAiB,CAAC;AAAA,QAC7ClC,EAAG,KAAK,QAAQI,EAAG8B,GAAG,CAAC,KAAK,iBAAiB,CAAC;AAAA,MACtD;AAAA,IACK;AACD,WAAO,KAAK;AAAA,EACb;AAAA,EACD,IAAI,YAAY;AACd,WAAOxB,GAAG,GAAG,KAAK,SAAS;AAAA,EAC5B;AAAA,EACD,WAAWwB,GAAG;AACZ,UAAM7C,IAAI,KAAK,aAAa6C,IAAI,KAAK,cAAc,KAAK,YAAY,KAAK;AACzE,WAAO,KAAK,sCAAsC,UAAU;AAAA,MAC1D,KAAK,cAAc,KAAK,IAAI7C,CAAC;AAAA,MAC7B,KAAK,cAAc,KAAK,IAAIA,CAAC;AAAA,IACnC,CAAK;AAAA,EACF;AAAA,EACD,aAAa6C,GAAG;AACd,QAAI,CAAC,KAAK,iBAAiBA,CAAC;AAC1B,YAAM,IAAI;AAAA,QACR,SAASpC,EAAEoC,CAAC,CAAC,kCAAkC,KAAK,IAAI;AAAA,MAChE;AACI,UAAM7C,IAAI,KAAK,aAAa,KAAK,WAAW6C,CAAC,CAAC;AAC9C,QAAI,CAAC,KAAK,iBAAiB7C,CAAC;AAC1B,YAAM,IAAI;AAAA,QACR,SAASS,EAAEoC,CAAC,CAAC,sBAAsB,KAAK,IAAI;AAAA,MACpD;AACI,WAAO7C;AAAA,EACR;AAAA,EACD,IAAI,WAAW;AACb,WAAO,KAAK,WAAW,GAAG;AAAA,EAC3B;AAAA,EACD,iBAAiB6C,GAAG;AAClB,WAAO,IAAIA,KAAK,CAAC,KAAK,aAAaA,KAAK,CAAC,KAAK;AAAA,EAC/C;AAAA,EACD,OAAOA,GAAG;AACR,WAAOnC,EAAE,KAAK,QAAQmC,EAAE,MAAM,KAAK,KAAK,IAAI,KAAK,cAAcA,EAAE,WAAW,IAAI,KAAK,aAAa,KAAK,IAAI,KAAK,cAAcA,EAAE,WAAW,IAAI,KAAK,cAAc,KAAK,IAAI,KAAK,YAAYA,EAAE,SAAS,IAAI,KAAK,aAAa,KAAK,IAAI,KAAK,IAAI,KAAK,YAAYA,EAAE,SAAS,IAAI,KAAK,EAAE,IAAI,KAAK,eAAenC,EAAE,KAAK,YAAYmC,EAAE,UAAU,KAAK,KAAK,cAAcA,EAAE,aAAanC,EAAE,KAAK,YAAYmC,EAAE,SAAS,KAAK,KAAK,cAAcA,EAAE;AAAA,EAC7a;AAAA,EACD,WAAWA,GAAG;AACZ,UAAM7C,IAAI,KAAK,+BAA+B,UAAU6C,CAAC,GAAG,IAAI,KAAK;AAAA,MACnE7C,EAAE,CAAC,IAAI,KAAK;AAAA,MACZA,EAAE,CAAC,IAAI,KAAK;AAAA,IAClB;AACI,WAAOqD,GAAG,CAAC;AAAA,EACZ;AAAA,EACD,aAAaR,GAAG;AACd,WAAOS,GAAG,KAAK,YAAYD,GAAGR,CAAC,GAAG,KAAK,SAAS,IAAI,KAAK;AAAA,EAC1D;AAAA,EACD,iBAAiBA,GAAG;AAClB,UAAM,CAAC7C,GAAG,CAAC,IAAI,KAAK,QAAQyB,IAAIR,EAAE4B,GAAG7C,CAAC,GAAGgD,IAAI/B,EAAE4B,GAAG,CAAC;AACnD,WAAO,KAAK,IAAI,IAAI,KAAK,cAAcpB,IAAIuB,CAAC,IAAI,KAAK;AAAA,EACtD;AAAA,EACD,YAAYH,GAAG;AACb,WAAO,KAAK,iBAAiBA,CAAC,IAAI,KAAK,iBAAiB,KAAK,aAAa,KAAK,WAAWA,CAAC,CAAC,CAAC,IAAI;AAAA,EAClG;AAAA,EACD,aAAaA,GAAG;AACd,QAAI7C;AACJ,QAAIU,EAAEmC,GAAG,KAAK,MAAM,IAAI7C,IAAIW;AAAAA,MAC1B,KAAK;AAAA,MACLI,EAAGW,GAAE,KAAK,SAAS,GAAG,KAAK,WAAW;AAAA,IAC5C,IAAQ1B,IAAI,KAAK,sCAAsC;AAAA,MACjDwK;AAAA,QACE,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK,+BAA+B,UAAU3H,CAAC;AAAA,MAChD;AAAA,IACP,GAAO,KAAK,iBAAiB,KAAK,aAAa,KAAK,WAAWA,CAAC,CAAC,CAAC;AAC5D,aAAO5B,EAAE4B,GAAG7C,CAAC;AACf,QAAI4B,GAAGiB,GAAG,KAAK,WAAW,KAAK,MAAM,GAAG;AACtC,YAAM,IAAIQ;AAAA,QACR,IAAI,KAAK,KAAK,KAAK,WAAWR,CAAC;AAAA,MAChC,GAAEpB,IAAI,KAAK,aAAa,CAAC;AAC1B,UAAI,KAAK,iBAAiBA,CAAC;AACzB,eAAOR,EAAE4B,GAAG,KAAK,WAAWpB,CAAC,CAAC;AAAA,IACjC;AACD,WAAO,KAAK;AAAA,MACVR,EAAE4B,GAAG,KAAK,UAAU;AAAA,MACpB5B,EAAE4B,GAAG,KAAK,SAAS;AAAA,IACzB;AAAA,EACG;AAAA,EACD,IAAI,iCAAiC;AACnC,WAAO,KAAK,oCAAoC,WAAW,KAAK,kCAAkC,IAAIF,GAAG,EAAC,OAAO,CAAC,KAAK,SAAS,EAAE,UAAU,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,CAAC,IAAI,KAAK;AAAA,EACtL;AAAA,EACD,IAAI,wCAAwC;AAC1C,WAAO,KAAK,2CAA2C,WAAW,KAAK,yCAAyC,IAAIA,GAAG,EAAC,UAAU,KAAK,OAAO,CAAC,GAAG,KAAK,OAAO,CAAC,CAAC,EAAE,OAAO,KAAK,SAAS,IAAI,KAAK;AAAA,EACjM;AAAA,EACD,IAAI,kCAAkC;AACpC,WAAO,KAAK,qCAAqC,WAAW,KAAK,mCAAmC,IAAIA,GAAC,EAAG;AAAA,MAC1G,KAAK;AAAA,IACX,IAAQ,KAAK;AAAA,EACV;AAAA,EACD,IAAI,aAAa;AACf,WAAO,KAAK,gBAAgB,WAAW,KAAK,cAAc,KAAK,WAAW,KAAK,UAAU,IAAI,KAAK;AAAA,EACnG;AAAA,EACD,IAAI,YAAY;AACd,WAAO,KAAK,eAAe,WAAW,KAAK,aAAa,KAAK,WAAW,KAAK,SAAS,IAAI,KAAK;AAAA,EAChG;AAAA,EACD,IAAI,aAAa;AACf,WAAO,KAAK,gBAAgB,WAAW,KAAK,cAAcW;AAAAA,MACxD,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,IACX,IAAQ,KAAK;AAAA,EACV;AAAA,EACD,SAAST,GAAG;AACV,UAAM7C,IAAI,KAAK,UAAU6C,CAAC;AAC1B,WAAO,KAAK,YAAYnB,GAAE1B,CAAC,IAAI2B,GAAG3B,CAAC;AAAA,EACpC;AAAA,EACD,WAAW6C,GAAG;AACZ,UAAM7C,IAAI,KAAK,aAAa6C,IAAI,KAAK,cAAc,KAAK,YAAY,KAAK,IAAI,IAAI,CAAC,KAAK,cAAc,KAAK,aAAa,KAAK,IAAI7C,CAAC,GAAGyB,IAAI,KAAK,cAAc,KAAK,aAAa,KAAK,IAAIzB,CAAC,GAAGgD,IAAI,KAAK,YAAY,CAAC,CAAC,GAAG,CAACvB,CAAC,IAAI,CAAC,GAAGA,CAAC;AAC/N,WAAO,KAAK,gCAAgC,UAAUuB,CAAC;AAAA,EACxD;AAAA,EACD,UAAUH,GAAG;AACX,UAAM7C,IAAI,KAAK,WAAW6C,CAAC,GAAG,IAAI,CAAC,KAAK,cAAc,KAAK,IAAI7C,CAAC,GAAGyB,IAAI,KAAK,cAAc,KAAK,IAAIzB,CAAC,GAAGgD,IAAI,KAAK,YAAY,CAAC,CAAC,GAAG,CAACvB,CAAC,IAAI,CAAC,GAAGA,CAAC;AAC5I,WAAOL,EAAE,KAAK,gCAAgC,UAAU4B,CAAC,CAAC;AAAA,EAC3D;AAAA,EACD,IAAI,sBAAsB;AACxB,UAAMH,IAAI,CAAC,KAAK,cAAc,KAAK,IAAI,KAAK,UAAU,GAAG7C,IAAI,KAAK,cAAc,KAAK,IAAI,KAAK,UAAU,GAAG,IAAI,KAAK,YAAY,CAAC,CAAC6C,GAAG,CAAC7C,CAAC,IAAI,CAAC6C,GAAG7C,CAAC;AAChJ,WAAOoB,EAAE,KAAK,gCAAgC,UAAU,CAAC,CAAC;AAAA,EAC3D;AAAA,EACD,IAAI,qBAAqB;AACvB,UAAMyB,IAAI,CAAC,KAAK,cAAc,KAAK,IAAI,KAAK,SAAS,GAAG7C,IAAI,KAAK,cAAc,KAAK,IAAI,KAAK,SAAS,GAAG,IAAI,KAAK,YAAY,CAAC,CAAC6C,GAAG,CAAC7C,CAAC,IAAI,CAAC6C,GAAG7C,CAAC;AAC9I,WAAOoB,EAAE,KAAK,gCAAgC,UAAU,CAAC,CAAC;AAAA,EAC3D;AAAA,EACD,UAAUyB,GAAG;AACX,UAAM7C,IAAI6C,EAAE,eAAe,KAAK,SAAS,GAAG,IAAIA,EAAE;AAClD,WAAO,IAAI0H;AAAA,MACT1H,EAAE,UAAU,KAAK,UAAU;AAAA,MAC3BA,EAAE,UAAU,KAAK,SAAS;AAAA,MAC1BA,EAAE,UAAU,KAAK,MAAM;AAAA,MACvB,KAAK,cAAc;AAAA,MACnB,KAAK,cAAc;AAAA,MACnB7C;AAAA,MACA6C,EAAE,iBAAgB,IAAK,KAAK,YAAY,CAAC,KAAK;AAAA,MAC9C,EAAE,YAAY,MAAO;AAAA,IAC3B;AAAA,EACG;AAAA,EACD,QAAQA,GAAG;AACT,QAAI7C;AACJ,QAAI,MAAM,QAAQ6C,CAAC,KAAKA,EAAE,WAAW;AACnC,aAAO,CAAC,IAAI;AACd,UAAM,QAAQA,EAAE,CAAC,CAAC,IAAI7C,IAAI6C,IAAI7C,IAAI,CAAC6C,CAAC;AACpC,UAAMpB,IAAI,CAAC,GAAG,GAAG,GAAGzB,EAAE,IAAI,CAAC8B,MAAM,KAAK,aAAaA,CAAC,CAAC,CAAC,GAAGkB,IAAI,IAAI;AAAA,MAC/DI,GAAG,CAAC3B,GAAG,CAAC,KAAK,YAAY,KAAK,WAAW,GAAGzB,CAAC,CAAC,CAAC;AAAA,IACrD;AACI,IAAAyB,EAAE,KAAK,CAACK,GAAGC,MAAMD,IAAIC,CAAC;AACtB,QAAIkB,IAAI;AACR,WAAOxB,EAAE,QAAQ,CAACK,GAAGC,MAAM;AACzB,UAAIA,MAAMN,EAAE,SAAS;AACnB,eAAO;AACT,YAAMyB,IAAIzB,EAAEM,IAAI,CAAC;AACjB,UAAImB,IAAIpB,IAAI,KAAK;AACf,eAAOmB,MAAM,SAASA,IAAInB,IAAI,CAAA;AAChC,YAAM6B,IAAIV,MAAM,OAAOnB,IAAImB,GAAGjB,IAAI,IAAIuI;AAAA,QACpCvH,EAAE,IAAIW,CAAC,KAAK,KAAK,WAAWA,CAAC;AAAA,QAC7BX,EAAE,IAAIE,CAAC,KAAK,KAAK,WAAWA,CAAC;AAAA,QAC7B,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,EAAE,YAAY,MAAO;AAAA,MAC7B;AACM,aAAOD,IAAI,MAAMjB;AAAA,IACvB,CAAK;AAAA,EACF;AACH;AACA,SAASyI,GAAG7K,GAAGC,GAAG,GAAGG,GAAGG,GAAGsB,GAAG,GAAG;AAC/B,QAAM,EAAE,QAAQ,GAAG,IAAIK,GAAG,IAAIC,EAAC,IAAK2I;AAAA,IAClC9K;AAAA,IACAC;AAAA,IACA;AAAA,IACAG;AAAA,IACAG,IAAII;AAAAA,IACJ,CAACkB;AAAA,IACD;AAAA,EACJ;AACE,SAAO,KAAK,IAAIK,IAAIC,CAAC,IAAI,OAAO,IAAI2B,EAAG9D,GAAGC,GAAG,GAAG,CAAC,IAAI,IAAI0K,EAAG3K,GAAGC,GAAG,GAAGiC,GAAGC,GAAG5B,GAAG,CAAC;AACjF;AACA,SAASuK,GAAG,CAAC9K,GAAGC,CAAC,GAAG,CAAC,GAAGG,CAAC,GAAGG,GAAGsB,GAAG,GAAG,GAAGK,GAAG;AACzC,MAAI3B,IAAI,MAAMA,IAAI,CAACA,IAAIsB,IAAI,MAAMA,IAAI,CAACA,IAAItB,KAAK,KAAKsB,KAAK;AACvD,UAAM,MAAM,wBAAwB;AACtC,QAAMM,IAAI,KAAK,IAAI,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC,GAAG,KAAKnC,IAAI,KAAK,GAAGoC,KAAKnC,IAAIG,KAAK,GAAGiC,KAAKrC,IAAI,KAAK,GAAGsC,KAAKrC,IAAIG,KAAK,GAAGmC,IAAI,IAAI,IAAIJ,IAAIC,GAAGI,IAAI,IAAIJ,IAAID,IAAI,GAAGM,IAAIF,IAAIA,KAAKhC,IAAIA,KAAKiC,IAAIA,KAAKX,IAAIA;AACrL,EAAAY,IAAI,MAAMlC,IAAIA,IAAI,KAAK,KAAKkC,CAAC,GAAGZ,IAAIA,IAAI,KAAK,KAAKY,CAAC;AACnD,QAAMC,IAAInC,IAAIsB,GAAGc,IAAIpC,IAAIiC,GAAGgC,IAAI3C,IAAIU,GAAGsC,IAAIlC,IAAIA,IAAI6B,IAAIA;AACvD,MAAI,CAACK;AACH,UAAM,MAAM,0CAA0C;AACxD,MAAIJ,IAAI,KAAK,KAAK,KAAK,KAAK/B,IAAIA,IAAImC,KAAKA,CAAC,CAAC;AAC3C,OAAK3C,MAAMuC,IAAI,CAACA;AAChB,QAAMC,IAAID,IAAI9B,IAAId,GAAG8C,IAAI,CAACF,IAAID,IAAIjE,GAAGqE,IAAI,IAAIF,IAAIvC,IAAIwC,IAAItC,GAAGsF,IAAIxF,IAAIuC,IAAI,IAAIC,IAAIrC;AAChF,SAAO;AAAA,IACL,QAAQ,CAACsC,GAAG+C,CAAC;AAAA,IACb,IAAIpH;AAAA,IACJ,IAAIsB;AAAA,EACR;AACA;AACA,SAAS+I,GAAG5K,GAAGC,GAAG,GAAG;AACnB,QAAMG,IAAI,KAAK,IAAI,EAAE,CAAC,CAAC,GAAGG,IAAI,KAAK,IAAI,EAAE,CAAC,CAAC;AAC3C,MAAIsB,IAAI,OAAO,IAAI;AACnB,QAAM,IAAI7B,GAAGkC,IAAIjC;AACjB,WAASkC,IAAI,GAAGA,IAAI,GAAGA,KAAK;AAC1B,UAAM,IAAI,IAAIN,GAAG,IAAIK,IAAI,GAAGE,KAAK,IAAI,IAAIF,IAAIA,KAAKL,KAAK,IAAI,GAAGQ,KAAKH,IAAIA,IAAI,IAAI,KAAK,KAAK,IAAIA,GAAGI,IAAI,IAAIF,GAAGG,IAAI,IAAIF,GAAGG,IAAIpC,IAAIgC,GAAGK,IAAIlC,IAAI8B,GAAGK,IAAI,KAAK,MAAMJ,GAAGC,CAAC,GAAGI,IAAI,KAAK,MAAMH,GAAGC,CAAC;AACrL,IAAAZ,IAAI,KAAK,IAAI,GAAG,KAAK,IAAI,IAAIW,IAAIE,IAAIC,IAAIP,KAAK,CAAC,CAAC,GAAG,IAAI,KAAK,IAAI,GAAG,KAAK,IAAI,IAAIK,IAAIC,IAAIC,IAAIN,KAAKH,CAAC,CAAC;AACnG,UAAMsC,IAAI,KAAK,MAAM3C,GAAG,CAAC;AACzB,IAAAA,KAAK2C,GAAG,KAAKA;AAAA,EACd;AACD,SAAO,CAAC,IAAI3C,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC,GAAGK,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC;AAC1D;QACA,MAAM6I,WAAW5H,GAAG;AAAA,EAClB,YAAYF,GAAG7C,GAAG,GAAG;AACnB,UAAM6C,GAAG7C,CAAC,GACVF,EAAE,MAAM,eAAe,kBAAkB,GACzCA,EAAE,MAAM,cAAc,GACtBA,EAAE,MAAM,gBAAgB,IAAI,GAC5BA,EAAE,MAAM,2BAA2B,IAAI,GACvC,KAAK,eAAe;AAAA,EACrB;AAAA,EACD,IAAI,WAAW;AACb,WAAO,KAAK,WAAW,GAAG;AAAA,EAC3B;AAAA,EACD,IAAI,cAAc;AAChB,QAAI,KAAK,iBAAiB,MAAM;AAC9B,YAAM+C,IAAI,CAAC7C,MAAM;AACf,cAAM,CAAC,GAAGyB,GAAGuB,CAAC,IAAI;AAAA,UAChB,KAAK,WAAWhD,CAAC;AAAA,UACjB,KAAK,aAAaA,CAAC;AAAA,UACnB,KAAK,UAAUA,CAAC;AAAA,QACjB,GAAEiD,IAAI,IAAI,IAAIxB,IAAIuB;AACnB,YAAI,CAACC;AACH,iBAAO;AACT,cAAMnB,KAAK,IAAIL,KAAKwB;AACpB,eAAOnB,KAAK,CAAC,KAAK,aAAaA,KAAK,IAAI,KAAK,YAAY,CAACA,CAAC,IAAI,CAAA;AAAA,MACvE;AACM,WAAK,eAAe1B,GAAG;AAAA,QACrB,KAAK;AAAA;AAAA,QAEL,GAAGyC,EAAE,CAAC,EAAE,IAAI,CAAC7C,MAAM,KAAK,WAAWA,CAAC,CAAC;AAAA,QACrC,GAAG6C,EAAE,CAAC,EAAE,IAAI,CAAC7C,MAAM,KAAK,WAAWA,CAAC,CAAC;AAAA,QACrC,KAAK;AAAA,MACN,CAAA,EAAE,KAAK,KAAK,SAAS;AAAA,IACvB;AACD,WAAO,KAAK;AAAA,EACb;AAAA,EACD,QAAQ;AACN,WAAO,IAAI2K;AAAA,MACT,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,IACX;AAAA,EACG;AAAA,EACD,UAAU;AACR,WAAO,IAAIA;AAAA,MACT,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,IACX;AAAA,EACG;AAAA,EACD,OAAO9H,GAAG;AACR,WAAOA,EAAE,gBAAgB,qBAAqB,KAAKnC,EAAE,KAAK,YAAYmC,EAAE,UAAU,KAAKnC,EAAE,KAAK,WAAWmC,EAAE,SAAS,KAAKnC,EAAE,KAAK,cAAcmC,EAAE,YAAY;AAAA,EAC7J;AAAA,EACD,aAAaA,GAAG;AACd,UAAM1C,IAAIuE,GAAG,CAACjD,MAAMT,GAAG,KAAK,WAAWS,CAAC,GAAGoB,CAAC,GAAG,KAAK,SAAS;AAC7D,WAAO1C,EAAE,SAAS,CAAC,KAAK,aAAaA,EAAE,SAAS,IAAI,KAAK,YAAY,KAAK;AAAA,MACxEc,EAAE,KAAK,YAAY4B,CAAC;AAAA,MACpB5B,EAAE,KAAK,WAAW4B,CAAC;AAAA,IACpB,IAAG,KAAK,KAAK1C,EAAE,IAAI;AAAA,EACrB;AAAA,EACD,YAAY0C,GAAG;AACb,QAAI,CAAC,KAAK,YAAY,SAASA,CAAC;AAC9B,aAAO;AACT,QAAI;AACF,YAAM7C,IAAI,KAAK,aAAa6C,CAAC;AAC7B,aAAO7C,KAAK,CAAC,KAAK,aAAaA,KAAK,IAAI,KAAK;AAAA,IACnD,QAAY;AACN,aAAO;AAAA,IACR;AAAA,EACF;AAAA,EACD,WAAW6C,GAAG;AACZ,UAAM7C,IAAI,CAAC,MAAM;AACf,YAAMyB,IAAI,KAAK,WAAW,CAAC,GAAGuB,IAAI,KAAK,aAAa,CAAC,GAAGC,IAAI,KAAK,UAAU,CAAC;AAC5E,aAAO,KAAKJ,KAAKpB,IAAI,IAAIuB,IAAIC,KAAKxB,IAAIuB;AAAA,IAC5C;AACI,WAAO,CAAChD,EAAE,CAAC,GAAGA,EAAE,CAAC,CAAC;AAAA,EACnB;AAAA,EACD,UAAU6C,GAAG;AACX,UAAM7C,IAAI,KAAK,aAAa6C,CAAC;AAC7B,WAAOzB,EAAE,KAAK,WAAWpB,CAAC,CAAC;AAAA,EAC5B;AAAA,EACD,IAAI,sBAAsB;AACxB,WAAOoB,EAAER,EAAE,KAAK,cAAc,KAAK,UAAU,CAAC;AAAA,EAC/C;AAAA,EACD,IAAI,qBAAqB;AACvB,WAAOQ,EAAER,EAAE,KAAK,cAAc,KAAK,SAAS,CAAC;AAAA,EAC9C;AAAA,EACD,SAASiC,GAAG;AACV,UAAM7C,IAAI,KAAK,UAAU6C,CAAC;AAC1B,WAAOnB,GAAE1B,CAAC;AAAA,EACX;AAAA,EACD,kBAAkB6C,GAAG7C,IAAI,MAAM;AAC7B,UAAM,IAAI,CAAC,GAAG6C,CAAC;AACf,MAAE,KAAK,CAACG,GAAGC,MAAMD,IAAIC,CAAC;AACtB,QAAIxB,IAAI;AAAA,MACN,eAAe;AAAA,MACf,OAAO;AAAA,MACP,IAAI,KAAK;AAAA,MACT,IAAI,KAAK;AAAA,IACf;AACI,WAAO,EAAE,QAAQ,CAACuB,GAAGC,MAAM;AACzB,UAAID,IAAIvB,EAAE,gBAAgB,KAAK;AAC7B,eAAO;AACT,UAAIK,IAAI;AACR,MAAAkB,IAAI,IAAI,KAAK,cAAclB,IAAI;AAC/B,YAAM,KAAKkB,IAAIvB,EAAE,kBAAkB,IAAIA,EAAE,gBAAgByB,IAAImH;AAAA,QAC3D,CAAC5I,EAAE,IAAIA,EAAE,IAAI,KAAK,SAAS;AAAA,QAC3BK,IAAI,IAAI;AAAA,MACT,GAAE6B,IAAI7B,IAAI,KAAK,aAAa9B,KAAK,OAAO,SAASA,EAAE,IAAIgD,CAAC,MAAME,EAAE,CAAC,EAAE,CAAC,GAAGlB,IAAIkB,EAAE,CAAC,EAAE,CAAC,GAAGjB,IAAIiB,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,IAAIyH;AAAA,QACxGlJ,EAAE;AAAA,QACFkC;AAAA,QACA3B;AAAA,MACR;AACM,aAAOP,IAAI;AAAA,QACT,OAAO;AAAA,QACP,eAAeuB;AAAA,QACf,IAAIW;AAAA,QACJ,IAAI1B;AAAA,MACL,GAAEgB,MAAM,EAAE,SAAS,KAAK,CAACnB,IAAI;AAAA,QAC5B;AAAA,QACA,IAAI6I;AAAA,UACFlJ,EAAE;AAAA,UACF,KAAK;AAAA,UACLA,EAAE;AAAA,QACH;AAAA,MACF,IAAG;AAAA,IACV,CAAK;AAAA,EACF;AAAA,EACD,QAAQoB,GAAG;AACT,QAAI7C;AACJ,QAAI,MAAM,QAAQ6C,CAAC,KAAKA,EAAE,WAAW;AACnC,aAAO,CAAC,IAAI;AACd,UAAM,QAAQA,EAAE,CAAC,CAAC,IAAI7C,IAAI6C,IAAI7C,IAAI,CAAC6C,CAAC;AACpC,UAAM,IAAI7C,EAAE,IAAI,CAACgD,MAAM,KAAK,aAAaA,CAAC,CAAC,GAAGvB,IAAI,IAAI;AAAA,MACpD2B,GAAG,CAAC,GAAGpD,CAAC,CAAC;AAAA,IACf;AACI,WAAO,KAAK,kBAAkB,GAAGyB,CAAC;AAAA,EACnC;AAAA,EACD,UAAUoB,GAAG;AACX,WAAO,IAAI8H;AAAA,MACT9H,EAAE,UAAU,KAAK,UAAU;AAAA,MAC3BA,EAAE,UAAU,KAAK,SAAS;AAAA,MAC1BA,EAAE,UAAU,KAAK,YAAY;AAAA,IACnC;AAAA,EACG;AAAA,EACD,WAAWA,GAAG;AACZ,UAAM7C,IAAI,IAAI6C,GAAG,IAAI7C,IAAIA,GAAGyB,IAAI,IAAIzB,IAAI6C,GAAGG,IAAIH,IAAIA;AACnD,WAAO;AAAA,MACL,IAAI,KAAK,WAAW,CAAC,IAAIpB,IAAI,KAAK,aAAa,CAAC,IAAIuB,IAAI,KAAK,UAAU,CAAC;AAAA,MACxE,IAAI,KAAK,WAAW,CAAC,IAAIvB,IAAI,KAAK,aAAa,CAAC,IAAIuB,IAAI,KAAK,UAAU,CAAC;AAAA,IAC9E;AAAA,EACG;AAAA,EACD,IAAI,yBAAyB;AAC3B,QAAI,KAAK,4BAA4B,MAAM;AACzC,YAAMH,IAAI,CAAC7C,MAAM;AACf,cAAM,IAAI,KAAK,WAAWA,CAAC,GAAGyB,IAAI,KAAK,aAAazB,CAAC,GAAGgD,IAAI,KAAK,UAAUhD,CAAC,GAAGiD,IAAI,IAAI,IAAIxB,IAAIuB,GAAGlB,IAAI,KAAKL,IAAI;AAC/G,eAAO,CAAC,GAAGK,GAAGmB,CAAC;AAAA,MACvB;AACM,WAAK,0BAA0B,CAACJ,EAAE,CAAC,GAAGA,EAAE,CAAC,CAAC;AAAA,IAC3C;AACD,WAAO,KAAK;AAAA,EACb;AAAA,EACD,UAAUA,GAAG;AACX,UAAM,CAAC7C,GAAG,GAAGyB,CAAC,IAAI,KAAK,uBAAuB,CAAC;AAC/C,WAAOiI,GAAG1J,IAAI6C,GAAG,GAAGpB,CAAC,EAAE;AAAA,MACrB,CAACuB,MAAMA,KAAK,CAAC,KAAK,aAAaA,KAAK,IAAI,KAAK;AAAA,IACnD;AAAA,EACG;AAAA,EACD,aAAaH,GAAG;AACd,UAAM7C,IAAI,KAAK,UAAU6C,EAAE,CAAC,CAAC;AAC7B,QAAI7C,EAAE,WAAW;AACf,YAAM,IAAI,MAAM,4BAA4B;AAC9C,UAAM,IAAI,CAACgD,MAAM,KAAK,IAAI,KAAK,WAAWA,CAAC,EAAE,CAAC,IAAIH,EAAE,CAAC,CAAC,KAAK,KAAK,WAAWpB,IAAIzB,EAAE,KAAK,CAAC;AACvF,QAAIyB,MAAM;AACR,YAAM,IAAI,MAAM,2BAA2B;AAC7C,WAAOA;AAAA,EACR;AACH;ACthHA,IAAImJ,KAAK,OAAO,gBACZC,KAAK,CAAC7K,GAAGH,GAAG,MAAMA,KAAKG,IAAI4K,GAAG5K,GAAGH,GAAG,EAAE,YAAY,IAAI,cAAc,IAAI,UAAU,IAAI,OAAO,EAAC,CAAE,IAAIG,EAAEH,CAAC,IAAI,GAC3G6H,KAAI,CAAC1H,GAAGH,GAAG,OAAOgL,GAAG7K,GAAG,OAAOH,KAAK,WAAWA,IAAI,KAAKA,GAAG,CAAC,GAAG;AAEnE,SAASiL,GAAG9K,GAAGH,GAAG;AAChB,QAAM,IAAIkL,EAAElL,GAAGG,EAAE,UAAU,GAAG,IAAIgL,GAAG,GAAGhL,EAAE,CAAC,IAAIA,EAAE;AACjD,SAAOA,EAAE,WAAW,CAAC;AACvB;AACA,SAASwF,GAAExF,GAAGH,GAAG,GAAG;AAClB,QAAM,IAAI,KAAKG,EAAE,WAAWyB,IAAIqJ,GAAG9K,GAAGH,EAAE,MAAM,GAAGmD,IAAI0F,EAAGjH,GAAG5B,EAAE,MAAM;AACnE,MAAImD,IAAInD,EAAE,SAAS;AACjB,WAAO;AACT,MAAI,KAAK,IAAImD,IAAInD,EAAE,MAAM,IAAI,GAAG;AAC9B,UAAMqD,IAAIzB;AACV,WAAOzB,EAAE,YAAYkD,CAAC,KAAKrD,EAAE,YAAYqD,CAAC,IAAI,CAACA,CAAC,IAAI;EACrD;AACD,QAAMtD,IAAI,CAAA,GAAImC,IAAI,KAAK;AAAA,IACrBlC,EAAE,SAASA,EAAE,SAASmD,IAAIA;AAAA,EAC3B,GAAEW,IAAI3D,EAAE,qBAAqB,IAAI6H,EAAEpG,GAAG+F,EAAE7D,GAAG5B,CAAC,CAAC;AAC9C,EAAA/B,EAAE,YAAY,CAAC,KAAKH,EAAE,YAAY,CAAC,KAAKD,EAAE,KAAK,CAAC;AAChD,QAAMyC,IAAIwF,EAAEpG,GAAG+F,EAAE7D,GAAG,CAAC5B,CAAC,CAAC;AACvB,SAAO/B,EAAE,YAAYqC,CAAC,KAAKxC,EAAE,YAAYwC,CAAC,KAAKzC,EAAE,KAAKyC,CAAC,GAAGzC;AAC5D;AACA,MAAMqL,KAAK,CAACjL,MAAM;AAChB,QAAM,EAAE,YAAYH,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW4B,EAAG,IAAGzB;AACjE,SAAO,IAAIkL,EAAE,GAAGrL,GAAG,GAAG4B,GAAG;AAAA,IACvB,cAAc;AAAA,EAClB,CAAG;AACH,GAAG0J,KAAK,CAACnL,GAAGH,MAAM;AAChB,MAAIG,EAAE,OAAOH,CAAC;AACZ,WAAO,CAACG,CAAC;AACX,QAAM,IAAImI;AAAAA,IACR;AAAA,MACEtI,EAAE,YAAYG,EAAE,UAAU,IAAIA,EAAE,aAAa;AAAA,MAC7CH,EAAE,YAAYG,EAAE,SAAS,IAAIA,EAAE,YAAY;AAAA,MAC3CA,EAAE,YAAYH,EAAE,UAAU,IAAIA,EAAE,aAAa;AAAA,MAC7CG,EAAE,YAAYH,EAAE,SAAS,IAAIA,EAAE,YAAY;AAAA,IAC5C,EAAC,OAAO,CAAC,MAAM,MAAM,IAAI;AAAA;AAAA;AAAA,EAG3B,EAAC,KAAK,CAAC,GAAG4B,MAAMzB,EAAE,aAAa,CAAC,IAAIA,EAAE,aAAayB,CAAC,CAAC;AACtD,MAAI,EAAE,WAAW;AACf,WAAO;AACT,MAAI,EAAE,WAAW;AACf,WAAO;AACT,MAAI,EAAE,WAAW;AACf,WAAOzB,EAAE,OAAOiL,GAAGpL,CAAC,CAAC,IAAI,CAAE,IAAG,CAAC,IAAIqL,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,GAAGlL,EAAE,QAAQA,EAAE,SAAS,CAAC;AACzE,MAAI,EAAE,WAAW,GAAG;AAClB,UAAM,IAAImC,EAAE,EAAE,CAAC,GAAGtC,EAAE,SAAS,KAAKsC,EAAE,EAAE,CAAC,GAAGtC,EAAE,UAAU,IAAI,IAAI;AAC9D,WAAO;AAAA,MACL,IAAIqL;AAAAA,QACF,EAAE,IAAI,CAAC;AAAA,QACP,EAAE,IAAI,CAAC;AAAA,QACPlL,EAAE;AAAA,QACFA,EAAE;AAAA,MACH;AAAA,IACP;AAAA,EACA,WAAa,EAAE,WAAW;AACtB,WAAO;AAAA,MACL,IAAIkL,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,GAAGlL,EAAE,QAAQA,EAAE,SAAS;AAAA,MACvC,IAAIkL,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,GAAGlL,EAAE,QAAQA,EAAE,SAAS;AAAA,IAC7C;AACE,QAAM,IAAI,MAAM,sCAAsC;AACxD;AACA,SAASgF,GAAGhF,GAAGH,GAAG,IAAI,IAAI,GAAG;AAC3B,QAAM4B,IAAI,KAAKzB,EAAE,WAAWgD,IAAI0F,EAAG1I,EAAE,QAAQH,EAAE,MAAM,GAAGD,IAAII,EAAE,SAASH,EAAE;AACzE,MAAImD,IAAIpD,IAAI6B;AACV,WAAO;AACT,QAAMM,IAAI,KAAK,IAAI/B,EAAE,SAASH,EAAE,MAAM;AACtC,MAAImD,IAAIjB,IAAIN;AACV,WAAO;AACT,MAAIuB,IAAIvB;AACN,WAAOM,IAAIN,IAAI,KAAK,IAAI0J,GAAGnL,GAAGH,CAAC,IAAI;AACrC,QAAM8D,IAAIyH,EAAGL,EAAElL,EAAE,QAAQG,EAAE,MAAM,CAAC,GAAG,IAAIgD,IAAIpD,IAAI6B;AACjD;AAAA;AAAA,IAEE;AAAA,IACA,KAAK,IAAIuB,IAAIjB,CAAC,IAAIN;AAAA,IAClB;AACA,UAAMa,IAAI,KAAKtC,EAAE,SAASH,EAAE,SAAS,IAAI,IAAI2E,IAAIqD;AAAAA,MAC/C7H,EAAE;AAAA,MACFwH,EAAE7D,GAAGrB,IAAItC,EAAE,MAAM;AAAA,IACvB;AACI,WAAOA,EAAE,YAAYwE,CAAC,KAAK3E,EAAE,YAAY2E,CAAC,IAAI,CAACA,CAAC,IAAI;EACrD;AACD,QAAMnC,IAAIrC,EAAE,SAASA,EAAE,UAAU,IAAIgD,KAAKnD,EAAE,SAASA,EAAE,UAAU,IAAImD,KAAKA,IAAI,GAAGE,IAAI2E;AAAAA,IACnF7H,EAAE;AAAA,IACFwH,EAAE7D,GAAGtB,CAAC;AAAA,EACV,GAAKY,IAAI,KAAK;AAAA,IACVjD,EAAE,SAASA,EAAE,SAASqC,IAAIA;AAAA,EAC9B,GAAK,IAAItC,GAAG4D,CAAC,GAAG1B,IAAI4F,EAAE3E,GAAGsE,EAAE,GAAGvE,CAAC,CAAC,GAAGjB,IAAI6F,EAAE3E,GAAGsE,EAAE,GAAG,CAACvE,CAAC,CAAC,GAAG,IAAI;AACzD,SAAOjD,EAAE,YAAYiC,CAAC,KAAKpC,EAAE,YAAYoC,CAAC,KAAK,EAAE,KAAKA,CAAC,GAAGjC,EAAE,YAAYgC,CAAC,KAAKnC,EAAE,YAAYmC,CAAC,KAAK,EAAE,KAAKA,CAAC,GAAG;AAC/G;AACA,SAASoG,GAAGpI,GAAGH,GAAG,IAAI,MAAM;AAC1B,QAAM,IAAIG,EAAE,UAAUH,EAAE,8BAA8B,GAAG4B,IAAI,EAAE,OAAOuB,IAAI,EAAE,YAAYpD,IAAIC,EAAE,cAAcA,EAAE,aAAakC,IAAIlC,EAAE,cAAcA,EAAE,aAAa8D,IAAI9D,EAAE,cAAcA,EAAE,aAAa,IAAI,EAAE,QAAQ,EAAE,OAAOwC,IAAI,EAAE,aAAa,EAAE,YAAYa,IAAI,CAACZ,MAAMA,EAAE;AAAA,IACpQ,CAACkC,MAAM3E,EAAE,sCAAsC,UAAU2E,CAAC;AAAA,EAC3D,EAAC,OAAO,CAACA,MAAMxE,EAAE,YAAYwE,CAAC,KAAK3E,EAAE,YAAY2E,CAAC,CAAC;AACpD,MAAI,CAAC,OAAO,SAAS/C,CAAC,GAAG;AACvB,UAAMa,IAAI,EAAE,WAAW,CAAC;AACxB,QAAI,KAAK,IAAIA,CAAC,IAAIzC,EAAE,cAAc;AAChC,aAAO;AACT,QAAI,KAAK,IAAI,KAAK,IAAIyC,CAAC,IAAIzC,EAAE,WAAW,IAAI;AAC1C,aAAOqD,EAAE,CAAC,CAACZ,GAAG,CAAC,CAAC,CAAC;AACnB,UAAMkC,IAAI3E,EAAE,cAAc,KAAK,KAAK,IAAIyC,IAAIA,IAAI1C,CAAC,GAAGwE,IAAI,CAAC9B,GAAGkC,CAAC,GAAGC,IAAI,CAACnC,GAAG,CAACkC,CAAC;AAC1E,WAAOtB,EAAE,CAACkB,GAAGK,CAAC,CAAC;AAAA,EAChB;AACD,QAAMxB,IAAIrD,IAAI,IAAImC,IAAIM;AACtB,MAAIY,IAAI,CAAC;AACP,WAAO;AACT,QAAM,IAAIrD,IAAI,IAAImC;AAClB,MAAI,KAAK,IAAIkB,CAAC,IAAI,GAAG;AACnB,UAAMX,IAAI,EAAE1C,IAAI6B,IAAIuB,KAAK,GAAGwB,IAAIzC,IAAIiB,IAAI;AACxC,WAAOE,EAAE,CAAC,CAACZ,GAAGkC,CAAC,CAAC,CAAC;AAAA,EAClB;AACD,QAAMvC,IAAI,KAAK,KAAKgB,CAAC,GAAGjB,IAAI;AAAA,IAC1B,EAAEpC,IAAI6B,IAAIuB,IAAIW,IAAI1B,KAAK;AAAA,KACtBF,IAAIiB,IAAIW,IAAIlC,IAAIQ,KAAK;AAAA,EACvB,GAAE,IAAI;AAAA,IACL,EAAErC,IAAI6B,IAAIuB,IAAIW,IAAI1B,KAAK;AAAA,KACtBF,IAAIiB,IAAIW,IAAIlC,IAAIQ,KAAK;AAAA,EAC1B;AACE,SAAOiB,EAAE,CAAClB,GAAG,CAAC,CAAC;AACjB;AACA,SAAS5B,GAAGJ,GAAGH,GAAG;AAChB,QAAM,IAAI,KAAK,IAAIG,EAAE,WAAWH,EAAE,SAAS,GAAG,IAAIG,EAAE,cAAcyB,IAAI,EAAE,IAAIuB,IAAI,EAAE,IAAIpD,IAAI,EAAE,IAAImC,IAAI,EAAE,GAAG4B,IAAI,EAAE,GAAG,IAAI,EAAE,GAAGtB,IAAIxC,EAAE,cAAcqD,IAAIb,EAAE,IAAIY,IAAIZ,EAAE,IAAI,IAAIA,EAAE,IAAIJ,IAAII,EAAE,GAAGL,IAAIK,EAAE,GAAG,IAAIA,EAAE,GAAGC,IAAI;AAAA,IAC1M,IAAI,IAAIb,IAAIQ,IAAIA,IAAIR,IAAIA,IAAI,IAAI,IAAIM,IAAIN,IAAIQ,IAAI,IAAIiB,IAAIA,IAAI,IAAI,IAAI,IAAIzB,IAAI,IAAIyB,IAAI,IAAInB,IAAIE,IAAIiB,IAAI,IAAIA,IAAInB,IAAIA,IAAI;AAAA,IACpH,IAAIC,IAAID,IAAIA,IAAImB,IAAI,IAAIjB,IAAIR,IAAIuB,IAAI,IAAIvB,IAAI,IAAIyB,IAAIS,IAAI,IAAIT,IAAID,IAAIlB,IAAI,IAAIE,IAAIgB,IAAIxB,IAAI,IAAI,IAAIO,IAAI,IAAIP,IAAIA,IAAIQ,IAAIA,IAAIR,IAAIkC,IAAI3B,IAAIC,IAAIR,IAAIM,IAAI,IAAIN,IAAIO,IAAIkB,IAAI,IAAI,IAAIA,IAAIjB,IAAIe,IAAI,IAAI,IAAIW,IAAIT,IAAIA,IAAI,IAAID,IAAIxB,IAAIM,IAAI4B,IAAIT,IAAIjB,IAAIF,IAAI,IAAI,IAAIiB,IAAIE,IAAInB;AAAA,IACxP,IAAIC,IAAIA,IAAIP,IAAIA,IAAI,IAAI,IAAI,IAAIA,IAAIA,IAAIkC,IAAIT,IAAIjB,IAAIe,IAAI,IAAIE,IAAIF,IAAIA,IAAIW,IAAIT,IAAID,IAAIlB,IAAI,IAAIkB,IAAIxB,IAAIuB,IAAI,IAAIvB,IAAIO,IAAIkB,IAAIS,IAAI,IAAI1B,IAAIgB,IAAIxB,IAAIkC,IAAI,IAAI1B,IAAIR,IAAIM,IAAI,IAAIN,IAAI,IAAIyB,IAAI,IAAID,IAAIA,IAAIxB,IAAI,IAAI,IAAIO,IAAIgB,IAAIE,IAAInB,IAAI4B,IAAIA,IAAIT,IAAIA,IAAItD,IAAIsD,IAAIjB,IAAIF,IAAIC,IAAIiB,IAAIxB,IAAIM,IAAI,IAAI,IAAInC,IAAIsD,IAAIA,IAAI,IAAIA,IAAID,IAAID,IAAI,IAAIjB,IAAIA,IAAImB,IAAIjB,IAAIA,IAAIR,IAAI7B,IAAIoC,IAAIC,IAAIR,IAAIuB,IAAI,IAAIvB,IAAI,IAAIyB,IAAItD;AAAA,IAC5W,IAAI,KAAK6B,IAAIyB,IAAItD,IAAIoC,IAAIA,IAAIkB,IAAIF,IAAIA,IAAI,IAAI,IAAIA,IAAIE,IAAInB,IAAInC,IAAIsD,IAAID,IAAIlB,IAAIkB,IAAIA,IAAIxB,IAAIkC,IAAI3B,IAAIiB,IAAIxB,IAAIuB,IAAI,IAAIvB,IAAI,IAAIyB,IAAIS,IAAIA,IAAIT,IAAID,IAAID,IAAI,IAAIC,IAAIxB,IAAIM,IAAI,IAAIC,IAAI,IAAIP,IAAIA,IAAI,IAAIkC,IAAI/D,IAAIsD,IAAIA,IAAItD,IAAIsD,IAAIjB,IAAIe,IAAI,IAAIf,IAAIgB,IAAIxB,IAAI7B,IAAI,IAAIqC,IAAIR,IAAIuB;AAAA,IACzP,IAAIvB,IAAIA,IAAI,IAAI,IAAI,IAAIA,IAAI,IAAIyB,IAAItD,IAAIsD,IAAIA,IAAItD,IAAIA,IAAIoD,IAAIvB,IAAIwB,IAAI,IAAID,IAAIC,IAAIC,IAAItD,IAAIoD,IAAIA,IAAIE,IAAI,IAAItD,IAAI6B,IAAIwB,IAAIA;AAAA,EACrH,GAAEmB,IAAIsF;AAAAA,IACL,CAACpH,EAAE,IAAIA,EAAE,IAAIA,EAAE,IAAIA,EAAE,IAAIA,EAAE,EAAE;AAAA,IAC7B;AAAA,EACJ,EAAI,QAAQ,CAACmC,MAAM;AACf,UAAM6C,IAAI7F,IAAIwB,IAAIwB,IAAIhD,IAAIQ,IAAIiB,IAAIF,IAAIyB,IAAIvB,IAAInB;AAC9C,QAAIuF;AACF,aAAO,CAAC,CAAC,EAAE7F,IAAI,IAAIA,IAAI,IAAIgD,IAAIA,IAAIvB,IAAItD,IAAI6E,IAAIA,IAAIhD,IAAIO,IAAIyC,IAAIvB,IAAIS,IAAIc,IAAIvB,IAAI,KAAKoE,GAAG7C,CAAC,CAAC;AAC3F,UAAMkD,IAAI3E,IAAIyB,IAAI1C,GAAGiG,IAAI,CAACL,KAAK,IAAIlG,IAAI6C,IAAI1E,IAAI6E,IAAIA,IAAId,IAAIc,IAAI,GAAGyD,IAAIP,IAAIA,KAAK,IAAIlG,IAAIA,KAAK6C,IAAI7C;AAChG,QAAI,KAAK,IAAIyG,CAAC,IAAI;AAChB,aAAO,CAAC,CAACF,GAAGvD,CAAC,CAAC;AAChB,QAAIyD,IAAI,GAAG;AACT,YAAMjH,IAAI,KAAK,KAAKiH,CAAC;AACrB,aAAO,CAAC,CAACF,IAAI/G,GAAGwD,CAAC,GAAG,CAACuD,IAAI/G,GAAGwD,CAAC,CAAC;AAAA,IAC/B;AACD,WAAO;EACX,CAAG;AACD,SAAO0D,GAAE/D,GAAG,CAAC;AACf;AACA,SAASuB,GAAG3F,GAAGH,GAAG;AAChB,SAAOO,GAAGJ,GAAGH,CAAC,EAAE,OAAO,CAACM,MAAMH,EAAE,YAAYG,CAAC,KAAKN,EAAE,YAAYM,CAAC,CAAC;AACpE;AACA,MAAMkL,KAAK,CAACrL,MAAM;AAChB,QAAM;AAAA,IACJ,YAAYH;AAAA,IACZ,WAAW;AAAA,IACX,QAAQ;AAAA,IACR,aAAa4B;AAAA,IACb,aAAauB;AAAA,IACb,WAAWpD;AAAA,IACX,WAAWmC;AAAA,EACZ,IAAG/B;AACJ,SAAO,IAAIoC;AAAAA,IACT;AAAA,IACAvC;AAAA,IACA;AAAA,IACA4B;AAAA,IACAuB;AAAA,IACApD;AAAA,IACAmC;AAAA,IACA;AAAA,MACE,cAAc;AAAA,MACd,YAAY;AAAA,IACb;AAAA,EACL;AACA,GAAGuJ,KAAK,CAACtL,GAAGH,MAAM;AAChB,MAAIG,EAAE,OAAOH,CAAC;AACZ,WAAO,CAACG,CAAC;AACX,QAAM,IAAI,CAACyB,GAAGuB,MAAM,IAAIZ;AAAAA,IACtBX;AAAA,IACAuB;AAAA,IACAhD,EAAE;AAAA,IACFA,EAAE;AAAA,IACFA,EAAE;AAAA,IACFA,EAAE;AAAA,IACFA,EAAE;AAAA,IACF,EAAE,cAAc,IAAI,YAAY,MAAO;AAAA,EACxC,GAAE,IAAImI;AAAAA,IACL;AAAA,MACEtI,EAAE,YAAYG,EAAE,UAAU,IAAIA,EAAE,aAAa;AAAA,MAC7CH,EAAE,YAAYG,EAAE,SAAS,IAAIA,EAAE,YAAY;AAAA,MAC3CA,EAAE,YAAYH,EAAE,UAAU,IAAIA,EAAE,aAAa;AAAA,MAC7CG,EAAE,YAAYH,EAAE,SAAS,IAAIA,EAAE,YAAY;AAAA,IAC5C,EAAC,OAAO,CAAC4B,MAAMA,MAAM,IAAI;AAAA;AAAA;AAAA,EAG3B,EAAC,KAAK,CAACA,GAAGuB,MAAMhD,EAAE,aAAayB,CAAC,IAAIzB,EAAE,aAAagD,CAAC,CAAC;AACtD,MAAI,EAAE,WAAW;AACf,WAAO;AACT,MAAI,EAAE,WAAW;AACf,WAAO;AACT,MAAI,EAAE,WAAW;AACf,WAAOhD,EAAE,OAAOqL,GAAGxL,CAAC,CAAC,IAAI,CAAE,IAAG,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAC9C,MAAI,EAAE,WAAW,GAAG;AAClB,UAAM4B,IAAIU,EAAE,EAAE,CAAC,GAAGtC,EAAE,SAAS,KAAKsC,EAAE,EAAE,CAAC,GAAGtC,EAAE,UAAU,IAAI,IAAI;AAC9D,WAAO,CAAC,EAAE,EAAE,IAAI4B,CAAC,GAAG,EAAE,IAAIA,CAAC,CAAC,CAAC;AAAA,EACjC,WAAa,EAAE,WAAW;AACtB,WAAO,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AACtC,QAAM,IAAI,MAAM,sDAAsD;AACxE;AACA,SAAS8J,GAAGvL,GAAGH,GAAG,IAAI,IAAI;AACxB,QAAM,IAAI,KAAK,IAAIG,EAAE,WAAWH,EAAE,SAAS;AAC3C,SAAOsC,EAAEnC,EAAE,QAAQH,EAAE,MAAM,KAAK,KAAK,IAAIG,EAAE,cAAcH,EAAE,WAAW,IAAI,KAAK,KAAK,IAAIG,EAAE,cAAcH,EAAE,WAAW,IAAI,MAAM,KAAK,IAAIG,EAAE,YAAYH,EAAE,SAAS,IAAI,KAAK,KAAK,IAAI,KAAK,IAAIG,EAAE,YAAYH,EAAE,SAAS,IAAI,KAAK,EAAE,IAAI,KAAK,IAAIyL,GAAGtL,GAAGH,CAAC,IAAI,CAAE,IAAGO,GAAGJ,GAAGH,CAAC,EAAE,OAAO,CAACD,MAAMI,EAAE,YAAYJ,CAAC,KAAKC,EAAE,YAAYD,CAAC,CAAC;AAC1T;AACA,SAAS0K,GAAGtK,GAAGH,GAAG;AAChB,QAAM,CAAC,GAAG,CAAC,IAAIG,EAAE,YAAY,CAACyB,GAAGuB,CAAC,IAAIhD,EAAE,WAAWJ,IAAI,IAAI4L,GAAI,EAAC,OAAO,CAAC,KAAK,MAAMxI,IAAI,GAAGvB,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,GAAGM,IAAInC,EAAE,MAAO,EAAC,QAAS,GAAE+D,IAAI9D,EAAE,UAAUD,CAAC;AAC/J,SAAO+D,EAAE,UAAU,CAAC,EAAE,IAAI,CAAC,MAAMA,EAAE,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM5B,EAAE,UAAU,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM/B,EAAE,YAAY,CAAC,CAAC;AAC7G;AACA,MAAMyL,KAAK,CAACzL,GAAGH,IAAI,SAAS;AAC1B,MAAI,IAAIG;AACR,SAAO,KAAK,IAAIA,CAAC,IAAIH,MAAM,IAAI,IAAI,EAAE,QAAQ,CAAC,KAAK,MAAMA,CAAC,CAAC;AAC7D;AACA,SAASkJ,GAAG/I,GAAGH,IAAI,MAAM;AACvB,SAAO,MAAM;AAAA,IACX,IAAI,IAAIG,EAAE,IAAI,CAAC,MAAM,CAACyL,GAAG,GAAG5L,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,OAAQ;AAAA,EACjD;AACA;AACA,MAAM6L,KAAK,CAAC1L,GAAGH,MAAM;AACnB,QAAM,CAAC,CAAC,GAAG,GAAG4B,GAAGuB,CAAC,GAAG,CAACpD,GAAGmC,GAAG4B,GAAG,CAAC,CAAC,IAAI9D,EAAE,wBAAwBwC,IAAIrC,EAAE,cAAckD,IAAIb,EAAE,IAAIY,IAAIZ,EAAE,IAAI,IAAIA,EAAE,IAAIJ,IAAII,EAAE,GAAGL,IAAIK,EAAE,GAAG,IAAIA,EAAE,GAAGC,IAAI,IAAI,GAAGkC,IAAI,IAAI,GAAGJ,IAAI3C,IAAIA,GAAGgD,IAAIzB,IAAIA,GAAGsE,IAAI1H,IAAIA,GAAG+H,IAAI5F,IAAIA,GAAGiG,IAAIrE,IAAIA,GAAGW,IAAI,IAAI,GAAG4D,IAAI,IAAIjG,IAAI,IAAIiB,IAAIZ,IAAIN,IAAIpC,IAAIqD,IAAI,IAAIrD,IAAI,IAAI0H,GAAGrG,IAAIgB,IAAI,IAAI,IAAIiB,IAAI,IAAI,IAAID,IAAI,IAAIrD,IAAIoC,IAAID,IAAIkB,IAAI,IAAIlB,IAAI,IAAI,IAAInC,IAAImC,GAAGgD,IAAK7B,IAAIsB,IAAIvC,IAAIR,IAAI,IAAIyB,IAAI,IAAIzB,IAAIwB,IAAIxB,IAAI7B,IAAIqD,IAAI,IAAIlB,IAAI,IAAI4F,IAAI3F,IAAI2B,IAAIV,IAAI,IAAIU,IAAI,IAAI,IAAI/D,IAAI+D,GAAG0G,KAAK,IAAInH,IAAI,IAAIzB,IAAIQ,IAAIe,IAAI,IAAIE,IAAI,IAAIF,IAAIC,IAAID,IAAIpD,IAAIqD,IAAIxB,IAAIM,IAAIkB,IAAI,IAAIU,IAAI,IAAI,IAAI5B,IAAI4B,IAAI3B,IAAI,IAAIiB,IAAI,IAAI,IAAI,IAAI,IAAIrD,IAAI,GAAGqE,IAAKf,IAAIkB,IAAI,IAAIlB,IAAI,IAAIF,IAAIC,IAAID,IAAIjB,IAAIkB,IAAIxB,IAAIkC,IAAI,IAAIqE,IAAI/E,IAAI,IAAI,IAAI,IAAI,IAAIlB,IAAI,GAAGiC,IAAK,IAAId,IAAIzB,IAAIuB,IAAIC,IAAID,IAAIW,IAAIV,IAAIxB,IAAI,IAAI,IAAI,IAAIkC,IAAI,GAAGG,IAAKZ,IAAIuB,IAAIxB,IAAID,IAAI,IAAI,IAAIsB;AAC/vB,SAAO,CAAC4D,GAAGjH,GAAG8D,GAAIsF,IAAIpG,GAAID,GAAIF,CAAE;AAClC;AACA,SAAS6F,GAAG3J,GAAGH,GAAG;AAChB,QAAM,IAAI,KAAK,IAAIG,EAAE,WAAWH,EAAE,SAAS,GAAG,IAAI6L,GAAG1L,GAAGH,CAAC,GAAG4B,IAAIiI,GAAG,GAAG,CAAC,EAAE,OAAO,CAAC1G,MAAMA,KAAK,CAACnD,EAAE,aAAamD,KAAK,IAAInD,EAAE,SAAS;AAChI,SAAOkJ,GAAGtH,GAAG,CAAC,EAAE,IAAI,CAACuB,MAAMnD,EAAE,WAAWmD,CAAC,CAAC,EAAE,OAAO,CAACA,MAAMhD,EAAE,YAAYgD,CAAC,CAAC;AAC5E;AACA,MAAM2I,KAAK,CAAC3L,GAAGH,MAAM;AACnB,QAAM,CAAC,CAAC,GAAG,GAAG4B,CAAC,GAAG,CAACuB,GAAGpD,GAAGmC,CAAC,CAAC,IAAIlC,EAAE,wBAAwB8D,IAAI3D,EAAE,cAAc,IAAI2D,EAAE,IAAItB,IAAIsB,EAAE,IAAIT,IAAIS,EAAE,IAAIV,IAAIU,EAAE,GAAG,IAAIA,EAAE,GAAG1B,IAAI0B,EAAE,GAAG3B,IAAI,IAAI,GAAG,IAAI,IAAI,GAAGM,IAAIb,IAAIA,GAAG+C,IAAIxB,IAAIA,GAAGoB,IAAIxE,IAAIA,GAAG6E,IAAI1C,IAAIA,GAAGuF,IAAI,IAAItF,IAAIK,IAAI,IAAIW,IAAIE,IAAIsB,IAAIvB,IAAI,IAAI,IAAID,IAAIf,GAAG0F,IAAI,IAAI,IAAI,IAAI,IAAItF,IAAI,IAAIzC,IAAIyC,IAAI,IAAIW,IAAI,IAAIE,IAAIF,IAAIpD,IAAIqD,IAAI,IAAI,IAAIrD,GAAGoI,IAAI,IAAI,IAAI,IAAIvG,IAAI,IAAI,IAAIY,IAAI,IAAIN,IAAIM,IAAI,IAAIzC,IAAIyC,IAAIZ,IAAIuB,IAAI,IAAIE,IAAIF,IAAIjB,IAAImB,IAAIkB,IAAInB,IAAIxB,IAAI,IAAIM,GAAGuC,IAAI,IAAI,IAAI,IAAI7C,IAAIY,IAAI,IAAIN,IAAIM,IAAIZ,IAAI7B,IAAI,IAAIsD,IAAItD,IAAImC,GAAGmG,IAAI,IAAI5F,IAAID,IAAIZ,IAAIM,IAAImB,IAAIuB;AACpgB,SAAO,CAAC6C,GAAGK,GAAGK,GAAG1D,GAAG4D,CAAC;AACvB;AACA,SAASyC,GAAG3K,GAAGH,GAAG;AAChB,QAAM,IAAI,KAAK,IAAIG,EAAE,WAAWH,EAAE,SAAS,GAAG,IAAI8L,GAAG3L,GAAGH,CAAC,GAAG4B,IAAImK,GAAG,GAAG,CAAC,EAAE,OAAO,CAAC5I,MAAMA,KAAK,CAACnD,EAAE,aAAamD,KAAK,IAAInD,EAAE,SAAS;AAChI,SAAOkJ,GAAGtH,GAAG,CAAC,EAAE,IAAI,CAACuB,MAAMnD,EAAE,WAAWmD,CAAC,CAAC,EAAE,OAAO,CAACA,MAAMhD,EAAE,YAAYgD,CAAC,CAAC;AAC5E;AACA,SAASqB,GAAErE,GAAG,EAAE,YAAYH,GAAG,WAAW,EAAC,GAAI,IAAI,MAAM;AACvD,QAAM4B,IAAIsJ,EAAE,GAAGlL,CAAC;AAChB,SAAO,KAAK,IAAI4B,EAAE,CAAC,CAAC,IAAI,IAAIA,EAAE,CAAC,IAAI,IAAI5B,EAAE,CAAC,IAAIG,EAAE,CAAC,IAAIA,EAAE,CAAC,IAAIH,EAAE,CAAC,IAAI,KAAK,IAAI4B,EAAE,CAAC,CAAC,IAAI,IAAIA,EAAE,CAAC,IAAI,IAAIzB,EAAE,CAAC,IAAIH,EAAE,CAAC,IAAIA,EAAE,CAAC,IAAIG,EAAE,CAAC,IAAI6L,GAAGpK,GAAGsJ,EAAE/K,GAAGH,CAAC,CAAC,IAAIiM,GAAGrK,CAAC;AACtJ;AACA,MAAMwE,GAAG;AAAA,EACP,YAAYpG,GAAG,GAAG,GAAG4B,GAAG;AACtB,SAAK,aAAa5B,GAAG,KAAK,YAAY,GAAG,KAAK,oBAAoB,GAAG,KAAK,oBAAoB4B;AAAA,EAC/F;AAAA,EACD,IAAI,QAAQ;AACV,WAAO,KAAK,oBAAoB,KAAK;AAAA,EACtC;AACH;AACA,MAAMsK,KAAK,IAAI,GAAGC,KAAK,IAAI;AAC3B,SAASC,GAAGjM,GAAG;AACb,QAAMH,IAAIwE,GAAErE,EAAE,mBAAmBA,CAAC,GAAG,IAAIqE,GAAErE,EAAE,kBAAkBA,CAAC,GAAG,IAAIH,IAAI,IAAI,IAAIkM,KAAKC;AACxF,SAAO,IAAI/F;AAAA,IACTjG,EAAE;AAAA,IACFA,EAAE;AAAA,IACF,IAAI,KAAK,IAAI,GAAGH,GAAG,CAAC;AAAA,IACpB,IAAI,KAAK,IAAI,GAAGA,GAAG,CAAC;AAAA,EACxB;AACA;AACA,SAASqM,GAAGlM,GAAG;AACb,QAAMH,IAAIwE,GAAErE,EAAE,cAAcA,CAAC;AAC7B,SAAO,IAAIiG;AAAA,IACTjG,EAAE;AAAA,IACFA,EAAE;AAAA,IACF,KAAK,IAAI,GAAGH,IAAI,CAAC;AAAA,IACjB,KAAK,IAAI,GAAGA,IAAI,CAAC;AAAA,EACrB;AACA;AACA,SAASsM,GAAGnM,GAAG;AACb,MAAIA,aAAaqH;AACf,WAAO4E,GAAGjM,CAAC;AACb,MAAIA,aAAaiI;AACf,WAAOiE,GAAGlM,CAAC;AACb,QAAM,IAAI,MAAM,iBAAiB;AACnC;AACA,SAASoM,GAAGpM,GAAG;AACb,QAAMH,IAAIG,EAAE,WAAW,GAAG,GAAG,IAAID,GAAGgL,EAAElL,GAAGG,EAAE,UAAU,CAAC,GAAG,IAAI6H,EAAEhI,GAAG,CAAC,GAAG4B,IAAI;AAAA,IACxE,YAAY5B;AAAA,IACZ,WAAW;AAAA,EACZ,GAAEmD,IAAI;AAAA,IACLqB,GAAErE,EAAE,YAAYyB,CAAC;AAAA,IACjB4C,GAAErE,EAAE,WAAWyB,CAAC;AAAA,EACpB;AACE,SAAOzB,aAAaqH,IAAIrE,EAAE;AAAA,IACxBqB,GAAErE,EAAE,mBAAmByB,CAAC;AAAA,IACxB4C,GAAErE,EAAE,kBAAkByB,CAAC;AAAA,EACxB,IAAGzB,aAAaiI,KAAKjF,EAAE,KAAKqB,GAAErE,EAAE,cAAcyB,CAAC,CAAC,GAAG,IAAIwE;AAAA,IACtDpG;AAAA,IACA;AAAA,IACA,KAAK,IAAI,GAAGmD,CAAC;AAAA,IACb,KAAK,IAAI,GAAGA,CAAC;AAAA,EACjB;AACA;AACA,SAASM,GAAGtD,GAAGH,GAAG;AAChB,QAAM,IAAI,CAAA;AACV,WAAS,IAAI,GAAG,IAAIG,EAAE,QAAQ,KAAK;AACjC,UAAMyB,IAAIzB,EAAE,CAAC;AACb,QAAIyB,EAAE,CAAC,MAAM5B,GAAG;AACd,QAAE,KAAK4B,EAAE,CAAC,CAAC;AACX;AAAA,IACD;AACD,UAAMuB,IAAIhD,EAAE,IAAI,CAAC,GAAGJ,IAAIC,IAAImD,EAAE,CAAC,GAAGjB,IAAIlC,IAAI4B,EAAE,CAAC;AAC7C,QAAI7B,IAAImC,IAAI,GAAG;AACb,QAAE;AAAA,QACAiB,EAAE,CAAC,KAAKnD,IAAImD,EAAE,CAAC,MAAMvB,EAAE,CAAC,IAAIuB,EAAE,CAAC,MAAMvB,EAAE,CAAC,IAAIuB,EAAE,CAAC;AAAA,MACvD;AACM;AAAA,IACD;AAAA,EACF;AACD,SAAO;AACT;AACA,IAAAqJ,KAAA,MAAQ;AAAA,EACN,YAAYxM,GAAG,GAAG;AAChB,SAAK,OAAOA,GAAG,KAAK,KAAK;AAAA,EAC1B;AAAA,EACD,IAAI,OAAO;AACT,WAAO,KAAK,SAAS,UAAU,KAAK,OAAO,QAAQ,IAAI,KAAK,KAAK,KAAK,OAAO,QAAQ,IAAI,KAAK,OAAO,KAAK,IAAI,KAAK,OAAO,KAAK,EAAE;AAAA,EAClI;AAAA,EACD,UAAUA,GAAG;AACX,WAAO,KAAK,SAAS,UAAU,KAAK,OAAO,QAAQA,IAAIA,EAAE,kBAAkB,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,OAAO,QAAQA,EAAE,kBAAkB,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,IAAIA,EAAE,kBAAkB,CAAC,KAAK,MAAM,KAAK,EAAE,CAAC,EAAE,CAAC;AAAA,EACjM;AACH;AACA,SAAS,GAAGG,GAAGH,GAAG;AAChB,MAAIG,aAAaqH;AACf,WAAO,IAAIiF,GAAG;AAAA,MACZjI,GAAErE,EAAE,YAAYH,CAAC;AAAA,MACjBwE,GAAErE,EAAE,mBAAmBH,CAAC;AAAA,MACxBwE,GAAErE,EAAE,kBAAkBH,CAAC;AAAA,MACvBwE,GAAErE,EAAE,WAAWH,CAAC;AAAA,IACtB,CAAK;AACH,MAAIG,aAAaiI;AACf,WAAO,IAAIsE,GAAG;AAAA,MACZlI,GAAErE,EAAE,YAAYH,CAAC;AAAA,MACjBwE,GAAErE,EAAE,cAAcH,CAAC;AAAA,MACnBwE,GAAErE,EAAE,WAAWH,CAAC;AAAA,IACtB,CAAK;AACH,QAAM,IAAI,MAAM,iBAAiB;AACnC;AACA,MAAM0M,GAAG;AAAA,EACP,YAAY1M,GAAG;AACb6H,IAAAA,GAAE,MAAM,WAAW,CAAA,CAAE,GACrBA,GAAE,MAAM,cAAc,CAAA,CAAE,GACxB,KAAK,YAAY7H;AACjB,UAAM,CAAC,GAAG,GAAG4B,CAAC,IAAI5B,GAAGmD,IAAI,CAAC,GAAG,CAAC,GAAGpD,IAAI,CAAC,IAAI,GAAG,CAAC,GAAGmC,IAAI,CAAC,GAAGN,CAAC,GAAGkC,IAAIlC,IAAI,GAAG,IAAI;AAC5E,SAAKkC,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK,UAAU,CAACX,GAAGpD,GAAGmC,CAAC,GAAG,KAAK,aAAa,CAACiB,GAAGjB,CAAC,MAAM,KAAK,UAAU,CAACiB,GAAGjB,CAAC,GAAG,KAAK,aAAa,CAACiB,GAAGpD,GAAGmC,CAAC;AAAA,EACtI;AAAA,EACD,IAAI,gBAAgB;AAClB,WAAO,KAAK,UAAU,CAAC;AAAA,EACxB;AAAA,EACD,IAAI,cAAc;AAChB,WAAO,KAAK,UAAU,CAAC;AAAA,EACxB;AACH;AACA,MAAMuK,GAAG;AAAA,EACP,YAAYzM,GAAG;AACb6H,IAAAA,GAAE,MAAM,WAAW,CAAA,CAAE,GACrBA,GAAE,MAAM,cAAc,CAAA,CAAE,GACxB,KAAK,YAAY7H;AACjB,UAAM,CAAC,GAAG,GAAG4B,GAAGuB,CAAC,IAAInD,GAAGD,IAAI,CAAC,GAAG,CAAC,GAAGmC,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG4B,IAAI,CAAC,IAAI,GAAGlC,CAAC,GAAG,IAAI,CAAC,GAAGuB,CAAC,GAAGX,IAAIW,IAAI,GAAGE,IAAI,GAAGD,IAAI,KAAKZ,KAAK,IAAI,KAAKa,IAAI,IAAIzB,KAAKY,KAAK,IAAI,KAAKa;AACpJ,QAAIjB,IAAI,MAAMD,IAAI;AAClB,QAAIiB,IAAI,IAAI;AACV,MAAAhB,IAAI,CAACrC,GAAGmC,GAAG,CAAC,GAAGC,IAAI,CAACpC,GAAG+D,GAAG,CAAC;AAAA,SACxB;AACH,YAAMrB,IAAIW,IAAI;AACd,MAAAX,KAAK,KAAKL,IAAI,CAACrC,GAAGmC,GAAG,CAAC,GAAGC,IAAI,CAACpC,GAAG,CAAC,KAAK0C,KAAK,OAAOL,IAAI,CAACrC,GAAG+D,GAAG,CAAC,GAAG3B,IAAI,CAACpC,GAAG,CAAC,MAAMqC,IAAI,CAACrC,GAAGmC,GAAG4B,GAAG,CAAC,GAAG3B,IAAI,CAACpC,GAAG,CAAC;AAAA,IAC7G;AACD,IAAAqD,IAAI,MAAM,CAAChB,GAAGD,CAAC,IAAI,CAACA,GAAGC,CAAC,IAAI,KAAK,UAAUA,GAAG,KAAK,aAAaD;AAAA,EACjE;AAAA,EACD,IAAI,gBAAgB;AAClB,WAAO,KAAK,UAAU,CAAC;AAAA,EACxB;AAAA,EACD,IAAI,cAAc;AAChB,WAAO,KAAK,UAAU,CAAC;AAAA,EACxB;AACH;AACA,SAAS6G,GAAG7I,GAAGH,GAAG;AAChB,QAAM,IAAI,GAAGA,GAAGG,CAAC,GAAG,IAAIsD;AAAA,IACtB,EAAE;AAAA,IACFtD,EAAE;AAAA,EACH,GAAEyB,IAAI6B;AAAA,IACL,EAAE;AAAA,IACFtD,EAAE;AAAA,EACN,GAAKgD,IAAI,EAAE,eAAehD,EAAE,qBAAqB,EAAE,eAAeA,EAAE;AAClE,MAAI,CAAC,EAAE,UAAU,CAACyB,EAAE;AAClB,WAAOuB,IAAI,IAAIqF,GAAE,SAAS,KAAK,IAAI;AACrC,MAAI,EAAE,WAAW,KAAK5G,EAAE,WAAW;AACjC,WAAO,IAAI4G,GAAE,EAAE,CAAC,GAAG5G,EAAE,CAAC,CAAC;AACzB,MAAI,EAAE,WAAW,KAAKA,EAAE,WAAW;AACjC,UAAM,IAAI;AAAA,MACR;AAAA,IACN;AACE,QAAM7B,IAAI,EAAE,SAAS,IAAI6B;AACzB,SAAO7B,EAAE,WAAW,IAAI,IAAIyI,GAAEzI,EAAE,CAAC,GAAGA,EAAE,CAAC,CAAC,IAAIoD,IAAI,IAAIqF,GAAEzI,EAAE,CAAC,GAAG,KAAK,IAAI,IAAIyI,GAAE,SAASzI,EAAE,CAAC,CAAC;AAC1F;AACA,SAASyB,GAAGrB,GAAGH,GAAG;AAChB,QAAM,IAAIsM,GAAGnM,CAAC,GAAG,IAAI6I,GAAG,GAAGhJ,CAAC;AAC5B,MAAI,CAAC;AACH,WAAO;AACT,QAAM4B,IAAI2K,GAAGpM,CAAC,GAAGgD,IAAI6F;AAAA,IACnBpH;AAAA,IACA5B;AAAA,EACJ;AACE,SAAOmD,IAAI,EAAE,OAAOA,EAAE,OAAOA,EAAE,UAAUnD,CAAC,IAAI,EAAE,UAAUA,CAAC,IAAI;AACjE;AACA,MAAMuB,KAAI,CAACpB,MAAMA,aAAaiI,IAAIH,GAAEiD,EAAE/K,EAAE,cAAcA,EAAE,UAAU,CAAC,IAAI8H,GAAEiD,EAAE/K,EAAE,cAAcA,EAAE,SAAS,CAAC,IAAI8H,GAAEiD,EAAE/K,EAAE,mBAAmBA,EAAE,UAAU,CAAC,IAAI8H,GAAEiD,EAAE/K,EAAE,kBAAkBA,EAAE,iBAAiB,CAAC,IAAI8H,GAAEiD,EAAE/K,EAAE,kBAAkBA,EAAE,SAAS,CAAC;AACzO,SAASS,GAAET,GAAGH,GAAG,IAAI,MAAM,EAAE,eAAe,IAAI,IAAK,IAAG,IAAI;AAC1D,QAAM4B,IAAI,KAAK,IAAI,IAAI,GAAG,OAAO,UAAU,EAAE;AAC7C,MAAIuB,IAAIhD,GAAGJ,IAAIC,GAAGkC,IAAIX,GAAE4B,CAAC,GAAGW,IAAIvC,GAAExB,CAAC;AACnC,WAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,UAAMyC,IAAIN,IAAIN,IAAIJ,GAAGzB,GAAGoD,CAAC,IAAIA;AAC7B,QAAI,CAACX;AACH,aAAO;AACT,UAAMa,IAAI9B,GAAEiB,CAAC,GAAGY,IAAIU,IAAIlC,IAAIJ,GAAGgB,GAAGzC,CAAC,IAAIA;AACvC,QAAI,CAACqD;AACH,aAAO;AACT,UAAM,IAAI7B,GAAE6B,CAAC;AACb,QAAIC,KAAKzB,KAAK,KAAKA;AACjB,aAAO;AAAA,QACLY,EAAE,YAAY,aAAaY,EAAE,WAAW,EAAE;AAAA,MAClD;AACI,QAAId,EAAEE,EAAE,YAAYA,EAAE,SAAS,KAAKY,EAAE,YAAYZ,EAAE,UAAU;AAC5D,aAAO,CAACA,EAAE,UAAU;AACtB,QAAIF,EAAEc,EAAE,YAAYA,EAAE,SAAS,KAAKZ,EAAE,YAAYY,EAAE,UAAU;AAC5D,aAAO,CAACA,EAAE,UAAU;AACtB,QAAIC,IAAI,MAAMnB,KAAK,IAAI,MAAM4B;AAC3B,UAAIT,IAAInB,IAAI,IAAI4B,GAAG;AACjB,cAAM,CAAC1B,GAAGD,CAAC,IAAIK,EAAE,kBAAkB;AAAA,UACjC;AAAA,QACV,CAAS;AACD,eAAO8F;AAAAA,UACL;AAAA,YACE,GAAG1H,GAAEwB,GAAGgB,GAAG,GAAG;AAAA,cACZ,eAAe,IAAI;AAAA,YACjC,CAAa;AAAA,YACD,GAAGxC,GAAEuB,GAAGiB,GAAG,GAAG;AAAA,cACZ,eAAe,IAAI;AAAA,YACjC,CAAa;AAAA,UACF;AAAA,UACD;AAAA,QACV;AAAA,MACA,OAAa;AACL,cAAM,CAAChB,GAAGD,CAAC,IAAIiB,EAAE,kBAAkB;AAAA,UACjC;AAAA,QACV,CAAS;AACD,eAAOkF;AAAAA,UACL;AAAA,YACE,GAAG1H,GAAE4B,GAAGJ,GAAG,GAAG;AAAA,cACZ,eAAe,IAAI;AAAA,YACjC,CAAa;AAAA,YACD,GAAGxB,GAAE4B,GAAGL,GAAG,GAAG;AAAA,cACZ,eAAe,IAAI;AAAA,YACjC,CAAa;AAAA,UACF;AAAA,UACD;AAAA,QACV;AAAA,MACO;AACH,IAAAgB,IAAIX,GAAGzC,IAAIqD,GAAGlB,IAAImB,GAAGS,IAAI;AAAA,EAC1B;AACD,QAAM,IAAI,MAAM,mDAAmD;AACrE;AACA,SAAS6I,GAAGxM,GAAGH,GAAG;AAChB,QAAM,IAAI,CAAA;AACV,MAAI;AAAA,IACF,CAACG,EAAE,YAAYH,CAAC;AAAA,IAChB,CAACG,EAAE,WAAWH,CAAC;AAAA,IACf,CAACA,EAAE,YAAYG,CAAC;AAAA,IAChB,CAACH,EAAE,WAAWG,CAAC;AAAA,EAChB,EAAC,QAAQ,CAAC,CAACyB,GAAGuB,CAAC,MAAM;AACpB,IAAAA,EAAE,YAAYvB,CAAC,KAAK,EAAE,KAAKA,CAAC;AAAA,EAChC,CAAG,GAAG,EAAE,SAAS;AACb,WAAO;AACT,MAAI,EAAE,WAAW;AACf,WAAO,CAACzB,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;AACzB,MAAI,EAAE,WAAW;AACf,WAAOmC,EAAE,EAAE,CAAC,GAAGnC,EAAE,UAAU,KAAKmC,EAAE,EAAE,CAAC,GAAGnC,EAAE,SAAS,IAAI,CAACA,CAAC,IAAI,CAACH,CAAC;AACjE,MAAI,EAAE,WAAW;AACf,WAAO,CAACG,CAAC;AACb;AACA,SAASyM,GAAGzM,GAAGH,GAAG,IAAI,IAAI;AACxB,QAAM,IAAI,KAAK,IAAIG,EAAE,WAAWH,EAAE,SAAS;AAC3C,MAAI,GAAG;AACL,UAAM4B,IAAI+K,GAAGxM,GAAGH,CAAC;AACjB,QAAI4B;AACF,aAAOA;AAAA,EACV;AACD,SAAOhB,GAAET,GAAGH,GAAG,CAAC;AAClB;AACA,SAAS6M,GAAG1M,GAAGH,GAAG;AAChB,QAAM,IAAI,CAAA;AACV,MAAI;AAAA,IACF,CAACG,EAAE,YAAYH,CAAC;AAAA,IAChB,CAACG,EAAE,WAAWH,CAAC;AAAA,IACf,CAACA,EAAE,YAAYG,CAAC;AAAA,IAChB,CAACH,EAAE,WAAWG,CAAC;AAAA,EAChB,EAAC,QAAQ,CAAC,CAACyB,GAAGuB,CAAC,MAAM;AACpB,IAAAA,EAAE,YAAYvB,CAAC,KAAK,EAAE,KAAKA,CAAC;AAAA,EAChC,CAAG,GAAG,EAAE,SAAS;AACb,WAAO;AACT,MAAI,EAAE,WAAW;AACf,WAAO,CAACzB,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;AACzB,MAAI,EAAE,WAAW;AACf,WAAOmC,EAAE,EAAE,CAAC,GAAGnC,EAAE,UAAU,KAAKmC,EAAE,EAAE,CAAC,GAAGnC,EAAE,SAAS,IAAI,CAACA,CAAC,IAAI,CAACH,CAAC;AACjE,MAAI,EAAE,WAAW;AACf,WAAO,CAACG,CAAC;AACb;AACA,SAAS,GAAGA,GAAGH,GAAG,IAAI,IAAI;AACxB,QAAM,IAAI,KAAK,IAAIG,EAAE,WAAWH,EAAE,SAAS;AAC3C,MAAI,GAAG;AACL,UAAM4B,IAAIiL,GAAG1M,GAAGH,CAAC;AACjB,QAAI4B;AACF,aAAOA;AAAA,EACV;AACD,SAAOhB,GAAET,GAAGH,GAAG,CAAC;AAClB;AACA,SAAS+J,GAAG5J,GAAGH,GAAG,GAAG;AACnB,MAAIG,aAAauE,KAAK1E,aAAa0E,GAAG;AACpC,UAAM,IAAIgE;AAAAA,MACRvI;AAAA,MACAH;AAAA,MACA;AAAA,MACA;AAAA,IACN;AACI,WAAO,MAAM,OAAO,KAAK,CAAC,CAAC;AAAA,EAC5B;AACD,MAAIG,aAAauE,KAAK1E,aAAaqL;AACjC,WAAO1F,GAAExF,GAAGH,GAAG,CAAC;AAClB,MAAIG,aAAakL,KAAKrL,aAAa0E;AACjC,WAAOiB,GAAE3F,GAAGG,GAAG,CAAC;AAClB,MAAIA,aAAakL,KAAKrL,aAAaqL;AACjC,WAAOlG,GAAGhF,GAAGH,GAAG,IAAI,CAAC;AACvB,QAAM,IAAI,MAAM,iBAAiB;AACnC;AACA,SAAS6B,GAAE1B,GAAGH,GAAG,GAAG;AAClB,MAAIG,aAAauE,KAAK1E,aAAa0E,GAAG;AACpC,UAAM,IAAIgE;AAAAA,MACRvI;AAAA,MACAH;AAAA,MACA;AAAA,MACA;AAAA,IACN;AACI,WAAO,MAAM,OAAO,EAAE,eAAe,CAAE,GAAE,UAAU,IAAI,OAAO,EAAG,IAAG,aAAa0E,IAAI,EAAE,eAAe,CAAA,GAAI,UAAU,CAAC,CAAC,GAAG,OAAO,EAAG,IAAG,EAAE,eAAe,CAAC,CAAC,GAAG,UAAU,CAAE,GAAE,OAAO,EAAC;AAAA,EACnL;AACD,MAAI,CAACvE,EAAE,YAAY,SAASH,EAAE,WAAW;AACvC,WAAO,EAAE,eAAe,IAAI,UAAU,CAAA,GAAI,OAAO;AACnD,MAAIG,aAAauE,KAAK1E,aAAaqL,GAAG;AACpC,UAAM,IAAI1F,GAAExF,GAAGH,GAAG,CAAC;AACnB,WAAO,EAAE,eAAe,GAAG,UAAU,CAAE,GAAE,OAAO,EAAE;EACnD;AACD,MAAIG,aAAakL,KAAKrL,aAAa0E,GAAG;AACpC,UAAM,IAAIiB,GAAE3F,GAAGG,GAAG,CAAC;AACnB,WAAO,EAAE,eAAe,GAAG,UAAU,CAAE,GAAE,OAAO,EAAE;EACnD;AACD,MAAIA,aAAakL,KAAKrL,aAAaqL,GAAG;AACpC,UAAM,IAAIlG;AAAA,MACRhF;AAAA,MACAH;AAAA,MACA;AAAA,MACA;AAAA,IACN;AACI,WAAO,EAAE,SAAS,EAAE,CAAC,aAAaqL,IAAI;AAAA,MACpC,eAAe,CAAE;AAAA,MACjB,UAAU;AAAA,MACV,OAAO,EAAE;AAAA,IACf,IAAQ;AAAA,MACF,eAAe;AAAA,MACf,UAAU,CAAE;AAAA,MACZ,OAAO,EAAE;AAAA,IACf,IAAQ,EAAE,eAAe,IAAI,UAAU,CAAA,GAAI,OAAO;EAC/C;AACD,MAAIlL,aAAauE,KAAK1E,aAAauC,GAAG;AACpC,UAAM,IAAIgG;AAAAA,MACRpI;AAAA,MACAH;AAAA,MACA;AAAA,IACN;AACI,WAAO,EAAE,eAAe,GAAG,UAAU,CAAE,GAAE,OAAO,EAAE;EACnD;AACD,MAAIA,aAAa0E,KAAKvE,aAAaoC,GAAG;AACpC,UAAM,IAAIgG;AAAAA,MACRvI;AAAA,MACAG;AAAA,MACA;AAAA,IACN;AACI,WAAO,EAAE,eAAe,GAAG,UAAU,CAAE,GAAE,OAAO,EAAE;EACnD;AACD,MAAIA,aAAakL,KAAKrL,aAAauC,GAAG;AACpC,UAAM,IAAIuD,GAAG3F,GAAGH,CAAC;AACjB,WAAO,EAAE,eAAe,GAAG,UAAU,CAAE,GAAE,OAAO,EAAE;EACnD;AACD,MAAIA,aAAaqL,KAAKlL,aAAaoC,GAAG;AACpC,UAAM,IAAIuD,GAAG9F,GAAGG,CAAC;AACjB,WAAO,EAAE,eAAe,GAAG,UAAU,CAAE,GAAE,OAAO,EAAE;EACnD;AACD,MAAIA,aAAaoC,KAAKvC,aAAauC,GAAG;AACpC,UAAM,IAAImJ;AAAA,MACRvL;AAAA,MACAH;AAAA,MACA;AAAA,IACN;AACI,WAAO,EAAE,SAAS,EAAE,CAAC,aAAauC,IAAI;AAAA,MACpC,eAAe,CAAE;AAAA,MACjB,UAAU;AAAA,MACV,OAAO,EAAE;AAAA,IACf,IAAQ;AAAA,MACF,eAAe;AAAA,MACf,UAAU,CAAE;AAAA,MACZ,OAAO,EAAE;AAAA,IACf,IAAQ,EAAE,eAAe,IAAI,UAAU,CAAA,GAAI,OAAO;EAC/C;AACD,MAAIpC,aAAauE,MAAM1E,aAAawH,KAAKxH,aAAaoI,IAAI;AACxD,UAAM,IAAIqC,GAAGtK,GAAGH,CAAC;AACjB,WAAO,EAAE,eAAe,GAAG,UAAU,CAAE,GAAE,OAAO,EAAE;EACnD;AACD,MAAIA,aAAa0E,MAAMvE,aAAaqH,KAAKrH,aAAaiI,IAAI;AACxD,UAAM,IAAIqC,GAAGzK,GAAGG,CAAC;AACjB,WAAO,EAAE,eAAe,GAAG,UAAU,CAAE,GAAE,OAAO,EAAE;EACnD;AACD,OAAKA,aAAakL,KAAKlL,aAAaoC,MAAMvC,aAAaoI,GAAG;AACxD,UAAM,IAAI0C,GAAG3K,GAAGH,CAAC;AACjB,WAAO,EAAE,eAAe,GAAG,UAAU,CAAE,GAAE,OAAO,EAAE;EACnD;AACD,OAAKA,aAAaqL,KAAKrL,aAAauC,MAAMpC,aAAaiI,GAAG;AACxD,UAAM,IAAI0C,GAAG9K,GAAGG,CAAC;AACjB,WAAO,EAAE,eAAe,GAAG,UAAU,CAAE,GAAE,OAAO,EAAE;EACnD;AACD,OAAKA,aAAakL,KAAKlL,aAAaoC,MAAMvC,aAAawH,GAAG;AACxD,UAAM,IAAIsC,GAAG3J,GAAGH,CAAC;AACjB,WAAO,EAAE,eAAe,GAAG,UAAU,CAAE,GAAE,OAAO,EAAE;EACnD;AACD,OAAKA,aAAaqL,KAAKrL,aAAauC,MAAMpC,aAAaqH,GAAG;AACxD,UAAM,IAAIsC,GAAG9J,GAAGG,CAAC;AACjB,WAAO,EAAE,eAAe,GAAG,UAAU,CAAE,GAAE,OAAO,EAAE;EACnD;AACD,MAAIA,aAAaiI,KAAKpI,aAAaoI,GAAG;AACpC,UAAM,IAAI;AAAA,MACRjI;AAAA,MACAH;AAAA,IACN;AACI,WAAO,EAAE,SAAS,EAAE,CAAC,aAAaoI,IAAI;AAAA,MACpC,eAAe,CAAE;AAAA,MACjB,UAAU;AAAA,MACV,OAAO,EAAE;AAAA,IACf,IAAQ;AAAA,MACF,eAAe;AAAA,MACf,UAAU,CAAE;AAAA,MACZ,OAAO,EAAE;AAAA,IACf,IAAQ,EAAE,eAAe,IAAI,UAAU,CAAA,GAAI,OAAO;EAC/C;AACD,MAAIjI,aAAaiI,KAAKpI,aAAawH,KAAKxH,aAAaoI,KAAKjI,aAAaqH,GAAG;AACxE,UAAM,IAAI5G,GAAET,GAAGH,CAAC;AAChB,WAAO,EAAE,eAAe,GAAG,UAAU,CAAE,GAAE,OAAO,EAAE;EACnD;AACD,MAAIG,aAAaqH,KAAKxH,aAAawH,GAAG;AACpC,UAAM,IAAIoF;AAAA,MACRzM;AAAA,MACAH;AAAA,IACN;AACI,WAAO,EAAE,SAAS,EAAE,CAAC,aAAawH,IAAI;AAAA,MACpC,eAAe,CAAE;AAAA,MACjB,UAAU;AAAA,MACV,OAAO,EAAE;AAAA,IACf,IAAQ;AAAA,MACF,eAAe;AAAA,MACf,UAAU,CAAE;AAAA,MACZ,OAAO,EAAE;AAAA,IACf,IAAQ,EAAE,eAAe,IAAI,UAAU,CAAA,GAAI,OAAO;EAC/C;AACD,QAAM,IAAI,MAAM,iBAAiB;AACnC;AACA,SAASoB,GAAGzI,GAAG;AACb,QAAMH,IAAI,CAAA;AACV,WAAS,IAAI,GAAG,IAAIG,GAAG;AACrB,aAAS,IAAI,GAAG,KAAK,GAAG;AACtB,MAAAH,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;AACjB,SAAOA;AACT;AACA,UAAU6D,GAAG1D,GAAG;AACd,aAAW,CAACH,GAAG,CAAC,KAAK4I,GAAGzI,EAAE,MAAM;AAC9B,IAAAH,MAAM,MAAM,MAAM,CAACG,EAAEH,CAAC,GAAGG,EAAE,CAAC,CAAC;AACjC;AACA,MAAMoD,WAAWC,GAAG;AAAA,EAClB,YAAYR,GAAG,EAAE,cAAc1C,IAAI,GAAI,IAAG,IAAI;AAC5C,aACAuH,GAAE,MAAM,UAAU,GAClBA,GAAE,MAAM,gBAAgB,IAAI,GAC5BvH,KAAKoD,GAAGV,CAAC,GAAG,KAAK,WAAWA;AAAA,EAC7B;AAAA,EACD,IAAI,OAAO;AACT,WAAO,KAAK,SAAS,IAAI,CAACA,MAAMA,EAAE,IAAI,EAAE,KAAK;AAAA,CAChD,IAAI;AAAA;AAAA,EAEF;AAAA,EACD,IAAI,OAAO;AACT,WAAO,KAAK;AAAA,EACb;AAAA,EACD,IAAI,aAAa;AACf,WAAO,KAAK,SAAS,CAAC,EAAE;AAAA,EACzB;AAAA,EACD,IAAI,YAAY;AACd,WAAO,KAAK,SAAS,KAAK,SAAS,SAAS,CAAC,EAAE;AAAA,EAChD;AAAA,EACD,IAAI,gBAAgB;AAClB,WAAO,KAAK,SAAS;AAAA,EACtB;AAAA,EACD,SAASA,GAAG;AACV,WAAO,KAAK,SAAS,KAAK,CAAC1C,MAAMA,EAAE,YAAY0C,CAAC,CAAC;AAAA,EAClD;AAAA,EACD,WAAWA,GAAG;AACZ,WAAO,KAAK,YAAY,SAASA,EAAE,WAAW,IAAI,KAAK,SAAS;AAAA,MAC9D,CAAC1C,MAAM0C,EAAE,SAAS;AAAA,QAChB,CAACpB,MAAMC,GAAEvB,GAAGsB,CAAC,EAAE,QAAQ;AAAA,MACxB;AAAA,IACF,IAAG;AAAA,EACL;AAAA,EACD,oBAAoBoB,GAAG;AACrB,WAAO,KAAK,SAAS,QAAQ,CAAC1C,MAAM0C,EAAE,SAAS,QAAQ,CAACpB,MAAMtB,EAAE,YAAY,SAASsB,EAAE,WAAW,IAAIC,GAAEvB,GAAGsB,CAAC,EAAE,WAAW,CAAE,CAAA,CAAC;AAAA,EAC7H;AAAA,EACD,IAAI,cAAc;AAChB,QAAI,KAAK,iBAAiB,MAAM;AAC9B,UAAIoB,IAAI,KAAK,SAAS,CAAC,EAAE;AACzB,WAAK,SAAS,MAAM,CAAC,EAAE,QAAQ,CAAC1C,MAAM;AACpC,QAAA0C,IAAIA,EAAE,MAAM1C,EAAE,WAAW;AAAA,MACjC,CAAO,GAAG,KAAK,eAAe0C;AAAA,IACzB;AACD,WAAO,KAAK;AAAA,EACb;AAAA,EACD,CAAC,OAAO,IAAI,4BAA4B,CAAC,IAAI;AAC3C,WAAO,KAAK;AAAA,EACb;AACH;AACA,SAAS8J,GAAG3M,GAAGH,IAAI,UAAU;AAC3B,EAAA4I,GAAGzI,EAAE,MAAM,EAAE;AAAA,IACX,CAAC,CAAC,GAAG,CAAC,MAAM;AACV,UAAI,MAAM;AACR;AACF,YAAMyB,IAAIzB,EAAE,CAAC,GAAGgD,IAAIhD,EAAE,CAAC,GAAGJ,IAAI8B,GAAED,GAAGuB,CAAC,GAAGjB,IAAI,KAAK,IAAIN,EAAE,WAAWuB,EAAE,SAAS;AAC5E,UAAIpD,EAAE,UAAU,GAAG;AACjB,YAAIA,EAAE,UAAU,KAAK,CAACA,EAAE,SAAS,QAAQ;AACvC,gBAAM+D,IAAI,IAAI,GAAG,IAAI/D,EAAE,cAAc,CAAC;AACtC,cAAI+D,MAAM,KAAKxB,EAAEV,EAAE,YAAY,GAAGM,CAAC,KAAK4B,MAAM,MAAMxB,EAAEV,EAAE,WAAW,GAAGM,CAAC,KAAK4B,MAAM3D,EAAE,SAAS,KAAKmC,EAAEV,EAAE,WAAW,GAAGM,CAAC,KAAKI,EAAEa,EAAE,YAAY,GAAGjB,CAAC,KAAK,CAAC4B,MAAM3D,EAAE,SAAS,KAAKmC,EAAEV,EAAE,YAAY,GAAGM,CAAC,KAAKI,EAAEa,EAAE,WAAW,GAAGjB,CAAC;AACpN;AAAA,QACH;AACD,YAAI,EAAEnC,EAAE,UAAU,KAAKI,EAAE,WAAW,MAAMmC;AAAAA,UACxCV,EAAE;AAAA,UACF7B,EAAE,cAAc,CAAC;AAAA,UACjBmC;AAAA,QACV,KAAaI;AAAAA,UACHV,EAAE;AAAA,UACF7B,EAAE,cAAc,CAAC;AAAA,UACjBmC;AAAA,QACV,KAAaI;AAAAA,UACHV,EAAE;AAAA,UACF7B,EAAE,cAAc,CAAC;AAAA,UACjBmC;AAAA,QACV,KAAaI;AAAAA,UACHV,EAAE;AAAA,UACF7B,EAAE,cAAc,CAAC;AAAA,UACjBmC;AAAA,QACV;AACU,gBAAM,IAAI;AAAA,YACR,GAAGlC,CAAC,8CAA8C4B,EAAE,IAAI,QAAQuB,EAAE,IAAI,UAAU,KAAK;AAAA,cACnFpD,EAAE;AAAA,YAChB,CAAa;AAAA,UACb;AAAA,MACO;AAAA,IACF;AAAA,EACL;AACA;AACA,SAAS2D,GAAGvD,GAAGH,IAAI,UAAU;AAC3B,MAAIG,EAAE,WAAW;AACf,UAAM,IAAI,MAAM,GAAGH,CAAC,iCAAiC;AACvDa,EAAAA,GAAE,CAACV,EAAE,MAAM,GAAG,EAAE,GAAGA,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE;AAAA,IAC9B,CAAC,CAAC,GAAG,CAAC,MAAM;AACV,UAAI,CAACmC,EAAE,EAAE,WAAW,EAAE,UAAU;AAC9B,cAAM,IAAI;AAAA,UACR,GAAGtC,CAAC,oCAAoC,EAAE,IAAI,QAAQ,EAAE,IAAI;AAAA,QACtE;AAAA,IACK;AAAA,EACL,GAAK8M,GAAG3M,GAAGH,CAAC;AACZ;AACA,SAAS8I,GAAG3I,GAAGH,GAAG;AAChB,SAAO,CAAC,EAAEG,aAAauE,KAAK1E,aAAa0E,KAAKqI,GAAG5M,EAAE,GAAGH,EAAE,CAAC,KAAKG,aAAakL,KAAKrL,aAAaqL,KAAK/I,EAAEnC,EAAE,QAAQH,EAAE,MAAM,KAAKG,EAAE,SAASH,EAAE,SAASG,EAAE;AACrJ;AACA,SAASyJ,GAAGzJ,GAAGH,GAAG;AAChB,MAAIG,aAAauE,KAAK1E,aAAa0E;AACjC,WAAO,IAAIA,EAAEvE,EAAE,YAAYH,EAAE,SAAS;AACxC,MAAIG,aAAakL,KAAKrL,aAAaqL;AACjC,WAAO,IAAIA;AAAAA,MACTlL,EAAE;AAAA,MACFH,EAAE;AAAA,MACFG,EAAE;AAAA,MACFA,EAAE;AAAA,IACR;AACE,QAAM,IAAI,MAAM,iBAAiB;AACnC;AACA,SAAS4I,GAAG5I,GAAG;AACb,MAAIH,IAAI;AACR,QAAM,IAAI,CAAA;AACV,aAAW,KAAKG,EAAE,UAAU;AAC1B,QAAI,EAAE,WAAW,GAAG;AAClB,QAAE,KAAK,CAAC;AACR;AAAA,IACD;AACD,UAAMyB,IAAI,EAAE,EAAE,SAAS,CAAC;AACxB,IAAAkH,GAAGlH,GAAG,CAAC,KAAK5B,IAAI,IAAI,EAAE,IAAK,GAAE,EAAE,KAAK4J,GAAGhI,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC;AAAA,EAC1D;AACD,MAAIU,EAAEnC,EAAE,YAAYA,EAAE,SAAS,KAAK2I;AAAA,IAClC,EAAE,CAAC;AAAA,IACH,EAAE,EAAE,SAAS,CAAC;AAAA,EAClB,GAAK;AACD,IAAA9I,IAAI;AACJ,UAAM,IAAI,EAAE;AACZ,MAAE,CAAC,IAAI4J,GAAG,GAAG,EAAE,CAAC,CAAC;AAAA,EAClB;AACD,SAAO5J,IAAI,IAAI;AACjB;AACA,MAAM0H,WAAUnE,GAAG;AAAA,EACjB,cAAc;AACZ,UAAM,GAAG,SAAS,GAClBsE,GAAE,MAAM,cAAc,QAAQ;AAAA,EAC/B;AAAA,EACD,UAAU;AACR,UAAM7E,IAAI,KAAK,SAAS,IAAI,CAAC1C,MAAMA,EAAE,QAAO,CAAE;AAC9C,WAAO0C,EAAE,QAAS,GAAE,IAAI0E,GAAE1E,GAAG,EAAE,cAAc,GAAE,CAAE;AAAA,EAClD;AAAA,EACD,QAAQ;AACN,WAAO,IAAI0E;AAAA,MACT,KAAK,SAAS,IAAI,CAAC1E,MAAMA,EAAE,OAAO;AAAA,MAClC,EAAE,cAAc,GAAI;AAAA,IAC1B;AAAA,EACG;AAAA,EACD,OAAOA,GAAG;AACR,QAAI,CAACV,EAAE,KAAK,WAAWU,EAAE,UAAU;AACjC,YAAM,QAAQ,MAAM,KAAK,MAAMA,EAAE,IAAI,GAAG,IAAI,MAAM,wDAAwD;AAC5G,WAAO,IAAI0E,GAAE,CAAC,GAAG,KAAK,UAAU,GAAG1E,EAAE,QAAQ,CAAC;AAAA,EAC/C;AAAA,EACD,WAAW;AACT,UAAMA,IAAI+F,GAAG,IAAI;AACjB,WAAO/F,IAAI,IAAI0E,GAAE1E,GAAG,EAAE,cAAc,IAAI,IAAI;AAAA,EAC7C;AAAA,EACD,UAAUA,GAAG;AACX,WAAO,IAAI0E;AAAA,MACT,KAAK,SAAS,IAAI,CAACpH,MAAMA,EAAE,UAAU0C,CAAC,CAAC;AAAA,MACvC,EAAE,cAAc,GAAI;AAAA,IAC1B;AAAA,EACG;AACH;AACA,MAAMgK,KAAK,CAAC7M,GAAGH,MAAM;AACnB,QAAM,IAAIiN,GAAGjN,GAAG;AAAA,IACd,GAAG,CAAC,GAAG,CAAC;AAAA,IACR,YAAYG;AAAA,IACZ,WAAWH,EAAE;AAAA,EACjB,CAAG;AACD,MAAI,MAAM;AACR,WAAO;AACT,QAAM,EAAE,oBAAoB,GAAG,oBAAoB4B,EAAC,IAAK;AACzD,MAAI,CAAC5B,EAAE,iBAAiB,CAAC,KAAK4B,KAAK,CAAC5B,EAAE;AACpC,WAAO;AACT,MAAI,KAAK,IAAI,CAAC,IAAIA,EAAE,aAAa,KAAK,IAAI,IAAI,CAAC,IAAIA,EAAE,WAAW;AAC9D,UAAM,GAAGmD,CAAC,IAAInD,EAAE;AAChB,WAAOG,EAAE,CAAC,IAAIgD,IAAI,IAAI,IAAI;AAAA,EAC3B;AACD,SAAO;AACT;AACA,MAAMnB,GAAG;AAAA,EACP,YAAYhC,GAAG;AACb6H,IAAAA,GAAE,MAAM,UAAU,CAAC,GACnBA,GAAE,MAAM,SAAS,GACjB,KAAK,UAAU7H;AAAA,EAChB;AAAA,EACD,OAAOA,GAAG,IAAI,IAAI;AAChB,KAAC,KAAK,CAAC,KAAK,QAAQ,YAAYA,CAAC,MAAMsC,EAAEtC,GAAG,KAAK,QAAQ,UAAU,IAAI,KAAK,UAAU,KAAK,QAAQ,oBAAoB,CAAC,IAAI,IAAI,IAAI,IAAIsC,EAAEtC,GAAG,KAAK,QAAQ,SAAS,IAAI,KAAK,UAAU,KAAK,QAAQ,mBAAmB,CAAC,IAAI,IAAI,IAAI,IAAI,KAAK,UAAU;AAAA,EACvP;AAAA,EACD,IAAI,QAAQ;AACV,WAAO,KAAK;AAAA,EACb;AACH;AACA,MAAMkN,KAAK,CAAC/M,GAAGH,MAAM;AACnB,QAAM,IAAIA,EAAE,WAAW,IAAI,KAAK,IAAIG,EAAE,CAAC,IAAIH,EAAE,OAAO,CAAC,CAAC;AACtD,MAAI,IAAIA,EAAE,SAAS;AACjB,WAAO;AACT,QAAM4B,IAAIuL,GAAGhN,GAAGH,EAAE,MAAM,GAAGmD,IAAInD,EAAE,SAASA,EAAE,QAAQD,IAAI,IAAI;AAC5D,MAAI,KAAK,IAAI6B,IAAIuB,CAAC,IAAIpD,KAAKC,EAAE,YAAYG,CAAC;AACxC,WAAO;AACT,QAAM+B,IAAIN,IAAIuB,IAAIpD;AAClB,MAAImC,KAAKlC,EAAE,OAAO,CAAC,IAAIG,EAAE,CAAC;AACxB,WAAO;AACT,QAAM2D,IAAI,KAAK;AAAA,IACb9D,EAAE,SAASA,EAAE,SAAS,IAAI;AAAA,EAC3B,GAAE,IAAI,IAAIgC,GAAGhC,CAAC;AACf,SAAO,EAAE,OAAO,CAACA,EAAE,OAAO,CAAC,IAAI8D,GAAG3D,EAAE,CAAC,CAAC,CAAC,GAAG+B,KAAK,EAAE,OAAO,CAAClC,EAAE,OAAO,CAAC,IAAI8D,GAAG3D,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE;AACtF,GAAGiN,KAAK,CAACjN,GAAGH,MAAM;AAChB,QAAM,IAAIA,EAAE,YAAY,OAAOA,EAAE,YAAY,QAAQ,GAAG,IAAI,IAAI0E,EAAEvE,GAAG,CAAC,GAAGA,EAAE,CAAC,CAAC,CAAC,GAAGyB,IAAI,IAAII,GAAGhC,CAAC;AAC7F,SAAOuI,GAAG,GAAGvI,CAAC,EAAE,QAAQ,CAACmD,MAAM;AAC7B,IAAAvB,EAAE,OAAOuB,GAAG,EAAE;AAAA,EAClB,CAAG,GAAGvB,EAAE;AACR,GAAGyL,KAAK,CAAClN,GAAGH,MAAM;AAChB,QAAM,IAAI,IAAIgC,GAAGhC,CAAC;AAClB,SAAOA,EAAE,UAAUG,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM;AAClC,QAAI;AACF,aAAOH,EAAE,WAAW,CAAC;AAAA,IAC3B,QAAY;AACN,aAAO;AAAA,IACR;AAAA,EACL,CAAG,EAAE,OAAO,CAAC,MAAM,MAAM,IAAI,EAAE,OAAO,CAAC,MAAM;AACzC,UAAM,CAAC4B,CAAC,IAAI;AACZ,WAAOA,KAAKzB,EAAE,CAAC;AAAA,EACnB,CAAG,EAAE,QAAQ,CAAC,MAAM;AAChB,MAAE,OAAO,GAAG,EAAE;AAAA,EAClB,CAAG,GAAG,EAAE;AACR;AACA,SAASmN,GAAGnN,GAAGH,GAAG;AAChB,MAAIA,aAAa0E;AACf,WAAOsI,GAAG7M,GAAGH,CAAC;AAChB,MAAIA,aAAaqL;AACf,WAAO6B,GAAG/M,GAAGH,CAAC;AAChB,MAAIA,aAAauC;AACf,WAAO6K,GAAGjN,GAAGH,CAAC;AAChB,MAAIA,aAAawH,KAAKxH,aAAaoI;AACjC,WAAOiF,GAAGlN,GAAGH,CAAC;AAChB,QAAM,IAAI,MAAM,iBAAiB;AACnC;AACA,MAAMe,WAAUwC,GAAG;AAAA,EACjB,YAAYP,GAAG,EAAE,cAAc1C,IAAI,GAAI,IAAG,IAAI;AAC5C,UAAM0C,GAAG,EAAE,cAAc,GAAI,CAAA,GAC7B6E,GAAE,MAAM,cAAc,MAAM,GAC5BA,GAAE,MAAM,cAAc,IAAI,GAC1BvH,KAAKiN,GAAGvK,CAAC;AAAA,EACV;AAAA,EACD,IAAI,YAAY;AACd,QAAI,KAAK,eAAe,MAAM;AAC5B,YAAMA,IAAI,KAAK,SAAS,QAAQ,CAACpB,MAAMA,aAAa8C,IAAI,CAAC9C,EAAE,UAAU,IAAI,CAACA,EAAE,YAAYA,EAAE,WAAW,GAAG,CAAC,CAAC,GAAGtB,IAAI0C,EAAE,IAAI,CAACpB,GAAGuB,MAAM;AAC/H,cAAM,IAAIH,GAAGG,IAAI,KAAKH,EAAE,MAAM;AAC9B,gBAAQ,EAAE,CAAC,IAAIpB,EAAE,CAAC,MAAM,EAAE,CAAC,IAAIA,EAAE,CAAC;AAAA,MAC1C,CAAO,EAAE,OAAO,CAACA,GAAGuB,MAAMvB,IAAIuB,GAAG,CAAC;AAC5B,WAAK,aAAa7C,IAAI;AAAA,IACvB;AACD,WAAO,KAAK;AAAA,EACb;AAAA,EACD,QAAQ;AACN,WAAO,IAAIS;AAAA,MACT,KAAK,SAAS,IAAI,CAACiC,MAAMA,EAAE,OAAO;AAAA,MAClC,EAAE,cAAc,GAAI;AAAA,IAC1B;AAAA,EACG;AAAA,EACD,UAAU;AACR,UAAMA,IAAI,KAAK,SAAS,IAAI,CAAC1C,MAAMA,EAAE,QAAO,CAAE;AAC9C,WAAO0C,EAAE,QAAS,GAAE,IAAIjC,GAAEiC,GAAG,EAAE,cAAc,GAAE,CAAE;AAAA,EAClD;AAAA,EACD,UAAUA,GAAG;AACX,WAAO,IAAIjC;AAAA,MACT,KAAK,SAAS,IAAI,CAACT,MAAMA,EAAE,UAAU0C,CAAC,CAAC;AAAA,MACvC,EAAE,cAAc,GAAI;AAAA,IAC1B;AAAA,EACG;AAAA,EACD,SAASA,GAAG;AACV,WAAO,KAAK,SAASA,CAAC,KAAK,CAAC,KAAK,YAAY,SAASA,CAAC,IAAI,KAAK,KAAK,SAAS,OAAO,CAACpB,GAAGuB,MAAMvB,IAAI0L,GAAGtK,GAAGG,CAAC,GAAG,CAAC,IAAI,MAAM;AAAA,EACzH;AAAA,EACD,WAAW;AACT,UAAMH,IAAI+F,GAAG,IAAI;AACjB,WAAO/F,IAAI,IAAIjC,GAAEiC,GAAG,EAAE,cAAc,IAAI,IAAI;AAAA,EAC7C;AACH;AACA,SAASuK,GAAGpN,GAAG;AACb,MAAIuD,GAAGvD,GAAG,MAAM,GAAG,CAACmC,EAAEnC,EAAE,CAAC,EAAE,YAAYA,EAAEA,EAAE,SAAS,CAAC,EAAE,SAAS;AAC9D,UAAM,IAAI,MAAM,6BAA6B;AACjD;AACA,MAAMqN,KAAK;AAAA,EACT9I;AAAAA,EACA2G;AAAAA,EACA9I;AAAAA,EACA6F;AAAAA,EACAZ;AACF;AACA,SAASiG,GAAGtN,GAAG;AACb,SAAOqN,GAAG,KAAK,CAACxN,MAAMG,aAAaH,CAAC;AACtC;AACA,SAASU,GAAGP,GAAG;AACb,MAAIA,aAAauE;AACf,WAAO;AAAA,MACL,MAAMvE,EAAE;AAAA,MACR,YAAYA,EAAE;AAAA,MACd,WAAWA,EAAE;AAAA,IACnB;AACE,MAAIA,aAAakL;AACf,WAAO;AAAA,MACL,MAAMlL,EAAE;AAAA,MACR,YAAYA,EAAE;AAAA,MACd,WAAWA,EAAE;AAAA,MACb,QAAQA,EAAE;AAAA,MACV,WAAWA,EAAE;AAAA,IACnB;AACE,MAAIA,aAAaoC;AACf,WAAO;AAAA,MACL,MAAMpC,EAAE;AAAA,MACR,YAAYA,EAAE;AAAA,MACd,WAAWA,EAAE;AAAA,MACb,QAAQA,EAAE;AAAA,MACV,WAAWA,EAAE;AAAA,MACb,aAAaA,EAAE;AAAA,MACf,aAAaA,EAAE;AAAA,MACf,WAAWA,EAAE;AAAA,IACnB;AACE,MAAIA,aAAaiI;AACf,WAAO;AAAA,MACL,MAAMjI,EAAE;AAAA,MACR,YAAYA,EAAE;AAAA,MACd,WAAWA,EAAE;AAAA,MACb,cAAcA,EAAE;AAAA,IACtB;AACE,MAAIA,aAAaqH;AACf,WAAO;AAAA,MACL,MAAMrH,EAAE;AAAA,MACR,YAAYA,EAAE;AAAA,MACd,WAAWA,EAAE;AAAA,MACb,mBAAmBA,EAAE;AAAA,MACrB,kBAAkBA,EAAE;AAAA,IAC1B;AACE,QAAM,IAAI,MAAM,sBAAsB;AACxC;AACA,SAAS4H,GAAG5H,GAAG;AACb,SAAO;AAAA,IACL,MAAM;AAAA,IACN,UAAUA,EAAE,SAAS,IAAIO,EAAE;AAAA,EAC/B;AACA;AACA,SAASoB,GAAG3B,GAAG;AACb,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS4H,GAAG5H,EAAE,OAAO;AAAA,IACrB,OAAOA,EAAE,MAAM,IAAI4H,EAAE;AAAA,EACzB;AACA;AACA,SAAS2F,GAAGvN,GAAG;AACb,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAASA,EAAE,QAAQ,IAAI2B,EAAE;AAAA,EAC7B;AACA;AACA,SAASX,GAAGhB,GAAG;AACb,MAAIA,aAAaF;AACf,WAAOyN,GAAGvN,CAAC;AACb,MAAIA,aAAa+H;AACf,WAAOpG,GAAG3B,CAAC;AACb,MAAIA,aAAaY;AACf,WAAOgH,GAAG5H,CAAC;AACb,MAAIsN,GAAGtN,CAAC;AACN,WAAOO,GAAGP,CAAC;AACb,QAAM,IAAI,MAAM,oBAAoB;AACtC;AACA,MAAMwN,GAAG;AAAA,EACP,cAAc;AACZ,SAAK,MAAM,CAAA,GAAI,KAAK,SAAS,IAAI,KAAK,SAAS;AAAA,EAChD;AAAA,EACD,QAAQ;AACN,SAAK,SAAS;AAAA,EACf;AAAA,EACD,KAAK3N,GAAG,GAAG;AACT,QAAI,IAAI,KAAK;AACb,WAAO,IAAI,KAAK;AACd,YAAM4B,IAAI,IAAI,KAAK,GAAGuB,IAAI,KAAK,OAAOvB,CAAC;AACvC,UAAI,KAAKuB;AACP;AACF,WAAK,IAAI,CAAC,IAAI,KAAK,IAAIvB,CAAC,GAAG,KAAK,OAAO,CAAC,IAAIuB,GAAG,IAAIvB;AAAA,IACpD;AACD,SAAK,IAAI,CAAC,IAAI5B,GAAG,KAAK,OAAO,CAAC,IAAI;AAAA,EACnC;AAAA,EACD,MAAM;AACJ,QAAI,KAAK,WAAW;AAClB;AACF,UAAMA,IAAI,KAAK,IAAI,CAAC;AACpB,QAAI,KAAK,UAAU,KAAK,SAAS,GAAG;AAClC,YAAM,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,KAAK,MAAM,GAAG,IAAI,KAAK,OAAO,CAAC,IAAI,KAAK,OAAO,KAAK,MAAM,GAAG4B,IAAI,KAAK,UAAU;AACjH,UAAIuB,IAAI;AACR,aAAOA,IAAIvB,KAAK;AACd,YAAI7B,KAAKoD,KAAK,KAAK;AACnB,cAAMjB,IAAInC,IAAI;AACd,YAAI+D,IAAI,KAAK,IAAI/D,CAAC,GAAG,IAAI,KAAK,OAAOA,CAAC;AACtC,cAAMyC,IAAI,KAAK,OAAON,CAAC;AACvB,YAAIA,IAAI,KAAK,UAAUM,IAAI,MAAMzC,IAAImC,GAAG4B,IAAI,KAAK,IAAI5B,CAAC,GAAG,IAAIM,IAAI,KAAK;AACpE;AACF,aAAK,IAAIW,CAAC,IAAIW,GAAG,KAAK,OAAOX,CAAC,IAAI,GAAGA,IAAIpD;AAAA,MAC1C;AACD,WAAK,IAAIoD,CAAC,IAAI,GAAG,KAAK,OAAOA,CAAC,IAAI;AAAA,IACnC;AACD,WAAOnD;AAAA,EACR;AAAA,EACD,OAAO;AACL,QAAI,KAAK,WAAW;AAClB,aAAO,KAAK,IAAI,CAAC;AAAA,EACpB;AAAA,EACD,YAAY;AACV,QAAI,KAAK,WAAW;AAClB,aAAO,KAAK,OAAO,CAAC;AAAA,EACvB;AAAA,EACD,SAAS;AACP,SAAK,IAAI,SAAS,KAAK,OAAO,SAAS,KAAK;AAAA,EAC7C;AACH;AACA,MAAM2I,KAAK;AAAA,EACT;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAG7H,KAAK;AACR,MAAMI,GAAG;AAAA,EACP,OAAO,KAAKlB,GAAG;AACb,QAAI,CAACA,KAAKA,EAAE,eAAe,UAAUA,EAAE;AACrC,YAAM,IAAI,MAAM,+DAA+D;AACjF,UAAM,CAAC,GAAG,CAAC,IAAI,IAAI,WAAWA,GAAG,GAAG,CAAC;AACrC,QAAI,MAAM;AACR,YAAM,IAAI,MAAM,kDAAkD;AACpE,QAAI,KAAK,MAAMc;AACb,YAAM,IAAI,MAAM,QAAQ,KAAK,CAAC,wBAAwBA,EAAE,GAAG;AAC7D,UAAM,CAACc,CAAC,IAAI,IAAI,YAAY5B,GAAG,GAAG,CAAC,GAAG,CAACmD,CAAC,IAAI,IAAI,YAAYnD,GAAG,GAAG,CAAC;AACnE,WAAO,IAAIkB,GAAGiC,GAAGvB,GAAG+G,GAAG,IAAI,EAAE,GAAG,QAAQ3I,CAAC;AAAA,EAC1C;AAAA,EACD,YAAYA,GAAG,IAAI,IAAI,IAAI,cAAc4B,IAAI,aAAauB,GAAG;AAC3D,QAAInD,MAAM;AACR,YAAM,IAAI,MAAM,sCAAsC;AACxD,QAAI,MAAMA,CAAC,KAAKA,KAAK;AACnB,YAAM,IAAI,MAAM,8BAA8BA,CAAC,GAAG;AACpD,SAAK,WAAW,CAACA,GAAG,KAAK,WAAW,KAAK,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK;AACnE,QAAID,IAAIC,GAAGkC,IAAInC;AACf,SAAK,eAAe,CAACA,IAAI,CAAC;AAC1B;AACE,MAAAA,IAAI,KAAK,KAAKA,IAAI,KAAK,QAAQ,GAAGmC,KAAKnC,GAAG,KAAK,aAAa,KAAKmC,IAAI,CAAC;AAAA,WACjEnC,MAAM;AACb,SAAK,YAAY,KAAK,cAAc,KAAK,iBAAiBmC,IAAI,QAAQ,cAAc;AACpF,UAAM4B,IAAI6E,GAAG,QAAQ,KAAK,SAAS,GAAG,IAAIzG,IAAI,IAAI,KAAK,UAAU;AACjE,QAAI4B,IAAI;AACN,YAAM,IAAI,MAAM,iCAAiC,CAAC,GAAG;AACvD,IAAAX,KAAKA,EAAE,eAAe,UAAU,CAACA,EAAE,UAAU,KAAK,OAAOA,GAAG,KAAK,SAAS,IAAI,KAAK,UAAU,KAAK,MAAM,GAAGjB,IAAI,CAAC,GAAG,KAAK,WAAW,IAAI,KAAK,eAAe,KAAK,MAAM,IAAI,GAAGA,CAAC,GAAG,KAAK,OAAOA,IAAI,GAAG,KAAK,OAAO,KAAK,OAAO,KAAK,OAAO,CAAC,GAAG,KAAK,OAAO,KAAK,OAAO,KAAK,OAAO,CAAC,GAAG,KAAK,OAAO,KAAK,OAAO,KAAK,OAAO,CAAC,GAAG,KAAK,OAAO,KAAK,OAAO,KAAK,OAAO,CAAC,MAAM,KAAK,OAAO,IAAIN,EAAE,IAAI,IAAIM,IAAI,KAAK,eAAe,iBAAiB,GAAG,KAAK,SAAS,IAAI,KAAK,UAAU,KAAK,MAAM,GAAGA,IAAI,CAAC,GAAG,KAAK,WAAW,IAAI,KAAK,eAAe,KAAK,MAAM,IAAI,GAAGA,CAAC,GAAG,KAAK,OAAO,GAAG,KAAK,OAAO,OAAO,KAAK,OAAO,OAAO,KAAK,OAAO,QAAQ,KAAK,OAAO,QAAQ,IAAI,WAAW,KAAK,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,MAAMpB,MAAM,KAAKgD,CAAC,CAAC,GAAG,IAAI,YAAY,KAAK,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,GAAG,IAAI,YAAY,KAAK,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI9D,IAAI,KAAK,SAAS,IAAI2N;EAChyB;AAAA,EACD,IAAI3N,GAAG,GAAG,GAAG4B,GAAG;AACd,UAAMuB,IAAI,KAAK,QAAQ,GAAGpD,IAAI,KAAK;AACnC,WAAO,KAAK,SAASoD,CAAC,IAAIA,GAAGpD,EAAE,KAAK,MAAM,IAAIC,GAAGD,EAAE,KAAK,MAAM,IAAI,GAAGA,EAAE,KAAK,MAAM,IAAI,GAAGA,EAAE,KAAK,MAAM,IAAI6B,GAAG5B,IAAI,KAAK,SAAS,KAAK,OAAOA,IAAI,IAAI,KAAK,SAAS,KAAK,OAAO,IAAI,IAAI,KAAK,SAAS,KAAK,OAAO,IAAI4B,IAAI,KAAK,SAAS,KAAK,OAAOA,IAAIuB;AAAA,EACtP;AAAA,EACD,SAAS;AACP,QAAI,KAAK,QAAQ,MAAM,KAAK;AAC1B,YAAM,IAAI,MAAM,SAAS,KAAK,QAAQ,CAAC,wBAAwB,KAAK,QAAQ,GAAG;AACjF,UAAMnD,IAAI,KAAK;AACf,QAAI,KAAK,YAAY,KAAK,UAAU;AAClC,MAAAA,EAAE,KAAK,MAAM,IAAI,KAAK,MAAMA,EAAE,KAAK,MAAM,IAAI,KAAK,MAAMA,EAAE,KAAK,MAAM,IAAI,KAAK,MAAMA,EAAE,KAAK,MAAM,IAAI,KAAK;AAC1G;AAAA,IACD;AACD,UAAM,IAAI,KAAK,OAAO,KAAK,QAAQ,GAAG,IAAI,KAAK,OAAO,KAAK,QAAQ,GAAG4B,IAAI,IAAI,YAAY,KAAK,QAAQ,GAAGuB,IAAK;AAC/G,aAASpD,IAAI,GAAGmC,IAAI,GAAGnC,IAAI,KAAK,UAAUA,KAAK;AAC7C,YAAM+D,IAAI9D,EAAEkC,GAAG,GAAG,IAAIlC,EAAEkC,GAAG,GAAGM,IAAIxC,EAAEkC,GAAG,GAAGmB,IAAIrD,EAAEkC,GAAG,GAAGkB,IAAI,KAAK,MAAMD,MAAMW,IAAItB,KAAK,IAAI,KAAK,QAAQ,CAAC,GAAG,IAAI,KAAK,MAAMW,MAAM,IAAIE,KAAK,IAAI,KAAK,QAAQ,CAAC;AACzJ,MAAAzB,EAAE7B,CAAC,IAAI6N,GAAGxK,GAAG,CAAC;AAAA,IACf;AACD/C,IAAAA,GAAGuB,GAAG5B,GAAG,KAAK,UAAU,GAAG,KAAK,WAAW,GAAG,KAAK,QAAQ;AAC3D,aAASD,IAAI,GAAGmC,IAAI,GAAGnC,IAAI,KAAK,aAAa,SAAS,GAAGA,KAAK;AAC5D,YAAM+D,IAAI,KAAK,aAAa/D,CAAC;AAC7B,aAAOmC,IAAI4B,KAAK;AACd,cAAM,IAAI5B;AACV,YAAIM,IAAIxC,EAAEkC,GAAG,GAAGmB,IAAIrD,EAAEkC,GAAG,GAAGkB,IAAIpD,EAAEkC,GAAG,GAAG,IAAIlC,EAAEkC,GAAG;AACjD,iBAASE,IAAI,GAAGA,IAAI,KAAK,YAAYF,IAAI4B,GAAG1B;AAC1C,UAAAI,IAAI,KAAK,IAAIA,GAAGxC,EAAEkC,GAAG,CAAC,GAAGmB,IAAI,KAAK,IAAIA,GAAGrD,EAAEkC,GAAG,CAAC,GAAGkB,IAAI,KAAK,IAAIA,GAAGpD,EAAEkC,GAAG,CAAC,GAAG,IAAI,KAAK,IAAI,GAAGlC,EAAEkC,GAAG,CAAC;AACnG,aAAK,SAAS,KAAK,QAAQ,CAAC,IAAI,GAAGlC,EAAE,KAAK,MAAM,IAAIwC,GAAGxC,EAAE,KAAK,MAAM,IAAIqD,GAAGrD,EAAE,KAAK,MAAM,IAAIoD,GAAGpD,EAAE,KAAK,MAAM,IAAI;AAAA,MACjH;AAAA,IACF;AAAA,EACF;AAAA,EACD,OAAOA,GAAG,GAAG,GAAG4B,GAAGuB,GAAG;AACpB,QAAI,KAAK,SAAS,KAAK,OAAO;AAC5B,YAAM,IAAI,MAAM,6CAA6C;AAC/D,QAAIpD,IAAI,KAAK,OAAO,SAAS;AAC7B,UAAMmC,IAAI,CAAA,GAAI4B,IAAI;AAClB,WAAO/D,MAAM,UAAU;AACrB,YAAM,IAAI,KAAK,IAAIA,IAAI,KAAK,WAAW,GAAGmG,GAAGnG,GAAG,KAAK,YAAY,CAAC;AAClE,eAASyC,IAAIzC,GAAGyC,IAAI,GAAGA,KAAK,GAAG;AAC7B,YAAI,IAAI,KAAK,OAAOA,CAAC,KAAKZ,IAAI,KAAK,OAAOY,IAAI,CAAC,KAAKxC,IAAI,KAAK,OAAOwC,IAAI,CAAC,KAAK,IAAI,KAAK,OAAOA,IAAI,CAAC;AACjG;AACF,cAAMa,IAAI,KAAK,SAASb,KAAK,CAAC,IAAI;AAClC,QAAAzC,KAAK,KAAK,WAAW,IAAImC,EAAE,KAAKmB,CAAC,KAAKF,MAAM,UAAUA,EAAEE,CAAC,MAAMS,EAAE,KAAKT,CAAC;AAAA,MACxE;AACD,MAAAtD,IAAImC,EAAE;IACP;AACD,WAAO4B;AAAA,EACR;AAAA,EACD,UAAU9D,GAAG,GAAG,IAAI,OAAO4B,IAAI,OAAOuB,GAAG;AACvC,QAAI,KAAK,SAAS,KAAK,OAAO;AAC5B,YAAM,IAAI,MAAM,6CAA6C;AAC/D,QAAIpD,IAAI,KAAK,OAAO,SAAS;AAC7B,UAAMmC,IAAI,KAAK,QAAQ4B,IAAI,CAAA,GAAI,IAAIlC,IAAIA;AACvC,WAAO7B,MAAM,UAAU;AACrB,YAAMyC,IAAI,KAAK,IAAIzC,IAAI,KAAK,WAAW,GAAGmG,GAAGnG,GAAG,KAAK,YAAY,CAAC;AAClE,eAASsD,IAAItD,GAAGsD,IAAIb,GAAGa,KAAK,GAAG;AAC7B,cAAMD,IAAI,KAAK,SAASC,KAAK,CAAC,IAAI,GAAG,IAAIa,GAAGlE,GAAG,KAAK,OAAOqD,CAAC,GAAG,KAAK,OAAOA,IAAI,CAAC,CAAC,GAAGjB,IAAI8B,GAAG,GAAG,KAAK,OAAOb,IAAI,CAAC,GAAG,KAAK,OAAOA,IAAI,CAAC,CAAC,GAAGlB,IAAI,IAAI,IAAIC,IAAIA;AACvJ,QAAArC,KAAK,KAAK,WAAW,IAAImC,EAAE,KAAKkB,KAAK,GAAGjB,CAAC,KAAKgB,MAAM,UAAUA,EAAEC,CAAC,MAAMlB,EAAE,MAAMkB,KAAK,KAAK,GAAGjB,CAAC;AAAA,MAC9F;AACD,aAAOD,EAAE,UAAUA,EAAE,KAAM,IAAG;AAC5B,YAAIA,EAAE,UAAS,IAAK,MAAM4B,EAAE,KAAK5B,EAAE,IAAK,KAAI,CAAC,GAAG4B,EAAE,WAAW;AAC3D,iBAAO5B,EAAE,MAAO,GAAE4B;AACtB,MAAA/D,IAAImC,EAAE,IAAK,KAAI;AAAA,IAChB;AACD,WAAOA,EAAE,MAAO,GAAE4B;AAAA,EACnB;AACH;AACA,SAASI,GAAG/D,GAAGH,GAAG,GAAG;AACnB,SAAOG,IAAIH,IAAIA,IAAIG,IAAIA,KAAK,IAAI,IAAIA,IAAI;AAC1C;AACA,SAAS+F,GAAG/F,GAAGH,GAAG;AAChB,MAAI,IAAI,GAAG,IAAIA,EAAE,SAAS;AAC1B,SAAO,IAAI,KAAK;AACd,UAAM4B,IAAI,IAAI,KAAK;AACnB,IAAA5B,EAAE4B,CAAC,IAAIzB,IAAI,IAAIyB,IAAI,IAAIA,IAAI;AAAA,EAC5B;AACD,SAAO5B,EAAE,CAAC;AACZ;AACA,SAASK,GAAGF,GAAGH,GAAG,GAAG,GAAG4B,GAAGuB,GAAG;AAC5B,MAAI,KAAK,MAAM,IAAIA,CAAC,KAAK,KAAK,MAAMvB,IAAIuB,CAAC;AACvC;AACF,QAAMpD,IAAII,EAAE,IAAIyB,KAAK,CAAC;AACtB,MAAIM,IAAI,IAAI,GAAG4B,IAAIlC,IAAI;AACvB,aAAW;AACT;AACE,MAAAM;AAAA,WACK/B,EAAE+B,CAAC,IAAInC;AACd;AACE,MAAA+D;AAAA,WACK3D,EAAE2D,CAAC,IAAI/D;AACd,QAAImC,KAAK4B;AACP;AACF,IAAA+J,GAAG1N,GAAGH,GAAG,GAAGkC,GAAG4B,CAAC;AAAA,EACjB;AACDzD,EAAAA,GAAGF,GAAGH,GAAG,GAAG,GAAG8D,GAAGX,CAAC,GAAG9C,GAAGF,GAAGH,GAAG,GAAG8D,IAAI,GAAGlC,GAAGuB,CAAC;AAC/C;AACA,SAAS0K,GAAG1N,GAAGH,GAAG,GAAG,GAAG4B,GAAG;AACzB,QAAMuB,IAAIhD,EAAE,CAAC;AACb,EAAAA,EAAE,CAAC,IAAIA,EAAEyB,CAAC,GAAGzB,EAAEyB,CAAC,IAAIuB;AACpB,QAAMpD,IAAI,IAAI,GAAGmC,IAAI,IAAIN,GAAGkC,IAAI9D,EAAED,CAAC,GAAG,IAAIC,EAAED,IAAI,CAAC,GAAGyC,IAAIxC,EAAED,IAAI,CAAC,GAAGsD,IAAIrD,EAAED,IAAI,CAAC;AAC7E,EAAAC,EAAED,CAAC,IAAIC,EAAEkC,CAAC,GAAGlC,EAAED,IAAI,CAAC,IAAIC,EAAEkC,IAAI,CAAC,GAAGlC,EAAED,IAAI,CAAC,IAAIC,EAAEkC,IAAI,CAAC,GAAGlC,EAAED,IAAI,CAAC,IAAIC,EAAEkC,IAAI,CAAC,GAAGlC,EAAEkC,CAAC,IAAI4B,GAAG9D,EAAEkC,IAAI,CAAC,IAAI,GAAGlC,EAAEkC,IAAI,CAAC,IAAIM,GAAGxC,EAAEkC,IAAI,CAAC,IAAImB;AAC7H,QAAMD,IAAI,EAAE,CAAC;AACb,IAAE,CAAC,IAAI,EAAExB,CAAC,GAAG,EAAEA,CAAC,IAAIwB;AACtB;AACA,SAASwK,GAAGzN,GAAGH,GAAG;AAChB,MAAI,IAAIG,IAAIH,GAAG,IAAI,QAAQ,GAAG4B,IAAI,SAASzB,IAAIH,IAAImD,IAAIhD,KAAKH,IAAI,QAAQD,IAAI,IAAI,KAAK,GAAGmC,IAAI,KAAK,IAAI,GAAG4B,IAAIlC,KAAK,IAAI,IAAIuB,KAAK,IAAIvB,GAAG,IAAI,IAAIA,KAAK,IAAIuB,KAAK,IAAIA;AAC/J,MAAIpD,GAAG,IAAImC,GAAGN,IAAIkC,GAAGX,IAAI,GAAGpD,IAAI,IAAI,KAAK,IAAI,IAAI,KAAK,GAAGmC,IAAI,IAAI,KAAK,IAAI,KAAK,IAAI,MAAM,GAAG4B,KAAK,IAAIlC,KAAK,IAAI,IAAIuB,KAAK,GAAG,KAAK,IAAIvB,KAAK,KAAK,IAAI,KAAKuB,KAAK,GAAG,IAAIpD,GAAG,IAAImC,GAAGN,IAAIkC,GAAGX,IAAI,GAAGpD,IAAI,IAAI,KAAK,IAAI,IAAI,KAAK,GAAGmC,IAAI,IAAI,KAAK,IAAI,KAAK,IAAI,MAAM,GAAG4B,KAAK,IAAIlC,KAAK,IAAI,IAAIuB,KAAK,GAAG,KAAK,IAAIvB,KAAK,KAAK,IAAI,KAAKuB,KAAK,GAAG,IAAIpD,GAAG,IAAImC,GAAGN,IAAIkC,GAAGX,IAAI,GAAGW,KAAK,IAAIlC,KAAK,IAAI,IAAIuB,KAAK,GAAG,KAAK,IAAIvB,KAAK,KAAK,IAAI,KAAKuB,KAAK,GAAG,IAAIW,IAAIA,KAAK,GAAG,IAAI,IAAI,KAAK;AACvb,MAAItB,IAAIrC,IAAIH,GAAGqD,IAAI,IAAI,SAASb,IAAI;AACpC,SAAOA,KAAKA,IAAIA,KAAK,KAAK,UAAUA,KAAKA,IAAIA,KAAK,KAAK,WAAWA,KAAKA,IAAIA,KAAK,KAAK,WAAWA,KAAKA,IAAIA,KAAK,KAAK,YAAYa,KAAKA,IAAIA,KAAK,KAAK,UAAUA,KAAKA,IAAIA,KAAK,KAAK,WAAWA,KAAKA,IAAIA,KAAK,KAAK,WAAWA,KAAKA,IAAIA,KAAK,KAAK,aAAaA,KAAK,IAAIb,OAAO;AAC1Q;AACA,SAASiD,GAAGtF,GAAGH,IAAI,MAAM;AACvB,MAAIG,EAAE,WAAW;AACf,WAAO;AACT,MAAIA,EAAE,WAAW;AACf,WAAO,CAACA,CAAC;AACX,QAAM,IAAI,IAAIe,GAAGf,EAAE,MAAM;AACzB,EAAAA,EAAE,QAAQ,CAACgD,MAAM;AACf,UAAM,CAACpD,GAAGmC,CAAC,IAAIiB,EAAE;AACjB,MAAE,IAAIpD,IAAIC,GAAGkC,IAAIlC,GAAGD,IAAIC,GAAGkC,IAAIlC,CAAC;AAAA,EACpC,CAAG,GAAG,EAAE;AACN,QAAM,IAAI,CAAE,GAAE4B,IAAoB,oBAAI,IAAG;AACzC,SAAOzB,EAAE,QAAQ,CAACgD,GAAGpD,MAAM;AACzB,QAAI6B,EAAE,IAAI7B,CAAC;AACT;AACF,UAAMmC,IAAI,CAACiB,CAAC;AACZ,QAAIW,IAAI/D;AACR,IAAA6B,EAAE,IAAI7B,CAAC;AACP,QAAI,IAAII,EAAE;AACV,eAAW;AACT,UAAI,MAAM;AACR,cAAM,IAAI,MAAM,wBAAwB;AAC1C,YAAMqC,IAAIN,EAAEA,EAAE,SAAS,CAAC,EAAE,WAAW,CAACmB,GAAGD,CAAC,IAAIZ,GAAG,IAAI,EAAE;AAAA,QACrDa,IAAIrD;AAAA,QACJoD,IAAIpD;AAAA,QACJqD,IAAIrD;AAAA,QACJoD,IAAIpD;AAAA,MACZ,GAASoC,IAAI,CAACuC,MAAM,KAAK,KAAKb,IAAIa,KAAKxE,EAAE,MAAM,GAAGgC,IAAI,EAAE,OAAO,CAACwC,MAAM,CAAC/C,EAAE,IAAI+C,CAAC,CAAC,EAAE,IAAI,CAACA,MAAM;AAAA,QACpFxE,EAAEwE,CAAC;AAAA,QACHA;AAAA,QACAvC,EAAEuC,CAAC;AAAA,MACJ,CAAA,EAAE,KAAK,CAAC,CAAK,EAAA,EAAAA,CAAC,GAAG,CAAK,EAAA,EAAAJ,CAAC,MAAMnC,EAAEuC,CAAC,IAAIvC,EAAEmC,CAAC,CAAC;AACzC,UAAIpC,EAAE,WAAW,GAAG;AAClB,UAAE,KAAKD,CAAC;AACR;AAAA,MACD;AACD,YAAM,CAAC,GAAGO,CAAC,IAAIN,EAAE,CAAC;AAClB,MAAAD,EAAE,KAAK,CAAC,GAAGN,EAAE,IAAIa,CAAC,GAAGqB,IAAIrB;AAAA,IAC1B;AAAA,EACF,CAAA,GAAG;AACN;SACA,MAAMyF,WAAU1E,GAAG;AAAA,EACjB,YAAYR,GAAG1C,IAAI,IAAI,EAAE,cAAcsB,IAAI,GAAI,IAAG,IAAI;AACpD,aACAiG,GAAE,MAAM,SAAS,GACjBA,GAAE,MAAM,OAAO,GACfjG,KAAKkM,GAAG9K,GAAG1C,CAAC,GAAG,KAAK,UAAU0C,GAAG,KAAK,QAAQ1C;AAAA,EAC/C;AAAA,EACD,IAAI,cAAc;AAChB,WAAO,KAAK,QAAQ;AAAA,EACrB;AAAA,EACD,IAAI,SAAS;AACX,WAAO,KAAK,MAAM,WAAW;AAAA,EAC9B;AAAA,EACD,IAAI,WAAW;AACb,WAAO,CAAC,KAAK,SAAS,GAAG,KAAK,KAAK;AAAA,EACpC;AAAA,EACD,QAAQ;AACN,WAAO,IAAI4H;AAAA,MACT,KAAK,QAAQ,MAAO;AAAA,MACpB,KAAK,MAAM,IAAI,CAAClF,MAAMA,EAAE,OAAO;AAAA,IACrC;AAAA,EACG;AAAA,EACD,UAAUA,GAAG;AACX,WAAO,IAAIkF;AAAA,MACT,KAAK,QAAQ,UAAUlF,CAAC;AAAA,MACxB,KAAK,MAAM,IAAI,CAAC1C,MAAMA,EAAE,UAAU0C,CAAC,CAAC;AAAA,IAC1C;AAAA,EACG;AAAA,EACD,SAASA,GAAG;AACV,WAAO,KAAK,QAAQ,SAASA,CAAC,KAAK,CAAC,KAAK,MAAM,KAAK,CAAC1C,MAAMA,EAAE,SAAS0C,CAAC,CAAC;AAAA,EACzE;AAAA,EACD,WAAWA,GAAG;AACZ,WAAO,KAAK,SAAS;AAAA,MACnB,CAAC1C,MAAM0C,EAAE,SAAS,KAAK,CAACpB,MAAMtB,EAAE,WAAWsB,CAAC,CAAC;AAAA,IACnD;AAAA,EACG;AAAA,EACD,mBAAmBoB,GAAG;AACpB,UAAM1C,IAAI0C,aAAakF,KAAIlF,EAAE,WAAW,CAACA,CAAC,GAAGpB,IAAI,KAAK,SAAS,QAAQ,CAACuB,MAAM7C,EAAE,QAAQ,CAAC,MAAM6C,EAAE,oBAAoB,CAAC,CAAC,CAAC;AACxH,WAAOsC,GAAG7D,CAAC,EAAE,IAAI,CAACuB,MAAM,IAAIuE,GAAEvE,CAAC,CAAC;AAAA,EACjC;AACH;AACA,SAAS2K,GAAG3N,GAAGH,IAAI,IAAI;AACrB,MAAI,CAACG;AACH,UAAM,IAAI,MAAM,4BAA4B;AAC9C,aAAW,CAAC,GAAG,CAAC,KAAK0D,GAAG,CAAC1D,GAAG,GAAGH,CAAC,CAAC;AAC/B,QAAI,EAAE,WAAW,CAAC;AAChB,YAAM,IAAI,MAAM,sCAAsC;AAC1D,MAAIA,EAAE;AAAA,IACJ,CAAC,MAAM,CAACG,EAAE,SAAS,EAAE,UAAU,KAAK,CAACA,EAAE,SAAS,EAAE,UAAU;AAAA,EAC7D;AACC,UAAM,IAAI,MAAM,kCAAkC;AACpD,aAAW,CAAC,GAAG,CAAC,KAAK0D,GAAG7D,CAAC;AACvB,QAAI,EAAE,SAAS,EAAE,UAAU;AACzB,YAAM,QAAQ,MAAMmB,GAAG,CAAC,GAAGA,GAAG,CAAC,CAAC,GAAG,IAAI,MAAM,sCAAsC;AACzF;AACA,MAAM4M,KAAK,CAAC5N,MAAM;AAChB,QAAMH,IAAIG,EAAE,IAAI,CAACyB,GAAGuB,MAAMhD,EAAE,MAAMgD,IAAI,CAAC,EAAE,IAAI,CAACpD,GAAGmC,MAAM,CAACA,IAAIiB,IAAI,GAAGpD,CAAC,CAAC,EAAE,OAAO,CAAC,GAAGA,CAAC,MAAM6B,EAAE,YAAY,SAAS7B,EAAE,WAAW,CAAC,EAAE,IAAI,CAAC,CAACA,CAAC,MAAMA,CAAC,CAAC,GAAG,IAAI,CAAA,GAAI,IAAI,MAAMC,EAAE,MAAM;AAC5K,SAAOA,EAAE,QAAQ,CAAC4B,GAAGuB,MAAM;AACzB,QAAIpD,IAAI,EAAEoD,CAAC;AACX,IAAApD,MAAMA,IAAI,IAAI,EAAE,KAAKA,CAAC,IAAIA,EAAE,KAAKI,EAAEgD,CAAC,CAAC,GAAGvB,EAAE,UAAUA,EAAE,QAAQ,CAACM,MAAM;AACnE,QAAEA,CAAC,IAAInC;AAAA,IACb,CAAK;AAAA,EACF,CAAA,GAAG;AACN,GAAGuB,KAAK,CAACnB,MAAMA,EAAE,IAAI,CAACH,GAAG,MAAM;AAC7B,QAAM4B,IAAI5B,EAAE,SAAS,CAAC,EAAE,UAAUmD,IAAIhD,EAAE,OAAO,CAAC,GAAG+B,MAAM,MAAMA,IAAI,KAAK,EAAE,SAASN,CAAC,CAAC;AACrF,SAAO;AAAA,IACL,MAAM5B;AAAA,IACN,MAAMmD;AAAA,EACV;AACA,CAAC,GAAG6K,KAAK,CAAC7N,GAAGH,MAAMG,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAC,MAAO0F;AAAA,EAC5C7F,EAAE;AAAA,IACA,CAAC,EAAE,MAAM,GAAG,MAAM4B,EAAG,MAAK,MAAM,KAAKA,EAAE,QAAQ,CAAC,MAAM;AAAA,EACvD;AACH,CAAC,GAAGqM,KAAK,CAAC9N,GAAGH,MAAM;AACjB,QAAM,IAAIA,EAAE,OAAO,CAAC,EAAE,MAAM4B,EAAG,MAAKA,EAAE,UAAU,CAAC,GAAG,IAAIiE;AAAA,IACtDvE,GAAGnB,EAAE,IAAI,CAAC,EAAE,MAAMyB,EAAC,MAAOA,CAAC,CAAC;AAAA,EAChC;AACE,SAAO,CAAC,GAAG,GAAG,CAAC;AACjB,GAAGiE,KAAK,CAAC1F,MAAM;AACb,MAAI,CAACA,EAAE;AACL,WAAO;AACT,QAAMH,IAAIG,EAAE,OAAO,CAAC,EAAE,MAAM,EAAC,MAAO,CAAC,EAAE,MAAM,GAAG,IAAIA,EAAE,OAAO,CAAC,EAAE,MAAM,EAAC,MAAO,EAAE,SAAS,CAAC;AAC1F,SAAOH,EAAE,WAAW,KAAK,EAAE,WAAW,IAAI,CAACG,CAAC,IAAIH,EAAE,SAAS,IAAIgO,GAAGhO,GAAGG,CAAC,IAAI8N,GAAG,GAAG9N,CAAC;AACnF;AACA,SAAS2C,GAAE3C,GAAG;AACZ,SAAO4N,GAAG5N,CAAC,EAAE,IAAImB,EAAE,EAAE,QAAQuE,EAAE,EAAE,IAAI,CAAC7C,MAAM;AAC1C,QAAIA,EAAE,WAAW;AACf,aAAO,IAAIkF,GAAElF,EAAE,CAAC,EAAE,IAAI;AACxB,IAAAA,EAAE,KAAK,CAACG,GAAG,MAAMA,EAAE,KAAK,SAAS,EAAE,KAAK,MAAM;AAC9C,UAAM,CAAC7C,GAAG,GAAGsB,CAAC,IAAIoB,EAAE,IAAI,CAAC,EAAE,MAAMG,EAAG,MAAKA,CAAC;AAC1C,WAAO,IAAI+E,GAAE5H,GAAGsB,CAAC;AAAA,EACrB,CAAG;AACH;AACA,SAASsM,GAAG/N,GAAGH,GAAG;AAChB,QAAM,IAAI,CAAA;AACV,aAAW,KAAKG;AACd,eAAWyB,KAAK5B;AACd,QAAE,KAAK,CAAC,GAAG4B,CAAC,CAAC;AACjB,SAAO;AACT;AACA,UAAUsB,GAAG/C,GAAGH,GAAG,GAAG;AACpB,QAAM,IAAI,CAACD,MAAMC,EAAE,KAAK,CAACkC,MAAMI,EAAEJ,GAAGnC,EAAE,SAAS,CAAC,GAAG6B,IAAI,CAAC7B,MAAM,EAAE,KAAK,CAACmC,MAAMnC,EAAE,OAAOmC,CAAC,CAAC;AACvF,MAAIiB,IAAI,CAAA;AACR,aAAWpD,KAAKI;AACd,MAAEJ,CAAC,KAAKoD,EAAE,KAAKpD,CAAC,GAAG,MAAM,IAAI2H,GAAEvE,GAAG,EAAE,cAAc,GAAE,CAAE,GAAGA,IAAI,CAAA,KAAMvB,EAAE7B,CAAC,KAAKoD,EAAE,WAAW,MAAM,IAAIuE,GAAEvE,GAAG,EAAE,cAAc,GAAI,CAAA,GAAGA,IAAI,KAAK,MAAM,IAAIuE,GAAE,CAAC3H,CAAC,GAAG,EAAE,cAAc,GAAI,CAAA,KAAKoD,EAAE,KAAKpD,CAAC;AAC3L,EAAAoD,EAAE,WAAW,MAAM,IAAIuE,GAAEvE,GAAG,EAAE,cAAc,GAAI,CAAA;AAClD;AACA,MAAMS,KAAK,CAACzD,GAAGH,MAAM;AACnB,QAAM,IAAIG,EAAE,UAAU,CAACgD,MAAMb,EAAEtC,GAAGmD,EAAE,UAAU,CAAC,GAAG,IAAIhD,EAAE,MAAM,GAAG,CAAC;AAClE,SAAOA,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC;AAC5B,GAAGgG,KAAK,CAAChG,GAAGH,MAAM;AAChB,MAAI,IAAIG;AACR,QAAM,IAAI,CAAC+B,MAAMI,EAAEJ,EAAE,YAAYlC,EAAE,UAAU,KAAKsC,EAAEJ,EAAE,WAAWlC,EAAE,SAAS;AAC5E,MAAI4B,IAAIzB,EAAE,UAAU,CAAC;AACrB,MAAIyB,MAAM,IAAI;AACZ,UAAMM,IAAI/B,EAAE,IAAI,CAAC2D,MAAMA,EAAE,QAAO,CAAE;AAClC,QAAI5B,EAAE,QAAS,GAAEN,IAAIM,EAAE,UAAU,CAAC,GAAGN,MAAM;AACzC,YAAM,QAAQ;AAAA,QACZM,EAAE,IAAI,CAAC4B,MAAMA,EAAE,IAAI;AAAA,QACnB9D,EAAE;AAAA,MACV,GAAS,IAAI,MAAM,mCAAmC;AAClD,QAAIkC;AAAA,EACL;AACD,QAAMiB,IAAI,EAAE,MAAM,GAAGvB,CAAC;AACtB,SAAO,EAAE,MAAMA,CAAC,EAAE,OAAOuB,CAAC;AAC5B;AACA,SAAS,GAAGhD,GAAGH,GAAG,GAAG;AACnB,SAAOG,EAAE,OAAO,CAAC,MAAM;AACrB,UAAMyB,IAAI5B,EAAE,OAAO,CAACkC,MAAMI,EAAEJ,EAAE,YAAY,CAAC,KAAKI,EAAEJ,EAAE,WAAW,CAAC,CAAC;AACjE,QAAIN,EAAE,SAAS;AACb,YAAM,IAAI,MAAM,oDAAoD;AACtE,UAAMuB,IAAIvB,EAAE,IAAI,CAACM,MAAM,EAAE,SAASA,EAAE,QAAQ,CAAC;AAC7C,WAAO,EAAEiB,EAAE,MAAM,CAACjB,MAAMA,CAAC,KAAK,CAACiB,EAAE,KAAK,CAACjB,MAAMA,CAAC;AAAA,EAClD,CAAG;AACH;AACA,SAAS+D,GAAG9F,GAAGH,GAAG,GAAG;AACnB,MAAI,IAAI,CAAA;AACR,QAAM4B,IAAI,CAAA,GAAIuB,IAAI,IAAI,MAAMhD,EAAE,SAAS,MAAM,EAAE,KAAK,CAAC,EAAE,IAAI,MAAM,EAAE,GAAGJ,IAAI,IAAI,MAAMC,EAAE,SAAS,MAAM,EAAE,KAAK,CAAC,EAAE,IAAI,MAAM,CAAE,CAAA;AAC3H,MAAIG,EAAE,SAAS,QAAQ,CAACiD,GAAG,MAAM;AAC/B,IAAApD,EAAE,SAAS,QAAQ,CAACoC,GAAGD,MAAM;AAC3B,YAAM,EAAE,eAAe,GAAG,UAAUM,EAAG,IAAGZ;AAAA,QACxCuB;AAAA,QACAhB;AAAA,QACA;AAAA,MACR;AACM,QAAE,KAAK,GAAG,CAAC,GAAGe,EAAE,CAAC,EAAE,KAAK,GAAG,CAAC,GAAGpD,EAAEoC,CAAC,EAAE,KAAK,GAAG,CAAC,GAAGP,EAAE,KAAK,GAAGa,CAAC;AAC3D,YAAMkC,IAAIlC,EAAE,QAAQ,CAAC8B,MAAM;AAAA,QACzBA,EAAE;AAAA,QACFA,EAAE;AAAA,MACV,CAAO;AACD,QAAE,KAAK,GAAGI,CAAC,GAAGxB,EAAE,CAAC,EAAE,KAAK,GAAGwB,CAAC,GAAG5E,EAAEoC,CAAC,EAAE,KAAK,GAAGwC,CAAC;AAAA,IACnD,CAAK;AAAA,EACF,CAAA,GAAG,IAAI2D,GAAE,GAAG,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,WAAW;AACzC,WAAO;AACT,QAAMpG,IAAI,CAAC,CAACkB,GAAG,CAAC,MAAM,EAAE,SAASA,EAAE,QAAQ,CAAC,IAAI,CAACA,CAAC;AAClD,MAAIU,IAAIjD,GAAE,CAACV,EAAE,UAAUgD,CAAC,CAAC,EAAE,QAAQjB,CAAC,GAAG,IAAIrB,GAAE,CAACb,EAAE,UAAUD,CAAC,CAAC,EAAE,QAAQmC,CAAC;AACvE,MAAI,IAAI;AAAA,IACN;AAAA,IACA4B;AAAA,IACA9D;AAAA,EACD,GAAE,CAAC,EAAE,UAAU,CAAC4B,EAAE;AACjB,WAAO;AACT,MAAIA,EAAE,QAAQ;AACZ,UAAMwB,IAAIxB,EAAE,CAAC;AACb,IAAAkC,IAAIqC;AAAA,MACFrC;AAAA,MACAV;AAAA,IACD,GAAE,IAAI+C;AAAA,MACL;AAAA,MACA/C;AAAA,IACN;AAAA,EACA,OAAS;AACL,UAAMA,IAAI,EAAE,CAAC;AACb,IAAAU,IAAIF,GAAGE,GAAGV,CAAC,GAAG,IAAIQ,GAAG,GAAGR,CAAC;AAAA,EAC1B;AACD,MAAIZ,IAAI,MAAM;AAAA,IACZU;AAAA,MACEY;AAAA,MACA;AAAA,MACAlC;AAAA,IACD;AAAA,EACL,GAAKyB,IAAI,MAAM;AAAA,IACXH;AAAA,MACE;AAAA,MACA;AAAA,MACAtB;AAAA,IACD;AAAA,EACL;AACE,UAAQ,CAACU;AAAAA,IACPe,EAAE,CAAC,EAAE;AAAA,IACLb,EAAE,CAAC,EAAE;AAAA,EACT,KAAOZ,EAAE,SAAS,KAAKyB,EAAE,CAAC,EAAE,kBAAkB,OAAOA,IAAIA,EAAE,IAAI,CAACD,MAAMA,EAAE,QAAS,CAAA,EAAE,QAAS,GAAEd,EAAEe,EAAE,CAAC,EAAE,WAAWb,EAAE,CAAC,EAAE,SAAS,MAAMA,IAAIA,EAAE,IAAI,CAACY,MAAMA,EAAE,QAAS,CAAA,EAAE,QAAS,KAAIvC,GAAE,CAAC2B,GAAGa,CAAC,CAAC,EAAE,IAAI,CAAC,CAACD,GAAG,CAAC,MAAMA,EAAE,kBAAkB,KAAKxB,EAAE,KAAK,CAACQ,MAAMgB,EAAE,SAAS,CAAC,EAAE,OAAOhB,CAAC,CAAC,IAAI,CAACgB,GAAG,MAAM,IAAI,CAACA,GAAG,CAAC,CAAC;AAC/R;AACA,SAAS6F,GAAG9I,GAAG;AACb,MAAIH,IAAIG,EAAE,CAAC;AACX,aAAW,KAAKA,EAAE,MAAM,CAAC;AACvB,IAAAH,IAAIA,EAAE,OAAO,CAAC;AAChB,MAAI,CAACsC,EAAEtC,EAAE,YAAYA,EAAE,SAAS;AAC9B,UAAM,QAAQ;AAAA,MACZqB,EAAGrB,EAAE,UAAU;AAAA,MACfqB,EAAGrB,EAAE,SAAS;AAAA,IACpB,GAAO,IAAI,MAAM,oDAAoD;AACnE,SAAO,IAAIe,GAAEf,EAAE,QAAQ;AACzB;AACA,SAASiK,GAAG9J,GAAGH,GAAG;AAChB,QAAM,IAAIa,GAAE;AAAA,IACVb,EAAE,MAAM,GAAG,EAAE;AAAA,IACbA,EAAE,MAAM,CAAC;AAAA,EACV,CAAA,EAAE,IAAI,CAAC,CAAC4B,GAAGuB,CAAC,MAAM8F,GAAG9I,EAAE,MAAMyB,GAAGuB,CAAC,CAAC,CAAC;AACpC,MAAI,IAAIhD,EAAE;AAAA,IACRH,EAAEA,EAAE,SAAS,CAAC;AAAA,EAClB;AACE,SAAOA,EAAE,CAAC,MAAM,MAAM,IAAI,EAAE,OAAOG,EAAE,MAAM,GAAGH,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,KAAKiJ,GAAG,CAAC,CAAC,GAAG;AACxE;AACA,SAASE,GAAGhJ,GAAG;AACb,MAAI,CAACA,EAAE;AACL,WAAO;AACT,QAAMH,IAAIG,EAAE,IAAI,CAACyB,MAAMA,EAAE,UAAU;AACnC,MAAI,IAAIzB,EAAE,IAAI,CAACyB,MAAMA,EAAE,SAAS;AAChC,MAAI,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,EAAE,CAAC;AACrC,QAAM,IAAIf,GAAE,CAACb,GAAG,CAAC,CAAC,EAAE;AAAA,IAClB,CAAC,CAAC4B,GAAGuB,CAAC,GAAGpD,MAAMuC,EAAEV,GAAGuB,CAAC,IAAI,CAAA,IAAKpD;AAAA,EAClC;AACE,MAAI;AACF,WAAOkK,GAAG9J,GAAG,CAAC;AAAA,EAClB,QAAU;AACN,WAAOsF,GAAGtF,EAAE,QAAQ,CAACgD,MAAMA,EAAE,QAAQ,CAAC,EAAE,OAAO,CAACA,MAAMA,EAAE,SAAS,CAAC,EAAE,OAAO,CAACA,MAAMb,EAAEa,EAAE,CAAC,EAAE,YAAYA,EAAE,GAAG,EAAE,EAAE,SAAS,CAAC,EAAE,IAAI,CAACA,MAAM,IAAIpC,GAAEoC,CAAC,CAAC;AAAA,EAC9I;AACH;AACA,MAAMnC,KAAK,CAACb,GAAGH,MAAM;AACnB,MAAIG,EAAE,WAAW;AACf,WAAO,CAACH,CAAC;AACX,QAAM,IAAIG,EAAE,GAAG,EAAE;AACjB,SAAOmC,EAAE,EAAE,WAAWtC,EAAE,UAAU,IAAIG,EAAE,MAAM,GAAG,EAAE,EAAE,OAAO,CAAC,EAAE,OAAOH,CAAC,CAAC,CAAC,IAAIsC,EAAE,EAAE,WAAWtC,EAAE,SAAS,IAAIG,EAAE,MAAM,GAAG,EAAE,EAAE,OAAO,CAAC,EAAE,OAAOH,EAAE,QAAO,CAAE,CAAC,CAAC,IAAIG,EAAE,OAAO,CAACH,CAAC,CAAC;AAC1K,GAAGsJ,KAAK,CAACnJ,GAAGH,MAAMG,EAAE,WAAW,IAAI,CAACH,CAAC,IAAIsC,EAAEnC,EAAE,CAAC,EAAE,YAAYH,EAAE,SAAS,IAAI,CAACA,EAAE,OAAOG,EAAE,CAAC,CAAC,CAAC,EAAE,OAAOA,EAAE,MAAM,CAAC,CAAC,IAAI,CAACH,CAAC,EAAE,OAAOG,CAAC;AAC7H,SAAS+J,GAAG/J,GAAGH,GAAG;AAAA,EAChB,aAAa;AAAA,EACb,cAAc;AAChB,GAAG;AACD,QAAM4B,IAAIqE,GAAG9F,GAAGH,CAAC;AACjB,MAAI,CAAC4B,GAAG;AACN,UAAMkC,IAAI3D,EAAE,SAAS,CAAC,EAAE,UAAU,IAAIH,EAAE,SAAS8D,CAAC,GAAGtB,IAAIxC,EAAE,SAAS,CAAC,EAAE,UAAUqD,IAAIlD,EAAE,SAASqC,CAAC;AACjG,WAAO;AAAA,MACL,WAAW;AAAA,MACX,oBAAoB;AAAA,MACpB,oBAAoBa;AAAA,IAC1B;AAAA,EACG;AACD,MAAIzB,EAAE,MAAM,CAAC,CAAG,EAAAkC,CAAC,MAAMA,MAAM,MAAM;AACjC,WAAO,EAAE,WAAW;AACtB,MAAIX,IAAI,MAAMpD,IAAI;AAClB,QAAMmC,IAAIN,EAAE,QAAQ,CAAC,CAACkC,GAAG,CAAC,MAAM;AAC9B,QAAItB,IAAI,CAAA,GAAIa,IAAI;AAChB,QAAI,MAAM;AACR,aAAOtD,MAAM,KAAKA,IAAI,GAAG+D,KAAK/D,MAAM,KAAKA,MAAM,KAAKA,IAAI,MAAM,CAAE,KAAIA,MAAM,QAAQoD,IAAIA,IAAIA,EAAE,OAAOW,CAAC,IAAIX,IAAIW,GAAG,CAAA,MAAO,QAAQ,MAAM,iBAAiB,GAAG,CAAE;AAC5J,UAAMV,IAAIU,EAAE,SAAS,CAAC,EAAE,UAAU,IAAI9D,EAAE,SAASoD,CAAC;AAClD,KAAC,MAAM,UAAU,KAAK,MAAM,YAAY,CAAC,OAAOC,KAAK,GAAGb,IAAIxB,GAAGwB,GAAGsB,CAAC;AACnE,UAAM1B,IAAI,EAAE,SAAS,CAAC,EAAE,UAAUD,IAAIhC,EAAE,SAASiC,CAAC;AAClD,QAAI,MAAM,UAAUD,KAAK,MAAM,YAAY,CAACA,GAAG;AAC7C,YAAM,IAAI;AACV,MAAAkB,KAAK,GAAGA,MAAM,KAAKb,EAAE,UAAUA,IAAIxB,GAAGwB,GAAG,CAAC,GAAGW,IAAI,QAAQX,IAAI,CAAC,CAAC;AAAA,IAChE;AACD,WAAOzC,MAAM,QAAQsD,MAAM,KAAKF,MAAMX,IAAI8G,GAAG9G,GAAGW,CAAC,IAAIE,MAAM,MAAMtD,IAAIsD,GAAGF,IAAI,OAAOX,EAAE,SAASA,KAAKW,IAAI,MAAM,CAAE;AAAA,EACnH,CAAG;AACD,SAAOgG,GAAGjH,CAAC;AACb;AACA,MAAMzB,KAAK,CAACN,GAAGH,MAAM;AACnB,QAAM,IAAIkK,GAAG/J,GAAGH,GAAG;AAAA,IACjB,aAAa;AAAA,IACb,cAAc;AAAA,EAClB,CAAG;AACD,SAAO,MAAM,QAAQ,CAAC,IAAI,IAAI,EAAE,YAAY,CAACG,CAAC,IAAI,EAAE,qBAAqB,CAACH,CAAC,IAAI,EAAE,qBAAqB,CAACG,CAAC,IAAI,CAACA,GAAGH,CAAC;AACnH,GAAG+E,KAAI,CAAC5E,GAAGH,MAAM;AACf,QAAM,IAAIkK,GAAG/J,GAAGH,GAAG;AAAA,IACjB,aAAa;AAAA,IACb,cAAc;AAAA,EAClB,CAAG;AACD,SAAO,MAAM,QAAQ,CAAC,IAAI,IAAI,EAAE,YAAY,KAAK,EAAE,qBAAqB,CAAE,IAAG,EAAE,qBAAqB,CAACG,GAAGH,CAAC,IAAI,CAACG,CAAC;AACjH,GAAGuK,KAAK,CAACvK,GAAGH,MAAM;AAChB,QAAM,IAAIkK,GAAG/J,GAAGH,GAAG;AAAA,IACjB,aAAa;AAAA,IACb,cAAc;AAAA,EAClB,CAAG;AACD,SAAO,MAAM,QAAQ,CAAC,IAAI,IAAI,EAAE,YAAY,CAACG,CAAC,IAAI,EAAE,qBAAqB,CAACA,CAAC,IAAI,EAAE,qBAAqB,CAACH,CAAC,IAAI;AAC9G;AACA,SAAS6E,GAAG1E,GAAG;AACb,QAAMH,IAAoB,oBAAI,OAAO,IAAI,CAAA;AACzC,SAAOG,EAAE,QAAQ,CAAC,GAAGyB,MAAM;AACzB,QAAIuB;AACJ,IAAAnD,EAAE,IAAI4B,CAAC,IAAIuB,IAAInD,EAAE,IAAI4B,CAAC,KAAKuB,IAAI,EAAE,SAAS,CAAC,CAAC,GAAG,WAA2B,oBAAI,IAAI,CAACvB,CAAC,CAAC,EAAC,GAAI,EAAE,KAAKuB,CAAC,IAAIhD,EAAE,MAAMyB,IAAI,CAAC,EAAE,QAAQ,CAAC7B,GAAGmC,MAAM;AACrI,YAAM4B,IAAIX,EAAE,SAAS,IAAIvB,IAAIM,IAAI;AACjC,UAAIiB,EAAE,UAAU,IAAI,CAAC;AACnB;AACF,UAAIX,IAAI,CAACzC,CAAC,GAAGsD,IAAI;AACjB,UAAIrD,EAAE,IAAI,CAAC,MAAMwC,IAAIxC,EAAE,IAAI,CAAC,EAAE,SAASqD,IAAI,KAAK,CAACS,EAAE;AAAA,QACjD,CAAC1B,MAAMI,EAAE,KAAK,CAACL,MAAMC,EAAE,WAAWD,CAAC,CAAC;AAAA,MACrC;AACC;AACF,UAAIE;AACJ,MAAAyB,EAAE,SAAS,KAAKtB,EAAE,SAAS,IAAIH,IAAIuF,GAAE9D,GAAGtB,CAAC,IAAIH,IAAI7B,GAAGsD,EAAE,CAAC,GAAGtB,EAAE,CAAC,CAAC,GAAGW,EAAE,UAAU,IAAI,CAAC,GAAGA,EAAE,UAAUd,GAAGgB,KAAKrD,EAAE,IAAI,GAAGmD,CAAC;AAAA,IACzH,CAAK;AAAA,EACL,CAAG,GAAG,EAAE,QAAQ,CAAC,EAAE,SAAS,EAAC,MAAO,CAAC;AACrC;AACA,SAAS3C,GAAGL,GAAGH,GAAG;AAChB,QAAM,IAAIS,GAAGN,EAAE,SAASH,EAAE,OAAO,GAAG,IAAIA,EAAE,MAAM,QAAQ,CAACD,MAAMgF,GAAEhF,GAAGI,EAAE,OAAO,CAAC,GAAGyB,IAAIzB,EAAE,MAAM,QAAQ,CAACJ,MAAMgF,GAAEhF,GAAGC,EAAE,OAAO,CAAC,GAAGmD,IAAI+K,GAAG/N,EAAE,OAAOH,EAAE,KAAK,EAAE;AAAA,IACrJ,CAAC,CAACD,GAAGmC,CAAC,MAAMwI,GAAG3K,GAAGmC,CAAC;AAAA,EACvB;AACE,SAAOY,GAAE;AAAA,IACP,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAGlB;AAAA,IACH,GAAGuB;AAAA,EACP,CAAG;AACH;AACA,SAASF,GAAG9C,GAAGH,GAAG;AAChB,MAAIG,EAAE,UAAUH,EAAE;AAChB,WAAO8C,GAAEiC,GAAE5E,EAAE,SAASH,EAAE,OAAO,CAAC;AAClC,MAAIG,EAAE,QAAQ;AACZ,UAAM,IAAI4E,GAAE5E,EAAE,SAASH,EAAE,OAAO,GAAG4B,IAAI5B,EAAE,MAAM;AAAA,MAC7C,CAACmD,MAAMuH,GAAGvH,GAAGhD,EAAE,OAAO;AAAA,IAC5B;AACI,WAAO2C,GAAE,CAAC,GAAG,GAAG,GAAGlB,CAAC,CAAC;AAAA,EACzB,WAAa5B,EAAE,UAAU,CAACG,EAAE,QAAQ,WAAWH,EAAE,OAAO;AACpD,QAAIG,EAAE,QAAQ,SAASH,EAAE,QAAQ,UAAU,GAAG;AAC5C,YAAM,IAAI4H;AAAAA,QACRzH,EAAE,MAAM,IAAI,CAACyB,MAAM,IAAIsG,GAAEtG,CAAC,CAAC;AAAA,QAC3B,CAAC5B,CAAC;AAAA,MACV;AACM,aAAO8C,GAAE;AAAA,QACP3C,EAAE;AAAA,QACF,GAAG,EAAE,QAAQ,CAACyB,MAAMA,EAAE,QAAQ;AAAA,MACtC,CAAO;AAAA,IACF;AACC,aAAO,CAACzB,CAAC;AACb,MAAI,IAAI8C,GAAG,IAAIiF,GAAE/H,EAAE,OAAO,GAAGH,CAAC;AAC9B,SAAOG,EAAE,MAAM,QAAQ,CAAC,MAAM;AAC5B,QAAI,EAAE,QAAQ,CAACyB,MAAMqB,GAAGrB,GAAG,IAAIsG,GAAE,CAAC,CAAC,CAAC;AAAA,EACrC,CAAA,GAAG;AACN;AACA,SAASvG,GAAGxB,GAAGH,GAAG;AAChB,QAAM,IAAI0K,GAAGvK,EAAE,SAASH,EAAE,OAAO;AACjC,MAAI,CAAC,EAAE;AACL,WAAO;AACT,MAAI,IAAI8C,GAAE,CAAC;AACX,SAAO,IAAI8C;AAAAA,IACT;AAAA,IACAzF,EAAE,MAAM,IAAI,CAACyB,MAAM,IAAIsG,GAAEtG,CAAC,CAAC;AAAA,EAC/B,GAAKgE;AAAAA,IACD;AAAA,IACA5F,EAAE,MAAM,IAAI,CAAC4B,MAAM,IAAIsG,GAAEtG,CAAC,CAAC;AAAA,EAC/B;AACA;AACA,SAASgG,GAAEzH,GAAGH,GAAG;AACf,MAAI,CAACG,EAAE;AACL,WAAOH;AACT,MAAI,CAACA,EAAE;AACL,WAAOG;AACT,MAAIA,EAAE,WAAW,KAAKH,EAAE,SAAS,KAAKA,EAAE,WAAW,KAAKG,EAAE,SAAS;AACjE,WAAO0E,GAAG,CAAC,GAAG1E,GAAG,GAAGH,CAAC,CAAC;AACxB,MAAIG,EAAE,SAAS,KAAKH,EAAE,SAAS,GAAG;AAChC,QAAI,IAAI4H,GAAE,CAACzH,EAAE,CAAC,CAAC,GAAGH,CAAC;AACnB,WAAOG,EAAE,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM;AAC/B,UAAIyH,GAAE,CAAC,CAAC,GAAG,CAAC;AAAA,IACb,CAAA,GAAG;AAAA,EACL;AACD,SAAOzH,EAAE,WAAW,KAAKH,EAAE,WAAW,IAAIQ,GAAGL,EAAE,CAAC,GAAGH,EAAE,CAAC,CAAC,IAAI,CAAA;AAC7D;AACA,SAAS4F,GAAEzF,GAAGH,GAAG;AACf,MAAI,CAACG,EAAE;AACL,WAAO;AACT,MAAI,CAACH,EAAE;AACL,WAAOG;AACT,MAAIA,EAAE,WAAW,KAAKH,EAAE,WAAW;AACjC,WAAOiD,GAAG9C,EAAE,CAAC,GAAGH,EAAE,CAAC,CAAC;AACtB,MAAIG,EAAE,SAAS;AACb,WAAOA,EAAE,QAAQ,CAAC,MAAMyF,GAAE,CAAC,CAAC,GAAG5F,CAAC,CAAC;AACnC,MAAI,IAAIiD,GAAG9C,EAAE,CAAC,GAAGH,EAAE,CAAC,CAAC;AACrB,SAAOA,EAAE,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM;AAC/B,QAAI4F,GAAE,GAAG,CAAC,CAAC,CAAC;AAAA,EACb,CAAA,GAAG;AACN;AACA,SAAS6C,GAAGtI,GAAGH,GAAG;AAChB,SAAO,CAACG,EAAE,UAAU,CAACH,EAAE,SAAS,CAAE,IAAGG,EAAE,WAAW,KAAKH,EAAE,WAAW,IAAI2B,GAAGxB,EAAE,CAAC,GAAGH,EAAE,CAAC,CAAC,IAAIG,EAAE,SAAS,IAAIA,EAAE,QAAQ,CAAC,MAAMsI,GAAG,CAAC,CAAC,GAAGzI,CAAC,CAAC,IAAIA,EAAE,QAAQ,CAAC,MAAMyI,GAAGtI,GAAG,CAAC,CAAC,CAAC,CAAC;AACpK;AACA,MAAMF,WAAUuD,GAAG;AAAA,EACjB,YAAYR,IAAI,CAAA,GAAI,EAAE,cAAc1C,IAAI,GAAI,IAAG,IAAI;AACjD,aACAuH,GAAE,MAAM,SAAS,GACjBA,GAAE,MAAM,gBAAgB,IAAI,GAC5BvH,KAAKgF,GAAGtC,CAAC,GAAG,KAAK,UAAUA;AAAA,EAC5B;AAAA,EACD,IAAI,UAAU;AACZ,WAAO,KAAK,QAAQ,WAAW;AAAA,EAChC;AAAA,EACD,IAAI,cAAc;AAChB,QAAI,KAAK;AACP,aAAO,IAAImL,GAAE;AACf,QAAI,KAAK,iBAAiB,MAAM;AAC9B,UAAInL,IAAI,KAAK,QAAQ,CAAC,EAAE;AACxB,iBAAW1C,KAAK,KAAK,QAAQ,MAAM,CAAC;AAClC,QAAA0C,IAAIA,EAAE,MAAM1C,EAAE,WAAW;AAC3B,WAAK,eAAe0C;AAAA,IACrB;AACD,WAAO,KAAK;AAAA,EACb;AAAA,EACD,QAAQ;AACN,WAAO,IAAI/C,GAAE,KAAK,QAAQ,IAAI,CAAC+C,MAAMA,EAAE,MAAO,CAAA,CAAC;AAAA,EAChD;AAAA,EACD,UAAUA,GAAG;AACX,WAAO,IAAI/C,GAAE,KAAK,QAAQ,IAAI,CAACK,MAAMA,EAAE,UAAU0C,CAAC,CAAC,CAAC;AAAA,EACrD;AAAA,EACD,SAASA,GAAG;AACV,WAAO,KAAK,QAAQ,KAAK,CAAC1C,MAAMA,EAAE,SAAS0C,CAAC,CAAC;AAAA,EAC9C;AAAA,EACD,WAAWA,GAAG;AACZ,WAAO,KAAK,QAAQ;AAAA,MAClB,CAAC1C,MAAM0C,EAAE,QAAQ,KAAK,CAACpB,MAAMtB,EAAE,WAAWsB,CAAC,CAAC;AAAA,IAClD;AAAA,EACG;AAAA,EACD,mBAAmBoB,GAAG;AACpB,WAAO,KAAK,QAAQ,QAAQ,CAAC1C,MAAM0C,aAAa/C,KAAI+C,EAAE,QAAQ;AAAA,MAC5D,CAACpB,MAAMtB,EAAE,mBAAmBsB,CAAC;AAAA,IAC9B,IAAGtB,EAAE,mBAAmB0C,CAAC,CAAC;AAAA,EAC5B;AAAA,EACD,KAAKA,GAAG;AACN,WAAO,IAAI/C,GAAE2H,GAAE,KAAK,SAAS5E,EAAE,OAAO,CAAC;AAAA,EACxC;AAAA,EACD,IAAIA,GAAG;AACL,WAAO,IAAI/C,GAAE2F,GAAE,KAAK,SAAS5C,EAAE,OAAO,CAAC;AAAA,EACxC;AAAA,EACD,UAAUA,GAAG;AACX,WAAO,IAAI/C,GAAEwI,GAAG,KAAK,SAASzF,EAAE,OAAO,CAAC;AAAA,EACzC;AACH;AACA,SAASsC,GAAGnF,GAAG;AACb,aAAW,CAACH,GAAG,CAAC,KAAK6D,GAAG1D,CAAC;AACvB,QAAIH,EAAE,WAAW,CAAC;AAChB,YAAM,IAAI,MAAM,oCAAoC;AAC1D;AClsDA,IAAIa,KAAI,OAAO,gBACXO,KAAI,CAACrB,GAAG,GAAG,MAAM,KAAKA,IAAIc,GAAEd,GAAG,GAAG,EAAE,YAAY,IAAI,cAAc,IAAI,UAAU,IAAI,OAAO,EAAC,CAAE,IAAIA,EAAE,CAAC,IAAI,GACzGsC,KAAI,CAACtC,GAAG,GAAG,OAAOqB,GAAErB,GAAG,OAAO,KAAK,WAAW,IAAI,KAAK,GAAG,CAAC,GAAG;AAGlE,MAAM8H,GAAE;AAAA,EACN,YAAY,GAAG,GAAG;AAChB,SAAK,aAAa,GAAG,KAAK,YAAY;AAAA,EACvC;AACH;AACA,SAASlD,GAAE5E,GAAG,GAAG;AACf,MAAIA,aAAayC;AACf,WAAOuC,GAAEhF,GAAG,CAAC;AACf,MAAIA,aAAayE;AACf,WAAOvB,GAAGlD,GAAG,CAAC;AAChB,QAAM,IAAI,MAAM,iBAAiB;AACnC;AACA,SAASgF,GAAEhF,GAAG,GAAG;AACf,QAAM,EAAE,YAAY,GAAG,WAAWC,EAAG,IAAGD,GAAG6B,IAAI7B,EAAE;AACjD,SAAO,IAAIyC;AAAAA,IACTsB,EAAE,GAAGxB,EAAEV,GAAG,CAAC,CAAC;AAAA,IACZkC,EAAE9D,GAAGsC,EAAEV,GAAG,CAAC,CAAC;AAAA,EAChB;AACA;AACA,SAASqB,GAAGlD,GAAG,GAAG;AAChB,QAAM,IAAI+D;AAAAA,IACR/D,EAAE;AAAA,IACFuC,EAAE+I,GAAEtL,EAAE,mBAAmB,GAAG,CAAC;AAAA,EAC9B,GAAEC,IAAI8D;AAAAA,IACL/D,EAAE;AAAA,IACFuC,EAAE+I,GAAEtL,EAAE,kBAAkB,GAAG,CAAC;AAAA,EAChC,GAAK6B,IAAI,KAAK7B,EAAE,YAAY,IAAI;AAC9B,SAAOA,EAAE,SAAS6B,IAAI7B,EAAE,YAAY,IAAI8H,GAAE,GAAG7H,CAAC,IAAI,IAAIwE,EAAE,GAAGxE,GAAGD,EAAE,QAAQA,EAAE,SAAS;AACrF;AACA,SAAS0H,GAAE1H,GAAG,GAAG,GAAG;AAClB,QAAMC,IAAIwH;AAAAA,IACRzH,EAAE;AAAA,IACF,EAAE;AAAA,EACN;AACE,MAAI,KAAK,IAAIC,CAAC,IAAI;AAChB,WAAO;AACT,QAAM4B,IAAI5B,IAAI,IAAI,IAAI,IAAIM,IAAI,KAAK,IAAI,CAAC,IAAIsB,GAAG,IAAI+C,GAAE5E,GAAGO,CAAC,GAAG2B,IAAI0C,GAAE,GAAGrE,CAAC;AACtE,MAAI,aAAauH,MAAK5F,aAAa4F;AACjC,WAAO;AACT,MAAIxE;AACJ,MAAI;AACF,IAAAA,IAAImF,GAAE,GAAGvG,GAAG,IAAI,EAAE,GAAG,EAAE;AAAA,EAC3B,QAAU;AACN,WAAO;AAAA,EACR;AACD,MAAI,CAACoB;AACH,WAAO;AACT,QAAMD,IAAIC,GAAGlB,IAAI,CAACM,GAAGyI,MAAM;AACzB,UAAMxD,IAAIwD,EAAE,UAAU9H,CAAC,GAAGiF,IAAItH,GAAE2G,CAAC,GAAGnF,IAAIuB,EAAEV,GAAGd,EAAE+F,GAAG/H,CAAC,CAAC;AACpD,WAAOmC,EAAE,QAAQF,CAAC;AAAA,EACnB,GAAE,CAACL,CAAC,IAAIC,EAAEpC,GAAG,CAAC,GAAG,CAAG,EAAA2C,CAAC,IAAIP,EAAE,GAAGF,CAAC;AAChC,SAAO,EAAE,OAAOC,GAAG,QAAQQ,GAAG,QAAQU;AACxC;AACA,SAASmB,GAAExE,GAAG,GAAG,GAAG;AAClB,QAAMC,IAAIyH,GAAE1H,GAAG,GAAG,CAAC;AACnB,MAAI,CAACC;AACH,WAAO,QAAQ;AAAA,MACb;AAAA,MACAD,EAAE;AAAA,MACF,EAAE;AAAA,IACR,GAAO,CAACA,GAAG,CAAC;AACV,QAAM,EAAE,OAAO6B,GAAG,QAAQtB,EAAC,IAAKN;AAChC,SAAO;AAAA,IACL4B;AAAA,IACA3B,GAAE2B,EAAE,WAAWtB,EAAE,YAAYsB,EAAE,kBAAkB;AAAA,IACjDtB;AAAA,EACJ;AACA;AACA,SAASM,GAAEb,GAAG,GAAG,GAAG;AAClB,QAAMC,IAAIyH,GAAE1H,GAAG,GAAG,CAAC;AACnB,MAAI,CAACC;AACH,WAAO,QAAQ;AAAA,MACb;AAAA,MACAD,EAAE;AAAA,MACF,EAAE;AAAA,IACR,GAAO,CAACA,GAAG,CAAC;AACV,QAAM,EAAE,OAAO6B,GAAG,QAAQtB,EAAC,IAAKN;AAChC,SAAO,CAAC4B,GAAG,IAAIY,EAAEZ,EAAE,WAAWtB,EAAE,UAAU,GAAGA,CAAC;AAChD;AACA,MAAMiI,KAAK,CAACxI,MAAM;AAChB,MAAI;AACJ,EAAAA,IAAI,OAAOA,KAAK,YAAY,MAAM,QAAQA,CAAC,KAAKA,EAAE,WAAW,IAAI,IAAI,EAAE,YAAYA,EAAG,IAAG,IAAI,EAAE,YAAY,GAAG,GAAGA,EAAC,IAAK,IAAI,EAAE,YAAY,CAAC,GAAG,CAAC,EAAC;AAC/I,QAAM;AAAA,IACJ,YAAY;AAAA,IACZ,aAAaC,IAAI;AAAA,IACjB,WAAW4B,IAAI;AAAA,IACf,cAActB;AAAA,EACf,IAAG;AACJ,MAAI;AACJ,SAAO,KAAK,WAAW,IAAI8B,GAAE,GAAG,IAAI0F,EAAC,IAAI,IAAI;AAC7C,MAAI7F;AACJ,SAAO,OAAO3B,KAAK,WAAW2B,IAAIG,GAAE,GAAG9B,IAAIwH,EAAC,IAAI7F,IAAI3B,GAAG,EAAE,YAAY,GAAG,aAAaN,GAAG,WAAW4B,GAAG,cAAcK;AACtH;AACA,SAASyC,GAAE3E,GAAG,EAAE,cAAc,IAAI,GAAI,IAAG,IAAI;AAC3C,SAAO,IAAI8B,GAAE,CAAC,IAAIyG,GAAE,IAAIxF,GAAE,CAAC,GAAG/C,CAAC,GAAG,EAAE,cAAc,EAAC,CAAE,CAAC,CAAC,CAAC;AAC1D;AACA,MAAMe,GAAG;AAAA,EACP,YAAY,IAAI,CAAC,GAAG,CAAC,GAAG;AACtBuB,IAAAA,GAAE,MAAM,SAAS,GACjBA,GAAE,MAAM,YAAY,GACpBA,GAAE,MAAM,iBAAiB,GACzBA,GAAE,MAAM,aAAa,GACrB,KAAK,UAAU,GAAG,KAAK,aAAa,GAAG,KAAK,kBAAkB,CAAE,GAAE,KAAK,cAAc;AAAA,EACtF;AAAA,EACD,cAAc,GAAG;AACf,QAAI,KAAK,gBAAgB;AACvB,YAAM,IAAI;AAAA,QACR;AAAA,MACR;AACI,WAAO,KAAK,UAAU,GAAG,KAAK,aAAa,GAAG;AAAA,EAC/C;AAAA,EACD,YAAY,GAAG;AACb,QAAI+F,EAAE,EAAE,YAAY,EAAE,SAAS;AAC7B,YAAM,IAAI,MAAM,0BAA0B,EAAE,IAAI,EAAE;AACpD,QAAI,CAAC,KAAK;AACR,aAAO,KAAK,gBAAgB,KAAK,CAAC,GAAG;AACvC,UAAM,IAAI,KAAK,gBAAgB,IAAG;AAClC,QAAI,CAAC;AACH,YAAM,IAAI,MAAM,oCAAoC;AACtD,UAAMpI,IAAI,KAAK,YAAY,SAAS,YAAYY,KAAI2D;AACpD,WAAO,KAAK,gBAAgB;AAAA,MAC1B,GAAGvE,EAAE,GAAG,GAAG,KAAK,YAAY,MAAM;AAAA,IACnC,GAAE,KAAK,cAAc,MAAM;AAAA,EAC7B;AAAA,EACD,OAAO,GAAG;AACR,UAAM,IAAI,IAAIwC,EAAE,KAAK,SAAS,CAAC;AAC/B,WAAO,KAAK,UAAU,GAAG,KAAK,YAAY,CAAC;AAAA,EAC5C;AAAA,EACD,KAAK,GAAG,GAAG;AACT,WAAO,KAAK,OAAO,CAAC,KAAK,QAAQ,CAAC,IAAI,GAAG,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAC;AAAA,EAC9D;AAAA,EACD,MAAM,GAAG;AACP,WAAO,KAAK,KAAK,GAAG,CAAC;AAAA,EACtB;AAAA,EACD,MAAM,GAAG;AACP,WAAO,KAAK,KAAK,GAAG,CAAC;AAAA,EACtB;AAAA,EACD,QAAQ,GAAG;AACT,WAAO,KAAK,OAAO,CAAC,KAAK,QAAQ,CAAC,GAAG,CAAC,CAAC;AAAA,EACxC;AAAA,EACD,QAAQ,GAAG;AACT,WAAO,KAAK,OAAO,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC;AAAA,EACxC;AAAA,EACD,YAAY,CAAC,GAAG,CAAC,GAAG;AAClB,UAAMxC,IAAI,IAAI8H,IAAGlG,IAAIQ,GAAE,GAAGpC,CAAC;AAC3B,WAAO,KAAK,OAAO4B,CAAC;AAAA,EACrB;AAAA,EACD,UAAU,GAAG,GAAG;AACd,UAAM5B,IAAI,IAAI8H,IAAG,CAAClG,GAAGtB,CAAC,IAAI8B,GAAE,GAAGpC,CAAC;AAChC,WAAO,KAAK,KAAK4B,GAAGtB,CAAC;AAAA,EACtB;AAAA,EACD,YAAY,GAAG;AACb,UAAM,IAAI,KAAK,gBAAgB,GAAG,EAAE;AACpC,QAAI,CAAC;AACH,YAAM,IAAI,MAAM,sDAAsD;AACxE,UAAM,CAACN,GAAG4B,CAAC,IAAI,EAAE;AACjB,WAAO,KAAK,KAAK5B,IAAI,GAAG4B,IAAI,CAAC;AAAA,EAC9B;AAAA,EACD,iBAAiB,GAAG,GAAG;AACrB,WAAO,KAAK,YAAY+F,GAAE,KAAK,SAAS,GAAG,CAAC,CAAC,GAAG,KAAK,UAAU,GAAG;AAAA,EACnE;AAAA,EACD,eAAe,GAAG,GAAG3H,GAAG4B,GAAG;AACzB,UAAM,CAACtB,GAAG,CAAC,IAAI,KAAK;AACpB,WAAO,KAAK;AAAA,MACV,CAACA,IAAI,GAAG,IAAI,CAAC;AAAA,MACb,CAACA,IAAIN,GAAG,IAAI4B,CAAC;AAAA,IACnB;AAAA,EACG;AAAA,EACD,aAAa,GAAG,GAAG;AACjB,QAAI,CAAC;AACH,aAAO,KAAK,OAAO,CAAC;AACtB,UAAM5B,IAAI,IAAIwC,EAAE,KAAK,SAAS,CAAC,GAAGZ,IAAIyJ,GAAErL,EAAE,mBAAmB,GAAGM,IAAIwD,EAAE9D,EAAE,UAAUsC,EAAEV,GAAG,CAAC,CAAC;AACzF,WAAO,KAAK,iBAAiB,GAAGtB,CAAC;AAAA,EAClC;AAAA,EACD,WAAW,GAAG,GAAGN,GAAG;AAClB,WAAO,KAAK;AAAA,MACV,CAAC,IAAI,KAAK,QAAQ,CAAC,GAAG,IAAI,KAAK,QAAQ,CAAC,CAAC;AAAA,MACzCA;AAAA,IACN;AAAA,EACG;AAAA,EACD,YAAY,GAAG,GAAG;AAChB,WAAO,KAAK,WAAW,GAAG,GAAG,CAAC;AAAA,EAC/B;AAAA,EACD,YAAY,GAAG,GAAG;AAChB,WAAO,KAAK,WAAW,GAAG,GAAG,CAAC;AAAA,EAC/B;AAAA,EACD,WAAW,GAAG,GAAG;AACf,QAAI,CAAC;AACH,aAAO,KAAK,OAAO,CAAC;AACtB,UAAMA,IAAIkI,EAAE,KAAK,SAAS,CAAC,IAAI,GAAGtG,IAAI,CAAC,IAAI5B;AAC3C,WAAO,KAAK,aAAa,GAAG4B,CAAC;AAAA,EAC9B;AAAA,EACD,SAAS,GAAG,GAAG5B,GAAG;AAChB,WAAO,KAAK;AAAA,MACV,CAAC,IAAI,KAAK,QAAQ,CAAC,GAAG,IAAI,KAAK,QAAQ,CAAC,CAAC;AAAA,MACzCA;AAAA,IACN;AAAA,EACG;AAAA,EACD,UAAU,GAAG,GAAG;AACd,WAAO,KAAK,SAAS,GAAG,GAAG,CAAC;AAAA,EAC7B;AAAA,EACD,UAAU,GAAG,GAAG;AACd,WAAO,KAAK,SAAS,GAAG,GAAG,CAAC;AAAA,EAC7B;AAAA,EACD,aAAa,GAAG,GAAG;AACjB,UAAMA,IAAI,KAAK,gBAAgB,GAAG,EAAE;AACpC,QAAI,CAACA;AACH,YAAM,IAAI,MAAM,mDAAmD;AACrE,WAAO,KAAK;AAAA,MACVC;AAAAA,QACE,KAAK;AAAA,QACL;AAAA,QACA,KAAKD,EAAE;AAAA,MACR;AAAA,IACF,GAAE,KAAK,UAAU,GAAG;AAAA,EACtB;AAAA,EACD,WAAW,GAAG,GAAGA,GAAG;AAClB,UAAM,CAAC4B,GAAGtB,CAAC,IAAI,KAAK;AACpB,WAAO,KAAK,aAAa,CAAC,IAAIsB,GAAG,IAAItB,CAAC,GAAGN,CAAC;AAAA,EAC3C;AAAA,EACD,UAAU,GAAG,GAAGA,GAAG4B,GAAGtB,GAAG,GAAG;AAC1B,WAAO,KAAK;AAAA,MACViB,GAAE,KAAK,SAAS,GAAG,GAAGvB,GAAG4B,GAAGtB,GAAG,CAAC;AAAA,IACjC,GAAE,KAAK,UAAU,GAAG;AAAA,EACtB;AAAA,EACD,QAAQ,GAAG,GAAGN,GAAG4B,GAAGtB,GAAG,GAAG2B,GAAG;AAC3B,WAAO,KAAK;AAAA,MACV,CAAC,IAAI,KAAK,QAAQ,CAAC,GAAG,IAAI,KAAK,QAAQ,CAAC,CAAC;AAAA,MACzCjC;AAAA,MACA4B;AAAA,MACAtB;AAAA,MACA;AAAA,MACA2B;AAAA,IACN;AAAA,EACG;AAAA,EACD,cAAc,GAAG,GAAG;AAClB,UAAM,CAACjC,GAAG4B,CAAC,IAAIgG,GAAEO,EAAE,GAAG,KAAK,OAAO,CAAC;AACnC,WAAO,KAAK;AAAA,MACV;AAAA,MACAnI,IAAI;AAAA,MACJ,KAAK,IAAI,CAAC;AAAA,MACV4B,IAAIgE;AAAAA,MACJ;AAAA,MACA,IAAI;AAAA,IACV;AAAA,EACG;AAAA,EACD,YAAY,GAAG,GAAG5F,GAAG;AACnB,WAAO,KAAK;AAAA,MACV,CAAC,IAAI,KAAK,QAAQ,CAAC,GAAG,IAAI,KAAK,QAAQ,CAAC,CAAC;AAAA,MACzCA;AAAA,IACN;AAAA,EACG;AAAA,EACD,mBAAmB,GAAG,GAAGA,GAAG;AAC1B,WAAO,KAAK;AAAA,MACV,IAAIyE,EAAE,KAAK,SAAS,GAAG,GAAGzE,CAAC;AAAA,IAC5B,GAAE,KAAK,UAAU,GAAG;AAAA,EACtB;AAAA,EACD,uBAAuB,GAAG,GAAG;AAC3B,WAAO,KAAK,YAAY,IAAIgI,EAAE,KAAK,SAAS,GAAG,CAAC,CAAC,GAAG,KAAK,UAAU,GAAG;AAAA,EACvE;AAAA,EACD,cAAc,GAAG,GAAG;AAClB,UAAM,EAAE,YAAYhI,GAAG,cAAc4B,GAAG,aAAatB,GAAG,WAAW,EAAG,IAAGiI,GAAG,CAAC,GAAGtG,IAAI,KAAK,gBAAgB,SAAS,KAAK,gBAAgB,KAAK,gBAAgB,SAAS,CAAC,IAAI,MAAMoB,IAAI6E,EAAE,KAAK,SAAS,CAAC,IAAI;AACzM,QAAI9E;AACJ,IAAAxB,IAAIwB,IAAIxB,IAAIK,IAAImB,IAAInB,EAAE,qBAAqBmB,IAAI,CAAC,GAAG,CAAC,GAAGA,IAAIwB,EAAExB,CAAC;AAC9D,UAAMjB,IAAI;AAAA,MACR,KAAK,QAAQ,CAAC,IAAIiB,EAAE,CAAC,IAAI9C,IAAI+C;AAAA,MAC7B,KAAK,QAAQ,CAAC,IAAID,EAAE,CAAC,IAAI9C,IAAI+C;AAAA,IACnC;AACI,QAAInB,IAAIlC;AACR,IAAAkC,IAAI0C,EAAE1C,CAAC;AACP,UAAMQ,IAAI;AAAA,MACR,EAAE,CAAC,IAAIR,EAAE,CAAC,IAAI,IAAImB;AAAA,MAClB,EAAE,CAAC,IAAInB,EAAE,CAAC,IAAI,IAAImB;AAAA,IACxB;AACI,WAAO,KAAK,mBAAmB,GAAGlB,GAAGO,CAAC;AAAA,EACvC;AAAA,EACD,YAAY,GAAG,GAAG1C,GAAG;AACnB,WAAO,KAAK;AAAA,MACV,CAAC,IAAI,KAAK,QAAQ,CAAC,GAAG,IAAI,KAAK,QAAQ,CAAC,CAAC;AAAA,MACzCA;AAAA,IACN;AAAA,EACG;AAAA,EACD,aAAa,GAAG,IAAI,UAAU;AAC5B,QAAI,CAAC,KAAK,gBAAgB;AACxB,YAAM,IAAI,MAAM,gDAAgD;AAClE,WAAO,KAAK,KAAK,cAAc,EAAE,MAAM,GAAG,QAAQ,EAAC,GAAI,QAAQ;AAAA,EAChE;AAAA,EACD,2BAA2B,GAAG,IAAI,UAAU;AAC1C,QAAI,CAAC;AACH;AACF,UAAMA,IAAI,KAAK,gBAAgB,IAAG,GAAI4B,IAAI,KAAK,gBAAgB;AAC/D,QAAI,CAAC5B,KAAK,CAAC4B;AACT,YAAM,IAAI,MAAM,uCAAuC;AACzD,UAAMtB,IAAI,MAAM,YAAYM,KAAI2D;AAChC,SAAK,gBAAgB,KAAK,GAAGjE,EAAEN,GAAG4B,GAAG,CAAC,CAAC;AAAA,EACxC;AAAA,EACD,MAAM,IAAI,IAAI;AACZ,QAAI,CAAC,KAAK,gBAAgB;AACxB,YAAM,IAAI,MAAM,sBAAsB;AACxC,UAAM,IAAI,KAAK,gBAAgB,CAAC,GAAG5B,IAAI,KAAK,gBAAgB,GAAG,EAAE;AACjE,WAAOoI,EAAE,EAAE,YAAYpI,EAAE,SAAS,KAAK,KAAK,OAAO,EAAE,UAAU,GAAG,KAAK,gBAAgB,SAAS,KAAK;AAAA,MACnG,KAAK,YAAY;AAAA,MACjB,KAAK,YAAY;AAAA,IAClB,GAAE,KAAK,cAAc,OAAO0E,GAAE,KAAK,iBAAiB,EAAE,cAAc,EAAC,CAAE;AAAA,EACzE;AAAA,EACD,gBAAgB,IAAI,IAAI;AACtB,QAAI,CAAC,KAAK,gBAAgB;AACxB,YAAM,IAAI,MAAM,sBAAsB;AACxC,UAAM,IAAI,KAAK,gBAAgB,CAAC,GAAG1E,IAAI,KAAK,gBAAgB,GAAG,EAAE,GAAG4B,IAAIuG;AAAAA,MACtEnI,EAAE;AAAA,MACF,EAAE;AAAA,IACR,GAAOM,IAAI,IAAI2H,GAAC,EAAG;AAAA,MACbrG;AAAA,MACA,EAAE;AAAA,IACR,GAAO,IAAI,KAAK,gBAAgB;AAAA,MAC1B,CAACK,MAAMA,EAAE,UAAU3B,CAAC,EAAE,QAAS;AAAA,IACrC;AACI,WAAO,EAAE,QAAO,GAAIoE;AAAA,MAClB,CAAC,GAAG,KAAK,iBAAiB,GAAG,CAAC;AAAA,MAC9B,EAAE,cAAc,EAAG;AAAA,IACzB;AAAA,EACG;AAAA,EACD,WAAW;AACT,WAAO,IAAIiB,GAAE,CAAC,GAAG,KAAK,eAAe,CAAC;AAAA,EACvC;AAAA,EACD,IAAI,WAAW;AACb,QAAI;AACJ,WAAOyC,EAAE,KAAK,UAAU,IAAI,KAAK,gBAAgB,CAAC,MAAM,OAAO,SAAS,EAAE,UAAU;AAAA,EACrF;AACH;AACA,SAAS/H,GAAGN,IAAI,CAAC,GAAG,CAAC,GAAG;AACtB,SAAO,IAAIe,GAAGf,CAAC;AACjB;AChVA,SAAS6B,GAAE,CAACzB,GAAGH,CAAC,GAAG;AACjB,SAAO,GAAGG,CAAC,IAAIH,CAAC;AAClB;AACA,SAASM,GAAEH,GAAG;AACZ,MAAIA,aAAa8H;AACf,WAAO,KAAKrG,GAAEzB,EAAE,SAAS,CAAC;AAC5B,MAAIA,aAAaqC;AACf,WAAO,KAAKrC,EAAE,MAAM,IAAIA,EAAE,MAAM,MAAMA,EAAE,gBAAgB,KAAK,KAAK,MAAM,GAAG,IAAIA,EAAE,YAAY,MAAM,GAAG,IAAIyB,GAAEzB,EAAE,SAAS,CAAC;AAC1H,MAAIA,aAAa+B;AACf,WAAO,KAAK/B,EAAE,WAAW,IAAIA,EAAE,WAAW,IAAIA,EAAE,YAAY2D,EAAC,IAAI3D,EAAE,aAAa,KAAK,KAAK,MAAM,GAAG,IAAIA,EAAE,YAAY,MAAM,GAAG,IAAIyB,GAAEzB,EAAE,SAAS,CAAC;AAClJ,MAAIA,aAAa6C;AACf,WAAO,KAAK;AAAA,MACVpB,GAAEzB,EAAE,YAAY;AAAA,MAChByB,GAAEzB,EAAE,SAAS;AAAA,IACnB,EAAM,KAAK,GAAG,CAAC;AACb,MAAIA,aAAaiD;AACf,WAAO,KAAK;AAAA,MACVxB,GAAEzB,EAAE,iBAAiB;AAAA,MACrByB,GAAEzB,EAAE,gBAAgB;AAAA,MACpByB,GAAEzB,EAAE,SAAS;AAAA,IACnB,EAAM,KAAK,GAAG,CAAC;AACb,QAAM,IAAI,MAAM,sBAAsB;AACxC;AACA,SAASsC,GAAEtC,GAAG;AACZ,QAAMH,IAAI,KAAKG,EAAE,WAAW,KAAK,GAAG,CAAC,IAAIgD,IAAIhD,EAAE,SAAS,IAAIG,EAAC,EAAE,KAAK,GAAG;AACvE,SAAO,GAAGN,CAAC,IAAImD,CAAC;AAClB;AACA,SAASd,GAAElC,GAAG;AACZ,SAAO,YAAYA,EAAE,SAAS,IAAIsC,EAAC,EAAE,KAAK,GAAG,CAAC;AAChD;AACA,SAASL,GAAEjC,GAAG;AACZ,SAAO;AAAA,IACLA,EAAE,QAAQ,IAAIkC,EAAC,EAAE,KAAK;AAAA,CACzB,CAAC;AAAA;AAEF;AACA,SAASoC,GAAEtE,GAAG;AACZ,QAAMH,IAAI,KAAKG,EAAE,WAAW,KAAK,GAAG,CAAC,IAAIgD,IAAIhD,EAAE,SAAS,IAAIG,EAAC,EAAE,KAAK,GAAG;AACvE,SAAO,GAAGN,CAAC,IAAImD,CAAC;AAClB;AACA,SAAS+E,GAAE/H,GAAGH,IAAI,GAAG;AACnB,QAAMmD,IAAIhD,EAAE,OAAOH,GAAGD,IAAII,EAAE,OAAOH;AACnC,SAAO,GAAGmD,CAAC,IAAIpD,CAAC,IAAII,EAAE,QAAQ,IAAIH,CAAC,IAAIG,EAAE,SAAS,IAAIH,CAAC;AACzD;AACA,SAASoI,GAAEjI,GAAGH,GAAGmD,IAAI,GAAGpD,GAAG;AACzB,QAAMkC,IAAIiG,GAAElI,GAAGmD,CAAC,GAAGE,IAAItD,IAAI,UAAUC,EAAE,QAAQ,IAAImD,CAAC,GAAGpD,CAAC,aAAaC,EAAE,SAAS,IAAImD,CAAC,GAAGpD,CAAC,MAAM;AAC/F,SAAO;AAAA,iEACwDkC,CAAC,uFAAuFoB,CAAC;AAAA,MACpJlD,CAAC;AAAA;AAEP;AC1CA,SAASqH,GAAErH,GAAG;AACZ,MAAIA,aAAaiC;AACf,WAAO,CAACjC,CAAC;AACX,MAAIA,aAAauC;AACf,WAAO,CAAC,IAAIN,GAAEjC,CAAC,CAAC;AAClB,MAAIA,aAAamC;AACf,WAAOnC,EAAE;AACX,QAAM,IAAI,MAAM,eAAe;AACjC;AACA,SAAS8C,GAAG9C,GAAG6C,GAAGhD,IAAI,MAAM;AAC1B,MAAI,IAAI,CAAA;AACR,QAAMD,IAAI,CAAE,GAAE6B,IAAI,IAAI,MAAMoB,EAAE,SAAS,MAAM,EAAE,KAAK,CAAC,EAAE,IAAI,MAAM,CAAE,CAAA;AACnE,EAAAA,EAAE,SAAS,QAAQ,CAACK,GAAGb,MAAM;AAC3B,IAAArC,EAAE,SAAS,QAAQ,CAAC,MAAM;AACxB,YAAM,EAAE,eAAe2D,GAAG,UAAU3B,EAAG,IAAGuF;AAAAA,QACxCrE;AAAA,QACA;AAAA,QACArD;AAAA,MACR;AACM,QAAE,KAAK,GAAG8D,CAAC,GAAGlC,EAAEY,CAAC,EAAE,KAAK,GAAGsB,CAAC,GAAG/D,EAAE,KAAK,GAAGoC,CAAC;AAC1C,YAAMiB,IAAIjB,EAAE,QAAQ,CAACD,MAAM;AAAA,QACzBA,EAAE;AAAA,QACFA,EAAE;AAAA,MACV,CAAO;AACD,QAAE,KAAK,GAAGkB,CAAC,GAAGxB,EAAEY,CAAC,EAAE,KAAK,GAAGY,CAAC;AAAA,IAClC,CAAK;AAAA,EACF,CAAA,GAAG,IAAI4F,GAAG,GAAGhJ,CAAC;AACf,QAAM,IAAI8I,GAAG,CAAC9F,EAAE,UAAUpB,CAAC,CAAC,EAAE,QAAQ,CAAC,CAACyB,GAAGb,CAAC,MAAMA,EAAE,SAASa,EAAE,QAAQb,CAAC,IAAI,CAACa,CAAC,CAAC;AAC/E,SAAO,MAAM;AAAA,IACX6G;AAAAA,MACE;AAAA,MACA;AAAA,MACAnK;AAAA,IACD;AAAA,EACL;AACA;AACA,SAASkI,GAAE9H,GAAG6C,GAAGhD,IAAI,IAAI;AACvB,SAAOiD,GAAGD,GAAG7C,CAAC,EAAE,OAAO,CAACJ,MAAM;AAC5B,UAAM6B,IAAI7B,EAAE,SAAS,CAAC,EAAE;AACxB,WAAOiD,EAAE,SAASpB,CAAC,IAAI,CAAC5B,IAAI,CAACgD,EAAE,SAASpB,CAAC;AAAA,EAC7C,CAAG;AACH;AACA,SAASgG,GAAEzH,GAAG6C,GAAGhD,IAAI,IAAI;AACvB,SAAOiD,GAAGD,GAAG7C,CAAC,EAAE,OAAO,CAACJ,MAAM;AAC5B,UAAM6B,IAAI7B,EAAE,SAAS,CAAC,EAAE;AACxB,WAAOiD,EAAE,SAASpB,CAAC,IAAI,CAAC5B,IAAIgD,EAAE,SAASpB,CAAC;AAAA,EAC5C,CAAG;AACH;AACA,SAAS+F,GAAExH,GAAG6C,GAAGhD,IAAI,IAAI;AACvB,QAAM,IAAIiI;AAAA,IACR9H;AAAA,IACA6C,EAAE;AAAA,IACFhD;AAAA,EACJ,GAAKD,IAAIiD,EAAE,MAAM;AAAA,IACb,CAACpB,MAAMgG,GAAEzH,GAAGyB,GAAG5B,CAAC;AAAA,EACpB;AACE,SAAO,CAAC,GAAG,GAAG,GAAGD,CAAC;AACpB;AAwBA,SAASwI,GAAGpI,GAAG6C,GAAG;AAChB,SAAO,IAAIV;AAAAA,IACTjB,GAAGmG,GAAErH,CAAC,GAAGqH,GAAExE,CAAC,CAAC;AAAA,EACjB;AACA;AAMA,SAAS+G,GAAG5J,GAAG6C,GAAGhD,IAAI,IAAI;AACxB,MAAIgD,aAAaN;AACf,WAAOuF,GAAE9H,GAAG6C,GAAGhD,CAAC;AAClB,MAAIgD,aAAaZ;AACf,WAAOuF,GAAExH,GAAG6C,GAAGhD,CAAC;AAClB,MAAI,IAAI,CAAC,IAAI6H,GAAE,CAAC,GAAG1H,EAAE,QAAQ,CAAC,CAAC;AAC/B,SAAO6C,EAAE,QAAQ,QAAQ,CAACjD,MAAM;AAC9B,QAAI,EAAE,QAAQ,CAAC6B,MAAM+F,GAAE/F,GAAG7B,GAAGC,CAAC,CAAC;AAAA,EAChC,CAAA,GAAG;AACN;AAkaA,SAAS4F,GAAEzF,GAAG;AACZ,MAAIA,aAAamC;AACf,WAAO4G,GAAG/I,CAAC;AACb,MAAIA,aAAaiC;AACf,WAAOyG,GAAG1I,CAAC;AACb,MAAIA,aAAauC;AACf,WAAO,YAAYyD,GAAGhG,CAAC,CAAC;AAC1B,MAAIA,aAAa0H;AACf,WAAO,YAAY/F,GAAG3B,CAAC,CAAC;AAC1B,MAAI+D,GAAG/D,CAAC;AACN,WAAO,YAAY,KAAKA,EAAE,WAAW,KAAK,GAAG,CAAC,EAAE,IAAIK;AAAAA,MAClDL;AAAA,IACD,CAAA;AACH,QAAM,IAAI,MAAM,oBAAoB;AACtC;AACA,MAAM4E,KAAI,CAAC5E,MAAM,WAAWA,IAAIA,EAAE,QAAQA,GAAGqI,KAAI,CAACrI,GAAG6C,MAAM;AACzD,MAAI,EAAE,WAAW7C;AACf,WAAO6C;AACT,QAAM,EAAE,OAAOhD,EAAG,IAAGG;AACrB,SAAOH,IAAI,cAAcA,CAAC,KAAKgD,CAAC,SAASA;AAC3C,GAAGzB,KAAI,CAACpB,MAAM,IAAI+F,GAAG/F,EAAE,MAAM,CAACA,EAAE,MAAMA,EAAE,MAAM,CAACA,EAAE,IAAI;AACrD,SAASN,GAAGM,GAAG;AAAA,EACb,QAAQ6C,IAAI;AAAA,EACZ,MAAMhD,IAAI;AAAA,EACV,SAAS;AACX,IAAI,IAAI;AACN,MAAI,MAAM,QAAQG,CAAC,GAAG;AACpB,UAAMyB,IAAIzB,EAAE,IAAI,CAACqC,MAAMuC,GAAEvC,CAAC,EAAE,QAAQ,GAAG,IAAIZ,EAAE,IAAI,CAACY,GAAG,MAAMgG,GAAErI,EAAE,CAAC,GAAGyF,GAAEpD,CAAC,CAAC,CAAC,EAAE,KAAK;AAAA,CAClF,GAAGa,IAAIzB,EAAE,MAAM,CAAC,EAAE,OAAO,CAACY,GAAG,MAAMA,EAAE,MAAM,EAAE,WAAW,GAAGZ,EAAE,CAAC,EAAE,WAAW;AACxE,WAAOyG,GAAE,GAAG,IAAI9G,GAAE,CAAC,IAAI8B,GAAGL,GAAGhD,CAAC;AAAA,EAC/B;AACD,QAAMD,IAAIgF,GAAE5E,CAAC,EAAE,OAAM;AACrB,SAAOkI;AAAAA,IACLG,GAAErI,GAAGyF,GAAE7F,CAAC,CAAC;AAAA,IACT,IAAIwB,GAAE,CAAC,IAAIxB,EAAE;AAAA,IACbiD;AAAA,IACAhD;AAAA,EACJ;AACA;AC5iBO,MAAMoO,WAAgBC,GAAuB;AAAA,EAMlD,YACEC,GACA;AAAA,IACE,UAAAC,IAAW,CAAC;AAAA,IACZ,WAAAC,IAAY,CAAC;AAAA,IACb,mBAAAC,IAAoB,CAAC;AAAA,IACrB,oBAAAC,IAAqB,CAAC;AAAA,EACxB,IAKI,IACJ;AACM;AAnBD,IAAAC,GAAA;AACA,IAAAA,GAAA;AACA,IAAAA,GAAA;AACA,IAAAA,GAAA;AAiBL,SAAK,OAAOL,GACP,KAAA,WAAW,CAAC,GAAGC,CAAQ,GAC5B,KAAK,qBAAqB,CAAC,GAAGC,GAAW,GAAGE,CAAkB,GACzD,KAAA,oBAAoB,CAAC,GAAGD,CAAiB;AAAA,EAChD;AAAA,EAEA,IAAI,YAAY;AACd,WAAO,CAAC,GAAG,KAAK,mBAAmB,GAAG,KAAK,kBAAkB;AAAA,EAC/D;AAAA,EAEA,QAAQ;AACC,WAAA,IAAIL,GAAQ,KAAK,MAAM;AAAA,MAC5B,UAAU,CAAC,GAAG,KAAK,QAAQ;AAAA,MAC3B,mBAAmB,CAAC,GAAG,KAAK,iBAAiB;AAAA,MAC7C,oBAAoB,CAAC,GAAG,KAAK,kBAAkB;AAAA,IAAA,CAChD;AAAA,EACH;AAAA,EAEA,WAAWQ,GAAa;AACjB,gBAAA,SAAS,KAAKA,CAAG,GACf;AAAA,EACT;AAAA,EAEA,YAAYC,GAAcC,IAAsC,aAAa;AAC3E,IAAIA,MAAc,aACX,KAAA,kBAAkB,KAAKD,CAAI,IAE3B,KAAA,mBAAmB,KAAKA,CAAI;AAAA,EAErC;AAAA,EAEA,SACEA,GACAC,IAAsC,aACtC;AACA,UAAMC,IAAqBF,aAAgBT,KAAUS,EAAK,OAAOA,GAE3DG,IAAc,KAAK,KAAK,mBAAmBD,CAAS;AAC1D,WAAID,MAAc,aACX,KAAA,kBAAkB,KAAK,GAAGE,CAAW,IAErC,KAAA,mBAAmB,KAAK,GAAGA,CAAW,GAG7C,KAAK,SAASH,CAAI,GACX;AAAA,EACT;AAAA,EAEA,SAASI,GAA0B;AAC7B,QAAAF;AAEJ,WAAIE,aAAiBb,MACnBW,IAAYE,EAAM,MAClB,KAAK,SAAS,KAAK,GAAGA,EAAM,QAAQ,GACpC,KAAK,kBAAkB,KAAK,GAAGA,EAAM,iBAAiB,GACtD,KAAK,mBAAmB,KAAK,GAAGA,EAAM,kBAAkB,KAE5CF,IAAAE,GAGd,KAAK,OAAO,KAAK,KAAK,KAAKF,CAAS,GAC7B;AAAA,EACT;AAAA,EAEA,SAASG,GAAgB;AACvB,gBAAK,OAAON,GAAI,KAAK,MAAMM,CAAK,GAC3B,KAAA,WAAW,KAAK,SAAS;AAAA,MAAQ,CAACN,MACrCO,GAAYP,GAAKM,GAAO,EAAI;AAAA,IAAA,GAE9B,KAAK,WAAWA,CAAK,GACd;AAAA,EACT;AAAA,EAEA,WAAWA,GAAgB;AACpB,SAAA,qBAAqB,KAAK,mBAAmB;AAAA,MAAQ,CAACL,MACzDM,GAAYN,GAAMK,GAAO,EAAI;AAAA,IAAA,GAE1B,KAAA,oBAAoB,KAAK,kBAAkB;AAAA,MAAQ,CAACL,MACvDM,GAAYN,GAAMK,GAAO,EAAI;AAAA,IAAA;AAAA,EAEjC;AAAA,EAEA,UAAUE,GAA8B;AAW/B,WAVY,IAAIhB,GAAQ,KAAK,KAAK,UAAUgB,CAAM,GAAG;AAAA,MAC1D,UAAU,KAAK,SAAS,IAAI,CAACR,MAAQA,EAAI,UAAUQ,CAAM,CAAC;AAAA,MAC1D,mBAAmB,KAAK,kBAAkB;AAAA,QAAI,CAACP,MAC7CA,EAAK,UAAUO,CAAM;AAAA,MACvB;AAAA,MACA,oBAAoB,KAAK,mBAAmB;AAAA,QAAI,CAACP,MAC/CA,EAAK,UAAUO,CAAM;AAAA,MACvB;AAAA,IAAA,CACD;AAAA,EAGH;AAAA,EAEA,QAAQ;AACN,UAAMC,IAAuD,CAAA;AAC7D,WAAI,KAAK,QACPA,EAAO,KAAK,EAAE,OAAO,KAAK,MAAM,OAAO,OAAO,GAE5C,KAAK,SAAS,UACX,KAAA,SAAS,IAAI,CAACH,MAAUG,EAAO,KAAK,EAAE,OAAAH,GAAO,OAAO,MAAM,CAAC,CAAC,GAG/D,KAAK,mBAAmB,UAC1B,KAAK,mBAAmB;AAAA,MAAI,CAACA,MAC3BG,EAAO,KAAK,EAAE,OAAAH,GAAO,OAAO,SAAS;AAAA,IAAA,GAIrC,KAAK,kBAAkB,UACzB,KAAK,kBAAkB;AAAA,MAAI,CAACA,MAC1BG,EAAO,KAAK,EAAE,OAAAH,GAAO,OAAO,QAAQ;AAAA,IAAA,GAIjCI,GAAUD,GAAQ,EAAE,MAAM,KAAM,CAAA;AAAA,EACzC;AACF;AClIA,SAASE,GACPC,GACAC,GACA;AAAA,EACE,QAAAC,IAAS;AAAA,EACT,aAAAC,IAAc;AAAA,EACd,iBAAAC,IAAkB;AAAA,EAClB,iBAAiBC;AAAA,EACjB,kBAAkBC;AAAA,EAClB,qBAAAC;AAAA,EACA,sBAAAC;AACF,IAA2B,IAC3B;AACA,QAAMC,IAAkBJ,KAAwBF,GAC1CO,IAAmBJ,KAAyBH,GAE5CQ,IAAYC,GAAK,CAAC,CAACZ,IAAQ,GAAG,CAAC,CAAC,EAAE,MAAMA,CAAK;AAEnD,SAAIU,KACGF,KAAwBJ,OAAqB,aAChDO,EAAU,WAAW,CAACD,GAAkBA,GAAkB,CAAC,IAAI,CAAC,CAAC,GACvDC,EAAA,MAAMV,IAASS,CAAgB,KAE/BC,EAAA,KAAK,CAACD,GAAkBT,CAAM,IAG1CU,EAAU,MAAMV,CAAM,GAGxBU,EAAU,aAAaT,CAAM,GAC7BS,EAAU,MAAM,CAACX,IAAQS,IAAkBC,CAAgB,GAC3DC,EAAU,aAAaT,CAAM,GAEzBO,KACGF,KAAuBH,OAAqB,aACrCO,EAAA,MAAM,CAACV,IAASQ,CAAe,GACzCE,EAAU,aAAa,CAAC,CAACX,IAAQ,GAAG,CAAC,CAAC,KAEtCW,EAAU,OAAO,CAAC,CAACX,IAAQ,GAAG,CAAC,CAAC,IAGxBW,EAAA,MAAM,CAACV,CAAM,GAGlBU,EAAU;AACnB;AAEO,SAASE,GACdb,GACAC,GACAa,IAAiC,CAAA,GACjC;AACO,SAAAf,GAASC,GAAOC,GAAQa,CAAO;AACxC;AAEO,SAASC,GACdf,GACAC,GACAa,IAAiC,CAAA,GACjC;AACA,SAAOf,GAASC,GAAOC,GAAQa,CAAO,EAAE,OAAO,GAAG;AACpD;AAEgB,SAAAE,GACdhB,GACAC,GACA;AAAA,EACE,gBAAAgB;AAAA,EACA,mBAAAC;AAAA,EACA,oBAAAC;AAAA,EACA,uBAAAC;AAAA,EACA,GAAGN;AACL,IAA4B,IAC5B;AACO,SAAAf,GAASC,GAAOC,GAAQ;AAAA,IAC7B,iBAAiBgB;AAAA,IACjB,kBAAkBC;AAAA,IAClB,qBAAqBC;AAAA,IACrB,sBAAsBC;AAAA,IACtB,GAAGN;AAAA,EAAA,CACJ,EAAE,OAAO,EAAE;AACd;AAEO,SAASO,GACdrB,GACAC,GACAa,IAAkC,CAAA,GAClC;AACA,SAAOE,GAAShB,GAAOC,GAAQa,CAAO,EAAE,OAAO,GAAG;AACpD;AAEO,MAAMQ,KAAY;AAAA,EACvB,OAAOD;AAAA,EACP,MAAML;AAAA,EACN,KAAKH;AAAA,EACL,QAAQE;AACV,GC1GMQ,KAAW,CAACvB,GAAeC,MACxBW,GAAK,CAAC,CAACZ,IAAQ,GAAG,CAAC,CAAC,EACxB,KAAKC,GAAQ,CAACA,CAAM,EACpB,MAAMD,IAAQ,IAAIC,CAAM,EACxB,KAAKA,GAAQA,CAAM;AAIjB,MAAMuB,WAAqB3C,GAA4B;AAAA,EAI5D,YACEmB,GACAyB,IAAiB,KACjB;AACM;AAPR,IAAAtC,GAAA;AACA,IAAAA,GAAA;AACA,IAAAA,GAAA;AAOM,eAAOa,KAAU,UAAU;AAC7B,WAAK,MAAMA,EAAM,KACjB,KAAK,SAASA,EAAM,QACpB,KAAK,OAAOA,EAAM;AAClB;AAAA,IACF;AAEA,UAAM0B,IAAMH,GAASvB,GAAOyB,IAAiB,GAAG;AAE3C,SAAA,MAAMC,EAAI,YACV,KAAA,SAASA,EAAI,SAEb,KAAA,OAAOH,GAASvB,IAAQ,IAAIyB,GAAgB,IAAIA,CAAc,EAChE,MAAA,EACA,OAAO,GAAG;AAAA,EACf;AAAA,EAEA,QAAQ;AACC,WAAA,IAAID,GAAa,IAAI;AAAA,EAC9B;AAAA,EAEA,UAAU5B,GAA8B;AACtC,WAAO,IAAI4B,GAAa;AAAA,MACtB,KAAK,KAAK,IAAI,UAAU5B,CAAM;AAAA,MAC9B,QAAQ,KAAK,OAAO,UAAUA,CAAM;AAAA,MACpC,MAAM,KAAK,KAAK,UAAUA,CAAM;AAAA,IAAA,CACjC;AAAA,EACH;AAAA,EAEA,QAAQ+B,GAAkB;AAChB,IAAAA,EAAA,WAAW,KAAK,MAAM,GACtBA,EAAA,WAAW,KAAK,GAAG;AAAA,EAC7B;AAAA,EAEA,SAASA,GAAkB;AACjB,IAAAA,EAAA,SAAS,KAAK,IAAI;AAAA,EAC5B;AACF;ACrDA,MAAMC,WAA2B/C,GAAkC;AAAA,EACjE,YAAmBgD,GAAkB;AAC7B,aADW,KAAA,SAAAA,GAEjB,KAAK,SAASA;AAAA,EAChB;AAAA,EAEA,UAAUjC,GAA8B;AACtC,WAAO,IAAIgC,GAAmB,KAAK,OAAO,IAAIhC,EAAO,SAAS,CAAC;AAAA,EACjE;AAAA,EAEA,WAAmC9O,GAAW;AACrC,WAAA,KAAK,OAAO,IAAI,CAAC+B,MAAM/B,EAAE,YAAY+B,CAAC,CAAC;AAAA,EAChD;AAAA,EAEA,gBAAmD/B,GAAW;AACrD,WAAA,KAAK,OAAO,IAAI,CAAC+B,MAAM/B,EAAE,QAAQ,YAAY+B,CAAC,CAAC;AAAA,EACxD;AACF;AAEO,SAASiP,GACdC,GACAC,GACAC,IAAW,GACXC,IAAS,GACT;AACI,MAAAH,KAAcC,IAAc;AACxB,UAAA,IAAI,MAAM,uDAAuD;AAGzE,QAAMG,IAAe,KAAK;AAAA,IACxB,KAAK,OAAOJ,IAAa,IAAIG,MAAWF,KAAeC,IAAW,GAAG;AAAA,IACrE;AAAA,EAAA,GAGIG,KADYL,IAAa,IAAIG,IAASC,IAAeH,MAC9BG,IAAe,IACtCN,IAAmB,CAAA;AACzB,WAASzP,IAAI,GAAGA,IAAI+P,GAAc/P;AACzB,IAAAyP,EAAA;AAAA,MACLK,IAAS9P,KAAK4P,IAAcI,KAAWL,IAAa,IAAIC,IAAc;AAAA,IAAA;AAGnE,SAAA,IAAIJ,GAAmBC,EAAO,IAAI,CAAChP,MAAM,CAACA,GAAG,CAAC,CAAC,CAAC;AACzD;AAEO,SAASwP,GACdC,GACAC,GACAjD,IAAuB,KACvB;AACM,QAAAkD,IAAcF,KAAOC,IAAQ,IAC7BV,IAAmB,CAAA;AACzB,WAASzP,IAAI,GAAGA,IAAImQ,GAAOnQ;AACzB,IAAAyP,EAAO,KAAKzP,IAAIkQ,IAAME,IAAc,CAAC;AAEvC,SAAO,IAAIZ;AAAA,IACTC,EAAO,IAAI,CAAChP,MAAOyM,EAAU,YAAY,MAAM,MAAM,CAACzM,GAAG,CAAC,IAAI,CAAC,GAAGA,CAAC,CAAE;AAAA,EAAA;AAEzE;"}
|