super-patience 1.2.6 → 1.2.7

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.
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "super-patience",
3
- "version": "1.2.6",
3
+ "version": "1.2.7",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "super-patience",
9
- "version": "1.2.6",
9
+ "version": "1.2.7",
10
10
  "license": "AGPL-3.0-only",
11
11
  "devDependencies": {
12
12
  "@biomejs/biome": "2.3.10",
package/dist/package.json CHANGED
@@ -49,5 +49,5 @@
49
49
  "version": "npm pkg set published=$(date +%Y%m%d) && npm run clean && npm test"
50
50
  },
51
51
  "type": "module",
52
- "version": "1.2.6"
52
+ "version": "1.2.7"
53
53
  }
@@ -1,9 +1,9 @@
1
- var s={hash:"4377392",published:"20260105",version:"1.2.6"};var Xt={id:"mem-prop-5x6",name:"mem 5x6",cellW:5,cellH:6,leading:1,lineH:7,baseline:1,kerning:{" ":0," 0":0," 1":0," 2":0," 3":0," 4":0," 5":0," 6":0," 7":0," 8":0," 9":0,"##":-1,"#_":0,"',":0,"'.":0,"'/":0,"'J":0,"'S":0,"'_":0,"'j":0,"'s":0,"(+":0,"(-":0,"(<":0,"(f":0,"({":0,"(~":0,")_":0,"*,":0,"*.":0,"*/":0,"*S":0,"*_":0,"*j":0,"*s":0,"+)":0,"+,":0,"+.":0,"+/":0,"+>":0,"+?":0,"+I":0,"+S":0,"+T":0,"+Z":0,"+]":0,"+_":0,"+`":0,"+j":0,"+s":0,"+}":0,",'":0,",*":0,",+":0,",-":0,",<":0,",?":0,",T":0,",Y":0,",Z":0,',"':0,",\\":0,",^":0,",`":0,",f":0,",t":0,",z":0,",{":0,",~":0,"-)":0,"-,":0,"--":0,"-.":0,"-/":0,"->":0,"-?":0,"-I":0,"-S":0,"-T":0,"-Z":0,"-]":0,"-_":0,"-`":0,"-j":0,"-s":0,"-}":0,".'":0,".*":0,".+":0,".-":0,".<":0,".?":0,".T":0,".Y":0,".Z":0,'."':0,".\\":0,".^":0,".`":0,".f":0,".t":0,".z":0,".{":0,".~":0,"/,":0,"/.":0,"//":0,"/J":0,"/S":0,"/_":0,"/j":0,"/s":0,"0 ":0,"1 ":0,"1T":0,"1Y":0,"1Z":0,"1f":0,"1t":0,"1z":0,"2 ":0,"3 ":0,"4 ":0,"5 ":0,"6 ":0,"7 ":0,"8 ":0,"9 ":0,":?":0,":T":0,":Z":0,":`":0,";?":0,";T":0,";Z":0,"<+":0,"<-":0,"<<":0,"<f":0,"<{":0,"<~":0,"==":0,"=_":0,">)":0,">,":0,">.":0,">/":0,">>":0,">?":0,">I":0,">S":0,">T":0,">Z":0,">]":0,">_":0,">`":0,">j":0,">s":0,">}":0,"?,":0,"?.":0,"?/":0,"?S":0,"?_":0,"?j":0,"?s":0,"@_":0,"C+":0,"C-":0,"C<":0,Cf:0,"C{":0,"C~":0,D_:0,"E+":0,"E-":0,"E<":0,Ef:0,"E{":0,"E~":0,"F&":0,"F+":0,"F,":0,"F-":0,"F.":0,"F/":0,"F:":0,"F;":0,"F<":0,FJ:0,FS:0,F_:0,Fa:0,Fe:0,Ff:0,Fg:0,Fj:0,Fq:0,Fs:0,"F{":0,"F~":0,"I+":0,"I-":0,"I<":0,If:0,"I{":0,"I~":0,"L'":0,"L*":0,"L+":0,"L-":0,L4:0,L7:0,"L<":0,"L?":0,LT:0,LY:0,LZ:0,'L"':0,"L\\":0,"L^":0,"L`":0,Lf:0,Lt:0,Lz:0,"L{":0,"L~":0,"P,":0,"P.":0,"P/":0,PS:0,P_:0,Pj:0,Ps:0,"S&":0,"S+":0,"S,":0,"S-":0,"S.":0,"S/":0,"S:":0,"S;":0,"S<":0,SJ:0,SS:0,S_:0,Sa:0,Se:0,Sf:0,Sg:0,Sj:0,Sq:0,Ss:0,"S{":0,"S~":0,"T&":0,"T+":0,"T,":0,"T-":0,"T.":0,"T/":0,"T:":0,"T;":0,"T<":0,TJ:0,TS:0,T_:0,Ta:0,Te:0,Tf:0,Tg:0,Tj:0,Tq:0,Ts:0,"T{":0,"T~":0,V_:0,"Y,":0,"Y.":0,"Y/":0,YS:0,Y_:0,Yj:0,Ys:0,"Z'":0,"Z*":0,"Z+":0,"Z-":0,Z4:0,Z7:0,"Z<":0,"Z?":0,ZT:0,ZY:0,ZZ:0,'Z"':0,"Z\\":0,"Z^":0,"Z`":0,Zf:0,Zt:0,Zz:0,"Z{":0,"Z~":0,"[+":0,"[-":0,"[<":0,"[f":0,"[{":0,"[~":0,'",':0,'".':0,'"/':0,'"J':0,'"S':0,'"_':0,'"j':0,'"s':0,"\\'":0,"\\*":0,"\\+":0,"\\-":0,"\\<":0,"\\?":0,"\\T":0,"\\Y":0,"\\Z":0,'\\"':0,"\\\\":0,"\\^":0,"\\`":0,"\\f":0,"\\t":0,"\\z":0,"\\{":0,"\\~":0,"^,":0,"^.":0,"^/":0,"^J":0,"^S":0,"^_":0,"^j":0,"^s":0,"_#":0,"_%":0,"_'":0,"_(":0,"_*":0,"_+":0,"_-":0,"_<":0,"_=":0,"_?":0,"_@":0,_T:0,_V:0,_Y:0,_Z:0,'_"':0,"_\\":0,"_^":0,__:0,"_`":0,_a:0,_e:0,_f:0,_t:0,_v:0,_z:0,"_{":0,"_~":0,"`,":0,"`.":0,"`/":0,"`J":0,"`S":0,"`_":0,"`j":0,"`s":0,"f,":0,"f.":0,"f/":0,fS:0,f_:0,fj:0,fs:0,"q#":0,q$:0,"q%":0,"q&":0,"q'":0,"q(":0,"q*":0,"q+":0,"q-":0,q0:0,q1:0,q2:0,q3:0,q4:0,q5:0,q6:0,q7:0,q8:0,q9:0,"q<":0,"q=":0,"q?":0,"q@":0,qA:0,qB:0,qC:0,qD:0,qE:0,qF:0,qG:0,qH:0,qI:0,qJ:0,qK:0,qL:0,qM:0,qN:0,qO:0,qP:0,qQ:0,qR:0,qS:0,qT:0,qU:0,qV:0,qW:0,qX:0,qY:0,qZ:0,"q[":0,'q"':0,"q\\":0,"q]":0,"q^":0,"q`":0,qa:0,qb:0,qc:0,qd:0,qe:0,qf:0,qh:0,qk:0,qm:0,qn:0,qo:0,qq:0,qr:0,qs:0,qt:0,qu:0,qv:0,qw:0,qx:0,qz:0,"q{":0,"q}":0,"q~":0,"r,":0,"r.":0,"r/":0,rS:0,r_:0,rj:-1,rs:0,"s,":0,"s.":0,"s/":0,sJ:0,sS:0,s_:0,sj:0,ss:0,"z'":0,"z*":0,"z+":0,"z-":0,z4:0,z7:0,"z<":0,"z?":0,zT:0,zY:0,zZ:0,'z"':0,"z\\":0,"z^":0,"z`":0,zf:0,zt:0,zz:0,"z{":0,"z~":0,"{+":0,"{-":0,"{<":0,"{f":0,"{{":0,"{~":0,"})":0,"},":0,"}.":0,"}/":0,"}>":0,"}?":0,"}I":0,"}S":0,"}T":0,"}Z":0,"}]":0,"}_":0,"}`":0,"}j":0,"}s":0,"}}":0,"~'":0,"~?":0,"~T":0,"~Z":0,'~"':0,"~\\":0,"~^":0,"~_":0,"~`":0,"~t":0,"~z":0},defaultKerning:1,defaultWhitespaceKerning:-1,endOfLineKerning:0,charW:{" ":4,"!":1,"#":5,"&":4,"'":1,"(":2,")":2,",":1,".":1,":":1,";":1,"@":5,M:5,W:5,"[":2,"\n":0,"]":2,"`":2,i:1,l:1,m:5,q:4,w:5,"|":1},defaultCharW:3,descends:{$:!0,",":!0,"/":!0,";":!0,Q:!0,"\\":!0,_:!0,g:!0,j:!0,p:!0,q:!0,y:!0}};var V=Xt;var h={Bottom:0,A:1,B:2,C:3,D:4,E:5,F:6,G:7,UIA:8,UIB:9,UIC:10,UID:11,UIE:12,UIF:13,UIG:14,Top:15};function A(e){return e>=h.UIA}function Nt(e,t){e.x=t.x,e.y=t.y,e.w=t.w,e.h=t.h}function b(e,t){let i={w:t.w??1,h:t.h??1};if(!e.w||!e.h||!i.w||!i.h)return!1;let r={x:e.x??0,y:e.y??0};return r.x<t.x+i.w&&r.x+e.w>t.x&&r.y<t.y+i.h&&r.y+e.h>t.y}function Gt(e,t){return e.w===t.w&&e.h===t.h}function Kt(e,t){return{x:e.x+t.x,y:e.y+t.y}}function Zt(e,t){return ti(wt(e,t))}function ti(e){return Math.hypot(e.x,e.y)}function Jt(e,t){return{x:Math.max(e.x,t.x),y:Math.max(e.y,t.y)}}function Qt(e,t){return{x:Math.min(e.x,t.x),y:Math.min(e.y,t.y)}}function wt(e,t){return{x:e.x-t.x,y:e.y-t.y}}function I(e,t){return(e%t+t)%t}var w=16,bt=1/64,jt={w:4095,h:4095},gt=class{i;#t;constructor(t,i){this.#t=t,this.i=i}above(t){return(this.z===t.z?(this.zend?this.y+this.h:this.y)-(t.zend?t.y+t.h:t.y):this.z-t.z)>0}get cel(){return this.#t.view.getUint8(this.i+10)&31}set cel(t){let i=this.#t.view.getUint8(this.i+10);this.#t.view.setUint8(this.i+10,i&-32|t&31)}get clipbox(){return{x:this.x,y:this.y,w:this.w,h:this.h}}clips(t){return b(this,t)}clipsZ(t,i){if(this.ui===t.ui)return this.clips(t);let r={x:t.x+(t.ui?1:-1)*Math.floor(i.x),y:t.y+(t.ui?1:-1)*Math.floor(i.y),w:t.w,h:t.h};return b(this,r)}get flipX(){return!!(this.#t.view.getUint8(this.i+6)&64)}set flipX(t){let i=this.#t.view.getUint8(this.i+6);this.#t.view.setUint8(this.i+6,i&-65|-t&64)}get flipY(){return!!(this.#t.view.getUint8(this.i+6)&32)}set flipY(t){let i=this.#t.view.getUint8(this.i+6);this.#t.view.setUint8(this.i+6,i&-33|-t&32)}free(){this.#t.free(this)}get h(){return this.#t.view.getUint16(this.i+8,!0)>>>4}set h(t){let i=this.#t.view.getUint16(this.i+8,!0);this.#t.view.setUint16(this.i+8,i&-65521|(t&4095)<<4,!0)}get id(){return this.#t.view.getUint16(this.i+10,!0)>>>5&2047}set id(t){let i=this.#t.view.getUint16(this.i+10,!0);this.#t.view.setUint16(this.i+10,i&-65505|(t&2047)<<5,!0)}init(){this.cel=0,this.flipX=!1,this.flipY=!1,this.h=0,this.id=0,this.stretch=!1,this.visible=!0,this.w=0,this.x=0,this.y=0,this.z=h.Bottom,this.zend=!1}get stretch(){return!!(this.#t.view.getUint8(this.i+6)&128)}set stretch(t){let i=this.#t.view.getUint8(this.i+6);this.#t.view.setUint8(this.i+6,i&-129|-t&128)}get ui(){return A(this.z)}get visible(){return(this.#t.view.getUint8(this.i+12)&1)===1}set visible(t){let i=this.#t.view.getUint8(this.i+12);this.#t.view.setUint8(this.i+12,i&-2|(t?1:0))}get w(){return this.#t.view.getUint16(this.i+7,!0)&4095}set w(t){let i=this.#t.view.getUint16(this.i+7,!0);this.#t.view.setUint16(this.i+7,i&-4096|t&4095,!0)}get x(){return(this.#t.view.getUint32(this.i+0,!0)<<8>>8)/64}set x(t){let i=this.#t.view.getUint32(this.i+0,!0);this.#t.view.setUint32(this.i+0,i&-16777216|t*64&16777215,!0)}get y(){return(this.#t.view.getUint32(this.i+3,!0)<<8>>8)/64}set y(t){let i=this.#t.view.getUint32(this.i+3,!0);this.#t.view.setUint32(this.i+3,i&-16777216|t*64&16777215,!0)}get z(){return this.#t.view.getUint8(this.i+6)&15}set z(t){let i=this.#t.view.getUint8(this.i+6);this.#t.view.setUint8(this.i+6,i&-16|t&15)}get zend(){return!!(this.#t.view.getUint8(this.i+6)&16)}set zend(t){let i=this.#t.view.getUint8(this.i+6);this.#t.view.setUint8(this.i+6,i&-17|-t&16)}},M=class e extends gt{#t;#i;#e;#r;constructor(t,i,r,n){super(t,i),this.#t=r,this.#r=n}get anim(){return this.#t.anim[this.tag]}diagonalize(t){Et(this,t.x*t.y)}get flipX(){return super.flipX}set flipX(t){this.flipX!==t&&(super.flipX=t,this.#i=void 0,this.#e=void 0)}get flipY(){return super.flipY}set flipY(t){this.flipY!==t&&(super.flipY=t,this.#i=void 0,this.#e=void 0)}get h(){return super.h}set h(t){this.h!==t&&(super.h=t,this.#i=void 0,this.#e=void 0)}get hitbox(){if(this.#i)return this.#i;let{hitbox:t}=this.anim;if(t)return this.#i??={x:Math.floor(this.x+(this.flipX?this.w-t.w-t.x:t.x)),y:Math.floor(this.y+(this.flipY?this.h-t.h-t.y:t.y)),w:t.w,h:t.h}}hits(t){let i=t instanceof e?t.hurtbox??t:t;return b(this.hitbox??this,i)}hitsZ(t,i){if(this.ui===t.ui)return this.hits(t);let r={...t.hurtbox??t.clipbox};return r.x+=(t.ui?1:-1)*Math.floor(i.x),r.y+=(t.ui?1:-1)*Math.floor(i.y),b(this.hitbox??this,r)}get hurtbox(){if(this.#e)return this.#e;let{hurtbox:t}=this.anim;if(t)return this.#e??={x:Math.floor(this.x+(this.flipX?this.w-t.w-t.x:t.x)),y:Math.floor(this.y+(this.flipY?this.h-t.h-t.y:t.y)),w:t.w,h:t.h}}get id(){return super.id}set id(t){this.id!==t&&(super.id=t,this.#i=void 0,this.#e=void 0)}get looped(){return I(this.looperCel-this.cel,32)>=this.anim.cels}get looperCel(){return this.#r.age/62.5%(this.anim.cels*2)}reset(){this.cel=this.looperCel}get tag(){return this.#t.tags[this.id]}set tag(t){let i=this.#t.anim[t];this.w=i.w,this.h=i.h,this.id=i.id,this.reset()}toString(){return`Sprite{${this.tag} (${this.x} ${this.y} ${this.z}) ${this.w}\xD7${this.h}}`}get w(){return super.w}set w(t){this.w!==t&&(super.w=t,this.#i=void 0,this.#e=void 0)}get x(){return super.x}set x(t){this.x!==t&&(super.x=t,this.#i=void 0,this.#e=void 0)}get y(){return super.y}set y(t){this.y!==t&&(super.y=t,this.#i=void 0,this.#e=void 0)}};function Et(e,t){t&&(e.x=Math.floor(e.x)+.5,e.y=Math.floor(e.y)+.5-(t>0?0:bt))}function te(e){return Math.trunc(e/bt)*bt}var L=class{query="cursor & sprite";update(t,i){i.input.point?.invalid&&ii(t,i.input.point),ri(t,i),t.cursor.keyboard&&(i.input.dir.x||i.input.dir.y||!i.input.point&&i.input.isAnyStarted("A"))&&ei(t,i.input,i.tick.s),t.cursor.pick&&(t.sprite.tag=i.input.isOn("A")?t.cursor.pick:t.cursor.point)}};function ei(e,t,i){let r=te(e.cursor.keyboard*i);t.isAnyOnStart("U","D","L","R")&&t.dir.x&&t.dir.y&&e.sprite.diagonalize(t.dir),t.dir.x&&(e.sprite.x=Math.min(e.cursor.bounds.x+e.cursor.bounds.w,Math.max(e.cursor.bounds.x,e.sprite.x+t.dir.x*r))),t.dir.y&&(e.sprite.y=Math.min(e.cursor.bounds.y+e.cursor.bounds.h,Math.max(e.cursor.bounds.y,e.sprite.y+t.dir.y*r))),e.sprite.z=h.Top,e.sprite.visible=!0,e.invalid=!0}function ii(e,t){e.sprite.x=t.local.x,e.sprite.y=t.local.y,e.sprite.z=h.Top,e.sprite.visible=t.type==="Mouse",e.invalid=!0}function ri(e,t){t.cam.invalid&&(e.cursor.bounds.x=-e.sprite.w,e.cursor.bounds.y=-e.sprite.h,e.cursor.bounds.w=t.cam.w+e.sprite.w,e.cursor.bounds.h=t.cam.h+e.sprite.h)}var u=ni(globalThis.location?.href);function ni(e){if(!e)return;let t=[...new URL(e).searchParams].find(([o])=>o.toLowerCase()==="debug")?.[1];if(t==null)return;let i=Object.fromEntries(t.split(",").filter(Boolean).map(o=>o.split("="))),r={};for(let o in i)r[o.toLowerCase()]=i[o]||"true";let n={cam:"",input:"",mem:"",render:""};return new Proxy(r,{get(o,a){if(typeof a!="string"||(a=a.toLowerCase(),o[a]))return o[a];if(!t||"all"in i||a in n&&"void"in i)return"true"}})}function ie(e){return e.split(" | ").sort(ee).map(t=>t.split(" & ").sort(ee))}function ee(e,t){return e.localeCompare(t,"en")}var q=class{query="hud & sprite";update(t,i){if(!t.invalid&&!i.cam.invalid)return;let r=i.cam.follow(t.sprite,t.sprite.z,t.hud.origin,t.hud);Nt(t.sprite,r),t.invalid=!0}};var H=class{query="ninePatch & sprite";free(t){oi(t)}update(t){if(!t.invalid)return;let i=si(t);hi(t,i),ai(t),ci(t,i)}};function oi(e){e.ninePatch.patch.w?.free(),e.ninePatch.patch.nw?.free(),e.ninePatch.patch.n?.free(),e.ninePatch.patch.ne?.free(),e.ninePatch.patch.e?.free(),e.ninePatch.patch.se?.free(),e.ninePatch.patch.s?.free(),e.ninePatch.patch.sw?.free(),e.ninePatch.patch.center?.free(),e.invalid=!0}function si(e){let{sprite:t,ninePatch:i}=e;return{x:t.x+i.pad.w,y:t.y+i.pad.n}}function ai(e){let{border:t,pad:i,patch:r}=e.ninePatch,n=e.sprite.w-t.w-t.e-i.w-i.e,o=e.sprite.h-t.n-t.s-i.n-i.s;r.n&&(r.n.w=n),r.s&&(r.s.w=n),r.w&&(r.w.h=o),r.e&&(r.e.h=o),r.center&&(r.center.w=n,r.center.h=o)}function ci(e,t){let{patch:i,pad:r,border:n}=e.ninePatch,o={x:e.sprite.x+e.sprite.w-n.e-r.e,y:e.sprite.y+e.sprite.h-n.s-r.s};i.ne&&(i.ne.x=o.x,i.ne.y=t.y),i.e&&(i.e.x=o.x,i.e.y=t.y+n.n),i.se&&(i.se.x=o.x,i.se.y=o.y),i.s&&(i.s.x=t.x+n.w,i.s.y=o.y),i.sw&&(i.sw.x=t.x,i.sw.y=o.y)}function hi(e,t){let{border:i,patch:r}=e.ninePatch;r.nw&&(r.nw.x=t.x,r.nw.y=t.y),r.w&&(r.w.x=t.x,r.w.y=t.y+i.n),r.n&&(r.n.x=t.x+i.w,r.n.y=t.y),r.center&&(r.center.x=t.x+i.w,r.center.y=t.y+i.n)}var W=class{query="override";update(t){t.override.invalid!=null&&(t.invalid=t.override.invalid)}};var R=class{query="sprite";free(t){t.sprite.free(),t.invalid=!0}};function re(e,t){let i=t.codePointAt(0);return(i==null||i>255)&&(i=63),`${e.id}--${i.toString(16).padStart(2,"0")}`}function Ct(e,t){return e.cellH-(e.descends[t]?0:e.baseline)}function ne(e,t,i){return t===`
1
+ var s={hash:"ac3fa5b",published:"20260105",version:"1.2.7"};var Xt={id:"mem-prop-5x6",name:"mem 5x6",cellW:5,cellH:6,leading:1,lineH:7,baseline:1,kerning:{" ":0," 0":0," 1":0," 2":0," 3":0," 4":0," 5":0," 6":0," 7":0," 8":0," 9":0,"##":-1,"#_":0,"',":0,"'.":0,"'/":0,"'J":0,"'S":0,"'_":0,"'j":0,"'s":0,"(+":0,"(-":0,"(<":0,"(f":0,"({":0,"(~":0,")_":0,"*,":0,"*.":0,"*/":0,"*S":0,"*_":0,"*j":0,"*s":0,"+)":0,"+,":0,"+.":0,"+/":0,"+>":0,"+?":0,"+I":0,"+S":0,"+T":0,"+Z":0,"+]":0,"+_":0,"+`":0,"+j":0,"+s":0,"+}":0,",'":0,",*":0,",+":0,",-":0,",<":0,",?":0,",T":0,",Y":0,",Z":0,',"':0,",\\":0,",^":0,",`":0,",f":0,",t":0,",z":0,",{":0,",~":0,"-)":0,"-,":0,"--":0,"-.":0,"-/":0,"->":0,"-?":0,"-I":0,"-S":0,"-T":0,"-Z":0,"-]":0,"-_":0,"-`":0,"-j":0,"-s":0,"-}":0,".'":0,".*":0,".+":0,".-":0,".<":0,".?":0,".T":0,".Y":0,".Z":0,'."':0,".\\":0,".^":0,".`":0,".f":0,".t":0,".z":0,".{":0,".~":0,"/,":0,"/.":0,"//":0,"/J":0,"/S":0,"/_":0,"/j":0,"/s":0,"0 ":0,"1 ":0,"1T":0,"1Y":0,"1Z":0,"1f":0,"1t":0,"1z":0,"2 ":0,"3 ":0,"4 ":0,"5 ":0,"6 ":0,"7 ":0,"8 ":0,"9 ":0,":?":0,":T":0,":Z":0,":`":0,";?":0,";T":0,";Z":0,"<+":0,"<-":0,"<<":0,"<f":0,"<{":0,"<~":0,"==":0,"=_":0,">)":0,">,":0,">.":0,">/":0,">>":0,">?":0,">I":0,">S":0,">T":0,">Z":0,">]":0,">_":0,">`":0,">j":0,">s":0,">}":0,"?,":0,"?.":0,"?/":0,"?S":0,"?_":0,"?j":0,"?s":0,"@_":0,"C+":0,"C-":0,"C<":0,Cf:0,"C{":0,"C~":0,D_:0,"E+":0,"E-":0,"E<":0,Ef:0,"E{":0,"E~":0,"F&":0,"F+":0,"F,":0,"F-":0,"F.":0,"F/":0,"F:":0,"F;":0,"F<":0,FJ:0,FS:0,F_:0,Fa:0,Fe:0,Ff:0,Fg:0,Fj:0,Fq:0,Fs:0,"F{":0,"F~":0,"I+":0,"I-":0,"I<":0,If:0,"I{":0,"I~":0,"L'":0,"L*":0,"L+":0,"L-":0,L4:0,L7:0,"L<":0,"L?":0,LT:0,LY:0,LZ:0,'L"':0,"L\\":0,"L^":0,"L`":0,Lf:0,Lt:0,Lz:0,"L{":0,"L~":0,"P,":0,"P.":0,"P/":0,PS:0,P_:0,Pj:0,Ps:0,"S&":0,"S+":0,"S,":0,"S-":0,"S.":0,"S/":0,"S:":0,"S;":0,"S<":0,SJ:0,SS:0,S_:0,Sa:0,Se:0,Sf:0,Sg:0,Sj:0,Sq:0,Ss:0,"S{":0,"S~":0,"T&":0,"T+":0,"T,":0,"T-":0,"T.":0,"T/":0,"T:":0,"T;":0,"T<":0,TJ:0,TS:0,T_:0,Ta:0,Te:0,Tf:0,Tg:0,Tj:0,Tq:0,Ts:0,"T{":0,"T~":0,V_:0,"Y,":0,"Y.":0,"Y/":0,YS:0,Y_:0,Yj:0,Ys:0,"Z'":0,"Z*":0,"Z+":0,"Z-":0,Z4:0,Z7:0,"Z<":0,"Z?":0,ZT:0,ZY:0,ZZ:0,'Z"':0,"Z\\":0,"Z^":0,"Z`":0,Zf:0,Zt:0,Zz:0,"Z{":0,"Z~":0,"[+":0,"[-":0,"[<":0,"[f":0,"[{":0,"[~":0,'",':0,'".':0,'"/':0,'"J':0,'"S':0,'"_':0,'"j':0,'"s':0,"\\'":0,"\\*":0,"\\+":0,"\\-":0,"\\<":0,"\\?":0,"\\T":0,"\\Y":0,"\\Z":0,'\\"':0,"\\\\":0,"\\^":0,"\\`":0,"\\f":0,"\\t":0,"\\z":0,"\\{":0,"\\~":0,"^,":0,"^.":0,"^/":0,"^J":0,"^S":0,"^_":0,"^j":0,"^s":0,"_#":0,"_%":0,"_'":0,"_(":0,"_*":0,"_+":0,"_-":0,"_<":0,"_=":0,"_?":0,"_@":0,_T:0,_V:0,_Y:0,_Z:0,'_"':0,"_\\":0,"_^":0,__:0,"_`":0,_a:0,_e:0,_f:0,_t:0,_v:0,_z:0,"_{":0,"_~":0,"`,":0,"`.":0,"`/":0,"`J":0,"`S":0,"`_":0,"`j":0,"`s":0,"f,":0,"f.":0,"f/":0,fS:0,f_:0,fj:0,fs:0,"q#":0,q$:0,"q%":0,"q&":0,"q'":0,"q(":0,"q*":0,"q+":0,"q-":0,q0:0,q1:0,q2:0,q3:0,q4:0,q5:0,q6:0,q7:0,q8:0,q9:0,"q<":0,"q=":0,"q?":0,"q@":0,qA:0,qB:0,qC:0,qD:0,qE:0,qF:0,qG:0,qH:0,qI:0,qJ:0,qK:0,qL:0,qM:0,qN:0,qO:0,qP:0,qQ:0,qR:0,qS:0,qT:0,qU:0,qV:0,qW:0,qX:0,qY:0,qZ:0,"q[":0,'q"':0,"q\\":0,"q]":0,"q^":0,"q`":0,qa:0,qb:0,qc:0,qd:0,qe:0,qf:0,qh:0,qk:0,qm:0,qn:0,qo:0,qq:0,qr:0,qs:0,qt:0,qu:0,qv:0,qw:0,qx:0,qz:0,"q{":0,"q}":0,"q~":0,"r,":0,"r.":0,"r/":0,rS:0,r_:0,rj:-1,rs:0,"s,":0,"s.":0,"s/":0,sJ:0,sS:0,s_:0,sj:0,ss:0,"z'":0,"z*":0,"z+":0,"z-":0,z4:0,z7:0,"z<":0,"z?":0,zT:0,zY:0,zZ:0,'z"':0,"z\\":0,"z^":0,"z`":0,zf:0,zt:0,zz:0,"z{":0,"z~":0,"{+":0,"{-":0,"{<":0,"{f":0,"{{":0,"{~":0,"})":0,"},":0,"}.":0,"}/":0,"}>":0,"}?":0,"}I":0,"}S":0,"}T":0,"}Z":0,"}]":0,"}_":0,"}`":0,"}j":0,"}s":0,"}}":0,"~'":0,"~?":0,"~T":0,"~Z":0,'~"':0,"~\\":0,"~^":0,"~_":0,"~`":0,"~t":0,"~z":0},defaultKerning:1,defaultWhitespaceKerning:-1,endOfLineKerning:0,charW:{" ":4,"!":1,"#":5,"&":4,"'":1,"(":2,")":2,",":1,".":1,":":1,";":1,"@":5,M:5,W:5,"[":2,"\n":0,"]":2,"`":2,i:1,l:1,m:5,q:4,w:5,"|":1},defaultCharW:3,descends:{$:!0,",":!0,"/":!0,";":!0,Q:!0,"\\":!0,_:!0,g:!0,j:!0,p:!0,q:!0,y:!0}};var V=Xt;var h={Bottom:0,A:1,B:2,C:3,D:4,E:5,F:6,G:7,UIA:8,UIB:9,UIC:10,UID:11,UIE:12,UIF:13,UIG:14,Top:15};function A(e){return e>=h.UIA}function Nt(e,t){e.x=t.x,e.y=t.y,e.w=t.w,e.h=t.h}function b(e,t){let i={w:t.w??1,h:t.h??1};if(!e.w||!e.h||!i.w||!i.h)return!1;let r={x:e.x??0,y:e.y??0};return r.x<t.x+i.w&&r.x+e.w>t.x&&r.y<t.y+i.h&&r.y+e.h>t.y}function Gt(e,t){return e.w===t.w&&e.h===t.h}function Kt(e,t){return{x:e.x+t.x,y:e.y+t.y}}function Zt(e,t){return ti(wt(e,t))}function ti(e){return Math.hypot(e.x,e.y)}function Jt(e,t){return{x:Math.max(e.x,t.x),y:Math.max(e.y,t.y)}}function Qt(e,t){return{x:Math.min(e.x,t.x),y:Math.min(e.y,t.y)}}function wt(e,t){return{x:e.x-t.x,y:e.y-t.y}}function I(e,t){return(e%t+t)%t}var w=16,bt=1/64,jt={w:4095,h:4095},gt=class{i;#t;constructor(t,i){this.#t=t,this.i=i}above(t){return(this.z===t.z?(this.zend?this.y+this.h:this.y)-(t.zend?t.y+t.h:t.y):this.z-t.z)>0}get cel(){return this.#t.view.getUint8(this.i+10)&31}set cel(t){let i=this.#t.view.getUint8(this.i+10);this.#t.view.setUint8(this.i+10,i&-32|t&31)}get clipbox(){return{x:this.x,y:this.y,w:this.w,h:this.h}}clips(t){return b(this,t)}clipsZ(t,i){if(this.ui===t.ui)return this.clips(t);let r={x:t.x+(t.ui?1:-1)*Math.floor(i.x),y:t.y+(t.ui?1:-1)*Math.floor(i.y),w:t.w,h:t.h};return b(this,r)}get flipX(){return!!(this.#t.view.getUint8(this.i+6)&64)}set flipX(t){let i=this.#t.view.getUint8(this.i+6);this.#t.view.setUint8(this.i+6,i&-65|-t&64)}get flipY(){return!!(this.#t.view.getUint8(this.i+6)&32)}set flipY(t){let i=this.#t.view.getUint8(this.i+6);this.#t.view.setUint8(this.i+6,i&-33|-t&32)}free(){this.#t.free(this)}get h(){return this.#t.view.getUint16(this.i+8,!0)>>>4}set h(t){let i=this.#t.view.getUint16(this.i+8,!0);this.#t.view.setUint16(this.i+8,i&-65521|(t&4095)<<4,!0)}get id(){return this.#t.view.getUint16(this.i+10,!0)>>>5&2047}set id(t){let i=this.#t.view.getUint16(this.i+10,!0);this.#t.view.setUint16(this.i+10,i&-65505|(t&2047)<<5,!0)}init(){this.cel=0,this.flipX=!1,this.flipY=!1,this.h=0,this.id=0,this.stretch=!1,this.visible=!0,this.w=0,this.x=0,this.y=0,this.z=h.Bottom,this.zend=!1}get stretch(){return!!(this.#t.view.getUint8(this.i+6)&128)}set stretch(t){let i=this.#t.view.getUint8(this.i+6);this.#t.view.setUint8(this.i+6,i&-129|-t&128)}get ui(){return A(this.z)}get visible(){return(this.#t.view.getUint8(this.i+12)&1)===1}set visible(t){let i=this.#t.view.getUint8(this.i+12);this.#t.view.setUint8(this.i+12,i&-2|(t?1:0))}get w(){return this.#t.view.getUint16(this.i+7,!0)&4095}set w(t){let i=this.#t.view.getUint16(this.i+7,!0);this.#t.view.setUint16(this.i+7,i&-4096|t&4095,!0)}get x(){return(this.#t.view.getUint32(this.i+0,!0)<<8>>8)/64}set x(t){let i=this.#t.view.getUint32(this.i+0,!0);this.#t.view.setUint32(this.i+0,i&-16777216|t*64&16777215,!0)}get y(){return(this.#t.view.getUint32(this.i+3,!0)<<8>>8)/64}set y(t){let i=this.#t.view.getUint32(this.i+3,!0);this.#t.view.setUint32(this.i+3,i&-16777216|t*64&16777215,!0)}get z(){return this.#t.view.getUint8(this.i+6)&15}set z(t){let i=this.#t.view.getUint8(this.i+6);this.#t.view.setUint8(this.i+6,i&-16|t&15)}get zend(){return!!(this.#t.view.getUint8(this.i+6)&16)}set zend(t){let i=this.#t.view.getUint8(this.i+6);this.#t.view.setUint8(this.i+6,i&-17|-t&16)}},M=class e extends gt{#t;#i;#e;#r;constructor(t,i,r,n){super(t,i),this.#t=r,this.#r=n}get anim(){return this.#t.anim[this.tag]}diagonalize(t){Et(this,t.x*t.y)}get flipX(){return super.flipX}set flipX(t){this.flipX!==t&&(super.flipX=t,this.#i=void 0,this.#e=void 0)}get flipY(){return super.flipY}set flipY(t){this.flipY!==t&&(super.flipY=t,this.#i=void 0,this.#e=void 0)}get h(){return super.h}set h(t){this.h!==t&&(super.h=t,this.#i=void 0,this.#e=void 0)}get hitbox(){if(this.#i)return this.#i;let{hitbox:t}=this.anim;if(t)return this.#i??={x:Math.floor(this.x+(this.flipX?this.w-t.w-t.x:t.x)),y:Math.floor(this.y+(this.flipY?this.h-t.h-t.y:t.y)),w:t.w,h:t.h}}hits(t){let i=t instanceof e?t.hurtbox??t:t;return b(this.hitbox??this,i)}hitsZ(t,i){if(this.ui===t.ui)return this.hits(t);let r={...t.hurtbox??t.clipbox};return r.x+=(t.ui?1:-1)*Math.floor(i.x),r.y+=(t.ui?1:-1)*Math.floor(i.y),b(this.hitbox??this,r)}get hurtbox(){if(this.#e)return this.#e;let{hurtbox:t}=this.anim;if(t)return this.#e??={x:Math.floor(this.x+(this.flipX?this.w-t.w-t.x:t.x)),y:Math.floor(this.y+(this.flipY?this.h-t.h-t.y:t.y)),w:t.w,h:t.h}}get id(){return super.id}set id(t){this.id!==t&&(super.id=t,this.#i=void 0,this.#e=void 0)}get looped(){return I(this.looperCel-this.cel,32)>=this.anim.cels}get looperCel(){return this.#r.age/62.5%(this.anim.cels*2)}reset(){this.cel=this.looperCel}get tag(){return this.#t.tags[this.id]}set tag(t){let i=this.#t.anim[t];this.w=i.w,this.h=i.h,this.id=i.id,this.reset()}toString(){return`Sprite{${this.tag} (${this.x} ${this.y} ${this.z}) ${this.w}\xD7${this.h}}`}get w(){return super.w}set w(t){this.w!==t&&(super.w=t,this.#i=void 0,this.#e=void 0)}get x(){return super.x}set x(t){this.x!==t&&(super.x=t,this.#i=void 0,this.#e=void 0)}get y(){return super.y}set y(t){this.y!==t&&(super.y=t,this.#i=void 0,this.#e=void 0)}};function Et(e,t){t&&(e.x=Math.floor(e.x)+.5,e.y=Math.floor(e.y)+.5-(t>0?0:bt))}function te(e){return Math.trunc(e/bt)*bt}var L=class{query="cursor & sprite";update(t,i){i.input.point?.invalid&&ii(t,i.input.point),ri(t,i),t.cursor.keyboard&&(i.input.dir.x||i.input.dir.y||!i.input.point&&i.input.isAnyStarted("A"))&&ei(t,i.input,i.tick.s),t.cursor.pick&&(t.sprite.tag=i.input.isOn("A")?t.cursor.pick:t.cursor.point)}};function ei(e,t,i){let r=te(e.cursor.keyboard*i);t.isAnyOnStart("U","D","L","R")&&t.dir.x&&t.dir.y&&e.sprite.diagonalize(t.dir),t.dir.x&&(e.sprite.x=Math.min(e.cursor.bounds.x+e.cursor.bounds.w,Math.max(e.cursor.bounds.x,e.sprite.x+t.dir.x*r))),t.dir.y&&(e.sprite.y=Math.min(e.cursor.bounds.y+e.cursor.bounds.h,Math.max(e.cursor.bounds.y,e.sprite.y+t.dir.y*r))),e.sprite.z=h.Top,e.sprite.visible=!0,e.invalid=!0}function ii(e,t){e.sprite.x=t.local.x,e.sprite.y=t.local.y,e.sprite.z=h.Top,e.sprite.visible=t.type==="Mouse",e.invalid=!0}function ri(e,t){t.cam.invalid&&(e.cursor.bounds.x=-e.sprite.w,e.cursor.bounds.y=-e.sprite.h,e.cursor.bounds.w=t.cam.w+e.sprite.w,e.cursor.bounds.h=t.cam.h+e.sprite.h)}var d=ni(globalThis.location?.href);function ni(e){if(!e)return;let t=[...new URL(e).searchParams].find(([o])=>o.toLowerCase()==="debug")?.[1];if(t==null)return;let i=Object.fromEntries(t.split(",").filter(Boolean).map(o=>o.split("="))),r={};for(let o in i)r[o.toLowerCase()]=i[o]||"true";let n={cam:"",input:"",mem:"",render:""};return new Proxy(r,{get(o,a){if(typeof a!="string"||(a=a.toLowerCase(),o[a]))return o[a];if(!t||"all"in i||a in n&&"void"in i)return"true"}})}function ie(e){return e.split(" | ").sort(ee).map(t=>t.split(" & ").sort(ee))}function ee(e,t){return e.localeCompare(t,"en")}var q=class{query="hud & sprite";update(t,i){if(!t.invalid&&!i.cam.invalid)return;let r=i.cam.follow(t.sprite,t.sprite.z,t.hud.origin,t.hud);Nt(t.sprite,r),t.invalid=!0}};var H=class{query="ninePatch & sprite";free(t){oi(t)}update(t){if(!t.invalid)return;let i=si(t);hi(t,i),ai(t),ci(t,i)}};function oi(e){e.ninePatch.patch.w?.free(),e.ninePatch.patch.nw?.free(),e.ninePatch.patch.n?.free(),e.ninePatch.patch.ne?.free(),e.ninePatch.patch.e?.free(),e.ninePatch.patch.se?.free(),e.ninePatch.patch.s?.free(),e.ninePatch.patch.sw?.free(),e.ninePatch.patch.center?.free(),e.invalid=!0}function si(e){let{sprite:t,ninePatch:i}=e;return{x:t.x+i.pad.w,y:t.y+i.pad.n}}function ai(e){let{border:t,pad:i,patch:r}=e.ninePatch,n=e.sprite.w-t.w-t.e-i.w-i.e,o=e.sprite.h-t.n-t.s-i.n-i.s;r.n&&(r.n.w=n),r.s&&(r.s.w=n),r.w&&(r.w.h=o),r.e&&(r.e.h=o),r.center&&(r.center.w=n,r.center.h=o)}function ci(e,t){let{patch:i,pad:r,border:n}=e.ninePatch,o={x:e.sprite.x+e.sprite.w-n.e-r.e,y:e.sprite.y+e.sprite.h-n.s-r.s};i.ne&&(i.ne.x=o.x,i.ne.y=t.y),i.e&&(i.e.x=o.x,i.e.y=t.y+n.n),i.se&&(i.se.x=o.x,i.se.y=o.y),i.s&&(i.s.x=t.x+n.w,i.s.y=o.y),i.sw&&(i.sw.x=t.x,i.sw.y=o.y)}function hi(e,t){let{border:i,patch:r}=e.ninePatch;r.nw&&(r.nw.x=t.x,r.nw.y=t.y),r.w&&(r.w.x=t.x,r.w.y=t.y+i.n),r.n&&(r.n.x=t.x+i.w,r.n.y=t.y),r.center&&(r.center.x=t.x+i.w,r.center.y=t.y+i.n)}var W=class{query="override";update(t){t.override.invalid!=null&&(t.invalid=t.override.invalid)}};var R=class{query="sprite";free(t){t.sprite.free(),t.invalid=!0}};function re(e,t){let i=t.codePointAt(0);return(i==null||i>255)&&(i=63),`${e.id}--${i.toString(16).padStart(2,"0")}`}function Ct(e,t){return e.cellH-(e.descends[t]?0:e.baseline)}function ne(e,t,i){return t===`
2
2
  `||i==null||i===`
3
- `?e.endOfLineKerning:e.kerning[t+i]!=null?e.kerning[t+i]:/^\s?$/.test(t)||/^\s?$/.test(i)?e.defaultWhitespaceKerning:e.defaultKerning}function Tt(e,t){return e.charW[t]??e.defaultCharW}function se(e){let t=[],i=e.scale??1,r=e.start??{x:0,y:0},n=e.maxW??1/0,o={x:r.x,y:r.y},a=0,c=0;for(;t.length<e.text.length;){let d=t.length,f=e.text[d],l;f===`
4
- `?l=li(e.font,o,r.x,i,a):/^\s*$/.test(f)?l=ui(e.font,o,n,ae(e.font,f,e.text[d+1],i),r.x,i,c,f,a):(l=oe(e.font,o,n,e.text,d,r.x,i,c,a),o.x>0&&l.cursor.y===S(e.font,r.x,o.y,i).y&&n-o.x+l.cursor.x<=n&&(o=S(e.font,r.x,o.y,i),l=oe(e.font,o,n,e.text,d,r.x,i,c,a))),t.push(...l.chars),o.x=l.cursor.x,o.y=l.cursor.y,a=l.w,c=l.trimmedLineH}return{chars:t,cursor:o,w:a,h:S(e.font,o.x,o.y,i).y-r.y,trimmedH:o.y+c*i-r.y}}function oe(e,t,i,r,n,o,a,c,d){let f=[],{x:l,y}=t;for(;;n++){let k=r[n];if(!k||/^\s*$/.test(k))break;let Ft=Ct(e,k),$t=ae(e,k,r[n+1],a),Ot=l>o&&l+$t>o+i;Ot&&({x:l,y}=S(e,o,y,a)),c=Ot?Ft:Math.max(c,Ft),f.push({x:l,y,w:Tt(e,k),h:e.cellH}),l+=$t,d=Math.max(d,l-o)}return{chars:f,cursor:{x:l,y},trimmedLineH:c,w:d}}function S(e,t,i,r){return{x:t,y:i+e.lineH*r}}function li(e,t,i,r,n){let o=S(e,i,t.y,r);return{chars:[void 0],cursor:o,trimmedLineH:0,w:Math.max(n,t.x-i)}}function ui(e,t,i,r,n,o,a,c,d){let f=t.x>n&&t.x+r>=i?S(e,n,t.y,o):{x:t.x+r,y:t.y},l=Ct(e,c);return{chars:[void 0],cursor:f,trimmedLineH:t.y===f.y?Math.max(a,l):l,w:Math.max(d,t.x-n)}}function ae(e,t,i,r){return r*(Tt(e,t)+ne(e,t,i))}var U=class{query="sprite & text & textWH";update(t){t.invalid&&di(t)}},Y=class{query="sprite & text & textWH & textXY";free(t){for(let i of t.textXY.chars)i.free();t.textXY.chars.length=0,t.invalid=!0}update(t,i){t.invalid&&pi(t,i)}};function di(e){let t=se({font:V,maxW:e.textWH.maxW,scale:e.textWH.scale,start:{x:0,y:0},text:e.text});e.textWH.layout=t;let i=t.w+e.textWH.pad.w+e.textWH.pad.e,r=(e.textWH.trim==="Leading"?t.h-V.leading*e.textWH.scale:e.textWH.trim==="Descender"?t.trimmedH:t.h)+e.textWH.pad.n+e.textWH.pad.s;e.ninePatch&&(i+=e.ninePatch.border.w+e.ninePatch.border.e+e.ninePatch.pad.w+e.ninePatch.pad.e,r+=e.ninePatch.border.n+e.ninePatch.border.s+e.ninePatch.pad.n+e.ninePatch.pad.s),e.sprite.w=i,e.sprite.h=r,e.invalid=!0}function pi(e,t){let i=0,r=e.textWH.layout;for(let[n,o]of r.chars.entries()){if(o==null)continue;let a=e.textXY.chars[i]??=t.alloc();a.x=e.sprite.x+o.x+e.textWH.pad.w+(e.ninePatch?e.ninePatch.border.w+e.ninePatch.pad.w:0),a.y=e.sprite.y+o.y+e.textWH.pad.n+(e.ninePatch?e.ninePatch.border.n+e.ninePatch.pad.n:0),a.z=e.textXY.z,a.tag=re(V,e.text[n]),a.stretch=!0,a.w*=e.textWH.scale,a.h*=e.textWH.scale,i++}for(;e.textXY.chars.length>i;)e.textXY.chars.pop().free();e.invalid=!0}function vt(e,t){for(let i of e)if(i.id===t)return i}function*F(e,t){let i=ie(t);for(let r of e)fi(r,i)&&(yield r)}function ce(e,t,i){for(let r of e){for(let n in r)t[n]?.update?.(r,i);r.invalid&&u?.invalid&&console.debug("[invalid] ent update invalid",r),r.invalid&&(i.invalid=!0),r.invalid=!1}}function fi(e,t){return t.some(i=>i.every(r=>r[0]==="!"?!(r.slice(1)in e):r in e))}function he(e){return{anim:e.anim,celXYWH:xi(e),tags:Object.keys(e.anim)}}function xi(e){let t=[],i=0;for(let r of Object.values(e.anim))t.push(...mi(r,e.celXY,i)),i+=r.cels*2;return t}function mi(e,t,i){let r=[];for(let n=0;n<16;n++){let o=i+2*(n%e.cels);r.push(t[o],t[o+1],e.w,e.h)}return r}var $=class{#t=0;#i=1;#e=!0;#r=1;#o={w:1/0,h:1/0};#n="Int";#s=1;#c=1;#h={w:1,h:1};#u=0;#a=0;#d=0;center(t){this.x=Math.floor(t.x-this.w/2),this.y=Math.floor(t.y-this.h/2)}clientToXY(t){let i=this.clientToXYLocal(t);return{x:this.#u+i.x,y:this.#a+i.y}}clientToXYLocal(t){return{x:t.x/this.#h.w*this.#c,y:t.y/this.#h.h*this.#i}}diagonalize(t){Et(this,t.x*t.y)}follow(t,i,r,n){let o=A(i)?0:Math.floor(this.x);switch(r){case"SW":case"W":case"NW":o+=n?.margin?.w??0;break;case"SE":case"E":case"NE":o+=this.w-(t.w+(n?.margin?.e??0));break;case"N":case"S":case"Center":o+=Math.trunc(this.w/2)-Math.trunc(t.w/2);break}o-=o%((n?.modulo?.x??o)||1);let a=A(i)?0:Math.floor(this.y);switch(r){case"N":case"NE":case"NW":a+=n?.margin?.n??0;break;case"SE":case"S":case"SW":a+=this.h-(t.h+(n?.margin?.s??0));break;case"E":case"W":case"Center":a+=Math.trunc(this.h/2)-Math.trunc(t.h/2);break}a-=a%((n?.modulo?.y??a)||1);let c=n?.fill==="X"||n?.fill==="XY"?this.w-(n?.margin?.w??0)-(n?.margin?.e??0):t.w,d=n?.fill==="Y"||n?.fill==="XY"?this.h-(n?.margin?.n??0)-(n?.margin?.s??0):t.h;return{x:o,y:a,w:c,h:d}}get h(){return this.#i}isVisible(t){return b(this,t)}get invalid(){return this.#e}get minScale(){return this.#r}set minScale(t){this.#s!==t&&(this.#s=t,this.#l())}get minWH(){return this.#o}set minWH(t){this.#o.w===t.w&&this.#o.h===t.h||(this.#o.w=t.w,this.#o.h=t.h,this.#l())}get mode(){return this.#n}set mode(t){this.#n!==t&&(this.#n=t,this.#l())}get portrait(){return this.h>this.w}postupdate(){this.#e=!1}get scale(){return this.#s}toString(){return`Cam{(${this.x} ${this.y}) ${this.w}\xD7${this.h}}`}update(t){if(!t.parentElement)throw Error("canvas has no parent");let{clientWidth:i,clientHeight:r}=t.parentElement;this.#e||=this.#h.w!==i||this.#h.h!==r||this.#t!==devicePixelRatio,this.#e&&(this.#t=devicePixelRatio,this.#h.w=i,this.#h.h=r,this.#l(),t.width=this.#c,t.height=this.#i,t.style.width=`${this.#c*this.#s/devicePixelRatio}px`,t.style.height=`${this.#i*this.#s/devicePixelRatio}px`)}get w(){return this.#c}get whClient(){return this.#h}get x(){return this.#u}set x(t){this.#e||=this.x!==t,this.#u=t}get y(){return this.#a}set y(t){this.#e||=this.y!==t,this.#a=t}get zoomOut(){return this.#d}set zoomOut(t){t=Math.max(0,t),this.#d!==t&&(this.#d=t,this.#l())}#l(){!this.#e&&u?.invalid&&console.debug("[invalid] cam invalid"),this.#e=!0;let t={w:this.#h.w*devicePixelRatio,h:this.#h.h*devicePixelRatio},i=Math.max(this.#r,Math.min(t.w/this.#o.w,t.h/this.#o.h)-(this.#n==="Int"?Math.trunc(this.#d):this.#d));this.#s=this.#n==="Int"?Math.trunc(i):i,this.#c=Math.ceil(t.w/this.#s),this.#i=Math.ceil(t.h/this.#s)}};var O=class{enable=!1;#t;constructor(t){this.#t=t}register(t){let i=this.#t[`${t}EventListener`].bind(this.#t);return i("contextmenu",this.#i),i("touchstart",this.#i,{passive:!1}),this}[Symbol.dispose](){this.register("remove")}#i=t=>{!t.isTrusted||t.metaKey||t.altKey||t.ctrlKey||this.enable||t.preventDefault()}};var X=class{bits=0;bitByAxis={};bitByButton={};onEvent=()=>{};#t;constructor(t){this.#t=t}get connected(){return isSecureContext&&navigator.getGamepads().filter(Boolean).length>0}register(t){let i=this.#t[`${t}EventListener`].bind(this.#t);return i("gamepadconnected",this.onEvent),i("gamepaddisconnected",this.onEvent),this}reset(){this.bits=0}[Symbol.dispose](){this.register("remove")}update(){if(isSecureContext)for(let t of navigator.getGamepads()){for(let[i,r]of t?.axes.entries()??[]){let n=this.bitByAxis[i];if(!n)continue;let o=r<0?n[0]:r===0?0:n[1];this.bits|=Math.abs(r)>=.5?o:0}for(let[i,r]of t?.buttons.entries()??[]){let n=this.bitByButton[i];n!=null&&(this.bits|=r.pressed?n:0)}}}};var N=class{bitByCode={};invalid=!1;onEvent=()=>{};#t={};#i;constructor(t){this.#i=t}get bits(){let t=0;for(let i in this.bitByCode)t|=this.#t[i]?this.bitByCode[i]:0;return t}postupdate(){this.invalid=!1}register(t){let i=this.#i[`${t}EventListener`].bind(this.#i);for(let r of["keydown","keyup"])i(r,this.#e);return this}reset(){this.invalid=!1,this.#t={}}[Symbol.dispose](){this.register("remove")}#e=t=>{!t.isTrusted||this.bitByCode[t.code]==null||t.type==="keydown"&&(t.metaKey||t.altKey||t.ctrlKey)||(this.invalid=!0,this.#t[t.code]=t.type==="keydown",t.preventDefault(),this.onEvent())}};var yi={mouse:"Mouse",pen:"Pen",touch:"Touch"},wi=["pointercancel","pointerdown","pointermove","pointerup"],G=class{bitByButton={};dragMinClient=5;invalid=!1;onEvent=()=>{};primary;secondary={};#t;#i;constructor(t){this.#i=t}get boundsClient(){if(!this.primary?.bits&&!Object.keys(this.secondary).length)return;let t={x:1/0,y:1/0},i={x:-1/0,y:-1/0};for(let r of[this.primary,...Object.values(this.secondary)])r?.bits&&(t=Qt(t,r.xyClient),i=Jt(i,r.xyClient));return{x:t.x,y:t.y,w:i.x-t.x,h:i.y-t.y}}get centerClient(){let t=this.boundsClient;return t?Kt(t,{x:t.w/2,y:t.h/2}):this.primary?.xyClient}get locked(){return this.#i.ownerDocument.pointerLockElement===this.#i}get pinchClient(){if(!this.#t)return;let t=this.#o;return t?wt(t,this.#t):void 0}postupdate(){this.invalid=!1}register(t){let i=this.#i[`${t}EventListener`].bind(this.#i);for(let r of wi)i(r,this.#r);return this}reset(){this.invalid=!1,this.primary=void 0;for(let t in this.secondary)delete this.secondary[t];this.#t=void 0}update(){((this.primary?.bits?1:0)+Object.values(this.secondary).length<2||!this.#t)&&(this.#t=this.#o)}[Symbol.dispose](){this.register("remove")}#e(t){let i=0;for(let r=1;r<=t;r<<=1)(r&t)===r&&(i|=this.bitByButton[r]??0);return i}#r=t=>{if(!t.isTrusted)return;this.invalid=!0;let i=t.metaKey||t.altKey||t.ctrlKey?0:this.#e(t.buttons),r=this.locked;if(i&&t.type==="pointerdown"&&(t.preventDefault(),!r))try{this.#i.setPointerCapture(t.pointerId)}catch{}let n=t.isPrimary?this.primary:this.secondary[t.pointerId],o;if(r){let y=1/devicePixelRatio;o={x:Math.min(Math.max(0,(n?.xyClient.x??t.offsetX)+t.movementX*y),this.#i.clientWidth),y:Math.min(Math.max(0,(n?.xyClient.y??t.offsetY)+t.movementY*y),this.#i.clientHeight)}}else o={x:t.offsetX,y:t.offsetY};let a=t.type,c=yi[t.pointerType],d;i&&(t.type==="pointerdown"?d={x:o.x,y:o.y}:t.type==="pointermove"&&(d=n?.clickClient));let f=!!i&&(n?.drag||!!d&&Zt(d,o)>=this.dragMinClient),l={clickClient:d,bits:i,drag:f,ev:a,id:t.pointerId,primary:t.isPrimary,type:c,xyClient:o};t.isPrimary?this.primary=l:i?this.secondary[t.pointerId]=l:delete this.secondary[t.pointerId],this.onEvent()};get#o(){if((this.primary?.bits?1:0)+Object.values(this.secondary).length<2)return;let t=this.boundsClient;return t?{x:t.w,y:t.h}:void 0}};var K=class{deltaClient;onEvent=()=>{};#t;constructor(t){this.#t=t}postupdate(){this.deltaClient=void 0}register(t){return this.#t[`${t}EventListener`].bind(this.#t)("wheel",this.#i,{passive:!0}),this}reset(){this.deltaClient=void 0}[Symbol.dispose](){this.register("remove")}#i=t=>{!t.isTrusted||t.metaKey||t.altKey||t.ctrlKey||(this.deltaClient={x:t.deltaX,y:t.deltaY,z:t.deltaZ},this.onEvent())}};var Z=class{comboMaxIntervalMillis=300;gestured=!1;handled=!1;invalid=!1;minHeldMillis=300;#t={};#i={};#e=0;#r;#o=[];#n;#s={x:0,y:0};#c;#h=0;#u;#a;#d;#l=0;#p;#m;constructor(t,i){this.#r=t,this.#n=new O(i),this.#c=new X(globalThis),this.#u=new N(i.ownerDocument),this.#a=new G(i),this.#p=new K(i)}get anyOn(){return this.#e!==0}get combo(){let t=[];for(let i of this.#o){let r=[];for(let n=1;n<=i;n<<=1)(n&i)===n&&this.#i[n]&&r.push(this.#i[n]);r.sort(),t.push(r)}return t}get contextMenu(){return this.#n}get dir(){return this.#s}get gamepad(){return this.#c.connected?{}:void 0}get held(){return!this.handled&&this.#h>=this.minHeldMillis}isAnyOn(...t){return!this.handled&&!!(this.#e&this.#f(t))}isAnyOnStart(...t){return this.started&&this.isAnyOn(...t)}isAnyOnStill(...t){let i=this.#f(t);return!this.handled&&!!(this.#e&this.#l&i)}isAnyStarted(...t){let i=this.#f(t);return!this.handled&&(this.#e&i)!==(this.#l&i)}isCombo(...t){return t.length===this.#o.length&&this.isComboEndsWith(...t)}isComboEndsWith(...t){for(let[i,r]of t.entries()){let n=this.#f(r);if(this.#o.at(-t.length+i)!==n)return!1}return!this.handled&&(this.#o.at(-1)===this.#e||!this.#e)}isComboEndsWithStart(...t){return this.isOnStart(...t.at(-1))&&this.isComboEndsWith(...t)}isComboStart(...t){return this.isOnStart(...t.at(-1))&&this.isCombo(...t)}isOff(...t){return!this.handled&&!this.isOn(...t)}isOffStart(...t){let i=this.#f(t);return(this.#l&i)===i&&this.started&&this.isOff(...t)}isOn(...t){let i=this.#f(t);return!this.handled&&(this.#e&i)===i}isOnStart(...t){return this.started&&this.isOn(...t)}get key(){return{invalid:this.#u.invalid}}mapDefault(){this.mapKeyboardCode("U","ArrowUp"),this.mapKeyboardCode("D","ArrowDown"),this.mapKeyboardCode("L","ArrowLeft"),this.mapKeyboardCode("R","ArrowRight"),this.mapKeyboardCode("C","KeyC"),this.mapKeyboardCode("A","KeyX","Space"),this.mapKeyboardCode("B","KeyZ"),this.mapKeyboardCode("Menu","Enter"),this.mapKeyboardCode("Back","Escape"),this.mapGamepadAxis("U","D",1,3),this.mapGamepadAxis("L","R",0,2),this.mapGamepadButton("U",12),this.mapGamepadButton("D",13),this.mapGamepadButton("L",14),this.mapGamepadButton("R",15),this.mapGamepadButton("C",2),this.mapGamepadButton("B",0),this.mapGamepadButton("A",1),this.mapGamepadButton("Menu",9),this.mapGamepadButton("Back",8),this.mapPointerClick("A",1),this.mapPointerClick("B",2),this.mapPointerClick("C",4)}mapGamepadAxis(t,i,...r){for(let n of r)this.#c.bitByAxis[n]=[this.#x(t),this.#x(i)]}mapGamepadButton(t,...i){for(let r of i)this.#c.bitByButton[r]=this.#x(t)}mapKeyboardCode(t,...i){for(let r of i)this.#u.bitByCode[r]=this.#x(t)}mapPointerClick(t,...i){for(let r of i)this.#a.bitByButton[r]=this.#x(t)}get on(){let t=[];for(let i in this.#t)this.isOn(i)&&t.push(i);return t.sort()}set onEvent(t){this.#c.onEvent=t,this.#u.onEvent=t,this.#a.onEvent=t,this.#p.onEvent=t}get point(){return this.#d}get pointer(){return this.#a}register(t){return globalThis[`${t}EventListener`]("blur",this.reset),this.#n.register(t),this.#c.register(t),this.#u.register(t),this.#a.register(t),this.#p.register(t),this}reset=()=>{this.#e=0,this.#l=0,this.handled=!1,this.#h=0,this.#o.length=0,this.#c.reset(),this.#u.reset(),this.#a.reset(),this.#d=void 0,this.#p.reset(),this.#m=void 0};get started(){return!this.handled&&this.#e!==this.#l}update(t){if(this.handled=!1,this.#c.update(),this.#a.update(),this.#l=this.#e,this.#e=this.#c.bits|this.#u.bits|(this.#a.primary?.bits??0),this.invalid=this.#e!==this.#l||this.#a.invalid||!!this.#p.deltaClient,this.gestured||=!!this.#e,this.#s.x=this.#s.y=0,(this.#t.U&this.#e)===this.#t.U&&(this.#s.y-=1),(this.#t.D&this.#e)===this.#t.D&&(this.#s.y+=1),(this.#t.L&this.#e)===this.#t.L&&(this.#s.x-=1),(this.#t.R&this.#e)===this.#t.R&&(this.#s.x+=1),(t>this.comboMaxIntervalMillis&&this.#e!==this.#l||this.#h+t>this.comboMaxIntervalMillis&&!this.#e)&&(this.#o.length=0),this.#e===this.#l?this.#h=this.#h+t:this.#h=t,this.#e&&this.#e!==this.#l&&(this.#l&&(this.#o.length=0),this.#o.push(this.#e)),this.#a.primary){let i=this.#a.pinchClient,r=this.#a.primary.drag&&!Object.values(this.#a.secondary).length,n=[];for(let c of Object.values(this.#a.secondary))n.push({type:c.type,click:c.clickClient?{client:c.clickClient,local:this.#r.clientToXYLocal(c.clickClient),...this.#r.clientToXY(c.clickClient)}:void 0,...this.#r.clientToXY(c.xyClient),client:c.xyClient,local:this.#r.clientToXYLocal(c.xyClient)});let o=this.#a.centerClient,a={client:o,local:this.#r.clientToXYLocal(o),...this.#r.clientToXY(o)};this.#d={center:a,click:this.#a.primary.clickClient?{client:this.#a.primary.clickClient,local:this.#r.clientToXYLocal(this.#a.primary.clickClient),...this.#r.clientToXY(this.#a.primary.clickClient)}:void 0,drag:{on:r,start:!this.#d?.drag.on&&r,end:!!this.#d?.drag.on&&!r},invalid:this.#a.invalid,pinch:i?{client:i,xy:this.#r.clientToXY(i)}:void 0,secondary:n,type:this.#a.primary.type,...this.#r.clientToXY(this.#a.primary.xyClient),client:this.#a.primary.xyClient,local:this.#r.clientToXYLocal(this.#a.primary.xyClient)}}else this.#d=void 0;this.#m=this.#p.deltaClient?{delta:{client:this.#p.deltaClient,xy:this.#r.clientToXY(this.#p.deltaClient)}}:void 0,this.#u.postupdate(),this.#a.postupdate(),this.#p.postupdate()}[Symbol.dispose](){this.register("remove")}get wheel(){return this.#m}#f(t){let i=0;for(let r of t)i|=this.#t[r]??0;return i}#x(t){let i=this.#t[t]??=1<<Object.keys(this.#t).length;return this.#i[i]=t,i}};function m(e){return e!=null&&!Array.isArray(e)&&typeof e=="object"}function le(e){return e[0]?`${e[0].toLocaleLowerCase()}${e.slice(1)}`:e}function ue(e,t,i,r){let n={default:new Set};for(let[o,a]of Object.entries(e.zoo))n[o]=new Set(a.map(c=>Si(c,t,i,r)));return{background:e.background?parseInt(e.background,16):void 0,minScale:e.minScale,minWH:e.minWH?Vi(e.minWH):void 0,zoo:n,zoomOut:e.zoomOut}}function J(e){if(!e||typeof e=="number"){let t=e??0;return{n:t,s:t,w:t,e:t}}return"x"in e||"y"in e?{n:e.y??0,s:e.y??0,w:e.x??0,e:e.x??0}:{n:e.n??0,s:e.s??0,w:e.w??0,e:e.e??0}}function bi(e,t,i){let r=x(e.pressed,t,i);e.z&&(r.z=h[e.z]),r.visible=!1;let n=x(e.selected,t,i);return e.z&&(n.z=h[e.z]),{pressed:r,selected:n,started:!1,type:e.type??"Button"}}function gi(e,t){if(!e.sprite)throw Error("cursor missing sprite");return e.sprite.visible=!1,{bounds:{x:0,y:0,w:0,h:0},keyboard:t.keyboard??0,pick:t.pick,point:e.sprite.tag}}function Si(e,t,i,r){let n={};for(let o in e){let a=o;n[a]=i(n,e,a,t,r)??Ei(n,e,a,t,r)}return n.invalid=!0,n}function Ei(e,t,i,r,n){if(t[i]!=null)switch(i){case"button":return bi(t[i],r,n);case"cursor":return gi(e,t[i]);case"fps":return Ci(t[i]);case"hud":return Ti(t[i]);case"cam":case"draw":case"debugInput":case"id":case"name":case"text":return t[i];case"ninePatch":return vi(e,t[i],r,n);case"override":return _i(t[i]);case"sprite":return x(t[i],r,n);case"textWH":return zi(t[i]);case"textXY":return ki(e,t[i]);default:}}function Ci(e){return{prevFrames:0,next:{created:performance.now(),frames:0}}}function Ti(e){return{fill:e.fill,margin:J(e.margin??0),modulo:Ai(e.modulo??0),origin:e.origin}}function vi(e,t,i,r){if(!e.sprite)throw Error("nine patch missing sprite");let n={center:t.patch.center==null?void 0:x(t.patch.center,i,r),n:t.patch.n==null?void 0:x(t.patch.n,i,r),s:t.patch.s==null?void 0:x(t.patch.s,i,r),w:t.patch.w==null?void 0:x(t.patch.w,i,r),e:t.patch.e==null?void 0:x(t.patch.e,i,r),nw:t.patch.nw==null?void 0:x(t.patch.nw,i,r),ne:t.patch.ne==null?void 0:x(t.patch.ne,i,r),sw:t.patch.sw==null?void 0:x(t.patch.sw,i,r),se:t.patch.se==null?void 0:x(t.patch.se,i,r)},o=J(t.border),a={border:o,pad:J(t.pad),patch:n};return n.center&&(n.center.z=e.sprite.z),n.n&&(n.n.h=o.n,(!m(t.patch.n)||t.patch.n.z==null)&&(n.n.z=e.sprite.z)),n.s&&(n.s.h=o.s,(!m(t.patch.s)||t.patch.s.z==null)&&(n.s.z=e.sprite.z)),n.w&&(n.w.w=o.w,(!m(t.patch.w)||t.patch.w.z==null)&&(n.w.z=e.sprite.z)),n.e&&(n.e.w=o.e,(!m(t.patch.e)||t.patch.e.z==null)&&(n.e.z=e.sprite.z)),n.nw&&(n.nw.w=o.w,n.nw.h=o.n,(!m(t.patch.nw)||t.patch.nw.z==null)&&(n.nw.z=e.sprite.z)),n.ne&&(n.ne.w=o.e,n.ne.h=o.n,(!m(t.patch.ne)||t.patch.ne.z==null)&&(n.ne.z=e.sprite.z)),n.sw&&(n.sw.w=o.w,n.sw.h=o.s,(!m(t.patch.sw)||t.patch.sw.z==null)&&(n.sw.z=e.sprite.z)),n.se&&(n.se.w=o.e,n.se.h=o.s,(!m(t.patch.se)||t.patch.se.z==null)&&(n.se.z=e.sprite.z)),a}function _i(e){return{invalid:e.invalid}}function x(e,t,i){let r=typeof e=="string"?"default":le(e.pool??"Default");if(!t[r])throw Error(`no ${r} sprite pool`);let n=t[r].alloc();if(typeof e=="string"){if(!(e in i.anim))throw Error(`no tag "${e}"`);return n.tag=e,n}if(e.tag!=null){if(!(e.tag in i.anim))throw Error(`no tag "${e.tag}"`);n.tag=e.tag}return n.visible=e.visible??e.tag!=null,e.flip&&(n.flipX=e.flip==="X"||e.flip==="XY",n.flipY=e.flip==="Y"||e.flip==="XY"),e.stretch!=null&&(n.stretch=e.stretch),e.w!=null&&(n.w=e.w),e.h!=null&&(n.h=e.h),e.scale!=null&&(n.w*=typeof e.scale=="number"?e.scale:e.scale.x??1,n.h*=typeof e.scale=="number"?e.scale:e.scale.y??1),e.x!=null&&(n.x=e.x),e.y!=null&&(n.y=e.y),e.z!=null&&(n.z=h[e.z]),e.zend!=null&&(n.zend=e.zend),n}function zi(e){return{layout:{chars:[],cursor:{x:0,y:0},w:0,h:0,trimmedH:0},maxW:e.maxW??jt.w,pad:J(e.pad),scale:e.scale??1,trim:e.trim}}function ki(e,t){return{chars:[],z:t.z?h[t.z]:e.sprite?.z??h.Bottom}}function Vi(e){return typeof e=="number"?{w:e,h:e}:{w:Number(e?.w??0),h:Number(e?.h??0)}}function Ai(e){return typeof e=="number"?{x:e,y:e}:{x:e.x??0,y:e.y??0}}var Q=class{#t;#i;#e=0;#r;#o;constructor(t){if(t.allocBytes<=0)throw Error("byte allocation must be > 0");if(t.pageBlocks<=0)throw Error("page blocks must be > 0");this.#i={...t,init:t.init??(()=>{}),minPages:t.minPages??1};let i=this.#i.minPages*t.pageBlocks;this.#t=new Array(i),this.#r=new Uint8Array,this.#s(i,"Init")}alloc(){this.#e>=this.#n&&this.#s(this.#n+this.#i.pageBlocks,"Call");let t=this.#t[this.#e];return t.i=this.#e*this.#i.allocBytes,this.#e++,this.#i.init(t),t}clear(){this.#e=0;let t=this.#i.minPages*this.#i.pageBlocks;this.#n>t&&this.#s(t,"Call")}free(t){if(!this.#e)throw Error("pool underflow");this.#e--;let i=this.#e*this.#i.allocBytes;this.#r.copyWithin(t.i,i,i+this.#i.allocBytes),this.#t[this.#e].i=t.i,[this.#t[t.i],this.#t[this.#e]]=[this.#t[this.#e],this.#t[t.i]];let r=Math.floor((this.#n-this.#e)/this.#i.pageBlocks);r&&this.#n/this.#i.pageBlocks-r>=this.#i.minPages&&this.#s(this.#n-r*this.#i.pageBlocks,"Call")}get size(){return this.#e}get view(){return this.#o}toDebugString(){let t="";for(let i=0;i<this.#r.buffer.byteLength;i++)i&&!(i%this.#i.allocBytes)&&(t+=" "),t+=this.#r[i].toString(16).padStart(2,"0");return t}get#n(){return this.#r.buffer.byteLength/this.#i.allocBytes}#s(t,i){i==="Call"&&u?.mem&&console.debug(`[mem] ${t<this.#n?"shrinking":"growing"} pool to ${t}`),this.#t.length=t;for(let o=this.#n;o<t;o++)this.#t[o]=this.#i.alloc(this);let r=new ArrayBuffer(t*this.#i.allocBytes),n=new Uint8Array(r);n.set(this.#r.subarray(0,t*this.#i.allocBytes)),this.#r=n,this.#o=new DataView(r)}};function de(e){return new Q({alloc:t=>new M(t,0,e.atlas,e.looper),init:t=>t.init(),allocBytes:w,...e})}var j=class{#t;constructor(t){this.#t=t*16807%2147483647,this.#t<=0&&(this.#t=(this.#t+2147483646)%2147483646+1)}get num(){return this.#t=this.#t*16807%2147483647,(this.#t-1)/2147483646}get seed(){return this.#t}};function pe(e,t){t==null?localStorage.removeItem(e):localStorage.setItem(e,JSON.stringify(t))}function fe(e){let t=localStorage.getItem(e);return t==null?void 0:JSON.parse(t)}var tt=s;function _t(e,t){return((t==="Sec"?0:(59-e.getSeconds()%60)*1e3)+1e3-e.getMilliseconds()%1e3)%(t==="Sec"?1e3:6e4)}function xe(){document.body.style.margin="0",document.body.style.width="100dvw",document.body.style.height="100dvh",document.body.style.overflow="hidden"}function me(e){if(!document.querySelector('meta[name="viewport"]')){let t=document.createElement("meta");t.name="viewport",t.content="width=device-width, maximum-scale=1, minimum-scale=1, user-scalable=no",document.head.appendChild(t)}if(e&&!document.querySelector('meta[name="description"]')){let t=document.createElement("meta");t.name="description",t.content=e,document.head.appendChild(t)}}function ye(e,t){if(e??=document.createElement("canvas"),e.width=0,e.style.cursor="none",e.style.display="block",e.style.outline="none",t==="Int"&&(e.style.imageRendering="pixelated"),e.style.touchAction="none",e.tabIndex=0,e.focus(),!e.parentNode){let i=document.createElement("main");i.style.backgroundColor=document.body.style.backgroundColor,i.style.height="100%",i.append(e),document.body.append(i)}return e}function we(e){return`#${e.toString(16).padStart(8,"0")}`}function be(e){let[t,i,r,n]=e.match(/[0-9.]+/g)?.map(Number)??[];return(Math.round(t??0)<<24|Math.round(i??0)<<16|Math.round(r??0)<<8|Math.round((n??1)*255))>>>0}var et=class{#t;#i;#e=0;#r;#o=0;constructor(t,i,r){this.#t=t,this.#i=i,this.#r=r}register(t){return t==="add"?this.#o=setTimeout(()=>{this.#r(),this.#e=setInterval(this.#r,this.#i)},this.#t()):(clearTimeout(this.#o),clearInterval(this.#e)),this}[Symbol.dispose](){this.register("remove")}};async function ge(e){let t=new Promise((i,r)=>{e.onload=()=>i(e),e.onerror=()=>r(Error(`image load error for ${e.src}`))});return e.complete?e:await t}var it=class{onChange=()=>{};#t;register(t){return this.#t?.removeEventListener("change",this.#i),t==="add"?(this.#t=matchMedia(`not (resolution: ${devicePixelRatio}dppx)`),this.#t.addEventListener("change",this.#i)):this.#t=void 0,this}[Symbol.dispose](){this.register("remove")}#i=()=>{this.register("add"),this.onChange()}};function Ee(e,t,i,r){let n=Di(e,t,i);return e.useProgram(n),{buffer:e.createBuffer(),program:n,textures:r,uniform:Pi(e,n),vao:e.createVertexArray()}}function Pi(e,t){let i=t?e.getProgramParameter(t,e.ACTIVE_UNIFORMS):0,r=u?.render?new Proxy({},{get(n,o){if(n[o]==null)throw Error(`no shader uniform "${o}"`);return n[o]}}):{};for(let n=0;n<i;++n){let o=e.getActiveUniform(t,n);if(!o)throw Error(`no shader uniform at index ${n}`);let a=e.getUniformLocation(t,o.name);if(!a)throw Error(`no shader uniform "${o.name}"`);let c=o.name.replace("[0]","");r[c]=a}return r}function Di(e,t,i){let r=e.createProgram();if(!r)return null;let n=Se(e,"VERTEX_SHADER",t),o=Se(e,"FRAGMENT_SHADER",i);if(!n||!o)return null;if(e.attachShader(r,n),e.attachShader(r,o),e.linkProgram(r),u?.render&&!e.getProgramParameter(r,e.LINK_STATUS)){let a=e.getProgramInfoLog(r)?.slice(0,-1);throw Error(`shader link failure; ${a}`)}return e.detachShader(r,o),e.detachShader(r,n),e.deleteShader(o),e.deleteShader(n),r}function Se(e,t,i){let r=e.createShader(e[t]);if(!r)return r;if(e.shaderSource(r,i.trim()),e.compileShader(r),u?.render&&!e.getShaderParameter(r,e.COMPILE_STATUS)){let n=e.getShaderInfoLog(r)?.slice(0,-1);throw Error(`shader compile failure; ${n}`)}return r}var Ce=`#version 300 es
5
- #pragma debug(${u?.render?"on":"off"})
6
- #pragma optimize(${u?.render?"off":"on"})
3
+ `?e.endOfLineKerning:e.kerning[t+i]!=null?e.kerning[t+i]:/^\s?$/.test(t)||/^\s?$/.test(i)?e.defaultWhitespaceKerning:e.defaultKerning}function Tt(e,t){return e.charW[t]??e.defaultCharW}function se(e){let t=[],i=e.scale??1,r=e.start??{x:0,y:0},n=e.maxW??1/0,o={x:r.x,y:r.y},a=0,c=0;for(;t.length<e.text.length;){let l=t.length,f=e.text[l],u;f===`
4
+ `?u=li(e.font,o,r.x,i,a):/^\s*$/.test(f)?u=ui(e.font,o,n,ae(e.font,f,e.text[l+1],i),r.x,i,c,f,a):(u=oe(e.font,o,n,e.text,l,r.x,i,c,a),o.x>0&&u.cursor.y===S(e.font,r.x,o.y,i).y&&n-o.x+u.cursor.x<=n&&(o=S(e.font,r.x,o.y,i),u=oe(e.font,o,n,e.text,l,r.x,i,c,a))),t.push(...u.chars),o.x=u.cursor.x,o.y=u.cursor.y,a=u.w,c=u.trimmedLineH}return{chars:t,cursor:o,w:a,h:S(e.font,o.x,o.y,i).y-r.y,trimmedH:o.y+c*i-r.y}}function oe(e,t,i,r,n,o,a,c,l){let f=[],{x:u,y}=t;for(;;n++){let k=r[n];if(!k||/^\s*$/.test(k))break;let Ft=Ct(e,k),$t=ae(e,k,r[n+1],a),Ot=u>o&&u+$t>o+i;Ot&&({x:u,y}=S(e,o,y,a)),c=Ot?Ft:Math.max(c,Ft),f.push({x:u,y,w:Tt(e,k),h:e.cellH}),u+=$t,l=Math.max(l,u-o)}return{chars:f,cursor:{x:u,y},trimmedLineH:c,w:l}}function S(e,t,i,r){return{x:t,y:i+e.lineH*r}}function li(e,t,i,r,n){let o=S(e,i,t.y,r);return{chars:[void 0],cursor:o,trimmedLineH:0,w:Math.max(n,t.x-i)}}function ui(e,t,i,r,n,o,a,c,l){let f=t.x>n&&t.x+r>=i?S(e,n,t.y,o):{x:t.x+r,y:t.y},u=Ct(e,c);return{chars:[void 0],cursor:f,trimmedLineH:t.y===f.y?Math.max(a,u):u,w:Math.max(l,t.x-n)}}function ae(e,t,i,r){return r*(Tt(e,t)+ne(e,t,i))}var U=class{query="sprite & text & textWH";update(t){t.invalid&&di(t)}},Y=class{query="sprite & text & textWH & textXY";free(t){for(let i of t.textXY.chars)i.free();t.textXY.chars.length=0,t.invalid=!0}update(t,i){t.invalid&&pi(t,i)}};function di(e){let t=se({font:V,maxW:e.textWH.maxW,scale:e.textWH.scale,start:{x:0,y:0},text:e.text});e.textWH.layout=t;let i=t.w+e.textWH.pad.w+e.textWH.pad.e,r=(e.textWH.trim==="Leading"?t.h-V.leading*e.textWH.scale:e.textWH.trim==="Descender"?t.trimmedH:t.h)+e.textWH.pad.n+e.textWH.pad.s;e.ninePatch&&(i+=e.ninePatch.border.w+e.ninePatch.border.e+e.ninePatch.pad.w+e.ninePatch.pad.e,r+=e.ninePatch.border.n+e.ninePatch.border.s+e.ninePatch.pad.n+e.ninePatch.pad.s),e.sprite.w=i,e.sprite.h=r,e.invalid=!0}function pi(e,t){let i=0,r=e.textWH.layout;for(let[n,o]of r.chars.entries()){if(o==null)continue;let a=e.textXY.chars[i]??=t.alloc();a.x=e.sprite.x+o.x+e.textWH.pad.w+(e.ninePatch?e.ninePatch.border.w+e.ninePatch.pad.w:0),a.y=e.sprite.y+o.y+e.textWH.pad.n+(e.ninePatch?e.ninePatch.border.n+e.ninePatch.pad.n:0),a.z=e.textXY.z,a.tag=re(V,e.text[n]),a.stretch=!0,a.w*=e.textWH.scale,a.h*=e.textWH.scale,i++}for(;e.textXY.chars.length>i;)e.textXY.chars.pop().free();e.invalid=!0}function vt(e,t){for(let i of e)if(i.id===t)return i}function*F(e,t){let i=ie(t);for(let r of e)fi(r,i)&&(yield r)}function ce(e,t,i){for(let r of e){for(let n in r)t[n]?.update?.(r,i);r.invalid&&d?.invalid&&console.debug("[invalid] ent update invalid",r),r.invalid&&(i.invalid=!0),r.invalid=!1}}function fi(e,t){return t.some(i=>i.every(r=>r[0]==="!"?!(r.slice(1)in e):r in e))}function he(e){return{anim:e.anim,celXYWH:xi(e),tags:Object.keys(e.anim)}}function xi(e){let t=[],i=0;for(let r of Object.values(e.anim))t.push(...mi(r,e.celXY,i)),i+=r.cels*2;return t}function mi(e,t,i){let r=[];for(let n=0;n<16;n++){let o=i+2*(n%e.cels);r.push(t[o],t[o+1],e.w,e.h)}return r}var $=class{#t=0;#i=1;#e=!0;#r=1;#o={w:1/0,h:1/0};#n="Int";#s=1;#c=1;#h={w:1,h:1};#u=0;#a=0;#d=0;center(t){this.x=Math.floor(t.x-this.w/2),this.y=Math.floor(t.y-this.h/2)}clientToXY(t){let i=this.clientToXYLocal(t);return{x:this.#u+i.x,y:this.#a+i.y}}clientToXYLocal(t){return{x:t.x/this.#h.w*this.#c,y:t.y/this.#h.h*this.#i}}diagonalize(t){Et(this,t.x*t.y)}follow(t,i,r,n){let o=A(i)?0:Math.floor(this.x);switch(r){case"SW":case"W":case"NW":o+=n?.margin?.w??0;break;case"SE":case"E":case"NE":o+=this.w-(t.w+(n?.margin?.e??0));break;case"N":case"S":case"Center":o+=Math.trunc(this.w/2)-Math.trunc(t.w/2);break}o-=o%((n?.modulo?.x??o)||1);let a=A(i)?0:Math.floor(this.y);switch(r){case"N":case"NE":case"NW":a+=n?.margin?.n??0;break;case"SE":case"S":case"SW":a+=this.h-(t.h+(n?.margin?.s??0));break;case"E":case"W":case"Center":a+=Math.trunc(this.h/2)-Math.trunc(t.h/2);break}a-=a%((n?.modulo?.y??a)||1);let c=n?.fill==="X"||n?.fill==="XY"?this.w-(n?.margin?.w??0)-(n?.margin?.e??0):t.w,l=n?.fill==="Y"||n?.fill==="XY"?this.h-(n?.margin?.n??0)-(n?.margin?.s??0):t.h;return{x:o,y:a,w:c,h:l}}get h(){return this.#i}isVisible(t){return b(this,t)}get invalid(){return this.#e}get minScale(){return this.#r}set minScale(t){this.#s!==t&&(this.#s=t,this.#l())}get minWH(){return this.#o}set minWH(t){this.#o.w===t.w&&this.#o.h===t.h||(this.#o.w=t.w,this.#o.h=t.h,this.#l())}get mode(){return this.#n}set mode(t){this.#n!==t&&(this.#n=t,this.#l())}get portrait(){return this.h>this.w}postupdate(){this.#e=!1}get scale(){return this.#s}toString(){return`Cam{(${this.x} ${this.y}) ${this.w}\xD7${this.h}}`}update(t){if(!t.parentElement)throw Error("canvas has no parent");let{clientWidth:i,clientHeight:r}=t.parentElement;this.#e||=this.#h.w!==i||this.#h.h!==r||this.#t!==devicePixelRatio,this.#e&&(this.#t=devicePixelRatio,this.#h.w=i,this.#h.h=r,this.#l(),t.width=this.#c,t.height=this.#i,t.style.width=`${this.#c*this.#s/devicePixelRatio}px`,t.style.height=`${this.#i*this.#s/devicePixelRatio}px`)}get w(){return this.#c}get whClient(){return this.#h}get x(){return this.#u}set x(t){this.#e||=this.x!==t,this.#u=t}get y(){return this.#a}set y(t){this.#e||=this.y!==t,this.#a=t}get zoomOut(){return this.#d}set zoomOut(t){t=Math.max(0,t),this.#d!==t&&(this.#d=t,this.#l())}#l(){!this.#e&&d?.invalid&&console.debug("[invalid] cam invalid"),this.#e=!0;let t={w:this.#h.w*devicePixelRatio,h:this.#h.h*devicePixelRatio},i=Math.max(this.#r,Math.min(t.w/this.#o.w,t.h/this.#o.h)-(this.#n==="Int"?Math.trunc(this.#d):this.#d));this.#s=this.#n==="Int"?Math.trunc(i):i,this.#c=Math.ceil(t.w/this.#s),this.#i=Math.ceil(t.h/this.#s)}};var O=class{enable=!1;#t;constructor(t){this.#t=t}register(t){let i=this.#t[`${t}EventListener`].bind(this.#t);return i("contextmenu",this.#i),i("touchstart",this.#i,{passive:!1}),this}[Symbol.dispose](){this.register("remove")}#i=t=>{!t.isTrusted||t.metaKey||t.altKey||t.ctrlKey||this.enable||t.preventDefault()}};var X=class{bits=0;bitByAxis={};bitByButton={};onEvent=()=>{};#t;constructor(t){this.#t=t}get connected(){return isSecureContext&&navigator.getGamepads().filter(Boolean).length>0}register(t){let i=this.#t[`${t}EventListener`].bind(this.#t);return i("gamepadconnected",this.onEvent),i("gamepaddisconnected",this.onEvent),this}reset(){this.bits=0}[Symbol.dispose](){this.register("remove")}update(){if(isSecureContext)for(let t of navigator.getGamepads()){for(let[i,r]of t?.axes.entries()??[]){let n=this.bitByAxis[i];if(!n)continue;let o=r<0?n[0]:r===0?0:n[1];this.bits|=Math.abs(r)>=.5?o:0}for(let[i,r]of t?.buttons.entries()??[]){let n=this.bitByButton[i];n!=null&&(this.bits|=r.pressed?n:0)}}}};var N=class{bitByCode={};invalid=!1;onEvent=()=>{};#t={};#i;constructor(t){this.#i=t}get bits(){let t=0;for(let i in this.bitByCode)t|=this.#t[i]?this.bitByCode[i]:0;return t}postupdate(){this.invalid=!1}register(t){let i=this.#i[`${t}EventListener`].bind(this.#i);for(let r of["keydown","keyup"])i(r,this.#e);return this}reset(){this.invalid=!1,this.#t={}}[Symbol.dispose](){this.register("remove")}#e=t=>{!t.isTrusted||this.bitByCode[t.code]==null||t.type==="keydown"&&(t.metaKey||t.altKey||t.ctrlKey)||(this.invalid=!0,this.#t[t.code]=t.type==="keydown",t.preventDefault(),this.onEvent())}};var yi={mouse:"Mouse",pen:"Pen",touch:"Touch"},wi=["pointercancel","pointerdown","pointermove","pointerup"],G=class{bitByButton={};dragMinClient=5;invalid=!1;onEvent=()=>{};primary;secondary={};#t;#i;constructor(t){this.#i=t}get boundsClient(){if(!this.primary?.bits&&!Object.keys(this.secondary).length)return;let t={x:1/0,y:1/0},i={x:-1/0,y:-1/0};for(let r of[this.primary,...Object.values(this.secondary)])r?.bits&&(t=Qt(t,r.xyClient),i=Jt(i,r.xyClient));return{x:t.x,y:t.y,w:i.x-t.x,h:i.y-t.y}}get centerClient(){let t=this.boundsClient;return t?Kt(t,{x:t.w/2,y:t.h/2}):this.primary?.xyClient}get locked(){return this.#i.ownerDocument.pointerLockElement===this.#i}get pinchClient(){if(!this.#t)return;let t=this.#o;return t?wt(t,this.#t):void 0}postupdate(){this.invalid=!1}register(t){let i=this.#i[`${t}EventListener`].bind(this.#i);for(let r of wi)i(r,this.#r);return this}reset(){this.invalid=!1,this.primary=void 0;for(let t in this.secondary)delete this.secondary[t];this.#t=void 0}update(){((this.primary?.bits?1:0)+Object.values(this.secondary).length<2||!this.#t)&&(this.#t=this.#o)}[Symbol.dispose](){this.register("remove")}#e(t){let i=0;for(let r=1;r<=t;r<<=1)(r&t)===r&&(i|=this.bitByButton[r]??0);return i}#r=t=>{if(!t.isTrusted)return;this.invalid=!0;let i=t.metaKey||t.altKey||t.ctrlKey?0:this.#e(t.buttons),r=this.locked;if(i&&t.type==="pointerdown"&&(t.preventDefault(),!r))try{this.#i.setPointerCapture(t.pointerId)}catch{}let n=t.isPrimary?this.primary:this.secondary[t.pointerId],o;if(r){let y=1/devicePixelRatio;o={x:Math.min(Math.max(0,(n?.xyClient.x??t.offsetX)+t.movementX*y),this.#i.clientWidth),y:Math.min(Math.max(0,(n?.xyClient.y??t.offsetY)+t.movementY*y),this.#i.clientHeight)}}else o={x:t.offsetX,y:t.offsetY};let a=t.type,c=yi[t.pointerType],l;i&&(t.type==="pointerdown"?l={x:o.x,y:o.y}:t.type==="pointermove"&&(l=n?.clickClient));let f=!!i&&(n?.drag||!!l&&Zt(l,o)>=this.dragMinClient),u={clickClient:l,bits:i,drag:f,ev:a,id:t.pointerId,primary:t.isPrimary,type:c,xyClient:o};t.isPrimary?this.primary=u:i?this.secondary[t.pointerId]=u:delete this.secondary[t.pointerId],this.onEvent()};get#o(){if((this.primary?.bits?1:0)+Object.values(this.secondary).length<2)return;let t=this.boundsClient;return t?{x:t.w,y:t.h}:void 0}};var K=class{deltaClient;onEvent=()=>{};#t;constructor(t){this.#t=t}postupdate(){this.deltaClient=void 0}register(t){return this.#t[`${t}EventListener`].bind(this.#t)("wheel",this.#i,{passive:!0}),this}reset(){this.deltaClient=void 0}[Symbol.dispose](){this.register("remove")}#i=t=>{!t.isTrusted||t.metaKey||t.altKey||t.ctrlKey||(this.deltaClient={x:t.deltaX,y:t.deltaY,z:t.deltaZ},this.onEvent())}};var Z=class{comboMaxIntervalMillis=300;gestured=!1;handled=!1;invalid=!1;minHeldMillis=300;#t={};#i={};#e=0;#r;#o=[];#n;#s={x:0,y:0};#c;#h=0;#u;#a;#d;#l=0;#p;#m;constructor(t,i){this.#r=t,this.#n=new O(i),this.#c=new X(globalThis),this.#u=new N(i.ownerDocument),this.#a=new G(i),this.#p=new K(i)}get anyOn(){return this.#e!==0}get combo(){let t=[];for(let i of this.#o){let r=[];for(let n=1;n<=i;n<<=1)(n&i)===n&&this.#i[n]&&r.push(this.#i[n]);r.sort(),t.push(r)}return t}get contextMenu(){return this.#n}get dir(){return this.#s}get gamepad(){return this.#c.connected?{}:void 0}get held(){return!this.handled&&this.#h>=this.minHeldMillis}isAnyOn(...t){return!this.handled&&!!(this.#e&this.#f(t))}isAnyOnStart(...t){return this.started&&this.isAnyOn(...t)}isAnyOnStill(...t){let i=this.#f(t);return!this.handled&&!!(this.#e&this.#l&i)}isAnyStarted(...t){let i=this.#f(t);return!this.handled&&(this.#e&i)!==(this.#l&i)}isCombo(...t){return t.length===this.#o.length&&this.isComboEndsWith(...t)}isComboEndsWith(...t){for(let[i,r]of t.entries()){let n=this.#f(r);if(this.#o.at(-t.length+i)!==n)return!1}return!this.handled&&(this.#o.at(-1)===this.#e||!this.#e)}isComboEndsWithStart(...t){return this.isOnStart(...t.at(-1))&&this.isComboEndsWith(...t)}isComboStart(...t){return this.isOnStart(...t.at(-1))&&this.isCombo(...t)}isOff(...t){return!this.handled&&!this.isOn(...t)}isOffStart(...t){let i=this.#f(t);return(this.#l&i)===i&&this.started&&this.isOff(...t)}isOn(...t){let i=this.#f(t);return!this.handled&&(this.#e&i)===i}isOnStart(...t){return this.started&&this.isOn(...t)}get key(){return{invalid:this.#u.invalid}}mapDefault(){this.mapKeyboardCode("U","ArrowUp"),this.mapKeyboardCode("D","ArrowDown"),this.mapKeyboardCode("L","ArrowLeft"),this.mapKeyboardCode("R","ArrowRight"),this.mapKeyboardCode("C","KeyC"),this.mapKeyboardCode("A","KeyX","Space"),this.mapKeyboardCode("B","KeyZ"),this.mapKeyboardCode("Menu","Enter"),this.mapKeyboardCode("Back","Escape"),this.mapGamepadAxis("U","D",1,3),this.mapGamepadAxis("L","R",0,2),this.mapGamepadButton("U",12),this.mapGamepadButton("D",13),this.mapGamepadButton("L",14),this.mapGamepadButton("R",15),this.mapGamepadButton("C",2),this.mapGamepadButton("B",0),this.mapGamepadButton("A",1),this.mapGamepadButton("Menu",9),this.mapGamepadButton("Back",8),this.mapPointerClick("A",1),this.mapPointerClick("B",2),this.mapPointerClick("C",4)}mapGamepadAxis(t,i,...r){for(let n of r)this.#c.bitByAxis[n]=[this.#x(t),this.#x(i)]}mapGamepadButton(t,...i){for(let r of i)this.#c.bitByButton[r]=this.#x(t)}mapKeyboardCode(t,...i){for(let r of i)this.#u.bitByCode[r]=this.#x(t)}mapPointerClick(t,...i){for(let r of i)this.#a.bitByButton[r]=this.#x(t)}get on(){let t=[];for(let i in this.#t)this.isOn(i)&&t.push(i);return t.sort()}set onEvent(t){this.#c.onEvent=t,this.#u.onEvent=t,this.#a.onEvent=t,this.#p.onEvent=t}get point(){return this.#d}get pointer(){return this.#a}register(t){return globalThis[`${t}EventListener`]("blur",this.reset),this.#n.register(t),this.#c.register(t),this.#u.register(t),this.#a.register(t),this.#p.register(t),this}reset=()=>{this.#e=0,this.#l=0,this.handled=!1,this.#h=0,this.#o.length=0,this.#c.reset(),this.#u.reset(),this.#a.reset(),this.#d=void 0,this.#p.reset(),this.#m=void 0};get started(){return!this.handled&&this.#e!==this.#l}update(t){if(this.handled=!1,this.#c.update(),this.#a.update(),this.#l=this.#e,this.#e=this.#c.bits|this.#u.bits|(this.#a.primary?.bits??0),this.invalid=this.#e!==this.#l||this.#a.invalid||!!this.#p.deltaClient,this.gestured||=!!this.#e,this.#s.x=this.#s.y=0,(this.#t.U&this.#e)===this.#t.U&&(this.#s.y-=1),(this.#t.D&this.#e)===this.#t.D&&(this.#s.y+=1),(this.#t.L&this.#e)===this.#t.L&&(this.#s.x-=1),(this.#t.R&this.#e)===this.#t.R&&(this.#s.x+=1),(t>this.comboMaxIntervalMillis&&this.#e!==this.#l||this.#h+t>this.comboMaxIntervalMillis&&!this.#e)&&(this.#o.length=0),this.#e===this.#l?this.#h=this.#h+t:this.#h=t,this.#e&&this.#e!==this.#l&&(this.#l&&(this.#o.length=0),this.#o.push(this.#e)),this.#a.primary){let i=this.#a.pinchClient,r=this.#a.primary.drag&&!Object.values(this.#a.secondary).length,n=[];for(let c of Object.values(this.#a.secondary))n.push({type:c.type,click:c.clickClient?{client:c.clickClient,local:this.#r.clientToXYLocal(c.clickClient),...this.#r.clientToXY(c.clickClient)}:void 0,...this.#r.clientToXY(c.xyClient),client:c.xyClient,local:this.#r.clientToXYLocal(c.xyClient)});let o=this.#a.centerClient,a={client:o,local:this.#r.clientToXYLocal(o),...this.#r.clientToXY(o)};this.#d={center:a,click:this.#a.primary.clickClient?{client:this.#a.primary.clickClient,local:this.#r.clientToXYLocal(this.#a.primary.clickClient),...this.#r.clientToXY(this.#a.primary.clickClient)}:void 0,drag:{on:r,start:!this.#d?.drag.on&&r,end:!!this.#d?.drag.on&&!r},invalid:this.#a.invalid,pinch:i?{client:i,xy:this.#r.clientToXY(i)}:void 0,secondary:n,type:this.#a.primary.type,...this.#r.clientToXY(this.#a.primary.xyClient),client:this.#a.primary.xyClient,local:this.#r.clientToXYLocal(this.#a.primary.xyClient)}}else this.#d=void 0;this.#m=this.#p.deltaClient?{delta:{client:this.#p.deltaClient,xy:this.#r.clientToXY(this.#p.deltaClient)}}:void 0,this.#u.postupdate(),this.#a.postupdate(),this.#p.postupdate()}[Symbol.dispose](){this.register("remove")}get wheel(){return this.#m}#f(t){let i=0;for(let r of t)i|=this.#t[r]??0;return i}#x(t){let i=this.#t[t]??=1<<Object.keys(this.#t).length;return this.#i[i]=t,i}};function m(e){return e!=null&&!Array.isArray(e)&&typeof e=="object"}function le(e){return e[0]?`${e[0].toLocaleLowerCase()}${e.slice(1)}`:e}function ue(e,t,i,r){let n={default:new Set};for(let[o,a]of Object.entries(e.zoo))n[o]=new Set(a.map(c=>Si(c,t,i,r)));return{background:e.background?parseInt(e.background,16):void 0,minScale:e.minScale,minWH:e.minWH?Vi(e.minWH):void 0,zoo:n,zoomOut:e.zoomOut}}function J(e){if(!e||typeof e=="number"){let t=e??0;return{n:t,s:t,w:t,e:t}}return"x"in e||"y"in e?{n:e.y??0,s:e.y??0,w:e.x??0,e:e.x??0}:{n:e.n??0,s:e.s??0,w:e.w??0,e:e.e??0}}function bi(e,t,i){let r=x(e.pressed,t,i);e.z&&(r.z=h[e.z]),r.visible=!1;let n=x(e.selected,t,i);return e.z&&(n.z=h[e.z]),{pressed:r,selected:n,started:!1,type:e.type??"Button"}}function gi(e,t){if(!e.sprite)throw Error("cursor missing sprite");return e.sprite.visible=!1,{bounds:{x:0,y:0,w:0,h:0},keyboard:t.keyboard??0,pick:t.pick,point:e.sprite.tag}}function Si(e,t,i,r){let n={};for(let o in e){let a=o;n[a]=i(n,e,a,t,r)??Ei(n,e,a,t,r)}return n.invalid=!0,n}function Ei(e,t,i,r,n){if(t[i]!=null)switch(i){case"button":return bi(t[i],r,n);case"cursor":return gi(e,t[i]);case"fps":return Ci(t[i]);case"hud":return Ti(t[i]);case"cam":case"draw":case"debugInput":case"id":case"name":case"text":return t[i];case"ninePatch":return vi(e,t[i],r,n);case"override":return _i(t[i]);case"sprite":return x(t[i],r,n);case"textWH":return zi(t[i]);case"textXY":return ki(e,t[i]);default:}}function Ci(e){return{prevFrames:0,next:{created:performance.now(),frames:0}}}function Ti(e){return{fill:e.fill,margin:J(e.margin??0),modulo:Ai(e.modulo??0),origin:e.origin}}function vi(e,t,i,r){if(!e.sprite)throw Error("nine patch missing sprite");let n={center:t.patch.center==null?void 0:x(t.patch.center,i,r),n:t.patch.n==null?void 0:x(t.patch.n,i,r),s:t.patch.s==null?void 0:x(t.patch.s,i,r),w:t.patch.w==null?void 0:x(t.patch.w,i,r),e:t.patch.e==null?void 0:x(t.patch.e,i,r),nw:t.patch.nw==null?void 0:x(t.patch.nw,i,r),ne:t.patch.ne==null?void 0:x(t.patch.ne,i,r),sw:t.patch.sw==null?void 0:x(t.patch.sw,i,r),se:t.patch.se==null?void 0:x(t.patch.se,i,r)},o=J(t.border),a={border:o,pad:J(t.pad),patch:n};return n.center&&(n.center.z=e.sprite.z),n.n&&(n.n.h=o.n,(!m(t.patch.n)||t.patch.n.z==null)&&(n.n.z=e.sprite.z)),n.s&&(n.s.h=o.s,(!m(t.patch.s)||t.patch.s.z==null)&&(n.s.z=e.sprite.z)),n.w&&(n.w.w=o.w,(!m(t.patch.w)||t.patch.w.z==null)&&(n.w.z=e.sprite.z)),n.e&&(n.e.w=o.e,(!m(t.patch.e)||t.patch.e.z==null)&&(n.e.z=e.sprite.z)),n.nw&&(n.nw.w=o.w,n.nw.h=o.n,(!m(t.patch.nw)||t.patch.nw.z==null)&&(n.nw.z=e.sprite.z)),n.ne&&(n.ne.w=o.e,n.ne.h=o.n,(!m(t.patch.ne)||t.patch.ne.z==null)&&(n.ne.z=e.sprite.z)),n.sw&&(n.sw.w=o.w,n.sw.h=o.s,(!m(t.patch.sw)||t.patch.sw.z==null)&&(n.sw.z=e.sprite.z)),n.se&&(n.se.w=o.e,n.se.h=o.s,(!m(t.patch.se)||t.patch.se.z==null)&&(n.se.z=e.sprite.z)),a}function _i(e){return{invalid:e.invalid}}function x(e,t,i){let r=typeof e=="string"?"default":le(e.pool??"Default");if(!t[r])throw Error(`no ${r} sprite pool`);let n=t[r].alloc();if(typeof e=="string"){if(!(e in i.anim))throw Error(`no tag "${e}"`);return n.tag=e,n}if(e.tag!=null){if(!(e.tag in i.anim))throw Error(`no tag "${e.tag}"`);n.tag=e.tag}return n.visible=e.visible??e.tag!=null,e.flip&&(n.flipX=e.flip==="X"||e.flip==="XY",n.flipY=e.flip==="Y"||e.flip==="XY"),e.stretch!=null&&(n.stretch=e.stretch),e.w!=null&&(n.w=e.w),e.h!=null&&(n.h=e.h),e.scale!=null&&(n.w*=typeof e.scale=="number"?e.scale:e.scale.x??1,n.h*=typeof e.scale=="number"?e.scale:e.scale.y??1),e.x!=null&&(n.x=e.x),e.y!=null&&(n.y=e.y),e.z!=null&&(n.z=h[e.z]),e.zend!=null&&(n.zend=e.zend),n}function zi(e){return{layout:{chars:[],cursor:{x:0,y:0},w:0,h:0,trimmedH:0},maxW:e.maxW??jt.w,pad:J(e.pad),scale:e.scale??1,trim:e.trim}}function ki(e,t){return{chars:[],z:t.z?h[t.z]:e.sprite?.z??h.Bottom}}function Vi(e){return typeof e=="number"?{w:e,h:e}:{w:Number(e?.w??0),h:Number(e?.h??0)}}function Ai(e){return typeof e=="number"?{x:e,y:e}:{x:e.x??0,y:e.y??0}}var Q=class{#t;#i;#e=0;#r;#o;constructor(t){if(t.allocBytes<=0)throw Error("byte allocation must be > 0");if(t.pageBlocks<=0)throw Error("page blocks must be > 0");this.#i={...t,init:t.init??(()=>{}),minPages:t.minPages??1};let i=this.#i.minPages*t.pageBlocks;this.#t=new Array(i),this.#r=new Uint8Array,this.#s(i,"Init")}alloc(){this.#e>=this.#n&&this.#s(this.#n+this.#i.pageBlocks,"Call");let t=this.#t[this.#e];return t.i=this.#e*this.#i.allocBytes,this.#e++,this.#i.init(t),t}clear(){this.#e=0;let t=this.#i.minPages*this.#i.pageBlocks;this.#n>t&&this.#s(t,"Call")}free(t){if(!this.#e)throw Error("pool underflow");this.#e--;let i=this.#e*this.#i.allocBytes;this.#r.copyWithin(t.i,i,i+this.#i.allocBytes),this.#t[this.#e].i=t.i,[this.#t[t.i],this.#t[this.#e]]=[this.#t[this.#e],this.#t[t.i]];let r=Math.floor((this.#n-this.#e)/this.#i.pageBlocks);r&&this.#n/this.#i.pageBlocks-r>=this.#i.minPages&&this.#s(this.#n-r*this.#i.pageBlocks,"Call")}get size(){return this.#e}get view(){return this.#o}toDebugString(){let t="";for(let i=0;i<this.#r.buffer.byteLength;i++)i&&!(i%this.#i.allocBytes)&&(t+=" "),t+=this.#r[i].toString(16).padStart(2,"0");return t}get#n(){return this.#r.buffer.byteLength/this.#i.allocBytes}#s(t,i){i==="Call"&&d?.mem&&console.debug(`[mem] ${t<this.#n?"shrinking":"growing"} pool to ${t}`),this.#t.length=t;for(let o=this.#n;o<t;o++)this.#t[o]=this.#i.alloc(this);let r=new ArrayBuffer(t*this.#i.allocBytes),n=new Uint8Array(r);n.set(this.#r.subarray(0,t*this.#i.allocBytes)),this.#r=n,this.#o=new DataView(r)}};function de(e){return new Q({alloc:t=>new M(t,0,e.atlas,e.looper),init:t=>t.init(),allocBytes:w,...e})}var j=class{#t;constructor(t){this.#t=t*16807%2147483647,this.#t<=0&&(this.#t=(this.#t+2147483646)%2147483646+1)}get num(){return this.#t=this.#t*16807%2147483647,(this.#t-1)/2147483646}get seed(){return this.#t}};function pe(e,t){t==null?localStorage.removeItem(e):localStorage.setItem(e,JSON.stringify(t))}function fe(e){let t=localStorage.getItem(e);return t==null?void 0:JSON.parse(t)}var tt=s;function _t(e,t){return((t==="Sec"?0:(59-e.getSeconds()%60)*1e3)+1e3-e.getMilliseconds()%1e3)%(t==="Sec"?1e3:6e4)}function xe(){document.body.style.margin="0",document.body.style.width="100dvw",document.body.style.height="100dvh",document.body.style.overflow="hidden"}function me(e){if(!document.querySelector('meta[name="viewport"]')){let t=document.createElement("meta");t.name="viewport",t.content="width=device-width, maximum-scale=1, minimum-scale=1, user-scalable=no",document.head.appendChild(t)}if(e&&!document.querySelector('meta[name="description"]')){let t=document.createElement("meta");t.name="description",t.content=e,document.head.appendChild(t)}}function ye(e,t){if(e??=document.createElement("canvas"),e.width=0,e.style.cursor="none",e.style.display="block",e.style.outline="none",t==="Int"&&(e.style.imageRendering="pixelated"),e.style.touchAction="none",e.tabIndex=0,e.focus(),!e.parentNode){let i=document.createElement("main");i.style.backgroundColor=document.body.style.backgroundColor,i.style.height="100%",i.append(e),document.body.append(i)}return e}function we(e){return`#${e.toString(16).padStart(8,"0")}`}function be(e){let[t,i,r,n]=e.match(/[0-9.]+/g)?.map(Number)??[];return(Math.round(t??0)<<24|Math.round(i??0)<<16|Math.round(r??0)<<8|Math.round((n??1)*255))>>>0}var et=class{#t;#i;#e=0;#r;#o=0;constructor(t,i,r){this.#t=t,this.#i=i,this.#r=r}register(t){return t==="add"?this.#o=setTimeout(()=>{this.#r(),this.#e=setInterval(this.#r,this.#i)},this.#t()):(clearTimeout(this.#o),clearInterval(this.#e)),this}[Symbol.dispose](){this.register("remove")}};async function ge(e){let t=new Promise((i,r)=>{e.onload=()=>i(e),e.onerror=()=>r(Error(`image load error for ${e.src}`))});return e.complete?e:await t}var it=class{onChange=()=>{};#t;register(t){return this.#t?.removeEventListener("change",this.#i),t==="add"?(this.#t=matchMedia(`not (resolution: ${devicePixelRatio}dppx)`),this.#t.addEventListener("change",this.#i)):this.#t=void 0,this}[Symbol.dispose](){this.register("remove")}#i=()=>{this.register("add"),this.onChange()}};function Ee(e,t,i,r){let n=Di(e,t,i);return e.useProgram(n),{buffer:e.createBuffer(),program:n,textures:r,uniform:Pi(e,n),vao:e.createVertexArray()}}function Pi(e,t){let i=t?e.getProgramParameter(t,e.ACTIVE_UNIFORMS):0,r=d?.render?new Proxy({},{get(n,o){if(n[o]==null)throw Error(`no shader uniform "${o}"`);return n[o]}}):{};for(let n=0;n<i;++n){let o=e.getActiveUniform(t,n);if(!o)throw Error(`no shader uniform at index ${n}`);let a=e.getUniformLocation(t,o.name);if(!a)throw Error(`no shader uniform "${o.name}"`);let c=o.name.replace("[0]","");r[c]=a}return r}function Di(e,t,i){let r=e.createProgram();if(!r)return null;let n=Se(e,"VERTEX_SHADER",t),o=Se(e,"FRAGMENT_SHADER",i);if(!n||!o)return null;if(e.attachShader(r,n),e.attachShader(r,o),e.linkProgram(r),d?.render&&!e.getProgramParameter(r,e.LINK_STATUS)){let a=e.getProgramInfoLog(r)?.slice(0,-1);throw Error(`shader link failure; ${a}`)}return e.detachShader(r,o),e.detachShader(r,n),e.deleteShader(o),e.deleteShader(n),r}function Se(e,t,i){let r=e.createShader(e[t]);if(!r)return r;if(e.shaderSource(r,i.trim()),e.compileShader(r),d?.render&&!e.getShaderParameter(r,e.COMPILE_STATUS)){let n=e.getShaderInfoLog(r)?.slice(0,-1);throw Error(`shader compile failure; ${n}`)}return r}var Ce=`#version 300 es
5
+ #pragma debug(${d?.render?"on":"off"})
6
+ #pragma optimize(${d?.render?"off":"on"})
7
7
 
8
8
  precision highp int;
9
9
  precision highp float;
@@ -33,8 +33,8 @@ void main() {
33
33
  if(oRGBA.a < .001) discard;
34
34
  }
35
35
  `;var Te=`#version 300 es
36
- #pragma debug(${u?.render?"on":"off"})
37
- #pragma optimize(${u?.render?"off":"on"})
36
+ #pragma debug(${d?.render?"on":"off"})
37
+ #pragma optimize(${d?.render?"off":"on"})
38
38
 
39
39
  // https://developer.mozilla.org/en-US/docs/Web/API/WebGL_API/WebGL_best_practices#essl300_minimum_requirements_webgl_2
40
40
  precision highp int;
@@ -97,5 +97,5 @@ void main() {
97
97
 
98
98
  vStretch = stretch ? 1u : 0u;
99
99
  }
100
- `;var ve=new Int8Array([1,1,0,1,1,0,0,0]),rt=class{always=u?.render==="always";clears=0;loseContext;#t;#i;#e;#r=0;#o=!0;#n;#s=!1;#c;constructor(t,i,r){this.#t=t,this.#e=i,this.#c=r}clear(t){if(!this.#n)return;let{gl:i}=this.#n;this.#r!==t&&(this.#r=t,i.clearColor((t>>>24&255)/255,(t>>>16&255)/255,(t>>>8&255)/255,(t>>>0&255)/255)),i.clear(i.COLOR_BUFFER_BIT|i.DEPTH_BUFFER_BIT),this.clears++}draw(t){if(!this.#i||!this.#n)return;let{gl:i,spriteShader:r}=this.#n;if(i.bindBuffer(i.ARRAY_BUFFER,r.buffer),i.bufferData(i.ARRAY_BUFFER,t.view,i.DYNAMIC_DRAW,0,t.size*w),i.bindBuffer(i.ARRAY_BUFFER,null),i.bindVertexArray(r.vao),i.drawArraysInstanced(i.TRIANGLE_STRIP,0,ve.length/2,t.size),i.bindVertexArray(null),u?.render){let n=i.getError();n!==i.NO_ERROR&&console.error(`[render] GL error x${n.toString(16)}`)}this.#s=!1}get hasContext(){return this.#n!=null}get invalid(){return this.#s||this.always}load(t){this.#i=t,this.#n=this._Context()}predraw(t){if(!this.#n)return;let{gl:i,spriteShader:r,viewport:n}=this.#n;Gt(n,t)||(i.viewport(0,0,t.w,t.h),n.w=t.w,n.h=t.h),i.useProgram(r.program),i.uniform4i(r.uniform.uCam,Math.floor(t.x),Math.floor(t.y),t.w,t.h),i.uniform1f(r.uniform.uAge,this.#c.age);for(let[o,a]of r.textures.entries())i.activeTexture(i.TEXTURE0+o),i.bindTexture(i.TEXTURE_2D,a)}register(t){return this.#e[`${t}EventListener`]("webglcontextlost",this.#h),this.#e[`${t}EventListener`]("webglcontextrestored",this.#u),this}setDepth(t){this.#o=t,this.#n&&(t?this.#n.gl.enable(this.#n.gl.DEPTH_TEST):this.#n.gl.disable(this.#n.gl.DEPTH_TEST))}[Symbol.dispose](){this.register("remove")}_Context(){let t=this.#n?.gl??Bi(this.#e,this.always);if(!t)return;let i=Ee(t,Te,Ce,[t.createTexture(),t.createTexture()]);return t.enable(t.BLEND),t.blendFuncSeparate(t.SRC_ALPHA,t.ONE_MINUS_SRC_ALPHA,t.ONE,t.ONE_MINUS_SRC_ALPHA),this.setDepth(this.#o),t.depthRange(0,1),t.clearDepth(1),t.depthFunc(t.LESS),t.pixelStorei(t.UNPACK_COLORSPACE_CONVERSION_WEBGL,!1),t.bindVertexArray(i.vao),t.bindBuffer(t.ARRAY_BUFFER,t.createBuffer()),t.bufferData(t.ARRAY_BUFFER,ve,t.STATIC_DRAW),t.enableVertexAttribArray(0),t.vertexAttribIPointer(0,2,t.BYTE,0,0),t.bindBuffer(t.ARRAY_BUFFER,null),t.bindBuffer(t.ARRAY_BUFFER,i.buffer),t.enableVertexAttribArray(1),t.vertexAttribIPointer(1,1,t.UNSIGNED_INT,w,0),t.vertexAttribDivisor(1,1),t.enableVertexAttribArray(2),t.vertexAttribIPointer(2,1,t.UNSIGNED_INT,w,4),t.vertexAttribDivisor(2,1),t.enableVertexAttribArray(3),t.vertexAttribIPointer(3,1,t.UNSIGNED_INT,w,8),t.vertexAttribDivisor(3,1),t.enableVertexAttribArray(4),t.vertexAttribIPointer(4,1,t.UNSIGNED_INT,w,12),t.vertexAttribDivisor(4,1),t.bindBuffer(t.ARRAY_BUFFER,null),t.bindTexture(t.TEXTURE_2D,i.textures[0]),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.NEAREST),this.#i&&t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,this.#i),t.bindTexture(t.TEXTURE_2D,null),t.bindTexture(t.TEXTURE_2D,i.textures[1]),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.NEAREST),t.texImage2D(t.TEXTURE_2D,0,t.RGBA16UI,1,this.#t.celXYWH.length/4,0,t.RGBA_INTEGER,t.UNSIGNED_SHORT,new Uint16Array(this.#t.celXYWH)),t.bindTexture(t.TEXTURE_2D,null),t.bindVertexArray(null),t.uniform1i(i.uniform.uTex,0),t.uniform1i(i.uniform.uCels,1),this.#i&&t.uniform2ui(i.uniform.uTexWH,this.#i.naturalWidth,this.#i.naturalHeight),!this.#s&&u?.invalid&&console.debug("[invalid] renderer invalid"),this.#s=!0,this.loseContext=t.getExtension("WEBGL_lose_context")??void 0,this.#n={gl:t,spriteShader:i,viewport:{w:0,h:0}}}#h=t=>{t.preventDefault(),console.debug("[render] GL context lost"),this.#n=void 0};#u=()=>{console.debug("[render] GL context restored"),this.#n=this._Context()}};function Bi(e,t){let i=e.getContext("webgl2",{antialias:!1,powerPreference:"low-power",preserveDrawingBuffer:!0,...!u?.render&&{desynchronized:t}});if(!i){console.debug("[render] no GL context");return}return i}var nt=class{age=0;onFrame;#t=0;#i=!1;#e=0;register(t){let i=`${t}EventListener`;return document[i]("visibilitychange",this.#n),t==="remove"&&this.#r(),this.#i=t==="add",this}requestFrame(){this.#t||document.hidden||!this.#i||(this.#e=performance.now(),this.#t=requestAnimationFrame(this.#o))}[Symbol.dispose](){this.register("remove")}#r(){this.#t&&cancelAnimationFrame(this.#t),this.#t=0}#o=()=>{let t=performance.now(),i=t-this.#e;this.age=t,this.#t=0,this.onFrame?.(i)};#n=t=>{t.isTrusted&&(document.hidden?this.#r():this.requestFrame())}};var ot=class{atlas;cam=new $;canvas;input;loader;looper=new nt;pool;random;renderer;tick={ms:0,s:0};#t;#i;#e=!1;#r=new it;#o;#n=!1;#s=new ResizeObserver(()=>this.onResize());constructor(t){if(me(t.description),this.canvas=ye(t.canvas,t.config.mode),!this.canvas.parentElement)throw Error("no canvas parent");if(this.#i=be(getComputedStyle(this.canvas.parentElement).backgroundColor),t.canvas||xe(),this.cam.mode=t.config.mode,this.cam.update(this.canvas),this.random=t.random??new j(Date.now()),this.input=new Z(this.cam,this.canvas),t.config.input!=="Custom"&&this.input.mapDefault(),this.input.onEvent=()=>this.onEvent(),this.#r.onChange=()=>this.onResize(),!t.atlas)throw Error("no atlas image");this.#t=t.atlas,this.atlas={default:t.config.atlas?he(t.config.atlas):{anim:{},celXYWH:[],tags:[]}},this.renderer=new rt(this.atlas.default,this.canvas,this.looper),this.pool={default:de({atlas:this.atlas.default,looper:this.looper,minPages:t.sprites?.minPages??3,pageBlocks:t.sprites?.pageBlocks??1e3})},this.looper.onFrame=i=>this.onFrame(i),this.loader=t.loader,u&&(globalThis.v=this)}alloc(t="default"){return this.pool[t].alloc()}get backgroundRGBA(){return this.#i}set backgroundRGBA(t){if(!this.canvas.parentElement)throw Error("no canvas parent");this.canvas.parentElement.style.backgroundColor=we(t),this.#i=t}get invalid(){return this.cam.invalid||this.renderer.invalid||this.#e}set invalid(t){this.#e=t}loadLevel(t,i,r){let n=ue(t,this.pool,r,this.atlas[i]);return n.background!=null&&(this.backgroundRGBA=n.background),n.minScale!=null&&(this.cam.minScale=n.minScale),n.minWH!=null&&(this.cam.minWH=n.minWH),n.zoomOut!=null&&(this.cam.zoomOut=n.zoomOut),n.zoo}onEvent(){this.requestFrame("Force")}onFrame(t){this.tick.ms=t,this.tick.s=t/1e3,!document.hidden&&(this.input.update(t),this.requestFrame(),this.#e=!1,this.loader.update(this),this.cam.postupdate())}onPoll(){this.requestFrame("Force")}onResize(){this.requestFrame("Force")}setPoller(t,i){this.#o&&this.#o.register("remove"),this.#o=new et(i??(()=>0),t,()=>this.onPoll()),this.#n&&this.#o.register("add")}async register(t){this.input.register(t),this.renderer.register(t),this.looper.register(t),t==="add"?this.#s.observe(this.canvas.parentElement):this.#s.unobserve(this.canvas.parentElement),this.#r.register(t),t==="add"&&this.looper.requestFrame(),this.#o?.register(t),await ge(this.#t),this.renderer.load(this.#t),this.#n=t==="add"}requestFrame(t){(t||this.renderer.always||this.input.anyOn||this.input.gamepad)&&this.looper.requestFrame()}async[Symbol.asyncDispose](){await this.register("remove")}};function st(e){return Object.entries(e).reduce((t,[i,r])=>({...t,[r]:i}),{})}var zt=new Set(["Ace","Two","Three","Four","Five","Six","Seven","Eight","Nine","Ten","Jack","Queen","King"]),C=[...zt].reduce((e,t,i)=>({...e,[t]:i}),{}),kt={Ace:1,Two:2,Three:3,Four:4,Five:5,Six:6,Seven:7,Eight:8,Nine:9,Ten:10,Jack:11,Queen:13,King:14},Ii=st(kt),_e={Ace:"A",Two:"2",Three:"3",Four:"4",Five:"5",Six:"6",Seven:"7",Eight:"8",Nine:"9",Ten:"10",Jack:"J",Queen:"Q",King:"K"};var D=new Set(["Clubs","Diamonds","Hearts","Spades"]),Vt=[...D].reduce((e,t,i)=>({...e,[t]:i}),{}),Mi=st(Vt),At={Clubs:"Black",Diamonds:"Red",Hearts:"Red",Spades:"Black"},ze={Clubs:"C",Diamonds:"D",Hearts:"H",Spades:"S"};var Pt={rangeStart:127136,rankSize:16,suitMax:3};function at(e,...t){if(t.length===0)return e(void 0,void 0);for(let i=0;i<=t.length-1;i++)if(!e(t[i],t[i+1]))return!1;return!0}function ke(e){return`${ze[e.suit]}${_e[e.rank]}`}function Dt(e,...t){return t.reduce((i,r)=>i+Li(e,r),"")}function Li(e,t){if(e==="Directed"&&t.direction==="Down")return"\u{1F0A0}";let i=Pt.rangeStart+(Pt.suitMax-Vt[t.suit])*Pt.rankSize+kt[t.rank];return String.fromCodePoint(i)}function Ve(e="Down"){let t=[];for(let i of D)for(let r of zt)t.push({suit:i,rank:r,direction:e});return t}function Pe(){return[[],[],[],[]]}var Ae=(e,t)=>e?.direction==="Down"||t?.direction==="Down"?!1:t==null?e!=null:e==null?t.rank==="Ace":e.suit!==t.suit?!1:C[e.rank]+1===C[t.rank],Hi={Clubs:0,Diamonds:1,Hearts:2,Spades:3};function De(e,t){let i=t[0];i==null||!Bt(e,t)||Be(e,i.suit).push(...t.splice(0))}function Be(e,t){return e[Hi[t]]}function Bt(e,t){let i=t[0];return i==null||!at(Ae,...t)?!1:Ae(Be(e,i.suit).at(-1),i)}function Ie(e,t){for(let[i,r]of e.entries()){let n=r.indexOf(t);if(n!==-1)return{cards:r.splice(n),pile:"Foundation",xy:{x:i,y:n}}}}function Me(e){return Wi(...Object.values(e))}function Wi(...e){return e.every(t=>t.at(-1)?.rank==="King")}function qe(e){if(e<=0)throw Error(`tableau size must be greater than zero but was ${e}`);let t=[];for(let i=0;i<e;i++)t.push([]);return t}var Le=(e,t)=>e?.direction==="Down"||t?.direction==="Down"?!1:t==null?e!=null:e==null?t.rank==="King":At[e.suit]!==At[t.suit]&&C[e.rank]===C[t.rank]+1;function It(e,t){for(let[i,r]of e.entries()){if(r.length!==0)throw Error("tableau must be reset before dealt");let n=t.splice(-i-1);for(let o of n)o.direction="Down";r.push(...n)}}function He(e,t){Mt(e,t)&&e.push(...t.splice(0))}function We(e,t){for(let[i,r]of e.entries()){let n=r.indexOf(t);if(n!==-1)return{cards:r.splice(n),pile:"Tableau",xy:{x:i,y:n}}}}function Mt(e,t){return at(Le,...t)?Le(e.at(-1),t[0]):!1}function Re(e,t,i,r){i??=3,e??=Math.random,r??=7;let n=Ve();Oe(n,e);let o={drawSize:i,foundation:Pe(),stock:n,tableau:qe(r),waste:[],random:e,tableauSize:r,wins:t??0};return It(o.tableau,n),o}function Ue(e){Ri(e)&&e.wins++;for(let t of e.foundation)e.stock.push(...t.splice(0));for(let t of e.tableau)e.stock.push(...t.splice(0));e.stock.push(...e.waste.splice(0));for(let t of e.stock)t.direction="Down";Oe(e.stock,e.random),It(e.tableau,e.stock)}function Lt(e,t){T(e);let i=e.stock.indexOf(t);if(i!==-1){if(i!==e.stock.length-1)return;let a=Math.max(0,i-(e.drawSize-1)),c=e.stock.splice(a).reverse();for(let d of c)d.direction="Up";e.waste.push(...c);return}let r=e.waste.indexOf(t);if(r!==-1)return e.selected={cards:e.waste.splice(r),pile:"Waste",xy:{x:0,y:r}},e.selected;let n=Ie(e.foundation,t)??We(e.tableau,t);if(n==null)throw Error(`missing card ${Dt("Undirected",t)}`);e.selected=n;let{cards:o}=e.selected;return o.length===1&&o[0]?.direction==="Down"&&(o[0].direction="Up",T(e)),e.selected}function Ye(e){if(T(e),e.stock.length>0)return;let t=e.waste.splice(0).reverse();for(let i of t)i.direction="Down";e.stock.push(...t)}function Fe(e,t){if(e.selected==null)return!1;if(t.type==="Foundation")return Bt(e.foundation,e.selected.cards);let i=e.tableau[t.x];if(i==null)throw Error(`missing lane at index ${t.x}`);return Mt(i,e.selected.cards)}function Ri(e){return Me(e.foundation)}function $e(e,t){if(e.selected!=null){if(t.type==="Foundation")De(e.foundation,e.selected.cards);else{let i=e.tableau[t.x];if(i==null)throw Error(`missing lane at index ${t.x}`);He(i,e.selected.cards)}e.selected.cards.length===0&&delete e.selected}}function T(e){if(e.selected==null)return;(e.selected.pile==="Waste"?e.waste:e[Yi(e.selected.pile)][e.selected.xy.x]).push(...e.selected.cards),delete e.selected}function Oe(e,t){for(let i=e.length-1;i>=0;i--)Ui(e,i,Math.trunc(t()*(i+1)))}function Ui(e,t,i){[e[t],e[i]]=[e[i],e[t]]}function Yi(e){return e[0]==null?e:`${e[0].toLocaleLowerCase()}${e.slice(1)}`}var Xe="Pixelated solitaire.";var Ne={atlas:{anim:{"background--Grid":{cels:1,h:8,id:0,w:8},"background--Corner":{cels:1,h:8,id:1,w:8},"background--Checkerboard":{cels:1,h:8,id:2,w:8},"card--CA":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:3,w:24},"card--C2":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:4,w:24},"card--C3":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:5,w:24},"card--C4":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:6,w:24},"card--C5":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:7,w:24},"card--C6":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:8,w:24},"card--C7":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:9,w:24},"card--C8":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:10,w:24},"card--C9":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:11,w:24},"card--C10":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:12,w:24},"card--CJ":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:13,w:24},"card--CQ":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:14,w:24},"card--CK":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:15,w:24},"card--DA":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:16,w:24},"card--D2":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:17,w:24},"card--D3":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:18,w:24},"card--D4":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:19,w:24},"card--D5":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:20,w:24},"card--D6":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:21,w:24},"card--D7":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:22,w:24},"card--D8":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:23,w:24},"card--D9":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:24,w:24},"card--D10":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:25,w:24},"card--DJ":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:26,w:24},"card--DQ":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:27,w:24},"card--DK":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:28,w:24},"card--HA":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:29,w:24},"card--H2":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:30,w:24},"card--H3":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:31,w:24},"card--H4":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:32,w:24},"card--H5":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:33,w:24},"card--H6":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:34,w:24},"card--H7":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:35,w:24},"card--H8":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:36,w:24},"card--H9":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:37,w:24},"card--H10":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:38,w:24},"card--HJ":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:39,w:24},"card--HQ":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:40,w:24},"card--HK":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:41,w:24},"card--SA":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:42,w:24},"card--S2":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:43,w:24},"card--S3":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:44,w:24},"card--S4":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:45,w:24},"card--S5":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:46,w:24},"card--S6":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:47,w:24},"card--S7":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:48,w:24},"card--S8":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:49,w:24},"card--S9":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:50,w:24},"card--S10":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:51,w:24},"card--SJ":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:52,w:24},"card--SQ":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:53,w:24},"card--SK":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:54,w:24},"card--Down":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:55,w:24},"card--VacantPile":{cels:1,h:32,id:56,w:24},"card--VacantStock":{cels:1,h:32,hitbox:{x:4,y:7,w:16,h:16},hurtbox:{x:4,y:7,w:16,h:16},id:57,w:24},"card--VacantClubs":{cels:1,h:32,id:58,w:24},"card--VacantDiamonds":{cels:1,h:32,id:59,w:24},"card--VacantHearts":{cels:1,h:32,id:60,w:24},"card--VacantSpades":{cels:1,h:32,id:61,w:24},"card--OutlineFocus":{cels:1,h:32,id:62,w:24},"card--OutlineChecked":{cels:1,h:32,id:63,w:24},"cursor--Point":{cels:1,h:16,hitbox:{x:0,y:0,w:3,h:3},hurtbox:{x:0,y:0,w:3,h:3},id:64,w:16},"cursor--Pick":{cels:1,h:16,hitbox:{x:0,y:0,w:3,h:3},hurtbox:{x:0,y:0,w:3,h:3},id:65,w:16},"palette--Alpha":{cels:1,h:8,id:66,w:8},"palette--Dark":{cels:1,h:8,id:67,w:8},"palette--Mid":{cels:1,h:8,id:68,w:8},"palette--Light":{cels:1,h:8,id:69,w:8},"patience-the-demon--Good":{cels:1,h:24,hitbox:{x:0,y:0,w:24,h:24},hurtbox:{x:0,y:0,w:7,h:10},id:70,w:24},"patience-the-demon--GoodBlink":{cels:1,h:24,hitbox:{x:0,y:0,w:24,h:24},id:71,w:24},"patience-the-demon--Evil":{cels:1,h:24,hitbox:{x:0,y:0,w:24,h:24},hurtbox:{x:0,y:0,w:7,h:10},id:72,w:24},"patience-the-demon--EvilBlink":{cels:1,h:24,hitbox:{x:0,y:0,w:24,h:24},id:73,w:24},"tally--0":{cels:1,h:8,id:74,w:16},"tally--1":{cels:1,h:8,id:75,w:16},"tally--2":{cels:1,h:8,id:76,w:16},"tally--3":{cels:1,h:8,id:77,w:16},"tally--4":{cels:1,h:8,id:78,w:16},"tally--5":{cels:1,h:8,id:79,w:16},"tally--6":{cels:1,h:8,id:80,w:16},"tally--7":{cels:1,h:8,id:81,w:16},"tally--8":{cels:1,h:8,id:82,w:16},"tally--9":{cels:1,h:8,id:83,w:16},"tally--10":{cels:1,h:8,id:84,w:16},"tally--11":{cels:1,h:8,id:85,w:16},"tally--12":{cels:1,h:8,id:86,w:16},"tally--13":{cels:1,h:8,id:87,w:16},"tally--14":{cels:1,h:8,id:88,w:16},"tally--15":{cels:1,h:8,id:89,w:16},"tally--16":{cels:1,h:8,id:90,w:16},"tally--17":{cels:1,h:8,id:91,w:16},"tally--18":{cels:1,h:8,id:92,w:16},"tally--19":{cels:1,h:8,id:93,w:16},"tally--20":{cels:1,h:8,id:94,w:16}},celXY:[112,240,104,240,96,240,168,96,192,96,0,128,24,128,48,128,72,128,96,128,120,128,144,128,168,128,192,128,0,160,24,160,48,160,72,160,96,160,120,160,144,160,168,160,192,160,0,192,24,192,48,192,72,192,96,192,120,192,144,192,120,96,168,32,24,0,48,0,72,0,96,0,120,0,144,0,168,0,192,0,0,32,24,32,48,32,72,32,96,32,120,32,144,32,0,0,192,32,0,64,24,64,48,64,72,64,96,64,120,64,144,64,168,64,192,64,0,96,24,96,48,96,72,96,96,96,144,96,16,224,0,224,88,240,80,240,160,232,160,224,168,192,168,216,192,216,192,192,64,240,48,240,32,240,16,240,0,240,144,232,128,232,128,224,96,224,32,224,48,224,64,224,80,224,144,224,32,232,48,232,64,232,80,232,96,232,112,232,112,224]},input:"Default",mode:"Int"};var Ge={$schema:"../level/level-file.v0.json",minWH:{w:256,h:200},zoo:{default:[{name:"Cam",cam:{}},{id:"Cursor",sprite:{tag:"cursor--Point"},cursor:{keyboard:128,pick:"cursor--Pick"}},{name:"Border",sprite:{tag:"palette--Dark",z:"A"},hud:{origin:"NW",fill:"XY"},ninePatch:{patch:{nw:{tag:"background--Corner",z:"B"},ne:{tag:"background--Corner",flip:"X",z:"B"},sw:{tag:"background--Corner",flip:"Y",z:"B"},se:{tag:"background--Corner",flip:"XY",z:"B"}},border:8}},{sprite:{tag:"background--Grid",z:"B",zend:!0},hud:{origin:"NW",fill:"XY",margin:1}},{board:{}},{name:"Stock Background",sprite:{tag:"palette--Light",x:169,y:9,z:"B",w:39,h:47}},{name:"Waste Pile",sprite:{tag:"palette--Light",x:201,y:9,z:"B"},pile:{type:"Waste"}},{name:"Waste Vacancy",sprite:{tag:"card--VacantPile",x:208,y:16,z:"C"}},{name:"Patience the Demon",sprite:{tag:"patience-the-demon--Good",z:"C"},hud:{modulo:{x:8,y:8},origin:"NW",margin:{x:16,y:16}},patienceTheDemon:{}}],end:[{draw:{}}]}};var p=8,qt={w:24,h:32},Xi=72,Ht=2*p,Wt=16,Ni=-1024;function g(e){for(let[t,i]of e.solitaire.tableau.entries())for(let[r,n]of i.entries()){let o=e.spriteByCard.get(n);if(!o)throw Error("no sprite");let a=_(e.atlas.default,t,r);o.x=a.x,o.y=a.y,o.z=n.direction==="Up"?h.F:h.E,o.tag=v(n)}for(let t of e.solitaire.foundation)for(let[i,r]of t.entries()){let n=e.spriteByCard.get(r);if(!n)throw Error("no sprite");let o=B(e.atlas.default,r.suit);n.x=o.x,n.y=o.y;let a=i===t.length-1?v(r):"card--Down";n.z=a==="card--Down"?h.E:h.F,n.tag=a}for(let[t,i]of e.solitaire.stock.entries()){let r=e.spriteByCard.get(i);if(!r)throw Error("no sprite");let n=ct(e.solitaire,t);r.x=n.x,r.y=n.y,r.z=i.direction==="Up"?h.F:h.E,r.tag=v(i)}for(let[t,i]of e.solitaire.waste.entries()){let r=e.spriteByCard.get(i);if(!r)throw Error("no sprite");let n=Rt(e.solitaire,t);r.x=n.x,r.y=n.y;let o,a=e.solitaire.selected?.pile==="Waste"?e.solitaire.selected?.cards.length??0:0,c=Math.max(e.solitaire.waste.length+a-e.solitaire.drawSize,0);t>=c?o=v(i):o="card--Down",r.z=o==="card--Down"?h.E:h.F,r.tag=o}e.invalid=!0}function ct(e,t){return{x:Ht+160,y:Wt+(e.stock.length-1===t?0:Ni)}}function Rt(e,t){let i=e.selected?.pile==="Waste"?e.selected?.cards.length??0:0,r=Math.max(e.waste.length+i-e.drawSize,0),n=Math.max(t-r,0);return{x:208,y:Wt+n*p}}function B(e,t){let i=e.anim[`card--Vacant${t}`],r={Clubs:0,Diamonds:1,Hearts:2,Spades:3}[t];return{x:Ht+p*4+r*(i.w+p),y:Wt}}function _(e,t,i){let r=e.anim["card--VacantPile"];return{x:Ht+t*(r.w+p),y:Xi+i*p}}function v(e){return e.direction==="Up"?`card--${ke(e)}`:"card--Down"}var ht=class{query="board";update(t,i){if(i.input.handled)return;let r=Ke(i),n=i.loader.vacantStock&&r?.sprite.hitsZ(i.loader.vacantStock.sprite,i.cam);if(r!=null&&!t.board.selected.length&&(!n&&i.input.isOnStart("A")||n&&i.input.isOffStart("A"))&&(i.input.handled=!0,Ji(t,i,r.card)),i.input.isOn("A")&&t.board.selected.length>0?(i.input.handled=!0,Zi(i,t.board.selected)):g(i),i.solitaire.selected!=null&&i.input.isOffStart("A")){if(i.input.handled=!0,t.board.selected.length){let o=Gi(t,i);o!=null&&i.solitaire.selected!=null&&o.pile.type!=="Waste"&&$e(i.solitaire,o.pile),T(i.solitaire),t.board.selected.length=0}else{let o=Ke(i);o==null?T(i.solitaire):Lt(i.solitaire,o.card)}g(i)}}};function Gi(e,t){let i=e.board.selected[0];if(i==null)return;let r;for(let n of t.loader.piles){let o=Ki(i.sprite,n.sprite);if(o.w<=0||o.h<=0||n.pile.type==="Waste"||!Fe(t.solitaire,n.pile))continue;let a=o.w*o.h;(r==null||a>r.area)&&(r={area:a,ent:n})}return r?.ent}function Ki(e,t){let i=Math.max(e.x,t.x),r=Math.max(e.y,t.y);return{x:i,y:r,w:Math.min(e.x+e.w,t.x+t.w)-i,h:Math.min(e.y+e.h,t.y+t.h)-r}}function Ke(e){let t;for(let i of e.loader.cards)e.loader.cursor?.sprite.hitsZ(i.sprite,e.cam)&&(t==null||i.sprite.above(t.sprite))&&(t=i);return t}function Zi(e,t){if(e.loader.cursor)for(let i of t)i.sprite.x=Math.trunc(e.loader.cursor.sprite.x)-i.offset.x,i.sprite.y=Math.trunc(e.loader.cursor.sprite.y)-i.offset.y}function Ji(e,t,i){let r=Lt(t.solitaire,i);if(r==null)return;let n=r.cards.map(o=>{let a=t.spriteByCard.get(o);if(!a)throw Error("no sprite");if(!t.loader.cursor)throw Error("no cursor");return{sprite:a,offset:{x:Math.trunc(t.loader.cursor.sprite.x)-a.x,y:Math.trunc(t.loader.cursor.sprite.y)-a.y}}});for(let o of n)o.sprite.z=h.G;e.board.selected.length=0,e.board.selected.push(...n)}var lt=class{query="cam";update(t,i){i.cam.update(i.canvas);let r=Math.trunc((i.cam.w-i.cam.minWH.w)/2);i.cam.x=-r+r%8}};var ut=class{query="draw";update(t,i){i.invalid&&(i.renderer.clear(i.backgroundRGBA),i.renderer.predraw(i.cam),i.renderer.setDepth(!0),i.renderer.draw(i.pool.default))}};var dt="save";var pt=class{query="patienceTheDemon & sprite";update(t,i){let n=Date.now()%6e4<59700?"":"Blink",o=t.sprite.tag.includes("Good"),c=`patience-the-demon--${i.input.isOffStart("A")?o?"Evil":"Good":o?"Good":"Evil"}${n}`;t.sprite.tag!==c&&(t.sprite.tag=c,t.invalid=!0),i.input.isOffStart("A")&&(i.loader.cursor?.sprite.hitsZ(t.sprite,i.cam)?(i.input.handled=!0,t.invalid=!0):i.loader.cursor&&t.sprite.hitsZ(i.loader.cursor.sprite,i.cam)&&(i.input.handled=!0,Ue(i.solitaire),pe(dt,{wins:i.solitaire.wins}),g(i)))}};var ft=class{query="pile & sprite";update(t,i){let{pile:r,sprite:n}=t,o=r.type==="Waste"?{x:n.x+p-1,y:n.y+p-1}:r.type==="Tableau"?_(i.atlas.default,r.x,0):B(i.atlas.default,r.suit);n.x=o.x-p+1,n.y=o.y-p+1,n.w=qt.w+p*2-1,n.h=qt.h+(r.type==="Waste"?(i.solitaire.waste.length>0?i.solitaire.drawSize-1:0)*p:r.type==="Tableau"?((i.solitaire.tableau[r.x]?.length??1)-1)*p:0)+p*2-1}};var Ut=26;function*Ze(e){yield*er(e),yield*Qi(e),yield*ji(e),yield*tr(e),yield*ir(e)}function Yt(e,t,i){let r=e.pool.default.alloc();return r.tag=v(t),r.x=i.x,r.y=i.y,r.z=t.direction==="Up"?h.F:h.E,{sprite:r,card:t}}function*Qi(e){for(let t of D){let i=e.pool.default.alloc();i.tag=`card--Vacant${t}`;let r=B(e.atlas.default,t);i.x=r.x,i.y=r.y,i.z=h.D,yield{sprite:i};let n=e.pool.default.alloc();n.tag="palette--Light",n.x=r.x,n.y=r.y,n.z=h.C,yield{sprite:n,pile:{type:"Foundation",suit:t}}}}function*ji(e){let t=e.pool.default.alloc();t.tag="card--VacantStock",t.z=h.C;let i=ct(e.solitaire,e.solitaire.stock.length-1);t.x=i.x,t.y=i.y,yield{id:"VacantStock",sprite:t,vacantStock:{}};for(let[r,n]of e.solitaire.stock.entries())yield Yt(e,n,ct(e.solitaire,r))}function*tr(e){for(let[t,i]of e.solitaire.tableau.entries()){let r=t,n=e.pool.default.alloc();n.tag="palette--Light",n.z=h.C;let o=_(e.atlas.default,r,0);n.x=o.x,n.y=o.y,yield{sprite:n,pile:{type:"Tableau",x:r}};let a=e.pool.default.alloc();a.tag="card--VacantPile",a.z=h.D,a.x=o.x,a.y=o.y,yield{sprite:a};for(let[c,d]of i.entries())yield Yt(e,d,_(e.atlas.default,r,c))}}function*er(e){for(let t=0;t<Ut;t++){let i=e.pool.default.alloc();i.tag="tally--0",i.z=h.D,yield{sprite:i,tally:{tens:t},hud:{modulo:{x:p,y:p},origin:"NE",margin:{n:8+t*8,s:8+t*8,w:0,e:0}}}}}function*ir(e){for(let[t,i]of e.solitaire.waste.entries())yield Yt(e,i,Rt(e.solitaire,t))}var xt=class{query="sprite & tally";update(t,i){let r=Ut*10,n=Math.min(10,Math.max(0,i.solitaire.wins-t.tally.tens*10))+Math.min(10,Math.max(0,i.solitaire.wins-r-t.tally.tens*10));t.sprite.tag=`tally--${n}`}};var mt=class{query="sprite & vacantStock";update(t,i){i.input.isOffStart("A")&&i.loader.cursor?.sprite.hitsZ(t.sprite,i.cam)&&(i.input.handled=!0,Ye(i.solitaire),g(i))}};var Je=(e,t,i)=>{if(t[i]==null)throw Error("no component val");switch(i){case"patienceTheDemon":case"pile":return t[i];case"board":return{selected:[]}}};var yt=class{cursor;cards=[];piles=[];vacantStock;#t;#i={board:new ht,cam:new lt,cursor:new L,draw:new ut,hud:new q,ninePatch:new H,override:new W,patienceTheDemon:new pt,pile:new ft,sprite:new R,tally:new xt,textWH:new U,textXY:new Y,vacantStock:new mt};#e={default:new Set,end:new Set};update(t){switch(this.#t){case void 0:this.#r(t);break;case"Init":break;default:this.#t}for(let i of Object.values(this.#e))ce(i,this.#i,t)}#r(t){this.#e=t.loadLevel(Ge,"default",Je);for(let i of Ze(t))this.#e.default.add(i);t.spriteByCard=new Map([...F(this.#e.default,"card & sprite")].map(i=>[i.card,i.sprite])),this.cards=[...F(this.#e.default,"card & sprite")],this.piles=[...F(this.#e.default,"pile & sprite")],this.vacantStock=vt(this.#e.default,"VacantStock"),this.cursor=vt(this.#e.default,"Cursor"),this.#t="Init"}};console.debug(`Super Patience v${tt.version}+${tt.published}.${tt.hash} \u2500\u2500\u2500oidoid>\xB0\u2500\u2500`);var z=new ot({atlas:document.querySelector("#atlas"),config:Ne,description:Xe,loader:new yt});z.setPoller(6e4,()=>_t(new Date,"Min"));setTimeout(()=>{z.requestFrame("Force"),setInterval(()=>z.requestFrame("Force"),6e4)},I(_t(new Date,"Min")+59700,6e4));var rr=fe(dt)??{wins:0};z.solitaire=Re(()=>z.random.num,rr.wins);await z.register("add");
100
+ `;var ve=new Int8Array([1,1,0,1,1,0,0,0]),rt=class{always=d?.render==="always";clears=0;loseContext;#t;#i;#e;#r=0;#o=!0;#n;#s=!1;#c;constructor(t,i,r){this.#t=t,this.#e=i,this.#c=r}clear(t){if(!this.#n)return;let{gl:i}=this.#n;this.#r!==t&&(this.#r=t,i.clearColor((t>>>24&255)/255,(t>>>16&255)/255,(t>>>8&255)/255,(t>>>0&255)/255)),i.clear(i.COLOR_BUFFER_BIT|i.DEPTH_BUFFER_BIT),this.clears++}draw(t){if(!this.#i||!this.#n)return;let{gl:i,spriteShader:r}=this.#n;if(i.bindBuffer(i.ARRAY_BUFFER,r.buffer),i.bufferData(i.ARRAY_BUFFER,t.view,i.DYNAMIC_DRAW,0,t.size*w),i.bindBuffer(i.ARRAY_BUFFER,null),i.bindVertexArray(r.vao),i.drawArraysInstanced(i.TRIANGLE_STRIP,0,ve.length/2,t.size),i.bindVertexArray(null),d?.render){let n=i.getError();n!==i.NO_ERROR&&console.error(`[render] GL error x${n.toString(16)}`)}this.#s=!1}get hasContext(){return this.#n!=null}get invalid(){return this.#s||this.always}load(t){this.#i=t,this.#n=this._Context()}predraw(t){if(!this.#n)return;let{gl:i,spriteShader:r,viewport:n}=this.#n;Gt(n,t)||(i.viewport(0,0,t.w,t.h),n.w=t.w,n.h=t.h),i.useProgram(r.program),i.uniform4i(r.uniform.uCam,Math.floor(t.x),Math.floor(t.y),t.w,t.h),i.uniform1f(r.uniform.uAge,this.#c.age);for(let[o,a]of r.textures.entries())i.activeTexture(i.TEXTURE0+o),i.bindTexture(i.TEXTURE_2D,a)}register(t){return this.#e[`${t}EventListener`]("webglcontextlost",this.#h),this.#e[`${t}EventListener`]("webglcontextrestored",this.#u),this}setDepth(t){this.#o=t,this.#n&&(t?this.#n.gl.enable(this.#n.gl.DEPTH_TEST):this.#n.gl.disable(this.#n.gl.DEPTH_TEST))}[Symbol.dispose](){this.register("remove")}_Context(){let t=this.#n?.gl??Bi(this.#e,this.always);if(!t)return;let i=Ee(t,Te,Ce,[t.createTexture(),t.createTexture()]);return t.enable(t.BLEND),t.blendFuncSeparate(t.SRC_ALPHA,t.ONE_MINUS_SRC_ALPHA,t.ONE,t.ONE_MINUS_SRC_ALPHA),this.setDepth(this.#o),t.depthRange(0,1),t.clearDepth(1),t.depthFunc(t.LESS),t.pixelStorei(t.UNPACK_COLORSPACE_CONVERSION_WEBGL,!1),t.bindVertexArray(i.vao),t.bindBuffer(t.ARRAY_BUFFER,t.createBuffer()),t.bufferData(t.ARRAY_BUFFER,ve,t.STATIC_DRAW),t.enableVertexAttribArray(0),t.vertexAttribIPointer(0,2,t.BYTE,0,0),t.bindBuffer(t.ARRAY_BUFFER,null),t.bindBuffer(t.ARRAY_BUFFER,i.buffer),t.enableVertexAttribArray(1),t.vertexAttribIPointer(1,1,t.UNSIGNED_INT,w,0),t.vertexAttribDivisor(1,1),t.enableVertexAttribArray(2),t.vertexAttribIPointer(2,1,t.UNSIGNED_INT,w,4),t.vertexAttribDivisor(2,1),t.enableVertexAttribArray(3),t.vertexAttribIPointer(3,1,t.UNSIGNED_INT,w,8),t.vertexAttribDivisor(3,1),t.enableVertexAttribArray(4),t.vertexAttribIPointer(4,1,t.UNSIGNED_INT,w,12),t.vertexAttribDivisor(4,1),t.bindBuffer(t.ARRAY_BUFFER,null),t.bindTexture(t.TEXTURE_2D,i.textures[0]),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.NEAREST),this.#i&&t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,this.#i),t.bindTexture(t.TEXTURE_2D,null),t.bindTexture(t.TEXTURE_2D,i.textures[1]),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.NEAREST),t.texImage2D(t.TEXTURE_2D,0,t.RGBA16UI,1,this.#t.celXYWH.length/4,0,t.RGBA_INTEGER,t.UNSIGNED_SHORT,new Uint16Array(this.#t.celXYWH)),t.bindTexture(t.TEXTURE_2D,null),t.bindVertexArray(null),t.uniform1i(i.uniform.uTex,0),t.uniform1i(i.uniform.uCels,1),this.#i&&t.uniform2ui(i.uniform.uTexWH,this.#i.naturalWidth,this.#i.naturalHeight),!this.#s&&d?.invalid&&console.debug("[invalid] renderer invalid"),this.#s=!0,this.loseContext=t.getExtension("WEBGL_lose_context")??void 0,this.#n={gl:t,spriteShader:i,viewport:{w:0,h:0}}}#h=t=>{t.preventDefault(),console.debug("[render] GL context lost"),this.#n=void 0};#u=()=>{console.debug("[render] GL context restored"),this.#n=this._Context()}};function Bi(e,t){let i=e.getContext("webgl2",{antialias:!1,powerPreference:"low-power",preserveDrawingBuffer:!0,...!d?.render&&{desynchronized:t}});if(!i){console.debug("[render] no GL context");return}return i}var nt=class{age=0;onFrame;#t=0;#i=!1;#e=0;register(t){let i=`${t}EventListener`;return document[i]("visibilitychange",this.#n),t==="remove"&&this.#r(),this.#i=t==="add",this}requestFrame(){this.#t||document.hidden||!this.#i||(this.#e=performance.now(),this.#t=requestAnimationFrame(this.#o))}[Symbol.dispose](){this.register("remove")}#r(){this.#t&&cancelAnimationFrame(this.#t),this.#t=0}#o=()=>{let t=performance.now(),i=t-this.#e;this.age=t,this.#t=0,this.onFrame?.(i)};#n=t=>{t.isTrusted&&(document.hidden?this.#r():this.requestFrame())}};var ot=class{atlas;cam=new $;canvas;input;loader;looper=new nt;pool;random;renderer;tick={ms:0,s:0};#t;#i;#e=!1;#r=new it;#o;#n=!1;#s=new ResizeObserver(()=>this.onResize());constructor(t){if(me(t.description),this.canvas=ye(t.canvas,t.config.mode),!this.canvas.parentElement)throw Error("no canvas parent");if(this.#i=be(getComputedStyle(this.canvas.parentElement).backgroundColor),t.canvas||xe(),this.cam.mode=t.config.mode,this.cam.update(this.canvas),this.random=t.random??new j(Date.now()),this.input=new Z(this.cam,this.canvas),t.config.input!=="Custom"&&this.input.mapDefault(),this.input.onEvent=()=>this.onEvent(),this.#r.onChange=()=>this.onResize(),!t.atlas)throw Error("no atlas image");this.#t=t.atlas,this.atlas={default:t.config.atlas?he(t.config.atlas):{anim:{},celXYWH:[],tags:[]}},this.renderer=new rt(this.atlas.default,this.canvas,this.looper),this.pool={default:de({atlas:this.atlas.default,looper:this.looper,minPages:t.sprites?.minPages??3,pageBlocks:t.sprites?.pageBlocks??1e3})},this.looper.onFrame=i=>this.onFrame(i),this.loader=t.loader,d&&(globalThis.v=this)}alloc(t="default"){return this.pool[t].alloc()}get backgroundRGBA(){return this.#i}set backgroundRGBA(t){if(!this.canvas.parentElement)throw Error("no canvas parent");this.canvas.parentElement.style.backgroundColor=we(t),this.#i=t}get invalid(){return this.cam.invalid||this.renderer.invalid||this.#e}set invalid(t){this.#e=t}loadLevel(t,i,r){let n=ue(t,this.pool,r,this.atlas[i]);return n.background!=null&&(this.backgroundRGBA=n.background),n.minScale!=null&&(this.cam.minScale=n.minScale),n.minWH!=null&&(this.cam.minWH=n.minWH),n.zoomOut!=null&&(this.cam.zoomOut=n.zoomOut),n.zoo}onEvent(){this.requestFrame("Force")}onFrame(t){this.tick.ms=t,this.tick.s=t/1e3,!document.hidden&&(this.input.update(t),this.requestFrame(),this.#e=!1,this.loader.update(this),this.cam.postupdate())}onPoll(){this.requestFrame("Force")}onResize(){this.requestFrame("Force")}setPoller(t,i){this.#o&&this.#o.register("remove"),this.#o=new et(i??(()=>0),t,()=>this.onPoll()),this.#n&&this.#o.register("add")}async register(t){this.input.register(t),this.renderer.register(t),this.looper.register(t),t==="add"?this.#s.observe(this.canvas.parentElement):this.#s.unobserve(this.canvas.parentElement),this.#r.register(t),t==="add"&&this.looper.requestFrame(),this.#o?.register(t),await ge(this.#t),this.renderer.load(this.#t),this.#n=t==="add"}requestFrame(t){(t||this.renderer.always||this.input.anyOn||this.input.gamepad)&&this.looper.requestFrame()}async[Symbol.asyncDispose](){await this.register("remove")}};function st(e){return Object.entries(e).reduce((t,[i,r])=>({...t,[r]:i}),{})}var zt=new Set(["Ace","Two","Three","Four","Five","Six","Seven","Eight","Nine","Ten","Jack","Queen","King"]),C=[...zt].reduce((e,t,i)=>({...e,[t]:i}),{}),kt={Ace:1,Two:2,Three:3,Four:4,Five:5,Six:6,Seven:7,Eight:8,Nine:9,Ten:10,Jack:11,Queen:13,King:14},Ii=st(kt),_e={Ace:"A",Two:"2",Three:"3",Four:"4",Five:"5",Six:"6",Seven:"7",Eight:"8",Nine:"9",Ten:"10",Jack:"J",Queen:"Q",King:"K"};var D=new Set(["Clubs","Diamonds","Hearts","Spades"]),Vt=[...D].reduce((e,t,i)=>({...e,[t]:i}),{}),Mi=st(Vt),At={Clubs:"Black",Diamonds:"Red",Hearts:"Red",Spades:"Black"},ze={Clubs:"C",Diamonds:"D",Hearts:"H",Spades:"S"};var Pt={rangeStart:127136,rankSize:16,suitMax:3};function at(e,...t){if(t.length===0)return e(void 0,void 0);for(let i=0;i<=t.length-1;i++)if(!e(t[i],t[i+1]))return!1;return!0}function ke(e){return`${ze[e.suit]}${_e[e.rank]}`}function Dt(e,...t){return t.reduce((i,r)=>i+Li(e,r),"")}function Li(e,t){if(e==="Directed"&&t.direction==="Down")return"\u{1F0A0}";let i=Pt.rangeStart+(Pt.suitMax-Vt[t.suit])*Pt.rankSize+kt[t.rank];return String.fromCodePoint(i)}function Ve(e="Down"){let t=[];for(let i of D)for(let r of zt)t.push({suit:i,rank:r,direction:e});return t}function Pe(){return[[],[],[],[]]}var Ae=(e,t)=>e?.direction==="Down"||t?.direction==="Down"?!1:t==null?e!=null:e==null?t.rank==="Ace":e.suit!==t.suit?!1:C[e.rank]+1===C[t.rank],Hi={Clubs:0,Diamonds:1,Hearts:2,Spades:3};function De(e,t){let i=t[0];i==null||!Bt(e,t)||Be(e,i.suit).push(...t.splice(0))}function Be(e,t){return e[Hi[t]]}function Bt(e,t){let i=t[0];return i==null||!at(Ae,...t)?!1:Ae(Be(e,i.suit).at(-1),i)}function Ie(e,t){for(let[i,r]of e.entries()){let n=r.indexOf(t);if(n!==-1)return{cards:r.splice(n),pile:"Foundation",xy:{x:i,y:n}}}}function Me(e){return Wi(...Object.values(e))}function Wi(...e){return e.every(t=>t.at(-1)?.rank==="King")}function qe(e){if(e<=0)throw Error(`tableau size must be greater than zero but was ${e}`);let t=[];for(let i=0;i<e;i++)t.push([]);return t}var Le=(e,t)=>e?.direction==="Down"||t?.direction==="Down"?!1:t==null?e!=null:e==null?t.rank==="King":At[e.suit]!==At[t.suit]&&C[e.rank]===C[t.rank]+1;function It(e,t){for(let[i,r]of e.entries()){if(r.length!==0)throw Error("tableau must be reset before dealt");let n=t.splice(-i-1);for(let o of n)o.direction="Down";r.push(...n)}}function He(e,t){Mt(e,t)&&e.push(...t.splice(0))}function We(e,t){for(let[i,r]of e.entries()){let n=r.indexOf(t);if(n!==-1)return{cards:r.splice(n),pile:"Tableau",xy:{x:i,y:n}}}}function Mt(e,t){return at(Le,...t)?Le(e.at(-1),t[0]):!1}function Re(e,t,i,r){i??=3,e??=Math.random,r??=7;let n=Ve();Oe(n,e);let o={drawSize:i,foundation:Pe(),stock:n,tableau:qe(r),waste:[],random:e,tableauSize:r,wins:t??0};return It(o.tableau,n),o}function Ue(e){Ri(e)&&e.wins++;for(let t of e.foundation)e.stock.push(...t.splice(0));for(let t of e.tableau)e.stock.push(...t.splice(0));e.stock.push(...e.waste.splice(0));for(let t of e.stock)t.direction="Down";Oe(e.stock,e.random),It(e.tableau,e.stock)}function Lt(e,t){T(e);let i=e.stock.indexOf(t);if(i!==-1){if(i!==e.stock.length-1)return;let a=Math.max(0,i-(e.drawSize-1)),c=e.stock.splice(a).reverse();for(let l of c)l.direction="Up";e.waste.push(...c);return}let r=e.waste.indexOf(t);if(r!==-1)return e.selected={cards:e.waste.splice(r),pile:"Waste",xy:{x:0,y:r}},e.selected;let n=Ie(e.foundation,t)??We(e.tableau,t);if(n==null)throw Error(`missing card ${Dt("Undirected",t)}`);e.selected=n;let{cards:o}=e.selected;return o.length===1&&o[0]?.direction==="Down"&&(o[0].direction="Up",T(e)),e.selected}function Ye(e){if(T(e),e.stock.length>0)return;let t=e.waste.splice(0).reverse();for(let i of t)i.direction="Down";e.stock.push(...t)}function Fe(e,t){if(e.selected==null)return!1;if(t.type==="Foundation")return Bt(e.foundation,e.selected.cards);let i=e.tableau[t.x];if(i==null)throw Error(`missing lane at index ${t.x}`);return Mt(i,e.selected.cards)}function Ri(e){return Me(e.foundation)}function $e(e,t){if(e.selected!=null){if(t.type==="Foundation")De(e.foundation,e.selected.cards);else{let i=e.tableau[t.x];if(i==null)throw Error(`missing lane at index ${t.x}`);He(i,e.selected.cards)}e.selected.cards.length===0&&delete e.selected}}function T(e){if(e.selected==null)return;(e.selected.pile==="Waste"?e.waste:e[Yi(e.selected.pile)][e.selected.xy.x]).push(...e.selected.cards),delete e.selected}function Oe(e,t){for(let i=e.length-1;i>=0;i--)Ui(e,i,Math.trunc(t()*(i+1)))}function Ui(e,t,i){[e[t],e[i]]=[e[i],e[t]]}function Yi(e){return e[0]==null?e:`${e[0].toLocaleLowerCase()}${e.slice(1)}`}var Xe="Pixelated solitaire.";var Ne={atlas:{anim:{"background--Grid":{cels:1,h:8,id:0,w:8},"background--Corner":{cels:1,h:8,id:1,w:8},"background--Checkerboard":{cels:1,h:8,id:2,w:8},"card--CA":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:3,w:24},"card--C2":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:4,w:24},"card--C3":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:5,w:24},"card--C4":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:6,w:24},"card--C5":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:7,w:24},"card--C6":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:8,w:24},"card--C7":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:9,w:24},"card--C8":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:10,w:24},"card--C9":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:11,w:24},"card--C10":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:12,w:24},"card--CJ":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:13,w:24},"card--CQ":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:14,w:24},"card--CK":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:15,w:24},"card--DA":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:16,w:24},"card--D2":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:17,w:24},"card--D3":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:18,w:24},"card--D4":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:19,w:24},"card--D5":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:20,w:24},"card--D6":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:21,w:24},"card--D7":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:22,w:24},"card--D8":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:23,w:24},"card--D9":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:24,w:24},"card--D10":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:25,w:24},"card--DJ":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:26,w:24},"card--DQ":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:27,w:24},"card--DK":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:28,w:24},"card--HA":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:29,w:24},"card--H2":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:30,w:24},"card--H3":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:31,w:24},"card--H4":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:32,w:24},"card--H5":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:33,w:24},"card--H6":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:34,w:24},"card--H7":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:35,w:24},"card--H8":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:36,w:24},"card--H9":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:37,w:24},"card--H10":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:38,w:24},"card--HJ":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:39,w:24},"card--HQ":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:40,w:24},"card--HK":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:41,w:24},"card--SA":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:42,w:24},"card--S2":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:43,w:24},"card--S3":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:44,w:24},"card--S4":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:45,w:24},"card--S5":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:46,w:24},"card--S6":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:47,w:24},"card--S7":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:48,w:24},"card--S8":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:49,w:24},"card--S9":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:50,w:24},"card--S10":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:51,w:24},"card--SJ":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:52,w:24},"card--SQ":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:53,w:24},"card--SK":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:54,w:24},"card--Down":{cels:1,h:32,hitbox:{x:0,y:0,w:24,h:32},hurtbox:{x:0,y:0,w:24,h:32},id:55,w:24},"card--VacantPile":{cels:1,h:32,id:56,w:24},"card--VacantStock":{cels:1,h:32,hitbox:{x:4,y:7,w:16,h:16},hurtbox:{x:4,y:7,w:16,h:16},id:57,w:24},"card--VacantClubs":{cels:1,h:32,id:58,w:24},"card--VacantDiamonds":{cels:1,h:32,id:59,w:24},"card--VacantHearts":{cels:1,h:32,id:60,w:24},"card--VacantSpades":{cels:1,h:32,id:61,w:24},"card--OutlineFocus":{cels:1,h:32,id:62,w:24},"card--OutlineChecked":{cels:1,h:32,id:63,w:24},"cursor--Point":{cels:1,h:16,hitbox:{x:0,y:0,w:3,h:3},hurtbox:{x:0,y:0,w:3,h:3},id:64,w:16},"cursor--Pick":{cels:1,h:16,hitbox:{x:0,y:0,w:3,h:3},hurtbox:{x:0,y:0,w:3,h:3},id:65,w:16},"palette--Alpha":{cels:1,h:8,id:66,w:8},"palette--Dark":{cels:1,h:8,id:67,w:8},"palette--Mid":{cels:1,h:8,id:68,w:8},"palette--Light":{cels:1,h:8,id:69,w:8},"patience-the-demon--Good":{cels:1,h:24,hitbox:{x:0,y:0,w:24,h:24},hurtbox:{x:0,y:0,w:7,h:10},id:70,w:24},"patience-the-demon--GoodBlink":{cels:1,h:24,hitbox:{x:0,y:0,w:24,h:24},id:71,w:24},"patience-the-demon--Evil":{cels:1,h:24,hitbox:{x:0,y:0,w:24,h:24},hurtbox:{x:0,y:0,w:7,h:10},id:72,w:24},"patience-the-demon--EvilBlink":{cels:1,h:24,hitbox:{x:0,y:0,w:24,h:24},id:73,w:24},"tally--0":{cels:1,h:8,id:74,w:16},"tally--1":{cels:1,h:8,id:75,w:16},"tally--2":{cels:1,h:8,id:76,w:16},"tally--3":{cels:1,h:8,id:77,w:16},"tally--4":{cels:1,h:8,id:78,w:16},"tally--5":{cels:1,h:8,id:79,w:16},"tally--6":{cels:1,h:8,id:80,w:16},"tally--7":{cels:1,h:8,id:81,w:16},"tally--8":{cels:1,h:8,id:82,w:16},"tally--9":{cels:1,h:8,id:83,w:16},"tally--10":{cels:1,h:8,id:84,w:16},"tally--11":{cels:1,h:8,id:85,w:16},"tally--12":{cels:1,h:8,id:86,w:16},"tally--13":{cels:1,h:8,id:87,w:16},"tally--14":{cels:1,h:8,id:88,w:16},"tally--15":{cels:1,h:8,id:89,w:16},"tally--16":{cels:1,h:8,id:90,w:16},"tally--17":{cels:1,h:8,id:91,w:16},"tally--18":{cels:1,h:8,id:92,w:16},"tally--19":{cels:1,h:8,id:93,w:16},"tally--20":{cels:1,h:8,id:94,w:16}},celXY:[112,240,104,240,96,240,168,96,192,96,0,128,24,128,48,128,72,128,96,128,120,128,144,128,168,128,192,128,0,160,24,160,48,160,72,160,96,160,120,160,144,160,168,160,192,160,0,192,24,192,48,192,72,192,96,192,120,192,144,192,120,96,168,32,24,0,48,0,72,0,96,0,120,0,144,0,168,0,192,0,0,32,24,32,48,32,72,32,96,32,120,32,144,32,0,0,192,32,0,64,24,64,48,64,72,64,96,64,120,64,144,64,168,64,192,64,0,96,24,96,48,96,72,96,96,96,144,96,16,224,0,224,88,240,80,240,160,232,160,224,168,192,168,216,192,216,192,192,64,240,48,240,32,240,16,240,0,240,144,232,128,232,128,224,96,224,32,224,48,224,64,224,80,224,144,224,32,232,48,232,64,232,80,232,96,232,112,232,112,224]},input:"Default",mode:"Int"};var Ge={$schema:"../level/level-file.v0.json",minWH:{w:256,h:200},zoo:{default:[{name:"Cam",cam:{}},{id:"Cursor",sprite:{tag:"cursor--Point"},cursor:{keyboard:128,pick:"cursor--Pick"}},{name:"Border",sprite:{tag:"palette--Dark",z:"A"},hud:{origin:"NW",fill:"XY"},ninePatch:{patch:{nw:{tag:"background--Corner",z:"B"},ne:{tag:"background--Corner",flip:"X",z:"B"},sw:{tag:"background--Corner",flip:"Y",z:"B"},se:{tag:"background--Corner",flip:"XY",z:"B"}},border:8}},{sprite:{tag:"background--Grid",z:"B",zend:!0},hud:{origin:"NW",fill:"XY",margin:1}},{board:{}},{name:"Stock Background",sprite:{tag:"palette--Light",x:169,y:9,z:"B",w:39,h:47}},{name:"Waste Pile",sprite:{tag:"palette--Light",x:201,y:9,z:"B"},pile:{type:"Waste"}},{name:"Waste Vacancy",sprite:{tag:"card--VacantPile",x:208,y:16,z:"C"}},{name:"Patience the Demon",sprite:{tag:"patience-the-demon--Good",z:"C"},hud:{modulo:{x:8,y:8},origin:"NW",margin:{x:16,y:16}},patienceTheDemon:{}}],end:[{draw:{}}]}};var p=8,qt={w:24,h:32},Xi=72,Ht=2*p,Wt=16,Ni=-1024;function g(e){for(let[t,i]of e.solitaire.tableau.entries())for(let[r,n]of i.entries()){let o=e.spriteByCard.get(n);if(!o)throw Error("no sprite");let a=_(e.atlas.default,t,r);o.x=a.x,o.y=a.y,o.z=n.direction==="Up"?h.F:h.E,o.tag=v(n)}for(let t of e.solitaire.foundation)for(let[i,r]of t.entries()){let n=e.spriteByCard.get(r);if(!n)throw Error("no sprite");let o=B(e.atlas.default,r.suit);n.x=o.x,n.y=o.y;let a=i===t.length-1?v(r):"card--Down";n.z=a==="card--Down"?h.E:h.F,n.tag=a}for(let[t,i]of e.solitaire.stock.entries()){let r=e.spriteByCard.get(i);if(!r)throw Error("no sprite");let n=ct(e.solitaire,t);r.x=n.x,r.y=n.y,r.z=i.direction==="Up"?h.F:h.E,r.tag=v(i)}for(let[t,i]of e.solitaire.waste.entries()){let r=e.spriteByCard.get(i);if(!r)throw Error("no sprite");let n=Rt(e.solitaire,t);r.x=n.x,r.y=n.y;let o,a=e.solitaire.selected?.pile==="Waste"?e.solitaire.selected?.cards.length??0:0,c=Math.max(e.solitaire.waste.length+a-e.solitaire.drawSize,0);t>=c?o=v(i):o="card--Down",r.z=o==="card--Down"?h.E:h.F,r.tag=o}e.invalid=!0}function ct(e,t){return{x:Ht+160,y:Wt+(e.stock.length-1===t?0:Ni)}}function Rt(e,t){let i=e.selected?.pile==="Waste"?e.selected?.cards.length??0:0,r=Math.max(e.waste.length+i-e.drawSize,0),n=Math.max(t-r,0);return{x:208,y:Wt+n*p}}function B(e,t){let i=e.anim[`card--Vacant${t}`],r={Clubs:0,Diamonds:1,Hearts:2,Spades:3}[t];return{x:Ht+p*4+r*(i.w+p),y:Wt}}function _(e,t,i){let r=e.anim["card--VacantPile"];return{x:Ht+t*(r.w+p),y:Xi+i*p}}function v(e){return e.direction==="Up"?`card--${ke(e)}`:"card--Down"}var ht=class{query="board";update(t,i){if(i.input.handled)return;let r=Ke(i),n=i.loader.vacantStock&&r?.sprite.hitsZ(i.loader.vacantStock.sprite,i.cam);if(r!=null&&!t.board.selected.length&&(!n&&i.input.isOnStart("A")||n&&i.input.isOffStart("A"))&&(i.input.handled=!0,Ji(t,i,r.card)),i.input.isOn("A")&&t.board.selected.length>0?(i.input.handled=!0,Zi(i,t.board.selected)):g(i),i.solitaire.selected!=null&&i.input.isOffStart("A")){if(i.input.handled=!0,t.board.selected.length){let o=Gi(t,i);o!=null&&i.solitaire.selected!=null&&o.pile.type!=="Waste"&&$e(i.solitaire,o.pile),T(i.solitaire),t.board.selected.length=0}else{let o=Ke(i);o==null?T(i.solitaire):Lt(i.solitaire,o.card)}g(i)}}};function Gi(e,t){let i=e.board.selected[0];if(i==null)return;let r;for(let n of t.loader.piles){let o=Ki(i.sprite,n.sprite);if(o.w<=0||o.h<=0||n.pile.type==="Waste"||!Fe(t.solitaire,n.pile))continue;let a=o.w*o.h;(r==null||a>r.area)&&(r={area:a,ent:n})}return r?.ent}function Ki(e,t){let i=Math.max(e.x,t.x),r=Math.max(e.y,t.y);return{x:i,y:r,w:Math.min(e.x+e.w,t.x+t.w)-i,h:Math.min(e.y+e.h,t.y+t.h)-r}}function Ke(e){let t;for(let i of e.loader.cards)e.loader.cursor?.sprite.hitsZ(i.sprite,e.cam)&&(t==null||i.sprite.above(t.sprite))&&(t=i);return t}function Zi(e,t){if(e.loader.cursor)for(let i of t)i.sprite.x=Math.trunc(e.loader.cursor.sprite.x)-i.offset.x,i.sprite.y=Math.trunc(e.loader.cursor.sprite.y)-i.offset.y}function Ji(e,t,i){let r=Lt(t.solitaire,i);if(r==null)return;let n=r.cards.map(o=>{let a=t.spriteByCard.get(o);if(!a)throw Error("no sprite");if(!t.loader.cursor)throw Error("no cursor");return{sprite:a,offset:{x:Math.trunc(t.loader.cursor.sprite.x)-a.x,y:Math.trunc(t.loader.cursor.sprite.y)-a.y}}});for(let o of n)o.sprite.z=h.G;e.board.selected.length=0,e.board.selected.push(...n)}var lt=class{query="cam";update(t,i){i.cam.update(i.canvas);let r=Math.trunc((i.cam.w-i.cam.minWH.w)/2);i.cam.x=-r+r%8}};var ut=class{query="draw";update(t,i){i.invalid&&(i.renderer.clear(i.backgroundRGBA),i.renderer.predraw(i.cam),i.renderer.setDepth(!0),i.renderer.draw(i.pool.default))}};var dt="save";var pt=class{query="patienceTheDemon & sprite";update(t,i){let n=Date.now()%6e4<59700?"":"Blink",o=t.sprite.tag.includes("Good"),a=i.input.isOffStart("A")&&i.loader.cursor?.sprite.hitsZ(t.sprite,i.cam),l=`patience-the-demon--${a?o?"Evil":"Good":o?"Good":"Evil"}${n}`;t.sprite.tag!==l&&(t.sprite.tag=l,t.invalid=!0),i.input.isOffStart("A")&&(a?(i.input.handled=!0,t.invalid=!0):i.loader.cursor&&t.sprite.hitsZ(i.loader.cursor.sprite,i.cam)&&(i.input.handled=!0,Ue(i.solitaire),pe(dt,{wins:i.solitaire.wins}),g(i)))}};var ft=class{query="pile & sprite";update(t,i){let{pile:r,sprite:n}=t,o=r.type==="Waste"?{x:n.x+p-1,y:n.y+p-1}:r.type==="Tableau"?_(i.atlas.default,r.x,0):B(i.atlas.default,r.suit);n.x=o.x-p+1,n.y=o.y-p+1,n.w=qt.w+p*2-1,n.h=qt.h+(r.type==="Waste"?(i.solitaire.waste.length>0?i.solitaire.drawSize-1:0)*p:r.type==="Tableau"?((i.solitaire.tableau[r.x]?.length??1)-1)*p:0)+p*2-1}};var Ut=26;function*Ze(e){yield*er(e),yield*Qi(e),yield*ji(e),yield*tr(e),yield*ir(e)}function Yt(e,t,i){let r=e.pool.default.alloc();return r.tag=v(t),r.x=i.x,r.y=i.y,r.z=t.direction==="Up"?h.F:h.E,{sprite:r,card:t}}function*Qi(e){for(let t of D){let i=e.pool.default.alloc();i.tag=`card--Vacant${t}`;let r=B(e.atlas.default,t);i.x=r.x,i.y=r.y,i.z=h.D,yield{sprite:i};let n=e.pool.default.alloc();n.tag="palette--Light",n.x=r.x,n.y=r.y,n.z=h.C,yield{sprite:n,pile:{type:"Foundation",suit:t}}}}function*ji(e){let t=e.pool.default.alloc();t.tag="card--VacantStock",t.z=h.C;let i=ct(e.solitaire,e.solitaire.stock.length-1);t.x=i.x,t.y=i.y,yield{id:"VacantStock",sprite:t,vacantStock:{}};for(let[r,n]of e.solitaire.stock.entries())yield Yt(e,n,ct(e.solitaire,r))}function*tr(e){for(let[t,i]of e.solitaire.tableau.entries()){let r=t,n=e.pool.default.alloc();n.tag="palette--Light",n.z=h.C;let o=_(e.atlas.default,r,0);n.x=o.x,n.y=o.y,yield{sprite:n,pile:{type:"Tableau",x:r}};let a=e.pool.default.alloc();a.tag="card--VacantPile",a.z=h.D,a.x=o.x,a.y=o.y,yield{sprite:a};for(let[c,l]of i.entries())yield Yt(e,l,_(e.atlas.default,r,c))}}function*er(e){for(let t=0;t<Ut;t++){let i=e.pool.default.alloc();i.tag="tally--0",i.z=h.D,yield{sprite:i,tally:{tens:t},hud:{modulo:{x:p,y:p},origin:"NE",margin:{n:8+t*8,s:8+t*8,w:0,e:0}}}}}function*ir(e){for(let[t,i]of e.solitaire.waste.entries())yield Yt(e,i,Rt(e.solitaire,t))}var xt=class{query="sprite & tally";update(t,i){let r=Ut*10,n=Math.min(10,Math.max(0,i.solitaire.wins-t.tally.tens*10))+Math.min(10,Math.max(0,i.solitaire.wins-r-t.tally.tens*10));t.sprite.tag=`tally--${n}`}};var mt=class{query="sprite & vacantStock";update(t,i){i.input.isOffStart("A")&&i.loader.cursor?.sprite.hitsZ(t.sprite,i.cam)&&(i.input.handled=!0,Ye(i.solitaire),g(i))}};var Je=(e,t,i)=>{if(t[i]==null)throw Error("no component val");switch(i){case"patienceTheDemon":case"pile":return t[i];case"board":return{selected:[]}}};var yt=class{cursor;cards=[];piles=[];vacantStock;#t;#i={board:new ht,cam:new lt,cursor:new L,draw:new ut,hud:new q,ninePatch:new H,override:new W,patienceTheDemon:new pt,pile:new ft,sprite:new R,tally:new xt,textWH:new U,textXY:new Y,vacantStock:new mt};#e={default:new Set,end:new Set};update(t){switch(this.#t){case void 0:this.#r(t);break;case"Init":break;default:this.#t}for(let i of Object.values(this.#e))ce(i,this.#i,t)}#r(t){this.#e=t.loadLevel(Ge,"default",Je);for(let i of Ze(t))this.#e.default.add(i);t.spriteByCard=new Map([...F(this.#e.default,"card & sprite")].map(i=>[i.card,i.sprite])),this.cards=[...F(this.#e.default,"card & sprite")],this.piles=[...F(this.#e.default,"pile & sprite")],this.vacantStock=vt(this.#e.default,"VacantStock"),this.cursor=vt(this.#e.default,"Cursor"),this.#t="Init"}};console.debug(`Super Patience v${tt.version}+${tt.published}.${tt.hash} \u2500\u2500\u2500oidoid>\xB0\u2500\u2500`);var z=new ot({atlas:document.querySelector("#atlas"),config:Ne,description:Xe,loader:new yt});z.setPoller(6e4,()=>_t(new Date,"Min"));setTimeout(()=>{z.requestFrame("Force"),setInterval(()=>z.requestFrame("Force"),6e4)},I(_t(new Date,"Min")+59700,6e4));var rr=fe(dt)??{wins:0};z.solitaire=Re(()=>z.random.num,rr.wins);await z.register("add");
101
101
  //# sourceMappingURL=index.js.map