{
  "version": 3,
  "sources": ["../src/index.ts"],
  "sourcesContent": ["export class Vec {\n  /**\n   * Clamp a value into a range.\n   * @param n\n   * @param min\n   */\n  static clamp(n: number, min: number): number\n  static clamp(n: number, min: number, max: number): number\n  static clamp(n: number, min: number, max?: number): number {\n    return Math.max(min, typeof max !== 'undefined' ? Math.min(n, max) : n)\n  }\n\n  /**\n   * Clamp a value into a range.\n   * @param n\n   * @param min\n   */\n  static clampV(A: number[], min: number): number[]\n  static clampV(A: number[], min: number, max: number): number[]\n  static clampV(A: number[], min: number, max?: number): number[] {\n    return A.map((n) => (max ? Vec.clamp(n, min, max) : Vec.clamp(n, min)))\n  }\n\n  /**\n   * Negate a vector.\n   * @param A\n   */\n  static neg = (A: number[]): number[] => {\n    return [-A[0], -A[1]]\n  }\n\n  /**\n   * Add vectors.\n   * @param A\n   * @param B\n   */\n  static add = (A: number[], B: number[]): number[] => {\n    return [A[0] + B[0], A[1] + B[1]]\n  }\n\n  /**\n   * Add scalar to vector.\n   * @param A\n   * @param B\n   */\n  static addScalar = (A: number[], n: number): number[] => {\n    return [A[0] + n, A[1] + n]\n  }\n\n  /**\n   * Subtract vectors.\n   * @param A\n   * @param B\n   */\n  static sub = (A: number[], B: number[]): number[] => {\n    return [A[0] - B[0], A[1] - B[1]]\n  }\n\n  /**\n   * Subtract scalar from vector.\n   * @param A\n   * @param B\n   */\n  static subScalar = (A: number[], n: number): number[] => {\n    return [A[0] - n, A[1] - n]\n  }\n\n  /**\n   * Get the vector from vectors A to B.\n   * @param A\n   * @param B\n   */\n  static vec = (A: number[], B: number[]): number[] => {\n    // A, B as vectors get the vector from A to B\n    return [B[0] - A[0], B[1] - A[1]]\n  }\n\n  /**\n   * Vector multiplication by scalar\n   * @param A\n   * @param n\n   */\n  static mul = (A: number[], n: number): number[] => {\n    return [A[0] * n, A[1] * n]\n  }\n\n  /**\n   * Multiple two vectors.\n   * @param A\n   * @param B\n   */\n  static mulV = (A: number[], B: number[]): number[] => {\n    return [A[0] * B[0], A[1] * B[1]]\n  }\n\n  /**\n   * Vector division by scalar.\n   * @param A\n   * @param n\n   */\n  static div = (A: number[], n: number): number[] => {\n    return [A[0] / n, A[1] / n]\n  }\n\n  /**\n   * Vector division by vector.\n   * @param A\n   * @param n\n   */\n  static divV = (A: number[], B: number[]): number[] => {\n    return [A[0] / B[0], A[1] / B[1]]\n  }\n\n  /**\n   * Perpendicular rotation of a vector A\n   * @param A\n   */\n  static per = (A: number[]): number[] => {\n    return [A[1], -A[0]]\n  }\n\n  /**\n   * Dot product\n   * @param A\n   * @param B\n   */\n  static dpr = (A: number[], B: number[]): number => {\n    return A[0] * B[0] + A[1] * B[1]\n  }\n\n  /**\n   * Cross product (outer product) | A X B |\n   * @param A\n   * @param B\n   */\n  static cpr = (A: number[], B: number[]): number => {\n    return A[0] * B[1] - B[0] * A[1]\n  }\n\n  /**\n   * Cross (for point in polygon)\n   *\n   */\n  static cross(x: number[], y: number[], z: number[]): number {\n    return (y[0] - x[0]) * (z[1] - x[1]) - (z[0] - x[0]) * (y[1] - x[1])\n  }\n\n  /**\n   * Length of the vector squared\n   * @param A\n   */\n  static len2 = (A: number[]): number => {\n    return A[0] * A[0] + A[1] * A[1]\n  }\n\n  /**\n   * Length of the vector\n   * @param A\n   */\n  static len = (A: number[]): number => {\n    return Math.hypot(A[0], A[1])\n  }\n\n  /**\n   * Project A over B\n   * @param A\n   * @param B\n   */\n  static pry = (A: number[], B: number[]): number => {\n    return Vec.dpr(A, B) / Vec.len(B)\n  }\n\n  /**\n   * Get normalized / unit vector.\n   * @param A\n   */\n  static uni = (A: number[]): number[] => {\n    return Vec.div(A, Vec.len(A))\n  }\n\n  /**\n   * Get normalized / unit vector.\n   * @param A\n   */\n  static normalize = (A: number[]): number[] => {\n    return Vec.uni(A)\n  }\n\n  /**\n   * Get the tangent between two vectors.\n   * @param A\n   * @param B\n   * @returns\n   */\n  static tangent = (A: number[], B: number[]): number[] => {\n    return Vec.uni(Vec.sub(A, B))\n  }\n\n  /**\n   * Dist length from A to B squared.\n   * @param A\n   * @param B\n   */\n  static dist2 = (A: number[], B: number[]): number => {\n    return Vec.len2(Vec.sub(A, B))\n  }\n\n  /**\n   * Dist length from A to B\n   * @param A\n   * @param B\n   */\n  static dist = (A: number[], B: number[]): number => {\n    return Math.hypot(A[1] - B[1], A[0] - B[0])\n  }\n\n  /**\n   * A faster, though less accurate method for testing distances. Maybe faster?\n   * @param A\n   * @param B\n   * @returns\n   */\n  static fastDist = (A: number[], B: number[]): number[] => {\n    const V = [B[0] - A[0], B[1] - A[1]]\n    const aV = [Math.abs(V[0]), Math.abs(V[1])]\n    let r = 1 / Math.max(aV[0], aV[1])\n    r = r * (1.29289 - (aV[0] + aV[1]) * r * 0.29289)\n    return [V[0] * r, V[1] * r]\n  }\n\n  /**\n   * Angle between vector A and vector B in radians\n   * @param A\n   * @param B\n   */\n  static ang = (A: number[], B: number[]): number => {\n    return Math.atan2(Vec.cpr(A, B), Vec.dpr(A, B))\n  }\n\n  /**\n   * Angle between vector A and vector B in radians\n   * @param A\n   * @param B\n   */\n  static angle = (A: number[], B: number[]): number => {\n    return Math.atan2(B[1] - A[1], B[0] - A[0])\n  }\n\n  /**\n   * Mean between two vectors or mid vector between two vectors\n   * @param A\n   * @param B\n   */\n  static med = (A: number[], B: number[]): number[] => {\n    return Vec.mul(Vec.add(A, B), 0.5)\n  }\n\n  /**\n   * Vector rotation by r (radians)\n   * @param A\n   * @param r rotation in radians\n   */\n  static rot = (A: number[], r = 0): number[] => {\n    return [A[0] * Math.cos(r) - A[1] * Math.sin(r), A[0] * Math.sin(r) + A[1] * Math.cos(r)]\n  }\n\n  /**\n   * Rotate a vector around another vector by r (radians)\n   * @param A vector\n   * @param C center\n   * @param r rotation in radians\n   */\n  static rotWith = (A: number[], C: number[], r = 0): number[] => {\n    if (r === 0) return A\n\n    const s = Math.sin(r)\n    const c = Math.cos(r)\n\n    const px = A[0] - C[0]\n    const py = A[1] - C[1]\n\n    const nx = px * c - py * s\n    const ny = px * s + py * c\n\n    return [nx + C[0], ny + C[1]]\n  }\n\n  /**\n   * Check of two vectors are identical.\n   * @param A\n   * @param B\n   */\n  static isEqual = (A: number[], B: number[]): boolean => {\n    return A[0] === B[0] && A[1] === B[1]\n  }\n\n  /**\n   * Interpolate vector A to B with a scalar t\n   * @param A\n   * @param B\n   * @param t scalar\n   */\n  static lrp = (A: number[], B: number[], t: number): number[] => {\n    return Vec.add(A, Vec.mul(Vec.sub(B, A), t))\n  }\n\n  /**\n   * Interpolate from A to B when curVAL goes fromVAL: number[] => to\n   * @param A\n   * @param B\n   * @param from Starting value\n   * @param to Ending value\n   * @param s Strength\n   */\n  static int = (A: number[], B: number[], from: number, to: number, s = 1): number[] => {\n    const t = (Vec.clamp(from, to) - from) / (to - from)\n    return Vec.add(Vec.mul(A, 1 - t), Vec.mul(B, s))\n  }\n\n  /**\n   * Get the angle between the three vectors A, B, and C.\n   * @param p1\n   * @param pc\n   * @param p2\n   */\n  static ang3 = (p1: number[], pc: number[], p2: number[]): number => {\n    // this,\n    const v1 = Vec.vec(pc, p1)\n    const v2 = Vec.vec(pc, p2)\n    return Vec.ang(v1, v2)\n  }\n\n  /**\n   * Absolute value of a vector.\n   * @param A\n   * @returns\n   */\n  static abs = (A: number[]): number[] => {\n    return [Math.abs(A[0]), Math.abs(A[1])]\n  }\n\n  static rescale = (a: number[], n: number): number[] => {\n    const l = Vec.len(a)\n    return [(n * a[0]) / l, (n * a[1]) / l]\n  }\n\n  /**\n   * Get whether p1 is left of p2, relative to pc.\n   * @param p1\n   * @param pc\n   * @param p2\n   */\n  static isLeft = (p1: number[], pc: number[], p2: number[]): number => {\n    //  isLeft: >0 for counterclockwise\n    //          =0 for none (degenerate)\n    //          <0 for clockwise\n    return (pc[0] - p1[0]) * (p2[1] - p1[1]) - (p2[0] - p1[0]) * (pc[1] - p1[1])\n  }\n\n  /**\n   * Get whether p1 is left of p2, relative to pc.\n   * @param p1\n   * @param pc\n   * @param p2\n   */\n  static clockwise = (p1: number[], pc: number[], p2: number[]): boolean => {\n    return Vec.isLeft(p1, pc, p2) > 0\n  }\n\n  /**\n   * Round a vector to two decimal places.\n   * @param a\n   */\n  static toFixed = (a: number[]): number[] => {\n    return a.map((v) => Math.round(v * 100) / 100)\n  }\n\n  /**\n   * Snap vector to nearest step.\n   * @param A\n   * @param step\n   * @example\n   * ```ts\n   * Vec.snap([10.5, 28], 10) // [10, 30]\n   * ```\n   */\n  static snap(a: number[], step = 1) {\n    return [Math.round(a[0] / step) * step, Math.round(a[1] / step) * step]\n  }\n\n  /**\n   * Get the nearest point on a line with a known unit vector that passes through point A\n   * @param A Any point on the line\n   * @param u The unit vector for the line.\n   * @param P A point not on the line to test.\n   * @returns\n   */\n  static nearestPointOnLineThroughPoint = (A: number[], u: number[], P: number[]): number[] => {\n    return Vec.add(A, Vec.mul(u, Vec.pry(Vec.sub(P, A), u)))\n  }\n\n  /**\n   * Distance between a point and a line with a known unit vector that passes through a point.\n   * @param A Any point on the line\n   * @param u The unit vector for the line.\n   * @param P A point not on the line to test.\n   * @returns\n   */\n  static distanceToLineThroughPoint = (A: number[], u: number[], P: number[]): number => {\n    return Vec.dist(P, Vec.nearestPointOnLineThroughPoint(A, u, P))\n  }\n\n  /**\n   * Get the nearest point on a line segment between A and B\n   * @param A The start of the line segment\n   * @param B The end of the line segment\n   * @param P The off-line point\n   * @param clamp Whether to clamp the point between A and B.\n   * @returns\n   */\n  static nearestPointOnLineSegment = (\n    A: number[],\n    B: number[],\n    P: number[],\n    clamp = true\n  ): number[] => {\n    const u = Vec.uni(Vec.sub(B, A))\n    const C = Vec.add(A, Vec.mul(u, Vec.pry(Vec.sub(P, A), u)))\n\n    if (clamp) {\n      if (C[0] < Math.min(A[0], B[0])) return A[0] < B[0] ? A : B\n      if (C[0] > Math.max(A[0], B[0])) return A[0] > B[0] ? A : B\n      if (C[1] < Math.min(A[1], B[1])) return A[1] < B[1] ? A : B\n      if (C[1] > Math.max(A[1], B[1])) return A[1] > B[1] ? A : B\n    }\n\n    return C\n  }\n\n  /**\n   * Distance between a point and the nearest point on a line segment between A and B\n   * @param A The start of the line segment\n   * @param B The end of the line segment\n   * @param P The off-line point\n   * @param clamp Whether to clamp the point between A and B.\n   * @returns\n   */\n  static distanceToLineSegment = (A: number[], B: number[], P: number[], clamp = true): number => {\n    return Vec.dist(P, Vec.nearestPointOnLineSegment(A, B, P, clamp))\n  }\n\n  /**\n   * Get the nearest point on a bounding box to a point P.\n   * @param bounds The bounding box\n   * @param P The point point\n   * @returns\n   */\n  static nearestPointOnBounds = (\n    bounds: {\n      minX: number\n      minY: number\n      maxX: number\n      maxY: number\n    },\n    P: number[]\n  ): number[] => {\n    return [Vec.clamp(P[0], bounds.minX, bounds.maxX), Vec.clamp(P[1], bounds.minY, bounds.maxY)]\n  }\n\n  /**\n   * Distance between a point and the nearest point on a bounding box.\n   * @param bounds The bounding box.\n   * @param P The point\n   * @returns\n   */\n  static distanceToBounds = (\n    bounds: {\n      minX: number\n      minY: number\n      maxX: number\n      maxY: number\n    },\n    P: number[]\n  ): number => {\n    return Vec.dist(P, Vec.nearestPointOnBounds(bounds, P))\n  }\n\n  /**\n   * Push a point A towards point B by a given distance.\n   * @param A\n   * @param B\n   * @param d\n   * @returns\n   */\n  static nudge = (A: number[], B: number[], d: number): number[] => {\n    if (Vec.isEqual(A, B)) return A\n    return Vec.add(A, Vec.mul(Vec.uni(Vec.sub(B, A)), d))\n  }\n\n  /**\n   * Push a point in a given angle by a given distance.\n   * @param A\n   * @param B\n   * @param d\n   */\n  static nudgeAtAngle = (A: number[], a: number, d: number): number[] => {\n    return [Math.cos(a) * d + A[0], Math.sin(a) * d + A[1]]\n  }\n\n  /**\n   * Round a vector to a precision length.\n   * @param a\n   * @param n\n   */\n  static toPrecision = (a: number[], n = 4): number[] => {\n    return [+a[0].toPrecision(n), +a[1].toPrecision(n)]\n  }\n\n  /**\n   * Get an array of points between two points.\n   * @param A The first point.\n   * @param B The second point.\n   * @param steps The number of points to return.\n   */\n  static pointsBetween = (A: number[], B: number[], steps = 6): number[][] => {\n    return Array.from(Array(steps)).map((_, i) => {\n      const t = i / (steps - 1)\n      const k = Math.min(1, 0.5 + Math.abs(0.5 - t))\n      return [...Vec.lrp(A, B, t), k]\n    })\n  }\n\n  /**\n   * Get the slope between two points.\n   * @param A\n   * @param B\n   */\n  static slope = (A: number[], B: number[]) => {\n    if (A[0] === B[0]) return NaN\n    return (A[1] - B[1]) / (A[0] - B[0])\n  }\n\n  /**\n   * Get a vector comprised of the maximum of two or more vectors.\n   */\n  static max = (...v: number[][]) => {\n    return [Math.max(...v.map((a) => a[0])), Math.max(...v.map((a) => a[1]))]\n  }\n\n  /**\n   * Get a vector comprised of the minimum of two or more vectors.\n   */\n  static min = (...v: number[][]) => {\n    return [Math.min(...v.map((a) => a[0])), Math.min(...v.map((a) => a[1]))]\n  }\n}\n\nexport default Vec\n"],
  "mappings": "wKAAO,WAAU,OAQR,OAAM,EAAW,EAAa,EAAsB,CACzD,MAAO,MAAK,IAAI,EAAK,MAAO,IAAQ,YAAc,KAAK,IAAI,EAAG,GAAO,SAUhE,QAAO,EAAa,EAAa,EAAwB,CAC9D,MAAO,GAAE,IAAI,AAAC,GAAO,EAAM,EAAI,MAAM,EAAG,EAAK,GAAO,EAAI,MAAM,EAAG,UA2H5D,OAAM,EAAa,EAAa,EAAqB,CAC1D,MAAQ,GAAE,GAAK,EAAE,IAAO,GAAE,GAAK,EAAE,IAAO,GAAE,GAAK,EAAE,IAAO,GAAE,GAAK,EAAE,UAkP5D,MAAK,EAAa,EAAO,EAAG,CACjC,MAAO,CAAC,KAAK,MAAM,EAAE,GAAK,GAAQ,EAAM,KAAK,MAAM,EAAE,GAAK,GAAQ,KAnY/D,IA2BE,EA3BF,EA2BE,MAAM,AAAC,GACL,CAAC,CAAC,EAAE,GAAI,CAAC,EAAE,KAQb,EApCF,EAoCE,MAAM,CAAC,EAAa,IAClB,CAAC,EAAE,GAAK,EAAE,GAAI,EAAE,GAAK,EAAE,KAQzB,EA7CF,EA6CE,YAAY,CAAC,EAAa,IACxB,CAAC,EAAE,GAAK,EAAG,EAAE,GAAK,IAQpB,EAtDF,EAsDE,MAAM,CAAC,EAAa,IAClB,CAAC,EAAE,GAAK,EAAE,GAAI,EAAE,GAAK,EAAE,KAQzB,EA/DF,EA+DE,YAAY,CAAC,EAAa,IACxB,CAAC,EAAE,GAAK,EAAG,EAAE,GAAK,IAQpB,EAxEF,EAwEE,MAAM,CAAC,EAAa,IAElB,CAAC,EAAE,GAAK,EAAE,GAAI,EAAE,GAAK,EAAE,KAQzB,EAlFF,EAkFE,MAAM,CAAC,EAAa,IAClB,CAAC,EAAE,GAAK,EAAG,EAAE,GAAK,IAQpB,EA3FF,EA2FE,OAAO,CAAC,EAAa,IACnB,CAAC,EAAE,GAAK,EAAE,GAAI,EAAE,GAAK,EAAE,KAQzB,EApGF,EAoGE,MAAM,CAAC,EAAa,IAClB,CAAC,EAAE,GAAK,EAAG,EAAE,GAAK,IAQpB,EA7GF,EA6GE,OAAO,CAAC,EAAa,IACnB,CAAC,EAAE,GAAK,EAAE,GAAI,EAAE,GAAK,EAAE,KAOzB,EArHF,EAqHE,MAAM,AAAC,GACL,CAAC,EAAE,GAAI,CAAC,EAAE,KAQZ,EA9HF,EA8HE,MAAM,CAAC,EAAa,IAClB,EAAE,GAAK,EAAE,GAAK,EAAE,GAAK,EAAE,IAQzB,EAvIF,EAuIE,MAAM,CAAC,EAAa,IAClB,EAAE,GAAK,EAAE,GAAK,EAAE,GAAK,EAAE,IAezB,EAvJF,EAuJE,OAAO,AAAC,GACN,EAAE,GAAK,EAAE,GAAK,EAAE,GAAK,EAAE,IAOzB,EA/JF,EA+JE,MAAM,AAAC,GACL,KAAK,MAAM,EAAE,GAAI,EAAE,KAQrB,EAxKF,EAwKE,MAAM,CAAC,EAAa,IAClB,EAAI,IAAI,EAAG,GAAK,EAAI,IAAI,IAO1B,EAhLF,EAgLE,MAAM,AAAC,GACL,EAAI,IAAI,EAAG,EAAI,IAAI,KAOrB,EAxLF,EAwLE,YAAY,AAAC,GACX,EAAI,IAAI,IASV,EAlMF,EAkME,UAAU,CAAC,EAAa,IACtB,EAAI,IAAI,EAAI,IAAI,EAAG,KAQrB,EA3MF,EA2ME,QAAQ,CAAC,EAAa,IACpB,EAAI,KAAK,EAAI,IAAI,EAAG,KAQtB,EApNF,EAoNE,OAAO,CAAC,EAAa,IACnB,KAAK,MAAM,EAAE,GAAK,EAAE,GAAI,EAAE,GAAK,EAAE,KASnC,EA9NF,EA8NE,WAAW,CAAC,EAAa,IAA0B,CACxD,GAAM,GAAI,CAAC,EAAE,GAAK,EAAE,GAAI,EAAE,GAAK,EAAE,IAC3B,EAAK,CAAC,KAAK,IAAI,EAAE,IAAK,KAAK,IAAI,EAAE,KACnC,EAAI,EAAI,KAAK,IAAI,EAAG,GAAI,EAAG,IAC/B,SAAI,EAAK,SAAW,GAAG,GAAK,EAAG,IAAM,EAAI,QAClC,CAAC,EAAE,GAAK,EAAG,EAAE,GAAK,KAQpB,EA3OF,EA2OE,MAAM,CAAC,EAAa,IAClB,KAAK,MAAM,EAAI,IAAI,EAAG,GAAI,EAAI,IAAI,EAAG,KAQvC,EApPF,EAoPE,QAAQ,CAAC,EAAa,IACpB,KAAK,MAAM,EAAE,GAAK,EAAE,GAAI,EAAE,GAAK,EAAE,KAQnC,EA7PF,EA6PE,MAAM,CAAC,EAAa,IAClB,EAAI,IAAI,EAAI,IAAI,EAAG,GAAI,KAQzB,EAtQF,EAsQE,MAAM,CAAC,EAAa,EAAI,IACtB,CAAC,EAAE,GAAK,KAAK,IAAI,GAAK,EAAE,GAAK,KAAK,IAAI,GAAI,EAAE,GAAK,KAAK,IAAI,GAAK,EAAE,GAAK,KAAK,IAAI,KASjF,EAhRF,EAgRE,UAAU,CAAC,EAAa,EAAa,EAAI,IAAgB,CAC9D,GAAI,IAAM,EAAG,MAAO,GAEpB,GAAM,GAAI,KAAK,IAAI,GACb,EAAI,KAAK,IAAI,GAEb,EAAK,EAAE,GAAK,EAAE,GACd,EAAK,EAAE,GAAK,EAAE,GAEd,EAAK,EAAK,EAAI,EAAK,EACnB,EAAK,EAAK,EAAI,EAAK,EAEzB,MAAO,CAAC,EAAK,EAAE,GAAI,EAAK,EAAE,MAQrB,EApSF,EAoSE,UAAU,CAAC,EAAa,IACtB,EAAE,KAAO,EAAE,IAAM,EAAE,KAAO,EAAE,IAS9B,EA9SF,EA8SE,MAAM,CAAC,EAAa,EAAa,IAC/B,EAAI,IAAI,EAAG,EAAI,IAAI,EAAI,IAAI,EAAG,GAAI,KAWpC,EA1TF,EA0TE,MAAM,CAAC,EAAa,EAAa,EAAc,EAAY,EAAI,IAAgB,CACpF,GAAM,GAAK,GAAI,MAAM,EAAM,GAAM,GAAS,GAAK,GAC/C,MAAO,GAAI,IAAI,EAAI,IAAI,EAAG,EAAI,GAAI,EAAI,IAAI,EAAG,MASxC,EArUF,EAqUE,OAAO,CAAC,EAAc,EAAc,IAAyB,CAElE,GAAM,GAAK,EAAI,IAAI,EAAI,GACjB,EAAK,EAAI,IAAI,EAAI,GACvB,MAAO,GAAI,IAAI,EAAI,KAQd,EAjVF,EAiVE,MAAM,AAAC,GACL,CAAC,KAAK,IAAI,EAAE,IAAK,KAAK,IAAI,EAAE,MAG9B,EArVF,EAqVE,UAAU,CAAC,EAAa,IAAwB,CACrD,GAAM,GAAI,EAAI,IAAI,GAClB,MAAO,CAAE,EAAI,EAAE,GAAM,EAAI,EAAI,EAAE,GAAM,KAShC,EAhWF,EAgWE,SAAS,CAAC,EAAc,EAAc,IAInC,GAAG,GAAK,EAAG,IAAO,GAAG,GAAK,EAAG,IAAO,GAAG,GAAK,EAAG,IAAO,GAAG,GAAK,EAAG,KASpE,EA7WF,EA6WE,YAAY,CAAC,EAAc,EAAc,IACvC,EAAI,OAAO,EAAI,EAAI,GAAM,GAO3B,EArXF,EAqXE,UAAU,AAAC,GACT,EAAE,IAAI,AAAC,GAAM,KAAK,MAAM,EAAI,KAAO,MAuBrC,EA7YF,EA6YE,iCAAiC,CAAC,EAAa,EAAa,IAC1D,EAAI,IAAI,EAAG,EAAI,IAAI,EAAG,EAAI,IAAI,EAAI,IAAI,EAAG,GAAI,MAU/C,EAxZF,EAwZE,6BAA6B,CAAC,EAAa,EAAa,IACtD,EAAI,KAAK,EAAG,EAAI,+BAA+B,EAAG,EAAG,KAWvD,EApaF,EAoaE,4BAA4B,CACjC,EACA,EACA,EACA,EAAQ,KACK,CACb,GAAM,GAAI,EAAI,IAAI,EAAI,IAAI,EAAG,IACvB,EAAI,EAAI,IAAI,EAAG,EAAI,IAAI,EAAG,EAAI,IAAI,EAAI,IAAI,EAAG,GAAI,KAEvD,GAAI,EAAO,CACT,GAAI,EAAE,GAAK,KAAK,IAAI,EAAE,GAAI,EAAE,IAAK,MAAO,GAAE,GAAK,EAAE,GAAK,EAAI,EAC1D,GAAI,EAAE,GAAK,KAAK,IAAI,EAAE,GAAI,EAAE,IAAK,MAAO,GAAE,GAAK,EAAE,GAAK,EAAI,EAC1D,GAAI,EAAE,GAAK,KAAK,IAAI,EAAE,GAAI,EAAE,IAAK,MAAO,GAAE,GAAK,EAAE,GAAK,EAAI,EAC1D,GAAI,EAAE,GAAK,KAAK,IAAI,EAAE,GAAI,EAAE,IAAK,MAAO,GAAE,GAAK,EAAE,GAAK,EAAI,EAG5D,MAAO,KAWF,EA/bF,EA+bE,wBAAwB,CAAC,EAAa,EAAa,EAAa,EAAQ,KACtE,EAAI,KAAK,EAAG,EAAI,0BAA0B,EAAG,EAAG,EAAG,KASrD,EAzcF,EAycE,uBAAuB,CAC5B,EAMA,IAEO,CAAC,EAAI,MAAM,EAAE,GAAI,EAAO,KAAM,EAAO,MAAO,EAAI,MAAM,EAAE,GAAI,EAAO,KAAM,EAAO,QASlF,EA3dF,EA2dE,mBAAmB,CACxB,EAMA,IAEO,EAAI,KAAK,EAAG,EAAI,qBAAqB,EAAQ,KAU/C,EA9eF,EA8eE,QAAQ,CAAC,EAAa,EAAa,IACpC,EAAI,QAAQ,EAAG,GAAW,EACvB,EAAI,IAAI,EAAG,EAAI,IAAI,EAAI,IAAI,EAAI,IAAI,EAAG,IAAK,KAS7C,EAzfF,EAyfE,eAAe,CAAC,EAAa,EAAW,IACtC,CAAC,KAAK,IAAI,GAAK,EAAI,EAAE,GAAI,KAAK,IAAI,GAAK,EAAI,EAAE,KAQ/C,EAlgBF,EAkgBE,cAAc,CAAC,EAAa,EAAI,IAC9B,CAAC,CAAC,EAAE,GAAG,YAAY,GAAI,CAAC,EAAE,GAAG,YAAY,KAS3C,EA5gBF,EA4gBE,gBAAgB,CAAC,EAAa,EAAa,EAAQ,IACjD,MAAM,KAAK,MAAM,IAAQ,IAAI,CAAC,EAAG,IAAM,CAC5C,GAAM,GAAI,EAAK,GAAQ,GACjB,EAAI,KAAK,IAAI,EAAG,GAAM,KAAK,IAAI,GAAM,IAC3C,MAAO,CAAC,GAAG,EAAI,IAAI,EAAG,EAAG,GAAI,MAS1B,EAzhBF,EAyhBE,QAAQ,CAAC,EAAa,IACvB,EAAE,KAAO,EAAE,GAAW,IAClB,GAAE,GAAK,EAAE,IAAO,GAAE,GAAK,EAAE,KAM5B,EAjiBF,EAiiBE,MAAM,IAAI,IACR,CAAC,KAAK,IAAI,GAAG,EAAE,IAAI,AAAC,GAAM,EAAE,KAAM,KAAK,IAAI,GAAG,EAAE,IAAI,AAAC,GAAM,EAAE,OAM/D,EAxiBF,EAwiBE,MAAM,IAAI,IACR,CAAC,KAAK,IAAI,GAAG,EAAE,IAAI,AAAC,GAAM,EAAE,KAAM,KAAK,IAAI,GAAG,EAAE,IAAI,AAAC,GAAM,EAAE,OAIxE,GAAO,GAAQ",
  "names": []
}
