@prefecthq/graphs 3.0.2 → 3.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/graphs.mjs CHANGED
@@ -19,7 +19,7 @@ const lP = [
19
19
  function cP(r) {
20
20
  return u0.includes(r);
21
21
  }
22
- function Wl(r) {
22
+ function Xl(r) {
23
23
  return u0.includes(r.kind);
24
24
  }
25
25
  function db(r) {
@@ -55,7 +55,7 @@ function fP(r) {
55
55
  return ["temporal", "dependency", "left-aligned"].includes(r);
56
56
  }
57
57
  const d0 = "nodes-container", yb = "node-container", bb = "edge-container", xb = 1, f0 = 20, _b = 200, vb = 0.2, wb = 0.2, Tb = 0.2, Sb = 0.1, p0 = 10, m0 = 4, g0 = 20, Ed = 64, pP = 0.25, mP = 1, Id = 30, Cb = 260, y0 = 250, Eb = 1, Ib = 2, Ab = 3, Mb = 4, b0 = 0, x0 = 2, Rb = 1, Pb = 2, Lb = 3, _0 = 4, Sa = 5;
58
- var ms = /* @__PURE__ */ ((r) => (r[r.WEBGL_LEGACY = 0] = "WEBGL_LEGACY", r[r.WEBGL = 1] = "WEBGL", r[r.WEBGL2 = 2] = "WEBGL2", r))(ms || {}), v0 = /* @__PURE__ */ ((r) => (r[r.UNKNOWN = 0] = "UNKNOWN", r[r.WEBGL = 1] = "WEBGL", r[r.CANVAS = 2] = "CANVAS", r))(v0 || {}), Xl = /* @__PURE__ */ ((r) => (r[r.COLOR = 16384] = "COLOR", r[r.DEPTH = 256] = "DEPTH", r[r.STENCIL = 1024] = "STENCIL", r))(Xl || {}), ht = /* @__PURE__ */ ((r) => (r[r.NORMAL = 0] = "NORMAL", r[r.ADD = 1] = "ADD", r[r.MULTIPLY = 2] = "MULTIPLY", r[r.SCREEN = 3] = "SCREEN", r[r.OVERLAY = 4] = "OVERLAY", r[r.DARKEN = 5] = "DARKEN", r[r.LIGHTEN = 6] = "LIGHTEN", r[r.COLOR_DODGE = 7] = "COLOR_DODGE", r[r.COLOR_BURN = 8] = "COLOR_BURN", r[r.HARD_LIGHT = 9] = "HARD_LIGHT", r[r.SOFT_LIGHT = 10] = "SOFT_LIGHT", r[r.DIFFERENCE = 11] = "DIFFERENCE", r[r.EXCLUSION = 12] = "EXCLUSION", r[r.HUE = 13] = "HUE", r[r.SATURATION = 14] = "SATURATION", r[r.COLOR = 15] = "COLOR", r[r.LUMINOSITY = 16] = "LUMINOSITY", r[r.NORMAL_NPM = 17] = "NORMAL_NPM", r[r.ADD_NPM = 18] = "ADD_NPM", r[r.SCREEN_NPM = 19] = "SCREEN_NPM", r[r.NONE = 20] = "NONE", r[r.SRC_OVER = 0] = "SRC_OVER", r[r.SRC_IN = 21] = "SRC_IN", r[r.SRC_OUT = 22] = "SRC_OUT", r[r.SRC_ATOP = 23] = "SRC_ATOP", r[r.DST_OVER = 24] = "DST_OVER", r[r.DST_IN = 25] = "DST_IN", r[r.DST_OUT = 26] = "DST_OUT", r[r.DST_ATOP = 27] = "DST_ATOP", r[r.ERASE = 26] = "ERASE", r[r.SUBTRACT = 28] = "SUBTRACT", r[r.XOR = 29] = "XOR", r))(ht || {}), _i = /* @__PURE__ */ ((r) => (r[r.POINTS = 0] = "POINTS", r[r.LINES = 1] = "LINES", r[r.LINE_LOOP = 2] = "LINE_LOOP", r[r.LINE_STRIP = 3] = "LINE_STRIP", r[r.TRIANGLES = 4] = "TRIANGLES", r[r.TRIANGLE_STRIP = 5] = "TRIANGLE_STRIP", r[r.TRIANGLE_FAN = 6] = "TRIANGLE_FAN", r))(_i || {}), X = /* @__PURE__ */ ((r) => (r[r.RGBA = 6408] = "RGBA", r[r.RGB = 6407] = "RGB", r[r.RG = 33319] = "RG", r[r.RED = 6403] = "RED", r[r.RGBA_INTEGER = 36249] = "RGBA_INTEGER", r[r.RGB_INTEGER = 36248] = "RGB_INTEGER", r[r.RG_INTEGER = 33320] = "RG_INTEGER", r[r.RED_INTEGER = 36244] = "RED_INTEGER", r[r.ALPHA = 6406] = "ALPHA", r[r.LUMINANCE = 6409] = "LUMINANCE", r[r.LUMINANCE_ALPHA = 6410] = "LUMINANCE_ALPHA", r[r.DEPTH_COMPONENT = 6402] = "DEPTH_COMPONENT", r[r.DEPTH_STENCIL = 34041] = "DEPTH_STENCIL", r))(X || {}), Us = /* @__PURE__ */ ((r) => (r[r.TEXTURE_2D = 3553] = "TEXTURE_2D", r[r.TEXTURE_CUBE_MAP = 34067] = "TEXTURE_CUBE_MAP", r[r.TEXTURE_2D_ARRAY = 35866] = "TEXTURE_2D_ARRAY", r[r.TEXTURE_CUBE_MAP_POSITIVE_X = 34069] = "TEXTURE_CUBE_MAP_POSITIVE_X", r[r.TEXTURE_CUBE_MAP_NEGATIVE_X = 34070] = "TEXTURE_CUBE_MAP_NEGATIVE_X", r[r.TEXTURE_CUBE_MAP_POSITIVE_Y = 34071] = "TEXTURE_CUBE_MAP_POSITIVE_Y", r[r.TEXTURE_CUBE_MAP_NEGATIVE_Y = 34072] = "TEXTURE_CUBE_MAP_NEGATIVE_Y", r[r.TEXTURE_CUBE_MAP_POSITIVE_Z = 34073] = "TEXTURE_CUBE_MAP_POSITIVE_Z", r[r.TEXTURE_CUBE_MAP_NEGATIVE_Z = 34074] = "TEXTURE_CUBE_MAP_NEGATIVE_Z", r))(Us || {}), nt = /* @__PURE__ */ ((r) => (r[r.UNSIGNED_BYTE = 5121] = "UNSIGNED_BYTE", r[r.UNSIGNED_SHORT = 5123] = "UNSIGNED_SHORT", r[r.UNSIGNED_SHORT_5_6_5 = 33635] = "UNSIGNED_SHORT_5_6_5", r[r.UNSIGNED_SHORT_4_4_4_4 = 32819] = "UNSIGNED_SHORT_4_4_4_4", r[r.UNSIGNED_SHORT_5_5_5_1 = 32820] = "UNSIGNED_SHORT_5_5_5_1", r[r.UNSIGNED_INT = 5125] = "UNSIGNED_INT", r[r.UNSIGNED_INT_10F_11F_11F_REV = 35899] = "UNSIGNED_INT_10F_11F_11F_REV", r[r.UNSIGNED_INT_2_10_10_10_REV = 33640] = "UNSIGNED_INT_2_10_10_10_REV", r[r.UNSIGNED_INT_24_8 = 34042] = "UNSIGNED_INT_24_8", r[r.UNSIGNED_INT_5_9_9_9_REV = 35902] = "UNSIGNED_INT_5_9_9_9_REV", r[r.BYTE = 5120] = "BYTE", r[r.SHORT = 5122] = "SHORT", r[r.INT = 5124] = "INT", r[r.FLOAT = 5126] = "FLOAT", r[r.FLOAT_32_UNSIGNED_INT_24_8_REV = 36269] = "FLOAT_32_UNSIGNED_INT_24_8_REV", r[r.HALF_FLOAT = 36193] = "HALF_FLOAT", r))(nt || {}), $ = /* @__PURE__ */ ((r) => (r[r.FLOAT = 0] = "FLOAT", r[r.INT = 1] = "INT", r[r.UINT = 2] = "UINT", r))($ || {}), Xi = /* @__PURE__ */ ((r) => (r[r.NEAREST = 0] = "NEAREST", r[r.LINEAR = 1] = "LINEAR", r))(Xi || {}), Ti = /* @__PURE__ */ ((r) => (r[r.CLAMP = 33071] = "CLAMP", r[r.REPEAT = 10497] = "REPEAT", r[r.MIRRORED_REPEAT = 33648] = "MIRRORED_REPEAT", r))(Ti || {}), Mi = /* @__PURE__ */ ((r) => (r[r.OFF = 0] = "OFF", r[r.POW2 = 1] = "POW2", r[r.ON = 2] = "ON", r[r.ON_MANUAL = 3] = "ON_MANUAL", r))(Mi || {}), be = /* @__PURE__ */ ((r) => (r[r.NPM = 0] = "NPM", r[r.UNPACK = 1] = "UNPACK", r[r.PMA = 2] = "PMA", r[r.NO_PREMULTIPLIED_ALPHA = 0] = "NO_PREMULTIPLIED_ALPHA", r[r.PREMULTIPLY_ON_UPLOAD = 1] = "PREMULTIPLY_ON_UPLOAD", r[r.PREMULTIPLIED_ALPHA = 2] = "PREMULTIPLIED_ALPHA", r))(be || {}), gi = /* @__PURE__ */ ((r) => (r[r.NO = 0] = "NO", r[r.YES = 1] = "YES", r[r.AUTO = 2] = "AUTO", r[r.BLEND = 0] = "BLEND", r[r.CLEAR = 1] = "CLEAR", r[r.BLIT = 2] = "BLIT", r))(gi || {}), cu = /* @__PURE__ */ ((r) => (r[r.AUTO = 0] = "AUTO", r[r.MANUAL = 1] = "MANUAL", r))(cu || {}), We = /* @__PURE__ */ ((r) => (r.LOW = "lowp", r.MEDIUM = "mediump", r.HIGH = "highp", r))(We || {}), jt = /* @__PURE__ */ ((r) => (r[r.NONE = 0] = "NONE", r[r.SCISSOR = 1] = "SCISSOR", r[r.STENCIL = 2] = "STENCIL", r[r.SPRITE = 3] = "SPRITE", r[r.COLOR = 4] = "COLOR", r))(jt || {}), Vt = /* @__PURE__ */ ((r) => (r[r.NONE = 0] = "NONE", r[r.LOW = 2] = "LOW", r[r.MEDIUM = 4] = "MEDIUM", r[r.HIGH = 8] = "HIGH", r))(Vt || {}), Si = /* @__PURE__ */ ((r) => (r[r.ELEMENT_ARRAY_BUFFER = 34963] = "ELEMENT_ARRAY_BUFFER", r[r.ARRAY_BUFFER = 34962] = "ARRAY_BUFFER", r[r.UNIFORM_BUFFER = 35345] = "UNIFORM_BUFFER", r))(Si || {});
58
+ var ms = /* @__PURE__ */ ((r) => (r[r.WEBGL_LEGACY = 0] = "WEBGL_LEGACY", r[r.WEBGL = 1] = "WEBGL", r[r.WEBGL2 = 2] = "WEBGL2", r))(ms || {}), v0 = /* @__PURE__ */ ((r) => (r[r.UNKNOWN = 0] = "UNKNOWN", r[r.WEBGL = 1] = "WEBGL", r[r.CANVAS = 2] = "CANVAS", r))(v0 || {}), Wl = /* @__PURE__ */ ((r) => (r[r.COLOR = 16384] = "COLOR", r[r.DEPTH = 256] = "DEPTH", r[r.STENCIL = 1024] = "STENCIL", r))(Wl || {}), ht = /* @__PURE__ */ ((r) => (r[r.NORMAL = 0] = "NORMAL", r[r.ADD = 1] = "ADD", r[r.MULTIPLY = 2] = "MULTIPLY", r[r.SCREEN = 3] = "SCREEN", r[r.OVERLAY = 4] = "OVERLAY", r[r.DARKEN = 5] = "DARKEN", r[r.LIGHTEN = 6] = "LIGHTEN", r[r.COLOR_DODGE = 7] = "COLOR_DODGE", r[r.COLOR_BURN = 8] = "COLOR_BURN", r[r.HARD_LIGHT = 9] = "HARD_LIGHT", r[r.SOFT_LIGHT = 10] = "SOFT_LIGHT", r[r.DIFFERENCE = 11] = "DIFFERENCE", r[r.EXCLUSION = 12] = "EXCLUSION", r[r.HUE = 13] = "HUE", r[r.SATURATION = 14] = "SATURATION", r[r.COLOR = 15] = "COLOR", r[r.LUMINOSITY = 16] = "LUMINOSITY", r[r.NORMAL_NPM = 17] = "NORMAL_NPM", r[r.ADD_NPM = 18] = "ADD_NPM", r[r.SCREEN_NPM = 19] = "SCREEN_NPM", r[r.NONE = 20] = "NONE", r[r.SRC_OVER = 0] = "SRC_OVER", r[r.SRC_IN = 21] = "SRC_IN", r[r.SRC_OUT = 22] = "SRC_OUT", r[r.SRC_ATOP = 23] = "SRC_ATOP", r[r.DST_OVER = 24] = "DST_OVER", r[r.DST_IN = 25] = "DST_IN", r[r.DST_OUT = 26] = "DST_OUT", r[r.DST_ATOP = 27] = "DST_ATOP", r[r.ERASE = 26] = "ERASE", r[r.SUBTRACT = 28] = "SUBTRACT", r[r.XOR = 29] = "XOR", r))(ht || {}), _i = /* @__PURE__ */ ((r) => (r[r.POINTS = 0] = "POINTS", r[r.LINES = 1] = "LINES", r[r.LINE_LOOP = 2] = "LINE_LOOP", r[r.LINE_STRIP = 3] = "LINE_STRIP", r[r.TRIANGLES = 4] = "TRIANGLES", r[r.TRIANGLE_STRIP = 5] = "TRIANGLE_STRIP", r[r.TRIANGLE_FAN = 6] = "TRIANGLE_FAN", r))(_i || {}), W = /* @__PURE__ */ ((r) => (r[r.RGBA = 6408] = "RGBA", r[r.RGB = 6407] = "RGB", r[r.RG = 33319] = "RG", r[r.RED = 6403] = "RED", r[r.RGBA_INTEGER = 36249] = "RGBA_INTEGER", r[r.RGB_INTEGER = 36248] = "RGB_INTEGER", r[r.RG_INTEGER = 33320] = "RG_INTEGER", r[r.RED_INTEGER = 36244] = "RED_INTEGER", r[r.ALPHA = 6406] = "ALPHA", r[r.LUMINANCE = 6409] = "LUMINANCE", r[r.LUMINANCE_ALPHA = 6410] = "LUMINANCE_ALPHA", r[r.DEPTH_COMPONENT = 6402] = "DEPTH_COMPONENT", r[r.DEPTH_STENCIL = 34041] = "DEPTH_STENCIL", r))(W || {}), Us = /* @__PURE__ */ ((r) => (r[r.TEXTURE_2D = 3553] = "TEXTURE_2D", r[r.TEXTURE_CUBE_MAP = 34067] = "TEXTURE_CUBE_MAP", r[r.TEXTURE_2D_ARRAY = 35866] = "TEXTURE_2D_ARRAY", r[r.TEXTURE_CUBE_MAP_POSITIVE_X = 34069] = "TEXTURE_CUBE_MAP_POSITIVE_X", r[r.TEXTURE_CUBE_MAP_NEGATIVE_X = 34070] = "TEXTURE_CUBE_MAP_NEGATIVE_X", r[r.TEXTURE_CUBE_MAP_POSITIVE_Y = 34071] = "TEXTURE_CUBE_MAP_POSITIVE_Y", r[r.TEXTURE_CUBE_MAP_NEGATIVE_Y = 34072] = "TEXTURE_CUBE_MAP_NEGATIVE_Y", r[r.TEXTURE_CUBE_MAP_POSITIVE_Z = 34073] = "TEXTURE_CUBE_MAP_POSITIVE_Z", r[r.TEXTURE_CUBE_MAP_NEGATIVE_Z = 34074] = "TEXTURE_CUBE_MAP_NEGATIVE_Z", r))(Us || {}), nt = /* @__PURE__ */ ((r) => (r[r.UNSIGNED_BYTE = 5121] = "UNSIGNED_BYTE", r[r.UNSIGNED_SHORT = 5123] = "UNSIGNED_SHORT", r[r.UNSIGNED_SHORT_5_6_5 = 33635] = "UNSIGNED_SHORT_5_6_5", r[r.UNSIGNED_SHORT_4_4_4_4 = 32819] = "UNSIGNED_SHORT_4_4_4_4", r[r.UNSIGNED_SHORT_5_5_5_1 = 32820] = "UNSIGNED_SHORT_5_5_5_1", r[r.UNSIGNED_INT = 5125] = "UNSIGNED_INT", r[r.UNSIGNED_INT_10F_11F_11F_REV = 35899] = "UNSIGNED_INT_10F_11F_11F_REV", r[r.UNSIGNED_INT_2_10_10_10_REV = 33640] = "UNSIGNED_INT_2_10_10_10_REV", r[r.UNSIGNED_INT_24_8 = 34042] = "UNSIGNED_INT_24_8", r[r.UNSIGNED_INT_5_9_9_9_REV = 35902] = "UNSIGNED_INT_5_9_9_9_REV", r[r.BYTE = 5120] = "BYTE", r[r.SHORT = 5122] = "SHORT", r[r.INT = 5124] = "INT", r[r.FLOAT = 5126] = "FLOAT", r[r.FLOAT_32_UNSIGNED_INT_24_8_REV = 36269] = "FLOAT_32_UNSIGNED_INT_24_8_REV", r[r.HALF_FLOAT = 36193] = "HALF_FLOAT", r))(nt || {}), $ = /* @__PURE__ */ ((r) => (r[r.FLOAT = 0] = "FLOAT", r[r.INT = 1] = "INT", r[r.UINT = 2] = "UINT", r))($ || {}), Wi = /* @__PURE__ */ ((r) => (r[r.NEAREST = 0] = "NEAREST", r[r.LINEAR = 1] = "LINEAR", r))(Wi || {}), Ti = /* @__PURE__ */ ((r) => (r[r.CLAMP = 33071] = "CLAMP", r[r.REPEAT = 10497] = "REPEAT", r[r.MIRRORED_REPEAT = 33648] = "MIRRORED_REPEAT", r))(Ti || {}), Mi = /* @__PURE__ */ ((r) => (r[r.OFF = 0] = "OFF", r[r.POW2 = 1] = "POW2", r[r.ON = 2] = "ON", r[r.ON_MANUAL = 3] = "ON_MANUAL", r))(Mi || {}), be = /* @__PURE__ */ ((r) => (r[r.NPM = 0] = "NPM", r[r.UNPACK = 1] = "UNPACK", r[r.PMA = 2] = "PMA", r[r.NO_PREMULTIPLIED_ALPHA = 0] = "NO_PREMULTIPLIED_ALPHA", r[r.PREMULTIPLY_ON_UPLOAD = 1] = "PREMULTIPLY_ON_UPLOAD", r[r.PREMULTIPLIED_ALPHA = 2] = "PREMULTIPLIED_ALPHA", r))(be || {}), gi = /* @__PURE__ */ ((r) => (r[r.NO = 0] = "NO", r[r.YES = 1] = "YES", r[r.AUTO = 2] = "AUTO", r[r.BLEND = 0] = "BLEND", r[r.CLEAR = 1] = "CLEAR", r[r.BLIT = 2] = "BLIT", r))(gi || {}), cu = /* @__PURE__ */ ((r) => (r[r.AUTO = 0] = "AUTO", r[r.MANUAL = 1] = "MANUAL", r))(cu || {}), Xe = /* @__PURE__ */ ((r) => (r.LOW = "lowp", r.MEDIUM = "mediump", r.HIGH = "highp", r))(Xe || {}), jt = /* @__PURE__ */ ((r) => (r[r.NONE = 0] = "NONE", r[r.SCISSOR = 1] = "SCISSOR", r[r.STENCIL = 2] = "STENCIL", r[r.SPRITE = 3] = "SPRITE", r[r.COLOR = 4] = "COLOR", r))(jt || {}), Vt = /* @__PURE__ */ ((r) => (r[r.NONE = 0] = "NONE", r[r.LOW = 2] = "LOW", r[r.MEDIUM = 4] = "MEDIUM", r[r.HIGH = 8] = "HIGH", r))(Vt || {}), Si = /* @__PURE__ */ ((r) => (r[r.ELEMENT_ARRAY_BUFFER = 34963] = "ELEMENT_ARRAY_BUFFER", r[r.ARRAY_BUFFER = 34962] = "ARRAY_BUFFER", r[r.UNIFORM_BUFFER = 35345] = "UNIFORM_BUFFER", r))(Si || {});
59
59
  const Gb = {
60
60
  /**
61
61
  * Creates a canvas element of the given size.
@@ -320,7 +320,7 @@ function ch(r, t, e) {
320
320
  var i = t && t.length, s = i ? t[0] * e : r.length, n = T0(r, 0, s, e, !0), o = [];
321
321
  if (!n || n.next === n.prev) return o;
322
322
  var a, h, l, c, u, d, f;
323
- if (i && (n = Xb(r, t, n, e)), r.length > 80 * e) {
323
+ if (i && (n = Wb(r, t, n, e)), r.length > 80 * e) {
324
324
  a = l = r[0], h = c = r[1];
325
325
  for (var p = e; p < s; p += e)
326
326
  u = r[p], d = r[p + 1], u < a && (a = u), d < h && (h = d), u > l && (l = u), d > c && (c = d);
@@ -358,7 +358,7 @@ function $n(r, t, e, i, s, n, o) {
358
358
  continue;
359
359
  }
360
360
  if (r = l, r === a) {
361
- o ? o === 1 ? (r = Ub(hs(r), t, e), $n(r, t, e, i, s, n, 2)) : o === 2 && Wb(r, t, e, i, s, n) : $n(hs(r), t, e, i, s, n, 1);
361
+ o ? o === 1 ? (r = Ub(hs(r), t, e), $n(r, t, e, i, s, n, 2)) : o === 2 && Xb(r, t, e, i, s, n) : $n(hs(r), t, e, i, s, n, 1);
362
362
  break;
363
363
  }
364
364
  }
@@ -398,7 +398,7 @@ function Ub(r, t, e) {
398
398
  } while (i !== r);
399
399
  return hs(i);
400
400
  }
401
- function Wb(r, t, e, i, s, n) {
401
+ function Xb(r, t, e, i, s, n) {
402
402
  var o = r;
403
403
  do {
404
404
  for (var a = o.next.next; a !== o.prev; ) {
@@ -412,7 +412,7 @@ function Wb(r, t, e, i, s, n) {
412
412
  o = o.next;
413
413
  } while (o !== r);
414
414
  }
415
- function Xb(r, t, e, i) {
415
+ function Wb(r, t, e, i) {
416
416
  var s = [], n, o, a, h, l;
417
417
  for (n = 0, o = t.length; n < o; n++)
418
418
  a = t[n] * i, h = n < o - 1 ? t[n + 1] * i : r.length, l = T0(r, a, h, i, !1), l === l.next && (l.steiner = !0), s.push(jb(l));
@@ -582,80 +582,80 @@ Ca.exports;
582
582
  "not-basic": "Illegal input >= 0x80 (not a basic code point)",
583
583
  "invalid-input": "Invalid input"
584
584
  }, _ = h - l, v = Math.floor, T = String.fromCharCode, C;
585
- function E(W) {
586
- throw new RangeError(b[W]);
585
+ function E(X) {
586
+ throw new RangeError(b[X]);
587
587
  }
588
- function I(W, M) {
589
- for (var D = W.length, V = []; D--; )
590
- V[D] = M(W[D]);
588
+ function I(X, M) {
589
+ for (var D = X.length, V = []; D--; )
590
+ V[D] = M(X[D]);
591
591
  return V;
592
592
  }
593
- function k(W, M) {
594
- var D = W.split("@"), V = "";
595
- D.length > 1 && (V = D[0] + "@", W = D[1]), W = W.replace(x, ".");
596
- var J = W.split("."), j = I(J, M).join(".");
593
+ function k(X, M) {
594
+ var D = X.split("@"), V = "";
595
+ D.length > 1 && (V = D[0] + "@", X = D[1]), X = X.replace(x, ".");
596
+ var J = X.split("."), j = I(J, M).join(".");
597
597
  return V + j;
598
598
  }
599
- function L(W) {
600
- for (var M = [], D = 0, V = W.length, J, j; D < V; )
601
- J = W.charCodeAt(D++), J >= 55296 && J <= 56319 && D < V ? (j = W.charCodeAt(D++), (j & 64512) == 56320 ? M.push(((J & 1023) << 10) + (j & 1023) + 65536) : (M.push(J), D--)) : M.push(J);
599
+ function L(X) {
600
+ for (var M = [], D = 0, V = X.length, J, j; D < V; )
601
+ J = X.charCodeAt(D++), J >= 55296 && J <= 56319 && D < V ? (j = X.charCodeAt(D++), (j & 64512) == 56320 ? M.push(((J & 1023) << 10) + (j & 1023) + 65536) : (M.push(J), D--)) : M.push(J);
602
602
  return M;
603
603
  }
604
- function P(W) {
605
- return I(W, function(M) {
604
+ function P(X) {
605
+ return I(X, function(M) {
606
606
  var D = "";
607
607
  return M > 65535 && (M -= 65536, D += T(M >>> 10 & 1023 | 55296), M = 56320 | M & 1023), D += T(M), D;
608
608
  }).join("");
609
609
  }
610
- function S(W) {
611
- return W - 48 < 10 ? W - 22 : W - 65 < 26 ? W - 65 : W - 97 < 26 ? W - 97 : h;
610
+ function S(X) {
611
+ return X - 48 < 10 ? X - 22 : X - 65 < 26 ? X - 65 : X - 97 < 26 ? X - 97 : h;
612
612
  }
613
- function R(W, M) {
614
- return W + 22 + 75 * (W < 26) - ((M != 0) << 5);
613
+ function R(X, M) {
614
+ return X + 22 + 75 * (X < 26) - ((M != 0) << 5);
615
615
  }
616
- function F(W, M, D) {
616
+ function F(X, M, D) {
617
617
  var V = 0;
618
- for (W = D ? v(W / d) : W >> 1, W += v(W / M); W > _ * c >> 1; V += h)
619
- W = v(W / _);
620
- return v(V + (_ + 1) * W / (W + u));
621
- }
622
- function O(W) {
623
- var M = [], D = W.length, V, J = 0, j = p, ft = f, wt, mt, N, K, H, G, ct, ot, _t;
624
- for (wt = W.lastIndexOf(m), wt < 0 && (wt = 0), mt = 0; mt < wt; ++mt)
625
- W.charCodeAt(mt) >= 128 && E("not-basic"), M.push(W.charCodeAt(mt));
618
+ for (X = D ? v(X / d) : X >> 1, X += v(X / M); X > _ * c >> 1; V += h)
619
+ X = v(X / _);
620
+ return v(V + (_ + 1) * X / (X + u));
621
+ }
622
+ function O(X) {
623
+ var M = [], D = X.length, V, J = 0, j = p, yt = f, wt, pt, N, K, H, G, ct, ot, _t;
624
+ for (wt = X.lastIndexOf(m), wt < 0 && (wt = 0), pt = 0; pt < wt; ++pt)
625
+ X.charCodeAt(pt) >= 128 && E("not-basic"), M.push(X.charCodeAt(pt));
626
626
  for (N = wt > 0 ? wt + 1 : 0; N < D; ) {
627
- for (K = J, H = 1, G = h; N >= D && E("invalid-input"), ct = S(W.charCodeAt(N++)), (ct >= h || ct > v((a - J) / H)) && E("overflow"), J += ct * H, ot = G <= ft ? l : G >= ft + c ? c : G - ft, !(ct < ot); G += h)
627
+ for (K = J, H = 1, G = h; N >= D && E("invalid-input"), ct = S(X.charCodeAt(N++)), (ct >= h || ct > v((a - J) / H)) && E("overflow"), J += ct * H, ot = G <= yt ? l : G >= yt + c ? c : G - yt, !(ct < ot); G += h)
628
628
  _t = h - ot, H > v(a / _t) && E("overflow"), H *= _t;
629
- V = M.length + 1, ft = F(J - K, V, K == 0), v(J / V) > a - j && E("overflow"), j += v(J / V), J %= V, M.splice(J++, 0, j);
629
+ V = M.length + 1, yt = F(J - K, V, K == 0), v(J / V) > a - j && E("overflow"), j += v(J / V), J %= V, M.splice(J++, 0, j);
630
630
  }
631
631
  return P(M);
632
632
  }
633
- function U(W) {
634
- var M, D, V, J, j, ft, wt, mt, N, K, H, G = [], ct, ot, _t, At;
635
- for (W = L(W), ct = W.length, M = p, D = 0, j = f, ft = 0; ft < ct; ++ft)
636
- H = W[ft], H < 128 && G.push(T(H));
633
+ function U(X) {
634
+ var M, D, V, J, j, yt, wt, pt, N, K, H, G = [], ct, ot, _t, At;
635
+ for (X = L(X), ct = X.length, M = p, D = 0, j = f, yt = 0; yt < ct; ++yt)
636
+ H = X[yt], H < 128 && G.push(T(H));
637
637
  for (V = J = G.length, J && G.push(m); V < ct; ) {
638
- for (wt = a, ft = 0; ft < ct; ++ft)
639
- H = W[ft], H >= M && H < wt && (wt = H);
640
- for (ot = V + 1, wt - M > v((a - D) / ot) && E("overflow"), D += (wt - M) * ot, M = wt, ft = 0; ft < ct; ++ft)
641
- if (H = W[ft], H < M && ++D > a && E("overflow"), H == M) {
642
- for (mt = D, N = h; K = N <= j ? l : N >= j + c ? c : N - j, !(mt < K); N += h)
643
- At = mt - K, _t = h - K, G.push(
638
+ for (wt = a, yt = 0; yt < ct; ++yt)
639
+ H = X[yt], H >= M && H < wt && (wt = H);
640
+ for (ot = V + 1, wt - M > v((a - D) / ot) && E("overflow"), D += (wt - M) * ot, M = wt, yt = 0; yt < ct; ++yt)
641
+ if (H = X[yt], H < M && ++D > a && E("overflow"), H == M) {
642
+ for (pt = D, N = h; K = N <= j ? l : N >= j + c ? c : N - j, !(pt < K); N += h)
643
+ At = pt - K, _t = h - K, G.push(
644
644
  T(R(K + At % _t, 0))
645
- ), mt = v(At / _t);
646
- G.push(T(R(mt, 0))), j = F(D, ot, V == J), D = 0, ++V;
645
+ ), pt = v(At / _t);
646
+ G.push(T(R(pt, 0))), j = F(D, ot, V == J), D = 0, ++V;
647
647
  }
648
648
  ++D, ++M;
649
649
  }
650
650
  return G.join("");
651
651
  }
652
- function Z(W) {
653
- return k(W, function(M) {
652
+ function Z(X) {
653
+ return k(X, function(M) {
654
654
  return g.test(M) ? O(M.slice(4).toLowerCase()) : M;
655
655
  });
656
656
  }
657
- function rt(W) {
658
- return k(W, function(M) {
657
+ function rt(X) {
658
+ return k(X, function(M) {
659
659
  return y.test(M) ? "xn--" + U(M) : M;
660
660
  });
661
661
  }
@@ -714,27 +714,27 @@ var ex = Ca.exports, ix = function() {
714
714
  return !1;
715
715
  }
716
716
  return !0;
717
- }, Wd = typeof Symbol < "u" && Symbol, rx = ix, sx = function() {
718
- return typeof Wd != "function" || typeof Symbol != "function" || typeof Wd("foo") != "symbol" || typeof Symbol("bar") != "symbol" ? !1 : rx();
719
- }, Xd = {
717
+ }, Xd = typeof Symbol < "u" && Symbol, rx = ix, sx = function() {
718
+ return typeof Xd != "function" || typeof Symbol != "function" || typeof Xd("foo") != "symbol" || typeof Symbol("bar") != "symbol" ? !1 : rx();
719
+ }, Wd = {
720
720
  foo: {}
721
721
  }, nx = Object, ox = function() {
722
- return { __proto__: Xd }.foo === Xd.foo && !({ __proto__: null } instanceof nx);
723
- }, ax = "Function.prototype.bind called on incompatible ", Wh = Array.prototype.slice, hx = Object.prototype.toString, lx = "[object Function]", cx = function(t) {
722
+ return { __proto__: Wd }.foo === Wd.foo && !({ __proto__: null } instanceof nx);
723
+ }, ax = "Function.prototype.bind called on incompatible ", Xh = Array.prototype.slice, hx = Object.prototype.toString, lx = "[object Function]", cx = function(t) {
724
724
  var e = this;
725
725
  if (typeof e != "function" || hx.call(e) !== lx)
726
726
  throw new TypeError(ax + e);
727
- for (var i = Wh.call(arguments, 1), s, n = function() {
727
+ for (var i = Xh.call(arguments, 1), s, n = function() {
728
728
  if (this instanceof s) {
729
729
  var c = e.apply(
730
730
  this,
731
- i.concat(Wh.call(arguments))
731
+ i.concat(Xh.call(arguments))
732
732
  );
733
733
  return Object(c) === c ? c : this;
734
734
  } else
735
735
  return e.apply(
736
736
  t,
737
- i.concat(Wh.call(arguments))
737
+ i.concat(Xh.call(arguments))
738
738
  );
739
739
  }, o = Math.max(0, e.length - i.length), a = [], h = 0; h < o; h++)
740
740
  a.push("$" + h);
@@ -744,7 +744,7 @@ var ex = Ca.exports, ix = function() {
744
744
  l.prototype = e.prototype, s.prototype = new l(), l.prototype = null;
745
745
  }
746
746
  return s;
747
- }, ux = cx, du = Function.prototype.bind || ux, dx = du, fx = dx.call(Function.call, Object.prototype.hasOwnProperty), gt, qs = SyntaxError, E0 = Function, Ws = TypeError, Xh = function(r) {
747
+ }, ux = cx, du = Function.prototype.bind || ux, dx = du, fx = dx.call(Function.call, Object.prototype.hasOwnProperty), mt, qs = SyntaxError, E0 = Function, Xs = TypeError, Wh = function(r) {
748
748
  try {
749
749
  return E0('"use strict"; return (' + r + ").constructor;")();
750
750
  } catch {
@@ -757,7 +757,7 @@ if (qr)
757
757
  qr = null;
758
758
  }
759
759
  var Zh = function() {
760
- throw new Ws();
760
+ throw new Xs();
761
761
  }, px = qr ? function() {
762
762
  try {
763
763
  return arguments.callee, Zh;
@@ -770,22 +770,22 @@ var Zh = function() {
770
770
  }
771
771
  }() : Zh, ws = sx(), mx = ox(), te = Object.getPrototypeOf || (mx ? function(r) {
772
772
  return r.__proto__;
773
- } : null), Is = {}, gx = typeof Uint8Array > "u" || !te ? gt : te(Uint8Array), ts = {
774
- "%AggregateError%": typeof AggregateError > "u" ? gt : AggregateError,
773
+ } : null), Is = {}, gx = typeof Uint8Array > "u" || !te ? mt : te(Uint8Array), ts = {
774
+ "%AggregateError%": typeof AggregateError > "u" ? mt : AggregateError,
775
775
  "%Array%": Array,
776
- "%ArrayBuffer%": typeof ArrayBuffer > "u" ? gt : ArrayBuffer,
777
- "%ArrayIteratorPrototype%": ws && te ? te([][Symbol.iterator]()) : gt,
778
- "%AsyncFromSyncIteratorPrototype%": gt,
776
+ "%ArrayBuffer%": typeof ArrayBuffer > "u" ? mt : ArrayBuffer,
777
+ "%ArrayIteratorPrototype%": ws && te ? te([][Symbol.iterator]()) : mt,
778
+ "%AsyncFromSyncIteratorPrototype%": mt,
779
779
  "%AsyncFunction%": Is,
780
780
  "%AsyncGenerator%": Is,
781
781
  "%AsyncGeneratorFunction%": Is,
782
782
  "%AsyncIteratorPrototype%": Is,
783
- "%Atomics%": typeof Atomics > "u" ? gt : Atomics,
784
- "%BigInt%": typeof BigInt > "u" ? gt : BigInt,
785
- "%BigInt64Array%": typeof BigInt64Array > "u" ? gt : BigInt64Array,
786
- "%BigUint64Array%": typeof BigUint64Array > "u" ? gt : BigUint64Array,
783
+ "%Atomics%": typeof Atomics > "u" ? mt : Atomics,
784
+ "%BigInt%": typeof BigInt > "u" ? mt : BigInt,
785
+ "%BigInt64Array%": typeof BigInt64Array > "u" ? mt : BigInt64Array,
786
+ "%BigUint64Array%": typeof BigUint64Array > "u" ? mt : BigUint64Array,
787
787
  "%Boolean%": Boolean,
788
- "%DataView%": typeof DataView > "u" ? gt : DataView,
788
+ "%DataView%": typeof DataView > "u" ? mt : DataView,
789
789
  "%Date%": Date,
790
790
  "%decodeURI%": decodeURI,
791
791
  "%decodeURIComponent%": decodeURIComponent,
@@ -795,49 +795,49 @@ var Zh = function() {
795
795
  "%eval%": eval,
796
796
  // eslint-disable-line no-eval
797
797
  "%EvalError%": EvalError,
798
- "%Float32Array%": typeof Float32Array > "u" ? gt : Float32Array,
799
- "%Float64Array%": typeof Float64Array > "u" ? gt : Float64Array,
800
- "%FinalizationRegistry%": typeof FinalizationRegistry > "u" ? gt : FinalizationRegistry,
798
+ "%Float32Array%": typeof Float32Array > "u" ? mt : Float32Array,
799
+ "%Float64Array%": typeof Float64Array > "u" ? mt : Float64Array,
800
+ "%FinalizationRegistry%": typeof FinalizationRegistry > "u" ? mt : FinalizationRegistry,
801
801
  "%Function%": E0,
802
802
  "%GeneratorFunction%": Is,
803
- "%Int8Array%": typeof Int8Array > "u" ? gt : Int8Array,
804
- "%Int16Array%": typeof Int16Array > "u" ? gt : Int16Array,
805
- "%Int32Array%": typeof Int32Array > "u" ? gt : Int32Array,
803
+ "%Int8Array%": typeof Int8Array > "u" ? mt : Int8Array,
804
+ "%Int16Array%": typeof Int16Array > "u" ? mt : Int16Array,
805
+ "%Int32Array%": typeof Int32Array > "u" ? mt : Int32Array,
806
806
  "%isFinite%": isFinite,
807
807
  "%isNaN%": isNaN,
808
- "%IteratorPrototype%": ws && te ? te(te([][Symbol.iterator]())) : gt,
809
- "%JSON%": typeof JSON == "object" ? JSON : gt,
810
- "%Map%": typeof Map > "u" ? gt : Map,
811
- "%MapIteratorPrototype%": typeof Map > "u" || !ws || !te ? gt : te((/* @__PURE__ */ new Map())[Symbol.iterator]()),
808
+ "%IteratorPrototype%": ws && te ? te(te([][Symbol.iterator]())) : mt,
809
+ "%JSON%": typeof JSON == "object" ? JSON : mt,
810
+ "%Map%": typeof Map > "u" ? mt : Map,
811
+ "%MapIteratorPrototype%": typeof Map > "u" || !ws || !te ? mt : te((/* @__PURE__ */ new Map())[Symbol.iterator]()),
812
812
  "%Math%": Math,
813
813
  "%Number%": Number,
814
814
  "%Object%": Object,
815
815
  "%parseFloat%": parseFloat,
816
816
  "%parseInt%": parseInt,
817
- "%Promise%": typeof Promise > "u" ? gt : Promise,
818
- "%Proxy%": typeof Proxy > "u" ? gt : Proxy,
817
+ "%Promise%": typeof Promise > "u" ? mt : Promise,
818
+ "%Proxy%": typeof Proxy > "u" ? mt : Proxy,
819
819
  "%RangeError%": RangeError,
820
820
  "%ReferenceError%": ReferenceError,
821
- "%Reflect%": typeof Reflect > "u" ? gt : Reflect,
821
+ "%Reflect%": typeof Reflect > "u" ? mt : Reflect,
822
822
  "%RegExp%": RegExp,
823
- "%Set%": typeof Set > "u" ? gt : Set,
824
- "%SetIteratorPrototype%": typeof Set > "u" || !ws || !te ? gt : te((/* @__PURE__ */ new Set())[Symbol.iterator]()),
825
- "%SharedArrayBuffer%": typeof SharedArrayBuffer > "u" ? gt : SharedArrayBuffer,
823
+ "%Set%": typeof Set > "u" ? mt : Set,
824
+ "%SetIteratorPrototype%": typeof Set > "u" || !ws || !te ? mt : te((/* @__PURE__ */ new Set())[Symbol.iterator]()),
825
+ "%SharedArrayBuffer%": typeof SharedArrayBuffer > "u" ? mt : SharedArrayBuffer,
826
826
  "%String%": String,
827
- "%StringIteratorPrototype%": ws && te ? te(""[Symbol.iterator]()) : gt,
828
- "%Symbol%": ws ? Symbol : gt,
827
+ "%StringIteratorPrototype%": ws && te ? te(""[Symbol.iterator]()) : mt,
828
+ "%Symbol%": ws ? Symbol : mt,
829
829
  "%SyntaxError%": qs,
830
830
  "%ThrowTypeError%": px,
831
831
  "%TypedArray%": gx,
832
- "%TypeError%": Ws,
833
- "%Uint8Array%": typeof Uint8Array > "u" ? gt : Uint8Array,
834
- "%Uint8ClampedArray%": typeof Uint8ClampedArray > "u" ? gt : Uint8ClampedArray,
835
- "%Uint16Array%": typeof Uint16Array > "u" ? gt : Uint16Array,
836
- "%Uint32Array%": typeof Uint32Array > "u" ? gt : Uint32Array,
832
+ "%TypeError%": Xs,
833
+ "%Uint8Array%": typeof Uint8Array > "u" ? mt : Uint8Array,
834
+ "%Uint8ClampedArray%": typeof Uint8ClampedArray > "u" ? mt : Uint8ClampedArray,
835
+ "%Uint16Array%": typeof Uint16Array > "u" ? mt : Uint16Array,
836
+ "%Uint32Array%": typeof Uint32Array > "u" ? mt : Uint32Array,
837
837
  "%URIError%": URIError,
838
- "%WeakMap%": typeof WeakMap > "u" ? gt : WeakMap,
839
- "%WeakRef%": typeof WeakRef > "u" ? gt : WeakRef,
840
- "%WeakSet%": typeof WeakSet > "u" ? gt : WeakSet
838
+ "%WeakMap%": typeof WeakMap > "u" ? mt : WeakMap,
839
+ "%WeakRef%": typeof WeakRef > "u" ? mt : WeakRef,
840
+ "%WeakSet%": typeof WeakSet > "u" ? mt : WeakSet
841
841
  };
842
842
  if (te)
843
843
  try {
@@ -849,11 +849,11 @@ if (te)
849
849
  var bx = function r(t) {
850
850
  var e;
851
851
  if (t === "%AsyncFunction%")
852
- e = Xh("async function () {}");
852
+ e = Wh("async function () {}");
853
853
  else if (t === "%GeneratorFunction%")
854
- e = Xh("function* () {}");
854
+ e = Wh("function* () {}");
855
855
  else if (t === "%AsyncGeneratorFunction%")
856
- e = Xh("async function* () {}");
856
+ e = Wh("async function* () {}");
857
857
  else if (t === "%AsyncGenerator%") {
858
858
  var i = r("%AsyncGeneratorFunction%");
859
859
  i && (e = i.prototype);
@@ -929,7 +929,7 @@ var bx = function r(t) {
929
929
  if (Ea(Zd, i) && (s = Zd[i], i = "%" + s[0] + "%"), Ea(ts, i)) {
930
930
  var n = ts[i];
931
931
  if (n === Is && (n = bx(i)), typeof n > "u" && !e)
932
- throw new Ws("intrinsic " + t + " exists, but is not available. Please file an issue!");
932
+ throw new Xs("intrinsic " + t + " exists, but is not available. Please file an issue!");
933
933
  return {
934
934
  alias: s,
935
935
  name: i,
@@ -939,9 +939,9 @@ var bx = function r(t) {
939
939
  throw new qs("intrinsic " + t + " does not exist!");
940
940
  }, fu = function(t, e) {
941
941
  if (typeof t != "string" || t.length === 0)
942
- throw new Ws("intrinsic name must be a non-empty string");
942
+ throw new Xs("intrinsic name must be a non-empty string");
943
943
  if (arguments.length > 1 && typeof e != "boolean")
944
- throw new Ws('"allowMissing" argument must be a boolean');
944
+ throw new Xs('"allowMissing" argument must be a boolean');
945
945
  if (vx(/^%?[^%]*%?$/, t) === null)
946
946
  throw new qs("`%` may not be present anywhere but at the beginning and end of the intrinsic name");
947
947
  var i = Sx(t), s = i.length > 0 ? i[0] : "", n = Cx("%" + s + "%", e), o = n.name, a = n.value, h = !1, l = n.alias;
@@ -955,7 +955,7 @@ var bx = function r(t) {
955
955
  else if (a != null) {
956
956
  if (!(d in a)) {
957
957
  if (!e)
958
- throw new Ws("base intrinsic for " + t + " exists, but the property is not available.");
958
+ throw new Xs("base intrinsic for " + t + " exists, but the property is not available.");
959
959
  return;
960
960
  }
961
961
  if (qr && c + 1 >= i.length) {
@@ -1017,7 +1017,7 @@ function Qd(r, t) {
1017
1017
  }
1018
1018
  return fr.call(t, e, "$&_");
1019
1019
  }
1020
- var zl = Px, qd = zl.custom, tf = G0(qd) ? qd : null, Wx = function r(t, e, i, s) {
1020
+ var zl = Px, qd = zl.custom, tf = G0(qd) ? qd : null, Xx = function r(t, e, i, s) {
1021
1021
  var n = e || {};
1022
1022
  if (lr(n, "quoteStyle") && n.quoteStyle !== "single" && n.quoteStyle !== "double")
1023
1023
  throw new TypeError('option "quoteStyle" must be "single" or "double"');
@@ -1076,7 +1076,7 @@ var zl = Px, qd = zl.custom, tf = G0(qd) ? qd : null, Wx = function r(t, e, i, s
1076
1076
  }
1077
1077
  if (i_(t)) {
1078
1078
  for (var g = "<" + zd.call(String(t.nodeName)), y = t.attributes || [], x = 0; x < y.length; x++)
1079
- g += " " + y[x].name + "=" + L0(Xx(y[x].value), "double", n);
1079
+ g += " " + y[x].name + "=" + L0(Wx(y[x].value), "double", n);
1080
1080
  return g += ">", t.childNodes && t.childNodes.length && (g += "..."), g += "</" + zd.call(String(t.nodeName)) + ">", g;
1081
1081
  }
1082
1082
  if (jl(t)) {
@@ -1131,7 +1131,7 @@ function L0(r, t, e) {
1131
1131
  var i = (e.quoteStyle || t) === "double" ? '"' : "'";
1132
1132
  return i + r + i;
1133
1133
  }
1134
- function Xx(r) {
1134
+ function Wx(r) {
1135
1135
  return fr.call(String(r), /"/g, "&quot;");
1136
1136
  }
1137
1137
  function jl(r) {
@@ -1348,7 +1348,7 @@ function ko(r, t) {
1348
1348
  P0.call(r, n[l]) && i.push("[" + t(n[l]) + "]: " + t(r[n[l]], r));
1349
1349
  return i;
1350
1350
  }
1351
- var yu = fu, dn = Ax, o_ = Wx, a_ = yu("%TypeError%"), Fo = yu("%WeakMap%", !0), No = yu("%Map%", !0), h_ = dn("WeakMap.prototype.get", !0), l_ = dn("WeakMap.prototype.set", !0), c_ = dn("WeakMap.prototype.has", !0), u_ = dn("Map.prototype.get", !0), d_ = dn("Map.prototype.set", !0), f_ = dn("Map.prototype.has", !0), bu = function(r, t) {
1351
+ var yu = fu, dn = Ax, o_ = Xx, a_ = yu("%TypeError%"), Fo = yu("%WeakMap%", !0), No = yu("%Map%", !0), h_ = dn("WeakMap.prototype.get", !0), l_ = dn("WeakMap.prototype.set", !0), c_ = dn("WeakMap.prototype.has", !0), u_ = dn("Map.prototype.get", !0), d_ = dn("Map.prototype.set", !0), f_ = dn("Map.prototype.has", !0), bu = function(r, t) {
1352
1352
  for (var e = r, i; (i = e.next) !== null; e = i)
1353
1353
  if (i.key === t)
1354
1354
  return e.next = i.next, i.next = r.next, r.next = i, i;
@@ -1714,11 +1714,11 @@ var yu = fu, dn = Ax, o_ = Wx, a_ = yu("%TypeError%"), Fo = yu("%WeakMap%", !0),
1714
1714
  });
1715
1715
  }, U0 = function(r, t) {
1716
1716
  return r && typeof r == "string" && t.comma && r.indexOf(",") > -1 ? r.split(",") : r;
1717
- }, U_ = "utf8=%26%2310003%3B", W_ = "utf8=%E2%9C%93", X_ = function(t, e) {
1717
+ }, U_ = "utf8=%26%2310003%3B", X_ = "utf8=%E2%9C%93", W_ = function(t, e) {
1718
1718
  var i = { __proto__: null }, s = e.ignoreQueryPrefix ? t.replace(/^\?/, "") : t, n = e.parameterLimit === 1 / 0 ? void 0 : e.parameterLimit, o = s.split(e.delimiter, n), a = -1, h, l = e.charset;
1719
1719
  if (e.charsetSentinel)
1720
1720
  for (h = 0; h < o.length; ++h)
1721
- o[h].indexOf("utf8=") === 0 && (o[h] === W_ ? l = "utf-8" : o[h] === U_ && (l = "iso-8859-1"), a = h, h = o.length);
1721
+ o[h].indexOf("utf8=") === 0 && (o[h] === X_ ? l = "utf-8" : o[h] === U_ && (l = "iso-8859-1"), a = h, h = o.length);
1722
1722
  for (h = 0; h < o.length; ++h)
1723
1723
  if (h !== a) {
1724
1724
  var c = o[h], u = c.indexOf("]="), d = u === -1 ? c.indexOf("=") : u + 1, f, p;
@@ -1789,7 +1789,7 @@ var yu = fu, dn = Ax, o_ = Wx, a_ = yu("%TypeError%"), Fo = yu("%WeakMap%", !0),
1789
1789
  var e = H_(t);
1790
1790
  if (r === "" || r === null || typeof r > "u")
1791
1791
  return e.plainObjects ? /* @__PURE__ */ Object.create(null) : {};
1792
- for (var i = typeof r == "string" ? X_(r, e) : r, s = e.plainObjects ? /* @__PURE__ */ Object.create(null) : {}, n = Object.keys(i), o = 0; o < n.length; ++o) {
1792
+ for (var i = typeof r == "string" ? W_(r, e) : r, s = e.plainObjects ? /* @__PURE__ */ Object.create(null) : {}, n = Object.keys(i), o = 0; o < n.length; ++o) {
1793
1793
  var a = n[o], h = V_(a, i[a], e, typeof r == "string");
1794
1794
  s = en.merge(s, h, e);
1795
1795
  }
@@ -1835,7 +1835,7 @@ var Q_ = /^([a-z0-9.+-]+:)/i, q_ = /:[0-9]*$/, tv = /^(\/\/?(?!\/)[^?\s]*)(\?[^\
1835
1835
  }, ql = {
1836
1836
  javascript: !0,
1837
1837
  "javascript:": !0
1838
- }, Xs = {
1838
+ }, Ws = {
1839
1839
  http: !0,
1840
1840
  https: !0,
1841
1841
  ftp: !0,
@@ -1874,7 +1874,7 @@ zi.prototype.parse = function(r, t, e) {
1874
1874
  var u = a.substr(0, 2) === "//";
1875
1875
  u && !(l && ql[l]) && (a = a.substr(2), this.slashes = !0);
1876
1876
  }
1877
- if (!ql[l] && (u || l && !Xs[l])) {
1877
+ if (!ql[l] && (u || l && !Ws[l])) {
1878
1878
  for (var d = -1, f = 0; f < af.length; f++) {
1879
1879
  var p = a.indexOf(af[f]);
1880
1880
  p !== -1 && (d === -1 || p < d) && (d = p);
@@ -1915,7 +1915,7 @@ zi.prototype.parse = function(r, t, e) {
1915
1915
  var F = a.indexOf("#");
1916
1916
  F !== -1 && (this.hash = a.substr(F), a = a.slice(0, F));
1917
1917
  var O = a.indexOf("?");
1918
- if (O !== -1 ? (this.search = a.substr(O), this.query = a.substr(O + 1), t && (this.query = tc.parse(this.query)), a = a.slice(0, O)) : t && (this.search = "", this.query = {}), a && (this.pathname = a), Xs[c] && this.hostname && !this.pathname && (this.pathname = "/"), this.pathname || this.search) {
1918
+ if (O !== -1 ? (this.search = a.substr(O), this.query = a.substr(O + 1), t && (this.query = tc.parse(this.query)), a = a.slice(0, O)) : t && (this.search = "", this.query = {}), a && (this.pathname = a), Ws[c] && this.hostname && !this.pathname && (this.pathname = "/"), this.pathname || this.search) {
1919
1919
  var L = this.pathname || "", U = this.search || "";
1920
1920
  this.path = L + U;
1921
1921
  }
@@ -1930,7 +1930,7 @@ zi.prototype.format = function() {
1930
1930
  addQueryPrefix: !1
1931
1931
  }));
1932
1932
  var o = this.search || n && "?" + n || "";
1933
- return t && t.substr(-1) !== ":" && (t += ":"), this.slashes || (!t || Xs[t]) && s !== !1 ? (s = "//" + (s || ""), e && e.charAt(0) !== "/" && (e = "/" + e)) : s || (s = ""), i && i.charAt(0) !== "#" && (i = "#" + i), o && o.charAt(0) !== "?" && (o = "?" + o), e = e.replace(/[?#]/g, function(a) {
1933
+ return t && t.substr(-1) !== ":" && (t += ":"), this.slashes || (!t || Ws[t]) && s !== !1 ? (s = "//" + (s || ""), e && e.charAt(0) !== "/" && (e = "/" + e)) : s || (s = ""), i && i.charAt(0) !== "#" && (i = "#" + i), o && o.charAt(0) !== "?" && (o = "?" + o), e = e.replace(/[?#]/g, function(a) {
1934
1934
  return encodeURIComponent(a);
1935
1935
  }), o = o.replace("#", "%23"), t + s + e + o + i;
1936
1936
  };
@@ -1953,10 +1953,10 @@ zi.prototype.resolveObject = function(r) {
1953
1953
  var h = o[a];
1954
1954
  h !== "protocol" && (e[h] = r[h]);
1955
1955
  }
1956
- return Xs[e.protocol] && e.hostname && !e.pathname && (e.pathname = "/", e.path = e.pathname), e.href = e.format(), e;
1956
+ return Ws[e.protocol] && e.hostname && !e.pathname && (e.pathname = "/", e.path = e.pathname), e.href = e.format(), e;
1957
1957
  }
1958
1958
  if (r.protocol && r.protocol !== e.protocol) {
1959
- if (!Xs[r.protocol]) {
1959
+ if (!Ws[r.protocol]) {
1960
1960
  for (var l = Object.keys(r), c = 0; c < l.length; c++) {
1961
1961
  var u = l[c];
1962
1962
  e[u] = r[u];
@@ -1975,7 +1975,7 @@ zi.prototype.resolveObject = function(r) {
1975
1975
  }
1976
1976
  return e.slashes = e.slashes || r.slashes, e.href = e.format(), e;
1977
1977
  }
1978
- var p = e.pathname && e.pathname.charAt(0) === "/", m = r.host || r.pathname && r.pathname.charAt(0) === "/", g = m || p || e.host && r.pathname, y = g, x = e.pathname && e.pathname.split("/") || [], b = r.pathname && r.pathname.split("/") || [], _ = e.protocol && !Xs[e.protocol];
1978
+ var p = e.pathname && e.pathname.charAt(0) === "/", m = r.host || r.pathname && r.pathname.charAt(0) === "/", g = m || p || e.host && r.pathname, y = g, x = e.pathname && e.pathname.split("/") || [], b = r.pathname && r.pathname.split("/") || [], _ = e.protocol && !Ws[e.protocol];
1979
1979
  if (_ && (e.hostname = "", e.port = null, e.host && (x[0] === "" ? x[0] = e.host : x.unshift(e.host)), e.host = "", r.protocol && (r.hostname = null, r.port = null, r.host && (b[0] === "" ? b[0] = r.host : b.unshift(r.host)), r.host = null), g = g && (b[0] === "" || x[0] === "")), m)
1980
1980
  e.host = r.host || r.host === "" ? r.host : e.host, e.hostname = r.hostname || r.hostname === "" ? r.hostname : e.hostname, e.search = r.search, e.query = r.query, x = b;
1981
1981
  else if (b.length)
@@ -2009,7 +2009,7 @@ zi.prototype.parseHost = function() {
2009
2009
  t && (t = t[0], t !== ":" && (this.port = t.substr(1)), r = r.substr(0, r.length - t.length)), r && (this.hostname = r);
2010
2010
  };
2011
2011
  const lf = {};
2012
- function pt(r, t, e = 3) {
2012
+ function ft(r, t, e = 3) {
2013
2013
  if (lf[t])
2014
2014
  return;
2015
2015
  let i = new Error().stack;
@@ -2357,18 +2357,18 @@ var dv = { grad: 0.9, turn: 360, rad: 360 / (2 * Math.PI) }, Ni = function(r) {
2357
2357
  return typeof r == "string" ? r.length > 0 : typeof r == "number";
2358
2358
  }, ee = function(r, t, e) {
2359
2359
  return t === void 0 && (t = 0), e === void 0 && (e = Math.pow(10, t)), Math.round(e * r) / e + 0;
2360
- }, Xe = function(r, t, e) {
2360
+ }, We = function(r, t, e) {
2361
2361
  return t === void 0 && (t = 0), e === void 0 && (e = 1), r > e ? e : r > t ? r : t;
2362
- }, W0 = function(r) {
2362
+ }, X0 = function(r) {
2363
2363
  return (r = isFinite(r) ? r % 360 : 0) > 0 ? r : r + 360;
2364
2364
  }, cf = function(r) {
2365
- return { r: Xe(r.r, 0, 255), g: Xe(r.g, 0, 255), b: Xe(r.b, 0, 255), a: Xe(r.a) };
2365
+ return { r: We(r.r, 0, 255), g: We(r.g, 0, 255), b: We(r.b, 0, 255), a: We(r.a) };
2366
2366
  }, qh = function(r) {
2367
2367
  return { r: ee(r.r), g: ee(r.g), b: ee(r.b), a: ee(r.a, 3) };
2368
2368
  }, fv = /^#([0-9a-f]{3,8})$/i, Do = function(r) {
2369
2369
  var t = r.toString(16);
2370
2370
  return t.length < 2 ? "0" + t : t;
2371
- }, X0 = function(r) {
2371
+ }, W0 = function(r) {
2372
2372
  var t = r.r, e = r.g, i = r.b, s = r.a, n = Math.max(t, e, i), o = n - Math.min(t, e, i), a = o ? n === t ? (e - i) / o : n === e ? 2 + (i - t) / o : 4 + (t - e) / o : 0;
2373
2373
  return { h: 60 * (a < 0 ? a + 6 : a), s: n ? o / n * 100 : 0, v: n / 255 * 100, a: s };
2374
2374
  }, Z0 = function(r) {
@@ -2377,14 +2377,14 @@ var dv = { grad: 0.9, turn: 360, rad: 360 / (2 * Math.PI) }, Ni = function(r) {
2377
2377
  var n = Math.floor(t), o = i * (1 - e), a = i * (1 - (t - n) * e), h = i * (1 - (1 - t + n) * e), l = n % 6;
2378
2378
  return { r: 255 * [i, a, o, o, h, i][l], g: 255 * [h, i, i, a, o, o][l], b: 255 * [o, o, h, i, i, a][l], a: s };
2379
2379
  }, uf = function(r) {
2380
- return { h: W0(r.h), s: Xe(r.s, 0, 100), l: Xe(r.l, 0, 100), a: Xe(r.a) };
2380
+ return { h: X0(r.h), s: We(r.s, 0, 100), l: We(r.l, 0, 100), a: We(r.a) };
2381
2381
  }, df = function(r) {
2382
2382
  return { h: ee(r.h), s: ee(r.s), l: ee(r.l), a: ee(r.a, 3) };
2383
2383
  }, ff = function(r) {
2384
2384
  return Z0((e = (t = r).s, { h: t.h, s: (e *= ((i = t.l) < 50 ? i : 100 - i) / 100) > 0 ? 2 * e / (i + e) * 100 : 0, v: i + e, a: t.a }));
2385
2385
  var t, e, i;
2386
2386
  }, Yn = function(r) {
2387
- return { h: (t = X0(r)).h, s: (s = (200 - (e = t.s)) * (i = t.v) / 100) > 0 && s < 200 ? e * i / 100 / (s <= 100 ? s : 200 - s) * 100 : 0, l: s / 2, a: t.a };
2387
+ return { h: (t = W0(r)).h, s: (s = (200 - (e = t.s)) * (i = t.v) / 100) > 0 && s < 200 ? e * i / 100 / (s <= 100 ? s : 200 - s) * 100 : 0, l: s / 2, a: t.a };
2388
2388
  var t, e, i, s;
2389
2389
  }, pv = /^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i, mv = /^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i, gv = /^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i, yv = /^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i, ec = { string: [[function(r) {
2390
2390
  var t = fv.exec(r);
@@ -2409,7 +2409,7 @@ var dv = { grad: 0.9, turn: 360, rad: 360 / (2 * Math.PI) }, Ni = function(r) {
2409
2409
  var t = r.h, e = r.s, i = r.v, s = r.a, n = s === void 0 ? 1 : s;
2410
2410
  if (!Ni(t) || !Ni(e) || !Ni(i)) return null;
2411
2411
  var o = function(a) {
2412
- return { h: W0(a.h), s: Xe(a.s, 0, 100), v: Xe(a.v, 0, 100), a: Xe(a.a) };
2412
+ return { h: X0(a.h), s: We(a.s, 0, 100), v: We(a.v, 0, 100), a: We(a.a) };
2413
2413
  }({ h: Number(t), s: Number(e), v: Number(i), a: Number(n) });
2414
2414
  return Z0(o);
2415
2415
  }, "hsv"]] }, pf = function(r, t) {
@@ -2422,12 +2422,12 @@ var dv = { grad: 0.9, turn: 360, rad: 360 / (2 * Math.PI) }, Ni = function(r) {
2422
2422
  return typeof r == "string" ? pf(r.trim(), ec.string) : typeof r == "object" && r !== null ? pf(r, ec.object) : [null, void 0];
2423
2423
  }, tl = function(r, t) {
2424
2424
  var e = Yn(r);
2425
- return { h: e.h, s: Xe(e.s + 100 * t, 0, 100), l: e.l, a: e.a };
2425
+ return { h: e.h, s: We(e.s + 100 * t, 0, 100), l: e.l, a: e.a };
2426
2426
  }, el = function(r) {
2427
2427
  return (299 * r.r + 587 * r.g + 114 * r.b) / 1e3 / 255;
2428
2428
  }, mf = function(r, t) {
2429
2429
  var e = Yn(r);
2430
- return { h: e.h, s: e.s, l: Xe(e.l + 100 * t, 0, 100), a: e.a };
2430
+ return { h: e.h, s: e.s, l: We(e.l + 100 * t, 0, 100), a: e.a };
2431
2431
  }, ic = function() {
2432
2432
  function r(t) {
2433
2433
  this.parsed = bv(t)[0], this.rgba = this.parsed || { r: 0, g: 0, b: 0, a: 1 };
@@ -2454,7 +2454,7 @@ var dv = { grad: 0.9, turn: 360, rad: 360 / (2 * Math.PI) }, Ni = function(r) {
2454
2454
  return t = df(Yn(this.rgba)), e = t.h, i = t.s, s = t.l, (n = t.a) < 1 ? "hsla(" + e + ", " + i + "%, " + s + "%, " + n + ")" : "hsl(" + e + ", " + i + "%, " + s + "%)";
2455
2455
  var t, e, i, s, n;
2456
2456
  }, r.prototype.toHsv = function() {
2457
- return t = X0(this.rgba), { h: ee(t.h), s: ee(t.s), v: ee(t.v), a: ee(t.a, 3) };
2457
+ return t = W0(this.rgba), { h: ee(t.h), s: ee(t.s), v: ee(t.v), a: ee(t.a, 3) };
2458
2458
  var t;
2459
2459
  }, r.prototype.invert = function() {
2460
2460
  return ui({ r: 255 - (t = this.rgba).r, g: 255 - t.g, b: 255 - t.b, a: t.a });
@@ -2779,10 +2779,10 @@ As.temp = new As(), /** Pattern for hex strings */
2779
2779
  As.HEX_PATTERN = /^(#|0x)?(([a-f0-9]{3}){1,2}([a-f0-9]{2})?)$/i;
2780
2780
  let Et = As;
2781
2781
  function vv(r) {
2782
- return pt("7.2.0", "utils.hex2string is deprecated, use Color#toHex instead"), Et.shared.setValue(r).toHex();
2782
+ return ft("7.2.0", "utils.hex2string is deprecated, use Color#toHex instead"), Et.shared.setValue(r).toHex();
2783
2783
  }
2784
2784
  function wv(r) {
2785
- return pt("7.2.0", "utils.rgb2hex is deprecated, use Color#toNumber instead"), Et.shared.setValue(r).toNumber();
2785
+ return ft("7.2.0", "utils.rgb2hex is deprecated, use Color#toNumber instead"), Et.shared.setValue(r).toNumber();
2786
2786
  }
2787
2787
  function Tv() {
2788
2788
  const r = [], t = [];
@@ -3537,7 +3537,7 @@ class dh extends to {
3537
3537
  }
3538
3538
  }
3539
3539
  const Gv = {
3540
- scaleMode: Xi.NEAREST,
3540
+ scaleMode: Wi.NEAREST,
3541
3541
  alphaMode: be.NPM
3542
3542
  }, ac = class Ms extends po {
3543
3543
  /**
@@ -3765,7 +3765,7 @@ const Gv = {
3765
3765
  t = t || new Float32Array(e * i * 4);
3766
3766
  const n = new dh(t, { width: e, height: i, ...s == null ? void 0 : s.resourceOptions });
3767
3767
  let o, a;
3768
- return t instanceof Float32Array ? (o = X.RGBA, a = nt.FLOAT) : t instanceof Int32Array ? (o = X.RGBA_INTEGER, a = nt.INT) : t instanceof Uint32Array ? (o = X.RGBA_INTEGER, a = nt.UNSIGNED_INT) : t instanceof Int16Array ? (o = X.RGBA_INTEGER, a = nt.SHORT) : t instanceof Uint16Array ? (o = X.RGBA_INTEGER, a = nt.UNSIGNED_SHORT) : t instanceof Int8Array ? (o = X.RGBA, a = nt.BYTE) : (o = X.RGBA, a = nt.UNSIGNED_BYTE), n.internal = !0, new Ms(n, Object.assign({}, Gv, { type: a, format: o }, s));
3768
+ return t instanceof Float32Array ? (o = W.RGBA, a = nt.FLOAT) : t instanceof Int32Array ? (o = W.RGBA_INTEGER, a = nt.INT) : t instanceof Uint32Array ? (o = W.RGBA_INTEGER, a = nt.UNSIGNED_INT) : t instanceof Int16Array ? (o = W.RGBA_INTEGER, a = nt.SHORT) : t instanceof Uint16Array ? (o = W.RGBA_INTEGER, a = nt.UNSIGNED_SHORT) : t instanceof Int8Array ? (o = W.RGBA, a = nt.BYTE) : (o = W.RGBA, a = nt.UNSIGNED_BYTE), n.internal = !0, new Ms(n, Object.assign({}, Gv, { type: a, format: o }, s));
3769
3769
  }
3770
3770
  /**
3771
3771
  * Adds a BaseTexture to the global BaseTextureCache. This cache is shared across the whole PIXI object.
@@ -3809,7 +3809,7 @@ ac.defaultOptions = {
3809
3809
  * @type {PIXI.SCALE_MODES}
3810
3810
  * @default PIXI.SCALE_MODES.LINEAR
3811
3811
  */
3812
- scaleMode: Xi.LINEAR,
3812
+ scaleMode: Wi.LINEAR,
3813
3813
  /**
3814
3814
  * Wrap mode for textures.
3815
3815
  * @type {PIXI.WRAP_MODES}
@@ -3833,7 +3833,7 @@ ac.defaultOptions = {
3833
3833
  * @type {PIXI.FORMATS}
3834
3834
  * @default PIXI.FORMATS.RGBA
3835
3835
  */
3836
- format: X.RGBA,
3836
+ format: W.RGBA,
3837
3837
  /**
3838
3838
  * GL data type
3839
3839
  * @type {PIXI.TYPES}
@@ -3849,7 +3849,7 @@ class hc {
3849
3849
  }
3850
3850
  }
3851
3851
  let kv = 0;
3852
- class Wt {
3852
+ class Xt {
3853
3853
  /**
3854
3854
  * @param {PIXI.IArrayBuffer} data - the data to store in the buffer.
3855
3855
  * @param _static - `true` for static buffer
@@ -3894,7 +3894,7 @@ class Wt {
3894
3894
  * @returns - A new Buffer based on the data provided.
3895
3895
  */
3896
3896
  static from(t) {
3897
- return t instanceof Array && (t = new Float32Array(t)), new Wt(t);
3897
+ return t instanceof Array && (t = new Float32Array(t)), new Xt(t);
3898
3898
  }
3899
3899
  }
3900
3900
  class Pa {
@@ -3986,7 +3986,7 @@ class wr {
3986
3986
  addAttribute(t, e, i = 0, s = !1, n, o, a, h = !1) {
3987
3987
  if (!e)
3988
3988
  throw new Error("You must pass a buffer when creating an attribute");
3989
- e instanceof Wt || (e instanceof Array && (e = new Float32Array(e)), e = new Wt(e));
3989
+ e instanceof Xt || (e instanceof Array && (e = new Float32Array(e)), e = new Xt(e));
3990
3990
  const l = t.split("|");
3991
3991
  if (l.length > 1) {
3992
3992
  for (let u = 0; u < l.length; u++)
@@ -4020,7 +4020,7 @@ class wr {
4020
4020
  * @returns - Returns self, useful for chaining.
4021
4021
  */
4022
4022
  addIndex(t) {
4023
- return t instanceof Wt || (t instanceof Array && (t = new Uint16Array(t)), t = new Wt(t)), t.type = Si.ELEMENT_ARRAY_BUFFER, this.indexBuffer = t, this.buffers.includes(t) || this.buffers.push(t), this;
4023
+ return t instanceof Xt || (t instanceof Array && (t = new Uint16Array(t)), t = new Xt(t)), t.type = Si.ELEMENT_ARRAY_BUFFER, this.indexBuffer = t, this.buffers.includes(t) || this.buffers.push(t), this;
4024
4024
  }
4025
4025
  /**
4026
4026
  * Returns the index buffer
@@ -4037,7 +4037,7 @@ class wr {
4037
4037
  interleave() {
4038
4038
  if (this.buffers.length === 1 || this.buffers.length === 2 && this.indexBuffer)
4039
4039
  return this;
4040
- const t = [], e = [], i = new Wt();
4040
+ const t = [], e = [], i = new Xt();
4041
4041
  let s;
4042
4042
  for (s in this.attributes) {
4043
4043
  const n = this.attributes[s], o = this.buffers[n.buffer];
@@ -4070,7 +4070,7 @@ class wr {
4070
4070
  clone() {
4071
4071
  const t = new wr();
4072
4072
  for (let e = 0; e < this.buffers.length; e++)
4073
- t.buffers[e] = new Wt(this.buffers[e].data.slice(0));
4073
+ t.buffers[e] = new Xt(this.buffers[e].data.slice(0));
4074
4074
  for (const e in this.attributes) {
4075
4075
  const i = this.attributes[e];
4076
4076
  t.attributes[e] = new Pa(
@@ -4101,7 +4101,7 @@ class wr {
4101
4101
  s[h] = s[h] || 0, s[h] += o.buffers[h].data.length, n[h] = 0;
4102
4102
  }
4103
4103
  for (let a = 0; a < o.buffers.length; a++)
4104
- i[a] = new Ov[K0(o.buffers[a].data)](s[a]), e.buffers[a] = new Wt(i[a]);
4104
+ i[a] = new Ov[K0(o.buffers[a].data)](s[a]), e.buffers[a] = new Xt(i[a]);
4105
4105
  for (let a = 0; a < t.length; a++) {
4106
4106
  o = t[a];
4107
4107
  for (let h = 0; h < o.buffers.length; h++)
@@ -4135,7 +4135,7 @@ class z0 extends wr {
4135
4135
  * is updated every frame, `true` doesn't change frame-to-frame.
4136
4136
  */
4137
4137
  constructor(t = !1) {
4138
- super(), this._buffer = new Wt(null, t, !1), this._indexBuffer = new Wt(null, t, !0), this.addAttribute("aVertexPosition", this._buffer, 2, !1, nt.FLOAT).addAttribute("aTextureCoord", this._buffer, 2, !1, nt.FLOAT).addAttribute("aColor", this._buffer, 4, !0, nt.UNSIGNED_BYTE).addAttribute("aTextureId", this._buffer, 1, !0, nt.FLOAT).addIndex(this._indexBuffer);
4138
+ super(), this._buffer = new Xt(null, t, !1), this._indexBuffer = new Xt(null, t, !0), this.addAttribute("aVertexPosition", this._buffer, 2, !1, nt.FLOAT).addAttribute("aTextureCoord", this._buffer, 2, !1, nt.FLOAT).addAttribute("aColor", this._buffer, 4, !0, nt.UNSIGNED_BYTE).addAttribute("aTextureId", this._buffer, 1, !0, nt.FLOAT).addIndex(this._indexBuffer);
4139
4139
  }
4140
4140
  }
4141
4141
  const La = Math.PI * 2, Bv = 180 / Math.PI, lc = Math.PI / 180;
@@ -4703,15 +4703,15 @@ class It {
4703
4703
  It.prototype.toString = function() {
4704
4704
  return `[@pixi/math:Matrix a=${this.a} b=${this.b} c=${this.c} d=${this.d} tx=${this.tx} ty=${this.ty}]`;
4705
4705
  };
4706
- const Wr = [1, 1, 0, -1, -1, -1, 0, 1, 1, 1, 0, -1, -1, -1, 0, 1], Xr = [0, 1, 1, 1, 0, -1, -1, -1, 0, 1, 1, 1, 0, -1, -1, -1], Zr = [0, -1, -1, -1, 0, 1, 1, 1, 0, 1, 1, 1, 0, -1, -1, -1], Vr = [1, 1, 0, -1, -1, -1, 0, 1, -1, -1, 0, 1, 1, 1, 0, -1], cc = [], j0 = [], Bo = Math.sign;
4706
+ const Xr = [1, 1, 0, -1, -1, -1, 0, 1, 1, 1, 0, -1, -1, -1, 0, 1], Wr = [0, 1, 1, 1, 0, -1, -1, -1, 0, 1, 1, 1, 0, -1, -1, -1], Zr = [0, -1, -1, -1, 0, 1, 1, 1, 0, 1, 1, 1, 0, -1, -1, -1], Vr = [1, 1, 0, -1, -1, -1, 0, 1, -1, -1, 0, 1, 1, 1, 0, -1], cc = [], j0 = [], Bo = Math.sign;
4707
4707
  function Uv() {
4708
4708
  for (let r = 0; r < 16; r++) {
4709
4709
  const t = [];
4710
4710
  cc.push(t);
4711
4711
  for (let e = 0; e < 16; e++) {
4712
- const i = Bo(Wr[r] * Wr[e] + Zr[r] * Xr[e]), s = Bo(Xr[r] * Wr[e] + Vr[r] * Xr[e]), n = Bo(Wr[r] * Zr[e] + Zr[r] * Vr[e]), o = Bo(Xr[r] * Zr[e] + Vr[r] * Vr[e]);
4712
+ const i = Bo(Xr[r] * Xr[e] + Zr[r] * Wr[e]), s = Bo(Wr[r] * Xr[e] + Vr[r] * Wr[e]), n = Bo(Xr[r] * Zr[e] + Zr[r] * Vr[e]), o = Bo(Wr[r] * Zr[e] + Vr[r] * Vr[e]);
4713
4713
  for (let a = 0; a < 16; a++)
4714
- if (Wr[a] === i && Xr[a] === s && Zr[a] === n && Vr[a] === o) {
4714
+ if (Xr[a] === i && Wr[a] === s && Zr[a] === n && Vr[a] === o) {
4715
4715
  t.push(a);
4716
4716
  break;
4717
4717
  }
@@ -4719,7 +4719,7 @@ function Uv() {
4719
4719
  }
4720
4720
  for (let r = 0; r < 16; r++) {
4721
4721
  const t = new It();
4722
- t.set(Wr[r], Xr[r], Zr[r], Vr[r], 0, 0), j0.push(t);
4722
+ t.set(Xr[r], Wr[r], Zr[r], Vr[r], 0, 0), j0.push(t);
4723
4723
  }
4724
4724
  }
4725
4725
  Uv();
@@ -4805,13 +4805,13 @@ const Lt = {
4805
4805
  * @returns {PIXI.GD8Symmetry} The X-component of the U-axis
4806
4806
  * after rotating the axes.
4807
4807
  */
4808
- uX: (r) => Wr[r],
4808
+ uX: (r) => Xr[r],
4809
4809
  /**
4810
4810
  * @param {PIXI.GD8Symmetry} ind - sprite rotation angle.
4811
4811
  * @returns {PIXI.GD8Symmetry} The Y-component of the U-axis
4812
4812
  * after rotating the axes.
4813
4813
  */
4814
- uY: (r) => Xr[r],
4814
+ uY: (r) => Wr[r],
4815
4815
  /**
4816
4816
  * @param {PIXI.GD8Symmetry} ind - sprite rotation angle.
4817
4817
  * @returns {PIXI.GD8Symmetry} The X-component of the V-axis
@@ -5021,13 +5021,13 @@ let _u = uc;
5021
5021
  _u.prototype.toString = function() {
5022
5022
  return `[@pixi/math:Transform position=(${this.position.x}, ${this.position.y}) rotation=${this.rotation} scale=(${this.scale.x}, ${this.scale.y}) skew=(${this.skew.x}, ${this.skew.y}) ]`;
5023
5023
  };
5024
- var Wv = `varying vec2 vTextureCoord;
5024
+ var Xv = `varying vec2 vTextureCoord;
5025
5025
 
5026
5026
  uniform sampler2D uSampler;
5027
5027
 
5028
5028
  void main(void){
5029
5029
  gl_FragColor *= texture2D(uSampler, vTextureCoord);
5030
- }`, Xv = `attribute vec2 aVertexPosition;
5030
+ }`, Wv = `attribute vec2 aVertexPosition;
5031
5031
  attribute vec2 aTextureCoord;
5032
5032
 
5033
5033
  uniform mat3 projectionMatrix;
@@ -5536,11 +5536,11 @@ function Kv() {
5536
5536
  let Uo;
5537
5537
  function Yv() {
5538
5538
  if (!Uo) {
5539
- Uo = We.MEDIUM;
5539
+ Uo = Xe.MEDIUM;
5540
5540
  const r = Kv();
5541
5541
  if (r && r.getShaderPrecisionFormat) {
5542
5542
  const t = r.getShaderPrecisionFormat(r.FRAGMENT_SHADER, r.HIGH_FLOAT);
5543
- t && (Uo = t.precision ? We.HIGH : We.MEDIUM);
5543
+ t && (Uo = t.precision ? Xe.HIGH : Xe.MEDIUM);
5544
5544
  }
5545
5545
  }
5546
5546
  return Uo;
@@ -5584,7 +5584,7 @@ const jv = {
5584
5584
  function Q0(r) {
5585
5585
  return jv[r];
5586
5586
  }
5587
- let Wo = null;
5587
+ let Xo = null;
5588
5588
  const If = {
5589
5589
  FLOAT: "float",
5590
5590
  FLOAT_VEC2: "vec2",
@@ -5616,22 +5616,22 @@ const If = {
5616
5616
  UNSIGNED_INT_SAMPLER_2D_ARRAY: "sampler2DArray"
5617
5617
  };
5618
5618
  function q0(r, t) {
5619
- if (!Wo) {
5619
+ if (!Xo) {
5620
5620
  const e = Object.keys(If);
5621
- Wo = {};
5621
+ Xo = {};
5622
5622
  for (let i = 0; i < e.length; ++i) {
5623
5623
  const s = e[i];
5624
- Wo[r[s]] = If[s];
5624
+ Xo[r[s]] = If[s];
5625
5625
  }
5626
5626
  }
5627
- return Wo[t];
5627
+ return Xo[t];
5628
5628
  }
5629
5629
  function Af(r, t, e) {
5630
5630
  if (r.substring(0, 9) !== "precision") {
5631
5631
  let i = t;
5632
- return t === We.HIGH && e !== We.HIGH && (i = We.MEDIUM), `precision ${i} float;
5632
+ return t === Xe.HIGH && e !== Xe.HIGH && (i = Xe.MEDIUM), `precision ${i} float;
5633
5633
  ${r}`;
5634
- } else if (e !== We.HIGH && r.substring(0, 15) === "precision highp")
5634
+ } else if (e !== Xe.HIGH && r.substring(0, 15) === "precision highp")
5635
5635
  return r.replace("precision highp", "precision mediump");
5636
5636
  return r;
5637
5637
  }
@@ -5647,7 +5647,7 @@ function Jv() {
5647
5647
  return vn;
5648
5648
  }
5649
5649
  let $v = 0;
5650
- const Xo = {}, dc = class Rs {
5650
+ const Wo = {}, dc = class Rs {
5651
5651
  /**
5652
5652
  * @param vertexSrc - The source of the vertex shader.
5653
5653
  * @param fragmentSrc - The source of the fragment shader.
@@ -5655,12 +5655,12 @@ const Xo = {}, dc = class Rs {
5655
5655
  * @param extra - Extra data for shader
5656
5656
  */
5657
5657
  constructor(t, e, i = "pixi-shader", s = {}) {
5658
- this.extra = {}, this.id = $v++, this.vertexSrc = t || Rs.defaultVertexSrc, this.fragmentSrc = e || Rs.defaultFragmentSrc, this.vertexSrc = this.vertexSrc.trim(), this.fragmentSrc = this.fragmentSrc.trim(), this.extra = s, this.vertexSrc.substring(0, 8) !== "#version" && (i = i.replace(/\s+/g, "-"), Xo[i] ? (Xo[i]++, i += `-${Xo[i]}`) : Xo[i] = 1, this.vertexSrc = `#define SHADER_NAME ${i}
5658
+ this.extra = {}, this.id = $v++, this.vertexSrc = t || Rs.defaultVertexSrc, this.fragmentSrc = e || Rs.defaultFragmentSrc, this.vertexSrc = this.vertexSrc.trim(), this.fragmentSrc = this.fragmentSrc.trim(), this.extra = s, this.vertexSrc.substring(0, 8) !== "#version" && (i = i.replace(/\s+/g, "-"), Wo[i] ? (Wo[i]++, i += `-${Wo[i]}`) : Wo[i] = 1, this.vertexSrc = `#define SHADER_NAME ${i}
5659
5659
  ${this.vertexSrc}`, this.fragmentSrc = `#define SHADER_NAME ${i}
5660
5660
  ${this.fragmentSrc}`, this.vertexSrc = Af(
5661
5661
  this.vertexSrc,
5662
5662
  Rs.defaultVertexPrecision,
5663
- We.HIGH
5663
+ Xe.HIGH
5664
5664
  ), this.fragmentSrc = Af(
5665
5665
  this.fragmentSrc,
5666
5666
  Rs.defaultFragmentPrecision,
@@ -5672,14 +5672,14 @@ ${this.fragmentSrc}`, this.vertexSrc = Af(
5672
5672
  * @readonly
5673
5673
  */
5674
5674
  static get defaultVertexSrc() {
5675
- return Xv;
5675
+ return Wv;
5676
5676
  }
5677
5677
  /**
5678
5678
  * The default fragment shader source.
5679
5679
  * @readonly
5680
5680
  */
5681
5681
  static get defaultFragmentSrc() {
5682
- return Wv;
5682
+ return Xv;
5683
5683
  }
5684
5684
  /**
5685
5685
  * A short hand function to create a program based of a vertex and fragment shader.
@@ -5696,14 +5696,14 @@ ${this.fragmentSrc}`, this.vertexSrc = Af(
5696
5696
  return n || (_f[s] = n = new Rs(t, e, i)), n;
5697
5697
  }
5698
5698
  };
5699
- dc.defaultVertexPrecision = We.HIGH, /**
5699
+ dc.defaultVertexPrecision = Xe.HIGH, /**
5700
5700
  * Default specify float precision in fragment shader.
5701
5701
  * iOS is best set at highp due to https://github.com/pixijs/pixijs/issues/3742
5702
5702
  * @static
5703
5703
  * @type {PIXI.PRECISION}
5704
5704
  * @default PIXI.PRECISION.MEDIUM
5705
5705
  */
5706
- dc.defaultFragmentPrecision = Zi.apple.device ? We.HIGH : We.MEDIUM;
5706
+ dc.defaultFragmentPrecision = Zi.apple.device ? Xe.HIGH : Xe.MEDIUM;
5707
5707
  let Hi = dc, Qv = 0;
5708
5708
  class oi {
5709
5709
  /**
@@ -5712,7 +5712,7 @@ class oi {
5712
5712
  * @param isUbo - If true, will treat this uniform group as a uniform buffer object.
5713
5713
  */
5714
5714
  constructor(t, e, i) {
5715
- this.group = !0, this.syncUniforms = {}, this.dirtyId = 0, this.id = Qv++, this.static = !!e, this.ubo = !!i, t instanceof Wt ? (this.buffer = t, this.buffer.type = Si.UNIFORM_BUFFER, this.autoManage = !1, this.ubo = !0) : (this.uniforms = t, this.ubo && (this.buffer = new Wt(new Float32Array(1)), this.buffer.type = Si.UNIFORM_BUFFER, this.autoManage = !0));
5715
+ this.group = !0, this.syncUniforms = {}, this.dirtyId = 0, this.id = Qv++, this.static = !!e, this.ubo = !!i, t instanceof Xt ? (this.buffer = t, this.buffer.type = Si.UNIFORM_BUFFER, this.autoManage = !1, this.ubo = !0) : (this.uniforms = t, this.ubo && (this.buffer = new Xt(new Float32Array(1)), this.buffer.type = Si.UNIFORM_BUFFER, this.autoManage = !0));
5716
5716
  }
5717
5717
  update() {
5718
5718
  this.dirtyId++, !this.autoManage && this.buffer && this.buffer.update();
@@ -5949,7 +5949,7 @@ const Pn = class Qe extends gh {
5949
5949
  * @readonly
5950
5950
  */
5951
5951
  get MAX_TEXTURES() {
5952
- return pt("7.1.0", "BatchRenderer#MAX_TEXTURES renamed to BatchRenderer#maxTextures"), this.maxTextures;
5952
+ return ft("7.1.0", "BatchRenderer#MAX_TEXTURES renamed to BatchRenderer#maxTextures"), this.maxTextures;
5953
5953
  }
5954
5954
  /**
5955
5955
  * The default vertex shader source
@@ -6617,7 +6617,7 @@ class mc {
6617
6617
  */
6618
6618
  addColorTexture(t = 0, e) {
6619
6619
  return this.colorTextures[t] = e || new ut(null, {
6620
- scaleMode: Xi.NEAREST,
6620
+ scaleMode: Wi.NEAREST,
6621
6621
  resolution: 1,
6622
6622
  mipmap: Mi.OFF,
6623
6623
  width: this.width,
@@ -6630,12 +6630,12 @@ class mc {
6630
6630
  */
6631
6631
  addDepthTexture(t) {
6632
6632
  return this.depthTexture = t || new ut(null, {
6633
- scaleMode: Xi.NEAREST,
6633
+ scaleMode: Wi.NEAREST,
6634
6634
  resolution: 1,
6635
6635
  width: this.width,
6636
6636
  height: this.height,
6637
6637
  mipmap: Mi.OFF,
6638
- format: X.DEPTH_COMPONENT,
6638
+ format: W.DEPTH_COMPONENT,
6639
6639
  type: nt.UNSIGNED_SHORT
6640
6640
  }), this.dirtyId++, this.dirtyFormat++, this;
6641
6641
  }
@@ -7377,7 +7377,7 @@ class sm extends wr {
7377
7377
  1,
7378
7378
  0,
7379
7379
  1
7380
- ]), this.vertexBuffer = new Wt(this.vertices), this.uvBuffer = new Wt(this.uvs), this.addAttribute("aVertexPosition", this.vertexBuffer).addAttribute("aTextureCoord", this.uvBuffer).addIndex([0, 1, 2, 0, 2, 3]);
7380
+ ]), this.vertexBuffer = new Xt(this.vertices), this.uvBuffer = new Xt(this.uvs), this.addAttribute("aVertexPosition", this.vertexBuffer).addAttribute("aTextureCoord", this.uvBuffer).addIndex([0, 1, 2, 0, 2, 3]);
7381
7381
  }
7382
7382
  /**
7383
7383
  * Maps two Rectangle to the quad.
@@ -7716,7 +7716,7 @@ class om {
7716
7716
  * @param {PIXI.BUFFER_BITS} [mask=BUFFER_BITS.COLOR | BUFFER_BITS.DEPTH] - Bitwise OR of masks
7717
7717
  * that indicate the buffers to be cleared, by default COLOR and DEPTH buffers.
7718
7718
  */
7719
- clear(t, e, i, s, n = Xl.COLOR | Xl.DEPTH) {
7719
+ clear(t, e, i, s, n = Wl.COLOR | Wl.DEPTH) {
7720
7720
  const { gl: o } = this;
7721
7721
  o.clearColor(t, e, i, s), o.clear(n);
7722
7722
  }
@@ -8609,19 +8609,19 @@ class fm {
8609
8609
  extract: {
8610
8610
  enumerable: !1,
8611
8611
  get() {
8612
- return pt("7.0.0", "renderer.plugins.extract has moved to renderer.extract"), t.extract;
8612
+ return ft("7.0.0", "renderer.plugins.extract has moved to renderer.extract"), t.extract;
8613
8613
  }
8614
8614
  },
8615
8615
  prepare: {
8616
8616
  enumerable: !1,
8617
8617
  get() {
8618
- return pt("7.0.0", "renderer.plugins.prepare has moved to renderer.prepare"), t.prepare;
8618
+ return ft("7.0.0", "renderer.plugins.prepare has moved to renderer.prepare"), t.prepare;
8619
8619
  }
8620
8620
  },
8621
8621
  interaction: {
8622
8622
  enumerable: !1,
8623
8623
  get() {
8624
- return pt("7.0.0", "renderer.plugins.interaction has been deprecated, use renderer.events"), t.events;
8624
+ return ft("7.0.0", "renderer.plugins.interaction has been deprecated, use renderer.events"), t.events;
8625
8625
  }
8626
8626
  }
8627
8627
  });
@@ -9514,7 +9514,7 @@ let Kr = Gn;
9514
9514
  it.add(Kr);
9515
9515
  class ul {
9516
9516
  constructor(t) {
9517
- this.texture = t, this.width = -1, this.height = -1, this.dirtyId = -1, this.dirtyStyleId = -1, this.mipmap = !1, this.wrapMode = 33071, this.type = nt.UNSIGNED_BYTE, this.internalFormat = X.RGBA, this.samplerType = 0;
9517
+ this.texture = t, this.width = -1, this.height = -1, this.dirtyId = -1, this.dirtyStyleId = -1, this.mipmap = !1, this.wrapMode = 33071, this.type = nt.UNSIGNED_BYTE, this.internalFormat = W.RGBA, this.samplerType = 0;
9518
9518
  }
9519
9519
  }
9520
9520
  function Fw(r) {
@@ -9593,108 +9593,108 @@ function Nw(r) {
9593
9593
  let t;
9594
9594
  return "WebGL2RenderingContext" in globalThis && r instanceof globalThis.WebGL2RenderingContext ? t = {
9595
9595
  [nt.UNSIGNED_BYTE]: {
9596
- [X.RGBA]: r.RGBA8,
9597
- [X.RGB]: r.RGB8,
9598
- [X.RG]: r.RG8,
9599
- [X.RED]: r.R8,
9600
- [X.RGBA_INTEGER]: r.RGBA8UI,
9601
- [X.RGB_INTEGER]: r.RGB8UI,
9602
- [X.RG_INTEGER]: r.RG8UI,
9603
- [X.RED_INTEGER]: r.R8UI,
9604
- [X.ALPHA]: r.ALPHA,
9605
- [X.LUMINANCE]: r.LUMINANCE,
9606
- [X.LUMINANCE_ALPHA]: r.LUMINANCE_ALPHA
9596
+ [W.RGBA]: r.RGBA8,
9597
+ [W.RGB]: r.RGB8,
9598
+ [W.RG]: r.RG8,
9599
+ [W.RED]: r.R8,
9600
+ [W.RGBA_INTEGER]: r.RGBA8UI,
9601
+ [W.RGB_INTEGER]: r.RGB8UI,
9602
+ [W.RG_INTEGER]: r.RG8UI,
9603
+ [W.RED_INTEGER]: r.R8UI,
9604
+ [W.ALPHA]: r.ALPHA,
9605
+ [W.LUMINANCE]: r.LUMINANCE,
9606
+ [W.LUMINANCE_ALPHA]: r.LUMINANCE_ALPHA
9607
9607
  },
9608
9608
  [nt.BYTE]: {
9609
- [X.RGBA]: r.RGBA8_SNORM,
9610
- [X.RGB]: r.RGB8_SNORM,
9611
- [X.RG]: r.RG8_SNORM,
9612
- [X.RED]: r.R8_SNORM,
9613
- [X.RGBA_INTEGER]: r.RGBA8I,
9614
- [X.RGB_INTEGER]: r.RGB8I,
9615
- [X.RG_INTEGER]: r.RG8I,
9616
- [X.RED_INTEGER]: r.R8I
9609
+ [W.RGBA]: r.RGBA8_SNORM,
9610
+ [W.RGB]: r.RGB8_SNORM,
9611
+ [W.RG]: r.RG8_SNORM,
9612
+ [W.RED]: r.R8_SNORM,
9613
+ [W.RGBA_INTEGER]: r.RGBA8I,
9614
+ [W.RGB_INTEGER]: r.RGB8I,
9615
+ [W.RG_INTEGER]: r.RG8I,
9616
+ [W.RED_INTEGER]: r.R8I
9617
9617
  },
9618
9618
  [nt.UNSIGNED_SHORT]: {
9619
- [X.RGBA_INTEGER]: r.RGBA16UI,
9620
- [X.RGB_INTEGER]: r.RGB16UI,
9621
- [X.RG_INTEGER]: r.RG16UI,
9622
- [X.RED_INTEGER]: r.R16UI,
9623
- [X.DEPTH_COMPONENT]: r.DEPTH_COMPONENT16
9619
+ [W.RGBA_INTEGER]: r.RGBA16UI,
9620
+ [W.RGB_INTEGER]: r.RGB16UI,
9621
+ [W.RG_INTEGER]: r.RG16UI,
9622
+ [W.RED_INTEGER]: r.R16UI,
9623
+ [W.DEPTH_COMPONENT]: r.DEPTH_COMPONENT16
9624
9624
  },
9625
9625
  [nt.SHORT]: {
9626
- [X.RGBA_INTEGER]: r.RGBA16I,
9627
- [X.RGB_INTEGER]: r.RGB16I,
9628
- [X.RG_INTEGER]: r.RG16I,
9629
- [X.RED_INTEGER]: r.R16I
9626
+ [W.RGBA_INTEGER]: r.RGBA16I,
9627
+ [W.RGB_INTEGER]: r.RGB16I,
9628
+ [W.RG_INTEGER]: r.RG16I,
9629
+ [W.RED_INTEGER]: r.R16I
9630
9630
  },
9631
9631
  [nt.UNSIGNED_INT]: {
9632
- [X.RGBA_INTEGER]: r.RGBA32UI,
9633
- [X.RGB_INTEGER]: r.RGB32UI,
9634
- [X.RG_INTEGER]: r.RG32UI,
9635
- [X.RED_INTEGER]: r.R32UI,
9636
- [X.DEPTH_COMPONENT]: r.DEPTH_COMPONENT24
9632
+ [W.RGBA_INTEGER]: r.RGBA32UI,
9633
+ [W.RGB_INTEGER]: r.RGB32UI,
9634
+ [W.RG_INTEGER]: r.RG32UI,
9635
+ [W.RED_INTEGER]: r.R32UI,
9636
+ [W.DEPTH_COMPONENT]: r.DEPTH_COMPONENT24
9637
9637
  },
9638
9638
  [nt.INT]: {
9639
- [X.RGBA_INTEGER]: r.RGBA32I,
9640
- [X.RGB_INTEGER]: r.RGB32I,
9641
- [X.RG_INTEGER]: r.RG32I,
9642
- [X.RED_INTEGER]: r.R32I
9639
+ [W.RGBA_INTEGER]: r.RGBA32I,
9640
+ [W.RGB_INTEGER]: r.RGB32I,
9641
+ [W.RG_INTEGER]: r.RG32I,
9642
+ [W.RED_INTEGER]: r.R32I
9643
9643
  },
9644
9644
  [nt.FLOAT]: {
9645
- [X.RGBA]: r.RGBA32F,
9646
- [X.RGB]: r.RGB32F,
9647
- [X.RG]: r.RG32F,
9648
- [X.RED]: r.R32F,
9649
- [X.DEPTH_COMPONENT]: r.DEPTH_COMPONENT32F
9645
+ [W.RGBA]: r.RGBA32F,
9646
+ [W.RGB]: r.RGB32F,
9647
+ [W.RG]: r.RG32F,
9648
+ [W.RED]: r.R32F,
9649
+ [W.DEPTH_COMPONENT]: r.DEPTH_COMPONENT32F
9650
9650
  },
9651
9651
  [nt.HALF_FLOAT]: {
9652
- [X.RGBA]: r.RGBA16F,
9653
- [X.RGB]: r.RGB16F,
9654
- [X.RG]: r.RG16F,
9655
- [X.RED]: r.R16F
9652
+ [W.RGBA]: r.RGBA16F,
9653
+ [W.RGB]: r.RGB16F,
9654
+ [W.RG]: r.RG16F,
9655
+ [W.RED]: r.R16F
9656
9656
  },
9657
9657
  [nt.UNSIGNED_SHORT_5_6_5]: {
9658
- [X.RGB]: r.RGB565
9658
+ [W.RGB]: r.RGB565
9659
9659
  },
9660
9660
  [nt.UNSIGNED_SHORT_4_4_4_4]: {
9661
- [X.RGBA]: r.RGBA4
9661
+ [W.RGBA]: r.RGBA4
9662
9662
  },
9663
9663
  [nt.UNSIGNED_SHORT_5_5_5_1]: {
9664
- [X.RGBA]: r.RGB5_A1
9664
+ [W.RGBA]: r.RGB5_A1
9665
9665
  },
9666
9666
  [nt.UNSIGNED_INT_2_10_10_10_REV]: {
9667
- [X.RGBA]: r.RGB10_A2,
9668
- [X.RGBA_INTEGER]: r.RGB10_A2UI
9667
+ [W.RGBA]: r.RGB10_A2,
9668
+ [W.RGBA_INTEGER]: r.RGB10_A2UI
9669
9669
  },
9670
9670
  [nt.UNSIGNED_INT_10F_11F_11F_REV]: {
9671
- [X.RGB]: r.R11F_G11F_B10F
9671
+ [W.RGB]: r.R11F_G11F_B10F
9672
9672
  },
9673
9673
  [nt.UNSIGNED_INT_5_9_9_9_REV]: {
9674
- [X.RGB]: r.RGB9_E5
9674
+ [W.RGB]: r.RGB9_E5
9675
9675
  },
9676
9676
  [nt.UNSIGNED_INT_24_8]: {
9677
- [X.DEPTH_STENCIL]: r.DEPTH24_STENCIL8
9677
+ [W.DEPTH_STENCIL]: r.DEPTH24_STENCIL8
9678
9678
  },
9679
9679
  [nt.FLOAT_32_UNSIGNED_INT_24_8_REV]: {
9680
- [X.DEPTH_STENCIL]: r.DEPTH32F_STENCIL8
9680
+ [W.DEPTH_STENCIL]: r.DEPTH32F_STENCIL8
9681
9681
  }
9682
9682
  } : t = {
9683
9683
  [nt.UNSIGNED_BYTE]: {
9684
- [X.RGBA]: r.RGBA,
9685
- [X.RGB]: r.RGB,
9686
- [X.ALPHA]: r.ALPHA,
9687
- [X.LUMINANCE]: r.LUMINANCE,
9688
- [X.LUMINANCE_ALPHA]: r.LUMINANCE_ALPHA
9684
+ [W.RGBA]: r.RGBA,
9685
+ [W.RGB]: r.RGB,
9686
+ [W.ALPHA]: r.ALPHA,
9687
+ [W.LUMINANCE]: r.LUMINANCE,
9688
+ [W.LUMINANCE_ALPHA]: r.LUMINANCE_ALPHA
9689
9689
  },
9690
9690
  [nt.UNSIGNED_SHORT_5_6_5]: {
9691
- [X.RGB]: r.RGB
9691
+ [W.RGB]: r.RGB
9692
9692
  },
9693
9693
  [nt.UNSIGNED_SHORT_4_4_4_4]: {
9694
- [X.RGBA]: r.RGBA
9694
+ [W.RGBA]: r.RGBA
9695
9695
  },
9696
9696
  [nt.UNSIGNED_SHORT_5_5_5_1]: {
9697
- [X.RGBA]: r.RGBA
9697
+ [W.RGBA]: r.RGBA
9698
9698
  }
9699
9699
  }, t;
9700
9700
  }
@@ -9845,15 +9845,15 @@ class _m {
9845
9845
  setStyle(t, e) {
9846
9846
  const i = this.gl;
9847
9847
  if (e.mipmap && t.mipmap !== Mi.ON_MANUAL && i.generateMipmap(t.target), i.texParameteri(t.target, i.TEXTURE_WRAP_S, e.wrapMode), i.texParameteri(t.target, i.TEXTURE_WRAP_T, e.wrapMode), e.mipmap) {
9848
- i.texParameteri(t.target, i.TEXTURE_MIN_FILTER, t.scaleMode === Xi.LINEAR ? i.LINEAR_MIPMAP_LINEAR : i.NEAREST_MIPMAP_NEAREST);
9848
+ i.texParameteri(t.target, i.TEXTURE_MIN_FILTER, t.scaleMode === Wi.LINEAR ? i.LINEAR_MIPMAP_LINEAR : i.NEAREST_MIPMAP_NEAREST);
9849
9849
  const s = this.renderer.context.extensions.anisotropicFiltering;
9850
- if (s && t.anisotropicLevel > 0 && t.scaleMode === Xi.LINEAR) {
9850
+ if (s && t.anisotropicLevel > 0 && t.scaleMode === Wi.LINEAR) {
9851
9851
  const n = Math.min(t.anisotropicLevel, i.getParameter(s.MAX_TEXTURE_MAX_ANISOTROPY_EXT));
9852
9852
  i.texParameterf(t.target, s.TEXTURE_MAX_ANISOTROPY_EXT, n);
9853
9853
  }
9854
9854
  } else
9855
- i.texParameteri(t.target, i.TEXTURE_MIN_FILTER, t.scaleMode === Xi.LINEAR ? i.LINEAR : i.NEAREST);
9856
- i.texParameteri(t.target, i.TEXTURE_MAG_FILTER, t.scaleMode === Xi.LINEAR ? i.LINEAR : i.NEAREST);
9855
+ i.texParameteri(t.target, i.TEXTURE_MIN_FILTER, t.scaleMode === Wi.LINEAR ? i.LINEAR : i.NEAREST);
9856
+ i.texParameteri(t.target, i.TEXTURE_MAG_FILTER, t.scaleMode === Wi.LINEAR ? i.LINEAR : i.NEAREST);
9857
9857
  }
9858
9858
  destroy() {
9859
9859
  this.renderer = null;
@@ -10031,7 +10031,7 @@ Object.defineProperties(Q, {
10031
10031
  return ut.defaultOptions.wrapMode;
10032
10032
  },
10033
10033
  set(r) {
10034
- pt("7.1.0", "settings.WRAP_MODE is deprecated, use BaseTexture.defaultOptions.wrapMode"), ut.defaultOptions.wrapMode = r;
10034
+ ft("7.1.0", "settings.WRAP_MODE is deprecated, use BaseTexture.defaultOptions.wrapMode"), ut.defaultOptions.wrapMode = r;
10035
10035
  }
10036
10036
  },
10037
10037
  /**
@@ -10047,7 +10047,7 @@ Object.defineProperties(Q, {
10047
10047
  return ut.defaultOptions.scaleMode;
10048
10048
  },
10049
10049
  set(r) {
10050
- pt("7.1.0", "settings.SCALE_MODE is deprecated, use BaseTexture.defaultOptions.scaleMode"), ut.defaultOptions.scaleMode = r;
10050
+ ft("7.1.0", "settings.SCALE_MODE is deprecated, use BaseTexture.defaultOptions.scaleMode"), ut.defaultOptions.scaleMode = r;
10051
10051
  }
10052
10052
  },
10053
10053
  /**
@@ -10063,7 +10063,7 @@ Object.defineProperties(Q, {
10063
10063
  return ut.defaultOptions.mipmap;
10064
10064
  },
10065
10065
  set(r) {
10066
- pt("7.1.0", "settings.MIPMAP_TEXTURES is deprecated, use BaseTexture.defaultOptions.mipmap"), ut.defaultOptions.mipmap = r;
10066
+ ft("7.1.0", "settings.MIPMAP_TEXTURES is deprecated, use BaseTexture.defaultOptions.mipmap"), ut.defaultOptions.mipmap = r;
10067
10067
  }
10068
10068
  // MIPMAP_MODES.POW2,
10069
10069
  },
@@ -10080,7 +10080,7 @@ Object.defineProperties(Q, {
10080
10080
  return ut.defaultOptions.anisotropicLevel;
10081
10081
  },
10082
10082
  set(r) {
10083
- pt(
10083
+ ft(
10084
10084
  "7.1.0",
10085
10085
  "settings.ANISOTROPIC_LEVEL is deprecated, use BaseTexture.defaultOptions.anisotropicLevel"
10086
10086
  ), ut.defaultOptions.anisotropicLevel = r;
@@ -10097,7 +10097,7 @@ Object.defineProperties(Q, {
10097
10097
  */
10098
10098
  FILTER_RESOLUTION: {
10099
10099
  get() {
10100
- return pt("7.1.0", "settings.FILTER_RESOLUTION is deprecated, use Filter.defaultResolution"), pe.defaultResolution;
10100
+ return ft("7.1.0", "settings.FILTER_RESOLUTION is deprecated, use Filter.defaultResolution"), pe.defaultResolution;
10101
10101
  },
10102
10102
  set(r) {
10103
10103
  pe.defaultResolution = r;
@@ -10114,7 +10114,7 @@ Object.defineProperties(Q, {
10114
10114
  */
10115
10115
  FILTER_MULTISAMPLE: {
10116
10116
  get() {
10117
- return pt("7.1.0", "settings.FILTER_MULTISAMPLE is deprecated, use Filter.defaultMultisample"), pe.defaultMultisample;
10117
+ return ft("7.1.0", "settings.FILTER_MULTISAMPLE is deprecated, use Filter.defaultMultisample"), pe.defaultMultisample;
10118
10118
  },
10119
10119
  set(r) {
10120
10120
  pe.defaultMultisample = r;
@@ -10134,7 +10134,7 @@ Object.defineProperties(Q, {
10134
10134
  return Hr.defaultMaxTextures;
10135
10135
  },
10136
10136
  set(r) {
10137
- pt("7.1.0", "settings.SPRITE_MAX_TEXTURES is deprecated, use BatchRenderer.defaultMaxTextures"), Hr.defaultMaxTextures = r;
10137
+ ft("7.1.0", "settings.SPRITE_MAX_TEXTURES is deprecated, use BatchRenderer.defaultMaxTextures"), Hr.defaultMaxTextures = r;
10138
10138
  }
10139
10139
  },
10140
10140
  /**
@@ -10153,7 +10153,7 @@ Object.defineProperties(Q, {
10153
10153
  return Hr.defaultBatchSize;
10154
10154
  },
10155
10155
  set(r) {
10156
- pt("7.1.0", "settings.SPRITE_BATCH_SIZE is deprecated, use BatchRenderer.defaultBatchSize"), Hr.defaultBatchSize = r;
10156
+ ft("7.1.0", "settings.SPRITE_BATCH_SIZE is deprecated, use BatchRenderer.defaultBatchSize"), Hr.defaultBatchSize = r;
10157
10157
  }
10158
10158
  },
10159
10159
  /**
@@ -10170,7 +10170,7 @@ Object.defineProperties(Q, {
10170
10170
  return Hr.canUploadSameBuffer;
10171
10171
  },
10172
10172
  set(r) {
10173
- pt("7.1.0", "settings.CAN_UPLOAD_SAME_BUFFER is deprecated, use BatchRenderer.canUploadSameBuffer"), Hr.canUploadSameBuffer = r;
10173
+ ft("7.1.0", "settings.CAN_UPLOAD_SAME_BUFFER is deprecated, use BatchRenderer.canUploadSameBuffer"), Hr.canUploadSameBuffer = r;
10174
10174
  }
10175
10175
  },
10176
10176
  /**
@@ -10187,7 +10187,7 @@ Object.defineProperties(Q, {
10187
10187
  return Kr.defaultMode;
10188
10188
  },
10189
10189
  set(r) {
10190
- pt("7.1.0", "settings.GC_MODE is deprecated, use TextureGCSystem.defaultMode"), Kr.defaultMode = r;
10190
+ ft("7.1.0", "settings.GC_MODE is deprecated, use TextureGCSystem.defaultMode"), Kr.defaultMode = r;
10191
10191
  }
10192
10192
  },
10193
10193
  /**
@@ -10204,7 +10204,7 @@ Object.defineProperties(Q, {
10204
10204
  return Kr.defaultMaxIdle;
10205
10205
  },
10206
10206
  set(r) {
10207
- pt("7.1.0", "settings.GC_MAX_IDLE is deprecated, use TextureGCSystem.defaultMaxIdle"), Kr.defaultMaxIdle = r;
10207
+ ft("7.1.0", "settings.GC_MAX_IDLE is deprecated, use TextureGCSystem.defaultMaxIdle"), Kr.defaultMaxIdle = r;
10208
10208
  }
10209
10209
  },
10210
10210
  /**
@@ -10221,7 +10221,7 @@ Object.defineProperties(Q, {
10221
10221
  return Kr.defaultCheckCountMax;
10222
10222
  },
10223
10223
  set(r) {
10224
- pt("7.1.0", "settings.GC_MAX_CHECK_COUNT is deprecated, use TextureGCSystem.defaultCheckCountMax"), Kr.defaultCheckCountMax = r;
10224
+ ft("7.1.0", "settings.GC_MAX_CHECK_COUNT is deprecated, use TextureGCSystem.defaultCheckCountMax"), Kr.defaultCheckCountMax = r;
10225
10225
  }
10226
10226
  },
10227
10227
  /**
@@ -10238,7 +10238,7 @@ Object.defineProperties(Q, {
10238
10238
  return Hi.defaultVertexPrecision;
10239
10239
  },
10240
10240
  set(r) {
10241
- pt("7.1.0", "settings.PRECISION_VERTEX is deprecated, use Program.defaultVertexPrecision"), Hi.defaultVertexPrecision = r;
10241
+ ft("7.1.0", "settings.PRECISION_VERTEX is deprecated, use Program.defaultVertexPrecision"), Hi.defaultVertexPrecision = r;
10242
10242
  }
10243
10243
  },
10244
10244
  /**
@@ -10255,7 +10255,7 @@ Object.defineProperties(Q, {
10255
10255
  return Hi.defaultFragmentPrecision;
10256
10256
  },
10257
10257
  set(r) {
10258
- pt("7.1.0", "settings.PRECISION_FRAGMENT is deprecated, use Program.defaultFragmentPrecision"), Hi.defaultFragmentPrecision = r;
10258
+ ft("7.1.0", "settings.PRECISION_FRAGMENT is deprecated, use Program.defaultFragmentPrecision"), Hi.defaultFragmentPrecision = r;
10259
10259
  }
10260
10260
  }
10261
10261
  });
@@ -10601,7 +10601,7 @@ Object.defineProperties(Q, {
10601
10601
  return me.targetFPMS;
10602
10602
  },
10603
10603
  set(r) {
10604
- pt("7.1.0", "settings.TARGET_FPMS is deprecated, use Ticker.targetFPMS"), me.targetFPMS = r;
10604
+ ft("7.1.0", "settings.TARGET_FPMS is deprecated, use Ticker.targetFPMS"), me.targetFPMS = r;
10605
10605
  }
10606
10606
  }
10607
10607
  });
@@ -10717,7 +10717,7 @@ Em.extension = {
10717
10717
  name: "_multisample"
10718
10718
  };
10719
10719
  it.add(Em);
10720
- class Ww {
10720
+ class Xw {
10721
10721
  constructor(t) {
10722
10722
  this.buffer = t || null, this.updateID = -1, this.byteLength = -1, this.refCount = 0;
10723
10723
  }
@@ -10820,7 +10820,7 @@ class Im {
10820
10820
  */
10821
10821
  createGLBuffer(t) {
10822
10822
  const { CONTEXT_UID: e, gl: i } = this;
10823
- return t._glBuffers[e] = new Ww(i.createBuffer()), this.managedBuffers[t.id] = t, t.disposeRunner.add(this), t._glBuffers[e];
10823
+ return t._glBuffers[e] = new Xw(i.createBuffer()), this.managedBuffers[t.id] = t, t.disposeRunner.add(this), t._glBuffers[e];
10824
10824
  }
10825
10825
  }
10826
10826
  Im.extension = {
@@ -10906,7 +10906,7 @@ const ua = class yc extends kw {
10906
10906
  "_multisample"
10907
10907
  ]
10908
10908
  };
10909
- this.setup(e), "useContextAlpha" in t && (pt("7.0.0", "options.useContextAlpha is deprecated, use options.premultipliedAlpha and options.backgroundAlpha instead"), t.premultipliedAlpha = t.useContextAlpha && t.useContextAlpha !== "notMultiplied", t.backgroundAlpha = t.useContextAlpha === !1 ? 1 : t.backgroundAlpha), this._plugin.rendererPlugins = yc.__plugins, this.options = t, this.startup.run(this.options);
10909
+ this.setup(e), "useContextAlpha" in t && (ft("7.0.0", "options.useContextAlpha is deprecated, use options.premultipliedAlpha and options.backgroundAlpha instead"), t.premultipliedAlpha = t.useContextAlpha && t.useContextAlpha !== "notMultiplied", t.backgroundAlpha = t.useContextAlpha === !1 ? 1 : t.backgroundAlpha), this._plugin.rendererPlugins = yc.__plugins, this.options = t, this.startup.run(this.options);
10910
10910
  }
10911
10911
  /**
10912
10912
  * Create renderer if WebGL is available. Overrideable
@@ -11024,7 +11024,7 @@ const ua = class yc extends kw {
11024
11024
  * @deprecated since 7.0.0
11025
11025
  */
11026
11026
  get clearBeforeRender() {
11027
- return pt("7.0.0", "renderer.clearBeforeRender has been deprecated, please use renderer.background.clearBeforeRender instead."), this.background.clearBeforeRender;
11027
+ return ft("7.0.0", "renderer.clearBeforeRender has been deprecated, please use renderer.background.clearBeforeRender instead."), this.background.clearBeforeRender;
11028
11028
  }
11029
11029
  /**
11030
11030
  * Pass-thru setting for the canvas' context `alpha` property. This is typically
@@ -11033,7 +11033,7 @@ const ua = class yc extends kw {
11033
11033
  * @member {boolean}
11034
11034
  */
11035
11035
  get useContextAlpha() {
11036
- return pt("7.0.0", "renderer.useContextAlpha has been deprecated, please use renderer.context.premultipliedAlpha instead."), this.context.useContextAlpha;
11036
+ return ft("7.0.0", "renderer.useContextAlpha has been deprecated, please use renderer.context.premultipliedAlpha instead."), this.context.useContextAlpha;
11037
11037
  }
11038
11038
  /**
11039
11039
  * readonly drawing buffer preservation
@@ -11041,7 +11041,7 @@ const ua = class yc extends kw {
11041
11041
  * @deprecated since 7.0.0
11042
11042
  */
11043
11043
  get preserveDrawingBuffer() {
11044
- return pt("7.0.0", "renderer.preserveDrawingBuffer has been deprecated, we cannot truly know this unless pixi created the context"), this.context.preserveDrawingBuffer;
11044
+ return ft("7.0.0", "renderer.preserveDrawingBuffer has been deprecated, we cannot truly know this unless pixi created the context"), this.context.preserveDrawingBuffer;
11045
11045
  }
11046
11046
  /**
11047
11047
  * The background color to fill if not transparent
@@ -11049,10 +11049,10 @@ const ua = class yc extends kw {
11049
11049
  * @deprecated since 7.0.0
11050
11050
  */
11051
11051
  get backgroundColor() {
11052
- return pt("7.0.0", "renderer.backgroundColor has been deprecated, use renderer.background.color instead."), this.background.color;
11052
+ return ft("7.0.0", "renderer.backgroundColor has been deprecated, use renderer.background.color instead."), this.background.color;
11053
11053
  }
11054
11054
  set backgroundColor(t) {
11055
- pt("7.0.0", "renderer.backgroundColor has been deprecated, use renderer.background.color instead."), this.background.color = t;
11055
+ ft("7.0.0", "renderer.backgroundColor has been deprecated, use renderer.background.color instead."), this.background.color = t;
11056
11056
  }
11057
11057
  /**
11058
11058
  * The background color alpha. Setting this to 0 will make the canvas transparent.
@@ -11060,19 +11060,19 @@ const ua = class yc extends kw {
11060
11060
  * @deprecated since 7.0.0
11061
11061
  */
11062
11062
  get backgroundAlpha() {
11063
- return pt("7.0.0", "renderer.backgroundAlpha has been deprecated, use renderer.background.alpha instead."), this.background.alpha;
11063
+ return ft("7.0.0", "renderer.backgroundAlpha has been deprecated, use renderer.background.alpha instead."), this.background.alpha;
11064
11064
  }
11065
11065
  /**
11066
11066
  * @deprecated since 7.0.0
11067
11067
  */
11068
11068
  set backgroundAlpha(t) {
11069
- pt("7.0.0", "renderer.backgroundAlpha has been deprecated, use renderer.background.alpha instead."), this.background.alpha = t;
11069
+ ft("7.0.0", "renderer.backgroundAlpha has been deprecated, use renderer.background.alpha instead."), this.background.alpha = t;
11070
11070
  }
11071
11071
  /**
11072
11072
  * @deprecated since 7.0.0
11073
11073
  */
11074
11074
  get powerPreference() {
11075
- return pt("7.0.0", "renderer.powerPreference has been deprecated, we can only know this if pixi creates the context"), this.context.powerPreference;
11075
+ return ft("7.0.0", "renderer.powerPreference has been deprecated, we can only know this if pixi creates the context"), this.context.powerPreference;
11076
11076
  }
11077
11077
  /**
11078
11078
  * Useful function that returns a texture of the display object that can then be used to create sprites
@@ -11186,7 +11186,7 @@ class Mm extends to {
11186
11186
  ), this._load;
11187
11187
  }
11188
11188
  }
11189
- class Xw extends Mm {
11189
+ class Ww extends Mm {
11190
11190
  /**
11191
11191
  * @param source - Number of items in array or the collection
11192
11192
  * of image URLs to use. Can also be resources, image elements, canvas, etc.
@@ -11662,7 +11662,7 @@ oc.push(
11662
11662
  xc,
11663
11663
  dh,
11664
11664
  Vw,
11665
- Xw
11665
+ Ww
11666
11666
  );
11667
11667
  class Da {
11668
11668
  constructor() {
@@ -12519,8 +12519,8 @@ const Lm = class wc extends Nt {
12519
12519
  }
12520
12520
  };
12521
12521
  Lm.defaultSortableChildren = !1;
12522
- let yt = Lm;
12523
- yt.prototype.containerUpdateTransform = yt.prototype.updateTransform;
12522
+ let gt = Lm;
12523
+ gt.prototype.containerUpdateTransform = gt.prototype.updateTransform;
12524
12524
  Object.defineProperties(Q, {
12525
12525
  /**
12526
12526
  * Sets the default value for the container property 'sortableChildren'.
@@ -12533,15 +12533,15 @@ Object.defineProperties(Q, {
12533
12533
  */
12534
12534
  SORTABLE_CHILDREN: {
12535
12535
  get() {
12536
- return yt.defaultSortableChildren;
12536
+ return gt.defaultSortableChildren;
12537
12537
  },
12538
12538
  set(r) {
12539
- pt("7.1.0", "settings.SORTABLE_CHILDREN is deprecated, use Container.defaultSortableChildren"), yt.defaultSortableChildren = r;
12539
+ ft("7.1.0", "settings.SORTABLE_CHILDREN is deprecated, use Container.defaultSortableChildren"), gt.defaultSortableChildren = r;
12540
12540
  }
12541
12541
  }
12542
12542
  });
12543
12543
  const Tn = new at(), zw = new Uint16Array([0, 1, 2, 0, 2, 3]);
12544
- class Xt extends yt {
12544
+ class Wt extends gt {
12545
12545
  /** @param texture - The texture for this sprite. */
12546
12546
  constructor(t) {
12547
12547
  super(), this._anchor = new Vi(
@@ -12650,7 +12650,7 @@ class Xt extends yt {
12650
12650
  */
12651
12651
  static from(t, e) {
12652
12652
  const i = t instanceof et ? t : et.from(t, e);
12653
- return new Xt(i);
12653
+ return new Wt(i);
12654
12654
  }
12655
12655
  /**
12656
12656
  * If true PixiJS will Math.floor() x/y values when rendering, stopping pixel interpolation.
@@ -12826,7 +12826,7 @@ Nt.prototype._initCachedDisplayObject = function(r) {
12826
12826
  this._cacheData.textureCacheId = l, ut.addToCache(h.baseTexture, l), et.addToCache(h, l);
12827
12827
  const c = this.transform.localTransform.copyTo(Gm).invert().translate(-e.x, -e.y);
12828
12828
  this.render = this._cacheData.originalRender, r.render(this, { renderTexture: h, clear: !0, transform: c, skipUpdateTransform: !1 }), r.framebuffer.blit(), r.projection.transform = a, r.renderTexture.bind(s, n, o), this.render = this._renderCached, this.updateTransform = this.displayObjectUpdateTransform, this.calculateBounds = this._calculateCachedBounds, this.getLocalBounds = this._getCachedLocalBounds, this._mask = null, this.filterArea = null, this.alpha = t;
12829
- const u = new Xt(h);
12829
+ const u = new Wt(h);
12830
12830
  u.transform.worldTransform = this.transform.worldTransform, u.anchor.x = -(e.x / e.width), u.anchor.y = -(e.y / e.height), u.alpha = t, u._bounds = this._bounds, this._cacheData.sprite = u, this.transform._parentID = -1, this.parent ? this.updateTransform() : (this.enableTempParent(), this.updateTransform(), this.disableTempParent(null)), this.containsPoint = u.containsPoint.bind(u);
12831
12831
  };
12832
12832
  Nt.prototype._renderCachedCanvas = function(r) {
@@ -12848,7 +12848,7 @@ Nt.prototype._initCachedDisplayObjectCanvas = function(r) {
12848
12848
  this._cacheData.textureCacheId = a, ut.addToCache(o.baseTexture, a), et.addToCache(o, a);
12849
12849
  const h = Gm;
12850
12850
  this.transform.localTransform.copyTo(h), h.invert(), h.tx -= t.x, h.ty -= t.y, this.renderCanvas = this._cacheData.originalRenderCanvas, r.render(this, { renderTexture: o, clear: !0, transform: h, skipUpdateTransform: !1 }), r.canvasContext.activeContext = i, r._projTransform = s, this.renderCanvas = this._renderCachedCanvas, this.updateTransform = this.displayObjectUpdateTransform, this.calculateBounds = this._calculateCachedBounds, this.getLocalBounds = this._getCachedLocalBounds, this._mask = null, this.filterArea = null, this.alpha = e;
12851
- const l = new Xt(o);
12851
+ const l = new Wt(o);
12852
12852
  l.transform.worldTransform = this.transform.worldTransform, l.anchor.x = -(t.x / t.width), l.anchor.y = -(t.y / t.height), l.alpha = e, l._bounds = this._bounds, this._cacheData.sprite = l, this.transform._parentID = -1, this.parent ? this.updateTransform() : (this.parent = r._tempDisplayObjectParent, this.updateTransform(), this.parent = null), this.containsPoint = l.containsPoint.bind(l);
12853
12853
  };
12854
12854
  Nt.prototype._calculateCachedBounds = function() {
@@ -12864,7 +12864,7 @@ Nt.prototype._cacheAsBitmapDestroy = function(r) {
12864
12864
  this.cacheAsBitmap = !1, this.destroy(r);
12865
12865
  };
12866
12866
  Nt.prototype.name = null;
12867
- yt.prototype.getChildByName = function(r, t) {
12867
+ gt.prototype.getChildByName = function(r, t) {
12868
12868
  for (let e = 0, i = this.children.length; e < i; e++)
12869
12869
  if (this.children[e].name === r)
12870
12870
  return this.children[e];
@@ -14269,7 +14269,7 @@ const Ff = {
14269
14269
  Object.entries(Ff).forEach(([r, t]) => {
14270
14270
  Object.defineProperty(Ff, r, {
14271
14271
  get() {
14272
- return pt("7.1.0", `filters.${r} has moved to ${r}`), t;
14272
+ return ft("7.1.0", `filters.${r} has moved to ${r}`), t;
14273
14273
  }
14274
14274
  });
14275
14275
  });
@@ -15762,7 +15762,7 @@ const x2 = {
15762
15762
  return this._internalInteractive ?? Nf(Ic.defaultEventMode);
15763
15763
  },
15764
15764
  set interactive(r) {
15765
- pt(
15765
+ ft(
15766
15766
  "7.2.0",
15767
15767
  // eslint-disable-next-line max-len
15768
15768
  "Setting interactive is deprecated, use eventMode = 'none'/'passive'/'auto'/'static'/'dynamic' instead."
@@ -16177,7 +16177,7 @@ const Fm = class Ac {
16177
16177
  * @param options - The optional application and renderer parameters.
16178
16178
  */
16179
16179
  constructor(t) {
16180
- this.stage = new yt(), t = Object.assign({
16180
+ this.stage = new gt(), t = Object.assign({
16181
16181
  forceCanvas: !1
16182
16182
  }, t), this.renderer = Dw(t), Ac._plugins.forEach((e) => {
16183
16183
  e.init.call(this, t);
@@ -16598,7 +16598,7 @@ const D2 = [
16598
16598
  "font/woff",
16599
16599
  "font/woff2"
16600
16600
  ], U2 = /^(--|-?[A-Z_])[0-9A-Z_-]*$/i;
16601
- function W2(r) {
16601
+ function X2(r) {
16602
16602
  const t = Jt.extname(r), e = Jt.basename(r, t).replace(/(-|_)/g, " ").toLowerCase().split(" ").map((n) => n.charAt(0).toUpperCase() + n.slice(1));
16603
16603
  let i = e.length > 0;
16604
16604
  for (const n of e)
@@ -16609,9 +16609,9 @@ function W2(r) {
16609
16609
  let s = e.join(" ");
16610
16610
  return i || (s = `"${s.replace(/[\\"]/g, "\\$&")}"`), s;
16611
16611
  }
16612
- const X2 = /^[0-9A-Za-z%:/?#\[\]@!\$&'()\*\+,;=\-._~]*$/;
16612
+ const W2 = /^[0-9A-Za-z%:/?#\[\]@!\$&'()\*\+,;=\-._~]*$/;
16613
16613
  function Z2(r) {
16614
- return X2.test(r) ? r : encodeURI(r);
16614
+ return W2.test(r) ? r : encodeURI(r);
16615
16615
  }
16616
16616
  const V2 = {
16617
16617
  extension: {
@@ -16626,7 +16626,7 @@ const V2 = {
16626
16626
  var i, s, n;
16627
16627
  const e = Q.ADAPTER.getFontFaceSet();
16628
16628
  if (e) {
16629
- const o = [], a = ((i = t.data) == null ? void 0 : i.family) ?? W2(r), h = ((n = (s = t.data) == null ? void 0 : s.weights) == null ? void 0 : n.filter((c) => D2.includes(c))) ?? ["normal"], l = t.data ?? {};
16629
+ const o = [], a = ((i = t.data) == null ? void 0 : i.family) ?? X2(r), h = ((n = (s = t.data) == null ? void 0 : s.weights) == null ? void 0 : n.filter((c) => D2.includes(c))) ?? ["normal"], l = t.data ?? {};
16630
16630
  for (let c = 0; c < h.length; c++) {
16631
16631
  const u = h[c], d = new FontFace(a, `url(${Z2(r)})`, {
16632
16632
  ...l,
@@ -16762,7 +16762,7 @@ class z2 {
16762
16762
  });
16763
16763
  }
16764
16764
  }
16765
- const Wf = new z2();
16765
+ const Xf = new z2();
16766
16766
  function yo(r, t, e) {
16767
16767
  r.resource.internal = !0;
16768
16768
  const i = new et(r), s = () => {
@@ -16805,7 +16805,7 @@ const yh = {
16805
16805
  var a;
16806
16806
  const i = globalThis.createImageBitmap && this.config.preferCreateImageBitmap;
16807
16807
  let s;
16808
- i ? this.config.preferWorkers && await Wf.isImageBitmapSupported() ? s = await Wf.loadImageBitmap(r) : s = await $2(r) : s = await new Promise((h, l) => {
16808
+ i ? this.config.preferWorkers && await Xf.isImageBitmapSupported() ? s = await Xf.loadImageBitmap(r) : s = await $2(r) : s = await new Promise((h, l) => {
16809
16809
  const c = new Image();
16810
16810
  c.crossOrigin = this.config.crossOrigin, c.src = r, c.complete ? h(c) : (c.onload = () => h(c), c.onerror = (u) => l(u));
16811
16811
  });
@@ -17094,7 +17094,7 @@ class sT {
17094
17094
  }
17095
17095
  add(t, e, i, s, n) {
17096
17096
  const o = [];
17097
- typeof t == "string" || Array.isArray(t) && typeof t[0] == "string" ? (pt("7.2.0", `Assets.add now uses an object instead of individual parameters.
17097
+ typeof t == "string" || Array.isArray(t) && typeof t[0] == "string" ? (ft("7.2.0", `Assets.add now uses an object instead of individual parameters.
17098
17098
  Please use Assets.add({ alias, src, data, format, loadParser }) instead.`), o.push({ alias: t, src: e, data: i, format: s, loadParser: n })) : Array.isArray(t) ? o.push(...t) : o.push(t);
17099
17099
  let a;
17100
17100
  a = (h) => {
@@ -17580,7 +17580,7 @@ class nT {
17580
17580
  return yh.config.preferWorkers;
17581
17581
  }
17582
17582
  set preferWorkers(t) {
17583
- pt("7.2.0", "Assets.prefersWorkers is deprecated, use Assets.setPreferences({ preferWorkers: true }) instead."), this.setPreferences({ preferWorkers: t });
17583
+ ft("7.2.0", "Assets.prefersWorkers is deprecated, use Assets.setPreferences({ preferWorkers: true }) instead."), this.setPreferences({ preferWorkers: t });
17584
17584
  }
17585
17585
  /**
17586
17586
  * General setter for preferences. This is a helper function to set preferences on all parsers.
@@ -17655,14 +17655,14 @@ const hT = {
17655
17655
  remove: async (r) => r.filter((t) => t !== "webp")
17656
17656
  };
17657
17657
  it.add(hT);
17658
- const Xf = ["png", "jpg", "jpeg"], lT = {
17658
+ const Wf = ["png", "jpg", "jpeg"], lT = {
17659
17659
  extension: {
17660
17660
  type: z.DetectionParser,
17661
17661
  priority: -1
17662
17662
  },
17663
17663
  test: () => Promise.resolve(!0),
17664
- add: async (r) => [...r, ...Xf],
17665
- remove: async (r) => r.filter((t) => !Xf.includes(t))
17664
+ add: async (r) => [...r, ...Wf],
17665
+ remove: async (r) => r.filter((t) => !Wf.includes(t))
17666
17666
  };
17667
17667
  it.add(lT);
17668
17668
  const cT = "WorkerGlobalScope" in globalThis && globalThis instanceof globalThis.WorkerGlobalScope;
@@ -18021,13 +18021,13 @@ const Hf = [171, 75, 84, 88, 32, 49, 49, 187, 13, 10, 26, 10], kT = 67305985, $e
18021
18021
  [nt.FLOAT]: 4,
18022
18022
  [nt.HALF_FLOAT]: 8
18023
18023
  }, FT = {
18024
- [X.RGBA]: 4,
18025
- [X.RGB]: 3,
18026
- [X.RG]: 2,
18027
- [X.RED]: 1,
18028
- [X.LUMINANCE]: 1,
18029
- [X.LUMINANCE_ALPHA]: 2,
18030
- [X.ALPHA]: 1
18024
+ [W.RGBA]: 4,
18025
+ [W.RGB]: 3,
18026
+ [W.RG]: 2,
18027
+ [W.RED]: 1,
18028
+ [W.LUMINANCE]: 1,
18029
+ [W.LUMINANCE_ALPHA]: 2,
18030
+ [W.ALPHA]: 1
18031
18031
  }, NT = {
18032
18032
  [nt.UNSIGNED_SHORT_4_4_4_4]: 2,
18033
18033
  [nt.UNSIGNED_SHORT_5_5_5_1]: 2,
@@ -18114,14 +18114,14 @@ function OT(r, t) {
18114
18114
  }
18115
18115
  function BT(r) {
18116
18116
  switch (r) {
18117
- case X.RGBA:
18118
- return X.RGBA_INTEGER;
18119
- case X.RGB:
18120
- return X.RGB_INTEGER;
18121
- case X.RG:
18122
- return X.RG_INTEGER;
18123
- case X.RED:
18124
- return X.RED_INTEGER;
18117
+ case W.RGBA:
18118
+ return W.RGBA_INTEGER;
18119
+ case W.RGB:
18120
+ return W.RGB_INTEGER;
18121
+ case W.RG:
18122
+ return W.RG_INTEGER;
18123
+ case W.RED:
18124
+ return W.RED_INTEGER;
18125
18125
  default:
18126
18126
  return r;
18127
18127
  }
@@ -18153,7 +18153,7 @@ function UT(r, t, e) {
18153
18153
  }
18154
18154
  return i;
18155
18155
  }
18156
- const WT = {
18156
+ const XT = {
18157
18157
  extension: {
18158
18158
  type: z.LoadParser,
18159
18159
  priority: ai.High
@@ -18178,8 +18178,8 @@ const WT = {
18178
18178
  Array.isArray(r) ? r.forEach((t) => t.destroy(!0)) : r.destroy(!0);
18179
18179
  }
18180
18180
  };
18181
- it.add(WT);
18182
- const XT = {
18181
+ it.add(XT);
18182
+ const WT = {
18183
18183
  extension: {
18184
18184
  type: z.LoadParser,
18185
18185
  priority: ai.High
@@ -18208,7 +18208,7 @@ const XT = {
18208
18208
  Array.isArray(r) ? r.forEach((t) => t.destroy(!0)) : r.destroy(!0);
18209
18209
  }
18210
18210
  };
18211
- it.add(XT);
18211
+ it.add(WT);
18212
18212
  const ZT = {
18213
18213
  extension: z.ResolveParser,
18214
18214
  test: (r) => {
@@ -18339,7 +18339,7 @@ const $o = new lt(), VT = 4, Um = class Fn {
18339
18339
  }), h = !0, e && ($o.width = e.width, $o.height = e.height, e = $o)));
18340
18340
  const l = i.gl;
18341
18341
  if (a) {
18342
- if (s = a.baseTexture.resolution, e = e ?? a.frame, n = !1, o = a.baseTexture.alphaMode > 0 && a.baseTexture.format === X.RGBA, !h) {
18342
+ if (s = a.baseTexture.resolution, e = e ?? a.frame, n = !1, o = a.baseTexture.alphaMode > 0 && a.baseTexture.format === W.RGBA, !h) {
18343
18343
  i.renderTexture.bind(a);
18344
18344
  const f = a.framebuffer.glFramebuffers[i.CONTEXT_UID];
18345
18345
  f.blitFramebuffer && i.framebuffer.bind(f.blitFramebuffer);
@@ -18386,7 +18386,7 @@ Um.extension = {
18386
18386
  };
18387
18387
  let HT = Um;
18388
18388
  it.add(HT);
18389
- const Wa = {
18389
+ const Xa = {
18390
18390
  build(r) {
18391
18391
  const t = r.points;
18392
18392
  let e, i, s, n, o, a;
@@ -18469,7 +18469,7 @@ function Yf(r, t = !1) {
18469
18469
  }
18470
18470
  }
18471
18471
  }
18472
- const Wm = {
18472
+ const Xm = {
18473
18473
  build(r) {
18474
18474
  r.points = r.shape.points.slice();
18475
18475
  },
@@ -18532,10 +18532,10 @@ const Wm = {
18532
18532
  }
18533
18533
  }, YT = {
18534
18534
  build(r) {
18535
- Wa.build(r);
18535
+ Xa.build(r);
18536
18536
  },
18537
18537
  triangulate(r, t) {
18538
- Wa.triangulate(r, t);
18538
+ Xa.triangulate(r, t);
18539
18539
  }
18540
18540
  };
18541
18541
  var Be = /* @__PURE__ */ ((r) => (r.MITER = "miter", r.BEVEL = "bevel", r.ROUND = "round", r))(Be || {}), mr = /* @__PURE__ */ ((r) => (r.BUTT = "butt", r.ROUND = "round", r.SQUARE = "square", r))(mr || {});
@@ -18779,7 +18779,7 @@ function jT(r, t) {
18779
18779
  );
18780
18780
  for (let U = 1; U < u - 1; ++U) {
18781
18781
  y = i[(U - 1) * 2], x = i[(U - 1) * 2 + 1], b = i[U * 2], _ = i[U * 2 + 1], v = i[(U + 1) * 2], T = i[(U + 1) * 2 + 1], C = -(x - _), E = y - b, L = Math.sqrt(C * C + E * E), C /= L, E /= L, C *= p, E *= p, I = -(_ - T), k = b - v, L = Math.sqrt(I * I + k * k), I /= L, k /= L, I *= p, k *= p;
18782
- const Z = b - y, rt = x - _, W = b - v, M = T - _, D = Z * W + rt * M, V = rt * W - M * Z, J = V < 0;
18782
+ const Z = b - y, rt = x - _, X = b - v, M = T - _, D = Z * X + rt * M, V = rt * X - M * Z, J = V < 0;
18783
18783
  if (Math.abs(V) < 1e-3 * Math.abs(D)) {
18784
18784
  c.push(
18785
18785
  b - C * S,
@@ -18803,7 +18803,7 @@ function jT(r, t) {
18803
18803
  ));
18804
18804
  continue;
18805
18805
  }
18806
- const j = (-C + y) * (-E + _) - (-C + b) * (-E + x), ft = (-I + v) * (-k + _) - (-I + b) * (-k + T), wt = (Z * ft - W * j) / V, mt = (M * j - rt * ft) / V, N = (wt - b) * (wt - b) + (mt - _) * (mt - _), K = b + (wt - b) * S, H = _ + (mt - _) * S, G = b - (wt - b) * R, ct = _ - (mt - _) * R, ot = Math.min(Z * Z + rt * rt, W * W + M * M), _t = J ? S : R, At = ot + _t * _t * m, Ee = N <= At;
18806
+ const j = (-C + y) * (-E + _) - (-C + b) * (-E + x), yt = (-I + v) * (-k + _) - (-I + b) * (-k + T), wt = (Z * yt - X * j) / V, pt = (M * j - rt * yt) / V, N = (wt - b) * (wt - b) + (pt - _) * (pt - _), K = b + (wt - b) * S, H = _ + (pt - _) * S, G = b - (wt - b) * R, ct = _ - (pt - _) * R, ot = Math.min(Z * Z + rt * rt, X * X + M * M), _t = J ? S : R, At = ot + _t * _t * m, Ee = N <= At;
18807
18807
  let hi = n.join;
18808
18808
  if (hi === Be.MITER && N / m > g && (hi = Be.BEVEL), Ee)
18809
18809
  switch (hi) {
@@ -19019,13 +19019,13 @@ class Cu {
19019
19019
  }
19020
19020
  }
19021
19021
  const yl = {
19022
- [oe.POLY]: Wm,
19023
- [oe.CIRC]: Wa,
19024
- [oe.ELIP]: Wa,
19022
+ [oe.POLY]: Xm,
19023
+ [oe.CIRC]: Xa,
19024
+ [oe.ELIP]: Xa,
19025
19025
  [oe.RECT]: KT,
19026
19026
  [oe.RREC]: YT
19027
19027
  }, $f = [], Qo = [];
19028
- class Xa {
19028
+ class Wa {
19029
19029
  /**
19030
19030
  * @param {PIXI.Circle|PIXI.Ellipse|PIXI.Polygon|PIXI.Rectangle|PIXI.RoundedRectangle} shape - The shape object to draw.
19031
19031
  * @param fillStyle - the width of the line to draw
@@ -19040,7 +19040,7 @@ class Xa {
19040
19040
  * @returns - Cloned GraphicsData object
19041
19041
  */
19042
19042
  clone() {
19043
- return new Xa(
19043
+ return new Wa(
19044
19044
  this.shape,
19045
19045
  this.fillStyle,
19046
19046
  this.lineStyle,
@@ -19052,7 +19052,7 @@ class Xa {
19052
19052
  this.shape = null, this.holes.length = 0, this.holes = null, this.points.length = 0, this.points = null, this.lineStyle = null, this.fillStyle = null;
19053
19053
  }
19054
19054
  }
19055
- const Ss = new at(), Xm = class Zm extends z0 {
19055
+ const Ss = new at(), Wm = class Zm extends z0 {
19056
19056
  // eslint-disable-next-line @typescript-eslint/no-useless-constructor
19057
19057
  constructor() {
19058
19058
  super(), this.closePointEps = 1e-4, this.boundsPadding = 0, this.uvsFloat32 = null, this.indicesUint16 = null, this.batchable = !1, this.points = [], this.colors = [], this.uvs = [], this.indices = [], this.textureIds = [], this.graphicsData = [], this.drawCalls = [], this.batchDirty = -1, this.batches = [], this.dirty = 0, this.cacheDirty = -1, this.clearDirty = 0, this.shapeIndex = 0, this._bounds = new Da(), this.boundsDirty = -1;
@@ -19097,7 +19097,7 @@ const Ss = new at(), Xm = class Zm extends z0 {
19097
19097
  * @returns - Returns geometry for chaining.
19098
19098
  */
19099
19099
  drawShape(t, e = null, i = null, s = null) {
19100
- const n = new Xa(t, e, i, s);
19100
+ const n = new Wa(t, e, i, s);
19101
19101
  return this.graphicsData.push(n), this.dirty++, this;
19102
19102
  }
19103
19103
  /**
@@ -19109,7 +19109,7 @@ const Ss = new at(), Xm = class Zm extends z0 {
19109
19109
  drawHole(t, e = null) {
19110
19110
  if (!this.graphicsData.length)
19111
19111
  return null;
19112
- const i = new Xa(t, null, null, e), s = this.graphicsData[this.graphicsData.length - 1];
19112
+ const i = new Wa(t, null, null, e), s = this.graphicsData[this.graphicsData.length - 1];
19113
19113
  return i.lineStyle = s.lineStyle, s.holes.push(i), this.dirty++, this;
19114
19114
  }
19115
19115
  /** Destroys the GraphicsGeometry object. */
@@ -19254,7 +19254,7 @@ const Ss = new at(), Xm = class Zm extends z0 {
19254
19254
  * @param data
19255
19255
  */
19256
19256
  processFill(t) {
19257
- t.holes.length ? Wm.triangulate(t, this) : yl[t.type].triangulate(t, this);
19257
+ t.holes.length ? Xm.triangulate(t, this) : yl[t.type].triangulate(t, this);
19258
19258
  }
19259
19259
  /**
19260
19260
  * Process line part of Graphics.
@@ -19358,8 +19358,8 @@ const Ss = new at(), Xm = class Zm extends z0 {
19358
19358
  t[m] = (t[m] + u) * l, t[m + 1] = (t[m + 1] + d) * c;
19359
19359
  }
19360
19360
  };
19361
- Xm.BATCHABLE_SIZE = 100;
19362
- let $T = Xm;
19361
+ Wm.BATCHABLE_SIZE = 100;
19362
+ let $T = Wm;
19363
19363
  class bh {
19364
19364
  constructor() {
19365
19365
  this.color = 16777215, this.alpha = 1, this.texture = et.WHITE, this.matrix = null, this.visible = !1, this.reset();
@@ -19392,7 +19392,7 @@ class Eu extends bh {
19392
19392
  super.reset(), this.color = 0, this.alignment = 0.5, this.width = 0, this.native = !1, this.cap = mr.BUTT, this.join = Be.MITER, this.miterLimit = 10;
19393
19393
  }
19394
19394
  }
19395
- const bl = {}, Pc = class fa extends yt {
19395
+ const bl = {}, Pc = class fa extends gt {
19396
19396
  /**
19397
19397
  * @param geometry - Geometry to use, if omitted will create a new GraphicsGeometry instance.
19398
19398
  */
@@ -19960,7 +19960,7 @@ class QT {
19960
19960
  (!this.data || this.data.length !== e.length) && (this.data = new Float32Array(e.length)), this.uvMatrix.multiplyUvs(e, this.data), this._updateID++;
19961
19961
  }
19962
19962
  }
19963
- const xl = new at(), Qf = new es(), Vm = class Hm extends yt {
19963
+ const xl = new at(), Qf = new es(), Vm = class Hm extends gt {
19964
19964
  /**
19965
19965
  * @param geometry - The geometry the mesh will use.
19966
19966
  * @param {PIXI.MeshMaterial} shader - The shader the mesh will use.
@@ -20142,7 +20142,7 @@ class Km extends wr {
20142
20142
  */
20143
20143
  constructor(t, e, i) {
20144
20144
  super();
20145
- const s = new Wt(t), n = new Wt(e, !0), o = new Wt(i, !0, !0);
20145
+ const s = new Xt(t), n = new Xt(e, !0), o = new Xt(i, !0, !0);
20146
20146
  this.addAttribute("aVertexPosition", s, 2, !1, nt.FLOAT).addAttribute("aTextureCoord", n, 2, !1, nt.FLOAT).addIndex(o), this._updateId = -1;
20147
20147
  }
20148
20148
  /**
@@ -20362,13 +20362,13 @@ class qf {
20362
20362
  initBuffers() {
20363
20363
  const t = this.geometry;
20364
20364
  let e = 0;
20365
- this.indexBuffer = new Wt(Sv(this.size), !0, !0), t.addIndex(this.indexBuffer), this.dynamicStride = 0;
20365
+ this.indexBuffer = new Xt(Sv(this.size), !0, !0), t.addIndex(this.indexBuffer), this.dynamicStride = 0;
20366
20366
  for (let o = 0; o < this.dynamicProperties.length; ++o) {
20367
20367
  const a = this.dynamicProperties[o];
20368
20368
  a.offset = e, e += a.size, this.dynamicStride += a.size;
20369
20369
  }
20370
20370
  const i = new ArrayBuffer(this.size * this.dynamicStride * 4 * 4);
20371
- this.dynamicData = new Float32Array(i), this.dynamicDataUint32 = new Uint32Array(i), this.dynamicBuffer = new Wt(this.dynamicData, !1, !1);
20371
+ this.dynamicData = new Float32Array(i), this.dynamicDataUint32 = new Uint32Array(i), this.dynamicBuffer = new Xt(this.dynamicData, !1, !1);
20372
20372
  let s = 0;
20373
20373
  this.staticStride = 0;
20374
20374
  for (let o = 0; o < this.staticProperties.length; ++o) {
@@ -20376,7 +20376,7 @@ class qf {
20376
20376
  a.offset = s, s += a.size, this.staticStride += a.size;
20377
20377
  }
20378
20378
  const n = new ArrayBuffer(this.size * this.staticStride * 4 * 4);
20379
- this.staticData = new Float32Array(n), this.staticDataUint32 = new Uint32Array(n), this.staticBuffer = new Wt(this.staticData, !0, !1);
20379
+ this.staticData = new Float32Array(n), this.staticDataUint32 = new Uint32Array(n), this.staticBuffer = new Xt(this.staticData, !0, !1);
20380
20380
  for (let o = 0; o < this.dynamicProperties.length; ++o) {
20381
20381
  const a = this.dynamicProperties[o];
20382
20382
  t.addAttribute(
@@ -21527,7 +21527,7 @@ const aS = {
21527
21527
  texture: !0,
21528
21528
  children: !1,
21529
21529
  baseTexture: !0
21530
- }, jm = class kc extends Xt {
21530
+ }, jm = class kc extends Wt {
21531
21531
  /**
21532
21532
  * @param text - The string that you would like the text to display
21533
21533
  * @param style - The style parameters
@@ -21550,7 +21550,7 @@ const aS = {
21550
21550
  return cr.experimentalLetterSpacing;
21551
21551
  }
21552
21552
  static set experimentalLetterSpacing(t) {
21553
- pt(
21553
+ ft(
21554
21554
  "7.1.0",
21555
21555
  "Text.experimentalLetterSpacing is deprecated, use TextMetrics.experimentalLetterSpacing"
21556
21556
  ), cr.experimentalLetterSpacing = t;
@@ -21929,7 +21929,7 @@ const $m = class Qm {
21929
21929
  add(t) {
21930
21930
  for (let e = 0, i = this.addHooks.length; e < i && !this.addHooks[e](t, this.queue); e++)
21931
21931
  ;
21932
- if (t instanceof yt)
21932
+ if (t instanceof gt)
21933
21933
  for (let e = t.children.length - 1; e >= 0; e--)
21934
21934
  this.add(t.children[e]);
21935
21935
  return this;
@@ -21956,7 +21956,7 @@ Object.defineProperties(Q, {
21956
21956
  return Fc.uploadsPerFrame;
21957
21957
  },
21958
21958
  set(r) {
21959
- pt("7.1.0", "settings.UPLOADS_PER_FRAME is deprecated, use prepare.BasePrepare.uploadsPerFrame"), Fc.uploadsPerFrame = r;
21959
+ ft("7.1.0", "settings.UPLOADS_PER_FRAME is deprecated, use prepare.BasePrepare.uploadsPerFrame"), Fc.uploadsPerFrame = r;
21960
21960
  }
21961
21961
  }
21962
21962
  });
@@ -22865,7 +22865,7 @@ void main(void)\r
22865
22865
  vTextureCoord = (uTextureMatrix * vec3(aTextureCoord, 1.0)).xy;\r
22866
22866
  }\r
22867
22867
  `;
22868
- const ip = [], rp = [], sp = [], ng = class og extends yt {
22868
+ const ip = [], rp = [], sp = [], ng = class og extends gt {
22869
22869
  /**
22870
22870
  * @param text - A string that you would like the text to display.
22871
22871
  * @param style - The style parameters.
@@ -22938,14 +22938,14 @@ const ip = [], rp = [], sp = [], ng = class og extends yt {
22938
22938
  et.EMPTY,
22939
22939
  { program: Hi.from(MS, AS), uniforms: { uFWidth: 0 } }
22940
22940
  ), rt = ht.NORMAL_NPM);
22941
- const W = new Lc(U, Z);
22942
- W.blendMode = rt, F = {
22941
+ const X = new Lc(U, Z);
22942
+ X.blendMode = rt, F = {
22943
22943
  index: 0,
22944
22944
  indexCount: 0,
22945
22945
  vertexCount: 0,
22946
22946
  uvsCount: 0,
22947
22947
  total: 0,
22948
- mesh: W,
22948
+ mesh: X,
22949
22949
  vertices: null,
22950
22950
  uvs: null,
22951
22951
  indices: null
@@ -22977,8 +22977,8 @@ const ip = [], rp = [], sp = [], ng = class og extends yt {
22977
22977
  const S = n[P];
22978
22978
  let R = S.position.x + T[S.line] * (this._align === "justify" ? S.prevSpaces : 1);
22979
22979
  this._roundPixels && (R = Math.round(R));
22980
- const F = R * i, O = S.position.y * i, U = S.texture, Z = E[U.baseTexture.uid], rt = U.frame, W = U._uvs, M = Z.index++;
22981
- Z.indices[M * 6 + 0] = 0 + M * 4, Z.indices[M * 6 + 1] = 1 + M * 4, Z.indices[M * 6 + 2] = 2 + M * 4, Z.indices[M * 6 + 3] = 0 + M * 4, Z.indices[M * 6 + 4] = 2 + M * 4, Z.indices[M * 6 + 5] = 3 + M * 4, Z.vertices[M * 8 + 0] = F, Z.vertices[M * 8 + 1] = O, Z.vertices[M * 8 + 2] = F + rt.width * i, Z.vertices[M * 8 + 3] = O, Z.vertices[M * 8 + 4] = F + rt.width * i, Z.vertices[M * 8 + 5] = O + rt.height * i, Z.vertices[M * 8 + 6] = F, Z.vertices[M * 8 + 7] = O + rt.height * i, Z.uvs[M * 8 + 0] = W.x0, Z.uvs[M * 8 + 1] = W.y0, Z.uvs[M * 8 + 2] = W.x1, Z.uvs[M * 8 + 3] = W.y1, Z.uvs[M * 8 + 4] = W.x2, Z.uvs[M * 8 + 5] = W.y2, Z.uvs[M * 8 + 6] = W.x3, Z.uvs[M * 8 + 7] = W.y3;
22980
+ const F = R * i, O = S.position.y * i, U = S.texture, Z = E[U.baseTexture.uid], rt = U.frame, X = U._uvs, M = Z.index++;
22981
+ Z.indices[M * 6 + 0] = 0 + M * 4, Z.indices[M * 6 + 1] = 1 + M * 4, Z.indices[M * 6 + 2] = 2 + M * 4, Z.indices[M * 6 + 3] = 0 + M * 4, Z.indices[M * 6 + 4] = 2 + M * 4, Z.indices[M * 6 + 5] = 3 + M * 4, Z.vertices[M * 8 + 0] = F, Z.vertices[M * 8 + 1] = O, Z.vertices[M * 8 + 2] = F + rt.width * i, Z.vertices[M * 8 + 3] = O, Z.vertices[M * 8 + 4] = F + rt.width * i, Z.vertices[M * 8 + 5] = O + rt.height * i, Z.vertices[M * 8 + 6] = F, Z.vertices[M * 8 + 7] = O + rt.height * i, Z.uvs[M * 8 + 0] = X.x0, Z.uvs[M * 8 + 1] = X.y0, Z.uvs[M * 8 + 2] = X.x1, Z.uvs[M * 8 + 3] = X.y1, Z.uvs[M * 8 + 4] = X.x2, Z.uvs[M * 8 + 5] = X.y2, Z.uvs[M * 8 + 6] = X.x3, Z.uvs[M * 8 + 7] = X.y3;
22982
22982
  }
22983
22983
  this._textWidth = p * i, this._textHeight = (s.y + t.lineHeight) * i;
22984
22984
  for (const P in E) {
@@ -22986,7 +22986,7 @@ const ip = [], rp = [], sp = [], ng = class og extends yt {
22986
22986
  if (this.anchor.x !== 0 || this.anchor.y !== 0) {
22987
22987
  let U = 0;
22988
22988
  const Z = this._textWidth * this.anchor.x, rt = this._textHeight * this.anchor.y;
22989
- for (let W = 0; W < S.total; W++)
22989
+ for (let X = 0; X < S.total; X++)
22990
22990
  S.vertices[U++] -= Z, S.vertices[U++] -= rt, S.vertices[U++] -= Z, S.vertices[U++] -= rt, S.vertices[U++] -= Z, S.vertices[U++] -= rt, S.vertices[U++] -= Z, S.vertices[U++] -= rt;
22991
22991
  }
22992
22992
  this._maxLineHeight = b * i;
@@ -23477,7 +23477,7 @@ Oc.defaultOptions = {
23477
23477
  wordWrapWidth: 100
23478
23478
  };
23479
23479
  let Tl = Oc;
23480
- const ea = class Gs extends Xt {
23480
+ const ea = class Gs extends Wt {
23481
23481
  /**
23482
23482
  * @param {string} [text] - Text contents
23483
23483
  * @param {PIXI.HTMLTextStyle|PIXI.TextStyle|PIXI.ITextStyle} [style] - Style setting to use.
@@ -23767,7 +23767,7 @@ async function bo(r, t) {
23767
23767
  return ga.set(e, i), i;
23768
23768
  }
23769
23769
  let Ks = null;
23770
- const WS = {
23770
+ const XS = {
23771
23771
  animationDuration: 500,
23772
23772
  disableAnimationsThreshold: 500,
23773
23773
  disableEdgesThreshold: 500,
@@ -23775,9 +23775,9 @@ const WS = {
23775
23775
  fetchEventsInterval: 3e4,
23776
23776
  theme: "dark"
23777
23777
  };
23778
- function XS(r) {
23778
+ function WS(r) {
23779
23779
  return {
23780
- ...WS,
23780
+ ...XS,
23781
23781
  ...r
23782
23782
  };
23783
23783
  }
@@ -23785,7 +23785,7 @@ function ZS(r) {
23785
23785
  VS(r);
23786
23786
  }
23787
23787
  function VS(r) {
23788
- const t = XS(r);
23788
+ const t = WS(r);
23789
23789
  if (!Ks) {
23790
23790
  Ks = t, Y.emit("configCreated", t);
23791
23791
  return;
@@ -23913,9 +23913,9 @@ class KS {
23913
23913
  var Va = { exports: {} };
23914
23914
  Va.exports;
23915
23915
  (function(r, t) {
23916
- var e = 200, i = "__lodash_hash_undefined__", s = 1, n = 2, o = 9007199254740991, a = "[object Arguments]", h = "[object Array]", l = "[object AsyncFunction]", c = "[object Boolean]", u = "[object Date]", d = "[object Error]", f = "[object Function]", p = "[object GeneratorFunction]", m = "[object Map]", g = "[object Number]", y = "[object Null]", x = "[object Object]", b = "[object Promise]", _ = "[object Proxy]", v = "[object RegExp]", T = "[object Set]", C = "[object String]", E = "[object Symbol]", I = "[object Undefined]", k = "[object WeakMap]", L = "[object ArrayBuffer]", P = "[object DataView]", S = "[object Float32Array]", R = "[object Float64Array]", F = "[object Int8Array]", O = "[object Int16Array]", U = "[object Int32Array]", Z = "[object Uint8Array]", rt = "[object Uint8ClampedArray]", W = "[object Uint16Array]", M = "[object Uint32Array]", D = /[\\^$.*+?()[\]{}|]/g, V = /^\[object .+?Constructor\]$/, J = /^(?:0|[1-9]\d*)$/, j = {};
23917
- j[S] = j[R] = j[F] = j[O] = j[U] = j[Z] = j[rt] = j[W] = j[M] = !0, j[a] = j[h] = j[L] = j[c] = j[P] = j[u] = j[d] = j[f] = j[m] = j[g] = j[x] = j[v] = j[T] = j[C] = j[k] = !1;
23918
- var ft = typeof si == "object" && si && si.Object === Object && si, wt = typeof self == "object" && self && self.Object === Object && self, mt = ft || wt || Function("return this")(), N = t && !t.nodeType && t, K = N && !0 && r && !r.nodeType && r, H = K && K.exports === N, G = H && ft.process, ct = function() {
23916
+ var e = 200, i = "__lodash_hash_undefined__", s = 1, n = 2, o = 9007199254740991, a = "[object Arguments]", h = "[object Array]", l = "[object AsyncFunction]", c = "[object Boolean]", u = "[object Date]", d = "[object Error]", f = "[object Function]", p = "[object GeneratorFunction]", m = "[object Map]", g = "[object Number]", y = "[object Null]", x = "[object Object]", b = "[object Promise]", _ = "[object Proxy]", v = "[object RegExp]", T = "[object Set]", C = "[object String]", E = "[object Symbol]", I = "[object Undefined]", k = "[object WeakMap]", L = "[object ArrayBuffer]", P = "[object DataView]", S = "[object Float32Array]", R = "[object Float64Array]", F = "[object Int8Array]", O = "[object Int16Array]", U = "[object Int32Array]", Z = "[object Uint8Array]", rt = "[object Uint8ClampedArray]", X = "[object Uint16Array]", M = "[object Uint32Array]", D = /[\\^$.*+?()[\]{}|]/g, V = /^\[object .+?Constructor\]$/, J = /^(?:0|[1-9]\d*)$/, j = {};
23917
+ j[S] = j[R] = j[F] = j[O] = j[U] = j[Z] = j[rt] = j[X] = j[M] = !0, j[a] = j[h] = j[L] = j[c] = j[P] = j[u] = j[d] = j[f] = j[m] = j[g] = j[x] = j[v] = j[T] = j[C] = j[k] = !1;
23918
+ var yt = typeof si == "object" && si && si.Object === Object && si, wt = typeof self == "object" && self && self.Object === Object && self, pt = yt || wt || Function("return this")(), N = t && !t.nodeType && t, K = N && !0 && r && !r.nodeType && r, H = K && K.exports === N, G = H && yt.process, ct = function() {
23919
23919
  try {
23920
23920
  return G && G.binding && G.binding("util");
23921
23921
  } catch {
@@ -23972,12 +23972,12 @@ Va.exports;
23972
23972
  B[++A] = q;
23973
23973
  }), B;
23974
23974
  }
23975
- var l1 = Array.prototype, c1 = Function.prototype, To = Object.prototype, Ph = mt["__core-js_shared__"], hd = c1.toString, li = To.hasOwnProperty, ld = function() {
23975
+ var l1 = Array.prototype, c1 = Function.prototype, To = Object.prototype, Ph = pt["__core-js_shared__"], hd = c1.toString, li = To.hasOwnProperty, ld = function() {
23976
23976
  var w = /[^.]+$/.exec(Ph && Ph.keys && Ph.keys.IE_PROTO || "");
23977
23977
  return w ? "Symbol(src)_1." + w : "";
23978
23978
  }(), cd = To.toString, u1 = RegExp(
23979
23979
  "^" + hd.call(li).replace(D, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"
23980
- ), ud = H ? mt.Buffer : void 0, So = mt.Symbol, dd = mt.Uint8Array, fd = To.propertyIsEnumerable, d1 = l1.splice, Pr = So ? So.toStringTag : void 0, pd = Object.getOwnPropertySymbols, f1 = ud ? ud.isBuffer : void 0, p1 = a1(Object.keys, Object), Lh = _s(mt, "DataView"), mn = _s(mt, "Map"), Gh = _s(mt, "Promise"), kh = _s(mt, "Set"), Fh = _s(mt, "WeakMap"), gn = _s(Object, "create"), m1 = kr(Lh), g1 = kr(mn), y1 = kr(Gh), b1 = kr(kh), x1 = kr(Fh), md = So ? So.prototype : void 0, Nh = md ? md.valueOf : void 0;
23980
+ ), ud = H ? pt.Buffer : void 0, So = pt.Symbol, dd = pt.Uint8Array, fd = To.propertyIsEnumerable, d1 = l1.splice, Pr = So ? So.toStringTag : void 0, pd = Object.getOwnPropertySymbols, f1 = ud ? ud.isBuffer : void 0, p1 = a1(Object.keys, Object), Lh = _s(pt, "DataView"), mn = _s(pt, "Map"), Gh = _s(pt, "Promise"), kh = _s(pt, "Set"), Fh = _s(pt, "WeakMap"), gn = _s(Object, "create"), m1 = kr(Lh), g1 = kr(mn), y1 = kr(Gh), b1 = kr(kh), x1 = kr(Fh), md = So ? So.prototype : void 0, Nh = md ? md.valueOf : void 0;
23981
23981
  function Lr(w) {
23982
23982
  var A = -1, B = w == null ? 0 : w.length;
23983
23983
  for (this.clear(); ++A < B; ) {
@@ -24096,7 +24096,7 @@ Va.exports;
24096
24096
  function U1(w) {
24097
24097
  return this.__data__.has(w);
24098
24098
  }
24099
- function W1(w, A) {
24099
+ function X1(w, A) {
24100
24100
  var B = this.__data__;
24101
24101
  if (B instanceof Gi) {
24102
24102
  var q = B.__data__;
@@ -24106,8 +24106,8 @@ Va.exports;
24106
24106
  }
24107
24107
  return B.set(w, A), this.size = B.size, this;
24108
24108
  }
24109
- rr.prototype.clear = D1, rr.prototype.delete = O1, rr.prototype.get = B1, rr.prototype.has = U1, rr.prototype.set = W1;
24110
- function X1(w, A) {
24109
+ rr.prototype.clear = D1, rr.prototype.delete = O1, rr.prototype.get = B1, rr.prototype.has = U1, rr.prototype.set = X1;
24110
+ function W1(w, A) {
24111
24111
  var B = Ao(w), q = !B && rb(w), Ct = !B && !q && Dh(w), dt = !B && !q && !Ct && Sd(w), Dt = B || q || Ct || dt, Qt = Dt ? hi(w.length, String) : [], ne = Qt.length;
24112
24112
  for (var Rt in w)
24113
24113
  li.call(w, Rt) && !(Dt && // Safari 9 has enumerable `arguments.length` in strict mode.
@@ -24378,7 +24378,7 @@ Va.exports;
24378
24378
  }
24379
24379
  var Sd = ot ? Ah(ot) : K1;
24380
24380
  function ob(w) {
24381
- return sb(w) ? X1(w) : Y1(w);
24381
+ return sb(w) ? W1(w) : Y1(w);
24382
24382
  }
24383
24383
  function ab() {
24384
24384
  return [];
@@ -25800,7 +25800,7 @@ const TC = {
25800
25800
  ticker: me.shared,
25801
25801
  allowPreserveDragOutside: !1
25802
25802
  };
25803
- class SC extends yt {
25803
+ class SC extends gt {
25804
25804
  /**
25805
25805
  * @param {IViewportOptions} ViewportOptions
25806
25806
  * @param {number} [options.screenWidth=window.innerWidth]
@@ -26512,7 +26512,7 @@ var Ge = {
26512
26512
  }, ia = function(t) {
26513
26513
  return Ot(t) || re(t);
26514
26514
  }, fg = typeof ArrayBuffer == "function" && ArrayBuffer.isView || function() {
26515
- }, ue = Array.isArray, Uc = /(?:-?\.?\d|\.)+/gi, pg = /[-+=.]*\d+[.e\-+]*\d*[e\-+]*\d*/g, Ns = /[-+=.]*\d+[.e-]*\d*[a-z%]*/g, Sl = /[-+=.]*\d+\.?\d*(?:e-|e\+)?\d*/gi, mg = /[+-]=-?[.\d]+/, gg = /[^,'"\[\]\s]+/gi, RC = /^[+\-=e\s\d]*\d+[.\d]*([a-z]*|%)\s*$/i, Gt, mi, Wc, Pu, ke = {}, Ha = {}, yg, bg = function(t) {
26515
+ }, ue = Array.isArray, Uc = /(?:-?\.?\d|\.)+/gi, pg = /[-+=.]*\d+[.e\-+]*\d*[e\-+]*\d*/g, Ns = /[-+=.]*\d+[.e-]*\d*[a-z%]*/g, Sl = /[-+=.]*\d+\.?\d*(?:e-|e\+)?\d*/gi, mg = /[+-]=-?[.\d]+/, gg = /[^,'"\[\]\s]+/gi, RC = /^[+\-=e\s\d]*\d+[.\d]*([a-z]*|%)\s*$/i, Gt, mi, Xc, Pu, ke = {}, Ha = {}, yg, bg = function(t) {
26516
26516
  return (Ha = us(t, ke)) && Se;
26517
26517
  }, Lu = function(t, e) {
26518
26518
  return console.warn("Invalid property", t, "set to", e, "Missing plugin? gsap.registerPlugin()");
@@ -26531,7 +26531,7 @@ var Ge = {
26531
26531
  kill: !1
26532
26532
  }, LC = {
26533
26533
  suppressEvents: !0
26534
- }, Gu = {}, _r = [], Xc = {}, _g, Re = {}, Cl = {}, ap = 30, xa = [], ku = "", Fu = function(t) {
26534
+ }, Gu = {}, _r = [], Wc = {}, _g, Re = {}, Cl = {}, ap = 30, xa = [], ku = "", Fu = function(t) {
26535
26535
  var e = t[0], i, s;
26536
26536
  if (Ri(e) || Ot(e) || (t = [t]), !(i = (e._gsap || {}).harness)) {
26537
26537
  for (s = xa.length; s-- && !xa[s].targetTest(e); )
@@ -26560,7 +26560,7 @@ var Ge = {
26560
26560
  return s < i;
26561
26561
  }, Ka = function() {
26562
26562
  var t = _r.length, e = _r.slice(0), i, s;
26563
- for (Xc = {}, _r.length = 0, i = 0; i < t; i++)
26563
+ for (Wc = {}, _r.length = 0, i = 0; i < t; i++)
26564
26564
  s = e[i], s && s._lazy && (s.render(s._lazy[0], s._lazy[1], !0)._lazy = 0);
26565
26565
  }, wg = function(t, e, i, s) {
26566
26566
  _r.length && !ce && Ka(), t.render(e, i, ce && e < 0 && (t._initted || t._startAt)), _r.length && !ce && Ka();
@@ -26689,12 +26689,12 @@ var Ge = {
26689
26689
  return a && !s && (t._time *= o / t._dur), t._dur = o, t._tDur = n ? n < 0 ? 1e10 : ie(o * (n + 1) + t._rDelay * n) : o, a > 0 && !s && Th(t, t._tTime = t._tDur * a), t.parent && wh(t), i || ss(t.parent, t), t;
26690
26690
  }, cp = function(t) {
26691
26691
  return t instanceof fe ? ss(t) : on(t, t._dur);
26692
- }, WC = {
26692
+ }, XC = {
26693
26693
  _start: 0,
26694
26694
  endTime: io,
26695
26695
  totalDuration: io
26696
26696
  }, Oe = function r(t, e, i) {
26697
- var s = t.labels, n = t._recent || WC, o = t.duration() >= Ze ? n.endTime(!1) : t._dur, a, h, l;
26697
+ var s = t.labels, n = t._recent || XC, o = t.duration() >= Ze ? n.endTime(!1) : t._dur, a, h, l;
26698
26698
  return re(e) && (isNaN(e) || e in s) ? (h = e.charAt(0), l = e.substr(-1) === "%", a = e.indexOf("="), h === "<" || h === ">" ? (a >= 0 && (e = e.replace(/=/, "")), (h === "<" ? n._start : n.endTime(n._repeat >= 0)) + (parseFloat(e.substr(1)) || 0) * (l ? (a < 0 ? n : i).totalDuration() / 100 : 1)) : a < 0 ? (e in s || (s[e] = o), s[e]) : (h = parseFloat(e.charAt(a - 1) + e.substr(a + 1)), l && i && (h = h / 100 * (ue(i) ? i[0] : i).totalDuration()), a > 1 ? r(t, e.substr(0, a - 1), i) + h : o + h)) : e == null ? o : +e;
26699
26699
  }, jn = function(t, e, i) {
26700
26700
  var s = Ji(e[1]), n = (s ? 2 : 1) + (t < 2 ? 0 : 1), o = e[n], a, h;
@@ -26710,7 +26710,7 @@ var Ge = {
26710
26710
  return i < t ? t : i > e ? e : i;
26711
26711
  }, le = function(t, e) {
26712
26712
  return !re(t) || !(e = RC.exec(t)) ? "" : e[1];
26713
- }, XC = function(t, e, i) {
26713
+ }, WC = function(t, e, i) {
26714
26714
  return Rr(i, function(s) {
26715
26715
  return xo(t, e, s);
26716
26716
  });
@@ -26722,7 +26722,7 @@ var Ge = {
26722
26722
  return re(s) && !e || Mg(s, 1) ? (n = i).push.apply(n, Ve(s)) : i.push(s);
26723
26723
  }) || i;
26724
26724
  }, Ve = function(t, e, i) {
26725
- return Mt && !e && Mt.selector ? Mt.selector(t) : re(t) && !i && (Wc || !an()) ? Hc.call((e || Pu).querySelectorAll(t), 0) : ue(t) ? ZC(t, i) : Mg(t) ? Hc.call(t, 0) : t ? [t] : [];
26725
+ return Mt && !e && Mt.selector ? Mt.selector(t) : re(t) && !i && (Xc || !an()) ? Hc.call((e || Pu).querySelectorAll(t), 0) : ue(t) ? ZC(t, i) : Mg(t) ? Hc.call(t, 0) : t ? [t] : [];
26726
26726
  }, Kc = function(t) {
26727
26727
  return t = Ve(t)[0] || eo("Invalid scope") || {}, function(e) {
26728
26728
  var i = t.current || t.nativeElement || t;
@@ -26752,7 +26752,7 @@ var Ge = {
26752
26752
  }
26753
26753
  for (g = o[m] = [], y = h ? Math.min(I, m) * c - 0.5 : s % I, x = I === Ze ? 0 : h ? m * u / I - 0.5 : s / I | 0, C = 0, E = Ze, T = 0; T < m; T++)
26754
26754
  b = T % I - y, _ = x - (T / I | 0), g[T] = v = l ? Math.abs(l === "y" ? _ : b) : dg(b * b + _ * _), v > C && (C = v), v < E && (E = v);
26755
- s === "random" && Rg(g), g.max = C - E, g.min = E, g.v = m = (parseFloat(e.amount) || parseFloat(e.each) * (I > m ? m - 1 : l ? l === "y" ? m / I : I : Math.max(I, m / I)) || 0) * (s === "edges" ? -1 : 1), g.b = m < 0 ? n - m : n, g.u = le(e.amount || e.each) || 0, i = i && m < 0 ? Wg(i) : i;
26755
+ s === "random" && Rg(g), g.max = C - E, g.min = E, g.v = m = (parseFloat(e.amount) || parseFloat(e.each) * (I > m ? m - 1 : l ? l === "y" ? m / I : I : Math.max(I, m / I)) || 0) * (s === "edges" ? -1 : 1), g.b = m < 0 ? n - m : n, g.u = le(e.amount || e.each) || 0, i = i && m < 0 ? Xg(i) : i;
26756
26756
  }
26757
26757
  return m = (g[d] - g.min) / g.max || 0, ie(g.b + (i ? i(m) : m) * g.v) + g.u;
26758
26758
  };
@@ -26966,7 +26966,7 @@ var Ge = {
26966
26966
  return d / (1e3 / (g || 60));
26967
26967
  },
26968
26968
  wake: function() {
26969
- yg && (!Wc && Ru() && (mi = Wc = window, Pu = mi.document || {}, ke.gsap = Se, (mi.gsapVersions || (mi.gsapVersions = [])).push(Se.version), bg(Ha || mi.GreenSockGlobals || !mi.gsap && mi || {}), Ng.forEach(Dg)), c = typeof requestAnimationFrame < "u" && requestAnimationFrame, h && u.sleep(), l = c || function(g) {
26969
+ yg && (!Xc && Ru() && (mi = Xc = window, Pu = mi.document || {}, ke.gsap = Se, (mi.gsapVersions || (mi.gsapVersions = [])).push(Se.version), bg(Ha || mi.GreenSockGlobals || !mi.gsap && mi || {}), Ng.forEach(Dg)), c = typeof requestAnimationFrame < "u" && requestAnimationFrame, h && u.sleep(), l = c || function(g) {
26970
26970
  return setTimeout(g, o - u.time * 1e3 + 1 | 0);
26971
26971
  }, so = 1, p(2));
26972
26972
  },
@@ -27002,11 +27002,11 @@ var Ge = {
27002
27002
  }, eE = function(t) {
27003
27003
  var e = (t + "").split("("), i = bt[e[0]];
27004
27004
  return i && e.length > 1 && i.config ? i.config.apply(null, ~t.indexOf("{") ? [qC(e[1])] : tE(t).split(",").map(Tg)) : bt._CE && $C.test(t) ? bt._CE("", t) : i;
27005
- }, Wg = function(t) {
27005
+ }, Xg = function(t) {
27006
27006
  return function(e) {
27007
27007
  return 1 - t(1 - e);
27008
27008
  };
27009
- }, Xg = function r(t, e) {
27009
+ }, Wg = function r(t, e) {
27010
27010
  for (var i = t._first, s; i; )
27011
27011
  i instanceof fe ? r(i, e) : i.vars.yoyoEase && (!i._yoyo || !i._repeat) && i._yoyo !== e && (i.timeline ? r(i.timeline, e) : (s = i._ease, i._ease = i._yEase, i._yEase = s, i._yoyo = e)), i = i._next;
27012
27012
  }, ns = function(t, e) {
@@ -27257,7 +27257,7 @@ var fe = /* @__PURE__ */ function(r) {
27257
27257
  return this;
27258
27258
  if (l = this._dur, h = this._tDur, I && (this._lock = 2, a = E ? l : -1e-4, this.render(a, !0), this.vars.repeatRefresh && !C && this.invalidate()), this._lock = 0, !this._ts && !y)
27259
27259
  return this;
27260
- Xg(this, C);
27260
+ Wg(this, C);
27261
27261
  }
27262
27262
  }
27263
27263
  if (this._hasPause && !this._forcing && this._lock < 2 && (x = UC(this, ie(a), ie(d)), x && (c -= d - (d = x._start))), this._tTime = c, this._time = d, this._act = !b, this._initted || (this._onUpdate = this.vars.onUpdate, this._initted = 1, this._zTime = s, a = 0), !a && d && !n && !m && (Le(this, "onStart"), this._tTime !== c))
@@ -27449,7 +27449,7 @@ var iE = function(t, e, i, s, n, o, a) {
27449
27449
  return a;
27450
27450
  }, gr, zc, Du = function r(t, e, i) {
27451
27451
  var s = t.vars, n = s.ease, o = s.startAt, a = s.immediateRender, h = s.lazy, l = s.onUpdate, c = s.runBackwards, u = s.yoyoEase, d = s.keyframes, f = s.autoRevert, p = t._dur, m = t._startAt, g = t._targets, y = t.parent, x = y && y.data === "nested" ? y.vars.targets : g, b = t._overwrite === "auto" && !Au, _ = t.timeline, v, T, C, E, I, k, L, P, S, R, F, O, U;
27452
- if (_ && (!d || !n) && (n = "none"), t._ease = ns(n, sn.ease), t._yEase = u ? Wg(ns(u === !0 ? n : u, sn.ease)) : 0, u && t._yoyo && !t._repeat && (u = t._yEase, t._yEase = t._ease, t._ease = u), t._from = !_ && !!s.runBackwards, !_ || d && !s.stagger) {
27452
+ if (_ && (!d || !n) && (n = "none"), t._ease = ns(n, sn.ease), t._yEase = u ? Xg(ns(u === !0 ? n : u, sn.ease)) : 0, u && t._yoyo && !t._repeat && (u = t._yEase, t._yEase = t._ease, t._ease = u), t._from = !_ && !!s.runBackwards, !_ || d && !s.stagger) {
27453
27453
  if (P = g[0] ? rs(g[0]).harness : 0, O = P && s[P.prop], v = Ya(s, Gu), m && (m._zTime < 0 && m.progress(1), e < 0 && c && a && !f ? m.render(-1, !0) : m.revert(c && p ? ba : PC), m._lazy = 0), o) {
27454
27454
  if (Er(t._startAt = Zt.set(g, Ke({
27455
27455
  data: "isStart",
@@ -27484,12 +27484,12 @@ var iE = function(t, e, i, s, n, o, a) {
27484
27484
  return;
27485
27485
  }
27486
27486
  for (t._pt = t._ptCache = 0, h = p && _e(h) || h && !p, T = 0; T < g.length; T++) {
27487
- if (I = g[T], L = I._gsap || Fu(g)[T]._gsap, t._ptLookup[T] = R = {}, Xc[L.id] && _r.length && Ka(), F = x === g ? T : x.indexOf(I), P && (S = new P()).init(I, O || v, t, F, x) !== !1 && (t._pt = E = new we(t._pt, I, S.name, 0, 1, S.render, S, 0, S.priority), S._props.forEach(function(Z) {
27487
+ if (I = g[T], L = I._gsap || Fu(g)[T]._gsap, t._ptLookup[T] = R = {}, Wc[L.id] && _r.length && Ka(), F = x === g ? T : x.indexOf(I), P && (S = new P()).init(I, O || v, t, F, x) !== !1 && (t._pt = E = new we(t._pt, I, S.name, 0, 1, S.render, S, 0, S.priority), S._props.forEach(function(Z) {
27488
27488
  R[Z] = E;
27489
27489
  }), S.priority && (k = 1)), !P || O)
27490
27490
  for (C in v)
27491
27491
  Re[C] && (S = Hg(C, v, t, F, I, x)) ? S.priority && (k = 1) : R[C] = E = Nu.call(t, I, C, "get", v[C], F, x, 0, s.stringFilter);
27492
- t._op && t._op[T] && t.kill(I, t._op[T]), b && t._pt && (gr = t, Gt.killTweensOf(I, R, t.globalTime(e)), U = !t.parent, gr = 0), t._pt && h && (Xc[L.id] = 1);
27492
+ t._op && t._op[T] && t.kill(I, t._op[T]), b && t._pt && (gr = t, Gt.killTweensOf(I, R, t.globalTime(e)), U = !t.parent, gr = 0), t._pt && h && (Wc[L.id] = 1);
27493
27493
  }
27494
27494
  k && $g(t), t._onInit && t._onInit(t);
27495
27495
  }
@@ -27600,7 +27600,7 @@ var Zt = /* @__PURE__ */ function(r) {
27600
27600
  return this.totalTime(m * 100 + s, n, o);
27601
27601
  if (d = ie(u % m), u === h ? (p = this._repeat, d = l) : (p = ~~(u / m), p && p === ie(u / m) && (d = l, p--), d > l && (d = l)), y = this._yoyo && p & 1, y && (_ = this._yEase, d = l - d), g = nn(this._tTime, m), d === a && !o && this._initted && p === g)
27602
27602
  return this._tTime = u, this;
27603
- p !== g && (b && this._yEase && Xg(b, y), this.vars.repeatRefresh && !y && !this._lock && this._time !== m && this._initted && (this._lock = o = 1, this.render(ie(m * p), !0).invalidate()._lock = 0));
27603
+ p !== g && (b && this._yEase && Wg(b, y), this.vars.repeatRefresh && !y && !this._lock && this._time !== m && this._initted && (this._lock = o = 1, this.render(ie(m * p), !0).invalidate()._lock = 0));
27604
27604
  }
27605
27605
  if (!this._initted) {
27606
27606
  if (Ag(this, c ? s : d, o, n, u))
@@ -27951,7 +27951,7 @@ var os = [], _a = {}, fE = [], fp = 0, pE = 0, Ml = function(t) {
27951
27951
  snap: Lg,
27952
27952
  normalize: KC,
27953
27953
  getUnit: le,
27954
- clamp: XC,
27954
+ clamp: WC,
27955
27955
  splitColor: Og,
27956
27956
  toArray: Ve,
27957
27957
  selector: Kc,
@@ -28071,7 +28071,7 @@ bt.Circ;
28071
28071
  * Club GSAP members, the agreement issued with that membership.
28072
28072
  * @author: Jack Doyle, jack@greensock.com
28073
28073
  */
28074
- var pp, yr, zs, Wu, Jr, mp, Xu, bE = function() {
28074
+ var pp, yr, zs, Xu, Jr, mp, Wu, bE = function() {
28075
28075
  return typeof window < "u";
28076
28076
  }, $i = {}, Yr = 180 / Math.PI, js = Math.PI / 180, Cs = Math.atan2, gp = 1e8, Zu = /([A-Z])/g, xE = /(left|right|width|margin|padding|x)/i, _E = /[\s,\(]\S/, vi = {
28077
28077
  autoAlpha: "opacity,visibility",
@@ -28129,7 +28129,7 @@ var pp, yr, zs, Wu, Jr, mp, Xu, bE = function() {
28129
28129
  if (this.tfm) {
28130
28130
  for (o in this.tfm)
28131
28131
  s[o] = this.tfm[o];
28132
- s.svg && (s.renderTransform(), e.setAttribute("data-svg-origin", this.svgo || "")), n = Xu(), (!n || !n.isStart) && !i[Ft] && (ey(i), s.zOrigin && i[Te] && (i[Te] += " " + s.zOrigin + "px", s.zOrigin = 0, s.renderTransform()), s.uncache = 1);
28132
+ s.svg && (s.renderTransform(), e.setAttribute("data-svg-origin", this.svgo || "")), n = Wu(), (!n || !n.isStart) && !i[Ft] && (ey(i), s.zOrigin && i[Te] && (i[Te] += " " + s.zOrigin + "px", s.zOrigin = 0, s.renderTransform()), s.uncache = 1);
28133
28133
  }
28134
28134
  }, iy = function(t, e) {
28135
28135
  var i = {
@@ -28157,7 +28157,7 @@ var pp, yr, zs, Wu, Jr, mp, Xu, bE = function() {
28157
28157
  }, Qc = function() {
28158
28158
  bE() && window.document && (pp = window, yr = pp.document, zs = yr.documentElement, Jr = $c("div") || {
28159
28159
  style: {}
28160
- }, $c("div"), Ft = hn(Ft), Te = Ft + "Origin", Jr.style.cssText = "border-width:0;line-height:0;position:absolute;padding:0", ry = !!hn("perspective"), Xu = Se.core.reverting, Wu = 1);
28160
+ }, $c("div"), Ft = hn(Ft), Te = Ft + "Origin", Jr.style.cssText = "border-width:0;line-height:0;position:absolute;padding:0", ry = !!hn("perspective"), Wu = Se.core.reverting, Xu = 1);
28161
28161
  }, Pl = function r(t) {
28162
28162
  var e = $c("svg", this.ownerSVGElement && this.ownerSVGElement.getAttribute("xmlns") || "http://www.w3.org/2000/svg"), i = this.parentNode, s = this.nextSibling, n = this.style.cssText, o;
28163
28163
  if (zs.appendChild(e), e.appendChild(this), this.style.display = "block", t)
@@ -28217,7 +28217,7 @@ var pp, yr, zs, Wu, Jr, mp, Xu, bE = function() {
28217
28217
  return h && f && (g = rs(m), g.time = Pe.time, g.width = m[c]), Ut(d ? p * n / u : p && n ? u / p * n : 0);
28218
28218
  }, Ui = function(t, e, i, s) {
28219
28219
  var n;
28220
- return Wu || Qc(), e in vi && e !== "transform" && (e = vi[e], ~e.indexOf(",") && (e = e.split(",")[0])), $i[e] && e !== "transform" ? (n = ao(t, s), n = e !== "transformOrigin" ? n[e] : n.svg ? n.origin : $a(Ii(t, Te)) + " " + n.zOrigin + "px") : (n = t.style[e], (!n || n === "auto" || s || ~(n + "").indexOf("calc(")) && (n = Ja[e] && Ja[e](t, e, i) || Ii(t, e) || vg(t, e) || (e === "opacity" ? 1 : 0))), i && !~(n + "").trim().indexOf(" ") ? Ir(t, e, n, i) + i : n;
28220
+ return Xu || Qc(), e in vi && e !== "transform" && (e = vi[e], ~e.indexOf(",") && (e = e.split(",")[0])), $i[e] && e !== "transform" ? (n = ao(t, s), n = e !== "transformOrigin" ? n[e] : n.svg ? n.origin : $a(Ii(t, Te)) + " " + n.zOrigin + "px") : (n = t.style[e], (!n || n === "auto" || s || ~(n + "").indexOf("calc(")) && (n = Ja[e] && Ja[e](t, e, i) || Ii(t, e) || vg(t, e) || (e === "opacity" ? 1 : 0))), i && !~(n + "").trim().indexOf(" ") ? Ir(t, e, n, i) + i : n;
28221
28221
  }, GE = function(t, e, i, s) {
28222
28222
  if (!i || i === "none") {
28223
28223
  var n = hn(e, t, 1), o = n && Ii(t, n, 1);
@@ -28342,8 +28342,8 @@ var pp, yr, zs, Wu, Jr, mp, Xu, bE = function() {
28342
28342
  var i = t._gsap || new Vg(t);
28343
28343
  if ("x" in i && !e && !i.uncache)
28344
28344
  return i;
28345
- var s = t.style, n = i.scaleX < 0, o = "px", a = "deg", h = getComputedStyle(t), l = Ii(t, Te) || "0", c, u, d, f, p, m, g, y, x, b, _, v, T, C, E, I, k, L, P, S, R, F, O, U, Z, rt, W, M, D, V, J, j;
28346
- return c = u = d = m = g = y = x = b = _ = 0, f = p = 1, i.svg = !!(t.getCTM && ny(t)), h.translate && ((h.translate !== "none" || h.scale !== "none" || h.rotate !== "none") && (s[Ft] = (h.translate !== "none" ? "translate3d(" + (h.translate + " 0 0").split(" ").slice(0, 3).join(", ") + ") " : "") + (h.rotate !== "none" ? "rotate(" + h.rotate + ") " : "") + (h.scale !== "none" ? "scale(" + h.scale.split(" ").join(",") + ") " : "") + (h[Ft] !== "none" ? h[Ft] : "")), s.scale = s.rotate = s.translate = "none"), C = Vu(t, i.svg), i.svg && (i.uncache ? (Z = t.getBBox(), l = i.xOrigin - Z.x + "px " + (i.yOrigin - Z.y) + "px", U = "") : U = !e && t.getAttribute("data-svg-origin"), qc(t, U || l, !!U || i.originIsAbsolute, i.smooth !== !1, C)), v = i.xOrigin || 0, T = i.yOrigin || 0, C !== oo && (L = C[0], P = C[1], S = C[2], R = C[3], c = F = C[4], u = O = C[5], C.length === 6 ? (f = Math.sqrt(L * L + P * P), p = Math.sqrt(R * R + S * S), m = L || P ? Cs(P, L) * Yr : 0, x = S || R ? Cs(S, R) * Yr + m : 0, x && (p *= Math.abs(Math.cos(x * js))), i.svg && (c -= v - (v * L + T * S), u -= T - (v * P + T * R))) : (j = C[6], V = C[7], W = C[8], M = C[9], D = C[10], J = C[11], c = C[12], u = C[13], d = C[14], E = Cs(j, D), g = E * Yr, E && (I = Math.cos(-E), k = Math.sin(-E), U = F * I + W * k, Z = O * I + M * k, rt = j * I + D * k, W = F * -k + W * I, M = O * -k + M * I, D = j * -k + D * I, J = V * -k + J * I, F = U, O = Z, j = rt), E = Cs(-S, D), y = E * Yr, E && (I = Math.cos(-E), k = Math.sin(-E), U = L * I - W * k, Z = P * I - M * k, rt = S * I - D * k, J = R * k + J * I, L = U, P = Z, S = rt), E = Cs(P, L), m = E * Yr, E && (I = Math.cos(E), k = Math.sin(E), U = L * I + P * k, Z = F * I + O * k, P = P * I - L * k, O = O * I - F * k, L = U, F = Z), g && Math.abs(g) + Math.abs(m) > 359.9 && (g = m = 0, y = 180 - y), f = Ut(Math.sqrt(L * L + P * P + S * S)), p = Ut(Math.sqrt(O * O + j * j)), E = Cs(F, O), x = Math.abs(E) > 2e-4 ? E * Yr : 0, _ = J ? 1 / (J < 0 ? -J : J) : 0), i.svg && (U = t.getAttribute("transform"), i.forceCSS = t.setAttribute("transform", "") || !ay(Ii(t, Ft)), U && t.setAttribute("transform", U))), Math.abs(x) > 90 && Math.abs(x) < 270 && (n ? (f *= -1, x += m <= 0 ? 180 : -180, m += m <= 0 ? 180 : -180) : (p *= -1, x += x <= 0 ? 180 : -180)), e = e || i.uncache, i.x = c - ((i.xPercent = c && (!e && i.xPercent || (Math.round(t.offsetWidth / 2) === Math.round(-c) ? -50 : 0))) ? t.offsetWidth * i.xPercent / 100 : 0) + o, i.y = u - ((i.yPercent = u && (!e && i.yPercent || (Math.round(t.offsetHeight / 2) === Math.round(-u) ? -50 : 0))) ? t.offsetHeight * i.yPercent / 100 : 0) + o, i.z = d + o, i.scaleX = Ut(f), i.scaleY = Ut(p), i.rotation = Ut(m) + a, i.rotationX = Ut(g) + a, i.rotationY = Ut(y) + a, i.skewX = x + a, i.skewY = b + a, i.transformPerspective = _ + o, (i.zOrigin = parseFloat(l.split(" ")[2]) || !e && i.zOrigin || 0) && (s[Te] = $a(l)), i.xOffset = i.yOffset = 0, i.force3D = Ge.force3D, i.renderTransform = i.svg ? DE : ry ? hy : NE, i.uncache = 0, i;
28345
+ var s = t.style, n = i.scaleX < 0, o = "px", a = "deg", h = getComputedStyle(t), l = Ii(t, Te) || "0", c, u, d, f, p, m, g, y, x, b, _, v, T, C, E, I, k, L, P, S, R, F, O, U, Z, rt, X, M, D, V, J, j;
28346
+ return c = u = d = m = g = y = x = b = _ = 0, f = p = 1, i.svg = !!(t.getCTM && ny(t)), h.translate && ((h.translate !== "none" || h.scale !== "none" || h.rotate !== "none") && (s[Ft] = (h.translate !== "none" ? "translate3d(" + (h.translate + " 0 0").split(" ").slice(0, 3).join(", ") + ") " : "") + (h.rotate !== "none" ? "rotate(" + h.rotate + ") " : "") + (h.scale !== "none" ? "scale(" + h.scale.split(" ").join(",") + ") " : "") + (h[Ft] !== "none" ? h[Ft] : "")), s.scale = s.rotate = s.translate = "none"), C = Vu(t, i.svg), i.svg && (i.uncache ? (Z = t.getBBox(), l = i.xOrigin - Z.x + "px " + (i.yOrigin - Z.y) + "px", U = "") : U = !e && t.getAttribute("data-svg-origin"), qc(t, U || l, !!U || i.originIsAbsolute, i.smooth !== !1, C)), v = i.xOrigin || 0, T = i.yOrigin || 0, C !== oo && (L = C[0], P = C[1], S = C[2], R = C[3], c = F = C[4], u = O = C[5], C.length === 6 ? (f = Math.sqrt(L * L + P * P), p = Math.sqrt(R * R + S * S), m = L || P ? Cs(P, L) * Yr : 0, x = S || R ? Cs(S, R) * Yr + m : 0, x && (p *= Math.abs(Math.cos(x * js))), i.svg && (c -= v - (v * L + T * S), u -= T - (v * P + T * R))) : (j = C[6], V = C[7], X = C[8], M = C[9], D = C[10], J = C[11], c = C[12], u = C[13], d = C[14], E = Cs(j, D), g = E * Yr, E && (I = Math.cos(-E), k = Math.sin(-E), U = F * I + X * k, Z = O * I + M * k, rt = j * I + D * k, X = F * -k + X * I, M = O * -k + M * I, D = j * -k + D * I, J = V * -k + J * I, F = U, O = Z, j = rt), E = Cs(-S, D), y = E * Yr, E && (I = Math.cos(-E), k = Math.sin(-E), U = L * I - X * k, Z = P * I - M * k, rt = S * I - D * k, J = R * k + J * I, L = U, P = Z, S = rt), E = Cs(P, L), m = E * Yr, E && (I = Math.cos(E), k = Math.sin(E), U = L * I + P * k, Z = F * I + O * k, P = P * I - L * k, O = O * I - F * k, L = U, F = Z), g && Math.abs(g) + Math.abs(m) > 359.9 && (g = m = 0, y = 180 - y), f = Ut(Math.sqrt(L * L + P * P + S * S)), p = Ut(Math.sqrt(O * O + j * j)), E = Cs(F, O), x = Math.abs(E) > 2e-4 ? E * Yr : 0, _ = J ? 1 / (J < 0 ? -J : J) : 0), i.svg && (U = t.getAttribute("transform"), i.forceCSS = t.setAttribute("transform", "") || !ay(Ii(t, Ft)), U && t.setAttribute("transform", U))), Math.abs(x) > 90 && Math.abs(x) < 270 && (n ? (f *= -1, x += m <= 0 ? 180 : -180, m += m <= 0 ? 180 : -180) : (p *= -1, x += x <= 0 ? 180 : -180)), e = e || i.uncache, i.x = c - ((i.xPercent = c && (!e && i.xPercent || (Math.round(t.offsetWidth / 2) === Math.round(-c) ? -50 : 0))) ? t.offsetWidth * i.xPercent / 100 : 0) + o, i.y = u - ((i.yPercent = u && (!e && i.yPercent || (Math.round(t.offsetHeight / 2) === Math.round(-u) ? -50 : 0))) ? t.offsetHeight * i.yPercent / 100 : 0) + o, i.z = d + o, i.scaleX = Ut(f), i.scaleY = Ut(p), i.rotation = Ut(m) + a, i.rotationX = Ut(g) + a, i.rotationY = Ut(y) + a, i.skewX = x + a, i.skewY = b + a, i.transformPerspective = _ + o, (i.zOrigin = parseFloat(l.split(" ")[2]) || !e && i.zOrigin || 0) && (s[Te] = $a(l)), i.xOffset = i.yOffset = 0, i.force3D = Ge.force3D, i.renderTransform = i.svg ? DE : ry ? hy : NE, i.uncache = 0, i;
28347
28347
  }, $a = function(t) {
28348
28348
  return (t = t.split(" "))[0] + " " + t[1];
28349
28349
  }, Ll = function(t, e, i) {
@@ -28398,7 +28398,7 @@ var ly = {
28398
28398
  },
28399
28399
  init: function(t, e, i, s, n) {
28400
28400
  var o = this._props, a = t.style, h = i.vars.startAt, l, c, u, d, f, p, m, g, y, x, b, _, v, T, C, E;
28401
- Wu || Qc(), this.styles = this.styles || iy(t), E = this.styles.props, this.tween = i;
28401
+ Xu || Qc(), this.styles = this.styles || iy(t), E = this.styles.props, this.tween = i;
28402
28402
  for (m in e)
28403
28403
  if (m !== "autoRound" && (c = e[m], !(Re[m] && Hg(m, e, i, s, t, n)))) {
28404
28404
  if (f = typeof c, p = Ja[m], f === "function" && (c = c.call(i, s, t, n), f = typeof c), f === "string" && ~c.indexOf("random(") && (c = ro(c)), p)
@@ -28445,7 +28445,7 @@ var ly = {
28445
28445
  C && $g(this);
28446
28446
  },
28447
28447
  render: function(t, e) {
28448
- if (e.tween._time || !Xu())
28448
+ if (e.tween._time || !Wu())
28449
28449
  for (var i = e._pt; i; )
28450
28450
  i.r(t, i.d), i = i._next;
28451
28451
  else
@@ -28490,10 +28490,10 @@ function tu(r, t) {
28490
28490
  function UE(r, t, e) {
28491
28491
  return uy(r, +tu(r) + t);
28492
28492
  }
28493
- function WE(r, t, e) {
28493
+ function XE(r, t, e) {
28494
28494
  return UE(r, t * 1e3);
28495
28495
  }
28496
- function XE(r) {
28496
+ function WE(r) {
28497
28497
  return (t) => {
28498
28498
  const e = Math.trunc, i = e(t);
28499
28499
  return i === 0 ? 0 : i;
@@ -28504,7 +28504,7 @@ function dy(r, t) {
28504
28504
  }
28505
28505
  function ZE(r, t, e) {
28506
28506
  const i = dy(r, t) / 1e3;
28507
- return XE()(i);
28507
+ return WE()(i);
28508
28508
  }
28509
28509
  const VE = (r) => ({
28510
28510
  rowGap: 24,
@@ -28637,7 +28637,7 @@ function $E() {
28637
28637
  function QE(r) {
28638
28638
  if (tt.isDependency())
28639
28639
  return [0, 1];
28640
- const t = r, e = WE(t, xb);
28640
+ const t = r, e = XE(t, xb);
28641
28641
  return [t, e];
28642
28642
  }
28643
28643
  function fy(r, t = !1) {
@@ -28719,7 +28719,7 @@ async function Un(r) {
28719
28719
  }
28720
28720
  var Qa = /* @__PURE__ */ ((r) => (r[r.Up = 0] = "Up", r[r.Down = 180] = "Down", r[r.Left = 270] = "Left", r[r.Right = 90] = "Right", r))(Qa || {});
28721
28721
  function my() {
28722
- const r = new Xt();
28722
+ const r = new Wt();
28723
28723
  async function t(e) {
28724
28724
  const { rotate: i = 0 } = e, s = {
28725
28725
  size: e.size,
@@ -28747,7 +28747,7 @@ function iu(r, t) {
28747
28747
  }
28748
28748
  const eI = 8, iI = 2;
28749
28749
  async function rI() {
28750
- const r = await Bt(), t = await s1(), e = await jR(), { animate: i } = await py(), s = new yt(), { element: n, render: o } = await my(), a = await Ku(), h = iu(g0, () => new at()), l = new iS(a, h);
28750
+ const r = await Bt(), t = await s1(), e = await jR(), { animate: i } = await py(), s = new gt(), { element: n, render: o } = await my(), a = await Ku(), h = iu(g0, () => new at()), l = new iS(a, h);
28751
28751
  let c = !1;
28752
28752
  s.name = bb, s.addChild(n), s.addChild(l), t.addAll([n, l]), e.add(s);
28753
28753
  async function u() {
@@ -28823,7 +28823,7 @@ async function oI(r) {
28823
28823
  return await bo(nI, [r]);
28824
28824
  }
28825
28825
  function aI() {
28826
- const r = new Xt(), t = new Xt();
28826
+ const r = new Wt(), t = new Wt();
28827
28827
  async function e(i) {
28828
28828
  const s = await oI(i);
28829
28829
  return r.texture = s, t.texture = s, t.anchor.x = 1, t.scale.x = -1, {
@@ -28839,10 +28839,10 @@ function aI() {
28839
28839
  }
28840
28840
  async function Qi() {
28841
28841
  const r = await Ku();
28842
- return new Xt(r);
28842
+ return new Wt(r);
28843
28843
  }
28844
28844
  async function Yu() {
28845
- const r = new yt(), t = await Qi(), { left: e, right: i, render: s } = await aI();
28845
+ const r = new gt(), t = await Qi(), { left: e, right: i, render: s } = await aI();
28846
28846
  r.addChild(t), r.addChild(e), r.addChild(i);
28847
28847
  async function n(h) {
28848
28848
  const { width: l, x: c, visible: u } = a(h);
@@ -28871,7 +28871,7 @@ async function Yu() {
28871
28871
  };
28872
28872
  }
28873
28873
  function Sh() {
28874
- const r = new yt(), t = new Xt(), e = new Xt(), i = new Xt(), s = new Xt(), n = new Xt(), o = new Xt(), a = new Xt(), h = new Xt();
28874
+ const r = new gt(), t = new Wt(), e = new Wt(), i = new Wt(), s = new Wt(), n = new Wt(), o = new Wt(), a = new Wt(), h = new Wt();
28875
28875
  t.name = "border-corner-top-left", e.name = "border-corner-top-right", i.name = "border-corner-bottom-left", s.name = "border-corner-bottom-right", n.name = "border-corner-left", o.name = "border-corner-right", a.name = "border-corner-top", h.name = "border-corner-bottom", e.anchor.x = 1, e.scale.x = -1, i.anchor.y = 1, i.scale.y = -1, s.anchor.x = 1, s.scale.x = -1, s.anchor.y = 1, s.scale.y = -1, r.addChild(t), r.addChild(e), r.addChild(i), r.addChild(s), r.addChild(n), r.addChild(o), r.addChild(a), r.addChild(h);
28876
28876
  async function l(p) {
28877
28877
  const { radius: m = 0, color: g = "#fff", stroke: y, width: x, height: b } = p, _ = typeof m == "number", v = {
@@ -28926,7 +28926,7 @@ function Sh() {
28926
28926
  };
28927
28927
  }
28928
28928
  async function Ch() {
28929
- const r = await Bt(), t = new yt(), { element: e, render: i } = await Sh();
28929
+ const r = await Bt(), t = new gt(), { element: e, render: i } = await Sh();
28930
28930
  async function s({ selected: n, width: o, height: a }) {
28931
28931
  if (!n)
28932
28932
  return t.removeChild(e), t;
@@ -28950,7 +28950,7 @@ async function Ch() {
28950
28950
  };
28951
28951
  }
28952
28952
  async function hI() {
28953
- const r = await Bt(), t = new yt(), { element: e, render: i } = await Yu(), { element: s, render: n } = await Ch();
28953
+ const r = await Bt(), t = new gt(), { element: e, render: i } = await Yu(), { element: s, render: n } = await Ch();
28954
28954
  t.addChild(e), t.addChild(s);
28955
28955
  async function o({ selected: a, width: h, height: l }) {
28956
28956
  const {
@@ -28975,7 +28975,7 @@ async function hI() {
28975
28975
  };
28976
28976
  }
28977
28977
  var lI = Object.defineProperty, cI = (r, t, e) => t in r ? lI(r, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : r[t] = e, En = (r, t, e) => (cI(r, typeof t != "symbol" ? t + "" : t, e), e);
28978
- class uI extends yt {
28978
+ class uI extends gt {
28979
28979
  /**
28980
28980
  * Creates a Circular ProgressBar.
28981
28981
  * @param { number } options - Options object to use.
@@ -28989,7 +28989,7 @@ class uI extends yt {
28989
28989
  * @param { 'butt' | 'round' | 'square' } options.cap - Line cap.
28990
28990
  */
28991
28991
  constructor(t) {
28992
- super(), En(this, "_progress", 0), En(this, "options"), En(this, "bgCircle", new Sr()), En(this, "fillCircle", new Sr()), En(this, "innerView", new yt()), this.options = t, this.addChild(this.innerView), this.innerView.addChild(this.bgCircle, this.fillCircle), this.addBackground(), t.value && (this.progress = t.value);
28992
+ super(), En(this, "_progress", 0), En(this, "options"), En(this, "bgCircle", new Sr()), En(this, "fillCircle", new Sr()), En(this, "innerView", new gt()), this.options = t, this.addChild(this.innerView), this.innerView.addChild(this.bgCircle, this.fillCircle), this.addBackground(), t.value && (this.progress = t.value);
28993
28993
  }
28994
28994
  addBackground() {
28995
28995
  const {
@@ -29081,7 +29081,7 @@ async function vI(r) {
29081
29081
  return await bo(_I, [r]);
29082
29082
  }
29083
29083
  async function wI({ cullAtZoomThreshold: r = !0 } = {}) {
29084
- const t = await o1(), e = new Xt();
29084
+ const t = await o1(), e = new Wt();
29085
29085
  r && t.add(e);
29086
29086
  async function i(s) {
29087
29087
  const n = await vI(s);
@@ -29167,7 +29167,7 @@ var gy = { exports: {} };
29167
29167
  } else e(function() {
29168
29168
  function k() {
29169
29169
  var D;
29170
- (D = F != -1 && O != -1 || F != -1 && U != -1 || O != -1 && U != -1) && ((D = F != O && F != U && O != U) || (h === null && (D = /AppleWebKit\/([0-9]+)(?:\.([0-9]+))/.exec(window.navigator.userAgent), h = !!D && (536 > parseInt(D[1], 10) || parseInt(D[1], 10) === 536 && 11 >= parseInt(D[2], 10))), D = h && (F == Z && O == Z && U == Z || F == rt && O == rt && U == rt || F == W && O == W && U == W)), D = !D), D && (M.parentNode !== null && M.parentNode.removeChild(M), clearTimeout(b), T(y));
29170
+ (D = F != -1 && O != -1 || F != -1 && U != -1 || O != -1 && U != -1) && ((D = F != O && F != U && O != U) || (h === null && (D = /AppleWebKit\/([0-9]+)(?:\.([0-9]+))/.exec(window.navigator.userAgent), h = !!D && (536 > parseInt(D[1], 10) || parseInt(D[1], 10) === 536 && 11 >= parseInt(D[2], 10))), D = h && (F == Z && O == Z && U == Z || F == rt && O == rt && U == rt || F == X && O == X && U == X)), D = !D), D && (M.parentNode !== null && M.parentNode.removeChild(M), clearTimeout(b), T(y));
29171
29171
  }
29172
29172
  function L() {
29173
29173
  if ((/* @__PURE__ */ new Date()).getTime() - v >= _) M.parentNode !== null && M.parentNode.removeChild(M), C(Error("" + _ + "ms timeout exceeded"));
@@ -29176,8 +29176,8 @@ var gy = { exports: {} };
29176
29176
  (D === !0 || D === void 0) && (F = P.g.offsetWidth, O = S.g.offsetWidth, U = R.g.offsetWidth, k()), b = setTimeout(L, 50);
29177
29177
  }
29178
29178
  }
29179
- var P = new i(x), S = new i(x), R = new i(x), F = -1, O = -1, U = -1, Z = -1, rt = -1, W = -1, M = document.createElement("div");
29180
- M.dir = "ltr", s(P, p(y, "sans-serif")), s(S, p(y, "serif")), s(R, p(y, "monospace")), M.appendChild(P.g), M.appendChild(S.g), M.appendChild(R.g), y.context.document.body.appendChild(M), Z = P.g.offsetWidth, rt = S.g.offsetWidth, W = R.g.offsetWidth, L(), o(P, function(D) {
29179
+ var P = new i(x), S = new i(x), R = new i(x), F = -1, O = -1, U = -1, Z = -1, rt = -1, X = -1, M = document.createElement("div");
29180
+ M.dir = "ltr", s(P, p(y, "sans-serif")), s(S, p(y, "serif")), s(R, p(y, "monospace")), M.appendChild(P.g), M.appendChild(S.g), M.appendChild(R.g), y.context.document.body.appendChild(M), Z = P.g.offsetWidth, rt = S.g.offsetWidth, X = R.g.offsetWidth, L(), o(P, function(D) {
29181
29181
  F = D, k();
29182
29182
  }), s(P, p(y, '"' + y.family + '",sans-serif')), o(S, function(D) {
29183
29183
  O = D, k();
@@ -29246,7 +29246,7 @@ async function Eh({ cullAtZoomThreshold: r = !0 } = {}) {
29246
29246
  };
29247
29247
  }
29248
29248
  async function _y({ cullAtZoomThreshold: r }) {
29249
- const t = await Bt(), e = new yt(), i = new yt(), { element: s, render: n } = await wI({ cullAtZoomThreshold: r }), { element: o, render: a } = await dI(), { element: h, render: l } = await Eh({ cullAtZoomThreshold: r }), { element: c, render: u } = await hI();
29249
+ const t = await Bt(), e = new gt(), i = new gt(), { element: s, render: n } = await wI({ cullAtZoomThreshold: r }), { element: o, render: a } = await dI(), { element: h, render: l } = await Eh({ cullAtZoomThreshold: r }), { element: c, render: u } = await hI();
29250
29250
  let d = !1, f = null, p;
29251
29251
  i.addChild(h), e.addChild(c), e.addChild(i);
29252
29252
  async function m(_) {
@@ -29342,9 +29342,9 @@ function ir(r) {
29342
29342
  const { kind: t } = r;
29343
29343
  switch (t) {
29344
29344
  case "task-run":
29345
- return Wl(Pt) && Pt.id === r.id;
29345
+ return Xl(Pt) && Pt.id === r.id;
29346
29346
  case "flow-run":
29347
- return Wl(Pt) && Pt.id === r.id;
29347
+ return Xl(Pt) && Pt.id === r.id;
29348
29348
  case "artifact":
29349
29349
  return db(Pt) && Pt.id === r.id;
29350
29350
  case "artifacts":
@@ -29361,7 +29361,7 @@ function ir(r) {
29361
29361
  }
29362
29362
  }
29363
29363
  function PI() {
29364
- return Pt && Wl(Pt) ? Pt : null;
29364
+ return Pt && Xl(Pt) ? Pt : null;
29365
29365
  }
29366
29366
  async function ju(r, {
29367
29367
  cullAtZoomThreshold: t = !0,
@@ -29425,7 +29425,7 @@ async function wy(r, t) {
29425
29425
  };
29426
29426
  }
29427
29427
  async function Ty() {
29428
- const r = await Bt(), t = await n1(), e = new yt(), { element: i, render: s } = await my(), { element: n, render: o } = await Yu(), { element: a, render: h } = await Sh();
29428
+ const r = await Bt(), t = await n1(), e = new gt(), { element: i, render: s } = await my(), { element: n, render: o } = await Yu(), { element: a, render: h } = await Sh();
29429
29429
  t.add(e);
29430
29430
  let l = !1;
29431
29431
  e.eventMode = "static", e.cursor = "pointer", e.addChild(n), e.addChild(i), e.addChild(a), e.on("mouseover", u), e.on("mouseout", d);
@@ -29468,7 +29468,7 @@ async function Ty() {
29468
29468
  };
29469
29469
  }
29470
29470
  async function Sy() {
29471
- const r = await Bt(), t = await Ht(), e = new yt(), { element: i, render: s } = await Yu(), { element: n, render: o } = await Ch();
29471
+ const r = await Bt(), t = await Ht(), e = new gt(), { element: i, render: s } = await Yu(), { element: n, render: o } = await Ch();
29472
29472
  e.addChild(i), e.addChild(n);
29473
29473
  async function a(l) {
29474
29474
  const { background: c = "#fff" } = r.node(l), { nodeHeight: u, nodeRadius: d } = r, f = ir({ kind: l.kind, id: l.id }), p = h(l, d), m = l.state_type !== "RUNNING" || t.isDependency();
@@ -29496,8 +29496,8 @@ async function Sy() {
29496
29496
  render: a
29497
29497
  };
29498
29498
  }
29499
- var Cy = "Expected a function", Ip = NaN, GI = "[object Symbol]", kI = /^\s+|\s+$/g, FI = /^[-+]0x[0-9a-f]+$/i, NI = /^0b[01]+$/i, DI = /^0o[0-7]+$/i, OI = parseInt, BI = typeof si == "object" && si && si.Object === Object && si, UI = typeof self == "object" && self && self.Object === Object && self, WI = BI || UI || Function("return this")(), XI = Object.prototype, ZI = XI.toString, VI = Math.max, HI = Math.min, Gl = function() {
29500
- return WI.Date.now();
29499
+ var Cy = "Expected a function", Ip = NaN, GI = "[object Symbol]", kI = /^\s+|\s+$/g, FI = /^[-+]0x[0-9a-f]+$/i, NI = /^0b[01]+$/i, DI = /^0o[0-7]+$/i, OI = parseInt, BI = typeof si == "object" && si && si.Object === Object && si, UI = typeof self == "object" && self && self.Object === Object && self, XI = BI || UI || Function("return this")(), WI = Object.prototype, ZI = WI.toString, VI = Math.max, HI = Math.min, Gl = function() {
29500
+ return XI.Date.now();
29501
29501
  };
29502
29502
  function KI(r, t, e) {
29503
29503
  var i, s, n, o, a, h, l = 0, c = !1, u = !1, d = !0;
@@ -29628,10 +29628,10 @@ async function QI(r) {
29628
29628
  }
29629
29629
  async function Ay(r) {
29630
29630
  const t = await QI(r);
29631
- return new Xt(t);
29631
+ return new Wt(t);
29632
29632
  }
29633
29633
  async function My(r) {
29634
- const t = new yt(), e = await Bt(), i = await Qi(), s = await Ay({ radius: e.eventRadiusDefault }), { element: n, render: o } = await Ch();
29634
+ const t = new gt(), e = await Bt(), i = await Qi(), s = await Ay({ radius: e.eventRadiusDefault }), { element: n, render: o } = await Ch();
29635
29635
  let a = !1;
29636
29636
  t.addChild(i), t.addChild(s), t.addChild(n), t.eventMode = "static", t.cursor = "pointer", t.on("mouseenter", () => {
29637
29637
  a || s.scale.set(1.5);
@@ -29663,7 +29663,7 @@ async function My(r) {
29663
29663
  };
29664
29664
  }
29665
29665
  async function Ry() {
29666
- const r = new yt(), t = await Bt(), e = await Qi(), i = await Ay({ radius: t.eventClusterRadiusDefault }), { element: s, render: n } = await Ch(), { element: o, render: a } = await Eh({ cullAtZoomThreshold: !1 });
29666
+ const r = new gt(), t = await Bt(), e = await Qi(), i = await Ay({ radius: t.eventClusterRadiusDefault }), { element: s, render: n } = await Ch(), { element: o, render: a } = await Eh({ cullAtZoomThreshold: !1 });
29667
29667
  let h = null, l = [], c = !1;
29668
29668
  r.addChild(e), r.addChild(i), r.addChild(o), r.addChild(s), r.eventMode = "static", r.cursor = "pointer", r.on("mouseenter", () => {
29669
29669
  c || i.scale.set(1.5);
@@ -30289,9 +30289,9 @@ const Bp = {
30289
30289
  function Up(r) {
30290
30290
  return r;
30291
30291
  }
30292
- var Wp = Array.prototype.map, Xp = ["y", "z", "a", "f", "p", "n", "µ", "m", "", "k", "M", "G", "T", "P", "E", "Z", "Y"];
30292
+ var Xp = Array.prototype.map, Wp = ["y", "z", "a", "f", "p", "n", "µ", "m", "", "k", "M", "G", "T", "P", "E", "Z", "Y"];
30293
30293
  function OA(r) {
30294
- var t = r.grouping === void 0 || r.thousands === void 0 ? Up : GA(Wp.call(r.grouping, Number), r.thousands + ""), e = r.currency === void 0 ? "" : r.currency[0] + "", i = r.currency === void 0 ? "" : r.currency[1] + "", s = r.decimal === void 0 ? "." : r.decimal + "", n = r.numerals === void 0 ? Up : kA(Wp.call(r.numerals, String)), o = r.percent === void 0 ? "%" : r.percent + "", a = r.minus === void 0 ? "−" : r.minus + "", h = r.nan === void 0 ? "NaN" : r.nan + "";
30294
+ var t = r.grouping === void 0 || r.thousands === void 0 ? Up : GA(Xp.call(r.grouping, Number), r.thousands + ""), e = r.currency === void 0 ? "" : r.currency[0] + "", i = r.currency === void 0 ? "" : r.currency[1] + "", s = r.decimal === void 0 ? "." : r.decimal + "", n = r.numerals === void 0 ? Up : kA(Xp.call(r.numerals, String)), o = r.percent === void 0 ? "%" : r.percent + "", a = r.minus === void 0 ? "−" : r.minus + "", h = r.nan === void 0 ? "NaN" : r.nan + "";
30295
30295
  function l(u) {
30296
30296
  u = oh(u);
30297
30297
  var d = u.fill, f = u.align, p = u.sign, m = u.symbol, g = u.zero, y = u.width, x = u.comma, b = u.precision, _ = u.trim, v = u.type;
@@ -30305,7 +30305,7 @@ function OA(r) {
30305
30305
  else {
30306
30306
  L = +L;
30307
30307
  var U = L < 0 || 1 / L < 0;
30308
- if (L = isNaN(L) ? h : E(Math.abs(L), b), _ && (L = NA(L)), U && +L == 0 && p !== "+" && (U = !1), P = (U ? p === "(" ? p : a : p === "-" || p === "(" ? "" : p) + P, S = (v === "s" ? Xp[8 + ky / 3] : "") + S + (U && p === "(" ? ")" : ""), I) {
30308
+ if (L = isNaN(L) ? h : E(Math.abs(L), b), _ && (L = NA(L)), U && +L == 0 && p !== "+" && (U = !1), P = (U ? p === "(" ? p : a : p === "-" || p === "(" ? "" : p) + P, S = (v === "s" ? Wp[8 + ky / 3] : "") + S + (U && p === "(" ? ")" : ""), I) {
30309
30309
  for (R = -1, F = L.length; ++R < F; )
30310
30310
  if (O = L.charCodeAt(R), 48 > O || O > 57) {
30311
30311
  S = (O === 46 ? s + L.slice(R + 1) : L.slice(R)) + S, L = L.slice(0, R);
@@ -30336,7 +30336,7 @@ function OA(r) {
30336
30336
  }, k;
30337
30337
  }
30338
30338
  function c(u, d) {
30339
- var f = l((u = oh(u), u.type = "f", u)), p = Math.max(-8, Math.min(8, Math.floor(ln(d) / 3))) * 3, m = Math.pow(10, -p), g = Xp[8 + p / 3];
30339
+ var f = l((u = oh(u), u.type = "f", u)), p = Math.max(-8, Math.min(8, Math.floor(ln(d) / 3))) * 3, m = Math.pow(10, -p), g = Wp[8 + p / 3];
30340
30340
  return function(y) {
30341
30341
  return f(m * y) + g;
30342
30342
  };
@@ -30358,10 +30358,10 @@ function BA(r) {
30358
30358
  function UA(r) {
30359
30359
  return Math.max(0, -ln(Math.abs(r)));
30360
30360
  }
30361
- function WA(r, t) {
30361
+ function XA(r, t) {
30362
30362
  return Math.max(0, Math.max(-8, Math.min(8, Math.floor(ln(t) / 3))) * 3 - ln(Math.abs(r)));
30363
30363
  }
30364
- function XA(r, t) {
30364
+ function WA(r, t) {
30365
30365
  return r = Math.abs(r), t = Math.abs(t) - r, Math.max(0, ln(t) - ln(r)) + 1;
30366
30366
  }
30367
30367
  function Dy(r, t) {
@@ -30453,14 +30453,14 @@ function jA(r, t, e, i) {
30453
30453
  switch (i = oh(i ?? ",f"), i.type) {
30454
30454
  case "s": {
30455
30455
  var o = Math.max(Math.abs(r), Math.abs(t));
30456
- return i.precision == null && !isNaN(n = WA(s, o)) && (i.precision = n), Ny(i, o);
30456
+ return i.precision == null && !isNaN(n = XA(s, o)) && (i.precision = n), Ny(i, o);
30457
30457
  }
30458
30458
  case "":
30459
30459
  case "e":
30460
30460
  case "g":
30461
30461
  case "p":
30462
30462
  case "r": {
30463
- i.precision == null && !isNaN(n = XA(s, Math.max(Math.abs(r), Math.abs(t)))) && (i.precision = n - (i.type === "e"));
30463
+ i.precision == null && !isNaN(n = WA(s, Math.max(Math.abs(r), Math.abs(t)))) && (i.precision = n - (i.type === "e"));
30464
30464
  break;
30465
30465
  }
30466
30466
  case "f":
@@ -30616,8 +30616,8 @@ function xs(r) {
30616
30616
  t.setUTCDate(t.getUTCDate() + e * 7);
30617
30617
  }, (t, e) => (e - t) / ed);
30618
30618
  }
30619
- const Wy = xs(0), lh = xs(1), nM = xs(2), oM = xs(3), un = xs(4), aM = xs(5), hM = xs(6);
30620
- Wy.range;
30619
+ const Xy = xs(0), lh = xs(1), nM = xs(2), oM = xs(3), un = xs(4), aM = xs(5), hM = xs(6);
30620
+ Xy.range;
30621
30621
  lh.range;
30622
30622
  nM.range;
30623
30623
  oM.range;
@@ -30717,7 +30717,7 @@ function fM(r) {
30717
30717
  a: U,
30718
30718
  A: Z,
30719
30719
  b: rt,
30720
- B: W,
30720
+ B: X,
30721
30721
  c: null,
30722
30722
  d: Jp,
30723
30723
  e: Jp,
@@ -30727,7 +30727,7 @@ function fM(r) {
30727
30727
  H: GM,
30728
30728
  I: kM,
30729
30729
  j: FM,
30730
- L: Xy,
30730
+ L: Wy,
30731
30731
  m: DM,
30732
30732
  M: OM,
30733
30733
  p: M,
@@ -30736,8 +30736,8 @@ function fM(r) {
30736
30736
  s: t0,
30737
30737
  S: BM,
30738
30738
  u: UM,
30739
- U: WM,
30740
- V: XM,
30739
+ U: XM,
30740
+ V: WM,
30741
30741
  w: ZM,
30742
30742
  W: VM,
30743
30743
  x: null,
@@ -30750,7 +30750,7 @@ function fM(r) {
30750
30750
  a: V,
30751
30751
  A: J,
30752
30752
  b: j,
30753
- B: ft,
30753
+ B: yt,
30754
30754
  c: null,
30755
30755
  d: $p,
30756
30756
  e: $p,
@@ -30764,7 +30764,7 @@ function fM(r) {
30764
30764
  m: tR,
30765
30765
  M: eR,
30766
30766
  p: wt,
30767
- q: mt,
30767
+ q: pt,
30768
30768
  Q: qp,
30769
30769
  s: t0,
30770
30770
  S: iR,
@@ -30883,7 +30883,7 @@ function fM(r) {
30883
30883
  function rt(N) {
30884
30884
  return h[N.getMonth()];
30885
30885
  }
30886
- function W(N) {
30886
+ function X(N) {
30887
30887
  return a[N.getMonth()];
30888
30888
  }
30889
30889
  function M(N) {
@@ -30901,13 +30901,13 @@ function fM(r) {
30901
30901
  function j(N) {
30902
30902
  return h[N.getUTCMonth()];
30903
30903
  }
30904
- function ft(N) {
30904
+ function yt(N) {
30905
30905
  return a[N.getUTCMonth()];
30906
30906
  }
30907
30907
  function wt(N) {
30908
30908
  return s[+(N.getUTCHours() >= 12)];
30909
30909
  }
30910
- function mt(N) {
30910
+ function pt(N) {
30911
30911
  return 1 + ~~(N.getUTCMonth() / 3);
30912
30912
  }
30913
30913
  return {
@@ -31043,11 +31043,11 @@ function kM(r, t) {
31043
31043
  function FM(r, t) {
31044
31044
  return vt(1 + vo.count(tr(r), r), t, 3);
31045
31045
  }
31046
- function Xy(r, t) {
31046
+ function Wy(r, t) {
31047
31047
  return vt(r.getMilliseconds(), t, 3);
31048
31048
  }
31049
31049
  function NM(r, t) {
31050
- return Xy(r, t) + "000";
31050
+ return Wy(r, t) + "000";
31051
31051
  }
31052
31052
  function DM(r, t) {
31053
31053
  return vt(r.getMonth() + 1, t, 2);
@@ -31062,14 +31062,14 @@ function UM(r) {
31062
31062
  var t = r.getDay();
31063
31063
  return t === 0 ? 7 : t;
31064
31064
  }
31065
- function WM(r, t) {
31065
+ function XM(r, t) {
31066
31066
  return vt(Ih.count(tr(r) - 1, r), t, 2);
31067
31067
  }
31068
31068
  function Zy(r) {
31069
31069
  var t = r.getDay();
31070
31070
  return t >= 4 || t === 0 ? cn(r) : cn.ceil(r);
31071
31071
  }
31072
- function XM(r, t) {
31072
+ function WM(r, t) {
31073
31073
  return r = Zy(r), vt(cn.count(tr(r), r) + (tr(r).getDay() === 4), t, 2);
31074
31074
  }
31075
31075
  function ZM(r) {
@@ -31127,7 +31127,7 @@ function rR(r) {
31127
31127
  return t === 0 ? 7 : t;
31128
31128
  }
31129
31129
  function sR(r, t) {
31130
- return vt(Wy.count(fs(r) - 1, r), t, 2);
31130
+ return vt(Xy.count(fs(r) - 1, r), t, 2);
31131
31131
  }
31132
31132
  function Hy(r) {
31133
31133
  var t = r.getUTCDay();
@@ -31211,16 +31211,16 @@ function Yy(r, t, e, i, s, n, o, a, h, l) {
31211
31211
  function gR() {
31212
31212
  return Dy.apply(Yy(uM, dM, tr, nd, Ih, vo, rd, id, Bs, Ky).domain([new Date(2e3, 0, 1), new Date(2e3, 0, 2)]), arguments);
31213
31213
  }
31214
- function Wn(r, t, e) {
31214
+ function Xn(r, t, e) {
31215
31215
  this.k = r, this.x = t, this.y = e;
31216
31216
  }
31217
- Wn.prototype = {
31218
- constructor: Wn,
31217
+ Xn.prototype = {
31218
+ constructor: Xn,
31219
31219
  scale: function(r) {
31220
- return r === 1 ? this : new Wn(this.k * r, this.x, this.y);
31220
+ return r === 1 ? this : new Xn(this.k * r, this.x, this.y);
31221
31221
  },
31222
31222
  translate: function(r, t) {
31223
- return r === 0 & t === 0 ? this : new Wn(this.k, this.x + this.k * r, this.y + this.k * t);
31223
+ return r === 0 & t === 0 ? this : new Xn(this.k, this.x + this.k * r, this.y + this.k * t);
31224
31224
  },
31225
31225
  apply: function(r) {
31226
31226
  return [r[0] * this.k + this.x, r[1] * this.k + this.y];
@@ -31250,7 +31250,7 @@ Wn.prototype = {
31250
31250
  return "translate(" + this.x + "," + this.y + ") scale(" + this.k + ")";
31251
31251
  }
31252
31252
  };
31253
- Wn.prototype;
31253
+ Xn.prototype;
31254
31254
  function zy(r) {
31255
31255
  return r.mode === "temporal" || r.mode === "left-aligned" ? yR(r) : bR(r);
31256
31256
  }
@@ -31274,8 +31274,8 @@ function xR() {
31274
31274
  }
31275
31275
  let $s = null;
31276
31276
  async function _R() {
31277
- const r = await Li(), t = new Date(r.start_time);
31278
- e0(t), Y.on("layoutSettingsUpdated", () => e0(t));
31277
+ const r = await Li();
31278
+ e0(r.start_time), Y.on("layoutSettingsUpdated", () => e0(r.start_time));
31279
31279
  }
31280
31280
  function vR() {
31281
31281
  $s = null;
@@ -31399,7 +31399,7 @@ async function r0(r) {
31399
31399
  async function Jy({ isRoot: r, parentStartDate: t } = {}) {
31400
31400
  const e = await Ht(), i = /* @__PURE__ */ new Map(), s = /* @__PURE__ */ new Map(), n = [];
31401
31401
  let o = [];
31402
- const a = new yt();
31402
+ const a = new gt();
31403
31403
  let h = null;
31404
31404
  Y.on("scaleUpdated", () => u());
31405
31405
  async function l(p) {
@@ -31444,7 +31444,7 @@ async function Jy({ isRoot: r, parentStartDate: t } = {}) {
31444
31444
  update: u
31445
31445
  };
31446
31446
  }
31447
- let Xn = null, Qs = null;
31447
+ let Wn = null, Qs = null;
31448
31448
  async function wR() {
31449
31449
  const r = await Kt(), t = await Fe(), e = await Ht(), i = await Li(), { element: s, render: n, update: o } = await Jy({ isRoot: !0 });
31450
31450
  s.zIndex = Ib;
@@ -31457,16 +31457,16 @@ async function wR() {
31457
31457
  }
31458
31458
  const h = await wy(() => ({
31459
31459
  nodeId: t.runId,
31460
- since: new Date(i.start_time),
31461
- until: i.end_time ? new Date(i.end_time) : /* @__PURE__ */ new Date()
31460
+ since: i.start_time,
31461
+ until: i.end_time ?? /* @__PURE__ */ new Date()
31462
31462
  }), (l) => {
31463
31463
  const c = Qs ? "eventDataUpdated" : "eventDataCreated";
31464
31464
  Qs = l, Y.emit(c, Qs), a(l);
31465
31465
  });
31466
- Y.on("configUpdated", () => a()), Y.on("viewportMoved", () => o()), Y.on("layoutSettingsUpdated", () => a()), Xn = h.stop, h.start();
31466
+ Y.on("configUpdated", () => a()), Y.on("viewportMoved", () => o()), Y.on("layoutSettingsUpdated", () => a()), Wn = h.stop, h.start();
31467
31467
  }
31468
31468
  function TR() {
31469
- Xn == null || Xn(), Xn = null, Qs = null;
31469
+ Wn == null || Wn(), Wn = null, Qs = null;
31470
31470
  }
31471
31471
  async function SR() {
31472
31472
  return Qs || await Ce("eventDataCreated");
@@ -31570,7 +31570,7 @@ async function n0(r) {
31570
31570
  async function $y({ isRoot: r, parentStartDate: t } = {}) {
31571
31571
  const e = await Ht(), i = /* @__PURE__ */ new Map(), s = /* @__PURE__ */ new Map(), n = [];
31572
31572
  let o = [];
31573
- const a = new yt();
31573
+ const a = new gt();
31574
31574
  let h = null;
31575
31575
  async function l(p) {
31576
31576
  if (p && (h = p), !h)
@@ -31622,7 +31622,7 @@ async function $y({ isRoot: r, parentStartDate: t } = {}) {
31622
31622
  async function CR(r) {
31623
31623
  const t = await Kt(), e = await Yt(), i = await Bt(), s = await Li();
31624
31624
  let n = await ze();
31625
- const o = new yt(), a = await Qi(), h = await Qi();
31625
+ const o = new gt(), a = await Qi(), h = await Qi();
31626
31626
  let l = null, c = !1, u = !1;
31627
31627
  t.stage.addChild(h), o.addChild(a), a.eventMode = "static", a.cursor = "pointer", a.on("mouseover", () => {
31628
31628
  c = !0, d();
@@ -31692,7 +31692,7 @@ function ER(r) {
31692
31692
  async function IR(r) {
31693
31693
  const t = await Kt(), e = await Yt(), i = await Bt(), s = await Li();
31694
31694
  let n = await ze();
31695
- const o = new yt(), a = await Qi(), h = await Qi();
31695
+ const o = new gt(), a = await Qi(), h = await Qi();
31696
31696
  let l = null, c = null, u = 0, d = 0, f = !1, p = !1;
31697
31697
  o.visible = !1, o.addChild(h), o.addChild(a), a.eventMode = "static", a.cursor = "pointer", a.on("mouseover", () => {
31698
31698
  f = !0, m();
@@ -31780,7 +31780,7 @@ async function IR(r) {
31780
31780
  };
31781
31781
  }
31782
31782
  function Qy({ isRoot: r } = {}) {
31783
- const t = new yt(), e = /* @__PURE__ */ new Map(), i = /* @__PURE__ */ new Map();
31783
+ const t = new gt(), e = /* @__PURE__ */ new Map(), i = /* @__PURE__ */ new Map();
31784
31784
  let s = null;
31785
31785
  async function n(a, h) {
31786
31786
  if (a && (s = a), !s)
@@ -31809,7 +31809,7 @@ function Qy({ isRoot: r } = {}) {
31809
31809
  render: n
31810
31810
  };
31811
31811
  }
31812
- class qy extends yt {
31812
+ class qy extends gt {
31813
31813
  updateTransform() {
31814
31814
  this.sortableChildren && this.sortDirty && this.sortChildren(), this._boundsID++, this.transform.updateTransform(this.parent.transform), this.worldAlpha = this.alpha * this.parent.worldAlpha;
31815
31815
  for (let t = 0, e = this.children.length; t < e; ++t)
@@ -31826,15 +31826,15 @@ class qy extends yt {
31826
31826
  }
31827
31827
  }
31828
31828
  async function AR(r) {
31829
- const t = new qy(), e = await Fe(), i = await Bt(), s = await Ht(), { element: n, render: o } = await Sy(), { element: a, render: h } = await Eh(), { element: l, render: c } = await Ty(), { element: u, render: d } = await Sh(), { element: f, render: p, getSize: m, stopWorker: g } = await od(), { element: y, render: x } = await Qy(), { element: b, render: _, update: v } = await Jy({ parentStartDate: new Date(r.start_time) }), { element: T, render: C, update: E } = await $y({ parentStartDate: new Date(r.start_time) });
31829
+ const t = new qy(), e = await Fe(), i = await Bt(), s = await Ht(), { element: n, render: o } = await Sy(), { element: a, render: h } = await Eh(), { element: l, render: c } = await Ty(), { element: u, render: d } = await Sh(), { element: f, render: p, getSize: m, stopWorker: g } = await od(), { element: y, render: x } = await Qy(), { element: b, render: _, update: v } = await Jy({ parentStartDate: r.start_time }), { element: T, render: C, update: E } = await $y({ parentStartDate: r.start_time });
31830
31830
  let I = !1, k = !1, L = r, P = !1;
31831
31831
  t.sortableChildren = !0, u.zIndex = b0, n.zIndex = _0, a.zIndex = Sa, l.zIndex = Sa, f.zIndex = x0, b.zIndex = Rb, y.zIndex = Pb, T.zIndex = Lb, u.eventMode = "none", u.cursor = "default";
31832
31832
  const { start: S, stop: R } = await cg(L.id, (N) => {
31833
- k = !!N.artifacts && N.artifacts.length > 0, p(N), W(N.states), D(N.artifacts), rt();
31833
+ k = !!N.artifacts && N.artifacts.length > 0, p(N), X(N.states), D(N.artifacts), rt();
31834
31834
  }), { start: F, stop: O } = await wy(() => ({
31835
31835
  nodeId: L.id,
31836
- since: new Date(L.start_time),
31837
- until: L.end_time ? new Date(L.end_time) : /* @__PURE__ */ new Date()
31836
+ since: L.start_time,
31837
+ until: L.end_time ?? /* @__PURE__ */ new Date()
31838
31838
  }), (N) => {
31839
31839
  I = N.length > 0, M(N);
31840
31840
  });
@@ -31844,13 +31844,13 @@ async function AR(r) {
31844
31844
  wo(), wt();
31845
31845
  });
31846
31846
  async function U(N) {
31847
- return L = N, await o(N), await j(), await ft(), P && (await W(), await M(), await D(), await rt()), t;
31847
+ return L = N, await o(N), await j(), await yt(), P && (await X(), await M(), await D(), await rt()), t;
31848
31848
  }
31849
31849
  async function Z() {
31850
31850
  P ? await J() : await V();
31851
31851
  }
31852
31852
  async function rt() {
31853
- const { background: N = "#fff" } = i.node(L), { width: K, height: H } = m(), { height: G } = mt(), { nodeBorderRadius: ct } = i, ot = 2;
31853
+ const { background: N = "#fff" } = i.node(L), { width: K, height: H } = m(), { height: G } = pt(), { nodeBorderRadius: ct } = i, ot = 2;
31854
31854
  u.position = { x: -ot, y: -ot };
31855
31855
  const _t = tt.isTemporal() ? G + ot * 2 : H + ot * 2;
31856
31856
  await d({
@@ -31861,10 +31861,10 @@ async function AR(r) {
31861
31861
  color: N
31862
31862
  });
31863
31863
  }
31864
- async function W(N) {
31865
- const { height: K } = mt(), { width: H } = n;
31864
+ async function X(N) {
31865
+ const { height: K } = pt(), { width: H } = n;
31866
31866
  await x(N ?? void 0, {
31867
- parentStartDate: new Date(L.start_time),
31867
+ parentStartDate: L.start_time,
31868
31868
  width: H,
31869
31869
  height: K
31870
31870
  });
@@ -31875,7 +31875,7 @@ async function AR(r) {
31875
31875
  return;
31876
31876
  }
31877
31877
  t.addChild(b);
31878
- const { height: K } = mt();
31878
+ const { height: K } = pt();
31879
31879
  if (b.position = { x: 0, y: K - i.eventBottomMargin }, N) {
31880
31880
  await _(N);
31881
31881
  return;
@@ -31888,7 +31888,7 @@ async function AR(r) {
31888
31888
  return;
31889
31889
  }
31890
31890
  t.addChild(T);
31891
- const { eventTargetSize: K, flowStateSelectedBarHeight: H } = i, { height: G } = mt(), ct = G - (I && !s.disableEvents ? K : H);
31891
+ const { eventTargetSize: K, flowStateSelectedBarHeight: H } = i, { height: G } = pt(), ct = G - (I && !s.disableEvents ? K : H);
31892
31892
  if (T.position = { x: 0, y: ct }, N) {
31893
31893
  await C(N);
31894
31894
  return;
@@ -31916,16 +31916,16 @@ async function AR(r) {
31916
31916
  });
31917
31917
  return G.x = H ? K / 2 : n.width + i.nodePadding, G.y = K / 2, G;
31918
31918
  }
31919
- async function ft() {
31919
+ async function yt() {
31920
31920
  const N = await h(L.label), K = e.theme === "dark" ? i.textDefault : i.textInverse, H = i.nodePadding, G = l.x + l.width + H, ct = n.width + H, ot = n.width > G + N.width + H, _t = i.nodeHeight / 2 - N.height / 2, At = ot ? G : Math.max(ct, G);
31921
31921
  return N.position = { x: At, y: _t }, N.tint = ot ? K : i.textDefault, N;
31922
31922
  }
31923
31923
  function wt() {
31924
- P && (W(), M(), D(), rt());
31925
- const N = mt();
31924
+ P && (X(), M(), D(), rt());
31925
+ const N = pt();
31926
31926
  t.emit("resized", N);
31927
31927
  }
31928
- function mt() {
31928
+ function pt() {
31929
31929
  const N = m(), {
31930
31930
  nodeHeight: K,
31931
31931
  nodesPadding: H,
@@ -31966,8 +31966,8 @@ async function MR(r, t) {
31966
31966
  return O.x = F ? R / 2 : l.width + i.nodePadding, O.y = R / 2, O;
31967
31967
  }
31968
31968
  async function T() {
31969
- const S = await o(x.label), R = e.theme === "dark" ? i.textDefault : i.textInverse, F = i.nodePadding, O = u.x + u.width + F, U = l.width + F, Z = l.width > O + S.width + F, rt = i.nodeHeight / 2 - S.height / 2, W = Z ? O : Math.max(U, O);
31970
- return S.position = { x: W, y: rt }, S.tint = Z ? R : i.textDefault, S;
31969
+ const S = await o(x.label), R = e.theme === "dark" ? i.textDefault : i.textInverse, F = i.nodePadding, O = u.x + u.width + F, U = l.width + F, Z = l.width > O + S.width + F, rt = i.nodeHeight / 2 - S.height / 2, X = Z ? O : Math.max(U, O);
31970
+ return S.position = { x: X, y: rt }, S.tint = Z ? R : i.textDefault, S;
31971
31971
  }
31972
31972
  async function C() {
31973
31973
  const { background: S = "#fff" } = i.node(x), { width: R, height: F } = m(), { height: O } = L(), { nodeBorderRadius: U } = i, Z = 2;
@@ -32052,7 +32052,7 @@ async function RR(r, t) {
32052
32052
  }
32053
32053
  function v() {
32054
32054
  if (tt.isTemporal() && !o.disableArtifacts) {
32055
- a || (a = new yt()), c.addChild(a);
32055
+ a || (a = new gt()), c.addChild(a);
32056
32056
  return;
32057
32057
  }
32058
32058
  a && c.removeChild(a);
@@ -32089,7 +32089,7 @@ async function RR(r, t) {
32089
32089
  }
32090
32090
  function L(S) {
32091
32091
  var Z;
32092
- const R = S.end_time ? new Date(S.end_time) : /* @__PURE__ */ new Date(), F = (Z = S.artifacts) == null ? void 0 : Z.map((rt) => rt.type === "progress" ? `${rt.id}-${rt.data}` : rt.id).join("|"), O = !!p;
32092
+ const R = S.end_time ?? /* @__PURE__ */ new Date(), F = (Z = S.artifacts) == null ? void 0 : Z.map((rt) => rt.type === "progress" ? `${rt.id}-${rt.data}` : rt.id).join("|"), O = !!p;
32093
32093
  return [
32094
32094
  S.state_type,
32095
32095
  R.getTime(),
@@ -32161,7 +32161,7 @@ function o0({ gap: r = 0, minimum: t = 0 } = {}) {
32161
32161
  function PR(r) {
32162
32162
  throw new Error(`switch does not have case for value: ${r}`);
32163
32163
  }
32164
- const t1 = "KGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIEtlKG4pe3Rocm93IG5ldyBFcnJvcihgc3dpdGNoIGRvZXMgbm90IGhhdmUgY2FzZSBmb3IgdmFsdWU6ICR7bn1gKX1mdW5jdGlvbiBDbihuLGUpe3JldHVybiBuPT1udWxsfHxlPT1udWxsP05hTjpuPGU/LTE6bj5lPzE6bj49ZT8wOk5hTn1mdW5jdGlvbiBudChuLGUpe3JldHVybiBuPT1udWxsfHxlPT1udWxsP05hTjplPG4/LTE6ZT5uPzE6ZT49bj8wOk5hTn1mdW5jdGlvbiBSbihuKXtsZXQgZSx0LHI7bi5sZW5ndGghPT0yPyhlPUNuLHQ9KHUsbCk9PkNuKG4odSksbCkscj0odSxsKT0+bih1KS1sKTooZT1uPT09Q258fG49PT1udD9uOmV0LHQ9bixyPW4pO2Z1bmN0aW9uIG8odSxsLGY9MCxnPXUubGVuZ3RoKXtpZihmPGcpe2lmKGUobCxsKSE9PTApcmV0dXJuIGc7ZG97Y29uc3QgbT1mK2c+Pj4xO3QodVttXSxsKTwwP2Y9bSsxOmc9bX13aGlsZShmPGcpfXJldHVybiBmfWZ1bmN0aW9uIGkodSxsLGY9MCxnPXUubGVuZ3RoKXtpZihmPGcpe2lmKGUobCxsKSE9PTApcmV0dXJuIGc7ZG97Y29uc3QgbT1mK2c+Pj4xO3QodVttXSxsKTw9MD9mPW0rMTpnPW19d2hpbGUoZjxnKX1yZXR1cm4gZn1mdW5jdGlvbiBhKHUsbCxmPTAsZz11Lmxlbmd0aCl7Y29uc3QgbT1vKHUsbCxmLGctMSk7cmV0dXJuIG0+ZiYmcih1W20tMV0sbCk+LXIodVttXSxsKT9tLTE6bX1yZXR1cm57bGVmdDpvLGNlbnRlcjphLHJpZ2h0Oml9fWZ1bmN0aW9uIGV0KCl7cmV0dXJuIDB9ZnVuY3Rpb24gdHQobil7cmV0dXJuIG49PT1udWxsP05hTjorbn1jb25zdCBydD1SbihDbikucmlnaHQ7Um4odHQpLmNlbnRlcjtjb25zdCBvdD1NYXRoLnNxcnQoNTApLGl0PU1hdGguc3FydCgxMCksYXQ9TWF0aC5zcXJ0KDIpO2Z1bmN0aW9uIE5uKG4sZSx0KXtjb25zdCByPShlLW4pL01hdGgubWF4KDAsdCksbz1NYXRoLmZsb29yKE1hdGgubG9nMTAocikpLGk9ci9NYXRoLnBvdygxMCxvKSxhPWk+PW90PzEwOmk+PWl0PzU6aT49YXQ/MjoxO2xldCB1LGwsZjtyZXR1cm4gbzwwPyhmPU1hdGgucG93KDEwLC1vKS9hLHU9TWF0aC5yb3VuZChuKmYpLGw9TWF0aC5yb3VuZChlKmYpLHUvZjxuJiYrK3UsbC9mPmUmJi0tbCxmPS1mKTooZj1NYXRoLnBvdygxMCxvKSphLHU9TWF0aC5yb3VuZChuL2YpLGw9TWF0aC5yb3VuZChlL2YpLHUqZjxuJiYrK3UsbCpmPmUmJi0tbCksbDx1JiYuNTw9dCYmdDwyP05uKG4sZSx0KjIpOlt1LGwsZl19ZnVuY3Rpb24gdXQobixlLHQpe2lmKGU9K2Usbj0rbix0PSt0LCEodD4wKSlyZXR1cm5bXTtpZihuPT09ZSlyZXR1cm5bbl07Y29uc3Qgcj1lPG4sW28saSxhXT1yP05uKGUsbix0KTpObihuLGUsdCk7aWYoIShpPj1vKSlyZXR1cm5bXTtjb25zdCB1PWktbysxLGw9bmV3IEFycmF5KHUpO2lmKHIpaWYoYTwwKWZvcihsZXQgZj0wO2Y8dTsrK2YpbFtmXT0oaS1mKS8tYTtlbHNlIGZvcihsZXQgZj0wO2Y8dTsrK2YpbFtmXT0oaS1mKSphO2Vsc2UgaWYoYTwwKWZvcihsZXQgZj0wO2Y8dTsrK2YpbFtmXT0obytmKS8tYTtlbHNlIGZvcihsZXQgZj0wO2Y8dTsrK2YpbFtmXT0obytmKSphO3JldHVybiBsfWZ1bmN0aW9uIEluKG4sZSx0KXtyZXR1cm4gZT0rZSxuPStuLHQ9K3QsTm4obixlLHQpWzJdfWZ1bmN0aW9uIE9uKG4sZSx0KXtlPStlLG49K24sdD0rdDtjb25zdCByPWU8bixvPXI/SW4oZSxuLHQpOkluKG4sZSx0KTtyZXR1cm4ocj8tMToxKSoobzwwPzEvLW86byl9ZnVuY3Rpb24gem4obixlLHQpe24ucHJvdG90eXBlPWUucHJvdG90eXBlPXQsdC5jb25zdHJ1Y3Rvcj1ufWZ1bmN0aW9uIGZlKG4sZSl7dmFyIHQ9T2JqZWN0LmNyZWF0ZShuLnByb3RvdHlwZSk7Zm9yKHZhciByIGluIGUpdFtyXT1lW3JdO3JldHVybiB0fWZ1bmN0aW9uIGRuKCl7fXZhciB5bj0uNyxEbj0xL3luLHJuPSJcXHMqKFsrLV0/XFxkKylcXHMqIix4bj0iXFxzKihbKy1dPyg/OlxcZCpcXC4pP1xcZCsoPzpbZUVdWystXT9cXGQrKT8pXFxzKiIsWj0iXFxzKihbKy1dPyg/OlxcZCpcXC4pP1xcZCsoPzpbZUVdWystXT9cXGQrKT8pJVxccyoiLGZ0PS9eIyhbMC05YS1mXXszLDh9KSQvLGN0PW5ldyBSZWdFeHAoYF5yZ2JcXCgke3JufSwke3JufSwke3JufVxcKSRgKSxzdD1uZXcgUmVnRXhwKGBecmdiXFwoJHtafSwke1p9LCR7Wn1cXCkkYCksbHQ9bmV3IFJlZ0V4cChgXnJnYmFcXCgke3JufSwke3JufSwke3JufSwke3hufVxcKSRgKSxodD1uZXcgUmVnRXhwKGBecmdiYVxcKCR7Wn0sJHtafSwke1p9LCR7eG59XFwpJGApLGd0PW5ldyBSZWdFeHAoYF5oc2xcXCgke3hufSwke1p9LCR7Wn1cXCkkYCksbXQ9bmV3IFJlZ0V4cChgXmhzbGFcXCgke3hufSwke1p9LCR7Wn0sJHt4bn1cXCkkYCksY2U9e2FsaWNlYmx1ZToxNTc5MjM4MyxhbnRpcXVld2hpdGU6MTY0NDQzNzUsYXF1YTo2NTUzNSxhcXVhbWFyaW5lOjgzODg1NjQsYXp1cmU6MTU3OTQxNzUsYmVpZ2U6MTYxMTkyNjAsYmlzcXVlOjE2NzcwMjQ0LGJsYWNrOjAsYmxhbmNoZWRhbG1vbmQ6MTY3NzIwNDUsYmx1ZToyNTUsYmx1ZXZpb2xldDo5MDU1MjAyLGJyb3duOjEwODI0MjM0LGJ1cmx5d29vZDoxNDU5NjIzMSxjYWRldGJsdWU6NjI2NjUyOCxjaGFydHJldXNlOjgzODgzNTIsY2hvY29sYXRlOjEzNzg5NDcwLGNvcmFsOjE2NzQ0MjcyLGNvcm5mbG93ZXJibHVlOjY1OTE5ODEsY29ybnNpbGs6MTY3NzUzODgsY3JpbXNvbjoxNDQyMzEwMCxjeWFuOjY1NTM1LGRhcmtibHVlOjEzOSxkYXJrY3lhbjozNTcyMyxkYXJrZ29sZGVucm9kOjEyMDkyOTM5LGRhcmtncmF5OjExMTE5MDE3LGRhcmtncmVlbjoyNTYwMCxkYXJrZ3JleToxMTExOTAxNyxkYXJra2hha2k6MTI0MzMyNTksZGFya21hZ2VudGE6OTEwOTY0MyxkYXJrb2xpdmVncmVlbjo1NTk3OTk5LGRhcmtvcmFuZ2U6MTY3NDc1MjAsZGFya29yY2hpZDoxMDA0MDAxMixkYXJrcmVkOjkxMDk1MDQsZGFya3NhbG1vbjoxNTMwODQxMCxkYXJrc2VhZ3JlZW46OTQxOTkxOSxkYXJrc2xhdGVibHVlOjQ3MzQzNDcsZGFya3NsYXRlZ3JheTozMTAwNDk1LGRhcmtzbGF0ZWdyZXk6MzEwMDQ5NSxkYXJrdHVycXVvaXNlOjUyOTQ1LGRhcmt2aW9sZXQ6OTY5OTUzOSxkZWVwcGluazoxNjcxNjk0NyxkZWVwc2t5Ymx1ZTo0OTE1MSxkaW1ncmF5OjY5MDgyNjUsZGltZ3JleTo2OTA4MjY1LGRvZGdlcmJsdWU6MjAwMzE5OSxmaXJlYnJpY2s6MTE2NzQxNDYsZmxvcmFsd2hpdGU6MTY3NzU5MjAsZm9yZXN0Z3JlZW46MjI2Mzg0MixmdWNoc2lhOjE2NzExOTM1LGdhaW5zYm9ybzoxNDQ3NDQ2MCxnaG9zdHdoaXRlOjE2MzE2NjcxLGdvbGQ6MTY3NjY3MjAsZ29sZGVucm9kOjE0MzI5MTIwLGdyYXk6ODQyMTUwNCxncmVlbjozMjc2OCxncmVlbnllbGxvdzoxMTQwMzA1NSxncmV5Ojg0MjE1MDQsaG9uZXlkZXc6MTU3OTQxNjAsaG90cGluazoxNjczODc0MCxpbmRpYW5yZWQ6MTM0NTg1MjQsaW5kaWdvOjQ5MTUzMzAsaXZvcnk6MTY3NzcyMDAsa2hha2k6MTU3ODc2NjAsbGF2ZW5kZXI6MTUxMzI0MTAsbGF2ZW5kZXJibHVzaDoxNjc3MzM2NSxsYXduZ3JlZW46ODE5MDk3NixsZW1vbmNoaWZmb246MTY3NzU4ODUsbGlnaHRibHVlOjExMzkzMjU0LGxpZ2h0Y29yYWw6MTU3NjE1MzYsbGlnaHRjeWFuOjE0NzQ1NTk5LGxpZ2h0Z29sZGVucm9keWVsbG93OjE2NDQ4MjEwLGxpZ2h0Z3JheToxMzg4MjMyMyxsaWdodGdyZWVuOjk0OTgyNTYsbGlnaHRncmV5OjEzODgyMzIzLGxpZ2h0cGluazoxNjc1ODQ2NSxsaWdodHNhbG1vbjoxNjc1Mjc2MixsaWdodHNlYWdyZWVuOjIxNDI4OTAsbGlnaHRza3libHVlOjg5MDAzNDYsbGlnaHRzbGF0ZWdyYXk6NzgzMzc1MyxsaWdodHNsYXRlZ3JleTo3ODMzNzUzLGxpZ2h0c3RlZWxibHVlOjExNTg0NzM0LGxpZ2h0eWVsbG93OjE2Nzc3MTg0LGxpbWU6NjUyODAsbGltZWdyZWVuOjMzMjkzMzAsbGluZW46MTY0NDU2NzAsbWFnZW50YToxNjcxMTkzNSxtYXJvb246ODM4ODYwOCxtZWRpdW1hcXVhbWFyaW5lOjY3MzczMjIsbWVkaXVtYmx1ZToyMDUsbWVkaXVtb3JjaGlkOjEyMjExNjY3LG1lZGl1bXB1cnBsZTo5NjYyNjgzLG1lZGl1bXNlYWdyZWVuOjM5NzgwOTcsbWVkaXVtc2xhdGVibHVlOjgwODc3OTAsbWVkaXVtc3ByaW5nZ3JlZW46NjQxNTQsbWVkaXVtdHVycXVvaXNlOjQ3NzIzMDAsbWVkaXVtdmlvbGV0cmVkOjEzMDQ3MTczLG1pZG5pZ2h0Ymx1ZToxNjQ0OTEyLG1pbnRjcmVhbToxNjEyMTg1MCxtaXN0eXJvc2U6MTY3NzAyNzMsbW9jY2FzaW46MTY3NzAyMjksbmF2YWpvd2hpdGU6MTY3Njg2ODUsbmF2eToxMjgsb2xkbGFjZToxNjY0MzU1OCxvbGl2ZTo4NDIxMzc2LG9saXZlZHJhYjo3MDQ4NzM5LG9yYW5nZToxNjc1MzkyMCxvcmFuZ2VyZWQ6MTY3MjkzNDQsb3JjaGlkOjE0MzE1NzM0LHBhbGVnb2xkZW5yb2Q6MTU2NTcxMzAscGFsZWdyZWVuOjEwMDI1ODgwLHBhbGV0dXJxdW9pc2U6MTE1Mjk5NjYscGFsZXZpb2xldHJlZDoxNDM4MTIwMyxwYXBheWF3aGlwOjE2NzczMDc3LHBlYWNocHVmZjoxNjc2NzY3MyxwZXJ1OjEzNDY4OTkxLHBpbms6MTY3NjEwMzUscGx1bToxNDUyNDYzNyxwb3dkZXJibHVlOjExNTkxOTEwLHB1cnBsZTo4Mzg4NzM2LHJlYmVjY2FwdXJwbGU6NjY5Nzg4MSxyZWQ6MTY3MTE2ODAscm9zeWJyb3duOjEyMzU3NTE5LHJveWFsYmx1ZTo0Mjg2OTQ1LHNhZGRsZWJyb3duOjkxMjcxODcsc2FsbW9uOjE2NDE2ODgyLHNhbmR5YnJvd246MTYwMzI4NjQsc2VhZ3JlZW46MzA1MDMyNyxzZWFzaGVsbDoxNjc3NDYzOCxzaWVubmE6MTA1MDY3OTcsc2lsdmVyOjEyNjMyMjU2LHNreWJsdWU6ODkwMDMzMSxzbGF0ZWJsdWU6Njk3MDA2MSxzbGF0ZWdyYXk6NzM3Mjk0NCxzbGF0ZWdyZXk6NzM3Mjk0NCxzbm93OjE2Nzc1OTMwLHNwcmluZ2dyZWVuOjY1NDA3LHN0ZWVsYmx1ZTo0NjIwOTgwLHRhbjoxMzgwODc4MCx0ZWFsOjMyODk2LHRoaXN0bGU6MTQyMDQ4ODgsdG9tYXRvOjE2NzM3MDk1LHR1cnF1b2lzZTo0MjUxODU2LHZpb2xldDoxNTYzMTA4Nix3aGVhdDoxNjExMzMzMSx3aGl0ZToxNjc3NzIxNSx3aGl0ZXNtb2tlOjE2MTE5Mjg1LHllbGxvdzoxNjc3Njk2MCx5ZWxsb3dncmVlbjoxMDE0NTA3NH07em4oZG4scG4se2NvcHkobil7cmV0dXJuIE9iamVjdC5hc3NpZ24obmV3IHRoaXMuY29uc3RydWN0b3IsdGhpcyxuKX0sZGlzcGxheWFibGUoKXtyZXR1cm4gdGhpcy5yZ2IoKS5kaXNwbGF5YWJsZSgpfSxoZXg6c2UsZm9ybWF0SGV4OnNlLGZvcm1hdEhleDg6ZHQsZm9ybWF0SHNsOnl0LGZvcm1hdFJnYjpsZSx0b1N0cmluZzpsZX0pO2Z1bmN0aW9uIHNlKCl7cmV0dXJuIHRoaXMucmdiKCkuZm9ybWF0SGV4KCl9ZnVuY3Rpb24gZHQoKXtyZXR1cm4gdGhpcy5yZ2IoKS5mb3JtYXRIZXg4KCl9ZnVuY3Rpb24geXQoKXtyZXR1cm4geWUodGhpcykuZm9ybWF0SHNsKCl9ZnVuY3Rpb24gbGUoKXtyZXR1cm4gdGhpcy5yZ2IoKS5mb3JtYXRSZ2IoKX1mdW5jdGlvbiBwbihuKXt2YXIgZSx0O3JldHVybiBuPShuKyIiKS50cmltKCkudG9Mb3dlckNhc2UoKSwoZT1mdC5leGVjKG4pKT8odD1lWzFdLmxlbmd0aCxlPXBhcnNlSW50KGVbMV0sMTYpLHQ9PT02P2hlKGUpOnQ9PT0zP25ldyBQKGU+PjgmMTV8ZT4+NCYyNDAsZT4+NCYxNXxlJjI0MCwoZSYxNSk8PDR8ZSYxNSwxKTp0PT09OD9VbihlPj4yNCYyNTUsZT4+MTYmMjU1LGU+PjgmMjU1LChlJjI1NSkvMjU1KTp0PT09ND9VbihlPj4xMiYxNXxlPj44JjI0MCxlPj44JjE1fGU+PjQmMjQwLGU+PjQmMTV8ZSYyNDAsKChlJjE1KTw8NHxlJjE1KS8yNTUpOm51bGwpOihlPWN0LmV4ZWMobikpP25ldyBQKGVbMV0sZVsyXSxlWzNdLDEpOihlPXN0LmV4ZWMobikpP25ldyBQKGVbMV0qMjU1LzEwMCxlWzJdKjI1NS8xMDAsZVszXSoyNTUvMTAwLDEpOihlPWx0LmV4ZWMobikpP1VuKGVbMV0sZVsyXSxlWzNdLGVbNF0pOihlPWh0LmV4ZWMobikpP1VuKGVbMV0qMjU1LzEwMCxlWzJdKjI1NS8xMDAsZVszXSoyNTUvMTAwLGVbNF0pOihlPWd0LmV4ZWMobikpP2RlKGVbMV0sZVsyXS8xMDAsZVszXS8xMDAsMSk6KGU9bXQuZXhlYyhuKSk/ZGUoZVsxXSxlWzJdLzEwMCxlWzNdLzEwMCxlWzRdKTpjZS5oYXNPd25Qcm9wZXJ0eShuKT9oZShjZVtuXSk6bj09PSJ0cmFuc3BhcmVudCI/bmV3IFAoTmFOLE5hTixOYU4sMCk6bnVsbH1mdW5jdGlvbiBoZShuKXtyZXR1cm4gbmV3IFAobj4+MTYmMjU1LG4+PjgmMjU1LG4mMjU1LDEpfWZ1bmN0aW9uIFVuKG4sZSx0LHIpe3JldHVybiByPD0wJiYobj1lPXQ9TmFOKSxuZXcgUChuLGUsdCxyKX1mdW5jdGlvbiB4dChuKXtyZXR1cm4gbiBpbnN0YW5jZW9mIGRufHwobj1wbihuKSksbj8obj1uLnJnYigpLG5ldyBQKG4ucixuLmcsbi5iLG4ub3BhY2l0eSkpOm5ldyBQfWZ1bmN0aW9uIEVuKG4sZSx0LHIpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPT09MT94dChuKTpuZXcgUChuLGUsdCxyPz8xKX1mdW5jdGlvbiBQKG4sZSx0LHIpe3RoaXMucj0rbix0aGlzLmc9K2UsdGhpcy5iPSt0LHRoaXMub3BhY2l0eT0rcn16bihQLEVuLGZlKGRuLHticmlnaHRlcihuKXtyZXR1cm4gbj1uPT1udWxsP0RuOk1hdGgucG93KERuLG4pLG5ldyBQKHRoaXMucipuLHRoaXMuZypuLHRoaXMuYipuLHRoaXMub3BhY2l0eSl9LGRhcmtlcihuKXtyZXR1cm4gbj1uPT1udWxsP3luOk1hdGgucG93KHluLG4pLG5ldyBQKHRoaXMucipuLHRoaXMuZypuLHRoaXMuYipuLHRoaXMub3BhY2l0eSl9LHJnYigpe3JldHVybiB0aGlzfSxjbGFtcCgpe3JldHVybiBuZXcgUChHKHRoaXMuciksRyh0aGlzLmcpLEcodGhpcy5iKSxrbih0aGlzLm9wYWNpdHkpKX0sZGlzcGxheWFibGUoKXtyZXR1cm4tLjU8PXRoaXMuciYmdGhpcy5yPDI1NS41JiYtLjU8PXRoaXMuZyYmdGhpcy5nPDI1NS41JiYtLjU8PXRoaXMuYiYmdGhpcy5iPDI1NS41JiYwPD10aGlzLm9wYWNpdHkmJnRoaXMub3BhY2l0eTw9MX0saGV4OmdlLGZvcm1hdEhleDpnZSxmb3JtYXRIZXg4OnB0LGZvcm1hdFJnYjptZSx0b1N0cmluZzptZX0pKTtmdW5jdGlvbiBnZSgpe3JldHVybmAjJHtKKHRoaXMucil9JHtKKHRoaXMuZyl9JHtKKHRoaXMuYil9YH1mdW5jdGlvbiBwdCgpe3JldHVybmAjJHtKKHRoaXMucil9JHtKKHRoaXMuZyl9JHtKKHRoaXMuYil9JHtKKChpc05hTih0aGlzLm9wYWNpdHkpPzE6dGhpcy5vcGFjaXR5KSoyNTUpfWB9ZnVuY3Rpb24gbWUoKXtjb25zdCBuPWtuKHRoaXMub3BhY2l0eSk7cmV0dXJuYCR7bj09PTE/InJnYigiOiJyZ2JhKCJ9JHtHKHRoaXMucil9LCAke0codGhpcy5nKX0sICR7Ryh0aGlzLmIpfSR7bj09PTE/IikiOmAsICR7bn0pYH1gfWZ1bmN0aW9uIGtuKG4pe3JldHVybiBpc05hTihuKT8xOk1hdGgubWF4KDAsTWF0aC5taW4oMSxuKSl9ZnVuY3Rpb24gRyhuKXtyZXR1cm4gTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZChuKXx8MCkpfWZ1bmN0aW9uIEoobil7cmV0dXJuIG49RyhuKSwobjwxNj8iMCI6IiIpK24udG9TdHJpbmcoMTYpfWZ1bmN0aW9uIGRlKG4sZSx0LHIpe3JldHVybiByPD0wP249ZT10PU5hTjp0PD0wfHx0Pj0xP249ZT1OYU46ZTw9MCYmKG49TmFOKSxuZXcgXyhuLGUsdCxyKX1mdW5jdGlvbiB5ZShuKXtpZihuIGluc3RhbmNlb2YgXylyZXR1cm4gbmV3IF8obi5oLG4ucyxuLmwsbi5vcGFjaXR5KTtpZihuIGluc3RhbmNlb2YgZG58fChuPXBuKG4pKSwhbilyZXR1cm4gbmV3IF87aWYobiBpbnN0YW5jZW9mIF8pcmV0dXJuIG47bj1uLnJnYigpO3ZhciBlPW4uci8yNTUsdD1uLmcvMjU1LHI9bi5iLzI1NSxvPU1hdGgubWluKGUsdCxyKSxpPU1hdGgubWF4KGUsdCxyKSxhPU5hTix1PWktbyxsPShpK28pLzI7cmV0dXJuIHU/KGU9PT1pP2E9KHQtcikvdSsodDxyKSo2OnQ9PT1pP2E9KHItZSkvdSsyOmE9KGUtdCkvdSs0LHUvPWw8LjU/aStvOjItaS1vLGEqPTYwKTp1PWw+MCYmbDwxPzA6YSxuZXcgXyhhLHUsbCxuLm9wYWNpdHkpfWZ1bmN0aW9uIHd0KG4sZSx0LHIpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPT09MT95ZShuKTpuZXcgXyhuLGUsdCxyPz8xKX1mdW5jdGlvbiBfKG4sZSx0LHIpe3RoaXMuaD0rbix0aGlzLnM9K2UsdGhpcy5sPSt0LHRoaXMub3BhY2l0eT0rcn16bihfLHd0LGZlKGRuLHticmlnaHRlcihuKXtyZXR1cm4gbj1uPT1udWxsP0RuOk1hdGgucG93KERuLG4pLG5ldyBfKHRoaXMuaCx0aGlzLnMsdGhpcy5sKm4sdGhpcy5vcGFjaXR5KX0sZGFya2VyKG4pe3JldHVybiBuPW49PW51bGw/eW46TWF0aC5wb3coeW4sbiksbmV3IF8odGhpcy5oLHRoaXMucyx0aGlzLmwqbix0aGlzLm9wYWNpdHkpfSxyZ2IoKXt2YXIgbj10aGlzLmglMzYwKyh0aGlzLmg8MCkqMzYwLGU9aXNOYU4obil8fGlzTmFOKHRoaXMucyk/MDp0aGlzLnMsdD10aGlzLmwscj10Kyh0PC41P3Q6MS10KSplLG89Mip0LXI7cmV0dXJuIG5ldyBQKF9uKG4+PTI0MD9uLTI0MDpuKzEyMCxvLHIpLF9uKG4sbyxyKSxfbihuPDEyMD9uKzI0MDpuLTEyMCxvLHIpLHRoaXMub3BhY2l0eSl9LGNsYW1wKCl7cmV0dXJuIG5ldyBfKHhlKHRoaXMuaCksU24odGhpcy5zKSxTbih0aGlzLmwpLGtuKHRoaXMub3BhY2l0eSkpfSxkaXNwbGF5YWJsZSgpe3JldHVybigwPD10aGlzLnMmJnRoaXMuczw9MXx8aXNOYU4odGhpcy5zKSkmJjA8PXRoaXMubCYmdGhpcy5sPD0xJiYwPD10aGlzLm9wYWNpdHkmJnRoaXMub3BhY2l0eTw9MX0sZm9ybWF0SHNsKCl7Y29uc3Qgbj1rbih0aGlzLm9wYWNpdHkpO3JldHVybmAke249PT0xPyJoc2woIjoiaHNsYSgifSR7eGUodGhpcy5oKX0sICR7U24odGhpcy5zKSoxMDB9JSwgJHtTbih0aGlzLmwpKjEwMH0lJHtuPT09MT8iKSI6YCwgJHtufSlgfWB9fSkpO2Z1bmN0aW9uIHhlKG4pe3JldHVybiBuPShufHwwKSUzNjAsbjwwP24rMzYwOm59ZnVuY3Rpb24gU24obil7cmV0dXJuIE1hdGgubWF4KDAsTWF0aC5taW4oMSxufHwwKSl9ZnVuY3Rpb24gX24obixlLHQpe3JldHVybihuPDYwP2UrKHQtZSkqbi82MDpuPDE4MD90Om48MjQwP2UrKHQtZSkqKDI0MC1uKS82MDplKSoyNTV9dmFyIHFuPW49PigpPT5uO2Z1bmN0aW9uIE10KG4sZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBuK3QqZX19ZnVuY3Rpb24gYnQobixlLHQpe3JldHVybiBuPU1hdGgucG93KG4sdCksZT1NYXRoLnBvdyhlLHQpLW4sdD0xL3QsZnVuY3Rpb24ocil7cmV0dXJuIE1hdGgucG93KG4rciplLHQpfX1mdW5jdGlvbiB2dChuKXtyZXR1cm4obj0rbik9PTE/cGU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdC1lP2J0KGUsdCxuKTpxbihpc05hTihlKT90OmUpfX1mdW5jdGlvbiBwZShuLGUpe3ZhciB0PWUtbjtyZXR1cm4gdD9NdChuLHQpOnFuKGlzTmFOKG4pP2U6bil9dmFyIHdlPWZ1bmN0aW9uIG4oZSl7dmFyIHQ9dnQoZSk7ZnVuY3Rpb24gcihvLGkpe3ZhciBhPXQoKG89RW4obykpLnIsKGk9RW4oaSkpLnIpLHU9dChvLmcsaS5nKSxsPXQoby5iLGkuYiksZj1wZShvLm9wYWNpdHksaS5vcGFjaXR5KTtyZXR1cm4gZnVuY3Rpb24oZyl7cmV0dXJuIG8ucj1hKGcpLG8uZz11KGcpLG8uYj1sKGcpLG8ub3BhY2l0eT1mKGcpLG8rIiJ9fXJldHVybiByLmdhbW1hPW4scn0oMSk7ZnVuY3Rpb24gVHQobixlKXtlfHwoZT1bXSk7dmFyIHQ9bj9NYXRoLm1pbihlLmxlbmd0aCxuLmxlbmd0aCk6MCxyPWUuc2xpY2UoKSxvO3JldHVybiBmdW5jdGlvbihpKXtmb3Iobz0wO288dDsrK28pcltvXT1uW29dKigxLWkpK2Vbb10qaTtyZXR1cm4gcn19ZnVuY3Rpb24gQ3Qobil7cmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyhuKSYmIShuIGluc3RhbmNlb2YgRGF0YVZpZXcpfWZ1bmN0aW9uIE50KG4sZSl7dmFyIHQ9ZT9lLmxlbmd0aDowLHI9bj9NYXRoLm1pbih0LG4ubGVuZ3RoKTowLG89bmV3IEFycmF5KHIpLGk9bmV3IEFycmF5KHQpLGE7Zm9yKGE9MDthPHI7KythKW9bYV09Vm4oblthXSxlW2FdKTtmb3IoO2E8dDsrK2EpaVthXT1lW2FdO3JldHVybiBmdW5jdGlvbih1KXtmb3IoYT0wO2E8cjsrK2EpaVthXT1vW2FdKHUpO3JldHVybiBpfX1mdW5jdGlvbiBEdChuLGUpe3ZhciB0PW5ldyBEYXRlO3JldHVybiBuPStuLGU9K2UsZnVuY3Rpb24ocil7cmV0dXJuIHQuc2V0VGltZShuKigxLXIpK2UqciksdH19ZnVuY3Rpb24gJG4obixlKXtyZXR1cm4gbj0rbixlPStlLGZ1bmN0aW9uKHQpe3JldHVybiBuKigxLXQpK2UqdH19ZnVuY3Rpb24gVXQobixlKXt2YXIgdD17fSxyPXt9LG87KG49PT1udWxsfHx0eXBlb2YgbiE9Im9iamVjdCIpJiYobj17fSksKGU9PT1udWxsfHx0eXBlb2YgZSE9Im9iamVjdCIpJiYoZT17fSk7Zm9yKG8gaW4gZSlvIGluIG4/dFtvXT1WbihuW29dLGVbb10pOnJbb109ZVtvXTtyZXR1cm4gZnVuY3Rpb24oaSl7Zm9yKG8gaW4gdClyW29dPXRbb10oaSk7cmV0dXJuIHJ9fXZhciBqbj0vWy0rXT8oPzpcZCtcLj9cZCp8XC4/XGQrKSg/OltlRV1bLStdP1xkKyk/L2csWm49bmV3IFJlZ0V4cChqbi5zb3VyY2UsImciKTtmdW5jdGlvbiBrdChuKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbn19ZnVuY3Rpb24gU3Qobil7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBuKGUpKyIifX1mdW5jdGlvbiAkdChuLGUpe3ZhciB0PWpuLmxhc3RJbmRleD1abi5sYXN0SW5kZXg9MCxyLG8saSxhPS0xLHU9W10sbD1bXTtmb3Iobj1uKyIiLGU9ZSsiIjsocj1qbi5leGVjKG4pKSYmKG89Wm4uZXhlYyhlKSk7KShpPW8uaW5kZXgpPnQmJihpPWUuc2xpY2UodCxpKSx1W2FdP3VbYV0rPWk6dVsrK2FdPWkpLChyPXJbMF0pPT09KG89b1swXSk/dVthXT91W2FdKz1vOnVbKythXT1vOih1WysrYV09bnVsbCxsLnB1c2goe2k6YSx4OiRuKHIsbyl9KSksdD1abi5sYXN0SW5kZXg7cmV0dXJuIHQ8ZS5sZW5ndGgmJihpPWUuc2xpY2UodCksdVthXT91W2FdKz1pOnVbKythXT1pKSx1Lmxlbmd0aDwyP2xbMF0/U3QobFswXS54KTprdChlKTooZT1sLmxlbmd0aCxmdW5jdGlvbihmKXtmb3IodmFyIGc9MCxtO2c8ZTsrK2cpdVsobT1sW2ddKS5pXT1tLngoZik7cmV0dXJuIHUuam9pbigiIil9KX1mdW5jdGlvbiBWbihuLGUpe3ZhciB0PXR5cGVvZiBlLHI7cmV0dXJuIGU9PW51bGx8fHQ9PT0iYm9vbGVhbiI/cW4oZSk6KHQ9PT0ibnVtYmVyIj8kbjp0PT09InN0cmluZyI/KHI9cG4oZSkpPyhlPXIsd2UpOiR0OmUgaW5zdGFuY2VvZiBwbj93ZTplIGluc3RhbmNlb2YgRGF0ZT9EdDpDdChlKT9UdDpBcnJheS5pc0FycmF5KGUpP050OnR5cGVvZiBlLnZhbHVlT2YhPSJmdW5jdGlvbiImJnR5cGVvZiBlLnRvU3RyaW5nIT0iZnVuY3Rpb24ifHxpc05hTihlKT9VdDokbikobixlKX1mdW5jdGlvbiBGdChuLGUpe3JldHVybiBuPStuLGU9K2UsZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgucm91bmQobiooMS10KStlKnQpfX1mdW5jdGlvbiBIdChuKXtyZXR1cm4gTWF0aC5hYnMobj1NYXRoLnJvdW5kKG4pKT49MWUyMT9uLnRvTG9jYWxlU3RyaW5nKCJlbiIpLnJlcGxhY2UoLywvZywiIik6bi50b1N0cmluZygxMCl9ZnVuY3Rpb24gRm4obixlKXtpZigodD0obj1lP24udG9FeHBvbmVudGlhbChlLTEpOm4udG9FeHBvbmVudGlhbCgpKS5pbmRleE9mKCJlIikpPDApcmV0dXJuIG51bGw7dmFyIHQscj1uLnNsaWNlKDAsdCk7cmV0dXJuW3IubGVuZ3RoPjE/clswXStyLnNsaWNlKDIpOnIsK24uc2xpY2UodCsxKV19ZnVuY3Rpb24gb24obil7cmV0dXJuIG49Rm4oTWF0aC5hYnMobikpLG4/blsxXTpOYU59ZnVuY3Rpb24gTHQobixlKXtyZXR1cm4gZnVuY3Rpb24odCxyKXtmb3IodmFyIG89dC5sZW5ndGgsaT1bXSxhPTAsdT1uWzBdLGw9MDtvPjAmJnU+MCYmKGwrdSsxPnImJih1PU1hdGgubWF4KDEsci1sKSksaS5wdXNoKHQuc3Vic3RyaW5nKG8tPXUsbyt1KSksISgobCs9dSsxKT5yKSk7KXU9blthPShhKzEpJW4ubGVuZ3RoXTtyZXR1cm4gaS5yZXZlcnNlKCkuam9pbihlKX19ZnVuY3Rpb24gUHQobil7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoL1swLTldL2csZnVuY3Rpb24odCl7cmV0dXJuIG5bK3RdfSl9fXZhciBZdD0vXig/OiguKT8oWzw+PV5dKSk/KFsrXC0oIF0pPyhbJCNdKT8oMCk/KFxkKyk/KCwpPyhcLlxkKyk/KH4pPyhbYS16JV0pPyQvaTtmdW5jdGlvbiBIbihuKXtpZighKGU9WXQuZXhlYyhuKSkpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGZvcm1hdDogIituKTt2YXIgZTtyZXR1cm4gbmV3IFhuKHtmaWxsOmVbMV0sYWxpZ246ZVsyXSxzaWduOmVbM10sc3ltYm9sOmVbNF0semVybzplWzVdLHdpZHRoOmVbNl0sY29tbWE6ZVs3XSxwcmVjaXNpb246ZVs4XSYmZVs4XS5zbGljZSgxKSx0cmltOmVbOV0sdHlwZTplWzEwXX0pfUhuLnByb3RvdHlwZT1Ybi5wcm90b3R5cGU7ZnVuY3Rpb24gWG4obil7dGhpcy5maWxsPW4uZmlsbD09PXZvaWQgMD8iICI6bi5maWxsKyIiLHRoaXMuYWxpZ249bi5hbGlnbj09PXZvaWQgMD8iPiI6bi5hbGlnbisiIix0aGlzLnNpZ249bi5zaWduPT09dm9pZCAwPyItIjpuLnNpZ24rIiIsdGhpcy5zeW1ib2w9bi5zeW1ib2w9PT12b2lkIDA/IiI6bi5zeW1ib2wrIiIsdGhpcy56ZXJvPSEhbi56ZXJvLHRoaXMud2lkdGg9bi53aWR0aD09PXZvaWQgMD92b2lkIDA6K24ud2lkdGgsdGhpcy5jb21tYT0hIW4uY29tbWEsdGhpcy5wcmVjaXNpb249bi5wcmVjaXNpb249PT12b2lkIDA/dm9pZCAwOituLnByZWNpc2lvbix0aGlzLnRyaW09ISFuLnRyaW0sdGhpcy50eXBlPW4udHlwZT09PXZvaWQgMD8iIjpuLnR5cGUrIiJ9WG4ucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmlsbCt0aGlzLmFsaWduK3RoaXMuc2lnbit0aGlzLnN5bWJvbCsodGhpcy56ZXJvPyIwIjoiIikrKHRoaXMud2lkdGg9PT12b2lkIDA/IiI6TWF0aC5tYXgoMSx0aGlzLndpZHRofDApKSsodGhpcy5jb21tYT8iLCI6IiIpKyh0aGlzLnByZWNpc2lvbj09PXZvaWQgMD8iIjoiLiIrTWF0aC5tYXgoMCx0aGlzLnByZWNpc2lvbnwwKSkrKHRoaXMudHJpbT8ifiI6IiIpK3RoaXMudHlwZX07ZnVuY3Rpb24gV3Qobil7bjpmb3IodmFyIGU9bi5sZW5ndGgsdD0xLHI9LTEsbzt0PGU7Kyt0KXN3aXRjaChuW3RdKXtjYXNlIi4iOnI9bz10O2JyZWFrO2Nhc2UiMCI6cj09PTAmJihyPXQpLG89dDticmVhaztkZWZhdWx0OmlmKCErblt0XSlicmVhayBuO3I+MCYmKHI9MCk7YnJlYWt9cmV0dXJuIHI+MD9uLnNsaWNlKDAscikrbi5zbGljZShvKzEpOm59dmFyIE1lO2Z1bmN0aW9uIEF0KG4sZSl7dmFyIHQ9Rm4obixlKTtpZighdClyZXR1cm4gbisiIjt2YXIgcj10WzBdLG89dFsxXSxpPW8tKE1lPU1hdGgubWF4KC04LE1hdGgubWluKDgsTWF0aC5mbG9vcihvLzMpKSkqMykrMSxhPXIubGVuZ3RoO3JldHVybiBpPT09YT9yOmk+YT9yK25ldyBBcnJheShpLWErMSkuam9pbigiMCIpOmk+MD9yLnNsaWNlKDAsaSkrIi4iK3Iuc2xpY2UoaSk6IjAuIituZXcgQXJyYXkoMS1pKS5qb2luKCIwIikrRm4obixNYXRoLm1heCgwLGUraS0xKSlbMF19ZnVuY3Rpb24gYmUobixlKXt2YXIgdD1GbihuLGUpO2lmKCF0KXJldHVybiBuKyIiO3ZhciByPXRbMF0sbz10WzFdO3JldHVybiBvPDA/IjAuIituZXcgQXJyYXkoLW8pLmpvaW4oIjAiKStyOnIubGVuZ3RoPm8rMT9yLnNsaWNlKDAsbysxKSsiLiIrci5zbGljZShvKzEpOnIrbmV3IEFycmF5KG8tci5sZW5ndGgrMikuam9pbigiMCIpfXZhciB2ZT17IiUiOihuLGUpPT4obioxMDApLnRvRml4ZWQoZSksYjpuPT5NYXRoLnJvdW5kKG4pLnRvU3RyaW5nKDIpLGM6bj0+bisiIixkOkh0LGU6KG4sZSk9Pm4udG9FeHBvbmVudGlhbChlKSxmOihuLGUpPT5uLnRvRml4ZWQoZSksZzoobixlKT0+bi50b1ByZWNpc2lvbihlKSxvOm49Pk1hdGgucm91bmQobikudG9TdHJpbmcoOCkscDoobixlKT0+YmUobioxMDAsZSkscjpiZSxzOkF0LFg6bj0+TWF0aC5yb3VuZChuKS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKSx4Om49Pk1hdGgucm91bmQobikudG9TdHJpbmcoMTYpfTtmdW5jdGlvbiBUZShuKXtyZXR1cm4gbn12YXIgQ2U9QXJyYXkucHJvdG90eXBlLm1hcCxOZT1bInkiLCJ6IiwiYSIsImYiLCJwIiwibiIsIsK1IiwibSIsIiIsImsiLCJNIiwiRyIsIlQiLCJQIiwiRSIsIloiLCJZIl07ZnVuY3Rpb24gUnQobil7dmFyIGU9bi5ncm91cGluZz09PXZvaWQgMHx8bi50aG91c2FuZHM9PT12b2lkIDA/VGU6THQoQ2UuY2FsbChuLmdyb3VwaW5nLE51bWJlciksbi50aG91c2FuZHMrIiIpLHQ9bi5jdXJyZW5jeT09PXZvaWQgMD8iIjpuLmN1cnJlbmN5WzBdKyIiLHI9bi5jdXJyZW5jeT09PXZvaWQgMD8iIjpuLmN1cnJlbmN5WzFdKyIiLG89bi5kZWNpbWFsPT09dm9pZCAwPyIuIjpuLmRlY2ltYWwrIiIsaT1uLm51bWVyYWxzPT09dm9pZCAwP1RlOlB0KENlLmNhbGwobi5udW1lcmFscyxTdHJpbmcpKSxhPW4ucGVyY2VudD09PXZvaWQgMD8iJSI6bi5wZXJjZW50KyIiLHU9bi5taW51cz09PXZvaWQgMD8i4oiSIjpuLm1pbnVzKyIiLGw9bi5uYW49PT12b2lkIDA/Ik5hTiI6bi5uYW4rIiI7ZnVuY3Rpb24gZihtKXttPUhuKG0pO3ZhciBwPW0uZmlsbCxVPW0uYWxpZ24saz1tLnNpZ24sUj1tLnN5bWJvbCxZPW0uemVybyxxPW0ud2lkdGgsRT1tLmNvbW1hLCQ9bS5wcmVjaXNpb24sVz1tLnRyaW0saD1tLnR5cGU7aD09PSJuIj8oRT0hMCxoPSJnIik6dmVbaF18fCgkPT09dm9pZCAwJiYoJD0xMiksVz0hMCxoPSJnIiksKFl8fHA9PT0iMCImJlU9PT0iPSIpJiYoWT0hMCxwPSIwIixVPSI9Iik7dmFyIGM9Uj09PSIkIj90OlI9PT0iIyImJi9bYm94WF0vLnRlc3QoaCk/IjAiK2gudG9Mb3dlckNhc2UoKToiIix4PVI9PT0iJCI/cjovWyVwXS8udGVzdChoKT9hOiIiLHc9dmVbaF0sTj0vW2RlZmdwcnMlXS8udGVzdChoKTskPSQ9PT12b2lkIDA/NjovW2dwcnNdLy50ZXN0KGgpP01hdGgubWF4KDEsTWF0aC5taW4oMjEsJCkpOk1hdGgubWF4KDAsTWF0aC5taW4oMjAsJCkpO2Z1bmN0aW9uIHYoeSl7dmFyIEM9YyxTPXgsRixsbixobjtpZihoPT09ImMiKVM9dyh5KStTLHk9IiI7ZWxzZXt5PSt5O3ZhciBnbj15PDB8fDEveTwwO2lmKHk9aXNOYU4oeSk/bDp3KE1hdGguYWJzKHkpLCQpLFcmJih5PVd0KHkpKSxnbiYmK3k9PTAmJmshPT0iKyImJihnbj0hMSksQz0oZ24/az09PSIoIj9rOnU6az09PSItInx8az09PSIoIj8iIjprKStDLFM9KGg9PT0icyI/TmVbOCtNZS8zXToiIikrUysoZ24mJms9PT0iKCI/IikiOiIiKSxOKXtmb3IoRj0tMSxsbj15Lmxlbmd0aDsrK0Y8bG47KWlmKGhuPXkuY2hhckNvZGVBdChGKSw0OD5obnx8aG4+NTcpe1M9KGhuPT09NDY/byt5LnNsaWNlKEYrMSk6eS5zbGljZShGKSkrUyx5PXkuc2xpY2UoMCxGKTticmVha319fUUmJiFZJiYoeT1lKHksMS8wKSk7dmFyIG1uPUMubGVuZ3RoK3kubGVuZ3RoK1MubGVuZ3RoLGo9bW48cT9uZXcgQXJyYXkocS1tbisxKS5qb2luKHApOiIiO3N3aXRjaChFJiZZJiYoeT1lKGoreSxqLmxlbmd0aD9xLVMubGVuZ3RoOjEvMCksaj0iIiksVSl7Y2FzZSI8Ijp5PUMreStTK2o7YnJlYWs7Y2FzZSI9Ijp5PUMrait5K1M7YnJlYWs7Y2FzZSJeIjp5PWouc2xpY2UoMCxtbj1qLmxlbmd0aD4+MSkrQyt5K1Mrai5zbGljZShtbik7YnJlYWs7ZGVmYXVsdDp5PWorQyt5K1M7YnJlYWt9cmV0dXJuIGkoeSl9cmV0dXJuIHYudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gbSsiIn0sdn1mdW5jdGlvbiBnKG0scCl7dmFyIFU9ZigobT1IbihtKSxtLnR5cGU9ImYiLG0pKSxrPU1hdGgubWF4KC04LE1hdGgubWluKDgsTWF0aC5mbG9vcihvbihwKS8zKSkpKjMsUj1NYXRoLnBvdygxMCwtayksWT1OZVs4K2svM107cmV0dXJuIGZ1bmN0aW9uKHEpe3JldHVybiBVKFIqcSkrWX19cmV0dXJue2Zvcm1hdDpmLGZvcm1hdFByZWZpeDpnfX12YXIgTG4sRGUsVWU7SXQoe3Rob3VzYW5kczoiLCIsZ3JvdXBpbmc6WzNdLGN1cnJlbmN5OlsiJCIsIiJdfSk7ZnVuY3Rpb24gSXQobil7cmV0dXJuIExuPVJ0KG4pLERlPUxuLmZvcm1hdCxVZT1Mbi5mb3JtYXRQcmVmaXgsTG59ZnVuY3Rpb24gT3Qobil7cmV0dXJuIE1hdGgubWF4KDAsLW9uKE1hdGguYWJzKG4pKSl9ZnVuY3Rpb24genQobixlKXtyZXR1cm4gTWF0aC5tYXgoMCxNYXRoLm1heCgtOCxNYXRoLm1pbig4LE1hdGguZmxvb3Iob24oZSkvMykpKSozLW9uKE1hdGguYWJzKG4pKSl9ZnVuY3Rpb24gRXQobixlKXtyZXR1cm4gbj1NYXRoLmFicyhuKSxlPU1hdGguYWJzKGUpLW4sTWF0aC5tYXgoMCxvbihlKS1vbihuKSkrMX1mdW5jdGlvbiBrZShuLGUpe3N3aXRjaChhcmd1bWVudHMubGVuZ3RoKXtjYXNlIDA6YnJlYWs7Y2FzZSAxOnRoaXMucmFuZ2Uobik7YnJlYWs7ZGVmYXVsdDp0aGlzLnJhbmdlKGUpLmRvbWFpbihuKTticmVha31yZXR1cm4gdGhpc31mdW5jdGlvbiBfdChuKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbn19ZnVuY3Rpb24gcXQobil7cmV0dXJuK259dmFyIFNlPVswLDFdO2Z1bmN0aW9uIGFuKG4pe3JldHVybiBufWZ1bmN0aW9uIEJuKG4sZSl7cmV0dXJuKGUtPW49K24pP2Z1bmN0aW9uKHQpe3JldHVybih0LW4pL2V9Ol90KGlzTmFOKGUpP05hTjouNSl9ZnVuY3Rpb24ganQobixlKXt2YXIgdDtyZXR1cm4gbj5lJiYodD1uLG49ZSxlPXQpLGZ1bmN0aW9uKHIpe3JldHVybiBNYXRoLm1heChuLE1hdGgubWluKGUscikpfX1mdW5jdGlvbiBadChuLGUsdCl7dmFyIHI9blswXSxvPW5bMV0saT1lWzBdLGE9ZVsxXTtyZXR1cm4gbzxyPyhyPUJuKG8sciksaT10KGEsaSkpOihyPUJuKHIsbyksaT10KGksYSkpLGZ1bmN0aW9uKHUpe3JldHVybiBpKHIodSkpfX1mdW5jdGlvbiBWdChuLGUsdCl7dmFyIHI9TWF0aC5taW4obi5sZW5ndGgsZS5sZW5ndGgpLTEsbz1uZXcgQXJyYXkociksaT1uZXcgQXJyYXkociksYT0tMTtmb3IobltyXTxuWzBdJiYobj1uLnNsaWNlKCkucmV2ZXJzZSgpLGU9ZS5zbGljZSgpLnJldmVyc2UoKSk7KythPHI7KW9bYV09Qm4oblthXSxuW2ErMV0pLGlbYV09dChlW2FdLGVbYSsxXSk7cmV0dXJuIGZ1bmN0aW9uKHUpe3ZhciBsPXJ0KG4sdSwxLHIpLTE7cmV0dXJuIGlbbF0ob1tsXSh1KSl9fWZ1bmN0aW9uICRlKG4sZSl7cmV0dXJuIGUuZG9tYWluKG4uZG9tYWluKCkpLnJhbmdlKG4ucmFuZ2UoKSkuaW50ZXJwb2xhdGUobi5pbnRlcnBvbGF0ZSgpKS5jbGFtcChuLmNsYW1wKCkpLnVua25vd24obi51bmtub3duKCkpfWZ1bmN0aW9uIFh0KCl7dmFyIG49U2UsZT1TZSx0PVZuLHIsbyxpLGE9YW4sdSxsLGY7ZnVuY3Rpb24gZygpe3ZhciBwPU1hdGgubWluKG4ubGVuZ3RoLGUubGVuZ3RoKTtyZXR1cm4gYSE9PWFuJiYoYT1qdChuWzBdLG5bcC0xXSkpLHU9cD4yP1Z0Olp0LGw9Zj1udWxsLG19ZnVuY3Rpb24gbShwKXtyZXR1cm4gcD09bnVsbHx8aXNOYU4ocD0rcCk/aToobHx8KGw9dShuLm1hcChyKSxlLHQpKSkocihhKHApKSl9cmV0dXJuIG0uaW52ZXJ0PWZ1bmN0aW9uKHApe3JldHVybiBhKG8oKGZ8fChmPXUoZSxuLm1hcChyKSwkbikpKShwKSkpfSxtLmRvbWFpbj1mdW5jdGlvbihwKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1BcnJheS5mcm9tKHAscXQpLGcoKSk6bi5zbGljZSgpfSxtLnJhbmdlPWZ1bmN0aW9uKHApe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPUFycmF5LmZyb20ocCksZygpKTplLnNsaWNlKCl9LG0ucmFuZ2VSb3VuZD1mdW5jdGlvbihwKXtyZXR1cm4gZT1BcnJheS5mcm9tKHApLHQ9RnQsZygpfSxtLmNsYW1wPWZ1bmN0aW9uKHApe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPXA/ITA6YW4sZygpKTphIT09YW59LG0uaW50ZXJwb2xhdGU9ZnVuY3Rpb24ocCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9cCxnKCkpOnR9LG0udW5rbm93bj1mdW5jdGlvbihwKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT1wLG0pOml9LGZ1bmN0aW9uKHAsVSl7cmV0dXJuIHI9cCxvPVUsZygpfX1mdW5jdGlvbiBGZSgpe3JldHVybiBYdCgpKGFuLGFuKX1mdW5jdGlvbiBCdChuLGUsdCxyKXt2YXIgbz1PbihuLGUsdCksaTtzd2l0Y2gocj1IbihyPz8iLGYiKSxyLnR5cGUpe2Nhc2UicyI6e3ZhciBhPU1hdGgubWF4KE1hdGguYWJzKG4pLE1hdGguYWJzKGUpKTtyZXR1cm4gci5wcmVjaXNpb249PW51bGwmJiFpc05hTihpPXp0KG8sYSkpJiYoci5wcmVjaXNpb249aSksVWUocixhKX1jYXNlIiI6Y2FzZSJlIjpjYXNlImciOmNhc2UicCI6Y2FzZSJyIjp7ci5wcmVjaXNpb249PW51bGwmJiFpc05hTihpPUV0KG8sTWF0aC5tYXgoTWF0aC5hYnMobiksTWF0aC5hYnMoZSkpKSkmJihyLnByZWNpc2lvbj1pLShyLnR5cGU9PT0iZSIpKTticmVha31jYXNlImYiOmNhc2UiJSI6e3IucHJlY2lzaW9uPT1udWxsJiYhaXNOYU4oaT1PdChvKSkmJihyLnByZWNpc2lvbj1pLShyLnR5cGU9PT0iJSIpKjIpO2JyZWFrfX1yZXR1cm4gRGUocil9ZnVuY3Rpb24gUXQobil7dmFyIGU9bi5kb21haW47cmV0dXJuIG4udGlja3M9ZnVuY3Rpb24odCl7dmFyIHI9ZSgpO3JldHVybiB1dChyWzBdLHJbci5sZW5ndGgtMV0sdD8/MTApfSxuLnRpY2tGb3JtYXQ9ZnVuY3Rpb24odCxyKXt2YXIgbz1lKCk7cmV0dXJuIEJ0KG9bMF0sb1tvLmxlbmd0aC0xXSx0Pz8xMCxyKX0sbi5uaWNlPWZ1bmN0aW9uKHQpe3Q9PW51bGwmJih0PTEwKTt2YXIgcj1lKCksbz0wLGk9ci5sZW5ndGgtMSxhPXJbb10sdT1yW2ldLGwsZixnPTEwO2Zvcih1PGEmJihmPWEsYT11LHU9ZixmPW8sbz1pLGk9Zik7Zy0tID4wOyl7aWYoZj1JbihhLHUsdCksZj09PWwpcmV0dXJuIHJbb109YSxyW2ldPXUsZShyKTtpZihmPjApYT1NYXRoLmZsb29yKGEvZikqZix1PU1hdGguY2VpbCh1L2YpKmY7ZWxzZSBpZihmPDApYT1NYXRoLmNlaWwoYSpmKS9mLHU9TWF0aC5mbG9vcih1KmYpL2Y7ZWxzZSBicmVhaztsPWZ9cmV0dXJuIG59LG59ZnVuY3Rpb24gSGUoKXt2YXIgbj1GZSgpO3JldHVybiBuLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gJGUobixIZSgpKX0sa2UuYXBwbHkobixhcmd1bWVudHMpLFF0KG4pfWZ1bmN0aW9uIEd0KG4sZSl7bj1uLnNsaWNlKCk7dmFyIHQ9MCxyPW4ubGVuZ3RoLTEsbz1uW3RdLGk9bltyXSxhO3JldHVybiBpPG8mJihhPXQsdD1yLHI9YSxhPW8sbz1pLGk9YSksblt0XT1lLmZsb29yKG8pLG5bcl09ZS5jZWlsKGkpLG59Y29uc3QgUW49bmV3IERhdGUsR249bmV3IERhdGU7ZnVuY3Rpb24gSChuLGUsdCxyKXtmdW5jdGlvbiBvKGkpe3JldHVybiBuKGk9YXJndW1lbnRzLmxlbmd0aD09PTA/bmV3IERhdGU6bmV3IERhdGUoK2kpKSxpfXJldHVybiBvLmZsb29yPWk9PihuKGk9bmV3IERhdGUoK2kpKSxpKSxvLmNlaWw9aT0+KG4oaT1uZXcgRGF0ZShpLTEpKSxlKGksMSksbihpKSxpKSxvLnJvdW5kPWk9Pntjb25zdCBhPW8oaSksdT1vLmNlaWwoaSk7cmV0dXJuIGktYTx1LWk/YTp1fSxvLm9mZnNldD0oaSxhKT0+KGUoaT1uZXcgRGF0ZSgraSksYT09bnVsbD8xOk1hdGguZmxvb3IoYSkpLGkpLG8ucmFuZ2U9KGksYSx1KT0+e2NvbnN0IGw9W107aWYoaT1vLmNlaWwoaSksdT11PT1udWxsPzE6TWF0aC5mbG9vcih1KSwhKGk8YSl8fCEodT4wKSlyZXR1cm4gbDtsZXQgZjtkbyBsLnB1c2goZj1uZXcgRGF0ZSgraSkpLGUoaSx1KSxuKGkpO3doaWxlKGY8aSYmaTxhKTtyZXR1cm4gbH0sby5maWx0ZXI9aT0+SChhPT57aWYoYT49YSlmb3IoO24oYSksIWkoYSk7KWEuc2V0VGltZShhLTEpfSwoYSx1KT0+e2lmKGE+PWEpaWYodTwwKWZvcig7Kyt1PD0wOylmb3IoO2UoYSwtMSksIWkoYSk7KTtlbHNlIGZvcig7LS11Pj0wOylmb3IoO2UoYSwxKSwhaShhKTspO30pLHQmJihvLmNvdW50PShpLGEpPT4oUW4uc2V0VGltZSgraSksR24uc2V0VGltZSgrYSksbihRbiksbihHbiksTWF0aC5mbG9vcih0KFFuLEduKSkpLG8uZXZlcnk9aT0+KGk9TWF0aC5mbG9vcihpKSwhaXNGaW5pdGUoaSl8fCEoaT4wKT9udWxsOmk+MT9vLmZpbHRlcihyP2E9PnIoYSklaT09PTA6YT0+by5jb3VudCgwLGEpJWk9PT0wKTpvKSksb31jb25zdCBQbj1IKCgpPT57fSwobixlKT0+e24uc2V0VGltZSgrbitlKX0sKG4sZSk9PmUtbik7UG4uZXZlcnk9bj0+KG49TWF0aC5mbG9vcihuKSwhaXNGaW5pdGUobil8fCEobj4wKT9udWxsOm4+MT9IKGU9PntlLnNldFRpbWUoTWF0aC5mbG9vcihlL24pKm4pfSwoZSx0KT0+e2Uuc2V0VGltZSgrZSt0Km4pfSwoZSx0KT0+KHQtZSkvbik6UG4pLFBuLnJhbmdlO2NvbnN0IFY9MWUzLHo9Vio2MCxYPXoqNjAsQj1YKjI0LEpuPUIqNyxMZT1CKjMwLEtuPUIqMzY1LHVuPUgobj0+e24uc2V0VGltZShuLW4uZ2V0TWlsbGlzZWNvbmRzKCkpfSwobixlKT0+e24uc2V0VGltZSgrbitlKlYpfSwobixlKT0+KGUtbikvVixuPT5uLmdldFVUQ1NlY29uZHMoKSk7dW4ucmFuZ2U7Y29uc3QgbmU9SChuPT57bi5zZXRUaW1lKG4tbi5nZXRNaWxsaXNlY29uZHMoKS1uLmdldFNlY29uZHMoKSpWKX0sKG4sZSk9PntuLnNldFRpbWUoK24rZSp6KX0sKG4sZSk9PihlLW4pL3osbj0+bi5nZXRNaW51dGVzKCkpO25lLnJhbmdlLEgobj0+e24uc2V0VVRDU2Vjb25kcygwLDApfSwobixlKT0+e24uc2V0VGltZSgrbitlKnopfSwobixlKT0+KGUtbikveixuPT5uLmdldFVUQ01pbnV0ZXMoKSkucmFuZ2U7Y29uc3QgZWU9SChuPT57bi5zZXRUaW1lKG4tbi5nZXRNaWxsaXNlY29uZHMoKS1uLmdldFNlY29uZHMoKSpWLW4uZ2V0TWludXRlcygpKnopfSwobixlKT0+e24uc2V0VGltZSgrbitlKlgpfSwobixlKT0+KGUtbikvWCxuPT5uLmdldEhvdXJzKCkpO2VlLnJhbmdlLEgobj0+e24uc2V0VVRDTWludXRlcygwLDAsMCl9LChuLGUpPT57bi5zZXRUaW1lKCtuK2UqWCl9LChuLGUpPT4oZS1uKS9YLG49Pm4uZ2V0VVRDSG91cnMoKSkucmFuZ2U7Y29uc3Qgd249SChuPT5uLnNldEhvdXJzKDAsMCwwLDApLChuLGUpPT5uLnNldERhdGUobi5nZXREYXRlKCkrZSksKG4sZSk9PihlLW4tKGUuZ2V0VGltZXpvbmVPZmZzZXQoKS1uLmdldFRpbWV6b25lT2Zmc2V0KCkpKnopL0Isbj0+bi5nZXREYXRlKCktMSk7d24ucmFuZ2U7Y29uc3QgdGU9SChuPT57bi5zZXRVVENIb3VycygwLDAsMCwwKX0sKG4sZSk9PntuLnNldFVUQ0RhdGUobi5nZXRVVENEYXRlKCkrZSl9LChuLGUpPT4oZS1uKS9CLG49Pm4uZ2V0VVRDRGF0ZSgpLTEpO3RlLnJhbmdlLEgobj0+e24uc2V0VVRDSG91cnMoMCwwLDAsMCl9LChuLGUpPT57bi5zZXRVVENEYXRlKG4uZ2V0VVRDRGF0ZSgpK2UpfSwobixlKT0+KGUtbikvQixuPT5NYXRoLmZsb29yKG4vQikpLnJhbmdlO2Z1bmN0aW9uIEsobil7cmV0dXJuIEgoZT0+e2Uuc2V0RGF0ZShlLmdldERhdGUoKS0oZS5nZXREYXkoKSs3LW4pJTcpLGUuc2V0SG91cnMoMCwwLDAsMCl9LChlLHQpPT57ZS5zZXREYXRlKGUuZ2V0RGF0ZSgpK3QqNyl9LChlLHQpPT4odC1lLSh0LmdldFRpbWV6b25lT2Zmc2V0KCktZS5nZXRUaW1lem9uZU9mZnNldCgpKSp6KS9Kbil9Y29uc3QgWW49SygwKSxXbj1LKDEpLEp0PUsoMiksS3Q9SygzKSxmbj1LKDQpLG5yPUsoNSksZXI9Syg2KTtZbi5yYW5nZSxXbi5yYW5nZSxKdC5yYW5nZSxLdC5yYW5nZSxmbi5yYW5nZSxuci5yYW5nZSxlci5yYW5nZTtmdW5jdGlvbiBubihuKXtyZXR1cm4gSChlPT57ZS5zZXRVVENEYXRlKGUuZ2V0VVRDRGF0ZSgpLShlLmdldFVUQ0RheSgpKzctbiklNyksZS5zZXRVVENIb3VycygwLDAsMCwwKX0sKGUsdCk9PntlLnNldFVUQ0RhdGUoZS5nZXRVVENEYXRlKCkrdCo3KX0sKGUsdCk9Pih0LWUpL0puKX1jb25zdCBQZT1ubigwKSxBbj1ubigxKSx0cj1ubigyKSxycj1ubigzKSxjbj1ubig0KSxvcj1ubig1KSxpcj1ubig2KTtQZS5yYW5nZSxBbi5yYW5nZSx0ci5yYW5nZSxyci5yYW5nZSxjbi5yYW5nZSxvci5yYW5nZSxpci5yYW5nZTtjb25zdCByZT1IKG49PntuLnNldERhdGUoMSksbi5zZXRIb3VycygwLDAsMCwwKX0sKG4sZSk9PntuLnNldE1vbnRoKG4uZ2V0TW9udGgoKStlKX0sKG4sZSk9PmUuZ2V0TW9udGgoKS1uLmdldE1vbnRoKCkrKGUuZ2V0RnVsbFllYXIoKS1uLmdldEZ1bGxZZWFyKCkpKjEyLG49Pm4uZ2V0TW9udGgoKSk7cmUucmFuZ2UsSChuPT57bi5zZXRVVENEYXRlKDEpLG4uc2V0VVRDSG91cnMoMCwwLDAsMCl9LChuLGUpPT57bi5zZXRVVENNb250aChuLmdldFVUQ01vbnRoKCkrZSl9LChuLGUpPT5lLmdldFVUQ01vbnRoKCktbi5nZXRVVENNb250aCgpKyhlLmdldFVUQ0Z1bGxZZWFyKCktbi5nZXRVVENGdWxsWWVhcigpKSoxMixuPT5uLmdldFVUQ01vbnRoKCkpLnJhbmdlO2NvbnN0IFE9SChuPT57bi5zZXRNb250aCgwLDEpLG4uc2V0SG91cnMoMCwwLDAsMCl9LChuLGUpPT57bi5zZXRGdWxsWWVhcihuLmdldEZ1bGxZZWFyKCkrZSl9LChuLGUpPT5lLmdldEZ1bGxZZWFyKCktbi5nZXRGdWxsWWVhcigpLG49Pm4uZ2V0RnVsbFllYXIoKSk7US5ldmVyeT1uPT4haXNGaW5pdGUobj1NYXRoLmZsb29yKG4pKXx8IShuPjApP251bGw6SChlPT57ZS5zZXRGdWxsWWVhcihNYXRoLmZsb29yKGUuZ2V0RnVsbFllYXIoKS9uKSpuKSxlLnNldE1vbnRoKDAsMSksZS5zZXRIb3VycygwLDAsMCwwKX0sKGUsdCk9PntlLnNldEZ1bGxZZWFyKGUuZ2V0RnVsbFllYXIoKSt0Km4pfSksUS5yYW5nZTtjb25zdCBlbj1IKG49PntuLnNldFVUQ01vbnRoKDAsMSksbi5zZXRVVENIb3VycygwLDAsMCwwKX0sKG4sZSk9PntuLnNldFVUQ0Z1bGxZZWFyKG4uZ2V0VVRDRnVsbFllYXIoKStlKX0sKG4sZSk9PmUuZ2V0VVRDRnVsbFllYXIoKS1uLmdldFVUQ0Z1bGxZZWFyKCksbj0+bi5nZXRVVENGdWxsWWVhcigpKTtlbi5ldmVyeT1uPT4haXNGaW5pdGUobj1NYXRoLmZsb29yKG4pKXx8IShuPjApP251bGw6SChlPT57ZS5zZXRVVENGdWxsWWVhcihNYXRoLmZsb29yKGUuZ2V0VVRDRnVsbFllYXIoKS9uKSpuKSxlLnNldFVUQ01vbnRoKDAsMSksZS5zZXRVVENIb3VycygwLDAsMCwwKX0sKGUsdCk9PntlLnNldFVUQ0Z1bGxZZWFyKGUuZ2V0VVRDRnVsbFllYXIoKSt0Km4pfSksZW4ucmFuZ2U7ZnVuY3Rpb24gYXIobixlLHQscixvLGkpe2NvbnN0IGE9W1t1biwxLFZdLFt1biw1LDUqVl0sW3VuLDE1LDE1KlZdLFt1biwzMCwzMCpWXSxbaSwxLHpdLFtpLDUsNSp6XSxbaSwxNSwxNSp6XSxbaSwzMCwzMCp6XSxbbywxLFhdLFtvLDMsMypYXSxbbyw2LDYqWF0sW28sMTIsMTIqWF0sW3IsMSxCXSxbciwyLDIqQl0sW3QsMSxKbl0sW2UsMSxMZV0sW2UsMywzKkxlXSxbbiwxLEtuXV07ZnVuY3Rpb24gdShmLGcsbSl7Y29uc3QgcD1nPGY7cCYmKFtmLGddPVtnLGZdKTtjb25zdCBVPW0mJnR5cGVvZiBtLnJhbmdlPT0iZnVuY3Rpb24iP206bChmLGcsbSksaz1VP1UucmFuZ2UoZiwrZysxKTpbXTtyZXR1cm4gcD9rLnJldmVyc2UoKTprfWZ1bmN0aW9uIGwoZixnLG0pe2NvbnN0IHA9TWF0aC5hYnMoZy1mKS9tLFU9Um4oKFssLFldKT0+WSkucmlnaHQoYSxwKTtpZihVPT09YS5sZW5ndGgpcmV0dXJuIG4uZXZlcnkoT24oZi9LbixnL0tuLG0pKTtpZihVPT09MClyZXR1cm4gUG4uZXZlcnkoTWF0aC5tYXgoT24oZixnLG0pLDEpKTtjb25zdFtrLFJdPWFbcC9hW1UtMV1bMl08YVtVXVsyXS9wP1UtMTpVXTtyZXR1cm4gay5ldmVyeShSKX1yZXR1cm5bdSxsXX1jb25zdFt1cixmcl09YXIoUSxyZSxZbix3bixlZSxuZSk7ZnVuY3Rpb24gb2Uobil7aWYoMDw9bi55JiZuLnk8MTAwKXt2YXIgZT1uZXcgRGF0ZSgtMSxuLm0sbi5kLG4uSCxuLk0sbi5TLG4uTCk7cmV0dXJuIGUuc2V0RnVsbFllYXIobi55KSxlfXJldHVybiBuZXcgRGF0ZShuLnksbi5tLG4uZCxuLkgsbi5NLG4uUyxuLkwpfWZ1bmN0aW9uIGllKG4pe2lmKDA8PW4ueSYmbi55PDEwMCl7dmFyIGU9bmV3IERhdGUoRGF0ZS5VVEMoLTEsbi5tLG4uZCxuLkgsbi5NLG4uUyxuLkwpKTtyZXR1cm4gZS5zZXRVVENGdWxsWWVhcihuLnkpLGV9cmV0dXJuIG5ldyBEYXRlKERhdGUuVVRDKG4ueSxuLm0sbi5kLG4uSCxuLk0sbi5TLG4uTCkpfWZ1bmN0aW9uIE1uKG4sZSx0KXtyZXR1cm57eTpuLG06ZSxkOnQsSDowLE06MCxTOjAsTDowfX1mdW5jdGlvbiBjcihuKXt2YXIgZT1uLmRhdGVUaW1lLHQ9bi5kYXRlLHI9bi50aW1lLG89bi5wZXJpb2RzLGk9bi5kYXlzLGE9bi5zaG9ydERheXMsdT1uLm1vbnRocyxsPW4uc2hvcnRNb250aHMsZj1ibihvKSxnPXZuKG8pLG09Ym4oaSkscD12bihpKSxVPWJuKGEpLGs9dm4oYSksUj1ibih1KSxZPXZuKHUpLHE9Ym4obCksRT12bihsKSwkPXthOmduLEE6bW4sYjpqLEI6U28sYzpudWxsLGQ6T2UsZTpPZSxmOkhyLGc6RXIsRzpxcixIOlNyLEk6JHIsajpGcixMOnplLG06THIsTTpQcixwOiRvLHE6Rm8sUTpWZSxzOlhlLFM6WXIsdTpXcixVOkFyLFY6UnIsdzpJcixXOk9yLHg6bnVsbCxYOm51bGwseTp6cixZOl9yLFo6anIsIiUiOlplfSxXPXthOkhvLEE6TG8sYjpQbyxCOllvLGM6bnVsbCxkOl9lLGU6X2UsZjpCcixnOmlvLEc6dW8sSDpacixJOlZyLGo6WHIsTDpxZSxtOlFyLE06R3IscDpXbyxxOkFvLFE6VmUsczpYZSxTOkpyLHU6S3IsVTpubyxWOmVvLHc6dG8sVzpybyx4Om51bGwsWDpudWxsLHk6b28sWTphbyxaOmZvLCIlIjpaZX0saD17YTp2LEE6eSxiOkMsQjpTLGM6RixkOlJlLGU6UmUsZjpOcixnOkFlLEc6V2UsSDpJZSxJOkllLGo6YnIsTDpDcixtOk1yLE06dnIscDpOLHE6d3IsUTpVcixzOmtyLFM6VHIsdTptcixVOmRyLFY6eXIsdzpncixXOnhyLHg6bG4sWDpobix5OkFlLFk6V2UsWjpwciwiJSI6RHJ9OyQueD1jKHQsJCksJC5YPWMociwkKSwkLmM9YyhlLCQpLFcueD1jKHQsVyksVy5YPWMocixXKSxXLmM9YyhlLFcpO2Z1bmN0aW9uIGMoZCxNKXtyZXR1cm4gZnVuY3Rpb24oVCl7dmFyIHM9W10sQT0tMSxEPTAsST1kLmxlbmd0aCxPLHRuLEplO2ZvcihUIGluc3RhbmNlb2YgRGF0ZXx8KFQ9bmV3IERhdGUoK1QpKTsrK0E8STspZC5jaGFyQ29kZUF0KEEpPT09MzcmJihzLnB1c2goZC5zbGljZShELEEpKSwodG49WWVbTz1kLmNoYXJBdCgrK0EpXSkhPW51bGw/Tz1kLmNoYXJBdCgrK0EpOnRuPU89PT0iZSI/IiAiOiIwIiwoSmU9TVtPXSkmJihPPUplKFQsdG4pKSxzLnB1c2goTyksRD1BKzEpO3JldHVybiBzLnB1c2goZC5zbGljZShELEEpKSxzLmpvaW4oIiIpfX1mdW5jdGlvbiB4KGQsTSl7cmV0dXJuIGZ1bmN0aW9uKFQpe3ZhciBzPU1uKDE5MDAsdm9pZCAwLDEpLEE9dyhzLGQsVCs9IiIsMCksRCxJO2lmKEEhPVQubGVuZ3RoKXJldHVybiBudWxsO2lmKCJRImluIHMpcmV0dXJuIG5ldyBEYXRlKHMuUSk7aWYoInMiaW4gcylyZXR1cm4gbmV3IERhdGUocy5zKjFlMysoIkwiaW4gcz9zLkw6MCkpO2lmKE0mJiEoIloiaW4gcykmJihzLlo9MCksInAiaW4gcyYmKHMuSD1zLkglMTIrcy5wKjEyKSxzLm09PT12b2lkIDAmJihzLm09InEiaW4gcz9zLnE6MCksIlYiaW4gcyl7aWYocy5WPDF8fHMuVj41MylyZXR1cm4gbnVsbDsidyJpbiBzfHwocy53PTEpLCJaImluIHM/KEQ9aWUoTW4ocy55LDAsMSkpLEk9RC5nZXRVVENEYXkoKSxEPUk+NHx8ST09PTA/QW4uY2VpbChEKTpBbihEKSxEPXRlLm9mZnNldChELChzLlYtMSkqNykscy55PUQuZ2V0VVRDRnVsbFllYXIoKSxzLm09RC5nZXRVVENNb250aCgpLHMuZD1ELmdldFVUQ0RhdGUoKSsocy53KzYpJTcpOihEPW9lKE1uKHMueSwwLDEpKSxJPUQuZ2V0RGF5KCksRD1JPjR8fEk9PT0wP1duLmNlaWwoRCk6V24oRCksRD13bi5vZmZzZXQoRCwocy5WLTEpKjcpLHMueT1ELmdldEZ1bGxZZWFyKCkscy5tPUQuZ2V0TW9udGgoKSxzLmQ9RC5nZXREYXRlKCkrKHMudys2KSU3KX1lbHNlKCJXImluIHN8fCJVImluIHMpJiYoInciaW4gc3x8KHMudz0idSJpbiBzP3MudSU3OiJXImluIHM/MTowKSxJPSJaImluIHM/aWUoTW4ocy55LDAsMSkpLmdldFVUQ0RheSgpOm9lKE1uKHMueSwwLDEpKS5nZXREYXkoKSxzLm09MCxzLmQ9IlciaW4gcz8ocy53KzYpJTcrcy5XKjctKEkrNSklNzpzLncrcy5VKjctKEkrNiklNyk7cmV0dXJuIloiaW4gcz8ocy5IKz1zLlovMTAwfDAscy5NKz1zLlolMTAwLGllKHMpKTpvZShzKX19ZnVuY3Rpb24gdyhkLE0sVCxzKXtmb3IodmFyIEE9MCxEPU0ubGVuZ3RoLEk9VC5sZW5ndGgsTyx0bjtBPEQ7KXtpZihzPj1JKXJldHVybi0xO2lmKE89TS5jaGFyQ29kZUF0KEErKyksTz09PTM3KXtpZihPPU0uY2hhckF0KEErKyksdG49aFtPIGluIFllP00uY2hhckF0KEErKyk6T10sIXRufHwocz10bihkLFQscykpPDApcmV0dXJuLTF9ZWxzZSBpZihPIT1ULmNoYXJDb2RlQXQocysrKSlyZXR1cm4tMX1yZXR1cm4gc31mdW5jdGlvbiBOKGQsTSxUKXt2YXIgcz1mLmV4ZWMoTS5zbGljZShUKSk7cmV0dXJuIHM/KGQucD1nLmdldChzWzBdLnRvTG93ZXJDYXNlKCkpLFQrc1swXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIHYoZCxNLFQpe3ZhciBzPVUuZXhlYyhNLnNsaWNlKFQpKTtyZXR1cm4gcz8oZC53PWsuZ2V0KHNbMF0udG9Mb3dlckNhc2UoKSksVCtzWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24geShkLE0sVCl7dmFyIHM9bS5leGVjKE0uc2xpY2UoVCkpO3JldHVybiBzPyhkLnc9cC5nZXQoc1swXS50b0xvd2VyQ2FzZSgpKSxUK3NbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBDKGQsTSxUKXt2YXIgcz1xLmV4ZWMoTS5zbGljZShUKSk7cmV0dXJuIHM/KGQubT1FLmdldChzWzBdLnRvTG93ZXJDYXNlKCkpLFQrc1swXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFMoZCxNLFQpe3ZhciBzPVIuZXhlYyhNLnNsaWNlKFQpKTtyZXR1cm4gcz8oZC5tPVkuZ2V0KHNbMF0udG9Mb3dlckNhc2UoKSksVCtzWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gRihkLE0sVCl7cmV0dXJuIHcoZCxlLE0sVCl9ZnVuY3Rpb24gbG4oZCxNLFQpe3JldHVybiB3KGQsdCxNLFQpfWZ1bmN0aW9uIGhuKGQsTSxUKXtyZXR1cm4gdyhkLHIsTSxUKX1mdW5jdGlvbiBnbihkKXtyZXR1cm4gYVtkLmdldERheSgpXX1mdW5jdGlvbiBtbihkKXtyZXR1cm4gaVtkLmdldERheSgpXX1mdW5jdGlvbiBqKGQpe3JldHVybiBsW2QuZ2V0TW9udGgoKV19ZnVuY3Rpb24gU28oZCl7cmV0dXJuIHVbZC5nZXRNb250aCgpXX1mdW5jdGlvbiAkbyhkKXtyZXR1cm4gb1srKGQuZ2V0SG91cnMoKT49MTIpXX1mdW5jdGlvbiBGbyhkKXtyZXR1cm4gMSt+fihkLmdldE1vbnRoKCkvMyl9ZnVuY3Rpb24gSG8oZCl7cmV0dXJuIGFbZC5nZXRVVENEYXkoKV19ZnVuY3Rpb24gTG8oZCl7cmV0dXJuIGlbZC5nZXRVVENEYXkoKV19ZnVuY3Rpb24gUG8oZCl7cmV0dXJuIGxbZC5nZXRVVENNb250aCgpXX1mdW5jdGlvbiBZbyhkKXtyZXR1cm4gdVtkLmdldFVUQ01vbnRoKCldfWZ1bmN0aW9uIFdvKGQpe3JldHVybiBvWysoZC5nZXRVVENIb3VycygpPj0xMildfWZ1bmN0aW9uIEFvKGQpe3JldHVybiAxK35+KGQuZ2V0VVRDTW9udGgoKS8zKX1yZXR1cm57Zm9ybWF0OmZ1bmN0aW9uKGQpe3ZhciBNPWMoZCs9IiIsJCk7cmV0dXJuIE0udG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gZH0sTX0scGFyc2U6ZnVuY3Rpb24oZCl7dmFyIE09eChkKz0iIiwhMSk7cmV0dXJuIE0udG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gZH0sTX0sdXRjRm9ybWF0OmZ1bmN0aW9uKGQpe3ZhciBNPWMoZCs9IiIsVyk7cmV0dXJuIE0udG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gZH0sTX0sdXRjUGFyc2U6ZnVuY3Rpb24oZCl7dmFyIE09eChkKz0iIiwhMCk7cmV0dXJuIE0udG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gZH0sTX19fXZhciBZZT17Ii0iOiIiLF86IiAiLDA6IjAifSxMPS9eXHMqXGQrLyxzcj0vXiUvLGxyPS9bXFxeJCorP3xbXF0oKS57fV0vZztmdW5jdGlvbiBiKG4sZSx0KXt2YXIgcj1uPDA/Ii0iOiIiLG89KHI/LW46bikrIiIsaT1vLmxlbmd0aDtyZXR1cm4gcisoaTx0P25ldyBBcnJheSh0LWkrMSkuam9pbihlKStvOm8pfWZ1bmN0aW9uIGhyKG4pe3JldHVybiBuLnJlcGxhY2UobHIsIlxcJCYiKX1mdW5jdGlvbiBibihuKXtyZXR1cm4gbmV3IFJlZ0V4cCgiXig/OiIrbi5tYXAoaHIpLmpvaW4oInwiKSsiKSIsImkiKX1mdW5jdGlvbiB2bihuKXtyZXR1cm4gbmV3IE1hcChuLm1hcCgoZSx0KT0+W2UudG9Mb3dlckNhc2UoKSx0XSkpfWZ1bmN0aW9uIGdyKG4sZSx0KXt2YXIgcj1MLmV4ZWMoZS5zbGljZSh0LHQrMSkpO3JldHVybiByPyhuLnc9K3JbMF0sdCtyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gbXIobixlLHQpe3ZhciByPUwuZXhlYyhlLnNsaWNlKHQsdCsxKSk7cmV0dXJuIHI/KG4udT0rclswXSx0K3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBkcihuLGUsdCl7dmFyIHI9TC5leGVjKGUuc2xpY2UodCx0KzIpKTtyZXR1cm4gcj8obi5VPStyWzBdLHQrclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIHlyKG4sZSx0KXt2YXIgcj1MLmV4ZWMoZS5zbGljZSh0LHQrMikpO3JldHVybiByPyhuLlY9K3JbMF0sdCtyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24geHIobixlLHQpe3ZhciByPUwuZXhlYyhlLnNsaWNlKHQsdCsyKSk7cmV0dXJuIHI/KG4uVz0rclswXSx0K3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBXZShuLGUsdCl7dmFyIHI9TC5leGVjKGUuc2xpY2UodCx0KzQpKTtyZXR1cm4gcj8obi55PStyWzBdLHQrclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIEFlKG4sZSx0KXt2YXIgcj1MLmV4ZWMoZS5zbGljZSh0LHQrMikpO3JldHVybiByPyhuLnk9K3JbMF0rKCtyWzBdPjY4PzE5MDA6MmUzKSx0K3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBwcihuLGUsdCl7dmFyIHI9L14oWil8KFsrLV1cZFxkKSg/Ojo/KFxkXGQpKT8vLmV4ZWMoZS5zbGljZSh0LHQrNikpO3JldHVybiByPyhuLlo9clsxXT8wOi0oclsyXSsoclszXXx8IjAwIikpLHQrclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIHdyKG4sZSx0KXt2YXIgcj1MLmV4ZWMoZS5zbGljZSh0LHQrMSkpO3JldHVybiByPyhuLnE9clswXSozLTMsdCtyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gTXIobixlLHQpe3ZhciByPUwuZXhlYyhlLnNsaWNlKHQsdCsyKSk7cmV0dXJuIHI/KG4ubT1yWzBdLTEsdCtyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gUmUobixlLHQpe3ZhciByPUwuZXhlYyhlLnNsaWNlKHQsdCsyKSk7cmV0dXJuIHI/KG4uZD0rclswXSx0K3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBicihuLGUsdCl7dmFyIHI9TC5leGVjKGUuc2xpY2UodCx0KzMpKTtyZXR1cm4gcj8obi5tPTAsbi5kPStyWzBdLHQrclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIEllKG4sZSx0KXt2YXIgcj1MLmV4ZWMoZS5zbGljZSh0LHQrMikpO3JldHVybiByPyhuLkg9K3JbMF0sdCtyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gdnIobixlLHQpe3ZhciByPUwuZXhlYyhlLnNsaWNlKHQsdCsyKSk7cmV0dXJuIHI/KG4uTT0rclswXSx0K3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBUcihuLGUsdCl7dmFyIHI9TC5leGVjKGUuc2xpY2UodCx0KzIpKTtyZXR1cm4gcj8obi5TPStyWzBdLHQrclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIENyKG4sZSx0KXt2YXIgcj1MLmV4ZWMoZS5zbGljZSh0LHQrMykpO3JldHVybiByPyhuLkw9K3JbMF0sdCtyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gTnIobixlLHQpe3ZhciByPUwuZXhlYyhlLnNsaWNlKHQsdCs2KSk7cmV0dXJuIHI/KG4uTD1NYXRoLmZsb29yKHJbMF0vMWUzKSx0K3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBEcihuLGUsdCl7dmFyIHI9c3IuZXhlYyhlLnNsaWNlKHQsdCsxKSk7cmV0dXJuIHI/dCtyWzBdLmxlbmd0aDotMX1mdW5jdGlvbiBVcihuLGUsdCl7dmFyIHI9TC5leGVjKGUuc2xpY2UodCkpO3JldHVybiByPyhuLlE9K3JbMF0sdCtyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24ga3IobixlLHQpe3ZhciByPUwuZXhlYyhlLnNsaWNlKHQpKTtyZXR1cm4gcj8obi5zPStyWzBdLHQrclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIE9lKG4sZSl7cmV0dXJuIGIobi5nZXREYXRlKCksZSwyKX1mdW5jdGlvbiBTcihuLGUpe3JldHVybiBiKG4uZ2V0SG91cnMoKSxlLDIpfWZ1bmN0aW9uICRyKG4sZSl7cmV0dXJuIGIobi5nZXRIb3VycygpJTEyfHwxMixlLDIpfWZ1bmN0aW9uIEZyKG4sZSl7cmV0dXJuIGIoMSt3bi5jb3VudChRKG4pLG4pLGUsMyl9ZnVuY3Rpb24gemUobixlKXtyZXR1cm4gYihuLmdldE1pbGxpc2Vjb25kcygpLGUsMyl9ZnVuY3Rpb24gSHIobixlKXtyZXR1cm4gemUobixlKSsiMDAwIn1mdW5jdGlvbiBMcihuLGUpe3JldHVybiBiKG4uZ2V0TW9udGgoKSsxLGUsMil9ZnVuY3Rpb24gUHIobixlKXtyZXR1cm4gYihuLmdldE1pbnV0ZXMoKSxlLDIpfWZ1bmN0aW9uIFlyKG4sZSl7cmV0dXJuIGIobi5nZXRTZWNvbmRzKCksZSwyKX1mdW5jdGlvbiBXcihuKXt2YXIgZT1uLmdldERheSgpO3JldHVybiBlPT09MD83OmV9ZnVuY3Rpb24gQXIobixlKXtyZXR1cm4gYihZbi5jb3VudChRKG4pLTEsbiksZSwyKX1mdW5jdGlvbiBFZShuKXt2YXIgZT1uLmdldERheSgpO3JldHVybiBlPj00fHxlPT09MD9mbihuKTpmbi5jZWlsKG4pfWZ1bmN0aW9uIFJyKG4sZSl7cmV0dXJuIG49RWUobiksYihmbi5jb3VudChRKG4pLG4pKyhRKG4pLmdldERheSgpPT09NCksZSwyKX1mdW5jdGlvbiBJcihuKXtyZXR1cm4gbi5nZXREYXkoKX1mdW5jdGlvbiBPcihuLGUpe3JldHVybiBiKFduLmNvdW50KFEobiktMSxuKSxlLDIpfWZ1bmN0aW9uIHpyKG4sZSl7cmV0dXJuIGIobi5nZXRGdWxsWWVhcigpJTEwMCxlLDIpfWZ1bmN0aW9uIEVyKG4sZSl7cmV0dXJuIG49RWUobiksYihuLmdldEZ1bGxZZWFyKCklMTAwLGUsMil9ZnVuY3Rpb24gX3IobixlKXtyZXR1cm4gYihuLmdldEZ1bGxZZWFyKCklMWU0LGUsNCl9ZnVuY3Rpb24gcXIobixlKXt2YXIgdD1uLmdldERheSgpO3JldHVybiBuPXQ+PTR8fHQ9PT0wP2ZuKG4pOmZuLmNlaWwobiksYihuLmdldEZ1bGxZZWFyKCklMWU0LGUsNCl9ZnVuY3Rpb24ganIobil7dmFyIGU9bi5nZXRUaW1lem9uZU9mZnNldCgpO3JldHVybihlPjA/Ii0iOihlKj0tMSwiKyIpKStiKGUvNjB8MCwiMCIsMikrYihlJTYwLCIwIiwyKX1mdW5jdGlvbiBfZShuLGUpe3JldHVybiBiKG4uZ2V0VVRDRGF0ZSgpLGUsMil9ZnVuY3Rpb24gWnIobixlKXtyZXR1cm4gYihuLmdldFVUQ0hvdXJzKCksZSwyKX1mdW5jdGlvbiBWcihuLGUpe3JldHVybiBiKG4uZ2V0VVRDSG91cnMoKSUxMnx8MTIsZSwyKX1mdW5jdGlvbiBYcihuLGUpe3JldHVybiBiKDErdGUuY291bnQoZW4obiksbiksZSwzKX1mdW5jdGlvbiBxZShuLGUpe3JldHVybiBiKG4uZ2V0VVRDTWlsbGlzZWNvbmRzKCksZSwzKX1mdW5jdGlvbiBCcihuLGUpe3JldHVybiBxZShuLGUpKyIwMDAifWZ1bmN0aW9uIFFyKG4sZSl7cmV0dXJuIGIobi5nZXRVVENNb250aCgpKzEsZSwyKX1mdW5jdGlvbiBHcihuLGUpe3JldHVybiBiKG4uZ2V0VVRDTWludXRlcygpLGUsMil9ZnVuY3Rpb24gSnIobixlKXtyZXR1cm4gYihuLmdldFVUQ1NlY29uZHMoKSxlLDIpfWZ1bmN0aW9uIEtyKG4pe3ZhciBlPW4uZ2V0VVRDRGF5KCk7cmV0dXJuIGU9PT0wPzc6ZX1mdW5jdGlvbiBubyhuLGUpe3JldHVybiBiKFBlLmNvdW50KGVuKG4pLTEsbiksZSwyKX1mdW5jdGlvbiBqZShuKXt2YXIgZT1uLmdldFVUQ0RheSgpO3JldHVybiBlPj00fHxlPT09MD9jbihuKTpjbi5jZWlsKG4pfWZ1bmN0aW9uIGVvKG4sZSl7cmV0dXJuIG49amUobiksYihjbi5jb3VudChlbihuKSxuKSsoZW4obikuZ2V0VVRDRGF5KCk9PT00KSxlLDIpfWZ1bmN0aW9uIHRvKG4pe3JldHVybiBuLmdldFVUQ0RheSgpfWZ1bmN0aW9uIHJvKG4sZSl7cmV0dXJuIGIoQW4uY291bnQoZW4obiktMSxuKSxlLDIpfWZ1bmN0aW9uIG9vKG4sZSl7cmV0dXJuIGIobi5nZXRVVENGdWxsWWVhcigpJTEwMCxlLDIpfWZ1bmN0aW9uIGlvKG4sZSl7cmV0dXJuIG49amUobiksYihuLmdldFVUQ0Z1bGxZZWFyKCklMTAwLGUsMil9ZnVuY3Rpb24gYW8obixlKXtyZXR1cm4gYihuLmdldFVUQ0Z1bGxZZWFyKCklMWU0LGUsNCl9ZnVuY3Rpb24gdW8obixlKXt2YXIgdD1uLmdldFVUQ0RheSgpO3JldHVybiBuPXQ+PTR8fHQ9PT0wP2NuKG4pOmNuLmNlaWwobiksYihuLmdldFVUQ0Z1bGxZZWFyKCklMWU0LGUsNCl9ZnVuY3Rpb24gZm8oKXtyZXR1cm4iKzAwMDAifWZ1bmN0aW9uIFplKCl7cmV0dXJuIiUifWZ1bmN0aW9uIFZlKG4pe3JldHVybitufWZ1bmN0aW9uIFhlKG4pe3JldHVybiBNYXRoLmZsb29yKCtuLzFlMyl9dmFyIHNuLEJlO2NvKHtkYXRlVGltZToiJXgsICVYIixkYXRlOiIlLW0vJS1kLyVZIix0aW1lOiIlLUk6JU06JVMgJXAiLHBlcmlvZHM6WyJBTSIsIlBNIl0sZGF5czpbIlN1bmRheSIsIk1vbmRheSIsIlR1ZXNkYXkiLCJXZWRuZXNkYXkiLCJUaHVyc2RheSIsIkZyaWRheSIsIlNhdHVyZGF5Il0sc2hvcnREYXlzOlsiU3VuIiwiTW9uIiwiVHVlIiwiV2VkIiwiVGh1IiwiRnJpIiwiU2F0Il0sbW9udGhzOlsiSmFudWFyeSIsIkZlYnJ1YXJ5IiwiTWFyY2giLCJBcHJpbCIsIk1heSIsIkp1bmUiLCJKdWx5IiwiQXVndXN0IiwiU2VwdGVtYmVyIiwiT2N0b2JlciIsIk5vdmVtYmVyIiwiRGVjZW1iZXIiXSxzaG9ydE1vbnRoczpbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1heSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9jdCIsIk5vdiIsIkRlYyJdfSk7ZnVuY3Rpb24gY28obil7cmV0dXJuIHNuPWNyKG4pLEJlPXNuLmZvcm1hdCxzbi5wYXJzZSxzbi51dGNGb3JtYXQsc24udXRjUGFyc2Usc259ZnVuY3Rpb24gc28obil7cmV0dXJuIG5ldyBEYXRlKG4pfWZ1bmN0aW9uIGxvKG4pe3JldHVybiBuIGluc3RhbmNlb2YgRGF0ZT8rbjorbmV3IERhdGUoK24pfWZ1bmN0aW9uIFFlKG4sZSx0LHIsbyxpLGEsdSxsLGYpe3ZhciBnPUZlKCksbT1nLmludmVydCxwPWcuZG9tYWluLFU9ZigiLiVMIiksaz1mKCI6JVMiKSxSPWYoIiVJOiVNIiksWT1mKCIlSSAlcCIpLHE9ZigiJWEgJWQiKSxFPWYoIiViICVkIiksJD1mKCIlQiIpLFc9ZigiJVkiKTtmdW5jdGlvbiBoKGMpe3JldHVybihsKGMpPGM/VTp1KGMpPGM/azphKGMpPGM/UjppKGMpPGM/WTpyKGMpPGM/byhjKTxjP3E6RTp0KGMpPGM/JDpXKShjKX1yZXR1cm4gZy5pbnZlcnQ9ZnVuY3Rpb24oYyl7cmV0dXJuIG5ldyBEYXRlKG0oYykpfSxnLmRvbWFpbj1mdW5jdGlvbihjKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9wKEFycmF5LmZyb20oYyxsbykpOnAoKS5tYXAoc28pfSxnLnRpY2tzPWZ1bmN0aW9uKGMpe3ZhciB4PXAoKTtyZXR1cm4gbih4WzBdLHhbeC5sZW5ndGgtMV0sYz8/MTApfSxnLnRpY2tGb3JtYXQ9ZnVuY3Rpb24oYyx4KXtyZXR1cm4geD09bnVsbD9oOmYoeCl9LGcubmljZT1mdW5jdGlvbihjKXt2YXIgeD1wKCk7cmV0dXJuKCFjfHx0eXBlb2YgYy5yYW5nZSE9ImZ1bmN0aW9uIikmJihjPWUoeFswXSx4W3gubGVuZ3RoLTFdLGM/PzEwKSksYz9wKEd0KHgsYykpOmd9LGcuY29weT1mdW5jdGlvbigpe3JldHVybiAkZShnLFFlKG4sZSx0LHIsbyxpLGEsdSxsLGYpKX0sZ31mdW5jdGlvbiBobygpe3JldHVybiBrZS5hcHBseShRZSh1cixmcixRLHJlLFluLHduLGVlLG5lLHVuLEJlKS5kb21haW4oW25ldyBEYXRlKDJlMywwLDEpLG5ldyBEYXRlKDJlMywwLDIpXSksYXJndW1lbnRzKX1mdW5jdGlvbiBUbihuLGUsdCl7dGhpcy5rPW4sdGhpcy54PWUsdGhpcy55PXR9VG4ucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpUbixzY2FsZTpmdW5jdGlvbihuKXtyZXR1cm4gbj09PTE/dGhpczpuZXcgVG4odGhpcy5rKm4sdGhpcy54LHRoaXMueSl9LHRyYW5zbGF0ZTpmdW5jdGlvbihuLGUpe3JldHVybiBuPT09MCZlPT09MD90aGlzOm5ldyBUbih0aGlzLmssdGhpcy54K3RoaXMuaypuLHRoaXMueSt0aGlzLmsqZSl9LGFwcGx5OmZ1bmN0aW9uKG4pe3JldHVybltuWzBdKnRoaXMuayt0aGlzLngsblsxXSp0aGlzLmsrdGhpcy55XX0sYXBwbHlYOmZ1bmN0aW9uKG4pe3JldHVybiBuKnRoaXMuayt0aGlzLnh9LGFwcGx5WTpmdW5jdGlvbihuKXtyZXR1cm4gbip0aGlzLmsrdGhpcy55fSxpbnZlcnQ6ZnVuY3Rpb24obil7cmV0dXJuWyhuWzBdLXRoaXMueCkvdGhpcy5rLChuWzFdLXRoaXMueSkvdGhpcy5rXX0saW52ZXJ0WDpmdW5jdGlvbihuKXtyZXR1cm4obi10aGlzLngpL3RoaXMua30saW52ZXJ0WTpmdW5jdGlvbihuKXtyZXR1cm4obi10aGlzLnkpL3RoaXMua30scmVzY2FsZVg6ZnVuY3Rpb24obil7cmV0dXJuIG4uY29weSgpLmRvbWFpbihuLnJhbmdlKCkubWFwKHRoaXMuaW52ZXJ0WCx0aGlzKS5tYXAobi5pbnZlcnQsbikpfSxyZXNjYWxlWTpmdW5jdGlvbihuKXtyZXR1cm4gbi5jb3B5KCkuZG9tYWluKG4ucmFuZ2UoKS5tYXAodGhpcy5pbnZlcnRZLHRoaXMpLm1hcChuLmludmVydCxuKSl9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuInRyYW5zbGF0ZSgiK3RoaXMueCsiLCIrdGhpcy55KyIpIHNjYWxlKCIrdGhpcy5rKyIpIn19LFRuLnByb3RvdHlwZTtmdW5jdGlvbiBhZShuKXtyZXR1cm4gbi5tb2RlPT09InRlbXBvcmFsInx8bi5tb2RlPT09ImxlZnQtYWxpZ25lZCI/Z28obik6bW8obil9ZnVuY3Rpb24gZ28oe2RvbWFpbjpuLHJhbmdlOmV9KXtyZXR1cm4gaG8oKS5kb21haW4obikucmFuZ2UoZSl9ZnVuY3Rpb24gbW8oe2RvbWFpbjpuLHJhbmdlOmV9KXtyZXR1cm4gSGUoKS5kb21haW4obikucmFuZ2UoZSl9ZnVuY3Rpb24geW8oe3Jvb3Rfbm9kZV9pZHM6bixub2RlczplfSl7dHJ5e3JldHVybiB4byhuLGUpfWNhdGNoKHQpe3JldHVybiBjb25zb2xlLmVycm9yKHQpLEdlKG4sZSl9fWZ1bmN0aW9uIHhvKG4sZSl7Y29uc3QgdD1uZXcgTWFwLHI9W107Zm9yKGNvbnN0IG8gb2Ygbil7dC5zZXQobywwKTtjb25zdCBpPWUuZ2V0KG8pO2Zvcihjb25zdHtpZDphfW9mIGkuY2hpbGRyZW4pci5wdXNoKGEpfXJldHVybiB1ZShyLGUsdCl9ZnVuY3Rpb24gdWUobixlLHQpe2Zvcihjb25zdCByIG9mIG4pe2lmKHQuaGFzKHIpKWNvbnRpbnVlO2NvbnN0IG89ZS5nZXQocik7aWYoIW8pdGhyb3cgbmV3IEVycm9yKCJOb2RlIGlkIG5vdCBmb3VuZCBpbiBub2RlcyIpO2NvbnN0IGk9W107Zm9yKGNvbnN0IGwgb2Ygby5wYXJlbnRzKXtjb25zdCBmPXQuZ2V0KGwuaWQpO2lmKGYhPT12b2lkIDApe2kucHVzaChmKTtjb250aW51ZX11ZShbbC5pZF0sZSx0KTtjb25zdCBnPXQuZ2V0KGwuaWQpO2lmKGc9PT12b2lkIDApdGhyb3cgbmV3IEVycm9yKCJDb3VsZCBub3QgZGV0ZXJtaW5lIHBhcmVudCBjb2x1bW4iKTtpLnB1c2goZyl9Y29uc3QgYT1NYXRoLm1heCguLi5pKTt0LnNldChyLGErMSk7Y29uc3QgdT1vLmNoaWxkcmVuLm1hcCgoe2lkOmx9KT0+bCk7dS5sZW5ndGgmJnVlKHUsZSx0KX1yZXR1cm4gdH1mdW5jdGlvbiBHZShuLGUsdD0wLHI9bmV3IE1hcCl7Zm9yKGNvbnN0IG8gb2Ygbil7Y29uc3QgaT1yLmdldChvKTsoIWl8fGk8dCkmJnIuc2V0KG8sdCk7Y29uc3QgYT1lLmdldChvKTtmb3IoY29uc3R7aWQ6dX1vZiBhLmNoaWxkcmVuKUdlKFt1XSxlLHQrMSxyKX1yZXR1cm4gcn1mdW5jdGlvbiBwbyhuKXtyZXR1cm4gbi5ob3Jpem9udGFsU2V0dGluZ3MubW9kZT09PSJkZXBlbmRlbmN5Ij93byhuKTpuLmhvcml6b250YWxTZXR0aW5ncy5tb2RlPT09ImxlZnQtYWxpZ25lZCI/Ym8obik6TW8obil9ZnVuY3Rpb24gd28oe2RhdGE6bixob3Jpem9udGFsU2V0dGluZ3M6ZX0pe2NvbnN0IHQ9eW8obikscj1hZShlKSxvPW5ldyBNYXA7Zm9yKGNvbnN0W2ldb2Ygbi5ub2Rlcyl7Y29uc3QgYT10LmdldChpKTtpZihhPT09dm9pZCAwKXtjb25zb2xlLndhcm4oYE5vZGUgbm90IGZvdW5kIGluIGNvbHVtbnM6IFNraXBwaW5nICR7aX1gKTtjb250aW51ZX1vLnNldChpLHt4OnIoYSksY29sdW1uOmF9KX1yZXR1cm4gb31mdW5jdGlvbiBNbyh7ZGF0YTpuLGhvcml6b250YWxTZXR0aW5nczplfSl7Y29uc3QgdD1hZShlKSxyPW5ldyBNYXA7Zm9yKGNvbnN0W28saV1vZiBuLm5vZGVzKXtjb25zdCBhPXQobmV3IERhdGUoaS5zdGFydF90aW1lKSk7ci5zZXQobyx7Y29sdW1uOmEseDphfSl9cmV0dXJuIHJ9ZnVuY3Rpb24gYm8oe2RhdGE6bixob3Jpem9udGFsU2V0dGluZ3M6ZX0pe2NvbnN0IHQ9YWUoZSkscj1uZXcgTWFwO2Zvcihjb25zdFtvXW9mIG4ubm9kZXMpci5zZXQobyx7Y29sdW1uOjAseDp0KG5ldyBEYXRlKG4uc3RhcnRfdGltZSkpfSk7cmV0dXJuIHJ9YXN5bmMgZnVuY3Rpb24gdm8obixlKXtjb25zdCBvPW5ldyBNYXAsaT1uZXcgTWFwO2xldCBhPTA7Y29uc3QgdT1uZXcgTWFwO2ZvciBhd2FpdChjb25zdFtoXW9mIG4uZGF0YS5ub2Rlcyl7Y29uc3QgYz1uLmRhdGEubm9kZXMuZ2V0KGgpO2lmKCFjKXtjb25zb2xlLndhcm4oIk5lYXJlc3RQYXJlbnRMYXlvdXQ6IE5vZGUgd2FzIG5vdCBmb3VuZCBpbiB0aGUgZGF0YSIsaCk7Y29udGludWV9Y29uc3QgeD1hd2FpdCBsKGMpOyQoaCx4KX1yZXR1cm4gVygpLHU7YXN5bmMgZnVuY3Rpb24gbChoKXtjb25zdHt4OmN9PWUuZ2V0KGguaWQpPz97fTtpZihjPT09dm9pZCAwKXJldHVybiBjb25zb2xlLndhcm4oIk5lYXJlc3RQYXJlbnRMYXlvdXQ6IE5vZGUgd2FzIG5vdCBmb3VuZCBpbiB0aGUgaG9yaXpvbnRhbCBsYXlvdXQiLGguaWQpLDA7aWYoaC5wYXJlbnRzLmxlbmd0aD09PTEpcmV0dXJuIHUuaGFzKGgucGFyZW50c1swXS5pZCk/YXdhaXQgZyhoLnBhcmVudHNbMF0uaWQsYyk6KGNvbnNvbGUud2FybigiTmVhcmVzdFBhcmVudExheW91dDogUGFyZW50IG5vZGUgbm90IGZvdW5kIGluIGxheW91dCIsaC5wYXJlbnRzWzBdLmlkKSwwKTtpZihoLnBhcmVudHMubGVuZ3RoPjApe2NvbnN0IHg9aC5wYXJlbnRzLm1hcCgoe2lkOnl9KT0+e2NvbnN0IEM9dS5nZXQoeSk7cmV0dXJuIEM9PT12b2lkIDA/KGNvbnNvbGUud2FybigiTmVhcmVzdFBhcmVudExheW91dDogUGFyZW50IG5vZGUgbm90IGZvdW5kIGluIGxheW91dCIseSksMCk6Q30pLE49eC5yZWR1Y2UoKHksQyk9PnkrQywwKS94Lmxlbmd0aCx2PU1hdGgucm91bmQoTik7aWYobShjLHYpKXtjb25zdCB5PWsoYyx2KSxDPWgucGFyZW50cy5tYXAoKHtpZDpGfSk9PkYpLFM9eS5maWx0ZXIoRj0+Qy5pbmNsdWRlcyhGKSk7aWYoUy5sZW5ndGg+MHx8eS5sZW5ndGg+MSl7Y29uc3RbRl09Uy5sZW5ndGg+MD9TOnksbG49Uih4LHYsby5nZXQoRikpO3JldHVybiBvLnNldChGLGxuKSxhd2FpdCBnKEYsYyl9cmV0dXJuIGF3YWl0IFkoe2NvbXBldGluZ05vZGVJZDp5WzBdLHVwc3RyZWFtUm93czp4LG5vZGVTdGFydFg6YyxkZXNpcmVkUm93OnZ9KX19cmV0dXJuIGYoYywwKX1mdW5jdGlvbiBmKGgsYyl7cmV0dXJuIG0oaCxjKT9mKGgsYysxKTpjfWFzeW5jIGZ1bmN0aW9uIGcoaCxjKXtjb25zdCB4PXUuZ2V0KGgpO2lmKHg9PT12b2lkIDApcmV0dXJuIGNvbnNvbGUud2FybigiTmVhcmVzdFBhcmVudExheW91dDogVXBzdHJlYW0gbm9kZSBub3QgZm91bmQgaW4gbGF5b3V0IixoKSwwO28uZ2V0KGgpfHxvLnNldChoLDEpO2NvbnN0IHc9by5nZXQoaCk7cmV0dXJuIG0oYyx4KT93PT09MSYmIW0oYyx4KzEpPyhvLnNldChoLC0xKSx4KzEpOm0oYyx4LTEpPyhhd2FpdCBwKHtkaXJlY3Rpb246dyxub2RlU3RhcnRYOmMsZGVzaXJlZFJvdzp4K3d9KSxvLnNldChoLHc9PT0xPy0xOjEpLHgrdyk6KG8uc2V0KGgsMSkseC0xKTp4fWZ1bmN0aW9uIG0oaCxjKXtpZih1LnNpemU9PT0wKXJldHVybiExO2xldCB4PSExO2NvbnN0IHc9aS5nZXQoYyk/P1tdO2Zvcihjb25zdCBOIG9mIHcpe2NvbnN0IHY9dS5nZXQoTikseT1FKE4pO2lmKFUoe2ZpcnN0Tm9kZUVuZFg6eSxmaXJzdE5vZGVSb3c6dixsYXN0Tm9kZVN0YXJ0WDpoLGxhc3ROb2RlUm93OmN9KSl7eD0hMDticmVha319cmV0dXJuIHh9YXN5bmMgZnVuY3Rpb24gcCh7ZGlyZWN0aW9uOmgsbm9kZVN0YXJ0WDpjLGRlc2lyZWRSb3c6eH0pe2NvbnN0IHc9ayhjLHgpO2lmKHcpZm9yIGF3YWl0KGNvbnN0IE4gb2Ygdyl7Y29uc3Qgdj11LmdldChOKSx7eDp5fT1lLmdldChOKT8/e307aWYodj09PXZvaWQgMHx8eT09PXZvaWQgMCl7Y29uc29sZS53YXJuKCJOZWFyZXN0UGFyZW50TGF5b3V0IC0gc2hvdmU6IE5vZGUgd2FzIG5vdCBmb3VuZCBpbiB0aGUgdmVydGljYWwgb3IgaG9yaXpvbnRhbCBsYXlvdXQiLE4pO2NvbnRpbnVlfWNvbnN0IEM9ditoO2F3YWl0IHAoe2RpcmVjdGlvbjpoLG5vZGVTdGFydFg6eSxkZXNpcmVkUm93OkN9KSwkKE4sQyl9fWZ1bmN0aW9uIFUoe2ZpcnN0Tm9kZUVuZFg6aCxmaXJzdE5vZGVSb3c6YyxsYXN0Tm9kZVN0YXJ0WDp4LGxhc3ROb2RlUm93Ond9KXtyZXR1cm4gYz09PXcmJmgrMTY+PXh9ZnVuY3Rpb24gayhoLGMpe2NvbnN0IHg9W10sdz1pLmdldChjKT8/W107Zm9yKGNvbnN0IE4gb2Ygdyl7Y29uc3Qgdj1FKE4pLHk9dS5nZXQoTik7aWYoeT09PXZvaWQgMCl7Y29uc29sZS53YXJuKCJOZWFyZXN0UGFyZW50TGF5b3V0IC0gZ2V0T3ZlcmxhcHBpbmdOb2RlSWRzOiBOb2RlIHdhcyBub3QgZm91bmQgaW4gdGhlIGxheW91dCIsTik7Y29udGludWV9VSh7Zmlyc3ROb2RlRW5kWDp2LGZpcnN0Tm9kZVJvdzp5LGxhc3ROb2RlU3RhcnRYOmgsbGFzdE5vZGVSb3c6Y30pJiZ4LnB1c2goTil9aWYoeC5sZW5ndGghPT0wKXJldHVybiB4LnNvcnQoKE4sdik9Pntjb25zdCB5PUUoTiksQz1FKHYpO3JldHVybiB5PEM/MTp5PkM/LTE6MH0pLHh9ZnVuY3Rpb24gUihoLGMseCl7Y29uc3Qgdz1oLmZpbHRlcih2PT52PGMpLmxlbmd0aCxOPWguZmlsdGVyKHY9PnY+YykubGVuZ3RoO3JldHVybiB3Pk4/LTE6eD8/MX1hc3luYyBmdW5jdGlvbiBZKHtkZXNpcmVkUm93Omgsbm9kZVN0YXJ0WDpjLHVwc3RyZWFtUm93czp4LGNvbXBldGluZ05vZGVJZDp3fSl7aWYodS5nZXQodyk9PT12b2lkIDApcmV0dXJuIGNvbnNvbGUud2FybigiTmVhcmVzdFBhcmVudExheW91dCAtIGFyZ3VlV2l0aENvbXBldGluZ1Vwc3RyZWFtUGxhY2VtZW50OiBDb21wZXRpdG9yIG5vZGUgd2FzIG5vdCBmb3VuZCBpbiB0aGUgbGF5b3V0Iix3KSxoO2NvbnN0W3YseV09cSh3KSxDPXguZmlsdGVyKEY9PkY8aCkubGVuZ3RoLFM9eC5maWx0ZXIoRj0+Rj5oKS5sZW5ndGg7aWYoQz5TKXtpZih2PnkmJnY+QylyZXR1cm4gYXdhaXQgcCh7ZGlyZWN0aW9uOi0xLG5vZGVTdGFydFg6YyxkZXNpcmVkUm93Omh9KSxoO2lmKHk+dilyZXR1cm4gYXdhaXQgcCh7ZGlyZWN0aW9uOjEsbm9kZVN0YXJ0WDpjLGRlc2lyZWRSb3c6aH0pLGg7by5zZXQodywtMSl9aWYoUz5DKXtpZih5PnYmJnk+UylyZXR1cm4gYXdhaXQgcCh7ZGlyZWN0aW9uOjEsbm9kZVN0YXJ0WDpjLGRlc2lyZWRSb3c6aH0pLGg7aWYodj55KXJldHVybiBhd2FpdCBwKHtkaXJlY3Rpb246LTEsbm9kZVN0YXJ0WDpjLGRlc2lyZWRSb3c6aH0pLGg7by5zZXQodywxKX1yZXR1cm4gYXdhaXQgZyh3LGMpfWZ1bmN0aW9uIHEoaCl7Y29uc3QgYz1uLmRhdGEubm9kZXMuZ2V0KGgpLHg9dS5nZXQoaCk7cmV0dXJuIWN8fHg9PT12b2lkIDA/KGNvbnNvbGUud2FybigiTmVhcmVzdFBhcmVudExheW91dDogTm9kZSB3YXMgbm90IGZvdW5kIGluIGVpdGhlciB0aGUgZGF0YSBvciBsYXlvdXQiLGgpLFswLDBdKTpjLnBhcmVudHMucmVkdWNlKCh3LE4pPT57Y29uc3Qgdj11LmdldChOLmlkKTtyZXR1cm4gdj09PXZvaWQgMD8oY29uc29sZS53YXJuKCJOZWFyZXN0UGFyZW50TGF5b3V0IC0gZ2V0Tm9kZVBhcmVudERpcmVjdGlvbkNvdW50czogUGFyZW50IG5vZGUgbm90IGZvdW5kIG9uIGxheW91dCBkYXRhIixoKSx3KToodjx4JiYod1swXSs9MSksdj54JiYod1sxXSs9MSksdyl9LFswLDBdKX1mdW5jdGlvbiBFKGgpe2NvbnN0e3g6Y309ZS5nZXQoaCk/P3t9LHg9bi53aWR0aHMuZ2V0KGgpO3JldHVybiBjPT09dm9pZCAwfHx4PT09dm9pZCAwPyhjb25zb2xlLndhcm4oIk5lYXJlc3RQYXJlbnRMYXlvdXQ6IE5vZGUgd2FzIG5vdCBmb3VuZCBpbiB0aGUgaG9yaXpvbnRhbCBsYXlvdXQgYW5kL29yIHdpZHRocyIsaCksMCk6Yyt4fWZ1bmN0aW9uICQoaCxjKXt2YXIgeCx3O2lmKGM8YSYmKGE9YyksdS5oYXMoaCkpe2NvbnN0IE49dS5nZXQoaCk7KHg9aS5nZXQoTikpPT1udWxsfHx4LmRlbGV0ZShoKX1pLmhhcyhjKXx8aS5zZXQoYyxuZXcgU2V0KSwodz1pLmdldChjKSk9PW51bGx8fHcuYWRkKGgpLHUuc2V0KGgsYyl9ZnVuY3Rpb24gVygpe2lmKGE8MClmb3IoY29uc3RbaF1vZiB1KXtjb25zdCBjPXUuZ2V0KGgpO3Uuc2V0KGgsYytNYXRoLmFicyhhKSl9fX1hc3luYyBmdW5jdGlvbiBUbyhuLGUpe3JldHVybiBuLnZlcnRpY2FsU2V0dGluZ3MubW9kZT09PSJuZWFyZXN0LXBhcmVudCI/YXdhaXQgdm8obixlKTpuLnZlcnRpY2FsU2V0dGluZ3MubW9kZT09PSJkdXJhdGlvbi1zb3J0ZWQiP05vKG4pOkNvKG4pfWZ1bmN0aW9uIENvKG4pe2NvbnN0IGU9bmV3IE1hcDtsZXQgdD0wO2Zvcihjb25zdFtyXW9mIG4uZGF0YS5ub2RlcyllLnNldChyLHQrKyk7cmV0dXJuIGV9ZnVuY3Rpb24gTm8obil7Y29uc3QgZT1uZXcgTWFwLHQ9Wy4uLm4uZGF0YS5ub2Rlcy52YWx1ZXMoKV0uc29ydCgobyxpKT0+e2NvbnN0IGE9KG8uZW5kX3RpbWU/bmV3IERhdGUoby5lbmRfdGltZSkuZ2V0VGltZSgpOm5ldyBEYXRlKCkuZ2V0VGltZSgpKS1uZXcgRGF0ZShvLnN0YXJ0X3RpbWUpLmdldFRpbWUoKTtyZXR1cm4oaS5lbmRfdGltZT9uZXcgRGF0ZShpLmVuZF90aW1lKS5nZXRUaW1lKCk6bmV3IERhdGUoKS5nZXRUaW1lKCkpLW5ldyBEYXRlKGkuc3RhcnRfdGltZSkuZ2V0VGltZSgpLWF9KTtsZXQgcj0wO2Zvcihjb25zdCBvIG9mIHQpZS5zZXQoby5pZCxyKyspO3JldHVybiBlfW9ubWVzc2FnZT1EbztmdW5jdGlvbiBEbyh7ZGF0YTpufSl7Y29uc3R7dHlwZTplfT1uO3N3aXRjaChlKXtjYXNlImxheW91dCI6a28obik7cmV0dXJuO2RlZmF1bHQ6S2UoZSl9fWZ1bmN0aW9uIFVvKG4pe3Bvc3RNZXNzYWdlKG4pfWFzeW5jIGZ1bmN0aW9uIGtvKG4pe2NvbnN0e2RhdGE6ZX09bix0PXBvKG4pLHI9YXdhaXQgVG8obix0KSxvPW5ldyBNYXA7bGV0IGk9MCxhPTA7Zm9yKGNvbnN0W3UsbF1vZiBlLm5vZGVzKXtjb25zdCBmPXQuZ2V0KHUpLGc9ci5nZXQodSk7aWYoZj09PXZvaWQgMCl7Y29uc29sZS53YXJuKGBOb2RlSWQgbm90IGZvdW5kIGluIGhvcml6b250YWwgbGF5b3V0OiBTa2lwcGluZyAke2wubGFiZWx9YCk7Y29udGludWV9aWYoZz09PXZvaWQgMCl7Y29uc29sZS53YXJuKGBOb2RlSWQgbm90IGZvdW5kIGluIHZlcnRpY2FsIGxheW91dDogU2tpcHBpbmcgJHtsLmxhYmVsfWApO2NvbnRpbnVlfWk9TWF0aC5tYXgoaSxnKSxhPU1hdGgubWF4KGEsZi5jb2x1bW4pLG8uc2V0KHUsey4uLmYseTpnLHJvdzpnfSl9VW8oe3R5cGU6ImxheW91dCIsbGF5b3V0OnttYXhSb3c6aSxtYXhDb2x1bW46YSxwb3NpdGlvbnM6b319KX19KSgpOwovLyMgc291cmNlTWFwcGluZ1VSTD1ydW5HcmFwaC53b3JrZXItd2pueUpGdHAuanMubWFwCg==", LR = (r) => Uint8Array.from(atob(r), (t) => t.charCodeAt(0)), a0 = typeof self < "u" && self.Blob && new Blob([LR(t1)], { type: "text/javascript;charset=utf-8" });
32164
+ const t1 = "KGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIEtlKG4pe3Rocm93IG5ldyBFcnJvcihgc3dpdGNoIGRvZXMgbm90IGhhdmUgY2FzZSBmb3IgdmFsdWU6ICR7bn1gKX1mdW5jdGlvbiBDbihuLGUpe3JldHVybiBuPT1udWxsfHxlPT1udWxsP05hTjpuPGU/LTE6bj5lPzE6bj49ZT8wOk5hTn1mdW5jdGlvbiBudChuLGUpe3JldHVybiBuPT1udWxsfHxlPT1udWxsP05hTjplPG4/LTE6ZT5uPzE6ZT49bj8wOk5hTn1mdW5jdGlvbiBSbihuKXtsZXQgZSx0LHI7bi5sZW5ndGghPT0yPyhlPUNuLHQ9KHUsbCk9PkNuKG4odSksbCkscj0odSxsKT0+bih1KS1sKTooZT1uPT09Q258fG49PT1udD9uOmV0LHQ9bixyPW4pO2Z1bmN0aW9uIG8odSxsLGY9MCxnPXUubGVuZ3RoKXtpZihmPGcpe2lmKGUobCxsKSE9PTApcmV0dXJuIGc7ZG97Y29uc3QgbT1mK2c+Pj4xO3QodVttXSxsKTwwP2Y9bSsxOmc9bX13aGlsZShmPGcpfXJldHVybiBmfWZ1bmN0aW9uIGkodSxsLGY9MCxnPXUubGVuZ3RoKXtpZihmPGcpe2lmKGUobCxsKSE9PTApcmV0dXJuIGc7ZG97Y29uc3QgbT1mK2c+Pj4xO3QodVttXSxsKTw9MD9mPW0rMTpnPW19d2hpbGUoZjxnKX1yZXR1cm4gZn1mdW5jdGlvbiBhKHUsbCxmPTAsZz11Lmxlbmd0aCl7Y29uc3QgbT1vKHUsbCxmLGctMSk7cmV0dXJuIG0+ZiYmcih1W20tMV0sbCk+LXIodVttXSxsKT9tLTE6bX1yZXR1cm57bGVmdDpvLGNlbnRlcjphLHJpZ2h0Oml9fWZ1bmN0aW9uIGV0KCl7cmV0dXJuIDB9ZnVuY3Rpb24gdHQobil7cmV0dXJuIG49PT1udWxsP05hTjorbn1jb25zdCBydD1SbihDbikucmlnaHQ7Um4odHQpLmNlbnRlcjtjb25zdCBvdD1NYXRoLnNxcnQoNTApLGl0PU1hdGguc3FydCgxMCksYXQ9TWF0aC5zcXJ0KDIpO2Z1bmN0aW9uIE5uKG4sZSx0KXtjb25zdCByPShlLW4pL01hdGgubWF4KDAsdCksbz1NYXRoLmZsb29yKE1hdGgubG9nMTAocikpLGk9ci9NYXRoLnBvdygxMCxvKSxhPWk+PW90PzEwOmk+PWl0PzU6aT49YXQ/MjoxO2xldCB1LGwsZjtyZXR1cm4gbzwwPyhmPU1hdGgucG93KDEwLC1vKS9hLHU9TWF0aC5yb3VuZChuKmYpLGw9TWF0aC5yb3VuZChlKmYpLHUvZjxuJiYrK3UsbC9mPmUmJi0tbCxmPS1mKTooZj1NYXRoLnBvdygxMCxvKSphLHU9TWF0aC5yb3VuZChuL2YpLGw9TWF0aC5yb3VuZChlL2YpLHUqZjxuJiYrK3UsbCpmPmUmJi0tbCksbDx1JiYuNTw9dCYmdDwyP05uKG4sZSx0KjIpOlt1LGwsZl19ZnVuY3Rpb24gdXQobixlLHQpe2lmKGU9K2Usbj0rbix0PSt0LCEodD4wKSlyZXR1cm5bXTtpZihuPT09ZSlyZXR1cm5bbl07Y29uc3Qgcj1lPG4sW28saSxhXT1yP05uKGUsbix0KTpObihuLGUsdCk7aWYoIShpPj1vKSlyZXR1cm5bXTtjb25zdCB1PWktbysxLGw9bmV3IEFycmF5KHUpO2lmKHIpaWYoYTwwKWZvcihsZXQgZj0wO2Y8dTsrK2YpbFtmXT0oaS1mKS8tYTtlbHNlIGZvcihsZXQgZj0wO2Y8dTsrK2YpbFtmXT0oaS1mKSphO2Vsc2UgaWYoYTwwKWZvcihsZXQgZj0wO2Y8dTsrK2YpbFtmXT0obytmKS8tYTtlbHNlIGZvcihsZXQgZj0wO2Y8dTsrK2YpbFtmXT0obytmKSphO3JldHVybiBsfWZ1bmN0aW9uIEluKG4sZSx0KXtyZXR1cm4gZT0rZSxuPStuLHQ9K3QsTm4obixlLHQpWzJdfWZ1bmN0aW9uIE9uKG4sZSx0KXtlPStlLG49K24sdD0rdDtjb25zdCByPWU8bixvPXI/SW4oZSxuLHQpOkluKG4sZSx0KTtyZXR1cm4ocj8tMToxKSoobzwwPzEvLW86byl9ZnVuY3Rpb24gem4obixlLHQpe24ucHJvdG90eXBlPWUucHJvdG90eXBlPXQsdC5jb25zdHJ1Y3Rvcj1ufWZ1bmN0aW9uIGZlKG4sZSl7dmFyIHQ9T2JqZWN0LmNyZWF0ZShuLnByb3RvdHlwZSk7Zm9yKHZhciByIGluIGUpdFtyXT1lW3JdO3JldHVybiB0fWZ1bmN0aW9uIGRuKCl7fXZhciB5bj0uNyxVbj0xL3luLHJuPSJcXHMqKFsrLV0/XFxkKylcXHMqIix4bj0iXFxzKihbKy1dPyg/OlxcZCpcXC4pP1xcZCsoPzpbZUVdWystXT9cXGQrKT8pXFxzKiIsWj0iXFxzKihbKy1dPyg/OlxcZCpcXC4pP1xcZCsoPzpbZUVdWystXT9cXGQrKT8pJVxccyoiLGZ0PS9eIyhbMC05YS1mXXszLDh9KSQvLGN0PW5ldyBSZWdFeHAoYF5yZ2JcXCgke3JufSwke3JufSwke3JufVxcKSRgKSxzdD1uZXcgUmVnRXhwKGBecmdiXFwoJHtafSwke1p9LCR7Wn1cXCkkYCksbHQ9bmV3IFJlZ0V4cChgXnJnYmFcXCgke3JufSwke3JufSwke3JufSwke3hufVxcKSRgKSxodD1uZXcgUmVnRXhwKGBecmdiYVxcKCR7Wn0sJHtafSwke1p9LCR7eG59XFwpJGApLGd0PW5ldyBSZWdFeHAoYF5oc2xcXCgke3hufSwke1p9LCR7Wn1cXCkkYCksbXQ9bmV3IFJlZ0V4cChgXmhzbGFcXCgke3hufSwke1p9LCR7Wn0sJHt4bn1cXCkkYCksY2U9e2FsaWNlYmx1ZToxNTc5MjM4MyxhbnRpcXVld2hpdGU6MTY0NDQzNzUsYXF1YTo2NTUzNSxhcXVhbWFyaW5lOjgzODg1NjQsYXp1cmU6MTU3OTQxNzUsYmVpZ2U6MTYxMTkyNjAsYmlzcXVlOjE2NzcwMjQ0LGJsYWNrOjAsYmxhbmNoZWRhbG1vbmQ6MTY3NzIwNDUsYmx1ZToyNTUsYmx1ZXZpb2xldDo5MDU1MjAyLGJyb3duOjEwODI0MjM0LGJ1cmx5d29vZDoxNDU5NjIzMSxjYWRldGJsdWU6NjI2NjUyOCxjaGFydHJldXNlOjgzODgzNTIsY2hvY29sYXRlOjEzNzg5NDcwLGNvcmFsOjE2NzQ0MjcyLGNvcm5mbG93ZXJibHVlOjY1OTE5ODEsY29ybnNpbGs6MTY3NzUzODgsY3JpbXNvbjoxNDQyMzEwMCxjeWFuOjY1NTM1LGRhcmtibHVlOjEzOSxkYXJrY3lhbjozNTcyMyxkYXJrZ29sZGVucm9kOjEyMDkyOTM5LGRhcmtncmF5OjExMTE5MDE3LGRhcmtncmVlbjoyNTYwMCxkYXJrZ3JleToxMTExOTAxNyxkYXJra2hha2k6MTI0MzMyNTksZGFya21hZ2VudGE6OTEwOTY0MyxkYXJrb2xpdmVncmVlbjo1NTk3OTk5LGRhcmtvcmFuZ2U6MTY3NDc1MjAsZGFya29yY2hpZDoxMDA0MDAxMixkYXJrcmVkOjkxMDk1MDQsZGFya3NhbG1vbjoxNTMwODQxMCxkYXJrc2VhZ3JlZW46OTQxOTkxOSxkYXJrc2xhdGVibHVlOjQ3MzQzNDcsZGFya3NsYXRlZ3JheTozMTAwNDk1LGRhcmtzbGF0ZWdyZXk6MzEwMDQ5NSxkYXJrdHVycXVvaXNlOjUyOTQ1LGRhcmt2aW9sZXQ6OTY5OTUzOSxkZWVwcGluazoxNjcxNjk0NyxkZWVwc2t5Ymx1ZTo0OTE1MSxkaW1ncmF5OjY5MDgyNjUsZGltZ3JleTo2OTA4MjY1LGRvZGdlcmJsdWU6MjAwMzE5OSxmaXJlYnJpY2s6MTE2NzQxNDYsZmxvcmFsd2hpdGU6MTY3NzU5MjAsZm9yZXN0Z3JlZW46MjI2Mzg0MixmdWNoc2lhOjE2NzExOTM1LGdhaW5zYm9ybzoxNDQ3NDQ2MCxnaG9zdHdoaXRlOjE2MzE2NjcxLGdvbGQ6MTY3NjY3MjAsZ29sZGVucm9kOjE0MzI5MTIwLGdyYXk6ODQyMTUwNCxncmVlbjozMjc2OCxncmVlbnllbGxvdzoxMTQwMzA1NSxncmV5Ojg0MjE1MDQsaG9uZXlkZXc6MTU3OTQxNjAsaG90cGluazoxNjczODc0MCxpbmRpYW5yZWQ6MTM0NTg1MjQsaW5kaWdvOjQ5MTUzMzAsaXZvcnk6MTY3NzcyMDAsa2hha2k6MTU3ODc2NjAsbGF2ZW5kZXI6MTUxMzI0MTAsbGF2ZW5kZXJibHVzaDoxNjc3MzM2NSxsYXduZ3JlZW46ODE5MDk3NixsZW1vbmNoaWZmb246MTY3NzU4ODUsbGlnaHRibHVlOjExMzkzMjU0LGxpZ2h0Y29yYWw6MTU3NjE1MzYsbGlnaHRjeWFuOjE0NzQ1NTk5LGxpZ2h0Z29sZGVucm9keWVsbG93OjE2NDQ4MjEwLGxpZ2h0Z3JheToxMzg4MjMyMyxsaWdodGdyZWVuOjk0OTgyNTYsbGlnaHRncmV5OjEzODgyMzIzLGxpZ2h0cGluazoxNjc1ODQ2NSxsaWdodHNhbG1vbjoxNjc1Mjc2MixsaWdodHNlYWdyZWVuOjIxNDI4OTAsbGlnaHRza3libHVlOjg5MDAzNDYsbGlnaHRzbGF0ZWdyYXk6NzgzMzc1MyxsaWdodHNsYXRlZ3JleTo3ODMzNzUzLGxpZ2h0c3RlZWxibHVlOjExNTg0NzM0LGxpZ2h0eWVsbG93OjE2Nzc3MTg0LGxpbWU6NjUyODAsbGltZWdyZWVuOjMzMjkzMzAsbGluZW46MTY0NDU2NzAsbWFnZW50YToxNjcxMTkzNSxtYXJvb246ODM4ODYwOCxtZWRpdW1hcXVhbWFyaW5lOjY3MzczMjIsbWVkaXVtYmx1ZToyMDUsbWVkaXVtb3JjaGlkOjEyMjExNjY3LG1lZGl1bXB1cnBsZTo5NjYyNjgzLG1lZGl1bXNlYWdyZWVuOjM5NzgwOTcsbWVkaXVtc2xhdGVibHVlOjgwODc3OTAsbWVkaXVtc3ByaW5nZ3JlZW46NjQxNTQsbWVkaXVtdHVycXVvaXNlOjQ3NzIzMDAsbWVkaXVtdmlvbGV0cmVkOjEzMDQ3MTczLG1pZG5pZ2h0Ymx1ZToxNjQ0OTEyLG1pbnRjcmVhbToxNjEyMTg1MCxtaXN0eXJvc2U6MTY3NzAyNzMsbW9jY2FzaW46MTY3NzAyMjksbmF2YWpvd2hpdGU6MTY3Njg2ODUsbmF2eToxMjgsb2xkbGFjZToxNjY0MzU1OCxvbGl2ZTo4NDIxMzc2LG9saXZlZHJhYjo3MDQ4NzM5LG9yYW5nZToxNjc1MzkyMCxvcmFuZ2VyZWQ6MTY3MjkzNDQsb3JjaGlkOjE0MzE1NzM0LHBhbGVnb2xkZW5yb2Q6MTU2NTcxMzAscGFsZWdyZWVuOjEwMDI1ODgwLHBhbGV0dXJxdW9pc2U6MTE1Mjk5NjYscGFsZXZpb2xldHJlZDoxNDM4MTIwMyxwYXBheWF3aGlwOjE2NzczMDc3LHBlYWNocHVmZjoxNjc2NzY3MyxwZXJ1OjEzNDY4OTkxLHBpbms6MTY3NjEwMzUscGx1bToxNDUyNDYzNyxwb3dkZXJibHVlOjExNTkxOTEwLHB1cnBsZTo4Mzg4NzM2LHJlYmVjY2FwdXJwbGU6NjY5Nzg4MSxyZWQ6MTY3MTE2ODAscm9zeWJyb3duOjEyMzU3NTE5LHJveWFsYmx1ZTo0Mjg2OTQ1LHNhZGRsZWJyb3duOjkxMjcxODcsc2FsbW9uOjE2NDE2ODgyLHNhbmR5YnJvd246MTYwMzI4NjQsc2VhZ3JlZW46MzA1MDMyNyxzZWFzaGVsbDoxNjc3NDYzOCxzaWVubmE6MTA1MDY3OTcsc2lsdmVyOjEyNjMyMjU2LHNreWJsdWU6ODkwMDMzMSxzbGF0ZWJsdWU6Njk3MDA2MSxzbGF0ZWdyYXk6NzM3Mjk0NCxzbGF0ZWdyZXk6NzM3Mjk0NCxzbm93OjE2Nzc1OTMwLHNwcmluZ2dyZWVuOjY1NDA3LHN0ZWVsYmx1ZTo0NjIwOTgwLHRhbjoxMzgwODc4MCx0ZWFsOjMyODk2LHRoaXN0bGU6MTQyMDQ4ODgsdG9tYXRvOjE2NzM3MDk1LHR1cnF1b2lzZTo0MjUxODU2LHZpb2xldDoxNTYzMTA4Nix3aGVhdDoxNjExMzMzMSx3aGl0ZToxNjc3NzIxNSx3aGl0ZXNtb2tlOjE2MTE5Mjg1LHllbGxvdzoxNjc3Njk2MCx5ZWxsb3dncmVlbjoxMDE0NTA3NH07em4oZG4scG4se2NvcHkobil7cmV0dXJuIE9iamVjdC5hc3NpZ24obmV3IHRoaXMuY29uc3RydWN0b3IsdGhpcyxuKX0sZGlzcGxheWFibGUoKXtyZXR1cm4gdGhpcy5yZ2IoKS5kaXNwbGF5YWJsZSgpfSxoZXg6c2UsZm9ybWF0SGV4OnNlLGZvcm1hdEhleDg6ZHQsZm9ybWF0SHNsOnl0LGZvcm1hdFJnYjpsZSx0b1N0cmluZzpsZX0pO2Z1bmN0aW9uIHNlKCl7cmV0dXJuIHRoaXMucmdiKCkuZm9ybWF0SGV4KCl9ZnVuY3Rpb24gZHQoKXtyZXR1cm4gdGhpcy5yZ2IoKS5mb3JtYXRIZXg4KCl9ZnVuY3Rpb24geXQoKXtyZXR1cm4geWUodGhpcykuZm9ybWF0SHNsKCl9ZnVuY3Rpb24gbGUoKXtyZXR1cm4gdGhpcy5yZ2IoKS5mb3JtYXRSZ2IoKX1mdW5jdGlvbiBwbihuKXt2YXIgZSx0O3JldHVybiBuPShuKyIiKS50cmltKCkudG9Mb3dlckNhc2UoKSwoZT1mdC5leGVjKG4pKT8odD1lWzFdLmxlbmd0aCxlPXBhcnNlSW50KGVbMV0sMTYpLHQ9PT02P2hlKGUpOnQ9PT0zP25ldyBQKGU+PjgmMTV8ZT4+NCYyNDAsZT4+NCYxNXxlJjI0MCwoZSYxNSk8PDR8ZSYxNSwxKTp0PT09OD9EbihlPj4yNCYyNTUsZT4+MTYmMjU1LGU+PjgmMjU1LChlJjI1NSkvMjU1KTp0PT09ND9EbihlPj4xMiYxNXxlPj44JjI0MCxlPj44JjE1fGU+PjQmMjQwLGU+PjQmMTV8ZSYyNDAsKChlJjE1KTw8NHxlJjE1KS8yNTUpOm51bGwpOihlPWN0LmV4ZWMobikpP25ldyBQKGVbMV0sZVsyXSxlWzNdLDEpOihlPXN0LmV4ZWMobikpP25ldyBQKGVbMV0qMjU1LzEwMCxlWzJdKjI1NS8xMDAsZVszXSoyNTUvMTAwLDEpOihlPWx0LmV4ZWMobikpP0RuKGVbMV0sZVsyXSxlWzNdLGVbNF0pOihlPWh0LmV4ZWMobikpP0RuKGVbMV0qMjU1LzEwMCxlWzJdKjI1NS8xMDAsZVszXSoyNTUvMTAwLGVbNF0pOihlPWd0LmV4ZWMobikpP2RlKGVbMV0sZVsyXS8xMDAsZVszXS8xMDAsMSk6KGU9bXQuZXhlYyhuKSk/ZGUoZVsxXSxlWzJdLzEwMCxlWzNdLzEwMCxlWzRdKTpjZS5oYXNPd25Qcm9wZXJ0eShuKT9oZShjZVtuXSk6bj09PSJ0cmFuc3BhcmVudCI/bmV3IFAoTmFOLE5hTixOYU4sMCk6bnVsbH1mdW5jdGlvbiBoZShuKXtyZXR1cm4gbmV3IFAobj4+MTYmMjU1LG4+PjgmMjU1LG4mMjU1LDEpfWZ1bmN0aW9uIERuKG4sZSx0LHIpe3JldHVybiByPD0wJiYobj1lPXQ9TmFOKSxuZXcgUChuLGUsdCxyKX1mdW5jdGlvbiB4dChuKXtyZXR1cm4gbiBpbnN0YW5jZW9mIGRufHwobj1wbihuKSksbj8obj1uLnJnYigpLG5ldyBQKG4ucixuLmcsbi5iLG4ub3BhY2l0eSkpOm5ldyBQfWZ1bmN0aW9uIEVuKG4sZSx0LHIpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPT09MT94dChuKTpuZXcgUChuLGUsdCxyPz8xKX1mdW5jdGlvbiBQKG4sZSx0LHIpe3RoaXMucj0rbix0aGlzLmc9K2UsdGhpcy5iPSt0LHRoaXMub3BhY2l0eT0rcn16bihQLEVuLGZlKGRuLHticmlnaHRlcihuKXtyZXR1cm4gbj1uPT1udWxsP1VuOk1hdGgucG93KFVuLG4pLG5ldyBQKHRoaXMucipuLHRoaXMuZypuLHRoaXMuYipuLHRoaXMub3BhY2l0eSl9LGRhcmtlcihuKXtyZXR1cm4gbj1uPT1udWxsP3luOk1hdGgucG93KHluLG4pLG5ldyBQKHRoaXMucipuLHRoaXMuZypuLHRoaXMuYipuLHRoaXMub3BhY2l0eSl9LHJnYigpe3JldHVybiB0aGlzfSxjbGFtcCgpe3JldHVybiBuZXcgUChHKHRoaXMuciksRyh0aGlzLmcpLEcodGhpcy5iKSxrbih0aGlzLm9wYWNpdHkpKX0sZGlzcGxheWFibGUoKXtyZXR1cm4tLjU8PXRoaXMuciYmdGhpcy5yPDI1NS41JiYtLjU8PXRoaXMuZyYmdGhpcy5nPDI1NS41JiYtLjU8PXRoaXMuYiYmdGhpcy5iPDI1NS41JiYwPD10aGlzLm9wYWNpdHkmJnRoaXMub3BhY2l0eTw9MX0saGV4OmdlLGZvcm1hdEhleDpnZSxmb3JtYXRIZXg4OnB0LGZvcm1hdFJnYjptZSx0b1N0cmluZzptZX0pKTtmdW5jdGlvbiBnZSgpe3JldHVybmAjJHtKKHRoaXMucil9JHtKKHRoaXMuZyl9JHtKKHRoaXMuYil9YH1mdW5jdGlvbiBwdCgpe3JldHVybmAjJHtKKHRoaXMucil9JHtKKHRoaXMuZyl9JHtKKHRoaXMuYil9JHtKKChpc05hTih0aGlzLm9wYWNpdHkpPzE6dGhpcy5vcGFjaXR5KSoyNTUpfWB9ZnVuY3Rpb24gbWUoKXtjb25zdCBuPWtuKHRoaXMub3BhY2l0eSk7cmV0dXJuYCR7bj09PTE/InJnYigiOiJyZ2JhKCJ9JHtHKHRoaXMucil9LCAke0codGhpcy5nKX0sICR7Ryh0aGlzLmIpfSR7bj09PTE/IikiOmAsICR7bn0pYH1gfWZ1bmN0aW9uIGtuKG4pe3JldHVybiBpc05hTihuKT8xOk1hdGgubWF4KDAsTWF0aC5taW4oMSxuKSl9ZnVuY3Rpb24gRyhuKXtyZXR1cm4gTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZChuKXx8MCkpfWZ1bmN0aW9uIEoobil7cmV0dXJuIG49RyhuKSwobjwxNj8iMCI6IiIpK24udG9TdHJpbmcoMTYpfWZ1bmN0aW9uIGRlKG4sZSx0LHIpe3JldHVybiByPD0wP249ZT10PU5hTjp0PD0wfHx0Pj0xP249ZT1OYU46ZTw9MCYmKG49TmFOKSxuZXcgXyhuLGUsdCxyKX1mdW5jdGlvbiB5ZShuKXtpZihuIGluc3RhbmNlb2YgXylyZXR1cm4gbmV3IF8obi5oLG4ucyxuLmwsbi5vcGFjaXR5KTtpZihuIGluc3RhbmNlb2YgZG58fChuPXBuKG4pKSwhbilyZXR1cm4gbmV3IF87aWYobiBpbnN0YW5jZW9mIF8pcmV0dXJuIG47bj1uLnJnYigpO3ZhciBlPW4uci8yNTUsdD1uLmcvMjU1LHI9bi5iLzI1NSxvPU1hdGgubWluKGUsdCxyKSxpPU1hdGgubWF4KGUsdCxyKSxhPU5hTix1PWktbyxsPShpK28pLzI7cmV0dXJuIHU/KGU9PT1pP2E9KHQtcikvdSsodDxyKSo2OnQ9PT1pP2E9KHItZSkvdSsyOmE9KGUtdCkvdSs0LHUvPWw8LjU/aStvOjItaS1vLGEqPTYwKTp1PWw+MCYmbDwxPzA6YSxuZXcgXyhhLHUsbCxuLm9wYWNpdHkpfWZ1bmN0aW9uIHd0KG4sZSx0LHIpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPT09MT95ZShuKTpuZXcgXyhuLGUsdCxyPz8xKX1mdW5jdGlvbiBfKG4sZSx0LHIpe3RoaXMuaD0rbix0aGlzLnM9K2UsdGhpcy5sPSt0LHRoaXMub3BhY2l0eT0rcn16bihfLHd0LGZlKGRuLHticmlnaHRlcihuKXtyZXR1cm4gbj1uPT1udWxsP1VuOk1hdGgucG93KFVuLG4pLG5ldyBfKHRoaXMuaCx0aGlzLnMsdGhpcy5sKm4sdGhpcy5vcGFjaXR5KX0sZGFya2VyKG4pe3JldHVybiBuPW49PW51bGw/eW46TWF0aC5wb3coeW4sbiksbmV3IF8odGhpcy5oLHRoaXMucyx0aGlzLmwqbix0aGlzLm9wYWNpdHkpfSxyZ2IoKXt2YXIgbj10aGlzLmglMzYwKyh0aGlzLmg8MCkqMzYwLGU9aXNOYU4obil8fGlzTmFOKHRoaXMucyk/MDp0aGlzLnMsdD10aGlzLmwscj10Kyh0PC41P3Q6MS10KSplLG89Mip0LXI7cmV0dXJuIG5ldyBQKF9uKG4+PTI0MD9uLTI0MDpuKzEyMCxvLHIpLF9uKG4sbyxyKSxfbihuPDEyMD9uKzI0MDpuLTEyMCxvLHIpLHRoaXMub3BhY2l0eSl9LGNsYW1wKCl7cmV0dXJuIG5ldyBfKHhlKHRoaXMuaCksU24odGhpcy5zKSxTbih0aGlzLmwpLGtuKHRoaXMub3BhY2l0eSkpfSxkaXNwbGF5YWJsZSgpe3JldHVybigwPD10aGlzLnMmJnRoaXMuczw9MXx8aXNOYU4odGhpcy5zKSkmJjA8PXRoaXMubCYmdGhpcy5sPD0xJiYwPD10aGlzLm9wYWNpdHkmJnRoaXMub3BhY2l0eTw9MX0sZm9ybWF0SHNsKCl7Y29uc3Qgbj1rbih0aGlzLm9wYWNpdHkpO3JldHVybmAke249PT0xPyJoc2woIjoiaHNsYSgifSR7eGUodGhpcy5oKX0sICR7U24odGhpcy5zKSoxMDB9JSwgJHtTbih0aGlzLmwpKjEwMH0lJHtuPT09MT8iKSI6YCwgJHtufSlgfWB9fSkpO2Z1bmN0aW9uIHhlKG4pe3JldHVybiBuPShufHwwKSUzNjAsbjwwP24rMzYwOm59ZnVuY3Rpb24gU24obil7cmV0dXJuIE1hdGgubWF4KDAsTWF0aC5taW4oMSxufHwwKSl9ZnVuY3Rpb24gX24obixlLHQpe3JldHVybihuPDYwP2UrKHQtZSkqbi82MDpuPDE4MD90Om48MjQwP2UrKHQtZSkqKDI0MC1uKS82MDplKSoyNTV9dmFyIHFuPW49PigpPT5uO2Z1bmN0aW9uIE10KG4sZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBuK3QqZX19ZnVuY3Rpb24gYnQobixlLHQpe3JldHVybiBuPU1hdGgucG93KG4sdCksZT1NYXRoLnBvdyhlLHQpLW4sdD0xL3QsZnVuY3Rpb24ocil7cmV0dXJuIE1hdGgucG93KG4rciplLHQpfX1mdW5jdGlvbiB2dChuKXtyZXR1cm4obj0rbik9PTE/cGU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdC1lP2J0KGUsdCxuKTpxbihpc05hTihlKT90OmUpfX1mdW5jdGlvbiBwZShuLGUpe3ZhciB0PWUtbjtyZXR1cm4gdD9NdChuLHQpOnFuKGlzTmFOKG4pP2U6bil9dmFyIHdlPWZ1bmN0aW9uIG4oZSl7dmFyIHQ9dnQoZSk7ZnVuY3Rpb24gcihvLGkpe3ZhciBhPXQoKG89RW4obykpLnIsKGk9RW4oaSkpLnIpLHU9dChvLmcsaS5nKSxsPXQoby5iLGkuYiksZj1wZShvLm9wYWNpdHksaS5vcGFjaXR5KTtyZXR1cm4gZnVuY3Rpb24oZyl7cmV0dXJuIG8ucj1hKGcpLG8uZz11KGcpLG8uYj1sKGcpLG8ub3BhY2l0eT1mKGcpLG8rIiJ9fXJldHVybiByLmdhbW1hPW4scn0oMSk7ZnVuY3Rpb24gVHQobixlKXtlfHwoZT1bXSk7dmFyIHQ9bj9NYXRoLm1pbihlLmxlbmd0aCxuLmxlbmd0aCk6MCxyPWUuc2xpY2UoKSxvO3JldHVybiBmdW5jdGlvbihpKXtmb3Iobz0wO288dDsrK28pcltvXT1uW29dKigxLWkpK2Vbb10qaTtyZXR1cm4gcn19ZnVuY3Rpb24gQ3Qobil7cmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyhuKSYmIShuIGluc3RhbmNlb2YgRGF0YVZpZXcpfWZ1bmN0aW9uIE50KG4sZSl7dmFyIHQ9ZT9lLmxlbmd0aDowLHI9bj9NYXRoLm1pbih0LG4ubGVuZ3RoKTowLG89bmV3IEFycmF5KHIpLGk9bmV3IEFycmF5KHQpLGE7Zm9yKGE9MDthPHI7KythKW9bYV09Vm4oblthXSxlW2FdKTtmb3IoO2E8dDsrK2EpaVthXT1lW2FdO3JldHVybiBmdW5jdGlvbih1KXtmb3IoYT0wO2E8cjsrK2EpaVthXT1vW2FdKHUpO3JldHVybiBpfX1mdW5jdGlvbiBVdChuLGUpe3ZhciB0PW5ldyBEYXRlO3JldHVybiBuPStuLGU9K2UsZnVuY3Rpb24ocil7cmV0dXJuIHQuc2V0VGltZShuKigxLXIpK2UqciksdH19ZnVuY3Rpb24gJG4obixlKXtyZXR1cm4gbj0rbixlPStlLGZ1bmN0aW9uKHQpe3JldHVybiBuKigxLXQpK2UqdH19ZnVuY3Rpb24gRHQobixlKXt2YXIgdD17fSxyPXt9LG87KG49PT1udWxsfHx0eXBlb2YgbiE9Im9iamVjdCIpJiYobj17fSksKGU9PT1udWxsfHx0eXBlb2YgZSE9Im9iamVjdCIpJiYoZT17fSk7Zm9yKG8gaW4gZSlvIGluIG4/dFtvXT1WbihuW29dLGVbb10pOnJbb109ZVtvXTtyZXR1cm4gZnVuY3Rpb24oaSl7Zm9yKG8gaW4gdClyW29dPXRbb10oaSk7cmV0dXJuIHJ9fXZhciBqbj0vWy0rXT8oPzpcZCtcLj9cZCp8XC4/XGQrKSg/OltlRV1bLStdP1xkKyk/L2csWm49bmV3IFJlZ0V4cChqbi5zb3VyY2UsImciKTtmdW5jdGlvbiBrdChuKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbn19ZnVuY3Rpb24gU3Qobil7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBuKGUpKyIifX1mdW5jdGlvbiAkdChuLGUpe3ZhciB0PWpuLmxhc3RJbmRleD1abi5sYXN0SW5kZXg9MCxyLG8saSxhPS0xLHU9W10sbD1bXTtmb3Iobj1uKyIiLGU9ZSsiIjsocj1qbi5leGVjKG4pKSYmKG89Wm4uZXhlYyhlKSk7KShpPW8uaW5kZXgpPnQmJihpPWUuc2xpY2UodCxpKSx1W2FdP3VbYV0rPWk6dVsrK2FdPWkpLChyPXJbMF0pPT09KG89b1swXSk/dVthXT91W2FdKz1vOnVbKythXT1vOih1WysrYV09bnVsbCxsLnB1c2goe2k6YSx4OiRuKHIsbyl9KSksdD1abi5sYXN0SW5kZXg7cmV0dXJuIHQ8ZS5sZW5ndGgmJihpPWUuc2xpY2UodCksdVthXT91W2FdKz1pOnVbKythXT1pKSx1Lmxlbmd0aDwyP2xbMF0/U3QobFswXS54KTprdChlKTooZT1sLmxlbmd0aCxmdW5jdGlvbihmKXtmb3IodmFyIGc9MCxtO2c8ZTsrK2cpdVsobT1sW2ddKS5pXT1tLngoZik7cmV0dXJuIHUuam9pbigiIil9KX1mdW5jdGlvbiBWbihuLGUpe3ZhciB0PXR5cGVvZiBlLHI7cmV0dXJuIGU9PW51bGx8fHQ9PT0iYm9vbGVhbiI/cW4oZSk6KHQ9PT0ibnVtYmVyIj8kbjp0PT09InN0cmluZyI/KHI9cG4oZSkpPyhlPXIsd2UpOiR0OmUgaW5zdGFuY2VvZiBwbj93ZTplIGluc3RhbmNlb2YgRGF0ZT9VdDpDdChlKT9UdDpBcnJheS5pc0FycmF5KGUpP050OnR5cGVvZiBlLnZhbHVlT2YhPSJmdW5jdGlvbiImJnR5cGVvZiBlLnRvU3RyaW5nIT0iZnVuY3Rpb24ifHxpc05hTihlKT9EdDokbikobixlKX1mdW5jdGlvbiBGdChuLGUpe3JldHVybiBuPStuLGU9K2UsZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgucm91bmQobiooMS10KStlKnQpfX1mdW5jdGlvbiBIdChuKXtyZXR1cm4gTWF0aC5hYnMobj1NYXRoLnJvdW5kKG4pKT49MWUyMT9uLnRvTG9jYWxlU3RyaW5nKCJlbiIpLnJlcGxhY2UoLywvZywiIik6bi50b1N0cmluZygxMCl9ZnVuY3Rpb24gRm4obixlKXtpZigodD0obj1lP24udG9FeHBvbmVudGlhbChlLTEpOm4udG9FeHBvbmVudGlhbCgpKS5pbmRleE9mKCJlIikpPDApcmV0dXJuIG51bGw7dmFyIHQscj1uLnNsaWNlKDAsdCk7cmV0dXJuW3IubGVuZ3RoPjE/clswXStyLnNsaWNlKDIpOnIsK24uc2xpY2UodCsxKV19ZnVuY3Rpb24gb24obil7cmV0dXJuIG49Rm4oTWF0aC5hYnMobikpLG4/blsxXTpOYU59ZnVuY3Rpb24gTHQobixlKXtyZXR1cm4gZnVuY3Rpb24odCxyKXtmb3IodmFyIG89dC5sZW5ndGgsaT1bXSxhPTAsdT1uWzBdLGw9MDtvPjAmJnU+MCYmKGwrdSsxPnImJih1PU1hdGgubWF4KDEsci1sKSksaS5wdXNoKHQuc3Vic3RyaW5nKG8tPXUsbyt1KSksISgobCs9dSsxKT5yKSk7KXU9blthPShhKzEpJW4ubGVuZ3RoXTtyZXR1cm4gaS5yZXZlcnNlKCkuam9pbihlKX19ZnVuY3Rpb24gUHQobil7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoL1swLTldL2csZnVuY3Rpb24odCl7cmV0dXJuIG5bK3RdfSl9fXZhciBZdD0vXig/OiguKT8oWzw+PV5dKSk/KFsrXC0oIF0pPyhbJCNdKT8oMCk/KFxkKyk/KCwpPyhcLlxkKyk/KH4pPyhbYS16JV0pPyQvaTtmdW5jdGlvbiBIbihuKXtpZighKGU9WXQuZXhlYyhuKSkpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGZvcm1hdDogIituKTt2YXIgZTtyZXR1cm4gbmV3IFhuKHtmaWxsOmVbMV0sYWxpZ246ZVsyXSxzaWduOmVbM10sc3ltYm9sOmVbNF0semVybzplWzVdLHdpZHRoOmVbNl0sY29tbWE6ZVs3XSxwcmVjaXNpb246ZVs4XSYmZVs4XS5zbGljZSgxKSx0cmltOmVbOV0sdHlwZTplWzEwXX0pfUhuLnByb3RvdHlwZT1Ybi5wcm90b3R5cGU7ZnVuY3Rpb24gWG4obil7dGhpcy5maWxsPW4uZmlsbD09PXZvaWQgMD8iICI6bi5maWxsKyIiLHRoaXMuYWxpZ249bi5hbGlnbj09PXZvaWQgMD8iPiI6bi5hbGlnbisiIix0aGlzLnNpZ249bi5zaWduPT09dm9pZCAwPyItIjpuLnNpZ24rIiIsdGhpcy5zeW1ib2w9bi5zeW1ib2w9PT12b2lkIDA/IiI6bi5zeW1ib2wrIiIsdGhpcy56ZXJvPSEhbi56ZXJvLHRoaXMud2lkdGg9bi53aWR0aD09PXZvaWQgMD92b2lkIDA6K24ud2lkdGgsdGhpcy5jb21tYT0hIW4uY29tbWEsdGhpcy5wcmVjaXNpb249bi5wcmVjaXNpb249PT12b2lkIDA/dm9pZCAwOituLnByZWNpc2lvbix0aGlzLnRyaW09ISFuLnRyaW0sdGhpcy50eXBlPW4udHlwZT09PXZvaWQgMD8iIjpuLnR5cGUrIiJ9WG4ucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmlsbCt0aGlzLmFsaWduK3RoaXMuc2lnbit0aGlzLnN5bWJvbCsodGhpcy56ZXJvPyIwIjoiIikrKHRoaXMud2lkdGg9PT12b2lkIDA/IiI6TWF0aC5tYXgoMSx0aGlzLndpZHRofDApKSsodGhpcy5jb21tYT8iLCI6IiIpKyh0aGlzLnByZWNpc2lvbj09PXZvaWQgMD8iIjoiLiIrTWF0aC5tYXgoMCx0aGlzLnByZWNpc2lvbnwwKSkrKHRoaXMudHJpbT8ifiI6IiIpK3RoaXMudHlwZX07ZnVuY3Rpb24gV3Qobil7bjpmb3IodmFyIGU9bi5sZW5ndGgsdD0xLHI9LTEsbzt0PGU7Kyt0KXN3aXRjaChuW3RdKXtjYXNlIi4iOnI9bz10O2JyZWFrO2Nhc2UiMCI6cj09PTAmJihyPXQpLG89dDticmVhaztkZWZhdWx0OmlmKCErblt0XSlicmVhayBuO3I+MCYmKHI9MCk7YnJlYWt9cmV0dXJuIHI+MD9uLnNsaWNlKDAscikrbi5zbGljZShvKzEpOm59dmFyIE1lO2Z1bmN0aW9uIEF0KG4sZSl7dmFyIHQ9Rm4obixlKTtpZighdClyZXR1cm4gbisiIjt2YXIgcj10WzBdLG89dFsxXSxpPW8tKE1lPU1hdGgubWF4KC04LE1hdGgubWluKDgsTWF0aC5mbG9vcihvLzMpKSkqMykrMSxhPXIubGVuZ3RoO3JldHVybiBpPT09YT9yOmk+YT9yK25ldyBBcnJheShpLWErMSkuam9pbigiMCIpOmk+MD9yLnNsaWNlKDAsaSkrIi4iK3Iuc2xpY2UoaSk6IjAuIituZXcgQXJyYXkoMS1pKS5qb2luKCIwIikrRm4obixNYXRoLm1heCgwLGUraS0xKSlbMF19ZnVuY3Rpb24gYmUobixlKXt2YXIgdD1GbihuLGUpO2lmKCF0KXJldHVybiBuKyIiO3ZhciByPXRbMF0sbz10WzFdO3JldHVybiBvPDA/IjAuIituZXcgQXJyYXkoLW8pLmpvaW4oIjAiKStyOnIubGVuZ3RoPm8rMT9yLnNsaWNlKDAsbysxKSsiLiIrci5zbGljZShvKzEpOnIrbmV3IEFycmF5KG8tci5sZW5ndGgrMikuam9pbigiMCIpfXZhciB2ZT17IiUiOihuLGUpPT4obioxMDApLnRvRml4ZWQoZSksYjpuPT5NYXRoLnJvdW5kKG4pLnRvU3RyaW5nKDIpLGM6bj0+bisiIixkOkh0LGU6KG4sZSk9Pm4udG9FeHBvbmVudGlhbChlKSxmOihuLGUpPT5uLnRvRml4ZWQoZSksZzoobixlKT0+bi50b1ByZWNpc2lvbihlKSxvOm49Pk1hdGgucm91bmQobikudG9TdHJpbmcoOCkscDoobixlKT0+YmUobioxMDAsZSkscjpiZSxzOkF0LFg6bj0+TWF0aC5yb3VuZChuKS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKSx4Om49Pk1hdGgucm91bmQobikudG9TdHJpbmcoMTYpfTtmdW5jdGlvbiBUZShuKXtyZXR1cm4gbn12YXIgQ2U9QXJyYXkucHJvdG90eXBlLm1hcCxOZT1bInkiLCJ6IiwiYSIsImYiLCJwIiwibiIsIsK1IiwibSIsIiIsImsiLCJNIiwiRyIsIlQiLCJQIiwiRSIsIloiLCJZIl07ZnVuY3Rpb24gUnQobil7dmFyIGU9bi5ncm91cGluZz09PXZvaWQgMHx8bi50aG91c2FuZHM9PT12b2lkIDA/VGU6THQoQ2UuY2FsbChuLmdyb3VwaW5nLE51bWJlciksbi50aG91c2FuZHMrIiIpLHQ9bi5jdXJyZW5jeT09PXZvaWQgMD8iIjpuLmN1cnJlbmN5WzBdKyIiLHI9bi5jdXJyZW5jeT09PXZvaWQgMD8iIjpuLmN1cnJlbmN5WzFdKyIiLG89bi5kZWNpbWFsPT09dm9pZCAwPyIuIjpuLmRlY2ltYWwrIiIsaT1uLm51bWVyYWxzPT09dm9pZCAwP1RlOlB0KENlLmNhbGwobi5udW1lcmFscyxTdHJpbmcpKSxhPW4ucGVyY2VudD09PXZvaWQgMD8iJSI6bi5wZXJjZW50KyIiLHU9bi5taW51cz09PXZvaWQgMD8i4oiSIjpuLm1pbnVzKyIiLGw9bi5uYW49PT12b2lkIDA/Ik5hTiI6bi5uYW4rIiI7ZnVuY3Rpb24gZihtKXttPUhuKG0pO3ZhciBwPW0uZmlsbCxEPW0uYWxpZ24saz1tLnNpZ24sUj1tLnN5bWJvbCxZPW0uemVybyxxPW0ud2lkdGgsRT1tLmNvbW1hLCQ9bS5wcmVjaXNpb24sVz1tLnRyaW0saD1tLnR5cGU7aD09PSJuIj8oRT0hMCxoPSJnIik6dmVbaF18fCgkPT09dm9pZCAwJiYoJD0xMiksVz0hMCxoPSJnIiksKFl8fHA9PT0iMCImJkQ9PT0iPSIpJiYoWT0hMCxwPSIwIixEPSI9Iik7dmFyIGM9Uj09PSIkIj90OlI9PT0iIyImJi9bYm94WF0vLnRlc3QoaCk/IjAiK2gudG9Mb3dlckNhc2UoKToiIix4PVI9PT0iJCI/cjovWyVwXS8udGVzdChoKT9hOiIiLHc9dmVbaF0sTj0vW2RlZmdwcnMlXS8udGVzdChoKTskPSQ9PT12b2lkIDA/NjovW2dwcnNdLy50ZXN0KGgpP01hdGgubWF4KDEsTWF0aC5taW4oMjEsJCkpOk1hdGgubWF4KDAsTWF0aC5taW4oMjAsJCkpO2Z1bmN0aW9uIHYoeSl7dmFyIEM9YyxTPXgsRixsbixobjtpZihoPT09ImMiKVM9dyh5KStTLHk9IiI7ZWxzZXt5PSt5O3ZhciBnbj15PDB8fDEveTwwO2lmKHk9aXNOYU4oeSk/bDp3KE1hdGguYWJzKHkpLCQpLFcmJih5PVd0KHkpKSxnbiYmK3k9PTAmJmshPT0iKyImJihnbj0hMSksQz0oZ24/az09PSIoIj9rOnU6az09PSItInx8az09PSIoIj8iIjprKStDLFM9KGg9PT0icyI/TmVbOCtNZS8zXToiIikrUysoZ24mJms9PT0iKCI/IikiOiIiKSxOKXtmb3IoRj0tMSxsbj15Lmxlbmd0aDsrK0Y8bG47KWlmKGhuPXkuY2hhckNvZGVBdChGKSw0OD5obnx8aG4+NTcpe1M9KGhuPT09NDY/byt5LnNsaWNlKEYrMSk6eS5zbGljZShGKSkrUyx5PXkuc2xpY2UoMCxGKTticmVha319fUUmJiFZJiYoeT1lKHksMS8wKSk7dmFyIG1uPUMubGVuZ3RoK3kubGVuZ3RoK1MubGVuZ3RoLGo9bW48cT9uZXcgQXJyYXkocS1tbisxKS5qb2luKHApOiIiO3N3aXRjaChFJiZZJiYoeT1lKGoreSxqLmxlbmd0aD9xLVMubGVuZ3RoOjEvMCksaj0iIiksRCl7Y2FzZSI8Ijp5PUMreStTK2o7YnJlYWs7Y2FzZSI9Ijp5PUMrait5K1M7YnJlYWs7Y2FzZSJeIjp5PWouc2xpY2UoMCxtbj1qLmxlbmd0aD4+MSkrQyt5K1Mrai5zbGljZShtbik7YnJlYWs7ZGVmYXVsdDp5PWorQyt5K1M7YnJlYWt9cmV0dXJuIGkoeSl9cmV0dXJuIHYudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gbSsiIn0sdn1mdW5jdGlvbiBnKG0scCl7dmFyIEQ9ZigobT1IbihtKSxtLnR5cGU9ImYiLG0pKSxrPU1hdGgubWF4KC04LE1hdGgubWluKDgsTWF0aC5mbG9vcihvbihwKS8zKSkpKjMsUj1NYXRoLnBvdygxMCwtayksWT1OZVs4K2svM107cmV0dXJuIGZ1bmN0aW9uKHEpe3JldHVybiBEKFIqcSkrWX19cmV0dXJue2Zvcm1hdDpmLGZvcm1hdFByZWZpeDpnfX12YXIgTG4sVWUsRGU7SXQoe3Rob3VzYW5kczoiLCIsZ3JvdXBpbmc6WzNdLGN1cnJlbmN5OlsiJCIsIiJdfSk7ZnVuY3Rpb24gSXQobil7cmV0dXJuIExuPVJ0KG4pLFVlPUxuLmZvcm1hdCxEZT1Mbi5mb3JtYXRQcmVmaXgsTG59ZnVuY3Rpb24gT3Qobil7cmV0dXJuIE1hdGgubWF4KDAsLW9uKE1hdGguYWJzKG4pKSl9ZnVuY3Rpb24genQobixlKXtyZXR1cm4gTWF0aC5tYXgoMCxNYXRoLm1heCgtOCxNYXRoLm1pbig4LE1hdGguZmxvb3Iob24oZSkvMykpKSozLW9uKE1hdGguYWJzKG4pKSl9ZnVuY3Rpb24gRXQobixlKXtyZXR1cm4gbj1NYXRoLmFicyhuKSxlPU1hdGguYWJzKGUpLW4sTWF0aC5tYXgoMCxvbihlKS1vbihuKSkrMX1mdW5jdGlvbiBrZShuLGUpe3N3aXRjaChhcmd1bWVudHMubGVuZ3RoKXtjYXNlIDA6YnJlYWs7Y2FzZSAxOnRoaXMucmFuZ2Uobik7YnJlYWs7ZGVmYXVsdDp0aGlzLnJhbmdlKGUpLmRvbWFpbihuKTticmVha31yZXR1cm4gdGhpc31mdW5jdGlvbiBfdChuKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbn19ZnVuY3Rpb24gcXQobil7cmV0dXJuK259dmFyIFNlPVswLDFdO2Z1bmN0aW9uIGFuKG4pe3JldHVybiBufWZ1bmN0aW9uIEJuKG4sZSl7cmV0dXJuKGUtPW49K24pP2Z1bmN0aW9uKHQpe3JldHVybih0LW4pL2V9Ol90KGlzTmFOKGUpP05hTjouNSl9ZnVuY3Rpb24ganQobixlKXt2YXIgdDtyZXR1cm4gbj5lJiYodD1uLG49ZSxlPXQpLGZ1bmN0aW9uKHIpe3JldHVybiBNYXRoLm1heChuLE1hdGgubWluKGUscikpfX1mdW5jdGlvbiBadChuLGUsdCl7dmFyIHI9blswXSxvPW5bMV0saT1lWzBdLGE9ZVsxXTtyZXR1cm4gbzxyPyhyPUJuKG8sciksaT10KGEsaSkpOihyPUJuKHIsbyksaT10KGksYSkpLGZ1bmN0aW9uKHUpe3JldHVybiBpKHIodSkpfX1mdW5jdGlvbiBWdChuLGUsdCl7dmFyIHI9TWF0aC5taW4obi5sZW5ndGgsZS5sZW5ndGgpLTEsbz1uZXcgQXJyYXkociksaT1uZXcgQXJyYXkociksYT0tMTtmb3IobltyXTxuWzBdJiYobj1uLnNsaWNlKCkucmV2ZXJzZSgpLGU9ZS5zbGljZSgpLnJldmVyc2UoKSk7KythPHI7KW9bYV09Qm4oblthXSxuW2ErMV0pLGlbYV09dChlW2FdLGVbYSsxXSk7cmV0dXJuIGZ1bmN0aW9uKHUpe3ZhciBsPXJ0KG4sdSwxLHIpLTE7cmV0dXJuIGlbbF0ob1tsXSh1KSl9fWZ1bmN0aW9uICRlKG4sZSl7cmV0dXJuIGUuZG9tYWluKG4uZG9tYWluKCkpLnJhbmdlKG4ucmFuZ2UoKSkuaW50ZXJwb2xhdGUobi5pbnRlcnBvbGF0ZSgpKS5jbGFtcChuLmNsYW1wKCkpLnVua25vd24obi51bmtub3duKCkpfWZ1bmN0aW9uIFh0KCl7dmFyIG49U2UsZT1TZSx0PVZuLHIsbyxpLGE9YW4sdSxsLGY7ZnVuY3Rpb24gZygpe3ZhciBwPU1hdGgubWluKG4ubGVuZ3RoLGUubGVuZ3RoKTtyZXR1cm4gYSE9PWFuJiYoYT1qdChuWzBdLG5bcC0xXSkpLHU9cD4yP1Z0Olp0LGw9Zj1udWxsLG19ZnVuY3Rpb24gbShwKXtyZXR1cm4gcD09bnVsbHx8aXNOYU4ocD0rcCk/aToobHx8KGw9dShuLm1hcChyKSxlLHQpKSkocihhKHApKSl9cmV0dXJuIG0uaW52ZXJ0PWZ1bmN0aW9uKHApe3JldHVybiBhKG8oKGZ8fChmPXUoZSxuLm1hcChyKSwkbikpKShwKSkpfSxtLmRvbWFpbj1mdW5jdGlvbihwKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1BcnJheS5mcm9tKHAscXQpLGcoKSk6bi5zbGljZSgpfSxtLnJhbmdlPWZ1bmN0aW9uKHApe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPUFycmF5LmZyb20ocCksZygpKTplLnNsaWNlKCl9LG0ucmFuZ2VSb3VuZD1mdW5jdGlvbihwKXtyZXR1cm4gZT1BcnJheS5mcm9tKHApLHQ9RnQsZygpfSxtLmNsYW1wPWZ1bmN0aW9uKHApe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPXA/ITA6YW4sZygpKTphIT09YW59LG0uaW50ZXJwb2xhdGU9ZnVuY3Rpb24ocCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9cCxnKCkpOnR9LG0udW5rbm93bj1mdW5jdGlvbihwKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT1wLG0pOml9LGZ1bmN0aW9uKHAsRCl7cmV0dXJuIHI9cCxvPUQsZygpfX1mdW5jdGlvbiBGZSgpe3JldHVybiBYdCgpKGFuLGFuKX1mdW5jdGlvbiBCdChuLGUsdCxyKXt2YXIgbz1PbihuLGUsdCksaTtzd2l0Y2gocj1IbihyPz8iLGYiKSxyLnR5cGUpe2Nhc2UicyI6e3ZhciBhPU1hdGgubWF4KE1hdGguYWJzKG4pLE1hdGguYWJzKGUpKTtyZXR1cm4gci5wcmVjaXNpb249PW51bGwmJiFpc05hTihpPXp0KG8sYSkpJiYoci5wcmVjaXNpb249aSksRGUocixhKX1jYXNlIiI6Y2FzZSJlIjpjYXNlImciOmNhc2UicCI6Y2FzZSJyIjp7ci5wcmVjaXNpb249PW51bGwmJiFpc05hTihpPUV0KG8sTWF0aC5tYXgoTWF0aC5hYnMobiksTWF0aC5hYnMoZSkpKSkmJihyLnByZWNpc2lvbj1pLShyLnR5cGU9PT0iZSIpKTticmVha31jYXNlImYiOmNhc2UiJSI6e3IucHJlY2lzaW9uPT1udWxsJiYhaXNOYU4oaT1PdChvKSkmJihyLnByZWNpc2lvbj1pLShyLnR5cGU9PT0iJSIpKjIpO2JyZWFrfX1yZXR1cm4gVWUocil9ZnVuY3Rpb24gUXQobil7dmFyIGU9bi5kb21haW47cmV0dXJuIG4udGlja3M9ZnVuY3Rpb24odCl7dmFyIHI9ZSgpO3JldHVybiB1dChyWzBdLHJbci5sZW5ndGgtMV0sdD8/MTApfSxuLnRpY2tGb3JtYXQ9ZnVuY3Rpb24odCxyKXt2YXIgbz1lKCk7cmV0dXJuIEJ0KG9bMF0sb1tvLmxlbmd0aC0xXSx0Pz8xMCxyKX0sbi5uaWNlPWZ1bmN0aW9uKHQpe3Q9PW51bGwmJih0PTEwKTt2YXIgcj1lKCksbz0wLGk9ci5sZW5ndGgtMSxhPXJbb10sdT1yW2ldLGwsZixnPTEwO2Zvcih1PGEmJihmPWEsYT11LHU9ZixmPW8sbz1pLGk9Zik7Zy0tID4wOyl7aWYoZj1JbihhLHUsdCksZj09PWwpcmV0dXJuIHJbb109YSxyW2ldPXUsZShyKTtpZihmPjApYT1NYXRoLmZsb29yKGEvZikqZix1PU1hdGguY2VpbCh1L2YpKmY7ZWxzZSBpZihmPDApYT1NYXRoLmNlaWwoYSpmKS9mLHU9TWF0aC5mbG9vcih1KmYpL2Y7ZWxzZSBicmVhaztsPWZ9cmV0dXJuIG59LG59ZnVuY3Rpb24gSGUoKXt2YXIgbj1GZSgpO3JldHVybiBuLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gJGUobixIZSgpKX0sa2UuYXBwbHkobixhcmd1bWVudHMpLFF0KG4pfWZ1bmN0aW9uIEd0KG4sZSl7bj1uLnNsaWNlKCk7dmFyIHQ9MCxyPW4ubGVuZ3RoLTEsbz1uW3RdLGk9bltyXSxhO3JldHVybiBpPG8mJihhPXQsdD1yLHI9YSxhPW8sbz1pLGk9YSksblt0XT1lLmZsb29yKG8pLG5bcl09ZS5jZWlsKGkpLG59Y29uc3QgUW49bmV3IERhdGUsR249bmV3IERhdGU7ZnVuY3Rpb24gSChuLGUsdCxyKXtmdW5jdGlvbiBvKGkpe3JldHVybiBuKGk9YXJndW1lbnRzLmxlbmd0aD09PTA/bmV3IERhdGU6bmV3IERhdGUoK2kpKSxpfXJldHVybiBvLmZsb29yPWk9PihuKGk9bmV3IERhdGUoK2kpKSxpKSxvLmNlaWw9aT0+KG4oaT1uZXcgRGF0ZShpLTEpKSxlKGksMSksbihpKSxpKSxvLnJvdW5kPWk9Pntjb25zdCBhPW8oaSksdT1vLmNlaWwoaSk7cmV0dXJuIGktYTx1LWk/YTp1fSxvLm9mZnNldD0oaSxhKT0+KGUoaT1uZXcgRGF0ZSgraSksYT09bnVsbD8xOk1hdGguZmxvb3IoYSkpLGkpLG8ucmFuZ2U9KGksYSx1KT0+e2NvbnN0IGw9W107aWYoaT1vLmNlaWwoaSksdT11PT1udWxsPzE6TWF0aC5mbG9vcih1KSwhKGk8YSl8fCEodT4wKSlyZXR1cm4gbDtsZXQgZjtkbyBsLnB1c2goZj1uZXcgRGF0ZSgraSkpLGUoaSx1KSxuKGkpO3doaWxlKGY8aSYmaTxhKTtyZXR1cm4gbH0sby5maWx0ZXI9aT0+SChhPT57aWYoYT49YSlmb3IoO24oYSksIWkoYSk7KWEuc2V0VGltZShhLTEpfSwoYSx1KT0+e2lmKGE+PWEpaWYodTwwKWZvcig7Kyt1PD0wOylmb3IoO2UoYSwtMSksIWkoYSk7KTtlbHNlIGZvcig7LS11Pj0wOylmb3IoO2UoYSwxKSwhaShhKTspO30pLHQmJihvLmNvdW50PShpLGEpPT4oUW4uc2V0VGltZSgraSksR24uc2V0VGltZSgrYSksbihRbiksbihHbiksTWF0aC5mbG9vcih0KFFuLEduKSkpLG8uZXZlcnk9aT0+KGk9TWF0aC5mbG9vcihpKSwhaXNGaW5pdGUoaSl8fCEoaT4wKT9udWxsOmk+MT9vLmZpbHRlcihyP2E9PnIoYSklaT09PTA6YT0+by5jb3VudCgwLGEpJWk9PT0wKTpvKSksb31jb25zdCBQbj1IKCgpPT57fSwobixlKT0+e24uc2V0VGltZSgrbitlKX0sKG4sZSk9PmUtbik7UG4uZXZlcnk9bj0+KG49TWF0aC5mbG9vcihuKSwhaXNGaW5pdGUobil8fCEobj4wKT9udWxsOm4+MT9IKGU9PntlLnNldFRpbWUoTWF0aC5mbG9vcihlL24pKm4pfSwoZSx0KT0+e2Uuc2V0VGltZSgrZSt0Km4pfSwoZSx0KT0+KHQtZSkvbik6UG4pLFBuLnJhbmdlO2NvbnN0IFY9MWUzLHo9Vio2MCxYPXoqNjAsQj1YKjI0LEpuPUIqNyxMZT1CKjMwLEtuPUIqMzY1LHVuPUgobj0+e24uc2V0VGltZShuLW4uZ2V0TWlsbGlzZWNvbmRzKCkpfSwobixlKT0+e24uc2V0VGltZSgrbitlKlYpfSwobixlKT0+KGUtbikvVixuPT5uLmdldFVUQ1NlY29uZHMoKSk7dW4ucmFuZ2U7Y29uc3QgbmU9SChuPT57bi5zZXRUaW1lKG4tbi5nZXRNaWxsaXNlY29uZHMoKS1uLmdldFNlY29uZHMoKSpWKX0sKG4sZSk9PntuLnNldFRpbWUoK24rZSp6KX0sKG4sZSk9PihlLW4pL3osbj0+bi5nZXRNaW51dGVzKCkpO25lLnJhbmdlLEgobj0+e24uc2V0VVRDU2Vjb25kcygwLDApfSwobixlKT0+e24uc2V0VGltZSgrbitlKnopfSwobixlKT0+KGUtbikveixuPT5uLmdldFVUQ01pbnV0ZXMoKSkucmFuZ2U7Y29uc3QgZWU9SChuPT57bi5zZXRUaW1lKG4tbi5nZXRNaWxsaXNlY29uZHMoKS1uLmdldFNlY29uZHMoKSpWLW4uZ2V0TWludXRlcygpKnopfSwobixlKT0+e24uc2V0VGltZSgrbitlKlgpfSwobixlKT0+KGUtbikvWCxuPT5uLmdldEhvdXJzKCkpO2VlLnJhbmdlLEgobj0+e24uc2V0VVRDTWludXRlcygwLDAsMCl9LChuLGUpPT57bi5zZXRUaW1lKCtuK2UqWCl9LChuLGUpPT4oZS1uKS9YLG49Pm4uZ2V0VVRDSG91cnMoKSkucmFuZ2U7Y29uc3Qgd249SChuPT5uLnNldEhvdXJzKDAsMCwwLDApLChuLGUpPT5uLnNldERhdGUobi5nZXREYXRlKCkrZSksKG4sZSk9PihlLW4tKGUuZ2V0VGltZXpvbmVPZmZzZXQoKS1uLmdldFRpbWV6b25lT2Zmc2V0KCkpKnopL0Isbj0+bi5nZXREYXRlKCktMSk7d24ucmFuZ2U7Y29uc3QgdGU9SChuPT57bi5zZXRVVENIb3VycygwLDAsMCwwKX0sKG4sZSk9PntuLnNldFVUQ0RhdGUobi5nZXRVVENEYXRlKCkrZSl9LChuLGUpPT4oZS1uKS9CLG49Pm4uZ2V0VVRDRGF0ZSgpLTEpO3RlLnJhbmdlLEgobj0+e24uc2V0VVRDSG91cnMoMCwwLDAsMCl9LChuLGUpPT57bi5zZXRVVENEYXRlKG4uZ2V0VVRDRGF0ZSgpK2UpfSwobixlKT0+KGUtbikvQixuPT5NYXRoLmZsb29yKG4vQikpLnJhbmdlO2Z1bmN0aW9uIEsobil7cmV0dXJuIEgoZT0+e2Uuc2V0RGF0ZShlLmdldERhdGUoKS0oZS5nZXREYXkoKSs3LW4pJTcpLGUuc2V0SG91cnMoMCwwLDAsMCl9LChlLHQpPT57ZS5zZXREYXRlKGUuZ2V0RGF0ZSgpK3QqNyl9LChlLHQpPT4odC1lLSh0LmdldFRpbWV6b25lT2Zmc2V0KCktZS5nZXRUaW1lem9uZU9mZnNldCgpKSp6KS9Kbil9Y29uc3QgWW49SygwKSxXbj1LKDEpLEp0PUsoMiksS3Q9SygzKSxmbj1LKDQpLG5yPUsoNSksZXI9Syg2KTtZbi5yYW5nZSxXbi5yYW5nZSxKdC5yYW5nZSxLdC5yYW5nZSxmbi5yYW5nZSxuci5yYW5nZSxlci5yYW5nZTtmdW5jdGlvbiBubihuKXtyZXR1cm4gSChlPT57ZS5zZXRVVENEYXRlKGUuZ2V0VVRDRGF0ZSgpLShlLmdldFVUQ0RheSgpKzctbiklNyksZS5zZXRVVENIb3VycygwLDAsMCwwKX0sKGUsdCk9PntlLnNldFVUQ0RhdGUoZS5nZXRVVENEYXRlKCkrdCo3KX0sKGUsdCk9Pih0LWUpL0puKX1jb25zdCBQZT1ubigwKSxBbj1ubigxKSx0cj1ubigyKSxycj1ubigzKSxjbj1ubig0KSxvcj1ubig1KSxpcj1ubig2KTtQZS5yYW5nZSxBbi5yYW5nZSx0ci5yYW5nZSxyci5yYW5nZSxjbi5yYW5nZSxvci5yYW5nZSxpci5yYW5nZTtjb25zdCByZT1IKG49PntuLnNldERhdGUoMSksbi5zZXRIb3VycygwLDAsMCwwKX0sKG4sZSk9PntuLnNldE1vbnRoKG4uZ2V0TW9udGgoKStlKX0sKG4sZSk9PmUuZ2V0TW9udGgoKS1uLmdldE1vbnRoKCkrKGUuZ2V0RnVsbFllYXIoKS1uLmdldEZ1bGxZZWFyKCkpKjEyLG49Pm4uZ2V0TW9udGgoKSk7cmUucmFuZ2UsSChuPT57bi5zZXRVVENEYXRlKDEpLG4uc2V0VVRDSG91cnMoMCwwLDAsMCl9LChuLGUpPT57bi5zZXRVVENNb250aChuLmdldFVUQ01vbnRoKCkrZSl9LChuLGUpPT5lLmdldFVUQ01vbnRoKCktbi5nZXRVVENNb250aCgpKyhlLmdldFVUQ0Z1bGxZZWFyKCktbi5nZXRVVENGdWxsWWVhcigpKSoxMixuPT5uLmdldFVUQ01vbnRoKCkpLnJhbmdlO2NvbnN0IFE9SChuPT57bi5zZXRNb250aCgwLDEpLG4uc2V0SG91cnMoMCwwLDAsMCl9LChuLGUpPT57bi5zZXRGdWxsWWVhcihuLmdldEZ1bGxZZWFyKCkrZSl9LChuLGUpPT5lLmdldEZ1bGxZZWFyKCktbi5nZXRGdWxsWWVhcigpLG49Pm4uZ2V0RnVsbFllYXIoKSk7US5ldmVyeT1uPT4haXNGaW5pdGUobj1NYXRoLmZsb29yKG4pKXx8IShuPjApP251bGw6SChlPT57ZS5zZXRGdWxsWWVhcihNYXRoLmZsb29yKGUuZ2V0RnVsbFllYXIoKS9uKSpuKSxlLnNldE1vbnRoKDAsMSksZS5zZXRIb3VycygwLDAsMCwwKX0sKGUsdCk9PntlLnNldEZ1bGxZZWFyKGUuZ2V0RnVsbFllYXIoKSt0Km4pfSksUS5yYW5nZTtjb25zdCBlbj1IKG49PntuLnNldFVUQ01vbnRoKDAsMSksbi5zZXRVVENIb3VycygwLDAsMCwwKX0sKG4sZSk9PntuLnNldFVUQ0Z1bGxZZWFyKG4uZ2V0VVRDRnVsbFllYXIoKStlKX0sKG4sZSk9PmUuZ2V0VVRDRnVsbFllYXIoKS1uLmdldFVUQ0Z1bGxZZWFyKCksbj0+bi5nZXRVVENGdWxsWWVhcigpKTtlbi5ldmVyeT1uPT4haXNGaW5pdGUobj1NYXRoLmZsb29yKG4pKXx8IShuPjApP251bGw6SChlPT57ZS5zZXRVVENGdWxsWWVhcihNYXRoLmZsb29yKGUuZ2V0VVRDRnVsbFllYXIoKS9uKSpuKSxlLnNldFVUQ01vbnRoKDAsMSksZS5zZXRVVENIb3VycygwLDAsMCwwKX0sKGUsdCk9PntlLnNldFVUQ0Z1bGxZZWFyKGUuZ2V0VVRDRnVsbFllYXIoKSt0Km4pfSksZW4ucmFuZ2U7ZnVuY3Rpb24gYXIobixlLHQscixvLGkpe2NvbnN0IGE9W1t1biwxLFZdLFt1biw1LDUqVl0sW3VuLDE1LDE1KlZdLFt1biwzMCwzMCpWXSxbaSwxLHpdLFtpLDUsNSp6XSxbaSwxNSwxNSp6XSxbaSwzMCwzMCp6XSxbbywxLFhdLFtvLDMsMypYXSxbbyw2LDYqWF0sW28sMTIsMTIqWF0sW3IsMSxCXSxbciwyLDIqQl0sW3QsMSxKbl0sW2UsMSxMZV0sW2UsMywzKkxlXSxbbiwxLEtuXV07ZnVuY3Rpb24gdShmLGcsbSl7Y29uc3QgcD1nPGY7cCYmKFtmLGddPVtnLGZdKTtjb25zdCBEPW0mJnR5cGVvZiBtLnJhbmdlPT0iZnVuY3Rpb24iP206bChmLGcsbSksaz1EP0QucmFuZ2UoZiwrZysxKTpbXTtyZXR1cm4gcD9rLnJldmVyc2UoKTprfWZ1bmN0aW9uIGwoZixnLG0pe2NvbnN0IHA9TWF0aC5hYnMoZy1mKS9tLEQ9Um4oKFssLFldKT0+WSkucmlnaHQoYSxwKTtpZihEPT09YS5sZW5ndGgpcmV0dXJuIG4uZXZlcnkoT24oZi9LbixnL0tuLG0pKTtpZihEPT09MClyZXR1cm4gUG4uZXZlcnkoTWF0aC5tYXgoT24oZixnLG0pLDEpKTtjb25zdFtrLFJdPWFbcC9hW0QtMV1bMl08YVtEXVsyXS9wP0QtMTpEXTtyZXR1cm4gay5ldmVyeShSKX1yZXR1cm5bdSxsXX1jb25zdFt1cixmcl09YXIoUSxyZSxZbix3bixlZSxuZSk7ZnVuY3Rpb24gb2Uobil7aWYoMDw9bi55JiZuLnk8MTAwKXt2YXIgZT1uZXcgRGF0ZSgtMSxuLm0sbi5kLG4uSCxuLk0sbi5TLG4uTCk7cmV0dXJuIGUuc2V0RnVsbFllYXIobi55KSxlfXJldHVybiBuZXcgRGF0ZShuLnksbi5tLG4uZCxuLkgsbi5NLG4uUyxuLkwpfWZ1bmN0aW9uIGllKG4pe2lmKDA8PW4ueSYmbi55PDEwMCl7dmFyIGU9bmV3IERhdGUoRGF0ZS5VVEMoLTEsbi5tLG4uZCxuLkgsbi5NLG4uUyxuLkwpKTtyZXR1cm4gZS5zZXRVVENGdWxsWWVhcihuLnkpLGV9cmV0dXJuIG5ldyBEYXRlKERhdGUuVVRDKG4ueSxuLm0sbi5kLG4uSCxuLk0sbi5TLG4uTCkpfWZ1bmN0aW9uIE1uKG4sZSx0KXtyZXR1cm57eTpuLG06ZSxkOnQsSDowLE06MCxTOjAsTDowfX1mdW5jdGlvbiBjcihuKXt2YXIgZT1uLmRhdGVUaW1lLHQ9bi5kYXRlLHI9bi50aW1lLG89bi5wZXJpb2RzLGk9bi5kYXlzLGE9bi5zaG9ydERheXMsdT1uLm1vbnRocyxsPW4uc2hvcnRNb250aHMsZj1ibihvKSxnPXZuKG8pLG09Ym4oaSkscD12bihpKSxEPWJuKGEpLGs9dm4oYSksUj1ibih1KSxZPXZuKHUpLHE9Ym4obCksRT12bihsKSwkPXthOmduLEE6bW4sYjpqLEI6U28sYzpudWxsLGQ6T2UsZTpPZSxmOkhyLGc6RXIsRzpxcixIOlNyLEk6JHIsajpGcixMOnplLG06THIsTTpQcixwOiRvLHE6Rm8sUTpWZSxzOlhlLFM6WXIsdTpXcixVOkFyLFY6UnIsdzpJcixXOk9yLHg6bnVsbCxYOm51bGwseTp6cixZOl9yLFo6anIsIiUiOlplfSxXPXthOkhvLEE6TG8sYjpQbyxCOllvLGM6bnVsbCxkOl9lLGU6X2UsZjpCcixnOmlvLEc6dW8sSDpacixJOlZyLGo6WHIsTDpxZSxtOlFyLE06R3IscDpXbyxxOkFvLFE6VmUsczpYZSxTOkpyLHU6S3IsVTpubyxWOmVvLHc6dG8sVzpybyx4Om51bGwsWDpudWxsLHk6b28sWTphbyxaOmZvLCIlIjpaZX0saD17YTp2LEE6eSxiOkMsQjpTLGM6RixkOlJlLGU6UmUsZjpOcixnOkFlLEc6V2UsSDpJZSxJOkllLGo6YnIsTDpDcixtOk1yLE06dnIscDpOLHE6d3IsUTpEcixzOmtyLFM6VHIsdTptcixVOmRyLFY6eXIsdzpncixXOnhyLHg6bG4sWDpobix5OkFlLFk6V2UsWjpwciwiJSI6VXJ9OyQueD1jKHQsJCksJC5YPWMociwkKSwkLmM9YyhlLCQpLFcueD1jKHQsVyksVy5YPWMocixXKSxXLmM9YyhlLFcpO2Z1bmN0aW9uIGMoZCxNKXtyZXR1cm4gZnVuY3Rpb24oVCl7dmFyIHM9W10sQT0tMSxVPTAsST1kLmxlbmd0aCxPLHRuLEplO2ZvcihUIGluc3RhbmNlb2YgRGF0ZXx8KFQ9bmV3IERhdGUoK1QpKTsrK0E8STspZC5jaGFyQ29kZUF0KEEpPT09MzcmJihzLnB1c2goZC5zbGljZShVLEEpKSwodG49WWVbTz1kLmNoYXJBdCgrK0EpXSkhPW51bGw/Tz1kLmNoYXJBdCgrK0EpOnRuPU89PT0iZSI/IiAiOiIwIiwoSmU9TVtPXSkmJihPPUplKFQsdG4pKSxzLnB1c2goTyksVT1BKzEpO3JldHVybiBzLnB1c2goZC5zbGljZShVLEEpKSxzLmpvaW4oIiIpfX1mdW5jdGlvbiB4KGQsTSl7cmV0dXJuIGZ1bmN0aW9uKFQpe3ZhciBzPU1uKDE5MDAsdm9pZCAwLDEpLEE9dyhzLGQsVCs9IiIsMCksVSxJO2lmKEEhPVQubGVuZ3RoKXJldHVybiBudWxsO2lmKCJRImluIHMpcmV0dXJuIG5ldyBEYXRlKHMuUSk7aWYoInMiaW4gcylyZXR1cm4gbmV3IERhdGUocy5zKjFlMysoIkwiaW4gcz9zLkw6MCkpO2lmKE0mJiEoIloiaW4gcykmJihzLlo9MCksInAiaW4gcyYmKHMuSD1zLkglMTIrcy5wKjEyKSxzLm09PT12b2lkIDAmJihzLm09InEiaW4gcz9zLnE6MCksIlYiaW4gcyl7aWYocy5WPDF8fHMuVj41MylyZXR1cm4gbnVsbDsidyJpbiBzfHwocy53PTEpLCJaImluIHM/KFU9aWUoTW4ocy55LDAsMSkpLEk9VS5nZXRVVENEYXkoKSxVPUk+NHx8ST09PTA/QW4uY2VpbChVKTpBbihVKSxVPXRlLm9mZnNldChVLChzLlYtMSkqNykscy55PVUuZ2V0VVRDRnVsbFllYXIoKSxzLm09VS5nZXRVVENNb250aCgpLHMuZD1VLmdldFVUQ0RhdGUoKSsocy53KzYpJTcpOihVPW9lKE1uKHMueSwwLDEpKSxJPVUuZ2V0RGF5KCksVT1JPjR8fEk9PT0wP1duLmNlaWwoVSk6V24oVSksVT13bi5vZmZzZXQoVSwocy5WLTEpKjcpLHMueT1VLmdldEZ1bGxZZWFyKCkscy5tPVUuZ2V0TW9udGgoKSxzLmQ9VS5nZXREYXRlKCkrKHMudys2KSU3KX1lbHNlKCJXImluIHN8fCJVImluIHMpJiYoInciaW4gc3x8KHMudz0idSJpbiBzP3MudSU3OiJXImluIHM/MTowKSxJPSJaImluIHM/aWUoTW4ocy55LDAsMSkpLmdldFVUQ0RheSgpOm9lKE1uKHMueSwwLDEpKS5nZXREYXkoKSxzLm09MCxzLmQ9IlciaW4gcz8ocy53KzYpJTcrcy5XKjctKEkrNSklNzpzLncrcy5VKjctKEkrNiklNyk7cmV0dXJuIloiaW4gcz8ocy5IKz1zLlovMTAwfDAscy5NKz1zLlolMTAwLGllKHMpKTpvZShzKX19ZnVuY3Rpb24gdyhkLE0sVCxzKXtmb3IodmFyIEE9MCxVPU0ubGVuZ3RoLEk9VC5sZW5ndGgsTyx0bjtBPFU7KXtpZihzPj1JKXJldHVybi0xO2lmKE89TS5jaGFyQ29kZUF0KEErKyksTz09PTM3KXtpZihPPU0uY2hhckF0KEErKyksdG49aFtPIGluIFllP00uY2hhckF0KEErKyk6T10sIXRufHwocz10bihkLFQscykpPDApcmV0dXJuLTF9ZWxzZSBpZihPIT1ULmNoYXJDb2RlQXQocysrKSlyZXR1cm4tMX1yZXR1cm4gc31mdW5jdGlvbiBOKGQsTSxUKXt2YXIgcz1mLmV4ZWMoTS5zbGljZShUKSk7cmV0dXJuIHM/KGQucD1nLmdldChzWzBdLnRvTG93ZXJDYXNlKCkpLFQrc1swXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIHYoZCxNLFQpe3ZhciBzPUQuZXhlYyhNLnNsaWNlKFQpKTtyZXR1cm4gcz8oZC53PWsuZ2V0KHNbMF0udG9Mb3dlckNhc2UoKSksVCtzWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24geShkLE0sVCl7dmFyIHM9bS5leGVjKE0uc2xpY2UoVCkpO3JldHVybiBzPyhkLnc9cC5nZXQoc1swXS50b0xvd2VyQ2FzZSgpKSxUK3NbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBDKGQsTSxUKXt2YXIgcz1xLmV4ZWMoTS5zbGljZShUKSk7cmV0dXJuIHM/KGQubT1FLmdldChzWzBdLnRvTG93ZXJDYXNlKCkpLFQrc1swXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFMoZCxNLFQpe3ZhciBzPVIuZXhlYyhNLnNsaWNlKFQpKTtyZXR1cm4gcz8oZC5tPVkuZ2V0KHNbMF0udG9Mb3dlckNhc2UoKSksVCtzWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gRihkLE0sVCl7cmV0dXJuIHcoZCxlLE0sVCl9ZnVuY3Rpb24gbG4oZCxNLFQpe3JldHVybiB3KGQsdCxNLFQpfWZ1bmN0aW9uIGhuKGQsTSxUKXtyZXR1cm4gdyhkLHIsTSxUKX1mdW5jdGlvbiBnbihkKXtyZXR1cm4gYVtkLmdldERheSgpXX1mdW5jdGlvbiBtbihkKXtyZXR1cm4gaVtkLmdldERheSgpXX1mdW5jdGlvbiBqKGQpe3JldHVybiBsW2QuZ2V0TW9udGgoKV19ZnVuY3Rpb24gU28oZCl7cmV0dXJuIHVbZC5nZXRNb250aCgpXX1mdW5jdGlvbiAkbyhkKXtyZXR1cm4gb1srKGQuZ2V0SG91cnMoKT49MTIpXX1mdW5jdGlvbiBGbyhkKXtyZXR1cm4gMSt+fihkLmdldE1vbnRoKCkvMyl9ZnVuY3Rpb24gSG8oZCl7cmV0dXJuIGFbZC5nZXRVVENEYXkoKV19ZnVuY3Rpb24gTG8oZCl7cmV0dXJuIGlbZC5nZXRVVENEYXkoKV19ZnVuY3Rpb24gUG8oZCl7cmV0dXJuIGxbZC5nZXRVVENNb250aCgpXX1mdW5jdGlvbiBZbyhkKXtyZXR1cm4gdVtkLmdldFVUQ01vbnRoKCldfWZ1bmN0aW9uIFdvKGQpe3JldHVybiBvWysoZC5nZXRVVENIb3VycygpPj0xMildfWZ1bmN0aW9uIEFvKGQpe3JldHVybiAxK35+KGQuZ2V0VVRDTW9udGgoKS8zKX1yZXR1cm57Zm9ybWF0OmZ1bmN0aW9uKGQpe3ZhciBNPWMoZCs9IiIsJCk7cmV0dXJuIE0udG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gZH0sTX0scGFyc2U6ZnVuY3Rpb24oZCl7dmFyIE09eChkKz0iIiwhMSk7cmV0dXJuIE0udG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gZH0sTX0sdXRjRm9ybWF0OmZ1bmN0aW9uKGQpe3ZhciBNPWMoZCs9IiIsVyk7cmV0dXJuIE0udG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gZH0sTX0sdXRjUGFyc2U6ZnVuY3Rpb24oZCl7dmFyIE09eChkKz0iIiwhMCk7cmV0dXJuIE0udG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gZH0sTX19fXZhciBZZT17Ii0iOiIiLF86IiAiLDA6IjAifSxMPS9eXHMqXGQrLyxzcj0vXiUvLGxyPS9bXFxeJCorP3xbXF0oKS57fV0vZztmdW5jdGlvbiBiKG4sZSx0KXt2YXIgcj1uPDA/Ii0iOiIiLG89KHI/LW46bikrIiIsaT1vLmxlbmd0aDtyZXR1cm4gcisoaTx0P25ldyBBcnJheSh0LWkrMSkuam9pbihlKStvOm8pfWZ1bmN0aW9uIGhyKG4pe3JldHVybiBuLnJlcGxhY2UobHIsIlxcJCYiKX1mdW5jdGlvbiBibihuKXtyZXR1cm4gbmV3IFJlZ0V4cCgiXig/OiIrbi5tYXAoaHIpLmpvaW4oInwiKSsiKSIsImkiKX1mdW5jdGlvbiB2bihuKXtyZXR1cm4gbmV3IE1hcChuLm1hcCgoZSx0KT0+W2UudG9Mb3dlckNhc2UoKSx0XSkpfWZ1bmN0aW9uIGdyKG4sZSx0KXt2YXIgcj1MLmV4ZWMoZS5zbGljZSh0LHQrMSkpO3JldHVybiByPyhuLnc9K3JbMF0sdCtyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gbXIobixlLHQpe3ZhciByPUwuZXhlYyhlLnNsaWNlKHQsdCsxKSk7cmV0dXJuIHI/KG4udT0rclswXSx0K3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBkcihuLGUsdCl7dmFyIHI9TC5leGVjKGUuc2xpY2UodCx0KzIpKTtyZXR1cm4gcj8obi5VPStyWzBdLHQrclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIHlyKG4sZSx0KXt2YXIgcj1MLmV4ZWMoZS5zbGljZSh0LHQrMikpO3JldHVybiByPyhuLlY9K3JbMF0sdCtyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24geHIobixlLHQpe3ZhciByPUwuZXhlYyhlLnNsaWNlKHQsdCsyKSk7cmV0dXJuIHI/KG4uVz0rclswXSx0K3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBXZShuLGUsdCl7dmFyIHI9TC5leGVjKGUuc2xpY2UodCx0KzQpKTtyZXR1cm4gcj8obi55PStyWzBdLHQrclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIEFlKG4sZSx0KXt2YXIgcj1MLmV4ZWMoZS5zbGljZSh0LHQrMikpO3JldHVybiByPyhuLnk9K3JbMF0rKCtyWzBdPjY4PzE5MDA6MmUzKSx0K3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBwcihuLGUsdCl7dmFyIHI9L14oWil8KFsrLV1cZFxkKSg/Ojo/KFxkXGQpKT8vLmV4ZWMoZS5zbGljZSh0LHQrNikpO3JldHVybiByPyhuLlo9clsxXT8wOi0oclsyXSsoclszXXx8IjAwIikpLHQrclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIHdyKG4sZSx0KXt2YXIgcj1MLmV4ZWMoZS5zbGljZSh0LHQrMSkpO3JldHVybiByPyhuLnE9clswXSozLTMsdCtyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gTXIobixlLHQpe3ZhciByPUwuZXhlYyhlLnNsaWNlKHQsdCsyKSk7cmV0dXJuIHI/KG4ubT1yWzBdLTEsdCtyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gUmUobixlLHQpe3ZhciByPUwuZXhlYyhlLnNsaWNlKHQsdCsyKSk7cmV0dXJuIHI/KG4uZD0rclswXSx0K3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBicihuLGUsdCl7dmFyIHI9TC5leGVjKGUuc2xpY2UodCx0KzMpKTtyZXR1cm4gcj8obi5tPTAsbi5kPStyWzBdLHQrclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIEllKG4sZSx0KXt2YXIgcj1MLmV4ZWMoZS5zbGljZSh0LHQrMikpO3JldHVybiByPyhuLkg9K3JbMF0sdCtyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gdnIobixlLHQpe3ZhciByPUwuZXhlYyhlLnNsaWNlKHQsdCsyKSk7cmV0dXJuIHI/KG4uTT0rclswXSx0K3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBUcihuLGUsdCl7dmFyIHI9TC5leGVjKGUuc2xpY2UodCx0KzIpKTtyZXR1cm4gcj8obi5TPStyWzBdLHQrclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIENyKG4sZSx0KXt2YXIgcj1MLmV4ZWMoZS5zbGljZSh0LHQrMykpO3JldHVybiByPyhuLkw9K3JbMF0sdCtyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gTnIobixlLHQpe3ZhciByPUwuZXhlYyhlLnNsaWNlKHQsdCs2KSk7cmV0dXJuIHI/KG4uTD1NYXRoLmZsb29yKHJbMF0vMWUzKSx0K3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBVcihuLGUsdCl7dmFyIHI9c3IuZXhlYyhlLnNsaWNlKHQsdCsxKSk7cmV0dXJuIHI/dCtyWzBdLmxlbmd0aDotMX1mdW5jdGlvbiBEcihuLGUsdCl7dmFyIHI9TC5leGVjKGUuc2xpY2UodCkpO3JldHVybiByPyhuLlE9K3JbMF0sdCtyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24ga3IobixlLHQpe3ZhciByPUwuZXhlYyhlLnNsaWNlKHQpKTtyZXR1cm4gcj8obi5zPStyWzBdLHQrclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIE9lKG4sZSl7cmV0dXJuIGIobi5nZXREYXRlKCksZSwyKX1mdW5jdGlvbiBTcihuLGUpe3JldHVybiBiKG4uZ2V0SG91cnMoKSxlLDIpfWZ1bmN0aW9uICRyKG4sZSl7cmV0dXJuIGIobi5nZXRIb3VycygpJTEyfHwxMixlLDIpfWZ1bmN0aW9uIEZyKG4sZSl7cmV0dXJuIGIoMSt3bi5jb3VudChRKG4pLG4pLGUsMyl9ZnVuY3Rpb24gemUobixlKXtyZXR1cm4gYihuLmdldE1pbGxpc2Vjb25kcygpLGUsMyl9ZnVuY3Rpb24gSHIobixlKXtyZXR1cm4gemUobixlKSsiMDAwIn1mdW5jdGlvbiBMcihuLGUpe3JldHVybiBiKG4uZ2V0TW9udGgoKSsxLGUsMil9ZnVuY3Rpb24gUHIobixlKXtyZXR1cm4gYihuLmdldE1pbnV0ZXMoKSxlLDIpfWZ1bmN0aW9uIFlyKG4sZSl7cmV0dXJuIGIobi5nZXRTZWNvbmRzKCksZSwyKX1mdW5jdGlvbiBXcihuKXt2YXIgZT1uLmdldERheSgpO3JldHVybiBlPT09MD83OmV9ZnVuY3Rpb24gQXIobixlKXtyZXR1cm4gYihZbi5jb3VudChRKG4pLTEsbiksZSwyKX1mdW5jdGlvbiBFZShuKXt2YXIgZT1uLmdldERheSgpO3JldHVybiBlPj00fHxlPT09MD9mbihuKTpmbi5jZWlsKG4pfWZ1bmN0aW9uIFJyKG4sZSl7cmV0dXJuIG49RWUobiksYihmbi5jb3VudChRKG4pLG4pKyhRKG4pLmdldERheSgpPT09NCksZSwyKX1mdW5jdGlvbiBJcihuKXtyZXR1cm4gbi5nZXREYXkoKX1mdW5jdGlvbiBPcihuLGUpe3JldHVybiBiKFduLmNvdW50KFEobiktMSxuKSxlLDIpfWZ1bmN0aW9uIHpyKG4sZSl7cmV0dXJuIGIobi5nZXRGdWxsWWVhcigpJTEwMCxlLDIpfWZ1bmN0aW9uIEVyKG4sZSl7cmV0dXJuIG49RWUobiksYihuLmdldEZ1bGxZZWFyKCklMTAwLGUsMil9ZnVuY3Rpb24gX3IobixlKXtyZXR1cm4gYihuLmdldEZ1bGxZZWFyKCklMWU0LGUsNCl9ZnVuY3Rpb24gcXIobixlKXt2YXIgdD1uLmdldERheSgpO3JldHVybiBuPXQ+PTR8fHQ9PT0wP2ZuKG4pOmZuLmNlaWwobiksYihuLmdldEZ1bGxZZWFyKCklMWU0LGUsNCl9ZnVuY3Rpb24ganIobil7dmFyIGU9bi5nZXRUaW1lem9uZU9mZnNldCgpO3JldHVybihlPjA/Ii0iOihlKj0tMSwiKyIpKStiKGUvNjB8MCwiMCIsMikrYihlJTYwLCIwIiwyKX1mdW5jdGlvbiBfZShuLGUpe3JldHVybiBiKG4uZ2V0VVRDRGF0ZSgpLGUsMil9ZnVuY3Rpb24gWnIobixlKXtyZXR1cm4gYihuLmdldFVUQ0hvdXJzKCksZSwyKX1mdW5jdGlvbiBWcihuLGUpe3JldHVybiBiKG4uZ2V0VVRDSG91cnMoKSUxMnx8MTIsZSwyKX1mdW5jdGlvbiBYcihuLGUpe3JldHVybiBiKDErdGUuY291bnQoZW4obiksbiksZSwzKX1mdW5jdGlvbiBxZShuLGUpe3JldHVybiBiKG4uZ2V0VVRDTWlsbGlzZWNvbmRzKCksZSwzKX1mdW5jdGlvbiBCcihuLGUpe3JldHVybiBxZShuLGUpKyIwMDAifWZ1bmN0aW9uIFFyKG4sZSl7cmV0dXJuIGIobi5nZXRVVENNb250aCgpKzEsZSwyKX1mdW5jdGlvbiBHcihuLGUpe3JldHVybiBiKG4uZ2V0VVRDTWludXRlcygpLGUsMil9ZnVuY3Rpb24gSnIobixlKXtyZXR1cm4gYihuLmdldFVUQ1NlY29uZHMoKSxlLDIpfWZ1bmN0aW9uIEtyKG4pe3ZhciBlPW4uZ2V0VVRDRGF5KCk7cmV0dXJuIGU9PT0wPzc6ZX1mdW5jdGlvbiBubyhuLGUpe3JldHVybiBiKFBlLmNvdW50KGVuKG4pLTEsbiksZSwyKX1mdW5jdGlvbiBqZShuKXt2YXIgZT1uLmdldFVUQ0RheSgpO3JldHVybiBlPj00fHxlPT09MD9jbihuKTpjbi5jZWlsKG4pfWZ1bmN0aW9uIGVvKG4sZSl7cmV0dXJuIG49amUobiksYihjbi5jb3VudChlbihuKSxuKSsoZW4obikuZ2V0VVRDRGF5KCk9PT00KSxlLDIpfWZ1bmN0aW9uIHRvKG4pe3JldHVybiBuLmdldFVUQ0RheSgpfWZ1bmN0aW9uIHJvKG4sZSl7cmV0dXJuIGIoQW4uY291bnQoZW4obiktMSxuKSxlLDIpfWZ1bmN0aW9uIG9vKG4sZSl7cmV0dXJuIGIobi5nZXRVVENGdWxsWWVhcigpJTEwMCxlLDIpfWZ1bmN0aW9uIGlvKG4sZSl7cmV0dXJuIG49amUobiksYihuLmdldFVUQ0Z1bGxZZWFyKCklMTAwLGUsMil9ZnVuY3Rpb24gYW8obixlKXtyZXR1cm4gYihuLmdldFVUQ0Z1bGxZZWFyKCklMWU0LGUsNCl9ZnVuY3Rpb24gdW8obixlKXt2YXIgdD1uLmdldFVUQ0RheSgpO3JldHVybiBuPXQ+PTR8fHQ9PT0wP2NuKG4pOmNuLmNlaWwobiksYihuLmdldFVUQ0Z1bGxZZWFyKCklMWU0LGUsNCl9ZnVuY3Rpb24gZm8oKXtyZXR1cm4iKzAwMDAifWZ1bmN0aW9uIFplKCl7cmV0dXJuIiUifWZ1bmN0aW9uIFZlKG4pe3JldHVybitufWZ1bmN0aW9uIFhlKG4pe3JldHVybiBNYXRoLmZsb29yKCtuLzFlMyl9dmFyIHNuLEJlO2NvKHtkYXRlVGltZToiJXgsICVYIixkYXRlOiIlLW0vJS1kLyVZIix0aW1lOiIlLUk6JU06JVMgJXAiLHBlcmlvZHM6WyJBTSIsIlBNIl0sZGF5czpbIlN1bmRheSIsIk1vbmRheSIsIlR1ZXNkYXkiLCJXZWRuZXNkYXkiLCJUaHVyc2RheSIsIkZyaWRheSIsIlNhdHVyZGF5Il0sc2hvcnREYXlzOlsiU3VuIiwiTW9uIiwiVHVlIiwiV2VkIiwiVGh1IiwiRnJpIiwiU2F0Il0sbW9udGhzOlsiSmFudWFyeSIsIkZlYnJ1YXJ5IiwiTWFyY2giLCJBcHJpbCIsIk1heSIsIkp1bmUiLCJKdWx5IiwiQXVndXN0IiwiU2VwdGVtYmVyIiwiT2N0b2JlciIsIk5vdmVtYmVyIiwiRGVjZW1iZXIiXSxzaG9ydE1vbnRoczpbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1heSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9jdCIsIk5vdiIsIkRlYyJdfSk7ZnVuY3Rpb24gY28obil7cmV0dXJuIHNuPWNyKG4pLEJlPXNuLmZvcm1hdCxzbi5wYXJzZSxzbi51dGNGb3JtYXQsc24udXRjUGFyc2Usc259ZnVuY3Rpb24gc28obil7cmV0dXJuIG5ldyBEYXRlKG4pfWZ1bmN0aW9uIGxvKG4pe3JldHVybiBuIGluc3RhbmNlb2YgRGF0ZT8rbjorbmV3IERhdGUoK24pfWZ1bmN0aW9uIFFlKG4sZSx0LHIsbyxpLGEsdSxsLGYpe3ZhciBnPUZlKCksbT1nLmludmVydCxwPWcuZG9tYWluLEQ9ZigiLiVMIiksaz1mKCI6JVMiKSxSPWYoIiVJOiVNIiksWT1mKCIlSSAlcCIpLHE9ZigiJWEgJWQiKSxFPWYoIiViICVkIiksJD1mKCIlQiIpLFc9ZigiJVkiKTtmdW5jdGlvbiBoKGMpe3JldHVybihsKGMpPGM/RDp1KGMpPGM/azphKGMpPGM/UjppKGMpPGM/WTpyKGMpPGM/byhjKTxjP3E6RTp0KGMpPGM/JDpXKShjKX1yZXR1cm4gZy5pbnZlcnQ9ZnVuY3Rpb24oYyl7cmV0dXJuIG5ldyBEYXRlKG0oYykpfSxnLmRvbWFpbj1mdW5jdGlvbihjKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9wKEFycmF5LmZyb20oYyxsbykpOnAoKS5tYXAoc28pfSxnLnRpY2tzPWZ1bmN0aW9uKGMpe3ZhciB4PXAoKTtyZXR1cm4gbih4WzBdLHhbeC5sZW5ndGgtMV0sYz8/MTApfSxnLnRpY2tGb3JtYXQ9ZnVuY3Rpb24oYyx4KXtyZXR1cm4geD09bnVsbD9oOmYoeCl9LGcubmljZT1mdW5jdGlvbihjKXt2YXIgeD1wKCk7cmV0dXJuKCFjfHx0eXBlb2YgYy5yYW5nZSE9ImZ1bmN0aW9uIikmJihjPWUoeFswXSx4W3gubGVuZ3RoLTFdLGM/PzEwKSksYz9wKEd0KHgsYykpOmd9LGcuY29weT1mdW5jdGlvbigpe3JldHVybiAkZShnLFFlKG4sZSx0LHIsbyxpLGEsdSxsLGYpKX0sZ31mdW5jdGlvbiBobygpe3JldHVybiBrZS5hcHBseShRZSh1cixmcixRLHJlLFluLHduLGVlLG5lLHVuLEJlKS5kb21haW4oW25ldyBEYXRlKDJlMywwLDEpLG5ldyBEYXRlKDJlMywwLDIpXSksYXJndW1lbnRzKX1mdW5jdGlvbiBUbihuLGUsdCl7dGhpcy5rPW4sdGhpcy54PWUsdGhpcy55PXR9VG4ucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpUbixzY2FsZTpmdW5jdGlvbihuKXtyZXR1cm4gbj09PTE/dGhpczpuZXcgVG4odGhpcy5rKm4sdGhpcy54LHRoaXMueSl9LHRyYW5zbGF0ZTpmdW5jdGlvbihuLGUpe3JldHVybiBuPT09MCZlPT09MD90aGlzOm5ldyBUbih0aGlzLmssdGhpcy54K3RoaXMuaypuLHRoaXMueSt0aGlzLmsqZSl9LGFwcGx5OmZ1bmN0aW9uKG4pe3JldHVybltuWzBdKnRoaXMuayt0aGlzLngsblsxXSp0aGlzLmsrdGhpcy55XX0sYXBwbHlYOmZ1bmN0aW9uKG4pe3JldHVybiBuKnRoaXMuayt0aGlzLnh9LGFwcGx5WTpmdW5jdGlvbihuKXtyZXR1cm4gbip0aGlzLmsrdGhpcy55fSxpbnZlcnQ6ZnVuY3Rpb24obil7cmV0dXJuWyhuWzBdLXRoaXMueCkvdGhpcy5rLChuWzFdLXRoaXMueSkvdGhpcy5rXX0saW52ZXJ0WDpmdW5jdGlvbihuKXtyZXR1cm4obi10aGlzLngpL3RoaXMua30saW52ZXJ0WTpmdW5jdGlvbihuKXtyZXR1cm4obi10aGlzLnkpL3RoaXMua30scmVzY2FsZVg6ZnVuY3Rpb24obil7cmV0dXJuIG4uY29weSgpLmRvbWFpbihuLnJhbmdlKCkubWFwKHRoaXMuaW52ZXJ0WCx0aGlzKS5tYXAobi5pbnZlcnQsbikpfSxyZXNjYWxlWTpmdW5jdGlvbihuKXtyZXR1cm4gbi5jb3B5KCkuZG9tYWluKG4ucmFuZ2UoKS5tYXAodGhpcy5pbnZlcnRZLHRoaXMpLm1hcChuLmludmVydCxuKSl9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuInRyYW5zbGF0ZSgiK3RoaXMueCsiLCIrdGhpcy55KyIpIHNjYWxlKCIrdGhpcy5rKyIpIn19LFRuLnByb3RvdHlwZTtmdW5jdGlvbiBhZShuKXtyZXR1cm4gbi5tb2RlPT09InRlbXBvcmFsInx8bi5tb2RlPT09ImxlZnQtYWxpZ25lZCI/Z28obik6bW8obil9ZnVuY3Rpb24gZ28oe2RvbWFpbjpuLHJhbmdlOmV9KXtyZXR1cm4gaG8oKS5kb21haW4obikucmFuZ2UoZSl9ZnVuY3Rpb24gbW8oe2RvbWFpbjpuLHJhbmdlOmV9KXtyZXR1cm4gSGUoKS5kb21haW4obikucmFuZ2UoZSl9ZnVuY3Rpb24geW8oe3Jvb3Rfbm9kZV9pZHM6bixub2RlczplfSl7dHJ5e3JldHVybiB4byhuLGUpfWNhdGNoKHQpe3JldHVybiBjb25zb2xlLmVycm9yKHQpLEdlKG4sZSl9fWZ1bmN0aW9uIHhvKG4sZSl7Y29uc3QgdD1uZXcgTWFwLHI9W107Zm9yKGNvbnN0IG8gb2Ygbil7dC5zZXQobywwKTtjb25zdCBpPWUuZ2V0KG8pO2Zvcihjb25zdHtpZDphfW9mIGkuY2hpbGRyZW4pci5wdXNoKGEpfXJldHVybiB1ZShyLGUsdCl9ZnVuY3Rpb24gdWUobixlLHQpe2Zvcihjb25zdCByIG9mIG4pe2lmKHQuaGFzKHIpKWNvbnRpbnVlO2NvbnN0IG89ZS5nZXQocik7aWYoIW8pdGhyb3cgbmV3IEVycm9yKCJOb2RlIGlkIG5vdCBmb3VuZCBpbiBub2RlcyIpO2NvbnN0IGk9W107Zm9yKGNvbnN0IGwgb2Ygby5wYXJlbnRzKXtjb25zdCBmPXQuZ2V0KGwuaWQpO2lmKGYhPT12b2lkIDApe2kucHVzaChmKTtjb250aW51ZX11ZShbbC5pZF0sZSx0KTtjb25zdCBnPXQuZ2V0KGwuaWQpO2lmKGc9PT12b2lkIDApdGhyb3cgbmV3IEVycm9yKCJDb3VsZCBub3QgZGV0ZXJtaW5lIHBhcmVudCBjb2x1bW4iKTtpLnB1c2goZyl9Y29uc3QgYT1NYXRoLm1heCguLi5pKTt0LnNldChyLGErMSk7Y29uc3QgdT1vLmNoaWxkcmVuLm1hcCgoe2lkOmx9KT0+bCk7dS5sZW5ndGgmJnVlKHUsZSx0KX1yZXR1cm4gdH1mdW5jdGlvbiBHZShuLGUsdD0wLHI9bmV3IE1hcCl7Zm9yKGNvbnN0IG8gb2Ygbil7Y29uc3QgaT1yLmdldChvKTsoIWl8fGk8dCkmJnIuc2V0KG8sdCk7Y29uc3QgYT1lLmdldChvKTtmb3IoY29uc3R7aWQ6dX1vZiBhLmNoaWxkcmVuKUdlKFt1XSxlLHQrMSxyKX1yZXR1cm4gcn1mdW5jdGlvbiBwbyhuKXtyZXR1cm4gbi5ob3Jpem9udGFsU2V0dGluZ3MubW9kZT09PSJkZXBlbmRlbmN5Ij93byhuKTpuLmhvcml6b250YWxTZXR0aW5ncy5tb2RlPT09ImxlZnQtYWxpZ25lZCI/Ym8obik6TW8obil9ZnVuY3Rpb24gd28oe2RhdGE6bixob3Jpem9udGFsU2V0dGluZ3M6ZX0pe2NvbnN0IHQ9eW8obikscj1hZShlKSxvPW5ldyBNYXA7Zm9yKGNvbnN0W2ldb2Ygbi5ub2Rlcyl7Y29uc3QgYT10LmdldChpKTtpZihhPT09dm9pZCAwKXtjb25zb2xlLndhcm4oYE5vZGUgbm90IGZvdW5kIGluIGNvbHVtbnM6IFNraXBwaW5nICR7aX1gKTtjb250aW51ZX1vLnNldChpLHt4OnIoYSksY29sdW1uOmF9KX1yZXR1cm4gb31mdW5jdGlvbiBNbyh7ZGF0YTpuLGhvcml6b250YWxTZXR0aW5nczplfSl7Y29uc3QgdD1hZShlKSxyPW5ldyBNYXA7Zm9yKGNvbnN0W28saV1vZiBuLm5vZGVzKXtjb25zdCBhPXQoaS5zdGFydF90aW1lKTtyLnNldChvLHtjb2x1bW46YSx4OmF9KX1yZXR1cm4gcn1mdW5jdGlvbiBibyh7ZGF0YTpuLGhvcml6b250YWxTZXR0aW5nczplfSl7Y29uc3QgdD1hZShlKSxyPW5ldyBNYXA7Zm9yKGNvbnN0W29db2Ygbi5ub2RlcylyLnNldChvLHtjb2x1bW46MCx4OnQobi5zdGFydF90aW1lKX0pO3JldHVybiByfWFzeW5jIGZ1bmN0aW9uIHZvKG4sZSl7Y29uc3Qgbz1uZXcgTWFwLGk9bmV3IE1hcDtsZXQgYT0wO2NvbnN0IHU9bmV3IE1hcDtmb3IgYXdhaXQoY29uc3RbaF1vZiBuLmRhdGEubm9kZXMpe2NvbnN0IGM9bi5kYXRhLm5vZGVzLmdldChoKTtpZighYyl7Y29uc29sZS53YXJuKCJOZWFyZXN0UGFyZW50TGF5b3V0OiBOb2RlIHdhcyBub3QgZm91bmQgaW4gdGhlIGRhdGEiLGgpO2NvbnRpbnVlfWNvbnN0IHg9YXdhaXQgbChjKTskKGgseCl9cmV0dXJuIFcoKSx1O2FzeW5jIGZ1bmN0aW9uIGwoaCl7Y29uc3R7eDpjfT1lLmdldChoLmlkKT8/e307aWYoYz09PXZvaWQgMClyZXR1cm4gY29uc29sZS53YXJuKCJOZWFyZXN0UGFyZW50TGF5b3V0OiBOb2RlIHdhcyBub3QgZm91bmQgaW4gdGhlIGhvcml6b250YWwgbGF5b3V0IixoLmlkKSwwO2lmKGgucGFyZW50cy5sZW5ndGg9PT0xKXJldHVybiB1LmhhcyhoLnBhcmVudHNbMF0uaWQpP2F3YWl0IGcoaC5wYXJlbnRzWzBdLmlkLGMpOihjb25zb2xlLndhcm4oIk5lYXJlc3RQYXJlbnRMYXlvdXQ6IFBhcmVudCBub2RlIG5vdCBmb3VuZCBpbiBsYXlvdXQiLGgucGFyZW50c1swXS5pZCksMCk7aWYoaC5wYXJlbnRzLmxlbmd0aD4wKXtjb25zdCB4PWgucGFyZW50cy5tYXAoKHtpZDp5fSk9Pntjb25zdCBDPXUuZ2V0KHkpO3JldHVybiBDPT09dm9pZCAwPyhjb25zb2xlLndhcm4oIk5lYXJlc3RQYXJlbnRMYXlvdXQ6IFBhcmVudCBub2RlIG5vdCBmb3VuZCBpbiBsYXlvdXQiLHkpLDApOkN9KSxOPXgucmVkdWNlKCh5LEMpPT55K0MsMCkveC5sZW5ndGgsdj1NYXRoLnJvdW5kKE4pO2lmKG0oYyx2KSl7Y29uc3QgeT1rKGMsdiksQz1oLnBhcmVudHMubWFwKCh7aWQ6Rn0pPT5GKSxTPXkuZmlsdGVyKEY9PkMuaW5jbHVkZXMoRikpO2lmKFMubGVuZ3RoPjB8fHkubGVuZ3RoPjEpe2NvbnN0W0ZdPVMubGVuZ3RoPjA/Uzp5LGxuPVIoeCx2LG8uZ2V0KEYpKTtyZXR1cm4gby5zZXQoRixsbiksYXdhaXQgZyhGLGMpfXJldHVybiBhd2FpdCBZKHtjb21wZXRpbmdOb2RlSWQ6eVswXSx1cHN0cmVhbVJvd3M6eCxub2RlU3RhcnRYOmMsZGVzaXJlZFJvdzp2fSl9fXJldHVybiBmKGMsMCl9ZnVuY3Rpb24gZihoLGMpe3JldHVybiBtKGgsYyk/ZihoLGMrMSk6Y31hc3luYyBmdW5jdGlvbiBnKGgsYyl7Y29uc3QgeD11LmdldChoKTtpZih4PT09dm9pZCAwKXJldHVybiBjb25zb2xlLndhcm4oIk5lYXJlc3RQYXJlbnRMYXlvdXQ6IFVwc3RyZWFtIG5vZGUgbm90IGZvdW5kIGluIGxheW91dCIsaCksMDtvLmdldChoKXx8by5zZXQoaCwxKTtjb25zdCB3PW8uZ2V0KGgpO3JldHVybiBtKGMseCk/dz09PTEmJiFtKGMseCsxKT8oby5zZXQoaCwtMSkseCsxKTptKGMseC0xKT8oYXdhaXQgcCh7ZGlyZWN0aW9uOncsbm9kZVN0YXJ0WDpjLGRlc2lyZWRSb3c6eCt3fSksby5zZXQoaCx3PT09MT8tMToxKSx4K3cpOihvLnNldChoLDEpLHgtMSk6eH1mdW5jdGlvbiBtKGgsYyl7aWYodS5zaXplPT09MClyZXR1cm4hMTtsZXQgeD0hMTtjb25zdCB3PWkuZ2V0KGMpPz9bXTtmb3IoY29uc3QgTiBvZiB3KXtjb25zdCB2PXUuZ2V0KE4pLHk9RShOKTtpZihEKHtmaXJzdE5vZGVFbmRYOnksZmlyc3ROb2RlUm93OnYsbGFzdE5vZGVTdGFydFg6aCxsYXN0Tm9kZVJvdzpjfSkpe3g9ITA7YnJlYWt9fXJldHVybiB4fWFzeW5jIGZ1bmN0aW9uIHAoe2RpcmVjdGlvbjpoLG5vZGVTdGFydFg6YyxkZXNpcmVkUm93Onh9KXtjb25zdCB3PWsoYyx4KTtpZih3KWZvciBhd2FpdChjb25zdCBOIG9mIHcpe2NvbnN0IHY9dS5nZXQoTikse3g6eX09ZS5nZXQoTik/P3t9O2lmKHY9PT12b2lkIDB8fHk9PT12b2lkIDApe2NvbnNvbGUud2FybigiTmVhcmVzdFBhcmVudExheW91dCAtIHNob3ZlOiBOb2RlIHdhcyBub3QgZm91bmQgaW4gdGhlIHZlcnRpY2FsIG9yIGhvcml6b250YWwgbGF5b3V0IixOKTtjb250aW51ZX1jb25zdCBDPXYraDthd2FpdCBwKHtkaXJlY3Rpb246aCxub2RlU3RhcnRYOnksZGVzaXJlZFJvdzpDfSksJChOLEMpfX1mdW5jdGlvbiBEKHtmaXJzdE5vZGVFbmRYOmgsZmlyc3ROb2RlUm93OmMsbGFzdE5vZGVTdGFydFg6eCxsYXN0Tm9kZVJvdzp3fSl7cmV0dXJuIGM9PT13JiZoKzE2Pj14fWZ1bmN0aW9uIGsoaCxjKXtjb25zdCB4PVtdLHc9aS5nZXQoYyk/P1tdO2Zvcihjb25zdCBOIG9mIHcpe2NvbnN0IHY9RShOKSx5PXUuZ2V0KE4pO2lmKHk9PT12b2lkIDApe2NvbnNvbGUud2FybigiTmVhcmVzdFBhcmVudExheW91dCAtIGdldE92ZXJsYXBwaW5nTm9kZUlkczogTm9kZSB3YXMgbm90IGZvdW5kIGluIHRoZSBsYXlvdXQiLE4pO2NvbnRpbnVlfUQoe2ZpcnN0Tm9kZUVuZFg6dixmaXJzdE5vZGVSb3c6eSxsYXN0Tm9kZVN0YXJ0WDpoLGxhc3ROb2RlUm93OmN9KSYmeC5wdXNoKE4pfWlmKHgubGVuZ3RoIT09MClyZXR1cm4geC5zb3J0KChOLHYpPT57Y29uc3QgeT1FKE4pLEM9RSh2KTtyZXR1cm4geTxDPzE6eT5DPy0xOjB9KSx4fWZ1bmN0aW9uIFIoaCxjLHgpe2NvbnN0IHc9aC5maWx0ZXIodj0+djxjKS5sZW5ndGgsTj1oLmZpbHRlcih2PT52PmMpLmxlbmd0aDtyZXR1cm4gdz5OPy0xOng/PzF9YXN5bmMgZnVuY3Rpb24gWSh7ZGVzaXJlZFJvdzpoLG5vZGVTdGFydFg6Yyx1cHN0cmVhbVJvd3M6eCxjb21wZXRpbmdOb2RlSWQ6d30pe2lmKHUuZ2V0KHcpPT09dm9pZCAwKXJldHVybiBjb25zb2xlLndhcm4oIk5lYXJlc3RQYXJlbnRMYXlvdXQgLSBhcmd1ZVdpdGhDb21wZXRpbmdVcHN0cmVhbVBsYWNlbWVudDogQ29tcGV0aXRvciBub2RlIHdhcyBub3QgZm91bmQgaW4gdGhlIGxheW91dCIsdyksaDtjb25zdFt2LHldPXEodyksQz14LmZpbHRlcihGPT5GPGgpLmxlbmd0aCxTPXguZmlsdGVyKEY9PkY+aCkubGVuZ3RoO2lmKEM+Uyl7aWYodj55JiZ2PkMpcmV0dXJuIGF3YWl0IHAoe2RpcmVjdGlvbjotMSxub2RlU3RhcnRYOmMsZGVzaXJlZFJvdzpofSksaDtpZih5PnYpcmV0dXJuIGF3YWl0IHAoe2RpcmVjdGlvbjoxLG5vZGVTdGFydFg6YyxkZXNpcmVkUm93Omh9KSxoO28uc2V0KHcsLTEpfWlmKFM+Qyl7aWYoeT52JiZ5PlMpcmV0dXJuIGF3YWl0IHAoe2RpcmVjdGlvbjoxLG5vZGVTdGFydFg6YyxkZXNpcmVkUm93Omh9KSxoO2lmKHY+eSlyZXR1cm4gYXdhaXQgcCh7ZGlyZWN0aW9uOi0xLG5vZGVTdGFydFg6YyxkZXNpcmVkUm93Omh9KSxoO28uc2V0KHcsMSl9cmV0dXJuIGF3YWl0IGcodyxjKX1mdW5jdGlvbiBxKGgpe2NvbnN0IGM9bi5kYXRhLm5vZGVzLmdldChoKSx4PXUuZ2V0KGgpO3JldHVybiFjfHx4PT09dm9pZCAwPyhjb25zb2xlLndhcm4oIk5lYXJlc3RQYXJlbnRMYXlvdXQ6IE5vZGUgd2FzIG5vdCBmb3VuZCBpbiBlaXRoZXIgdGhlIGRhdGEgb3IgbGF5b3V0IixoKSxbMCwwXSk6Yy5wYXJlbnRzLnJlZHVjZSgodyxOKT0+e2NvbnN0IHY9dS5nZXQoTi5pZCk7cmV0dXJuIHY9PT12b2lkIDA/KGNvbnNvbGUud2FybigiTmVhcmVzdFBhcmVudExheW91dCAtIGdldE5vZGVQYXJlbnREaXJlY3Rpb25Db3VudHM6IFBhcmVudCBub2RlIG5vdCBmb3VuZCBvbiBsYXlvdXQgZGF0YSIsaCksdyk6KHY8eCYmKHdbMF0rPTEpLHY+eCYmKHdbMV0rPTEpLHcpfSxbMCwwXSl9ZnVuY3Rpb24gRShoKXtjb25zdHt4OmN9PWUuZ2V0KGgpPz97fSx4PW4ud2lkdGhzLmdldChoKTtyZXR1cm4gYz09PXZvaWQgMHx8eD09PXZvaWQgMD8oY29uc29sZS53YXJuKCJOZWFyZXN0UGFyZW50TGF5b3V0OiBOb2RlIHdhcyBub3QgZm91bmQgaW4gdGhlIGhvcml6b250YWwgbGF5b3V0IGFuZC9vciB3aWR0aHMiLGgpLDApOmMreH1mdW5jdGlvbiAkKGgsYyl7dmFyIHgsdztpZihjPGEmJihhPWMpLHUuaGFzKGgpKXtjb25zdCBOPXUuZ2V0KGgpOyh4PWkuZ2V0KE4pKT09bnVsbHx8eC5kZWxldGUoaCl9aS5oYXMoYyl8fGkuc2V0KGMsbmV3IFNldCksKHc9aS5nZXQoYykpPT1udWxsfHx3LmFkZChoKSx1LnNldChoLGMpfWZ1bmN0aW9uIFcoKXtpZihhPDApZm9yKGNvbnN0W2hdb2YgdSl7Y29uc3QgYz11LmdldChoKTt1LnNldChoLGMrTWF0aC5hYnMoYSkpfX19YXN5bmMgZnVuY3Rpb24gVG8obixlKXtyZXR1cm4gbi52ZXJ0aWNhbFNldHRpbmdzLm1vZGU9PT0ibmVhcmVzdC1wYXJlbnQiP2F3YWl0IHZvKG4sZSk6bi52ZXJ0aWNhbFNldHRpbmdzLm1vZGU9PT0iZHVyYXRpb24tc29ydGVkIj9ObyhuKTpDbyhuKX1mdW5jdGlvbiBDbyhuKXtjb25zdCBlPW5ldyBNYXA7bGV0IHQ9MDtmb3IoY29uc3Rbcl1vZiBuLmRhdGEubm9kZXMpZS5zZXQocix0KyspO3JldHVybiBlfWZ1bmN0aW9uIE5vKG4pe2NvbnN0IGU9bmV3IE1hcCx0PVsuLi5uLmRhdGEubm9kZXMudmFsdWVzKCldLnNvcnQoKG8saSk9Pntjb25zdCBhPShvLmVuZF90aW1lP28uZW5kX3RpbWUuZ2V0VGltZSgpOm5ldyBEYXRlKCkuZ2V0VGltZSgpKS1vLnN0YXJ0X3RpbWUuZ2V0VGltZSgpO3JldHVybihpLmVuZF90aW1lP2kuZW5kX3RpbWUuZ2V0VGltZSgpOm5ldyBEYXRlKCkuZ2V0VGltZSgpKS1pLnN0YXJ0X3RpbWUuZ2V0VGltZSgpLWF9KTtsZXQgcj0wO2Zvcihjb25zdCBvIG9mIHQpZS5zZXQoby5pZCxyKyspO3JldHVybiBlfW9ubWVzc2FnZT1VbztmdW5jdGlvbiBVbyh7ZGF0YTpufSl7Y29uc3R7dHlwZTplfT1uO3N3aXRjaChlKXtjYXNlImxheW91dCI6a28obik7cmV0dXJuO2RlZmF1bHQ6S2UoZSl9fWZ1bmN0aW9uIERvKG4pe3Bvc3RNZXNzYWdlKG4pfWFzeW5jIGZ1bmN0aW9uIGtvKG4pe2NvbnN0e2RhdGE6ZX09bix0PXBvKG4pLHI9YXdhaXQgVG8obix0KSxvPW5ldyBNYXA7bGV0IGk9MCxhPTA7Zm9yKGNvbnN0W3UsbF1vZiBlLm5vZGVzKXtjb25zdCBmPXQuZ2V0KHUpLGc9ci5nZXQodSk7aWYoZj09PXZvaWQgMCl7Y29uc29sZS53YXJuKGBOb2RlSWQgbm90IGZvdW5kIGluIGhvcml6b250YWwgbGF5b3V0OiBTa2lwcGluZyAke2wubGFiZWx9YCk7Y29udGludWV9aWYoZz09PXZvaWQgMCl7Y29uc29sZS53YXJuKGBOb2RlSWQgbm90IGZvdW5kIGluIHZlcnRpY2FsIGxheW91dDogU2tpcHBpbmcgJHtsLmxhYmVsfWApO2NvbnRpbnVlfWk9TWF0aC5tYXgoaSxnKSxhPU1hdGgubWF4KGEsZi5jb2x1bW4pLG8uc2V0KHUsey4uLmYseTpnLHJvdzpnfSl9RG8oe3R5cGU6ImxheW91dCIsbGF5b3V0OnttYXhSb3c6aSxtYXhDb2x1bW46YSxwb3NpdGlvbnM6b319KX19KSgpOwovLyMgc291cmNlTWFwcGluZ1VSTD1ydW5HcmFwaC53b3JrZXItQzRjMjBKZ3UuanMubWFwCg==", LR = (r) => Uint8Array.from(atob(r), (t) => t.charCodeAt(0)), a0 = typeof self < "u" && self.Blob && new Blob([LR(t1)], { type: "text/javascript;charset=utf-8" });
32165
32165
  function GR(r) {
32166
32166
  let t;
32167
32167
  try {
@@ -32188,7 +32188,7 @@ function kR(r) {
32188
32188
  return t.onmessage = r, t;
32189
32189
  }
32190
32190
  async function od() {
32191
- const r = /* @__PURE__ */ new Map(), t = /* @__PURE__ */ new Map(), e = /* @__PURE__ */ new Map(), i = new yt(), s = new yt(), n = await Bt();
32191
+ const r = /* @__PURE__ */ new Map(), t = /* @__PURE__ */ new Map(), e = /* @__PURE__ */ new Map(), i = new gt(), s = new gt(), n = await Bt();
32192
32192
  let o = null;
32193
32193
  const a = o0({
32194
32194
  gap: () => n.rowGap,
@@ -32235,8 +32235,8 @@ async function od() {
32235
32235
  i.addChildAt(s, 0);
32236
32236
  const V = [];
32237
32237
  for (const [J, { children: j }] of M.nodes)
32238
- for (const { id: ft } of j)
32239
- V.push(y(J, ft));
32238
+ for (const { id: yt } of j)
32239
+ V.push(y(J, yt));
32240
32240
  await Promise.all(V);
32241
32241
  }
32242
32242
  async function y(M, D) {
@@ -32256,15 +32256,15 @@ async function od() {
32256
32256
  type: "layout",
32257
32257
  data: M,
32258
32258
  widths: D,
32259
- horizontalSettings: hu(new Date(M.start_time)),
32259
+ horizontalSettings: hu(M.start_time),
32260
32260
  verticalSettings: xR()
32261
32261
  });
32262
32262
  }
32263
32263
  function b() {
32264
32264
  if (l)
32265
32265
  for (const [M, D] of e) {
32266
- const [V, J] = M.split("_"), j = l.positions.get(V), ft = l.positions.get(J), wt = t.get(V);
32267
- if (!j || !ft) {
32266
+ const [V, J] = M.split("_"), j = l.positions.get(V), yt = l.positions.get(J), wt = t.get(V);
32267
+ if (!j || !yt) {
32268
32268
  console.warn(`Could not find edge in layout: Skipping ${M}`);
32269
32269
  continue;
32270
32270
  }
@@ -32272,10 +32272,10 @@ async function od() {
32272
32272
  console.warn(`Could not find parent node in nodes: Skipping ${V}`);
32273
32273
  continue;
32274
32274
  }
32275
- const mt = wt.bar.width, N = E(j), K = {
32276
- x: N.x + mt,
32275
+ const pt = wt.bar.width, N = E(j), K = {
32276
+ x: N.x + pt,
32277
32277
  y: N.y + n.nodeHeight / 2
32278
- }, H = E(ft), G = {
32278
+ }, H = E(yt), G = {
32279
32279
  x: H.x - K.x,
32280
32280
  y: H.y - K.y + n.nodeHeight / 2
32281
32281
  };
@@ -32303,7 +32303,7 @@ async function od() {
32303
32303
  const V = C(M.id), J = RR(M, V);
32304
32304
  r.set(M.id, J);
32305
32305
  const j = await J;
32306
- return j.element.on("resized", (ft) => T(M.id, ft)), i.addChild(j.element), t.set(M.id, j), j;
32306
+ return j.element.on("resized", (yt) => T(M.id, yt)), i.addChild(j.element), t.set(M.id, j), j;
32307
32307
  }
32308
32308
  function T(M, D) {
32309
32309
  if (!l)
@@ -32333,8 +32333,8 @@ async function od() {
32333
32333
  return 0;
32334
32334
  if (tt.isDependency())
32335
32335
  return h.getTotalValue(l.maxColumn);
32336
- const M = new Date(c.start_time), D = c.end_time ? new Date(c.end_time) : /* @__PURE__ */ new Date(), V = hu(M), J = zy(V), j = J(D), ft = J(M);
32337
- return j - ft;
32336
+ const M = hu(c.start_time), D = zy(M), V = D(c.end_time ?? /* @__PURE__ */ new Date()), J = D(c.start_time);
32337
+ return V - J;
32338
32338
  }
32339
32339
  function P() {
32340
32340
  return {
@@ -32387,16 +32387,16 @@ async function od() {
32387
32387
  }
32388
32388
  }
32389
32389
  function rt(M) {
32390
- const D = W(M, "parents"), V = W(M, "children");
32390
+ const D = X(M, "parents"), V = X(M, "children");
32391
32391
  return [M, ...D, ...V];
32392
32392
  }
32393
- function W(M, D) {
32393
+ function X(M, D) {
32394
32394
  const V = c == null ? void 0 : c.nodes.get(M);
32395
32395
  if (!V)
32396
32396
  return [];
32397
32397
  const J = [];
32398
32398
  for (const { id: j } of V[D])
32399
- J.push(j), J.push(...W(j, D));
32399
+ J.push(j), J.push(...X(j, D));
32400
32400
  return J;
32401
32401
  }
32402
32402
  return {
@@ -32469,12 +32469,12 @@ async function e1({ animate: r } = {}) {
32469
32469
  zR();
32470
32470
  const { x: i, y: s, width: n, height: o } = e.getLocalBounds();
32471
32471
  if (!n || !o) {
32472
- XR({ animate: r });
32472
+ WR({ animate: r });
32473
32473
  return;
32474
32474
  }
32475
- WR({ x: i, y: s, width: n, height: o, animate: r });
32475
+ XR({ x: i, y: s, width: n, height: o, animate: r });
32476
32476
  }
32477
- async function WR({ x: r, y: t, width: e, height: i, animate: s }) {
32477
+ async function XR({ x: r, y: t, width: e, height: i, animate: s }) {
32478
32478
  const n = await Fe(), o = await Bt(), a = await Yt(), {
32479
32479
  guideTextSize: h,
32480
32480
  guideTextTopPadding: l,
@@ -32496,20 +32496,20 @@ async function WR({ x: r, y: t, width: e, height: i, animate: s }) {
32496
32496
  }
32497
32497
  });
32498
32498
  }
32499
- async function XR({ animate: r }) {
32500
- const t = await Li(), e = await Fe(), i = await Bt(), s = await Yt(), n = await ze(), o = new Date(t.start_time), a = t.end_time ? new Date(t.end_time) : /* @__PURE__ */ new Date();
32501
- let h = n(o) - i.columnGap, l = n(a) + i.columnGap;
32502
- if (h > l) {
32503
- const f = h;
32504
- h = l, l = f;
32499
+ async function WR({ animate: r }) {
32500
+ const t = await Li(), e = await Fe(), i = await Bt(), s = await Yt(), n = await ze();
32501
+ let o = n(t.start_time) - i.columnGap, a = n(t.end_time ?? /* @__PURE__ */ new Date()) + i.columnGap;
32502
+ if (o > a) {
32503
+ const u = o;
32504
+ o = a, a = u;
32505
32505
  }
32506
- const c = l - h, u = h + c / 2, d = s.findFit(c, 0);
32506
+ const h = a - o, l = o + h / 2, c = s.findFit(h, 0);
32507
32507
  s.animate({
32508
32508
  position: {
32509
- x: u,
32509
+ x: l,
32510
32510
  y: 0
32511
32511
  },
32512
- scale: d,
32512
+ scale: c,
32513
32513
  time: r ? e.animationDuration : 0,
32514
32514
  ease: "easeInOutQuad",
32515
32515
  removeOnInterrupt: !0,
@@ -32596,20 +32596,20 @@ class oa {
32596
32596
  this.labels.clear();
32597
32597
  }
32598
32598
  }
32599
- let xi = null, Ue = null, wi = null, Wi = null, ri = null;
32599
+ let xi = null, Ue = null, wi = null, Xi = null, ri = null;
32600
32600
  async function KR() {
32601
32601
  const r = await Yt(), t = await Kt();
32602
32602
  xi = new KS({
32603
32603
  toggle: "renderable"
32604
- }), Ue = new oa(), wi = new oa(), ri = new oa(), Wi = new oa(), t.ticker.add(() => {
32604
+ }), Ue = new oa(), wi = new oa(), ri = new oa(), Xi = new oa(), t.ticker.add(() => {
32605
32605
  if (r.dirty) {
32606
32606
  const e = r.scale.x > Sb, i = r.scale.x > vb, s = r.scale.x > wb, n = r.scale.x > Tb;
32607
- ri == null || ri.toggle(e), Ue == null || Ue.toggle(i), wi == null || wi.toggle(s), Wi == null || Wi.toggle(n), xi == null || xi.cull(t.renderer.screen), r.dirty = !1;
32607
+ ri == null || ri.toggle(e), Ue == null || Ue.toggle(i), wi == null || wi.toggle(s), Xi == null || Xi.toggle(n), xi == null || xi.cull(t.renderer.screen), r.dirty = !1;
32608
32608
  }
32609
- }), Y.emit("cullCreated", xi), Y.emit("labelCullCreated", Ue), Y.emit("iconCullCreated", Ue), Y.emit("edgeCullCreated", ri), Y.emit("toggleCullCreated", Wi);
32609
+ }), Y.emit("cullCreated", xi), Y.emit("labelCullCreated", Ue), Y.emit("iconCullCreated", Ue), Y.emit("edgeCullCreated", ri), Y.emit("toggleCullCreated", Xi);
32610
32610
  }
32611
32611
  function YR() {
32612
- xi = null, Ue == null || Ue.clear(), Ue = null, wi == null || wi.clear(), wi = null, ri == null || ri.clear(), ri = null, Wi == null || Wi.clear(), Wi = null;
32612
+ xi = null, Ue == null || Ue.clear(), Ue = null, wi == null || wi.clear(), wi = null, ri == null || ri.clear(), ri = null, Xi == null || Xi.clear(), Xi = null;
32613
32613
  }
32614
32614
  async function wo() {
32615
32615
  const r = await Yt();
@@ -32651,7 +32651,7 @@ async function $R() {
32651
32651
  t.states && s(t), Y.on("runDataUpdated", (n) => s(n)), Y.on("configUpdated", () => s()), Y.on("layoutSettingsUpdated", () => s());
32652
32652
  }
32653
32653
  async function QR() {
32654
- const r = await Kt(), t = await Yt(), e = await Ht(), i = await Bt(), { inter: s } = await xy(), n = new yt(), o = await Qi();
32654
+ const r = await Kt(), t = await Yt(), e = await Ht(), i = await Bt(), { inter: s } = await xy(), n = new gt(), o = await Qi();
32655
32655
  n.addChild(o);
32656
32656
  const a = s("");
32657
32657
  n.addChild(a);
@@ -32814,7 +32814,7 @@ const Ta = {
32814
32814
  }
32815
32815
  ], iP = 300;
32816
32816
  async function rP() {
32817
- const r = await Yt(), t = await Ht(), e = new yt(), i = /* @__PURE__ */ new Map();
32817
+ const r = await Yt(), t = await Ht(), e = new gt(), i = /* @__PURE__ */ new Map();
32818
32818
  let s = await ze();
32819
32819
  Y.on("scaleUpdated", (d) => s = d), await o();
32820
32820
  function n() {
@@ -32971,7 +32971,7 @@ export {
32971
32971
  mb as isEventSelection,
32972
32972
  gb as isEventsSelection,
32973
32973
  fP as isHorizontalMode,
32974
- Wl as isNodeSelection,
32974
+ Xl as isNodeSelection,
32975
32975
  cP as isRunGraphNodeType,
32976
32976
  pb as isStateSelection,
32977
32977
  dP as isVerticalMode,