textmode.js 0.1.9-beta.5 → 0.1.9-beta.6

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.
@@ -34,12 +34,12 @@ class I extends Error {
34
34
  }
35
35
  }
36
36
  var eA = ((E) => (E[E.SILENT = 0] = "SILENT", E[E.WARNING = 1] = "WARNING", E[E.ERROR = 2] = "ERROR", E[E.THROW = 3] = "THROW", E))(eA || {});
37
- const b = class b {
37
+ const v = class v {
38
38
  constructor() {
39
39
  o(this, "h", { globalLevel: 3 });
40
40
  }
41
41
  static l() {
42
- return b.o || (b.o = new b()), b.o;
42
+ return v.o || (v.o = new v()), v.o;
43
43
  }
44
44
  D(A, t) {
45
45
  const e = "%c[textmode.js] Oops! (╯°□°)╯︵ Something went wrong in your code.", s = "color: #f44336; font-weight: bold; background: #ffebee; padding: 2px 6px; border-radius: 3px;";
@@ -61,13 +61,13 @@ const b = class b {
61
61
  this.h.globalLevel = A;
62
62
  }
63
63
  };
64
- o(b, "o", null);
65
- let Y = b;
66
- const u = Y.l(), X = /* @__PURE__ */ new WeakMap();
64
+ o(v, "o", null);
65
+ let S = v;
66
+ const u = S.l(), X = /* @__PURE__ */ new WeakMap();
67
67
  function G(E, A) {
68
68
  X.set(E, A);
69
69
  }
70
- function j(E) {
70
+ function J(E) {
71
71
  return X.get(E);
72
72
  }
73
73
  class K {
@@ -273,7 +273,7 @@ class Z {
273
273
  e.disableVertexAttribArray(A), e.disableVertexAttribArray(t);
274
274
  }
275
275
  sA(A, t) {
276
- const e = this.P, s = j(e) || [0, 0, e.canvas.width, e.canvas.height];
276
+ const e = this.P, s = J(e) || [0, 0, e.canvas.width, e.canvas.height];
277
277
  return { nx: A / s[2] * 2 - 1, ny: 1 - t / s[3] * 2 };
278
278
  }
279
279
  rA(A, t, e, s) {
@@ -310,10 +310,10 @@ class rA extends Z {
310
310
  const g = r / 2, h = this.sA(A - g, t - g), a = this.sA(A + g, t + g);
311
311
  this.rA(h.nx, h.ny, a.nx, a.ny);
312
312
  } else {
313
- const g = -B / Q, h = i / Q, a = r / 2, C = A + g * a, c = t + h * a, l = A - g * a, d = t - h * a, D = e + g * a, P = s + h * a, p = e - g * a, m = s - h * a, y = this.sA(C, c), v = this.sA(l, d), _ = this.sA(D, P), H = this.sA(p, m), M = this.P;
314
- this.AA(), M.bindBuffer(M.ARRAY_BUFFER, this.Z);
315
- const q = new Float32Array([y.nx, y.ny, 0, 0, v.nx, v.ny, 0, 1, _.nx, _.ny, 1, 0, v.nx, v.ny, 0, 1, H.nx, H.ny, 1, 1, _.nx, _.ny, 1, 0]);
316
- M.bufferData(M.ARRAY_BUFFER, q, M.DYNAMIC_DRAW);
313
+ const g = -B / Q, h = i / Q, a = r / 2, D = A + g * a, c = t + h * a, l = A - g * a, d = t - h * a, C = e + g * a, P = s + h * a, p = e - g * a, m = s - h * a, y = this.sA(D, c), b = this.sA(l, d), _ = this.sA(C, P), V = this.sA(p, m), F = this.P;
314
+ this.AA(), F.bindBuffer(F.ARRAY_BUFFER, this.Z);
315
+ const q = new Float32Array([y.nx, y.ny, 0, 0, b.nx, b.ny, 0, 1, _.nx, _.ny, 1, 0, b.nx, b.ny, 0, 1, V.nx, V.ny, 1, 1, _.nx, _.ny, 1, 0]);
316
+ F.bufferData(F.ARRAY_BUFFER, q, F.DYNAMIC_DRAW);
317
317
  }
318
318
  const n = this.tA();
319
319
  this.P.drawArrays(this.P.TRIANGLES, 0, 6), this.eA(n.positionLoc, n.texLoc);
@@ -400,8 +400,8 @@ in vec2 a_position;in vec2 a_texCoord;out vec2 v_uv;uniform float u_rotation;uni
400
400
  }
401
401
  $A(A, t, e, s) {
402
402
  if (this.gA !== null) {
403
- const { centerX: h, centerY: a, radians: C, aspectRatio: c } = this.YA(A, t, e, s);
404
- return this.FA("u_rotation", C), this.FA("u_center", [h, a]), this.FA("u_aspectRatio", c), this.nA.BA(A, t, e, s), void (this.gA = null);
403
+ const { centerX: h, centerY: a, radians: D, aspectRatio: c } = this.YA(A, t, e, s);
404
+ return this.FA("u_rotation", D), this.FA("u_center", [h, a]), this.FA("u_aspectRatio", c), this.nA.BA(A, t, e, s), void (this.gA = null);
405
405
  }
406
406
  const r = this.oA;
407
407
  let i = 0, B = 0, Q = 0, n = 1;
@@ -410,22 +410,22 @@ in vec2 a_position;in vec2 a_texCoord;out vec2 v_uv;uniform float u_rotation;uni
410
410
  }
411
411
  TA(A, t, e, s) {
412
412
  if (this.gA !== null) {
413
- const l = (A + e) / 2, d = (t + s) / 2, D = Math.abs(e - A) || 1, P = Math.abs(s - t) || 1, { centerX: p, centerY: m, radians: y, aspectRatio: v } = this.YA(l - D / 2, d - P / 2, D, P);
414
- this.FA("u_rotation", y), this.FA("u_center", [p, m]), this.FA("u_aspectRatio", v);
413
+ const l = (A + e) / 2, d = (t + s) / 2, C = Math.abs(e - A) || 1, P = Math.abs(s - t) || 1, { centerX: p, centerY: m, radians: y, aspectRatio: b } = this.YA(l - C / 2, d - P / 2, C, P);
414
+ this.FA("u_rotation", y), this.FA("u_center", [p, m]), this.FA("u_aspectRatio", b);
415
415
  const _ = this.DA > 0 ? this.DA : 1;
416
416
  return this.aA.QA(A, t, e, s, _), void (this.gA = null);
417
417
  }
418
418
  if (!this.CA || this.DA <= 0) return;
419
419
  const r = this.oA, i = (A + e) / 2, B = (t + s) / 2, Q = Math.abs(e - A) || 1, n = Math.abs(s - t) || 1, g = this.uA !== 0;
420
- let h = 0, a = 0, C = 0, c = 1;
420
+ let h = 0, a = 0, D = 0, c = 1;
421
421
  if (g) {
422
422
  const l = this.YA(i - Q / 2, B - n / 2, Q, n);
423
- h = l.centerX, a = l.centerY, C = l.radians, c = l.aspectRatio;
423
+ h = l.centerX, a = l.centerY, D = l.radians, c = l.aspectRatio;
424
424
  }
425
- this.IA(r), this.FA("u_color", this.cA), g && (this.FA("u_rotation", C), this.FA("u_center", [h, a]), this.FA("u_aspectRatio", c)), this.aA.QA(A, t, e, s, this.DA);
425
+ this.IA(r), this.FA("u_color", this.cA), g && (this.FA("u_rotation", D), this.FA("u_center", [h, a]), this.FA("u_aspectRatio", c)), this.aA.QA(A, t, e, s, this.DA);
426
426
  }
427
427
  YA(A, t, e, s) {
428
- const r = j(this.P) || [0, 0, this.P.canvas.width, this.P.canvas.height], i = r[2], B = r[3], Q = i / B;
428
+ const r = J(this.P) || [0, 0, this.P.canvas.width, this.P.canvas.height], i = r[2], B = r[3], Q = i / B;
429
429
  return { centerX: (A + e / 2) / i * 2 - 1, centerY: 1 - (t + s / 2) / B * 2, radians: this.uA * Math.PI / 180, aspectRatio: Q };
430
430
  }
431
431
  SA(A, t, e = {}) {
@@ -479,14 +479,14 @@ const f = { readShort: (E, A) => (f.t.uint16[0] = E[A] << 8 | E[A + 1], f.t.int1
479
479
  const h = s.readUint(E, A);
480
480
  A += 4;
481
481
  const a = `p${n}e${g}`;
482
- let C = B.indexOf(h);
483
- if (C === -1) {
482
+ let D = B.indexOf(h);
483
+ if (D === -1) {
484
484
  let c;
485
- C = e.tables.length, B.push(h);
485
+ D = e.tables.length, B.push(h);
486
486
  const l = r(E, h);
487
487
  c = l === 4 ? this.parse4(E, h) : l === 12 ? this.parse12(E, h) : { format: l }, e.tables.push(c);
488
488
  }
489
- e.ids[a] != null && console.warn("Multiple tables for one platform+encoding: " + a), e.ids[a] = C;
489
+ e.ids[a] != null && console.warn("Multiple tables for one platform+encoding: " + a), e.ids[a] = D;
490
490
  }
491
491
  return e;
492
492
  }, parse4(E, A) {
@@ -533,7 +533,7 @@ const f = { readShort: (E, A) => (f.t.uint16[0] = E[A] << 8 | E[A + 1], f.t.int1
533
533
  for (; h < Q; ) n = s.readUshort(E, A + (h << 2)), g = s.readShort(E, A + (h << 2) + 2), r.push(n), i.push(g), h++;
534
534
  for (; h < B; ) r.push(n), i.push(g), h++;
535
535
  return { aWidth: r, lsBearing: i };
536
- } }, V = { cmap: BA, head: EA, hhea: oA, maxp: { parseTab(E, A, t) {
536
+ } }, $ = { cmap: BA, head: EA, hhea: oA, maxp: { parseTab(E, A, t) {
537
537
  const e = f;
538
538
  return e.readUint(E, A), A += 4, { numGlyphs: e.readUshort(E, A) };
539
539
  } }, hmtx: QA, loca: { parseTab(E, A, t, e) {
@@ -564,29 +564,29 @@ const f = { readShort: (E, A) => (f.t.uint16[0] = E[A] << 8 | E[A + 1], f.t.int1
564
564
  const n = B.endPts[B.noc - 1] + 1;
565
565
  B.flags = [];
566
566
  for (let a = 0; a < n; a++) {
567
- const C = e[i];
568
- if (i++, B.flags.push(C), 8 & C) {
567
+ const D = e[i];
568
+ if (i++, B.flags.push(D), 8 & D) {
569
569
  const c = e[i];
570
570
  i++;
571
- for (let l = 0; l < c; l++) B.flags.push(C), a++;
571
+ for (let l = 0; l < c; l++) B.flags.push(D), a++;
572
572
  }
573
573
  }
574
574
  B.xs = [];
575
575
  for (let a = 0; a < n; a++) {
576
- const C = B.flags[a], c = !!(16 & C);
577
- 2 & C ? (B.xs.push(c ? e[i] : -e[i]), i++) : c ? B.xs.push(0) : (B.xs.push(t.readShort(e, i)), i += 2);
576
+ const D = B.flags[a], c = !!(16 & D);
577
+ 2 & D ? (B.xs.push(c ? e[i] : -e[i]), i++) : c ? B.xs.push(0) : (B.xs.push(t.readShort(e, i)), i += 2);
578
578
  }
579
579
  B.ys = [];
580
580
  for (let a = 0; a < n; a++) {
581
- const C = B.flags[a], c = !!(32 & C);
582
- 4 & C ? (B.ys.push(c ? e[i] : -e[i]), i++) : c ? B.ys.push(0) : (B.ys.push(t.readShort(e, i)), i += 2);
581
+ const D = B.flags[a], c = !!(32 & D);
582
+ 4 & D ? (B.ys.push(c ? e[i] : -e[i]), i++) : c ? B.ys.push(0) : (B.ys.push(t.readShort(e, i)), i += 2);
583
583
  }
584
584
  let g = 0, h = 0;
585
585
  for (let a = 0; a < n; a++) g += B.xs[a], h += B.ys[a], B.xs[a] = g, B.ys[a] = h;
586
586
  } else B.parts = [], B.endPts = [], B.flags = [], B.xs = [], B.ys = [];
587
587
  return B;
588
588
  } } }, w = { parse: (E) => [((A, t, e, s) => {
589
- const r = V, i = { HA: A, LA: t, zA: e };
589
+ const r = $, i = { HA: A, LA: t, zA: e };
590
590
  for (const B in r) {
591
591
  const Q = B, n = w.findTable(A, Q, e);
592
592
  if (n) {
@@ -607,52 +607,40 @@ const f = { readShort: (E, A) => (f.t.uint16[0] = E[A] << 8 | E[A + 1], f.t.int1
607
607
  r += 16;
608
608
  }
609
609
  return null;
610
- }, T: V, B: f };
610
+ }, T: $, B: f };
611
611
  class U {
612
612
  constructor() {
613
613
  o(this, "JA", /* @__PURE__ */ new Map());
614
614
  o(this, "KA", /* @__PURE__ */ new Map());
615
615
  }
616
- WA(A) {
617
- const t = this.jA(A);
618
- if (this.KA.has(t)) return this.KA.get(t);
619
- const e = A.cmap;
620
- if (!e || !e.tables) return this.KA.set(t, null), null;
621
- const s = ["p3e1", "p3e10", "p0e3", "p0e4"];
622
- for (const i of s) if (e.ids[i] !== void 0) {
623
- const B = e.tables[e.ids[i]];
624
- return this.KA.set(t, B), B;
625
- }
626
- const r = e.tables[0] || null;
627
- return this.KA.set(t, r), r;
628
- }
629
- NA(A, t) {
616
+ WA(A, t) {
630
617
  const e = `${this.jA(A)}_${t}`;
631
618
  if (this.JA.has(e)) return this.JA.get(e);
632
- const s = this.WA(A);
633
- if (!s) return this.JA.set(e, 0), 0;
619
+ const s = A.cmap;
620
+ if (!s || !s.tables) return this.JA.set(e, 0), 0;
634
621
  let r = 0;
635
- return s.format === 4 ? r = this.ZA(t, s) : s.format === 12 && (r = this.XA(t, s)), this.JA.set(e, r), r;
622
+ for (const i of s.tables) if (i.format === 4 ? r = this.NA(t, i) : i.format === 12 && (r = this.ZA(t, i)), r > 0) break;
623
+ return this.JA.set(e, r), r;
636
624
  }
637
- qA(A, t) {
625
+ XA(A, t) {
638
626
  const e = t.codePointAt(0);
639
- return e === void 0 ? 0 : this.NA(A, e);
627
+ return e === void 0 ? 0 : this.WA(A, e);
640
628
  }
641
- At(A, t) {
629
+ qA(A, t) {
642
630
  const e = A.hmtx;
643
631
  return e && e.aWidth && e.aWidth.length !== 0 ? t < e.aWidth.length ? e.aWidth[t] : e.aWidth[e.aWidth.length - 1] : 0;
644
632
  }
645
- tt(A, t) {
633
+ At(A, t) {
646
634
  const e = t / A.head.unitsPerEm, s = A.hhea.ascender * e, r = A.hhea.descender * e, i = A.hhea.lineGap * e;
647
635
  return { ascender: s, descender: r, lineGap: i, lineHeight: s - r + i, unitsPerEm: A.head.unitsPerEm, scale: e };
648
636
  }
649
- et() {
637
+ tt() {
650
638
  this.JA.clear(), this.KA.clear();
651
639
  }
652
640
  jA(A) {
653
641
  return `${A.zA}_${A.HA.length}`;
654
642
  }
655
- ZA(A, t) {
643
+ NA(A, t) {
656
644
  const e = t.endCount.length;
657
645
  let s = -1;
658
646
  for (let r = 0; r < e; r++) if (A <= t.endCount[r]) {
@@ -670,7 +658,7 @@ class U {
670
658
  }
671
659
  return 0;
672
660
  }
673
- XA(A, t) {
661
+ ZA(A, t) {
674
662
  const e = t.groups.length / 3;
675
663
  for (let s = 0; s < e; s++) {
676
664
  const r = t.groups[3 * s], i = t.groups[3 * s + 1], B = t.groups[3 * s + 2];
@@ -681,43 +669,43 @@ class U {
681
669
  }
682
670
  class nA {
683
671
  constructor(A) {
684
- o(this, "st");
685
- this.st = A;
672
+ o(this, "et");
673
+ this.et = A;
686
674
  }
687
- rt(A) {
675
+ st(A) {
688
676
  var e;
689
677
  const t = [];
690
678
  return (e = A == null ? void 0 : A.cmap) != null && e.tables ? (A.cmap.tables.forEach((s) => {
691
679
  if (s.format === 4) {
692
- const r = this.Bt(s);
680
+ const r = this.rt(s);
693
681
  t.push(...r);
694
682
  } else if (s.format === 12) {
695
- const r = this.it(s);
683
+ const r = this.Bt(s);
696
684
  t.push(...r);
697
685
  }
698
686
  }), [...new Set(t)]) : [];
699
687
  }
700
- Qt(A, t) {
701
- return this.st.qA(A, t) > 0;
688
+ it(A, t) {
689
+ return this.et.XA(A, t) > 0;
702
690
  }
703
- Et(A, t) {
704
- for (const e of t) if (!this.Qt(A, e)) return !1;
691
+ Qt(A, t) {
692
+ for (const e of t) if (!this.it(A, e)) return !1;
705
693
  return !0;
706
694
  }
707
- ot(A, t) {
708
- return t.filter((e) => this.Qt(A, e));
695
+ Et(A, t) {
696
+ return t.filter((e) => this.it(A, e));
709
697
  }
710
- gt(A) {
711
- return A.filter((t) => this.nt(t));
698
+ ot(A) {
699
+ return A.filter((t) => this.gt(t));
712
700
  }
713
- Bt(A) {
701
+ rt(A) {
714
702
  const t = [];
715
703
  if (!(A.startCount && A.endCount && A.idRangeOffset && A.idDelta)) return t;
716
704
  for (let e = 0; e < A.startCount.length; e++) {
717
705
  const s = A.startCount[e], r = A.endCount[e];
718
706
  if (s !== 65535 || r !== 65535) {
719
707
  for (let i = s; i <= r; i++)
720
- if (this.ht(A, i, e) > 0) try {
708
+ if (this.nt(A, i, e) > 0) try {
721
709
  const B = String.fromCodePoint(i);
722
710
  t.push(B);
723
711
  } catch {
@@ -726,7 +714,7 @@ class nA {
726
714
  }
727
715
  return t;
728
716
  }
729
- it(A) {
717
+ Bt(A) {
730
718
  const t = [];
731
719
  if (!A.groups) return t;
732
720
  for (let e = 0; e < A.groups.length; e += 3) {
@@ -740,7 +728,7 @@ class nA {
740
728
  }
741
729
  return t;
742
730
  }
743
- ht(A, t, e) {
731
+ nt(A, t, e) {
744
732
  if (A.idRangeOffset[e] === 0) return t + A.idDelta[e] & 65535;
745
733
  {
746
734
  const s = A.idRangeOffset[e] / 2 + (t - A.startCount[e]) - (A.startCount.length - e);
@@ -751,58 +739,58 @@ class nA {
751
739
  }
752
740
  return 0;
753
741
  }
754
- nt(A) {
742
+ gt(A) {
755
743
  const t = A.codePointAt(0) || 0;
756
744
  return !(t >= 0 && t <= 31 && t !== 9 && t !== 10 && t !== 13 || t >= 127 && t <= 159);
757
745
  }
758
746
  }
759
747
  class gA {
760
748
  constructor() {
761
- o(this, "lt");
749
+ o(this, "ht");
762
750
  const A = new U();
763
- this.lt = new nA(A);
751
+ this.ht = new nA(A);
764
752
  }
765
753
  extractCharacters(A) {
766
- return this.lt.rt(A);
754
+ return this.ht.st(A);
767
755
  }
768
756
  filterProblematicCharacters(A) {
769
- return this.lt.gt(A);
757
+ return this.ht.ot(A);
770
758
  }
771
759
  characterExists(A, t) {
772
- return this.lt.Qt(A, t);
760
+ return this.ht.it(A, t);
773
761
  }
774
762
  allCharactersExist(A, t) {
775
- return this.lt.Et(A, t);
763
+ return this.ht.Qt(A, t);
776
764
  }
777
765
  }
778
766
  class aA {
779
767
  constructor(A) {
768
+ o(this, "lt");
780
769
  o(this, "ct");
781
770
  o(this, "Dt");
782
771
  o(this, "Ct");
783
- o(this, "ut");
784
- this.Ct = A, this.ut = new U(), this.ct = document.createElement("canvas"), this.Dt = this.ct.getContext("2d", { willReadFrequently: !0, alpha: !1 });
772
+ this.Dt = A, this.Ct = new U(), this.lt = document.createElement("canvas"), this.ct = this.lt.getContext("2d", { willReadFrequently: !0, alpha: !1 });
785
773
  }
786
774
  createTextureAtlas(A, t, e, s) {
787
775
  const r = A.length, i = Math.ceil(Math.sqrt(r)), B = Math.ceil(r / i), Q = t.width * i, n = t.height * B, g = typeof s == "object" ? s : null;
788
- this.Pt(Q, n), this.It(A, t, i, e, g);
789
- const h = this.Ct.SA(Q, n, { filter: "nearest" });
790
- return h.update(this.ct), { framebuffer: h, columns: i, rows: B };
776
+ this.ut(Q, n), this.Pt(A, t, i, e, g);
777
+ const h = this.Dt.SA(Q, n, { filter: "nearest" });
778
+ return h.update(this.lt), { framebuffer: h, columns: i, rows: B };
791
779
  }
792
- Pt(A, t) {
793
- this.ct.width = A, this.ct.height = t, this.ct.style.width = A + "px", this.ct.style.height = A + "px", this.Dt.imageSmoothingEnabled = !1, this.ct.style.imageRendering = "pixelated", this.Dt.fillStyle = "black", this.Dt.fillRect(0, 0, A, t), this.Dt.textBaseline = "top", this.Dt.textAlign = "left", this.Dt.fillStyle = "white";
780
+ ut(A, t) {
781
+ this.lt.width = A, this.lt.height = t, this.lt.style.width = A + "px", this.lt.style.height = A + "px", this.ct.imageSmoothingEnabled = !1, this.lt.style.imageRendering = "pixelated", this.ct.fillStyle = "black", this.ct.fillRect(0, 0, A, t), this.ct.textBaseline = "top", this.ct.textAlign = "left", this.ct.fillStyle = "white";
794
782
  }
795
- It(A, t, e, s, r) {
783
+ Pt(A, t, e, s, r) {
796
784
  const i = s / r.head.unitsPerEm;
797
785
  for (let B = 0; B < A.length; B++) {
798
- const Q = B % e, n = Math.floor(B / e), g = A[B].character, h = this.wt(r, g);
786
+ const Q = B % e, n = Math.floor(B / e), g = A[B].character, h = this.It(r, g);
799
787
  if (!h) continue;
800
- const a = g.codePointAt(0) || 0, C = this.ut.NA(r, a), c = this.ft(r, C) * i, l = Q * t.width, d = n * t.height, D = l + 0.5 * t.width, P = d + 0.5 * t.height, p = Math.round(D - 0.5 * t.width), m = Math.round(P - 0.5 * s), y = p + 0.5 * (t.width - c), v = m + r.hhea.ascender * i;
801
- this.dt(h, y, v, i);
788
+ const a = g.codePointAt(0) || 0, D = this.Ct.WA(r, a), c = this.wt(r, D) * i, l = Q * t.width, d = n * t.height, C = l + 0.5 * t.width, P = d + 0.5 * t.height, p = Math.round(C - 0.5 * t.width), m = Math.round(P - 0.5 * s), y = p + 0.5 * (t.width - c), b = m + r.hhea.ascender * i;
789
+ this.ft(h, y, b, i);
802
790
  }
803
791
  }
804
- wt(A, t) {
805
- const e = t.codePointAt(0) || 0, s = this.ut.NA(A, e);
792
+ It(A, t) {
793
+ const e = t.codePointAt(0) || 0, s = this.Ct.WA(A, e);
806
794
  if (s === 0) return null;
807
795
  if (A.glyf && A.glyf[s] !== null) return A.glyf[s];
808
796
  if (w && w.T && w.T.glyf && w.T.glyf.VA) {
@@ -811,90 +799,90 @@ class aA {
811
799
  }
812
800
  return null;
813
801
  }
814
- ft(A, t) {
802
+ wt(A, t) {
815
803
  const e = A.hmtx;
816
804
  return e && e.aWidth ? t < e.aWidth.length ? e.aWidth[t] : e.aWidth[e.aWidth.length - 1] : 0;
817
805
  }
818
- dt(A, t, e, s) {
806
+ ft(A, t, e, s) {
819
807
  if (!A || !A.xs || A.noc === 0) return;
820
808
  const { xs: r, ys: i, endPts: B, flags: Q } = A;
821
809
  if (!(r && i && B && Q)) return;
822
- this.Dt.beginPath();
810
+ this.ct.beginPath();
823
811
  let n = 0;
824
812
  for (let g = 0; g < B.length; g++) {
825
813
  const h = B[g];
826
814
  if (!(h < n)) {
827
815
  if (h >= n) {
828
- const a = t + r[n] * s, C = e - i[n] * s;
829
- this.Dt.moveTo(a, C);
816
+ const a = t + r[n] * s, D = e - i[n] * s;
817
+ this.ct.moveTo(a, D);
830
818
  let c = n + 1;
831
819
  for (; c <= h; )
832
820
  if (1 & Q[c]) {
833
821
  const l = t + r[c] * s, d = e - i[c] * s;
834
- this.Dt.lineTo(l, d), c++;
822
+ this.ct.lineTo(l, d), c++;
835
823
  } else {
836
824
  const l = t + r[c] * s, d = e - i[c] * s;
837
- let D = c + 1 > h ? n : c + 1;
838
- if (1 & Q[D]) {
839
- const P = t + r[D] * s, p = e - i[D] * s;
840
- this.Dt.quadraticCurveTo(l, d, P, p), c = D + 1;
825
+ let C = c + 1 > h ? n : c + 1;
826
+ if (1 & Q[C]) {
827
+ const P = t + r[C] * s, p = e - i[C] * s;
828
+ this.ct.quadraticCurveTo(l, d, P, p), c = C + 1;
841
829
  } else {
842
- const P = (l + (t + r[D] * s)) / 2, p = (d + (e - i[D] * s)) / 2;
843
- this.Dt.quadraticCurveTo(l, d, P, p), c = D;
830
+ const P = (l + (t + r[C] * s)) / 2, p = (d + (e - i[C] * s)) / 2;
831
+ this.ct.quadraticCurveTo(l, d, P, p), c = C;
844
832
  }
845
833
  }
846
- this.Dt.closePath();
834
+ this.ct.closePath();
847
835
  }
848
836
  n = h + 1;
849
837
  }
850
838
  }
851
- this.Dt.fill();
839
+ this.ct.fill();
852
840
  }
853
841
  }
854
842
  class hA {
855
843
  constructor() {
856
- o(this, "st");
857
- this.st = new U();
844
+ o(this, "et");
845
+ this.et = new U();
858
846
  }
859
847
  calculateMaxGlyphDimensions(A, t, e) {
860
848
  let s = 0;
861
- const r = this.st.tt(e, t), i = r.lineHeight;
849
+ const r = this.et.At(e, t), i = r.lineHeight;
862
850
  for (const B of A) {
863
- const Q = this.st.qA(e, B);
851
+ const Q = this.et.XA(e, B);
864
852
  if (Q === 0) continue;
865
- const n = this.st.At(e, Q) * r.scale;
853
+ const n = this.et.qA(e, Q) * r.scale;
866
854
  s = Math.max(s, n);
867
855
  }
868
856
  return { width: Math.ceil(s), height: Math.ceil(i) };
869
857
  }
870
858
  getCharacterAdvanceWidth(A, t, e) {
871
- const s = this.st.tt(e, t), r = this.st.qA(e, A);
872
- return this.st.At(e, r) * s.scale;
859
+ const s = this.et.At(e, t), r = this.et.XA(e, A);
860
+ return this.et.qA(e, r) * s.scale;
873
861
  }
874
862
  getFontMetrics(A, t) {
875
- return this.st.tt(t, A);
863
+ return this.et.At(t, A);
876
864
  }
877
- et() {
878
- this.st.et();
865
+ tt() {
866
+ this.et.tt();
879
867
  }
880
868
  }
881
869
  class lA {
882
870
  constructor() {
883
- o(this, "ut");
884
- this.ut = new U();
871
+ o(this, "Ct");
872
+ this.Ct = new U();
885
873
  }
886
874
  createCharacterObjects(A, t) {
887
875
  return A.map((e, s) => {
888
- const r = e.codePointAt(0) || 0, i = this._t(s);
876
+ const r = e.codePointAt(0) || 0, i = this.dt(s);
889
877
  let B = 0;
890
878
  if (t.hmtx && t.hmtx.aWidth) {
891
- const Q = this.ut.NA(t, r);
879
+ const Q = this.Ct.WA(t, r);
892
880
  Q > 0 && t.hmtx.aWidth[Q] !== void 0 && (B = t.hmtx.aWidth[Q]);
893
881
  }
894
882
  return { character: e, unicode: r, color: i, advanceWidth: B };
895
883
  });
896
884
  }
897
- _t(A) {
885
+ dt(A) {
898
886
  return [A % 256, Math.floor(A / 256) % 256, Math.floor(A / 65536) % 256];
899
887
  }
900
888
  getCharacterColor(A, t) {
@@ -903,27 +891,27 @@ class lA {
903
891
  return e ? e.color : [0, 0, 0];
904
892
  }
905
893
  getCharacterColors(A, t) {
906
- return u.C(typeof A == "string" && A.length > 0, "Characters must be a string with at least one character.", { method: "getCharacterColors", providedValue: A }) ? A.split("").map((e) => this.getCharacterColor(e, t) || [0, 0, 0]) : [[0, 0, 0]];
894
+ return u.C(typeof A == "string" && A.length > 0, "Characters must be a string with at least one character.", { method: "getCharacterColors", providedValue: A }) ? Array.from(A).map((e) => this.getCharacterColor(e, t) || [0, 0, 0]) : [[0, 0, 0]];
907
895
  }
908
896
  }
909
897
  class cA {
910
898
  constructor(A, t = 16) {
911
- o(this, "vt");
912
- o(this, "bt", []);
913
- o(this, "xt");
914
- o(this, "yt", 16);
899
+ o(this, "_t");
900
+ o(this, "vt", []);
901
+ o(this, "bt");
902
+ o(this, "xt", 16);
903
+ o(this, "yt", 0);
915
904
  o(this, "Mt", 0);
916
- o(this, "Gt", 0);
917
- o(this, "Ft", { width: 0, height: 0 });
918
- o(this, "$t");
919
- o(this, "Yt", "UrsaFont");
905
+ o(this, "Gt", { width: 0, height: 0 });
906
+ o(this, "Ft");
907
+ o(this, "$t", "UrsaFont");
908
+ o(this, "Yt");
920
909
  o(this, "Tt");
921
910
  o(this, "St");
922
911
  o(this, "Ot");
923
- o(this, "Ut");
924
- this.yt = t, this.Tt = new gA(), this.St = new aA(A), this.Ot = new hA(), this.Ut = new lA();
912
+ this.xt = t, this.Yt = new gA(), this.Tt = new aA(A), this.St = new hA(), this.Ot = new lA();
925
913
  }
926
- async kt(A) {
914
+ async Ut(A) {
927
915
  let t;
928
916
  if (A) {
929
917
  const e = await fetch(A);
@@ -932,121 +920,121 @@ class cA {
932
920
  } else
933
921
  t = await (await fetch(`data:font/truetype;charset=utf-8;base64,AAEAAAAKAIAAAwAgT1MvMs+QEyQAAAEoAAAAYGNtYXAg7yVJAAAFjAAACSBnbHlmuHLTdAAAErQAAGi0aGVhZFvXdUwAAACsAAAANmhoZWELAQUCAAAA5AAAACRobXR4BACDgAAAAYgAAAQEbG9jYQAy54AAAA6sAAAECG1heHABIgCCAAABCAAAACBuYW1lVs/OSgAAe2gAAAOicG9zdABpADQAAH8MAAAAIAABAAAAAQAAzOWHqV8PPPUAAAQAAAAAAHxiGCcAAAAAfGIYJwAAAAAEAAQAAAAACAACAAEAAAAAAAEAAAQAAAAAAAQAAAAAAAcAAAEAAAAAAAAAAAAAAAAAAAEBAAEAAAEBAIAAIAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgQAAZAABQAEAgACAAAAAAACAAIAAAACAAAzAMwAAAAABAAAAAAAAACAAACLAABw4wAAAAAAAAAAWUFMLgBAACAmawQAAAAAAAQAAAAAAAFRAAAAAAMABAAAAAAgAAAEAAAABAAAAAQAAAAEAAGABAABAAQAAIAEAACABAAAgAQAAIAEAAGABAABAAQAAQAEAACABAABAAQAAIAEAACABAABAAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAABAAQAAIAEAAEABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAABAAQAAIAEAAEABAAAgAQAAIAEAAEABAAAgAQAAIAEAACABAAAgAQAAIAEAAEABAAAgAQAAIAEAAGABAAAgAQAAIAEAAGABAAAgAQAAIAEAACABAAAgAQAAIAEAAEABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAABgAQAAQAEAACABAAAAAQAAgAEAACABAAAgAQAAIAEAACABAACAAQAAAAEAAIABAABgAQAAgAEAACABAAAgAQAAAAEAACABAAAAAQAAAAEAAAABAAAAAQAAAAEAAIABAADAAQAAAAEAAAABAAAgAQAAYAEAAAABAAAAAQAAIAEAAAA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AIAAAACA/YAAgAAAAIAAAP8AAoABAAAA/4AAAP+A/4AAgAAAAIAAAP8AA4AAAP8AAAAAgAAAAIAAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAP+AAAD/gAAAAAAAAP8AAAAAgAAAAAAAAP+AAAD/gAAAAAAAAwCAAIAEAAQAABcAHQAjAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/4AAAACAAAAAgAAA/4AAAACAAAD9AAAA/4AAAACAAAD/gAAAAIAAgAAAAIAAAACAAAD/AAAAAQAAAP+AAAAEAAAA/4AAAP8AAAD/gAAAAIAAAP8AAAD/gAAA/4AAAACAAAABAAAAAIAAAAEAAAAAAP+AAAD/gAAAAQD+gP8AAAAAgAAAAIAAAAABAYACgAKABAAAAwAAAQEBAQGAAQAAAP8ABAAAAP6AAAAAAAABAQAAgAMABAAAEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQECAAEAAAD/gAAA/4AAAACAAAAAgAAA/wAAAP+AAAD/gAAAAIAAAACABAAAAP+AAAD/gAAA/oAAAP+AAAD/gAAAAIAAAACAAAABgAAAAIAAAAAAAAEBAACAAwAEAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQAAAACAAAAAgAAA/4AAAP+AAAD/AAAAAIAAAACAAAD/gAAA/4AEAAAA/4AAAP+AAAD+gAAA/4AAAP+AAAAAgAAAAIAAAAGAAAAAgAAAAAAABQCAAYADgAQAAAMABwATABcAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAIAAAP+AAYAAgAAA/4D/AAEAAAABAAAA/wAAAP8AAAD/AAAAAQD/gACAAAD/gAGAAIAAAP+ABAAAAP+AAAAAgAAA/4AAAAAAAAD/gAAA/4AAAP+AAAAAgAAAAIAAAP8AAAD/gAAAAIAAAP+AAAAAAAABAQAAgAOAAwAACwAAAQEBAQEBAQEBAQEBAgAAgAAAAQAAAP8AAAD/gAAA/wAAAAEAAwAAAP8AAAD/gAAA/wAAAAEAAAAAgAAAAAAAAQCAAAACAAGAAAcAAAEBAQEBAQEBAQABAAAA/4AAAP8AAAAAgAGAAAD/AAAA/4AAAACAAAAAAAABAIABgAOAAgAAAwAAAQEBAQCAAwAAAP0AAgAAAP+AAAAAAAABAQAAgAIAAYAAAwAAAQEBAQEAAQAAAP8AAYAAAP8AAAAAAAABAIAAgAQAA4AAFwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAwABAAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAIAAAACAA4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAwCAAIADgAQAAAsAEQAXAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/4AAAP4AAAD/gAAAAIAAgAAAAIAAAACAAAD/gAAA/4AAAAEAAAAEAAAA/4AAAP2AAAD/gAAAAIAAAAKAAAAAAP8AAAAAgAAAAID/AP+AAAD/AAAAAYAAAAABAIAAgAOABAAADQAAAQEBAQEBAQEBAQEBAQEBgAEAAAABAAAA/QAAAAEAAAD/AAAAAIAAAACABAAAAP0AAAD/gAAAAIAAAAGAAAAAgAAAAIAAAAABAIAAgAOABAAAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAgAAAACAAAD/gAAA/4AAAP+AAAABgAAA/QAAAACAAAAAgAAAAIAAAACAAAD/AAAA/wAAAACABAAAAP+AAAD/AAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAACAAAABAAAA/wAAAAEAAAAAAAABAIAAgAOABAAAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAgAAAACAAAD/gAAAAIAAAP+AAAD+AAAA/4AAAAEAAAABAAAA/wAAAAEAAAD/AAAA/wAAAACABAAAAP+AAAD/AAAA/4AAAP8AAAD/gAAAAIAAAACAAAD/gAAAAQAAAACAAAABAAAA/4AAAACAAAAAAAABAIAAgAOABAAAEQAAAQEBAQEBAQEBAQEBAQEBAQEBAYABAAAA/4AAAP+AAAABAAAAAQAAAP8AAAD+AAAAAIAAAACABAAAAP+AAAD/gAAA/wAAAAEAAAD9gAAAAQAAAAGAAAAAgAAAAAEAgACAA4AEAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQCAAwAAAP4AAAABgAAAAIAAAP+AAAD+AAAA/4AAAAEAAAABAAAA/gAEAAAA/4AAAP8AAAD/gAAA/wAAAP+AAAAAgAAAAIAAAP+AAAABAAAAAAAAAgCAAIADgAQAABMAFwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQACAAAAAIAAAP8AAAD/AAAAAYAAAACAAAD/gAAA/gAAAP+AAAAAgACAAAABAAAABAAAAP+AAAD/gAAAAIAAAP8AAAD/gAAA/wAAAP+AAAAAgAAAAoAAAP6A/wAAAAEAAAEAgACAA4AEAAAPAAABAQEBAQEBAQEBAQEBAQEBAIADAAAA/4AAAP+AAAD/AAAAAIAAAACAAAD+gAAA/4AEAAAA/oAAAP+AAAD+gAAAAYAAAACAAAABAAAA/4AAAAAAAAMAgACAA4AEAAATABcAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAgAAAACAAAD/gAAAAIAAAP+AAAD+AAAA/4AAAACAAAD/gAAAAIAAgAAAAQAAAP8AAAABAAAABAAAAP+AAAD/AAAA/4AAAP8AAAD/gAAAAIAAAAEAAAAAgAAAAQAAAAAA/wAAAAEA/oD/AAAAAQAAAAACAIAAgAOABAAACwAPAAABAQEBAQEBAQEBAQEBAQEBAQACAAAAAIAAAP8AAAD+gAAA/4AAAACAAIAAAAEAAAAEAAAA/4AAAP0AAAABAAAAAIAAAAGAAAAAAP6AAAABgAACAQABAAIAA4AAAwAHAAABAQEBAQEBAQEAAQAAAP8AAAABAAAA/wADgAAA/wAAAP+AAAD/AAAAAAIAgACAAgADgAADAAsAAAEBAQEBAQEBAQEBAQEAAQAAAP8AAAABAAAA/4AAAP8AAAAAgAOAAAD/AAAA/4AAAP8AAAD/gAAAAIAAAAABAQAAgAOABAAAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQKAAQAAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAP8AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACABAAAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAACAIABgAOAAwAAAwAHAAABAQEBAQEBAQCAAwAAAP0AAAADAAAA/QADAAAA/4AAAP+AAAD/gAAAAAEAgACAAwAEAAAbAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAIABAAAAAIAAAACAAAAAgAAA/4AAAP+AAAD/gAAA/wAAAACAAAAAgAAAAIAAAP+AAAD/gAAA/4AEAAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAAAAAAIAgACAA4AEAAATABcAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAgAAAACAAAD/gAAA/4AAAP8AAAAAgAAAAIAAAP8AAAD/AAAAAIAAgAEAAAD/AAQAAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAAA/4AAAACAAAD+AAAA/wAAAAACAIAAgAOABAAAEQAVAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQACAAAAAIAAAP6AAAAAgAAA/wAAAAGAAAD+AAAA/4AAAACAAgAAgAAA/4AEAAAA/4AAAP6AAAABAAAAAIAAAP2AAAD/gAAAAIAAAAKAAAD+AAAA/4AAAAAAAAIAgACAA4AEAAAPABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAYABAAAAAIAAAACAAAD/AAAA/wAAAP8AAAAAgAAAAIAAAAAAAQAAAAQAAAD/gAAA/4AAAP2AAAABAAAA/wAAAAKAAAAAgAAA/4D/AAAAAQAAAwCAAIADgAQAAAsADwATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQCAAoAAAACAAAD/gAAAAIAAAP+AAAD9gAEAAAABAAAA/wAAAAEAAAAEAAAA/4AAAP8AAAD/gAAA/wAAAP+AAAADAP8AAAABAP6A/wAAAAEAAAAAAQCAAIADgAQAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQACAAAAAIAAAP8AAAD/AAAAAQAAAAEAAAD/gAAA/gAAAP+AAAAAgAQAAAD/gAAA/4AAAACAAAD9gAAAAIAAAP+AAAD/gAAAAIAAAAKAAAAAAAACAIAAgAOABAAACwATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQCAAgAAAACAAAAAgAAA/4AAAP+AAAD+AAEAAAAAgAAAAIAAAP+AAAAEAAAA/4AAAP+AAAD+gAAA/4AAAP+AAAADAP2AAAAAgAAAAYAAAACAAAEAgACAA4AEAAAXAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/wAAAP8AAAABAAAA/wAAAAEAAAABAAAA/4AAAP4AAAD/gAAAAIAEAAAA/4AAAP+AAAAAgAAA/wAAAP+AAAD/AAAAAIAAAP+AAAD/gAAAAIAAAAKAAAAAAAABAIAAgAOABAAACQAAAQEBAQEBAQEBAQCAAwAAAP4AAAABAAAA/wAAAP8ABAAAAP+AAAD/AAAA/4AAAP6AAAAAAQCAAIADgAQAABUAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/wAAAP8AAAABAAAA/4AAAAGAAAD/gAAA/gAAAP+AAAAAgAQAAAD/gAAA/4AAAACAAAD9gAAAAQAAAACAAAD+gAAA/4AAAACAAAACgAAAAAEAgACAA4AEAAALAAABAQEBAQEBAQEBAQEAgAEAAAABAAAAAQAAAP8AAAD/AAAA/wAEAAAA/gAAAAIAAAD8gAAAAQAAAP8AAAAAAAABAIAAgAOABAAACwAAAQEBAQEBAQEBAQEBAIADAAAA/wAAAAEAAAD9AAAAAQAAAP8ABAAAAP+AAAD9gAAA/4AAAACAAAACgAAAAAAAAQCAAIAEAAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEBAAMAAAD/gAAA/4AAAP4AAAD/gAAAAQAAAAEAAAD+gAQAAAD/gAAA/YAAAP+AAAAAgAAAAQAAAP8AAAACgAAAAAAAAQCAAIADgAQAABsAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAEAAAAAgAAAAIAAAAEAAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAD/AAAA/4AAAP+AAAD/AAQAAAD/AAAAAIAAAACAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAD/AAAAAAAAAQCAAIADgAQAAAUAAAEBAQEBAQCAAQAAAAIAAAD9AAQAAAD9AAAA/4AAAAABAIAAgAQABAAAEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAEAAAAAgAAAAIAAAACAAAABAAAA/wAAAP+AAAD/gAAA/4AAAP8ABAAAAP+AAAD/gAAAAIAAAACAAAD8gAAAAgAAAP+AAAAAgAAA/gAAAAAAAAEAgACABAAEAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQCAAQAAAACAAAAAgAAAAIAAAAEAAAD/AAAA/4AAAP+AAAD/gAAA/wAEAAAA/4AAAP+AAAD/gAAAAYAAAPyAAAABAAAAAIAAAACAAAD+AAAAAAAAAgCAAIADgAQAAAsADwAAAQEBAQEBAQEBAQEBAQEBAQEAAgAAAACAAAD/gAAA/gAAAP+AAAAAgACAAAABAAAABAAAAP+AAAD9gAAA/4AAAACAAAACgAAAAAD9gAAAAoAAAgCAAIADgAQAAAkADQAAAQEBAQEBAQEBAQEBAQEAgAKAAAAAgAAA/4AAAP6AAAD/AAEAAAABAAAABAAAAP+AAAD+gAAA/4AAAP8AAAADAP6AAAABgAAAAAIAgACABAAEAAAPABcAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAgAAAACAAAAAgAAA/4AAAP+AAAD+AAAA/4AAAACAAIAAAAEAAAD/gAAAAIAAAAQAAAD/gAAA/gAAAP8AAAAAgAAA/4AAAACAAAACgAAAAAD9gAAAAIAAAACAAAABgAACAIAAgAOABAAAEwAXAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAKAAAAAgAAA/4AAAP+AAAAAgAAAAIAAAP8AAAD/gAAA/4AAAP8AAQAAAAEAAAAEAAAA/4AAAP8AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAD/AAAAAwD/AAAAAQAAAQCAAIADgAQAABsAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/wAAAP8AAAABgAAAAIAAAP+AAAD+AAAA/4AAAAEAAAABAAAA/oAAAP+AAAAAgAQAAAD/gAAA/4AAAACAAAD/AAAA/4AAAP8AAAD/gAAAAIAAAACAAAD/gAAAAQAAAACAAAABAAAAAAAAAQCAAIADgAQAAAcAAAEBAQEBAQEBAIADAAAA/wAAAP8AAAD/AAQAAAD/gAAA/QAAAAMAAAAAAAABAIAAgAOABAAACwAAAQEBAQEBAQEBAQEBAIABAAAAAQAAAAEAAAD/gAAA/gAAAP+ABAAAAP0AAAADAAAA/QAAAP+AAAAAgAAAAAAAAQCAAIADgAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEAgAEAAAABAAAAAQAAAP+AAAD/gAAA/wAAAP+AAAD/gAQAAAD+AAAAAgAAAP4AAAD/AAAA/4AAAACAAAABAAAAAAAAAQCAAIAEAAQAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAIABAAAAAIAAAACAAAAAgAAAAQAAAP8AAAD/gAAA/4AAAP+AAAD/AAQAAAD+AAAAAIAAAP+AAAACAAAA/IAAAACAAAAAgAAA/4AAAP+AAAAAAAABAIAAgAOABAAAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQCAAQAAAAEAAAABAAAA/4AAAP+AAAAAgAAAAIAAAP8AAAD/AAAA/wAAAACAAAAAgAAA/4AAAP+ABAAAAP8AAAABAAAA/wAAAP+AAAD/gAAA/4AAAP8AAAABAAAA/wAAAAEAAAAAgAAAAIAAAACAAAAAAAABAIAAgAOABAAADwAAAQEBAQEBAQEBAQEBAQEBAQCAAQAAAAEAAAABAAAA/4AAAP+AAAD/AAAA/4AAAP+ABAAAAP6AAAABgAAA/oAAAP+AAAD+gAAAAYAAAACAAAAAAAABAIAAgAOABAAAFwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAIADAAAA/4AAAP+AAAD/gAAA/4AAAAIAAAD9AAAAAIAAAACAAAAAgAAAAIAAAP4ABAAAAP8AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAAEAAAAAgAAAAIAAAACAAAAAgAAAAAAAAQEAAIADAAQAAAcAAAEBAQEBAQEBAQACAAAA/wAAAAEAAAD+AAQAAAD/gAAA/YAAAP+AAAAAAAABAIAAgAQAA4AAFwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAIABAAAAAIAAAACAAAAAgAAAAIAAAACAAAD/AAAA/4AAAP+AAAD/gAAA/4AAAP+AA4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAQEAAIADAAQAAAcAAAEBAQEBAQEBAQACAAAA/gAAAAEAAAD/AAQAAAD8gAAAAIAAAAKAAAAAAAABAIACAAQABAAAFwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgAAgAAAAIAAAACAAAAAgAAA/wAAAP+AAAD/gAAA/4AAAP8AAAAAgAAAAIAAAACABAAAAP+AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAP+AAAD/gAAAAIAAAACAAAAAgAAAAAAAAQCAAIADgAEAAAMAAAEBAQEAgAMAAAD9AAEAAAD/gAAAAAAAAQEAAoACgAQAAAkAAAEBAQEBAQEBAQEBAAEAAAAAgAAA/4AAAP+AAAD/gAQAAAD/gAAA/wAAAACAAAAAgAAAAAEAgACAA4ADAAAPAAABAQEBAQEBAQEBAQEBAQEBAQACgAAA/4AAAP+AAAD/AAAAAQAAAP6AAAD/gAAAAIADAAAA/YAAAACAAAABgAAA/oAAAP+AAAAAgAAAAYAAAAAAAAIAgACAA4AEAAAJAA0AAAEBAQEBAQEBAQEBAQEBAIABAAAAAYAAAACAAAD/gAAA/YABAAAAAQAAAAQAAAD/AAAA/4AAAP6AAAD/gAAAAgD+gAAAAYAAAAABAIAAgAOAAwAAEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/wAAAP8AAAABAAAAAQAAAP+AAAD+AAAA/4AAAACAAwAAAP+AAAD/gAAAAIAAAP6AAAAAgAAA/4AAAP+AAAAAgAAAAYAAAAAAAAIAgACAA4AEAAAJAA0AAAEBAQEBAQEBAQEBAQEBAoABAAAA/YAAAP+AAAAAgAAAAYD/AAAAAQAAAAQAAAD8gAAAAIAAAAGAAAAAgAAA/4D+gAAAAYAAAAACAIAAgAOAAwAADQARAAABAQEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/gAAAAGAAAD+AAAA/4AAAACAAIAAAAEAAAADAAAA/4AAAP8AAAD/gAAA/4AAAACAAAABgAAAAAD/gAAAAIAAAAABAQAAgAOAA4AACwAAAQEBAQEBAQEBAQEBAYACAAAA/oAAAAEAAAD/AAAA/wAAAACAA4AAAP+AAAD/AAAA/4AAAP8AAAACgAAAAAAAAgCAAIADgAOAAA8AEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/4AAAP4AAAABgAAA/oAAAP+AAAAAgACAAAABAAAAA4AAAP+AAAD+AAAA/4AAAACAAAAAgAAAAIAAAAEAAAAAAP8AAAABAAABAIAAgAOABAAACwAAAQEBAQEBAQEBAQEBAIABAAAAAYAAAACAAAD/AAAA/wAAAP8ABAAAAP8AAAD/gAAA/gAAAAIAAAD+AAAAAAAAAgGAAIACgAQAAAMABwAAAQEBAQEBAQEBgAEAAAD/AAAAAQAAAP8ABAAAAP+AAAD/gAAA/YAAAAACAIAAgAOABAAAAwAPAAABAQEBAQEBAQEBAQEBAQEBAoABAAAA/wAAAAEAAAD/gAAA/gAAAP+AAAABAAAAAQAEAAAA/4AAAP+AAAD+AAAA/4AAAACAAAABAAAA/wAAAAABAIAAgAOAA4AAEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAEAAAAAgAAAAQAAAP+AAAAAgAAAAIAAAP8AAAD/gAAA/4AAAP8AA4AAAP8AAAAAgAAA/4AAAP8AAAD/gAAA/4AAAACAAAAAgAAA/wAAAAAAAAEBgACAAwAEAAAHAAABAQEBAQEBAQGAAQAAAACAAAD/AAAA/4AEAAAA/QAAAP+AAAAAgAAAAAAAAQCAAIAEAAMAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAAAAIAAAAEAAAAAgAAA/wAAAP+AAAD/gAAA/4AAAP8AAAAAgAMAAAD/gAAAAIAAAP+AAAD+AAAAAYAAAP+AAAAAgAAA/oAAAAIAAAAAAAABAIAAgAOAAwAADwAAAQEBAQEBAQEBAQEBAQEBAQCAAQAAAACAAAABAAAAAIAAAP8AAAD/gAAA/4AAAP8AAwAAAP+AAAAAgAAA/4AAAP4AAAABgAAA/4AAAP8AAAAAAAACAIAAgAOAAwAACwAPAAABAQEBAQEBAQEBAQEBAQEBAQACAAAAAIAAAP+AAAD+AAAA/4AAAACAAIAAAAEAAAADAAAA/4AAAP6AAAD/gAAAAIAAAAGAAAAAAP6AAAABgAACAIAAgAOAAwAACQANAAABAQEBAQEBAQEBAQEBAQCAAoAAAACAAAD/gAAA/oAAAP8AAQAAAAEAAAADAAAA/4AAAP+AAAD/gAAA/wAAAAIA/4AAAACAAAAAAgCAAIAEAAMAAA0AEQAAAQEBAQEBAQEBAQEBAQEBAQEBAQACgAAAAIAAAP+AAAD/AAAA/oAAAP+AAAAAgACAAAABAAAAAwAAAP6AAAD/gAAA/4AAAAEAAAAAgAAAAIAAAAAA/4AAAACAAAAAAQEAAIADgAMAAAkAAAEBAQEBAQEBAQEBAAIAAAAAgAAA/wAAAP+AAAD/AAMAAAD/gAAA/wAAAAEAAAD+AAAAAAEAgACABAADAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEAAoAAAP6AAAABgAAAAIAAAP+AAAD9AAAAAgAAAP6AAAD/gAAAAIADAAAA/4AAAP+AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAAAgAAAAAAAAQCAAIADgAOAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAAAAQAAAP8AAAAAgAAAAQAAAP+AAAD+gAAA/4AAAP+AAAAAgAOAAAD/gAAA/4AAAP6AAAAAgAAA/4AAAP+AAAAAgAAAAYAAAACAAAAAAAABAIAAgAOAAwAADwAAAQEBAQEBAQEBAQEBAQEBAQCAAQAAAACAAAAAgAAAAQAAAP+AAAD/gAAA/oAAAP+AAwAAAP4AAAAAgAAAAYAAAP2AAAAAgAAA/4AAAACAAAAAAAABAIAAgAOAAwAADwAAAQEBAQEBAQEBAQEBAQEBAQCAAQAAAAEAAAABAAAA/4AAAP+AAAD/AAAA/4AAAP+AAwAAAP6AAAABgAAA/oAAAP+AAAD/gAAAAIAAAACAAAAAAAABAIAAgAQAAwAAEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAEAAAAAgAAAAIAAAACAAAABAAAA/4AAAP8AAAD/gAAA/wAAAP+AAwAAAP6AAAAAgAAA/4AAAAGAAAD+AAAA/4AAAACAAAD/gAAAAIAAAAAAAAEAgACAA4ADAAAbAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAIABAAAAAQAAAAEAAAD/gAAA/4AAAACAAAAAgAAA/wAAAP8AAAD/AAAAAIAAAACAAAD/gAAA/4ADAAAA/4AAAACAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAD/gAAAAIAAAACAAAAAgAAAAIAAAAAAAAEAgACAA4ADAAAPAAABAQEBAQEBAQEBAQEBAQEBAIABAAAAAQAAAAEAAAD/gAAA/gAAAAGAAAD+gAAA/4ADAAAA/wAAAAEAAAD+AAAA/4AAAACAAAAAgAAAAIAAAAAAAAEAgACAA4ADAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQCAAwAAAP+AAAD/gAAA/4AAAAGAAAD9AAAAAIAAAACAAAAAgAAA/oADAAAA/4AAAP+AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAAAgAAAAAAAAQCAAIADAAQAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAYABgAAA/wAAAP+AAAAAgAAAAQAAAP6AAAD/gAAA/4AAAACAAAAAgAQAAAD/gAAA/wAAAP+AAAD/AAAA/4AAAACAAAABAAAAAIAAAAEAAAAAAAABAYAAgAKABAAAAwAAAQEBAQGAAQAAAP8ABAAAAPyAAAAAAAABAQAAgAOABAAAEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAGAAAAAgAAAAIAAAP+AAAD/gAAA/oAAAAEAAAAAgAAA/4AAAP8ABAAAAP+AAAD/AAAA/4AAAP8AAAD/gAAAAIAAAAEAAAAAgAAAAQAAAAAAAAEAgAGAA4ADAAAPAAABAQEBAQEBAQEBAQEBAQEBAQABAAAAAQAAAACAAAD/gAAA/wAAAP8AAAD/gAAAAIADAAAA/4AAAACAAAD/AAAA/4AAAACAAAD/gAAAAQAAAAAAAAEAAAAABAAEAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQAAAYAAAAEAAAAAgAAAAIAAAACAAAD/AAAA/4AAAP+AAAD/AAAA/wAEAAAA/4AAAP+AAAD/gAAA/wAAAP6AAAABAAAAAQAAAACAAAAAgAAAAAAAAQIAAAAEAAQAAAMAAAEBAQECAAIAAAD+AAQAAAD8AAAAAAAAAgCAAIADgAQAABcAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQGAAYAAAP8AAAABAAAA/4AAAP+AAAABgAAA/QAAAACAAAAAgAAA/wAAAACAAAAAgAGAAIAAAP+ABAAAAP+AAAD/AAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAACAAAABAAAAAAAAAP+AAAAAAQCAAIADgAQAABsAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAEAAAABAAAAAQAAAP+AAAAAgAAA/wAAAAEAAAD/AAAA/wAAAP8AAAABAAAA/wAAAACAAAD/gAQAAAD+gAAAAYAAAP8AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAABACAAIAEAAQAABcAGwAfACMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAoAAAP4AAAABgAAAAIAAAACAAAD/gAAA/YAAAAIAAAD+gAAA/4AAAP+AAAAAgAEAAAAAgAAAAQAAgAAA/4D9AACAAAD/gAQAAAD/gAAA/4AAAP+AAAD/gAAA/wAAAP+AAAAAgAAAAIAAAACAAAAAgAAAAQAAAP8A/4AAAACAAQAAAP+AAAD+gAAA/4AAAAAEAIAAgAQAA4AAAwAHAAsADwAAAQEBAQEBAQEBAQEBAQEBAQCAAIAAAP+AAQAAgAAA/4ABAACAAAD/gAEAAIAAAP+AA4AAAP0AAAADAAAA/QAAAAMAAAD9AAAAAwAAAP0AAAAAAQIAAAAEAAQAAAkAAAEBAQEBAQEBAQEDgACAAAD+AAAAAIAAAACAAAAAgAQAAAD8AAAAAQAAAAEAAAABAAAAAAgAAAAABAAEAAADAAcACwAPABMAFwAbAB8AAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAABAAAA/wACAAEAAAD/AP8AAQAAAP8AAgABAAAA/wD9AAEAAAD/AAIAAQAAAP8A/wABAAAA/wACAAEAAAD/AAQAAAD/AAAAAQAAAP8AAAAAAAAA/wAAAAEAAAD/AAAAAAAAAP8AAAABAAAA/wAAAAAAAAD/AAAAAQAAAP8AAAAAAQIAAAADAAQAAAMAAAEBAQECAAEAAAD/AAQAAAD8AAAAAAAAAgGAAIACgAQAAAMABwAAAQEBAQEBAQEBgAEAAAD/AAAAAQAAAP8ABAAAAP6AAAD/gAAA/oAAAAABAgAAAAQAAgAAAwAAAQEBAQIAAgAAAP4AAgAAAP4AAAAAAAAEAIAAAAQABAAAAwAHAAsADwAAAQEBAQEBAQEBAQEBAQEBAQCAAIAAAP+AAQAAgAAA/4ABAACAAAD/gAEAAIAAAP+ABAAAAPwAAAAEAAAA/AAAAAQAAAD8AAAABAAAAPwAAAAAAQCAAIADgAOAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAoABAAAA/oAAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAAEAAAD/gAOAAAD+AAAA/wAAAACAAAAAgAAAAIAAAACAAAAAgAAA/wAAAAEAAAAAAAABAAAAAAQABAAACwAAAQEBAQEBAQEBAQEBAAAEAAAA/gAAAP+AAAD/gAAA/4AAAP+ABAAAAPwAAAAAgAAAAIAAAACAAAAAgAAAAAAAAQCAAIAEAAOAABsAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAgACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAOAAAD/gAAAAIAAAP8AAAABAAAA/oAAAAGAAAD9AAAAAIAAAP+AAAABAAAA/wAAAAGAAAD+gAAAAAAAAQAAAAACAAQAAAkAAAEBAQEBAQEBAQEAAACAAAAAgAAAAIAAAACAAAD+AAQAAAD/AAAA/wAAAP8AAAD/AAAAAAEAAAAABAAEAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQKAAYAAAP8AAAD/AAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAQAEAAAA/wAAAP+AAAD/gAAA/wAAAP8AAAABgAAAAQAAAACAAAAAgAAAAAAAAQAAAAAEAAIAAA8AAAEBAQEBAQEBAQEBAQEBAQEBgAEAAAAAgAAAAIAAAACAAAD8AAAAAIAAAACAAAAAgAIAAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAAAAAAAAgAAAAAEAAQAAAMABwAAAQEBAQEBAQEAAAIAAAD+AAIAAgAAAP4ABAAAAP4AAAAAAAAA/gAAAAAEAAACAAQABAAAAwAHAAsADwAAAQEBAQEBAQEBAQEBAQEBAQAAAQAAAP8AAgABAAAA/wD/AAEAAAD/AAIAAQAAAP8ABAAAAP8AAAABAAAA/wAAAAAAAAD/AAAAAQAAAP8AAAAABAIAAAAEAAQAAAMABwALAA8AAAEBAQEBAQEBAQEBAQEBAQECAAEAAAD/AAEAAQAAAP8A/wABAAAA/wABAAEAAAD/AAQAAAD/AAAAAAAAAP8AAAAAAAAA/wAAAAAAAAD/AAAAAAEDAAAABAAEAAADAAABAQEBAwABAAAA/wAEAAAA/AAAAAAAAAEAAAAABAAEAAAFAAABAQEBAQEAAAQAAAD9AAAA/wAEAAAA/wAAAP0AAAAAAQAAAAABAAQAAAMAAAEBAQEAAAEAAAD/AAQAAAD8AAAAAAAAAwCAAIADAAOAAAMABwALAAABAQEBAQEBAQEBAQEAgACAAAD/gAEAAIAAAP+AAQAAgAAA/4ADgAAA/QAAAAMAAAD9AAAAAwAAAP0AAAAAAAABAYABgAQABAAACwAAAQEBAQEBAQEBAQEBAYABAAAAAIAAAAEAAAD+gAAA/4AAAP+ABAAAAP8AAAD/gAAA/wAAAACAAAAAgAAAAAAAAQAAAYACgAQAAAsAAAEBAQEBAQEBAQEBAQGAAQAAAP+AAAD/gAAA/oAAAAEAAAAAgAQAAAD+gAAA/4AAAP+AAAABAAAAAIAAAAAAAAEAAAAABAAEAAAJAAABAQEBAQEBAQEBAwABAAAA/AAAAAEAAAABAAAAAQAEAAAA/AAAAAKAAAAAgAAAAIAAAAABAIAAgAMABAAACwAAAQEBAQEBAQEBAQEBAgABAAAA/4AAAP6AAAD/gAAAAIAAAAEABAAAAP0AAAD/gAAAAIAAAAEAAAAAgAAAAAAAAQAAAAAEAAQAAAUAAAEBAQEBAQAAAQAAAAMAAAD8AAQAAAD9AAAA/wAAAAACAIAAgAMAAoAACwAPAAABAQEBAQEBAQEBAQEBAQEBAQABgAAAAIAAAP+AAAD+gAAAAQAAAP8A/4AAgAAA/4ACgAAA/4AAAP8AAAD/gAAAAIAAAAEAAAAAAAAA/wAAAAACAIAAgAMABAAACwAPAAABAQEBAQEBAQEBAQEBAQEBAgABAAAA/4AAAP6AAAABAAAA/wAAAAEA/oAAgAAA/4AEAAAA/QAAAP+AAAAAgAAAAQAAAACAAAD/gAAA/wAAAAABAIAAgAQABAAADQAAAQEBAQEBAQEBAQEBAQECAAIAAAD/AAAA/4AAAP6AAAD/gAAAAIAAAAEABAAAAP+AAAD9gAAA/4AAAACAAAABAAAAAIAAAAACAAAAAAQABAAAAwAHAAABAQEBAQEBAQAABAAAAPwAAQAAAAIAAAAEAAAA/AAAAAMA/gAAAAIAAAEAgACABAAEAAARAAABAQEBAQEBAQEBAQEBAQEBAQECAAIAAAD/AAAAAQAAAP8AAAD/gAAA/oAAAP+AAAAAgAAAAQAEAAAA/4AAAP+AAAD/gAAA/oAAAP+AAAAAgAAAAQAAAACAAAAAAQAAAAACgAKAAAsAAAEBAQEBAQEBAQEBAQAAAYAAAACAAAAAgAAA/wAAAP+AAAD/AAKAAAD/gAAA/4AAAP6AAAABAAAAAIAAAAAAAAEAAAAABAAEAAAFAAABAQEBAQEAAAQAAAD/AAAA/QAEAAAA/AAAAAMAAAAAAQCAAIAEAAQAABUAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAAIAAAD/AAAAAQAAAP8AAAABAAAA/wAAAP+AAAD+gAAA/4AAAACAAAABAAQAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAAEAAAAAgAAAAAEBgAAABAACgAALAAABAQEBAQEBAQEBAQECgAGAAAD/AAAA/4AAAP8AAAAAgAAAAIACgAAA/wAAAP+AAAD/AAAAAYAAAACAAAAAAAABAAAAAAQABAAAEQAAAQEBAQEBAQEBAQEBAQEBAQEBAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAPwABAAAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAAEAAAAABAABAAADAAABAQEBAAAEAAAA/AABAAAA/wAAAAAAAAEAAAAABAAEAAARAAABAQEBAQEBAQEBAQEBAQEBAQEDgACAAAD8AAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAEAAAA/AAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAQAAAgAEAAQAAAMAAAEBAQEAAAQAAAD8AAQAAAD+AAAAAAAAAgCAAIACAAOAAAMABwAAAQEBAQEBAQEAgACAAAD/gAEAAIAAAP+AA4AAAP0AAAADAAAA/QAAAAAEAIAAgAQABAAAAwAHAAsADwAAAQEBAQEBAQEBAQEBAQEBAQCAA4AAAPyAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAABAAAAPyAAAADAP+AAAAAgP8A/4AAAACA/wD/gAAAAIAAAQAAAAAEAAQAAAUAAAEBAQEBAQMAAQAAAPwAAAADAAQAAAD8AAAAAQAAAAACAIAAgAQABAAAAwAHAAABAQEBAQEBAQCAA4AAAPyAAYAAAACAAAAEAAAA/IAAAAIA/4AAAACAAAMAgACABAAEAAADAAcACwAAAQEBAQEBAQEBAQEBAIADgAAA/IAAgAAAAIAAAAGAAAAAgAAABAAAAPyAAAADAP+AAAAAgP4A/4AAAACAAAAABAAAAIAEAAQAAAMABwALAA8AAAEBAQEBAQEBAQEBAQEBAQEAAAQAAAD8AAAABAAAAPwAAAAEAAAA/AAAAAQAAAD8AAQAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAAYAgACABAAEAAADAAcACwAPABMAFwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAIADgAAA/IAAgAAAAIAAAAGAAAAAgAAA/oAAAACAAAD+gAAAAIAAAAGAAAAAgAAABAAAAPyAAAADAP+AAAAAgAAA/4AAAACA/wD/gAAAAID/AP+AAAAAgAAA/4AAAACAAAEAgACAAQADgAADAAABAQEBAIAAgAAA/4ADgAAA/QAAAAAAAAUAgACABAAEAAADAAcACwAPABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAIADgAAA/IAAgAAAAIAAAAGAAAAAgAAA/YAAAACAAAABgAAAAIAAAAQAAAD8gAAAAwD/gAAAAIAAAP+AAAAAgP4A/4AAAACAAAD/gAAAAIAAAAABAAADAAQABAAAAwAAAQEBAQAABAAAAPwABAAAAP8AAAAAAAAHAIAAgAQABAAAAwAHAAsADwATABcAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQCAA4AAAPyAAIAAAACAAAABgAAAAIAAAP2AAAAAgAAAAYAAAACAAAD9gAAAAIAAAAGAAAAAgAAABAAAAPyAAAADAP+AAAAAgAAA/4AAAACA/wD/gAAAAIAAAP+AAAAAgP8A/4AAAACAAAD/gAAAAIAAAAAEAAAAAAQAAgAAAwAHAAsADwAAAQEBAQEBAQEBAQEBAQEBAQAAAQAAAP8AAgABAAAA/wD/AAEAAAD/AAIAAQAAAP8AAgAAAP8AAAABAAAA/wAAAAAAAAD/AAAAAQAAAP8AAAAAAQAAAAAEAAQAAAkAAAEBAQEBAQEBAQEAAAEAAAABAAAAAQAAAAEAAAD8AAQAAAD/gAAA/4AAAP+AAAD9gAAAAAEBAAAAAgAEAAADAAABAQEBAQABAAAA/wAEAAAA/AAAAAAAAAEAAAAABAAEAAALAAABAQEBAQEBAQEBAQECgAGAAAD8AAAAAIAAAACAAAAAgAAAAQAEAAAA/AAAAAGAAAABAAAAAIAAAACAAAAAAAABAAABAAQAAgAAAwAAAQEBAQAABAAAAPwAAgAAAP8AAAAAAAABAAAAAAQABAAACwAAAQEBAQEBAQEBAQEBAgACAAAA/AAAAACAAAAAgAAAAIAAAACABAAAAPwAAAACAAAAAIAAAACAAAAAgAAAAAAAAQAAAAAEAAIAAAkAAAEBAQEBAQEBAQEDAAEAAAD8AAAAAQAAAAEAAAABAAIAAAD+AAAAAIAAAACAAAAAgAAAAAEAAAAABAAEAAALAAABAQEBAQEBAQEBAQEAAAIAAAAAgAAAAIAAAACAAAAAgAAA/AAEAAAA/4AAAP+AAAD/gAAA/4AAAP4AAAAAAAADAAAAAAQABAAAGwAnADMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAEAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAD/AAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAIAAYAAAACAAAD/gAAA/4AAAP+AAAD/gP4AAIAAAACAAAAAgAAAAIAAAP6AAAD/gAQAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAQAAAP+AAAD+gAAAAIAAAACAAAAAgAAA/oAAAP+AAAD/gAAA/4AAAP+AAAAAgAAAAAAAAQAAAAAEAAIAAAkAAAEBAQEBAQEBAQEAAAEAAAABAAAAAQAAAAEAAAD8AAIAAAD/gAAA/4AAAP+AAAD/gAAAAAEAAAAABAAEAAALAAABAQEBAQEBAQEBAQEAAAGAAAABAAAAAIAAAACAAAAAgAAA/AAEAAAA/4AAAP+AAAD/gAAA/wAAAP6AAAAAAAAEAAAAgAQABAAAAwAHAAsADwAAAQEBAQEBAQEBAQEBAQEBAQCAAYAAAP6AAgABgAAA/oD9gAGAAAD+gAIAAYAAAP6ABAAAAP6AAAABgAAA/oAAAP+AAAD+gAAAAYAAAP6AAAAAAQIAAgAEAAQAAAMAAAEBAQECAAIAAAD+AAQAAAD+AAAAAAAABACAAIAEAAQAAAMABwAjACcAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAAD/AAGAAQAAAP8A/gAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4ABgACAAAD/gAQAAAD/gAAAAIAAAP+AAAAAAAAA/wAAAP+AAAD/gAAAAIAAAACAAAABAAAA/oAAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAAGAAAD/gAAAAAQAAAAABAAEAAADAAcACwAPAAABAQEBAQEBAQEBAQEBAQEBAAAAgAAA/4ADgACAAAD/gPyAAIAAAP+AA4AAgAAA/4AEAAAA/4AAAACAAAD/gAAA/QAAAP+AAAAAgAAA/4AAAAABAAAAAAIAAgAAAwAAAQEBAQAAAgAAAP4AAgAAAP4AAAAAAAAEAAAAAAIABAAAAwAHAAsADwAAAQEBAQEBAQEBAQEBAQEBAQAAAQAAAP8AAQABAAAA/wD/AAEAAAD/AAEAAQAAAP8ABAAAAP8AAAAAAAAA/wAAAAAAAAD/AAAAAAAAAP8AAAAAAQCAAQADgAOAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAYABAAAA/4AAAAGAAAD+gAAAAIAAAP8AAAD/gAAA/4AAAACAAAAAgAOAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAACAAAAAAAABAQABAAOABAAAEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQECAACAAAAAgAAAAIAAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACABAAAAP+AAAD/gAAA/wAAAACAAAD+gAAAAYAAAP+AAAABAAAAAIAAAAAAAAEBAAEABAADgAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQIAAQAAAACAAAAAgAAA/4AAAP+AAAD/AAAAAIAAAP6AAAABgAAA/4ADgAAA/4AAAP+AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAAAgAAAAAAAAQEAAIADgAOAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAgAAgAAAAIAAAACAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAOAAAD+gAAAAIAAAP8AAAD/gAAA/4AAAACAAAAAgAAAAQAAAP+AAAAAAAABAQAAgAOABAAADwAAAQEBAQEBAQEBAQEBAQEBAQIAAIAAAACAAAAAgAAA/4AAAP6AAAD/gAAAAIAAAACABAAAAP8AAAD/AAAA/wAAAP+AAAAAgAAAAQAAAAEAAAAAAAACAIAAgAOAA4AAAwAJAAABAQEBAQEBAQEBAIADAAAA/QAAgAAAAgAAAP8AAAADgAAA/QAAAAKA/gAAAAEAAAABAAAAAAIAgACABAAEAAAbACcAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAACAAAAAgAAAAIAAAACAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAAAAAD/gAAAAIAAAACAAAAAgAAA/4AAAAQAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAA/4D/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAEAAAIABAADAAADAAABAQEBAAAEAAAA/AADAAAA/wAAAAAAAAEAAAAABAAEAAALAAABAQEBAQEBAQEBAQEAAAQAAAD/gAAA/4AAAP+AAAD/gAAA/gAEAAAA/gAAAP+AAAD/gAAA/4AAAP+AAAAAAAABAAACAAIABAAAAwAAAQEBAQAAAgAAAP4ABAAAAP4AAAAAAAACAQAAgAOAA4AAFwAbAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAYABgAAAAIAAAP8AAAAAgAAAAIAAAP8AAAD/gAAA/wAAAACAAAAAgAAA/wAAAACAAIAAAACAAAADgAAA/wAAAP+AAAD/gAAA/4AAAP+AAAAAgAAA/4AAAACAAAAAgAAAAIAAAACAAAAAgP+AAAAAgAADAAAAAAQABAAACwAnADMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAGAAAD/gAAA/4AAAP+AAAD/gAAAAIACgAEAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgACAAIAAAP+AAAD+gAAAAIAAAACAAAAAgAQAAAD/gAAA/4AAAP+AAAD/gAAAAYAAAACAAAD/AAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAQAAAACAAAAAgAAAAIAAAACAAAAAgAAA/oAAAP6AAAD/gAAAAIAAAACAAAAAgAAAAAAAAgCAAIADgAQAAA8AHwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAAABAAAAAIAAAP+AAAD/AAAA/wAAAP+AAAAAgAAAAQAAAAEAAAAAgAAA/4AAAP8AAAD/AAAA/4AAAACABAAAAP+AAAAAgAAA/wAAAP+AAAAAgAAA/4AAAAEAAAD+gAAA/4AAAACAAAD/AAAA/4AAAACAAAD/gAAAAQAAAAABAAAAAAQAA4AACwAAAQEBAQEBAQEBAQEBAQACAAAAAIAAAACAAAD8AAAAAIAAAACAA4AAAP+AAAD/gAAA/YAAAAKAAAAAgAAAAAAAAQAAAAACAAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEAAACAAAAAgAAAAIAAAACAAAD/gAAA/4AAAP+AAAD/gAQAAAD/gAAA/4AAAP+AAAD/AAAA/4AAAP+AAAD/gAAAAAAAAQIAAAAEAAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEDgACAAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAQAAAD8AAAAAIAAAACAAAAAgAAAAQAAAACAAAAAgAAAAAAAAQCAAIAEAAQAABcAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQIAAIAAAACAAAAAgAAAAIAAAP+AAAD/AAAA/4AAAP8AAAD/gAAAAIAAAACAAAAAgAQAAAD/gAAA/4AAAP+AAAD/gAAA/oAAAAEAAAD/AAAAAYAAAACAAAAAgAAAAIAAAAAAACAAAAAABAAEAAADAAcACwAPABMAFwAbAB8AIwAnACsALwAzADcAOwA/AEMARwBLAE8AUwBXAFsAXwBjAGcAawBvAHMAdwB7AH8AAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAgAAA/4ABAACAAAD/gAEAAIAAAP+AAQAAgAAA/4D9gACAAAD/gAEAAIAAAP+AAQAAgAAA/4ABAACAAAD/gPyAAIAAAP+AAQAAgAAA/4ABAACAAAD/gAEAAIAAAP+A/YAAgAAA/4ABAACAAAD/gAEAAIAAAP+AAQAAgAAA/4D8gACAAAD/gAEAAIAAAP+AAQAAgAAA/4ABAACAAAD/gP2AAIAAAP+AAQAAgAAA/4ABAACAAAD/gAEAAIAAAP+A/IAAgAAA/4ABAACAAAD/gAEAAIAAAP+AAQAAgAAA/4D9gACAAAD/gAEAAIAAAP+AAQAAgAAA/4ABAACAAAD/gAQAAAD/gAAAAIAAAP+AAAAAgAAA/4AAAACAAAD/gAAAAAAAAP+AAAAAgAAA/4AAAACAAAD/gAAAAIAAAP+AAAAAAAAA/4AAAACAAAD/gAAAAIAAAP+AAAAAgAAA/4AAAAAAAAD/gAAAAIAAAP+AAAAAgAAA/4AAAACAAAD/gAAAAAAAAP+AAAAAgAAA/4AAAACAAAD/gAAAAIAAAP+AAAAAAAAA/4AAAACAAAD/gAAAAIAAAP+AAAAAgAAA/4AAAAAAAAD/gAAAAIAAAP+AAAAAgAAA/4AAAACAAAD/gAAAAAAAAP+AAAAAgAAA/4AAAACAAAD/gAAAAIAAAP+AAAAAAQAAAAAEAAQAAAsAAAEBAQEBAQEBAQEBAQAABAAAAP6AAAD/AAAA/4AAAP+AAAD/gAQAAAD8AAAAAIAAAACAAAAAgAAAAQAAAAAAAAEAAAAABAAEAAALAAABAQEBAQEBAQEBAQEAAAQAAAD/gAAA/4AAAP+AAAD/AAAA/oAEAAAA/oAAAP8AAAD/gAAA/4AAAP+AAAAAAAABAAABgAKABAAADwAAAQEBAQEBAQEBAQEBAQEBAQAAAQAAAACAAAAAgAAAAIAAAP8AAAD/gAAA/4AAAP+ABAAAAP+AAAD/gAAA/4AAAP8AAAAAgAAAAIAAAACAAAAAAAABAAAAAAKABAAADwAAAQEBAQEBAQEBAQEBAQEBAQAAAQAAAACAAAAAgAAAAIAAAP8AAAD/gAAA/4AAAP+ABAAAAP+AAAD/gAAA/4AAAP2AAAACAAAAAIAAAACAAAAAAAABAYAAAAQAAoAABQAAAQEBAQEBAYACgAAA/oAAAP8AAoAAAP8AAAD+gAAAAAEAAAAABAAEAAAJAAABAQEBAQEBAQEBAAACgAAAAIAAAACAAAAAgAAA/AAEAAAA/wAAAP8AAAD/AAAA/wAAAAACAAAAAAQABAAAGwAfAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQGAAQAAAACAAAAAgAAAAIAAAP+AAAD/gAAA/4AAAP8AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAAAAAEAAAAEAAAA/4AAAP+AAAD/gAAA/wAAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAAEAAAAAgAAAAIAAAP8A/wAAAAEAAAEBgAGABAAEAAAFAAABAQEBAQEBgAEAAAABgAAA/YAEAAAA/oAAAP8AAAAAAQAAAAACgAKAAA8AAAEBAQEBAQEBAQEBAQEBAQEBgAEAAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAKAAAD/AAAA/4AAAP+AAAD/gAAAAQAAAACAAAAAgAAAAAAAAQGAAAAEAAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEDAAEAAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAQAAAD/AAAA/4AAAP+AAAD+AAAAAoAAAACAAAAAgAAAAAAAAQGAAAAEAAKAAA8AAAEBAQEBAQEBAQEBAQEBAQEBgAEAAAAAgAAAAIAAAACAAAD/AAAA/4AAAP+AAAD/gAKAAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAAAAAQGAAYAEAAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEDAAEAAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAQAAAD/AAAA/4AAAP+AAAD/gAAAAQAAAACAAAAAgAAAAAAAAQAAAAAEAAQAABsAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAEAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAD/AAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAQAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAQAAAAAEAAQAAB8AAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAABAAAAAIAAAAEAAAAAgAAAAQAAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP8AAAAAgAAAAIAAAP+AAAD/gAQAAAD/gAAA/4AAAACAAAAAgAAA/wAAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAAEAAAAAgAAAAQAAAACAAAAAAAABAAABgAQABAAADwAAAQEBAQEBAQEBAQEBAQEBAQAAAQAAAACAAAAAgAAAAgAAAP2AAAD/gAAA/4AAAP+ABAAAAP+AAAD/gAAA/4AAAP8AAAAAgAAAAIAAAACAAAAAAAABAAABgAQAAoAAAwAAAQEBAQAABAAAAPwAAoAAAP8AAAAAAAABAYAAAAKABAAAAwAAAQEBAQGAAQAAAP8ABAAAAPwAAAAAAAABAYAAAAQABAAAFwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAwABAAAA/4AAAP+AAAAAgAAAAIAAAP8AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACABAAAAP8AAAD/gAAA/wAAAP+AAAD/AAAAAIAAAACAAAAAgAAAAQAAAACAAAAAgAAAAAAAAQAAAAAEAAKAAA8AAAEBAQEBAQEBAQEBAQEBAQEAAAKAAAAAgAAAAIAAAACAAAD/AAAA/4AAAP+AAAD+AAKAAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAAAAAQAAAYAEAAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEDAAEAAAD/gAAA/4AAAP+AAAD9gAAAAgAAAACAAAAAgAQAAAD/AAAA/4AAAP+AAAD/gAAAAQAAAACAAAAAgAAAAAAAAQAAAgAEAAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEAAAQAAAD/gAAA/4AAAP+AAAD/AAAA/4AAAP+AAAD/gAQAAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAAAAAAAAQAAAYACgAKAAAMAAAEBAQEAAAKAAAD9gAKAAAD/AAAAAAAAAQGAAAACgAKAAAMAAAEBAQEBgAEAAAD/AAKAAAD9gAAAAAAAAQAAAYAEAAQAABcAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAQAAAACAAAABAAAAAIAAAAEAAAD/gAAA/4AAAP+AAAD/AAAA/4AAAP+AAAD/gAQAAAD/gAAA/4AAAACAAAAAgAAA/wAAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAAAAAAEAAAAABAAEAAAJAAABAQEBAQEBAQEBAYACgAAA/AAAAACAAAAAgAAAAIAEAAAA/AAAAAEAAAABAAAAAQAAAAABAAAAAAQABAAAEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEDAAEAAAD/gAAA/4AAAP+AAAD/AAAA/oAAAAEAAAABAAAAAIAAAACABAAAAP6AAAD/AAAA/4AAAP+AAAD/gAAAAQAAAACAAAAAgAAAAQAAAAAAAAEAAAAABAAEAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQAAAQAAAACAAAAAgAAAAQAAAAEAAAD+gAAA/wAAAP+AAAD/gAAA/4AEAAAA/wAAAP8AAAD/gAAA/4AAAP8AAAAAgAAAAIAAAACAAAABAAAAAAAAAQAAAAAEAAQAABsAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEDAAEAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAQAAAD/AAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAQAAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAQAAAAACgAQAABcAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAQAAAACAAAAAgAAAAIAAAP+AAAD/gAAA/4AAAP8AAAAAgAAAAIAAAP+AAAD/gAQAAAD/gAAA/4AAAP+AAAD/AAAA/4AAAP+AAAD/gAAAAQAAAACAAAABAAAAAIAAAAAAAAEAAAAABAAEAAAfAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAQAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAP8AAAD/gAAA/wAAAP+AAAD/AAAAAIAAAACAAAD/gAAA/4AEAAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/wAAAACAAAAAgAAA/4AAAP+AAAABAAAAAIAAAAEAAAAAgAAAAAAAAQAAAAACgAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEBgAEAAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAQAAAD9gAAA/4AAAP+AAAD/gAAAAQAAAACAAAAAgAAAAAAAAQGAAAAEAAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEBgAEAAAAAgAAAAIAAAACAAAD/AAAA/4AAAP+AAAD/gAQAAAD+AAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAAAAAQAAAAAEAAKAAA8AAAEBAQEBAQEBAQEBAQEBAQEBgAKAAAD+AAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAKAAAD/AAAA/4AAAP+AAAD/gAAAAQAAAACAAAAAgAAAAAAAAQGAAYACgAQAAAMAAAEBAQEBgAEAAAD/AAQAAAD9gAAAAAAAAQGAAYAEAAKAAAMAAAEBAQEBgAKAAAD9gAKAAAD/AAAAAAAAAQAAAAAEAAQAAB8AAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAwABAAAA/4AAAP+AAAAAgAAAAIAAAP8AAAD/gAAA/wAAAP+AAAD/AAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAQAAAD/AAAA/4AAAP8AAAD/gAAA/wAAAACAAAAAgAAA/4AAAP+AAAABAAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAABAAAAAAQABAAAIwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAABAAAAAIAAAAEAAAAAgAAAAQAAAP+AAAD/gAAAAIAAAACAAAD/AAAA/4AAAP8AAAD/gAAA/wAAAACAAAAAgAAA/4AAAP+ABAAAAP+AAAD/gAAAAIAAAACAAAD/AAAA/4AAAP8AAAD/gAAA/wAAAACAAAAAgAAA/4AAAP+AAAABAAAAAIAAAAEAAAAAgAAAAAAAAQGAAYACgAKAAAMAAAEBAQEBgAEAAAD/AAKAAAD/AAAAAAAAAQAAAAAEAAKAABcAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQGAAQAAAACAAAAAgAAAAIAAAP8AAAD/gAAA/wAAAP+AAAD/AAAAAIAAAACAAAAAgAKAAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAD/gAAA/4AAAAEAAAAAgAAAAIAAAAAAAAEAAAGAAoAEAAAFAAABAQEBAQEBgAEAAAD9gAAAAYAEAAAA/YAAAAEAAAAAAQAAAAACgAKAAAUAAAEBAQEBAQAAAoAAAP8AAAD+gAKAAAD9gAAAAYAAAAABAAAAAAQABAAAHwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAEAAAAAgAAAAQAAAACAAAABAAAA/4AAAP+AAAAAgAAAAIAAAP8AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+ABAAAAP+AAAD/gAAAAIAAAACAAAD/AAAA/4AAAP8AAAD/gAAA/wAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAAAAAAEAAAAABAAEAAALAAABAQEBAQEBAQEBAQEBgAEAAAABgAAA/oAAAP8AAAD+gAAAAYAEAAAA/oAAAP8AAAD+gAAAAYAAAAEAAAAAAAABAAAAAAQAAoAABwAAAQEBAQEBAQEAAAQAAAD+gAAA/wAAAP6AAoAAAP8AAAD+gAAAAYAAAAAAAAEBgAAABAAEAAAHAAABAQEBAQEBAQGAAQAAAAGAAAD+gAAA/wAEAAAA/oAAAP8AAAD+gAAAAAAAAQAAAAACgAQAAAcAAAEBAQEBAQEBAYABAAAA/wAAAP6AAAABgAQAAAD8AAAAAYAAAAEAAAAAAAABAAABgAQABAAABwAAAQEBAQEBAQEBgAEAAAABgAAA/AAAAAGABAAAAP6AAAD/AAAAAQAAAAAAAAQBAAEAAwADAAADAAcACwAPAAABAQEBAQEBAQEBAQEBAQEBAYABAAAA/wD/gACAAAD/gAGAAIAAAP+A/wABAAAA/wADAAAA/4AAAAAAAAD/AAAAAQAAAP8AAAAAAAAA/4AAAAACAIAAgAOAA4AACwAPAAABAQEBAQEBAQEBAQEBAQEBAQACAAAAAIAAAP+AAAD+AAAA/4AAAACAAIAAAAEAAAADgAAA/4AAAP4AAAD/gAAAAIAAAAIAAAD/gP8AAAABAAACAAAAAAQABAAAEwAfAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAgAAAACAAAAAgAAA/4AAAP+AAAD+AAAA/4AAAP+AAAAAgAAAAIAAgAAA/4AAAACAAAABAAAAAIAAAP+AAAAEAAAA/4AAAP+AAAD+AAAA/4AAAP+AAAAAgAAAAIAAAAIAAAAAgAAA/4D/gAAA/wAAAP+AAAAAgAAAAQAAAACAABAAAAAABAAEAAADAAcACwAPABMAFwAbAB8AIwAnACsALwAzADcAOwA/AAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAYAAgAAA/4ACAACAAAD/gP2AAIAAAP+AAgAAgAAA/4D9gACAAAD/gAIAAIAAAP+A/YAAgAAA/4ACAACAAAD/gP+AAIAAAP+AAgAAgAAA/4D9gACAAAD/gAIAAIAAAP+A/YAAgAAA/4ACAACAAAD/gP2AAIAAAP+AAgAAgAAA/4AEAAAA/4AAAACAAAD/gAAAAAAAAP+AAAAAgAAA/4AAAAAAAAD/gAAAAIAAAP+AAAAAAAAA/4AAAACAAAD/gAAAAAAAAP+AAAAAgAAA/4AAAAAAAAD/gAAAAIAAAP+AAAAAAAAA/4AAAACAAAD/gAAAAAAAAP+AAAAAgAAA/4AAAAAQAAAAAAQABAAAAwAHAAsADwATABcAGwAfACMAJwArAC8AMwA3ADsAPwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAIAAAP+AAgAAgAAA/4D+gACAAAD/gAIAAIAAAP+A/oAAgAAA/4ACAACAAAD/gP6AAIAAAP+AAgAAgAAA/4D8gACAAAD/gAIAAIAAAP+A/oAAgAAA/4ACAACAAAD/gP6AAIAAAP+AAgAAgAAA/4D+gACAAAD/gAIAAIAAAP+ABAAAAP+AAAAAgAAA/4AAAAAAAAD/gAAAAIAAAP+AAAAAAAAA/4AAAACAAAD/gAAAAAAAAP+AAAAAgAAA/4AAAAAAAAD/gAAAAIAAAP+AAAAAAAAA/4AAAACAAAD/gAAAAAAAAP+AAAAAgAAA/4AAAAAAAAD/gAAAAIAAAP+AAAAAAwCAAIADgAQAABcAGwAfAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQIAAIAAAAEAAAD/AAAAAIAAAP+AAAABAAAA/wAAAP+AAAD/AAAA/4AAAACAAAABAP+AAAAAgAAA/4AAAACAAAAEAAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAYAAAACAAAD/gP+AAAAAgP8A/4AAAACAAAAAAQCAAIADgAOAAA8AAAEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/4AAAP+AAAD/AAAA/4AAAP+AAAAAgAOAAAD/gAAA/wAAAP+AAAD/AAAAAQAAAACAAAABAAAAAAAAAgCAAIADgAOAAAMACQAAAQEBAQEBAQEBAQCAAwAAAP0AAYAAAP8AAAACAAAAA4AAAP0AAAACgP8AAAD/AAAAAgAAAAABAIAAgAOAA4AAAwAAAQEBAQCAAwAAAP0AA4AAAP0AAAAAAAACAIAAgAOAA4AAAwALAAABAQEBAQEBAQEBAQEAgAMAAAD9AACAAAACAAAA/4AAAP8AAAADgAAA/QAAAAKA/gAAAAIAAAD/AAAAAQAAAQAAAAAEAAQAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQACAAAAAIAAAACAAAD/gAAA/4AAAP4AAAD/gAAA/4AAAACAAAAAgAQAAAD/gAAA/4AAAP4AAAD/gAAA/4AAAACAAAAAgAAAAgAAAACAAAAAAAABAQABAAMAAwAACwAAAQEBAQEBAQEBAQEBAYABAAAAAIAAAP+AAAD/AAAA/4AAAACAAwAAAP+AAAD/AAAA/4AAAACAAAABAAAAAAAAAQCAAQAEAAQAABsAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAACAAAAAgAAAAQAAAP+AAAD/gAAAAIAAAP8AAAD/gAAA/wAAAACAAAD/gAAA/4AAAAEAAAAAgAQAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAAAgAAA/4AAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAABgCAAIAEAAQAAAMABwALAA8AEwAXAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAOAAAD8gAEAAAAAgAAAAIAAAACAAAD+AAAAAIAAAAGAAAAAgAAA/gAAAAGAAAAEAAAA/IAAAAMA/wAAAAEAAAD/AAAAAQD+gP+AAAAAgAAA/4AAAACA/4D/gAAAAIAABgCAAIAEAAQAAAMABwALAA8AEwAXAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAOAAAD8gAEAAAAAgAAAAIAAAACAAAD+gAAAAYAAAP4AAAAAgAAAAYAAAACAAAAEAAAA/IAAAAMA/wAAAAEAAAD/AAAAAQD+gP+AAAAAgP+A/4AAAACAAAD/gAAAAIAABgCAAIAEAAQAABMAFwAbAB8AIwAnAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgAAgAAAAIAAAAEAAAD/AAAA/4AAAP+AAAD/gAAA/wAAAAEAAAAAgAAAAAAAgAAA/oAAgAAA/4ACAACAAAD/gP4AAIAAAP+AAgAAgAAA/4AEAAAA/wAAAP+AAAD/gAAA/4AAAP8AAAABAAAAAIAAAACAAAAAgAAA/4D/gAAAAIABAAAA/4AAAACAAAD/gAAA/oAAAP+AAAAAgAAA/4AAAAACAQAAgAOABAAAFwAbAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAYABgAAAAIAAAP+AAAD/gAAAAIAAAP+AAAD/gAAA/4AAAACAAAD/gAAAAQAAAP8A/4AAgAAA/4AEAAAA/4AAAP8AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAAAAIAAAAEAAAAAAAAA/wAAAAACAIAAgAQABAAAFwAbAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAYACgAAA/4AAAP+AAAD/gAAAAIAAAP+AAAD+gAAAAQAAAP8AAAABAAAAAIAAAP8A/wAAgAAA/4AEAAAA/gAAAAEAAAD/gAAA/4AAAP8AAAD/gAAAAIAAAAEAAAAAgAAAAIAAAACAAAD+gAAA/wAAAAABAIAAgAQABAAAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQIAAIAAAACAAAAAgAAAAIAAAP8AAAD/gAAAAIAAAP6AAAAAgAAA/4AAAP8AAAAAgAAAAIAAAACABAAAAP+AAAD/gAAA/4AAAP8AAAAAgAAA/wAAAP+AAAAAgAAAAQAAAP+AAAABAAAAAIAAAACAAAAAAAABAIAAgAQABAAAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQGAAYAAAP+AAAAAgAAAAQAAAP8AAAD/gAAAAIAAAP6AAAAAgAAA/4AAAP8AAAABAAAAAIAAAP+ABAAAAP8AAAD/gAAAAIAAAP6AAAAAgAAA/wAAAP+AAAAAgAAAAQAAAP+AAAABgAAA/4AAAACAAAAAAAABAIAAgAQABAAAFwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAAAAIAAAAEAAAAAgAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACABAAAAP+AAAAAgAAA/4AAAP6AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAABgAAAAAAAAQCAAIAEAAQAABsAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAACAAAAAgAAAAIAAAACAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAQAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAQEAAIADgAQAAAsAAAEBAQEBAQEBAQEBAQIAAYAAAP8AAAD/gAAA/wAAAACAAAAAgAQAAAD/AAAA/gAAAP+AAAABAAAAAIAAAAAAAAEAgACABAAEAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQGAAoAAAP+AAAD/AAAAAIAAAACAAAD+gAAA/4AAAP8AAAAAgAAAAIAEAAAA/QAAAP+AAAABAAAAAIAAAAEAAAD+AAAA/4AAAAEAAAAAgAAAAAAAAAAYASYAAQAAAAAAAAAIAAAAAQAAAAAAAQAIAAgAAQAAAAAAAgAHABAAAQAAAAAAAwAIABcAAQAAAAAABAAQAB8AAQAAAAAABQALAC8AAQAAAAAABgAIADoAAQAAAAAACQAJAEIAAQAAAAAACgA6AEsAAQAAAAAADQARAIUAAQAAAAAADgAyAJYAAQAAAAAAEwAMAMgAAwABBAkAAAAQANQAAwABBAkAAQAQAOQAAwABBAkAAgAOAPQAAwABBAkAAwAQAQIAAwABBAkABAAgARIAAwABBAkABQAWATIAAwABBAkABgAQAUgAAwABBAkACQASAVgAAwABBAkACgB0AWoAAwABBAkADQAiAd4AAwABBAkADgBkAgAAAwABBAkAEwAYAmQoYykgMjAyMlVyc2FGb250UmVndWxhclVyc2FGb250VXJzYUZvbnQgUmVndWxhclZlcnNpb24gMS4wVXJzYUZvbnRVcnNhRnJhbmtBbiBvcGVuIGxpY2VuY2UgZ2VuZXJhbCBwdXJwb3NlIHRleHRtb2RlIGZvbnQgYnkgVXJzYUZyYW5rQ0MwIDEuMCBVbml2ZXJzYWxodHRwczovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wL0hlbGxvIFdvcmxkIQAoAGMAKQAgADIAMAAyADIAVQByAHMAYQBGAG8AbgB0AFIAZQBnAHUAbABhAHIAVQByAHMAYQBGAG8AbgB0AFUAcgBzAGEARgBvAG4AdAAgAFIAZQBnAHUAbABhAHIAVgBlAHIAcwBpAG8AbgAgADEALgAwAFUAcgBzAGEARgBvAG4AdABVAHIAcwBhAEYAcgBhAG4AawBBAG4AIABvAHAAZQBuACAAbABpAGMAZQBuAGMAZQAgAGcAZQBuAGUAcgBhAGwAIABwAHUAcgBwAG8AcwBlACAAdABlAHgAdABtAG8AZABlACAAZgBvAG4AdAAgAGIAeQAgAFUAcgBzAGEARgByAGEAbgBrAEMAQwAwACAAMQAuADAAIABVAG4AaQB2AGUAcgBzAGEAbABoAHQAdABwAHMAOgAvAC8AYwByAGUAYQB0AGkAdgBlAGMAbwBtAG0AbwBuAHMALgBvAHIAZwAvAHAAdQBiAGwAaQBjAGQAbwBtAGEAaQBuAC8AegBlAHIAbwAvADEALgAwAC8ASABlAGwAbABvACAAVwBvAHIAbABkACEAAAADAAAAAAAAAGYAMwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==\r
934
922
  `)).arrayBuffer();
935
- await this.Rt(t), this.vt = w.parse(t)[0], await this.Vt();
923
+ await this.kt(t), this._t = w.parse(t)[0], await this.Rt();
936
924
  }
937
- Ht(A) {
938
- if (A === void 0) return this.yt;
939
- this.yt = A, this.Ft = this.Ot.calculateMaxGlyphDimensions(this.bt.map((e) => e.character), this.yt, this.vt);
940
- const t = this.St.createTextureAtlas(this.bt, this.Ft, this.yt, this.vt);
941
- this.xt = t.framebuffer, this.Mt = t.columns, this.Gt = t.rows;
925
+ Vt(A) {
926
+ if (A === void 0) return this.xt;
927
+ this.xt = A, this.Gt = this.St.calculateMaxGlyphDimensions(this.vt.map((e) => e.character), this.xt, this._t);
928
+ const t = this.Tt.createTextureAtlas(this.vt, this.Gt, this.xt, this._t);
929
+ this.bt = t.framebuffer, this.yt = t.columns, this.Mt = t.rows;
942
930
  }
943
- async zt(A) {
931
+ async Ht(A) {
944
932
  try {
945
933
  const t = await fetch(A);
946
934
  if (!t.ok) throw new I(`Failed to load font file: ${t.status} ${t.statusText}`);
947
935
  const e = await t.arrayBuffer();
948
- await this.Rt(e);
936
+ await this.kt(e);
949
937
  const s = w.parse(e);
950
938
  if (!s || s.length === 0) throw Error("Failed to parse font file");
951
- this.vt = s[0], await this.Vt();
939
+ this._t = s[0], await this.Rt();
952
940
  } catch (t) {
953
941
  throw new I("Failed to load font: " + (t instanceof Error ? t.message : "Unknown error"), t);
954
942
  }
955
943
  }
956
- async Rt(A) {
944
+ async kt(A) {
957
945
  const t = Date.now();
958
- this.Yt = this.Yt === "UrsaFont" ? "UrsaFont" : "CustomFont_" + t, this.$t = new FontFace(this.Yt, A), await this.$t.load(), document.fonts.add(this.$t);
946
+ this.$t = this.$t === "UrsaFont" ? "UrsaFont" : "CustomFont_" + t, this.Ft = new FontFace(this.$t, A), await this.Ft.load(), document.fonts.add(this.Ft);
959
947
  }
960
- async Vt() {
961
- const A = this.Tt.extractCharacters(this.vt), t = this.Tt.filterProblematicCharacters(A);
962
- this.bt = this.Ut.createCharacterObjects(t, this.vt), this.Ft = this.Ot.calculateMaxGlyphDimensions(t, this.yt, this.vt);
963
- const e = this.St.createTextureAtlas(this.bt, this.Ft, this.yt, this.vt);
964
- this.xt = e.framebuffer, this.Mt = e.columns, this.Gt = e.rows;
948
+ async Rt() {
949
+ const A = this.Yt.extractCharacters(this._t), t = this.Yt.filterProblematicCharacters(A);
950
+ this.vt = this.Ot.createCharacterObjects(t, this._t), this.Gt = this.St.calculateMaxGlyphDimensions(t, this.xt, this._t);
951
+ const e = this.Tt.createTextureAtlas(this.vt, this.Gt, this.xt, this._t);
952
+ this.bt = e.framebuffer, this.yt = e.columns, this.Mt = e.rows;
965
953
  }
966
954
  getCharacterColor(A) {
967
- return this.Ut.getCharacterColor(A, this.bt);
955
+ return this.Ot.getCharacterColor(A, this.vt);
968
956
  }
969
957
  getCharacterColors(A) {
970
- return this.Ut.getCharacterColors(A, this.bt);
958
+ return this.Ot.getCharacterColors(A, this.vt);
971
959
  }
972
960
  hasAllCharacters(A) {
973
961
  if (typeof A != "string" || A.length === 0) return !1;
974
- const t = new Set(this.bt.map((e) => e.character));
962
+ const t = new Set(this.vt.map((e) => e.character));
975
963
  for (const e of A) if (!t.has(e)) return !1;
976
964
  return !0;
977
965
  }
978
966
  S() {
979
- this.xt.S(), document.fonts.delete(this.$t);
967
+ this.bt.S(), document.fonts.delete(this.Ft);
980
968
  }
981
969
  get fontFramebuffer() {
982
- return this.xt;
970
+ return this.bt;
983
971
  }
984
972
  get characters() {
985
- return this.bt;
973
+ return this.vt;
986
974
  }
987
975
  get textureColumns() {
988
- return this.Mt;
976
+ return this.yt;
989
977
  }
990
978
  get textureRows() {
991
- return this.Gt;
979
+ return this.Mt;
992
980
  }
993
981
  get maxGlyphDimensions() {
994
- return this.Ft;
982
+ return this.Gt;
995
983
  }
996
984
  get fontSize() {
997
- return this.yt;
985
+ return this.xt;
998
986
  }
999
987
  get font() {
1000
- return this.vt;
988
+ return this._t;
1001
989
  }
1002
990
  }
1003
- class CA {
991
+ class DA {
1004
992
  constructor(A, t, e) {
993
+ o(this, "zt");
1005
994
  o(this, "Lt");
1006
- o(this, "Jt");
1007
995
  o(this, "p");
1008
996
  o(this, "_");
997
+ o(this, "Jt");
1009
998
  o(this, "Kt");
1010
- o(this, "Wt");
1011
- o(this, "jt", !1);
999
+ o(this, "Wt", !1);
1000
+ o(this, "jt");
1012
1001
  o(this, "Nt");
1013
1002
  o(this, "Zt");
1014
- o(this, "Xt");
1015
- this.Nt = A, this.Zt = t, this.Xt = e, this.xA();
1003
+ this.jt = A, this.Nt = t, this.Zt = e, this.xA();
1016
1004
  }
1017
1005
  xA() {
1018
- this.jt || (this.Lt = Math.floor(this.Nt.width / this.Zt), this.Jt = Math.floor(this.Nt.height / this.Xt)), this.qt();
1006
+ this.Wt || (this.zt = Math.floor(this.jt.width / this.Nt), this.Lt = Math.floor(this.jt.height / this.Zt)), this.Xt();
1019
1007
  }
1020
- qt() {
1021
- this.p = this.Lt * this.Zt, this._ = this.Jt * this.Xt, this.Kt = Math.floor((this.Nt.width - this.p) / 2), this.Wt = Math.floor((this.Nt.height - this._) / 2);
1008
+ Xt() {
1009
+ this.p = this.zt * this.Nt, this._ = this.Lt * this.Zt, this.Jt = Math.floor((this.jt.width - this.p) / 2), this.Kt = Math.floor((this.jt.height - this._) / 2);
1010
+ }
1011
+ qt(A, t) {
1012
+ this.Nt = A, this.Zt = t, this.xA();
1022
1013
  }
1023
1014
  Ae(A, t) {
1024
- this.Zt = A, this.Xt = t, this.xA();
1015
+ this.Wt = !0, this.zt = A, this.Lt = t, this.Xt();
1025
1016
  }
1026
- te(A, t) {
1027
- this.jt = !0, this.Lt = A, this.Jt = t, this.qt();
1017
+ te() {
1018
+ this.Wt = !1, this.xA();
1028
1019
  }
1029
1020
  ee() {
1030
- this.jt = !1, this.xA();
1031
- }
1032
- se() {
1033
- this.jt ? this.qt() : this.xA();
1021
+ this.Wt ? this.Xt() : this.xA();
1034
1022
  }
1035
- re(A) {
1036
- if (A === void 0) return this.jt;
1037
- this.jt = A;
1023
+ se(A) {
1024
+ if (A === void 0) return this.Wt;
1025
+ this.Wt = A;
1038
1026
  }
1039
1027
  get cellWidth() {
1040
- return this.Zt;
1028
+ return this.Nt;
1041
1029
  }
1042
1030
  get cellHeight() {
1043
- return this.Xt;
1031
+ return this.Zt;
1044
1032
  }
1045
1033
  get cols() {
1046
- return this.Lt;
1034
+ return this.zt;
1047
1035
  }
1048
1036
  get rows() {
1049
- return this.Jt;
1037
+ return this.Lt;
1050
1038
  }
1051
1039
  get width() {
1052
1040
  return this.p;
@@ -1055,109 +1043,109 @@ class CA {
1055
1043
  return this._;
1056
1044
  }
1057
1045
  get offsetX() {
1058
- return this.Kt;
1046
+ return this.Jt;
1059
1047
  }
1060
1048
  get offsetY() {
1061
- return this.Wt;
1049
+ return this.Kt;
1062
1050
  }
1063
1051
  }
1064
- class DA {
1052
+ class CA {
1065
1053
  constructor(A, t = !1, e = {}) {
1066
- o(this, "Nt");
1054
+ o(this, "jt");
1055
+ o(this, "re");
1067
1056
  o(this, "Be");
1068
1057
  o(this, "ie");
1069
- o(this, "Qe");
1070
1058
  o(this, "onTransformChange");
1071
- this.Be = A, this.ie = t, this.Nt = this.Ee(e.width, e.height), t && this.setupTransformObserver();
1059
+ this.re = A, this.Be = t, this.jt = this.Qe(e.width, e.height), t && this.setupTransformObserver();
1072
1060
  }
1073
- Ee(A, t) {
1061
+ Qe(A, t) {
1074
1062
  var s;
1075
1063
  const e = document.createElement("canvas");
1076
- if (e.className = "textmodeCanvas", e.style.imageRendering = "pixelated", this.ie) e.width = A || 800, e.height = t || 600, document.body.appendChild(e);
1064
+ if (e.className = "textmodeCanvas", e.style.imageRendering = "pixelated", this.Be) e.width = A || 800, e.height = t || 600, document.body.appendChild(e);
1077
1065
  else {
1078
- const r = this.Be.getBoundingClientRect();
1066
+ const r = this.re.getBoundingClientRect();
1079
1067
  let i = Math.round(r.width), B = Math.round(r.height);
1080
- if (this.Be instanceof HTMLVideoElement) {
1081
- const g = this.Be;
1068
+ if (this.re instanceof HTMLVideoElement) {
1069
+ const g = this.re;
1082
1070
  (i === 0 || B === 0) && g.videoWidth > 0 && g.videoHeight > 0 && (i = g.videoWidth, B = g.videoHeight);
1083
1071
  }
1084
1072
  e.width = i, e.height = B, e.style.position = "absolute", e.style.pointerEvents = "none";
1085
- const Q = window.getComputedStyle(this.Be);
1073
+ const Q = window.getComputedStyle(this.re);
1086
1074
  let n = parseInt(Q.zIndex || "0", 10);
1087
- isNaN(n) && (n = 0), e.style.zIndex = "" + (n + 1), this.oe(e), (s = this.Be.parentNode) == null || s.insertBefore(e, this.Be.nextSibling);
1075
+ isNaN(n) && (n = 0), e.style.zIndex = "" + (n + 1), this.Ee(e), (s = this.re.parentNode) == null || s.insertBefore(e, this.re.nextSibling);
1088
1076
  }
1089
1077
  return e;
1090
1078
  }
1091
- oe(A) {
1092
- const t = this.Be.getBoundingClientRect();
1093
- let e = this.Be.offsetParent;
1079
+ Ee(A) {
1080
+ const t = this.re.getBoundingClientRect();
1081
+ let e = this.re.offsetParent;
1094
1082
  if (e && e !== document.body) {
1095
1083
  const s = e.getBoundingClientRect();
1096
1084
  A.style.top = t.top - s.top + "px", A.style.left = t.left - s.left + "px";
1097
1085
  } else A.style.top = t.top + window.scrollY + "px", A.style.left = t.left + window.scrollX + "px";
1098
1086
  }
1099
- se(A, t) {
1100
- if (this.ie) this.Nt.width = A ?? this.Nt.width, this.Nt.height = t ?? this.Nt.height;
1087
+ ee(A, t) {
1088
+ if (this.Be) this.jt.width = A ?? this.jt.width, this.jt.height = t ?? this.jt.height;
1101
1089
  else {
1102
- const e = this.Be.getBoundingClientRect();
1090
+ const e = this.re.getBoundingClientRect();
1103
1091
  let s = Math.round(e.width), r = Math.round(e.height);
1104
- if (this.Be instanceof HTMLVideoElement) {
1105
- const i = this.Be;
1092
+ if (this.re instanceof HTMLVideoElement) {
1093
+ const i = this.re;
1106
1094
  (s === 0 || r === 0) && i.videoWidth > 0 && i.videoHeight > 0 && (s = i.videoWidth, r = i.videoHeight);
1107
1095
  }
1108
- this.Nt.width = s, this.Nt.height = r, this.oe(this.Nt);
1096
+ this.jt.width = s, this.jt.height = r, this.Ee(this.jt);
1109
1097
  }
1110
1098
  }
1111
- ge() {
1112
- const A = { alpha: !1, premultipliedAlpha: !1, preserveDrawingBuffer: !0, antialias: !1, depth: !1, stencil: !1, powerPreference: "high-performance" }, t = this.Nt.getContext("webgl2", A) || this.Nt.getContext("webgl", A);
1099
+ oe() {
1100
+ const A = { alpha: !1, premultipliedAlpha: !1, preserveDrawingBuffer: !0, antialias: !1, depth: !1, stencil: !1, powerPreference: "high-performance" }, t = this.jt.getContext("webgl2", A) || this.jt.getContext("webgl", A);
1113
1101
  if (!t) throw new I("WebGL context could not be created. Ensure your browser supports WebGL.");
1114
1102
  return t;
1115
1103
  }
1116
1104
  setupTransformObserver() {
1117
- this.Qe = new ResizeObserver((A) => {
1105
+ this.ie = new ResizeObserver((A) => {
1118
1106
  for (const t of A) {
1119
1107
  const e = t.contentRect;
1120
- !this.onTransformChange || Math.round(e.width) === this.Nt.width && Math.round(e.height) === this.Nt.height || this.onTransformChange();
1108
+ !this.onTransformChange || Math.round(e.width) === this.jt.width && Math.round(e.height) === this.jt.height || this.onTransformChange();
1121
1109
  }
1122
- }), this.Qe.observe(this.Nt);
1110
+ }), this.ie.observe(this.jt);
1123
1111
  }
1124
1112
  S() {
1125
- this.Qe && this.Qe.disconnect();
1126
- const A = this.Nt.getContext("webgl") || this.Nt.getContext("webgl2");
1113
+ this.ie && this.ie.disconnect();
1114
+ const A = this.jt.getContext("webgl") || this.jt.getContext("webgl2");
1127
1115
  if (A) {
1128
1116
  const t = A.getExtension("WEBGL_lose_context");
1129
1117
  t && t.loseContext();
1130
1118
  }
1131
- this.Nt.parentNode && this.Nt.parentNode.removeChild(this.Nt);
1119
+ this.jt.parentNode && this.jt.parentNode.removeChild(this.jt);
1132
1120
  }
1133
1121
  get canvas() {
1134
- return this.Nt;
1122
+ return this.jt;
1135
1123
  }
1136
1124
  get width() {
1137
- return this.Nt.width;
1125
+ return this.jt.width;
1138
1126
  }
1139
1127
  get height() {
1140
- return this.Nt.height;
1128
+ return this.jt.height;
1141
1129
  }
1142
1130
  }
1143
- class F {
1131
+ class M {
1144
1132
  constructor(A, t, e, s = {}) {
1145
- o(this, "Ct");
1133
+ o(this, "Dt");
1134
+ o(this, "ge");
1146
1135
  o(this, "ne");
1147
1136
  o(this, "ae");
1148
1137
  o(this, "he");
1149
1138
  o(this, "le");
1150
1139
  o(this, "ce");
1151
1140
  o(this, "De");
1152
- o(this, "Ce");
1153
1141
  o(this, "h");
1154
- this.Ct = A, this.ne = t, this.ae = e, this.h = s;
1155
- const r = this.ae.cols, i = this.ae.rows;
1156
- this.he = this.Ct.SA(r, i), this.le = this.Ct.SA(r, i), this.ce = this.Ct.SA(r, i), this.De = this.Ct.SA(r, i), this.Ce = this.Ct.SA(r, i);
1142
+ this.Dt = A, this.ge = t, this.ne = e, this.h = s;
1143
+ const r = this.ne.cols, i = this.ne.rows;
1144
+ this.ae = this.Dt.SA(r, i), this.he = this.Dt.SA(r, i), this.le = this.Dt.SA(r, i), this.ce = this.Dt.SA(r, i), this.De = this.Dt.SA(r, i);
1157
1145
  }
1158
- se() {
1159
- const A = this.ae.cols, t = this.ae.rows;
1160
- this.he.resize(A, t), this.le.resize(A, t), this.ce.resize(A, t), this.De.resize(A, t), this.Ce.resize(A, t);
1146
+ ee() {
1147
+ const A = this.ne.cols, t = this.ne.rows;
1148
+ this.ae.resize(A, t), this.he.resize(A, t), this.le.resize(A, t), this.ce.resize(A, t), this.De.resize(A, t);
1161
1149
  }
1162
1150
  enabled(A) {
1163
1151
  u.C(typeof A == "boolean" || typeof A == "number" && Number.isInteger(A), "Enabled must be a boolean value or an integer (0 for false, any other number for true).", { method: "enabled", providedValue: A }) && (this.h.enabled = !!A);
@@ -1169,22 +1157,22 @@ class F {
1169
1157
  this.enabled(!1);
1170
1158
  }
1171
1159
  S() {
1172
- this.he.S(), this.le.S(), this.ce.S(), this.De.S(), this.Ce.S();
1160
+ this.ae.S(), this.he.S(), this.le.S(), this.ce.S(), this.De.S();
1173
1161
  }
1174
1162
  get characterFramebuffer() {
1175
- return this.he;
1163
+ return this.ae;
1176
1164
  }
1177
1165
  get primaryColorFramebuffer() {
1178
- return this.le;
1166
+ return this.he;
1179
1167
  }
1180
1168
  get secondaryColorFramebuffer() {
1181
- return this.ce;
1169
+ return this.le;
1182
1170
  }
1183
1171
  get rotationFramebuffer() {
1184
- return this.De;
1172
+ return this.ce;
1185
1173
  }
1186
1174
  get transformFramebuffer() {
1187
- return this.Ce;
1175
+ return this.De;
1188
1176
  }
1189
1177
  get options() {
1190
1178
  return this.h;
@@ -1193,27 +1181,27 @@ class F {
1193
1181
  class uA {
1194
1182
  constructor(A, t) {
1195
1183
  o(this, "I");
1196
- o(this, "Ct");
1197
- o(this, "ue");
1198
- this.Ct = A, this.ue = t;
1199
- const e = Math.max(this.ue.length, 1);
1200
- this.I = this.Ct.SA(e, 1), this.Pe();
1184
+ o(this, "Dt");
1185
+ o(this, "Ce");
1186
+ this.Dt = A, this.Ce = t;
1187
+ const e = Math.max(this.Ce.length, 1);
1188
+ this.I = this.Dt.SA(e, 1), this.ue();
1201
1189
  }
1202
- Pe() {
1203
- const A = this.ue.length;
1190
+ ue() {
1191
+ const A = this.Ce.length;
1204
1192
  this.I.width !== A && this.I.resize(A, 1);
1205
1193
  const t = new Uint8Array(1 * A * 4);
1206
1194
  for (let e = 0; e < A; e++) {
1207
- const s = this.ue[e], r = 4 * e;
1195
+ const s = this.Ce[e], r = 4 * e;
1208
1196
  t[r] = s[0], t[r + 1] = s[1], t[r + 2] = s[2], t[r + 3] = 255;
1209
1197
  }
1210
1198
  this.I.updatePixels(t, A, 1);
1211
1199
  }
1212
1200
  setColors(A) {
1213
- this.ue = A, this.Pe();
1201
+ this.Ce = A, this.ue();
1214
1202
  }
1215
1203
  get colors() {
1216
- return this.ue;
1204
+ return this.Ce;
1217
1205
  }
1218
1206
  get framebuffer() {
1219
1207
  return this.I;
@@ -1222,31 +1210,31 @@ class uA {
1222
1210
  return this.I.texture;
1223
1211
  }
1224
1212
  }
1225
- class O extends F {
1213
+ class O extends M {
1226
1214
  constructor(t, e, s, r = {}) {
1227
1215
  super(t, e, s, r);
1228
- o(this, "Ie");
1229
- this.Ie = new uA(this.Ct, this.ne.getCharacterColors(" .:-=+*%@#"));
1216
+ o(this, "Pe");
1217
+ this.Pe = new uA(this.Dt, this.ge.getCharacterColors(" .:-=+*%@#"));
1230
1218
  }
1231
1219
  characters(t) {
1232
- u.C(this.ne.hasAllCharacters(t), "One or more characters do not exist in the current font.", { method: "characters", providedValue: t }) && (this.h.characters = t, this.Ie.setColors(this.ne.getCharacterColors(t)));
1220
+ u.C(this.ge.hasAllCharacters(t), "One or more characters do not exist in the current font.", { method: "characters", providedValue: t }) && (this.h.characters = t, this.Pe.setColors(this.ge.getCharacterColors(t)));
1233
1221
  }
1234
1222
  characterColor(t, e, s, r = 255) {
1235
- const i = this.we(t, "characterColor", e, s, r);
1223
+ const i = this.Ie(t, "characterColor", e, s, r);
1236
1224
  i && (this.h.characterColor = i);
1237
1225
  }
1238
1226
  characterColorMode(t) {
1239
- this.fe(t, "characterColorMode");
1227
+ this.we(t, "characterColorMode");
1240
1228
  }
1241
1229
  cellColor(t, e, s, r = 255) {
1242
- const i = this.we(t, "cellColor", e, s, r);
1230
+ const i = this.Ie(t, "cellColor", e, s, r);
1243
1231
  i && (this.h.cellColor = i);
1244
1232
  }
1245
1233
  cellColorMode(t) {
1246
- this.fe(t, "cellColorMode");
1234
+ this.we(t, "cellColorMode");
1247
1235
  }
1248
1236
  invert(t) {
1249
- this.de(t, "invert", "Invert");
1237
+ this.fe(t, "invert", "Invert");
1250
1238
  }
1251
1239
  rotation(t) {
1252
1240
  if (!u.C(typeof t == "number", "Rotation angle must be a number.", { method: "rotation", providedValue: t })) return;
@@ -1255,27 +1243,27 @@ class O extends F {
1255
1243
  this.h.rotation = [s, r, 0, 1];
1256
1244
  }
1257
1245
  flipHorizontally(t) {
1258
- this.de(t, "flipHorizontally", "Flip horizontally");
1246
+ this.fe(t, "flipHorizontally", "Flip horizontally");
1259
1247
  }
1260
1248
  flipVertically(t) {
1261
- this.de(t, "flipVertically", "Flip vertically");
1249
+ this.fe(t, "flipVertically", "Flip vertically");
1262
1250
  }
1263
- we(t, e, s, r, i = 255) {
1251
+ Ie(t, e, s, r, i = 255) {
1264
1252
  let B, Q, n, g;
1265
1253
  if (typeof t == "string") {
1266
- const h = this.me(t);
1254
+ const h = this.de(t);
1267
1255
  if (!h) return u.C(!1, "Invalid hex color format. Use '#FF0000', '#F00', 'FF0000', or 'F00'.", { method: e, providedValue: t }), null;
1268
1256
  [B, Q, n, g] = h;
1269
1257
  } else if (B = t, Q = s !== void 0 ? s : t, n = r !== void 0 ? r : t, g = i, !u.C([B, Q, n, g].every((h) => h >= 0 && h <= 255), e.charAt(0).toUpperCase() + e.slice(1) + " color values must be between 0 and 255", { method: e, providedValues: { r: B, g: Q, b: n, a: g } })) return null;
1270
1258
  return [B / 255, Q / 255, n / 255, g / 255];
1271
1259
  }
1272
- fe(t, e) {
1260
+ we(t, e) {
1273
1261
  u.C(["sampled", "fixed"].includes(t), "Invalid color mode. Must be 'sampled' or 'fixed'.", { method: e, providedValue: t }) && (this.h[e] = t);
1274
1262
  }
1275
- de(t, e, s) {
1263
+ fe(t, e, s) {
1276
1264
  u.C(typeof t == "boolean" || typeof t == "number" && Number.isInteger(t), s + " must be a boolean value or an integer (0 for false, any other number for true).", { method: e, providedValue: t }) && (this.h[e] = !!t);
1277
1265
  }
1278
- me(t) {
1266
+ de(t) {
1279
1267
  return t = t.replace(/^#/, ""), /^[0-9A-Fa-f]{3}$|^[0-9A-Fa-f]{6}$/.test(t) ? (t.length === 3 && (t = t.split("").map((e) => e + e).join("")), [parseInt(t.slice(0, 2), 16), parseInt(t.slice(2, 4), 16), parseInt(t.slice(4, 6), 16), 255]) : null;
1280
1268
  }
1281
1269
  }
@@ -1318,243 +1306,243 @@ void main() {\r
1318
1306
  gl_Position = vec4(pos, 0.0, 1.0);\r
1319
1307
  }\r
1320
1308
  `, PA = { enabled: !0, characters: " .:-=+*%@#", characterColor: [1, 1, 1, 1], characterColorMode: "sampled", cellColor: [0, 0, 0, 1], cellColorMode: "fixed", invert: !1, rotation: [0, 0, 0, 255], flipHorizontally: !1, flipVertically: !1, brightnessRange: [0, 255] };
1321
- class S extends O {
1309
+ class Y extends O {
1322
1310
  constructor(t, e, s) {
1323
1311
  super(t, e, s, { ...PA });
1312
+ o(this, "me");
1324
1313
  o(this, "pe");
1325
1314
  o(this, "_e");
1326
1315
  o(this, "ve");
1327
1316
  o(this, "be");
1328
1317
  o(this, "xe");
1329
- o(this, "ye");
1330
- this.pe = new x(t.context, T, "precision lowp float;uniform sampler2D u_sketchTexture;uniform vec2 u_gridCellDimensions;uniform vec2 u_brightnessRange;varying vec2 v_uv;void main(){vec2 cellCenter=(floor(v_uv*u_gridCellDimensions)+vec2(0.5))/u_gridCellDimensions;vec4 color=texture2D(u_sketchTexture,cellCenter);float brightness=dot(color.rgb,vec3(0.299,0.587,0.114));float brightnessValue=brightness*255.0;if(brightnessValue>=u_brightnessRange.x&&brightnessValue<=u_brightnessRange.y){gl_FragColor=color;}else{gl_FragColor=vec4(0.0);}}"), this._e = new x(t.context, T, "precision lowp float;uniform sampler2D u_sampleTexture;uniform vec4 u_fillColor;uniform bool u_useFixedColor;varying vec2 v_uv;void main(){vec4 sampleColor=texture2D(u_sampleTexture,v_uv);if(sampleColor.a>0.0){if(u_useFixedColor){gl_FragColor=u_fillColor;}else{gl_FragColor=sampleColor;}}else{gl_FragColor=vec4(0.0);}}"), this.be = new x(t.context, T, "precision lowp float;uniform sampler2D u_sampleTexture;uniform bool u_invert;uniform bool u_flipHorizontally;uniform bool u_flipVertically;varying vec2 v_uv;void main(){vec4 sampleColor=texture2D(u_sampleTexture,v_uv);if(sampleColor.a>0.0){float invertValue=u_invert ? 1.0 : 0.0;float flipHValue=u_flipHorizontally ? 1.0 : 0.0;float flipVValue=u_flipVertically ? 1.0 : 0.0;gl_FragColor=vec4(invertValue,flipHValue,flipVValue,1.0);}else{gl_FragColor=vec4(0.0);}}"), this.xe = new x(t.context, T, "precision lowp float;uniform sampler2D u_sampleTexture;uniform vec4 u_rotationColor;varying vec2 v_uv;void main(){vec4 sampleColor=texture2D(u_sampleTexture,v_uv);if(sampleColor.a>0.0){gl_FragColor=u_rotationColor;}else{gl_FragColor=vec4(0.0);}}"), this.ve = new x(t.context, T, "precision lowp float;uniform sampler2D u_colorSampleFramebuffer;uniform sampler2D u_charPaletteTexture;uniform vec2 u_charPaletteSize;uniform vec2 u_brightnessRange;varying vec2 v_uv;void main(){vec4 color=texture2D(u_colorSampleFramebuffer,v_uv);if(color.a==0.0){gl_FragColor=vec4(0.0);return;}float brightness=dot(color.rgb,vec3(0.299,0.587,0.114))*255.0;vec2 range=u_brightnessRange;if(brightness<range.x||brightness>range.y){gl_FragColor=vec4(0.0);return;}float t=(brightness-range.x)/(range.y-range.x);float idx=clamp(floor(t*u_charPaletteSize.x),0.0,u_charPaletteSize.x-1.0);vec3 charColor=texture2D(u_charPaletteTexture,vec2((idx+0.5)/u_charPaletteSize.x,0.0)).rgb;gl_FragColor=vec4(charColor,1.0);}"), this.ye = this.Ct.SA(this.ae.cols, this.ae.rows);
1318
+ this.me = new x(t.context, T, "precision lowp float;uniform sampler2D u_sketchTexture;uniform vec2 u_gridCellDimensions;uniform vec2 u_brightnessRange;varying vec2 v_uv;void main(){vec2 cellCenter=(floor(v_uv*u_gridCellDimensions)+vec2(0.5))/u_gridCellDimensions;vec4 color=texture2D(u_sketchTexture,cellCenter);float brightness=dot(color.rgb,vec3(0.299,0.587,0.114));float brightnessValue=brightness*255.0;if(brightnessValue>=u_brightnessRange.x&&brightnessValue<=u_brightnessRange.y){gl_FragColor=color;}else{gl_FragColor=vec4(0.0);}}"), this.pe = new x(t.context, T, "precision lowp float;uniform sampler2D u_sampleTexture;uniform vec4 u_fillColor;uniform bool u_useFixedColor;varying vec2 v_uv;void main(){vec4 sampleColor=texture2D(u_sampleTexture,v_uv);if(sampleColor.a>0.0){if(u_useFixedColor){gl_FragColor=u_fillColor;}else{gl_FragColor=sampleColor;}}else{gl_FragColor=vec4(0.0);}}"), this.ve = new x(t.context, T, "precision lowp float;uniform sampler2D u_sampleTexture;uniform bool u_invert;uniform bool u_flipHorizontally;uniform bool u_flipVertically;varying vec2 v_uv;void main(){vec4 sampleColor=texture2D(u_sampleTexture,v_uv);if(sampleColor.a>0.0){float invertValue=u_invert ? 1.0 : 0.0;float flipHValue=u_flipHorizontally ? 1.0 : 0.0;float flipVValue=u_flipVertically ? 1.0 : 0.0;gl_FragColor=vec4(invertValue,flipHValue,flipVValue,1.0);}else{gl_FragColor=vec4(0.0);}}"), this.be = new x(t.context, T, "precision lowp float;uniform sampler2D u_sampleTexture;uniform vec4 u_rotationColor;varying vec2 v_uv;void main(){vec4 sampleColor=texture2D(u_sampleTexture,v_uv);if(sampleColor.a>0.0){gl_FragColor=u_rotationColor;}else{gl_FragColor=vec4(0.0);}}"), this._e = new x(t.context, T, "precision lowp float;uniform sampler2D u_colorSampleFramebuffer;uniform sampler2D u_charPaletteTexture;uniform vec2 u_charPaletteSize;uniform vec2 u_brightnessRange;varying vec2 v_uv;void main(){vec4 color=texture2D(u_colorSampleFramebuffer,v_uv);if(color.a==0.0){gl_FragColor=vec4(0.0);return;}float brightness=dot(color.rgb,vec3(0.299,0.587,0.114))*255.0;vec2 range=u_brightnessRange;if(brightness<range.x||brightness>range.y){gl_FragColor=vec4(0.0);return;}float t=(brightness-range.x)/(range.y-range.x);float idx=clamp(floor(t*u_charPaletteSize.x),0.0,u_charPaletteSize.x-1.0);vec3 charColor=texture2D(u_charPaletteTexture,vec2((idx+0.5)/u_charPaletteSize.x,0.0)).rgb;gl_FragColor=vec4(charColor,1.0);}"), this.xe = this.Dt.SA(this.ne.cols, this.ne.rows);
1331
1319
  }
1332
- Me(t) {
1333
- const e = this.ae.cols, s = this.ae.rows;
1334
- this.ye.begin(), this.Ct.UA(), this.Ct.IA(this.pe), this.Ct.FA("u_sketchTexture", t), this.Ct.FA("u_gridCellDimensions", [e, s]), this.Ct.FA("u_brightnessRange", this.h.brightnessRange), this.Ct.$A(0, 0, e, s), this.ye.end(), this.le.begin(), this.Ct.UA(), this.Ct.IA(this._e), this.Ct.FA("u_sampleTexture", this.ye), this.Ct.FA("u_fillColor", this.h.characterColor), this.Ct.FA("u_useFixedColor", this.h.characterColorMode === "fixed"), this.Ct.$A(0, 0, e, s), this.le.end(), this.ce.begin(), this.Ct.UA(), this.Ct.IA(this._e), this.Ct.FA("u_sampleTexture", this.ye), this.Ct.FA("u_fillColor", this.h.cellColor), this.Ct.FA("u_useFixedColor", this.h.cellColorMode === "fixed"), this.Ct.$A(0, 0, e, s), this.ce.end(), this.Ce.begin(), this.Ct.UA(), this.Ct.IA(this.be), this.Ct.FA("u_sampleTexture", this.ye), this.Ct.FA("u_invert", this.h.invert), this.Ct.FA("u_flipHorizontally", this.h.flipHorizontally), this.Ct.FA("u_flipVertically", this.h.flipVertically), this.Ct.$A(0, 0, e, s), this.Ce.end(), this.De.begin(), this.Ct.UA(), this.Ct.IA(this.xe), this.Ct.FA("u_sampleTexture", this.ye), this.Ct.FA("u_rotationColor", this.h.rotation), this.Ct.$A(0, 0, e, s), this.De.end(), this.he.begin(), this.Ct.UA(), this.Ct.IA(this.ve), this.Ct.FA("u_colorSampleFramebuffer", this.ye), this.Ct.FA("u_charPaletteTexture", this.Ie.texture), this.Ct.FA("u_charPaletteSize", [this.Ie.colors.length, 1]), this.Ct.FA("u_brightnessRange", this.h.brightnessRange), this.Ct.$A(0, 0, e, s), this.he.end();
1320
+ ye(t) {
1321
+ const e = this.ne.cols, s = this.ne.rows;
1322
+ this.xe.begin(), this.Dt.UA(), this.Dt.IA(this.me), this.Dt.FA("u_sketchTexture", t), this.Dt.FA("u_gridCellDimensions", [e, s]), this.Dt.FA("u_brightnessRange", this.h.brightnessRange), this.Dt.$A(0, 0, e, s), this.xe.end(), this.he.begin(), this.Dt.UA(), this.Dt.IA(this.pe), this.Dt.FA("u_sampleTexture", this.xe), this.Dt.FA("u_fillColor", this.h.characterColor), this.Dt.FA("u_useFixedColor", this.h.characterColorMode === "fixed"), this.Dt.$A(0, 0, e, s), this.he.end(), this.le.begin(), this.Dt.UA(), this.Dt.IA(this.pe), this.Dt.FA("u_sampleTexture", this.xe), this.Dt.FA("u_fillColor", this.h.cellColor), this.Dt.FA("u_useFixedColor", this.h.cellColorMode === "fixed"), this.Dt.$A(0, 0, e, s), this.le.end(), this.De.begin(), this.Dt.UA(), this.Dt.IA(this.ve), this.Dt.FA("u_sampleTexture", this.xe), this.Dt.FA("u_invert", this.h.invert), this.Dt.FA("u_flipHorizontally", this.h.flipHorizontally), this.Dt.FA("u_flipVertically", this.h.flipVertically), this.Dt.$A(0, 0, e, s), this.De.end(), this.ce.begin(), this.Dt.UA(), this.Dt.IA(this.be), this.Dt.FA("u_sampleTexture", this.xe), this.Dt.FA("u_rotationColor", this.h.rotation), this.Dt.$A(0, 0, e, s), this.ce.end(), this.ae.begin(), this.Dt.UA(), this.Dt.IA(this._e), this.Dt.FA("u_colorSampleFramebuffer", this.xe), this.Dt.FA("u_charPaletteTexture", this.Pe.texture), this.Dt.FA("u_charPaletteSize", [this.Pe.colors.length, 1]), this.Dt.FA("u_brightnessRange", this.h.brightnessRange), this.Dt.$A(0, 0, e, s), this.ae.end();
1335
1323
  }
1336
- se() {
1337
- super.se(), this.ye.resize(this.ae.cols, this.ae.rows);
1324
+ ee() {
1325
+ super.ee(), this.xe.resize(this.ne.cols, this.ne.rows);
1338
1326
  }
1339
1327
  brightnessRange(t) {
1340
1328
  u.C(Array.isArray(t) && t.length === 2 && t.every((e) => typeof e == "number" && e >= 0 && e <= 255), "Brightness range must be an array of two numbers between 0 and 255.", { method: "brightnessRange", providedValue: t }) && (this.h.brightnessRange = t);
1341
1329
  }
1342
1330
  }
1343
- const OA = Object.freeze(Object.defineProperty({ __proto__: null, TextmodeBrightnessConverter: S, TextmodeConverter: F, TextmodeFeatureConverter: O }, Symbol.toStringTag, { value: "Module" }));
1331
+ const OA = Object.freeze(Object.defineProperty({ __proto__: null, TextmodeBrightnessConverter: Y, TextmodeConverter: M, TextmodeFeatureConverter: O }, Symbol.toStringTag, { value: "Module" }));
1344
1332
  class dA {
1345
1333
  constructor(A, t, e) {
1346
- o(this, "Ct");
1347
- o(this, "vt");
1348
- o(this, "ae");
1334
+ o(this, "Dt");
1335
+ o(this, "_t");
1336
+ o(this, "ne");
1337
+ o(this, "Me");
1349
1338
  o(this, "Ge");
1350
1339
  o(this, "Fe");
1351
1340
  o(this, "$e");
1352
1341
  o(this, "Ye");
1353
- o(this, "Te");
1342
+ o(this, "ae");
1354
1343
  o(this, "he");
1355
1344
  o(this, "le");
1356
1345
  o(this, "ce");
1357
1346
  o(this, "De");
1358
- o(this, "Ce");
1359
- this.Ct = A, this.vt = t, this.ae = e, this.Te = this.Ct.MA(R, "precision mediump float;uniform sampler2D u_characterTexture;uniform vec2 u_charsetDimensions;uniform sampler2D u_primaryColorTexture;uniform sampler2D u_secondaryColorTexture;uniform sampler2D u_transformTexture;uniform sampler2D u_asciiCharacterTexture;uniform sampler2D u_rotationTexture;uniform sampler2D u_captureTexture;uniform vec2 u_captureDimensions;uniform int u_backgroundMode;uniform vec2 u_gridCellDimensions;uniform vec2 u_gridPixelDimensions;mat2 rotate2D(float angle){float s=sin(angle);float c=cos(angle);return mat2(c,-s,s,c);}void main(){vec2 adjustedCoord=gl_FragCoord.xy/u_gridPixelDimensions;vec2 gridCoord=adjustedCoord*u_gridCellDimensions;vec2 cellCoord=floor(gridCoord);vec2 charIndexTexCoord=(cellCoord+0.5)/u_gridCellDimensions;vec4 primaryColor=texture2D(u_primaryColorTexture,charIndexTexCoord);vec4 secondaryColor=texture2D(u_secondaryColorTexture,charIndexTexCoord);vec4 transformColor=texture2D(u_transformTexture,charIndexTexCoord);bool isInverted=transformColor.r>0.5;bool flipHorizontal=transformColor.g>0.5;bool flipVertical=transformColor.b>0.5;vec4 encodedIndexVec=texture2D(u_asciiCharacterTexture,charIndexTexCoord);if(encodedIndexVec.a<0.01){gl_FragColor=(u_backgroundMode==0)? vec4(0.0):texture2D(u_captureTexture,gl_FragCoord.xy/u_captureDimensions);return;}int charIndex=int(encodedIndexVec.r*255.0+0.5)+int(encodedIndexVec.g*255.0+0.5)*256;int charCol=int(mod(float(charIndex),u_charsetDimensions.x));int charRow=charIndex/int(u_charsetDimensions.x);float flippedRow=(u_charsetDimensions.y-1.0)-float(charRow);vec2 charCoord=vec2(float(charCol),flippedRow)/u_charsetDimensions;vec4 rotationColor=texture2D(u_rotationTexture,charIndexTexCoord);float scaledAngle=rotationColor.r*255.0+rotationColor.g;float rotationAngle=(scaledAngle*360.0/255.0)*0.017453292;vec2 fractionalPart=fract(gridCoord)-0.5;if(flipHorizontal)fractionalPart.x=-fractionalPart.x;if(flipVertical)fractionalPart.y=-fractionalPart.y;fractionalPart=rotate2D(rotationAngle)*fractionalPart+0.5;vec2 cellSize=1.0/u_charsetDimensions;vec2 texCoord=charCoord+fractionalPart*cellSize;vec2 cellMax=charCoord+cellSize;if(any(lessThan(texCoord,charCoord))||any(greaterThan(texCoord,cellMax))){gl_FragColor=isInverted ? primaryColor : secondaryColor;return;}vec4 charTexel=texture2D(u_characterTexture,texCoord);if(isInverted)charTexel.rgb=1.0-charTexel.rgb;gl_FragColor=mix(secondaryColor,primaryColor,charTexel);}"), this.Fe = new S(A, t, e), this.$e = new F(A, t, e), this.Ge = [this.Fe, this.$e], this.he = this.Ct.SA(e.cols, e.rows), this.le = this.Ct.SA(e.cols, e.rows), this.ce = this.Ct.SA(e.cols, e.rows), this.De = this.Ct.SA(e.cols, e.rows), this.Ce = this.Ct.SA(e.cols, e.rows), this.Ye = this.Ct.SA(this.ae.width, this.ae.height);
1347
+ this.Dt = A, this._t = t, this.ne = e, this.Ye = this.Dt.MA(R, "precision mediump float;uniform sampler2D u_characterTexture;uniform vec2 u_charsetDimensions;uniform sampler2D u_primaryColorTexture;uniform sampler2D u_secondaryColorTexture;uniform sampler2D u_transformTexture;uniform sampler2D u_asciiCharacterTexture;uniform sampler2D u_rotationTexture;uniform sampler2D u_captureTexture;uniform vec2 u_captureDimensions;uniform int u_backgroundMode;uniform vec2 u_gridCellDimensions;uniform vec2 u_gridPixelDimensions;mat2 rotate2D(float angle){float s=sin(angle);float c=cos(angle);return mat2(c,-s,s,c);}void main(){vec2 adjustedCoord=gl_FragCoord.xy/u_gridPixelDimensions;vec2 gridCoord=adjustedCoord*u_gridCellDimensions;vec2 cellCoord=floor(gridCoord);vec2 charIndexTexCoord=(cellCoord+0.5)/u_gridCellDimensions;vec4 primaryColor=texture2D(u_primaryColorTexture,charIndexTexCoord);vec4 secondaryColor=texture2D(u_secondaryColorTexture,charIndexTexCoord);vec4 transformColor=texture2D(u_transformTexture,charIndexTexCoord);bool isInverted=transformColor.r>0.5;bool flipHorizontal=transformColor.g>0.5;bool flipVertical=transformColor.b>0.5;vec4 encodedIndexVec=texture2D(u_asciiCharacterTexture,charIndexTexCoord);if(encodedIndexVec.a<0.01){gl_FragColor=(u_backgroundMode==0)? vec4(0.0):texture2D(u_captureTexture,gl_FragCoord.xy/u_captureDimensions);return;}int charIndex=int(encodedIndexVec.r*255.0+0.5)+int(encodedIndexVec.g*255.0+0.5)*256;int charCol=int(mod(float(charIndex),u_charsetDimensions.x));int charRow=charIndex/int(u_charsetDimensions.x);float flippedRow=(u_charsetDimensions.y-1.0)-float(charRow);vec2 charCoord=vec2(float(charCol),flippedRow)/u_charsetDimensions;vec4 rotationColor=texture2D(u_rotationTexture,charIndexTexCoord);float scaledAngle=rotationColor.r*255.0+rotationColor.g;float rotationAngle=(scaledAngle*360.0/255.0)*0.017453292;vec2 fractionalPart=fract(gridCoord)-0.5;if(flipHorizontal)fractionalPart.x=-fractionalPart.x;if(flipVertical)fractionalPart.y=-fractionalPart.y;fractionalPart=rotate2D(rotationAngle)*fractionalPart+0.5;vec2 cellSize=1.0/u_charsetDimensions;vec2 texCoord=charCoord+fractionalPart*cellSize;vec2 cellMax=charCoord+cellSize;if(any(lessThan(texCoord,charCoord))||any(greaterThan(texCoord,cellMax))){gl_FragColor=isInverted ? primaryColor : secondaryColor;return;}vec4 charTexel=texture2D(u_characterTexture,texCoord);if(isInverted)charTexel.rgb=1.0-charTexel.rgb;gl_FragColor=mix(secondaryColor,primaryColor,charTexel);}"), this.Ge = new Y(A, t, e), this.Fe = new M(A, t, e), this.Me = [this.Ge, this.Fe], this.ae = this.Dt.SA(e.cols, e.rows), this.he = this.Dt.SA(e.cols, e.rows), this.le = this.Dt.SA(e.cols, e.rows), this.ce = this.Dt.SA(e.cols, e.rows), this.De = this.Dt.SA(e.cols, e.rows), this.$e = this.Dt.SA(this.ne.width, this.ne.height);
1360
1348
  }
1361
- Se(A) {
1362
- for (const e of this.Ge) e.options.enabled && e instanceof O && e.Me(A);
1349
+ Te(A) {
1350
+ for (const e of this.Me) e.options.enabled && e instanceof O && e.ye(A);
1363
1351
  const t = (e, s) => {
1364
- e.begin(), this.Ct.UA();
1365
- for (const r of this.Ge) r.options.enabled && this.Ct.RA(s(r), 0, 0);
1352
+ e.begin(), this.Dt.UA();
1353
+ for (const r of this.Me) r.options.enabled && this.Dt.RA(s(r), 0, 0);
1366
1354
  e.end();
1367
1355
  };
1368
- t(this.he, (e) => e.characterFramebuffer), t(this.le, (e) => e.primaryColorFramebuffer), t(this.ce, (e) => e.secondaryColorFramebuffer), t(this.De, (e) => e.rotationFramebuffer), t(this.Ce, (e) => e.transformFramebuffer), this.Ye.begin(), this.Ct.UA(), this.Ct.IA(this.Te), this.Ct.FA("u_characterTexture", this.vt.fontFramebuffer), this.Ct.FA("u_charsetDimensions", [this.vt.textureColumns, this.vt.textureRows]), this.Ct.FA("u_asciiCharacterTexture", this.he.texture), this.Ct.FA("u_primaryColorTexture", this.le.texture), this.Ct.FA("u_secondaryColorTexture", this.ce.texture), this.Ct.FA("u_transformTexture", this.Ce.texture), this.Ct.FA("u_rotationTexture", this.De.texture), this.Ct.FA("u_captureTexture", A.texture), this.Ct.FA("u_backgroundMode", !1), this.Ct.FA("u_captureDimensions", [A.width, A.height]), this.Ct.FA("u_gridCellDimensions", [this.ae.cols, this.ae.rows]), this.Ct.FA("u_gridPixelDimensions", [this.ae.width, this.ae.height]), this.Ct.$A(0, 0, this.Ye.width, this.Ye.height), this.Ye.end();
1356
+ t(this.ae, (e) => e.characterFramebuffer), t(this.he, (e) => e.primaryColorFramebuffer), t(this.le, (e) => e.secondaryColorFramebuffer), t(this.ce, (e) => e.rotationFramebuffer), t(this.De, (e) => e.transformFramebuffer), this.$e.begin(), this.Dt.UA(), this.Dt.IA(this.Ye), this.Dt.FA("u_characterTexture", this._t.fontFramebuffer), this.Dt.FA("u_charsetDimensions", [this._t.textureColumns, this._t.textureRows]), this.Dt.FA("u_asciiCharacterTexture", this.ae.texture), this.Dt.FA("u_primaryColorTexture", this.he.texture), this.Dt.FA("u_secondaryColorTexture", this.le.texture), this.Dt.FA("u_transformTexture", this.De.texture), this.Dt.FA("u_rotationTexture", this.ce.texture), this.Dt.FA("u_captureTexture", A.texture), this.Dt.FA("u_backgroundMode", !1), this.Dt.FA("u_captureDimensions", [A.width, A.height]), this.Dt.FA("u_gridCellDimensions", [this.ne.cols, this.ne.rows]), this.Dt.FA("u_gridPixelDimensions", [this.ne.width, this.ne.height]), this.Dt.$A(0, 0, this.$e.width, this.$e.height), this.$e.end();
1369
1357
  }
1370
1358
  add(A) {
1371
1359
  if (!u.C(A === "brightness" || A === "custom", 'Converter type must be either "brightness" or "custom".', { method: "add", providedValue: A })) return;
1372
1360
  let t;
1373
- return t = A === "brightness" ? new S(this.Ct, this.vt, this.ae) : new F(this.Ct, this.vt, this.ae), this.Ge.push(t), t;
1361
+ return t = A === "brightness" ? new Y(this.Dt, this._t, this.ne) : new M(this.Dt, this._t, this.ne), this.Me.push(t), t;
1374
1362
  }
1375
1363
  remove(A) {
1376
- if (!u.C(A instanceof F, "Parameter must be a TextmodeConverter instance.", { method: "remove", providedValue: A })) return;
1377
- const t = this.Ge.indexOf(A);
1378
- u.C(t !== -1, "Converter instance not found in pipeline.", { method: "remove", providedValue: A, convertersCount: this.Ge.length }) && this.Ge.splice(t, 1);
1364
+ if (!u.C(A instanceof M, "Parameter must be a TextmodeConverter instance.", { method: "remove", providedValue: A })) return;
1365
+ const t = this.Me.indexOf(A);
1366
+ u.C(t !== -1, "Converter instance not found in pipeline.", { method: "remove", providedValue: A, convertersCount: this.Me.length }) && this.Me.splice(t, 1);
1379
1367
  }
1380
1368
  swap(A, t) {
1381
1369
  const e = (B, Q) => {
1382
- if (typeof B == "number") return u.C(Number.isInteger(B) && B >= 0 && B < this.Ge.length, Q + " index must be a valid integer within the converter array bounds.", { method: "swap", providedValue: B, convertersCount: this.Ge.length }) ? B : null;
1383
- if (B instanceof F) {
1384
- const n = this.Ge.indexOf(B);
1385
- return u.C(n !== -1, Q + " converter instance not found in pipeline.", { method: "swap", providedValue: B, convertersCount: this.Ge.length }) ? n : null;
1370
+ if (typeof B == "number") return u.C(Number.isInteger(B) && B >= 0 && B < this.Me.length, Q + " index must be a valid integer within the converter array bounds.", { method: "swap", providedValue: B, convertersCount: this.Me.length }) ? B : null;
1371
+ if (B instanceof M) {
1372
+ const n = this.Me.indexOf(B);
1373
+ return u.C(n !== -1, Q + " converter instance not found in pipeline.", { method: "swap", providedValue: B, convertersCount: this.Me.length }) ? n : null;
1386
1374
  }
1387
1375
  return u.C(!1, Q + " parameter must be either an integer index or a TextmodeConverter instance.", { method: "swap", providedValue: B }), null;
1388
1376
  }, s = e(A, "First"), r = e(t, "Second");
1389
1377
  if (s === null || r === null || !u.C(s !== r, "Cannot swap a converter with itself.", { method: "swap", firstIndex: s, secondIndex: r })) return;
1390
- const i = this.Ge[s];
1391
- this.Ge[s] = this.Ge[r], this.Ge[r] = i;
1378
+ const i = this.Me[s];
1379
+ this.Me[s] = this.Me[r], this.Me[r] = i;
1392
1380
  }
1393
- se() {
1394
- this.Ye.resize(this.ae.width, this.ae.height);
1395
- const A = this.ae.cols, t = this.ae.rows;
1396
- this.he.resize(A, t), this.le.resize(A, t), this.ce.resize(A, t), this.De.resize(A, t), this.Ce.resize(A, t);
1397
- for (const e of this.Ge) e.se();
1381
+ ee() {
1382
+ this.$e.resize(this.ne.width, this.ne.height);
1383
+ const A = this.ne.cols, t = this.ne.rows;
1384
+ this.ae.resize(A, t), this.he.resize(A, t), this.le.resize(A, t), this.ce.resize(A, t), this.De.resize(A, t);
1385
+ for (const e of this.Me) e.ee();
1398
1386
  }
1399
1387
  hasEnabledConverters() {
1400
- return this.Ge.some((A) => A.options.enabled);
1388
+ return this.Me.some((A) => A.options.enabled);
1401
1389
  }
1402
1390
  disable() {
1403
- for (const A of this.Ge) A.disable();
1391
+ for (const A of this.Me) A.disable();
1404
1392
  }
1405
1393
  enable() {
1406
- for (const A of this.Ge) A.enable();
1394
+ for (const A of this.Me) A.enable();
1407
1395
  }
1408
1396
  S() {
1409
- for (const A of this.Ge) A.S();
1410
- this.he.S(), this.le.S(), this.ce.S(), this.De.S(), this.Ce.S(), this.Ye.S(), this.Te.S();
1397
+ for (const A of this.Me) A.S();
1398
+ this.ae.S(), this.he.S(), this.le.S(), this.ce.S(), this.De.S(), this.$e.S(), this.Ye.S();
1411
1399
  }
1412
1400
  get texture() {
1413
- return this.Ye;
1401
+ return this.$e;
1414
1402
  }
1415
1403
  get characterFramebuffer() {
1416
- return this.he;
1404
+ return this.ae;
1417
1405
  }
1418
1406
  get primaryColorFramebuffer() {
1419
- return this.le;
1407
+ return this.he;
1420
1408
  }
1421
1409
  get secondaryColorFramebuffer() {
1422
- return this.ce;
1410
+ return this.le;
1423
1411
  }
1424
1412
  get rotationFramebuffer() {
1425
- return this.De;
1413
+ return this.ce;
1426
1414
  }
1427
1415
  get transformFramebuffer() {
1428
- return this.Ce;
1416
+ return this.De;
1429
1417
  }
1430
1418
  get brightness() {
1431
- return this.Fe;
1419
+ return this.Ge;
1432
1420
  }
1433
1421
  get custom() {
1434
- return this.$e;
1422
+ return this.Fe;
1435
1423
  }
1436
1424
  }
1437
1425
  const IA = (E) => class extends E {
1438
1426
  fill(A, t, e, s) {
1439
- this.Ct.wA(A, t, e, s);
1427
+ this.Dt.wA(A, t, e, s);
1440
1428
  }
1441
1429
  stroke(A, t, e, s) {
1442
- this.Ct.fA(A, t, e, s);
1430
+ this.Dt.fA(A, t, e, s);
1443
1431
  }
1444
1432
  strokeWeight(A) {
1445
- this.Ct.dA(A);
1433
+ this.Dt.dA(A);
1446
1434
  }
1447
1435
  noStroke() {
1448
- this.Ct.mA();
1436
+ this.Dt.mA();
1449
1437
  }
1450
1438
  noFill() {
1451
- this.Ct.pA();
1439
+ this.Dt.pA();
1452
1440
  }
1453
1441
  rotate(A) {
1454
- this.Ct._A(A);
1442
+ this.Dt._A(A);
1455
1443
  }
1456
1444
  push() {
1457
- this.Ct.vA();
1445
+ this.Dt.vA();
1458
1446
  }
1459
1447
  pop() {
1460
- this.Ct.bA();
1448
+ this.Dt.bA();
1461
1449
  }
1462
1450
  rect(A, t, e = 1, s = 1) {
1463
- this.Ct.$A(A, t, e, s);
1451
+ this.Dt.$A(A, t, e, s);
1464
1452
  }
1465
1453
  line(A, t, e, s) {
1466
- this.Ct.TA(A, t, e, s);
1454
+ this.Dt.TA(A, t, e, s);
1467
1455
  }
1468
1456
  background(A, t = A, e = A, s = 255) {
1469
- this.Ct.OA(A, t, e, s);
1457
+ this.Dt.OA(A, t, e, s);
1470
1458
  }
1471
1459
  createShader(A, t) {
1472
- return this.Ct.MA(A, t);
1460
+ return this.Dt.MA(A, t);
1473
1461
  }
1474
1462
  createFilterShader(A) {
1475
- return this.Ct.GA(A);
1463
+ return this.Dt.GA(A);
1476
1464
  }
1477
1465
  shader(A) {
1478
- this.Ct.IA(A);
1466
+ this.Dt.IA(A);
1479
1467
  }
1480
1468
  setUniform(A, t) {
1481
- this.Ct.FA(A, t);
1469
+ this.Dt.FA(A, t);
1482
1470
  }
1483
1471
  image(A, t, e, s, r) {
1484
- this.Ct.RA(A, t, e, s, r);
1472
+ this.Dt.RA(A, t, e, s, r);
1485
1473
  }
1486
1474
  clear() {
1487
- this.Ct.UA();
1475
+ this.Dt.UA();
1488
1476
  }
1489
1477
  createFramebuffer(A, t, e = {}) {
1490
- return this.Ct.SA(A, t, e);
1478
+ return this.Dt.SA(A, t, e);
1491
1479
  }
1492
1480
  };
1493
- class N {
1494
- Oe(A) {
1481
+ class k {
1482
+ Se(A) {
1495
1483
  const t = A.characterFramebuffer, e = A.primaryColorFramebuffer, s = A.secondaryColorFramebuffer, r = A.transformFramebuffer, i = A.rotationFramebuffer;
1496
1484
  return t == null || t.loadPixels(), e == null || e.loadPixels(), s == null || s.loadPixels(), r == null || r.loadPixels(), i == null || i.loadPixels(), { characterPixels: (t == null ? void 0 : t.pixels) || new Uint8Array(0), primaryColorPixels: (e == null ? void 0 : e.pixels) || new Uint8Array(0), secondaryColorPixels: (s == null ? void 0 : s.pixels) || new Uint8Array(0), transformPixels: (r == null ? void 0 : r.pixels) || new Uint8Array(0), rotationPixels: (i == null ? void 0 : i.pixels) || new Uint8Array(0) };
1497
1485
  }
1498
- Ue(A, t) {
1486
+ Oe(A, t) {
1499
1487
  return A[t] + (A[t + 1] << 8);
1500
1488
  }
1501
- ke(A, t) {
1489
+ Ue(A, t) {
1502
1490
  return { r: A[t], g: A[t + 1], b: A[t + 2], a: A[t + 3] };
1503
1491
  }
1504
1492
  }
1505
- class k {
1506
- Re(A, t) {
1493
+ class L {
1494
+ ke(A, t) {
1507
1495
  return new Blob([A], { type: t });
1508
1496
  }
1509
- Ve(A, t, e) {
1497
+ Re(A, t, e) {
1510
1498
  try {
1511
- const s = this.Re(A, e), r = URL.createObjectURL(s), i = document.createElement("a");
1499
+ const s = this.ke(A, e), r = URL.createObjectURL(s), i = document.createElement("a");
1512
1500
  i.href = r, i.download = t, i.style.display = "none", i.rel = "noopener", document.body.appendChild(i), i.click(), document.body.removeChild(i), URL.revokeObjectURL(r);
1513
1501
  } catch (s) {
1514
1502
  throw console.error("Failed to download file:", s), Error("File download failed: " + (s instanceof Error ? s.message : "Unknown error"));
1515
1503
  }
1516
1504
  }
1517
- He() {
1505
+ Ve() {
1518
1506
  return (/* @__PURE__ */ new Date()).toISOString().slice(0, 19).replace(/:/g, "-");
1519
1507
  }
1520
- ze() {
1508
+ He() {
1521
1509
  const A = /* @__PURE__ */ new Date();
1522
1510
  return { date: A.toISOString().split("T")[0], time: A.toTimeString().split(" ")[0].replace(/:/g, "-") };
1523
1511
  }
1524
- Le(A) {
1512
+ ze(A) {
1525
1513
  return A.replace(/[<>:"/\\|?*]/g, "_").replace(/\s+/g, "_").replace(/_{2,}/g, "_").replace(/^_+|_+$/g, "").substring(0, 255);
1526
1514
  }
1527
- Je() {
1528
- return "'textmode-export'-" + this.He();
1515
+ Le() {
1516
+ return "'textmode-export'-" + this.Ve();
1529
1517
  }
1530
1518
  }
1531
- class fA extends N {
1532
- Ke(A, t, e) {
1519
+ class fA extends k {
1520
+ Je(A, t, e) {
1533
1521
  const s = A[e] === 255, r = A[e + 1] === 255, i = A[e + 2] === 255, B = t[e], Q = t[e + 1];
1534
1522
  return { isInverted: s, flipHorizontal: r, flipVertical: i, rotation: Math.round(360 * (B + Q / 255) / 255 * 100) / 100 };
1535
1523
  }
1536
- We(A, t, e) {
1524
+ Ke(A, t, e) {
1537
1525
  return { x: A, y: t, cellX: A * e.cellWidth, cellY: t * e.cellHeight };
1538
1526
  }
1539
- je(A, t) {
1527
+ We(A, t) {
1540
1528
  const e = [];
1541
1529
  let s = 0;
1542
1530
  for (let r = 0; r < t.rows; r++) for (let i = 0; i < t.cols; i++) {
1543
- const B = 4 * s, Q = this.Ue(A.characterPixels, B);
1544
- let n = this.ke(A.primaryColorPixels, B), g = this.ke(A.secondaryColorPixels, B);
1545
- const h = this.Ke(A.transformPixels, A.rotationPixels, B);
1531
+ const B = 4 * s, Q = this.Oe(A.characterPixels, B);
1532
+ let n = this.Ue(A.primaryColorPixels, B), g = this.Ue(A.secondaryColorPixels, B);
1533
+ const h = this.Je(A.transformPixels, A.rotationPixels, B);
1546
1534
  if (h.isInverted) {
1547
- const C = n;
1548
- n = g, g = C;
1535
+ const D = n;
1536
+ n = g, g = D;
1549
1537
  }
1550
- const a = this.We(i, r, t);
1538
+ const a = this.Ke(i, r, t);
1551
1539
  e.push({ charIndex: Q, primaryColor: n, secondaryColor: g, transform: h, position: a }), s++;
1552
1540
  }
1553
1541
  return e;
1554
1542
  }
1555
1543
  }
1556
1544
  class wA {
1557
- Ne(A, t) {
1545
+ je(A, t) {
1558
1546
  const e = A.cmap;
1559
1547
  for (const s of e.tables) if (s.format === 4) {
1560
1548
  for (let r = 0; r < s.startCount.length; r++) if (t >= s.startCount[r] && t <= s.endCount[r]) {
@@ -1570,11 +1558,11 @@ class wA {
1570
1558
  }
1571
1559
  return 0;
1572
1560
  }
1573
- Ze(A, t, e, s, r) {
1561
+ Ne(A, t, e, s, r) {
1574
1562
  const i = r / A.head.unitsPerEm;
1575
- return { getBoundingBox: () => ({ x1: e + t.xMin * i, y1: s + -t.yMax * i, x2: e + t.xMax * i, y2: s + -t.yMin * i }), toSVG: () => this.Xe(t, e, s, i) };
1563
+ return { getBoundingBox: () => ({ x1: e + t.xMin * i, y1: s + -t.yMax * i, x2: e + t.xMax * i, y2: s + -t.yMin * i }), toSVG: () => this.Ze(t, e, s, i) };
1576
1564
  }
1577
- Xe(A, t, e, s) {
1565
+ Ze(A, t, e, s) {
1578
1566
  if (!A || !A.xs) return "";
1579
1567
  const { xs: r, ys: i, endPts: B, flags: Q } = A;
1580
1568
  if (!(r && i && B && Q)) return "";
@@ -1583,22 +1571,22 @@ class wA {
1583
1571
  const a = B[h];
1584
1572
  if (!(a < g)) {
1585
1573
  if (a >= g) {
1586
- const C = t + r[g] * s, c = e - i[g] * s;
1587
- n += `M${C.toFixed(2)},${c.toFixed(2)}`;
1574
+ const D = t + r[g] * s, c = e - i[g] * s;
1575
+ n += `M${D.toFixed(2)},${c.toFixed(2)}`;
1588
1576
  let l = g + 1;
1589
1577
  for (; l <= a; )
1590
1578
  if (1 & Q[l]) {
1591
- const d = t + r[l] * s, D = e - i[l] * s;
1592
- n += `L${d.toFixed(2)},${D.toFixed(2)}`, l++;
1579
+ const d = t + r[l] * s, C = e - i[l] * s;
1580
+ n += `L${d.toFixed(2)},${C.toFixed(2)}`, l++;
1593
1581
  } else {
1594
- const d = t + r[l] * s, D = e - i[l] * s;
1582
+ const d = t + r[l] * s, C = e - i[l] * s;
1595
1583
  let P = l + 1 > a ? g : l + 1;
1596
1584
  if (1 & Q[P]) {
1597
1585
  const p = t + r[P] * s, m = e - i[P] * s;
1598
- n += `Q${d.toFixed(2)},${D.toFixed(2)} ${p.toFixed(2)},${m.toFixed(2)}`, l = P + 1;
1586
+ n += `Q${d.toFixed(2)},${C.toFixed(2)} ${p.toFixed(2)},${m.toFixed(2)}`, l = P + 1;
1599
1587
  } else {
1600
- const p = (d + (t + r[P] * s)) / 2, m = (D + (e - i[P] * s)) / 2;
1601
- n += `Q${d.toFixed(2)},${D.toFixed(2)} ${p.toFixed(2)},${m.toFixed(2)}`, l = P;
1588
+ const p = (d + (t + r[P] * s)) / 2, m = (C + (e - i[P] * s)) / 2;
1589
+ n += `Q${d.toFixed(2)},${C.toFixed(2)} ${p.toFixed(2)},${m.toFixed(2)}`, l = P;
1602
1590
  }
1603
1591
  }
1604
1592
  n += "Z";
@@ -1608,22 +1596,22 @@ class wA {
1608
1596
  }
1609
1597
  return n;
1610
1598
  }
1611
- qe(A, t, e, s, r) {
1612
- const i = A.codePointAt(0) || 0, B = this.Ne(t, i);
1599
+ Xe(A, t, e, s, r) {
1600
+ const i = A.codePointAt(0) || 0, B = this.je(t, i);
1613
1601
  let Q = null;
1614
- return t.glyf && t.glyf[B] !== null ? Q = t.glyf[B] : w && w.T && w.T.glyf && w.T.glyf.VA && (Q = w.T.glyf.VA(t, B), t.glyf && Q && (t.glyf[B] = Q)), this.Ze(t, Q, e, s, r);
1602
+ return t.glyf && t.glyf[B] !== null ? Q = t.glyf[B] : w && w.T && w.T.glyf && w.T.glyf.VA && (Q = w.T.glyf.VA(t, B), t.glyf && Q && (t.glyf[B] = Q)), this.Ne(t, Q, e, s, r);
1615
1603
  }
1616
- As(A, t, e, s, r, i, B, Q) {
1604
+ qe(A, t, e, s, r, i, B, Q) {
1617
1605
  const n = e + (r - Q * (B / t.head.unitsPerEm)) / 2, g = s + (i + 0.7 * B) / 2;
1618
- return this.qe(A, t, n, g, B).toSVG() || null;
1606
+ return this.Xe(A, t, n, g, B).toSVG() || null;
1619
1607
  }
1620
1608
  }
1621
1609
  class pA {
1622
1610
  constructor() {
1623
- o(this, "ts");
1624
- this.ts = new wA();
1611
+ o(this, "As");
1612
+ this.As = new wA();
1625
1613
  }
1626
- es(A) {
1614
+ ts(A) {
1627
1615
  return `<?xml version="1.0" encoding="UTF-8" standalone="no"?>
1628
1616
  <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
1629
1617
  <svg width="${A.width}" height="${A.height}" viewBox="0 0 ${A.width} ${A.height}"
@@ -1631,21 +1619,21 @@ class pA {
1631
1619
  <title>textmode art generated via textmode.js</title>
1632
1620
  <desc>textmode art visualization generated by textmode.js library</desc>`;
1633
1621
  }
1634
- ss() {
1622
+ es() {
1635
1623
  return `
1636
1624
  </g>
1637
1625
  </svg>`;
1638
1626
  }
1639
- rs(A, t) {
1627
+ ss(A, t) {
1640
1628
  if (!t.includeBackgroundRectangles) return "";
1641
1629
  const e = t.backgroundColor, s = `rgba(${e[0]},${e[1]},${e[2]},${e[3] / 255})`;
1642
1630
  return `
1643
1631
  <rect width="${A.width}" height="${A.height}" fill="${s}" />`;
1644
1632
  }
1645
- Bs(A) {
1633
+ rs(A) {
1646
1634
  return `rgba(${A.r},${A.g},${A.b},${A.a / 255})`;
1647
1635
  }
1648
- Qs(A, t) {
1636
+ Bs(A, t) {
1649
1637
  const { transform: e, position: s } = A, r = s.cellX + t.cellWidth / 2, i = s.cellY + t.cellHeight / 2, B = [];
1650
1638
  if (e.flipHorizontal || e.flipVertical) {
1651
1639
  const Q = e.flipHorizontal ? -1 : 1, n = e.flipVertical ? -1 : 1;
@@ -1653,91 +1641,91 @@ class pA {
1653
1641
  }
1654
1642
  return e.rotation && B.push(`rotate(${e.rotation} ${r} ${i})`), B.length ? ` transform="${B.join(" ")}"` : "";
1655
1643
  }
1656
- Es(A, t, e) {
1644
+ Qs(A, t, e) {
1657
1645
  if (!e.includeBackgroundRectangles || A.secondaryColor.a === 0) return "";
1658
- const { position: s } = A, r = this.Bs(A.secondaryColor);
1646
+ const { position: s } = A, r = this.rs(A.secondaryColor);
1659
1647
  return e.drawMode === "stroke" ? `
1660
1648
  <rect x="${s.cellX}" y="${s.cellY}" width="${t.cellWidth}" height="${t.cellHeight}" stroke="${r}" fill="none" stroke-width="${e.strokeWidth}" />` : `
1661
1649
  <rect x="${s.cellX}" y="${s.cellY}" width="${t.cellWidth}" height="${t.cellHeight}" fill="${r}" />`;
1662
1650
  }
1663
- qe(A, t, e, s) {
1651
+ Xe(A, t, e, s) {
1664
1652
  const r = e.characters[A.charIndex];
1665
1653
  if (!r) return "";
1666
- const i = this.ts.As(r.character, e.font, A.position.cellX, A.position.cellY, t.cellWidth, t.cellHeight, e.fontSize, r.advanceWidth);
1654
+ const i = this.As.qe(r.character, e.font, A.position.cellX, A.position.cellY, t.cellWidth, t.cellHeight, e.fontSize, r.advanceWidth);
1667
1655
  if (!i) return "";
1668
- const B = this.Bs(A.primaryColor);
1656
+ const B = this.rs(A.primaryColor);
1669
1657
  return s.drawMode === "stroke" ? `
1670
1658
  <path id="${`path-${A.charIndex}-${A.position.cellX}-${A.position.cellY}`.replace(/\./g, "-")}" d="${i}" stroke="${B}" stroke-width="${s.strokeWidth}" fill="none" />` : `
1671
1659
  <path d="${i}" fill="${B}" />`;
1672
1660
  }
1673
- gs(A, t, e, s) {
1661
+ Es(A, t, e, s) {
1674
1662
  let r = "";
1675
- r += this.Es(A, t, s);
1676
- const i = this.Qs(A, t), B = this.qe(A, t, e, s);
1663
+ r += this.Qs(A, t, s);
1664
+ const i = this.Bs(A, t), B = this.Xe(A, t, e, s);
1677
1665
  return B && (i ? (r += `
1678
1666
  <g${i}>`, r += B, r += `
1679
1667
  </g>`) : r += B), r;
1680
1668
  }
1681
- ns(A, t, e, s) {
1682
- let r = this.es(t);
1683
- r += this.rs(t, s), r += `
1669
+ gs(A, t, e, s) {
1670
+ let r = this.ts(t);
1671
+ r += this.ss(t, s), r += `
1684
1672
  <g id="ascii-cells">`;
1685
- for (const i of A) r += this.gs(i, t, e, s);
1686
- return r += this.ss(), r;
1673
+ for (const i of A) r += this.Es(i, t, e, s);
1674
+ return r += this.es(), r;
1687
1675
  }
1688
- hs(A) {
1676
+ ns(A) {
1689
1677
  return A.replace(/<path[^>]*d=""[^>]*\/>/g, "").replace(/\n\s*\n/g, `
1690
1678
  `).replace(/[ \t]+$/gm, "");
1691
1679
  }
1692
1680
  }
1693
- class mA extends k {
1694
- ls(A) {
1695
- return this.Re(A, "image/svg+xml;charset=utf-8");
1681
+ class mA extends L {
1682
+ hs(A) {
1683
+ return this.ke(A, "image/svg+xml;charset=utf-8");
1696
1684
  }
1697
- cs(A, t) {
1698
- this.Ve(A, this.Le(t) + ".svg", "image/svg+xml;charset=utf-8");
1685
+ ls(A, t) {
1686
+ this.Re(A, this.ze(t) + ".svg", "image/svg+xml;charset=utf-8");
1699
1687
  }
1700
- Ds(A, t) {
1701
- this.cs(A, t || this.Je());
1688
+ cs(A, t) {
1689
+ this.ls(A, t || this.Le());
1702
1690
  }
1703
1691
  }
1704
- class $ {
1692
+ class H {
1705
1693
  constructor() {
1694
+ o(this, "Ds");
1706
1695
  o(this, "Cs");
1707
1696
  o(this, "us");
1708
- o(this, "Ps");
1709
- this.Cs = new fA(), this.us = new pA(), this.Ps = new mA();
1697
+ this.Ds = new fA(), this.Cs = new pA(), this.us = new mA();
1710
1698
  }
1711
- Is(A) {
1699
+ Ps(A) {
1712
1700
  return { includeBackgroundRectangles: A.includeBackgroundRectangles ?? !0, drawMode: A.drawMode ?? "fill", strokeWidth: A.strokeWidth ?? 1, backgroundColor: A.backgroundColor ?? [0, 0, 0, 0] };
1713
1701
  }
1714
- ws(A, t = {}) {
1715
- const e = this.Is(t), s = this.Cs.Oe(A.pipeline), r = this.Cs.je(s, A.grid), i = this.us.ns(r, A.grid, A.font, e);
1716
- return this.us.hs(i);
1702
+ Is(A, t = {}) {
1703
+ const e = this.Ps(t), s = this.Ds.Se(A.pipeline), r = this.Ds.We(s, A.grid), i = this.Cs.gs(r, A.grid, A.font, e);
1704
+ return this.Cs.ns(i);
1717
1705
  }
1718
- Ds(A, t = {}) {
1719
- const e = this.ws(A, t), s = t.filename || this.Ps.Je();
1720
- this.Ps.Ds(e, s);
1706
+ cs(A, t = {}) {
1707
+ const e = this.Is(A, t), s = t.filename || this.us.Le();
1708
+ this.us.cs(e, s);
1721
1709
  }
1722
1710
  }
1723
- class xA extends N {
1724
- fs(A, t, e, s = " ") {
1711
+ class xA extends k {
1712
+ ws(A, t, e, s = " ") {
1725
1713
  var B;
1726
1714
  const r = [];
1727
1715
  let i = 0;
1728
1716
  for (let Q = 0; Q < t.rows; Q++) {
1729
1717
  const n = [];
1730
1718
  for (let g = 0; g < t.cols; g++) {
1731
- const h = 4 * i, a = this.Ue(A.characterPixels, h), C = ((B = e.characters[a]) == null ? void 0 : B.character) || s;
1732
- n.push(C), i++;
1719
+ const h = 4 * i, a = this.Oe(A.characterPixels, h), D = ((B = e.characters[a]) == null ? void 0 : B.character) || s;
1720
+ n.push(D), i++;
1733
1721
  }
1734
1722
  r.push(n);
1735
1723
  }
1736
1724
  return r;
1737
1725
  }
1738
1726
  }
1739
- class vA {
1740
- ds(A, t) {
1727
+ class bA {
1728
+ fs(A, t) {
1741
1729
  const e = [];
1742
1730
  for (const r of A) {
1743
1731
  let i = r.join("");
@@ -1749,37 +1737,37 @@ class vA {
1749
1737
  return e.join(s);
1750
1738
  }
1751
1739
  }
1752
- class bA extends k {
1753
- ps(A, t) {
1754
- const e = this._s(t);
1755
- this.Ve(A, e, "text/plain;charset=utf-8");
1740
+ class vA extends L {
1741
+ ds(A, t) {
1742
+ const e = this.ps(t);
1743
+ this.Re(A, e, "text/plain;charset=utf-8");
1756
1744
  }
1757
- _s(A) {
1758
- let t = this.Le(A);
1759
- return t === ".txt" || t.length <= 4 ? this.Je() : t;
1745
+ ps(A) {
1746
+ let t = this.ze(A);
1747
+ return t === ".txt" || t.length <= 4 ? this.Le() : t;
1760
1748
  }
1761
1749
  }
1762
- class J {
1750
+ class W {
1763
1751
  constructor() {
1752
+ o(this, "Ds");
1764
1753
  o(this, "Cs");
1765
1754
  o(this, "us");
1766
- o(this, "Ps");
1767
- this.Cs = new xA(), this.us = new vA(), this.Ps = new bA();
1755
+ this.Ds = new xA(), this.Cs = new bA(), this.us = new vA();
1768
1756
  }
1769
- Is(A) {
1757
+ Ps(A) {
1770
1758
  return { preserveTrailingSpaces: A.preserveTrailingSpaces ?? !1, lineEnding: A.lineEnding ?? "lf", emptyCharacter: A.emptyCharacter ?? " " };
1771
1759
  }
1772
- vs(A, t = {}) {
1773
- const e = this.Is(t), s = this.Cs.Oe(A.pipeline), r = this.Cs.fs(s, A.grid, A.font, e.emptyCharacter);
1774
- return this.us.ds(r, e);
1760
+ _s(A, t = {}) {
1761
+ const e = this.Ps(t), s = this.Ds.Se(A.pipeline), r = this.Ds.ws(s, A.grid, A.font, e.emptyCharacter);
1762
+ return this.Cs.fs(r, e);
1775
1763
  }
1776
- ps(A, t = {}) {
1777
- const e = this.vs(A, t), s = t.filename || this.Ps.Je();
1778
- this.Ps.ps(e, s);
1764
+ ds(A, t = {}) {
1765
+ const e = this._s(A, t), s = t.filename || this.us.Le();
1766
+ this.us.ds(e, s);
1779
1767
  }
1780
1768
  }
1781
- class yA extends N {
1782
- bs(A, t = 1, e = "transparent") {
1769
+ class yA extends k {
1770
+ vs(A, t = 1, e = "transparent") {
1783
1771
  const s = A.canvas;
1784
1772
  if (t === 1 && e === "transparent") return s;
1785
1773
  const r = document.createElement("canvas"), i = r.getContext("2d"), B = Math.round(s.width * t), Q = Math.round(s.height * t);
@@ -1787,19 +1775,19 @@ class yA extends N {
1787
1775
  }
1788
1776
  }
1789
1777
  class _A {
1790
- Ms(A, t) {
1791
- const e = this.Gs(t.format);
1778
+ bs(A, t) {
1779
+ const e = this.Ms(t.format);
1792
1780
  return t.format === "png" ? A.toDataURL(e) : A.toDataURL(e, t.quality);
1793
1781
  }
1794
- async Fs(A, t) {
1782
+ async Gs(A, t) {
1795
1783
  return new Promise((e, s) => {
1796
- const r = this.Gs(t.format), i = (B) => {
1784
+ const r = this.Ms(t.format), i = (B) => {
1797
1785
  B ? e(B) : s(Error(`Failed to generate ${t.format.toUpperCase()} blob`));
1798
1786
  };
1799
1787
  t.format === "png" ? A.toBlob(i, r) : A.toBlob(i, r, t.quality);
1800
1788
  });
1801
1789
  }
1802
- Gs(A) {
1790
+ Ms(A) {
1803
1791
  switch (A) {
1804
1792
  case "png":
1805
1793
  return "image/png";
@@ -1812,12 +1800,12 @@ class _A {
1812
1800
  }
1813
1801
  }
1814
1802
  }
1815
- const FA = { png: "image/png", jpg: "image/jpeg", webp: "image/webp" }, W = { png: ".png", jpg: ".jpg", webp: ".webp" };
1816
- class MA extends k {
1817
- $s(A, t, e) {
1818
- this.Ys(A, this.Le(t) + W[e]);
1803
+ const MA = { png: "image/png", jpg: "image/jpeg", webp: "image/webp" }, N = { png: ".png", jpg: ".jpg", webp: ".webp" };
1804
+ class FA extends L {
1805
+ Fs(A, t, e) {
1806
+ this.$s(A, this.ze(t) + N[e]);
1819
1807
  }
1820
- Ys(A, t) {
1808
+ $s(A, t) {
1821
1809
  const e = URL.createObjectURL(A);
1822
1810
  try {
1823
1811
  const s = document.createElement("a");
@@ -1826,226 +1814,226 @@ class MA extends k {
1826
1814
  URL.revokeObjectURL(e);
1827
1815
  }
1828
1816
  }
1829
- Ts(A) {
1830
- return A in FA && A in W;
1817
+ Ys(A) {
1818
+ return A in MA && A in N;
1831
1819
  }
1832
1820
  }
1833
1821
  class TA {
1834
1822
  constructor() {
1823
+ o(this, "Ds");
1835
1824
  o(this, "Cs");
1836
1825
  o(this, "us");
1837
- o(this, "Ps");
1838
- this.Cs = new yA(), this.us = new _A(), this.Ps = new MA();
1826
+ this.Ds = new yA(), this.Cs = new _A(), this.us = new FA();
1839
1827
  }
1840
- Is(A) {
1828
+ Ps(A) {
1841
1829
  return { format: A.format ?? "png", quality: A.quality ?? 1, scale: A.scale ?? 1, backgroundColor: A.backgroundColor ?? "transparent" };
1842
1830
  }
1843
- Ss(A) {
1844
- if (console.log("Validating image export options:", A), !this.Ps.Ts(A.format)) throw Error(`Saving '${A.format}' files is not supported`);
1831
+ Ts(A) {
1832
+ if (console.log("Validating image export options:", A), !this.us.Ys(A.format)) throw Error(`Saving '${A.format}' files is not supported`);
1845
1833
  if (A.quality < 0 || A.quality > 1) throw Error("Image quality must be between 0.0 and 1.0");
1846
1834
  if (A.scale <= 0) throw Error("Scale factor must be greater than 0");
1847
1835
  A.scale > 10 && console.warn("Large scale factors may result in very large files and slow performance"), A.format === "jpg" && A.backgroundColor === "transparent" && (A.backgroundColor = "black");
1848
1836
  }
1849
- Os(A, t = {}) {
1850
- const e = this.Is(t);
1851
- if (this.Ss(e), e.scale === 1 && e.backgroundColor === "transparent") return this.us.Ms(A.canvas, e);
1852
- const s = this.Cs.bs(A, e.scale, e.backgroundColor);
1853
- return this.us.Ms(s, e);
1837
+ Ss(A, t = {}) {
1838
+ const e = this.Ps(t);
1839
+ if (this.Ts(e), e.scale === 1 && e.backgroundColor === "transparent") return this.Cs.bs(A.canvas, e);
1840
+ const s = this.Ds.vs(A, e.scale, e.backgroundColor);
1841
+ return this.Cs.bs(s, e);
1854
1842
  }
1855
- async Fs(A, t = {}) {
1856
- const e = this.Is(t);
1857
- if (this.Ss(e), e.scale === 1 && e.backgroundColor === "transparent") return await this.us.Fs(A.canvas, e);
1858
- const s = this.Cs.bs(A, e.scale, e.backgroundColor);
1859
- return await this.us.Fs(s, e);
1843
+ async Gs(A, t = {}) {
1844
+ const e = this.Ps(t);
1845
+ if (this.Ts(e), e.scale === 1 && e.backgroundColor === "transparent") return await this.Cs.Gs(A.canvas, e);
1846
+ const s = this.Ds.vs(A, e.scale, e.backgroundColor);
1847
+ return await this.Cs.Gs(s, e);
1860
1848
  }
1861
- async $s(A, t = {}) {
1862
- const e = await this.Fs(A, t), s = t.format ?? "png", r = t.filename || this.Ps.Je();
1863
- this.Ps.$s(e, r, s);
1849
+ async Fs(A, t = {}) {
1850
+ const e = await this.Gs(A, t), s = t.format ?? "png", r = t.filename || this.us.Le();
1851
+ this.us.Fs(e, r, s);
1864
1852
  }
1865
1853
  }
1866
1854
  const RA = (E) => class extends E {
1867
1855
  toString(A = {}) {
1868
- return new J().vs({ pipeline: this.Us, grid: this.ae, font: this.vt }, A);
1856
+ return new W()._s({ pipeline: this.Os, grid: this.ne, font: this._t }, A);
1869
1857
  }
1870
1858
  saveStrings(A = {}) {
1871
- new J().ps({ pipeline: this.Us, grid: this.ae, font: this.vt }, A);
1859
+ new W().ds({ pipeline: this.Os, grid: this.ne, font: this._t }, A);
1872
1860
  }
1873
1861
  toSVG(A = {}) {
1874
- return new $().ws(this, A);
1862
+ return new H().Is(this, A);
1875
1863
  }
1876
1864
  saveSVG(A = {}) {
1877
- new $().Ds(this, A);
1865
+ new H().cs(this, A);
1878
1866
  }
1879
1867
  async saveCanvas(A, t = "png", e = {}) {
1880
- await new TA().$s(this.Nt, { ...e, filename: A, format: t });
1868
+ await new TA().Fs(this.jt, { ...e, filename: A, format: t });
1881
1869
  }
1882
1870
  }, GA = (E) => class extends E {
1883
1871
  async loadFont(A) {
1884
- return this.vt.zt(A).then(() => {
1885
- const t = this.vt.maxGlyphDimensions;
1886
- this.ae.Ae(t.width, t.height), this.Us.se();
1872
+ return this._t.Ht(A).then(() => {
1873
+ const t = this._t.maxGlyphDimensions;
1874
+ this.ne.qt(t.width, t.height), this.Os.ee();
1887
1875
  });
1888
1876
  }
1889
1877
  fontSize(A) {
1890
- if (!u.C(typeof A == "number" && A > 0, "Font size must be a positive number greater than 0.", { method: "fontSize", providedValue: A }) || this.vt.fontSize === A) return;
1891
- this.vt.Ht(A);
1892
- const t = this.vt.maxGlyphDimensions;
1893
- this.ae.Ae(t.width, t.height), this.Us.se(), this.Ct.kA();
1878
+ if (!u.C(typeof A == "number" && A > 0, "Font size must be a positive number greater than 0.", { method: "fontSize", providedValue: A }) || this._t.fontSize === A) return;
1879
+ this._t.Vt(A);
1880
+ const t = this._t.maxGlyphDimensions;
1881
+ this.ne.qt(t.width, t.height), this.Os.ee(), this.Dt.kA();
1894
1882
  }
1895
1883
  }, UA = (E) => class extends E {
1896
1884
  addConverter(A) {
1897
- return this.Us.add(A);
1885
+ return this.Os.add(A);
1898
1886
  }
1899
1887
  removeConverter(A) {
1900
- this.Us.remove(A);
1888
+ this.Os.remove(A);
1901
1889
  }
1902
1890
  };
1903
- class YA {
1891
+ class SA {
1904
1892
  constructor() {
1905
- o(this, "Ct");
1906
- o(this, "vt");
1907
- o(this, "Us");
1908
- o(this, "Nt");
1909
- o(this, "ae");
1893
+ o(this, "Dt");
1894
+ o(this, "_t");
1895
+ o(this, "Os");
1896
+ o(this, "jt");
1897
+ o(this, "ne");
1910
1898
  }
1911
1899
  }
1912
1900
  class z extends function(t, ...e) {
1913
1901
  return e.reduce((s, r) => r(s), t);
1914
- }(YA, IA, RA, GA, UA) {
1902
+ }(SA, IA, RA, GA, UA) {
1915
1903
  constructor(t = null, e = {}) {
1916
1904
  super();
1917
- o(this, "Be");
1905
+ o(this, "re");
1906
+ o(this, "Us");
1907
+ o(this, "ie");
1918
1908
  o(this, "ks");
1919
- o(this, "Qe");
1920
1909
  o(this, "Rs");
1921
- o(this, "Vs");
1922
- o(this, "Hs", null);
1923
- o(this, "zs", 0);
1924
- o(this, "Ls");
1925
- o(this, "Js", !0);
1910
+ o(this, "Vs", null);
1911
+ o(this, "Hs", 0);
1912
+ o(this, "zs");
1913
+ o(this, "Ls", !0);
1914
+ o(this, "Js", 0);
1926
1915
  o(this, "Ks", 0);
1927
1916
  o(this, "Ws", 0);
1928
- o(this, "js", 0);
1929
- o(this, "Ns", []);
1930
- o(this, "Zs", 10);
1917
+ o(this, "js", []);
1918
+ o(this, "Ns", 10);
1919
+ o(this, "Zs", !1);
1931
1920
  o(this, "Xs", !1);
1932
- o(this, "qs", !1);
1933
- o(this, "Ar", () => {
1921
+ o(this, "qs", () => {
1934
1922
  });
1935
- o(this, "tr", () => {
1923
+ o(this, "Ar", () => {
1936
1924
  });
1937
- o(this, "er");
1938
- this.Be = t, this.qs = t === null, this.Rs = e.renderMode ?? "auto", this.Vs = e.frameRate ?? 60, this.Ls = 1e3 / this.Vs;
1925
+ o(this, "tr");
1926
+ this.re = t, this.Xs = t === null, this.ks = e.renderMode ?? "auto", this.Rs = e.frameRate ?? 60, this.zs = 1e3 / this.Rs;
1939
1927
  }
1940
1928
  static async create(t = null, e = {}) {
1941
- const s = new this(t, e), r = s.qs ? e : void 0;
1929
+ const s = new this(t, e), r = s.Xs ? e : void 0;
1942
1930
  let i, B;
1943
- s.Nt = new DA(s.Be, s.qs, r), s.Ct = new iA(s.Nt.ge()), s.qs ? (i = e.width || 800, B = e.height || 600) : (i = s.Nt.width || 800, B = s.Nt.height || 600), s.ks = s.Ct.SA(i, B), s.vt = new cA(s.Ct, e.fontSize ?? 16), await s.vt.kt(e.fontSource);
1944
- const Q = s.vt.maxGlyphDimensions;
1945
- return s.ae = new CA(s.Nt.canvas, Q.width, Q.height), s.Us = new dA(s.Ct, s.vt, s.ae), s.sr(), s.rr(), s;
1931
+ s.jt = new CA(s.re, s.Xs, r), s.Dt = new iA(s.jt.oe()), s.Xs ? (i = e.width || 800, B = e.height || 600) : (i = s.jt.width || 800, B = s.jt.height || 600), s.Us = s.Dt.SA(i, B), s._t = new cA(s.Dt, e.fontSize ?? 16), await s._t.Ut(e.fontSource);
1932
+ const Q = s._t.maxGlyphDimensions;
1933
+ return s.ne = new DA(s.jt.canvas, Q.width, Q.height), s.Os = new dA(s.Dt, s._t, s.ne), s.er(), s.sr(), s;
1946
1934
  }
1947
- sr() {
1948
- this.er = () => {
1949
- this.qs ? this.tr() : this.Br();
1950
- }, window.addEventListener("resize", this.er), window.ResizeObserver && this.Be && !this.qs && (this.Qe = new ResizeObserver(() => {
1951
- this.Br();
1952
- }), this.Qe.observe(this.Be));
1935
+ er() {
1936
+ this.tr = () => {
1937
+ this.Xs ? this.Ar() : this.rr();
1938
+ }, window.addEventListener("resize", this.tr), window.ResizeObserver && this.re && !this.Xs && (this.ie = new ResizeObserver(() => {
1939
+ this.rr();
1940
+ }), this.ie.observe(this.re));
1953
1941
  }
1954
1942
  render() {
1955
- this.ir(), this.js++, this.Xs ? console.warn("Cannot render: Required resources have been disposed") : (this.qs ? (this.ks.begin(), this.Ar(), this.ks.end()) : this.ks.update(this.Be), this.Us.hasEnabledConverters() ? (this.Us.Se(this.ks), this.Ct.OA(0), this.Ct.RA(this.Us.texture, this.ae.offsetX, this.ae.offsetY, this.Us.texture.width, this.Us.texture.height)) : (this.Ct.UA(), this.Ct.RA(this.ks, this.ae.offsetX, this.ae.offsetY, this.ks.width, this.ks.height)));
1956
- }
1957
- Br() {
1958
- this.Nt.se(), this.ks.resize(this.Nt.width, this.Nt.height), this.ae.se(), this.Us.se(), this.Ct.kA(), this.Rs !== "manual" && this.render();
1943
+ this.Br(), this.Ws++, this.Zs ? console.warn("Cannot render: Required resources have been disposed") : (this.Xs ? (this.Us.begin(), this.qs(), this.Us.end()) : this.Us.update(this.re), this.Os.hasEnabledConverters() ? (this.Os.Te(this.Us), this.Dt.OA(0), this.Dt.RA(this.Os.texture, this.ne.offsetX, this.ne.offsetY, this.Os.texture.width, this.Os.texture.height)) : (this.Dt.UA(), this.Dt.RA(this.Us, this.ne.offsetX, this.ne.offsetY, this.Us.width, this.Us.height)));
1959
1944
  }
1960
1945
  rr() {
1961
- if (this.Rs !== "auto" || !this.Js) return;
1962
- this.zs = performance.now();
1946
+ this.jt.ee(), this.Us.resize(this.jt.width, this.jt.height), this.ne.ee(), this.Os.ee(), this.Dt.kA(), this.ks !== "manual" && this.render();
1947
+ }
1948
+ sr() {
1949
+ if (this.ks !== "auto" || !this.Ls) return;
1950
+ this.Hs = performance.now();
1963
1951
  const t = (e) => {
1964
- if (!this.Js) return void (this.Hs = null);
1965
- const s = e - this.zs;
1966
- s >= this.Ls && (this.render(), this.zs = e - s % this.Ls), this.Js && (this.Hs = requestAnimationFrame(t));
1952
+ if (!this.Ls) return void (this.Vs = null);
1953
+ const s = e - this.Hs;
1954
+ s >= this.zs && (this.render(), this.Hs = e - s % this.zs), this.Ls && (this.Vs = requestAnimationFrame(t));
1967
1955
  };
1968
- this.Hs = requestAnimationFrame(t);
1956
+ this.Vs = requestAnimationFrame(t);
1969
1957
  }
1970
- ir() {
1958
+ Br() {
1971
1959
  const t = performance.now();
1972
- if (this.Ws > 0) {
1973
- const e = t - this.Ws;
1974
- this.Ns.push(e), this.Ns.length > this.Zs && this.Ns.shift();
1975
- const s = this.Ns.reduce((r, i) => r + i, 0) / this.Ns.length;
1976
- this.Ks = 1e3 / s;
1960
+ if (this.Ks > 0) {
1961
+ const e = t - this.Ks;
1962
+ this.js.push(e), this.js.length > this.Ns && this.js.shift();
1963
+ const s = this.js.reduce((r, i) => r + i, 0) / this.js.length;
1964
+ this.Js = 1e3 / s;
1977
1965
  }
1978
- this.Ws = t;
1966
+ this.Ks = t;
1979
1967
  }
1980
- Qr() {
1981
- this.Hs && (cancelAnimationFrame(this.Hs), this.Hs = null);
1968
+ ir() {
1969
+ this.Vs && (cancelAnimationFrame(this.Vs), this.Vs = null);
1982
1970
  }
1983
1971
  renderMode(t) {
1984
- this.Rs !== t && (this.Qr(), this.Rs = t, t === "auto" && this.Js && this.rr());
1972
+ this.ks !== t && (this.ir(), this.ks = t, t === "auto" && this.Ls && this.sr());
1985
1973
  }
1986
1974
  frameRate(t) {
1987
- if (t === void 0) return this.Ks;
1988
- this.Vs = t, this.Ls = 1e3 / t, this.Rs === "auto" && this.Js && (this.Qr(), this.rr());
1975
+ if (t === void 0) return this.Js;
1976
+ this.Rs = t, this.zs = 1e3 / t, this.ks === "auto" && this.Ls && (this.ir(), this.sr());
1989
1977
  }
1990
1978
  noLoop() {
1991
- this.Js && (this.Js = !1, this.Hs && (cancelAnimationFrame(this.Hs), this.Hs = null));
1979
+ this.Ls && (this.Ls = !1, this.Vs && (cancelAnimationFrame(this.Vs), this.Vs = null));
1992
1980
  }
1993
1981
  loop() {
1994
- this.Js || (this.Js = !0, this.Rs === "auto" && this.rr());
1982
+ this.Ls || (this.Ls = !0, this.ks === "auto" && this.sr());
1995
1983
  }
1996
1984
  redraw(t = 1) {
1997
1985
  if (u.C(typeof t == "number" && t > 0 && Number.isInteger(t), "Redraw count must be a positive integer.", { method: "redraw", providedValue: t })) for (let e = 0; e < t; e++) this.render();
1998
1986
  }
1999
1987
  isLooping() {
2000
- return this.Rs === "auto" && this.Js;
1988
+ return this.ks === "auto" && this.Ls;
2001
1989
  }
2002
1990
  draw(t) {
2003
- this.Ar = t;
1991
+ this.qs = t;
2004
1992
  }
2005
1993
  windowResized(t) {
2006
- this.tr = t;
1994
+ this.Ar = t;
2007
1995
  }
2008
1996
  resizeCanvas(t, e) {
2009
- this.qs && (this.Nt.se(t, e), this.ks.resize(this.Nt.width, this.Nt.height), this.ae.se(), this.Us.se(), this.Ct.kA(), this.Rs !== "manual" && this.render());
1997
+ this.Xs && (this.jt.ee(t, e), this.Us.resize(this.jt.width, this.jt.height), this.ne.ee(), this.Os.ee(), this.Dt.kA(), this.ks !== "manual" && this.render());
2010
1998
  }
2011
1999
  destroy() {
2012
- this.Xs || (this.Qr(), window.removeEventListener("resize", this.er), this.Qe && this.Qe.disconnect(), this.Us.S(), this.vt.S(), this.ks.S(), this.Ct.S(), this.Xs = !0);
2000
+ this.Zs || (this.ir(), window.removeEventListener("resize", this.tr), this.ie && this.ie.disconnect(), this.Os.S(), this._t.S(), this.Us.S(), this.Dt.S(), this.Zs = !0);
2013
2001
  }
2014
2002
  get grid() {
2015
- return this.ae;
2003
+ return this.ne;
2016
2004
  }
2017
2005
  get font() {
2018
- return this.vt;
2006
+ return this._t;
2019
2007
  }
2020
2008
  get mode() {
2021
- return this.Rs;
2009
+ return this.ks;
2022
2010
  }
2023
2011
  get pipeline() {
2024
- return this.Us;
2012
+ return this.Os;
2025
2013
  }
2026
2014
  get frameCount() {
2027
- return this.js;
2015
+ return this.Ws;
2028
2016
  }
2029
2017
  get renderer() {
2030
- return this.Ct;
2018
+ return this.Dt;
2031
2019
  }
2032
2020
  set frameCount(t) {
2033
- this.js = t;
2021
+ this.Ws = t;
2034
2022
  }
2035
2023
  get width() {
2036
- return this.Nt.width;
2024
+ return this.jt.width;
2037
2025
  }
2038
2026
  get height() {
2039
- return this.Nt.height;
2027
+ return this.jt.height;
2040
2028
  }
2041
2029
  get canvas() {
2042
- return this.Nt;
2030
+ return this.jt;
2043
2031
  }
2044
2032
  get isDisposed() {
2045
- return this.Xs;
2033
+ return this.Zs;
2046
2034
  }
2047
2035
  }
2048
- class L {
2036
+ class j {
2049
2037
  constructor() {
2050
2038
  throw new I("Textmode is a static class and cannot be instantiated.");
2051
2039
  }
@@ -2062,23 +2050,23 @@ class L {
2062
2050
  u.u(A);
2063
2051
  }
2064
2052
  static get version() {
2065
- return "0.1.9-beta.5";
2053
+ return "0.1.9-beta.6";
2066
2054
  }
2067
2055
  }
2068
- const NA = Object.freeze(Object.defineProperty({ __proto__: null }, Symbol.toStringTag, { value: "Module" })), kA = L.create, LA = L.setErrorLevel, HA = L.version;
2056
+ const kA = Object.freeze(Object.defineProperty({ __proto__: null }, Symbol.toStringTag, { value: "Module" })), LA = j.create, jA = j.setErrorLevel, VA = j.version;
2069
2057
  export {
2070
- DA as TextmodeCanvas,
2058
+ CA as TextmodeCanvas,
2071
2059
  uA as TextmodeColorPalette,
2072
2060
  dA as TextmodeConversionPipeline,
2073
2061
  eA as TextmodeErrorLevel,
2074
2062
  cA as TextmodeFont,
2075
- CA as TextmodeGrid,
2063
+ DA as TextmodeGrid,
2076
2064
  z as Textmodifier,
2077
2065
  OA as converters,
2078
- kA as create,
2079
- L as default,
2080
- NA as export,
2081
- LA as setErrorLevel,
2082
- L as textmode,
2083
- HA as version
2066
+ LA as create,
2067
+ j as default,
2068
+ kA as export,
2069
+ jA as setErrorLevel,
2070
+ j as textmode,
2071
+ VA as version
2084
2072
  };