textmode.js 0.2.0-beta.1 → 0.2.0-beta.2

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,25 +4,25 @@ var qA=Object.defineProperty;var At=(d,I,R)=>I in d?qA(d,I,{enumerable:!0,config
4
4
  - ${i}: ${I.i(s)}`}return r+=`
5
5
 
6
6
  `,r+="↓".repeat(24)+`
7
- `,r}static i(e){if(e===null)return"null";if(e===void 0)return"undefined";if(typeof e=="string")return`"${e}"`;if(typeof e=="number"||typeof e=="boolean")return e+"";if(Array.isArray(e))return e.length===0?"[]":e.length<=5?`[${e.map(B=>I.i(B)).join(", ")}]`:`[${e.slice(0,3).map(B=>I.i(B)).join(", ")}, ... +${e.length-3} more]`;if(typeof e=="object"){const B=Object.keys(e);return B.length===0?"{}":B.length<=3?`{ ${B.map(r=>`${r}: ${I.i(e[r])}`).join(", ")} }`:`{ ${B.slice(0,2).map(r=>`${r}: ${I.i(e[r])}`).join(", ")}, ... +${B.length-2} more }`}return e+""}}var R=(n=>(n[n.SILENT=0]="SILENT",n[n.WARNING=1]="WARNING",n[n.ERROR=2]="ERROR",n[n.THROW=3]="THROW",n))(R||{});const _=class _{constructor(){g(this,"h",{globalLevel:3})}static C(){return _.o||(_.o=new _),_.o}D(e,B){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.h.globalLevel){case 0:return!1;case 1:return console.group(r,i),console.warn(I.A(e,B)),console.groupEnd(),!1;case 2:return console.group(r,i),console.error(I.A(e,B)),console.groupEnd(),!1;default:throw new I(e,B)}}l(e,B,r){return!!e||(this.D(B,r),!1)}P(e){this.h.globalLevel=e}};g(_,"o",null);let z=_;const M=z.C(),k=new WeakMap;function S(n,e){k.set(n,e)}function U(n){return k.get(n)}class J{constructor(e,B,r=B,i=1,s={}){g(this,"I");g(this,"u");g(this,"h");g(this,"p",null);g(this,"m");g(this,"_");g(this,"v",[]);g(this,"G");g(this,"$",null);g(this,"M",[]);this.I=B,this.u=r,this.h={filter:"nearest",wrap:"clamp",format:"rgba",type:"unsigned_byte",...s},this.m=e,this.G=Math.min(Math.max(1,i),8);const E=e.getParameter(e.MAX_DRAW_BUFFERS),Q=e.getParameter(e.MAX_COLOR_ATTACHMENTS);this.G=Math.min(this.G,E,Q),this._=e.createFramebuffer(),this.Y(),this.F(),this.M=Array(this.G).fill(null)}Y(){const e=this.m,B=this.h.filter==="linear"?e.LINEAR:e.NEAREST,r=this.h.wrap==="repeat"?e.REPEAT:e.CLAMP_TO_EDGE,i=this.h.type==="float"?e.FLOAT:e.UNSIGNED_BYTE;for(let s=0;s<this.G;s++){const E=e.createTexture();e.bindTexture(e.TEXTURE_2D,E),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,B),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,B),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,r),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,r),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,this.I,this.u,0,e.RGBA,i,null),this.v.push(E)}e.bindTexture(e.TEXTURE_2D,null)}F(){const e=this.m;if(e.bindFramebuffer(e.FRAMEBUFFER,this._),this.G===1)e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,this.v[0],0);else{const r=[];for(let i=0;i<this.G;i++){const s=e.COLOR_ATTACHMENT0+i;e.framebufferTexture2D(e.FRAMEBUFFER,s,e.TEXTURE_2D,this.v[i],0),r.push(s)}e.drawBuffers(r)}const B=e.checkFramebufferStatus(e.FRAMEBUFFER);B!==e.FRAMEBUFFER_COMPLETE&&console.error("GLFramebuffer is not complete:",B),e.bindFramebuffer(e.FRAMEBUFFER,null)}R(e){const B=this.m;B.bindTexture(B.TEXTURE_2D,this.v[0]),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,1),B.texImage2D(B.TEXTURE_2D,0,B.RGBA,B.RGBA,B.UNSIGNED_BYTE,e),B.bindTexture(B.TEXTURE_2D,null)}S(e,B){this.I=e,this.u=B,this.p=null,this.M=Array(this.G).fill(null);const r=this.m,i=this.h.type==="float"?r.FLOAT:r.UNSIGNED_BYTE;for(const s of this.v)r.bindTexture(r.TEXTURE_2D,s),r.texImage2D(r.TEXTURE_2D,0,r.RGBA,this.I,this.u,0,r.RGBA,i,null);r.bindTexture(r.TEXTURE_2D,null)}O(e){const B=this.m;if(e<0||e>=this.G)throw Error(`GLFramebuffer: attachment index ${e} out of range (count=${this.G})`);const r=this.M[e];if(r)return r;const i=this.I,s=this.u,E=new Uint8Array(i*s*4),Q=B.getParameter(B.READ_FRAMEBUFFER_BINDING);B.bindFramebuffer(B.READ_FRAMEBUFFER,this._),B.readBuffer(B.COLOR_ATTACHMENT0+e),B.readPixels(0,0,i,s,B.RGBA,B.UNSIGNED_BYTE,E),B.bindFramebuffer(B.READ_FRAMEBUFFER,Q);const o=4*i,a=new Uint8Array(E.length);for(let h=0;h<s;h++){const c=(s-1-h)*o,l=h*o;a.set(E.subarray(c,c+o),l)}return this.M[e]=a,a}L(){for(let e=0;e<this.G;e++)this.O(e)}U(){const e=this.m;this.$={framebuffer:e.getParameter(e.FRAMEBUFFER_BINDING),viewport:e.getParameter(e.VIEWPORT)},e.bindFramebuffer(e.FRAMEBUFFER,this._),this.M=Array(this.G).fill(null);for(let B=0;B<this.G;B++)e.clearBufferfv(e.COLOR,B,new Float32Array([0,0,0,0]));e.viewport(0,0,this.I,this.u),S(e,[0,0,this.I,this.u])}k(){if(!this.$)return;const e=this.m;e.bindFramebuffer(e.FRAMEBUFFER,this.$.framebuffer),e.viewport(...this.$.viewport),S(e,this.$.viewport),this.$=null}W(){const e=this.m;this._&&e.deleteFramebuffer(this._);for(const B of this.v)e.deleteTexture(B);this.v=[],this.M=[]}get width(){return this.I}get height(){return this.u}get pixels(){return this.p}get options(){return{...this.h}}get framebuffer(){return this._}get texture(){return this.v[0]}get textures(){return[...this.v]}get attachmentCount(){return this.G}getAttachmentPixels(e){return this.M[e]??null}}class tA{constructor(e,B,r){g(this,"m");g(this,"H");g(this,"J",new Map);g(this,"V",new Map);g(this,"K",0);g(this,"j");this.m=e,this.H=this.Z(B,r),this.j=e.getParameter(e.MAX_TEXTURE_IMAGE_UNITS),this.N()}N(){const e=this.m.getProgramParameter(this.H,this.m.ACTIVE_UNIFORMS);for(let B=0;B<e;B++){const r=this.m.getActiveUniform(this.H,B);if(r){const i=this.m.getUniformLocation(this.H,r.name);i&&(this.J.set(r.name,i),this.V.set(r.name,r.type))}}}Z(e,B){const r=this.X(this.m.VERTEX_SHADER,e),i=this.X(this.m.FRAGMENT_SHADER,B),s=this.m.createProgram();if(this.m.attachShader(s,r),this.m.attachShader(s,i),this.m.linkProgram(s),!this.m.getProgramParameter(s,this.m.LINK_STATUS)){const E=this.m.getProgramInfoLog(s);throw Error("Shader program link error: "+E)}return this.m.deleteShader(r),this.m.deleteShader(i),s}X(e,B){const r=this.m.createShader(e);if(this.m.shaderSource(r,B),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}q(){this.m.useProgram(this.H),this.AA()}AA(){this.K=0}tA(e){for(const[B,r]of Object.entries(e))this.eA(B,r)}eA(e,B){const r=this.J.get(e);if(r)if(typeof B=="number")this.m.uniform1f(r,B);else if(typeof B=="boolean")this.m.uniform1i(r,B?1:0);else if(Array.isArray(B))switch(B.length){case 2:this.m.uniform2f(r,B[0],B[1]);break;case 3:this.m.uniform3f(r,B[0],B[1],B[2]);break;case 4:this.m.uniform4f(r,B[0],B[1],B[2],B[3]);break;default:console.warn(`Unsupported array length ${B.length} for uniform '${e}'`)}else if(B instanceof WebGLTexture){const i=this.BA();this.m.uniform1i(r,i),this.m.activeTexture(this.m.TEXTURE0+i),this.m.bindTexture(this.m.TEXTURE_2D,B)}else if(B instanceof J){const i=this.BA();this.m.uniform1i(r,i),this.m.activeTexture(this.m.TEXTURE0+i),this.m.bindTexture(this.m.TEXTURE_2D,B.texture)}else if(typeof B=="object"&&"texture"in B){const i=this.BA();this.m.uniform1i(r,i),this.m.activeTexture(this.m.TEXTURE0+i),this.m.bindTexture(this.m.TEXTURE_2D,B.texture)}else console.warn(`Unsupported uniform type for '${e}':`,typeof B)}BA(){return this.K>=this.j&&console.warn(`Exceeded maximum texture units (${this.j}). Texture may not render correctly.`),this.K++}get QA(){return this.H}W(){this.m.deleteProgram(this.H)}}class eA{constructor(){g(this,"sA",1);g(this,"iA",0);g(this,"EA",[0,0,0]);g(this,"rA",[1,1,1,1]);g(this,"nA",[0,0,0,1]);g(this,"gA",!1);g(this,"oA",!1);g(this,"aA",!1);g(this,"hA",[0,0]);g(this,"cA",[])}CA(){this.cA.push({lineWeight:this.sA,rotation:this.iA,charRotation:[...this.hA],flipHorizontally:this.gA,flipVertically:this.oA,invert:this.aA,character:[...this.EA],charColor:[...this.rA],cellColor:[...this.nA]})}DA(){const e=this.cA.pop();e?(this.sA=e.lineWeight,this.iA=e.rotation,this.hA=e.charRotation,this.gA=e.flipHorizontally,this.oA=e.flipVertically,this.aA=e.invert,this.EA=e.character,this.rA=e.charColor,this.nA=e.cellColor):console.warn("pop() called without matching push()")}lA(){this.cA=[],this.iA=0}PA(e){e.lineWeight=this.sA,e.rotation=this.iA,e.character[0]=this.EA[0],e.character[1]=this.EA[1],e.character[2]=this.EA[2],e.charColor[0]=this.rA[0],e.charColor[1]=this.rA[1],e.charColor[2]=this.rA[2],e.charColor[3]=this.rA[3],e.bgColor[0]=this.nA[0],e.bgColor[1]=this.nA[1],e.bgColor[2]=this.nA[2],e.bgColor[3]=this.nA[3],e.flipHorizontally=this.gA,e.flipVertically=this.oA,e.invert=this.aA,e.charRotation[0]=this.hA[0],e.charRotation[1]=this.hA[1]}get lineWeight(){return this.sA}get rotation(){return this.iA}get character(){return this.EA}get charColor(){return this.rA}get bgColor(){return this.nA}get flipHorizontally(){return this.gA}get flipVertically(){return this.oA}get invert(){return this.aA}get charRotation(){return this.hA}IA(e){this.sA=Math.abs(e)}uA(e){this.iA=e}wA(e){this.EA=e}fA(e,B,r,i=255){this.rA=[e/255,B/255,r/255,i/255]}dA(e,B,r,i=255){this.nA=[e/255,B/255,r/255,i/255]}pA(e){this.gA=e}mA(e){this.oA=e}_A(e){this.aA=e}vA(e){const B=255*e/360,r=Math.floor(B)/255,i=Math.round(B-Math.floor(B));this.hA=[r,i]}}var u=(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))(u||{});class BA{constructor(e){g(this,"m");g(this,"xA",new Map);this.m=e}yA(e,B,r,i){const s=this.m;let E=this.xA.get(e);E||(E=new Map,this.xA.set(e,E));let Q=E.get(B)||null;if(!Q){Q=s.createVertexArray(),E.set(B,Q),s.bindVertexArray(Q),s.bindBuffer(s.ARRAY_BUFFER,i);const o=s.getAttribLocation(e,"a_position");o!==-1&&(s.enableVertexAttribArray(o),s.vertexAttribPointer(o,r.attributes.position.size,s.FLOAT,!1,r.stride,r.attributes.position.offset),s.vertexAttribDivisor(o,0));const a=s.getAttribLocation(e,"a_texCoord");a!==-1&&(s.enableVertexAttribArray(a),s.vertexAttribPointer(a,r.attributes.texCoord.size,s.FLOAT,!1,r.stride,r.attributes.texCoord.offset),s.vertexAttribDivisor(a,0))}s.bindVertexArray(Q)}bA(){this.m.bindVertexArray(null)}W(){const e=this.m;for(const[,B]of this.xA)for(const[,r]of B)r&&e.deleteVertexArray(r);this.xA.clear()}}class rA{constructor(e){g(this,"GA");g(this,"m");this.m=e,this.GA=new BA(e)}$A(e,B,r){const{shader:i}=e,s=U(this.m)||this.m.getParameter(this.m.VIEWPORT);i.tA({u_aspectRatio:s[2]/s[3],u_viewportSize:[s[2],s[3]]});const E=a=>{if(!a||!a.MA())return;const h=a.unitGeometry,c=a.unitBuffer;try{this.GA.yA(i.QA,a.type+"",h,c),a.batch.YA(i),a.batch.TA(h.primitiveType,h.vertexCount)}finally{a.batch.zA(i),this.GA.bA(),a.FA()}};let Q=null,o=null;for(const a of B){Q!==null&&a.type!==Q&&(E(o),Q=null,o=null);let h=o;h&&a.type===Q||(h=r.get(a.type)||null,o=h,Q=a.type),h&&h.RA(a.params,a.state)}E(o)}}class iA{constructor(){g(this,"SA",[]);g(this,"OA",1);g(this,"LA",0)}UA(e){if(this.LA>=this.SA.length){const r={id:this.OA++,type:e,params:{},state:{lineWeight:1,rotation: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.SA.push(r)}const B=this.SA[this.LA];switch(B.id=this.OA++,B.type=e,e){case u.RECTANGLE:case u.ELLIPSE:B.params&&"width"in B.params||(B.params={x:0,y:0,width:0,height:0});break;case u.ARC:B.params&&"start"in B.params||(B.params={x:0,y:0,width:0,height:0,start:0,stop:0});break;case u.LINE:B.params&&"x2"in B.params||(B.params={x1:0,y1:0,x2:0,y2:0,thickness:void 0});break;case u.TRIANGLE:B.params&&"x3"in B.params||(B.params={x1:0,y1:0,x2:0,y2:0,x3:0,y3:0});break;case u.BEZIER_CURVE:B.params&&"cp2y"in B.params||(B.params={x1:0,y1:0,cp1x:0,cp1y:0,cp2x:0,cp2y:0,x2:0,y2:0,thickness:void 0});break;default:B.params||(B.params={})}return this.LA++,B}kA(e,B,r,i,s){const E=this.UA(u.RECTANGLE);return E.params.x=e,E.params.y=B,E.params.width=r,E.params.height=i,s.PA(E.state),E.id}WA(e,B,r,i,s,E){const Q=this.UA(u.LINE);return Q.params.x1=e,Q.params.y1=B,Q.params.x2=r,Q.params.y2=i,Q.params.thickness=s,E.PA(Q.state),Q.id}HA(e,B,r,i,s){const E=this.UA(u.ELLIPSE);return E.params.x=e,E.params.y=B,E.params.width=r,E.params.height=i,s.PA(E.state),E.id}JA(e,B,r,i,s,E,Q){const o=this.UA(u.ARC);return o.params.x=e,o.params.y=B,o.params.width=r,o.params.height=i,o.params.start=s,o.params.stop=E,Q.PA(o.state),o.id}VA(e,B,r,i,s,E,Q){const o=this.UA(u.TRIANGLE);return o.params.x1=e,o.params.y1=B,o.params.x2=r,o.params.y2=i,o.params.x3=s,o.params.y3=E,Q.PA(o.state),o.id}KA(e,B,r,i,s,E,Q,o,a,h){const c=this.UA(u.BEZIER_CURVE);return c.params.x1=e,c.params.y1=B,c.params.cp1x=r,c.params.cp1y=i,c.params.cp2x=s,c.params.cp2y=E,c.params.x2=Q,c.params.y2=o,c.params.thickness=a,h.PA(c.state),c.id}get length(){return this.LA}get isEmpty(){return this.LA===0}jA(){this.LA=0}[Symbol.iterator](){let e=0;const B=this.LA,r=this.SA;return{next:()=>e<B?{value:r[e++],done:!1}:{value:void 0,done:!0}}}}const b=class b{static ZA(e,B,r=0){var E,Q,o,a,h,c,l,D,C,P;const i=B||new Float32Array(b.FLOATS_PER_INSTANCE);let s=r;return i[s++]=e.position[0],i[s++]=e.position[1],i[s++]=e.size[0],i[s++]=e.size[1],i[s++]=e.character[0],i[s++]=e.character[1],i[s++]=e.character[2],i[s++]=e.primaryColor[0],i[s++]=e.primaryColor[1],i[s++]=e.primaryColor[2],i[s++]=e.primaryColor[3],i[s++]=e.secondaryColor[0],i[s++]=e.secondaryColor[1],i[s++]=e.secondaryColor[2],i[s++]=e.secondaryColor[3],i[s++]=e.rotation[0],i[s++]=e.rotation[1],i[s++]=e.transform[0],i[s++]=e.transform[1],i[s++]=e.transform[2],i[s++]=e.globalRotation,i[s++]=e.rotationCenter[0],i[s++]=e.rotationCenter[1],i[s++]=((E=e.arcAngles)==null?void 0:E[0])||0,i[s++]=((Q=e.arcAngles)==null?void 0:Q[1])||0,i[s++]=((o=e.bezierControlPoint1)==null?void 0:o[0])||0,i[s++]=((a=e.bezierControlPoint1)==null?void 0:a[1])||0,i[s++]=((h=e.bezierControlPoint2)==null?void 0:h[0])||0,i[s++]=((c=e.bezierControlPoint2)==null?void 0:c[1])||0,i[s++]=((l=e.bezierStartPoint)==null?void 0:l[0])||0,i[s++]=((D=e.bezierStartPoint)==null?void 0:D[1])||0,i[s++]=((C=e.bezierEndPoint)==null?void 0:C[0])||0,i[s++]=((P=e.bezierEndPoint)==null?void 0:P[1])||0,i}static NA(e){const B=e.length*b.FLOATS_PER_INSTANCE,r=new Float32Array(B);for(let i=0;i<e.length;i++){const s=i*b.FLOATS_PER_INSTANCE;b.ZA(e[i],r,s)}return r}};g(b,"BYTES_PER_INSTANCE",132),g(b,"FLOATS_PER_INSTANCE",33);let T=b;const f=class f{};g(f,"STRIDE",T.BYTES_PER_INSTANCE),g(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:1,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:84,divisor:1},a_instanceArcAngles:{location:-1,size:2,type:WebGL2RenderingContext.FLOAT,normalized:!1,stride:f.STRIDE,offset:92,divisor:1},a_instanceBezierCP1:{location:-1,size:2,type:WebGL2RenderingContext.FLOAT,normalized:!1,stride:f.STRIDE,offset:100,divisor:1},a_instanceBezierCP2:{location:-1,size:2,type:WebGL2RenderingContext.FLOAT,normalized:!1,stride:f.STRIDE,offset:108,divisor:1},a_instanceBezierStart:{location:-1,size:2,type:WebGL2RenderingContext.FLOAT,normalized:!1,stride:f.STRIDE,offset:116,divisor:1},a_instanceBezierEnd:{location:-1,size:2,type:WebGL2RenderingContext.FLOAT,normalized:!1,stride:f.STRIDE,offset:124,divisor:1}});let Y=f;class sA{constructor(e,B=1e3,r=1.5){g(this,"m");g(this,"XA",[]);g(this,"qA");g(this,"At");g(this,"tt",null);g(this,"et",!0);g(this,"Bt",0);g(this,"Qt",new Map);g(this,"st",null);this.m=e,this.qA=B,this.At=r,this.it()}RA(e){const B=this.XA.length;return this.XA.push(e),this.et=!0,B}get count(){return this.XA.length}get isEmpty(){return this.XA.length===0}clear(){this.XA.length=0,this.et=!0}Et(e){if(e<=this.qA)return;const B=Math.ceil(e*this.At);this.qA=B,this.it(),console.log(`InstanceBatch: Grew buffer capacity to ${B} instances`)}it(){const e=this.m;if(this.tt&&e.deleteBuffer(this.tt),this.tt=e.createBuffer(),!this.tt)throw Error("Failed to create instance buffer");const B=this.qA*T.BYTES_PER_INSTANCE;e.bindBuffer(e.ARRAY_BUFFER,this.tt),e.bufferData(e.ARRAY_BUFFER,B,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,null),this.et=!0,this.Bt=0}rt(){if(!this.et||this.XA.length===0)return;const e=this.m,B=this.XA.length;this.Et(B),(!this.st||this.st.length<B*T.FLOATS_PER_INSTANCE)&&(this.st=new Float32Array(B*T.FLOATS_PER_INSTANCE));const r=T.NA(this.XA);e.bindBuffer(e.ARRAY_BUFFER,this.tt),B<=this.Bt?e.bufferSubData(e.ARRAY_BUFFER,0,r):e.bufferData(e.ARRAY_BUFFER,r,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,null),this.et=!1,this.Bt=B}nt(e){let B=this.Qt.get(e);if(!B){B=new Map;const r=this.m;for(const i in Y.ATTRIBUTES){const s=r.getAttribLocation(e,i);s!==-1&&B.set(i,s)}this.Qt.set(e,B)}return B}YA(e){if(!this.tt||this.XA.length===0)return;const B=this.m,r=e.QA;if(!r)return void console.warn("InstanceBatch: Cannot bind attributes - invalid shader program");this.rt();const i=this.nt(r);B.bindBuffer(B.ARRAY_BUFFER,this.tt);for(const[s,E]of i){const Q=Y.ATTRIBUTES[s];Q&&(B.enableVertexAttribArray(E),B.vertexAttribPointer(E,Q.size,Q.type,Q.normalized,Q.stride,Q.offset),B.vertexAttribDivisor(E,Q.divisor))}}zA(e){const B=this.m,r=this.nt(e.QA);for(const[,i]of r)B.disableVertexAttribArray(i),B.vertexAttribDivisor(i,0)}TA(e,B){this.XA.length!==0&&this.m.drawArraysInstanced(e,0,B,this.XA.length)}W(){const e=this.m;this.tt&&(e.deleteBuffer(this.tt),this.tt=null),this.XA.length=0,this.Qt.clear(),this.st=null}}class G{constructor(e,B,r,i){g(this,"m");g(this,"gt");g(this,"ot");g(this,"ht");g(this,"ct",null);this.m=e,this.gt=B,this.ot=r,this.ht=i;const s=this.m.createBuffer();if(!s)throw Error("Failed to create unit geometry buffer");this.m.bindBuffer(this.m.ARRAY_BUFFER,s),this.m.bufferData(this.m.ARRAY_BUFFER,this.ht.vertices,this.m.STATIC_DRAW),this.m.bindBuffer(this.m.ARRAY_BUFFER,null),this.ct=s}get type(){return this.ot}get unitGeometry(){return this.ht}get unitBuffer(){return this.ct}get batch(){return this.gt}FA(){this.gt.clear()}MA(){return!this.gt.isEmpty}W(){this.gt.W(),this.ct&&(this.m.deleteBuffer(this.ct),this.ct=null)}Ct(e,B,r,i,s){const E=this.Dt(e,B,r,i,s.rotation||0);return{position:[e,B],size:[r,i],character:s.character||[0,0,0],primaryColor:s.charColor||[1,1,1,1],secondaryColor:s.bgColor||[0,0,0,1],rotation:s.charRotation||[0,0],transform:[s.invert?1:0,s.flipHorizontally?1:0,s.flipVertically?1:0],globalRotation:E.radians,rotationCenter:[E.centerX,E.centerY]}}lt(e,B){const r=U(this.m)||[0,0,this.m.canvas.width,this.m.canvas.height];return{nx:e/r[2]*2-1,ny:1-B/r[3]*2}}Pt(e,B,r){const i=this.lt(B,r);e.rotationCenter=[i.nx,i.ny]}Dt(e,B,r,i,s){const E=U(this.m)||[0,0,this.m.canvas.width,this.m.canvas.height],Q=E[2],o=E[3];return{centerX:(e+r/2)/Q*2-1,centerY:1-(B+i/2)/o*2,radians:-s*Math.PI/180,aspectRatio:Q/o}}}const EA={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 G{constructor(e,B){super(e,B,u.RECTANGLE,EA)}RA(e,B){const r=this.Ct(e.x,e.y,e.width,e.height,B);return this.gt.RA(r)}}const nA={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 oA extends G{constructor(e,B){super(e,B,u.LINE,nA)}RA(e,B){const r=e.x2-e.x1,i=e.y2-e.y1,s=Math.hypot(r,i),E=Math.atan2(i,r),Q=e.thickness||B.lineWeight||1,o=e.x1+r/2,a=e.y1+i/2,h=o-s/2,c=a,l={character:B.character,charColor:B.charColor,bgColor:B.bgColor,charRotation:B.charRotation,flipHorizontally:B.flipHorizontally,flipVertically:B.flipVertically,invert:B.invert,rotation:(B.rotation||0)+180*E/Math.PI,lineWeight:Q},D=this.Ct(h,c,s,Q,l);return this.Pt(D,o,a),this.gt.RA(D)}}const gA={vertices:function(n=32){const e=[],B=2*Math.PI/n;for(let r=0;r<n;r++){const i=r*B,s=(r+1)%n*B,E=Math.cos(i),Q=Math.sin(i),o=.5*(E+1),a=.5*(Q+1),h=Math.cos(s),c=Math.sin(s),l=.5*(h+1),D=.5*(c+1);e.push(0,0,.5,.5,E,Q,o,a,h,c,l,D)}return new Float32Array(e)}(32),vertexCount:96,primitiveType:WebGL2RenderingContext.TRIANGLES,stride:16,attributes:{position:{size:2,offset:0},texCoord:{size:2,offset:8}}};class aA extends G{constructor(e,B){super(e,B,u.ELLIPSE,gA)}RA(e,B){const r=this.Ct(e.x,e.y,e.width,e.height,B);return this.Pt(r,e.x,e.y),this.gt.RA(r)}}let hA={vertices:function(n){const e=[];for(let B=0;B<n;B++){const r=B/n,i=(B+1)/n;e.push(r,0,r,0,r,1,r,1,i,1,i,1)}return new Float32Array(e)}(32),vertexCount:96,primitiveType:WebGL2RenderingContext.TRIANGLES,stride:16,attributes:{position:{size:2,offset:0},texCoord:{size:2,offset:8}}};class cA extends G{constructor(e,B){super(e,B,u.ARC,hA)}RA(e,B){const r=e.x-e.width/2,i=e.y-e.height/2,s=e.start*Math.PI/180,E=e.stop*Math.PI/180,Q=this.Ct(r,i,e.width,e.height,B);return this.Pt(Q,e.x,e.y),Q.arcAngles=[s,E],this.gt.RA(Q)}}const lA={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 CA extends G{constructor(e,B){super(e,B,u.TRIANGLE,lA)}RA(e,B){const r=Math.min(e.x1,e.x2,e.x3),i=Math.max(e.x1,e.x2,e.x3),s=Math.min(e.y1,e.y2,e.y3),E=i-r,Q=Math.max(e.y1,e.y2,e.y3)-s,o=this.Ct(r,s,E,Q,B),a=r+.5*E,h=s+Q*(1/3);return this.Pt(o,a,h),this.gt.RA(o)}}function H(n,e,B,r,i){const s=1-n,E=s*s,Q=n*n;return E*s*e+3*E*n*B+3*s*Q*r+Q*n*i}const DA={vertices:function(n=16){const e=[];for(let B=0;B<n;B++){const r=B/n,i=(B+1)/n;e.push(r,-.5,r,0),e.push(i,-.5,i,0),e.push(r,.5,r,1),e.push(r,.5,r,1),e.push(i,-.5,i,0),e.push(i,.5,i,1)}return new Float32Array(e)}(16),vertexCount:96,primitiveType:WebGL2RenderingContext.TRIANGLES,stride:16,attributes:{position:{size:2,offset:0},texCoord:{size:2,offset:8}}};class PA extends G{constructor(e,B){super(e,B,u.BEZIER_CURVE,DA)}RA(e,B){const r=B.lineWeight||1,i=H(.5,e.x1,e.cp1x,e.cp2x,e.x2),s=H(.5,e.y1,e.cp1y,e.cp2y,e.y2),E={character:B.character,charColor:B.charColor,bgColor:B.bgColor,charRotation:B.charRotation,flipHorizontally:B.flipHorizontally,flipVertically:B.flipVertically,invert:B.invert,rotation:B.rotation||0,lineWeight:r},Q=this.Ct(0,0,1,r,E);return this.Pt(Q,i,s),Q.bezierStartPoint=[e.x1,e.y1],Q.bezierControlPoint1=[e.cp1x,e.cp1y],Q.bezierControlPoint2=[e.cp2x,e.cp2y],Q.bezierEndPoint=[e.x2,e.y2],this.gt.RA(Q)}}class uA{constructor(e){g(this,"m");g(this,"It",null);g(this,"ut",null);g(this,"wt",null);g(this,"ft",new Map);g(this,"dt");g(this,"_t");g(this,"vt");this.m=e,this.vt=new eA,this.dt=new rA(e),this._t=new iA,this.ut=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,this.ut),e.bufferData(e.ARRAY_BUFFER,new Float32Array([-1,-1,0,0,1,-1,1,0,-1,1,0,1,1,-1,1,0,1,1,1,1,-1,1,0,1]),e.STATIC_DRAW),this.wt=e.createBuffer(),this.m.enable(this.m.BLEND),this.m.blendEquation(this.m.FUNC_ADD),this.m.blendFunc(this.m.ONE,this.m.ONE_MINUS_SRC_ALPHA),S(this.m,[0,0,this.m.canvas.width,this.m.canvas.height])}xt(e){let B=this.ft.get(e);if(B)return B;const r=new sA(this.m);return B=(0,{[u.RECTANGLE]:()=>new QA(this.m,r),[u.LINE]:()=>new oA(this.m,r),[u.ELLIPSE]:()=>new aA(this.m,r),[u.ARC]:()=>new cA(this.m,r),[u.TRIANGLE]:()=>new CA(this.m,r),[u.BEZIER_CURVE]:()=>new PA(this.m,r)}[e])(),this.ft.set(e,B),B}yt(e){this.It!==e&&(this.It=e,e.q())}bt(e,B){return new tA(this.m,e,B)}Gt(e,B,r,i){var P;const s=this.m,E=s.canvas.width,Q=s.canvas.height,o=e/E*2-1,a=(e+r)/E*2-1,h=1-B/Q*2,c=1-(B+i)/Q*2,l=new Float32Array([o,c,a,c,o,h,a,c,a,h,o,h]);s.bindBuffer(s.ARRAY_BUFFER,this.wt),s.bufferData(s.ARRAY_BUFFER,l,s.DYNAMIC_DRAW);const D=((P=this.It)==null?void 0:P.QA)||s.getParameter(s.CURRENT_PROGRAM),C=D?s.getAttribLocation(D,"a_position"):-1;C!==-1&&(s.enableVertexAttribArray(C),s.vertexAttribPointer(C,2,s.FLOAT,!1,8,0)),s.drawArrays(s.TRIANGLES,0,6),C!==-1&&s.disableVertexAttribArray(C)}$t(e,B,r,i){this._t.kA(e,B,r,i,this.vt)}Mt(e,B,r,i){this._t.WA(e,B,r,i,this.vt.lineWeight,this.vt)}Yt(e,B,r,i){this._t.HA(e,B,r,i,this.vt)}Tt(e,B,r,i,s,E){this._t.VA(e,B,r,i,s,E,this.vt)}zt(e,B,r,i,s,E,Q,o){const a=this.vt.lineWeight;this._t.KA(e,B,r,i,s,E,Q,o,a,this.vt)}Ft(e,B,r=1,i={}){return new J(this.m,e,B,r,i)}Rt(e,B,r,i,s,E){this._t.JA(e,B,r,i,s,E,this.vt)}St(e,B=e,r=e,i=255){this.jA(e/255,B/255,r/255,i/255)}jA(e=0,B=0,r=0,i=0){this.m.clearColor(e,B,r,i),this.m.clear(this.m.COLOR_BUFFER_BIT)}Ot(){this.m.viewport(0,0,this.m.canvas.width,this.m.canvas.height),S(this.m,[0,0,this.m.canvas.width,this.m.canvas.height])}get context(){return this.m}get state(){return this.vt}Lt(e){const B=U(this.m)??this.m.getParameter(this.m.VIEWPORT),r={shader:e,gl:this.m,viewport:B},i=new Set;for(const s of this._t)i.add(s.type);for(const s of i)this.xt(s);this.dt.$A(r,this._t,this.ft),this._t.jA()}W(){this.m.deleteBuffer(this.ut),this.m.deleteBuffer(this.wt),this._t.jA();for(const e of this.ft.values())e.W()}}const w={readShort:(n,e)=>(w.t.uint16[0]=n[e]<<8|n[e+1],w.t.int16[0]),readUshort:(n,e)=>n[e]<<8|n[e+1],readUshorts(n,e,B){const r=[];for(let i=0;i<B;i++)r.push(w.readUshort(n,e+2*i));return r},readUint(n,e){const B=w.t.uint8;return B[3]=n[e],B[2]=n[e+1],B[1]=n[e+2],B[0]=n[e+3],w.t.uint32[0]},readASCII(n,e,B){let r="";for(let i=0;i<B;i++)r+=String.fromCharCode(n[e+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)}})()},IA={parseTab(n,e,B){const r={tables:[],ids:{},off:e};n=new Uint8Array(n.buffer,e,B),e=0;const i=w,s=i.readUshort,E=s(n,e+=2);e+=2;const Q=[];for(let o=0;o<E;o++){const a=s(n,e),h=s(n,e+=2);e+=2;const c=i.readUint(n,e);e+=4;const l=`p${a}e${h}`;let D=Q.indexOf(c);if(D===-1){let C;D=r.tables.length,Q.push(c);const P=s(n,c);C=P===4?this.parse4(n,c):P===12?this.parse12(n,c):{format:P},r.tables.push(C)}r.ids[l]!=null&&console.warn("Multiple tables for one platform+encoding: "+l),r.ids[l]=D}return r},parse4(n,e){const B=w,r=B.readUshort,i=B.readUshorts,s=e,E=r(n,e+=2);e+=2;const Q=r(n,e+=2)>>>1,o={format:4,searchRange:r(n,e+=2),entrySelector:0,rangeShift:0,endCount:[],startCount:[],idDelta:[],idRangeOffset:[],glyphIdArray:[]};e+=2,o.entrySelector=r(n,e),e+=2,o.rangeShift=r(n,e),e+=2,o.endCount=i(n,e,Q),e+=2*Q,e+=2,o.startCount=i(n,e,Q),e+=2*Q;for(let a=0;a<Q;a++)o.idDelta.push(B.readShort(n,e)),e+=2;return o.idRangeOffset=i(n,e,Q),e+=2*Q,o.glyphIdArray=i(n,e,s+E-e>>1),o},parse12(n,e){const B=w.readUint;B(n,e+=4),B(n,e+=4);const r=B(n,e+=4);e+=4;const i=new Uint32Array(3*r);for(let s=0;s<3*r;s+=3)i[s]=B(n,e+(s<<2)),i[s+1]=B(n,e+(s<<2)+4),i[s+2]=B(n,e+(s<<2)+8);return{format:12,groups:i}}},fA={parseTab(n,e,B){const r=w;e+=18;const i=r.readUshort(n,e);e+=2,e+=16;const s=r.readShort(n,e);e+=2;const E=r.readShort(n,e);e+=2;const Q=r.readShort(n,e);e+=2;const o=r.readShort(n,e);return e+=2,e+=6,{unitsPerEm:i,xMin:s,yMin:E,xMax:Q,yMax:o,indexToLocFormat:r.readShort(n,e)}}},dA={parseTab(n,e,B){const r=w;e+=4;const i=["ascender","descender","lineGap","advanceWidthMax","minLeftSideBearing","minRightSideBearing","xMaxExtent","caretSlopeRise","caretSlopeRun","caretOffset","res0","res1","res2","res3","metricDataFormat","numberOfHMetrics"],s={};for(let E=0;E<i.length;E++){const Q=i[E],o=Q==="advanceWidthMax"||Q==="numberOfHMetrics"?r.readUshort:r.readShort;s[Q]=o(n,e+2*E)}return s}},wA={parseTab(n,e,B,r){const i=w,s=[],E=[],Q=r.maxp.numGlyphs,o=r.hhea.numberOfHMetrics;let a=0,h=0,c=0;for(;c<o;)a=i.readUshort(n,e+(c<<2)),h=i.readShort(n,e+(c<<2)+2),s.push(a),E.push(h),c++;for(;c<Q;)s.push(a),E.push(h),c++;return{aWidth:s,lsBearing:E}}},$={cmap:IA,head:fA,hhea:dA,maxp:{parseTab(n,e,B){const r=w;return r.readUint(n,e),e+=4,{numGlyphs:r.readUshort(n,e)}}},hmtx:wA,loca:{parseTab(n,e,B,r){const i=w,s=[],E=r.head.indexToLocFormat,Q=r.maxp.numGlyphs+1;if(E===0)for(let o=0;o<Q;o++)s.push(i.readUshort(n,e+(o<<1))<<1);else if(E===1)for(let o=0;o<Q;o++)s.push(i.readUint(n,e+(o<<2)));return s}},glyf:{parseTab(n,e,B,r){const i=[],s=r.maxp.numGlyphs;for(let E=0;E<s;E++)i.push(null);return i},Ut(n,e){const B=w,r=n.kt,i=n.loca;if(i[e]===i[e+1])return null;const s=x.findTable(r,"glyf",n.Wt);if(!s)return null;let E=s[0]+i[e];const Q={};if(Q.noc=B.readShort(r,E),E+=2,Q.xMin=B.readShort(r,E),E+=2,Q.yMin=B.readShort(r,E),E+=2,Q.xMax=B.readShort(r,E),E+=2,Q.yMax=B.readShort(r,E),E+=2,Q.xMin>=Q.xMax||Q.yMin>=Q.yMax)return null;if(Q.noc>0){Q.endPts=[];for(let l=0;l<Q.noc;l++)Q.endPts.push(B.readUshort(r,E)),E+=2;const o=B.readUshort(r,E);if(E+=2,r.length-E<o)return null;E+=o;const a=Q.endPts[Q.noc-1]+1;Q.flags=[];for(let l=0;l<a;l++){const D=r[E];if(E++,Q.flags.push(D),8&D){const C=r[E];E++;for(let P=0;P<C;P++)Q.flags.push(D),l++}}Q.xs=[];for(let l=0;l<a;l++){const D=Q.flags[l],C=!!(16&D);2&D?(Q.xs.push(C?r[E]:-r[E]),E++):C?Q.xs.push(0):(Q.xs.push(B.readShort(r,E)),E+=2)}Q.ys=[];for(let l=0;l<a;l++){const D=Q.flags[l],C=!!(32&D);4&D?(Q.ys.push(C?r[E]:-r[E]),E++):C?Q.ys.push(0):(Q.ys.push(B.readShort(r,E)),E+=2)}let h=0,c=0;for(let l=0;l<a;l++)h+=Q.xs[l],c+=Q.ys[l],Q.xs[l]=h,Q.ys[l]=c}else Q.parts=[],Q.endPts=[],Q.flags=[],Q.xs=[],Q.ys=[];return Q}}},x={parse:n=>[((e,B,r,i)=>{const s=$,E={kt:e,Ht:B,Wt:r};for(const Q in s){const o=Q,a=x.findTable(e,o,r);if(a){const[h,c]=a;let l=i[h];l==null&&(l=s[o].parseTab(e,h,c,E),i[h]=l),E[o]=l}}return E})(new Uint8Array(n),0,0,{})],findTable(n,e,B){const r=w,i=r.readUshort(n,B+4);let s=B+12;for(let E=0;E<i;E++){const Q=r.readASCII(n,s,4);r.readUint(n,s+4);const o=r.readUint(n,s+8),a=r.readUint(n,s+12);if(Q===e)return[o,a];s+=16}return null},T:$,B:w};class O{constructor(){g(this,"Jt",new Map);g(this,"Vt",new Map)}Kt(e,B){const r=`${this.jt(e)}_${B}`;if(this.Jt.has(r))return this.Jt.get(r);const i=e.cmap;if(!i||!i.tables)return this.Jt.set(r,0),0;let s=0;for(const E of i.tables)if(E.format===4?s=this.Zt(B,E):E.format===12&&(s=this.Nt(B,E)),s>0)break;return this.Jt.set(r,s),s}Xt(e,B){const r=B.codePointAt(0);return r===void 0?0:this.Kt(e,r)}qt(e,B){const r=e.hmtx;return r&&r.aWidth&&r.aWidth.length!==0?B<r.aWidth.length?r.aWidth[B]:r.aWidth[r.aWidth.length-1]:0}Ae(e,B){const r=B/e.head.unitsPerEm,i=e.hhea.ascender*r,s=e.hhea.descender*r,E=e.hhea.lineGap*r;return{ascender:i,descender:s,lineGap:E,lineHeight:i-s+E,unitsPerEm:e.head.unitsPerEm,scale:r}}te(){this.Jt.clear(),this.Vt.clear()}jt(e){return`${e.Wt}_${e.kt.length}`}Zt(e,B){const r=B.endCount.length;let i=-1;for(let s=0;s<r;s++)if(e<=B.endCount[s]){i=s;break}if(i===-1||e<B.startCount[i])return 0;if(B.idRangeOffset[i]===0)return e+B.idDelta[i]&65535;{const s=B.idRangeOffset[i]/2+(e-B.startCount[i])-(r-i);if(s>=0&&s<B.glyphIdArray.length){const E=B.glyphIdArray[s];return E===0?0:E+B.idDelta[i]&65535}}return 0}Nt(e,B){const r=B.groups.length/3;for(let i=0;i<r;i++){const s=B.groups[3*i],E=B.groups[3*i+1],Q=B.groups[3*i+2];if(e>=s&&e<=E)return Q+(e-s)}return 0}}class mA{constructor(e){g(this,"ee");this.ee=e}Be(e){var r;const B=[];return(r=e.cmap)!=null&&r.tables?(e.cmap.tables.forEach(i=>{if(i.format===4){const s=this.Qe(i);B.push(...s)}else if(i.format===12){const s=this.se(i);B.push(...s)}}),[...new Set(B)]):[]}ie(e,B){return this.ee.Xt(e,B)>0}Ee(e,B){for(const r of B)if(!this.ie(e,r))return!1;return!0}re(e,B){return B.filter(r=>this.ie(e,r))}ne(e){return e.filter(B=>this.ge(B))}Qe(e){const B=[];if(!(e.startCount&&e.endCount&&e.idRangeOffset&&e.idDelta))return B;for(let r=0;r<e.startCount.length;r++){const i=e.startCount[r],s=e.endCount[r];if(i!==65535||s!==65535){for(let E=i;E<=s;E++)if(this.oe(e,E,r)>0)try{const Q=String.fromCodePoint(E);B.push(Q)}catch{}}}return B}se(e){const B=[];if(!e.groups)return B;for(let r=0;r<e.groups.length;r+=3){const i=e.groups[r],s=e.groups[r+1],E=e.groups[r+2];for(let Q=i;Q<=s;Q++)if(E+(Q-i)>0)try{const o=String.fromCodePoint(Q);B.push(o)}catch{}}return B}oe(e,B,r){if(e.idRangeOffset[r]===0)return B+e.idDelta[r]&65535;{const i=e.idRangeOffset[r]/2+(B-e.startCount[r])-(e.startCount.length-r);if(i>=0&&e.glyphIdArray&&i<e.glyphIdArray.length){const s=e.glyphIdArray[i];if(s!==0)return s+e.idDelta[r]&65535}}return 0}ge(e){const B=e.codePointAt(0)||0;return!(B>=0&&B<=31&&B!==9&&B!==10&&B!==13||B>=127&&B<=159)}}class pA{constructor(){g(this,"ae");const e=new O;this.ae=new mA(e)}extractCharacters(e){return this.ae.Be(e)}filterProblematicCharacters(e){return this.ae.ne(e)}characterExists(e,B){return this.ae.ie(e,B)}allCharactersExist(e,B){return this.ae.Ee(e,B)}}class yA{constructor(e){g(this,"he");g(this,"ce");g(this,"Ce");g(this,"De");this.Ce=e,this.De=new O,this.he=document.createElement("canvas"),this.ce=this.he.getContext("2d",{willReadFrequently:!0,alpha:!1})}createTextureAtlas(e,B,r,i){const s=e.length,E=Math.ceil(Math.sqrt(s)),Q=Math.ceil(s/E),o=B.width*E,a=B.height*Q,h=typeof i=="object"?i:null;this.le(o,a),this.Pe(e,B,E,r,h);const c=this.Ce.Ft(o,a,1,{filter:"nearest"});return c.R(this.he),{framebuffer:c,columns:E,rows:Q}}le(e,B){this.he.width=e,this.he.height=B,this.he.style.width=e+"px",this.he.style.height=e+"px",this.ce.imageSmoothingEnabled=!1,this.he.style.imageRendering="pixelated",this.ce.fillStyle="black",this.ce.fillRect(0,0,e,B),this.ce.textBaseline="top",this.ce.textAlign="left",this.ce.fillStyle="white"}Pe(e,B,r,i,s){const E=i/s.head.unitsPerEm;for(let Q=0;Q<e.length;Q++){const o=Q%r,a=Math.floor(Q/r),h=e[Q].character,c=this.Ie(s,h);if(!c)continue;const l=h.codePointAt(0)||0,D=this.De.Kt(s,l),C=this.ue(s,D)*E,P=o*B.width,p=a*B.height,m=P+.5*B.width,y=p+.5*B.height,v=Math.round(m-.5*B.width),F=Math.round(y-.5*i),KA=v+.5*(B.width-C),ZA=F+s.hhea.ascender*E;this.we(c,KA,ZA,E)}}Ie(e,B){const r=B.codePointAt(0)||0,i=this.De.Kt(e,r);if(i===0)return null;if(e.glyf&&e.glyf[i]!==null)return e.glyf[i];if(x&&x.T&&x.T.glyf){const s=x.T.glyf.Ut(e,i);return e.glyf&&s&&(e.glyf[i]=s),s}return null}ue(e,B){const r=e.hmtx;return r&&r.aWidth?B<r.aWidth.length?r.aWidth[B]:r.aWidth[r.aWidth.length-1]:0}we(e,B,r,i){if(!e||!e.xs||e.noc===0)return;const{xs:s,ys:E,endPts:Q,flags:o}=e;if(!(s&&E&&Q&&o))return;this.ce.beginPath();let a=0;for(let h=0;h<Q.length;h++){const c=Q[h];if(!(c<a)){if(c>=a){const l=B+s[a]*i,D=r-E[a]*i;this.ce.moveTo(l,D);let C=a+1;for(;C<=c;)if(1&o[C]){const P=B+s[C]*i,p=r-E[C]*i;this.ce.lineTo(P,p),C++}else{const P=B+s[C]*i,p=r-E[C]*i;let m=C+1>c?a:C+1;if(1&o[m]){const y=B+s[m]*i,v=r-E[m]*i;this.ce.quadraticCurveTo(P,p,y,v),C=m+1}else{const y=(P+(B+s[m]*i))/2,v=(p+(r-E[m]*i))/2;this.ce.quadraticCurveTo(P,p,y,v),C=m}}this.ce.closePath()}a=c+1}}this.ce.fill()}}class xA{constructor(){g(this,"ee");this.ee=new O}calculateMaxGlyphDimensions(e,B,r){let i=0;const s=this.ee.Ae(r,B),E=s.lineHeight;for(const Q of e){const o=this.ee.Xt(r,Q);if(o===0)continue;const a=this.ee.qt(r,o)*s.scale;i=Math.max(i,a)}return{width:Math.ceil(i),height:Math.ceil(E)}}getCharacterAdvanceWidth(e,B,r){const i=this.ee.Ae(r,B),s=this.ee.Xt(r,e);return this.ee.qt(r,s)*i.scale}getFontMetrics(e,B){return this.ee.Ae(B,e)}te(){this.ee.te()}}class vA{constructor(){g(this,"De");this.De=new O}createCharacterObjects(e,B){return e.map((r,i)=>{const s=r.codePointAt(0)||0,E=this.fe(i);let Q=0;if(B.hmtx&&B.hmtx.aWidth){const o=this.De.Kt(B,s);o>0&&B.hmtx.aWidth[o]!==void 0&&(Q=B.hmtx.aWidth[o])}return{character:r,unicode:s,color:E,advanceWidth:Q}})}fe(e){return[e%256/255,Math.floor(e/256)%256/255,Math.floor(e/65536)%256/255]}de(e,B){if(!M.l(typeof e=="string","Character must be a string.",{method:"getCharacterColor",providedValue:e}))return[0,0,0];const r=B.find(i=>i.character===e);return r?r.color:[0,0,0]}pe(e,B){return M.l(typeof e=="string"&&e.length>0,"Characters must be a string with at least one character.",{method:"getCharacterColors",providedValue:e})?Array.from(e).map(r=>this.de(r,B)||[0,0,0]):[[0,0,0]]}}class V{constructor(e,B=16){g(this,"me");g(this,"_e",[]);g(this,"ve");g(this,"xe",16);g(this,"ye",0);g(this,"be",0);g(this,"Ge",{width:0,height:0});g(this,"$e");g(this,"Me");g(this,"Ye");g(this,"Te");g(this,"ze");this.xe=B,this.Me=new pA,this.Ye=new yA(e),this.Te=new xA,this.ze=new vA}async Fe(e){let B;if(e){const r=await fetch(e);if(!r.ok)throw new I(`Failed to load font file: ${r.status} ${r.statusText}`);B=await r.arrayBuffer()}else B=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
8
- `)).arrayBuffer();await this.Re(B),this.me=x.parse(B)[0],await this.Se()}Oe(e){if(e===void 0)return this.xe;this.xe=e,this.Ge=this.Te.calculateMaxGlyphDimensions(this._e.map(r=>r.character),this.xe,this.me);const B=this.Ye.createTextureAtlas(this._e,this.Ge,this.xe,this.me);this.ve=B.framebuffer,this.ye=B.columns,this.be=B.rows}async Le(e){try{const B=await fetch(e);if(!B.ok)throw new I(`Failed to load font file: ${B.status} ${B.statusText}`);const r=await B.arrayBuffer();await this.Re(r);const i=x.parse(r);if(!i||i.length===0)throw Error("Failed to parse font file");this.me=i[0],await this.Se()}catch(B){throw new I("Failed to load font: "+(B instanceof Error?B.message:"Unknown error"),B)}}async Re(e){const B=Date.now();this.$e=new FontFace("CustomFont_"+B,e),await this.$e.load(),document.fonts.add(this.$e)}async Se(){const e=this.Me.extractCharacters(this.me),B=this.Me.filterProblematicCharacters(e);this._e=this.ze.createCharacterObjects(B,this.me),this.Ge=this.Te.calculateMaxGlyphDimensions(B,this.xe,this.me);const r=this.Ye.createTextureAtlas(this._e,this.Ge,this.xe,this.me);this.ve=r.framebuffer,this.ye=r.columns,this.be=r.rows}de(e){return this.ze.de(e,this._e)}pe(e){return this.ze.pe(e,this._e)}W(){this.ve.W(),document.fonts.delete(this.$e)}get fontFramebuffer(){return this.ve}get characters(){return this._e}get textureColumns(){return this.ye}get textureRows(){return this.be}get maxGlyphDimensions(){return this.Ge}get fontSize(){return this.xe}get font(){return this.me}}class X{constructor(e,B,r){g(this,"Ue");g(this,"ke");g(this,"I");g(this,"u");g(this,"We");g(this,"He");g(this,"Je");g(this,"Ve");g(this,"Ke");this.Je=e,this.Ve=B,this.Ke=r,this.lA()}lA(){this.Ue=Math.floor(this.Je.width/this.Ve),this.ke=Math.floor(this.Je.height/this.Ke),this.I=this.Ue*this.Ve,this.u=this.ke*this.Ke,this.We=Math.floor((this.Je.width-this.I)/2),this.He=Math.floor((this.Je.height-this.u)/2)}je(e,B){this.Ve=e,this.Ke=B,this.lA()}get cellWidth(){return this.Ve}get cellHeight(){return this.Ke}get cols(){return this.Ue}get rows(){return this.ke}get width(){return this.I}get height(){return this.u}get offsetX(){return this.We}get offsetY(){return this.He}}class j{constructor(e={}){g(this,"Je");g(this,"Ze");g(this,"Ne");e.canvas?(this.Je=e.canvas,this.Ne=!1):(this.Je=this.Xe(e.width,e.height),this.Ne=!0),this.Je.style.imageRendering="pixelated"}Xe(e,B){const r=document.createElement("canvas");return r.className="textmodeCanvas",r.style.imageRendering="pixelated",r.width=e||800,r.height=B||600,document.body.appendChild(r),r}S(e,B){this.Je.width=e??this.Je.width,this.Je.height=B??this.Je.height}qe(){const e=this.Je.getContext("webgl2",{alpha:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!0,antialias:!1,depth:!1,stencil:!1,powerPreference:"high-performance"});if(!e)throw new I("`textmode.js` requires WebGL2 support.");return e}W(){this.Ze&&this.Ze.disconnect();const e=this.Je.getContext("webgl")||this.Je.getContext("webgl2");if(e){const B=e.getExtension("WEBGL_lose_context");B&&B.loseContext()}this.Ne&&this.Je.parentNode&&this.Je.parentNode.removeChild(this.Je)}get canvas(){return this.Je}get width(){return this.Je.width}get height(){return this.Je.height}}class bA{constructor(e=60){g(this,"AB");g(this,"tB");g(this,"eB",null);g(this,"BB",0);g(this,"QB",!0);g(this,"sB",0);g(this,"iB",0);g(this,"EB",[]);g(this,"rB",10);g(this,"nB",0);this.AB=e,this.tB=1e3/e}start(e){if(!this.QB)return;this.BB=performance.now();const B=r=>{if(!this.QB)return void(this.eB=null);const i=r-this.BB;i>=this.tB&&(e(),this.BB=r-i%this.tB),this.QB&&(this.eB=requestAnimationFrame(B))};this.eB=requestAnimationFrame(B)}stop(){this.eB&&(cancelAnimationFrame(this.eB),this.eB=null)}pause(){this.QB&&(this.QB=!1,this.stop())}resume(e){this.QB||(this.QB=!0,this.start(e))}frameRate(e,B){if(e===void 0)return this.sB;this.AB=e,this.tB=1e3/e,this.QB&&B&&(this.stop(),this.start(B))}measureFrameRate(){const e=performance.now();if(this.iB>0){const B=e-this.iB;this.EB.push(B),this.EB.length>this.rB&&this.EB.shift();const r=this.EB.reduce((i,s)=>i+s,0)/this.EB.length;this.sB=1e3/r}this.iB=e}get isLooping(){return this.QB}get frameRateLimit(){return this.AB}get currentFrameRate(){return this.sB}get frameCount(){return this.nB}set frameCount(e){this.nB=e}incrementFrame(){this.nB++}resetFrameCount(){this.nB=0}}const RA=n=>class extends n{rotate(e){this.Ce.state.uA(e)}push(){this.Ce.state.CA()}pop(){this.Ce.state.DA()}rect(e,B,r=1,i=1){this.Ce.$t(e,B,r,i)}line(e,B,r,i){this.Ce.Mt(e,B,r,i)}lineWeight(e){this.Ce.state.IA(e)}background(e,B=e,r=e,i=255){this.Ce.St(e,B,r,i)}char(e){this.Ce.state.wA(this.me.de(e))}charColor(e,B,r,i){this.Ce.state.fA(e,B,r,i)}cellColor(e,B,r,i){this.Ce.state.dA(e,B,r,i)}flipHorizontally(e){this.Ce.state.pA(e)}flipVertically(e){this.Ce.state.mA(e)}charRotation(e){this.Ce.state.vA(e)}invert(e){this.Ce.state._A(e)}clear(){this.Ce.jA()}ellipse(e,B,r,i){this.Ce.Yt(e,B,r/2,i/2)}triangle(e,B,r,i,s,E){this.Ce.Tt(e,B,r,i,s,E)}bezierCurve(e,B,r,i,s,E,Q,o){this.Ce.zt(e,B,r,i,s,E,Q,o)}arc(e,B,r,i,s,E){this.Ce.Rt(e,B,r,i,s,E)}};class W{gB(e){const B=e.O(0),r=e.O(1),i=e.O(2),s=e.O(3);return{characterPixels:B,primaryColorPixels:r,secondaryColorPixels:i,transformPixels:e.O(4),rotationPixels:s}}oB(e,B){return e[B]+(e[B+1]<<8)}aB(e,B){return{r:e[B],g:e[B+1],b:e[B+2],a:e[B+3]}}}class N{hB(e,B){return new Blob([e],{type:B})}cB(e,B,r){try{const i=this.hB(e,r),s=URL.createObjectURL(i),E=document.createElement("a");E.href=s,E.download=B,E.style.display="none",E.rel="noopener",document.body.appendChild(E),E.click(),document.body.removeChild(E),URL.revokeObjectURL(s)}catch(i){throw console.error("Failed to download file:",i),Error("File download failed: "+(i instanceof Error?i.message:"Unknown error"))}}CB(){return new Date().toISOString().slice(0,19).replace(/:/g,"-")}DB(){const e=new Date;return{date:e.toISOString().split("T")[0],time:e.toTimeString().split(" ")[0].replace(/:/g,"-")}}lB(e){return e.replace(/[<>:"/\\|?*]/g,"_").replace(/\s+/g,"_").replace(/_{2,}/g,"_").replace(/^_+|_+$/g,"").substring(0,255)}PB(){return"'textmode-export'-"+this.CB()}}class TA extends W{IB(e,B,r){const i=e[r]===255,s=e[r+1]===255,E=e[r+2]===255,Q=B[r],o=B[r+1];return{isInverted:i,flipHorizontal:s,flipVertical:E,rotation:Math.round(360*(Q+o/255)/255*100)/100}}uB(e,B,r){return{x:e,y:B,cellX:e*r.cellWidth,cellY:B*r.cellHeight}}wB(e,B){const r=[];let i=0;for(let s=0;s<B.rows;s++)for(let E=0;E<B.cols;E++){const Q=4*i,o=this.oB(e.characterPixels,Q);let a=this.aB(e.primaryColorPixels,Q),h=this.aB(e.secondaryColorPixels,Q);const c=this.IB(e.transformPixels,e.rotationPixels,Q);if(c.isInverted){const D=a;a=h,h=D}const l=this.uB(E,s,B);r.push({charIndex:o,primaryColor:a,secondaryColor:h,transform:c,position:l}),i++}return r}}class _A{fB(e,B){const r=e.cmap;for(const i of r.tables)if(i.format===4){const s=i;for(let E=0;E<s.startCount.length;E++)if(B>=s.startCount[E]&&B<=s.endCount[E]){if(s.idRangeOffset[E]===0)return B+s.idDelta[E]&65535;{const Q=s.idRangeOffset[E]/2+(B-s.startCount[E])-(s.startCount.length-E);if(Q>=0&&Q<s.glyphIdArray.length){const o=s.glyphIdArray[Q];if(o!==0)return o+s.idDelta[E]&65535}}}}else if(i.format===12){const s=i;for(let E=0;E<s.groups.length;E+=3){const Q=s.groups[E],o=s.groups[E+1],a=s.groups[E+2];if(B>=Q&&B<=o)return a+(B-Q)}}return 0}dB(e,B,r,i,s){const E=s/e.head.unitsPerEm;return{getBoundingBox:()=>({x1:r+B.xMin*E,y1:i+-B.yMax*E,x2:r+B.xMax*E,y2:i+-B.yMin*E}),toSVG:()=>this.pB(B,r,i,E)}}pB(e,B,r,i){if(!e||!e.xs)return"";const{xs:s,ys:E,endPts:Q,flags:o}=e;if(!(s&&E&&Q&&o))return"";let a="",h=0;for(let c=0;c<Q.length;c++){const l=Q[c];if(!(l<h)){if(l>=h){const D=B+s[h]*i,C=r-E[h]*i;a+=`M${D.toFixed(2)},${C.toFixed(2)}`;let P=h+1;for(;P<=l;)if(1&o[P]){const p=B+s[P]*i,m=r-E[P]*i;a+=`L${p.toFixed(2)},${m.toFixed(2)}`,P++}else{const p=B+s[P]*i,m=r-E[P]*i;let y=P+1>l?h:P+1;if(1&o[y]){const v=B+s[y]*i,F=r-E[y]*i;a+=`Q${p.toFixed(2)},${m.toFixed(2)} ${v.toFixed(2)},${F.toFixed(2)}`,P=y+1}else{const v=(p+(B+s[y]*i))/2,F=(m+(r-E[y]*i))/2;a+=`Q${p.toFixed(2)},${m.toFixed(2)} ${v.toFixed(2)},${F.toFixed(2)}`,P=y}}a+="Z"}h=l+1}}return a}mB(e,B,r,i,s){const E=e.codePointAt(0)||0,Q=this.fB(B,E);let o=null;return B.glyf&&B.glyf[Q]!==null?o=B.glyf[Q]:(o=x.T.glyf.Ut(B,Q),B.glyf[Q]=o),this.dB(B,o,r,i,s)}_B(e,B,r,i,s,E,Q,o){const a=r+(s-o*(Q/B.head.unitsPerEm))/2,h=i+(E+.7*Q)/2;return this.mB(e,B,a,h,Q).toSVG()||null}}class GA{constructor(){g(this,"vB");this.vB=new _A}xB(e){return`<?xml version="1.0" encoding="UTF-8" standalone="no"?>
7
+ `,r}static i(e){if(e===null)return"null";if(e===void 0)return"undefined";if(typeof e=="string")return`"${e}"`;if(typeof e=="number"||typeof e=="boolean")return e+"";if(Array.isArray(e))return e.length===0?"[]":e.length<=5?`[${e.map(B=>I.i(B)).join(", ")}]`:`[${e.slice(0,3).map(B=>I.i(B)).join(", ")}, ... +${e.length-3} more]`;if(typeof e=="object"){const B=Object.keys(e);return B.length===0?"{}":B.length<=3?`{ ${B.map(r=>`${r}: ${I.i(e[r])}`).join(", ")} }`:`{ ${B.slice(0,2).map(r=>`${r}: ${I.i(e[r])}`).join(", ")}, ... +${B.length-2} more }`}return e+""}}var R=(n=>(n[n.SILENT=0]="SILENT",n[n.WARNING=1]="WARNING",n[n.ERROR=2]="ERROR",n[n.THROW=3]="THROW",n))(R||{});const M=class M{constructor(){g(this,"h",{globalLevel:3})}static C(){return M.o||(M.o=new M),M.o}D(e,B){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.h.globalLevel){case 0:return!1;case 1:return console.group(r,i),console.warn(I.A(e,B)),console.groupEnd(),!1;case 2:return console.group(r,i),console.error(I.A(e,B)),console.groupEnd(),!1;default:throw new I(e,B)}}l(e,B,r){return!!e||(this.D(B,r),!1)}P(e){this.h.globalLevel=e}};g(M,"o",null);let z=M;const _=z.C(),N=new WeakMap;function S(n,e){N.set(n,e)}function U(n){return N.get(n)}class H{constructor(e,B,r=B,i=1,s={}){g(this,"I");g(this,"u");g(this,"h");g(this,"p",null);g(this,"m");g(this,"_");g(this,"v",[]);g(this,"G");g(this,"$",null);g(this,"M",[]);this.I=B,this.u=r,this.h={filter:"nearest",wrap:"clamp",format:"rgba",type:"unsigned_byte",...s},this.m=e,this.G=Math.min(Math.max(1,i),8);const E=e.getParameter(e.MAX_DRAW_BUFFERS),Q=e.getParameter(e.MAX_COLOR_ATTACHMENTS);this.G=Math.min(this.G,E,Q),this._=e.createFramebuffer(),this.Y(),this.F(),this.M=Array(this.G).fill(null)}Y(){const e=this.m,B=this.h.filter==="linear"?e.LINEAR:e.NEAREST,r=this.h.wrap==="repeat"?e.REPEAT:e.CLAMP_TO_EDGE,i=this.h.type==="float"?e.FLOAT:e.UNSIGNED_BYTE;for(let s=0;s<this.G;s++){const E=e.createTexture();e.bindTexture(e.TEXTURE_2D,E),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,B),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,B),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,r),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,r),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,this.I,this.u,0,e.RGBA,i,null),this.v.push(E)}e.bindTexture(e.TEXTURE_2D,null)}F(){const e=this.m;if(e.bindFramebuffer(e.FRAMEBUFFER,this._),this.G===1)e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,this.v[0],0);else{const r=[];for(let i=0;i<this.G;i++){const s=e.COLOR_ATTACHMENT0+i;e.framebufferTexture2D(e.FRAMEBUFFER,s,e.TEXTURE_2D,this.v[i],0),r.push(s)}e.drawBuffers(r)}const B=e.checkFramebufferStatus(e.FRAMEBUFFER);B!==e.FRAMEBUFFER_COMPLETE&&console.error("GLFramebuffer is not complete:",B),e.bindFramebuffer(e.FRAMEBUFFER,null)}S(e){const B=this.m;B.bindTexture(B.TEXTURE_2D,this.v[0]),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,1),B.texImage2D(B.TEXTURE_2D,0,B.RGBA,B.RGBA,B.UNSIGNED_BYTE,e),B.bindTexture(B.TEXTURE_2D,null)}O(e,B){this.I=e,this.u=B,this.p=null,this.M=Array(this.G).fill(null);const r=this.m,i=this.h.type==="float"?r.FLOAT:r.UNSIGNED_BYTE;for(const s of this.v)r.bindTexture(r.TEXTURE_2D,s),r.texImage2D(r.TEXTURE_2D,0,r.RGBA,this.I,this.u,0,r.RGBA,i,null);r.bindTexture(r.TEXTURE_2D,null)}R(e){const B=this.m;if(e<0||e>=this.G)throw Error(`GLFramebuffer: attachment index ${e} out of range (count=${this.G})`);const r=this.M[e];if(r)return r;const i=this.I,s=this.u,E=new Uint8Array(i*s*4),Q=B.getParameter(B.READ_FRAMEBUFFER_BINDING);B.bindFramebuffer(B.READ_FRAMEBUFFER,this._),B.readBuffer(B.COLOR_ATTACHMENT0+e),B.readPixels(0,0,i,s,B.RGBA,B.UNSIGNED_BYTE,E),B.bindFramebuffer(B.READ_FRAMEBUFFER,Q);const o=4*i,a=new Uint8Array(E.length);for(let h=0;h<s;h++){const c=(s-1-h)*o,l=h*o;a.set(E.subarray(c,c+o),l)}return this.M[e]=a,a}L(){for(let e=0;e<this.G;e++)this.R(e)}U(){const e=this.m;this.$={framebuffer:e.getParameter(e.FRAMEBUFFER_BINDING),viewport:e.getParameter(e.VIEWPORT)},e.bindFramebuffer(e.FRAMEBUFFER,this._),this.M=Array(this.G).fill(null);for(let B=0;B<this.G;B++)e.clearBufferfv(e.COLOR,B,new Float32Array([0,0,0,0]));e.viewport(0,0,this.I,this.u),S(e,[0,0,this.I,this.u])}k(){if(!this.$)return;const e=this.m;e.bindFramebuffer(e.FRAMEBUFFER,this.$.framebuffer),e.viewport(...this.$.viewport),S(e,this.$.viewport),this.$=null}W(){const e=this.m;this._&&e.deleteFramebuffer(this._);for(const B of this.v)e.deleteTexture(B);this.v=[],this.M=[]}get width(){return this.I}get height(){return this.u}get pixels(){return this.p}get options(){return{...this.h}}get framebuffer(){return this._}get texture(){return this.v[0]}get textures(){return[...this.v]}get attachmentCount(){return this.G}getAttachmentPixels(e){return this.M[e]??null}}class tA{constructor(e,B,r){g(this,"m");g(this,"H");g(this,"J",new Map);g(this,"V",new Map);g(this,"K",0);g(this,"j");this.m=e,this.H=this.Z(B,r),this.j=e.getParameter(e.MAX_TEXTURE_IMAGE_UNITS),this.N()}N(){const e=this.m.getProgramParameter(this.H,this.m.ACTIVE_UNIFORMS);for(let B=0;B<e;B++){const r=this.m.getActiveUniform(this.H,B);if(r){const i=this.m.getUniformLocation(this.H,r.name);i&&(this.J.set(r.name,i),this.V.set(r.name,r.type))}}}Z(e,B){const r=this.X(this.m.VERTEX_SHADER,e),i=this.X(this.m.FRAGMENT_SHADER,B),s=this.m.createProgram();if(this.m.attachShader(s,r),this.m.attachShader(s,i),this.m.linkProgram(s),!this.m.getProgramParameter(s,this.m.LINK_STATUS)){const E=this.m.getProgramInfoLog(s);throw Error("Shader program link error: "+E)}return this.m.deleteShader(r),this.m.deleteShader(i),s}X(e,B){const r=this.m.createShader(e);if(this.m.shaderSource(r,B),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}q(){this.m.useProgram(this.H),this.AA()}AA(){this.K=0}tA(e){for(const[B,r]of Object.entries(e))this.eA(B,r)}eA(e,B){const r=this.J.get(e);if(r)if(typeof B=="number")this.m.uniform1f(r,B);else if(typeof B=="boolean")this.m.uniform1i(r,B?1:0);else if(Array.isArray(B))switch(B.length){case 2:this.m.uniform2f(r,B[0],B[1]);break;case 3:this.m.uniform3f(r,B[0],B[1],B[2]);break;case 4:this.m.uniform4f(r,B[0],B[1],B[2],B[3]);break;default:console.warn(`Unsupported array length ${B.length} for uniform '${e}'`)}else if(B instanceof WebGLTexture){const i=this.BA();this.m.uniform1i(r,i),this.m.activeTexture(this.m.TEXTURE0+i),this.m.bindTexture(this.m.TEXTURE_2D,B)}else if(B instanceof H){const i=this.BA();this.m.uniform1i(r,i),this.m.activeTexture(this.m.TEXTURE0+i),this.m.bindTexture(this.m.TEXTURE_2D,B.texture)}else if(typeof B=="object"&&"texture"in B){const i=this.BA();this.m.uniform1i(r,i),this.m.activeTexture(this.m.TEXTURE0+i),this.m.bindTexture(this.m.TEXTURE_2D,B.texture)}else console.warn(`Unsupported uniform type for '${e}':`,typeof B)}BA(){return this.K>=this.j&&console.warn(`Exceeded maximum texture units (${this.j}). Texture may not render correctly.`),this.K++}get QA(){return this.H}W(){this.m.deleteProgram(this.H)}}class eA{constructor(){g(this,"sA",1);g(this,"EA",0);g(this,"iA",[0,0,0]);g(this,"rA",[1,1,1,1]);g(this,"nA",[0,0,0,1]);g(this,"gA",!1);g(this,"oA",!1);g(this,"aA",!1);g(this,"cA",[0,0]);g(this,"hA",[0,0,0,1]);g(this,"CA",[])}DA(){this.CA.push({lineWeight:this.sA,rotation:this.EA,charRotation:[...this.cA],flipHorizontally:this.gA,flipVertically:this.oA,invert:this.aA,character:[...this.iA],charColor:[...this.rA],cellColor:[...this.nA]})}lA(){const e=this.CA.pop();e?(this.sA=e.lineWeight,this.EA=e.rotation,this.cA=e.charRotation,this.gA=e.flipHorizontally,this.oA=e.flipVertically,this.aA=e.invert,this.iA=e.character,this.rA=e.charColor,this.nA=e.cellColor):console.warn("pop() called without matching push()")}PA(){this.CA=[],this.EA=0}IA(e){e.lineWeight=this.sA,e.rotation=this.EA,e.character[0]=this.iA[0],e.character[1]=this.iA[1],e.character[2]=this.iA[2],e.charColor[0]=this.rA[0],e.charColor[1]=this.rA[1],e.charColor[2]=this.rA[2],e.charColor[3]=this.rA[3],e.bgColor[0]=this.nA[0],e.bgColor[1]=this.nA[1],e.bgColor[2]=this.nA[2],e.bgColor[3]=this.nA[3],e.flipHorizontally=this.gA,e.flipVertically=this.oA,e.invert=this.aA,e.charRotation[0]=this.cA[0],e.charRotation[1]=this.cA[1]}get lineWeight(){return this.sA}get canvasBackgroundColor(){return this.hA}uA(e){this.sA=Math.abs(e)}wA(e){this.EA=e}fA(e){this.iA=e}dA(e,B,r,i=255){this.rA=[e/255,B/255,r/255,i/255]}pA(e,B,r,i=255){this.nA=[e/255,B/255,r/255,i/255]}mA(e){this.gA=e}_A(e){this.oA=e}vA(e){this.aA=e}xA(e){const B=255*e/360,r=Math.floor(B)/255,i=Math.round(B-Math.floor(B));this.cA=[r,i]}yA(e,B,r,i){this.hA=[e/255,B/255,r/255,i/255]}}var u=(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))(u||{});class BA{constructor(e){g(this,"m");g(this,"bA",new Map);this.m=e}GA(e,B,r,i){const s=this.m;let E=this.bA.get(e);E||(E=new Map,this.bA.set(e,E));let Q=E.get(B)||null;if(!Q){Q=s.createVertexArray(),E.set(B,Q),s.bindVertexArray(Q),s.bindBuffer(s.ARRAY_BUFFER,i);const o=s.getAttribLocation(e,"a_position");o!==-1&&(s.enableVertexAttribArray(o),s.vertexAttribPointer(o,r.attributes.position.size,s.FLOAT,!1,r.stride,r.attributes.position.offset),s.vertexAttribDivisor(o,0));const a=s.getAttribLocation(e,"a_texCoord");a!==-1&&(s.enableVertexAttribArray(a),s.vertexAttribPointer(a,r.attributes.texCoord.size,s.FLOAT,!1,r.stride,r.attributes.texCoord.offset),s.vertexAttribDivisor(a,0))}s.bindVertexArray(Q)}$A(){this.m.bindVertexArray(null)}W(){const e=this.m;for(const[,B]of this.bA)for(const[,r]of B)r&&e.deleteVertexArray(r);this.bA.clear()}}class rA{constructor(e){g(this,"MA");g(this,"m");this.m=e,this.MA=new BA(e)}YA(e,B,r){const{shader:i}=e,s=U(this.m)||this.m.getParameter(this.m.VIEWPORT);i.tA({u_aspectRatio:s[2]/s[3],u_viewportSize:[s[2],s[3]]});const E=a=>{if(!a||!a.TA())return;const h=a.unitGeometry,c=a.unitBuffer;try{this.MA.GA(i.QA,a.type+"",h,c),a.batch.zA(i),a.batch.FA(h.primitiveType,h.vertexCount)}finally{a.batch.SA(i),this.MA.$A(),a.OA()}};let Q=null,o=null;for(const a of B){Q!==null&&a.type!==Q&&(E(o),Q=null,o=null);let h=o;h&&a.type===Q||(h=r.get(a.type)||null,o=h,Q=a.type),h&&h.RA(a.params,a.state)}E(o)}}class iA{constructor(){g(this,"LA",[]);g(this,"UA",1);g(this,"kA",0)}WA(e){if(this.kA>=this.LA.length){const r={id:this.UA++,type:e,params:{},state:{lineWeight:1,rotation: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.LA.push(r)}const B=this.LA[this.kA];switch(B.id=this.UA++,B.type=e,e){case u.RECTANGLE:case u.ELLIPSE:B.params&&"width"in B.params||(B.params={x:0,y:0,width:0,height:0});break;case u.ARC:B.params&&"start"in B.params||(B.params={x:0,y:0,width:0,height:0,start:0,stop:0});break;case u.LINE:B.params&&"x2"in B.params||(B.params={x1:0,y1:0,x2:0,y2:0,thickness:void 0});break;case u.TRIANGLE:B.params&&"x3"in B.params||(B.params={x1:0,y1:0,x2:0,y2:0,x3:0,y3:0});break;case u.BEZIER_CURVE:B.params&&"cp2y"in B.params||(B.params={x1:0,y1:0,cp1x:0,cp1y:0,cp2x:0,cp2y:0,x2:0,y2:0,thickness:void 0});break;default:B.params||(B.params={})}return this.kA++,B}HA(e,B,r,i,s){const E=this.WA(u.RECTANGLE);return E.params.x=e,E.params.y=B,E.params.width=r,E.params.height=i,s.IA(E.state),E.id}JA(e,B,r,i,s,E){const Q=this.WA(u.LINE);return Q.params.x1=e,Q.params.y1=B,Q.params.x2=r,Q.params.y2=i,Q.params.thickness=s,E.IA(Q.state),Q.id}VA(e,B,r,i,s){const E=this.WA(u.ELLIPSE);return E.params.x=e,E.params.y=B,E.params.width=r,E.params.height=i,s.IA(E.state),E.id}KA(e,B,r,i,s,E,Q){const o=this.WA(u.ARC);return o.params.x=e,o.params.y=B,o.params.width=r,o.params.height=i,o.params.start=s,o.params.stop=E,Q.IA(o.state),o.id}jA(e,B,r,i,s,E,Q){const o=this.WA(u.TRIANGLE);return o.params.x1=e,o.params.y1=B,o.params.x2=r,o.params.y2=i,o.params.x3=s,o.params.y3=E,Q.IA(o.state),o.id}ZA(e,B,r,i,s,E,Q,o,a,h){const c=this.WA(u.BEZIER_CURVE);return c.params.x1=e,c.params.y1=B,c.params.cp1x=r,c.params.cp1y=i,c.params.cp2x=s,c.params.cp2y=E,c.params.x2=Q,c.params.y2=o,c.params.thickness=a,h.IA(c.state),c.id}get length(){return this.kA}get isEmpty(){return this.kA===0}NA(){this.kA=0}[Symbol.iterator](){let e=0;const B=this.kA,r=this.LA;return{next:()=>e<B?{value:r[e++],done:!1}:{value:void 0,done:!0}}}}const b=class b{static XA(e,B,r=0){var E,Q,o,a,h,c,l,D,C,P;const i=B||new Float32Array(b.FLOATS_PER_INSTANCE);let s=r;return i[s++]=e.position[0],i[s++]=e.position[1],i[s++]=e.size[0],i[s++]=e.size[1],i[s++]=e.character[0],i[s++]=e.character[1],i[s++]=e.character[2],i[s++]=e.primaryColor[0],i[s++]=e.primaryColor[1],i[s++]=e.primaryColor[2],i[s++]=e.primaryColor[3],i[s++]=e.secondaryColor[0],i[s++]=e.secondaryColor[1],i[s++]=e.secondaryColor[2],i[s++]=e.secondaryColor[3],i[s++]=e.rotation[0],i[s++]=e.rotation[1],i[s++]=e.transform[0],i[s++]=e.transform[1],i[s++]=e.transform[2],i[s++]=e.globalRotation,i[s++]=e.rotationCenter[0],i[s++]=e.rotationCenter[1],i[s++]=((E=e.arcAngles)==null?void 0:E[0])||0,i[s++]=((Q=e.arcAngles)==null?void 0:Q[1])||0,i[s++]=((o=e.bezierControlPoint1)==null?void 0:o[0])||0,i[s++]=((a=e.bezierControlPoint1)==null?void 0:a[1])||0,i[s++]=((h=e.bezierControlPoint2)==null?void 0:h[0])||0,i[s++]=((c=e.bezierControlPoint2)==null?void 0:c[1])||0,i[s++]=((l=e.bezierStartPoint)==null?void 0:l[0])||0,i[s++]=((D=e.bezierStartPoint)==null?void 0:D[1])||0,i[s++]=((C=e.bezierEndPoint)==null?void 0:C[0])||0,i[s++]=((P=e.bezierEndPoint)==null?void 0:P[1])||0,i}static qA(e){const B=e.length*b.FLOATS_PER_INSTANCE,r=new Float32Array(B);for(let i=0;i<e.length;i++){const s=i*b.FLOATS_PER_INSTANCE;b.XA(e[i],r,s)}return r}};g(b,"BYTES_PER_INSTANCE",132),g(b,"FLOATS_PER_INSTANCE",33);let T=b;const f=class f{};g(f,"STRIDE",T.BYTES_PER_INSTANCE),g(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:1,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:84,divisor:1},a_instanceArcAngles:{location:-1,size:2,type:WebGL2RenderingContext.FLOAT,normalized:!1,stride:f.STRIDE,offset:92,divisor:1},a_instanceBezierCP1:{location:-1,size:2,type:WebGL2RenderingContext.FLOAT,normalized:!1,stride:f.STRIDE,offset:100,divisor:1},a_instanceBezierCP2:{location:-1,size:2,type:WebGL2RenderingContext.FLOAT,normalized:!1,stride:f.STRIDE,offset:108,divisor:1},a_instanceBezierStart:{location:-1,size:2,type:WebGL2RenderingContext.FLOAT,normalized:!1,stride:f.STRIDE,offset:116,divisor:1},a_instanceBezierEnd:{location:-1,size:2,type:WebGL2RenderingContext.FLOAT,normalized:!1,stride:f.STRIDE,offset:124,divisor:1}});let Y=f;class sA{constructor(e,B=1e3,r=1.5){g(this,"m");g(this,"At",[]);g(this,"tt");g(this,"et");g(this,"Bt",null);g(this,"Qt",!0);g(this,"st",0);g(this,"Et",new Map);g(this,"it",null);this.m=e,this.tt=B,this.et=r,this.rt()}RA(e){const B=this.At.length;return this.At.push(e),this.Qt=!0,B}get count(){return this.At.length}get isEmpty(){return this.At.length===0}clear(){this.At.length=0,this.Qt=!0}nt(e){if(e<=this.tt)return;const B=Math.ceil(e*this.et);this.tt=B,this.rt(),console.log(`InstanceBatch: Grew buffer capacity to ${B} instances`)}rt(){const e=this.m;if(this.Bt&&e.deleteBuffer(this.Bt),this.Bt=e.createBuffer(),!this.Bt)throw Error("Failed to create instance buffer");const B=this.tt*T.BYTES_PER_INSTANCE;e.bindBuffer(e.ARRAY_BUFFER,this.Bt),e.bufferData(e.ARRAY_BUFFER,B,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,null),this.Qt=!0,this.st=0}gt(){if(!this.Qt||this.At.length===0)return;const e=this.m,B=this.At.length;this.nt(B),(!this.it||this.it.length<B*T.FLOATS_PER_INSTANCE)&&(this.it=new Float32Array(B*T.FLOATS_PER_INSTANCE));const r=T.qA(this.At);e.bindBuffer(e.ARRAY_BUFFER,this.Bt),B<=this.st?e.bufferSubData(e.ARRAY_BUFFER,0,r):e.bufferData(e.ARRAY_BUFFER,r,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,null),this.Qt=!1,this.st=B}ot(e){let B=this.Et.get(e);if(!B){B=new Map;const r=this.m;for(const i in Y.ATTRIBUTES){const s=r.getAttribLocation(e,i);s!==-1&&B.set(i,s)}this.Et.set(e,B)}return B}zA(e){if(!this.Bt||this.At.length===0)return;const B=this.m,r=e.QA;if(!r)return void console.warn("InstanceBatch: Cannot bind attributes - invalid shader program");this.gt();const i=this.ot(r);B.bindBuffer(B.ARRAY_BUFFER,this.Bt);for(const[s,E]of i){const Q=Y.ATTRIBUTES[s];Q&&(B.enableVertexAttribArray(E),B.vertexAttribPointer(E,Q.size,Q.type,Q.normalized,Q.stride,Q.offset),B.vertexAttribDivisor(E,Q.divisor))}}SA(e){const B=this.m,r=this.ot(e.QA);for(const[,i]of r)B.disableVertexAttribArray(i),B.vertexAttribDivisor(i,0)}FA(e,B){this.At.length!==0&&this.m.drawArraysInstanced(e,0,B,this.At.length)}W(){const e=this.m;this.Bt&&(e.deleteBuffer(this.Bt),this.Bt=null),this.At.length=0,this.Et.clear(),this.it=null}}class G{constructor(e,B,r,i){g(this,"m");g(this,"ct");g(this,"ht");g(this,"Ct");g(this,"Dt",null);this.m=e,this.ct=B,this.ht=r,this.Ct=i;const s=this.m.createBuffer();if(!s)throw Error("Failed to create unit geometry buffer");this.m.bindBuffer(this.m.ARRAY_BUFFER,s),this.m.bufferData(this.m.ARRAY_BUFFER,this.Ct.vertices,this.m.STATIC_DRAW),this.m.bindBuffer(this.m.ARRAY_BUFFER,null),this.Dt=s}get type(){return this.ht}get unitGeometry(){return this.Ct}get unitBuffer(){return this.Dt}get batch(){return this.ct}OA(){this.ct.clear()}TA(){return!this.ct.isEmpty}W(){this.ct.W(),this.Dt&&(this.m.deleteBuffer(this.Dt),this.Dt=null)}lt(e,B,r,i,s){const E=this.Pt(e,B,r,i,s.rotation||0);return{position:[e,B],size:[r,i],character:s.character||[0,0,0],primaryColor:s.charColor||[1,1,1,1],secondaryColor:s.bgColor||[0,0,0,1],rotation:s.charRotation||[0,0],transform:[s.invert?1:0,s.flipHorizontally?1:0,s.flipVertically?1:0],globalRotation:E.radians,rotationCenter:[E.centerX,E.centerY]}}It(e,B){const r=U(this.m)||[0,0,this.m.canvas.width,this.m.canvas.height];return{nx:e/r[2]*2-1,ny:1-B/r[3]*2}}ut(e,B,r){const i=this.It(B,r);e.rotationCenter=[i.nx,i.ny]}Pt(e,B,r,i,s){const E=U(this.m)||[0,0,this.m.canvas.width,this.m.canvas.height],Q=E[2],o=E[3];return{centerX:(e+r/2)/Q*2-1,centerY:1-(B+i/2)/o*2,radians:-s*Math.PI/180,aspectRatio:Q/o}}}const EA={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 G{constructor(e,B){super(e,B,u.RECTANGLE,EA)}RA(e,B){const r=this.lt(e.x,e.y,e.width,e.height,B);return this.ct.RA(r)}}const nA={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 oA extends G{constructor(e,B){super(e,B,u.LINE,nA)}RA(e,B){const r=e.x2-e.x1,i=e.y2-e.y1,s=Math.hypot(r,i),E=Math.atan2(i,r),Q=e.thickness||B.lineWeight||1,o=e.x1+r/2,a=e.y1+i/2,h=o-s/2,c=a,l={character:B.character,charColor:B.charColor,bgColor:B.bgColor,charRotation:B.charRotation,flipHorizontally:B.flipHorizontally,flipVertically:B.flipVertically,invert:B.invert,rotation:(B.rotation||0)+180*E/Math.PI,lineWeight:Q},D=this.lt(h,c,s,Q,l);return this.ut(D,o,a),this.ct.RA(D)}}const gA={vertices:function(n=32){const e=[],B=2*Math.PI/n;for(let r=0;r<n;r++){const i=r*B,s=(r+1)%n*B,E=Math.cos(i),Q=Math.sin(i),o=.5*(E+1),a=.5*(Q+1),h=Math.cos(s),c=Math.sin(s),l=.5*(h+1),D=.5*(c+1);e.push(0,0,.5,.5,E,Q,o,a,h,c,l,D)}return new Float32Array(e)}(32),vertexCount:96,primitiveType:WebGL2RenderingContext.TRIANGLES,stride:16,attributes:{position:{size:2,offset:0},texCoord:{size:2,offset:8}}};class aA extends G{constructor(e,B){super(e,B,u.ELLIPSE,gA)}RA(e,B){const r=this.lt(e.x,e.y,e.width,e.height,B);return this.ut(r,e.x,e.y),this.ct.RA(r)}}let hA={vertices:function(n){const e=[];for(let B=0;B<n;B++){const r=B/n,i=(B+1)/n;e.push(r,0,r,0,r,1,r,1,i,1,i,1)}return new Float32Array(e)}(32),vertexCount:96,primitiveType:WebGL2RenderingContext.TRIANGLES,stride:16,attributes:{position:{size:2,offset:0},texCoord:{size:2,offset:8}}};class cA extends G{constructor(e,B){super(e,B,u.ARC,hA)}RA(e,B){const r=e.x-e.width/2,i=e.y-e.height/2,s=e.start*Math.PI/180,E=e.stop*Math.PI/180,Q=this.lt(r,i,e.width,e.height,B);return this.ut(Q,e.x,e.y),Q.arcAngles=[s,E],this.ct.RA(Q)}}const lA={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 CA extends G{constructor(e,B){super(e,B,u.TRIANGLE,lA)}RA(e,B){const r=Math.min(e.x1,e.x2,e.x3),i=Math.max(e.x1,e.x2,e.x3),s=Math.min(e.y1,e.y2,e.y3),E=i-r,Q=Math.max(e.y1,e.y2,e.y3)-s,o=this.lt(r,s,E,Q,B),a=r+.5*E,h=s+Q*(1/3);return this.ut(o,a,h),this.ct.RA(o)}}function K(n,e,B,r,i){const s=1-n,E=s*s,Q=n*n;return E*s*e+3*E*n*B+3*s*Q*r+Q*n*i}const DA={vertices:function(n=16){const e=[];for(let B=0;B<n;B++){const r=B/n,i=(B+1)/n;e.push(r,-.5,r,0),e.push(i,-.5,i,0),e.push(r,.5,r,1),e.push(r,.5,r,1),e.push(i,-.5,i,0),e.push(i,.5,i,1)}return new Float32Array(e)}(16),vertexCount:96,primitiveType:WebGL2RenderingContext.TRIANGLES,stride:16,attributes:{position:{size:2,offset:0},texCoord:{size:2,offset:8}}};class PA extends G{constructor(e,B){super(e,B,u.BEZIER_CURVE,DA)}RA(e,B){const r=B.lineWeight||1,i=K(.5,e.x1,e.cp1x,e.cp2x,e.x2),s=K(.5,e.y1,e.cp1y,e.cp2y,e.y2),E={character:B.character,charColor:B.charColor,bgColor:B.bgColor,charRotation:B.charRotation,flipHorizontally:B.flipHorizontally,flipVertically:B.flipVertically,invert:B.invert,rotation:B.rotation||0,lineWeight:r},Q=this.lt(0,0,1,r,E);return this.ut(Q,i,s),Q.bezierStartPoint=[e.x1,e.y1],Q.bezierControlPoint1=[e.cp1x,e.cp1y],Q.bezierControlPoint2=[e.cp2x,e.cp2y],Q.bezierEndPoint=[e.x2,e.y2],this.ct.RA(Q)}}class uA{constructor(e){g(this,"m");g(this,"wt",null);g(this,"ft",null);g(this,"dt",null);g(this,"_t",new Map);g(this,"vt");g(this,"xt");g(this,"yt");this.m=e,this.yt=new eA,this.vt=new rA(e),this.xt=new iA,this.ft=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,this.ft),e.bufferData(e.ARRAY_BUFFER,new Float32Array([-1,-1,0,0,1,-1,1,0,-1,1,0,1,1,-1,1,0,1,1,1,1,-1,1,0,1]),e.STATIC_DRAW),this.dt=e.createBuffer(),S(this.m,[0,0,this.m.canvas.width,this.m.canvas.height])}bt(e){let B=this._t.get(e);if(B)return B;const r=new sA(this.m);return B=(0,{[u.RECTANGLE]:()=>new QA(this.m,r),[u.LINE]:()=>new oA(this.m,r),[u.ELLIPSE]:()=>new aA(this.m,r),[u.ARC]:()=>new cA(this.m,r),[u.TRIANGLE]:()=>new CA(this.m,r),[u.BEZIER_CURVE]:()=>new PA(this.m,r)}[e])(),this._t.set(e,B),B}Gt(e){this.wt!==e&&(this.wt=e,e.q())}$t(e,B){return new tA(this.m,e,B)}Mt(e,B,r,i){var P;const s=this.m,E=s.canvas.width,Q=s.canvas.height,o=e/E*2-1,a=(e+r)/E*2-1,h=1-B/Q*2,c=1-(B+i)/Q*2,l=new Float32Array([o,c,a,c,o,h,a,c,a,h,o,h]);s.bindBuffer(s.ARRAY_BUFFER,this.dt),s.bufferData(s.ARRAY_BUFFER,l,s.DYNAMIC_DRAW);const D=((P=this.wt)==null?void 0:P.QA)||s.getParameter(s.CURRENT_PROGRAM),C=D?s.getAttribLocation(D,"a_position"):-1;C!==-1&&(s.enableVertexAttribArray(C),s.vertexAttribPointer(C,2,s.FLOAT,!1,8,0)),s.drawArrays(s.TRIANGLES,0,6),C!==-1&&s.disableVertexAttribArray(C)}Yt(e,B,r,i){this.xt.HA(e,B,r,i,this.yt)}Tt(e,B,r,i){this.xt.JA(e,B,r,i,this.yt.lineWeight,this.yt)}zt(e,B,r,i){this.xt.VA(e,B,r,i,this.yt)}Ft(e,B,r,i,s,E){this.xt.jA(e,B,r,i,s,E,this.yt)}St(e,B,r,i,s,E,Q,o){const a=this.yt.lineWeight;this.xt.ZA(e,B,r,i,s,E,Q,o,a,this.yt)}Ot(e,B,r=1,i={}){return new H(this.m,e,B,r,i)}Rt(e,B,r,i,s,E){this.xt.KA(e,B,r,i,s,E,this.yt)}Lt(e,B=e,r=e,i=255){this.state.yA(e,B,r,i),this.NA(e/255,B/255,r/255,i/255)}NA(e=0,B=0,r=0,i=0){this.m.clearColor(e,B,r,i),this.m.clear(this.m.COLOR_BUFFER_BIT)}Ut(){this.m.viewport(0,0,this.m.canvas.width,this.m.canvas.height),S(this.m,[0,0,this.m.canvas.width,this.m.canvas.height])}get context(){return this.m}get state(){return this.yt}kt(e){const B=U(this.m)??this.m.getParameter(this.m.VIEWPORT),r={shader:e,gl:this.m,viewport:B},i=new Set;for(const s of this.xt)i.add(s.type);for(const s of i)this.bt(s);this.vt.YA(r,this.xt,this._t),this.xt.NA()}W(){this.m.deleteBuffer(this.ft),this.m.deleteBuffer(this.dt),this.xt.NA();for(const e of this._t.values())e.W()}}const w={readShort:(n,e)=>(w.t.uint16[0]=n[e]<<8|n[e+1],w.t.int16[0]),readUshort:(n,e)=>n[e]<<8|n[e+1],readUshorts(n,e,B){const r=[];for(let i=0;i<B;i++)r.push(w.readUshort(n,e+2*i));return r},readUint(n,e){const B=w.t.uint8;return B[3]=n[e],B[2]=n[e+1],B[1]=n[e+2],B[0]=n[e+3],w.t.uint32[0]},readASCII(n,e,B){let r="";for(let i=0;i<B;i++)r+=String.fromCharCode(n[e+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)}})()},IA={parseTab(n,e,B){const r={tables:[],ids:{},off:e};n=new Uint8Array(n.buffer,e,B),e=0;const i=w,s=i.readUshort,E=s(n,e+=2);e+=2;const Q=[];for(let o=0;o<E;o++){const a=s(n,e),h=s(n,e+=2);e+=2;const c=i.readUint(n,e);e+=4;const l=`p${a}e${h}`;let D=Q.indexOf(c);if(D===-1){let C;D=r.tables.length,Q.push(c);const P=s(n,c);C=P===4?this.parse4(n,c):P===12?this.parse12(n,c):{format:P},r.tables.push(C)}r.ids[l]!=null&&console.warn("Multiple tables for one platform+encoding: "+l),r.ids[l]=D}return r},parse4(n,e){const B=w,r=B.readUshort,i=B.readUshorts,s=e,E=r(n,e+=2);e+=2;const Q=r(n,e+=2)>>>1,o={format:4,searchRange:r(n,e+=2),entrySelector:0,rangeShift:0,endCount:[],startCount:[],idDelta:[],idRangeOffset:[],glyphIdArray:[]};e+=2,o.entrySelector=r(n,e),e+=2,o.rangeShift=r(n,e),e+=2,o.endCount=i(n,e,Q),e+=2*Q,e+=2,o.startCount=i(n,e,Q),e+=2*Q;for(let a=0;a<Q;a++)o.idDelta.push(B.readShort(n,e)),e+=2;return o.idRangeOffset=i(n,e,Q),e+=2*Q,o.glyphIdArray=i(n,e,s+E-e>>1),o},parse12(n,e){const B=w.readUint;B(n,e+=4),B(n,e+=4);const r=B(n,e+=4);e+=4;const i=new Uint32Array(3*r);for(let s=0;s<3*r;s+=3)i[s]=B(n,e+(s<<2)),i[s+1]=B(n,e+(s<<2)+4),i[s+2]=B(n,e+(s<<2)+8);return{format:12,groups:i}}},fA={parseTab(n,e,B){const r=w;e+=18;const i=r.readUshort(n,e);e+=2,e+=16;const s=r.readShort(n,e);e+=2;const E=r.readShort(n,e);e+=2;const Q=r.readShort(n,e);e+=2;const o=r.readShort(n,e);return e+=2,e+=6,{unitsPerEm:i,xMin:s,yMin:E,xMax:Q,yMax:o,indexToLocFormat:r.readShort(n,e)}}},dA={parseTab(n,e,B){const r=w;e+=4;const i=["ascender","descender","lineGap","advanceWidthMax","minLeftSideBearing","minRightSideBearing","xMaxExtent","caretSlopeRise","caretSlopeRun","caretOffset","res0","res1","res2","res3","metricDataFormat","numberOfHMetrics"],s={};for(let E=0;E<i.length;E++){const Q=i[E],o=Q==="advanceWidthMax"||Q==="numberOfHMetrics"?r.readUshort:r.readShort;s[Q]=o(n,e+2*E)}return s}},wA={parseTab(n,e,B,r){const i=w,s=[],E=[],Q=r.maxp.numGlyphs,o=r.hhea.numberOfHMetrics;let a=0,h=0,c=0;for(;c<o;)a=i.readUshort(n,e+(c<<2)),h=i.readShort(n,e+(c<<2)+2),s.push(a),E.push(h),c++;for(;c<Q;)s.push(a),E.push(h),c++;return{aWidth:s,lsBearing:E}}},$={cmap:IA,head:fA,hhea:dA,maxp:{parseTab(n,e,B){const r=w;return r.readUint(n,e),e+=4,{numGlyphs:r.readUshort(n,e)}}},hmtx:wA,loca:{parseTab(n,e,B,r){const i=w,s=[],E=r.head.indexToLocFormat,Q=r.maxp.numGlyphs+1;if(E===0)for(let o=0;o<Q;o++)s.push(i.readUshort(n,e+(o<<1))<<1);else if(E===1)for(let o=0;o<Q;o++)s.push(i.readUint(n,e+(o<<2)));return s}},glyf:{parseTab(n,e,B,r){const i=[],s=r.maxp.numGlyphs;for(let E=0;E<s;E++)i.push(null);return i},Wt(n,e){const B=w,r=n.Ht,i=n.loca;if(i[e]===i[e+1])return null;const s=x.findTable(r,"glyf",n.Jt);if(!s)return null;let E=s[0]+i[e];const Q={};if(Q.noc=B.readShort(r,E),E+=2,Q.xMin=B.readShort(r,E),E+=2,Q.yMin=B.readShort(r,E),E+=2,Q.xMax=B.readShort(r,E),E+=2,Q.yMax=B.readShort(r,E),E+=2,Q.xMin>=Q.xMax||Q.yMin>=Q.yMax)return null;if(Q.noc>0){Q.endPts=[];for(let l=0;l<Q.noc;l++)Q.endPts.push(B.readUshort(r,E)),E+=2;const o=B.readUshort(r,E);if(E+=2,r.length-E<o)return null;E+=o;const a=Q.endPts[Q.noc-1]+1;Q.flags=[];for(let l=0;l<a;l++){const D=r[E];if(E++,Q.flags.push(D),8&D){const C=r[E];E++;for(let P=0;P<C;P++)Q.flags.push(D),l++}}Q.xs=[];for(let l=0;l<a;l++){const D=Q.flags[l],C=!!(16&D);2&D?(Q.xs.push(C?r[E]:-r[E]),E++):C?Q.xs.push(0):(Q.xs.push(B.readShort(r,E)),E+=2)}Q.ys=[];for(let l=0;l<a;l++){const D=Q.flags[l],C=!!(32&D);4&D?(Q.ys.push(C?r[E]:-r[E]),E++):C?Q.ys.push(0):(Q.ys.push(B.readShort(r,E)),E+=2)}let h=0,c=0;for(let l=0;l<a;l++)h+=Q.xs[l],c+=Q.ys[l],Q.xs[l]=h,Q.ys[l]=c}else Q.parts=[],Q.endPts=[],Q.flags=[],Q.xs=[],Q.ys=[];return Q}}},x={parse:n=>[((e,B,r,i)=>{const s=$,E={Ht:e,Vt:B,Jt:r};for(const Q in s){const o=Q,a=x.findTable(e,o,r);if(a){const[h,c]=a;let l=i[h];l==null&&(l=s[o].parseTab(e,h,c,E),i[h]=l),E[o]=l}}return E})(new Uint8Array(n),0,0,{})],findTable(n,e,B){const r=w,i=r.readUshort(n,B+4);let s=B+12;for(let E=0;E<i;E++){const Q=r.readASCII(n,s,4);r.readUint(n,s+4);const o=r.readUint(n,s+8),a=r.readUint(n,s+12);if(Q===e)return[o,a];s+=16}return null},T:$,B:w};class L{constructor(){g(this,"Kt",new Map);g(this,"jt",new Map)}Zt(e,B){const r=`${this.Nt(e)}_${B}`;if(this.Kt.has(r))return this.Kt.get(r);const i=e.cmap;if(!i||!i.tables)return this.Kt.set(r,0),0;let s=0;for(const E of i.tables)if(E.format===4?s=this.Xt(B,E):E.format===12&&(s=this.qt(B,E)),s>0)break;return this.Kt.set(r,s),s}Ae(e,B){const r=B.codePointAt(0);return r===void 0?0:this.Zt(e,r)}te(e,B){const r=e.hmtx;return r&&r.aWidth&&r.aWidth.length!==0?B<r.aWidth.length?r.aWidth[B]:r.aWidth[r.aWidth.length-1]:0}ee(e,B){const r=B/e.head.unitsPerEm,i=e.hhea.ascender*r,s=e.hhea.descender*r,E=e.hhea.lineGap*r;return{ascender:i,descender:s,lineGap:E,lineHeight:i-s+E,unitsPerEm:e.head.unitsPerEm,scale:r}}Be(){this.Kt.clear(),this.jt.clear()}Nt(e){return`${e.Jt}_${e.Ht.length}`}Xt(e,B){const r=B.endCount.length;let i=-1;for(let s=0;s<r;s++)if(e<=B.endCount[s]){i=s;break}if(i===-1||e<B.startCount[i])return 0;if(B.idRangeOffset[i]===0)return e+B.idDelta[i]&65535;{const s=B.idRangeOffset[i]/2+(e-B.startCount[i])-(r-i);if(s>=0&&s<B.glyphIdArray.length){const E=B.glyphIdArray[s];return E===0?0:E+B.idDelta[i]&65535}}return 0}qt(e,B){const r=B.groups.length/3;for(let i=0;i<r;i++){const s=B.groups[3*i],E=B.groups[3*i+1],Q=B.groups[3*i+2];if(e>=s&&e<=E)return Q+(e-s)}return 0}}class mA{constructor(e){g(this,"Qe");this.Qe=e}se(e){var r;const B=[];return(r=e.cmap)!=null&&r.tables?(e.cmap.tables.forEach(i=>{if(i.format===4){const s=this.Ee(i);B.push(...s)}else if(i.format===12){const s=this.ie(i);B.push(...s)}}),[...new Set(B)]):[]}re(e,B){return this.Qe.Ae(e,B)>0}ne(e,B){for(const r of B)if(!this.re(e,r))return!1;return!0}ge(e,B){return B.filter(r=>this.re(e,r))}oe(e){return e.filter(B=>this.ae(B))}Ee(e){const B=[];if(!(e.startCount&&e.endCount&&e.idRangeOffset&&e.idDelta))return B;for(let r=0;r<e.startCount.length;r++){const i=e.startCount[r],s=e.endCount[r];if(i!==65535||s!==65535){for(let E=i;E<=s;E++)if(this.ce(e,E,r)>0)try{const Q=String.fromCodePoint(E);B.push(Q)}catch{}}}return B}ie(e){const B=[];if(!e.groups)return B;for(let r=0;r<e.groups.length;r+=3){const i=e.groups[r],s=e.groups[r+1],E=e.groups[r+2];for(let Q=i;Q<=s;Q++)if(E+(Q-i)>0)try{const o=String.fromCodePoint(Q);B.push(o)}catch{}}return B}ce(e,B,r){if(e.idRangeOffset[r]===0)return B+e.idDelta[r]&65535;{const i=e.idRangeOffset[r]/2+(B-e.startCount[r])-(e.startCount.length-r);if(i>=0&&e.glyphIdArray&&i<e.glyphIdArray.length){const s=e.glyphIdArray[i];if(s!==0)return s+e.idDelta[r]&65535}}return 0}ae(e){const B=e.codePointAt(0)||0;return!(B>=0&&B<=31&&B!==9&&B!==10&&B!==13||B>=127&&B<=159)}}class pA{constructor(){g(this,"he");const e=new L;this.he=new mA(e)}extractCharacters(e){return this.he.se(e)}filterProblematicCharacters(e){return this.he.oe(e)}characterExists(e,B){return this.he.re(e,B)}allCharactersExist(e,B){return this.he.ne(e,B)}}class yA{constructor(e){g(this,"Ce");g(this,"De");g(this,"le");g(this,"Pe");this.le=e,this.Pe=new L,this.Ce=document.createElement("canvas"),this.De=this.Ce.getContext("2d",{willReadFrequently:!0,alpha:!1})}createTextureAtlas(e,B,r,i){const s=e.length,E=Math.ceil(Math.sqrt(s)),Q=Math.ceil(s/E),o=B.width*E,a=B.height*Q,h=typeof i=="object"?i:null;this.Ie(o,a),this.ue(e,B,E,r,h);const c=this.le.Ot(o,a,1,{filter:"nearest"});return c.S(this.Ce),{framebuffer:c,columns:E,rows:Q}}Ie(e,B){this.Ce.width=e,this.Ce.height=B,this.Ce.style.width=e+"px",this.Ce.style.height=e+"px",this.De.imageSmoothingEnabled=!1,this.Ce.style.imageRendering="pixelated",this.De.fillStyle="black",this.De.fillRect(0,0,e,B),this.De.textBaseline="top",this.De.textAlign="left",this.De.fillStyle="white"}ue(e,B,r,i,s){const E=i/s.head.unitsPerEm;for(let Q=0;Q<e.length;Q++){const o=Q%r,a=Math.floor(Q/r),h=e[Q].character,c=this.we(s,h);if(!c)continue;const l=h.codePointAt(0)||0,D=this.Pe.Zt(s,l),C=this.fe(s,D)*E,P=o*B.width,p=a*B.height,m=P+.5*B.width,y=p+.5*B.height,v=Math.round(m-.5*B.width),F=Math.round(y-.5*i),XA=v+.5*(B.width-C),ZA=F+s.hhea.ascender*E;this.de(c,XA,ZA,E)}}we(e,B){const r=B.codePointAt(0)||0,i=this.Pe.Zt(e,r);if(i===0)return null;if(e.glyf&&e.glyf[i]!==null)return e.glyf[i];if(x&&x.T&&x.T.glyf){const s=x.T.glyf.Wt(e,i);return e.glyf&&s&&(e.glyf[i]=s),s}return null}fe(e,B){const r=e.hmtx;return r&&r.aWidth?B<r.aWidth.length?r.aWidth[B]:r.aWidth[r.aWidth.length-1]:0}de(e,B,r,i){if(!e||!e.xs||e.noc===0)return;const{xs:s,ys:E,endPts:Q,flags:o}=e;if(!(s&&E&&Q&&o))return;this.De.beginPath();let a=0;for(let h=0;h<Q.length;h++){const c=Q[h];if(!(c<a)){if(c>=a){const l=B+s[a]*i,D=r-E[a]*i;this.De.moveTo(l,D);let C=a+1;for(;C<=c;)if(1&o[C]){const P=B+s[C]*i,p=r-E[C]*i;this.De.lineTo(P,p),C++}else{const P=B+s[C]*i,p=r-E[C]*i;let m=C+1>c?a:C+1;if(1&o[m]){const y=B+s[m]*i,v=r-E[m]*i;this.De.quadraticCurveTo(P,p,y,v),C=m+1}else{const y=(P+(B+s[m]*i))/2,v=(p+(r-E[m]*i))/2;this.De.quadraticCurveTo(P,p,y,v),C=m}}this.De.closePath()}a=c+1}}this.De.fill()}}class xA{constructor(){g(this,"Qe");this.Qe=new L}calculateMaxGlyphDimensions(e,B,r){let i=0;const s=this.Qe.ee(r,B),E=s.lineHeight;for(const Q of e){const o=this.Qe.Ae(r,Q);if(o===0)continue;const a=this.Qe.te(r,o)*s.scale;i=Math.max(i,a)}return{width:Math.ceil(i),height:Math.ceil(E)}}getCharacterAdvanceWidth(e,B,r){const i=this.Qe.ee(r,B),s=this.Qe.Ae(r,e);return this.Qe.te(r,s)*i.scale}getFontMetrics(e,B){return this.Qe.ee(B,e)}Be(){this.Qe.Be()}}class vA{constructor(){g(this,"Pe");this.Pe=new L}createCharacterObjects(e,B){return e.map((r,i)=>{const s=r.codePointAt(0)||0,E=this.pe(i);let Q=0;if(B.hmtx&&B.hmtx.aWidth){const o=this.Pe.Zt(B,s);o>0&&B.hmtx.aWidth[o]!==void 0&&(Q=B.hmtx.aWidth[o])}return{character:r,unicode:s,color:E,advanceWidth:Q}})}pe(e){return[e%256/255,Math.floor(e/256)%256/255,Math.floor(e/65536)%256/255]}me(e,B){if(!_.l(typeof e=="string","Character must be a string.",{method:"getCharacterColor",providedValue:e}))return[0,0,0];const r=B.find(i=>i.character===e);return r?r.color:[0,0,0]}_e(e,B){return _.l(typeof e=="string"&&e.length>0,"Characters must be a string with at least one character.",{method:"getCharacterColors",providedValue:e})?Array.from(e).map(r=>this.me(r,B)||[0,0,0]):[[0,0,0]]}}class V{constructor(e,B=16){g(this,"ve");g(this,"xe",[]);g(this,"ye");g(this,"be",16);g(this,"Ge",0);g(this,"$e",0);g(this,"Me",{width:0,height:0});g(this,"Ye");g(this,"Te");g(this,"ze");g(this,"Fe");g(this,"Se");this.be=B,this.Te=new pA,this.ze=new yA(e),this.Fe=new xA,this.Se=new vA}async Oe(e){let B;if(e){const r=await fetch(e);if(!r.ok)throw new I(`Failed to load font file: ${r.status} ${r.statusText}`);B=await r.arrayBuffer()}else B=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
8
+ `)).arrayBuffer();await this.Re(B),this.ve=x.parse(B)[0],await this.Le()}Ue(e){if(e===void 0)return this.be;this.be=e,this.Me=this.Fe.calculateMaxGlyphDimensions(this.xe.map(r=>r.character),this.be,this.ve);const B=this.ze.createTextureAtlas(this.xe,this.Me,this.be,this.ve);this.ye=B.framebuffer,this.Ge=B.columns,this.$e=B.rows}async ke(e){try{const B=await fetch(e);if(!B.ok)throw new I(`Failed to load font file: ${B.status} ${B.statusText}`);const r=await B.arrayBuffer();await this.Re(r);const i=x.parse(r);if(!i||i.length===0)throw Error("Failed to parse font file");this.ve=i[0],await this.Le()}catch(B){throw new I("Failed to load font: "+(B instanceof Error?B.message:"Unknown error"),B)}}async Re(e){const B=Date.now();this.Ye=new FontFace("CustomFont_"+B,e),await this.Ye.load(),document.fonts.add(this.Ye)}async Le(){const e=this.Te.extractCharacters(this.ve),B=this.Te.filterProblematicCharacters(e);this.xe=this.Se.createCharacterObjects(B,this.ve),this.Me=this.Fe.calculateMaxGlyphDimensions(B,this.be,this.ve);const r=this.ze.createTextureAtlas(this.xe,this.Me,this.be,this.ve);this.ye=r.framebuffer,this.Ge=r.columns,this.$e=r.rows}me(e){return this.Se.me(e,this.xe)}_e(e){return this.Se._e(e,this.xe)}W(){this.ye.W(),document.fonts.delete(this.Ye)}get fontFramebuffer(){return this.ye}get characters(){return this.xe}get textureColumns(){return this.Ge}get textureRows(){return this.$e}get maxGlyphDimensions(){return this.Me}get fontSize(){return this.be}get font(){return this.ve}}class J{constructor(e,B,r){g(this,"We");g(this,"He");g(this,"I");g(this,"u");g(this,"Je");g(this,"Ve");g(this,"Ke");g(this,"je");g(this,"Ze");this.Ke=e,this.je=B,this.Ze=r,this.PA()}PA(){this.We=Math.floor(this.Ke.width/this.je),this.He=Math.floor(this.Ke.height/this.Ze),this.I=this.We*this.je,this.u=this.He*this.Ze,this.Je=Math.floor((this.Ke.width-this.I)/2),this.Ve=Math.floor((this.Ke.height-this.u)/2)}Ne(e,B){this.je=e,this.Ze=B,this.PA()}get cellWidth(){return this.je}get cellHeight(){return this.Ze}get cols(){return this.We}get rows(){return this.He}get width(){return this.I}get height(){return this.u}get offsetX(){return this.Je}get offsetY(){return this.Ve}}class j{constructor(e={}){g(this,"Ke");g(this,"Xe");g(this,"qe");e.canvas?(this.Ke=e.canvas,this.qe=!1):(this.Ke=this.AB(e.width,e.height),this.qe=!0),this.Ke.style.imageRendering="pixelated"}AB(e,B){const r=document.createElement("canvas");return r.className="textmodeCanvas",r.style.imageRendering="pixelated",r.width=e||800,r.height=B||600,document.body.appendChild(r),r}O(e,B){this.Ke.width=e??this.Ke.width,this.Ke.height=B??this.Ke.height}tB(){const e=this.Ke.getContext("webgl2",{alpha:!0,premultipliedAlpha:!1,preserveDrawingBuffer:!0,antialias:!1,depth:!1,stencil:!1,powerPreference:"high-performance"});if(!e)throw new I("`textmode.js` requires WebGL2 support.");return e}W(){this.Xe&&this.Xe.disconnect();const e=this.Ke.getContext("webgl")||this.Ke.getContext("webgl2");if(e){const B=e.getExtension("WEBGL_lose_context");B&&B.loseContext()}this.qe&&this.Ke.parentNode&&this.Ke.parentNode.removeChild(this.Ke)}get canvas(){return this.Ke}get width(){return this.Ke.width}get height(){return this.Ke.height}}class bA{constructor(e=60){g(this,"eB");g(this,"BB");g(this,"QB",null);g(this,"sB",0);g(this,"EB",!0);g(this,"iB",0);g(this,"rB",0);g(this,"nB",[]);g(this,"gB",10);g(this,"oB",0);this.eB=e,this.BB=1e3/e}start(e){if(!this.EB)return;this.sB=performance.now();const B=r=>{if(!this.EB)return void(this.QB=null);const i=r-this.sB;i>=this.BB&&(e(),this.sB=r-i%this.BB),this.EB&&(this.QB=requestAnimationFrame(B))};this.QB=requestAnimationFrame(B)}stop(){this.QB&&(cancelAnimationFrame(this.QB),this.QB=null)}pause(){this.EB&&(this.EB=!1,this.stop())}resume(e){this.EB||(this.EB=!0,this.start(e))}frameRate(e,B){if(e===void 0)return this.iB;this.eB=e,this.BB=1e3/e,this.EB&&B&&(this.stop(),this.start(B))}measureFrameRate(){const e=performance.now();if(this.rB>0){const B=e-this.rB;this.nB.push(B),this.nB.length>this.gB&&this.nB.shift();const r=this.nB.reduce((i,s)=>i+s,0)/this.nB.length;this.iB=1e3/r}this.rB=e}get isLooping(){return this.EB}get frameRateLimit(){return this.eB}get currentFrameRate(){return this.iB}get frameCount(){return this.oB}set frameCount(e){this.oB=e}incrementFrame(){this.oB++}resetFrameCount(){this.oB=0}}const RA=n=>class extends n{rotate(e){this.le.state.wA(e)}push(){this.le.state.DA()}pop(){this.le.state.lA()}rect(e,B,r=1,i=1){this.le.Yt(e,B,r,i)}line(e,B,r,i){this.le.Tt(e,B,r,i)}lineWeight(e){this.le.state.uA(e)}background(e,B=e,r=e,i=255){this.le.Lt(e,B,r,i)}char(e){this.le.state.fA(this.ve.me(e))}charColor(e,B,r){this.le.state.dA(e,B,r)}cellColor(e,B,r){this.le.state.pA(e,B,r)}flipHorizontally(e){this.le.state.mA(e)}flipVertically(e){this.le.state._A(e)}charRotation(e){this.le.state.xA(e)}invert(e){this.le.state.vA(e)}clear(){this.le.Lt(0,0,0,0)}ellipse(e,B,r,i){this.le.zt(e,B,r/2,i/2)}triangle(e,B,r,i,s,E){this.le.Ft(e,B,r,i,s,E)}bezierCurve(e,B,r,i,s,E,Q,o){this.le.St(e,B,r,i,s,E,Q,o)}arc(e,B,r,i,s,E){this.le.Rt(e,B,r,i,s,E)}};class W{aB(e){const B=e.R(0),r=e.R(1),i=e.R(2),s=e.R(3);return{characterPixels:B,primaryColorPixels:r,secondaryColorPixels:i,transformPixels:e.R(4),rotationPixels:s}}cB(e,B){return e[B]+(e[B+1]<<8)}hB(e,B){return{r:e[B],g:e[B+1],b:e[B+2],a:e[B+3]}}}class k{CB(e,B){return new Blob([e],{type:B})}DB(e,B,r){try{const i=this.CB(e,r),s=URL.createObjectURL(i),E=document.createElement("a");E.href=s,E.download=B,E.style.display="none",E.rel="noopener",document.body.appendChild(E),E.click(),document.body.removeChild(E),URL.revokeObjectURL(s)}catch(i){throw console.error("Failed to download file:",i),Error("File download failed: "+(i instanceof Error?i.message:"Unknown error"))}}lB(){return new Date().toISOString().slice(0,19).replace(/:/g,"-")}PB(){const e=new Date;return{date:e.toISOString().split("T")[0],time:e.toTimeString().split(" ")[0].replace(/:/g,"-")}}IB(e){return e.replace(/[<>:"/\\|?*]/g,"_").replace(/\s+/g,"_").replace(/_{2,}/g,"_").replace(/^_+|_+$/g,"").substring(0,255)}uB(){return"'textmode-export'-"+this.lB()}}class TA extends W{wB(e,B,r){const i=e[r]===255,s=e[r+1]===255,E=e[r+2]===255,Q=B[r],o=B[r+1];return{isInverted:i,flipHorizontal:s,flipVertical:E,rotation:Math.round(360*(Q+o/255)/255*100)/100}}fB(e,B,r){return{x:e,y:B,cellX:e*r.cellWidth,cellY:B*r.cellHeight}}dB(e,B){const r=[];let i=0;for(let s=0;s<B.rows;s++)for(let E=0;E<B.cols;E++){const Q=4*i,o=this.cB(e.characterPixels,Q);let a=this.hB(e.primaryColorPixels,Q),h=this.hB(e.secondaryColorPixels,Q);const c=this.wB(e.transformPixels,e.rotationPixels,Q);if(c.isInverted){const D=a;a=h,h=D}const l=this.fB(E,s,B);r.push({charIndex:o,primaryColor:a,secondaryColor:h,transform:c,position:l}),i++}return r}}class MA{pB(e,B){const r=e.cmap;for(const i of r.tables)if(i.format===4){const s=i;for(let E=0;E<s.startCount.length;E++)if(B>=s.startCount[E]&&B<=s.endCount[E]){if(s.idRangeOffset[E]===0)return B+s.idDelta[E]&65535;{const Q=s.idRangeOffset[E]/2+(B-s.startCount[E])-(s.startCount.length-E);if(Q>=0&&Q<s.glyphIdArray.length){const o=s.glyphIdArray[Q];if(o!==0)return o+s.idDelta[E]&65535}}}}else if(i.format===12){const s=i;for(let E=0;E<s.groups.length;E+=3){const Q=s.groups[E],o=s.groups[E+1],a=s.groups[E+2];if(B>=Q&&B<=o)return a+(B-Q)}}return 0}mB(e,B,r,i,s){const E=s/e.head.unitsPerEm;return{getBoundingBox:()=>({x1:r+B.xMin*E,y1:i+-B.yMax*E,x2:r+B.xMax*E,y2:i+-B.yMin*E}),toSVG:()=>this._B(B,r,i,E)}}_B(e,B,r,i){if(!e||!e.xs)return"";const{xs:s,ys:E,endPts:Q,flags:o}=e;if(!(s&&E&&Q&&o))return"";let a="",h=0;for(let c=0;c<Q.length;c++){const l=Q[c];if(!(l<h)){if(l>=h){const D=B+s[h]*i,C=r-E[h]*i;a+=`M${D.toFixed(2)},${C.toFixed(2)}`;let P=h+1;for(;P<=l;)if(1&o[P]){const p=B+s[P]*i,m=r-E[P]*i;a+=`L${p.toFixed(2)},${m.toFixed(2)}`,P++}else{const p=B+s[P]*i,m=r-E[P]*i;let y=P+1>l?h:P+1;if(1&o[y]){const v=B+s[y]*i,F=r-E[y]*i;a+=`Q${p.toFixed(2)},${m.toFixed(2)} ${v.toFixed(2)},${F.toFixed(2)}`,P=y+1}else{const v=(p+(B+s[y]*i))/2,F=(m+(r-E[y]*i))/2;a+=`Q${p.toFixed(2)},${m.toFixed(2)} ${v.toFixed(2)},${F.toFixed(2)}`,P=y}}a+="Z"}h=l+1}}return a}vB(e,B,r,i,s){const E=e.codePointAt(0)||0,Q=this.pB(B,E);let o=null;return B.glyf&&B.glyf[Q]!==null?o=B.glyf[Q]:(o=x.T.glyf.Wt(B,Q),B.glyf[Q]=o),this.mB(B,o,r,i,s)}xB(e,B,r,i,s,E,Q,o){const a=r+(s-o*(Q/B.head.unitsPerEm))/2,h=i+(E+.7*Q)/2;return this.vB(e,B,a,h,Q).toSVG()||null}}class GA{constructor(){g(this,"yB");this.yB=new MA}bB(e){return`<?xml version="1.0" encoding="UTF-8" standalone="no"?>
9
9
  <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
10
10
  <svg width="${e.width}" height="${e.height}" viewBox="0 0 ${e.width} ${e.height}"
11
11
  xmlns="http://www.w3.org/2000/svg" version="1.1">
12
12
  <title>textmode art generated via textmode.js</title>
13
- <desc>textmode art visualization generated by textmode.js library</desc>`}yB(){return`
13
+ <desc>textmode art visualization generated by textmode.js library</desc>`}GB(){return`
14
14
  </g>
15
- </svg>`}bB(e,B){if(!B.includeBackgroundRectangles)return"";const r=B.backgroundColor,i=`rgba(${r[0]},${r[1]},${r[2]},${r[3]/255})`;return`
16
- <rect width="${e.width}" height="${e.height}" fill="${i}" />`}GB(e){return`rgba(${e.r},${e.g},${e.b},${e.a/255})`}$B(e,B){const{transform:r,position:i}=e,s=i.cellX+B.cellWidth/2,E=i.cellY+B.cellHeight/2,Q=[];if(r.flipHorizontal||r.flipVertical){const o=r.flipHorizontal?-1:1,a=r.flipVertical?-1:1;Q.push(`translate(${s} ${E})`),Q.push(`scale(${o} ${a})`),Q.push(`translate(${-s} ${-E})`)}return r.rotation&&Q.push(`rotate(${r.rotation} ${s} ${E})`),Q.length?` transform="${Q.join(" ")}"`:""}MB(e,B,r){if(!r.includeBackgroundRectangles||e.secondaryColor.a===0)return"";const{position:i}=e,s=this.GB(e.secondaryColor);return r.drawMode==="stroke"?`
15
+ </svg>`}$B(e,B){if(!B.includeBackgroundRectangles)return"";const r=B.backgroundColor,i=`rgba(${r[0]},${r[1]},${r[2]},${r[3]/255})`;return`
16
+ <rect width="${e.width}" height="${e.height}" fill="${i}" />`}MB(e){return`rgba(${e.r},${e.g},${e.b},${e.a/255})`}YB(e,B){const{transform:r,position:i}=e,s=i.cellX+B.cellWidth/2,E=i.cellY+B.cellHeight/2,Q=[];if(r.flipHorizontal||r.flipVertical){const o=r.flipHorizontal?-1:1,a=r.flipVertical?-1:1;Q.push(`translate(${s} ${E})`),Q.push(`scale(${o} ${a})`),Q.push(`translate(${-s} ${-E})`)}return r.rotation&&Q.push(`rotate(${r.rotation} ${s} ${E})`),Q.length?` transform="${Q.join(" ")}"`:""}TB(e,B,r){if(!r.includeBackgroundRectangles||e.secondaryColor.a===0)return"";const{position:i}=e,s=this.MB(e.secondaryColor);return r.drawMode==="stroke"?`
17
17
  <rect x="${i.cellX}" y="${i.cellY}" width="${B.cellWidth}" height="${B.cellHeight}" stroke="${s}" fill="none" stroke-width="${r.strokeWidth}" />`:`
18
- <rect x="${i.cellX}" y="${i.cellY}" width="${B.cellWidth}" height="${B.cellHeight}" fill="${s}" />`}mB(e,B,r,i){const s=r.characters[e.charIndex];if(!s)return"";const E=this.vB._B(s.character,r.font,e.position.cellX,e.position.cellY,B.cellWidth,B.cellHeight,r.fontSize,s.advanceWidth);if(!E)return"";const Q=this.GB(e.primaryColor);return i.drawMode==="stroke"?`
18
+ <rect x="${i.cellX}" y="${i.cellY}" width="${B.cellWidth}" height="${B.cellHeight}" fill="${s}" />`}vB(e,B,r,i){const s=r.characters[e.charIndex];if(!s)return"";const E=this.yB.xB(s.character,r.font,e.position.cellX,e.position.cellY,B.cellWidth,B.cellHeight,r.fontSize,s.advanceWidth);if(!E)return"";const Q=this.MB(e.primaryColor);return i.drawMode==="stroke"?`
19
19
  <path id="${`path-${e.charIndex}-${e.position.cellX}-${e.position.cellY}`.replace(/\./g,"-")}" d="${E}" stroke="${Q}" stroke-width="${i.strokeWidth}" fill="none" />`:`
20
- <path d="${E}" fill="${Q}" />`}YB(e,B,r,i){let s="";s+=this.MB(e,B,i);const E=this.$B(e,B),Q=this.mB(e,B,r,i);return Q&&(E?(s+=`
20
+ <path d="${E}" fill="${Q}" />`}zB(e,B,r,i){let s="";s+=this.TB(e,B,i);const E=this.YB(e,B),Q=this.vB(e,B,r,i);return Q&&(E?(s+=`
21
21
  <g${E}>`,s+=Q,s+=`
22
- </g>`):s+=Q),s}TB(e,B,r,i){let s=this.xB(B);s+=this.bB(B,i),s+=`
23
- <g id="ascii-cells">`;for(const E of e)s+=this.YB(E,B,r,i);return s+=this.yB(),s}zB(e){return e.replace(/<path[^>]*d=""[^>]*\/>/g,"").replace(/\n\s*\n/g,`
24
- `).replace(/[ \t]+$/gm,"")}}class MA extends N{FB(e){return this.hB(e,"image/svg+xml;charset=utf-8")}RB(e,B){this.cB(e,this.lB(B)+".svg","image/svg+xml;charset=utf-8")}SB(e,B){this.RB(e,B||this.PB())}}class K{constructor(){g(this,"OB");g(this,"LB");g(this,"UB");this.OB=new TA,this.LB=new GA,this.UB=new MA}kB(e){return{includeBackgroundRectangles:e.includeBackgroundRectangles??!0,drawMode:e.drawMode??"fill",strokeWidth:e.strokeWidth??1,backgroundColor:e.backgroundColor??[0,0,0,0],filename:e.filename||this.UB.PB()}}WB(e,B={}){const r=this.OB.wB(this.OB.gB(e.pipeline),e.grid),i=this.LB.TB(r,e.grid,e.font,this.kB(B));return this.LB.zB(i)}SB(e,B={}){this.UB.SB(this.WB(e,B),B.filename)}}class FA extends W{HB(e,B,r,i=" "){var Q;const s=[];let E=0;for(let o=0;o<B.rows;o++){const a=[];for(let h=0;h<B.cols;h++){const c=4*E,l=this.oB(e.characterPixels,c),D=((Q=r.characters[l])==null?void 0:Q.character)||i;a.push(D),E++}s.push(a)}return s}}class SA{JB(e,B){const r=[];for(const s of e){let E=s.join("");B.preserveTrailingSpaces||(E=E.replace(/\s+$/,"")),r.push(E)}const i=B.lineEnding==="crlf"?`\r
22
+ </g>`):s+=Q),s}FB(e,B,r,i){let s=this.bB(B);s+=this.$B(B,i),s+=`
23
+ <g id="ascii-cells">`;for(const E of e)s+=this.zB(E,B,r,i);return s+=this.GB(),s}SB(e){return e.replace(/<path[^>]*d=""[^>]*\/>/g,"").replace(/\n\s*\n/g,`
24
+ `).replace(/[ \t]+$/gm,"")}}class _A extends k{OB(e){return this.CB(e,"image/svg+xml;charset=utf-8")}RB(e,B){this.DB(e,this.IB(B)+".svg","image/svg+xml;charset=utf-8")}LB(e,B){this.RB(e,B||this.uB())}}class X{constructor(){g(this,"UB");g(this,"kB");g(this,"WB");this.UB=new TA,this.kB=new GA,this.WB=new _A}HB(e){return{includeBackgroundRectangles:e.includeBackgroundRectangles??!0,drawMode:e.drawMode??"fill",strokeWidth:e.strokeWidth??1,backgroundColor:e.backgroundColor??[0,0,0,0],filename:e.filename||this.WB.uB()}}JB(e,B={}){const r=this.UB.dB(this.UB.aB(e.pipeline),e.grid),i=this.kB.FB(r,e.grid,e.font,this.HB(B));return this.kB.SB(i)}LB(e,B={}){this.WB.LB(this.JB(e,B),B.filename)}}class FA extends W{VB(e,B,r,i=" "){var Q;const s=[];let E=0;for(let o=0;o<B.rows;o++){const a=[];for(let h=0;h<B.cols;h++){const c=4*E,l=this.cB(e.characterPixels,c),D=((Q=r.characters[l])==null?void 0:Q.character)||i;a.push(D),E++}s.push(a)}return s}}class SA{KB(e,B){const r=[];for(const s of e){let E=s.join("");B.preserveTrailingSpaces||(E=E.replace(/\s+$/,"")),r.push(E)}const i=B.lineEnding==="crlf"?`\r
25
25
  `:`
26
- `;return r.join(i)}}class UA extends N{VB(e,B){const r=this.KB(B);this.cB(e,r,"text/plain;charset=utf-8")}KB(e){let B=this.lB(e);return B===".txt"||B.length<=4?this.PB():B}}class Z{constructor(){g(this,"OB");g(this,"LB");g(this,"UB");this.OB=new FA,this.LB=new SA,this.UB=new UA}kB(e){return{preserveTrailingSpaces:e.preserveTrailingSpaces??!1,lineEnding:e.lineEnding??"lf",emptyCharacter:e.emptyCharacter??" ",filename:e.filename||this.UB.PB()}}jB(e,B={}){const r=this.kB(B),i=this.OB.HB(this.OB.gB(e.pipeline),e.grid,e.font,r.emptyCharacter);return this.LB.JB(i,r)}VB(e,B={}){this.UB.VB(this.jB(e,B),B.filename)}}class YA extends W{ZB(e,B=1,r="transparent"){const i=e.canvas;if(B===1&&r==="transparent")return i;const s=document.createElement("canvas"),E=s.getContext("2d"),Q=Math.round(i.width*B),o=Math.round(i.height*B);return s.width=Q,s.height=o,r!=="transparent"&&(E.fillStyle=r,E.fillRect(0,0,Q,o)),E.imageSmoothingEnabled=!1,E.drawImage(i,0,0,i.width,i.height,0,0,Q,o),s}}class OA{NB(e,B){const r=this.XB(B.format);return B.format==="png"?e.toDataURL(r):e.toDataURL(r,B.quality)}async qB(e,B){return new Promise((r,i)=>{const s=this.XB(B.format),E=Q=>{Q?r(Q):i(Error(`Failed to generate ${B.format.toUpperCase()} blob`))};B.format==="png"?e.toBlob(E,s):e.toBlob(E,s,B.quality)})}XB(e){switch(e){case"png":return"image/png";case"jpg":return"image/jpeg";case"webp":return"image/webp";default:throw Error("Unsupported image format: "+e)}}}const LA={png:"image/png",jpg:"image/jpeg",webp:"image/webp"},q={png:".png",jpg:".jpg",webp:".webp"};class zA extends N{AQ(e,B,r){this.tQ(e,this.lB(B)+q[r])}tQ(e,B){const r=URL.createObjectURL(e);try{const i=document.createElement("a");i.href=r,i.download=B,i.style.display="none",i.rel="noopener",document.body.appendChild(i),i.click(),document.body.removeChild(i)}finally{URL.revokeObjectURL(r)}}eQ(e){return e in LA&&e in q}}class WA{constructor(){g(this,"OB");g(this,"LB");g(this,"UB");this.OB=new YA,this.LB=new OA,this.UB=new zA}kB(e){return{format:e.format??"png",quality:e.quality??1,scale:e.scale??1,backgroundColor:e.backgroundColor??"transparent",filename:e.filename||this.UB.PB()}}BQ(e){if(!this.UB.eQ(e.format))throw Error(`Saving '${e.format}' files is not supported`);if(e.quality<0||e.quality>1)throw Error("Image quality must be between 0.0 and 1.0");if(e.scale<=0)throw Error("Scale factor must be greater than 0");e.format==="jpg"&&e.backgroundColor==="transparent"&&(e.backgroundColor="black")}async qB(e,B){if(B.scale===1&&B.backgroundColor==="transparent")return await this.LB.qB(e.canvas,B);const r=this.OB.ZB(e,B.scale,B.backgroundColor);return await this.LB.qB(r,B)}async AQ(e,B={}){const r=this.kB(B);this.BQ(r);const i=await this.qB(e,r);this.UB.AQ(i,r.filename,r.format)}}const NA=n=>class extends n{QQ(){this.Ce.Lt(this.sQ)}toString(e={}){return this.QQ(),new Z().jB({pipeline:this.iQ,grid:this.EQ,font:this.me},e)}saveStrings(e={}){this.QQ(),new Z().VB({pipeline:this.iQ,grid:this.EQ,font:this.me},e)}toSVG(e={}){return this.QQ(),new K().WB(this,e)}saveSVG(e={}){this.QQ(),new K().SB(this,e)}async saveCanvas(e={}){await new WA().AQ(this.Je,e)}},kA=n=>class extends n{async loadFont(e){return this.me.Le(e).then(()=>{const B=this.me.maxGlyphDimensions;this.EQ.je(B.width,B.height),this.Ce.Ot()})}fontSize(e){if(!M.l(typeof e=="number"&&e>0,"Font size must be a positive number greater than 0.",{method:"fontSize",providedValue:e})||this.me.fontSize===e)return;this.me.Oe(e);const B=this.me.maxGlyphDimensions;this.EQ.je(B.width,B.height),this.Ce.Ot()}},JA=n=>class extends n{get frameCount(){return this.rQ.frameCount}set frameCount(e){this.rQ.frameCount=e}frameRate(e){return e===void 0?this.rQ.currentFrameRate:this.rQ.frameRate(e,()=>this.nQ())}noLoop(){this.rQ.pause()}loop(){this.rQ.resume(()=>this.nQ())}redraw(e=1){if(M.l(typeof e=="number"&&e>0&&Number.isInteger(e),"Redraw count must be a positive integer.",{method:"redraw",providedValue:e}))for(let B=0;B<e;B++)this.nQ()}isLooping(){return this.rQ.isLooping}};class HA{constructor(){g(this,"Ce");g(this,"me");g(this,"Je");g(this,"EQ");g(this,"rQ");g(this,"sQ");g(this,"iQ");g(this,"gQ")}nQ(){}}class AA extends function(B,...r){return r.reduce((i,s)=>s(i),B)}(HA,RA,NA,kA,JA){constructor(B={}){super();g(this,"oQ",!1);g(this,"aQ",()=>{});g(this,"hQ",()=>{});g(this,"cQ");this.Je=new j(B),this.Ce=new uA(this.Je.qe()),this.me=new V(this.Ce,B.fontSize??16),this.rQ=new bA(B.frameRate??60),this.sQ=this.Ce.bt(`#version 300 es
26
+ `;return r.join(i)}}class UA extends k{jB(e,B){const r=this.ZB(B);this.DB(e,r,"text/plain;charset=utf-8")}ZB(e){let B=this.IB(e);return B===".txt"||B.length<=4?this.uB():B}}class Z{constructor(){g(this,"UB");g(this,"kB");g(this,"WB");this.UB=new FA,this.kB=new SA,this.WB=new UA}HB(e){return{preserveTrailingSpaces:e.preserveTrailingSpaces??!1,lineEnding:e.lineEnding??"lf",emptyCharacter:e.emptyCharacter??" ",filename:e.filename||this.WB.uB()}}NB(e,B={}){const r=this.HB(B),i=this.UB.VB(this.UB.aB(e.pipeline),e.grid,e.font,r.emptyCharacter);return this.kB.KB(i,r)}jB(e,B={}){this.WB.jB(this.NB(e,B),B.filename)}}class YA extends W{XB(e,B=1,r="transparent"){const i=e.canvas;if(B===1&&r==="transparent")return i;const s=document.createElement("canvas"),E=s.getContext("2d"),Q=Math.round(i.width*B),o=Math.round(i.height*B);return s.width=Q,s.height=o,r!=="transparent"&&(E.fillStyle=r,E.fillRect(0,0,Q,o)),E.imageSmoothingEnabled=!1,E.drawImage(i,0,0,i.width,i.height,0,0,Q,o),s}}class LA{qB(e,B){const r=this.AQ(B.format);return B.format==="png"?e.toDataURL(r):e.toDataURL(r,B.quality)}async tQ(e,B){return new Promise((r,i)=>{const s=this.AQ(B.format),E=Q=>{Q?r(Q):i(Error(`Failed to generate ${B.format.toUpperCase()} blob`))};B.format==="png"?e.toBlob(E,s):e.toBlob(E,s,B.quality)})}AQ(e){switch(e){case"png":return"image/png";case"jpg":return"image/jpeg";case"webp":return"image/webp";default:throw Error("Unsupported image format: "+e)}}}const OA={png:"image/png",jpg:"image/jpeg",webp:"image/webp"},q={png:".png",jpg:".jpg",webp:".webp"};class zA extends k{eQ(e,B,r){this.BQ(e,this.IB(B)+q[r])}BQ(e,B){const r=URL.createObjectURL(e);try{const i=document.createElement("a");i.href=r,i.download=B,i.style.display="none",i.rel="noopener",document.body.appendChild(i),i.click(),document.body.removeChild(i)}finally{URL.revokeObjectURL(r)}}QQ(e){return e in OA&&e in q}}class WA{constructor(){g(this,"UB");g(this,"kB");g(this,"WB");this.UB=new YA,this.kB=new LA,this.WB=new zA}HB(e){return{format:e.format??"png",quality:e.quality??1,scale:e.scale??1,backgroundColor:e.backgroundColor??"transparent",filename:e.filename||this.WB.uB()}}sQ(e){if(!this.WB.QQ(e.format))throw Error(`Saving '${e.format}' files is not supported`);if(e.quality<0||e.quality>1)throw Error("Image quality must be between 0.0 and 1.0");if(e.scale<=0)throw Error("Scale factor must be greater than 0");e.format==="jpg"&&e.backgroundColor==="transparent"&&(e.backgroundColor="black")}async tQ(e,B){if(B.scale===1&&B.backgroundColor==="transparent")return await this.kB.tQ(e.canvas,B);const r=this.UB.XB(e,B.scale,B.backgroundColor);return await this.kB.tQ(r,B)}async eQ(e,B={}){const r=this.HB(B);this.sQ(r);const i=await this.tQ(e,r);this.WB.eQ(i,r.filename,r.format)}}const kA=n=>class extends n{EQ(){this.le.kt(this.iQ)}toString(e={}){return this.EQ(),new Z().NB({pipeline:this.rQ,grid:this.nQ,font:this.ve},e)}saveStrings(e={}){this.EQ(),new Z().jB({pipeline:this.rQ,grid:this.nQ,font:this.ve},e)}toSVG(e={}){return this.EQ(),new X().JB(this,e)}saveSVG(e={}){this.EQ(),new X().LB(this,e)}async saveCanvas(e={}){await new WA().eQ(this.Ke,e)}},NA=n=>class extends n{async loadFont(e){return this.ve.ke(e).then(()=>{const B=this.ve.maxGlyphDimensions;this.nQ.Ne(B.width,B.height),this.le.Ut()})}fontSize(e){if(!_.l(typeof e=="number"&&e>0,"Font size must be a positive number greater than 0.",{method:"fontSize",providedValue:e})||this.ve.fontSize===e)return;this.ve.Ue(e);const B=this.ve.maxGlyphDimensions;this.nQ.Ne(B.width,B.height),this.le.Ut()}},HA=n=>class extends n{get frameCount(){return this.gQ.frameCount}set frameCount(e){this.gQ.frameCount=e}frameRate(e){return e===void 0?this.gQ.currentFrameRate:this.gQ.frameRate(e,()=>this.oQ())}noLoop(){this.gQ.pause()}loop(){this.gQ.resume(()=>this.oQ())}redraw(e=1){if(_.l(typeof e=="number"&&e>0&&Number.isInteger(e),"Redraw count must be a positive integer.",{method:"redraw",providedValue:e}))for(let B=0;B<e;B++)this.oQ()}isLooping(){return this.gQ.isLooping}};class KA{constructor(){g(this,"le");g(this,"ve");g(this,"Ke");g(this,"nQ");g(this,"gQ");g(this,"iQ");g(this,"rQ");g(this,"aQ")}oQ(){}}class AA extends function(B,...r){return r.reduce((i,s)=>s(i),B)}(KA,RA,kA,NA,HA){constructor(B={}){super();g(this,"cQ",!1);g(this,"hQ",()=>{});g(this,"CQ",()=>{});g(this,"DQ");this.Ke=new j(B),this.le=new uA(this.Ke.tB()),this.ve=new V(this.le,B.fontSize??16),this.gQ=new bA(B.frameRate??60),this.iQ=this.le.$t(`#version 300 es
27
27
  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 float 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;mat2 rotate2D(float angle){float s=sin(angle);float c=cos(angle);return mat2(c,-s,s,c);}vec2 evaluateBezier(float t,vec2 p0,vec2 p1,vec2 p2,vec2 p3){float oneMinusT=1.0-t;float oneMinusT2=oneMinusT*oneMinusT;float oneMinusT3=oneMinusT2*oneMinusT;float t2=t*t;float t3=t2*t;return oneMinusT3*p0+3.0*oneMinusT2*t*p1+3.0*oneMinusT*t2*p2+t3*p3;}vec2 evaluateBezierDerivative(float t,vec2 p0,vec2 p1,vec2 p2,vec2 p3){float oneMinusT=1.0-t;float oneMinusT2=oneMinusT*oneMinusT;float t2=t*t;return-3.0*oneMinusT2*p0+3.0*oneMinusT2*p1-6.0*oneMinusT*t*p1+6.0*oneMinusT*t*p2-3.0*t2*p2+3.0*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 isBezierCurve=length(a_instanceBezierCP1)>0.0||length(a_instanceBezierCP2)>0.0||length(a_instanceBezierStart)>0.0||length(a_instanceBezierEnd)>0.0;bool isArc=a_instanceArcAngles.x!=0.0||a_instanceArcAngles.y!=0.0;if(isBezierCurve){float t=a_position.x;float thicknessOffset=a_position.y;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 tangentLength=length(tangent);if(tangentLength>0.0){tangent=tangent/tangentLength;}else{tangent=vec2(1.0,0.0);}vec2 normal=vec2(-tangent.y,tangent.x);float thickness=a_instanceSize.y;vec2 thicknessVector=normal*thicknessOffset*thickness;worldPosition=curvePoint+thicknessVector;}else if(isArc){float startA=a_instanceArcAngles.x;float stopA=a_instanceArcAngles.y;float TWO_PI=6.28318530718;startA=mod(startA,TWO_PI);if(startA<0.0)startA+=TWO_PI;stopA=mod(stopA,TWO_PI);if(stopA<0.0)stopA+=TWO_PI;float cwDelta=startA-stopA;if(cwDelta<=0.0)cwDelta+=TWO_PI;float angle=startA-a_position.x*cwDelta;float r=a_position.y;vec2 local=vec2(cos(angle),sin(angle))*r;vec2 scaledPosition=local*a_instanceSize*0.5+vec2(a_instanceSize.x*0.5,a_instanceSize.y*0.5);worldPosition=scaledPosition+a_instancePosition;}else{vec2 scaledPosition=a_position*a_instanceSize;worldPosition=scaledPosition+a_instancePosition;}vec2 ndc=(worldPosition/u_viewportSize)*2.0-1.0;ndc.y=-ndc.y;if(a_instanceGlobalRotation!=0.0){ndc-=a_instanceRotationCenter;ndc.x*=u_aspectRatio;ndc=rotate2D(-a_instanceGlobalRotation)*ndc;ndc.x/=u_aspectRatio;ndc+=a_instanceRotationCenter;}gl_Position=vec4(ndc,0.0,1.0);}`,`#version 300 es
28
- 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.gQ=this.Ce.bt("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);}")}static async create(B={}){const r=new this(B);await r.me.Fe(B.fontSource);const i=r.me.maxGlyphDimensions;return r.EQ=new X(r.Je.canvas,i.width,i.height),r.iQ=r.Ce.Ft(r.EQ.cols,r.EQ.rows,5),r.CQ(),r.rQ.start(()=>r.nQ()),r}CQ(){this.cQ=()=>{this.hQ()},window.addEventListener("resize",this.cQ)}nQ(){this.rQ.measureFrameRate(),this.rQ.incrementFrame(),this.oQ||(this.iQ.U(),this.Ce.yt(this.sQ),this.aQ(),this.Ce.Lt(this.sQ),this.iQ.k(),this.Ce.St(0),this.Ce.yt(this.gQ),this.gQ.tA({u_characterTexture:this.me.fontFramebuffer,u_charsetDimensions:[this.me.textureColumns,this.me.textureRows],u_asciiCharacterTexture:this.iQ.textures[0],u_primaryColorTexture:this.iQ.textures[1],u_secondaryColorTexture:this.iQ.textures[2],u_transformTexture:this.iQ.textures[4],u_rotationTexture:this.iQ.textures[3],u_gridCellDimensions:[this.EQ.cols,this.EQ.rows],u_gridPixelDimensions:[this.EQ.width,this.EQ.height],u_gridOffsetPixels:[this.EQ.offsetX,this.EQ.offsetY],u_aspectRatio:this.EQ.width/this.EQ.height}),this.Ce.Gt(this.EQ.offsetX,this.EQ.offsetY,this.EQ.width,this.EQ.height))}draw(B){this.aQ=B}windowResized(B){this.hQ=B}resizeCanvas(B,r){this.Je.S(B,r),this.EQ.lA(),this.iQ.S(this.EQ.cols,this.EQ.rows),this.Ce.Ot(),this.nQ()}destroy(){this.oQ||(this.rQ.stop(),window.removeEventListener("resize",this.cQ),this.me.W(),this.Ce.W(),this.oQ=!0)}get grid(){return this.EQ}get font(){return this.me}get width(){return this.Je.width}get height(){return this.Je.height}get canvas(){return this.Je.canvas}get isDisposed(){return this.oQ}get drawFramebuffer(){return this.iQ}}class L{constructor(){throw new I("Textmode is a static class and cannot be instantiated.")}static async create(e){return AA.create(e)}static setErrorLevel(e){M.P(e)}static get version(){return"0.2.0-beta.1"}}const $A=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),VA=L.create,XA=L.setErrorLevel,jA=L.version;d.TextmodeCanvas=j,d.TextmodeErrorLevel=R,d.TextmodeFont=V,d.TextmodeGrid=X,d.Textmodifier=AA,d.create=VA,d.export=$A,d.setErrorLevel=XA,d.textmode=L,d.version=jA,Object.defineProperty(d,Symbol.toStringTag,{value:"Module"})},typeof exports=="object"&&typeof module<"u"?t(exports):typeof define=="function"&&define.amd?define(["exports"],t):t((A=typeof globalThis<"u"?globalThis:A||self).textmode={});
28
+ 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.aQ=this.le.$t("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);}")}static async create(B={}){const r=new this(B);await r.ve.Oe(B.fontSource);const i=r.ve.maxGlyphDimensions;return r.nQ=new J(r.Ke.canvas,i.width,i.height),r.rQ=r.le.Ot(r.nQ.cols,r.nQ.rows,5),r.lQ(),r.gQ.start(()=>r.oQ()),r}lQ(){this.DQ=()=>{this.CQ()},window.addEventListener("resize",this.DQ)}oQ(){if(this.gQ.measureFrameRate(),this.gQ.incrementFrame(),this.cQ)return;this.rQ.U(),this.le.Gt(this.iQ),this.hQ(),this.le.kt(this.iQ),this.rQ.k();const B=this.le.state.canvasBackgroundColor;this.le.NA(B[0],B[1],B[2],B[3]),this.le.Gt(this.aQ),this.aQ.tA({u_characterTexture:this.ve.fontFramebuffer,u_charsetDimensions:[this.ve.textureColumns,this.ve.textureRows],u_asciiCharacterTexture:this.rQ.textures[0],u_primaryColorTexture:this.rQ.textures[1],u_secondaryColorTexture:this.rQ.textures[2],u_transformTexture:this.rQ.textures[4],u_rotationTexture:this.rQ.textures[3],u_gridCellDimensions:[this.nQ.cols,this.nQ.rows],u_gridPixelDimensions:[this.nQ.width,this.nQ.height],u_gridOffsetPixels:[this.nQ.offsetX,this.nQ.offsetY],u_aspectRatio:this.nQ.width/this.nQ.height}),this.le.Mt(this.nQ.offsetX,this.nQ.offsetY,this.nQ.width,this.nQ.height)}draw(B){this.hQ=B}windowResized(B){this.CQ=B}resizeCanvas(B,r){this.Ke.O(B,r),this.nQ.PA(),this.rQ.O(this.nQ.cols,this.nQ.rows),this.le.Ut(),this.oQ()}destroy(){this.cQ||(this.gQ.stop(),window.removeEventListener("resize",this.DQ),this.ve.W(),this.le.W(),this.cQ=!0)}get grid(){return this.nQ}get font(){return this.ve}get width(){return this.Ke.width}get height(){return this.Ke.height}get canvas(){return this.Ke.canvas}get isDisposed(){return this.cQ}get drawFramebuffer(){return this.rQ}}class O{constructor(){throw new I("Textmode is a static class and cannot be instantiated.")}static async create(e){return AA.create(e)}static setErrorLevel(e){_.P(e)}static get version(){return"0.2.0-beta.2"}}const $A=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),VA=O.create,JA=O.setErrorLevel,jA=O.version;d.TextmodeCanvas=j,d.TextmodeErrorLevel=R,d.TextmodeFont=V,d.TextmodeGrid=J,d.Textmodifier=AA,d.create=VA,d.export=$A,d.setErrorLevel=JA,d.textmode=O,d.version=jA,Object.defineProperty(d,Symbol.toStringTag,{value:"Module"})},typeof exports=="object"&&typeof module<"u"?t(exports):typeof define=="function"&&define.amd?define(["exports"],t):t((A=typeof globalThis<"u"?globalThis:A||self).textmode={});