handler-playable-sdk 1.0.20 → 1.0.21

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.
Files changed (39) hide show
  1. package/dist/{chunk-5XDKSUEE.js → chunk-KHEZYZMO.js} +3 -3
  2. package/dist/cli/brand-dna.mjs +1 -1
  3. package/dist/cli/canva-import.mjs +1 -1
  4. package/dist/cli/cleanup-assets.mjs +1 -1
  5. package/dist/cli/fix-scales.mjs +1 -1
  6. package/dist/cli/index.js +1 -1
  7. package/dist/cli/screen-helper.mjs +1 -1
  8. package/dist/cli/setup-library.mjs +1 -1
  9. package/dist/cli/student-helper/add-logic.mjs +1 -1
  10. package/dist/cli/student-helper/add-object.mjs +1 -1
  11. package/dist/cli/student-helper/arg-parsing.mjs +1 -1
  12. package/dist/cli/student-helper/asset-registry.mjs +1 -1
  13. package/dist/cli/student-helper/bullet-system.mjs +1 -1
  14. package/dist/cli/student-helper/collectable-system.mjs +1 -1
  15. package/dist/cli/student-helper/constants.mjs +1 -1
  16. package/dist/cli/student-helper/drag-snap-couples.mjs +1 -1
  17. package/dist/cli/student-helper/endgame-screen.mjs +1 -1
  18. package/dist/cli/student-helper/fs-io.mjs +1 -1
  19. package/dist/cli/student-helper/logic-defaults.mjs +1 -1
  20. package/dist/cli/student-helper/print-help.mjs +1 -1
  21. package/dist/cli/student-helper/prompts.mjs +1 -1
  22. package/dist/cli/student-helper/scratch-card.mjs +1 -1
  23. package/dist/cli/student-helper/screen-utils.mjs +1 -1
  24. package/dist/cli/student-helper/snippets.mjs +1 -1
  25. package/dist/cli/student-helper/start-screen.mjs +1 -1
  26. package/dist/cli/student-helper/swerve-collect.mjs +1 -1
  27. package/dist/cli/student-helper/tap-destroy.mjs +1 -1
  28. package/dist/cli/student-helper/template-packs.mjs +1 -1
  29. package/dist/cli/student-helper.mjs +1 -1
  30. package/dist/cli/sync-screens.mjs +1 -1
  31. package/dist/cli/validate-assets.mjs +1 -1
  32. package/dist/cli/validate.mjs +1 -1
  33. package/dist/index.cjs +3 -3
  34. package/dist/index.js +1 -1
  35. package/dist/pixi/index.cjs +1 -1
  36. package/dist/pixi/index.js +1 -1
  37. package/dist/three/index.cjs +13 -13
  38. package/dist/three/index.js +1 -1
  39. package/package.json +1 -1
@@ -43,7 +43,7 @@
43
43
  <button class="debug-btn primary" data-modal-apply>Apply</button>
44
44
  </div>
45
45
  </div>
