@utsp/core 0.5.0 → 0.6.0-nightly.20251207012530.05b8403

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -1,9 +1,10 @@
1
- var Z=Object.defineProperty;var Mt=Object.getOwnPropertyDescriptor;var Ft=Object.getOwnPropertyNames;var Rt=Object.prototype.hasOwnProperty;var Lt=(g,e,t)=>e in g?Z(g,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):g[e]=t;var C=(g,e)=>Z(g,"name",{value:e,configurable:!0}),Ue=(g=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(g,{get:(e,t)=>(typeof require<"u"?require:e)[t]}):g)(function(g){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+g+'" is not supported')});var E=(g,e)=>()=>(g&&(e=g(g=0)),e);var Y=(g,e)=>{for(var t in e)Z(g,t,{get:e[t],enumerable:!0})},Pt=(g,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Ft(e))!Rt.call(g,n)&&n!==t&&Z(g,n,{get:()=>e[n],enumerable:!(r=Mt(e,n))||r.enumerable});return g};var z=g=>Pt(Z({},"__esModule",{value:!0}),g);var x=(g,e,t)=>(Lt(g,typeof e!="symbol"?e+"":e,t),t);var gt,Ct=E(()=>{"use strict";gt=(o=>(o[o.Rectangle=1]="Rectangle",o[o.Circle=2]="Circle",o[o.Line=3]="Line",o[o.Ellipse=4]="Ellipse",o[o.Triangle=5]="Triangle",o))(gt||{})});var St={};Y(St,{AudioOrderType:()=>Le,AudioTargetType:()=>Pe,getAudioOrderTypeName:()=>yt,isValidAudioOrderType:()=>bt});function bt(g){return g>=1&&g<=9}function yt(g){switch(g){case 1:return"PlaySound";case 2:return"PlayGlobalSound";case 3:return"StopSound";case 4:return"FadeOutSound";case 5:return"PauseSound";case 6:return"ResumeSound";case 7:return"SetListenerPosition";case 8:return"ConfigureSpatial";case 9:return"SetSoundEffects";default:return`UnknownAudio(0x${g.toString(16)})`}}var Le,Pe,Te=E(()=>{"use strict";Le=(d=>(d[d.PlaySound=1]="PlaySound",d[d.PlayGlobalSound=2]="PlayGlobalSound",d[d.StopSound=3]="StopSound",d[d.FadeOutSound=4]="FadeOutSound",d[d.PauseSound=5]="PauseSound",d[d.ResumeSound=6]="ResumeSound",d[d.SetListenerPosition=7]="SetListenerPosition",d[d.ConfigureSpatial=8]="ConfigureSpatial",d[d.SetSoundEffects=9]="SetSoundEffects",d))(Le||{}),Pe=(r=>(r[r.InstanceId=0]="InstanceId",r[r.SoundId=1]="SoundId",r[r.All=2]="All",r))(Pe||{});C(bt,"isValidAudioOrderType");C(yt,"getAudioOrderTypeName")});var ft={};Y(ft,{PlaySoundFlags:()=>De,SoundEffectsFlags:()=>It});var De,It,Xe=E(()=>{"use strict";De=(a=>(a[a.Loop=1]="Loop",a[a.HasVolume=2]="HasVolume",a[a.HasPitch=4]="HasPitch",a[a.HasFadeIn=8]="HasFadeIn",a[a.HasPosition=16]="HasPosition",a[a.HasLowpass=32]="HasLowpass",a[a.HasHighpass=64]="HasHighpass",a[a.HasReverb=128]="HasReverb",a))(De||{}),It=(r=>(r[r.HasLowpass=1]="HasLowpass",r[r.HasHighpass=2]="HasHighpass",r[r.HasReverb=4]="HasReverb",r))(It||{})});var F,S,R=E(()=>{"use strict";F=class F{constructor(e){x(this,"data");x(this,"view");this.data=new Uint8Array(e),this.view=new DataView(this.data.buffer)}static from(e){let t=new F(0);return t.data=e,t.view=new DataView(e.buffer,e.byteOffset,e.byteLength),t}static allocUnsafe(e){return new F(e)}get length(){return this.data.length}toUint8Array(){return this.data}readUInt8(e){return this.view.getUint8(e)}readInt8(e){return this.view.getInt8(e)}readUInt16BE(e){return this.view.getUint16(e,!1)}readInt16BE(e){return this.view.getInt16(e,!1)}readUInt16LE(e){return this.view.getUint16(e,!0)}readInt16LE(e){return this.view.getInt16(e,!0)}readUInt32BE(e){return this.view.getUint32(e,!1)}readInt32BE(e){return this.view.getInt32(e,!1)}readUInt32LE(e){return this.view.getUint32(e,!0)}readInt32LE(e){return this.view.getInt32(e,!0)}readBigUInt64BE(e){return this.view.getBigUint64(e,!1)}readBigInt64BE(e){return this.view.getBigInt64(e,!1)}readBigUInt64LE(e){return this.view.getBigUint64(e,!0)}readBigInt64LE(e){return this.view.getBigInt64(e,!0)}writeUInt8(e,t){this.view.setUint8(t,e)}writeInt8(e,t){this.view.setInt8(t,e)}writeUInt16BE(e,t){this.view.setUint16(t,e,!1)}writeInt16BE(e,t){this.view.setInt16(t,e,!1)}writeUInt16LE(e,t){this.view.setUint16(t,e,!0)}writeInt16LE(e,t){this.view.setInt16(t,e,!0)}writeUInt32BE(e,t){this.view.setUint32(t,e,!1)}writeInt32BE(e,t){this.view.setInt32(t,e,!1)}writeUInt32LE(e,t){this.view.setUint32(t,e,!0)}writeInt32LE(e,t){this.view.setInt32(t,e,!0)}writeBigUInt64BE(e,t){this.view.setBigUint64(t,e,!1)}writeBigInt64BE(e,t){this.view.setBigInt64(t,e,!1)}writeBigUInt64LE(e,t){this.view.setBigUint64(t,e,!0)}writeBigInt64LE(e,t){this.view.setBigInt64(t,e,!0)}copy(e,t=0,r=0,n=this.length){let o=this.data.subarray(r,n);return e.data.set(o,t),o.length}slice(e,t){let r=this.data.slice(e,t);return F.from(r)}subarray(e,t){let r=this.data.subarray(e,t);return F.from(r)}toBuffer(){return typeof Buffer<"u"&&Buffer.from?Buffer.from(this.data):this.data}static fromNodeBuffer(e){return e instanceof Uint8Array?F.from(e):F.from(new Uint8Array(e))}};C(F,"BufferCompat");S=F});var Qe,ye,Ot=E(()=>{"use strict";Qe=class Qe{decode(e,t=0){this.checkSize(e,t,7);let n=t,o=e.readUInt8(n++),i=e.readUInt16BE(n);n+=2;let s=e.readUInt16BE(n);n+=2;let a=e.readUInt8(n++)+1,d=e.readUInt8(n++)+1;return{display:{id:o,originX:i,originY:s,sizeX:a,sizeY:d},bytesRead:7}}checkSize(e,t,r){if(t+r>e.length)throw new Error(`Buffer too short for display: need ${r} bytes at offset ${t}, but only ${e.length-t} bytes available`)}};C(Qe,"DisplayDecoder");ye=Qe});var et,Se,wt=E(()=>{"use strict";et=class et{decode(e,t=0){if(t>=e.length)throw new Error("Buffer too short to decode order type");let r=e.readUInt8(t);switch(r){case 1:return this.decodeCharOrder(e,t);case 2:return this.decodeTextOrder(e,t);case 23:return this.decodeTextMultilineOrder(e,t);case 3:return this.decodeSubFrameOrder(e,t);case 4:return this.decodeSubFrameMultiColorOrder(e,t);case 5:return this.decodeFullFrameOrder(e,t);case 6:return this.decodeFullFrameMultiColorOrder(e,t);case 7:return this.decodeSpriteOrder(e,t);case 8:return this.decodeSpriteMultiColorOrder(e,t);case 9:return this.decodeColorMapOrder(e,t);case 10:return this.decodeShapeOrder(e,t);case 11:return this.decodeDotCloudOrder(e,t);case 12:return this.decodeDotCloudMultiColorOrder(e,t);case 17:return this.decodeBitmaskOrder(e,t);case 18:return this.decodeBitmask4Order(e,t);case 24:return this.decodeBitmask16Order(e,t);case 13:return this.decodeSpriteCloudOrder(e,t);case 14:return this.decodeSpriteCloudMultiColorOrder(e,t);case 15:return this.decodeSpriteCloudVariedOrder(e,t);case 16:return this.decodeSpriteCloudVariedMultiColorOrder(e,t);case 19:return this.decodeClearOrder(e,t);case 20:return this.decodeFillCharOrder(e,t);case 21:return this.decodeFillSpriteOrder(e,t);case 22:return this.decodeFillSpriteMultiColorOrder(e,t);case 32:return this.decodeTriggerSoundOrder(e,t);case 33:return this.decodeTriggerGlobalSoundOrder(e,t);default:throw new Error(`Unknown order type: 0x${r.toString(16)}`)}}decodeCharOrder(e,t){this.checkSize(e,t,6);let r=t;return{order:{type:1,posX:e.readUInt8(r+1),posY:e.readUInt8(r+2),charCode:e.readUInt8(r+3),bgColorCode:e.readUInt8(r+4),fgColorCode:e.readUInt8(r+5)},bytesRead:6}}decodeTextOrder(e,t){this.checkSize(e,t,5);let r=t,n=e.readUInt8(r+3);this.checkSize(e,t,5+n);let o=e.subarray(r+4,r+4+n),i=new TextDecoder().decode(o.toUint8Array());return{order:{type:2,posX:e.readUInt8(r+1),posY:e.readUInt8(r+2),text:i,bgColorCode:e.readUInt8(r+4+n),fgColorCode:e.readUInt8(r+5+n)},bytesRead:6+n}}decodeTextMultilineOrder(e,t){this.checkSize(e,t,5);let r=t,n=e.readUInt8(r+3);this.checkSize(e,t,5+n);let o=e.subarray(r+4,r+4+n),i=new TextDecoder().decode(o.toUint8Array());return{order:{type:23,posX:e.readUInt8(r+1),posY:e.readUInt8(r+2),text:i,bgColorCode:e.readUInt8(r+4+n),fgColorCode:e.readUInt8(r+5+n)},bytesRead:6+n}}decodeSubFrameOrder(e,t){this.checkSize(e,t,7);let r=t,n=e.readUInt8(r+3),o=e.readUInt8(r+4),i=n*o;this.checkSize(e,t,7+i);let s=[];for(let d=0;d<i;d++)s.push(e.readUInt8(r+7+d));return{order:{type:3,posX:e.readUInt8(r+1),posY:e.readUInt8(r+2),sizeX:n,sizeY:o,bgColorCode:e.readUInt8(r+5),fgColorCode:e.readUInt8(r+6),frame:s},bytesRead:7+i}}decodeSubFrameMultiColorOrder(e,t){this.checkSize(e,t,5);let r=t,n=e.readUInt8(r+3),o=e.readUInt8(r+4),i=n*o;this.checkSize(e,t,5+i*3);let s=[];for(let d=0;d<i;d++){let u=r+5+d*3;s.push({charCode:e.readUInt8(u),bgColorCode:e.readUInt8(u+1),fgColorCode:e.readUInt8(u+2)})}return{order:{type:4,posX:e.readUInt8(r+1),posY:e.readUInt8(r+2),sizeX:n,sizeY:o,frame:s},bytesRead:5+i*3}}decodeFullFrameOrder(e,t,r){this.checkSize(e,t,3);let n=t,o=r||e.length-t-3;this.checkSize(e,t,3+o);let i=[];for(let a=0;a<o;a++)i.push(e.readUInt8(n+3+a));return{order:{type:5,bgColorCode:e.readUInt8(n+1),fgColorCode:e.readUInt8(n+2),frame:i},bytesRead:3+o}}decodeFullFrameMultiColorOrder(e,t,r){this.checkSize(e,t,1);let n=t,o=r||Math.floor((e.length-t-1)/3);this.checkSize(e,t,1+o*3);let i=[];for(let a=0;a<o;a++){let d=n+1+a*3;i.push({charCode:e.readUInt8(d),bgColorCode:e.readUInt8(d+1),fgColorCode:e.readUInt8(d+2)})}return{order:{type:6,frame:i},bytesRead:1+o*3}}decodeSpriteOrder(e,t){this.checkSize(e,t,6);let r=t;return{order:{type:7,posX:e.readUInt8(r+1),posY:e.readUInt8(r+2),spriteIndex:e.readUInt8(r+3),bgColorCode:e.readUInt8(r+4),fgColorCode:e.readUInt8(r+5)},bytesRead:6}}decodeSpriteMultiColorOrder(e,t){this.checkSize(e,t,4);let r=t;return{order:{type:8,posX:e.readUInt8(r+1),posY:e.readUInt8(r+2),spriteIndex:e.readUInt8(r+3)},bytesRead:4}}decodeColorMapOrder(e,t){this.checkSize(e,t,5);let r=t,n=e.readUInt8(r+3),o=e.readUInt8(r+4),i=n*o;this.checkSize(e,t,5+i*2);let s=[];for(let d=0;d<i;d++){let u=r+5+d*2;s.push({bgColorCode:e.readUInt8(u),fgColorCode:e.readUInt8(u+1)})}return{order:{type:9,posX:e.readUInt8(r+1),posY:e.readUInt8(r+2),sizeX:n,sizeY:o,colorData:s},bytesRead:5+i*2}}decodeShapeOrder(e,t){this.checkSize(e,t,2);let r=t,n=e.readUInt8(r+1),{shapeData:o,bytesRead:i}=this.decodeShapeData(e,r+2,n);return{order:{type:10,shapeType:n,shapeData:o},bytesRead:2+i}}decodeShapeData(e,t,r){let n=t;switch(r){case 1:return this.checkSize(e,t,8),{shapeData:{posX:e.readUInt8(n),posY:e.readUInt8(n+1),width:e.readUInt8(n+2),height:e.readUInt8(n+3),filled:e.readUInt8(n+4)===1,charCode:e.readUInt8(n+5),bgColorCode:e.readUInt8(n+6),fgColorCode:e.readUInt8(n+7)},bytesRead:8};case 2:return this.checkSize(e,t,7),{shapeData:{centerX:e.readUInt8(n),centerY:e.readUInt8(n+1),radius:e.readUInt8(n+2),filled:e.readUInt8(n+3)===1,charCode:e.readUInt8(n+4),bgColorCode:e.readUInt8(n+5),fgColorCode:e.readUInt8(n+6)},bytesRead:7};case 3:return this.checkSize(e,t,7),{shapeData:{x1:e.readUInt8(n),y1:e.readUInt8(n+1),x2:e.readUInt8(n+2),y2:e.readUInt8(n+3),charCode:e.readUInt8(n+4),bgColorCode:e.readUInt8(n+5),fgColorCode:e.readUInt8(n+6)},bytesRead:7};case 4:return this.checkSize(e,t,8),{shapeData:{centerX:e.readUInt8(n),centerY:e.readUInt8(n+1),radiusX:e.readUInt8(n+2),radiusY:e.readUInt8(n+3),filled:e.readUInt8(n+4)===1,charCode:e.readUInt8(n+5),bgColorCode:e.readUInt8(n+6),fgColorCode:e.readUInt8(n+7)},bytesRead:8};case 5:return this.checkSize(e,t,10),{shapeData:{x1:e.readUInt8(n),y1:e.readUInt8(n+1),x2:e.readUInt8(n+2),y2:e.readUInt8(n+3),x3:e.readUInt8(n+4),y3:e.readUInt8(n+5),filled:e.readUInt8(n+6)===1,charCode:e.readUInt8(n+7),bgColorCode:e.readUInt8(n+8),fgColorCode:e.readUInt8(n+9)},bytesRead:10};default:throw new Error(`Unknown shape type: ${r}`)}}decodeDotCloudOrder(e,t){this.checkSize(e,t,6);let r=t,n=e.readUInt16BE(r+4);this.checkSize(e,t,6+n*2);let o=[];for(let s=0;s<n;s++){let a=r+6+s*2;o.push({posX:e.readUInt8(a),posY:e.readUInt8(a+1)})}return{order:{type:11,charCode:e.readUInt8(r+1),bgColorCode:e.readUInt8(r+2),fgColorCode:e.readUInt8(r+3),positions:o},bytesRead:6+n*2}}decodeDotCloudMultiColorOrder(e,t){this.checkSize(e,t,3);let r=t,n=e.readUInt16BE(r+1);this.checkSize(e,t,3+n*5);let o=[];for(let s=0;s<n;s++){let a=r+3+s*5;o.push({charCode:e.readUInt8(a),bgColorCode:e.readUInt8(a+1),fgColorCode:e.readUInt8(a+2),posX:e.readUInt8(a+3),posY:e.readUInt8(a+4)})}return{order:{type:12,dots:o},bytesRead:3+n*5}}decodeBitmaskOrder(e,t){this.checkSize(e,t,9);let r=t,n=e.readUInt8(r+3),o=e.readUInt8(r+4),i=Math.ceil(n*o/8);this.checkSize(e,t,9+i);let s=new Uint8Array(i);for(let d=0;d<i;d++)s[d]=e.readUInt8(r+9+d);return{order:{type:17,posX:e.readUInt8(r+1),posY:e.readUInt8(r+2),sizeX:n,sizeY:o,charCode:e.readUInt8(r+5),bgColorCode:e.readUInt8(r+6),fgColorCode:e.readUInt8(r+7),override:e.readUInt8(r+8)===1,mask:s},bytesRead:9+i}}decodeBitmask4Order(e,t){this.checkSize(e,t,15);let r=t,n=e.readUInt8(r+3),o=e.readUInt8(r+4),i=Math.ceil(n*o/4);this.checkSize(e,t,15+i);let s=[{charCode:e.readUInt8(r+6),bgColorCode:e.readUInt8(r+7),fgColorCode:e.readUInt8(r+8)},{charCode:e.readUInt8(r+9),bgColorCode:e.readUInt8(r+10),fgColorCode:e.readUInt8(r+11)},{charCode:e.readUInt8(r+12),bgColorCode:e.readUInt8(r+13),fgColorCode:e.readUInt8(r+14)}],a=new Uint8Array(i);for(let u=0;u<i;u++)a[u]=e.readUInt8(r+15+u);return{order:{type:18,posX:e.readUInt8(r+1),posY:e.readUInt8(r+2),sizeX:n,sizeY:o,override:e.readUInt8(r+5)===1,variants:s,mask:a},bytesRead:15+i}}decodeBitmask16Order(e,t){this.checkSize(e,t,51);let r=t,n=e.readUInt8(r+3),o=e.readUInt8(r+4),i=Math.ceil(n*o/2);this.checkSize(e,t,51+i);let s=[];for(let u=0;u<15;u++){let c=r+6+u*3;s.push({charCode:e.readUInt8(c),bgColorCode:e.readUInt8(c+1),fgColorCode:e.readUInt8(c+2)})}let a=new Uint8Array(i);for(let u=0;u<i;u++)a[u]=e.readUInt8(r+51+u);return{order:{type:24,posX:e.readUInt8(r+1),posY:e.readUInt8(r+2),sizeX:n,sizeY:o,override:e.readUInt8(r+5)===1,variants:s,mask:a},bytesRead:51+i}}decodeSpriteCloudOrder(e,t){this.checkSize(e,t,6);let r=t,n=e.readUInt16BE(r+4);this.checkSize(e,t,6+n*2);let o=[];for(let s=0;s<n;s++){let a=r+6+s*2;o.push({posX:e.readUInt8(a),posY:e.readUInt8(a+1)})}return{order:{type:13,spriteIndex:e.readUInt8(r+1),bgColorCode:e.readUInt8(r+2),fgColorCode:e.readUInt8(r+3),positions:o},bytesRead:6+n*2}}decodeSpriteCloudMultiColorOrder(e,t){this.checkSize(e,t,4);let r=t,n=e.readUInt16BE(r+2);this.checkSize(e,t,4+n*2);let o=[];for(let s=0;s<n;s++){let a=r+4+s*2;o.push({posX:e.readUInt8(a),posY:e.readUInt8(a+1)})}return{order:{type:14,spriteIndex:e.readUInt8(r+1),positions:o},bytesRead:4+n*2}}decodeSpriteCloudVariedOrder(e,t){this.checkSize(e,t,3);let r=t,n=e.readUInt16BE(r+1);this.checkSize(e,t,3+n*5);let o=[];for(let s=0;s<n;s++){let a=r+3+s*5;o.push({spriteIndex:e.readUInt8(a),bgColorCode:e.readUInt8(a+1),fgColorCode:e.readUInt8(a+2),posX:e.readUInt8(a+3),posY:e.readUInt8(a+4)})}return{order:{type:15,sprites:o},bytesRead:3+n*5}}decodeSpriteCloudVariedMultiColorOrder(e,t){this.checkSize(e,t,3);let r=t,n=e.readUInt16BE(r+1);this.checkSize(e,t,3+n*3);let o=[];for(let s=0;s<n;s++){let a=r+3+s*3;o.push({spriteIndex:e.readUInt8(a),posX:e.readUInt8(a+1),posY:e.readUInt8(a+2)})}return{order:{type:16,sprites:o},bytesRead:3+n*3}}decodeClearOrder(e,t){this.checkSize(e,t,4);let r=t;return{order:{type:19,charCode:e.readUInt8(r+1),bgColorCode:e.readUInt8(r+2),fgColorCode:e.readUInt8(r+3)},bytesRead:4}}decodeFillCharOrder(e,t){this.checkSize(e,t,5);let r=t,n=e.readUInt8(r+1),o=e.readUInt8(r+2),i=n*o;this.checkSize(e,t,5+i);let s=[];for(let d=0;d<i;d++)s.push(e.readUInt8(r+5+d));return{order:{type:20,patternWidth:n,patternHeight:o,bgColorCode:e.readUInt8(r+3),fgColorCode:e.readUInt8(r+4),pattern:s},bytesRead:5+i}}decodeFillSpriteOrder(e,t){this.checkSize(e,t,4);let r=t;return{order:{type:21,spriteIndex:e.readUInt8(r+1),bgColorCode:e.readUInt8(r+2),fgColorCode:e.readUInt8(r+3)},bytesRead:4}}decodeFillSpriteMultiColorOrder(e,t){this.checkSize(e,t,2);let r=t;return{order:{type:22,spriteIndex:e.readUInt8(r+1)},bytesRead:2}}decodeTriggerSoundOrder(e,t){this.checkSize(e,t,5);let r=t;return{order:{type:32,posX:e.readUInt8(r+1),posY:e.readUInt8(r+2),soundId:e.readUInt8(r+3),loop:e.readUInt8(r+4)===1},bytesRead:5}}decodeTriggerGlobalSoundOrder(e,t){this.checkSize(e,t,3);let r=t;return{order:{type:33,soundId:e.readUInt8(r+1),loop:e.readUInt8(r+2)===1},bytesRead:3}}checkSize(e,t,r){if(t+r>e.length)throw new Error(`Buffer too short: need ${r} bytes at offset ${t}, but only ${e.length-t} bytes available`)}};C(et,"OrderDecoder");Se=et});var tt,Ie,vt=E(()=>{"use strict";wt();tt=class tt{constructor(){x(this,"orderDecoder");this.orderDecoder=new Se}decode(e,t=0){this.checkSize(e,t,13);let n=t,o=e.readUInt16BE(n);n+=2;let i=e.readUInt8(n++),s=e.readUInt8(n++),a=e.readUInt16BE(n);n+=2;let d=e.readUInt16BE(n);n+=2;let u=e.readUInt16BE(n);n+=2;let c=e.readUInt16BE(n);n+=2;let l=e.readUInt8(n++),p=[],h=n;for(let b=0;b<l;b++){let f=this.orderDecoder.decode(e,h);p.push(f.order),h+=f.bytesRead}return{layer:{id:o,updateFlags:i,zIndex:s,originX:a,originY:d,width:u,height:c,orderCount:l,orders:p},bytesRead:h-t}}checkSize(e,t,r){if(t+r>e.length)throw new Error(`Buffer too short for layer: need ${r} bytes at offset ${t}, but only ${e.length-t} bytes available`)}};C(tt,"LayerDecoder");Ie=tt});var rt,de,nt=E(()=>{"use strict";rt=class rt{decode(e,t=0){if(t>=e.length)throw new Error("Buffer too short to decode audio order type");let r=e.readUInt8(t);switch(r){case 1:return this.decodePlaySoundOrder(e,t);case 2:return this.decodePlayGlobalSoundOrder(e,t);case 3:return this.decodeStopSoundOrder(e,t);case 4:return this.decodeFadeOutSoundOrder(e,t);case 5:return this.decodePauseSoundOrder(e,t);case 6:return this.decodeResumeSoundOrder(e,t);case 7:return this.decodeSetListenerPositionOrder(e,t);case 8:return this.decodeConfigureSpatialOrder(e,t);case 9:return this.decodeSetSoundEffectsOrder(e,t);default:throw new Error(`Unknown audio order type: 0x${r.toString(16)}`)}}decodePlaySoundOrder(e,t){this.checkSize(e,t,5);let r=t,n=e.readUInt8(r++),o=e.readUInt8(r++),i=e.readUInt16BE(r);r+=2;let s=e.readUInt8(r++),a={type:n,soundId:o,instanceId:i,flags:s};return s&2&&(this.checkSize(e,r,1),a.volume=e.readUInt8(r++)),s&4&&(this.checkSize(e,r,1),a.pitch=e.readUInt8(r++)),s&8&&(this.checkSize(e,r,1),a.fadeIn=e.readUInt8(r++)),s&16&&(this.checkSize(e,r,4),a.posX=e.readUInt16BE(r),r+=2,a.posY=e.readUInt16BE(r),r+=2),s&32&&(this.checkSize(e,r,1),a.lowpass=e.readUInt8(r++)),s&64&&(this.checkSize(e,r,1),a.highpass=e.readUInt8(r++)),s&128&&(this.checkSize(e,r,1),a.reverb=e.readUInt8(r++)),{order:a,bytesRead:r-t}}decodePlayGlobalSoundOrder(e,t){this.checkSize(e,t,5);let r=t,n=e.readUInt8(r++),o=e.readUInt8(r++),i=e.readUInt16BE(r);r+=2;let s=e.readUInt8(r++),a={type:n,soundId:o,instanceId:i,flags:s};return s&2&&(this.checkSize(e,r,1),a.volume=e.readUInt8(r++)),s&4&&(this.checkSize(e,r,1),a.pitch=e.readUInt8(r++)),s&8&&(this.checkSize(e,r,1),a.fadeIn=e.readUInt8(r++)),s&32&&(this.checkSize(e,r,1),a.lowpass=e.readUInt8(r++)),s&64&&(this.checkSize(e,r,1),a.highpass=e.readUInt8(r++)),s&128&&(this.checkSize(e,r,1),a.reverb=e.readUInt8(r++)),{order:a,bytesRead:r-t}}decodeStopSoundOrder(e,t){this.checkSize(e,t,2);let r=t,n=e.readUInt8(r++),o=e.readUInt8(r++),i={type:n,targetType:o};return o===0?(this.checkSize(e,r,2),i.target=e.readUInt16BE(r),r+=2):o===1&&(this.checkSize(e,r,1),i.target=e.readUInt8(r++)),{order:i,bytesRead:r-t}}decodeFadeOutSoundOrder(e,t){this.checkSize(e,t,3);let r=t,n=e.readUInt8(r++),o=e.readUInt8(r++),i=e.readUInt8(r++),s={type:n,targetType:o,duration:i};return o===0?(this.checkSize(e,r,2),s.target=e.readUInt16BE(r),r+=2):o===1&&(this.checkSize(e,r,1),s.target=e.readUInt8(r++)),{order:s,bytesRead:r-t}}decodePauseSoundOrder(e,t){this.checkSize(e,t,2);let r=t,n=e.readUInt8(r++),o=e.readUInt8(r++),i={type:n,targetType:o};return o===0?(this.checkSize(e,r,2),i.target=e.readUInt16BE(r),r+=2):o===1&&(this.checkSize(e,r,1),i.target=e.readUInt8(r++)),{order:i,bytesRead:r-t}}decodeResumeSoundOrder(e,t){this.checkSize(e,t,2);let r=t,n=e.readUInt8(r++),o=e.readUInt8(r++),i={type:n,targetType:o};return o===0?(this.checkSize(e,r,2),i.target=e.readUInt16BE(r),r+=2):o===1&&(this.checkSize(e,r,1),i.target=e.readUInt8(r++)),{order:i,bytesRead:r-t}}decodeSetListenerPositionOrder(e,t){this.checkSize(e,t,5);let r=t,n=e.readUInt8(r++),o=e.readUInt16BE(r);r+=2;let i=e.readUInt16BE(r);return r+=2,{order:{type:n,x:o,y:i},bytesRead:5}}decodeConfigureSpatialOrder(e,t){this.checkSize(e,t,5);let r=t;return{order:{type:e.readUInt8(r),maxDistance:e.readUInt8(r+1),referenceDistance:e.readUInt8(r+2),rolloffFactor:e.readUInt8(r+3),panSpread:e.readUInt8(r+4)},bytesRead:5}}decodeSetSoundEffectsOrder(e,t){this.checkSize(e,t,4);let r=t,n=e.readUInt8(r++),o=e.readUInt16BE(r);r+=2;let i=e.readUInt8(r++),s={type:n,instanceId:o,flags:i};return i&1&&(this.checkSize(e,r,1),s.lowpass=e.readUInt8(r++)),i&2&&(this.checkSize(e,r,1),s.highpass=e.readUInt8(r++)),i&4&&(this.checkSize(e,r,1),s.reverb=e.readUInt8(r++)),{order:s,bytesRead:r-t}}checkSize(e,t,r){if(t+r>e.length)throw new Error(`Buffer too short for audio order: need ${r} bytes at offset ${t}, but only ${e.length-t} bytes available`)}};C(rt,"AudioOrderDecoder");de=rt});var At={};Y(At,{UpdatePacketDecoder:()=>fe});var ot,fe,it=E(()=>{"use strict";Ot();vt();nt();R();ot=class ot{constructor(){x(this,"displayDecoder");x(this,"layerDecoder");x(this,"audioOrderDecoder");this.displayDecoder=new ye,this.layerDecoder=new Ie,this.audioOrderDecoder=new de}decode(e,t=0){let r=S.from(e);this.checkSize(r,t,12);let o=t,i=Number(r.readBigUInt64BE(o));o+=8;let s=r.readUInt8(o);o+=1;let a=[];for(let h=0;h<s;h++){let m=this.displayDecoder.decode(r,o);a.push(m.display),o+=m.bytesRead}this.checkSize(r,o,2);let d=r.readUInt16BE(o);o+=2;let u=[];for(let h=0;h<d;h++){let m=this.layerDecoder.decode(r,o);u.push(m.layer),o+=m.bytesRead}this.checkSize(r,o,1);let c=r.readUInt8(o);o+=1;let l=[];for(let h=0;h<c;h++){let m=this.audioOrderDecoder.decode(r,o);l.push(m.order),o+=m.bytesRead}return{tick:i,displayCount:s,displays:a,layerCount:d,layers:u,audioOrderCount:c,audioOrders:l}}isValid(e,t=0){let r=S.from(e);try{return this.checkSize(r,t,12),!0}catch{return!1}}decodeHeader(e,t=0){let r=S.from(e);this.checkSize(r,t,12);let n=t,o=Number(r.readBigUInt64BE(n));n+=8;let i=r.readUInt8(n);n+=1,n+=i*7,this.checkSize(r,n,2);let s=r.readUInt16BE(n);return{tick:o,displayCount:i,layerCount:s}}checkSize(e,t,r){if(t+r>e.length)throw new Error(`Buffer too short for update packet: need ${r} bytes at offset ${t}, but only ${e.length-t} bytes available`)}};C(ot,"UpdatePacketDecoder");fe=ot});var X={};Y(X,{LoadType:()=>st});var st,L=E(()=>{"use strict";st=(i=>(i[i.ColorPalette=1]="ColorPalette",i[i.Sprite=2]="Sprite",i[i.MulticolorSprite=3]="MulticolorSprite",i[i.BitmapFont=4]="BitmapFont",i[i.Sound=5]="Sound",i[i.WebFont=6]="WebFont",i))(st||{})});var Bt={};Y(Bt,{LoadDecoder:()=>at});var dt,at,kt=E(()=>{"use strict";R();dt=class dt{decode(e,t=0){let r=S.from(e);if(t>=r.length)throw new Error("Buffer too short to decode load type");let n=r.readUInt8(t);switch(n){case 1:return this.decodeColorPalette(r,t);case 2:return this.decodeSprite(r,t);case 3:return this.decodeMulticolorSprite(r,t);case 4:return this.decodeBitmapFont(r,t);case 5:return this.decodeSound(r,t);case 6:return this.decodeWebFont(r,t);default:throw new Error(`Unknown load type: 0x${n.toString(16)}`)}}decodeColorPalette(e,t){let r=t;this.checkSize(e,t,2,"ColorPalette header");let n=e.readUInt8(t++),o=e.readUInt8(t++);this.checkSize(e,t,o*6,`ColorPalette ${o} colors`);let i=[];for(let a=0;a<o;a++)i.push({colorId:e.readUInt8(t++),r:e.readUInt8(t++),g:e.readUInt8(t++),b:e.readUInt8(t++),a:e.readUInt8(t++),e:e.readUInt8(t++)});return{load:{loadType:1,colors:i},bytesRead:t-r}}decodeSprite(e,t){let r=t;this.checkSize(e,t,2,"Sprite header");let n=e.readUInt8(t++),o=e.readUInt8(t++),i=[];for(let a=0;a<o;a++){this.checkSize(e,t,3,`Sprite ${a} header`);let d=e.readUInt8(t++),u=e.readUInt8(t++),c=e.readUInt8(t++),l=u*c;this.checkSize(e,t,l,`Sprite ${a} data`);let p=[];for(let h=0;h<l;h++)p.push(e.readUInt8(t++));i.push({spriteId:d,sizeX:u,sizeY:c,data:p})}return{load:{loadType:2,sprites:i},bytesRead:t-r}}decodeMulticolorSprite(e,t){let r=t;this.checkSize(e,t,2,"MulticolorSprite header");let n=e.readUInt8(t++),o=e.readUInt8(t++),i=[];for(let a=0;a<o;a++){this.checkSize(e,t,3,`MulticolorSprite ${a} header`);let d=e.readUInt8(t++),u=e.readUInt8(t++),c=e.readUInt8(t++),l=u*c,p=l*3;this.checkSize(e,t,p,`MulticolorSprite ${a} data`);let h=[];for(let m=0;m<l;m++)h.push({charCode:e.readUInt8(t++),fgColorId:e.readUInt8(t++),bgColorId:e.readUInt8(t++)});i.push({spriteId:d,sizeX:u,sizeY:c,data:h})}return{load:{loadType:3,sprites:i},bytesRead:t-r}}decodeBitmapFont(e,t){let r=t;this.checkSize(e,t,7,"BitmapFont header");let n=e.readUInt8(t++),o=e.readUInt8(t++),i=e.readUInt8(t++),s=e.readUInt8(t++),a=e.readUInt8(t++),d=e.readUInt8(t++),u=e.readUInt8(t++),c=Math.ceil(i*s/8),l=[];for(let h=0;h<u;h++){this.checkSize(e,t,1+c,`BitmapFont character ${h}`);let m=e.readUInt8(t++),b=new Uint8Array(c);for(let f=0;f<c;f++)b[f]=e.readUInt8(t++);l.push({charCode:m,bitmap:b})}return{load:{loadType:4,fontId:o,width:i,height:s,cellWidth:a,cellHeight:d,characters:l},bytesRead:t-r}}decodeSound(e,t){let r=t;this.checkSize(e,t,2,"Sound header");let n=e.readUInt8(t++),o=e.readUInt8(t++),i=[];for(let a=0;a<o;a++){this.checkSize(e,t,3,`Sound ${a} header`);let d=e.readUInt8(t++),u=e.readUInt16BE(t);t+=2,this.checkSize(e,t,u,`Sound ${a} MIDI data`);let c=new Uint8Array(u);for(let l=0;l<u;l++)c[l]=e.readUInt8(t++);i.push({soundId:d,midiData:c})}return{load:{loadType:5,sounds:i},bytesRead:t-r}}checkSize(e,t,r,n){if(t+r>e.length)throw new Error(`Buffer too short for ${n}: need ${r} bytes at offset ${t}, but only ${e.length-t} bytes remaining`)}decodeWebFont(e,t){let r=t,n=new TextDecoder;this.checkSize(e,t,5,"WebFont header");let o=e.readUInt8(t++),i=e.readUInt8(t++),s=e.readUInt8(t++),a=e.readUInt8(t++);this.checkSize(e,t,a,"WebFont family string");let d=new Uint8Array(a);for(let p=0;p<a;p++)d[p]=e.readUInt8(t++);let u=n.decode(d);this.checkSize(e,t,2,"WebFont fontSize");let c=e.readUInt16BE(t);t+=2;let l={loadType:6,fontId:i,fontFamily:u,fontSize:c};if(s&1&&(this.checkSize(e,t,2,"WebFont offsetX"),l.offsetX=e.readInt16BE(t),t+=2),s&2&&(this.checkSize(e,t,2,"WebFont offsetY"),l.offsetY=e.readInt16BE(t),t+=2),s&4&&(this.checkSize(e,t,2,"WebFont charSpacing"),l.charSpacing=e.readInt16BE(t),t+=2),s&8){this.checkSize(e,t,2,"WebFont lineHeight");let p=e.readUInt16BE(t);l.lineHeight=p/100,t+=2}if(s&16){this.checkSize(e,t,1,"WebFont weight length");let p=e.readUInt8(t++);this.checkSize(e,t,p,"WebFont weight string");let h=new Uint8Array(p);for(let m=0;m<p;m++)h[m]=e.readUInt8(t++);l.fontWeight=n.decode(h)}if(s&32){this.checkSize(e,t,1,"WebFont style length");let p=e.readUInt8(t++);this.checkSize(e,t,p,"WebFont style string");let h=new Uint8Array(p);for(let m=0;m<p;m++)h[m]=e.readUInt8(t++);l.fontStyle=n.decode(h)}return{load:l,bytesRead:t-r}}};C(dt,"LoadDecoder");at=dt});var N={};Y(N,{LoadEncoder:()=>ut});var lt,ut,W=E(()=>{"use strict";R();lt=class lt{encode(e){switch(e.loadType){case 1:return this.encodeColorPalette(e);case 2:return this.encodeSprite(e);case 3:return this.encodeMulticolorSprite(e);case 4:return this.encodeBitmapFont(e);case 5:return this.encodeSound(e);case 6:return this.encodeWebFont(e);default:throw new Error(`Unknown load type: ${e.loadType}`)}}encodeColorPalette(e){let t=e.colors.length;if(t>255)throw new Error(`Palette size ${t} exceeds maximum of 255`);let r=S.allocUnsafe(2+t*6),n=0;r.writeUInt8(1,n++),r.writeUInt8(t,n++);for(let o of e.colors)r.writeUInt8(o.colorId,n++),r.writeUInt8(o.r,n++),r.writeUInt8(o.g,n++),r.writeUInt8(o.b,n++),r.writeUInt8(o.a,n++),r.writeUInt8(o.e??0,n++);return r.toUint8Array()}encodeSprite(e){let t=e.sprites.length;if(t>255)throw new Error(`Sprite count ${t} exceeds maximum of 255`);let r=2;for(let i of e.sprites)r+=3,r+=i.data.length;let n=S.allocUnsafe(r),o=0;n.writeUInt8(2,o++),n.writeUInt8(t,o++);for(let i of e.sprites){if(i.data.length!==i.sizeX*i.sizeY)throw new Error(`Sprite ${i.spriteId}: data length ${i.data.length} does not match size ${i.sizeX}x${i.sizeY}`);n.writeUInt8(i.spriteId,o++),n.writeUInt8(i.sizeX,o++),n.writeUInt8(i.sizeY,o++);for(let s of i.data)n.writeUInt8(s,o++)}return n.toUint8Array()}encodeMulticolorSprite(e){let t=e.sprites.length;if(t>255)throw new Error(`Sprite count ${t} exceeds maximum of 255`);let r=2;for(let i of e.sprites)r+=3,r+=i.data.length*3;let n=S.allocUnsafe(r),o=0;n.writeUInt8(3,o++),n.writeUInt8(t,o++);for(let i of e.sprites){if(i.data.length!==i.sizeX*i.sizeY)throw new Error(`Sprite ${i.spriteId}: data length ${i.data.length} does not match size ${i.sizeX}x${i.sizeY}`);n.writeUInt8(i.spriteId,o++),n.writeUInt8(i.sizeX,o++),n.writeUInt8(i.sizeY,o++);for(let s of i.data)n.writeUInt8(s.charCode,o++),n.writeUInt8(s.fgColorId,o++),n.writeUInt8(s.bgColorId,o++)}return n.toUint8Array()}encodeBitmapFont(e){let t=e.characters.length;if(t>255)throw new Error(`Character count ${t} exceeds maximum of 255`);let r=Math.ceil(e.width*e.height/8),n=7+t*(1+r),o=S.allocUnsafe(n),i=0;o.writeUInt8(4,i++),o.writeUInt8(e.fontId,i++),o.writeUInt8(e.width,i++),o.writeUInt8(e.height,i++),o.writeUInt8(e.cellWidth,i++),o.writeUInt8(e.cellHeight,i++),o.writeUInt8(t,i++);for(let s of e.characters){if(s.bitmap.length!==r)throw new Error(`Character ${s.charCode}: bitmap size ${s.bitmap.length} does not match expected ${r} bytes`);o.writeUInt8(s.charCode,i++);for(let a=0;a<s.bitmap.length;a++)o.writeUInt8(s.bitmap[a],i++)}return o.toUint8Array()}encodeSound(e){let t=e.sounds.length;if(t>255)throw new Error(`Sound count ${t} exceeds maximum of 255`);let r=2;for(let i of e.sounds){if(i.midiData.length>65535)throw new Error(`Sound ${i.soundId}: MIDI data size ${i.midiData.length} exceeds maximum of 65535 bytes`);r+=3,r+=i.midiData.length}let n=S.allocUnsafe(r),o=0;n.writeUInt8(5,o++),n.writeUInt8(t,o++);for(let i of e.sounds){n.writeUInt8(i.soundId,o++),n.writeUInt16BE(i.midiData.length,o),o+=2;for(let s=0;s<i.midiData.length;s++)n.writeUInt8(i.midiData[s],o++)}return n.toUint8Array()}encodeWebFont(e){let t=new TextEncoder,r=t.encode(e.fontFamily),n=e.fontWeight?t.encode(e.fontWeight):new Uint8Array(0),o=e.fontStyle?t.encode(e.fontStyle):new Uint8Array(0),i=0;e.offsetX!==void 0&&(i|=1),e.offsetY!==void 0&&(i|=2),e.charSpacing!==void 0&&(i|=4),e.lineHeight!==void 0&&(i|=8),e.fontWeight!==void 0&&(i|=16),e.fontStyle!==void 0&&(i|=32);let s=4;s+=r.length,s+=2,e.offsetX!==void 0&&(s+=2),e.offsetY!==void 0&&(s+=2),e.charSpacing!==void 0&&(s+=2),e.lineHeight!==void 0&&(s+=2),e.fontWeight!==void 0&&(s+=1+n.length),e.fontStyle!==void 0&&(s+=1+o.length);let a=S.allocUnsafe(s),d=0;a.writeUInt8(6,d++),a.writeUInt8(e.fontId,d++),a.writeUInt8(i,d++),a.writeUInt8(r.length,d++);for(let u=0;u<r.length;u++)a.writeUInt8(r[u],d++);if(a.writeUInt16BE(e.fontSize,d),d+=2,e.offsetX!==void 0&&(a.writeInt16BE(e.offsetX,d),d+=2),e.offsetY!==void 0&&(a.writeInt16BE(e.offsetY,d),d+=2),e.charSpacing!==void 0&&(a.writeInt16BE(e.charSpacing,d),d+=2),e.lineHeight!==void 0&&(a.writeUInt16BE(Math.round(e.lineHeight*100),d),d+=2),e.fontWeight!==void 0){a.writeUInt8(n.length,d++);for(let u=0;u<n.length;u++)a.writeUInt8(n[u],d++)}if(e.fontStyle!==void 0){a.writeUInt8(o.length,d++);for(let u=0;u<o.length;u++)a.writeUInt8(o[u],d++)}return a.toUint8Array()}};C(lt,"LoadEncoder");ut=lt});import{Vector2 as le}from"@utsp/types";var Oe=class Oe{constructor(e=0,t=60,r=40){x(this,"id");x(this,"origin");x(this,"size");x(this,"previousOrigin",new le(0,0));x(this,"previousSize",new le(0,0));x(this,"toDraw",[]);if(e<0||e>255)throw new Error(`Display ID must be between 0 and 255, got ${e}`);if(t<1||t>256)throw new Error(`Display sizeX must be between 1 and 256, got ${t}`);if(r<1||r>256)throw new Error(`Display sizeY must be between 1 and 256, got ${r}`);this.id=e,this.origin=new le(0,0),this.size=new le(t,r),this.toDraw=new Array(this.size.x*this.size.y).fill(null).map(()=>({charCode:0,fgColorCode:0,bgColorCode:0}))}getId(){return this.id}getOrigin(){return this.origin}setOrigin(e){this.origin=e}moveOrigin(e,t){this.origin.x+=e,this.origin.y+=t}hasOriginChanged(){return this.origin.x!==this.previousOrigin.x||this.origin.y!==this.previousOrigin.y}hasSizeChanged(){return this.size.x!==this.previousSize.x||this.size.y!==this.previousSize.y}hasChanged(){return this.hasOriginChanged()||this.hasSizeChanged()}resetChangeTracking(){this.previousOrigin.x=this.origin.x,this.previousOrigin.y=this.origin.y,this.previousSize.x=this.size.x,this.previousSize.y=this.size.y}getSize(){return this.size}setSize(e){if(e.x<1||e.x>256)throw new Error(`Display sizeX must be between 1 and 256, got ${e.x}`);if(e.y<1||e.y>256)throw new Error(`Display sizeY must be between 1 and 256, got ${e.y}`);this.size=e,this.toDraw=new Array(this.size.x*this.size.y).fill(null).map(()=>({charCode:0,fgColorCode:0,bgColorCode:0}))}};C(Oe,"Display");var G=Oe;var ce=256,zr=65536,k=255,Er=9,Mr=5,Fr=13,Tt=6,Dt=6,Xt=6,Yt=7,_t=5,Ht=3,Nt=1,Wt=6,$t=4,Vt=5,Zt=2,Gt=8,qt=7,jt=7,Kt=8,Jt=10,Qt=6,er=3,tr=9,rr=15,nr=51,or=6,ir=4,sr=3,ar=3,dr=4,ur=5,lr=4,cr=2,pr=5,hr=3,mr=5,xr=5,Rr=2,Lr=3,Pr=2,Tr=2,mt=5,xt=5,Dr=4;var we=class we{constructor(e=65536){x(this,"data");x(this,"size");this.size=e,this.data=new Uint8Array(e*3),this.clear()}clear(){this.clearWithColor(0,255,255)}clearWithColor(e,t,r){for(let n=0;n<this.size;n++){let o=n*3;this.data[o]=e,this.data[o+1]=t,this.data[o+2]=r}}set(e,t,r,n){let o=e*3;this.data[o]=t,this.data[o+1]=r,this.data[o+2]=n}fillCharsUniform(e,t,r,n){for(let o=0;o<e.length;o++){let i=e[o]*3;this.data[i]=t,this.data[i+1]=r,this.data[i+2]=n}}get(e){let t=e*3;return{charCode:this.data[t],fgColorCode:this.data[t+1],bgColorCode:this.data[t+2]}}setCharOnly(e,t){this.data[e*3]=t}setColorsOnly(e,t,r){this.data[e*3+1]=t,this.data[e*3+2]=r}getCharCode(e){return this.data[e*3]}getFgColorCode(e){return this.data[e*3+1]}getBgColorCode(e){return this.data[e*3+2]}getRawData(){return this.data}getSize(){return this.size}};C(we,"CellBuffer");var P=we,ve=class ve{constructor(e){x(this,"data");x(this,"size");this.size=e,this.data=new Uint8Array(e)}clear(){this.data.fill(0)}set(e,t){this.data[e]=t}get(e){return this.data[e]}getRawData(){return this.data}getSize(){return this.size}};C(ve,"CharCodeBuffer");var q=ve;import{Vector2 as Cr}from"@utsp/types";var gr=new Map([[9474,179],[9472,196],[9484,218],[9488,191],[9492,192],[9496,217],[9500,195],[9508,180],[9516,194],[9524,193],[9532,197],[9553,186],[9552,205],[9556,201],[9559,187],[9562,200],[9565,188],[9568,204],[9571,185],[9574,203],[9577,202],[9580,206],[9608,219],[9619,178],[9618,177],[9617,176],[9600,223],[9604,220],[9612,221],[9616,222]]);function j(g){if(g<128)return g;let e=gr.get(g);return e!==void 0?e:g&255}C(j,"unicodeToCp437");var Ae=class Ae{constructor(){x(this,"currentWidth",256);x(this,"currentHeight",256)}rasterizeOrders(e,t,r,n,o="add",i){this.currentWidth=r,this.currentHeight=n,o==="set"&&this.clearBuffer(t);for(let s of e)this.rasterizeOrder(s,t,i)}clearBuffer(e){e.clear()}rasterizeOrder(e,t,r){switch(e.type){case 1:this.rasterizeChar(e,t);break;case 2:this.rasterizeText(e,t);break;case 23:this.rasterizeTextMultiline(e,t);break;case 3:this.rasterizeSubFrame(e,t);break;case 4:this.rasterizeSubFrameMultiColor(e,t);break;case 5:this.rasterizeFullFrame(e,t);break;case 6:this.rasterizeFullFrameMultiColor(e,t);break;case 7:this.rasterizeSprite(e,t,r);break;case 8:this.rasterizeSpriteMultiColor(e,t,r);break;case 9:this.rasterizeColorMap(e,t);break;case 10:this.rasterizeShape(e,t);break;case 11:this.rasterizeDotCloud(e,t);break;case 12:this.rasterizeDotCloudMultiColor(e,t);break;case 17:this.rasterizeBitmask(e,t);break;case 18:this.rasterizeBitmask4(e,t);break;case 24:this.rasterizeBitmask16(e,t);break;case 13:this.rasterizeSpriteCloud(e,t,r);break;case 14:this.rasterizeSpriteCloudMultiColor(e,t,r);break;case 15:this.rasterizeSpriteCloudVaried(e,t,r);break;case 16:this.rasterizeSpriteCloudVariedMultiColor(e,t,r);break;case 19:this.rasterizeClear(e,t);break;case 20:this.rasterizeFillChar(e,t);break;case 21:this.rasterizeFillSprite(e,t,r);break;case 22:this.rasterizeFillSpriteMultiColor(e,t,r);break;default:break}}rasterizeChar(e,t){let{posX:r,posY:n,charCode:o,bgColorCode:i,fgColorCode:s}=e;if(!this.isInBounds(r,n))return;let a=n*this.currentWidth+r;t.set(a,o,s,i)}rasterizeText(e,t){let{posX:r,posY:n,text:o,bgColorCode:i,fgColorCode:s}=e;if(this.isInBounds(r,n))for(let a=0;a<o.length;a++){let d=r+a;if(d>=this.currentWidth)break;let u=n*this.currentWidth+d,c=o.charCodeAt(a),l=j(c);t.set(u,l,s,i)}}rasterizeTextMultiline(e,t){let{posX:r,posY:n,text:o,bgColorCode:i,fgColorCode:s}=e,a=o.split(`
2
- `),d=n;for(let u of a){if(d>=this.currentHeight)break;if(d>=0&&this.isInBounds(r,d))for(let c=0;c<u.length;c++){let l=r+c;if(l>=this.currentWidth)break;let p=d*this.currentWidth+l,h=u.charCodeAt(c),m=j(h);t.set(p,m,s,i)}d++}}rasterizeSubFrame(e,t){let{posX:r,posY:n,sizeX:o,sizeY:i,frame:s,bgColorCode:a,fgColorCode:d}=e;for(let u=0;u<i;u++){let c=n+u;if(!(c<0||c>=this.currentHeight))for(let l=0;l<o;l++){let p=r+l;if(p<0||p>=this.currentWidth)continue;let h=u*o+l;if(h>=s.length)break;let m=c*this.currentWidth+p;t.set(m,s[h],d,a)}}}rasterizeSubFrameMultiColor(e,t){let{posX:r,posY:n,sizeX:o,sizeY:i,frame:s}=e;for(let a=0;a<i;a++){let d=n+a;if(!(d<0||d>=this.currentHeight))for(let u=0;u<o;u++){let c=r+u;if(c<0||c>=this.currentWidth)continue;let l=a*o+u;if(l>=s.length)break;let p=s[l],h=d*this.currentWidth+c;t.set(h,p.charCode,p.fgColorCode,p.bgColorCode)}}}rasterizeFullFrame(e,t){let{frame:r,bgColorCode:n,fgColorCode:o}=e,i=this.currentWidth*this.currentHeight;for(let s=0;s<i&&s<r.length;s++)t.set(s,r[s],o,n)}rasterizeFullFrameMultiColor(e,t){let{frame:r}=e,n=this.currentWidth*this.currentHeight;for(let o=0;o<n&&o<r.length;o++){let i=r[o];t.set(o,i.charCode,i.fgColorCode,i.bgColorCode)}}rasterizeColorMap(e,t){let{posX:r,posY:n,sizeX:o,sizeY:i,colorData:s}=e;for(let a=0;a<i;a++){let d=n+a;if(!(d<0||d>=this.currentHeight))for(let u=0;u<o;u++){let c=r+u;if(c<0||c>=this.currentWidth)continue;let l=a*o+u;if(l>=s.length)break;let p=d*this.currentWidth+c,h=s[l];t.setColorsOnly(p,h.fgColorCode,h.bgColorCode)}}}rasterizeShape(e,t){let{shapeType:r,shapeData:n}=e;switch(r){case 1:this.rasterizeRectangle(n,t);break;case 2:this.rasterizeCircle(n,t);break;case 3:this.rasterizeLine(n,t);break;case 4:this.rasterizeEllipse(n,t);break;case 5:this.rasterizeTriangle(n,t);break}}rasterizeRectangle(e,t){let{posX:r,posY:n,width:o,height:i,filled:s,charCode:a,bgColorCode:d,fgColorCode:u}=e;if(s)for(let c=0;c<i;c++){let l=n+c;if(!(l<0||l>=this.currentHeight))for(let p=0;p<o;p++){let h=r+p;if(h<0||h>=this.currentWidth)continue;let m=l*this.currentWidth+h;t.set(m,a,u,d)}}else{for(let c=0;c<o;c++)this.setCell(r+c,n,a,d,u,t),this.setCell(r+c,n+i-1,a,d,u,t);for(let c=0;c<i;c++)this.setCell(r,n+c,a,d,u,t),this.setCell(r+o-1,n+c,a,d,u,t)}}rasterizeCircle(e,t){let{centerX:r,centerY:n,radius:o,filled:i,charCode:s,bgColorCode:a,fgColorCode:d}=e;if(i)for(let u=-o;u<=o;u++){let c=n+u;if(!(c<0||c>=this.currentHeight))for(let l=-o;l<=o;l++){let p=r+l;if(!(p<0||p>=this.currentWidth)&&l*l+u*u<=o*o){let h=c*this.currentWidth+p;t.set(h,s,d,a)}}}else{let u=o,c=0,l=0;for(;u>=c;)this.setCell(r+u,n+c,s,a,d,t),this.setCell(r+c,n+u,s,a,d,t),this.setCell(r-c,n+u,s,a,d,t),this.setCell(r-u,n+c,s,a,d,t),this.setCell(r-u,n-c,s,a,d,t),this.setCell(r-c,n-u,s,a,d,t),this.setCell(r+c,n-u,s,a,d,t),this.setCell(r+u,n-c,s,a,d,t),l<=0&&(c+=1,l+=2*c+1),l>0&&(u-=1,l-=2*u+1)}}rasterizeLine(e,t){let{x1:r,y1:n,x2:o,y2:i,charCode:s,bgColorCode:a,fgColorCode:d}=e,u=Math.abs(o-r),c=Math.abs(i-n),l=r<o?1:-1,p=n<i?1:-1,h=u-c,m=r,b=n;for(;this.setCell(m,b,s,a,d,t),!(m===o&&b===i);){let f=2*h;f>-c&&(h-=c,m+=l),f<u&&(h+=u,b+=p)}}rasterizeEllipse(e,t){let{centerX:r,centerY:n,radiusX:o,radiusY:i,filled:s,charCode:a,bgColorCode:d,fgColorCode:u}=e;if(s)for(let c=-i;c<=i;c++){let l=n+c;if(!(l<0||l>=this.currentHeight))for(let p=-o;p<=o;p++){let h=r+p;if(h<0||h>=this.currentWidth)continue;if(p*p/(o*o)+c*c/(i*i)<=1){let b=l*this.currentWidth+h;t.set(b,a,u,d)}}}else{let c=Math.max(o,i)*8;for(let l=0;l<c;l++){let p=2*Math.PI*l/c,h=Math.round(r+o*Math.cos(p)),m=Math.round(n+i*Math.sin(p));this.setCell(h,m,a,d,u,t)}}}rasterizeTriangle(e,t){let{x1:r,y1:n,x2:o,y2:i,x3:s,y3:a,filled:d,charCode:u,bgColorCode:c,fgColorCode:l}=e;if(d){let p=[{x:r,y:n},{x:o,y:i},{x:s,y:a}].sort((y,O)=>y.y-O.y),[h,m,b]=p,f=C((y,O,B)=>{let v=Math.round(Math.min(O,B)),w=Math.round(Math.max(O,B));for(let M=v;M<=w;M++)if(M>=0&&M<this.currentWidth&&y>=0&&y<this.currentHeight){let ue=y*this.currentWidth+M;t.set(ue,u,l,c)}},"drawLine"),U=C((y,O,B,v,w)=>v===O?B:B+(y-O)*(w-B)/(v-O),"interpolate");for(let y=h.y;y<=m.y;y++){let O=U(y,h.y,h.x,b.y,b.x),B=U(y,h.y,h.x,m.y,m.x);f(y,O,B)}for(let y=m.y+1;y<=b.y;y++){let O=U(y,h.y,h.x,b.y,b.x),B=U(y,m.y,m.x,b.y,b.x);f(y,O,B)}}else this.drawLineSegment(r,n,o,i,u,c,l,t),this.drawLineSegment(o,i,s,a,u,c,l,t),this.drawLineSegment(s,a,r,n,u,c,l,t)}drawLineSegment(e,t,r,n,o,i,s,a){let d=Math.abs(r-e),u=Math.abs(n-t),c=e<r?1:-1,l=t<n?1:-1,p=d-u,h=e,m=t;for(;this.setCell(h,m,o,i,s,a),!(h===r&&m===n);){let b=2*p;b>-u&&(p-=u,h+=c),b<d&&(p+=d,m+=l)}}rasterizeDotCloud(e,t){let{charCode:r,bgColorCode:n,fgColorCode:o,positions:i}=e,s=t.getRawData(),a=this.currentWidth;for(let d=0;d<i.length;d++){if(i[d].posX<0||i[d].posX>=a||i[d].posY<0||i[d].posY>=this.currentHeight)continue;let u=(i[d].posY*a+i[d].posX)*3;s[u]=r,s[u+1]=o,s[u+2]=n}}rasterizeDotCloudMultiColor(e,t){let{dots:r}=e;for(let n of r)this.setCell(n.posX,n.posY,n.charCode,n.bgColorCode,n.fgColorCode,t)}rasterizeBitmask(e,t){let{posX:r,posY:n,sizeX:o,sizeY:i,charCode:s,bgColorCode:a,fgColorCode:d,override:u,mask:c}=e;for(let l=0;l<i;l++){let p=n+l;if(!(p<0||p>=this.currentHeight))for(let h=0;h<o;h++){let m=r+h;if(m<0||m>=this.currentWidth)continue;let b=l*o+h,f=Math.floor(b/8),U=b%8,y=(c[f]&1<<U)!==0,O=p*this.currentWidth+m;y?t.set(O,s,d,a):u&&t.set(O,255,255,255)}}}rasterizeBitmask4(e,t){let{posX:r,posY:n,sizeX:o,sizeY:i,override:s,variants:a,mask:d}=e;for(let u=0;u<i;u++){let c=n+u;if(!(c<0||c>=this.currentHeight))for(let l=0;l<o;l++){let p=r+l;if(p<0||p>=this.currentWidth)continue;let h=u*o+l,m=Math.floor(h/4),b=h%4*2,f=d[m]>>b&3,U=c*this.currentWidth+p;if(f>0){let y=a[f-1];t.set(U,y.charCode,y.fgColorCode,y.bgColorCode)}else s&&t.set(U,255,255,255)}}}rasterizeBitmask16(e,t){let{posX:r,posY:n,sizeX:o,sizeY:i,override:s,variants:a,mask:d}=e;for(let u=0;u<i;u++){let c=n+u;if(!(c<0||c>=this.currentHeight))for(let l=0;l<o;l++){let p=r+l;if(p<0||p>=this.currentWidth)continue;let h=u*o+l,m=Math.floor(h/2),b=h%2*4,f=d[m]>>b&15,U=c*this.currentWidth+p;if(f>0){let y=a[f-1];t.set(U,y.charCode,y.fgColorCode,y.bgColorCode)}else s&&t.set(U,255,255,255)}}}rasterizeClear(e,t){let{charCode:r,bgColorCode:n,fgColorCode:o}=e;t.clearWithColor(r,o,n)}rasterizeFillChar(e,t){let{patternWidth:r,patternHeight:n,pattern:o,bgColorCode:i,fgColorCode:s}=e;for(let a=0;a<this.currentHeight;a++)for(let d=0;d<this.currentWidth;d++){let u=d%r,l=a%n*r+u;if(l<o.length){let p=a*this.currentWidth+d;t.set(p,o[l],s,i)}}}rasterizeSprite(e,t,r){if(!r)return;let{posX:n,posY:o,spriteIndex:i,bgColorCode:s,fgColorCode:a}=e,d=r.getUnicolorSprite(i);if(!d)return;let u=d.data;for(let c=0;c<d.sizeY;c++)for(let l=0;l<d.sizeX;l++){let p=n+l,h=o+c;if(!this.isInBounds(p,h))continue;let m=c*d.sizeX+l,b=u.get(m);this.setCell(p,h,b,s,a,t)}}rasterizeSpriteMultiColor(e,t,r){if(!r)return;let{posX:n,posY:o,spriteIndex:i}=e,s=r.getMulticolorSprite(i);if(!s)return;let a=s.data;for(let d=0;d<s.sizeY;d++)for(let u=0;u<s.sizeX;u++){let c=n+u,l=o+d;if(!this.isInBounds(c,l))continue;let p=d*s.sizeX+u,h=a.getCharCode(p),m=a.getFgColorCode(p),b=a.getBgColorCode(p);this.setCell(c,l,h,b,m,t)}}rasterizeSpriteCloud(e,t,r){if(!r)return;let{spriteIndex:n,bgColorCode:o,fgColorCode:i,positions:s}=e,a=r.getUnicolorSprite(n);if(a){if(a.sizeX===1&&a.sizeY===1){let d=a.data.get(0),u=t.getRawData(),c=this.currentWidth;for(let l=0;l<s.length;l++){if(s[l].posX<0||s[l].posX>=c||s[l].posY<0||s[l].posY>=this.currentHeight)continue;let p=(s[l].posY*c+s[l].posX)*3;u[p]=d,u[p+1]=i,u[p+2]=o}return}for(let d=0;d<s.length;d++){let u=a.data;for(let c=0;c<a.sizeY;c++)for(let l=0;l<a.sizeX;l++){let p=s[d].posX+l,h=s[d].posY+c;if(!this.isInBounds(p,h))continue;let m=c*a.sizeX+l,b=u.get(m);this.setCell(p,h,b,o,i,t)}}}}rasterizeSpriteCloudMultiColor(e,t,r){if(!r)return;let{spriteIndex:n,positions:o}=e,i=r.getMulticolorSprite(n);if(i)for(let s=0;s<o.length;s++){let a=i.data;for(let d=0;d<i.sizeY;d++)for(let u=0;u<i.sizeX;u++){let c=o[s].posX+u,l=o[s].posY+d;if(!this.isInBounds(c,l))continue;let p=d*i.sizeX+u,h=a.getCharCode(p),m=a.getFgColorCode(p),b=a.getBgColorCode(p);this.setCell(c,l,h,b,m,t)}}}rasterizeSpriteCloudVaried(e,t,r){if(!r)return;let{sprites:n}=e;for(let o=0;o<n.length;o++){let i=n[o],s=r.getUnicolorSprite(i.spriteIndex);if(!s)continue;let a=s.data;for(let d=0;d<s.sizeY;d++)for(let u=0;u<s.sizeX;u++){let c=i.posX+u,l=i.posY+d;if(!this.isInBounds(c,l))continue;let p=d*s.sizeX+u,h=a.get(p);this.setCell(c,l,h,i.bgColorCode,i.fgColorCode,t)}}}rasterizeSpriteCloudVariedMultiColor(e,t,r){if(!r)return;let{sprites:n}=e;for(let o=0;o<n.length;o++){let i=n[o],s=r.getMulticolorSprite(i.spriteIndex);if(!s)continue;let a=s.data;for(let d=0;d<s.sizeY;d++)for(let u=0;u<s.sizeX;u++){let c=i.posX+u,l=i.posY+d;if(!this.isInBounds(c,l))continue;let p=d*s.sizeX+u,h=a.getCharCode(p),m=a.getFgColorCode(p),b=a.getBgColorCode(p);this.setCell(c,l,h,b,m,t)}}}rasterizeFillSprite(e,t,r){if(!r)return;let{spriteIndex:n,bgColorCode:o,fgColorCode:i}=e,s=r.getUnicolorSprite(n);if(!s)return;let a=s.data;for(let d=0;d<this.currentHeight;d++)for(let u=0;u<this.currentWidth;u++){let c=u%s.sizeX,p=d%s.sizeY*s.sizeX+c,h=a.get(p),m=d*this.currentWidth+u;t.set(m,h,i,o)}}rasterizeFillSpriteMultiColor(e,t,r){if(!r)return;let{spriteIndex:n}=e,o=r.getMulticolorSprite(n);if(!o)return;let i=o.data;for(let s=0;s<this.currentHeight;s++)for(let a=0;a<this.currentWidth;a++){let d=a%o.sizeX,c=s%o.sizeY*o.sizeX+d,l=i.getCharCode(c),p=i.getFgColorCode(c),h=i.getBgColorCode(c),m=s*this.currentWidth+a;t.set(m,l,p,h)}}setCell(e,t,r,n,o,i){if(!this.isInBounds(e,t))return;let s=t*this.currentWidth+e;i.set(s,r,o,n)}isInBounds(e,t){return e>=0&&e<this.currentWidth&&t>=0&&t<this.currentHeight}};C(Ae,"LayerRasterizer");var pe=Ae;var T=class T{constructor(e,t,r,n,o=!1){x(this,"id",0);x(this,"origin");x(this,"orders",[]);x(this,"zOrder",0);x(this,"data");x(this,"width");x(this,"height");x(this,"isStatic",!1);x(this,"spriteRegistry");x(this,"mode","server");x(this,"previousOrigin");x(this,"previousZOrder");x(this,"enabled",!0);x(this,"useSetMode",!1);x(this,"needsCommit",!1);if(r<1||r>256||n<1||n>256)throw new Error(`Layer size must be 1-256, got ${r}\xD7${n}`);this.origin=e,this.zOrder=t,this.width=r,this.height=n,this.isStatic=o,this.data=new P(r*n),this.previousOrigin=new Cr(e.x,e.y),this.previousZOrder=t}setMode(e){this.mode=e}setSpriteRegistry(e){this.spriteRegistry=e}getOrders(){return this.orders}addOrders(e){this.orders.push(...e),this.useSetMode=!1,(this.mode==="client"||this.mode==="standalone")&&T.rasterizer.rasterizeOrders(e,this.data,this.width,this.height,"add",this.spriteRegistry)}setOrders(e){this.orders=e,this.useSetMode=!0,(this.mode==="client"||this.mode==="standalone")&&T.rasterizer.rasterizeOrders(e,this.data,this.width,this.height,"set",this.spriteRegistry)}clearOrders(){this.orders=[],(this.mode==="client"||this.mode==="standalone")&&T.rasterizer.clearBuffer(this.data)}getOrigin(){return this.origin}setOrigin(e){this.origin=e}getZOrder(){return this.zOrder}setZOrder(e){this.zOrder=e}getId(){return this.id}setId(e){this.id=e}getData(){return this.data}getWidth(){return this.width}getHeight(){return this.height}getCellAt(e,t){return e<0||e>=this.width||t<0||t>=this.height?null:this.data.get(t*this.width+e)}setStatic(e){this.isStatic=e}getStatic(){return this.isStatic}setEnabled(e){this.enabled=e}isEnabled(){return this.enabled}hasOriginChanged(){return this.origin.x!==this.previousOrigin.x||this.origin.y!==this.previousOrigin.y}hasZOrderChanged(){return this.zOrder!==this.previousZOrder}calculateUpdateFlags(){if(!this.enabled)return 0;let e=1;return this.useSetMode&&(e|=2),this.hasOriginChanged()&&(e|=4),this.hasZOrderChanged()&&(e|=8),(this.orders.length>0||this.needsCommit&&this.useSetMode)&&(e|=4),e}resetChangeTracking(){this.previousOrigin.x=this.origin.x,this.previousOrigin.y=this.origin.y,this.previousZOrder=this.zOrder}commit(){this.needsCommit=!0}getNeedsCommit(){return this.needsCommit}resetCommit(){this.needsCommit=!1}};C(T,"Layer"),x(T,"rasterizer",new pe);var K=T;var Be=class Be{constructor(){x(this,"axes",new Map);x(this,"buttons",new Map);x(this,"axisNameToId",new Map);x(this,"buttonNameToId",new Map);x(this,"version",1)}defineAxis(e,t,r=[],n=-1,o=1,i=0){if(e<0||e>255)throw new Error(`Axis bindingId must be between 0 and 255, got ${e}`);if(this.axes.has(e))throw new Error(`Axis bindingId ${e} is already defined`);if(this.axisNameToId.has(t)){let a=this.axisNameToId.get(t);throw new Error(`Axis name "${t}" is already defined with bindingId ${a}`)}let s={bindingId:e,name:t,min:n,max:o,defaultValue:i,sources:r};this.axes.set(e,s),this.axisNameToId.set(t,e),this.version++}defineButton(e,t,r=[],n=!1){if(e<0||e>255)throw new Error(`Button bindingId must be between 0 and 255, got ${e}`);if(this.buttons.has(e))throw new Error(`Button bindingId ${e} is already defined`);if(this.buttonNameToId.has(t)){let i=this.buttonNameToId.get(t);throw new Error(`Button name "${t}" is already defined with bindingId ${i}`)}let o={bindingId:e,name:t,defaultValue:n,sources:r};this.buttons.set(e,o),this.buttonNameToId.set(t,e),this.version++}evaluateAxis(e,t){let r=this.axes.get(e);if(!r)return 0;let n=0;for(let i of r.sources){let a=t.get(i.sourceId)??0,d=i.deadzone??0;Math.abs(a)<d?a=0:a=(a>0?1:-1)*((Math.abs(a)-d)/(1-d));let u=i.scale??1;a*=u;let c=i.sensitivity??1;a*=c,i.invert&&(a=-a),n+=a}return Math.max(r.min,Math.min(r.max,n))}evaluateButton(e,t){let r=this.buttons.get(e);if(!r)return!1;for(let n of r.sources)if(t.get(n.sourceId)??!1)return!0;return!1}toLoadPacket(){let e={type:"input-binding",version:this.version,axes:Array.from(this.axes.values()),buttons:Array.from(this.buttons.values())};return JSON.stringify(e)}toLoadPacketObject(){return{type:"input-binding",version:this.version,axes:Array.from(this.axes.values()),buttons:Array.from(this.buttons.values())}}getAxisBindingId(e){return this.axisNameToId.get(e)??null}getButtonBindingId(e){return this.buttonNameToId.get(e)??null}getAxisName(e){return this.axes.get(e)?.name??null}getButtonName(e){return this.buttons.get(e)?.name??null}getAxisBinding(e){return this.axes.get(e)??null}getButtonBinding(e){return this.buttons.get(e)??null}hasAxis(e){return this.axes.has(e)}hasButton(e){return this.buttons.has(e)}getAxisCount(){return this.axes.size}getButtonCount(){return this.buttons.size}getAllAxes(){return Array.from(this.axes.values())}getAllButtons(){return Array.from(this.buttons.values())}getVersion(){return this.version}removeAxis(e){let t=this.axes.get(e);return t?(this.axes.delete(e),this.axisNameToId.delete(t.name),this.version++,!0):!1}removeButton(e){let t=this.buttons.get(e);return t?(this.buttons.delete(e),this.buttonNameToId.delete(t.name),this.version++,!0):!1}clearAxes(){this.axes.clear(),this.axisNameToId.clear(),this.version++}clearButtons(){this.buttons.clear(),this.buttonNameToId.clear(),this.version++}clear(){this.axes.clear(),this.axisNameToId.clear(),this.buttons.clear(),this.buttonNameToId.clear(),this.version=1}toString(){let e=`InputBindingRegistry (version ${this.version})
1
+ var q=Object.defineProperty;var Cr=Object.getOwnPropertyDescriptor;var fr=Object.getOwnPropertyNames;var Ir=Object.prototype.hasOwnProperty;var Sr=(m,e,t)=>e in m?q(m,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):m[e]=t;var b=(m,e)=>q(m,"name",{value:e,configurable:!0}),Ne=(m=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(m,{get:(e,t)=>(typeof require<"u"?require:e)[t]}):m)(function(m){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+m+'" is not supported')});var R=(m,e)=>()=>(m&&(e=m(m=0)),e);var _=(m,e)=>{for(var t in e)q(m,t,{get:e[t],enumerable:!0})},Ur=(m,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of fr(e))!Ir.call(m,n)&&n!==t&&q(m,n,{get:()=>e[n],enumerable:!(r=Cr(e,n))||r.enumerable});return m};var B=m=>Ur(q({},"__esModule",{value:!0}),m);var x=(m,e,t)=>(Sr(m,typeof e!="symbol"?e+"":e,t),t);var jt,Jt=R(()=>{"use strict";jt=(o=>(o[o.Rectangle=1]="Rectangle",o[o.Circle=2]="Circle",o[o.Line=3]="Line",o[o.Ellipse=4]="Ellipse",o[o.Triangle=5]="Triangle",o))(jt||{})});function an(m){return m>=1&&m<=3}function dn(m){return m>=1&&m<=4}function cn(m){switch(m){case 1:return"CreateInstance";case 2:return"UpdateInstance";case 3:return"RemoveInstance";default:return`Unknown(0x${m.toString(16)})`}}function ln(m){switch(m){case 1:return"Click";case 2:return"Change";case 3:return"Submit";case 4:return"Select";default:return`Unknown(0x${m.toString(16)})`}}var qt,Kt,Qt=R(()=>{"use strict";qt=(r=>(r[r.CreateInstance=1]="CreateInstance",r[r.UpdateInstance=2]="UpdateInstance",r[r.RemoveInstance=3]="RemoveInstance",r))(qt||{}),Kt=(n=>(n[n.Click=1]="Click",n[n.Change=2]="Change",n[n.Submit=3]="Submit",n[n.Select=4]="Select",n))(Kt||{});b(an,"isValidMacroOrderType");b(dn,"isValidMacroEventType");b(cn,"getMacroOrderTypeName");b(ln,"getMacroEventTypeName")});var L,I,T=R(()=>{"use strict";L=class L{constructor(e){x(this,"data");x(this,"view");this.data=new Uint8Array(e),this.view=new DataView(this.data.buffer)}static from(e){let t=new L(0);return t.data=e,t.view=new DataView(e.buffer,e.byteOffset,e.byteLength),t}static allocUnsafe(e){return new L(e)}get length(){return this.data.length}toUint8Array(){return this.data}readUInt8(e){return this.view.getUint8(e)}readInt8(e){return this.view.getInt8(e)}readUInt16BE(e){return this.view.getUint16(e,!1)}readInt16BE(e){return this.view.getInt16(e,!1)}readUInt16LE(e){return this.view.getUint16(e,!0)}readInt16LE(e){return this.view.getInt16(e,!0)}readUInt32BE(e){return this.view.getUint32(e,!1)}readInt32BE(e){return this.view.getInt32(e,!1)}readUInt32LE(e){return this.view.getUint32(e,!0)}readInt32LE(e){return this.view.getInt32(e,!0)}readBigUInt64BE(e){return this.view.getBigUint64(e,!1)}readBigInt64BE(e){return this.view.getBigInt64(e,!1)}readBigUInt64LE(e){return this.view.getBigUint64(e,!0)}readBigInt64LE(e){return this.view.getBigInt64(e,!0)}writeUInt8(e,t){this.view.setUint8(t,e)}writeInt8(e,t){this.view.setInt8(t,e)}writeUInt16BE(e,t){this.view.setUint16(t,e,!1)}writeInt16BE(e,t){this.view.setInt16(t,e,!1)}writeUInt16LE(e,t){this.view.setUint16(t,e,!0)}writeInt16LE(e,t){this.view.setInt16(t,e,!0)}writeUInt32BE(e,t){this.view.setUint32(t,e,!1)}writeInt32BE(e,t){this.view.setInt32(t,e,!1)}writeUInt32LE(e,t){this.view.setUint32(t,e,!0)}writeInt32LE(e,t){this.view.setInt32(t,e,!0)}writeBigUInt64BE(e,t){this.view.setBigUint64(t,e,!1)}writeBigInt64BE(e,t){this.view.setBigInt64(t,e,!1)}writeBigUInt64LE(e,t){this.view.setBigUint64(t,e,!0)}writeBigInt64LE(e,t){this.view.setBigInt64(t,e,!0)}readFloatBE(e){return this.view.getFloat32(e,!1)}readFloatLE(e){return this.view.getFloat32(e,!0)}writeFloatBE(e,t){this.view.setFloat32(t,e,!1)}writeFloatLE(e,t){this.view.setFloat32(t,e,!0)}copy(e,t=0,r=0,n=this.length){let o=this.data.subarray(r,n);return e.data.set(o,t),o.length}slice(e,t){let r=this.data.slice(e,t);return L.from(r)}subarray(e,t){let r=this.data.subarray(e,t);return L.from(r)}toBuffer(){return typeof Buffer<"u"&&Buffer.from?Buffer.from(this.data):this.data}static fromNodeBuffer(e){return e instanceof Uint8Array?L.from(e):L.from(new Uint8Array(e))}};b(L,"BufferCompat");I=L});var ir={};_(ir,{AudioOrderType:()=>dt,AudioTargetType:()=>ct,getAudioOrderTypeName:()=>or,isValidAudioOrderType:()=>nr});function nr(m){return m>=1&&m<=9}function or(m){switch(m){case 1:return"PlaySound";case 2:return"PlayGlobalSound";case 3:return"StopSound";case 4:return"FadeOutSound";case 5:return"PauseSound";case 6:return"ResumeSound";case 7:return"SetListenerPosition";case 8:return"ConfigureSpatial";case 9:return"SetSoundEffects";default:return`UnknownAudio(0x${m.toString(16)})`}}var dt,ct,lt=R(()=>{"use strict";dt=(d=>(d[d.PlaySound=1]="PlaySound",d[d.PlayGlobalSound=2]="PlayGlobalSound",d[d.StopSound=3]="StopSound",d[d.FadeOutSound=4]="FadeOutSound",d[d.PauseSound=5]="PauseSound",d[d.ResumeSound=6]="ResumeSound",d[d.SetListenerPosition=7]="SetListenerPosition",d[d.ConfigureSpatial=8]="ConfigureSpatial",d[d.SetSoundEffects=9]="SetSoundEffects",d))(dt||{}),ct=(r=>(r[r.InstanceId=0]="InstanceId",r[r.SoundId=1]="SoundId",r[r.All=2]="All",r))(ct||{});b(nr,"isValidAudioOrderType");b(or,"getAudioOrderTypeName")});var ar={};_(ar,{PlaySoundFlags:()=>ut,SoundEffectsFlags:()=>sr});var ut,sr,pt=R(()=>{"use strict";ut=(a=>(a[a.Loop=1]="Loop",a[a.HasVolume=2]="HasVolume",a[a.HasPitch=4]="HasPitch",a[a.HasFadeIn=8]="HasFadeIn",a[a.HasPosition=16]="HasPosition",a[a.HasLowpass=32]="HasLowpass",a[a.HasHighpass=64]="HasHighpass",a[a.HasReverb=128]="HasReverb",a))(ut||{}),sr=(r=>(r[r.HasLowpass=1]="HasLowpass",r[r.HasHighpass=2]="HasHighpass",r[r.HasReverb=4]="HasReverb",r))(sr||{})});var N={};_(N,{LoadType:()=>Ct});var Ct,D=R(()=>{"use strict";Ct=(s=>(s[s.ColorPalette=1]="ColorPalette",s[s.Sprite=2]="Sprite",s[s.MulticolorSprite=3]="MulticolorSprite",s[s.BitmapFont=4]="BitmapFont",s[s.Sound=5]="Sound",s[s.WebFont=6]="WebFont",s[s.Macro=7]="Macro",s))(Ct||{})});var Et,ze,cr=R(()=>{"use strict";Et=class Et{decode(e,t=0){this.checkSize(e,t,7);let n=t,o=e.readUInt8(n++),i=e.readUInt16BE(n);n+=2;let s=e.readUInt16BE(n);n+=2;let a=e.readUInt8(n++)+1,d=e.readUInt8(n++)+1;return{display:{id:o,originX:i,originY:s,sizeX:a,sizeY:d},bytesRead:7}}checkSize(e,t,r){if(t+r>e.length)throw new Error(`Buffer too short for display: need ${r} bytes at offset ${t}, but only ${e.length-t} bytes available`)}};b(Et,"DisplayDecoder");ze=Et});var kt,Fe,lr=R(()=>{"use strict";kt=class kt{decode(e,t=0){if(t>=e.length)throw new Error("Buffer too short to decode order type");let r=e.readUInt8(t);switch(r){case 1:return this.decodeCharOrder(e,t);case 2:return this.decodeTextOrder(e,t);case 23:return this.decodeTextMultilineOrder(e,t);case 3:return this.decodeSubFrameOrder(e,t);case 4:return this.decodeSubFrameMultiColorOrder(e,t);case 5:return this.decodeFullFrameOrder(e,t);case 6:return this.decodeFullFrameMultiColorOrder(e,t);case 7:return this.decodeSpriteOrder(e,t);case 8:return this.decodeSpriteMultiColorOrder(e,t);case 9:return this.decodeColorMapOrder(e,t);case 10:return this.decodeShapeOrder(e,t);case 11:return this.decodeDotCloudOrder(e,t);case 12:return this.decodeDotCloudMultiColorOrder(e,t);case 17:return this.decodeBitmaskOrder(e,t);case 18:return this.decodeBitmask4Order(e,t);case 24:return this.decodeBitmask16Order(e,t);case 25:return this.decodePolylineOrder(e,t);case 13:return this.decodeSpriteCloudOrder(e,t);case 14:return this.decodeSpriteCloudMultiColorOrder(e,t);case 15:return this.decodeSpriteCloudVariedOrder(e,t);case 16:return this.decodeSpriteCloudVariedMultiColorOrder(e,t);case 19:return this.decodeClearOrder(e,t);case 20:return this.decodeFillCharOrder(e,t);case 21:return this.decodeFillSpriteOrder(e,t);case 22:return this.decodeFillSpriteMultiColorOrder(e,t);case 32:return this.decodeTriggerSoundOrder(e,t);case 33:return this.decodeTriggerGlobalSoundOrder(e,t);default:throw new Error(`Unknown order type: 0x${r.toString(16)}`)}}decodeCharOrder(e,t){this.checkSize(e,t,6);let r=t;return{order:{type:1,posX:e.readUInt8(r+1),posY:e.readUInt8(r+2),charCode:e.readUInt8(r+3),bgColorCode:e.readUInt8(r+4),fgColorCode:e.readUInt8(r+5)},bytesRead:6}}decodeTextOrder(e,t){this.checkSize(e,t,5);let r=t,n=e.readUInt8(r+3);this.checkSize(e,t,5+n);let o=e.subarray(r+4,r+4+n),i=new TextDecoder().decode(o.toUint8Array());return{order:{type:2,posX:e.readUInt8(r+1),posY:e.readUInt8(r+2),text:i,bgColorCode:e.readUInt8(r+4+n),fgColorCode:e.readUInt8(r+5+n)},bytesRead:6+n}}decodeTextMultilineOrder(e,t){this.checkSize(e,t,5);let r=t,n=e.readUInt8(r+3);this.checkSize(e,t,5+n);let o=e.subarray(r+4,r+4+n),i=new TextDecoder().decode(o.toUint8Array());return{order:{type:23,posX:e.readUInt8(r+1),posY:e.readUInt8(r+2),text:i,bgColorCode:e.readUInt8(r+4+n),fgColorCode:e.readUInt8(r+5+n)},bytesRead:6+n}}decodeSubFrameOrder(e,t){this.checkSize(e,t,7);let r=t,n=e.readUInt8(r+3),o=e.readUInt8(r+4),i=n*o;this.checkSize(e,t,7+i);let s=[];for(let d=0;d<i;d++)s.push(e.readUInt8(r+7+d));return{order:{type:3,posX:e.readUInt8(r+1),posY:e.readUInt8(r+2),sizeX:n,sizeY:o,bgColorCode:e.readUInt8(r+5),fgColorCode:e.readUInt8(r+6),frame:s},bytesRead:7+i}}decodeSubFrameMultiColorOrder(e,t){this.checkSize(e,t,5);let r=t,n=e.readUInt8(r+3),o=e.readUInt8(r+4),i=n*o;this.checkSize(e,t,5+i*3);let s=[];for(let d=0;d<i;d++){let c=r+5+d*3;s.push({charCode:e.readUInt8(c),bgColorCode:e.readUInt8(c+1),fgColorCode:e.readUInt8(c+2)})}return{order:{type:4,posX:e.readUInt8(r+1),posY:e.readUInt8(r+2),sizeX:n,sizeY:o,frame:s},bytesRead:5+i*3}}decodeFullFrameOrder(e,t,r){this.checkSize(e,t,3);let n=t,o=r||e.length-t-3;this.checkSize(e,t,3+o);let i=[];for(let a=0;a<o;a++)i.push(e.readUInt8(n+3+a));return{order:{type:5,bgColorCode:e.readUInt8(n+1),fgColorCode:e.readUInt8(n+2),frame:i},bytesRead:3+o}}decodeFullFrameMultiColorOrder(e,t,r){this.checkSize(e,t,1);let n=t,o=r||Math.floor((e.length-t-1)/3);this.checkSize(e,t,1+o*3);let i=[];for(let a=0;a<o;a++){let d=n+1+a*3;i.push({charCode:e.readUInt8(d),bgColorCode:e.readUInt8(d+1),fgColorCode:e.readUInt8(d+2)})}return{order:{type:6,frame:i},bytesRead:1+o*3}}decodeSpriteOrder(e,t){this.checkSize(e,t,6);let r=t;return{order:{type:7,posX:e.readUInt8(r+1),posY:e.readUInt8(r+2),spriteIndex:e.readUInt8(r+3),bgColorCode:e.readUInt8(r+4),fgColorCode:e.readUInt8(r+5)},bytesRead:6}}decodeSpriteMultiColorOrder(e,t){this.checkSize(e,t,4);let r=t;return{order:{type:8,posX:e.readUInt8(r+1),posY:e.readUInt8(r+2),spriteIndex:e.readUInt8(r+3)},bytesRead:4}}decodeColorMapOrder(e,t){this.checkSize(e,t,5);let r=t,n=e.readUInt8(r+3),o=e.readUInt8(r+4),i=n*o;this.checkSize(e,t,5+i*2);let s=[];for(let d=0;d<i;d++){let c=r+5+d*2;s.push({bgColorCode:e.readUInt8(c),fgColorCode:e.readUInt8(c+1)})}return{order:{type:9,posX:e.readUInt8(r+1),posY:e.readUInt8(r+2),sizeX:n,sizeY:o,colorData:s},bytesRead:5+i*2}}decodeShapeOrder(e,t){this.checkSize(e,t,2);let r=t,n=e.readUInt8(r+1),{shapeData:o,bytesRead:i}=this.decodeShapeData(e,r+2,n);return{order:{type:10,shapeType:n,shapeData:o},bytesRead:2+i}}decodeShapeData(e,t,r){let n=t;switch(r){case 1:return this.checkSize(e,t,8),{shapeData:{posX:e.readUInt8(n),posY:e.readUInt8(n+1),width:e.readUInt8(n+2),height:e.readUInt8(n+3),filled:e.readUInt8(n+4)===1,charCode:e.readUInt8(n+5),bgColorCode:e.readUInt8(n+6),fgColorCode:e.readUInt8(n+7)},bytesRead:8};case 2:return this.checkSize(e,t,7),{shapeData:{centerX:e.readUInt8(n),centerY:e.readUInt8(n+1),radius:e.readUInt8(n+2),filled:e.readUInt8(n+3)===1,charCode:e.readUInt8(n+4),bgColorCode:e.readUInt8(n+5),fgColorCode:e.readUInt8(n+6)},bytesRead:7};case 3:return this.checkSize(e,t,7),{shapeData:{x1:e.readUInt8(n),y1:e.readUInt8(n+1),x2:e.readUInt8(n+2),y2:e.readUInt8(n+3),charCode:e.readUInt8(n+4),bgColorCode:e.readUInt8(n+5),fgColorCode:e.readUInt8(n+6)},bytesRead:7};case 4:return this.checkSize(e,t,8),{shapeData:{centerX:e.readUInt8(n),centerY:e.readUInt8(n+1),radiusX:e.readUInt8(n+2),radiusY:e.readUInt8(n+3),filled:e.readUInt8(n+4)===1,charCode:e.readUInt8(n+5),bgColorCode:e.readUInt8(n+6),fgColorCode:e.readUInt8(n+7)},bytesRead:8};case 5:return this.checkSize(e,t,10),{shapeData:{x1:e.readUInt8(n),y1:e.readUInt8(n+1),x2:e.readUInt8(n+2),y2:e.readUInt8(n+3),x3:e.readUInt8(n+4),y3:e.readUInt8(n+5),filled:e.readUInt8(n+6)===1,charCode:e.readUInt8(n+7),bgColorCode:e.readUInt8(n+8),fgColorCode:e.readUInt8(n+9)},bytesRead:10};default:throw new Error(`Unknown shape type: ${r}`)}}decodeDotCloudOrder(e,t){this.checkSize(e,t,6);let r=t,n=e.readUInt16BE(r+4);this.checkSize(e,t,6+n*2);let o=[];for(let s=0;s<n;s++){let a=r+6+s*2;o.push({posX:e.readUInt8(a),posY:e.readUInt8(a+1)})}return{order:{type:11,charCode:e.readUInt8(r+1),bgColorCode:e.readUInt8(r+2),fgColorCode:e.readUInt8(r+3),positions:o},bytesRead:6+n*2}}decodeDotCloudMultiColorOrder(e,t){this.checkSize(e,t,3);let r=t,n=e.readUInt16BE(r+1);this.checkSize(e,t,3+n*5);let o=[];for(let s=0;s<n;s++){let a=r+3+s*5;o.push({charCode:e.readUInt8(a),bgColorCode:e.readUInt8(a+1),fgColorCode:e.readUInt8(a+2),posX:e.readUInt8(a+3),posY:e.readUInt8(a+4)})}return{order:{type:12,dots:o},bytesRead:3+n*5}}decodeBitmaskOrder(e,t){this.checkSize(e,t,9);let r=t,n=e.readUInt8(r+3),o=e.readUInt8(r+4),i=Math.ceil(n*o/8);this.checkSize(e,t,9+i);let s=new Uint8Array(i);for(let d=0;d<i;d++)s[d]=e.readUInt8(r+9+d);return{order:{type:17,posX:e.readUInt8(r+1),posY:e.readUInt8(r+2),sizeX:n,sizeY:o,charCode:e.readUInt8(r+5),bgColorCode:e.readUInt8(r+6),fgColorCode:e.readUInt8(r+7),override:e.readUInt8(r+8)===1,mask:s},bytesRead:9+i}}decodeBitmask4Order(e,t){this.checkSize(e,t,15);let r=t,n=e.readUInt8(r+3),o=e.readUInt8(r+4),i=Math.ceil(n*o/4);this.checkSize(e,t,15+i);let s=[{charCode:e.readUInt8(r+6),bgColorCode:e.readUInt8(r+7),fgColorCode:e.readUInt8(r+8)},{charCode:e.readUInt8(r+9),bgColorCode:e.readUInt8(r+10),fgColorCode:e.readUInt8(r+11)},{charCode:e.readUInt8(r+12),bgColorCode:e.readUInt8(r+13),fgColorCode:e.readUInt8(r+14)}],a=new Uint8Array(i);for(let c=0;c<i;c++)a[c]=e.readUInt8(r+15+c);return{order:{type:18,posX:e.readUInt8(r+1),posY:e.readUInt8(r+2),sizeX:n,sizeY:o,override:e.readUInt8(r+5)===1,variants:s,mask:a},bytesRead:15+i}}decodeBitmask16Order(e,t){this.checkSize(e,t,51);let r=t,n=e.readUInt8(r+3),o=e.readUInt8(r+4),i=Math.ceil(n*o/2);this.checkSize(e,t,51+i);let s=[];for(let c=0;c<15;c++){let u=r+6+c*3;s.push({charCode:e.readUInt8(u),bgColorCode:e.readUInt8(u+1),fgColorCode:e.readUInt8(u+2)})}let a=new Uint8Array(i);for(let c=0;c<i;c++)a[c]=e.readUInt8(r+51+c);return{order:{type:24,posX:e.readUInt8(r+1),posY:e.readUInt8(r+2),sizeX:n,sizeY:o,override:e.readUInt8(r+5)===1,variants:s,mask:a},bytesRead:51+i}}decodePolylineOrder(e,t){this.checkSize(e,t,5);let r=t,n=e.readUInt8(r+4);this.checkSize(e,t,5+n*2);let o=[];for(let s=0;s<n;s++){let a=r+5+s*2;o.push({x:e.readUInt8(a),y:e.readUInt8(a+1)})}return{order:{type:25,charCode:e.readUInt8(r+1),fgColorCode:e.readUInt8(r+2),bgColorCode:e.readUInt8(r+3),points:o},bytesRead:5+n*2}}decodeSpriteCloudOrder(e,t){this.checkSize(e,t,6);let r=t,n=e.readUInt16BE(r+4);this.checkSize(e,t,6+n*2);let o=[];for(let s=0;s<n;s++){let a=r+6+s*2;o.push({posX:e.readUInt8(a),posY:e.readUInt8(a+1)})}return{order:{type:13,spriteIndex:e.readUInt8(r+1),bgColorCode:e.readUInt8(r+2),fgColorCode:e.readUInt8(r+3),positions:o},bytesRead:6+n*2}}decodeSpriteCloudMultiColorOrder(e,t){this.checkSize(e,t,4);let r=t,n=e.readUInt16BE(r+2);this.checkSize(e,t,4+n*2);let o=[];for(let s=0;s<n;s++){let a=r+4+s*2;o.push({posX:e.readUInt8(a),posY:e.readUInt8(a+1)})}return{order:{type:14,spriteIndex:e.readUInt8(r+1),positions:o},bytesRead:4+n*2}}decodeSpriteCloudVariedOrder(e,t){this.checkSize(e,t,3);let r=t,n=e.readUInt16BE(r+1);this.checkSize(e,t,3+n*5);let o=[];for(let s=0;s<n;s++){let a=r+3+s*5;o.push({spriteIndex:e.readUInt8(a),bgColorCode:e.readUInt8(a+1),fgColorCode:e.readUInt8(a+2),posX:e.readUInt8(a+3),posY:e.readUInt8(a+4)})}return{order:{type:15,sprites:o},bytesRead:3+n*5}}decodeSpriteCloudVariedMultiColorOrder(e,t){this.checkSize(e,t,3);let r=t,n=e.readUInt16BE(r+1);this.checkSize(e,t,3+n*3);let o=[];for(let s=0;s<n;s++){let a=r+3+s*3;o.push({spriteIndex:e.readUInt8(a),posX:e.readUInt8(a+1),posY:e.readUInt8(a+2)})}return{order:{type:16,sprites:o},bytesRead:3+n*3}}decodeClearOrder(e,t){this.checkSize(e,t,4);let r=t;return{order:{type:19,charCode:e.readUInt8(r+1),bgColorCode:e.readUInt8(r+2),fgColorCode:e.readUInt8(r+3)},bytesRead:4}}decodeFillCharOrder(e,t){this.checkSize(e,t,5);let r=t,n=e.readUInt8(r+1),o=e.readUInt8(r+2),i=n*o;this.checkSize(e,t,5+i);let s=[];for(let d=0;d<i;d++)s.push(e.readUInt8(r+5+d));return{order:{type:20,patternWidth:n,patternHeight:o,bgColorCode:e.readUInt8(r+3),fgColorCode:e.readUInt8(r+4),pattern:s},bytesRead:5+i}}decodeFillSpriteOrder(e,t){this.checkSize(e,t,4);let r=t;return{order:{type:21,spriteIndex:e.readUInt8(r+1),bgColorCode:e.readUInt8(r+2),fgColorCode:e.readUInt8(r+3)},bytesRead:4}}decodeFillSpriteMultiColorOrder(e,t){this.checkSize(e,t,2);let r=t;return{order:{type:22,spriteIndex:e.readUInt8(r+1)},bytesRead:2}}decodeTriggerSoundOrder(e,t){this.checkSize(e,t,5);let r=t;return{order:{type:32,posX:e.readUInt8(r+1),posY:e.readUInt8(r+2),soundId:e.readUInt8(r+3),loop:e.readUInt8(r+4)===1},bytesRead:5}}decodeTriggerGlobalSoundOrder(e,t){this.checkSize(e,t,3);let r=t;return{order:{type:33,soundId:e.readUInt8(r+1),loop:e.readUInt8(r+2)===1},bytesRead:3}}checkSize(e,t,r){if(t+r>e.length)throw new Error(`Buffer too short: need ${r} bytes at offset ${t}, but only ${e.length-t} bytes available`)}};b(kt,"OrderDecoder");Fe=kt});var Rt,Le,ur=R(()=>{"use strict";lr();Rt=class Rt{constructor(){x(this,"orderDecoder");this.orderDecoder=new Fe}decode(e,t=0){this.checkSize(e,t,13);let n=t,o=e.readUInt16BE(n);n+=2;let i=e.readUInt8(n++),s=e.readUInt8(n++),a=e.readUInt16BE(n);n+=2;let d=e.readUInt16BE(n);n+=2;let c=e.readUInt16BE(n);n+=2;let u=e.readUInt16BE(n);n+=2;let l=e.readUInt8(n++),p=[],h=n;for(let y=0;y<l;y++){let C=this.orderDecoder.decode(e,h);p.push(C.order),h+=C.bytesRead}return{layer:{id:o,updateFlags:i,zIndex:s,originX:a,originY:d,width:c,height:u,orderCount:l,orders:p},bytesRead:h-t}}checkSize(e,t,r){if(t+r>e.length)throw new Error(`Buffer too short for layer: need ${r} bytes at offset ${t}, but only ${e.length-t} bytes available`)}};b(Rt,"LayerDecoder");Le=Rt});var Bt,xe,Tt=R(()=>{"use strict";Bt=class Bt{decode(e,t=0){if(t>=e.length)throw new Error("Buffer too short to decode audio order type");let r=e.readUInt8(t);switch(r){case 1:return this.decodePlaySoundOrder(e,t);case 2:return this.decodePlayGlobalSoundOrder(e,t);case 3:return this.decodeStopSoundOrder(e,t);case 4:return this.decodeFadeOutSoundOrder(e,t);case 5:return this.decodePauseSoundOrder(e,t);case 6:return this.decodeResumeSoundOrder(e,t);case 7:return this.decodeSetListenerPositionOrder(e,t);case 8:return this.decodeConfigureSpatialOrder(e,t);case 9:return this.decodeSetSoundEffectsOrder(e,t);default:throw new Error(`Unknown audio order type: 0x${r.toString(16)}`)}}decodePlaySoundOrder(e,t){this.checkSize(e,t,5);let r=t,n=e.readUInt8(r++),o=e.readUInt8(r++),i=e.readUInt16BE(r);r+=2;let s=e.readUInt8(r++),a={type:n,soundId:o,instanceId:i,flags:s};return s&2&&(this.checkSize(e,r,1),a.volume=e.readUInt8(r++)),s&4&&(this.checkSize(e,r,1),a.pitch=e.readUInt8(r++)),s&8&&(this.checkSize(e,r,1),a.fadeIn=e.readUInt8(r++)),s&16&&(this.checkSize(e,r,4),a.posX=e.readUInt16BE(r),r+=2,a.posY=e.readUInt16BE(r),r+=2),s&32&&(this.checkSize(e,r,1),a.lowpass=e.readUInt8(r++)),s&64&&(this.checkSize(e,r,1),a.highpass=e.readUInt8(r++)),s&128&&(this.checkSize(e,r,1),a.reverb=e.readUInt8(r++)),{order:a,bytesRead:r-t}}decodePlayGlobalSoundOrder(e,t){this.checkSize(e,t,5);let r=t,n=e.readUInt8(r++),o=e.readUInt8(r++),i=e.readUInt16BE(r);r+=2;let s=e.readUInt8(r++),a={type:n,soundId:o,instanceId:i,flags:s};return s&2&&(this.checkSize(e,r,1),a.volume=e.readUInt8(r++)),s&4&&(this.checkSize(e,r,1),a.pitch=e.readUInt8(r++)),s&8&&(this.checkSize(e,r,1),a.fadeIn=e.readUInt8(r++)),s&32&&(this.checkSize(e,r,1),a.lowpass=e.readUInt8(r++)),s&64&&(this.checkSize(e,r,1),a.highpass=e.readUInt8(r++)),s&128&&(this.checkSize(e,r,1),a.reverb=e.readUInt8(r++)),{order:a,bytesRead:r-t}}decodeStopSoundOrder(e,t){this.checkSize(e,t,2);let r=t,n=e.readUInt8(r++),o=e.readUInt8(r++),i={type:n,targetType:o};return o===0?(this.checkSize(e,r,2),i.target=e.readUInt16BE(r),r+=2):o===1&&(this.checkSize(e,r,1),i.target=e.readUInt8(r++)),{order:i,bytesRead:r-t}}decodeFadeOutSoundOrder(e,t){this.checkSize(e,t,3);let r=t,n=e.readUInt8(r++),o=e.readUInt8(r++),i=e.readUInt8(r++),s={type:n,targetType:o,duration:i};return o===0?(this.checkSize(e,r,2),s.target=e.readUInt16BE(r),r+=2):o===1&&(this.checkSize(e,r,1),s.target=e.readUInt8(r++)),{order:s,bytesRead:r-t}}decodePauseSoundOrder(e,t){this.checkSize(e,t,2);let r=t,n=e.readUInt8(r++),o=e.readUInt8(r++),i={type:n,targetType:o};return o===0?(this.checkSize(e,r,2),i.target=e.readUInt16BE(r),r+=2):o===1&&(this.checkSize(e,r,1),i.target=e.readUInt8(r++)),{order:i,bytesRead:r-t}}decodeResumeSoundOrder(e,t){this.checkSize(e,t,2);let r=t,n=e.readUInt8(r++),o=e.readUInt8(r++),i={type:n,targetType:o};return o===0?(this.checkSize(e,r,2),i.target=e.readUInt16BE(r),r+=2):o===1&&(this.checkSize(e,r,1),i.target=e.readUInt8(r++)),{order:i,bytesRead:r-t}}decodeSetListenerPositionOrder(e,t){this.checkSize(e,t,5);let r=t,n=e.readUInt8(r++),o=e.readUInt16BE(r);r+=2;let i=e.readUInt16BE(r);return r+=2,{order:{type:n,x:o,y:i},bytesRead:5}}decodeConfigureSpatialOrder(e,t){this.checkSize(e,t,5);let r=t;return{order:{type:e.readUInt8(r),maxDistance:e.readUInt8(r+1),referenceDistance:e.readUInt8(r+2),rolloffFactor:e.readUInt8(r+3),panSpread:e.readUInt8(r+4)},bytesRead:5}}decodeSetSoundEffectsOrder(e,t){this.checkSize(e,t,4);let r=t,n=e.readUInt8(r++),o=e.readUInt16BE(r);r+=2;let i=e.readUInt8(r++),s={type:n,instanceId:o,flags:i};return i&1&&(this.checkSize(e,r,1),s.lowpass=e.readUInt8(r++)),i&2&&(this.checkSize(e,r,1),s.highpass=e.readUInt8(r++)),i&4&&(this.checkSize(e,r,1),s.reverb=e.readUInt8(r++)),{order:s,bytesRead:r-t}}checkSize(e,t,r){if(t+r>e.length)throw new Error(`Buffer too short for audio order: need ${r} bytes at offset ${t}, but only ${e.length-t} bytes available`)}};b(Bt,"AudioOrderDecoder");xe=Bt});var zt,Pe,pr=R(()=>{"use strict";zt=class zt{decode(e,t=0){let r=e.readUInt8(t);switch(r){case 1:return this.decodeCreateInstance(e,t);case 2:return this.decodeUpdateInstance(e,t);case 3:return this.decodeRemoveInstance(e,t);default:throw new Error(`Unknown macro order type: 0x${r.toString(16)}`)}}decodeAll(e,t,r){let n=[],o=0;for(let i=0;i<r;i++){let{order:s,bytesRead:a}=this.decode(e,t+o);n.push(s),o+=a}return{orders:n,bytesRead:o}}decodeCreateInstance(e,t){let r=t,n=e.readUInt8(t++),o=e.readUInt8(t++),i=e.readUInt8(t++),s=e.readUInt8(t++),a=e.readInt16BE(t);t+=2;let d=e.readInt16BE(t);t+=2;let c=e.readUInt8(t++),u=e.readUInt16BE(t);t+=2;let l=e.toUint8Array().subarray(t,t+u);t+=u;let p=new TextDecoder().decode(l),h=JSON.parse(p);return{order:{type:n,instanceId:o,macroId:i,layerId:s,x:a,y:d,tabIndex:c,params:h},bytesRead:t-r}}decodeUpdateInstance(e,t){let r=t,n=e.readUInt8(t++),o=e.readUInt8(t++),i=e.readUInt16BE(t);t+=2;let s=e.toUint8Array().subarray(t,t+i);t+=i;let a=new TextDecoder().decode(s),d=JSON.parse(a);return{order:{type:n,instanceId:o,params:d},bytesRead:t-r}}decodeRemoveInstance(e,t){let r=e.readUInt8(t),n=e.readUInt8(t+1);return{order:{type:r,instanceId:n},bytesRead:2}}};b(zt,"MacroOrderDecoder");Pe=zt});var mr={};_(mr,{UpdatePacketDecoder:()=>De});var Ft,De,Lt=R(()=>{"use strict";cr();ur();Tt();pr();T();Ft=class Ft{constructor(){x(this,"displayDecoder");x(this,"layerDecoder");x(this,"audioOrderDecoder");x(this,"macroOrderDecoder");this.displayDecoder=new ze,this.layerDecoder=new Le,this.audioOrderDecoder=new xe,this.macroOrderDecoder=new Pe}decode(e,t=0){let r=I.from(e);this.checkSize(r,t,13);let o=t,i=Number(r.readBigUInt64BE(o));o+=8;let s=r.readUInt8(o);o+=1;let a=[];for(let y=0;y<s;y++){let C=this.displayDecoder.decode(r,o);a.push(C.display),o+=C.bytesRead}this.checkSize(r,o,2);let d=r.readUInt16BE(o);o+=2;let c=[];for(let y=0;y<d;y++){let C=this.layerDecoder.decode(r,o);c.push(C.layer),o+=C.bytesRead}this.checkSize(r,o,1);let u=r.readUInt8(o);o+=1;let l=[];for(let y=0;y<u;y++){let C=this.audioOrderDecoder.decode(r,o);l.push(C.order),o+=C.bytesRead}this.checkSize(r,o,1);let p=r.readUInt8(o);o+=1;let h=[];for(let y=0;y<p;y++){let C=this.macroOrderDecoder.decode(r,o);h.push(C.order),o+=C.bytesRead}return{tick:i,displayCount:s,displays:a,layerCount:d,layers:c,audioOrderCount:u,audioOrders:l,macroOrderCount:p,macroOrders:h}}isValid(e,t=0){let r=I.from(e);try{return this.checkSize(r,t,13),!0}catch{return!1}}decodeHeader(e,t=0){let r=I.from(e);this.checkSize(r,t,13);let n=t,o=Number(r.readBigUInt64BE(n));n+=8;let i=r.readUInt8(n);n+=1,n+=i*7,this.checkSize(r,n,2);let s=r.readUInt16BE(n);return{tick:o,displayCount:i,layerCount:s}}checkSize(e,t,r){if(t+r>e.length)throw new Error(`Buffer too short for update packet: need ${r} bytes at offset ${t}, but only ${e.length-t} bytes available`)}};b(Ft,"UpdatePacketDecoder");De=Ft});var Pt,Ye,hr=R(()=>{"use strict";Pt=class Pt{decode(e,t=0){let r=t,n=e.readUInt8(t++);if(n!==7)throw new Error(`Expected LoadType.Macro (0x07), got 0x${n.toString(16)}`);let o=e.readUInt8(t++),i=e.readUInt16BE(t);t+=2;let s=e.toUint8Array().subarray(t,t+i);t+=i;let a=new TextDecoder().decode(s),d=JSON.parse(a);return{load:{loadType:7,macroId:o,template:d},bytesRead:t-r}}};b(Pt,"MacroLoadDecoder");Ye=Pt});var gr={};_(gr,{LoadDecoder:()=>Dt});var Yt,Dt,xr=R(()=>{"use strict";T();hr();Yt=class Yt{decode(e,t=0){let r=I.from(e);if(t>=r.length)throw new Error("Buffer too short to decode load type");let n=r.readUInt8(t);switch(n){case 1:return this.decodeColorPalette(r,t);case 2:return this.decodeSprite(r,t);case 3:return this.decodeMulticolorSprite(r,t);case 4:return this.decodeBitmapFont(r,t);case 5:return this.decodeSound(r,t);case 6:return this.decodeWebFont(r,t);case 7:return this.decodeMacro(r,t);default:throw new Error(`Unknown load type: 0x${n.toString(16)}`)}}decodeColorPalette(e,t){let r=t;this.checkSize(e,t,2,"ColorPalette header");let n=e.readUInt8(t++),o=e.readUInt8(t++);this.checkSize(e,t,o*6,`ColorPalette ${o} colors`);let i=[];for(let a=0;a<o;a++)i.push({colorId:e.readUInt8(t++),r:e.readUInt8(t++),g:e.readUInt8(t++),b:e.readUInt8(t++),a:e.readUInt8(t++),e:e.readUInt8(t++)});return{load:{loadType:1,colors:i},bytesRead:t-r}}decodeSprite(e,t){let r=t;this.checkSize(e,t,2,"Sprite header");let n=e.readUInt8(t++),o=e.readUInt8(t++),i=[];for(let a=0;a<o;a++){this.checkSize(e,t,3,`Sprite ${a} header`);let d=e.readUInt8(t++),c=e.readUInt8(t++),u=e.readUInt8(t++),l=c*u;this.checkSize(e,t,l,`Sprite ${a} data`);let p=[];for(let h=0;h<l;h++)p.push(e.readUInt8(t++));i.push({spriteId:d,sizeX:c,sizeY:u,data:p})}return{load:{loadType:2,sprites:i},bytesRead:t-r}}decodeMulticolorSprite(e,t){let r=t;this.checkSize(e,t,2,"MulticolorSprite header");let n=e.readUInt8(t++),o=e.readUInt8(t++),i=[];for(let a=0;a<o;a++){this.checkSize(e,t,3,`MulticolorSprite ${a} header`);let d=e.readUInt8(t++),c=e.readUInt8(t++),u=e.readUInt8(t++),l=c*u,p=l*3;this.checkSize(e,t,p,`MulticolorSprite ${a} data`);let h=[];for(let g=0;g<l;g++)h.push({charCode:e.readUInt8(t++),fgColorId:e.readUInt8(t++),bgColorId:e.readUInt8(t++)});i.push({spriteId:d,sizeX:c,sizeY:u,data:h})}return{load:{loadType:3,sprites:i},bytesRead:t-r}}decodeBitmapFont(e,t){let r=t;this.checkSize(e,t,7,"BitmapFont header");let n=e.readUInt8(t++),o=e.readUInt8(t++),i=e.readUInt8(t++),s=e.readUInt8(t++),a=e.readUInt8(t++),d=e.readUInt8(t++),c=e.readUInt8(t++),u=Math.ceil(i*s/8),l=[];for(let h=0;h<c;h++){this.checkSize(e,t,1+u,`BitmapFont character ${h}`);let g=e.readUInt8(t++),y=new Uint8Array(u);for(let C=0;C<u;C++)y[C]=e.readUInt8(t++);l.push({charCode:g,bitmap:y})}return{load:{loadType:4,fontId:o,width:i,height:s,cellWidth:a,cellHeight:d,characters:l},bytesRead:t-r}}decodeSound(e,t){let r=t;this.checkSize(e,t,2,"Sound header");let n=e.readUInt8(t++),o=e.readUInt8(t++),i=[];for(let a=0;a<o;a++){this.checkSize(e,t,3,`Sound ${a} header`);let d=e.readUInt8(t++),c=e.readUInt16BE(t);t+=2,this.checkSize(e,t,c,`Sound ${a} MIDI data`);let u=new Uint8Array(c);for(let l=0;l<c;l++)u[l]=e.readUInt8(t++);i.push({soundId:d,midiData:u})}return{load:{loadType:5,sounds:i},bytesRead:t-r}}checkSize(e,t,r,n){if(t+r>e.length)throw new Error(`Buffer too short for ${n}: need ${r} bytes at offset ${t}, but only ${e.length-t} bytes remaining`)}decodeWebFont(e,t){let r=t,n=new TextDecoder;this.checkSize(e,t,5,"WebFont header");let o=e.readUInt8(t++),i=e.readUInt8(t++),s=e.readUInt8(t++),a=e.readUInt8(t++);this.checkSize(e,t,a,"WebFont family string");let d=new Uint8Array(a);for(let p=0;p<a;p++)d[p]=e.readUInt8(t++);let c=n.decode(d);this.checkSize(e,t,2,"WebFont fontSize");let u=e.readUInt16BE(t);t+=2;let l={loadType:6,fontId:i,fontFamily:c,fontSize:u};if(s&1&&(this.checkSize(e,t,2,"WebFont offsetX"),l.offsetX=e.readInt16BE(t),t+=2),s&2&&(this.checkSize(e,t,2,"WebFont offsetY"),l.offsetY=e.readInt16BE(t),t+=2),s&4&&(this.checkSize(e,t,2,"WebFont charSpacing"),l.charSpacing=e.readInt16BE(t),t+=2),s&8){this.checkSize(e,t,2,"WebFont lineHeight");let p=e.readUInt16BE(t);l.lineHeight=p/100,t+=2}if(s&16){this.checkSize(e,t,1,"WebFont weight length");let p=e.readUInt8(t++);this.checkSize(e,t,p,"WebFont weight string");let h=new Uint8Array(p);for(let g=0;g<p;g++)h[g]=e.readUInt8(t++);l.fontWeight=n.decode(h)}if(s&32){this.checkSize(e,t,1,"WebFont style length");let p=e.readUInt8(t++);this.checkSize(e,t,p,"WebFont style string");let h=new Uint8Array(p);for(let g=0;g<p;g++)h[g]=e.readUInt8(t++);l.fontStyle=n.decode(h)}return{load:l,bytesRead:t-r}}decodeMacro(e,t){return new Ye().decode(e,t)}};b(Yt,"LoadDecoder");Dt=Yt});var Z={};_(Z,{LoadEncoder:()=>Xt});var Nt,Xt,G=R(()=>{"use strict";T();Nt=class Nt{encode(e){switch(e.loadType){case 1:return this.encodeColorPalette(e);case 2:return this.encodeSprite(e);case 3:return this.encodeMulticolorSprite(e);case 4:return this.encodeBitmapFont(e);case 5:return this.encodeSound(e);case 6:return this.encodeWebFont(e);default:throw new Error(`Unknown load type: ${e.loadType}`)}}encodeColorPalette(e){let t=e.colors.length;if(t>255)throw new Error(`Palette size ${t} exceeds maximum of 255`);let r=I.allocUnsafe(2+t*6),n=0;r.writeUInt8(1,n++),r.writeUInt8(t,n++);for(let o of e.colors)r.writeUInt8(o.colorId,n++),r.writeUInt8(o.r,n++),r.writeUInt8(o.g,n++),r.writeUInt8(o.b,n++),r.writeUInt8(o.a,n++),r.writeUInt8(o.e??0,n++);return r.toUint8Array()}encodeSprite(e){let t=e.sprites.length;if(t>255)throw new Error(`Sprite count ${t} exceeds maximum of 255`);let r=2;for(let i of e.sprites)r+=3,r+=i.data.length;let n=I.allocUnsafe(r),o=0;n.writeUInt8(2,o++),n.writeUInt8(t,o++);for(let i of e.sprites){if(i.data.length!==i.sizeX*i.sizeY)throw new Error(`Sprite ${i.spriteId}: data length ${i.data.length} does not match size ${i.sizeX}x${i.sizeY}`);n.writeUInt8(i.spriteId,o++),n.writeUInt8(i.sizeX,o++),n.writeUInt8(i.sizeY,o++);for(let s of i.data)n.writeUInt8(s,o++)}return n.toUint8Array()}encodeMulticolorSprite(e){let t=e.sprites.length;if(t>255)throw new Error(`Sprite count ${t} exceeds maximum of 255`);let r=2;for(let i of e.sprites)r+=3,r+=i.data.length*3;let n=I.allocUnsafe(r),o=0;n.writeUInt8(3,o++),n.writeUInt8(t,o++);for(let i of e.sprites){if(i.data.length!==i.sizeX*i.sizeY)throw new Error(`Sprite ${i.spriteId}: data length ${i.data.length} does not match size ${i.sizeX}x${i.sizeY}`);n.writeUInt8(i.spriteId,o++),n.writeUInt8(i.sizeX,o++),n.writeUInt8(i.sizeY,o++);for(let s of i.data)n.writeUInt8(s.charCode,o++),n.writeUInt8(s.fgColorId,o++),n.writeUInt8(s.bgColorId,o++)}return n.toUint8Array()}encodeBitmapFont(e){let t=e.characters.length;if(t>255)throw new Error(`Character count ${t} exceeds maximum of 255`);let r=Math.ceil(e.width*e.height/8),n=7+t*(1+r),o=I.allocUnsafe(n),i=0;o.writeUInt8(4,i++),o.writeUInt8(e.fontId,i++),o.writeUInt8(e.width,i++),o.writeUInt8(e.height,i++),o.writeUInt8(e.cellWidth,i++),o.writeUInt8(e.cellHeight,i++),o.writeUInt8(t,i++);for(let s of e.characters){if(s.bitmap.length!==r)throw new Error(`Character ${s.charCode}: bitmap size ${s.bitmap.length} does not match expected ${r} bytes`);o.writeUInt8(s.charCode,i++);for(let a=0;a<s.bitmap.length;a++)o.writeUInt8(s.bitmap[a],i++)}return o.toUint8Array()}encodeSound(e){let t=e.sounds.length;if(t>255)throw new Error(`Sound count ${t} exceeds maximum of 255`);let r=2;for(let i of e.sounds){if(i.midiData.length>65535)throw new Error(`Sound ${i.soundId}: MIDI data size ${i.midiData.length} exceeds maximum of 65535 bytes`);r+=3,r+=i.midiData.length}let n=I.allocUnsafe(r),o=0;n.writeUInt8(5,o++),n.writeUInt8(t,o++);for(let i of e.sounds){n.writeUInt8(i.soundId,o++),n.writeUInt16BE(i.midiData.length,o),o+=2;for(let s=0;s<i.midiData.length;s++)n.writeUInt8(i.midiData[s],o++)}return n.toUint8Array()}encodeWebFont(e){let t=new TextEncoder,r=t.encode(e.fontFamily),n=e.fontWeight?t.encode(e.fontWeight):new Uint8Array(0),o=e.fontStyle?t.encode(e.fontStyle):new Uint8Array(0),i=0;e.offsetX!==void 0&&(i|=1),e.offsetY!==void 0&&(i|=2),e.charSpacing!==void 0&&(i|=4),e.lineHeight!==void 0&&(i|=8),e.fontWeight!==void 0&&(i|=16),e.fontStyle!==void 0&&(i|=32);let s=4;s+=r.length,s+=2,e.offsetX!==void 0&&(s+=2),e.offsetY!==void 0&&(s+=2),e.charSpacing!==void 0&&(s+=2),e.lineHeight!==void 0&&(s+=2),e.fontWeight!==void 0&&(s+=1+n.length),e.fontStyle!==void 0&&(s+=1+o.length);let a=I.allocUnsafe(s),d=0;a.writeUInt8(6,d++),a.writeUInt8(e.fontId,d++),a.writeUInt8(i,d++),a.writeUInt8(r.length,d++);for(let c=0;c<r.length;c++)a.writeUInt8(r[c],d++);if(a.writeUInt16BE(e.fontSize,d),d+=2,e.offsetX!==void 0&&(a.writeInt16BE(e.offsetX,d),d+=2),e.offsetY!==void 0&&(a.writeInt16BE(e.offsetY,d),d+=2),e.charSpacing!==void 0&&(a.writeInt16BE(e.charSpacing,d),d+=2),e.lineHeight!==void 0&&(a.writeUInt16BE(Math.round(e.lineHeight*100),d),d+=2),e.fontWeight!==void 0){a.writeUInt8(n.length,d++);for(let c=0;c<n.length;c++)a.writeUInt8(n[c],d++)}if(e.fontStyle!==void 0){a.writeUInt8(o.length,d++);for(let c=0;c<o.length;c++)a.writeUInt8(o[c],d++)}return a.toUint8Array()}};b(Nt,"LoadEncoder");Xt=Nt});import{Vector2 as ye}from"@utsp/types";var He=class He{constructor(e=0,t=60,r=40){x(this,"id");x(this,"origin");x(this,"size");x(this,"previousOrigin",new ye(0,0));x(this,"previousSize",new ye(0,0));x(this,"toDraw",[]);if(e<0||e>255)throw new Error(`Display ID must be between 0 and 255, got ${e}`);if(t<1||t>256)throw new Error(`Display sizeX must be between 1 and 256, got ${t}`);if(r<1||r>256)throw new Error(`Display sizeY must be between 1 and 256, got ${r}`);this.id=e,this.origin=new ye(0,0),this.size=new ye(t,r),this.toDraw=new Array(this.size.x*this.size.y).fill(null).map(()=>({charCode:0,fgColorCode:0,bgColorCode:0}))}getId(){return this.id}getOrigin(){return this.origin}setOrigin(e){this.origin=e}moveOrigin(e,t){this.origin.x+=e,this.origin.y+=t}hasOriginChanged(){return this.origin.x!==this.previousOrigin.x||this.origin.y!==this.previousOrigin.y}hasSizeChanged(){return this.size.x!==this.previousSize.x||this.size.y!==this.previousSize.y}hasChanged(){return this.hasOriginChanged()||this.hasSizeChanged()}resetChangeTracking(){this.previousOrigin.x=this.origin.x,this.previousOrigin.y=this.origin.y,this.previousSize.x=this.size.x,this.previousSize.y=this.size.y}getSize(){return this.size}setSize(e){if(e.x<1||e.x>256)throw new Error(`Display sizeX must be between 1 and 256, got ${e.x}`);if(e.y<1||e.y>256)throw new Error(`Display sizeY must be between 1 and 256, got ${e.y}`);this.size=e,this.toDraw=new Array(this.size.x*this.size.y).fill(null).map(()=>({charCode:0,fgColorCode:0,bgColorCode:0}))}};b(He,"Display");var K=He;var Ce=256,Rn=65536,E=255,Bn=9,Tn=5,zn=13,Or=6,wr=6,vr=6,Mr=7,Ar=5,Er=3,kr=1,Rr=6,Br=4,Tr=5,zr=2,Fr=8,Lr=7,Pr=7,Dr=8,Yr=10,Xr=6,Nr=3,Hr=9,_r=15,Wr=51,Vr=5,$r=6,Zr=4,Gr=3,jr=3,Jr=4,qr=5,Kr=4,Qr=2,en=5,tn=3,rn=5,nn=5,Fn=2,Ln=3,Pn=2,Dn=2,Zt=5,Gt=5,Yn=4;var _e=class _e{constructor(e=65536){x(this,"data");x(this,"size");this.size=e,this.data=new Uint8Array(e*3),this.clear()}clear(){this.clearWithColor(0,255,255)}clearWithColor(e,t,r){for(let n=0;n<this.size;n++){let o=n*3;this.data[o]=e,this.data[o+1]=t,this.data[o+2]=r}}set(e,t,r,n){let o=e*3;this.data[o]=t,this.data[o+1]=r,this.data[o+2]=n}fillCharsUniform(e,t,r,n){for(let o=0;o<e.length;o++){let i=e[o]*3;this.data[i]=t,this.data[i+1]=r,this.data[i+2]=n}}get(e){let t=e*3;return{charCode:this.data[t],fgColorCode:this.data[t+1],bgColorCode:this.data[t+2]}}setCharOnly(e,t){this.data[e*3]=t}setColorsOnly(e,t,r){this.data[e*3+1]=t,this.data[e*3+2]=r}getCharCode(e){return this.data[e*3]}getFgColorCode(e){return this.data[e*3+1]}getBgColorCode(e){return this.data[e*3+2]}getRawData(){return this.data}getSize(){return this.size}};b(_e,"CellBuffer");var X=_e,We=class We{constructor(e){x(this,"data");x(this,"size");this.size=e,this.data=new Uint8Array(e)}clear(){this.data.fill(0)}set(e,t){this.data[e]=t}get(e){return this.data[e]}getRawData(){return this.data}getSize(){return this.size}};b(We,"CharCodeBuffer");var Q=We;import{Vector2 as sn}from"@utsp/types";var on=new Map([[9474,179],[9472,196],[9484,218],[9488,191],[9492,192],[9496,217],[9500,195],[9508,180],[9516,194],[9524,193],[9532,197],[9553,186],[9552,205],[9556,201],[9559,187],[9562,200],[9565,188],[9568,204],[9571,185],[9574,203],[9577,202],[9580,206],[9608,219],[9619,178],[9618,177],[9617,176],[9600,223],[9604,220],[9612,221],[9616,222]]);function ee(m){if(m<128)return m;let e=on.get(m);return e!==void 0?e:m&255}b(ee,"unicodeToCp437");var Ve=class Ve{constructor(){x(this,"currentWidth",256);x(this,"currentHeight",256)}rasterizeOrders(e,t,r,n,o="add",i){this.currentWidth=r,this.currentHeight=n,o==="set"&&this.clearBuffer(t);for(let s of e)this.rasterizeOrder(s,t,i)}clearBuffer(e){e.clear()}rasterizeOrder(e,t,r){switch(e.type){case 1:this.rasterizeChar(e,t);break;case 2:this.rasterizeText(e,t);break;case 23:this.rasterizeTextMultiline(e,t);break;case 3:this.rasterizeSubFrame(e,t);break;case 4:this.rasterizeSubFrameMultiColor(e,t);break;case 5:this.rasterizeFullFrame(e,t);break;case 6:this.rasterizeFullFrameMultiColor(e,t);break;case 7:this.rasterizeSprite(e,t,r);break;case 8:this.rasterizeSpriteMultiColor(e,t,r);break;case 9:this.rasterizeColorMap(e,t);break;case 10:this.rasterizeShape(e,t);break;case 11:this.rasterizeDotCloud(e,t);break;case 12:this.rasterizeDotCloudMultiColor(e,t);break;case 17:this.rasterizeBitmask(e,t);break;case 18:this.rasterizeBitmask4(e,t);break;case 24:this.rasterizeBitmask16(e,t);break;case 25:this.rasterizePolyline(e,t);break;case 13:this.rasterizeSpriteCloud(e,t,r);break;case 14:this.rasterizeSpriteCloudMultiColor(e,t,r);break;case 15:this.rasterizeSpriteCloudVaried(e,t,r);break;case 16:this.rasterizeSpriteCloudVariedMultiColor(e,t,r);break;case 19:this.rasterizeClear(e,t);break;case 20:this.rasterizeFillChar(e,t);break;case 21:this.rasterizeFillSprite(e,t,r);break;case 22:this.rasterizeFillSpriteMultiColor(e,t,r);break;default:break}}rasterizeChar(e,t){let{posX:r,posY:n,charCode:o,bgColorCode:i,fgColorCode:s}=e;if(!this.isInBounds(r,n))return;let a=n*this.currentWidth+r;t.set(a,o,s,i)}rasterizeText(e,t){let{posX:r,posY:n,text:o,bgColorCode:i,fgColorCode:s}=e;if(this.isInBounds(r,n))for(let a=0;a<o.length;a++){let d=r+a;if(d>=this.currentWidth)break;let c=n*this.currentWidth+d,u=o.charCodeAt(a),l=ee(u);t.set(c,l,s,i)}}rasterizeTextMultiline(e,t){let{posX:r,posY:n,text:o,bgColorCode:i,fgColorCode:s}=e,a=o.split(`
2
+ `),d=n;for(let c of a){if(d>=this.currentHeight)break;if(d>=0&&this.isInBounds(r,d))for(let u=0;u<c.length;u++){let l=r+u;if(l>=this.currentWidth)break;let p=d*this.currentWidth+l,h=c.charCodeAt(u),g=ee(h);t.set(p,g,s,i)}d++}}rasterizeSubFrame(e,t){let{posX:r,posY:n,sizeX:o,sizeY:i,frame:s,bgColorCode:a,fgColorCode:d}=e;for(let c=0;c<i;c++){let u=n+c;if(!(u<0||u>=this.currentHeight))for(let l=0;l<o;l++){let p=r+l;if(p<0||p>=this.currentWidth)continue;let h=c*o+l;if(h>=s.length)break;let g=u*this.currentWidth+p;t.set(g,s[h],d,a)}}}rasterizeSubFrameMultiColor(e,t){let{posX:r,posY:n,sizeX:o,sizeY:i,frame:s}=e;for(let a=0;a<i;a++){let d=n+a;if(!(d<0||d>=this.currentHeight))for(let c=0;c<o;c++){let u=r+c;if(u<0||u>=this.currentWidth)continue;let l=a*o+c;if(l>=s.length)break;let p=s[l],h=d*this.currentWidth+u;t.set(h,p.charCode,p.fgColorCode,p.bgColorCode)}}}rasterizeFullFrame(e,t){let{frame:r,bgColorCode:n,fgColorCode:o}=e,i=this.currentWidth*this.currentHeight;for(let s=0;s<i&&s<r.length;s++)t.set(s,r[s],o,n)}rasterizeFullFrameMultiColor(e,t){let{frame:r}=e,n=this.currentWidth*this.currentHeight;for(let o=0;o<n&&o<r.length;o++){let i=r[o];t.set(o,i.charCode,i.fgColorCode,i.bgColorCode)}}rasterizeColorMap(e,t){let{posX:r,posY:n,sizeX:o,sizeY:i,colorData:s}=e;for(let a=0;a<i;a++){let d=n+a;if(!(d<0||d>=this.currentHeight))for(let c=0;c<o;c++){let u=r+c;if(u<0||u>=this.currentWidth)continue;let l=a*o+c;if(l>=s.length)break;let p=d*this.currentWidth+u,h=s[l];t.setColorsOnly(p,h.fgColorCode,h.bgColorCode)}}}rasterizeShape(e,t){let{shapeType:r,shapeData:n}=e;switch(r){case 1:this.rasterizeRectangle(n,t);break;case 2:this.rasterizeCircle(n,t);break;case 3:this.rasterizeLine(n,t);break;case 4:this.rasterizeEllipse(n,t);break;case 5:this.rasterizeTriangle(n,t);break}}rasterizeRectangle(e,t){let{posX:r,posY:n,width:o,height:i,filled:s,charCode:a,bgColorCode:d,fgColorCode:c}=e;if(s)for(let u=0;u<i;u++){let l=n+u;if(!(l<0||l>=this.currentHeight))for(let p=0;p<o;p++){let h=r+p;if(h<0||h>=this.currentWidth)continue;let g=l*this.currentWidth+h;t.set(g,a,c,d)}}else{for(let u=0;u<o;u++)this.setCell(r+u,n,a,d,c,t),this.setCell(r+u,n+i-1,a,d,c,t);for(let u=0;u<i;u++)this.setCell(r,n+u,a,d,c,t),this.setCell(r+o-1,n+u,a,d,c,t)}}rasterizeCircle(e,t){let{centerX:r,centerY:n,radius:o,filled:i,charCode:s,bgColorCode:a,fgColorCode:d}=e;if(i)for(let c=-o;c<=o;c++){let u=n+c;if(!(u<0||u>=this.currentHeight))for(let l=-o;l<=o;l++){let p=r+l;if(!(p<0||p>=this.currentWidth)&&l*l+c*c<=o*o){let h=u*this.currentWidth+p;t.set(h,s,d,a)}}}else{let c=o,u=0,l=0;for(;c>=u;)this.setCell(r+c,n+u,s,a,d,t),this.setCell(r+u,n+c,s,a,d,t),this.setCell(r-u,n+c,s,a,d,t),this.setCell(r-c,n+u,s,a,d,t),this.setCell(r-c,n-u,s,a,d,t),this.setCell(r-u,n-c,s,a,d,t),this.setCell(r+u,n-c,s,a,d,t),this.setCell(r+c,n-u,s,a,d,t),l<=0&&(u+=1,l+=2*u+1),l>0&&(c-=1,l-=2*c+1)}}rasterizeLine(e,t){let{x1:r,y1:n,x2:o,y2:i,charCode:s,bgColorCode:a,fgColorCode:d}=e,c=Math.abs(o-r),u=Math.abs(i-n),l=r<o?1:-1,p=n<i?1:-1,h=c-u,g=r,y=n;for(;this.setCell(g,y,s,a,d,t),!(g===o&&y===i);){let C=2*h;C>-u&&(h-=u,g+=l),C<c&&(h+=c,y+=p)}}rasterizePolyline(e,t){let{charCode:r,fgColorCode:n,bgColorCode:o,points:i}=e;if(i.length<2){i.length===1&&this.setCell(i[0].x,i[0].y,r,o,n,t);return}for(let s=0;s<i.length-1;s++){let a=i[s],d=i[s+1];this.rasterizeLineSegment(a.x,a.y,d.x,d.y,r,o,n,t)}}rasterizeLineSegment(e,t,r,n,o,i,s,a){let d=Math.abs(r-e),c=Math.abs(n-t),u=e<r?1:-1,l=t<n?1:-1,p=d-c,h=e,g=t;for(;this.setCell(h,g,o,i,s,a),!(h===r&&g===n);){let y=2*p;y>-c&&(p-=c,h+=u),y<d&&(p+=d,g+=l)}}rasterizeEllipse(e,t){let{centerX:r,centerY:n,radiusX:o,radiusY:i,filled:s,charCode:a,bgColorCode:d,fgColorCode:c}=e;if(s)for(let u=-i;u<=i;u++){let l=n+u;if(!(l<0||l>=this.currentHeight))for(let p=-o;p<=o;p++){let h=r+p;if(h<0||h>=this.currentWidth)continue;if(p*p/(o*o)+u*u/(i*i)<=1){let y=l*this.currentWidth+h;t.set(y,a,c,d)}}}else{let u=Math.max(o,i)*8;for(let l=0;l<u;l++){let p=2*Math.PI*l/u,h=Math.round(r+o*Math.cos(p)),g=Math.round(n+i*Math.sin(p));this.setCell(h,g,a,d,c,t)}}}rasterizeTriangle(e,t){let{x1:r,y1:n,x2:o,y2:i,x3:s,y3:a,filled:d,charCode:c,bgColorCode:u,fgColorCode:l}=e;if(d){let p=[{x:r,y:n},{x:o,y:i},{x:s,y:a}].sort((f,w)=>f.y-w.y),[h,g,y]=p,C=b((f,w,U)=>{let k=Math.round(Math.min(w,U)),v=Math.round(Math.max(w,U));for(let F=k;F<=v;F++)if(F>=0&&F<this.currentWidth&&f>=0&&f<this.currentHeight){let Y=f*this.currentWidth+F;t.set(Y,c,l,u)}},"drawLine"),O=b((f,w,U,k,v)=>k===w?U:U+(f-w)*(v-U)/(k-w),"interpolate");for(let f=h.y;f<=g.y;f++){let w=O(f,h.y,h.x,y.y,y.x),U=O(f,h.y,h.x,g.y,g.x);C(f,w,U)}for(let f=g.y+1;f<=y.y;f++){let w=O(f,h.y,h.x,y.y,y.x),U=O(f,g.y,g.x,y.y,y.x);C(f,w,U)}}else this.drawLineSegment(r,n,o,i,c,u,l,t),this.drawLineSegment(o,i,s,a,c,u,l,t),this.drawLineSegment(s,a,r,n,c,u,l,t)}drawLineSegment(e,t,r,n,o,i,s,a){let d=Math.abs(r-e),c=Math.abs(n-t),u=e<r?1:-1,l=t<n?1:-1,p=d-c,h=e,g=t;for(;this.setCell(h,g,o,i,s,a),!(h===r&&g===n);){let y=2*p;y>-c&&(p-=c,h+=u),y<d&&(p+=d,g+=l)}}rasterizeDotCloud(e,t){let{charCode:r,bgColorCode:n,fgColorCode:o,positions:i}=e,s=t.getRawData(),a=this.currentWidth;for(let d=0;d<i.length;d++){if(i[d].posX<0||i[d].posX>=a||i[d].posY<0||i[d].posY>=this.currentHeight)continue;let c=(i[d].posY*a+i[d].posX)*3;s[c]=r,s[c+1]=o,s[c+2]=n}}rasterizeDotCloudMultiColor(e,t){let{dots:r}=e;for(let n of r)this.setCell(n.posX,n.posY,n.charCode,n.bgColorCode,n.fgColorCode,t)}rasterizeBitmask(e,t){let{posX:r,posY:n,sizeX:o,sizeY:i,charCode:s,bgColorCode:a,fgColorCode:d,override:c,mask:u}=e;for(let l=0;l<i;l++){let p=n+l;if(!(p<0||p>=this.currentHeight))for(let h=0;h<o;h++){let g=r+h;if(g<0||g>=this.currentWidth)continue;let y=l*o+h,C=Math.floor(y/8),O=y%8,f=(u[C]&1<<O)!==0,w=p*this.currentWidth+g;f?t.set(w,s,d,a):c&&t.set(w,255,255,255)}}}rasterizeBitmask4(e,t){let{posX:r,posY:n,sizeX:o,sizeY:i,override:s,variants:a,mask:d}=e;for(let c=0;c<i;c++){let u=n+c;if(!(u<0||u>=this.currentHeight))for(let l=0;l<o;l++){let p=r+l;if(p<0||p>=this.currentWidth)continue;let h=c*o+l,g=Math.floor(h/4),y=h%4*2,C=d[g]>>y&3,O=u*this.currentWidth+p;if(C>0){let f=a[C-1];t.set(O,f.charCode,f.fgColorCode,f.bgColorCode)}else s&&t.set(O,255,255,255)}}}rasterizeBitmask16(e,t){let{posX:r,posY:n,sizeX:o,sizeY:i,override:s,variants:a,mask:d}=e;for(let c=0;c<i;c++){let u=n+c;if(!(u<0||u>=this.currentHeight))for(let l=0;l<o;l++){let p=r+l;if(p<0||p>=this.currentWidth)continue;let h=c*o+l,g=Math.floor(h/2),y=h%2*4,C=d[g]>>y&15,O=u*this.currentWidth+p;if(C>0){let f=a[C-1];t.set(O,f.charCode,f.fgColorCode,f.bgColorCode)}else s&&t.set(O,255,255,255)}}}rasterizeClear(e,t){let{charCode:r,bgColorCode:n,fgColorCode:o}=e;t.clearWithColor(r,o,n)}rasterizeFillChar(e,t){let{patternWidth:r,patternHeight:n,pattern:o,bgColorCode:i,fgColorCode:s}=e;for(let a=0;a<this.currentHeight;a++)for(let d=0;d<this.currentWidth;d++){let c=d%r,l=a%n*r+c;if(l<o.length){let p=a*this.currentWidth+d;t.set(p,o[l],s,i)}}}rasterizeSprite(e,t,r){if(!r)return;let{posX:n,posY:o,spriteIndex:i,bgColorCode:s,fgColorCode:a}=e,d=r.getUnicolorSprite(i);if(!d)return;let c=d.data;for(let u=0;u<d.sizeY;u++)for(let l=0;l<d.sizeX;l++){let p=n+l,h=o+u;if(!this.isInBounds(p,h))continue;let g=u*d.sizeX+l,y=c.get(g);this.setCell(p,h,y,s,a,t)}}rasterizeSpriteMultiColor(e,t,r){if(!r)return;let{posX:n,posY:o,spriteIndex:i}=e,s=r.getMulticolorSprite(i);if(!s)return;let a=s.data;for(let d=0;d<s.sizeY;d++)for(let c=0;c<s.sizeX;c++){let u=n+c,l=o+d;if(!this.isInBounds(u,l))continue;let p=d*s.sizeX+c,h=a.getCharCode(p),g=a.getFgColorCode(p),y=a.getBgColorCode(p);this.setCell(u,l,h,y,g,t)}}rasterizeSpriteCloud(e,t,r){if(!r)return;let{spriteIndex:n,bgColorCode:o,fgColorCode:i,positions:s}=e,a=r.getUnicolorSprite(n);if(a){if(a.sizeX===1&&a.sizeY===1){let d=a.data.get(0),c=t.getRawData(),u=this.currentWidth;for(let l=0;l<s.length;l++){if(s[l].posX<0||s[l].posX>=u||s[l].posY<0||s[l].posY>=this.currentHeight)continue;let p=(s[l].posY*u+s[l].posX)*3;c[p]=d,c[p+1]=i,c[p+2]=o}return}for(let d=0;d<s.length;d++){let c=a.data;for(let u=0;u<a.sizeY;u++)for(let l=0;l<a.sizeX;l++){let p=s[d].posX+l,h=s[d].posY+u;if(!this.isInBounds(p,h))continue;let g=u*a.sizeX+l,y=c.get(g);this.setCell(p,h,y,o,i,t)}}}}rasterizeSpriteCloudMultiColor(e,t,r){if(!r)return;let{spriteIndex:n,positions:o}=e,i=r.getMulticolorSprite(n);if(i)for(let s=0;s<o.length;s++){let a=i.data;for(let d=0;d<i.sizeY;d++)for(let c=0;c<i.sizeX;c++){let u=o[s].posX+c,l=o[s].posY+d;if(!this.isInBounds(u,l))continue;let p=d*i.sizeX+c,h=a.getCharCode(p),g=a.getFgColorCode(p),y=a.getBgColorCode(p);this.setCell(u,l,h,y,g,t)}}}rasterizeSpriteCloudVaried(e,t,r){if(!r)return;let{sprites:n}=e;for(let o=0;o<n.length;o++){let i=n[o],s=r.getUnicolorSprite(i.spriteIndex);if(!s)continue;let a=s.data;for(let d=0;d<s.sizeY;d++)for(let c=0;c<s.sizeX;c++){let u=i.posX+c,l=i.posY+d;if(!this.isInBounds(u,l))continue;let p=d*s.sizeX+c,h=a.get(p);this.setCell(u,l,h,i.bgColorCode,i.fgColorCode,t)}}}rasterizeSpriteCloudVariedMultiColor(e,t,r){if(!r)return;let{sprites:n}=e;for(let o=0;o<n.length;o++){let i=n[o],s=r.getMulticolorSprite(i.spriteIndex);if(!s)continue;let a=s.data;for(let d=0;d<s.sizeY;d++)for(let c=0;c<s.sizeX;c++){let u=i.posX+c,l=i.posY+d;if(!this.isInBounds(u,l))continue;let p=d*s.sizeX+c,h=a.getCharCode(p),g=a.getFgColorCode(p),y=a.getBgColorCode(p);this.setCell(u,l,h,y,g,t)}}}rasterizeFillSprite(e,t,r){if(!r)return;let{spriteIndex:n,bgColorCode:o,fgColorCode:i}=e,s=r.getUnicolorSprite(n);if(!s)return;let a=s.data;for(let d=0;d<this.currentHeight;d++)for(let c=0;c<this.currentWidth;c++){let u=c%s.sizeX,p=d%s.sizeY*s.sizeX+u,h=a.get(p),g=d*this.currentWidth+c;t.set(g,h,i,o)}}rasterizeFillSpriteMultiColor(e,t,r){if(!r)return;let{spriteIndex:n}=e,o=r.getMulticolorSprite(n);if(!o)return;let i=o.data;for(let s=0;s<this.currentHeight;s++)for(let a=0;a<this.currentWidth;a++){let d=a%o.sizeX,u=s%o.sizeY*o.sizeX+d,l=i.getCharCode(u),p=i.getFgColorCode(u),h=i.getBgColorCode(u),g=s*this.currentWidth+a;t.set(g,l,p,h)}}setCell(e,t,r,n,o,i){if(!this.isInBounds(e,t))return;let s=t*this.currentWidth+e;i.set(s,r,o,n)}isInBounds(e,t){return e>=0&&e<this.currentWidth&&t>=0&&t<this.currentHeight}};b(Ve,"LayerRasterizer");var fe=Ve;var P=class P{constructor(e,t,r,n,o=!1){x(this,"id",0);x(this,"origin");x(this,"orders",[]);x(this,"zOrder",0);x(this,"data");x(this,"width");x(this,"height");x(this,"isStatic",!1);x(this,"spriteRegistry");x(this,"mode","server");x(this,"previousOrigin");x(this,"previousZOrder");x(this,"enabled",!0);x(this,"useSetMode",!1);x(this,"needsCommit",!1);if(r<1||r>256||n<1||n>256)throw new Error(`Layer size must be 1-256, got ${r}\xD7${n}`);this.origin=e,this.zOrder=t,this.width=r,this.height=n,this.isStatic=o,this.data=new X(r*n),this.previousOrigin=new sn(e.x,e.y),this.previousZOrder=t}setMode(e){this.mode=e}setSpriteRegistry(e){this.spriteRegistry=e}getOrders(){return this.orders}addOrders(e){this.orders.push(...e),this.useSetMode=!1,(this.mode==="client"||this.mode==="standalone")&&P.rasterizer.rasterizeOrders(e,this.data,this.width,this.height,"add",this.spriteRegistry)}addTemporaryOrders(e){(this.mode==="client"||this.mode==="standalone")&&P.rasterizer.rasterizeOrders(e,this.data,this.width,this.height,"set",this.spriteRegistry)}setOrders(e){this.orders=e,this.useSetMode=!0,(this.mode==="client"||this.mode==="standalone")&&P.rasterizer.rasterizeOrders(e,this.data,this.width,this.height,"set",this.spriteRegistry)}clearOrders(){this.orders=[],(this.mode==="client"||this.mode==="standalone")&&P.rasterizer.clearBuffer(this.data)}getOrigin(){return this.origin}setOrigin(e){this.origin=e}getZOrder(){return this.zOrder}setZOrder(e){this.zOrder=e}getId(){return this.id}setId(e){this.id=e}getData(){return this.data}getWidth(){return this.width}getHeight(){return this.height}getCellAt(e,t){return e<0||e>=this.width||t<0||t>=this.height?null:this.data.get(t*this.width+e)}setStatic(e){this.isStatic=e}getStatic(){return this.isStatic}setEnabled(e){this.enabled=e}isEnabled(){return this.enabled}hasOriginChanged(){return this.origin.x!==this.previousOrigin.x||this.origin.y!==this.previousOrigin.y}hasZOrderChanged(){return this.zOrder!==this.previousZOrder}calculateUpdateFlags(){if(!this.enabled)return 0;let e=1;return this.useSetMode&&(e|=2),this.hasOriginChanged()&&(e|=4),this.hasZOrderChanged()&&(e|=8),(this.orders.length>0||this.needsCommit&&this.useSetMode)&&(e|=4),e}resetChangeTracking(){this.previousOrigin.x=this.origin.x,this.previousOrigin.y=this.origin.y,this.previousZOrder=this.zOrder}commit(){this.needsCommit=!0}getNeedsCommit(){return this.needsCommit}resetCommit(){this.needsCommit=!1}};b(P,"Layer"),x(P,"rasterizer",new fe);var te=P;var $e=class $e{constructor(){x(this,"macros",new Map);x(this,"macroNameToId",new Map);x(this,"nextMacroId",0);x(this,"instances",new Map);x(this,"instanceNameToId",new Map);x(this,"nextInstanceId",0);x(this,"layerNameToId",new Map);x(this,"pendingOrders",[])}registerMacro(e){let t=e.id;if(this.macroNameToId.has(t)){let o=this.macroNameToId.get(t);return this.macros.set(o,{macroId:o,name:t,template:e}),o}let r=this.nextMacroId++;if(r>255)throw new Error("Maximum macro count (256) exceeded");let n={macroId:r,name:t,template:e};return this.macros.set(r,n),this.macroNameToId.set(t,r),r}getMacroByName(e){let t=this.macroNameToId.get(e);return t!==void 0?this.macros.get(t):void 0}getMacroById(e){return this.macros.get(e)}getMacroId(e){return this.macroNameToId.get(e)}toMacroLoad(e){let t=this.macros.get(e);if(t)return{loadType:7,macroId:t.macroId,template:t.template}}toAllMacroLoads(){let e=[];for(let t of this.macros.values())e.push({loadType:7,macroId:t.macroId,template:t.template});return e}setLayerMapping(e,t){this.layerNameToId.set(e,t)}createInstance(e){let t=this.macroNameToId.get(e.macro);if(t===void 0){console.warn(`MacroRegistry: Unknown macro "${e.macro}"`);return}let r=this.layerNameToId.get(e.layer);if(r===void 0){console.warn(`MacroRegistry: Unknown layer "${e.layer}"`);return}if(this.instanceNameToId.has(e.id))return console.warn(`MacroRegistry: Instance "${e.id}" already exists`),this.instanceNameToId.get(e.id);let n=this.nextInstanceId++;if(n>255)throw new Error("Maximum instance count (256) exceeded");let o={instanceId:n,name:e.id,macroId:t,layerId:r,x:e.x,y:e.y,tabIndex:e.tabIndex??0,params:e.params??{}};this.instances.set(n,o),this.instanceNameToId.set(e.id,n);let i={type:1,instanceId:n,macroId:t,layerId:r,x:e.x,y:e.y,tabIndex:e.tabIndex??0,params:e.params??{}};return this.pendingOrders.push(i),n}updateInstance(e,t){let r=this.instanceNameToId.get(e);if(r===void 0)return!1;let n=this.instances.get(r);if(!n)return!1;for(let i in t)n.params[i]=t[i];let o={type:2,instanceId:r,params:t};return this.pendingOrders.push(o),!0}removeInstance(e){let t=this.instanceNameToId.get(e);if(t===void 0)return!1;this.instances.delete(t),this.instanceNameToId.delete(e);let r={type:3,instanceId:t};return this.pendingOrders.push(r),!0}getInstanceByName(e){let t=this.instanceNameToId.get(e);return t!==void 0?this.instances.get(t):void 0}getInstanceById(e){return this.instances.get(e)}getInstanceName(e){return this.instances.get(e)?.name}flushPendingOrders(){let e=this.pendingOrders;return this.pendingOrders=[],e}hasPendingOrders(){return this.pendingOrders.length>0}getAllInstances(){return Array.from(this.instances.values())}clearInstances(){this.instances.clear(),this.instanceNameToId.clear(),this.nextInstanceId=0,this.pendingOrders=[]}clear(){this.macros.clear(),this.macroNameToId.clear(),this.nextMacroId=0,this.clearInstances()}};b($e,"MacroRegistry");var re=$e;function z(m){return typeof m=="number"?m:m.charCodeAt(0)}b(z,"toCharCode");function ne(m){return typeof m=="string"?m.charAt(0):String.fromCharCode(m)}b(ne,"toCharString");var er=(S=>(S[S.Char=1]="Char",S[S.Text=2]="Text",S[S.TextMultiline=23]="TextMultiline",S[S.SubFrame=3]="SubFrame",S[S.SubFrameMultiColor=4]="SubFrameMultiColor",S[S.FullFrame=5]="FullFrame",S[S.FullFrameMultiColor=6]="FullFrameMultiColor",S[S.Sprite=7]="Sprite",S[S.SpriteMultiColor=8]="SpriteMultiColor",S[S.ColorMap=9]="ColorMap",S[S.Shape=10]="Shape",S[S.DotCloud=11]="DotCloud",S[S.DotCloudMultiColor=12]="DotCloudMultiColor",S[S.SpriteCloud=13]="SpriteCloud",S[S.SpriteCloudMultiColor=14]="SpriteCloudMultiColor",S[S.SpriteCloudVaried=15]="SpriteCloudVaried",S[S.SpriteCloudVariedMultiColor=16]="SpriteCloudVariedMultiColor",S[S.Bitmask=17]="Bitmask",S[S.Bitmask4=18]="Bitmask4",S[S.Bitmask16=24]="Bitmask16",S[S.Polyline=25]="Polyline",S[S.Clear=19]="Clear",S[S.FillChar=20]="FillChar",S[S.FillSprite=21]="FillSprite",S[S.FillSpriteMultiColor=22]="FillSpriteMultiColor",S[S.TriggerSound=32]="TriggerSound",S[S.TriggerGlobalSound=33]="TriggerGlobalSound",S))(er||{});function un(m){return m>=1&&m<=2||m>=3&&m<=6||m>=7&&m<=8||m>=9&&m<=10||m>=11&&m<=18||m>=19&&m<=23||m===24||m===25||m>=32&&m<=33}b(un,"isValidOrderType");function pn(m){switch(m){case 1:return"Char";case 2:return"Text";case 3:return"SubFrame";case 4:return"SubFrameMultiColor";case 5:return"FullFrame";case 6:return"FullFrameMultiColor";case 7:return"Sprite";case 8:return"SpriteMultiColor";case 9:return"ColorMap";case 10:return"Shape";case 11:return"DotCloud";case 12:return"DotCloudMultiColor";case 13:return"SpriteCloud";case 14:return"SpriteCloudMultiColor";case 15:return"SpriteCloudVaried";case 16:return"SpriteCloudVariedMultiColor";case 17:return"Bitmask";case 18:return"Bitmask4";case 24:return"Bitmask16";case 25:return"Polyline";case 19:return"Clear";case 20:return"FillChar";case 21:return"FillSprite";case 22:return"FillSpriteMultiColor";case 32:return"TriggerSound";case 33:return"TriggerGlobalSound";default:return`Unknown(0x${m.toString(16)})`}}b(pn,"getOrderTypeName");var mn={single:{topLeft:"\u250C",topRight:"\u2510",bottomLeft:"\u2514",bottomRight:"\u2518",horizontal:"\u2500",vertical:"\u2502"},double:{topLeft:"\u2554",topRight:"\u2557",bottomLeft:"\u255A",bottomRight:"\u255D",horizontal:"\u2550",vertical:"\u2551"},rounded:{topLeft:"\u256D",topRight:"\u256E",bottomLeft:"\u2570",bottomRight:"\u256F",horizontal:"\u2500",vertical:"\u2502"}},Ze={update(m,e,t,r){let n,o;e.subtype==="button"&&e.button?(n=t.resolveValue(e.button.width,m.params),o=t.resolveValue(e.button.height??3,m.params)):(n=t.resolveValue(m.params.width??1,m.params),o=t.resolveValue(m.params.height??1,m.params));let i=m.isHovered;m.isHovered=hn(t.mouseX,t.mouseY,m.x,m.y,n,o);let s=m.isActive;m.isActive=m.isHovered&&t.mouseDown,s&&!m.isActive&&m.isHovered&&(r.push({instanceId:m.instanceId,event:"click"}),e.subtype==="button"&&e.button?.soundRelease!==void 0&&t.playSound?.(e.button.soundRelease)),e.subtype==="button"&&e.button&&(!i&&m.isHovered&&e.button.soundHover!==void 0&&t.playSound?.(e.button.soundHover),!s&&m.isActive&&e.button.soundClick!==void 0&&t.playSound?.(e.button.soundClick))},render(m,e,t){let r=tr(m),n=e.states[r]??e.states.normal,o={...m.params,...n},i=[];if(e.subtype==="button"&&e.button)gn(m,e,o,i,t);else if(e.base)for(let s of e.base){let a=yn(s,m.x,m.y,o,t);a&&i.push(a)}return i}};function hn(m,e,t,r,n,o){return m>=t&&m<t+n&&e>=r&&e<r+o}b(hn,"isPointInRect");function tr(m){return m.isDisabled?"disabled":m.isActive?"active":m.isHovered?"hover":m.isFocused?"focused":"normal"}b(tr,"getUIState");function oe(m){if(typeof m=="number")return Math.max(0,Math.min(255,Math.floor(m)));if(typeof m=="string"){let e=parseInt(m,10);if(!isNaN(e))return Math.max(0,Math.min(255,Math.floor(e)))}return 243}b(oe,"toColorIndex");function gn(m,e,t,r,n){let o=e.button,i=tr(m),s=e.states[i]??e.states.normal,a=n.resolveValue(o.width,t),d=n.resolveValue(o.height??3,t),c=n.resolveValue(o.label,t),u=o.border??"single",l=n.resolveValue(s.fg??15,t),p=n.resolveValue(s.bg??0,t),h=n.resolveValue(s.textFg??l,t),g=s.offsetY??0,y=m.x,C=m.y+g;u==="none"?xn(y,C,a,d,c,l,p,h,r):bn(y,C,a,d,c,l,p,h,u,r)}b(gn,"renderButton");function xn(m,e,t,r,n,o,i,s,a){if(r===1)a.push({type:2,posX:m,posY:e,text:" ".repeat(t),fgColorCode:o,bgColorCode:i});else for(let u=0;u<r;u++)a.push({type:2,posX:m,posY:e+u,text:" ".repeat(t),fgColorCode:o,bgColorCode:i});let d=m+Math.floor((t-n.length)/2),c=e+Math.floor(r/2);a.push({type:2,posX:d,posY:c,text:n,fgColorCode:s,bgColorCode:i})}b(xn,"renderButtonNoBorder");function bn(m,e,t,r,n,o,i,s,a,d){let c=mn[a];d.push({type:2,posX:m,posY:e,text:c.topLeft+c.horizontal.repeat(t-2)+c.topRight,fgColorCode:o,bgColorCode:i});for(let g=1;g<r-1;g++)d.push({type:2,posX:m,posY:e+g,text:c.vertical+" ".repeat(t-2)+c.vertical,fgColorCode:o,bgColorCode:i});d.push({type:2,posX:m,posY:e+r-1,text:c.bottomLeft+c.horizontal.repeat(t-2)+c.bottomRight,fgColorCode:o,bgColorCode:i});let u=t-2,l=r-2,p=m+1+Math.floor((u-n.length)/2),h=e+1+Math.floor(l/2);d.push({type:2,posX:p,posY:h,text:n,fgColorCode:s,bgColorCode:i})}b(bn,"renderButtonWithBorder");function yn(m,e,t,r,n){if(m.fillRect){let[o,i,s,a,d,c,u]=m.fillRect;return{type:3,posX:e+n.resolveValue(o,r),posY:t+n.resolveValue(i,r),sizeX:n.resolveValue(s,r),sizeY:n.resolveValue(a,r),fgColorCode:oe(n.resolveValue(c,r)),bgColorCode:oe(n.resolveValue(u,r)),frame:Array(n.resolveValue(s,r)*n.resolveValue(a,r)).fill(z(d))}}if(m.text){let[o,i,s,a]=m.text;return{type:2,posX:e+n.resolveValue(o,r),posY:t+n.resolveValue(i,r),text:n.resolveValue(s,r),fgColorCode:oe(n.resolveValue(a,r)),bgColorCode:255}}if(m.setCell){let[o,i,s,a,d]=m.setCell;return{type:1,posX:e+n.resolveValue(o,r),posY:t+n.resolveValue(i,r),charCode:z(n.resolveValue(s,r)),fgColorCode:oe(n.resolveValue(a,r)),bgColorCode:oe(n.resolveValue(d,r))}}return null}b(yn,"executeRenderCommand");function rr(m,e,t,r,n,o,i){return{type:"ui",instanceId:m,macroId:e,layerId:t,x:r,y:n,params:o,tabIndex:i,isHovered:!1,isFocused:!1,isActive:!1,isDisabled:!1}}b(rr,"createUIInstance");var je=class je{update(e,t,r,n){let o=t.emitter,{resolveValue:i}=r;if(!e.emitDone){if(o.burst){let s=i(o.burst,e.params);for(let a=0;a<s&&!(o.limit&&e.particles.length>=o.limit);a++)e.particles.push(this.createParticle(e,t,r));o.once&&(e.emitDone=!0)}else if(o.rate){let s=i(o.rate,e.params);for(e.timeSinceEmit+=s;e.timeSinceEmit>=1&&!(o.limit&&e.particles.length>=o.limit);)e.particles.push(this.createParticle(e,t,r)),e.timeSinceEmit-=1}}for(let s=e.particles.length-1;s>=0;s--){let a=e.particles[s];a.x+=a.vx,a.y+=a.vy,a.lifetime-=1,a.lifetime<=0&&e.particles.splice(s,1)}}render(e,t,r){if(e.particles.length===0)return[];let{resolveValue:n}=r,o=t.emitter,i=o.viewport??o.zone,s=n(i.x,e.params),a=n(i.y,e.params),d=n(i.width,e.params),c=n(i.height,e.params),u=e.x+(typeof s=="number"?s:0),l=e.y+(typeof a=="number"?a:0),p=typeof d=="number"?d:0,h=typeof c=="number"?c:0;if(p<=0||h<=0)return[];let g=[];for(let y of e.particles){let C=Math.floor(y.x),O=Math.floor(y.y);if(C<u||C>=u+p||O<l||O>=l+h)continue;let f=y.fg;if(t.particle.fade&&y.maxLifetime>0){let w=y.lifetime/y.maxLifetime;f=this.fadeColorIndex(y.fg,w)}g.push({charCode:z(y.char),fgColorCode:f,bgColorCode:y.bg??255,posX:C,posY:O})}return[{type:12,dots:g}]}createParticle(e,t,r){let{resolveValue:n,resolveRandomValue:o}=r,i=t.emitter,s=t.particle,a=n(i.zone.x,e.params),d=n(i.zone.y,e.params),c=n(i.zone.width,e.params),u=n(i.zone.height,e.params),l=e.x+a+Math.random()*c,p=e.y+d+Math.random()*u,h=0,g=0;if("x"in s.velocity&&"y"in s.velocity)h=n(s.velocity.x,e.params),g=n(s.velocity.y,e.params);else if("angle"in s.velocity&&"speed"in s.velocity){let v=o(s.velocity.angle),F=o(s.velocity.speed,e.params),Y=v*Math.PI/180;h=Math.cos(Y)*F,g=Math.sin(Y)*F}let y=o(s.lifetime),C=Array.isArray(s.char)?s.char[Math.floor(Math.random()*s.char.length)]:s.char,O=ne(C),f=Array.isArray(s.fg)?s.fg[Math.floor(Math.random()*s.fg.length)]:s.fg,w=typeof f=="number"?f:parseInt(f,10)||243,U=s.bg?Array.isArray(s.bg)?s.bg[Math.floor(Math.random()*s.bg.length)]:s.bg:void 0,k=U!==void 0?typeof U=="number"?U:parseInt(U,10)||255:void 0;return{x:l,y:p,vx:h,vy:g,char:O,fg:w,bg:k,lifetime:y,maxLifetime:y}}fadeColorIndex(e,t){return t<.1?255:e}};b(je,"ParticleHandler");var Ie=je;var Je=class Je{update(e,t,r,n){e.elapsed+=1;let o=Math.min(1,e.elapsed/e.duration),i=t.transform.decay?1-o:1,s=t.transform.offset;s&&(e.currentOffsetX=this.resolveRandomOffset(s.x,e.params,r)*i,e.currentOffsetY=this.resolveRandomOffset(s.y,e.params,r)*i),e.elapsed>=e.duration&&(n.push({instanceId:e.instanceId,event:"complete"}),r.deleteInstance(e.instanceId))}render(e,t,r){return[]}getOffset(e){return{x:e.currentOffsetX,y:e.currentOffsetY}}resolveRandomOffset(e,t,r){if(typeof e=="number")return e;if(typeof e=="string")return r.resolveValue(e,t);if(typeof e=="object"&&"random"in e){let[n,o]=e.random,i=r.resolveValue(n,t),s=r.resolveValue(o,t);return i+Math.random()*(s-i)}return 0}};b(Je,"EffectHandler");var Se=Je;var qe=class qe{constructor(){x(this,"spriteRegistry",null)}setSpriteRegistry(e){this.spriteRegistry=e}update(e,t,r,n){if(e.finished)return;if(e.delayRemaining>0){e.delayRemaining--;return}if(e.pauseRemaining>0){e.pauseRemaining--;return}let o=t.cursor?.blinkRate??15;e.blinkTimer++,e.blinkTimer>=o&&(e.blinkTimer=0,e.blinkState=!e.blinkState);let i=e.speed;if(e.direction==="reveal"){let a=Math.min(i,e.totalCells-e.revealedCount);if(t.pauseOn&&a>0){let d=e.cells[e.revealedCount];d&&t.pauseOn.chars.includes(d.char)&&(e.pauseRemaining=t.pauseOn.duration)}e.revealedCount+=a,e.revealedCount>=e.totalCells&&(e.finished=!0,n.push({instanceId:e.instanceId,event:"complete"}))}else{let a=Math.min(i,e.revealedCount);e.revealedCount-=a,e.revealedCount<=0&&(e.finished=!0,n.push({instanceId:e.instanceId,event:"complete"}))}}render(e,t,r){let n=[],o=e.cells.slice(0,e.revealedCount),i=new Map;for(let s of o)i.has(s.y)||i.set(s.y,[]),i.get(s.y).push(s);for(let[s,a]of i){a.sort((c,u)=>c.x-u.x);let d=0;for(;d<a.length;){let c=a[d],u=d+1;for(;u<a.length&&a[u].x===a[u-1].x+1&&a[u].fg===c.fg&&a[u].bg===c.bg;)u++;if(u-d===1)n.push({type:1,posX:e.x+c.x,posY:e.y+s,charCode:c.char.charCodeAt(0),fgColorCode:c.fg,bgColorCode:c.bg});else{let p="";for(let h=d;h<u;h++)p+=a[h].char;n.push({type:2,posX:e.x+c.x,posY:e.y+s,text:p,fgColorCode:c.fg,bgColorCode:c.bg})}d=u}}if(t.cursor&&!e.finished&&(!t.cursor.blink||e.blinkState)&&e.revealedCount<e.cells.length){let a=e.cells[e.revealedCount];if(a){let d=t.cursor.bg??a.bg;n.push({type:1,posX:e.x+a.x,posY:e.y+a.y,charCode:z(t.cursor.char),fgColorCode:t.cursor.fg??15,bgColorCode:d})}}return n}buildCells(e,t,r){let n=[],o=e.content;switch(o.type){case"text":{let i=r(o.text,t),s=r(o.fg??15,t),a=r(o.bg??0,t),d=i.split(`
3
+ `);for(let c=0;c<d.length;c++){let u=d[c];for(let l=0;l<u.length;l++)n.push({char:u[l],fg:s,bg:a,x:l,y:c,revealOrder:0})}break}case"sprite":{if(!this.spriteRegistry)break;let i=r(o.sprite,t);if(o.multicolor!==!1){let d=this.spriteRegistry.getMulticolorSprite(i);if(d){let{sizeX:c,sizeY:u,data:l}=d;for(let p=0;p<u;p++)for(let h=0;h<c;h++){let g=p*c+h,y=l.get(g);y.charCode!==0&&n.push({char:String.fromCharCode(y.charCode),fg:y.fgColorCode,bg:y.bgColorCode,x:h,y:p,revealOrder:0})}break}}let a=this.spriteRegistry.getUnicolorSprite(i);if(a){let{sizeX:d,sizeY:c,data:u}=a,l=r(o.fg??15,t),p=r(o.bg??0,t);for(let h=0;h<c;h++)for(let g=0;g<d;g++){let y=h*d+g,C=u.get(y);C!==0&&n.push({char:String.fromCharCode(C),fg:l,bg:p,x:g,y:h,revealOrder:0})}}break}case"cells":{for(let i of o.cells)n.push({char:ne(i.char),fg:i.fg,bg:i.bg,x:i.x,y:i.y,revealOrder:0});break}case"fill":{let i=ne(o.char),s=r(o.fg,t),a=r(o.bg,t),d=r(o.width,t),c=r(o.height,t);for(let u=0;u<c;u++)for(let l=0;l<d;l++)n.push({char:i,fg:s,bg:a,x:l,y:u,revealOrder:0});break}}return this.assignRevealOrder(n,e.pattern,e.direction),n}assignRevealOrder(e,t,r){if(e.length===0)return;let n=0,o=0;for(let a of e)a.x>n&&(n=a.x),a.y>o&&(o=a.y);let i=n+1,s=o+1;switch(t){case"typewriter":for(let a of e)a.revealOrder=a.y*i+a.x;break;case"typewriter-rev":for(let a of e)a.revealOrder=(s-1-a.y)*i+(i-1-a.x);break;case"ltr":for(let a of e)a.revealOrder=a.x*s+a.y;break;case"rtl":for(let a of e)a.revealOrder=(i-1-a.x)*s+a.y;break;case"ttb":for(let a of e)a.revealOrder=a.y;break;case"btt":for(let a of e)a.revealOrder=s-1-a.y;break;case"random":{let a=e.map((d,c)=>c);for(let d=a.length-1;d>0;d--){let c=Math.floor(Math.random()*(d+1));[a[d],a[c]]=[a[c],a[d]]}for(let d=0;d<e.length;d++)e[d].revealOrder=a[d];break}case"center-out":{let a=(i-1)/2,d=(s-1)/2;for(let c of e)c.revealOrder=Math.abs(c.x-a)+Math.abs(c.y-d);break}case"spiral":{let a=(i-1)/2,d=(s-1)/2,c=Math.max(a,d);for(let u of e){let l=Math.abs(u.x-a),p=Math.abs(u.y-d),h=Math.max(l,p);u.revealOrder=c-h+(u.y*i+u.x)*.001}break}}e.sort((a,d)=>a.revealOrder-d.revealOrder);for(let a=0;a<e.length;a++)e[a].revealOrder=a}};b(qe,"RevealHandler");var Ue=qe;var Ke=class Ke{update(e,t,r,n){let{resolveValue:o}=r,i=e.params;e.currentTick++;let s=i.point;if(s&&typeof s.x=="number"&&typeof s.y=="number"){e.points.push({x:s.x,y:s.y,addedAt:e.currentTick}),delete i.point;let d=o(t.maxPoints,i)??100;for(;e.points.length>d;)e.points.shift()}i.clear===!0&&(e.points=[],delete i.clear);let a=i.points;if(Array.isArray(a)){e.points=a.map(c=>({x:c.x,y:c.y,addedAt:e.currentTick})),delete i.points;let d=o(t.maxPoints,i)??100;for(;e.points.length>d;)e.points.shift()}}render(e,t,r){let{resolveValue:n}=r,o=e.params,i=e.points;if(i.length===0)return[];let s=n(t.char,o),a=n(t.fg,o)??15,d=n(t.bg,o)??255,c=t.closed??!1,u=t.fadeOut??!1,l=i.map(h=>({x:e.x+h.x,y:e.y+h.y}));return c&&l.length>=2&&l.push({...l[0]}),u&&i.length>=2?this.renderFadedLine(e,t,r,l,s,a,d):[{type:25,charCode:z(s),fgColorCode:a,bgColorCode:d,points:l.map(h=>({x:h.x&255,y:h.y&255}))}]}renderFadedLine(e,t,r,n,o,i,s){let a=e.params,d=t.fadeLength??n.length,c=[],u=n.length,l=Math.max(0,u-d);if(l>0){let h=n.slice(0,l+1);h.length>=2&&c.push({type:25,charCode:z(o),fgColorCode:i,bgColorCode:s,points:h.map(g=>({x:g.x&255,y:g.y&255}))})}let p=n.slice(l);if(p.length>=2){let h=Math.max(0,i-8);c.push({type:25,charCode:z(o),fgColorCode:h,bgColorCode:s,points:p.map(g=>({x:g.x&255,y:g.y&255}))})}return c}};b(Ke,"LineHandler");var Oe=Ke;var fn=!1;function W(...m){fn&&console.log("[MacroEngine]",...m)}b(W,"macroLog");var Qe=class Qe{constructor(){x(this,"templates",new Map);x(this,"instances",new Map);x(this,"spriteRegistry",null);x(this,"playSound",null);x(this,"focusedInstanceId",null);x(this,"focusableInstances",[]);x(this,"mouseX",0);x(this,"mouseY",0);x(this,"mouseDown",!1);x(this,"particleHandler",new Ie);x(this,"effectHandler",new Se);x(this,"revealHandler",new Ue);x(this,"lineHandler",new Oe);x(this,"instancesToDelete",[])}setSpriteRegistry(e){this.spriteRegistry=e,this.revealHandler.setSpriteRegistry(e)}setAudioCallback(e){this.playSound=e}createContext(){return{mouseX:this.mouseX,mouseY:this.mouseY,mouseDown:this.mouseDown,playSound:this.playSound??void 0,getTemplate:e=>this.getTemplate(e),resolveValue:(e,t)=>this.resolveValue(e,t),resolveRandomValue:(e,t)=>this.resolveRandomValue(e,t),deleteInstance:e=>{this.instancesToDelete.push(e)}}}loadTemplate(e,t){W(`loadTemplate: macroId=${e}, type=${t.type}`),this.templates.set(e,{macroId:e,template:t})}getTemplate(e){return this.templates.get(e)?.template}hasTemplate(e){return this.templates.has(e)}applyOrder(e){switch(W(`applyOrder: type=${e.type}, instanceId=${e.instanceId}`),e.type){case 1:this.createInstance(e);break;case 2:this.updateInstance(e);break;case 3:this.removeInstance(e);break}}createInstance(e){let t=this.getTemplate(e.macroId);if(!t){W(`createInstance: FAILED - template ${e.macroId} not found`);return}W(`createInstance: id=${e.instanceId}, macroId=${e.macroId}, type=${t.type}, pos=(${e.x}, ${e.y}), layer=${e.layerId}`);let r;switch(t.type){case"ui":r=rr(e.instanceId,e.macroId,e.layerId,e.x,e.y,e.params,e.tabIndex),e.tabIndex>0&&this.addToFocusableList(e.instanceId,e.tabIndex);break;case"particle":r={type:"particle",instanceId:e.instanceId,macroId:e.macroId,layerId:e.layerId,x:e.x,y:e.y,params:e.params,particles:[],timeSinceEmit:0,emitDone:!1};break;case"effect":{let n=t;r={type:"effect",instanceId:e.instanceId,macroId:e.macroId,layerId:e.layerId,x:e.x,y:e.y,params:e.params,elapsed:0,duration:this.resolveValue(n.transform.duration,e.params),currentOffsetX:0,currentOffsetY:0};break}case"reveal":{let n=t,o=this.revealHandler.buildCells(n,e.params,(a,d)=>this.resolveValue(a,d)),i=o.length,s=n.direction??"reveal";r={type:"reveal",instanceId:e.instanceId,macroId:e.macroId,layerId:e.layerId,x:e.x,y:e.y,params:e.params,cells:o,revealedCount:s==="hide"?i:0,totalCells:i,delayRemaining:n.delay??0,pauseRemaining:0,finished:!1,direction:s,speed:n.speed??1,blinkState:!0,blinkTimer:0};break}case"line":{let n=[],o=e.params.points;if(Array.isArray(o)){for(let s of o)n.push({x:s.x,y:s.y,addedAt:0});delete e.params.points}let i=e.params.point;i&&typeof i.x=="number"&&typeof i.y=="number"&&(n.push({x:i.x,y:i.y,addedAt:0}),delete e.params.point),r={type:"line",instanceId:e.instanceId,macroId:e.macroId,layerId:e.layerId,x:e.x,y:e.y,params:e.params,points:n,currentTick:0};break}default:return}r&&this.instances.set(e.instanceId,r)}updateInstance(e){let t=this.instances.get(e.instanceId);if(t)for(let r in e.params)t.params[r]=e.params[r]}removeInstance(e){let t=this.instances.get(e.instanceId);t&&(t.type==="ui"&&(this.removeFromFocusableList(e.instanceId),this.focusedInstanceId===e.instanceId&&(this.focusedInstanceId=null)),this.instances.delete(e.instanceId))}addToFocusableList(e,t){this.focusableInstances.push(e),this.focusableInstances.sort((r,n)=>{let o=this.instances.get(r),i=this.instances.get(n);return(o?.tabIndex??0)-(i?.tabIndex??0)})}removeFromFocusableList(e){let t=this.focusableInstances.indexOf(e);t!==-1&&this.focusableInstances.splice(t,1)}focusNext(){if(this.focusableInstances.length===0)return;let t=((this.focusedInstanceId!==null?this.focusableInstances.indexOf(this.focusedInstanceId):-1)+1)%this.focusableInstances.length;this.setFocus(this.focusableInstances[t])}focusPrevious(){if(this.focusableInstances.length===0)return;let t=((this.focusedInstanceId!==null?this.focusableInstances.indexOf(this.focusedInstanceId):0)-1+this.focusableInstances.length)%this.focusableInstances.length;this.setFocus(this.focusableInstances[t])}setFocus(e){if(this.focusedInstanceId!==null){let t=this.instances.get(this.focusedInstanceId);t?.type==="ui"&&(t.isFocused=!1)}if(this.focusedInstanceId=e,e!==null){let t=this.instances.get(e);t?.type==="ui"&&(t.isFocused=!0)}}updateMouse(e,t,r){this.mouseX=e,this.mouseY=t,this.mouseDown=r}estimateUISize(e,t){if(e.subtype==="button"&&e.button){let o=this.resolveValue(e.button.width,t??{}),i=this.resolveValue(e.button.height??3,t??{});return{width:o,height:i}}let r=1,n=1;if(e.base)for(let o of e.base)"w"in o&&typeof o.w=="number"&&(r=Math.max(r,o.w)),"h"in o&&typeof o.h=="number"&&(n=Math.max(n,o.h));return{width:r,height:n}}activateFocused(){if(this.focusedInstanceId===null)return;let e=this.instances.get(this.focusedInstanceId);e?.type==="ui"&&(e.isActive=!0)}update(){let e=[];this.instances.size>0&&W(`update: instances=${this.instances.size}, templates=${this.templates.size}`);let t=this.createContext();this.instancesToDelete=[];for(let n of this.instances.values()){let o=this.getTemplate(n.macroId);if(o)switch(n.type){case"ui":Ze.update(n,o,t,e);break;case"particle":this.particleHandler.update(n,o,t,e);break;case"effect":this.effectHandler.update(n,o,t,e);break;case"reveal":this.revealHandler.update(n,o,t,e);break;case"line":this.lineHandler.update(n,o,t,e);break}}for(let n of this.instancesToDelete)this.instances.delete(n);return{events:e.map(n=>({instanceId:n.instanceId,event:n.event,data:n.data}))}}getOrdersByLayer(){let e=new Map;for(let t of this.instances.values()){let r=this.renderInstance(t);r.length!==0&&(e.has(t.layerId)||e.set(t.layerId,[]),e.get(t.layerId).push(...r))}if(e.size>0){let t=0;for(let r of e.values())t+=r.length;W(`getOrdersByLayer: ${e.size} layers, ${t} total orders`)}return e}renderInstance(e){let t=this.getTemplate(e.macroId);if(!t)return[];let r=this.createContext();switch(e.type){case"ui":return Ze.render(e,t,r);case"particle":return this.particleHandler.render(e,t,r);case"effect":return this.effectHandler.render(e,t,r);case"reveal":return this.revealHandler.render(e,t,r);case"line":return this.lineHandler.render(e,t,r);default:return[]}}resolveValue(e,t){if(typeof e=="string"&&e.startsWith("$")){let r=e.slice(1);return t[r]??e}return e}resolveRandomValue(e,t){if(typeof e=="string"){let r=this.resolveValue(e,t??{});return typeof r=="number"?r:0}if(Array.isArray(e)){let[r,n]=e;return r+Math.random()*(n-r)}return e}getEffectOffset(){let e=0,t=0;for(let r of this.instances.values())r.type==="effect"&&(e+=r.currentOffsetX,t+=r.currentOffsetY);return{x:e,y:t}}getAllInstances(){return Array.from(this.instances.values())}getInstanceCount(){return this.instances.size}clear(){this.templates.clear(),this.instances.clear(),this.focusedInstanceId=null,this.focusableInstances=[]}};b(Qe,"MacroEngine");var ie=Qe;var et=class et{constructor(){x(this,"axes",new Map);x(this,"buttons",new Map);x(this,"axisNameToId",new Map);x(this,"buttonNameToId",new Map);x(this,"version",1)}defineAxis(e,t,r=[],n=-1,o=1,i=0){if(e<0||e>255)throw new Error(`Axis bindingId must be between 0 and 255, got ${e}`);if(this.axes.has(e))throw new Error(`Axis bindingId ${e} is already defined`);if(this.axisNameToId.has(t)){let a=this.axisNameToId.get(t);throw new Error(`Axis name "${t}" is already defined with bindingId ${a}`)}let s={bindingId:e,name:t,min:n,max:o,defaultValue:i,sources:r};this.axes.set(e,s),this.axisNameToId.set(t,e),this.version++}defineButton(e,t,r=[],n=!1){if(e<0||e>255)throw new Error(`Button bindingId must be between 0 and 255, got ${e}`);if(this.buttons.has(e))throw new Error(`Button bindingId ${e} is already defined`);if(this.buttonNameToId.has(t)){let i=this.buttonNameToId.get(t);throw new Error(`Button name "${t}" is already defined with bindingId ${i}`)}let o={bindingId:e,name:t,defaultValue:n,sources:r};this.buttons.set(e,o),this.buttonNameToId.set(t,e),this.version++}evaluateAxis(e,t){let r=this.axes.get(e);if(!r)return 0;let n=0;for(let i of r.sources){let a=t.get(i.sourceId)??0,d=i.deadzone??0;Math.abs(a)<d?a=0:a=(a>0?1:-1)*((Math.abs(a)-d)/(1-d));let c=i.scale??1;a*=c;let u=i.sensitivity??1;a*=u,i.invert&&(a=-a),n+=a}return Math.max(r.min,Math.min(r.max,n))}evaluateButton(e,t){let r=this.buttons.get(e);if(!r)return!1;for(let n of r.sources)if(t.get(n.sourceId)??!1)return!0;return!1}toLoadPacket(){let e={type:"input-binding",version:this.version,axes:Array.from(this.axes.values()),buttons:Array.from(this.buttons.values())};return JSON.stringify(e)}toLoadPacketObject(){return{type:"input-binding",version:this.version,axes:Array.from(this.axes.values()),buttons:Array.from(this.buttons.values())}}getAxisBindingId(e){return this.axisNameToId.get(e)??null}getButtonBindingId(e){return this.buttonNameToId.get(e)??null}getAxisName(e){return this.axes.get(e)?.name??null}getButtonName(e){return this.buttons.get(e)?.name??null}getAxisBinding(e){return this.axes.get(e)??null}getButtonBinding(e){return this.buttons.get(e)??null}hasAxis(e){return this.axes.has(e)}hasButton(e){return this.buttons.has(e)}getAxisCount(){return this.axes.size}getButtonCount(){return this.buttons.size}getAllAxes(){return Array.from(this.axes.values())}getAllButtons(){return Array.from(this.buttons.values())}getVersion(){return this.version}removeAxis(e){let t=this.axes.get(e);return t?(this.axes.delete(e),this.axisNameToId.delete(t.name),this.version++,!0):!1}removeButton(e){let t=this.buttons.get(e);return t?(this.buttons.delete(e),this.buttonNameToId.delete(t.name),this.version++,!0):!1}clearAxes(){this.axes.clear(),this.axisNameToId.clear(),this.version++}clearButtons(){this.buttons.clear(),this.buttonNameToId.clear(),this.version++}clear(){this.axes.clear(),this.axisNameToId.clear(),this.buttons.clear(),this.buttonNameToId.clear(),this.version=1}toString(){let e=`InputBindingRegistry (version ${this.version})
3
4
  `;return e+=`Axes (${this.axes.size}):
4
5
  `,this.axes.forEach(t=>{e+=` [${t.bindingId}] ${t.name}: `,e+=`${t.min} to ${t.max} (default: ${t.defaultValue})
5
6
  `}),e+=`Buttons (${this.buttons.size}):
6
7
  `,this.buttons.forEach(t=>{e+=` [${t.bindingId}] ${t.name}: `,e+=`(default: ${t.defaultValue})
7
- `}),e}};C(Be,"InputBindingRegistry");var J=Be;function ke(g=0n){return{tick:g,axes:new Map,buttons:new Map,displayId:0,mouseX:0,mouseY:0,mouseOverDisplay:!1,textInputs:[]}}C(ke,"createEmptyCompressedInputPacket");function ze(g){let e=Math.max(-1,Math.min(1,g));return Math.round(e*127)}C(ze,"encodeAxisToInt8");function Ee(g){return g/127}C(Ee,"decodeInt8ToAxis");function _(g){return g===0?0:Math.ceil(g/8)}C(_,"getButtonByteCount");function Me(g,e){let r=g,n=_(e);return 8+r+n+4}C(Me,"getCompressedPacketSize");function Fe(g,e){let t=e.getAllAxes().length,r=e.getAllButtons().length,n=_(r),o=8+t+n+4;if(g.length<o)throw new Error(`Invalid compressed input packet: expected at least ${o} bytes (${t} axes + ${r} buttons), got ${g.length}`);let i=new DataView(g.buffer,g.byteOffset,g.byteLength),s=0,a=ke();a.tick=i.getBigUint64(s,!0),s+=8;for(let u=0;u<t;u++){let c=g[s],l=c>127?c-256:c,p=Ee(l);a.axes.set(u,p),s+=1}for(let u=0;u<n;u++){let c=g[s];for(let l=0;l<8;l++){let p=u*8+l;if(p<r){let h=(c&1<<l)!==0;a.buttons.set(p,h)}}s+=1}a.displayId=g[s],s+=1,a.mouseX=g[s],s+=1,a.mouseY=g[s],s+=1;let d=g[s];if(a.mouseOverDisplay=(d&1)!==0,s+=1,s<g.length){let u=g[s];s+=1;let c=new TextDecoder;a.textInputs=[];for(let l=0;l<u&&s<g.length;l++){let p=g[s];if(s+=1,s+p<=g.length){let h=g.slice(s,s+p),m=c.decode(h);a.textInputs.push(m),s+=p}}}return a}C(Fe,"decodeCompressedInput");import{Vector2 as he}from"@utsp/types";var Re=class Re{constructor(e,t){x(this,"enabled",!1);x(this,"currentStats",null);x(this,"_userId");x(this,"_userName");this._userId=e,this._userName=t}setEnabled(e){this.enabled=e,e||(this.currentStats=null)}isEnabled(){return this.enabled}get userId(){return this.currentStats?.userId??this._userId}get userName(){return this.currentStats?.userName??this._userName}get tick(){return this.currentStats?.tick??0}get timestamp(){return this.currentStats?.timestamp??0}get displayCount(){return this.currentStats?.displayCount??0}get totalDisplayArea(){return this.currentStats?.totalDisplayArea??0}get totalLayers(){return this.currentStats?.totalLayers??0}get visibleLayers(){return this.currentStats?.visibleLayers??0}get staticLayers(){return this.currentStats?.staticLayers??0}get dynamicLayers(){return this.currentStats?.dynamicLayers??0}get totalOrders(){return this.currentStats?.totalOrders??0}get ordersByLayer(){return this.currentStats?.ordersByLayer??new Map}get staticPacketSize(){return this.currentStats?.staticPacketSize??0}get dynamicPacketSize(){return this.currentStats?.dynamicPacketSize??0}get totalPacketSize(){return this.currentStats?.totalPacketSize??0}get compressedPacketSize(){return Math.round(this.totalPacketSize*.25)}get hasInput(){return this.currentStats?.hasInput??!1}get axisCount(){return this.currentStats?.axisCount??0}get buttonCount(){return this.currentStats?.buttonCount??0}startTick(e){this.enabled&&(this.currentStats={userId:this._userId,userName:this._userName,tick:e,timestamp:Date.now(),displayCount:0,totalDisplayArea:0,totalLayers:0,visibleLayers:0,staticLayers:0,dynamicLayers:0,totalOrders:0,ordersByLayer:new Map,staticPacketSize:0,dynamicPacketSize:0,totalPacketSize:0,hasInput:!1,axisCount:0,buttonCount:0})}recordDisplays(e,t){!this.enabled||!this.currentStats||(this.currentStats.displayCount=e,this.currentStats.totalDisplayArea=t)}recordLayers(e,t,r,n){!this.enabled||!this.currentStats||(this.currentStats.totalLayers=e,this.currentStats.visibleLayers=t,this.currentStats.staticLayers=r,this.currentStats.dynamicLayers=n)}recordLayerOrders(e,t){!this.enabled||!this.currentStats||(this.currentStats.totalOrders+=t,this.currentStats.ordersByLayer.set(e,t))}recordPacketSizes(e,t){!this.enabled||!this.currentStats||(this.currentStats.staticPacketSize=e,this.currentStats.dynamicPacketSize=t,this.currentStats.totalPacketSize=e+t)}recordInput(e,t,r){!this.enabled||!this.currentStats||(this.currentStats.hasInput=e,this.currentStats.axisCount=t,this.currentStats.buttonCount=r)}endTick(){}reset(){this.currentStats=null}};C(Re,"UserStats");var Q=Re;var Ye=class Ye{constructor(e,t,r){this.id=e;this.name=t;x(this,"displays",[]);x(this,"layers",[]);x(this,"spriteRegistry");x(this,"mode");x(this,"axes",new Map);x(this,"buttons",new Map);x(this,"textInputs",[]);x(this,"mouseX",0);x(this,"mouseY",0);x(this,"mouseOver",!1);x(this,"mouseDisplayId",0);x(this,"touchPositions",new Map);x(this,"activeTouchId",null);x(this,"inputBindings",new J);x(this,"stats");x(this,"soundCommands",[]);x(this,"nextSoundInstanceId",1);x(this,"audioConfigCommands",[]);x(this,"lastListenerX",-1);x(this,"lastListenerY",-1);x(this,"pendingSendSounds",!1);x(this,"audioProcessor");x(this,"loadedSounds",new Map);x(this,"soundLoadErrors",new Map);x(this,"playingSounds",new Map);x(this,"data");this.mode=r,this.stats=new Q(e,t),this.data={}}setSpriteRegistry(e){this.spriteRegistry=e;for(let t of this.layers)t.setSpriteRegistry(e)}getDisplays(){return this.displays}addDisplay(e){this.displays.push(e)}removeDisplay(e){let t=this.displays.indexOf(e);return t!==-1?(this.displays.splice(t,1),!0):!1}clearDisplays(){this.displays=[]}getLayers(){return this.layers}addLayer(e){e.setMode(this.mode),this.layers.push(e),this.spriteRegistry&&e.setSpriteRegistry(this.spriteRegistry)}removeLayer(e){let t=this.layers.indexOf(e);return t!==-1?(this.layers.splice(t,1),!0):!1}clearLayers(){this.layers=[]}setMousePosition(e,t,r=!0){this.mouseX=Math.max(0,Math.min(255,e)),this.mouseY=Math.max(0,Math.min(255,t)),this.mouseOver=r}setTouchPosition(e,t,r,n=!0,o=0){if(e<0||e>9){console.warn(`Invalid touchId ${e}, must be 0-9`);return}n?(this.touchPositions.set(e,{x:Math.max(0,Math.min(255,t)),y:Math.max(0,Math.min(255,r)),over:!0,displayId:o}),this.activeTouchId=e):(this.touchPositions.delete(e),this.activeTouchId===e&&(this.activeTouchId=null))}setAxis(e,t){let r=Math.max(-1,Math.min(1,t));this.axes.set(e,r)}getAxis(e){return this.axes.get(e)??0}setButton(e,t){this.buttons.set(e,t)}getButton(e){return this.buttons.get(e)??!1}getButtonJustPressed(e){let t=`${e}_justPressed`;return this.buttons.get(t)??!1}getButtonJustReleased(e){let t=`${e}_justReleased`;return this.buttons.get(t)??!1}setTextInputs(e){this.textInputs=e}getTextInputs(){return this.textInputs}clearTextInputs(){this.textInputs=[]}getAxisNames(){return Array.from(this.axes.keys())}getButtonNames(){return Array.from(this.buttons.keys())}clearAxes(){this.axes.clear()}clearButtons(){this.buttons.clear()}getMouseDisplayInfo(){if(!this.mouseOver||this.displays.length===0)return null;let e=this.displays[0],t=0,r=this.mouseX,n=this.mouseY,o=e.getOrigin(),i=o.x+r,s=o.y+n;return{displayId:t,localX:r,localY:n,worldX:i,worldY:s}}getTouchDisplayInfo(e=0){if(e<0||e>9)return console.warn(`Invalid touchId ${e}, must be 0-9`),null;let t=this.touchPositions.get(e);if(!t||!t.over||this.displays.length===0)return null;let r=this.displays[0],n=t.displayId,o=t.x,i=t.y,s=r.getOrigin(),a=s.x+o,d=s.y+i;return{displayId:n,localX:o,localY:i,worldX:a,worldY:d}}getIsMouseOnADisplay(){return this.mouseOver}getMouseDisplayHover(){let e=this.getMouseDisplayInfo();return e?e.displayId:null}findLayerById(e){return this.layers.find(t=>t.getId()===e)??null}applyUpdate(e){this.updateDisplaysFromPacket(e.displays),this.updateLayersFromPacket(e.layers)}updateDisplaysFromPacket(e){for(let t of e){let r=this.displays[t.id];if(!r){for(r=new G(t.id,t.sizeX,t.sizeY);this.displays.length<=t.id;)this.displays.push(null);this.displays[t.id]=r}r.setOrigin(new he(t.originX,t.originY)),r.setSize(new he(t.sizeX,t.sizeY))}}updateLayersFromPacket(e){for(let t of e){let r=this.findLayerById(t.id);r||(r=new K(new he(t.originX,t.originY),t.zIndex,t.width,t.height,!1),r.setId(t.id),r.setMode(this.mode),this.spriteRegistry&&r.setSpriteRegistry(this.spriteRegistry),this.addLayer(r)),t.updateFlags&1&&r.setOrigin(new he(t.originX,t.originY)),t.updateFlags&2&&r.setZOrder(t.zIndex),t.updateFlags&4&&r.setOrders(t.orders)}}defineAxisBinding(e,t,r=[],n=-1,o=1,i=0){this.inputBindings.defineAxis(e,t,r,n,o,i)}defineButtonBinding(e,t,r=[],n=!1){this.inputBindings.defineButton(e,t,r,n)}defineAxisBindings(e){e.forEach(({bindingId:t,name:r,sources:n,min:o,max:i,defaultValue:s})=>{this.defineAxisBinding(t,r,n??[],o,i,s)})}defineButtonBindings(e){e.forEach(({bindingId:t,name:r,sources:n,defaultValue:o})=>{this.defineButtonBinding(t,r,n??[],o)})}getInputBindingsLoadPacket(){return this.inputBindings.toLoadPacket()}applyInputBindingsLoadPacket(e){try{let t=JSON.parse(e);if(t.type!=="input-binding")throw new Error(`Invalid packet type: ${t.type}`);for(let r of t.axes)this.defineAxisBinding(r.bindingId,r.name,r.sources||[],r.min,r.max,r.defaultValue);for(let r of t.buttons)this.defineButtonBinding(r.bindingId,r.name,r.sources||[],r.defaultValue)}catch(t){throw console.error("[User] Failed to apply input bindings:",t),t}}getInputBindingRegistry(){return this.inputBindings}getStats(){return this.stats}getAxisBindingId(e){return this.inputBindings.getAxisBindingId(e)}getButtonBindingId(e){return this.inputBindings.getButtonBindingId(e)}decodeAndApplyCompressedInput(e){let t=Fe(e,this.inputBindings),r=this.inputBindings.getAllAxes(),n=this.inputBindings.getAllButtons(),o=r.sort((s,a)=>s.bindingId-a.bindingId),i=n.sort((s,a)=>s.bindingId-a.bindingId);for(let[s,a]of t.axes)if(s<o.length){let d=o[s];this.setAxis(d.name,a)}for(let[s,a]of t.buttons)if(s<i.length){let d=i[s];this.setButton(d.name,a)}this.mouseX=t.mouseX,this.mouseY=t.mouseY,this.mouseOver=t.mouseOverDisplay,this.mouseDisplayId=t.displayId}playSound(e,t){let r=this.nextSoundInstanceId++,n={sound:e,instanceId:r,volume:t?.volume,pitch:t?.pitch,loop:t?.loop,fadeIn:t?.fadeIn,x:t?.x,y:t?.y,lowpass:t?.lowpass,highpass:t?.highpass,reverb:t?.reverb};return this.soundCommands.push(n),r}stopSound(e){let t={sound:e};this.soundCommands.push(t)}fadeOutSound(e,t){let r={fadeOut:!0,sound:e,duration:t};this.soundCommands.push(r)}fadeOutAllSounds(e){let t={fadeOut:!0,sound:"all",duration:e};this.soundCommands.push(t)}stopAllSounds(){let e={sound:"all"};this.soundCommands.push(e)}pauseSound(e){let t={pause:!0,sound:e};this.soundCommands.push(t)}pauseAllSounds(){let e={pause:!0,sound:"all"};this.soundCommands.push(e)}resumeSound(e){let t={resume:!0,sound:e};this.soundCommands.push(t)}resumeAllSounds(){let e={resume:!0,sound:"all"};this.soundCommands.push(e)}setSoundEffects(e,t){let r={setEffects:!0,instanceId:e,lowpass:t.lowpass,highpass:t.highpass,reverb:t.reverb};this.soundCommands.push(r)}setListenerPosition(e,t){e===this.lastListenerX&&t===this.lastListenerY||(this.lastListenerX=e,this.lastListenerY=t,this.audioConfigCommands.push({type:"set-listener-position",x:e,y:t}))}configureSpatialAudio(e){this.audioConfigCommands.push({type:"configure-spatial",...e})}flushAudioConfigCommands(){let e=this.audioConfigCommands;return this.audioConfigCommands=[],e}hasAudioConfigCommands(){return this.audioConfigCommands.length>0}flushSoundCommands(){let e=this.soundCommands;return this.soundCommands=[],e}hasSoundCommands(){return this.soundCommands.length>0}sendSounds(){this.pendingSendSounds=!0}needsSendSounds(){return this.pendingSendSounds}clearSendSounds(){this.pendingSendSounds=!1}setAudioProcessor(e){this.audioProcessor=e}getAudioProcessor(){return this.audioProcessor}applyAudioCommands(e){if(this.audioProcessor&&this.mode!=="server")for(let t of e){if("setEffects"in t&&t.setEffects===!0){let n=t;this.audioProcessor.setEffects(n.instanceId,n.lowpass,n.highpass,n.reverb);continue}if("fadeOut"in t&&t.fadeOut===!0){let n=t;this.audioProcessor.fadeOut(n.sound,n.duration);continue}if("pause"in t&&t.pause===!0){let n=t;this.audioProcessor.pause(n.sound);continue}if("resume"in t&&t.resume===!0){let n=t;this.audioProcessor.resume(n.sound);continue}if("instanceId"in t||"volume"in t||"pitch"in t||"loop"in t||"fadeIn"in t||"x"in t||"y"in t||"lowpass"in t||"highpass"in t||"reverb"in t){let n=t,o=n.x!==void 0&&n.y!==void 0?{x:n.x,y:n.y}:void 0;this.audioProcessor.play(n.sound,{volume:n.volume,pitch:n.pitch,loop:n.loop,fadeIn:n.fadeIn,position:o,instanceId:n.instanceId,lowpass:n.lowpass,highpass:n.highpass,reverb:n.reverb})}else{let n=t;n.sound==="all"?this.audioProcessor.stopAll():this.audioProcessor.stop(n.sound)}}}applyAudioConfigCommands(e){if(this.audioProcessor&&this.mode!=="server")for(let t of e)t.type==="set-listener-position"?this.audioProcessor.setListenerPosition(t.x,t.y):t.type==="configure-spatial"&&this.audioProcessor.configureSpatial({maxDistance:t.maxDistance,referenceDistance:t.referenceDistance,rolloffFactor:t.rolloffFactor,panSpread:t.panSpread})}applyAudioOrders(e){if(!this.audioProcessor||this.mode==="server")return;let{AudioOrderType:t,AudioTargetType:r}=(Te(),z(St)),{PlaySoundFlags:n}=(Xe(),z(ft));for(let o of e)switch(o.type){case t.PlaySound:case t.PlayGlobalSound:{let i=o,s=i.volume!==void 0?i.volume/255:void 0,a=i.pitch!==void 0?.25*Math.pow(2,i.pitch/64):void 0,d=i.fadeIn!==void 0?i.fadeIn/10:void 0,u=(i.flags&n.Loop)!==0,c=i.posX!==void 0&&i.posY!==void 0?{x:i.posX,y:i.posY}:void 0;this.audioProcessor.play(i.soundId,{volume:s,pitch:a,loop:u,fadeIn:d,position:c,instanceId:i.instanceId,lowpass:i.lowpass,highpass:i.highpass,reverb:i.reverb});break}case t.StopSound:{let i=o;i.targetType===r.All?this.audioProcessor.stopAll():i.targetType===r.InstanceId?this.audioProcessor.stop(i.target):this.audioProcessor.stop(i.target);break}case t.FadeOutSound:{let i=o,s=i.duration/10;i.targetType===r.All?this.audioProcessor.fadeOut("all",s):this.audioProcessor.fadeOut(i.target,s);break}case t.PauseSound:{let i=o;i.targetType===r.All?this.audioProcessor.pause("all"):this.audioProcessor.pause(i.target);break}case t.ResumeSound:{let i=o;i.targetType===r.All?this.audioProcessor.resume("all"):this.audioProcessor.resume(i.target);break}case t.SetListenerPosition:{let i=o;this.audioProcessor.setListenerPosition(i.x,i.y);break}case t.ConfigureSpatial:{let i=o;this.audioProcessor.configureSpatial({maxDistance:i.maxDistance*100,referenceDistance:i.referenceDistance*100,rolloffFactor:i.rolloffFactor/100,panSpread:i.panSpread/255});break}case t.SetSoundEffects:{let i=o;this.audioProcessor.setEffects(i.instanceId,i.lowpass,i.highpass,i.reverb);break}}}handleAudioAck(e){switch(e.type){case"sound-loaded":this.loadedSounds.set(e.soundId,{name:e.name,loadedAt:Date.now()}),this.soundLoadErrors.delete(e.soundId);break;case"sound-error":this.soundLoadErrors.set(e.soundId,{name:e.name,error:e.error,at:Date.now()});break;case"playback-started":this.playingSounds.set(e.instanceId,{soundId:e.soundId,startedAt:Date.now()});break;case"playback-ended":this.playingSounds.delete(e.instanceId);break;case"playback-error":e.instanceId!==void 0&&this.playingSounds.delete(e.instanceId);break}}isSoundLoaded(e){return this.loadedSounds.has(e)}getSoundLoadError(e){return this.soundLoadErrors.get(e)?.error}getLoadedSounds(){return this.loadedSounds}getSoundLoadErrors(){return this.soundLoadErrors}isSoundPlaying(e){return this.playingSounds.has(e)}getPlayingSounds(){return this.playingSounds}getPlayingSoundCount(){return this.playingSounds.size}};C(Ye,"User");var ee=Ye;R();var _e=class _e{encode(e){switch(e.type){case 1:return this.encodeCharOrder(e);case 2:return this.encodeTextOrder(e);case 23:return this.encodeTextMultilineOrder(e);case 3:return this.encodeSubFrameOrder(e);case 4:return this.encodeSubFrameMultiColorOrder(e);case 5:return this.encodeFullFrameOrder(e);case 6:return this.encodeFullFrameMultiColorOrder(e);case 7:return this.encodeSpriteOrder(e);case 8:return this.encodeSpriteMultiColorOrder(e);case 9:return this.encodeColorMapOrder(e);case 10:return this.encodeShapeOrder(e);case 11:return this.encodeDotCloudOrder(e);case 12:return this.encodeDotCloudMultiColorOrder(e);case 17:return this.encodeBitmaskOrder(e);case 18:return this.encodeBitmask4Order(e);case 24:return this.encodeBitmask16Order(e);case 13:return this.encodeSpriteCloudOrder(e);case 14:return this.encodeSpriteCloudMultiColorOrder(e);case 15:return this.encodeSpriteCloudVariedOrder(e);case 16:return this.encodeSpriteCloudVariedMultiColorOrder(e);case 19:return this.encodeClearOrder(e);case 20:return this.encodeFillCharOrder(e);case 21:return this.encodeFillSpriteOrder(e);case 22:return this.encodeFillSpriteMultiColorOrder(e);case 32:return this.encodeTriggerSoundOrder(e);case 33:return this.encodeTriggerGlobalSoundOrder(e);default:throw new Error(`Unknown order type: ${e.type}`)}}encodeCharOrder(e){let t=S.allocUnsafe(6),r=0;return t.writeUInt8(e.type,r++),t.writeUInt8(e.posX,r++),t.writeUInt8(e.posY,r++),t.writeUInt8(e.charCode,r++),t.writeUInt8(e.bgColorCode,r++),t.writeUInt8(e.fgColorCode,r++),t.toUint8Array()}encodeTextOrder(e){let t=new TextEncoder().encode(e.text),r=S.allocUnsafe(6+t.length),n=0;r.writeUInt8(e.type,n++),r.writeUInt8(e.posX,n++),r.writeUInt8(e.posY,n++),r.writeUInt8(t.length,n++);for(let o=0;o<t.length;o++)r.writeUInt8(t[o],n++);return r.writeUInt8(e.bgColorCode,n++),r.writeUInt8(e.fgColorCode,n++),r.toUint8Array()}encodeTextMultilineOrder(e){let t=new TextEncoder().encode(e.text),r=S.allocUnsafe(6+t.length),n=0;r.writeUInt8(e.type,n++),r.writeUInt8(e.posX,n++),r.writeUInt8(e.posY,n++),r.writeUInt8(t.length,n++);for(let o=0;o<t.length;o++)r.writeUInt8(t[o],n++);return r.writeUInt8(e.bgColorCode,n++),r.writeUInt8(e.fgColorCode,n++),r.toUint8Array()}encodeSubFrameOrder(e){let t=e.sizeX*e.sizeY,r=S.allocUnsafe(7+t),n=0;r.writeUInt8(e.type,n++),r.writeUInt8(e.posX,n++),r.writeUInt8(e.posY,n++),r.writeUInt8(e.sizeX,n++),r.writeUInt8(e.sizeY,n++),r.writeUInt8(e.bgColorCode,n++),r.writeUInt8(e.fgColorCode,n++);for(let o of e.frame)r.writeUInt8(o,n++);return r.toUint8Array()}encodeSubFrameMultiColorOrder(e){let t=e.sizeX*e.sizeY,r=S.allocUnsafe(5+t*3),n=0;r.writeUInt8(e.type,n++),r.writeUInt8(e.posX,n++),r.writeUInt8(e.posY,n++),r.writeUInt8(e.sizeX,n++),r.writeUInt8(e.sizeY,n++);for(let o of e.frame)r.writeUInt8(o.charCode,n++),r.writeUInt8(o.bgColorCode,n++),r.writeUInt8(o.fgColorCode,n++);return r.toUint8Array()}encodeFullFrameOrder(e){let t=e.frame.length,r=S.allocUnsafe(3+t),n=0;r.writeUInt8(e.type,n++),r.writeUInt8(e.bgColorCode,n++),r.writeUInt8(e.fgColorCode,n++);for(let o of e.frame)r.writeUInt8(o,n++);return r.toUint8Array()}encodeFullFrameMultiColorOrder(e){let t=e.frame.length,r=S.allocUnsafe(1+t*3),n=0;r.writeUInt8(e.type,n++);for(let o of e.frame)r.writeUInt8(o.charCode,n++),r.writeUInt8(o.bgColorCode,n++),r.writeUInt8(o.fgColorCode,n++);return r.toUint8Array()}encodeSpriteOrder(e){let t=S.allocUnsafe(6),r=0;return t.writeUInt8(e.type,r++),t.writeUInt8(e.posX,r++),t.writeUInt8(e.posY,r++),t.writeUInt8(e.spriteIndex,r++),t.writeUInt8(e.bgColorCode,r++),t.writeUInt8(e.fgColorCode,r++),t.toUint8Array()}encodeSpriteMultiColorOrder(e){let t=S.allocUnsafe(4),r=0;return t.writeUInt8(e.type,r++),t.writeUInt8(e.posX,r++),t.writeUInt8(e.posY,r++),t.writeUInt8(e.spriteIndex,r++),t.toUint8Array()}encodeColorMapOrder(e){let t=e.sizeX*e.sizeY,r=S.allocUnsafe(5+t*2),n=0;r.writeUInt8(e.type,n++),r.writeUInt8(e.posX,n++),r.writeUInt8(e.posY,n++),r.writeUInt8(e.sizeX,n++),r.writeUInt8(e.sizeY,n++);for(let o of e.colorData)r.writeUInt8(o.bgColorCode,n++),r.writeUInt8(o.fgColorCode,n++);return r.toUint8Array()}encodeShapeOrder(e){let t=this.encodeShapeData(e.shapeType,e.shapeData),r=S.allocUnsafe(2+t.length),n=0;r.writeUInt8(e.type,n++),r.writeUInt8(e.shapeType,n++);for(let o=0;o<t.length;o++)r.writeUInt8(t[o],n++);return r.toUint8Array()}encodeShapeData(e,t){switch(e){case 1:{let r=S.allocUnsafe(8),n=0;return r.writeUInt8(t.posX,n++),r.writeUInt8(t.posY,n++),r.writeUInt8(t.width,n++),r.writeUInt8(t.height,n++),r.writeUInt8(t.filled?1:0,n++),r.writeUInt8(t.charCode,n++),r.writeUInt8(t.bgColorCode,n++),r.writeUInt8(t.fgColorCode,n++),r.toUint8Array()}case 2:{let r=S.allocUnsafe(7),n=0;return r.writeUInt8(t.centerX,n++),r.writeUInt8(t.centerY,n++),r.writeUInt8(t.radius,n++),r.writeUInt8(t.filled?1:0,n++),r.writeUInt8(t.charCode,n++),r.writeUInt8(t.bgColorCode,n++),r.writeUInt8(t.fgColorCode,n++),r.toUint8Array()}case 3:{let r=S.allocUnsafe(7),n=0;return r.writeUInt8(t.x1,n++),r.writeUInt8(t.y1,n++),r.writeUInt8(t.x2,n++),r.writeUInt8(t.y2,n++),r.writeUInt8(t.charCode,n++),r.writeUInt8(t.bgColorCode,n++),r.writeUInt8(t.fgColorCode,n++),r.toUint8Array()}case 4:{let r=S.allocUnsafe(8),n=0;return r.writeUInt8(t.centerX,n++),r.writeUInt8(t.centerY,n++),r.writeUInt8(t.radiusX,n++),r.writeUInt8(t.radiusY,n++),r.writeUInt8(t.filled?1:0,n++),r.writeUInt8(t.charCode,n++),r.writeUInt8(t.bgColorCode,n++),r.writeUInt8(t.fgColorCode,n++),r.toUint8Array()}case 5:{let r=S.allocUnsafe(10),n=0;return r.writeUInt8(t.x1,n++),r.writeUInt8(t.y1,n++),r.writeUInt8(t.x2,n++),r.writeUInt8(t.y2,n++),r.writeUInt8(t.x3,n++),r.writeUInt8(t.y3,n++),r.writeUInt8(t.filled?1:0,n++),r.writeUInt8(t.charCode,n++),r.writeUInt8(t.bgColorCode,n++),r.writeUInt8(t.fgColorCode,n++),r.toUint8Array()}default:throw new Error(`Unknown shape type: ${e}`)}}encodeDotCloudOrder(e){let t=e.positions.length,r=S.allocUnsafe(6+t*2),n=0;r.writeUInt8(e.type,n++),r.writeUInt8(e.charCode,n++),r.writeUInt8(e.bgColorCode,n++),r.writeUInt8(e.fgColorCode,n++),r.writeUInt16BE(t,n),n+=2;for(let o of e.positions)r.writeUInt8(o.posX,n++),r.writeUInt8(o.posY,n++);return r.toUint8Array()}encodeDotCloudMultiColorOrder(e){let t=e.dots.length,r=S.allocUnsafe(5+t*5),n=0;r.writeUInt8(e.type,n++),r.writeUInt16BE(t,n),n+=2;for(let o of e.dots)r.writeUInt8(o.charCode,n++),r.writeUInt8(o.bgColorCode,n++),r.writeUInt8(o.fgColorCode,n++),r.writeUInt8(o.posX,n++),r.writeUInt8(o.posY,n++);return r.toUint8Array()}encodeBitmaskOrder(e){let t=e.mask.length,r=S.allocUnsafe(9+t),n=0;r.writeUInt8(e.type,n++),r.writeUInt8(e.posX,n++),r.writeUInt8(e.posY,n++),r.writeUInt8(e.sizeX,n++),r.writeUInt8(e.sizeY,n++),r.writeUInt8(e.charCode,n++),r.writeUInt8(e.bgColorCode,n++),r.writeUInt8(e.fgColorCode,n++),r.writeUInt8(e.override?1:0,n++);for(let o=0;o<t;o++)r.writeUInt8(e.mask[o],n++);return r.toUint8Array()}encodeBitmask4Order(e){let t=e.mask.length,r=S.allocUnsafe(15+t),n=0;r.writeUInt8(e.type,n++),r.writeUInt8(e.posX,n++),r.writeUInt8(e.posY,n++),r.writeUInt8(e.sizeX,n++),r.writeUInt8(e.sizeY,n++),r.writeUInt8(e.override?1:0,n++);for(let o of e.variants)r.writeUInt8(o.charCode,n++),r.writeUInt8(o.bgColorCode,n++),r.writeUInt8(o.fgColorCode,n++);for(let o=0;o<t;o++)r.writeUInt8(e.mask[o],n++);return r.toUint8Array()}encodeBitmask16Order(e){let t=e.mask.length,r=S.allocUnsafe(51+t),n=0;r.writeUInt8(e.type,n++),r.writeUInt8(e.posX,n++),r.writeUInt8(e.posY,n++),r.writeUInt8(e.sizeX,n++),r.writeUInt8(e.sizeY,n++),r.writeUInt8(e.override?1:0,n++);for(let o of e.variants)r.writeUInt8(o.charCode,n++),r.writeUInt8(o.bgColorCode,n++),r.writeUInt8(o.fgColorCode,n++);for(let o=0;o<t;o++)r.writeUInt8(e.mask[o],n++);return r.toUint8Array()}encodeSpriteCloudOrder(e){let t=e.positions.length,r=S.allocUnsafe(8+t*2),n=0;r.writeUInt8(e.type,n++),r.writeUInt8(e.spriteIndex,n++),r.writeUInt8(e.bgColorCode,n++),r.writeUInt8(e.fgColorCode,n++),r.writeUInt16BE(t,n),n+=2;for(let o of e.positions)r.writeUInt8(o.posX,n++),r.writeUInt8(o.posY,n++);return r.toUint8Array()}encodeSpriteCloudMultiColorOrder(e){let t=e.positions.length,r=S.allocUnsafe(6+t*2),n=0;r.writeUInt8(e.type,n++),r.writeUInt8(e.spriteIndex,n++),r.writeUInt16BE(t,n),n+=2;for(let o of e.positions)r.writeUInt8(o.posX,n++),r.writeUInt8(o.posY,n++);return r.toUint8Array()}encodeSpriteCloudVariedOrder(e){let t=e.sprites.length,r=S.allocUnsafe(3+t*5),n=0;r.writeUInt8(e.type,n++),r.writeUInt16BE(t,n),n+=2;for(let o of e.sprites)r.writeUInt8(o.spriteIndex,n++),r.writeUInt8(o.bgColorCode,n++),r.writeUInt8(o.fgColorCode,n++),r.writeUInt8(o.posX,n++),r.writeUInt8(o.posY,n++);return r.toUint8Array()}encodeSpriteCloudVariedMultiColorOrder(e){let t=e.sprites.length,r=S.allocUnsafe(3+t*3),n=0;r.writeUInt8(e.type,n++),r.writeUInt16BE(t,n),n+=2;for(let o of e.sprites)r.writeUInt8(o.spriteIndex,n++),r.writeUInt8(o.posX,n++),r.writeUInt8(o.posY,n++);return r.toUint8Array()}encodeClearOrder(e){let t=S.allocUnsafe(4),r=0;return t.writeUInt8(e.type,r++),t.writeUInt8(e.charCode,r++),t.writeUInt8(e.bgColorCode,r++),t.writeUInt8(e.fgColorCode,r++),t.toUint8Array()}encodeFillCharOrder(e){let t=e.patternWidth*e.patternHeight,r=S.allocUnsafe(5+t),n=0;r.writeUInt8(e.type,n++),r.writeUInt8(e.patternWidth,n++),r.writeUInt8(e.patternHeight,n++),r.writeUInt8(e.bgColorCode,n++),r.writeUInt8(e.fgColorCode,n++);for(let o of e.pattern)r.writeUInt8(o,n++);return r.toUint8Array()}encodeFillSpriteOrder(e){let t=S.allocUnsafe(4),r=0;return t.writeUInt8(e.type,r++),t.writeUInt8(e.spriteIndex,r++),t.writeUInt8(e.bgColorCode,r++),t.writeUInt8(e.fgColorCode,r++),t.toUint8Array()}encodeFillSpriteMultiColorOrder(e){let t=S.allocUnsafe(2),r=0;return t.writeUInt8(e.type,r++),t.writeUInt8(e.spriteIndex,r++),t.toUint8Array()}encodeTriggerSoundOrder(e){let t=S.allocUnsafe(5),r=0;return t.writeUInt8(e.type,r++),t.writeUInt8(e.posX,r++),t.writeUInt8(e.posY,r++),t.writeUInt8(e.soundId,r++),t.writeUInt8(e.loop?1:0,r++),t.toUint8Array()}encodeTriggerGlobalSoundOrder(e){let t=S.allocUnsafe(3),r=0;return t.writeUInt8(e.type,r++),t.writeUInt8(e.soundId,r++),t.writeUInt8(e.loop?1:0,r++),t.toUint8Array()}};C(_e,"OrderEncoder");var me=_e;R();var He=class He{constructor(){x(this,"orderEncoder");this.orderEncoder=new me}encode(e){let t=e.orders.map(a=>this.orderEncoder.encode(a)),r=13,n=t.reduce((a,d)=>a+d.length,0),o=r+n,i=S.allocUnsafe(o),s=0;i.writeUInt16BE(e.id,s),s+=2,i.writeUInt8(e.updateFlags,s++),i.writeUInt8(e.zIndex,s++),i.writeUInt16BE(e.originX,s),s+=2,i.writeUInt16BE(e.originY,s),s+=2,i.writeUInt16BE(e.width,s),s+=2,i.writeUInt16BE(e.height,s),s+=2,i.writeUInt8(e.orders.length,s++);for(let a of t)S.from(a).copy(i,s),s+=a.length;return i.toUint8Array()}calculateSize(e){return 13+e.orders.reduce((n,o)=>n+this.orderEncoder.encode(o).length,0)}};C(He,"LayerEncoder");var xe=He;R();var Ne=class Ne{encode(e){switch(e.type){case 1:return this.encodePlaySoundOrder(e);case 2:return this.encodePlayGlobalSoundOrder(e);case 3:return this.encodeStopSoundOrder(e);case 4:return this.encodeFadeOutSoundOrder(e);case 5:return this.encodePauseSoundOrder(e);case 6:return this.encodeResumeSoundOrder(e);case 7:return this.encodeSetListenerPositionOrder(e);case 8:return this.encodeConfigureSpatialOrder(e);case 9:return this.encodeSetSoundEffectsOrder(e);default:throw new Error(`Unknown audio order type: ${e.type}`)}}calculateSize(e){switch(e.type){case 1:return this.calculatePlaySoundSize(e);case 2:return this.calculatePlayGlobalSoundSize(e);case 3:case 5:case 6:return this.calculateTargetOrderSize(e);case 4:return this.calculateFadeOutSize(e);case 7:return 5;case 8:return 5;case 9:return this.calculateSetSoundEffectsSize(e);default:throw new Error(`Unknown audio order type: ${e.type}`)}}encodePlaySoundOrder(e){let t=this.calculatePlaySoundSize(e),r=S.allocUnsafe(t),n=0;return r.writeUInt8(e.type,n++),r.writeUInt8(e.soundId,n++),r.writeUInt16BE(e.instanceId,n),n+=2,r.writeUInt8(e.flags,n++),e.flags&2&&r.writeUInt8(e.volume??255,n++),e.flags&4&&r.writeUInt8(e.pitch??128,n++),e.flags&8&&r.writeUInt8(e.fadeIn??0,n++),e.flags&16&&(r.writeUInt16BE(e.posX??0,n),n+=2,r.writeUInt16BE(e.posY??0,n),n+=2),e.flags&32&&r.writeUInt8(e.lowpass??0,n++),e.flags&64&&r.writeUInt8(e.highpass??0,n++),e.flags&128&&r.writeUInt8(e.reverb??0,n++),r.toUint8Array()}encodePlayGlobalSoundOrder(e){let t=this.calculatePlayGlobalSoundSize(e),r=S.allocUnsafe(t),n=0;r.writeUInt8(e.type,n++),r.writeUInt8(e.soundId,n++),r.writeUInt16BE(e.instanceId,n),n+=2;let o=e.flags&-17;return r.writeUInt8(o,n++),o&2&&r.writeUInt8(e.volume??255,n++),o&4&&r.writeUInt8(e.pitch??128,n++),o&8&&r.writeUInt8(e.fadeIn??0,n++),o&32&&r.writeUInt8(e.lowpass??0,n++),o&64&&r.writeUInt8(e.highpass??0,n++),o&128&&r.writeUInt8(e.reverb??0,n++),r.toUint8Array()}calculatePlaySoundSize(e){let t=5;return e.flags&2&&(t+=1),e.flags&4&&(t+=1),e.flags&8&&(t+=1),e.flags&16&&(t+=4),e.flags&32&&(t+=1),e.flags&64&&(t+=1),e.flags&128&&(t+=1),t}calculatePlayGlobalSoundSize(e){let t=5,r=e.flags&-17;return r&2&&(t+=1),r&4&&(t+=1),r&8&&(t+=1),r&32&&(t+=1),r&64&&(t+=1),r&128&&(t+=1),t}encodeStopSoundOrder(e){return this.encodeTargetOrder(e.type,e.targetType,e.target)}encodePauseSoundOrder(e){return this.encodeTargetOrder(e.type,e.targetType,e.target)}encodeResumeSoundOrder(e){return this.encodeTargetOrder(e.type,e.targetType,e.target)}encodeFadeOutSoundOrder(e){let t=this.calculateFadeOutSize(e),r=S.allocUnsafe(t),n=0;return r.writeUInt8(e.type,n++),r.writeUInt8(e.targetType,n++),r.writeUInt8(e.duration,n++),e.targetType===0?r.writeUInt16BE(e.target??0,n):e.targetType===1&&r.writeUInt8(e.target??0,n),r.toUint8Array()}encodeTargetOrder(e,t,r){let n=2;t===0?n+=2:t===1&&(n+=1);let o=S.allocUnsafe(n),i=0;return o.writeUInt8(e,i++),o.writeUInt8(t,i++),t===0?o.writeUInt16BE(r??0,i):t===1&&o.writeUInt8(r??0,i),o.toUint8Array()}calculateTargetOrderSize(e){let t=2;return e.targetType===0?t+=2:e.targetType===1&&(t+=1),t}calculateFadeOutSize(e){let t=3;return e.targetType===0?t+=2:e.targetType===1&&(t+=1),t}encodeSetListenerPositionOrder(e){let t=S.allocUnsafe(5),r=0;return t.writeUInt8(e.type,r++),t.writeUInt16BE(e.x,r),r+=2,t.writeUInt16BE(e.y,r),t.toUint8Array()}encodeConfigureSpatialOrder(e){let t=S.allocUnsafe(5),r=0;return t.writeUInt8(e.type,r++),t.writeUInt8(e.maxDistance,r++),t.writeUInt8(e.referenceDistance,r++),t.writeUInt8(e.rolloffFactor,r++),t.writeUInt8(e.panSpread,r++),t.toUint8Array()}encodeSetSoundEffectsOrder(e){let t=this.calculateSetSoundEffectsSize(e),r=S.allocUnsafe(t),n=0;return r.writeUInt8(e.type,n++),r.writeUInt16BE(e.instanceId,n),n+=2,r.writeUInt8(e.flags,n++),e.flags&1&&r.writeUInt8(e.lowpass??0,n++),e.flags&2&&r.writeUInt8(e.highpass??0,n++),e.flags&4&&r.writeUInt8(e.reverb??0,n++),r.toUint8Array()}calculateSetSoundEffectsSize(e){let t=4;return e.flags&1&&(t+=1),e.flags&2&&(t+=1),e.flags&4&&(t+=1),t}};C(Ne,"AudioOrderEncoder");var ge=Ne;R();var We=class We{constructor(){x(this,"layerEncoder");x(this,"audioOrderEncoder");this.layerEncoder=new xe,this.audioOrderEncoder=new ge}encode(e){let t=e.layers.map(m=>this.layerEncoder.encode(m)),r=e.audioOrders||[],n=r.map(m=>this.audioOrderEncoder.encode(m)),o=9,i=e.displays.length*7,s=2,a=t.reduce((m,b)=>m+b.length,0),d=1,u=n.reduce((m,b)=>m+b.length,0),c=o+i+s+a+d+u,l=S.allocUnsafe(c),p=0,h=typeof e.tick=="bigint"?e.tick:BigInt(e.tick);l.writeBigUInt64BE(h,p),p+=8,l.writeUInt8(e.displays.length,p),p+=1;for(let m of e.displays)l.writeUInt8(m.id,p++),l.writeUInt16BE(m.originX,p),p+=2,l.writeUInt16BE(m.originY,p),p+=2,l.writeUInt8(Math.max(1,Math.min(256,m.sizeX))-1,p++),l.writeUInt8(Math.max(1,Math.min(256,m.sizeY))-1,p++);l.writeUInt16BE(e.layers.length,p),p+=2;for(let m of t)S.from(m).copy(l,p),p+=m.length;l.writeUInt8(r.length,p),p+=1;for(let m of n)S.from(m).copy(l,p),p+=m.length;return l.toUint8Array()}calculateSize(e){let r=e.displays.length*7,n=2,o=e.layers.reduce((d,u)=>d+this.layerEncoder.calculateSize(u),0),i=1,a=(e.audioOrders||[]).reduce((d,u)=>d+this.audioOrderEncoder.calculateSize(u),0);return 9+r+n+o+i+a}static createEmptyPacket(e){return{tick:typeof e=="bigint"?Number(e):e,displayCount:0,displays:[],layerCount:0,layers:[],audioOrderCount:0,audioOrders:[]}}encodeEmpty(e){let t=S.allocUnsafe(12),r=typeof e=="bigint"?e:BigInt(e);return t.writeBigUInt64BE(r,0),t.writeUInt8(0,8),t.writeUInt16BE(0,9),t.writeUInt8(0,11),t.toUint8Array()}};C(We,"UpdatePacketEncoder");var Ce=We;var H=class H{constructor(e){this.engine=e;x(this,"colorCache",new Array(256));x(this,"cellsBuffer",[]);x(this,"opacityBuffer",new Uint8Array(0));x(this,"visibleLayersBuffer",[]);this.rebuildColorCache()}rebuildColorCache(){for(let e=0;e<256;e++){let t=this.engine.getColor(e);t?this.colorCache[e]={r:t.r,g:t.g,b:t.b,a:t.a}:this.colorCache[e]={r:0,g:0,b:0,a:0}}}getColorRGB(e){return this.colorCache[e]??this.colorCache[255]}getColorEmission(e){let t=this.engine.getColor(e);return t?t.e:0}isLayerVisible(e,t){let r=e.x,n=e.x+e.width,o=e.y,i=e.y+e.height,s=t.x,a=t.x+256,d=t.y,u=t.y+256;return!(n<=s||r>=a||i<=d||o>=u)}rasterize(e,t){let r=e.width*e.height,n=this.cellsBuffer;n.length=r;for(let s=0;s<r;s++)n[s]?(n[s].char=" ",n[s].fgColorIndex=255,n[s].bgColorIndex=255,n[s].fgEmission=0,n[s].bgEmission=0):n[s]={char:" ",fgColorIndex:255,bgColorIndex:255,fgEmission:0,bgEmission:0};this.opacityBuffer.length<r?this.opacityBuffer=new Uint8Array(r):this.opacityBuffer.fill(0,0,r);let o=this.opacityBuffer,i=this.visibleLayersBuffer;i.length=0;for(let s=0;s<t.length;s++){let a=t[s];a.isEnabled()&&this.isLayerVisible(e,a.getOrigin())&&i.push(a)}i.sort((s,a)=>a.getZOrder()-s.getZOrder());for(let s=0;s<e.height;s++)for(let a=0;a<e.width;a++){let d=s*e.width+a;if(o[d])continue;let u=e.x+a,c=e.y+s;for(let l=0;l<i.length;l++){let p=i[l],h=u-p.getOrigin().x,m=c-p.getOrigin().y,b=p.getWidth(),f=p.getHeight();if(h<0||h>=b||m<0||m>=f)continue;let U=m*b+h,y=p.getData(),O=y.getCharCode(U),B=y.getFgColorCode(U),v=y.getBgColorCode(U),w=n[d];if(O!==0&&O<256&&w.char===" "&&(w.char=H.charCache[O]),B!==255&&w.fgColorIndex===255&&(w.fgColorIndex=B,w.fgEmission=this.getColorEmission(B)),v!==255){w.bgColorIndex===255&&(w.bgColorIndex=v,w.bgEmission=this.getColorEmission(v)),o[d]=1;break}}}return{width:e.width,height:e.height,cells:n,palette:this.colorCache}}rasterizeWithSortedLayers(e,t){let r=e.width*e.height,n=this.cellsBuffer;n.length=r;for(let s=0;s<r;s++)n[s]?(n[s].char=" ",n[s].fgColorIndex=255,n[s].bgColorIndex=255,n[s].fgEmission=0,n[s].bgEmission=0):n[s]={char:" ",fgColorIndex:255,bgColorIndex:255,fgEmission:0,bgEmission:0};this.opacityBuffer.length<r?this.opacityBuffer=new Uint8Array(r):this.opacityBuffer.fill(0,0,r);let o=this.opacityBuffer,i=this.visibleLayersBuffer;i.length=0;for(let s=0;s<t.length;s++){let a=t[s];this.isLayerVisible(e,a.getOrigin())&&i.push(a)}for(let s=0;s<e.height;s++)for(let a=0;a<e.width;a++){let d=s*e.width+a;if(o[d])continue;let u=e.x+a,c=e.y+s;for(let l=0;l<i.length;l++){let p=i[l],h=u-p.getOrigin().x,m=c-p.getOrigin().y,b=p.getWidth(),f=p.getHeight();if(h<0||h>=b||m<0||m>=f)continue;let U=m*b+h,y=p.getData(),O=y.getCharCode(U),B=y.getFgColorCode(U),v=y.getBgColorCode(U),w=n[d];if(O!==0&&O<256&&w.char===" "&&(w.char=H.charCache[O]),B!==255&&w.fgColorIndex===255&&(w.fgColorIndex=B,w.fgEmission=this.getColorEmission(B)),v!==255){w.bgColorIndex===255&&(w.bgColorIndex=v,w.bgEmission=this.getColorEmission(v)),o[d]=1;break}}}return{width:e.width,height:e.height,cells:n,palette:this.colorCache}}calculateIntersection(e,t){let r=e.x,n=e.x+e.width,o=e.y,i=e.y+e.height,s=t.x,a=t.x+256,d=t.y,u=t.y+256,c=Math.max(r,s),l=Math.min(n,a),p=Math.max(o,d),h=Math.min(i,u);return{visible:c<l&&p<h,originStart:{x:c-e.x,y:p-e.y},originEnd:{x:l-e.x,y:h-e.y},layerStart:{x:c-t.x,y:p-t.y},layerEnd:{x:l-t.x,y:h-t.y}}}};C(H,"DisplayRasterizer"),x(H,"charCache",(()=>{let e=new Array(256);for(let t=0;t<256;t++)e[t]=String.fromCharCode(t);return e})());var be=H;var $e=class $e{constructor(){x(this,"enabled",!1);x(this,"currentStats",null)}setEnabled(e){this.enabled=e,e||(this.currentStats=null)}isEnabled(){return this.enabled}get tick(){return this.currentStats?.tick??0}get timestamp(){return this.currentStats?.timestamp??0}get totalOrders(){return this.currentStats?.totalOrders??0}get ordersByLayer(){return this.currentStats?.ordersByLayer??new Map}get ordersByType(){return this.currentStats?.ordersByType??new Map}get totalLayers(){return this.currentStats?.totalLayers??0}get visibleLayers(){return this.currentStats?.visibleLayers??0}get layersPerDisplay(){return this.currentStats?.layersPerDisplay??new Map}get updatePacketSize(){return this.currentStats?.updatePacketSize??0}get displayHeaderSize(){return this.currentStats?.displayHeaderSize??0}get layerHeaderSize(){return this.currentStats?.layerHeaderSize??0}get orderDataSize(){return this.currentStats?.orderDataSize??0}get compressionRatio(){return this.currentStats?.compressionRatio??0}get compressedPacketSize(){return Math.round(this.updatePacketSize*this.compressionRatio)}get totalCells(){return this.currentStats?.totalCells??0}get nonEmptyCells(){return this.currentStats?.nonEmptyCells??0}get cellsWithBackground(){return this.currentStats?.cellsWithBackground??0}get rasterizationTimeMs(){return this.currentStats?.rasterizationTimeMs??0}get encodingTimeMs(){return this.currentStats?.encodingTimeMs??0}get packetSplit(){return this.currentStats?.packetSplit}get layerDetails(){return this.currentStats?.layerDetails}startTick(e){this.enabled&&(this.currentStats={tick:e,timestamp:Date.now(),totalOrders:0,ordersByLayer:new Map,ordersByType:new Map,totalLayers:0,visibleLayers:0,layersPerDisplay:new Map,updatePacketSize:0,displayHeaderSize:0,layerHeaderSize:0,orderDataSize:0,compressionRatio:0,totalCells:0,nonEmptyCells:0,cellsWithBackground:0,rasterizationTimeMs:0,encodingTimeMs:0})}recordLayerOrders(e,t){if(!(!this.enabled||!this.currentStats)){this.currentStats.totalOrders+=t.length,this.currentStats.ordersByLayer.set(e,t.length);for(let r of t){let n=this.currentStats.ordersByType.get(r.type)||0;this.currentStats.ordersByType.set(r.type,n+1)}}}recordLayers(e,t){!this.enabled||!this.currentStats||(this.currentStats.totalLayers=e,this.currentStats.visibleLayers=t)}recordDisplayLayers(e,t){!this.enabled||!this.currentStats||this.currentStats.layersPerDisplay.set(e,t)}recordUpdatePacketSize(e,t,r,n){!this.enabled||!this.currentStats||(this.currentStats.updatePacketSize=e,this.currentStats.displayHeaderSize=t,this.currentStats.layerHeaderSize=r,this.currentStats.orderDataSize=n,this.currentStats.compressionRatio=.25)}recordPacketSplit(e,t,r,n){!this.enabled||!this.currentStats||(this.currentStats.packetSplit={userId:e,displayCount:t,staticLayerCount:r,dynamicLayerCount:n})}recordLayerInfo(e,t,r,n){!this.enabled||!this.currentStats||(this.currentStats.layerDetails||(this.currentStats.layerDetails=[]),this.currentStats.layerDetails.push({layerId:e,isStatic:t,orderCount:r,updateFlags:n}))}recordRenderStats(e,t,r){!this.enabled||!this.currentStats||(this.currentStats.totalCells=e,this.currentStats.nonEmptyCells=t,this.currentStats.cellsWithBackground=r)}recordRasterizationTime(e){!this.enabled||!this.currentStats||(this.currentStats.rasterizationTimeMs=e)}recordEncodingTime(e){!this.enabled||!this.currentStats||(this.currentStats.encodingTimeMs=e)}endTick(){}reset(){this.currentStats=null}};C($e,"CoreStats");var te=$e;var Ve=class Ve{constructor(){x(this,"unicolorSprites",new Map);x(this,"multicolorSprites",new Map)}loadUnicolorSprites(e){for(let t of e.sprites){let r=new q(t.sizeX*t.sizeY);for(let o=0;o<t.data.length;o++)r.set(o,t.data[o]);let n={id:t.spriteId,sizeX:t.sizeX,sizeY:t.sizeY,data:r};this.unicolorSprites.set(n.id,n)}}loadMulticolorSprites(e){for(let t of e.sprites){let r=new P(t.sizeX*t.sizeY);for(let o=0;o<t.data.length;o++){let i=t.data[o];r.set(o,i.charCode,i.fgColorId,i.bgColorId)}let n={id:t.spriteId,sizeX:t.sizeX,sizeY:t.sizeY,data:r};this.multicolorSprites.set(n.id,n)}}getUnicolorSprite(e){return this.unicolorSprites.get(e)}getMulticolorSprite(e){return this.multicolorSprites.get(e)}hasUnicolorSprite(e){return this.unicolorSprites.has(e)}hasMulticolorSprite(e){return this.multicolorSprites.has(e)}unloadUnicolorSprite(e){return this.unicolorSprites.delete(e)}unloadMulticolorSprite(e){return this.multicolorSprites.delete(e)}clearUnicolorSprites(){this.unicolorSprites.clear()}clearMulticolorSprites(){this.multicolorSprites.clear()}clearAll(){this.unicolorSprites.clear(),this.multicolorSprites.clear()}getUnicolorSpriteCount(){return this.unicolorSprites.size}getMulticolorSpriteCount(){return this.multicolorSprites.size}getTotalSpriteCount(){return this.unicolorSprites.size+this.multicolorSprites.size}};C(Ve,"SpriteRegistry");var re=Ve;var Ut=(t=>(t.Web="web",t.Bitmap="bitmap",t))(Ut||{}),Ze=class Ze{constructor(e,t){this.fontId=e;this.config=t}getFontId(){return this.fontId}getConfig(){return{...this.config}}getFontFamily(){return this.config.fontFamily}getFontSize(){return this.config.fontSize}getOffsetX(){return this.config.offsetX??0}getOffsetY(){return this.config.offsetY??0}getCharSpacing(){return this.config.charSpacing??0}getLineHeight(){return this.config.lineHeight??1.2}getFontWeight(){return this.config.fontWeight??"normal"}getFontStyle(){return this.config.fontStyle??"normal"}toCSS(){let e=[];e.push(`font-family: ${this.config.fontFamily}`),e.push(`font-size: ${this.config.fontSize}px`);let t=this.config.fontWeight??"normal";t!=="normal"&&e.push(`font-weight: ${t}`);let r=this.config.fontStyle??"normal";return r!=="normal"&&e.push(`font-style: ${r}`),e.join("; ")+";"}};C(Ze,"WebFont");var D=Ze,Ge=class Ge{constructor(e,t){this.fontId=e;this.config=t}getFontId(){return this.fontId}getConfig(){return{charWidth:this.config.charWidth,charHeight:this.config.charHeight,cellWidth:this.config.cellWidth,cellHeight:this.config.cellHeight,glyphs:new Map(this.config.glyphs)}}getCharWidth(){return this.config.charWidth}getCharHeight(){return this.config.charHeight}getCellWidth(){return this.config.cellWidth??this.config.charWidth}getCellHeight(){return this.config.cellHeight??this.config.charHeight}getGlyph(e){return this.config.glyphs.get(e)}hasGlyph(e){return this.config.glyphs.has(e)}getGlyphCount(){return this.config.glyphs.size}getCharCodes(){return Array.from(this.config.glyphs.keys())}};C(Ge,"BitmapFont");var ne=Ge;var qe=class qe{constructor(){x(this,"fonts",new Map)}loadFont(e,t){if(this.fonts.has(e))throw new Error(`WebFont with ID ${e} already exists`);let r=new D(e,t);this.fonts.set(e,r)}getFont(e){return this.fonts.get(e)}hasFont(e){return this.fonts.has(e)}unloadFont(e){return this.fonts.delete(e)}clearFonts(){this.fonts.clear()}getFontIds(){return Array.from(this.fonts.keys()).sort((e,t)=>e-t)}getAllFonts(){return Array.from(this.fonts.entries()).sort((e,t)=>e[0]-t[0]).map(e=>e[1])}getFontCount(){return this.fonts.size}};C(qe,"WebFontRegistry");var oe=qe;var je=class je{constructor(){x(this,"fonts",new Map)}loadFont(e,t){if(this.fonts.has(e))throw new Error(`BitmapFont with ID ${e} already exists`);let r=new ne(e,t);this.fonts.set(e,r)}getFont(e){return this.fonts.get(e)}hasFont(e){return this.fonts.has(e)}unloadFont(e){return this.fonts.delete(e)}clearFonts(){this.fonts.clear()}getFontIds(){return Array.from(this.fonts.keys()).sort((e,t)=>e-t)}getAllFonts(){return Array.from(this.fonts.entries()).sort((e,t)=>e[0]-t[0]).map(e=>e[1])}getFontCount(){return this.fonts.size}};C(je,"BitmapFontRegistry");var ie=je;var Ke=class Ke{constructor(){x(this,"sounds",new Map);x(this,"nameToId",new Map);x(this,"nextId",0)}registerFile(e,t,r){let n=this.allocateId(e),o={soundId:n,name:e,loadType:"file",format:t,data:r};return this.sounds.set(n,o),this.nameToId.set(e,n),n}registerFileWithId(e,t,r,n){this.validateId(e),this.checkIdAvailable(e,t);let o={soundId:e,name:t,loadType:"file",format:r,data:n};this.sounds.set(e,o),this.nameToId.set(t,e)}registerExternal(e,t,r,n,o){let i=this.allocateId(e),s={soundId:i,name:e,loadType:"external",format:t,url:r,size:n,checksum:o};return this.sounds.set(i,s),this.nameToId.set(e,i),i}registerExternalWithId(e,t,r,n,o,i){this.validateId(e),this.checkIdAvailable(e,t);let s={soundId:e,name:t,loadType:"external",format:r,url:n,size:o,checksum:i};this.sounds.set(e,s),this.nameToId.set(t,e)}get(e){if(typeof e=="number")return this.sounds.get(e);let t=this.nameToId.get(e);return t!==void 0?this.sounds.get(t):void 0}has(e){return this.get(e)!==void 0}getAll(){return Array.from(this.sounds.values())}getFileSounds(){return this.getAll().filter(e=>e.loadType==="file")}getExternalSounds(){return this.getAll().filter(e=>e.loadType==="external")}getNames(){return Array.from(this.nameToId.keys())}getId(e){return this.nameToId.get(e)}toLoadPackets(){let e=[],t=this.getFileSounds();if(t.length>0){let n=t.map(o=>({soundId:o.soundId,name:o.name,format:o.format,data:o.data}));e.push({type:"sound",mode:"file",sounds:n})}let r=this.getExternalSounds();if(r.length>0){let n=r.map(o=>({soundId:o.soundId,name:o.name,format:o.format,url:o.url,size:o.size,checksum:o.checksum}));e.push({type:"sound",mode:"external",sounds:n})}return e}toLoadPacket(e){let t=this.get(e);return t?t.loadType==="file"?{type:"sound",mode:"file",sounds:[{soundId:t.soundId,name:t.name,format:t.format,data:t.data}]}:{type:"sound",mode:"external",sounds:[{soundId:t.soundId,name:t.name,format:t.format,url:t.url,size:t.size,checksum:t.checksum}]}:null}unregister(e){let t=this.get(e);return t?(this.sounds.delete(t.soundId),this.nameToId.delete(t.name),!0):!1}clear(){this.sounds.clear(),this.nameToId.clear(),this.nextId=0}get size(){return this.sounds.size}getStats(){let e=this.getAll(),t=e.filter(n=>n.loadType==="file"),r=t.reduce((n,o)=>n+(o.data?.length??0),0);return{total:e.length,file:t.length,external:e.length-t.length,totalFileSize:r}}allocateId(e){if(this.nameToId.has(e))throw new Error(`Sound with name "${e}" already exists`);for(;this.sounds.has(this.nextId);)if(this.nextId++,this.nextId>255)throw new Error("Maximum number of sounds (256) reached");return this.nextId++}validateId(e){if(!Number.isInteger(e)||e<0||e>255)throw new Error(`Invalid sound ID: ${e}. Must be an integer between 0 and 255.`)}checkIdAvailable(e,t){if(this.sounds.has(e)){let r=this.sounds.get(e);throw new Error(`Sound ID ${e} is already used by "${r.name}". Cannot register "${t}".`)}if(this.nameToId.has(t))throw new Error(`Sound with name "${t}" already exists`)}};C(Ke,"SoundRegistry");var se=Ke;var Je=class Je{constructor(e){this.soundRegistry=e}collectFromUser(e){let t=[],r=e.flushSoundCommands();for(let o of r){let i=this.convertSoundCommand(o);i&&t.push(i)}let n=e.flushAudioConfigCommands();for(let o of n){let i=this.convertConfigCommand(o);i&&t.push(i)}return t}convertSoundCommand(e){return"setEffects"in e&&e.setEffects===!0?this.convertSetEffectsCommand(e):"fadeOut"in e&&e.fadeOut===!0?this.convertFadeOutCommand(e):"pause"in e&&e.pause===!0?this.convertPauseCommand(e):"resume"in e&&e.resume===!0?this.convertResumeCommand(e):"instanceId"in e||"volume"in e||"pitch"in e||"loop"in e||"fadeIn"in e||"x"in e||"y"in e||"lowpass"in e||"highpass"in e||"reverb"in e?this.convertPlayCommand(e):this.convertStopCommand(e)}convertPlayCommand(e){let t=this.resolveSoundId(e.sound);if(t===null)return console.warn(`[AudioOrderCollector] Unknown sound: ${e.sound}`),null;let r=0;e.loop&&(r|=1),e.volume!==void 0&&(r|=2),e.pitch!==void 0&&(r|=4),e.fadeIn!==void 0&&(r|=8),e.lowpass!==void 0&&e.lowpass>0&&(r|=32),e.highpass!==void 0&&e.highpass>0&&(r|=64),e.reverb!==void 0&&e.reverb>0&&(r|=128);let n=e.x!==void 0&&e.y!==void 0;return n&&(r|=16),n?{type:1,soundId:t,instanceId:e.instanceId??0,flags:r,volume:e.volume!==void 0?this.encodeVolume(e.volume):void 0,pitch:e.pitch!==void 0?this.encodePitch(e.pitch):void 0,fadeIn:e.fadeIn!==void 0?this.encodeFadeTime(e.fadeIn):void 0,posX:this.encodePosition(e.x),posY:this.encodePosition(e.y),lowpass:e.lowpass!==void 0&&e.lowpass>0?this.encodeFilterFreq(e.lowpass):void 0,highpass:e.highpass!==void 0&&e.highpass>0?this.encodeFilterFreq(e.highpass):void 0,reverb:e.reverb!==void 0&&e.reverb>0?this.encodeReverb(e.reverb):void 0}:{type:2,soundId:t,instanceId:e.instanceId??0,flags:r&-17,volume:e.volume!==void 0?this.encodeVolume(e.volume):void 0,pitch:e.pitch!==void 0?this.encodePitch(e.pitch):void 0,fadeIn:e.fadeIn!==void 0?this.encodeFadeTime(e.fadeIn):void 0,lowpass:e.lowpass!==void 0&&e.lowpass>0?this.encodeFilterFreq(e.lowpass):void 0,highpass:e.highpass!==void 0&&e.highpass>0?this.encodeFilterFreq(e.highpass):void 0,reverb:e.reverb!==void 0&&e.reverb>0?this.encodeReverb(e.reverb):void 0}}convertStopCommand(e){let{targetType:t,target:r}=this.resolveTarget(e.sound);return{type:3,targetType:t,target:r}}convertFadeOutCommand(e){let{targetType:t,target:r}=this.resolveTarget(e.sound);return{type:4,targetType:t,duration:this.encodeFadeTime(e.duration),target:r}}convertPauseCommand(e){let{targetType:t,target:r}=this.resolveTarget(e.sound);return{type:5,targetType:t,target:r}}convertResumeCommand(e){let{targetType:t,target:r}=this.resolveTarget(e.sound);return{type:6,targetType:t,target:r}}convertSetEffectsCommand(e){let t=0;return e.lowpass!==void 0&&(t|=1),e.highpass!==void 0&&(t|=2),e.reverb!==void 0&&(t|=4),{type:9,instanceId:e.instanceId,flags:t,lowpass:e.lowpass!==void 0?this.encodeFilterFreq(e.lowpass):void 0,highpass:e.highpass!==void 0?this.encodeFilterFreq(e.highpass):void 0,reverb:e.reverb!==void 0?this.encodeReverb(e.reverb):void 0}}convertConfigCommand(e){return e.type==="set-listener-position"?{type:7,x:this.encodePosition(e.x),y:this.encodePosition(e.y)}:e.type==="configure-spatial"?{type:8,maxDistance:this.encodeDistance(e.maxDistance??1e3),referenceDistance:this.encodeDistance(e.referenceDistance??100),rolloffFactor:this.encodeRolloff(e.rolloffFactor??1),panSpread:this.encodePanSpread(e.panSpread??.5)}:null}resolveSoundId(e){if(typeof e=="number")return e>=0&&e<=255?e:null;let t=this.soundRegistry.getId(e);return t!==void 0?t:null}resolveTarget(e){if(e==="all")return{targetType:2,target:void 0};if(typeof e=="number")return{targetType:0,target:e};let t=this.soundRegistry.getId(e);return t!==void 0?{targetType:1,target:t}:(console.warn(`[AudioOrderCollector] Unknown sound name: ${e}, treating as 'all'`),{targetType:2,target:void 0})}encodeVolume(e){return Math.round(Math.max(0,Math.min(1,e))*255)}encodePitch(e){let t=Math.max(.25,Math.min(4,e)),r=64*Math.log2(t/.25);return Math.round(Math.max(0,Math.min(255,r)))}encodeFadeTime(e){return Math.round(Math.max(0,Math.min(25.5,e))*10)}encodeDistance(e){return Math.round(Math.max(0,Math.min(25500,e))/100)}encodeRolloff(e){return Math.round(Math.max(0,Math.min(2.55,e))*100)}encodePanSpread(e){return Math.round(Math.max(0,Math.min(1,e))*255)}encodePosition(e){return Math.round(Math.max(0,Math.min(65535,e)))}encodeFilterFreq(e){return e<=0?0:Math.round(Math.max(1,Math.min(255,e/100)))}encodeReverb(e){return Math.round(Math.max(0,Math.min(1,e))*255)}};C(Je,"AudioOrderCollector");var ae=Je;var $=class ${constructor(e={}){x(this,"users",new Map);x(this,"mode");x(this,"maxUsers");x(this,"strictMode");x(this,"currentTick",0);x(this,"encoder");x(this,"displayRasterizer");x(this,"colorPalette",new Map);x(this,"stats",new te);x(this,"spriteRegistry",new re);x(this,"webFontRegistry",new oe);x(this,"bitmapFontRegistry",new ie);x(this,"soundRegistry",new se);x(this,"audioOrderCollector");x(this,"activeWebFontId",0);x(this,"_renderCallCount",0);x(this,"onPaletteChangedCallback");x(this,"onBitmapFontChangedCallback");this.mode=e.mode??"server",this.maxUsers=e.maxUsers??64,this.strictMode=e.strictMode??!1,this.encoder=new Ce,this.displayRasterizer=new be(this),this.audioOrderCollector=new ae(this.soundRegistry),this.initializeDefaultPalette(),this.displayRasterizer.rebuildColorCache(),this.loadDefaultWebFont()}initializeDefaultPalette(){$.ANSI_VGA_COLORS.forEach(e=>{this.colorPalette.set(e.colorId,{r:e.r,g:e.g,b:e.b,a:e.a,e:e.e})}),this.colorPalette.set(255,{r:0,g:0,b:0,a:0,e:0})}getMode(){return this.mode}getMaxUsers(){return this.maxUsers}isStrictMode(){return this.strictMode}isServer(){return this.mode==="server"}isClient(){return this.mode==="client"}isStandalone(){return this.mode==="standalone"}createUser(e,t){if(this.users.has(e))throw new Error(`User with ID ${e} already exists`);if(this.mode==="server"&&this.users.size>=this.maxUsers)throw new Error(`Maximum number of users reached (${this.maxUsers}). Cannot create user ${e}`);if(this.mode==="client"&&this.users.size>=1)throw new Error(`Client mode only allows one user. Cannot create user ${e}`);let r=new ee(e,t,this.mode);return r.setSpriteRegistry(this.spriteRegistry),this.users.set(e,r),r}getUser(e){return this.users.get(e)??null}getUsers(){return Array.from(this.users.values())}hasUser(e){return this.users.has(e)}removeUser(e){return this.users.delete(e)}getUserCount(){return this.users.size}clearAllUsers(){this.users.clear()}setColor(e,t,r,n,o=255,i=0){if(e<0||e>255)throw new Error(`Color ID must be between 0 and 255, got ${e}`);if(e>=240)throw new Error("Color IDs 240-255 are reserved (240-254: UI palette, 255: skip color). Use IDs 0-239 for custom colors.");if(t<0||t>255||r<0||r>255||n<0||n>255||o<0||o>255||i<0||i>255)throw new Error("Color components must be between 0 and 255");this.colorPalette.set(e,{r:t,g:r,b:n,a:o,e:i}),this.onPaletteChangedCallback&&this.onPaletteChangedCallback(this.colorPalette)}onPaletteChanged(e){this.onPaletteChangedCallback=e}onBitmapFontChanged(e){this.onBitmapFontChangedCallback=e}getColor(e){return this.colorPalette.get(e)??null}loadPalette(e){for(let t of e)t.colorId<0||t.colorId>255||this.colorPalette.set(t.colorId,{r:t.r,g:t.g,b:t.b,a:t.a,e:t.e??0});$.ANSI_VGA_COLORS.forEach(t=>{this.colorPalette.set(t.colorId,{r:t.r,g:t.g,b:t.b,a:t.a,e:t.e})}),this.colorPalette.set(255,{r:0,g:0,b:0,a:0,e:0}),this.displayRasterizer.rebuildColorCache(),this.onPaletteChangedCallback&&this.onPaletteChangedCallback(this.colorPalette)}getPalette(){return new Map(this.colorPalette)}resetPalette(){this.colorPalette.clear(),this.initializeDefaultPalette(),this.onPaletteChangedCallback&&this.onPaletteChangedCallback(this.colorPalette)}getColorCSS(e){let t=this.getColor(e);if(!t)return null;let r=t.a/255;return`rgba(${t.r}, ${t.g}, ${t.b}, ${r})`}getUserIds(){return Array.from(this.users.keys())}forEachUser(e){this.users.forEach(e)}filterUsers(e){return this.getUsers().filter(e)}findUser(e){return this.getUsers().find(e)}getCurrentTick(){return this.currentTick}getStats(){return this.stats}endTick(){this.stats.isEnabled()&&this.stats.startTick(this.currentTick);let e=new Map,t=0,r=0;return this.users.forEach((n,o)=>{let i=n.getLayers(),s=n.getDisplays();t+=i.length,n.getStats().isEnabled()&&n.getStats().startTick(this.currentTick);let a=s.map(h=>{let m=h.getOrigin(),b=h.getSize();return{id:h.getId(),originX:m.x,originY:m.y,sizeX:b.x,sizeY:b.y}});s.forEach(h=>h.resetChangeTracking());let d=[],u=[];i.forEach((h,m)=>{let b=h.getOrigin(),f=h.getOrders(),U=h.getStatic(),y=h.calculateUpdateFlags();h.resetChangeTracking(),h.getId()===0&&h.setId(m);let O={id:h.getId(),updateFlags:y,zIndex:h.getZOrder(),originX:b.x,originY:b.y,width:h.getWidth(),height:h.getHeight(),orderCount:f.length,orders:f};U?d.push(O):u.push(O)}),r+=d.length+u.length;let c=this.audioOrderCollector.collectFromUser(n),l=[...d,...u],p=this.encoder.encode({tick:this.currentTick,displayCount:a.length,displays:a,layerCount:l.length,layers:l,audioOrderCount:c.length,audioOrders:c});if(e.set(o,p),this.stats.isEnabled()){l.forEach((f,U)=>{this.stats.recordLayerOrders(U,f.orders)}),s.forEach((f,U)=>{this.stats.recordDisplayLayers(U,l.length)});let h=s.length*12,m=l.length*20,b=p.length-h-m;this.stats.recordUpdatePacketSize(p.length,h,m,b>0?b:0)}}),this.stats.isEnabled()&&(this.stats.recordLayers(t,r),this.stats.endTick()),this.currentTick++,e}endTickSplit(){this.stats.isEnabled()&&this.stats.startTick(this.currentTick);let e=new Map,t=0,r=0;return this.users.forEach((n,o)=>{let i=n.getLayers(),s=n.getDisplays();t+=i.length,n.getStats().isEnabled()&&n.getStats().startTick(this.currentTick);let a=s.map(h=>{let m=h.getOrigin(),b=h.getSize();return{id:h.getId(),originX:m.x,originY:m.y,sizeX:b.x,sizeY:b.y}});s.forEach(h=>h.resetChangeTracking());let d=[],u=[];i.forEach((h,m)=>{if(!h.getNeedsCommit())return;let b=h.getOrigin(),f=h.getOrders(),U=h.getStatic(),y=h.calculateUpdateFlags();h.resetChangeTracking(),h.resetCommit(),h.getId()===0&&h.setId(m);let O={id:h.getId(),updateFlags:y,zIndex:h.getZOrder(),originX:b.x,originY:b.y,width:h.getWidth(),height:h.getHeight(),orderCount:f.length,orders:f};f.length>0&&this.stats.isEnabled()&&this.stats.recordLayerInfo(h.getId(),U,f.length,y),U?d.push(O):u.push(O)}),r+=d.length+u.length;let c=this.audioOrderCollector.collectFromUser(n),l=null,p=null;if(this.stats.isEnabled()&&this.stats.recordPacketSplit(o,a.length,d.length,u.length),d.length>0&&(l=this.encoder.encode({tick:this.currentTick,displayCount:a.length,displays:a,layerCount:d.length,layers:d,audioOrderCount:0,audioOrders:[]})),p=this.encoder.encode({tick:this.currentTick,displayCount:a.length,displays:a,layerCount:u.length,layers:u,audioOrderCount:c.length,audioOrders:c}),e.set(o,{static:l,dynamic:p}),n.getStats().isEnabled()){let h=s.reduce((U,y)=>{let O=y.getSize();return U+O.x*O.y},0);n.getStats().recordDisplays(s.length,h),n.getStats().recordLayers(i.length,d.length+u.length,d.length,u.length),[...d,...u].forEach(U=>{n.getStats().recordLayerOrders(U.id,U.orders.length)});let m=l?.length||0,b=p?.length||0;n.getStats().recordPacketSizes(m,b);let f=n.getInputBindingRegistry();n.getStats().recordInput(!1,f.getAxisCount(),f.getButtonCount()),n.getStats().endTick()}if(this.stats.isEnabled()){let h=[...d,...u];h.forEach((y,O)=>{this.stats.recordLayerOrders(O,y.orders)}),s.forEach((y,O)=>{this.stats.recordDisplayLayers(O,h.length)});let m=(l?.length||0)+(p?.length||0),b=s.length*12,f=h.length*20,U=m-b-f;this.stats.recordUpdatePacketSize(m,b,f,U>0?U:0)}}),this.stats.isEnabled()&&(this.stats.recordLayers(t,r),this.stats.endTick()),this.currentTick++,e}getSnapshot(e){let t=this.getUser(e);if(!t)return null;let r=t.getDisplays(),n=t.getLayers(),o=r.map((s,a)=>{let d=s.getOrigin(),u=s.getSize();return{id:a,originX:d.x,originY:d.y,sizeX:u.x,sizeY:u.y}}),i=n.map((s,a)=>{let d=s.getOrigin(),u=s.getOrders(),c=7;return s.getId()===0&&s.setId(a),{id:s.getId(),updateFlags:c,zIndex:s.getZOrder(),originX:d.x,originY:d.y,width:s.getWidth(),height:s.getHeight(),orderCount:u.length,orders:u}});return this.encoder.encode({tick:this.currentTick,displayCount:o.length,displays:o,layerCount:i.length,layers:i,audioOrderCount:0,audioOrders:[]})}resetTick(){this.currentTick=0}applyUpdatePacket(e,t){let r=this.getUser(e);if(!r){if(this.strictMode)throw new Error(`Cannot apply update packet: user ${e} does not exist`);return!1}return r.applyUpdate(t),t.audioOrders&&t.audioOrders.length>0&&r.applyAudioOrders(t.audioOrders),!0}applyUpdatePacketBuffer(e,t){let{UpdatePacketDecoder:r}=(it(),z(At)),o=new r().decode(t);return this.applyUpdatePacket(e,o)}applyLoadPacket(e){try{let{LoadDecoder:t}=(kt(),z(Bt)),{LoadType:r}=(L(),z(X)),i=new t().decode(e).load;switch(i.loadType){case r.ColorPalette:this.loadPalette(i.colors);break;case r.Sprite:this.loadUnicolorSprites(i);break;case r.MulticolorSprite:this.loadMulticolorSprites(i);break;case r.BitmapFont:{let s=this.getBitmapFontRegistry();s.hasFont(i.fontId)&&s.unloadFont(i.fontId),s.loadFont(i.fontId,{charWidth:i.width,charHeight:i.height,cellWidth:i.cellWidth,cellHeight:i.cellHeight,glyphs:new Map(i.characters.map(a=>[a.charCode,a.bitmap]))});break}case r.WebFont:{let s=this.getWebFontRegistry();s.hasFont(i.fontId)&&s.unloadFont(i.fontId),this.loadWebFontById(i.fontId,{fontFamily:i.fontFamily,fontSize:i.fontSize,offsetX:i.offsetX,offsetY:i.offsetY,charSpacing:i.charSpacing,lineHeight:i.lineHeight,fontWeight:i.fontWeight,fontStyle:i.fontStyle});break}case r.Sound:console.warn("[Core] Sound loading not yet implemented");break;default:return console.error(`[Core] Unknown LoadType: ${i.loadType}`),!1}return!0}catch(t){return console.error("[Core] Failed to apply LoadPacket:",t),!1}}generatePaletteLoadPacket(){let e=this.getPalette();if(e.size===0)return null;let{LoadEncoder:t}=(W(),z(N)),{LoadType:r}=(L(),z(X)),n=new t,o=[];return e.forEach((i,s)=>{s!==255&&o.push({colorId:s,r:i.r,g:i.g,b:i.b,a:i.a,e:i.e})}),n.encode({loadType:r.ColorPalette,colors:o})}generateUnicolorSpritesLoadPacket(){let e=this.getSpriteRegistry(),t=[];for(let i=0;i<=255;i++){let s=e.getUnicolorSprite(i);if(s){let a=[];for(let d=0;d<s.sizeX*s.sizeY;d++)a.push(s.data.get(d));t.push({spriteId:s.id,sizeX:s.sizeX,sizeY:s.sizeY,data:a})}}if(t.length===0)return null;let{LoadEncoder:r}=(W(),z(N)),{LoadType:n}=(L(),z(X));return new r().encode({loadType:n.Sprite,sprites:t})}generateMulticolorSpritesLoadPacket(){let e=this.getSpriteRegistry(),t=[];for(let i=0;i<=255;i++){let s=e.getMulticolorSprite(i);if(s){let a=[];for(let d=0;d<s.sizeX*s.sizeY;d++){let u=s.data.get(d);a.push({charCode:u.charCode,fgColorId:u.fgColorCode,bgColorId:u.bgColorCode})}t.push({spriteId:s.id,sizeX:s.sizeX,sizeY:s.sizeY,data:a})}}if(t.length===0)return null;let{LoadEncoder:r}=(W(),z(N)),{LoadType:n}=(L(),z(X));return new r().encode({loadType:n.MulticolorSprite,sprites:t})}generateWebFontsLoadPackets(){let e=this.getWebFontRegistry(),t=e.getFontIds(),r=[],{LoadEncoder:n}=(W(),z(N)),{LoadType:o}=(L(),z(X)),i=new n;for(let s of t){let a=e.getFont(s);if(a){let d=a.getConfig(),u=i.encode({loadType:o.WebFont,fontId:s,fontFamily:d.fontFamily,fontSize:d.fontSize,offsetX:d.offsetX,offsetY:d.offsetY,charSpacing:d.charSpacing,lineHeight:d.lineHeight,fontWeight:d.fontWeight,fontStyle:d.fontStyle});r.push(u)}}return r}generateBitmapFontsLoadPackets(){let e=this.getBitmapFontRegistry(),t=e.getFontIds(),r=[],{LoadEncoder:n}=(W(),z(N)),{LoadType:o}=(L(),z(X)),i=new n;for(let s of t){let a=e.getFont(s);if(a){let d=[];for(let u=0;u<256;u++){let c=a.getGlyph(u);c&&d.push({charCode:u,bitmap:c})}if(d.length>0){let u=i.encode({loadType:o.BitmapFont,fontId:s,width:a.getCharWidth(),height:a.getCharHeight(),cellWidth:a.getCellWidth(),cellHeight:a.getCellHeight(),characters:d});r.push(u)}}}return r}generateAllLoadPackets(){let e=[],t=this.generatePaletteLoadPacket();t&&e.push(t);let r=this.generateUnicolorSpritesLoadPacket();r&&e.push(r);let n=this.generateMulticolorSpritesLoadPacket();n&&e.push(n);let o=this.generateWebFontsLoadPackets();e.push(...o);let i=this.generateBitmapFontsLoadPackets();return e.push(...i),e}applyInputBindingsLoadPacket(e,t){let r=this.getUser(e);if(!r){if(this.strictMode)throw new Error(`Cannot apply input bindings: user ${e} does not exist`);return!1}try{return r.applyInputBindingsLoadPacket(t),!0}catch(n){return console.error(`[Core] Failed to apply input bindings for user ${e}:`,n),!1}}getRenderState(e){let t=this.getUser(e);if(!t)return null;let r=t.getDisplays(),n=t.getLayers(),o=performance.now(),i=new Array(r.length);for(let a=0;a<r.length;a++){let d=r[a],u=d.getOrigin(),c=d.getSize();i[a]=this.displayRasterizer.rasterize({x:u.x,y:u.y,width:c.x,height:c.y},n)}let s=performance.now()-o;return this._renderCallCount||(this._renderCallCount=0),this._renderCallCount++,{userId:t.id,userName:t.name,tick:this.currentTick,displays:i}}getAllRenderStates(){let e=new Map;return this.users.forEach((t,r)=>{let n=this.getRenderState(r);n&&e.set(r,n)}),e}enableStats(e){this.stats.setEnabled(e)}getStatsInstance(){return this.stats}resetStats(){this.stats.reset()}loadUnicolorSprites(e){this.spriteRegistry.loadUnicolorSprites(e)}loadMulticolorSprites(e){this.spriteRegistry.loadMulticolorSprites(e)}unloadUnicolorSprite(e){return this.spriteRegistry.unloadUnicolorSprite(e)}unloadMulticolorSprite(e){return this.spriteRegistry.unloadMulticolorSprite(e)}clearUnicolorSprites(){this.spriteRegistry.clearUnicolorSprites()}clearMulticolorSprites(){this.spriteRegistry.clearMulticolorSprites()}clearAllSprites(){this.spriteRegistry.clearAll()}getUnicolorSpriteCount(){return this.spriteRegistry.getUnicolorSpriteCount()}getMulticolorSpriteCount(){return this.spriteRegistry.getMulticolorSpriteCount()}getTotalSpriteCount(){return this.spriteRegistry.getTotalSpriteCount()}hasUnicolorSprite(e){return this.spriteRegistry.hasUnicolorSprite(e)}hasMulticolorSprite(e){return this.spriteRegistry.hasMulticolorSprite(e)}getSpriteRegistry(){return this.spriteRegistry}getSoundRegistry(){return this.soundRegistry}async loadSound(e,t){let r=this.detectSoundFormat(t),n=await this.loadSoundData(t);return this.soundRegistry.registerFile(e,r,n)}async loadSounds(e){let t={},n=Object.entries(e).map(async([o,i])=>{let s=await this.loadSound(o,i);t[o]=s});return await Promise.all(n),t}detectSoundFormat(e){let t=e.split(".").pop()?.toLowerCase()??"",r={mp3:"mp3",wav:"wav",ogg:"ogg",webm:"webm",aac:"aac",m4a:"aac"},n=r[t];if(!n)throw new Error(`Unsupported audio format: .${t}. Supported: ${Object.keys(r).join(", ")}`);return n}async loadSoundData(e){let t=globalThis;if(typeof t.document<"u"||typeof t.window<"u"||typeof t.fetch=="function")try{let n=await fetch(e);if(!n.ok)throw new Error(`HTTP ${n.status}: ${n.statusText}`);let o=await n.arrayBuffer();return new Uint8Array(o)}catch(n){let o=n instanceof Error?n.message:String(n);throw new Error(`Failed to load sound "${e}": ${o}`)}else{let n=typeof Ue<"u"?Ue:null;if(!n)throw new Error("Node.js require is not available");let s=n("fs").readFileSync(e);return new Uint8Array(s)}}registerSound(e,t,r){return this.soundRegistry.registerFile(e,t,r)}registerExternalSound(e,t,r,n){return this.soundRegistry.registerExternal(e,t,r,n)}hasSound(e){return this.soundRegistry.has(e)}generateSoundLoadPackets(){return this.soundRegistry.toLoadPackets()}loadDefaultWebFont(){this.webFontRegistry.loadFont(0,{fontFamily:"Courier New",fontSize:16,offsetX:0,offsetY:0,charSpacing:0,lineHeight:1,fontWeight:"normal",fontStyle:"normal"}),this.activeWebFontId=0}loadWebFont(e){let t=e.getFontId(),r=e.getConfig();this.webFontRegistry.loadFont(t,r)}getWebFont(e){return this.webFontRegistry.getFont(e)??null}hasWebFont(e){return this.webFontRegistry.hasFont(e)}unloadWebFont(e){if(e===0)throw new Error("Cannot unload default font (fontId 0)");return this.webFontRegistry.unloadFont(e)}clearWebFonts(){this.webFontRegistry.clearFonts(),this.loadDefaultWebFont()}setActiveWebFont(e){if(!this.webFontRegistry.hasFont(e))throw new Error(`WebFont with ID ${e} does not exist`);this.activeWebFontId=e}getActiveWebFontId(){return this.activeWebFontId}getActiveWebFont(){let e=this.webFontRegistry.getFont(this.activeWebFontId);if(!e)throw new Error(`Active WebFont ${this.activeWebFontId} not found. This should not happen.`);return e}getWebFontCount(){return this.webFontRegistry.getFontCount()}getWebFontIds(){return this.webFontRegistry.getFontIds()}getWebFontRegistry(){return this.webFontRegistry}getBitmapFontRegistry(){return this.bitmapFontRegistry}loadWebFontById(e,t){let r=new D(e,t);this.loadWebFont(r)}loadBitmapFontById(e,t){this.bitmapFontRegistry.loadFont(e,t),this.onBitmapFontChangedCallback&&this.onBitmapFontChangedCallback(e)}getBitmapFont(e){return this.bitmapFontRegistry.getFont(e)??null}hasBitmapFont(e){return this.bitmapFontRegistry.hasFont(e)}unloadBitmapFont(e){return this.bitmapFontRegistry.unloadFont(e)}clearBitmapFonts(){this.bitmapFontRegistry.clearFonts()}getBitmapFontCount(){return this.bitmapFontRegistry.getFontCount()}getBitmapFontIds(){return this.bitmapFontRegistry.getFontIds()}};C($,"Core"),x($,"ANSI_VGA_COLORS",[{colorId:240,r:16,g:16,b:16,a:255,e:0},{colorId:241,r:128,g:128,b:128,a:255,e:0},{colorId:242,r:192,g:192,b:192,a:255,e:0},{colorId:243,r:240,g:240,b:240,a:255,e:0},{colorId:244,r:200,g:50,b:50,a:255,e:0},{colorId:245,r:50,g:200,b:50,a:255,e:0},{colorId:246,r:220,g:180,b:50,a:255,e:0},{colorId:247,r:50,g:100,b:220,a:255,e:0},{colorId:248,r:50,g:200,b:200,a:255,e:0},{colorId:249,r:200,g:50,b:200,a:255,e:0},{colorId:250,r:220,g:120,b:50,a:255,e:0},{colorId:251,r:120,g:220,b:120,a:255,e:0},{colorId:252,r:120,g:180,b:220,a:255,e:0},{colorId:253,r:220,g:150,b:200,a:255,e:0},{colorId:254,r:250,g:220,b:150,a:255,e:0}]);var ct=$;import{Vector2 as ti}from"@utsp/types";var V=new Map([[24,new Uint8Array([0,24,60,126,255,255,0,0])],[25,new Uint8Array([0,0,255,255,126,60,24,0])],[26,new Uint8Array([0,48,120,252,252,120,48,0])],[27,new Uint8Array([0,12,30,63,63,30,12,0])],[32,new Uint8Array([0,0,0,0,0,0,0,0])],[33,new Uint8Array([24,24,24,24,24,0,24,0])],[34,new Uint8Array([108,108,108,0,0,0,0,0])],[35,new Uint8Array([54,54,127,54,127,54,54,0])],[36,new Uint8Array([12,63,104,62,11,126,24,0])],[37,new Uint8Array([96,102,12,24,48,102,6,0])],[38,new Uint8Array([56,108,108,56,109,102,59,0])],[39,new Uint8Array([24,24,24,0,0,0,0,0])],[40,new Uint8Array([12,24,48,48,48,24,12,0])],[41,new Uint8Array([48,24,12,12,12,24,48,0])],[42,new Uint8Array([0,102,60,255,60,102,0,0])],[43,new Uint8Array([0,24,24,126,24,24,0,0])],[44,new Uint8Array([0,0,0,0,0,24,24,48])],[45,new Uint8Array([0,0,0,126,0,0,0,0])],[46,new Uint8Array([0,0,0,0,0,24,24,0])],[47,new Uint8Array([0,6,12,24,48,96,0,0])],[48,new Uint8Array([60,102,110,126,118,102,60,0])],[49,new Uint8Array([24,56,24,24,24,24,126,0])],[50,new Uint8Array([60,102,6,12,24,48,126,0])],[51,new Uint8Array([60,102,6,28,6,102,60,0])],[52,new Uint8Array([12,28,60,108,126,12,12,0])],[53,new Uint8Array([126,96,124,6,6,102,60,0])],[54,new Uint8Array([28,48,96,124,102,102,60,0])],[55,new Uint8Array([126,6,12,24,48,48,48,0])],[56,new Uint8Array([60,102,102,60,102,102,60,0])],[57,new Uint8Array([60,102,102,62,6,12,56,0])],[58,new Uint8Array([0,0,24,24,0,24,24,0])],[59,new Uint8Array([0,0,24,24,0,24,24,48])],[60,new Uint8Array([12,24,48,96,48,24,12,0])],[61,new Uint8Array([0,0,126,0,126,0,0,0])],[62,new Uint8Array([48,24,12,6,12,24,48,0])],[63,new Uint8Array([60,102,12,24,24,0,24,0])],[64,new Uint8Array([60,102,110,106,110,96,60,0])],[65,new Uint8Array([60,102,102,126,102,102,102,0])],[66,new Uint8Array([124,102,102,124,102,102,124,0])],[67,new Uint8Array([60,102,96,96,96,102,60,0])],[68,new Uint8Array([120,108,102,102,102,108,120,0])],[69,new Uint8Array([126,96,96,124,96,96,126,0])],[70,new Uint8Array([126,96,96,124,96,96,96,0])],[71,new Uint8Array([60,102,96,110,102,102,60,0])],[72,new Uint8Array([102,102,102,126,102,102,102,0])],[73,new Uint8Array([126,24,24,24,24,24,126,0])],[74,new Uint8Array([62,12,12,12,12,108,56,0])],[75,new Uint8Array([102,108,120,112,120,108,102,0])],[76,new Uint8Array([96,96,96,96,96,96,126,0])],[77,new Uint8Array([99,119,127,107,99,99,99,0])],[78,new Uint8Array([102,102,118,126,110,102,102,0])],[79,new Uint8Array([60,102,102,102,102,102,60,0])],[80,new Uint8Array([124,102,102,124,96,96,96,0])],[81,new Uint8Array([60,102,102,102,106,108,54,0])],[82,new Uint8Array([124,102,102,124,108,102,102,0])],[83,new Uint8Array([60,102,96,60,6,102,60,0])],[84,new Uint8Array([126,24,24,24,24,24,24,0])],[85,new Uint8Array([102,102,102,102,102,102,60,0])],[86,new Uint8Array([102,102,102,102,102,60,24,0])],[87,new Uint8Array([99,99,99,107,127,119,99,0])],[88,new Uint8Array([102,102,60,24,60,102,102,0])],[89,new Uint8Array([102,102,102,60,24,24,24,0])],[90,new Uint8Array([126,6,12,24,48,96,126,0])],[91,new Uint8Array([60,48,48,48,48,48,60,0])],[92,new Uint8Array([0,96,48,24,12,6,0,0])],[93,new Uint8Array([60,12,12,12,12,12,60,0])],[94,new Uint8Array([24,60,102,0,0,0,0,0])],[95,new Uint8Array([0,0,0,0,0,0,255,0])],[96,new Uint8Array([48,24,12,0,0,0,0,0])],[97,new Uint8Array([0,0,60,6,62,102,62,0])],[98,new Uint8Array([96,96,124,102,102,102,124,0])],[99,new Uint8Array([0,0,60,102,96,102,60,0])],[100,new Uint8Array([6,6,62,102,102,102,62,0])],[101,new Uint8Array([0,0,60,102,126,96,60,0])],[102,new Uint8Array([28,54,48,124,48,48,48,0])],[103,new Uint8Array([0,0,62,102,102,62,6,60])],[104,new Uint8Array([96,96,124,102,102,102,102,0])],[105,new Uint8Array([24,0,56,24,24,24,60,0])],[106,new Uint8Array([12,0,28,12,12,12,108,56])],[107,new Uint8Array([96,96,102,108,120,108,102,0])],[108,new Uint8Array([56,24,24,24,24,24,60,0])],[109,new Uint8Array([0,0,102,127,107,107,99,0])],[110,new Uint8Array([0,0,124,102,102,102,102,0])],[111,new Uint8Array([0,0,60,102,102,102,60,0])],[112,new Uint8Array([0,0,124,102,102,124,96,96])],[113,new Uint8Array([0,0,62,102,102,62,6,6])],[114,new Uint8Array([0,0,108,118,96,96,96,0])],[115,new Uint8Array([0,0,62,96,60,6,124,0])],[116,new Uint8Array([48,48,124,48,48,54,28,0])],[117,new Uint8Array([0,0,102,102,102,102,62,0])],[118,new Uint8Array([0,0,102,102,102,60,24,0])],[119,new Uint8Array([0,0,99,107,107,127,54,0])],[120,new Uint8Array([0,0,102,60,24,60,102,0])],[121,new Uint8Array([0,0,102,102,102,62,6,60])],[122,new Uint8Array([0,0,126,12,24,48,126,0])],[123,new Uint8Array([14,24,24,112,24,24,14,0])],[124,new Uint8Array([24,24,24,24,24,24,24,0])],[125,new Uint8Array([112,24,24,14,24,24,112,0])],[126,new Uint8Array([49,107,70,0,0,0,0,0])],[179,new Uint8Array([24,24,24,24,24,24,24,24])],[196,new Uint8Array([0,0,0,255,0,0,0,0])],[218,new Uint8Array([0,0,0,31,24,24,24,24])],[191,new Uint8Array([0,0,0,248,24,24,24,24])],[192,new Uint8Array([24,24,24,31,0,0,0,0])],[217,new Uint8Array([24,24,24,248,0,0,0,0])],[195,new Uint8Array([24,24,24,31,24,24,24,24])],[180,new Uint8Array([24,24,24,248,24,24,24,24])],[194,new Uint8Array([0,0,0,255,24,24,24,24])],[193,new Uint8Array([24,24,24,255,0,0,0,0])],[197,new Uint8Array([24,24,24,255,24,24,24,24])],[186,new Uint8Array([54,54,54,54,54,54,54,54])],[205,new Uint8Array([0,0,0,255,0,255,0,0])],[201,new Uint8Array([0,0,0,63,54,54,54,54])],[187,new Uint8Array([0,0,0,252,54,54,54,54])],[200,new Uint8Array([54,54,54,63,0,0,0,0])],[188,new Uint8Array([54,54,54,252,0,0,0,0])],[204,new Uint8Array([54,54,54,63,54,54,54,54])],[185,new Uint8Array([54,54,54,252,54,54,54,54])],[203,new Uint8Array([0,0,0,255,54,54,54,54])],[202,new Uint8Array([54,54,54,255,0,0,0,0])],[206,new Uint8Array([54,54,54,255,54,54,54,54])],[219,new Uint8Array([255,255,255,255,255,255,255,255])],[178,new Uint8Array([170,85,170,85,170,85,170,85])],[177,new Uint8Array([136,34,136,34,136,34,136,34])],[176,new Uint8Array([34,136,34,136,34,136,34,136])],[223,new Uint8Array([255,255,255,255,0,0,0,0])],[220,new Uint8Array([0,0,0,0,255,255,255,255])],[221,new Uint8Array([240,240,240,240,240,240,240,240])],[222,new Uint8Array([15,15,15,15,15,15,15,15])]]);function br(g){return V.get(g)}C(br,"getCharBitmap");function yr(g){return V.has(g)}C(yr,"hasChar");function Sr(){return Array.from(V.keys()).sort((g,e)=>g-e)}C(Sr,"getAllCharCodes");function Ir(g){let e=Array.from(V.entries()).map(([t,r])=>({charCode:t,bitmap:r}));return{loadType:4,fontId:g,width:8,height:8,cellWidth:8,cellHeight:8,characters:e}}C(Ir,"createASCII8x8FontLoad");function fr(){return{charWidth:8,charHeight:8,glyphs:new Map(V)}}C(fr,"getASCII8x8FontConfig");function Ur(g,e,t,r,n,o,i,s=[]){let a=Array.from(e.entries()).sort((v,w)=>v[0]-w[0]),d=Array.from(t.entries()).sort((v,w)=>v[0]-w[0]),u=a.length,c=d.length,l=Me(u,c),p=new TextEncoder,h=s.map(v=>p.encode(v)),m=1+h.reduce((v,w)=>v+1+w.length,0),b=l+m,f=new Uint8Array(b),U=new DataView(f.buffer),y=0;U.setBigUint64(y,g,!0),y+=8;for(let[,v]of a){let w=ze(v);f[y]=w+256&255,y+=1}let O=_(c);for(let v=0;v<O;v++){let w=0;for(let M=0;M<8;M++){let ue=v*8+M;if(ue<c){let[,I]=d[ue];I&&(w|=1<<M)}}f[y]=w,y+=1}f[y]=r&255,y+=1,f[y]=n&255,y+=1,f[y]=o&255,y+=1;let B=0;i&&(B|=1),f[y]=B,y+=1,f[y]=Math.min(s.length,255),y+=1;for(let v of h)f[y]=Math.min(v.length,255),y+=1,f.set(v.slice(0,255),y),y+=v.length;return f}C(Ur,"encodeCompressedInput");var A=class A{static toCharCode(e){if(typeof e=="number")return e&255;let t=e.charCodeAt(0);return j(t)}static dedent(e){let t=e.split(`
8
+ `}),e}};b(et,"InputBindingRegistry");var se=et;function tt(m=0n){return{tick:m,axes:new Map,buttons:new Map,displayId:0,mouseX:0,mouseY:0,mouseOverDisplay:!1,textInputs:[],macroEvents:[]}}b(tt,"createEmptyCompressedInputPacket");function rt(m){let e=Math.max(-1,Math.min(1,m));return Math.round(e*127)}b(rt,"encodeAxisToInt8");function nt(m){return m/127}b(nt,"decodeInt8ToAxis");function V(m){return m===0?0:Math.ceil(m/8)}b(V,"getButtonByteCount");function ot(m,e){let r=m,n=V(e);return 8+r+n+4}b(ot,"getCompressedPacketSize");var it=class it{decode(e,t=0){let r=e.readUInt8(t);switch(r){case 1:return this.decodeClick(e,t);case 2:return this.decodeChange(e,t);case 3:return this.decodeSubmit(e,t);case 4:return this.decodeSelect(e,t);default:throw new Error(`Unknown macro event type: 0x${r.toString(16)}`)}}decodeAll(e,t,r){let n=[],o=0;for(let i=0;i<r;i++){let{event:s,bytesRead:a}=this.decode(e,t+o);n.push(s),o+=a}return{events:n,bytesRead:o}}decodeClick(e,t){let r=e.readUInt8(t),n=e.readUInt8(t+1);return{event:{type:r,instanceId:n},bytesRead:2}}decodeChange(e,t){let r=e.readUInt8(t),n=e.readUInt8(t+1),o=e.readUInt8(t+2),i,s;return o===1?(i=e.readUInt8(t+3)===1,s=4):(i=e.readFloatBE(t+3),s=7),{event:{type:r,instanceId:n,value:i},bytesRead:s}}decodeSubmit(e,t){let r=t,n=e.readUInt8(t++),o=e.readUInt8(t++),i=e.readUInt16BE(t);t+=2;let s=e.toUint8Array().subarray(t,t+i);t+=i;let a=new TextDecoder().decode(s);return{event:{type:n,instanceId:o,text:a},bytesRead:t-r}}decodeSelect(e,t){let r=e.readUInt8(t),n=e.readUInt8(t+1),o=e.readUInt16BE(t+2);return{event:{type:r,instanceId:n,index:o},bytesRead:4}}};b(it,"MacroEventDecoder");var we=it;T();function st(m,e){let t=e.getAllAxes().length,r=e.getAllButtons().length,n=V(r),o=8+t+n+4;if(m.length<o)throw new Error(`Invalid compressed input packet: expected at least ${o} bytes (${t} axes + ${r} buttons), got ${m.length}`);let i=new DataView(m.buffer,m.byteOffset,m.byteLength),s=0,a=tt();a.tick=i.getBigUint64(s,!0),s+=8;for(let c=0;c<t;c++){let u=m[s],l=u>127?u-256:u,p=nt(l);a.axes.set(c,p),s+=1}for(let c=0;c<n;c++){let u=m[s];for(let l=0;l<8;l++){let p=c*8+l;if(p<r){let h=(u&1<<l)!==0;a.buttons.set(p,h)}}s+=1}a.displayId=m[s],s+=1,a.mouseX=m[s],s+=1,a.mouseY=m[s],s+=1;let d=m[s];if(a.mouseOverDisplay=(d&1)!==0,s+=1,s<m.length){let c=m[s];s+=1;let u=new TextDecoder;a.textInputs=[];for(let l=0;l<c&&s<m.length;l++){let p=m[s];if(s+=1,s+p<=m.length){let h=m.slice(s,s+p),g=u.decode(h);a.textInputs.push(g),s+=p}}}if(s<m.length){let c=m[s];s+=1;let u=new we,l=[],p=I.from(m);for(let h=0;h<c&&s<m.length;h++){let g=u.decode(p,s);l.push(g.event),s+=g.bytesRead}a.macroEvents=l}return a}b(st,"decodeCompressedInput");import{Vector2 as ve}from"@utsp/types";var at=class at{constructor(e,t){x(this,"enabled",!1);x(this,"currentStats",null);x(this,"_userId");x(this,"_userName");this._userId=e,this._userName=t}setEnabled(e){this.enabled=e,e||(this.currentStats=null)}isEnabled(){return this.enabled}get userId(){return this.currentStats?.userId??this._userId}get userName(){return this.currentStats?.userName??this._userName}get tick(){return this.currentStats?.tick??0}get timestamp(){return this.currentStats?.timestamp??0}get displayCount(){return this.currentStats?.displayCount??0}get totalDisplayArea(){return this.currentStats?.totalDisplayArea??0}get totalLayers(){return this.currentStats?.totalLayers??0}get visibleLayers(){return this.currentStats?.visibleLayers??0}get staticLayers(){return this.currentStats?.staticLayers??0}get dynamicLayers(){return this.currentStats?.dynamicLayers??0}get totalOrders(){return this.currentStats?.totalOrders??0}get ordersByLayer(){return this.currentStats?.ordersByLayer??new Map}get staticPacketSize(){return this.currentStats?.staticPacketSize??0}get dynamicPacketSize(){return this.currentStats?.dynamicPacketSize??0}get totalPacketSize(){return this.currentStats?.totalPacketSize??0}get compressedPacketSize(){return Math.round(this.totalPacketSize*.25)}get hasInput(){return this.currentStats?.hasInput??!1}get axisCount(){return this.currentStats?.axisCount??0}get buttonCount(){return this.currentStats?.buttonCount??0}startTick(e){this.enabled&&(this.currentStats={userId:this._userId,userName:this._userName,tick:e,timestamp:Date.now(),displayCount:0,totalDisplayArea:0,totalLayers:0,visibleLayers:0,staticLayers:0,dynamicLayers:0,totalOrders:0,ordersByLayer:new Map,staticPacketSize:0,dynamicPacketSize:0,totalPacketSize:0,hasInput:!1,axisCount:0,buttonCount:0})}recordDisplays(e,t){!this.enabled||!this.currentStats||(this.currentStats.displayCount=e,this.currentStats.totalDisplayArea=t)}recordLayers(e,t,r,n){!this.enabled||!this.currentStats||(this.currentStats.totalLayers=e,this.currentStats.visibleLayers=t,this.currentStats.staticLayers=r,this.currentStats.dynamicLayers=n)}recordLayerOrders(e,t){!this.enabled||!this.currentStats||(this.currentStats.totalOrders+=t,this.currentStats.ordersByLayer.set(e,t))}recordPacketSizes(e,t){!this.enabled||!this.currentStats||(this.currentStats.staticPacketSize=e,this.currentStats.dynamicPacketSize=t,this.currentStats.totalPacketSize=e+t)}recordInput(e,t,r){!this.enabled||!this.currentStats||(this.currentStats.hasInput=e,this.currentStats.axisCount=t,this.currentStats.buttonCount=r)}endTick(){}reset(){this.currentStats=null}};b(at,"UserStats");var ae=at;var mt=class mt{constructor(e,t,r){this.id=e;this.name=t;x(this,"displays",[]);x(this,"layers",[]);x(this,"spriteRegistry");x(this,"mode");x(this,"axes",new Map);x(this,"buttons",new Map);x(this,"textInputs",[]);x(this,"mouseX",0);x(this,"mouseY",0);x(this,"mouseOver",!1);x(this,"mouseDisplayId",0);x(this,"touchPositions",new Map);x(this,"activeTouchId",null);x(this,"inputBindings",new se);x(this,"stats");x(this,"soundCommands",[]);x(this,"nextSoundInstanceId",1);x(this,"audioConfigCommands",[]);x(this,"lastListenerX",-1);x(this,"lastListenerY",-1);x(this,"pendingSendSounds",!1);x(this,"audioProcessor");x(this,"loadedSounds",new Map);x(this,"soundLoadErrors",new Map);x(this,"playingSounds",new Map);x(this,"macroRegistry",new re);x(this,"macroEngine",new ie);x(this,"macroEventHandlers",new Map);x(this,"data");this.mode=r,this.stats=new ae(e,t),this.data={}}setSpriteRegistry(e){this.spriteRegistry=e;for(let t of this.layers)t.setSpriteRegistry(e);this.macroEngine.setSpriteRegistry(e)}getDisplays(){return this.displays}addDisplay(e){this.displays.push(e)}removeDisplay(e){let t=this.displays.indexOf(e);return t!==-1?(this.displays.splice(t,1),!0):!1}clearDisplays(){this.displays=[]}getLayers(){return this.layers}getLayerById(e){return this.layers.find(t=>t.getId()===e)}addLayer(e,t){e.setMode(this.mode);let r=this.layers.length+1;e.setId(r),this.layers.push(e),this.spriteRegistry&&e.setSpriteRegistry(this.spriteRegistry),t&&this.macroRegistry.setLayerMapping(t,e.getId())}removeLayer(e){let t=this.layers.indexOf(e);return t!==-1?(this.layers.splice(t,1),!0):!1}clearLayers(){this.layers=[]}setMousePosition(e,t,r=!0){this.mouseX=Math.max(0,Math.min(255,e)),this.mouseY=Math.max(0,Math.min(255,t)),this.mouseOver=r}setTouchPosition(e,t,r,n=!0,o=0){if(e<0||e>9){console.warn(`Invalid touchId ${e}, must be 0-9`);return}n?(this.touchPositions.set(e,{x:Math.max(0,Math.min(255,t)),y:Math.max(0,Math.min(255,r)),over:!0,displayId:o}),this.activeTouchId=e):(this.touchPositions.delete(e),this.activeTouchId===e&&(this.activeTouchId=null))}setAxis(e,t){let r=Math.max(-1,Math.min(1,t));this.axes.set(e,r)}getAxis(e){return this.axes.get(e)??0}setButton(e,t){this.buttons.set(e,t)}getButton(e){return this.buttons.get(e)??!1}getButtonJustPressed(e){let t=`${e}_justPressed`;return this.buttons.get(t)??!1}getButtonJustReleased(e){let t=`${e}_justReleased`;return this.buttons.get(t)??!1}setTextInputs(e){this.textInputs=e}getTextInputs(){return this.textInputs}clearTextInputs(){this.textInputs=[]}getAxisNames(){return Array.from(this.axes.keys())}getButtonNames(){return Array.from(this.buttons.keys())}clearAxes(){this.axes.clear()}clearButtons(){this.buttons.clear()}getMouseDisplayInfo(){if(!this.mouseOver||this.displays.length===0)return null;let e=this.displays[0],t=0,r=this.mouseX,n=this.mouseY,o=e.getOrigin(),i=o.x+r,s=o.y+n;return{displayId:t,localX:r,localY:n,worldX:i,worldY:s}}getTouchDisplayInfo(e=0){if(e<0||e>9)return console.warn(`Invalid touchId ${e}, must be 0-9`),null;let t=this.touchPositions.get(e);if(!t||!t.over||this.displays.length===0)return null;let r=this.displays[0],n=t.displayId,o=t.x,i=t.y,s=r.getOrigin(),a=s.x+o,d=s.y+i;return{displayId:n,localX:o,localY:i,worldX:a,worldY:d}}getIsMouseOnADisplay(){return this.mouseOver}getMouseDisplayHover(){let e=this.getMouseDisplayInfo();return e?e.displayId:null}findLayerById(e){return this.layers.find(t=>t.getId()===e)??null}applyUpdate(e){if(this.updateDisplaysFromPacket(e.displays),this.updateLayersFromPacket(e.layers),e.macroOrders&&e.macroOrders.length>0)for(let t of e.macroOrders)this.macroEngine.applyOrder(t)}updateDisplaysFromPacket(e){for(let t of e){let r=this.displays[t.id];if(!r){for(r=new K(t.id,t.sizeX,t.sizeY);this.displays.length<=t.id;)this.displays.push(null);this.displays[t.id]=r}r.setOrigin(new ve(t.originX,t.originY)),r.setSize(new ve(t.sizeX,t.sizeY))}}updateLayersFromPacket(e){for(let t of e){let r=this.findLayerById(t.id);r||(r=new te(new ve(t.originX,t.originY),t.zIndex,t.width,t.height,!1),r.setId(t.id),r.setMode(this.mode),this.spriteRegistry&&r.setSpriteRegistry(this.spriteRegistry),this.addLayer(r)),t.updateFlags&1&&r.setOrigin(new ve(t.originX,t.originY)),t.updateFlags&2&&r.setZOrder(t.zIndex),t.updateFlags&4&&r.setOrders(t.orders)}}defineAxisBinding(e,t,r=[],n=-1,o=1,i=0){this.inputBindings.defineAxis(e,t,r,n,o,i)}defineButtonBinding(e,t,r=[],n=!1){this.inputBindings.defineButton(e,t,r,n)}defineAxisBindings(e){e.forEach(({bindingId:t,name:r,sources:n,min:o,max:i,defaultValue:s})=>{this.defineAxisBinding(t,r,n??[],o,i,s)})}defineButtonBindings(e){e.forEach(({bindingId:t,name:r,sources:n,defaultValue:o})=>{this.defineButtonBinding(t,r,n??[],o)})}getInputBindingsLoadPacket(){return this.inputBindings.toLoadPacket()}applyInputBindingsLoadPacket(e){try{let t=JSON.parse(e);if(t.type!=="input-binding")throw new Error(`Invalid packet type: ${t.type}`);for(let r of t.axes)this.defineAxisBinding(r.bindingId,r.name,r.sources||[],r.min,r.max,r.defaultValue);for(let r of t.buttons)this.defineButtonBinding(r.bindingId,r.name,r.sources||[],r.defaultValue)}catch(t){throw console.error("[User] Failed to apply input bindings:",t),t}}getInputBindingRegistry(){return this.inputBindings}getStats(){return this.stats}getAxisBindingId(e){return this.inputBindings.getAxisBindingId(e)}getButtonBindingId(e){return this.inputBindings.getButtonBindingId(e)}decodeAndApplyCompressedInput(e){let t=st(e,this.inputBindings),r=this.inputBindings.getAllAxes(),n=this.inputBindings.getAllButtons(),o=r.sort((s,a)=>s.bindingId-a.bindingId),i=n.sort((s,a)=>s.bindingId-a.bindingId);for(let[s,a]of t.axes)if(s<o.length){let d=o[s];this.setAxis(d.name,a)}for(let[s,a]of t.buttons)if(s<i.length){let d=i[s];this.setButton(d.name,a)}this.mouseX=t.mouseX,this.mouseY=t.mouseY,this.mouseOver=t.mouseOverDisplay,this.mouseDisplayId=t.displayId}playSound(e,t){let r=this.nextSoundInstanceId++,n={sound:e,instanceId:r,volume:t?.volume,pitch:t?.pitch,loop:t?.loop,fadeIn:t?.fadeIn,x:t?.x,y:t?.y,lowpass:t?.lowpass,highpass:t?.highpass,reverb:t?.reverb};return this.soundCommands.push(n),r}stopSound(e){let t={sound:e};this.soundCommands.push(t)}fadeOutSound(e,t){let r={fadeOut:!0,sound:e,duration:t};this.soundCommands.push(r)}fadeOutAllSounds(e){let t={fadeOut:!0,sound:"all",duration:e};this.soundCommands.push(t)}stopAllSounds(){let e={sound:"all"};this.soundCommands.push(e)}pauseSound(e){let t={pause:!0,sound:e};this.soundCommands.push(t)}pauseAllSounds(){let e={pause:!0,sound:"all"};this.soundCommands.push(e)}resumeSound(e){let t={resume:!0,sound:e};this.soundCommands.push(t)}resumeAllSounds(){let e={resume:!0,sound:"all"};this.soundCommands.push(e)}setSoundEffects(e,t){let r={setEffects:!0,instanceId:e,lowpass:t.lowpass,highpass:t.highpass,reverb:t.reverb};this.soundCommands.push(r)}setListenerPosition(e,t){e===this.lastListenerX&&t===this.lastListenerY||(this.lastListenerX=e,this.lastListenerY=t,this.audioConfigCommands.push({type:"set-listener-position",x:e,y:t}))}configureSpatialAudio(e){this.audioConfigCommands.push({type:"configure-spatial",...e})}flushAudioConfigCommands(){let e=this.audioConfigCommands;return this.audioConfigCommands=[],e}hasAudioConfigCommands(){return this.audioConfigCommands.length>0}flushSoundCommands(){let e=this.soundCommands;return this.soundCommands=[],e}hasSoundCommands(){return this.soundCommands.length>0}sendSounds(){this.pendingSendSounds=!0}needsSendSounds(){return this.pendingSendSounds}clearSendSounds(){this.pendingSendSounds=!1}setAudioProcessor(e){this.audioProcessor=e,this.macroEngine.setAudioCallback(t=>{e.play(t)})}getAudioProcessor(){return this.audioProcessor}applyAudioCommands(e){if(this.audioProcessor&&this.mode!=="server")for(let t of e){if("setEffects"in t&&t.setEffects===!0){let n=t;this.audioProcessor.setEffects(n.instanceId,n.lowpass,n.highpass,n.reverb);continue}if("fadeOut"in t&&t.fadeOut===!0){let n=t;this.audioProcessor.fadeOut(n.sound,n.duration);continue}if("pause"in t&&t.pause===!0){let n=t;this.audioProcessor.pause(n.sound);continue}if("resume"in t&&t.resume===!0){let n=t;this.audioProcessor.resume(n.sound);continue}if("instanceId"in t||"volume"in t||"pitch"in t||"loop"in t||"fadeIn"in t||"x"in t||"y"in t||"lowpass"in t||"highpass"in t||"reverb"in t){let n=t,o=n.x!==void 0&&n.y!==void 0?{x:n.x,y:n.y}:void 0;this.audioProcessor.play(n.sound,{volume:n.volume,pitch:n.pitch,loop:n.loop,fadeIn:n.fadeIn,position:o,instanceId:n.instanceId,lowpass:n.lowpass,highpass:n.highpass,reverb:n.reverb})}else{let n=t;n.sound==="all"?this.audioProcessor.stopAll():this.audioProcessor.stop(n.sound)}}}applyAudioConfigCommands(e){if(this.audioProcessor&&this.mode!=="server")for(let t of e)t.type==="set-listener-position"?this.audioProcessor.setListenerPosition(t.x,t.y):t.type==="configure-spatial"&&this.audioProcessor.configureSpatial({maxDistance:t.maxDistance,referenceDistance:t.referenceDistance,rolloffFactor:t.rolloffFactor,panSpread:t.panSpread})}applyAudioOrders(e){if(!this.audioProcessor||this.mode==="server")return;let{AudioOrderType:t,AudioTargetType:r}=(lt(),B(ir)),{PlaySoundFlags:n}=(pt(),B(ar));for(let o of e)switch(o.type){case t.PlaySound:case t.PlayGlobalSound:{let i=o,s=i.volume!==void 0?i.volume/255:void 0,a=i.pitch!==void 0?.25*Math.pow(2,i.pitch/64):void 0,d=i.fadeIn!==void 0?i.fadeIn/10:void 0,c=(i.flags&n.Loop)!==0,u=i.posX!==void 0&&i.posY!==void 0?{x:i.posX,y:i.posY}:void 0;this.audioProcessor.play(i.soundId,{volume:s,pitch:a,loop:c,fadeIn:d,position:u,instanceId:i.instanceId,lowpass:i.lowpass,highpass:i.highpass,reverb:i.reverb});break}case t.StopSound:{let i=o;i.targetType===r.All?this.audioProcessor.stopAll():i.targetType===r.InstanceId?this.audioProcessor.stop(i.target):this.audioProcessor.stop(i.target);break}case t.FadeOutSound:{let i=o,s=i.duration/10;i.targetType===r.All?this.audioProcessor.fadeOut("all",s):this.audioProcessor.fadeOut(i.target,s);break}case t.PauseSound:{let i=o;i.targetType===r.All?this.audioProcessor.pause("all"):this.audioProcessor.pause(i.target);break}case t.ResumeSound:{let i=o;i.targetType===r.All?this.audioProcessor.resume("all"):this.audioProcessor.resume(i.target);break}case t.SetListenerPosition:{let i=o;this.audioProcessor.setListenerPosition(i.x,i.y);break}case t.ConfigureSpatial:{let i=o;this.audioProcessor.configureSpatial({maxDistance:i.maxDistance*100,referenceDistance:i.referenceDistance*100,rolloffFactor:i.rolloffFactor/100,panSpread:i.panSpread/255});break}case t.SetSoundEffects:{let i=o;this.audioProcessor.setEffects(i.instanceId,i.lowpass,i.highpass,i.reverb);break}}}handleAudioAck(e){switch(e.type){case"sound-loaded":this.loadedSounds.set(e.soundId,{name:e.name,loadedAt:Date.now()}),this.soundLoadErrors.delete(e.soundId);break;case"sound-error":this.soundLoadErrors.set(e.soundId,{name:e.name,error:e.error,at:Date.now()});break;case"playback-started":this.playingSounds.set(e.instanceId,{soundId:e.soundId,startedAt:Date.now()});break;case"playback-ended":this.playingSounds.delete(e.instanceId);break;case"playback-error":e.instanceId!==void 0&&this.playingSounds.delete(e.instanceId);break}}isSoundLoaded(e){return this.loadedSounds.has(e)}getSoundLoadError(e){return this.soundLoadErrors.get(e)?.error}getLoadedSounds(){return this.loadedSounds}getSoundLoadErrors(){return this.soundLoadErrors}isSoundPlaying(e){return this.playingSounds.has(e)}getPlayingSounds(){return this.playingSounds}getPlayingSoundCount(){return this.playingSounds.size}loadMacro(e,t){let r={...t,id:e},n=this.macroRegistry.registerMacro(r);return this.mode==="client"&&this.macroEngine.loadTemplate(n,r),n}createInstance(e){return this.updateLayerMappings(),this.macroRegistry.createInstance(e)}updateInstance(e,t){return this.macroRegistry.updateInstance(e,t)}removeInstance(e){return this.macroEventHandlers.delete(e),this.macroRegistry.removeInstance(e)}onMacroEvent(e,t,r){this.macroEventHandlers.has(e)||this.macroEventHandlers.set(e,new Map),this.macroEventHandlers.get(e).set(t,r)}offMacroEvent(e,t){t?this.macroEventHandlers.get(e)?.delete(t):this.macroEventHandlers.delete(e)}handleMacroEvent(e){let t=this.macroRegistry.getInstanceName(e.instanceId);if(!t){console.warn(`MacroEvent: Unknown instance ID ${e.instanceId}`);return}let r=this.macroEventHandlers.get(t);if(!r)return;let n,o;switch(e.type){case 1:n="click",o=void 0;break;case 2:n="change",o=e.value;break;case 3:n="submit",o=e.text;break;case 4:n="select",o=e.index;break;default:return}let i=r.get(n);i&&i(o)}flushMacroOrders(){return this.macroRegistry.flushPendingOrders()}hasPendingMacroOrders(){return this.macroRegistry.hasPendingOrders()}applyMacroOrders(e){for(let t of e)this.macroEngine.applyOrder(t)}getMacroRegistry(){return this.macroRegistry}getMacroLoads(){return this.macroRegistry.toAllMacroLoads()}updateLayerMappings(){for(let e of this.layers){let t=e.getId()}}registerLayerName(e,t){this.macroRegistry.setLayerMapping(e,t.getId())}loadMacroTemplate(e,t){this.macroEngine.loadTemplate(e,t)}updateMacros(){return this.macroEngine.update()}updateMacroMouse(e,t,r){let n=this.displays.find(o=>o.getId()===this.mouseDisplayId);if(!n&&this.displays.length>0&&(n=this.displays[0]),n){let o=n.getOrigin(),i=e+o.x,s=t+o.y;this.macroEngine.updateMouse(i,s,r)}else this.macroEngine.updateMouse(e,t,r)}getMacroRenderOrders(){let e=this.macroEngine.getOrdersByLayer(),t=this.displays[0];if(!t)return e;let r=t.getOrigin();if(r.x===0&&r.y===0)return e;let n=new Map;for(let[o,i]of e){let s=i.map(a=>{let d={...a};return"posX"in d&&typeof d.posX=="number"&&(d.posX=d.posX-r.x),"posY"in d&&typeof d.posY=="number"&&(d.posY=d.posY-r.y),d});n.set(o,s)}return n}getMacroEffectOffset(){return this.macroEngine.getEffectOffset()}getMacroEngine(){return this.macroEngine}macroFocusNext(){this.macroEngine.focusNext()}macroFocusPrevious(){this.macroEngine.focusPrevious()}macroActivateFocused(){this.macroEngine.activateFocused()}};b(mt,"User");var de=mt;T();var ht=class ht{encode(e){switch(e.type){case 1:return this.encodeCharOrder(e);case 2:return this.encodeTextOrder(e);case 23:return this.encodeTextMultilineOrder(e);case 3:return this.encodeSubFrameOrder(e);case 4:return this.encodeSubFrameMultiColorOrder(e);case 5:return this.encodeFullFrameOrder(e);case 6:return this.encodeFullFrameMultiColorOrder(e);case 7:return this.encodeSpriteOrder(e);case 8:return this.encodeSpriteMultiColorOrder(e);case 9:return this.encodeColorMapOrder(e);case 10:return this.encodeShapeOrder(e);case 11:return this.encodeDotCloudOrder(e);case 12:return this.encodeDotCloudMultiColorOrder(e);case 17:return this.encodeBitmaskOrder(e);case 18:return this.encodeBitmask4Order(e);case 24:return this.encodeBitmask16Order(e);case 25:return this.encodePolylineOrder(e);case 13:return this.encodeSpriteCloudOrder(e);case 14:return this.encodeSpriteCloudMultiColorOrder(e);case 15:return this.encodeSpriteCloudVariedOrder(e);case 16:return this.encodeSpriteCloudVariedMultiColorOrder(e);case 19:return this.encodeClearOrder(e);case 20:return this.encodeFillCharOrder(e);case 21:return this.encodeFillSpriteOrder(e);case 22:return this.encodeFillSpriteMultiColorOrder(e);case 32:return this.encodeTriggerSoundOrder(e);case 33:return this.encodeTriggerGlobalSoundOrder(e);default:throw new Error(`Unknown order type: ${e.type}`)}}encodeCharOrder(e){let t=I.allocUnsafe(6),r=0;return t.writeUInt8(e.type,r++),t.writeUInt8(e.posX,r++),t.writeUInt8(e.posY,r++),t.writeUInt8(e.charCode,r++),t.writeUInt8(e.bgColorCode,r++),t.writeUInt8(e.fgColorCode,r++),t.toUint8Array()}encodeTextOrder(e){let t=new TextEncoder().encode(e.text),r=I.allocUnsafe(6+t.length),n=0;r.writeUInt8(e.type,n++),r.writeUInt8(e.posX,n++),r.writeUInt8(e.posY,n++),r.writeUInt8(t.length,n++);for(let o=0;o<t.length;o++)r.writeUInt8(t[o],n++);return r.writeUInt8(e.bgColorCode,n++),r.writeUInt8(e.fgColorCode,n++),r.toUint8Array()}encodeTextMultilineOrder(e){let t=new TextEncoder().encode(e.text),r=I.allocUnsafe(6+t.length),n=0;r.writeUInt8(e.type,n++),r.writeUInt8(e.posX,n++),r.writeUInt8(e.posY,n++),r.writeUInt8(t.length,n++);for(let o=0;o<t.length;o++)r.writeUInt8(t[o],n++);return r.writeUInt8(e.bgColorCode,n++),r.writeUInt8(e.fgColorCode,n++),r.toUint8Array()}encodeSubFrameOrder(e){let t=e.sizeX*e.sizeY,r=I.allocUnsafe(7+t),n=0;r.writeUInt8(e.type,n++),r.writeUInt8(e.posX,n++),r.writeUInt8(e.posY,n++),r.writeUInt8(e.sizeX,n++),r.writeUInt8(e.sizeY,n++),r.writeUInt8(e.bgColorCode,n++),r.writeUInt8(e.fgColorCode,n++);for(let o of e.frame)r.writeUInt8(o,n++);return r.toUint8Array()}encodeSubFrameMultiColorOrder(e){let t=e.sizeX*e.sizeY,r=I.allocUnsafe(5+t*3),n=0;r.writeUInt8(e.type,n++),r.writeUInt8(e.posX,n++),r.writeUInt8(e.posY,n++),r.writeUInt8(e.sizeX,n++),r.writeUInt8(e.sizeY,n++);for(let o of e.frame)r.writeUInt8(o.charCode,n++),r.writeUInt8(o.bgColorCode,n++),r.writeUInt8(o.fgColorCode,n++);return r.toUint8Array()}encodeFullFrameOrder(e){let t=e.frame.length,r=I.allocUnsafe(3+t),n=0;r.writeUInt8(e.type,n++),r.writeUInt8(e.bgColorCode,n++),r.writeUInt8(e.fgColorCode,n++);for(let o of e.frame)r.writeUInt8(o,n++);return r.toUint8Array()}encodeFullFrameMultiColorOrder(e){let t=e.frame.length,r=I.allocUnsafe(1+t*3),n=0;r.writeUInt8(e.type,n++);for(let o of e.frame)r.writeUInt8(o.charCode,n++),r.writeUInt8(o.bgColorCode,n++),r.writeUInt8(o.fgColorCode,n++);return r.toUint8Array()}encodeSpriteOrder(e){let t=I.allocUnsafe(6),r=0;return t.writeUInt8(e.type,r++),t.writeUInt8(e.posX,r++),t.writeUInt8(e.posY,r++),t.writeUInt8(e.spriteIndex,r++),t.writeUInt8(e.bgColorCode,r++),t.writeUInt8(e.fgColorCode,r++),t.toUint8Array()}encodeSpriteMultiColorOrder(e){let t=I.allocUnsafe(4),r=0;return t.writeUInt8(e.type,r++),t.writeUInt8(e.posX,r++),t.writeUInt8(e.posY,r++),t.writeUInt8(e.spriteIndex,r++),t.toUint8Array()}encodeColorMapOrder(e){let t=e.sizeX*e.sizeY,r=I.allocUnsafe(5+t*2),n=0;r.writeUInt8(e.type,n++),r.writeUInt8(e.posX,n++),r.writeUInt8(e.posY,n++),r.writeUInt8(e.sizeX,n++),r.writeUInt8(e.sizeY,n++);for(let o of e.colorData)r.writeUInt8(o.bgColorCode,n++),r.writeUInt8(o.fgColorCode,n++);return r.toUint8Array()}encodeShapeOrder(e){let t=this.encodeShapeData(e.shapeType,e.shapeData),r=I.allocUnsafe(2+t.length),n=0;r.writeUInt8(e.type,n++),r.writeUInt8(e.shapeType,n++);for(let o=0;o<t.length;o++)r.writeUInt8(t[o],n++);return r.toUint8Array()}encodeShapeData(e,t){switch(e){case 1:{let r=I.allocUnsafe(8),n=0;return r.writeUInt8(t.posX,n++),r.writeUInt8(t.posY,n++),r.writeUInt8(t.width,n++),r.writeUInt8(t.height,n++),r.writeUInt8(t.filled?1:0,n++),r.writeUInt8(t.charCode,n++),r.writeUInt8(t.bgColorCode,n++),r.writeUInt8(t.fgColorCode,n++),r.toUint8Array()}case 2:{let r=I.allocUnsafe(7),n=0;return r.writeUInt8(t.centerX,n++),r.writeUInt8(t.centerY,n++),r.writeUInt8(t.radius,n++),r.writeUInt8(t.filled?1:0,n++),r.writeUInt8(t.charCode,n++),r.writeUInt8(t.bgColorCode,n++),r.writeUInt8(t.fgColorCode,n++),r.toUint8Array()}case 3:{let r=I.allocUnsafe(7),n=0;return r.writeUInt8(t.x1,n++),r.writeUInt8(t.y1,n++),r.writeUInt8(t.x2,n++),r.writeUInt8(t.y2,n++),r.writeUInt8(t.charCode,n++),r.writeUInt8(t.bgColorCode,n++),r.writeUInt8(t.fgColorCode,n++),r.toUint8Array()}case 4:{let r=I.allocUnsafe(8),n=0;return r.writeUInt8(t.centerX,n++),r.writeUInt8(t.centerY,n++),r.writeUInt8(t.radiusX,n++),r.writeUInt8(t.radiusY,n++),r.writeUInt8(t.filled?1:0,n++),r.writeUInt8(t.charCode,n++),r.writeUInt8(t.bgColorCode,n++),r.writeUInt8(t.fgColorCode,n++),r.toUint8Array()}case 5:{let r=I.allocUnsafe(10),n=0;return r.writeUInt8(t.x1,n++),r.writeUInt8(t.y1,n++),r.writeUInt8(t.x2,n++),r.writeUInt8(t.y2,n++),r.writeUInt8(t.x3,n++),r.writeUInt8(t.y3,n++),r.writeUInt8(t.filled?1:0,n++),r.writeUInt8(t.charCode,n++),r.writeUInt8(t.bgColorCode,n++),r.writeUInt8(t.fgColorCode,n++),r.toUint8Array()}default:throw new Error(`Unknown shape type: ${e}`)}}encodeDotCloudOrder(e){let t=e.positions.length,r=I.allocUnsafe(6+t*2),n=0;r.writeUInt8(e.type,n++),r.writeUInt8(e.charCode,n++),r.writeUInt8(e.bgColorCode,n++),r.writeUInt8(e.fgColorCode,n++),r.writeUInt16BE(t,n),n+=2;for(let o of e.positions)r.writeUInt8(o.posX,n++),r.writeUInt8(o.posY,n++);return r.toUint8Array()}encodeDotCloudMultiColorOrder(e){let t=e.dots.length,r=I.allocUnsafe(5+t*5),n=0;r.writeUInt8(e.type,n++),r.writeUInt16BE(t,n),n+=2;for(let o of e.dots)r.writeUInt8(o.charCode,n++),r.writeUInt8(o.bgColorCode,n++),r.writeUInt8(o.fgColorCode,n++),r.writeUInt8(o.posX,n++),r.writeUInt8(o.posY,n++);return r.toUint8Array()}encodeBitmaskOrder(e){let t=e.mask.length,r=I.allocUnsafe(9+t),n=0;r.writeUInt8(e.type,n++),r.writeUInt8(e.posX,n++),r.writeUInt8(e.posY,n++),r.writeUInt8(e.sizeX,n++),r.writeUInt8(e.sizeY,n++),r.writeUInt8(e.charCode,n++),r.writeUInt8(e.bgColorCode,n++),r.writeUInt8(e.fgColorCode,n++),r.writeUInt8(e.override?1:0,n++);for(let o=0;o<t;o++)r.writeUInt8(e.mask[o],n++);return r.toUint8Array()}encodeBitmask4Order(e){let t=e.mask.length,r=I.allocUnsafe(15+t),n=0;r.writeUInt8(e.type,n++),r.writeUInt8(e.posX,n++),r.writeUInt8(e.posY,n++),r.writeUInt8(e.sizeX,n++),r.writeUInt8(e.sizeY,n++),r.writeUInt8(e.override?1:0,n++);for(let o of e.variants)r.writeUInt8(o.charCode,n++),r.writeUInt8(o.bgColorCode,n++),r.writeUInt8(o.fgColorCode,n++);for(let o=0;o<t;o++)r.writeUInt8(e.mask[o],n++);return r.toUint8Array()}encodeBitmask16Order(e){let t=e.mask.length,r=I.allocUnsafe(51+t),n=0;r.writeUInt8(e.type,n++),r.writeUInt8(e.posX,n++),r.writeUInt8(e.posY,n++),r.writeUInt8(e.sizeX,n++),r.writeUInt8(e.sizeY,n++),r.writeUInt8(e.override?1:0,n++);for(let o of e.variants)r.writeUInt8(o.charCode,n++),r.writeUInt8(o.bgColorCode,n++),r.writeUInt8(o.fgColorCode,n++);for(let o=0;o<t;o++)r.writeUInt8(e.mask[o],n++);return r.toUint8Array()}encodePolylineOrder(e){let t=e.points.length,r=I.allocUnsafe(5+t*2),n=0;r.writeUInt8(e.type,n++),r.writeUInt8(e.charCode,n++),r.writeUInt8(e.fgColorCode,n++),r.writeUInt8(e.bgColorCode,n++),r.writeUInt8(t,n++);for(let o of e.points)r.writeUInt8(o.x,n++),r.writeUInt8(o.y,n++);return r.toUint8Array()}encodeSpriteCloudOrder(e){let t=e.positions.length,r=I.allocUnsafe(8+t*2),n=0;r.writeUInt8(e.type,n++),r.writeUInt8(e.spriteIndex,n++),r.writeUInt8(e.bgColorCode,n++),r.writeUInt8(e.fgColorCode,n++),r.writeUInt16BE(t,n),n+=2;for(let o of e.positions)r.writeUInt8(o.posX,n++),r.writeUInt8(o.posY,n++);return r.toUint8Array()}encodeSpriteCloudMultiColorOrder(e){let t=e.positions.length,r=I.allocUnsafe(6+t*2),n=0;r.writeUInt8(e.type,n++),r.writeUInt8(e.spriteIndex,n++),r.writeUInt16BE(t,n),n+=2;for(let o of e.positions)r.writeUInt8(o.posX,n++),r.writeUInt8(o.posY,n++);return r.toUint8Array()}encodeSpriteCloudVariedOrder(e){let t=e.sprites.length,r=I.allocUnsafe(3+t*5),n=0;r.writeUInt8(e.type,n++),r.writeUInt16BE(t,n),n+=2;for(let o of e.sprites)r.writeUInt8(o.spriteIndex,n++),r.writeUInt8(o.bgColorCode,n++),r.writeUInt8(o.fgColorCode,n++),r.writeUInt8(o.posX,n++),r.writeUInt8(o.posY,n++);return r.toUint8Array()}encodeSpriteCloudVariedMultiColorOrder(e){let t=e.sprites.length,r=I.allocUnsafe(3+t*3),n=0;r.writeUInt8(e.type,n++),r.writeUInt16BE(t,n),n+=2;for(let o of e.sprites)r.writeUInt8(o.spriteIndex,n++),r.writeUInt8(o.posX,n++),r.writeUInt8(o.posY,n++);return r.toUint8Array()}encodeClearOrder(e){let t=I.allocUnsafe(4),r=0;return t.writeUInt8(e.type,r++),t.writeUInt8(e.charCode,r++),t.writeUInt8(e.bgColorCode,r++),t.writeUInt8(e.fgColorCode,r++),t.toUint8Array()}encodeFillCharOrder(e){let t=e.patternWidth*e.patternHeight,r=I.allocUnsafe(5+t),n=0;r.writeUInt8(e.type,n++),r.writeUInt8(e.patternWidth,n++),r.writeUInt8(e.patternHeight,n++),r.writeUInt8(e.bgColorCode,n++),r.writeUInt8(e.fgColorCode,n++);for(let o of e.pattern)r.writeUInt8(o,n++);return r.toUint8Array()}encodeFillSpriteOrder(e){let t=I.allocUnsafe(4),r=0;return t.writeUInt8(e.type,r++),t.writeUInt8(e.spriteIndex,r++),t.writeUInt8(e.bgColorCode,r++),t.writeUInt8(e.fgColorCode,r++),t.toUint8Array()}encodeFillSpriteMultiColorOrder(e){let t=I.allocUnsafe(2),r=0;return t.writeUInt8(e.type,r++),t.writeUInt8(e.spriteIndex,r++),t.toUint8Array()}encodeTriggerSoundOrder(e){let t=I.allocUnsafe(5),r=0;return t.writeUInt8(e.type,r++),t.writeUInt8(e.posX,r++),t.writeUInt8(e.posY,r++),t.writeUInt8(e.soundId,r++),t.writeUInt8(e.loop?1:0,r++),t.toUint8Array()}encodeTriggerGlobalSoundOrder(e){let t=I.allocUnsafe(3),r=0;return t.writeUInt8(e.type,r++),t.writeUInt8(e.soundId,r++),t.writeUInt8(e.loop?1:0,r++),t.toUint8Array()}};b(ht,"OrderEncoder");var Me=ht;T();var gt=class gt{constructor(){x(this,"orderEncoder");this.orderEncoder=new Me}encode(e){let t=e.orders.map(a=>this.orderEncoder.encode(a)),r=13,n=t.reduce((a,d)=>a+d.length,0),o=r+n,i=I.allocUnsafe(o),s=0;i.writeUInt16BE(e.id,s),s+=2,i.writeUInt8(e.updateFlags,s++),i.writeUInt8(e.zIndex,s++),i.writeUInt16BE(e.originX,s),s+=2,i.writeUInt16BE(e.originY,s),s+=2,i.writeUInt16BE(e.width,s),s+=2,i.writeUInt16BE(e.height,s),s+=2,i.writeUInt8(e.orders.length,s++);for(let a of t)I.from(a).copy(i,s),s+=a.length;return i.toUint8Array()}calculateSize(e){return 13+e.orders.reduce((n,o)=>n+this.orderEncoder.encode(o).length,0)}};b(gt,"LayerEncoder");var Ae=gt;T();var xt=class xt{encode(e){switch(e.type){case 1:return this.encodePlaySoundOrder(e);case 2:return this.encodePlayGlobalSoundOrder(e);case 3:return this.encodeStopSoundOrder(e);case 4:return this.encodeFadeOutSoundOrder(e);case 5:return this.encodePauseSoundOrder(e);case 6:return this.encodeResumeSoundOrder(e);case 7:return this.encodeSetListenerPositionOrder(e);case 8:return this.encodeConfigureSpatialOrder(e);case 9:return this.encodeSetSoundEffectsOrder(e);default:throw new Error(`Unknown audio order type: ${e.type}`)}}calculateSize(e){switch(e.type){case 1:return this.calculatePlaySoundSize(e);case 2:return this.calculatePlayGlobalSoundSize(e);case 3:case 5:case 6:return this.calculateTargetOrderSize(e);case 4:return this.calculateFadeOutSize(e);case 7:return 5;case 8:return 5;case 9:return this.calculateSetSoundEffectsSize(e);default:throw new Error(`Unknown audio order type: ${e.type}`)}}encodePlaySoundOrder(e){let t=this.calculatePlaySoundSize(e),r=I.allocUnsafe(t),n=0;return r.writeUInt8(e.type,n++),r.writeUInt8(e.soundId,n++),r.writeUInt16BE(e.instanceId,n),n+=2,r.writeUInt8(e.flags,n++),e.flags&2&&r.writeUInt8(e.volume??255,n++),e.flags&4&&r.writeUInt8(e.pitch??128,n++),e.flags&8&&r.writeUInt8(e.fadeIn??0,n++),e.flags&16&&(r.writeUInt16BE(e.posX??0,n),n+=2,r.writeUInt16BE(e.posY??0,n),n+=2),e.flags&32&&r.writeUInt8(e.lowpass??0,n++),e.flags&64&&r.writeUInt8(e.highpass??0,n++),e.flags&128&&r.writeUInt8(e.reverb??0,n++),r.toUint8Array()}encodePlayGlobalSoundOrder(e){let t=this.calculatePlayGlobalSoundSize(e),r=I.allocUnsafe(t),n=0;r.writeUInt8(e.type,n++),r.writeUInt8(e.soundId,n++),r.writeUInt16BE(e.instanceId,n),n+=2;let o=e.flags&-17;return r.writeUInt8(o,n++),o&2&&r.writeUInt8(e.volume??255,n++),o&4&&r.writeUInt8(e.pitch??128,n++),o&8&&r.writeUInt8(e.fadeIn??0,n++),o&32&&r.writeUInt8(e.lowpass??0,n++),o&64&&r.writeUInt8(e.highpass??0,n++),o&128&&r.writeUInt8(e.reverb??0,n++),r.toUint8Array()}calculatePlaySoundSize(e){let t=5;return e.flags&2&&(t+=1),e.flags&4&&(t+=1),e.flags&8&&(t+=1),e.flags&16&&(t+=4),e.flags&32&&(t+=1),e.flags&64&&(t+=1),e.flags&128&&(t+=1),t}calculatePlayGlobalSoundSize(e){let t=5,r=e.flags&-17;return r&2&&(t+=1),r&4&&(t+=1),r&8&&(t+=1),r&32&&(t+=1),r&64&&(t+=1),r&128&&(t+=1),t}encodeStopSoundOrder(e){return this.encodeTargetOrder(e.type,e.targetType,e.target)}encodePauseSoundOrder(e){return this.encodeTargetOrder(e.type,e.targetType,e.target)}encodeResumeSoundOrder(e){return this.encodeTargetOrder(e.type,e.targetType,e.target)}encodeFadeOutSoundOrder(e){let t=this.calculateFadeOutSize(e),r=I.allocUnsafe(t),n=0;return r.writeUInt8(e.type,n++),r.writeUInt8(e.targetType,n++),r.writeUInt8(e.duration,n++),e.targetType===0?r.writeUInt16BE(e.target??0,n):e.targetType===1&&r.writeUInt8(e.target??0,n),r.toUint8Array()}encodeTargetOrder(e,t,r){let n=2;t===0?n+=2:t===1&&(n+=1);let o=I.allocUnsafe(n),i=0;return o.writeUInt8(e,i++),o.writeUInt8(t,i++),t===0?o.writeUInt16BE(r??0,i):t===1&&o.writeUInt8(r??0,i),o.toUint8Array()}calculateTargetOrderSize(e){let t=2;return e.targetType===0?t+=2:e.targetType===1&&(t+=1),t}calculateFadeOutSize(e){let t=3;return e.targetType===0?t+=2:e.targetType===1&&(t+=1),t}encodeSetListenerPositionOrder(e){let t=I.allocUnsafe(5),r=0;return t.writeUInt8(e.type,r++),t.writeUInt16BE(e.x,r),r+=2,t.writeUInt16BE(e.y,r),t.toUint8Array()}encodeConfigureSpatialOrder(e){let t=I.allocUnsafe(5),r=0;return t.writeUInt8(e.type,r++),t.writeUInt8(e.maxDistance,r++),t.writeUInt8(e.referenceDistance,r++),t.writeUInt8(e.rolloffFactor,r++),t.writeUInt8(e.panSpread,r++),t.toUint8Array()}encodeSetSoundEffectsOrder(e){let t=this.calculateSetSoundEffectsSize(e),r=I.allocUnsafe(t),n=0;return r.writeUInt8(e.type,n++),r.writeUInt16BE(e.instanceId,n),n+=2,r.writeUInt8(e.flags,n++),e.flags&1&&r.writeUInt8(e.lowpass??0,n++),e.flags&2&&r.writeUInt8(e.highpass??0,n++),e.flags&4&&r.writeUInt8(e.reverb??0,n++),r.toUint8Array()}calculateSetSoundEffectsSize(e){let t=4;return e.flags&1&&(t+=1),e.flags&2&&(t+=1),e.flags&4&&(t+=1),t}};b(xt,"AudioOrderEncoder");var Ee=xt;T();var bt=class bt{encode(e){switch(e.type){case 1:return this.encodeCreateInstance(e);case 2:return this.encodeUpdateInstance(e);case 3:return this.encodeRemoveInstance(e);default:throw new Error(`Unknown macro order type: ${e.type}`)}}calculateSize(e){switch(e.type){case 1:return this.calculateCreateInstanceSize(e);case 2:return this.calculateUpdateInstanceSize(e);case 3:return 2;default:throw new Error(`Unknown macro order type: ${e.type}`)}}encodeCreateInstance(e){let t=JSON.stringify(e.params),r=new TextEncoder().encode(t);if(r.length>65535)throw new Error(`Params JSON too large: ${r.length} bytes (max 65535)`);let n=11+r.length,o=I.allocUnsafe(n),i=0;return o.writeUInt8(e.type,i++),o.writeUInt8(e.instanceId,i++),o.writeUInt8(e.macroId,i++),o.writeUInt8(e.layerId,i++),o.writeInt16BE(e.x,i),i+=2,o.writeInt16BE(e.y,i),i+=2,o.writeUInt8(e.tabIndex,i++),o.writeUInt16BE(r.length,i),i+=2,o.toUint8Array().set(r,i),o.toUint8Array()}calculateCreateInstanceSize(e){let t=JSON.stringify(e.params);return 11+new TextEncoder().encode(t).length}encodeUpdateInstance(e){let t=JSON.stringify(e.params),r=new TextEncoder().encode(t);if(r.length>65535)throw new Error(`Params JSON too large: ${r.length} bytes (max 65535)`);let n=4+r.length,o=I.allocUnsafe(n),i=0;return o.writeUInt8(e.type,i++),o.writeUInt8(e.instanceId,i++),o.writeUInt16BE(r.length,i),i+=2,o.toUint8Array().set(r,i),o.toUint8Array()}calculateUpdateInstanceSize(e){let t=JSON.stringify(e.params);return 4+new TextEncoder().encode(t).length}encodeRemoveInstance(e){let t=I.allocUnsafe(2);return t.writeUInt8(e.type,0),t.writeUInt8(e.instanceId,1),t.toUint8Array()}};b(bt,"MacroOrderEncoder");var ke=bt;T();var yt=class yt{constructor(){x(this,"layerEncoder");x(this,"audioOrderEncoder");x(this,"macroOrderEncoder");this.layerEncoder=new Ae,this.audioOrderEncoder=new Ee,this.macroOrderEncoder=new ke}encode(e){let t=e.layers.map(f=>this.layerEncoder.encode(f)),r=e.audioOrders||[],n=r.map(f=>this.audioOrderEncoder.encode(f)),o=e.macroOrders||[],i=o.map(f=>this.macroOrderEncoder.encode(f)),s=9,a=e.displays.length*7,d=2,c=t.reduce((f,w)=>f+w.length,0),u=1,l=n.reduce((f,w)=>f+w.length,0),p=1,h=i.reduce((f,w)=>f+w.length,0),g=s+a+d+c+u+l+p+h,y=I.allocUnsafe(g),C=0,O=typeof e.tick=="bigint"?e.tick:BigInt(e.tick);y.writeBigUInt64BE(O,C),C+=8,y.writeUInt8(e.displays.length,C),C+=1;for(let f of e.displays)y.writeUInt8(f.id,C++),y.writeUInt16BE(f.originX,C),C+=2,y.writeUInt16BE(f.originY,C),C+=2,y.writeUInt8(Math.max(1,Math.min(256,f.sizeX))-1,C++),y.writeUInt8(Math.max(1,Math.min(256,f.sizeY))-1,C++);y.writeUInt16BE(e.layers.length,C),C+=2;for(let f of t)I.from(f).copy(y,C),C+=f.length;y.writeUInt8(r.length,C),C+=1;for(let f of n)I.from(f).copy(y,C),C+=f.length;y.writeUInt8(o.length,C),C+=1;for(let f of i)I.from(f).copy(y,C),C+=f.length;return y.toUint8Array()}calculateSize(e){let r=e.displays.length*7,n=2,o=e.layers.reduce((l,p)=>l+this.layerEncoder.calculateSize(p),0),i=1,a=(e.audioOrders||[]).reduce((l,p)=>l+this.audioOrderEncoder.calculateSize(p),0),d=1,u=(e.macroOrders||[]).reduce((l,p)=>l+this.macroOrderEncoder.calculateSize(p),0);return 9+r+n+o+i+a+d+u}static createEmptyPacket(e){return{tick:typeof e=="bigint"?Number(e):e,displayCount:0,displays:[],layerCount:0,layers:[],audioOrderCount:0,audioOrders:[],macroOrderCount:0,macroOrders:[]}}encodeEmpty(e){let t=I.allocUnsafe(13),r=typeof e=="bigint"?e:BigInt(e);return t.writeBigUInt64BE(r,0),t.writeUInt8(0,8),t.writeUInt16BE(0,9),t.writeUInt8(0,11),t.writeUInt8(0,12),t.toUint8Array()}};b(yt,"UpdatePacketEncoder");var Re=yt;T();var ft=class ft{encode(e){let t=JSON.stringify(e.template),r=new TextEncoder().encode(t);if(r.length>65535)throw new Error(`Macro template JSON too large: ${r.length} bytes (max 65535)`);let n=4+r.length,o=I.allocUnsafe(n),i=0;return o.writeUInt8(7,i++),o.writeUInt8(e.macroId,i++),o.writeUInt16BE(r.length,i),i+=2,o.toUint8Array().set(r,i),o.toUint8Array()}calculateSize(e){let t=JSON.stringify(e.template);return 4+new TextEncoder().encode(t).length}};b(ft,"MacroLoadEncoder");var Be=ft;var $=class ${constructor(e){this.engine=e;x(this,"colorCache",new Array(256));x(this,"cellsBuffer",[]);x(this,"opacityBuffer",new Uint8Array(0));x(this,"visibleLayersBuffer",[]);this.rebuildColorCache()}rebuildColorCache(){for(let e=0;e<256;e++){let t=this.engine.getColor(e);t?this.colorCache[e]={r:t.r,g:t.g,b:t.b,a:t.a}:this.colorCache[e]={r:0,g:0,b:0,a:0}}}getColorRGB(e){return this.colorCache[e]??this.colorCache[255]}getColorEmission(e){let t=this.engine.getColor(e);return t?t.e:0}isLayerVisible(e,t){let r=e.x,n=e.x+e.width,o=e.y,i=e.y+e.height,s=t.x,a=t.x+256,d=t.y,c=t.y+256;return!(n<=s||r>=a||i<=d||o>=c)}rasterize(e,t){let r=e.width*e.height,n=this.cellsBuffer;n.length=r;for(let s=0;s<r;s++)n[s]?(n[s].char=" ",n[s].fgColorIndex=255,n[s].bgColorIndex=255,n[s].fgEmission=0,n[s].bgEmission=0):n[s]={char:" ",fgColorIndex:255,bgColorIndex:255,fgEmission:0,bgEmission:0};this.opacityBuffer.length<r?this.opacityBuffer=new Uint8Array(r):this.opacityBuffer.fill(0,0,r);let o=this.opacityBuffer,i=this.visibleLayersBuffer;i.length=0;for(let s=0;s<t.length;s++){let a=t[s];a.isEnabled()&&this.isLayerVisible(e,a.getOrigin())&&i.push(a)}i.sort((s,a)=>a.getZOrder()-s.getZOrder());for(let s=0;s<e.height;s++)for(let a=0;a<e.width;a++){let d=s*e.width+a;if(o[d])continue;let c=e.x+a,u=e.y+s;for(let l=0;l<i.length;l++){let p=i[l],h=c-p.getOrigin().x,g=u-p.getOrigin().y,y=p.getWidth(),C=p.getHeight();if(h<0||h>=y||g<0||g>=C)continue;let O=g*y+h,f=p.getData(),w=f.getCharCode(O),U=f.getFgColorCode(O),k=f.getBgColorCode(O),v=n[d];if(w!==0&&w<256&&v.char===" "&&(v.char=$.charCache[w]),U!==255&&v.fgColorIndex===255&&(v.fgColorIndex=U,v.fgEmission=this.getColorEmission(U)),k!==255){v.bgColorIndex===255&&(v.bgColorIndex=k,v.bgEmission=this.getColorEmission(k)),o[d]=1;break}}}return{width:e.width,height:e.height,cells:n,palette:this.colorCache}}rasterizeWithSortedLayers(e,t){let r=e.width*e.height,n=this.cellsBuffer;n.length=r;for(let s=0;s<r;s++)n[s]?(n[s].char=" ",n[s].fgColorIndex=255,n[s].bgColorIndex=255,n[s].fgEmission=0,n[s].bgEmission=0):n[s]={char:" ",fgColorIndex:255,bgColorIndex:255,fgEmission:0,bgEmission:0};this.opacityBuffer.length<r?this.opacityBuffer=new Uint8Array(r):this.opacityBuffer.fill(0,0,r);let o=this.opacityBuffer,i=this.visibleLayersBuffer;i.length=0;for(let s=0;s<t.length;s++){let a=t[s];this.isLayerVisible(e,a.getOrigin())&&i.push(a)}for(let s=0;s<e.height;s++)for(let a=0;a<e.width;a++){let d=s*e.width+a;if(o[d])continue;let c=e.x+a,u=e.y+s;for(let l=0;l<i.length;l++){let p=i[l],h=c-p.getOrigin().x,g=u-p.getOrigin().y,y=p.getWidth(),C=p.getHeight();if(h<0||h>=y||g<0||g>=C)continue;let O=g*y+h,f=p.getData(),w=f.getCharCode(O),U=f.getFgColorCode(O),k=f.getBgColorCode(O),v=n[d];if(w!==0&&w<256&&v.char===" "&&(v.char=$.charCache[w]),U!==255&&v.fgColorIndex===255&&(v.fgColorIndex=U,v.fgEmission=this.getColorEmission(U)),k!==255){v.bgColorIndex===255&&(v.bgColorIndex=k,v.bgEmission=this.getColorEmission(k)),o[d]=1;break}}}return{width:e.width,height:e.height,cells:n,palette:this.colorCache}}calculateIntersection(e,t){let r=e.x,n=e.x+e.width,o=e.y,i=e.y+e.height,s=t.x,a=t.x+256,d=t.y,c=t.y+256,u=Math.max(r,s),l=Math.min(n,a),p=Math.max(o,d),h=Math.min(i,c);return{visible:u<l&&p<h,originStart:{x:u-e.x,y:p-e.y},originEnd:{x:l-e.x,y:h-e.y},layerStart:{x:u-t.x,y:p-t.y},layerEnd:{x:l-t.x,y:h-t.y}}}};b($,"DisplayRasterizer"),x($,"charCache",(()=>{let e=new Array(256);for(let t=0;t<256;t++)e[t]=String.fromCharCode(t);return e})());var Te=$;var It=class It{constructor(){x(this,"enabled",!1);x(this,"currentStats",null)}setEnabled(e){this.enabled=e,e||(this.currentStats=null)}isEnabled(){return this.enabled}get tick(){return this.currentStats?.tick??0}get timestamp(){return this.currentStats?.timestamp??0}get totalOrders(){return this.currentStats?.totalOrders??0}get ordersByLayer(){return this.currentStats?.ordersByLayer??new Map}get ordersByType(){return this.currentStats?.ordersByType??new Map}get totalLayers(){return this.currentStats?.totalLayers??0}get visibleLayers(){return this.currentStats?.visibleLayers??0}get layersPerDisplay(){return this.currentStats?.layersPerDisplay??new Map}get updatePacketSize(){return this.currentStats?.updatePacketSize??0}get displayHeaderSize(){return this.currentStats?.displayHeaderSize??0}get layerHeaderSize(){return this.currentStats?.layerHeaderSize??0}get orderDataSize(){return this.currentStats?.orderDataSize??0}get compressionRatio(){return this.currentStats?.compressionRatio??0}get compressedPacketSize(){return Math.round(this.updatePacketSize*this.compressionRatio)}get totalCells(){return this.currentStats?.totalCells??0}get nonEmptyCells(){return this.currentStats?.nonEmptyCells??0}get cellsWithBackground(){return this.currentStats?.cellsWithBackground??0}get rasterizationTimeMs(){return this.currentStats?.rasterizationTimeMs??0}get encodingTimeMs(){return this.currentStats?.encodingTimeMs??0}get packetSplit(){return this.currentStats?.packetSplit}get layerDetails(){return this.currentStats?.layerDetails}startTick(e){this.enabled&&(this.currentStats={tick:e,timestamp:Date.now(),totalOrders:0,ordersByLayer:new Map,ordersByType:new Map,totalLayers:0,visibleLayers:0,layersPerDisplay:new Map,updatePacketSize:0,displayHeaderSize:0,layerHeaderSize:0,orderDataSize:0,compressionRatio:0,totalCells:0,nonEmptyCells:0,cellsWithBackground:0,rasterizationTimeMs:0,encodingTimeMs:0})}recordLayerOrders(e,t){if(!(!this.enabled||!this.currentStats)){this.currentStats.totalOrders+=t.length,this.currentStats.ordersByLayer.set(e,t.length);for(let r of t){let n=this.currentStats.ordersByType.get(r.type)||0;this.currentStats.ordersByType.set(r.type,n+1)}}}recordLayers(e,t){!this.enabled||!this.currentStats||(this.currentStats.totalLayers=e,this.currentStats.visibleLayers=t)}recordDisplayLayers(e,t){!this.enabled||!this.currentStats||this.currentStats.layersPerDisplay.set(e,t)}recordUpdatePacketSize(e,t,r,n){!this.enabled||!this.currentStats||(this.currentStats.updatePacketSize=e,this.currentStats.displayHeaderSize=t,this.currentStats.layerHeaderSize=r,this.currentStats.orderDataSize=n,this.currentStats.compressionRatio=.25)}recordPacketSplit(e,t,r,n){!this.enabled||!this.currentStats||(this.currentStats.packetSplit={userId:e,displayCount:t,staticLayerCount:r,dynamicLayerCount:n})}recordLayerInfo(e,t,r,n){!this.enabled||!this.currentStats||(this.currentStats.layerDetails||(this.currentStats.layerDetails=[]),this.currentStats.layerDetails.push({layerId:e,isStatic:t,orderCount:r,updateFlags:n}))}recordRenderStats(e,t,r){!this.enabled||!this.currentStats||(this.currentStats.totalCells=e,this.currentStats.nonEmptyCells=t,this.currentStats.cellsWithBackground=r)}recordRasterizationTime(e){!this.enabled||!this.currentStats||(this.currentStats.rasterizationTimeMs=e)}recordEncodingTime(e){!this.enabled||!this.currentStats||(this.currentStats.encodingTimeMs=e)}endTick(){}reset(){this.currentStats=null}};b(It,"CoreStats");var ce=It;var St=class St{constructor(){x(this,"unicolorSprites",new Map);x(this,"multicolorSprites",new Map)}loadUnicolorSprites(e){for(let t of e.sprites){let r=new Q(t.sizeX*t.sizeY);for(let o=0;o<t.data.length;o++)r.set(o,t.data[o]);let n={id:t.spriteId,sizeX:t.sizeX,sizeY:t.sizeY,data:r};this.unicolorSprites.set(n.id,n)}}loadMulticolorSprites(e){for(let t of e.sprites){let r=new X(t.sizeX*t.sizeY);for(let o=0;o<t.data.length;o++){let i=t.data[o];r.set(o,i.charCode,i.fgColorId,i.bgColorId)}let n={id:t.spriteId,sizeX:t.sizeX,sizeY:t.sizeY,data:r};this.multicolorSprites.set(n.id,n)}}getUnicolorSprite(e){return this.unicolorSprites.get(e)}getMulticolorSprite(e){return this.multicolorSprites.get(e)}hasUnicolorSprite(e){return this.unicolorSprites.has(e)}hasMulticolorSprite(e){return this.multicolorSprites.has(e)}unloadUnicolorSprite(e){return this.unicolorSprites.delete(e)}unloadMulticolorSprite(e){return this.multicolorSprites.delete(e)}clearUnicolorSprites(){this.unicolorSprites.clear()}clearMulticolorSprites(){this.multicolorSprites.clear()}clearAll(){this.unicolorSprites.clear(),this.multicolorSprites.clear()}getUnicolorSpriteCount(){return this.unicolorSprites.size}getMulticolorSpriteCount(){return this.multicolorSprites.size}getTotalSpriteCount(){return this.unicolorSprites.size+this.multicolorSprites.size}};b(St,"SpriteRegistry");var le=St;var dr=(t=>(t.Web="web",t.Bitmap="bitmap",t))(dr||{}),Ut=class Ut{constructor(e,t){this.fontId=e;this.config=t}getFontId(){return this.fontId}getConfig(){return{...this.config}}getFontFamily(){return this.config.fontFamily}getFontSize(){return this.config.fontSize}getOffsetX(){return this.config.offsetX??0}getOffsetY(){return this.config.offsetY??0}getCharSpacing(){return this.config.charSpacing??0}getLineHeight(){return this.config.lineHeight??1.2}getFontWeight(){return this.config.fontWeight??"normal"}getFontStyle(){return this.config.fontStyle??"normal"}toCSS(){let e=[];e.push(`font-family: ${this.config.fontFamily}`),e.push(`font-size: ${this.config.fontSize}px`);let t=this.config.fontWeight??"normal";t!=="normal"&&e.push(`font-weight: ${t}`);let r=this.config.fontStyle??"normal";return r!=="normal"&&e.push(`font-style: ${r}`),e.join("; ")+";"}};b(Ut,"WebFont");var H=Ut,Ot=class Ot{constructor(e,t){this.fontId=e;this.config=t}getFontId(){return this.fontId}getConfig(){return{charWidth:this.config.charWidth,charHeight:this.config.charHeight,cellWidth:this.config.cellWidth,cellHeight:this.config.cellHeight,glyphs:new Map(this.config.glyphs)}}getCharWidth(){return this.config.charWidth}getCharHeight(){return this.config.charHeight}getCellWidth(){return this.config.cellWidth??this.config.charWidth}getCellHeight(){return this.config.cellHeight??this.config.charHeight}getGlyph(e){return this.config.glyphs.get(e)}hasGlyph(e){return this.config.glyphs.has(e)}getGlyphCount(){return this.config.glyphs.size}getCharCodes(){return Array.from(this.config.glyphs.keys())}};b(Ot,"BitmapFont");var ue=Ot;var wt=class wt{constructor(){x(this,"fonts",new Map)}loadFont(e,t){if(this.fonts.has(e))throw new Error(`WebFont with ID ${e} already exists`);let r=new H(e,t);this.fonts.set(e,r)}getFont(e){return this.fonts.get(e)}hasFont(e){return this.fonts.has(e)}unloadFont(e){return this.fonts.delete(e)}clearFonts(){this.fonts.clear()}getFontIds(){return Array.from(this.fonts.keys()).sort((e,t)=>e-t)}getAllFonts(){return Array.from(this.fonts.entries()).sort((e,t)=>e[0]-t[0]).map(e=>e[1])}getFontCount(){return this.fonts.size}};b(wt,"WebFontRegistry");var pe=wt;var vt=class vt{constructor(){x(this,"fonts",new Map)}loadFont(e,t){if(this.fonts.has(e))throw new Error(`BitmapFont with ID ${e} already exists`);let r=new ue(e,t);this.fonts.set(e,r)}getFont(e){return this.fonts.get(e)}hasFont(e){return this.fonts.has(e)}unloadFont(e){return this.fonts.delete(e)}clearFonts(){this.fonts.clear()}getFontIds(){return Array.from(this.fonts.keys()).sort((e,t)=>e-t)}getAllFonts(){return Array.from(this.fonts.entries()).sort((e,t)=>e[0]-t[0]).map(e=>e[1])}getFontCount(){return this.fonts.size}};b(vt,"BitmapFontRegistry");var me=vt;var Mt=class Mt{constructor(){x(this,"sounds",new Map);x(this,"nameToId",new Map);x(this,"nextId",0)}registerFile(e,t,r){let n=this.allocateId(e),o={soundId:n,name:e,loadType:"file",format:t,data:r};return this.sounds.set(n,o),this.nameToId.set(e,n),n}registerFileWithId(e,t,r,n){this.validateId(e),this.checkIdAvailable(e,t);let o={soundId:e,name:t,loadType:"file",format:r,data:n};this.sounds.set(e,o),this.nameToId.set(t,e)}registerExternal(e,t,r,n,o){let i=this.allocateId(e),s={soundId:i,name:e,loadType:"external",format:t,url:r,size:n,checksum:o};return this.sounds.set(i,s),this.nameToId.set(e,i),i}registerExternalWithId(e,t,r,n,o,i){this.validateId(e),this.checkIdAvailable(e,t);let s={soundId:e,name:t,loadType:"external",format:r,url:n,size:o,checksum:i};this.sounds.set(e,s),this.nameToId.set(t,e)}get(e){if(typeof e=="number")return this.sounds.get(e);let t=this.nameToId.get(e);return t!==void 0?this.sounds.get(t):void 0}has(e){return this.get(e)!==void 0}getAll(){return Array.from(this.sounds.values())}getFileSounds(){return this.getAll().filter(e=>e.loadType==="file")}getExternalSounds(){return this.getAll().filter(e=>e.loadType==="external")}getNames(){return Array.from(this.nameToId.keys())}getId(e){return this.nameToId.get(e)}toLoadPackets(){let e=[],t=this.getFileSounds();if(t.length>0){let n=t.map(o=>({soundId:o.soundId,name:o.name,format:o.format,data:o.data}));e.push({type:"sound",mode:"file",sounds:n})}let r=this.getExternalSounds();if(r.length>0){let n=r.map(o=>({soundId:o.soundId,name:o.name,format:o.format,url:o.url,size:o.size,checksum:o.checksum}));e.push({type:"sound",mode:"external",sounds:n})}return e}toLoadPacket(e){let t=this.get(e);return t?t.loadType==="file"?{type:"sound",mode:"file",sounds:[{soundId:t.soundId,name:t.name,format:t.format,data:t.data}]}:{type:"sound",mode:"external",sounds:[{soundId:t.soundId,name:t.name,format:t.format,url:t.url,size:t.size,checksum:t.checksum}]}:null}unregister(e){let t=this.get(e);return t?(this.sounds.delete(t.soundId),this.nameToId.delete(t.name),!0):!1}clear(){this.sounds.clear(),this.nameToId.clear(),this.nextId=0}get size(){return this.sounds.size}getStats(){let e=this.getAll(),t=e.filter(n=>n.loadType==="file"),r=t.reduce((n,o)=>n+(o.data?.length??0),0);return{total:e.length,file:t.length,external:e.length-t.length,totalFileSize:r}}allocateId(e){if(this.nameToId.has(e))throw new Error(`Sound with name "${e}" already exists`);for(;this.sounds.has(this.nextId);)if(this.nextId++,this.nextId>255)throw new Error("Maximum number of sounds (256) reached");return this.nextId++}validateId(e){if(!Number.isInteger(e)||e<0||e>255)throw new Error(`Invalid sound ID: ${e}. Must be an integer between 0 and 255.`)}checkIdAvailable(e,t){if(this.sounds.has(e)){let r=this.sounds.get(e);throw new Error(`Sound ID ${e} is already used by "${r.name}". Cannot register "${t}".`)}if(this.nameToId.has(t))throw new Error(`Sound with name "${t}" already exists`)}};b(Mt,"SoundRegistry");var he=Mt;var At=class At{constructor(e){this.soundRegistry=e}collectFromUser(e){let t=[],r=e.flushSoundCommands();for(let o of r){let i=this.convertSoundCommand(o);i&&t.push(i)}let n=e.flushAudioConfigCommands();for(let o of n){let i=this.convertConfigCommand(o);i&&t.push(i)}return t}convertSoundCommand(e){return"setEffects"in e&&e.setEffects===!0?this.convertSetEffectsCommand(e):"fadeOut"in e&&e.fadeOut===!0?this.convertFadeOutCommand(e):"pause"in e&&e.pause===!0?this.convertPauseCommand(e):"resume"in e&&e.resume===!0?this.convertResumeCommand(e):"instanceId"in e||"volume"in e||"pitch"in e||"loop"in e||"fadeIn"in e||"x"in e||"y"in e||"lowpass"in e||"highpass"in e||"reverb"in e?this.convertPlayCommand(e):this.convertStopCommand(e)}convertPlayCommand(e){let t=this.resolveSoundId(e.sound);if(t===null)return console.warn(`[AudioOrderCollector] Unknown sound: ${e.sound}`),null;let r=0;e.loop&&(r|=1),e.volume!==void 0&&(r|=2),e.pitch!==void 0&&(r|=4),e.fadeIn!==void 0&&(r|=8),e.lowpass!==void 0&&e.lowpass>0&&(r|=32),e.highpass!==void 0&&e.highpass>0&&(r|=64),e.reverb!==void 0&&e.reverb>0&&(r|=128);let n=e.x!==void 0&&e.y!==void 0;return n&&(r|=16),n?{type:1,soundId:t,instanceId:e.instanceId??0,flags:r,volume:e.volume!==void 0?this.encodeVolume(e.volume):void 0,pitch:e.pitch!==void 0?this.encodePitch(e.pitch):void 0,fadeIn:e.fadeIn!==void 0?this.encodeFadeTime(e.fadeIn):void 0,posX:this.encodePosition(e.x),posY:this.encodePosition(e.y),lowpass:e.lowpass!==void 0&&e.lowpass>0?this.encodeFilterFreq(e.lowpass):void 0,highpass:e.highpass!==void 0&&e.highpass>0?this.encodeFilterFreq(e.highpass):void 0,reverb:e.reverb!==void 0&&e.reverb>0?this.encodeReverb(e.reverb):void 0}:{type:2,soundId:t,instanceId:e.instanceId??0,flags:r&-17,volume:e.volume!==void 0?this.encodeVolume(e.volume):void 0,pitch:e.pitch!==void 0?this.encodePitch(e.pitch):void 0,fadeIn:e.fadeIn!==void 0?this.encodeFadeTime(e.fadeIn):void 0,lowpass:e.lowpass!==void 0&&e.lowpass>0?this.encodeFilterFreq(e.lowpass):void 0,highpass:e.highpass!==void 0&&e.highpass>0?this.encodeFilterFreq(e.highpass):void 0,reverb:e.reverb!==void 0&&e.reverb>0?this.encodeReverb(e.reverb):void 0}}convertStopCommand(e){let{targetType:t,target:r}=this.resolveTarget(e.sound);return{type:3,targetType:t,target:r}}convertFadeOutCommand(e){let{targetType:t,target:r}=this.resolveTarget(e.sound);return{type:4,targetType:t,duration:this.encodeFadeTime(e.duration),target:r}}convertPauseCommand(e){let{targetType:t,target:r}=this.resolveTarget(e.sound);return{type:5,targetType:t,target:r}}convertResumeCommand(e){let{targetType:t,target:r}=this.resolveTarget(e.sound);return{type:6,targetType:t,target:r}}convertSetEffectsCommand(e){let t=0;return e.lowpass!==void 0&&(t|=1),e.highpass!==void 0&&(t|=2),e.reverb!==void 0&&(t|=4),{type:9,instanceId:e.instanceId,flags:t,lowpass:e.lowpass!==void 0?this.encodeFilterFreq(e.lowpass):void 0,highpass:e.highpass!==void 0?this.encodeFilterFreq(e.highpass):void 0,reverb:e.reverb!==void 0?this.encodeReverb(e.reverb):void 0}}convertConfigCommand(e){return e.type==="set-listener-position"?{type:7,x:this.encodePosition(e.x),y:this.encodePosition(e.y)}:e.type==="configure-spatial"?{type:8,maxDistance:this.encodeDistance(e.maxDistance??1e3),referenceDistance:this.encodeDistance(e.referenceDistance??100),rolloffFactor:this.encodeRolloff(e.rolloffFactor??1),panSpread:this.encodePanSpread(e.panSpread??.5)}:null}resolveSoundId(e){if(typeof e=="number")return e>=0&&e<=255?e:null;let t=this.soundRegistry.getId(e);return t!==void 0?t:null}resolveTarget(e){if(e==="all")return{targetType:2,target:void 0};if(typeof e=="number")return{targetType:0,target:e};let t=this.soundRegistry.getId(e);return t!==void 0?{targetType:1,target:t}:(console.warn(`[AudioOrderCollector] Unknown sound name: ${e}, treating as 'all'`),{targetType:2,target:void 0})}encodeVolume(e){return Math.round(Math.max(0,Math.min(1,e))*255)}encodePitch(e){let t=Math.max(.25,Math.min(4,e)),r=64*Math.log2(t/.25);return Math.round(Math.max(0,Math.min(255,r)))}encodeFadeTime(e){return Math.round(Math.max(0,Math.min(25.5,e))*10)}encodeDistance(e){return Math.round(Math.max(0,Math.min(25500,e))/100)}encodeRolloff(e){return Math.round(Math.max(0,Math.min(2.55,e))*100)}encodePanSpread(e){return Math.round(Math.max(0,Math.min(1,e))*255)}encodePosition(e){return Math.round(Math.max(0,Math.min(65535,e)))}encodeFilterFreq(e){return e<=0?0:Math.round(Math.max(1,Math.min(255,e/100)))}encodeReverb(e){return Math.round(Math.max(0,Math.min(1,e))*255)}};b(At,"AudioOrderCollector");var ge=At;var j=class j{constructor(e={}){x(this,"users",new Map);x(this,"mode");x(this,"maxUsers");x(this,"strictMode");x(this,"currentTick",0);x(this,"encoder");x(this,"displayRasterizer");x(this,"colorPalette",new Map);x(this,"stats",new ce);x(this,"spriteRegistry",new le);x(this,"webFontRegistry",new pe);x(this,"bitmapFontRegistry",new me);x(this,"soundRegistry",new he);x(this,"audioOrderCollector");x(this,"activeWebFontId",0);x(this,"_renderCallCount",0);x(this,"onPaletteChangedCallback");x(this,"onBitmapFontChangedCallback");this.mode=e.mode??"server",this.maxUsers=e.maxUsers??64,this.strictMode=e.strictMode??!1,this.encoder=new Re,this.displayRasterizer=new Te(this),this.audioOrderCollector=new ge(this.soundRegistry),this.initializeDefaultPalette(),this.displayRasterizer.rebuildColorCache(),this.loadDefaultWebFont()}initializeDefaultPalette(){j.ANSI_VGA_COLORS.forEach(e=>{this.colorPalette.set(e.colorId,{r:e.r,g:e.g,b:e.b,a:e.a,e:e.e})}),this.colorPalette.set(255,{r:0,g:0,b:0,a:0,e:0})}getMode(){return this.mode}getMaxUsers(){return this.maxUsers}isStrictMode(){return this.strictMode}isServer(){return this.mode==="server"}isClient(){return this.mode==="client"}isStandalone(){return this.mode==="standalone"}createUser(e,t){if(this.users.has(e))throw new Error(`User with ID ${e} already exists`);if(this.mode==="server"&&this.users.size>=this.maxUsers)throw new Error(`Maximum number of users reached (${this.maxUsers}). Cannot create user ${e}`);if(this.mode==="client"&&this.users.size>=1)throw new Error(`Client mode only allows one user. Cannot create user ${e}`);let r=new de(e,t,this.mode);return r.setSpriteRegistry(this.spriteRegistry),this.users.set(e,r),r}getUser(e){return this.users.get(e)??null}getUsers(){return Array.from(this.users.values())}hasUser(e){return this.users.has(e)}removeUser(e){return this.users.delete(e)}getUserCount(){return this.users.size}clearAllUsers(){this.users.clear()}setColor(e,t,r,n,o=255,i=0){if(e<0||e>255)throw new Error(`Color ID must be between 0 and 255, got ${e}`);if(e>=240)throw new Error("Color IDs 240-255 are reserved (240-254: UI palette, 255: skip color). Use IDs 0-239 for custom colors.");if(t<0||t>255||r<0||r>255||n<0||n>255||o<0||o>255||i<0||i>255)throw new Error("Color components must be between 0 and 255");this.colorPalette.set(e,{r:t,g:r,b:n,a:o,e:i}),this.onPaletteChangedCallback&&this.onPaletteChangedCallback(this.colorPalette)}onPaletteChanged(e){this.onPaletteChangedCallback=e}onBitmapFontChanged(e){this.onBitmapFontChangedCallback=e}getColor(e){return this.colorPalette.get(e)??null}loadPalette(e){for(let t of e)t.colorId<0||t.colorId>255||this.colorPalette.set(t.colorId,{r:t.r,g:t.g,b:t.b,a:t.a,e:t.e??0});j.ANSI_VGA_COLORS.forEach(t=>{this.colorPalette.set(t.colorId,{r:t.r,g:t.g,b:t.b,a:t.a,e:t.e})}),this.colorPalette.set(255,{r:0,g:0,b:0,a:0,e:0}),this.displayRasterizer.rebuildColorCache(),this.onPaletteChangedCallback&&this.onPaletteChangedCallback(this.colorPalette)}getPalette(){return new Map(this.colorPalette)}resetPalette(){this.colorPalette.clear(),this.initializeDefaultPalette(),this.onPaletteChangedCallback&&this.onPaletteChangedCallback(this.colorPalette)}getColorCSS(e){let t=this.getColor(e);if(!t)return null;let r=t.a/255;return`rgba(${t.r}, ${t.g}, ${t.b}, ${r})`}getUserIds(){return Array.from(this.users.keys())}forEachUser(e){this.users.forEach(e)}filterUsers(e){return this.getUsers().filter(e)}findUser(e){return this.getUsers().find(e)}getCurrentTick(){return this.currentTick}getStats(){return this.stats}endTick(){this.stats.isEnabled()&&this.stats.startTick(this.currentTick);let e=new Map,t=0,r=0;return this.users.forEach((n,o)=>{let i=n.getLayers(),s=n.getDisplays();t+=i.length,n.getStats().isEnabled()&&n.getStats().startTick(this.currentTick);let a=s.map(g=>{let y=g.getOrigin(),C=g.getSize();return{id:g.getId(),originX:y.x,originY:y.y,sizeX:C.x,sizeY:C.y}});s.forEach(g=>g.resetChangeTracking());let d=[],c=[];i.forEach((g,y)=>{let C=g.getOrigin(),O=g.getOrders(),f=g.getStatic(),w=g.calculateUpdateFlags();g.resetChangeTracking(),g.getId()===0&&g.setId(y);let U={id:g.getId(),updateFlags:w,zIndex:g.getZOrder(),originX:C.x,originY:C.y,width:g.getWidth(),height:g.getHeight(),orderCount:O.length,orders:O};f?d.push(U):c.push(U)}),r+=d.length+c.length;let u=this.audioOrderCollector.collectFromUser(n),l=n.flushMacroOrders(),p=[...d,...c],h=this.encoder.encode({tick:this.currentTick,displayCount:a.length,displays:a,layerCount:p.length,layers:p,audioOrderCount:u.length,audioOrders:u,macroOrderCount:l.length,macroOrders:l});if(e.set(o,h),this.stats.isEnabled()){p.forEach((O,f)=>{this.stats.recordLayerOrders(f,O.orders)}),s.forEach((O,f)=>{this.stats.recordDisplayLayers(f,p.length)});let g=s.length*12,y=p.length*20,C=h.length-g-y;this.stats.recordUpdatePacketSize(h.length,g,y,C>0?C:0)}}),this.stats.isEnabled()&&(this.stats.recordLayers(t,r),this.stats.endTick()),this.currentTick++,e}endTickSplit(){this.stats.isEnabled()&&this.stats.startTick(this.currentTick);let e=new Map,t=0,r=0;return this.users.forEach((n,o)=>{let i=n.getLayers(),s=n.getDisplays();t+=i.length,n.getStats().isEnabled()&&n.getStats().startTick(this.currentTick);let a=s.map(g=>{let y=g.getOrigin(),C=g.getSize();return{id:g.getId(),originX:y.x,originY:y.y,sizeX:C.x,sizeY:C.y}});s.forEach(g=>g.resetChangeTracking());let d=[],c=[];i.forEach((g,y)=>{if(!g.getNeedsCommit())return;let C=g.getOrigin(),O=g.getOrders(),f=g.getStatic(),w=g.calculateUpdateFlags();g.resetChangeTracking(),g.resetCommit(),g.getId()===0&&g.setId(y);let U={id:g.getId(),updateFlags:w,zIndex:g.getZOrder(),originX:C.x,originY:C.y,width:g.getWidth(),height:g.getHeight(),orderCount:O.length,orders:O};O.length>0&&this.stats.isEnabled()&&this.stats.recordLayerInfo(g.getId(),f,O.length,w),f?d.push(U):c.push(U)}),r+=d.length+c.length;let u=this.audioOrderCollector.collectFromUser(n),l=n.flushMacroOrders(),p=null,h=null;if(this.stats.isEnabled()&&this.stats.recordPacketSplit(o,a.length,d.length,c.length),d.length>0&&(p=this.encoder.encode({tick:this.currentTick,displayCount:a.length,displays:a,layerCount:d.length,layers:d,audioOrderCount:0,audioOrders:[],macroOrderCount:0,macroOrders:[]})),h=this.encoder.encode({tick:this.currentTick,displayCount:a.length,displays:a,layerCount:c.length,layers:c,audioOrderCount:u.length,audioOrders:u,macroOrderCount:l.length,macroOrders:l}),e.set(o,{static:p,dynamic:h}),n.getStats().isEnabled()){let g=s.reduce((f,w)=>{let U=w.getSize();return f+U.x*U.y},0);n.getStats().recordDisplays(s.length,g),n.getStats().recordLayers(i.length,d.length+c.length,d.length,c.length),[...d,...c].forEach(f=>{n.getStats().recordLayerOrders(f.id,f.orders.length)});let y=p?.length||0,C=h?.length||0;n.getStats().recordPacketSizes(y,C);let O=n.getInputBindingRegistry();n.getStats().recordInput(!1,O.getAxisCount(),O.getButtonCount()),n.getStats().endTick()}if(this.stats.isEnabled()){let g=[...d,...c];g.forEach((w,U)=>{this.stats.recordLayerOrders(U,w.orders)}),s.forEach((w,U)=>{this.stats.recordDisplayLayers(U,g.length)});let y=(p?.length||0)+(h?.length||0),C=s.length*12,O=g.length*20,f=y-C-O;this.stats.recordUpdatePacketSize(y,C,O,f>0?f:0)}}),this.stats.isEnabled()&&(this.stats.recordLayers(t,r),this.stats.endTick()),this.currentTick++,e}getSnapshot(e){let t=this.getUser(e);if(!t)return null;let r=t.getDisplays(),n=t.getLayers(),o=r.map((s,a)=>{let d=s.getOrigin(),c=s.getSize();return{id:a,originX:d.x,originY:d.y,sizeX:c.x,sizeY:c.y}}),i=n.map((s,a)=>{let d=s.getOrigin(),c=s.getOrders(),u=7;return s.getId()===0&&s.setId(a),{id:s.getId(),updateFlags:u,zIndex:s.getZOrder(),originX:d.x,originY:d.y,width:s.getWidth(),height:s.getHeight(),orderCount:c.length,orders:c}});return this.encoder.encode({tick:this.currentTick,displayCount:o.length,displays:o,layerCount:i.length,layers:i,audioOrderCount:0,audioOrders:[],macroOrderCount:0,macroOrders:[]})}resetTick(){this.currentTick=0}applyUpdatePacket(e,t){let r=this.getUser(e);if(!r){if(this.strictMode)throw new Error(`Cannot apply update packet: user ${e} does not exist`);return!1}return r.applyUpdate(t),t.audioOrders&&t.audioOrders.length>0&&r.applyAudioOrders(t.audioOrders),!0}applyUpdatePacketBuffer(e,t){let{UpdatePacketDecoder:r}=(Lt(),B(mr)),o=new r().decode(t);return this.applyUpdatePacket(e,o)}applyLoadPacket(e){try{let{LoadDecoder:t}=(xr(),B(gr)),{LoadType:r}=(D(),B(N)),i=new t().decode(e).load;switch(i.loadType){case r.ColorPalette:this.loadPalette(i.colors);break;case r.Sprite:this.loadUnicolorSprites(i);break;case r.MulticolorSprite:this.loadMulticolorSprites(i);break;case r.BitmapFont:{let s=this.getBitmapFontRegistry();s.hasFont(i.fontId)&&s.unloadFont(i.fontId),s.loadFont(i.fontId,{charWidth:i.width,charHeight:i.height,cellWidth:i.cellWidth,cellHeight:i.cellHeight,glyphs:new Map(i.characters.map(a=>[a.charCode,a.bitmap]))});break}case r.WebFont:{let s=this.getWebFontRegistry();s.hasFont(i.fontId)&&s.unloadFont(i.fontId),this.loadWebFontById(i.fontId,{fontFamily:i.fontFamily,fontSize:i.fontSize,offsetX:i.offsetX,offsetY:i.offsetY,charSpacing:i.charSpacing,lineHeight:i.lineHeight,fontWeight:i.fontWeight,fontStyle:i.fontStyle});break}case r.Sound:console.warn("[Core] Sound loading not yet implemented");break;case r.Macro:{for(let s of this.users.values())s.loadMacroTemplate(i.macroId,i.template);break}default:return console.error(`[Core] Unknown LoadType: ${i.loadType}`),!1}return!0}catch(t){return console.error("[Core] Failed to apply LoadPacket:",t),!1}}generatePaletteLoadPacket(){let e=this.getPalette();if(e.size===0)return null;let{LoadEncoder:t}=(G(),B(Z)),{LoadType:r}=(D(),B(N)),n=new t,o=[];return e.forEach((i,s)=>{s!==255&&o.push({colorId:s,r:i.r,g:i.g,b:i.b,a:i.a,e:i.e})}),n.encode({loadType:r.ColorPalette,colors:o})}generateUnicolorSpritesLoadPacket(){let e=this.getSpriteRegistry(),t=[];for(let i=0;i<=255;i++){let s=e.getUnicolorSprite(i);if(s){let a=[];for(let d=0;d<s.sizeX*s.sizeY;d++)a.push(s.data.get(d));t.push({spriteId:s.id,sizeX:s.sizeX,sizeY:s.sizeY,data:a})}}if(t.length===0)return null;let{LoadEncoder:r}=(G(),B(Z)),{LoadType:n}=(D(),B(N));return new r().encode({loadType:n.Sprite,sprites:t})}generateMulticolorSpritesLoadPacket(){let e=this.getSpriteRegistry(),t=[];for(let i=0;i<=255;i++){let s=e.getMulticolorSprite(i);if(s){let a=[];for(let d=0;d<s.sizeX*s.sizeY;d++){let c=s.data.get(d);a.push({charCode:c.charCode,fgColorId:c.fgColorCode,bgColorId:c.bgColorCode})}t.push({spriteId:s.id,sizeX:s.sizeX,sizeY:s.sizeY,data:a})}}if(t.length===0)return null;let{LoadEncoder:r}=(G(),B(Z)),{LoadType:n}=(D(),B(N));return new r().encode({loadType:n.MulticolorSprite,sprites:t})}generateWebFontsLoadPackets(){let e=this.getWebFontRegistry(),t=e.getFontIds(),r=[],{LoadEncoder:n}=(G(),B(Z)),{LoadType:o}=(D(),B(N)),i=new n;for(let s of t){let a=e.getFont(s);if(a){let d=a.getConfig(),c=i.encode({loadType:o.WebFont,fontId:s,fontFamily:d.fontFamily,fontSize:d.fontSize,offsetX:d.offsetX,offsetY:d.offsetY,charSpacing:d.charSpacing,lineHeight:d.lineHeight,fontWeight:d.fontWeight,fontStyle:d.fontStyle});r.push(c)}}return r}generateBitmapFontsLoadPackets(){let e=this.getBitmapFontRegistry(),t=e.getFontIds(),r=[],{LoadEncoder:n}=(G(),B(Z)),{LoadType:o}=(D(),B(N)),i=new n;for(let s of t){let a=e.getFont(s);if(a){let d=[];for(let c=0;c<256;c++){let u=a.getGlyph(c);u&&d.push({charCode:c,bitmap:u})}if(d.length>0){let c=i.encode({loadType:o.BitmapFont,fontId:s,width:a.getCharWidth(),height:a.getCharHeight(),cellWidth:a.getCellWidth(),cellHeight:a.getCellHeight(),characters:d});r.push(c)}}}return r}generateAllLoadPackets(){let e=[],t=this.generatePaletteLoadPacket();t&&e.push(t);let r=this.generateUnicolorSpritesLoadPacket();r&&e.push(r);let n=this.generateMulticolorSpritesLoadPacket();n&&e.push(n);let o=this.generateWebFontsLoadPackets();e.push(...o);let i=this.generateBitmapFontsLoadPackets();return e.push(...i),e}generateMacroLoadPackets(e){let t=this.getUser(e);if(!t)return[];let r=t.getMacroLoads();if(r.length===0)return[];let n=new Be;return r.map(o=>n.encode(o))}applyInputBindingsLoadPacket(e,t){let r=this.getUser(e);if(!r){if(this.strictMode)throw new Error(`Cannot apply input bindings: user ${e} does not exist`);return!1}try{return r.applyInputBindingsLoadPacket(t),!0}catch(n){return console.error(`[Core] Failed to apply input bindings for user ${e}:`,n),!1}}getRenderState(e){let t=this.getUser(e);if(!t)return null;let r=t.getDisplays(),n=t.getLayers(),o=performance.now(),i=new Array(r.length);for(let a=0;a<r.length;a++){let d=r[a],c=d.getOrigin(),u=d.getSize();i[a]=this.displayRasterizer.rasterize({x:c.x,y:c.y,width:u.x,height:u.y},n)}let s=performance.now()-o;return this._renderCallCount||(this._renderCallCount=0),this._renderCallCount++,{userId:t.id,userName:t.name,tick:this.currentTick,displays:i}}getAllRenderStates(){let e=new Map;return this.users.forEach((t,r)=>{let n=this.getRenderState(r);n&&e.set(r,n)}),e}enableStats(e){this.stats.setEnabled(e)}getStatsInstance(){return this.stats}resetStats(){this.stats.reset()}loadUnicolorSprites(e){this.spriteRegistry.loadUnicolorSprites(e)}loadMulticolorSprites(e){this.spriteRegistry.loadMulticolorSprites(e)}unloadUnicolorSprite(e){return this.spriteRegistry.unloadUnicolorSprite(e)}unloadMulticolorSprite(e){return this.spriteRegistry.unloadMulticolorSprite(e)}clearUnicolorSprites(){this.spriteRegistry.clearUnicolorSprites()}clearMulticolorSprites(){this.spriteRegistry.clearMulticolorSprites()}clearAllSprites(){this.spriteRegistry.clearAll()}getUnicolorSpriteCount(){return this.spriteRegistry.getUnicolorSpriteCount()}getMulticolorSpriteCount(){return this.spriteRegistry.getMulticolorSpriteCount()}getTotalSpriteCount(){return this.spriteRegistry.getTotalSpriteCount()}hasUnicolorSprite(e){return this.spriteRegistry.hasUnicolorSprite(e)}hasMulticolorSprite(e){return this.spriteRegistry.hasMulticolorSprite(e)}getSpriteRegistry(){return this.spriteRegistry}getSoundRegistry(){return this.soundRegistry}async loadSound(e,t){let r=this.detectSoundFormat(t),n=await this.loadSoundData(t);return this.soundRegistry.registerFile(e,r,n)}async loadSounds(e){let t={},n=Object.entries(e).map(async([o,i])=>{let s=await this.loadSound(o,i);t[o]=s});return await Promise.all(n),t}detectSoundFormat(e){let t=e.split(".").pop()?.toLowerCase()??"",r={mp3:"mp3",wav:"wav",ogg:"ogg",webm:"webm",aac:"aac",m4a:"aac"},n=r[t];if(!n)throw new Error(`Unsupported audio format: .${t}. Supported: ${Object.keys(r).join(", ")}`);return n}async loadSoundData(e){let t=globalThis;if(typeof t.document<"u"||typeof t.window<"u"||typeof t.fetch=="function")try{let n=await fetch(e);if(!n.ok)throw new Error(`HTTP ${n.status}: ${n.statusText}`);let o=await n.arrayBuffer();return new Uint8Array(o)}catch(n){let o=n instanceof Error?n.message:String(n);throw new Error(`Failed to load sound "${e}": ${o}`)}else{let n=typeof Ne<"u"?Ne:null;if(!n)throw new Error("Node.js require is not available");let s=n("fs").readFileSync(e);return new Uint8Array(s)}}registerSound(e,t,r){return this.soundRegistry.registerFile(e,t,r)}registerExternalSound(e,t,r,n){return this.soundRegistry.registerExternal(e,t,r,n)}hasSound(e){return this.soundRegistry.has(e)}generateSoundLoadPackets(){return this.soundRegistry.toLoadPackets()}loadDefaultWebFont(){this.webFontRegistry.loadFont(0,{fontFamily:"Courier New",fontSize:16,offsetX:0,offsetY:0,charSpacing:0,lineHeight:1,fontWeight:"normal",fontStyle:"normal"}),this.activeWebFontId=0}loadWebFont(e){let t=e.getFontId(),r=e.getConfig();this.webFontRegistry.loadFont(t,r)}getWebFont(e){return this.webFontRegistry.getFont(e)??null}hasWebFont(e){return this.webFontRegistry.hasFont(e)}unloadWebFont(e){if(e===0)throw new Error("Cannot unload default font (fontId 0)");return this.webFontRegistry.unloadFont(e)}clearWebFonts(){this.webFontRegistry.clearFonts(),this.loadDefaultWebFont()}setActiveWebFont(e){if(!this.webFontRegistry.hasFont(e))throw new Error(`WebFont with ID ${e} does not exist`);this.activeWebFontId=e}getActiveWebFontId(){return this.activeWebFontId}getActiveWebFont(){let e=this.webFontRegistry.getFont(this.activeWebFontId);if(!e)throw new Error(`Active WebFont ${this.activeWebFontId} not found. This should not happen.`);return e}getWebFontCount(){return this.webFontRegistry.getFontCount()}getWebFontIds(){return this.webFontRegistry.getFontIds()}getWebFontRegistry(){return this.webFontRegistry}getBitmapFontRegistry(){return this.bitmapFontRegistry}loadWebFontById(e,t){let r=new H(e,t);this.loadWebFont(r)}loadBitmapFontById(e,t){this.bitmapFontRegistry.loadFont(e,t),this.onBitmapFontChangedCallback&&this.onBitmapFontChangedCallback(e)}getBitmapFont(e){return this.bitmapFontRegistry.getFont(e)??null}hasBitmapFont(e){return this.bitmapFontRegistry.hasFont(e)}unloadBitmapFont(e){return this.bitmapFontRegistry.unloadFont(e)}clearBitmapFonts(){this.bitmapFontRegistry.clearFonts()}getBitmapFontCount(){return this.bitmapFontRegistry.getFontCount()}getBitmapFontIds(){return this.bitmapFontRegistry.getFontIds()}};b(j,"Core"),x(j,"ANSI_VGA_COLORS",[{colorId:240,r:16,g:16,b:16,a:255,e:0},{colorId:241,r:128,g:128,b:128,a:255,e:0},{colorId:242,r:192,g:192,b:192,a:255,e:0},{colorId:243,r:240,g:240,b:240,a:255,e:0},{colorId:244,r:200,g:50,b:50,a:255,e:0},{colorId:245,r:50,g:200,b:50,a:255,e:0},{colorId:246,r:220,g:180,b:50,a:255,e:0},{colorId:247,r:50,g:100,b:220,a:255,e:0},{colorId:248,r:50,g:200,b:200,a:255,e:0},{colorId:249,r:200,g:50,b:200,a:255,e:0},{colorId:250,r:220,g:120,b:50,a:255,e:0},{colorId:251,r:120,g:220,b:120,a:255,e:0},{colorId:252,r:120,g:180,b:220,a:255,e:0},{colorId:253,r:220,g:150,b:200,a:255,e:0},{colorId:254,r:250,g:220,b:150,a:255,e:0}]);var Ht=j;import{Vector2 as Ks}from"@utsp/types";var J=new Map([[24,new Uint8Array([0,24,60,126,255,255,0,0])],[25,new Uint8Array([0,0,255,255,126,60,24,0])],[26,new Uint8Array([0,48,120,252,252,120,48,0])],[27,new Uint8Array([0,12,30,63,63,30,12,0])],[32,new Uint8Array([0,0,0,0,0,0,0,0])],[33,new Uint8Array([24,24,24,24,24,0,24,0])],[34,new Uint8Array([108,108,108,0,0,0,0,0])],[35,new Uint8Array([54,54,127,54,127,54,54,0])],[36,new Uint8Array([12,63,104,62,11,126,24,0])],[37,new Uint8Array([96,102,12,24,48,102,6,0])],[38,new Uint8Array([56,108,108,56,109,102,59,0])],[39,new Uint8Array([24,24,24,0,0,0,0,0])],[40,new Uint8Array([12,24,48,48,48,24,12,0])],[41,new Uint8Array([48,24,12,12,12,24,48,0])],[42,new Uint8Array([0,102,60,255,60,102,0,0])],[43,new Uint8Array([0,24,24,126,24,24,0,0])],[44,new Uint8Array([0,0,0,0,0,24,24,48])],[45,new Uint8Array([0,0,0,126,0,0,0,0])],[46,new Uint8Array([0,0,0,0,0,24,24,0])],[47,new Uint8Array([0,6,12,24,48,96,0,0])],[48,new Uint8Array([60,102,110,126,118,102,60,0])],[49,new Uint8Array([24,56,24,24,24,24,126,0])],[50,new Uint8Array([60,102,6,12,24,48,126,0])],[51,new Uint8Array([60,102,6,28,6,102,60,0])],[52,new Uint8Array([12,28,60,108,126,12,12,0])],[53,new Uint8Array([126,96,124,6,6,102,60,0])],[54,new Uint8Array([28,48,96,124,102,102,60,0])],[55,new Uint8Array([126,6,12,24,48,48,48,0])],[56,new Uint8Array([60,102,102,60,102,102,60,0])],[57,new Uint8Array([60,102,102,62,6,12,56,0])],[58,new Uint8Array([0,0,24,24,0,24,24,0])],[59,new Uint8Array([0,0,24,24,0,24,24,48])],[60,new Uint8Array([12,24,48,96,48,24,12,0])],[61,new Uint8Array([0,0,126,0,126,0,0,0])],[62,new Uint8Array([48,24,12,6,12,24,48,0])],[63,new Uint8Array([60,102,12,24,24,0,24,0])],[64,new Uint8Array([60,102,110,106,110,96,60,0])],[65,new Uint8Array([60,102,102,126,102,102,102,0])],[66,new Uint8Array([124,102,102,124,102,102,124,0])],[67,new Uint8Array([60,102,96,96,96,102,60,0])],[68,new Uint8Array([120,108,102,102,102,108,120,0])],[69,new Uint8Array([126,96,96,124,96,96,126,0])],[70,new Uint8Array([126,96,96,124,96,96,96,0])],[71,new Uint8Array([60,102,96,110,102,102,60,0])],[72,new Uint8Array([102,102,102,126,102,102,102,0])],[73,new Uint8Array([126,24,24,24,24,24,126,0])],[74,new Uint8Array([62,12,12,12,12,108,56,0])],[75,new Uint8Array([102,108,120,112,120,108,102,0])],[76,new Uint8Array([96,96,96,96,96,96,126,0])],[77,new Uint8Array([99,119,127,107,99,99,99,0])],[78,new Uint8Array([102,102,118,126,110,102,102,0])],[79,new Uint8Array([60,102,102,102,102,102,60,0])],[80,new Uint8Array([124,102,102,124,96,96,96,0])],[81,new Uint8Array([60,102,102,102,106,108,54,0])],[82,new Uint8Array([124,102,102,124,108,102,102,0])],[83,new Uint8Array([60,102,96,60,6,102,60,0])],[84,new Uint8Array([126,24,24,24,24,24,24,0])],[85,new Uint8Array([102,102,102,102,102,102,60,0])],[86,new Uint8Array([102,102,102,102,102,60,24,0])],[87,new Uint8Array([99,99,99,107,127,119,99,0])],[88,new Uint8Array([102,102,60,24,60,102,102,0])],[89,new Uint8Array([102,102,102,60,24,24,24,0])],[90,new Uint8Array([126,6,12,24,48,96,126,0])],[91,new Uint8Array([60,48,48,48,48,48,60,0])],[92,new Uint8Array([0,96,48,24,12,6,0,0])],[93,new Uint8Array([60,12,12,12,12,12,60,0])],[94,new Uint8Array([24,60,102,0,0,0,0,0])],[95,new Uint8Array([0,0,0,0,0,0,255,0])],[96,new Uint8Array([48,24,12,0,0,0,0,0])],[97,new Uint8Array([0,0,60,6,62,102,62,0])],[98,new Uint8Array([96,96,124,102,102,102,124,0])],[99,new Uint8Array([0,0,60,102,96,102,60,0])],[100,new Uint8Array([6,6,62,102,102,102,62,0])],[101,new Uint8Array([0,0,60,102,126,96,60,0])],[102,new Uint8Array([28,54,48,124,48,48,48,0])],[103,new Uint8Array([0,0,62,102,102,62,6,60])],[104,new Uint8Array([96,96,124,102,102,102,102,0])],[105,new Uint8Array([24,0,56,24,24,24,60,0])],[106,new Uint8Array([12,0,28,12,12,12,108,56])],[107,new Uint8Array([96,96,102,108,120,108,102,0])],[108,new Uint8Array([56,24,24,24,24,24,60,0])],[109,new Uint8Array([0,0,102,127,107,107,99,0])],[110,new Uint8Array([0,0,124,102,102,102,102,0])],[111,new Uint8Array([0,0,60,102,102,102,60,0])],[112,new Uint8Array([0,0,124,102,102,124,96,96])],[113,new Uint8Array([0,0,62,102,102,62,6,6])],[114,new Uint8Array([0,0,108,118,96,96,96,0])],[115,new Uint8Array([0,0,62,96,60,6,124,0])],[116,new Uint8Array([48,48,124,48,48,54,28,0])],[117,new Uint8Array([0,0,102,102,102,102,62,0])],[118,new Uint8Array([0,0,102,102,102,60,24,0])],[119,new Uint8Array([0,0,99,107,107,127,54,0])],[120,new Uint8Array([0,0,102,60,24,60,102,0])],[121,new Uint8Array([0,0,102,102,102,62,6,60])],[122,new Uint8Array([0,0,126,12,24,48,126,0])],[123,new Uint8Array([14,24,24,112,24,24,14,0])],[124,new Uint8Array([24,24,24,24,24,24,24,0])],[125,new Uint8Array([112,24,24,14,24,24,112,0])],[126,new Uint8Array([49,107,70,0,0,0,0,0])],[179,new Uint8Array([24,24,24,24,24,24,24,24])],[196,new Uint8Array([0,0,0,255,0,0,0,0])],[218,new Uint8Array([0,0,0,31,24,24,24,24])],[191,new Uint8Array([0,0,0,248,24,24,24,24])],[192,new Uint8Array([24,24,24,31,0,0,0,0])],[217,new Uint8Array([24,24,24,248,0,0,0,0])],[195,new Uint8Array([24,24,24,31,24,24,24,24])],[180,new Uint8Array([24,24,24,248,24,24,24,24])],[194,new Uint8Array([0,0,0,255,24,24,24,24])],[193,new Uint8Array([24,24,24,255,0,0,0,0])],[197,new Uint8Array([24,24,24,255,24,24,24,24])],[186,new Uint8Array([54,54,54,54,54,54,54,54])],[205,new Uint8Array([0,0,0,255,0,255,0,0])],[201,new Uint8Array([0,0,0,63,54,54,54,54])],[187,new Uint8Array([0,0,0,252,54,54,54,54])],[200,new Uint8Array([54,54,54,63,0,0,0,0])],[188,new Uint8Array([54,54,54,252,0,0,0,0])],[204,new Uint8Array([54,54,54,63,54,54,54,54])],[185,new Uint8Array([54,54,54,252,54,54,54,54])],[203,new Uint8Array([0,0,0,255,54,54,54,54])],[202,new Uint8Array([54,54,54,255,0,0,0,0])],[206,new Uint8Array([54,54,54,255,54,54,54,54])],[219,new Uint8Array([255,255,255,255,255,255,255,255])],[178,new Uint8Array([170,85,170,85,170,85,170,85])],[177,new Uint8Array([136,34,136,34,136,34,136,34])],[176,new Uint8Array([34,136,34,136,34,136,34,136])],[223,new Uint8Array([255,255,255,255,0,0,0,0])],[220,new Uint8Array([0,0,0,0,255,255,255,255])],[221,new Uint8Array([240,240,240,240,240,240,240,240])],[222,new Uint8Array([15,15,15,15,15,15,15,15])]]);function In(m){return J.get(m)}b(In,"getCharBitmap");function Sn(m){return J.has(m)}b(Sn,"hasChar");function Un(){return Array.from(J.keys()).sort((m,e)=>m-e)}b(Un,"getAllCharCodes");function On(m){let e=Array.from(J.entries()).map(([t,r])=>({charCode:t,bitmap:r}));return{loadType:4,fontId:m,width:8,height:8,cellWidth:8,cellHeight:8,characters:e}}b(On,"createASCII8x8FontLoad");function wn(){return{charWidth:8,charHeight:8,glyphs:new Map(J)}}b(wn,"getASCII8x8FontConfig");T();var _t=class _t{encode(e){switch(e.type){case 1:return this.encodeClick(e);case 2:return this.encodeChange(e);case 3:return this.encodeSubmit(e);case 4:return this.encodeSelect(e);default:throw new Error(`Unknown macro event type: ${e.type}`)}}calculateSize(e){switch(e.type){case 1:return 2;case 2:return this.calculateChangeSize(e);case 3:return this.calculateSubmitSize(e);case 4:return 4;default:throw new Error(`Unknown macro event type: ${e.type}`)}}encodeClick(e){let t=I.allocUnsafe(2);return t.writeUInt8(e.type,0),t.writeUInt8(e.instanceId,1),t.toUint8Array()}encodeChange(e){if(typeof e.value=="boolean"){let r=I.allocUnsafe(4);return r.writeUInt8(e.type,0),r.writeUInt8(e.instanceId,1),r.writeUInt8(1,2),r.writeUInt8(e.value?1:0,3),r.toUint8Array()}else{let r=I.allocUnsafe(7);return r.writeUInt8(e.type,0),r.writeUInt8(e.instanceId,1),r.writeUInt8(0,2),r.writeFloatBE(e.value,3),r.toUint8Array()}}calculateChangeSize(e){return typeof e.value=="boolean"?4:7}encodeSubmit(e){let t=new TextEncoder().encode(e.text);if(t.length>65535)throw new Error(`Submit text too large: ${t.length} bytes (max 65535)`);let r=4+t.length,n=I.allocUnsafe(r),o=0;return n.writeUInt8(e.type,o++),n.writeUInt8(e.instanceId,o++),n.writeUInt16BE(t.length,o),o+=2,n.toUint8Array().set(t,o),n.toUint8Array()}calculateSubmitSize(e){return 4+new TextEncoder().encode(e.text).length}encodeSelect(e){let t=I.allocUnsafe(4);return t.writeUInt8(e.type,0),t.writeUInt8(e.instanceId,1),t.writeUInt16BE(e.index,2),t.toUint8Array()}};b(_t,"MacroEventEncoder");var Xe=_t;function vn(m,e,t,r,n,o,i,s=[],a=[]){let d=Array.from(e.entries()).sort((M,S)=>M[0]-S[0]),c=Array.from(t.entries()).sort((M,S)=>M[0]-S[0]),u=d.length,l=c.length,p=ot(u,l),h=new TextEncoder,g=s.map(M=>h.encode(M)),y=1+g.reduce((M,S)=>M+1+S.length,0),C=new Xe,O=a.map(M=>C.encode(M)),f=1+O.reduce((M,S)=>M+S.length,0),w=p+y+f,U=new Uint8Array(w),k=new DataView(U.buffer),v=0;k.setBigUint64(v,m,!0),v+=8;for(let[,M]of d){let S=rt(M);U[v]=S+256&255,v+=1}let F=V(l);for(let M=0;M<F;M++){let S=0;for(let be=0;be<8;be++){let $t=M*8+be;if($t<l){let[,yr]=c[$t];yr&&(S|=1<<be)}}U[v]=S,v+=1}U[v]=r&255,v+=1,U[v]=n&255,v+=1,U[v]=o&255,v+=1;let Y=0;i&&(Y|=1),U[v]=Y,v+=1,U[v]=Math.min(s.length,255),v+=1;for(let M of g)U[v]=Math.min(M.length,255),v+=1,U.set(M.slice(0,255),v),v+=M.length;U[v]=Math.min(a.length,255),v+=1;for(let M of O)U.set(M,v),v+=M.length;return U}b(vn,"encodeCompressedInput");var A=class A{static toCharCode(e){if(typeof e=="number")return e&255;let t=e.charCodeAt(0);return ee(t)}static dedent(e){let t=e.split(`
8
9
  `);if(t.length>0&&t[0].trim()===""&&t.shift(),t.length>0&&t[t.length-1].trim()===""&&t.pop(),t.length===0)return"";let r=t.filter(o=>o.trim().length>0);if(r.length===0)return"";let n=Math.min(...r.map(o=>{let i=o.match(/^(\s*)/);return i?i[1].length:0}));return t.map(o=>o.slice(n)).join(`
9
- `)}static char(e,t,r,n=15,o=0){return{type:1,posX:e,posY:t,charCode:A.toCharCode(r),bgColorCode:o,fgColorCode:n}}static text(e,t,r,n=15,o=0){return{type:2,posX:e,posY:t,text:r,bgColorCode:o,fgColorCode:n}}static textMultiline(e,t,r,n=15,o=0){return{type:23,posX:e,posY:t,text:A.dedent(r),bgColorCode:o,fgColorCode:n}}static subFrame(e,t,r,n,o,i=15,s=0){return{type:3,posX:e,posY:t,sizeX:r,sizeY:n,frame:o.map(a=>A.toCharCode(a)),bgColorCode:s,fgColorCode:i}}static subFrameMultiColor(e,t,r,n,o){return{type:4,posX:e,posY:t,sizeX:r,sizeY:n,frame:o.map(i=>({charCode:A.toCharCode(i.charCode),bgColorCode:i.bgColorCode,fgColorCode:i.fgColorCode}))}}static fullFrame(e,t=15,r=0){return{type:5,frame:e.map(n=>A.toCharCode(n)),bgColorCode:r,fgColorCode:t}}static fullFrameMultiColor(e){return{type:6,frame:e.map(t=>({charCode:A.toCharCode(t.charCode),bgColorCode:t.bgColorCode,fgColorCode:t.fgColorCode}))}}static sprite(e,t,r,n=15,o=0){return{type:7,posX:e,posY:t,spriteIndex:r,bgColorCode:o,fgColorCode:n}}static spriteMultiColor(e,t,r){return{type:8,posX:e,posY:t,spriteIndex:r}}static colorMap(e,t,r,n,o){return{type:9,posX:e,posY:t,sizeX:r,sizeY:n,colorData:o}}static rectangle(e,t,r,n,o={}){return{type:10,shapeType:1,shapeData:{posX:e,posY:t,width:r,height:n,filled:o.filled??!0,charCode:A.toCharCode(o.charCode??9608),bgColorCode:o.bgColor??0,fgColorCode:o.fgColor??15}}}static circle(e,t,r,n={}){return{type:10,shapeType:2,shapeData:{centerX:e,centerY:t,radius:r,filled:n.filled??!0,charCode:A.toCharCode(n.charCode??9608),bgColorCode:n.bgColor??0,fgColorCode:n.fgColor??15}}}static line(e,t,r,n,o={}){return{type:10,shapeType:3,shapeData:{x1:e,y1:t,x2:r,y2:n,charCode:A.toCharCode(o.charCode??9608),bgColorCode:o.bgColor??0,fgColorCode:o.fgColor??15}}}static ellipse(e,t,r,n,o={}){return{type:10,shapeType:4,shapeData:{centerX:e,centerY:t,radiusX:r,radiusY:n,filled:o.filled??!0,charCode:A.toCharCode(o.charCode??9608),bgColorCode:o.bgColor??0,fgColorCode:o.fgColor??15}}}static triangle(e,t,r,n,o,i,s={}){return{type:10,shapeType:5,shapeData:{x1:e,y1:t,x2:r,y2:n,x3:o,y3:i,filled:s.filled??!0,charCode:A.toCharCode(s.charCode??9608),bgColorCode:s.bgColor??0,fgColorCode:s.fgColor??15}}}static dotCloud(e,t,r=15,n=0){return{type:11,charCode:A.toCharCode(t),bgColorCode:n,fgColorCode:r,positions:e}}static dotCloudMultiColor(e){return{type:12,dots:e.map(t=>({...t,charCode:A.toCharCode(t.charCode)}))}}static bitmask(e,t,r,n,o,i,s=15,a=0,d=!1){let u=r*n,c=Math.ceil(u/8),l=new Uint8Array(c);for(let p=0;p<u;p++)if(o[p]){let h=Math.floor(p/8),m=p%8;l[h]|=1<<m}return{type:17,posX:e,posY:t,sizeX:r,sizeY:n,charCode:A.toCharCode(i),bgColorCode:a,fgColorCode:s,override:d,mask:l}}static bitmask4(e,t,r,n,o,i,s=!1){let a={char:"?",fgColor:15,bgColor:0},d=[i[0]??a,i[1]??a,i[2]??a],u=r*n,c=Math.ceil(u/4),l=new Uint8Array(c);for(let p=0;p<u;p++){let h=o[p]&3,m=Math.floor(p/4),b=p%4*2;l[m]|=h<<b}return{type:18,posX:e,posY:t,sizeX:r,sizeY:n,override:s,variants:[{charCode:A.toCharCode(d[0].char),fgColorCode:d[0].fgColor,bgColorCode:d[0].bgColor},{charCode:A.toCharCode(d[1].char),fgColorCode:d[1].fgColor,bgColorCode:d[1].bgColor},{charCode:A.toCharCode(d[2].char),fgColorCode:d[2].fgColor,bgColorCode:d[2].bgColor}],mask:l}}static bitmask16(e,t,r,n,o,i,s=!1){let a={char:"?",fgColor:15,bgColor:0},d=[];for(let p=0;p<15;p++)d.push(i[p]??a);let u=r*n,c=Math.ceil(u/2),l=new Uint8Array(c);for(let p=0;p<u;p++){let h=o[p]&15,m=Math.floor(p/2),b=p%2*4;l[m]|=h<<b}return{type:24,posX:e,posY:t,sizeX:r,sizeY:n,override:s,variants:d.map(p=>({charCode:A.toCharCode(p.char),fgColorCode:p.fgColor,bgColorCode:p.bgColor})),mask:l}}static spriteCloud(e,t,r=15,n=0){return{type:13,spriteIndex:e,bgColorCode:n,fgColorCode:r,positions:t}}static spriteCloudMultiColor(e,t){return{type:14,spriteIndex:e,positions:t}}static spriteCloudVaried(e){return{type:15,sprites:e}}static spriteCloudVariedMultiColor(e){return{type:16,sprites:e}}static clear(e=32,t=15,r=0){return{type:19,charCode:A.toCharCode(e),bgColorCode:r,fgColorCode:t}}static fillChar(e,t,r,n=15,o=0){return{type:20,patternWidth:e,patternHeight:t,pattern:r.map(i=>A.toCharCode(i)),bgColorCode:o,fgColorCode:n}}static fillSprite(e,t=15,r=0){return{type:21,spriteIndex:e,bgColorCode:r,fgColorCode:t}}static fillSpriteMultiColor(e){return{type:22,spriteIndex:e}}static boxWithBorder(e,t,r,n,o,i){return[this.rectangle(e+1,t+1,r-2,n-2,{charCode:i.charCode??9608,bgColor:i.bgColor??0,fgColor:i.fgColor??8,filled:!0}),this.rectangle(e,t,r,n,{charCode:o.charCode??9608,bgColor:o.bgColor??0,fgColor:o.fgColor??15,filled:!1})]}static grid(e,t,r,n,o,i,s={}){let a=[];for(let d=0;d<=o;d++)for(let u=0;u<=i;u++)a.push({posX:e+u*r,posY:t+d*n});return this.dotCloud(a,s.charCode??"+",s.fgColor??15,s.bgColor??0)}};C(A,"OrderBuilder");var pt=A;var zt=(I=>(I[I.Char=1]="Char",I[I.Text=2]="Text",I[I.TextMultiline=23]="TextMultiline",I[I.SubFrame=3]="SubFrame",I[I.SubFrameMultiColor=4]="SubFrameMultiColor",I[I.FullFrame=5]="FullFrame",I[I.FullFrameMultiColor=6]="FullFrameMultiColor",I[I.Sprite=7]="Sprite",I[I.SpriteMultiColor=8]="SpriteMultiColor",I[I.ColorMap=9]="ColorMap",I[I.Shape=10]="Shape",I[I.DotCloud=11]="DotCloud",I[I.DotCloudMultiColor=12]="DotCloudMultiColor",I[I.SpriteCloud=13]="SpriteCloud",I[I.SpriteCloudMultiColor=14]="SpriteCloudMultiColor",I[I.SpriteCloudVaried=15]="SpriteCloudVaried",I[I.SpriteCloudVariedMultiColor=16]="SpriteCloudVariedMultiColor",I[I.Bitmask=17]="Bitmask",I[I.Bitmask4=18]="Bitmask4",I[I.Bitmask16=24]="Bitmask16",I[I.Clear=19]="Clear",I[I.FillChar=20]="FillChar",I[I.FillSprite=21]="FillSprite",I[I.FillSpriteMultiColor=22]="FillSpriteMultiColor",I[I.TriggerSound=32]="TriggerSound",I[I.TriggerGlobalSound=33]="TriggerGlobalSound",I))(zt||{});function Or(g){return g>=1&&g<=2||g>=3&&g<=6||g>=7&&g<=8||g>=9&&g<=10||g>=11&&g<=18||g>=19&&g<=23||g===24||g>=32&&g<=33}C(Or,"isValidOrderType");function wr(g){switch(g){case 1:return"Char";case 2:return"Text";case 3:return"SubFrame";case 4:return"SubFrameMultiColor";case 5:return"FullFrame";case 6:return"FullFrameMultiColor";case 7:return"Sprite";case 8:return"SpriteMultiColor";case 9:return"ColorMap";case 10:return"Shape";case 11:return"DotCloud";case 12:return"DotCloudMultiColor";case 13:return"SpriteCloud";case 14:return"SpriteCloudMultiColor";case 15:return"SpriteCloudVaried";case 16:return"SpriteCloudVariedMultiColor";case 17:return"Bitmask";case 18:return"Bitmask4";case 24:return"Bitmask16";case 19:return"Clear";case 20:return"FillChar";case 21:return"FillSprite";case 22:return"FillSpriteMultiColor";case 32:return"TriggerSound";case 33:return"TriggerGlobalSound";default:return`Unknown(0x${g.toString(16)})`}}C(wr,"getOrderTypeName");Te();L();Ct();var Et=(l=>(l[l.LayerEnabled=1]="LayerEnabled",l[l.SetMode=2]="SetMode",l[l.UpdatePosition=4]="UpdatePosition",l[l.UpdateZOrder=8]="UpdateZOrder",l[l.Disabled=0]="Disabled",l[l.EnabledAddMode=1]="EnabledAddMode",l[l.EnabledSetMode=3]="EnabledSetMode",l[l.EnabledAddMoveOnly=5]="EnabledAddMoveOnly",l[l.EnabledSetMoveOnly=7]="EnabledSetMoveOnly",l[l.EnabledAddReorderOnly=9]="EnabledAddReorderOnly",l[l.EnabledSetReorderOnly=11]="EnabledSetReorderOnly",l[l.FullUpdate=15]="FullUpdate",l))(Et||{}),ht;(u=>{function g(c,l){return(c&l)!==0}u.hasFlag=g,C(g,"hasFlag");function e(c,l){return c|l}u.addFlag=e,C(e,"addFlag");function t(c,l){return c&~l}u.removeFlag=t,C(t,"removeFlag");function r(...c){return c.reduce((l,p)=>l|p,0)}u.combine=r,C(r,"combine");function n(c){return(c&240)===0}u.isValid=n,C(n,"isValid");function o(c){return g(c,1)}u.isEnabled=o,C(o,"isEnabled");function i(c){return g(c,2)}u.isSetMode=i,C(i,"isSetMode");function s(c){return g(c,4)}u.hasPositionChanged=s,C(s,"hasPositionChanged");function a(c){return g(c,8)}u.hasZOrderChanged=a,C(a,"hasZOrderChanged");function d(c){if(c===0)return"Disabled";let l=[];return g(c,1)?l.push("Enabled"):l.push("Disabled"),g(c,2)?l.push("SET"):l.push("ADD"),g(c,4)&&l.push("Position"),g(c,8)&&l.push("ZOrder"),l.join(" | ")}u.describe=d,C(d,"describe")})(ht||(ht={}));it();Xe();nt();export{V as ASCII_8X8_FONT,xt as AUDIO_CONFIGURE_SPATIAL_SIZE,Lr as AUDIO_FADEOUT_SOUND_MIN_SIZE,Pr as AUDIO_PAUSE_SOUND_MIN_SIZE,xr as AUDIO_PLAY_GLOBAL_SOUND_MIN_SIZE,mr as AUDIO_PLAY_SOUND_MIN_SIZE,Tr as AUDIO_RESUME_SOUND_MIN_SIZE,mt as AUDIO_SET_LISTENER_POSITION_SIZE,Dr as AUDIO_SET_SOUND_EFFECTS_MIN_SIZE,Rr as AUDIO_STOP_SOUND_MIN_SIZE,ae as AudioOrderCollector,de as AudioOrderDecoder,Le as AudioOrderType,Pe as AudioTargetType,nr as BITMASK16_ORDER_MIN_SIZE,rr as BITMASK4_ORDER_MIN_SIZE,tr as BITMASK_ORDER_MIN_SIZE,ne as BitmapFont,ie as BitmapFontRegistry,Tt as CHAR_ORDER_SIZE,qt as CIRCLE_SHAPE_SIZE,dr as CLEAR_ORDER_SIZE,Vt as COLORMAP_ORDER_MIN_SIZE,k as COLOR_SKIP,P as CellBuffer,q as CharCodeBuffer,ct as Core,te as CoreStats,Mr as DISPLAY_HEADER_SIZE,er as DOTCLOUD_MULTICOLOR_ORDER_MIN_SIZE,Qt as DOTCLOUD_ORDER_MIN_SIZE,G as Display,Kt as ELLIPSE_SHAPE_SIZE,ur as FILLCHAR_ORDER_MIN_SIZE,cr as FILLSPRITE_MULTICOLOR_ORDER_SIZE,lr as FILLSPRITE_ORDER_SIZE,Nt as FULLFRAME_MULTICOLOR_ORDER_MIN_SIZE,Ht as FULLFRAME_ORDER_MIN_SIZE,Ut as FontType,J as InputBindingRegistry,zr as LAYER_CELL_COUNT,Fr as LAYER_HEADER_SIZE,ce as LAYER_SIZE,jt as LINE_SHAPE_SIZE,K as Layer,st as LoadType,pt as OrderBuilder,zt as OrderType,De as PlaySoundFlags,Gt as RECTANGLE_SHAPE_SIZE,Zt as SHAPE_ORDER_MIN_SIZE,ir as SPRITECLOUD_MULTICOLOR_ORDER_MIN_SIZE,or as SPRITECLOUD_ORDER_MIN_SIZE,ar as SPRITECLOUD_VARIED_MULTICOLOR_ORDER_MIN_SIZE,sr as SPRITECLOUD_VARIED_ORDER_MIN_SIZE,$t as SPRITE_MULTICOLOR_ORDER_SIZE,Wt as SPRITE_ORDER_SIZE,_t as SUBFRAME_MULTICOLOR_ORDER_MIN_SIZE,Yt as SUBFRAME_ORDER_MIN_SIZE,gt as ShapeType,se as SoundRegistry,re as SpriteRegistry,Xt as TEXT_MULTILINE_ORDER_MIN_SIZE,Dt as TEXT_ORDER_MIN_SIZE,Jt as TRIANGLE_SHAPE_SIZE,hr as TRIGGERGLOBALSOUND_ORDER_SIZE,pr as TRIGGERSOUND_ORDER_SIZE,Er as UPDATE_PACKET_HEADER_SIZE,Et as UpdateFlags,ht as UpdateFlagsHelper,fe as UpdatePacketDecoder,ee as User,Q as UserStats,ti as Vector2,D as WebFont,oe as WebFontRegistry,Ir as createASCII8x8FontLoad,ke as createEmptyCompressedInputPacket,Fe as decodeCompressedInput,Ee as decodeInt8ToAxis,ze as encodeAxisToInt8,Ur as encodeCompressedInput,fr as getASCII8x8FontConfig,Sr as getAllCharCodes,yt as getAudioOrderTypeName,_ as getButtonByteCount,br as getCharBitmap,Me as getCompressedPacketSize,wr as getOrderTypeName,yr as hasChar,bt as isValidAudioOrderType,Or as isValidOrderType};
10
+ `)}static char(e,t,r,n=15,o=0){return{type:1,posX:e,posY:t,charCode:A.toCharCode(r),bgColorCode:o,fgColorCode:n}}static text(e,t,r,n=15,o=0){return{type:2,posX:e,posY:t,text:r,bgColorCode:o,fgColorCode:n}}static textMultiline(e,t,r,n=15,o=0){return{type:23,posX:e,posY:t,text:A.dedent(r),bgColorCode:o,fgColorCode:n}}static subFrame(e,t,r,n,o,i=15,s=0){return{type:3,posX:e,posY:t,sizeX:r,sizeY:n,frame:o.map(a=>A.toCharCode(a)),bgColorCode:s,fgColorCode:i}}static subFrameMultiColor(e,t,r,n,o){return{type:4,posX:e,posY:t,sizeX:r,sizeY:n,frame:o.map(i=>({charCode:A.toCharCode(i.charCode),bgColorCode:i.bgColorCode,fgColorCode:i.fgColorCode}))}}static fullFrame(e,t=15,r=0){return{type:5,frame:e.map(n=>A.toCharCode(n)),bgColorCode:r,fgColorCode:t}}static fullFrameMultiColor(e){return{type:6,frame:e.map(t=>({charCode:A.toCharCode(t.charCode),bgColorCode:t.bgColorCode,fgColorCode:t.fgColorCode}))}}static sprite(e,t,r,n=15,o=0){return{type:7,posX:e,posY:t,spriteIndex:r,bgColorCode:o,fgColorCode:n}}static spriteMultiColor(e,t,r){return{type:8,posX:e,posY:t,spriteIndex:r}}static colorMap(e,t,r,n,o){return{type:9,posX:e,posY:t,sizeX:r,sizeY:n,colorData:o}}static rectangle(e,t,r,n,o={}){return{type:10,shapeType:1,shapeData:{posX:e,posY:t,width:r,height:n,filled:o.filled??!0,charCode:A.toCharCode(o.charCode??9608),bgColorCode:o.bgColor??0,fgColorCode:o.fgColor??15}}}static circle(e,t,r,n={}){return{type:10,shapeType:2,shapeData:{centerX:e,centerY:t,radius:r,filled:n.filled??!0,charCode:A.toCharCode(n.charCode??9608),bgColorCode:n.bgColor??0,fgColorCode:n.fgColor??15}}}static line(e,t,r,n,o={}){return{type:10,shapeType:3,shapeData:{x1:e,y1:t,x2:r,y2:n,charCode:A.toCharCode(o.charCode??9608),bgColorCode:o.bgColor??0,fgColorCode:o.fgColor??15}}}static ellipse(e,t,r,n,o={}){return{type:10,shapeType:4,shapeData:{centerX:e,centerY:t,radiusX:r,radiusY:n,filled:o.filled??!0,charCode:A.toCharCode(o.charCode??9608),bgColorCode:o.bgColor??0,fgColorCode:o.fgColor??15}}}static triangle(e,t,r,n,o,i,s={}){return{type:10,shapeType:5,shapeData:{x1:e,y1:t,x2:r,y2:n,x3:o,y3:i,filled:s.filled??!0,charCode:A.toCharCode(s.charCode??9608),bgColorCode:s.bgColor??0,fgColorCode:s.fgColor??15}}}static dotCloud(e,t,r=15,n=0){return{type:11,charCode:A.toCharCode(t),bgColorCode:n,fgColorCode:r,positions:e}}static dotCloudMultiColor(e){return{type:12,dots:e.map(t=>({...t,charCode:A.toCharCode(t.charCode)}))}}static bitmask(e,t,r,n,o,i,s=15,a=0,d=!1){let c=r*n,u=Math.ceil(c/8),l=new Uint8Array(u);for(let p=0;p<c;p++)if(o[p]){let h=Math.floor(p/8),g=p%8;l[h]|=1<<g}return{type:17,posX:e,posY:t,sizeX:r,sizeY:n,charCode:A.toCharCode(i),bgColorCode:a,fgColorCode:s,override:d,mask:l}}static bitmask4(e,t,r,n,o,i,s=!1){let a={char:"?",fgColor:15,bgColor:0},d=[i[0]??a,i[1]??a,i[2]??a],c=r*n,u=Math.ceil(c/4),l=new Uint8Array(u);for(let p=0;p<c;p++){let h=o[p]&3,g=Math.floor(p/4),y=p%4*2;l[g]|=h<<y}return{type:18,posX:e,posY:t,sizeX:r,sizeY:n,override:s,variants:[{charCode:A.toCharCode(d[0].char),fgColorCode:d[0].fgColor,bgColorCode:d[0].bgColor},{charCode:A.toCharCode(d[1].char),fgColorCode:d[1].fgColor,bgColorCode:d[1].bgColor},{charCode:A.toCharCode(d[2].char),fgColorCode:d[2].fgColor,bgColorCode:d[2].bgColor}],mask:l}}static bitmask16(e,t,r,n,o,i,s=!1){let a={char:"?",fgColor:15,bgColor:0},d=[];for(let p=0;p<15;p++)d.push(i[p]??a);let c=r*n,u=Math.ceil(c/2),l=new Uint8Array(u);for(let p=0;p<c;p++){let h=o[p]&15,g=Math.floor(p/2),y=p%2*4;l[g]|=h<<y}return{type:24,posX:e,posY:t,sizeX:r,sizeY:n,override:s,variants:d.map(p=>({charCode:A.toCharCode(p.char),fgColorCode:p.fgColor,bgColorCode:p.bgColor})),mask:l}}static spriteCloud(e,t,r=15,n=0){return{type:13,spriteIndex:e,bgColorCode:n,fgColorCode:r,positions:t}}static spriteCloudMultiColor(e,t){return{type:14,spriteIndex:e,positions:t}}static spriteCloudVaried(e){return{type:15,sprites:e}}static spriteCloudVariedMultiColor(e){return{type:16,sprites:e}}static clear(e=32,t=15,r=0){return{type:19,charCode:A.toCharCode(e),bgColorCode:r,fgColorCode:t}}static fillChar(e,t,r,n=15,o=0){return{type:20,patternWidth:e,patternHeight:t,pattern:r.map(i=>A.toCharCode(i)),bgColorCode:o,fgColorCode:n}}static fillSprite(e,t=15,r=0){return{type:21,spriteIndex:e,bgColorCode:r,fgColorCode:t}}static fillSpriteMultiColor(e){return{type:22,spriteIndex:e}}static boxWithBorder(e,t,r,n,o,i){return[this.rectangle(e+1,t+1,r-2,n-2,{charCode:i.charCode??9608,bgColor:i.bgColor??0,fgColor:i.fgColor??8,filled:!0}),this.rectangle(e,t,r,n,{charCode:o.charCode??9608,bgColor:o.bgColor??0,fgColor:o.fgColor??15,filled:!1})]}static grid(e,t,r,n,o,i,s={}){let a=[];for(let d=0;d<=o;d++)for(let c=0;c<=i;c++)a.push({posX:e+c*r,posY:t+d*n});return this.dotCloud(a,s.charCode??"+",s.fgColor??15,s.bgColor??0)}static polyline(e,t="*",r=15,n=0){return{type:25,charCode:A.toCharCode(t),fgColorCode:r,bgColorCode:n,points:e.map(o=>({x:o.x&255,y:o.y&255}))}}static polylineFromCoords(e,t="*",r=15,n=0){let o=[];for(let i=0;i<e.length-1;i+=2)o.push({x:e[i],y:e[i+1]});return this.polyline(o,t,r,n)}static polygon(e,t="*",r=15,n=0){if(e.length<2)return this.polyline(e,t,r,n);let o=[...e,e[0]];return this.polyline(o,t,r,n)}};b(A,"OrderBuilder");var Wt=A;lt();D();Jt();var br=(l=>(l[l.LayerEnabled=1]="LayerEnabled",l[l.SetMode=2]="SetMode",l[l.UpdatePosition=4]="UpdatePosition",l[l.UpdateZOrder=8]="UpdateZOrder",l[l.Disabled=0]="Disabled",l[l.EnabledAddMode=1]="EnabledAddMode",l[l.EnabledSetMode=3]="EnabledSetMode",l[l.EnabledAddMoveOnly=5]="EnabledAddMoveOnly",l[l.EnabledSetMoveOnly=7]="EnabledSetMoveOnly",l[l.EnabledAddReorderOnly=9]="EnabledAddReorderOnly",l[l.EnabledSetReorderOnly=11]="EnabledSetReorderOnly",l[l.FullUpdate=15]="FullUpdate",l))(br||{}),Vt;(c=>{function m(u,l){return(u&l)!==0}c.hasFlag=m,b(m,"hasFlag");function e(u,l){return u|l}c.addFlag=e,b(e,"addFlag");function t(u,l){return u&~l}c.removeFlag=t,b(t,"removeFlag");function r(...u){return u.reduce((l,p)=>l|p,0)}c.combine=r,b(r,"combine");function n(u){return(u&240)===0}c.isValid=n,b(n,"isValid");function o(u){return m(u,1)}c.isEnabled=o,b(o,"isEnabled");function i(u){return m(u,2)}c.isSetMode=i,b(i,"isSetMode");function s(u){return m(u,4)}c.hasPositionChanged=s,b(s,"hasPositionChanged");function a(u){return m(u,8)}c.hasZOrderChanged=a,b(a,"hasZOrderChanged");function d(u){if(u===0)return"Disabled";let l=[];return m(u,1)?l.push("Enabled"):l.push("Disabled"),m(u,2)?l.push("SET"):l.push("ADD"),m(u,4)&&l.push("Position"),m(u,8)&&l.push("ZOrder"),l.join(" | ")}c.describe=d,b(d,"describe")})(Vt||(Vt={}));Qt();Lt();pt();Tt();export{J as ASCII_8X8_FONT,Gt as AUDIO_CONFIGURE_SPATIAL_SIZE,Ln as AUDIO_FADEOUT_SOUND_MIN_SIZE,Pn as AUDIO_PAUSE_SOUND_MIN_SIZE,nn as AUDIO_PLAY_GLOBAL_SOUND_MIN_SIZE,rn as AUDIO_PLAY_SOUND_MIN_SIZE,Dn as AUDIO_RESUME_SOUND_MIN_SIZE,Zt as AUDIO_SET_LISTENER_POSITION_SIZE,Yn as AUDIO_SET_SOUND_EFFECTS_MIN_SIZE,Fn as AUDIO_STOP_SOUND_MIN_SIZE,ge as AudioOrderCollector,xe as AudioOrderDecoder,dt as AudioOrderType,ct as AudioTargetType,Wr as BITMASK16_ORDER_MIN_SIZE,_r as BITMASK4_ORDER_MIN_SIZE,Hr as BITMASK_ORDER_MIN_SIZE,ue as BitmapFont,me as BitmapFontRegistry,Or as CHAR_ORDER_SIZE,Lr as CIRCLE_SHAPE_SIZE,Jr as CLEAR_ORDER_SIZE,Tr as COLORMAP_ORDER_MIN_SIZE,E as COLOR_SKIP,X as CellBuffer,Q as CharCodeBuffer,Ht as Core,ce as CoreStats,Tn as DISPLAY_HEADER_SIZE,Nr as DOTCLOUD_MULTICOLOR_ORDER_MIN_SIZE,Xr as DOTCLOUD_ORDER_MIN_SIZE,K as Display,Dr as ELLIPSE_SHAPE_SIZE,qr as FILLCHAR_ORDER_MIN_SIZE,Qr as FILLSPRITE_MULTICOLOR_ORDER_SIZE,Kr as FILLSPRITE_ORDER_SIZE,kr as FULLFRAME_MULTICOLOR_ORDER_MIN_SIZE,Er as FULLFRAME_ORDER_MIN_SIZE,dr as FontType,se as InputBindingRegistry,Rn as LAYER_CELL_COUNT,zn as LAYER_HEADER_SIZE,Ce as LAYER_SIZE,Pr as LINE_SHAPE_SIZE,te as Layer,Ct as LoadType,ie as MacroEngine,Kt as MacroEventType,qt as MacroOrderType,re as MacroRegistry,Wt as OrderBuilder,er as OrderType,Vr as POLYLINE_ORDER_MIN_SIZE,ut as PlaySoundFlags,Fr as RECTANGLE_SHAPE_SIZE,zr as SHAPE_ORDER_MIN_SIZE,Zr as SPRITECLOUD_MULTICOLOR_ORDER_MIN_SIZE,$r as SPRITECLOUD_ORDER_MIN_SIZE,jr as SPRITECLOUD_VARIED_MULTICOLOR_ORDER_MIN_SIZE,Gr as SPRITECLOUD_VARIED_ORDER_MIN_SIZE,Br as SPRITE_MULTICOLOR_ORDER_SIZE,Rr as SPRITE_ORDER_SIZE,Ar as SUBFRAME_MULTICOLOR_ORDER_MIN_SIZE,Mr as SUBFRAME_ORDER_MIN_SIZE,jt as ShapeType,he as SoundRegistry,le as SpriteRegistry,vr as TEXT_MULTILINE_ORDER_MIN_SIZE,wr as TEXT_ORDER_MIN_SIZE,Yr as TRIANGLE_SHAPE_SIZE,tn as TRIGGERGLOBALSOUND_ORDER_SIZE,en as TRIGGERSOUND_ORDER_SIZE,Bn as UPDATE_PACKET_HEADER_SIZE,br as UpdateFlags,Vt as UpdateFlagsHelper,De as UpdatePacketDecoder,de as User,ae as UserStats,Ks as Vector2,H as WebFont,pe as WebFontRegistry,On as createASCII8x8FontLoad,tt as createEmptyCompressedInputPacket,st as decodeCompressedInput,nt as decodeInt8ToAxis,rt as encodeAxisToInt8,vn as encodeCompressedInput,wn as getASCII8x8FontConfig,Un as getAllCharCodes,or as getAudioOrderTypeName,V as getButtonByteCount,In as getCharBitmap,ot as getCompressedPacketSize,ln as getMacroEventTypeName,cn as getMacroOrderTypeName,pn as getOrderTypeName,Sn as hasChar,nr as isValidAudioOrderType,dn as isValidMacroEventType,an as isValidMacroOrderType,un as isValidOrderType};