textmode.js 0.1.9-beta.4 → 0.1.9-beta.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/textmode.esm.js +213 -219
- package/dist/textmode.esm.min.js +475 -481
- package/dist/textmode.umd.js +14 -13
- package/dist/textmode.umd.min.js +17 -16
- package/dist/types/rendering/webgl/Renderer.d.ts +6 -0
- package/dist/types/textmode/font/utils/FontTableReader.d.ts +2 -7
- package/package.json +1 -1
package/dist/textmode.esm.js
CHANGED
|
@@ -62,9 +62,9 @@ const v = class v {
|
|
|
62
62
|
}
|
|
63
63
|
};
|
|
64
64
|
o(v, "o", null);
|
|
65
|
-
let
|
|
66
|
-
const u =
|
|
67
|
-
function
|
|
65
|
+
let S = v;
|
|
66
|
+
const u = S.l(), X = /* @__PURE__ */ new WeakMap();
|
|
67
|
+
function G(E, A) {
|
|
68
68
|
X.set(E, A);
|
|
69
69
|
}
|
|
70
70
|
function J(E) {
|
|
@@ -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._),
|
|
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),
|
|
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, "
|
|
178
|
-
o(this, "
|
|
179
|
-
this.P = A, this.O = this.H(t, e), this.
|
|
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.
|
|
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.
|
|
250
|
+
this.R = 0;
|
|
251
251
|
}
|
|
252
252
|
}
|
|
253
253
|
class Z {
|
|
@@ -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,
|
|
311
|
-
this.rA(
|
|
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,
|
|
314
|
-
this.AA(),
|
|
313
|
+
const g = -B / Q, h = i / Q, a = r / 2, D = A + g * a, c = t + h * a, l = A - g * a, d = t - h * a, C = e + g * a, P = s + h * a, p = e - g * a, m = s - h * a, y = this.sA(D, c), b = this.sA(l, d), _ = this.sA(C, P), V = this.sA(p, m), F = this.P;
|
|
314
|
+
this.AA(), F.bindBuffer(F.ARRAY_BUFFER, this.Z);
|
|
315
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
|
-
|
|
316
|
+
F.bufferData(F.ARRAY_BUFFER, q, F.DYNAMIC_DRAW);
|
|
317
317
|
}
|
|
318
318
|
const n = this.tA();
|
|
319
319
|
this.P.drawArrays(this.P.TRIANGLES, 0, 6), this.eA(n.positionLoc, n.texLoc);
|
|
@@ -324,8 +324,8 @@ class iA {
|
|
|
324
324
|
constructor(A) {
|
|
325
325
|
o(this, "P");
|
|
326
326
|
o(this, "EA");
|
|
327
|
-
o(this, "
|
|
328
|
-
o(this, "
|
|
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.
|
|
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.
|
|
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.
|
|
384
|
+
this.gA = null, this.PA = [], this.uA = 0;
|
|
385
385
|
}
|
|
386
|
-
yA(A
|
|
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
|
-
|
|
390
|
-
|
|
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
|
-
|
|
393
|
-
this.
|
|
398
|
+
FA(A, t) {
|
|
399
|
+
this.gA.setUniform(A, t);
|
|
394
400
|
}
|
|
395
|
-
|
|
396
|
-
if (this.
|
|
397
|
-
const { centerX:
|
|
398
|
-
return this.
|
|
401
|
+
$A(A, t, e, s) {
|
|
402
|
+
if (this.gA !== null) {
|
|
403
|
+
const { centerX: h, centerY: a, radians: D, aspectRatio: c } = this.YA(A, t, e, s);
|
|
404
|
+
return this.FA("u_rotation", D), this.FA("u_center", [h, a]), this.FA("u_aspectRatio", c), this.nA.BA(A, t, e, s), void (this.gA = null);
|
|
399
405
|
}
|
|
400
|
-
const r = this.
|
|
406
|
+
const r = this.oA;
|
|
401
407
|
let i = 0, B = 0, Q = 0, n = 1;
|
|
402
|
-
const g = this
|
|
403
|
-
i = g.centerX, B = g.centerY, Q = g.radians, n = g.aspectRatio, this.lA && (this.IA(r), this.
|
|
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
|
-
|
|
406
|
-
if (this.
|
|
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
|
|
408
|
-
this.
|
|
411
|
+
TA(A, t, e, s) {
|
|
412
|
+
if (this.gA !== null) {
|
|
413
|
+
const l = (A + e) / 2, d = (t + s) / 2, C = Math.abs(e - A) || 1, P = Math.abs(s - t) || 1, { centerX: p, centerY: m, radians: y, aspectRatio: b } = this.YA(l - C / 2, d - P / 2, C, P);
|
|
414
|
+
this.FA("u_rotation", y), this.FA("u_center", [p, m]), this.FA("u_aspectRatio", b);
|
|
409
415
|
const _ = this.DA > 0 ? this.DA : 1;
|
|
410
|
-
return this.aA.QA(A, t, e, s, _), void (this.
|
|
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.
|
|
414
|
-
let
|
|
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, D = 0, c = 1;
|
|
415
421
|
if (g) {
|
|
416
|
-
const l = this
|
|
417
|
-
|
|
422
|
+
const l = this.YA(i - Q / 2, B - n / 2, Q, n);
|
|
423
|
+
h = l.centerX, a = l.centerY, D = l.radians, c = l.aspectRatio;
|
|
418
424
|
}
|
|
419
|
-
this.IA(r), this.
|
|
425
|
+
this.IA(r), this.FA("u_color", this.cA), g && (this.FA("u_rotation", D), this.FA("u_center", [h, a]), this.FA("u_aspectRatio", c)), this.aA.QA(A, t, e, s, this.DA);
|
|
420
426
|
}
|
|
421
|
-
|
|
427
|
+
YA(A, t, e, s) {
|
|
422
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
|
-
|
|
431
|
+
SA(A, t, e = {}) {
|
|
426
432
|
return new K(this.P, A, t, e);
|
|
427
433
|
}
|
|
428
|
-
|
|
429
|
-
this.
|
|
434
|
+
OA(A, t = A, e = A, s = 255) {
|
|
435
|
+
this.UA(A / 255, t / 255, e / 255, s / 255);
|
|
430
436
|
}
|
|
431
|
-
|
|
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
|
-
|
|
435
|
-
this.P.viewport(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.
|
|
447
|
+
this.EA.S(), this.oA.S(), this.nA.S(), this.aA.S();
|
|
442
448
|
}
|
|
443
|
-
|
|
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.
|
|
446
|
-
const n = this
|
|
447
|
-
this.
|
|
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
|
|
479
|
+
const h = s.readUint(E, A);
|
|
474
480
|
A += 4;
|
|
475
|
-
const
|
|
476
|
-
let D = B.indexOf(
|
|
481
|
+
const a = `p${n}e${g}`;
|
|
482
|
+
let D = B.indexOf(h);
|
|
477
483
|
if (D === -1) {
|
|
478
484
|
let c;
|
|
479
|
-
D = e.tables.length, B.push(
|
|
480
|
-
const l = r(E,
|
|
481
|
-
c = l === 4 ? this.parse4(E,
|
|
485
|
+
D = 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[
|
|
489
|
+
e.ids[a] != null && console.warn("Multiple tables for one platform+encoding: " + a), e.ids[a] = D;
|
|
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,
|
|
527
|
-
for (;
|
|
528
|
-
for (;
|
|
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
|
-
} },
|
|
536
|
+
} }, $ = { 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.
|
|
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.
|
|
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
|
|
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
|
|
566
|
+
for (let a = 0; a < n; a++) {
|
|
561
567
|
const D = e[i];
|
|
562
568
|
if (i++, B.flags.push(D), 8 & D) {
|
|
563
569
|
const c = e[i];
|
|
564
570
|
i++;
|
|
565
|
-
for (let l = 0; l < c; l++) B.flags.push(D),
|
|
571
|
+
for (let l = 0; l < c; l++) B.flags.push(D), a++;
|
|
566
572
|
}
|
|
567
573
|
}
|
|
568
574
|
B.xs = [];
|
|
569
|
-
for (let
|
|
570
|
-
const D = B.flags[
|
|
575
|
+
for (let a = 0; a < n; a++) {
|
|
576
|
+
const D = B.flags[a], c = !!(16 & D);
|
|
571
577
|
2 & D ? (B.xs.push(c ? e[i] : -e[i]), i++) : c ? B.xs.push(0) : (B.xs.push(t.readShort(e, i)), i += 2);
|
|
572
578
|
}
|
|
573
579
|
B.ys = [];
|
|
574
|
-
for (let
|
|
575
|
-
const D = B.flags[
|
|
580
|
+
for (let a = 0; a < n; a++) {
|
|
581
|
+
const D = B.flags[a], c = !!(32 & D);
|
|
576
582
|
4 & D ? (B.ys.push(c ? e[i] : -e[i]), i++) : c ? B.ys.push(0) : (B.ys.push(t.readShort(e, i)), i += 2);
|
|
577
583
|
}
|
|
578
|
-
let g = 0,
|
|
579
|
-
for (let
|
|
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 =
|
|
589
|
+
const r = $, 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,
|
|
588
|
-
let
|
|
589
|
-
|
|
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,36 +607,24 @@ 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:
|
|
610
|
+
}, T: $, 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
|
-
|
|
611
|
-
const
|
|
612
|
-
if (this.JA.has(
|
|
613
|
-
const
|
|
614
|
-
if (!
|
|
615
|
-
const s = ["p3e1", "p3e10", "p0e3", "p0e4"];
|
|
616
|
-
for (const i of s) if (e.ids[i] !== void 0) {
|
|
617
|
-
const B = e.tables[e.ids[i]];
|
|
618
|
-
return this.JA.set(t, B), B;
|
|
619
|
-
}
|
|
620
|
-
const r = e.tables[0] || null;
|
|
621
|
-
return this.JA.set(t, r), r;
|
|
622
|
-
}
|
|
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;
|
|
616
|
+
WA(A, t) {
|
|
617
|
+
const e = `${this.jA(A)}_${t}`;
|
|
618
|
+
if (this.JA.has(e)) return this.JA.get(e);
|
|
619
|
+
const s = A.cmap;
|
|
620
|
+
if (!s || !s.tables) return this.JA.set(e, 0), 0;
|
|
628
621
|
let r = 0;
|
|
629
|
-
|
|
622
|
+
for (const i of s.tables) if (i.format === 4 ? r = this.NA(t, i) : i.format === 12 && (r = this.ZA(t, i)), r > 0) break;
|
|
623
|
+
return this.JA.set(e, r), r;
|
|
630
624
|
}
|
|
631
625
|
XA(A, t) {
|
|
632
626
|
const e = t.codePointAt(0);
|
|
633
|
-
return e === void 0 ? 0 : this.
|
|
627
|
+
return e === void 0 ? 0 : this.WA(A, e);
|
|
634
628
|
}
|
|
635
629
|
qA(A, t) {
|
|
636
630
|
const e = A.hmtx;
|
|
@@ -641,10 +635,10 @@ class U {
|
|
|
641
635
|
return { ascender: s, descender: r, lineGap: i, lineHeight: s - r + i, unitsPerEm: A.head.unitsPerEm, scale: e };
|
|
642
636
|
}
|
|
643
637
|
tt() {
|
|
644
|
-
this.
|
|
638
|
+
this.JA.clear(), this.KA.clear();
|
|
645
639
|
}
|
|
646
|
-
|
|
647
|
-
return `${A.
|
|
640
|
+
jA(A) {
|
|
641
|
+
return `${A.zA}_${A.HA.length}`;
|
|
648
642
|
}
|
|
649
643
|
NA(A, t) {
|
|
650
644
|
const e = t.endCount.length;
|
|
@@ -701,8 +695,8 @@ class nA {
|
|
|
701
695
|
Et(A, t) {
|
|
702
696
|
return t.filter((e) => this.it(A, e));
|
|
703
697
|
}
|
|
704
|
-
|
|
705
|
-
return A.filter((t) => this.
|
|
698
|
+
ot(A) {
|
|
699
|
+
return A.filter((t) => this.gt(t));
|
|
706
700
|
}
|
|
707
701
|
rt(A) {
|
|
708
702
|
const t = [];
|
|
@@ -745,7 +739,7 @@ class nA {
|
|
|
745
739
|
}
|
|
746
740
|
return 0;
|
|
747
741
|
}
|
|
748
|
-
|
|
742
|
+
gt(A) {
|
|
749
743
|
const t = A.codePointAt(0) || 0;
|
|
750
744
|
return !(t >= 0 && t <= 31 && t !== 9 && t !== 10 && t !== 13 || t >= 127 && t <= 159);
|
|
751
745
|
}
|
|
@@ -760,7 +754,7 @@ class gA {
|
|
|
760
754
|
return this.ht.st(A);
|
|
761
755
|
}
|
|
762
756
|
filterProblematicCharacters(A) {
|
|
763
|
-
return this.ht.
|
|
757
|
+
return this.ht.ot(A);
|
|
764
758
|
}
|
|
765
759
|
characterExists(A, t) {
|
|
766
760
|
return this.ht.it(A, t);
|
|
@@ -769,7 +763,7 @@ class gA {
|
|
|
769
763
|
return this.ht.Qt(A, t);
|
|
770
764
|
}
|
|
771
765
|
}
|
|
772
|
-
class
|
|
766
|
+
class aA {
|
|
773
767
|
constructor(A) {
|
|
774
768
|
o(this, "lt");
|
|
775
769
|
o(this, "ct");
|
|
@@ -780,8 +774,8 @@ class hA {
|
|
|
780
774
|
createTextureAtlas(A, t, e, s) {
|
|
781
775
|
const r = A.length, i = Math.ceil(Math.sqrt(r)), B = Math.ceil(r / i), Q = t.width * i, n = t.height * B, g = typeof s == "object" ? s : null;
|
|
782
776
|
this.ut(Q, n), this.Pt(A, t, i, e, g);
|
|
783
|
-
const
|
|
784
|
-
return
|
|
777
|
+
const h = this.Dt.SA(Q, n, { filter: "nearest" });
|
|
778
|
+
return h.update(this.lt), { framebuffer: h, columns: i, rows: B };
|
|
785
779
|
}
|
|
786
780
|
ut(A, t) {
|
|
787
781
|
this.lt.width = A, this.lt.height = t, this.lt.style.width = A + "px", this.lt.style.height = A + "px", this.ct.imageSmoothingEnabled = !1, this.lt.style.imageRendering = "pixelated", this.ct.fillStyle = "black", this.ct.fillRect(0, 0, A, t), this.ct.textBaseline = "top", this.ct.textAlign = "left", this.ct.fillStyle = "white";
|
|
@@ -789,14 +783,14 @@ class hA {
|
|
|
789
783
|
Pt(A, t, e, s, r) {
|
|
790
784
|
const i = s / r.head.unitsPerEm;
|
|
791
785
|
for (let B = 0; B < A.length; B++) {
|
|
792
|
-
const Q = B % e, n = Math.floor(B / e), g = A[B].character,
|
|
793
|
-
if (!
|
|
794
|
-
const
|
|
795
|
-
this.ft(
|
|
786
|
+
const Q = B % e, n = Math.floor(B / e), g = A[B].character, h = this.It(r, g);
|
|
787
|
+
if (!h) continue;
|
|
788
|
+
const a = g.codePointAt(0) || 0, D = this.Ct.WA(r, a), c = this.wt(r, D) * i, l = Q * t.width, d = n * t.height, C = l + 0.5 * t.width, P = d + 0.5 * t.height, p = Math.round(C - 0.5 * t.width), m = Math.round(P - 0.5 * s), y = p + 0.5 * (t.width - c), b = m + r.hhea.ascender * i;
|
|
789
|
+
this.ft(h, y, b, i);
|
|
796
790
|
}
|
|
797
791
|
}
|
|
798
792
|
It(A, t) {
|
|
799
|
-
const e = t.codePointAt(0) || 0, s = this.Ct.
|
|
793
|
+
const e = t.codePointAt(0) || 0, s = this.Ct.WA(A, e);
|
|
800
794
|
if (s === 0) return null;
|
|
801
795
|
if (A.glyf && A.glyf[s] !== null) return A.glyf[s];
|
|
802
796
|
if (w && w.T && w.T.glyf && w.T.glyf.VA) {
|
|
@@ -816,19 +810,19 @@ class hA {
|
|
|
816
810
|
this.ct.beginPath();
|
|
817
811
|
let n = 0;
|
|
818
812
|
for (let g = 0; g < B.length; g++) {
|
|
819
|
-
const
|
|
820
|
-
if (!(
|
|
821
|
-
if (
|
|
822
|
-
const
|
|
823
|
-
this.ct.moveTo(
|
|
813
|
+
const h = B[g];
|
|
814
|
+
if (!(h < n)) {
|
|
815
|
+
if (h >= n) {
|
|
816
|
+
const a = t + r[n] * s, D = e - i[n] * s;
|
|
817
|
+
this.ct.moveTo(a, D);
|
|
824
818
|
let c = n + 1;
|
|
825
|
-
for (; c <=
|
|
819
|
+
for (; c <= h; )
|
|
826
820
|
if (1 & Q[c]) {
|
|
827
821
|
const l = t + r[c] * s, d = e - i[c] * s;
|
|
828
822
|
this.ct.lineTo(l, d), c++;
|
|
829
823
|
} else {
|
|
830
824
|
const l = t + r[c] * s, d = e - i[c] * s;
|
|
831
|
-
let C = c + 1 >
|
|
825
|
+
let C = c + 1 > h ? n : c + 1;
|
|
832
826
|
if (1 & Q[C]) {
|
|
833
827
|
const P = t + r[C] * s, p = e - i[C] * s;
|
|
834
828
|
this.ct.quadraticCurveTo(l, d, P, p), c = C + 1;
|
|
@@ -839,13 +833,13 @@ class hA {
|
|
|
839
833
|
}
|
|
840
834
|
this.ct.closePath();
|
|
841
835
|
}
|
|
842
|
-
n =
|
|
836
|
+
n = h + 1;
|
|
843
837
|
}
|
|
844
838
|
}
|
|
845
839
|
this.ct.fill();
|
|
846
840
|
}
|
|
847
841
|
}
|
|
848
|
-
class
|
|
842
|
+
class hA {
|
|
849
843
|
constructor() {
|
|
850
844
|
o(this, "et");
|
|
851
845
|
this.et = new U();
|
|
@@ -882,7 +876,7 @@ class lA {
|
|
|
882
876
|
const r = e.codePointAt(0) || 0, i = this.dt(s);
|
|
883
877
|
let B = 0;
|
|
884
878
|
if (t.hmtx && t.hmtx.aWidth) {
|
|
885
|
-
const Q = this.Ct.
|
|
879
|
+
const Q = this.Ct.WA(t, r);
|
|
886
880
|
Q > 0 && t.hmtx.aWidth[Q] !== void 0 && (B = t.hmtx.aWidth[Q]);
|
|
887
881
|
}
|
|
888
882
|
return { character: e, unicode: r, color: i, advanceWidth: B };
|
|
@@ -897,7 +891,7 @@ class lA {
|
|
|
897
891
|
return e ? e.color : [0, 0, 0];
|
|
898
892
|
}
|
|
899
893
|
getCharacterColors(A, t) {
|
|
900
|
-
return u.C(typeof A == "string" && A.length > 0, "Characters must be a string with at least one character.", { method: "getCharacterColors", providedValue: A }) ?
|
|
894
|
+
return u.C(typeof A == "string" && A.length > 0, "Characters must be a string with at least one character.", { method: "getCharacterColors", providedValue: A }) ? Array.from(A).map((e) => this.getCharacterColor(e, t) || [0, 0, 0]) : [[0, 0, 0]];
|
|
901
895
|
}
|
|
902
896
|
}
|
|
903
897
|
class cA {
|
|
@@ -915,7 +909,7 @@ class cA {
|
|
|
915
909
|
o(this, "Tt");
|
|
916
910
|
o(this, "St");
|
|
917
911
|
o(this, "Ot");
|
|
918
|
-
this.xt = t, this.Yt = new gA(), this.Tt = new
|
|
912
|
+
this.xt = t, this.Yt = new gA(), this.Tt = new aA(A), this.St = new hA(), this.Ot = new lA();
|
|
919
913
|
}
|
|
920
914
|
async Ut(A) {
|
|
921
915
|
let t;
|
|
@@ -926,9 +920,9 @@ class cA {
|
|
|
926
920
|
} else
|
|
927
921
|
t = await (await fetch(`data:font/truetype;charset=utf-8;base64,AAEAAAAKAIAAAwAgT1MvMs+QEyQAAAEoAAAAYGNtYXAg7yVJAAAFjAAACSBnbHlmuHLTdAAAErQAAGi0aGVhZFvXdUwAAACsAAAANmhoZWELAQUCAAAA5AAAACRobXR4BACDgAAAAYgAAAQEbG9jYQAy54AAAA6sAAAECG1heHABIgCCAAABCAAAACBuYW1lVs/OSgAAe2gAAAOicG9zdABpADQAAH8MAAAAIAABAAAAAQAAzOWHqV8PPPUAAAQAAAAAAHxiGCcAAAAAfGIYJwAAAAAEAAQAAAAACAACAAEAAAAAAAEAAAQAAAAAAAQAAAAAAAcAAAEAAAAAAAAAAAAAAAAAAAEBAAEAAAEBAIAAIAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgQAAZAABQAEAgACAAAAAAACAAIAAAACAAAzAMwAAAAABAAAAAAAAACAAACLAABw4wAAAAAAAAAAWUFMLgBAACAmawQAAAAAAAQAAAAAAAFRAAAAAAMABAAAAAAgAAAEAAAABAAAAAQAAAAEAAGABAABAAQAAIAEAACABAAAgAQAAIAEAAGABAABAAQAAQAEAACABAABAAQAAIAEAACABAABAAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAABAAQAAIAEAAEABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAABAAQAAIAEAAEABAAAgAQAAIAEAAEABAAAgAQAAIAEAACABAAAgAQAAIAEAAEABAAAgAQAAIAEAAGABAAAgAQAAIAEAAGABAAAgAQAAIAEAACABAAAgAQAAIAEAAEABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAABgAQAAQAEAACABAAAAAQAAgAEAACABAAAgAQAAIAEAACABAACAAQAAAAEAAIABAABgAQAAgAEAACABAAAgAQAAAAEAACABAAAAAQAAAAEAAAABAAAAAQAAAAEAAIABAADAAQAAAAEAAAABAAAgAQAAYAEAAAABAAAAAQAAIAEAAAA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AIAAAACA/YAAgAAAAIAAAP8AAoABAAAA/4AAAP+A/4AAgAAAAIAAAP8AA4AAAP8AAAAAgAAAAIAAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAP+AAAD/gAAAAAAAAP8AAAAAgAAAAAAAAP+AAAD/gAAAAAAAAwCAAIAEAAQAABcAHQAjAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/4AAAACAAAAAgAAA/4AAAACAAAD9AAAA/4AAAACAAAD/gAAAAIAAgAAAAIAAAACAAAD/AAAAAQAAAP+AAAAEAAAA/4AAAP8AAAD/gAAAAIAAAP8AAAD/gAAA/4AAAACAAAABAAAAAIAAAAEAAAAAAP+AAAD/gAAAAQD+gP8AAAAAgAAAAIAAAAABAYACgAKABAAAAwAAAQEBAQGAAQAAAP8ABAAAAP6AAAAAAAABAQAAgAMABAAAEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQECAAEAAAD/gAAA/4AAAACAAAAAgAAA/wAAAP+AAAD/gAAAAIAAAACABAAAAP+AAAD/gAAA/oAAAP+AAAD/gAAAAIAAAACAAAABgAAAAIAAAAAAAAEBAACAAwAEAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQAAAACAAAAAgAAA/4AAAP+AAAD/AAAAAIAAAACAAAD/gAAA/4AEAAAA/4AAAP+AAAD+gAAA/4AAAP+AAAAAgAAAAIAAAAGAAAAAgAAAAAAABQCAAYADgAQAAAMABwATABcAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAIAAAP+AAYAAgAAA/4D/AAEAAAABAAAA/wAAAP8AAAD/AAAAAQD/gACAAAD/gAGAAIAAAP+ABAAAAP+AAAAAgAAA/4AAAAAAAAD/gAAA/4AAAP+AAAAAgAAAAIAAAP8AAAD/gAAAAIAAAP+AAAAAAAABAQAAgAOAAwAACwAAAQEBAQEBAQEBAQEBAgAAgAAAAQAAAP8AAAD/gAAA/wAAAAEAAwAAAP8AAAD/gAAA/wAAAAEAAAAAgAAAAAAAAQCAAAACAAGAAAcAAAEBAQEBAQEBAQABAAAA/4AAAP8AAAAAgAGAAAD/AAAA/4AAAACAAAAAAAABAIABgAOAAgAAAwAAAQEBAQCAAwAAAP0AAgAAAP+AAAAAAAABAQAAgAIAAYAAAwAAAQEBAQEAAQAAAP8AAYAAAP8AAAAAAAABAIAAgAQAA4AAFwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAwABAAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAIAAAACAA4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAwCAAIADgAQAAAsAEQAXAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/4AAAP4AAAD/gAAAAIAAgAAAAIAAAACAAAD/gAAA/4AAAAEAAAAEAAAA/4AAAP2AAAD/gAAAAIAAAAKAAAAAAP8AAAAAgAAAAID/AP+AAAD/AAAAAYAAAAABAIAAgAOABAAADQAAAQEBAQEBAQEBAQEBAQEBgAEAAAABAAAA/QAAAAEAAAD/AAAAAIAAAACABAAAAP0AAAD/gAAAAIAAAAGAAAAAgAAAAIAAAAABAIAAgAOABAAAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAgAAAACAAAD/gAAA/4AAAP+AAAABgAAA/QAAAACAAAAAgAAAAIAAAACAAAD/AAAA/wAAAACABAAAAP+AAAD/AAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAACAAAABAAAA/wAAAAEAAAAAAAABAIAAgAOABAAAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAgAAAACAAAD/gAAAAIAAAP+AAAD+AAAA/4AAAAEAAAABAAAA/wAAAAEAAAD/AAAA/wAAAACABAAAAP+AAAD/AAAA/4AAAP8AAAD/gAAAAIAAAACAAAD/gAAAAQAAAACAAAABAAAA/4AAAACAAAAAAAABAIAAgAOABAAAEQAAAQEBAQEBAQEBAQEBAQEBAQEBAYABAAAA/4AAAP+AAAABAAAAAQAAAP8AAAD+AAAAAIAAAACABAAAAP+AAAD/gAAA/wAAAAEAAAD9gAAAAQAAAAGAAAAAgAAAAAEAgACAA4AEAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQCAAwAAAP4AAAABgAAAAIAAAP+AAAD+AAAA/4AAAAEAAAABAAAA/gAEAAAA/4AAAP8AAAD/gAAA/wAAAP+AAAAAgAAAAIAAAP+AAAABAAAAAAAAAgCAAIADgAQAABMAFwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQACAAAAAIAAAP8AAAD/AAAAAYAAAACAAAD/gAAA/gAAAP+AAAAAgACAAAABAAAABAAAAP+AAAD/gAAAAIAAAP8AAAD/gAAA/wAAAP+AAAAAgAAAAoAAAP6A/wAAAAEAAAEAgACAA4AEAAAPAAABAQEBAQEBAQEBAQEBAQEBAIADAAAA/4AAAP+AAAD/AAAAAIAAAACAAAD+gAAA/4AEAAAA/oAAAP+AAAD+gAAAAYAAAACAAAABAAAA/4AAAAAAAAMAgACAA4AEAAATABcAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAgAAAACAAAD/gAAAAIAAAP+AAAD+AAAA/4AAAACAAAD/gAAAAIAAgAAAAQAAAP8AAAABAAAABAAAAP+AAAD/AAAA/4AAAP8AAAD/gAAAAIAAAAEAAAAAgAAAAQAAAAAA/wAAAAEA/oD/AAAAAQAAAAACAIAAgAOABAAACwAPAAABAQEBAQEBAQEBAQEBAQEBAQACAAAAAIAAAP8AAAD+gAAA/4AAAACAAIAAAAEAAAAEAAAA/4AAAP0AAAABAAAAAIAAAAGAAAAAAP6AAAABgAACAQABAAIAA4AAAwAHAAABAQEBAQEBAQEAAQAAAP8AAAABAAAA/wADgAAA/wAAAP+AAAD/AAAAAAIAgACAAgADgAADAAsAAAEBAQEBAQEBAQEBAQEAAQAAAP8AAAABAAAA/4AAAP8AAAAAgAOAAAD/AAAA/4AAAP8AAAD/gAAAAIAAAAABAQAAgAOABAAAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQKAAQAAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAP8AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACABAAAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAACAIABgAOAAwAAAwAHAAABAQEBAQEBAQCAAwAAAP0AAAADAAAA/QADAAAA/4AAAP+AAAD/gAAAAAEAgACAAwAEAAAbAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAIABAAAAAIAAAACAAAAAgAAA/4AAAP+AAAD/gAAA/wAAAACAAAAAgAAAAIAAAP+AAAD/gAAA/4AEAAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAAAAAAIAgACAA4AEAAATABcAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAgAAAACAAAD/gAAA/4AAAP8AAAAAgAAAAIAAAP8AAAD/AAAAAIAAgAEAAAD/AAQAAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAAA/4AAAACAAAD+AAAA/wAAAAACAIAAgAOABAAAEQAVAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQACAAAAAIAAAP6AAAAAgAAA/wAAAAGAAAD+AAAA/4AAAACAAgAAgAAA/4AEAAAA/4AAAP6AAAABAAAAAIAAAP2AAAD/gAAAAIAAAAKAAAD+AAAA/4AAAAAAAAIAgACAA4AEAAAPABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAYABAAAAAIAAAACAAAD/AAAA/wAAAP8AAAAAgAAAAIAAAAAAAQAAAAQAAAD/gAAA/4AAAP2AAAABAAAA/wAAAAKAAAAAgAAA/4D/AAAAAQAAAwCAAIADgAQAAAsADwATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQCAAoAAAACAAAD/gAAAAIAAAP+AAAD9gAEAAAABAAAA/wAAAAEAAAAEAAAA/4AAAP8AAAD/gAAA/wAAAP+AAAADAP8AAAABAP6A/wAAAAEAAAAAAQCAAIADgAQAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQACAAAAAIAAAP8AAAD/AAAAAQAAAAEAAAD/gAAA/gAAAP+AAAAAgAQAAAD/gAAA/4AAAACAAAD9gAAAAIAAAP+AAAD/gAAAAIAAAAKAAAAAAAACAIAAgAOABAAACwATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQCAAgAAAACAAAAAgAAA/4AAAP+AAAD+AAEAAAAAgAAAAIAAAP+AAAAEAAAA/4AAAP+AAAD+gAAA/4AAAP+AAAADAP2AAAAAgAAAAYAAAACAAAEAgACAA4AEAAAXAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/wAAAP8AAAABAAAA/wAAAAEAAAABAAAA/4AAAP4AAAD/gAAAAIAEAAAA/4AAAP+AAAAAgAAA/wAAAP+AAAD/AAAAAIAAAP+AAAD/gAAAAIAAAAKAAAAAAAABAIAAgAOABAAACQAAAQEBAQEBAQEBAQCAAwAAAP4AAAABAAAA/wAAAP8ABAAAAP+AAAD/AAAA/4AAAP6AAAAAAQCAAIADgAQAABUAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/wAAAP8AAAABAAAA/4AAAAGAAAD/gAAA/gAAAP+AAAAAgAQAAAD/gAAA/4AAAACAAAD9gAAAAQAAAACAAAD+gAAA/4AAAACAAAACgAAAAAEAgACAA4AEAAALAAABAQEBAQEBAQEBAQEAgAEAAAABAAAAAQAAAP8AAAD/AAAA/wAEAAAA/gAAAAIAAAD8gAAAAQAAAP8AAAAAAAABAIAAgAOABAAACwAAAQEBAQEBAQEBAQEBAIADAAAA/wAAAAEAAAD9AAAAAQAAAP8ABAAAAP+AAAD9gAAA/4AAAACAAAACgAAAAAAAAQCAAIAEAAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEBAAMAAAD/gAAA/4AAAP4AAAD/gAAAAQAAAAEAAAD+gAQAAAD/gAAA/YAAAP+AAAAAgAAAAQAAAP8AAAACgAAAAAAAAQCAAIADgAQAABsAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAEAAAAAgAAAAIAAAAEAAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAD/AAAA/4AAAP+AAAD/AAQAAAD/AAAAAIAAAACAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAD/AAAAAAAAAQCAAIADgAQAAAUAAAEBAQEBAQCAAQAAAAIAAAD9AAQAAAD9AAAA/4AAAAABAIAAgAQABAAAEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAEAAAAAgAAAAIAAAACAAAABAAAA/wAAAP+AAAD/gAAA/4AAAP8ABAAAAP+AAAD/gAAAAIAAAACAAAD8gAAAAgAAAP+AAAAAgAAA/gAAAAAAAAEAgACABAAEAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQCAAQAAAACAAAAAgAAAAIAAAAEAAAD/AAAA/4AAAP+AAAD/gAAA/wAEAAAA/4AAAP+AAAD/gAAAAYAAAPyAAAABAAAAAIAAAACAAAD+AAAAAAAAAgCAAIADgAQAAAsADwAAAQEBAQEBAQEBAQEBAQEBAQEAAgAAAACAAAD/gAAA/gAAAP+AAAAAgACAAAABAAAABAAAAP+AAAD9gAAA/4AAAACAAAACgAAAAAD9gAAAAoAAAgCAAIADgAQAAAkADQAAAQEBAQEBAQEBAQEBAQEAgAKAAAAAgAAA/4AAAP6AAAD/AAEAAAABAAAABAAAAP+AAAD+gAAA/4AAAP8AAAADAP6AAAABgAAAAAIAgACABAAEAAAPABcAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAgAAAACAAAAAgAAA/4AAAP+AAAD+AAAA/4AAAACAAIAAAAEAAAD/gAAAAIAAAAQAAAD/gAAA/gAAAP8AAAAAgAAA/4AAAACAAAACgAAAAAD9gAAAAIAAAACAAAABgAACAIAAgAOABAAAEwAXAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAKAAAAAgAAA/4AAAP+AAAAAgAAAAIAAAP8AAAD/gAAA/4AAAP8AAQAAAAEAAAAEAAAA/4AAAP8AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAD/AAAAAwD/AAAAAQAAAQCAAIADgAQAABsAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/wAAAP8AAAABgAAAAIAAAP+AAAD+AAAA/4AAAAEAAAABAAAA/oAAAP+AAAAAgAQAAAD/gAAA/4AAAACAAAD/AAAA/4AAAP8AAAD/gAAAAIAAAACAAAD/gAAAAQAAAACAAAABAAAAAAAAAQCAAIADgAQAAAcAAAEBAQEBAQEBAIADAAAA/wAAAP8AAAD/AAQAAAD/gAAA/QAAAAMAAAAAAAABAIAAgAOABAAACwAAAQEBAQEBAQEBAQEBAIABAAAAAQAAAAEAAAD/gAAA/gAAAP+ABAAAAP0AAAADAAAA/QAAAP+AAAAAgAAAAAAAAQCAAIADgAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEAgAEAAAABAAAAAQAAAP+AAAD/gAAA/wAAAP+AAAD/gAQAAAD+AAAAAgAAAP4AAAD/AAAA/4AAAACAAAABAAAAAAAAAQCAAIAEAAQAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAIABAAAAAIAAAACAAAAAgAAAAQAAAP8AAAD/gAAA/4AAAP+AAAD/AAQAAAD+AAAAAIAAAP+AAAACAAAA/IAAAACAAAAAgAAA/4AAAP+AAAAAAAABAIAAgAOABAAAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQCAAQAAAAEAAAABAAAA/4AAAP+AAAAAgAAAAIAAAP8AAAD/AAAA/wAAAACAAAAAgAAA/4AAAP+ABAAAAP8AAAABAAAA/wAAAP+AAAD/gAAA/4AAAP8AAAABAAAA/wAAAAEAAAAAgAAAAIAAAACAAAAAAAABAIAAgAOABAAADwAAAQEBAQEBAQEBAQEBAQEBAQCAAQAAAAEAAAABAAAA/4AAAP+AAAD/AAAA/4AAAP+ABAAAAP6AAAABgAAA/oAAAP+AAAD+gAAAAYAAAACAAAAAAAABAIAAgAOABAAAFwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAIADAAAA/4AAAP+AAAD/gAAA/4AAAAIAAAD9AAAAAIAAAACAAAAAgAAAAIAAAP4ABAAAAP8AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAAEAAAAAgAAAAIAAAACAAAAAgAAAAAAAAQEAAIADAAQAAAcAAAEBAQEBAQEBAQACAAAA/wAAAAEAAAD+AAQAAAD/gAAA/YAAAP+AAAAAAAABAIAAgAQAA4AAFwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAIABAAAAAIAAAACAAAAAgAAAAIAAAACAAAD/AAAA/4AAAP+AAAD/gAAA/4AAAP+AA4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAQEAAIADAAQAAAcAAAEBAQEBAQEBAQACAAAA/gAAAAEAAAD/AAQAAAD8gAAAAIAAAAKAAAAAAAABAIACAAQABAAAFwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgAAgAAAAIAAAACAAAAAgAAA/wAAAP+AAAD/gAAA/4AAAP8AAAAAgAAAAIAAAACABAAAAP+AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAP+AAAD/gAAAAIAAAACAAAAAgAAAAAAAAQCAAIADgAEAAAMAAAEBAQEAgAMAAAD9AAEAAAD/gAAAAAAAAQEAAoACgAQAAAkAAAEBAQEBAQEBAQEBAAEAAAAAgAAA/4AAAP+AAAD/gAQAAAD/gAAA/wAAAACAAAAAgAAAAAEAgACAA4ADAAAPAAABAQEBAQEBAQEBAQEBAQEBAQACgAAA/4AAAP+AAAD/AAAAAQAAAP6AAAD/gAAAAIADAAAA/YAAAACAAAABgAAA/oAAAP+AAAAAgAAAAYAAAAAAAAIAgACAA4AEAAAJAA0AAAEBAQEBAQEBAQEBAQEBAIABAAAAAYAAAACAAAD/gAAA/YABAAAAAQAAAAQAAAD/AAAA/4AAAP6AAAD/gAAAAgD+gAAAAYAAAAABAIAAgAOAAwAAEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/wAAAP8AAAABAAAAAQAAAP+AAAD+AAAA/4AAAACAAwAAAP+AAAD/gAAAAIAAAP6AAAAAgAAA/4AAAP+AAAAAgAAAAYAAAAAAAAIAgACAA4AEAAAJAA0AAAEBAQEBAQEBAQEBAQEBAoABAAAA/YAAAP+AAAAAgAAAAYD/AAAAAQAAAAQAAAD8gAAAAIAAAAGAAAAAgAAA/4D+gAAAAYAAAAACAIAAgAOAAwAADQARAAABAQEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/gAAAAGAAAD+AAAA/4AAAACAAIAAAAEAAAADAAAA/4AAAP8AAAD/gAAA/4AAAACAAAABgAAAAAD/gAAAAIAAAAABAQAAgAOAA4AACwAAAQEBAQEBAQEBAQEBAYACAAAA/oAAAAEAAAD/AAAA/wAAAACAA4AAAP+AAAD/AAAA/4AAAP8AAAACgAAAAAAAAgCAAIADgAOAAA8AEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/4AAAP4AAAABgAAA/oAAAP+AAAAAgACAAAABAAAAA4AAAP+AAAD+AAAA/4AAAACAAAAAgAAAAIAAAAEAAAAAAP8AAAABAAABAIAAgAOABAAACwAAAQEBAQEBAQEBAQEBAIABAAAAAYAAAACAAAD/AAAA/wAAAP8ABAAAAP8AAAD/gAAA/gAAAAIAAAD+AAAAAAAAAgGAAIACgAQAAAMABwAAAQEBAQEBAQEBgAEAAAD/AAAAAQAAAP8ABAAAAP+AAAD/gAAA/YAAAAACAIAAgAOABAAAAwAPAAABAQEBAQEBAQEBAQEBAQEBAoABAAAA/wAAAAEAAAD/gAAA/gAAAP+AAAABAAAAAQAEAAAA/4AAAP+AAAD+AAAA/4AAAACAAAABAAAA/wAAAAABAIAAgAOAA4AAEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAEAAAAAgAAAAQAAAP+AAAAAgAAAAIAAAP8AAAD/gAAA/4AAAP8AA4AAAP8AAAAAgAAA/4AAAP8AAAD/gAAA/4AAAACAAAAAgAAA/wAAAAAAAAEBgACAAwAEAAAHAAABAQEBAQEBAQGAAQAAAACAAAD/AAAA/4AEAAAA/QAAAP+AAAAAgAAAAAAAAQCAAIAEAAMAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAAAAIAAAAEAAAAAgAAA/wAAAP+AAAD/gAAA/4AAAP8AAAAAgAMAAAD/gAAAAIAAAP+AAAD+AAAAAYAAAP+AAAAAgAAA/oAAAAIAAAAAAAABAIAAgAOAAwAADwAAAQEBAQEBAQEBAQEBAQEBAQCAAQAAAACAAAABAAAAAIAAAP8AAAD/gAAA/4AAAP8AAwAAAP+AAAAAgAAA/4AAAP4AAAABgAAA/4AAAP8AAAAAAAACAIAAgAOAAwAACwAPAAABAQEBAQEBAQEBAQEBAQEBAQACAAAAAIAAAP+AAAD+AAAA/4AAAACAAIAAAAEAAAADAAAA/4AAAP6AAAD/gAAAAIAAAAGAAAAAAP6AAAABgAACAIAAgAOAAwAACQANAAABAQEBAQEBAQEBAQEBAQCAAoAAAACAAAD/gAAA/oAAAP8AAQAAAAEAAAADAAAA/4AAAP+AAAD/gAAA/wAAAAIA/4AAAACAAAAAAgCAAIAEAAMAAA0AEQAAAQEBAQEBAQEBAQEBAQEBAQEBAQACgAAAAIAAAP+AAAD/AAAA/oAAAP+AAAAAgACAAAABAAAAAwAAAP6AAAD/gAAA/4AAAAEAAAAAgAAAAIAAAAAA/4AAAACAAAAAAQEAAIADgAMAAAkAAAEBAQEBAQEBAQEBAAIAAAAAgAAA/wAAAP+AAAD/AAMAAAD/gAAA/wAAAAEAAAD+AAAAAAEAgACABAADAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEAAoAAAP6AAAABgAAAAIAAAP+AAAD9AAAAAgAAAP6AAAD/gAAAAIADAAAA/4AAAP+AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAAAgAAAAAAAAQCAAIADgAOAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAAAAQAAAP8AAAAAgAAAAQAAAP+AAAD+gAAA/4AAAP+AAAAAgAOAAAD/gAAA/4AAAP6AAAAAgAAA/4AAAP+AAAAAgAAAAYAAAACAAAAAAAABAIAAgAOAAwAADwAAAQEBAQEBAQEBAQEBAQEBAQCAAQAAAACAAAAAgAAAAQAAAP+AAAD/gAAA/oAAAP+AAwAAAP4AAAAAgAAAAYAAAP2AAAAAgAAA/4AAAACAAAAAAAABAIAAgAOAAwAADwAAAQEBAQEBAQEBAQEBAQEBAQCAAQAAAAEAAAABAAAA/4AAAP+AAAD/AAAA/4AAAP+AAwAAAP6AAAABgAAA/oAAAP+AAAD/gAAAAIAAAACAAAAAAAABAIAAgAQAAwAAEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAEAAAAAgAAAAIAAAACAAAABAAAA/4AAAP8AAAD/gAAA/wAAAP+AAwAAAP6AAAAAgAAA/4AAAAGAAAD+AAAA/4AAAACAAAD/gAAAAIAAAAAAAAEAgACAA4ADAAAbAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAIABAAAAAQAAAAEAAAD/gAAA/4AAAACAAAAAgAAA/wAAAP8AAAD/AAAAAIAAAACAAAD/gAAA/4ADAAAA/4AAAACAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAD/gAAAAIAAAACAAAAAgAAAAIAAAAAAAAEAgACAA4ADAAAPAAABAQEBAQEBAQEBAQEBAQEBAIABAAAAAQAAAAEAAAD/gAAA/gAAAAGAAAD+gAAA/4ADAAAA/wAAAAEAAAD+AAAA/4AAAACAAAAAgAAAAIAAAAAAAAEAgACAA4ADAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQCAAwAAAP+AAAD/gAAA/4AAAAGAAAD9AAAAAIAAAACAAAAAgAAA/oADAAAA/4AAAP+AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAAAgAAAAAAAAQCAAIADAAQAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAYABgAAA/wAAAP+AAAAAgAAAAQAAAP6AAAD/gAAA/4AAAACAAAAAgAQAAAD/gAAA/wAAAP+AAAD/AAAA/4AAAACAAAABAAAAAIAAAAEAAAAAAAABAYAAgAKABAAAAwAAAQEBAQGAAQAAAP8ABAAAAPyAAAAAAAABAQAAgAOABAAAEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAGAAAAAgAAAAIAAAP+AAAD/gAAA/oAAAAEAAAAAgAAA/4AAAP8ABAAAAP+AAAD/AAAA/4AAAP8AAAD/gAAAAIAAAAEAAAAAgAAAAQAAAAAAAAEAgAGAA4ADAAAPAAABAQEBAQEBAQEBAQEBAQEBAQABAAAAAQAAAACAAAD/gAAA/wAAAP8AAAD/gAAAAIADAAAA/4AAAACAAAD/AAAA/4AAAACAAAD/gAAAAQAAAAAAAAEAAAAABAAEAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQAAAYAAAAEAAAAAgAAAAIAAAACAAAD/AAAA/4AAAP+AAAD/AAAA/wAEAAAA/4AAAP+AAAD/gAAA/wAAAP6AAAABAAAAAQAAAACAAAAAgAAAAAAAAQIAAAAEAAQAAAMAAAEBAQECAAIAAAD+AAQAAAD8AAAAAAAAAgCAAIADgAQAABcAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQGAAYAAAP8AAAABAAAA/4AAAP+AAAABgAAA/QAAAACAAAAAgAAA/wAAAACAAAAAgAGAAIAAAP+ABAAAAP+AAAD/AAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAACAAAABAAAAAAAAAP+AAAAAAQCAAIADgAQAABsAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAEAAAABAAAAAQAAAP+AAAAAgAAA/wAAAAEAAAD/AAAA/wAAAP8AAAABAAAA/wAAAACAAAD/gAQAAAD+gAAAAYAAAP8AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAABACAAIAEAAQAABcAGwAfACMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAoAAAP4AAAABgAAAAIAAAACAAAD/gAAA/YAAAAIAAAD+gAAA/4AAAP+AAAAAgAEAAAAAgAAAAQAAgAAA/4D9AACAAAD/gAQAAAD/gAAA/4AAAP+AAAD/gAAA/wAAAP+AAAAAgAAAAIAAAACAAAAAgAAAAQAAAP8A/4AAAACAAQAAAP+AAAD+gAAA/4AAAAAEAIAAgAQAA4AAAwAHAAsADwAAAQEBAQEBAQEBAQEBAQEBAQCAAIAAAP+AAQAAgAAA/4ABAACAAAD/gAEAAIAAAP+AA4AAAP0AAAADAAAA/QAAAAMAAAD9AAAAAwAAAP0AAAAAAQIAAAAEAAQAAAkAAAEBAQEBAQEBAQEDgACAAAD+AAAAAIAAAACAAAAAgAQAAAD8AAAAAQAAAAEAAAABAAAAAAgAAAAABAAEAAADAAcACwAPABMAFwAbAB8AAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAABAAAA/wACAAEAAAD/AP8AAQAAAP8AAgABAAAA/wD9AAEAAAD/AAIAAQAAAP8A/wABAAAA/wACAAEAAAD/AAQAAAD/AAAAAQAAAP8AAAAAAAAA/wAAAAEAAAD/AAAAAAAAAP8AAAABAAAA/wAAAAAAAAD/AAAAAQAAAP8AAAAAAQIAAAADAAQAAAMAAAEBAQECAAEAAAD/AAQAAAD8AAAAAAAAAgGAAIACgAQAAAMABwAAAQEBAQEBAQEBgAEAAAD/AAAAAQAAAP8ABAAAAP6AAAD/gAAA/oAAAAABAgAAAAQAAgAAAwAAAQEBAQIAAgAAAP4AAgAAAP4AAAAAAAAEAIAAAAQABAAAAwAHAAsADwAAAQEBAQEBAQEBAQEBAQEBAQCAAIAAAP+AAQAAgAAA/4ABAACAAAD/gAEAAIAAAP+ABAAAAPwAAAAEAAAA/AAAAAQAAAD8AAAABAAAAPwAAAAAAQCAAIADgAOAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAoABAAAA/oAAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAAEAAAD/gAOAAAD+AAAA/wAAAACAAAAAgAAAAIAAAACAAAAAgAAA/wAAAAEAAAAAAAABAAAAAAQABAAACwAAAQEBAQEBAQEBAQEBAAAEAAAA/gAAAP+AAAD/gAAA/4AAAP+ABAAAAPwAAAAAgAAAAIAAAACAAAAAgAAAAAAAAQCAAIAEAAOAABsAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAgACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAOAAAD/gAAAAIAAAP8AAAABAAAA/oAAAAGAAAD9AAAAAIAAAP+AAAABAAAA/wAAAAGAAAD+gAAAAAAAAQAAAAACAAQAAAkAAAEBAQEBAQEBAQEAAACAAAAAgAAAAIAAAACAAAD+AAQAAAD/AAAA/wAAAP8AAAD/AAAAAAEAAAAABAAEAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQKAAYAAAP8AAAD/AAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAQAEAAAA/wAAAP+AAAD/gAAA/wAAAP8AAAABgAAAAQAAAACAAAAAgAAAAAAAAQAAAAAEAAIAAA8AAAEBAQEBAQEBAQEBAQEBAQEBgAEAAAAAgAAAAIAAAACAAAD8AAAAAIAAAACAAAAAgAIAAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAAAAAAAAgAAAAAEAAQAAAMABwAAAQEBAQEBAQEAAAIAAAD+AAIAAgAAAP4ABAAAAP4AAAAAAAAA/gAAAAAEAAACAAQABAAAAwAHAAsADwAAAQEBAQEBAQEBAQEBAQEBAQAAAQAAAP8AAgABAAAA/wD/AAEAAAD/AAIAAQAAAP8ABAAAAP8AAAABAAAA/wAAAAAAAAD/AAAAAQAAAP8AAAAABAIAAAAEAAQAAAMABwALAA8AAAEBAQEBAQEBAQEBAQEBAQECAAEAAAD/AAEAAQAAAP8A/wABAAAA/wABAAEAAAD/AAQAAAD/AAAAAAAAAP8AAAAAAAAA/wAAAAAAAAD/AAAAAAEDAAAABAAEAAADAAABAQEBAwABAAAA/wAEAAAA/AAAAAAAAAEAAAAABAAEAAAFAAABAQEBAQEAAAQAAAD9AAAA/wAEAAAA/wAAAP0AAAAAAQAAAAABAAQAAAMAAAEBAQEAAAEAAAD/AAQAAAD8AAAAAAAAAwCAAIADAAOAAAMABwALAAABAQEBAQEBAQEBAQEAgACAAAD/gAEAAIAAAP+AAQAAgAAA/4ADgAAA/QAAAAMAAAD9AAAAAwAAAP0AAAAAAAABAYABgAQABAAACwAAAQEBAQEBAQEBAQEBAYABAAAAAIAAAAEAAAD+gAAA/4AAAP+ABAAAAP8AAAD/gAAA/wAAAACAAAAAgAAAAAAAAQAAAYACgAQAAAsAAAEBAQEBAQEBAQEBAQGAAQAAAP+AAAD/gAAA/oAAAAEAAAAAgAQAAAD+gAAA/4AAAP+AAAABAAAAAIAAAAAAAAEAAAAABAAEAAAJAAABAQEBAQEBAQEBAwABAAAA/AAAAAEAAAABAAAAAQAEAAAA/AAAAAKAAAAAgAAAAIAAAAABAIAAgAMABAAACwAAAQEBAQEBAQEBAQEBAgABAAAA/4AAAP6AAAD/gAAAAIAAAAEABAAAAP0AAAD/gAAAAIAAAAEAAAAAgAAAAAAAAQAAAAAEAAQAAAUAAAEBAQEBAQAAAQAAAAMAAAD8AAQAAAD9AAAA/wAAAAACAIAAgAMAAoAACwAPAAABAQEBAQEBAQEBAQEBAQEBAQABgAAAAIAAAP+AAAD+gAAAAQAAAP8A/4AAgAAA/4ACgAAA/4AAAP8AAAD/gAAAAIAAAAEAAAAAAAAA/wAAAAACAIAAgAMABAAACwAPAAABAQEBAQEBAQEBAQEBAQEBAgABAAAA/4AAAP6AAAABAAAA/wAAAAEA/oAAgAAA/4AEAAAA/QAAAP+AAAAAgAAAAQAAAACAAAD/gAAA/wAAAAABAIAAgAQABAAADQAAAQEBAQEBAQEBAQEBAQECAAIAAAD/AAAA/4AAAP6AAAD/gAAAAIAAAAEABAAAAP+AAAD9gAAA/4AAAACAAAABAAAAAIAAAAACAAAAAAQABAAAAwAHAAABAQEBAQEBAQAABAAAAPwAAQAAAAIAAAAEAAAA/AAAAAMA/gAAAAIAAAEAgACABAAEAAARAAABAQEBAQEBAQEBAQEBAQEBAQECAAIAAAD/AAAAAQAAAP8AAAD/gAAA/oAAAP+AAAAAgAAAAQAEAAAA/4AAAP+AAAD/gAAA/oAAAP+AAAAAgAAAAQAAAACAAAAAAQAAAAACgAKAAAsAAAEBAQEBAQEBAQEBAQAAAYAAAACAAAAAgAAA/wAAAP+AAAD/AAKAAAD/gAAA/4AAAP6AAAABAAAAAIAAAAAAAAEAAAAABAAEAAAFAAABAQEBAQEAAAQAAAD/AAAA/QAEAAAA/AAAAAMAAAAAAQCAAIAEAAQAABUAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAAIAAAD/AAAAAQAAAP8AAAABAAAA/wAAAP+AAAD+gAAA/4AAAACAAAABAAQAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAAEAAAAAgAAAAAEBgAAABAACgAALAAABAQEBAQEBAQEBAQECgAGAAAD/AAAA/4AAAP8AAAAAgAAAAIACgAAA/wAAAP+AAAD/AAAAAYAAAACAAAAAAAABAAAAAAQABAAAEQAAAQEBAQEBAQEBAQEBAQEBAQEBAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAPwABAAAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAAEAAAAABAABAAADAAABAQEBAAAEAAAA/AABAAAA/wAAAAAAAAEAAAAABAAEAAARAAABAQEBAQEBAQEBAQEBAQEBAQEDgACAAAD8AAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAEAAAA/AAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAQAAAgAEAAQAAAMAAAEBAQEAAAQAAAD8AAQAAAD+AAAAAAAAAgCAAIACAAOAAAMABwAAAQEBAQEBAQEAgACAAAD/gAEAAIAAAP+AA4AAAP0AAAADAAAA/QAAAAAEAIAAgAQABAAAAwAHAAsADwAAAQEBAQEBAQEBAQEBAQEBAQCAA4AAAPyAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAABAAAAPyAAAADAP+AAAAAgP8A/4AAAACA/wD/gAAAAIAAAQAAAAAEAAQAAAUAAAEBAQEBAQMAAQAAAPwAAAADAAQAAAD8AAAAAQAAAAACAIAAgAQABAAAAwAHAAABAQEBAQEBAQCAA4AAAPyAAYAAAACAAAAEAAAA/IAAAAIA/4AAAACAAAMAgACABAAEAAADAAcACwAAAQEBAQEBAQEBAQEBAIADgAAA/IAAgAAAAIAAAAGAAAAAgAAABAAAAPyAAAADAP+AAAAAgP4A/4AAAACAAAAABAAAAIAEAAQAAAMABwALAA8AAAEBAQEBAQEBAQEBAQEBAQEAAAQAAAD8AAAABAAAAPwAAAAEAAAA/AAAAAQAAAD8AAQAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAAYAgACABAAEAAADAAcACwAPABMAFwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAIADgAAA/IAAgAAAAIAAAAGAAAAAgAAA/oAAAACAAAD+gAAAAIAAAAGAAAAAgAAABAAAAPyAAAADAP+AAAAAgAAA/4AAAACA/wD/gAAAAID/AP+AAAAAgAAA/4AAAACAAAEAgACAAQADgAADAAABAQEBAIAAgAAA/4ADgAAA/QAAAAAAAAUAgACABAAEAAADAAcACwAPABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAIADgAAA/IAAgAAAAIAAAAGAAAAAgAAA/YAAAACAAAABgAAAAIAAAAQAAAD8gAAAAwD/gAAAAIAAAP+AAAAAgP4A/4AAAACAAAD/gAAAAIAAAAABAAADAAQABAAAAwAAAQEBAQAABAAAAPwABAAAAP8AAAAAAAAHAIAAgAQABAAAAwAHAAsADwATABcAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQCAA4AAAPyAAIAAAACAAAABgAAAAIAAAP2AAAAAgAAAAYAAAACAAAD9gAAAAIAAAAGAAAAAgAAABAAAAPyAAAADAP+AAAAAgAAA/4AAAACA/wD/gAAAAIAAAP+AAAAAgP8A/4AAAACAAAD/gAAAAIAAAAAEAAAAAAQAAgAAAwAHAAsADwAAAQEBAQEBAQEBAQEBAQEBAQAAAQAAAP8AAgABAAAA/wD/AAEAAAD/AAIAAQAAAP8AAgAAAP8AAAABAAAA/wAAAAAAAAD/AAAAAQAAAP8AAAAAAQAAAAAEAAQAAAkAAAEBAQEBAQEBAQEAAAEAAAABAAAAAQAAAAEAAAD8AAQAAAD/gAAA/4AAAP+AAAD9gAAAAAEBAAAAAgAEAAADAAABAQEBAQABAAAA/wAEAAAA/AAAAAAAAAEAAAAABAAEAAALAAABAQEBAQEBAQEBAQECgAGAAAD8AAAAAIAAAACAAAAAgAAAAQAEAAAA/AAAAAGAAAABAAAAAIAAAACAAAAAAAABAAABAAQAAgAAAwAAAQEBAQAABAAAAPwAAgAAAP8AAAAAAAABAAAAAAQABAAACwAAAQEBAQEBAQEBAQEBAgACAAAA/AAAAACAAAAAgAAAAIAAAACABAAAAPwAAAACAAAAAIAAAACAAAAAgAAAAAAAAQAAAAAEAAIAAAkAAAEBAQEBAQEBAQEDAAEAAAD8AAAAAQAAAAEAAAABAAIAAAD+AAAAAIAAAACAAAAAgAAAAAEAAAAABAAEAAALAAABAQEBAQEBAQEBAQEAAAIAAAAAgAAAAIAAAACAAAAAgAAA/AAEAAAA/4AAAP+AAAD/gAAA/4AAAP4AAAAAAAADAAAAAAQABAAAGwAnADMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAEAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAD/AAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAIAAYAAAACAAAD/gAAA/4AAAP+AAAD/gP4AAIAAAACAAAAAgAAAAIAAAP6AAAD/gAQAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAQAAAP+AAAD+gAAAAIAAAACAAAAAgAAA/oAAAP+AAAD/gAAA/4AAAP+AAAAAgAAAAAAAAQAAAAAEAAIAAAkAAAEBAQEBAQEBAQEAAAEAAAABAAAAAQAAAAEAAAD8AAIAAAD/gAAA/4AAAP+AAAD/gAAAAAEAAAAABAAEAAALAAABAQEBAQEBAQEBAQEAAAGAAAABAAAAAIAAAACAAAAAgAAA/AAEAAAA/4AAAP+AAAD/gAAA/wAAAP6AAAAAAAAEAAAAgAQABAAAAwAHAAsADwAAAQEBAQEBAQEBAQEBAQEBAQCAAYAAAP6AAgABgAAA/oD9gAGAAAD+gAIAAYAAAP6ABAAAAP6AAAABgAAA/oAAAP+AAAD+gAAAAYAAAP6AAAAAAQIAAgAEAAQAAAMAAAEBAQECAAIAAAD+AAQAAAD+AAAAAAAABACAAIAEAAQAAAMABwAjACcAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAAD/AAGAAQAAAP8A/gAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4ABgACAAAD/gAQAAAD/gAAAAIAAAP+AAAAAAAAA/wAAAP+AAAD/gAAAAIAAAACAAAABAAAA/oAAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAAGAAAD/gAAAAAQAAAAABAAEAAADAAcACwAPAAABAQEBAQEBAQEBAQEBAQEBAAAAgAAA/4ADgACAAAD/gPyAAIAAAP+AA4AAgAAA/4AEAAAA/4AAAACAAAD/gAAA/QAAAP+AAAAAgAAA/4AAAAABAAAAAAIAAgAAAwAAAQEBAQAAAgAAAP4AAgAAAP4AAAAAAAAEAAAAAAIABAAAAwAHAAsADwAAAQEBAQEBAQEBAQEBAQEBAQAAAQAAAP8AAQABAAAA/wD/AAEAAAD/AAEAAQAAAP8ABAAAAP8AAAAAAAAA/wAAAAAAAAD/AAAAAAAAAP8AAAAAAQCAAQADgAOAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAYABAAAA/4AAAAGAAAD+gAAAAIAAAP8AAAD/gAAA/4AAAACAAAAAgAOAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAACAAAAAAAABAQABAAOABAAAEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQECAACAAAAAgAAAAIAAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACABAAAAP+AAAD/gAAA/wAAAACAAAD+gAAAAYAAAP+AAAABAAAAAIAAAAAAAAEBAAEABAADgAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQIAAQAAAACAAAAAgAAA/4AAAP+AAAD/AAAAAIAAAP6AAAABgAAA/4ADgAAA/4AAAP+AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAAAgAAAAAAAAQEAAIADgAOAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAgAAgAAAAIAAAACAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAOAAAD+gAAAAIAAAP8AAAD/gAAA/4AAAACAAAAAgAAAAQAAAP+AAAAAAAABAQAAgAOABAAADwAAAQEBAQEBAQEBAQEBAQEBAQIAAIAAAACAAAAAgAAA/4AAAP6AAAD/gAAAAIAAAACABAAAAP8AAAD/AAAA/wAAAP+AAAAAgAAAAQAAAAEAAAAAAAACAIAAgAOAA4AAAwAJAAABAQEBAQEBAQEBAIADAAAA/QAAgAAAAgAAAP8AAAADgAAA/QAAAAKA/gAAAAEAAAABAAAAAAIAgACABAAEAAAbACcAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAACAAAAAgAAAAIAAAACAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAAAAAD/gAAAAIAAAACAAAAAgAAA/4AAAAQAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAA/4D/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAEAAAIABAADAAADAAABAQEBAAAEAAAA/AADAAAA/wAAAAAAAAEAAAAABAAEAAALAAABAQEBAQEBAQEBAQEAAAQAAAD/gAAA/4AAAP+AAAD/gAAA/gAEAAAA/gAAAP+AAAD/gAAA/4AAAP+AAAAAAAABAAACAAIABAAAAwAAAQEBAQAAAgAAAP4ABAAAAP4AAAAAAAACAQAAgAOAA4AAFwAbAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAYABgAAAAIAAAP8AAAAAgAAAAIAAAP8AAAD/gAAA/wAAAACAAAAAgAAA/wAAAACAAIAAAACAAAADgAAA/wAAAP+AAAD/gAAA/4AAAP+AAAAAgAAA/4AAAACAAAAAgAAAAIAAAACAAAAAgP+AAAAAgAADAAAAAAQABAAACwAnADMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAGAAAD/gAAA/4AAAP+AAAD/gAAAAIACgAEAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgACAAIAAAP+AAAD+gAAAAIAAAACAAAAAgAQAAAD/gAAA/4AAAP+AAAD/gAAAAYAAAACAAAD/AAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAQAAAACAAAAAgAAAAIAAAACAAAAAgAAA/oAAAP6AAAD/gAAAAIAAAACAAAAAgAAAAAAAAgCAAIADgAQAAA8AHwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAAABAAAAAIAAAP+AAAD/AAAA/wAAAP+AAAAAgAAAAQAAAAEAAAAAgAAA/4AAAP8AAAD/AAAA/4AAAACABAAAAP+AAAAAgAAA/wAAAP+AAAAAgAAA/4AAAAEAAAD+gAAA/4AAAACAAAD/AAAA/4AAAACAAAD/gAAAAQAAAAABAAAAAAQAA4AACwAAAQEBAQEBAQEBAQEBAQACAAAAAIAAAACAAAD8AAAAAIAAAACAA4AAAP+AAAD/gAAA/YAAAAKAAAAAgAAAAAAAAQAAAAACAAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEAAACAAAAAgAAAAIAAAACAAAD/gAAA/4AAAP+AAAD/gAQAAAD/gAAA/4AAAP+AAAD/AAAA/4AAAP+AAAD/gAAAAAAAAQIAAAAEAAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEDgACAAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAQAAAD8AAAAAIAAAACAAAAAgAAAAQAAAACAAAAAgAAAAAAAAQCAAIAEAAQAABcAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQIAAIAAAACAAAAAgAAAAIAAAP+AAAD/AAAA/4AAAP8AAAD/gAAAAIAAAACAAAAAgAQAAAD/gAAA/4AAAP+AAAD/gAAA/oAAAAEAAAD/AAAAAYAAAACAAAAAgAAAAIAAAAAAACAAAAAABAAEAAADAAcACwAPABMAFwAbAB8AIwAnACsALwAzADcAOwA/AEMARwBLAE8AUwBXAFsAXwBjAGcAawBvAHMAdwB7AH8AAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAgAAA/4ABAACAAAD/gAEAAIAAAP+AAQAAgAAA/4D9gACAAAD/gAEAAIAAAP+AAQAAgAAA/4ABAACAAAD/gPyAAIAAAP+AAQAAgAAA/4ABAACAAAD/gAEAAIAAAP+A/YAAgAAA/4ABAACAAAD/gAEAAIAAAP+AAQAAgAAA/4D8gACAAAD/gAEAAIAAAP+AAQAAgAAA/4ABAACAAAD/gP2AAIAAAP+AAQAAgAAA/4ABAACAAAD/gAEAAIAAAP+A/IAAgAAA/4ABAACAAAD/gAEAAIAAAP+AAQAAgAAA/4D9gACAAAD/gAEAAIAAAP+AAQAAgAAA/4ABAACAAAD/gAQAAAD/gAAAAIAAAP+AAAAAgAAA/4AAAACAAAD/gAAAAAAAAP+AAAAAgAAA/4AAAACAAAD/gAAAAIAAAP+AAAAAAAAA/4AAAACAAAD/gAAAAIAAAP+AAAAAgAAA/4AAAAAAAAD/gAAAAIAAAP+AAAAAgAAA/4AAAACAAAD/gAAAAAAAAP+AAAAAgAAA/4AAAACAAAD/gAAAAIAAAP+AAAAAAAAA/4AAAACAAAD/gAAAAIAAAP+AAAAAgAAA/4AAAAAAAAD/gAAAAIAAAP+AAAAAgAAA/4AAAACAAAD/gAAAAAAAAP+AAAAAgAAA/4AAAACAAAD/gAAAAIAAAP+AAAAAAQAAAAAEAAQAAAsAAAEBAQEBAQEBAQEBAQAABAAAAP6AAAD/AAAA/4AAAP+AAAD/gAQAAAD8AAAAAIAAAACAAAAAgAAAAQAAAAAAAAEAAAAABAAEAAALAAABAQEBAQEBAQEBAQEAAAQAAAD/gAAA/4AAAP+AAAD/AAAA/oAEAAAA/oAAAP8AAAD/gAAA/4AAAP+AAAAAAAABAAABgAKABAAADwAAAQEBAQEBAQEBAQEBAQEBAQAAAQAAAACAAAAAgAAAAIAAAP8AAAD/gAAA/4AAAP+ABAAAAP+AAAD/gAAA/4AAAP8AAAAAgAAAAIAAAACAAAAAAAABAAAAAAKABAAADwAAAQEBAQEBAQEBAQEBAQEBAQAAAQAAAACAAAAAgAAAAIAAAP8AAAD/gAAA/4AAAP+ABAAAAP+AAAD/gAAA/4AAAP2AAAACAAAAAIAAAACAAAAAAAABAYAAAAQAAoAABQAAAQEBAQEBAYACgAAA/oAAAP8AAoAAAP8AAAD+gAAAAAEAAAAABAAEAAAJAAABAQEBAQEBAQEBAAACgAAAAIAAAACAAAAAgAAA/AAEAAAA/wAAAP8AAAD/AAAA/wAAAAACAAAAAAQABAAAGwAfAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQGAAQAAAACAAAAAgAAAAIAAAP+AAAD/gAAA/4AAAP8AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAAAAAEAAAAEAAAA/4AAAP+AAAD/gAAA/wAAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAAEAAAAAgAAAAIAAAP8A/wAAAAEAAAEBgAGABAAEAAAFAAABAQEBAQEBgAEAAAABgAAA/YAEAAAA/oAAAP8AAAAAAQAAAAACgAKAAA8AAAEBAQEBAQEBAQEBAQEBAQEBgAEAAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAKAAAD/AAAA/4AAAP+AAAD/gAAAAQAAAACAAAAAgAAAAAAAAQGAAAAEAAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEDAAEAAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAQAAAD/AAAA/4AAAP+AAAD+AAAAAoAAAACAAAAAgAAAAAAAAQGAAAAEAAKAAA8AAAEBAQEBAQEBAQEBAQEBAQEBgAEAAAAAgAAAAIAAAACAAAD/AAAA/4AAAP+AAAD/gAKAAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAAAAAQGAAYAEAAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEDAAEAAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAQAAAD/AAAA/4AAAP+AAAD/gAAAAQAAAACAAAAAgAAAAAAAAQAAAAAEAAQAABsAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAEAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAD/AAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAQAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAQAAAAAEAAQAAB8AAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAABAAAAAIAAAAEAAAAAgAAAAQAAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP8AAAAAgAAAAIAAAP+AAAD/gAQAAAD/gAAA/4AAAACAAAAAgAAA/wAAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAAEAAAAAgAAAAQAAAACAAAAAAAABAAABgAQABAAADwAAAQEBAQEBAQEBAQEBAQEBAQAAAQAAAACAAAAAgAAAAgAAAP2AAAD/gAAA/4AAAP+ABAAAAP+AAAD/gAAA/4AAAP8AAAAAgAAAAIAAAACAAAAAAAABAAABgAQAAoAAAwAAAQEBAQAABAAAAPwAAoAAAP8AAAAAAAABAYAAAAKABAAAAwAAAQEBAQGAAQAAAP8ABAAAAPwAAAAAAAABAYAAAAQABAAAFwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAwABAAAA/4AAAP+AAAAAgAAAAIAAAP8AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACABAAAAP8AAAD/gAAA/wAAAP+AAAD/AAAAAIAAAACAAAAAgAAAAQAAAACAAAAAgAAAAAAAAQAAAAAEAAKAAA8AAAEBAQEBAQEBAQEBAQEBAQEAAAKAAAAAgAAAAIAAAACAAAD/AAAA/4AAAP+AAAD+AAKAAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAAAAAQAAAYAEAAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEDAAEAAAD/gAAA/4AAAP+AAAD9gAAAAgAAAACAAAAAgAQAAAD/AAAA/4AAAP+AAAD/gAAAAQAAAACAAAAAgAAAAAAAAQAAAgAEAAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEAAAQAAAD/gAAA/4AAAP+AAAD/AAAA/4AAAP+AAAD/gAQAAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAAAAAAAAQAAAYACgAKAAAMAAAEBAQEAAAKAAAD9gAKAAAD/AAAAAAAAAQGAAAACgAKAAAMAAAEBAQEBgAEAAAD/AAKAAAD9gAAAAAAAAQAAAYAEAAQAABcAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAQAAAACAAAABAAAAAIAAAAEAAAD/gAAA/4AAAP+AAAD/AAAA/4AAAP+AAAD/gAQAAAD/gAAA/4AAAACAAAAAgAAA/wAAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAAAAAAEAAAAABAAEAAAJAAABAQEBAQEBAQEBAYACgAAA/AAAAACAAAAAgAAAAIAEAAAA/AAAAAEAAAABAAAAAQAAAAABAAAAAAQABAAAEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEDAAEAAAD/gAAA/4AAAP+AAAD/AAAA/oAAAAEAAAABAAAAAIAAAACABAAAAP6AAAD/AAAA/4AAAP+AAAD/gAAAAQAAAACAAAAAgAAAAQAAAAAAAAEAAAAABAAEAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQAAAQAAAACAAAAAgAAAAQAAAAEAAAD+gAAA/wAAAP+AAAD/gAAA/4AEAAAA/wAAAP8AAAD/gAAA/4AAAP8AAAAAgAAAAIAAAACAAAABAAAAAAAAAQAAAAAEAAQAABsAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEDAAEAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAQAAAD/AAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAQAAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAQAAAAACgAQAABcAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAQAAAACAAAAAgAAAAIAAAP+AAAD/gAAA/4AAAP8AAAAAgAAAAIAAAP+AAAD/gAQAAAD/gAAA/4AAAP+AAAD/AAAA/4AAAP+AAAD/gAAAAQAAAACAAAABAAAAAIAAAAAAAAEAAAAABAAEAAAfAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAQAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAP8AAAD/gAAA/wAAAP+AAAD/AAAAAIAAAACAAAD/gAAA/4AEAAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/wAAAACAAAAAgAAA/4AAAP+AAAABAAAAAIAAAAEAAAAAgAAAAAAAAQAAAAACgAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEBgAEAAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAQAAAD9gAAA/4AAAP+AAAD/gAAAAQAAAACAAAAAgAAAAAAAAQGAAAAEAAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEBgAEAAAAAgAAAAIAAAACAAAD/AAAA/4AAAP+AAAD/gAQAAAD+AAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAAAAAQAAAAAEAAKAAA8AAAEBAQEBAQEBAQEBAQEBAQEBgAKAAAD+AAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAKAAAD/AAAA/4AAAP+AAAD/gAAAAQAAAACAAAAAgAAAAAAAAQGAAYACgAQAAAMAAAEBAQEBgAEAAAD/AAQAAAD9gAAAAAAAAQGAAYAEAAKAAAMAAAEBAQEBgAKAAAD9gAKAAAD/AAAAAAAAAQAAAAAEAAQAAB8AAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAwABAAAA/4AAAP+AAAAAgAAAAIAAAP8AAAD/gAAA/wAAAP+AAAD/AAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAQAAAD/AAAA/4AAAP8AAAD/gAAA/wAAAACAAAAAgAAA/4AAAP+AAAABAAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAABAAAAAAQABAAAIwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAABAAAAAIAAAAEAAAAAgAAAAQAAAP+AAAD/gAAAAIAAAACAAAD/AAAA/4AAAP8AAAD/gAAA/wAAAACAAAAAgAAA/4AAAP+ABAAAAP+AAAD/gAAAAIAAAACAAAD/AAAA/4AAAP8AAAD/gAAA/wAAAACAAAAAgAAA/4AAAP+AAAABAAAAAIAAAAEAAAAAgAAAAAAAAQGAAYACgAKAAAMAAAEBAQEBgAEAAAD/AAKAAAD/AAAAAAAAAQAAAAAEAAKAABcAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQGAAQAAAACAAAAAgAAAAIAAAP8AAAD/gAAA/wAAAP+AAAD/AAAAAIAAAACAAAAAgAKAAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAD/gAAA/4AAAAEAAAAAgAAAAIAAAAAAAAEAAAGAAoAEAAAFAAABAQEBAQEBgAEAAAD9gAAAAYAEAAAA/YAAAAEAAAAAAQAAAAACgAKAAAUAAAEBAQEBAQAAAoAAAP8AAAD+gAKAAAD9gAAAAYAAAAABAAAAAAQABAAAHwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAEAAAAAgAAAAQAAAACAAAABAAAA/4AAAP+AAAAAgAAAAIAAAP8AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+ABAAAAP+AAAD/gAAAAIAAAACAAAD/AAAA/4AAAP8AAAD/gAAA/wAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAAAAAAEAAAAABAAEAAALAAABAQEBAQEBAQEBAQEBgAEAAAABgAAA/oAAAP8AAAD+gAAAAYAEAAAA/oAAAP8AAAD+gAAAAYAAAAEAAAAAAAABAAAAAAQAAoAABwAAAQEBAQEBAQEAAAQAAAD+gAAA/wAAAP6AAoAAAP8AAAD+gAAAAYAAAAAAAAEBgAAABAAEAAAHAAABAQEBAQEBAQGAAQAAAAGAAAD+gAAA/wAEAAAA/oAAAP8AAAD+gAAAAAAAAQAAAAACgAQAAAcAAAEBAQEBAQEBAYABAAAA/wAAAP6AAAABgAQAAAD8AAAAAYAAAAEAAAAAAAABAAABgAQABAAABwAAAQEBAQEBAQEBgAEAAAABgAAA/AAAAAGABAAAAP6AAAD/AAAAAQAAAAAAAAQBAAEAAwADAAADAAcACwAPAAABAQEBAQEBAQEBAQEBAQEBAYABAAAA/wD/gACAAAD/gAGAAIAAAP+A/wABAAAA/wADAAAA/4AAAAAAAAD/AAAAAQAAAP8AAAAAAAAA/4AAAAACAIAAgAOAA4AACwAPAAABAQEBAQEBAQEBAQEBAQEBAQACAAAAAIAAAP+AAAD+AAAA/4AAAACAAIAAAAEAAAADgAAA/4AAAP4AAAD/gAAAAIAAAAIAAAD/gP8AAAABAAACAAAAAAQABAAAEwAfAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAgAAAACAAAAAgAAA/4AAAP+AAAD+AAAA/4AAAP+AAAAAgAAAAIAAgAAA/4AAAACAAAABAAAAAIAAAP+AAAAEAAAA/4AAAP+AAAD+AAAA/4AAAP+AAAAAgAAAAIAAAAIAAAAAgAAA/4D/gAAA/wAAAP+AAAAAgAAAAQAAAACAABAAAAAABAAEAAADAAcACwAPABMAFwAbAB8AIwAnACsALwAzADcAOwA/AAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAYAAgAAA/4ACAACAAAD/gP2AAIAAAP+AAgAAgAAA/4D9gACAAAD/gAIAAIAAAP+A/YAAgAAA/4ACAACAAAD/gP+AAIAAAP+AAgAAgAAA/4D9gACAAAD/gAIAAIAAAP+A/YAAgAAA/4ACAACAAAD/gP2AAIAAAP+AAgAAgAAA/4AEAAAA/4AAAACAAAD/gAAAAAAAAP+AAAAAgAAA/4AAAAAAAAD/gAAAAIAAAP+AAAAAAAAA/4AAAACAAAD/gAAAAAAAAP+AAAAAgAAA/4AAAAAAAAD/gAAAAIAAAP+AAAAAAAAA/4AAAACAAAD/gAAAAAAAAP+AAAAAgAAA/4AAAAAQAAAAAAQABAAAAwAHAAsADwATABcAGwAfACMAJwArAC8AMwA3ADsAPwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAIAAAP+AAgAAgAAA/4D+gACAAAD/gAIAAIAAAP+A/oAAgAAA/4ACAACAAAD/gP6AAIAAAP+AAgAAgAAA/4D8gACAAAD/gAIAAIAAAP+A/oAAgAAA/4ACAACAAAD/gP6AAIAAAP+AAgAAgAAA/4D+gACAAAD/gAIAAIAAAP+ABAAAAP+AAAAAgAAA/4AAAAAAAAD/gAAAAIAAAP+AAAAAAAAA/4AAAACAAAD/gAAAAAAAAP+AAAAAgAAA/4AAAAAAAAD/gAAAAIAAAP+AAAAAAAAA/4AAAACAAAD/gAAAAAAAAP+AAAAAgAAA/4AAAAAAAAD/gAAAAIAAAP+AAAAAAwCAAIADgAQAABcAGwAfAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQIAAIAAAAEAAAD/AAAAAIAAAP+AAAABAAAA/wAAAP+AAAD/AAAA/4AAAACAAAABAP+AAAAAgAAA/4AAAACAAAAEAAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAYAAAACAAAD/gP+AAAAAgP8A/4AAAACAAAAAAQCAAIADgAOAAA8AAAEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/4AAAP+AAAD/AAAA/4AAAP+AAAAAgAOAAAD/gAAA/wAAAP+AAAD/AAAAAQAAAACAAAABAAAAAAAAAgCAAIADgAOAAAMACQAAAQEBAQEBAQEBAQCAAwAAAP0AAYAAAP8AAAACAAAAA4AAAP0AAAACgP8AAAD/AAAAAgAAAAABAIAAgAOAA4AAAwAAAQEBAQCAAwAAAP0AA4AAAP0AAAAAAAACAIAAgAOAA4AAAwALAAABAQEBAQEBAQEBAQEAgAMAAAD9AACAAAACAAAA/4AAAP8AAAADgAAA/QAAAAKA/gAAAAIAAAD/AAAAAQAAAQAAAAAEAAQAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQACAAAAAIAAAACAAAD/gAAA/4AAAP4AAAD/gAAA/4AAAACAAAAAgAQAAAD/gAAA/4AAAP4AAAD/gAAA/4AAAACAAAAAgAAAAgAAAACAAAAAAAABAQABAAMAAwAACwAAAQEBAQEBAQEBAQEBAYABAAAAAIAAAP+AAAD/AAAA/4AAAACAAwAAAP+AAAD/AAAA/4AAAACAAAABAAAAAAAAAQCAAQAEAAQAABsAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAACAAAAAgAAAAQAAAP+AAAD/gAAAAIAAAP8AAAD/gAAA/wAAAACAAAD/gAAA/4AAAAEAAAAAgAQAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAAAgAAA/4AAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAABgCAAIAEAAQAAAMABwALAA8AEwAXAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAOAAAD8gAEAAAAAgAAAAIAAAACAAAD+AAAAAIAAAAGAAAAAgAAA/gAAAAGAAAAEAAAA/IAAAAMA/wAAAAEAAAD/AAAAAQD+gP+AAAAAgAAA/4AAAACA/4D/gAAAAIAABgCAAIAEAAQAAAMABwALAA8AEwAXAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAOAAAD8gAEAAAAAgAAAAIAAAACAAAD+gAAAAYAAAP4AAAAAgAAAAYAAAACAAAAEAAAA/IAAAAMA/wAAAAEAAAD/AAAAAQD+gP+AAAAAgP+A/4AAAACAAAD/gAAAAIAABgCAAIAEAAQAABMAFwAbAB8AIwAnAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgAAgAAAAIAAAAEAAAD/AAAA/4AAAP+AAAD/gAAA/wAAAAEAAAAAgAAAAAAAgAAA/oAAgAAA/4ACAACAAAD/gP4AAIAAAP+AAgAAgAAA/4AEAAAA/wAAAP+AAAD/gAAA/4AAAP8AAAABAAAAAIAAAACAAAAAgAAA/4D/gAAAAIABAAAA/4AAAACAAAD/gAAA/oAAAP+AAAAAgAAA/4AAAAACAQAAgAOABAAAFwAbAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAYABgAAAAIAAAP+AAAD/gAAAAIAAAP+AAAD/gAAA/4AAAACAAAD/gAAAAQAAAP8A/4AAgAAA/4AEAAAA/4AAAP8AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAAAAIAAAAEAAAAAAAAA/wAAAAACAIAAgAQABAAAFwAbAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAYACgAAA/4AAAP+AAAD/gAAAAIAAAP+AAAD+gAAAAQAAAP8AAAABAAAAAIAAAP8A/wAAgAAA/4AEAAAA/gAAAAEAAAD/gAAA/4AAAP8AAAD/gAAAAIAAAAEAAAAAgAAAAIAAAACAAAD+gAAA/wAAAAABAIAAgAQABAAAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQIAAIAAAACAAAAAgAAAAIAAAP8AAAD/gAAAAIAAAP6AAAAAgAAA/4AAAP8AAAAAgAAAAIAAAACABAAAAP+AAAD/gAAA/4AAAP8AAAAAgAAA/wAAAP+AAAAAgAAAAQAAAP+AAAABAAAAAIAAAACAAAAAAAABAIAAgAQABAAAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQGAAYAAAP+AAAAAgAAAAQAAAP8AAAD/gAAAAIAAAP6AAAAAgAAA/4AAAP8AAAABAAAAAIAAAP+ABAAAAP8AAAD/gAAAAIAAAP6AAAAAgAAA/wAAAP+AAAAAgAAAAQAAAP+AAAABgAAA/4AAAACAAAAAAAABAIAAgAQABAAAFwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAAAAIAAAAEAAAAAgAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACABAAAAP+AAAAAgAAA/4AAAP6AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAABgAAAAAAAAQCAAIAEAAQAABsAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAACAAAAAgAAAAIAAAACAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAQAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAQEAAIADgAQAAAsAAAEBAQEBAQEBAQEBAQIAAYAAAP8AAAD/gAAA/wAAAACAAAAAgAQAAAD/AAAA/gAAAP+AAAABAAAAAIAAAAAAAAEAgACABAAEAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQGAAoAAAP+AAAD/AAAAAIAAAACAAAD+gAAA/4AAAP8AAAAAgAAAAIAEAAAA/QAAAP+AAAABAAAAAIAAAAEAAAD+AAAA/4AAAAEAAAAAgAAAAAAAAAAYASYAAQAAAAAAAAAIAAAAAQAAAAAAAQAIAAgAAQAAAAAAAgAHABAAAQAAAAAAAwAIABcAAQAAAAAABAAQAB8AAQAAAAAABQALAC8AAQAAAAAABgAIADoAAQAAAAAACQAJAEIAAQAAAAAACgA6AEsAAQAAAAAADQARAIUAAQAAAAAADgAyAJYAAQAAAAAAEwAMAMgAAwABBAkAAAAQANQAAwABBAkAAQAQAOQAAwABBAkAAgAOAPQAAwABBAkAAwAQAQIAAwABBAkABAAgARIAAwABBAkABQAWATIAAwABBAkABgAQAUgAAwABBAkACQASAVgAAwABBAkACgB0AWoAAwABBAkADQAiAd4AAwABBAkADgBkAgAAAwABBAkAEwAYAmQoYykgMjAyMlVyc2FGb250UmVndWxhclVyc2FGb250VXJzYUZvbnQgUmVndWxhclZlcnNpb24gMS4wVXJzYUZvbnRVcnNhRnJhbmtBbiBvcGVuIGxpY2VuY2UgZ2VuZXJhbCBwdXJwb3NlIHRleHRtb2RlIGZvbnQgYnkgVXJzYUZyYW5rQ0MwIDEuMCBVbml2ZXJzYWxodHRwczovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wL0hlbGxvIFdvcmxkIQAoAGMAKQAgADIAMAAyADIAVQByAHMAYQBGAG8AbgB0AFIAZQBnAHUAbABhAHIAVQByAHMAYQBGAG8AbgB0AFUAcgBzAGEARgBvAG4AdAAgAFIAZQBnAHUAbABhAHIAVgBlAHIAcwBpAG8AbgAgADEALgAwAFUAcgBzAGEARgBvAG4AdABVAHIAcwBhAEYAcgBhAG4AawBBAG4AIABvAHAAZQBuACAAbABpAGMAZQBuAGMAZQAgAGcAZQBuAGUAcgBhAGwAIABwAHUAcgBwAG8AcwBlACAAdABlAHgAdABtAG8AZABlACAAZgBvAG4AdAAgAGIAeQAgAFUAcgBzAGEARgByAGEAbgBrAEMAQwAwACAAMQAuADAAIABVAG4AaQB2AGUAcgBzAGEAbABoAHQAdABwAHMAOgAvAC8AYwByAGUAYQB0AGkAdgBlAGMAbwBtAG0AbwBuAHMALgBvAHIAZwAvAHAAdQBiAGwAaQBjAGQAbwBtAGEAaQBuAC8AegBlAHIAbwAvADEALgAwAC8ASABlAGwAbABvACAAVwBvAHIAbABkACEAAAADAAAAAAAAAGYAMwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==\r
|
|
928
922
|
`)).arrayBuffer();
|
|
929
|
-
await this.kt(t), this._t = w.parse(t)[0], await this.
|
|
923
|
+
await this.kt(t), this._t = w.parse(t)[0], await this.Rt();
|
|
930
924
|
}
|
|
931
|
-
|
|
925
|
+
Vt(A) {
|
|
932
926
|
if (A === void 0) return this.xt;
|
|
933
927
|
this.xt = A, this.Gt = this.St.calculateMaxGlyphDimensions(this.vt.map((e) => e.character), this.xt, this._t);
|
|
934
928
|
const t = this.Tt.createTextureAtlas(this.vt, this.Gt, this.xt, this._t);
|
|
@@ -942,7 +936,7 @@ class cA {
|
|
|
942
936
|
await this.kt(e);
|
|
943
937
|
const s = w.parse(e);
|
|
944
938
|
if (!s || s.length === 0) throw Error("Failed to parse font file");
|
|
945
|
-
this._t = s[0], await this.
|
|
939
|
+
this._t = s[0], await this.Rt();
|
|
946
940
|
} catch (t) {
|
|
947
941
|
throw new I("Failed to load font: " + (t instanceof Error ? t.message : "Unknown error"), t);
|
|
948
942
|
}
|
|
@@ -951,7 +945,7 @@ class cA {
|
|
|
951
945
|
const t = Date.now();
|
|
952
946
|
this.$t = this.$t === "UrsaFont" ? "UrsaFont" : "CustomFont_" + t, this.Ft = new FontFace(this.$t, A), await this.Ft.load(), document.fonts.add(this.Ft);
|
|
953
947
|
}
|
|
954
|
-
async
|
|
948
|
+
async Rt() {
|
|
955
949
|
const A = this.Yt.extractCharacters(this._t), t = this.Yt.filterProblematicCharacters(A);
|
|
956
950
|
this.vt = this.Ot.createCharacterObjects(t, this._t), this.Gt = this.St.calculateMaxGlyphDimensions(t, this.xt, this._t);
|
|
957
951
|
const e = this.Tt.createTextureAtlas(this.vt, this.Gt, this.xt, this._t);
|
|
@@ -1102,7 +1096,7 @@ class CA {
|
|
|
1102
1096
|
this.jt.width = s, this.jt.height = r, this.Ee(this.jt);
|
|
1103
1097
|
}
|
|
1104
1098
|
}
|
|
1105
|
-
|
|
1099
|
+
oe() {
|
|
1106
1100
|
const A = { alpha: !1, premultipliedAlpha: !1, preserveDrawingBuffer: !0, antialias: !1, depth: !1, stencil: !1, powerPreference: "high-performance" }, t = this.jt.getContext("webgl2", A) || this.jt.getContext("webgl", A);
|
|
1107
1101
|
if (!t) throw new I("WebGL context could not be created. Ensure your browser supports WebGL.");
|
|
1108
1102
|
return t;
|
|
@@ -1137,7 +1131,7 @@ class CA {
|
|
|
1137
1131
|
class M {
|
|
1138
1132
|
constructor(A, t, e, s = {}) {
|
|
1139
1133
|
o(this, "Dt");
|
|
1140
|
-
o(this, "
|
|
1134
|
+
o(this, "ge");
|
|
1141
1135
|
o(this, "ne");
|
|
1142
1136
|
o(this, "ae");
|
|
1143
1137
|
o(this, "he");
|
|
@@ -1145,9 +1139,9 @@ class M {
|
|
|
1145
1139
|
o(this, "ce");
|
|
1146
1140
|
o(this, "De");
|
|
1147
1141
|
o(this, "h");
|
|
1148
|
-
this.Dt = A, this.
|
|
1142
|
+
this.Dt = A, this.ge = t, this.ne = e, this.h = s;
|
|
1149
1143
|
const r = this.ne.cols, i = this.ne.rows;
|
|
1150
|
-
this.ae = this.Dt.
|
|
1144
|
+
this.ae = this.Dt.SA(r, i), this.he = this.Dt.SA(r, i), this.le = this.Dt.SA(r, i), this.ce = this.Dt.SA(r, i), this.De = this.Dt.SA(r, i);
|
|
1151
1145
|
}
|
|
1152
1146
|
ee() {
|
|
1153
1147
|
const A = this.ne.cols, t = this.ne.rows;
|
|
@@ -1191,7 +1185,7 @@ class uA {
|
|
|
1191
1185
|
o(this, "Ce");
|
|
1192
1186
|
this.Dt = A, this.Ce = t;
|
|
1193
1187
|
const e = Math.max(this.Ce.length, 1);
|
|
1194
|
-
this.I = this.Dt.
|
|
1188
|
+
this.I = this.Dt.SA(e, 1), this.ue();
|
|
1195
1189
|
}
|
|
1196
1190
|
ue() {
|
|
1197
1191
|
const A = this.Ce.length;
|
|
@@ -1220,10 +1214,10 @@ class O extends M {
|
|
|
1220
1214
|
constructor(t, e, s, r = {}) {
|
|
1221
1215
|
super(t, e, s, r);
|
|
1222
1216
|
o(this, "Pe");
|
|
1223
|
-
this.Pe = new uA(this.Dt, this.
|
|
1217
|
+
this.Pe = new uA(this.Dt, this.ge.getCharacterColors(" .:-=+*%@#"));
|
|
1224
1218
|
}
|
|
1225
1219
|
characters(t) {
|
|
1226
|
-
u.C(this.
|
|
1220
|
+
u.C(this.ge.hasAllCharacters(t), "One or more characters do not exist in the current font.", { method: "characters", providedValue: t }) && (this.h.characters = t, this.Pe.setColors(this.ge.getCharacterColors(t)));
|
|
1227
1221
|
}
|
|
1228
1222
|
characterColor(t, e, s, r = 255) {
|
|
1229
1223
|
const i = this.Ie(t, "characterColor", e, s, r);
|
|
@@ -1257,10 +1251,10 @@ class O extends M {
|
|
|
1257
1251
|
Ie(t, e, s, r, i = 255) {
|
|
1258
1252
|
let B, Q, n, g;
|
|
1259
1253
|
if (typeof t == "string") {
|
|
1260
|
-
const
|
|
1261
|
-
if (!
|
|
1262
|
-
[B, Q, n, g] =
|
|
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((
|
|
1254
|
+
const h = this.de(t);
|
|
1255
|
+
if (!h) return u.C(!1, "Invalid hex color format. Use '#FF0000', '#F00', 'FF0000', or 'F00'.", { method: e, providedValue: t }), null;
|
|
1256
|
+
[B, Q, n, g] = h;
|
|
1257
|
+
} else if (B = t, Q = s !== void 0 ? s : t, n = r !== void 0 ? r : t, g = i, !u.C([B, Q, n, g].every((h) => h >= 0 && h <= 255), e.charAt(0).toUpperCase() + e.slice(1) + " color values must be between 0 and 255", { method: e, providedValues: { r: B, g: Q, b: n, a: g } })) return null;
|
|
1264
1258
|
return [B / 255, Q / 255, n / 255, g / 255];
|
|
1265
1259
|
}
|
|
1266
1260
|
we(t, e) {
|
|
@@ -1312,7 +1306,7 @@ void main() {\r
|
|
|
1312
1306
|
gl_Position = vec4(pos, 0.0, 1.0);\r
|
|
1313
1307
|
}\r
|
|
1314
1308
|
`, PA = { enabled: !0, characters: " .:-=+*%@#", characterColor: [1, 1, 1, 1], characterColorMode: "sampled", cellColor: [0, 0, 0, 1], cellColorMode: "fixed", invert: !1, rotation: [0, 0, 0, 255], flipHorizontally: !1, flipVertically: !1, brightnessRange: [0, 255] };
|
|
1315
|
-
class
|
|
1309
|
+
class Y extends O {
|
|
1316
1310
|
constructor(t, e, s) {
|
|
1317
1311
|
super(t, e, s, { ...PA });
|
|
1318
1312
|
o(this, "me");
|
|
@@ -1321,11 +1315,11 @@ class S extends O {
|
|
|
1321
1315
|
o(this, "ve");
|
|
1322
1316
|
o(this, "be");
|
|
1323
1317
|
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.
|
|
1318
|
+
this.me = new x(t.context, T, "precision lowp float;uniform sampler2D u_sketchTexture;uniform vec2 u_gridCellDimensions;uniform vec2 u_brightnessRange;varying vec2 v_uv;void main(){vec2 cellCenter=(floor(v_uv*u_gridCellDimensions)+vec2(0.5))/u_gridCellDimensions;vec4 color=texture2D(u_sketchTexture,cellCenter);float brightness=dot(color.rgb,vec3(0.299,0.587,0.114));float brightnessValue=brightness*255.0;if(brightnessValue>=u_brightnessRange.x&&brightnessValue<=u_brightnessRange.y){gl_FragColor=color;}else{gl_FragColor=vec4(0.0);}}"), this.pe = new x(t.context, T, "precision lowp float;uniform sampler2D u_sampleTexture;uniform vec4 u_fillColor;uniform bool u_useFixedColor;varying vec2 v_uv;void main(){vec4 sampleColor=texture2D(u_sampleTexture,v_uv);if(sampleColor.a>0.0){if(u_useFixedColor){gl_FragColor=u_fillColor;}else{gl_FragColor=sampleColor;}}else{gl_FragColor=vec4(0.0);}}"), this.ve = new x(t.context, T, "precision lowp float;uniform sampler2D u_sampleTexture;uniform bool u_invert;uniform bool u_flipHorizontally;uniform bool u_flipVertically;varying vec2 v_uv;void main(){vec4 sampleColor=texture2D(u_sampleTexture,v_uv);if(sampleColor.a>0.0){float invertValue=u_invert ? 1.0 : 0.0;float flipHValue=u_flipHorizontally ? 1.0 : 0.0;float flipVValue=u_flipVertically ? 1.0 : 0.0;gl_FragColor=vec4(invertValue,flipHValue,flipVValue,1.0);}else{gl_FragColor=vec4(0.0);}}"), this.be = new x(t.context, T, "precision lowp float;uniform sampler2D u_sampleTexture;uniform vec4 u_rotationColor;varying vec2 v_uv;void main(){vec4 sampleColor=texture2D(u_sampleTexture,v_uv);if(sampleColor.a>0.0){gl_FragColor=u_rotationColor;}else{gl_FragColor=vec4(0.0);}}"), this._e = new x(t.context, T, "precision lowp float;uniform sampler2D u_colorSampleFramebuffer;uniform sampler2D u_charPaletteTexture;uniform vec2 u_charPaletteSize;uniform vec2 u_brightnessRange;varying vec2 v_uv;void main(){vec4 color=texture2D(u_colorSampleFramebuffer,v_uv);if(color.a==0.0){gl_FragColor=vec4(0.0);return;}float brightness=dot(color.rgb,vec3(0.299,0.587,0.114))*255.0;vec2 range=u_brightnessRange;if(brightness<range.x||brightness>range.y){gl_FragColor=vec4(0.0);return;}float t=(brightness-range.x)/(range.y-range.x);float idx=clamp(floor(t*u_charPaletteSize.x),0.0,u_charPaletteSize.x-1.0);vec3 charColor=texture2D(u_charPaletteTexture,vec2((idx+0.5)/u_charPaletteSize.x,0.0)).rgb;gl_FragColor=vec4(charColor,1.0);}"), this.xe = this.Dt.SA(this.ne.cols, this.ne.rows);
|
|
1325
1319
|
}
|
|
1326
1320
|
ye(t) {
|
|
1327
1321
|
const e = this.ne.cols, s = this.ne.rows;
|
|
1328
|
-
this.xe.begin(), this.Dt.
|
|
1322
|
+
this.xe.begin(), this.Dt.UA(), this.Dt.IA(this.me), this.Dt.FA("u_sketchTexture", t), this.Dt.FA("u_gridCellDimensions", [e, s]), this.Dt.FA("u_brightnessRange", this.h.brightnessRange), this.Dt.$A(0, 0, e, s), this.xe.end(), this.he.begin(), this.Dt.UA(), this.Dt.IA(this.pe), this.Dt.FA("u_sampleTexture", this.xe), this.Dt.FA("u_fillColor", this.h.characterColor), this.Dt.FA("u_useFixedColor", this.h.characterColorMode === "fixed"), this.Dt.$A(0, 0, e, s), this.he.end(), this.le.begin(), this.Dt.UA(), this.Dt.IA(this.pe), this.Dt.FA("u_sampleTexture", this.xe), this.Dt.FA("u_fillColor", this.h.cellColor), this.Dt.FA("u_useFixedColor", this.h.cellColorMode === "fixed"), this.Dt.$A(0, 0, e, s), this.le.end(), this.De.begin(), this.Dt.UA(), this.Dt.IA(this.ve), this.Dt.FA("u_sampleTexture", this.xe), this.Dt.FA("u_invert", this.h.invert), this.Dt.FA("u_flipHorizontally", this.h.flipHorizontally), this.Dt.FA("u_flipVertically", this.h.flipVertically), this.Dt.$A(0, 0, e, s), this.De.end(), this.ce.begin(), this.Dt.UA(), this.Dt.IA(this.be), this.Dt.FA("u_sampleTexture", this.xe), this.Dt.FA("u_rotationColor", this.h.rotation), this.Dt.$A(0, 0, e, s), this.ce.end(), this.ae.begin(), this.Dt.UA(), this.Dt.IA(this._e), this.Dt.FA("u_colorSampleFramebuffer", this.xe), this.Dt.FA("u_charPaletteTexture", this.Pe.texture), this.Dt.FA("u_charPaletteSize", [this.Pe.colors.length, 1]), this.Dt.FA("u_brightnessRange", this.h.brightnessRange), this.Dt.$A(0, 0, e, s), this.ae.end();
|
|
1329
1323
|
}
|
|
1330
1324
|
ee() {
|
|
1331
1325
|
super.ee(), this.xe.resize(this.ne.cols, this.ne.rows);
|
|
@@ -1334,7 +1328,7 @@ class S extends O {
|
|
|
1334
1328
|
u.C(Array.isArray(t) && t.length === 2 && t.every((e) => typeof e == "number" && e >= 0 && e <= 255), "Brightness range must be an array of two numbers between 0 and 255.", { method: "brightnessRange", providedValue: t }) && (this.h.brightnessRange = t);
|
|
1335
1329
|
}
|
|
1336
1330
|
}
|
|
1337
|
-
const OA = Object.freeze(Object.defineProperty({ __proto__: null, TextmodeBrightnessConverter:
|
|
1331
|
+
const OA = Object.freeze(Object.defineProperty({ __proto__: null, TextmodeBrightnessConverter: Y, TextmodeConverter: M, TextmodeFeatureConverter: O }, Symbol.toStringTag, { value: "Module" }));
|
|
1338
1332
|
class dA {
|
|
1339
1333
|
constructor(A, t, e) {
|
|
1340
1334
|
o(this, "Dt");
|
|
@@ -1350,21 +1344,21 @@ class dA {
|
|
|
1350
1344
|
o(this, "le");
|
|
1351
1345
|
o(this, "ce");
|
|
1352
1346
|
o(this, "De");
|
|
1353
|
-
this.Dt = A, this._t = t, this.ne = e, this.Ye = this.Dt.
|
|
1347
|
+
this.Dt = A, this._t = t, this.ne = e, this.Ye = this.Dt.MA(R, "precision mediump float;uniform sampler2D u_characterTexture;uniform vec2 u_charsetDimensions;uniform sampler2D u_primaryColorTexture;uniform sampler2D u_secondaryColorTexture;uniform sampler2D u_transformTexture;uniform sampler2D u_asciiCharacterTexture;uniform sampler2D u_rotationTexture;uniform sampler2D u_captureTexture;uniform vec2 u_captureDimensions;uniform int u_backgroundMode;uniform vec2 u_gridCellDimensions;uniform vec2 u_gridPixelDimensions;mat2 rotate2D(float angle){float s=sin(angle);float c=cos(angle);return mat2(c,-s,s,c);}void main(){vec2 adjustedCoord=gl_FragCoord.xy/u_gridPixelDimensions;vec2 gridCoord=adjustedCoord*u_gridCellDimensions;vec2 cellCoord=floor(gridCoord);vec2 charIndexTexCoord=(cellCoord+0.5)/u_gridCellDimensions;vec4 primaryColor=texture2D(u_primaryColorTexture,charIndexTexCoord);vec4 secondaryColor=texture2D(u_secondaryColorTexture,charIndexTexCoord);vec4 transformColor=texture2D(u_transformTexture,charIndexTexCoord);bool isInverted=transformColor.r>0.5;bool flipHorizontal=transformColor.g>0.5;bool flipVertical=transformColor.b>0.5;vec4 encodedIndexVec=texture2D(u_asciiCharacterTexture,charIndexTexCoord);if(encodedIndexVec.a<0.01){gl_FragColor=(u_backgroundMode==0)? vec4(0.0):texture2D(u_captureTexture,gl_FragCoord.xy/u_captureDimensions);return;}int charIndex=int(encodedIndexVec.r*255.0+0.5)+int(encodedIndexVec.g*255.0+0.5)*256;int charCol=int(mod(float(charIndex),u_charsetDimensions.x));int charRow=charIndex/int(u_charsetDimensions.x);float flippedRow=(u_charsetDimensions.y-1.0)-float(charRow);vec2 charCoord=vec2(float(charCol),flippedRow)/u_charsetDimensions;vec4 rotationColor=texture2D(u_rotationTexture,charIndexTexCoord);float scaledAngle=rotationColor.r*255.0+rotationColor.g;float rotationAngle=(scaledAngle*360.0/255.0)*0.017453292;vec2 fractionalPart=fract(gridCoord)-0.5;if(flipHorizontal)fractionalPart.x=-fractionalPart.x;if(flipVertical)fractionalPart.y=-fractionalPart.y;fractionalPart=rotate2D(rotationAngle)*fractionalPart+0.5;vec2 cellSize=1.0/u_charsetDimensions;vec2 texCoord=charCoord+fractionalPart*cellSize;vec2 cellMax=charCoord+cellSize;if(any(lessThan(texCoord,charCoord))||any(greaterThan(texCoord,cellMax))){gl_FragColor=isInverted ? primaryColor : secondaryColor;return;}vec4 charTexel=texture2D(u_characterTexture,texCoord);if(isInverted)charTexel.rgb=1.0-charTexel.rgb;gl_FragColor=mix(secondaryColor,primaryColor,charTexel);}"), this.Ge = new Y(A, t, e), this.Fe = new M(A, t, e), this.Me = [this.Ge, this.Fe], this.ae = this.Dt.SA(e.cols, e.rows), this.he = this.Dt.SA(e.cols, e.rows), this.le = this.Dt.SA(e.cols, e.rows), this.ce = this.Dt.SA(e.cols, e.rows), this.De = this.Dt.SA(e.cols, e.rows), this.$e = this.Dt.SA(this.ne.width, this.ne.height);
|
|
1354
1348
|
}
|
|
1355
1349
|
Te(A) {
|
|
1356
1350
|
for (const e of this.Me) e.options.enabled && e instanceof O && e.ye(A);
|
|
1357
1351
|
const t = (e, s) => {
|
|
1358
|
-
e.begin(), this.Dt.
|
|
1359
|
-
for (const r of this.Me) r.options.enabled && this.Dt.
|
|
1352
|
+
e.begin(), this.Dt.UA();
|
|
1353
|
+
for (const r of this.Me) r.options.enabled && this.Dt.RA(s(r), 0, 0);
|
|
1360
1354
|
e.end();
|
|
1361
1355
|
};
|
|
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.
|
|
1356
|
+
t(this.ae, (e) => e.characterFramebuffer), t(this.he, (e) => e.primaryColorFramebuffer), t(this.le, (e) => e.secondaryColorFramebuffer), t(this.ce, (e) => e.rotationFramebuffer), t(this.De, (e) => e.transformFramebuffer), this.$e.begin(), this.Dt.UA(), this.Dt.IA(this.Ye), this.Dt.FA("u_characterTexture", this._t.fontFramebuffer), this.Dt.FA("u_charsetDimensions", [this._t.textureColumns, this._t.textureRows]), this.Dt.FA("u_asciiCharacterTexture", this.ae.texture), this.Dt.FA("u_primaryColorTexture", this.he.texture), this.Dt.FA("u_secondaryColorTexture", this.le.texture), this.Dt.FA("u_transformTexture", this.De.texture), this.Dt.FA("u_rotationTexture", this.ce.texture), this.Dt.FA("u_captureTexture", A.texture), this.Dt.FA("u_backgroundMode", !1), this.Dt.FA("u_captureDimensions", [A.width, A.height]), this.Dt.FA("u_gridCellDimensions", [this.ne.cols, this.ne.rows]), this.Dt.FA("u_gridPixelDimensions", [this.ne.width, this.ne.height]), this.Dt.$A(0, 0, this.$e.width, this.$e.height), this.$e.end();
|
|
1363
1357
|
}
|
|
1364
1358
|
add(A) {
|
|
1365
1359
|
if (!u.C(A === "brightness" || A === "custom", 'Converter type must be either "brightness" or "custom".', { method: "add", providedValue: A })) return;
|
|
1366
1360
|
let t;
|
|
1367
|
-
return t = A === "brightness" ? new
|
|
1361
|
+
return t = A === "brightness" ? new Y(this.Dt, this._t, this.ne) : new M(this.Dt, this._t, this.ne), this.Me.push(t), t;
|
|
1368
1362
|
}
|
|
1369
1363
|
remove(A) {
|
|
1370
1364
|
if (!u.C(A instanceof M, "Parameter must be a TextmodeConverter instance.", { method: "remove", providedValue: A })) return;
|
|
@@ -1454,37 +1448,37 @@ const IA = (E) => class extends E {
|
|
|
1454
1448
|
this.Dt.bA();
|
|
1455
1449
|
}
|
|
1456
1450
|
rect(A, t, e = 1, s = 1) {
|
|
1457
|
-
this.Dt
|
|
1451
|
+
this.Dt.$A(A, t, e, s);
|
|
1458
1452
|
}
|
|
1459
1453
|
line(A, t, e, s) {
|
|
1460
|
-
this.Dt.
|
|
1454
|
+
this.Dt.TA(A, t, e, s);
|
|
1461
1455
|
}
|
|
1462
1456
|
background(A, t = A, e = A, s = 255) {
|
|
1463
|
-
this.Dt.
|
|
1457
|
+
this.Dt.OA(A, t, e, s);
|
|
1464
1458
|
}
|
|
1465
1459
|
createShader(A, t) {
|
|
1466
|
-
return this.Dt.
|
|
1460
|
+
return this.Dt.MA(A, t);
|
|
1467
1461
|
}
|
|
1468
1462
|
createFilterShader(A) {
|
|
1469
|
-
return this.Dt.
|
|
1463
|
+
return this.Dt.GA(A);
|
|
1470
1464
|
}
|
|
1471
1465
|
shader(A) {
|
|
1472
1466
|
this.Dt.IA(A);
|
|
1473
1467
|
}
|
|
1474
1468
|
setUniform(A, t) {
|
|
1475
|
-
this.Dt.
|
|
1469
|
+
this.Dt.FA(A, t);
|
|
1476
1470
|
}
|
|
1477
1471
|
image(A, t, e, s, r) {
|
|
1478
|
-
this.Dt.
|
|
1472
|
+
this.Dt.RA(A, t, e, s, r);
|
|
1479
1473
|
}
|
|
1480
1474
|
clear() {
|
|
1481
|
-
this.Dt.
|
|
1475
|
+
this.Dt.UA();
|
|
1482
1476
|
}
|
|
1483
1477
|
createFramebuffer(A, t, e = {}) {
|
|
1484
|
-
return this.Dt.
|
|
1478
|
+
return this.Dt.SA(A, t, e);
|
|
1485
1479
|
}
|
|
1486
1480
|
};
|
|
1487
|
-
class
|
|
1481
|
+
class k {
|
|
1488
1482
|
Se(A) {
|
|
1489
1483
|
const t = A.characterFramebuffer, e = A.primaryColorFramebuffer, s = A.secondaryColorFramebuffer, r = A.transformFramebuffer, i = A.rotationFramebuffer;
|
|
1490
1484
|
return t == null || t.loadPixels(), e == null || e.loadPixels(), s == null || s.loadPixels(), r == null || r.loadPixels(), i == null || i.loadPixels(), { characterPixels: (t == null ? void 0 : t.pixels) || new Uint8Array(0), primaryColorPixels: (e == null ? void 0 : e.pixels) || new Uint8Array(0), secondaryColorPixels: (s == null ? void 0 : s.pixels) || new Uint8Array(0), transformPixels: (r == null ? void 0 : r.pixels) || new Uint8Array(0), rotationPixels: (i == null ? void 0 : i.pixels) || new Uint8Array(0) };
|
|
@@ -1496,11 +1490,11 @@ class L {
|
|
|
1496
1490
|
return { r: A[t], g: A[t + 1], b: A[t + 2], a: A[t + 3] };
|
|
1497
1491
|
}
|
|
1498
1492
|
}
|
|
1499
|
-
class
|
|
1493
|
+
class L {
|
|
1500
1494
|
ke(A, t) {
|
|
1501
1495
|
return new Blob([A], { type: t });
|
|
1502
1496
|
}
|
|
1503
|
-
|
|
1497
|
+
Re(A, t, e) {
|
|
1504
1498
|
try {
|
|
1505
1499
|
const s = this.ke(A, e), r = URL.createObjectURL(s), i = document.createElement("a");
|
|
1506
1500
|
i.href = r, i.download = t, i.style.display = "none", i.rel = "noopener", document.body.appendChild(i), i.click(), document.body.removeChild(i), URL.revokeObjectURL(r);
|
|
@@ -1508,7 +1502,7 @@ class k {
|
|
|
1508
1502
|
throw console.error("Failed to download file:", s), Error("File download failed: " + (s instanceof Error ? s.message : "Unknown error"));
|
|
1509
1503
|
}
|
|
1510
1504
|
}
|
|
1511
|
-
|
|
1505
|
+
Ve() {
|
|
1512
1506
|
return (/* @__PURE__ */ new Date()).toISOString().slice(0, 19).replace(/:/g, "-");
|
|
1513
1507
|
}
|
|
1514
1508
|
He() {
|
|
@@ -1519,10 +1513,10 @@ class k {
|
|
|
1519
1513
|
return A.replace(/[<>:"/\\|?*]/g, "_").replace(/\s+/g, "_").replace(/_{2,}/g, "_").replace(/^_+|_+$/g, "").substring(0, 255);
|
|
1520
1514
|
}
|
|
1521
1515
|
Le() {
|
|
1522
|
-
return "'textmode-export'-" + this.
|
|
1516
|
+
return "'textmode-export'-" + this.Ve();
|
|
1523
1517
|
}
|
|
1524
1518
|
}
|
|
1525
|
-
class fA extends
|
|
1519
|
+
class fA extends k {
|
|
1526
1520
|
Je(A, t, e) {
|
|
1527
1521
|
const s = A[e] === 255, r = A[e + 1] === 255, i = A[e + 2] === 255, B = t[e], Q = t[e + 1];
|
|
1528
1522
|
return { isInverted: s, flipHorizontal: r, flipVertical: i, rotation: Math.round(360 * (B + Q / 255) / 255 * 100) / 100 };
|
|
@@ -1536,13 +1530,13 @@ class fA extends L {
|
|
|
1536
1530
|
for (let r = 0; r < t.rows; r++) for (let i = 0; i < t.cols; i++) {
|
|
1537
1531
|
const B = 4 * s, Q = this.Oe(A.characterPixels, B);
|
|
1538
1532
|
let n = this.Ue(A.primaryColorPixels, B), g = this.Ue(A.secondaryColorPixels, B);
|
|
1539
|
-
const
|
|
1540
|
-
if (
|
|
1533
|
+
const h = this.Je(A.transformPixels, A.rotationPixels, B);
|
|
1534
|
+
if (h.isInverted) {
|
|
1541
1535
|
const D = n;
|
|
1542
1536
|
n = g, g = D;
|
|
1543
1537
|
}
|
|
1544
|
-
const
|
|
1545
|
-
e.push({ charIndex: Q, primaryColor: n, secondaryColor: g, transform:
|
|
1538
|
+
const a = this.Ke(i, r, t);
|
|
1539
|
+
e.push({ charIndex: Q, primaryColor: n, secondaryColor: g, transform: h, position: a }), s++;
|
|
1546
1540
|
}
|
|
1547
1541
|
return e;
|
|
1548
1542
|
}
|
|
@@ -1573,20 +1567,20 @@ class wA {
|
|
|
1573
1567
|
const { xs: r, ys: i, endPts: B, flags: Q } = A;
|
|
1574
1568
|
if (!(r && i && B && Q)) return "";
|
|
1575
1569
|
let n = "", g = 0;
|
|
1576
|
-
for (let
|
|
1577
|
-
const
|
|
1578
|
-
if (!(
|
|
1579
|
-
if (
|
|
1570
|
+
for (let h = 0; h < B.length; h++) {
|
|
1571
|
+
const a = B[h];
|
|
1572
|
+
if (!(a < g)) {
|
|
1573
|
+
if (a >= g) {
|
|
1580
1574
|
const D = t + r[g] * s, c = e - i[g] * s;
|
|
1581
1575
|
n += `M${D.toFixed(2)},${c.toFixed(2)}`;
|
|
1582
1576
|
let l = g + 1;
|
|
1583
|
-
for (; l <=
|
|
1577
|
+
for (; l <= a; )
|
|
1584
1578
|
if (1 & Q[l]) {
|
|
1585
1579
|
const d = t + r[l] * s, C = e - i[l] * s;
|
|
1586
1580
|
n += `L${d.toFixed(2)},${C.toFixed(2)}`, l++;
|
|
1587
1581
|
} else {
|
|
1588
1582
|
const d = t + r[l] * s, C = e - i[l] * s;
|
|
1589
|
-
let P = l + 1 >
|
|
1583
|
+
let P = l + 1 > a ? g : l + 1;
|
|
1590
1584
|
if (1 & Q[P]) {
|
|
1591
1585
|
const p = t + r[P] * s, m = e - i[P] * s;
|
|
1592
1586
|
n += `Q${d.toFixed(2)},${C.toFixed(2)} ${p.toFixed(2)},${m.toFixed(2)}`, l = P + 1;
|
|
@@ -1597,7 +1591,7 @@ class wA {
|
|
|
1597
1591
|
}
|
|
1598
1592
|
n += "Z";
|
|
1599
1593
|
}
|
|
1600
|
-
g =
|
|
1594
|
+
g = a + 1;
|
|
1601
1595
|
}
|
|
1602
1596
|
}
|
|
1603
1597
|
return n;
|
|
@@ -1684,18 +1678,18 @@ class pA {
|
|
|
1684
1678
|
`).replace(/[ \t]+$/gm, "");
|
|
1685
1679
|
}
|
|
1686
1680
|
}
|
|
1687
|
-
class mA extends
|
|
1681
|
+
class mA extends L {
|
|
1688
1682
|
hs(A) {
|
|
1689
1683
|
return this.ke(A, "image/svg+xml;charset=utf-8");
|
|
1690
1684
|
}
|
|
1691
1685
|
ls(A, t) {
|
|
1692
|
-
this.
|
|
1686
|
+
this.Re(A, this.ze(t) + ".svg", "image/svg+xml;charset=utf-8");
|
|
1693
1687
|
}
|
|
1694
1688
|
cs(A, t) {
|
|
1695
1689
|
this.ls(A, t || this.Le());
|
|
1696
1690
|
}
|
|
1697
1691
|
}
|
|
1698
|
-
class
|
|
1692
|
+
class H {
|
|
1699
1693
|
constructor() {
|
|
1700
1694
|
o(this, "Ds");
|
|
1701
1695
|
o(this, "Cs");
|
|
@@ -1714,7 +1708,7 @@ class $ {
|
|
|
1714
1708
|
this.us.cs(e, s);
|
|
1715
1709
|
}
|
|
1716
1710
|
}
|
|
1717
|
-
class xA extends
|
|
1711
|
+
class xA extends k {
|
|
1718
1712
|
ws(A, t, e, s = " ") {
|
|
1719
1713
|
var B;
|
|
1720
1714
|
const r = [];
|
|
@@ -1722,7 +1716,7 @@ class xA extends L {
|
|
|
1722
1716
|
for (let Q = 0; Q < t.rows; Q++) {
|
|
1723
1717
|
const n = [];
|
|
1724
1718
|
for (let g = 0; g < t.cols; g++) {
|
|
1725
|
-
const
|
|
1719
|
+
const h = 4 * i, a = this.Oe(A.characterPixels, h), D = ((B = e.characters[a]) == null ? void 0 : B.character) || s;
|
|
1726
1720
|
n.push(D), i++;
|
|
1727
1721
|
}
|
|
1728
1722
|
r.push(n);
|
|
@@ -1743,17 +1737,17 @@ class bA {
|
|
|
1743
1737
|
return e.join(s);
|
|
1744
1738
|
}
|
|
1745
1739
|
}
|
|
1746
|
-
class vA extends
|
|
1740
|
+
class vA extends L {
|
|
1747
1741
|
ds(A, t) {
|
|
1748
1742
|
const e = this.ps(t);
|
|
1749
|
-
this.
|
|
1743
|
+
this.Re(A, e, "text/plain;charset=utf-8");
|
|
1750
1744
|
}
|
|
1751
1745
|
ps(A) {
|
|
1752
1746
|
let t = this.ze(A);
|
|
1753
1747
|
return t === ".txt" || t.length <= 4 ? this.Le() : t;
|
|
1754
1748
|
}
|
|
1755
1749
|
}
|
|
1756
|
-
class
|
|
1750
|
+
class W {
|
|
1757
1751
|
constructor() {
|
|
1758
1752
|
o(this, "Ds");
|
|
1759
1753
|
o(this, "Cs");
|
|
@@ -1772,7 +1766,7 @@ class N {
|
|
|
1772
1766
|
this.us.ds(e, s);
|
|
1773
1767
|
}
|
|
1774
1768
|
}
|
|
1775
|
-
class yA extends
|
|
1769
|
+
class yA extends k {
|
|
1776
1770
|
vs(A, t = 1, e = "transparent") {
|
|
1777
1771
|
const s = A.canvas;
|
|
1778
1772
|
if (t === 1 && e === "transparent") return s;
|
|
@@ -1806,10 +1800,10 @@ class _A {
|
|
|
1806
1800
|
}
|
|
1807
1801
|
}
|
|
1808
1802
|
}
|
|
1809
|
-
const MA = { png: "image/png", jpg: "image/jpeg", webp: "image/webp" },
|
|
1810
|
-
class
|
|
1803
|
+
const MA = { png: "image/png", jpg: "image/jpeg", webp: "image/webp" }, N = { png: ".png", jpg: ".jpg", webp: ".webp" };
|
|
1804
|
+
class FA extends L {
|
|
1811
1805
|
Fs(A, t, e) {
|
|
1812
|
-
this.$s(A, this.ze(t) +
|
|
1806
|
+
this.$s(A, this.ze(t) + N[e]);
|
|
1813
1807
|
}
|
|
1814
1808
|
$s(A, t) {
|
|
1815
1809
|
const e = URL.createObjectURL(A);
|
|
@@ -1821,7 +1815,7 @@ class GA extends k {
|
|
|
1821
1815
|
}
|
|
1822
1816
|
}
|
|
1823
1817
|
Ys(A) {
|
|
1824
|
-
return A in MA && A in
|
|
1818
|
+
return A in MA && A in N;
|
|
1825
1819
|
}
|
|
1826
1820
|
}
|
|
1827
1821
|
class TA {
|
|
@@ -1829,7 +1823,7 @@ class TA {
|
|
|
1829
1823
|
o(this, "Ds");
|
|
1830
1824
|
o(this, "Cs");
|
|
1831
1825
|
o(this, "us");
|
|
1832
|
-
this.Ds = new yA(), this.Cs = new _A(), this.us = new
|
|
1826
|
+
this.Ds = new yA(), this.Cs = new _A(), this.us = new FA();
|
|
1833
1827
|
}
|
|
1834
1828
|
Ps(A) {
|
|
1835
1829
|
return { format: A.format ?? "png", quality: A.quality ?? 1, scale: A.scale ?? 1, backgroundColor: A.backgroundColor ?? "transparent" };
|
|
@@ -1859,21 +1853,21 @@ class TA {
|
|
|
1859
1853
|
}
|
|
1860
1854
|
const RA = (E) => class extends E {
|
|
1861
1855
|
toString(A = {}) {
|
|
1862
|
-
return new
|
|
1856
|
+
return new W()._s({ pipeline: this.Os, grid: this.ne, font: this._t }, A);
|
|
1863
1857
|
}
|
|
1864
1858
|
saveStrings(A = {}) {
|
|
1865
|
-
new
|
|
1859
|
+
new W().ds({ pipeline: this.Os, grid: this.ne, font: this._t }, A);
|
|
1866
1860
|
}
|
|
1867
1861
|
toSVG(A = {}) {
|
|
1868
|
-
return new
|
|
1862
|
+
return new H().Is(this, A);
|
|
1869
1863
|
}
|
|
1870
1864
|
saveSVG(A = {}) {
|
|
1871
|
-
new
|
|
1865
|
+
new H().cs(this, A);
|
|
1872
1866
|
}
|
|
1873
1867
|
async saveCanvas(A, t = "png", e = {}) {
|
|
1874
1868
|
await new TA().Fs(this.jt, { ...e, filename: A, format: t });
|
|
1875
1869
|
}
|
|
1876
|
-
},
|
|
1870
|
+
}, GA = (E) => class extends E {
|
|
1877
1871
|
async loadFont(A) {
|
|
1878
1872
|
return this._t.Ht(A).then(() => {
|
|
1879
1873
|
const t = this._t.maxGlyphDimensions;
|
|
@@ -1882,9 +1876,9 @@ const RA = (E) => class extends E {
|
|
|
1882
1876
|
}
|
|
1883
1877
|
fontSize(A) {
|
|
1884
1878
|
if (!u.C(typeof A == "number" && A > 0, "Font size must be a positive number greater than 0.", { method: "fontSize", providedValue: A }) || this._t.fontSize === A) return;
|
|
1885
|
-
this._t.
|
|
1879
|
+
this._t.Vt(A);
|
|
1886
1880
|
const t = this._t.maxGlyphDimensions;
|
|
1887
|
-
this.ne.qt(t.width, t.height), this.Os.ee(), this.Dt.
|
|
1881
|
+
this.ne.qt(t.width, t.height), this.Os.ee(), this.Dt.kA();
|
|
1888
1882
|
}
|
|
1889
1883
|
}, UA = (E) => class extends E {
|
|
1890
1884
|
addConverter(A) {
|
|
@@ -1894,7 +1888,7 @@ const RA = (E) => class extends E {
|
|
|
1894
1888
|
this.Os.remove(A);
|
|
1895
1889
|
}
|
|
1896
1890
|
};
|
|
1897
|
-
class
|
|
1891
|
+
class SA {
|
|
1898
1892
|
constructor() {
|
|
1899
1893
|
o(this, "Dt");
|
|
1900
1894
|
o(this, "_t");
|
|
@@ -1905,15 +1899,15 @@ class YA {
|
|
|
1905
1899
|
}
|
|
1906
1900
|
class z extends function(t, ...e) {
|
|
1907
1901
|
return e.reduce((s, r) => r(s), t);
|
|
1908
|
-
}(
|
|
1902
|
+
}(SA, IA, RA, GA, UA) {
|
|
1909
1903
|
constructor(t = null, e = {}) {
|
|
1910
1904
|
super();
|
|
1911
1905
|
o(this, "re");
|
|
1912
1906
|
o(this, "Us");
|
|
1913
1907
|
o(this, "ie");
|
|
1914
1908
|
o(this, "ks");
|
|
1915
|
-
o(this, "
|
|
1916
|
-
o(this, "
|
|
1909
|
+
o(this, "Rs");
|
|
1910
|
+
o(this, "Vs", null);
|
|
1917
1911
|
o(this, "Hs", 0);
|
|
1918
1912
|
o(this, "zs");
|
|
1919
1913
|
o(this, "Ls", !0);
|
|
@@ -1929,12 +1923,12 @@ class z extends function(t, ...e) {
|
|
|
1929
1923
|
o(this, "Ar", () => {
|
|
1930
1924
|
});
|
|
1931
1925
|
o(this, "tr");
|
|
1932
|
-
this.re = t, this.Xs = t === null, this.ks = e.renderMode ?? "auto", this.
|
|
1926
|
+
this.re = t, this.Xs = t === null, this.ks = e.renderMode ?? "auto", this.Rs = e.frameRate ?? 60, this.zs = 1e3 / this.Rs;
|
|
1933
1927
|
}
|
|
1934
1928
|
static async create(t = null, e = {}) {
|
|
1935
1929
|
const s = new this(t, e), r = s.Xs ? e : void 0;
|
|
1936
1930
|
let i, B;
|
|
1937
|
-
s.jt = new CA(s.re, s.Xs, r), s.Dt = new iA(s.jt.
|
|
1931
|
+
s.jt = new CA(s.re, s.Xs, r), s.Dt = new iA(s.jt.oe()), s.Xs ? (i = e.width || 800, B = e.height || 600) : (i = s.jt.width || 800, B = s.jt.height || 600), s.Us = s.Dt.SA(i, B), s._t = new cA(s.Dt, e.fontSize ?? 16), await s._t.Ut(e.fontSource);
|
|
1938
1932
|
const Q = s._t.maxGlyphDimensions;
|
|
1939
1933
|
return s.ne = new DA(s.jt.canvas, Q.width, Q.height), s.Os = new dA(s.Dt, s._t, s.ne), s.er(), s.sr(), s;
|
|
1940
1934
|
}
|
|
@@ -1946,20 +1940,20 @@ class z extends function(t, ...e) {
|
|
|
1946
1940
|
}), this.ie.observe(this.re));
|
|
1947
1941
|
}
|
|
1948
1942
|
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.
|
|
1943
|
+
this.Br(), this.Ws++, this.Zs ? console.warn("Cannot render: Required resources have been disposed") : (this.Xs ? (this.Us.begin(), this.qs(), this.Us.end()) : this.Us.update(this.re), this.Os.hasEnabledConverters() ? (this.Os.Te(this.Us), this.Dt.OA(0), this.Dt.RA(this.Os.texture, this.ne.offsetX, this.ne.offsetY, this.Os.texture.width, this.Os.texture.height)) : (this.Dt.UA(), this.Dt.RA(this.Us, this.ne.offsetX, this.ne.offsetY, this.Us.width, this.Us.height)));
|
|
1950
1944
|
}
|
|
1951
1945
|
rr() {
|
|
1952
|
-
this.jt.ee(), this.Us.resize(this.jt.width, this.jt.height), this.ne.ee(), this.Os.ee(), this.Dt.
|
|
1946
|
+
this.jt.ee(), this.Us.resize(this.jt.width, this.jt.height), this.ne.ee(), this.Os.ee(), this.Dt.kA(), this.ks !== "manual" && this.render();
|
|
1953
1947
|
}
|
|
1954
1948
|
sr() {
|
|
1955
1949
|
if (this.ks !== "auto" || !this.Ls) return;
|
|
1956
1950
|
this.Hs = performance.now();
|
|
1957
1951
|
const t = (e) => {
|
|
1958
|
-
if (!this.Ls) return void (this.
|
|
1952
|
+
if (!this.Ls) return void (this.Vs = null);
|
|
1959
1953
|
const s = e - this.Hs;
|
|
1960
|
-
s >= this.zs && (this.render(), this.Hs = e - s % this.zs), this.Ls && (this.
|
|
1954
|
+
s >= this.zs && (this.render(), this.Hs = e - s % this.zs), this.Ls && (this.Vs = requestAnimationFrame(t));
|
|
1961
1955
|
};
|
|
1962
|
-
this.
|
|
1956
|
+
this.Vs = requestAnimationFrame(t);
|
|
1963
1957
|
}
|
|
1964
1958
|
Br() {
|
|
1965
1959
|
const t = performance.now();
|
|
@@ -1972,17 +1966,17 @@ class z extends function(t, ...e) {
|
|
|
1972
1966
|
this.Ks = t;
|
|
1973
1967
|
}
|
|
1974
1968
|
ir() {
|
|
1975
|
-
this.
|
|
1969
|
+
this.Vs && (cancelAnimationFrame(this.Vs), this.Vs = null);
|
|
1976
1970
|
}
|
|
1977
1971
|
renderMode(t) {
|
|
1978
1972
|
this.ks !== t && (this.ir(), this.ks = t, t === "auto" && this.Ls && this.sr());
|
|
1979
1973
|
}
|
|
1980
1974
|
frameRate(t) {
|
|
1981
1975
|
if (t === void 0) return this.Js;
|
|
1982
|
-
this.
|
|
1976
|
+
this.Rs = t, this.zs = 1e3 / t, this.ks === "auto" && this.Ls && (this.ir(), this.sr());
|
|
1983
1977
|
}
|
|
1984
1978
|
noLoop() {
|
|
1985
|
-
this.Ls && (this.Ls = !1, this.
|
|
1979
|
+
this.Ls && (this.Ls = !1, this.Vs && (cancelAnimationFrame(this.Vs), this.Vs = null));
|
|
1986
1980
|
}
|
|
1987
1981
|
loop() {
|
|
1988
1982
|
this.Ls || (this.Ls = !0, this.ks === "auto" && this.sr());
|
|
@@ -2000,7 +1994,7 @@ class z extends function(t, ...e) {
|
|
|
2000
1994
|
this.Ar = t;
|
|
2001
1995
|
}
|
|
2002
1996
|
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.
|
|
1997
|
+
this.Xs && (this.jt.ee(t, e), this.Us.resize(this.jt.width, this.jt.height), this.ne.ee(), this.Os.ee(), this.Dt.kA(), this.ks !== "manual" && this.render());
|
|
2004
1998
|
}
|
|
2005
1999
|
destroy() {
|
|
2006
2000
|
this.Zs || (this.ir(), window.removeEventListener("resize", this.tr), this.ie && this.ie.disconnect(), this.Os.S(), this._t.S(), this.Us.S(), this.Dt.S(), this.Zs = !0);
|
|
@@ -2056,10 +2050,10 @@ class j {
|
|
|
2056
2050
|
u.u(A);
|
|
2057
2051
|
}
|
|
2058
2052
|
static get version() {
|
|
2059
|
-
return "0.1.9-beta.
|
|
2053
|
+
return "0.1.9-beta.6";
|
|
2060
2054
|
}
|
|
2061
2055
|
}
|
|
2062
|
-
const
|
|
2056
|
+
const kA = Object.freeze(Object.defineProperty({ __proto__: null }, Symbol.toStringTag, { value: "Module" })), LA = j.create, jA = j.setErrorLevel, VA = j.version;
|
|
2063
2057
|
export {
|
|
2064
2058
|
CA as TextmodeCanvas,
|
|
2065
2059
|
uA as TextmodeColorPalette,
|
|
@@ -2069,9 +2063,9 @@ export {
|
|
|
2069
2063
|
DA as TextmodeGrid,
|
|
2070
2064
|
z as Textmodifier,
|
|
2071
2065
|
OA as converters,
|
|
2072
|
-
|
|
2066
|
+
LA as create,
|
|
2073
2067
|
j as default,
|
|
2074
|
-
|
|
2068
|
+
kA as export,
|
|
2075
2069
|
jA as setErrorLevel,
|
|
2076
2070
|
j as textmode,
|
|
2077
2071
|
VA as version
|