textmode.js 0.2.0-beta.5 → 0.2.0

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.
@@ -4,10 +4,10 @@ var At=Object.defineProperty;var tt=(w,I,T)=>I in w?At(w,I,{enumerable:!0,config
4
4
  - ${i}: ${I.i(B)}`}return r+=`
5
5
 
6
6
  `,r+="↓".repeat(24)+`
7
- `,r}static i(t){if(t===null)return"null";if(t===void 0)return"undefined";if(typeof t=="string")return`"${t}"`;if(typeof t=="number"||typeof t=="boolean")return t+"";if(Array.isArray(t))return t.length===0?"[]":t.length<=5?`[${t.map(s=>I.i(s)).join(", ")}]`:`[${t.slice(0,3).map(s=>I.i(s)).join(", ")}, ... +${t.length-3} more]`;if(typeof t=="object"){const s=Object.keys(t);return s.length===0?"{}":s.length<=3?`{ ${s.map(r=>`${r}: ${I.i(t[r])}`).join(", ")} }`:`{ ${s.slice(0,2).map(r=>`${r}: ${I.i(t[r])}`).join(", ")}, ... +${s.length-2} more }`}return t+""}}var T=(o=>(o[o.SILENT=0]="SILENT",o[o.WARNING=1]="WARNING",o[o.ERROR=2]="ERROR",o[o.THROW=3]="THROW",o))(T||{});const _=class _{constructor(){a(this,"C",{globalLevel:3})}static D(){return _.o||(_.o=new _),_.o}l(t,s){const r="%c[textmode.js] Oops! (╯°□°)╯︵ Something went wrong in your code.",i="color: #f44336; font-weight: bold; background: #ffebee; padding: 2px 6px; border-radius: 3px;";switch(this.C.globalLevel){case 0:return!1;case 1:return console.group(r,i),console.warn(I.A(t,s)),console.groupEnd(),!1;case 2:return console.group(r,i),console.error(I.A(t,s)),console.groupEnd(),!1;default:throw new I(t,s)}}P(t,s,r){return!!t||(this.l(s,r),!1)}u(t){this.C.globalLevel=t}};a(_,"o",null);let W=_;const S=W.D(),J=new WeakMap;function z(o,t){J.set(o,t)}function G(o){return J.get(o)}class ${constructor(t,s,r=s,i=1,B={}){a(this,"I");a(this,"p");a(this,"C");a(this,"_",null);a(this,"m");a(this,"v");a(this,"G",[]);a(this,"$");a(this,"M",null);a(this,"Y",[]);this.I=s,this.p=r,this.C={filter:"nearest",wrap:"clamp",format:"rgba",type:"unsigned_byte",...B},this.m=t,this.$=Math.min(Math.max(1,i),8);const E=t.getParameter(t.MAX_DRAW_BUFFERS),n=t.getParameter(t.MAX_COLOR_ATTACHMENTS);this.$=Math.min(this.$,E,n),this.v=t.createFramebuffer(),this.R(),this.S(),this.Y=Array(this.$).fill(null)}R(){const t=this.m,s=this.C.filter==="linear"?t.LINEAR:t.NEAREST,r=this.C.wrap==="repeat"?t.REPEAT:t.CLAMP_TO_EDGE,i=this.C.type==="float"?t.FLOAT:t.UNSIGNED_BYTE;for(let B=0;B<this.$;B++){const E=t.createTexture();t.bindTexture(t.TEXTURE_2D,E),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,s),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,s),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,r),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,r),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,this.I,this.p,0,t.RGBA,i,null),this.G.push(E)}t.bindTexture(t.TEXTURE_2D,null)}S(){const t=this.m;if(t.bindFramebuffer(t.FRAMEBUFFER,this.v),this.$===1)t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,this.G[0],0);else{const r=[];for(let i=0;i<this.$;i++){const B=t.COLOR_ATTACHMENT0+i;t.framebufferTexture2D(t.FRAMEBUFFER,B,t.TEXTURE_2D,this.G[i],0),r.push(B)}t.drawBuffers(r)}const s=t.checkFramebufferStatus(t.FRAMEBUFFER);s!==t.FRAMEBUFFER_COMPLETE&&console.error("GLFramebuffer is not complete:",s),t.bindFramebuffer(t.FRAMEBUFFER,null)}F(t){const s=this.m;s.bindTexture(s.TEXTURE_2D,this.G[0]),s.pixelStorei(s.UNPACK_FLIP_Y_WEBGL,1),s.texImage2D(s.TEXTURE_2D,0,s.RGBA,s.RGBA,s.UNSIGNED_BYTE,t),s.bindTexture(s.TEXTURE_2D,null)}O(t,s){this.I=t,this.p=s,this._=null,this.Y=Array(this.$).fill(null);const r=this.m,i=this.C.type==="float"?r.FLOAT:r.UNSIGNED_BYTE;for(const B of this.G)r.bindTexture(r.TEXTURE_2D,B),r.texImage2D(r.TEXTURE_2D,0,r.RGBA,this.I,this.p,0,r.RGBA,i,null);r.bindTexture(r.TEXTURE_2D,null)}U(t){const s=this.m;if(t<0||t>=this.$)throw Error(`GLFramebuffer: attachment index ${t} out of range (count=${this.$})`);const r=this.Y[t];if(r)return r;const i=this.I,B=this.p,E=new Uint8Array(i*B*4),n=s.getParameter(s.READ_FRAMEBUFFER_BINDING);s.bindFramebuffer(s.READ_FRAMEBUFFER,this.v),s.readBuffer(s.COLOR_ATTACHMENT0+t),s.readPixels(0,0,i,B,s.RGBA,s.UNSIGNED_BYTE,E),s.bindFramebuffer(s.READ_FRAMEBUFFER,n);const Q=4*i,g=new Uint8Array(E.length);for(let l=0;l<B;l++){const h=(B-1-l)*Q,c=l*Q;g.set(E.subarray(h,h+Q),c)}return this.Y[t]=g,g}L(){for(let t=0;t<this.$;t++)this.U(t)}k(){const t=this.m;this.M={framebuffer:t.getParameter(t.FRAMEBUFFER_BINDING),viewport:t.getParameter(t.VIEWPORT)},t.bindFramebuffer(t.FRAMEBUFFER,this.v),this.Y=Array(this.$).fill(null);for(let s=0;s<this.$;s++)t.clearBufferfv(t.COLOR,s,new Float32Array([0,0,0,0]));t.viewport(0,0,this.I,this.p),z(t,[0,0,this.I,this.p])}H(){if(!this.M)return;const t=this.m;t.bindFramebuffer(t.FRAMEBUFFER,this.M.framebuffer),t.viewport(...this.M.viewport),z(t,this.M.viewport),this.M=null}W(){const t=this.m;this.v&&t.deleteFramebuffer(this.v);for(const s of this.G)t.deleteTexture(s);this.G=[],this.Y=[]}get width(){return this.I}get height(){return this.p}get pixels(){return this._}get options(){return{...this.C}}get framebuffer(){return this.v}get texture(){return this.G[0]}get textures(){return[...this.G]}get attachmentCount(){return this.$}getAttachmentPixels(t){return this.Y[t]??null}}class k{constructor(t,s,r){a(this,"m");a(this,"J");a(this,"V",new Map);a(this,"K",new Map);a(this,"Z",0);a(this,"j");this.m=t,this.J=this.X(s,r),this.j=t.getParameter(t.MAX_TEXTURE_IMAGE_UNITS),this.N()}N(){const t=this.m.getProgramParameter(this.J,this.m.ACTIVE_UNIFORMS);for(let s=0;s<t;s++){const r=this.m.getActiveUniform(this.J,s);if(r){const i=this.m.getUniformLocation(this.J,r.name);i&&(this.V.set(r.name,i),this.K.set(r.name,r.type))}}}X(t,s){const r=this.q(this.m.VERTEX_SHADER,t),i=this.q(this.m.FRAGMENT_SHADER,s),B=this.m.createProgram();if(this.m.attachShader(B,r),this.m.attachShader(B,i),this.m.linkProgram(B),!this.m.getProgramParameter(B,this.m.LINK_STATUS)){const E=this.m.getProgramInfoLog(B);throw Error("Shader program link error: "+E)}return this.m.deleteShader(r),this.m.deleteShader(i),B}q(t,s){const r=this.m.createShader(t);if(this.m.shaderSource(r,s),this.m.compileShader(r),!this.m.getShaderParameter(r,this.m.COMPILE_STATUS)){const i=this.m.getShaderInfoLog(r);throw this.m.deleteShader(r),Error("Shader compilation error: "+i)}return r}AA(){this.m.useProgram(this.J),this.tA()}tA(){this.Z=0}eA(t){for(const[s,r]of Object.entries(t))this.BA(s,r)}sA(t){return this.V.has(t)}BA(t,s){if(this.m.getParameter(this.m.CURRENT_PROGRAM)!==this.J)return void console.warn(`Attempting to set uniform '${t}' on shader that is not currently bound`);const r=this.V.get(t);if(r)if(typeof s=="number")this.m.uniform1f(r,s);else if(typeof s=="boolean")this.m.uniform1i(r,s?1:0);else if(Array.isArray(s))switch(s.length){case 2:this.m.uniform2f(r,s[0],s[1]);break;case 3:this.m.uniform3f(r,s[0],s[1],s[2]);break;case 4:this.m.uniform4f(r,s[0],s[1],s[2],s[3]);break;default:console.warn(`Unsupported array length ${s.length} for uniform '${t}'`)}else if(s instanceof WebGLTexture){const i=this.iA();this.m.uniform1i(r,i),this.m.activeTexture(this.m.TEXTURE0+i),this.m.bindTexture(this.m.TEXTURE_2D,s)}else if(s instanceof $){const i=this.iA();this.m.uniform1i(r,i),this.m.activeTexture(this.m.TEXTURE0+i),this.m.bindTexture(this.m.TEXTURE_2D,s.texture)}else if(typeof s=="object"&&"texture"in s){const i=this.iA();this.m.uniform1i(r,i),this.m.activeTexture(this.m.TEXTURE0+i),this.m.bindTexture(this.m.TEXTURE_2D,s.texture)}else console.warn(`Unsupported uniform type for '${t}':`,typeof s)}iA(){return this.Z>=this.j&&console.warn(`Exceeded maximum texture units (${this.j}). Texture may not render correctly.`),this.Z++}get QA(){return this.J}W(){this.m.deleteProgram(this.J)}}class rA{constructor(){a(this,"rA",1);a(this,"EA",0);a(this,"nA",0);a(this,"oA",0);a(this,"gA",[0,0,0]);a(this,"aA",[1,1,1,1]);a(this,"hA",[0,0,0,1]);a(this,"cA",!1);a(this,"CA",!1);a(this,"DA",!1);a(this,"lA",[0,0]);a(this,"PA",[0,0,0,1]);a(this,"uA",[])}IA(){this.uA.push({lineWeight:this.rA,rotationX:this.EA,rotationY:this.nA,rotationZ:this.oA,charRotation:[...this.lA],flipHorizontally:this.cA,flipVertically:this.CA,invert:this.DA,character:[...this.gA],charColor:[...this.aA],cellColor:[...this.hA]})}wA(){const t=this.uA.pop();t?(this.rA=t.lineWeight,this.EA=t.rotationX,this.nA=t.rotationY,this.oA=t.rotationZ,this.lA=t.charRotation,this.cA=t.flipHorizontally,this.CA=t.flipVertically,this.DA=t.invert,this.gA=t.character,this.aA=t.charColor,this.hA=t.cellColor):console.warn("pop() called without matching push()")}fA(){this.uA=[],this.EA=0,this.nA=0,this.oA=0}dA(t){t.lineWeight=this.rA,t.rotationX=this.EA,t.rotationY=this.nA,t.rotationZ=this.oA,t.character[0]=this.gA[0],t.character[1]=this.gA[1],t.character[2]=this.gA[2],t.charColor[0]=this.aA[0],t.charColor[1]=this.aA[1],t.charColor[2]=this.aA[2],t.charColor[3]=this.aA[3],t.bgColor[0]=this.hA[0],t.bgColor[1]=this.hA[1],t.bgColor[2]=this.hA[2],t.bgColor[3]=this.hA[3],t.flipHorizontally=this.cA,t.flipVertically=this.CA,t.invert=this.DA,t.charRotation[0]=this.lA[0],t.charRotation[1]=this.lA[1]}get lineWeight(){return this.rA}get canvasBackgroundColor(){return this.PA}pA(t){this.rA=Math.abs(t)}_A(t){this.EA=t}mA(t){this.nA=t}vA(t){this.oA=t}xA(t){this.gA=t}yA(t,s,r,i=255){this.aA=[t/255,s/255,r/255,i/255]}bA(t,s,r,i=255){this.hA=[t/255,s/255,r/255,i/255]}GA(t){this.cA=t}$A(t){this.CA=t}MA(t){this.DA=t}YA(t){const s=255*t/360,r=Math.floor(s)/255,i=Math.round(s-Math.floor(s));this.lA=[r,i]}zA(t,s,r,i){this.PA=[t/255,s/255,r/255,i/255]}}var N=`#version 300 es
8
- in vec2 a_position;in vec2 a_texCoord;in vec2 a_instancePosition;in vec2 a_instanceSize;in vec3 a_instanceCharacter;in vec4 a_instancePrimaryColor;in vec4 a_instanceSecondaryColor;in vec2 a_instanceRotation;in vec3 a_instanceTransform;in vec3 a_instanceGlobalRotation;in vec2 a_instanceRotationCenter;in vec2 a_instanceBezierCP1;in vec2 a_instanceBezierCP2;in vec2 a_instanceBezierStart;in vec2 a_instanceBezierEnd;in vec2 a_instanceArcAngles;uniform float u_aspectRatio;uniform vec2 u_viewportSize;out vec2 v_uv;out vec3 v_character;out vec4 v_primaryColor;out vec4 v_secondaryColor;out vec2 v_rotation;out vec3 v_transform;mat3 rotateX(float a){float s=sin(a),c=cos(a);return mat3(1,0,0,0,c,-s,0,s,c);}mat3 rotateY(float a){float s=sin(a),c=cos(a);return mat3(c,0,s,0,1,0,-s,0,c);}mat3 rotateZ(float a){float s=sin(a),c=cos(a);return mat3(c,-s,0,s,c,0,0,0,1);}vec2 evaluateBezier(float t,vec2 p0,vec2 p1,vec2 p2,vec2 p3){float u=1.-t,u2=u*u,t2=t*t;return u2*u*p0+3.*u2*t*p1+3.*u*t2*p2+t2*t*p3;}vec2 evaluateBezierDerivative(float t,vec2 p0,vec2 p1,vec2 p2,vec2 p3){float u=1.-t,u2=u*u,t2=t*t;return-3.*u2*p0+3.*u2*p1-6.*u*t*p1+6.*u*t*p2-3.*t2*p2+3.*t2*p3;}void main(){v_uv=a_texCoord;v_character=a_instanceCharacter;v_primaryColor=a_instancePrimaryColor;v_secondaryColor=a_instanceSecondaryColor;v_rotation=a_instanceRotation;v_transform=a_instanceTransform;vec2 worldPosition;bool isBezier=length(a_instanceBezierCP1)+length(a_instanceBezierCP2)+length(a_instanceBezierStart)+length(a_instanceBezierEnd)>0.;bool isArc=a_instanceArcAngles.x!=0.||a_instanceArcAngles.y!=0.;if(isBezier){float t=a_position.x;vec2 curvePoint=evaluateBezier(t,a_instanceBezierStart,a_instanceBezierCP1,a_instanceBezierCP2,a_instanceBezierEnd);vec2 tangent=evaluateBezierDerivative(t,a_instanceBezierStart,a_instanceBezierCP1,a_instanceBezierCP2,a_instanceBezierEnd);float tLen=length(tangent);tangent=tLen>0.?tangent/tLen:vec2(1,0);worldPosition=curvePoint+vec2(-tangent.y,tangent.x)*a_position.y*a_instanceSize.y;}else if(isArc){float s=a_instanceArcAngles.x,e=a_instanceArcAngles.y;s=mod(s,6.28318530718);if(s<0.)s+=6.28318530718;e=mod(e,6.28318530718);if(e<0.)e+=6.28318530718;float d=s-e;if(d<=0.)d+=6.28318530718;float angle=s-a_position.x*d;vec2 local=vec2(cos(angle),sin(angle))*a_position.y;worldPosition=local*a_instanceSize*.5+a_instanceSize*.5+a_instancePosition;}else{worldPosition=a_position*a_instanceSize+a_instancePosition;}vec2 ndc=(worldPosition/u_viewportSize)*2.-1.;ndc.y=-ndc.y;if(length(a_instanceGlobalRotation)>0.){vec3 pos3D=vec3(ndc-a_instanceRotationCenter,0);pos3D.x*=u_aspectRatio;if(a_instanceGlobalRotation.x!=0.)pos3D=rotateX(-a_instanceGlobalRotation.x)*pos3D;if(a_instanceGlobalRotation.y!=0.)pos3D=rotateY(-a_instanceGlobalRotation.y)*pos3D;if(a_instanceGlobalRotation.z!=0.)pos3D=rotateZ(-a_instanceGlobalRotation.z)*pos3D;pos3D.x/=u_aspectRatio;ndc=pos3D.xy+a_instanceRotationCenter;}gl_Position=vec4(ndc,0,1);}`,P=(o=>(o.RECTANGLE="rectangle",o.LINE="line",o.ELLIPSE="ellipse",o.ARC="arc",o.TRIANGLE="triangle",o.BEZIER_CURVE="bezier_curve",o.CUSTOM="custom",o))(P||{});class iA{constructor(t){a(this,"m");a(this,"RA",new Map);this.m=t}TA(t,s,r,i){const B=this.m;let E=this.RA.get(t);E||(E=new Map,this.RA.set(t,E));let n=E.get(s)||null;if(!n){n=B.createVertexArray(),E.set(s,n),B.bindVertexArray(n),B.bindBuffer(B.ARRAY_BUFFER,i);const Q=B.getAttribLocation(t,"a_position");Q!==-1&&(B.enableVertexAttribArray(Q),B.vertexAttribPointer(Q,r.attributes.position.size,B.FLOAT,!1,r.stride,r.attributes.position.offset),B.vertexAttribDivisor(Q,0));const g=B.getAttribLocation(t,"a_texCoord");g!==-1&&(B.enableVertexAttribArray(g),B.vertexAttribPointer(g,r.attributes.texCoord.size,B.FLOAT,!1,r.stride,r.attributes.texCoord.offset),B.vertexAttribDivisor(g,0))}B.bindVertexArray(n)}SA(){this.m.bindVertexArray(null)}W(){const t=this.m;for(const[,s]of this.RA)for(const[,r]of s)r&&t.deleteVertexArray(r);this.RA.clear()}}class BA{constructor(t){a(this,"FA");a(this,"m");a(this,"OA",null);a(this,"UA",null);a(this,"LA",null);this.m=t,this.FA=new iA(t)}kA(t,s,r){const{shader:i}=t,B=G(this.m)||this.m.getParameter(this.m.VIEWPORT),E={u_aspectRatio:B[2]/B[3],u_viewportSize:[B[2],B[3]]},n={};for(const[h,c]of Object.entries(E))i.sA(h)&&(n[h]=c);Object.keys(n).length>0&&i.eA(n);const Q=h=>{if(!h||!h.HA())return;const c=h.unitGeometry,D=h.unitBuffer;try{this.FA.TA(i.QA,h.type+"",c,D),h.batch.WA(i),h.batch.JA(c.primitiveType,c.vertexCount)}finally{h.batch.VA(i),this.FA.SA(),h.KA()}};let g=null,l=null;for(const h of s){if(h.type===P.CUSTOM){l&&(Q(l),g=null,l=null),this.ZA(t,h.params,h.state,r.get(P.RECTANGLE)||null);continue}g!==null&&h.type!==g&&(Q(l),g=null,l=null);let c=l;c&&h.type===g||(c=r.get(h.type)||null,l=c,g=h.type),c&&c.jA(h.params,h.state)}Q(l)}ZA(t,s,r,i){if(!i)return;const{x:B,y:E,width:n,height:Q,shader:g,uniforms:l}=s,h=this.m;g.AA(),i.KA();const c=this.XA(Math.max(1,Math.floor(n)),Math.max(1,Math.floor(Q)));c.k(),g.AA(),l&&Object.keys(l).length&&g.eA(l);{const d=G(h)||h.getParameter(h.VIEWPORT);g.sA("u_aspectRatio")&&g.BA("u_aspectRatio",d[2]/d[3]),g.sA("u_viewportSize")&&g.BA("u_viewportSize",[d[2],d[3]])}const D={...r,rotationX:0,rotationY:0,rotationZ:0};if(i.jA({x:0,y:0,width:c.width,height:c.height},D),i.HA()){const d=i.unitGeometry,F=i.unitBuffer;try{this.FA.TA(g.QA,i.type+"",d,F),i.batch.WA(g),i.batch.JA(d.primitiveType,d.vertexCount)}finally{i.batch.VA(g),this.FA.SA(),i.KA()}}c.H();const C=this.NA();C.AA(),C.eA({u_src0:c.textures[0],u_src1:c.textures[1],u_src2:c.textures[2],u_src3:c.textures[3],u_src4:c.textures[4],u_srcSize:[c.width,c.height]});const u=G(h)||h.getParameter(h.VIEWPORT);C.sA("u_aspectRatio")&&C.BA("u_aspectRatio",u[2]/u[3]),C.sA("u_viewportSize")&&C.BA("u_viewportSize",[u[2],u[3]]);const y=Math.floor(B),m=Math.floor(E),x=Math.max(1,Math.floor(n)),v=Math.max(1,Math.floor(Q));if(i.jA({x:y,y:m,width:x,height:v},r),i.HA()){const d=i.unitGeometry,F=i.unitBuffer;try{this.FA.TA(C.QA,i.type+"",d,F),i.batch.WA(C),i.batch.JA(d.primitiveType,d.vertexCount)}finally{i.batch.VA(C),this.FA.SA(),i.KA()}}t.shader.AA()}NA(){return this.OA||(this.OA=new k(this.m,N,`#version 300 es
9
- precision highp float;in vec2 v_uv;uniform sampler2D u_src0;uniform sampler2D u_src1;uniform sampler2D u_src2;uniform sampler2D u_src3;uniform sampler2D u_src4;uniform vec2 u_srcSize;layout(location=0)out vec4 o_character;layout(location=1)out vec4 o_primaryColor;layout(location=2)out vec4 o_secondaryColor;layout(location=3)out vec4 o_rotation;layout(location=4)out vec4 o_transform;void main(){vec2 uvTex=v_uv*u_srcSize;vec2 uvQ=(floor(uvTex)+0.5f)/u_srcSize;o_character=texture(u_src0,uvQ);o_primaryColor=texture(u_src1,uvQ);o_secondaryColor=texture(u_src2,uvQ);o_rotation=texture(u_src3,uvQ);o_transform=texture(u_src4,uvQ);}`)),this.OA}XA(t,s){return this.UA&&this.LA&&this.LA.w===t&&this.LA.h===s||(this.UA&&this.UA.W(),this.UA=new $(this.m,t,s,5),this.LA={w:t,h:s}),this.UA}}class EA{constructor(){a(this,"qA",[]);a(this,"At",1);a(this,"tt",0)}et(t){if(this.tt>=this.qA.length){const r={id:this.At++,type:t,params:{},state:{lineWeight:1,rotationX:0,rotationY:0,rotationZ:0,character:[0,0,0],charColor:[1,1,1,1],bgColor:[0,0,0,1],flipHorizontally:!1,flipVertically:!1,invert:!1,charRotation:[0,0]}};this.qA.push(r)}const s=this.qA[this.tt];switch(s.id=this.At++,s.type=t,t){case P.RECTANGLE:case P.ELLIPSE:s.params&&"width"in s.params||(s.params={x:0,y:0,width:0,height:0});break;case P.CUSTOM:s.params&&"shader"in s.params||(s.params={x:0,y:0,width:0,height:0,shader:void 0,uniforms:{}});break;case P.ARC:s.params&&"start"in s.params||(s.params={x:0,y:0,width:0,height:0,start:0,stop:0});break;case P.LINE:s.params&&"x2"in s.params||(s.params={x1:0,y1:0,x2:0,y2:0,thickness:void 0});break;case P.TRIANGLE:s.params&&"x3"in s.params||(s.params={x1:0,y1:0,x2:0,y2:0,x3:0,y3:0});break;case P.BEZIER_CURVE:s.params&&"cp2y"in s.params||(s.params={x1:0,y1:0,cp1x:0,cp1y:0,cp2x:0,cp2y:0,x2:0,y2:0,thickness:void 0});break;default:s.params||(s.params={})}return this.tt++,s}Bt(t,s,r,i,B){const E=this.et(P.RECTANGLE);return E.params.x=t,E.params.y=s,E.params.width=r,E.params.height=i,B.dA(E.state),E.id}st(t,s,r,i,B,E,n){const Q=this.et(P.CUSTOM);return Q.params.x=t,Q.params.y=s,Q.params.width=r,Q.params.height=i,Q.params.shader=B,Q.params.uniforms=E,n.dA(Q.state),Q.id}it(t,s,r,i,B,E){const n=this.et(P.LINE);return n.params.x1=t,n.params.y1=s,n.params.x2=r,n.params.y2=i,n.params.thickness=B,E.dA(n.state),n.id}Qt(t,s,r,i,B){const E=this.et(P.ELLIPSE);return E.params.x=t,E.params.y=s,E.params.width=r,E.params.height=i,B.dA(E.state),E.id}rt(t,s,r,i,B,E,n){const Q=this.et(P.ARC);return Q.params.x=t,Q.params.y=s,Q.params.width=r,Q.params.height=i,Q.params.start=B,Q.params.stop=E,n.dA(Q.state),Q.id}Et(t,s,r,i,B,E,n){const Q=this.et(P.TRIANGLE);return Q.params.x1=t,Q.params.y1=s,Q.params.x2=r,Q.params.y2=i,Q.params.x3=B,Q.params.y3=E,n.dA(Q.state),Q.id}nt(t,s,r,i,B,E,n,Q,g,l){const h=this.et(P.BEZIER_CURVE);return h.params.x1=t,h.params.y1=s,h.params.cp1x=r,h.params.cp1y=i,h.params.cp2x=B,h.params.cp2y=E,h.params.x2=n,h.params.y2=Q,h.params.thickness=g,l.dA(h.state),h.id}get length(){return this.tt}get isEmpty(){return this.tt===0}ot(){this.tt=0}[Symbol.iterator](){let t=0;const s=this.tt,r=this.qA;return{next:()=>t<s?{value:r[t++],done:!1}:{value:void 0,done:!0}}}}const R=class R{static gt(t,s,r=0){var E,n,Q,g,l,h,c,D,C,u;const i=s||new Float32Array(R.FLOATS_PER_INSTANCE);let B=r;return i[B++]=t.position[0],i[B++]=t.position[1],i[B++]=t.size[0],i[B++]=t.size[1],i[B++]=t.character[0],i[B++]=t.character[1],i[B++]=t.character[2],i[B++]=t.primaryColor[0],i[B++]=t.primaryColor[1],i[B++]=t.primaryColor[2],i[B++]=t.primaryColor[3],i[B++]=t.secondaryColor[0],i[B++]=t.secondaryColor[1],i[B++]=t.secondaryColor[2],i[B++]=t.secondaryColor[3],i[B++]=t.rotation[0],i[B++]=t.rotation[1],i[B++]=t.transform[0],i[B++]=t.transform[1],i[B++]=t.transform[2],i[B++]=t.globalRotationX,i[B++]=t.globalRotationY,i[B++]=t.globalRotationZ,i[B++]=t.rotationCenter[0],i[B++]=t.rotationCenter[1],i[B++]=((E=t.arcAngles)==null?void 0:E[0])||0,i[B++]=((n=t.arcAngles)==null?void 0:n[1])||0,i[B++]=((Q=t.bezierControlPoint1)==null?void 0:Q[0])||0,i[B++]=((g=t.bezierControlPoint1)==null?void 0:g[1])||0,i[B++]=((l=t.bezierControlPoint2)==null?void 0:l[0])||0,i[B++]=((h=t.bezierControlPoint2)==null?void 0:h[1])||0,i[B++]=((c=t.bezierStartPoint)==null?void 0:c[0])||0,i[B++]=((D=t.bezierStartPoint)==null?void 0:D[1])||0,i[B++]=((C=t.bezierEndPoint)==null?void 0:C[0])||0,i[B++]=((u=t.bezierEndPoint)==null?void 0:u[1])||0,i}static ht(t){const s=t.length*R.FLOATS_PER_INSTANCE,r=new Float32Array(s);for(let i=0;i<t.length;i++){const B=i*R.FLOATS_PER_INSTANCE;R.gt(t[i],r,B)}return r}};a(R,"BYTES_PER_INSTANCE",140),a(R,"FLOATS_PER_INSTANCE",35);let M=R;const f=class f{};a(f,"STRIDE",M.BYTES_PER_INSTANCE),a(f,"ATTRIBUTES",{a_instancePosition:{location:-1,size:2,type:WebGL2RenderingContext.FLOAT,normalized:!1,stride:f.STRIDE,offset:0,divisor:1},a_instanceSize:{location:-1,size:2,type:WebGL2RenderingContext.FLOAT,normalized:!1,stride:f.STRIDE,offset:8,divisor:1},a_instanceCharacter:{location:-1,size:3,type:WebGL2RenderingContext.FLOAT,normalized:!1,stride:f.STRIDE,offset:16,divisor:1},a_instancePrimaryColor:{location:-1,size:4,type:WebGL2RenderingContext.FLOAT,normalized:!1,stride:f.STRIDE,offset:28,divisor:1},a_instanceSecondaryColor:{location:-1,size:4,type:WebGL2RenderingContext.FLOAT,normalized:!1,stride:f.STRIDE,offset:44,divisor:1},a_instanceRotation:{location:-1,size:2,type:WebGL2RenderingContext.FLOAT,normalized:!1,stride:f.STRIDE,offset:60,divisor:1},a_instanceTransform:{location:-1,size:3,type:WebGL2RenderingContext.FLOAT,normalized:!1,stride:f.STRIDE,offset:68,divisor:1},a_instanceGlobalRotation:{location:-1,size:3,type:WebGL2RenderingContext.FLOAT,normalized:!1,stride:f.STRIDE,offset:80,divisor:1},a_instanceRotationCenter:{location:-1,size:2,type:WebGL2RenderingContext.FLOAT,normalized:!1,stride:f.STRIDE,offset:92,divisor:1},a_instanceArcAngles:{location:-1,size:2,type:WebGL2RenderingContext.FLOAT,normalized:!1,stride:f.STRIDE,offset:100,divisor:1},a_instanceBezierCP1:{location:-1,size:2,type:WebGL2RenderingContext.FLOAT,normalized:!1,stride:f.STRIDE,offset:108,divisor:1},a_instanceBezierCP2:{location:-1,size:2,type:WebGL2RenderingContext.FLOAT,normalized:!1,stride:f.STRIDE,offset:116,divisor:1},a_instanceBezierStart:{location:-1,size:2,type:WebGL2RenderingContext.FLOAT,normalized:!1,stride:f.STRIDE,offset:124,divisor:1},a_instanceBezierEnd:{location:-1,size:2,type:WebGL2RenderingContext.FLOAT,normalized:!1,stride:f.STRIDE,offset:132,divisor:1}});let U=f;class nA{constructor(t,s=1e3,r=1.5){a(this,"m");a(this,"ct",[]);a(this,"Ct");a(this,"Dt");a(this,"lt",null);a(this,"Pt",!0);a(this,"ut",0);a(this,"It",new Map);a(this,"wt",null);this.m=t,this.Ct=s,this.Dt=r,this.ft()}jA(t){const s=this.ct.length;return this.ct.push(t),this.Pt=!0,s}get count(){return this.ct.length}get isEmpty(){return this.ct.length===0}clear(){this.ct.length=0,this.Pt=!0}dt(t){if(t<=this.Ct)return;const s=Math.ceil(t*this.Dt);this.Ct=s,this.ft()}ft(){const t=this.m;this.lt&&t.deleteBuffer(this.lt),this.lt=t.createBuffer();const s=this.Ct*M.BYTES_PER_INSTANCE;t.bindBuffer(t.ARRAY_BUFFER,this.lt),t.bufferData(t.ARRAY_BUFFER,s,t.DYNAMIC_DRAW),t.bindBuffer(t.ARRAY_BUFFER,null),this.Pt=!0,this.ut=0}_t(){if(!this.Pt||this.ct.length===0)return;const t=this.m,s=this.ct.length;this.dt(s),(!this.wt||this.wt.length<s*M.FLOATS_PER_INSTANCE)&&(this.wt=new Float32Array(s*M.FLOATS_PER_INSTANCE));const r=M.ht(this.ct);t.bindBuffer(t.ARRAY_BUFFER,this.lt),s<=this.ut?t.bufferSubData(t.ARRAY_BUFFER,0,r):t.bufferData(t.ARRAY_BUFFER,r,t.DYNAMIC_DRAW),t.bindBuffer(t.ARRAY_BUFFER,null),this.Pt=!1,this.ut=s}vt(t){let s=this.It.get(t);if(!s){s=new Map;const r=this.m;for(const i in U.ATTRIBUTES){const B=r.getAttribLocation(t,i);B!==-1&&s.set(i,B)}this.It.set(t,s)}return s}WA(t){if(!this.lt||this.ct.length===0)return;const s=this.m,r=t.QA;this._t();const i=this.vt(r);s.bindBuffer(s.ARRAY_BUFFER,this.lt);for(const[B,E]of i){const n=U.ATTRIBUTES[B];n&&(s.enableVertexAttribArray(E),s.vertexAttribPointer(E,n.size,n.type,n.normalized,n.stride,n.offset),s.vertexAttribDivisor(E,n.divisor))}}VA(t){const s=this.m,r=this.vt(t.QA);for(const[,i]of r)s.disableVertexAttribArray(i),s.vertexAttribDivisor(i,0)}JA(t,s){this.ct.length!==0&&this.m.drawArraysInstanced(t,0,s,this.ct.length)}W(){const t=this.m;this.lt&&(t.deleteBuffer(this.lt),this.lt=null),this.ct.length=0,this.It.clear(),this.wt=null}}class Y{constructor(t,s,r,i){a(this,"m");a(this,"xt");a(this,"yt");a(this,"bt");a(this,"Gt",null);this.m=t,this.xt=s,this.yt=r,this.bt=i;const B=this.m.createBuffer();if(!B)throw Error("Failed to create unit geometry buffer");this.m.bindBuffer(this.m.ARRAY_BUFFER,B),this.m.bufferData(this.m.ARRAY_BUFFER,this.bt.vertices,this.m.STATIC_DRAW),this.m.bindBuffer(this.m.ARRAY_BUFFER,null),this.Gt=B}get type(){return this.yt}get unitGeometry(){return this.bt}get unitBuffer(){return this.Gt}get batch(){return this.xt}KA(){this.xt.clear()}HA(){return!this.xt.isEmpty}W(){this.xt.W(),this.Gt&&(this.m.deleteBuffer(this.Gt),this.Gt=null)}$t(t,s,r,i,B){const E=this.Mt(t,s,r,i,B.rotationX||0,B.rotationY||0,B.rotationZ||0);return{position:[t,s],size:[r,i],character:B.character||[0,0,0],primaryColor:B.charColor||[1,1,1,1],secondaryColor:B.bgColor||[0,0,0,1],rotation:B.charRotation||[0,0],transform:[B.invert?1:0,B.flipHorizontally?1:0,B.flipVertically?1:0],globalRotationX:E.radiansX,globalRotationY:E.radiansY,globalRotationZ:E.radiansZ,rotationCenter:[E.centerX,E.centerY]}}Yt(t,s){const r=G(this.m)||[0,0,this.m.canvas.width,this.m.canvas.height];return{nx:t/r[2]*2-1,ny:1-s/r[3]*2}}zt(t,s,r){const i=this.Yt(s,r);t.rotationCenter=[i.nx,i.ny]}Mt(t,s,r,i,B,E,n){const Q=G(this.m)||[0,0,this.m.canvas.width,this.m.canvas.height],g=Q[2],l=Q[3];return{centerX:(t+r/2)/g*2-1,centerY:1-(s+i/2)/l*2,radiansX:-B*Math.PI/180,radiansY:-E*Math.PI/180,radiansZ:-n*Math.PI/180,aspectRatio:g/l}}}const oA={vertices:new Float32Array([0,0,0,0,1,0,1,0,0,1,0,1,0,1,0,1,1,0,1,0,1,1,1,1]),vertexCount:6,primitiveType:WebGL2RenderingContext.TRIANGLES,stride:16,attributes:{position:{size:2,offset:0},texCoord:{size:2,offset:8}}};class QA extends Y{constructor(t,s){super(t,s,P.RECTANGLE,oA)}jA(t,s){const r=this.$t(t.x,t.y,t.width,t.height,s);return this.xt.jA(r)}}const aA={vertices:new Float32Array([0,-.5,0,0,1,-.5,1,0,0,.5,0,1,0,.5,0,1,1,-.5,1,0,1,.5,1,1]),vertexCount:6,primitiveType:WebGL2RenderingContext.TRIANGLES,stride:16,attributes:{position:{size:2,offset:0},texCoord:{size:2,offset:8}}};class gA extends Y{constructor(t,s){super(t,s,P.LINE,aA)}jA(t,s){const r=t.x2-t.x1,i=t.y2-t.y1,B=Math.hypot(r,i),E=Math.atan2(i,r),n=t.thickness||s.lineWeight||1,Q=t.x1+r/2,g=t.y1+i/2,l=Q-B/2,h=g,c={character:s.character,charColor:s.charColor,bgColor:s.bgColor,charRotation:s.charRotation,flipHorizontally:s.flipHorizontally,flipVertically:s.flipVertically,invert:s.invert,rotationX:s.rotationX||0,rotationY:s.rotationY||0,rotationZ:(s.rotationZ||0)+180*E/Math.PI,lineWeight:n},D=this.$t(l,h,B,n,c);return this.zt(D,Q,g),this.xt.jA(D)}}const hA={vertices:function(o=32){const t=[],s=2*Math.PI/o;for(let r=0;r<o;r++){const i=r*s,B=(r+1)%o*s,E=Math.cos(i),n=Math.sin(i),Q=.5*(E+1),g=.5*(n+1),l=Math.cos(B),h=Math.sin(B),c=.5*(l+1),D=.5*(h+1);t.push(0,0,.5,.5,E,n,Q,g,l,h,c,D)}return new Float32Array(t)}(32),vertexCount:96,primitiveType:WebGL2RenderingContext.TRIANGLES,stride:16,attributes:{position:{size:2,offset:0},texCoord:{size:2,offset:8}}};class cA extends Y{constructor(t,s){super(t,s,P.ELLIPSE,hA)}jA(t,s){const r=this.$t(t.x,t.y,t.width,t.height,s);return this.zt(r,t.x,t.y),this.xt.jA(r)}}let lA={vertices:function(o){const t=[];for(let s=0;s<o;s++){const r=s/o,i=(s+1)/o;t.push(r,0,r,0,r,1,r,1,i,1,i,1)}return new Float32Array(t)}(32),vertexCount:96,primitiveType:WebGL2RenderingContext.TRIANGLES,stride:16,attributes:{position:{size:2,offset:0},texCoord:{size:2,offset:8}}};class CA extends Y{constructor(t,s){super(t,s,P.ARC,lA)}jA(t,s){const r=t.x-t.width/2,i=t.y-t.height/2,B=t.start*Math.PI/180,E=t.stop*Math.PI/180,n=this.$t(r,i,t.width,t.height,s);return this.zt(n,t.x,t.y),n.arcAngles=[B,E],this.xt.jA(n)}}const DA={vertices:new Float32Array([0,0,0,0,1,0,1,0,.5,1,.5,1]),vertexCount:3,primitiveType:WebGL2RenderingContext.TRIANGLES,stride:16,attributes:{position:{size:2,offset:0},texCoord:{size:2,offset:8}}};class uA extends Y{constructor(t,s){super(t,s,P.TRIANGLE,DA)}jA(t,s){const r=Math.min(t.x1,t.x2,t.x3),i=Math.max(t.x1,t.x2,t.x3),B=Math.min(t.y1,t.y2,t.y3),E=i-r,n=Math.max(t.y1,t.y2,t.y3)-B,Q=this.$t(r,B,E,n,s),g=r+.5*E,l=B+n*(1/3);return this.zt(Q,g,l),this.xt.jA(Q)}}function V(o,t,s,r,i){const B=1-o,E=B*B,n=o*o;return E*B*t+3*E*o*s+3*B*n*r+n*o*i}const PA={vertices:function(o=16){const t=[];for(let s=0;s<o;s++){const r=s/o,i=(s+1)/o;t.push(r,-.5,r,0),t.push(i,-.5,i,0),t.push(r,.5,r,1),t.push(r,.5,r,1),t.push(i,-.5,i,0),t.push(i,.5,i,1)}return new Float32Array(t)}(16),vertexCount:96,primitiveType:WebGL2RenderingContext.TRIANGLES,stride:16,attributes:{position:{size:2,offset:0},texCoord:{size:2,offset:8}}};class IA extends Y{constructor(t,s){super(t,s,P.BEZIER_CURVE,PA)}jA(t,s){const r=s.lineWeight||1,i=V(.5,t.x1,t.cp1x,t.cp2x,t.x2),B=V(.5,t.y1,t.cp1y,t.cp2y,t.y2),E={character:s.character,charColor:s.charColor,bgColor:s.bgColor,charRotation:s.charRotation,flipHorizontally:s.flipHorizontally,flipVertically:s.flipVertically,invert:s.invert,rotationX:s.rotationX||0,rotationY:s.rotationY||0,rotationZ:s.rotationZ||0,lineWeight:r},n=this.$t(0,0,1,r,E);return this.zt(n,i,B),n.bezierStartPoint=[t.x1,t.y1],n.bezierControlPoint1=[t.cp1x,t.cp1y],n.bezierControlPoint2=[t.cp2x,t.cp2y],n.bezierEndPoint=[t.x2,t.y2],this.xt.jA(n)}}class fA{constructor(t){a(this,"m");a(this,"Rt",null);a(this,"Tt",null);a(this,"St",{});a(this,"Ft",null);a(this,"Ot",new Map);a(this,"Ut");a(this,"Lt");a(this,"kt");this.m=t,this.kt=new rA,this.Ut=new BA(t),this.Lt=new EA,this.Ft=t.createBuffer(),z(this.m,[0,0,this.m.canvas.width,this.m.canvas.height])}Ht(t){let s=this.Ot.get(t);if(s)return s;const r=new nA(this.m);return s=(0,{[P.RECTANGLE]:()=>new QA(this.m,r),[P.LINE]:()=>new gA(this.m,r),[P.ELLIPSE]:()=>new cA(this.m,r),[P.ARC]:()=>new CA(this.m,r),[P.TRIANGLE]:()=>new uA(this.m,r),[P.BEZIER_CURVE]:()=>new IA(this.m,r)}[t])(),this.Ot.set(t,s),s}Wt(t){this.Rt!==t&&(this.Rt=t,t.AA())}Jt(t,s){return new k(this.m,t,s)}Vt(t){this.Tt=t,t&&(this.St={})}Kt(t,s){this.St[t]=s}Zt(t){Object.assign(this.St,t)}jt(t){return new k(this.m,N,t)}Xt(t,s,r,i){var u;const B=this.m,E=B.canvas.width,n=B.canvas.height,Q=t/E*2-1,g=(t+r)/E*2-1,l=1-s/n*2,h=1-(s+i)/n*2,c=new Float32Array([Q,h,g,h,Q,l,g,h,g,l,Q,l]);B.bindBuffer(B.ARRAY_BUFFER,this.Ft),B.bufferData(B.ARRAY_BUFFER,c,B.DYNAMIC_DRAW);const D=((u=this.Rt)==null?void 0:u.QA)||B.getParameter(B.CURRENT_PROGRAM),C=D?B.getAttribLocation(D,"a_position"):-1;C!==-1&&(B.enableVertexAttribArray(C),B.vertexAttribPointer(C,2,B.FLOAT,!1,8,0)),B.drawArrays(B.TRIANGLES,0,6),C!==-1&&B.disableVertexAttribArray(C)}Nt(t,s,r,i){this.Tt?(this.Lt.st(t,s,r,i,this.Tt,{...this.St},this.kt),this.Tt=null,this.St={}):this.Lt.Bt(t,s,r,i,this.kt)}qt(t,s,r,i){this.Lt.it(t,s,r,i,this.kt.lineWeight,this.kt)}Ae(t,s,r,i){this.Lt.Qt(t,s,r,i,this.kt)}te(t,s,r,i,B,E){this.Lt.Et(t,s,r,i,B,E,this.kt)}ee(t,s,r,i,B,E,n,Q){const g=this.kt.lineWeight;this.Lt.nt(t,s,r,i,B,E,n,Q,g,this.kt)}Be(t,s,r=1,i={}){return new $(this.m,t,s,r,i)}se(t,s,r,i,B,E){this.Lt.rt(t,s,r,i,B,E,this.kt)}ie(t,s=t,r=t,i=255){this.state.zA(t,s,r,i),this.ot(t/255,s/255,r/255,i/255)}ot(t=0,s=0,r=0,i=0){this.m.clearColor(t,s,r,i),this.m.clear(this.m.COLOR_BUFFER_BIT)}Qe(){this.m.viewport(0,0,this.m.canvas.width,this.m.canvas.height),z(this.m,[0,0,this.m.canvas.width,this.m.canvas.height])}get context(){return this.m}get state(){return this.kt}re(t){const s=t,r=G(this.m)??this.m.getParameter(this.m.VIEWPORT),i={shader:s,gl:this.m,viewport:r};this.Wt(s);const B=new Set;for(const E of this.Lt)E.type===P.CUSTOM?B.add(P.RECTANGLE):B.add(E.type);for(const E of B)E!==P.CUSTOM&&this.Ht(E);this.Ut.kA(i,this.Lt,this.Ot),this.Lt.ot()}W(){this.m.deleteBuffer(this.Ft),this.Lt.ot();for(const t of this.Ot.values())t.W()}}const p={readShort:(o,t)=>(p.t.uint16[0]=o[t]<<8|o[t+1],p.t.int16[0]),readUshort:(o,t)=>o[t]<<8|o[t+1],readUshorts(o,t,s){const r=[];for(let i=0;i<s;i++)r.push(p.readUshort(o,t+2*i));return r},readUint(o,t){const s=p.t.uint8;return s[3]=o[t],s[2]=o[t+1],s[1]=o[t+2],s[0]=o[t+3],p.t.uint32[0]},readASCII(o,t,s){let r="";for(let i=0;i<s;i++)r+=String.fromCharCode(o[t+i]);return r},t:(()=>{const o=new ArrayBuffer(8);return{uint8:new Uint8Array(o),int16:new Int16Array(o),uint16:new Uint16Array(o),uint32:new Uint32Array(o)}})()},dA={parseTab(o,t,s){const r={tables:[],ids:{},off:t};o=new Uint8Array(o.buffer,t,s),t=0;const i=p,B=i.readUshort,E=B(o,t+=2);t+=2;const n=[];for(let Q=0;Q<E;Q++){const g=B(o,t),l=B(o,t+=2);t+=2;const h=i.readUint(o,t);t+=4;const c=`p${g}e${l}`;let D=n.indexOf(h);if(D===-1){let C;D=r.tables.length,n.push(h);const u=B(o,h);C=u===4?this.parse4(o,h):u===12?this.parse12(o,h):{format:u},r.tables.push(C)}r.ids[c]!=null&&console.warn("Multiple tables for one platform+encoding: "+c),r.ids[c]=D}return r},parse4(o,t){const s=p,r=s.readUshort,i=s.readUshorts,B=t,E=r(o,t+=2);t+=2;const n=r(o,t+=2)>>>1,Q={format:4,searchRange:r(o,t+=2),entrySelector:0,rangeShift:0,endCount:[],startCount:[],idDelta:[],idRangeOffset:[],glyphIdArray:[]};t+=2,Q.entrySelector=r(o,t),t+=2,Q.rangeShift=r(o,t),t+=2,Q.endCount=i(o,t,n),t+=2*n,t+=2,Q.startCount=i(o,t,n),t+=2*n;for(let g=0;g<n;g++)Q.idDelta.push(s.readShort(o,t)),t+=2;return Q.idRangeOffset=i(o,t,n),t+=2*n,Q.glyphIdArray=i(o,t,B+E-t>>1),Q},parse12(o,t){const s=p.readUint;s(o,t+=4),s(o,t+=4);const r=s(o,t+=4);t+=4;const i=new Uint32Array(3*r);for(let B=0;B<3*r;B+=3)i[B]=s(o,t+(B<<2)),i[B+1]=s(o,t+(B<<2)+4),i[B+2]=s(o,t+(B<<2)+8);return{format:12,groups:i}}},wA={parseTab(o,t,s){const r=p;t+=18;const i=r.readUshort(o,t);t+=2,t+=16;const B=r.readShort(o,t);t+=2;const E=r.readShort(o,t);t+=2;const n=r.readShort(o,t);t+=2;const Q=r.readShort(o,t);return t+=2,t+=6,{unitsPerEm:i,xMin:B,yMin:E,xMax:n,yMax:Q,indexToLocFormat:r.readShort(o,t)}}},mA={parseTab(o,t,s){const r=p;t+=4;const i=["ascender","descender","lineGap","advanceWidthMax","minLeftSideBearing","minRightSideBearing","xMaxExtent","caretSlopeRise","caretSlopeRun","caretOffset","res0","res1","res2","res3","metricDataFormat","numberOfHMetrics"],B={};for(let E=0;E<i.length;E++){const n=i[E],Q=n==="advanceWidthMax"||n==="numberOfHMetrics"?r.readUshort:r.readShort;B[n]=Q(o,t+2*E)}return B}},pA={parseTab(o,t,s,r){const i=p,B=[],E=[],n=r.maxp.numGlyphs,Q=r.hhea.numberOfHMetrics;let g=0,l=0,h=0;for(;h<Q;)g=i.readUshort(o,t+(h<<2)),l=i.readShort(o,t+(h<<2)+2),B.push(g),E.push(l),h++;for(;h<n;)B.push(g),E.push(l),h++;return{aWidth:B,lsBearing:E}}},j={cmap:dA,head:wA,hhea:mA,maxp:{parseTab(o,t,s){const r=p;return r.readUint(o,t),t+=4,{numGlyphs:r.readUshort(o,t)}}},hmtx:pA,loca:{parseTab(o,t,s,r){const i=p,B=[],E=r.head.indexToLocFormat,n=r.maxp.numGlyphs+1;if(E===0)for(let Q=0;Q<n;Q++)B.push(i.readUshort(o,t+(Q<<1))<<1);else if(E===1)for(let Q=0;Q<n;Q++)B.push(i.readUint(o,t+(Q<<2)));return B}},glyf:{parseTab(o,t,s,r){const i=[],B=r.maxp.numGlyphs;for(let E=0;E<B;E++)i.push(null);return i},Ee(o,t){const s=p,r=o.ne,i=o.loca;if(i[t]===i[t+1])return null;const B=b.findTable(r,"glyf",o.oe);if(!B)return null;let E=B[0]+i[t];const n={};if(n.noc=s.readShort(r,E),E+=2,n.xMin=s.readShort(r,E),E+=2,n.yMin=s.readShort(r,E),E+=2,n.xMax=s.readShort(r,E),E+=2,n.yMax=s.readShort(r,E),E+=2,n.xMin>=n.xMax||n.yMin>=n.yMax)return null;if(n.noc>0){n.endPts=[];for(let c=0;c<n.noc;c++)n.endPts.push(s.readUshort(r,E)),E+=2;const Q=s.readUshort(r,E);if(E+=2,r.length-E<Q)return null;E+=Q;const g=n.endPts[n.noc-1]+1;n.flags=[];for(let c=0;c<g;c++){const D=r[E];if(E++,n.flags.push(D),8&D){const C=r[E];E++;for(let u=0;u<C;u++)n.flags.push(D),c++}}n.xs=[];for(let c=0;c<g;c++){const D=n.flags[c],C=!!(16&D);2&D?(n.xs.push(C?r[E]:-r[E]),E++):C?n.xs.push(0):(n.xs.push(s.readShort(r,E)),E+=2)}n.ys=[];for(let c=0;c<g;c++){const D=n.flags[c],C=!!(32&D);4&D?(n.ys.push(C?r[E]:-r[E]),E++):C?n.ys.push(0):(n.ys.push(s.readShort(r,E)),E+=2)}let l=0,h=0;for(let c=0;c<g;c++)l+=n.xs[c],h+=n.ys[c],n.xs[c]=l,n.ys[c]=h}else n.parts=[],n.endPts=[],n.flags=[],n.xs=[],n.ys=[];return n}}},b={parse:o=>[((t,s,r,i)=>{const B=j,E={ne:t,ge:s,oe:r};for(const n in B){const Q=n,g=b.findTable(t,Q,r);if(g){const[l,h]=g;let c=i[l];c==null&&(c=B[Q].parseTab(t,l,h,E),i[l]=c),E[Q]=c}}return E})(new Uint8Array(o),0,0,{})],findTable(o,t,s){const r=p,i=r.readUshort(o,s+4);let B=s+12;for(let E=0;E<i;E++){const n=r.readASCII(o,B,4);r.readUint(o,B+4);const Q=r.readUint(o,B+8),g=r.readUint(o,B+12);if(n===t)return[Q,g];B+=16}return null},T:j,B:p};class L{constructor(){a(this,"ae",new Map);a(this,"he",new Map)}ce(t,s){const r=`${this.Ce(t)}_${s}`;if(this.ae.has(r))return this.ae.get(r);const i=t.cmap;if(!i||!i.tables)return this.ae.set(r,0),0;let B=0;for(const E of i.tables)if(E.format===4?B=this.De(s,E):E.format===12&&(B=this.le(s,E)),B>0)break;return this.ae.set(r,B),B}Pe(t,s){const r=s.codePointAt(0);return r===void 0?0:this.ce(t,r)}ue(t,s){const r=t.hmtx;return r&&r.aWidth&&r.aWidth.length!==0?s<r.aWidth.length?r.aWidth[s]:r.aWidth[r.aWidth.length-1]:0}Ie(t,s){const r=s/t.head.unitsPerEm,i=t.hhea.ascender*r,B=t.hhea.descender*r,E=t.hhea.lineGap*r;return{ascender:i,descender:B,lineGap:E,lineHeight:i-B+E,unitsPerEm:t.head.unitsPerEm,scale:r}}we(){this.ae.clear(),this.he.clear()}Ce(t){return`${t.oe}_${t.ne.length}`}De(t,s){const r=s.endCount.length;let i=-1;for(let B=0;B<r;B++)if(t<=s.endCount[B]){i=B;break}if(i===-1||t<s.startCount[i])return 0;if(s.idRangeOffset[i]===0)return t+s.idDelta[i]&65535;{const B=s.idRangeOffset[i]/2+(t-s.startCount[i])-(r-i);if(B>=0&&B<s.glyphIdArray.length){const E=s.glyphIdArray[B];return E===0?0:E+s.idDelta[i]&65535}}return 0}le(t,s){const r=s.groups.length/3;for(let i=0;i<r;i++){const B=s.groups[3*i],E=s.groups[3*i+1],n=s.groups[3*i+2];if(t>=B&&t<=E)return n+(t-B)}return 0}}class yA{constructor(t){a(this,"fe");this.fe=t}de(t){var r;const s=[];return(r=t.cmap)!=null&&r.tables?(t.cmap.tables.forEach(i=>{if(i.format===4){const B=this.pe(i);s.push(...B)}else if(i.format===12){const B=this._e(i);s.push(...B)}}),[...new Set(s)]):[]}me(t,s){return this.fe.Pe(t,s)>0}ve(t,s){for(const r of s)if(!this.me(t,r))return!1;return!0}xe(t,s){return s.filter(r=>this.me(t,r))}ye(t){return t.filter(s=>this.be(s))}pe(t){const s=[];if(!(t.startCount&&t.endCount&&t.idRangeOffset&&t.idDelta))return s;for(let r=0;r<t.startCount.length;r++){const i=t.startCount[r],B=t.endCount[r];if(i!==65535||B!==65535){for(let E=i;E<=B;E++)if(this.Ge(t,E,r)>0)try{const n=String.fromCodePoint(E);s.push(n)}catch{}}}return s}_e(t){const s=[];if(!t.groups)return s;for(let r=0;r<t.groups.length;r+=3){const i=t.groups[r],B=t.groups[r+1],E=t.groups[r+2];for(let n=i;n<=B;n++)if(E+(n-i)>0)try{const Q=String.fromCodePoint(n);s.push(Q)}catch{}}return s}Ge(t,s,r){if(t.idRangeOffset[r]===0)return s+t.idDelta[r]&65535;{const i=t.idRangeOffset[r]/2+(s-t.startCount[r])-(t.startCount.length-r);if(i>=0&&t.glyphIdArray&&i<t.glyphIdArray.length){const B=t.glyphIdArray[i];if(B!==0)return B+t.idDelta[r]&65535}}return 0}be(t){const s=t.codePointAt(0)||0;return!(s>=0&&s<=31&&s!==9&&s!==10&&s!==13||s>=127&&s<=159)}}class xA{constructor(){a(this,"$e");const t=new L;this.$e=new yA(t)}extractCharacters(t){return this.$e.de(t)}filterProblematicCharacters(t){return this.$e.ye(t)}characterExists(t,s){return this.$e.me(t,s)}allCharactersExist(t,s){return this.$e.ve(t,s)}}class vA{constructor(t){a(this,"Me");a(this,"Ye");a(this,"ze");a(this,"Re");this.ze=t,this.Re=new L,this.Me=document.createElement("canvas"),this.Ye=this.Me.getContext("2d",{willReadFrequently:!0,alpha:!1})}createTextureAtlas(t,s,r,i){const B=t.length,E=Math.ceil(Math.sqrt(B)),n=Math.ceil(B/E),Q=s.width*E,g=s.height*n,l=typeof i=="object"?i:null;this.Te(Q,g),this.Se(t,s,E,r,l);const h=this.ze.Be(Q,g,1,{filter:"nearest"});return h.F(this.Me),{framebuffer:h,columns:E,rows:n}}Te(t,s){this.Me.width=t,this.Me.height=s,this.Me.style.width=t+"px",this.Me.style.height=t+"px",this.Ye.imageSmoothingEnabled=!1,this.Me.style.imageRendering="pixelated",this.Ye.fillStyle="black",this.Ye.fillRect(0,0,t,s),this.Ye.textBaseline="top",this.Ye.textAlign="left",this.Ye.fillStyle="white"}Se(t,s,r,i,B){const E=i/B.head.unitsPerEm;for(let n=0;n<t.length;n++){const Q=n%r,g=Math.floor(n/r),l=t[n].character,h=this.Fe(B,l);if(!h)continue;const c=l.codePointAt(0)||0,D=this.Re.ce(B,c),C=this.Oe(B,D)*E,u=Q*s.width,y=g*s.height,m=u+.5*s.width,x=y+.5*s.height,v=Math.round(m-.5*s.width),d=Math.round(x-.5*i),F=v+.5*(s.width-C),qA=d+B.hhea.ascender*E;this.Ue(h,F,qA,E)}}Fe(t,s){const r=s.codePointAt(0)||0,i=this.Re.ce(t,r);if(i===0)return null;if(t.glyf&&t.glyf[i]!==null)return t.glyf[i];if(b&&b.T&&b.T.glyf){const B=b.T.glyf.Ee(t,i);return t.glyf&&B&&(t.glyf[i]=B),B}return null}Oe(t,s){const r=t.hmtx;return r&&r.aWidth?s<r.aWidth.length?r.aWidth[s]:r.aWidth[r.aWidth.length-1]:0}Ue(t,s,r,i){if(!t||!t.xs||t.noc===0)return;const{xs:B,ys:E,endPts:n,flags:Q}=t;if(!(B&&E&&n&&Q))return;this.Ye.beginPath();let g=0;for(let l=0;l<n.length;l++){const h=n[l];if(!(h<g)){if(h>=g){const c=s+B[g]*i,D=r-E[g]*i;this.Ye.moveTo(c,D);let C=g+1;for(;C<=h;)if(1&Q[C]){const u=s+B[C]*i,y=r-E[C]*i;this.Ye.lineTo(u,y),C++}else{const u=s+B[C]*i,y=r-E[C]*i;let m=C+1>h?g:C+1;if(1&Q[m]){const x=s+B[m]*i,v=r-E[m]*i;this.Ye.quadraticCurveTo(u,y,x,v),C=m+1}else{const x=(u+(s+B[m]*i))/2,v=(y+(r-E[m]*i))/2;this.Ye.quadraticCurveTo(u,y,x,v),C=m}}this.Ye.closePath()}g=h+1}}this.Ye.fill()}}class bA{constructor(){a(this,"fe");this.fe=new L}calculateMaxGlyphDimensions(t,s,r){let i=0;const B=this.fe.Ie(r,s),E=B.lineHeight;for(const n of t){const Q=this.fe.Pe(r,n);if(Q===0)continue;const g=this.fe.ue(r,Q)*B.scale;i=Math.max(i,g)}return{width:Math.ceil(i),height:Math.ceil(E)}}getCharacterAdvanceWidth(t,s,r){const i=this.fe.Ie(r,s),B=this.fe.Pe(r,t);return this.fe.ue(r,B)*i.scale}getFontMetrics(t,s){return this.fe.Ie(s,t)}we(){this.fe.we()}}class RA{constructor(){a(this,"Re");this.Re=new L}createCharacterObjects(t,s){return t.map((r,i)=>{const B=r.codePointAt(0)||0,E=this.Le(i);let n=0;if(s.hmtx&&s.hmtx.aWidth){const Q=this.Re.ce(s,B);Q>0&&s.hmtx.aWidth[Q]!==void 0&&(n=s.hmtx.aWidth[Q])}return{character:r,unicode:B,color:E,advanceWidth:n}})}Le(t){return[t%256/255,Math.floor(t/256)%256/255,Math.floor(t/65536)%256/255]}ke(t,s){if(!S.P(typeof t=="string","Character must be a string.",{method:"getCharacterColor",providedValue:t}))return[0,0,0];const r=s.find(i=>i.character===t);return r?r.color:[0,0,0]}He(t,s){return S.P(typeof t=="string"&&t.length>0,"Characters must be a string with at least one character.",{method:"getCharacterColors",providedValue:t})?Array.from(t).map(r=>this.ke(r,s)||[0,0,0]):[[0,0,0]]}}class Z{constructor(t,s=16){a(this,"We");a(this,"Je",[]);a(this,"Ve");a(this,"Ke",16);a(this,"Ze",0);a(this,"je",0);a(this,"Xe",{width:0,height:0});a(this,"Ne");a(this,"qe");a(this,"AB");a(this,"tB");a(this,"eB");this.Ke=s,this.qe=new xA,this.AB=new vA(t),this.tB=new bA,this.eB=new RA}async BB(t){let s;if(t){const r=await fetch(t);if(!r.ok)throw new I(`Failed to load font file: ${r.status} ${r.statusText}`);s=await r.arrayBuffer()}else s=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
10
- `)).arrayBuffer();await this.sB(s),this.We=b.parse(s)[0],await this.iB()}QB(t){if(t===void 0)return this.Ke;this.Ke=t,this.Xe=this.tB.calculateMaxGlyphDimensions(this.Je.map(r=>r.character),this.Ke,this.We);const s=this.AB.createTextureAtlas(this.Je,this.Xe,this.Ke,this.We);this.Ve=s.framebuffer,this.Ze=s.columns,this.je=s.rows}async rB(t){try{const s=await fetch(t);if(!s.ok)throw new I(`Failed to load font file: ${s.status} ${s.statusText}`);const r=await s.arrayBuffer();await this.sB(r);const i=b.parse(r);if(!i||i.length===0)throw Error("Failed to parse font file");this.We=i[0],await this.iB()}catch(s){throw new I("Failed to load font: "+(s instanceof Error?s.message:"Unknown error"),s)}}async sB(t){const s=Date.now();this.Ne=new FontFace("CustomFont_"+s,t),await this.Ne.load(),document.fonts.add(this.Ne)}async iB(){const t=this.qe.extractCharacters(this.We),s=this.qe.filterProblematicCharacters(t);this.Je=this.eB.createCharacterObjects(s,this.We),this.Xe=this.tB.calculateMaxGlyphDimensions(s,this.Ke,this.We);const r=this.AB.createTextureAtlas(this.Je,this.Xe,this.Ke,this.We);this.Ve=r.framebuffer,this.Ze=r.columns,this.je=r.rows}ke(t){return this.eB.ke(t,this.Je)}He(t){return this.eB.He(t,this.Je)}W(){this.Ve.W(),document.fonts.delete(this.Ne)}get fontFramebuffer(){return this.Ve}get characters(){return this.Je}get textureColumns(){return this.Ze}get textureRows(){return this.je}get maxGlyphDimensions(){return this.Xe}get fontSize(){return this.Ke}get font(){return this.We}}class K{constructor(t,s,r){a(this,"EB");a(this,"nB");a(this,"I");a(this,"p");a(this,"oB");a(this,"gB");a(this,"aB");a(this,"hB");a(this,"cB");this.aB=t,this.hB=s,this.cB=r,this.fA()}fA(){this.EB=Math.floor(this.aB.width/this.hB),this.nB=Math.floor(this.aB.height/this.cB),this.I=this.EB*this.hB,this.p=this.nB*this.cB,this.oB=Math.floor((this.aB.width-this.I)/2),this.gB=Math.floor((this.aB.height-this.p)/2)}CB(t,s){this.hB=t,this.cB=s,this.fA()}get cellWidth(){return this.hB}get cellHeight(){return this.cB}get cols(){return this.EB}get rows(){return this.nB}get width(){return this.I}get height(){return this.p}get offsetX(){return this.oB}get offsetY(){return this.gB}}class q{constructor(t={}){a(this,"aB");a(this,"DB");a(this,"lB");t.canvas?(this.aB=t.canvas,this.lB=!1):(this.aB=this.PB(t.width,t.height),this.lB=!0),this.aB.style.imageRendering="pixelated"}PB(t,s){const r=document.createElement("canvas");return r.className="textmodeCanvas",r.style.imageRendering="pixelated",r.width=t||800,r.height=s||600,document.body.appendChild(r),r}O(t,s){this.aB.width=t??this.aB.width,this.aB.height=s??this.aB.height}uB(){const t=this.aB.getContext("webgl2",{alpha:!0,premultipliedAlpha:!1,preserveDrawingBuffer:!0,antialias:!1,depth:!1,stencil:!1,powerPreference:"high-performance"});if(!t)throw new I("`textmode.js` requires WebGL2 support.");return t}W(){this.DB&&this.DB.disconnect();const t=this.aB.getContext("webgl")||this.aB.getContext("webgl2");if(t){const s=t.getExtension("WEBGL_lose_context");s&&s.loseContext()}this.lB&&this.aB.parentNode&&this.aB.parentNode.removeChild(this.aB)}get canvas(){return this.aB}get width(){return this.aB.width}get height(){return this.aB.height}}class TA{constructor(t=60){a(this,"IB");a(this,"wB");a(this,"fB",null);a(this,"dB",0);a(this,"pB",!0);a(this,"_B",0);a(this,"mB",0);a(this,"vB",[]);a(this,"xB",10);a(this,"yB",0);this.IB=t,this.wB=1e3/t}start(t){if(!this.pB)return;this.dB=performance.now();const s=r=>{if(!this.pB)return void(this.fB=null);const i=r-this.dB;i>=this.wB&&(t(),this.dB=r-i%this.wB),this.pB&&(this.fB=requestAnimationFrame(s))};this.fB=requestAnimationFrame(s)}stop(){this.fB&&(cancelAnimationFrame(this.fB),this.fB=null)}pause(){this.pB&&(this.pB=!1,this.stop())}resume(t){this.pB||(this.pB=!0,this.start(t))}frameRate(t,s){if(t===void 0)return this._B;this.IB=t,this.wB=1e3/t,this.pB&&s&&(this.stop(),this.start(s))}measureFrameRate(){const t=performance.now();if(this.mB>0){const s=t-this.mB;this.vB.push(s),this.vB.length>this.xB&&this.vB.shift();const r=this.vB.reduce((i,B)=>i+B,0)/this.vB.length;this._B=1e3/r}this.mB=t}get isLooping(){return this.pB}get frameRateLimit(){return this.IB}get currentFrameRate(){return this._B}get frameCount(){return this.yB}set frameCount(t){this.yB=t}incrementFrame(){this.yB++}resetFrameCount(){this.yB=0}}const MA=o=>class extends o{rotate(t=0,s=0,r=0){this.ze.state._A(t),this.ze.state.mA(s),this.ze.state.vA(r)}rotateX(t){this.ze.state._A(t)}rotateY(t){this.ze.state.mA(t)}rotateZ(t){this.ze.state.vA(t)}push(){this.ze.state.IA()}pop(){this.ze.state.wA()}rect(t,s,r=1,i=1){this.ze.Nt(t,s,r,i)}line(t,s,r,i){this.ze.qt(t,s,r,i)}lineWeight(t){this.ze.state.pA(t)}background(t,s=t,r=t,i=255){this.ze.ie(t,s,r,i)}char(t){this.ze.state.xA(this.We.ke(t))}charColor(t,s,r){this.ze.state.yA(t,s,r)}cellColor(t,s,r){this.ze.state.bA(t,s,r)}flipX(t){this.ze.state.GA(t)}flipY(t){this.ze.state.$A(t)}charRotation(t){this.ze.state.YA(t)}invert(t){this.ze.state.MA(t)}clear(){this.ze.ie(0,0,0,0)}ellipse(t,s,r,i){this.ze.Ae(t,s,r/2,i/2)}triangle(t,s,r,i,B,E){this.ze.te(t,s,r,i,B,E)}bezierCurve(t,s,r,i,B,E,n,Q){this.ze.ee(t,s,r,i,B,E,n,Q)}arc(t,s,r,i,B,E){this.ze.se(t,s,r,i,B,E)}shader(t){this.ze.Vt(t)}setUniform(t,s){this.ze.Kt(t,s)}setUniforms(t){this.ze.Zt(t)}createFilterShader(t){return this.ze.jt(t)}};class H{bB(t){const s=t.U(0),r=t.U(1),i=t.U(2),B=t.U(3);return{characterPixels:s,primaryColorPixels:r,secondaryColorPixels:i,transformPixels:t.U(4),rotationPixels:B}}GB(t,s){return t[s]+(t[s+1]<<8)}$B(t,s){return{r:t[s],g:t[s+1],b:t[s+2],a:t[s+3]}}}class X{MB(t,s){return new Blob([t],{type:s})}YB(t,s,r){try{const i=this.MB(t,r),B=URL.createObjectURL(i),E=document.createElement("a");E.href=B,E.download=s,E.style.display="none",E.rel="noopener",document.body.appendChild(E),E.click(),document.body.removeChild(E),URL.revokeObjectURL(B)}catch(i){throw console.error("Failed to download file:",i),Error("File download failed: "+(i instanceof Error?i.message:"Unknown error"))}}zB(){return new Date().toISOString().slice(0,19).replace(/:/g,"-")}RB(){const t=new Date;return{date:t.toISOString().split("T")[0],time:t.toTimeString().split(" ")[0].replace(/:/g,"-")}}TB(t){return t.replace(/[<>:"/\\|?*]/g,"_").replace(/\s+/g,"_").replace(/_{2,}/g,"_").replace(/^_+|_+$/g,"").substring(0,255)}SB(){return"textmode-export-"+this.zB()}}class _A extends H{FB(t,s,r){const i=t[r]===255,B=t[r+1]===255,E=t[r+2]===255,n=s[r],Q=s[r+1];return{isInverted:i,flipHorizontal:B,flipVertical:E,rotation:Math.round(360*(n+Q/255)/255*100)/100}}OB(t,s,r){return{x:t,y:s,cellX:t*r.cellWidth,cellY:s*r.cellHeight}}UB(t,s){const r=[];let i=0;for(let B=0;B<s.rows;B++)for(let E=0;E<s.cols;E++){const n=4*i,Q=this.GB(t.characterPixels,n);let g=this.$B(t.primaryColorPixels,n),l=this.$B(t.secondaryColorPixels,n);const h=this.FB(t.transformPixels,t.rotationPixels,n);if(h.isInverted){const D=g;g=l,l=D}const c=this.OB(E,B,s);r.push({charIndex:Q,primaryColor:g,secondaryColor:l,transform:h,position:c}),i++}return r}}class GA{LB(t,s){const r=t.cmap;for(const i of r.tables)if(i.format===4){const B=i;for(let E=0;E<B.startCount.length;E++)if(s>=B.startCount[E]&&s<=B.endCount[E]){if(B.idRangeOffset[E]===0)return s+B.idDelta[E]&65535;{const n=B.idRangeOffset[E]/2+(s-B.startCount[E])-(B.startCount.length-E);if(n>=0&&n<B.glyphIdArray.length){const Q=B.glyphIdArray[n];if(Q!==0)return Q+B.idDelta[E]&65535}}}}else if(i.format===12){const B=i;for(let E=0;E<B.groups.length;E+=3){const n=B.groups[E],Q=B.groups[E+1],g=B.groups[E+2];if(s>=n&&s<=Q)return g+(s-n)}}return 0}kB(t,s,r,i,B){const E=B/t.head.unitsPerEm;return{getBoundingBox:()=>({x1:r+s.xMin*E,y1:i+-s.yMax*E,x2:r+s.xMax*E,y2:i+-s.yMin*E}),toSVG:()=>this.HB(s,r,i,E)}}HB(t,s,r,i){if(!t||!t.xs)return"";const{xs:B,ys:E,endPts:n,flags:Q}=t;if(!(B&&E&&n&&Q))return"";let g="",l=0;for(let h=0;h<n.length;h++){const c=n[h];if(!(c<l)){if(c>=l){const D=s+B[l]*i,C=r-E[l]*i;g+=`M${D.toFixed(2)},${C.toFixed(2)}`;let u=l+1;for(;u<=c;)if(1&Q[u]){const y=s+B[u]*i,m=r-E[u]*i;g+=`L${y.toFixed(2)},${m.toFixed(2)}`,u++}else{const y=s+B[u]*i,m=r-E[u]*i;let x=u+1>c?l:u+1;if(1&Q[x]){const v=s+B[x]*i,d=r-E[x]*i;g+=`Q${y.toFixed(2)},${m.toFixed(2)} ${v.toFixed(2)},${d.toFixed(2)}`,u=x+1}else{const v=(y+(s+B[x]*i))/2,d=(m+(r-E[x]*i))/2;g+=`Q${y.toFixed(2)},${m.toFixed(2)} ${v.toFixed(2)},${d.toFixed(2)}`,u=x}}g+="Z"}l=c+1}}return g}WB(t,s,r,i,B){const E=t.codePointAt(0)||0,n=this.LB(s,E);let Q=null;return s.glyf&&s.glyf[n]!==null?Q=s.glyf[n]:(Q=b.T.glyf.Ee(s,n),s.glyf[n]=Q),this.kB(s,Q,r,i,B)}JB(t,s,r,i,B,E,n,Q){const g=r+(B-Q*(n/s.head.unitsPerEm))/2,l=i+(E+.7*n)/2;return this.WB(t,s,g,l,n).toSVG()||null}}class YA{constructor(){a(this,"VB");this.VB=new GA}KB(t){return`<?xml version="1.0" encoding="UTF-8" standalone="no"?>
7
+ `,r}static i(t){if(t===null)return"null";if(t===void 0)return"undefined";if(typeof t=="string")return`"${t}"`;if(typeof t=="number"||typeof t=="boolean")return t+"";if(Array.isArray(t))return t.length===0?"[]":t.length<=5?`[${t.map(s=>I.i(s)).join(", ")}]`:`[${t.slice(0,3).map(s=>I.i(s)).join(", ")}, ... +${t.length-3} more]`;if(typeof t=="object"){const s=Object.keys(t);return s.length===0?"{}":s.length<=3?`{ ${s.map(r=>`${r}: ${I.i(t[r])}`).join(", ")} }`:`{ ${s.slice(0,2).map(r=>`${r}: ${I.i(t[r])}`).join(", ")}, ... +${s.length-2} more }`}return t+""}}var T=(n=>(n[n.SILENT=0]="SILENT",n[n.WARNING=1]="WARNING",n[n.ERROR=2]="ERROR",n[n.THROW=3]="THROW",n))(T||{});const _=class _{constructor(){a(this,"C",{globalLevel:3})}static D(){return _.o||(_.o=new _),_.o}l(t,s){const r="%c[textmode.js] Oops! (╯°□°)╯︵ Something went wrong in your code.",i="color: #f44336; font-weight: bold; background: #ffebee; padding: 2px 6px; border-radius: 3px;";switch(this.C.globalLevel){case 0:return!1;case 1:return console.group(r,i),console.warn(I.A(t,s)),console.groupEnd(),!1;case 2:return console.group(r,i),console.error(I.A(t,s)),console.groupEnd(),!1;default:throw new I(t,s)}}P(t,s,r){return!!t||(this.l(s,r),!1)}u(t){this.C.globalLevel=t}};a(_,"o",null);let W=_;const S=W.D(),J=new WeakMap;function z(n,t){J.set(n,t)}function G(n){return J.get(n)}class ${constructor(t,s,r=s,i=1,B={}){a(this,"I");a(this,"p");a(this,"C");a(this,"_",null);a(this,"m");a(this,"v");a(this,"G",[]);a(this,"$");a(this,"M",null);a(this,"Y",[]);this.I=s,this.p=r,this.C={filter:"nearest",wrap:"clamp",format:"rgba",type:"unsigned_byte",...B},this.m=t,this.$=Math.min(Math.max(1,i),8);const E=t.getParameter(t.MAX_DRAW_BUFFERS),o=t.getParameter(t.MAX_COLOR_ATTACHMENTS);this.$=Math.min(this.$,E,o),this.v=t.createFramebuffer(),this.R(),this.S(),this.Y=Array(this.$).fill(null)}R(){const t=this.m,s=this.C.filter==="linear"?t.LINEAR:t.NEAREST,r=this.C.wrap==="repeat"?t.REPEAT:t.CLAMP_TO_EDGE,i=this.C.type==="float"?t.FLOAT:t.UNSIGNED_BYTE;for(let B=0;B<this.$;B++){const E=t.createTexture();t.bindTexture(t.TEXTURE_2D,E),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,s),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,s),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,r),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,r),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,this.I,this.p,0,t.RGBA,i,null),this.G.push(E)}t.bindTexture(t.TEXTURE_2D,null)}S(){const t=this.m;if(t.bindFramebuffer(t.FRAMEBUFFER,this.v),this.$===1)t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,this.G[0],0);else{const r=[];for(let i=0;i<this.$;i++){const B=t.COLOR_ATTACHMENT0+i;t.framebufferTexture2D(t.FRAMEBUFFER,B,t.TEXTURE_2D,this.G[i],0),r.push(B)}t.drawBuffers(r)}const s=t.checkFramebufferStatus(t.FRAMEBUFFER);s!==t.FRAMEBUFFER_COMPLETE&&console.error("GLFramebuffer is not complete:",s),t.bindFramebuffer(t.FRAMEBUFFER,null)}F(t){const s=this.m;s.bindTexture(s.TEXTURE_2D,this.G[0]),s.pixelStorei(s.UNPACK_FLIP_Y_WEBGL,1),s.texImage2D(s.TEXTURE_2D,0,s.RGBA,s.RGBA,s.UNSIGNED_BYTE,t),s.bindTexture(s.TEXTURE_2D,null)}O(t,s){this.I=t,this.p=s,this._=null,this.Y=Array(this.$).fill(null);const r=this.m,i=this.C.type==="float"?r.FLOAT:r.UNSIGNED_BYTE;for(const B of this.G)r.bindTexture(r.TEXTURE_2D,B),r.texImage2D(r.TEXTURE_2D,0,r.RGBA,this.I,this.p,0,r.RGBA,i,null);r.bindTexture(r.TEXTURE_2D,null)}U(t){const s=this.m;if(t<0||t>=this.$)throw Error(`GLFramebuffer: attachment index ${t} out of range (count=${this.$})`);const r=this.Y[t];if(r)return r;const i=this.I,B=this.p,E=new Uint8Array(i*B*4),o=s.getParameter(s.READ_FRAMEBUFFER_BINDING);s.bindFramebuffer(s.READ_FRAMEBUFFER,this.v),s.readBuffer(s.COLOR_ATTACHMENT0+t),s.readPixels(0,0,i,B,s.RGBA,s.UNSIGNED_BYTE,E),s.bindFramebuffer(s.READ_FRAMEBUFFER,o);const Q=4*i,g=new Uint8Array(E.length);for(let l=0;l<B;l++){const h=(B-1-l)*Q,c=l*Q;g.set(E.subarray(h,h+Q),c)}return this.Y[t]=g,g}L(){for(let t=0;t<this.$;t++)this.U(t)}k(){const t=this.m;this.M={framebuffer:t.getParameter(t.FRAMEBUFFER_BINDING),viewport:t.getParameter(t.VIEWPORT)},t.bindFramebuffer(t.FRAMEBUFFER,this.v),this.Y=Array(this.$).fill(null);for(let s=0;s<this.$;s++)t.clearBufferfv(t.COLOR,s,new Float32Array([0,0,0,0]));t.viewport(0,0,this.I,this.p),z(t,[0,0,this.I,this.p])}H(){if(!this.M)return;const t=this.m;t.bindFramebuffer(t.FRAMEBUFFER,this.M.framebuffer),t.viewport(...this.M.viewport),z(t,this.M.viewport),this.M=null}W(){const t=this.m;this.v&&t.deleteFramebuffer(this.v);for(const s of this.G)t.deleteTexture(s);this.G=[],this.Y=[]}get width(){return this.I}get height(){return this.p}get pixels(){return this._}get options(){return{...this.C}}get framebuffer(){return this.v}get texture(){return this.G[0]}get textures(){return[...this.G]}get attachmentCount(){return this.$}getAttachmentPixels(t){return this.Y[t]??null}}class k{constructor(t,s,r){a(this,"m");a(this,"J");a(this,"V",new Map);a(this,"K",new Map);a(this,"Z",0);a(this,"j");this.m=t,this.J=this.X(s,r),this.j=t.getParameter(t.MAX_TEXTURE_IMAGE_UNITS),this.N()}N(){const t=this.m.getProgramParameter(this.J,this.m.ACTIVE_UNIFORMS);for(let s=0;s<t;s++){const r=this.m.getActiveUniform(this.J,s);if(r){const i=this.m.getUniformLocation(this.J,r.name);i&&(this.V.set(r.name,i),this.K.set(r.name,r.type))}}}X(t,s){const r=this.q(this.m.VERTEX_SHADER,t),i=this.q(this.m.FRAGMENT_SHADER,s),B=this.m.createProgram();if(this.m.attachShader(B,r),this.m.attachShader(B,i),this.m.linkProgram(B),!this.m.getProgramParameter(B,this.m.LINK_STATUS)){const E=this.m.getProgramInfoLog(B);throw Error("Shader program link error: "+E)}return this.m.deleteShader(r),this.m.deleteShader(i),B}q(t,s){const r=this.m.createShader(t);if(this.m.shaderSource(r,s),this.m.compileShader(r),!this.m.getShaderParameter(r,this.m.COMPILE_STATUS)){const i=this.m.getShaderInfoLog(r);throw this.m.deleteShader(r),Error("Shader compilation error: "+i)}return r}AA(){this.m.useProgram(this.J),this.tA()}tA(){this.Z=0}eA(t){for(const[s,r]of Object.entries(t))this.BA(s,r)}sA(t){return this.V.has(t)}BA(t,s){if(this.m.getParameter(this.m.CURRENT_PROGRAM)!==this.J)return void console.warn(`Attempting to set uniform '${t}' on shader that is not currently bound`);const r=this.V.get(t);if(r)if(typeof s=="number")this.m.uniform1f(r,s);else if(typeof s=="boolean")this.m.uniform1i(r,s?1:0);else if(Array.isArray(s))switch(s.length){case 2:this.m.uniform2f(r,s[0],s[1]);break;case 3:this.m.uniform3f(r,s[0],s[1],s[2]);break;case 4:this.m.uniform4f(r,s[0],s[1],s[2],s[3]);break;default:console.warn(`Unsupported array length ${s.length} for uniform '${t}'`)}else if(s instanceof WebGLTexture){const i=this.iA();this.m.uniform1i(r,i),this.m.activeTexture(this.m.TEXTURE0+i),this.m.bindTexture(this.m.TEXTURE_2D,s)}else if(s instanceof $){const i=this.iA();this.m.uniform1i(r,i),this.m.activeTexture(this.m.TEXTURE0+i),this.m.bindTexture(this.m.TEXTURE_2D,s.texture)}else if(typeof s=="object"&&"texture"in s){const i=this.iA();this.m.uniform1i(r,i),this.m.activeTexture(this.m.TEXTURE0+i),this.m.bindTexture(this.m.TEXTURE_2D,s.texture)}else console.warn(`Unsupported uniform type for '${t}':`,typeof s)}iA(){return this.Z>=this.j&&console.warn(`Exceeded maximum texture units (${this.j}). Texture may not render correctly.`),this.Z++}get QA(){return this.J}W(){this.m.deleteProgram(this.J)}}class rA{constructor(){a(this,"rA",1);a(this,"EA",0);a(this,"nA",0);a(this,"oA",0);a(this,"gA",[0,0,0]);a(this,"aA",[1,1,1,1]);a(this,"hA",[0,0,0,1]);a(this,"cA",!1);a(this,"CA",!1);a(this,"DA",!1);a(this,"lA",[0,0]);a(this,"PA",[0,0,0,1]);a(this,"uA",[])}IA(){this.uA.push({lineWeight:this.rA,rotationX:this.EA,rotationY:this.nA,rotationZ:this.oA,charRotation:[...this.lA],flipHorizontally:this.cA,flipVertically:this.CA,invert:this.DA,character:[...this.gA],charColor:[...this.aA],cellColor:[...this.hA]})}wA(){const t=this.uA.pop();t?(this.rA=t.lineWeight,this.EA=t.rotationX,this.nA=t.rotationY,this.oA=t.rotationZ,this.lA=t.charRotation,this.cA=t.flipHorizontally,this.CA=t.flipVertically,this.DA=t.invert,this.gA=t.character,this.aA=t.charColor,this.hA=t.cellColor):console.warn("pop() called without matching push()")}fA(){this.uA=[],this.EA=0,this.nA=0,this.oA=0}dA(t){t.lineWeight=this.rA,t.rotationX=this.EA,t.rotationY=this.nA,t.rotationZ=this.oA,t.character[0]=this.gA[0],t.character[1]=this.gA[1],t.character[2]=this.gA[2],t.charColor[0]=this.aA[0],t.charColor[1]=this.aA[1],t.charColor[2]=this.aA[2],t.charColor[3]=this.aA[3],t.bgColor[0]=this.hA[0],t.bgColor[1]=this.hA[1],t.bgColor[2]=this.hA[2],t.bgColor[3]=this.hA[3],t.flipHorizontally=this.cA,t.flipVertically=this.CA,t.invert=this.DA,t.charRotation[0]=this.lA[0],t.charRotation[1]=this.lA[1]}get lineWeight(){return this.rA}get canvasBackgroundColor(){return this.PA}pA(t){this.rA=Math.abs(t)}_A(t){this.EA=t}mA(t){this.nA=t}vA(t){this.oA=t}xA(t){this.gA=t}yA(t,s,r,i=255){this.aA=[t/255,s/255,r/255,i/255]}bA(t,s,r,i=255){this.hA=[t/255,s/255,r/255,i/255]}GA(t){this.cA=t}$A(t){this.CA=t}MA(t){this.DA=t}YA(t){const s=255*t/360,r=Math.floor(s)/255,i=Math.round(s-Math.floor(s));this.lA=[r,i]}zA(t,s,r,i){this.PA=[t/255,s/255,r/255,i/255]}}var N=`#version 300 es
8
+ in vec2 a_position;in vec2 a_texCoord;in vec2 a_instancePosition;in vec2 a_instanceSize;in vec3 a_instanceCharacter;in vec4 a_instancePrimaryColor;in vec4 a_instanceSecondaryColor;in vec2 a_instanceRotation;in vec3 a_instanceTransform;in vec3 a_instanceGlobalRotation;in vec2 a_instanceRotationCenter;in vec2 a_instanceBezierCP1;in vec2 a_instanceBezierCP2;in vec2 a_instanceBezierStart;in vec2 a_instanceBezierEnd;in vec2 a_instanceArcAngles;uniform float u_aspectRatio;uniform vec2 u_viewportSize;out vec2 v_uv;out vec3 v_character;out vec4 v_primaryColor;out vec4 v_secondaryColor;out vec2 v_rotation;out vec3 v_transform;mat3 rotateX(float a){float s=sin(a),c=cos(a);return mat3(1,0,0,0,c,-s,0,s,c);}mat3 rotateY(float a){float s=sin(a),c=cos(a);return mat3(c,0,s,0,1,0,-s,0,c);}mat3 rotateZ(float a){float s=sin(a),c=cos(a);return mat3(c,-s,0,s,c,0,0,0,1);}vec2 evaluateBezier(float t,vec2 p0,vec2 p1,vec2 p2,vec2 p3){float u=1.-t,u2=u*u,t2=t*t;return u2*u*p0+3.*u2*t*p1+3.*u*t2*p2+t2*t*p3;}vec2 evaluateBezierDerivative(float t,vec2 p0,vec2 p1,vec2 p2,vec2 p3){float u=1.-t,u2=u*u,t2=t*t;return-3.*u2*p0+3.*u2*p1-6.*u*t*p1+6.*u*t*p2-3.*t2*p2+3.*t2*p3;}void main(){v_uv=a_texCoord;v_character=a_instanceCharacter;v_primaryColor=a_instancePrimaryColor;v_secondaryColor=a_instanceSecondaryColor;v_rotation=a_instanceRotation;v_transform=a_instanceTransform;vec2 worldPosition;bool isBezier=length(a_instanceBezierCP1)+length(a_instanceBezierCP2)+length(a_instanceBezierStart)+length(a_instanceBezierEnd)>0.;bool isArc=a_instanceArcAngles.x!=0.||a_instanceArcAngles.y!=0.;if(isBezier){float t=a_position.x;vec2 curvePoint=evaluateBezier(t,a_instanceBezierStart,a_instanceBezierCP1,a_instanceBezierCP2,a_instanceBezierEnd);vec2 tangent=evaluateBezierDerivative(t,a_instanceBezierStart,a_instanceBezierCP1,a_instanceBezierCP2,a_instanceBezierEnd);float tLen=length(tangent);tangent=tLen>0.?tangent/tLen:vec2(1,0);worldPosition=curvePoint+vec2(-tangent.y,tangent.x)*a_position.y*a_instanceSize.y;}else if(isArc){float s=a_instanceArcAngles.x,e=a_instanceArcAngles.y;s=mod(s,6.28318530718);if(s<0.)s+=6.28318530718;e=mod(e,6.28318530718);if(e<0.)e+=6.28318530718;float d=s-e;if(d<=0.)d+=6.28318530718;float angle=s-a_position.x*d;vec2 local=vec2(cos(angle),sin(angle))*a_position.y;worldPosition=local*a_instanceSize*.5+a_instanceSize*.5+a_instancePosition;}else{worldPosition=a_position*a_instanceSize+a_instancePosition;}vec2 ndc=(worldPosition/u_viewportSize)*2.-1.;ndc.y=-ndc.y;if(length(a_instanceGlobalRotation)>0.){vec3 pos3D=vec3(ndc-a_instanceRotationCenter,0);pos3D.x*=u_aspectRatio;if(a_instanceGlobalRotation.x!=0.)pos3D=rotateX(-a_instanceGlobalRotation.x)*pos3D;if(a_instanceGlobalRotation.y!=0.)pos3D=rotateY(-a_instanceGlobalRotation.y)*pos3D;if(a_instanceGlobalRotation.z!=0.)pos3D=rotateZ(-a_instanceGlobalRotation.z)*pos3D;pos3D.x/=u_aspectRatio;ndc=pos3D.xy+a_instanceRotationCenter;}gl_Position=vec4(ndc,0,1);}`,P=(n=>(n.RECTANGLE="rectangle",n.LINE="line",n.ELLIPSE="ellipse",n.ARC="arc",n.TRIANGLE="triangle",n.BEZIER_CURVE="bezier_curve",n.CUSTOM="custom",n))(P||{});class iA{constructor(t){a(this,"m");a(this,"RA",new Map);this.m=t}TA(t,s,r,i){const B=this.m;let E=this.RA.get(t);E||(E=new Map,this.RA.set(t,E));let o=E.get(s)||null;if(!o){o=B.createVertexArray(),E.set(s,o),B.bindVertexArray(o),B.bindBuffer(B.ARRAY_BUFFER,i);const Q=B.getAttribLocation(t,"a_position");Q!==-1&&(B.enableVertexAttribArray(Q),B.vertexAttribPointer(Q,r.attributes.position.size,B.FLOAT,!1,r.stride,r.attributes.position.offset),B.vertexAttribDivisor(Q,0));const g=B.getAttribLocation(t,"a_texCoord");g!==-1&&(B.enableVertexAttribArray(g),B.vertexAttribPointer(g,r.attributes.texCoord.size,B.FLOAT,!1,r.stride,r.attributes.texCoord.offset),B.vertexAttribDivisor(g,0))}B.bindVertexArray(o)}SA(){this.m.bindVertexArray(null)}W(){const t=this.m;for(const[,s]of this.RA)for(const[,r]of s)r&&t.deleteVertexArray(r);this.RA.clear()}}class BA{constructor(t){a(this,"FA");a(this,"m");a(this,"OA",null);a(this,"UA",null);a(this,"LA",null);this.m=t,this.FA=new iA(t)}kA(t,s,r){const{shader:i}=t,B=G(this.m)||this.m.getParameter(this.m.VIEWPORT),E={u_aspectRatio:B[2]/B[3],u_viewportSize:[B[2],B[3]]},o={};for(const[h,c]of Object.entries(E))i.sA(h)&&(o[h]=c);Object.keys(o).length>0&&i.eA(o);const Q=h=>{if(!h||!h.HA())return;const c=h.unitGeometry,D=h.unitBuffer;try{this.FA.TA(i.QA,h.type+"",c,D),h.batch.WA(i),h.batch.JA(c.primitiveType,c.vertexCount)}finally{h.batch.VA(i),this.FA.SA(),h.KA()}};let g=null,l=null;for(const h of s){if(h.type===P.CUSTOM){l&&(Q(l),g=null,l=null),this.ZA(t,h.params,h.state,r.get(P.RECTANGLE)||null);continue}g!==null&&h.type!==g&&(Q(l),g=null,l=null);let c=l;c&&h.type===g||(c=r.get(h.type)||null,l=c,g=h.type),c&&c.jA(h.params,h.state)}Q(l)}ZA(t,s,r,i){if(!i)return;const{x:B,y:E,width:o,height:Q,shader:g,uniforms:l}=s,h=this.m;g.AA(),i.KA();const c=this.XA(Math.max(1,Math.floor(o)),Math.max(1,Math.floor(Q)));c.k(),g.AA(),l&&Object.keys(l).length&&g.eA(l);{const d=G(h)||h.getParameter(h.VIEWPORT);g.sA("u_aspectRatio")&&g.BA("u_aspectRatio",d[2]/d[3]),g.sA("u_viewportSize")&&g.BA("u_viewportSize",[d[2],d[3]])}const D={...r,rotationX:0,rotationY:0,rotationZ:0};if(i.jA({x:0,y:0,width:c.width,height:c.height},D),i.HA()){const d=i.unitGeometry,F=i.unitBuffer;try{this.FA.TA(g.QA,i.type+"",d,F),i.batch.WA(g),i.batch.JA(d.primitiveType,d.vertexCount)}finally{i.batch.VA(g),this.FA.SA(),i.KA()}}c.H();const C=this.NA();C.AA(),C.eA({u_src0:c.textures[0],u_src1:c.textures[1],u_src2:c.textures[2],u_src3:c.textures[3],u_src4:c.textures[4],u_srcSize:[c.width,c.height]});const u=G(h)||h.getParameter(h.VIEWPORT);C.sA("u_aspectRatio")&&C.BA("u_aspectRatio",u[2]/u[3]),C.sA("u_viewportSize")&&C.BA("u_viewportSize",[u[2],u[3]]);const y=Math.floor(B),m=Math.floor(E),x=Math.max(1,Math.floor(o)),v=Math.max(1,Math.floor(Q));if(i.jA({x:y,y:m,width:x,height:v},r),i.HA()){const d=i.unitGeometry,F=i.unitBuffer;try{this.FA.TA(C.QA,i.type+"",d,F),i.batch.WA(C),i.batch.JA(d.primitiveType,d.vertexCount)}finally{i.batch.VA(C),this.FA.SA(),i.KA()}}t.shader.AA()}NA(){return this.OA||(this.OA=new k(this.m,N,`#version 300 es
9
+ precision highp float;in vec2 v_uv;uniform sampler2D u_src0;uniform sampler2D u_src1;uniform sampler2D u_src2;uniform sampler2D u_src3;uniform sampler2D u_src4;uniform vec2 u_srcSize;layout(location=0)out vec4 o_character;layout(location=1)out vec4 o_primaryColor;layout(location=2)out vec4 o_secondaryColor;layout(location=3)out vec4 o_rotation;layout(location=4)out vec4 o_transform;void main(){vec2 uvTex=v_uv*u_srcSize;vec2 uvQ=(floor(uvTex)+0.5f)/u_srcSize;o_character=texture(u_src0,uvQ);o_primaryColor=texture(u_src1,uvQ);o_secondaryColor=texture(u_src2,uvQ);o_rotation=texture(u_src3,uvQ);o_transform=texture(u_src4,uvQ);}`)),this.OA}XA(t,s){return this.UA&&this.LA&&this.LA.w===t&&this.LA.h===s||(this.UA&&this.UA.W(),this.UA=new $(this.m,t,s,5),this.LA={w:t,h:s}),this.UA}}class EA{constructor(){a(this,"qA",[]);a(this,"At",1);a(this,"tt",0)}et(t){if(this.tt>=this.qA.length){const r={id:this.At++,type:t,params:{},state:{lineWeight:1,rotationX:0,rotationY:0,rotationZ:0,character:[0,0,0],charColor:[1,1,1,1],bgColor:[0,0,0,1],flipHorizontally:!1,flipVertically:!1,invert:!1,charRotation:[0,0]}};this.qA.push(r)}const s=this.qA[this.tt];switch(s.id=this.At++,s.type=t,t){case P.RECTANGLE:case P.ELLIPSE:s.params&&"width"in s.params||(s.params={x:0,y:0,width:0,height:0});break;case P.CUSTOM:s.params&&"shader"in s.params||(s.params={x:0,y:0,width:0,height:0,shader:void 0,uniforms:{}});break;case P.ARC:s.params&&"start"in s.params||(s.params={x:0,y:0,width:0,height:0,start:0,stop:0});break;case P.LINE:s.params&&"x2"in s.params||(s.params={x1:0,y1:0,x2:0,y2:0,thickness:void 0});break;case P.TRIANGLE:s.params&&"x3"in s.params||(s.params={x1:0,y1:0,x2:0,y2:0,x3:0,y3:0});break;case P.BEZIER_CURVE:s.params&&"cp2y"in s.params||(s.params={x1:0,y1:0,cp1x:0,cp1y:0,cp2x:0,cp2y:0,x2:0,y2:0,thickness:void 0});break;default:s.params||(s.params={})}return this.tt++,s}Bt(t,s,r,i,B){const E=this.et(P.RECTANGLE);return E.params.x=t,E.params.y=s,E.params.width=r,E.params.height=i,B.dA(E.state),E.id}st(t,s,r,i,B,E,o){const Q=this.et(P.CUSTOM);return Q.params.x=t,Q.params.y=s,Q.params.width=r,Q.params.height=i,Q.params.shader=B,Q.params.uniforms=E,o.dA(Q.state),Q.id}it(t,s,r,i,B,E){const o=this.et(P.LINE);return o.params.x1=t,o.params.y1=s,o.params.x2=r,o.params.y2=i,o.params.thickness=B,E.dA(o.state),o.id}Qt(t,s,r,i,B){const E=this.et(P.ELLIPSE);return E.params.x=t,E.params.y=s,E.params.width=r,E.params.height=i,B.dA(E.state),E.id}rt(t,s,r,i,B,E,o){const Q=this.et(P.ARC);return Q.params.x=t,Q.params.y=s,Q.params.width=r,Q.params.height=i,Q.params.start=B,Q.params.stop=E,o.dA(Q.state),Q.id}Et(t,s,r,i,B,E,o){const Q=this.et(P.TRIANGLE);return Q.params.x1=t,Q.params.y1=s,Q.params.x2=r,Q.params.y2=i,Q.params.x3=B,Q.params.y3=E,o.dA(Q.state),Q.id}nt(t,s,r,i,B,E,o,Q,g,l){const h=this.et(P.BEZIER_CURVE);return h.params.x1=t,h.params.y1=s,h.params.cp1x=r,h.params.cp1y=i,h.params.cp2x=B,h.params.cp2y=E,h.params.x2=o,h.params.y2=Q,h.params.thickness=g,l.dA(h.state),h.id}get length(){return this.tt}get isEmpty(){return this.tt===0}ot(){this.tt=0}[Symbol.iterator](){let t=0;const s=this.tt,r=this.qA;return{next:()=>t<s?{value:r[t++],done:!1}:{value:void 0,done:!0}}}}const R=class R{static gt(t,s,r=0){var E,o,Q,g,l,h,c,D,C,u;const i=s||new Float32Array(R.FLOATS_PER_INSTANCE);let B=r;return i[B++]=t.position[0],i[B++]=t.position[1],i[B++]=t.size[0],i[B++]=t.size[1],i[B++]=t.character[0],i[B++]=t.character[1],i[B++]=t.character[2],i[B++]=t.primaryColor[0],i[B++]=t.primaryColor[1],i[B++]=t.primaryColor[2],i[B++]=t.primaryColor[3],i[B++]=t.secondaryColor[0],i[B++]=t.secondaryColor[1],i[B++]=t.secondaryColor[2],i[B++]=t.secondaryColor[3],i[B++]=t.rotation[0],i[B++]=t.rotation[1],i[B++]=t.transform[0],i[B++]=t.transform[1],i[B++]=t.transform[2],i[B++]=t.globalRotationX,i[B++]=t.globalRotationY,i[B++]=t.globalRotationZ,i[B++]=t.rotationCenter[0],i[B++]=t.rotationCenter[1],i[B++]=((E=t.arcAngles)==null?void 0:E[0])||0,i[B++]=((o=t.arcAngles)==null?void 0:o[1])||0,i[B++]=((Q=t.bezierControlPoint1)==null?void 0:Q[0])||0,i[B++]=((g=t.bezierControlPoint1)==null?void 0:g[1])||0,i[B++]=((l=t.bezierControlPoint2)==null?void 0:l[0])||0,i[B++]=((h=t.bezierControlPoint2)==null?void 0:h[1])||0,i[B++]=((c=t.bezierStartPoint)==null?void 0:c[0])||0,i[B++]=((D=t.bezierStartPoint)==null?void 0:D[1])||0,i[B++]=((C=t.bezierEndPoint)==null?void 0:C[0])||0,i[B++]=((u=t.bezierEndPoint)==null?void 0:u[1])||0,i}static ht(t){const s=t.length*R.FLOATS_PER_INSTANCE,r=new Float32Array(s);for(let i=0;i<t.length;i++){const B=i*R.FLOATS_PER_INSTANCE;R.gt(t[i],r,B)}return r}};a(R,"BYTES_PER_INSTANCE",140),a(R,"FLOATS_PER_INSTANCE",35);let M=R;const f=class f{};a(f,"STRIDE",M.BYTES_PER_INSTANCE),a(f,"ATTRIBUTES",{a_instancePosition:{location:-1,size:2,type:WebGL2RenderingContext.FLOAT,normalized:!1,stride:f.STRIDE,offset:0,divisor:1},a_instanceSize:{location:-1,size:2,type:WebGL2RenderingContext.FLOAT,normalized:!1,stride:f.STRIDE,offset:8,divisor:1},a_instanceCharacter:{location:-1,size:3,type:WebGL2RenderingContext.FLOAT,normalized:!1,stride:f.STRIDE,offset:16,divisor:1},a_instancePrimaryColor:{location:-1,size:4,type:WebGL2RenderingContext.FLOAT,normalized:!1,stride:f.STRIDE,offset:28,divisor:1},a_instanceSecondaryColor:{location:-1,size:4,type:WebGL2RenderingContext.FLOAT,normalized:!1,stride:f.STRIDE,offset:44,divisor:1},a_instanceRotation:{location:-1,size:2,type:WebGL2RenderingContext.FLOAT,normalized:!1,stride:f.STRIDE,offset:60,divisor:1},a_instanceTransform:{location:-1,size:3,type:WebGL2RenderingContext.FLOAT,normalized:!1,stride:f.STRIDE,offset:68,divisor:1},a_instanceGlobalRotation:{location:-1,size:3,type:WebGL2RenderingContext.FLOAT,normalized:!1,stride:f.STRIDE,offset:80,divisor:1},a_instanceRotationCenter:{location:-1,size:2,type:WebGL2RenderingContext.FLOAT,normalized:!1,stride:f.STRIDE,offset:92,divisor:1},a_instanceArcAngles:{location:-1,size:2,type:WebGL2RenderingContext.FLOAT,normalized:!1,stride:f.STRIDE,offset:100,divisor:1},a_instanceBezierCP1:{location:-1,size:2,type:WebGL2RenderingContext.FLOAT,normalized:!1,stride:f.STRIDE,offset:108,divisor:1},a_instanceBezierCP2:{location:-1,size:2,type:WebGL2RenderingContext.FLOAT,normalized:!1,stride:f.STRIDE,offset:116,divisor:1},a_instanceBezierStart:{location:-1,size:2,type:WebGL2RenderingContext.FLOAT,normalized:!1,stride:f.STRIDE,offset:124,divisor:1},a_instanceBezierEnd:{location:-1,size:2,type:WebGL2RenderingContext.FLOAT,normalized:!1,stride:f.STRIDE,offset:132,divisor:1}});let U=f;class oA{constructor(t,s=1e3,r=1.5){a(this,"m");a(this,"ct",[]);a(this,"Ct");a(this,"Dt");a(this,"lt",null);a(this,"Pt",!0);a(this,"ut",0);a(this,"It",new Map);a(this,"wt",null);this.m=t,this.Ct=s,this.Dt=r,this.ft()}jA(t){const s=this.ct.length;return this.ct.push(t),this.Pt=!0,s}get count(){return this.ct.length}get isEmpty(){return this.ct.length===0}clear(){this.ct.length=0,this.Pt=!0}dt(t){if(t<=this.Ct)return;const s=Math.ceil(t*this.Dt);this.Ct=s,this.ft()}ft(){const t=this.m;this.lt&&t.deleteBuffer(this.lt),this.lt=t.createBuffer();const s=this.Ct*M.BYTES_PER_INSTANCE;t.bindBuffer(t.ARRAY_BUFFER,this.lt),t.bufferData(t.ARRAY_BUFFER,s,t.DYNAMIC_DRAW),t.bindBuffer(t.ARRAY_BUFFER,null),this.Pt=!0,this.ut=0}_t(){if(!this.Pt||this.ct.length===0)return;const t=this.m,s=this.ct.length;this.dt(s),(!this.wt||this.wt.length<s*M.FLOATS_PER_INSTANCE)&&(this.wt=new Float32Array(s*M.FLOATS_PER_INSTANCE));const r=M.ht(this.ct);t.bindBuffer(t.ARRAY_BUFFER,this.lt),s<=this.ut?t.bufferSubData(t.ARRAY_BUFFER,0,r):t.bufferData(t.ARRAY_BUFFER,r,t.DYNAMIC_DRAW),t.bindBuffer(t.ARRAY_BUFFER,null),this.Pt=!1,this.ut=s}vt(t){let s=this.It.get(t);if(!s){s=new Map;const r=this.m;for(const i in U.ATTRIBUTES){const B=r.getAttribLocation(t,i);B!==-1&&s.set(i,B)}this.It.set(t,s)}return s}WA(t){if(!this.lt||this.ct.length===0)return;const s=this.m,r=t.QA;this._t();const i=this.vt(r);s.bindBuffer(s.ARRAY_BUFFER,this.lt);for(const[B,E]of i){const o=U.ATTRIBUTES[B];o&&(s.enableVertexAttribArray(E),s.vertexAttribPointer(E,o.size,o.type,o.normalized,o.stride,o.offset),s.vertexAttribDivisor(E,o.divisor))}}VA(t){const s=this.m,r=this.vt(t.QA);for(const[,i]of r)s.disableVertexAttribArray(i),s.vertexAttribDivisor(i,0)}JA(t,s){this.ct.length!==0&&this.m.drawArraysInstanced(t,0,s,this.ct.length)}W(){const t=this.m;this.lt&&(t.deleteBuffer(this.lt),this.lt=null),this.ct.length=0,this.It.clear(),this.wt=null}}class Y{constructor(t,s,r,i){a(this,"m");a(this,"xt");a(this,"yt");a(this,"bt");a(this,"Gt",null);this.m=t,this.xt=s,this.yt=r,this.bt=i;const B=this.m.createBuffer();if(!B)throw Error("Failed to create unit geometry buffer");this.m.bindBuffer(this.m.ARRAY_BUFFER,B),this.m.bufferData(this.m.ARRAY_BUFFER,this.bt.vertices,this.m.STATIC_DRAW),this.m.bindBuffer(this.m.ARRAY_BUFFER,null),this.Gt=B}get type(){return this.yt}get unitGeometry(){return this.bt}get unitBuffer(){return this.Gt}get batch(){return this.xt}KA(){this.xt.clear()}HA(){return!this.xt.isEmpty}W(){this.xt.W(),this.Gt&&(this.m.deleteBuffer(this.Gt),this.Gt=null)}$t(t,s,r,i,B){const E=this.Mt(t,s,r,i,B.rotationX||0,B.rotationY||0,B.rotationZ||0);return{position:[t,s],size:[r,i],character:B.character||[0,0,0],primaryColor:B.charColor||[1,1,1,1],secondaryColor:B.bgColor||[0,0,0,1],rotation:B.charRotation||[0,0],transform:[B.invert?1:0,B.flipHorizontally?1:0,B.flipVertically?1:0],globalRotationX:E.radiansX,globalRotationY:E.radiansY,globalRotationZ:E.radiansZ,rotationCenter:[E.centerX,E.centerY]}}Yt(t,s){const r=G(this.m)||[0,0,this.m.canvas.width,this.m.canvas.height];return{nx:t/r[2]*2-1,ny:1-s/r[3]*2}}zt(t,s,r){const i=this.Yt(s,r);t.rotationCenter=[i.nx,i.ny]}Mt(t,s,r,i,B,E,o){const Q=G(this.m)||[0,0,this.m.canvas.width,this.m.canvas.height],g=Q[2],l=Q[3];return{centerX:(t+r/2)/g*2-1,centerY:1-(s+i/2)/l*2,radiansX:-B*Math.PI/180,radiansY:-E*Math.PI/180,radiansZ:-o*Math.PI/180,aspectRatio:g/l}}}const nA={vertices:new Float32Array([0,0,0,0,1,0,1,0,0,1,0,1,0,1,0,1,1,0,1,0,1,1,1,1]),vertexCount:6,primitiveType:WebGL2RenderingContext.TRIANGLES,stride:16,attributes:{position:{size:2,offset:0},texCoord:{size:2,offset:8}}};class QA extends Y{constructor(t,s){super(t,s,P.RECTANGLE,nA)}jA(t,s){const r=this.$t(t.x,t.y,t.width,t.height,s);return this.xt.jA(r)}}const aA={vertices:new Float32Array([0,-.5,0,0,1,-.5,1,0,0,.5,0,1,0,.5,0,1,1,-.5,1,0,1,.5,1,1]),vertexCount:6,primitiveType:WebGL2RenderingContext.TRIANGLES,stride:16,attributes:{position:{size:2,offset:0},texCoord:{size:2,offset:8}}};class gA extends Y{constructor(t,s){super(t,s,P.LINE,aA)}jA(t,s){const r=t.x2-t.x1,i=t.y2-t.y1,B=Math.hypot(r,i),E=Math.atan2(i,r),o=t.thickness||s.lineWeight||1,Q=t.x1+r/2,g=t.y1+i/2,l=Q-B/2,h=g,c={character:s.character,charColor:s.charColor,bgColor:s.bgColor,charRotation:s.charRotation,flipHorizontally:s.flipHorizontally,flipVertically:s.flipVertically,invert:s.invert,rotationX:s.rotationX||0,rotationY:s.rotationY||0,rotationZ:(s.rotationZ||0)+180*E/Math.PI,lineWeight:o},D=this.$t(l,h,B,o,c);return this.zt(D,Q,g),this.xt.jA(D)}}const hA={vertices:function(n=32){const t=[],s=2*Math.PI/n;for(let r=0;r<n;r++){const i=r*s,B=(r+1)%n*s,E=Math.cos(i),o=Math.sin(i),Q=.5*(E+1),g=.5*(o+1),l=Math.cos(B),h=Math.sin(B),c=.5*(l+1),D=.5*(h+1);t.push(0,0,.5,.5,E,o,Q,g,l,h,c,D)}return new Float32Array(t)}(32),vertexCount:96,primitiveType:WebGL2RenderingContext.TRIANGLES,stride:16,attributes:{position:{size:2,offset:0},texCoord:{size:2,offset:8}}};class cA extends Y{constructor(t,s){super(t,s,P.ELLIPSE,hA)}jA(t,s){const r=this.$t(t.x,t.y,t.width,t.height,s);return this.zt(r,t.x,t.y),this.xt.jA(r)}}let lA={vertices:function(n){const t=[];for(let s=0;s<n;s++){const r=s/n,i=(s+1)/n;t.push(r,0,r,0,r,1,r,1,i,1,i,1)}return new Float32Array(t)}(32),vertexCount:96,primitiveType:WebGL2RenderingContext.TRIANGLES,stride:16,attributes:{position:{size:2,offset:0},texCoord:{size:2,offset:8}}};class CA extends Y{constructor(t,s){super(t,s,P.ARC,lA)}jA(t,s){const r=t.x-t.width/2,i=t.y-t.height/2,B=t.start*Math.PI/180,E=t.stop*Math.PI/180,o=this.$t(r,i,t.width,t.height,s);return this.zt(o,t.x,t.y),o.arcAngles=[B,E],this.xt.jA(o)}}const DA={vertices:new Float32Array([0,0,0,0,1,0,1,0,.5,1,.5,1]),vertexCount:3,primitiveType:WebGL2RenderingContext.TRIANGLES,stride:16,attributes:{position:{size:2,offset:0},texCoord:{size:2,offset:8}}};class uA extends Y{constructor(t,s){super(t,s,P.TRIANGLE,DA)}jA(t,s){const r=Math.min(t.x1,t.x2,t.x3),i=Math.max(t.x1,t.x2,t.x3),B=Math.min(t.y1,t.y2,t.y3),E=i-r,o=Math.max(t.y1,t.y2,t.y3)-B,Q=this.$t(r,B,E,o,s),g=r+.5*E,l=B+o*(1/3);return this.zt(Q,g,l),this.xt.jA(Q)}}function V(n,t,s,r,i){const B=1-n,E=B*B,o=n*n;return E*B*t+3*E*n*s+3*B*o*r+o*n*i}const PA={vertices:function(n=16){const t=[];for(let s=0;s<n;s++){const r=s/n,i=(s+1)/n;t.push(r,-.5,r,0),t.push(i,-.5,i,0),t.push(r,.5,r,1),t.push(r,.5,r,1),t.push(i,-.5,i,0),t.push(i,.5,i,1)}return new Float32Array(t)}(16),vertexCount:96,primitiveType:WebGL2RenderingContext.TRIANGLES,stride:16,attributes:{position:{size:2,offset:0},texCoord:{size:2,offset:8}}};class IA extends Y{constructor(t,s){super(t,s,P.BEZIER_CURVE,PA)}jA(t,s){const r=s.lineWeight||1,i=V(.5,t.x1,t.cp1x,t.cp2x,t.x2),B=V(.5,t.y1,t.cp1y,t.cp2y,t.y2),E={character:s.character,charColor:s.charColor,bgColor:s.bgColor,charRotation:s.charRotation,flipHorizontally:s.flipHorizontally,flipVertically:s.flipVertically,invert:s.invert,rotationX:s.rotationX||0,rotationY:s.rotationY||0,rotationZ:s.rotationZ||0,lineWeight:r},o=this.$t(0,0,1,r,E);return this.zt(o,i,B),o.bezierStartPoint=[t.x1,t.y1],o.bezierControlPoint1=[t.cp1x,t.cp1y],o.bezierControlPoint2=[t.cp2x,t.cp2y],o.bezierEndPoint=[t.x2,t.y2],this.xt.jA(o)}}class fA{constructor(t){a(this,"m");a(this,"Rt",null);a(this,"Tt",null);a(this,"St",{});a(this,"Ft",null);a(this,"Ot",new Map);a(this,"Ut");a(this,"Lt");a(this,"kt");this.m=t,this.kt=new rA,this.Ut=new BA(t),this.Lt=new EA,this.Ft=t.createBuffer(),z(this.m,[0,0,this.m.canvas.width,this.m.canvas.height])}Ht(t){let s=this.Ot.get(t);if(s)return s;const r=new oA(this.m);return s=(0,{[P.RECTANGLE]:()=>new QA(this.m,r),[P.LINE]:()=>new gA(this.m,r),[P.ELLIPSE]:()=>new cA(this.m,r),[P.ARC]:()=>new CA(this.m,r),[P.TRIANGLE]:()=>new uA(this.m,r),[P.BEZIER_CURVE]:()=>new IA(this.m,r)}[t])(),this.Ot.set(t,s),s}Wt(t){this.Rt!==t&&(this.Rt=t,t.AA())}Jt(t,s){return new k(this.m,t,s)}Vt(t){this.Tt=t,t&&(this.St={})}Kt(t,s){this.St[t]=s}Zt(t){Object.assign(this.St,t)}jt(t){return new k(this.m,N,t)}Xt(t,s,r,i){var u;const B=this.m,E=B.canvas.width,o=B.canvas.height,Q=t/E*2-1,g=(t+r)/E*2-1,l=1-s/o*2,h=1-(s+i)/o*2,c=new Float32Array([Q,h,g,h,Q,l,g,h,g,l,Q,l]);B.bindBuffer(B.ARRAY_BUFFER,this.Ft),B.bufferData(B.ARRAY_BUFFER,c,B.DYNAMIC_DRAW);const D=((u=this.Rt)==null?void 0:u.QA)||B.getParameter(B.CURRENT_PROGRAM),C=D?B.getAttribLocation(D,"a_position"):-1;C!==-1&&(B.enableVertexAttribArray(C),B.vertexAttribPointer(C,2,B.FLOAT,!1,8,0)),B.drawArrays(B.TRIANGLES,0,6),C!==-1&&B.disableVertexAttribArray(C)}Nt(t,s,r,i){this.Tt?(this.Lt.st(t,s,r,i,this.Tt,{...this.St},this.kt),this.Tt=null,this.St={}):this.Lt.Bt(t,s,r,i,this.kt)}qt(t,s,r,i){this.Lt.it(t,s,r,i,this.kt.lineWeight,this.kt)}Ae(t,s,r,i){this.Lt.Qt(t,s,r,i,this.kt)}te(t,s,r,i,B,E){this.Lt.Et(t,s,r,i,B,E,this.kt)}ee(t,s,r,i,B,E,o,Q){const g=this.kt.lineWeight;this.Lt.nt(t,s,r,i,B,E,o,Q,g,this.kt)}Be(t,s,r=1,i={}){return new $(this.m,t,s,r,i)}se(t,s,r,i,B,E){this.Lt.rt(t,s,r,i,B,E,this.kt)}ie(t,s=t,r=t,i=255){this.state.zA(t,s,r,i),this.ot(t/255,s/255,r/255,i/255)}ot(t=0,s=0,r=0,i=0){this.m.clearColor(t,s,r,i),this.m.clear(this.m.COLOR_BUFFER_BIT)}Qe(){this.m.viewport(0,0,this.m.canvas.width,this.m.canvas.height),z(this.m,[0,0,this.m.canvas.width,this.m.canvas.height])}get context(){return this.m}get state(){return this.kt}re(t){const s=t,r=G(this.m)??this.m.getParameter(this.m.VIEWPORT),i={shader:s,gl:this.m,viewport:r};this.Wt(s);const B=new Set;for(const E of this.Lt)E.type===P.CUSTOM?B.add(P.RECTANGLE):B.add(E.type);for(const E of B)E!==P.CUSTOM&&this.Ht(E);this.Ut.kA(i,this.Lt,this.Ot),this.Lt.ot()}W(){this.m.deleteBuffer(this.Ft),this.Lt.ot();for(const t of this.Ot.values())t.W()}}const p={readShort:(n,t)=>(p.t.uint16[0]=n[t]<<8|n[t+1],p.t.int16[0]),readUshort:(n,t)=>n[t]<<8|n[t+1],readUshorts(n,t,s){const r=[];for(let i=0;i<s;i++)r.push(p.readUshort(n,t+2*i));return r},readUint(n,t){const s=p.t.uint8;return s[3]=n[t],s[2]=n[t+1],s[1]=n[t+2],s[0]=n[t+3],p.t.uint32[0]},readASCII(n,t,s){let r="";for(let i=0;i<s;i++)r+=String.fromCharCode(n[t+i]);return r},t:(()=>{const n=new ArrayBuffer(8);return{uint8:new Uint8Array(n),int16:new Int16Array(n),uint16:new Uint16Array(n),uint32:new Uint32Array(n)}})()},dA={parseTab(n,t,s){const r={tables:[],ids:{},off:t};n=new Uint8Array(n.buffer,t,s),t=0;const i=p,B=i.readUshort,E=B(n,t+=2);t+=2;const o=[];for(let Q=0;Q<E;Q++){const g=B(n,t),l=B(n,t+=2);t+=2;const h=i.readUint(n,t);t+=4;const c=`p${g}e${l}`;let D=o.indexOf(h);if(D===-1){let C;D=r.tables.length,o.push(h);const u=B(n,h);C=u===4?this.parse4(n,h):u===12?this.parse12(n,h):{format:u},r.tables.push(C)}r.ids[c]!=null&&console.warn("Multiple tables for one platform+encoding: "+c),r.ids[c]=D}return r},parse4(n,t){const s=p,r=s.readUshort,i=s.readUshorts,B=t,E=r(n,t+=2);t+=2;const o=r(n,t+=2)>>>1,Q={format:4,searchRange:r(n,t+=2),entrySelector:0,rangeShift:0,endCount:[],startCount:[],idDelta:[],idRangeOffset:[],glyphIdArray:[]};t+=2,Q.entrySelector=r(n,t),t+=2,Q.rangeShift=r(n,t),t+=2,Q.endCount=i(n,t,o),t+=2*o,t+=2,Q.startCount=i(n,t,o),t+=2*o;for(let g=0;g<o;g++)Q.idDelta.push(s.readShort(n,t)),t+=2;return Q.idRangeOffset=i(n,t,o),t+=2*o,Q.glyphIdArray=i(n,t,B+E-t>>1),Q},parse12(n,t){const s=p.readUint;s(n,t+=4),s(n,t+=4);const r=s(n,t+=4);t+=4;const i=new Uint32Array(3*r);for(let B=0;B<3*r;B+=3)i[B]=s(n,t+(B<<2)),i[B+1]=s(n,t+(B<<2)+4),i[B+2]=s(n,t+(B<<2)+8);return{format:12,groups:i}}},wA={parseTab(n,t,s){const r=p;t+=18;const i=r.readUshort(n,t);t+=2,t+=16;const B=r.readShort(n,t);t+=2;const E=r.readShort(n,t);t+=2;const o=r.readShort(n,t);t+=2;const Q=r.readShort(n,t);return t+=2,t+=6,{unitsPerEm:i,xMin:B,yMin:E,xMax:o,yMax:Q,indexToLocFormat:r.readShort(n,t)}}},mA={parseTab(n,t,s){const r=p;t+=4;const i=["ascender","descender","lineGap","advanceWidthMax","minLeftSideBearing","minRightSideBearing","xMaxExtent","caretSlopeRise","caretSlopeRun","caretOffset","res0","res1","res2","res3","metricDataFormat","numberOfHMetrics"],B={};for(let E=0;E<i.length;E++){const o=i[E],Q=o==="advanceWidthMax"||o==="numberOfHMetrics"?r.readUshort:r.readShort;B[o]=Q(n,t+2*E)}return B}},pA={parseTab(n,t,s,r){const i=p,B=[],E=[],o=r.maxp.numGlyphs,Q=r.hhea.numberOfHMetrics;let g=0,l=0,h=0;for(;h<Q;)g=i.readUshort(n,t+(h<<2)),l=i.readShort(n,t+(h<<2)+2),B.push(g),E.push(l),h++;for(;h<o;)B.push(g),E.push(l),h++;return{aWidth:B,lsBearing:E}}},j={cmap:dA,head:wA,hhea:mA,maxp:{parseTab(n,t,s){const r=p;return r.readUint(n,t),t+=4,{numGlyphs:r.readUshort(n,t)}}},hmtx:pA,loca:{parseTab(n,t,s,r){const i=p,B=[],E=r.head.indexToLocFormat,o=r.maxp.numGlyphs+1;if(E===0)for(let Q=0;Q<o;Q++)B.push(i.readUshort(n,t+(Q<<1))<<1);else if(E===1)for(let Q=0;Q<o;Q++)B.push(i.readUint(n,t+(Q<<2)));return B}},glyf:{parseTab(n,t,s,r){const i=[],B=r.maxp.numGlyphs;for(let E=0;E<B;E++)i.push(null);return i},Ee(n,t){const s=p,r=n.ne,i=n.loca;if(i[t]===i[t+1])return null;const B=b.findTable(r,"glyf",n.oe);if(!B)return null;let E=B[0]+i[t];const o={};if(o.noc=s.readShort(r,E),E+=2,o.xMin=s.readShort(r,E),E+=2,o.yMin=s.readShort(r,E),E+=2,o.xMax=s.readShort(r,E),E+=2,o.yMax=s.readShort(r,E),E+=2,o.xMin>=o.xMax||o.yMin>=o.yMax)return null;if(o.noc>0){o.endPts=[];for(let c=0;c<o.noc;c++)o.endPts.push(s.readUshort(r,E)),E+=2;const Q=s.readUshort(r,E);if(E+=2,r.length-E<Q)return null;E+=Q;const g=o.endPts[o.noc-1]+1;o.flags=[];for(let c=0;c<g;c++){const D=r[E];if(E++,o.flags.push(D),8&D){const C=r[E];E++;for(let u=0;u<C;u++)o.flags.push(D),c++}}o.xs=[];for(let c=0;c<g;c++){const D=o.flags[c],C=!!(16&D);2&D?(o.xs.push(C?r[E]:-r[E]),E++):C?o.xs.push(0):(o.xs.push(s.readShort(r,E)),E+=2)}o.ys=[];for(let c=0;c<g;c++){const D=o.flags[c],C=!!(32&D);4&D?(o.ys.push(C?r[E]:-r[E]),E++):C?o.ys.push(0):(o.ys.push(s.readShort(r,E)),E+=2)}let l=0,h=0;for(let c=0;c<g;c++)l+=o.xs[c],h+=o.ys[c],o.xs[c]=l,o.ys[c]=h}else o.parts=[],o.endPts=[],o.flags=[],o.xs=[],o.ys=[];return o}}},b={parse:n=>[((t,s,r,i)=>{const B=j,E={ne:t,ge:s,oe:r};for(const o in B){const Q=o,g=b.findTable(t,Q,r);if(g){const[l,h]=g;let c=i[l];c==null&&(c=B[Q].parseTab(t,l,h,E),i[l]=c),E[Q]=c}}return E})(new Uint8Array(n),0,0,{})],findTable(n,t,s){const r=p,i=r.readUshort(n,s+4);let B=s+12;for(let E=0;E<i;E++){const o=r.readASCII(n,B,4);r.readUint(n,B+4);const Q=r.readUint(n,B+8),g=r.readUint(n,B+12);if(o===t)return[Q,g];B+=16}return null},T:j,B:p};class L{constructor(){a(this,"ae",new Map);a(this,"he",new Map)}ce(t,s){const r=`${this.Ce(t)}_${s}`;if(this.ae.has(r))return this.ae.get(r);const i=t.cmap;if(!i||!i.tables)return this.ae.set(r,0),0;let B=0;for(const E of i.tables)if(E.format===4?B=this.De(s,E):E.format===12&&(B=this.le(s,E)),B>0)break;return this.ae.set(r,B),B}Pe(t,s){const r=s.codePointAt(0);return r===void 0?0:this.ce(t,r)}ue(t,s){const r=t.hmtx;return r&&r.aWidth&&r.aWidth.length!==0?s<r.aWidth.length?r.aWidth[s]:r.aWidth[r.aWidth.length-1]:0}Ie(t,s){const r=s/t.head.unitsPerEm,i=t.hhea.ascender*r,B=t.hhea.descender*r,E=t.hhea.lineGap*r;return{ascender:i,descender:B,lineGap:E,lineHeight:i-B+E,unitsPerEm:t.head.unitsPerEm,scale:r}}we(){this.ae.clear(),this.he.clear()}Ce(t){return`${t.oe}_${t.ne.length}`}De(t,s){const r=s.endCount.length;let i=-1;for(let B=0;B<r;B++)if(t<=s.endCount[B]){i=B;break}if(i===-1||t<s.startCount[i])return 0;if(s.idRangeOffset[i]===0)return t+s.idDelta[i]&65535;{const B=s.idRangeOffset[i]/2+(t-s.startCount[i])-(r-i);if(B>=0&&B<s.glyphIdArray.length){const E=s.glyphIdArray[B];return E===0?0:E+s.idDelta[i]&65535}}return 0}le(t,s){const r=s.groups.length/3;for(let i=0;i<r;i++){const B=s.groups[3*i],E=s.groups[3*i+1],o=s.groups[3*i+2];if(t>=B&&t<=E)return o+(t-B)}return 0}}class yA{constructor(t){a(this,"fe");this.fe=t}de(t){var r;const s=[];return(r=t.cmap)!=null&&r.tables?(t.cmap.tables.forEach(i=>{if(i.format===4){const B=this.pe(i);s.push(...B)}else if(i.format===12){const B=this._e(i);s.push(...B)}}),[...new Set(s)]):[]}me(t,s){return this.fe.Pe(t,s)>0}ve(t,s){for(const r of s)if(!this.me(t,r))return!1;return!0}xe(t,s){return s.filter(r=>this.me(t,r))}ye(t){return t.filter(s=>this.be(s))}pe(t){const s=[];if(!(t.startCount&&t.endCount&&t.idRangeOffset&&t.idDelta))return s;for(let r=0;r<t.startCount.length;r++){const i=t.startCount[r],B=t.endCount[r];if(i!==65535||B!==65535){for(let E=i;E<=B;E++)if(this.Ge(t,E,r)>0)try{const o=String.fromCodePoint(E);s.push(o)}catch{}}}return s}_e(t){const s=[];if(!t.groups)return s;for(let r=0;r<t.groups.length;r+=3){const i=t.groups[r],B=t.groups[r+1],E=t.groups[r+2];for(let o=i;o<=B;o++)if(E+(o-i)>0)try{const Q=String.fromCodePoint(o);s.push(Q)}catch{}}return s}Ge(t,s,r){if(t.idRangeOffset[r]===0)return s+t.idDelta[r]&65535;{const i=t.idRangeOffset[r]/2+(s-t.startCount[r])-(t.startCount.length-r);if(i>=0&&t.glyphIdArray&&i<t.glyphIdArray.length){const B=t.glyphIdArray[i];if(B!==0)return B+t.idDelta[r]&65535}}return 0}be(t){const s=t.codePointAt(0)||0;return!(s>=0&&s<=31&&s!==9&&s!==10&&s!==13||s>=127&&s<=159)}}class xA{constructor(){a(this,"$e");const t=new L;this.$e=new yA(t)}extractCharacters(t){return this.$e.de(t)}filterProblematicCharacters(t){return this.$e.ye(t)}characterExists(t,s){return this.$e.me(t,s)}allCharactersExist(t,s){return this.$e.ve(t,s)}}class vA{constructor(t){a(this,"Me");a(this,"Ye");a(this,"ze");a(this,"Re");this.ze=t,this.Re=new L,this.Me=document.createElement("canvas"),this.Ye=this.Me.getContext("2d",{willReadFrequently:!0,alpha:!1})}createTextureAtlas(t,s,r,i){const B=t.length,E=Math.ceil(Math.sqrt(B)),o=Math.ceil(B/E),Q=s.width*E,g=s.height*o,l=typeof i=="object"?i:null;this.Te(Q,g),this.Se(t,s,E,r,l);const h=this.ze.Be(Q,g,1,{filter:"nearest"});return h.F(this.Me),{framebuffer:h,columns:E,rows:o}}Te(t,s){this.Me.width=t,this.Me.height=s,this.Me.style.width=t+"px",this.Me.style.height=t+"px",this.Ye.imageSmoothingEnabled=!1,this.Me.style.imageRendering="pixelated",this.Ye.fillStyle="black",this.Ye.fillRect(0,0,t,s),this.Ye.textBaseline="top",this.Ye.textAlign="left",this.Ye.fillStyle="white"}Se(t,s,r,i,B){const E=i/B.head.unitsPerEm;for(let o=0;o<t.length;o++){const Q=o%r,g=Math.floor(o/r),l=t[o].character,h=this.Fe(B,l);if(!h)continue;const c=l.codePointAt(0)||0,D=this.Re.ce(B,c),C=this.Oe(B,D)*E,u=Q*s.width,y=g*s.height,m=u+.5*s.width,x=y+.5*s.height,v=Math.round(m-.5*s.width),d=Math.round(x-.5*i),F=v+.5*(s.width-C),qA=d+B.hhea.ascender*E;this.Ue(h,F,qA,E)}}Fe(t,s){const r=s.codePointAt(0)||0,i=this.Re.ce(t,r);if(i===0)return null;if(t.glyf&&t.glyf[i]!==null)return t.glyf[i];if(b&&b.T&&b.T.glyf){const B=b.T.glyf.Ee(t,i);return t.glyf&&B&&(t.glyf[i]=B),B}return null}Oe(t,s){const r=t.hmtx;return r&&r.aWidth?s<r.aWidth.length?r.aWidth[s]:r.aWidth[r.aWidth.length-1]:0}Ue(t,s,r,i){if(!t||!t.xs||t.noc===0)return;const{xs:B,ys:E,endPts:o,flags:Q}=t;if(!(B&&E&&o&&Q))return;this.Ye.beginPath();let g=0;for(let l=0;l<o.length;l++){const h=o[l];if(!(h<g)){if(h>=g){const c=s+B[g]*i,D=r-E[g]*i;this.Ye.moveTo(c,D);let C=g+1;for(;C<=h;)if(1&Q[C]){const u=s+B[C]*i,y=r-E[C]*i;this.Ye.lineTo(u,y),C++}else{const u=s+B[C]*i,y=r-E[C]*i;let m=C+1>h?g:C+1;if(1&Q[m]){const x=s+B[m]*i,v=r-E[m]*i;this.Ye.quadraticCurveTo(u,y,x,v),C=m+1}else{const x=(u+(s+B[m]*i))/2,v=(y+(r-E[m]*i))/2;this.Ye.quadraticCurveTo(u,y,x,v),C=m}}this.Ye.closePath()}g=h+1}}this.Ye.fill()}}class bA{constructor(){a(this,"fe");this.fe=new L}calculateMaxGlyphDimensions(t,s,r){let i=0;const B=this.fe.Ie(r,s),E=B.lineHeight;for(const o of t){const Q=this.fe.Pe(r,o);if(Q===0)continue;const g=this.fe.ue(r,Q)*B.scale;i=Math.max(i,g)}return{width:Math.ceil(i),height:Math.ceil(E)}}getCharacterAdvanceWidth(t,s,r){const i=this.fe.Ie(r,s),B=this.fe.Pe(r,t);return this.fe.ue(r,B)*i.scale}getFontMetrics(t,s){return this.fe.Ie(s,t)}we(){this.fe.we()}}class RA{constructor(){a(this,"Re");this.Re=new L}createCharacterObjects(t,s){return t.map((r,i)=>{const B=r.codePointAt(0)||0,E=this.Le(i);let o=0;if(s.hmtx&&s.hmtx.aWidth){const Q=this.Re.ce(s,B);Q>0&&s.hmtx.aWidth[Q]!==void 0&&(o=s.hmtx.aWidth[Q])}return{character:r,unicode:B,color:E,advanceWidth:o}})}Le(t){return[t%256/255,Math.floor(t/256)%256/255,Math.floor(t/65536)%256/255]}ke(t,s){if(!S.P(typeof t=="string","Character must be a string.",{method:"getCharacterColor",providedValue:t}))return[0,0,0];const r=s.find(i=>i.character===t);return r?r.color:[0,0,0]}He(t,s){return S.P(typeof t=="string"&&t.length>0,"Characters must be a string with at least one character.",{method:"getCharacterColors",providedValue:t})?Array.from(t).map(r=>this.ke(r,s)||[0,0,0]):[[0,0,0]]}}class Z{constructor(t,s=16){a(this,"We");a(this,"Je",[]);a(this,"Ve");a(this,"Ke",16);a(this,"Ze",0);a(this,"je",0);a(this,"Xe",{width:0,height:0});a(this,"Ne");a(this,"qe");a(this,"AB");a(this,"tB");a(this,"eB");this.Ke=s,this.qe=new xA,this.AB=new vA(t),this.tB=new bA,this.eB=new RA}async BB(t){let s;if(t){const r=await fetch(t);if(!r.ok)throw new I(`Failed to load font file: ${r.status} ${r.statusText}`);s=await r.arrayBuffer()}else s=await(await fetch(`data:font/truetype;charset=utf-8;base64,AAEAAAAKAIAAAwAgT1MvMs+QEyQAAAEoAAAAYGNtYXAg7yVJAAAFjAAACSBnbHlmuHLTdAAAErQAAGi0aGVhZFvXdUwAAACsAAAANmhoZWELAQUCAAAA5AAAACRobXR4BACDgAAAAYgAAAQEbG9jYQAy54AAAA6sAAAECG1heHABIgCCAAABCAAAACBuYW1lVs/OSgAAe2gAAAOicG9zdABpADQAAH8MAAAAIAABAAAAAQAAzOWHqV8PPPUAAAQAAAAAAHxiGCcAAAAAfGIYJwAAAAAEAAQAAAAACAACAAEAAAAAAAEAAAQAAAAAAAQAAAAAAAcAAAEAAAAAAAAAAAAAAAAAAAEBAAEAAAEBAIAAIAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgQAAZAABQAEAgACAAAAAAACAAIAAAACAAAzAMwAAAAABAAAAAAAAACAAACLAABw4wAAAAAAAAAAWUFMLgBAACAmawQAAAAAAAQAAAAAAAFRAAAAAAMABAAAAAAgAAAEAAAABAAAAAQAAAAEAAGABAABAAQAAIAEAACABAAAgAQAAIAEAAGABAABAAQAAQAEAACABAABAAQAAIAEAACABAABAAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAABAAQAAIAEAAEABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAABAAQAAIAEAAEABAAAgAQAAIAEAAEABAAAgAQAAIAEAACABAAAgAQAAIAEAAEABAAAgAQAAIAEAAGABAAAgAQAAIAEAAGABAAAgAQAAIAEAACABAAAgAQAAIAEAAEABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAABgAQAAQAEAACABAAAAAQAAgAEAACABAAAgAQAAIAEAACABAACAAQAAAAEAAIABAABgAQAAgAEAACABAAAgAQAAAAEAACABAAAAAQAAAAEAAAABAAAAAQAAAAEAAIABAADAAQAAAAEAAAABAAAgAQAAYAEAAAABAAAAAQAAIAEAAAABAAAgAQAAIAEAACABAAAAAQAAIAEAAAABAAAAAQAAIAEAAGABAAAAAQAAAAEAAAABAAAAAQAAIAEAACABAAAAAQAAIAEAACABAAAAAQAAIAEAACABAAAgAQAAAAEAACABAAAAAQAAAAEAAEABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAACAAQAAIAEAAAABAAAAAQAAAAEAACABAABAAQAAQAEAAEABAABAAQAAIAEAACABAAAAAQAAAAEAAAABAABAAQAAAAEAACABAAAAAQAAAAEAAIABAAAgAQAAAAEAAAABAAAAAQAAAAEAAAABAABgAQAAAAEAAAABAABgAQAAAAEAAGABAABgAQAAYAEAAAABAAAAAQAAAAEAAAABAABgAQAAYAEAAAABAAAAAQAAAAEAAAABAABgAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAABgAQAAAAEAAGABAABgAQAAAAEAAAABAABgAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAYAEAAAABAAAAAQAAQAEAACABAAAAAQAAAAEAAAABAAAgAQAAIAEAACABAAAgAQAAIAEAAAABAABAAQAAIAEAACABAAAgAQAAIAEAAEABAAAgAQAAIAEAACABAAAgAQAAIAEAAEABAAAgAAAAAIAAAADAAAAFAADAAEAAASaAAQEhgAAAJ4AgAAGAB4AfgCjAKUApwCsALIAtwC9AL8AxwDJANEA1gDcAOIA7wD0APcA/AD/AZIDkwOYA6MDpgOpA7EDtQPAA8QDxiAiIDwgfyCnIZUhqCIaIh8iKSJIImEiZSMCIxAjISUAJQIlDCUQJRQlGCUcJSQlLCU0JTwlbCWAJYQliCWMJZMloSWsJbIluiW8JcQlyyXZJjwmQCZCJmAmYyZmJmv//wAAACAAoQClAKcAqgCwALUAugC/AMQAyQDRANYA3ADfAOQA8QD2APkA/wGSA5MDmAOjA6YDqQOxA7QDwAPDA8YgIiA8IH8gpyGQIagiGSIeIikiSCJhImQjAiMQIyAlACUCJQwlECUUJRglHCUkJSwlNCU8JVAlgCWEJYgljCWQJaAlrCWyJbolvCXEJcsl2CY6JkAmQiZgJmMmZSZq////4v/A/7//vv+8/7n/t/+1/7T/sP+v/6j/pP+f/53/nP+b/5r/mf+X/wX9Bf0B/Pf89fzz/Oz86vzg/N783eCC4GngJ+AA3xjfBt6W3pPeit5s3lTeUt223andmtu827vbstuv26zbqdum25/bmNuR24rbd9tk22HbXttb21jbTNtC2z3bNts12y7bKNsc2rzaudq42pvamdqY2pUAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEhgAAAJ4AgAAGAB4AfgCjAKUApwCsALIAtwC9AL8AxwDJANEA1gDcAOIA7wD0APcA/AD/AZIDkwOYA6MDpgOpA7EDtQPAA8QDxiAiIDwgfyCnIZUhqCIaIh8iKSJIImEiZSMCIxAjISUAJQIlDCUQJRQlGCUcJSQlLCU0JTwlbCWAJYQliCWMJZMloSWsJbIluiW8JcQlyyXZJjwmQCZCJmAmYyZmJmv//wAAACAAoQClAKcAqgCwALUAugC/AMQAyQDRANYA3ADfAOQA8QD2APkA/wGSA5MDmAOjA6YDqQOxA7QDwAPDA8YgIiA8IH8gpyGQIagiGSIeIikiSCJhImQjAiMQIyAlACUCJQwlECUUJRglHCUkJSwlNCU8JVAlgCWEJYgljCWQJaAlrCWyJbolvCXEJcsl2CY6JkAmQiZgJmMmZSZq////4v/A/7//vv+8/7n/t/+1/7T/sP+v/6j/pP+f/53/nP+b/5r/mf+X/wX9Bf0B/Pf89fzz/Oz86vzg/N783eCC4GngJ+AA3xjfBt6W3pPeit5s3lTeUt223andmtu827vbstuv26zbqdum25/bmNuR24rbd9tk22HbXttb21jbTNtC2z3bNts12y7bKNsc2rzaudq42pvamdqY2pUAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAABwAAABIAAAAegAAALwAAADuAAAA9wAAARQAAAExAAABWgAAAW0AAAF7AAABhAAAAY0AAAGvAAAB0gAAAecAAAIOAAACNQAAAk8AAAJsAAACjgAAAqYAAALOAAAC5gAAAvQAAAMHAAADLgAAAzwAAANjAAADhQAAA6UAAAPCAAAD4AAAA/0AAAQaAAAEPAAABEwAAARrAAAEfgAABJEAAASpAAAE0AAABNsAAAT4AAAFFQAABS0AAAVDAAAFZQAABYcAAAWuAAAFvAAABc8AAAXnAAAGBAAABisAAAZDAAAGZQAABnMAAAaVAAAGowAABsUAAAbOAAAG3gAABvYAAAcMAAAHKQAABz8AAAdaAAAHbQAAB4oAAAedAAAHqwAAB8MAAAfgAAAH7gAACAsAAAgjAAAIOwAACFEAAAhsAAAIfAAACJkAAAi2AAAIzgAACOYAAAkDAAAJKgAACUIAAAlfAAAJfAAACYUAAAmiAAAJugAACdcAAAngAAAKBwAACi4AAApgAAAKeQAACokAAAq4AAAKwQAACs8AAArYAAAK8QAACw4AAAshAAALSAAAC1gAAAt1AAALjQAAC5sAAAu0AAALzQAAC9YAAAvhAAAL6gAAC/4AAAwRAAAMJAAADDQAAAxHAAAMUgAADGoAAAyCAAAMlwAADKUAAAy/AAAM0gAADN0AAAz8AAANDwAADSkAAA0yAAANTAAADVUAAA1jAAANfAAADYcAAA2VAAANqQAADcIAAA3mAAAN7wAADg4AAA4XAAAOQQAADloAAA5qAAAOcwAADoYAAA6PAAAOogAADrIAAA7FAAAPCwAADxsAAA8uAAAPRwAAD1AAAA+HAAAPoAAAD6kAAA/CAAAP3wAAD/wAABAZAAAQNgAAEE4AABBfAAAQlQAAEJ4AABCxAAAQugAAEOEAABEnAAARUwAAEWYAABF+AAARlgAAEbgAABJrAAASfgAAEpEAABKpAAASwQAAEswAABLcAAATCAAAExMAABMrAAATQwAAE1sAABNzAAATmgAAE8YAABPeAAAT5wAAE/AAABQSAAAUKgAAFEIAABRaAAAUYwAAFGwAABSOAAAUngAAFLsAABTYAAAU/wAAFSEAABVNAAAVZQAAFX0AABWVAAAVngAAFacAABXTAAAWBAAAFg0AABYvAAAWOgAAFkUAABZxAAAWhAAAFpIAABagAAAWrgAAFrwAABbVAAAW7QAAFxkAABd0AAAXzwAAF/wAABgUAAAYJQAAGC4AABhBAAAYXgAAGHEAABiYAAAYvAAAGOAAABkYAAAZPwAAGWYAABmNAAAZtAAAGdYAABn9AAAaEAAAGi0AAIBgACAAoAEAAADAAcAAAEBAQEBAQEBAYABAAAA/wAAAAEAAAD/AAQAAAD+AAAA/4AAAP8AAAAAAgEAAoADgAQAAAMABwAAAQEBAQEBAQEBAAEAAAD/AAGAAQAAAP8ABAAAAP6AAAABgAAA/oAAAAACAIAAgAQAA4AAGwAfAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQAAAACAAAABAAAAAIAAAP+AAAAAgAAA/4AAAP8AAAD/gAAA/wAAAP+AAAAAgAAA/4AAAACAAQAAAACAAAADgAAA/4AAAACAAAD/gAAA/4AAAP8AAAD/gAAA/4AAAACAAAD/gAAAAIAAAACAAAABAAAAAIAAAP+A/wAAAAEAAAMAgACABAAEAAAbAB8AIwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgAAgAAAAQAAAP8AAAABAAAAAIAAAP+AAAD/AAAA/4AAAP8AAAABAAAA/wAAAP+AAAAAgAAAAQD/gAAAAIAAAACAAAAAgAAABAAAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAD/gP+AAAAAgP8A/4AAAACAAAAABQCAAIAEAAOAAAUAHQAjACkALwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAAA/4AAAP+AAgABAAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAIAAAACA/YAAgAAAAIAAAP8AAoABAAAA/4AAAP+A/4AAgAAAAIAAAP8AA4AAAP8AAAAAgAAAAIAAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAP+AAAD/gAAAAAAAAP8AAAAAgAAAAAAAAP+AAAD/gAAAAAAAAwCAAIAEAAQAABcAHQAjAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/4AAAACAAAAAgAAA/4AAAACAAAD9AAAA/4AAAACAAAD/gAAAAIAAgAAAAIAAAACAAAD/AAAAAQAAAP+AAAAEAAAA/4AAAP8AAAD/gAAAAIAAAP8AAAD/gAAA/4AAAACAAAABAAAAAIAAAAEAAAAAAP+AAAD/gAAAAQD+gP8AAAAAgAAAAIAAAAABAYACgAKABAAAAwAAAQEBAQGAAQAAAP8ABAAAAP6AAAAAAAABAQAAgAMABAAAEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQECAAEAAAD/gAAA/4AAAACAAAAAgAAA/wAAAP+AAAD/gAAAAIAAAACABAAAAP+AAAD/gAAA/oAAAP+AAAD/gAAAAIAAAACAAAABgAAAAIAAAAAAAAEBAACAAwAEAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQAAAACAAAAAgAAA/4AAAP+AAAD/AAAAAIAAAACAAAD/gAAA/4AEAAAA/4AAAP+AAAD+gAAA/4AAAP+AAAAAgAAAAIAAAAGAAAAAgAAAAAAABQCAAYADgAQAAAMABwATABcAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAIAAAP+AAYAAgAAA/4D/AAEAAAABAAAA/wAAAP8AAAD/AAAAAQD/gACAAAD/gAGAAIAAAP+ABAAAAP+AAAAAgAAA/4AAAAAAAAD/gAAA/4AAAP+AAAAAgAAAAIAAAP8AAAD/gAAAAIAAAP+AAAAAAAABAQAAgAOAAwAACwAAAQEBAQEBAQEBAQEBAgAAgAAAAQAAAP8AAAD/gAAA/wAAAAEAAwAAAP8AAAD/gAAA/wAAAAEAAAAAgAAAAAAAAQCAAAACAAGAAAcAAAEBAQEBAQEBAQABAAAA/4AAAP8AAAAAgAGAAAD/AAAA/4AAAACAAAAAAAABAIABgAOAAgAAAwAAAQEBAQCAAwAAAP0AAgAAAP+AAAAAAAABAQAAgAIAAYAAAwAAAQEBAQEAAQAAAP8AAYAAAP8AAAAAAAABAIAAgAQAA4AAFwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAwABAAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAIAAAACAA4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAwCAAIADgAQAAAsAEQAXAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/4AAAP4AAAD/gAAAAIAAgAAAAIAAAACAAAD/gAAA/4AAAAEAAAAEAAAA/4AAAP2AAAD/gAAAAIAAAAKAAAAAAP8AAAAAgAAAAID/AP+AAAD/AAAAAYAAAAABAIAAgAOABAAADQAAAQEBAQEBAQEBAQEBAQEBgAEAAAABAAAA/QAAAAEAAAD/AAAAAIAAAACABAAAAP0AAAD/gAAAAIAAAAGAAAAAgAAAAIAAAAABAIAAgAOABAAAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAgAAAACAAAD/gAAA/4AAAP+AAAABgAAA/QAAAACAAAAAgAAAAIAAAACAAAD/AAAA/wAAAACABAAAAP+AAAD/AAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAACAAAABAAAA/wAAAAEAAAAAAAABAIAAgAOABAAAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAgAAAACAAAD/gAAAAIAAAP+AAAD+AAAA/4AAAAEAAAABAAAA/wAAAAEAAAD/AAAA/wAAAACABAAAAP+AAAD/AAAA/4AAAP8AAAD/gAAAAIAAAACAAAD/gAAAAQAAAACAAAABAAAA/4AAAACAAAAAAAABAIAAgAOABAAAEQAAAQEBAQEBAQEBAQEBAQEBAQEBAYABAAAA/4AAAP+AAAABAAAAAQAAAP8AAAD+AAAAAIAAAACABAAAAP+AAAD/gAAA/wAAAAEAAAD9gAAAAQAAAAGAAAAAgAAAAAEAgACAA4AEAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQCAAwAAAP4AAAABgAAAAIAAAP+AAAD+AAAA/4AAAAEAAAABAAAA/gAEAAAA/4AAAP8AAAD/gAAA/wAAAP+AAAAAgAAAAIAAAP+AAAABAAAAAAAAAgCAAIADgAQAABMAFwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQACAAAAAIAAAP8AAAD/AAAAAYAAAACAAAD/gAAA/gAAAP+AAAAAgACAAAABAAAABAAAAP+AAAD/gAAAAIAAAP8AAAD/gAAA/wAAAP+AAAAAgAAAAoAAAP6A/wAAAAEAAAEAgACAA4AEAAAPAAABAQEBAQEBAQEBAQEBAQEBAIADAAAA/4AAAP+AAAD/AAAAAIAAAACAAAD+gAAA/4AEAAAA/oAAAP+AAAD+gAAAAYAAAACAAAABAAAA/4AAAAAAAAMAgACAA4AEAAATABcAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAgAAAACAAAD/gAAAAIAAAP+AAAD+AAAA/4AAAACAAAD/gAAAAIAAgAAAAQAAAP8AAAABAAAABAAAAP+AAAD/AAAA/4AAAP8AAAD/gAAAAIAAAAEAAAAAgAAAAQAAAAAA/wAAAAEA/oD/AAAAAQAAAAACAIAAgAOABAAACwAPAAABAQEBAQEBAQEBAQEBAQEBAQACAAAAAIAAAP8AAAD+gAAA/4AAAACAAIAAAAEAAAAEAAAA/4AAAP0AAAABAAAAAIAAAAGAAAAAAP6AAAABgAACAQABAAIAA4AAAwAHAAABAQEBAQEBAQEAAQAAAP8AAAABAAAA/wADgAAA/wAAAP+AAAD/AAAAAAIAgACAAgADgAADAAsAAAEBAQEBAQEBAQEBAQEAAQAAAP8AAAABAAAA/4AAAP8AAAAAgAOAAAD/AAAA/4AAAP8AAAD/gAAAAIAAAAABAQAAgAOABAAAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQKAAQAAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAP8AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACABAAAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAACAIABgAOAAwAAAwAHAAABAQEBAQEBAQCAAwAAAP0AAAADAAAA/QADAAAA/4AAAP+AAAD/gAAAAAEAgACAAwAEAAAbAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAIABAAAAAIAAAACAAAAAgAAA/4AAAP+AAAD/gAAA/wAAAACAAAAAgAAAAIAAAP+AAAD/gAAA/4AEAAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAAAAAAIAgACAA4AEAAATABcAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAgAAAACAAAD/gAAA/4AAAP8AAAAAgAAAAIAAAP8AAAD/AAAAAIAAgAEAAAD/AAQAAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAAA/4AAAACAAAD+AAAA/wAAAAACAIAAgAOABAAAEQAVAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQACAAAAAIAAAP6AAAAAgAAA/wAAAAGAAAD+AAAA/4AAAACAAgAAgAAA/4AEAAAA/4AAAP6AAAABAAAAAIAAAP2AAAD/gAAAAIAAAAKAAAD+AAAA/4AAAAAAAAIAgACAA4AEAAAPABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAYABAAAAAIAAAACAAAD/AAAA/wAAAP8AAAAAgAAAAIAAAAAAAQAAAAQAAAD/gAAA/4AAAP2AAAABAAAA/wAAAAKAAAAAgAAA/4D/AAAAAQAAAwCAAIADgAQAAAsADwATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQCAAoAAAACAAAD/gAAAAIAAAP+AAAD9gAEAAAABAAAA/wAAAAEAAAAEAAAA/4AAAP8AAAD/gAAA/wAAAP+AAAADAP8AAAABAP6A/wAAAAEAAAAAAQCAAIADgAQAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQACAAAAAIAAAP8AAAD/AAAAAQAAAAEAAAD/gAAA/gAAAP+AAAAAgAQAAAD/gAAA/4AAAACAAAD9gAAAAIAAAP+AAAD/gAAAAIAAAAKAAAAAAAACAIAAgAOABAAACwATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQCAAgAAAACAAAAAgAAA/4AAAP+AAAD+AAEAAAAAgAAAAIAAAP+AAAAEAAAA/4AAAP+AAAD+gAAA/4AAAP+AAAADAP2AAAAAgAAAAYAAAACAAAEAgACAA4AEAAAXAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/wAAAP8AAAABAAAA/wAAAAEAAAABAAAA/4AAAP4AAAD/gAAAAIAEAAAA/4AAAP+AAAAAgAAA/wAAAP+AAAD/AAAAAIAAAP+AAAD/gAAAAIAAAAKAAAAAAAABAIAAgAOABAAACQAAAQEBAQEBAQEBAQCAAwAAAP4AAAABAAAA/wAAAP8ABAAAAP+AAAD/AAAA/4AAAP6AAAAAAQCAAIADgAQAABUAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/wAAAP8AAAABAAAA/4AAAAGAAAD/gAAA/gAAAP+AAAAAgAQAAAD/gAAA/4AAAACAAAD9gAAAAQAAAACAAAD+gAAA/4AAAACAAAACgAAAAAEAgACAA4AEAAALAAABAQEBAQEBAQEBAQEAgAEAAAABAAAAAQAAAP8AAAD/AAAA/wAEAAAA/gAAAAIAAAD8gAAAAQAAAP8AAAAAAAABAIAAgAOABAAACwAAAQEBAQEBAQEBAQEBAIADAAAA/wAAAAEAAAD9AAAAAQAAAP8ABAAAAP+AAAD9gAAA/4AAAACAAAACgAAAAAAAAQCAAIAEAAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEBAAMAAAD/gAAA/4AAAP4AAAD/gAAAAQAAAAEAAAD+gAQAAAD/gAAA/YAAAP+AAAAAgAAAAQAAAP8AAAACgAAAAAAAAQCAAIADgAQAABsAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAEAAAAAgAAAAIAAAAEAAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAD/AAAA/4AAAP+AAAD/AAQAAAD/AAAAAIAAAACAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAD/AAAAAAAAAQCAAIADgAQAAAUAAAEBAQEBAQCAAQAAAAIAAAD9AAQAAAD9AAAA/4AAAAABAIAAgAQABAAAEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAEAAAAAgAAAAIAAAACAAAABAAAA/wAAAP+AAAD/gAAA/4AAAP8ABAAAAP+AAAD/gAAAAIAAAACAAAD8gAAAAgAAAP+AAAAAgAAA/gAAAAAAAAEAgACABAAEAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQCAAQAAAACAAAAAgAAAAIAAAAEAAAD/AAAA/4AAAP+AAAD/gAAA/wAEAAAA/4AAAP+AAAD/gAAAAYAAAPyAAAABAAAAAIAAAACAAAD+AAAAAAAAAgCAAIADgAQAAAsADwAAAQEBAQEBAQEBAQEBAQEBAQEAAgAAAACAAAD/gAAA/gAAAP+AAAAAgACAAAABAAAABAAAAP+AAAD9gAAA/4AAAACAAAACgAAAAAD9gAAAAoAAAgCAAIADgAQAAAkADQAAAQEBAQEBAQEBAQEBAQEAgAKAAAAAgAAA/4AAAP6AAAD/AAEAAAABAAAABAAAAP+AAAD+gAAA/4AAAP8AAAADAP6AAAABgAAAAAIAgACABAAEAAAPABcAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAgAAAACAAAAAgAAA/4AAAP+AAAD+AAAA/4AAAACAAIAAAAEAAAD/gAAAAIAAAAQAAAD/gAAA/gAAAP8AAAAAgAAA/4AAAACAAAACgAAAAAD9gAAAAIAAAACAAAABgAACAIAAgAOABAAAEwAXAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAKAAAAAgAAA/4AAAP+AAAAAgAAAAIAAAP8AAAD/gAAA/4AAAP8AAQAAAAEAAAAEAAAA/4AAAP8AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAD/AAAAAwD/AAAAAQAAAQCAAIADgAQAABsAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/wAAAP8AAAABgAAAAIAAAP+AAAD+AAAA/4AAAAEAAAABAAAA/oAAAP+AAAAAgAQAAAD/gAAA/4AAAACAAAD/AAAA/4AAAP8AAAD/gAAAAIAAAACAAAD/gAAAAQAAAACAAAABAAAAAAAAAQCAAIADgAQAAAcAAAEBAQEBAQEBAIADAAAA/wAAAP8AAAD/AAQAAAD/gAAA/QAAAAMAAAAAAAABAIAAgAOABAAACwAAAQEBAQEBAQEBAQEBAIABAAAAAQAAAAEAAAD/gAAA/gAAAP+ABAAAAP0AAAADAAAA/QAAAP+AAAAAgAAAAAAAAQCAAIADgAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEAgAEAAAABAAAAAQAAAP+AAAD/gAAA/wAAAP+AAAD/gAQAAAD+AAAAAgAAAP4AAAD/AAAA/4AAAACAAAABAAAAAAAAAQCAAIAEAAQAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAIABAAAAAIAAAACAAAAAgAAAAQAAAP8AAAD/gAAA/4AAAP+AAAD/AAQAAAD+AAAAAIAAAP+AAAACAAAA/IAAAACAAAAAgAAA/4AAAP+AAAAAAAABAIAAgAOABAAAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQCAAQAAAAEAAAABAAAA/4AAAP+AAAAAgAAAAIAAAP8AAAD/AAAA/wAAAACAAAAAgAAA/4AAAP+ABAAAAP8AAAABAAAA/wAAAP+AAAD/gAAA/4AAAP8AAAABAAAA/wAAAAEAAAAAgAAAAIAAAACAAAAAAAABAIAAgAOABAAADwAAAQEBAQEBAQEBAQEBAQEBAQCAAQAAAAEAAAABAAAA/4AAAP+AAAD/AAAA/4AAAP+ABAAAAP6AAAABgAAA/oAAAP+AAAD+gAAAAYAAAACAAAAAAAABAIAAgAOABAAAFwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAIADAAAA/4AAAP+AAAD/gAAA/4AAAAIAAAD9AAAAAIAAAACAAAAAgAAAAIAAAP4ABAAAAP8AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAAEAAAAAgAAAAIAAAACAAAAAgAAAAAAAAQEAAIADAAQAAAcAAAEBAQEBAQEBAQACAAAA/wAAAAEAAAD+AAQAAAD/gAAA/YAAAP+AAAAAAAABAIAAgAQAA4AAFwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAIABAAAAAIAAAACAAAAAgAAAAIAAAACAAAD/AAAA/4AAAP+AAAD/gAAA/4AAAP+AA4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAQEAAIADAAQAAAcAAAEBAQEBAQEBAQACAAAA/gAAAAEAAAD/AAQAAAD8gAAAAIAAAAKAAAAAAAABAIACAAQABAAAFwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgAAgAAAAIAAAACAAAAAgAAA/wAAAP+AAAD/gAAA/4AAAP8AAAAAgAAAAIAAAACABAAAAP+AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAP+AAAD/gAAAAIAAAACAAAAAgAAAAAAAAQCAAIADgAEAAAMAAAEBAQEAgAMAAAD9AAEAAAD/gAAAAAAAAQEAAoACgAQAAAkAAAEBAQEBAQEBAQEBAAEAAAAAgAAA/4AAAP+AAAD/gAQAAAD/gAAA/wAAAACAAAAAgAAAAAEAgACAA4ADAAAPAAABAQEBAQEBAQEBAQEBAQEBAQACgAAA/4AAAP+AAAD/AAAAAQAAAP6AAAD/gAAAAIADAAAA/YAAAACAAAABgAAA/oAAAP+AAAAAgAAAAYAAAAAAAAIAgACAA4AEAAAJAA0AAAEBAQEBAQEBAQEBAQEBAIABAAAAAYAAAACAAAD/gAAA/YABAAAAAQAAAAQAAAD/AAAA/4AAAP6AAAD/gAAAAgD+gAAAAYAAAAABAIAAgAOAAwAAEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/wAAAP8AAAABAAAAAQAAAP+AAAD+AAAA/4AAAACAAwAAAP+AAAD/gAAAAIAAAP6AAAAAgAAA/4AAAP+AAAAAgAAAAYAAAAAAAAIAgACAA4AEAAAJAA0AAAEBAQEBAQEBAQEBAQEBAoABAAAA/YAAAP+AAAAAgAAAAYD/AAAAAQAAAAQAAAD8gAAAAIAAAAGAAAAAgAAA/4D+gAAAAYAAAAACAIAAgAOAAwAADQARAAABAQEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/gAAAAGAAAD+AAAA/4AAAACAAIAAAAEAAAADAAAA/4AAAP8AAAD/gAAA/4AAAACAAAABgAAAAAD/gAAAAIAAAAABAQAAgAOAA4AACwAAAQEBAQEBAQEBAQEBAYACAAAA/oAAAAEAAAD/AAAA/wAAAACAA4AAAP+AAAD/AAAA/4AAAP8AAAACgAAAAAAAAgCAAIADgAOAAA8AEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/4AAAP4AAAABgAAA/oAAAP+AAAAAgACAAAABAAAAA4AAAP+AAAD+AAAA/4AAAACAAAAAgAAAAIAAAAEAAAAAAP8AAAABAAABAIAAgAOABAAACwAAAQEBAQEBAQEBAQEBAIABAAAAAYAAAACAAAD/AAAA/wAAAP8ABAAAAP8AAAD/gAAA/gAAAAIAAAD+AAAAAAAAAgGAAIACgAQAAAMABwAAAQEBAQEBAQEBgAEAAAD/AAAAAQAAAP8ABAAAAP+AAAD/gAAA/YAAAAACAIAAgAOABAAAAwAPAAABAQEBAQEBAQEBAQEBAQEBAoABAAAA/wAAAAEAAAD/gAAA/gAAAP+AAAABAAAAAQAEAAAA/4AAAP+AAAD+AAAA/4AAAACAAAABAAAA/wAAAAABAIAAgAOAA4AAEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAEAAAAAgAAAAQAAAP+AAAAAgAAAAIAAAP8AAAD/gAAA/4AAAP8AA4AAAP8AAAAAgAAA/4AAAP8AAAD/gAAA/4AAAACAAAAAgAAA/wAAAAAAAAEBgACAAwAEAAAHAAABAQEBAQEBAQGAAQAAAACAAAD/AAAA/4AEAAAA/QAAAP+AAAAAgAAAAAAAAQCAAIAEAAMAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAAAAIAAAAEAAAAAgAAA/wAAAP+AAAD/gAAA/4AAAP8AAAAAgAMAAAD/gAAAAIAAAP+AAAD+AAAAAYAAAP+AAAAAgAAA/oAAAAIAAAAAAAABAIAAgAOAAwAADwAAAQEBAQEBAQEBAQEBAQEBAQCAAQAAAACAAAABAAAAAIAAAP8AAAD/gAAA/4AAAP8AAwAAAP+AAAAAgAAA/4AAAP4AAAABgAAA/4AAAP8AAAAAAAACAIAAgAOAAwAACwAPAAABAQEBAQEBAQEBAQEBAQEBAQACAAAAAIAAAP+AAAD+AAAA/4AAAACAAIAAAAEAAAADAAAA/4AAAP6AAAD/gAAAAIAAAAGAAAAAAP6AAAABgAACAIAAgAOAAwAACQANAAABAQEBAQEBAQEBAQEBAQCAAoAAAACAAAD/gAAA/oAAAP8AAQAAAAEAAAADAAAA/4AAAP+AAAD/gAAA/wAAAAIA/4AAAACAAAAAAgCAAIAEAAMAAA0AEQAAAQEBAQEBAQEBAQEBAQEBAQEBAQACgAAAAIAAAP+AAAD/AAAA/oAAAP+AAAAAgACAAAABAAAAAwAAAP6AAAD/gAAA/4AAAAEAAAAAgAAAAIAAAAAA/4AAAACAAAAAAQEAAIADgAMAAAkAAAEBAQEBAQEBAQEBAAIAAAAAgAAA/wAAAP+AAAD/AAMAAAD/gAAA/wAAAAEAAAD+AAAAAAEAgACABAADAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEAAoAAAP6AAAABgAAAAIAAAP+AAAD9AAAAAgAAAP6AAAD/gAAAAIADAAAA/4AAAP+AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAAAgAAAAAAAAQCAAIADgAOAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAAAAQAAAP8AAAAAgAAAAQAAAP+AAAD+gAAA/4AAAP+AAAAAgAOAAAD/gAAA/4AAAP6AAAAAgAAA/4AAAP+AAAAAgAAAAYAAAACAAAAAAAABAIAAgAOAAwAADwAAAQEBAQEBAQEBAQEBAQEBAQCAAQAAAACAAAAAgAAAAQAAAP+AAAD/gAAA/oAAAP+AAwAAAP4AAAAAgAAAAYAAAP2AAAAAgAAA/4AAAACAAAAAAAABAIAAgAOAAwAADwAAAQEBAQEBAQEBAQEBAQEBAQCAAQAAAAEAAAABAAAA/4AAAP+AAAD/AAAA/4AAAP+AAwAAAP6AAAABgAAA/oAAAP+AAAD/gAAAAIAAAACAAAAAAAABAIAAgAQAAwAAEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAEAAAAAgAAAAIAAAACAAAABAAAA/4AAAP8AAAD/gAAA/wAAAP+AAwAAAP6AAAAAgAAA/4AAAAGAAAD+AAAA/4AAAACAAAD/gAAAAIAAAAAAAAEAgACAA4ADAAAbAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAIABAAAAAQAAAAEAAAD/gAAA/4AAAACAAAAAgAAA/wAAAP8AAAD/AAAAAIAAAACAAAD/gAAA/4ADAAAA/4AAAACAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAD/gAAAAIAAAACAAAAAgAAAAIAAAAAAAAEAgACAA4ADAAAPAAABAQEBAQEBAQEBAQEBAQEBAIABAAAAAQAAAAEAAAD/gAAA/gAAAAGAAAD+gAAA/4ADAAAA/wAAAAEAAAD+AAAA/4AAAACAAAAAgAAAAIAAAAAAAAEAgACAA4ADAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQCAAwAAAP+AAAD/gAAA/4AAAAGAAAD9AAAAAIAAAACAAAAAgAAA/oADAAAA/4AAAP+AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAAAgAAAAAAAAQCAAIADAAQAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAYABgAAA/wAAAP+AAAAAgAAAAQAAAP6AAAD/gAAA/4AAAACAAAAAgAQAAAD/gAAA/wAAAP+AAAD/AAAA/4AAAACAAAABAAAAAIAAAAEAAAAAAAABAYAAgAKABAAAAwAAAQEBAQGAAQAAAP8ABAAAAPyAAAAAAAABAQAAgAOABAAAEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAGAAAAAgAAAAIAAAP+AAAD/gAAA/oAAAAEAAAAAgAAA/4AAAP8ABAAAAP+AAAD/AAAA/4AAAP8AAAD/gAAAAIAAAAEAAAAAgAAAAQAAAAAAAAEAgAGAA4ADAAAPAAABAQEBAQEBAQEBAQEBAQEBAQABAAAAAQAAAACAAAD/gAAA/wAAAP8AAAD/gAAAAIADAAAA/4AAAACAAAD/AAAA/4AAAACAAAD/gAAAAQAAAAAAAAEAAAAABAAEAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQAAAYAAAAEAAAAAgAAAAIAAAACAAAD/AAAA/4AAAP+AAAD/AAAA/wAEAAAA/4AAAP+AAAD/gAAA/wAAAP6AAAABAAAAAQAAAACAAAAAgAAAAAAAAQIAAAAEAAQAAAMAAAEBAQECAAIAAAD+AAQAAAD8AAAAAAAAAgCAAIADgAQAABcAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQGAAYAAAP8AAAABAAAA/4AAAP+AAAABgAAA/QAAAACAAAAAgAAA/wAAAACAAAAAgAGAAIAAAP+ABAAAAP+AAAD/AAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAACAAAABAAAAAAAAAP+AAAAAAQCAAIADgAQAABsAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAEAAAABAAAAAQAAAP+AAAAAgAAA/wAAAAEAAAD/AAAA/wAAAP8AAAABAAAA/wAAAACAAAD/gAQAAAD+gAAAAYAAAP8AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAABACAAIAEAAQAABcAGwAfACMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAoAAAP4AAAABgAAAAIAAAACAAAD/gAAA/YAAAAIAAAD+gAAA/4AAAP+AAAAAgAEAAAAAgAAAAQAAgAAA/4D9AACAAAD/gAQAAAD/gAAA/4AAAP+AAAD/gAAA/wAAAP+AAAAAgAAAAIAAAACAAAAAgAAAAQAAAP8A/4AAAACAAQAAAP+AAAD+gAAA/4AAAAAEAIAAgAQAA4AAAwAHAAsADwAAAQEBAQEBAQEBAQEBAQEBAQCAAIAAAP+AAQAAgAAA/4ABAACAAAD/gAEAAIAAAP+AA4AAAP0AAAADAAAA/QAAAAMAAAD9AAAAAwAAAP0AAAAAAQIAAAAEAAQAAAkAAAEBAQEBAQEBAQEDgACAAAD+AAAAAIAAAACAAAAAgAQAAAD8AAAAAQAAAAEAAAABAAAAAAgAAAAABAAEAAADAAcACwAPABMAFwAbAB8AAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAABAAAA/wACAAEAAAD/AP8AAQAAAP8AAgABAAAA/wD9AAEAAAD/AAIAAQAAAP8A/wABAAAA/wACAAEAAAD/AAQAAAD/AAAAAQAAAP8AAAAAAAAA/wAAAAEAAAD/AAAAAAAAAP8AAAABAAAA/wAAAAAAAAD/AAAAAQAAAP8AAAAAAQIAAAADAAQAAAMAAAEBAQECAAEAAAD/AAQAAAD8AAAAAAAAAgGAAIACgAQAAAMABwAAAQEBAQEBAQEBgAEAAAD/AAAAAQAAAP8ABAAAAP6AAAD/gAAA/oAAAAABAgAAAAQAAgAAAwAAAQEBAQIAAgAAAP4AAgAAAP4AAAAAAAAEAIAAAAQABAAAAwAHAAsADwAAAQEBAQEBAQEBAQEBAQEBAQCAAIAAAP+AAQAAgAAA/4ABAACAAAD/gAEAAIAAAP+ABAAAAPwAAAAEAAAA/AAAAAQAAAD8AAAABAAAAPwAAAAAAQCAAIADgAOAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAoABAAAA/oAAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAAEAAAD/gAOAAAD+AAAA/wAAAACAAAAAgAAAAIAAAACAAAAAgAAA/wAAAAEAAAAAAAABAAAAAAQABAAACwAAAQEBAQEBAQEBAQEBAAAEAAAA/gAAAP+AAAD/gAAA/4AAAP+ABAAAAPwAAAAAgAAAAIAAAACAAAAAgAAAAAAAAQCAAIAEAAOAABsAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAgACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAOAAAD/gAAAAIAAAP8AAAABAAAA/oAAAAGAAAD9AAAAAIAAAP+AAAABAAAA/wAAAAGAAAD+gAAAAAAAAQAAAAACAAQAAAkAAAEBAQEBAQEBAQEAAACAAAAAgAAAAIAAAACAAAD+AAQAAAD/AAAA/wAAAP8AAAD/AAAAAAEAAAAABAAEAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQKAAYAAAP8AAAD/AAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAQAEAAAA/wAAAP+AAAD/gAAA/wAAAP8AAAABgAAAAQAAAACAAAAAgAAAAAAAAQAAAAAEAAIAAA8AAAEBAQEBAQEBAQEBAQEBAQEBgAEAAAAAgAAAAIAAAACAAAD8AAAAAIAAAACAAAAAgAIAAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAAAAAAAAgAAAAAEAAQAAAMABwAAAQEBAQEBAQEAAAIAAAD+AAIAAgAAAP4ABAAAAP4AAAAAAAAA/gAAAAAEAAACAAQABAAAAwAHAAsADwAAAQEBAQEBAQEBAQEBAQEBAQAAAQAAAP8AAgABAAAA/wD/AAEAAAD/AAIAAQAAAP8ABAAAAP8AAAABAAAA/wAAAAAAAAD/AAAAAQAAAP8AAAAABAIAAAAEAAQAAAMABwALAA8AAAEBAQEBAQEBAQEBAQEBAQECAAEAAAD/AAEAAQAAAP8A/wABAAAA/wABAAEAAAD/AAQAAAD/AAAAAAAAAP8AAAAAAAAA/wAAAAAAAAD/AAAAAAEDAAAABAAEAAADAAABAQEBAwABAAAA/wAEAAAA/AAAAAAAAAEAAAAABAAEAAAFAAABAQEBAQEAAAQAAAD9AAAA/wAEAAAA/wAAAP0AAAAAAQAAAAABAAQAAAMAAAEBAQEAAAEAAAD/AAQAAAD8AAAAAAAAAwCAAIADAAOAAAMABwALAAABAQEBAQEBAQEBAQEAgACAAAD/gAEAAIAAAP+AAQAAgAAA/4ADgAAA/QAAAAMAAAD9AAAAAwAAAP0AAAAAAAABAYABgAQABAAACwAAAQEBAQEBAQEBAQEBAYABAAAAAIAAAAEAAAD+gAAA/4AAAP+ABAAAAP8AAAD/gAAA/wAAAACAAAAAgAAAAAAAAQAAAYACgAQAAAsAAAEBAQEBAQEBAQEBAQGAAQAAAP+AAAD/gAAA/oAAAAEAAAAAgAQAAAD+gAAA/4AAAP+AAAABAAAAAIAAAAAAAAEAAAAABAAEAAAJAAABAQEBAQEBAQEBAwABAAAA/AAAAAEAAAABAAAAAQAEAAAA/AAAAAKAAAAAgAAAAIAAAAABAIAAgAMABAAACwAAAQEBAQEBAQEBAQEBAgABAAAA/4AAAP6AAAD/gAAAAIAAAAEABAAAAP0AAAD/gAAAAIAAAAEAAAAAgAAAAAAAAQAAAAAEAAQAAAUAAAEBAQEBAQAAAQAAAAMAAAD8AAQAAAD9AAAA/wAAAAACAIAAgAMAAoAACwAPAAABAQEBAQEBAQEBAQEBAQEBAQABgAAAAIAAAP+AAAD+gAAAAQAAAP8A/4AAgAAA/4ACgAAA/4AAAP8AAAD/gAAAAIAAAAEAAAAAAAAA/wAAAAACAIAAgAMABAAACwAPAAABAQEBAQEBAQEBAQEBAQEBAgABAAAA/4AAAP6AAAABAAAA/wAAAAEA/oAAgAAA/4AEAAAA/QAAAP+AAAAAgAAAAQAAAACAAAD/gAAA/wAAAAABAIAAgAQABAAADQAAAQEBAQEBAQEBAQEBAQECAAIAAAD/AAAA/4AAAP6AAAD/gAAAAIAAAAEABAAAAP+AAAD9gAAA/4AAAACAAAABAAAAAIAAAAACAAAAAAQABAAAAwAHAAABAQEBAQEBAQAABAAAAPwAAQAAAAIAAAAEAAAA/AAAAAMA/gAAAAIAAAEAgACABAAEAAARAAABAQEBAQEBAQEBAQEBAQEBAQECAAIAAAD/AAAAAQAAAP8AAAD/gAAA/oAAAP+AAAAAgAAAAQAEAAAA/4AAAP+AAAD/gAAA/oAAAP+AAAAAgAAAAQAAAACAAAAAAQAAAAACgAKAAAsAAAEBAQEBAQEBAQEBAQAAAYAAAACAAAAAgAAA/wAAAP+AAAD/AAKAAAD/gAAA/4AAAP6AAAABAAAAAIAAAAAAAAEAAAAABAAEAAAFAAABAQEBAQEAAAQAAAD/AAAA/QAEAAAA/AAAAAMAAAAAAQCAAIAEAAQAABUAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAAIAAAD/AAAAAQAAAP8AAAABAAAA/wAAAP+AAAD+gAAA/4AAAACAAAABAAQAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAAEAAAAAgAAAAAEBgAAABAACgAALAAABAQEBAQEBAQEBAQECgAGAAAD/AAAA/4AAAP8AAAAAgAAAAIACgAAA/wAAAP+AAAD/AAAAAYAAAACAAAAAAAABAAAAAAQABAAAEQAAAQEBAQEBAQEBAQEBAQEBAQEBAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAPwABAAAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAAEAAAAABAABAAADAAABAQEBAAAEAAAA/AABAAAA/wAAAAAAAAEAAAAABAAEAAARAAABAQEBAQEBAQEBAQEBAQEBAQEDgACAAAD8AAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAEAAAA/AAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAQAAAgAEAAQAAAMAAAEBAQEAAAQAAAD8AAQAAAD+AAAAAAAAAgCAAIACAAOAAAMABwAAAQEBAQEBAQEAgACAAAD/gAEAAIAAAP+AA4AAAP0AAAADAAAA/QAAAAAEAIAAgAQABAAAAwAHAAsADwAAAQEBAQEBAQEBAQEBAQEBAQCAA4AAAPyAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAABAAAAPyAAAADAP+AAAAAgP8A/4AAAACA/wD/gAAAAIAAAQAAAAAEAAQAAAUAAAEBAQEBAQMAAQAAAPwAAAADAAQAAAD8AAAAAQAAAAACAIAAgAQABAAAAwAHAAABAQEBAQEBAQCAA4AAAPyAAYAAAACAAAAEAAAA/IAAAAIA/4AAAACAAAMAgACABAAEAAADAAcACwAAAQEBAQEBAQEBAQEBAIADgAAA/IAAgAAAAIAAAAGAAAAAgAAABAAAAPyAAAADAP+AAAAAgP4A/4AAAACAAAAABAAAAIAEAAQAAAMABwALAA8AAAEBAQEBAQEBAQEBAQEBAQEAAAQAAAD8AAAABAAAAPwAAAAEAAAA/AAAAAQAAAD8AAQAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAAYAgACABAAEAAADAAcACwAPABMAFwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAIADgAAA/IAAgAAAAIAAAAGAAAAAgAAA/oAAAACAAAD+gAAAAIAAAAGAAAAAgAAABAAAAPyAAAADAP+AAAAAgAAA/4AAAACA/wD/gAAAAID/AP+AAAAAgAAA/4AAAACAAAEAgACAAQADgAADAAABAQEBAIAAgAAA/4ADgAAA/QAAAAAAAAUAgACABAAEAAADAAcACwAPABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAIADgAAA/IAAgAAAAIAAAAGAAAAAgAAA/YAAAACAAAABgAAAAIAAAAQAAAD8gAAAAwD/gAAAAIAAAP+AAAAAgP4A/4AAAACAAAD/gAAAAIAAAAABAAADAAQABAAAAwAAAQEBAQAABAAAAPwABAAAAP8AAAAAAAAHAIAAgAQABAAAAwAHAAsADwATABcAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQCAA4AAAPyAAIAAAACAAAABgAAAAIAAAP2AAAAAgAAAAYAAAACAAAD9gAAAAIAAAAGAAAAAgAAABAAAAPyAAAADAP+AAAAAgAAA/4AAAACA/wD/gAAAAIAAAP+AAAAAgP8A/4AAAACAAAD/gAAAAIAAAAAEAAAAAAQAAgAAAwAHAAsADwAAAQEBAQEBAQEBAQEBAQEBAQAAAQAAAP8AAgABAAAA/wD/AAEAAAD/AAIAAQAAAP8AAgAAAP8AAAABAAAA/wAAAAAAAAD/AAAAAQAAAP8AAAAAAQAAAAAEAAQAAAkAAAEBAQEBAQEBAQEAAAEAAAABAAAAAQAAAAEAAAD8AAQAAAD/gAAA/4AAAP+AAAD9gAAAAAEBAAAAAgAEAAADAAABAQEBAQABAAAA/wAEAAAA/AAAAAAAAAEAAAAABAAEAAALAAABAQEBAQEBAQEBAQECgAGAAAD8AAAAAIAAAACAAAAAgAAAAQAEAAAA/AAAAAGAAAABAAAAAIAAAACAAAAAAAABAAABAAQAAgAAAwAAAQEBAQAABAAAAPwAAgAAAP8AAAAAAAABAAAAAAQABAAACwAAAQEBAQEBAQEBAQEBAgACAAAA/AAAAACAAAAAgAAAAIAAAACABAAAAPwAAAACAAAAAIAAAACAAAAAgAAAAAAAAQAAAAAEAAIAAAkAAAEBAQEBAQEBAQEDAAEAAAD8AAAAAQAAAAEAAAABAAIAAAD+AAAAAIAAAACAAAAAgAAAAAEAAAAABAAEAAALAAABAQEBAQEBAQEBAQEAAAIAAAAAgAAAAIAAAACAAAAAgAAA/AAEAAAA/4AAAP+AAAD/gAAA/4AAAP4AAAAAAAADAAAAAAQABAAAGwAnADMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAEAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAD/AAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAIAAYAAAACAAAD/gAAA/4AAAP+AAAD/gP4AAIAAAACAAAAAgAAAAIAAAP6AAAD/gAQAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAQAAAP+AAAD+gAAAAIAAAACAAAAAgAAA/oAAAP+AAAD/gAAA/4AAAP+AAAAAgAAAAAAAAQAAAAAEAAIAAAkAAAEBAQEBAQEBAQEAAAEAAAABAAAAAQAAAAEAAAD8AAIAAAD/gAAA/4AAAP+AAAD/gAAAAAEAAAAABAAEAAALAAABAQEBAQEBAQEBAQEAAAGAAAABAAAAAIAAAACAAAAAgAAA/AAEAAAA/4AAAP+AAAD/gAAA/wAAAP6AAAAAAAAEAAAAgAQABAAAAwAHAAsADwAAAQEBAQEBAQEBAQEBAQEBAQCAAYAAAP6AAgABgAAA/oD9gAGAAAD+gAIAAYAAAP6ABAAAAP6AAAABgAAA/oAAAP+AAAD+gAAAAYAAAP6AAAAAAQIAAgAEAAQAAAMAAAEBAQECAAIAAAD+AAQAAAD+AAAAAAAABACAAIAEAAQAAAMABwAjACcAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAAD/AAGAAQAAAP8A/gAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4ABgACAAAD/gAQAAAD/gAAAAIAAAP+AAAAAAAAA/wAAAP+AAAD/gAAAAIAAAACAAAABAAAA/oAAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAAGAAAD/gAAAAAQAAAAABAAEAAADAAcACwAPAAABAQEBAQEBAQEBAQEBAQEBAAAAgAAA/4ADgACAAAD/gPyAAIAAAP+AA4AAgAAA/4AEAAAA/4AAAACAAAD/gAAA/QAAAP+AAAAAgAAA/4AAAAABAAAAAAIAAgAAAwAAAQEBAQAAAgAAAP4AAgAAAP4AAAAAAAAEAAAAAAIABAAAAwAHAAsADwAAAQEBAQEBAQEBAQEBAQEBAQAAAQAAAP8AAQABAAAA/wD/AAEAAAD/AAEAAQAAAP8ABAAAAP8AAAAAAAAA/wAAAAAAAAD/AAAAAAAAAP8AAAAAAQCAAQADgAOAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAYABAAAA/4AAAAGAAAD+gAAAAIAAAP8AAAD/gAAA/4AAAACAAAAAgAOAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAACAAAAAAAABAQABAAOABAAAEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQECAACAAAAAgAAAAIAAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACABAAAAP+AAAD/gAAA/wAAAACAAAD+gAAAAYAAAP+AAAABAAAAAIAAAAAAAAEBAAEABAADgAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQIAAQAAAACAAAAAgAAA/4AAAP+AAAD/AAAAAIAAAP6AAAABgAAA/4ADgAAA/4AAAP+AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAAAgAAAAAAAAQEAAIADgAOAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAgAAgAAAAIAAAACAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAOAAAD+gAAAAIAAAP8AAAD/gAAA/4AAAACAAAAAgAAAAQAAAP+AAAAAAAABAQAAgAOABAAADwAAAQEBAQEBAQEBAQEBAQEBAQIAAIAAAACAAAAAgAAA/4AAAP6AAAD/gAAAAIAAAACABAAAAP8AAAD/AAAA/wAAAP+AAAAAgAAAAQAAAAEAAAAAAAACAIAAgAOAA4AAAwAJAAABAQEBAQEBAQEBAIADAAAA/QAAgAAAAgAAAP8AAAADgAAA/QAAAAKA/gAAAAEAAAABAAAAAAIAgACABAAEAAAbACcAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAACAAAAAgAAAAIAAAACAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAAAAAD/gAAAAIAAAACAAAAAgAAA/4AAAAQAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAA/4D/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAEAAAIABAADAAADAAABAQEBAAAEAAAA/AADAAAA/wAAAAAAAAEAAAAABAAEAAALAAABAQEBAQEBAQEBAQEAAAQAAAD/gAAA/4AAAP+AAAD/gAAA/gAEAAAA/gAAAP+AAAD/gAAA/4AAAP+AAAAAAAABAAACAAIABAAAAwAAAQEBAQAAAgAAAP4ABAAAAP4AAAAAAAACAQAAgAOAA4AAFwAbAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAYABgAAAAIAAAP8AAAAAgAAAAIAAAP8AAAD/gAAA/wAAAACAAAAAgAAA/wAAAACAAIAAAACAAAADgAAA/wAAAP+AAAD/gAAA/4AAAP+AAAAAgAAA/4AAAACAAAAAgAAAAIAAAACAAAAAgP+AAAAAgAADAAAAAAQABAAACwAnADMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAGAAAD/gAAA/4AAAP+AAAD/gAAAAIACgAEAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgACAAIAAAP+AAAD+gAAAAIAAAACAAAAAgAQAAAD/gAAA/4AAAP+AAAD/gAAAAYAAAACAAAD/AAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAQAAAACAAAAAgAAAAIAAAACAAAAAgAAA/oAAAP6AAAD/gAAAAIAAAACAAAAAgAAAAAAAAgCAAIADgAQAAA8AHwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAAABAAAAAIAAAP+AAAD/AAAA/wAAAP+AAAAAgAAAAQAAAAEAAAAAgAAA/4AAAP8AAAD/AAAA/4AAAACABAAAAP+AAAAAgAAA/wAAAP+AAAAAgAAA/4AAAAEAAAD+gAAA/4AAAACAAAD/AAAA/4AAAACAAAD/gAAAAQAAAAABAAAAAAQAA4AACwAAAQEBAQEBAQEBAQEBAQACAAAAAIAAAACAAAD8AAAAAIAAAACAA4AAAP+AAAD/gAAA/YAAAAKAAAAAgAAAAAAAAQAAAAACAAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEAAACAAAAAgAAAAIAAAACAAAD/gAAA/4AAAP+AAAD/gAQAAAD/gAAA/4AAAP+AAAD/AAAA/4AAAP+AAAD/gAAAAAAAAQIAAAAEAAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEDgACAAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAQAAAD8AAAAAIAAAACAAAAAgAAAAQAAAACAAAAAgAAAAAAAAQCAAIAEAAQAABcAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQIAAIAAAACAAAAAgAAAAIAAAP+AAAD/AAAA/4AAAP8AAAD/gAAAAIAAAACAAAAAgAQAAAD/gAAA/4AAAP+AAAD/gAAA/oAAAAEAAAD/AAAAAYAAAACAAAAAgAAAAIAAAAAAACAAAAAABAAEAAADAAcACwAPABMAFwAbAB8AIwAnACsALwAzADcAOwA/AEMARwBLAE8AUwBXAFsAXwBjAGcAawBvAHMAdwB7AH8AAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAgAAA/4ABAACAAAD/gAEAAIAAAP+AAQAAgAAA/4D9gACAAAD/gAEAAIAAAP+AAQAAgAAA/4ABAACAAAD/gPyAAIAAAP+AAQAAgAAA/4ABAACAAAD/gAEAAIAAAP+A/YAAgAAA/4ABAACAAAD/gAEAAIAAAP+AAQAAgAAA/4D8gACAAAD/gAEAAIAAAP+AAQAAgAAA/4ABAACAAAD/gP2AAIAAAP+AAQAAgAAA/4ABAACAAAD/gAEAAIAAAP+A/IAAgAAA/4ABAACAAAD/gAEAAIAAAP+AAQAAgAAA/4D9gACAAAD/gAEAAIAAAP+AAQAAgAAA/4ABAACAAAD/gAQAAAD/gAAAAIAAAP+AAAAAgAAA/4AAAACAAAD/gAAAAAAAAP+AAAAAgAAA/4AAAACAAAD/gAAAAIAAAP+AAAAAAAAA/4AAAACAAAD/gAAAAIAAAP+AAAAAgAAA/4AAAAAAAAD/gAAAAIAAAP+AAAAAgAAA/4AAAACAAAD/gAAAAAAAAP+AAAAAgAAA/4AAAACAAAD/gAAAAIAAAP+AAAAAAAAA/4AAAACAAAD/gAAAAIAAAP+AAAAAgAAA/4AAAAAAAAD/gAAAAIAAAP+AAAAAgAAA/4AAAACAAAD/gAAAAAAAAP+AAAAAgAAA/4AAAACAAAD/gAAAAIAAAP+AAAAAAQAAAAAEAAQAAAsAAAEBAQEBAQEBAQEBAQAABAAAAP6AAAD/AAAA/4AAAP+AAAD/gAQAAAD8AAAAAIAAAACAAAAAgAAAAQAAAAAAAAEAAAAABAAEAAALAAABAQEBAQEBAQEBAQEAAAQAAAD/gAAA/4AAAP+AAAD/AAAA/oAEAAAA/oAAAP8AAAD/gAAA/4AAAP+AAAAAAAABAAABgAKABAAADwAAAQEBAQEBAQEBAQEBAQEBAQAAAQAAAACAAAAAgAAAAIAAAP8AAAD/gAAA/4AAAP+ABAAAAP+AAAD/gAAA/4AAAP8AAAAAgAAAAIAAAACAAAAAAAABAAAAAAKABAAADwAAAQEBAQEBAQEBAQEBAQEBAQAAAQAAAACAAAAAgAAAAIAAAP8AAAD/gAAA/4AAAP+ABAAAAP+AAAD/gAAA/4AAAP2AAAACAAAAAIAAAACAAAAAAAABAYAAAAQAAoAABQAAAQEBAQEBAYACgAAA/oAAAP8AAoAAAP8AAAD+gAAAAAEAAAAABAAEAAAJAAABAQEBAQEBAQEBAAACgAAAAIAAAACAAAAAgAAA/AAEAAAA/wAAAP8AAAD/AAAA/wAAAAACAAAAAAQABAAAGwAfAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQGAAQAAAACAAAAAgAAAAIAAAP+AAAD/gAAA/4AAAP8AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAAAAAEAAAAEAAAA/4AAAP+AAAD/gAAA/wAAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAAEAAAAAgAAAAIAAAP8A/wAAAAEAAAEBgAGABAAEAAAFAAABAQEBAQEBgAEAAAABgAAA/YAEAAAA/oAAAP8AAAAAAQAAAAACgAKAAA8AAAEBAQEBAQEBAQEBAQEBAQEBgAEAAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAKAAAD/AAAA/4AAAP+AAAD/gAAAAQAAAACAAAAAgAAAAAAAAQGAAAAEAAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEDAAEAAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAQAAAD/AAAA/4AAAP+AAAD+AAAAAoAAAACAAAAAgAAAAAAAAQGAAAAEAAKAAA8AAAEBAQEBAQEBAQEBAQEBAQEBgAEAAAAAgAAAAIAAAACAAAD/AAAA/4AAAP+AAAD/gAKAAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAAAAAQGAAYAEAAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEDAAEAAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAQAAAD/AAAA/4AAAP+AAAD/gAAAAQAAAACAAAAAgAAAAAAAAQAAAAAEAAQAABsAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAEAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAD/AAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAQAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAQAAAAAEAAQAAB8AAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAABAAAAAIAAAAEAAAAAgAAAAQAAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP8AAAAAgAAAAIAAAP+AAAD/gAQAAAD/gAAA/4AAAACAAAAAgAAA/wAAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAAEAAAAAgAAAAQAAAACAAAAAAAABAAABgAQABAAADwAAAQEBAQEBAQEBAQEBAQEBAQAAAQAAAACAAAAAgAAAAgAAAP2AAAD/gAAA/4AAAP+ABAAAAP+AAAD/gAAA/4AAAP8AAAAAgAAAAIAAAACAAAAAAAABAAABgAQAAoAAAwAAAQEBAQAABAAAAPwAAoAAAP8AAAAAAAABAYAAAAKABAAAAwAAAQEBAQGAAQAAAP8ABAAAAPwAAAAAAAABAYAAAAQABAAAFwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAwABAAAA/4AAAP+AAAAAgAAAAIAAAP8AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACABAAAAP8AAAD/gAAA/wAAAP+AAAD/AAAAAIAAAACAAAAAgAAAAQAAAACAAAAAgAAAAAAAAQAAAAAEAAKAAA8AAAEBAQEBAQEBAQEBAQEBAQEAAAKAAAAAgAAAAIAAAACAAAD/AAAA/4AAAP+AAAD+AAKAAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAAAAAQAAAYAEAAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEDAAEAAAD/gAAA/4AAAP+AAAD9gAAAAgAAAACAAAAAgAQAAAD/AAAA/4AAAP+AAAD/gAAAAQAAAACAAAAAgAAAAAAAAQAAAgAEAAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEAAAQAAAD/gAAA/4AAAP+AAAD/AAAA/4AAAP+AAAD/gAQAAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAAAAAAAAQAAAYACgAKAAAMAAAEBAQEAAAKAAAD9gAKAAAD/AAAAAAAAAQGAAAACgAKAAAMAAAEBAQEBgAEAAAD/AAKAAAD9gAAAAAAAAQAAAYAEAAQAABcAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAQAAAACAAAABAAAAAIAAAAEAAAD/gAAA/4AAAP+AAAD/AAAA/4AAAP+AAAD/gAQAAAD/gAAA/4AAAACAAAAAgAAA/wAAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAAAAAAEAAAAABAAEAAAJAAABAQEBAQEBAQEBAYACgAAA/AAAAACAAAAAgAAAAIAEAAAA/AAAAAEAAAABAAAAAQAAAAABAAAAAAQABAAAEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEDAAEAAAD/gAAA/4AAAP+AAAD/AAAA/oAAAAEAAAABAAAAAIAAAACABAAAAP6AAAD/AAAA/4AAAP+AAAD/gAAAAQAAAACAAAAAgAAAAQAAAAAAAAEAAAAABAAEAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQAAAQAAAACAAAAAgAAAAQAAAAEAAAD+gAAA/wAAAP+AAAD/gAAA/4AEAAAA/wAAAP8AAAD/gAAA/4AAAP8AAAAAgAAAAIAAAACAAAABAAAAAAAAAQAAAAAEAAQAABsAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEDAAEAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAQAAAD/AAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAQAAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAQAAAAACgAQAABcAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAQAAAACAAAAAgAAAAIAAAP+AAAD/gAAA/4AAAP8AAAAAgAAAAIAAAP+AAAD/gAQAAAD/gAAA/4AAAP+AAAD/AAAA/4AAAP+AAAD/gAAAAQAAAACAAAABAAAAAIAAAAAAAAEAAAAABAAEAAAfAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAQAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAP8AAAD/gAAA/wAAAP+AAAD/AAAAAIAAAACAAAD/gAAA/4AEAAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/wAAAACAAAAAgAAA/4AAAP+AAAABAAAAAIAAAAEAAAAAgAAAAAAAAQAAAAACgAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEBgAEAAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAQAAAD9gAAA/4AAAP+AAAD/gAAAAQAAAACAAAAAgAAAAAAAAQGAAAAEAAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEBgAEAAAAAgAAAAIAAAACAAAD/AAAA/4AAAP+AAAD/gAQAAAD+AAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAAAAAQAAAAAEAAKAAA8AAAEBAQEBAQEBAQEBAQEBAQEBgAKAAAD+AAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAKAAAD/AAAA/4AAAP+AAAD/gAAAAQAAAACAAAAAgAAAAAAAAQGAAYACgAQAAAMAAAEBAQEBgAEAAAD/AAQAAAD9gAAAAAAAAQGAAYAEAAKAAAMAAAEBAQEBgAKAAAD9gAKAAAD/AAAAAAAAAQAAAAAEAAQAAB8AAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAwABAAAA/4AAAP+AAAAAgAAAAIAAAP8AAAD/gAAA/wAAAP+AAAD/AAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAQAAAD/AAAA/4AAAP8AAAD/gAAA/wAAAACAAAAAgAAA/4AAAP+AAAABAAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAABAAAAAAQABAAAIwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAABAAAAAIAAAAEAAAAAgAAAAQAAAP+AAAD/gAAAAIAAAACAAAD/AAAA/4AAAP8AAAD/gAAA/wAAAACAAAAAgAAA/4AAAP+ABAAAAP+AAAD/gAAAAIAAAACAAAD/AAAA/4AAAP8AAAD/gAAA/wAAAACAAAAAgAAA/4AAAP+AAAABAAAAAIAAAAEAAAAAgAAAAAAAAQGAAYACgAKAAAMAAAEBAQEBgAEAAAD/AAKAAAD/AAAAAAAAAQAAAAAEAAKAABcAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQGAAQAAAACAAAAAgAAAAIAAAP8AAAD/gAAA/wAAAP+AAAD/AAAAAIAAAACAAAAAgAKAAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAD/gAAA/4AAAAEAAAAAgAAAAIAAAAAAAAEAAAGAAoAEAAAFAAABAQEBAQEBgAEAAAD9gAAAAYAEAAAA/YAAAAEAAAAAAQAAAAACgAKAAAUAAAEBAQEBAQAAAoAAAP8AAAD+gAKAAAD9gAAAAYAAAAABAAAAAAQABAAAHwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAEAAAAAgAAAAQAAAACAAAABAAAA/4AAAP+AAAAAgAAAAIAAAP8AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+ABAAAAP+AAAD/gAAAAIAAAACAAAD/AAAA/4AAAP8AAAD/gAAA/wAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAAAAAAEAAAAABAAEAAALAAABAQEBAQEBAQEBAQEBgAEAAAABgAAA/oAAAP8AAAD+gAAAAYAEAAAA/oAAAP8AAAD+gAAAAYAAAAEAAAAAAAABAAAAAAQAAoAABwAAAQEBAQEBAQEAAAQAAAD+gAAA/wAAAP6AAoAAAP8AAAD+gAAAAYAAAAAAAAEBgAAABAAEAAAHAAABAQEBAQEBAQGAAQAAAAGAAAD+gAAA/wAEAAAA/oAAAP8AAAD+gAAAAAAAAQAAAAACgAQAAAcAAAEBAQEBAQEBAYABAAAA/wAAAP6AAAABgAQAAAD8AAAAAYAAAAEAAAAAAAABAAABgAQABAAABwAAAQEBAQEBAQEBgAEAAAABgAAA/AAAAAGABAAAAP6AAAD/AAAAAQAAAAAAAAQBAAEAAwADAAADAAcACwAPAAABAQEBAQEBAQEBAQEBAQEBAYABAAAA/wD/gACAAAD/gAGAAIAAAP+A/wABAAAA/wADAAAA/4AAAAAAAAD/AAAAAQAAAP8AAAAAAAAA/4AAAAACAIAAgAOAA4AACwAPAAABAQEBAQEBAQEBAQEBAQEBAQACAAAAAIAAAP+AAAD+AAAA/4AAAACAAIAAAAEAAAADgAAA/4AAAP4AAAD/gAAAAIAAAAIAAAD/gP8AAAABAAACAAAAAAQABAAAEwAfAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAgAAAACAAAAAgAAA/4AAAP+AAAD+AAAA/4AAAP+AAAAAgAAAAIAAgAAA/4AAAACAAAABAAAAAIAAAP+AAAAEAAAA/4AAAP+AAAD+AAAA/4AAAP+AAAAAgAAAAIAAAAIAAAAAgAAA/4D/gAAA/wAAAP+AAAAAgAAAAQAAAACAABAAAAAABAAEAAADAAcACwAPABMAFwAbAB8AIwAnACsALwAzADcAOwA/AAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAYAAgAAA/4ACAACAAAD/gP2AAIAAAP+AAgAAgAAA/4D9gACAAAD/gAIAAIAAAP+A/YAAgAAA/4ACAACAAAD/gP+AAIAAAP+AAgAAgAAA/4D9gACAAAD/gAIAAIAAAP+A/YAAgAAA/4ACAACAAAD/gP2AAIAAAP+AAgAAgAAA/4AEAAAA/4AAAACAAAD/gAAAAAAAAP+AAAAAgAAA/4AAAAAAAAD/gAAAAIAAAP+AAAAAAAAA/4AAAACAAAD/gAAAAAAAAP+AAAAAgAAA/4AAAAAAAAD/gAAAAIAAAP+AAAAAAAAA/4AAAACAAAD/gAAAAAAAAP+AAAAAgAAA/4AAAAAQAAAAAAQABAAAAwAHAAsADwATABcAGwAfACMAJwArAC8AMwA3ADsAPwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAIAAAP+AAgAAgAAA/4D+gACAAAD/gAIAAIAAAP+A/oAAgAAA/4ACAACAAAD/gP6AAIAAAP+AAgAAgAAA/4D8gACAAAD/gAIAAIAAAP+A/oAAgAAA/4ACAACAAAD/gP6AAIAAAP+AAgAAgAAA/4D+gACAAAD/gAIAAIAAAP+ABAAAAP+AAAAAgAAA/4AAAAAAAAD/gAAAAIAAAP+AAAAAAAAA/4AAAACAAAD/gAAAAAAAAP+AAAAAgAAA/4AAAAAAAAD/gAAAAIAAAP+AAAAAAAAA/4AAAACAAAD/gAAAAAAAAP+AAAAAgAAA/4AAAAAAAAD/gAAAAIAAAP+AAAAAAwCAAIADgAQAABcAGwAfAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQIAAIAAAAEAAAD/AAAAAIAAAP+AAAABAAAA/wAAAP+AAAD/AAAA/4AAAACAAAABAP+AAAAAgAAA/4AAAACAAAAEAAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAYAAAACAAAD/gP+AAAAAgP8A/4AAAACAAAAAAQCAAIADgAOAAA8AAAEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/4AAAP+AAAD/AAAA/4AAAP+AAAAAgAOAAAD/gAAA/wAAAP+AAAD/AAAAAQAAAACAAAABAAAAAAAAAgCAAIADgAOAAAMACQAAAQEBAQEBAQEBAQCAAwAAAP0AAYAAAP8AAAACAAAAA4AAAP0AAAACgP8AAAD/AAAAAgAAAAABAIAAgAOAA4AAAwAAAQEBAQCAAwAAAP0AA4AAAP0AAAAAAAACAIAAgAOAA4AAAwALAAABAQEBAQEBAQEBAQEAgAMAAAD9AACAAAACAAAA/4AAAP8AAAADgAAA/QAAAAKA/gAAAAIAAAD/AAAAAQAAAQAAAAAEAAQAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQACAAAAAIAAAACAAAD/gAAA/4AAAP4AAAD/gAAA/4AAAACAAAAAgAQAAAD/gAAA/4AAAP4AAAD/gAAA/4AAAACAAAAAgAAAAgAAAACAAAAAAAABAQABAAMAAwAACwAAAQEBAQEBAQEBAQEBAYABAAAAAIAAAP+AAAD/AAAA/4AAAACAAwAAAP+AAAD/AAAA/4AAAACAAAABAAAAAAAAAQCAAQAEAAQAABsAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAACAAAAAgAAAAQAAAP+AAAD/gAAAAIAAAP8AAAD/gAAA/wAAAACAAAD/gAAA/4AAAAEAAAAAgAQAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAAAgAAA/4AAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAABgCAAIAEAAQAAAMABwALAA8AEwAXAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAOAAAD8gAEAAAAAgAAAAIAAAACAAAD+AAAAAIAAAAGAAAAAgAAA/gAAAAGAAAAEAAAA/IAAAAMA/wAAAAEAAAD/AAAAAQD+gP+AAAAAgAAA/4AAAACA/4D/gAAAAIAABgCAAIAEAAQAAAMABwALAA8AEwAXAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAOAAAD8gAEAAAAAgAAAAIAAAACAAAD+gAAAAYAAAP4AAAAAgAAAAYAAAACAAAAEAAAA/IAAAAMA/wAAAAEAAAD/AAAAAQD+gP+AAAAAgP+A/4AAAACAAAD/gAAAAIAABgCAAIAEAAQAABMAFwAbAB8AIwAnAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgAAgAAAAIAAAAEAAAD/AAAA/4AAAP+AAAD/gAAA/wAAAAEAAAAAgAAAAAAAgAAA/oAAgAAA/4ACAACAAAD/gP4AAIAAAP+AAgAAgAAA/4AEAAAA/wAAAP+AAAD/gAAA/4AAAP8AAAABAAAAAIAAAACAAAAAgAAA/4D/gAAAAIABAAAA/4AAAACAAAD/gAAA/oAAAP+AAAAAgAAA/4AAAAACAQAAgAOABAAAFwAbAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAYABgAAAAIAAAP+AAAD/gAAAAIAAAP+AAAD/gAAA/4AAAACAAAD/gAAAAQAAAP8A/4AAgAAA/4AEAAAA/4AAAP8AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAAAAIAAAAEAAAAAAAAA/wAAAAACAIAAgAQABAAAFwAbAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAYACgAAA/4AAAP+AAAD/gAAAAIAAAP+AAAD+gAAAAQAAAP8AAAABAAAAAIAAAP8A/wAAgAAA/4AEAAAA/gAAAAEAAAD/gAAA/4AAAP8AAAD/gAAAAIAAAAEAAAAAgAAAAIAAAACAAAD+gAAA/wAAAAABAIAAgAQABAAAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQIAAIAAAACAAAAAgAAAAIAAAP8AAAD/gAAAAIAAAP6AAAAAgAAA/4AAAP8AAAAAgAAAAIAAAACABAAAAP+AAAD/gAAA/4AAAP8AAAAAgAAA/wAAAP+AAAAAgAAAAQAAAP+AAAABAAAAAIAAAACAAAAAAAABAIAAgAQABAAAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQGAAYAAAP+AAAAAgAAAAQAAAP8AAAD/gAAAAIAAAP6AAAAAgAAA/4AAAP8AAAABAAAAAIAAAP+ABAAAAP8AAAD/gAAAAIAAAP6AAAAAgAAA/wAAAP+AAAAAgAAAAQAAAP+AAAABgAAA/4AAAACAAAAAAAABAIAAgAQABAAAFwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAAAAIAAAAEAAAAAgAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACABAAAAP+AAAAAgAAA/4AAAP6AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAABgAAAAAAAAQCAAIAEAAQAABsAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAACAAAAAgAAAAIAAAACAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAQAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAQEAAIADgAQAAAsAAAEBAQEBAQEBAQEBAQIAAYAAAP8AAAD/gAAA/wAAAACAAAAAgAQAAAD/AAAA/gAAAP+AAAABAAAAAIAAAAAAAAEAgACABAAEAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQGAAoAAAP+AAAD/AAAAAIAAAACAAAD+gAAA/4AAAP8AAAAAgAAAAIAEAAAA/QAAAP+AAAABAAAAAIAAAAEAAAD+AAAA/4AAAAEAAAAAgAAAAAAAAAAYASYAAQAAAAAAAAAIAAAAAQAAAAAAAQAIAAgAAQAAAAAAAgAHABAAAQAAAAAAAwAIABcAAQAAAAAABAAQAB8AAQAAAAAABQALAC8AAQAAAAAABgAIADoAAQAAAAAACQAJAEIAAQAAAAAACgA6AEsAAQAAAAAADQARAIUAAQAAAAAADgAyAJYAAQAAAAAAEwAMAMgAAwABBAkAAAAQANQAAwABBAkAAQAQAOQAAwABBAkAAgAOAPQAAwABBAkAAwAQAQIAAwABBAkABAAgARIAAwABBAkABQAWATIAAwABBAkABgAQAUgAAwABBAkACQASAVgAAwABBAkACgB0AWoAAwABBAkADQAiAd4AAwABBAkADgBkAgAAAwABBAkAEwAYAmQoYykgMjAyMlVyc2FGb250UmVndWxhclVyc2FGb250VXJzYUZvbnQgUmVndWxhclZlcnNpb24gMS4wVXJzYUZvbnRVcnNhRnJhbmtBbiBvcGVuIGxpY2VuY2UgZ2VuZXJhbCBwdXJwb3NlIHRleHRtb2RlIGZvbnQgYnkgVXJzYUZyYW5rQ0MwIDEuMCBVbml2ZXJzYWxodHRwczovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wL0hlbGxvIFdvcmxkIQAoAGMAKQAgADIAMAAyADIAVQByAHMAYQBGAG8AbgB0AFIAZQBnAHUAbABhAHIAVQByAHMAYQBGAG8AbgB0AFUAcgBzAGEARgBvAG4AdAAgAFIAZQBnAHUAbABhAHIAVgBlAHIAcwBpAG8AbgAgADEALgAwAFUAcgBzAGEARgBvAG4AdABVAHIAcwBhAEYAcgBhAG4AawBBAG4AIABvAHAAZQBuACAAbABpAGMAZQBuAGMAZQAgAGcAZQBuAGUAcgBhAGwAIABwAHUAcgBwAG8AcwBlACAAdABlAHgAdABtAG8AZABlACAAZgBvAG4AdAAgAGIAeQAgAFUAcgBzAGEARgByAGEAbgBrAEMAQwAwACAAMQAuADAAIABVAG4AaQB2AGUAcgBzAGEAbABoAHQAdABwAHMAOgAvAC8AYwByAGUAYQB0AGkAdgBlAGMAbwBtAG0AbwBuAHMALgBvAHIAZwAvAHAAdQBiAGwAaQBjAGQAbwBtAGEAaQBuAC8AegBlAHIAbwAvADEALgAwAC8ASABlAGwAbABvACAAVwBvAHIAbABkACEAAAADAAAAAAAAAGYAMwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==\r
10
+ `)).arrayBuffer();await this.sB(s),this.We=b.parse(s)[0],await this.iB()}QB(t){if(t===void 0)return this.Ke;this.Ke=t,this.Xe=this.tB.calculateMaxGlyphDimensions(this.Je.map(r=>r.character),this.Ke,this.We);const s=this.AB.createTextureAtlas(this.Je,this.Xe,this.Ke,this.We);this.Ve=s.framebuffer,this.Ze=s.columns,this.je=s.rows}async rB(t){try{const s=await fetch(t);if(!s.ok)throw new I(`Failed to load font file: ${s.status} ${s.statusText}`);const r=await s.arrayBuffer();await this.sB(r);const i=b.parse(r);if(!i||i.length===0)throw Error("Failed to parse font file");this.We=i[0],await this.iB()}catch(s){throw new I("Failed to load font: "+(s instanceof Error?s.message:"Unknown error"),s)}}async sB(t){const s=Date.now();this.Ne=new FontFace("CustomFont_"+s,t),await this.Ne.load(),document.fonts.add(this.Ne)}async iB(){const t=this.qe.extractCharacters(this.We),s=this.qe.filterProblematicCharacters(t);this.Je=this.eB.createCharacterObjects(s,this.We),this.Xe=this.tB.calculateMaxGlyphDimensions(s,this.Ke,this.We);const r=this.AB.createTextureAtlas(this.Je,this.Xe,this.Ke,this.We);this.Ve=r.framebuffer,this.Ze=r.columns,this.je=r.rows}ke(t){return this.eB.ke(t,this.Je)}He(t){return this.eB.He(t,this.Je)}W(){this.Ve.W(),document.fonts.delete(this.Ne)}get fontFramebuffer(){return this.Ve}get characters(){return this.Je}get textureColumns(){return this.Ze}get textureRows(){return this.je}get maxGlyphDimensions(){return this.Xe}get fontSize(){return this.Ke}get font(){return this.We}}class K{constructor(t,s,r){a(this,"EB");a(this,"nB");a(this,"I");a(this,"p");a(this,"oB");a(this,"gB");a(this,"aB");a(this,"hB");a(this,"cB");this.aB=t,this.hB=s,this.cB=r,this.fA()}fA(){this.EB=Math.floor(this.aB.width/this.hB),this.nB=Math.floor(this.aB.height/this.cB),this.I=this.EB*this.hB,this.p=this.nB*this.cB,this.oB=Math.floor((this.aB.width-this.I)/2),this.gB=Math.floor((this.aB.height-this.p)/2)}CB(t,s){this.hB=t,this.cB=s,this.fA()}get cellWidth(){return this.hB}get cellHeight(){return this.cB}get cols(){return this.EB}get rows(){return this.nB}get width(){return this.I}get height(){return this.p}get offsetX(){return this.oB}get offsetY(){return this.gB}}class q{constructor(t={}){a(this,"aB");a(this,"DB");a(this,"lB");t.canvas?(this.aB=t.canvas,this.lB=!1):(this.aB=this.PB(t.width,t.height),this.lB=!0),this.aB.style.imageRendering="pixelated"}PB(t,s){const r=document.createElement("canvas");return r.className="textmodeCanvas",r.style.imageRendering="pixelated",r.width=t||800,r.height=s||600,document.body.appendChild(r),r}O(t,s){this.aB.width=t??this.aB.width,this.aB.height=s??this.aB.height}uB(){const t=this.aB.getContext("webgl2",{alpha:!0,premultipliedAlpha:!1,preserveDrawingBuffer:!0,antialias:!1,depth:!1,stencil:!1,powerPreference:"high-performance"});if(!t)throw new I("`textmode.js` requires WebGL2 support.");return t}W(){this.DB&&this.DB.disconnect();const t=this.aB.getContext("webgl")||this.aB.getContext("webgl2");if(t){const s=t.getExtension("WEBGL_lose_context");s&&s.loseContext()}this.lB&&this.aB.parentNode&&this.aB.parentNode.removeChild(this.aB)}get canvas(){return this.aB}get width(){return this.aB.width}get height(){return this.aB.height}}class TA{constructor(t=60){a(this,"IB");a(this,"wB");a(this,"fB",null);a(this,"dB",0);a(this,"pB",!0);a(this,"_B",0);a(this,"mB",0);a(this,"vB",[]);a(this,"xB",10);a(this,"yB",0);this.IB=t,this.wB=1e3/t}start(t){if(!this.pB)return;this.dB=performance.now();const s=r=>{if(!this.pB)return void(this.fB=null);const i=r-this.dB;i>=this.wB&&(t(),this.dB=r-i%this.wB),this.pB&&(this.fB=requestAnimationFrame(s))};this.fB=requestAnimationFrame(s)}stop(){this.fB&&(cancelAnimationFrame(this.fB),this.fB=null)}pause(){this.pB&&(this.pB=!1,this.stop())}resume(t){this.pB||(this.pB=!0,this.start(t))}frameRate(t,s){if(t===void 0)return this._B;this.IB=t,this.wB=1e3/t,this.pB&&s&&(this.stop(),this.start(s))}measureFrameRate(){const t=performance.now();if(this.mB>0){const s=t-this.mB;this.vB.push(s),this.vB.length>this.xB&&this.vB.shift();const r=this.vB.reduce((i,B)=>i+B,0)/this.vB.length;this._B=1e3/r}this.mB=t}get isLooping(){return this.pB}get frameRateLimit(){return this.IB}get currentFrameRate(){return this._B}get frameCount(){return this.yB}set frameCount(t){this.yB=t}incrementFrame(){this.yB++}resetFrameCount(){this.yB=0}}const MA=n=>class extends n{rotate(t=0,s=0,r=0){this.ze.state._A(t),this.ze.state.mA(s),this.ze.state.vA(r)}rotateX(t){this.ze.state._A(t)}rotateY(t){this.ze.state.mA(t)}rotateZ(t){this.ze.state.vA(t)}push(){this.ze.state.IA()}pop(){this.ze.state.wA()}rect(t,s,r=1,i=1){this.ze.Nt(t,s,r,i)}line(t,s,r,i){this.ze.qt(t,s,r,i)}lineWeight(t){this.ze.state.pA(t)}background(t,s=t,r=t,i=255){this.ze.ie(t,s,r,i)}char(t){this.ze.state.xA(this.We.ke(t))}charColor(t,s,r){this.ze.state.yA(t,s,r)}cellColor(t,s,r){this.ze.state.bA(t,s,r)}flipX(t){this.ze.state.GA(t)}flipY(t){this.ze.state.$A(t)}charRotation(t){this.ze.state.YA(t)}invert(t){this.ze.state.MA(t)}clear(){this.ze.ie(0,0,0,0)}ellipse(t,s,r,i){this.ze.Ae(t,s,r/2,i/2)}triangle(t,s,r,i,B,E){this.ze.te(t,s,r,i,B,E)}bezierCurve(t,s,r,i,B,E,o,Q){this.ze.ee(t,s,r,i,B,E,o,Q)}arc(t,s,r,i,B,E){this.ze.se(t,s,r,i,B,E)}shader(t){this.ze.Vt(t)}setUniform(t,s){this.ze.Kt(t,s)}setUniforms(t){this.ze.Zt(t)}createFilterShader(t){return this.ze.jt(t)}};class H{bB(t){const s=t.U(0),r=t.U(1),i=t.U(2),B=t.U(3);return{characterPixels:s,primaryColorPixels:r,secondaryColorPixels:i,transformPixels:t.U(4),rotationPixels:B}}GB(t,s){return t[s]+(t[s+1]<<8)}$B(t,s){return{r:t[s],g:t[s+1],b:t[s+2],a:t[s+3]}}}class X{MB(t,s){return new Blob([t],{type:s})}YB(t,s,r){try{const i=this.MB(t,r),B=URL.createObjectURL(i),E=document.createElement("a");E.href=B,E.download=s,E.style.display="none",E.rel="noopener",document.body.appendChild(E),E.click(),document.body.removeChild(E),URL.revokeObjectURL(B)}catch(i){throw console.error("Failed to download file:",i),Error("File download failed: "+(i instanceof Error?i.message:"Unknown error"))}}zB(){return new Date().toISOString().slice(0,19).replace(/:/g,"-")}RB(){const t=new Date;return{date:t.toISOString().split("T")[0],time:t.toTimeString().split(" ")[0].replace(/:/g,"-")}}TB(t){return t.replace(/[<>:"/\\|?*]/g,"_").replace(/\s+/g,"_").replace(/_{2,}/g,"_").replace(/^_+|_+$/g,"").substring(0,255)}SB(){return"textmode-export-"+this.zB()}}class _A extends H{FB(t,s,r){const i=t[r]===255,B=t[r+1]===255,E=t[r+2]===255,o=s[r],Q=s[r+1];return{isInverted:i,flipHorizontal:B,flipVertical:E,rotation:Math.round(360*(o+Q/255)/255*100)/100}}OB(t,s,r){return{x:t,y:s,cellX:t*r.cellWidth,cellY:s*r.cellHeight}}UB(t,s){const r=[];let i=0;for(let B=0;B<s.rows;B++)for(let E=0;E<s.cols;E++){const o=4*i,Q=this.GB(t.characterPixels,o);let g=this.$B(t.primaryColorPixels,o),l=this.$B(t.secondaryColorPixels,o);const h=this.FB(t.transformPixels,t.rotationPixels,o);if(h.isInverted){const D=g;g=l,l=D}const c=this.OB(E,B,s);r.push({charIndex:Q,primaryColor:g,secondaryColor:l,transform:h,position:c}),i++}return r}}class GA{LB(t,s){const r=t.cmap;for(const i of r.tables)if(i.format===4){const B=i;for(let E=0;E<B.startCount.length;E++)if(s>=B.startCount[E]&&s<=B.endCount[E]){if(B.idRangeOffset[E]===0)return s+B.idDelta[E]&65535;{const o=B.idRangeOffset[E]/2+(s-B.startCount[E])-(B.startCount.length-E);if(o>=0&&o<B.glyphIdArray.length){const Q=B.glyphIdArray[o];if(Q!==0)return Q+B.idDelta[E]&65535}}}}else if(i.format===12){const B=i;for(let E=0;E<B.groups.length;E+=3){const o=B.groups[E],Q=B.groups[E+1],g=B.groups[E+2];if(s>=o&&s<=Q)return g+(s-o)}}return 0}kB(t,s,r,i,B){const E=B/t.head.unitsPerEm;return{getBoundingBox:()=>({x1:r+s.xMin*E,y1:i+-s.yMax*E,x2:r+s.xMax*E,y2:i+-s.yMin*E}),toSVG:()=>this.HB(s,r,i,E)}}HB(t,s,r,i){if(!t||!t.xs)return"";const{xs:B,ys:E,endPts:o,flags:Q}=t;if(!(B&&E&&o&&Q))return"";let g="",l=0;for(let h=0;h<o.length;h++){const c=o[h];if(!(c<l)){if(c>=l){const D=s+B[l]*i,C=r-E[l]*i;g+=`M${D.toFixed(2)},${C.toFixed(2)}`;let u=l+1;for(;u<=c;)if(1&Q[u]){const y=s+B[u]*i,m=r-E[u]*i;g+=`L${y.toFixed(2)},${m.toFixed(2)}`,u++}else{const y=s+B[u]*i,m=r-E[u]*i;let x=u+1>c?l:u+1;if(1&Q[x]){const v=s+B[x]*i,d=r-E[x]*i;g+=`Q${y.toFixed(2)},${m.toFixed(2)} ${v.toFixed(2)},${d.toFixed(2)}`,u=x+1}else{const v=(y+(s+B[x]*i))/2,d=(m+(r-E[x]*i))/2;g+=`Q${y.toFixed(2)},${m.toFixed(2)} ${v.toFixed(2)},${d.toFixed(2)}`,u=x}}g+="Z"}l=c+1}}return g}WB(t,s,r,i,B){const E=t.codePointAt(0)||0,o=this.LB(s,E);let Q=null;return s.glyf&&s.glyf[o]!==null?Q=s.glyf[o]:(Q=b.T.glyf.Ee(s,o),s.glyf[o]=Q),this.kB(s,Q,r,i,B)}JB(t,s,r,i,B,E,o,Q){const g=r+(B-Q*(o/s.head.unitsPerEm))/2,l=i+(E+.7*o)/2;return this.WB(t,s,g,l,o).toSVG()||null}}class YA{constructor(){a(this,"VB");this.VB=new GA}KB(t){return`<?xml version="1.0" encoding="UTF-8" standalone="no"?>
11
11
  <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
12
12
  <svg width="${t.width}" height="${t.height}" viewBox="0 0 ${t.width} ${t.height}"
13
13
  xmlns="http://www.w3.org/2000/svg" version="1.1">
@@ -15,15 +15,15 @@ precision highp float;in vec2 v_uv;uniform sampler2D u_src0;uniform sampler2D u_
15
15
  <desc>textmode art visualization generated by textmode.js library</desc>`}ZB(){return`
16
16
  </g>
17
17
  </svg>`}jB(t,s){if(!s.includeBackgroundRectangles)return"";const r=s.backgroundColor,i=`rgba(${r[0]},${r[1]},${r[2]},${r[3]/255})`;return`
18
- <rect width="${t.width}" height="${t.height}" fill="${i}" />`}XB(t){return`rgba(${t.r},${t.g},${t.b},${t.a/255})`}NB(t,s){const{transform:r,position:i}=t,B=i.cellX+s.cellWidth/2,E=i.cellY+s.cellHeight/2,n=[];if(r.flipHorizontal||r.flipVertical){const Q=r.flipHorizontal?-1:1,g=r.flipVertical?-1:1;n.push(`translate(${B} ${E})`),n.push(`scale(${Q} ${g})`),n.push(`translate(${-B} ${-E})`)}return r.rotation&&n.push(`rotate(${r.rotation} ${B} ${E})`),n.length?` transform="${n.join(" ")}"`:""}qB(t,s,r){if(!r.includeBackgroundRectangles||t.secondaryColor.a===0)return"";const{position:i}=t,B=this.XB(t.secondaryColor);return r.drawMode==="stroke"?`
18
+ <rect width="${t.width}" height="${t.height}" fill="${i}" />`}XB(t){return`rgba(${t.r},${t.g},${t.b},${t.a/255})`}NB(t,s){const{transform:r,position:i}=t,B=i.cellX+s.cellWidth/2,E=i.cellY+s.cellHeight/2,o=[];if(r.flipHorizontal||r.flipVertical){const Q=r.flipHorizontal?-1:1,g=r.flipVertical?-1:1;o.push(`translate(${B} ${E})`),o.push(`scale(${Q} ${g})`),o.push(`translate(${-B} ${-E})`)}return r.rotation&&o.push(`rotate(${r.rotation} ${B} ${E})`),o.length?` transform="${o.join(" ")}"`:""}qB(t,s,r){if(!r.includeBackgroundRectangles||t.secondaryColor.a===0)return"";const{position:i}=t,B=this.XB(t.secondaryColor);return r.drawMode==="stroke"?`
19
19
  <rect x="${i.cellX}" y="${i.cellY}" width="${s.cellWidth}" height="${s.cellHeight}" stroke="${B}" fill="none" stroke-width="${r.strokeWidth}" />`:`
20
- <rect x="${i.cellX}" y="${i.cellY}" width="${s.cellWidth}" height="${s.cellHeight}" fill="${B}" />`}WB(t,s,r,i){const B=r.characters[t.charIndex];if(!B)return"";const E=this.VB.JB(B.character,r.font,t.position.cellX,t.position.cellY,s.cellWidth,s.cellHeight,r.fontSize,B.advanceWidth);if(!E)return"";const n=this.XB(t.primaryColor);return i.drawMode==="stroke"?`
21
- <path id="${`path-${t.charIndex}-${t.position.cellX}-${t.position.cellY}`.replace(/\./g,"-")}" d="${E}" stroke="${n}" stroke-width="${i.strokeWidth}" fill="none" />`:`
22
- <path d="${E}" fill="${n}" />`}As(t,s,r,i){let B="";B+=this.qB(t,s,i);const E=this.NB(t,s),n=this.WB(t,s,r,i);return n&&(E?(B+=`
23
- <g${E}>`,B+=n,B+=`
24
- </g>`):B+=n),B}ts(t,s,r,i){let B=this.KB(s);B+=this.jB(s,i),B+=`
20
+ <rect x="${i.cellX}" y="${i.cellY}" width="${s.cellWidth}" height="${s.cellHeight}" fill="${B}" />`}WB(t,s,r,i){const B=r.characters[t.charIndex];if(!B)return"";const E=this.VB.JB(B.character,r.font,t.position.cellX,t.position.cellY,s.cellWidth,s.cellHeight,r.fontSize,B.advanceWidth);if(!E)return"";const o=this.XB(t.primaryColor);return i.drawMode==="stroke"?`
21
+ <path id="${`path-${t.charIndex}-${t.position.cellX}-${t.position.cellY}`.replace(/\./g,"-")}" d="${E}" stroke="${o}" stroke-width="${i.strokeWidth}" fill="none" />`:`
22
+ <path d="${E}" fill="${o}" />`}As(t,s,r,i){let B="";B+=this.qB(t,s,i);const E=this.NB(t,s),o=this.WB(t,s,r,i);return o&&(E?(B+=`
23
+ <g${E}>`,B+=o,B+=`
24
+ </g>`):B+=o),B}ts(t,s,r,i){let B=this.KB(s);B+=this.jB(s,i),B+=`
25
25
  <g id="ascii-cells">`;for(const E of t)B+=this.As(E,s,r,i);return B+=this.ZB(),B}es(t){return t.replace(/<path[^>]*d=""[^>]*\/>/g,"").replace(/\n\s*\n/g,`
26
- `).replace(/[ \t]+$/gm,"")}}class SA extends X{Bs(t){return this.MB(t,"image/svg+xml;charset=utf-8")}ss(t,s){this.YB(t,this.TB(s)+".svg","image/svg+xml;charset=utf-8")}Qs(t,s){this.ss(t,s||this.SB())}}class AA{constructor(){a(this,"rs");a(this,"Es");a(this,"ns");this.rs=new _A,this.Es=new YA,this.ns=new SA}gs(t){return{includeBackgroundRectangles:t.includeBackgroundRectangles??!0,drawMode:t.drawMode??"fill",strokeWidth:t.strokeWidth??1,backgroundColor:t.backgroundColor??[0,0,0,0],filename:t.filename||this.ns.SB()}}hs(t,s={}){const r=this.rs.UB(this.rs.bB(t.pipeline),t.grid),i=this.Es.ts(r,t.grid,t.font,this.gs(s));return this.Es.es(i)}Qs(t,s={}){this.ns.Qs(this.hs(t,s),s.filename)}}class FA extends H{cs(t,s,r,i=" "){var n;const B=[];let E=0;for(let Q=0;Q<s.rows;Q++){const g=[];for(let l=0;l<s.cols;l++){const h=4*E,c=this.GB(t.characterPixels,h),D=((n=r.characters[c])==null?void 0:n.character)||i;g.push(D),E++}B.push(g)}return B}}class zA{Cs(t,s){const r=[];for(const B of t){let E=B.join("");s.preserveTrailingSpaces||(E=E.replace(/\s+$/,"")),r.push(E)}const i=s.lineEnding==="crlf"?`\r
26
+ `).replace(/[ \t]+$/gm,"")}}class SA extends X{Bs(t){return this.MB(t,"image/svg+xml;charset=utf-8")}ss(t,s){this.YB(t,this.TB(s)+".svg","image/svg+xml;charset=utf-8")}Qs(t,s){this.ss(t,s||this.SB())}}class AA{constructor(){a(this,"rs");a(this,"Es");a(this,"ns");this.rs=new _A,this.Es=new YA,this.ns=new SA}gs(t){return{includeBackgroundRectangles:t.includeBackgroundRectangles??!0,drawMode:t.drawMode??"fill",strokeWidth:t.strokeWidth??1,backgroundColor:t.backgroundColor??[0,0,0,0],filename:t.filename||this.ns.SB()}}hs(t,s={}){const r=this.rs.UB(this.rs.bB(t.pipeline),t.grid),i=this.Es.ts(r,t.grid,t.font,this.gs(s));return this.Es.es(i)}Qs(t,s={}){this.ns.Qs(this.hs(t,s),s.filename)}}class FA extends H{cs(t,s,r,i=" "){var o;const B=[];let E=0;for(let Q=0;Q<s.rows;Q++){const g=[];for(let l=0;l<s.cols;l++){const h=4*E,c=this.GB(t.characterPixels,h),D=((o=r.characters[c])==null?void 0:o.character)||i;g.push(D),E++}B.push(g)}return B}}class zA{Cs(t,s){const r=[];for(const B of t){let E=B.join("");s.preserveTrailingSpaces||(E=E.replace(/\s+$/,"")),r.push(E)}const i=s.lineEnding==="crlf"?`\r
27
27
  `:`
28
- `;return r.join(i)}}class UA extends X{Ds(t,s){const r=this.ls(s);this.YB(t,r,"text/plain;charset=utf-8")}ls(t){let s=this.TB(t);return s===".txt"||s.length<=4?this.SB():s}}class tA{constructor(){a(this,"rs");a(this,"Es");a(this,"ns");this.rs=new FA,this.Es=new zA,this.ns=new UA}gs(t){return{preserveTrailingSpaces:t.preserveTrailingSpaces??!1,lineEnding:t.lineEnding??"lf",emptyCharacter:t.emptyCharacter??" ",filename:t.filename||this.ns.SB()}}Ps(t,s={}){const r=this.gs(s),i=this.rs.cs(this.rs.bB(t.pipeline),t.grid,t.font,r.emptyCharacter);return this.Es.Cs(i,r)}Ds(t,s={}){this.ns.Ds(this.Ps(t,s),s.filename)}}class LA extends H{us(t,s=1,r="transparent"){const i=t.canvas;if(s===1&&r==="transparent")return i;const B=document.createElement("canvas"),E=B.getContext("2d"),n=Math.round(i.width*s),Q=Math.round(i.height*s);return B.width=n,B.height=Q,r!=="transparent"&&(E.fillStyle=r,E.fillRect(0,0,n,Q)),E.imageSmoothingEnabled=!1,E.drawImage(i,0,0,i.width,i.height,0,0,n,Q),B}}class OA{Is(t,s){const r=this.ws(s.format);return s.format==="png"?t.toDataURL(r):t.toDataURL(r,s.quality)}async fs(t,s){return new Promise((r,i)=>{const B=this.ws(s.format),E=n=>{n?r(n):i(Error(`Failed to generate ${s.format.toUpperCase()} blob`))};s.format==="png"?t.toBlob(E,B):t.toBlob(E,B,s.quality)})}ws(t){switch(t){case"png":return"image/png";case"jpg":return"image/jpeg";case"webp":return"image/webp";default:throw Error("Unsupported image format: "+t)}}}const WA={png:"image/png",jpg:"image/jpeg",webp:"image/webp"},eA={png:".png",jpg:".jpg",webp:".webp"};class $A extends X{ds(t,s,r){this.ps(t,this.TB(s)+eA[r])}ps(t,s){const r=URL.createObjectURL(t);try{const i=document.createElement("a");i.href=r,i.download=s,i.style.display="none",i.rel="noopener",document.body.appendChild(i),i.click(),document.body.removeChild(i)}finally{URL.revokeObjectURL(r)}}_s(t){return t in WA&&t in eA}}class kA{constructor(){a(this,"rs");a(this,"Es");a(this,"ns");this.rs=new LA,this.Es=new OA,this.ns=new $A}gs(t){return{format:t.format??"png",quality:t.quality??1,scale:t.scale??1,backgroundColor:t.backgroundColor??"transparent",filename:t.filename||this.ns.SB()}}vs(t){if(!this.ns._s(t.format))throw Error(`Saving '${t.format}' files is not supported`);if(t.quality<0||t.quality>1)throw Error("Image quality must be between 0.0 and 1.0");if(t.scale<=0)throw Error("Scale factor must be greater than 0");t.format==="jpg"&&t.backgroundColor==="transparent"&&(t.backgroundColor="black")}async fs(t,s){if(s.scale===1&&s.backgroundColor==="transparent")return await this.Es.fs(t.canvas,s);const r=this.rs.us(t,s.scale,s.backgroundColor);return await this.Es.fs(r,s)}async ds(t,s={}){const r=this.gs(s);this.vs(r);const i=await this.fs(t,r);this.ns.ds(i,r.filename,r.format)}}const NA=o=>class extends o{bs(){this.ze.re(this.Gs)}toString(t={}){return this.bs(),new tA().Ps({pipeline:this.$s,grid:this.Ms,font:this.We},t)}saveStrings(t={}){this.bs(),new tA().Ds({pipeline:this.$s,grid:this.Ms,font:this.We},t)}toSVG(t={}){return this.bs(),new AA().hs({pipeline:this.$s,grid:this.Ms,font:this.We},t)}saveSVG(t={}){this.bs(),new AA().Qs({pipeline:this.$s,grid:this.Ms,font:this.We},t)}async saveCanvas(t={}){await new kA().ds(this.aB,t)}},HA=o=>class extends o{async loadFont(t){return this.We.rB(t).then(()=>{const s=this.We.maxGlyphDimensions;this.Ms.CB(s.width,s.height),this.$s.O(this.Ms.cols,this.Ms.rows),this.ze.Qe()})}fontSize(t){if(!S.P(typeof t=="number"&&t>0,"Font size must be a positive number greater than 0.",{method:"fontSize",providedValue:t})||this.We.fontSize===t)return;this.We.QB(t);const s=this.We.maxGlyphDimensions;this.Ms.CB(s.width,s.height),this.$s.O(this.Ms.cols,this.Ms.rows),this.ze.Qe()}},XA=o=>class extends o{get frameCount(){return this.Ys.frameCount}set frameCount(t){this.Ys.frameCount=t}frameRate(t){return t===void 0?this.Ys.currentFrameRate:this.Ys.frameRate(t,()=>this.zs())}noLoop(){this.Ys.pause()}loop(){this.Ys.resume(()=>this.zs())}redraw(t=1){if(S.P(typeof t=="number"&&t>0&&Number.isInteger(t),"Redraw count must be a positive integer.",{method:"redraw",providedValue:t}))for(let s=0;s<t;s++)this.zs()}isLooping(){return this.Ys.isLooping}};class JA{constructor(){a(this,"ze");a(this,"We");a(this,"aB");a(this,"Ms");a(this,"Ys");a(this,"Gs");a(this,"$s");a(this,"Rs")}zs(){}}class sA extends function(s,...r){return r.reduce((i,B)=>B(i),s)}(JA,MA,NA,HA,XA){constructor(s={}){super();a(this,"Ts",!1);a(this,"Ss",()=>{});a(this,"Fs",()=>{});a(this,"Os",()=>{});a(this,"Us");this.aB=new q(s),this.ze=new fA(this.aB.uB()),this.We=new Z(this.ze,s.fontSize??16),this.Ys=new TA(s.frameRate??60),this.Gs=this.ze.Jt(N,`#version 300 es
29
- precision highp float;in vec2 v_uv;in vec3 v_character;in vec4 v_primaryColor;in vec4 v_secondaryColor;in vec2 v_rotation;in vec3 v_transform;layout(location=0)out vec4 o_character;layout(location=1)out vec4 o_primaryColor;layout(location=2)out vec4 o_secondaryColor;layout(location=3)out vec4 o_rotation;layout(location=4)out vec4 o_transform;void main(){o_character=vec4(v_character,1.0);o_primaryColor=v_primaryColor;o_secondaryColor=v_secondaryColor;o_rotation=vec4(v_rotation,0.0,1.0);o_transform=vec4(v_transform,1.0);}`),this.Rs=this.ze.Jt("attribute vec2 a_position;attribute vec2 a_texCoord;varying vec2 v_uv;void main(){v_uv=a_texCoord;gl_Position=vec4(a_position,0.0,1.0);}","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 vec2 u_gridCellDimensions;uniform vec2 u_gridPixelDimensions;uniform vec2 u_gridOffsetPixels;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_gridOffsetPixels)/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);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.Ls(s)}async Ls(s){await this.We.BB(s.fontSource);const r=this.We.maxGlyphDimensions;this.Ms=new K(this.aB.canvas,r.width,r.height),this.$s=this.ze.Be(this.Ms.cols,this.Ms.rows,5),this.ks(),this.Ss(),this.Ys.start(()=>this.zs())}ks(){this.Us=()=>{this.Os()},window.addEventListener("resize",this.Us)}zs(){if(this.Ys.measureFrameRate(),this.Ys.incrementFrame(),this.Ts)return;this.$s.k(),this.ze.Wt(this.Gs),this.Fs(),this.ze.re(this.Gs),this.$s.H();const s=this.ze.state.canvasBackgroundColor;this.ze.ot(s[0],s[1],s[2],s[3]),this.ze.Wt(this.Rs),this.Rs.eA({u_characterTexture:this.We.fontFramebuffer,u_charsetDimensions:[this.We.textureColumns,this.We.textureRows],u_asciiCharacterTexture:this.$s.textures[0],u_primaryColorTexture:this.$s.textures[1],u_secondaryColorTexture:this.$s.textures[2],u_transformTexture:this.$s.textures[4],u_rotationTexture:this.$s.textures[3],u_gridCellDimensions:[this.Ms.cols,this.Ms.rows],u_gridPixelDimensions:[this.Ms.width,this.Ms.height],u_gridOffsetPixels:[this.Ms.offsetX,this.Ms.offsetY],u_aspectRatio:this.Ms.width/this.Ms.height}),this.ze.Xt(this.Ms.offsetX,this.Ms.offsetY,this.Ms.width,this.Ms.height)}setup(s){this.Ss=s}draw(s){this.Fs=s}windowResized(s){this.Os=s}resizeCanvas(s,r){this.aB.O(s,r),this.Ms.fA(),this.$s.O(this.Ms.cols,this.Ms.rows),this.ze.Qe(),this.zs()}destroy(){this.Ts||(this.Ys.stop(),window.removeEventListener("resize",this.Us),this.We.W(),this.ze.W(),this.Ts=!0)}get grid(){return this.Ms}get font(){return this.We}get width(){return this.aB.width}get height(){return this.aB.height}get canvas(){return this.aB.canvas}get isDisposed(){return this.Ts}get drawFramebuffer(){return this.$s}}class O{constructor(){throw new I("Textmode is a static class and cannot be instantiated.")}static create(t={}){return new sA(t)}static setErrorLevel(t){S.u(t)}static get version(){return"0.2.0-beta.5"}}const VA=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),jA=O.create,ZA=O.setErrorLevel,KA=O.version;w.TextmodeCanvas=q,w.TextmodeErrorLevel=T,w.TextmodeFont=Z,w.TextmodeGrid=K,w.Textmodifier=sA,w.create=jA,w.export=VA,w.setErrorLevel=ZA,w.textmode=O,w.version=KA,Object.defineProperty(w,Symbol.toStringTag,{value:"Module"})},typeof exports=="object"&&typeof module<"u"?e(exports):typeof define=="function"&&define.amd?define(["exports"],e):e((A=typeof globalThis<"u"?globalThis:A||self).textmode={});
28
+ `;return r.join(i)}}class UA extends X{Ds(t,s){const r=this.ls(s);this.YB(t,r,"text/plain;charset=utf-8")}ls(t){let s=this.TB(t);return s===".txt"||s.length<=4?this.SB():s}}class tA{constructor(){a(this,"rs");a(this,"Es");a(this,"ns");this.rs=new FA,this.Es=new zA,this.ns=new UA}gs(t){return{preserveTrailingSpaces:t.preserveTrailingSpaces??!1,lineEnding:t.lineEnding??"lf",emptyCharacter:t.emptyCharacter??" ",filename:t.filename||this.ns.SB()}}Ps(t,s={}){const r=this.gs(s),i=this.rs.cs(this.rs.bB(t.pipeline),t.grid,t.font,r.emptyCharacter);return this.Es.Cs(i,r)}Ds(t,s={}){this.ns.Ds(this.Ps(t,s),s.filename)}}class LA extends H{us(t,s=1,r="transparent"){const i=t.canvas;if(s===1&&r==="transparent")return i;const B=document.createElement("canvas"),E=B.getContext("2d"),o=Math.round(i.width*s),Q=Math.round(i.height*s);return B.width=o,B.height=Q,r!=="transparent"&&(E.fillStyle=r,E.fillRect(0,0,o,Q)),E.imageSmoothingEnabled=!1,E.drawImage(i,0,0,i.width,i.height,0,0,o,Q),B}}class OA{Is(t,s){const r=this.ws(s.format);return s.format==="png"?t.toDataURL(r):t.toDataURL(r,s.quality)}async fs(t,s){return new Promise((r,i)=>{const B=this.ws(s.format),E=o=>{o?r(o):i(Error(`Failed to generate ${s.format.toUpperCase()} blob`))};s.format==="png"?t.toBlob(E,B):t.toBlob(E,B,s.quality)})}ws(t){switch(t){case"png":return"image/png";case"jpg":return"image/jpeg";case"webp":return"image/webp";default:throw Error("Unsupported image format: "+t)}}}const WA={png:"image/png",jpg:"image/jpeg",webp:"image/webp"},eA={png:".png",jpg:".jpg",webp:".webp"};class $A extends X{ds(t,s,r){this.ps(t,this.TB(s)+eA[r])}ps(t,s){const r=URL.createObjectURL(t);try{const i=document.createElement("a");i.href=r,i.download=s,i.style.display="none",i.rel="noopener",document.body.appendChild(i),i.click(),document.body.removeChild(i)}finally{URL.revokeObjectURL(r)}}_s(t){return t in WA&&t in eA}}class kA{constructor(){a(this,"rs");a(this,"Es");a(this,"ns");this.rs=new LA,this.Es=new OA,this.ns=new $A}gs(t){return{format:t.format??"png",quality:t.quality??1,scale:t.scale??1,backgroundColor:t.backgroundColor??"transparent",filename:t.filename||this.ns.SB()}}vs(t){if(!this.ns._s(t.format))throw Error(`Saving '${t.format}' files is not supported`);if(t.quality<0||t.quality>1)throw Error("Image quality must be between 0.0 and 1.0");if(t.scale<=0)throw Error("Scale factor must be greater than 0");t.format==="jpg"&&t.backgroundColor==="transparent"&&(t.backgroundColor="black")}async fs(t,s){if(s.scale===1&&s.backgroundColor==="transparent")return await this.Es.fs(t.canvas,s);const r=this.rs.us(t,s.scale,s.backgroundColor);return await this.Es.fs(r,s)}async ds(t,s={}){const r=this.gs(s);this.vs(r);const i=await this.fs(t,r);this.ns.ds(i,r.filename,r.format)}}const NA=n=>class extends n{bs(){this.ze.re(this.Gs)}toString(t={}){return this.bs(),new tA().Ps({pipeline:this.$s,grid:this.Ms,font:this.We},t)}saveStrings(t={}){this.bs(),new tA().Ds({pipeline:this.$s,grid:this.Ms,font:this.We},t)}toSVG(t={}){return this.bs(),new AA().hs({pipeline:this.$s,grid:this.Ms,font:this.We},t)}saveSVG(t={}){this.bs(),new AA().Qs({pipeline:this.$s,grid:this.Ms,font:this.We},t)}async saveCanvas(t={}){await new kA().ds(this.aB,t)}},HA=n=>class extends n{async loadFont(t){return this.We.rB(t).then(()=>{const s=this.We.maxGlyphDimensions;this.Ms.CB(s.width,s.height),this.$s.O(this.Ms.cols,this.Ms.rows),this.ze.Qe()})}fontSize(t){if(!S.P(typeof t=="number"&&t>0,"Font size must be a positive number greater than 0.",{method:"fontSize",providedValue:t})||this.We.fontSize===t)return;this.We.QB(t);const s=this.We.maxGlyphDimensions;this.Ms.CB(s.width,s.height),this.$s.O(this.Ms.cols,this.Ms.rows),this.ze.Qe()}},XA=n=>class extends n{get frameCount(){return this.Ys.frameCount}set frameCount(t){this.Ys.frameCount=t}frameRate(t){return t===void 0?this.Ys.currentFrameRate:this.Ys.frameRate(t,()=>this.zs())}noLoop(){this.Ys.pause()}loop(){this.Ys.resume(()=>this.zs())}redraw(t=1){if(S.P(typeof t=="number"&&t>0&&Number.isInteger(t),"Redraw count must be a positive integer.",{method:"redraw",providedValue:t}))for(let s=0;s<t;s++)this.zs()}isLooping(){return this.Ys.isLooping}};class JA{constructor(){a(this,"ze");a(this,"We");a(this,"aB");a(this,"Ms");a(this,"Ys");a(this,"Gs");a(this,"$s");a(this,"Rs")}zs(){}}class sA extends function(s,...r){return r.reduce((i,B)=>B(i),s)}(JA,MA,NA,HA,XA){constructor(s={}){super();a(this,"Ts",!1);a(this,"Ss",()=>{});a(this,"Fs",()=>{});a(this,"Os",()=>{});a(this,"Us");this.aB=new q(s),this.ze=new fA(this.aB.uB()),this.We=new Z(this.ze,s.fontSize??16),this.Ys=new TA(s.frameRate??60),this.Gs=this.ze.Jt(N,`#version 300 es
29
+ precision highp float;in vec2 v_uv;in vec3 v_character;in vec4 v_primaryColor;in vec4 v_secondaryColor;in vec2 v_rotation;in vec3 v_transform;layout(location=0)out vec4 o_character;layout(location=1)out vec4 o_primaryColor;layout(location=2)out vec4 o_secondaryColor;layout(location=3)out vec4 o_rotation;layout(location=4)out vec4 o_transform;void main(){o_character=vec4(v_character,1.0);o_primaryColor=v_primaryColor;o_secondaryColor=v_secondaryColor;o_rotation=vec4(v_rotation,0.0,1.0);o_transform=vec4(v_transform,1.0);}`),this.Rs=this.ze.Jt("attribute vec2 a_position;attribute vec2 a_texCoord;varying vec2 v_uv;void main(){v_uv=a_texCoord;gl_Position=vec4(a_position,0.0,1.0);}","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 vec2 u_gridCellDimensions;uniform vec2 u_gridPixelDimensions;uniform vec2 u_gridOffsetPixels;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_gridOffsetPixels)/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);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.Ls(s)}async Ls(s){await this.We.BB(s.fontSource);const r=this.We.maxGlyphDimensions;this.Ms=new K(this.aB.canvas,r.width,r.height),this.$s=this.ze.Be(this.Ms.cols,this.Ms.rows,5),this.ks(),this.Ss(),this.Ys.start(()=>this.zs())}ks(){this.Us=()=>{this.Os()},window.addEventListener("resize",this.Us)}zs(){if(this.Ys.measureFrameRate(),this.Ys.incrementFrame(),this.Ts)return;this.$s.k(),this.ze.Wt(this.Gs),this.Fs(),this.ze.re(this.Gs),this.$s.H();const s=this.ze.state.canvasBackgroundColor;this.ze.ot(s[0],s[1],s[2],s[3]),this.ze.Wt(this.Rs),this.Rs.eA({u_characterTexture:this.We.fontFramebuffer,u_charsetDimensions:[this.We.textureColumns,this.We.textureRows],u_asciiCharacterTexture:this.$s.textures[0],u_primaryColorTexture:this.$s.textures[1],u_secondaryColorTexture:this.$s.textures[2],u_transformTexture:this.$s.textures[4],u_rotationTexture:this.$s.textures[3],u_gridCellDimensions:[this.Ms.cols,this.Ms.rows],u_gridPixelDimensions:[this.Ms.width,this.Ms.height],u_gridOffsetPixels:[this.Ms.offsetX,this.Ms.offsetY],u_aspectRatio:this.Ms.width/this.Ms.height}),this.ze.Xt(this.Ms.offsetX,this.Ms.offsetY,this.Ms.width,this.Ms.height)}setup(s){this.Ss=s}draw(s){this.Fs=s}windowResized(s){this.Os=s}resizeCanvas(s,r){this.aB.O(s,r),this.Ms.fA(),this.$s.O(this.Ms.cols,this.Ms.rows),this.ze.Qe(),this.zs()}destroy(){this.Ts||(this.Ys.stop(),window.removeEventListener("resize",this.Us),this.We.W(),this.ze.W(),this.Ts=!0)}get grid(){return this.Ms}get font(){return this.We}get width(){return this.aB.width}get height(){return this.aB.height}get canvas(){return this.aB.canvas}get isDisposed(){return this.Ts}get drawFramebuffer(){return this.$s}}class O{constructor(){}static create(t={}){return new sA(t)}static setErrorLevel(t){S.u(t)}static get version(){return"0.2.0"}}const VA=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),jA=O.create,ZA=O.setErrorLevel,KA=O.version;w.TextmodeCanvas=q,w.TextmodeErrorLevel=T,w.TextmodeFont=Z,w.TextmodeGrid=K,w.Textmodifier=sA,w.create=jA,w.export=VA,w.setErrorLevel=ZA,w.textmode=O,w.version=KA,Object.defineProperty(w,Symbol.toStringTag,{value:"Module"})},typeof exports=="object"&&typeof module<"u"?e(exports):typeof define=="function"&&define.amd?define(["exports"],e):e((A=typeof globalThis<"u"?globalThis:A||self).textmode={});