46
- `,this.modal=n}attachModalListeners(){if(!this.modal)return;this.modal.querySelectorAll("[data-modal-close]").forEach(r=>{r.addEventListener("click",()=>this.close())}),this.modal.querySelectorAll("[data-tab]").forEach(r=>{r.addEventListener("click",o=>{let l=o.target.dataset.tab;l&&this.switchTab(l)})});let n=this.modal.querySelector("[data-ai-generate]");n==null||n.addEventListener("click",()=>{this.openAiEditor("generate")});let a=this.modal.querySelector("[data-ai-edit]");a==null||a.addEventListener("click",()=>{this.openAiEditor("edit")});let s=this.modal.querySelector("[data-modal-apply]");s==null||s.addEventListener("click",()=>{this.apply()}),this.modal.addEventListener("click",r=>{r.target===this.modal&&this.close()})}switchTab(e){if(!this.modal)return;this.modal.querySelectorAll("[data-tab]").forEach(a=>{a.classList.toggle("active",a.getAttribute("data-tab")===e)}),this.modal.querySelectorAll("[data-tab-panel]").forEach(a=>{a.classList.toggle("active",a.getAttribute("data-tab-panel")===e)})}openAiEditor(e){let t=window.__openAiEditor;if(typeof t!="function"){alert("AI Editor not available. Please check your setup.");return}let n="";e==="edit"&&this.currentAsset?n=`Edit this image: ${this.currentObjectId}`:n=`Create an image for: ${this.currentObjectId}`,t(this.currentObjectId||"unknown",n,this.currentAsset,{path:this.currentPath,onApply:a=>{this.onApplyCallback&&this.onApplyCallback(a),this.close()}})}apply(){this.onApplyCallback&&this.onApplyCallback("library/placeholder.png"),this.close()}close(){this.modal&&this.modal.parentNode&&this.modal.parentNode.removeChild(this.modal),this.modal=null,this.currentObjectId=null,this.currentPath=null,this.onApplyCallback=null}}});var rr={};cn(rr,{AssetCache:()=>ie,AssetLoader:()=>Pe,AssetSystem:()=>ri,AssetTextures:()=>Ie,Assets:()=>_a,BaseSystem:()=>st,GameEngine:()=>si,GameObject:()=>It,GameObjectManager:()=>nt,ObjectFactory:()=>be,Renderer:()=>Pt,RuntimeObjectRegistry:()=>rt,Transform:()=>kt,applyScreenAnchor:()=>Ut,basePixi:()=>Pa,clearResponsiveElements:()=>sa,createPixiBase:()=>ni,getRegisteredFontIds:()=>Aa,globalResponsiveMultipliers:()=>Ke,initAssetTextures:()=>Ft,initAssets:()=>Oa,layout:()=>oa,playLottieOverlay:()=>Ta,registerFont:()=>Ca,registerType:()=>Nt,resolveAnchorVec2:()=>Me,resolveFont:()=>Sa,resolveFontWeight:()=>Ea,resolveScreenAnchorPoint:()=>He,resolveScreenRatioPoint:()=>Fe,runInitSequence:()=>Ra,setLottieInstance:()=>Jt,spawnSceneFromConfig:()=>Ma,updateScreenState:()=>Gt});module.exports=Ba(rr);var xa=require("pixi.js");var Te={};function _t(i,e,t=!1){Te[i]||(Te[i]=[]),Te[i].push({fn:e,once:t})}function di(i,e){if(Te[i]){if(!e){delete Te[i];return}Te[i]=Te[i].filter(t=>t.fn!==e)}}function Ot(i,...e){let t=Te[i];if(t)for(let n of[...t])n.fn(...e),n.once&&di(i,n.fn)}function Z(i,e){_t(i,e,!0)}var D=null,te=[],qe=null;function gn(i){D=i,te=[],qe!==null&&(clearTimeout(qe),qe=null)}function hn(){var i,e,t;return{endpoint:(D==null?void 0:D.endpoint)||"",transport:(D==null?void 0:D.transport)||"beacon",batchSize:(i=D==null?void 0:D.batchSize)!=null?i:10,flushIntervalMs:(e=D==null?void 0:D.flushIntervalMs)!=null?e:300,maxQueue:(t=D==null?void 0:D.maxQueue)!=null?t:200,debug:!!(D!=null&&D.debug)}}async function pn(i,e,t,n){let a=JSON.stringify(e);if(t==="beacon"&&typeof navigator!="undefined"&&typeof navigator.sendBeacon=="function")try{let s=navigator.sendBeacon(i,new Blob([a],{type:"application/json"}));n&&console.log("[handler.telemetry] beacon",s,e);return}catch(s){n&&console.warn("[handler.telemetry] beacon failed, fallback to fetch",s)}try{await fetch(i,{method:"POST",headers:{"Content-Type":"application/json"},body:a,keepalive:!0}),n&&console.log("[handler.telemetry] fetch",e)}catch(s){n&&console.warn("[handler.telemetry] fetch failed",s)}}function pi(i,e){let t=hn();if(e&&t.endpoint){if(te.push(i),te.length>t.maxQueue&&(te=te.slice(te.length-t.maxQueue)),te.length>=t.batchSize){un();return}qe===null&&(qe=window.setTimeout(()=>{qe=null,un()},t.flushIntervalMs))}}async function un(){let i=hn();if(!i.endpoint||te.length===0)return;let e=te.splice(0,i.batchSize);await pn(i.endpoint,{events:e},i.transport,i.debug),te.length>0&&await pn(i.endpoint,{events:te.splice(0,i.batchSize)},i.transport,i.debug)}function fn(i){return Math.max(0,Math.min(1,i))}function Ga(i){let e=String(i!=null?i:"power2.out");if(e==="linear")return t=>t;if(e==="sine.inOut")return t=>.5-Math.cos(Math.PI*t)/2;if(e==="power2.out"||e==="easeOutQuad")return t=>1-(1-t)*(1-t);if(e.startsWith("back.out")){let t=e.match(/back\.out\(([\d.]+)\)/),n=t?Number(t[1]):1.8;return a=>1+(n+1)*Math.pow(a-1,3)+n*Math.pow(a-1,2)}return t=>1-(1-t)*(1-t)}function bt(){return typeof performance!="undefined"&&performance.now?performance.now():Date.now()}function Ua(i,e){let t=i==null?void 0:i[e];return typeof t=="number"?t:0}function mn(i,e,t){try{i[e]=t}catch{}}function qa(i){let e=i==null?void 0:i.scale;if(!e)return null;let t=typeof e.x=="number"?e.x:1,n=typeof e.y=="number"?e.y:1;return{x:t,y:n}}function bn(i,e){let t=i==null?void 0:i.scale;if(t)try{typeof t.set=="function"?t.set(e.x,e.y):(typeof t.x=="number"&&(t.x=e.x),typeof t.y=="number"&&(t.y=e.y))}catch{}}function yn(i,e){let t=qa(i);if(!t)return{from:null,to:null};let n=null,a=null;return typeof e.scale=="number"?(n=e.scale,a=e.scale):e.scale&&typeof e.scale=="object"&&(typeof e.scale.x=="number"&&(n=e.scale.x),typeof e.scale.y=="number"&&(a=e.scale.y)),typeof e.scaleX=="number"&&(n=e.scaleX),typeof e.scaleY=="number"&&(a=e.scaleY),n===null&&a===null?{from:null,to:null}:{from:{x:t.x,y:t.y},to:{x:n!=null?n:t.x,y:a!=null?a:t.y}}}function vn(){let i=new Set,e=new WeakMap,t=null,n=()=>{if(t!=null)return;t=requestAnimationFrame(()=>{t=null,o(),i.size>0&&n()})},a=u=>{var p;i.add(u);let d=(p=e.get(u.target))!=null?p:new Set;d.add(u),e.set(u.target,d),n()},s=u=>{i.delete(u);let d=e.get(u.target);d&&(d.delete(u),d.size===0&&e.delete(u.target))},r=u=>{u.killed||(u.killed=!0,s(u))},o=()=>{var d,p;let u=bt();for(let g of Array.from(i)){if(g.killed||g.paused)continue;let m=u-g.startMs-g.delayMs;if(m<0)continue;let f=g.durationMs>0?m/g.durationMs:1,C=fn(f),b=g.repeat>=0?g.repeat+1:1,h=g.repeat>0?Math.min(Math.floor(f),b-1):0;if(g.repeat>0&&f>=1){let y=f-h;C=fn(y)}let v=g.ease(C);g.yoyo&&h%2===1&&(v=1-v);for(let y of g.props)mn(g.target,y.key,y.from+(y.to-y.from)*v);g.scaleFrom&&g.scaleTo&&bn(g.target,{x:g.scaleFrom.x+(g.scaleTo.x-g.scaleFrom.x)*v,y:g.scaleFrom.y+(g.scaleTo.y-g.scaleFrom.y)*v});try{(d=g.onUpdate)==null||d.call(g)}catch{}if(f>=b){r(g);try{(p=g.onComplete)==null||p.call(g)}catch{}}}},c=(u,d,p)=>{var y;let g=Math.max(0,(typeof d.duration=="number"?d.duration:.5)*1e3),m=Math.max(0,(typeof d.delay=="number"?d.delay:0)*1e3+((y=p==null?void 0:p.delayMsOverride)!=null?y:0)),f=Ga(d.ease),C=typeof d.repeat=="number"?Math.max(0,d.repeat|0):0,b=d.yoyo===!0,h=new Set(["duration","delay","ease","repeat","yoyo","onUpdate","onComplete","scale","scaleX","scaleY"]),v=[];for(let I of Object.keys(d)){if(h.has(I))continue;let _=d[I];typeof _=="number"&&v.push({key:I,from:Ua(u,I),to:_})}let w=yn(u,d);return{target:u,startMs:bt(),delayMs:m,durationMs:g,ease:f,props:v,scaleFrom:w.from,scaleTo:w.to,repeat:C,yoyo:b,onUpdate:typeof d.onUpdate=="function"?d.onUpdate:void 0,onComplete:typeof d.onComplete=="function"?d.onComplete:void 0,killed:!1,paused:!1,pauseAtMs:null}},l={to(u,d){let p=c(u,d);return a(p),{kill:()=>r(p),pause:()=>{p.paused||(p.paused=!0,p.pauseAtMs=bt())},resume:()=>{var f;if(!p.paused)return;let g=(f=p.pauseAtMs)!=null?f:bt(),m=bt()-g;p.startMs+=m,p.paused=!1,p.pauseAtMs=null},isActive:()=>!p.killed&&!p.paused}},fromTo(u,d,p){return l.set(u,d),l.to(u,p)},set(u,d){if(!u||!d)return;for(let g of Object.keys(d)){let m=d[g];g==="scale"||g==="scaleX"||g==="scaleY"||typeof m=="number"&&mn(u,g,m)}let p=yn(u,d);p.to&&bn(u,p.to)},killTweensOf(u){let d=e.get(u);if(d)for(let p of Array.from(d))r(p)},timeline(u={}){let d=[],p=0,g=!1,m=[],f=h=>{if(typeof h=="number")return Math.max(0,h*1e3);let v=typeof h=="string"?h.trim():"";return v.startsWith("+=")?p+Math.max(0,Number(v.slice(2))*1e3||0):v?Math.max(0,Number(v)*1e3||0):p},C=h=>{d.push(h);let v=Math.max(0,(typeof h.vars.duration=="number"?h.vars.duration:.5)*1e3);p=Math.max(p,h.atMs+v)},b={to(h,v,w){return C({kind:"to",target:h,vars:v,atMs:f(w)}),b},fromTo(h,v,w,y){return C({kind:"fromTo",target:h,vars:w,from:v,atMs:f(y)}),b},play(){var h,v;if(g)return b;g=!0,m=[];for(let w of d)w.kind==="fromTo"&&l.set(w.target,(h=w.from)!=null?h:{}),m.push(l.to(w.target,{...w.vars,delay:w.atMs/1e3+((v=w.vars.delay)!=null?v:0)}));return b},pause(){for(let h of m)h.pause();return b},kill(){for(let h of m)h.kill();m=[],g=!1}};return u.paused||b.play(),b}};return l}function wn(){if(typeof window=="undefined")return;let i=window;if(!i.gsap)try{i.gsap=vn()}catch{}}var xn={name:"handler-playable-sdk",version:"1.0.20",type:"module",description:"Handler Playable SDK v0.1 with contract-aligned surface (root sandbox, canonical event envelope).",main:"dist/index.cjs",module:"dist/index.js",types:"dist/index.d.ts",exports:{".":{types:"./dist/index.d.ts",import:"./dist/index.js",require:"./dist/index.cjs"},"./pixi":{types:"./dist/pixi/index.d.ts",import:"./dist/pixi/index.js",require:"./dist/pixi/index.cjs"},"./pixi/index.css":{import:"./dist/pixi/index.css",require:"./dist/pixi/index.css"},"./three":{types:"./dist/three/index.d.ts",import:"./dist/three/index.js",require:"./dist/three/index.cjs"},"./cli":{types:"./dist/cli/index.d.ts",import:"./dist/cli/index.js",require:"./dist/cli/index.cjs"}},bin:{"handler-student-helper":"./bin/student-helper.mjs","handler-validate":"./bin/validate.mjs","handler-sync-screens":"./bin/sync-screens.mjs","handler-brand-dna":"./bin/brand-dna.mjs","handler-setup-library":"./bin/setup-library.mjs","handler-screen-helper":"./bin/screen-helper.mjs"},scripts:{prebuild:"python3 src/preview/build-css.py",build:"tsup src/index.ts src/pixi/index.ts src/three/index.ts src/cli/index.ts --format cjs,esm --dts --clean --minify --external lottie-web --external jszip && npm run create-mjs-symlinks && npm run postbuild-cli && npm run obfuscate && npm run postbuild",postbuild:"python3 src/preview/copy-css-to-dist.py","postbuild-cli":"cp src/cli/*.mjs dist/cli/ && mkdir -p dist/cli/student-helper && cp src/cli/student-helper/*.mjs dist/cli/student-helper/ && chmod +x dist/cli/*.mjs dist/cli/student-helper/*.mjs && chmod +x bin/*.mjs","create-mjs-symlinks":"cd dist && ln -sf index.js index.mjs && cd pixi && ln -sf index.js index.mjs && cd ../three && ln -sf index.js index.mjs","build:dev":"tsup src/index.ts src/pixi/index.ts src/three/index.ts src/cli/index.ts --format cjs,esm --dts --clean --external lottie-web --external jszip && npm run create-mjs-symlinks && npm run postbuild-cli",obfuscate:"javascript-obfuscator dist/pixi/index.js --output dist/pixi/index.js --config obfuscator.config.json && javascript-obfuscator dist/three/index.js --output dist/three/index.js --config obfuscator.config.json && javascript-obfuscator dist/cli/index.js --output dist/cli/index.js --config obfuscator.config.json && npm run obfuscate-cli","obfuscate-cli":'for file in dist/cli/*.mjs dist/cli/student-helper/*.mjs; do javascript-obfuscator "$file" --output "$file" --config obfuscator.config.json; done',lint:"eslint 'src/**/*.{ts,tsx}'",typecheck:"tsc --noEmit",prepublishOnly:"npm run build","publish:update":"node scripts/publish-and-update.cjs patch","publish:update:minor":"node scripts/publish-and-update.cjs minor","publish:update:major":"node scripts/publish-and-update.cjs major"},author:"Handler",license:"MIT",publishConfig:{access:"public"},repository:{type:"git",url:"https://github.com/HandlerAIGames/handler-playable-sdk.git"},files:["dist","bin","LICENSE","README.md"],peerDependencies:{"lottie-web":"^5.0.0","pixi.js":"^8.0.0",three:"^0.182.0"},peerDependenciesMeta:{"pixi.js":{optional:!0},three:{optional:!0},"lottie-web":{optional:!0}},devDependencies:{"@types/three":"^0.182.0",eslint:"^9.39.2","javascript-obfuscator":"^5.1.0","pixi.js":"8.8.1",three:"^0.182.0","ts-node":"^10.9.2",tsup:"^8.4.0",typescript:"^5.7.2","typescript-eslint":"^8.53.0"},dependencies:{"@google/genai":"^1.35.0","@google/generative-ai":"^0.24.1",jszip:"^3.10.1",sharp:"^0.34.5"}};var Q=0,Wa=Q++,Sn=Q++,En=Q++,Cn=Q++,An=Q++,Ln=Q++,Tn=Q++,kn=Q++,Pn=Q++,In=Q++,Mn=Q++,jn=Q++,O=Wa;function _n(){return O===Sn}function On(){return O===En}function Rn(){return O===Cn}function zn(){return O===An}function Ve(){return O===Ln}function We(){return O===Tn}function $n(){return O===kn}function Dn(){return O===Pn}function Nn(){return O===In}function ui(){return O===Mn}function gi(){return O===jn}function Hn(){let i=typeof AD_PROTOCOL!="undefined"?AD_PROTOCOL:"none",e=typeof AD_NETWORK!="undefined"?AD_NETWORK:"web_embed";if(i==="mraid")try{mraid.getState(),O=Sn;return}catch{}else if(i==="dapi")try{dapi.isReady(),O=En;return}catch{}if(e==="facebook")try{typeof FbPlayableAd!="undefined"&&(O=Cn)}catch{}else if(e==="google")try{typeof ExitApi!="undefined"&&(O=An)}catch{}else if(e==="mintegral")window.gameReady&&(O=Ln);else if(e==="tapjoy")window.TJ_API&&(O=Tn);else if(e==="tiktok")window.openAppStore&&(O=kn);else if(e==="smadex")try{window.smxTracking&&(O=Pn)}catch{}else if(e==="snapchat")try{window.ScPlayableAd&&(O=In)}catch{}else e==="vungle"?O=Mn:(i==="nucleo"||e==="nucleo")&&(O=jn)}var Rt=ci(require("lottie-web"),1),Fn=Rt.default;typeof window!="undefined"&&(window.lottie=Rt.default,window.__baseLottie=Rt.default);mi();function N(i,e){let t=(a,s)=>s===0?a:t(s,a%s),n=t(i,e);return`${i/n}:${e/n}`}var Nr=[{id:"iphone-15-pro-max",label:"iPhone 15 Pro Max",width:430,height:932,category:"iphone",ratio:N(430,932)},{id:"iphone-15-pro",label:"iPhone 15 Pro",width:393,height:852,category:"iphone",ratio:N(393,852)},{id:"iphone-15",label:"iPhone 15",width:393,height:852,category:"iphone",ratio:N(393,852)},{id:"iphone-14",label:"iPhone 14",width:390,height:844,category:"iphone",ratio:N(390,844)},{id:"iphone-se",label:"iPhone SE",width:375,height:667,category:"iphone",ratio:N(375,667)},{id:"iphone-12-mini",label:"iPhone 12 Mini",width:360,height:780,category:"iphone",ratio:N(360,780)}],Hr=[{id:"pixel-8-pro",label:"Pixel 8 Pro",width:448,height:998,category:"android",ratio:N(448,998)},{id:"pixel-8",label:"Pixel 8",width:412,height:915,category:"android",ratio:N(412,915)},{id:"samsung-s24-ultra",label:"Samsung S24 Ultra",width:412,height:915,category:"android",ratio:N(412,915)},{id:"samsung-s24",label:"Samsung S24",width:360,height:780,category:"android",ratio:N(360,780)},{id:"samsung-a54",label:"Samsung A54",width:412,height:915,category:"android",ratio:N(412,915)},{id:"oneplus-12",label:"OnePlus 12",width:412,height:915,category:"android",ratio:N(412,915)}],Fr=[{id:"ipad-pro-12",label:'iPad Pro 12.9"',width:1024,height:1366,category:"tablet",ratio:N(1024,1366)},{id:"ipad-pro-11",label:'iPad Pro 11"',width:834,height:1194,category:"tablet",ratio:N(834,1194)},{id:"ipad-air",label:"iPad Air",width:820,height:1180,category:"tablet",ratio:N(820,1180)},{id:"ipad-mini",label:"iPad Mini",width:768,height:1024,category:"tablet",ratio:N(768,1024)},{id:"samsung-tab-s9",label:"Samsung Tab S9",width:800,height:1280,category:"tablet",ratio:N(800,1280)}],qn=[{id:"playable-portrait",label:"Playable Portrait",width:320,height:480,category:"playable",ratio:"2:3",mraidScale:1},{id:"mraid-320x480",label:"MRAID 320\xD7480",width:320,height:480,category:"playable",ratio:"2:3",mraidScale:1},{id:"iphone-14",label:"iPhone 14",width:390,height:844,category:"playable",ratio:N(390,844),mraidScale:.7},{id:"ipad-mini",label:"iPad Mini",width:768,height:1024,category:"playable",ratio:N(768,1024),mraidScale:.7}];var Br=[...qn];var ts=qn[0];oe();function is(i){return new Promise((e,t)=>{let n=new FileReader;n.onerror=()=>t(new Error("FileReader failed")),n.onload=()=>e(String(n.result||"")),n.readAsDataURL(i)})}function ns(i){var a;let[e,t]=i.split(","),n=e==null?void 0:e.match(/data:(.*?);base64/);return{base64:t!=null?t:"",mimeType:(a=n==null?void 0:n[1])!=null?a:"image/png"}}async function as(i){return await new Promise(e=>{let t=new Image;t.onload=()=>e({width:t.naturalWidth||t.width,height:t.naturalHeight||t.height}),t.onerror=()=>e(null),t.src=i})}async function bi(i){var e,t;try{console.log("[ImageUtils] Fetching image data from URL:",i);let n=await fetch(i);if(!n.ok)return console.warn("[ImageUtils] Fetch failed with status:",n.status,i),null;let a=await n.blob();console.log("[ImageUtils] Blob received, size:",a.size,"type:",a.type);let s=await is(a),r=await as(s),o=ns(s);return console.log("[ImageUtils] Success resolution:",r==null?void 0:r.width,"x",r==null?void 0:r.height,"mime:",o.mimeType),{base64:o.base64,mimeType:o.mimeType,dataUrl:s,width:(e=r==null?void 0:r.width)!=null?e:0,height:(t=r==null?void 0:r.height)!=null?t:0}}catch(n){return console.error("[ImageUtils] Error fetching image data:",n),null}}async function zt(i,e=30){try{console.log("[ImageUtils] Removing background color...");let t=await new Promise((d,p)=>{let g=new Image;g.onload=()=>d(g),g.onerror=()=>p(new Error("Failed to load image")),g.src=i}),n=document.createElement("canvas");n.width=t.width,n.height=t.height;let a=n.getContext("2d");if(!a)return console.error("[ImageUtils] Failed to get canvas context"),i;a.drawImage(t,0,0);let s=a.getImageData(0,0,n.width,n.height),r=s.data,c=[{name:"top-left",offset:0},{name:"top-right",offset:(n.width-1)*4},{name:"bottom-left",offset:(n.height-1)*n.width*4},{name:"bottom-right",offset:((n.height-1)*n.width+(n.width-1))*4}].map(d=>({r:r[d.offset],g:r[d.offset+1],b:r[d.offset+2]})),l=0;for(let d=0;d<r.length;d+=4){let p=r[d],g=r[d+1],m=r[d+2],f=!1;for(let C of c)if(Math.sqrt(Math.pow(p-C.r,2)+Math.pow(g-C.g,2)+Math.pow(m-C.b,2))<e){f=!0;break}f&&(r[d+3]=0,l++)}return console.log(`[ImageUtils] Removed background from ${l} pixels (4-corner sampling, tolerance: ${e})`),a.putImageData(s,0,0),n.toDataURL("image/png")}catch(t){return console.error("[ImageUtils] Error removing background:",t),i}}var Yn=require("@google/genai");async function yi(i,e,t=[],n={}){var a,s,r,o,c,l,u;try{if(!(i!=null&&i.trim()))throw new Error("Gemini API key is required");if(!(e!=null&&e.trim()))throw new Error("Prompt is required");for(let b=0;b<t.length;b++){let h=t[b];if(!h.base64||!h.mimeType)throw new Error(`Image ${b+1} is missing required data`);if(h.base64.length<1e3&&console.warn(`Image ${b+1} data appears very small, may be corrupted`),!h.mimeType.startsWith("image/"))throw new Error(`Image ${b+1} has invalid MIME type: ${h.mimeType}`)}let d=new Yn.GoogleGenAI({apiKey:i}),p="gemini-2.5-flash",g=[e];t.length>0&&t.forEach((b,h)=>{g.push({inlineData:{data:b.base64,mimeType:b.mimeType}}),console.log(`[Gemini] Added image ${h+1}: ${b.mimeType}, size: ${Math.round(b.base64.length/1024)}KB`)}),console.log(`[Gemini] Making request with ${t.length} images and prompt length: ${e.length}`);let m=await d.models.generateContent({model:p,contents:g}),f="",C=(r=(s=(a=m.candidates)==null?void 0:a[0])==null?void 0:s.content)==null?void 0:r.parts;if(C)for(let b of C)b.text&&(f+=b.text);if(!f.trim())throw new Error("Empty response from Gemini API");return console.log(`[Gemini] Response received, length: ${f.length}`),f}catch(d){throw console.error("[Gemini] API error:",d),(o=d.message)!=null&&o.includes("Unable to process input image")?new Error("Unable to process the uploaded image. Please ensure it's a valid PNG, JPG, or JPEG file under 10MB and not corrupted."):(c=d.message)!=null&&c.includes("API_KEY_INVALID")?new Error("Invalid Gemini API key. Please check your API key configuration."):(l=d.message)!=null&&l.includes("QUOTA_EXCEEDED")?new Error("Gemini API quota exceeded. Please try again later or check your billing."):(u=d.message)!=null&&u.includes("SAFETY")?new Error("Content was flagged by Gemini safety filters. Please try with different images."):d}}var Kn=require("@google/genai");async function $t(i,e,t=[],n={}){try{console.info("[GEMINI-REAL-SDK] Initializing GoogleGenAI...");let a=new Kn.GoogleGenAI({apiKey:i}),s=[{text:e}];t.length>0&&t.forEach((o,c)=>{console.info(`[GEMINI-REAL-SDK] Adding image part ${c}`),s.push({inlineData:{mimeType:o.mimeType,data:o.base64}})}),console.info("[GEMINI-REAL-SDK] Calling generateContent with model: gemini-2.5-flash-image");let r=await a.models.generateContent({model:"gemini-2.5-flash-image",contents:s});if(console.info("[GEMINI-REAL-SDK] Received response from model"),!r.candidates||!r.candidates[0]||!r.candidates[0].content||!r.candidates[0].content.parts)throw new Error("Gemini 2.5 Flash Image returned invalid response structure.");for(let o of r.candidates[0].content.parts)if(o.text)console.log(o.text);else if(o.inlineData){let c=o.inlineData.data,l=o.inlineData.mimeType||"image/png";return console.info("[GEMINI-REAL-SDK] Found inline image data in response"),`data:${l};base64,${c}`}throw new Error("Gemini 2.5 Flash Image returned no image data.")}catch(a){throw console.error("[GEMINI-REAL-SDK] Error in generateImageWithGemini25Flash:",JSON.stringify(a,Object.getOwnPropertyNames(a),2)),a}}var ds=require("pixi.js");yt();Dt();oe();var ta=require("pixi.js");var us=require("pixi.js");oe();function Ss(i){return new Promise((e,t)=>{let n=new FileReader;n.onerror=()=>t(new Error("FileReader failed")),n.onload=()=>e(String(n.result||"")),n.readAsDataURL(i)})}function Es(i){var a;let[e,t]=i.split(","),n=e==null?void 0:e.match(/data:(.*?);base64/);return{base64:t!=null?t:"",mimeType:(a=n==null?void 0:n[1])!=null?a:"image/png"}}function Cs(i){return`
46
+ `,this.modal=n}attachModalListeners(){if(!this.modal)return;this.modal.querySelectorAll("[data-modal-close]").forEach(r=>{r.addEventListener("click",()=>this.close())}),this.modal.querySelectorAll("[data-tab]").forEach(r=>{r.addEventListener("click",o=>{let l=o.target.dataset.tab;l&&this.switchTab(l)})});let n=this.modal.querySelector("[data-ai-generate]");n==null||n.addEventListener("click",()=>{this.openAiEditor("generate")});let a=this.modal.querySelector("[data-ai-edit]");a==null||a.addEventListener("click",()=>{this.openAiEditor("edit")});let s=this.modal.querySelector("[data-modal-apply]");s==null||s.addEventListener("click",()=>{this.apply()}),this.modal.addEventListener("click",r=>{r.target===this.modal&&this.close()})}switchTab(e){if(!this.modal)return;this.modal.querySelectorAll("[data-tab]").forEach(a=>{a.classList.toggle("active",a.getAttribute("data-tab")===e)}),this.modal.querySelectorAll("[data-tab-panel]").forEach(a=>{a.classList.toggle("active",a.getAttribute("data-tab-panel")===e)})}openAiEditor(e){let t=window.__openAiEditor;if(typeof t!="function"){alert("AI Editor not available. Please check your setup.");return}let n="";e==="edit"&&this.currentAsset?n=`Edit this image: ${this.currentObjectId}`:n=`Create an image for: ${this.currentObjectId}`,t(this.currentObjectId||"unknown",n,this.currentAsset,{path:this.currentPath,onApply:a=>{this.onApplyCallback&&this.onApplyCallback(a),this.close()}})}apply(){this.onApplyCallback&&this.onApplyCallback("library/placeholder.png"),this.close()}close(){this.modal&&this.modal.parentNode&&this.modal.parentNode.removeChild(this.modal),this.modal=null,this.currentObjectId=null,this.currentPath=null,this.onApplyCallback=null}}});var rr={};cn(rr,{AssetCache:()=>ie,AssetLoader:()=>Pe,AssetSystem:()=>ri,AssetTextures:()=>Ie,Assets:()=>_a,BaseSystem:()=>st,GameEngine:()=>si,GameObject:()=>It,GameObjectManager:()=>nt,ObjectFactory:()=>be,Renderer:()=>Pt,RuntimeObjectRegistry:()=>rt,Transform:()=>kt,applyScreenAnchor:()=>Ut,basePixi:()=>Pa,clearResponsiveElements:()=>sa,createPixiBase:()=>ni,getRegisteredFontIds:()=>Aa,globalResponsiveMultipliers:()=>Ke,initAssetTextures:()=>Ft,initAssets:()=>Oa,layout:()=>oa,playLottieOverlay:()=>Ta,registerFont:()=>Ca,registerType:()=>Nt,resolveAnchorVec2:()=>Me,resolveFont:()=>Sa,resolveFontWeight:()=>Ea,resolveScreenAnchorPoint:()=>He,resolveScreenRatioPoint:()=>Fe,runInitSequence:()=>Ra,setLottieInstance:()=>Jt,spawnSceneFromConfig:()=>Ma,updateScreenState:()=>Gt});module.exports=Ba(rr);var xa=require("pixi.js");var Te={};function _t(i,e,t=!1){Te[i]||(Te[i]=[]),Te[i].push({fn:e,once:t})}function di(i,e){if(Te[i]){if(!e){delete Te[i];return}Te[i]=Te[i].filter(t=>t.fn!==e)}}function Ot(i,...e){let t=Te[i];if(t)for(let n of[...t])n.fn(...e),n.once&&di(i,n.fn)}function Z(i,e){_t(i,e,!0)}var D=null,te=[],qe=null;function gn(i){D=i,te=[],qe!==null&&(clearTimeout(qe),qe=null)}function hn(){var i,e,t;return{endpoint:(D==null?void 0:D.endpoint)||"",transport:(D==null?void 0:D.transport)||"beacon",batchSize:(i=D==null?void 0:D.batchSize)!=null?i:10,flushIntervalMs:(e=D==null?void 0:D.flushIntervalMs)!=null?e:300,maxQueue:(t=D==null?void 0:D.maxQueue)!=null?t:200,debug:!!(D!=null&&D.debug)}}async function pn(i,e,t,n){let a=JSON.stringify(e);if(t==="beacon"&&typeof navigator!="undefined"&&typeof navigator.sendBeacon=="function")try{let s=navigator.sendBeacon(i,new Blob([a],{type:"application/json"}));n&&console.log("[handler.telemetry] beacon",s,e);return}catch(s){n&&console.warn("[handler.telemetry] beacon failed, fallback to fetch",s)}try{await fetch(i,{method:"POST",headers:{"Content-Type":"application/json"},body:a,keepalive:!0}),n&&console.log("[handler.telemetry] fetch",e)}catch(s){n&&console.warn("[handler.telemetry] fetch failed",s)}}function pi(i,e){let t=hn();if(e&&t.endpoint){if(te.push(i),te.length>t.maxQueue&&(te=te.slice(te.length-t.maxQueue)),te.length>=t.batchSize){un();return}qe===null&&(qe=window.setTimeout(()=>{qe=null,un()},t.flushIntervalMs))}}async function un(){let i=hn();if(!i.endpoint||te.length===0)return;let e=te.splice(0,i.batchSize);await pn(i.endpoint,{events:e},i.transport,i.debug),te.length>0&&await pn(i.endpoint,{events:te.splice(0,i.batchSize)},i.transport,i.debug)}function fn(i){return Math.max(0,Math.min(1,i))}function Ga(i){let e=String(i!=null?i:"power2.out");if(e==="linear")return t=>t;if(e==="sine.inOut")return t=>.5-Math.cos(Math.PI*t)/2;if(e==="power2.out"||e==="easeOutQuad")return t=>1-(1-t)*(1-t);if(e.startsWith("back.out")){let t=e.match(/back\.out\(([\d.]+)\)/),n=t?Number(t[1]):1.8;return a=>1+(n+1)*Math.pow(a-1,3)+n*Math.pow(a-1,2)}return t=>1-(1-t)*(1-t)}function bt(){return typeof performance!="undefined"&&performance.now?performance.now():Date.now()}function Ua(i,e){let t=i==null?void 0:i[e];return typeof t=="number"?t:0}function mn(i,e,t){try{i[e]=t}catch{}}function qa(i){let e=i==null?void 0:i.scale;if(!e)return null;let t=typeof e.x=="number"?e.x:1,n=typeof e.y=="number"?e.y:1;return{x:t,y:n}}function bn(i,e){let t=i==null?void 0:i.scale;if(t)try{typeof t.set=="function"?t.set(e.x,e.y):(typeof t.x=="number"&&(t.x=e.x),typeof t.y=="number"&&(t.y=e.y))}catch{}}function yn(i,e){let t=qa(i);if(!t)return{from:null,to:null};let n=null,a=null;return typeof e.scale=="number"?(n=e.scale,a=e.scale):e.scale&&typeof e.scale=="object"&&(typeof e.scale.x=="number"&&(n=e.scale.x),typeof e.scale.y=="number"&&(a=e.scale.y)),typeof e.scaleX=="number"&&(n=e.scaleX),typeof e.scaleY=="number"&&(a=e.scaleY),n===null&&a===null?{from:null,to:null}:{from:{x:t.x,y:t.y},to:{x:n!=null?n:t.x,y:a!=null?a:t.y}}}function vn(){let i=new Set,e=new WeakMap,t=null,n=()=>{if(t!=null)return;t=requestAnimationFrame(()=>{t=null,o(),i.size>0&&n()})},a=u=>{var p;i.add(u);let d=(p=e.get(u.target))!=null?p:new Set;d.add(u),e.set(u.target,d),n()},s=u=>{i.delete(u);let d=e.get(u.target);d&&(d.delete(u),d.size===0&&e.delete(u.target))},r=u=>{u.killed||(u.killed=!0,s(u))},o=()=>{var d,p;let u=bt();for(let g of Array.from(i)){if(g.killed||g.paused)continue;let m=u-g.startMs-g.delayMs;if(m<0)continue;let f=g.durationMs>0?m/g.durationMs:1,C=fn(f),b=g.repeat>=0?g.repeat+1:1,h=g.repeat>0?Math.min(Math.floor(f),b-1):0;if(g.repeat>0&&f>=1){let y=f-h;C=fn(y)}let v=g.ease(C);g.yoyo&&h%2===1&&(v=1-v);for(let y of g.props)mn(g.target,y.key,y.from+(y.to-y.from)*v);g.scaleFrom&&g.scaleTo&&bn(g.target,{x:g.scaleFrom.x+(g.scaleTo.x-g.scaleFrom.x)*v,y:g.scaleFrom.y+(g.scaleTo.y-g.scaleFrom.y)*v});try{(d=g.onUpdate)==null||d.call(g)}catch{}if(f>=b){r(g);try{(p=g.onComplete)==null||p.call(g)}catch{}}}},c=(u,d,p)=>{var y;let g=Math.max(0,(typeof d.duration=="number"?d.duration:.5)*1e3),m=Math.max(0,(typeof d.delay=="number"?d.delay:0)*1e3+((y=p==null?void 0:p.delayMsOverride)!=null?y:0)),f=Ga(d.ease),C=typeof d.repeat=="number"?Math.max(0,d.repeat|0):0,b=d.yoyo===!0,h=new Set(["duration","delay","ease","repeat","yoyo","onUpdate","onComplete","scale","scaleX","scaleY"]),v=[];for(let I of Object.keys(d)){if(h.has(I))continue;let _=d[I];typeof _=="number"&&v.push({key:I,from:Ua(u,I),to:_})}let w=yn(u,d);return{target:u,startMs:bt(),delayMs:m,durationMs:g,ease:f,props:v,scaleFrom:w.from,scaleTo:w.to,repeat:C,yoyo:b,onUpdate:typeof d.onUpdate=="function"?d.onUpdate:void 0,onComplete:typeof d.onComplete=="function"?d.onComplete:void 0,killed:!1,paused:!1,pauseAtMs:null}},l={to(u,d){let p=c(u,d);return a(p),{kill:()=>r(p),pause:()=>{p.paused||(p.paused=!0,p.pauseAtMs=bt())},resume:()=>{var f;if(!p.paused)return;let g=(f=p.pauseAtMs)!=null?f:bt(),m=bt()-g;p.startMs+=m,p.paused=!1,p.pauseAtMs=null},isActive:()=>!p.killed&&!p.paused}},fromTo(u,d,p){return l.set(u,d),l.to(u,p)},set(u,d){if(!u||!d)return;for(let g of Object.keys(d)){let m=d[g];g==="scale"||g==="scaleX"||g==="scaleY"||typeof m=="number"&&mn(u,g,m)}let p=yn(u,d);p.to&&bn(u,p.to)},killTweensOf(u){let d=e.get(u);if(d)for(let p of Array.from(d))r(p)},timeline(u={}){let d=[],p=0,g=!1,m=[],f=h=>{if(typeof h=="number")return Math.max(0,h*1e3);let v=typeof h=="string"?h.trim():"";return v.startsWith("+=")?p+Math.max(0,Number(v.slice(2))*1e3||0):v?Math.max(0,Number(v)*1e3||0):p},C=h=>{d.push(h);let v=Math.max(0,(typeof h.vars.duration=="number"?h.vars.duration:.5)*1e3);p=Math.max(p,h.atMs+v)},b={to(h,v,w){return C({kind:"to",target:h,vars:v,atMs:f(w)}),b},fromTo(h,v,w,y){return C({kind:"fromTo",target:h,vars:w,from:v,atMs:f(y)}),b},play(){var h,v;if(g)return b;g=!0,m=[];for(let w of d)w.kind==="fromTo"&&l.set(w.target,(h=w.from)!=null?h:{}),m.push(l.to(w.target,{...w.vars,delay:w.atMs/1e3+((v=w.vars.delay)!=null?v:0)}));return b},pause(){for(let h of m)h.pause();return b},kill(){for(let h of m)h.kill();m=[],g=!1}};return u.paused||b.play(),b}};return l}function wn(){if(typeof window=="undefined")return;let i=window;if(!i.gsap)try{i.gsap=vn()}catch{}}var xn={name:"handler-playable-sdk",version:"1.0.21",type:"module",description:"Handler Playable SDK v0.1 with contract-aligned surface (root sandbox, canonical event envelope).",main:"dist/index.cjs",module:"dist/index.js",types:"dist/index.d.ts",exports:{".":{types:"./dist/index.d.ts",import:"./dist/index.js",require:"./dist/index.cjs"},"./pixi":{types:"./dist/pixi/index.d.ts",import:"./dist/pixi/index.js",require:"./dist/pixi/index.cjs"},"./pixi/index.css":{import:"./dist/pixi/index.css",require:"./dist/pixi/index.css"},"./three":{types:"./dist/three/index.d.ts",import:"./dist/three/index.js",require:"./dist/three/index.cjs"},"./cli":{types:"./dist/cli/index.d.ts",import:"./dist/cli/index.js",require:"./dist/cli/index.cjs"}},bin:{"handler-student-helper":"./bin/student-helper.mjs","handler-validate":"./bin/validate.mjs","handler-sync-screens":"./bin/sync-screens.mjs","handler-brand-dna":"./bin/brand-dna.mjs","handler-setup-library":"./bin/setup-library.mjs","handler-screen-helper":"./bin/screen-helper.mjs"},scripts:{prebuild:"python3 src/preview/build-css.py",build:"tsup src/index.ts src/pixi/index.ts src/three/index.ts src/cli/index.ts --format cjs,esm --dts --clean --minify --external lottie-web --external jszip && npm run create-mjs-symlinks && npm run postbuild-cli && npm run obfuscate && npm run postbuild",postbuild:"python3 src/preview/copy-css-to-dist.py","postbuild-cli":"cp src/cli/*.mjs dist/cli/ && mkdir -p dist/cli/student-helper && cp src/cli/student-helper/*.mjs dist/cli/student-helper/ && chmod +x dist/cli/*.mjs dist/cli/student-helper/*.mjs && chmod +x bin/*.mjs","create-mjs-symlinks":"cd dist && ln -sf index.js index.mjs && cd pixi && ln -sf index.js index.mjs && cd ../three && ln -sf index.js index.mjs","build:dev":"tsup src/index.ts src/pixi/index.ts src/three/index.ts src/cli/index.ts --format cjs,esm --dts --clean --external lottie-web --external jszip && npm run create-mjs-symlinks && npm run postbuild-cli",obfuscate:"javascript-obfuscator dist/pixi/index.js --output dist/pixi/index.js --config obfuscator.config.json && javascript-obfuscator dist/three/index.js --output dist/three/index.js --config obfuscator.config.json && javascript-obfuscator dist/cli/index.js --output dist/cli/index.js --config obfuscator.config.json && npm run obfuscate-cli","obfuscate-cli":'for file in dist/cli/*.mjs dist/cli/student-helper/*.mjs; do javascript-obfuscator "$file" --output "$file" --config obfuscator.config.json; done',lint:"eslint 'src/**/*.{ts,tsx}'",typecheck:"tsc --noEmit",prepublishOnly:"npm run build","publish:update":"node scripts/publish-and-update.cjs patch","publish:update:minor":"node scripts/publish-and-update.cjs minor","publish:update:major":"node scripts/publish-and-update.cjs major"},author:"Handler",license:"MIT",publishConfig:{access:"public"},repository:{type:"git",url:"https://github.com/HandlerAIGames/handler-playable-sdk.git"},files:["dist","bin","LICENSE","README.md"],peerDependencies:{"lottie-web":"^5.0.0","pixi.js":"^8.0.0",three:"^0.182.0"},peerDependenciesMeta:{"pixi.js":{optional:!0},three:{optional:!0},"lottie-web":{optional:!0}},devDependencies:{"@types/three":"^0.182.0",eslint:"^9.39.2","javascript-obfuscator":"^5.1.0","pixi.js":"8.8.1",three:"^0.182.0","ts-node":"^10.9.2",tsup:"^8.4.0",typescript:"^5.7.2","typescript-eslint":"^8.53.0"},dependencies:{"@google/genai":"^1.35.0","@google/generative-ai":"^0.24.1",jszip:"^3.10.1",sharp:"^0.34.5"}};var Q=0,Wa=Q++,Sn=Q++,En=Q++,Cn=Q++,An=Q++,Ln=Q++,Tn=Q++,kn=Q++,Pn=Q++,In=Q++,Mn=Q++,jn=Q++,O=Wa;function _n(){return O===Sn}function On(){return O===En}function Rn(){return O===Cn}function zn(){return O===An}function Ve(){return O===Ln}function We(){return O===Tn}function $n(){return O===kn}function Dn(){return O===Pn}function Nn(){return O===In}function ui(){return O===Mn}function gi(){return O===jn}function Hn(){let i=typeof AD_PROTOCOL!="undefined"?AD_PROTOCOL:"none",e=typeof AD_NETWORK!="undefined"?AD_NETWORK:"web_embed";if(i==="mraid")try{mraid.getState(),O=Sn;return}catch{}else if(i==="dapi")try{dapi.isReady(),O=En;return}catch{}if(e==="facebook")try{typeof FbPlayableAd!="undefined"&&(O=Cn)}catch{}else if(e==="google")try{typeof ExitApi!="undefined"&&(O=An)}catch{}else if(e==="mintegral")window.gameReady&&(O=Ln);else if(e==="tapjoy")window.TJ_API&&(O=Tn);else if(e==="tiktok")window.openAppStore&&(O=kn);else if(e==="smadex")try{window.smxTracking&&(O=Pn)}catch{}else if(e==="snapchat")try{window.ScPlayableAd&&(O=In)}catch{}else e==="vungle"?O=Mn:(i==="nucleo"||e==="nucleo")&&(O=jn)}var Rt=ci(require("lottie-web"),1),Fn=Rt.default;typeof window!="undefined"&&(window.lottie=Rt.default,window.__baseLottie=Rt.default);mi();function N(i,e){let t=(a,s)=>s===0?a:t(s,a%s),n=t(i,e);return`${i/n}:${e/n}`}var Nr=[{id:"iphone-15-pro-max",label:"iPhone 15 Pro Max",width:430,height:932,category:"iphone",ratio:N(430,932)},{id:"iphone-15-pro",label:"iPhone 15 Pro",width:393,height:852,category:"iphone",ratio:N(393,852)},{id:"iphone-15",label:"iPhone 15",width:393,height:852,category:"iphone",ratio:N(393,852)},{id:"iphone-14",label:"iPhone 14",width:390,height:844,category:"iphone",ratio:N(390,844)},{id:"iphone-se",label:"iPhone SE",width:375,height:667,category:"iphone",ratio:N(375,667)},{id:"iphone-12-mini",label:"iPhone 12 Mini",width:360,height:780,category:"iphone",ratio:N(360,780)}],Hr=[{id:"pixel-8-pro",label:"Pixel 8 Pro",width:448,height:998,category:"android",ratio:N(448,998)},{id:"pixel-8",label:"Pixel 8",width:412,height:915,category:"android",ratio:N(412,915)},{id:"samsung-s24-ultra",label:"Samsung S24 Ultra",width:412,height:915,category:"android",ratio:N(412,915)},{id:"samsung-s24",label:"Samsung S24",width:360,height:780,category:"android",ratio:N(360,780)},{id:"samsung-a54",label:"Samsung A54",width:412,height:915,category:"android",ratio:N(412,915)},{id:"oneplus-12",label:"OnePlus 12",width:412,height:915,category:"android",ratio:N(412,915)}],Fr=[{id:"ipad-pro-12",label:'iPad Pro 12.9"',width:1024,height:1366,category:"tablet",ratio:N(1024,1366)},{id:"ipad-pro-11",label:'iPad Pro 11"',width:834,height:1194,category:"tablet",ratio:N(834,1194)},{id:"ipad-air",label:"iPad Air",width:820,height:1180,category:"tablet",ratio:N(820,1180)},{id:"ipad-mini",label:"iPad Mini",width:768,height:1024,category:"tablet",ratio:N(768,1024)},{id:"samsung-tab-s9",label:"Samsung Tab S9",width:800,height:1280,category:"tablet",ratio:N(800,1280)}],qn=[{id:"playable-portrait",label:"Playable Portrait",width:320,height:480,category:"playable",ratio:"2:3",mraidScale:1},{id:"mraid-320x480",label:"MRAID 320\xD7480",width:320,height:480,category:"playable",ratio:"2:3",mraidScale:1},{id:"iphone-14",label:"iPhone 14",width:390,height:844,category:"playable",ratio:N(390,844),mraidScale:.7},{id:"ipad-mini",label:"iPad Mini",width:768,height:1024,category:"playable",ratio:N(768,1024),mraidScale:.7}];var Br=[...qn];var ts=qn[0];oe();function is(i){return new Promise((e,t)=>{let n=new FileReader;n.onerror=()=>t(new Error("FileReader failed")),n.onload=()=>e(String(n.result||"")),n.readAsDataURL(i)})}function ns(i){var a;let[e,t]=i.split(","),n=e==null?void 0:e.match(/data:(.*?);base64/);return{base64:t!=null?t:"",mimeType:(a=n==null?void 0:n[1])!=null?a:"image/png"}}async function as(i){return await new Promise(e=>{let t=new Image;t.onload=()=>e({width:t.naturalWidth||t.width,height:t.naturalHeight||t.height}),t.onerror=()=>e(null),t.src=i})}async function bi(i){var e,t;try{console.log("[ImageUtils] Fetching image data from URL:",i);let n=await fetch(i);if(!n.ok)return console.warn("[ImageUtils] Fetch failed with status:",n.status,i),null;let a=await n.blob();console.log("[ImageUtils] Blob received, size:",a.size,"type:",a.type);let s=await is(a),r=await as(s),o=ns(s);return console.log("[ImageUtils] Success resolution:",r==null?void 0:r.width,"x",r==null?void 0:r.height,"mime:",o.mimeType),{base64:o.base64,mimeType:o.mimeType,dataUrl:s,width:(e=r==null?void 0:r.width)!=null?e:0,height:(t=r==null?void 0:r.height)!=null?t:0}}catch(n){return console.error("[ImageUtils] Error fetching image data:",n),null}}async function zt(i,e=30){try{console.log("[ImageUtils] Removing background color...");let t=await new Promise((d,p)=>{let g=new Image;g.onload=()=>d(g),g.onerror=()=>p(new Error("Failed to load image")),g.src=i}),n=document.createElement("canvas");n.width=t.width,n.height=t.height;let a=n.getContext("2d");if(!a)return console.error("[ImageUtils] Failed to get canvas context"),i;a.drawImage(t,0,0);let s=a.getImageData(0,0,n.width,n.height),r=s.data,c=[{name:"top-left",offset:0},{name:"top-right",offset:(n.width-1)*4},{name:"bottom-left",offset:(n.height-1)*n.width*4},{name:"bottom-right",offset:((n.height-1)*n.width+(n.width-1))*4}].map(d=>({r:r[d.offset],g:r[d.offset+1],b:r[d.offset+2]})),l=0;for(let d=0;d<r.length;d+=4){let p=r[d],g=r[d+1],m=r[d+2],f=!1;for(let C of c)if(Math.sqrt(Math.pow(p-C.r,2)+Math.pow(g-C.g,2)+Math.pow(m-C.b,2))<e){f=!0;break}f&&(r[d+3]=0,l++)}return console.log(`[ImageUtils] Removed background from ${l} pixels (4-corner sampling, tolerance: ${e})`),a.putImageData(s,0,0),n.toDataURL("image/png")}catch(t){return console.error("[ImageUtils] Error removing background:",t),i}}var Yn=require("@google/genai");async function yi(i,e,t=[],n={}){var a,s,r,o,c,l,u;try{if(!(i!=null&&i.trim()))throw new Error("Gemini API key is required");if(!(e!=null&&e.trim()))throw new Error("Prompt is required");for(let b=0;b<t.length;b++){let h=t[b];if(!h.base64||!h.mimeType)throw new Error(`Image ${b+1} is missing required data`);if(h.base64.length<1e3&&console.warn(`Image ${b+1} data appears very small, may be corrupted`),!h.mimeType.startsWith("image/"))throw new Error(`Image ${b+1} has invalid MIME type: ${h.mimeType}`)}let d=new Yn.GoogleGenAI({apiKey:i}),p="gemini-2.5-flash",g=[e];t.length>0&&t.forEach((b,h)=>{g.push({inlineData:{data:b.base64,mimeType:b.mimeType}}),console.log(`[Gemini] Added image ${h+1}: ${b.mimeType}, size: ${Math.round(b.base64.length/1024)}KB`)}),console.log(`[Gemini] Making request with ${t.length} images and prompt length: ${e.length}`);let m=await d.models.generateContent({model:p,contents:g}),f="",C=(r=(s=(a=m.candidates)==null?void 0:a[0])==null?void 0:s.content)==null?void 0:r.parts;if(C)for(let b of C)b.text&&(f+=b.text);if(!f.trim())throw new Error("Empty response from Gemini API");return console.log(`[Gemini] Response received, length: ${f.length}`),f}catch(d){throw console.error("[Gemini] API error:",d),(o=d.message)!=null&&o.includes("Unable to process input image")?new Error("Unable to process the uploaded image. Please ensure it's a valid PNG, JPG, or JPEG file under 10MB and not corrupted."):(c=d.message)!=null&&c.includes("API_KEY_INVALID")?new Error("Invalid Gemini API key. Please check your API key configuration."):(l=d.message)!=null&&l.includes("QUOTA_EXCEEDED")?new Error("Gemini API quota exceeded. Please try again later or check your billing."):(u=d.message)!=null&&u.includes("SAFETY")?new Error("Content was flagged by Gemini safety filters. Please try with different images."):d}}var Kn=require("@google/genai");async function $t(i,e,t=[],n={}){try{console.info("[GEMINI-REAL-SDK] Initializing GoogleGenAI...");let a=new Kn.GoogleGenAI({apiKey:i}),s=[{text:e}];t.length>0&&t.forEach((o,c)=>{console.info(`[GEMINI-REAL-SDK] Adding image part ${c}`),s.push({inlineData:{mimeType:o.mimeType,data:o.base64}})}),console.info("[GEMINI-REAL-SDK] Calling generateContent with model: gemini-2.5-flash-image");let r=await a.models.generateContent({model:"gemini-2.5-flash-image",contents:s});if(console.info("[GEMINI-REAL-SDK] Received response from model"),!r.candidates||!r.candidates[0]||!r.candidates[0].content||!r.candidates[0].content.parts)throw new Error("Gemini 2.5 Flash Image returned invalid response structure.");for(let o of r.candidates[0].content.parts)if(o.text)console.log(o.text);else if(o.inlineData){let c=o.inlineData.data,l=o.inlineData.mimeType||"image/png";return console.info("[GEMINI-REAL-SDK] Found inline image data in response"),`data:${l};base64,${c}`}throw new Error("Gemini 2.5 Flash Image returned no image data.")}catch(a){throw console.error("[GEMINI-REAL-SDK] Error in generateImageWithGemini25Flash:",JSON.stringify(a,Object.getOwnPropertyNames(a),2)),a}}var ds=require("pixi.js");yt();Dt();oe();var ta=require("pixi.js");var us=require("pixi.js");oe();function Ss(i){return new Promise((e,t)=>{let n=new FileReader;n.onerror=()=>t(new Error("FileReader failed")),n.onload=()=>e(String(n.result||"")),n.readAsDataURL(i)})}function Es(i){var a;let[e,t]=i.split(","),n=e==null?void 0:e.match(/data:(.*?);base64/);return{base64:t!=null?t:"",mimeType:(a=n==null?void 0:n[1])!=null?a:"image/png"}}function Cs(i){return`
47
47
  Analyze these screenshots of a brand or game and extract its "Brand DNA".
