curve-ops 0.0.3 → 0.0.4
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/README.md +3 -3
- package/index.d.ts +7 -3
- package/index.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -23,7 +23,7 @@ code removal) for minimal deployed code size.
|
|
|
23
23
|
- `QuadraticBezier` (`bezier2`) / `CubicBezier` (`bezier3`): Optimisations
|
|
24
24
|
and extra features for 2D quadratic and cubic Béziers
|
|
25
25
|
- Shape overlap detection
|
|
26
|
-
- Shape intersection, subtraction
|
|
26
|
+
- Shape intersection, subtraction (`cut*`)
|
|
27
27
|
- Least squares curve fitting
|
|
28
28
|
- optional fixed endpoints and direction
|
|
29
29
|
- `Vector<N>` (`vec`): n-D point / vector operations
|
|
@@ -205,6 +205,8 @@ a new entity for the result.
|
|
|
205
205
|
- `circleSVG(circle)`
|
|
206
206
|
- `complexCompanionMat(z)`
|
|
207
207
|
- `conjugateZ(z)`
|
|
208
|
+
- `cutBezier3Circle`
|
|
209
|
+
- `cutBezier3Rect`
|
|
208
210
|
- `divRZ(num, den)`
|
|
209
211
|
- `divZ(num, den)`
|
|
210
212
|
- `erf(x)`
|
|
@@ -416,8 +418,6 @@ a new entity for the result.
|
|
|
416
418
|
- `rectFromLine`
|
|
417
419
|
- `rectSVG`
|
|
418
420
|
- `subRZ`
|
|
419
|
-
- `subtractBezier3Circle`
|
|
420
|
-
- `subtractBezier3Rect`
|
|
421
421
|
- `subZ`
|
|
422
422
|
- `unscaledFresnelCIntegral`
|
|
423
423
|
- `unscaledFresnelSIntegral`
|
package/index.d.ts
CHANGED
|
@@ -714,8 +714,12 @@ declare const intersectNBezier3Circle: (curve: CubicBezier, circle: Circle, maxE
|
|
|
714
714
|
d1: Sign;
|
|
715
715
|
}[];
|
|
716
716
|
declare function intersectNBezier3CircleFn(curve: CubicBezier): CircleIntersectionFn;
|
|
717
|
-
declare function
|
|
718
|
-
|
|
717
|
+
declare function cutBezier3Rect(curve: CubicBezier, rect: Rectangle): (CubicBezier & {
|
|
718
|
+
inside: boolean;
|
|
719
|
+
})[];
|
|
720
|
+
declare function cutBezier3Circle(curve: CubicBezier, circle: Circle, fn: CircleIntersectionFn): (CubicBezier & {
|
|
721
|
+
inside: boolean;
|
|
722
|
+
})[];
|
|
719
723
|
|
|
720
724
|
interface NormalisedCubicBezier extends CubicBezier {
|
|
721
725
|
readonly p0: {
|
|
@@ -852,5 +856,5 @@ declare class SingleLinkedList<T> {
|
|
|
852
856
|
}) => void): void;
|
|
853
857
|
}
|
|
854
858
|
|
|
855
|
-
export { MAT1IDENT, MAT2IDENT, MAT2ROT90, MAT3IDENT, MAT4IDENT, PT0, SingleLinkedList, aaBoxArea, aaBoxContains, aaBoxFromXY, aaBoxMidpoint, aaBoxSVG, addZ, addZR, bezier2At, bezier2Bisect, bezier2Bounds, bezier2Derivative, bezier2FromBezier, bezier2FromLine, bezier2FromPolylinePtsLeastSquares, bezier2FromPolylinePtsLeastSquaresFixEnds, bezier2FromPts, bezier2LengthEstimate, bezier2M, bezier2MInv, bezier2NormalAt, bezier2PolynomialX, bezier2PolynomialY, bezier2RMSDistance, bezier2SVG, bezier2Split, bezier2TangentAt, bezier2Translate, bezier2TsAtXEq, bezier2TsAtYEq, bezier2XAt, bezier2XTurningPointTs, bezier2YAt, bezier2YTurningPointTs, bezier3At, bezier3Bisect, bezier3Bounds, bezier3Derivative, bezier3FromBezier, bezier3FromBezier2, bezier3FromLine, bezier3FromPolylinePtsLeastSquares, bezier3FromPolylinePtsLeastSquaresFixEnds, bezier3FromPts, bezier3FromQuad, bezier3LengthEstimate, bezier3M, bezier3MInv, bezier3NormalAt, bezier3Normalise, bezier3PolynomialX, bezier3PolynomialY, bezier3RMSDistance, bezier3SVG, bezier3Split, bezier3TangentAt, bezier3Translate, bezier3TsAtXEq, bezier3TsAtYEq, bezier3XAt, bezier3XTurningPointTs, bezier3YAt, bezier3YTurningPointTs, bezierAt, bezierAtMulti, bezierBisect, bezierDerivative, bezierElevateOrder, bezierElevateOrderTo, bezierFrenetNormalAt, bezierFromBezier2, bezierFromBezier3, bezierFromEndpoints, bezierFromLine, bezierFromPolylineVertsLeastSquares, bezierFromPolylineVertsLeastSquaresFixEnds, bezierFromQuad, bezierFromVecs, bezierLowerOrder, bezierM, bezierMInv, bezierNormalAt, bezierOrder, bezierPolynomials, bezierSVG, bezierSplit, bezierTangentAt, bezierTranslate, binomial, circleArea, circleBounds, circleCircumference, circleContains, circleSVG, complexCompanionMat, conjugateZ, divRZ, divZ, erf, erfZ, erfc, erfcZ, expZ, fresnelCIntegral, fresnelSIntegral, intersectBezier3Circle, intersectBezier3CircleFn, intersectBezier3Line, intersectBezier3Rect, intersectLineLine, intersectNBezier3Circle, intersectNBezier3CircleFn, invZ, isOverlapAABox, isOverlapAABoxCircle, isOverlapAABoxCircleR2, lineAt, lineBisect, lineBounds, lineDerivative, lineFromBezier, lineFromPts, lineLength, lineMidpoint, lineNormal, linePolynomialX, linePolynomialY, lineSVG, lineSplit, lineTangent, lineTranslate, lineTsAtXEq, lineTsAtYEq, lineXAt, lineYAt, mat1Determinant, mat1Eigenvalues, mat1Eigenvector, mat1Inverse, mat1LeftInverse, mat1RightInverse, mat1Trace, mat2Determinant, mat2Eigenvalues, mat2Eigenvector, mat2Inverse, mat2LeftInverse, mat2RightInverse, mat2Trace, mat3Determinant, mat3Eigenvalues, mat3Eigenvector, mat3FromQuat, mat3FromUnitQuat, mat3Inverse, mat3LeftInverse, mat3RightInverse, mat3Trace, mat4Determinant, mat4Eigenvalues, mat4Eigenvector, mat4Inverse, mat4LeftInverse, mat4RightInverse, mat4Trace, matAdd, matAddColumnwise, matBinaryOp, matDeterminant, matEigenvalues, matEigenvector, matElementNorm, matElementNorm2, matFrom, matFromArray, matFromArrayFn, matFromDiag, matFromEyeTargetUp, matFromPts, matFromRotationBetween, matFromVecArray, matIdent, matInverse, matLeftInverse, matLerp, matMid, matMinor, matMul, matMulABTranspose, matMulATransposeB, matPadIdent, matPrint, matProjectVec3, matReshape, matRightInverse, matScale, matScaleAdd, matSkewSymmetricCrossProduct, matSub, matSumDiagDeterminant2, matSumDiagDeterminant3, matTrace, matTranspose, matUnaryOp, matWindow, matZero, movementThrottle, mulZ, mulZR, nBezier3Area, nBezier3At, nBezier3Curvature, nBezier3Derivative, nBezier3InflectionTs, nBezier3Moment, nBezier3XAt, nBezier3YAt, negZ, penTool, polygonContains, polygonSignedArea, polyline2DFromPolyline, polyline2DFromPts, polyline2DSVG, polylineFromPolyline2D, polylineFromVecs, polynomial2Roots, polynomial3Roots, polynomial3SignedRoots, polynomial4Roots, polynomial4SignedRoots, polynomial5Roots, polynomial5SignedRoots, polynomial7SignedRoots, polynomialAdd, polynomialAt, polynomialCompanionMat, polynomialDerivative, polynomialFromBezier2Values, polynomialFromBezier3Values, polynomialFromBezierValues, polynomialIntegral, polynomialMul, polynomialRoots, polynomialScale, polynomialShift, polynomialSub, polynomialWithSolutions, ptAdd, ptAngle, ptCross, ptDist, ptDist2, ptDot, ptFromVec, ptLen, ptLen2, ptLerp, ptMad, ptMid, ptMul, ptNorm, ptReflect, ptRot90, ptSVG, ptSignedAngle, ptSub, ptTransform, ptsFromMat, quatAdd, quatConjugate, quatDist, quatDist2, quatDiv, quatDot, quatExp, quatFrom, quatFromMat3BestFit, quatFromMat3Exact, quatFromRotationAround, quatInv, quatLerp, quatLerpShortestPath, quatLerpShortestPathUnit, quatLerpUnit, quatLog, quatMad, quatMul, quatNearest, quatNorm, quatNorm2, quatPrint, quatScale, quatSlerp, quatSlerpShortestPath, quatSquad, quatSub, quatUnit, quatVectorNorm, quatVectorNorm2, rectArea, rectBounds, rectContains, rectFromAABox, rectFromLine, rectSVG, subRZ, subZ,
|
|
859
|
+
export { MAT1IDENT, MAT2IDENT, MAT2ROT90, MAT3IDENT, MAT4IDENT, PT0, SingleLinkedList, aaBoxArea, aaBoxContains, aaBoxFromXY, aaBoxMidpoint, aaBoxSVG, addZ, addZR, bezier2At, bezier2Bisect, bezier2Bounds, bezier2Derivative, bezier2FromBezier, bezier2FromLine, bezier2FromPolylinePtsLeastSquares, bezier2FromPolylinePtsLeastSquaresFixEnds, bezier2FromPts, bezier2LengthEstimate, bezier2M, bezier2MInv, bezier2NormalAt, bezier2PolynomialX, bezier2PolynomialY, bezier2RMSDistance, bezier2SVG, bezier2Split, bezier2TangentAt, bezier2Translate, bezier2TsAtXEq, bezier2TsAtYEq, bezier2XAt, bezier2XTurningPointTs, bezier2YAt, bezier2YTurningPointTs, bezier3At, bezier3Bisect, bezier3Bounds, bezier3Derivative, bezier3FromBezier, bezier3FromBezier2, bezier3FromLine, bezier3FromPolylinePtsLeastSquares, bezier3FromPolylinePtsLeastSquaresFixEnds, bezier3FromPts, bezier3FromQuad, bezier3LengthEstimate, bezier3M, bezier3MInv, bezier3NormalAt, bezier3Normalise, bezier3PolynomialX, bezier3PolynomialY, bezier3RMSDistance, bezier3SVG, bezier3Split, bezier3TangentAt, bezier3Translate, bezier3TsAtXEq, bezier3TsAtYEq, bezier3XAt, bezier3XTurningPointTs, bezier3YAt, bezier3YTurningPointTs, bezierAt, bezierAtMulti, bezierBisect, bezierDerivative, bezierElevateOrder, bezierElevateOrderTo, bezierFrenetNormalAt, bezierFromBezier2, bezierFromBezier3, bezierFromEndpoints, bezierFromLine, bezierFromPolylineVertsLeastSquares, bezierFromPolylineVertsLeastSquaresFixEnds, bezierFromQuad, bezierFromVecs, bezierLowerOrder, bezierM, bezierMInv, bezierNormalAt, bezierOrder, bezierPolynomials, bezierSVG, bezierSplit, bezierTangentAt, bezierTranslate, binomial, circleArea, circleBounds, circleCircumference, circleContains, circleSVG, complexCompanionMat, conjugateZ, cutBezier3Circle, cutBezier3Rect, divRZ, divZ, erf, erfZ, erfc, erfcZ, expZ, fresnelCIntegral, fresnelSIntegral, intersectBezier3Circle, intersectBezier3CircleFn, intersectBezier3Line, intersectBezier3Rect, intersectLineLine, intersectNBezier3Circle, intersectNBezier3CircleFn, invZ, isOverlapAABox, isOverlapAABoxCircle, isOverlapAABoxCircleR2, lineAt, lineBisect, lineBounds, lineDerivative, lineFromBezier, lineFromPts, lineLength, lineMidpoint, lineNormal, linePolynomialX, linePolynomialY, lineSVG, lineSplit, lineTangent, lineTranslate, lineTsAtXEq, lineTsAtYEq, lineXAt, lineYAt, mat1Determinant, mat1Eigenvalues, mat1Eigenvector, mat1Inverse, mat1LeftInverse, mat1RightInverse, mat1Trace, mat2Determinant, mat2Eigenvalues, mat2Eigenvector, mat2Inverse, mat2LeftInverse, mat2RightInverse, mat2Trace, mat3Determinant, mat3Eigenvalues, mat3Eigenvector, mat3FromQuat, mat3FromUnitQuat, mat3Inverse, mat3LeftInverse, mat3RightInverse, mat3Trace, mat4Determinant, mat4Eigenvalues, mat4Eigenvector, mat4Inverse, mat4LeftInverse, mat4RightInverse, mat4Trace, matAdd, matAddColumnwise, matBinaryOp, matDeterminant, matEigenvalues, matEigenvector, matElementNorm, matElementNorm2, matFrom, matFromArray, matFromArrayFn, matFromDiag, matFromEyeTargetUp, matFromPts, matFromRotationBetween, matFromVecArray, matIdent, matInverse, matLeftInverse, matLerp, matMid, matMinor, matMul, matMulABTranspose, matMulATransposeB, matPadIdent, matPrint, matProjectVec3, matReshape, matRightInverse, matScale, matScaleAdd, matSkewSymmetricCrossProduct, matSub, matSumDiagDeterminant2, matSumDiagDeterminant3, matTrace, matTranspose, matUnaryOp, matWindow, matZero, movementThrottle, mulZ, mulZR, nBezier3Area, nBezier3At, nBezier3Curvature, nBezier3Derivative, nBezier3InflectionTs, nBezier3Moment, nBezier3XAt, nBezier3YAt, negZ, penTool, polygonContains, polygonSignedArea, polyline2DFromPolyline, polyline2DFromPts, polyline2DSVG, polylineFromPolyline2D, polylineFromVecs, polynomial2Roots, polynomial3Roots, polynomial3SignedRoots, polynomial4Roots, polynomial4SignedRoots, polynomial5Roots, polynomial5SignedRoots, polynomial7SignedRoots, polynomialAdd, polynomialAt, polynomialCompanionMat, polynomialDerivative, polynomialFromBezier2Values, polynomialFromBezier3Values, polynomialFromBezierValues, polynomialIntegral, polynomialMul, polynomialRoots, polynomialScale, polynomialShift, polynomialSub, polynomialWithSolutions, ptAdd, ptAngle, ptCross, ptDist, ptDist2, ptDot, ptFromVec, ptLen, ptLen2, ptLerp, ptMad, ptMid, ptMul, ptNorm, ptReflect, ptRot90, ptSVG, ptSignedAngle, ptSub, ptTransform, ptsFromMat, quatAdd, quatConjugate, quatDist, quatDist2, quatDiv, quatDot, quatExp, quatFrom, quatFromMat3BestFit, quatFromMat3Exact, quatFromRotationAround, quatInv, quatLerp, quatLerpShortestPath, quatLerpShortestPathUnit, quatLerpUnit, quatLog, quatMad, quatMul, quatNearest, quatNorm, quatNorm2, quatPrint, quatScale, quatSlerp, quatSlerpShortestPath, quatSquad, quatSub, quatUnit, quatVectorNorm, quatVectorNorm2, rectArea, rectBounds, rectContains, rectFromAABox, rectFromLine, rectSVG, subRZ, subZ, unscaledFresnelCIntegral, unscaledFresnelSIntegral, vec2Cross, vec3Cross, vecAdd, vecAngle, vecArrayFromMat, vecDist, vecDist2, vecDot, vecFrom, vecFromPt, vecLen, vecLen2, vecLerp, vecMad, vecMid, vecMul, vecNorm, vecPrint, vecReflect, vecSub, zeros };
|
|
856
860
|
export type { AxisAlignedBox, Bezier, Circle, CircleIntersectionFn, ComplexNumber, CubicBezier, Decrement, DivideWhole, Increment, LineSegment, Matrix, Max, Multiply, NormalisedCubicBezier, Polygon, Polyline, Polyline2D, Polynomial, Pt, PtWithDist, QuadraticBezier, Quaternion, Rectangle, Sign, SizeOf, SizedArray, SizedArrayWithLength, SquareMatrix, Vector, VectorWithDist };
|
package/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const t=t=>new Array(t).fill(0),n=(t,n,r)=>({v:t,m:n,n:r}),r=t=>{const r=t.flat();if(r.length%t.length)throw new Error("inconsistent matrix size");return n(r,t.length,t[0]?.length??0)},o=r=>{const o=r.length,c=t(o*o);for(let t=0;t<o;++t)c[t*(o+1)]=r[t];return n(c,o,o)};function c(t,r){if(t.length%r)throw new Error("invalid array length for matrix");return n(t,t.length/r,r)}const e=(t,n)=>r(t.map(n)),u=(r,o)=>n(t(r*o),r,o),s=r=>{const o=t(r*r);for(let t=0;t<r;++t)o[t*(r+1)]=1;return n(o,r,r)},f=({v:t,m:r,n:o},c)=>{if(r>c||o>c)throw new Error("matrix too large");const e=[];for(let n=0;n<c;++n)for(let u=0;u<c;++u)e.push(n<r&&u<o?t[n*o+u]:n===u?1:0);return n(e,c,c)};function i(t,{precision:n=3,width:r=n+5}={}){if(!t)return"(null)";const{v:o,m:c,n:e}=t;let u=[];for(let t=0;t<c;++t){const c=[];for(let u=0;u<e;++u)c.push(o[t*e+u].toFixed(n).padStart(r," "));u.push(c.join(" "))}return`[ ${u.join("\n ")} ] (${c}x${e})`}function l({v:t,m:r,n:o},c){const e=r*o;if(e%c)throw new Error("invalid matrix reshaping");return n(t,e/c,c)}function a({v:t,m:r,n:o}){if(r<=1||o<=1)return n(t,o,r);const c=[];for(let n=0;n<o;++n)for(let e=0;e<r;++e)c.push(t[e*o+n]);return n(c,o,r)}const p=({v:t})=>Math.hypot(...t),h=({v:t})=>t.reduce((t,n)=>t+n*n,0),M=({v:t,m:r,n:o},c)=>n(t.map(c),r,o);function x(t,r,o,c="+"){return((t,n,r)=>{if(t.m!==n.m||t.n!==n.n)throw new Error(`invalid matrix operation (${t.m} x ${t.n}) ${r} (${n.m} x ${n.n})`)})(t,r,c),n(t.v.map((t,n)=>o(t,r.v[n],n)),t.m,t.n)}const m=(t,n)=>x(t,n,(t,n)=>t+n,"+");function v({v:t,m:r,n:o},c){if(o!==c.n)throw new Error("invalid matrix operation");const e=[];for(let n=0;n<r;++n)for(let r=0;r<o;++r)e.push(t[n*o+r]+c.v[r]);return n(e,r,o)}const w=(t,n)=>x(t,n,(t,n)=>t-n,"-"),$=(t,n)=>M(t,t=>t*n),d=(t,n,r)=>x(t,r,(t,r)=>t*n+r);function y(t,n,r){const o=1-r;return x(t,n,(t,n)=>t*o+n*r)}const b=(t,n)=>x(t,n,(t,n)=>.5*(t+n));function E(t,r){const o=t.m,c=r.n,e=t.n;if(r.m!==e)throw new Error(`invalid matrix multiplication (${t.m} x ${t.n}) * (${r.m} x ${r.n})`);const u=[];for(let n=0;n<o;++n)for(let o=0;o<c;++o){let s=0;for(let u=0;u<e;++u)s+=t.v[n*e+u]*r.v[u*c+o];u.push(s)}return n(u,o,c)}function z(t,r){const o=t.n,c=r.n,e=t.m;if(r.m!==e)throw new Error(`invalid matrix multiplication (${t.n} x ${t.m}) * (${r.m} x ${r.n})`);const u=[];for(let n=0;n<o;++n)for(let s=0;s<c;++s){let f=0;for(let u=0;u<e;++u)f+=t.v[u*o+n]*r.v[u*c+s];u.push(f)}return n(u,o,c)}function N(t,r){const o=t.m,c=r.m,e=t.n;if(r.n!==e)throw new Error(`invalid matrix multiplication (${t.m} x ${t.n}) * (${r.n} x ${r.m})`);const u=[];for(let n=0;n<o;++n)for(let o=0;o<c;++o){let c=0;for(let u=0;u<e;++u)c+=t.v[n*e+u]*r.v[o*e+u];u.push(c)}return n(u,o,c)}function _(t){nt(t);const{m:n,v:r}=t,o=n+1;let c=0;for(let t=0;t<n;++t)c+=r[t*o];return c}function g({v:t,m:r,n:o},c,e){if(c<0||c>=r)throw new Error(`row ${c} out of bounds`);if(e<0||e>=o)throw new Error(`column ${e} out of bounds`);const u=[];for(let n=0;n<r-1;++n){const r=(n+(n>=c?1:0))*o;for(let n=0;n<o-1;++n)u.push(t[r+n+(n>=e?1:0)])}return n(u,r-1,o-1)}function L({v:t,m:r,n:o},c,e,u,s){if(c<0||c+u>r||u<0)throw new Error(`row range ${c}-${c+u} out of bounds`);if(e<0||e+s>=o||s<0)throw new Error(`column range ${e}-${e+s} out of bounds`);const f=[],i=c*o+e;for(let n=0;n<u;++n)for(let r=0;r<s;++r)f.push(t[i+n*o+r]);return n(f,u,s)}function T(t){switch(nt(t),t.m){case 0:return 0;case 1:return D(t);case 2:return A(t);case 3:return J(t);case 4:return W(t);default:{const{m:n,n:r,v:o}=t;let c=1;const e=[];for(let t=0;t<n;++t)e.push(o.slice(t*r,t*r+r));for(let t=0;t<n;++t){if(!e[t][t])for(let r=t+1;;++r){if(r>=n)return 0;if(e[r][t]){c=-c,[e[t],e[r]]=[e[r],e[t]];break}}const r=e[t],o=r[t];for(let c=t+1;c<n;++c)r[c]/=o;c*=o;for(let o=0;o<n;++o)if(o!==t){const c=e[o],u=c[t];if(u)for(let o=t+1;o<n;++o)c[o]-=r[o]*u}}return c}}}function O(t){switch(nt(t),t.m){case 0:return t;case 1:return H(t);case 2:return B(t);case 3:return P(t);case 4:return X(t);default:throw new Error("unsupported matrix size")}}function Z(t){if(t.m===t.n)return O(t);const n=t.m<t.n?null:O(z(t,t));return n?N(n,t):null}function k(t){if(t.m===t.n)return O(t);const n=t.n<t.m?null:O(N(t,t));return n?z(t,n):null}const C=({v:t})=>t[0],D=({v:[t]})=>t;function H({v:[t]}){return Math.abs(t)<Number.EPSILON?null:{v:[1/t],m:1,n:1}}function Q(t){if(t.m===t.n)return H(t);const n=t.m<t.n?null:H(z(t,t));return n?N(n,t):null}function j(t){if(t.m===t.n)return H(t);const n=t.n<t.m?null:H(N(t,t));return n?z(t,n):null}const q=({v:t})=>t[0]+t[3],A=({v:[t,n,r,o]})=>t*o-r*n;function V(t){nt(t);const{v:n,n:r}=t;let o=0;for(let t=1;t<r;++t)for(let c=0;c<t;++c)o+=n[c*r+c]*n[t*r+t]-n[c*r+t]*n[t*r+c];return o}function B({v:[t,n,r,o]}){const c=t*o-r*n;if(Math.abs(c)<1e-8)return null;const e=1/c;return{v:[o*e,-n*e,-r*e,t*e],m:2,n:2}}function F(t){if(t.m===t.n)return B(t);const n=t.m<t.n?null:B(z(t,t));return n?N(n,t):null}function G(t){if(t.m===t.n)return B(t);const n=t.n<t.m?null:B(N(t,t));return n?z(t,n):null}const I=({v:t})=>t[0]+t[4]+t[8],J=({v:[t,n,r,o,c,e,u,s,f]})=>t*(f*c-e*s)+n*(e*u-f*o)+r*(s*o-c*u);function K(t){nt(t);const{v:n,n:r}=t;let o=0;for(let t=2;t<r;++t)for(let c=1;c<t;++c)for(let e=0;e<c;++e)o+=n[e*r+e]*(n[t*r+t]*n[c*r+c]-n[c*r+t]*n[t*r+c])+n[e*r+c]*(n[c*r+t]*n[t*r+e]-n[t*r+t]*n[c*r+e])+n[e*r+t]*(n[t*r+c]*n[c*r+e]-n[c*r+c]*n[t*r+e]);return o}function P({v:[t,n,r,o,c,e,u,s,f]}){const i=f*c-e*s,l=e*u-f*o,a=s*o-c*u,p=t*i+n*l+r*a;if(Math.abs(p)<1e-8)return null;const h=1/p;return{v:[i*h,(r*s-f*n)*h,(e*n-r*c)*h,l*h,(f*t-r*u)*h,(r*o-e*t)*h,a*h,(n*u-s*t)*h,(c*t-n*o)*h],m:3,n:3}}function R(t){if(t.m===t.n)return P(t);const n=t.m<t.n?null:P(z(t,t));return n?N(n,t):null}function S(t){if(t.m===t.n)return P(t);const n=t.n<t.m?null:P(N(t,t));return n?z(t,n):null}const U=({v:t})=>t[0]+t[5]+t[10]+t[15],W=({v:[t,n,r,o,c,e,u,s,f,i,l,a,p,h,M,x]})=>(t*e-n*c)*(l*x-a*M)-(t*u-r*c)*(i*x-a*h)+(t*s-o*c)*(i*M-l*h)+(n*u-r*e)*(f*x-a*p)-(n*s-o*e)*(f*M-l*p)+(r*s-o*u)*(f*h-i*p);function X({v:[t,n,r,o,c,e,u,s,f,i,l,a,p,h,M,x]}){const m=t*e-n*c,v=t*u-r*c,w=t*s-o*c,$=n*u-r*e,d=n*s-o*e,y=r*s-o*u,b=f*h-i*p,E=f*M-l*p,z=f*x-a*p,N=i*M-l*h,_=i*x-a*h,g=l*x-a*M,L=m*g-v*_+w*N+$*z-d*E+y*b;if(Math.abs(L)<Number.EPSILON)return null;const T=1/L;return{v:[(e*g-u*_+s*N)*T,(r*_-n*g-o*N)*T,(h*y-M*d+x*$)*T,(l*d-i*y-a*$)*T,(u*z-c*g-s*E)*T,(t*g-r*z+o*E)*T,(M*w-p*y-x*v)*T,(f*y-l*w+a*v)*T,(c*_-e*z+s*b)*T,(n*z-t*_-o*b)*T,(p*d-h*w+x*m)*T,(i*w-f*d-a*m)*T,(e*E-c*N-u*b)*T,(t*N-n*E+r*b)*T,(h*v-p*$-M*m)*T,(f*$-i*v+l*m)*T],m:4,n:4}}function Y(t){if(t.m===t.n)return X(t);const n=t.m<t.n?null:X(z(t,t));return n?E(n,a(t)):null}function tt(t){if(t.m===t.n)return X(t);const n=t.n<t.m?null:X(E(t,a(t)));return n?z(t,n):null}function nt(t){if(t.m!==t.n)throw new Error(`matrix is not square (${t.m} x ${t.n})`)}const rt={v:[1],m:1,n:1},ot={v:[1,0,0,1],m:2,n:2},ct={v:[0,1,-1,0],m:2,n:2},et={v:[1,0,0,0,1,0,0,0,1],m:3,n:3},ut={v:[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],m:4,n:4};function st({v:t,m:n}){const r=[];for(let o=0;o<n;++o)r.push({x:t[2*o],y:t[2*o+1]});return r}function ft(t){const r=[];for(const n of t)r.push(n.x,n.y);return n(r,t.length,2)}const it=({v:[t,n]})=>({x:t,y:n}),lt=({x:t,y:r})=>n([t,r],1,2),at={x:0,y:0},pt=(t,n)=>t.x*n.x+t.y*n.y,ht=(t,n)=>t.x*n.y-t.y*n.x,Mt=(t,n)=>Nt(n,-2*pt(t,n),t),xt=({x:t,y:n})=>t*t+n*n,mt=({x:t,y:n})=>Math.hypot(t,n),vt=(t,n)=>(t.x-n.x)*(t.x-n.x)+(t.y-n.y)*(t.y-n.y),wt=(t,n)=>Math.hypot(t.x-n.x,t.y-n.y),$t=(t,n=1)=>zt(t,n/mt(t)),dt=({x:t,y:n})=>({x:-n,y:t}),yt=(t,n)=>Math.acos(Math.max(-1,Math.min(1,pt(t,n)/Math.sqrt(xt(t)*xt(n))))),bt=(t,n)=>Math.atan2(ht(t,n),pt(t,n)),Et=(t,n)=>({x:t.x+n.x,y:t.y+n.y}),zt=(t,n)=>({x:t.x*n,y:t.y*n}),Nt=(t,n,r)=>({x:t.x*n+r.x,y:t.y*n+r.y}),_t=(t,n)=>({x:t.x-n.x,y:t.y-n.y}),gt=(t,n,r)=>({x:t.x+(n.x-t.x)*r,y:t.y+(n.y-t.y)*r}),Lt=(t,n)=>({x:.5*(t.x+n.x),y:.5*(t.y+n.y)}),Tt=(t,n,r,o,c,e)=>u=>({x:u.x*t+u.y*n+r,y:u.x*o+u.y*c+e}),Ot=(t,n=6)=>`${t.x.toFixed(n)} ${t.y.toFixed(n)}`;function Zt(t,n){const r=Math.min(...t),o=Math.max(...t);return{l:{x:r,y:Math.min(...n)},h:{x:o,y:Math.max(...n)}}}const kt=({l:t,h:n})=>Lt(t,n),Ct=({l:t,h:n})=>(n.x-t.x)*(n.y-t.y),Dt=({l:t,h:n},{x:r,y:o})=>r>=t.x&&r<=n.x&&o>=t.y&&o<=n.y,Ht=({l:t,h:n},r)=>`M${Ot(t,r)}H${n.x}V${n.y}H${t.x}Z`,Qt=t=>{const n=new Map;return r=>{const o=n.get(r);if(o)return o;const c=t(r);return n.set(r,c),c}},jt=[[1]];function qt(t,n){if(t<0||n<0||n>t)return 0;for(;jt.length<=t;){const t=jt.length,n=jt[t-1],r=[],o=[];let c=0,e=0;for(let u=0,s=t+1>>>1;u<s;++u){const t=n[u],s=c+t;r.push(s),o.push(e+s),e=s,c=t}o.push(2*e),jt.push(r,o)}return jt[t][2*n>t?t-n:n]}const At=(...t)=>({v:t,m:1,n:t.length});function Vt({v:t,m:r,n:o}){const c=[];for(let e=0;e<r;++e)c.push(n(t.slice(e*o,e*o+o),1,o));return c}const Bt=t=>n(t.flatMap(t=>t.v),t.length,t[0]?.n??0);function Ft(t,{precision:n=3}={}){return t?`{${t.v.map(t=>t.toFixed(n)).join(", ")}}`:"(null)"}function Gt(t,n){((t,n)=>{if(t.n!==n.n)throw new Error(`invalid vector operation (${t.n}) . (${n.n})`)})(t,n);let r=0;for(let o=0;o<t.n;++o)r+=t.v[o]*n.v[o];return r}const It=({v:[t,n]},{v:[r,o]})=>t*o-n*r,Jt=({v:[t,n,r]},{v:[o,c,e]})=>({v:[n*e-r*c,r*o-t*e,t*c-n*o],m:1,n:3}),Kt=(t,n)=>nn(n,-2*Gt(t,n),t),Pt=t=>Gt(t,t),Rt=({v:t})=>Math.hypot(...t),St=(t,n)=>Pt(rn(t,n)),Ut=(t,n)=>Rt(rn(t,n)),Wt=(t,n=1)=>tn(t,n/Rt(t)),Xt=(t,n)=>Math.acos(Math.max(-1,Math.min(1,Gt(t,n)/Math.sqrt(Pt(t)*Pt(n))))),Yt=m,tn=$,nn=d,rn=w,on=y,cn=b,en=Bt,un=(t,n,r)=>{const o=[];for(let c=0;c<=r;++c)o.push(on(t,n,c/r));return Bt(o)},sn=(t,n,r,o)=>Bt([t,on(n,o,1/3),on(r,t,1/3),o]);function fn(t,n){if(!t.length||n<2)return null;const r=t[0],o=t[t.length-1];if(t.length>2){const c=r.d,u=1/(o.d-c),s=Math.min(t.length,n),f=Z(e(t,({d:t})=>On((t-c)*u,s)));if(f)return wn(E(bn(s),E(f,Bt(t))),n)}return un(r,o,n)}function ln(t,r){if(!t.length||r<2)return null;const o=t[0],c=t[t.length-1];if(t.length>2){const e=o.d,u=1/(c.d-e),s=rn(c,o),f=Math.min(t.length,r),i=[],l=[];for(let n=1;n<t.length-1;++n){const r=t[n],c=(r.d-e)*u,a=On(c,f-1,c),p=a.pop();l.push(...a.map(t=>t-p)),i.push(rn(r,nn(s,p,o)))}const a=Z(n(l,t.length-2,f-2));if(a){const t=v(E(an(f),E(a,Bt(i))),o);return wn(n([...o.v,...t.v,...c.v],f,t.n),r)}}return un(o,c,r)}const an=/*@__PURE__*/Qt(t=>{const n=O(L(yn(t),1,1,t-2,t-2));if(!n)throw new Error("unexpected non-invertible bezier matrix");return n}),pn=(t,n)=>hn(t,[n]);function hn(t,r){const o=t.m,c=[];for(let t=0;t<r.length;++t){const n=r[t];for(let t=0,r=1;t<o;++t)c.push(r),r*=n}return E(n(c,r.length,o),E(yn(t.m),t))}const Mn=t=>{const{m:n,n:r}=t,o=E(yn(n),t),c=[];for(let t=0;t<r;++t){const e=[];for(let c=0;c<n;++c)e.push(o.v[c*r+t]);c.push(e)}return c},xn=(...t)=>N(yn(t.length),At(...t)).v,mn=t=>t.m-1;function vn({v:t,m:r,n:o}){const c=r+1,e=[];for(let n=0;n<c;++n){const c=n/r;for(let r=0;r<o;++r)e.push((1-c)*(t[n*o+r]??0)+c*(t[(n-1)*o+r]??0))}return n(e,c,o)}function wn(t,n){if(n<t.m)throw new Error("curve is higher order than target");let r=t;for(;r.m<n;)r=vn(r);return r}const $n=/*@__PURE__*/new Map;function dn(r){const o=r.m;let c=$n.get(o);if(!c){const r=o-1,e=t(o*r);e[0]=e[o*r-1]=1;for(let t=1;t<r;++t)e[t*o]=1-(e[t*o-1]=t/r);if(c=Z(n(e,o,r)),!c)throw new Error("unexpected non-invertible elevation matrix");$n.set(o,c)}return E(c,r)}const yn=/*@__PURE__*/Qt(r=>{const o=t(r*r);for(let t=0;t<r;++t){const n=qt(r-1,t)*(2*(1&t)-1);for(let c=0;c<=t;++c){const e=qt(t,c)*(2*(1&c)-1);o[t*r+c]=n*e}}return n(o,r,r)}),bn=/*@__PURE__*/Qt(t=>{const n=O(yn(t));if(!n)throw new Error("unexpected non-invertible bezier matrix");return n});function En({v:t,m:r,n:o}){const c=r-1,e=[];for(let n=0;n<c;++n)for(let r=0;r<o;++r){const u=n*o+r;e.push(c*(t[u+o]-t[u]))}return n(e,c,o)}const zn=(t,n)=>Wt(pn(En(t),n)),Nn=(t,n)=>E(zn(t,n),ct),_n=(t,n)=>v(t,n),gn=(t,n)=>{const r=En(t),o=En(r),c=Wt(pn(r,n)),e=Wt(Yt(c,pn(o,n))),u=Wt(Jt(e,c));return Jt(u,c)};function Ln(t,r=.5){const c=t.m,e=yn(c),u=E(E(bn(c),o(On(r,c))),e),s=[];for(let t=0;t<c;++t){for(let n=0;n<=t;++n)s.push(u.v[t*(c+1)-n]);for(let n=t+1;n<c;++n)s.push(0)}const f=n(s.reverse(),c,c);return[E(u,t),E(f,t)]}function Tn(t,n,r=1e-6){let o=t;const c=[];for(const t of n.filter(t=>t>0&&t<1).sort()){if(t<=0+r)continue;const n=(t-0)/1,[e,u]=Ln(o,n);c.push(e),o=u}return c.push(o),c}function On(t,n,r=1){const o=[];for(let c=0,e=r;c<n;++c)o.push(e),e*=t;return o}function Zn(t,n,r="M",o=!1){const c=st(t).map(t=>Ot(t,n));if(o||t.m<3)return r+c.join("L");switch(t.m){case 3:return`${r}${c[0]}Q${c[1]} ${c[2]}`;case 4:return`${r}${c[0]}C${c[1]} ${c[2]} ${c[3]}`;default:const o=30,e=[];for(let t=0;t<=o;++t)e.push(t/o);return r+st(hn(t,e)).map(t=>Ot(t,n)).join("L")}}const kn=({r:t})=>Math.PI*t*t,Cn=({r:t})=>2*Math.PI*t,Dn=({c:t,r:n})=>({l:{x:t.x-n,y:t.y-n},h:{x:t.x+n,y:t.y+n}}),Hn=({c:t,r:n},r)=>vt(t,r)<n*n,Qn=({c:t,r:n},r)=>`M${Ot({x:t.x,y:t.y-n},r)}a${n} ${n} 0 0 0 0 ${2*n}a${n} ${n} 0 0 0 0 ${2*-n}Z`;function jn(r){if(!r.length)throw new Error("empty polynomial");const o=r.length-1,c=1/r[o],e=t(o*o);for(let t=0;t<o-1;++t)e[(t+1)*o+t]=1;for(let t=0;t<o;++t)e[(t+1)*o-1]=r[t]*c;return n(e,o,o)}const qn=(t,n)=>t.reduceRight((t,r)=>t*n+r,0),An=(...n)=>n.reduce((n,r)=>{const o=t(n.length+r.length-1);for(let t=0;t<n.length;++t)for(let c=0;c<r.length;++c)o[t+c]+=n[t]*r[c];return o}),Vn=t=>t.map((t,n)=>t*n).slice(1),Bn=(t,n=0)=>[n,...t.map((t,n)=>t/(n+1))],Fn=(t,n)=>t.length>=n.length?t.map((t,r)=>t+(n[r]??0)):n.map((n,r)=>(t[r]??0)+n),Gn=(t,n)=>t.length>=n.length?t.map((t,r)=>t-(n[r]??0)):n.map((n,r)=>(t[r]??0)-n),In=(t,n)=>t.map(t=>t*n),Jn=(t,n)=>{if(!t.length)throw new Error("empty polynomial");const r=[...t];return r[0]+=n,r},Kn=(...t)=>An(...t.map(t=>[-t,1]));function Pn(t,n=0,r={}){let o=cr;if(void 0!==r.min||void 0!==r.max){const t=r.min??Number.NEGATIVE_INFINITY,n=r.max??Number.POSITIVE_INFINITY;o=r=>r.filter(r=>r>=t&&r<=n)}switch(t.length){case 0:case 1:return[];case 2:return o(Sn(t,n));case 3:return o(Un(t,n));case 4:return o(Xn(t,n));case 5:return o(tr(t,n));case 7:return rr(t,n,r).map(t=>t[0]);default:throw new Error("unsupported polynomial order")}}const Rn=1e-12,Sn=([t,n],r=0)=>n?[(r-t)/n]:[];function Un([t,n,r],o=0){if(Math.abs(r)<=Math.max(t,-t,n,-n)*Rn)return Sn([t,n],o);const c=n*n-4*r*(t-o),e=.5/r;if(c>0){const t=Math.sqrt(c);return[(-n+t)*e,(-n-t)*e]}return c?[]:[-n*e]}function Wn(t,n=0,{min:r=0,max:o=1,maxError:c=1e-4}={}){const e=Sn(Vn(t)).filter(t=>t>r&&t<o).sort();return e.push(o),or(r,e,r=>qn(t,r)-n,c)}function Xn([t,n,r,o],c=0){if(Math.abs(o)<=Math.max(t,-t,n,-n,r,-r)*Rn)return Un([t,n,r],c);const e=1/o,u=r*e*(1/3),s=n*e*(1/3)-u*u,f=s*s*s,i=.5*(u*(2*u*u-n*e)+(t-c)*e),l=i*i+f;if(Math.abs(l)<Number.EPSILON){if(Math.abs(i)<Number.EPSILON)return[-u];const t=Math.cbrt(i);return[-2*t-u,t-u]}if(l<0){const t=Math.sqrt(-f),n=Math.acos(Math.max(-1,Math.min(1,-i/t)))*(1/3),r=2*Math.cbrt(t);return[r*Math.cos(n-Math.PI*(2/3))-u,r*Math.cos(n)-u,r*Math.cos(n+Math.PI*(2/3))-u]}const a=Math.sqrt(l);return[Math.cbrt(a-i)-Math.cbrt(a+i)-u]}function Yn(t,n=0,{min:r=0,max:o=1,maxError:c=1e-4}={}){const e=Un(Vn(t)).filter(t=>t>r&&t<o).sort();return e.push(o),or(r,e,r=>qn(t,r)-n,c)}function tr([t,n,r,o,c],e=0){if(Math.abs(c)<=Math.max(t,-t,n,-n,r,-r,o,-o)*Rn)return Xn([t,n,r,o],e);if(!n&&!r&&!o){const n=(e-t)/c;if(Math.abs(n)<Number.EPSILON)return[0];if(n<0)return[];{const t=Math.sqrt(Math.sqrt(n));return[-t,t]}}const u=.25/c,s=o*u,f=u*u,i=o*o*f,l=r*u,a=4*l-6*i,p=4*(2*(i-l)*o+n)*u,h=Xn([-p*p,a*a-4*((l-.75*i)*i+(t-e)*u-n*o*f)*4,2*a,1]).sort(ur)[0];if(void 0===h||h<Number.EPSILON){if(Math.abs(p)>Number.EPSILON)return[];if(a<-Number.EPSILON){const t=Math.sqrt(-2/a);return[-t-s,t-s]}return a<Number.EPSILON?[-s]:[]}const M=Math.sqrt(h),x=(a+h)*M,m=[...Un([.5*(x+p),-h,M]),...Un([.5*(x-p),h,M])].sort(er),v=[];let w=Number.NEGATIVE_INFINITY;for(const t of m)t>w+Number.EPSILON&&(v.push(t-s),w=t);return v}function nr(t,n=0,{min:r=0,max:o=1,maxError:c=1e-4}={}){const e=Xn(Vn(t)).filter(t=>t>r&&t<o).sort();return e.push(o),or(r,e,r=>qn(t,r)-n,c)}function rr(t,n=0,{min:r=0,max:o=1,maxError:c=1e-4}={}){const e=Vn(t),u=Vn(e),s=Xn(Vn(u)).filter(t=>t>r&&t<o).sort();s.push(o);const f=r=>({y:qn(t,r)-n,d:qn(e,r),dd:qn(u,r)});function i(t,n){const r=t.y<0,o=t.d<0;return r!==n.y<0||o!==r&&r===n.d<0||t.dd<0!==o&&o===n.dd<0}const l=[];function a(t,n,r,o){if(n-t>c){const c=.5*(t+n),e=f(c);i(r,e)&&a(t,c,r,e),i(e,o)&&a(c,n,e,o)}else r.y<0!=o.y<0&&l.push([t+(n-t)*r.y/(r.y-o.y),r.y<0?1:-1])}let p=r,h=f(r);for(const t of s){const n=f(t);i(h,n)&&a(p,t,h,n),p=t,h=n}return l}function or(t,n,r,o){const c=[];function e(t,n,u,s){if(n-t>o){const o=.5*(t+n),c=r(o);u<0!=c<0&&e(t,o,u,c),c<0!=s<0&&e(o,n,c,s)}else u<0!=s<0&&c.push([t+(n-t)*u/(u-s),u<0?1:-1])}let u=t,s=r(t);for(const t of n){const n=r(t);s<0!=n<0&&e(u,t,s,n),u=t,s=n}return c}const cr=t=>t,er=(t,n)=>t-n,ur=(t,n)=>n-t,sr=(t,n)=>({p0:t,p1:n}),fr=t=>sr(...st(t)),ir=({p0:t,p1:n})=>ft([t,n]),lr=({p0:t,p1:n},r)=>gt(t,n,r),ar=({p0:t,p1:n},r)=>t.x+(n.x-t.x)*r,pr=({p0:t,p1:n},r)=>t.y+(n.y-t.y)*r,hr=({p0:t,p1:n})=>[t.x,n.x-t.x],Mr=({p0:t,p1:n})=>[t.y,n.y-t.y],xr=({p0:t,p1:n})=>Lt(t,n),mr=({p0:t,p1:n})=>_t(n,t),vr=t=>$t(mr(t)),wr=t=>dt(vr(t)),$r=({p0:t,p1:n},r)=>({p0:Et(t,r),p1:Et(n,r)}),dr=(t,n)=>Sn(hr(t),n),yr=(t,n)=>Sn(Mr(t),n),br=t=>({l:{x:Math.min(t.p0.x,t.p1.x),y:Math.min(t.p0.y,t.p1.y)},h:{x:Math.max(t.p0.x,t.p1.x),y:Math.max(t.p0.y,t.p1.y)}}),Er=({p0:t,p1:n})=>wt(n,t);function zr({p0:t,p1:n}){const r=_t(n,t),o=xt(r);if(!o)return null;const c=zt(r,1/o);return{scale2:o,fn:Tt(c.x,c.y,-t.x*c.x-t.y*c.y,-c.y,c.x,t.x*c.y-t.y*c.x)}}function Nr({p0:t,p1:n},r=.5){const o=gt(t,n,r);return[{p0:t,p1:o},{p0:o,p1:n}]}function _r({p0:t,p1:n},r,o=1e-6){let c=t,e=0;const u=[];for(const s of r.filter(t=>t>0&&t<1).sort()){if(s<=e+o)continue;const r=gt(t,n,s);u.push({p0:c,p1:r}),c=r,e=s}return u.push({p0:c,p1:n}),u}const gr=({p0:t,p1:n},r,o="M")=>`${o}${Ot(t,r)}L${Ot(n,r)}`;function Lr(t,n){const r=_t(n.p0,t.p0),o=_t(t.p1,t.p0),c=_t(n.p1,n.p0),e=ht(o,c);if(e){const t=ht(r,c)/e,n=ht(r,o)/e;if(t>=0&&t<=1&&n>=0&&n<=1)return[{t1:t,t2:n}]}return[]}const Tr=(t,n,r)=>({p0:t,c1:n,p2:r}),Or=t=>Tr(...st(t));function Zr(t){if(!t.length)return null;const n=t[0],r=t[t.length-1];if(t.length>=3){const o=n.d,c=1/(r.d-o),u=R(e(t,({d:t})=>{const n=(t-o)*c;return[1,n,n*n]}));if(u){const n=E(Dr,E(u,ft(t)));return Tr(...st(n))}}return Hr({p0:n,p1:r})}function kr(t,r){if(!t.length)return null;const o=t[0],c=t[t.length-1];if(t.length>2){const u=[],s=o.d,f=1/(c.d-s),i=_t(c,o),a=[],p=[];for(let n=1;n<t.length-1;++n){const r=t[n],c=(r.d-s)*f,e=c*c;a.push(c-e),p.push(_t(r,Nt(i,e,o)))}if(r&&vt(o,r)){const t=$t(_t(o,r)),n=Q(l(e(a,n=>[t.x*n,t.y*n]),1));if(n){const r=$(E(n,l(ft(p),1)),.5),[e]=r.v;e>0&&u.push({t:{p0:o,c1:Nt(t,e,o),p2:c},o:1})}}const h=Q(n(a,t.length-2,1));if(h){const t=$(E(h,ft(p)),.5),[n]=st(t);u.push({t:{p0:o,c1:Et(n,o),p2:c},o:4})}if(1===u.length)return u[0].t;if(u.length>1){let n,r=Number.POSITIVE_INFINITY;for(const o of u){const c=Kr(o.t,t)*o.o;c<r&&(n=o.t,r=c)}return n}}if(t.length>=2&&r&&vt(o,r)){const t=_t(c,o),n=mt(c),e=$t(_t(o,r)),u=n?Math.max(pt(e,zt(t,1/n)),0):1;return{p0:o,c1:Nt(e,u*n*(1/3),o),p2:c}}return Hr({p0:o,p1:c})}const Cr=/*@__PURE__*/r([[1,0,0],[-2,2,0],[1,-2,1]]),Dr=/*@__PURE__*/r([[1,0,0],[1,.5,0],[1,1,1]]),Hr=({p0:t,p1:n})=>({p0:t,c1:Lt(t,n),p2:n}),Qr=({p0:t,c1:n,p2:r})=>ft([t,n,r]);function jr({p0:t,c1:n,p2:r},o){const c=1-o;return Nt(Nt(t,c,zt(n,2*o)),c,zt(r,o*o))}function qr({p0:t,c1:n,p2:r},o){const c=1-o;return t.x*c*c+(2*n.x*c+r.x*o)*o}function Ar({p0:t,c1:n,p2:r},o){const c=1-o;return t.y*c*c+(2*n.y*c+r.y*o)*o}const Vr=(t,n,r)=>[t,2*(n-t),t-2*n+r],Br=({p0:t,c1:n,p2:r})=>Vr(t.x,n.x,r.x),Fr=({p0:t,c1:n,p2:r})=>Vr(t.y,n.y,r.y),Gr=({p0:t,c1:n,p2:r})=>({p0:zt(_t(n,t),2),p1:zt(_t(r,n),2)}),Ir=(t,n)=>$t(lr(Gr(t),n)),Jr=(t,n)=>dt(Ir(t,n));function Kr(t,n){if(!n.length)return 0;const r=n[0],o=n[n.length-1],c=r.d,u=1/(o.d-c),s=w(E(E(e(n,({d:t})=>{const n=(t-c)*u;return[1,n,n*n]}),Cr),Qr(t)),ft(n));return p(s)}const Pr=({p0:t,c1:n,p2:r},o)=>({p0:Et(t,o),c1:Et(n,o),p2:Et(r,o)}),Rr=(t,n)=>Un(Br(t),n),Sr=(t,n)=>Un(Fr(t),n),Ur=({p0:t,c1:n,p2:r})=>Sn([n.x-t.x,r.x-2*n.x+t.x]),Wr=({p0:t,c1:n,p2:r})=>Sn([n.y-t.y,r.y-2*n.y+t.y]),Xr=t=>Zt([t.p0.x,t.p2.x,...Ur(t).filter(t=>t>0&&t<1).map(qr.bind(null,t))],[t.p0.y,t.p2.y,...Wr(t).filter(t=>t>0&&t<1).map(Ar.bind(null,t))]);function Yr(t,n=Number.POSITIVE_INFINITY){const r=zr({p0:t.p0,p1:t.p2});if(!r){const n=wt(t.p0,t.c1);return{best:n,maxError:n*Number.EPSILON}}const o=Math.sqrt(r.scale2),c=r.fn(t.c1),e={x:c.x>.5?1-c.x:c.x,y:Math.abs(c.y)};if(e.y<2*n*o){const t=.5-e.x,n=t>.5?t+.25/t:1;return{best:n*o,maxError:(.5*e.y+n*Number.EPSILON)*o}}if(r.scale2<16*Number.EPSILON){const r=wt(t.p0,t.c1)+wt(t.c1,t.p2),c=.25*(2*r+o),e=.25*Math.min(o,r-o)+c*Number.EPSILON;if(e>n&&r>2*o){const[r,o]=to(t),c=Yr(r,.5*n),e=Yr(o,n-c.maxError);return{best:c.best+e.best,maxError:c.maxError+e.maxError}}return{best:c,maxError:e}}const u={x:2*e.x,y:2*e.y},s={x:2-2*u.x,y:2*-u.y},f=xt(s);if(f<.001){const t=.5*s.x,n=.5*s.y,r=t*t+n*n,c=r*r,f=c*c;let i=0;for(const[t,n]of oo)i+=t*mt(Nt(s,.5*n+.5,u));return{best:i*o*.5,maxError:.025*(mt(e)+wt(e,{x:1,y:0})-1)*Math.tanh(f*f)*o}}const i=pt(s,u)/f,l=xt(u)/f,a=Math.sqrt(l),p=Math.sqrt(1+2*i+l),h=l-i*i,M=(1+i+p)*(a-i),x=(1+i)*p-i*a+h*Math.log(M/h),m=Math.sqrt(f)*o*.5;return{best:x*m,maxError:1e-14*m}}function to({p0:t,c1:n,p2:r},o=.5){const c=gt(t,n,o),e=gt(n,r,o),u=gt(c,e,o);return[{p0:t,c1:c,p2:u},{p0:u,c1:e,p2:r}]}function no({p0:t,c1:n,p2:r},o,c=1e-6){let e=t,u=n;const s=r;let f=0;const i=[];for(const t of o.filter(t=>t>0&&t<1).sort()){if(t<=f+c)continue;const n=(t-f)/(1-f),r=gt(e,u,n),o=gt(u,s,n),l=gt(r,o,n);i.push({p0:e,c1:r,p2:l}),e=l,u=o,f=t}return i.push({p0:e,c1:u,p2:s}),i}const ro=({p0:t,c1:n,p2:r},o,c="M",e=!1)=>`${c}${Ot(t,o)}${e?"L":"Q"}${Ot(n,o)} ${Ot(r,o)}`,oo=[[.4179591836734694,0],[.3818300505051189,.4058451513773972],[.3818300505051189,-.4058451513773972],[.2797053914892766,-.7415311855993945],[.2797053914892766,.7415311855993945],[.1294849661688697,-.9491079123427585],[.1294849661688697,.9491079123427585]],co=(t,n,r,o)=>({p0:t,c1:n,c2:r,p3:o}),eo=t=>co(...st(t));function uo(t){if(!t.length)return null;if(t.length>=4){const n=t[0],r=t[t.length-1],o=n.d,c=1/(r.d-o),u=Y(e(t,({d:t})=>{const n=(t-o)*c,r=n*n;return[1,n,r,r*n]}));if(u){const n=E(lo,E(u,ft(t)));return co(...st(n))}}const n=Zr(t);return n?po(n):null}function so(t,n){if(!t.length)return null;const o=t[0],c=t[t.length-1];if(t.length>3){const u=[],s=o.d,f=1/(c.d-s),i=_t(c,o),a=[],p=[];for(let n=1;n<t.length-1;++n){const r=t[n],c=(r.d-s)*f,e=c*c,u=e*c;a.push([c-u,e-u]),p.push(_t(r,Nt(i,u,o)))}if(n&&vt(o,n)){const t=$t(_t(o,n)),r=R(l(e(a,([n,r])=>[t.x*(n-2*r),r,0,t.y*(n-2*r),0,r]),3));if(r){const n=$(E(r,l(ft(p),1)),1/3),[e,s,f]=n.v;e>0&&u.push({t:{p0:o,c1:Nt(t,e,o),c2:Et(o,{x:s,y:f}),p3:c},o:1})}}const h=F(r(a));if(h){const t=E(fo,E(h,ft(p))),[n,r]=st(t);u.push({t:{p0:o,c1:Et(n,o),c2:Et(r,o),p3:c},o:4})}if(1===u.length)return u[0].t;if(u.length>1){let n,r=Number.POSITIVE_INFINITY;for(const o of u){const c=No(o.t,t)*o.o;c<r&&(n=o.t,r=c)}return n}}const u=kr(t,n);return u?po(u):null}const fo=/*@__PURE__*/r([[1/3,0],[2/3,1/3]]),io=/*@__PURE__*/r([[1,0,0,0],[-3,3,0,0],[3,-6,3,0],[-1,3,-3,1]]),lo=/*@__PURE__*/r([[1,0,0,0],[1,1/3,0,0],[1,2/3,1/3,0],[1,1,1,1]]),ao=(t,n,r,o)=>({p0:t,c1:gt(n,o,1/3),c2:gt(r,t,1/3),p3:o}),po=({p0:t,c1:n,p2:r})=>({p0:t,c1:gt(t,n,2/3),c2:gt(n,r,1/3),p3:r}),ho=({p0:t,p1:n})=>({p0:t,c1:gt(t,n,1/3),c2:gt(t,n,2/3),p3:n}),Mo=({p0:t,c1:n,c2:r,p3:o})=>ft([t,n,r,o]);function xo({p0:t,c1:n,c2:r,p3:o},c){const e=1-c;return Nt(Nt(t,e*e,Nt(n,3*c*e,zt(r,3*c*c))),e,zt(o,c*c*c))}function mo({p0:t,c1:n,c2:r,p3:o},c){const e=1-c;return t.x*e*e*e+(3*e*(n.x*e+r.x*c)+o.x*c*c)*c}function vo({p0:t,c1:n,c2:r,p3:o},c){const e=1-c;return t.y*e*e*e+(3*e*(n.y*e+r.y*c)+o.y*c*c)*c}const wo=(t,n,r,o)=>[t,3*(n-t),3*(t-2*n+r),o-t+3*(n-r)],$o=({p0:t,c1:n,c2:r,p3:o})=>wo(t.x,n.x,r.x,o.x),yo=({p0:t,c1:n,c2:r,p3:o})=>wo(t.y,n.y,r.y,o.y),bo=({p0:t,c1:n,c2:r,p3:o})=>({p0:zt(_t(n,t),3),c1:zt(_t(r,n),3),p2:zt(_t(o,r),3)}),Eo=(t,n)=>$t(jr(bo(t),n)),zo=(t,n)=>dt(Eo(t,n));function No(t,n){if(!n.length)return 0;const r=n[0],o=n[n.length-1],c=r.d,u=1/(o.d-c),s=w(E(E(e(n,({d:t})=>{const n=(t-c)*u,r=n*n;return[1,n,r,r*n]}),io),Mo(t)),ft(n));return p(s)}const _o=({p0:t,c1:n,c2:r,p3:o},c)=>({p0:Et(t,c),c1:Et(n,c),c2:Et(r,c),p3:Et(o,c)}),go=(t,n)=>Xn($o(t),n),Lo=(t,n)=>Xn(yo(t),n),To=({p0:t,c1:n,c2:r,p3:o})=>Un([n.x-t.x,2*(t.x+r.x)-4*n.x,o.x-t.x+3*(n.x-r.x)]),Oo=({p0:t,c1:n,c2:r,p3:o})=>Un([n.y-t.y,2*(t.y+r.y)-4*n.y,o.y-t.y+3*(n.y-r.y)]),Zo=t=>Zt([t.p0.x,t.p3.x,...To(t).filter(t=>t>0&&t<1).map(mo.bind(null,t))],[t.p0.y,t.p3.y,...Oo(t).filter(t=>t>0&&t<1).map(vo.bind(null,t))]);function ko(t,n=Number.POSITIVE_INFINITY,r=10){const o=_t(t.c1,t.p0),c=_t(t.c2,t.c1),e=_t(t.p3,t.c2),u=wt(t.p0,t.p3),s=mt(o)+mt(c)+mt(e);if(s-u<2*n)return{best:.5*(s+u),maxError:n};const f=s-u,i=_t(c,o),l=_t(e,c),a=Nt(Et(o,e),.5,c),p=Et(l,i),h=_t(l,i);let M=0;for(const[t,n]of Qo){const r=Nt(h,n*n*.5,a);M+=t*(xt(Nt(h,n,p))/xt(Nt(p,n,r))+xt(Nt(h,-n,p))/xt(Nt(p,-n,r)))}M*=M*M;let x=Qo,m=Math.min(25e-7*M,.03)*f;if(m>n&&(x=jo,m=Math.min(M*M*15e-12,.009)*f,m>n&&(x=qo,m=Math.min(M*M*M*35e-17,.0035)*f,m>n&&r>0))){const[o,c]=Co(t),e=r-1,u=ko(o,.5*n,e),s=ko(c,n-u.maxError,e);return{best:u.best+s.best,maxError:u.maxError+s.maxError}}let v=0;for(const[t,n]of x){const r=Nt(h,n*n*.5,a),o=zt(p,n);v+=t*(mt(Et(r,o))+wt(r,o))}return{best:.75*v,maxError:m}}function Co(t,n=.5){const r=gt(t.p0,t.c1,n),o=gt(t.c1,t.c2,n),c=gt(t.c2,t.p3,n),e=gt(r,o,n),u=gt(o,c,n),s=gt(e,u,n);return[{p0:t.p0,c1:r,c2:e,p3:s},{p0:s,c1:u,c2:c,p3:t.p3}]}function Do({p0:t,c1:n,c2:r,p3:o},c,e=1e-6){let u=t,s=n,f=r;const i=o;let l=0;const a=[];for(const t of c.filter(t=>t>0&&t<1).sort()){if(t<=l+e)continue;const n=(t-l)/(1-l),r=gt(u,s,n),o=gt(s,f,n),c=gt(f,i,n),p=gt(r,o,n),h=gt(o,c,n),M=gt(p,h,n);a.push({p0:u,c1:r,c2:p,p3:M}),u=M,s=h,f=c,l=t}return a.push({p0:u,c1:s,c2:f,p3:i}),a}const Ho=(t,n,r="M",o=!1)=>`${r}${Ot(t.p0,n)}${o?"L":"C"}${Ot(t.c1,n)} ${Ot(t.c2,n)} ${Ot(t.p3,n)}`,Qo=[[.362683783378362,.1834346424956498],[.3137066458778873,.525532409916329],[.2223810344533745,.7966664774136267],[.1012285362903763,.9602898564975363]],jo=[[.1894506104550685,.0950125098376374],[.1826034150449236,.2816035507792589],[.1691565193950025,.4580167776572274],[.1495959888165767,.6178762444026438],[.1246289712555339,.755404408355003],[.0951585116824928,.8656312023878318],[.0622535239386479,.9445750230732326],[.0271524594117541,.9894009349916499]],qo=[[.1279381953467522,.0640568928626056],[.1258374563468283,.1911188674736163],[.1216704729278034,.3150426796961634],[.1155056680537256,.4337935076260451],[.1074442701159656,.5454214713888396],[.0976186521041139,.6480936519369755],[.0861901615319533,.7401241915785544],[.0733464814110803,.820001985973903],[.0592985849154368,.8864155270044011],[.0442774388174198,.9382745520027328],[.0285313886289337,.9747285559713095],[.0123412297999872,.9951872199970213]];function Ao({p0:t,c1:n,c2:r,p3:o}){const c=zr({p0:t,p1:o})??zr({p0:t,p1:n})??zr({p0:t,p1:r});return c?{...c,curve:{p0:at,c1:c.fn(n),c2:c.fn(r),p3:{x:c.fn(o).x,y:0}}}:{scale2:1,curve:{p0:at,c1:at,c2:at,p3:at},fn:n=>_t(n,t)}}function Vo({c1:t,c2:n,p3:r},o){const c=1-o;return Nt(Nt(t,3*o*c,zt(n,3*o*o)),c,zt(r,o*o*o))}function Bo({c1:t,c2:n,p3:r},o){const c=1-o;return(3*c*(t.x*c+n.x*o)+r.x*o*o)*o}function Fo({c1:t,c2:n},r){const o=1-r;return 3*o*(t.y*o+n.y*r)*r}const Go=({c1:t,c2:n,p3:r})=>({p0:zt(t,3),c1:zt(_t(n,t),3),p2:zt(_t(r,n),3)});function Io(t){const n=Go(t),r=Gr(n);return t=>{const o=jr(n,t),c=lr(r,t),e=mt(o);return ht(o,c)/(e*e*e)}}function Jo({c1:t,c2:n,p3:r}){const o=ht(t,n);return Un([o,-3*o-t.y*r.x,3*o+(2*t.y-n.y)*r.x])}function Ko({c1:t,c2:n,p3:r}){return.15*((r.x+n.x)*t.y+(2*r.x-t.x)*n.y)}function Po({c1:t,c2:n,p3:r}){const o=r.x,c=t.x,e=t.y,u=o-n.x,s=n.y;return 1/280*(+(34*e+50*s)*o*o+(15*(c*e-u*s)+9*c*s-33*e*u)*o+9*(e*u+c*s)*(u-c))}function Ro(t,n){const r=mr(t);return{c:xr(t),d:r,aspect:n/mt(r)}}const So=t=>({c:kt(t),d:{x:0,y:t.h.y-t.l.y},aspect:(t.h.x-t.l.x)/(t.h.y-t.l.y)}),Uo=({d:t,aspect:n})=>xt(t)*n;function Wo({c:t,d:n,aspect:r}){const o=Math.abs(n.x),c=Math.abs(n.y),e=.5*(o+c*r),u=.5*(c+o*r);return{l:{x:t.x-e,y:t.y-u},h:{x:t.x+e,y:t.y+u}}}function Xo({c:t,d:n,aspect:r},o){const c=_t(o,t),e=.5*xt(n);return Math.abs(pt(c,n))<=e&&Math.abs(ht(c,n))<=e*r}function Yo({c:t,d:n,aspect:r},o){const c={x:.5*(n.x-n.y*r),y:.5*(n.y+n.x*r)},e={x:.5*(n.x+n.y*r),y:.5*(n.y-n.x*r)};return`M${Ot(Et(t,c),o)}L${Ot(Et(t,e),o)} ${Ot(_t(t,c),o)} ${Ot(_t(t,e),o)}Z`}const tc=(t,n)=>t.l.x<n.h.x&&n.l.x<t.h.x&&t.l.y<n.h.y&&n.l.y<t.h.y,nc=(t,{c:n,r})=>rc(t,n,r*r);function rc({l:t,h:n},r,o){const c=Math.max(0,t.x-r.x,r.x-n.x),e=Math.max(0,t.y-r.y,r.y-n.y);return c*c+e*e<=o}function oc({p0:t,c1:n,c2:r,p3:o},c){const e=zr(c);if(!e)return[];const u={p0:e.fn(t),c1:e.fn(n),c2:e.fn(r),p3:e.fn(o)},s=[];for(const t of Lo(u,0))if(t>=0&&t<=1){const n=mo(u,t);n>=0&&n<=1&&s.push({t1:t,t2:n})}return s}function cc({p0:t,c1:n,c2:r,p3:o},c,e){const{c:u,d:s,aspect:f}=c,i=zr({p0:u,p1:Et(u,s)});if(!i)return[];const l={p0:i.fn(t),c1:i.fn(n),c2:i.fn(r),p3:i.fn(o)},a=.5*f,p={min:0,max:1,maxError:e},h=$o(l),M=yo(l),x=[];for(const[t,n]of Yn(M,-a,p))x.push({t1:t,d1:-n,y:!0});for(const[t,n]of Yn(M,a,p))x.push({t1:t,d1:n,y:!0});for(const[t,n]of Yn(h,-.5,p))x.push({t1:t,d1:-n,y:!1});for(const[t,n]of Yn(h,.5,p))x.push({t1:t,d1:n,y:!1});if(!x.length)return[];const m=[];let v=-1,w=l.p0.x>-.5&&l.p0.x<.5,$=l.p0.y>-a&&l.p0.y<a;for(const{t1:t,d1:n,y:r}of x.sort((t,n)=>t.t1-n.t1)){const o=n<0;if(r){if(o===$)continue;if($=o,!w)continue}else{if(o===w)continue;if(w=o,!$)continue}t!==v?m.push({t1:t,d1:n}):m.pop(),v=t}return m}const ec=(t,n,r)=>uc(t)(n.c,n.r*n.r,r);function uc(t){const n=Ao(t),r=fc(n.curve);return(t,o,c)=>r(n.fn(t),o/n.scale2,c)}const sc=(t,n,r)=>fc(t)(n.c,n.r*n.r,r);function fc(t){const n=Zo(t),{c1:r,c2:o,p3:c}=t,e=9*xt(r),u=18*pt(r,o),s=6*pt(r,c)+9*xt(o),f=6*pt(o,c),i=e-u+s-f+xt(c),l=-4*e+3*u-2*s+f,a=6*e-3*u+s,p=-4*e+u;return(t,u,s)=>{if(!rc(n,t,u))return[];const f=6*pt(r,t),h=6*pt(o,t);return rr([xt(t),-f,e+2*f-h,p-f+h-2*pt(c,t),a,l,i],u,{min:0,max:1,maxError:s}).map(([t,n])=>({t1:t,d1:n}))}}function ic(t,n){const r=cc(t,n);if(r.length>0){const n=r[0].d1>0?1:0;return Do(t,r.map(t=>t.t1),0).filter((t,r)=>(1&r)===n)}return Xo(n,t.p0)?[]:[t]}function lc(t,n,r){const o=n.r*n.r,c=r(n.c,o);if(c.length>0){const n=c[0].d1>0?1:0;return Do(t,c.map(t=>t.t1),0).filter((t,r)=>(1&r)===n)}return Hn(n,t.p0)?[]:[t]}function ac(t){if(t.length<=1)return 0;let n=0,r=t[0];for(let o=1;o<t.length;++o){const c=t[o];n+=(c.x-r.x)*(c.y+r.y),r=c}const o=t[0];return n+=(o.x-r.x)*(o.y+r.y),.5*n}function pc(t,{x:n,y:r}){let o=0,c=t[t.length-1];for(const e of t){const t=e.y-c.y;if((c.y>=r||e.y>=r)&&(c.y<=r||e.y<=r)&&t){const u=(c.x-n)*t-(c.y-r)*(e.x-c.x);u&&t>0==u>0&&(c.y===r||e.y===r?o-=Math.sign(t):o-=2*Math.sign(t))}c=e}return 0!==o}function hc(t){if(!t.length)return[];let n=0,r=t[0];const o=[{...r,d:0}];for(let c=1;c<t.length;++c){const e=t[c];n+=wt(r,e),o.push({...e,d:n}),r=e}return o}const Mc=(t,n,r="M")=>r+t.map(t=>Ot(t,n)).join("L"),xc=t=>t.map(t=>({x:t.v[0],y:t.v[1],d:t.d})),mc=t=>t.map(({x:t,y:n,d:r})=>({v:[t,n],m:1,n:2,d:r}));function vc({v:[t,n,r,o,c,e,u,s,f,i,l,a,p,h,M,x]},{v:[m,v,w]}){const $=1/(m*p+v*h+w*M+x);return At((m*t+v*n+w*r+o)*$,(m*c+v*e+w*u+s)*$,(m*f+v*i+w*l+a)*$)}function wc(t,n,o){const c=Wt(rn(t,n)),e=Wt(Jt(o,c)),u=Jt(c,e);return r([[e.v[0],u.v[0],c.v[0],Gt(t,e)],[e.v[1],u.v[1],c.v[1],Gt(t,u)],[e.v[2],u.v[2],c.v[2],Gt(t,c)],[0,0,0,1]])}const $c=({v:[t,n,o]})=>r([[0,-o,n],[o,0,-t],[-n,t,0]]);function dc(t,n){const r=1+Gt(t,n);if(r<1e-6)return et;const o=$c(Jt(t,n));return m(et,m(o,$(E(o,o),1/r)))}function yc(t){if(!t.length)return[];let n=0,r=t[0];const o=[{...r,d:0}];for(let c=1;c<t.length;++c){const e=t[c];n+=Ut(r,e),o.push({...e,d:n}),r=e}return o}const bc=([t,r])=>n([t,-r,r,t],2,2),Ec=([t,n],[r,o])=>[t+r,n+o],zc=([t,n],r)=>[t+r,n],Nc=([t,n],[r,o])=>[t-r,n-o],_c=(t,[n,r])=>[t-n,-r],gc=([t,n])=>[-t,-n],Lc=([t,n])=>[t,-n],Tc=([t,n],[r,o])=>[t*r-n*o,t*o+r*n],Oc=([t,n],r)=>[t*r,n*r];function Zc([t,n],[r,o]){const c=r*r+o*o;return[(t*r+n*o)/c,(n*r-t*o)/c]}function kc(t,[n,r]){const o=n*n+r*r;return[t*n/o,-t*r/o]}function Cc([t,n]){const r=t*t+n*n;return[t/r,-n/r]}function Dc([t,n]){const r=Math.exp(t);return[r*Math.cos(n),r*Math.sin(n)]}function Hc(t){switch(nt(t),t.m){case 0:return[];case 1:return Ac(t);case 2:return Bc(t);case 3:return Gc(t);case 4:return Jc(t);default:throw new Error("unsupported matrix size")}}const Qc={v:[],m:1,n:0},jc={v:[1],m:1,n:1};function qc(t,n){switch(nt(t),t.m){case 0:return Qc;case 1:return jc;case 2:return Fc(t,n);case 3:return Ic();case 4:return Kc();default:throw new Error("unsupported matrix size")}}const Ac=({v:[t]})=>[t],Vc=()=>jc,Bc=t=>Un([A(t),-q(t),1]),Fc=({v:[t,n,r,o]},c)=>Math.abs(r)>Math.abs(n)?At(c-o,r):At(n,c-t),Gc=t=>Xn([-J(t),V(t),-I(t),1]),Ic=(t,n)=>{throw new Error("TODO")},Jc=t=>tr([W(t),-K(t),V(t),-U(t),1]),Kc=(t,n)=>{throw new Error("TODO")},Pc=1.2533141373155001,Rc=.7978845608028654,Sc=1.1283791670955126;function Uc(t){const n=Math.sign(t),r=1/(1+(t=Math.abs(t))*(ne+t*re));let o=r,c=0;for(const t of te)c+=o*t,o*=r;return n*(1-c*Math.exp(-t*t))}const Wc=t=>_c(1,Yc(t));function Xc(t){if(t<2)return 1-Uc(t);if(!Number.isFinite(t))return 0;const n=t*t,r=2*n;let o=182/(r+29);return o=132/(r+25-o),o=90/(r+21-o),o=56/(r+17-o),o=30/(r+13-o),o=12/(r+9-o),o=2/(r+5-o),Sc*t/((r+1-o)*Math.exp(n))+(1-Math.sign(t))}function Yc(t){const n=Tc(t,t),r=Oc(n,2);let o=kc(182,zc(r,29));return o=kc(132,Nc(zc(r,25),o)),o=kc(90,Nc(zc(r,21),o)),o=kc(56,Nc(zc(r,17),o)),o=kc(30,Nc(zc(r,13),o)),o=kc(12,Nc(zc(r,9),o)),o=kc(2,Nc(zc(r,5),o)),zc(Zc(Oc(t,t[0]<0?-Sc:Sc),Tc(Nc(zc(r,1),o),Dc(n))),1-Math.sign(t[0]))}const te=[.316879890481381,-.138329314150635,1.08680830347054,-1.11694155120396,1.20644903073232,-.393127715207728,.0382613542530727],ne=.406742016006509,re=.0072279182302319;function oe(t){const n=Math.sign(t);if((t=Math.abs(t))<1.5*Pc){const r=t*t,o=r*r;let c=r*t,e=c/3;for(let t=1;t<8;++t)c*=-o/(2*t*(2*t+1)),e+=c/(4*t+3);return n*e}return n*Pc*Tc([.5,.5],Wc([Math.SQRT1_2*t,-Math.SQRT1_2*t]))[1]}function ce(t){const n=Math.sign(t);if((t=Math.abs(t))<1.5*Pc){const r=t*t,o=r*r;let c=t,e=t;for(let t=1;t<8;++t)c*=-o/(2*t*(2*t-1)),e+=c/(4*t+1);return n*e}return n*Pc*Tc([.5,.5],Wc([Math.SQRT1_2*t,-Math.SQRT1_2*t]))[0]}const ee=t=>oe(t*Pc)*Rc,ue=t=>ce(t*Pc)*Rc,se=(t,n=0,r=0,o=0)=>({w:t,x:n,y:r,z:o});function fe(t,n,r=1){const o=Math.sin(.5*n)*r;return se(Math.cos(.5*n)*r,t.v[0]*o,t.v[1]*o,t.v[2]*o)}function ie({v:[t,n,r,o,c,e,u,s,f]}){const i=t+c+f;if(i>=0){const t=Math.sqrt(1+i),c=.5/t;return{w:.5*t,x:(s-e)*c,y:(r-u)*c,z:(o-n)*c}}if(t>c&&t>f){const i=Math.sqrt(1+t-c-f),l=.5/i;return{w:(s-e)*l,x:.5*i,y:(o+n)*l,z:(r+u)*l}}if(c>f){const i=Math.sqrt(1-t+c-f),l=.5/i;return{w:(r-u)*l,x:(o+n)*l,y:.5*i,z:(s+e)*l}}{const i=Math.sqrt(1-t-c+f),l=.5/i;return{w:(o-n)*l,x:(r+u)*l,y:(s+e)*l,z:.5*i}}}function le({v:[t,n,o,c,e,u,s,f,i]}){const l=f-u,a=o-s,p=c-n,h=c+n,M=o+s,x=f+u,m=r([[t+e+i,l,a,p],[l,t-e-i,h,M],[a,h,e-t-i,x],[p,M,x,i-t-e]]);for(const t of Jc(m));const v=Kc();return ge(se(...v.v))}function ae(t,{precision:n=3}={}){return t?`${t.w.toFixed(n)} + ${t.x.toFixed(n)}i + ${t.y.toFixed(n)}j + ${t.z.toFixed(n)}k`:"(null)"}function pe({w:t,x:n,y:o,z:c}){const e=n*n,u=n*o,s=n*c,f=n*t,i=o*o,l=o*c,a=o*t,p=c*c,h=c*t,M=2/(e+i+p+t*t);return r([[1-(i+p)*M,(u-h)*M,(s+a)*M],[(u+h)*M,1-(e+p)*M,(l-f)*M],[(s-a)*M,(l+f)*M,1-(e+i)*M]])}function he({w:t,x:n,y:o,z:c}){const e=n*n,u=n*o,s=n*c,f=n*t,i=o*o,l=o*c,a=o*t,p=c*c,h=c*t;return r([[1-2*(i+p),2*(u-h),2*(s+a)],[2*(u+h),1-2*(e+p),2*(l-f)],[2*(s-a),2*(l+f),1-2*(e+i)]])}const Me=(t,n)=>({w:t.w*n.w-t.x*n.x-t.y*n.y-t.z*n.z,x:t.w*n.x+t.x*n.w+t.y*n.z-t.z*n.y,y:t.w*n.y-t.x*n.z+t.y*n.w+t.z*n.x,z:t.w*n.z+t.x*n.y-t.y*n.x+t.z*n.w}),xe=(t,n)=>Me(t,je(n)),me=(t,n)=>({w:t.w+n.w,x:t.x+n.x,y:t.y+n.y,z:t.z+n.z}),ve=(t,n,r)=>({w:t.w*n+r.w,x:t.x*n+r.x,y:t.y*n+r.y,z:t.z*n+r.z}),we=(t,n)=>({w:t.w-n.w,x:t.x-n.x,y:t.y-n.y,z:t.z-n.z}),$e=({w:t,x:n,y:r,z:o},c)=>({w:t*c,x:n*c,y:r*c,z:o*c}),de=({w:t,x:n,y:r,z:o})=>Math.hypot(t,n,r,o),ye=({w:t,x:n,y:r,z:o})=>t*t+n*n+r*r+o*o,be=({x:t,y:n,z:r})=>Math.hypot(t,n,r),Ee=({x:t,y:n,z:r})=>t*t+n*n+r*r,ze=(t,n)=>t.w*n.w+t.x*n.x+t.y*n.y+t.z*n.z,Ne=(t,n)=>de(we(t,n)),_e=(t,n)=>ye(we(t,n)),ge=(t,n=1)=>$e(t,n/de(t)),Le=(t,n)=>$e(t,Math.sign(ze(t,n))),Te=(t,n,r)=>({w:t.w+(n.w-t.w)*r,x:t.x+(n.x-t.x)*r,y:t.y+(n.y-t.y)*r,z:t.z+(n.z-t.z)*r}),Oe=(t,n,r)=>Te(Le(t,n),n,r),Ze=(t,n,r)=>ge(Te(t,n,r)),ke=(t,n,r)=>ge(Oe(t,n,r));function Ce(t,n,r){const o=ze(t,n);if(Math.abs(o)>=1-Number.EPSILON)return r>.5?n:t;const c=Math.acos(o),e=1/Math.sin(c),u=Math.sin((1-r)*c)*e,s=Math.sin(r*c)*e;return{w:t.w*u+n.w*s,x:t.x*u+n.x*s,y:t.y*u+n.y*s,z:t.z*u+n.z*s}}function De(t,n,r){const o=ze(t,n),c=Math.abs(o);if(c>=1-Number.EPSILON)return n;const e=Math.acos(c),u=1/Math.sin(e),s=Math.sin((1-r)*e)*u*Math.sign(o),f=Math.sin(r*e)*u;return{w:t.w*s+n.w*f,x:t.x*s+n.x*f,y:t.y*s+n.y*f,z:t.z*s+n.z*f}}const He=(t,n,r,o,c)=>Ce(Ce(t,o,c),Ce(n,r,c),2*c*(1-c)),Qe=({w:t,x:n,y:r,z:o})=>se(t,-n,-r,-o),je=t=>$e(Qe(t),1/ye(t));function qe(t){const n=be(t),r=Math.exp(t.w),o=r*(n?Math.sin(n)/n:1);return se(Math.cos(n)*r,t.x*o,t.y*o,t.z*o)}function Ae(t){const n=de(t),r=be(t),o=r?Math.acos(t.w/n)/r:0;return se(Math.log(n),t.x*o,t.y*o,t.z*o)}function Ve(t,n,r,o,c=-1){const e=o*o,u=c>=0;return o=>{t?t(o):n(o,o,!1);let s,f=o,i=o;const l=()=>{s=void 0,n(f,i,!1),f=i};return{move:(t,r=!1)=>{const o=vt(f,t);o>e||r?(s&&(clearTimeout(s),s=void 0),n(f,t,r),f=t):u&&(i=t,o&&!s&&(s=setTimeout(l,c)))},cancel:()=>{clearTimeout(s),r?.()}}}}function Be(t,n,r,o,c,e,u,s,f){const i=s*s,l=f*f,a=[];let p,h;return Ve(n=>{a.length=0,a.push({...n,d:0}),p=void 0,h=Fe(a,void 0),t(n)},(t,c,e)=>{const s=a[a.length-1];a.push({...c,d:s.d+wt(s,c)});let f=Fe(a,p);(f.d<i||h.n<2||f.d<h.d)&&(h=f),(f.d>l||a.length>u)&&(n(h.c,h.n),a.splice(0,h.n-1),p=h.c.c2,f=Fe(a,p),h=f),e?(a.length>1&&n(f.c,f.n),o()):r(f.c)},c,e,1e3)}function Fe(t,n){if(!t.length)throw new Error("nothing to fit");const r=t[0],o=t[t.length-1],c=so(t,n);if(!c||t.length<2)return{n:t.length,c:{p0:r,c1:r,c2:o,p3:o},d:Number.POSITIVE_INFINITY};const e=Ao(c);let u=0;const s=o.d-r.d;let f=e.fn(r);for(let n=1;n<t.length;++n){const r=e.fn(t[n]);u+=(r.x-f.x)*(f.y+r.y)/2,f=r}const i=Math.sqrt(e.scale2),l=(u-Ko(e.curve))*i,a=s-ko(c,.01*i).best;return{n:t.length,c,d:l*l+a*a}}class Ge{constructor(){this.u={i:void 0},this.u.p=this.u}push(t){const n={M:t,i:void 0};this.u.p.i=n,this.u.p=n}concat(t){t.u.i&&(this.u.p.i=t.u.i,this.u.p=t.u.p)}forEach(t){let n=this.u;for(;;){const r=n.i;if(!r)return;let o=r;t(r.M,{previous:n.M,next:r.i?.M,replace:(...t)=>{let r=o.i,c=n;const e=t.length;if(e){r=c={M:t[e-1],i:r};for(let n=e-1;n-- >0;)r={M:t[n],i:r}}this.u.p===o&&(this.u.p=c),n.i=r,o=c}}),n=o}}}export{rt as MAT1IDENT,ot as MAT2IDENT,ct as MAT2ROT90,et as MAT3IDENT,ut as MAT4IDENT,at as PT0,Ge as SingleLinkedList,Ct as aaBoxArea,Dt as aaBoxContains,Zt as aaBoxFromXY,kt as aaBoxMidpoint,Ht as aaBoxSVG,Ec as addZ,zc as addZR,jr as bezier2At,to as bezier2Bisect,Xr as bezier2Bounds,Gr as bezier2Derivative,Or as bezier2FromBezier,Hr as bezier2FromLine,Zr as bezier2FromPolylinePtsLeastSquares,kr as bezier2FromPolylinePtsLeastSquaresFixEnds,Tr as bezier2FromPts,Yr as bezier2LengthEstimate,Cr as bezier2M,Dr as bezier2MInv,Jr as bezier2NormalAt,Br as bezier2PolynomialX,Fr as bezier2PolynomialY,Kr as bezier2RMSDistance,ro as bezier2SVG,no as bezier2Split,Ir as bezier2TangentAt,Pr as bezier2Translate,Rr as bezier2TsAtXEq,Sr as bezier2TsAtYEq,qr as bezier2XAt,Ur as bezier2XTurningPointTs,Ar as bezier2YAt,Wr as bezier2YTurningPointTs,xo as bezier3At,Co as bezier3Bisect,Zo as bezier3Bounds,bo as bezier3Derivative,eo as bezier3FromBezier,po as bezier3FromBezier2,ho as bezier3FromLine,uo as bezier3FromPolylinePtsLeastSquares,so as bezier3FromPolylinePtsLeastSquaresFixEnds,co as bezier3FromPts,ao as bezier3FromQuad,ko as bezier3LengthEstimate,io as bezier3M,lo as bezier3MInv,zo as bezier3NormalAt,Ao as bezier3Normalise,$o as bezier3PolynomialX,yo as bezier3PolynomialY,No as bezier3RMSDistance,Ho as bezier3SVG,Do as bezier3Split,Eo as bezier3TangentAt,_o as bezier3Translate,go as bezier3TsAtXEq,Lo as bezier3TsAtYEq,mo as bezier3XAt,To as bezier3XTurningPointTs,vo as bezier3YAt,Oo as bezier3YTurningPointTs,pn as bezierAt,hn as bezierAtMulti,Ln as bezierBisect,En as bezierDerivative,vn as bezierElevateOrder,wn as bezierElevateOrderTo,gn as bezierFrenetNormalAt,Qr as bezierFromBezier2,Mo as bezierFromBezier3,un as bezierFromEndpoints,ir as bezierFromLine,fn as bezierFromPolylineVertsLeastSquares,ln as bezierFromPolylineVertsLeastSquaresFixEnds,sn as bezierFromQuad,en as bezierFromVecs,dn as bezierLowerOrder,yn as bezierM,bn as bezierMInv,Nn as bezierNormalAt,mn as bezierOrder,Mn as bezierPolynomials,Zn as bezierSVG,Tn as bezierSplit,zn as bezierTangentAt,_n as bezierTranslate,qt as binomial,kn as circleArea,Dn as circleBounds,Cn as circleCircumference,Hn as circleContains,Qn as circleSVG,bc as complexCompanionMat,Lc as conjugateZ,kc as divRZ,Zc as divZ,Uc as erf,Wc as erfZ,Xc as erfc,Yc as erfcZ,Dc as expZ,ue as fresnelCIntegral,ee as fresnelSIntegral,ec as intersectBezier3Circle,uc as intersectBezier3CircleFn,oc as intersectBezier3Line,cc as intersectBezier3Rect,Lr as intersectLineLine,sc as intersectNBezier3Circle,fc as intersectNBezier3CircleFn,Cc as invZ,tc as isOverlapAABox,nc as isOverlapAABoxCircle,rc as isOverlapAABoxCircleR2,lr as lineAt,Nr as lineBisect,br as lineBounds,mr as lineDerivative,fr as lineFromBezier,sr as lineFromPts,Er as lineLength,xr as lineMidpoint,wr as lineNormal,hr as linePolynomialX,Mr as linePolynomialY,gr as lineSVG,_r as lineSplit,vr as lineTangent,$r as lineTranslate,dr as lineTsAtXEq,yr as lineTsAtYEq,ar as lineXAt,pr as lineYAt,D as mat1Determinant,Ac as mat1Eigenvalues,Vc as mat1Eigenvector,H as mat1Inverse,Q as mat1LeftInverse,j as mat1RightInverse,C as mat1Trace,A as mat2Determinant,Bc as mat2Eigenvalues,Fc as mat2Eigenvector,B as mat2Inverse,F as mat2LeftInverse,G as mat2RightInverse,q as mat2Trace,J as mat3Determinant,Gc as mat3Eigenvalues,Ic as mat3Eigenvector,pe as mat3FromQuat,he as mat3FromUnitQuat,P as mat3Inverse,R as mat3LeftInverse,S as mat3RightInverse,I as mat3Trace,W as mat4Determinant,Jc as mat4Eigenvalues,Kc as mat4Eigenvector,X as mat4Inverse,Y as mat4LeftInverse,tt as mat4RightInverse,U as mat4Trace,m as matAdd,v as matAddColumnwise,x as matBinaryOp,T as matDeterminant,Hc as matEigenvalues,qc as matEigenvector,p as matElementNorm,h as matElementNorm2,r as matFrom,c as matFromArray,e as matFromArrayFn,o as matFromDiag,wc as matFromEyeTargetUp,ft as matFromPts,dc as matFromRotationBetween,Bt as matFromVecArray,s as matIdent,O as matInverse,Z as matLeftInverse,y as matLerp,b as matMid,g as matMinor,E as matMul,N as matMulABTranspose,z as matMulATransposeB,f as matPadIdent,i as matPrint,vc as matProjectVec3,l as matReshape,k as matRightInverse,$ as matScale,d as matScaleAdd,$c as matSkewSymmetricCrossProduct,w as matSub,V as matSumDiagDeterminant2,K as matSumDiagDeterminant3,_ as matTrace,a as matTranspose,M as matUnaryOp,L as matWindow,u as matZero,Ve as movementThrottle,Tc as mulZ,Oc as mulZR,Ko as nBezier3Area,Vo as nBezier3At,Io as nBezier3Curvature,Go as nBezier3Derivative,Jo as nBezier3InflectionTs,Po as nBezier3Moment,Bo as nBezier3XAt,Fo as nBezier3YAt,gc as negZ,Be as penTool,pc as polygonContains,ac as polygonSignedArea,xc as polyline2DFromPolyline,hc as polyline2DFromPts,Mc as polyline2DSVG,mc as polylineFromPolyline2D,yc as polylineFromVecs,Sn as polynomial2Roots,Un as polynomial3Roots,Wn as polynomial3SignedRoots,Xn as polynomial4Roots,Yn as polynomial4SignedRoots,tr as polynomial5Roots,nr as polynomial5SignedRoots,rr as polynomial7SignedRoots,Fn as polynomialAdd,qn as polynomialAt,jn as polynomialCompanionMat,Vn as polynomialDerivative,Vr as polynomialFromBezier2Values,wo as polynomialFromBezier3Values,xn as polynomialFromBezierValues,Bn as polynomialIntegral,An as polynomialMul,Pn as polynomialRoots,In as polynomialScale,Jn as polynomialShift,Gn as polynomialSub,Kn as polynomialWithSolutions,Et as ptAdd,yt as ptAngle,ht as ptCross,wt as ptDist,vt as ptDist2,pt as ptDot,it as ptFromVec,mt as ptLen,xt as ptLen2,gt as ptLerp,Nt as ptMad,Lt as ptMid,zt as ptMul,$t as ptNorm,Mt as ptReflect,dt as ptRot90,Ot as ptSVG,bt as ptSignedAngle,_t as ptSub,Tt as ptTransform,st as ptsFromMat,me as quatAdd,Qe as quatConjugate,Ne as quatDist,_e as quatDist2,xe as quatDiv,ze as quatDot,qe as quatExp,se as quatFrom,le as quatFromMat3BestFit,ie as quatFromMat3Exact,fe as quatFromRotationAround,je as quatInv,Te as quatLerp,Oe as quatLerpShortestPath,ke as quatLerpShortestPathUnit,Ze as quatLerpUnit,Ae as quatLog,ve as quatMad,Me as quatMul,Le as quatNearest,de as quatNorm,ye as quatNorm2,ae as quatPrint,$e as quatScale,Ce as quatSlerp,De as quatSlerpShortestPath,He as quatSquad,we as quatSub,ge as quatUnit,be as quatVectorNorm,Ee as quatVectorNorm2,Uo as rectArea,Wo as rectBounds,Xo as rectContains,So as rectFromAABox,Ro as rectFromLine,Yo as rectSVG,_c as subRZ,Nc as subZ,lc as subtractBezier3Circle,ic as subtractBezier3Rect,ce as unscaledFresnelCIntegral,oe as unscaledFresnelSIntegral,It as vec2Cross,Jt as vec3Cross,Yt as vecAdd,Xt as vecAngle,Vt as vecArrayFromMat,Ut as vecDist,St as vecDist2,Gt as vecDot,At as vecFrom,lt as vecFromPt,Rt as vecLen,Pt as vecLen2,on as vecLerp,nn as vecMad,cn as vecMid,tn as vecMul,Wt as vecNorm,Ft as vecPrint,Kt as vecReflect,rn as vecSub,t as zeros};
|
|
1
|
+
const t=t=>new Array(t).fill(0),n=(t,n,r)=>({v:t,m:n,n:r}),r=t=>{const r=t.flat();if(r.length%t.length)throw new Error("inconsistent matrix size");return n(r,t.length,t[0]?.length??0)},o=r=>{const o=r.length,c=t(o*o);for(let t=0;t<o;++t)c[t*(o+1)]=r[t];return n(c,o,o)};function c(t,r){if(t.length%r)throw new Error("invalid array length for matrix");return n(t,t.length/r,r)}const e=(t,n)=>r(t.map(n)),u=(r,o)=>n(t(r*o),r,o),s=r=>{const o=t(r*r);for(let t=0;t<r;++t)o[t*(r+1)]=1;return n(o,r,r)},f=({v:t,m:r,n:o},c)=>{if(r>c||o>c)throw new Error("matrix too large");const e=[];for(let n=0;n<c;++n)for(let u=0;u<c;++u)e.push(n<r&&u<o?t[n*o+u]:n===u?1:0);return n(e,c,c)};function i(t,{precision:n=3,width:r=n+5}={}){if(!t)return"(null)";const{v:o,m:c,n:e}=t;let u=[];for(let t=0;t<c;++t){const c=[];for(let u=0;u<e;++u)c.push(o[t*e+u].toFixed(n).padStart(r," "));u.push(c.join(" "))}return`[ ${u.join("\n ")} ] (${c}x${e})`}function l({v:t,m:r,n:o},c){const e=r*o;if(e%c)throw new Error("invalid matrix reshaping");return n(t,e/c,c)}function a({v:t,m:r,n:o}){if(r<=1||o<=1)return n(t,o,r);const c=[];for(let n=0;n<o;++n)for(let e=0;e<r;++e)c.push(t[e*o+n]);return n(c,o,r)}const p=({v:t})=>Math.hypot(...t),h=({v:t})=>t.reduce((t,n)=>t+n*n,0),M=({v:t,m:r,n:o},c)=>n(t.map(c),r,o);function x(t,r,o,c="+"){return((t,n,r)=>{if(t.m!==n.m||t.n!==n.n)throw new Error(`invalid matrix operation (${t.m} x ${t.n}) ${r} (${n.m} x ${n.n})`)})(t,r,c),n(t.v.map((t,n)=>o(t,r.v[n],n)),t.m,t.n)}const m=(t,n)=>x(t,n,(t,n)=>t+n,"+");function v({v:t,m:r,n:o},c){if(o!==c.n)throw new Error("invalid matrix operation");const e=[];for(let n=0;n<r;++n)for(let r=0;r<o;++r)e.push(t[n*o+r]+c.v[r]);return n(e,r,o)}const w=(t,n)=>x(t,n,(t,n)=>t-n,"-"),d=(t,n)=>M(t,t=>t*n),$=(t,n,r)=>x(t,r,(t,r)=>t*n+r);function y(t,n,r){const o=1-r;return x(t,n,(t,n)=>t*o+n*r)}const b=(t,n)=>x(t,n,(t,n)=>.5*(t+n));function E(t,r){const o=t.m,c=r.n,e=t.n;if(r.m!==e)throw new Error(`invalid matrix multiplication (${t.m} x ${t.n}) * (${r.m} x ${r.n})`);const u=[];for(let n=0;n<o;++n)for(let o=0;o<c;++o){let s=0;for(let u=0;u<e;++u)s+=t.v[n*e+u]*r.v[u*c+o];u.push(s)}return n(u,o,c)}function z(t,r){const o=t.n,c=r.n,e=t.m;if(r.m!==e)throw new Error(`invalid matrix multiplication (${t.n} x ${t.m}) * (${r.m} x ${r.n})`);const u=[];for(let n=0;n<o;++n)for(let s=0;s<c;++s){let f=0;for(let u=0;u<e;++u)f+=t.v[u*o+n]*r.v[u*c+s];u.push(f)}return n(u,o,c)}function N(t,r){const o=t.m,c=r.m,e=t.n;if(r.n!==e)throw new Error(`invalid matrix multiplication (${t.m} x ${t.n}) * (${r.n} x ${r.m})`);const u=[];for(let n=0;n<o;++n)for(let o=0;o<c;++o){let c=0;for(let u=0;u<e;++u)c+=t.v[n*e+u]*r.v[o*e+u];u.push(c)}return n(u,o,c)}function _(t){nt(t);const{m:n,v:r}=t,o=n+1;let c=0;for(let t=0;t<n;++t)c+=r[t*o];return c}function g({v:t,m:r,n:o},c,e){if(c<0||c>=r)throw new Error(`row ${c} out of bounds`);if(e<0||e>=o)throw new Error(`column ${e} out of bounds`);const u=[];for(let n=0;n<r-1;++n){const r=(n+(n>=c?1:0))*o;for(let n=0;n<o-1;++n)u.push(t[r+n+(n>=e?1:0)])}return n(u,r-1,o-1)}function L({v:t,m:r,n:o},c,e,u,s){if(c<0||c+u>r||u<0)throw new Error(`row range ${c}-${c+u} out of bounds`);if(e<0||e+s>=o||s<0)throw new Error(`column range ${e}-${e+s} out of bounds`);const f=[],i=c*o+e;for(let n=0;n<u;++n)for(let r=0;r<s;++r)f.push(t[i+n*o+r]);return n(f,u,s)}function T(t){switch(nt(t),t.m){case 0:return 0;case 1:return D(t);case 2:return A(t);case 3:return J(t);case 4:return W(t);default:{const{m:n,n:r,v:o}=t;let c=1;const e=[];for(let t=0;t<n;++t)e.push(o.slice(t*r,t*r+r));for(let t=0;t<n;++t){if(!e[t][t])for(let r=t+1;;++r){if(r>=n)return 0;if(e[r][t]){c=-c,[e[t],e[r]]=[e[r],e[t]];break}}const r=e[t],o=r[t];for(let c=t+1;c<n;++c)r[c]/=o;c*=o;for(let o=0;o<n;++o)if(o!==t){const c=e[o],u=c[t];if(u)for(let o=t+1;o<n;++o)c[o]-=r[o]*u}}return c}}}function O(t){switch(nt(t),t.m){case 0:return t;case 1:return H(t);case 2:return B(t);case 3:return P(t);case 4:return X(t);default:throw new Error("unsupported matrix size")}}function Z(t){if(t.m===t.n)return O(t);const n=t.m<t.n?null:O(z(t,t));return n?N(n,t):null}function k(t){if(t.m===t.n)return O(t);const n=t.n<t.m?null:O(N(t,t));return n?z(t,n):null}const C=({v:t})=>t[0],D=({v:[t]})=>t;function H({v:[t]}){return Math.abs(t)<Number.EPSILON?null:{v:[1/t],m:1,n:1}}function Q(t){if(t.m===t.n)return H(t);const n=t.m<t.n?null:H(z(t,t));return n?N(n,t):null}function j(t){if(t.m===t.n)return H(t);const n=t.n<t.m?null:H(N(t,t));return n?z(t,n):null}const q=({v:t})=>t[0]+t[3],A=({v:[t,n,r,o]})=>t*o-r*n;function V(t){nt(t);const{v:n,n:r}=t;let o=0;for(let t=1;t<r;++t)for(let c=0;c<t;++c)o+=n[c*r+c]*n[t*r+t]-n[c*r+t]*n[t*r+c];return o}function B({v:[t,n,r,o]}){const c=t*o-r*n;if(Math.abs(c)<1e-8)return null;const e=1/c;return{v:[o*e,-n*e,-r*e,t*e],m:2,n:2}}function F(t){if(t.m===t.n)return B(t);const n=t.m<t.n?null:B(z(t,t));return n?N(n,t):null}function G(t){if(t.m===t.n)return B(t);const n=t.n<t.m?null:B(N(t,t));return n?z(t,n):null}const I=({v:t})=>t[0]+t[4]+t[8],J=({v:[t,n,r,o,c,e,u,s,f]})=>t*(f*c-e*s)+n*(e*u-f*o)+r*(s*o-c*u);function K(t){nt(t);const{v:n,n:r}=t;let o=0;for(let t=2;t<r;++t)for(let c=1;c<t;++c)for(let e=0;e<c;++e)o+=n[e*r+e]*(n[t*r+t]*n[c*r+c]-n[c*r+t]*n[t*r+c])+n[e*r+c]*(n[c*r+t]*n[t*r+e]-n[t*r+t]*n[c*r+e])+n[e*r+t]*(n[t*r+c]*n[c*r+e]-n[c*r+c]*n[t*r+e]);return o}function P({v:[t,n,r,o,c,e,u,s,f]}){const i=f*c-e*s,l=e*u-f*o,a=s*o-c*u,p=t*i+n*l+r*a;if(Math.abs(p)<1e-8)return null;const h=1/p;return{v:[i*h,(r*s-f*n)*h,(e*n-r*c)*h,l*h,(f*t-r*u)*h,(r*o-e*t)*h,a*h,(n*u-s*t)*h,(c*t-n*o)*h],m:3,n:3}}function R(t){if(t.m===t.n)return P(t);const n=t.m<t.n?null:P(z(t,t));return n?N(n,t):null}function S(t){if(t.m===t.n)return P(t);const n=t.n<t.m?null:P(N(t,t));return n?z(t,n):null}const U=({v:t})=>t[0]+t[5]+t[10]+t[15],W=({v:[t,n,r,o,c,e,u,s,f,i,l,a,p,h,M,x]})=>(t*e-n*c)*(l*x-a*M)-(t*u-r*c)*(i*x-a*h)+(t*s-o*c)*(i*M-l*h)+(n*u-r*e)*(f*x-a*p)-(n*s-o*e)*(f*M-l*p)+(r*s-o*u)*(f*h-i*p);function X({v:[t,n,r,o,c,e,u,s,f,i,l,a,p,h,M,x]}){const m=t*e-n*c,v=t*u-r*c,w=t*s-o*c,d=n*u-r*e,$=n*s-o*e,y=r*s-o*u,b=f*h-i*p,E=f*M-l*p,z=f*x-a*p,N=i*M-l*h,_=i*x-a*h,g=l*x-a*M,L=m*g-v*_+w*N+d*z-$*E+y*b;if(Math.abs(L)<Number.EPSILON)return null;const T=1/L;return{v:[(e*g-u*_+s*N)*T,(r*_-n*g-o*N)*T,(h*y-M*$+x*d)*T,(l*$-i*y-a*d)*T,(u*z-c*g-s*E)*T,(t*g-r*z+o*E)*T,(M*w-p*y-x*v)*T,(f*y-l*w+a*v)*T,(c*_-e*z+s*b)*T,(n*z-t*_-o*b)*T,(p*$-h*w+x*m)*T,(i*w-f*$-a*m)*T,(e*E-c*N-u*b)*T,(t*N-n*E+r*b)*T,(h*v-p*d-M*m)*T,(f*d-i*v+l*m)*T],m:4,n:4}}function Y(t){if(t.m===t.n)return X(t);const n=t.m<t.n?null:X(z(t,t));return n?E(n,a(t)):null}function tt(t){if(t.m===t.n)return X(t);const n=t.n<t.m?null:X(E(t,a(t)));return n?z(t,n):null}function nt(t){if(t.m!==t.n)throw new Error(`matrix is not square (${t.m} x ${t.n})`)}const rt={v:[1],m:1,n:1},ot={v:[1,0,0,1],m:2,n:2},ct={v:[0,1,-1,0],m:2,n:2},et={v:[1,0,0,0,1,0,0,0,1],m:3,n:3},ut={v:[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],m:4,n:4};function st({v:t,m:n}){const r=[];for(let o=0;o<n;++o)r.push({x:t[2*o],y:t[2*o+1]});return r}function ft(t){const r=[];for(const n of t)r.push(n.x,n.y);return n(r,t.length,2)}const it=({v:[t,n]})=>({x:t,y:n}),lt=({x:t,y:r})=>n([t,r],1,2),at={x:0,y:0},pt=(t,n)=>t.x*n.x+t.y*n.y,ht=(t,n)=>t.x*n.y-t.y*n.x,Mt=(t,n)=>Nt(n,-2*pt(t,n),t),xt=({x:t,y:n})=>t*t+n*n,mt=({x:t,y:n})=>Math.hypot(t,n),vt=(t,n)=>(t.x-n.x)*(t.x-n.x)+(t.y-n.y)*(t.y-n.y),wt=(t,n)=>Math.hypot(t.x-n.x,t.y-n.y),dt=(t,n=1)=>zt(t,n/mt(t)),$t=({x:t,y:n})=>({x:-n,y:t}),yt=(t,n)=>Math.acos(Math.max(-1,Math.min(1,pt(t,n)/Math.sqrt(xt(t)*xt(n))))),bt=(t,n)=>Math.atan2(ht(t,n),pt(t,n)),Et=(t,n)=>({x:t.x+n.x,y:t.y+n.y}),zt=(t,n)=>({x:t.x*n,y:t.y*n}),Nt=(t,n,r)=>({x:t.x*n+r.x,y:t.y*n+r.y}),_t=(t,n)=>({x:t.x-n.x,y:t.y-n.y}),gt=(t,n,r)=>({x:t.x+(n.x-t.x)*r,y:t.y+(n.y-t.y)*r}),Lt=(t,n)=>({x:.5*(t.x+n.x),y:.5*(t.y+n.y)}),Tt=(t,n,r,o,c,e)=>u=>({x:u.x*t+u.y*n+r,y:u.x*o+u.y*c+e}),Ot=(t,n=6)=>`${t.x.toFixed(n)} ${t.y.toFixed(n)}`;function Zt(t,n){const r=Math.min(...t),o=Math.max(...t);return{l:{x:r,y:Math.min(...n)},h:{x:o,y:Math.max(...n)}}}const kt=({l:t,h:n})=>Lt(t,n),Ct=({l:t,h:n})=>(n.x-t.x)*(n.y-t.y),Dt=({l:t,h:n},{x:r,y:o})=>r>=t.x&&r<=n.x&&o>=t.y&&o<=n.y,Ht=({l:t,h:n},r)=>`M${Ot(t,r)}H${n.x}V${n.y}H${t.x}Z`,Qt=t=>{const n=new Map;return r=>{const o=n.get(r);if(o)return o;const c=t(r);return n.set(r,c),c}},jt=[[1]];function qt(t,n){if(t<0||n<0||n>t)return 0;for(;jt.length<=t;){const t=jt.length,n=jt[t-1],r=[],o=[];let c=0,e=0;for(let u=0,s=t+1>>>1;u<s;++u){const t=n[u],s=c+t;r.push(s),o.push(e+s),e=s,c=t}o.push(2*e),jt.push(r,o)}return jt[t][2*n>t?t-n:n]}const At=(...t)=>({v:t,m:1,n:t.length});function Vt({v:t,m:r,n:o}){const c=[];for(let e=0;e<r;++e)c.push(n(t.slice(e*o,e*o+o),1,o));return c}const Bt=t=>n(t.flatMap(t=>t.v),t.length,t[0]?.n??0);function Ft(t,{precision:n=3}={}){return t?`{${t.v.map(t=>t.toFixed(n)).join(", ")}}`:"(null)"}function Gt(t,n){((t,n)=>{if(t.n!==n.n)throw new Error(`invalid vector operation (${t.n}) . (${n.n})`)})(t,n);let r=0;for(let o=0;o<t.n;++o)r+=t.v[o]*n.v[o];return r}const It=({v:[t,n]},{v:[r,o]})=>t*o-n*r,Jt=({v:[t,n,r]},{v:[o,c,e]})=>({v:[n*e-r*c,r*o-t*e,t*c-n*o],m:1,n:3}),Kt=(t,n)=>nn(n,-2*Gt(t,n),t),Pt=t=>Gt(t,t),Rt=({v:t})=>Math.hypot(...t),St=(t,n)=>Pt(rn(t,n)),Ut=(t,n)=>Rt(rn(t,n)),Wt=(t,n=1)=>tn(t,n/Rt(t)),Xt=(t,n)=>Math.acos(Math.max(-1,Math.min(1,Gt(t,n)/Math.sqrt(Pt(t)*Pt(n))))),Yt=m,tn=d,nn=$,rn=w,on=y,cn=b,en=Bt,un=(t,n,r)=>{const o=[];for(let c=0;c<=r;++c)o.push(on(t,n,c/r));return Bt(o)},sn=(t,n,r,o)=>Bt([t,on(n,o,1/3),on(r,t,1/3),o]);function fn(t,n){if(!t.length||n<2)return null;const r=t[0],o=t[t.length-1];if(t.length>2){const c=r.d,u=1/(o.d-c),s=Math.min(t.length,n),f=Z(e(t,({d:t})=>On((t-c)*u,s)));if(f)return wn(E(bn(s),E(f,Bt(t))),n)}return un(r,o,n)}function ln(t,r){if(!t.length||r<2)return null;const o=t[0],c=t[t.length-1];if(t.length>2){const e=o.d,u=1/(c.d-e),s=rn(c,o),f=Math.min(t.length,r),i=[],l=[];for(let n=1;n<t.length-1;++n){const r=t[n],c=(r.d-e)*u,a=On(c,f-1,c),p=a.pop();l.push(...a.map(t=>t-p)),i.push(rn(r,nn(s,p,o)))}const a=Z(n(l,t.length-2,f-2));if(a){const t=v(E(an(f),E(a,Bt(i))),o);return wn(n([...o.v,...t.v,...c.v],f,t.n),r)}}return un(o,c,r)}const an=/*@__PURE__*/Qt(t=>{const n=O(L(yn(t),1,1,t-2,t-2));if(!n)throw new Error("unexpected non-invertible bezier matrix");return n}),pn=(t,n)=>hn(t,[n]);function hn(t,r){const o=t.m,c=[];for(let t=0;t<r.length;++t){const n=r[t];for(let t=0,r=1;t<o;++t)c.push(r),r*=n}return E(n(c,r.length,o),E(yn(t.m),t))}const Mn=t=>{const{m:n,n:r}=t,o=E(yn(n),t),c=[];for(let t=0;t<r;++t){const e=[];for(let c=0;c<n;++c)e.push(o.v[c*r+t]);c.push(e)}return c},xn=(...t)=>N(yn(t.length),At(...t)).v,mn=t=>t.m-1;function vn({v:t,m:r,n:o}){const c=r+1,e=[];for(let n=0;n<c;++n){const c=n/r;for(let r=0;r<o;++r)e.push((1-c)*(t[n*o+r]??0)+c*(t[(n-1)*o+r]??0))}return n(e,c,o)}function wn(t,n){if(n<t.m)throw new Error("curve is higher order than target");let r=t;for(;r.m<n;)r=vn(r);return r}const dn=/*@__PURE__*/new Map;function $n(r){const o=r.m;let c=dn.get(o);if(!c){const r=o-1,e=t(o*r);e[0]=e[o*r-1]=1;for(let t=1;t<r;++t)e[t*o]=1-(e[t*o-1]=t/r);if(c=Z(n(e,o,r)),!c)throw new Error("unexpected non-invertible elevation matrix");dn.set(o,c)}return E(c,r)}const yn=/*@__PURE__*/Qt(r=>{const o=t(r*r);for(let t=0;t<r;++t){const n=qt(r-1,t)*(2*(1&t)-1);for(let c=0;c<=t;++c){const e=qt(t,c)*(2*(1&c)-1);o[t*r+c]=n*e}}return n(o,r,r)}),bn=/*@__PURE__*/Qt(t=>{const n=O(yn(t));if(!n)throw new Error("unexpected non-invertible bezier matrix");return n});function En({v:t,m:r,n:o}){const c=r-1,e=[];for(let n=0;n<c;++n)for(let r=0;r<o;++r){const u=n*o+r;e.push(c*(t[u+o]-t[u]))}return n(e,c,o)}const zn=(t,n)=>Wt(pn(En(t),n)),Nn=(t,n)=>E(zn(t,n),ct),_n=(t,n)=>v(t,n),gn=(t,n)=>{const r=En(t),o=En(r),c=Wt(pn(r,n)),e=Wt(Yt(c,pn(o,n))),u=Wt(Jt(e,c));return Jt(u,c)};function Ln(t,r=.5){const c=t.m,e=yn(c),u=E(E(bn(c),o(On(r,c))),e),s=[];for(let t=0;t<c;++t){for(let n=0;n<=t;++n)s.push(u.v[t*(c+1)-n]);for(let n=t+1;n<c;++n)s.push(0)}const f=n(s.reverse(),c,c);return[E(u,t),E(f,t)]}function Tn(t,n,r=1e-6){let o=t;const c=[];for(const t of n.filter(t=>t>0&&t<1).sort()){if(t<=0+r)continue;const n=(t-0)/1,[e,u]=Ln(o,n);c.push(e),o=u}return c.push(o),c}function On(t,n,r=1){const o=[];for(let c=0,e=r;c<n;++c)o.push(e),e*=t;return o}function Zn(t,n,r="M",o=!1){const c=st(t).map(t=>Ot(t,n));if(o||t.m<3)return r+c.join("L");switch(t.m){case 3:return`${r}${c[0]}Q${c[1]} ${c[2]}`;case 4:return`${r}${c[0]}C${c[1]} ${c[2]} ${c[3]}`;default:const o=30,e=[];for(let t=0;t<=o;++t)e.push(t/o);return r+st(hn(t,e)).map(t=>Ot(t,n)).join("L")}}const kn=({r:t})=>Math.PI*t*t,Cn=({r:t})=>2*Math.PI*t,Dn=({c:t,r:n})=>({l:{x:t.x-n,y:t.y-n},h:{x:t.x+n,y:t.y+n}}),Hn=({c:t,r:n},r)=>vt(t,r)<n*n,Qn=({c:t,r:n},r)=>`M${Ot({x:t.x,y:t.y-n},r)}a${n} ${n} 0 0 0 0 ${2*n}a${n} ${n} 0 0 0 0 ${2*-n}Z`;function jn(r){if(!r.length)throw new Error("empty polynomial");const o=r.length-1,c=1/r[o],e=t(o*o);for(let t=0;t<o-1;++t)e[(t+1)*o+t]=1;for(let t=0;t<o;++t)e[(t+1)*o-1]=r[t]*c;return n(e,o,o)}const qn=(t,n)=>t.reduceRight((t,r)=>t*n+r,0),An=(...n)=>n.reduce((n,r)=>{const o=t(n.length+r.length-1);for(let t=0;t<n.length;++t)for(let c=0;c<r.length;++c)o[t+c]+=n[t]*r[c];return o}),Vn=t=>t.map((t,n)=>t*n).slice(1),Bn=(t,n=0)=>[n,...t.map((t,n)=>t/(n+1))],Fn=(t,n)=>t.length>=n.length?t.map((t,r)=>t+(n[r]??0)):n.map((n,r)=>(t[r]??0)+n),Gn=(t,n)=>t.length>=n.length?t.map((t,r)=>t-(n[r]??0)):n.map((n,r)=>(t[r]??0)-n),In=(t,n)=>t.map(t=>t*n),Jn=(t,n)=>{if(!t.length)throw new Error("empty polynomial");const r=[...t];return r[0]+=n,r},Kn=(...t)=>An(...t.map(t=>[-t,1]));function Pn(t,n=0,r={}){let o=cr;if(void 0!==r.min||void 0!==r.max){const t=r.min??Number.NEGATIVE_INFINITY,n=r.max??Number.POSITIVE_INFINITY;o=r=>r.filter(r=>r>=t&&r<=n)}switch(t.length){case 0:case 1:return[];case 2:return o(Sn(t,n));case 3:return o(Un(t,n));case 4:return o(Xn(t,n));case 5:return o(tr(t,n));case 7:return rr(t,n,r).map(t=>t[0]);default:throw new Error("unsupported polynomial order")}}const Rn=1e-12,Sn=([t,n],r=0)=>n?[(r-t)/n]:[];function Un([t,n,r],o=0){if(Math.abs(r)<=Math.max(t,-t,n,-n)*Rn)return Sn([t,n],o);const c=n*n-4*r*(t-o),e=.5/r;if(c>0){const t=Math.sqrt(c);return[(-n+t)*e,(-n-t)*e]}return c?[]:[-n*e]}function Wn(t,n=0,{min:r=0,max:o=1,maxError:c=1e-4}={}){const e=Sn(Vn(t)).filter(t=>t>r&&t<o).sort();return e.push(o),or(r,e,r=>qn(t,r)-n,c)}function Xn([t,n,r,o],c=0){if(Math.abs(o)<=Math.max(t,-t,n,-n,r,-r)*Rn)return Un([t,n,r],c);const e=1/o,u=r*e*(1/3),s=n*e*(1/3)-u*u,f=s*s*s,i=.5*(u*(2*u*u-n*e)+(t-c)*e),l=i*i+f;if(Math.abs(l)<Number.EPSILON){if(Math.abs(i)<Number.EPSILON)return[-u];const t=Math.cbrt(i);return[-2*t-u,t-u]}if(l<0){const t=Math.sqrt(-f),n=Math.acos(Math.max(-1,Math.min(1,-i/t)))*(1/3),r=2*Math.cbrt(t);return[r*Math.cos(n-Math.PI*(2/3))-u,r*Math.cos(n)-u,r*Math.cos(n+Math.PI*(2/3))-u]}const a=Math.sqrt(l);return[Math.cbrt(a-i)-Math.cbrt(a+i)-u]}function Yn(t,n=0,{min:r=0,max:o=1,maxError:c=1e-4}={}){const e=Un(Vn(t)).filter(t=>t>r&&t<o).sort();return e.push(o),or(r,e,r=>qn(t,r)-n,c)}function tr([t,n,r,o,c],e=0){if(Math.abs(c)<=Math.max(t,-t,n,-n,r,-r,o,-o)*Rn)return Xn([t,n,r,o],e);if(!n&&!r&&!o){const n=(e-t)/c;if(Math.abs(n)<Number.EPSILON)return[0];if(n<0)return[];{const t=Math.sqrt(Math.sqrt(n));return[-t,t]}}const u=.25/c,s=o*u,f=u*u,i=o*o*f,l=r*u,a=4*l-6*i,p=4*(2*(i-l)*o+n)*u,h=Xn([-p*p,a*a-4*((l-.75*i)*i+(t-e)*u-n*o*f)*4,2*a,1]).sort(ur)[0];if(void 0===h||h<Number.EPSILON){if(Math.abs(p)>Number.EPSILON)return[];if(a<-Number.EPSILON){const t=Math.sqrt(-2/a);return[-t-s,t-s]}return a<Number.EPSILON?[-s]:[]}const M=Math.sqrt(h),x=(a+h)*M,m=[...Un([.5*(x+p),-h,M]),...Un([.5*(x-p),h,M])].sort(er),v=[];let w=Number.NEGATIVE_INFINITY;for(const t of m)t>w+Number.EPSILON&&(v.push(t-s),w=t);return v}function nr(t,n=0,{min:r=0,max:o=1,maxError:c=1e-4}={}){const e=Xn(Vn(t)).filter(t=>t>r&&t<o).sort();return e.push(o),or(r,e,r=>qn(t,r)-n,c)}function rr(t,n=0,{min:r=0,max:o=1,maxError:c=1e-4}={}){const e=Vn(t),u=Vn(e),s=Xn(Vn(u)).filter(t=>t>r&&t<o).sort();s.push(o);const f=r=>({y:qn(t,r)-n,d:qn(e,r),dd:qn(u,r)});function i(t,n){const r=t.y<0,o=t.d<0;return r!==n.y<0||o!==r&&r===n.d<0||t.dd<0!==o&&o===n.dd<0}const l=[];function a(t,n,r,o){if(n-t>c){const c=.5*(t+n),e=f(c);i(r,e)&&a(t,c,r,e),i(e,o)&&a(c,n,e,o)}else r.y<0!=o.y<0&&l.push([t+(n-t)*r.y/(r.y-o.y),r.y<0?1:-1])}let p=r,h=f(r);for(const t of s){const n=f(t);i(h,n)&&a(p,t,h,n),p=t,h=n}return l}function or(t,n,r,o){const c=[];function e(t,n,u,s){if(n-t>o){const o=.5*(t+n),c=r(o);u<0!=c<0&&e(t,o,u,c),c<0!=s<0&&e(o,n,c,s)}else u<0!=s<0&&c.push([t+(n-t)*u/(u-s),u<0?1:-1])}let u=t,s=r(t);for(const t of n){const n=r(t);s<0!=n<0&&e(u,t,s,n),u=t,s=n}return c}const cr=t=>t,er=(t,n)=>t-n,ur=(t,n)=>n-t,sr=(t,n)=>({p0:t,p1:n}),fr=t=>sr(...st(t)),ir=({p0:t,p1:n})=>ft([t,n]),lr=({p0:t,p1:n},r)=>gt(t,n,r),ar=({p0:t,p1:n},r)=>t.x+(n.x-t.x)*r,pr=({p0:t,p1:n},r)=>t.y+(n.y-t.y)*r,hr=({p0:t,p1:n})=>[t.x,n.x-t.x],Mr=({p0:t,p1:n})=>[t.y,n.y-t.y],xr=({p0:t,p1:n})=>Lt(t,n),mr=({p0:t,p1:n})=>_t(n,t),vr=t=>dt(mr(t)),wr=t=>$t(vr(t)),dr=({p0:t,p1:n},r)=>({p0:Et(t,r),p1:Et(n,r)}),$r=(t,n)=>Sn(hr(t),n),yr=(t,n)=>Sn(Mr(t),n),br=t=>({l:{x:Math.min(t.p0.x,t.p1.x),y:Math.min(t.p0.y,t.p1.y)},h:{x:Math.max(t.p0.x,t.p1.x),y:Math.max(t.p0.y,t.p1.y)}}),Er=({p0:t,p1:n})=>wt(n,t);function zr({p0:t,p1:n}){const r=_t(n,t),o=xt(r);if(!o)return null;const c=zt(r,1/o);return{scale2:o,fn:Tt(c.x,c.y,-t.x*c.x-t.y*c.y,-c.y,c.x,t.x*c.y-t.y*c.x)}}function Nr({p0:t,p1:n},r=.5){const o=gt(t,n,r);return[{p0:t,p1:o},{p0:o,p1:n}]}function _r({p0:t,p1:n},r,o=1e-6){let c=t,e=0;const u=[];for(const s of r.filter(t=>t>0&&t<1).sort()){if(s<=e+o)continue;const r=gt(t,n,s);u.push({p0:c,p1:r}),c=r,e=s}return u.push({p0:c,p1:n}),u}const gr=({p0:t,p1:n},r,o="M")=>`${o}${Ot(t,r)}L${Ot(n,r)}`;function Lr(t,n){const r=_t(n.p0,t.p0),o=_t(t.p1,t.p0),c=_t(n.p1,n.p0),e=ht(o,c);if(e){const t=ht(r,c)/e,n=ht(r,o)/e;if(t>=0&&t<=1&&n>=0&&n<=1)return[{t1:t,t2:n}]}return[]}const Tr=(t,n,r)=>({p0:t,c1:n,p2:r}),Or=t=>Tr(...st(t));function Zr(t){if(!t.length)return null;const n=t[0],r=t[t.length-1];if(t.length>=3){const o=n.d,c=1/(r.d-o),u=R(e(t,({d:t})=>{const n=(t-o)*c;return[1,n,n*n]}));if(u){const n=E(Dr,E(u,ft(t)));return Tr(...st(n))}}return Hr({p0:n,p1:r})}function kr(t,r){if(!t.length)return null;const o=t[0],c=t[t.length-1];if(t.length>2){const u=[],s=o.d,f=1/(c.d-s),i=_t(c,o),a=[],p=[];for(let n=1;n<t.length-1;++n){const r=t[n],c=(r.d-s)*f,e=c*c;a.push(c-e),p.push(_t(r,Nt(i,e,o)))}if(r&&vt(o,r)){const t=dt(_t(o,r)),n=Q(l(e(a,n=>[t.x*n,t.y*n]),1));if(n){const r=d(E(n,l(ft(p),1)),.5),[e]=r.v;e>0&&u.push({t:{p0:o,c1:Nt(t,e,o),p2:c},o:1})}}const h=Q(n(a,t.length-2,1));if(h){const t=d(E(h,ft(p)),.5),[n]=st(t);u.push({t:{p0:o,c1:Et(n,o),p2:c},o:4})}if(1===u.length)return u[0].t;if(u.length>1){let n,r=Number.POSITIVE_INFINITY;for(const o of u){const c=Kr(o.t,t)*o.o;c<r&&(n=o.t,r=c)}return n}}if(t.length>=2&&r&&vt(o,r)){const t=_t(c,o),n=mt(c),e=dt(_t(o,r)),u=n?Math.max(pt(e,zt(t,1/n)),0):1;return{p0:o,c1:Nt(e,u*n*(1/3),o),p2:c}}return Hr({p0:o,p1:c})}const Cr=/*@__PURE__*/r([[1,0,0],[-2,2,0],[1,-2,1]]),Dr=/*@__PURE__*/r([[1,0,0],[1,.5,0],[1,1,1]]),Hr=({p0:t,p1:n})=>({p0:t,c1:Lt(t,n),p2:n}),Qr=({p0:t,c1:n,p2:r})=>ft([t,n,r]);function jr({p0:t,c1:n,p2:r},o){const c=1-o;return Nt(Nt(t,c,zt(n,2*o)),c,zt(r,o*o))}function qr({p0:t,c1:n,p2:r},o){const c=1-o;return t.x*c*c+(2*n.x*c+r.x*o)*o}function Ar({p0:t,c1:n,p2:r},o){const c=1-o;return t.y*c*c+(2*n.y*c+r.y*o)*o}const Vr=(t,n,r)=>[t,2*(n-t),t-2*n+r],Br=({p0:t,c1:n,p2:r})=>Vr(t.x,n.x,r.x),Fr=({p0:t,c1:n,p2:r})=>Vr(t.y,n.y,r.y),Gr=({p0:t,c1:n,p2:r})=>({p0:zt(_t(n,t),2),p1:zt(_t(r,n),2)}),Ir=(t,n)=>dt(lr(Gr(t),n)),Jr=(t,n)=>$t(Ir(t,n));function Kr(t,n){if(!n.length)return 0;const r=n[0],o=n[n.length-1],c=r.d,u=1/(o.d-c),s=w(E(E(e(n,({d:t})=>{const n=(t-c)*u;return[1,n,n*n]}),Cr),Qr(t)),ft(n));return p(s)}const Pr=({p0:t,c1:n,p2:r},o)=>({p0:Et(t,o),c1:Et(n,o),p2:Et(r,o)}),Rr=(t,n)=>Un(Br(t),n),Sr=(t,n)=>Un(Fr(t),n),Ur=({p0:t,c1:n,p2:r})=>Sn([n.x-t.x,r.x-2*n.x+t.x]),Wr=({p0:t,c1:n,p2:r})=>Sn([n.y-t.y,r.y-2*n.y+t.y]),Xr=t=>Zt([t.p0.x,t.p2.x,...Ur(t).filter(t=>t>0&&t<1).map(qr.bind(null,t))],[t.p0.y,t.p2.y,...Wr(t).filter(t=>t>0&&t<1).map(Ar.bind(null,t))]);function Yr(t,n=Number.POSITIVE_INFINITY){const r=zr({p0:t.p0,p1:t.p2});if(!r){const n=wt(t.p0,t.c1);return{best:n,maxError:n*Number.EPSILON}}const o=Math.sqrt(r.scale2),c=r.fn(t.c1),e={x:c.x>.5?1-c.x:c.x,y:Math.abs(c.y)};if(e.y<2*n*o){const t=.5-e.x,n=t>.5?t+.25/t:1;return{best:n*o,maxError:(.5*e.y+n*Number.EPSILON)*o}}if(r.scale2<16*Number.EPSILON){const r=wt(t.p0,t.c1)+wt(t.c1,t.p2),c=.25*(2*r+o),e=.25*Math.min(o,r-o)+c*Number.EPSILON;if(e>n&&r>2*o){const[r,o]=to(t),c=Yr(r,.5*n),e=Yr(o,n-c.maxError);return{best:c.best+e.best,maxError:c.maxError+e.maxError}}return{best:c,maxError:e}}const u={x:2*e.x,y:2*e.y},s={x:2-2*u.x,y:2*-u.y},f=xt(s);if(f<.001){const t=.5*s.x,n=.5*s.y,r=t*t+n*n,c=r*r,f=c*c;let i=0;for(const[t,n]of oo)i+=t*mt(Nt(s,.5*n+.5,u));return{best:i*o*.5,maxError:.025*(mt(e)+wt(e,{x:1,y:0})-1)*Math.tanh(f*f)*o}}const i=pt(s,u)/f,l=xt(u)/f,a=Math.sqrt(l),p=Math.sqrt(1+2*i+l),h=l-i*i,M=(1+i+p)*(a-i),x=(1+i)*p-i*a+h*Math.log(M/h),m=Math.sqrt(f)*o*.5;return{best:x*m,maxError:1e-14*m}}function to({p0:t,c1:n,p2:r},o=.5){const c=gt(t,n,o),e=gt(n,r,o),u=gt(c,e,o);return[{p0:t,c1:c,p2:u},{p0:u,c1:e,p2:r}]}function no({p0:t,c1:n,p2:r},o,c=1e-6){let e=t,u=n;const s=r;let f=0;const i=[];for(const t of o.filter(t=>t>0&&t<1).sort()){if(t<=f+c)continue;const n=(t-f)/(1-f),r=gt(e,u,n),o=gt(u,s,n),l=gt(r,o,n);i.push({p0:e,c1:r,p2:l}),e=l,u=o,f=t}return i.push({p0:e,c1:u,p2:s}),i}const ro=({p0:t,c1:n,p2:r},o,c="M",e=!1)=>`${c}${Ot(t,o)}${e?"L":"Q"}${Ot(n,o)} ${Ot(r,o)}`,oo=[[.4179591836734694,0],[.3818300505051189,.4058451513773972],[.3818300505051189,-.4058451513773972],[.2797053914892766,-.7415311855993945],[.2797053914892766,.7415311855993945],[.1294849661688697,-.9491079123427585],[.1294849661688697,.9491079123427585]],co=(t,n,r,o)=>({p0:t,c1:n,c2:r,p3:o}),eo=t=>co(...st(t));function uo(t){if(!t.length)return null;if(t.length>=4){const n=t[0],r=t[t.length-1],o=n.d,c=1/(r.d-o),u=Y(e(t,({d:t})=>{const n=(t-o)*c,r=n*n;return[1,n,r,r*n]}));if(u){const n=E(lo,E(u,ft(t)));return co(...st(n))}}const n=Zr(t);return n?po(n):null}function so(t,n){if(!t.length)return null;const o=t[0],c=t[t.length-1];if(t.length>3){const u=[],s=o.d,f=1/(c.d-s),i=_t(c,o),a=[],p=[];for(let n=1;n<t.length-1;++n){const r=t[n],c=(r.d-s)*f,e=c*c,u=e*c;a.push([c-u,e-u]),p.push(_t(r,Nt(i,u,o)))}if(n&&vt(o,n)){const t=dt(_t(o,n)),r=R(l(e(a,([n,r])=>[t.x*(n-2*r),r,0,t.y*(n-2*r),0,r]),3));if(r){const n=d(E(r,l(ft(p),1)),1/3),[e,s,f]=n.v;e>0&&u.push({t:{p0:o,c1:Nt(t,e,o),c2:Et(o,{x:s,y:f}),p3:c},o:1})}}const h=F(r(a));if(h){const t=E(fo,E(h,ft(p))),[n,r]=st(t);u.push({t:{p0:o,c1:Et(n,o),c2:Et(r,o),p3:c},o:4})}if(1===u.length)return u[0].t;if(u.length>1){let n,r=Number.POSITIVE_INFINITY;for(const o of u){const c=No(o.t,t)*o.o;c<r&&(n=o.t,r=c)}return n}}const u=kr(t,n);return u?po(u):null}const fo=/*@__PURE__*/r([[1/3,0],[2/3,1/3]]),io=/*@__PURE__*/r([[1,0,0,0],[-3,3,0,0],[3,-6,3,0],[-1,3,-3,1]]),lo=/*@__PURE__*/r([[1,0,0,0],[1,1/3,0,0],[1,2/3,1/3,0],[1,1,1,1]]),ao=(t,n,r,o)=>({p0:t,c1:gt(n,o,1/3),c2:gt(r,t,1/3),p3:o}),po=({p0:t,c1:n,p2:r})=>({p0:t,c1:gt(t,n,2/3),c2:gt(n,r,1/3),p3:r}),ho=({p0:t,p1:n})=>({p0:t,c1:gt(t,n,1/3),c2:gt(t,n,2/3),p3:n}),Mo=({p0:t,c1:n,c2:r,p3:o})=>ft([t,n,r,o]);function xo({p0:t,c1:n,c2:r,p3:o},c){const e=1-c;return Nt(Nt(t,e*e,Nt(n,3*c*e,zt(r,3*c*c))),e,zt(o,c*c*c))}function mo({p0:t,c1:n,c2:r,p3:o},c){const e=1-c;return t.x*e*e*e+(3*e*(n.x*e+r.x*c)+o.x*c*c)*c}function vo({p0:t,c1:n,c2:r,p3:o},c){const e=1-c;return t.y*e*e*e+(3*e*(n.y*e+r.y*c)+o.y*c*c)*c}const wo=(t,n,r,o)=>[t,3*(n-t),3*(t-2*n+r),o-t+3*(n-r)],$o=({p0:t,c1:n,c2:r,p3:o})=>wo(t.x,n.x,r.x,o.x),yo=({p0:t,c1:n,c2:r,p3:o})=>wo(t.y,n.y,r.y,o.y),bo=({p0:t,c1:n,c2:r,p3:o})=>({p0:zt(_t(n,t),3),c1:zt(_t(r,n),3),p2:zt(_t(o,r),3)}),Eo=(t,n)=>dt(jr(bo(t),n)),zo=(t,n)=>$t(Eo(t,n));function No(t,n){if(!n.length)return 0;const r=n[0],o=n[n.length-1],c=r.d,u=1/(o.d-c),s=w(E(E(e(n,({d:t})=>{const n=(t-c)*u,r=n*n;return[1,n,r,r*n]}),io),Mo(t)),ft(n));return p(s)}const _o=({p0:t,c1:n,c2:r,p3:o},c)=>({p0:Et(t,c),c1:Et(n,c),c2:Et(r,c),p3:Et(o,c)}),go=(t,n)=>Xn($o(t),n),Lo=(t,n)=>Xn(yo(t),n),To=({p0:t,c1:n,c2:r,p3:o})=>Un([n.x-t.x,2*(t.x+r.x)-4*n.x,o.x-t.x+3*(n.x-r.x)]),Oo=({p0:t,c1:n,c2:r,p3:o})=>Un([n.y-t.y,2*(t.y+r.y)-4*n.y,o.y-t.y+3*(n.y-r.y)]),Zo=t=>Zt([t.p0.x,t.p3.x,...To(t).filter(t=>t>0&&t<1).map(mo.bind(null,t))],[t.p0.y,t.p3.y,...Oo(t).filter(t=>t>0&&t<1).map(vo.bind(null,t))]);function ko(t,n=Number.POSITIVE_INFINITY,r=10){const o=_t(t.c1,t.p0),c=_t(t.c2,t.c1),e=_t(t.p3,t.c2),u=wt(t.p0,t.p3),s=mt(o)+mt(c)+mt(e);if(s-u<2*n)return{best:.5*(s+u),maxError:n};const f=s-u,i=_t(c,o),l=_t(e,c),a=Nt(Et(o,e),.5,c),p=Et(l,i),h=_t(l,i);let M=0;for(const[t,n]of Qo){const r=Nt(h,n*n*.5,a);M+=t*(xt(Nt(h,n,p))/xt(Nt(p,n,r))+xt(Nt(h,-n,p))/xt(Nt(p,-n,r)))}M*=M*M;let x=Qo,m=Math.min(25e-7*M,.03)*f;if(m>n&&(x=jo,m=Math.min(M*M*15e-12,.009)*f,m>n&&(x=qo,m=Math.min(M*M*M*35e-17,.0035)*f,m>n&&r>0))){const[o,c]=Co(t),e=r-1,u=ko(o,.5*n,e),s=ko(c,n-u.maxError,e);return{best:u.best+s.best,maxError:u.maxError+s.maxError}}let v=0;for(const[t,n]of x){const r=Nt(h,n*n*.5,a),o=zt(p,n);v+=t*(mt(Et(r,o))+wt(r,o))}return{best:.75*v,maxError:m}}function Co(t,n=.5){const r=gt(t.p0,t.c1,n),o=gt(t.c1,t.c2,n),c=gt(t.c2,t.p3,n),e=gt(r,o,n),u=gt(o,c,n),s=gt(e,u,n);return[{p0:t.p0,c1:r,c2:e,p3:s},{p0:s,c1:u,c2:c,p3:t.p3}]}function Do({p0:t,c1:n,c2:r,p3:o},c,e=1e-6){let u=t,s=n,f=r;const i=o;let l=0;const a=[];for(const t of c.filter(t=>t>0&&t<1).sort()){if(t<=l+e)continue;const n=(t-l)/(1-l),r=gt(u,s,n),o=gt(s,f,n),c=gt(f,i,n),p=gt(r,o,n),h=gt(o,c,n),M=gt(p,h,n);a.push({p0:u,c1:r,c2:p,p3:M}),u=M,s=h,f=c,l=t}return a.push({p0:u,c1:s,c2:f,p3:i}),a}const Ho=(t,n,r="M",o=!1)=>`${r}${Ot(t.p0,n)}${o?"L":"C"}${Ot(t.c1,n)} ${Ot(t.c2,n)} ${Ot(t.p3,n)}`,Qo=[[.362683783378362,.1834346424956498],[.3137066458778873,.525532409916329],[.2223810344533745,.7966664774136267],[.1012285362903763,.9602898564975363]],jo=[[.1894506104550685,.0950125098376374],[.1826034150449236,.2816035507792589],[.1691565193950025,.4580167776572274],[.1495959888165767,.6178762444026438],[.1246289712555339,.755404408355003],[.0951585116824928,.8656312023878318],[.0622535239386479,.9445750230732326],[.0271524594117541,.9894009349916499]],qo=[[.1279381953467522,.0640568928626056],[.1258374563468283,.1911188674736163],[.1216704729278034,.3150426796961634],[.1155056680537256,.4337935076260451],[.1074442701159656,.5454214713888396],[.0976186521041139,.6480936519369755],[.0861901615319533,.7401241915785544],[.0733464814110803,.820001985973903],[.0592985849154368,.8864155270044011],[.0442774388174198,.9382745520027328],[.0285313886289337,.9747285559713095],[.0123412297999872,.9951872199970213]];function Ao({p0:t,c1:n,c2:r,p3:o}){const c=zr({p0:t,p1:o})??zr({p0:t,p1:n})??zr({p0:t,p1:r});return c?{...c,curve:{p0:at,c1:c.fn(n),c2:c.fn(r),p3:{x:c.fn(o).x,y:0}}}:{scale2:1,curve:{p0:at,c1:at,c2:at,p3:at},fn:n=>_t(n,t)}}function Vo({c1:t,c2:n,p3:r},o){const c=1-o;return Nt(Nt(t,3*o*c,zt(n,3*o*o)),c,zt(r,o*o*o))}function Bo({c1:t,c2:n,p3:r},o){const c=1-o;return(3*c*(t.x*c+n.x*o)+r.x*o*o)*o}function Fo({c1:t,c2:n},r){const o=1-r;return 3*o*(t.y*o+n.y*r)*r}const Go=({c1:t,c2:n,p3:r})=>({p0:zt(t,3),c1:zt(_t(n,t),3),p2:zt(_t(r,n),3)});function Io(t){const n=Go(t),r=Gr(n);return t=>{const o=jr(n,t),c=lr(r,t),e=mt(o);return ht(o,c)/(e*e*e)}}function Jo({c1:t,c2:n,p3:r}){const o=ht(t,n);return Un([o,-3*o-t.y*r.x,3*o+(2*t.y-n.y)*r.x])}function Ko({c1:t,c2:n,p3:r}){return.15*((r.x+n.x)*t.y+(2*r.x-t.x)*n.y)}function Po({c1:t,c2:n,p3:r}){const o=r.x,c=t.x,e=t.y,u=o-n.x,s=n.y;return 1/280*(+(34*e+50*s)*o*o+(15*(c*e-u*s)+9*c*s-33*e*u)*o+9*(e*u+c*s)*(u-c))}function Ro(t,n){const r=mr(t);return{c:xr(t),d:r,aspect:n/mt(r)}}const So=t=>({c:kt(t),d:{x:0,y:t.h.y-t.l.y},aspect:(t.h.x-t.l.x)/(t.h.y-t.l.y)}),Uo=({d:t,aspect:n})=>xt(t)*n;function Wo({c:t,d:n,aspect:r}){const o=Math.abs(n.x),c=Math.abs(n.y),e=.5*(o+c*r),u=.5*(c+o*r);return{l:{x:t.x-e,y:t.y-u},h:{x:t.x+e,y:t.y+u}}}function Xo({c:t,d:n,aspect:r},o){const c=_t(o,t),e=.5*xt(n);return Math.abs(pt(c,n))<=e&&Math.abs(ht(c,n))<=e*r}function Yo({c:t,d:n,aspect:r},o){const c={x:.5*(n.x-n.y*r),y:.5*(n.y+n.x*r)},e={x:.5*(n.x+n.y*r),y:.5*(n.y-n.x*r)};return`M${Ot(Et(t,c),o)}L${Ot(Et(t,e),o)} ${Ot(_t(t,c),o)} ${Ot(_t(t,e),o)}Z`}const tc=(t,n)=>t.l.x<n.h.x&&n.l.x<t.h.x&&t.l.y<n.h.y&&n.l.y<t.h.y,nc=(t,{c:n,r})=>rc(t,n,r*r);function rc({l:t,h:n},r,o){const c=Math.max(0,t.x-r.x,r.x-n.x),e=Math.max(0,t.y-r.y,r.y-n.y);return c*c+e*e<=o}function oc({p0:t,c1:n,c2:r,p3:o},c){const e=zr(c);if(!e)return[];const u={p0:e.fn(t),c1:e.fn(n),c2:e.fn(r),p3:e.fn(o)},s=[];for(const t of Lo(u,0))if(t>=0&&t<=1){const n=mo(u,t);n>=0&&n<=1&&s.push({t1:t,t2:n})}return s}function cc({p0:t,c1:n,c2:r,p3:o},c,e){const{c:u,d:s,aspect:f}=c,i=zr({p0:u,p1:Et(u,s)});if(!i)return[];const l={p0:i.fn(t),c1:i.fn(n),c2:i.fn(r),p3:i.fn(o)},a=.5*f,p={min:0,max:1,maxError:e},h=$o(l),M=yo(l),x=[];for(const[t,n]of Yn(M,-a,p))x.push({t1:t,d1:-n,y:!0});for(const[t,n]of Yn(M,a,p))x.push({t1:t,d1:n,y:!0});for(const[t,n]of Yn(h,-.5,p))x.push({t1:t,d1:-n,y:!1});for(const[t,n]of Yn(h,.5,p))x.push({t1:t,d1:n,y:!1});if(!x.length)return[];const m=[];let v=-1,w=l.p0.x>-.5&&l.p0.x<.5,d=l.p0.y>-a&&l.p0.y<a;for(const{t1:t,d1:n,y:r}of x.sort((t,n)=>t.t1-n.t1)){const o=n<0;if(r){if(o===d)continue;if(d=o,!w)continue}else{if(o===w)continue;if(w=o,!d)continue}t!==v?m.push({t1:t,d1:n}):m.pop(),v=t}return m}const ec=(t,n,r)=>uc(t)(n.c,n.r*n.r,r);function uc(t){const n=Ao(t),r=fc(n.curve);return(t,o,c)=>r(n.fn(t),o/n.scale2,c)}const sc=(t,n,r)=>fc(t)(n.c,n.r*n.r,r);function fc(t){const n=Zo(t),{c1:r,c2:o,p3:c}=t,e=9*xt(r),u=18*pt(r,o),s=6*pt(r,c)+9*xt(o),f=6*pt(o,c),i=e-u+s-f+xt(c),l=-4*e+3*u-2*s+f,a=6*e-3*u+s,p=-4*e+u;return(t,u,s)=>{if(!rc(n,t,u))return[];const f=6*pt(r,t),h=6*pt(o,t);return rr([xt(t),-f,e+2*f-h,p-f+h-2*pt(c,t),a,l,i],u,{min:0,max:1,maxError:s}).map(([t,n])=>({t1:t,d1:n}))}}function ic(t,n){const r=cc(t,n);if(!r.length)return[{...t,inside:Xo(n,t.p0)}];const o=r[0].d1>0?0:1;return Do(t,r.map(t=>t.t1),0).map((t,n)=>({...t,inside:(1&n)===o}))}function lc(t,n,r){const o=n.r*n.r,c=r(n.c,o);if(!c.length)return[{...t,inside:Hn(n,t.p0)}];const e=c[0].d1>0?0:1;return Do(t,c.map(t=>t.t1),0).map((t,n)=>({...t,inside:(1&n)===e}))}function ac(t){if(t.length<=1)return 0;let n=0,r=t[0];for(let o=1;o<t.length;++o){const c=t[o];n+=(c.x-r.x)*(c.y+r.y),r=c}const o=t[0];return n+=(o.x-r.x)*(o.y+r.y),.5*n}function pc(t,{x:n,y:r}){let o=0,c=t[t.length-1];for(const e of t){const t=e.y-c.y;if((c.y>=r||e.y>=r)&&(c.y<=r||e.y<=r)&&t){const u=(c.x-n)*t-(c.y-r)*(e.x-c.x);u&&t>0==u>0&&(c.y===r||e.y===r?o-=Math.sign(t):o-=2*Math.sign(t))}c=e}return 0!==o}function hc(t){if(!t.length)return[];let n=0,r=t[0];const o=[{...r,d:0}];for(let c=1;c<t.length;++c){const e=t[c];n+=wt(r,e),o.push({...e,d:n}),r=e}return o}const Mc=(t,n,r="M")=>r+t.map(t=>Ot(t,n)).join("L"),xc=t=>t.map(t=>({x:t.v[0],y:t.v[1],d:t.d})),mc=t=>t.map(({x:t,y:n,d:r})=>({v:[t,n],m:1,n:2,d:r}));function vc({v:[t,n,r,o,c,e,u,s,f,i,l,a,p,h,M,x]},{v:[m,v,w]}){const d=1/(m*p+v*h+w*M+x);return At((m*t+v*n+w*r+o)*d,(m*c+v*e+w*u+s)*d,(m*f+v*i+w*l+a)*d)}function wc(t,n,o){const c=Wt(rn(t,n)),e=Wt(Jt(o,c)),u=Jt(c,e);return r([[e.v[0],u.v[0],c.v[0],Gt(t,e)],[e.v[1],u.v[1],c.v[1],Gt(t,u)],[e.v[2],u.v[2],c.v[2],Gt(t,c)],[0,0,0,1]])}const dc=({v:[t,n,o]})=>r([[0,-o,n],[o,0,-t],[-n,t,0]]);function $c(t,n){const r=1+Gt(t,n);if(r<1e-6)return et;const o=dc(Jt(t,n));return m(et,m(o,d(E(o,o),1/r)))}function yc(t){if(!t.length)return[];let n=0,r=t[0];const o=[{...r,d:0}];for(let c=1;c<t.length;++c){const e=t[c];n+=Ut(r,e),o.push({...e,d:n}),r=e}return o}const bc=([t,r])=>n([t,-r,r,t],2,2),Ec=([t,n],[r,o])=>[t+r,n+o],zc=([t,n],r)=>[t+r,n],Nc=([t,n],[r,o])=>[t-r,n-o],_c=(t,[n,r])=>[t-n,-r],gc=([t,n])=>[-t,-n],Lc=([t,n])=>[t,-n],Tc=([t,n],[r,o])=>[t*r-n*o,t*o+r*n],Oc=([t,n],r)=>[t*r,n*r];function Zc([t,n],[r,o]){const c=r*r+o*o;return[(t*r+n*o)/c,(n*r-t*o)/c]}function kc(t,[n,r]){const o=n*n+r*r;return[t*n/o,-t*r/o]}function Cc([t,n]){const r=t*t+n*n;return[t/r,-n/r]}function Dc([t,n]){const r=Math.exp(t);return[r*Math.cos(n),r*Math.sin(n)]}function Hc(t){switch(nt(t),t.m){case 0:return[];case 1:return Ac(t);case 2:return Bc(t);case 3:return Gc(t);case 4:return Jc(t);default:throw new Error("unsupported matrix size")}}const Qc={v:[],m:1,n:0},jc={v:[1],m:1,n:1};function qc(t,n){switch(nt(t),t.m){case 0:return Qc;case 1:return jc;case 2:return Fc(t,n);case 3:return Ic();case 4:return Kc();default:throw new Error("unsupported matrix size")}}const Ac=({v:[t]})=>[t],Vc=()=>jc,Bc=t=>Un([A(t),-q(t),1]),Fc=({v:[t,n,r,o]},c)=>Math.abs(r)>Math.abs(n)?At(c-o,r):At(n,c-t),Gc=t=>Xn([-J(t),V(t),-I(t),1]),Ic=(t,n)=>{throw new Error("TODO")},Jc=t=>tr([W(t),-K(t),V(t),-U(t),1]),Kc=(t,n)=>{throw new Error("TODO")},Pc=1.2533141373155001,Rc=.7978845608028654,Sc=1.1283791670955126;function Uc(t){const n=Math.sign(t),r=1/(1+(t=Math.abs(t))*(ne+t*re));let o=r,c=0;for(const t of te)c+=o*t,o*=r;return n*(1-c*Math.exp(-t*t))}const Wc=t=>_c(1,Yc(t));function Xc(t){if(t<2)return 1-Uc(t);if(!Number.isFinite(t))return 0;const n=t*t,r=2*n;let o=182/(r+29);return o=132/(r+25-o),o=90/(r+21-o),o=56/(r+17-o),o=30/(r+13-o),o=12/(r+9-o),o=2/(r+5-o),Sc*t/((r+1-o)*Math.exp(n))+(1-Math.sign(t))}function Yc(t){const n=Tc(t,t),r=Oc(n,2);let o=kc(182,zc(r,29));return o=kc(132,Nc(zc(r,25),o)),o=kc(90,Nc(zc(r,21),o)),o=kc(56,Nc(zc(r,17),o)),o=kc(30,Nc(zc(r,13),o)),o=kc(12,Nc(zc(r,9),o)),o=kc(2,Nc(zc(r,5),o)),zc(Zc(Oc(t,t[0]<0?-Sc:Sc),Tc(Nc(zc(r,1),o),Dc(n))),1-Math.sign(t[0]))}const te=[.316879890481381,-.138329314150635,1.08680830347054,-1.11694155120396,1.20644903073232,-.393127715207728,.0382613542530727],ne=.406742016006509,re=.0072279182302319;function oe(t){const n=Math.sign(t);if((t=Math.abs(t))<1.5*Pc){const r=t*t,o=r*r;let c=r*t,e=c/3;for(let t=1;t<8;++t)c*=-o/(2*t*(2*t+1)),e+=c/(4*t+3);return n*e}return n*Pc*Tc([.5,.5],Wc([Math.SQRT1_2*t,-Math.SQRT1_2*t]))[1]}function ce(t){const n=Math.sign(t);if((t=Math.abs(t))<1.5*Pc){const r=t*t,o=r*r;let c=t,e=t;for(let t=1;t<8;++t)c*=-o/(2*t*(2*t-1)),e+=c/(4*t+1);return n*e}return n*Pc*Tc([.5,.5],Wc([Math.SQRT1_2*t,-Math.SQRT1_2*t]))[0]}const ee=t=>oe(t*Pc)*Rc,ue=t=>ce(t*Pc)*Rc,se=(t,n=0,r=0,o=0)=>({w:t,x:n,y:r,z:o});function fe(t,n,r=1){const o=Math.sin(.5*n)*r;return se(Math.cos(.5*n)*r,t.v[0]*o,t.v[1]*o,t.v[2]*o)}function ie({v:[t,n,r,o,c,e,u,s,f]}){const i=t+c+f;if(i>=0){const t=Math.sqrt(1+i),c=.5/t;return{w:.5*t,x:(s-e)*c,y:(r-u)*c,z:(o-n)*c}}if(t>c&&t>f){const i=Math.sqrt(1+t-c-f),l=.5/i;return{w:(s-e)*l,x:.5*i,y:(o+n)*l,z:(r+u)*l}}if(c>f){const i=Math.sqrt(1-t+c-f),l=.5/i;return{w:(r-u)*l,x:(o+n)*l,y:.5*i,z:(s+e)*l}}{const i=Math.sqrt(1-t-c+f),l=.5/i;return{w:(o-n)*l,x:(r+u)*l,y:(s+e)*l,z:.5*i}}}function le({v:[t,n,o,c,e,u,s,f,i]}){const l=f-u,a=o-s,p=c-n,h=c+n,M=o+s,x=f+u,m=r([[t+e+i,l,a,p],[l,t-e-i,h,M],[a,h,e-t-i,x],[p,M,x,i-t-e]]);for(const t of Jc(m));const v=Kc();return ge(se(...v.v))}function ae(t,{precision:n=3}={}){return t?`${t.w.toFixed(n)} + ${t.x.toFixed(n)}i + ${t.y.toFixed(n)}j + ${t.z.toFixed(n)}k`:"(null)"}function pe({w:t,x:n,y:o,z:c}){const e=n*n,u=n*o,s=n*c,f=n*t,i=o*o,l=o*c,a=o*t,p=c*c,h=c*t,M=2/(e+i+p+t*t);return r([[1-(i+p)*M,(u-h)*M,(s+a)*M],[(u+h)*M,1-(e+p)*M,(l-f)*M],[(s-a)*M,(l+f)*M,1-(e+i)*M]])}function he({w:t,x:n,y:o,z:c}){const e=n*n,u=n*o,s=n*c,f=n*t,i=o*o,l=o*c,a=o*t,p=c*c,h=c*t;return r([[1-2*(i+p),2*(u-h),2*(s+a)],[2*(u+h),1-2*(e+p),2*(l-f)],[2*(s-a),2*(l+f),1-2*(e+i)]])}const Me=(t,n)=>({w:t.w*n.w-t.x*n.x-t.y*n.y-t.z*n.z,x:t.w*n.x+t.x*n.w+t.y*n.z-t.z*n.y,y:t.w*n.y-t.x*n.z+t.y*n.w+t.z*n.x,z:t.w*n.z+t.x*n.y-t.y*n.x+t.z*n.w}),xe=(t,n)=>Me(t,je(n)),me=(t,n)=>({w:t.w+n.w,x:t.x+n.x,y:t.y+n.y,z:t.z+n.z}),ve=(t,n,r)=>({w:t.w*n+r.w,x:t.x*n+r.x,y:t.y*n+r.y,z:t.z*n+r.z}),we=(t,n)=>({w:t.w-n.w,x:t.x-n.x,y:t.y-n.y,z:t.z-n.z}),de=({w:t,x:n,y:r,z:o},c)=>({w:t*c,x:n*c,y:r*c,z:o*c}),$e=({w:t,x:n,y:r,z:o})=>Math.hypot(t,n,r,o),ye=({w:t,x:n,y:r,z:o})=>t*t+n*n+r*r+o*o,be=({x:t,y:n,z:r})=>Math.hypot(t,n,r),Ee=({x:t,y:n,z:r})=>t*t+n*n+r*r,ze=(t,n)=>t.w*n.w+t.x*n.x+t.y*n.y+t.z*n.z,Ne=(t,n)=>$e(we(t,n)),_e=(t,n)=>ye(we(t,n)),ge=(t,n=1)=>de(t,n/$e(t)),Le=(t,n)=>de(t,Math.sign(ze(t,n))),Te=(t,n,r)=>({w:t.w+(n.w-t.w)*r,x:t.x+(n.x-t.x)*r,y:t.y+(n.y-t.y)*r,z:t.z+(n.z-t.z)*r}),Oe=(t,n,r)=>Te(Le(t,n),n,r),Ze=(t,n,r)=>ge(Te(t,n,r)),ke=(t,n,r)=>ge(Oe(t,n,r));function Ce(t,n,r){const o=ze(t,n);if(Math.abs(o)>=1-Number.EPSILON)return r>.5?n:t;const c=Math.acos(o),e=1/Math.sin(c),u=Math.sin((1-r)*c)*e,s=Math.sin(r*c)*e;return{w:t.w*u+n.w*s,x:t.x*u+n.x*s,y:t.y*u+n.y*s,z:t.z*u+n.z*s}}function De(t,n,r){const o=ze(t,n),c=Math.abs(o);if(c>=1-Number.EPSILON)return n;const e=Math.acos(c),u=1/Math.sin(e),s=Math.sin((1-r)*e)*u*Math.sign(o),f=Math.sin(r*e)*u;return{w:t.w*s+n.w*f,x:t.x*s+n.x*f,y:t.y*s+n.y*f,z:t.z*s+n.z*f}}const He=(t,n,r,o,c)=>Ce(Ce(t,o,c),Ce(n,r,c),2*c*(1-c)),Qe=({w:t,x:n,y:r,z:o})=>se(t,-n,-r,-o),je=t=>de(Qe(t),1/ye(t));function qe(t){const n=be(t),r=Math.exp(t.w),o=r*(n?Math.sin(n)/n:1);return se(Math.cos(n)*r,t.x*o,t.y*o,t.z*o)}function Ae(t){const n=$e(t),r=be(t),o=r?Math.acos(t.w/n)/r:0;return se(Math.log(n),t.x*o,t.y*o,t.z*o)}function Ve(t,n,r,o,c=-1){const e=o*o,u=c>=0;return o=>{t?t(o):n(o,o,!1);let s,f=o,i=o;const l=()=>{s=void 0,n(f,i,!1),f=i};return{move:(t,r=!1)=>{const o=vt(f,t);o>e||r?(s&&(clearTimeout(s),s=void 0),n(f,t,r),f=t):u&&(i=t,o&&!s&&(s=setTimeout(l,c)))},cancel:()=>{clearTimeout(s),r?.()}}}}function Be(t,n,r,o,c,e,u,s,f){const i=s*s,l=f*f,a=[];let p,h;return Ve(n=>{a.length=0,a.push({...n,d:0}),p=void 0,h=Fe(a,void 0),t(n)},(t,c,e)=>{const s=a[a.length-1];a.push({...c,d:s.d+wt(s,c)});let f=Fe(a,p);(f.d<i||h.n<2||f.d<h.d)&&(h=f),(f.d>l||a.length>u)&&(n(h.c,h.n),a.splice(0,h.n-1),p=h.c.c2,f=Fe(a,p),h=f),e?(a.length>1&&n(f.c,f.n),o()):r(f.c)},c,e,1e3)}function Fe(t,n){if(!t.length)throw new Error("nothing to fit");const r=t[0],o=t[t.length-1],c=so(t,n);if(!c||t.length<2)return{n:t.length,c:{p0:r,c1:r,c2:o,p3:o},d:Number.POSITIVE_INFINITY};const e=Ao(c);let u=0;const s=o.d-r.d;let f=e.fn(r);for(let n=1;n<t.length;++n){const r=e.fn(t[n]);u+=(r.x-f.x)*(f.y+r.y)/2,f=r}const i=Math.sqrt(e.scale2),l=(u-Ko(e.curve))*i,a=s-ko(c,.01*i).best;return{n:t.length,c,d:l*l+a*a}}class Ge{constructor(){this.u={i:void 0},this.u.p=this.u}push(t){const n={M:t,i:void 0};this.u.p.i=n,this.u.p=n}concat(t){t.u.i&&(this.u.p.i=t.u.i,this.u.p=t.u.p)}forEach(t){let n=this.u;for(;;){const r=n.i;if(!r)return;let o=r;t(r.M,{previous:n.M,next:r.i?.M,replace:(...t)=>{let r=o.i,c=n;const e=t.length;if(e){r=c={M:t[e-1],i:r};for(let n=e-1;n-- >0;)r={M:t[n],i:r}}this.u.p===o&&(this.u.p=c),n.i=r,o=c}}),n=o}}}export{rt as MAT1IDENT,ot as MAT2IDENT,ct as MAT2ROT90,et as MAT3IDENT,ut as MAT4IDENT,at as PT0,Ge as SingleLinkedList,Ct as aaBoxArea,Dt as aaBoxContains,Zt as aaBoxFromXY,kt as aaBoxMidpoint,Ht as aaBoxSVG,Ec as addZ,zc as addZR,jr as bezier2At,to as bezier2Bisect,Xr as bezier2Bounds,Gr as bezier2Derivative,Or as bezier2FromBezier,Hr as bezier2FromLine,Zr as bezier2FromPolylinePtsLeastSquares,kr as bezier2FromPolylinePtsLeastSquaresFixEnds,Tr as bezier2FromPts,Yr as bezier2LengthEstimate,Cr as bezier2M,Dr as bezier2MInv,Jr as bezier2NormalAt,Br as bezier2PolynomialX,Fr as bezier2PolynomialY,Kr as bezier2RMSDistance,ro as bezier2SVG,no as bezier2Split,Ir as bezier2TangentAt,Pr as bezier2Translate,Rr as bezier2TsAtXEq,Sr as bezier2TsAtYEq,qr as bezier2XAt,Ur as bezier2XTurningPointTs,Ar as bezier2YAt,Wr as bezier2YTurningPointTs,xo as bezier3At,Co as bezier3Bisect,Zo as bezier3Bounds,bo as bezier3Derivative,eo as bezier3FromBezier,po as bezier3FromBezier2,ho as bezier3FromLine,uo as bezier3FromPolylinePtsLeastSquares,so as bezier3FromPolylinePtsLeastSquaresFixEnds,co as bezier3FromPts,ao as bezier3FromQuad,ko as bezier3LengthEstimate,io as bezier3M,lo as bezier3MInv,zo as bezier3NormalAt,Ao as bezier3Normalise,$o as bezier3PolynomialX,yo as bezier3PolynomialY,No as bezier3RMSDistance,Ho as bezier3SVG,Do as bezier3Split,Eo as bezier3TangentAt,_o as bezier3Translate,go as bezier3TsAtXEq,Lo as bezier3TsAtYEq,mo as bezier3XAt,To as bezier3XTurningPointTs,vo as bezier3YAt,Oo as bezier3YTurningPointTs,pn as bezierAt,hn as bezierAtMulti,Ln as bezierBisect,En as bezierDerivative,vn as bezierElevateOrder,wn as bezierElevateOrderTo,gn as bezierFrenetNormalAt,Qr as bezierFromBezier2,Mo as bezierFromBezier3,un as bezierFromEndpoints,ir as bezierFromLine,fn as bezierFromPolylineVertsLeastSquares,ln as bezierFromPolylineVertsLeastSquaresFixEnds,sn as bezierFromQuad,en as bezierFromVecs,$n as bezierLowerOrder,yn as bezierM,bn as bezierMInv,Nn as bezierNormalAt,mn as bezierOrder,Mn as bezierPolynomials,Zn as bezierSVG,Tn as bezierSplit,zn as bezierTangentAt,_n as bezierTranslate,qt as binomial,kn as circleArea,Dn as circleBounds,Cn as circleCircumference,Hn as circleContains,Qn as circleSVG,bc as complexCompanionMat,Lc as conjugateZ,lc as cutBezier3Circle,ic as cutBezier3Rect,kc as divRZ,Zc as divZ,Uc as erf,Wc as erfZ,Xc as erfc,Yc as erfcZ,Dc as expZ,ue as fresnelCIntegral,ee as fresnelSIntegral,ec as intersectBezier3Circle,uc as intersectBezier3CircleFn,oc as intersectBezier3Line,cc as intersectBezier3Rect,Lr as intersectLineLine,sc as intersectNBezier3Circle,fc as intersectNBezier3CircleFn,Cc as invZ,tc as isOverlapAABox,nc as isOverlapAABoxCircle,rc as isOverlapAABoxCircleR2,lr as lineAt,Nr as lineBisect,br as lineBounds,mr as lineDerivative,fr as lineFromBezier,sr as lineFromPts,Er as lineLength,xr as lineMidpoint,wr as lineNormal,hr as linePolynomialX,Mr as linePolynomialY,gr as lineSVG,_r as lineSplit,vr as lineTangent,dr as lineTranslate,$r as lineTsAtXEq,yr as lineTsAtYEq,ar as lineXAt,pr as lineYAt,D as mat1Determinant,Ac as mat1Eigenvalues,Vc as mat1Eigenvector,H as mat1Inverse,Q as mat1LeftInverse,j as mat1RightInverse,C as mat1Trace,A as mat2Determinant,Bc as mat2Eigenvalues,Fc as mat2Eigenvector,B as mat2Inverse,F as mat2LeftInverse,G as mat2RightInverse,q as mat2Trace,J as mat3Determinant,Gc as mat3Eigenvalues,Ic as mat3Eigenvector,pe as mat3FromQuat,he as mat3FromUnitQuat,P as mat3Inverse,R as mat3LeftInverse,S as mat3RightInverse,I as mat3Trace,W as mat4Determinant,Jc as mat4Eigenvalues,Kc as mat4Eigenvector,X as mat4Inverse,Y as mat4LeftInverse,tt as mat4RightInverse,U as mat4Trace,m as matAdd,v as matAddColumnwise,x as matBinaryOp,T as matDeterminant,Hc as matEigenvalues,qc as matEigenvector,p as matElementNorm,h as matElementNorm2,r as matFrom,c as matFromArray,e as matFromArrayFn,o as matFromDiag,wc as matFromEyeTargetUp,ft as matFromPts,$c as matFromRotationBetween,Bt as matFromVecArray,s as matIdent,O as matInverse,Z as matLeftInverse,y as matLerp,b as matMid,g as matMinor,E as matMul,N as matMulABTranspose,z as matMulATransposeB,f as matPadIdent,i as matPrint,vc as matProjectVec3,l as matReshape,k as matRightInverse,d as matScale,$ as matScaleAdd,dc as matSkewSymmetricCrossProduct,w as matSub,V as matSumDiagDeterminant2,K as matSumDiagDeterminant3,_ as matTrace,a as matTranspose,M as matUnaryOp,L as matWindow,u as matZero,Ve as movementThrottle,Tc as mulZ,Oc as mulZR,Ko as nBezier3Area,Vo as nBezier3At,Io as nBezier3Curvature,Go as nBezier3Derivative,Jo as nBezier3InflectionTs,Po as nBezier3Moment,Bo as nBezier3XAt,Fo as nBezier3YAt,gc as negZ,Be as penTool,pc as polygonContains,ac as polygonSignedArea,xc as polyline2DFromPolyline,hc as polyline2DFromPts,Mc as polyline2DSVG,mc as polylineFromPolyline2D,yc as polylineFromVecs,Sn as polynomial2Roots,Un as polynomial3Roots,Wn as polynomial3SignedRoots,Xn as polynomial4Roots,Yn as polynomial4SignedRoots,tr as polynomial5Roots,nr as polynomial5SignedRoots,rr as polynomial7SignedRoots,Fn as polynomialAdd,qn as polynomialAt,jn as polynomialCompanionMat,Vn as polynomialDerivative,Vr as polynomialFromBezier2Values,wo as polynomialFromBezier3Values,xn as polynomialFromBezierValues,Bn as polynomialIntegral,An as polynomialMul,Pn as polynomialRoots,In as polynomialScale,Jn as polynomialShift,Gn as polynomialSub,Kn as polynomialWithSolutions,Et as ptAdd,yt as ptAngle,ht as ptCross,wt as ptDist,vt as ptDist2,pt as ptDot,it as ptFromVec,mt as ptLen,xt as ptLen2,gt as ptLerp,Nt as ptMad,Lt as ptMid,zt as ptMul,dt as ptNorm,Mt as ptReflect,$t as ptRot90,Ot as ptSVG,bt as ptSignedAngle,_t as ptSub,Tt as ptTransform,st as ptsFromMat,me as quatAdd,Qe as quatConjugate,Ne as quatDist,_e as quatDist2,xe as quatDiv,ze as quatDot,qe as quatExp,se as quatFrom,le as quatFromMat3BestFit,ie as quatFromMat3Exact,fe as quatFromRotationAround,je as quatInv,Te as quatLerp,Oe as quatLerpShortestPath,ke as quatLerpShortestPathUnit,Ze as quatLerpUnit,Ae as quatLog,ve as quatMad,Me as quatMul,Le as quatNearest,$e as quatNorm,ye as quatNorm2,ae as quatPrint,de as quatScale,Ce as quatSlerp,De as quatSlerpShortestPath,He as quatSquad,we as quatSub,ge as quatUnit,be as quatVectorNorm,Ee as quatVectorNorm2,Uo as rectArea,Wo as rectBounds,Xo as rectContains,So as rectFromAABox,Ro as rectFromLine,Yo as rectSVG,_c as subRZ,Nc as subZ,ce as unscaledFresnelCIntegral,oe as unscaledFresnelSIntegral,It as vec2Cross,Jt as vec3Cross,Yt as vecAdd,Xt as vecAngle,Vt as vecArrayFromMat,Ut as vecDist,St as vecDist2,Gt as vecDot,At as vecFrom,lt as vecFromPt,Rt as vecLen,Pt as vecLen2,on as vecLerp,nn as vecMad,cn as vecMid,tn as vecMul,Wt as vecNorm,Ft as vecPrint,Kt as vecReflect,rn as vecSub,t as zeros};
|