UNPKG

@tldraw/editor

Version:

tldraw infinite canvas SDK (editor).

8 lines (7 loc) • 14.9 kB
{ "version": 3, "sources": ["../../../src/lib/primitives/Mat.ts"], "sourcesContent": ["import { Box } from './Box'\nimport { clampRadians, HALF_PI, toDomPrecision } from './utils'\nimport { Vec, VecLike } from './Vec'\n\n/** @public */\nexport type MatLike = MatModel | Mat\n\n/** @public */\nexport interface MatModel {\n\ta: number\n\tb: number\n\tc: number\n\td: number\n\te: number\n\tf: number\n}\n\n// function getIdentity() {\n// return new Mat(1.0, 0.0, 0.0, 1.0, 0.0, 0.0)\n// }\n\n/** @public */\nexport class Mat {\n\tconstructor(a: number, b: number, c: number, d: number, e: number, f: number) {\n\t\tthis.a = a\n\t\tthis.b = b\n\t\tthis.c = c\n\t\tthis.d = d\n\t\tthis.e = e\n\t\tthis.f = f\n\t}\n\n\ta = 1.0\n\tb = 0.0\n\tc = 0.0\n\td = 1.0\n\te = 0.0\n\tf = 0.0\n\n\tequals(m: Mat | MatModel) {\n\t\treturn (\n\t\t\tthis === m ||\n\t\t\t(this.a === m.a &&\n\t\t\t\tthis.b === m.b &&\n\t\t\t\tthis.c === m.c &&\n\t\t\t\tthis.d === m.d &&\n\t\t\t\tthis.e === m.e &&\n\t\t\t\tthis.f === m.f)\n\t\t)\n\t}\n\n\tidentity() {\n\t\tthis.a = 1.0\n\t\tthis.b = 0.0\n\t\tthis.c = 0.0\n\t\tthis.d = 1.0\n\t\tthis.e = 0.0\n\t\tthis.f = 0.0\n\t\treturn this\n\t}\n\n\tmultiply(m: Mat | MatModel) {\n\t\tconst m2: MatModel = m\n\t\tconst { a, b, c, d, e, f } = this\n\t\tthis.a = a * m2.a + c * m2.b\n\t\tthis.c = a * m2.c + c * m2.d\n\t\tthis.e = a * m2.e + c * m2.f + e\n\t\tthis.b = b * m2.a + d * m2.b\n\t\tthis.d = b * m2.c + d * m2.d\n\t\tthis.f = b * m2.e + d * m2.f + f\n\t\treturn this\n\t}\n\n\trotate(r: number, cx?: number, cy?: number) {\n\t\tif (r === 0) return this\n\t\tif (cx === undefined) return this.multiply(Mat.Rotate(r))\n\t\treturn this.translate(cx, cy!).multiply(Mat.Rotate(r)).translate(-cx, -cy!)\n\t}\n\n\ttranslate(x: number, y: number): Mat {\n\t\treturn this.multiply(Mat.Translate(x, y!))\n\t}\n\n\tscale(x: number, y: number) {\n\t\treturn this.multiply(Mat.Scale(x, y))\n\t}\n\n\tinvert() {\n\t\tconst { a, b, c, d, e, f } = this\n\t\tconst denom = a * d - b * c\n\t\tthis.a = d / denom\n\t\tthis.b = b / -denom\n\t\tthis.c = c / -denom\n\t\tthis.d = a / denom\n\t\tthis.e = (d * e - c * f) / -denom\n\t\tthis.f = (b * e - a * f) / denom\n\t\treturn this\n\t}\n\n\tapplyToPoint(point: VecLike) {\n\t\treturn Mat.applyToPoint(this, point)\n\t}\n\n\tapplyToPoints(points: VecLike[]) {\n\t\treturn Mat.applyToPoints(this, points)\n\t}\n\n\trotation() {\n\t\treturn Mat.Rotation(this)\n\t}\n\n\tpoint() {\n\t\treturn Mat.Point(this)\n\t}\n\n\tdecomposed() {\n\t\treturn Mat.Decompose(this)\n\t}\n\n\ttoCssString() {\n\t\treturn Mat.toCssString(this)\n\t}\n\n\tsetTo(model: MatModel) {\n\t\tObject.assign(this, model)\n\t\treturn this\n\t}\n\n\tdecompose() {\n\t\treturn Mat.Decompose(this)\n\t}\n\n\tclone() {\n\t\treturn new Mat(this.a, this.b, this.c, this.d, this.e, this.f)\n\t}\n\n\t/* --------------------- Static --------------------- */\n\n\tstatic Identity() {\n\t\treturn new Mat(1.0, 0.0, 0.0, 1.0, 0.0, 0.0)\n\t}\n\n\tstatic Translate(x: number, y: number) {\n\t\treturn new Mat(1.0, 0.0, 0.0, 1.0, x, y)\n\t}\n\n\tstatic Rotate(r: number, cx?: number, cy?: number) {\n\t\tif (r === 0) return Mat.Identity()\n\n\t\tconst cosAngle = Math.cos(r)\n\t\tconst sinAngle = Math.sin(r)\n\n\t\tconst rotationMatrix = new Mat(cosAngle, sinAngle, -sinAngle, cosAngle, 0.0, 0.0)\n\n\t\tif (cx === undefined) return rotationMatrix\n\n\t\treturn Mat.Compose(Mat.Translate(cx, cy!), rotationMatrix, Mat.Translate(-cx, -cy!))\n\t}\n\n\tstatic Scale(x: number, y: number): Mat\n\tstatic Scale(x: number, y: number, cx: number, cy: number): Mat\n\tstatic Scale(x: number, y: number, cx?: number, cy?: number): Mat {\n\t\tconst scaleMatrix = new Mat(x, 0, 0, y, 0, 0)\n\t\tif (cx === undefined) return scaleMatrix\n\n\t\treturn Mat.Translate(cx, cy!).multiply(scaleMatrix).translate(-cx, -cy!)\n\t}\n\tstatic Multiply(m1: MatModel, m2: MatModel): MatModel {\n\t\treturn {\n\t\t\ta: m1.a * m2.a + m1.c * m2.b,\n\t\t\tc: m1.a * m2.c + m1.c * m2.d,\n\t\t\te: m1.a * m2.e + m1.c * m2.f + m1.e,\n\t\t\tb: m1.b * m2.a + m1.d * m2.b,\n\t\t\td: m1.b * m2.c + m1.d * m2.d,\n\t\t\tf: m1.b * m2.e + m1.d * m2.f + m1.f,\n\t\t}\n\t}\n\n\tstatic Inverse(m: MatModel): MatModel {\n\t\tconst denom = m.a * m.d - m.b * m.c\n\t\treturn {\n\t\t\ta: m.d / denom,\n\t\t\tb: m.b / -denom,\n\t\t\tc: m.c / -denom,\n\t\t\td: m.a / denom,\n\t\t\te: (m.d * m.e - m.c * m.f) / -denom,\n\t\t\tf: (m.b * m.e - m.a * m.f) / denom,\n\t\t}\n\t}\n\n\tstatic Absolute(m: MatLike): MatModel {\n\t\tconst denom = m.a * m.d - m.b * m.c\n\t\treturn {\n\t\t\ta: m.d / denom,\n\t\t\tb: m.b / -denom,\n\t\t\tc: m.c / -denom,\n\t\t\td: m.a / denom,\n\t\t\te: (m.d * m.e - m.c * m.f) / denom,\n\t\t\tf: (m.b * m.e - m.a * m.f) / -denom,\n\t\t}\n\t}\n\n\tstatic Compose(...matrices: MatLike[]) {\n\t\tconst matrix = Mat.Identity()\n\t\tfor (let i = 0, n = matrices.length; i < n; i++) {\n\t\t\tmatrix.multiply(matrices[i])\n\t\t}\n\t\treturn matrix\n\t}\n\n\tstatic Point(m: MatLike) {\n\t\treturn new Vec(m.e, m.f)\n\t}\n\n\tstatic Rotation(m: MatLike): number {\n\t\tlet rotation\n\n\t\tif (m.a !== 0 || m.c !== 0) {\n\t\t\tconst hypotAc = (m.a * m.a + m.c * m.c) ** 0.5\n\t\t\trotation = Math.acos(m.a / hypotAc) * (m.c > 0 ? -1 : 1)\n\t\t} else if (m.b !== 0 || m.d !== 0) {\n\t\t\tconst hypotBd = (m.b * m.b + m.d * m.d) ** 0.5\n\t\t\trotation = HALF_PI + Math.acos(m.b / hypotBd) * (m.d > 0 ? -1 : 1)\n\t\t} else {\n\t\t\trotation = 0\n\t\t}\n\n\t\treturn clampRadians(rotation)\n\t}\n\n\tstatic Decompose(m: MatLike) {\n\t\tlet scaleX, scaleY, rotation\n\n\t\tif (m.a !== 0 || m.c !== 0) {\n\t\t\tconst hypotAc = (m.a * m.a + m.c * m.c) ** 0.5\n\t\t\tscaleX = hypotAc\n\t\t\tscaleY = (m.a * m.d - m.b * m.c) / hypotAc\n\t\t\trotation = Math.acos(m.a / hypotAc) * (m.c > 0 ? -1 : 1)\n\t\t} else if (m.b !== 0 || m.d !== 0) {\n\t\t\tconst hypotBd = (m.b * m.b + m.d * m.d) ** 0.5\n\t\t\tscaleX = (m.a * m.d - m.b * m.c) / hypotBd\n\t\t\tscaleY = hypotBd\n\t\t\trotation = HALF_PI + Math.acos(m.b / hypotBd) * (m.d > 0 ? -1 : 1)\n\t\t} else {\n\t\t\tscaleX = 0\n\t\t\tscaleY = 0\n\t\t\trotation = 0\n\t\t}\n\n\t\treturn {\n\t\t\tx: m.e,\n\t\t\ty: m.f,\n\t\t\tscaleX,\n\t\t\tscaleY,\n\t\t\trotation: clampRadians(rotation),\n\t\t}\n\t}\n\n\tstatic Smooth(m: MatLike, precision = 10000000000) {\n\t\tm.a = Math.round(m.a * precision) / precision\n\t\tm.b = Math.round(m.b * precision) / precision\n\t\tm.c = Math.round(m.c * precision) / precision\n\t\tm.d = Math.round(m.d * precision) / precision\n\t\tm.e = Math.round(m.e * precision) / precision\n\t\tm.f = Math.round(m.f * precision) / precision\n\t\treturn m\n\t}\n\n\tstatic toCssString(m: MatLike) {\n\t\treturn `matrix(${toDomPrecision(m.a)}, ${toDomPrecision(m.b)}, ${toDomPrecision(\n\t\t\tm.c\n\t\t)}, ${toDomPrecision(m.d)}, ${toDomPrecision(m.e)}, ${toDomPrecision(m.f)})`\n\t}\n\n\tstatic applyToPoint(m: MatLike, point: VecLike) {\n\t\treturn new Vec(\n\t\t\tm.a * point.x + m.c * point.y + m.e,\n\t\t\tm.b * point.x + m.d * point.y + m.f,\n\t\t\tpoint.z\n\t\t)\n\t}\n\n\tstatic applyToXY(m: MatLike, x: number, y: number) {\n\t\treturn [m.a * x + m.c * y + m.e, m.b * x + m.d * y + m.f]\n\t}\n\n\tstatic applyToPoints(m: MatLike, points: VecLike[]): Vec[] {\n\t\treturn points.map(\n\t\t\t(point) =>\n\t\t\t\tnew Vec(m.a * point.x + m.c * point.y + m.e, m.b * point.x + m.d * point.y + m.f, point.z)\n\t\t)\n\t}\n\n\tstatic applyToBounds(m: MatLike, box: Box) {\n\t\treturn new Box(m.e + box.minX, m.f + box.minY, box.width, box.height)\n\t}\n\n\tstatic From(m: MatLike) {\n\t\treturn new Mat(m.a, m.b, m.c, m.d, m.e, m.f)\n\t}\n\n\tstatic Cast(m: MatLike) {\n\t\treturn m instanceof Mat ? m : Mat.From(m)\n\t}\n}\n\n/** @public */\nexport function decomposeMatrix(m: MatLike) {\n\treturn {\n\t\tx: m.e,\n\t\ty: m.f,\n\t\tscaleX: Math.sqrt(m.a * m.a + m.b * m.b),\n\t\tscaleY: Math.sqrt(m.c * m.c + m.d * m.d),\n\t\trotation: Math.atan2(m.b, m.a),\n\t}\n}\n"], "mappings": "AAAA,SAAS,WAAW;AACpB,SAAS,cAAc,SAAS,sBAAsB;AACtD,SAAS,WAAoB;AAoBtB,MAAM,IAAI;AAAA,EAChB,YAAY,GAAW,GAAW,GAAW,GAAW,GAAW,GAAW;AAC7E,SAAK,IAAI;AACT,SAAK,IAAI;AACT,SAAK,IAAI;AACT,SAAK,IAAI;AACT,SAAK,IAAI;AACT,SAAK,IAAI;AAAA,EACV;AAAA,EAEA,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EAEJ,OAAO,GAAmB;AACzB,WACC,SAAS,KACR,KAAK,MAAM,EAAE,KACb,KAAK,MAAM,EAAE,KACb,KAAK,MAAM,EAAE,KACb,KAAK,MAAM,EAAE,KACb,KAAK,MAAM,EAAE,KACb,KAAK,MAAM,EAAE;AAAA,EAEhB;AAAA,EAEA,WAAW;AACV,SAAK,IAAI;AACT,SAAK,IAAI;AACT,SAAK,IAAI;AACT,SAAK,IAAI;AACT,SAAK,IAAI;AACT,SAAK,IAAI;AACT,WAAO;AAAA,EACR;AAAA,EAEA,SAAS,GAAmB;AAC3B,UAAM,KAAe;AACrB,UAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI;AAC7B,SAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG;AAC3B,SAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG;AAC3B,SAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI;AAC/B,SAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG;AAC3B,SAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG;AAC3B,SAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI;AAC/B,WAAO;AAAA,EACR;AAAA,EAEA,OAAO,GAAW,IAAa,IAAa;AAC3C,QAAI,MAAM,EAAG,QAAO;AACpB,QAAI,OAAO,OAAW,QAAO,KAAK,SAAS,IAAI,OAAO,CAAC,CAAC;AACxD,WAAO,KAAK,UAAU,IAAI,EAAG,EAAE,SAAS,IAAI,OAAO,CAAC,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,EAAG;AAAA,EAC3E;AAAA,EAEA,UAAU,GAAW,GAAgB;AACpC,WAAO,KAAK,SAAS,IAAI,UAAU,GAAG,CAAE,CAAC;AAAA,EAC1C;AAAA,EAEA,MAAM,GAAW,GAAW;AAC3B,WAAO,KAAK,SAAS,IAAI,MAAM,GAAG,CAAC,CAAC;AAAA,EACrC;AAAA,EAEA,SAAS;AACR,UAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI;AAC7B,UAAM,QAAQ,IAAI,IAAI,IAAI;AAC1B,SAAK,IAAI,IAAI;AACb,SAAK,IAAI,IAAI,CAAC;AACd,SAAK,IAAI,IAAI,CAAC;AACd,SAAK,IAAI,IAAI;AACb,SAAK,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC;AAC5B,SAAK,KAAK,IAAI,IAAI,IAAI,KAAK;AAC3B,WAAO;AAAA,EACR;AAAA,EAEA,aAAa,OAAgB;AAC5B,WAAO,IAAI,aAAa,MAAM,KAAK;AAAA,EACpC;AAAA,EAEA,cAAc,QAAmB;AAChC,WAAO,IAAI,cAAc,MAAM,MAAM;AAAA,EACtC;AAAA,EAEA,WAAW;AACV,WAAO,IAAI,SAAS,IAAI;AAAA,EACzB;AAAA,EAEA,QAAQ;AACP,WAAO,IAAI,MAAM,IAAI;AAAA,EACtB;AAAA,EAEA,aAAa;AACZ,WAAO,IAAI,UAAU,IAAI;AAAA,EAC1B;AAAA,EAEA,cAAc;AACb,WAAO,IAAI,YAAY,IAAI;AAAA,EAC5B;AAAA,EAEA,MAAM,OAAiB;AACtB,WAAO,OAAO,MAAM,KAAK;AACzB,WAAO;AAAA,EACR;AAAA,EAEA,YAAY;AACX,WAAO,IAAI,UAAU,IAAI;AAAA,EAC1B;AAAA,EAEA,QAAQ;AACP,WAAO,IAAI,IAAI,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AAAA,EAC9D;AAAA;AAAA,EAIA,OAAO,WAAW;AACjB,WAAO,IAAI,IAAI,GAAK,GAAK,GAAK,GAAK,GAAK,CAAG;AAAA,EAC5C;AAAA,EAEA,OAAO,UAAU,GAAW,GAAW;AACtC,WAAO,IAAI,IAAI,GAAK,GAAK,GAAK,GAAK,GAAG,CAAC;AAAA,EACxC;AAAA,EAEA,OAAO,OAAO,GAAW,IAAa,IAAa;AAClD,QAAI,MAAM,EAAG,QAAO,IAAI,SAAS;AAEjC,UAAM,WAAW,KAAK,IAAI,CAAC;AAC3B,UAAM,WAAW,KAAK,IAAI,CAAC;AAE3B,UAAM,iBAAiB,IAAI,IAAI,UAAU,UAAU,CAAC,UAAU,UAAU,GAAK,CAAG;AAEhF,QAAI,OAAO,OAAW,QAAO;AAE7B,WAAO,IAAI,QAAQ,IAAI,UAAU,IAAI,EAAG,GAAG,gBAAgB,IAAI,UAAU,CAAC,IAAI,CAAC,EAAG,CAAC;AAAA,EACpF;AAAA,EAIA,OAAO,MAAM,GAAW,GAAW,IAAa,IAAkB;AACjE,UAAM,cAAc,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC5C,QAAI,OAAO,OAAW,QAAO;AAE7B,WAAO,IAAI,UAAU,IAAI,EAAG,EAAE,SAAS,WAAW,EAAE,UAAU,CAAC,IAAI,CAAC,EAAG;AAAA,EACxE;AAAA,EACA,OAAO,SAAS,IAAc,IAAwB;AACrD,WAAO;AAAA,MACN,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG;AAAA,MAC3B,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG;AAAA,MAC3B,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG;AAAA,MAClC,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG;AAAA,MAC3B,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG;AAAA,MAC3B,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG;AAAA,IACnC;AAAA,EACD;AAAA,EAEA,OAAO,QAAQ,GAAuB;AACrC,UAAM,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;AAClC,WAAO;AAAA,MACN,GAAG,EAAE,IAAI;AAAA,MACT,GAAG,EAAE,IAAI,CAAC;AAAA,MACV,GAAG,EAAE,IAAI,CAAC;AAAA,MACV,GAAG,EAAE,IAAI;AAAA,MACT,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC;AAAA,MAC9B,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK;AAAA,IAC9B;AAAA,EACD;AAAA,EAEA,OAAO,SAAS,GAAsB;AACrC,UAAM,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;AAClC,WAAO;AAAA,MACN,GAAG,EAAE,IAAI;AAAA,MACT,GAAG,EAAE,IAAI,CAAC;AAAA,MACV,GAAG,EAAE,IAAI,CAAC;AAAA,MACV,GAAG,EAAE,IAAI;AAAA,MACT,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK;AAAA,MAC7B,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC;AAAA,IAC/B;AAAA,EACD;AAAA,EAEA,OAAO,WAAW,UAAqB;AACtC,UAAM,SAAS,IAAI,SAAS;AAC5B,aAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,IAAI,GAAG,KAAK;AAChD,aAAO,SAAS,SAAS,CAAC,CAAC;AAAA,IAC5B;AACA,WAAO;AAAA,EACR;AAAA,EAEA,OAAO,MAAM,GAAY;AACxB,WAAO,IAAI,IAAI,EAAE,GAAG,EAAE,CAAC;AAAA,EACxB;AAAA,EAEA,OAAO,SAAS,GAAoB;AACnC,QAAI;AAEJ,QAAI,EAAE,MAAM,KAAK,EAAE,MAAM,GAAG;AAC3B,YAAM,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM;AAC3C,iBAAW,KAAK,KAAK,EAAE,IAAI,OAAO,KAAK,EAAE,IAAI,IAAI,KAAK;AAAA,IACvD,WAAW,EAAE,MAAM,KAAK,EAAE,MAAM,GAAG;AAClC,YAAM,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM;AAC3C,iBAAW,UAAU,KAAK,KAAK,EAAE,IAAI,OAAO,KAAK,EAAE,IAAI,IAAI,KAAK;AAAA,IACjE,OAAO;AACN,iBAAW;AAAA,IACZ;AAEA,WAAO,aAAa,QAAQ;AAAA,EAC7B;AAAA,EAEA,OAAO,UAAU,GAAY;AAC5B,QAAI,QAAQ,QAAQ;AAEpB,QAAI,EAAE,MAAM,KAAK,EAAE,MAAM,GAAG;AAC3B,YAAM,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM;AAC3C,eAAS;AACT,gBAAU,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK;AACnC,iBAAW,KAAK,KAAK,EAAE,IAAI,OAAO,KAAK,EAAE,IAAI,IAAI,KAAK;AAAA,IACvD,WAAW,EAAE,MAAM,KAAK,EAAE,MAAM,GAAG;AAClC,YAAM,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM;AAC3C,gBAAU,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK;AACnC,eAAS;AACT,iBAAW,UAAU,KAAK,KAAK,EAAE,IAAI,OAAO,KAAK,EAAE,IAAI,IAAI,KAAK;AAAA,IACjE,OAAO;AACN,eAAS;AACT,eAAS;AACT,iBAAW;AAAA,IACZ;AAEA,WAAO;AAAA,MACN,GAAG,EAAE;AAAA,MACL,GAAG,EAAE;AAAA,MACL;AAAA,MACA;AAAA,MACA,UAAU,aAAa,QAAQ;AAAA,IAChC;AAAA,EACD;AAAA,EAEA,OAAO,OAAO,GAAY,YAAY,MAAa;AAClD,MAAE,IAAI,KAAK,MAAM,EAAE,IAAI,SAAS,IAAI;AACpC,MAAE,IAAI,KAAK,MAAM,EAAE,IAAI,SAAS,IAAI;AACpC,MAAE,IAAI,KAAK,MAAM,EAAE,IAAI,SAAS,IAAI;AACpC,MAAE,IAAI,KAAK,MAAM,EAAE,IAAI,SAAS,IAAI;AACpC,MAAE,IAAI,KAAK,MAAM,EAAE,IAAI,SAAS,IAAI;AACpC,MAAE,IAAI,KAAK,MAAM,EAAE,IAAI,SAAS,IAAI;AACpC,WAAO;AAAA,EACR;AAAA,EAEA,OAAO,YAAY,GAAY;AAC9B,WAAO,UAAU,eAAe,EAAE,CAAC,CAAC,KAAK,eAAe,EAAE,CAAC,CAAC,KAAK;AAAA,MAChE,EAAE;AAAA,IACH,CAAC,KAAK,eAAe,EAAE,CAAC,CAAC,KAAK,eAAe,EAAE,CAAC,CAAC,KAAK,eAAe,EAAE,CAAC,CAAC;AAAA,EAC1E;AAAA,EAEA,OAAO,aAAa,GAAY,OAAgB;AAC/C,WAAO,IAAI;AAAA,MACV,EAAE,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,IAAI,EAAE;AAAA,MAClC,EAAE,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,IAAI,EAAE;AAAA,MAClC,MAAM;AAAA,IACP;AAAA,EACD;AAAA,EAEA,OAAO,UAAU,GAAY,GAAW,GAAW;AAClD,WAAO,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,GAAG,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;AAAA,EACzD;AAAA,EAEA,OAAO,cAAc,GAAY,QAA0B;AAC1D,WAAO,OAAO;AAAA,MACb,CAAC,UACA,IAAI,IAAI,EAAE,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,IAAI,EAAE,GAAG,EAAE,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,IAAI,EAAE,GAAG,MAAM,CAAC;AAAA,IAC3F;AAAA,EACD;AAAA,EAEA,OAAO,cAAc,GAAY,KAAU;AAC1C,WAAO,IAAI,IAAI,EAAE,IAAI,IAAI,MAAM,EAAE,IAAI,IAAI,MAAM,IAAI,OAAO,IAAI,MAAM;AAAA,EACrE;AAAA,EAEA,OAAO,KAAK,GAAY;AACvB,WAAO,IAAI,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAAA,EAC5C;AAAA,EAEA,OAAO,KAAK,GAAY;AACvB,WAAO,aAAa,MAAM,IAAI,IAAI,KAAK,CAAC;AAAA,EACzC;AACD;AAGO,SAAS,gBAAgB,GAAY;AAC3C,SAAO;AAAA,IACN,GAAG,EAAE;AAAA,IACL,GAAG,EAAE;AAAA,IACL,QAAQ,KAAK,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAAA,IACvC,QAAQ,KAAK,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAAA,IACvC,UAAU,KAAK,MAAM,EAAE,GAAG,EAAE,CAAC;AAAA,EAC9B;AACD;", "names": [] }