48
48
 
49
49
  Provide a concise summary (2-3 sentences) covering:
@@ -1 +1 @@
1
- (function(_0x15f1db,_0x4a7ef0){var a0_0x9dcf5e={_0x2e8a27:'Drq3',_0x1b2c48:0x2f1,_0x2abc13:0x2e8,_0x45dec7:0x2f7,_0x1de7ba:'$]yQ',_0x1a1101:0x2d3,_0x126240:0x2d5,_0x386841:0x2e4,_0xcaa3c0:0x4c6,_0x550172:'%FtF',_0xa77e33:0x4cd,_0x31055a:0x258,_0xcc4ee4:0x260,_0x9cb6bb:0x267,_0x6801f9:'I7dS',_0x4bb886:0x26c,_0x14b6ce:0x254,_0x4ef1ef:0x25e,_0x7a4880:0x261,_0xe1b937:0x265,_0x38c723:0x4e6,_0x5af73a:0x4eb,_0x430bb2:'DmuB',_0x4dd4a0:0x4f2,_0x235142:0x4de,_0x23ef56:0x4d4,_0x14a11a:0x2d8,_0x170de9:0x2c8,_0xb7816f:0x2e3,_0x2d88bb:0x2dd,_0x179750:0x2dc,_0x5eabf8:0x2e7,_0x3cbdc5:0x262,_0x5db087:0x259,_0x5f4960:0x25e,_0x3f1bd4:'*)Ta',_0x522a8d:0x26b,_0x45a33f:0x4e5,_0x3cf8b8:0x4e4,_0x3ea434:0x4f0,_0x3ae5ce:0x4d6},a0_0x243d9c={_0x5ae035:0x1ba},a0_0x46ba90={_0x299148:0x387},a0_0x502d08={_0x40bee2:0x3ae};function _0x3ea544(_0x54d291,_0x4eeab8,_0x2a6a25,_0x394dcc,_0x29f340){return a0_0x36a6(_0x54d291-a0_0x502d08._0x40bee2,_0x2a6a25);}var _0x4a1e25=_0x15f1db();function _0x3b9549(_0x10bc39,_0x41f550,_0x208742,_0x49afb7,_0x50ad37){return a0_0x36a6(_0x208742- -a0_0x46ba90._0x299148,_0x49afb7);}function _0x2dbea5(_0x4f2aff,_0x1d3abd,_0x493ae4,_0x4a2733,_0x49cad1){return a0_0x36a6(_0x4f2aff-a0_0x243d9c._0x5ae035,_0x1d3abd);}while(!![]){try{var _0x4d28c8=parseInt(_0x2dbea5(0x2f3,a0_0x9dcf5e._0x2e8a27,a0_0x9dcf5e._0x1b2c48,a0_0x9dcf5e._0x2abc13,a0_0x9dcf5e._0x45dec7))/(0x102d*-0x1+0x1856+-0xc*0xae)*(-parseInt(_0x2dbea5(0x2db,a0_0x9dcf5e._0x1de7ba,a0_0x9dcf5e._0x1a1101,a0_0x9dcf5e._0x126240,a0_0x9dcf5e._0x386841))/(-0x6fb*-0x2+-0x1*-0x2285+0x3079*-0x1))+parseInt(_0x3ea544(0x4d5,a0_0x9dcf5e._0xcaa3c0,a0_0x9dcf5e._0x550172,0x4dc,a0_0x9dcf5e._0xa77e33))/(0x3*0x2a2+0x184*-0x13+0x65*0x35)+-parseInt(_0x3b9549(-a0_0x9dcf5e._0x31055a,-a0_0x9dcf5e._0xcc4ee4,-a0_0x9dcf5e._0x9cb6bb,a0_0x9dcf5e._0x6801f9,-a0_0x9dcf5e._0x4bb886))/(-0x419*-0x5+-0x1e78+0x9ff)*(-parseInt(_0x3b9549(-a0_0x9dcf5e._0x14b6ce,-a0_0x9dcf5e._0x4ef1ef,-a0_0x9dcf5e._0x7a4880,'I7dS',-a0_0x9dcf5e._0xe1b937))/(-0x1*0x2141+0x266b+0x1b7*-0x3))+-parseInt(_0x3ea544(a0_0x9dcf5e._0x38c723,a0_0x9dcf5e._0x5af73a,a0_0x9dcf5e._0x430bb2,a0_0x9dcf5e._0x5af73a,a0_0x9dcf5e._0x4dd4a0))/(-0x1*0x251+0x15fa+-0x13a3)*(parseInt(_0x3ea544(a0_0x9dcf5e._0x235142,0x4ec,')9Td',a0_0x9dcf5e._0x23ef56,0x4e2))/(-0x213f+-0x1254+-0x1*-0x339a))+parseInt(_0x2dbea5(a0_0x9dcf5e._0x14a11a,'37cx',a0_0x9dcf5e._0x170de9,a0_0x9dcf5e._0xb7816f,a0_0x9dcf5e._0x2d88bb))/(-0x1*-0x9fd+-0x7cd*-0x5+-0x30f6)+-parseInt(_0x2dbea5(a0_0x9dcf5e._0x179750,'I7dS',a0_0x9dcf5e._0x1a1101,a0_0x9dcf5e._0x5eabf8,a0_0x9dcf5e._0x14a11a))/(0xdc1+0x6*-0x313+0x4ba)+parseInt(_0x3b9549(-a0_0x9dcf5e._0x3cbdc5,-a0_0x9dcf5e._0x5db087,-a0_0x9dcf5e._0x5f4960,a0_0x9dcf5e._0x3f1bd4,-a0_0x9dcf5e._0x522a8d))/(0xedb*-0x1+0x15*0x84+-0x15b*-0x3)*(parseInt(_0x3ea544(a0_0x9dcf5e._0x45a33f,a0_0x9dcf5e._0x3cf8b8,'*yk5',a0_0x9dcf5e._0x3ea434,a0_0x9dcf5e._0x3ae5ce))/(-0x227+0x2102+0x8*-0x3da));if(_0x4d28c8===_0x4a7ef0)break;else _0x4a1e25['push'](_0x4a1e25['shift']());}catch(_0x3571a9){_0x4a1e25['push'](_0x4a1e25['shift']());}}}(a0_0x1f8d,-0x1841*-0x6b+0x5*-0x5f7+-0x1be00));var a0_0x260a70=(function(){var _0x2386a2=!![];return function(_0x261e49,_0x23a1cb){var a0_0x4b2bf3={_0xd6cc6b:0x21c,_0x2cd36a:0x22b,_0xf381f2:'d@XQ'},_0x729e8f=_0x2386a2?function(){var a0_0x43ae34={_0x4e69a7:0x10c};function _0x36a648(_0x2513ed,_0x312b65,_0x2805f0,_0x152e3,_0x3f582f){return a0_0x36a6(_0x2805f0-a0_0x43ae34._0x4e69a7,_0x152e3);}if(_0x23a1cb){var _0x1c32e1=_0x23a1cb[_0x36a648(a0_0x4b2bf3._0xd6cc6b,0x220,a0_0x4b2bf3._0x2cd36a,a0_0x4b2bf3._0xf381f2,0x222)](_0x261e49,arguments);return _0x23a1cb=null,_0x1c32e1;}}:function(){};return _0x2386a2=![],_0x729e8f;};}()),a0_0x450455=a0_0x260a70(this,function(){var a0_0x4aa5bb={_0xd2522d:0x4c4,_0x4dd0b2:0x4cc,_0x3eac5c:'n^W^',_0x283f69:0x4c7,_0x365e62:0x4c3,_0x3bea84:0x4dd,_0x329979:0x4cf,_0x49da8f:0x21,_0x115668:0x13,_0x26e9df:0x13,_0x3813fa:0x22,_0xa77c1d:0x406,_0x4cd935:0x40b,_0x510701:'bAxJ',_0x5aa851:0x418,_0x909d84:0x3fe,_0x31a2d1:0x40e,_0x8a2bbf:0x41b,_0x167c5a:'Andx',_0x22ac89:0x411,_0x24c771:0x416,_0x16a250:0x412,_0x5bb633:'FZY3',_0x277bd5:0x411,_0x409620:0x406,_0x33251b:0x4e4,_0x5a1869:')9Td',_0x286e26:0x4d9,_0x3e7d04:0x4d4,_0x3bf1ec:'HYtE',_0x5823f8:0x4c4,_0x5bd40a:0x4d2,_0x326a29:'*)Ta',_0x1cd204:0x4,_0x5a06bb:0x10,_0x20246e:0x17,_0x1c88c3:0x41b,_0x418bbf:'Andx',_0x5380b3:0x40d,_0x17f4e8:0x4cd,_0x4e1982:0x4e2,_0x43e8ce:'O%kh',_0x52fde2:0x4e5,_0x4d24d0:0x4d8},a0_0x3d613d={_0x393a8b:0x128},a0_0x2bfc90={_0x3546b9:0x39e},a0_0xfc9b8b={_0x5ddd83:0x2ee},_0xb83a40={};function _0xa8a7ef(_0x47daa3,_0x15e83b,_0x954765,_0x309131,_0x1a51c3){return a0_0x36a6(_0x15e83b-a0_0xfc9b8b._0x5ddd83,_0x954765);}function _0x24727f(_0x49b28c,_0x1cae39,_0x30658f,_0x353d6d,_0x3d41a4){return a0_0x36a6(_0x3d41a4-a0_0x2bfc90._0x3546b9,_0x30658f);}_0xb83a40[_0x24727f(a0_0x4aa5bb._0xd2522d,a0_0x4aa5bb._0x4dd0b2,a0_0x4aa5bb._0x3eac5c,a0_0x4aa5bb._0x283f69,a0_0x4aa5bb._0x365e62)]=_0x24727f(a0_0x4aa5bb._0x3bea84,a0_0x4aa5bb._0x329979,'n(1^',0x4ce,0x4cd)+')+)+)'+'+$';var _0x3ea845=_0xb83a40;function _0x51138b(_0x666cbf,_0x5a645d,_0x3f56d7,_0xd50e33,_0x2acdde){return a0_0x36a6(_0xd50e33- -a0_0x3d613d._0x393a8b,_0x666cbf);}return a0_0x450455[_0x51138b('37cx',a0_0x4aa5bb._0x49da8f,a0_0x4aa5bb._0x115668,a0_0x4aa5bb._0x26e9df,a0_0x4aa5bb._0x3813fa)+_0xa8a7ef(a0_0x4aa5bb._0xa77c1d,a0_0x4aa5bb._0x4cd935,a0_0x4aa5bb._0x510701,a0_0x4aa5bb._0x5aa851,a0_0x4aa5bb._0x909d84)]()[_0xa8a7ef(a0_0x4aa5bb._0x31a2d1,a0_0x4aa5bb._0x8a2bbf,a0_0x4aa5bb._0x167c5a,a0_0x4aa5bb._0x22ac89,0x412)+'h'](_0x3ea845['IJcfh'])[_0xa8a7ef(a0_0x4aa5bb._0x24c771,a0_0x4aa5bb._0x16a250,a0_0x4aa5bb._0x5bb633,a0_0x4aa5bb._0x277bd5,a0_0x4aa5bb._0x409620)+_0x24727f(a0_0x4aa5bb._0x33251b,0x4c9,a0_0x4aa5bb._0x5a1869,a0_0x4aa5bb._0x286e26,a0_0x4aa5bb._0x3e7d04)]()[_0x24727f(0x4da,0x4d6,a0_0x4aa5bb._0x3bf1ec,a0_0x4aa5bb._0x5823f8,a0_0x4aa5bb._0x5bd40a)+_0x51138b(a0_0x4aa5bb._0x326a29,-a0_0x4aa5bb._0x1cd204,a0_0x4aa5bb._0x5a06bb,0x9,a0_0x4aa5bb._0x20246e)+'r'](a0_0x450455)[_0xa8a7ef(0x411,a0_0x4aa5bb._0x1c88c3,a0_0x4aa5bb._0x418bbf,0x42a,a0_0x4aa5bb._0x5380b3)+'h'](_0x3ea845[_0x24727f(a0_0x4aa5bb._0x17f4e8,a0_0x4aa5bb._0x4e1982,a0_0x4aa5bb._0x43e8ce,a0_0x4aa5bb._0x52fde2,a0_0x4aa5bb._0x4d24d0)]);});a0_0x450455();function a0_0x36a6(_0x3f9b19,_0x52ff7e){_0x3f9b19=_0x3f9b19-(0x4c*-0x6a+-0x262b+0x46c0);var _0x4ed5cd=a0_0x1f8d();var _0x4fd42c=_0x4ed5cd[_0x3f9b19];if(a0_0x36a6['nRcwcC']===undefined){var _0x48b226=function(_0x1af42e){var _0x719a97='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x5e942b='',_0x3f61a9='',_0x2682cf=_0x5e942b+_0x48b226;for(var _0x13b319=0x1*-0x2446+-0xe*0x9c+0x2cce,_0x583566,_0x4bbac5,_0x2cdcf4=0xebb+0x1b60+0xe09*-0x3;_0x4bbac5=_0x1af42e['charAt'](_0x2cdcf4++);~_0x4bbac5&&(_0x583566=_0x13b319%(-0x11a*-0x10+-0x1*-0x1435+0x25d1*-0x1)?_0x583566*(0x3*0x499+0x2507*0x1+-0x3292)+_0x4bbac5:_0x4bbac5,_0x13b319++%(-0x31*-0x15+-0x1faf*0x1+0x1bae))?_0x5e942b+=_0x2682cf['charCodeAt'](_0x2cdcf4+(-0x2a8+-0xec2+0x1174))-(-0x1dd1*0x1+0xfda+-0x1*-0xe01)!==-0x1*0xdf0+0x4*-0x664+0x2780?String['fromCharCode'](0xd6f*0x2+0xb8*-0x2f+-0x1b*-0x4b&_0x583566>>(-(0x12a9+0xf23+-0x21ca)*_0x13b319&-0x1bd*0x6+0x8*-0x182+0x1*0x1684)):_0x13b319:0x1c*-0x9a+-0x9c7+0x1a9f){_0x4bbac5=_0x719a97['indexOf'](_0x4bbac5);}for(var _0x4a835b=-0x1df9*-0x1+-0x2075+0x27c,_0x4ca88b=_0x5e942b['length'];_0x4a835b<_0x4ca88b;_0x4a835b++){_0x3f61a9+='%'+('00'+_0x5e942b['charCodeAt'](_0x4a835b)['toString'](0xb*-0x89+0x2555+-0x1f62))['slice'](-(-0x1bda+-0xb88+0x2*0x13b2));}return decodeURIComponent(_0x3f61a9);};var _0xcd5d36=function(_0x26ff00,_0x346f97){var _0x21a150=[],_0x71cb8c=0x1831+-0x707+-0x112a*0x1,_0x195136,_0x3085bb='';_0x26ff00=_0x48b226(_0x26ff00);var _0x2907da;for(_0x2907da=-0x3*0x927+-0x114*0x1c+-0x3*-0x1337;_0x2907da<-0x1e10+0x1339+-0x1b1*-0x7;_0x2907da++){_0x21a150[_0x2907da]=_0x2907da;}for(_0x2907da=0x2*-0xa5e+-0x145*0xd+0x253d*0x1;_0x2907da<-0x1*-0x61+-0xf*0x10e+0x1071;_0x2907da++){_0x71cb8c=(_0x71cb8c+_0x21a150[_0x2907da]+_0x346f97['charCodeAt'](_0x2907da%_0x346f97['length']))%(-0x9e1+-0x2134+-0x1*-0x2c15),_0x195136=_0x21a150[_0x2907da],_0x21a150[_0x2907da]=_0x21a150[_0x71cb8c],_0x21a150[_0x71cb8c]=_0x195136;}_0x2907da=-0xebc*0x1+-0x1*-0x1e21+0x7*-0x233,_0x71cb8c=-0x43a+-0x2402*-0x1+-0x1fc8;for(var _0x4b9772=-0x113e*0x2+0x127a+-0x3*-0x556;_0x4b9772<_0x26ff00['length'];_0x4b9772++){_0x2907da=(_0x2907da+(0x1531+-0x1*0x2489+0xf59))%(0xf3f+-0x14*-0x2+-0x1*0xe67),_0x71cb8c=(_0x71cb8c+_0x21a150[_0x2907da])%(0x53*0x1a+-0x1c0b*0x1+0x149d),_0x195136=_0x21a150[_0x2907da],_0x21a150[_0x2907da]=_0x21a150[_0x71cb8c],_0x21a150[_0x71cb8c]=_0x195136,_0x3085bb+=String['fromCharCode'](_0x26ff00['charCodeAt'](_0x4b9772)^_0x21a150[(_0x21a150[_0x2907da]+_0x21a150[_0x71cb8c])%(-0x2225+0x1*-0x10a1+0x8d*0x5e)]);}return _0x3085bb;};a0_0x36a6['fVoEMm']=_0xcd5d36,a0_0x36a6['NgTNHF']={},a0_0x36a6['nRcwcC']=!![];}var _0xa7fdf3=_0x4ed5cd[-0xff1+-0x1*-0x7b5+0x1f*0x44],_0x3ee72b=_0x3f9b19+_0xa7fdf3,_0xdd68ee=a0_0x36a6['NgTNHF'][_0x3ee72b];if(!_0xdd68ee){if(a0_0x36a6['EfzUaF']===undefined){var _0x2dd4fd=function(_0x3be13b){this['zeDcIx']=_0x3be13b,this['HlDwCO']=[0x1aed+-0x350*0x7+-0x3bc,0x10f6+-0x1*-0x103d+-0x2133,-0x2*0xa0+0x1*0xaab+-0x96b],this['iNCTTH']=function(){return'newState';},this['bUCNHQ']='\x5cw+\x20*\x5c(\x5c)\x20*{\x5cw+\x20*',this['Qtpkhz']='[\x27|\x22].+[\x27|\x22];?\x20*}';};_0x2dd4fd['prototype']['ZmZWRs']=function(){var _0x5f4b53=new RegExp(this['bUCNHQ']+this['Qtpkhz']),_0x5f0a9a=_0x5f4b53['test'](this['iNCTTH']['toString']())?--this['HlDwCO'][-0x2254+-0x1f79+0x41ce]:--this['HlDwCO'][-0x62a+-0x1*-0x167+0x4c3*0x1];return this['vUFGOI'](_0x5f0a9a);},_0x2dd4fd['prototype']['vUFGOI']=function(_0x20fed0){if(!Boolean(~_0x20fed0))return _0x20fed0;return this['iylNMY'](this['zeDcIx']);},_0x2dd4fd['prototype']['iylNMY']=function(_0x47772d){for(var _0x1578af=-0x8*-0x4ca+0x436*-0x4+-0x1ca*0xc,_0x220f81=this['HlDwCO']['length'];_0x1578af<_0x220f81;_0x1578af++){this['HlDwCO']['push'](Math['round'](Math['random']())),_0x220f81=this['HlDwCO']['length'];}return _0x47772d(this['HlDwCO'][0x2ef*0xd+-0x827*0x2+0x17*-0xf3]);},new _0x2dd4fd(a0_0x36a6)['ZmZWRs'](),a0_0x36a6['EfzUaF']=!![];}_0x4fd42c=a0_0x36a6['fVoEMm'](_0x4fd42c,_0x52ff7e),a0_0x36a6['NgTNHF'][_0x3ee72b]=_0x4fd42c;}else _0x4fd42c=_0xdd68ee;return _0x4fd42c;}import{A as a0_0x38a9a9,B as a0_0x4d36f6,C as a0_0x271ce8,D as a0_0x15c986,b as a0_0x156275,c as a0_0x4a24ce,d as a0_0x8d865,e as a0_0xe2d394,f as a0_0xad890c,g as a0_0x5c1a4d,h as a0_0x286434,i as a0_0x5ef819,j as a0_0x108fb0,k as a0_0x3e66b2,l as a0_0x1ca722,m as a0_0xafebb5,n as a0_0x4726da,o as a0_0x2388ef,p as a0_0x2c4287,q as a0_0x54ab6b,r as a0_0xe7a30d,s as a0_0x166134,t as a0_0x1b8bae,u as a0_0x30767b,v as a0_0x39a8d0,w as a0_0x3902a1,x as a0_0xe30a1a,y as a0_0x5c0f86,z as a0_0x4e7d3c}from'../chunk-5XDKSUEE.js';import{a as a0_0x3026f2,b as a0_0x1c612e,c as a0_0x3253f2,d as a0_0x1f37a7,e as a0_0x3faaef}from'../chunk-I5OOVR5U.js';import'../chunk-PW2FGMCO.js';function a0_0x1f8d(){var _0x1d27f2=['bXrrDMu','D8k/W5Wah8ktiWOUr8oUWO3dUq','W7BdLaJcVmoAiCkne8omWPa','W4yEl212','WPbzx2i0W4eD','gJdcHa','vmolW6VdHZqTAheiaq','WOVdS8oXsahcM0DIrmo2W6ToWQG','WRBcHmopWOK+ECkoWPK','Fq9UFNm','WO7dGSkoWRldQq','WPHiWOG','W47cNmoLW7pcR8ksW4RcTKvakeddRq','k8oRb8kJW6C','g8oAWQ7cOSoLW41E','WOjbhmofvmoYW7zawai','hSkcW5ddM8kEWPSrWRWcwtKEW7m','WPKqWOSfn8kZW7RdLmk7WQq','W5ZcPWmDW68','WRbiWRldI8ot','hmkhW5JdLmkFWPGxWQ8atdqiW58','WOn0W6BcJ8k5WQnNE8ksW7JdJh83','q1ucruv8bmkT','qLaemK1UtdNdNSkH','W68kW7XXfHJcTSkPW71OgmkJia','xvNdReBcPJ9bs8o/r8kQneO','W4a6W6FcN8ozr8oKW7uBW6y','WPmHWOpdVmk4','WPXiW7n8fSkIW7u','yeyBsY4','rbpcQcVdMdDy'];a0_0x1f8d=function(){return _0x1d27f2;};return a0_0x1f8d();}import'../chunk-HVKF2KYL.js';import'../chunk-E6WJCS24.js';import'../chunk-JXBG6UFL.js';export{a0_0x3026f2 as AssetCache,a0_0x3253f2 as AssetLoader,a0_0x30767b as AssetSystem,a0_0x1f37a7 as AssetTextures,a0_0x166134 as Assets,a0_0x2388ef as BaseSystem,a0_0x4726da as GameEngine,a0_0xe2d394 as GameObject,a0_0xad890c as GameObjectManager,a0_0xafebb5 as ObjectFactory,a0_0x8d865 as Renderer,a0_0x2c4287 as RuntimeObjectRegistry,a0_0x4a24ce as Transform,a0_0x4d36f6 as applyScreenAnchor,a0_0x54ab6b as basePixi,a0_0x3902a1 as clearResponsiveElements,a0_0x156275 as createPixiBase,a0_0x108fb0 as getRegisteredFontIds,a0_0x39a8d0 as globalResponsiveMultipliers,a0_0x3faaef as initAssetTextures,a0_0x1b8bae as initAssets,a0_0x271ce8 as layout,a0_0x1ca722 as playLottieOverlay,a0_0x5ef819 as registerFont,a0_0x1c612e as registerType,a0_0x5c0f86 as resolveAnchorVec2,a0_0x5c1a4d as resolveFont,a0_0x286434 as resolveFontWeight,a0_0x4e7d3c as resolveScreenAnchorPoint,a0_0x38a9a9 as resolveScreenRatioPoint,a0_0x15c986 as runInitSequence,a0_0x3e66b2 as setLottieInstance,a0_0xe7a30d as spawnSceneFromConfig,a0_0xe30a1a as updateScreenState};
1
+ (function(_0x3bce9a,_0xad3904){var a0_0x5827e8={_0x368528:0x33a,_0x13e0f9:0x332,_0x344851:'r*g)',_0x4c1793:0x129,_0x15d551:0x12d,_0x1bf8aa:0x130,_0x1e328b:0x124,_0x24f410:0x20c,_0x2bdc5d:'9H*D',_0x3fc2ad:0x203,_0x175ef3:0x328,_0x16ac4f:'Sf62',_0x30bf8b:0x31c,_0x3198de:0x325,_0x5eb0fb:0x320,_0x12472b:0x32d,_0x7a6a2d:'xpKN',_0x42599e:0x334,_0x36b29e:0x12d,_0x2f3229:0x11a,_0x460cba:0x231,_0x15a5db:0x225,_0x1cb1d1:'qSxa',_0x146c06:0x121,_0x1cb166:0x112,_0x4e6e97:0x116,_0x1e80b1:0x116,_0x46eeb3:0x33c,_0x438296:'XLRV',_0x36c2d0:0x32a,_0x4f5a58:0x322,_0x1ca303:0x12d,_0x5c9b65:0x132,_0x366349:0x201,_0x54fb09:0x210,_0x5b972b:'9d6T',_0x90584c:0x212,_0xf8187a:0x21b},a0_0xd8cf1c={_0x36141f:0x2a0},a0_0x5b1303={_0x167bd1:0x18d};function _0x4a3f9f(_0x5da208,_0x4520d8,_0x331d3d,_0x1c86cd,_0x5187c8){return a0_0x45d2(_0x4520d8-a0_0x5b1303._0x167bd1,_0x331d3d);}function _0x24cca3(_0x25ec53,_0x5db273,_0x643a9b,_0x3a4a84,_0x4bb055){return a0_0x45d2(_0x5db273- -0x1b4,_0x25ec53);}function _0x563cee(_0x38481e,_0xeb6ce3,_0x3b5baf,_0x4f736b,_0x353fd2){return a0_0x45d2(_0xeb6ce3-a0_0xd8cf1c._0x36141f,_0x3b5baf);}var _0xc61f64=_0x3bce9a();while(!![]){try{var _0xd5ccb8=-parseInt(_0x563cee(a0_0x5827e8._0x368528,a0_0x5827e8._0x368528,'XLRV',0x332,a0_0x5827e8._0x13e0f9))/(0xad*-0x2d+-0x1a6d+0x38d7)+-parseInt(_0x24cca3(a0_0x5827e8._0x344851,-a0_0x5827e8._0x4c1793,-a0_0x5827e8._0x15d551,-a0_0x5827e8._0x1bf8aa,-a0_0x5827e8._0x1e328b))/(-0x133c+-0x52d+0x37d*0x7)*(parseInt(_0x4a3f9f(0x20e,a0_0x5827e8._0x24f410,a0_0x5827e8._0x2bdc5d,0x20a,a0_0x5827e8._0x3fc2ad))/(0x554*0x5+-0x6*0x2cf+-0x9c7*0x1))+parseInt(_0x563cee(0x323,a0_0x5827e8._0x175ef3,a0_0x5827e8._0x16ac4f,a0_0x5827e8._0x30bf8b,a0_0x5827e8._0x3198de))/(-0x2160+0x1a94+0x6d0)*(parseInt(_0x563cee(a0_0x5827e8._0x5eb0fb,a0_0x5827e8._0x12472b,a0_0x5827e8._0x7a6a2d,0x324,a0_0x5827e8._0x42599e))/(-0x2*0x95+0x4d4+-0x3*0x137))+-parseInt(_0x24cca3('JD4R',-0x128,-a0_0x5827e8._0x36b29e,-a0_0x5827e8._0x2f3229,-0x136))/(0x7fb+0x1df2*-0x1+0x15fd)+parseInt(_0x4a3f9f(a0_0x5827e8._0x460cba,a0_0x5827e8._0x15a5db,a0_0x5827e8._0x1cb1d1,0x222,0x22b))/(0x151*-0x5+-0x1f21+0x1*0x25bd)*(parseInt(_0x24cca3('IHFW',-a0_0x5827e8._0x146c06,-a0_0x5827e8._0x1cb166,-a0_0x5827e8._0x4e6e97,-a0_0x5827e8._0x1e80b1))/(0xcbc+0x10fe+0xed9*-0x2))+-parseInt(_0x563cee(a0_0x5827e8._0x46eeb3,0x331,a0_0x5827e8._0x438296,a0_0x5827e8._0x36c2d0,a0_0x5827e8._0x4f5a58))/(0x2411+-0x5c2+-0x307*0xa)*(parseInt(_0x24cca3('wtPI',-0x12d,-0x123,-a0_0x5827e8._0x1ca303,-a0_0x5827e8._0x5c9b65))/(0x1cb5+0x44+-0x1cef))+parseInt(_0x4a3f9f(a0_0x5827e8._0x366349,a0_0x5827e8._0x54fb09,a0_0x5827e8._0x5b972b,a0_0x5827e8._0x90584c,a0_0x5827e8._0xf8187a))/(-0x1586*-0x1+0x1*0x127d+-0x27f8*0x1);if(_0xd5ccb8===_0xad3904)break;else _0xc61f64['push'](_0xc61f64['shift']());}catch(_0xb6f3ba){_0xc61f64['push'](_0xc61f64['shift']());}}}(a0_0x3894,0x2*0x3ec78+0x956fb+-0xa4039));function a0_0x45d2(_0x3bf5c6,_0x5793ac){_0x3bf5c6=_0x3bf5c6-(0xf0+-0x1511*-0x1+0x1*-0x1583);var _0x498568=a0_0x3894();var _0x187a1d=_0x498568[_0x3bf5c6];if(a0_0x45d2['KEEsBf']===undefined){var _0x5cce97=function(_0x26d80b){var _0xca2e64='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x2e4426='',_0x35946d='',_0x5eb172=_0x2e4426+_0x5cce97;for(var _0x1df1d9=-0x18a8+0x3fb*0x1+0x14ad,_0x11e381,_0x3e1dbf,_0x220cb0=0x211+0x17d0+0x19e1*-0x1;_0x3e1dbf=_0x26d80b['charAt'](_0x220cb0++);~_0x3e1dbf&&(_0x11e381=_0x1df1d9%(-0x29*0x9b+0xef7+0x9e0)?_0x11e381*(0x1*-0x347+-0x2526+0x10b*0x27)+_0x3e1dbf:_0x3e1dbf,_0x1df1d9++%(0xd9d*-0x2+-0xae4*0x2+-0x5*-0x9ce))?_0x2e4426+=_0x5eb172['charCodeAt'](_0x220cb0+(0x8fa+-0x76*0x41+0x17*0xea))-(0x1*0x8c6+-0x125a+-0x99e*-0x1)!==0x19f5+-0x497*0x2+-0x10c7?String['fromCharCode'](-0x1e1*0x11+0x2686*0x1+-0x596&_0x11e381>>(-(-0x97a+-0x1f46+-0x25*-0x11a)*_0x1df1d9&-0x1*0x2174+-0x200*0xa+0x4a*0xb9)):_0x1df1d9:-0x3cc*-0x1+-0x215b+0x1d8f){_0x3e1dbf=_0xca2e64['indexOf'](_0x3e1dbf);}for(var _0x396e44=0x1b*-0x48+-0x1f18+0x26b0,_0xb23f53=_0x2e4426['length'];_0x396e44<_0xb23f53;_0x396e44++){_0x35946d+='%'+('00'+_0x2e4426['charCodeAt'](_0x396e44)['toString'](0xcf3+-0x1239+0x2ab*0x2))['slice'](-(0x84*-0x13+-0xf09+-0x18d7*-0x1));}return decodeURIComponent(_0x35946d);};var _0x69ea0a=function(_0xc8ba50,_0x46645a){var _0x573372=[],_0x1e874f=-0x31d*-0xb+0x19f6+-0x3c35,_0x27a74a,_0x9b1785='';_0xc8ba50=_0x5cce97(_0xc8ba50);var _0x5cdfdf;for(_0x5cdfdf=0x25fd+-0x720+-0x1edd*0x1;_0x5cdfdf<0xfd8+-0xddf*-0x1+-0x1cb7*0x1;_0x5cdfdf++){_0x573372[_0x5cdfdf]=_0x5cdfdf;}for(_0x5cdfdf=0x24f6+-0x17d*-0x17+-0x4731;_0x5cdfdf<-0x40*-0x3a+0x1fb8+-0x8*0x5a7;_0x5cdfdf++){_0x1e874f=(_0x1e874f+_0x573372[_0x5cdfdf]+_0x46645a['charCodeAt'](_0x5cdfdf%_0x46645a['length']))%(0x12fd+0x13*0xc7+-0x20c2),_0x27a74a=_0x573372[_0x5cdfdf],_0x573372[_0x5cdfdf]=_0x573372[_0x1e874f],_0x573372[_0x1e874f]=_0x27a74a;}_0x5cdfdf=-0xe1e+-0x849+-0x1*-0x1667,_0x1e874f=0x1286+-0x1*0x973+0x65*-0x17;for(var _0x4f6b20=0x1*-0x21bb+0x107d+0x113e;_0x4f6b20<_0xc8ba50['length'];_0x4f6b20++){_0x5cdfdf=(_0x5cdfdf+(-0x9a8+0xbe*0x20+0xe17*-0x1))%(0x40c*-0x4+0x3*-0x14f+0x73*0x2f),_0x1e874f=(_0x1e874f+_0x573372[_0x5cdfdf])%(0x7*-0x1ab+-0x65*-0x52+-0x13ad),_0x27a74a=_0x573372[_0x5cdfdf],_0x573372[_0x5cdfdf]=_0x573372[_0x1e874f],_0x573372[_0x1e874f]=_0x27a74a,_0x9b1785+=String['fromCharCode'](_0xc8ba50['charCodeAt'](_0x4f6b20)^_0x573372[(_0x573372[_0x5cdfdf]+_0x573372[_0x1e874f])%(0x8ef+0xf11*-0x2+0x1633)]);}return _0x9b1785;};a0_0x45d2['EHEyui']=_0x69ea0a,a0_0x45d2['cbVebR']={},a0_0x45d2['KEEsBf']=!![];}var _0x5dd1bd=_0x498568[-0x43c+-0x1d*-0x10d+-0x3*0x8bf],_0x6f4721=_0x3bf5c6+_0x5dd1bd,_0x502073=a0_0x45d2['cbVebR'][_0x6f4721];if(!_0x502073){if(a0_0x45d2['Wrdskb']===undefined){var _0x27ad6b=function(_0x4d6cc3){this['VRRzXL']=_0x4d6cc3,this['tqXEie']=[0x1*0x4c3+-0x64*0xa+-0xda,-0x1b7d+-0xe75+0x2ff*0xe,0x1ae7+0x24a*-0x2+0x1*-0x1653],this['bzqrjZ']=function(){return'newState';},this['yCSzNV']='\x5cw+\x20*\x5c(\x5c)\x20*{\x5cw+\x20*',this['gZKIHf']='[\x27|\x22].+[\x27|\x22];?\x20*}';};_0x27ad6b['prototype']['rUacdH']=function(){var _0x361b1b=new RegExp(this['yCSzNV']+this['gZKIHf']),_0x3f3aae=_0x361b1b['test'](this['bzqrjZ']['toString']())?--this['tqXEie'][0x511*-0x2+-0x1382+0x1*0x1da5]:--this['tqXEie'][-0x107*-0x4+-0x1a82+0x1666];return this['wrAXGR'](_0x3f3aae);},_0x27ad6b['prototype']['wrAXGR']=function(_0x446e17){if(!Boolean(~_0x446e17))return _0x446e17;return this['XtlvCH'](this['VRRzXL']);},_0x27ad6b['prototype']['XtlvCH']=function(_0x18a180){for(var _0x10d130=0x22b+0x140d+-0x1638,_0x314659=this['tqXEie']['length'];_0x10d130<_0x314659;_0x10d130++){this['tqXEie']['push'](Math['round'](Math['random']())),_0x314659=this['tqXEie']['length'];}return _0x18a180(this['tqXEie'][-0x52d+0x10d9*-0x1+-0x2*-0xb03]);},new _0x27ad6b(a0_0x45d2)['rUacdH'](),a0_0x45d2['Wrdskb']=!![];}_0x187a1d=a0_0x45d2['EHEyui'](_0x187a1d,_0x5793ac),a0_0x45d2['cbVebR'][_0x6f4721]=_0x187a1d;}else _0x187a1d=_0x502073;return _0x187a1d;}var a0_0x518ca2=(function(){var a0_0x32ea56={_0x1fd6a4:0x265,_0x19bf91:0x26a,_0x20508c:'sao#'},_0x46dda0=!![];return function(_0x41b797,_0x125c9d){var a0_0x34a48a={_0x11e10f:0x1cc},_0x3fb0a3=_0x46dda0?function(){function _0x4d479e(_0x56f95a,_0xb8db88,_0x3077e9,_0x41e95b,_0x3a8f57){return a0_0x45d2(_0x3077e9-a0_0x34a48a._0x11e10f,_0x3a8f57);}if(_0x125c9d){var _0x43f069=_0x125c9d[_0x4d479e(0x25e,0x264,a0_0x32ea56._0x1fd6a4,a0_0x32ea56._0x19bf91,a0_0x32ea56._0x20508c)](_0x41b797,arguments);return _0x125c9d=null,_0x43f069;}}:function(){};return _0x46dda0=![],_0x3fb0a3;};}()),a0_0x412f91=a0_0x518ca2(this,function(){var a0_0x24cec1={_0x11f23e:0x5b,_0x32d76c:0x58,_0x27f791:0x49,_0x3dc4cc:0x51,_0x4ed5b7:'$Z^O',_0x1afc50:0x85,_0x18578e:0x86,_0x3ed647:'wEwn',_0x36545e:0x80,_0x34cd2b:0x2bb,_0x462f32:0x2a6,_0x24f8e8:0x2b1,_0x39fb75:'73WR',_0x584dc2:0x85,_0x19074a:'gQJ*',_0x3852e8:0x7a,_0x13f136:0x2c2,_0x12059b:0x2b6,_0x475b12:'XznV',_0x32cad5:0x69,_0x16b67e:0x65,_0x1cf28f:'VFo$',_0x97eb3e:0x6b,_0x29ae0d:'qSxa',_0x163ed7:0x84,_0x15bdc9:0x85,_0x1a98a2:0x8f},a0_0x4c161f={_0x1adc34:0x9},a0_0x3f65de={_0x2b1b9b:0x29},a0_0x2cfa7a={_0x19f0d1:0x346};function _0x1024c5(_0x3caaef,_0x1f385f,_0x47c8fb,_0x444415,_0x39582a){return a0_0x45d2(_0x444415- -a0_0x2cfa7a._0x19f0d1,_0x39582a);}function _0x32490c(_0x1bb913,_0x347c74,_0x5bfd18,_0xc96bd3,_0x26d3a6){return a0_0x45d2(_0x347c74- -a0_0x3f65de._0x2b1b9b,_0x26d3a6);}var _0x15f3e1={};_0x15f3e1['xwESt']='(((.+'+_0x32490c(a0_0x24cec1._0x11f23e,a0_0x24cec1._0x32d76c,a0_0x24cec1._0x27f791,a0_0x24cec1._0x3dc4cc,a0_0x24cec1._0x4ed5b7)+'+$';var _0x1e7544=_0x15f3e1;function _0x5bfaab(_0x4d2094,_0x3f9958,_0x26858d,_0x576003,_0x20bda6){return a0_0x45d2(_0x576003- -a0_0x4c161f._0x1adc34,_0x26858d);}return a0_0x412f91[_0x5bfaab(a0_0x24cec1._0x1afc50,a0_0x24cec1._0x18578e,a0_0x24cec1._0x3ed647,a0_0x24cec1._0x36545e,a0_0x24cec1._0x36545e)+_0x1024c5(-0x2a3,-a0_0x24cec1._0x34cd2b,-a0_0x24cec1._0x462f32,-a0_0x24cec1._0x24f8e8,a0_0x24cec1._0x39fb75)]()[_0x5bfaab(0x85,a0_0x24cec1._0x584dc2,a0_0x24cec1._0x19074a,0x77,a0_0x24cec1._0x3852e8)+'h'](_0x1e7544['xwESt'])['toStr'+'ing']()[_0x1024c5(-a0_0x24cec1._0x13f136,-0x2b9,-a0_0x24cec1._0x34cd2b,-a0_0x24cec1._0x12059b,a0_0x24cec1._0x475b12)+_0x32490c(0x6a,a0_0x24cec1._0x32cad5,0x71,a0_0x24cec1._0x16b67e,a0_0x24cec1._0x1cf28f)+'r'](a0_0x412f91)[_0x32490c(0x5c,a0_0x24cec1._0x97eb3e,a0_0x24cec1._0x16b67e,0x66,a0_0x24cec1._0x29ae0d)+'h'](_0x1e7544[_0x5bfaab(0x86,a0_0x24cec1._0x163ed7,'sao#',a0_0x24cec1._0x15bdc9,a0_0x24cec1._0x1a98a2)]);});a0_0x412f91();import{A as a0_0x5acd98,B as a0_0x1025f6,C as a0_0x597c51,D as a0_0x4f5f4b,b as a0_0x3df9a5,c as a0_0x173418,d as a0_0x27979e,e as a0_0x2d846a,f as a0_0x5e0d7a,g as a0_0x26fd92,h as a0_0x1f1b1b,i as a0_0x24d4b8,j as a0_0x402254,k as a0_0xa2885f,l as a0_0x43073c,m as a0_0x409e7c,n as a0_0x240ebd,o as a0_0x444abd,p as a0_0x36ea3e,q as a0_0x476661,r as a0_0x119b6c,s as a0_0x5cccc1,t as a0_0x5977ad,u as a0_0x1ab203,v as a0_0x3c6dd7,w as a0_0xec526f,x as a0_0x91efba,y as a0_0x4162cb,z as a0_0x5666ba}from'../chunk-KHEZYZMO.js';import{a as a0_0x57d7ab,b as a0_0x14f2dd,c as a0_0xe95e53,d as a0_0x3c26f1,e as a0_0x1ad3bc}from'../chunk-I5OOVR5U.js';import'../chunk-PW2FGMCO.js';import'../chunk-HVKF2KYL.js';import'../chunk-E6WJCS24.js';function a0_0x3894(){var _0x2d541b=['W5OlW4SJW7DcE8ok','W4fJWQFcQSoaWPqJW7xdU8k8W6xcJq','Ft/cVvzngw3dG1r7sCkybq','W6hdJeOvWQhcVCkOWRyrWRfycG','W5VdT23dSCkQW4xdUWtcLx5EWPG','wCkTuSoFWR0','WP1eWPzqW4XyrrpcQdZcO8ou','ztjCWQ3dQLNdUW','WR3cHfVcGMVdGH8TWQPiWPy','WOpcMq8/W5/dMGyn','f2hdIJSR','rmoVpSkJmJpcMuW','WPXNWQtdPuS','mgLEgCojW4ZcNCoW','mSoEW5BcJeq','DdVdS8k3wSoZWOjHA8oikcCv','DCkaW4TJfq','WRVdISkG','m8owW7RdRtZdSSkBmbfWWR4','fSkxq8kFWPSoWRFcHK7dNrO8','mCkDW65vj8knfG','dMBdVWqM','mgW8v8kiWRJcUSoVBCoRtmoy','iWeEEeG9p8oPW7hdU8oTCG','WQfWWQf0CGPnbmoxW4JdUCk6WQldNG','gsCXWOa0u8oZWPpdTfKTW4i','E8kWWO0KW6e','mH4hALi','mmkZW7ubWQrhWOa','WORdISo3WPtdNmkOWQCJW6uPlCklWRDq'];a0_0x3894=function(){return _0x2d541b;};return a0_0x3894();}import'../chunk-JXBG6UFL.js';export{a0_0x57d7ab as AssetCache,a0_0xe95e53 as AssetLoader,a0_0x1ab203 as AssetSystem,a0_0x3c26f1 as AssetTextures,a0_0x5cccc1 as Assets,a0_0x444abd as BaseSystem,a0_0x240ebd as GameEngine,a0_0x2d846a as GameObject,a0_0x5e0d7a as GameObjectManager,a0_0x409e7c as ObjectFactory,a0_0x27979e as Renderer,a0_0x36ea3e as RuntimeObjectRegistry,a0_0x173418 as Transform,a0_0x1025f6 as applyScreenAnchor,a0_0x476661 as basePixi,a0_0xec526f as clearResponsiveElements,a0_0x3df9a5 as createPixiBase,a0_0x402254 as getRegisteredFontIds,a0_0x3c6dd7 as globalResponsiveMultipliers,a0_0x1ad3bc as initAssetTextures,a0_0x5977ad as initAssets,a0_0x597c51 as layout,a0_0x43073c as playLottieOverlay,a0_0x24d4b8 as registerFont,a0_0x14f2dd as registerType,a0_0x4162cb as resolveAnchorVec2,a0_0x26fd92 as resolveFont,a0_0x1f1b1b as resolveFontWeight,a0_0x5666ba as resolveScreenAnchorPoint,a0_0x5acd98 as resolveScreenRatioPoint,a0_0x4f5f4b as runInitSequence,a0_0xa2885f as setLottieInstance,a0_0x119b6c as spawnSceneFromConfig,a0_0x91efba as updateScreenState};