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

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 v = class v {
37
+ const b = class b {
38
38
  constructor() {
39
39
  o(this, "h", { globalLevel: 3 });
40
40
  }
41
41
  static l() {
42
- return v.o || (v.o = new v()), v.o;
42
+ return b.o || (b.o = new b()), b.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 v = class v {
61
61
  this.h.globalLevel = A;
62
62
  }
63
63
  };
64
- o(v, "o", null);
65
- let Y = v;
64
+ o(b, "o", null);
65
+ let Y = b;
66
66
  const u = Y.l(), X = /* @__PURE__ */ new WeakMap();
67
- function F(E, A) {
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 {
@@ -119,12 +119,12 @@ class K {
119
119
  }
120
120
  begin() {
121
121
  const { P: A } = this;
122
- this.v = { framebuffer: A.getParameter(A.FRAMEBUFFER_BINDING), viewport: A.getParameter(A.VIEWPORT) }, A.bindFramebuffer(A.FRAMEBUFFER, this.I), A.viewport(0, 0, this.p, this._), F(A, [0, 0, this.p, this._]);
122
+ this.v = { framebuffer: A.getParameter(A.FRAMEBUFFER_BINDING), viewport: A.getParameter(A.VIEWPORT) }, A.bindFramebuffer(A.FRAMEBUFFER, this.I), A.viewport(0, 0, this.p, this._), G(A, [0, 0, this.p, this._]);
123
123
  }
124
124
  end() {
125
125
  if (!this.v) return;
126
126
  const { P: A } = this;
127
- A.bindFramebuffer(A.FRAMEBUFFER, this.v.framebuffer), A.viewport(...this.v.viewport), F(A, this.v.viewport), this.v = null;
127
+ A.bindFramebuffer(A.FRAMEBUFFER, this.v.framebuffer), A.viewport(...this.v.viewport), G(A, this.v.viewport), this.v = null;
128
128
  }
129
129
  loadPixels() {
130
130
  const { P: A } = this;
@@ -174,9 +174,9 @@ class x {
174
174
  o(this, "O");
175
175
  o(this, "U", /* @__PURE__ */ new Map());
176
176
  o(this, "k", /* @__PURE__ */ new Map());
177
- o(this, "V", 0);
178
- o(this, "R");
179
- this.P = A, this.O = this.H(t, e), this.R = A.getParameter(A.MAX_TEXTURE_IMAGE_UNITS), this.L();
177
+ o(this, "R", 0);
178
+ o(this, "V");
179
+ this.P = A, this.O = this.H(t, e), this.V = A.getParameter(A.MAX_TEXTURE_IMAGE_UNITS), this.L();
180
180
  }
181
181
  L() {
182
182
  const A = this.P.getProgramParameter(this.O, this.P.ACTIVE_UNIFORMS);
@@ -234,7 +234,7 @@ class x {
234
234
  } else console.warn(`Unsupported uniform type for '${A}':`, typeof t);
235
235
  }
236
236
  N() {
237
- return this.V >= this.R && console.warn(`Exceeded maximum texture units (${this.R}). Texture may not render correctly.`), this.V++;
237
+ return this.R >= this.V && console.warn(`Exceeded maximum texture units (${this.V}). Texture may not render correctly.`), this.R++;
238
238
  }
239
239
  j(A) {
240
240
  const t = this.k.get(A);
@@ -247,7 +247,7 @@ class x {
247
247
  this.P.deleteProgram(this.O);
248
248
  }
249
249
  W() {
250
- this.V = 0;
250
+ this.R = 0;
251
251
  }
252
252
  }
253
253
  class Z {
@@ -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) {
@@ -307,13 +307,13 @@ class rA extends Z {
307
307
  QA(A, t, e, s, r) {
308
308
  const i = e - A, B = s - t, Q = Math.hypot(i, B);
309
309
  if (Q === 0) {
310
- const g = r / 2, a = this.sA(A - g, t - g), h = this.sA(A + g, t + g);
311
- this.rA(a.nx, a.ny, h.nx, h.ny);
310
+ const g = r / 2, h = this.sA(A - g, t - g), a = this.sA(A + g, t + g);
311
+ this.rA(h.nx, h.ny, a.nx, a.ny);
312
312
  } else {
313
- const g = -B / Q, a = i / Q, h = r / 2, D = A + g * h, c = t + a * h, l = A - g * h, d = t - a * h, C = e + g * h, P = s + a * h, p = e - g * h, m = s - a * h, y = this.sA(D, c), b = this.sA(l, d), _ = this.sA(C, P), V = this.sA(p, m), G = this.P;
314
- this.AA(), G.bindBuffer(G.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
- G.bufferData(G.ARRAY_BUFFER, q, G.DYNAMIC_DRAW);
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);
317
317
  }
318
318
  const n = this.tA();
319
319
  this.P.drawArrays(this.P.TRIANGLES, 0, 6), this.eA(n.positionLoc, n.texLoc);
@@ -324,8 +324,8 @@ class iA {
324
324
  constructor(A) {
325
325
  o(this, "P");
326
326
  o(this, "EA");
327
- o(this, "gA");
328
- o(this, "oA", null);
327
+ o(this, "oA");
328
+ o(this, "gA", null);
329
329
  o(this, "nA");
330
330
  o(this, "aA");
331
331
  o(this, "hA", [1, 1, 1, 1]);
@@ -335,10 +335,10 @@ class iA {
335
335
  o(this, "CA", !0);
336
336
  o(this, "uA", 0);
337
337
  o(this, "PA", []);
338
- this.P = A, this.EA = new x(this.P, R, "precision lowp float;uniform sampler2D u_texture;varying vec2 v_uv;void main(){gl_FragColor=texture2D(u_texture,v_uv);}"), this.gA = new x(this.P, R, "precision lowp float;uniform vec4 u_color;void main(){gl_FragColor=u_color;}"), this.nA = new sA(this.P), this.aA = new rA(this.P), this.P.enable(this.P.BLEND), this.P.blendEquation(this.P.FUNC_ADD), this.P.blendFunc(this.P.ONE, this.P.ONE_MINUS_SRC_ALPHA), F(this.P, [0, 0, this.P.canvas.width, this.P.canvas.height]);
338
+ this.P = A, this.EA = new x(this.P, R, "precision lowp float;uniform sampler2D u_texture;varying vec2 v_uv;void main(){gl_FragColor=texture2D(u_texture,v_uv);}"), this.oA = new x(this.P, R, "precision lowp float;uniform vec4 u_color;void main(){gl_FragColor=u_color;}"), this.nA = new sA(this.P), this.aA = new rA(this.P), this.P.enable(this.P.BLEND), this.P.blendEquation(this.P.FUNC_ADD), this.P.blendFunc(this.P.ONE, this.P.ONE_MINUS_SRC_ALPHA), G(this.P, [0, 0, this.P.canvas.width, this.P.canvas.height]);
339
339
  }
340
340
  IA(A) {
341
- this.oA !== A && (this.oA = A, A.K());
341
+ this.gA !== A && (this.gA = A, A.K());
342
342
  }
343
343
  wA(A, t, e, s) {
344
344
  if (this.lA = !0, t === void 0 && e === void 0 && s === void 0) {
@@ -381,70 +381,76 @@ class iA {
381
381
  A ? (this.hA = A.fillColor, this.lA = A.fillMode, this.cA = A.strokeColor, this.DA = A.strokeWeight, this.CA = A.strokeMode, this.uA = A.rotation) : console.warn("pop() called without matching push()");
382
382
  }
383
383
  xA() {
384
- this.oA = null, this.PA = [], this.uA = 0;
384
+ this.gA = null, this.PA = [], this.uA = 0;
385
385
  }
386
- yA(A, t) {
386
+ yA(A) {
387
+ const t = A.replace(/\/\*[\s\S]*?\*\//g, "").replace(/\/\/.*$/gm, "").trim().match(/^#version\s+(\d+)\s+(es)?/i);
388
+ return t ? parseInt(t[1], 10) >= 300 : !1;
389
+ }
390
+ MA(A, t) {
387
391
  return new x(this.P, A, t);
388
392
  }
389
- MA(A) {
390
- return new x(this.P, R, A);
393
+ GA(A) {
394
+ const t = this.yA(A) ? `#version 300 es
395
+ in vec2 a_position;in vec2 a_texCoord;out vec2 v_uv;uniform float u_rotation;uniform vec2 u_center;uniform float u_aspectRatio;mat2 rotate2D(float angle){float s=sin(angle);float c=cos(angle);return mat2(c,-s,s,c);}void main(){v_uv=a_texCoord;vec2 pos=a_position;pos-=u_center;pos.x*=u_aspectRatio;pos=rotate2D(-u_rotation)*pos;pos.x/=u_aspectRatio;pos+=u_center;gl_Position=vec4(pos,0.0,1.0);}` : R;
396
+ return new x(this.P, t, A);
391
397
  }
392
- GA(A, t) {
393
- this.oA.setUniform(A, t);
398
+ FA(A, t) {
399
+ this.gA.setUniform(A, t);
394
400
  }
395
- FA(A, t, e, s) {
396
- if (this.oA !== null) {
397
- const { centerX: a, centerY: h, radians: D, aspectRatio: c } = this.$A(A, t, e, s);
398
- return this.GA("u_rotation", D), this.GA("u_center", [a, h]), this.GA("u_aspectRatio", c), this.nA.BA(A, t, e, s), void (this.oA = null);
401
+ $A(A, t, e, s) {
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);
399
405
  }
400
- const r = this.gA;
406
+ const r = this.oA;
401
407
  let i = 0, B = 0, Q = 0, n = 1;
402
- const g = this.$A(A, t, e, s);
403
- i = g.centerX, B = g.centerY, Q = g.radians, n = g.aspectRatio, this.lA && (this.IA(r), this.GA("u_color", this.hA), this.GA("u_rotation", Q), this.GA("u_center", [i, B]), this.GA("u_aspectRatio", n), this.nA.BA(A, t, e, s)), this.CA && this.DA > 0 && (this.IA(r), this.GA("u_color", this.cA), this.GA("u_rotation", Q), this.GA("u_center", [i, B]), this.GA("u_aspectRatio", n), this.nA.iA(A, t, e, s, this.DA)), this.oA = null;
408
+ const g = this.YA(A, t, e, s);
409
+ i = g.centerX, B = g.centerY, Q = g.radians, n = g.aspectRatio, this.lA && (this.IA(r), this.FA("u_color", this.hA), this.FA("u_rotation", Q), this.FA("u_center", [i, B]), this.FA("u_aspectRatio", n), this.nA.BA(A, t, e, s)), this.CA && this.DA > 0 && (this.IA(r), this.FA("u_color", this.cA), this.FA("u_rotation", Q), this.FA("u_center", [i, B]), this.FA("u_aspectRatio", n), this.nA.iA(A, t, e, s, this.DA)), this.gA = null;
404
410
  }
405
- YA(A, t, e, s) {
406
- if (this.oA !== null) {
407
- 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.$A(l - C / 2, d - P / 2, C, P);
408
- this.GA("u_rotation", y), this.GA("u_center", [p, m]), this.GA("u_aspectRatio", b);
411
+ TA(A, t, e, s) {
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);
409
415
  const _ = this.DA > 0 ? this.DA : 1;
410
- return this.aA.QA(A, t, e, s, _), void (this.oA = null);
416
+ return this.aA.QA(A, t, e, s, _), void (this.gA = null);
411
417
  }
412
418
  if (!this.CA || this.DA <= 0) return;
413
- const r = this.gA, i = (A + e) / 2, B = (t + s) / 2, Q = Math.abs(e - A) || 1, n = Math.abs(s - t) || 1, g = this.uA !== 0;
414
- let a = 0, h = 0, D = 0, c = 1;
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;
415
421
  if (g) {
416
- const l = this.$A(i - Q / 2, B - n / 2, Q, n);
417
- a = l.centerX, h = l.centerY, D = l.radians, c = l.aspectRatio;
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;
418
424
  }
419
- this.IA(r), this.GA("u_color", this.cA), g && (this.GA("u_rotation", D), this.GA("u_center", [a, h]), this.GA("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", C), this.FA("u_center", [h, a]), this.FA("u_aspectRatio", c)), this.aA.QA(A, t, e, s, this.DA);
420
426
  }
421
- $A(A, t, e, s) {
422
- const r = J(this.P) || [0, 0, this.P.canvas.width, this.P.canvas.height], i = r[2], B = r[3], Q = i / B;
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;
423
429
  return { centerX: (A + e / 2) / i * 2 - 1, centerY: 1 - (t + s / 2) / B * 2, radians: this.uA * Math.PI / 180, aspectRatio: Q };
424
430
  }
425
- TA(A, t, e = {}) {
431
+ SA(A, t, e = {}) {
426
432
  return new K(this.P, A, t, e);
427
433
  }
428
- SA(A, t = A, e = A, s = 255) {
429
- this.OA(A / 255, t / 255, e / 255, s / 255);
434
+ OA(A, t = A, e = A, s = 255) {
435
+ this.UA(A / 255, t / 255, e / 255, s / 255);
430
436
  }
431
- OA(A = 0, t = 0, e = 0, s = 0) {
437
+ UA(A = 0, t = 0, e = 0, s = 0) {
432
438
  this.P.clearColor(A, t, e, s), this.P.clear(this.P.COLOR_BUFFER_BIT);
433
439
  }
434
- UA() {
435
- this.P.viewport(0, 0, this.P.canvas.width, this.P.canvas.height), F(this.P, [0, 0, this.P.canvas.width, this.P.canvas.height]);
440
+ kA() {
441
+ this.P.viewport(0, 0, this.P.canvas.width, this.P.canvas.height), G(this.P, [0, 0, this.P.canvas.width, this.P.canvas.height]);
436
442
  }
437
443
  get context() {
438
444
  return this.P;
439
445
  }
440
446
  S() {
441
- this.EA.S(), this.gA.S(), this.nA.S(), this.aA.S();
447
+ this.EA.S(), this.oA.S(), this.nA.S(), this.aA.S();
442
448
  }
443
- kA(A, t, e, s, r) {
449
+ RA(A, t, e, s, r) {
444
450
  const i = this.P, B = s ?? A.width, Q = r ?? A.height;
445
- this.IA(this.EA), this.GA("u_texture", A.texture);
446
- const n = this.$A(t, e, B, Q);
447
- this.GA("u_rotation", n.radians), this.GA("u_center", [n.centerX, n.centerY]), this.GA("u_aspectRatio", n.aspectRatio), this.nA.BA(t, e, B, Q), i.bindTexture(i.TEXTURE_2D, null), this.oA = null;
451
+ this.IA(this.EA), this.FA("u_texture", A.texture);
452
+ const n = this.YA(t, e, B, Q);
453
+ this.FA("u_rotation", n.radians), this.FA("u_center", [n.centerX, n.centerY]), this.FA("u_aspectRatio", n.aspectRatio), this.nA.BA(t, e, B, Q), i.bindTexture(i.TEXTURE_2D, null), this.gA = null;
448
454
  }
449
455
  }
450
456
  const f = { readShort: (E, A) => (f.t.uint16[0] = E[A] << 8 | E[A + 1], f.t.int16[0]), readUshort: (E, A) => E[A] << 8 | E[A + 1], readUshorts(E, A, t) {
@@ -470,17 +476,17 @@ const f = { readShort: (E, A) => (f.t.uint16[0] = E[A] << 8 | E[A + 1], f.t.int1
470
476
  for (let Q = 0; Q < i; Q++) {
471
477
  const n = r(E, A), g = r(E, A += 2);
472
478
  A += 2;
473
- const a = s.readUint(E, A);
479
+ const h = s.readUint(E, A);
474
480
  A += 4;
475
- const h = `p${n}e${g}`;
476
- let D = B.indexOf(a);
477
- if (D === -1) {
481
+ const a = `p${n}e${g}`;
482
+ let C = B.indexOf(h);
483
+ if (C === -1) {
478
484
  let c;
479
- D = e.tables.length, B.push(a);
480
- const l = r(E, a);
481
- c = l === 4 ? this.parse4(E, a) : l === 12 ? this.parse12(E, a) : { format: l }, e.tables.push(c);
485
+ C = e.tables.length, B.push(h);
486
+ const l = r(E, h);
487
+ c = l === 4 ? this.parse4(E, h) : l === 12 ? this.parse12(E, h) : { format: l }, e.tables.push(c);
482
488
  }
483
- e.ids[h] != null && console.warn("Multiple tables for one platform+encoding: " + h), e.ids[h] = D;
489
+ e.ids[a] != null && console.warn("Multiple tables for one platform+encoding: " + a), e.ids[a] = C;
484
490
  }
485
491
  return e;
486
492
  }, parse4(E, A) {
@@ -523,11 +529,11 @@ const f = { readShort: (E, A) => (f.t.uint16[0] = E[A] << 8 | E[A + 1], f.t.int1
523
529
  } }, QA = { parseTab(E, A, t, e) {
524
530
  if (!e) throw Error("Font object required for hmtx parsing");
525
531
  const s = f, r = [], i = [], B = e.maxp.numGlyphs, Q = e.hhea.numberOfHMetrics;
526
- let n = 0, g = 0, a = 0;
527
- for (; a < Q; ) n = s.readUshort(E, A + (a << 2)), g = s.readShort(E, A + (a << 2) + 2), r.push(n), i.push(g), a++;
528
- for (; a < B; ) r.push(n), i.push(g), a++;
532
+ let n = 0, g = 0, h = 0;
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
+ for (; h < B; ) r.push(n), i.push(g), h++;
529
535
  return { aWidth: r, lsBearing: i };
530
- } }, H = { cmap: BA, head: EA, hhea: oA, maxp: { parseTab(E, A, t) {
536
+ } }, V = { cmap: BA, head: EA, hhea: oA, maxp: { parseTab(E, A, t) {
531
537
  const e = f;
532
538
  return e.readUint(E, A), A += 4, { numGlyphs: e.readUshort(E, A) };
533
539
  } }, hmtx: QA, loca: { parseTab(E, A, t, e) {
@@ -542,51 +548,51 @@ const f = { readShort: (E, A) => (f.t.uint16[0] = E[A] << 8 | E[A + 1], f.t.int1
542
548
  for (let i = 0; i < r; i++) s.push(null);
543
549
  return s;
544
550
  }, VA(E, A) {
545
- const t = f, e = E.RA, s = E.loca;
551
+ const t = f, e = E.HA, s = E.loca;
546
552
  if (s[A] === s[A + 1]) return null;
547
- const r = w.findTable(e, "glyf", E.HA);
553
+ const r = w.findTable(e, "glyf", E.zA);
548
554
  if (!r) return null;
549
555
  let i = r[0] + s[A];
550
556
  const B = {};
551
557
  if (B.noc = t.readShort(e, i), i += 2, B.xMin = t.readShort(e, i), i += 2, B.yMin = t.readShort(e, i), i += 2, B.xMax = t.readShort(e, i), i += 2, B.yMax = t.readShort(e, i), i += 2, B.xMin >= B.xMax || B.yMin >= B.yMax) return null;
552
558
  if (B.noc > 0) {
553
559
  B.endPts = [];
554
- for (let h = 0; h < B.noc; h++) B.endPts.push(t.readUshort(e, i)), i += 2;
560
+ for (let a = 0; a < B.noc; a++) B.endPts.push(t.readUshort(e, i)), i += 2;
555
561
  const Q = t.readUshort(e, i);
556
562
  if (i += 2, e.length - i < Q) return null;
557
563
  i += Q;
558
564
  const n = B.endPts[B.noc - 1] + 1;
559
565
  B.flags = [];
560
- for (let h = 0; h < n; h++) {
561
- const D = e[i];
562
- if (i++, B.flags.push(D), 8 & D) {
566
+ for (let a = 0; a < n; a++) {
567
+ const C = e[i];
568
+ if (i++, B.flags.push(C), 8 & C) {
563
569
  const c = e[i];
564
570
  i++;
565
- for (let l = 0; l < c; l++) B.flags.push(D), h++;
571
+ for (let l = 0; l < c; l++) B.flags.push(C), a++;
566
572
  }
567
573
  }
568
574
  B.xs = [];
569
- for (let h = 0; h < n; h++) {
570
- const D = B.flags[h], c = !!(16 & D);
571
- 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);
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);
572
578
  }
573
579
  B.ys = [];
574
- for (let h = 0; h < n; h++) {
575
- const D = B.flags[h], c = !!(32 & D);
576
- 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);
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);
577
583
  }
578
- let g = 0, a = 0;
579
- for (let h = 0; h < n; h++) g += B.xs[h], a += B.ys[h], B.xs[h] = g, B.ys[h] = a;
584
+ let g = 0, h = 0;
585
+ for (let a = 0; a < n; a++) g += B.xs[a], h += B.ys[a], B.xs[a] = g, B.ys[a] = h;
580
586
  } else B.parts = [], B.endPts = [], B.flags = [], B.xs = [], B.ys = [];
581
587
  return B;
582
588
  } } }, w = { parse: (E) => [((A, t, e, s) => {
583
- const r = H, i = { RA: A, zA: t, HA: e };
589
+ const r = V, i = { HA: A, LA: t, zA: e };
584
590
  for (const B in r) {
585
591
  const Q = B, n = w.findTable(A, Q, e);
586
592
  if (n) {
587
- const [g, a] = n;
588
- let h = s[g];
589
- h == null && (h = r[Q].parseTab(A, g, a, i), s[g] = h), i[Q] = h;
593
+ const [g, h] = n;
594
+ let a = s[g];
595
+ a == null && (a = r[Q].parseTab(A, g, h, i), s[g] = a), i[Q] = a;
590
596
  }
591
597
  }
592
598
  return i;
@@ -601,52 +607,52 @@ const f = { readShort: (E, A) => (f.t.uint16[0] = E[A] << 8 | E[A + 1], f.t.int1
601
607
  r += 16;
602
608
  }
603
609
  return null;
604
- }, T: H, B: f };
610
+ }, T: V, B: f };
605
611
  class U {
606
612
  constructor() {
607
- o(this, "LA", /* @__PURE__ */ new Map());
608
613
  o(this, "JA", /* @__PURE__ */ new Map());
614
+ o(this, "KA", /* @__PURE__ */ new Map());
609
615
  }
610
- KA(A) {
611
- const t = this.WA(A);
612
- if (this.JA.has(t)) return this.JA.get(t);
616
+ WA(A) {
617
+ const t = this.jA(A);
618
+ if (this.KA.has(t)) return this.KA.get(t);
613
619
  const e = A.cmap;
614
- if (!e || !e.tables) return this.JA.set(t, null), null;
620
+ if (!e || !e.tables) return this.KA.set(t, null), null;
615
621
  const s = ["p3e1", "p3e10", "p0e3", "p0e4"];
616
622
  for (const i of s) if (e.ids[i] !== void 0) {
617
623
  const B = e.tables[e.ids[i]];
618
- return this.JA.set(t, B), B;
624
+ return this.KA.set(t, B), B;
619
625
  }
620
626
  const r = e.tables[0] || null;
621
- return this.JA.set(t, r), r;
627
+ return this.KA.set(t, r), r;
622
628
  }
623
- jA(A, t) {
624
- const e = `${this.WA(A)}_${t}`;
625
- if (this.LA.has(e)) return this.LA.get(e);
626
- const s = this.KA(A);
627
- if (!s) return this.LA.set(e, 0), 0;
629
+ NA(A, t) {
630
+ const e = `${this.jA(A)}_${t}`;
631
+ 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;
628
634
  let r = 0;
629
- return s.format === 4 ? r = this.NA(t, s) : s.format === 12 && (r = this.ZA(t, s)), this.LA.set(e, r), r;
635
+ return s.format === 4 ? r = this.ZA(t, s) : s.format === 12 && (r = this.XA(t, s)), this.JA.set(e, r), r;
630
636
  }
631
- XA(A, t) {
637
+ qA(A, t) {
632
638
  const e = t.codePointAt(0);
633
- return e === void 0 ? 0 : this.jA(A, e);
639
+ return e === void 0 ? 0 : this.NA(A, e);
634
640
  }
635
- qA(A, t) {
641
+ At(A, t) {
636
642
  const e = A.hmtx;
637
643
  return e && e.aWidth && e.aWidth.length !== 0 ? t < e.aWidth.length ? e.aWidth[t] : e.aWidth[e.aWidth.length - 1] : 0;
638
644
  }
639
- At(A, t) {
645
+ tt(A, t) {
640
646
  const e = t / A.head.unitsPerEm, s = A.hhea.ascender * e, r = A.hhea.descender * e, i = A.hhea.lineGap * e;
641
647
  return { ascender: s, descender: r, lineGap: i, lineHeight: s - r + i, unitsPerEm: A.head.unitsPerEm, scale: e };
642
648
  }
643
- tt() {
644
- this.LA.clear(), this.JA.clear();
649
+ et() {
650
+ this.JA.clear(), this.KA.clear();
645
651
  }
646
- WA(A) {
647
- return `${A.HA}_${A.RA.length}`;
652
+ jA(A) {
653
+ return `${A.zA}_${A.HA.length}`;
648
654
  }
649
- NA(A, t) {
655
+ ZA(A, t) {
650
656
  const e = t.endCount.length;
651
657
  let s = -1;
652
658
  for (let r = 0; r < e; r++) if (A <= t.endCount[r]) {
@@ -664,7 +670,7 @@ class U {
664
670
  }
665
671
  return 0;
666
672
  }
667
- ZA(A, t) {
673
+ XA(A, t) {
668
674
  const e = t.groups.length / 3;
669
675
  for (let s = 0; s < e; s++) {
670
676
  const r = t.groups[3 * s], i = t.groups[3 * s + 1], B = t.groups[3 * s + 2];
@@ -675,43 +681,43 @@ class U {
675
681
  }
676
682
  class nA {
677
683
  constructor(A) {
678
- o(this, "et");
679
- this.et = A;
684
+ o(this, "st");
685
+ this.st = A;
680
686
  }
681
- st(A) {
687
+ rt(A) {
682
688
  var e;
683
689
  const t = [];
684
690
  return (e = A == null ? void 0 : A.cmap) != null && e.tables ? (A.cmap.tables.forEach((s) => {
685
691
  if (s.format === 4) {
686
- const r = this.rt(s);
692
+ const r = this.Bt(s);
687
693
  t.push(...r);
688
694
  } else if (s.format === 12) {
689
- const r = this.Bt(s);
695
+ const r = this.it(s);
690
696
  t.push(...r);
691
697
  }
692
698
  }), [...new Set(t)]) : [];
693
699
  }
694
- it(A, t) {
695
- return this.et.XA(A, t) > 0;
696
- }
697
700
  Qt(A, t) {
698
- for (const e of t) if (!this.it(A, e)) return !1;
699
- return !0;
701
+ return this.st.qA(A, t) > 0;
700
702
  }
701
703
  Et(A, t) {
702
- return t.filter((e) => this.it(A, e));
704
+ for (const e of t) if (!this.Qt(A, e)) return !1;
705
+ return !0;
706
+ }
707
+ ot(A, t) {
708
+ return t.filter((e) => this.Qt(A, e));
703
709
  }
704
710
  gt(A) {
705
- return A.filter((t) => this.ot(t));
711
+ return A.filter((t) => this.nt(t));
706
712
  }
707
- rt(A) {
713
+ Bt(A) {
708
714
  const t = [];
709
715
  if (!(A.startCount && A.endCount && A.idRangeOffset && A.idDelta)) return t;
710
716
  for (let e = 0; e < A.startCount.length; e++) {
711
717
  const s = A.startCount[e], r = A.endCount[e];
712
718
  if (s !== 65535 || r !== 65535) {
713
719
  for (let i = s; i <= r; i++)
714
- if (this.nt(A, i, e) > 0) try {
720
+ if (this.ht(A, i, e) > 0) try {
715
721
  const B = String.fromCodePoint(i);
716
722
  t.push(B);
717
723
  } catch {
@@ -720,7 +726,7 @@ class nA {
720
726
  }
721
727
  return t;
722
728
  }
723
- Bt(A) {
729
+ it(A) {
724
730
  const t = [];
725
731
  if (!A.groups) return t;
726
732
  for (let e = 0; e < A.groups.length; e += 3) {
@@ -734,7 +740,7 @@ class nA {
734
740
  }
735
741
  return t;
736
742
  }
737
- nt(A, t, e) {
743
+ ht(A, t, e) {
738
744
  if (A.idRangeOffset[e] === 0) return t + A.idDelta[e] & 65535;
739
745
  {
740
746
  const s = A.idRangeOffset[e] / 2 + (t - A.startCount[e]) - (A.startCount.length - e);
@@ -745,58 +751,58 @@ class nA {
745
751
  }
746
752
  return 0;
747
753
  }
748
- ot(A) {
754
+ nt(A) {
749
755
  const t = A.codePointAt(0) || 0;
750
756
  return !(t >= 0 && t <= 31 && t !== 9 && t !== 10 && t !== 13 || t >= 127 && t <= 159);
751
757
  }
752
758
  }
753
759
  class gA {
754
760
  constructor() {
755
- o(this, "ht");
761
+ o(this, "lt");
756
762
  const A = new U();
757
- this.ht = new nA(A);
763
+ this.lt = new nA(A);
758
764
  }
759
765
  extractCharacters(A) {
760
- return this.ht.st(A);
766
+ return this.lt.rt(A);
761
767
  }
762
768
  filterProblematicCharacters(A) {
763
- return this.ht.gt(A);
769
+ return this.lt.gt(A);
764
770
  }
765
771
  characterExists(A, t) {
766
- return this.ht.it(A, t);
772
+ return this.lt.Qt(A, t);
767
773
  }
768
774
  allCharactersExist(A, t) {
769
- return this.ht.Qt(A, t);
775
+ return this.lt.Et(A, t);
770
776
  }
771
777
  }
772
- class hA {
778
+ class aA {
773
779
  constructor(A) {
774
- o(this, "lt");
775
780
  o(this, "ct");
776
781
  o(this, "Dt");
777
782
  o(this, "Ct");
778
- this.Dt = A, this.Ct = new U(), this.lt = document.createElement("canvas"), this.ct = this.lt.getContext("2d", { willReadFrequently: !0, alpha: !1 });
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 });
779
785
  }
780
786
  createTextureAtlas(A, t, e, s) {
781
787
  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;
782
- this.ut(Q, n), this.Pt(A, t, i, e, g);
783
- const a = this.Dt.TA(Q, n, { filter: "nearest" });
784
- return a.update(this.lt), { framebuffer: a, columns: i, rows: B };
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 };
785
791
  }
786
- ut(A, t) {
787
- 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";
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";
788
794
  }
789
- Pt(A, t, e, s, r) {
795
+ It(A, t, e, s, r) {
790
796
  const i = s / r.head.unitsPerEm;
791
797
  for (let B = 0; B < A.length; B++) {
792
- const Q = B % e, n = Math.floor(B / e), g = A[B].character, a = this.It(r, g);
793
- if (!a) continue;
794
- const h = g.codePointAt(0) || 0, D = this.Ct.jA(r, h), 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;
795
- this.ft(a, y, b, i);
798
+ const Q = B % e, n = Math.floor(B / e), g = A[B].character, h = this.wt(r, g);
799
+ 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);
796
802
  }
797
803
  }
798
- It(A, t) {
799
- const e = t.codePointAt(0) || 0, s = this.Ct.jA(A, e);
804
+ wt(A, t) {
805
+ const e = t.codePointAt(0) || 0, s = this.ut.NA(A, e);
800
806
  if (s === 0) return null;
801
807
  if (A.glyf && A.glyf[s] !== null) return A.glyf[s];
802
808
  if (w && w.T && w.T.glyf && w.T.glyf.VA) {
@@ -805,90 +811,90 @@ class hA {
805
811
  }
806
812
  return null;
807
813
  }
808
- wt(A, t) {
814
+ ft(A, t) {
809
815
  const e = A.hmtx;
810
816
  return e && e.aWidth ? t < e.aWidth.length ? e.aWidth[t] : e.aWidth[e.aWidth.length - 1] : 0;
811
817
  }
812
- ft(A, t, e, s) {
818
+ dt(A, t, e, s) {
813
819
  if (!A || !A.xs || A.noc === 0) return;
814
820
  const { xs: r, ys: i, endPts: B, flags: Q } = A;
815
821
  if (!(r && i && B && Q)) return;
816
- this.ct.beginPath();
822
+ this.Dt.beginPath();
817
823
  let n = 0;
818
824
  for (let g = 0; g < B.length; g++) {
819
- const a = B[g];
820
- if (!(a < n)) {
821
- if (a >= n) {
822
- const h = t + r[n] * s, D = e - i[n] * s;
823
- this.ct.moveTo(h, D);
825
+ const h = B[g];
826
+ if (!(h < n)) {
827
+ if (h >= n) {
828
+ const a = t + r[n] * s, C = e - i[n] * s;
829
+ this.Dt.moveTo(a, C);
824
830
  let c = n + 1;
825
- for (; c <= a; )
831
+ for (; c <= h; )
826
832
  if (1 & Q[c]) {
827
833
  const l = t + r[c] * s, d = e - i[c] * s;
828
- this.ct.lineTo(l, d), c++;
834
+ this.Dt.lineTo(l, d), c++;
829
835
  } else {
830
836
  const l = t + r[c] * s, d = e - i[c] * s;
831
- let C = c + 1 > a ? n : c + 1;
832
- if (1 & Q[C]) {
833
- const P = t + r[C] * s, p = e - i[C] * s;
834
- this.ct.quadraticCurveTo(l, d, P, p), c = C + 1;
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;
835
841
  } else {
836
- const P = (l + (t + r[C] * s)) / 2, p = (d + (e - i[C] * s)) / 2;
837
- this.ct.quadraticCurveTo(l, d, P, p), c = C;
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;
838
844
  }
839
845
  }
840
- this.ct.closePath();
846
+ this.Dt.closePath();
841
847
  }
842
- n = a + 1;
848
+ n = h + 1;
843
849
  }
844
850
  }
845
- this.ct.fill();
851
+ this.Dt.fill();
846
852
  }
847
853
  }
848
- class aA {
854
+ class hA {
849
855
  constructor() {
850
- o(this, "et");
851
- this.et = new U();
856
+ o(this, "st");
857
+ this.st = new U();
852
858
  }
853
859
  calculateMaxGlyphDimensions(A, t, e) {
854
860
  let s = 0;
855
- const r = this.et.At(e, t), i = r.lineHeight;
861
+ const r = this.st.tt(e, t), i = r.lineHeight;
856
862
  for (const B of A) {
857
- const Q = this.et.XA(e, B);
863
+ const Q = this.st.qA(e, B);
858
864
  if (Q === 0) continue;
859
- const n = this.et.qA(e, Q) * r.scale;
865
+ const n = this.st.At(e, Q) * r.scale;
860
866
  s = Math.max(s, n);
861
867
  }
862
868
  return { width: Math.ceil(s), height: Math.ceil(i) };
863
869
  }
864
870
  getCharacterAdvanceWidth(A, t, e) {
865
- const s = this.et.At(e, t), r = this.et.XA(e, A);
866
- return this.et.qA(e, r) * s.scale;
871
+ const s = this.st.tt(e, t), r = this.st.qA(e, A);
872
+ return this.st.At(e, r) * s.scale;
867
873
  }
868
874
  getFontMetrics(A, t) {
869
- return this.et.At(t, A);
875
+ return this.st.tt(t, A);
870
876
  }
871
- tt() {
872
- this.et.tt();
877
+ et() {
878
+ this.st.et();
873
879
  }
874
880
  }
875
881
  class lA {
876
882
  constructor() {
877
- o(this, "Ct");
878
- this.Ct = new U();
883
+ o(this, "ut");
884
+ this.ut = new U();
879
885
  }
880
886
  createCharacterObjects(A, t) {
881
887
  return A.map((e, s) => {
882
- const r = e.codePointAt(0) || 0, i = this.dt(s);
888
+ const r = e.codePointAt(0) || 0, i = this._t(s);
883
889
  let B = 0;
884
890
  if (t.hmtx && t.hmtx.aWidth) {
885
- const Q = this.Ct.jA(t, r);
891
+ const Q = this.ut.NA(t, r);
886
892
  Q > 0 && t.hmtx.aWidth[Q] !== void 0 && (B = t.hmtx.aWidth[Q]);
887
893
  }
888
894
  return { character: e, unicode: r, color: i, advanceWidth: B };
889
895
  });
890
896
  }
891
- dt(A) {
897
+ _t(A) {
892
898
  return [A % 256, Math.floor(A / 256) % 256, Math.floor(A / 65536) % 256];
893
899
  }
894
900
  getCharacterColor(A, t) {
@@ -902,22 +908,22 @@ class lA {
902
908
  }
903
909
  class cA {
904
910
  constructor(A, t = 16) {
905
- o(this, "_t");
906
- o(this, "vt", []);
907
- o(this, "bt");
908
- o(this, "xt", 16);
909
- o(this, "yt", 0);
911
+ o(this, "vt");
912
+ o(this, "bt", []);
913
+ o(this, "xt");
914
+ o(this, "yt", 16);
910
915
  o(this, "Mt", 0);
911
- o(this, "Gt", { width: 0, height: 0 });
912
- o(this, "Ft");
913
- o(this, "$t", "UrsaFont");
914
- o(this, "Yt");
916
+ o(this, "Gt", 0);
917
+ o(this, "Ft", { width: 0, height: 0 });
918
+ o(this, "$t");
919
+ o(this, "Yt", "UrsaFont");
915
920
  o(this, "Tt");
916
921
  o(this, "St");
917
922
  o(this, "Ot");
918
- this.xt = t, this.Yt = new gA(), this.Tt = new hA(A), this.St = new aA(), this.Ot = new lA();
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();
919
925
  }
920
- async Ut(A) {
926
+ async kt(A) {
921
927
  let t;
922
928
  if (A) {
923
929
  const e = await fetch(A);
@@ -926,121 +932,121 @@ class cA {
926
932
  } else
927
933
  t = await (await fetch(`data:font/truetype;charset=utf-8;base64,AAEAAAAKAIAAAwAgT1MvMs+QEyQAAAEoAAAAYGNtYXAg7yVJAAAFjAAACSBnbHlmuHLTdAAAErQAAGi0aGVhZFvXdUwAAACsAAAANmhoZWELAQUCAAAA5AAAACRobXR4BACDgAAAAYgAAAQEbG9jYQAy54AAAA6sAAAECG1heHABIgCCAAABCAAAACBuYW1lVs/OSgAAe2gAAAOicG9zdABpADQAAH8MAAAAIAABAAAAAQAAzOWHqV8PPPUAAAQAAAAAAHxiGCcAAAAAfGIYJwAAAAAEAAQAAAAACAACAAEAAAAAAAEAAAQAAAAAAAQAAAAAAAcAAAEAAAAAAAAAAAAAAAAAAAEBAAEAAAEBAIAAIAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgQAAZAABQAEAgACAAAAAAACAAIAAAACAAAzAMwAAAAABAAAAAAAAACAAACLAABw4wAAAAAAAAAAWUFMLgBAACAmawQAAAAAAAQAAAAAAAFRAAAAAAMABAAAAAAgAAAEAAAABAAAAAQAAAAEAAGABAABAAQAAIAEAACABAAAgAQAAIAEAAGABAABAAQAAQAEAACABAABAAQAAIAEAACABAABAAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAABAAQAAIAEAAEABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAABAAQAAIAEAAEABAAAgAQAAIAEAAEABAAAgAQAAIAEAACABAAAgAQAAIAEAAEABAAAgAQAAIAEAAGABAAAgAQAAIAEAAGABAAAgAQAAIAEAACABAAAgAQAAIAEAAEABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAABgAQAAQAEAACABAAAAAQAAgAEAACABAAAgAQAAIAEAACABAACAAQAAAAEAAIABAABgAQAAgAEAACABAAAgAQAAAAEAACABAAAAAQAAAAEAAAABAAAAAQAAAAEAAIABAADAAQAAAAEAAAABAAAgAQAAYAEAAAABAAAAAQAAIAEAAAABAAAgAQAAIAEAACABAAAAAQAAIAEAAAABAAAAAQAAIAEAAGABAAAAAQAAAAEAAAABAAAAAQAAIAEAACABAAAAAQAAIAEAACABAAAAAQAAIAEAACABAAAgAQAAAAEAACABAAAAAQAAAAEAAEABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAACAAQAAIAEAAAABAAAAAQAAAAEAACABAABAAQAAQAEAAEABAABAAQAAIAEAACABAAAAAQAAAAEAAAABAABAAQAAAAEAACABAAAAAQAAAAEAAIABAAAgAQAAAAEAAAABAAAAAQAAAAEAAAABAABgAQAAAAEAAAABAABgAQAAAAEAAGABAABgAQAAYAEAAAABAAAAAQAAAAEAAAABAABgAQAAYAEAAAABAAAAAQAAAAEAAAABAABgAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAABgAQAAAAEAAGABAABgAQAAAAEAAAABAABgAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAYAEAAAABAAAAAQAAQAEAACABAAAAAQAAAAEAAAABAAAgAQAAIAEAACABAAAgAQAAIAEAAAABAABAAQAAIAEAACABAAAgAQAAIAEAAEABAAAgAQAAIAEAACABAAAgAQAAIAEAAEABAAAgAAAAAIAAAADAAAAFAADAAEAAASaAAQEhgAAAJ4AgAAGAB4AfgCjAKUApwCsALIAtwC9AL8AxwDJANEA1gDcAOIA7wD0APcA/AD/AZIDkwOYA6MDpgOpA7EDtQPAA8QDxiAiIDwgfyCnIZUhqCIaIh8iKSJIImEiZSMCIxAjISUAJQIlDCUQJRQlGCUcJSQlLCU0JTwlbCWAJYQliCWMJZMloSWsJbIluiW8JcQlyyXZJjwmQCZCJmAmYyZmJmv//wAAACAAoQClAKcAqgCwALUAugC/AMQAyQDRANYA3ADfAOQA8QD2APkA/wGSA5MDmAOjA6YDqQOxA7QDwAPDA8YgIiA8IH8gpyGQIagiGSIeIikiSCJhImQjAiMQIyAlACUCJQwlECUUJRglHCUkJSwlNCU8JVAlgCWEJYgljCWQJaAlrCWyJbolvCXEJcsl2CY6JkAmQiZgJmMmZSZq////4v/A/7//vv+8/7n/t/+1/7T/sP+v/6j/pP+f/53/nP+b/5r/mf+X/wX9Bf0B/Pf89fzz/Oz86vzg/N783eCC4GngJ+AA3xjfBt6W3pPeit5s3lTeUt223andmtu827vbstuv26zbqdum25/bmNuR24rbd9tk22HbXttb21jbTNtC2z3bNts12y7bKNsc2rzaudq42pvamdqY2pUAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEhgAAAJ4AgAAGAB4AfgCjAKUApwCsALIAtwC9AL8AxwDJANEA1gDcAOIA7wD0APcA/AD/AZIDkwOYA6MDpgOpA7EDtQPAA8QDxiAiIDwgfyCnIZUhqCIaIh8iKSJIImEiZSMCIxAjISUAJQIlDCUQJRQlGCUcJSQlLCU0JTwlbCWAJYQliCWMJZMloSWsJbIluiW8JcQlyyXZJjwmQCZCJmAmYyZmJmv//wAAACAAoQClAKcAqgCwALUAugC/AMQAyQDRANYA3ADfAOQA8QD2APkA/wGSA5MDmAOjA6YDqQOxA7QDwAPDA8YgIiA8IH8gpyGQIagiGSIeIikiSCJhImQjAiMQIyAlACUCJQwlECUUJRglHCUkJSwlNCU8JVAlgCWEJYgljCWQJaAlrCWyJbolvCXEJcsl2CY6JkAmQiZgJmMmZSZq////4v/A/7//vv+8/7n/t/+1/7T/sP+v/6j/pP+f/53/nP+b/5r/mf+X/wX9Bf0B/Pf89fzz/Oz86vzg/N783eCC4GngJ+AA3xjfBt6W3pPeit5s3lTeUt223andmtu827vbstuv26zbqdum25/bmNuR24rbd9tk22HbXttb21jbTNtC2z3bNts12y7bKNsc2rzaudq42pvamdqY2pUAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAABwAAABIAAAAegAAALwAAADuAAAA9wAAARQAAAExAAABWgAAAW0AAAF7AAABhAAAAY0AAAGvAAAB0gAAAecAAAIOAAACNQAAAk8AAAJsAAACjgAAAqYAAALOAAAC5gAAAvQAAAMHAAADLgAAAzwAAANjAAADhQAAA6UAAAPCAAAD4AAAA/0AAAQaAAAEPAAABEwAAARrAAAEfgAABJEAAASpAAAE0AAABNsAAAT4AAAFFQAABS0AAAVDAAAFZQAABYcAAAWuAAAFvAAABc8AAAXnAAAGBAAABisAAAZDAAAGZQAABnMAAAaVAAAGowAABsUAAAbOAAAG3gAABvYAAAcMAAAHKQAABz8AAAdaAAAHbQAAB4oAAAedAAAHqwAAB8MAAAfgAAAH7gAACAsAAAgjAAAIOwAACFEAAAhsAAAIfAAACJkAAAi2AAAIzgAACOYAAAkDAAAJKgAACUIAAAlfAAAJfAAACYUAAAmiAAAJugAACdcAAAngAAAKBwAACi4AAApgAAAKeQAACokAAAq4AAAKwQAACs8AAArYAAAK8QAACw4AAAshAAALSAAAC1gAAAt1AAALjQAAC5sAAAu0AAALzQAAC9YAAAvhAAAL6gAAC/4AAAwRAAAMJAAADDQAAAxHAAAMUgAADGoAAAyCAAAMlwAADKUAAAy/AAAM0gAADN0AAAz8AAANDwAADSkAAA0yAAANTAAADVUAAA1jAAANfAAADYcAAA2VAAANqQAADcIAAA3mAAAN7wAADg4AAA4XAAAOQQAADloAAA5qAAAOcwAADoYAAA6PAAAOogAADrIAAA7FAAAPCwAADxsAAA8uAAAPRwAAD1AAAA+HAAAPoAAAD6kAAA/CAAAP3wAAD/wAABAZAAAQNgAAEE4AABBfAAAQlQAAEJ4AABCxAAAQugAAEOEAABEnAAARUwAAEWYAABF+AAARlgAAEbgAABJrAAASfgAAEpEAABKpAAASwQAAEswAABLcAAATCAAAExMAABMrAAATQwAAE1sAABNzAAATmgAAE8YAABPeAAAT5wAAE/AAABQSAAAUKgAAFEIAABRaAAAUYwAAFGwAABSOAAAUngAAFLsAABTYAAAU/wAAFSEAABVNAAAVZQAAFX0AABWVAAAVngAAFacAABXTAAAWBAAAFg0AABYvAAAWOgAAFkUAABZxAAAWhAAAFpIAABagAAAWrgAAFrwAABbVAAAW7QAAFxkAABd0AAAXzwAAF/wAABgUAAAYJQAAGC4AABhBAAAYXgAAGHEAABiYAAAYvAAAGOAAABkYAAAZPwAAGWYAABmNAAAZtAAAGdYAABn9AAAaEAAAGi0AAIBgACAAoAEAAADAAcAAAEBAQEBAQEBAYABAAAA/wAAAAEAAAD/AAQAAAD+AAAA/4AAAP8AAAAAAgEAAoADgAQAAAMABwAAAQEBAQEBAQEBAAEAAAD/AAGAAQAAAP8ABAAAAP6AAAABgAAA/oAAAAACAIAAgAQAA4AAGwAfAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQAAAACAAAABAAAAAIAAAP+AAAAAgAAA/4AAAP8AAAD/gAAA/wAAAP+AAAAAgAAA/4AAAACAAQAAAACAAAADgAAA/4AAAACAAAD/gAAA/4AAAP8AAAD/gAAA/4AAAACAAAD/gAAAAIAAAACAAAABAAAAAIAAAP+A/wAAAAEAAAMAgACABAAEAAAbAB8AIwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgAAgAAAAQAAAP8AAAABAAAAAIAAAP+AAAD/AAAA/4AAAP8AAAABAAAA/wAAAP+AAAAAgAAAAQD/gAAAAIAAAACAAAAAgAAABAAAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAD/gP+AAAAAgP8A/4AAAACAAAAABQCAAIAEAAOAAAUAHQAjACkALwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAAA/4AAAP+AAgABAAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAIAAAACA/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
928
934
  `)).arrayBuffer();
929
- await this.kt(t), this._t = w.parse(t)[0], await this.Vt();
935
+ await this.Rt(t), this.vt = w.parse(t)[0], await this.Vt();
930
936
  }
931
- Rt(A) {
932
- if (A === void 0) return this.xt;
933
- this.xt = A, this.Gt = this.St.calculateMaxGlyphDimensions(this.vt.map((e) => e.character), this.xt, this._t);
934
- const t = this.Tt.createTextureAtlas(this.vt, this.Gt, this.xt, this._t);
935
- this.bt = t.framebuffer, this.yt = t.columns, this.Mt = t.rows;
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;
936
942
  }
937
- async Ht(A) {
943
+ async zt(A) {
938
944
  try {
939
945
  const t = await fetch(A);
940
946
  if (!t.ok) throw new I(`Failed to load font file: ${t.status} ${t.statusText}`);
941
947
  const e = await t.arrayBuffer();
942
- await this.kt(e);
948
+ await this.Rt(e);
943
949
  const s = w.parse(e);
944
950
  if (!s || s.length === 0) throw Error("Failed to parse font file");
945
- this._t = s[0], await this.Vt();
951
+ this.vt = s[0], await this.Vt();
946
952
  } catch (t) {
947
953
  throw new I("Failed to load font: " + (t instanceof Error ? t.message : "Unknown error"), t);
948
954
  }
949
955
  }
950
- async kt(A) {
956
+ async Rt(A) {
951
957
  const t = Date.now();
952
- this.$t = this.$t === "UrsaFont" ? "UrsaFont" : "CustomFont_" + t, this.Ft = new FontFace(this.$t, A), await this.Ft.load(), document.fonts.add(this.Ft);
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);
953
959
  }
954
960
  async Vt() {
955
- const A = this.Yt.extractCharacters(this._t), t = this.Yt.filterProblematicCharacters(A);
956
- this.vt = this.Ot.createCharacterObjects(t, this._t), this.Gt = this.St.calculateMaxGlyphDimensions(t, this.xt, this._t);
957
- const e = this.Tt.createTextureAtlas(this.vt, this.Gt, this.xt, this._t);
958
- this.bt = e.framebuffer, this.yt = e.columns, this.Mt = e.rows;
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;
959
965
  }
960
966
  getCharacterColor(A) {
961
- return this.Ot.getCharacterColor(A, this.vt);
967
+ return this.Ut.getCharacterColor(A, this.bt);
962
968
  }
963
969
  getCharacterColors(A) {
964
- return this.Ot.getCharacterColors(A, this.vt);
970
+ return this.Ut.getCharacterColors(A, this.bt);
965
971
  }
966
972
  hasAllCharacters(A) {
967
973
  if (typeof A != "string" || A.length === 0) return !1;
968
- const t = new Set(this.vt.map((e) => e.character));
974
+ const t = new Set(this.bt.map((e) => e.character));
969
975
  for (const e of A) if (!t.has(e)) return !1;
970
976
  return !0;
971
977
  }
972
978
  S() {
973
- this.bt.S(), document.fonts.delete(this.Ft);
979
+ this.xt.S(), document.fonts.delete(this.$t);
974
980
  }
975
981
  get fontFramebuffer() {
976
- return this.bt;
982
+ return this.xt;
977
983
  }
978
984
  get characters() {
979
- return this.vt;
985
+ return this.bt;
980
986
  }
981
987
  get textureColumns() {
982
- return this.yt;
988
+ return this.Mt;
983
989
  }
984
990
  get textureRows() {
985
- return this.Mt;
991
+ return this.Gt;
986
992
  }
987
993
  get maxGlyphDimensions() {
988
- return this.Gt;
994
+ return this.Ft;
989
995
  }
990
996
  get fontSize() {
991
- return this.xt;
997
+ return this.yt;
992
998
  }
993
999
  get font() {
994
- return this._t;
1000
+ return this.vt;
995
1001
  }
996
1002
  }
997
- class DA {
1003
+ class CA {
998
1004
  constructor(A, t, e) {
999
- o(this, "zt");
1000
1005
  o(this, "Lt");
1006
+ o(this, "Jt");
1001
1007
  o(this, "p");
1002
1008
  o(this, "_");
1003
- o(this, "Jt");
1004
1009
  o(this, "Kt");
1005
- o(this, "Wt", !1);
1006
- o(this, "jt");
1010
+ o(this, "Wt");
1011
+ o(this, "jt", !1);
1007
1012
  o(this, "Nt");
1008
1013
  o(this, "Zt");
1009
- this.jt = A, this.Nt = t, this.Zt = e, this.xA();
1014
+ o(this, "Xt");
1015
+ this.Nt = A, this.Zt = t, this.Xt = e, this.xA();
1010
1016
  }
1011
1017
  xA() {
1012
- this.Wt || (this.zt = Math.floor(this.jt.width / this.Nt), this.Lt = Math.floor(this.jt.height / this.Zt)), this.Xt();
1013
- }
1014
- Xt() {
1015
- 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);
1018
+ this.jt || (this.Lt = Math.floor(this.Nt.width / this.Zt), this.Jt = Math.floor(this.Nt.height / this.Xt)), this.qt();
1016
1019
  }
1017
- qt(A, t) {
1018
- this.Nt = A, this.Zt = t, this.xA();
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);
1019
1022
  }
1020
1023
  Ae(A, t) {
1021
- this.Wt = !0, this.zt = A, this.Lt = t, this.Xt();
1024
+ this.Zt = A, this.Xt = t, this.xA();
1022
1025
  }
1023
- te() {
1024
- this.Wt = !1, this.xA();
1026
+ te(A, t) {
1027
+ this.jt = !0, this.Lt = A, this.Jt = t, this.qt();
1025
1028
  }
1026
1029
  ee() {
1027
- this.Wt ? this.Xt() : this.xA();
1030
+ this.jt = !1, this.xA();
1031
+ }
1032
+ se() {
1033
+ this.jt ? this.qt() : this.xA();
1028
1034
  }
1029
- se(A) {
1030
- if (A === void 0) return this.Wt;
1031
- this.Wt = A;
1035
+ re(A) {
1036
+ if (A === void 0) return this.jt;
1037
+ this.jt = A;
1032
1038
  }
1033
1039
  get cellWidth() {
1034
- return this.Nt;
1040
+ return this.Zt;
1035
1041
  }
1036
1042
  get cellHeight() {
1037
- return this.Zt;
1043
+ return this.Xt;
1038
1044
  }
1039
1045
  get cols() {
1040
- return this.zt;
1046
+ return this.Lt;
1041
1047
  }
1042
1048
  get rows() {
1043
- return this.Lt;
1049
+ return this.Jt;
1044
1050
  }
1045
1051
  get width() {
1046
1052
  return this.p;
@@ -1049,109 +1055,109 @@ class DA {
1049
1055
  return this._;
1050
1056
  }
1051
1057
  get offsetX() {
1052
- return this.Jt;
1058
+ return this.Kt;
1053
1059
  }
1054
1060
  get offsetY() {
1055
- return this.Kt;
1061
+ return this.Wt;
1056
1062
  }
1057
1063
  }
1058
- class CA {
1064
+ class DA {
1059
1065
  constructor(A, t = !1, e = {}) {
1060
- o(this, "jt");
1061
- o(this, "re");
1066
+ o(this, "Nt");
1062
1067
  o(this, "Be");
1063
1068
  o(this, "ie");
1069
+ o(this, "Qe");
1064
1070
  o(this, "onTransformChange");
1065
- this.re = A, this.Be = t, this.jt = this.Qe(e.width, e.height), t && this.setupTransformObserver();
1071
+ this.Be = A, this.ie = t, this.Nt = this.Ee(e.width, e.height), t && this.setupTransformObserver();
1066
1072
  }
1067
- Qe(A, t) {
1073
+ Ee(A, t) {
1068
1074
  var s;
1069
1075
  const e = document.createElement("canvas");
1070
- if (e.className = "textmodeCanvas", e.style.imageRendering = "pixelated", this.Be) e.width = A || 800, e.height = t || 600, document.body.appendChild(e);
1076
+ if (e.className = "textmodeCanvas", e.style.imageRendering = "pixelated", this.ie) e.width = A || 800, e.height = t || 600, document.body.appendChild(e);
1071
1077
  else {
1072
- const r = this.re.getBoundingClientRect();
1078
+ const r = this.Be.getBoundingClientRect();
1073
1079
  let i = Math.round(r.width), B = Math.round(r.height);
1074
- if (this.re instanceof HTMLVideoElement) {
1075
- const g = this.re;
1080
+ if (this.Be instanceof HTMLVideoElement) {
1081
+ const g = this.Be;
1076
1082
  (i === 0 || B === 0) && g.videoWidth > 0 && g.videoHeight > 0 && (i = g.videoWidth, B = g.videoHeight);
1077
1083
  }
1078
1084
  e.width = i, e.height = B, e.style.position = "absolute", e.style.pointerEvents = "none";
1079
- const Q = window.getComputedStyle(this.re);
1085
+ const Q = window.getComputedStyle(this.Be);
1080
1086
  let n = parseInt(Q.zIndex || "0", 10);
1081
- isNaN(n) && (n = 0), e.style.zIndex = "" + (n + 1), this.Ee(e), (s = this.re.parentNode) == null || s.insertBefore(e, this.re.nextSibling);
1087
+ isNaN(n) && (n = 0), e.style.zIndex = "" + (n + 1), this.oe(e), (s = this.Be.parentNode) == null || s.insertBefore(e, this.Be.nextSibling);
1082
1088
  }
1083
1089
  return e;
1084
1090
  }
1085
- Ee(A) {
1086
- const t = this.re.getBoundingClientRect();
1087
- let e = this.re.offsetParent;
1091
+ oe(A) {
1092
+ const t = this.Be.getBoundingClientRect();
1093
+ let e = this.Be.offsetParent;
1088
1094
  if (e && e !== document.body) {
1089
1095
  const s = e.getBoundingClientRect();
1090
1096
  A.style.top = t.top - s.top + "px", A.style.left = t.left - s.left + "px";
1091
1097
  } else A.style.top = t.top + window.scrollY + "px", A.style.left = t.left + window.scrollX + "px";
1092
1098
  }
1093
- ee(A, t) {
1094
- if (this.Be) this.jt.width = A ?? this.jt.width, this.jt.height = t ?? this.jt.height;
1099
+ se(A, t) {
1100
+ if (this.ie) this.Nt.width = A ?? this.Nt.width, this.Nt.height = t ?? this.Nt.height;
1095
1101
  else {
1096
- const e = this.re.getBoundingClientRect();
1102
+ const e = this.Be.getBoundingClientRect();
1097
1103
  let s = Math.round(e.width), r = Math.round(e.height);
1098
- if (this.re instanceof HTMLVideoElement) {
1099
- const i = this.re;
1104
+ if (this.Be instanceof HTMLVideoElement) {
1105
+ const i = this.Be;
1100
1106
  (s === 0 || r === 0) && i.videoWidth > 0 && i.videoHeight > 0 && (s = i.videoWidth, r = i.videoHeight);
1101
1107
  }
1102
- this.jt.width = s, this.jt.height = r, this.Ee(this.jt);
1108
+ this.Nt.width = s, this.Nt.height = r, this.oe(this.Nt);
1103
1109
  }
1104
1110
  }
1105
1111
  ge() {
1106
- 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);
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);
1107
1113
  if (!t) throw new I("WebGL context could not be created. Ensure your browser supports WebGL.");
1108
1114
  return t;
1109
1115
  }
1110
1116
  setupTransformObserver() {
1111
- this.ie = new ResizeObserver((A) => {
1117
+ this.Qe = new ResizeObserver((A) => {
1112
1118
  for (const t of A) {
1113
1119
  const e = t.contentRect;
1114
- !this.onTransformChange || Math.round(e.width) === this.jt.width && Math.round(e.height) === this.jt.height || this.onTransformChange();
1120
+ !this.onTransformChange || Math.round(e.width) === this.Nt.width && Math.round(e.height) === this.Nt.height || this.onTransformChange();
1115
1121
  }
1116
- }), this.ie.observe(this.jt);
1122
+ }), this.Qe.observe(this.Nt);
1117
1123
  }
1118
1124
  S() {
1119
- this.ie && this.ie.disconnect();
1120
- const A = this.jt.getContext("webgl") || this.jt.getContext("webgl2");
1125
+ this.Qe && this.Qe.disconnect();
1126
+ const A = this.Nt.getContext("webgl") || this.Nt.getContext("webgl2");
1121
1127
  if (A) {
1122
1128
  const t = A.getExtension("WEBGL_lose_context");
1123
1129
  t && t.loseContext();
1124
1130
  }
1125
- this.jt.parentNode && this.jt.parentNode.removeChild(this.jt);
1131
+ this.Nt.parentNode && this.Nt.parentNode.removeChild(this.Nt);
1126
1132
  }
1127
1133
  get canvas() {
1128
- return this.jt;
1134
+ return this.Nt;
1129
1135
  }
1130
1136
  get width() {
1131
- return this.jt.width;
1137
+ return this.Nt.width;
1132
1138
  }
1133
1139
  get height() {
1134
- return this.jt.height;
1140
+ return this.Nt.height;
1135
1141
  }
1136
1142
  }
1137
- class M {
1143
+ class F {
1138
1144
  constructor(A, t, e, s = {}) {
1139
- o(this, "Dt");
1140
- o(this, "oe");
1145
+ o(this, "Ct");
1141
1146
  o(this, "ne");
1142
1147
  o(this, "ae");
1143
1148
  o(this, "he");
1144
1149
  o(this, "le");
1145
1150
  o(this, "ce");
1146
1151
  o(this, "De");
1152
+ o(this, "Ce");
1147
1153
  o(this, "h");
1148
- this.Dt = A, this.oe = t, this.ne = e, this.h = s;
1149
- const r = this.ne.cols, i = this.ne.rows;
1150
- this.ae = this.Dt.TA(r, i), this.he = this.Dt.TA(r, i), this.le = this.Dt.TA(r, i), this.ce = this.Dt.TA(r, i), this.De = this.Dt.TA(r, i);
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);
1151
1157
  }
1152
- ee() {
1153
- const A = this.ne.cols, t = this.ne.rows;
1154
- 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);
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);
1155
1161
  }
1156
1162
  enabled(A) {
1157
1163
  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);
@@ -1163,22 +1169,22 @@ class M {
1163
1169
  this.enabled(!1);
1164
1170
  }
1165
1171
  S() {
1166
- this.ae.S(), this.he.S(), this.le.S(), this.ce.S(), this.De.S();
1172
+ this.he.S(), this.le.S(), this.ce.S(), this.De.S(), this.Ce.S();
1167
1173
  }
1168
1174
  get characterFramebuffer() {
1169
- return this.ae;
1175
+ return this.he;
1170
1176
  }
1171
1177
  get primaryColorFramebuffer() {
1172
- return this.he;
1178
+ return this.le;
1173
1179
  }
1174
1180
  get secondaryColorFramebuffer() {
1175
- return this.le;
1181
+ return this.ce;
1176
1182
  }
1177
1183
  get rotationFramebuffer() {
1178
- return this.ce;
1184
+ return this.De;
1179
1185
  }
1180
1186
  get transformFramebuffer() {
1181
- return this.De;
1187
+ return this.Ce;
1182
1188
  }
1183
1189
  get options() {
1184
1190
  return this.h;
@@ -1187,27 +1193,27 @@ class M {
1187
1193
  class uA {
1188
1194
  constructor(A, t) {
1189
1195
  o(this, "I");
1190
- o(this, "Dt");
1191
- o(this, "Ce");
1192
- this.Dt = A, this.Ce = t;
1193
- const e = Math.max(this.Ce.length, 1);
1194
- this.I = this.Dt.TA(e, 1), this.ue();
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();
1195
1201
  }
1196
- ue() {
1197
- const A = this.Ce.length;
1202
+ Pe() {
1203
+ const A = this.ue.length;
1198
1204
  this.I.width !== A && this.I.resize(A, 1);
1199
1205
  const t = new Uint8Array(1 * A * 4);
1200
1206
  for (let e = 0; e < A; e++) {
1201
- const s = this.Ce[e], r = 4 * e;
1207
+ const s = this.ue[e], r = 4 * e;
1202
1208
  t[r] = s[0], t[r + 1] = s[1], t[r + 2] = s[2], t[r + 3] = 255;
1203
1209
  }
1204
1210
  this.I.updatePixels(t, A, 1);
1205
1211
  }
1206
1212
  setColors(A) {
1207
- this.Ce = A, this.ue();
1213
+ this.ue = A, this.Pe();
1208
1214
  }
1209
1215
  get colors() {
1210
- return this.Ce;
1216
+ return this.ue;
1211
1217
  }
1212
1218
  get framebuffer() {
1213
1219
  return this.I;
@@ -1216,31 +1222,31 @@ class uA {
1216
1222
  return this.I.texture;
1217
1223
  }
1218
1224
  }
1219
- class O extends M {
1225
+ class O extends F {
1220
1226
  constructor(t, e, s, r = {}) {
1221
1227
  super(t, e, s, r);
1222
- o(this, "Pe");
1223
- this.Pe = new uA(this.Dt, this.oe.getCharacterColors(" .:-=+*%@#"));
1228
+ o(this, "Ie");
1229
+ this.Ie = new uA(this.Ct, this.ne.getCharacterColors(" .:-=+*%@#"));
1224
1230
  }
1225
1231
  characters(t) {
1226
- u.C(this.oe.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.oe.getCharacterColors(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)));
1227
1233
  }
1228
1234
  characterColor(t, e, s, r = 255) {
1229
- const i = this.Ie(t, "characterColor", e, s, r);
1235
+ const i = this.we(t, "characterColor", e, s, r);
1230
1236
  i && (this.h.characterColor = i);
1231
1237
  }
1232
1238
  characterColorMode(t) {
1233
- this.we(t, "characterColorMode");
1239
+ this.fe(t, "characterColorMode");
1234
1240
  }
1235
1241
  cellColor(t, e, s, r = 255) {
1236
- const i = this.Ie(t, "cellColor", e, s, r);
1242
+ const i = this.we(t, "cellColor", e, s, r);
1237
1243
  i && (this.h.cellColor = i);
1238
1244
  }
1239
1245
  cellColorMode(t) {
1240
- this.we(t, "cellColorMode");
1246
+ this.fe(t, "cellColorMode");
1241
1247
  }
1242
1248
  invert(t) {
1243
- this.fe(t, "invert", "Invert");
1249
+ this.de(t, "invert", "Invert");
1244
1250
  }
1245
1251
  rotation(t) {
1246
1252
  if (!u.C(typeof t == "number", "Rotation angle must be a number.", { method: "rotation", providedValue: t })) return;
@@ -1249,27 +1255,27 @@ class O extends M {
1249
1255
  this.h.rotation = [s, r, 0, 1];
1250
1256
  }
1251
1257
  flipHorizontally(t) {
1252
- this.fe(t, "flipHorizontally", "Flip horizontally");
1258
+ this.de(t, "flipHorizontally", "Flip horizontally");
1253
1259
  }
1254
1260
  flipVertically(t) {
1255
- this.fe(t, "flipVertically", "Flip vertically");
1261
+ this.de(t, "flipVertically", "Flip vertically");
1256
1262
  }
1257
- Ie(t, e, s, r, i = 255) {
1263
+ we(t, e, s, r, i = 255) {
1258
1264
  let B, Q, n, g;
1259
1265
  if (typeof t == "string") {
1260
- const a = this.de(t);
1261
- if (!a) return u.C(!1, "Invalid hex color format. Use '#FF0000', '#F00', 'FF0000', or 'F00'.", { method: e, providedValue: t }), null;
1262
- [B, Q, n, g] = a;
1263
- } 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((a) => a >= 0 && a <= 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;
1266
+ const h = this.me(t);
1267
+ if (!h) return u.C(!1, "Invalid hex color format. Use '#FF0000', '#F00', 'FF0000', or 'F00'.", { method: e, providedValue: t }), null;
1268
+ [B, Q, n, g] = h;
1269
+ } 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;
1264
1270
  return [B / 255, Q / 255, n / 255, g / 255];
1265
1271
  }
1266
- we(t, e) {
1272
+ fe(t, e) {
1267
1273
  u.C(["sampled", "fixed"].includes(t), "Invalid color mode. Must be 'sampled' or 'fixed'.", { method: e, providedValue: t }) && (this.h[e] = t);
1268
1274
  }
1269
- fe(t, e, s) {
1275
+ de(t, e, s) {
1270
1276
  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);
1271
1277
  }
1272
- de(t) {
1278
+ me(t) {
1273
1279
  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;
1274
1280
  }
1275
1281
  }
@@ -1315,240 +1321,240 @@ void main() {\r
1315
1321
  class S extends O {
1316
1322
  constructor(t, e, s) {
1317
1323
  super(t, e, s, { ...PA });
1318
- o(this, "me");
1319
1324
  o(this, "pe");
1320
1325
  o(this, "_e");
1321
1326
  o(this, "ve");
1322
1327
  o(this, "be");
1323
1328
  o(this, "xe");
1324
- 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.TA(this.ne.cols, this.ne.rows);
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);
1325
1331
  }
1326
- ye(t) {
1327
- const e = this.ne.cols, s = this.ne.rows;
1328
- this.xe.begin(), this.Dt.OA(), this.Dt.IA(this.me), this.Dt.GA("u_sketchTexture", t), this.Dt.GA("u_gridCellDimensions", [e, s]), this.Dt.GA("u_brightnessRange", this.h.brightnessRange), this.Dt.FA(0, 0, e, s), this.xe.end(), this.he.begin(), this.Dt.OA(), this.Dt.IA(this.pe), this.Dt.GA("u_sampleTexture", this.xe), this.Dt.GA("u_fillColor", this.h.characterColor), this.Dt.GA("u_useFixedColor", this.h.characterColorMode === "fixed"), this.Dt.FA(0, 0, e, s), this.he.end(), this.le.begin(), this.Dt.OA(), this.Dt.IA(this.pe), this.Dt.GA("u_sampleTexture", this.xe), this.Dt.GA("u_fillColor", this.h.cellColor), this.Dt.GA("u_useFixedColor", this.h.cellColorMode === "fixed"), this.Dt.FA(0, 0, e, s), this.le.end(), this.De.begin(), this.Dt.OA(), this.Dt.IA(this.ve), this.Dt.GA("u_sampleTexture", this.xe), this.Dt.GA("u_invert", this.h.invert), this.Dt.GA("u_flipHorizontally", this.h.flipHorizontally), this.Dt.GA("u_flipVertically", this.h.flipVertically), this.Dt.FA(0, 0, e, s), this.De.end(), this.ce.begin(), this.Dt.OA(), this.Dt.IA(this.be), this.Dt.GA("u_sampleTexture", this.xe), this.Dt.GA("u_rotationColor", this.h.rotation), this.Dt.FA(0, 0, e, s), this.ce.end(), this.ae.begin(), this.Dt.OA(), this.Dt.IA(this._e), this.Dt.GA("u_colorSampleFramebuffer", this.xe), this.Dt.GA("u_charPaletteTexture", this.Pe.texture), this.Dt.GA("u_charPaletteSize", [this.Pe.colors.length, 1]), this.Dt.GA("u_brightnessRange", this.h.brightnessRange), this.Dt.FA(0, 0, e, s), this.ae.end();
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();
1329
1335
  }
1330
- ee() {
1331
- super.ee(), this.xe.resize(this.ne.cols, this.ne.rows);
1336
+ se() {
1337
+ super.se(), this.ye.resize(this.ae.cols, this.ae.rows);
1332
1338
  }
1333
1339
  brightnessRange(t) {
1334
1340
  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);
1335
1341
  }
1336
1342
  }
1337
- const OA = Object.freeze(Object.defineProperty({ __proto__: null, TextmodeBrightnessConverter: S, TextmodeConverter: M, TextmodeFeatureConverter: O }, Symbol.toStringTag, { value: "Module" }));
1343
+ const OA = Object.freeze(Object.defineProperty({ __proto__: null, TextmodeBrightnessConverter: S, TextmodeConverter: F, TextmodeFeatureConverter: O }, Symbol.toStringTag, { value: "Module" }));
1338
1344
  class dA {
1339
1345
  constructor(A, t, e) {
1340
- o(this, "Dt");
1341
- o(this, "_t");
1342
- o(this, "ne");
1343
- o(this, "Me");
1346
+ o(this, "Ct");
1347
+ o(this, "vt");
1348
+ o(this, "ae");
1344
1349
  o(this, "Ge");
1345
1350
  o(this, "Fe");
1346
1351
  o(this, "$e");
1347
1352
  o(this, "Ye");
1348
- o(this, "ae");
1353
+ o(this, "Te");
1349
1354
  o(this, "he");
1350
1355
  o(this, "le");
1351
1356
  o(this, "ce");
1352
1357
  o(this, "De");
1353
- this.Dt = A, this._t = t, this.ne = e, this.Ye = this.Dt.yA(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 S(A, t, e), this.Fe = new M(A, t, e), this.Me = [this.Ge, this.Fe], this.ae = this.Dt.TA(e.cols, e.rows), this.he = this.Dt.TA(e.cols, e.rows), this.le = this.Dt.TA(e.cols, e.rows), this.ce = this.Dt.TA(e.cols, e.rows), this.De = this.Dt.TA(e.cols, e.rows), this.$e = this.Dt.TA(this.ne.width, this.ne.height);
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);
1354
1360
  }
1355
- Te(A) {
1356
- for (const e of this.Me) e.options.enabled && e instanceof O && e.ye(A);
1361
+ Se(A) {
1362
+ for (const e of this.Ge) e.options.enabled && e instanceof O && e.Me(A);
1357
1363
  const t = (e, s) => {
1358
- e.begin(), this.Dt.OA();
1359
- for (const r of this.Me) r.options.enabled && this.Dt.kA(s(r), 0, 0);
1364
+ e.begin(), this.Ct.UA();
1365
+ for (const r of this.Ge) r.options.enabled && this.Ct.RA(s(r), 0, 0);
1360
1366
  e.end();
1361
1367
  };
1362
- 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.OA(), this.Dt.IA(this.Ye), this.Dt.GA("u_characterTexture", this._t.fontFramebuffer), this.Dt.GA("u_charsetDimensions", [this._t.textureColumns, this._t.textureRows]), this.Dt.GA("u_asciiCharacterTexture", this.ae.texture), this.Dt.GA("u_primaryColorTexture", this.he.texture), this.Dt.GA("u_secondaryColorTexture", this.le.texture), this.Dt.GA("u_transformTexture", this.De.texture), this.Dt.GA("u_rotationTexture", this.ce.texture), this.Dt.GA("u_captureTexture", A.texture), this.Dt.GA("u_backgroundMode", !1), this.Dt.GA("u_captureDimensions", [A.width, A.height]), this.Dt.GA("u_gridCellDimensions", [this.ne.cols, this.ne.rows]), this.Dt.GA("u_gridPixelDimensions", [this.ne.width, this.ne.height]), this.Dt.FA(0, 0, this.$e.width, this.$e.height), this.$e.end();
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();
1363
1369
  }
1364
1370
  add(A) {
1365
1371
  if (!u.C(A === "brightness" || A === "custom", 'Converter type must be either "brightness" or "custom".', { method: "add", providedValue: A })) return;
1366
1372
  let t;
1367
- return t = A === "brightness" ? new S(this.Dt, this._t, this.ne) : new M(this.Dt, this._t, this.ne), this.Me.push(t), 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;
1368
1374
  }
1369
1375
  remove(A) {
1370
- if (!u.C(A instanceof M, "Parameter must be a TextmodeConverter instance.", { method: "remove", providedValue: A })) return;
1371
- const t = this.Me.indexOf(A);
1372
- u.C(t !== -1, "Converter instance not found in pipeline.", { method: "remove", providedValue: A, convertersCount: this.Me.length }) && this.Me.splice(t, 1);
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);
1373
1379
  }
1374
1380
  swap(A, t) {
1375
1381
  const e = (B, Q) => {
1376
- 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;
1377
- if (B instanceof M) {
1378
- const n = this.Me.indexOf(B);
1379
- return u.C(n !== -1, Q + " converter instance not found in pipeline.", { method: "swap", providedValue: B, convertersCount: this.Me.length }) ? n : null;
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;
1380
1386
  }
1381
1387
  return u.C(!1, Q + " parameter must be either an integer index or a TextmodeConverter instance.", { method: "swap", providedValue: B }), null;
1382
1388
  }, s = e(A, "First"), r = e(t, "Second");
1383
1389
  if (s === null || r === null || !u.C(s !== r, "Cannot swap a converter with itself.", { method: "swap", firstIndex: s, secondIndex: r })) return;
1384
- const i = this.Me[s];
1385
- this.Me[s] = this.Me[r], this.Me[r] = i;
1390
+ const i = this.Ge[s];
1391
+ this.Ge[s] = this.Ge[r], this.Ge[r] = i;
1386
1392
  }
1387
- ee() {
1388
- this.$e.resize(this.ne.width, this.ne.height);
1389
- const A = this.ne.cols, t = this.ne.rows;
1390
- 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);
1391
- for (const e of this.Me) e.ee();
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();
1392
1398
  }
1393
1399
  hasEnabledConverters() {
1394
- return this.Me.some((A) => A.options.enabled);
1400
+ return this.Ge.some((A) => A.options.enabled);
1395
1401
  }
1396
1402
  disable() {
1397
- for (const A of this.Me) A.disable();
1403
+ for (const A of this.Ge) A.disable();
1398
1404
  }
1399
1405
  enable() {
1400
- for (const A of this.Me) A.enable();
1406
+ for (const A of this.Ge) A.enable();
1401
1407
  }
1402
1408
  S() {
1403
- for (const A of this.Me) A.S();
1404
- this.ae.S(), this.he.S(), this.le.S(), this.ce.S(), this.De.S(), this.$e.S(), this.Ye.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();
1405
1411
  }
1406
1412
  get texture() {
1407
- return this.$e;
1413
+ return this.Ye;
1408
1414
  }
1409
1415
  get characterFramebuffer() {
1410
- return this.ae;
1416
+ return this.he;
1411
1417
  }
1412
1418
  get primaryColorFramebuffer() {
1413
- return this.he;
1419
+ return this.le;
1414
1420
  }
1415
1421
  get secondaryColorFramebuffer() {
1416
- return this.le;
1422
+ return this.ce;
1417
1423
  }
1418
1424
  get rotationFramebuffer() {
1419
- return this.ce;
1425
+ return this.De;
1420
1426
  }
1421
1427
  get transformFramebuffer() {
1422
- return this.De;
1428
+ return this.Ce;
1423
1429
  }
1424
1430
  get brightness() {
1425
- return this.Ge;
1431
+ return this.Fe;
1426
1432
  }
1427
1433
  get custom() {
1428
- return this.Fe;
1434
+ return this.$e;
1429
1435
  }
1430
1436
  }
1431
1437
  const IA = (E) => class extends E {
1432
1438
  fill(A, t, e, s) {
1433
- this.Dt.wA(A, t, e, s);
1439
+ this.Ct.wA(A, t, e, s);
1434
1440
  }
1435
1441
  stroke(A, t, e, s) {
1436
- this.Dt.fA(A, t, e, s);
1442
+ this.Ct.fA(A, t, e, s);
1437
1443
  }
1438
1444
  strokeWeight(A) {
1439
- this.Dt.dA(A);
1445
+ this.Ct.dA(A);
1440
1446
  }
1441
1447
  noStroke() {
1442
- this.Dt.mA();
1448
+ this.Ct.mA();
1443
1449
  }
1444
1450
  noFill() {
1445
- this.Dt.pA();
1451
+ this.Ct.pA();
1446
1452
  }
1447
1453
  rotate(A) {
1448
- this.Dt._A(A);
1454
+ this.Ct._A(A);
1449
1455
  }
1450
1456
  push() {
1451
- this.Dt.vA();
1457
+ this.Ct.vA();
1452
1458
  }
1453
1459
  pop() {
1454
- this.Dt.bA();
1460
+ this.Ct.bA();
1455
1461
  }
1456
1462
  rect(A, t, e = 1, s = 1) {
1457
- this.Dt.FA(A, t, e, s);
1463
+ this.Ct.$A(A, t, e, s);
1458
1464
  }
1459
1465
  line(A, t, e, s) {
1460
- this.Dt.YA(A, t, e, s);
1466
+ this.Ct.TA(A, t, e, s);
1461
1467
  }
1462
1468
  background(A, t = A, e = A, s = 255) {
1463
- this.Dt.SA(A, t, e, s);
1469
+ this.Ct.OA(A, t, e, s);
1464
1470
  }
1465
1471
  createShader(A, t) {
1466
- return this.Dt.yA(A, t);
1472
+ return this.Ct.MA(A, t);
1467
1473
  }
1468
1474
  createFilterShader(A) {
1469
- return this.Dt.MA(A);
1475
+ return this.Ct.GA(A);
1470
1476
  }
1471
1477
  shader(A) {
1472
- this.Dt.IA(A);
1478
+ this.Ct.IA(A);
1473
1479
  }
1474
1480
  setUniform(A, t) {
1475
- this.Dt.GA(A, t);
1481
+ this.Ct.FA(A, t);
1476
1482
  }
1477
1483
  image(A, t, e, s, r) {
1478
- this.Dt.kA(A, t, e, s, r);
1484
+ this.Ct.RA(A, t, e, s, r);
1479
1485
  }
1480
1486
  clear() {
1481
- this.Dt.OA();
1487
+ this.Ct.UA();
1482
1488
  }
1483
1489
  createFramebuffer(A, t, e = {}) {
1484
- return this.Dt.TA(A, t, e);
1490
+ return this.Ct.SA(A, t, e);
1485
1491
  }
1486
1492
  };
1487
- class L {
1488
- Se(A) {
1493
+ class N {
1494
+ Oe(A) {
1489
1495
  const t = A.characterFramebuffer, e = A.primaryColorFramebuffer, s = A.secondaryColorFramebuffer, r = A.transformFramebuffer, i = A.rotationFramebuffer;
1490
1496
  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) };
1491
1497
  }
1492
- Oe(A, t) {
1498
+ Ue(A, t) {
1493
1499
  return A[t] + (A[t + 1] << 8);
1494
1500
  }
1495
- Ue(A, t) {
1501
+ ke(A, t) {
1496
1502
  return { r: A[t], g: A[t + 1], b: A[t + 2], a: A[t + 3] };
1497
1503
  }
1498
1504
  }
1499
1505
  class k {
1500
- ke(A, t) {
1506
+ Re(A, t) {
1501
1507
  return new Blob([A], { type: t });
1502
1508
  }
1503
1509
  Ve(A, t, e) {
1504
1510
  try {
1505
- const s = this.ke(A, e), r = URL.createObjectURL(s), i = document.createElement("a");
1511
+ const s = this.Re(A, e), r = URL.createObjectURL(s), i = document.createElement("a");
1506
1512
  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);
1507
1513
  } catch (s) {
1508
1514
  throw console.error("Failed to download file:", s), Error("File download failed: " + (s instanceof Error ? s.message : "Unknown error"));
1509
1515
  }
1510
1516
  }
1511
- Re() {
1517
+ He() {
1512
1518
  return (/* @__PURE__ */ new Date()).toISOString().slice(0, 19).replace(/:/g, "-");
1513
1519
  }
1514
- He() {
1520
+ ze() {
1515
1521
  const A = /* @__PURE__ */ new Date();
1516
1522
  return { date: A.toISOString().split("T")[0], time: A.toTimeString().split(" ")[0].replace(/:/g, "-") };
1517
1523
  }
1518
- ze(A) {
1524
+ Le(A) {
1519
1525
  return A.replace(/[<>:"/\\|?*]/g, "_").replace(/\s+/g, "_").replace(/_{2,}/g, "_").replace(/^_+|_+$/g, "").substring(0, 255);
1520
1526
  }
1521
- Le() {
1522
- return "'textmode-export'-" + this.Re();
1527
+ Je() {
1528
+ return "'textmode-export'-" + this.He();
1523
1529
  }
1524
1530
  }
1525
- class fA extends L {
1526
- Je(A, t, e) {
1531
+ class fA extends N {
1532
+ Ke(A, t, e) {
1527
1533
  const s = A[e] === 255, r = A[e + 1] === 255, i = A[e + 2] === 255, B = t[e], Q = t[e + 1];
1528
1534
  return { isInverted: s, flipHorizontal: r, flipVertical: i, rotation: Math.round(360 * (B + Q / 255) / 255 * 100) / 100 };
1529
1535
  }
1530
- Ke(A, t, e) {
1536
+ We(A, t, e) {
1531
1537
  return { x: A, y: t, cellX: A * e.cellWidth, cellY: t * e.cellHeight };
1532
1538
  }
1533
- We(A, t) {
1539
+ je(A, t) {
1534
1540
  const e = [];
1535
1541
  let s = 0;
1536
1542
  for (let r = 0; r < t.rows; r++) for (let i = 0; i < t.cols; i++) {
1537
- const B = 4 * s, Q = this.Oe(A.characterPixels, B);
1538
- let n = this.Ue(A.primaryColorPixels, B), g = this.Ue(A.secondaryColorPixels, B);
1539
- const a = this.Je(A.transformPixels, A.rotationPixels, B);
1540
- if (a.isInverted) {
1541
- const D = n;
1542
- n = g, g = D;
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);
1546
+ if (h.isInverted) {
1547
+ const C = n;
1548
+ n = g, g = C;
1543
1549
  }
1544
- const h = this.Ke(i, r, t);
1545
- e.push({ charIndex: Q, primaryColor: n, secondaryColor: g, transform: a, position: h }), s++;
1550
+ const a = this.We(i, r, t);
1551
+ e.push({ charIndex: Q, primaryColor: n, secondaryColor: g, transform: h, position: a }), s++;
1546
1552
  }
1547
1553
  return e;
1548
1554
  }
1549
1555
  }
1550
1556
  class wA {
1551
- je(A, t) {
1557
+ Ne(A, t) {
1552
1558
  const e = A.cmap;
1553
1559
  for (const s of e.tables) if (s.format === 4) {
1554
1560
  for (let r = 0; r < s.startCount.length; r++) if (t >= s.startCount[r] && t <= s.endCount[r]) {
@@ -1564,60 +1570,60 @@ class wA {
1564
1570
  }
1565
1571
  return 0;
1566
1572
  }
1567
- Ne(A, t, e, s, r) {
1573
+ Ze(A, t, e, s, r) {
1568
1574
  const i = r / A.head.unitsPerEm;
1569
- 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) };
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) };
1570
1576
  }
1571
- Ze(A, t, e, s) {
1577
+ Xe(A, t, e, s) {
1572
1578
  if (!A || !A.xs) return "";
1573
1579
  const { xs: r, ys: i, endPts: B, flags: Q } = A;
1574
1580
  if (!(r && i && B && Q)) return "";
1575
1581
  let n = "", g = 0;
1576
- for (let a = 0; a < B.length; a++) {
1577
- const h = B[a];
1578
- if (!(h < g)) {
1579
- if (h >= g) {
1580
- const D = t + r[g] * s, c = e - i[g] * s;
1581
- n += `M${D.toFixed(2)},${c.toFixed(2)}`;
1582
+ for (let h = 0; h < B.length; h++) {
1583
+ const a = B[h];
1584
+ if (!(a < g)) {
1585
+ if (a >= g) {
1586
+ const C = t + r[g] * s, c = e - i[g] * s;
1587
+ n += `M${C.toFixed(2)},${c.toFixed(2)}`;
1582
1588
  let l = g + 1;
1583
- for (; l <= h; )
1589
+ for (; l <= a; )
1584
1590
  if (1 & Q[l]) {
1585
- const d = t + r[l] * s, C = e - i[l] * s;
1586
- n += `L${d.toFixed(2)},${C.toFixed(2)}`, l++;
1591
+ const d = t + r[l] * s, D = e - i[l] * s;
1592
+ n += `L${d.toFixed(2)},${D.toFixed(2)}`, l++;
1587
1593
  } else {
1588
- const d = t + r[l] * s, C = e - i[l] * s;
1589
- let P = l + 1 > h ? g : l + 1;
1594
+ const d = t + r[l] * s, D = e - i[l] * s;
1595
+ let P = l + 1 > a ? g : l + 1;
1590
1596
  if (1 & Q[P]) {
1591
1597
  const p = t + r[P] * s, m = e - i[P] * s;
1592
- n += `Q${d.toFixed(2)},${C.toFixed(2)} ${p.toFixed(2)},${m.toFixed(2)}`, l = P + 1;
1598
+ n += `Q${d.toFixed(2)},${D.toFixed(2)} ${p.toFixed(2)},${m.toFixed(2)}`, l = P + 1;
1593
1599
  } else {
1594
- const p = (d + (t + r[P] * s)) / 2, m = (C + (e - i[P] * s)) / 2;
1595
- n += `Q${d.toFixed(2)},${C.toFixed(2)} ${p.toFixed(2)},${m.toFixed(2)}`, l = P;
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;
1596
1602
  }
1597
1603
  }
1598
1604
  n += "Z";
1599
1605
  }
1600
- g = h + 1;
1606
+ g = a + 1;
1601
1607
  }
1602
1608
  }
1603
1609
  return n;
1604
1610
  }
1605
- Xe(A, t, e, s, r) {
1606
- const i = A.codePointAt(0) || 0, B = this.je(t, i);
1611
+ qe(A, t, e, s, r) {
1612
+ const i = A.codePointAt(0) || 0, B = this.Ne(t, i);
1607
1613
  let Q = null;
1608
- 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);
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);
1609
1615
  }
1610
- qe(A, t, e, s, r, i, B, Q) {
1616
+ As(A, t, e, s, r, i, B, Q) {
1611
1617
  const n = e + (r - Q * (B / t.head.unitsPerEm)) / 2, g = s + (i + 0.7 * B) / 2;
1612
- return this.Xe(A, t, n, g, B).toSVG() || null;
1618
+ return this.qe(A, t, n, g, B).toSVG() || null;
1613
1619
  }
1614
1620
  }
1615
1621
  class pA {
1616
1622
  constructor() {
1617
- o(this, "As");
1618
- this.As = new wA();
1623
+ o(this, "ts");
1624
+ this.ts = new wA();
1619
1625
  }
1620
- ts(A) {
1626
+ es(A) {
1621
1627
  return `<?xml version="1.0" encoding="UTF-8" standalone="no"?>
1622
1628
  <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
1623
1629
  <svg width="${A.width}" height="${A.height}" viewBox="0 0 ${A.width} ${A.height}"
@@ -1625,21 +1631,21 @@ class pA {
1625
1631
  <title>textmode art generated via textmode.js</title>
1626
1632
  <desc>textmode art visualization generated by textmode.js library</desc>`;
1627
1633
  }
1628
- es() {
1634
+ ss() {
1629
1635
  return `
1630
1636
  </g>
1631
1637
  </svg>`;
1632
1638
  }
1633
- ss(A, t) {
1639
+ rs(A, t) {
1634
1640
  if (!t.includeBackgroundRectangles) return "";
1635
1641
  const e = t.backgroundColor, s = `rgba(${e[0]},${e[1]},${e[2]},${e[3] / 255})`;
1636
1642
  return `
1637
1643
  <rect width="${A.width}" height="${A.height}" fill="${s}" />`;
1638
1644
  }
1639
- rs(A) {
1645
+ Bs(A) {
1640
1646
  return `rgba(${A.r},${A.g},${A.b},${A.a / 255})`;
1641
1647
  }
1642
- Bs(A, t) {
1648
+ Qs(A, t) {
1643
1649
  const { transform: e, position: s } = A, r = s.cellX + t.cellWidth / 2, i = s.cellY + t.cellHeight / 2, B = [];
1644
1650
  if (e.flipHorizontal || e.flipVertical) {
1645
1651
  const Q = e.flipHorizontal ? -1 : 1, n = e.flipVertical ? -1 : 1;
@@ -1647,91 +1653,91 @@ class pA {
1647
1653
  }
1648
1654
  return e.rotation && B.push(`rotate(${e.rotation} ${r} ${i})`), B.length ? ` transform="${B.join(" ")}"` : "";
1649
1655
  }
1650
- Qs(A, t, e) {
1656
+ Es(A, t, e) {
1651
1657
  if (!e.includeBackgroundRectangles || A.secondaryColor.a === 0) return "";
1652
- const { position: s } = A, r = this.rs(A.secondaryColor);
1658
+ const { position: s } = A, r = this.Bs(A.secondaryColor);
1653
1659
  return e.drawMode === "stroke" ? `
1654
1660
  <rect x="${s.cellX}" y="${s.cellY}" width="${t.cellWidth}" height="${t.cellHeight}" stroke="${r}" fill="none" stroke-width="${e.strokeWidth}" />` : `
1655
1661
  <rect x="${s.cellX}" y="${s.cellY}" width="${t.cellWidth}" height="${t.cellHeight}" fill="${r}" />`;
1656
1662
  }
1657
- Xe(A, t, e, s) {
1663
+ qe(A, t, e, s) {
1658
1664
  const r = e.characters[A.charIndex];
1659
1665
  if (!r) return "";
1660
- const i = this.As.qe(r.character, e.font, A.position.cellX, A.position.cellY, t.cellWidth, t.cellHeight, e.fontSize, r.advanceWidth);
1666
+ const i = this.ts.As(r.character, e.font, A.position.cellX, A.position.cellY, t.cellWidth, t.cellHeight, e.fontSize, r.advanceWidth);
1661
1667
  if (!i) return "";
1662
- const B = this.rs(A.primaryColor);
1668
+ const B = this.Bs(A.primaryColor);
1663
1669
  return s.drawMode === "stroke" ? `
1664
1670
  <path id="${`path-${A.charIndex}-${A.position.cellX}-${A.position.cellY}`.replace(/\./g, "-")}" d="${i}" stroke="${B}" stroke-width="${s.strokeWidth}" fill="none" />` : `
1665
1671
  <path d="${i}" fill="${B}" />`;
1666
1672
  }
1667
- Es(A, t, e, s) {
1673
+ gs(A, t, e, s) {
1668
1674
  let r = "";
1669
- r += this.Qs(A, t, s);
1670
- const i = this.Bs(A, t), B = this.Xe(A, t, e, s);
1675
+ r += this.Es(A, t, s);
1676
+ const i = this.Qs(A, t), B = this.qe(A, t, e, s);
1671
1677
  return B && (i ? (r += `
1672
1678
  <g${i}>`, r += B, r += `
1673
1679
  </g>`) : r += B), r;
1674
1680
  }
1675
- gs(A, t, e, s) {
1676
- let r = this.ts(t);
1677
- r += this.ss(t, s), r += `
1681
+ ns(A, t, e, s) {
1682
+ let r = this.es(t);
1683
+ r += this.rs(t, s), r += `
1678
1684
  <g id="ascii-cells">`;
1679
- for (const i of A) r += this.Es(i, t, e, s);
1680
- return r += this.es(), r;
1685
+ for (const i of A) r += this.gs(i, t, e, s);
1686
+ return r += this.ss(), r;
1681
1687
  }
1682
- ns(A) {
1688
+ hs(A) {
1683
1689
  return A.replace(/<path[^>]*d=""[^>]*\/>/g, "").replace(/\n\s*\n/g, `
1684
1690
  `).replace(/[ \t]+$/gm, "");
1685
1691
  }
1686
1692
  }
1687
1693
  class mA extends k {
1688
- hs(A) {
1689
- return this.ke(A, "image/svg+xml;charset=utf-8");
1690
- }
1691
- ls(A, t) {
1692
- this.Ve(A, this.ze(t) + ".svg", "image/svg+xml;charset=utf-8");
1694
+ ls(A) {
1695
+ return this.Re(A, "image/svg+xml;charset=utf-8");
1693
1696
  }
1694
1697
  cs(A, t) {
1695
- this.ls(A, t || this.Le());
1698
+ this.Ve(A, this.Le(t) + ".svg", "image/svg+xml;charset=utf-8");
1699
+ }
1700
+ Ds(A, t) {
1701
+ this.cs(A, t || this.Je());
1696
1702
  }
1697
1703
  }
1698
1704
  class $ {
1699
1705
  constructor() {
1700
- o(this, "Ds");
1701
1706
  o(this, "Cs");
1702
1707
  o(this, "us");
1703
- this.Ds = new fA(), this.Cs = new pA(), this.us = new mA();
1708
+ o(this, "Ps");
1709
+ this.Cs = new fA(), this.us = new pA(), this.Ps = new mA();
1704
1710
  }
1705
- Ps(A) {
1711
+ Is(A) {
1706
1712
  return { includeBackgroundRectangles: A.includeBackgroundRectangles ?? !0, drawMode: A.drawMode ?? "fill", strokeWidth: A.strokeWidth ?? 1, backgroundColor: A.backgroundColor ?? [0, 0, 0, 0] };
1707
1713
  }
1708
- Is(A, t = {}) {
1709
- 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);
1710
- return this.Cs.ns(i);
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);
1711
1717
  }
1712
- cs(A, t = {}) {
1713
- const e = this.Is(A, t), s = t.filename || this.us.Le();
1714
- this.us.cs(e, s);
1718
+ Ds(A, t = {}) {
1719
+ const e = this.ws(A, t), s = t.filename || this.Ps.Je();
1720
+ this.Ps.Ds(e, s);
1715
1721
  }
1716
1722
  }
1717
- class xA extends L {
1718
- ws(A, t, e, s = " ") {
1723
+ class xA extends N {
1724
+ fs(A, t, e, s = " ") {
1719
1725
  var B;
1720
1726
  const r = [];
1721
1727
  let i = 0;
1722
1728
  for (let Q = 0; Q < t.rows; Q++) {
1723
1729
  const n = [];
1724
1730
  for (let g = 0; g < t.cols; g++) {
1725
- const a = 4 * i, h = this.Oe(A.characterPixels, a), D = ((B = e.characters[h]) == null ? void 0 : B.character) || s;
1726
- n.push(D), i++;
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++;
1727
1733
  }
1728
1734
  r.push(n);
1729
1735
  }
1730
1736
  return r;
1731
1737
  }
1732
1738
  }
1733
- class bA {
1734
- fs(A, t) {
1739
+ class vA {
1740
+ ds(A, t) {
1735
1741
  const e = [];
1736
1742
  for (const r of A) {
1737
1743
  let i = r.join("");
@@ -1743,37 +1749,37 @@ class bA {
1743
1749
  return e.join(s);
1744
1750
  }
1745
1751
  }
1746
- class vA extends k {
1747
- ds(A, t) {
1748
- const e = this.ps(t);
1752
+ class bA extends k {
1753
+ ps(A, t) {
1754
+ const e = this._s(t);
1749
1755
  this.Ve(A, e, "text/plain;charset=utf-8");
1750
1756
  }
1751
- ps(A) {
1752
- let t = this.ze(A);
1753
- return t === ".txt" || t.length <= 4 ? this.Le() : t;
1757
+ _s(A) {
1758
+ let t = this.Le(A);
1759
+ return t === ".txt" || t.length <= 4 ? this.Je() : t;
1754
1760
  }
1755
1761
  }
1756
- class N {
1762
+ class J {
1757
1763
  constructor() {
1758
- o(this, "Ds");
1759
1764
  o(this, "Cs");
1760
1765
  o(this, "us");
1761
- this.Ds = new xA(), this.Cs = new bA(), this.us = new vA();
1766
+ o(this, "Ps");
1767
+ this.Cs = new xA(), this.us = new vA(), this.Ps = new bA();
1762
1768
  }
1763
- Ps(A) {
1769
+ Is(A) {
1764
1770
  return { preserveTrailingSpaces: A.preserveTrailingSpaces ?? !1, lineEnding: A.lineEnding ?? "lf", emptyCharacter: A.emptyCharacter ?? " " };
1765
1771
  }
1766
- _s(A, t = {}) {
1767
- const e = this.Ps(t), s = this.Ds.Se(A.pipeline), r = this.Ds.ws(s, A.grid, A.font, e.emptyCharacter);
1768
- return this.Cs.fs(r, e);
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);
1769
1775
  }
1770
- ds(A, t = {}) {
1771
- const e = this._s(A, t), s = t.filename || this.us.Le();
1772
- this.us.ds(e, s);
1776
+ ps(A, t = {}) {
1777
+ const e = this.vs(A, t), s = t.filename || this.Ps.Je();
1778
+ this.Ps.ps(e, s);
1773
1779
  }
1774
1780
  }
1775
- class yA extends L {
1776
- vs(A, t = 1, e = "transparent") {
1781
+ class yA extends N {
1782
+ bs(A, t = 1, e = "transparent") {
1777
1783
  const s = A.canvas;
1778
1784
  if (t === 1 && e === "transparent") return s;
1779
1785
  const r = document.createElement("canvas"), i = r.getContext("2d"), B = Math.round(s.width * t), Q = Math.round(s.height * t);
@@ -1781,19 +1787,19 @@ class yA extends L {
1781
1787
  }
1782
1788
  }
1783
1789
  class _A {
1784
- bs(A, t) {
1785
- const e = this.Ms(t.format);
1790
+ Ms(A, t) {
1791
+ const e = this.Gs(t.format);
1786
1792
  return t.format === "png" ? A.toDataURL(e) : A.toDataURL(e, t.quality);
1787
1793
  }
1788
- async Gs(A, t) {
1794
+ async Fs(A, t) {
1789
1795
  return new Promise((e, s) => {
1790
- const r = this.Ms(t.format), i = (B) => {
1796
+ const r = this.Gs(t.format), i = (B) => {
1791
1797
  B ? e(B) : s(Error(`Failed to generate ${t.format.toUpperCase()} blob`));
1792
1798
  };
1793
1799
  t.format === "png" ? A.toBlob(i, r) : A.toBlob(i, r, t.quality);
1794
1800
  });
1795
1801
  }
1796
- Ms(A) {
1802
+ Gs(A) {
1797
1803
  switch (A) {
1798
1804
  case "png":
1799
1805
  return "image/png";
@@ -1806,12 +1812,12 @@ class _A {
1806
1812
  }
1807
1813
  }
1808
1814
  }
1809
- const MA = { png: "image/png", jpg: "image/jpeg", webp: "image/webp" }, W = { png: ".png", jpg: ".jpg", webp: ".webp" };
1810
- class GA extends k {
1811
- Fs(A, t, e) {
1812
- this.$s(A, this.ze(t) + W[e]);
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]);
1813
1819
  }
1814
- $s(A, t) {
1820
+ Ys(A, t) {
1815
1821
  const e = URL.createObjectURL(A);
1816
1822
  try {
1817
1823
  const s = document.createElement("a");
@@ -1820,226 +1826,226 @@ class GA extends k {
1820
1826
  URL.revokeObjectURL(e);
1821
1827
  }
1822
1828
  }
1823
- Ys(A) {
1824
- return A in MA && A in W;
1829
+ Ts(A) {
1830
+ return A in FA && A in W;
1825
1831
  }
1826
1832
  }
1827
1833
  class TA {
1828
1834
  constructor() {
1829
- o(this, "Ds");
1830
1835
  o(this, "Cs");
1831
1836
  o(this, "us");
1832
- this.Ds = new yA(), this.Cs = new _A(), this.us = new GA();
1837
+ o(this, "Ps");
1838
+ this.Cs = new yA(), this.us = new _A(), this.Ps = new MA();
1833
1839
  }
1834
- Ps(A) {
1840
+ Is(A) {
1835
1841
  return { format: A.format ?? "png", quality: A.quality ?? 1, scale: A.scale ?? 1, backgroundColor: A.backgroundColor ?? "transparent" };
1836
1842
  }
1837
- Ts(A) {
1838
- if (console.log("Validating image export options:", A), !this.us.Ys(A.format)) throw Error(`Saving '${A.format}' files is not supported`);
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`);
1839
1845
  if (A.quality < 0 || A.quality > 1) throw Error("Image quality must be between 0.0 and 1.0");
1840
1846
  if (A.scale <= 0) throw Error("Scale factor must be greater than 0");
1841
1847
  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");
1842
1848
  }
1843
- Ss(A, t = {}) {
1844
- const e = this.Ps(t);
1845
- if (this.Ts(e), e.scale === 1 && e.backgroundColor === "transparent") return this.Cs.bs(A.canvas, e);
1846
- const s = this.Ds.vs(A, e.scale, e.backgroundColor);
1847
- return this.Cs.bs(s, e);
1848
- }
1849
- async Gs(A, t = {}) {
1850
- const e = this.Ps(t);
1851
- if (this.Ts(e), e.scale === 1 && e.backgroundColor === "transparent") return await this.Cs.Gs(A.canvas, e);
1852
- const s = this.Ds.vs(A, e.scale, e.backgroundColor);
1853
- return await this.Cs.Gs(s, e);
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);
1854
1854
  }
1855
1855
  async Fs(A, t = {}) {
1856
- const e = await this.Gs(A, t), s = t.format ?? "png", r = t.filename || this.us.Le();
1857
- this.us.Fs(e, r, s);
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);
1860
+ }
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);
1858
1864
  }
1859
1865
  }
1860
1866
  const RA = (E) => class extends E {
1861
1867
  toString(A = {}) {
1862
- return new N()._s({ pipeline: this.Os, grid: this.ne, font: this._t }, A);
1868
+ return new J().vs({ pipeline: this.Us, grid: this.ae, font: this.vt }, A);
1863
1869
  }
1864
1870
  saveStrings(A = {}) {
1865
- new N().ds({ pipeline: this.Os, grid: this.ne, font: this._t }, A);
1871
+ new J().ps({ pipeline: this.Us, grid: this.ae, font: this.vt }, A);
1866
1872
  }
1867
1873
  toSVG(A = {}) {
1868
- return new $().Is(this, A);
1874
+ return new $().ws(this, A);
1869
1875
  }
1870
1876
  saveSVG(A = {}) {
1871
- new $().cs(this, A);
1877
+ new $().Ds(this, A);
1872
1878
  }
1873
1879
  async saveCanvas(A, t = "png", e = {}) {
1874
- await new TA().Fs(this.jt, { ...e, filename: A, format: t });
1880
+ await new TA().$s(this.Nt, { ...e, filename: A, format: t });
1875
1881
  }
1876
- }, FA = (E) => class extends E {
1882
+ }, GA = (E) => class extends E {
1877
1883
  async loadFont(A) {
1878
- return this._t.Ht(A).then(() => {
1879
- const t = this._t.maxGlyphDimensions;
1880
- this.ne.qt(t.width, t.height), this.Os.ee();
1884
+ return this.vt.zt(A).then(() => {
1885
+ const t = this.vt.maxGlyphDimensions;
1886
+ this.ae.Ae(t.width, t.height), this.Us.se();
1881
1887
  });
1882
1888
  }
1883
1889
  fontSize(A) {
1884
- 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;
1885
- this._t.Rt(A);
1886
- const t = this._t.maxGlyphDimensions;
1887
- this.ne.qt(t.width, t.height), this.Os.ee(), this.Dt.UA();
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();
1888
1894
  }
1889
1895
  }, UA = (E) => class extends E {
1890
1896
  addConverter(A) {
1891
- return this.Os.add(A);
1897
+ return this.Us.add(A);
1892
1898
  }
1893
1899
  removeConverter(A) {
1894
- this.Os.remove(A);
1900
+ this.Us.remove(A);
1895
1901
  }
1896
1902
  };
1897
1903
  class YA {
1898
1904
  constructor() {
1899
- o(this, "Dt");
1900
- o(this, "_t");
1901
- o(this, "Os");
1902
- o(this, "jt");
1903
- o(this, "ne");
1905
+ o(this, "Ct");
1906
+ o(this, "vt");
1907
+ o(this, "Us");
1908
+ o(this, "Nt");
1909
+ o(this, "ae");
1904
1910
  }
1905
1911
  }
1906
1912
  class z extends function(t, ...e) {
1907
1913
  return e.reduce((s, r) => r(s), t);
1908
- }(YA, IA, RA, FA, UA) {
1914
+ }(YA, IA, RA, GA, UA) {
1909
1915
  constructor(t = null, e = {}) {
1910
1916
  super();
1911
- o(this, "re");
1912
- o(this, "Us");
1913
- o(this, "ie");
1917
+ o(this, "Be");
1914
1918
  o(this, "ks");
1919
+ o(this, "Qe");
1920
+ o(this, "Rs");
1915
1921
  o(this, "Vs");
1916
- o(this, "Rs", null);
1917
- o(this, "Hs", 0);
1918
- o(this, "zs");
1919
- o(this, "Ls", !0);
1920
- o(this, "Js", 0);
1922
+ o(this, "Hs", null);
1923
+ o(this, "zs", 0);
1924
+ o(this, "Ls");
1925
+ o(this, "Js", !0);
1921
1926
  o(this, "Ks", 0);
1922
1927
  o(this, "Ws", 0);
1923
- o(this, "js", []);
1924
- o(this, "Ns", 10);
1925
- o(this, "Zs", !1);
1928
+ o(this, "js", 0);
1929
+ o(this, "Ns", []);
1930
+ o(this, "Zs", 10);
1926
1931
  o(this, "Xs", !1);
1927
- o(this, "qs", () => {
1928
- });
1932
+ o(this, "qs", !1);
1929
1933
  o(this, "Ar", () => {
1930
1934
  });
1931
- o(this, "tr");
1932
- this.re = t, this.Xs = t === null, this.ks = e.renderMode ?? "auto", this.Vs = e.frameRate ?? 60, this.zs = 1e3 / this.Vs;
1935
+ o(this, "tr", () => {
1936
+ });
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;
1933
1939
  }
1934
1940
  static async create(t = null, e = {}) {
1935
- const s = new this(t, e), r = s.Xs ? e : void 0;
1941
+ const s = new this(t, e), r = s.qs ? e : void 0;
1936
1942
  let i, B;
1937
- s.jt = new CA(s.re, s.Xs, r), s.Dt = new iA(s.jt.ge()), s.Xs ? (i = e.width || 800, B = e.height || 600) : (i = s.jt.width || 800, B = s.jt.height || 600), s.Us = s.Dt.TA(i, B), s._t = new cA(s.Dt, e.fontSize ?? 16), await s._t.Ut(e.fontSource);
1938
- const Q = s._t.maxGlyphDimensions;
1939
- 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;
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;
1940
1946
  }
1941
- er() {
1942
- this.tr = () => {
1943
- this.Xs ? this.Ar() : this.rr();
1944
- }, window.addEventListener("resize", this.tr), window.ResizeObserver && this.re && !this.Xs && (this.ie = new ResizeObserver(() => {
1945
- this.rr();
1946
- }), this.ie.observe(this.re));
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));
1947
1953
  }
1948
1954
  render() {
1949
- 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.SA(0), this.Dt.kA(this.Os.texture, this.ne.offsetX, this.ne.offsetY, this.Os.texture.width, this.Os.texture.height)) : (this.Dt.OA(), this.Dt.kA(this.Us, this.ne.offsetX, this.ne.offsetY, this.Us.width, this.Us.height)));
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)));
1950
1956
  }
1951
- rr() {
1952
- this.jt.ee(), this.Us.resize(this.jt.width, this.jt.height), this.ne.ee(), this.Os.ee(), this.Dt.UA(), this.ks !== "manual" && this.render();
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();
1953
1959
  }
1954
- sr() {
1955
- if (this.ks !== "auto" || !this.Ls) return;
1956
- this.Hs = performance.now();
1960
+ rr() {
1961
+ if (this.Rs !== "auto" || !this.Js) return;
1962
+ this.zs = performance.now();
1957
1963
  const t = (e) => {
1958
- if (!this.Ls) return void (this.Rs = null);
1959
- const s = e - this.Hs;
1960
- s >= this.zs && (this.render(), this.Hs = e - s % this.zs), this.Ls && (this.Rs = requestAnimationFrame(t));
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));
1961
1967
  };
1962
- this.Rs = requestAnimationFrame(t);
1968
+ this.Hs = requestAnimationFrame(t);
1963
1969
  }
1964
- Br() {
1970
+ ir() {
1965
1971
  const t = performance.now();
1966
- if (this.Ks > 0) {
1967
- const e = t - this.Ks;
1968
- this.js.push(e), this.js.length > this.Ns && this.js.shift();
1969
- const s = this.js.reduce((r, i) => r + i, 0) / this.js.length;
1970
- this.Js = 1e3 / s;
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;
1971
1977
  }
1972
- this.Ks = t;
1978
+ this.Ws = t;
1973
1979
  }
1974
- ir() {
1975
- this.Rs && (cancelAnimationFrame(this.Rs), this.Rs = null);
1980
+ Qr() {
1981
+ this.Hs && (cancelAnimationFrame(this.Hs), this.Hs = null);
1976
1982
  }
1977
1983
  renderMode(t) {
1978
- this.ks !== t && (this.ir(), this.ks = t, t === "auto" && this.Ls && this.sr());
1984
+ this.Rs !== t && (this.Qr(), this.Rs = t, t === "auto" && this.Js && this.rr());
1979
1985
  }
1980
1986
  frameRate(t) {
1981
- if (t === void 0) return this.Js;
1982
- this.Vs = t, this.zs = 1e3 / t, this.ks === "auto" && this.Ls && (this.ir(), this.sr());
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());
1983
1989
  }
1984
1990
  noLoop() {
1985
- this.Ls && (this.Ls = !1, this.Rs && (cancelAnimationFrame(this.Rs), this.Rs = null));
1991
+ this.Js && (this.Js = !1, this.Hs && (cancelAnimationFrame(this.Hs), this.Hs = null));
1986
1992
  }
1987
1993
  loop() {
1988
- this.Ls || (this.Ls = !0, this.ks === "auto" && this.sr());
1994
+ this.Js || (this.Js = !0, this.Rs === "auto" && this.rr());
1989
1995
  }
1990
1996
  redraw(t = 1) {
1991
1997
  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();
1992
1998
  }
1993
1999
  isLooping() {
1994
- return this.ks === "auto" && this.Ls;
2000
+ return this.Rs === "auto" && this.Js;
1995
2001
  }
1996
2002
  draw(t) {
1997
- this.qs = t;
2003
+ this.Ar = t;
1998
2004
  }
1999
2005
  windowResized(t) {
2000
- this.Ar = t;
2006
+ this.tr = t;
2001
2007
  }
2002
2008
  resizeCanvas(t, e) {
2003
- this.Xs && (this.jt.ee(t, e), this.Us.resize(this.jt.width, this.jt.height), this.ne.ee(), this.Os.ee(), this.Dt.UA(), this.ks !== "manual" && this.render());
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());
2004
2010
  }
2005
2011
  destroy() {
2006
- 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);
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);
2007
2013
  }
2008
2014
  get grid() {
2009
- return this.ne;
2015
+ return this.ae;
2010
2016
  }
2011
2017
  get font() {
2012
- return this._t;
2018
+ return this.vt;
2013
2019
  }
2014
2020
  get mode() {
2015
- return this.ks;
2021
+ return this.Rs;
2016
2022
  }
2017
2023
  get pipeline() {
2018
- return this.Os;
2024
+ return this.Us;
2019
2025
  }
2020
2026
  get frameCount() {
2021
- return this.Ws;
2027
+ return this.js;
2022
2028
  }
2023
2029
  get renderer() {
2024
- return this.Dt;
2030
+ return this.Ct;
2025
2031
  }
2026
2032
  set frameCount(t) {
2027
- this.Ws = t;
2033
+ this.js = t;
2028
2034
  }
2029
2035
  get width() {
2030
- return this.jt.width;
2036
+ return this.Nt.width;
2031
2037
  }
2032
2038
  get height() {
2033
- return this.jt.height;
2039
+ return this.Nt.height;
2034
2040
  }
2035
2041
  get canvas() {
2036
- return this.jt;
2042
+ return this.Nt;
2037
2043
  }
2038
2044
  get isDisposed() {
2039
- return this.Zs;
2045
+ return this.Xs;
2040
2046
  }
2041
2047
  }
2042
- class j {
2048
+ class L {
2043
2049
  constructor() {
2044
2050
  throw new I("Textmode is a static class and cannot be instantiated.");
2045
2051
  }
@@ -2056,23 +2062,23 @@ class j {
2056
2062
  u.u(A);
2057
2063
  }
2058
2064
  static get version() {
2059
- return "0.1.9-beta.4";
2065
+ return "0.1.9-beta.5";
2060
2066
  }
2061
2067
  }
2062
- const LA = Object.freeze(Object.defineProperty({ __proto__: null }, Symbol.toStringTag, { value: "Module" })), kA = j.create, jA = j.setErrorLevel, VA = j.version;
2068
+ const NA = Object.freeze(Object.defineProperty({ __proto__: null }, Symbol.toStringTag, { value: "Module" })), kA = L.create, LA = L.setErrorLevel, HA = L.version;
2063
2069
  export {
2064
- CA as TextmodeCanvas,
2070
+ DA as TextmodeCanvas,
2065
2071
  uA as TextmodeColorPalette,
2066
2072
  dA as TextmodeConversionPipeline,
2067
2073
  eA as TextmodeErrorLevel,
2068
2074
  cA as TextmodeFont,
2069
- DA as TextmodeGrid,
2075
+ CA as TextmodeGrid,
2070
2076
  z as Textmodifier,
2071
2077
  OA as converters,
2072
2078
  kA as create,
2073
- j as default,
2074
- LA as export,
2075
- jA as setErrorLevel,
2076
- j as textmode,
2077
- VA as version
2079
+ L as default,
2080
+ NA as export,
2081
+ LA as setErrorLevel,
2082
+ L as textmode,
2083
+ HA as version
2078
2084
  };