dsh-plugin-beyond-simulator 2.1.0 → 2.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- import{parentPort as rr}from"node:worker_threads";import{existsSync as si,readFileSync as Ds}from"node:fs";import{randomUUID as Gs}from"node:crypto";import{isAbsolute as dr,win32 as hr}from"node:path";function fr(e,t=!1){let i=String(e??"").trim().replaceAll("\\","/");if(t&&(!i||i==="."))return"";if(!i||dr(i)||hr.isAbsolute(i)||i.split("/").some(n=>!n||n==="."||n===".."||/[<>:"|?*\x00-\x1f]/.test(n)||/[. ]$/.test(n)||/^(con|prn|aux|nul|com[1-9]|lpt[1-9])(?:\.|$)/i.test(n)))throw new Error("\u811A\u672C\u76EE\u5F55/\u8DEF\u5F84\u5FC5\u987B\u662F\u6709\u6548\u7684\u76F8\u5BF9\u8DEF\u5F84\uFF0C\u4E0D\u80FD\u5305\u542B .. \u6216 Windows \u7279\u6B8A\u6587\u4EF6\u540D");return i}function Ki(e){if(e==null)return null;if(e.version!==1)throw new Error("unsupported scriptSync version");let t=String(e.clientImportRoot||"").trim();if(!dr(t)&&!hr.isAbsolute(t))throw new Error("\u5B9E\u673A\u5BFC\u5165\u6839\u76EE\u5F55\u5FC5\u987B\u662F\u7EDD\u5BF9\u8DEF\u5F84");return{version:1,workspaceDir:fr(e.workspaceDir,!0),clientImportRoot:t,clientSubdir:fr(e.clientSubdir,!0)}}import{basename as Ot,dirname as Vs,isAbsolute as Ys,join as go,resolve as yo}from"node:path";var Go=[[10003004,10003004],[10005001,10005142],[10006001,10006002],[10007002,10007002],[10008001,10008001],[10009001,10009011],[20001001,20001074],[20001076,20001121],[20001123,20001156],[20001158,20001302],[20001304,20001568],[20001570,20001999],[20002001,20002755],[20002757,20002999],[20003001,20003455],[30001001,30001016],[30002001,30002017],[30003001,30003011],[30004001,30004001],[30005001,30005020],[30006001,30006026],[30007001,30007013],[30008001,30008011]];function mr(e){return!Number.isSafeInteger(e)||!Go.some(([t,i])=>e>=t&&e<=i)?null:e===10003004||e===10008001?128:256}var Vo=[[100001,100006],[100101,100213],[101001,101018],[101020,101028],[101030,101046],[101048,101048],[101050,101054],[101056,101080],[102001,102052],[103001,103148],[104001,104010],[105001,105140],[105142,105219],[105221,105317],[106001,106047],[106049,106096],[107001,107007],[107010,107020],[107031,107092],[107094,107180],[107183,107201],[107203,107205],[107207,107228],[107231,107278],[107280,107402],[108001,108017],[108019,108020],[109001,109031],[109033,109034],[109036,109075],[110001,110053],[111001,111139],[112001,112042]];function He(e){return e==null||e===""?"StaticReference":typeof e=="string"?e:typeof e.Name=="string"?e.Name:"Unknown"}function pr(e,t){return He(t)==="StaticReference"&&qi(e,t)}function qi(e,t){let i=He(t);return i==="Prefab"?mr(e)!==null:i==="StaticReference"&&Number.isSafeInteger(e)&&e>100006&&Vo.some(([n,r])=>e>=n&&e<=r)}var hi="7.1.0",le=Object.freeze(["KEYBOARD","TOUCHSCREEN","CONTROLLER_CONSOLE","CONTROLLER_MOBILE"]),te=Object.freeze({"pc-16-9":{id:"pc-16-9",device:"pc",platform:"KEYBOARD",width:1600,height:900,ratio:"16:9",luaDevice:"KeyboardAndMouse",label:"PC 1600\xD7900"},"pc-21-9":{id:"pc-21-9",device:"pc",platform:"KEYBOARD",width:2100,height:900,ratio:"21:9",luaDevice:"KeyboardAndMouse",label:"PC 2100\xD7900"},"mobile-16-9":{id:"mobile-16-9",device:"mobile",platform:"TOUCHSCREEN",width:1280,height:720,ratio:"16:9",luaDevice:"Mobile",label:"\u624B\u673A 1280\xD7720"},"mobile-19.5-9":{id:"mobile-19.5-9",device:"mobile",platform:"TOUCHSCREEN",width:1560,height:720,ratio:"19.5:9",luaDevice:"Mobile",label:"\u624B\u673A 1560\xD7720"},"mobile-4-3":{id:"mobile-4-3",device:"mobile",platform:"TOUCHSCREEN",width:1280,height:960,ratio:"4:3",luaDevice:"Mobile",label:"\u624B\u673A 1280\xD7960"}}),mi="pc-16-9",me=2,vt=Object.freeze({KEYBOARD:"pc-16-9",TOUCHSCREEN:"mobile-16-9",CONTROLLER_CONSOLE:"pc-16-9",CONTROLLER_MOBILE:"mobile-16-9"}),St=Object.freeze({"server-container":"\u5BA2\u6237\u7AEF\u63A7\u4EF6\u5BB9\u5668",container:"\u5BB9\u5668\u8282\u70B9",textbox:"\u6587\u672C\u6846",image:"\u56FE\u7247",button:"\u9884\u8BBE\u6309\u94AE",cursor:"\u5149\u6807\u68C0\u6D4B\u533A\u57DF",grid:"\u7F51\u683C\u89C6\u7A97",reference:"\u6A21\u677F\u5F15\u7528\u63A7\u4EF6",textwindow:"\u6587\u672C\u89C6\u7A97",keyhint:"\u6309\u952E\u63D0\u793A",animation:"\u754C\u9762\u52A8\u6548",fullscreen:"\u5168\u5C4F\u52A8\u6548"}),pi=Object.freeze(["server-container","container","textbox","cursor","reference","grid","image","button","textwindow","keyhint","animation","fullscreen"]),gr=Object.freeze({"server-container":null,container:[150,150],textbox:[100,40],image:[80,80],button:[150,50],cursor:[150,50],grid:[80,80],reference:[80,80],textwindow:[100,40],keyhint:[40,40],animation:[100,100],fullscreen:null}),Yo=Object.freeze({100001:"rect",100002:"circle",100003:"triangle",100004:"fourstar",100005:"fivestar",100006:"ring"});function It(e,t){return He(t)==="StaticReference"&&Yo[e]||(qi(e,t)?"sprite":"missing")}var yr=50888,Bt=Object.freeze({font:4294967295,bg:16777215,outline:858993459,image:4294967295});function wt(e,t="$",i=new Set){if(e===void 0)throw new Error(`undefined at ${t}`);if(typeof e=="number"&&!Number.isFinite(e))throw new Error(`non-finite number at ${t}`);if(typeof e=="bigint"||typeof e=="function"||typeof e=="symbol")throw new Error(`non-JSON value at ${t}`);if(!(e===null||typeof e!="object")){if(i.has(e))throw new Error(`circular value at ${t}`);if(i.add(e),Array.isArray(e))e.forEach((n,r)=>wt(n,`${t}[${r}]`,i));else for(let[n,r]of Object.entries(e))wt(r,`${t}.${n}`,i);i.delete(e)}}function D(e){return wt(e),JSON.parse(JSON.stringify(e))}function br(e,t="$"){wt(e,t)}function vr(e){return te[e]||te[mi]}function Xt(e,t=0,i=0){return!e||typeof e!="object"?{x:t,y:i}:{x:Number(e.x??t),y:Number(e.y??i)}}function Bo(e){return!e||typeof e!="object"?{x:1,y:1,z:1}:{x:Number(e.x??1),y:Number(e.y??1),z:Number(e.z??1)}}function Xo(e){return!e||typeof e!="object"?{x:0,y:0,z:0}:{x:Number(e.x??0),y:Number(e.y??0),z:Number(e.z??0)}}function gi({layout:e="center",size:t=[100,40],offset:i=[0,0]}={}){return e==="stretch"?{scale:{x:1,y:1,z:1},rotation:{x:0,y:0,z:0},anchorMin:{x:0,y:0},anchorMax:{x:1,y:1},offset:{x:0,y:0},size:{x:0,y:0},pivot:{x:.5,y:.5}}:{scale:{x:1,y:1,z:1},rotation:{x:0,y:0,z:0},anchorMin:{x:.5,y:.5},anchorMax:{x:.5,y:.5},offset:{x:Number(i[0]??0),y:Number(i[1]??0)},size:{x:Number(t[0]??0),y:Number(t[1]??0)},pivot:{x:.5,y:.5}}}function Oe(e){let t=e||gi();return{scale:Bo(t.scale),rotation:Xo(t.rotation),anchorMin:Xt(t.anchorMin??t.anchor_min,.5,.5),anchorMax:Xt(t.anchorMax??t.anchor_max,.5,.5),offset:Xt(t.offset,0,0),size:Xt(t.size,0,0),pivot:Xt(t.pivot,.5,.5)}}function pe(e,t=0){let i=Number(e);return Number.isFinite(i)?i:t}function Ge(e,t){let i=e.width,n=e.height,r=e.left,a=e.bottom,o=t.anchorMin||{x:t.anchorMinX,y:t.anchorMinY},l=t.anchorMax||{x:t.anchorMaxX,y:t.anchorMaxY},u=t.offset||{x:t.anchoredPositionX,y:t.anchoredPositionY},s=t.size||{x:t.sizeDeltaX,y:t.sizeDeltaY},f=t.pivot||{x:t.pivotX,y:t.pivotY},d=pe(o?.x,.5)*i,g=pe(o?.y,.5)*n,p=pe(l?.x,.5)*i,m=pe(l?.y,.5)*n,y=pe(s?.x),w=pe(s?.y),_=pe(f?.x,.5),C=pe(f?.y,.5),G=p-d+y,z=m-g+w,Z=r+d+pe(u?.x)-y*_,ie=a+g+pe(u?.y)-w*C;return{left:Z,bottom:ie,width:G,height:z,right:Z+G,top:ie+z,centerX:Z+G/2,centerY:ie+z/2}}function Ct(){return{a:1,b:0,c:0,d:1,tx:0,ty:0}}function Uo(e,t){return{a:e.a*t.a+e.c*t.b,b:e.b*t.a+e.d*t.b,c:e.a*t.c+e.c*t.d,d:e.b*t.c+e.d*t.d,tx:e.a*t.tx+e.c*t.ty+e.tx,ty:e.b*t.tx+e.d*t.ty+e.ty}}function Ee(e,t,i){return{x:e.a*t+e.c*i+e.tx,y:e.b*t+e.d*i+e.ty}}function xt(e){let t=e.a*e.d-e.b*e.c;return!Number.isFinite(t)||Math.abs(t)<1e-8?null:{a:e.d/t,b:-e.b/t,c:-e.c/t,d:e.a/t,tx:(e.c*e.ty-e.d*e.tx)/t,ty:(e.b*e.tx-e.a*e.ty)/t}}function Li(e,t){let i=t.rotation||{z:t.localRotationZ},n=t.scale||{x:t.localScaleX,y:t.localScaleY},r=t.pivot||{x:t.pivotX,y:t.pivotY},a=pe(i?.z)*Math.PI/180,o=Math.cos(a),l=Math.sin(a),u=pe(n?.x,1),s=pe(n?.y,1),f=e.left+e.width*pe(r?.x,.5),d=e.bottom+e.height*pe(r?.y,.5),g=o*u,p=l*u,m=-l*s,y=o*s;return{a:g,b:p,c:m,d:y,tx:f-g*f-m*d,ty:d-p*f-y*d}}function Ut(e,t,i){return Uo(e||Ct(),Li(t,i))}function Sr(e,t){let i=Ee(t,e.centerX,e.centerY),n=Math.abs(e.width*Math.hypot(t.a,t.b)),r=Math.abs(e.height*Math.hypot(t.c,t.d));return{left:i.x-n/2,bottom:i.y-r/2,width:n,height:r,centerX:i.x,centerY:i.y,rotationZ:Math.atan2(t.b,t.a)*180/Math.PI}}function ge(e){let t=typeof e=="string"?vr(e):e;return{left:0,bottom:0,width:t.width,height:t.height,right:t.width,top:t.height,centerX:t.width/2,centerY:t.height/2}}function Wi(e){return{posX:e.centerX,posY:e.centerY,width:e.width,height:e.height}}function rt(e,t,i){let n=Oe(t),r=e.width,a=e.height,o=n.anchorMin.x*r,l=n.anchorMin.y*a,u=n.anchorMax.x*r,s=n.anchorMax.y*a,f=Number(i.width),d=Number(i.height),g=Number(i.posX),p=Number(i.posY),m=g-f/2,y=p-d/2;return n.size={x:f-(u-o),y:d-(s-l)},n.offset={x:m-e.left-o+n.size.x*n.pivot.x,y:y-e.bottom-l+n.size.y*n.pivot.y},n}function Ir(e,t){let i=Oe(e),r={"bottom-left":[[0,0],[0,0],[0,0]],bottom:[[.5,0],[.5,0],[.5,0]],"bottom-right":[[1,0],[1,0],[1,0]],left:[[0,.5],[0,.5],[0,.5]],center:[[.5,.5],[.5,.5],[.5,.5]],right:[[1,.5],[1,.5],[1,.5]],"top-left":[[0,1],[0,1],[0,1]],top:[[.5,1],[.5,1],[.5,1]],"top-right":[[1,1],[1,1],[1,1]],stretch:[[0,0],[1,1],[.5,.5]],"stretch-horizontal":[[0,.5],[1,.5],[.5,.5]],"stretch-vertical":[[.5,0],[.5,1],[.5,.5]]}[t];return r&&(i.anchorMin={x:r[0][0],y:r[0][1]},i.anchorMax={x:r[1][0],y:r[1][1]},i.pivot={x:r[2][0],y:r[2][1]}),i}function wr(e){let t=Oe(e),i=(n,r)=>Math.abs(n-r)<1e-4;if(i(t.anchorMin.x,0)&&i(t.anchorMin.y,0)&&i(t.anchorMax.x,1)&&i(t.anchorMax.y,1))return"stretch";if(i(t.anchorMin.x,t.anchorMax.x)&&i(t.anchorMin.y,t.anchorMax.y)){let n=t.anchorMin.x,r=t.anchorMin.y,a=[[0,0,"bottom-left"],[.5,0,"bottom"],[1,0,"bottom-right"],[0,.5,"left"],[.5,.5,"center"],[1,.5,"right"],[0,1,"top-left"],[.5,1,"top"],[1,1,"top-right"]];for(let o of a)if(i(n,o[0])&&i(r,o[1]))return o[2]}return"custom"}function at(e){return vr(e).platform}function Cr(e){let t={};for(let i of le)t[i]=e(i);return t}var jo={scale:["x","y","z"],rotation:["x","y","z"],anchorMin:["x","y"],anchorMax:["x","y"],offset:["x","y"],size:["x","y"],pivot:["x","y"]};function xr(e,t){for(let[i,n]of Object.entries(jo))for(let r of n)if(!Number.isFinite(e?.[i]?.[r]))throw new Error(`${t}.${i}.${r} must be a finite number`)}function Ke(e,t="transformByPlatform"){if(!e||typeof e!="object"||Array.isArray(e))throw new Error(`${t}: \u9700\u8981\u5B8C\u6574\u7684\u56DB\u5E73\u53F0\u5E03\u5C40`);for(let i of Object.keys(e))if(!le.includes(i))throw new Error(`${t}: unknown platform ${i}`);for(let i of le)xr(e[i],`${t}.${i}`)}function ot(e){if(Object.hasOwn(e,"transformByCanvas"))throw new Error(`${e.name||e.id||"\u63A7\u4EF6"}: \u4E0D\u518D\u652F\u6301 transformByCanvas\uFF1B\u8BF7\u4F7F\u7528\u56DB\u5E73\u53F0 transformByPlatform \u5E03\u5C40`);Ke(e.transformByPlatform,`${e.name||e.id||"\u63A7\u4EF6"}.transformByPlatform`)}function lt(e,t){if(!le.includes(t))throw new Error(`unknown platform ${t}`);return xr(e?.[t],`transformByPlatform.${t}`),Oe(e[t])}var Ho=Object.freeze([{key:"genericField501",label:"\u901A\u7528\u69FD field501",type:"number",defaultValue:0,wire:"GenericSlot.field501"},{key:"footerField505",label:"\u5C3E\u90E8\u69FD field505",type:"number",defaultValue:0,wire:"FooterSlot.field505"}]),Ko=Object.freeze({container:[],textbox:[{key:"textField501",label:"\u6587\u672C\u914D\u7F6E field501",type:"number",defaultValue:20,wire:"TextConfig.field501"},{key:"textField503",label:"\u6587\u672C\u914D\u7F6E field503",type:"number",defaultValue:12,wire:"TextConfig.field503"},{key:"textAlign",label:"\u6C34\u5E73\u5BF9\u9F50\u679A\u4E3E\u539F\u59CB\u503C",type:"enum",defaultValue:0,wire:"TextConfig.align",options:[{value:0,label:"0 \xB7 \u5DE6\u5BF9\u9F50"},{value:1,label:"1 \xB7 \u5C45\u4E2D"},{value:2,label:"2 \xB7 \u53F3\u5BF9\u9F50"}]}],textwindow:[{key:"textField501",label:"\u6587\u672C\u914D\u7F6E field501",type:"number",defaultValue:20,wire:"TextConfig.field501"},{key:"textField503",label:"\u6587\u672C\u914D\u7F6E field503",type:"number",defaultValue:12,wire:"TextConfig.field503"},{key:"textAlign",label:"\u6C34\u5E73\u5BF9\u9F50\u679A\u4E3E\u539F\u59CB\u503C",type:"enum",defaultValue:0,wire:"TextConfig.align",options:[{value:0,label:"0 \xB7 \u5DE6\u5BF9\u9F50"},{value:1,label:"1 \xB7 \u5C45\u4E2D"},{value:2,label:"2 \xB7 \u53F3\u5BF9\u9F50"}]},{key:"textField511",label:"\u6587\u672C\u89C6\u7A97 field511",type:"number",defaultValue:1,wire:"TextConfig.field511"},{key:"textViewField502",label:"\u89C6\u7A97\u6807\u8BB0 field502",type:"number",defaultValue:1,wire:"TextConfig.viewFlags.field502"},{key:"textViewField503",label:"\u89C6\u7A97\u6807\u8BB0 field503",type:"number",defaultValue:1,wire:"TextConfig.viewFlags.field503"}],cursor:[{key:"cursorField501",label:"\u5149\u6807\u68C0\u6D4B field501",type:"number",defaultValue:1,wire:"CursorConfig.field501"}],reference:[{key:"templateRefSlot",label:"\u6A21\u677F\u5F15\u7528\u69FD\u539F\u59CB\u503C",type:"string",defaultValue:"",wire:"Details.templateRefSlot"}],grid:[{key:"gridField501",label:"\u7F51\u683C\u6807\u8BB0 field501",type:"number",defaultValue:1,wire:"GridViewConfig.field501"},{key:"gridField507",label:"\u7F51\u683C\u6807\u8BB0 field507",type:"number",defaultValue:1,wire:"GridViewConfig.field507"},{key:"gridField508",label:"\u7F51\u683C\u6807\u8BB0 field508",type:"number",defaultValue:1,wire:"GridViewConfig.field508"},{key:"gridField509",label:"\u7F51\u683C\u6807\u8BB0 field509",type:"number",defaultValue:1,wire:"GridViewConfig.field509"},{key:"gridField511",label:"\u7F51\u683C\u6807\u8BB0 field511",type:"number",defaultValue:5,wire:"GridViewConfig.field511"},{key:"gridField512",label:"\u7F51\u683C\u6807\u8BB0 field512",type:"number",defaultValue:1,wire:"GridViewConfig.field512"}],keyhint:[{key:"keyHintField501",label:"\u6309\u952E\u63D0\u793A field501",type:"number",defaultValue:1,wire:"KeyHintConfig.field501"},{key:"keyHintField502",label:"\u952E\u9F20\u952E\u4F4D\u539F\u59CB\u503C",type:"number",defaultValue:1,wire:"KeyHintConfig.field502"}],image:[{key:"imageSlotType",label:"\u56FE\u7247\u7C7B\u578B\u539F\u59CB\u503C",type:"number",defaultValue:0,wire:"ImageSlotConfig.imageType"},{key:"imageField502",label:"\u56FE\u7247\u6807\u8BB0 field502",type:"number",defaultValue:1,wire:"ImageConfig.field502"},{key:"imageField504",label:"\u56FE\u7247\u6807\u8BB0 field504",type:"number",defaultValue:1,wire:"ImageConfig.field504"},{key:"imageField505",label:"\u56FE\u7247\u6807\u8BB0 field505",type:"number",defaultValue:1,wire:"ImageConfig.field505"},{key:"imageField507",label:"\u56FE\u7247\u6807\u8BB0 field507",type:"number",defaultValue:2,wire:"ImageConfig.field507"},{key:"imageFillType",label:"\u586B\u5145\u5F62\u72B6\u679A\u4E3E\u539F\u59CB\u503C",type:"enum",defaultValue:1,wire:"ImageConfig.fillType",options:[{value:1,label:"1 \xB7 \u6A2A\u5411"},{value:2,label:"2 \xB7 \u7EB5\u5411"},{value:3,label:"3 \xB7 90\u5EA6\u73AF\u7ED5"},{value:4,label:"4 \xB7 180\u5EA6\u73AF\u7ED5"},{value:5,label:"5 \xB7 360\u5EA6\u73AF\u7ED5"}]}],animation:[{key:"effectSlot",label:"\u754C\u9762\u52A8\u6548\u69FD\u539F\u59CB\u503C",type:"string",defaultValue:"",wire:"Details.effectSlot"}],fullscreen:[{key:"fullscreenEffectSlot",label:"\u5168\u5C4F\u52A8\u6548\u69FD\u539F\u59CB\u503C",type:"string",defaultValue:"",wire:"Details.fullscreenEffectSlot"}]});function kr(e){return[...Ho,...Ko[e]||[]]}function Er(e,t){return kr(e).find(i=>i.key===t)||null}function Ji(e,t){if(!e)throw new Error("unknown raw GIA field");if(e.type==="string")return String(t??"");let i=Number(t);if(!Number.isFinite(i))throw new Error(`${e.wire} must be a finite number`);return Math.trunc(i)}function Ar(e,t={}){let i={};for(let n of kr(e)){let r=Object.hasOwn(t||{},n.key)?t[n.key]:n.defaultValue;i[n.key]=Ji(n,r)}return i}function Ae(e){let t=Number(e);return Number.isSafeInteger(t)&&t>0&&t<=2147483647}function Zi(e,t){if(e){t(e);for(let i of e.children||[])Zi(i,t)}}function kt(e,t=new Set,{skipServerContainer:i=!1}={}){return Zi(e,n=>{i&&n.kind==="server-container"||Ae(n.guid)&&t.add(Number(n.guid))}),t}function qe(e,t=1073741850){let i=Number.isSafeInteger(t)&&t>0?t:1073741850;i<1073741850&&(i=1073741850);for(let n of e)Ae(n)&&n>=i&&(i=Number(n)+1);for(;e.has(i);)i+=1;if(i>2147483647)throw new Error("GUID space exhausted");return i}function _r(e,t=new Set,{skipServerContainer:i=!1}={}){let n=[];Zi(e,r=>{if(i&&r.kind==="server-container")return;let a=Number(r.guid);if(Ae(a)&&!t.has(a)){t.add(a),r.guid=a;return}n.push(r)});for(let r of n){let a=qe(t);r.guid=a,t.add(a)}return t}function Ce(e){return Number.isSafeInteger(e)&&e>0&&e<=2147483647}function Ve(e,{warnings:t=[]}={}){if(e.meta?.assetType!=="client-control-template")return;if(e.meta.giaAssetIndexSchemaVersion>1)throw new Error(`\u4E0D\u652F\u6301\u5BA2\u6237\u7AEF\u8D44\u4EA7\u7F16\u53F7\u7248\u672C ${e.meta.giaAssetIndexSchemaVersion}`);let i=[],n=m=>{m.kind!=="server-container"&&i.push(m);for(let y of m.children||[])n(y)};n(e.root);let r=new Map,a=new Map;for(let m of i){if(!Ce(m.giaInfoIndex))continue;let y=r.get(m.giaInfoIndex)||[];y.push(m),r.set(m.giaInfoIndex,y);let w=a.get(m.kind)||new Set;w.add(m.giaInfoIndex),a.set(m.kind,w)}let o=(e.root.children||[]).filter(m=>m.kind!=="server-container"),l=new Set(o),u=o.some((m,y)=>Ce(m.giaInfoIndex)&&o.slice(0,y).some(w=>w.giaInfoIndex===m.giaInfoIndex)),s=!e.meta.giaAssetIndexSchemaVersion&&u&&i.every(m=>m.giaInfoIndexSource!=="authoring")&&[...a.values()].every(m=>m.size===1)&&[...r.values()].every(m=>m.every(y=>y.kind===m[0].kind)),f=new Set;if(s)for(let m of r.values()){let y=m.find(w=>l.has(w))||m[0];for(let w of m)w!==y&&f.add(w)}let d=new Map,g=Number.isSafeInteger(e.meta.giaNextAssetIndex)&&e.meta.giaNextAssetIndex>=2?e.meta.giaNextAssetIndex:2;for(let m of i){if(!Ce(m.giaInfoIndex)||(g=Math.max(g,m.giaInfoIndex+1),f.has(m)))continue;let y=d.get(m.giaInfoIndex);if(y&&(y.giaInfoIndexSource==="authoring"||m.giaInfoIndexSource==="authoring"))throw new Error(`\u65B0\u5EFA\u8D44\u4EA7\u7F16\u53F7 ${m.giaInfoIndex} \u91CD\u590D\uFF1A${y.name} / ${m.name}`);d.set(m.giaInfoIndex,m)}s&&(g=Math.max(g,13));let p=s?[...o,...i.filter(m=>!l.has(m))].filter(m=>f.has(m)||!Ce(m.giaInfoIndex)):i.filter(m=>!Ce(m.giaInfoIndex));if(p.length&&g+p.length-1>2147483647)throw new Error("\u5BA2\u6237\u7AEF\u8D44\u4EA7\u7F16\u53F7\u7A7A\u95F4\u5DF2\u8017\u5C3D");for(let m of p)m.giaInfoIndex=g++,m.giaInfoIndexSource="authoring";e.meta.giaNextAssetIndex=g,e.meta.giaAssetIndexSchemaVersion=1,f.size&&t.push(`\u65E7\u5BA2\u6237\u7AEF\u8D44\u4EA7\u7F16\u53F7\u81EA\u52A8\u8FC1\u79FB\uFF1A\u4FEE\u590D ${f.size} \u6761\u6309\u63A7\u4EF6\u7C7B\u578B\u590D\u7528\u7684\u7F16\u53F7\uFF1BGUID\u3001Lua \u5F15\u7528\u548C\u63A7\u4EF6\u5C5E\u6027\u4FDD\u6301\u4E0D\u53D8\u3002`)}var Qi=1;function en(e="n"){let t=`${e}${Qi}`;return Qi+=1,t}function yi(e=1){Qi=e}function tn(e,{isRootContainer:t=!1}={}){if(e==="server-container"||e==="fullscreen"||e==="container"&&t)return gi({layout:"stretch"});let i=gr[e]||[80,80];return gi({layout:"center",size:i})}function qo(e,t){return Cr(()=>tn(e,t))}function Lo(e){Ke(e);let t={};for(let i of le)t[i]=lt(e,i);return t}function H(e,t={}){if(!St[e])throw new Error(`unknown kind: ${e}`);Object.hasOwn(t,"transformByCanvas")&&ot(t);let i=t.isRootContainer===!0,n=t.id||en(e==="server-container"?"sc":"n"),r=Object.hasOwn(t,"transformByPlatform")?Lo(t.transformByPlatform):qo(e,{isRootContainer:i}),a={id:n,kind:e,name:t.name||St[e],guid:t.guid??0,giaRelatedGuids:Array.isArray(t.giaRelatedGuids)?t.giaRelatedGuids.filter(o=>Number.isSafeInteger(Number(o))&&Number(o)>0).map(Number):[],...Ce(Number(t.giaInfoIndex))?{giaInfoIndex:Number(t.giaInfoIndex),giaInfoIndexSource:t.giaInfoIndexSource==="authoring"?"authoring":"imported"}:{},active:t.active!==!1,visible:t.visible!==!1,canControllerFocus:t.canControllerFocus??t.giaRaw?.footerField505===1,syncAllDevices:t.syncAllDevices!==!1,giaRaw:Ar(e,t.giaRaw),transformByPlatform:r,children:[],scriptMappingIds:Array.isArray(t.scriptMappingIds)?t.scriptMappingIds.filter(o=>Number.isSafeInteger(Number(o))&&Number(o)>0).map(Number):[]};if(e==="container"&&(a.isolateNavigation=t.isolateNavigation===!0,a.disableKeyEventPassthrough=t.disableKeyEventPassthrough===!0,a.disableCursorEventPassthrough=t.disableCursorEventPassthrough===!0,a.showCursor=t.showCursor===!0),(e==="textbox"||e==="textwindow")&&(a.fontSize=t.fontSize??20,a.adaptiveFontSize=t.adaptiveFontSize===!0,a.minimumFontSize=t.minimumFontSize??20,a.fontColor=t.fontColor??Bt.font,a.bgColor=t.bgColor??Bt.bg,a.enableOutline=t.enableOutline!==!1,a.outlineColor=t.outlineColor??Bt.outline,a.horizontalAlignment=t.horizontalAlignment||"Left",a.verticalAlignment=t.verticalAlignment||"Top",Number.isInteger(t.giaRaw?.textVerticalAlign)&&![0,1,2].includes(t.giaRaw.textVerticalAlign)&&(a.giaRaw.textVerticalAlign=t.giaRaw.textVerticalAlign),a.text=t.text??"",Object.hasOwn(t.giaRaw||{},"textAlign")||(a.giaRaw.textAlign={Left:0,Middle:1,Right:2}[a.horizontalAlignment]??a.giaRaw.textAlign),e==="textwindow"&&(a.interactable=t.interactable!==!1,a.showScrollBar=t.showScrollBar!==!1)),e==="image"&&(a.imageSource=t.imageSource||"StaticReference",a.imageType=["Basic","Stretch"].includes(t.imageType)?t.imageType:null,a.imageId=t.imageId??100001,a.imageColor=t.imageColor??Bt.image,a.enableMask=t.enableMask===!0,a.enableSoftEdge=t.enableSoftEdge===!0,a.softEdgeMode=t.softEdgeMode||"Percentage",a.softEdgeWidthX=t.softEdgeWidthX??8,a.softEdgeWidthY=t.softEdgeWidthY??8,a.horizontalSoftRange=t.horizontalSoftRange??85,a.verticalSoftRange=t.verticalSoftRange??85,a.enableFill=t.enableFill===!0,a.fillType=t.fillType||"Horizontal",a.fillHorizontalType=t.fillHorizontalType||"Left",a.fillVerticalType=t.fillVerticalType||"Bottom",a.fillRadial90Type=t.fillRadial90Type||"BottomLeft",a.fillRadialType=t.fillRadialType||"Bottom",a.fillAmount=t.fillAmount??1,a.reverseMaskArea=t.reverseMaskArea===!0||t.reverseMask===!0,Object.hasOwn(t.giaRaw||{},"imageFillType")||(a.giaRaw.imageFillType={Horizontal:1,Vertical:2,Radial90:3,Radial180:4,Radial360:5}[a.fillType]??a.giaRaw.imageFillType)),e==="button"&&(a.raycastTarget=t.raycastTarget!==!1,a.interactable=t.interactable!==!1,a.clickAudioId=t.clickAudioId??yr,a.unavailableChildId=t.unavailableChildId??null,a.hoverChildId=t.hoverChildId??null,a.pressedChildId=t.pressedChildId??null,a.selectedChildId=t.selectedChildId??null),e==="cursor"&&(a.raycastTarget=t.raycastTarget??t.giaRaw?.cursorField501!==0),e==="reference"&&(a.referencedPrefabId=t.referencedPrefabId??t.giaRaw?.templateRefSlot??null,Object.hasOwn(t.giaRaw||{},"templateRefSlot")||(a.giaRaw.templateRefSlot=String(a.referencedPrefabId??""))),e==="grid"&&(a.itemPrefabId=t.itemPrefabId??null,a.raycastTarget=t.raycastTarget!==!1,a.interactable=t.interactable!==!1,a.showScrollBar=t.showScrollBar!==!1,a.scrollDirection=t.scrollDirection||"Vertical",a.layoutConstraint=t.layoutConstraint||"AutoWrap",a.layoutConstraintFixedCount=t.layoutConstraintFixedCount??null,a.cellSizeX=t.cellSizeX??50,a.cellSizeY=t.cellSizeY??50,a.spacingX=t.spacingX??8,a.spacingY=t.spacingY??8,a.padding1X=t.padding1X??20,a.padding1Y=t.padding1Y??20,a.padding2X=t.padding2X??20,a.padding2Y=t.padding2Y??20,a.previewCount=t.previewCount??t.giaRaw?.gridField511??5,Object.hasOwn(t.giaRaw||{},"gridField511")||(a.giaRaw.gridField511=Math.trunc(a.previewCount))),e==="keyhint"&&(a.keyboardKeyCode=t.keyboardKeyCode??t.giaRaw?.keyHintField502??null,a.controllerKeyCode=t.controllerKeyCode??t.giaRaw?.keyHintField501??null,Object.hasOwn(t.giaRaw||{},"keyHintField502")||(a.giaRaw.keyHintField502=Math.trunc(a.keyboardKeyCode??1)),Object.hasOwn(t.giaRaw||{},"keyHintField501")||(a.giaRaw.keyHintField501=Math.trunc(a.controllerKeyCode??1))),e==="animation"||e==="fullscreen"){let o=e==="animation"?t.giaRaw?.effectSlot:t.giaRaw?.fullscreenEffectSlot;a.animationId=t.animationId??o??null,a.playSoundEffect=t.playSoundEffect??null,e==="animation"&&(a.layer=t.layer??null);let l=e==="animation"?"effectSlot":"fullscreenEffectSlot";Object.hasOwn(t.giaRaw||{},l)||(a.giaRaw[l]=String(a.animationId??""))}if(t.children)for(let o of t.children)a.children.push(o);return a}function st(){yi(1);let e=H("server-container",{id:"sc1",name:"\u5BA2\u6237\u7AEF\u63A7\u4EF6\u5BB9\u5668"}),t=H("container",{id:"n1",name:"\u5BB9\u5668\u8282\u70B9",isRootContainer:!0}),i=H("textbox",{id:"n2",name:"\u6587\u672C\u6846",text:"\u6587\u672C"}),n=H("cursor",{id:"n3",name:"\u5149\u6807\u68C0\u6D4B\u533A\u57DF"}),r=H("reference",{id:"n4",name:"\u6A21\u677F\u5F15\u7528\u63A7\u4EF6"}),a=H("grid",{id:"n5",name:"\u7F51\u683C\u89C6\u7A97"}),o=H("button",{id:"n6",name:"\u9884\u8BBE\u6309\u94AE"}),l=H("textwindow",{id:"n7",name:"\u6587\u672C\u89C6\u7A97"}),u=H("keyhint",{id:"n8",name:"\u6309\u952E\u63D0\u793A"}),s=H("image",{id:"n9",name:"\u56FE\u7247",imageId:100005}),f=H("animation",{id:"n10",name:"\u754C\u9762\u52A8\u6548"}),d=H("fullscreen",{id:"n11",name:"\u5168\u5C4F\u52A8\u6548"}),g=(p,m,y)=>{for(let w of Object.values(p.transformByPlatform))w.offset={x:m,y}};return g(i,-300,250),g(n,-300,140),g(r,-300,30),g(a,-300,-100),g(o,0,0),g(l,300,250),g(u,300,140),g(s,300,30),g(f,300,-100),t.children.push(i,n,r,a,o,l,u,s,f,d),e.children.push(t),yi(12),_r(e),{version:1,layoutSchemaVersion:me,meta:{name:"\u672A\u547D\u540D\u754C\u9762\u63A7\u4EF6\u7EC4",assetType:"server-control-template",sourceFormat:"authoring",sourceFile:""},canvasId:"pc-16-9",selectedId:"n2",root:e}}function Et(){yi(1);let e=H("server-container",{id:"sc1",name:"\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F"}),t=H("container",{id:"n1",guid:1073742100,name:"Lua\u5B9E\u4F8B\u5316\u9762\u677F"}),i=H("textbox",{id:"n2",guid:1073742101,name:"\u6A21\u677F\u6807\u9898",text:"\u5BA2\u6237\u7AEF\u6A21\u677F\u5DF2\u5B9E\u4F8B\u5316",fontSize:28,horizontalAlignment:"Middle"}),n=H("image",{id:"n3",guid:1073742102,name:"\u6A21\u677F\u56FE\u6807",imageId:100005}),r=H("button",{id:"n4",guid:1073742103,name:"\u786E\u8BA4\u6309\u94AE"}),a=H("textbox",{id:"n5",guid:1073742104,name:"\u6309\u94AE\u6587\u5B57",text:"\u786E\u8BA4",horizontalAlignment:"Middle",verticalAlignment:"Top"}),o=(s,f,d)=>{for(let g of Object.values(s.transformByPlatform))g.offset={x:f,y:d}};((s,f,d)=>{for(let g of Object.values(s.transformByPlatform))g.size={x:f,y:d}})(t,520,320),o(i,0,110),o(n,0,0),o(r,0,-110),r.children.push(a),t.children.push(i,n,r),e.children.push(t),yi(6);let u={version:1,layoutSchemaVersion:me,meta:{name:"Lua\u5B9E\u4F8B\u5316\u9762\u677F",assetType:"client-control-template",sourceFormat:"authoring",sourceFile:"",gameVersion:hi,giaOwnerUid:114514,giaFileId:1073741829,giaFileName:"\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F\u5217\u8868.gia"},canvasId:"pc-16-9",selectedId:"n1",root:e};return Ve(u),u}function W(e,t,i=null){t(e,i);for(let n of e.children||[])W(n,t,e)}function ce(e,t){let i=null;return W(e,n=>{n.id===t&&(i=n)}),i}function nn(e,t="n"){let i=en(t);for(;ce(e,i);)i=en(t);return i}function Le(e,t){let i=null;return W(e,(n,r)=>{n.id===t&&(i=r)}),i}function rn(e){let t=e.root||e;return t.kind==="container"?t:(t.children||[]).find(i=>i.kind==="container")||(t.children||[])[0]||t}function jt(e){if(e.meta?.assetType!=="client-control-template")return rn(e);let t=ce(e.root,e.selectedId);if(!t||t.kind==="server-container")return e.root.children?.[0]||e.root;let i=Le(e.root,t.id);for(;i&&i.kind!=="server-container";)t=i,i=Le(e.root,t.id);return t}function an(e){ot(e);let t={id:e.id,name:e.name,guid:e.guid,giaRelatedGuids:e.giaRelatedGuids,giaInfoIndex:e.giaInfoIndex,giaInfoIndexSource:e.giaInfoIndexSource,scriptMappingIds:e.scriptMappingIds,giaRaw:e.giaRaw,active:e.active,visible:e.visible,canControllerFocus:e.canControllerFocus,syncAllDevices:e.syncAllDevices,transformByPlatform:e.transformByPlatform};e.kind==="container"&&(t.isolateNavigation=e.isolateNavigation,t.disableKeyEventPassthrough=e.disableKeyEventPassthrough,t.disableCursorEventPassthrough=e.disableCursorEventPassthrough,t.showCursor=e.showCursor),(e.kind==="textbox"||e.kind==="textwindow")&&(t.fontSize=e.fontSize,t.adaptiveFontSize=e.adaptiveFontSize,t.minimumFontSize=e.minimumFontSize,t.fontColor=e.fontColor,t.bgColor=e.bgColor,t.enableOutline=e.enableOutline,t.outlineColor=e.outlineColor,t.horizontalAlignment=e.horizontalAlignment,t.verticalAlignment=e.verticalAlignment,t.text=e.text??"",e.kind==="textwindow"&&(t.interactable=e.interactable,t.showScrollBar=e.showScrollBar)),e.kind==="image"&&(t.imageSource=e.imageSource,t.imageType=e.imageType,t.imageId=e.imageId,t.imageColor=e.imageColor,t.enableMask=e.enableMask,t.enableSoftEdge=e.enableSoftEdge,t.softEdgeMode=e.softEdgeMode,t.softEdgeWidthX=e.softEdgeWidthX,t.softEdgeWidthY=e.softEdgeWidthY,t.horizontalSoftRange=e.horizontalSoftRange,t.verticalSoftRange=e.verticalSoftRange,t.enableFill=e.enableFill,t.fillType=e.fillType,t.fillHorizontalType=e.fillHorizontalType,t.fillVerticalType=e.fillVerticalType,t.fillRadial90Type=e.fillRadial90Type,t.fillRadialType=e.fillRadialType,t.fillAmount=e.fillAmount,t.reverseMaskArea=e.reverseMaskArea??e.reverseMask),e.kind==="button"&&(t.raycastTarget=e.raycastTarget,t.interactable=e.interactable,t.clickAudioId=e.clickAudioId,t.unavailableChildId=e.unavailableChildId??null,t.hoverChildId=e.hoverChildId??null,t.pressedChildId=e.pressedChildId??null,t.selectedChildId=e.selectedChildId??null),e.kind==="cursor"&&(t.raycastTarget=e.raycastTarget),e.kind==="reference"&&(t.referencedPrefabId=e.referencedPrefabId??null),e.kind==="grid"&&(t.itemPrefabId=e.itemPrefabId??null,t.raycastTarget=e.raycastTarget,t.interactable=e.interactable,t.showScrollBar=e.showScrollBar,t.scrollDirection=e.scrollDirection,t.layoutConstraint=e.layoutConstraint,t.layoutConstraintFixedCount=e.layoutConstraintFixedCount??null,t.cellSizeX=e.cellSizeX,t.cellSizeY=e.cellSizeY,t.spacingX=e.spacingX,t.spacingY=e.spacingY,t.padding1X=e.padding1X,t.padding1Y=e.padding1Y,t.padding2X=e.padding2X,t.padding2Y=e.padding2Y,t.previewCount=e.previewCount),e.kind==="keyhint"&&(t.keyboardKeyCode=e.keyboardKeyCode??null,t.controllerKeyCode=e.controllerKeyCode??null),(e.kind==="animation"||e.kind==="fullscreen")&&(t.animationId=e.animationId??null,t.playSoundEffect=e.playSoundEffect??null,e.kind==="animation"&&(t.layer=e.layer??null)),t.isRootContainer=e.kind==="container"&&Wo(e.transformByPlatform);let i=H(e.kind,t);return i.children=(e.children||[]).map(n=>an(n)),i}function Wo(e){let t=e&&(e.KEYBOARD||Object.values(e)[0]);return t?Math.abs(t.anchorMin?.x??.5)<1e-4&&Math.abs(t.anchorMin?.y??.5)<1e-4&&Math.abs((t.anchorMax?.x??.5)-1)<1e-4&&Math.abs((t.anchorMax?.y??.5)-1)<1e-4:!1}function Tr(e,t,i={}){if(e.kind==="server-container"&&t!=="container")throw new Error("server container only accepts container nodes");let n=H(t,i);return e.children.push(n),n}function Pr(e,t){if(e.id===t)throw new Error("cannot remove root");let i=Le(e,t);if(!i)return!1;let n=i.children.findIndex(r=>r.id===t);return n<0?!1:(i.children.splice(n,1),!0)}var Rr=1e-4;function Jo(e,t){return Math.abs(e.anchorMax[t]-e.anchorMin[t])>Rr&&Math.abs(e.size[t])<=Rr}function Zo(e,t,i){if(!(t.width>0)||!(t.height>0))throw new Error("source parent must have positive size");if(!(i.width>0)||!(i.height>0))throw new Error("target parent must have positive size");let n=Ge(t,e),r=(n.centerX-t.left)/t.width,a=(n.centerY-t.bottom)/t.height,o=rt(i,e,{posX:i.left+r*i.width,posY:i.bottom+a*i.height,width:n.width,height:n.height});for(let l of["x","y"])Jo(e,l)&&(o.offset[l]=e.offset[l],o.size[l]=e.size[l]);return o}function Mr({transformByPlatform:e,source:t,canvasId:i,syncAllDevices:n,sourceParentBox:r=ge(i),targetParentBoxByPlatform:a={}}){Ke(e);let o=at(i),l={};for(let u of le)u===o?l[u]=Oe(t):n!==!1?l[u]=Zo(t,r,a[u]||ge(vt[u])):l[u]=lt(e,u);return Ke(l),l}function We(e,t){return lt(e,at(t))}function Nr(e,t){let i=[];function n(r){t[r.id]&&i.push(t[r.id]);let a=r.children||[];for(let o=a.length-1;o>=0;o-=1)n(a[o])}return n(e),i}function Je(e,t,i=at(t)){let n=ge(t),r={};function a(o,l,u){let s=lt(o.transformByPlatform,i),f=Ge(l,s),d=o.kind==="server-container"?u:Ut(u,f,s),g=Sr(f,d);r[o.id]={...f,...Wi(f),id:o.id,kind:o.kind,name:o.name,visible:o.visible!==!1,active:o.active!==!1,rotationZ:s.rotation.z,renderLeft:g.left,renderBottom:g.bottom,renderWidth:g.width,renderHeight:g.height,renderRotationZ:g.rotationZ,renderMatrix:d,primitive:o.kind==="image"?It(o.imageId,o.imageSource):null,...o.kind==="textbox"||o.kind==="textwindow"?{text:o.text??"",fontSize:o.fontSize,fontColor:o.fontColor,bgColor:o.bgColor,enableOutline:o.enableOutline!==!1,outlineColor:o.outlineColor,horizontalAlignment:o.horizontalAlignment,verticalAlignment:o.verticalAlignment}:{},...o.kind==="image"?{imageSource:o.imageSource,imageType:o.imageType??null,imageId:o.imageId,imageColor:o.imageColor,enableMask:o.enableMask===!0,enableSoftEdge:o.enableSoftEdge===!0,softEdgeMode:o.softEdgeMode,softEdgeWidthX:o.softEdgeWidthX,softEdgeWidthY:o.softEdgeWidthY,horizontalSoftRange:o.horizontalSoftRange,verticalSoftRange:o.verticalSoftRange,enableFill:o.enableFill===!0,fillType:o.fillType,fillHorizontalType:o.fillHorizontalType,fillVerticalType:o.fillVerticalType,fillRadial90Type:o.fillRadial90Type,fillRadialType:o.fillRadialType,fillAmount:o.fillAmount,reverseMaskArea:o.reverseMaskArea===!0}:{},...o.kind==="button"?{raycastTarget:o.raycastTarget!==!1,interactable:o.interactable!==!1,clickAudioId:o.clickAudioId,unavailableChildId:o.unavailableChildId??null,hoverChildId:o.hoverChildId??null,pressedChildId:o.pressedChildId??null,selectedChildId:o.selectedChildId??null}:{}};let p=o.kind==="server-container"?l:f;for(let m of o.children||[])a(m,p,d)}return a(e,n,Ct()),{canvas:n,boxes:r}}function on(e,t){let i=[];function n(r,a,o=null,l=[],u=0,s=1,f=e.id){i.push({id:r.id,guid:t?.get(r.id)??(r.guid||0),kind:r.kind,name:r.name,label:St[r.kind]||r.kind,depth:a,parentId:o,ancestorIds:l,siblingIndex:u,siblingCount:s,templateId:f,childCount:(r.children||[]).length,incomplete:!pi.includes(r.kind)});let d=r.children||[];for(let g=0;g<d.length;g+=1)n(d[g],a+1,r.id,[...l,r.id],g,d.length,f)}return n(e,0),i}function T(e,t,i,n,r={}){return{key:e,label:t,type:i,value:n,...r}}function Fr(e,t,i,n){if(!e)return null;let r=We(e.transformByPlatform,t),a=Wi(i),o=[T("name","\u540D\u79F0","string",e.name),T("active","\u521D\u59CB\u6FC0\u6D3B","bool",e.active!==!1),T("visible","\u521D\u59CB\u53EF\u89C1\u6027","bool",e.visible!==!1),T("canControllerFocus","\u53EF\u88AB\u624B\u67C4\u6447\u6746\u5BFC\u822A\u9009\u4E2D","bool",e.canControllerFocus===!0),T("posX","\u4F4D\u7F6E X","number",a.posX,{computed:!0}),T("posY","\u4F4D\u7F6E Y","number",a.posY,{computed:!0}),T("width","\u5927\u5C0F W","number",a.width,{computed:!0}),T("height","\u5927\u5C0F H","number",a.height,{computed:!0}),T("rotationZ","\u65CB\u8F6C Z","number",r.rotation.z),T("syncAllDevices","\u540C\u6B65\u4FE1\u606F\u81F3\u6240\u6709\u8BBE\u5907","bool",e.syncAllDevices!==!1),T("anchorType","\u951A\u70B9\u7C7B\u578B","enum",wr(r),{options:[{value:"center",label:"\u5C45\u4E2D"},{value:"top-left",label:"\u5DE6\u4E0A"},{value:"top",label:"\u4E0A\u65B9"},{value:"top-right",label:"\u53F3\u4E0A"},{value:"left",label:"\u5DE6\u4FA7"},{value:"right",label:"\u53F3\u4FA7"},{value:"bottom-left",label:"\u5DE6\u4E0B"},{value:"bottom",label:"\u4E0B\u65B9"},{value:"bottom-right",label:"\u53F3\u4E0B"},{value:"stretch",label:"\u53CC\u5411\u62C9\u4F38"},{value:"stretch-horizontal",label:"\u6C34\u5E73\u62C9\u4F38"},{value:"stretch-vertical",label:"\u5782\u76F4\u62C9\u4F38"},{value:"custom",label:"\u81EA\u5B9A\u4E49"}]}),T("anchorMinX","\u951A\u70B9 Min X","number",r.anchorMin.x),T("anchorMinY","\u951A\u70B9 Min Y","number",r.anchorMin.y),T("anchorMaxX","\u951A\u70B9 Max X","number",r.anchorMax.x),T("anchorMaxY","\u951A\u70B9 Max Y","number",r.anchorMax.y),T("pivotX","\u4E2D\u5FC3 X","number",r.pivot.x),T("pivotY","\u4E2D\u5FC3 Y","number",r.pivot.y)];if(e.kind==="container"&&o.push(T("isolateNavigation","\u9694\u79BB\u624B\u67C4\u5BFC\u822A","bool",e.isolateNavigation===!0),T("disableKeyEventPassthrough","\u5C4F\u853D\u6309\u952E\u4E8B\u4EF6\u7A7F\u900F","bool",e.disableKeyEventPassthrough===!0),T("disableCursorEventPassthrough","\u5C4F\u853D\u533A\u57DF\u5185\u70B9\u51FB\u4E8B\u4EF6\u7A7F\u900F","bool",e.disableCursorEventPassthrough===!0),T("showCursor","\u663E\u793A\u5E38\u9A7B\u5149\u6807","bool",e.showCursor===!0)),e.kind==="textbox"||e.kind==="textwindow"){let l=e.giaRaw?.textAlign,u=[0,1,2].includes(l)?e.horizontalAlignment||"Left":`__unrecognized:${l}`;o.push(T("fontSize","\u5B57\u53F7","number",e.fontSize),T("adaptiveFontSize","\u5B57\u53F7\u81EA\u9002\u5E94","bool",e.adaptiveFontSize===!0),T("minimumFontSize","\u6700\u5C0F\u5B57\u53F7","number",e.minimumFontSize),T("fontColor","\u6587\u672C\u8272","color",e.fontColor),T("bgColor","\u80CC\u666F\u8272","color",e.bgColor),T("enableOutline","\u542F\u7528\u63CF\u8FB9","bool",e.enableOutline!==!1),T("outlineColor","\u63CF\u8FB9\u8272","color",e.outlineColor),T("horizontalAlignment","\u6C34\u5E73\u5BF9\u9F50","enum",u,{...[0,1,2].includes(l)?{}:{unknownValue:l},options:[{value:"Left",label:"\u5DE6\u5BF9\u9F50"},{value:"Middle",label:"\u5C45\u4E2D"},{value:"Right",label:"\u53F3\u5BF9\u9F50"}]}),T("verticalAlignment","\u5782\u76F4\u5BF9\u9F50","enum",e.verticalAlignment||"Top",{options:[{value:"Top",label:"\u9876\u90E8"},{value:"Middle",label:"\u5C45\u4E2D"},{value:"Bottom",label:"\u5E95\u90E8"}]}),T("text","\u6587\u672C","text",e.text??""))}if(e.kind==="image"){let l=e.giaRaw?.imageFillType,u=[1,2,3,4,5].includes(l)?e.fillType:`__unrecognized:${l}`;o.push(T("imageSource","\u56FE\u7247\u6E90","enum",e.imageSource,{options:[{value:"StaticReference",label:"\u9759\u6001\u5F15\u7528"},{value:"Prefab",label:"\u5143\u4EF6"}]}),T("imageId","imageId","number",e.imageId??0),T("imageType","\u56FE\u7247\u7C7B\u578B","enum",e.imageType??null,{options:[{value:"Basic",label:"\u57FA\u7840"},{value:"Stretch",label:"\u62C9\u4F38"}]}),T("imageColor","\u586B\u5145\u8272","color",e.imageColor),T("enableMask","\u5F00\u542F\u906E\u7F69","bool",e.enableMask===!0),T("enableSoftEdge","\u8FB9\u7F18\u7FBD\u5316","bool",e.enableSoftEdge===!0,{gia:"W"}),T("softEdgeMode","\u7FBD\u5316\u6A21\u5F0F","enum",e.softEdgeMode,{options:[{value:"Percentage",label:"\u767E\u5206\u6BD4"},{value:"Pixel",label:"\u50CF\u7D20"}]}),T("softEdgeWidthX","\u7FBD\u5316\u5BBD\u5EA6 X","number",e.softEdgeWidthX),T("softEdgeWidthY","\u7FBD\u5316\u5BBD\u5EA6 Y","number",e.softEdgeWidthY),T("horizontalSoftRange","\u6C34\u5E73\u7FBD\u5316\u8303\u56F4","number",e.horizontalSoftRange),T("verticalSoftRange","\u5782\u76F4\u7FBD\u5316\u8303\u56F4","number",e.verticalSoftRange),T("enableFill","\u6309\u8FDB\u5EA6\u586B\u5145","bool",e.enableFill===!0,{gia:"W"}),T("fillType","\u5F62\u72B6","enum",u,{...[1,2,3,4,5].includes(l)?{}:{unknownValue:l},options:[{value:"Horizontal",label:"\u6A2A\u5411"},{value:"Vertical",label:"\u7EB5\u5411"},{value:"Radial90",label:"90\u5EA6\u73AF\u7ED5"},{value:"Radial180",label:"180\u5EA6\u73AF\u7ED5"},{value:"Radial360",label:"360\u5EA6\u73AF\u7ED5"}]}),T("fillHorizontalType","\u65B9\u5411","enum",e.fillHorizontalType,{options:[{value:"Left",label:"\u4ECE\u5DE6\u81F3\u53F3"},{value:"Right",label:"\u4ECE\u53F3\u81F3\u5DE6"}]}),T("fillVerticalType","\u65B9\u5411","enum",e.fillVerticalType,{options:[{value:"Bottom",label:"\u4ECE\u4E0B\u81F3\u4E0A"},{value:"Top",label:"\u4ECE\u4E0A\u81F3\u4E0B"}]}),T("fillRadial90Type","\u8D77\u70B9","enum",e.fillRadial90Type,{options:[{value:"BottomLeft",label:"\u5DE6\u4E0B"},{value:"TopLeft",label:"\u5DE6\u4E0A"},{value:"TopRight",label:"\u53F3\u4E0A"},{value:"BottomRight",label:"\u53F3\u4E0B"}]}),T("fillRadialType","\u8D77\u70B9","enum",e.fillRadialType,{options:[{value:"Bottom",label:"\u4E0B\u65B9"},{value:"Left",label:"\u5DE6\u4FA7"},{value:"Top",label:"\u4E0A\u65B9"},{value:"Right",label:"\u53F3\u4FA7"}]}),T("fillAmount","\u8FDB\u5EA6","percent",e.fillAmount),T("reverseMaskArea","\u906E\u7F69\u533A\u57DF\u53CD\u8F6C","bool",e.reverseMaskArea===!0,{gia:"W"}))}if(e.kind==="button"){let l=[{value:"",label:"\u672A\u8BBE\u7F6E"},...(e.children||[]).map(u=>({value:u.id,label:`${u.name} \xB7 ${u.id}`}))];o.push(T("raycastTarget","\u53EF\u88AB\u5149\u6807\u5C04\u7EBF\u68C0\u6D4B","bool",e.raycastTarget!==!1),T("interactable","\u6309\u94AE\u662F\u5426\u53EF\u7528","bool",e.interactable!==!1),T("unavailableChildId","\u4E0D\u53EF\u7528\u72B6\u6001\u8282\u70B9","node",e.unavailableChildId,{options:l,gia:"W"}),T("hoverChildId","\u60AC\u505C\u72B6\u6001\u8282\u70B9","node",e.hoverChildId,{options:l,gia:"W"}),T("pressedChildId","\u6309\u4E0B\u72B6\u6001\u8282\u70B9","node",e.pressedChildId,{options:l,gia:"W"}),T("selectedChildId","\u9009\u4E2D\u72B6\u6001\u8282\u70B9","node",e.selectedChildId,{options:l,gia:"W"}),T("clickAudioId","\u70B9\u51FB\u97F3\u6548","number",e.clickAudioId))}return e.kind==="reference"&&o.push(T("referencedPrefabId","\u5F15\u7528\u63A7\u4EF6\u6A21\u677F\u7D22\u5F15","string",e.referencedPrefabId??"")),(e.kind==="textwindow"||e.kind==="grid")&&o.push(T("interactable","\u5141\u8BB8\u6EDA\u52A8\u4EA4\u4E92","bool",e.interactable!==!1),T("showScrollBar","\u663E\u793A\u6EDA\u52A8\u6761","bool",e.showScrollBar!==!1)),e.kind==="grid"&&o.push(T("itemPrefabId","\u5217\u8868\u9879\u6A21\u677F\u7D22\u5F15","number",e.itemPrefabId??0),T("raycastTarget","\u53EF\u88AB\u5149\u6807\u5C04\u7EBF\u68C0\u6D4B","bool",e.raycastTarget!==!1),T("scrollDirection","\u6EDA\u52A8\u65B9\u5411","enum",e.scrollDirection,{options:[{value:"Vertical",label:"\u7EB5\u5411"},{value:"Horizontal",label:"\u6A2A\u5411"}]}),T("layoutConstraint","\u6392\u5217\u9650\u5236","enum",e.layoutConstraint,{options:[{value:"AutoWrap",label:"\u81EA\u52A8\u6362\u884C"},{value:"Fixed",label:"\u56FA\u5B9A\u884C\u5217\u6570"}]}),T("layoutConstraintFixedCount","\u6BCF\u884C\u6216\u6BCF\u5217\u6570\u91CF","number",e.layoutConstraintFixedCount??1),T("cellSizeX","\u5217\u8868\u9879\u5927\u5C0F W","number",e.cellSizeX,{evidence:"W"}),T("cellSizeY","\u5217\u8868\u9879\u5927\u5C0F H","number",e.cellSizeY,{evidence:"W"}),T("spacingX","\u5217\u8868\u9879\u95F4\u9694 X","number",e.spacingX,{evidence:"W"}),T("spacingY","\u5217\u8868\u9879\u95F4\u9694 Y","number",e.spacingY,{evidence:"W"}),T("padding1X","\u8FB9\u8DDD\u5411\u91CF 1 X","number",e.padding1X,{evidence:"W"}),T("padding1Y","\u8FB9\u8DDD\u5411\u91CF 1 Y","number",e.padding1Y,{evidence:"W"}),T("padding2X","\u8FB9\u8DDD\u5411\u91CF 2 X","number",e.padding2X,{evidence:"W"}),T("padding2Y","\u8FB9\u8DDD\u5411\u91CF 2 Y","number",e.padding2Y,{evidence:"W"}),T("previewCount","\u9884\u89C8\u6570\u91CF","number",e.previewCount)),e.kind==="keyhint"&&o.push(T("keyboardKeyCode","\u952E\u9F20\u6309\u952E","number",e.keyboardKeyCode??e.giaRaw?.keyHintField502??1,{gia:"W"}),T("controllerKeyCode","\u624B\u67C4\u6309\u952E","number",e.controllerKeyCode??e.giaRaw?.keyHintField501??1)),(e.kind==="animation"||e.kind==="fullscreen")&&o.push(T("animationId",e.kind==="animation"?"\u52A8\u6548\u7D22\u5F15":"\u5168\u5C4F\u52A8\u6548\u7D22\u5F15","string",e.animationId??"")),(!pi.includes(e.kind)||e.kind==="textwindow"||e.kind==="grid")&&o.push(T("incomplete","\u5B8C\u6574\u5EA6","note",e.kind==="textwindow"||e.kind==="grid"?"\u8BD5\u73A9\u652F\u6301\u57FA\u7840\u6EDA\u52A8\uFF1B\u6EDA\u52A8\u4EA4\u4E92\u3001\u6EDA\u52A8\u6761\u53CA\u5217\u8868\u914D\u7F6E\u4EE5 JSON/Lua \u4E3A\u51C6\uFF0C\u76F8\u5173 GIA \u5F00\u5173\u6620\u5C04\u5C1A\u672A\u6838\u5B9E\u3002":"\u672C\u9636\u6BB5\u4EC5\u516C\u5171\u53D8\u6362\uFF0C\u4E1A\u52A1\u69FD\u4E0D\u5B8C\u6574")),{id:e.id,guid:n?.get(e.id)??(e.guid||0),kind:e.kind,label:St[e.kind]||e.kind,incomplete:!pi.includes(e.kind),fields:o}}function Or(e,t,i){let n=(Array.isArray(e)?e:Object.values(e)).filter(r=>r.kind!=="server-container");for(let r=n.length-1;r>=0;r-=1){let a=n[r];if(!a.visible||!a.active)continue;let o=a.renderMatrix&&xt(a.renderMatrix),l=o&&Ee(o,t,i);if(l&&l.x>=a.left&&l.x<=a.right&&l.y>=a.bottom&&l.y<=a.top)return a.id}return null}import Qo from"protobufjs";var el=String.raw`
1
+ import{parentPort as fr}from"node:worker_threads";import{existsSync as gi,readFileSync as Bs}from"node:fs";import{randomUUID as So}from"node:crypto";import{isAbsolute as gr,win32 as yr}from"node:path";function pr(e,t=!1){let i=String(e??"").trim().replaceAll("\\","/");if(t&&(!i||i==="."))return"";if(!i||gr(i)||yr.isAbsolute(i)||i.split("/").some(n=>!n||n==="."||n===".."||/[<>:"|?*\x00-\x1f]/.test(n)||/[. ]$/.test(n)||/^(con|prn|aux|nul|com[1-9]|lpt[1-9])(?:\.|$)/i.test(n)))throw new Error("\u811A\u672C\u76EE\u5F55/\u8DEF\u5F84\u5FC5\u987B\u662F\u6709\u6548\u7684\u76F8\u5BF9\u8DEF\u5F84\uFF0C\u4E0D\u80FD\u5305\u542B .. \u6216 Windows \u7279\u6B8A\u6587\u4EF6\u540D");return i}function en(e){if(e==null)return null;if(e.version!==1)throw new Error("unsupported scriptSync version");let t=String(e.clientImportRoot||"").trim();if(!gr(t)&&!yr.isAbsolute(t))throw new Error("\u5B9E\u673A\u5BFC\u5165\u6839\u76EE\u5F55\u5FC5\u987B\u662F\u7EDD\u5BF9\u8DEF\u5F84");return{version:1,workspaceDir:pr(e.workspaceDir,!0),clientImportRoot:t,clientSubdir:pr(e.clientSubdir,!0)}}import{basename as Yt,dirname as Us,isAbsolute as js,join as wo,resolve as Io}from"node:path";var Bo=[[10003004,10003004],[10005001,10005142],[10006001,10006002],[10007002,10007002],[10008001,10008001],[10009001,10009011],[20001001,20001074],[20001076,20001121],[20001123,20001156],[20001158,20001302],[20001304,20001568],[20001570,20001999],[20002001,20002755],[20002757,20002999],[20003001,20003455],[30001001,30001016],[30002001,30002017],[30003001,30003011],[30004001,30004001],[30005001,30005020],[30006001,30006026],[30007001,30007013],[30008001,30008011]];function br(e){return!Number.isSafeInteger(e)||!Bo.some(([t,i])=>e>=t&&e<=i)?null:e===10003004||e===10008001?128:256}var Uo=[[100001,100006],[100101,100213],[101001,101018],[101020,101028],[101030,101046],[101048,101048],[101050,101054],[101056,101080],[102001,102052],[103001,103148],[104001,104010],[105001,105140],[105142,105219],[105221,105317],[106001,106047],[106049,106096],[107001,107007],[107010,107020],[107031,107092],[107094,107180],[107183,107201],[107203,107205],[107207,107228],[107231,107278],[107280,107402],[108001,108017],[108019,108020],[109001,109031],[109033,109034],[109036,109075],[110001,110053],[111001,111139],[112001,112042]];function qe(e){return e==null||e===""?"StaticReference":typeof e=="string"?e:typeof e.Name=="string"?e.Name:"Unknown"}function vr(e,t){return qe(t)==="StaticReference"&&tn(e,t)}function tn(e,t){let i=qe(t);return i==="Prefab"?br(e)!==null:i==="StaticReference"&&Number.isSafeInteger(e)&&e>100006&&Uo.some(([n,r])=>e>=n&&e<=r)}var wi="7.1.0",se=Object.freeze(["KEYBOARD","TOUCHSCREEN","CONTROLLER_CONSOLE","CONTROLLER_MOBILE"]),ie=Object.freeze({"pc-16-9":{id:"pc-16-9",device:"pc",platform:"KEYBOARD",width:1600,height:900,ratio:"16:9",luaDevice:"KeyboardAndMouse",label:"PC 1600\xD7900"},"pc-21-9":{id:"pc-21-9",device:"pc",platform:"KEYBOARD",width:2100,height:900,ratio:"21:9",luaDevice:"KeyboardAndMouse",label:"PC 2100\xD7900"},"mobile-16-9":{id:"mobile-16-9",device:"mobile",platform:"TOUCHSCREEN",width:1280,height:720,ratio:"16:9",luaDevice:"Mobile",label:"\u624B\u673A 1280\xD7720"},"mobile-19.5-9":{id:"mobile-19.5-9",device:"mobile",platform:"TOUCHSCREEN",width:1560,height:720,ratio:"19.5:9",luaDevice:"Mobile",label:"\u624B\u673A 1560\xD7720"},"mobile-4-3":{id:"mobile-4-3",device:"mobile",platform:"TOUCHSCREEN",width:1280,height:960,ratio:"4:3",luaDevice:"Mobile",label:"\u624B\u673A 1280\xD7960"}}),Ii="pc-16-9",be=2,Ct=Object.freeze({KEYBOARD:"pc-16-9",TOUCHSCREEN:"mobile-16-9",CONTROLLER_CONSOLE:"pc-16-9",CONTROLLER_MOBILE:"mobile-16-9"}),kt=Object.freeze({"server-container":"\u5BA2\u6237\u7AEF\u63A7\u4EF6\u5BB9\u5668",container:"\u5BB9\u5668\u8282\u70B9",textbox:"\u6587\u672C\u6846",image:"\u56FE\u7247",button:"\u9884\u8BBE\u6309\u94AE",cursor:"\u5149\u6807\u68C0\u6D4B\u533A\u57DF",grid:"\u7F51\u683C\u89C6\u7A97",reference:"\u6A21\u677F\u5F15\u7528\u63A7\u4EF6",textwindow:"\u6587\u672C\u89C6\u7A97",keyhint:"\u6309\u952E\u63D0\u793A",animation:"\u754C\u9762\u52A8\u6548",fullscreen:"\u5168\u5C4F\u52A8\u6548"}),xi=Object.freeze(["server-container","container","textbox","cursor","reference","grid","image","button","textwindow","keyhint","animation","fullscreen"]),Sr=Object.freeze({"server-container":null,container:[150,150],textbox:[100,40],image:[80,80],button:[150,50],cursor:[150,50],grid:[80,80],reference:[80,80],textwindow:[100,40],keyhint:[40,40],animation:[100,100],fullscreen:null}),jo=Object.freeze({100001:"rect",100002:"circle",100003:"triangle",100004:"fourstar",100005:"fivestar",100006:"ring"});function Et(e,t){return qe(t)==="StaticReference"&&jo[e]||(tn(e,t)?"sprite":"missing")}var wr=50888,Wt=Object.freeze({font:4294967295,bg:16777215,outline:858993459,image:4294967295});function At(e,t="$",i=new Set){if(e===void 0)throw new Error(`undefined at ${t}`);if(typeof e=="number"&&!Number.isFinite(e))throw new Error(`non-finite number at ${t}`);if(typeof e=="bigint"||typeof e=="function"||typeof e=="symbol")throw new Error(`non-JSON value at ${t}`);if(!(e===null||typeof e!="object")){if(i.has(e))throw new Error(`circular value at ${t}`);if(i.add(e),Array.isArray(e))e.forEach((n,r)=>At(n,`${t}[${r}]`,i));else for(let[n,r]of Object.entries(e))At(r,`${t}.${n}`,i);i.delete(e)}}function V(e){return At(e),JSON.parse(JSON.stringify(e))}function Ir(e,t="$"){At(e,t)}function xr(e){return ie[e]||ie[Ii]}function Jt(e,t=0,i=0){return!e||typeof e!="object"?{x:t,y:i}:{x:Number(e.x??t),y:Number(e.y??i)}}function Ho(e){return!e||typeof e!="object"?{x:1,y:1,z:1}:{x:Number(e.x??1),y:Number(e.y??1),z:Number(e.z??1)}}function Ko(e){return!e||typeof e!="object"?{x:0,y:0,z:0}:{x:Number(e.x??0),y:Number(e.y??0),z:Number(e.z??0)}}function Ci({layout:e="center",size:t=[100,40],offset:i=[0,0]}={}){return e==="stretch"?{scale:{x:1,y:1,z:1},rotation:{x:0,y:0,z:0},anchorMin:{x:0,y:0},anchorMax:{x:1,y:1},offset:{x:0,y:0},size:{x:0,y:0},pivot:{x:.5,y:.5}}:{scale:{x:1,y:1,z:1},rotation:{x:0,y:0,z:0},anchorMin:{x:.5,y:.5},anchorMax:{x:.5,y:.5},offset:{x:Number(i[0]??0),y:Number(i[1]??0)},size:{x:Number(t[0]??0),y:Number(t[1]??0)},pivot:{x:.5,y:.5}}}function ze(e){let t=e||Ci();return{scale:Ho(t.scale),rotation:Ko(t.rotation),anchorMin:Jt(t.anchorMin??t.anchor_min,.5,.5),anchorMax:Jt(t.anchorMax??t.anchor_max,.5,.5),offset:Jt(t.offset,0,0),size:Jt(t.size,0,0),pivot:Jt(t.pivot,.5,.5)}}function de(e,t=0){let i=Number(e);return Number.isFinite(i)?i:t}function Ye(e,t){let i=e.width,n=e.height,r=e.left,a=e.bottom,o=t.anchorMin||{x:t.anchorMinX,y:t.anchorMinY},l=t.anchorMax||{x:t.anchorMaxX,y:t.anchorMaxY},u=t.offset||{x:t.anchoredPositionX,y:t.anchoredPositionY},s=t.size||{x:t.sizeDeltaX,y:t.sizeDeltaY},f=t.pivot||{x:t.pivotX,y:t.pivotY},h=de(o?.x,.5)*i,p=de(o?.y,.5)*n,g=de(l?.x,.5)*i,m=de(l?.y,.5)*n,y=de(s?.x),I=de(s?.y),A=de(f?.x,.5),x=de(f?.y,.5),G=g-h+y,z=m-p+I,q=r+h+de(u?.x)-y*A,J=a+p+de(u?.y)-I*x;return{left:q,bottom:J,width:G,height:z,right:q+G,top:J+z,centerX:q+G/2,centerY:J+z/2}}function _t(){return{a:1,b:0,c:0,d:1,tx:0,ty:0}}function qo(e,t){return{a:e.a*t.a+e.c*t.b,b:e.b*t.a+e.d*t.b,c:e.a*t.c+e.c*t.d,d:e.b*t.c+e.d*t.d,tx:e.a*t.tx+e.c*t.ty+e.tx,ty:e.b*t.tx+e.d*t.ty+e.ty}}function Te(e,t,i){return{x:e.a*t+e.c*i+e.tx,y:e.b*t+e.d*i+e.ty}}function Tt(e){let t=e.a*e.d-e.b*e.c;return!Number.isFinite(t)||Math.abs(t)<1e-8?null:{a:e.d/t,b:-e.b/t,c:-e.c/t,d:e.a/t,tx:(e.c*e.ty-e.d*e.tx)/t,ty:(e.b*e.tx-e.a*e.ty)/t}}function nn(e,t){let i=t.rotation||{x:t.localRotationX,y:t.localRotationY,z:t.localRotationZ},n=t.scale||{x:t.localScaleX,y:t.localScaleY},r=t.pivot||{x:t.pivotX,y:t.pivotY},a=de(i?.z)*Math.PI/180,o=Math.cos(a),l=Math.sin(a),u=de(i?.x)*Math.PI/180,s=de(i?.y)*Math.PI/180,f=Math.cos(u),h=Math.sin(u),p=Math.cos(s),g=Math.sin(s),m=H=>Math.abs(H)<1e-12?0:H,y=de(n?.x,1),I=de(n?.y,1),A=e.left+e.width*de(r?.x,.5),x=e.bottom+e.height*de(r?.y,.5),G=m(p*o+g*h*l)*y,z=m(f*l)*y,q=m(-p*l+g*h*o)*I,J=m(f*o)*I;return{a:G,b:z,c:q,d:J,tx:A-G*A-q*x,ty:x-z*A-J*x}}function Zt(e,t,i){return qo(e||_t(),nn(t,i))}function Cr(e,t){let i=Te(t,e.centerX,e.centerY),n=Math.abs(e.width*Math.hypot(t.a,t.b)),r=Math.abs(e.height*Math.hypot(t.c,t.d));return{left:i.x-n/2,bottom:i.y-r/2,width:n,height:r,centerX:i.x,centerY:i.y,rotationZ:Math.atan2(t.b,t.a)*180/Math.PI}}function ve(e){let t=typeof e=="string"?xr(e):e;return{left:0,bottom:0,width:t.width,height:t.height,right:t.width,top:t.height,centerX:t.width/2,centerY:t.height/2}}function rn(e){return{posX:e.centerX,posY:e.centerY,width:e.width,height:e.height}}function lt(e,t,i){let n=ze(t),r=e.width,a=e.height,o=n.anchorMin.x*r,l=n.anchorMin.y*a,u=n.anchorMax.x*r,s=n.anchorMax.y*a,f=Number(i.width),h=Number(i.height),p=Number(i.posX),g=Number(i.posY),m=p-f/2,y=g-h/2;return n.size={x:f-(u-o),y:h-(s-l)},n.offset={x:m-e.left-o+n.size.x*n.pivot.x,y:y-e.bottom-l+n.size.y*n.pivot.y},n}function kr(e,t){let i=ze(e),r={"bottom-left":[[0,0],[0,0],[0,0]],bottom:[[.5,0],[.5,0],[.5,0]],"bottom-right":[[1,0],[1,0],[1,0]],left:[[0,.5],[0,.5],[0,.5]],center:[[.5,.5],[.5,.5],[.5,.5]],right:[[1,.5],[1,.5],[1,.5]],"top-left":[[0,1],[0,1],[0,1]],top:[[.5,1],[.5,1],[.5,1]],"top-right":[[1,1],[1,1],[1,1]],stretch:[[0,0],[1,1],[.5,.5]],"stretch-horizontal":[[0,.5],[1,.5],[.5,.5]],"stretch-vertical":[[.5,0],[.5,1],[.5,.5]]}[t];return r&&(i.anchorMin={x:r[0][0],y:r[0][1]},i.anchorMax={x:r[1][0],y:r[1][1]},i.pivot={x:r[2][0],y:r[2][1]}),i}function Er(e){let t=ze(e),i=(n,r)=>Math.abs(n-r)<1e-4;if(i(t.anchorMin.x,0)&&i(t.anchorMin.y,0)&&i(t.anchorMax.x,1)&&i(t.anchorMax.y,1))return"stretch";if(i(t.anchorMin.x,t.anchorMax.x)&&i(t.anchorMin.y,t.anchorMax.y)){let n=t.anchorMin.x,r=t.anchorMin.y,a=[[0,0,"bottom-left"],[.5,0,"bottom"],[1,0,"bottom-right"],[0,.5,"left"],[.5,.5,"center"],[1,.5,"right"],[0,1,"top-left"],[.5,1,"top"],[1,1,"top-right"]];for(let o of a)if(i(n,o[0])&&i(r,o[1]))return o[2]}return"custom"}function st(e){return xr(e).platform}function Ar(e){let t={};for(let i of se)t[i]=e(i);return t}var Lo={scale:["x","y","z"],rotation:["x","y","z"],anchorMin:["x","y"],anchorMax:["x","y"],offset:["x","y"],size:["x","y"],pivot:["x","y"]};function _r(e,t){for(let[i,n]of Object.entries(Lo))for(let r of n)if(!Number.isFinite(e?.[i]?.[r]))throw new Error(`${t}.${i}.${r} must be a finite number`)}function Le(e,t="transformByPlatform"){if(!e||typeof e!="object"||Array.isArray(e))throw new Error(`${t}: \u9700\u8981\u5B8C\u6574\u7684\u56DB\u5E73\u53F0\u5E03\u5C40`);for(let i of Object.keys(e))if(!se.includes(i))throw new Error(`${t}: unknown platform ${i}`);for(let i of se)_r(e[i],`${t}.${i}`)}function ut(e){if(Object.hasOwn(e,"transformByCanvas"))throw new Error(`${e.name||e.id||"\u63A7\u4EF6"}: \u4E0D\u518D\u652F\u6301 transformByCanvas\uFF1B\u8BF7\u4F7F\u7528\u56DB\u5E73\u53F0 transformByPlatform \u5E03\u5C40`);Le(e.transformByPlatform,`${e.name||e.id||"\u63A7\u4EF6"}.transformByPlatform`)}function ct(e,t){if(!se.includes(t))throw new Error(`unknown platform ${t}`);return _r(e?.[t],`transformByPlatform.${t}`),ze(e[t])}var Wo=Object.freeze([{key:"genericField501",label:"\u901A\u7528\u69FD field501",type:"number",defaultValue:0,wire:"GenericSlot.field501"},{key:"footerField505",label:"\u5C3E\u90E8\u69FD field505",type:"number",defaultValue:0,wire:"FooterSlot.field505"}]),Jo=Object.freeze({container:[],textbox:[{key:"textField501",label:"\u6587\u672C\u914D\u7F6E field501",type:"number",defaultValue:20,wire:"TextConfig.field501"},{key:"textField503",label:"\u6587\u672C\u914D\u7F6E field503",type:"number",defaultValue:12,wire:"TextConfig.field503"},{key:"textAlign",label:"\u6C34\u5E73\u5BF9\u9F50\u679A\u4E3E\u539F\u59CB\u503C",type:"enum",defaultValue:0,wire:"TextConfig.align",options:[{value:0,label:"0 \xB7 \u5DE6\u5BF9\u9F50"},{value:1,label:"1 \xB7 \u5C45\u4E2D"},{value:2,label:"2 \xB7 \u53F3\u5BF9\u9F50"}]}],textwindow:[{key:"textField501",label:"\u6587\u672C\u914D\u7F6E field501",type:"number",defaultValue:20,wire:"TextConfig.field501"},{key:"textField503",label:"\u6587\u672C\u914D\u7F6E field503",type:"number",defaultValue:12,wire:"TextConfig.field503"},{key:"textAlign",label:"\u6C34\u5E73\u5BF9\u9F50\u679A\u4E3E\u539F\u59CB\u503C",type:"enum",defaultValue:0,wire:"TextConfig.align",options:[{value:0,label:"0 \xB7 \u5DE6\u5BF9\u9F50"},{value:1,label:"1 \xB7 \u5C45\u4E2D"},{value:2,label:"2 \xB7 \u53F3\u5BF9\u9F50"}]},{key:"textField511",label:"\u6587\u672C\u89C6\u7A97 field511",type:"number",defaultValue:1,wire:"TextConfig.field511"},{key:"textViewField502",label:"\u89C6\u7A97\u6807\u8BB0 field502",type:"number",defaultValue:1,wire:"TextConfig.viewFlags.field502"},{key:"textViewField503",label:"\u89C6\u7A97\u6807\u8BB0 field503",type:"number",defaultValue:1,wire:"TextConfig.viewFlags.field503"}],cursor:[{key:"cursorField501",label:"\u5149\u6807\u68C0\u6D4B field501",type:"number",defaultValue:1,wire:"CursorConfig.field501"}],reference:[{key:"templateRefSlot",label:"\u6A21\u677F\u5F15\u7528\u69FD\u539F\u59CB\u503C",type:"string",defaultValue:"",wire:"Details.templateRefSlot"}],grid:[{key:"gridField501",label:"\u7F51\u683C\u6807\u8BB0 field501",type:"number",defaultValue:1,wire:"GridViewConfig.field501"},{key:"gridField507",label:"\u7F51\u683C\u6807\u8BB0 field507",type:"number",defaultValue:1,wire:"GridViewConfig.field507"},{key:"gridField508",label:"\u7F51\u683C\u6807\u8BB0 field508",type:"number",defaultValue:1,wire:"GridViewConfig.field508"},{key:"gridField509",label:"\u7F51\u683C\u6807\u8BB0 field509",type:"number",defaultValue:1,wire:"GridViewConfig.field509"},{key:"gridField511",label:"\u7F51\u683C\u6807\u8BB0 field511",type:"number",defaultValue:5,wire:"GridViewConfig.field511"},{key:"gridField512",label:"\u7F51\u683C\u6807\u8BB0 field512",type:"number",defaultValue:1,wire:"GridViewConfig.field512"}],keyhint:[{key:"keyHintField501",label:"\u6309\u952E\u63D0\u793A field501",type:"number",defaultValue:1,wire:"KeyHintConfig.field501"},{key:"keyHintField502",label:"\u952E\u9F20\u952E\u4F4D\u539F\u59CB\u503C",type:"number",defaultValue:1,wire:"KeyHintConfig.field502"}],image:[{key:"imageSlotType",label:"\u56FE\u7247\u7C7B\u578B\u539F\u59CB\u503C",type:"number",defaultValue:0,wire:"ImageSlotConfig.imageType"},{key:"imageField502",label:"\u56FE\u7247\u6807\u8BB0 field502",type:"number",defaultValue:1,wire:"ImageConfig.field502"},{key:"imageField504",label:"\u56FE\u7247\u6807\u8BB0 field504",type:"number",defaultValue:1,wire:"ImageConfig.field504"},{key:"imageField505",label:"\u56FE\u7247\u6807\u8BB0 field505",type:"number",defaultValue:1,wire:"ImageConfig.field505"},{key:"imageField507",label:"\u56FE\u7247\u6807\u8BB0 field507",type:"number",defaultValue:2,wire:"ImageConfig.field507"},{key:"imageFillType",label:"\u586B\u5145\u5F62\u72B6\u679A\u4E3E\u539F\u59CB\u503C",type:"enum",defaultValue:1,wire:"ImageConfig.fillType",options:[{value:1,label:"1 \xB7 \u6A2A\u5411"},{value:2,label:"2 \xB7 \u7EB5\u5411"},{value:3,label:"3 \xB7 90\u5EA6\u73AF\u7ED5"},{value:4,label:"4 \xB7 180\u5EA6\u73AF\u7ED5"},{value:5,label:"5 \xB7 360\u5EA6\u73AF\u7ED5"}]}],animation:[{key:"effectSlot",label:"\u754C\u9762\u52A8\u6548\u69FD\u539F\u59CB\u503C",type:"string",defaultValue:"",wire:"Details.effectSlot"}],fullscreen:[{key:"fullscreenEffectSlot",label:"\u5168\u5C4F\u52A8\u6548\u69FD\u539F\u59CB\u503C",type:"string",defaultValue:"",wire:"Details.fullscreenEffectSlot"}]});function Tr(e){return[...Wo,...Jo[e]||[]]}function Pr(e,t){return Tr(e).find(i=>i.key===t)||null}function an(e,t){if(!e)throw new Error("unknown raw GIA field");if(e.type==="string")return String(t??"");let i=Number(t);if(!Number.isFinite(i))throw new Error(`${e.wire} must be a finite number`);return Math.trunc(i)}function Rr(e,t={}){let i={};for(let n of Tr(e)){let r=Object.hasOwn(t||{},n.key)?t[n.key]:n.defaultValue;i[n.key]=an(n,r)}return i}function Pe(e){let t=Number(e);return Number.isSafeInteger(t)&&t>0&&t<=2147483647}function on(e,t){if(e){t(e);for(let i of e.children||[])on(i,t)}}function Pt(e,t=new Set,{skipServerContainer:i=!1}={}){return on(e,n=>{i&&n.kind==="server-container"||Pe(n.guid)&&t.add(Number(n.guid))}),t}function We(e,t=1073741850){let i=Number.isSafeInteger(t)&&t>0?t:1073741850;i<1073741850&&(i=1073741850);for(let n of e)Pe(n)&&n>=i&&(i=Number(n)+1);for(;e.has(i);)i+=1;if(i>2147483647)throw new Error("GUID space exhausted");return i}function Mr(e,t=new Set,{skipServerContainer:i=!1}={}){let n=[];on(e,r=>{if(i&&r.kind==="server-container")return;let a=Number(r.guid);if(Pe(a)&&!t.has(a)){t.add(a),r.guid=a;return}n.push(r)});for(let r of n){let a=We(t);r.guid=a,t.add(a)}return t}function ke(e){return Number.isSafeInteger(e)&&e>0&&e<=2147483647}function Xe(e,{warnings:t=[]}={}){if(e.meta?.assetType!=="client-control-template")return;if(e.meta.giaAssetIndexSchemaVersion>1)throw new Error(`\u4E0D\u652F\u6301\u5BA2\u6237\u7AEF\u8D44\u4EA7\u7F16\u53F7\u7248\u672C ${e.meta.giaAssetIndexSchemaVersion}`);let i=[],n=m=>{m.kind!=="server-container"&&i.push(m);for(let y of m.children||[])n(y)};n(e.root);let r=new Map,a=new Map;for(let m of i){if(!ke(m.giaInfoIndex))continue;let y=r.get(m.giaInfoIndex)||[];y.push(m),r.set(m.giaInfoIndex,y);let I=a.get(m.kind)||new Set;I.add(m.giaInfoIndex),a.set(m.kind,I)}let o=(e.root.children||[]).filter(m=>m.kind!=="server-container"),l=new Set(o),u=o.some((m,y)=>ke(m.giaInfoIndex)&&o.slice(0,y).some(I=>I.giaInfoIndex===m.giaInfoIndex)),s=!e.meta.giaAssetIndexSchemaVersion&&u&&i.every(m=>m.giaInfoIndexSource!=="authoring")&&[...a.values()].every(m=>m.size===1)&&[...r.values()].every(m=>m.every(y=>y.kind===m[0].kind)),f=new Set;if(s)for(let m of r.values()){let y=m.find(I=>l.has(I))||m[0];for(let I of m)I!==y&&f.add(I)}let h=new Map,p=Number.isSafeInteger(e.meta.giaNextAssetIndex)&&e.meta.giaNextAssetIndex>=2?e.meta.giaNextAssetIndex:2;for(let m of i){if(!ke(m.giaInfoIndex)||(p=Math.max(p,m.giaInfoIndex+1),f.has(m)))continue;let y=h.get(m.giaInfoIndex);if(y&&(y.giaInfoIndexSource==="authoring"||m.giaInfoIndexSource==="authoring"))throw new Error(`\u65B0\u5EFA\u8D44\u4EA7\u7F16\u53F7 ${m.giaInfoIndex} \u91CD\u590D\uFF1A${y.name} / ${m.name}`);h.set(m.giaInfoIndex,m)}s&&(p=Math.max(p,13));let g=s?[...o,...i.filter(m=>!l.has(m))].filter(m=>f.has(m)||!ke(m.giaInfoIndex)):i.filter(m=>!ke(m.giaInfoIndex));if(g.length&&p+g.length-1>2147483647)throw new Error("\u5BA2\u6237\u7AEF\u8D44\u4EA7\u7F16\u53F7\u7A7A\u95F4\u5DF2\u8017\u5C3D");for(let m of g)m.giaInfoIndex=p++,m.giaInfoIndexSource="authoring";e.meta.giaNextAssetIndex=p,e.meta.giaAssetIndexSchemaVersion=1,f.size&&t.push(`\u65E7\u5BA2\u6237\u7AEF\u8D44\u4EA7\u7F16\u53F7\u81EA\u52A8\u8FC1\u79FB\uFF1A\u4FEE\u590D ${f.size} \u6761\u6309\u63A7\u4EF6\u7C7B\u578B\u590D\u7528\u7684\u7F16\u53F7\uFF1BGUID\u3001Lua \u5F15\u7528\u548C\u63A7\u4EF6\u5C5E\u6027\u4FDD\u6301\u4E0D\u53D8\u3002`)}var ln=1;function sn(e="n"){let t=`${e}${ln}`;return ln+=1,t}function ki(e=1){ln=e}function un(e,{isRootContainer:t=!1}={}){if(e==="server-container"||e==="fullscreen"||e==="container"&&t)return Ci({layout:"stretch"});let i=Sr[e]||[80,80];return Ci({layout:"center",size:i})}function Zo(e,t){return Ar(()=>un(e,t))}function Qo(e){Le(e);let t={};for(let i of se)t[i]=ct(e,i);return t}function K(e,t={}){if(!kt[e])throw new Error(`unknown kind: ${e}`);Object.hasOwn(t,"transformByCanvas")&&ut(t);let i=t.isRootContainer===!0,n=t.id||sn(e==="server-container"?"sc":"n"),r=Object.hasOwn(t,"transformByPlatform")?Qo(t.transformByPlatform):Zo(e,{isRootContainer:i}),a={id:n,kind:e,name:t.name||kt[e],guid:t.guid??0,giaRelatedGuids:Array.isArray(t.giaRelatedGuids)?t.giaRelatedGuids.filter(o=>Number.isSafeInteger(Number(o))&&Number(o)>0).map(Number):[],...ke(Number(t.giaInfoIndex))?{giaInfoIndex:Number(t.giaInfoIndex),giaInfoIndexSource:t.giaInfoIndexSource==="authoring"?"authoring":"imported"}:{},active:t.active!==!1,visible:t.visible!==!1,canControllerFocus:t.canControllerFocus??t.giaRaw?.footerField505===1,syncAllDevices:t.syncAllDevices!==!1,giaRaw:Rr(e,t.giaRaw),transformByPlatform:r,children:[],scriptMappingIds:Array.isArray(t.scriptMappingIds)?t.scriptMappingIds.filter(o=>Number.isSafeInteger(Number(o))&&Number(o)>0).map(Number):[]};if(e==="container"&&(a.isolateNavigation=t.isolateNavigation===!0,a.disableKeyEventPassthrough=t.disableKeyEventPassthrough===!0,a.disableCursorEventPassthrough=t.disableCursorEventPassthrough===!0,a.showCursor=t.showCursor===!0),(e==="textbox"||e==="textwindow")&&(a.fontSize=t.fontSize??20,a.adaptiveFontSize=t.adaptiveFontSize===!0,a.minimumFontSize=t.minimumFontSize??20,a.fontColor=t.fontColor??Wt.font,a.bgColor=t.bgColor??Wt.bg,a.enableOutline=t.enableOutline!==!1,a.outlineColor=t.outlineColor??Wt.outline,a.horizontalAlignment=t.horizontalAlignment||"Left",a.verticalAlignment=t.verticalAlignment||"Top",Number.isInteger(t.giaRaw?.textVerticalAlign)&&![0,1,2].includes(t.giaRaw.textVerticalAlign)&&(a.giaRaw.textVerticalAlign=t.giaRaw.textVerticalAlign),a.text=t.text??"",Object.hasOwn(t.giaRaw||{},"textAlign")||(a.giaRaw.textAlign={Left:0,Middle:1,Right:2}[a.horizontalAlignment]??a.giaRaw.textAlign),e==="textwindow"&&(a.interactable=t.interactable!==!1,a.showScrollBar=t.showScrollBar!==!1)),e==="image"&&(a.imageSource=t.imageSource||"StaticReference",a.imageType=["Basic","Stretch"].includes(t.imageType)?t.imageType:null,a.imageId=t.imageId??100001,a.imageColor=t.imageColor??Wt.image,a.enableMask=t.enableMask===!0,a.enableSoftEdge=t.enableSoftEdge===!0,a.softEdgeMode=t.softEdgeMode||"Percentage",a.softEdgeWidthX=t.softEdgeWidthX??8,a.softEdgeWidthY=t.softEdgeWidthY??8,a.horizontalSoftRange=t.horizontalSoftRange??85,a.verticalSoftRange=t.verticalSoftRange??85,a.enableFill=t.enableFill===!0,a.fillType=t.fillType||"Horizontal",a.fillHorizontalType=t.fillHorizontalType||"Left",a.fillVerticalType=t.fillVerticalType||"Bottom",a.fillRadial90Type=t.fillRadial90Type||"BottomLeft",a.fillRadialType=t.fillRadialType||"Bottom",a.fillAmount=t.fillAmount??1,a.reverseMaskArea=t.reverseMaskArea===!0||t.reverseMask===!0,Object.hasOwn(t.giaRaw||{},"imageFillType")||(a.giaRaw.imageFillType={Horizontal:1,Vertical:2,Radial90:3,Radial180:4,Radial360:5}[a.fillType]??a.giaRaw.imageFillType)),e==="button"&&(a.raycastTarget=t.raycastTarget!==!1,a.interactable=t.interactable!==!1,a.clickAudioId=t.clickAudioId??wr,a.unavailableChildId=t.unavailableChildId??null,a.hoverChildId=t.hoverChildId??null,a.pressedChildId=t.pressedChildId??null,a.selectedChildId=t.selectedChildId??null),e==="cursor"&&(a.raycastTarget=t.raycastTarget??t.giaRaw?.cursorField501!==0),e==="reference"&&(a.referencedPrefabId=t.referencedPrefabId??t.giaRaw?.templateRefSlot??null,Object.hasOwn(t.giaRaw||{},"templateRefSlot")||(a.giaRaw.templateRefSlot=String(a.referencedPrefabId??""))),e==="grid"&&(a.itemPrefabId=t.itemPrefabId??null,a.raycastTarget=t.raycastTarget!==!1,a.interactable=t.interactable!==!1,a.showScrollBar=t.showScrollBar!==!1,a.scrollDirection=t.scrollDirection||"Vertical",a.layoutConstraint=t.layoutConstraint||"AutoWrap",a.layoutConstraintFixedCount=t.layoutConstraintFixedCount??null,a.cellSizeX=t.cellSizeX??50,a.cellSizeY=t.cellSizeY??50,a.spacingX=t.spacingX??8,a.spacingY=t.spacingY??8,a.padding1X=t.padding1X??20,a.padding1Y=t.padding1Y??20,a.padding2X=t.padding2X??20,a.padding2Y=t.padding2Y??20,a.previewCount=t.previewCount??t.giaRaw?.gridField511??5,Object.hasOwn(t.giaRaw||{},"gridField511")||(a.giaRaw.gridField511=Math.trunc(a.previewCount))),e==="keyhint"&&(a.keyboardKeyCode=t.keyboardKeyCode??t.giaRaw?.keyHintField502??null,a.controllerKeyCode=t.controllerKeyCode??t.giaRaw?.keyHintField501??null,Object.hasOwn(t.giaRaw||{},"keyHintField502")||(a.giaRaw.keyHintField502=Math.trunc(a.keyboardKeyCode??1)),Object.hasOwn(t.giaRaw||{},"keyHintField501")||(a.giaRaw.keyHintField501=Math.trunc(a.controllerKeyCode??1))),e==="animation"||e==="fullscreen"){let o=e==="animation"?t.giaRaw?.effectSlot:t.giaRaw?.fullscreenEffectSlot;a.animationId=t.animationId??o??null,a.playSoundEffect=t.playSoundEffect??null,e==="animation"&&(a.layer=t.layer??null);let l=e==="animation"?"effectSlot":"fullscreenEffectSlot";Object.hasOwn(t.giaRaw||{},l)||(a.giaRaw[l]=String(a.animationId??""))}if(t.children)for(let o of t.children)a.children.push(o);return a}function ft(){ki(1);let e=K("server-container",{id:"sc1",name:"\u5BA2\u6237\u7AEF\u63A7\u4EF6\u5BB9\u5668"}),t=K("container",{id:"n1",name:"\u5BB9\u5668\u8282\u70B9",isRootContainer:!0}),i=K("textbox",{id:"n2",name:"\u6587\u672C\u6846",text:"\u6587\u672C"}),n=K("cursor",{id:"n3",name:"\u5149\u6807\u68C0\u6D4B\u533A\u57DF"}),r=K("reference",{id:"n4",name:"\u6A21\u677F\u5F15\u7528\u63A7\u4EF6"}),a=K("grid",{id:"n5",name:"\u7F51\u683C\u89C6\u7A97"}),o=K("button",{id:"n6",name:"\u9884\u8BBE\u6309\u94AE"}),l=K("textwindow",{id:"n7",name:"\u6587\u672C\u89C6\u7A97"}),u=K("keyhint",{id:"n8",name:"\u6309\u952E\u63D0\u793A"}),s=K("image",{id:"n9",name:"\u56FE\u7247",imageId:100005}),f=K("animation",{id:"n10",name:"\u754C\u9762\u52A8\u6548"}),h=K("fullscreen",{id:"n11",name:"\u5168\u5C4F\u52A8\u6548"}),p=(g,m,y)=>{for(let I of Object.values(g.transformByPlatform))I.offset={x:m,y}};return p(i,-300,250),p(n,-300,140),p(r,-300,30),p(a,-300,-100),p(o,0,0),p(l,300,250),p(u,300,140),p(s,300,30),p(f,300,-100),t.children.push(i,n,r,a,o,l,u,s,f,h),e.children.push(t),ki(12),Mr(e),{version:1,layoutSchemaVersion:be,meta:{name:"\u672A\u547D\u540D\u754C\u9762\u63A7\u4EF6\u7EC4",assetType:"server-control-template",sourceFormat:"authoring",sourceFile:""},canvasId:"pc-16-9",selectedId:"n2",root:e}}function Rt(){ki(1);let e=K("server-container",{id:"sc1",name:"\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F"}),t=K("container",{id:"n1",guid:1073742100,name:"Lua\u5B9E\u4F8B\u5316\u9762\u677F"}),i=K("textbox",{id:"n2",guid:1073742101,name:"\u6A21\u677F\u6807\u9898",text:"\u5BA2\u6237\u7AEF\u6A21\u677F\u5DF2\u5B9E\u4F8B\u5316",fontSize:28,horizontalAlignment:"Middle"}),n=K("image",{id:"n3",guid:1073742102,name:"\u6A21\u677F\u56FE\u6807",imageId:100005}),r=K("button",{id:"n4",guid:1073742103,name:"\u786E\u8BA4\u6309\u94AE"}),a=K("textbox",{id:"n5",guid:1073742104,name:"\u6309\u94AE\u6587\u5B57",text:"\u786E\u8BA4",horizontalAlignment:"Middle",verticalAlignment:"Top"}),o=(s,f,h)=>{for(let p of Object.values(s.transformByPlatform))p.offset={x:f,y:h}};((s,f,h)=>{for(let p of Object.values(s.transformByPlatform))p.size={x:f,y:h}})(t,520,320),o(i,0,110),o(n,0,0),o(r,0,-110),r.children.push(a),t.children.push(i,n,r),e.children.push(t),ki(6);let u={version:1,layoutSchemaVersion:be,meta:{name:"Lua\u5B9E\u4F8B\u5316\u9762\u677F",assetType:"client-control-template",sourceFormat:"authoring",sourceFile:"",gameVersion:wi,giaOwnerUid:114514,giaFileId:1073741829,giaFileName:"\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F\u5217\u8868.gia"},canvasId:"pc-16-9",selectedId:"n1",root:e};return Xe(u),u}function Z(e,t,i=null){t(e,i);for(let n of e.children||[])Z(n,t,e)}function he(e,t){let i=null;return Z(e,n=>{n.id===t&&(i=n)}),i}function cn(e,t="n"){let i=sn(t);for(;he(e,i);)i=sn(t);return i}function Je(e,t){let i=null;return Z(e,(n,r)=>{n.id===t&&(i=r)}),i}function fn(e){let t=e.root||e;return t.kind==="container"?t:(t.children||[]).find(i=>i.kind==="container")||(t.children||[])[0]||t}function Qt(e){if(e.meta?.assetType!=="client-control-template")return fn(e);let t=he(e.root,e.selectedId);if(!t||t.kind==="server-container")return e.root.children?.[0]||e.root;let i=Je(e.root,t.id);for(;i&&i.kind!=="server-container";)t=i,i=Je(e.root,t.id);return t}function dn(e){ut(e);let t={id:e.id,name:e.name,guid:e.guid,giaRelatedGuids:e.giaRelatedGuids,giaInfoIndex:e.giaInfoIndex,giaInfoIndexSource:e.giaInfoIndexSource,scriptMappingIds:e.scriptMappingIds,giaRaw:e.giaRaw,active:e.active,visible:e.visible,canControllerFocus:e.canControllerFocus,syncAllDevices:e.syncAllDevices,transformByPlatform:e.transformByPlatform};e.kind==="container"&&(t.isolateNavigation=e.isolateNavigation,t.disableKeyEventPassthrough=e.disableKeyEventPassthrough,t.disableCursorEventPassthrough=e.disableCursorEventPassthrough,t.showCursor=e.showCursor),(e.kind==="textbox"||e.kind==="textwindow")&&(t.fontSize=e.fontSize,t.adaptiveFontSize=e.adaptiveFontSize,t.minimumFontSize=e.minimumFontSize,t.fontColor=e.fontColor,t.bgColor=e.bgColor,t.enableOutline=e.enableOutline,t.outlineColor=e.outlineColor,t.horizontalAlignment=e.horizontalAlignment,t.verticalAlignment=e.verticalAlignment,t.text=e.text??"",e.kind==="textwindow"&&(t.interactable=e.interactable,t.showScrollBar=e.showScrollBar)),e.kind==="image"&&(t.imageSource=e.imageSource,t.imageType=e.imageType,t.imageId=e.imageId,t.imageColor=e.imageColor,t.enableMask=e.enableMask,t.enableSoftEdge=e.enableSoftEdge,t.softEdgeMode=e.softEdgeMode,t.softEdgeWidthX=e.softEdgeWidthX,t.softEdgeWidthY=e.softEdgeWidthY,t.horizontalSoftRange=e.horizontalSoftRange,t.verticalSoftRange=e.verticalSoftRange,t.enableFill=e.enableFill,t.fillType=e.fillType,t.fillHorizontalType=e.fillHorizontalType,t.fillVerticalType=e.fillVerticalType,t.fillRadial90Type=e.fillRadial90Type,t.fillRadialType=e.fillRadialType,t.fillAmount=e.fillAmount,t.reverseMaskArea=e.reverseMaskArea??e.reverseMask),e.kind==="button"&&(t.raycastTarget=e.raycastTarget,t.interactable=e.interactable,t.clickAudioId=e.clickAudioId,t.unavailableChildId=e.unavailableChildId??null,t.hoverChildId=e.hoverChildId??null,t.pressedChildId=e.pressedChildId??null,t.selectedChildId=e.selectedChildId??null),e.kind==="cursor"&&(t.raycastTarget=e.raycastTarget),e.kind==="reference"&&(t.referencedPrefabId=e.referencedPrefabId??null),e.kind==="grid"&&(t.itemPrefabId=e.itemPrefabId??null,t.raycastTarget=e.raycastTarget,t.interactable=e.interactable,t.showScrollBar=e.showScrollBar,t.scrollDirection=e.scrollDirection,t.layoutConstraint=e.layoutConstraint,t.layoutConstraintFixedCount=e.layoutConstraintFixedCount??null,t.cellSizeX=e.cellSizeX,t.cellSizeY=e.cellSizeY,t.spacingX=e.spacingX,t.spacingY=e.spacingY,t.padding1X=e.padding1X,t.padding1Y=e.padding1Y,t.padding2X=e.padding2X,t.padding2Y=e.padding2Y,t.previewCount=e.previewCount),e.kind==="keyhint"&&(t.keyboardKeyCode=e.keyboardKeyCode??null,t.controllerKeyCode=e.controllerKeyCode??null),(e.kind==="animation"||e.kind==="fullscreen")&&(t.animationId=e.animationId??null,t.playSoundEffect=e.playSoundEffect??null,e.kind==="animation"&&(t.layer=e.layer??null)),t.isRootContainer=e.kind==="container"&&el(e.transformByPlatform);let i=K(e.kind,t);return i.children=(e.children||[]).map(n=>dn(n)),i}function el(e){let t=e&&(e.KEYBOARD||Object.values(e)[0]);return t?Math.abs(t.anchorMin?.x??.5)<1e-4&&Math.abs(t.anchorMin?.y??.5)<1e-4&&Math.abs((t.anchorMax?.x??.5)-1)<1e-4&&Math.abs((t.anchorMax?.y??.5)-1)<1e-4:!1}function Nr(e,t,i={}){if(e.kind==="server-container"&&t!=="container")throw new Error("server container only accepts container nodes");let n=K(t,i);return e.children.push(n),n}function Fr(e,t){if(e.id===t)throw new Error("cannot remove root");let i=Je(e,t);if(!i)return!1;let n=i.children.findIndex(r=>r.id===t);return n<0?!1:(i.children.splice(n,1),!0)}var Or=1e-4;function tl(e,t){return Math.abs(e.anchorMax[t]-e.anchorMin[t])>Or&&Math.abs(e.size[t])<=Or}function il(e,t,i){if(!(t.width>0)||!(t.height>0))throw new Error("source parent must have positive size");if(!(i.width>0)||!(i.height>0))throw new Error("target parent must have positive size");let n=Ye(t,e),r=(n.centerX-t.left)/t.width,a=(n.centerY-t.bottom)/t.height,o=lt(i,e,{posX:i.left+r*i.width,posY:i.bottom+a*i.height,width:n.width,height:n.height});for(let l of["x","y"])tl(e,l)&&(o.offset[l]=e.offset[l],o.size[l]=e.size[l]);return o}function zr({transformByPlatform:e,source:t,canvasId:i,syncAllDevices:n,sourceParentBox:r=ve(i),targetParentBoxByPlatform:a={}}){Le(e);let o=st(i),l={};for(let u of se)u===o?l[u]=ze(t):n!==!1?l[u]=il(t,r,a[u]||ve(Ct[u])):l[u]=ct(e,u);return Le(l),l}function Ze(e,t){return ct(e,st(t))}function $r(e,t){let i=[];function n(r){t[r.id]&&i.push(t[r.id]);let a=r.children||[];for(let o=a.length-1;o>=0;o-=1)n(a[o])}return n(e),i}function Qe(e,t,i=st(t)){let n=ve(t),r={};function a(o,l,u){let s=ct(o.transformByPlatform,i),f=Ye(l,s),h=o.kind==="server-container"?u:Zt(u,f,s),p=Cr(f,h);r[o.id]={...f,...rn(f),id:o.id,kind:o.kind,name:o.name,visible:o.visible!==!1,active:o.active!==!1,rotationX:s.rotation.x,rotationY:s.rotation.y,rotationZ:s.rotation.z,renderLeft:p.left,renderBottom:p.bottom,renderWidth:p.width,renderHeight:p.height,renderRotationZ:p.rotationZ,renderMatrix:h,primitive:o.kind==="image"?Et(o.imageId,o.imageSource):null,...o.kind==="textbox"||o.kind==="textwindow"?{text:o.text??"",fontSize:o.fontSize,fontColor:o.fontColor,bgColor:o.bgColor,enableOutline:o.enableOutline!==!1,outlineColor:o.outlineColor,horizontalAlignment:o.horizontalAlignment,verticalAlignment:o.verticalAlignment}:{},...o.kind==="image"?{imageSource:o.imageSource,imageType:o.imageType??null,imageId:o.imageId,imageColor:o.imageColor,enableMask:o.enableMask===!0,enableSoftEdge:o.enableSoftEdge===!0,softEdgeMode:o.softEdgeMode,softEdgeWidthX:o.softEdgeWidthX,softEdgeWidthY:o.softEdgeWidthY,horizontalSoftRange:o.horizontalSoftRange,verticalSoftRange:o.verticalSoftRange,enableFill:o.enableFill===!0,fillType:o.fillType,fillHorizontalType:o.fillHorizontalType,fillVerticalType:o.fillVerticalType,fillRadial90Type:o.fillRadial90Type,fillRadialType:o.fillRadialType,fillAmount:o.fillAmount,reverseMaskArea:o.reverseMaskArea===!0}:{},...o.kind==="button"?{raycastTarget:o.raycastTarget!==!1,interactable:o.interactable!==!1,clickAudioId:o.clickAudioId,unavailableChildId:o.unavailableChildId??null,hoverChildId:o.hoverChildId??null,pressedChildId:o.pressedChildId??null,selectedChildId:o.selectedChildId??null}:{}};let g=o.kind==="server-container"?l:f;for(let m of o.children||[])a(m,g,h)}return a(e,n,_t()),{canvas:n,boxes:r}}function hn(e,t){let i=[];function n(r,a,o=null,l=[],u=0,s=1,f=e.id){i.push({id:r.id,guid:t?.get(r.id)??(r.guid||0),kind:r.kind,name:r.name,label:kt[r.kind]||r.kind,depth:a,parentId:o,ancestorIds:l,siblingIndex:u,siblingCount:s,templateId:f,childCount:(r.children||[]).length,incomplete:!xi.includes(r.kind)});let h=r.children||[];for(let p=0;p<h.length;p+=1)n(h[p],a+1,r.id,[...l,r.id],p,h.length,f)}return n(e,0),i}function T(e,t,i,n,r={}){return{key:e,label:t,type:i,value:n,...r}}function Gr(e,t,i,n){if(!e)return null;let r=Ze(e.transformByPlatform,t),a=rn(i),o=[T("name","\u540D\u79F0","string",e.name),T("active","\u521D\u59CB\u6FC0\u6D3B","bool",e.active!==!1),T("visible","\u521D\u59CB\u53EF\u89C1\u6027","bool",e.visible!==!1),T("canControllerFocus","\u53EF\u88AB\u624B\u67C4\u6447\u6746\u5BFC\u822A\u9009\u4E2D","bool",e.canControllerFocus===!0),T("posX","\u4F4D\u7F6E X","number",a.posX,{computed:!0}),T("posY","\u4F4D\u7F6E Y","number",a.posY,{computed:!0}),T("width","\u5927\u5C0F W","number",a.width,{computed:!0}),T("height","\u5927\u5C0F H","number",a.height,{computed:!0}),T("rotationX","\u65CB\u8F6C X","number",r.rotation.x),T("rotationY","\u65CB\u8F6C Y","number",r.rotation.y),T("rotationZ","\u65CB\u8F6C Z","number",r.rotation.z),T("syncAllDevices","\u540C\u6B65\u4FE1\u606F\u81F3\u6240\u6709\u8BBE\u5907","bool",e.syncAllDevices!==!1),T("anchorType","\u951A\u70B9\u7C7B\u578B","enum",Er(r),{options:[{value:"center",label:"\u5C45\u4E2D"},{value:"top-left",label:"\u5DE6\u4E0A"},{value:"top",label:"\u4E0A\u65B9"},{value:"top-right",label:"\u53F3\u4E0A"},{value:"left",label:"\u5DE6\u4FA7"},{value:"right",label:"\u53F3\u4FA7"},{value:"bottom-left",label:"\u5DE6\u4E0B"},{value:"bottom",label:"\u4E0B\u65B9"},{value:"bottom-right",label:"\u53F3\u4E0B"},{value:"stretch",label:"\u53CC\u5411\u62C9\u4F38"},{value:"stretch-horizontal",label:"\u6C34\u5E73\u62C9\u4F38"},{value:"stretch-vertical",label:"\u5782\u76F4\u62C9\u4F38"},{value:"custom",label:"\u81EA\u5B9A\u4E49"}]}),T("anchorMinX","\u951A\u70B9 Min X","number",r.anchorMin.x),T("anchorMinY","\u951A\u70B9 Min Y","number",r.anchorMin.y),T("anchorMaxX","\u951A\u70B9 Max X","number",r.anchorMax.x),T("anchorMaxY","\u951A\u70B9 Max Y","number",r.anchorMax.y),T("pivotX","\u4E2D\u5FC3 X","number",r.pivot.x),T("pivotY","\u4E2D\u5FC3 Y","number",r.pivot.y)];if(e.kind==="container"&&o.push(T("isolateNavigation","\u9694\u79BB\u624B\u67C4\u5BFC\u822A","bool",e.isolateNavigation===!0),T("disableKeyEventPassthrough","\u5C4F\u853D\u6309\u952E\u4E8B\u4EF6\u7A7F\u900F","bool",e.disableKeyEventPassthrough===!0),T("disableCursorEventPassthrough","\u5C4F\u853D\u533A\u57DF\u5185\u70B9\u51FB\u4E8B\u4EF6\u7A7F\u900F","bool",e.disableCursorEventPassthrough===!0),T("showCursor","\u663E\u793A\u5E38\u9A7B\u5149\u6807","bool",e.showCursor===!0)),e.kind==="textbox"||e.kind==="textwindow"){let l=e.giaRaw?.textAlign,u=[0,1,2].includes(l)?e.horizontalAlignment||"Left":`__unrecognized:${l}`;o.push(T("fontSize","\u5B57\u53F7","number",e.fontSize),T("adaptiveFontSize","\u5B57\u53F7\u81EA\u9002\u5E94","bool",e.adaptiveFontSize===!0),T("minimumFontSize","\u6700\u5C0F\u5B57\u53F7","number",e.minimumFontSize),T("fontColor","\u6587\u672C\u8272","color",e.fontColor),T("bgColor","\u80CC\u666F\u8272","color",e.bgColor),T("enableOutline","\u542F\u7528\u63CF\u8FB9","bool",e.enableOutline!==!1),T("outlineColor","\u63CF\u8FB9\u8272","color",e.outlineColor),T("horizontalAlignment","\u6C34\u5E73\u5BF9\u9F50","enum",u,{...[0,1,2].includes(l)?{}:{unknownValue:l},options:[{value:"Left",label:"\u5DE6\u5BF9\u9F50"},{value:"Middle",label:"\u5C45\u4E2D"},{value:"Right",label:"\u53F3\u5BF9\u9F50"}]}),T("verticalAlignment","\u5782\u76F4\u5BF9\u9F50","enum",e.verticalAlignment||"Top",{options:[{value:"Top",label:"\u9876\u90E8"},{value:"Middle",label:"\u5C45\u4E2D"},{value:"Bottom",label:"\u5E95\u90E8"}]}),T("text","\u6587\u672C","text",e.text??""))}if(e.kind==="image"){let l=e.giaRaw?.imageFillType,u=[1,2,3,4,5].includes(l)?e.fillType:`__unrecognized:${l}`;o.push(T("imageSource","\u56FE\u7247\u6E90","enum",e.imageSource,{options:[{value:"StaticReference",label:"\u9759\u6001\u5F15\u7528"},{value:"Prefab",label:"\u5143\u4EF6"}]}),T("imageId","imageId","number",e.imageId??0),T("imageType","\u56FE\u7247\u7C7B\u578B","enum",e.imageType??null,{options:[{value:"Basic",label:"\u57FA\u7840"},{value:"Stretch",label:"\u62C9\u4F38"}]}),T("imageColor","\u586B\u5145\u8272","color",e.imageColor),T("enableMask","\u5F00\u542F\u906E\u7F69","bool",e.enableMask===!0),T("enableSoftEdge","\u8FB9\u7F18\u7FBD\u5316","bool",e.enableSoftEdge===!0,{gia:"W"}),T("softEdgeMode","\u7FBD\u5316\u6A21\u5F0F","enum",e.softEdgeMode,{options:[{value:"Percentage",label:"\u767E\u5206\u6BD4"},{value:"Pixel",label:"\u50CF\u7D20"}]}),T("softEdgeWidthX","\u7FBD\u5316\u5BBD\u5EA6 X","number",e.softEdgeWidthX),T("softEdgeWidthY","\u7FBD\u5316\u5BBD\u5EA6 Y","number",e.softEdgeWidthY),T("horizontalSoftRange","\u6C34\u5E73\u7FBD\u5316\u8303\u56F4","number",e.horizontalSoftRange),T("verticalSoftRange","\u5782\u76F4\u7FBD\u5316\u8303\u56F4","number",e.verticalSoftRange),T("enableFill","\u6309\u8FDB\u5EA6\u586B\u5145","bool",e.enableFill===!0,{gia:"W"}),T("fillType","\u5F62\u72B6","enum",u,{...[1,2,3,4,5].includes(l)?{}:{unknownValue:l},options:[{value:"Horizontal",label:"\u6A2A\u5411"},{value:"Vertical",label:"\u7EB5\u5411"},{value:"Radial90",label:"90\u5EA6\u73AF\u7ED5"},{value:"Radial180",label:"180\u5EA6\u73AF\u7ED5"},{value:"Radial360",label:"360\u5EA6\u73AF\u7ED5"}]}),T("fillHorizontalType","\u65B9\u5411","enum",e.fillHorizontalType,{options:[{value:"Left",label:"\u4ECE\u5DE6\u81F3\u53F3"},{value:"Right",label:"\u4ECE\u53F3\u81F3\u5DE6"}]}),T("fillVerticalType","\u65B9\u5411","enum",e.fillVerticalType,{options:[{value:"Bottom",label:"\u4ECE\u4E0B\u81F3\u4E0A"},{value:"Top",label:"\u4ECE\u4E0A\u81F3\u4E0B"}]}),T("fillRadial90Type","\u8D77\u70B9","enum",e.fillRadial90Type,{options:[{value:"BottomLeft",label:"\u5DE6\u4E0B"},{value:"TopLeft",label:"\u5DE6\u4E0A"},{value:"TopRight",label:"\u53F3\u4E0A"},{value:"BottomRight",label:"\u53F3\u4E0B"}]}),T("fillRadialType","\u8D77\u70B9","enum",e.fillRadialType,{options:[{value:"Bottom",label:"\u4E0B\u65B9"},{value:"Left",label:"\u5DE6\u4FA7"},{value:"Top",label:"\u4E0A\u65B9"},{value:"Right",label:"\u53F3\u4FA7"}]}),T("fillAmount","\u8FDB\u5EA6","percent",e.fillAmount),T("reverseMaskArea","\u906E\u7F69\u533A\u57DF\u53CD\u8F6C","bool",e.reverseMaskArea===!0,{gia:"W"}))}if(e.kind==="button"){let l=[{value:"",label:"\u672A\u8BBE\u7F6E"},...(e.children||[]).map(u=>({value:u.id,label:`${u.name} \xB7 ${u.id}`}))];o.push(T("raycastTarget","\u53EF\u88AB\u5149\u6807\u5C04\u7EBF\u68C0\u6D4B","bool",e.raycastTarget!==!1),T("interactable","\u6309\u94AE\u662F\u5426\u53EF\u7528","bool",e.interactable!==!1),T("unavailableChildId","\u4E0D\u53EF\u7528\u72B6\u6001\u8282\u70B9","node",e.unavailableChildId,{options:l,gia:"W"}),T("hoverChildId","\u60AC\u505C\u72B6\u6001\u8282\u70B9","node",e.hoverChildId,{options:l,gia:"W"}),T("pressedChildId","\u6309\u4E0B\u72B6\u6001\u8282\u70B9","node",e.pressedChildId,{options:l,gia:"W"}),T("selectedChildId","\u9009\u4E2D\u72B6\u6001\u8282\u70B9","node",e.selectedChildId,{options:l,gia:"W"}),T("clickAudioId","\u70B9\u51FB\u97F3\u6548","number",e.clickAudioId))}return e.kind==="reference"&&o.push(T("referencedPrefabId","\u5F15\u7528\u63A7\u4EF6\u6A21\u677F\u7D22\u5F15","string",e.referencedPrefabId??"")),(e.kind==="textwindow"||e.kind==="grid")&&o.push(T("interactable","\u5141\u8BB8\u6EDA\u52A8\u4EA4\u4E92","bool",e.interactable!==!1),T("showScrollBar","\u663E\u793A\u6EDA\u52A8\u6761","bool",e.showScrollBar!==!1)),e.kind==="grid"&&o.push(T("itemPrefabId","\u5217\u8868\u9879\u6A21\u677F\u7D22\u5F15","number",e.itemPrefabId??0),T("raycastTarget","\u53EF\u88AB\u5149\u6807\u5C04\u7EBF\u68C0\u6D4B","bool",e.raycastTarget!==!1),T("scrollDirection","\u6EDA\u52A8\u65B9\u5411","enum",e.scrollDirection,{options:[{value:"Vertical",label:"\u7EB5\u5411"},{value:"Horizontal",label:"\u6A2A\u5411"}]}),T("layoutConstraint","\u6392\u5217\u9650\u5236","enum",e.layoutConstraint,{options:[{value:"AutoWrap",label:"\u81EA\u52A8\u6362\u884C"},{value:"Fixed",label:"\u56FA\u5B9A\u884C\u5217\u6570"}]}),T("layoutConstraintFixedCount","\u6BCF\u884C\u6216\u6BCF\u5217\u6570\u91CF","number",e.layoutConstraintFixedCount??1),T("cellSizeX","\u5217\u8868\u9879\u5927\u5C0F W","number",e.cellSizeX,{evidence:"W"}),T("cellSizeY","\u5217\u8868\u9879\u5927\u5C0F H","number",e.cellSizeY,{evidence:"W"}),T("spacingX","\u5217\u8868\u9879\u95F4\u9694 X","number",e.spacingX,{evidence:"W"}),T("spacingY","\u5217\u8868\u9879\u95F4\u9694 Y","number",e.spacingY,{evidence:"W"}),T("padding1X","\u8FB9\u8DDD\u5411\u91CF 1 X","number",e.padding1X,{evidence:"W"}),T("padding1Y","\u8FB9\u8DDD\u5411\u91CF 1 Y","number",e.padding1Y,{evidence:"W"}),T("padding2X","\u8FB9\u8DDD\u5411\u91CF 2 X","number",e.padding2X,{evidence:"W"}),T("padding2Y","\u8FB9\u8DDD\u5411\u91CF 2 Y","number",e.padding2Y,{evidence:"W"}),T("previewCount","\u9884\u89C8\u6570\u91CF","number",e.previewCount)),e.kind==="keyhint"&&o.push(T("keyboardKeyCode","\u952E\u9F20\u6309\u952E","number",e.keyboardKeyCode??e.giaRaw?.keyHintField502??1,{gia:"W"}),T("controllerKeyCode","\u624B\u67C4\u6309\u952E","number",e.controllerKeyCode??e.giaRaw?.keyHintField501??1)),(e.kind==="animation"||e.kind==="fullscreen")&&o.push(T("animationId",e.kind==="animation"?"\u52A8\u6548\u7D22\u5F15":"\u5168\u5C4F\u52A8\u6548\u7D22\u5F15","string",e.animationId??"")),(!xi.includes(e.kind)||e.kind==="textwindow"||e.kind==="grid")&&o.push(T("incomplete","\u5B8C\u6574\u5EA6","note",e.kind==="textwindow"||e.kind==="grid"?"\u8BD5\u73A9\u652F\u6301\u57FA\u7840\u6EDA\u52A8\uFF1B\u6EDA\u52A8\u4EA4\u4E92\u3001\u6EDA\u52A8\u6761\u53CA\u5217\u8868\u914D\u7F6E\u4EE5 JSON/Lua \u4E3A\u51C6\uFF0C\u76F8\u5173 GIA \u5F00\u5173\u6620\u5C04\u5C1A\u672A\u6838\u5B9E\u3002":"\u672C\u9636\u6BB5\u4EC5\u516C\u5171\u53D8\u6362\uFF0C\u4E1A\u52A1\u69FD\u4E0D\u5B8C\u6574")),{id:e.id,guid:n?.get(e.id)??(e.guid||0),kind:e.kind,label:kt[e.kind]||e.kind,incomplete:!xi.includes(e.kind),fields:o}}function Dr(e,t,i){let n=(Array.isArray(e)?e:Object.values(e)).filter(r=>r.kind!=="server-container");for(let r=n.length-1;r>=0;r-=1){let a=n[r];if(!a.visible||!a.active)continue;let o=a.renderMatrix&&Tt(a.renderMatrix),l=o&&Te(o,t,i);if(l&&l.x>=a.left&&l.x<=a.right&&l.y>=a.bottom&&l.y<=a.top)return a.id}return null}import nl from"protobufjs";function Mt(e,t=!1){let i=[],n=(r,a)=>{r.kind!=="server-container"&&i.push({node:r,parent:a});let o=t&&r.kind!=="server-container"?[...r.children||[]].reverse():r.children||[];for(let l of o)n(l,r)};return n(e.root,null),i}var rl=String.raw`
2
2
  syntax = "proto3";
3
3
  // Root.graph is singular in the game's canonical schema, but template-list
4
4
  // assets legally emit field 1 more than once. Model it as repeated here so
@@ -99,12 +99,12 @@ message ImageConfig {
99
99
  message SliceVector { float field501 = 501; float field502 = 502; }
100
100
  }
101
101
  message FooterSlot { int32 field505 = 505; }
102
- `,{root:tl}=Qo.parse(el,{keepCase:!1}),_e=tl.lookupType("Root"),Ze=20,ln=4,$r=806,Dr=1657,Ht={image:23,"server-container":24,container:25,grid:26,reference:27,button:28,animation:29,fullscreen:30,textbox:31,textwindow:32,cursor:33,keyhint:34},Gr={KEYBOARD:0,TOUCHSCREEN:1,CONTROLLER_CONSOLE:2,CONTROLLER_MOBILE:3},il="server-control-template",vi="client-control-template";function bi(e,t){let i=Number(e);return Number.isFinite(i)?i:t}var nl=Object.fromEntries(Object.entries(Gr).map(([e,t])=>[t,e])),Vr=Object.freeze({container:[["2/15","name",null],["4/86","field14","field14"],["1/12","transform","transform"],["63/83","empty73","genericSlot"],["68/91","empty78","containerNodeSlot"],["67/90","empty77","footerSlot"]],textbox:[["2/15","name",null],["4/86","field14","field14"],["1/12","transform","transform"],["63/83","empty73","genericSlot"],["64/84","empty74","textConfig"],["67/90","empty77","footerSlot"]],cursor:[["2/15","name",null],["4/86","field14","field14"],["1/12","transform","transform"],["63/83","empty73","genericSlot"],["65/85","empty75","cursorConfig"],["67/90","empty77","footerSlot"]],reference:[["2/15","name",null],["4/86","field14","field14"],["1/12","transform","transform"],["63/83","empty73","genericSlot"],["66/89","empty76","templateRefSlot"],["67/90","empty77","footerSlot"]],grid:[["2/15","name",null],["4/86","field14","field14"],["1/12","transform","transform"],["63/83","empty73","genericSlot"],["69/92","empty79","gridView"],["67/90","empty77","footerSlot"]],button:[["2/15","name",null],["4/86","field14","field14"],["1/12","transform","transform"],["63/83","empty73","genericSlot"],["70/93","empty80","buttonPreset"],["67/90","empty77","footerSlot"]],textwindow:[["2/15","name",null],["4/86","field14","field14"],["1/12","transform","transform"],["63/83","empty73","genericSlot"],["71/94","empty81","textConfig"],["67/90","empty77","footerSlot"]],keyhint:[["2/15","name",null],["4/86","field14","field14"],["1/12","transform","transform"],["63/83","empty73","genericSlot"],["72/95","empty82","keyHint"],["67/90","empty77","footerSlot"]],image:[["2/15","name",null],["4/86","field14","field14"],["1/12","transform","transform"],["63/83","empty73","genericSlot"],["73/96","empty83","imageSlot"],["74/97","empty84","image"],["67/90","empty77","footerSlot"]],animation:[["2/15","name",null],["4/86","field14","field14"],["1/12","transform","transform"],["63/83","empty73","genericSlot"],["75/98","empty85","effectSlot"],["67/90","empty77","footerSlot"]],fullscreen:[["2/15","name",null],["4/86","field14","field14"],["1/12","transform","transform"],["63/83","empty73","genericSlot"],["76/99","empty86","fullscreenEffectSlot"],["67/90","empty77","footerSlot"]]}),Yr=Object.freeze({"4/23":5,"4/86":5,"1/12":4,"62/82":64,"63/83":65,"64/84":66,"65/85":67,"66/89":68,"67/90":69,"68/91":70,"69/92":71,"70/93":72,"71/94":66,"72/95":74,"73/96":75,"74/97":76,"75/98":77,"76/99":78}),rl=Object.freeze([["2/15","name",null],["4/23","field14","field14"],["1/12","transform","transform"],["62/82","empty72","rootChildRef"]]);function sn(e){return{class:1,type:8,id:e}}function Kt(e,t,i,n){return{...n,field501:t,field502:i,field503:1,nodeRef:sn(e)}}function al(e){let t=[],i=e.meta?.assetType==="client-control-template";return W(e.root,n=>{i&&n.kind==="server-container"||t.push(n)}),t}function qt(e,t=new Set){let i=new Map,n=[];for(let r of al(e)){let a=Number(r.guid);Ae(a)&&!t.has(a)?(t.add(a),r.guid=a,i.set(r.id,a)):n.push(r)}for(let r of n){let a=qe(t);t.add(a),r.guid=a,i.set(r.id,a)}return i}function ol(e){return{scale:{x:e.scale.x,y:e.scale.y,z:e.scale.z},anchorMin:{x:e.anchorMin.x,y:e.anchorMin.y},anchorMax:{x:e.anchorMax.x,y:e.anchorMax.y},offset:{x:e.offset.x,y:e.offset.y},size:{x:e.size.x,y:e.size.y},pivot:{x:e.pivot.x,y:e.pivot.y},field508:e.rotation.z?{z:e.rotation.z}:{}}}function ll(e,t){let n={multiPlatform:{platforms:le.map(r=>({platformType:Gr[r],transform:ol(e.transformByPlatform[r])})),field502:Ht[e.kind]||25,...e.syncAllDevices===!1?{}:{field504:1}},type:2};return{transform:{multiPlatform:{},type:2},field501:1,field502:12,details:Kt(t,4,12,{transform:n})}}function sl(e,t,i){let n=i?{empty15:"",field501:5}:{field17:{},field501:7},r=i?n:{...n,...e.visible===!1?{field17:{initiallyHidden:!0}}:{},...e.active===!1?{initiallyInactive:!0}:{}};return[{name:{value:e.name},field501:2,field502:15},{field14:n,field501:4,field502:i?23:86,details:Kt(t,5,i?23:86,{field14:r})},ll(e,t)]}function ul(e,t,i,n){let r=(s,f,d,g,p)=>({[d]:"",field501:s,field502:f,details:Kt(t,s+2,f,{[g]:p})}),a=e.giaRaw||{},o=Array.isArray(e.scriptMappingIds)&&e.scriptMappingIds.length?{field501:a.genericField501||1,field502:e.scriptMappingIds.map(s=>({field1:{id:Number(s)}}))}:{field501:a.genericField501??0},l=r(63,83,"empty73","genericSlot",o),u=r(67,90,"empty77","footerSlot",{field505:[void 0,0,1].includes(a.footerField505)?e.canControllerFocus?1:0:a.footerField505});if(e.kind==="container")return[l,r(68,91,"empty78","containerNodeSlot",{...e.isolateNavigation?{isolateNavigation:!0}:{},...e.disableKeyEventPassthrough?{disableKeyEventPassthrough:!0}:{},...e.disableCursorEventPassthrough?{disableCursorEventPassthrough:!0}:{},...e.showCursor?{showCursor:!0}:{}}),u];if(e.kind==="textbox"||e.kind==="textwindow"){e.verticalAlignment==="Middle"&&n.push(`${e.name}: \u5782\u76F4\u5C45\u4E2D\u6309\u63A8\u5B9A\u503C\u5BFC\u51FA\uFF0C\u5C1A\u5F85\u5B9E\u673A\u786E\u8BA4\u3002`);let s={Left:0,Middle:1,Right:2}[e.horizontalAlignment]??0,f=Number.isFinite(a.textAlign)?Math.trunc(a.textAlign):s,d={field501:a.textField501??20,field503:a.textField503??12,color:e.fontColor>>>0,color2:e.bgColor>>>0,color3:e.outlineColor>>>0,text:{value:e.text||""},fontSize:Math.trunc(e.fontSize),minimumFontSize:Math.trunc(e.minimumFontSize),...e.adaptiveFontSize?{adaptive:1}:{},...e.enableOutline===!1?{outlineOff:1}:{},...f?{align:f}:{},verticalAlign:a.textVerticalAlign??{Top:0,Middle:1,Bottom:2}[e.verticalAlignment]??0};return e.kind==="textwindow"?((e.interactable===!1||e.showScrollBar===!1)&&n.push(`${e.name}: \u6587\u672C\u89C6\u7A97\u4EA4\u4E92/\u6EDA\u52A8\u6761\u5F00\u5173\u4EC5\u4FDD\u5B58\u5728 JSON\uFF0CGIA \u672A\u6620\u5C04\u8FD9\u4E9B\u6539\u52A8\u3002`),d.field511=a.textField511??1,d.viewFlags={field502:a.textViewField502??1,field503:a.textViewField503??1},[l,{empty81:"",field501:71,field502:94,details:Kt(t,66,94,{textConfig:d})},u]):[l,r(64,84,"empty74","textConfig",d),u]}if(e.kind==="image"){let s=[0,1].includes(a.imageSlotType??0)?e.imageType==="Stretch"?1:0:a.imageSlotType;e.imageType==null&&e.imageSource==="StaticReference"&&e.imageId>100006&&n.push(`${e.name}: \u56FE\u7247\u7C7B\u578B\u968F\u7D20\u6750\u8FB9\u754C\u81EA\u52A8\u9009\u62E9\uFF0CGIA \u6309\u57FA\u7840\u5BFC\u51FA\uFF1B\u9700\u8981\u62C9\u4F38\u8BF7\u5148\u660E\u786E\u9009\u62E9\u6216\u5728 Lua \u8BBE\u7F6E imageType\u3002`),e.imageSource&&e.imageSource!=="StaticReference"&&n.push(`${e.name}: \u56FE\u7247\u6765\u6E90 ${e.imageSource} \u4EC5\u4FDD\u5B58\u5728 JSON\uFF0C\u5C1A\u672A\u6620\u5C04\u5230 GIA\uFF1B\u8BF7\u5728 Lua \u4E2D\u7528 SetImage(Enum.ImageSource.${e.imageSource}, ${e.imageId}) \u8BBE\u7F6E\u3002`);let f={Horizontal:1,Vertical:2,Radial90:3,Radial180:4,Radial360:5}[e.fillType],d=Number.isFinite(a.imageFillType)?Math.trunc(a.imageFillType):f||1;e.enableFill&&!d&&n.push(`${e.name}: \u586B\u5145\u5F62\u72B6\u539F\u59CB\u679A\u4E3E\u4E3A 0\uFF0C\u5DF2\u5173\u95ED\u5BFC\u51FA\u6587\u4EF6\u4E2D\u7684\u8FDB\u5EA6\u586B\u5145\u3002`),e.fillType==="Horizontal"&&e.fillHorizontalType!=="Left"&&n.push(`${e.name}: \u5F53\u524D\u6A2A\u5411\u586B\u5145\u65B9\u5411\u6682\u4E0D\u652F\u6301\u5199\u5165 GIA\u3002`),e.fillType==="Radial180"&&e.fillRadialType!=="Bottom"&&n.push(`${e.name}: \u5F53\u524D 180 \u5EA6\u586B\u5145\u8D77\u70B9\u6682\u4E0D\u652F\u6301\u5199\u5165 GIA\u3002`);let g={field502:a.imageField502??1,field504:a.imageField504??1,field505:a.imageField505??1,field507:a.imageField507??2,field508:Math.round(Math.max(0,Math.min(1,Number(e.fillAmount)||0))*100),border:{field501:bi(e.softEdgeWidthX,8),field502:bi(e.softEdgeWidthY,8)},field512:bi(e.horizontalSoftRange,85),field513:bi(e.verticalSoftRange,85),fillType:d,...e.enableMask?{enableMask:1}:{},...e.enableSoftEdge?{enableSoftEdge:1}:{},...e.softEdgeMode==="Pixel"?{softEdgePixel:1}:{},...e.enableFill&&d?{enableFill:1}:{},...e.reverseMaskArea?{reverseMask:1}:{}};return[l,r(73,96,"empty83","imageSlot",{field502:Number.isFinite(e.imageColor)?e.imageColor>>>0:4294967295,assetId:e.imageId>>>0,...s?{imageType:s}:{}}),r(74,97,"empty84","image",g),u]}if(e.kind==="button"){let s=(m,y)=>{let w=e[m];return w?(e.children||[]).some(_=>_.id===w)?i.get(w)||0:(n.push(`${e.name}: ${y}\u72B6\u6001\u8282\u70B9\u4E0D\u662F\u6309\u94AE\u7684\u76F4\u63A5\u5B50\u63A7\u4EF6\uFF0CGIA \u672A\u5199\u5165\u8BE5\u72B6\u6001\u3002`),0):0},f=s("unavailableChildId","\u4E0D\u53EF\u7528"),d=s("hoverChildId","\u60AC\u505C"),g=s("pressedChildId","\u6309\u4E0B"),p=s("selectedChildId","\u9009\u4E2D");return[l,r(70,93,"empty80","buttonPreset",{clickAudioId:Math.trunc(e.clickAudioId),...f?{disabledChild:f}:{},...d?{hoverChild:d}:{},...g?{pressedChild:g}:{},...p?{selectedChild:p}:{},...e.interactable?{interactable:1}:{},...e.raycastTarget?{raycastTarget:1}:{}}),u]}return e.kind==="cursor"?[l,r(65,85,"empty75","cursorConfig",{field501:[void 0,0,1].includes(a.cursorField501)?e.raycastTarget!==!1?1:0:a.cursorField501}),u]:e.kind==="reference"?[l,r(66,89,"empty76","templateRefSlot",a.templateRefSlot??""),u]:e.kind==="grid"?((e.itemPrefabId||e.interactable===!1||e.showScrollBar===!1||e.raycastTarget===!1||e.scrollDirection!=="Vertical"||e.layoutConstraint!=="AutoWrap")&&n.push(`${e.name}: \u7F51\u683C\u5217\u8868\u9879\u6A21\u677F\u3001\u4EA4\u4E92/\u6EDA\u52A8\u6761\u5F00\u5173\u3001\u6EDA\u52A8\u65B9\u5411\u53CA\u6392\u5217\u9650\u5236\u4EC5\u4FDD\u5B58\u5728 JSON\uFF0CGIA \u672A\u6620\u5C04\u8FD9\u4E9B\u6539\u52A8\u3002`),[l,r(69,92,"empty79","gridView",{field501:a.gridField501??1,cellSize:{field501:e.cellSizeX,field502:e.cellSizeY},gap:{field501:e.spacingX,field502:e.spacingY},padding1:{field501:e.padding1X,field502:e.padding1Y},padding2:{field501:e.padding2X,field502:e.padding2Y},field507:a.gridField507??1,field508:a.gridField508??1,field509:a.gridField509??1,field511:a.gridField511??5,field512:a.gridField512??1}),u]):e.kind==="keyhint"?[l,r(72,95,"empty82","keyHint",{field501:Number.isFinite(a.keyHintField501)?Math.trunc(a.keyHintField501):e.controllerKeyCode??1,field502:Number.isFinite(a.keyHintField502)?Math.trunc(a.keyHintField502):e.keyboardKeyCode??1}),u]:e.kind==="animation"?[l,r(75,98,"empty85","effectSlot",a.effectSlot??""),u]:e.kind==="fullscreen"?[l,r(76,99,"empty86","fullscreenEffectSlot",a.fullscreenEffectSlot??""),u]:(n.push(`${e.name}: ${e.kind} \u4E0D\u662F\u5DF2\u77E5 GIA \u63A7\u4EF6\u7C7B\u578B\uFF0C\u5DF2\u4EC5\u5199\u516C\u5171\u53D8\u6362\u3002`),[l,u])}function cl(e,t){if(t)return 1;if(!Ce(e.giaInfoIndex))throw new Error(`${e.name}: \u7F3A\u5C11\u5408\u6CD5\u7684\u5BA2\u6237\u7AEF\u8D44\u4EA7\u7F16\u53F7`);return e.giaInfoIndex}function fl(e,t,i){let n=Array.isArray(e.giaRelatedGuids)?e.giaRelatedGuids.filter(r=>Number.isSafeInteger(r)&&r>0&&r<=2147483647):[];return n.length?n:(t.push(`${e.name}: \u65B0${i}\u5199\u5165\u663E\u5F0F\u7A7A Info.related\uFF0C\u907F\u514D\u8DE8\u6C99\u7BB1\u590D\u7528\u4F34\u751F\u8D44\u6E90 GUID \u4EA7\u751F\u65E0\u6CD5\u52A0\u8F7D\u7684\u7D22\u5F15\u3002`),[])}function un(e,t){let i=String(e.meta?.giaFilePath||"").trim();if(/^\d+-\d+-\d+-\\.+\.gia$/iu.test(i))return i;let n=(s,f)=>Number.isSafeInteger(Number(s))&&Number(s)>0?Number(s):f,r=n(e.meta?.giaOwnerUid,114514),a=n(e.meta?.giaTimestamp,Math.floor(Date.now()/1e3)),o=n(e.meta?.giaFileId,t?1073741829:1073741830),l=t?"\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F\u5217\u8868.gia":"\u670D\u52A1\u7AEF\u63A7\u4EF6\u6A21\u677F-\u5BA2\u6237\u7AEF\u63A7\u4EF6\u5BB9\u5668.gia",u=String(e.meta?.giaFileName||l).replace(/[\\/:*?"<>|]/gu,"-").replace(/\.gia$/iu,"").trim()||l.replace(/\.gia$/iu,"");return`${r}-${a}-${o}-\\${u}.gia`}function Si(e,t,i,n,r,a=!1,o=!1,l=o,u=!1){let s=i.get(e.id),d=(u?[...e.children||[]].reverse():e.children||[]).map(m=>i.get(m.id)),g=a?n:d,p=sl(e,s,a);if(a){let m=e.children?.[0];m&&p.push({empty72:"",field501:62,field502:82,details:Kt(s,64,82,{rootChildRef:{guid:i.get(m.id)}})})}else p.push(...ul(e,s,i,r));return{id:sn(s),relatedIds:g.map(m=>sn(m)),name:e.name,which:a?21:o?70:15,ui:{content:{guid:s,info:[{guid:{value:s},field501:1,field502:5},...a||l?[{index:{value:cl(e,a)},field501:2,field502:6}]:[],...a||o?[{related:{value:fl(e,r,a?"\u670D\u52A1\u7AEF\u63A7\u4EF6\u6A21\u677F":"\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F")},field501:4,field502:4}]:[]],children:a?[]:d,parent:t&&t.kind!=="server-container"?i.get(t.id):0,data:p}}}}function Br(e){let t=[];return W(e.root,(i,n)=>{i.kind!=="server-container"&&t.push({node:i,parent:n})}),t}function dl(e,t){let i=new Map;for(let n of e||[]){if(!n.controlId||!(t===vi?n.controlAsset===vi:n.controlAsset!==vi))continue;let a=i.get(n.controlId)||[];a.push(n.guid),i.set(n.controlId,a)}return i}function Xr(e,t,i,n){let r=dl(t,i),a=new Map;W(e.root,o=>{r.has(o.id)&&(a.set(o,o.scriptMappingIds),o.scriptMappingIds=r.get(o.id))});try{return n()}finally{for(let[o,l]of a)l===void 0?delete o.scriptMappingIds:o.scriptMappingIds=l}}function cn(e){let t=Number(e.meta?.giaModeFlag);return Number.isSafeInteger(t)&&t>=0?{modeFlag:t}:{}}function fn(e){let t=e.meta?.gameVersion;return!t||t==="7.0.50"?hi:t}function Ur(e,t,i,n,r=[]){let a=Br(e),o=a.filter(({parent:f})=>f?.kind==="server-container");if(!o.length)throw new Error("\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F\u5217\u8868\u81F3\u5C11\u9700\u8981\u4E00\u4E2A\u6A21\u677F");let l=new Set(o.map(({node:f})=>f.id)),u=a.filter(({node:f})=>!l.has(f.id)),s=a.map(({node:f})=>t.get(f.id));return Xr(e,r,vi,()=>({graph:o.map(({node:f,parent:d})=>Si(f,d,t,s,i,!1,!0)),accessories:u.map(({node:f,parent:d})=>Si(f,d,t,s,i,!1,!1,!0)),filePath:n||un(e,!0),gameVersion:fn(e),...cn(e)}))}function jr(e,t,i,n,r){let a=Br(e),o=[a[0],...a.slice(1).reverse()],l=o.map(({node:u})=>t.get(u.id));return Xr(e,i.scripts,il,()=>({graph:[Si(e.root,null,t,l,n,!0,!1,!1,!0),...i.units||[]],accessories:o.map(({node:u,parent:s})=>Si(u,s,t,l,n,!1,!1,!1,!0)),filePath:r||un(e,!1),gameVersion:fn(e),...cn(e)}))}function Hr(e,t){let i=dn(e),n=t(i);if(!n.valid)throw new Error(`GIA compatibility validation failed:
102
+ `,{root:al}=nl.parse(rl,{keepCase:!1}),Re=al.lookupType("Root"),et=20,mn=4,Yr=806,Xr=1657,ei={image:23,"server-container":24,container:25,grid:26,reference:27,button:28,animation:29,fullscreen:30,textbox:31,textwindow:32,cursor:33,keyhint:34},Br={KEYBOARD:0,TOUCHSCREEN:1,CONTROLLER_CONSOLE:2,CONTROLLER_MOBILE:3},ol="server-control-template",Ai="client-control-template";function Ei(e,t){let i=Number(e);return Number.isFinite(i)?i:t}var ll=Object.fromEntries(Object.entries(Br).map(([e,t])=>[t,e])),Ur=Object.freeze({container:[["2/15","name",null],["4/86","field14","field14"],["1/12","transform","transform"],["63/83","empty73","genericSlot"],["68/91","empty78","containerNodeSlot"],["67/90","empty77","footerSlot"]],textbox:[["2/15","name",null],["4/86","field14","field14"],["1/12","transform","transform"],["63/83","empty73","genericSlot"],["64/84","empty74","textConfig"],["67/90","empty77","footerSlot"]],cursor:[["2/15","name",null],["4/86","field14","field14"],["1/12","transform","transform"],["63/83","empty73","genericSlot"],["65/85","empty75","cursorConfig"],["67/90","empty77","footerSlot"]],reference:[["2/15","name",null],["4/86","field14","field14"],["1/12","transform","transform"],["63/83","empty73","genericSlot"],["66/89","empty76","templateRefSlot"],["67/90","empty77","footerSlot"]],grid:[["2/15","name",null],["4/86","field14","field14"],["1/12","transform","transform"],["63/83","empty73","genericSlot"],["69/92","empty79","gridView"],["67/90","empty77","footerSlot"]],button:[["2/15","name",null],["4/86","field14","field14"],["1/12","transform","transform"],["63/83","empty73","genericSlot"],["70/93","empty80","buttonPreset"],["67/90","empty77","footerSlot"]],textwindow:[["2/15","name",null],["4/86","field14","field14"],["1/12","transform","transform"],["63/83","empty73","genericSlot"],["71/94","empty81","textConfig"],["67/90","empty77","footerSlot"]],keyhint:[["2/15","name",null],["4/86","field14","field14"],["1/12","transform","transform"],["63/83","empty73","genericSlot"],["72/95","empty82","keyHint"],["67/90","empty77","footerSlot"]],image:[["2/15","name",null],["4/86","field14","field14"],["1/12","transform","transform"],["63/83","empty73","genericSlot"],["73/96","empty83","imageSlot"],["74/97","empty84","image"],["67/90","empty77","footerSlot"]],animation:[["2/15","name",null],["4/86","field14","field14"],["1/12","transform","transform"],["63/83","empty73","genericSlot"],["75/98","empty85","effectSlot"],["67/90","empty77","footerSlot"]],fullscreen:[["2/15","name",null],["4/86","field14","field14"],["1/12","transform","transform"],["63/83","empty73","genericSlot"],["76/99","empty86","fullscreenEffectSlot"],["67/90","empty77","footerSlot"]]}),jr=Object.freeze({"4/23":5,"4/86":5,"1/12":4,"62/82":64,"63/83":65,"64/84":66,"65/85":67,"66/89":68,"67/90":69,"68/91":70,"69/92":71,"70/93":72,"71/94":66,"72/95":74,"73/96":75,"74/97":76,"75/98":77,"76/99":78}),sl=Object.freeze([["2/15","name",null],["4/23","field14","field14"],["1/12","transform","transform"],["62/82","empty72","rootChildRef"]]);function pn(e){return{class:1,type:8,id:e}}function ti(e,t,i,n){return{...n,field501:t,field502:i,field503:1,nodeRef:pn(e)}}function ul(e){let t=[],i=e.meta?.assetType==="client-control-template";return Z(e.root,n=>{i&&n.kind==="server-container"||t.push(n)}),t}function ii(e,t=new Set){let i=new Map,n=[];for(let r of ul(e)){let a=Number(r.guid);Pe(a)&&!t.has(a)?(t.add(a),r.guid=a,i.set(r.id,a)):n.push(r)}for(let r of n){let a=We(t);t.add(a),r.guid=a,i.set(r.id,a)}return i}function cl(e){return{scale:{x:e.scale.x,y:e.scale.y,z:e.scale.z},anchorMin:{x:e.anchorMin.x,y:e.anchorMin.y},anchorMax:{x:e.anchorMax.x,y:e.anchorMax.y},offset:{x:e.offset.x,y:e.offset.y},size:{x:e.size.x,y:e.size.y},pivot:{x:e.pivot.x,y:e.pivot.y},field508:Object.fromEntries(Object.entries(e.rotation).filter(([,t])=>t!==0))}}function fl(e,t){let n={multiPlatform:{platforms:se.map(r=>({platformType:Br[r],transform:cl(e.transformByPlatform[r])})),field502:ei[e.kind]||25,...e.syncAllDevices===!1?{}:{field504:1}},type:2};return{transform:{multiPlatform:{},type:2},field501:1,field502:12,details:ti(t,4,12,{transform:n})}}function dl(e,t,i){let n=i?{empty15:"",field501:5}:{field17:{},field501:7},r=i?n:{...n,...e.visible===!1?{field17:{initiallyHidden:!0}}:{},...e.active===!1?{initiallyInactive:!0}:{}};return[{name:{value:e.name},field501:2,field502:15},{field14:n,field501:4,field502:i?23:86,details:ti(t,5,i?23:86,{field14:r})},fl(e,t)]}function hl(e,t,i,n){let r=(s,f,h,p,g)=>({[h]:"",field501:s,field502:f,details:ti(t,s+2,f,{[p]:g})}),a=e.giaRaw||{},o=Array.isArray(e.scriptMappingIds)&&e.scriptMappingIds.length?{field501:a.genericField501||1,field502:e.scriptMappingIds.map(s=>({field1:{id:Number(s)}}))}:{field501:a.genericField501??0},l=r(63,83,"empty73","genericSlot",o),u=r(67,90,"empty77","footerSlot",{field505:[void 0,0,1].includes(a.footerField505)?e.canControllerFocus?1:0:a.footerField505});if(e.kind==="container")return[l,r(68,91,"empty78","containerNodeSlot",{...e.isolateNavigation?{isolateNavigation:!0}:{},...e.disableKeyEventPassthrough?{disableKeyEventPassthrough:!0}:{},...e.disableCursorEventPassthrough?{disableCursorEventPassthrough:!0}:{},...e.showCursor?{showCursor:!0}:{}}),u];if(e.kind==="textbox"||e.kind==="textwindow"){e.verticalAlignment==="Middle"&&n.push(`${e.name}: \u5782\u76F4\u5C45\u4E2D\u6309\u63A8\u5B9A\u503C\u5BFC\u51FA\uFF0C\u5C1A\u5F85\u5B9E\u673A\u786E\u8BA4\u3002`);let s={Left:0,Middle:1,Right:2}[e.horizontalAlignment]??0,f=Number.isFinite(a.textAlign)?Math.trunc(a.textAlign):s,h={field501:a.textField501??20,field503:a.textField503??12,color:e.fontColor>>>0,color2:e.bgColor>>>0,color3:e.outlineColor>>>0,text:{value:e.text||""},fontSize:Math.trunc(e.fontSize),minimumFontSize:Math.trunc(e.minimumFontSize),...e.adaptiveFontSize?{adaptive:1}:{},...e.enableOutline===!1?{outlineOff:1}:{},...f?{align:f}:{},verticalAlign:a.textVerticalAlign??{Top:0,Middle:1,Bottom:2}[e.verticalAlignment]??0};return e.kind==="textwindow"?((e.interactable===!1||e.showScrollBar===!1)&&n.push(`${e.name}: \u6587\u672C\u89C6\u7A97\u4EA4\u4E92/\u6EDA\u52A8\u6761\u5F00\u5173\u4EC5\u4FDD\u5B58\u5728 JSON\uFF0CGIA \u672A\u6620\u5C04\u8FD9\u4E9B\u6539\u52A8\u3002`),h.field511=a.textField511??1,h.viewFlags={field502:a.textViewField502??1,field503:a.textViewField503??1},[l,{empty81:"",field501:71,field502:94,details:ti(t,66,94,{textConfig:h})},u]):[l,r(64,84,"empty74","textConfig",h),u]}if(e.kind==="image"){let s=[0,1].includes(a.imageSlotType??0)?e.imageType==="Stretch"?1:0:a.imageSlotType;e.imageType==null&&e.imageSource==="StaticReference"&&e.imageId>100006&&n.push(`${e.name}: \u56FE\u7247\u7C7B\u578B\u968F\u7D20\u6750\u8FB9\u754C\u81EA\u52A8\u9009\u62E9\uFF0CGIA \u6309\u57FA\u7840\u5BFC\u51FA\uFF1B\u9700\u8981\u62C9\u4F38\u8BF7\u5148\u660E\u786E\u9009\u62E9\u6216\u5728 Lua \u8BBE\u7F6E imageType\u3002`),e.imageSource&&e.imageSource!=="StaticReference"&&n.push(`${e.name}: \u56FE\u7247\u6765\u6E90 ${e.imageSource} \u4EC5\u4FDD\u5B58\u5728 JSON\uFF0C\u5C1A\u672A\u6620\u5C04\u5230 GIA\uFF1B\u8BF7\u5728 Lua \u4E2D\u7528 SetImage(Enum.ImageSource.${e.imageSource}, ${e.imageId}) \u8BBE\u7F6E\u3002`);let f={Horizontal:1,Vertical:2,Radial90:3,Radial180:4,Radial360:5}[e.fillType],h=Number.isFinite(a.imageFillType)?Math.trunc(a.imageFillType):f||1;e.enableFill&&!h&&n.push(`${e.name}: \u586B\u5145\u5F62\u72B6\u539F\u59CB\u679A\u4E3E\u4E3A 0\uFF0C\u5DF2\u5173\u95ED\u5BFC\u51FA\u6587\u4EF6\u4E2D\u7684\u8FDB\u5EA6\u586B\u5145\u3002`),e.fillType==="Horizontal"&&e.fillHorizontalType!=="Left"&&n.push(`${e.name}: \u5F53\u524D\u6A2A\u5411\u586B\u5145\u65B9\u5411\u6682\u4E0D\u652F\u6301\u5199\u5165 GIA\u3002`),e.fillType==="Radial180"&&e.fillRadialType!=="Bottom"&&n.push(`${e.name}: \u5F53\u524D 180 \u5EA6\u586B\u5145\u8D77\u70B9\u6682\u4E0D\u652F\u6301\u5199\u5165 GIA\u3002`);let p={field502:a.imageField502??1,field504:a.imageField504??1,field505:a.imageField505??1,field507:a.imageField507??2,field508:Math.round(Math.max(0,Math.min(1,Number(e.fillAmount)||0))*100),border:{field501:Ei(e.softEdgeWidthX,8),field502:Ei(e.softEdgeWidthY,8)},field512:Ei(e.horizontalSoftRange,85),field513:Ei(e.verticalSoftRange,85),fillType:h,...e.enableMask?{enableMask:1}:{},...e.enableSoftEdge?{enableSoftEdge:1}:{},...e.softEdgeMode==="Pixel"?{softEdgePixel:1}:{},...e.enableFill&&h?{enableFill:1}:{},...e.reverseMaskArea?{reverseMask:1}:{}};return[l,r(73,96,"empty83","imageSlot",{field502:Number.isFinite(e.imageColor)?e.imageColor>>>0:4294967295,assetId:e.imageId>>>0,...s?{imageType:s}:{}}),r(74,97,"empty84","image",p),u]}if(e.kind==="button"){let s=(m,y)=>{let I=e[m];return I?(e.children||[]).some(A=>A.id===I)?i.get(I)||0:(n.push(`${e.name}: ${y}\u72B6\u6001\u8282\u70B9\u4E0D\u662F\u6309\u94AE\u7684\u76F4\u63A5\u5B50\u63A7\u4EF6\uFF0CGIA \u672A\u5199\u5165\u8BE5\u72B6\u6001\u3002`),0):0},f=s("unavailableChildId","\u4E0D\u53EF\u7528"),h=s("hoverChildId","\u60AC\u505C"),p=s("pressedChildId","\u6309\u4E0B"),g=s("selectedChildId","\u9009\u4E2D");return[l,r(70,93,"empty80","buttonPreset",{clickAudioId:Math.trunc(e.clickAudioId),...f?{disabledChild:f}:{},...h?{hoverChild:h}:{},...p?{pressedChild:p}:{},...g?{selectedChild:g}:{},...e.interactable?{interactable:1}:{},...e.raycastTarget?{raycastTarget:1}:{}}),u]}return e.kind==="cursor"?[l,r(65,85,"empty75","cursorConfig",{field501:[void 0,0,1].includes(a.cursorField501)?e.raycastTarget!==!1?1:0:a.cursorField501}),u]:e.kind==="reference"?[l,r(66,89,"empty76","templateRefSlot",a.templateRefSlot??""),u]:e.kind==="grid"?((e.itemPrefabId||e.interactable===!1||e.showScrollBar===!1||e.raycastTarget===!1||e.scrollDirection!=="Vertical"||e.layoutConstraint!=="AutoWrap")&&n.push(`${e.name}: \u7F51\u683C\u5217\u8868\u9879\u6A21\u677F\u3001\u4EA4\u4E92/\u6EDA\u52A8\u6761\u5F00\u5173\u3001\u6EDA\u52A8\u65B9\u5411\u53CA\u6392\u5217\u9650\u5236\u4EC5\u4FDD\u5B58\u5728 JSON\uFF0CGIA \u672A\u6620\u5C04\u8FD9\u4E9B\u6539\u52A8\u3002`),[l,r(69,92,"empty79","gridView",{field501:a.gridField501??1,cellSize:{field501:e.cellSizeX,field502:e.cellSizeY},gap:{field501:e.spacingX,field502:e.spacingY},padding1:{field501:e.padding1X,field502:e.padding1Y},padding2:{field501:e.padding2X,field502:e.padding2Y},field507:a.gridField507??1,field508:a.gridField508??1,field509:a.gridField509??1,field511:a.gridField511??5,field512:a.gridField512??1}),u]):e.kind==="keyhint"?[l,r(72,95,"empty82","keyHint",{field501:Number.isFinite(a.keyHintField501)?Math.trunc(a.keyHintField501):e.controllerKeyCode??1,field502:Number.isFinite(a.keyHintField502)?Math.trunc(a.keyHintField502):e.keyboardKeyCode??1}),u]:e.kind==="animation"?[l,r(75,98,"empty85","effectSlot",a.effectSlot??""),u]:e.kind==="fullscreen"?[l,r(76,99,"empty86","fullscreenEffectSlot",a.fullscreenEffectSlot??""),u]:(n.push(`${e.name}: ${e.kind} \u4E0D\u662F\u5DF2\u77E5 GIA \u63A7\u4EF6\u7C7B\u578B\uFF0C\u5DF2\u4EC5\u5199\u516C\u5171\u53D8\u6362\u3002`),[l,u])}function ml(e,t){if(t)return 1;if(!ke(e.giaInfoIndex))throw new Error(`${e.name}: \u7F3A\u5C11\u5408\u6CD5\u7684\u5BA2\u6237\u7AEF\u8D44\u4EA7\u7F16\u53F7`);return e.giaInfoIndex}function pl(e,t,i){let n=Array.isArray(e.giaRelatedGuids)?e.giaRelatedGuids.filter(r=>Number.isSafeInteger(r)&&r>0&&r<=2147483647):[];return n.length?n:(t.push(`${e.name}: \u65B0${i}\u5199\u5165\u663E\u5F0F\u7A7A Info.related\uFF0C\u907F\u514D\u8DE8\u6C99\u7BB1\u590D\u7528\u4F34\u751F\u8D44\u6E90 GUID \u4EA7\u751F\u65E0\u6CD5\u52A0\u8F7D\u7684\u7D22\u5F15\u3002`),[])}function gn(e,t){let i=String(e.meta?.giaFilePath||"").trim();if(/^\d+-\d+-\d+-\\.+\.gia$/iu.test(i))return i;let n=(s,f)=>Number.isSafeInteger(Number(s))&&Number(s)>0?Number(s):f,r=n(e.meta?.giaOwnerUid,114514),a=n(e.meta?.giaTimestamp,Math.floor(Date.now()/1e3)),o=n(e.meta?.giaFileId,t?1073741829:1073741830),l=t?"\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F\u5217\u8868.gia":"\u670D\u52A1\u7AEF\u63A7\u4EF6\u6A21\u677F-\u5BA2\u6237\u7AEF\u63A7\u4EF6\u5BB9\u5668.gia",u=String(e.meta?.giaFileName||l).replace(/[\\/:*?"<>|]/gu,"-").replace(/\.gia$/iu,"").trim()||l.replace(/\.gia$/iu,"");return`${r}-${a}-${o}-\\${u}.gia`}function _i(e,t,i,n,r,a=!1,o=!1,l=o,u=!1){let s=i.get(e.id),h=(u?[...e.children||[]].reverse():e.children||[]).map(m=>i.get(m.id)),p=a?n:h,g=dl(e,s,a);if(a){let m=e.children?.[0];m&&g.push({empty72:"",field501:62,field502:82,details:ti(s,64,82,{rootChildRef:{guid:i.get(m.id)}})})}else g.push(...hl(e,s,i,r));return{id:pn(s),relatedIds:p.map(m=>pn(m)),name:e.name,which:a?21:o?70:15,ui:{content:{guid:s,info:[{guid:{value:s},field501:1,field502:5},...a||l?[{index:{value:ml(e,a)},field501:2,field502:6}]:[],...a||o?[{related:{value:pl(e,r,a?"\u670D\u52A1\u7AEF\u63A7\u4EF6\u6A21\u677F":"\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F")},field501:4,field502:4}]:[]],children:a?[]:h,parent:t&&t.kind!=="server-container"?i.get(t.id):0,data:g}}}}function gl(e,t){let i=new Map;for(let n of e||[]){if(!n.controlId||!(t===Ai?n.controlAsset===Ai:n.controlAsset!==Ai))continue;let a=i.get(n.controlId)||[];a.push(n.guid),i.set(n.controlId,a)}return i}function Hr(e,t,i,n){let r=gl(t,i),a=new Map;Z(e.root,o=>{r.has(o.id)&&(a.set(o,o.scriptMappingIds),o.scriptMappingIds=r.get(o.id))});try{return n()}finally{for(let[o,l]of a)l===void 0?delete o.scriptMappingIds:o.scriptMappingIds=l}}function yn(e){let t=Number(e.meta?.giaModeFlag);return Number.isSafeInteger(t)&&t>=0?{modeFlag:t}:{}}function bn(e){let t=e.meta?.gameVersion;return!t||t==="7.0.50"?wi:t}function Kr(e,t,i,n,r=[]){let a=Mt(e,!0),o=a.filter(({parent:f})=>f?.kind==="server-container");if(!o.length)throw new Error("\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F\u5217\u8868\u81F3\u5C11\u9700\u8981\u4E00\u4E2A\u6A21\u677F");let l=new Set(o.map(({node:f})=>f.id)),u=a.filter(({node:f})=>!l.has(f.id)),s=a.map(({node:f})=>t.get(f.id));return Hr(e,r,Ai,()=>({graph:o.map(({node:f,parent:h})=>_i(f,h,t,s,i,!1,!0,!0,!0)),accessories:u.map(({node:f,parent:h})=>_i(f,h,t,s,i,!1,!1,!0,!0)),filePath:n||gn(e,!0),gameVersion:bn(e),...yn(e)}))}function qr(e,t,i,n,r){let a=Mt(e),o=[a[0],...a.slice(1).reverse()],l=o.map(({node:u})=>t.get(u.id));return Hr(e,i.scripts,ol,()=>({graph:[_i(e.root,null,t,l,n,!0,!1,!1,!0),...i.units||[]],accessories:o.map(({node:u,parent:s})=>_i(u,s,t,l,n,!1,!1,!1,!0)),filePath:r||gn(e,!1),gameVersion:bn(e),...yn(e)}))}function Lr(e,t){let i=vn(e),n=t(i);if(!n.valid)throw new Error(`GIA compatibility validation failed:
103
103
  ${n.errors.join(`
104
- `)}`);return i}function Kr(e,t={}){W(e.root,ot);let i=[];Ve(e,{warnings:i});let n=qt(D(e)),r=e.meta?.assetType==="client-control-template",a;if(r)a=Ur(e,n,i,void 0,t.scripts||[]);else{let l=hn(t.scripts||[],new Set(n.values()));i.push(...l.warnings),a=jr(e,n,l,i)}return{buffer:Hr(a,r?pn:gn),warnings:[...new Set(i)]}}function qr(e,t,i={}){W(e.root,ot),t&&W(t.root,ot);let n=["\u6574\u5408\u5305\u628A\u670D\u52A1\u7AEF UIControlGroup \u4E0E\u5BA2\u6237\u7AEF UIControlTemplate \u5E76\u6392\u5199\u5165\u540C\u4E00 GIA \u7684 Root.graph\uFF1B\u5BFC\u5165\u65F6\u62C6\u56DE\u4E24\u7C7B\u8D44\u4EA7\uFF0C\u6A21\u677F\u8FB9\u754C\u3001\u811A\u672C\u6620\u5C04\u4E0E\u63A7\u4EF6\u6302\u8F7D\u5173\u7CFB\u4F1A\u4FDD\u7559\u3002"];t&&Ve(t,{warnings:n});let r=t?.root?.children||[];r.length||n.push("\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F\u4E3A\u7A7A\uFF0C\u6574\u5408\u5305\u53EA\u5305\u542B\u670D\u52A1\u7AEF\u63A7\u4EF6\u4E0E\u811A\u672C\u3002");let a=new Set,o=D(e),l=t?D(t):null,u=qt(o,a),s=hn(i.scripts||[],a);n.push(...s.warnings.filter(w=>w!==Wr));let f=String(i.fileName||`${o.meta?.name||"\u6574\u5408\u5305"} \xB7 \u6574\u5408\u5305.gia`),d=un({...o,meta:{...o.meta,giaFileName:f}},!1),g=jr(o,u,s,n,d),p={graph:[],accessories:[]};if(r.length&&l){let w=qt({...l,meta:{...l.meta,assetType:"client-control-template"}},a);p=Ur(l,w,n,d,s.scripts)}let m={graph:[...g.graph,...p.graph],accessories:[...g.accessories,...p.accessories],filePath:d,gameVersion:fn({meta:{gameVersion:e.meta?.gameVersion||t?.meta?.gameVersion}}),...cn(e)};return{buffer:Hr(m,gn),warnings:[...new Set(n)]}}var At=69,Lr=30,Wr="\u811A\u672C\u6302\u8F7D\u5173\u7CFB\u4E0D\u8FDB\u5165 GIA\uFF1A\u5B98\u65B9 script.gia \u53EA\u542B\u6620\u5C04\uFF08ID/\u540D\u79F0/\u8DEF\u5F84/\u6E90\u7801\uFF09\uFF0C\u5BFC\u5165\u540E\u9700\u91CD\u65B0\u6302\u8F7D\u3002";function hl(e){return(String(e.path||"").replace(/\\/g,"/").split("/").pop()||"").replace(/\.lua$/iu,"")||`\u811A\u672C${e.id||""}`}function dn(e){let t=_e.verify(e);if(t)throw new Error(`GIA encode validation failed: ${t}`);let i=_e.encode(_e.create(e)).finish(),n=Buffer.alloc(Ze+i.length+ln);return n.writeUInt32BE(n.length-4,0),n.writeUInt32BE(1,4),n.writeUInt32BE($r,8),n.writeUInt32BE(3,12),n.writeUInt32BE(i.length,16),Buffer.from(i).copy(n,Ze),n.writeUInt32BE(Dr,Ze+i.length),n}function hn(e,t=new Set){let i=(e||[]).filter(o=>o.path||o.source).map(o=>({...o})),n=[];for(let o of i){let l=Number(o.guid);Ae(l)&&!t.has(l)?(t.add(l),o.guid=l):n.push(o)}for(let o of n){let l=qe(t);t.add(l),o.guid=l}let r=[];return(e||[]).some(o=>o.controlId)&&r.push(Wr),{units:i.map(o=>{let l=hl(o),u=String(o.path||"").replace(/\\/g,"/"),s=/\.lua$/iu.test(u)?u:`${u||l}.lua`,f={id:o.guid,name:l,filePath:s};return String(o.source||"")&&(f.source=String(o.source)),{id:{class:Lr,id:o.guid},name:l,which:At,script:{mapping:f}}}),warnings:r,scripts:i}}function Jr(e){let t=hn(e);if(!t.units.length)throw new Error("\u6CA1\u6709\u53EF\u5BFC\u51FA\u7684 Lua \u811A\u672C\uFF0C\u8BF7\u5148\u5728\u201CLua \u811A\u672C\u201D\u9875\u521B\u5EFA");let i={graph:t.units,filePath:`114514-${Math.floor(Date.now()/1e3)}-1073741832-\\script.gia`,gameVersion:"7.0.51"},n=dn(i),r=ml(n);if(!r.valid)throw new Error(`GIA compatibility validation failed:
104
+ `)}`);return i}function Wr(e,t={}){Z(e.root,ut);let i=[];Xe(e,{warnings:i});let n=ii(V(e)),r=e.meta?.assetType==="client-control-template",a;if(r)a=Kr(e,n,i,void 0,t.scripts||[]);else{let l=Sn(t.scripts||[],new Set(n.values()));i.push(...l.warnings),a=qr(e,n,l,i)}return{buffer:Lr(a,r?In:xn),warnings:[...new Set(i)]}}function Jr(e,t,i={}){Z(e.root,ut),t&&Z(t.root,ut);let n=["\u6574\u5408\u5305\u628A\u670D\u52A1\u7AEF UIControlGroup \u4E0E\u5BA2\u6237\u7AEF UIControlTemplate \u5E76\u6392\u5199\u5165\u540C\u4E00 GIA \u7684 Root.graph\uFF1B\u5BFC\u5165\u65F6\u62C6\u56DE\u4E24\u7C7B\u8D44\u4EA7\uFF0C\u6A21\u677F\u8FB9\u754C\u3001\u811A\u672C\u6620\u5C04\u4E0E\u63A7\u4EF6\u6302\u8F7D\u5173\u7CFB\u4F1A\u4FDD\u7559\u3002"];t&&Xe(t,{warnings:n});let r=t?.root?.children||[];r.length||n.push("\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F\u4E3A\u7A7A\uFF0C\u6574\u5408\u5305\u53EA\u5305\u542B\u670D\u52A1\u7AEF\u63A7\u4EF6\u4E0E\u811A\u672C\u3002");let a=new Set,o=V(e),l=t?V(t):null,u=ii(o,a),s=Sn(i.scripts||[],a);n.push(...s.warnings.filter(I=>I!==Qr));let f=String(i.fileName||`${o.meta?.name||"\u6574\u5408\u5305"} \xB7 \u6574\u5408\u5305.gia`),h=gn({...o,meta:{...o.meta,giaFileName:f}},!1),p=qr(o,u,s,n,h),g={graph:[],accessories:[]};if(r.length&&l){let I=ii({...l,meta:{...l.meta,assetType:"client-control-template"}},a);g=Kr(l,I,n,h,s.scripts)}let m={graph:[...p.graph,...g.graph],accessories:[...p.accessories,...g.accessories],filePath:h,gameVersion:bn({meta:{gameVersion:e.meta?.gameVersion||t?.meta?.gameVersion}}),...yn(e)};return{buffer:Lr(m,xn),warnings:[...new Set(n)]}}var Nt=69,Zr=30,Qr="\u811A\u672C\u6302\u8F7D\u5173\u7CFB\u4E0D\u8FDB\u5165 GIA\uFF1A\u5B98\u65B9 script.gia \u53EA\u542B\u6620\u5C04\uFF08ID/\u540D\u79F0/\u8DEF\u5F84/\u6E90\u7801\uFF09\uFF0C\u5BFC\u5165\u540E\u9700\u91CD\u65B0\u6302\u8F7D\u3002";function yl(e){return(String(e.path||"").replace(/\\/g,"/").split("/").pop()||"").replace(/\.lua$/iu,"")||`\u811A\u672C${e.id||""}`}function vn(e){let t=Re.verify(e);if(t)throw new Error(`GIA encode validation failed: ${t}`);let i=Re.encode(Re.create(e)).finish(),n=Buffer.alloc(et+i.length+mn);return n.writeUInt32BE(n.length-4,0),n.writeUInt32BE(1,4),n.writeUInt32BE(Yr,8),n.writeUInt32BE(3,12),n.writeUInt32BE(i.length,16),Buffer.from(i).copy(n,et),n.writeUInt32BE(Xr,et+i.length),n}function Sn(e,t=new Set){let i=(e||[]).filter(o=>o.path||o.source).map(o=>({...o})),n=[];for(let o of i){let l=Number(o.guid);Pe(l)&&!t.has(l)?(t.add(l),o.guid=l):n.push(o)}for(let o of n){let l=We(t);t.add(l),o.guid=l}let r=[];return(e||[]).some(o=>o.controlId)&&r.push(Qr),{units:i.map(o=>{let l=yl(o),u=String(o.path||"").replace(/\\/g,"/"),s=/\.lua$/iu.test(u)?u:`${u||l}.lua`,f={id:o.guid,name:l,filePath:s};return String(o.source||"")&&(f.source=String(o.source)),{id:{class:Zr,id:o.guid},name:l,which:Nt,script:{mapping:f}}}),warnings:r,scripts:i}}function ea(e){let t=Sn(e);if(!t.units.length)throw new Error("\u6CA1\u6709\u53EF\u5BFC\u51FA\u7684 Lua \u811A\u672C\uFF0C\u8BF7\u5148\u5728\u201CLua \u811A\u672C\u201D\u9875\u521B\u5EFA");let i={graph:t.units,filePath:`114514-${Math.floor(Date.now()/1e3)}-1073741832-\\script.gia`,gameVersion:"7.0.51"},n=vn(i),r=bl(n);if(!r.valid)throw new Error(`GIA compatibility validation failed:
105
105
  ${r.errors.join(`
106
- `)}`);return{buffer:n,warnings:[...new Set(t.warnings)]}}function mn(e){return _e.toObject(_e.decode(wi(e)),{longs:Number,enums:Number,bytes:Buffer,defaults:!1,arrays:!0,objects:!0})}function Zr(e){try{let i=mn(e).graph||[];return i.length>0&&i.every(n=>Number(n.which)===At)}catch{return!1}}function Qr(e){let t=(e.graph||[]).filter(r=>Number(r.which)===At),i=[],n=t.map((r,a)=>{let o=r.script?.mapping||{},l=Number(r.id?.id)||0;l<=0&&i.push(`\u7B2C ${a+1} \u6761\u811A\u672C\u6620\u5C04\u7F3A\u5C11 GraphUnit.id.id\uFF0C\u5DF2\u6309 0 \u5904\u7406\uFF08\u5BFC\u51FA\u65F6\u4F1A\u91CD\u65B0\u5206\u914D\uFF09\u3002`);let u=Number(o.id)||0;return u&&u!==l&&i.push(`\u7B2C ${a+1} \u6761\u811A\u672C\u6620\u5C04 id(${u}) \u4E0E\u5355\u5143 id(${l}) \u4E0D\u4E00\u81F4\uFF0C\u4EE5\u5355\u5143 id \u4E3A\u51C6\u3002`),{guid:l,path:String(o.filePath||""),source:String(o.source||"")}});for(let[r,a]of n.entries())a.path&&!/\.lua$/iu.test(a.path)&&i.push(`\u7B2C ${r+1} \u6761\u811A\u672C\u6620\u5C04 file_path \u7F3A\u5C11 .lua \u540E\u7F00\uFF08${a.path}\uFF09\uFF0C\u771F\u673A\u53EF\u80FD\u62D2\u7EDD\u5BFC\u5165\uFF1B\u6A21\u62DF\u5668\u5185\u6309\u5F52\u4E00\u5316\u8DEF\u5F84\u7167\u5E38 require\u3002`);return{scripts:n,warnings:i}}function ea(e){let t=mn(e),i=Qr(t);if(!i.scripts.length)throw new Error("GIA \u5185\u6CA1\u6709\u811A\u672C\u6620\u5C04\u5355\u5143\uFF08which=69\uFF09");return{scripts:i.scripts,warnings:i.warnings,metadata:{assetType:"lua-script"}}}function ml(e){let t=[],i;try{i=mn(e)}catch(r){return{valid:!1,errors:[r?.message||String(r)],scriptCount:0}}let n=i.graph||[];return n.length||t.push("Root.graph \u4E3A\u7A7A"),(i.accessories||[]).length&&t.push("script.gia \u4E0D\u5E94\u5305\u542B accessories"),n.forEach((r,a)=>{let o=`\u5355\u5143 ${a+1}`;Number(r.which)!==At&&t.push(`${o}: which \u5E94\u4E3A 69\uFF0C\u5B9E\u9645 ${r.which}`),Number(r.id?.class)!==Lr&&t.push(`${o}: id.class \u5E94\u4E3A 30\uFF0C\u5B9E\u9645 ${r.id?.class}`),Number(r.id?.type??0)!==0&&t.push(`${o}: id.type \u5E94\u7F3A\u7701`);let l=r.script?.mapping;if(!l){t.push(`${o}: \u7F3A\u5C11 field35 ScriptMappingWrapper`);return}Number(r.id?.id)<=0&&t.push(`${o}: GraphUnit.id.id \u975E\u6CD5`),Number(l.id)!==Number(r.id?.id)&&t.push(`${o}: mapping.id \u5E94\u7B49\u4E8E GraphUnit.id.id`),String(l.name||"")!==String(r.name||"")&&t.push(`${o}: mapping.name \u5E94\u7B49\u4E8E GraphUnit.name`),String(l.filePath||"").trim()?/\.lua$/iu.test(String(l.filePath))||t.push(`${o}: file_path \u5E94\u4EE5 .lua \u7ED3\u5C3E\uFF08\u5B98\u65B9 script.gia \u6837\u672C\u5747\u4E3A \u540D\u79F0.lua\uFF0C\u771F\u673A require \u65F6\u624D\u53BB\u6269\u5C55\u540D\uFF09`):t.push(`${o}: file_path \u4E3A\u7A7A`)}),{valid:t.length===0,errors:t,scriptCount:n.length}}function wi(e){let t=Buffer.isBuffer(e)?e:Buffer.from(e);if(t.length<Ze+ln)throw new Error("GIA \u6587\u4EF6\u8FC7\u77ED");if(t.readUInt32BE(4)!==1||t.readUInt32BE(8)!==$r||t.readUInt32BE(12)!==3)throw new Error("\u4E0D\u662F\u53D7\u652F\u6301\u7684 GIA v1 \u6587\u4EF6");let i=t.readUInt32BE(16);if(i!==t.length-Ze-ln)throw new Error("GIA payload \u957F\u5EA6\u4E0D\u4E00\u81F4");if(t.readUInt32BE(Ze+i)!==Dr)throw new Error("GIA \u5C3E\u6807\u8BB0\u65E0\u6548");return t.subarray(Ze,Ze+i)}function fe(e,t){return e.ui?.content?.data?.find(i=>i.details?.[t])?.details?.[t]||null}function pl(e){let t=fe(e,"transform")?.multiPlatform,i={};for(let r of t?.platforms||[]){let a=nl[r.platformType||0],o=r.transform||{};i[a]={scale:o.scale?{x:o.scale.x??0,y:o.scale.y??0,z:o.scale.z??0}:{x:1,y:1,z:1},rotation:{x:0,y:0,z:o.field508?.z??0},anchorMin:{x:o.anchorMin?.x??0,y:o.anchorMin?.y??0},anchorMax:{x:o.anchorMax?.x??0,y:o.anchorMax?.y??0},offset:{x:o.offset?.x??0,y:o.offset?.y??0},size:{x:o.size?.x??0,y:o.size?.y??0},pivot:o.pivot?{x:o.pivot.x??0,y:o.pivot.y??0}:{x:.5,y:.5}}}let n=i.KEYBOARD||i[Object.keys(i)[0]];if(!n)throw new Error(`GIA \u63A7\u4EF6 ${e.name||e.id?.id} \u7F3A\u5C11\u591A\u5E73\u53F0\u53D8\u6362`);for(let r of le)i[r]||(i[r]=structuredClone(n));return i}function Ii(e){let t=e.ui?.content?.data||[];return t.some(i=>i.details?.textConfig)?t.some(i=>i.field501===71)?"textwindow":"textbox":t.some(i=>i.details?.cursorConfig)?"cursor":t.some(i=>Object.hasOwn(i.details||{},"templateRefSlot"))?"reference":t.some(i=>i.details?.gridView)?"grid":t.some(i=>i.details?.buttonPreset)?"button":t.some(i=>i.details?.keyHint)?"keyhint":t.some(i=>i.details?.image||i.details?.imageSlot)?"image":t.some(i=>Object.hasOwn(i.details||{},"effectSlot"))?"animation":t.some(i=>Object.hasOwn(i.details||{},"fullscreenEffectSlot"))?"fullscreen":(t.some(i=>Object.hasOwn(i.details||{},"containerNodeSlot")),"container")}function zr(e,{reverseSiblings:t=!1,idOffset:i=0}={}){if(!e.length)return{nodes:new Map,rootCandidates:[],warnings:[]};let n=new Map(e.map((s,f)=>[s.id?.id,`n${i+f+1}`])),r=new Map,a=new Map,o=[];for(let s of e){let f=Ii(s),d=fe(s,"textConfig"),g=fe(s,"imageSlot"),p=fe(s,"image"),m=fe(s,"buttonPreset"),y=fe(s,"gridView"),w=fe(s,"genericSlot"),_=fe(s,"footerSlot"),C=fe(s,"cursorConfig"),G=fe(s,"keyHint"),z=fe(s,"containerNodeSlot"),Z=fe(s,"templateRefSlot"),ie=fe(s,"effectSlot"),L=fe(s,"fullscreenEffectSlot"),O=H(f,{id:n.get(s.id?.id),guid:s.id?.id||0,giaInfoIndex:(s.ui?.content?.info||[]).find(v=>v.field501===2&&v.field502===6)?.index?.value,giaRelatedGuids:(s.ui?.content?.info||[]).find(v=>v.field501===4&&v.field502===4)?.related?.value||[],name:s.name||f,visible:fe(s,"field14")?.field17?.initiallyHidden!==!0,active:fe(s,"field14")?.initiallyInactive!==!0,canControllerFocus:_?.field505===1,scriptMappingIds:(w?.field502||[]).map(v=>Number(v?.field1?.id)).filter(v=>Number.isSafeInteger(v)&&v>0),transformByPlatform:pl(s),syncAllDevices:fe(s,"transform")?.multiPlatform?.field504===1,giaRaw:{genericField501:w?.field501??0,footerField505:_?.field505??0,...f==="textbox"||f==="textwindow"?{textField501:d?.field501??20,textField503:d?.field503??12,textAlign:d?.align??0,...[void 0,0,1,2].includes(d?.verticalAlign)?{}:{textVerticalAlign:d.verticalAlign},...f==="textwindow"?{textField511:d?.field511??1,textViewField502:d?.viewFlags?.field502??1,textViewField503:d?.viewFlags?.field503??1}:{}}:{},...f==="cursor"?{cursorField501:C?.field501??0}:{},...f==="reference"?{templateRefSlot:Z??""}:{},...f==="grid"?{gridField501:y?.field501??1,gridField507:y?.field507??1,gridField508:y?.field508??1,gridField509:y?.field509??1,gridField511:y?.field511??5,gridField512:y?.field512??1}:{},...f==="keyhint"?{keyHintField501:G?.field501??1,keyHintField502:G?.field502??1}:{},...f==="image"?{imageSlotType:g?.imageType??0,imageField502:p?.field502??1,imageField504:p?.field504??1,imageField505:p?.field505??1,imageField507:p?.field507??2,imageFillType:p?.fillType??1}:{},...f==="animation"?{effectSlot:ie??""}:{},...f==="fullscreen"?{fullscreenEffectSlot:L??""}:{}},...f==="container"?{isolateNavigation:z?.isolateNavigation===!0,disableKeyEventPassthrough:z?.disableKeyEventPassthrough===!0,disableCursorEventPassthrough:z?.disableCursorEventPassthrough===!0,showCursor:z?.showCursor===!0}:{},...f==="cursor"?{raycastTarget:C?.field501===1}:{},...f==="textbox"||f==="textwindow"?{text:d?.text?.value??"",fontSize:d?.fontSize??20,minimumFontSize:d?.minimumFontSize??20,adaptiveFontSize:d?.adaptive===1,fontColor:d?.color??4294967295,bgColor:d?.color2??0,enableOutline:d?.outlineOff!==1,outlineColor:d?.color3??858993459,horizontalAlignment:d?.align===1?"Middle":d?.align===2?"Right":"Left",verticalAlignment:{0:"Top",1:"Middle",2:"Bottom"}[d?.verticalAlign??0]||"Top",...f==="textwindow"?{interactable:!0,showScrollBar:!0}:{}}:{},...f==="image"?{imageSource:"StaticReference",imageId:g?.assetId??0,imageType:g?.imageType===1?"Stretch":"Basic",imageColor:Number.isFinite(g?.field502)?g.field502>>>0:4294967295,enableMask:p?.enableMask===1,enableSoftEdge:p?.enableSoftEdge===1,enableFill:p?.enableFill===1,softEdgeMode:p?.softEdgePixel===1?"Pixel":"Percentage",softEdgeWidthX:p?.border?.field501??8,softEdgeWidthY:p?.border?.field502??8,horizontalSoftRange:p?.field512??85,verticalSoftRange:p?.field513??85,fillType:{1:"Horizontal",2:"Vertical",3:"Radial90",4:"Radial180",5:"Radial360"}[p?.fillType]||"Horizontal",fillAmount:Number.isFinite(p?.field508)?Math.max(0,Math.min(1,p.field508/100)):p?.enableFill===1?0:1,reverseMaskArea:p?.reverseMask===1}:{},...f==="button"?{interactable:m?.interactable===1,raycastTarget:m?.raycastTarget===1,clickAudioId:m?.clickAudioId??50888}:{},...f==="grid"?{cellSizeX:y?.cellSize?.field501??50,cellSizeY:y?.cellSize?.field502??50,spacingX:y?.gap?.field501??8,spacingY:y?.gap?.field502??8,padding1X:y?.padding1?.field501??20,padding1Y:y?.padding1?.field502??20,padding2X:y?.padding2?.field501??20,padding2Y:y?.padding2?.field502??20,previewCount:y?.field511??5}:{},...f==="reference"?{referencedPrefabId:Z??""}:{},...f==="keyhint"?{keyboardKeyCode:G?.field502??null,controllerKeyCode:G?.field501??null}:{},...f==="animation"?{animationId:ie??""}:{},...f==="fullscreen"?{animationId:L??""}:{}});r.set(s.id?.id,O),(f==="textbox"||f==="textwindow")&&![void 0,0,1,2].includes(d?.align)&&o.push(`${O.name}: \u6C34\u5E73\u5BF9\u9F50\u679A\u4E3E ${d.align} \u7684\u542B\u4E49\u672A\u77E5\uFF0C\u5DF2\u539F\u6837\u4FDD\u7559\u3002`),(f==="textbox"||f==="textwindow")&&![void 0,0,1,2].includes(d?.verticalAlign)&&o.push(`${O.name}: \u5782\u76F4\u5BF9\u9F50\u679A\u4E3E ${d.verticalAlign} \u7684\u542B\u4E49\u672A\u77E5\uFF0C\u5DF2\u539F\u6837\u4FDD\u7559\u3002`),f==="image"&&![void 0,0,1,2,3,4,5].includes(p?.fillType)&&o.push(`${O.name}: \u586B\u5145\u5F62\u72B6\u679A\u4E3E ${p.fillType} \u672A\u8BC6\u522B\uFF0C\u5DF2\u4FDD\u7559\u539F\u503C\u3002`),f==="button"&&a.set(O.id,{unavailableChildId:m?.disabledChild,hoverChildId:m?.hoverChild,pressedChildId:m?.pressedChild,selectedChildId:m?.selectedChild})}let l=[],u=new Set;for(let s of e){let f=r.get(s.id?.id),d=(s.ui?.content?.children||[]).map(g=>r.get(g)).filter(Boolean);if(d.length){f.children=t?d.slice().reverse():d;for(let g of d)u.add(g.id)}}for(let s of e){let f=r.get(s.id?.id),d=s.ui?.content?.parent||0,g=r.get(d);g?u.has(f.id)||(t?g.children.unshift(f):g.children.push(f)):l.push(f)}for(let[s,f]of a){let d=[...r.values()].find(g=>g.id===s);for(let[g,p]of Object.entries(f))d[g]=n.get(p)||null}return{nodes:r,rootCandidates:l,warnings:o}}function ta(e){let t=wi(e),i=_e.toObject(_e.decode(t),{longs:Number,enums:Number,bytes:Buffer,defaults:!1,arrays:!0,objects:!0}),n=i.graph||[];if(!n.some(m=>m.ui?.content))throw new Error("GIA \u4E0D\u542B\u53EF\u8BC6\u522B\u7684 UIControlGroup \u4E3B\u56FE");let r=n.find(m=>m.which===21)||null,a=n.filter(m=>Number(m.which)===70),o=i.accessories||[],l=new Set((r?.relatedIds||[]).map(m=>m.id||0)),u=r?l.size?o.filter(m=>l.has(m.id?.id||0)):o:[],s=a.length?[...a,...o.filter(m=>!l.has(m.id?.id||0))]:r?[]:[...n,...o];if(!u.length&&!s.length)throw new Error("GIA \u4E0D\u542B\u5BA2\u6237\u7AEF\u63A7\u4EF6");let f=["GIA \u5BFC\u5165\u4E3A\u5DF2\u9A8C\u8BC1 UI \u5B57\u6BB5\u7684\u8BED\u4E49\u5BFC\u5165\uFF1B\u672A\u77E5 protobuf \u5B57\u6BB5\u4E0D\u4F1A\u8FDB\u5165 Authoring JSON\u3002"],d=Qr(i);f.push(...d.warnings);let g=null,p=null;if(u.length){let m=zr(u,{reverseSiblings:!0,idOffset:0});f.push(...m.warnings);let y=m.rootCandidates.find(_=>_.kind==="container")||m.rootCandidates[0];if(!y)throw new Error("GIA \u672A\u627E\u5230\u5BA2\u6237\u7AEF\u6839\u63A7\u4EF6");let w=H("server-container",{id:"sc1",guid:r?.id?.id||0,name:r?.name||"\u5BA2\u6237\u7AEF\u63A7\u4EF6\u5BB9\u5668",giaRelatedGuids:(r?.ui?.content?.info||[]).find(_=>_.field501===4&&_.field502===4)?.related?.value||[]});w.children=[y],m.rootCandidates.length>1&&f.push(`\u68C0\u6D4B\u5230 ${m.rootCandidates.length} \u4E2A\u65E0\u7236\u8282\u70B9\u63A7\u4EF6\uFF0C\u4EC5\u5BFC\u5165\u4EE5\u201C${y.name}\u201D\u4E3A\u6839\u7684\u6811\u3002`),g={version:1,layoutSchemaVersion:me,meta:{name:r?.name||"\u5BFC\u5165\u7684\u754C\u9762\u63A7\u4EF6\u7EC4",assetType:"server-control-template",sourceFormat:"gia",sourceFile:"",gameVersion:i.gameVersion||"",giaFilePath:i.filePath||"",...Number.isSafeInteger(Number(i.modeFlag))?{giaModeFlag:Number(i.modeFlag)}:{}},canvasId:"pc-16-9",selectedId:y.id,script:{controlId:y.id,path:"",source:""},root:w}}if(s.length){let m=zr(s,{reverseSiblings:!1,idOffset:1e3});if(f.push(...m.warnings),!m.rootCandidates.length)throw new Error("GIA \u672A\u627E\u5230\u5BA2\u6237\u7AEF\u6A21\u677F");let y=H("server-container",{id:"sc1",guid:0,name:"\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F"});y.children=m.rootCandidates,p={version:1,layoutSchemaVersion:me,meta:{name:m.rootCandidates.length===1?m.rootCandidates[0].name:"\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F\u5217\u8868",assetType:"client-control-template",sourceFormat:"gia",sourceFile:"",gameVersion:i.gameVersion||"",giaFilePath:i.filePath||"",...Number.isSafeInteger(Number(i.modeFlag))?{giaModeFlag:Number(i.modeFlag)}:{}},canvasId:"pc-16-9",selectedId:m.rootCandidates[0].id,script:{controlId:m.rootCandidates[0].id,path:"",source:""},root:y},Ve(p,{warnings:f}),g||(g=p)}return{project:g,clientProject:p&&g!==p?p:void 0,scripts:d.scripts,warnings:f,metadata:{gameVersion:i.gameVersion||"",filePath:i.filePath||"",...Number.isSafeInteger(Number(i.modeFlag))?{modeFlag:Number(i.modeFlag)}:{},combined:!!(r&&a.length)}}}function pn(e){let t=wi(e),i=_e.toObject(_e.decode(t),{longs:Number,enums:Number,defaults:!1,arrays:!0,objects:!0}),n=i.graph||[],r=i.accessories||[],a=[],o=(p,m)=>p!=null&&Object.prototype.hasOwnProperty.call(p,m),l=new Map,u=[];/^\d+-\d+-\d+-\\.+\.gia$/iu.test(i.filePath||"")||a.push(`Root.filePath \u4E0D\u662F UID-TIME-ID-\\\u6587\u4EF6\u540D.gia\uFF1A${i.filePath||"<missing>"}`);let s=n.filter(p=>p.which===70).map(p=>{let m=Ii(p),y=p.ui?.content?.info||[],w=y.find(G=>G.field501===2&&G.field502===6)?.index?.value,_=y.find(G=>G.field501===4&&G.field502===4),C=_?.related?.value||[];return Ce(w)||a.push(`${p.name}: Info.index=${w??"<missing>"}\uFF0C\u5FC5\u987B\u662F\u6B63\u6574\u6570`),_||a.push(`${p.name}: \u9876\u5C42 UIControlTemplate \u7F3A\u5C11 Info.related \u8BB0\u5F55`),{id:p.id?.id||0,name:p.name||"",kind:m,actualIndex:w,relatedPresent:!!_,relatedGuids:C}}),f=new Map;for(let p of s){if(!Ce(p.actualIndex))continue;let m=f.get(p.actualIndex);m?a.push(`${p.name}: \u72EC\u7ACB\u6A21\u677F\u8D44\u4EA7\u7F16\u53F7 ${p.actualIndex} \u4E0E ${m.name} \u91CD\u590D`):f.set(p.actualIndex,p)}s.length||a.push("Root.graph \u4E0D\u542B UIControlTemplate(70)");let d=0,g=0;for(let p of[...n,...r]){if(!p.ui?.content)continue;let m=p.id?.id||0,y=p.ui.content,w=Ii(p),_=n.includes(p)&&p.which===70,C=`${p.name||"<unnamed>"}(${m||"<missing-guid>"})`;!Number.isSafeInteger(m)||m<=0||m>2147483647?a.push(`${C}: GraphUnit GUID \u975E\u6CD5`):l.has(m)?a.push(`${C}: GUID \u4E0E ${l.get(m).name||"<unnamed>"} \u91CD\u590D`):l.set(m,p),(p.id?.class!==1||p.id?.type!==8)&&a.push(`${C}: GraphUnit.id \u5FC5\u987B\u4E3A class=1,type=8`),y.guid!==m&&a.push(`${C}: content.guid=${y.guid??"<missing>"} \u4E0E GraphUnit.id.id \u4E0D\u4E00\u81F4`),_&&p.which!==70&&a.push(`${C}: \u6A21\u677F\u6839 which \u5FC5\u987B\u4E3A UIControlTemplate(70)`),!_&&p.which!==15&&a.push(`${C}: \u9644\u4EF6\u63A7\u4EF6 which \u5FC5\u987B\u4E3A UIControl(15)`);let G=y.info||[],z=G.find(A=>A.field501===1&&A.field502===5),Z=G.find(A=>A.field501===2&&A.field502===6);z?.guid?.value!==m&&a.push(`${C}: Info.self GUID \u7F3A\u5931\u6216\u4E0E\u81EA\u8EAB\u4E0D\u4E00\u81F4`),Ce(Z?.index?.value)||a.push(`${C}: Info.index=${Z?.index?.value??"<missing>"}\uFF0C\u5FC5\u987B\u662F\u6B63\u6574\u6570`);let ie=G.find(A=>A.field501===4&&A.field502===4);_&&!ie&&a.push(`${C}: \u9876\u5C42\u6A21\u677F\u7F3A\u5C11 Info.related \u8BB0\u5F55`),!_&&ie&&a.push(`${C}: \u9644\u4EF6\u63A7\u4EF6\u4E0D\u5E94\u5199 Info.related`);let L=Vr[w],O=y.data||[],v=O.map(A=>`${A.field501}/${A.field502}`),E=L?.map(([A])=>A)||[];L?JSON.stringify(v)!==JSON.stringify(E)&&a.push(`${C}: Data \u69FD\u4F4D\u987A\u5E8F ${v.join(",")}\uFF0C\u5E94\u4E3A ${E.join(",")}`):a.push(`${C}: \u672A\u77E5\u5BA2\u6237\u7AEF\u63A7\u4EF6\u7C7B\u578B ${w}`);for(let A=0;A<Math.min(O.length,L?.length||0);A+=1){let $=O[A],[V,se,U]=L[A];if(o($,se)||a.push(`${C}: Data ${V} \u7F3A\u5C11 ${se} \u5206\u652F`),!U)continue;o($.details,U)||a.push(`${C}: Details ${V} \u7F3A\u5C11 ${U} \u5206\u652F`);let be=Yr[V];($.details?.field501!==be||$.details?.field502!==$.field502||$.details?.field503!==1)&&a.push(`${C}: Details ${V} \u6807\u8BB0\u5E94\u4E3A ${be}/${$.field502}/1`);let ke=$.details?.nodeRef;(ke?.class!==1||ke?.type!==8||ke?.id!==m)&&a.push(`${C}: Details ${V} node_ref \u672A\u6307\u5411\u81EA\u8EAB`)}let S=(p.ui.content.data||[]).find(A=>A.field501===4&&A.field502===86);S&&(o(S.field14,"field17")?d+=1:a.push(`${C}: \u7C7B\u578B Data \u7F3A\u5C11\u663E\u5F0F Field14.field17 \u7A7A\u4E32`),o(S.details?.field14,"field17")?d+=1:a.push(`${C}: \u7C7B\u578B Details \u7F3A\u5C11\u663E\u5F0F Field14.field17 \u7A7A\u4E32`));let x=(p.ui.content.data||[]).find(A=>A.details?.transform)?.details?.transform?.multiPlatform?.platforms||[];x.length!==4&&a.push(`${C}: \u591A\u5E73\u53F0\u53D8\u6362\u6570\u91CF=${x.length}\uFF0C\u5E94\u4E3A 4`);let F=x.map(A=>A.platformType||0);JSON.stringify(F)!==JSON.stringify([0,1,2,3])&&a.push(`${C}: \u5E73\u53F0\u987A\u5E8F ${F.join(",")}\uFF0C\u5E94\u4E3A 0,1,2,3`);let k=(p.ui.content.data||[]).find(A=>A.details?.transform)?.details?.transform;k?.multiPlatform?.field502!==Ht[w]&&a.push(`${C}: \u53D8\u6362 preset=${k?.multiPlatform?.field502??"<missing>"}\uFF0C${w} \u5E94\u4E3A ${Ht[w]}`);for(let A of x)o(A.transform,"field508")?g+=1:a.push(`${C}: RectTransform \u7F3A\u5C11\u663E\u5F0F field508 \u7A7A\u4E32`);u.push({id:m,name:p.name||"",kind:w,template:_,parent:y.parent||0,children:[...y.children||[]],relatedIds:(p.relatedIds||[]).map(A=>A.id||0),dataSignatures:v})}for(let p of u){let m=`${p.name||"<unnamed>"}(${p.id})`;if(JSON.stringify(p.relatedIds)!==JSON.stringify(p.children)&&a.push(`${m}: GraphUnit.relatedIds \u4E0E content.children \u4E0D\u4E00\u81F4`),p.template&&p.parent&&a.push(`${m}: \u9876\u5C42\u6A21\u677F\u4E0D\u5E94\u6709 parent`),!p.template){let y=l.get(p.parent);y?(y.ui?.content?.children||[]).includes(p.id)||a.push(`${m}: \u7236\u63A7\u4EF6 children \u672A\u53CD\u5411\u5305\u542B\u81EA\u8EAB`):a.push(`${m}: parent=${p.parent||"<missing>"} \u4E0D\u5B58\u5728`)}for(let y of p.children){let w=l.get(y);w?(w.ui?.content?.parent||0)!==p.id&&a.push(`${m}: child=${y} \u7684 parent \u672A\u6307\u56DE\u81EA\u8EAB`):a.push(`${m}: child=${y} \u4E0D\u5B58\u5728`)}}return{valid:a.length===0,errors:a,filePath:i.filePath||"",gameVersion:i.gameVersion||"",templateCount:s.length,accessoryCount:r.length,templates:s,units:u,explicitEmpty:{field17:d,rectField508:g}}}function gn(e){let t=wi(e),i=_e.toObject(_e.decode(t),{longs:Number,enums:Number,defaults:!1,arrays:!0,objects:!0}),n=(i.graph||[]).filter(k=>k.ui?.content&&Number(k.which)===21),r=(i.graph||[]).filter(k=>Number(k.which)===70),a=(i.graph||[]).filter(k=>Number(k.which)===At),o=(i.accessories||[]).filter(k=>k.ui?.content),l=[],u=(k,A)=>k!=null&&Object.prototype.hasOwnProperty.call(k,A);/^\d+-\d+-\d+-\\.+\.gia$/iu.test(i.filePath||"")||l.push(`Root.filePath \u4E0D\u662F UID-TIME-ID-\\\u6587\u4EF6\u540D.gia\uFF1A${i.filePath||"<missing>"}`),n.length!==1&&l.push(`\u670D\u52A1\u7AEF\u63A7\u4EF6\u6A21\u677F UIControlGroup \u6570\u91CF=${n.length}\uFF0C\u5E94\u4E3A 1`);let s=(i.graph||[]).filter(k=>{let A=Number(k.which);return A===At||A===70||A===21?!1:!k.ui?.content});s.length&&l.push(`Root.graph \u542B ${s.length} \u4E2A\u65E0\u6CD5\u8BC6\u522B\u7684\u975E\u63A7\u4EF6/\u975E\u811A\u672C\u5355\u5143`);let f=n[0];if(!f)return{valid:!1,errors:l,filePath:i.filePath||"",gameVersion:i.gameVersion||"",accessoryCount:o.length,controls:[],scriptCount:a.length,explicitEmpty:{field17:0,rectField508:0}};let d=[f,...r,...o],g=new Map;for(let k of d){let A=k.id?.id||0,$=`${k.name||"<unnamed>"}(${A||"<missing-guid>"})`;!Number.isSafeInteger(A)||A<=0||A>2147483647?l.push(`${$}: GraphUnit GUID \u975E\u6CD5`):g.has(A)?l.push(`${$}: GUID \u91CD\u590D`):g.set(A,k),(k.id?.class!==1||k.id?.type!==8)&&l.push(`${$}: GraphUnit.id \u5FC5\u987B\u4E3A class=1,type=8`),k.ui?.content?.guid!==A&&l.push(`${$}: content.guid \u4E0E GraphUnit.id.id \u4E0D\u4E00\u81F4`)}let p=f.id?.id||0,m=f.ui.content,y=`${f.name||"<unnamed>"}(${p})`;f.which!==21&&l.push(`${y}: which \u5FC5\u987B\u4E3A UIControlGroup(21)`);let w=m.info||[];w.find(k=>k.field501===1&&k.field502===5)?.guid?.value!==p&&l.push(`${y}: Info.self GUID \u7F3A\u5931\u6216\u4E0D\u4E00\u81F4`),w.find(k=>k.field501===2&&k.field502===6)?.index?.value!==1&&l.push(`${y}: Info.index \u5FC5\u987B\u4E3A 1`);let _=w.find(k=>k.field501===4&&k.field502===4);_||l.push(`${y}: \u7F3A\u5C11\u663E\u5F0F Info.related \u8BB0\u5F55`);let C=0,G=0,z=(k,A,$,V=!1)=>{let se=k.id?.id||0,U=`${k.name||"<unnamed>"}(${se})`,be=k.ui.content.data||[],ke=be.map(ne=>`${ne.field501}/${ne.field502}`),bt=$.map(([ne])=>ne);JSON.stringify(ke)!==JSON.stringify(bt)&&l.push(`${U}: Data \u69FD\u4F4D\u987A\u5E8F ${ke.join(",")}\uFF0C\u5E94\u4E3A ${bt.join(",")}`);for(let ne=0;ne<Math.min(be.length,$.length);ne+=1){let Me=be[ne],[De,$t,Dt]=$[ne];if(u(Me,$t)||l.push(`${U}: Data ${De} \u7F3A\u5C11 ${$t} \u5206\u652F`),!Dt)continue;u(Me.details,Dt)||l.push(`${U}: Details ${De} \u7F3A\u5C11 ${Dt} \u5206\u652F`);let je=Yr[De];(Me.details?.field501!==je||Me.details?.field502!==Me.field502||Me.details?.field503!==1)&&l.push(`${U}: Details ${De} \u6807\u8BB0\u5E94\u4E3A ${je}/${Me.field502}/1`);let Gt=Me.details?.nodeRef;(Gt?.class!==1||Gt?.type!==8||Gt?.id!==se)&&l.push(`${U}: Details ${De} node_ref \u672A\u6307\u5411\u81EA\u8EAB`)}let zt=be.find(ne=>ne.field501===4&&ne.field502===(V?23:86)),ee=V?"empty15":"field17";u(zt?.field14,ee)?V||(C+=1):l.push(`${U}: \u7C7B\u578B Data \u7F3A\u5C11\u663E\u5F0F Field14.${ee} \u7A7A\u4E32`),u(zt?.details?.field14,ee)?V||(C+=1):l.push(`${U}: \u7C7B\u578B Details \u7F3A\u5C11\u663E\u5F0F Field14.${ee} \u7A7A\u4E32`);let Re=be.find(ne=>ne.details?.transform)?.details?.transform,nt=Re?.multiPlatform?.platforms||[];nt.length!==4&&l.push(`${U}: \u591A\u5E73\u53F0\u53D8\u6362\u6570\u91CF=${nt.length}\uFF0C\u5E94\u4E3A 4`);let fi=nt.map(ne=>ne.platformType||0);JSON.stringify(fi)!==JSON.stringify([0,1,2,3])&&l.push(`${U}: \u5E73\u53F0\u987A\u5E8F ${fi.join(",")}\uFF0C\u5E94\u4E3A 0,1,2,3`);let di=V?Ht["server-container"]:Ht[A];Re?.multiPlatform?.field502!==di&&l.push(`${U}: \u53D8\u6362 preset=${Re?.multiPlatform?.field502??"<missing>"}\uFF0C\u5E94\u4E3A ${di}`);for(let ne of nt)u(ne.transform,"field508")?G+=1:l.push(`${U}: RectTransform \u7F3A\u5C11\u663E\u5F0F field508 \u7A7A\u4E32`);return ke};z(f,"server-container",rl,!0);let Z=(f.relatedIds||[]).map(k=>k.id||0),ie=new Set(Z),L=o.filter(k=>ie.has(k.id?.id||0)),O=L.map(k=>k.id?.id||0);JSON.stringify(Z)!==JSON.stringify(O)&&l.push(`${y}: \u4E3B\u56FE relatedIds \u5FC5\u987B\u6309\u987A\u5E8F\u8986\u76D6\u672C\u7EC4 accessories`);let v=m.data?.find(k=>k.details?.rootChildRef)?.details?.rootChildRef?.guid||0,E=g.get(v);(!E||!L.includes(E))&&l.push(`${y}: 62/82 \u6839\u8282\u70B9\u5F15\u7528\u4E0D\u5B58\u5728`),O[0]!==v&&l.push(`${y}: \u6839\u5BB9\u5668\u8282\u70B9\u5FC5\u987B\u662F\u672C\u7EC4 accessories[0]`);let S=[];for(let k of L){let A=k.id?.id||0,$=k.ui.content,V=`${k.name||"<unnamed>"}(${A})`,se=Ii(k);k.which!==15&&l.push(`${V}: which \u5FC5\u987B\u4E3A UIControl(15)`);let U=$.info||[];(U.length!==1||U[0]?.field501!==1||U[0]?.field502!==5||U[0]?.guid?.value!==A)&&l.push(`${V}: \u670D\u52A1\u7AEF\u5BB9\u5668\u5185\u63A7\u4EF6 Info \u5FC5\u987B\u53EA\u542B\u81EA\u8EAB GUID`);let be=Vr[se];be||l.push(`${V}: \u672A\u77E5\u5BA2\u6237\u7AEF\u63A7\u4EF6\u7C7B\u578B ${se}`);let ke=be?z(k,se,be):[];S.push({id:A,name:k.name||"",kind:se,parent:$.parent||0,children:[...$.children||[]],relatedIds:(k.relatedIds||[]).map(bt=>bt.id||0),dataSignatures:ke})}let x=S.find(k=>k.id===v);x&&(x.kind!=="container"&&l.push(`${x.name}(${v}): \u6839\u63A7\u4EF6\u5FC5\u987B\u4E3A\u5BB9\u5668\u8282\u70B9`),x.parent&&l.push(`${x.name}(${v}): \u6839\u63A7\u4EF6\u4E0D\u5E94\u6709 parent`));let F=new Map(S.map(k=>[k.id,k]));for(let k of S){let A=`${k.name}(${k.id})`;if(JSON.stringify(k.relatedIds)!==JSON.stringify(k.children)&&l.push(`${A}: relatedIds \u5FC5\u987B\u4E0E\u76F4\u63A5 children \u4E00\u81F4`),k.id!==v){let $=F.get(k.parent);$?$.children.includes(k.id)||l.push(`${A}: \u7236\u63A7\u4EF6 children \u672A\u53CD\u5411\u5305\u542B\u81EA\u8EAB`):l.push(`${A}: parent=${k.parent||"<missing>"} \u4E0D\u5B58\u5728`)}for(let $ of k.children){let V=F.get($);V?V.parent!==k.id&&l.push(`${A}: child=${$} \u7684 parent \u672A\u6307\u56DE\u81EA\u8EAB`):l.push(`${A}: child=${$} \u4E0D\u5B58\u5728`)}}if(r.length){let k=pn(dn({...i,graph:r,accessories:o.filter(A=>!ie.has(A.id?.id||0))}));l.push(...k.errors.map(A=>`\u5BA2\u6237\u7AEF\u6A21\u677F: ${A}`))}return{valid:l.length===0,errors:l,filePath:i.filePath||"",gameVersion:i.gameVersion||"",graph:{id:p,name:f.name||"",relatedGuids:_?.related?.value||[],rootGuid:v},accessoryCount:o.length,controls:S,scriptCount:a.length,explicitEmpty:{field17:C,rectField508:G}}}function ia(e,t=[]){if(!e||e.layoutSchemaVersion===me)return e;if(e.layoutSchemaVersion!==void 0&&e.layoutSchemaVersion!==1)throw new Error(`\u4EC5\u652F\u6301 layoutSchemaVersion=2 \u6216\u53EF\u8FC1\u79FB\u7684\u65E7\u5E03\u5C40\uFF0C\u6536\u5230 ${e.layoutSchemaVersion}`);if(!e.root)return{...e,layoutSchemaVersion:me};let i=structuredClone(e),n=0;return W(i.root,r=>{let a=r.transformByPlatform||{},o=r.transformByCanvas||{},l=r.name||r.id;for(let s of Object.keys(a))if(!le.includes(s))throw new Error(`${l}: unknown platform ${s}`);let u={};for(let s of le){let f=vt[s],d=te[f].platform,g=Object.keys(te).filter(w=>te[w].platform===d&&o[w]),p=o[f]?f:g[0],m=s==="CONTROLLER_CONSOLE"?u.KEYBOARD:s==="CONTROLLER_MOBILE"?u.TOUCHSCREEN:null,y=a[s]??m??(p?o[p]:null);if(u[s]=y?Oe(y):tn(r.kind),y||t.push(`${l}: ${s} \u65E0\u65E7\u5E03\u5C40\uFF0C\u5DF2\u4F7F\u7528\u63A7\u4EF6\u9ED8\u8BA4\u503C`),!a[s]&&!m&&p&&p!==f&&t.push(`${l}: \u7F3A\u5C11 ${f}\uFF0C\u5DF2\u91C7\u7528 ${p} \u7684\u951A\u70B9\u548C\u5C3A\u5BF8\u53C2\u6570`),!m)for(let w of g)JSON.stringify(u[s])!==JSON.stringify(Oe(o[w]))&&t.push(`${l}: ${w} \u4E0E ${s} \u5E03\u5C40\u51B2\u7A81\uFF0C\u4FDD\u7559${a[s]?"\u5DF2\u6709\u5E73\u53F0":p}\u53C2\u6570`)}Ke(u,`${l}.transformByPlatform`),r.transformByPlatform=u,delete r.transformByCanvas,n++}),i.layoutSchemaVersion=me,t.unshift(`\u5DF2\u81EA\u52A8\u8FC1\u79FB\u65E7\u5E03\u5C40\uFF1A${n} \u4E2A\u63A7\u4EF6\u8F6C\u6362\u4E3A\u56DB\u5E73\u53F0\u53C2\u6570\uFF1B\u518D\u6B21\u4FDD\u5B58\u5C06\u4F7F\u7528\u65B0\u7248\u683C\u5F0F`),i}function yn(e){if(![1,2,3,4].includes(e))throw new Error(`\u4EC5\u652F\u6301 version=1\u20134 \u7684\u5B58\u6863\uFF0C\u6536\u5230 ${e}`)}function vn(e,t,i,n=e.canvasId){let r=Le(e.root,t);return!r||r.kind==="server-container"?ge(n):i[r.id]||ge(n)}function Qe(e,{warnings:t=[]}={}){if(!e)return st();if(e=ia(e,t),(e.root||e.layoutSchemaVersion!==void 0)&&e.layoutSchemaVersion!==me)throw new Error(`\u4EC5\u652F\u6301 layoutSchemaVersion=${me} \u7684\u56DB\u5E73\u53F0\u5E03\u5C40\uFF0C\u4E0D\u652F\u6301\u65E7\u753B\u5E03\u5E03\u5C40\u6216\u5176\u4ED6\u7248\u672C`);let i=e.meta?.assetType==="client-control-template"?"client-control-template":"server-control-template",n=i==="client-control-template"?Et():st(),r={layoutSchemaVersion:me,version:Number.isSafeInteger(e.version)&&e.version>0?e.version:1,meta:{name:String(e.meta?.name||n.meta.name),assetType:i,sourceFormat:String(e.meta?.sourceFormat||n.meta.sourceFormat),sourceFile:String(e.meta?.sourceFile||""),...e.meta?.gameVersion?{gameVersion:String(e.meta.gameVersion)}:{},...e.meta?.giaFilePath?{giaFilePath:String(e.meta.giaFilePath)}:{},...Number.isSafeInteger(Number(e.meta?.giaOwnerUid))?{giaOwnerUid:Number(e.meta.giaOwnerUid)}:{},...Number.isSafeInteger(Number(e.meta?.giaTimestamp))?{giaTimestamp:Number(e.meta.giaTimestamp)}:{},...Number.isSafeInteger(Number(e.meta?.giaFileId))?{giaFileId:Number(e.meta.giaFileId)}:{},...e.meta?.giaFileName?{giaFileName:String(e.meta.giaFileName)}:{},...Number.isSafeInteger(e.meta?.giaNextAssetIndex)&&e.meta.giaNextAssetIndex>=2?{giaNextAssetIndex:e.meta.giaNextAssetIndex}:{},...Number.isSafeInteger(e.meta?.giaAssetIndexSchemaVersion)&&e.meta.giaAssetIndexSchemaVersion>0?{giaAssetIndexSchemaVersion:e.meta.giaAssetIndexSchemaVersion}:{},...Number.isSafeInteger(Number(e.meta?.giaModeFlag))&&Number(e.meta.giaModeFlag)>=0?{giaModeFlag:Number(e.meta.giaModeFlag)}:{}},canvasId:e.canvasId&&te[e.canvasId]?e.canvasId:mi,selectedId:e.selectedId||n.selectedId,root:an(e.root||n.root)};return la(r),Ve(r,{warnings:t}),r}function la(e){let t=new Set;W(e.root,i=>{if(typeof i.id!="string"||!i.id)throw new Error("node id must be a non-empty string");if(t.has(i.id))throw new Error(`duplicate node id: ${i.id}`);t.add(i.id)}),t.has(e.selectedId)||(e.selectedId=rn(e.root).id)}function na(e){return qe(kt(e))}function gl(e,t){let i=!1;return W(e,n=>{n.id===t&&(i=!0)}),i}function yl(e,t,i,n){let a=Je(e.root,e.canvasId).boxes[t.id],o=i.children.findIndex(d=>d.id===t.id);if(o<0)throw new Error("reparent: source node is not attached");if(i.children.splice(o,1),n.children.push(t),!a)return;let l=Je(e.root,e.canvasId),u=n.kind==="server-container"?ge(e.canvasId):l.boxes[n.id]||ge(e.canvasId),s=We(t.transformByPlatform,e.canvasId),f=rt(u,s,{posX:a.centerX,posY:a.centerY,width:a.width,height:a.height});_t(e,t,f)}function bl(e,t){return e.meta.assetType!=="client-control-template"?on(e.root,t):(e.root.children||[]).flatMap(i=>on(i,t))}function sa(e,t){let i=Nr(e.root,t);if(e.meta.assetType!=="client-control-template")return i;let n=jt(e),r=new Set;return n&&n.kind!=="server-container"&&W(n,a=>r.add(a.id)),i.filter(a=>r.has(a.id))}function ua(e){let{canvas:t,boxes:i}=Je(e.root,e.canvasId),n=qt(e),r=ce(e.root,e.selectedId),a=r?i[r.id]:null;return D({layoutSchemaVersion:me,version:e.version,meta:{...e.meta},canvasId:e.canvasId,canvas:{id:e.canvasId,width:t.width,height:t.height,platform:te[e.canvasId].platform,label:te[e.canvasId].label,presets:Object.values(te).map(o=>({id:o.id,label:o.label,width:o.width,height:o.height,platform:o.platform}))},selectedId:e.selectedId,asset:{type:e.meta.assetType,label:e.meta.assetType==="client-control-template"?"\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F":"\u670D\u52A1\u7AEF\u63A7\u4EF6\u6A21\u677F",templateCount:e.meta.assetType==="client-control-template"?e.root.children.length:1,currentTemplateId:e.meta.assetType==="client-control-template"&&jt(e)?.id||""},tree:bl(e,n),boxes:sa(e,i),inspector:Fr(r,e.canvasId,a||t,n),root:e.root})}function _t(e,t,i){let n=Je(e.root,e.canvasId),r=vn(e,t.id,n.boxes),a={};if(t.syncAllDevices!==!1)for(let o of le){if(o===at(e.canvasId))continue;let l=vt[o],u=Je(e.root,l,o);a[o]=vn(e,t.id,u.boxes,l)}t.transformByPlatform=Mr({transformByPlatform:t.transformByPlatform,source:i,canvasId:e.canvasId,syncAllDevices:t.syncAllDevices!==!1,sourceParentBox:r,targetParentBoxByPlatform:a})}var vl=new Set(["name","active","visible","canControllerFocus","isolateNavigation","disableKeyEventPassthrough","disableCursorEventPassthrough","showCursor","fontSize","adaptiveFontSize","minimumFontSize","fontColor","bgColor","enableOutline","outlineColor","horizontalAlignment","verticalAlignment","text","imageSource","imageType","imageId","imageColor","enableMask","enableSoftEdge","softEdgeMode","softEdgeWidthX","softEdgeWidthY","horizontalSoftRange","verticalSoftRange","enableFill","fillType","fillHorizontalType","fillVerticalType","fillRadial90Type","fillRadialType","fillAmount","reverseMaskArea","raycastTarget","interactable","clickAudioId","unavailableChildId","hoverChildId","pressedChildId","selectedChildId","showScrollBar","cellSizeX","cellSizeY","spacingX","spacingY","padding1X","padding1Y","padding2X","padding2Y","previewCount","scrollDirection","layoutConstraint","referencedPrefabId","animationId","keyboardKeyCode","controllerKeyCode","itemPrefabId","layoutConstraintFixedCount"]),Sl=new Set(["posX","posY","width","height"]),Il=new Set(["anchorMinX","anchorMinY","anchorMaxX","anchorMaxY","pivotX","pivotY"]);function wl(e){if(typeof e=="number"&&Number.isFinite(e))return e>>>0;if(typeof e=="string"){let t=e.trim();if(t.startsWith("#")){let n=t.slice(1);if(n.length===6)return(4278190080|parseInt(n,16))>>>0;if(n.length===8)return parseInt(n,16)>>>0}let i=Number(t);if(Number.isFinite(i))return i>>>0}throw new Error("color must be an ARGB integer or #RRGGBB/#AARRGGBB string")}function Ye(e,t){let i=Number(e);if(!Number.isFinite(i))throw new Error(`${t} must be a finite number`);return i}function ra(e){if(e===!0||e===1||e==="1"||e==="true")return!0;if(e===!1||e===0||e==="0"||e==="false")return!1;throw new Error("boolean field requires true or false")}var Cl=new Set(["fontSize","minimumFontSize","imageId","clickAudioId","softEdgeWidthX","softEdgeWidthY","horizontalSoftRange","verticalSoftRange","fillAmount","cellSizeX","cellSizeY","spacingX","spacingY","padding1X","padding1Y","padding2X","padding2Y","previewCount","keyboardKeyCode","controllerKeyCode","itemPrefabId","layoutConstraintFixedCount"]),xl=new Set(["active","visible","canControllerFocus","isolateNavigation","disableKeyEventPassthrough","disableCursorEventPassthrough","showCursor","adaptiveFontSize","enableOutline","enableMask","enableSoftEdge","enableFill","reverseMaskArea","raycastTarget","interactable","showScrollBar"]),kl=new Set(["name","imageSource","horizontalAlignment","verticalAlignment","text","softEdgeMode","fillType","fillHorizontalType","fillVerticalType","fillRadial90Type","fillRadialType","scrollDirection","layoutConstraint","referencedPrefabId","animationId"]),aa=new Set(["unavailableChildId","hoverChildId","pressedChildId","selectedChildId"]),oa={imageSource:["StaticReference","Prefab"],imageType:["Basic","Stretch",null],scrollDirection:["Horizontal","Vertical"],layoutConstraint:["AutoWrap","Fixed"],softEdgeMode:["Percentage","Pixel"],fillType:["Horizontal","Vertical","Radial90","Radial180","Radial360"],fillHorizontalType:["Left","Right"],fillVerticalType:["Bottom","Top"],fillRadial90Type:["BottomLeft","TopLeft","TopRight","BottomRight"],fillRadialType:["Bottom","Left","Top","Right"]};function El(e,t){if(!t||typeof t!="object")throw new Error("patch requires op");let i=t.op;if(i==="select")return t.id&&ce(e.root,t.id)&&(e.selectedId=t.id),e;if(i==="pick"){let{boxes:n}=Je(e.root,e.canvasId),r=sa(e,n),a=Or(r,Number(t.x),Number(t.y));return a&&(e.selectedId=a),e}if(i==="setCanvas")return t.canvasId&&te[t.canvasId]&&(e.canvasId=t.canvasId),e;if(i==="setScript")throw new Error("\u811A\u672C\u7531\u5B58\u6863\u7EDF\u4E00\u7BA1\u7406\uFF0C\u8BF7\u4F7F\u7528 addScript / updateScript / removeScript \u64CD\u4F5C");if(i==="newAsset"){let n=t.assetType==="client-control-template"?Et():st();return e.version=n.version,e.meta=n.meta,e.canvasId=n.canvasId,e.selectedId=n.selectedId,e.root=n.root,e}if(i==="addTemplate"){if(e.meta.assetType!=="client-control-template")throw new Error("\u53EA\u6709\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F\u5DE5\u7A0B\u53EF\u4EE5\u65B0\u589E\u6A21\u677F");let n=H(t.kind,{id:nn(e.root),guid:na(e.root),name:t.name||`\u65B0${t.kind==="container"?"\u5BB9\u5668\u8282\u70B9":t.kind}\u6A21\u677F`});return e.root.children.push(n),e.selectedId=n.id,e}if(i==="add"){let n=ce(e.root,t.parentId||e.selectedId);if(!n)throw new Error("add: parent not found");let r=Tr(n,t.kind,{id:nn(e.root),guid:na(e.root),name:t.name});return e.selectedId=r.id,e}if(i==="reparent"){if(e.meta.assetType!=="client-control-template")throw new Error("\u5C42\u7EA7\u8C03\u6574\u4EC5\u9002\u7528\u4E8E\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F\u5DE5\u7A0B");let n=ce(e.root,t.id||e.selectedId),r=n?Le(e.root,n.id):null,a=ce(e.root,t.parentId);if(!n||n.kind==="server-container"||!r)throw new Error("reparent: node not found");if(!a)throw new Error("reparent: parent not found");if(a.id===n.id||gl(n,a.id))throw new Error("\u63A7\u4EF6\u4E0D\u80FD\u79FB\u52A8\u5230\u81EA\u8EAB\u6216\u5176\u540E\u4EE3\u4E0B\u9762");if(a.kind==="server-container"&&r.kind==="server-container")return e;if(r.kind==="server-container"&&a.kind!=="server-container"&&e.root.children.length<=1)throw new Error("\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F\u5217\u8868\u81F3\u5C11\u4FDD\u7559\u4E00\u4E2A\u9876\u5C42\u6A21\u677F");return yl(e,n,r,a),e.selectedId=n.id,e}if(i==="moveSibling"){let n=ce(e.root,t.id||e.selectedId),r=n?Le(e.root,n.id):null;if(!n||!r)throw new Error("moveSibling: node not found");let a=r.children.findIndex(u=>u.id===n.id),o=t.direction==="up"?-1:t.direction==="down"?1:0,l=a+o;return!o||l<0||l>=r.children.length||(r.children.splice(a,1),r.children.splice(l,0,n),e.selectedId=n.id),e}if(i==="remove"){let n=t.id||e.selectedId,r=Le(e.root,n);if(r?.kind==="server-container"){if(e.meta.assetType!=="client-control-template")throw new Error("\u670D\u52A1\u7AEF\u63A7\u4EF6\u6A21\u677F\u7684\u5BA2\u6237\u7AEF\u6839\u8282\u70B9\u4E0D\u80FD\u5220\u9664");if((e.root.children||[]).length<=1)throw new Error("\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F\u5217\u8868\u81F3\u5C11\u4FDD\u7559\u4E00\u4E2A\u6A21\u677F")}return Pr(e.root,n)&&(W(e.root,a=>{if(a.kind==="button")for(let o of aa)a[o]&&!ce(e.root,a[o])&&(a[o]=null)}),e.selectedId=r?r.id:e.root.id),e}if(i==="set"){let n=ce(e.root,t.id||e.selectedId);if(!n)throw new Error("set: node not found");let r=t.key;r==="reverseMask"&&(r="reverseMaskArea");let a=t.value;if(r.startsWith("giaRaw.")){let s=r.slice(7);if(!s||s.includes("."))throw new Error("invalid raw GIA field path");let f=Er(n.kind,s);if(!f)throw new Error(`unknown raw GIA field for ${n.kind}: ${s}`);if(n.giaRaw||={},n.giaRaw[s]=Ji(f,a),s==="footerField505"&&[0,1].includes(n.giaRaw[s])&&(n.canControllerFocus=n.giaRaw[s]===1),n.kind==="cursor"&&s==="cursorField501"&&[0,1].includes(n.giaRaw[s])&&(n.raycastTarget=n.giaRaw[s]===1),(n.kind==="textbox"||n.kind==="textwindow")&&s==="textAlign"){let d={0:"Left",1:"Middle",2:"Right"}[n.giaRaw[s]];d&&(n.horizontalAlignment=d)}if(n.kind==="image"&&s==="imageFillType"){let d={1:"Horizontal",2:"Vertical",3:"Radial90",4:"Radial180",5:"Radial360"}[n.giaRaw[s]];d&&(n.fillType=d)}return n.kind==="keyhint"&&s==="keyHintField502"&&(n.keyboardKeyCode=n.giaRaw[s]),n.kind==="keyhint"&&s==="keyHintField501"&&(n.controllerKeyCode=n.giaRaw[s]),e}if(r==="syncAllDevices"){if(n.syncAllDevices=ra(a),n.syncAllDevices){let s=We(n.transformByPlatform,e.canvasId);_t(e,n,s)}return e}if(vl.has(r)){if(r.endsWith("Color")&&(a=wl(a)),Cl.has(r)){if(a=Ye(a,r),a<0)throw new Error(`${r} must not be negative`);if((r==="imageId"||r==="clickAudioId"||r==="keyboardKeyCode"||r==="controllerKeyCode")&&(a=Math.trunc(a)),r==="fillAmount"&&a>1)throw new Error("fillAmount must be between 0 and 1")}if(xl.has(r)&&(a=ra(a)),kl.has(r)&&(a=String(a??"")),r==="horizontalAlignment"&&!["Left","Middle","Right"].includes(a))throw new Error("invalid horizontalAlignment");if(r==="verticalAlignment"&&!["Top","Middle","Bottom"].includes(a))throw new Error("invalid verticalAlignment");if(oa[r]&&!oa[r].includes(a))throw new Error(`invalid ${r}`);if(aa.has(r))if(a===""||a===void 0||a===null)a=null;else{a=String(a);let s=ce(e.root,a);if(!s||s===n||s.kind==="server-container"||!(n.children||[]).some(f=>f.id===a))throw new Error(`${r} must reference a direct child of this button`)}if(n.kind==="image"&&(r==="imageSource"||r==="imageId")&&n[r]!==a&&(n.imageType=null,n.giaRaw.imageSlotType=0),n[r]=a,n.kind==="image"&&r==="imageType"&&(n.giaRaw.imageSlotType=a==="Stretch"?1:0),r==="canControllerFocus"&&(n.giaRaw.footerField505=a?1:0),n.kind==="cursor"&&r==="raycastTarget"&&(n.giaRaw.cursorField501=a?1:0),(n.kind==="textbox"||n.kind==="textwindow")&&r==="horizontalAlignment"&&(n.giaRaw.textAlign={Left:0,Middle:1,Right:2}[a]),(n.kind==="textbox"||n.kind==="textwindow")&&r==="verticalAlignment"&&delete n.giaRaw.textVerticalAlign,n.kind==="image"&&r==="fillType"){let s={Horizontal:1,Vertical:2,Radial90:3,Radial180:4,Radial360:5}[a];s&&(n.giaRaw.imageFillType=s)}return n.kind==="reference"&&r==="referencedPrefabId"&&(n.giaRaw.templateRefSlot=a),n.kind==="grid"&&r==="previewCount"&&(n.giaRaw.gridField511=Math.trunc(a)),n.kind==="keyhint"&&r==="keyboardKeyCode"&&(n.giaRaw.keyHintField502=Math.trunc(a)),n.kind==="keyhint"&&r==="controllerKeyCode"&&(n.giaRaw.keyHintField501=Math.trunc(a)),(n.kind==="animation"||n.kind==="fullscreen")&&r==="animationId"&&(n.giaRaw[n.kind==="animation"?"effectSlot":"fullscreenEffectSlot"]=a),e}let{boxes:o}=Je(e.root,e.canvasId),l=vn(e,n.id,o),u=We(n.transformByPlatform,e.canvasId);if(r==="anchorType"){let s=bn(o[n.id]),f=Ir(u,a);return f=rt(l,f,s),_t(e,n,f),e}if(r==="rotationZ"){let s={...u,rotation:{...u.rotation,z:Ye(a,r)}};return _t(e,n,s),e}if(Il.has(r)){let s=bn(o[n.id]),f={...u,anchorMin:{...u.anchorMin},anchorMax:{...u.anchorMax},pivot:{...u.pivot}};return r==="anchorMinX"&&(f.anchorMin.x=Ye(a,r)),r==="anchorMinY"&&(f.anchorMin.y=Ye(a,r)),r==="anchorMaxX"&&(f.anchorMax.x=Ye(a,r)),r==="anchorMaxY"&&(f.anchorMax.y=Ye(a,r)),r==="pivotX"&&(f.pivot.x=Ye(a,r)),r==="pivotY"&&(f.pivot.y=Ye(a,r)),_t(e,n,rt(l,f,s)),e}if(Sl.has(r)){let s=bn(o[n.id]),f=Ye(a,r);if((r==="width"||r==="height")&&f<0)throw new Error(`${r} must not be negative`);return s[r]=f,_t(e,n,rt(l,u,s)),e}throw new Error(`set: unknown key ${r}`)}if(i==="replace"){let n=Qe(t.project);return e.version=n.version,e.meta=n.meta,e.canvasId=n.canvasId,e.selectedId=n.selectedId,e.root=n.root,e}throw new Error(`unknown op ${i}`)}function Sn(e,t){if(!t||typeof t!="object")throw new Error("patch requires op");if(t.expectedRevision!==void 0&&Number(t.expectedRevision)!==e.version)throw new Error(`revision conflict: expected ${t.expectedRevision}, current ${e.version}`);let i=e.version,n=JSON.parse(JSON.stringify(e));return El(n,t),la(n),Ve(n),n.version=i+1,Object.keys(e).forEach(r=>{delete e[r]}),Object.assign(e,n),e}function bn(e){return e?{posX:e.centerX,posY:e.centerY,width:e.width,height:e.height}:{posX:0,posY:0,width:0,height:0}}import Al from"fengari";var{lua:c,lauxlib:J,lualib:ca,to_luastring:Ci,to_jsstring:_l}=Al,Tl=c.LUA_TNIL,Pl=c.LUA_TBOOLEAN,Rl=c.LUA_TNUMBER,Ml=c.LUA_TSTRING,fa=c.LUA_TTABLE,Nl=c.LUA_TFUNCTION,In=c.LUA_TUSERDATA,Te=c.LUA_OK,da=new WeakMap,wn=Symbol("luaTableEntries"),Cn={__scriptHostKey:!0};function R(e){return Ci(String(e))}function ut(e,t){da.set(e,t)}function we(e){return da.get(e)}var Lt=class{constructor(t){this.value=t}};function oe(e,t,i){if(i instanceof Lt){c.lua_pushnumber(e,i.value);return}if(i==null){c.lua_pushnil(e);return}let n=typeof i;if(n==="boolean"){c.lua_pushboolean(e,i);return}if(n==="number"){Number.isInteger(i)&&Math.abs(i)<=2147483647?c.lua_pushinteger(e,i):c.lua_pushnumber(e,i);return}if(n==="string"){c.lua_pushstring(e,R(i));return}if(n==="function"){zl(e,t,i);return}if(i&&i[wn]){let r=i[wn];c.lua_createtable(e,Array.isArray(i)?i.length:0,r.length);for(let[a,o]of r)oe(e,t,a),oe(e,t,o),c.lua_settable(e,-3);return}if(Array.isArray(i)){c.lua_createtable(e,i.length,0);for(let r=0;r<i.length;r++)oe(e,t,i[r]),c.lua_rawseti(e,-2,r+1);return}if(i&&i.__kind==="EnumItem"){t.pushEnumItem(e,i);return}if(i&&i.__kind==="CursorEventData"){t.pushCursor(e,i);return}if(i&&i.__kind==="Script"){t.pushScript(e,i);return}if(i&&i.typeofName){t.pushControl(e,i);return}if(i&&i.__kind==="ServerSignal"){t.pushSignal(e,i);return}if(i&&(i.SetEase||i.Append)){t.pushTween(e,i);return}if(n==="object"){c.lua_createtable(e,0,Object.keys(i).length);for(let[r,a]of Object.entries(i))oe(e,t,a),c.lua_setfield(e,-2,R(r));return}c.lua_pushnil(e)}function q(e,t){if(c.lua_isnil(e,t)||c.lua_type(e,t)===c.LUA_TNONE)return"";if(!c.lua_isstring(e,t)&&c.lua_type(e,t)!==c.LUA_TNUMBER)return`lua_type=${c.lua_type(e,t)}`;let i=c.lua_tostring(e,t);return i==null?"":_l(i)}function Be(e,t){t=c.lua_absindex(e,t);let i=c.lua_type(e,t);if(i===In)return we(c.lua_touserdata(e,t));if(i===fa){c.lua_pushlightuserdata(e,Cn),c.lua_rawget(e,t);let n=c.lua_type(e,-1)===In?c.lua_touserdata(e,-1):null;return c.lua_pop(e,1),n?we(n):null}return null}function de(e,t,i){i=c.lua_absindex(e,i);let n=c.lua_type(e,i);if(n===Tl)return null;if(n===Pl)return!!c.lua_toboolean(e,i);if(n===Rl)return c.lua_isinteger(e,i)?c.lua_tointeger(e,i):c.lua_tonumber(e,i);if(n===Ml)return q(e,i);if(n===In){let r=c.lua_touserdata(e,i);return we(r)??r}if(n===Nl)return Fl(e,t,i);if(n===fa){let r=Be(e,i);if(r)return r;let a=[];for(c.lua_pushnil(e);c.lua_next(e,i)!==0;){let s=de(e,t,-2),f=de(e,t,-1);a.push([s,f]),c.lua_pop(e,1)}let o=new Map(a.filter(([s])=>Number.isInteger(s)&&s>=1)),l=0;for(;o.has(l+1);)l+=1;let u=l>0?[]:{};for(let[s,f]of a)Array.isArray(u)&&Number.isInteger(s)&&s>=1?u[s-1]=f:(typeof s=="string"||typeof s=="number")&&(u[s]=f);return Object.defineProperty(u,wn,{value:a}),u}return null}function Fl(e,t,i){t.luaFunctions||(t.luaFunctions=new Map);let n=typeof c.lua_topointer=="function"?c.lua_topointer(e,i):null;if(n!=null&&t.luaFunctions.has(n))return t.luaFunctions.get(n);c.lua_pushvalue(e,i);let r=J.luaL_ref(e,c.LUA_REGISTRYINDEX),a=Ol(e,t,r);return n!=null&&t.luaFunctions.set(n,a),a}function Ol(e,t,i){let n=(...r)=>{if(n.__luaRef==null)throw new Error("attempt to call a released Lua callback");let a=c.lua_gettop(e);c.lua_rawgeti(e,c.LUA_REGISTRYINDEX,n.__luaRef);for(let s of r)oe(e,t,s);if(c.lua_pcall(e,r.length,c.LUA_MULTRET,0)!==Te){let s=q(e,-1);throw c.lua_settop(e,a),new Error(s)}let l=c.lua_gettop(e)-a,u=[];for(let s=1;s<=l;s++)u.push(de(e,t,a+s));if(c.lua_settop(e,a),u.length!==0)return u.length===1?u[0]:u};return n.__luaRef=i,n.__luaState=e,n}function ha(e){e?.__luaRef!=null&&(e.__luaHolds=(e.__luaHolds||0)+1)}function ma(e,t){if(!t||t.__luaRef==null||!t.__luaState)return;if(t.__luaHolds>1){t.__luaHolds-=1;return}let i=t.__luaState;if((!e?.luaStates||e.luaStates.has(i))&&J.luaL_unref(i,c.LUA_REGISTRYINDEX,t.__luaRef),t.__luaRef=null,t.__luaState=null,e?.luaFunctions)for(let[n,r]of e.luaFunctions)r===t&&e.luaFunctions.delete(n)}function zl(e,t,i){c.lua_pushlightuserdata(e,i),c.lua_pushlightuserdata(e,t),c.lua_pushcclosure(e,function(r){let a=c.lua_touserdata(r,c.lua_upvalueindex(1)),o=c.lua_touserdata(r,c.lua_upvalueindex(2)),l=c.lua_gettop(r),u=[];for(let s=1;s<=l;s++)u.push(de(r,o,s));try{let s=a(...u);if(Array.isArray(s)&&s.__multi){for(let f of s)oe(r,o,f);return s.length}return s===void 0?0:(oe(r,o,s),1)}catch(s){return c.lua_pushstring(r,R(String(s&&s.message?s.message:s))),c.lua_error(r)}},2)}function pa(e){!e||typeof c.lua_close!="function"||c.lua_close(e)}function ga(e){if(J.luaL_loadstring(e,R(["local nativeGetMetatable = getmetatable","getmetatable = function(value)",' if type(value) == "string" then return nil end'," return nativeGetMetatable(value)","end"].join(`
107
- `)))===Te&&c.lua_pcall(e,0,0,0),c.lua_settop(e,0),c.lua_pushnil(e),c.lua_setglobal(e,R("_VERSION")),c.lua_getglobal(e,R("string")),!c.lua_isnil(e,-1))for(let i of["dump","pack","unpack"])c.lua_pushnil(e),c.lua_setfield(e,-2,R(i));if(c.lua_pop(e,1),c.lua_pushnil(e),c.lua_setglobal(e,R("io")),c.lua_getglobal(e,R("os")),!c.lua_isnil(e,-1))for(let i of Object.keys({execute:1,getenv:1,remove:1,rename:1,tmpname:1,setlocale:1,exit:1}))c.lua_pushnil(e),c.lua_setfield(e,-2,R(i));c.lua_pop(e,1),c.lua_getglobal(e,R("debug")),c.lua_isnil(e,-1)?c.lua_pop(e,1):(c.lua_getfield(e,-1,R("traceback")),c.lua_newtable(e),c.lua_pushvalue(e,-2),c.lua_setfield(e,-2,R("traceback")),c.lua_setglobal(e,R("debug")),c.lua_pop(e,2)),c.lua_getglobal(e,R("math")),c.lua_isnil(e,-1)||(c.lua_pushcfunction(e,i=>{let n=c.lua_tonumber(i,1);return c.lua_pushboolean(i,Number.isNaN(n)),1}),c.lua_setfield(e,-2,R("isnan")),c.lua_pushcfunction(e,i=>{let n=c.lua_tonumber(i,1);return c.lua_pushboolean(i,n===1/0||n===-1/0),1}),c.lua_setfield(e,-2,R("isinf"))),c.lua_pop(e,1),c.lua_pushnil(e),c.lua_setglobal(e,R("package")),c.lua_pushnil(e),c.lua_setglobal(e,R("load")),c.lua_pushnil(e),c.lua_setglobal(e,R("loadfile")),c.lua_pushnil(e),c.lua_setglobal(e,R("dofile")),c.lua_pushnil(e),c.lua_setglobal(e,R("collectgarbage")),c.lua_pushnil(e),c.lua_setglobal(e,R("coroutine")),c.lua_pushnil(e),c.lua_setglobal(e,R("fengari"))}var xe=(e,t=0)=>Number.isFinite(Number(e))?Number(e):t,ya=e=>e?.Name||e,xi=e=>Math.max(0,Math.min(1,xe(e)));function Wt(e){let t=e.parent?Wt(e.parent):[e.runtime.canvasWidth,e.runtime.canvasHeight];return[Math.max(0,(e.anchorMaxX-e.anchorMinX)*t[0]+xe(e.sizeDeltaX)),Math.max(0,(e.anchorMaxY-e.anchorMinY)*t[1]+xe(e.sizeDeltaY))]}function Jt(e){let[t,i]=Wt(e),n=ya(e.scrollDirection)==="Horizontal",r=Math.max(1,xe(e.cellSizeX,50)),a=Math.max(1,xe(e.cellSizeY,50)),o=Math.max(0,xe(e.spacingX)),l=Math.max(0,xe(e.spacingY)),u=Math.max(0,xe(e.padding1X)),s=Math.max(0,xe(e.padding1Y)),f=Math.max(0,xe(e.padding2X)),d=Math.max(0,xe(e.padding2Y)),g=n?i-s-d:t-u-f,p=n?a:r,m=n?l:o,y=ya(e.layoutConstraint)==="Fixed"?Math.max(1,Math.floor(xe(e.layoutConstraintFixedCount,1))):Math.max(1,Math.floor((g+m)/(p+m))),w=Math.ceil(e.itemCount/y),_=w?n?u+f+w*r+(w-1)*o:s+d+w*a+(w-1)*l:0,C=n?t:i,G=Math.max(0,_-C);return{width:t,height:i,horizontal:n,cellW:r,cellH:a,gapX:o,gapY:l,left:u,top:s,right:f,bottom:d,lanes:y,length:_,viewport:C,max:G,offset:xi(e.scrollProgress)*G}}function Tt(e){let t=Jt(e);for(let i=0;i<(e._gridItems?.length||0);i+=1){let n=e._gridItems[i];if(!n.alive||n.parent!==e)continue;let r=Math.floor(i/t.lanes),a=i%t.lanes,o=t.horizontal?r:a,l=t.horizontal?a:r,u=t.left+o*(t.cellW+t.gapX)+t.cellW/2-(t.horizontal?t.offset:0),s=-t.top-l*(t.cellH+t.gapY)-t.cellH/2+(t.horizontal?0:t.offset),f={anchorMinX:0,anchorMaxX:0,anchorMinY:1,anchorMaxY:1,pivotX:.5,pivotY:.5,sizeDeltaX:t.cellW,sizeDeltaY:t.cellH,anchoredPositionX:u,anchoredPositionY:s};Object.entries(f).some(([d,g])=>n[d]!==g)&&(Object.assign(n,f),n.markPlayDirty(!0))}return t}var ba={container:"ClientUIContainerControl",textbox:"ClientUITextBoxControl",textwindow:"ClientUITextWindowControl",image:"ClientUIImageControl",button:"ClientUIPresetButtonControl",cursor:"ClientUICursorEventAreaControl",grid:"ClientUIGridScrollerControl",keyhint:"ClientUIKeyHintControl",animation:"ClientUIAnimationControl",fullscreen:"ClientUIFullscreenAnimationControl",reference:"ClientUIReferenceControl"},$l=["alive","Id","prefabIndex","active","activeInHierarchy","visible"],ki=new Set(["active","visible","parent","sizeDeltaX","sizeDeltaY","anchorMinX","anchorMinY","anchorMaxX","anchorMaxY","pivotX","pivotY"]),Dl=["name","parent","anchoredPositionX","anchoredPositionY","sizeDeltaX","sizeDeltaY","anchorMinX","anchorMinY","anchorMaxX","anchorMaxY","pivotX","pivotY","localScaleX","localScaleY","localScaleZ","localRotationX","localRotationY","localRotationZ","canControllerFocus"],Gl={image:["imageSource","imageId"],grid:["itemCount","scrollDirection","layoutConstraint","layoutConstraintFixedCount"],reference:["referencedPrefabIndex"]},Vl={container:["isolateNavigation","disableKeyEventPassthrough","disableCursorEventPassthrough","showCursor"],textbox:["text","fontSize","fontColor","bgColor","enableOutline","outlineColor","horizontalAlignment","verticalAlignment","adaptiveFontSize","minimumFontSize"],textwindow:["interactable","showScrollBar","text","fontSize","fontColor","bgColor","enableOutline","outlineColor","horizontalAlignment","verticalAlignment","adaptiveFontSize","minimumFontSize"],image:["imageColor","enableMask","enableSoftEdge","softEdgeMode","softEdgeWidthX","softEdgeWidthY","horizontalSoftRange","verticalSoftRange","reverseMaskArea","fillType","fillHorizontalType","fillVerticalType","fillRadial90Type","fillRadialType","fillAmount"],button:["interactable","clickAudioId","raycastTarget"],cursor:["raycastTarget"],grid:["itemPrefabIndex","raycastTarget","showScrollBar","interactable","scrollProgress"],keyhint:["keyboardKeyCode","controllerKeyCode"],animation:["animationId","playSoundEffect","layer"],fullscreen:["animationId","playSoundEffect"]},Yl=["GetChildren","GetChild","FindChild","SetActive","SetVisible","GetSiblingIndex","SetSiblingIndex","SetAsFirstSibling","SetAsLastSibling","GetAnchoredPosition","SetAnchoredPosition","GetSizeDelta","SetSizeDelta","GetAnchorMin","SetAnchorMin","GetAnchorMax","SetAnchorMax","GetPivot","SetPivot","GetLocalScale","SetLocalScale","GetLocalRotation","SetLocalRotation","GetScriptByPath","GetScript","GetScripts","AddKeyEventListener","RemoveKeyEventListener","RemoveKeyEventListeners","RemoveAllKeyEventListeners","AddNavigationEventListener","RemoveNavigationEventListener","RemoveNavigationEventListeners","RemoveAllNavigationEventListeners","SetControllerNavigation","GetControllerNavigation"],va=["AddCursorEventListener","RemoveCursorEventListener","RemoveCursorEventListeners","RemoveAllCursorEventListeners","SimulateCursorClick"],Bl={image:["SetImage","SetSoftEdgeWidth","SetFillUnused","SetFillHorizontal","SetFillVertical","SetFillRadial90","SetFillRadial180","SetFillRadial360"],button:va,cursor:va,animation:["PlayAnimation","StopAnimation"],grid:["RefreshItems","GetItemIndex","GetItemSize","GetItemSpacing","GetPadding","ScrollToItemAt","GetContentLength"]};function kn(e,t){return e.kind==="image"&&t==="imageType"&&e.runtime.canSelectImageType(e.imageId,e.imageSource)?"rw":$l.includes(t)||(Gl[e.kind]||[]).includes(t)?"ro":Dl.includes(t)||(Vl[e.kind]||[]).includes(t)?"rw":null}var Xl=["localRotationX","localRotationY","localRotationZ"],Pt=Math.PI/180;function Sa(e,t){return[e[3]*t[0]+e[0]*t[3]+e[1]*t[2]-e[2]*t[1],e[3]*t[1]-e[0]*t[2]+e[1]*t[3]+e[2]*t[0],e[3]*t[2]+e[0]*t[1]-e[1]*t[0]+e[2]*t[3],e[3]*t[3]-e[0]*t[0]-e[1]*t[1]-e[2]*t[2]]}function xn(e){if(Object.is(e,-0))return e;let t=(e%360+360)%360,i=Math.round(t*1e6)/1e6;return i>=360?0:i}function Ia(e,t,i){let n=C=>[Math.sin(C*Pt/2),Math.cos(C*Pt/2)],[r,a]=n(e),[o,l]=n(t),[u,s]=n(i),[f,d,g,p]=Sa(Sa([0,o,0,l],[r,0,0,a]),[0,0,u,s]),m=Math.max(-1,Math.min(1,-2*(d*g-p*f))),y,w,_;return Math.abs(m)>.999999?(y=Math.sign(m)*90,w=2*Math.atan2(d,p)/Pt,_=0):(y=Math.asin(m)/Pt,w=Math.atan2(2*(p*d+f*g),1-2*(f*f+d*d))/Pt,_=Math.atan2(2*(p*g+f*d),1-2*(f*f+g*g))/Pt),[xn(y),xn(w),xn(_)]}function wa(e,t){return Yl.includes(t)||(Bl[e.kind]||[]).includes(t)}var Ul={container:{isolateNavigation:!1,disableKeyEventPassthrough:!1,disableCursorEventPassthrough:!1,showCursor:!1},textbox:{text:"",fontSize:20,fontColor:4294967295,bgColor:0,enableOutline:!1,outlineColor:0,horizontalAlignment:null,verticalAlignment:null,adaptiveFontSize:!1,minimumFontSize:10},textwindow:{interactable:!0,showScrollBar:!0,text:"",fontSize:20,fontColor:4294967295,bgColor:0,enableOutline:!1,outlineColor:0,horizontalAlignment:null,verticalAlignment:null,adaptiveFontSize:!1,minimumFontSize:10},image:{imageSource:null,imageId:0,imageColor:4294967295,imageType:null,enableMask:!1,enableSoftEdge:!1,softEdgeMode:"Percentage",softEdgeWidthX:8,softEdgeWidthY:8,horizontalSoftRange:85,verticalSoftRange:85,enableFill:!1,fillType:"Unused",fillHorizontalType:"Left",fillVerticalType:"Bottom",fillRadial90Type:"BottomLeft",fillRadialType:"Bottom",reverseMaskArea:!1,fillAmount:1},button:{interactable:!0,clickAudioId:0,raycastTarget:!0,unavailableChildId:null,hoverChildId:null,pressedChildId:null,selectedChildId:null,pressed:!1},cursor:{raycastTarget:!0},grid:{itemCount:0,itemPrefabIndex:null,raycastTarget:!0,interactable:!0,showScrollBar:!0,scrollDirection:"Vertical",layoutConstraint:"AutoWrap",layoutConstraintFixedCount:null,scrollProgress:0,cellSizeX:50,cellSizeY:50,spacingX:8,spacingY:8,padding1X:20,padding1Y:20,padding2X:20,padding2Y:20,previewCount:5},keyhint:{keyboardKeyCode:null,controllerKeyCode:null},animation:{animationId:null,playSoundEffect:null,layer:null,raycastTarget:!1},fullscreen:{animationId:null,playSoundEffect:null,raycastTarget:!1},reference:{referencedPrefabIndex:null}},et=class e{constructor(t,i){this.runtime=t,this.kind=i.kind||"container",this.typeofName=ba[this.kind]||ba.container,this.alive=!0,this.Id=i.Id??t.nextControlId(),this.authoringId=i.authoringId??null,this.prefabIndex=i.prefabIndex??0,this.name=i.name??"",this.active=i.active===!0,this.visible=i.visible!==!1,this._parent=null,this.children=[],this.scripts=[],this.cursorListeners=new Map,this.keyListeners=new Map,this.navListeners=new Map,this.navConfig=new Map,this.anchoredPositionX=i.anchoredPositionX??0,this.anchoredPositionY=i.anchoredPositionY??0,this.sizeDeltaX=i.sizeDeltaX??0,this.sizeDeltaY=i.sizeDeltaY??0,this.anchorMinX=i.anchorMinX??.5,this.anchorMinY=i.anchorMinY??.5,this.anchorMaxX=i.anchorMaxX??.5,this.anchorMaxY=i.anchorMaxY??.5,this.pivotX=i.pivotX??.5,this.pivotY=i.pivotY??.5,this.localScaleX=i.localScaleX??1,this.localScaleY=i.localScaleY??1,this.localScaleZ=i.localScaleZ??1,this.localRotationX=i.localRotationX??0,this.localRotationY=i.localRotationY??0,this.localRotationZ=i.localRotationZ??0,this.canControllerFocus=i.canControllerFocus??!1,this._playDirty=!0,this._playDeepDirty=!0,this._playChildDirty=!1,(this.kind==="grid"||this.kind==="textwindow")&&(this.runtime.scrollControls||=new Set,this.runtime.scrollControls.add(this));let n=Ul[this.kind]||{};for(let[r,a]of Object.entries(n))this[r]===void 0&&(this[r]=i[r]!==void 0?i[r]:a);if(this.kind==="grid"&&(this.scrollProgress=i.scrollProgress??0),i.children)for(let r of i.children){let a=r instanceof e?r:new e(t,r);this.addChild(a)}}get parent(){return this._parent}set parent(t){if(this._parent===t)return;if(t!==null&&!(t instanceof e))throw new Error("parent must be a Control or nil");if(t&&t.runtime!==this.runtime)throw new Error("parent must belong to the same runtime");if(t===this)throw new Error("cannot parent a control to itself or its descendant");for(let n=t;n;n=n._parent)if(n===this)throw new Error("cannot parent a control to itself or its descendant");let i=this._parent;if(i){let n=i.children.indexOf(this);n>=0&&i.children.splice(n,1),i.markPlayDirty(!0)}else{let n=this.runtime.roots.indexOf(this);n>=0&&this.runtime.roots.splice(n,1)}this._parent=t,this.markPlayDirty(!0),t&&!t.children.includes(this)?(t.children.push(this),t.markPlayDirty(!0)):!t&&this.alive&&!this.runtime.roots.includes(this)&&this.runtime.roots.push(this)}markPlayDirty(t=!1){this._playDirty=!0,t&&(this._playDeepDirty=!0);for(let i=this._parent;i&&!i._playChildDirty;i=i._parent)i._playChildDirty=!0}get activeInHierarchy(){return this.active?this._parent?this._parent.activeInHierarchy:!0:!1}get scrollProgress(){return this._scrollProgress??0}set scrollProgress(t){if(typeof t!="number"||!Number.isFinite(t))throw new Error("scrollProgress must be a finite number");this._scrollProgress=xi(t),this.markPlayDirty()}addChild(t){return t.parent=this,t}GetChildren(){return this.children.slice()}GetChild(t){return this.children.find(i=>i.name===t)||null}FindChild(t){if(!t)return null;if(!t.includes("/"))return this.GetChild(t);let i=t.split("/").filter(Boolean),n=this;for(let r of i)if(n=n.GetChild(r),!n)return null;return n}SetActive(t){let i=!!t;if(this.active!==i){if(typeof this.runtime?.onControlActiveChanging=="function"){this.runtime.onControlActiveChanging(this,i);return}this.active=i,this.markPlayDirty(!0)}}SetVisible(t){this.visible=!!t,this.markPlayDirty(!0)}GetSiblingIndex(){if(!this._parent)return-1;let t=this._parent.children,i=t.indexOf(this);return i<0?-1:t.length-1-i}SetSiblingIndex(t){if(!this._parent)return!1;let i=this._parent.children,n=i.indexOf(this);if(n<0)return!1;let r=i.length-1;return!Number.isInteger(t)||t<0||t>r?!1:(i.splice(n,1),i.splice(r-t,0,this),this._parent.markPlayDirty(!0),this.markPlayDirty(),!0)}SetAsFirstSibling(){return this.SetSiblingIndex(0)}SetAsLastSibling(){return this._parent?this.SetSiblingIndex(this._parent.children.length-1):!1}GetAnchoredPosition(){return[this.anchoredPositionX,this.anchoredPositionY]}SetAnchoredPosition(t,i){this.anchoredPositionX=t,this.anchoredPositionY=i,this.markPlayDirty()}GetSizeDelta(){return[this.sizeDeltaX,this.sizeDeltaY]}SetSizeDelta(t,i){this.sizeDeltaX=t,this.sizeDeltaY=i,this.markPlayDirty(!0)}GetAnchorMin(){return[this.anchorMinX,this.anchorMinY]}SetAnchorMin(t,i){this.anchorMinX=t,this.anchorMinY=i,this.markPlayDirty(!0)}GetAnchorMax(){return[this.anchorMaxX,this.anchorMaxY]}SetAnchorMax(t,i){this.anchorMaxX=t,this.anchorMaxY=i,this.markPlayDirty(!0)}GetPivot(){return[this.pivotX,this.pivotY]}SetPivot(t,i){this.pivotX=t,this.pivotY=i,this.markPlayDirty(!0)}GetLocalScale(){return[this.localScaleX,this.localScaleY,this.localScaleZ]}SetLocalScale(t,i,n){this.localScaleX=t,this.localScaleY=i,this.localScaleZ=n,this.markPlayDirty()}GetLocalRotation(){return Ia(this.localRotationX,this.localRotationY,this.localRotationZ)}luaFieldValue(t){if(t==="imageType")return this.imageType??"Stretch";let i=Xl.indexOf(t);return i<0?this[t]:Ia(this.localRotationX,this.localRotationY,this.localRotationZ)[i]}SetLocalRotation(t,i,n){this.localRotationX=t,this.localRotationY=i,this.localRotationZ=n,this.markPlayDirty()}GetScriptByPath(t){return this.scripts.find(i=>i.path===t)||null}GetScript(t){return this.scripts.find(i=>i.scriptMappingId===t)||null}GetScripts(){return this.scripts.slice()}_addListener(t,i,n){let r=t.get(i)||[];r.push(n),t.set(i,r),this.runtime.retainLuaCallback?.(n)}_removeListener(t,i,n){let r=t.get(i);if(!r)return;let a=r.filter(o=>o!==n);t.set(i,a);for(let o=a.length;o<r.length;o++)this.runtime.unrefLuaCallback?.(n)}_removeListeners(t,i){let n=t.get(i)||[];for(let r of n)this.runtime.unrefLuaCallback?.(r);t.delete(i)}_removeAllListeners(t){for(let i of t.values())for(let n of i)this.runtime.unrefLuaCallback?.(n);t.clear()}AddCursorEventListener(t,i){this._addListener(this.cursorListeners,t,i)}RemoveCursorEventListener(t,i){this._removeListener(this.cursorListeners,t,i)}RemoveCursorEventListeners(t){this._removeListeners(this.cursorListeners,t)}RemoveAllCursorEventListeners(){this._removeAllListeners(this.cursorListeners)}SimulateCursorClick(){let t=this.runtime.makeCursorEventData({x:0,y:0,pressX:0,pressY:0});this.emitCursor("CursorDown",t),this.emitCursor("CursorUp",t),this.emitCursor("CursorClick",t)}emitCursor(t,i){if(!this.runtime.cursorEventsEnabled(this))return;let n=this.cursorListeners.get(t)||[];for(let r of n)r(i)}AddKeyEventListener(t,i){this._addListener(this.keyListeners,t,i)}RemoveKeyEventListener(t,i){this._removeListener(this.keyListeners,t,i)}RemoveKeyEventListeners(t){this._removeListeners(this.keyListeners,t)}RemoveAllKeyEventListeners(){this._removeAllListeners(this.keyListeners)}emitKey(t){let i=this.keyListeners.get(t)||[];for(let n of i)if(n()===!0)return!0;return!1}AddNavigationEventListener(t,i){this._addListener(this.navListeners,t,i)}RemoveNavigationEventListener(t,i){this._removeListener(this.navListeners,t,i)}RemoveNavigationEventListeners(t){this._removeListeners(this.navListeners,t)}RemoveAllNavigationEventListeners(){this._removeAllListeners(this.navListeners)}SetControllerNavigation(t,i,n){this.navConfig.set(t,{mode:i,target:n})}GetControllerNavigation(t){let i=this.navConfig.get(t),n=i?[i.mode,i.target]:[null,null];return n.__multi=!0,n}SetImage(t,i){let n=this.imageSource?.Name||this.imageSource,r=t?.Name||t;(i!==this.imageId||n!==r)&&(this.imageType=null),this.imageSource=t,this.imageId=i,this.markPlayDirty()}SetSoftEdgeWidth(t,i){this.softEdgeWidthX=t,this.softEdgeWidthY=i,this.markPlayDirty()}SetFillUnused(){this.fillType="Unused",this.markPlayDirty()}SetFillHorizontal(t,i){this.fillType="Horizontal",this.fillHorizontalType=t,this.fillAmount=i,this.markPlayDirty()}SetFillVertical(t,i){this.fillType="Vertical",this.fillVerticalType=t,this.fillAmount=i,this.markPlayDirty()}SetFillRadial90(t,i){this.fillType="Radial90",this.fillRadial90Type=t,this.fillAmount=i,this.markPlayDirty()}SetFillRadial180(t,i){this.fillType="Radial180",this.fillRadialType=t,this.fillAmount=i,this.markPlayDirty()}SetFillRadial360(t,i){this.fillType="Radial360",this.fillRadialType=t,this.fillAmount=i,this.markPlayDirty()}PlayAnimation(){}StopAnimation(){}RefreshItems(t,i){if(!Number.isInteger(t)||t<0||t>2e3)throw new Error("RefreshItems: simulator supports 0..2000 items");if(typeof i!="function")throw new Error("RefreshItems: callback must be a function");if(!this.alive||this._refreshingGrid)throw new Error("RefreshItems: destroyed control or recursive refresh");if(t&&!this.runtime.templates.has(Number(this.itemPrefabIndex)))throw new Error("RefreshItems: item template not found");if(t&&["OnInit","OnDestroy"].includes(this.runtime.lifecyclePhase))throw new Error("RefreshItems: items cannot be created during OnInit/OnDestroy");this._refreshingGrid=!0;try{this._gridItems||=[];let n=[];for(let r of this._gridItems)r.alive&&r.parent===this&&r.prefabIndex===Number(this.itemPrefabIndex)&&n.length<t?n.push(r):r.alive&&r.parent===this&&this.runtime.destroyControl(r);for(this._gridItems=n;n.length<t;){let r=this.runtime.instantiate(this.itemPrefabIndex,this,this.runtime.lifecyclePhase);if(!r)throw new Error("RefreshItems: could not instantiate item");n.push(r),r.SetActive(!0)}this.itemCount=t,Tt(this),this.markPlayDirty(!0);for(let r=0;r<n.length&&this.alive;r+=1)i(n[r],r)}finally{this._refreshingGrid=!1}}GetItemIndex(t){return t?.alive&&t.parent===this?this._gridItems?.indexOf(t)??-1:-1}GetItemSize(){return[this.cellSizeX,this.cellSizeY]}GetItemSpacing(){return[this.spacingX,this.spacingY]}GetPadding(){return[this.padding1Y,this.padding2Y,this.padding1X,this.padding2X]}ScrollToItemAt(t,i){if(!Number.isInteger(t)||t<0||t>=this.itemCount)throw new Error("ScrollToItemAt: item index out of range");let n=Jt(this),r=n.horizontal?n.cellW:n.cellH,a=n.horizontal?n.gapX:n.gapY,o=(n.horizontal?n.left:n.top)+Math.floor(t/n.lanes)*(r+a),l=i?.Name||i;if(!["Top","Center","Bottom"].includes(l))throw new Error("ScrollToItemAt: invalid alignment");let u=o-(l==="Center"?(n.viewport-r)/2:l==="Bottom"?n.viewport-r:0);this.scrollProgress=n.max?xi(u/n.max):0,Tt(this),this.markPlayDirty(!0)}GetContentLength(){return Jt(this).length}};function ze(e,t){t(e);for(let i of e.children)ze(i,t)}function En(e,t=[],i=""){t.push(`${i}${e.name||"(unnamed)"} [${e.typeofName}] Id=${e.Id}`);for(let n of e.children)En(n,t,i+" ");return t}function Ei(e){return e<1/2.75?7.5625*e*e:e<2/2.75?7.5625*(e-=1.5/2.75)*e+.75:e<2.5/2.75?7.5625*(e-=2.25/2.75)*e+.9375:7.5625*(e-=2.625/2.75)*e+.984375}var Ca={Linear:e=>e,InSine:e=>1-Math.cos(e*Math.PI/2),OutSine:e=>Math.sin(e*Math.PI/2),InOutSine:e=>-(Math.cos(Math.PI*e)-1)/2,InQuad:e=>e*e,OutQuad:e=>1-(1-e)*(1-e),InOutQuad:e=>e<.5?2*e*e:1-(-2*e+2)**2/2,InCubic:e=>e*e*e,OutCubic:e=>1-(1-e)**3,InOutCubic:e=>e<.5?4*e*e*e:1-(-2*e+2)**3/2,InQuart:e=>e**4,OutQuart:e=>1-(1-e)**4,InOutQuart:e=>e<.5?8*e**4:1-(-2*e+2)**4/2,InQuint:e=>e**5,OutQuint:e=>1-(1-e)**5,InOutQuint:e=>e<.5?16*e**5:1-(-2*e+2)**5/2,InExpo:e=>e===0?0:2**(10*e-10),OutExpo:e=>e===1?1:1-2**(-10*e),InOutExpo:e=>e===0||e===1?e:e<.5?2**(20*e-10)/2:(2-2**(-20*e+10))/2,InCirc:e=>1-Math.sqrt(1-e**2),OutCirc:e=>Math.sqrt(1-(e-1)**2),InOutCirc:e=>e<.5?(1-Math.sqrt(1-(2*e)**2))/2:(Math.sqrt(1-(-2*e+2)**2)+1)/2,InBack:e=>(1.70158+1)*e*e*e-1.70158*e*e,OutBack:e=>1+2.70158*(e-1)**3+1.70158*(e-1)**2,InOutBack:e=>{let i=2.5949095;return e<.5?(2*e)**2*((i+1)*2*e-i)/2:((2*e-2)**2*((i+1)*(e*2-2)+i)+2)/2},InElastic:e=>e===0||e===1?e:-(2**(10*e-10))*Math.sin((e*10-10.75)*(2*Math.PI/3)),OutElastic:e=>e===0||e===1?e:2**(-10*e)*Math.sin((e*10-.75)*(2*Math.PI/3))+1,InOutElastic:e=>{if(e===0||e===1)return e;let t=2*Math.PI/4.5;return e<.5?-(2**(20*e-10)*Math.sin((20*e-11.125)*t))/2:2**(-20*e+10)*Math.sin((20*e-11.125)*t)/2+1},InBounce:e=>1-Ei(1-e),OutBounce:Ei,InOutBounce:e=>e<.5?(1-Ei(1-2*e))/2:(1+Ei(2*e-1))/2};function xa(e,t){let i=Ca[e]||Ca.Linear;return t<=0?0:t>=1?1:i(t)}function Rt(e,t,i,n=255){let r=Ai(e),a=Ai(t),o=Ai(i);return((n==null?255:Ai(n))<<24|r<<16|a<<8|o)>>>0}function Zt(e){let t=e>>>0;return[t>>>16&255,t>>>8&255,t&255,t>>>24&255]}function Ai(e){let t=Number(e);return Number.isFinite(t)?Math.max(0,Math.min(255,Math.trunc(t))):0}function ka(e,t,i){let n=Zt(e),r=Zt(t);return Rt(n[0]+(r[0]-n[0])*i,n[1]+(r[1]-n[1])*i,n[2]+(r[2]-n[2])*i,n[3]+(r[3]-n[3])*i)}var jl=new Set(["fontColor","bgColor","outlineColor","imageColor"]),Hl=new Set(["fontSize","minimumFontSize"]),An=1e-9;function Kl(e,t){return typeof e?.luaFieldValue=="function"?e.luaFieldValue(t):e[t]}var Qt=class{constructor(t,i,n,r){this.runtime=t,this.object=i,this.data={...n},this.duration=Math.max(0,Number(r)||0),this.easeName="Linear",this.relative=!1,this.playing=!1,this.paused=!1,this.elapsed=0,this.loops=1,this.loopIndex=0,this.from={},this.to={},this.initialFrom=null,this.initialTo=null,this.onComplete=null,this.onStepComplete=null,this.killed=!1,this.dead=!1,this.completed=!1}capture(){this.from={},this.to={};for(let[t,i]of Object.entries(this.data)){let n=Kl(this.object,t);this.from[t]=n,this.to[t]=this.relative?Number(n)+Number(i):i}}restoreInitial(){this.from={...this.initialFrom},this.to={...this.initialTo}}SetEase(t){return this.easeName=typeof t=="string"?t:t?.Name||"Linear",this}SetRelative(t){return this.relative=!!t,this}Play(){return this.dead?this:this.playing?(this.paused=!1,this):this._start(!1)}_begin(t){this.playing=!0,this.paused=!1,this.elapsed=0,this.loopIndex=0,this.killed=!1,this.completed=!1,t&&this.initialFrom?this.restoreInitial():(this.capture(),this.initialFrom={...this.from},this.initialTo={...this.to})}_start(t){return this._begin(t),this.runtime.tweens.add(this),this.runtime.animations.add(this),this}get loopCount(){return this.loops>0?this.loops:1}Pause(){this.paused=!0}Resume(){this.paused=!1}Restart(){return this.dead?this:this._start(!0)}Complete(){this.dead||this.completed||(this.initialFrom||this._begin(!1),this.apply(1),this.finish(!0))}Kill(t){t?this.Complete():this.finish(!1),this.dead=!0}SetOnComplete(t){return this.onComplete=t,this}SetOnStepComplete(t){return this.onStepComplete=t,this}SetLoops(t){return this.loops=t,this}apply(t){if(this.object?.alive===!1)return;let i=xa(this.easeName,t),n=!1,r=!1;for(let a of Object.keys(this.to)){let o=this.from[a],l=this.to[a];if(jl.has(a)&&typeof o=="number"&&typeof l=="number")this.object[a]=ka(o,l,i);else if(typeof o=="number"&&typeof l=="number"){let u=o+(l-o)*i;this.object[a]=Hl.has(a)?Math.trunc(u):u}else this.object[a]=i>=1?l:o;n=!0,ki.has(a)&&(r=!0)}n&&typeof this.object?.markPlayDirty=="function"&&this.object.markPlayDirty(r)}_advance(t,i){this.elapsed+=t;let n=this.duration<=0?1:Math.min(1,this.elapsed/this.duration);return this.apply(n),n<1?!1:i>=0&&this.loopIndex+1>=i?!0:(this.onStepComplete&&this.runtime.safeCall(this.onStepComplete),this.loopIndex++,this.elapsed=0,this.restoreInitial(),!1)}step(t){!this.playing||this.paused||this.killed||this._advance(t,this.loops<0?-1:this.loopCount)&&(this.onStepComplete&&this.runtime.safeCall(this.onStepComplete),this.finish(!0))}finish(t){this.playing=!1,this.killed=!0,t&&(this.completed=!0),this.runtime.tweens.delete(this),this.runtime.animations.delete(this),t&&this.onComplete&&this.runtime.safeCall(this.onComplete)}},Mt=class{constructor(t){this.runtime=t,this.steps=[],this.playing=!1,this.paused=!1,this.killed=!1,this.dead=!1,this.completed=!1,this.elapsed=0,this.loops=1,this.loopIndex=0,this.onComplete=null,this.onStepComplete=null,this._entries=null}Append(t){return this.steps.push({kind:"tween",tween:t,parallel:!1}),this}AppendInterval(t){return this.steps.push({kind:"interval",duration:t}),this}AppendCallback(t){return this.steps.push({kind:"callback",fn:t}),this}Join(t){return this.steps.push({kind:"tween",tween:t,parallel:!0}),this}Insert(t,i){return this.steps.push({kind:"insert",time:t,tween:i}),this}InsertCallback(t,i){return this.steps.push({kind:"insertCb",time:t,fn:i}),this}Play(){return this.dead?this:this.playing?(this.paused=!1,this):this._play()}_play(){return this.playing=!0,this.paused=!1,this.killed=!1,this.completed=!1,this.elapsed=0,this.loopIndex=0,this._schedule(),this.runtime.sequences.add(this),this.runtime.animations.add(this),this}_schedule(){let t=0,i=0,n=!1,r=[],a=o=>o.duration*o.loopCount;for(let o of this.steps)if(o.kind==="tween"&&o.parallel){let l=n?i:t;r.push({at:l,tween:o.tween}),t=Math.max(t,l+a(o.tween))}else o.kind==="tween"?(r.push({at:t,tween:o.tween}),i=t,n=!0,t+=a(o.tween)):o.kind==="interval"?(i=t,n=!0,t+=o.duration):o.kind==="callback"?r.push({at:t,fn:o.fn}):o.kind==="insert"?(r.push({at:o.time,tween:o.tween}),t=Math.max(t,o.time+a(o.tween))):o.kind==="insertCb"&&(r.push({at:o.time,fn:o.fn}),t=Math.max(t,o.time));this._entries=r.map((o,l)=>({...o,index:l,end:o.tween?o.at+a(o.tween):o.at})),this._end=t,this._resetEntries()}_resetEntries(){for(let t of this._entries)t.started=!1,t.done=!1}_startChild(t){t.started=!0,t.tween._begin(!!t.tween.initialFrom)}_finishChild(t){t.done=!0,t.tween.apply(1),t.tween.onStepComplete&&this.runtime.safeCall(t.tween.onStepComplete),t.tween.finish(!0)}_advanceTo(t,i){let n=this._entries,r=[];for(let o of n)!o.started&&o.at<=t+An&&r.push({at:o.at,rank:o.fn?1:2,entry:o}),o.tween&&!o.done&&o.end<=t+An&&r.push({at:o.end,rank:0,entry:o});r.sort((o,l)=>o.at-l.at||o.rank-l.rank||o.entry.index-l.entry.index);let a=new Set;for(let{rank:o,entry:l}of r)if(o===1){if(l.started=!0,this.runtime.safeCall(l.fn),!this.playing||this.killed||this._entries!==n)return!1}else l.started||(this._startChild(l),a.add(l)),o===0&&!l.done&&this._finishChild(l);for(let o of n)!o.tween||!o.started||o.done||(a.has(o)?o.tween._advance(t-o.at,o.tween.loopCount):o.tween._advance(i,o.tween.loopCount));return!0}step(t){!this.playing||this.paused||this.killed||(this.elapsed+=t,this._advanceTo(this.elapsed,t)&&(this.elapsed+An<this._end||(this.onStepComplete&&this.runtime.safeCall(this.onStepComplete),this.loopIndex++,this.loops<0||this.loopIndex<this.loops?(this.elapsed=0,this._resetEntries()):this.finish(!0))))}Pause(){this.paused=!0}Resume(){this.paused=!1}Restart(){this.dead||this._play()}Complete(){this.dead||this.completed||(this._entries||this._schedule(),this.playing=!0,this.killed=!1,this._advanceTo(1/0,0)&&(this.onStepComplete&&this.runtime.safeCall(this.onStepComplete),this.finish(!0)))}Kill(t){t?this.Complete():this.finish(!1),this.dead=!0}SetOnComplete(t){return this.onComplete=t,this}SetOnStepComplete(t){return this.onStepComplete=t,this}SetLoops(t){return this.loops=t,this}finish(t){this.playing=!1,this.killed=!0,t&&(this.completed=!0),this.runtime.sequences.delete(this),this.runtime.animations.delete(this),t&&this.onComplete&&this.runtime.safeCall(this.onComplete)}};var _i={EaseType:["Linear","InSine","OutSine","InOutSine","InQuad","OutQuad","InOutQuad","InCubic","OutCubic","InOutCubic","InQuart","OutQuart","InOutQuart","InQuint","OutQuint","InOutQuint","InExpo","OutExpo","InOutExpo","InCirc","OutCirc","InOutCirc","InBack","OutBack","InOutBack","InElastic","OutElastic","InOutElastic","InBounce","OutBounce","InOutBounce"],CustomVariableEntityType:["Level","PlayerSelf","AvatarSelf"],Device:["KeyboardAndMouse","Mobile","Controller","MobileController"],StageMode:["Beyond","Classic"],LanguageType:["LanguageNone","LanguageEng","LanguageChs","LanguageCht","LanguageFra","LanguageDeu","LanguageSpa","LanguagePor","LanguageRus","LanguageJpn","LanguageKor","LanguageTha","LanguageVie","LanguageInd","LanguageTur","LanguageIta"],ParamType:["Entity","EntityList","Int","IntList","Bool","BoolList","Float","FloatList","String","StringList","Vector3","Vector3List","Guid","GuidList","ConfigId","PrefabId","ConfigIdList","PrefabIdList"],CursorEventType:["CursorDown","CursorUp","CursorEnter","CursorExit","CursorDrag","CursorBeginDrag","CursorEndDrag","CursorClick"],ScrollDirection:["Horizontal","Vertical"],ScrollLayoutConstraint:["AutoWrap","Fixed"],ScrollAlignType:["Bottom","Center","Top"],ControllerNavigationDir:["Up","Down","Left","Right"],ControllerNavigationEventType:["Confirm","Cancel","Focus","LostFocus","RightStickUp","RightStickDown","RightStickRight","RightStickLeft","LeftStickUp","LeftStickDown","LeftStickRight","LeftStickLeft"],ControllerNavigationMode:["None","NearestControl","Specified"],TextHorizontalAlignment:["Left","Middle","Right"],TextVerticalAlignment:["Top","Middle","Bottom"],ImageType:["Basic","Stretch"],ImageSource:["StaticReference","Item","Equipment","Skill","UnitStatus","Faction","Currency","Prefab"],ImageFillType:["Unused","Horizontal","Vertical","Radial90","Radial180","Radial360"],ImageFillHorizontalType:["Left","Right"],ImageFillVerticalType:["Bottom","Top"],ImageFillRadial90Type:["BottomLeft","TopLeft","TopRight","BottomRight"],ImageFillRadialType:["Bottom","Left","Top","Right"],ImageMaskSoftEdgeMode:["Percentage","Pixel"],UIAnimationLayer:["AboveAllControls","BelowAllControls"]},ql=[...Array.from({length:43},(e,t)=>`CraftspersonKey${t+1}`),"MoveForwardKey","MoveBackwardKey","MoveLeftKey","MoveRightKey","SwitchToWalkOrRunKey","SprintKey","JumpKey","DropKey","OpenShortcutWheelKey","InteractKey","NormalAttackKey","CharacterSkill1Key","CharacterSkill2Key","CharacterSkill3Key","CharacterSkill4Key","None"],Ll=[...Array.from({length:14},(e,t)=>`CraftspersonKey${t+1}`),"SprintKey","JumpKey","InteractKey","NormalAttackKey","CharacterSkill1Key","CharacterSkill2Key","CharacterSkill3Key","CharacterSkill4Key","MenuConfirmKey","MenuBackKey","None"];function Wl(){let e=[];for(let t of["Down","Up"]){for(let i=1;i<=43;i++)e.push(`KeyboardCraftspersonKey${i}${t}`);for(let i of["MoveForwardKey","MoveBackwardKey","MoveLeftKey","MoveRightKey","SwitchToWalkOrRunKey","SprintKey","JumpKey","DropKey","OpenShortcutWheelKey","InteractKey","NormalAttackKey","CharacterSkill1Key","CharacterSkill2Key","CharacterSkill3Key","CharacterSkill4Key"])e.push(`Keyboard${i}${t}`);for(let i=1;i<=14;i++)e.push(`ControllerCraftspersonKey${i}${t}`);for(let i of["SprintKey","JumpKey","InteractKey","NormalAttackKey","CharacterSkill1Key","CharacterSkill2Key","CharacterSkill3Key","CharacterSkill4Key","MenuConfirmKey","MenuBackKey"])e.push(`Controller${i}${t}`)}return e}_i.KeyboardKeyCode=ql;_i.ControllerKeyCode=Ll;_i.KeyEventType=Wl();var Ea=new Map;function ct(e,t){let i=`${e}\0${t}`,n=Ea.get(i);return n||(n={__kind:"EnumItem",Name:t,FullName:`Enum.${e}.${t}`,EnumType:e},Ea.set(i,n)),n}function _n(e,t){return t==null?t:t.__kind==="EnumItem"?ct(t.EnumType||e,t.Name):typeof t=="string"&&t?ct(e,t):t}function Tn(){let e={};for(let[t,i]of Object.entries(_i)){let n={};for(let r of i)n[r]=ct(t,r);e[t]=n}return e}var Jl=new Set(["Id","prefabIndex","imageId","fontSize","minimumFontSize","clickAudioId","itemCount","itemPrefabIndex","animationId","referencedPrefabIndex"]),Zl=new Set(["imageColor","fontColor","bgColor","outlineColor"]),Aa={horizontalAlignment:"TextHorizontalAlignment",verticalAlignment:"TextVerticalAlignment",imageSource:"ImageSource",imageType:"ImageType",fillType:"ImageFillType",fillHorizontalType:"ImageFillHorizontalType",fillVerticalType:"ImageFillVerticalType",fillRadial90Type:"ImageFillRadial90Type",fillRadialType:"ImageFillRadialType",softEdgeMode:"ImageMaskSoftEdgeMode",layer:"UIAnimationLayer",scrollDirection:"ScrollDirection",layoutConstraint:"ScrollLayoutConstraint"},ft=c.LUA_REGISTRYINDEX,_a=c.LUA_MULTRET,Ql=Object.freeze({InstantiateClientUIControl:2,DestroyClientUIControl:1,GetClientUIControl:1,FindClientUIRoot:1,GetClientUIRoots:0,GetUICanvasSize:0,GetCursorUIPos:0,GetDevice:0,SetControllerFocus:1,GetControllerFocus:0,GetControllerLeftStickAxis:0,GetControllerRightStickAxis:0,Tween:3,TweenSequence:0,ServerSignal:1,GetGlobalCustomVariableValue:2,PauseLevelTime:1,IsLevelTimePaused:0,PlayAudio2D:1,StopAudio:1,IsAudioAlive:1,GetLanguageType:0,GetStageMode:0,IsTestPlay:0,GetText:1,PrintClientUITree:0});function ye(e){return e==null?"":typeof e=="string"?e:e.Name||e.FullName||String(e)}var Ti=class{constructor(t={}){this.canvasWidth=t.canvasWidth??1600,this.canvasHeight=t.canvasHeight??900,this.device=t.device??"KeyboardAndMouse",this.language=t.language??"LanguageChs",this.stageMode=t.stageMode??"Classic",this.testPlay=t.testPlay!==!1,this.canSelectImageType=t.canSelectImageType||(()=>!1),this.clock={time:0,levelTime:0,paused:!1,frame:0},this.logs=[],this.mountErrors=[],this.tweens=new Set,this.sequences=new Set,this.animations=new Set,this.audios=new Map,this.nextAudioId=1,this.audioDuration=t.audioDuration||(()=>null),this.audioHistory=[],this.audioWarnings=new Set,this.audioRevision=0,this._nextControlId=1,this._playRemoved=[],this._nextScriptMappingId=1,this.lifecyclePhase="idle",this.controlsById=new Map,this.roots=[],this.templates=new Map,this.scriptFiles=new Map,this.requireAliases=new Map,this.requireCache=new Map,this.moduleBaseEnvironments=new Map,this.luaFunctions=new Map,this.mountedScripts=[],this.serverVars={Level:Object.create(null),PlayerSelf:Object.create(null),AvatarSelf:Object.create(null)},this.serverBridge=null,this.varHandlers=[],this.signalHandlers=[],this.cursor={x:0,y:0},this.focus=null,this.stick={left:[0,0],right:[0,0]},this.enumTree=Tn(),this.luaStates=new Set,this.L=null}nextControlId(){let t=this._nextControlId;return this._nextControlId+=1,t}resolveScriptMappingId(t){let i=Number(t);if(Number.isSafeInteger(i)&&i>0)return this._nextScriptMappingId=Math.max(this._nextScriptMappingId,i+1),i;let n=this._nextScriptMappingId;return this._nextScriptMappingId+=1,n}pushPackedColor(t,i){let n=i>>>0;(n|0)===n?c.lua_pushinteger(t,n):c.lua_pushnumber(t,n)}retainLuaCallback(t){ha(t)}unrefLuaCallback(t){ma(this,t)}log(t,...i){let n=i.map(r=>r==null?"nil":typeof r=="object"&&r!==null&&r.__kind==="EnumItem"?r.Name:String(r)).join(" ");this.logs.push({level:t,text:n,time:this.clock.time})}safeCall(t,...i){try{return t(...i)}catch(n){this.log("lua-error",n&&n.message?n.message:String(n))}}scriptCanRun(t){if(!t?.alive||!t.enabled)return!1;let i=t.object;return!i||i.alive&&i.activeInHierarchy}cursorEventsEnabled(t){for(let i=t;i;i=i.parent)if(i.kind==="container"&&i.showCursor===!0)return!0;return!1}registerTemplate(t,i){this.templates.set(Number(t),i)}registerScriptFile(t,i){let n=this.normalizeRequirePath(t);this.scriptFiles.set(n,i),n.startsWith("default_import_file/")||this.requireAliases.set(`default_import_file/${n}`,n)}normalizeRequirePath(t){let i=String(t).replace(/\\/g,"/");return i.endsWith(".lua")&&(i=i.slice(0,-4)),i}addRoot(t){let i=t instanceof et?t:new et(this,t);return this.roots.push(i),ze(i,n=>this.controlsById.set(n.Id,n)),this.mountSpecScripts(t,i),i}mountSpecScripts(t,i){if(t instanceof et)return;let n=a=>(a.scripts?.length||0)>0||(a.children||[]).some(n);if(!t||!n(t))return;let r=this.lifecyclePhase;try{let a=(o,l)=>{for(let s of o.scripts||[])try{this.mountScript({path:s.path,source:s.source,control:l,scriptMappingId:s.scriptMappingId})}catch(f){let d=f&&f.message?f.message:String(f);this.mountErrors.push(d),this.log("lua-error",d)}let u=o.children||[];for(let s=0;s<u.length;s+=1)a(u[s],l?.children?.[s])};a(t,i)}finally{this.lifecyclePhase=r}}makeCursorEventData({x:t=0,y:i=0,pressX:n=t,pressY:r=i,deltaX:a=t-n,deltaY:o=i-r,dragging:l=!1,touchId:u=-1}={}){let s=this;return{__kind:"CursorEventData",typeofName:"CursorEventData",dragging:l,touchId:u,x:t,y:i,pressX:n,pressY:r,GetUIPos(){return[t,i]},GetPressUIPos(){return[n,r]},GetUIPosDelta(){return[a,o]}}}boot(){let t=this.newLuaThread();this.L=t}installGlobals(t){let i=this;c.lua_pushcfunction(t,n=>{let r=c.lua_gettop(n),a=[];for(let o=1;o<=r;o++)a.push(de(n,i,o));return i.log("info",...a),0}),c.lua_setglobal(t,R("print")),c.lua_pushcfunction(t,n=>{let r=c.lua_gettop(n),a=[];for(let o=1;o<=r;o++)a.push(de(n,i,o));return i.log("error",...a),0}),c.lua_setglobal(t,R("printerr")),c.lua_pushcfunction(t,n=>{if(c.lua_type(n,1)===c.LUA_TTABLE&&!Be(n,1))return c.lua_pushstring(n,R("table")),1;let r=de(n,i,1);return c.lua_pushstring(n,R(i.typeofOf(r))),1}),c.lua_setglobal(t,R("typeof")),this.pushColorLib(t),this.pushEnumLib(t),this.pushGameLib(t),c.lua_pushcfunction(t,n=>i.luaRequire(n)),c.lua_setglobal(t,R("require"))}typeofOf(t){return t==null?"nil":t.__kind==="Script"?"Script":t.__kind==="EnumItem"?"EnumItem":t.__kind==="CursorEventData"?"CursorEventData":t.__kind==="ServerSignal"?"ServerSignal":t instanceof Mt?"TweenSequence":t instanceof Qt?"Tween":t.typeofName?t.typeofName:typeof t=="number"?"number":typeof t=="string"?"string":typeof t=="boolean"?"boolean":typeof t}pushColorLib(t){c.lua_newtable(t),c.lua_pushcfunction(t,i=>(this.pushPackedColor(i,Rt(c.lua_tonumber(i,1),c.lua_tonumber(i,2),c.lua_tonumber(i,3),255)),1)),c.lua_setfield(t,-2,R("FromRGB")),c.lua_pushcfunction(t,i=>{let n=c.lua_isnoneornil(i,4)?255:c.lua_tonumber(i,4);return this.pushPackedColor(i,Rt(c.lua_tonumber(i,1),c.lua_tonumber(i,2),c.lua_tonumber(i,3),n)),1}),c.lua_setfield(t,-2,R("FromRGBA")),c.lua_pushcfunction(t,i=>{let n=c.lua_tonumber(i,1)>>>0;for(let r of Zt(n))c.lua_pushinteger(i,r);return 4}),c.lua_setfield(t,-2,R("ToRGBA")),c.lua_newtable(t),c.lua_pushcfunction(t,i=>{let n=c.lua_tonumber(i,2),r=c.lua_tonumber(i,3),a=c.lua_tonumber(i,4),o=c.lua_isnoneornil(i,5)?255:c.lua_tonumber(i,5);return this.pushPackedColor(i,Rt(n,r,a,o)),1}),c.lua_setfield(t,-2,R("__call")),c.lua_setmetatable(t,-2),c.lua_setglobal(t,R("Color"))}pushEnumLib(t){c.lua_newtable(t);for(let[i,n]of Object.entries(this.enumTree)){c.lua_newtable(t);for(let[r,a]of Object.entries(n))this.pushEnumItem(t,a),c.lua_setfield(t,-2,R(r));c.lua_setfield(t,-2,R(i))}c.lua_setglobal(t,R("Enum"))}pushEnumItem(t,i){let n=c.lua_newuserdata(t,0);ut(n,i),J.luaL_setmetatable(t,R("EnumItem"))}pushControl(t,i){let n=c.lua_newuserdata(t,0);ut(n,i),J.luaL_setmetatable(t,R("Control"))}pushScript(t,i){c.lua_newtable(t),c.lua_pushlightuserdata(t,Cn);let n=c.lua_newuserdata(t,0);ut(n,i),c.lua_rawset(t,-3),J.luaL_getmetatable(t,R("Script")),c.lua_setmetatable(t,-2)}pushTween(t,i){let n=c.lua_newuserdata(t,0);ut(n,i);let r=i instanceof Mt?"TweenSequence":"Tween";J.luaL_setmetatable(t,R(r))}pushSignal(t,i){let n=c.lua_newuserdata(t,0);ut(n,i),J.luaL_setmetatable(t,R("ServerSignal"))}pushCursor(t,i){let n=c.lua_newuserdata(t,0);ut(n,i),J.luaL_setmetatable(t,R("CursorEventData"))}pushGameLib(t){let i=this;c.lua_newtable(t);let n={InstantiateClientUIControl:r=>{let a=c.lua_tointeger(r,1),o=we(c.lua_touserdata(r,2)),l=i.instantiate(a,o,i.lifecyclePhase);return l?(i.pushControl(r,l),1):(c.lua_pushnil(r),1)},DestroyClientUIControl:r=>{let a=we(c.lua_touserdata(r,1));return a&&i.destroyControl(a),0},GetClientUIControl:r=>{let a=c.lua_tointeger(r,1),o=i.controlsById.get(a);return o?i.pushControl(r,o):c.lua_pushnil(r),1},FindClientUIRoot:r=>{let a=q(r,1),o=i.roots.find(l=>l.name===a);return o?i.pushControl(r,o):c.lua_pushnil(r),1},GetClientUIRoots:r=>(c.lua_createtable(r,i.roots.length,0),i.roots.forEach((a,o)=>{i.pushControl(r,a),c.lua_rawseti(r,-2,o+1)}),1),GetUICanvasSize:r=>(c.lua_pushnumber(r,i.canvasWidth),c.lua_pushnumber(r,i.canvasHeight),2),GetCursorUIPos:r=>(c.lua_pushnumber(r,i.cursor.x),c.lua_pushnumber(r,i.cursor.y),2),GetDevice:r=>(i.pushEnumItem(r,ct("Device",i.device)),1),SetControllerFocus:r=>(i.focus=we(c.lua_touserdata(r,1)),0),GetControllerFocus:r=>(i.focus?i.pushControl(r,i.focus):c.lua_pushnil(r),1),GetControllerLeftStickAxis:r=>(c.lua_pushnumber(r,i.stick.left[0]),c.lua_pushnumber(r,i.stick.left[1]),2),GetControllerRightStickAxis:r=>(c.lua_pushnumber(r,i.stick.right[0]),c.lua_pushnumber(r,i.stick.right[1]),2),Tween:r=>{let a=we(c.lua_touserdata(r,1))||de(r,i,1),o=de(r,i,2)||{},l=c.lua_tonumber(r,3),u=new Qt(i,a,o,l);return i.pushTween(r,u),1},TweenSequence:r=>(i.pushTween(r,new Mt(i)),1),ServerSignal:r=>{let a=q(r,1);return i.pushSignal(r,i.makeServerSignal(a)),1},GetGlobalCustomVariableValue:r=>{let a=ye(de(r,i,1)),o=q(r,2);return oe(r,i,i.getVar(a,o)),1},PauseLevelTime:r=>(i.clock.paused=!!c.lua_toboolean(r,1),0),IsLevelTimePaused:r=>(c.lua_pushboolean(r,i.clock.paused),1),PlayAudio2D:r=>{let a=i.playAudio(i.audioInteger(r));return c.lua_pushinteger(r,a),1},StopAudio:r=>(i.stopAudio(i.audioInteger(r)),0),IsAudioAlive:r=>{let a=i.audios.get(i.audioInteger(r));return c.lua_pushboolean(r,!!(a&&a.alive)),1},GetLanguageType:r=>(i.pushEnumItem(r,ct("LanguageType",i.language)),1),GetStageMode:r=>(i.pushEnumItem(r,ct("StageMode",i.stageMode)),1),IsTestPlay:r=>(c.lua_pushboolean(r,i.testPlay),1),GetText:r=>{let a=q(r,1);return c.lua_pushstring(r,R(a)),1},PrintClientUITree:r=>{for(let a of i.roots)i.log("info",En(a).join(`
108
- `));return 0}};for(let[r,a]of Object.entries(n)){let o=Ql[r];if(o===void 0)throw new Error(`missing game arity for ${r}`);c.lua_pushcfunction(t,l=>{let u=c.lua_gettop(l);return u!==o?J.luaL_error(l,R(`bad argument count to '${r}' (${o} expected, got ${u})`)):a(l)}),c.lua_setfield(t,-2,R(r))}c.lua_setglobal(t,R("game"))}makeServerSignal(t){let i=[],n=this;return{__kind:"ServerSignal",name:t,AddParam(r,a){i.push({type:ye(r),value:a})},AddInt(r){i.push({type:"Int",value:r})},AddIntList(r){i.push({type:"IntList",value:r})},AddFloat(r){i.push({type:"Float",value:r})},AddFloatList(r){i.push({type:"FloatList",value:r})},AddString(r){i.push({type:"String",value:r})},AddStringList(r){i.push({type:"StringList",value:r})},AddVector3(r){i.push({type:"Vector3",value:r})},AddVector3List(r){i.push({type:"Vector3List",value:r})},AddBool(r){i.push({type:"Bool",value:r})},AddBoolList(r){i.push({type:"BoolList",value:r})},AddGuid(r){i.push({type:"Guid",value:r})},AddGuidList(r){i.push({type:"GuidList",value:r})},AddEntity(r){i.push({type:"Entity",value:r})},AddEntityList(r){i.push({type:"EntityList",value:r})},AddPrefabId(r){i.push({type:"PrefabId",value:r})},AddPrefabIdList(r){i.push({type:"PrefabIdList",value:r})},AddConfigId(r){i.push({type:"ConfigId",value:r})},AddConfigIdList(r){i.push({type:"ConfigIdList",value:r})},SendSignal(){let r=i.slice();n.serverBridge&&typeof n.serverBridge.receiveFromClient=="function"&&n.serverBridge.receiveFromClient(t,r)}}}audioInteger(t){let i=c.lua_tonumber(t,1);return c.lua_type(t,1)!==c.LUA_TNUMBER||!Number.isSafeInteger(i)?J.luaL_error(t,R("audio argument must be an integer")):i}playAudio(t){this.audioRevision++;let i=this.nextAudioId++,n=this.audioDuration(t),r=Number.isFinite(n)&&n>0,a={instanceId:i,audioId:t,startedAt:this.clock.time,duration:r?n:0,alive:r,stopped:!1};return this.audioHistory.push(a),this.audioHistory.length>128&&this.audioHistory.shift(),r?(this.audios.size>=128&&this.stopAudio(this.audios.keys().next().value),this.audios.set(i,a)):this.audioWarnings.has(t)||(this.audioWarnings.size>=128&&this.audioWarnings.delete(this.audioWarnings.values().next().value),this.audioWarnings.add(t),this.log("warn",`\u97F3\u6548 ${t} \u672A\u5217\u5165\u6A21\u62DF\u5668\u97F3\u9891\u767D\u540D\u5355`)),i}stopAudio(t){let i=this.audios.get(t)||this.audioHistory.find(n=>n.instanceId===t);i&&!i.stopped&&(i.alive=!1,i.stopped=!0,this.audioRevision++),this.audios.delete(t)}audioSnapshot(){return{sequence:this.nextAudioId-1,revision:this.audioRevision,active:[...this.audios.values()].map(t=>({...t})),recent:this.audioHistory.map(t=>({...t}))}}instantiate(t,i,n){if(n==="OnInit"||n==="OnDestroy")return null;let r=this.templates.get(Number(t));if(!r||!i)return null;let a=new et(this,{...r,Id:this.nextControlId(),authoringId:null,prefabIndex:Number(t)});return i.addChild(a),a.SetAsLastSibling(),ze(a,o=>this.controlsById.set(o.Id,o)),this.mountSpecScripts(r,a),a}destroyControl(t){if(!(!t||!t.alive)){if(t._destroying)throw new Error(`\u5BA2\u6237\u7AEF\u63A7\u4EF6\u751F\u547D\u5468\u671F\u5904\u4E8E\u521B\u5EFA\u6216\u9500\u6BC1\u65F6\uFF0C\u65E0\u6CD5\u8C03\u7528DestroyClientUIControl, ID:${t.name}`);ze(t,i=>{i._destroying=!0}),this._destroyControlTree(t)}}_destroyControlTree(t){this.releaseControlListeners(t);for(let i of t.scripts.slice())this.unmountScript(i);for(let i of t.children.slice())this._destroyControlTree(i);if(t.alive=!1,this.scrollControls?.delete(t),this._playRemoved.push(t.Id),t.parent){let i=t.parent,n=i.children.indexOf(t);n>=0&&i.children.splice(n,1),t._parent=null,i.markPlayDirty(!0)}else{let i=this.roots.indexOf(t);i>=0&&this.roots.splice(i,1)}this.controlsById.delete(t.Id),this.focus===t&&(this.focus=null);for(let i of[...this.tweens])i.object===t&&i.Kill(!1)}releaseControlListeners(t){for(let i of t.cursorListeners.values())for(let n of i)this.unrefLuaCallback(n);for(let i of t.keyListeners.values())for(let n of i)this.unrefLuaCallback(n);for(let i of t.navListeners.values())for(let n of i)this.unrefLuaCallback(n);t.cursorListeners.clear(),t.keyListeners.clear(),t.navListeners.clear(),t.navConfig.clear()}onControlActiveChanging(t,i){let n=[];ze(t,r=>n.push({control:r,was:r.activeInHierarchy})),t.active=!!i,t.markPlayDirty(!0);for(let r of n){let a=r.control.activeInHierarchy;if(r.was!==a)for(let o of r.control.scripts.slice())a?this.enableScript(o):this.disableScript(o)}}bindScriptEnv(t){let i=t.env;return i?(this.pushScript(i,t),c.lua_setglobal(i,R("script")),i):null}disableScript(t){if(!t?.alive||!t.env||t.lifecyclePhase!=="running")return;let i=this.lifecyclePhase;this.lifecyclePhase="OnDisable",t.lifecyclePhase="OnDisable",this.bindScriptEnv(t),this.callGlobal(t.env,"OnDisable"),t.lifecyclePhase="disabled",this.lifecyclePhase=i}enableScript(t){if(!t?.alive||!t.env||t.lifecyclePhase!=="disabled")return;let i=this.lifecyclePhase;this.lifecyclePhase="OnEnable",t.lifecyclePhase="OnEnable",this.bindScriptEnv(t),this.callGlobal(t.env,"OnEnable"),t.lifecyclePhase="running",this.lifecyclePhase=i}unmountScript(t){if(!t||!t.alive)return;let i=t.env,n=this.lifecyclePhase;i&&(t.lifecyclePhase==="running"&&(this.lifecyclePhase="OnDisable",t.lifecyclePhase="OnDisable",this.bindScriptEnv(t),this.callGlobal(i,"OnDisable")),this.lifecyclePhase="OnDestroy",t.lifecyclePhase="OnDestroy",this.bindScriptEnv(t),this.callGlobal(i,"OnDestroy")),t.alive=!1,t.lifecyclePhase="destroyed",this.lifecyclePhase=n,this.mountedScripts=this.mountedScripts.filter(r=>r!==t),t.object&&(t.object.scripts=t.object.scripts.filter(r=>r!==t)),this.varHandlers=this.varHandlers.filter(r=>r.script!==t),this.signalHandlers=this.signalHandlers.filter(r=>r.script!==t),i&&i!==this.L&&this.closeTrackedLuaState(i),t.env=null}installMetatables(t){this.mtEnum(t),this.mtControl(t),this.mtScript(t),this.mtTween(t),this.mtSeq(t),this.mtSignal(t),this.mtCursor(t)}mtIndexNewindex(t,i,n,r,a,o){J.luaL_newmetatable(t,R(i)),c.lua_pushcfunction(t,l=>{let u=Be(l,1)||we(c.lua_touserdata(l,1)),s=q(l,2);if(a[s]&&(!o||o(u,s)))return c.lua_pushcfunction(l,a[s]),1;let f;try{f=n(u,s)}catch(d){return J.luaL_error(l,R(String(d.message||d)))}return f===void 0?(c.lua_pushnil(l),1):(oe(l,this,f),1)}),c.lua_setfield(t,-2,R("__index")),c.lua_pushcfunction(t,l=>{try{let u=Be(l,1)||we(c.lua_touserdata(l,1)),s=q(l,2),f=de(l,this,3);return r(u,s,f),0}catch(u){return c.lua_pushstring(l,R(String(u.message||u))),c.lua_error(l)}}),c.lua_setfield(t,-2,R("__newindex")),c.lua_pushcfunction(t,l=>{let u=Be(l,1)||we(c.lua_touserdata(l,1)),s=Be(l,2)||we(c.lua_touserdata(l,2));return c.lua_pushboolean(l,u===s),1}),c.lua_setfield(t,-2,R("__eq")),c.lua_pop(t,1)}method(t){let i=this;return n=>{let r=Be(n,1)||we(c.lua_touserdata(n,1)),a=c.lua_gettop(n),o=[];for(let l=2;l<=a;l++)o.push(de(n,i,l));try{let l=t(r,...o);if(l===r)return c.lua_pushvalue(n,1),1;if(l===void 0)return 0;if(Array.isArray(l)&&l.__multi){for(let u of l)oe(n,i,u);return l.length}if(Array.isArray(l)&&!(l.length&&typeof l[0]=="object"&&l[0]?.typeofName)){if(l.__controls)return c.lua_createtable(n,l.length,0),l.forEach((u,s)=>{i.pushControl(n,u),c.lua_rawseti(n,-2,s+1)}),1;if(l.__scripts)return c.lua_createtable(n,l.length,0),l.forEach((u,s)=>{i.pushScript(n,u),c.lua_rawseti(n,-2,s+1)}),1;if(typeof l[0]=="number"&&l.length<=4){for(let u of l)c.lua_pushnumber(n,u);return l.length}}return oe(n,i,l),1}catch(l){return c.lua_pushstring(n,R(String(l.message||l))),c.lua_error(n)}}}mtEnum(t){let i=new Set(["Name","FullName","EnumType"]);this.mtIndexNewindex(t,"EnumItem",(n,r)=>i.has(r)?n[r]:void 0,(n,r)=>{throw new Error(`cannot set ${r}, no such field`)},{})}mtCursor(t){let i=new Set(["dragging","touchId"]);this.mtIndexNewindex(t,"CursorEventData",(n,r)=>i.has(r)?n[r]:void 0,(n,r)=>{throw new Error(`cannot set ${r}, no such field`)},{GetUIPos:this.method(n=>n.GetUIPos()),GetPressUIPos:this.method(n=>n.GetPressUIPos()),GetUIPosDelta:this.method(n=>n.GetUIPosDelta())})}mtControl(t){let i={GetChildren:this.method(n=>{let r=n.GetChildren();return r.__controls=!0,r}),GetChild:this.method((n,r)=>n.GetChild(r)),FindChild:this.method((n,r)=>n.FindChild(r)),SetActive:this.method((n,r)=>n.SetActive(r)),SetVisible:this.method((n,r)=>n.SetVisible(r)),GetSiblingIndex:this.method(n=>n.GetSiblingIndex()),SetSiblingIndex:this.method((n,r)=>n.SetSiblingIndex(r)),SetAsFirstSibling:this.method(n=>n.SetAsFirstSibling()),SetAsLastSibling:this.method(n=>n.SetAsLastSibling()),GetAnchoredPosition:this.method(n=>n.GetAnchoredPosition()),SetAnchoredPosition:this.method((n,r,a)=>n.SetAnchoredPosition(r,a)),GetSizeDelta:this.method(n=>n.GetSizeDelta()),SetSizeDelta:this.method((n,r,a)=>n.SetSizeDelta(r,a)),GetAnchorMin:this.method(n=>n.GetAnchorMin()),SetAnchorMin:this.method((n,r,a)=>n.SetAnchorMin(r,a)),GetAnchorMax:this.method(n=>n.GetAnchorMax()),SetAnchorMax:this.method((n,r,a)=>n.SetAnchorMax(r,a)),GetPivot:this.method(n=>n.GetPivot()),SetPivot:this.method((n,r,a)=>n.SetPivot(r,a)),GetLocalScale:this.method(n=>n.GetLocalScale()),SetLocalScale:this.method((n,r,a,o)=>n.SetLocalScale(r,a,o)),GetLocalRotation:this.method(n=>n.GetLocalRotation()),SetLocalRotation:this.method((n,r,a,o)=>n.SetLocalRotation(r,a,o)),GetScriptByPath:this.method((n,r)=>n.GetScriptByPath(r)),GetScript:this.method((n,r)=>n.GetScript(r)),GetScripts:this.method(n=>{let r=n.GetScripts();return r.__scripts=!0,r}),AddCursorEventListener:this.method((n,r,a)=>n.AddCursorEventListener(ye(r),a)),RemoveCursorEventListener:this.method((n,r,a)=>n.RemoveCursorEventListener(ye(r),a)),RemoveCursorEventListeners:this.method((n,r)=>n.RemoveCursorEventListeners(ye(r))),RemoveAllCursorEventListeners:this.method(n=>n.RemoveAllCursorEventListeners()),SimulateCursorClick:this.method(n=>n.SimulateCursorClick()),AddKeyEventListener:this.method((n,r,a)=>n.AddKeyEventListener(ye(r),a)),RemoveKeyEventListener:this.method((n,r,a)=>n.RemoveKeyEventListener(ye(r),a)),RemoveKeyEventListeners:this.method((n,r)=>n.RemoveKeyEventListeners(ye(r))),RemoveAllKeyEventListeners:this.method(n=>n.RemoveAllKeyEventListeners()),AddNavigationEventListener:this.method((n,r,a)=>n.AddNavigationEventListener(ye(r),a)),RemoveNavigationEventListener:this.method((n,r,a)=>n.RemoveNavigationEventListener(ye(r),a)),RemoveNavigationEventListeners:this.method((n,r)=>n.RemoveNavigationEventListeners(ye(r))),RemoveAllNavigationEventListeners:this.method(n=>n.RemoveAllNavigationEventListeners()),SetControllerNavigation:this.method((n,r,a,o)=>n.SetControllerNavigation(ye(r),a,o)),GetControllerNavigation:this.method((n,r)=>n.GetControllerNavigation(ye(r))),SetImage:this.method((n,r,a)=>n.SetImage(r,a)),SetSoftEdgeWidth:this.method((n,r,a)=>n.SetSoftEdgeWidth(r,a)),SetFillUnused:this.method(n=>n.SetFillUnused()),SetFillHorizontal:this.method((n,r,a)=>n.SetFillHorizontal(r,a)),SetFillVertical:this.method((n,r,a)=>n.SetFillVertical(r,a)),SetFillRadial90:this.method((n,r,a)=>n.SetFillRadial90(r,a)),SetFillRadial180:this.method((n,r,a)=>n.SetFillRadial180(r,a)),SetFillRadial360:this.method((n,r,a)=>n.SetFillRadial360(r,a)),PlayAnimation:this.method(n=>n.PlayAnimation()),StopAnimation:this.method(n=>n.StopAnimation()),RefreshItems:this.method((n,r,a)=>{this.retainLuaCallback(a);try{n.RefreshItems(r,a)}finally{this.unrefLuaCallback(a)}}),GetItemIndex:this.method((n,r)=>n.GetItemIndex(r)),GetItemSize:this.method(n=>n.GetItemSize()),GetItemSpacing:this.method(n=>n.GetItemSpacing()),GetPadding:this.method(n=>n.GetPadding()),ScrollToItemAt:this.method((n,r,a)=>n.ScrollToItemAt(r,a)),GetContentLength:this.method(n=>n.GetContentLength())};this.mtIndexNewindex(t,"Control",(n,r)=>{if(!kn(n,r))return;if(!n.alive&&r!=="alive")throw new Error(`attempt to read '${r}' of a destroyed control`);let a=n.luaFieldValue(r),o=Aa[r];return o?_n(o,a):typeof a=="number"&&!Jl.has(r)&&!Zl.has(r)?new Lt(a):a},(n,r,a)=>{if(kn(n,r)==="rw"){if((r==="fontSize"||r==="minimumFontSize")&&!Number.isInteger(a)){let u=a===null?"nil":typeof a;throw new Error(`bad argument #2 to '${r}' (integer expected, got ${u})`)}let l=Aa[r];if(r==="imageType"&&(a?.EnumType!=="ImageType"||!["Basic","Stretch"].includes(a.Name)))throw new Error("imageType requires Enum.ImageType.Basic or Stretch");n[r]=l?_n(l,a):a,typeof n.markPlayDirty=="function"&&n.markPlayDirty(ki.has(r));return}throw new Error(`cannot set ${r}, no such field`)},i,wa)}mtScript(t){let i=this,n=new Set(["alive","scriptMappingId","object","path","enabled"]);this.mtIndexNewindex(t,"Script",(r,a)=>n.has(a)?r[a]:void 0,(r,a,o)=>{if(a==="enabled"){r.enabled=!!o;return}throw new Error(`cannot set ${a}, no such field`)},{GetParam:this.method((r,a)=>Object.prototype.hasOwnProperty.call(r.params,a)?r.params[a]:null),Invoke:r=>i.luaInvoke(r),EnableUpdate:this.method((r,a)=>{r.updateEnabled=!!a}),RegisterServerSignalHandler:this.method((r,a,o)=>{i.signalHandlers.push({script:r,name:a,fn:o})}),UnregisterServerSignalHandler:this.method((r,a)=>{i.signalHandlers=i.signalHandlers.filter(o=>!(o.script===r&&o.name===a))}),RegisterCustomVariableChangedHandler:this.method((r,a,o,l)=>{i.varHandlers.push({script:r,entityType:ye(a),name:o,fn:l})}),UnregisterCustomVariableChangedHandler:this.method((r,a,o)=>{let l=ye(a);i.varHandlers=i.varHandlers.filter(u=>!(u.script===r&&u.entityType===l&&u.name===o))})})}mtTween(t){this.mtIndexNewindex(t,"Tween",()=>{},()=>{},{SetEase:this.method((i,n)=>i.SetEase(n)),SetRelative:this.method((i,n)=>i.SetRelative(n)),Play:this.method(i=>i.Play()),Pause:this.method(i=>i.Pause()),Resume:this.method(i=>i.Resume()),Restart:this.method(i=>i.Restart()),Complete:this.method(i=>i.Complete()),Kill:this.method((i,n)=>i.Kill(n)),SetOnComplete:this.method((i,n)=>i.SetOnComplete(n)),SetOnStepComplete:this.method((i,n)=>i.SetOnStepComplete(n)),SetLoops:this.method((i,n)=>i.SetLoops(n))})}mtSeq(t){this.mtIndexNewindex(t,"TweenSequence",()=>{},()=>{},{Append:this.method((i,n)=>i.Append(n)),AppendInterval:this.method((i,n)=>i.AppendInterval(n)),AppendCallback:this.method((i,n)=>i.AppendCallback(n)),Join:this.method((i,n)=>i.Join(n)),Insert:this.method((i,n,r)=>i.Insert(n,r)),InsertCallback:this.method((i,n,r)=>i.InsertCallback(n,r)),Play:this.method(i=>i.Play()),Pause:this.method(i=>i.Pause()),Resume:this.method(i=>i.Resume()),Restart:this.method(i=>i.Restart()),Complete:this.method(i=>i.Complete()),Kill:this.method((i,n)=>i.Kill(n)),SetOnComplete:this.method((i,n)=>i.SetOnComplete(n)),SetOnStepComplete:this.method((i,n)=>i.SetOnStepComplete(n)),SetLoops:this.method((i,n)=>i.SetLoops(n))})}mtSignal(t){this.mtIndexNewindex(t,"ServerSignal",()=>{},()=>{},{AddParam:this.method((i,n,r)=>i.AddParam(n,r)),SendSignal:this.method(i=>i.SendSignal()),AddInt:this.method((i,n)=>i.AddInt(n)),AddIntList:this.method((i,n)=>i.AddIntList(n)),AddFloat:this.method((i,n)=>i.AddFloat(n)),AddFloatList:this.method((i,n)=>i.AddFloatList(n)),AddString:this.method((i,n)=>i.AddString(n)),AddStringList:this.method((i,n)=>i.AddStringList(n)),AddVector3:this.method((i,n)=>i.AddVector3(n)),AddVector3List:this.method((i,n)=>i.AddVector3List(n)),AddBool:this.method((i,n)=>i.AddBool(n)),AddBoolList:this.method((i,n)=>i.AddBoolList(n)),AddGuid:this.method((i,n)=>i.AddGuid(n)),AddGuidList:this.method((i,n)=>i.AddGuidList(n)),AddEntity:this.method((i,n)=>i.AddEntity(n)),AddEntityList:this.method((i,n)=>i.AddEntityList(n)),AddPrefabId:this.method((i,n)=>i.AddPrefabId(n)),AddPrefabIdList:this.method((i,n)=>i.AddPrefabIdList(n)),AddConfigId:this.method((i,n)=>i.AddConfigId(n)),AddConfigIdList:this.method((i,n)=>i.AddConfigIdList(n))})}luaRequire(t){let i=q(t,1),n=this.normalizeRequirePath(i),r=this.requireAliases.get(n)||n;c.lua_rawgeti(t,ft,c.LUA_RIDX_MAINTHREAD);let a=c.lua_tothread(t,-1);c.lua_pop(t,1);let o=this.requireCache.get(a);o||(o=new Map,this.requireCache.set(a,o));let l=o.get(r);if(l?.loading)return c.lua_pushstring(t,R(`failed to load script '${n}': cyclic require`)),c.lua_error(t);if(l&&l.ref!=null)return c.lua_rawgeti(t,ft,l.ref),1;let u=this.scriptFiles.get(r);if(u==null)return c.lua_pushstring(t,R(`failed to load script '${n}'`)),c.lua_error(t);let s=c.lua_gettop(t);o.set(r,{loading:!0});try{this.loadModule(t,a,r,u),c.lua_pushvalue(t,-1);let f=J.luaL_ref(t,ft);return o.set(r,{ref:f}),1}catch(f){return o.delete(r),c.lua_settop(t,s),c.lua_pushstring(t,R(`failed to load script '${n}': ${f.message||f}`)),c.lua_error(t)}}newLuaThread(){let t=J.luaL_newstate();return ca.luaL_openlibs(t),ga(t),this.installMetatables(t),this.installGlobals(t),this.luaStates.add(t),c.lua_pushglobaltable(t),this.copyLuaEnvironment(t,-1),c.lua_remove(t,-2),this.moduleBaseEnvironments.set(t,J.luaL_ref(t,ft)),t}copyLuaEnvironment(t,i){let n=c.lua_absindex(t,i);c.lua_newtable(t);let r=c.lua_absindex(t,-1);for(c.lua_pushnil(t);c.lua_next(t,n)!==0;)c.lua_pushvalue(t,-2),c.lua_pushvalue(t,-2),c.lua_rawset(t,r),c.lua_pop(t,1);c.lua_pushvalue(t,r),c.lua_setfield(t,r,R("_G"))}closeTrackedLuaState(t){if(!t||!this.luaStates.has(t))return;for(let n of this.requireCache.get(t)?.values()||[])n.ref!=null&&J.luaL_unref(t,ft,n.ref);this.requireCache.delete(t);let i=this.moduleBaseEnvironments.get(t);if(i!=null&&J.luaL_unref(t,ft,i),this.moduleBaseEnvironments.delete(t),this.luaStates.delete(t),this.luaFunctions)for(let[n,r]of this.luaFunctions)r.__luaState===t&&this.luaFunctions.delete(n);pa(t)}loadModule(t,i,n,r){let a={__kind:"Script",alive:!0,scriptMappingId:this.resolveScriptMappingId(),object:null,path:n,enabled:!0,updateEnabled:!1,params:{},env:t,invoke(){}},o=String(r).replace(/^\uFEFF/,""),l=Ci(o);if(J.luaL_loadbuffer(t,l,l.length,R(`@${n}`))!==Te)throw new Error(q(t,-1));let s=c.lua_absindex(t,-1);if(c.lua_rawgeti(t,ft,this.moduleBaseEnvironments.get(i)),this.copyLuaEnvironment(t,-1),c.lua_remove(t,-2),this.pushScript(t,a),c.lua_setfield(t,-2,R("script")),c.lua_setupvalue(t,s,1),c.lua_pcall(t,0,1,0)!==Te)throw new Error(q(t,-1))}mountScript({path:t,source:i,control:n,params:r={},scriptMappingId:a=void 0}){this.L||this.boot();let o=this.newLuaThread(),l={__kind:"Script",alive:!0,scriptMappingId:this.resolveScriptMappingId(a),object:n,path:this.normalizeRequirePath(t),enabled:!0,updateEnabled:!1,params:r,env:o,lifecyclePhase:"idle"};l.invoke=(s,f)=>this.invokeOn(o,s,f),n&&n.scripts.push(l),this.mountedScripts.push(l),this.pushScript(o,l),c.lua_setglobal(o,R("script"));let u=this.lifecyclePhase;try{this.lifecyclePhase="OnInit",l.lifecyclePhase="OnInit",this.runChunk(o,i,t);let s=this.callGlobal(o,"OnInit");s&&this.mountErrors.push(s),this.lifecyclePhase="OnEnable",l.lifecyclePhase="OnEnable";let f=this.callGlobal(o,"OnEnable");f&&this.mountErrors.push(f),this.lifecyclePhase="OnStart",l.lifecyclePhase="OnStart";let d=this.callGlobal(o,"OnStart");return d&&this.mountErrors.push(d),this.lifecyclePhase="running",l.lifecyclePhase="running",l}catch(s){throw l.alive=!1,l.lifecyclePhase="failed",this.mountedScripts=this.mountedScripts.filter(f=>f!==l),n&&(n.scripts=n.scripts.filter(f=>f!==l)),this.varHandlers=this.varHandlers.filter(f=>f.script!==l),this.signalHandlers=this.signalHandlers.filter(f=>f.script!==l),this.lifecyclePhase=u,o&&o!==this.L&&this.closeTrackedLuaState(o),l.env=null,s}}runChunk(t,i,n){let r=String(i).replace(/^\uFEFF/,""),a=Ci(r),o=J.luaL_loadbuffer(t,a,a.length,R(`@${n}`));if(o!==Te){let u=q(t,-1)||`luaL_loadbuffer status ${o}`;throw c.lua_pop(t,1),new Error(u)}let l=c.lua_pcall(t,0,0,0);if(l!==Te){let u=q(t,-1)||`lua_pcall status ${l}`;throw c.lua_pop(t,1),new Error(u)}}callGlobal(t,i){if(c.lua_getglobal(t,R(i)),c.lua_isfunction(t,-1)){if(c.lua_pcall(t,0,0,0)!==Te){let r=q(t,-1);c.lua_pop(t,1);let a=`${i}: ${r}`;return this.log("lua-error",a),a}}else c.lua_pop(t,1);return null}callGlobalDt(t,i,n){if(c.lua_getglobal(t,R(i)),c.lua_isfunction(t,-1)){if(c.lua_pushnumber(t,n),c.lua_pcall(t,1,0,0)!==Te){let a=q(t,-1);c.lua_pop(t,1),this.log("lua-error",`${i}: ${a}`)}}else c.lua_pop(t,1)}luaInvoke(t){let i=Be(t,1);if(!i||i.__kind!=="Script")return J.luaL_error(t,R("bad self to 'Invoke' (Script expected)"));let n=q(t,2),r=i.env;if(!r||r.l_G!==t.l_G){let u=[];for(let d=3;d<=c.lua_gettop(t);d++)u.push(de(t,this,d));let s;try{s=i.invoke(n,u)}catch(d){return J.luaL_error(t,R(String(d.message||d)))}if(s===void 0)return 0;let f=Array.isArray(s)&&s.__multi?s:[s];for(let d of f)oe(t,this,d);return f.length}let a=2;if(c.lua_getglobal(t,R(n)),!c.lua_isfunction(t,-1))return 0;c.lua_replace(t,a),c.lua_remove(t,1);let o=c.lua_gettop(t)-1;return c.lua_pcall(t,o,_a,0)!==Te?c.lua_error(t):c.lua_gettop(t)}invokeOn(t,i,n){let r=c.lua_gettop(t);if(c.lua_getglobal(t,R(i)),!c.lua_isfunction(t,-1)){c.lua_settop(t,r);return}for(let u of n)oe(t,this,u);if(c.lua_pcall(t,n.length,_a,0)!==Te){let u=q(t,-1);throw c.lua_settop(t,r),new Error(u)}let o=c.lua_gettop(t)-r;if(o<=0){c.lua_settop(t,r);return}if(o===1){let u=de(t,this,-1);return c.lua_settop(t,r),u}let l=[];for(let u=1;u<=o;u++)l.push(de(t,this,r+u));return c.lua_settop(t,r),l.__multi=!0,l}runScriptPhase(t,i){for(let n of this.mountedScripts){if(!this.scriptCanRun(n))continue;let r=n.env;r&&(this.pushScript(r,n),c.lua_setglobal(r,R("script")),!(t==="OnUpdate"&&!n.updateEnabled)&&this.callGlobalDt(r,t,i))}}step(t=1/30){if(typeof t!="number"||!Number.isFinite(t)||t<0)throw new TypeError("dt must be a finite non-negative number");this.clock.frame++,this.clock.time+=t;for(let[n,r]of this.audios)this.clock.time+1e-9>=r.startedAt+r.duration&&(r.alive=!1,this.audios.delete(n),this.audioRevision++);let i=!this.clock.paused;for(let n of[...this.animations])n.step(t);this.runScriptPhase("OnUpdate",t),i&&(this.clock.levelTime+=t,this.runScriptPhase("OnLevelUpdate",t))}injectKey(t){let i=n=>{if(!n.alive||!n.activeInHierarchy)return!1;if(n.keyListeners.has(t)&&n.emitKey(t))return!0;for(let r of[...n.children])if(i(r))return!0;return!1};for(let n of[...this.roots])i(n)}injectCursor(t,i,n){let r=n||this.makeCursorEventData({});Number.isFinite(r.x)&&Number.isFinite(r.y)&&(this.cursor.x=r.x,this.cursor.y=r.y),t.emitCursor(i,r)}getVar(t,i){if(this.serverBridge&&typeof this.serverBridge.getVar=="function")return this.serverBridge.getVar(t,i);let n=this.serverVars[t];return n?n[i]:void 0}notifyVarHandlers(t,i){for(let n of this.varHandlers)this.scriptCanRun(n.script)&&n.entityType===t&&n.name===i&&this.safeCall(n.fn,this.enumTree.CustomVariableEntityType[t],i)}setVar(t,i,n){if(this.serverBridge&&typeof this.serverBridge.setVar=="function"){this.serverBridge.setVar(t,i,n);return}let r=this.serverVars[t]||(this.serverVars[t]=Object.create(null));r[i]=n,this.notifyVarHandlers(t,i)}sendClientSignal(t,i){for(let n of this.signalHandlers)this.scriptCanRun(n.script)&&n.name===t&&this.safeCall(n.fn,t,i)}evalQueryScript(t,i){this.L||this.boot();let n=this.L;c.lua_createtable(n,0,5);let r=(a,o)=>{c.lua_pushcfunction(n,o),c.lua_setfield(n,-2,R(a))};return r("var",a=>(oe(a,this,i.var(q(a,1),q(a,2))),1)),r("logContains",a=>(c.lua_pushboolean(a,i.logContains(q(a,1))),1)),r("control",a=>(oe(a,this,i.control(q(a,1))),1)),r("logs",a=>(oe(a,this,i.logs()),1)),r("signals",a=>(oe(a,this,i.signals(q(a,1))),1)),r("serverLogs",a=>(oe(a,this,i.serverLogs?i.serverLogs():[]),1)),r("serverLogContains",a=>{let o=i.serverLogContains;return c.lua_pushboolean(a,o?!!o(q(a,1)):!1),1}),c.lua_setglobal(n,R("query")),this.runChunk(n,t,"autotest-assert"),!0}destroy(){for(let t of this.roots.slice())this.destroyControl(t);for(let t of this.mountedScripts.slice())this.unmountScript(t);this.lifecyclePhase="idle",this.mountedScripts=[],this.luaFunctions.clear();for(let t of[...this.luaStates])this.closeTrackedLuaState(t);this.L=null,this.audios.clear(),this.audioHistory.length=0,this.audioWarnings.clear()}};function ei(e){let t=new Ti(e);return t.boot(),t}var ht=Object.freeze(Array.from({length:8},(e,t)=>`Player${t+1}`)),Mn=Object.freeze(Array.from({length:8},(e,t)=>`Avatar${t+1}`)),za=Object.freeze(["Level","PlayerSelf","AvatarSelf"]);var Pn=Object.freeze([...za,...ht,...Mn]),$a=Object.freeze(["PlayerSelf","AllPlayers",...ht]),es=Object.freeze(["Level","PlayerSelf",...ht]),Ta=Object.freeze(["Int","Float","String","Bool","Vector3","Entity","Guid","PrefabId","ConfigId","IntList","FloatList","StringList","BoolList","Vector3List","EntityList","GuidList","PrefabIdList","ConfigIdList","Dict","Struct"]),ts=-2147483648,is=2147483647,ns=new Set(["set-custom-variable","get-custom-variable","custom-variable-changed","\u8BBE\u7F6E\u81EA\u5B9A\u4E49\u53D8\u91CF","\u83B7\u53D6\u81EA\u5B9A\u4E49\u53D8\u91CF","\u81EA\u5B9A\u4E49\u53D8\u91CF\u53D8\u5316\u65F6","send-signal","listen-signal","send-client-script-signal","\u53D1\u9001\u4FE1\u53F7","\u76D1\u542C\u4FE1\u53F7","\u53D1\u9001\u5BA2\u6237\u7AEF\u811A\u672C\u4FE1\u53F7","setVar","getVar","signal","var"]);function ti(e){return`Player${Number(e)}`}function Pi(e){return`Avatar${Number(e)}`}function Pa(e){let t=String(e||"").match(/^(?:Player|Avatar)([1-8])$/);return t?Number(t[1]):0}function dt(e){if(e==null||e==="")return 1;let t=Number(e);if(!Number.isInteger(t)||t<1||t>8)throw new Error("playerCount must be an integer 1-8");return t}function Xe(e,t=8){let i=dt(t);if(e==null||e==="")return 1;let n=Number(e);if(!Number.isInteger(n)||n<1||n>i)throw new Error(`playerIndex must be an integer 1-${i}`);return n}function Ra(){let e={Level:Object.create(null),PlayerSelf:Object.create(null),AvatarSelf:Object.create(null)};for(let t of ht)e[t]=Object.create(null);for(let t of Mn)e[t]=Object.create(null);return e}function Da(e){let t=String(e||"");if(!Pn.includes(t))throw new Error(`unknown CustomVariableEntityType: ${e}`);return t}function rs(e,t){let i=Da(e);if(!es.includes(i))throw new Error(`${t}.entityType must be Level, PlayerSelf, or Player1-8`);return i}function ii(e){let t=String(e??"");if(!t)throw new Error("custom variable name is required");return t}function Ri(e){let t=String(e??"");if(!t)throw new Error("signal name is required");return t}function Rn(e){let t=String(e||"PlayerSelf");if(!$a.includes(t))throw new Error(`unsupported client signal target: ${e}. use PlayerSelf, AllPlayers, or Player1-8`);return t}function ni(e){if(e==null)return"";if(typeof e=="boolean")return"Bool";if(typeof e=="string")return"String";if(typeof e=="number")return Number.isInteger(e)?"Int":"Float";if(Array.isArray(e)){if(e.length===0)return"IntList";let t=ni(e[0]);return t&&!t.endsWith("List")&&t!=="Dict"&&t!=="Struct"?`${t}List`:"IntList"}return e&&typeof e=="object"?"x"in e||"y"in e||"z"in e?"Vector3":"Dict":""}function Se(e){return e===void 0?null:JSON.parse(JSON.stringify(e))}function Ma(e){return Array.isArray(e)?e.map(t=>t&&typeof t=="object"&&Object.prototype.hasOwnProperty.call(t,"value")&&"type"in t?t.value:t):[]}function Na(e){return Array.isArray(e)?e.map(t=>t&&typeof t=="object"&&Object.prototype.hasOwnProperty.call(t,"value")&&"type"in t?{type:String(t.type||""),value:t.value}:{type:ni(t),value:t}):[]}function as(e){return String(e?.kind||e?.type||e?.name||e?.id||"")}function Mi(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function Ga(e,t){if(!Mi(e)||!Object.prototype.hasOwnProperty.call(e,"fromSignalParam"))return null;if(Object.keys(e).some(n=>n!=="fromSignalParam"))throw new Error(`${t}.fromSignalParam cannot be combined with literal fields`);let i=Number(e.fromSignalParam);if(!Number.isSafeInteger(i)||i<0)throw new Error(`${t}.fromSignalParam must be a non-negative integer`);return{fromSignalParam:i}}function Fa(e,t){return Ga(e,t)||Se(e)}function os(e,t,i){if(!Mi(e))throw new Error(`serverLogic.rules[${t}].actions[${i}] must be an object`);let n=String(e.kind||e.type||""),r=`serverLogic.rules[${t}].actions[${i}]`;if(n==="setCustomVariable"){let a=rs(e.entityType,r);if(!Object.prototype.hasOwnProperty.call(e,"value"))throw new Error(`${r}.value is required`);return{kind:n,entityType:a,name:ii(e.name),value:Fa(e.value,`${r}.value`),...e.variableType?{variableType:String(e.variableType)}:{}}}if(n==="sendClientScriptSignal"){if(!Array.isArray(e.params))throw new Error(`${r}.params must be an array`);return{kind:n,target:Rn(e.target),signalName:Ri(e.signalName),params:e.params.map((a,o)=>Fa(a,`${r}.params[${o}]`))}}throw new Error(`${r}.kind must be setCustomVariable or sendClientScriptSignal`)}function ri(e){if(e==null)return{version:1,rules:[]};if(!Mi(e))throw new Error("serverLogic must be an object");let t=e.rules===void 0?[]:e.rules;if(!Array.isArray(t))throw new Error("serverLogic.rules must be an array");return{version:1,rules:t.map((i,n)=>{if(!Mi(i))throw new Error(`serverLogic.rules[${n}] must be an object`);if(!Array.isArray(i.actions)||i.actions.length===0)throw new Error(`serverLogic.rules[${n}].actions must be a non-empty array`);return{id:String(i.id||`signal-${n+1}`),signalName:Ri(i.signalName),actions:i.actions.map((r,a)=>os(r,n,a))}})}}function Oa(e,t,{typed:i=!1}={}){let n=Ga(e,"server logic value");if(n){let r=i?t.params:t.values;if(n.fromSignalParam>=r.length)throw new Error(`signal ${t.name} has no parameter at index ${n.fromSignalParam}`);return Se(r[n.fromSignalParam])}return Se(e)}function ls(e){return e==="Level"?"Level":ht.includes(e)?"PlayerSelf":Mn.includes(e)?"AvatarSelf":e}function Va(e={}){let t=Ra(),i=Ra(),n=[],r=[],a=[],o=[],l=Array.from({length:9},()=>null),u=1,s=0,f=Number(e.onlineLatencyMs||0);(!Number.isFinite(f)||f<0)&&(f=0);let d=ri(e.logic),g=dt(e.playerCount),p=Xe(e.viewPlayerIndex,g);function m(v,E){o.push({source:"server",level:String(v||"engine"),text:String(E),time:s})}function y(v){let E=l[v||p],S=Number(E?.clock?.time);Number.isFinite(S)&&(s=S)}function w(v,E,S,x){t[v][E]=S,i[v][E]={type:x||ni(S)||i[v][E]?.type||""}}function _(v,E,S){return typeof S!="number"||!Number.isInteger(S)?{ok:!0,value:S}:S>=ts&&S<=is?{ok:!0,value:S}:(m("engine",`Int custom variable ${v}.${E} out of range ${S}; keeping previous legal value`),{ok:!1,value:t[v][E]})}function C(v,E){let S=Da(v),x=E||p;return S==="PlayerSelf"?ti(x):S==="AvatarSelf"?Pi(x):S}function G(v,E){let S=ls(v);if(v==="Level"){for(let k=1;k<=g;k+=1){let A=l[k];A&&typeof A.notifyVarHandlers=="function"&&A.notifyVarHandlers("Level",E)}return}let x=Pa(v);if(!x)return;let F=l[x];F&&typeof F.notifyVarHandlers=="function"&&F.notifyVarHandlers(S,E)}function z(v,E){let S=Rn(v);return S==="AllPlayers"?Array.from({length:g},(x,F)=>F+1):S==="PlayerSelf"?[E||p]:[Pa(S)]}function Z(v){for(let E of d.rules)if(E.signalName===v.name)for(let S of E.actions){if(S.kind==="setCustomVariable"){let x=Oa(S.value,v);O.setVar(S.entityType,S.name,x,{type:S.variableType,playerIndex:v.playerIndex}),m("info",`logic ${E.id}: set ${S.entityType}.${S.name}`);continue}if(S.kind==="sendClientScriptSignal"){let x=S.params.map(F=>Oa(F,v,{typed:!0}));O.sendToClient(S.signalName,x,{target:S.target,playerIndex:v.playerIndex}),m("info",`logic ${E.id}: sent ${S.signalName} to ${S.target}`)}}}function ie(v,E){v&&(v.serverBridge={getVar:(S,x)=>O.getVar(S,x,{playerIndex:E}),setVar:(S,x,F)=>O.setVar(S,x,F,{playerIndex:E}),receiveFromClient:(S,x)=>O.receiveFromClient(S,x,{playerIndex:E})})}function L(v){v&&(v.serverBridge=null)}let O={ENTITY_TYPES:za,ALL_ENTITY_TYPES:Pn,CLIENT_SIGNAL_TARGETS:$a,get clock(){return s},get playerCount(){return g},get viewPlayerIndex(){return p},setClock(v){s=Number(v)||0},setPlayerCount(v){return g=dt(v),p>g&&(p=g),g},setViewPlayerIndex(v){return p=Xe(v,g),p},log(v,E){m(v,E)},defineVar(v,E,S={},{playerIndex:x}={}){let F=C(v,x),k=ii(E);if(Object.prototype.hasOwnProperty.call(t[F],k))throw new Error(`custom variable already exists: ${F}.${k}`);let A=S.type?String(S.type):ni(S.value??S.defaultValue);if(A&&!Ta.includes(A))throw new Error(`unsupported custom variable type: ${A}`);let $=S.value!==void 0?S.value:S.defaultValue!==void 0?S.defaultValue:null;return w(F,k,$,A),O.getVar(F,k)},getVar(v,E,{playerIndex:S}={}){let x=C(v,S),F=ii(E);if(!Object.prototype.hasOwnProperty.call(t[x],F)){m("engine",`GetGlobalCustomVariableValue missing ${x}.${F}; returning nil (simulator policy)`);return}return t[x][F]},setVar(v,E,S,{notify:x=!0,type:F,playerIndex:k}={}){let A=C(v,k),$=ii(E),V=F||i[A][$]?.type||ni(S);if(V&&!Ta.includes(V)&&V!=="")throw new Error(`unsupported custom variable type: ${V}`);let se=S;if(!((V==="Int"||V===""&&typeof S=="number"&&Number.isInteger(S))&&(se=_(A,$,S).value,se===void 0)))return w(A,$,se,V),x&&G(A,$),se},listVars(v){let E=v?[C(v)]:["Level",...Array.from({length:g},(x,F)=>ti(F+1)),...Array.from({length:g},(x,F)=>Pi(F+1))],S=[];for(let x of E)for(let F of Object.keys(t[x]))S.push({entityType:x,name:F,type:i[x][F]?.type||"",value:Se(t[x][F])});return S},receiveFromClient(v,E=[],{playerIndex:S}={}){let x=Xe(S||p,g);y(x);let F=Ri(v),k={id:u++,direction:"inbound",name:F,params:Na(E),values:Ma(E),time:s,playerIndex:x,from:ti(x)};return n.push(k),Z(k),k},sendToClient(v,E=[],{target:S="PlayerSelf",playerIndex:x}={}){let F=Ri(v),k=Rn(S),$=z(k,x||p),V={id:u++,direction:"outbound",name:F,params:Na(E),values:Ma(E),time:s,target:k,players:$,deliverAt:s+f/1e3,delivered:!1};return r.push(V),f===0?O.deliver(V):a.push(V),V},getLogic(){return Se(d)},setLogic(v){return d=ri(v),O.getLogic()},deliver(v){if(!v||v.delivered)return;v.delivered=!0;let E=Array.isArray(v.players)&&v.players.length?v.players:z(v.target);for(let S of E){let x=l[S];x&&typeof x.sendClientSignal=="function"&&x.sendClientSignal(v.name,v.values)}},flush(v){v!==void 0&&(s=Number(v)||0);let E=[];for(let S=a.length-1;S>=0;S-=1)a[S].deliverAt<=s&&E.push(a.splice(S,1)[0]);E.sort((S,x)=>S.id-x.id);for(let S of E)O.deliver(S);return E},inbound(){return n.slice()},outbound(){return r.slice()},loadConfig(v){if(v!=null){if(typeof v!="object")throw new Error("server config must be an object");if(v.graph&&!Array.isArray(v.nodes))throw new Error("unsupported server node graph: v1 only accepts custom variables and signals");for(let E of v.nodes||[]){let S=as(E);if(!ns.has(S))throw new Error(`unsupported server node: ${S||JSON.stringify(E)}. v1 only supports custom variables and signals`)}if(v.onlineLatencyMs!==void 0){let E=Number(v.onlineLatencyMs);if(!Number.isFinite(E)||E<0)throw new Error("onlineLatencyMs must be a non-negative finite number");f=E}v.playerCount!==void 0&&O.setPlayerCount(v.playerCount),v.viewPlayerIndex!==void 0&&O.setViewPlayerIndex(v.viewPlayerIndex),(v.logic!==void 0||v.serverLogic!==void 0)&&O.setLogic(v.logic??v.serverLogic);for(let E of v.vars||[]){let S=C(E.entityType),x=ii(E.name);Object.prototype.hasOwnProperty.call(t[S],x)?O.setVar(S,x,E.value??E.defaultValue,{notify:!1,type:E.type}):O.defineVar(S,x,E)}}},attachRuntime(v,{playerIndex:E=1}={}){let S=Xe(E,8);return l[S]&&l[S]!==v&&L(l[S]),l[S]=v||null,ie(l[S],S),O},attachRuntimes(v){O.detachRuntime();let E=Array.isArray(v)?v:[];for(let S=0;S<E.length&&S<8;S+=1)l[S+1]=E[S]||null,ie(l[S+1],S+1);return O},detachRuntime(){for(let v=1;v<=8;v+=1)L(l[v]),l[v]=null},snapshot(){let v=ti(p),E=Pi(p),S={Level:{},PlayerSelf:{},AvatarSelf:{}};for(let x of Object.keys(t.Level))S.Level[x]={type:i.Level[x]?.type||"",value:Se(t.Level[x])};for(let x of Object.keys(t[v]))S.PlayerSelf[x]={type:i[v][x]?.type||"",value:Se(t[v][x])};for(let x of Object.keys(t[E]))S.AvatarSelf[x]={type:i[E][x]?.type||"",value:Se(t[E][x])};for(let x=1;x<=g;x+=1){let F=ti(x),k=Pi(x);S[F]={},S[k]={};for(let A of Object.keys(t[F]))S[F][A]={type:i[F][A]?.type||"",value:Se(t[F][A])};for(let A of Object.keys(t[k]))S[k][A]={type:i[k][A]?.type||"",value:Se(t[k][A])}}return{clock:s,onlineLatencyMs:f,playerCount:g,viewPlayerIndex:p,logic:O.getLogic(),vars:S,inbound:n.map(x=>({id:x.id,name:x.name,params:Se(x.params),values:Se(x.values),time:x.time,playerIndex:x.playerIndex,from:x.from})),outbound:r.map(x=>({id:x.id,name:x.name,params:Se(x.params),values:Se(x.values),time:x.time,target:x.target,players:Array.isArray(x.players)?x.players.slice():[],deliverAt:x.deliverAt,delivered:!!x.delivered})),logs:o.map(x=>({source:"server",level:x.level,text:x.text,time:x.time}))}},reset(){for(let v of Pn){for(let E of Object.keys(t[v]))delete t[v][E];for(let E of Object.keys(i[v]))delete i[v][E]}n.length=0,r.length=0,a.length=0,o.length=0,u=1,s=0},destroy(){O.detachRuntime(),O.reset()}};e.config&&O.loadConfig(e.config);for(let v of e.vars||[])O.defineVar(v.entityType,v.name,v);return O}var ss={container:"container",textbox:"textbox",image:"image",button:"button",cursor:"cursor",grid:"grid",reference:"reference",textwindow:"textwindow",keyhint:"keyhint",animation:"animation",fullscreen:"fullscreen"};function Nn(e,t,i=null){let n=We(e.transformByPlatform,t),r={authoringId:e.id,kind:ss[e.kind]||"container",name:e.name,prefabIndex:e.guid||0,active:e.active!==!1,visible:e.visible!==!1,canControllerFocus:e.canControllerFocus===!0,anchoredPositionX:n.offset.x,anchoredPositionY:n.offset.y,sizeDeltaX:n.size.x,sizeDeltaY:n.size.y,anchorMinX:n.anchorMin.x,anchorMinY:n.anchorMin.y,anchorMaxX:n.anchorMax.x,anchorMaxY:n.anchorMax.y,pivotX:n.pivot.x,pivotY:n.pivot.y,localScaleX:n.scale.x,localScaleY:n.scale.y,localScaleZ:n.scale.z,localRotationX:n.rotation.x,localRotationY:n.rotation.y,localRotationZ:n.rotation.z,children:(e.children||[]).map(o=>Nn(o,t,i))},a=i?.get(e.id);return a?.length&&(r.scripts=a.map(o=>{let l=Number(o.guid);return{path:o.path||o.id,source:o.source||"",...Number.isSafeInteger(l)&&l>0?{scriptMappingId:l}:{}}})),e.kind==="container"&&(r.isolateNavigation=e.isolateNavigation===!0,r.disableKeyEventPassthrough=e.disableKeyEventPassthrough===!0,r.disableCursorEventPassthrough=e.disableCursorEventPassthrough===!0,r.showCursor=e.showCursor===!0),(e.kind==="textbox"||e.kind==="textwindow")&&(r.text=e.text??"",r.fontSize=e.fontSize,r.adaptiveFontSize=e.adaptiveFontSize===!0,r.minimumFontSize=e.minimumFontSize,r.fontColor=e.fontColor,r.bgColor=e.bgColor,r.enableOutline=e.enableOutline!==!1,r.outlineColor=e.outlineColor,r.horizontalAlignment=e.horizontalAlignment||"Left",r.verticalAlignment=e.verticalAlignment||"Top",e.kind==="textwindow"&&(r.interactable=e.interactable!==!1,r.showScrollBar=e.showScrollBar!==!1)),e.kind==="image"&&(r.imageSource=e.imageSource,r.imageType=e.imageType??null,r.imageId=e.imageId??0,r.imageColor=e.imageColor,r.raycastTarget=e.raycastTarget===!0,r.enableMask=e.enableMask===!0,r.enableSoftEdge=e.enableSoftEdge===!0,r.softEdgeMode=e.softEdgeMode,r.softEdgeWidthX=e.softEdgeWidthX,r.softEdgeWidthY=e.softEdgeWidthY,r.horizontalSoftRange=e.horizontalSoftRange,r.verticalSoftRange=e.verticalSoftRange,r.enableFill=e.enableFill===!0,r.fillType=e.enableFill?e.fillType:"Unused",r.fillHorizontalType=e.fillHorizontalType,r.fillVerticalType=e.fillVerticalType,r.fillRadial90Type=e.fillRadial90Type,r.fillRadialType=e.fillRadialType,r.fillAmount=e.fillAmount,r.reverseMaskArea=e.reverseMaskArea===!0),e.kind==="button"&&(r.raycastTarget=e.raycastTarget!==!1,r.interactable=e.interactable!==!1,r.clickAudioId=e.clickAudioId,r.unavailableChildId=e.unavailableChildId??null,r.hoverChildId=e.hoverChildId??null,r.pressedChildId=e.pressedChildId??null,r.selectedChildId=e.selectedChildId??null),e.kind==="cursor"&&(r.raycastTarget=e.raycastTarget!==!1),e.kind==="reference"&&(r.referencedPrefabIndex=e.referencedPrefabId),e.kind==="grid"&&(r.itemPrefabIndex=e.itemPrefabId,r.raycastTarget=e.raycastTarget!==!1,r.interactable=e.interactable!==!1,r.showScrollBar=e.showScrollBar!==!1,r.scrollDirection=e.scrollDirection,r.layoutConstraint=e.layoutConstraint,r.layoutConstraintFixedCount=e.layoutConstraintFixedCount,r.cellSizeX=e.cellSizeX,r.cellSizeY=e.cellSizeY,r.spacingX=e.spacingX,r.spacingY=e.spacingY,r.padding1X=e.padding1X,r.padding1Y=e.padding1Y,r.padding2X=e.padding2X,r.padding2Y=e.padding2Y,r.previewCount=e.previewCount),e.kind==="keyhint"&&(r.keyboardKeyCode=e.keyboardKeyCode,r.controllerKeyCode=e.controllerKeyCode),(e.kind==="animation"||e.kind==="fullscreen")&&(r.raycastTarget=!1,r.animationId=e.animationId,r.playSoundEffect=e.playSoundEffect,e.kind==="animation"&&(r.layer=e.layer)),r}function Fn(e,t=[],i=""){let n=i&&te[i]?i:e.canvasId,r=te[n],a=jt(e),o=new Map;for(let u of t){if(!u.controlId)continue;let s=o.get(u.controlId)||[];s.push(u),o.set(u.controlId,s)}let l=e.meta?.assetType==="client-control-template"?(e.root.children||[]).map(u=>Nn(u,n,o)):[];return{canvasId:n,platform:r.platform,device:r.luaDevice,canvasWidth:r.width,canvasHeight:r.height,root:Nn(a,n,o),templates:l}}var Ni="qxqy-autotest";var pt=.03333333333333333,us=new Set(["pointer","key","click","pause","resume","serverSet","serverSend","view"]),cs=new Set(["log","control","var","signal","tree","lua"]);function mt(e,t){let i=Number(e);if(!Number.isFinite(i))throw new Error(`${t} must be a finite number`);return i}function On(e){return JSON.parse(JSON.stringify(e??null))}function Fi(e,t){if(!e||typeof e!="object")throw new Error(`events[${t}] must be an object`);let i=String(e.kind||e.do||"");if(!us.has(i))throw new Error(`unsupported event kind: ${i||"(empty)"}`);let n=e.payload&&typeof e.payload=="object"?{...e.payload}:{};if(i==="pointer")!n.type&&e.type&&(n.type=e.type),n.x===void 0&&(n.x=e.x),n.y===void 0&&(n.y=e.y),n.x=mt(n.x,"pointer.x"),n.y=mt(n.y,"pointer.y"),n.type=String(n.type||"click"),n.type==="wheel"&&(n.deltaX=mt(n.deltaX??e.deltaX??0,"pointer.deltaX"),n.deltaY=mt(n.deltaY??e.deltaY??0,"pointer.deltaY"));else if(i==="key"){if(n.typeName=String(n.typeName||n.key||e.typeName||e.key||""),!n.typeName)throw new Error("key event requires typeName")}else if(i==="click"){if(n.name=String(n.name||e.name||""),!n.name)throw new Error("click event requires control name")}else if(i==="serverSet"){if(n.entityType=String(n.entityType||e.entityType||""),n.name=String(n.name||e.name||""),n.value===void 0&&(n.value=e.value),n.value===void 0&&(n.value=null),!n.entityType||!n.name)throw new Error("serverSet requires entityType and name")}else if(i==="serverSend"){if(n.name=String(n.name||e.name||""),n.params=Array.isArray(n.params)?n.params:Array.isArray(e.params)?e.params:[],n.target=String(n.target||e.target||"PlayerSelf"),!n.name)throw new Error("serverSend requires signal name")}else if(i==="view"&&(n.playerIndex=Number(n.playerIndex||n.viewPlayerIndex||e.playerIndex||e.viewPlayerIndex||0),!Number.isInteger(n.playerIndex)||n.playerIndex<1))throw new Error("view event requires playerIndex 1-8");return{t:mt(e.t??0,"event.t"),source:String(e.source||"user"),kind:i,payload:n}}function zn(e,t){if(!e||typeof e!="object")throw new Error(`asserts[${t}] must be an object`);let i=String(e.kind||(e.check?"log":""));if(!cs.has(i))throw new Error(`unsupported assert kind: ${i||"(empty)"}`);let n={kind:i};if(e.at!==void 0&&(n.at=mt(e.at,"assert.at")),i==="log"){if(n.contains=String(e.contains||e.check||e.text||""),n.source=e.source==="server"?"server":"client",e.level&&(n.level=String(e.level)),!n.contains)throw new Error("log assert requires contains")}else if(i==="control"){if(n.id=e.id?String(e.id):"",n.name=e.name?String(e.name):"",n.field=String(e.field||""),!n.field)throw new Error("control assert requires field");if(!n.id&&!n.name)throw new Error("control assert requires id or name");if(!Object.prototype.hasOwnProperty.call(e,"equals"))throw new Error("control assert requires equals");n.equals=On(e.equals)}else if(i==="var"){if(n.entityType=String(e.entityType||""),n.name=String(e.name||""),!n.entityType||!n.name)throw new Error("var assert requires entityType and name");if(!Object.prototype.hasOwnProperty.call(e,"equals"))throw new Error("var assert requires equals");n.equals=On(e.equals)}else if(i==="signal"){if(n.direction=e.direction==="outbound"?"outbound":"inbound",n.name=String(e.name||""),!n.name)throw new Error("signal assert requires name");e.values!==void 0&&(n.values=On(e.values))}else if(i==="tree"){if(n.name=String(e.name||""),n.exists=e.exists!==!1,!n.name)throw new Error("tree assert requires name")}else if(i==="lua"&&(n.source=String(e.source||""),!n.source.trim()))throw new Error("lua assert requires source");return n}function Ya(e){let t=0,i=[],n=[];for(let r of e){if(!r||typeof r!="object")throw new Error("queue step must be an object");if(r.do!=="start"){if(r.do==="step"){t+=mt(r.dt??pt,"step.dt");continue}if(r.do==="pointer"||r.do==="key"||r.do==="click"||r.do==="pause"||r.do==="resume"||r.do==="serverSet"||r.do==="serverSend"||r.do==="view"){i.push(Fi({...r,kind:r.do,t},i.length));continue}if(r.assert||r.check||r.kind){n.push(zn({...r.assert||r,at:r.at??t},n.length));continue}throw new Error(`unsupported queue step: ${JSON.stringify(r)}`)}}return{events:i,asserts:n,dt:pt}}function ai(e){if(Array.isArray(e)){let n=Ya(e);return{format:Ni,version:1,name:"",dt:n.dt,events:n.events,asserts:n.asserts}}if(!e||typeof e!="object")throw new Error("autotest case must be an object or step array");if(Array.isArray(e.queue)||Array.isArray(e.steps)){let n=Ya(e.queue||e.steps);return{format:Ni,version:1,name:String(e.name||""),dt:Number(e.dt)>0?Number(e.dt):n.dt,events:n.events,asserts:n.asserts}}let t=(e.events||[]).map((n,r)=>Fi(n,r)),i=(e.asserts||[]).map((n,r)=>zn(n,r));return t.sort((n,r)=>n.t-r.t||0),{format:Ni,version:1,name:String(e.name||""),dt:Number(e.dt)>0?Number(e.dt):pt,playerCount:Number(e.playerCount)>0?Number(e.playerCount):1,events:t,asserts:i}}function Ba(e,t={}){let i=(e||[]).map((n,r)=>Fi(n,r));return{format:Ni,version:1,name:String(t.name||""),dt:Number(t.dt)>0?Number(t.dt):pt,playerCount:Number(t.playerCount)>0?Number(t.playerCount):1,events:i,asserts:(t.asserts||[]).map((n,r)=>zn(n,r))}}function Xa(e,t,i){if(!e)return null;let n=Fi({...t,t:t.t??i??0},e.events.length);return e.events.push(n),n}import{createCanvas as fs}from"@napi-rs/canvas";var Ua=fs(1,1).getContext("2d"),ds='"Microsoft YaHei UI","Microsoft YaHei",sans-serif',Oi=(e,t)=>Math.max(0,Math.min(t,Number.isFinite(e)?e:0));function ja(e,t,i){let n=Math.max(8,Number(e.fontSize)||12),r=String(e.text??"").replace(/\r\n?/g,`
109
- `),a=JSON.stringify([r,t,i,n,e.showScrollBar]),o=e._textWindowLayout;if(o?.key!==a){Ua.font=`${n}px ${ds}`;let s=p=>{let m=[];for(let y of r.split(`
110
- `)){let w="";for(let _ of y)w&&Ua.measureText(w+_).width>p&&(m.push(w),w=""),w+=_;m.push(w)}return m},f=s(Math.max(1,t-4)),d=e.showScrollBar!==!1&&f.length*n*1.2>i,g=Math.max(1,t-4-(d?12:0));d&&(f=s(g)),o=e._textWindowLayout={key:a,lines:f,font:n,textWidth:g,lineHeight:n*1.2,length:f.length*n*1.2}}let l=Math.max(0,o.length-i),u=Oi(e._scrollOffset||0,l);return e._scrollOffset=u,{...o,max:l,offset:u,viewport:i,horizontal:!1,width:t,height:i}}function zi(e,t,i){if(!e?.showBar||e.max<=0||t<=0||i<=0)return null;let n=e.horizontal===!0,r=n?t:i,a=Math.max(0,r-4),o=Math.min(a,Math.max(18,a*r/(r+e.max))),l=a-o,u=l*e.offset/e.max,s=Math.min(8,n?i:t),f=n?{x:-t/2+2,y:i/2-s-2,width:a,height:s}:{x:t/2-s-2,y:-i/2+2,width:s,height:a},d=n?{...f,x:f.x+u,width:o}:{...f,y:f.y+u,height:o};return{track:f,thumb:d,travel:l}}var hs=[[10001,"ura.1ht4.2ag9.1hh5.jbb.k02.jcw.2tv.2wn.2xk.2r3.d5s.94l.ebv.kcr.b40.77k.9gp.97w.1hb5.jag.btu.jc9.hp5.bmj.blq.blq.ff9.ffk.o74.1owl.rp.mg.l3.lf.lh.qy.1a3z.2xk.2xk.2xk.2xk.2xk.17dc.1f2b.2bc.2bc.2bc.2bc.2bc.ffo.ffo.126.1fk.4mo.4mo.15e.1h2.237.2ba.2kd.2bc.4mo.4mo.4mo.4mo.1mc.1n6.2cu.1ud.2b1.2ee.1tj.1tk"],[20001,"o6.fh.kb.cr.og.sm.6x.8c.87.o7.vz.kt.qo.lg.ob.9w.mg.1kz.zc.1ex.1d5.ps.uu.su.qs.ys.zp.10k.15a.xc.uk.mx.1ax.nt.tu.19m.uj.1ku.tt.100.ie.d3.fp.ie.ie.d3.fp.ie.8p.7k.fw.h0.qc.ot.uc.ot.rk.gb.1c2.ff.cl.9v.wg.1ir.1lr.1b8.1ri.1p0.104.10n.mw.j6.jb.f1.dv.84.a0.cp.bx.1ko.1au.1ia.rs.rt.rs.t7.x6.wi.zc.16f.1i6.2jh.28d.qh.k8.1gz.1ko.2iv.1xp.1l4.1gk.10j.yo.1jk.1jk.xv.104.15o.1xg.1xg.1xi.25i.p1.t1.yh.1ak.1i6.1y2.xt.32u.3g6.1bz.2mn.14l.14c.1e1.op.s8.p2.v5.2ix.1a0.ry.16m.17n.13c.134.ys.yu.xr.sl.sr.sd.yh.z5.gd.gl.hx.h2.g8.fj.iy.hz.jj.th.12n.16r.d3.j9.dg.lj.fl.a7.f9.iw.el.27f.1dh.1rh.2ph.yd.w5.x5.tr.pq.zf.16h.1a5.17t.wy.vn.y8.wl.yv.2ye.2qt.1ah.163.19t.uf.119.2vv.1bm.13h.14p.1so.c3.as.9z.19w.1l4.1nl.rj.we"],[30001,"jo.my.ss.dw.c1.b4.hl.hl.hl.cz.dw.dw.b4.dw.fr.kd.qv.px.px.74.6u.8h.60.8q.8b.eo.eo.eo.8k.a5.99.12v.13y.lg.m4.qr.dw.ex.g0.ef.cd.br.11n.17h.1b8.1c9.9p.ag.9z.l9.m8.m8.lw.m8.cz.99.b4.8c.63.7f.6h.99.re.pp.pi.cq.c9.cp.ck.c6.b0.bd.al.f6.gl.ed.fs.lc.k6.kh.i6.cx.j1.hk.gb.d7.h7.g2.em.kj.kn.k4.j5.rh.t0.qt.mj.i7.ih.i2.hd.3r.8d.6u.6z.by.de.dg.cr.1a5.1ab.16c.18g.n2.ly.no.nt.f9.de.lr.fe.f0.fj.el.fo.t1.g9.ly.h3.g6.de.2ak.2f3.wf.kg.qn.11p.rg.uj.u6.11c.22o.2cs.3dp.3dq.3d5.3d6.1zx.18v"],[40001,"19x.215.2zt.1ex.2pj.7hy.1ur.1gn.1g7.1b1.u9.1tw.108.1ew.rs.1qu.w9.lk.244.qi.b6.tk.jg.jg.jg.y4.c1.b4.iv.hi.r4.n7.gy.ev.qe.12z.18n.dw.1l6.ou.wz.1un.19t.18k.yy.1hs.sl.dw.1vl.100.14k.1q8.209.1jk.1xr.ua.1j2.pr.26h.1gs.s9.px.15v.pf.1jk.xc.1hb.111.172.ut.285.1oh.149.zj.22r.2l9.14a.ok.23y.1eh.xe.1j0.1rp.1cz.wf.1mh.22k.334.1z2.1xo.1br.4ji.5nq.5nf.2za.18r.h3.eo.ia.1kn.dc.ss.s0.1bl.1oc.is.km.177.1ec.1ao.h4.hp.dx.l9.iw.i3.12w.n1.yq.12w.1ju.yx.14s.18b.22t.u3.my.2rb.36w.13u.z8.20r.18g.19r.2x9.w4.q2.1d2.wo.13a.v6.17w.ur.288.1b6.14m.1fi.1xx.1ee.kj.121.j2.1d2.2ad.1ri.2lc.1vk.138.12r.xj.1h5.1c5.2qx.1gj.t2.lv.rf.18q.1kz.dw.2aq.ia.1i9.k5.199.f4.10y.18a.xf.rk.1g9.1q3.10h.sj.15o.e3.dz.sv.135.w9.yg.aw.2a2.19m.22w.1c8.272.13o.104.1sr.rs.1pb.d5.df.kp.jq.1a7.s8.1ao.ba.rb.in.pz.q8.140.ij.1e7.jl.yk.117.10i.1tn.1oj.1sv.sj.1e3.2so.1c7.1gv.178.107.10n.1dx.1qi.1wp.2bc.218.16r.105.xc.z6.11w.1mc.1y9.17p.1cs.2ij.18c.1ie.nn.16c.1ce.xb.1ei.3j0.ve.14x.1sx.285.1b8.1at.v4.rv.rs.10z.xq.11o.15k.xq.u1.i2.pu.i4.l3.9u.oh.mc.nm.pw.1i3.1h4.pj.111.l4.lb.qq.qf.u0.h4.nk.yf.6h.ij.ds.oy.re.m8.1gl.cz.16z.a1.1f8.1x6.vp.dz.gp.g6.fr.vl.fr.gg.qc.aj.99.go.ij.fz.11a.x5.mo.1u9.h0.m8.10m.1an.2bc.3uw.2gk.124.xb.1uk.1b6.2xj.1os.11a.vs.1i9.1lr.2gv.265.668.1xg.45j.404.2x1.1io.3om.4q2.4mo.1d4.2bp.1pr.166.2y6.2bv.361.2nc.2bc.3g0.7g4.334.2bc.2xo.3uw.6ic.4ig.3uw.23v.1la.2zr.1jt.1cq.27a.1n1.19x.1qg.1jn.1ca.26y.2d6.4v4.4mo.4mo.7ps.1jk.153.1fo.1dm.1s2.1w1.oe.1lb.319.2eg.58p.4mo.3dw.2y2.2xm.1u8.1ko.12n.1e0.2sd.1md.2cl.1q2.372.4mo.48s.b14.3fu.334.334.34i.4nf.4ji.5eg.3uw.2u8.1g1.110.37x.2jo.su.334.3aj.3uw.63f.2bc.2bc.8v4.1ts.ax5.5du.34d.3oc.34j.4si.174.rt.1rp.2b0.37d.1ta.2gh.28a.22z.1nc.1a5.1pa.4dd.3ha.2cs.5mv.4mq.5c2.3uw.1gf.4md.113.10x.21o.2hj.1b3.1cx.1ol.3ar.1fv.17t.1a7.2uj.2we.1jk"],[50001,"1o8.1k1.mo.1wu.2c9.22d.1kb.23n.1b8.1ic.24c.2wz.1mq.1mu.1jx.1z1.o3.190.vp.1h7.th.4mo.1rp.4mo.4mo.7ps.zz.143.21v.1nf.34s.1s3.r9.18t.s1.r9.21w.277.ls.25k.5v1.2bc.1kh.wt.14i.1eq.15o.668.sh.rl.3wi.3vc.43c.3yn.17c.f5.xu.jg.176.19v.1xy.23m.18x.30c.10l.13k.v8.vp.17t.qj.17m.1wr.1la.8t.s7.18d.1l2.152.mx.1c8.1l4.1f5.1xe.rz.2hz.1et.13t.xb.14r.15o.z0.1zo.ur.257.1gb.li.12d.15a.132.1m1.3vu.296.1mg.11m.z0.159.mp.hd.x4.1go.ns.xh.2a7.tt.2vb.1bx.1kh.u3.11i.1y1.24e.2hp.2mn.1w6.3zm.166.14g.1mo.2v9.2rg.2f9.1r0.139.m1.k3.ys.1dy.29k.1mm.22m.3zx.4dr.2h7.22o.tv.rm.1et.2wv.2ar.1t7.ku.12s.10b.1v9.1gu.12m.1b3.tv.1c8.tk.10s.ul.1tt.ka.oi.qb.13f.13f.13k.17h.1uh.ez.en.2x7.2ln.2h8.3h8.ig.n9.27o.18b.hl.nm.uk.11a.1ta.1k4.1eh.wv.1go.1gg.sc.18u.1dz.2aq.vt.2l7.25h.1l5.1kn.1vc.1b4.28i.17t.1d6.1k2.18z.jy.jw.dh.1mx.fr.vp.35w.34z.35w.34z.4so.vf.yx.1bg.1d3.2yc.1tg.8q3.99g.am.2du.rm.rg.xa.2cw.xc.1j6.1if.18z.13a.yz.142.1z5.262.1bj.1y8.ur.u5.16j.1pf.1bi.l8.1il.3vz.2dr.jo.ls.18s.16l.18c.141.219.1yz.1fc.24t.27e.481.1vp.25h.1yq.1zn.1uw.11u.1jp.1pz.39o.t6.1mj.1u5.11l.1vd.1dk.1zb.1ic.3ql.14p.1wq.25x.267.zn.zn.1pf.13z.1j7.r9.1hb.4yp.1lt.1cw.1z4.19z.1og.1j4.1cl.1eg.u8.16s.1en.zu.1hr.1js.19g.303.22j.2oa.180.1v7.2ud.2d7.21s.3g9.vh.v1.284.3lg.3lg.17q.1h3.4mo.1cm.1rv.22i.2mc.2j3.27o.333.1q8.237.2ll.23b.2sp.2ll.2ox.2cf.2f8.2hz.1uo.y4.s9.w6.2dg.2q9.up.1m1.1vz.2n8.192.1eb.z7.2em.2q3.1sd.1gj.348.3vf.2iu.29x.1dc.7oj.4pq.5vb.4mx.5me.5sf.5yf.7ps.yj.q0.10w.13p.18b.2wd.11q.2vx.dd.iv.12p.jh.u9.1uy.w0.3f0.3bj.126.qo.1gj.11k.pu.22h.1z6.rp.y4.y0.xl.1d0.11s.wa.1a6.127.10m.12r.1nh.1fy.yo.1js.162.n4.174.1aj.y4.o8.qz.rh.qa.18s.mr.j3.ii.sr.sx.1jk.17l.mj.zr.uy.wa.19t.2bt.xe.1od.hs.xr.5b.12c.1ab.we.gz.mz.4y.sf.11s.e0.1l7.ew.h6.jz.l0.e8.1cx.p6.17u.bw.1ah.10r.10e.o9.1bc.uv.lq.tl.zb.100.jy.b8.bj.336.10n.na.sq.14r.yr.nm.123.tf.l1.zp.1xc.1vk.31l.zl.2bj.2b9.2fv.17p.y0.so.1ln.29c.1eh.nh.xn.131.qc.186.ff.fc.xq.1bm.la.l8.14f.243.111.xi.qw.1qn.11v.1ur.1jx.1ks.s9.nz.269.1zj.2zd.1pv.18n.2vk.p3.1fh.13v.1lf.1lu.2db.1sr.1k3.26o.1dl.1f3.187.2lh.166.v9.xh.1e3.119.s2.mt.1iu.1k6.1o2.12s.u4.2br.1q3.qv.1e4.1zu.1v4.1vk.1t3.3p7.1ob.14d.1ns.1ef.1e4.12w.2kk.1ba.2jx.1e0.1s5.12w.17r.14s.wz.1qp.183.3fb.188.1gr.2ot.168.1u7.w8.28o.1zd.32z.230.w7.vq.x8.1qh.19f.14o.2r9.qg.1ey.1qr.1p6.3a3.1ov.13d.tz.wk.22v.1qa.2l9.yw.yf.nw.p6.1ly.1jk.1nh.x9.q0.17r.17h.ux.uw.12y.p7.g7.kt.14c.ze.1kh.1eo.18a.1d8.26j.15k.19f.1ym.1j5.1c6.11k.1sd.1jp.1ws.13s.1o5.214.sx.px.20x.14h.1ja.s6.1q8.w8.1ks.so.ub.121.202.1ej.1g1.1s8.2bc.4t1.bih.3uw.3pb.avp.6c7.bko.5eg.79c.6wh.3wd.4pn.55j.4a5.3gg.bko.5ei.52p.578.bcv.6gr.2bc.4j9.5y7.9d2.2bb.2bc.668.73z.5pg.50f.5m7.788.267.642.8h2.8h2.49s.64g.5e8.5e8.2bb.3ih.5ur.6bk.578.4ck.3sg.5fe.23i.e9w.2b8.5oj.6bw.2al.2rk.2rk.5pj.n6e.350.6v9.70t.639.3uw.3uw.2bg.639.2bb.2bd.6gj.2bh.660.578.3bk.65e.359.3o0.44i.4tn.1zq.5ee.4a5.3zu.rs.639.33q.5eg.1k1.15o.dw.3uw.b7p.7qd.898.4l4.5uu.5uu.b4g.2yh.2yh.3uw.51a.51a.5kk.66f.iq9.3n7.4nb.46a.1wb.20p.bih.8xa.7ps.70t.70t.4rv.5p1.6aq.ts.63z.668.5v2.5nu.563.55s.55s.5p3.2ga.32x.42x.5cr.4c2.71b.5zp.5c2.66t.4c8.2bc.2bc.2gn.3ea.2kp.fz6.8hz.3e8.4an.bko.j7e.jag.7sr.2bc.3zx.7qd.5ut.5jp.2wk.5q7.3uw.334.4i3.3uw.4bd.5eu.46h.4i2.6t4.446.5s7.5cg.4bk.5nd.7bf.4rt.23b.2bc.2bc.2bc.2bc.2ba.4mo.4dv.3wn.2bc.1we.4he.2bc.4gz.3wn.3km.4xy.4hi.4mr.2bc.247.3yj.2c6.2bc.3aj.446.4ub.3uw.51.e0.86.is.i1.hg.mn.m4.2c.7h.sg.e3.jb.7r.eq.nf.u0.60.4o.ke.47.47.47.47.b8.4x.dr.dy.rw.rw.59.8j.5z.a5.l3.c0.ik.f7.li.lr.7x.dv.du.dd.5e.91.1b.ce.cc.59.bh.e6.8m.9n.cl.lt.7ip.4mr.4si.4kf.vo.we.13e.17n.1iw.2pi.lp.r6.gw.7x.xz.qt.bq.ls.q1.eh.bx.cr.3c.j7.b8.fz.4k.8p.bg.5w.iy.j3.12o.rs.cz.dp.yz.jk.63.63.7ps.7ps.7ps.40g.3jp.4tw.89k.88a.7s0.83d.668.7ps.2fw.2ev.2fp.7ps.2jb.2dh.2ud.25i.24c.2bt.1pa.17r.1a7.7ps.7pt.5rg.4nl.3vv.7qo.31a.2p0.2k0.49a.3v4.3nl.1ug.1ug.1l6.7s1.7ps.2cp.2f8.2i7.7ps.28q.2be.275.1ma.1oz.1q7.16s.1iq.1e0.78m.7ps.2bc.2bc.2bc.bko.2wu.2wu.2wu.3b4.38f.3uw.3uw.3uw.3uw.7ps.7qa.32n.2gg.2wk.7rv.1v3.1qq.1rb.1zk.1my.1zp.1yn.1oh.1uh.7st.9q.9q.9q.9q.9q.kk.kk.kk.kk.kk.dw.dp.dw.rs.rs.rs.rs.s4.sd.54j.5n8.2n6.21r.1nu.1o5.14u.t6.3f7.2j0.32c.304.189.1gf.18w.18j.1st.1vq.116.kw.3uw.3uw.vr.zx.xc.tc.7d.7r.9d.9w.8s.9p.3b.3b"]].map(([e,t])=>[e,t.split(".").map(i=>parseInt(i,36)/1e3)]);function Ha(e){if(!Number.isSafeInteger(e))return null;for(let[t,i]of hs)if(e>=t&&e<t+i.length)return i[e-t];return null}var $i=e=>Number.isFinite(Number(e))?Math.max(0,Number(e)):0;function Ka(e,t){if(!e||e.kind!=="image"||e.enableMask!==!0||!t)return null;let i=$i(e.sourceWidth??e.width),n=$i(e.sourceHeight??e.height),r=e.enableSoftEdge===!0,a=e.softEdgeMode!=="Pixel",o=r?$i(e.softEdgeWidthX):0,l=r?$i(e.softEdgeWidthY):0;return{id:e.id,matrix:t,width:i,height:n,featherX:a?i*o/100:o,featherY:a?n*l/100:l}}function qa(e,t,i){let n=Ee(e,t,i);return{a:e.a,b:e.b,c:e.c,d:e.d,tx:n.x,ty:n.y}}import{randomUUID as Za}from"node:crypto";function Vi(e){for(let t of e.runtime.scrollControls||[]){let[i,n]=Wt(t),r=t.kind==="grid"?Tt(t):ja(t,i,n),a={offset:r.offset,max:r.max,horizontal:r.horizontal,showBar:t.showScrollBar!==!1,textWidth:r.textWidth??0,lines:r.lines||[],lineHeight:r.lineHeight||0,contentLength:r.length},o=JSON.stringify(a);t._scrollKey!==o&&(t._scrollKey=o,t._scroll=a,t.markPlayDirty())}}function Qa(e){return{...e._scroll?{scroll:e._scroll}:{},...e.parent?._gridItems?.includes(e)?{clipToParent:!0}:{}}}function $n(e,t){let i=e._scroll?.max||0;e.kind==="grid"?e.scrollProgress=i?Oi(t,i)/i:0:e._scrollOffset=Oi(t,i),e.markPlayDirty()}var ms=Object.freeze(Object.values(te).map(e=>Object.freeze({id:e.id,label:e.label,platform:e.platform,width:e.width,height:e.height})));function Yi(e){Vi(e);let t=ge({width:e.runtime.canvasWidth,height:e.runtime.canvasHeight}),i=new Map;function n(r,a,o){let l=Ge(a,r);l.activeInHierarchy=o&&r.active!==!1,i.set(r.Id,l);let u=l.activeInHierarchy;for(let s of r.children)n(s,l,u)}for(let r of e.runtime.roots)n(r,t,!0);return i}function eo(e,t=Yi(e)){let i=new Map;function n(r,a){let o=t.get(r.Id);if(!o)return;let l=Ut(a,o,r);i.set(r.Id,l);for(let u of r.children)n(u,l)}for(let r of e.runtime.roots)n(r,Ct());return i}function to(e,t){let i=t.get(e.Id);return{id:e.Id,prefabId:e.prefabIndex,authoringId:e.authoringId,name:e.name,kind:e.kind,typeofName:e.typeofName,instantiated:!e.authoringId,active:!!e.active,visible:!!e.visible,activeInHierarchy:!!i?.activeInHierarchy,raycastTarget:e.raycastTarget!==!1,interactable:e.interactable!==!1,pressed:e.pressed===!0,...e._scroll?{scrollOffset:e._scroll.offset,scrollMax:e._scroll.max}:{},...e.kind==="grid"?{itemCount:e.itemCount,scrollProgress:e.scrollProgress}:{},anchoredPositionX:e.anchoredPositionX,anchoredPositionY:e.anchoredPositionY,sizeDeltaX:e.sizeDeltaX,sizeDeltaY:e.sizeDeltaY,localScaleX:e.localScaleX,localScaleY:e.localScaleY,localScaleZ:e.localScaleZ,localRotationZ:e.localRotationZ,text:e.kind==="textbox"||e.kind==="textwindow"?e.text??"":null,fontSize:e.kind==="textbox"||e.kind==="textwindow"?e.fontSize:null,fontColor:e.kind==="textbox"||e.kind==="textwindow"?e.fontColor:null,bgColor:e.kind==="textbox"||e.kind==="textwindow"?e.bgColor:null,enableOutline:e.kind==="textbox"||e.kind==="textwindow"?e.enableOutline===!0:null,outlineColor:e.kind==="textbox"||e.kind==="textwindow"?e.outlineColor:null,imageId:e.kind==="image"?e.imageId??0:null,imageSource:e.kind==="image"?He(e.imageSource):null,imageType:e.kind==="image"?e.imageType==null?null:Pe(e.imageType):null,primitive:e.kind==="image"?It(e.imageId,e.imageSource):null,imageColor:e.kind==="image"?e.imageColor:null,enableMask:e.kind==="image"?e.enableMask===!0:null,enableSoftEdge:e.kind==="image"?e.enableSoftEdge===!0:null,softEdgeMode:e.kind==="image"?e.softEdgeMode:null,softEdgeWidthX:e.kind==="image"?e.softEdgeWidthX:null,softEdgeWidthY:e.kind==="image"?e.softEdgeWidthY:null,horizontalSoftRange:e.kind==="image"?e.horizontalSoftRange:null,verticalSoftRange:e.kind==="image"?e.verticalSoftRange:null,enableFill:e.kind==="image"?e.enableFill===!0:null,fillType:e.kind==="image"?e.fillType:null,fillHorizontalType:e.kind==="image"?e.fillHorizontalType:null,fillVerticalType:e.kind==="image"?e.fillVerticalType:null,fillRadial90Type:e.kind==="image"?e.fillRadial90Type:null,fillRadialType:e.kind==="image"?e.fillRadialType:null,reverseMaskArea:e.kind==="image"?e.reverseMaskArea===!0:null,fillAmount:e.kind==="image"?e.fillAmount:null,box:i?{left:i.left,bottom:i.bottom,width:i.width,height:i.height}:null,children:e.children.map(n=>to(n,t))}}function ps(){return{pointerDownControl:null,pointerDownPosition:null,pointerLastPosition:null,pointerDragging:!1,pointerHoverControl:null,pointerScroll:null,hoveredControl:null,selectedControl:null,stateRestores:new Map,viewCache:null}}function gs(e,t,i,n){let r=ei({canvasWidth:e.canvasWidth,canvasHeight:e.canvasHeight,device:e.device,audioDuration:Ha,canSelectImageType:pr,...n?{language:n}:{}});for(let a of[...e.templates||[],...t?.templates||[]])Number.isSafeInteger(a.prefabIndex)&&a.prefabIndex>0&&r.registerTemplate(a.prefabIndex,a);for(let a of i){let o=a.path||a.id,l=a.source||"";o&&l&&r.registerScriptFile(o,l)}return r}var ys=["pointerDownControl","pointerDownPosition","pointerLastPosition","pointerDragging","pointerHoverControl","pointerScroll","hoveredControl","selectedControl","stateRestores","viewCache"];function bs(e){Object.defineProperty(e,"runtime",{configurable:!0,enumerable:!0,get(){return e.runtimes[e.viewPlayerIndex-1]}});for(let t of ys)Object.defineProperty(e,t,{configurable:!0,enumerable:!0,get(){return e.views[e.viewPlayerIndex-1][t]},set(i){e.views[e.viewPlayerIndex-1][t]=i}})}function io(e,{templatesProject:t=null,scripts:i=[],sceneScripts:n=null,templateScripts:r=null,serverConfig:a=null,canvasId:o="",playerCount:l=1,viewPlayerIndex:u=1,language:s=""}={}){let f=n||i,d=r||i,g=Fn(e,f,o),p=t?Fn(t,d,o):null,m=dt(l),y=Xe(u,m),w=Va({playerCount:m,viewPlayerIndex:y});a&&w.loadConfig({...a,playerCount:m,viewPlayerIndex:y});let _=[];for(let z=0;z<m;z+=1)_.push(gs(g,p,i,s));w.attachRuntimes(_);for(let z of _)z.addRoot(g.root);let C={audioSessionId:Za(),runtimes:_,views:_.map(()=>ps()),playerCount:m,viewPlayerIndex:y,server:w,compiled:g,mountError:_.find(z=>z.mountErrors[0])?.mountErrors[0]||null,debugPaused:!1,history:{events:[]},recording:!0};bs(C);let G=C.viewPlayerIndex;for(let z=1;z<=m;z+=1)C.viewPlayerIndex=z,Ts(C);return C.viewPlayerIndex=G,C}function Yn(e,t){if(!e)throw new Error("play session has not started");let i=Xe(t,e.playerCount);return i===e.viewPlayerIndex||(tt(e,{kind:"view",payload:{playerIndex:i}}),e.viewPlayerIndex=i,e.viewCache=null,e.server&&e.server.setViewPlayerIndex(i)),i}function tt(e,t){!e?.recording||!e.history||Xa(e.history,{...t,source:t.source||"user"},e.runtime.clock.time)}function vs(e){return e?.history?.events||[]}var Bn=new Set(["image","textbox","textwindow","button","grid"]);function Ss(e,t){let i=Ee(t,e.centerX,e.centerY);return{centerX:i.x,centerY:i.y,scaleX:Math.hypot(t.a,t.b),scaleY:Math.hypot(t.c,t.d),rotationZ:Math.atan2(t.b,t.a)*180/Math.PI,matrix:{a:t.a,b:t.b,c:t.c,d:t.d,tx:i.x,ty:i.y}}}function Pe(e){return typeof e=="string"?e:e?.Name}function no(e){return{fillType:Pe(e.fillType),fillHorizontalType:Pe(e.fillHorizontalType),fillVerticalType:Pe(e.fillVerticalType),fillAmount:e.fillAmount}}function Is(e,t,i){let n=Math.abs(t.width*i.scaleX),r=Math.abs(t.height*i.scaleY),a={id:e.Id,kind:e.kind,name:e.name,left:i.centerX-n/2,bottom:i.centerY-r/2,width:n,height:r,sourceWidth:t.width,sourceHeight:t.height,rotationZ:i.rotationZ,matrix:i.matrix,pressed:e.pressed===!0,...Qa(e)};return e.kind==="image"&&(a.imageSource=He(e.imageSource),a.imageType=e.imageType==null?null:Pe(e.imageType),a.primitive=It(e.imageId,a.imageSource),a.imageColor=e.imageColor,a.imageId=e.imageId,Object.assign(a,no(e))),(e.kind==="textbox"||e.kind==="textwindow")&&(a.text=e.text??"",a.fontSize=e.fontSize,a.fontColor=e.fontColor,a.bgColor=e.bgColor,a.enableOutline=e.enableOutline===!0,a.outlineColor=e.outlineColor,a.horizontalAlignment=Pe(e.horizontalAlignment),a.verticalAlignment=Pe(e.verticalAlignment)),a}function ws(e,t=Yi(e)){let i=[],n=eo(e,t);function r(a,o=[],l=[]){let u=t.get(a.Id);if(!u||a.visible===!1||!u.activeInHierarchy)return;let s=n.get(a.Id);if(!s)return;let f=Ss(u,s),d=a.kind==="image"&&a.enableMask===!0?Ka({...ro(a,u),id:a.Id},qa(s,u.centerX,u.centerY)):null,g=d?[...l,d]:l,p=()=>i.push({...Is(a,u,f),...o.length?{clipPolygons:o}:{},...g.length?{masks:g}:{}});Bn.has(a.kind)&&a.kind!=="grid"&&p();let m=a.children||[];for(let y=m.length-1;y>=0;y-=1){let w=a._gridItems?.includes(m[y])?[...o,[[u.left,u.bottom],[u.right,u.bottom],[u.right,u.top],[u.left,u.top]].map(([_,C])=>Ee(s,_,C))]:o;r(m[y],w,g)}a.kind==="grid"&&p()}for(let a of e.runtime.roots)r(a);return i}function ro(e,t){let i={kind:e.kind,name:e.name,sourceWidth:t.width,sourceHeight:t.height,pressed:e.pressed===!0,...Qa(e)};return e.kind==="image"&&(i.imageSource=He(e.imageSource),i.imageType=e.imageType==null?null:Pe(e.imageType),i.primitive=It(e.imageId,i.imageSource),i.imageColor=e.imageColor,i.imageId=e.imageId,Object.assign(i,no(e),{enableMask:e.enableMask===!0,enableSoftEdge:e.enableSoftEdge===!0,softEdgeMode:Pe(e.softEdgeMode)||"Percentage",softEdgeWidthX:e.softEdgeWidthX,softEdgeWidthY:e.softEdgeWidthY})),(e.kind==="textbox"||e.kind==="textwindow")&&(i.text=e.text??"",i.fontSize=e.fontSize,i.fontColor=e.fontColor,i.bgColor=e.bgColor,i.enableOutline=e.enableOutline===!0,i.outlineColor=e.outlineColor,i.horizontalAlignment=Pe(e.horizontalAlignment),i.verticalAlignment=Pe(e.verticalAlignment)),i}function Cs(e,t,i){let n=Li(e,t),r=Ee(n,e.centerX,e.centerY);return{a:n.a,b:n.b,c:n.c,d:n.d,tx:r.x-(i?i.centerX:0),ty:r.y-(i?i.centerY:0)}}function ao(e){let t=e.matrix;return[e.parent,e.z,e.group?1:0,t.a,t.b,t.c,t.d,t.tx,t.ty,e.kind,e.name,e.sourceWidth,e.sourceHeight,e.pressed,e.primitive,e.imageColor,e.imageId,e.imageSource,e.imageType,e.fillType,e.fillHorizontalType,e.fillVerticalType,e.fillAmount,e.enableMask,e.enableSoftEdge,e.softEdgeMode,e.softEdgeWidthX,e.softEdgeWidthY,e.text,e.fontSize,e.fontColor,e.bgColor,e.enableOutline,e.outlineColor,e.horizontalAlignment,e.verticalAlignment,JSON.stringify(e.scroll),e.clipToParent].join(" ")}function oo(e,t,i,n,r,a){return{id:e.Id,parent:t,z:r,group:a>=16,matrix:Cs(n,e,i),...ro(e,n)}}function xs(e){let t=ge({width:e.runtime.canvasWidth,height:e.runtime.canvasHeight}),i=new Set,n=new Map,r=new Map;function a(u,s,f){let d=Ge(s,u);if(d.activeInHierarchy=f&&u.active!==!1,r.set(u.Id,d),u.visible===!1||!d.activeInHierarchy)return!1;let g=u.children||[],p=Bn.has(u.kind),m=0;for(let y=0;y<g.length;y+=1)a(g[y],d,d.activeInHierarchy)&&(p=!0,m+=1);return p?(i.add(u.Id),n.set(u.Id,m),!0):!1}function o(u,s,f,d){if(!i.has(u.Id))return;let g=r.get(u.Id);l.push(oo(u,s,f,g,d,n.get(u.Id)||0));let p=u.children||[];for(let m=0;m<p.length;m+=1)o(p[m],u.Id,g,m)}let l=[];for(let u=0;u<e.runtime.roots.length;u+=1)a(e.runtime.roots[u],t,!0),o(e.runtime.roots[u],null,null,u);return{nodes:l,childCounts:n}}function Gn(e){let t=e._playChildDirty===!0||e._playDeepDirty===!0;if(e._playDirty=!1,e._playChildDirty=!1,e._playDeepDirty=!1,!t)return;let i=e.children;for(let n=0;n<i.length;n+=1)Gn(i[n])}function ks(e,t){let i=ge({width:e.runtime.canvasWidth,height:e.runtime.canvasHeight}),n=[],r=[],a=t.count,o=e.runtime._playRemoved||[];for(let s=0;s<o.length;s+=1){let f=o[s];t.fingerprints.has(f)&&(r.push(f),t.fingerprints.delete(f),t.childCounts.delete(f),a-=1)}e.runtime._playRemoved=[];function l(s){t.fingerprints.has(s.Id)&&(r.push(s.Id),t.fingerprints.delete(s.Id),t.childCounts.delete(s.Id),a-=1);let f=s.children;for(let d=0;d<f.length;d+=1)l(f[d])}function u(s,f,d,g,p,m){let y=m||s._playDeepDirty===!0,w=y||s._playDirty===!0,_=y||s._playChildDirty===!0;if(!w&&!_)return;if(!(p&&s.active!==!1)||s.visible===!1){l(s);return}let G=Ge(f,s),z=t.childCounts.get(s.Id)||0;if(_){z=0;let E=s.children;for(let S=0;S<E.length;S+=1)u(E[S],G,s.Id,S,!0,y),t.fingerprints.has(E[S].Id)&&(z+=1)}if(!(Bn.has(s.kind)||z>0)){t.fingerprints.has(s.Id)&&(r.push(s.Id),t.fingerprints.delete(s.Id),t.childCounts.delete(s.Id),a-=1);return}let ie=t.childCounts.get(s.Id);t.childCounts.set(s.Id,z);let L=z>=16!=(ie||0)>=16;if(!w&&!L&&t.fingerprints.has(s.Id))return;let O=oo(s,d,f===i?null:f,G,g,z),v=ao(O);t.fingerprints.get(O.id)!==v&&(t.fingerprints.has(O.id)||(a+=1),t.fingerprints.set(O.id,v),n.push(O))}for(let s=0;s<e.runtime.roots.length;s+=1)u(e.runtime.roots[s],i,null,s,!0,!1);return t.count=a,{changed:n,removed:r,count:a}}function Es(e,t){let i=e.viewCache||(e.viewCache={rev:0,fingerprints:new Map,childCounts:new Map,count:0}),n=Number(t);if(!(Number.isFinite(n)&&n===i.rev&&i.fingerprints.size>0)){let{nodes:u,childCounts:s}=xs(e);i.rev+=1,i.fingerprints=new Map(u.map(f=>[f.id,ao(f)])),i.childCounts=s,i.count=u.length;for(let f of e.runtime.roots)Gn(f);return{format:"tree-v1",revision:i.rev,reset:!0,count:u.length,nodes:u}}let{changed:a,removed:o,count:l}=ks(e,i);i.rev+=1;for(let u of e.runtime.roots)Gn(u);return{format:"tree-v1",revision:i.rev,reset:!1,count:l,changed:a,removed:o}}function Xn(e,{inspect:t=!1,view:i=!1,paint:n=!1,sceneRev:r,compact:a=!1}={}){Vi(e),e.audioSessionId||=Za();let o=e.runtime,l=e.compiled,[u,s]=[o.canvasWidth,o.canvasHeight];e.server&&e.server.setClock(o.clock.time);let f=a?o.logs.slice(-100):o.logs,d=vs(e),g=e.server?e.server.snapshot():{vars:{},inbound:[],outbound:[],logs:[]};a&&(g.inbound=g.inbound.slice(-100),g.outbound=g.outbound.slice(-100),g.logs=g.logs.slice(-100));let p={canvasId:l.canvasId,platform:l.platform,device:o.device,canvasWidth:u,canvasHeight:s,canvasPresets:ms,playerCount:e.playerCount||1,viewPlayerIndex:e.viewPlayerIndex||1,players:Array.from({length:e.playerCount||1},(m,y)=>({index:y+1,label:`\u73A9\u5BB6${y+1}`,entityType:`Player${y+1}`})),time:o.clock.time,frame:o.clock.frame,paused:!!e.debugPaused,levelTimePaused:!!o.clock.paused,audio:{sessionId:e.audioSessionId,playerIndex:e.viewPlayerIndex||1,...o.audioSnapshot()},mountError:e.mountError||o.mountErrors[0]||null,logs:f.map(m=>({source:"client",level:m.level,text:m.text,time:m.time})),tree:[],paint:[],scene:null,server:g,history:(a?d.slice(-100):d).map(m=>({t:m.t,source:m.source||"user",kind:m.kind,payload:m.payload||{}}))};if(t||n){let m=Yi(e);t&&(p.tree=o.roots.map(y=>to(y,m))),n&&(p.paint=ws(e,m))}return i&&(p.scene=Es(e,r)),wt(p),p}function Bi(e,t=1/30){let i=e.runtimes||(e.runtime?[e.runtime]:[]);for(let n of i)n.step(t);e.server&&(e.server.setClock(e.runtime.clock.time),e.server.flush())}function Un(e,t){tt(e,{kind:"key",payload:{typeName:String(t)}}),e.runtime.injectKey(t)}function As(e,t){let i=null;for(let n of e.runtime.roots)ze(n,r=>{!i&&r.name===t&&(i=r)});return i}function jn(e,t){tt(e,{kind:"click",payload:{name:String(t)}});let i=As(e,t);i&&Hn(i)&&(i.kind==="button"||i.kind==="cursor")&&i.SimulateCursorClick()}function _s(e,t){return!e||!t?null:e.children.find(i=>i.authoringId===t||i.Id===t)||null}var lo={unavailable:"unavailableChildId",hover:"hoverChildId",pressed:"pressedChildId",selected:"selectedChildId"};function so(e,t){let i=[];for(let[n,r]of Object.entries(lo)){let a=t[r]?_s(t,t[r]):null;a&&i.push({state:n,child:a})}return i}function Ts(e){for(let t of e.runtime.roots)ze(t,i=>{if(i.kind==="button"){for(let{child:n}of so(e,i))e.stateRestores.has(n.Id)||e.stateRestores.set(n.Id,{child:n,active:n.active,visible:n.visible}),n.active=!0,n.visible=!1,typeof n.markPlayDirty=="function"&&n.markPlayDirty(!0);oi(e,i)}})}function oi(e,t){if(!t||t.kind!=="button")return;let i=null;t.interactable===!1?i="unavailable":t.pressed===!0?i="pressed":e.hoveredControl===t?i="hover":e.selectedControl===t&&(i="selected");for(let n of so(e,t))n.child.active=!0,n.child.visible=n.state===i,typeof n.child.markPlayDirty=="function"&&n.child.markPlayDirty(!0)}function Dn(e){if(!e)return null;let t=e.parent;return t?.kind==="button"&&Object.values(lo).map(n=>t[n]).filter(Boolean).includes(e.authoringId)?t:e}function Hn(e){return e.kind==="button"?e.raycastTarget!==!1&&e.interactable!==!1:e.kind==="cursor"||e.kind==="grid"?e.raycastTarget!==!1:e.kind==="textwindow"?e.interactable!==!1:e.raycastTarget===!0}function uo(e){return e.kind==="container"||e.kind==="grid"||e.kind==="textwindow"||e.kind==="reference"||e.kind==="button"}function co(e,t){let i=e.Id,n=t.get(i);if(n!==void 0)return n;let r=Hn(e);if(!r&&uo(e)){let a=e.children;for(let o=0;o<a.length;o+=1)if(co(a[o],t)){r=!0;break}}return t.set(i,r),r}function Di(e,t,i){Vi(e);let n=ge({width:e.runtime.canvasWidth,height:e.runtime.canvasHeight}),r=new Map;function a(l,u,s,f){if(!f||l.active===!1||l.visible===!1||!co(l,r))return null;let d=Ge(u,l),g=Ut(s,d,l),p=xt(g);if(!p)return null;let m=Ee(p,t,i);if(m.x<d.left||m.x>d.right||m.y<d.bottom||m.y>d.top)return null;if(Gi(l)){let y=zi(l._scroll,d.width,d.height)?.track,w=m.x-d.centerX,_=d.centerY-m.y;if(y&&w>=y.x&&w<=y.x+y.width&&_>=y.y&&_<=y.y+y.height)return l}if(uo(l))for(let y=0;y<l.children.length;y+=1){let w=a(l.children[y],d,g,!0);if(w)return w}return Hn(l)?l:null}let o=Ct();for(let l=e.runtime.roots.length-1;l>=0;l-=1){let u=a(e.runtime.roots[l],n,o,!0);if(u)return u}return null}function Nt(e,t,i,{dragging:n=!1,press:r=null,previous:a=null}={}){let o=r||{x:t,y:i},l=a||{x:t,y:i};return e.runtime.makeCursorEventData({x:t,y:i,pressX:o.x,pressY:o.y,deltaX:t-l.x,deltaY:i-l.y,dragging:n})}function Vn(e,t,i){t.kind==="grid"||t.kind==="textwindow"||(t.pressed=i,typeof t.markPlayDirty=="function"&&t.markPlayDirty(),oi(e,t))}function Gi(e){if(!e?.alive||!e.activeInHierarchy||e.interactable===!1||e.raycastTarget===!1)return!1;for(let t=e;t;t=t.parent)if(t.visible===!1)return!1;return e._scroll?.max>0}function La(e){for(let t=e;t;t=t.parent)if(Gi(t))return t;return null}function Wa(e,t,i,n){let r=Yi(e),a=r.get(t.Id),o=eo(e,r).get(t.Id),l=o&&xt(o);if(!a||!l)return null;let u=Ee(l,i,n);return{x:u.x-a.centerX,y:a.centerY-u.y,width:a.width,height:a.height}}function Ja(e,t,i){let n=e.pointerDownControl;if(n?.alive){let r=Nt(e,t,i,{dragging:e.pointerDragging,press:e.pointerDownPosition,previous:e.pointerLastPosition});e.runtime.injectCursor(n,"CursorUp",r),e.pointerDragging&&!e.pointerScroll&&e.runtime.injectCursor(n,"CursorEndDrag",r),Vn(e,n,!1)}e.pointerDownControl=null,e.pointerScroll=null,e.pointerDownPosition=null,e.pointerDragging=!1,e.pointerLastPosition={x:t,y:i}}function li(e,t,i,n,r={}){let a=Number(i),o=Number(n);if(!Number.isFinite(a)||!Number.isFinite(o))throw new Error("pointer coordinates must be finite");e.runtime.cursor.x=a,e.runtime.cursor.y=o;let l=Number(r.deltaX??0),u=Number(r.deltaY??0);if(t==="wheel"&&(!Number.isFinite(l)||!Number.isFinite(u)))throw new Error("wheel deltas must be finite");if(r.silent||tt(e,{kind:"pointer",payload:{type:t,x:a,y:o,...t==="wheel"?{deltaX:l,deltaY:u}:{}}}),t==="wheel"){let s=Di(e,a,o),f=La(s);if(f){let d=f._scroll.horizontal&&l||u;$n(f,f._scroll.offset+d)}return s}if(t==="cancel")return Ja(e,a,o),null;if((t==="move"||t==="up")&&e.pointerScroll&&!Gi(e.pointerScroll.control)&&Ja(e,a,o),t==="move"){let s=e.pointerLastPosition||{x:a,y:o},f=e.pointerHoverControl,d=Dn(Di(e,a,o)),g=Nt(e,a,o,{previous:s});f&&f!==d&&e.runtime.injectCursor(f,"CursorExit",g),d&&f!==d&&e.runtime.injectCursor(d,"CursorEnter",g),e.pointerHoverControl=d;let p=e.hoveredControl;e.hoveredControl=d?.kind==="button"?d:null,p&&p!==e.hoveredControl&&oi(e,p),e.hoveredControl&&oi(e,e.hoveredControl);let m=e.pointerDownControl,y=e.pointerScroll;if(y)if(!Gi(y.control))e.pointerScroll=null;else{let w=Wa(e,y.control,a,o);if(w){let _=y.control._scroll,C=_.horizontal?w.x-y.start.x:w.y-y.start.y,G=zi(_,w.width,w.height)?.travel||0,z=y.bar?G?C*_.max/G:0:-C;$n(y.control,y.offset+z)}}if(m?.alive){let w=e.pointerDownPosition||s,_=a!==s.x||o!==s.y;!e.pointerDragging&&_&&(y||e.runtime.injectCursor(m,"CursorBeginDrag",Nt(e,a,o,{press:w,previous:s,dragging:!1})),e.pointerDragging=!0),e.pointerDragging&&!y&&e.runtime.injectCursor(m,"CursorDrag",Nt(e,a,o,{press:w,previous:s,dragging:!0}))}return e.pointerLastPosition={x:a,y:o},d}if(t==="down"){let s=Dn(Di(e,a,o));e.pointerDownControl=s,e.pointerDownPosition={x:a,y:o},e.pointerLastPosition={x:a,y:o},e.pointerDragging=!1,e.pointerScroll=null;let f=La(s);if(f){let d=Wa(e,f,a,o),g=d&&zi(f._scroll,d.width,d.height),p=y=>d.x>=y.x&&d.x<=y.x+y.width&&d.y>=y.y&&d.y<=y.y+y.height,m=g&&p(g.track);if(m&&!p(g.thumb)){let y=f._scroll.horizontal?d.x-g.track.x-g.thumb.width/2:d.y-g.track.y-g.thumb.height/2;$n(f,g.travel?y/g.travel*f._scroll.max:0),Vi(e)}d&&(e.pointerScroll={control:f,start:d,offset:f._scroll.offset,bar:!!m})}return s&&(Vn(e,s,!0),e.runtime.injectCursor(s,"CursorDown",Nt(e,a,o))),s}if(t==="up"){let s=e.pointerDownControl,f=Dn(Di(e,a,o));if(s?.alive){let d=Nt(e,a,o,{press:e.pointerDownPosition,previous:e.pointerLastPosition,dragging:e.pointerDragging});if(e.runtime.injectCursor(s,"CursorUp",d),e.pointerDragging)e.pointerScroll||e.runtime.injectCursor(s,"CursorEndDrag",d);else if(f===s&&!e.pointerScroll?.bar){e.runtime.injectCursor(s,"CursorClick",d);let g=e.selectedControl;e.selectedControl=s.kind==="button"?s:null,g&&g!==e.selectedControl&&oi(e,g)}Vn(e,s,!1)}return e.pointerDownControl=null,e.pointerDownPosition=null,e.pointerLastPosition={x:a,y:o},e.pointerDragging=!1,e.pointerScroll=null,f}if(t==="click")return li(e,"down",a,o,{silent:!0}),li(e,"up",a,o,{silent:!0});throw new Error(`unknown pointer type ${t}`)}function Kn(e,t,i,n){if(!e?.server)throw new Error("play session has no server");return tt(e,{kind:"serverSet",payload:{entityType:t,name:i,value:n,playerIndex:e.viewPlayerIndex}}),e.server.setVar(t,i,n,{playerIndex:e.viewPlayerIndex})}function fo(e,t,i){if(!e?.server)throw new Error("play session has no server");let n=e.server.getVar(t,i,{playerIndex:e.viewPlayerIndex});return n===void 0?null:n}function qn(e,t,i=[],n="PlayerSelf"){if(!e?.server)throw new Error("play session has no server");return tt(e,{kind:"serverSend",payload:{name:t,params:i,target:n,playerIndex:e.viewPlayerIndex}}),e.server.sendToClient(t,i,{target:n,playerIndex:e.viewPlayerIndex})}function Xi(e){return{snapshot:t=>Xn(e,t),step:t=>Bi(e,t),pointer:(t,i,n,r)=>li(e,t,i,n,r),key:t=>Un(e,t),click:t=>jn(e,t),view:t=>Yn(e,t),pause:()=>{tt(e,{kind:"pause",payload:{}}),e.debugPaused=!0},resume:()=>{tt(e,{kind:"resume",payload:{}}),e.debugPaused=!1},serverSet:(t,i,n)=>Kn(e,t,i,n),serverSend:(t,i,n)=>qn(e,t,i,n)}}function Ln(e){e?.server&&e.server.destroy();let t=e?.runtimes||(e?.runtime?[e.runtime]:[]);for(let i of t)i.destroy()}function Wn(e,t){return JSON.stringify(e)===JSON.stringify(t)}function ho(e,t){for(let i of e||[])t(i),i.children?.length&&ho(i.children,t)}function Jn(e,{id:t,name:i}){let n=null;return ho(e,r=>{n||(t&&String(r.id)===String(t)||!t&&i&&r.name===i)&&(n=r)}),n}function Ps(e,t){if(e){if(Object.prototype.hasOwnProperty.call(e,t))return e[t];if(e.box&&Object.prototype.hasOwnProperty.call(e.box,t))return e.box[t]}}function Rs(e){return{var(t,i){return e.server?.vars?.[t]?.[i]?.value??null},logs(){return(e.logs||[]).map(t=>t.text)},logContains(t){return(e.logs||[]).some(i=>String(i.text||"").includes(String(t)))},serverLogs(){return(e.server?.logs||e.serverLogs||[]).map(t=>t.text)},serverLogContains(t){return(e.server?.logs||e.serverLogs||[]).some(i=>String(i.text||"").includes(String(t)))},control(t){let i=Jn(e.tree,{name:String(t)});return i?{id:i.id,name:i.name,kind:i.kind,active:i.active,visible:i.visible,pressed:i.pressed,text:i.text,interactable:i.interactable}:null},signals(t){let i=t==="outbound"?"outbound":"inbound";return(e.server?.[i]||[]).map(n=>({name:n.name,values:n.values}))}}}function Ms(e,t){if(e.kind==="log"){let i=e.source==="server"?t.server?.logs||t.serverLogs||[]:t.logs||[];return i.some(r=>e.level&&r.level!==e.level?!1:String(r.text||"").includes(e.contains))?{ok:!0,actual:e.contains}:{ok:!1,actual:i.map(r=>r.text).slice(-8),expected:e.contains}}if(e.kind==="control"){let i=Jn(t.tree,e);if(!i)return{ok:!1,actual:null,expected:e.equals,message:`control not found: ${e.id||e.name}`};let n=Ps(i,e.field);return Wn(n,e.equals)?{ok:!0,actual:n}:{ok:!1,actual:n,expected:e.equals}}if(e.kind==="var"){let i=t.server?.vars?.[e.entityType],r=!i||!Object.prototype.hasOwnProperty.call(i,e.name)?null:i[e.name].value;return Wn(r,e.equals)?{ok:!0,actual:r}:{ok:!1,actual:r,expected:e.equals}}if(e.kind==="signal"){let i=e.direction==="outbound"?t.server?.outbound||[]:t.server?.inbound||[],n=i.find(r=>r.name===e.name&&(e.values===void 0||Wn(r.values,e.values)));return n?{ok:!0,actual:n.values}:{ok:!1,actual:i.map(r=>({name:r.name,values:r.values})),expected:{name:e.name,values:e.values??null}}}if(e.kind==="tree"){let i=!!Jn(t.tree,{name:e.name});return i===e.exists?{ok:!0,actual:i}:{ok:!1,actual:i,expected:e.exists}}return{ok:!1,message:`unsupported assert kind ${e.kind}`}}function Ns(e,t){let i=ei();try{return i.evalQueryScript(e,Rs(t)),{ok:!0,actual:!0}}catch(n){return{ok:!1,message:n?.message||String(n)}}finally{i.destroy()}}function mo(e,t){return e.kind==="lua"?Ns(e.source,t):Ms(e,t)}function Fs(e,t){let i=t>0?t:pt;return Math.round((e+i)*1e9)/1e9}function Os(e,t){let i=t.payload||{};if(t.kind==="pointer")e.pointer(i.type,i.x,i.y,i);else if(t.kind==="key")e.key(i.typeName);else if(t.kind==="click")e.click(i.name);else if(t.kind==="pause")e.pause();else if(t.kind==="resume")e.resume();else if(t.kind==="serverSet")e.serverSet(i.entityType,i.name,i.value);else if(t.kind==="serverSend")e.serverSend(i.name,i.params,i.target);else if(t.kind==="view")e.view(i.playerIndex);else throw new Error(`unsupported event kind: ${t.kind}`)}function zs(e,t){let i=mo(e,t);return{kind:e.kind,at:Number(e.at||0),ok:!!i.ok,actual:i.actual??null,expected:i.expected??null,message:i.message||""}}function po(e,t){let i=ai(t),n=i.events.slice().sort((_,C)=>_.t-C.t),r=i.asserts.slice(),a=i.dt||pt,o=n.reduce((_,C)=>Math.max(_,C.t),0),l=r.reduce((_,C)=>Math.max(_,Number(C.at||0)),0),u=Math.max(o,l),s=0,f=[],d=0,g=r.some(_=>_.kind==="control"||_.kind==="tree"||_.kind==="lua"),p=e.snapshot({inspect:g}),m=()=>{for(;s<n.length&&n[s].t<=d+1e-9;)Os(e,n[s]),s+=1,p=e.snapshot({inspect:g})},y=()=>{for(let _ of r)if(!_._done&&Number(_.at||0)<=d+1e-9){let C=zs(_,p);if(f.push(C),_._done=!0,!C.ok)return{passed:!1,failedAt:d,frame:p.frame||0,results:f,snapshot:p}}return null};m();let w=y();if(w)return Zn(i,w);for(;d+1e-9<u;){e.step(a),d=Fs(d,a),p=e.snapshot({inspect:g}),m();let _=y();if(_)return Zn(i,_)}return Zn(i,{passed:f.every(_=>_.ok),failedAt:null,frame:p.frame||0,results:f,snapshot:p})}function Zn(e,t){return D({format:e.format,name:e.name,passed:t.passed,failedAt:t.failedAt,frame:t.frame,results:t.results,snapshot:{time:t.snapshot?.time??0,frame:t.snapshot?.frame??0,logs:t.snapshot?.logs||[],serverLogs:t.snapshot?.serverLogs||t.snapshot?.server?.logs||[],server:t.snapshot?.server||{vars:{},inbound:[],outbound:[],logs:[]}}})}function Qn(e){return Array.isArray(e)?e.slice():[]}var Bs={Level:"\u5173\u5361",PlayerSelf:"\u5F53\u524D\u73A9\u5BB6",AvatarSelf:"\u5F53\u524D\u89D2\u8272",...Object.fromEntries(ht.map((e,t)=>[e,`\u73A9\u5BB6${t+1}`])),...Object.fromEntries(Array.from({length:8},(e,t)=>[`Avatar${t+1}`,`\u89D2\u8272${t+1}`]))};function Xs(e,t=1){let i=e?.vars||{},n=[],r=Number(t)>0?Number(t):1,a=["Level","PlayerSelf","AvatarSelf"];if(r>1)for(let l=1;l<=r;l+=1)a.push(`Player${l}`,`Avatar${l}`);let o=new Set;for(let l of a){if(o.has(l)||!i[l])continue;o.add(l);let u=i[l]||{};for(let s of Object.keys(u))n.push(D({entityType:l,entityLabel:Bs[l]||l,name:s,type:u[s]?.type||"",value:u[s]?.value??null}))}return n}var yt="qxqy-simulator-save",Us="qxqy-simulator-scripts",ae="server-control-template",X="client-control-template",er={[ae]:"\u670D\u52A1\u5668\u63A7\u4EF6\u6A21\u677F",[X]:"\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F"};function gt(e){return e===X?"client":"server"}function Ui(e){if(!(typeof e=="number"||typeof e=="string"&&/^\d+$/.test(e.trim()))||!Ae(e))throw new Error("\u63A7\u4EF6\u7D22\u5F15\u5FC5\u987B\u662F 1\u20132147483647 \u8303\u56F4\u5185\u7684\u6574\u6570");return Number(e)}function tr(e=[]){if(!Array.isArray(e))throw new Error("controlGuidChanges \u5FC5\u987B\u662F\u6570\u7EC4");let t=new Set;return e.map(i=>{if(!i||typeof i.id!="string"||!i.id||t.has(i.id)||![ae,X].includes(i.controlAsset)||typeof i.controlId!="string"||!i.controlId||typeof i.controlName!="string")throw new Error("controlGuidChanges \u5305\u542B\u65E0\u6548\u6216\u91CD\u590D\u7684\u53D8\u66F4\u8BB0\u5F55");return t.add(i.id),{id:i.id,controlAsset:i.controlAsset,controlId:i.controlId,controlName:i.controlName,oldGuid:Ui(i.oldGuid),newGuid:Ui(i.newGuid)}})}function js(e){let t=[e?.guid,e?.id];for(let i of t){let n=Number(i);if(Number.isSafeInteger(n)&&n>0&&n<=2147483647)return n}return 0}function ji(e){let t=String(e?.controlAsset||""),i=js(e);return{id:String(i||e?.id||""),guid:i,path:String(e?.path||""),source:String(e?.source||""),controlId:String(e?.controlId||""),controlAsset:t===X||t==="client"?X:t===ae||t==="server"?ae:""}}function Hs(e){let t=[],i=(n,r="")=>{if(n&&(n.path||n.source)){let a=ji(n);t.push(r?{...a,controlAsset:r}:a)}};if(Array.isArray(e?.assets?.scripts)){for(let n of e.assets.scripts)n&&(n.path||n.source)&&t.push(ji(n));return t}if(i(e?.assets?.server?.script,ae),i(e?.assets?.client?.script,X),e&&e.format!==yt){i(e?.script);for(let n of e?.scripts||[])i(n)}return t}function ir(e){return Qe(e===X?Et():st())}var Ks="\u672A\u7ED1\u5B9A",Ft="\u672A\u547D\u540D\u5B58\u6863",qs="\u672A\u547D\u540D\u754C\u9762";function Ls(e){let t=e;for(let i=0;i<8;i++){if(si(go(t,"simulator","studio"))&&si(go(t,"lua")))return t;let n=Vs(t);if(n===t)break;t=n}return e}function Ws(e){return e?{name:Ot(e),path:e,bound:!0}:{name:Ks,path:"",bound:!1}}function Js(e,t=process.cwd()){if(Ys(e)&&si(e))return e;let i=t||process.cwd(),n=Ls(i),r=yo(n,e);if(si(r))return r;let a=yo(i,e);if(si(a))return a;throw new Error("script file not found: "+e)}function nr(e,t={}){e?.format===yt&&yn(e.version);let i=[],n=typeof t.workspacePath=="string"&&t.workspacePath?t.workspacePath:"",r=e?.format===yt&&e.assets,a=tr(e?.controlGuidChanges),o=Ki(e?.scriptSync),l=r?null:Qe(e,{warnings:i}),u={server:r&&e.assets.server?Qe(e.assets.server,{warnings:i}):ir(ae),client:r&&e.assets.client?Qe(e.assets.client,{warnings:i}):ir(X)};l&&(u[gt(l.meta.assetType)]=l);let s=r&&e.activeAssetType===X?X:l?.meta.assetType||ae,f=r&&e.meta?.name?String(e.meta.name):"",d=()=>f||Ft;!e?.meta?.name&&u.server.meta.name==="\u672A\u547D\u540D\u754C\u9762\u63A7\u4EF6\u7EC4"&&(u.server.meta.name=qs);let g=[],p=new Set;function m(){p.clear(),kt(u.server.root,p),kt(u.client.root,p,{skipServerContainer:!0});for(let h of g)Ae(h.guid)&&p.add(Number(h.guid))}function y(h=0){m();let b=Ae(h)&&!p.has(Number(h))?Number(h):qe(p);return p.add(b),b}function w(h){let b=ji(h),I=y(b.guid);return{...b,guid:I,id:String(I)}}je(Hs(e));let _=ri(e?.serverLogic),C=null,G="",z=1,Z=1;function ie(h){let b=String(h||"").trim();if(!b)return"";if(!te[b])throw new Error(`unknown canvas preset: ${b} (available: ${Object.keys(te).join(", ")})`);return b}let L=()=>u[gt(s)];function O(h){if(!h)return null;for(let[b,I]of[["server",u.server],["client",u.client]]){let P=ce(I.root,h);if(P&&P.kind!=="server-container")return{key:b,node:P}}return null}function v(h){if(!h.controlId)return null;let b=h.controlAsset===X?"client":h.controlAsset===ae?"server":null;if(b){let I=ce(u[b].root,h.controlId);return I&&I.kind!=="server-container"?{key:b,node:I}:null}return O(h.controlId)}function E(){for(let h of g)h.controlId&&!v(h)&&(h.controlId="",h.controlAsset="")}function S(h){if(!Ae(h))return null;for(let[b,I]of[[ae,u.server],[X,u.client]]){let P="";if(W(I.root,M=>{!P&&(M.scriptMappingIds||[]).includes(Number(h))&&(P=M.id)}),P)return{controlId:P,controlAsset:b}}return null}function x(h,b,I){let P=u[gt(h.controlAsset)],M=P&&ce(P.root,h.controlId);M&&(M.scriptMappingIds=(M.scriptMappingIds||[]).map(N=>Number(N)===Number(b)?Number(I):N))}E();function F(){return g.map(h=>{let b=v(h),I=b?b.key==="client"?X:ae:"";return D({id:h.id,guid:h.guid||0,path:h.path||"",source:h.source||"",controlId:h.controlId||"",controlAsset:h.controlAsset||I,controlName:b?.node.name||"",assetType:I,assetLabel:b?er[I]:"",mounted:!!b})})}function k(){let h=[],b=(I,P)=>{W(I.root,M=>{M.kind!=="server-container"&&h.push(D({id:M.id,name:M.name,kind:M.kind,assetType:P,assetLabel:er[P]}))})};return b(u.server,ae),b(u.client,X),h}function A(h){let b=[];return W(h.root,I=>{I.kind!=="server-container"&&b.push(JSON.stringify({kind:I.kind,guid:I.guid,name:I.name,text:I.text??null,imageId:I.imageId??null,imageSource:I.imageSource??null,imageType:I.imageType??null,fontSize:I.fontSize??null,fontColor:I.fontColor??null,bgColor:I.bgColor??null,imageColor:I.imageColor??null,fillType:I.fillType??null,fillAmount:I.fillAmount??null,syncAllDevices:I.syncAllDevices!==!1,transformByPlatform:I.transformByPlatform||null}))}),b.join("/")}let $=A(Et()),V=A(st());function se(h){let b=A(h);return h.meta?.assetType===X?b===$:b===V}function U(h,b){return String(h||"").replace(/[\\/:*?"<>|]/g,"-").trim()||b}function be(h){let b=U(d(),Ft),I=h.meta?.assetType===X?"\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F":"\u670D\u52A1\u5668\u63A7\u4EF6\u6A21\u677F";return`${b} \xB7 ${I}`}function ke(){if(!((u.server.root.children||[]).find(b=>b.kind==="container")||u.server.root.children?.[0]))throw new Error("\u6574\u5408\u5305\u9700\u8981\u670D\u52A1\u7AEF\u5BA2\u6237\u7AEF\u63A7\u4EF6\u5BB9\u5668\u4E0B\u81F3\u5C11\u6709\u4E00\u4E2A\u6839\u63A7\u4EF6");return qr(u.server,u.client,{scripts:g,fileName:`${U(d(),Ft)} \xB7 \u6574\u5408\u5305.gia`})}function bt(){let h=b=>({type:b.meta.assetType,name:b.meta.name,sourceFile:b.meta.sourceFile||""});return{format:yt,name:d(),activeAssetType:s,assets:{server:h(u.server),client:h(u.client),scripts:F()}}}function zt(){return D({format:yt,version:4,meta:{name:d()},activeAssetType:s,serverLogic:_,controlGuidChanges:a,scriptSync:o,assets:{server:u.server,client:u.client,scripts:g.map(h=>D({id:h.id,guid:h.guid||0,path:h.path||"",source:h.source||"",controlId:h.controlId||"",controlAsset:h.controlAsset||""}))}})}function ee(){let h=L(),b=ua(h);return b.workspace=Ws(n),b.save=bt(),b.scripts=F(),b.mountTargets=k(),b.serverLogic=_,b.migrationWarnings=[...i],b.controlGuidChanges=D(a),b.scriptSync=D(o),br(b),b}function Re(h){let b=L();if(h.expectedRevision!==void 0&&Number(h.expectedRevision)!==b.version)throw new Error(`revision conflict: expected ${h.expectedRevision}, current ${b.version}`);return b}function nt(h,b,I=""){let P=String(b||"");if(P){let M=I===X?X:I===ae?ae:"";if(!v({controlId:P,controlAsset:M}))throw new Error("\u6302\u8F7D\u76EE\u6807\u5FC5\u987B\u662F\u5B58\u6863\u5185\u7684\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6216\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F");h.controlAsset=M}else h.controlAsset="";h.controlId=P}function fi(h){let b=Re(h);if(h.op==="addScript"){let I=w({path:String(h.path||""),source:String(h.source||""),controlId:"",controlAsset:""});h.controlId!==void 0&&h.controlId!==""&&nt(I,h.controlId,h.controlAsset),g.push(I)}else if(h.op==="updateScript"){let I=g.find(P=>P.id===h.id);if(!I)throw new Error(`\u811A\u672C\u4E0D\u5B58\u5728: ${h.id}`);h.controlId!==void 0&&nt(I,h.controlId,h.controlAsset),h.path!==void 0&&(I.path=String(h.path)),h.source!==void 0&&(I.source=String(h.source))}else if(h.op==="removeScript"){let I=g.length;if(g=g.filter(P=>P.id!==h.id),g.length===I)throw new Error(`\u811A\u672C\u4E0D\u5B58\u5728: ${h.id}`)}return b.version+=1,ee()}function di(h){let b=Re(h),I=ce(b.root,h.id??b.selectedId);if(!I||I.kind==="server-container")throw new Error("\u4EC5\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6216\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F\u5141\u8BB8\u4FEE\u6539\u7D22\u5F15");let P=Ui(h.guid),M=Ui(I.guid);if(P===M)return ee();let N=[];for(let B of Object.values(u))W(B.root,re=>{B===u.client&&re.kind==="server-container"||N.push({node:re,project:B})});if(N.some(B=>B.node!==I&&Number(B.node.guid)===P)||g.some(B=>Number(B.guid)===P))throw new Error(`\u63A7\u4EF6\u7D22\u5F15 ${P} \u5DF2\u88AB\u5176\u4ED6\u63A7\u4EF6\u6216\u811A\u672C\u5360\u7528`);let Y=[],K=(B,re,Fe)=>{let Q=B?.[re];(typeof Q=="number"||typeof Q=="string"&&/^\d+$/.test(Q.trim()))&&Number(Q)===M&&Y.push({owner:B,key:re,project:Fe.project})};for(let B of N)K(B.node,"referencedPrefabId",B),K(B.node,"itemPrefabId",B),K(B.node.giaRaw,"templateRefSlot",B);if(Y.length&&N.filter(B=>Number(B.node.guid)===M).length!==1)throw new Error(`\u65E7\u7D22\u5F15 ${M} \u5728\u591A\u68F5\u8D44\u4EA7\u6811\u4E2D\u91CD\u590D\uFF0C\u65E0\u6CD5\u786E\u5B9A\u6A21\u677F\u5F15\u7528\u5F52\u5C5E\uFF1B\u8BF7\u5148\u6D88\u9664\u6B67\u4E49\u540E\u4FEE\u6539`);let Ne={id:Gs(),controlAsset:s,controlId:I.id,controlName:I.name,oldGuid:M,newGuid:P};I.guid=P;let he=new Set([b]);for(let{owner:B,key:re,project:Fe}of Y)B[re]=typeof B[re]=="string"?String(P):P,he.add(Fe);a.push(Ne);for(let B of he)B.version+=1;return ee()}function ne(h){let b=Re(h);if(!Array.isArray(h.changeIds)||!h.changeIds.length||h.changeIds.some(P=>typeof P!="string"||!a.some(M=>M.id===P)))throw new Error("\u8BF7\u660E\u786E\u6307\u5B9A\u5DF2\u6838\u5BF9 Lua \u5F15\u7528\u7684\u6709\u6548\u7D22\u5F15\u53D8\u66F4\u8BB0\u5F55 changeIds");let I=new Set(h.changeIds);return a=a.filter(P=>!I.has(P.id)),b.version+=1,ee()}function Me(h){if(!h||typeof h!="object")throw new Error("patch requires op");if(h.op==="setScriptSync"){let b=Re(h);return o=Ki(h.config),b.version+=1,ee()}if(h.op==="setControlGuid")return di(h);if(h.op==="acknowledgeControlGuidChanges")return ne(h);if(h.op==="setServerLogic"){let b=Re(h);return _=ri(h.logic),b.version+=1,ee()}if(h.op==="addScript"||h.op==="updateScript"||h.op==="removeScript")return fi(h);if(h.op==="selectAsset")return s=h.assetType===X?X:ae,ee();if(h.op==="renameSave"){let b=String(h.name||"").trim();if(!b)throw new Error("\u5B58\u6863\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A");return f=b,ee()}if(h.op==="newAsset"){let b=Re(h);s=h.assetType===X?X:ae;let I=ir(s);return I.version=b.version+1,u[gt(s)]=I,a=a.filter(P=>P.controlAsset!==s),E(),ee()}return Sn(L(),h),E(),ee()}function De(h){return g.filter(b=>{let I=v(b);return!!(I&&I.key==="client"==(h===X))})}function $t(h="json",b=""){let I=Dt(h,b);if(a.length&&!["save","archive"].includes(String(h).toLowerCase())){let P=a.map(M=>`\u63A7\u4EF6\u7D22\u5F15\u5F85\u6838\u5BF9 Lua \u5F15\u7528\uFF1A${er[M.controlAsset]} / ${M.controlName} (${M.controlId})\uFF1A${M.oldGuid} \u2192 ${M.newGuid}\u3002\u8BF7\u6309\u8BED\u4E49\u66F4\u65B0\u811A\u672C\u4E2D\u7684\u63A7\u4EF6\u7D22\u5F15\u5F15\u7528\uFF0C\u6838\u5BF9\u540E\u786E\u8BA4\u53D8\u66F4\u8BB0\u5F55 ${M.id}\uFF1B\u4E0D\u8981\u5168\u5C40\u66FF\u6362\u540C\u503C\u6570\u5B57\u3002`);I.warnings=[...new Set([...I.warnings||[],...P])]}return I}function Dt(h="json",b=""){let I=String(h).toLowerCase();if(I==="save"||I==="archive"){let N=Buffer.from(JSON.stringify(zt(),null,2),"utf8");return D({filename:`${d().replace(/[\\/:*?"<>|]/g,"-")} \xB7 \u8D44\u4EA7\u5305.json`,mimeType:"application/json",encoding:"base64",data:N.toString("base64"),warnings:[]})}if(I==="save-gia"||I==="archive-gia"){let N=[],Y=[],K=(he,B="")=>{let re=$t(he,B);N.push(D({filename:re.filename,mimeType:re.mimeType,encoding:re.encoding,data:re.data,warnings:re.warnings||[]})),Y.push(...re.warnings||[])},Ne=(he,B)=>{let re=u[gt(he)],Fe=he===s,Q=g.some(ve=>ve.controlAsset===he&&ve.controlId);if(!Fe&&se(re)&&!Q){Y.push(B);return}K("gia",he)};if(Ne(ae,"\u670D\u52A1\u5668\u63A7\u4EF6\u6A21\u677F\u4ECD\u662F\u9ED8\u8BA4\u6A71\u7A97\uFF0C\u672A\u6539\u52A8\u4E14\u5F53\u524D\u672A\u663E\u793A\uFF0C\u5DF2\u4ECE\u8D44\u4EA7\u5305 GIA \u4E2D\u7701\u7565\u3002"),Ne(X,"\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F\u4ECD\u662F\u9ED8\u8BA4\u300CLua\u5B9E\u4F8B\u5316\u9762\u677F\u300D\uFF0C\u672A\u6539\u52A8\u4E14\u5F53\u524D\u672A\u663E\u793A\uFF0C\u5DF2\u4ECE\u8D44\u4EA7\u5305 GIA \u4E2D\u7701\u7565\u3002"),g.some(he=>he.path||he.source)&&K("scripts-gia"),!N.length)throw new Error("\u8D44\u4EA7\u5305 GIA \u6CA1\u6709\u53EF\u5BFC\u51FA\u7684\u5DF2\u6539\u52A8\u9879\uFF1B\u8BF7\u5148\u7F16\u8F91\u5F53\u524D\u754C\u9762\uFF0C\u6216\u6539\u7528\u300C\u5F53\u524D\u754C\u9762 GIA\u300D\u3002");return D({format:"qxqy-gia-package",files:N,warnings:[...new Set(Y)]})}if(I==="gia-combined"||I==="combined-gia"||I==="combined"){let N=ke();return D({filename:`${U(d(),Ft)} \xB7 \u6574\u5408\u5305.gia`,mimeType:"application/octet-stream",encoding:"base64",data:N.buffer.toString("base64"),warnings:[...new Set(N.warnings||[])]})}if(I==="scripts"){let N=D({format:Us,version:1,scripts:g.map(K=>D({id:K.id,guid:K.guid||0,path:K.path||"",source:K.source||"",controlId:K.controlId||"",controlAsset:K.controlAsset||""}))}),Y=Buffer.from(JSON.stringify(N,null,2),"utf8");return D({filename:`${U(d(),Ft)} \xB7 \u811A\u672C.json`,mimeType:"application/json",encoding:"base64",data:Y.toString("base64"),warnings:[]})}if(I==="scripts-gia"||I==="scriptsgia"){let N=Jr(g);return D({filename:`${U(d(),Ft)} \xB7 \u811A\u672C.gia`,mimeType:"application/octet-stream",encoding:"base64",data:N.buffer.toString("base64"),warnings:N.warnings})}if(I==="lua"){let N=g.find(K=>K.id===b)||g.find(K=>K.path===b);if(!N)throw new Error("\u6CA1\u6709\u53EF\u5BFC\u51FA\u7684 Lua \u811A\u672C\uFF0C\u8BF7\u5148\u5728\u201CLua \u811A\u672C\u201D\u9875\u521B\u5EFA");let Y=Ot(N.path||"")||`qxqy-script-${N.id}`;return D({filename:/\.lua$/i.test(Y)?Y:`${Y}.lua`,mimeType:"text/x-lua",encoding:"base64",data:Buffer.from(N.source||"","utf8").toString("base64"),warnings:[]})}let P=b?u[gt(b)]:L(),M=be(P);if(I==="json"){let N=D({...P,scripts:De(P.meta.assetType),controlGuidChanges:a.filter(K=>K.controlAsset===P.meta.assetType)}),Y=Buffer.from(JSON.stringify(N,null,2),"utf8");return D({filename:`${M}.json`,mimeType:"application/json",encoding:"base64",data:Y.toString("base64"),warnings:[]})}if(I==="gia"){let N=Kr(P,P.meta.assetType===X?{scripts:De(X)}:{}),Y=P.meta.assetType===X?[]:De(ae);return Y.length&&N.warnings.unshift(`\u5F53\u524D\u670D\u52A1\u5668\u63A7\u4EF6 GIA \u4E0D\u5305\u542B ${Y.length} \u4E2A Lua \u811A\u672C\u7684\u6E90\u7801\uFF1B\u8BF7\u4F7F\u7528\u300C\u8D44\u4EA7\u5305 GIA \u6574\u5408\u5305\u300D\uFF0C\u6216\u53E6\u884C\u5BFC\u5165\u811A\u672C\u5305\u5E76\u6838\u5BF9\u6302\u8F7D\u3002`),D({filename:`${M}.gia`,mimeType:"application/octet-stream",encoding:"base64",data:N.buffer.toString("base64"),warnings:N.warnings})}throw new Error(`unsupported export format: ${h}`)}function je(h){for(let b of h){let I=ji(b);if(!I.path&&!I.source)continue;let P=I.controlId?null:S(I.guid),M=w(P?{...I,...P}:I);P&&M.guid!==I.guid&&x(P,I.guid,M.guid),M.controlId&&!v(M)&&(M.controlId="",M.controlAsset=""),g.push(M)}}function Gt(h,b,I=""){let P=String(h||"").toLowerCase();if(typeof b!="string"||!b)throw new Error("import data is required");let M=Buffer.from(b,"base64"),N,Y=[],K={};if(P==="json"){try{N=JSON.parse(M.toString("utf8"))}catch{throw new Error("JSON \u6587\u4EF6\u65E0\u6548")}if(N?.project&&(N=N.project),N?.format===yt&&N?.assets){yn(N.version);let Q=nr(N);Y.push(...Q.get().migrationWarnings);let ve=Q.archiveData();return u.server=ve.assets.server,u.client=ve.assets.client,i=[...Y],s=N.activeAssetType===X?X:ae,f=String(N.meta?.name||Ot(I).replace(/\.json$/i,"")||f),_=ve.serverLogic,g=ve.assets.scripts,a=ve.controlGuidChanges,o=ve.scriptSync,p.clear(),D({snapshot:ee(),warnings:Y,metadata:{format:yt}})}}else{if(P==="lua")return g.push(w({path:Ot(I||"imported.lua"),source:M.toString("utf8"),controlId:""})),D({snapshot:ee(),warnings:Y,metadata:{assetType:"lua-script"}});if(P==="gia"){if(Zr(M)){let Ie=ea(M);return je(Ie.scripts),D({snapshot:ee(),warnings:Ie.warnings,metadata:Ie.metadata})}let Q=ta(M);N=Q.project,Y=Q.warnings,K=Q.metadata,Q.clientProject&&(u.client=Qe(Q.clientProject),a=a.filter(Ie=>Ie.controlAsset!==X),Y.push("\u6574\u5408\u5305\u5DF2\u62C6\u56DE\u300CUI\u63A7\u4EF6-\u670D\u52A1\u7AEF\u300D\u4E0E\u300CUI\u63A7\u4EF6-\u5BA2\u6237\u7AEF\u300D\uFF1B\u5BA2\u6237\u7AEF\u6A21\u677F\u8FB9\u754C\u5DF2\u4FDD\u7559\u3002"));let ve=new Map,sr=(Ie,Do)=>{Ie&&W(Ie.root,ur=>{for(let Hi of ur.scriptMappingIds||[]){let cr=ve.get(Number(Hi));if(cr){Y.push(`\u811A\u672C GUID ${Hi} \u540C\u65F6\u6302\u8F7D\u5230\u591A\u4E2A\u63A7\u4EF6\uFF0C\u5DF2\u4FDD\u7559\u201C${cr.controlAsset===ae?"\u670D\u52A1\u7AEF":"\u5BA2\u6237\u7AEF"}\u201D\u76EE\u6807\u3002`);continue}ve.set(Number(Hi),{controlId:ur.id,controlAsset:Do})}})};sr(Q.project,ae),sr(Q.clientProject,X),je((Q.scripts||[]).map(Ie=>ve.has(Number(Ie.guid))?{...Ie,...ve.get(Number(Ie.guid))}:Ie))}else throw new Error(`unsupported import format: ${h}`)}let Ne=Qe(N,{warnings:Y}),he=tr(N?.controlGuidChanges);if(he.some(Q=>Q.controlAsset!==Ne.meta.assetType))throw new Error("\u5355\u8D44\u4EA7 JSON \u7684\u7D22\u5F15\u53D8\u66F4\u8BB0\u5F55\u5FC5\u987B\u5C5E\u4E8E\u5F53\u524D\u5BFC\u5165\u8D44\u4EA7");let B=tr([...a.filter(Q=>Q.controlAsset!==Ne.meta.assetType),...he]);i=[...Y];let re=gt(Ne.meta.assetType);u[re]=Ne,a=B,s=Ne.meta.assetType;let Fe=u[re];return I&&(Fe.meta.name=Ot(I).replace(/\.(json|gia)$/i,"")||Fe.meta.name,Fe.meta.sourceFile=Ot(I),Fe.meta.sourceFormat=P),je(N?.scripts||[]),N?.script&&(N.script.path||N.script.source)&&je([N.script]),D({snapshot:ee(),warnings:Y,metadata:K})}function bo(h,b){return Sn(L(),{op:"pick",x:h,y:b}),ee()}function vo(h){let b=typeof h=="string"&&h?h:"";!b||b===n||(n=b)}function So(h){let b=h.source||"";if(!b.trim()&&h.path.trim())try{b=Ds(Js(h.path,n),"utf8")}catch(I){throw new Error(`\u811A\u672C ${h.path} \u8BFB\u53D6\u5931\u8D25: ${I?.message||I}`)}return b}function Vt(h={}){let b=ie(h.canvasId);b&&(G=b),h.playerCount!==void 0&&h.playerCount!==null&&h.playerCount!==""&&(z=dt(h.playerCount),Z>z&&(Z=1)),h.viewPlayerIndex!==void 0&&h.viewPlayerIndex!==null&&h.viewPlayerIndex!==""&&(Z=Xe(h.viewPlayerIndex,z)),C&&Ln(C);let I=g.map(M=>{try{return{id:M.id,guid:M.guid||0,path:M.path||M.id,source:So(M),controlId:M.controlId||"",controlAsset:M.controlAsset||""}}catch(N){return{id:M.id,guid:M.guid||0,path:M.path||M.id,source:`error([==[ ${String(N.message).replace(/]=+]/g,"] =]")} ])`,controlId:M.controlId||"",controlAsset:M.controlAsset||""}}}),P=M=>I.filter(N=>{let Y={controlId:N.controlId,controlAsset:N.controlAsset},K=N.controlId?v(Y):null;return!!(K&&K.key===M)});return C=io(u.server,{templatesProject:u.client,scripts:I,sceneScripts:P("server"),templateScripts:P("client"),serverConfig:{logic:_},canvasId:G,playerCount:z,viewPlayerIndex:Z,language:h.language||""}),ue(h)}function Io(h,b={}){let I=ie(h);if(!I)throw new Error("playSetCanvas requires canvasId");return Vt({...b,canvasId:I})}function ue(h={}){if(!C)return D({running:!1,tree:[],logs:[],serverLogs:[],serverVars:[]});let b=Xn(C,h);return b.running=!0,b.logs=Qn(b.logs),b.serverLogs=Qn(b.server?.logs||[]),b.serverVars=Xs(b.server,b.playerCount||1),b}function wo(h,b={}){return C||Vt(),Bi(C,h),b.observe===!1?D({running:!0,time:C.runtime.clock.time,frame:C.runtime.clock.frame,paused:!!C.debugPaused,levelTimePaused:!!C.runtime.clock.paused,playerCount:C.playerCount||1,viewPlayerIndex:C.viewPlayerIndex||1}):ue(b)}function Co(h=0){Vt();let b=Math.max(0,Number(h)||0);for(let I=0;I<b;I++)Bi(C,1/30);return ue()}function xo(){return C&&Ln(C),C=null,G="",z=1,Z=1,D({running:!1,tree:[],logs:[],serverLogs:[],serverVars:[]})}function ko(h,b={}){let I=Yt();return Z=Yn(I,h),b.observe===!1?null:ue(b)}function Eo(h,b={}){if(!C)throw new Error("play session has not started");return Un(C,h),b.observe===!1?null:ue(b)}function Ao(h,b={}){if(!C)throw new Error("play session has not started");return jn(C,h),b.observe===!1?null:ue(b)}function _o(h,b,I,P={}){if(!C)throw new Error("play session has not started");return li(C,h,b,I,P),P.observe===!1?null:ue(P)}function To(h={}){return C&&Xi(C).pause(),h.observe===!1?null:ue(h)}function Po(h={}){return C&&Xi(C).resume(),h.observe===!1?null:ue(h)}function Yt(){if(!C)throw new Error("play session has not started");return C}function Ro(h,b){let I=Yt();if(!h&&!b){let P=ue();return D({vars:P.serverVars||[]})}return D({entityType:String(h||""),name:String(b||""),value:fo(I,h,b)})}function Mo(h,b,I){let P=Yt();return Kn(P,h,b,I),ue()}function No(h,b=[],I="PlayerSelf"){let P=Yt();return qn(P,h,b,I),ue()}function Fo(){let h=ue();return D({events:h.history||[],case:Ba(h.history||[],{playerCount:h.playerCount||1})})}function Oo(h={}){let b=ue(),I=ai({name:h.name||"",dt:h.dt,playerCount:h.playerCount||b.playerCount||1,events:h.events||b.history||[],asserts:h.asserts||[]});return D(I)}function zo(h,b={}){let I=ai(h);Vt({...b,playerCount:b.playerCount||I.playerCount||1});let P=Yt();P.recording=!1;try{return po(Xi(P),h)}finally{P.recording=!0}}function $o(){if(!C)return{running:!1,paused:!1,time:0,frame:0,playerCount:1,viewPlayerIndex:1};let h=C.runtime.clock;return{running:!0,paused:!!C.debugPaused,levelTimePaused:!!h.paused,time:h.time,frame:h.frame,playerCount:C.playerCount||1,viewPlayerIndex:C.viewPlayerIndex||1}}let lr={get:ee,patch:Me,setWorkspace:vo,exportData:$t,importData:Gt,pick:bo,playStart:Vt,playSetCanvas:Io,playSetView:ko,playGet:ue,playStatus:$o,playStep:wo,playRun:Co,playStop:xo,playKey:Eo,playClick:Ao,playPointer:_o,playPause:To,playResume:Po,playServerGet:Ro,playServerSet:Mo,playServerSend:No,playHistory:Fo,playSaveCase:Oo,playRunCase:zo,archiveData:zt};return Object.defineProperty(lr,"_project",{enumerable:!1,get:L}),lr}var j=null,ar=!1,Ue=0,$e=0,or="realtime",Zs=33,ui=1/30,Qs=5;function ci(e={}){return{...e.inspect?{inspect:!0}:{},...e.view?{view:!0}:{},...e.paint?{paint:!0}:{},...e.compact?{compact:!0}:{},...e.sceneRev!==void 0&&e.sceneRev!==null?{sceneRev:e.sceneRev}:{}}}function eu(e={}){let t=ci(e);for(let i of["canvasId","playerCount","viewPlayerIndex","language"])e[i]!==void 0&&e[i]!==null&&e[i]!==""&&(t[i]=e[i]);return t}function it(e={}){return e.light?{...j.playStatus()}:j.playGet(ci(e))}function tu(){if(!j||ar||or!=="realtime")return;let e=j.playStatus();if(!e.running||e.paused){Ue=0,$e=0;return}let t=Date.now();if(!Ue){Ue=t;return}ar=!0;try{$e+=Math.min(.25,Math.max(0,(t-Ue)/1e3)),Ue=t;let i=0;for(;$e>=ui&&i<Qs;)j.playStep(ui,{observe:!1}),$e-=ui,i+=1;$e>ui&&($e=ui)}finally{ar=!1}}var zf=setInterval(tu,Zs);function iu(e,t={}){if(e==="start"){let i=t.clockMode??"realtime";if(i!=="manual"&&i!=="realtime")throw new Error("clockMode must be manual or realtime");return j&&j.playStop(),j=nr(t.archive||t.project,{workspacePath:t.workspacePath||""}),or=i,Ue=0,$e=0,j.playStart(eu(t))}if(!j)throw new Error("play session has not started");if(e==="get")return t.light?it(t):j.playGet(ci(t));if(e==="step"){let i=j.playStep(t.dt,t.light?{observe:!1}:ci(t));return t.light?it(t):i}if(e==="pointer")return j.playPointer(t.type,t.x,t.y,{observe:!1,deltaX:t.deltaX,deltaY:t.deltaY}),it(t);if(e==="key")return j.playKey(t.key,{observe:!1}),it(t);if(e==="click")return j.playClick(t.name,{observe:!1}),it(t);if(e==="pause")return j.playPause({observe:!1}),Ue=0,$e=0,it(t);if(e==="resume")return j.playResume({observe:!1}),Ue=0,$e=0,it(t);if(e==="device")return j.playSetCanvas(t.canvasId,ci(t));if(e==="view")return j.playSetView(t.playerIndex??t.viewPlayerIndex,{observe:!1}),it(t);if(e==="serverGet")return j.playServerGet(t.entityType,t.name);if(e==="serverSet")return j.playServerSet(t.entityType,t.name,t.value);if(e==="serverSend")return j.playServerSend(t.name,t.params||[],t.target||"PlayerSelf");if(e==="history")return j.playHistory();if(e==="saveCase")return j.playSaveCase(t.case||t);if(e==="runCase")return j.playRunCase(t.case||t,{canvasId:t.canvasId,playerCount:t.playerCount,viewPlayerIndex:t.viewPlayerIndex});if(e==="stop"){let i=j.playStop();return j=null,Ue=0,$e=0,i}throw new Error(`unknown play action: ${e}`)}rr.on("message",e=>{let{id:t,action:i,args:n={}}=e||{};try{let r=iu(i,n),a=typeof r?.running=="boolean"?{...r,clockMode:or}:r;rr.postMessage({id:t,ok:!0,value:a,error:null})}catch(r){rr.postMessage({id:t,ok:!1,value:null,error:r?.message||String(r)})}});
106
+ `)}`);return{buffer:n,warnings:[...new Set(t.warnings)]}}function wn(e){return Re.toObject(Re.decode(Pi(e)),{longs:Number,enums:Number,bytes:Buffer,defaults:!1,arrays:!0,objects:!0})}function ta(e){try{let i=wn(e).graph||[];return i.length>0&&i.every(n=>Number(n.which)===Nt)}catch{return!1}}function ia(e){let t=(e.graph||[]).filter(r=>Number(r.which)===Nt),i=[],n=t.map((r,a)=>{let o=r.script?.mapping||{},l=Number(r.id?.id)||0;l<=0&&i.push(`\u7B2C ${a+1} \u6761\u811A\u672C\u6620\u5C04\u7F3A\u5C11 GraphUnit.id.id\uFF0C\u5DF2\u6309 0 \u5904\u7406\uFF08\u5BFC\u51FA\u65F6\u4F1A\u91CD\u65B0\u5206\u914D\uFF09\u3002`);let u=Number(o.id)||0;return u&&u!==l&&i.push(`\u7B2C ${a+1} \u6761\u811A\u672C\u6620\u5C04 id(${u}) \u4E0E\u5355\u5143 id(${l}) \u4E0D\u4E00\u81F4\uFF0C\u4EE5\u5355\u5143 id \u4E3A\u51C6\u3002`),{guid:l,path:String(o.filePath||""),source:String(o.source||"")}});for(let[r,a]of n.entries())a.path&&!/\.lua$/iu.test(a.path)&&i.push(`\u7B2C ${r+1} \u6761\u811A\u672C\u6620\u5C04 file_path \u7F3A\u5C11 .lua \u540E\u7F00\uFF08${a.path}\uFF09\uFF0C\u771F\u673A\u53EF\u80FD\u62D2\u7EDD\u5BFC\u5165\uFF1B\u6A21\u62DF\u5668\u5185\u6309\u5F52\u4E00\u5316\u8DEF\u5F84\u7167\u5E38 require\u3002`);return{scripts:n,warnings:i}}function na(e){let t=wn(e),i=ia(t);if(!i.scripts.length)throw new Error("GIA \u5185\u6CA1\u6709\u811A\u672C\u6620\u5C04\u5355\u5143\uFF08which=69\uFF09");return{scripts:i.scripts,warnings:i.warnings,metadata:{assetType:"lua-script"}}}function bl(e){let t=[],i;try{i=wn(e)}catch(r){return{valid:!1,errors:[r?.message||String(r)],scriptCount:0}}let n=i.graph||[];return n.length||t.push("Root.graph \u4E3A\u7A7A"),(i.accessories||[]).length&&t.push("script.gia \u4E0D\u5E94\u5305\u542B accessories"),n.forEach((r,a)=>{let o=`\u5355\u5143 ${a+1}`;Number(r.which)!==Nt&&t.push(`${o}: which \u5E94\u4E3A 69\uFF0C\u5B9E\u9645 ${r.which}`),Number(r.id?.class)!==Zr&&t.push(`${o}: id.class \u5E94\u4E3A 30\uFF0C\u5B9E\u9645 ${r.id?.class}`),Number(r.id?.type??0)!==0&&t.push(`${o}: id.type \u5E94\u7F3A\u7701`);let l=r.script?.mapping;if(!l){t.push(`${o}: \u7F3A\u5C11 field35 ScriptMappingWrapper`);return}Number(r.id?.id)<=0&&t.push(`${o}: GraphUnit.id.id \u975E\u6CD5`),Number(l.id)!==Number(r.id?.id)&&t.push(`${o}: mapping.id \u5E94\u7B49\u4E8E GraphUnit.id.id`),String(l.name||"")!==String(r.name||"")&&t.push(`${o}: mapping.name \u5E94\u7B49\u4E8E GraphUnit.name`),String(l.filePath||"").trim()?/\.lua$/iu.test(String(l.filePath))||t.push(`${o}: file_path \u5E94\u4EE5 .lua \u7ED3\u5C3E\uFF08\u5B98\u65B9 script.gia \u6837\u672C\u5747\u4E3A \u540D\u79F0.lua\uFF0C\u771F\u673A require \u65F6\u624D\u53BB\u6269\u5C55\u540D\uFF09`):t.push(`${o}: file_path \u4E3A\u7A7A`)}),{valid:t.length===0,errors:t,scriptCount:n.length}}function Pi(e){let t=Buffer.isBuffer(e)?e:Buffer.from(e);if(t.length<et+mn)throw new Error("GIA \u6587\u4EF6\u8FC7\u77ED");if(t.readUInt32BE(4)!==1||t.readUInt32BE(8)!==Yr||t.readUInt32BE(12)!==3)throw new Error("\u4E0D\u662F\u53D7\u652F\u6301\u7684 GIA v1 \u6587\u4EF6");let i=t.readUInt32BE(16);if(i!==t.length-et-mn)throw new Error("GIA payload \u957F\u5EA6\u4E0D\u4E00\u81F4");if(t.readUInt32BE(et+i)!==Xr)throw new Error("GIA \u5C3E\u6807\u8BB0\u65E0\u6548");return t.subarray(et,et+i)}function me(e,t){return e.ui?.content?.data?.find(i=>i.details?.[t])?.details?.[t]||null}function vl(e){let t=me(e,"transform")?.multiPlatform,i={};for(let r of t?.platforms||[]){let a=ll[r.platformType||0],o=r.transform||{};i[a]={scale:o.scale?{x:o.scale.x??0,y:o.scale.y??0,z:o.scale.z??0}:{x:1,y:1,z:1},rotation:{x:o.field508?.x??0,y:o.field508?.y??0,z:o.field508?.z??0},anchorMin:{x:o.anchorMin?.x??0,y:o.anchorMin?.y??0},anchorMax:{x:o.anchorMax?.x??0,y:o.anchorMax?.y??0},offset:{x:o.offset?.x??0,y:o.offset?.y??0},size:{x:o.size?.x??0,y:o.size?.y??0},pivot:o.pivot?{x:o.pivot.x??0,y:o.pivot.y??0}:{x:.5,y:.5}}}let n=i.KEYBOARD||i[Object.keys(i)[0]];if(!n)throw new Error(`GIA \u63A7\u4EF6 ${e.name||e.id?.id} \u7F3A\u5C11\u591A\u5E73\u53F0\u53D8\u6362`);for(let r of se)i[r]||(i[r]=structuredClone(n));return i}function Ti(e){let t=e.ui?.content?.data||[];return t.some(i=>i.details?.textConfig)?t.some(i=>i.field501===71)?"textwindow":"textbox":t.some(i=>i.details?.cursorConfig)?"cursor":t.some(i=>Object.hasOwn(i.details||{},"templateRefSlot"))?"reference":t.some(i=>i.details?.gridView)?"grid":t.some(i=>i.details?.buttonPreset)?"button":t.some(i=>i.details?.keyHint)?"keyhint":t.some(i=>i.details?.image||i.details?.imageSlot)?"image":t.some(i=>Object.hasOwn(i.details||{},"effectSlot"))?"animation":t.some(i=>Object.hasOwn(i.details||{},"fullscreenEffectSlot"))?"fullscreen":(t.some(i=>Object.hasOwn(i.details||{},"containerNodeSlot")),"container")}function Vr(e,{reverseSiblings:t=!1,idOffset:i=0}={}){if(!e.length)return{nodes:new Map,rootCandidates:[],warnings:[]};let n=new Map(e.map((s,f)=>[s.id?.id,`n${i+f+1}`])),r=new Map,a=new Map,o=[];for(let s of e){let f=Ti(s),h=me(s,"textConfig"),p=me(s,"imageSlot"),g=me(s,"image"),m=me(s,"buttonPreset"),y=me(s,"gridView"),I=me(s,"genericSlot"),A=me(s,"footerSlot"),x=me(s,"cursorConfig"),G=me(s,"keyHint"),z=me(s,"containerNodeSlot"),q=me(s,"templateRefSlot"),J=me(s,"effectSlot"),H=me(s,"fullscreenEffectSlot"),$=K(f,{id:n.get(s.id?.id),guid:s.id?.id||0,giaInfoIndex:(s.ui?.content?.info||[]).find(v=>v.field501===2&&v.field502===6)?.index?.value,giaRelatedGuids:(s.ui?.content?.info||[]).find(v=>v.field501===4&&v.field502===4)?.related?.value||[],name:s.name||f,visible:me(s,"field14")?.field17?.initiallyHidden!==!0,active:me(s,"field14")?.initiallyInactive!==!0,canControllerFocus:A?.field505===1,scriptMappingIds:(I?.field502||[]).map(v=>Number(v?.field1?.id)).filter(v=>Number.isSafeInteger(v)&&v>0),transformByPlatform:vl(s),syncAllDevices:me(s,"transform")?.multiPlatform?.field504===1,giaRaw:{genericField501:I?.field501??0,footerField505:A?.field505??0,...f==="textbox"||f==="textwindow"?{textField501:h?.field501??20,textField503:h?.field503??12,textAlign:h?.align??0,...[void 0,0,1,2].includes(h?.verticalAlign)?{}:{textVerticalAlign:h.verticalAlign},...f==="textwindow"?{textField511:h?.field511??1,textViewField502:h?.viewFlags?.field502??1,textViewField503:h?.viewFlags?.field503??1}:{}}:{},...f==="cursor"?{cursorField501:x?.field501??0}:{},...f==="reference"?{templateRefSlot:q??""}:{},...f==="grid"?{gridField501:y?.field501??1,gridField507:y?.field507??1,gridField508:y?.field508??1,gridField509:y?.field509??1,gridField511:y?.field511??5,gridField512:y?.field512??1}:{},...f==="keyhint"?{keyHintField501:G?.field501??1,keyHintField502:G?.field502??1}:{},...f==="image"?{imageSlotType:p?.imageType??0,imageField502:g?.field502??1,imageField504:g?.field504??1,imageField505:g?.field505??1,imageField507:g?.field507??2,imageFillType:g?.fillType??1}:{},...f==="animation"?{effectSlot:J??""}:{},...f==="fullscreen"?{fullscreenEffectSlot:H??""}:{}},...f==="container"?{isolateNavigation:z?.isolateNavigation===!0,disableKeyEventPassthrough:z?.disableKeyEventPassthrough===!0,disableCursorEventPassthrough:z?.disableCursorEventPassthrough===!0,showCursor:z?.showCursor===!0}:{},...f==="cursor"?{raycastTarget:x?.field501===1}:{},...f==="textbox"||f==="textwindow"?{text:h?.text?.value??"",fontSize:h?.fontSize??20,minimumFontSize:h?.minimumFontSize??20,adaptiveFontSize:h?.adaptive===1,fontColor:h?.color??4294967295,bgColor:h?.color2??0,enableOutline:h?.outlineOff!==1,outlineColor:h?.color3??858993459,horizontalAlignment:h?.align===1?"Middle":h?.align===2?"Right":"Left",verticalAlignment:{0:"Top",1:"Middle",2:"Bottom"}[h?.verticalAlign??0]||"Top",...f==="textwindow"?{interactable:!0,showScrollBar:!0}:{}}:{},...f==="image"?{imageSource:"StaticReference",imageId:p?.assetId??0,imageType:p?.imageType===1?"Stretch":"Basic",imageColor:Number.isFinite(p?.field502)?p.field502>>>0:4294967295,enableMask:g?.enableMask===1,enableSoftEdge:g?.enableSoftEdge===1,enableFill:g?.enableFill===1,softEdgeMode:g?.softEdgePixel===1?"Pixel":"Percentage",softEdgeWidthX:g?.border?.field501??8,softEdgeWidthY:g?.border?.field502??8,horizontalSoftRange:g?.field512??85,verticalSoftRange:g?.field513??85,fillType:{1:"Horizontal",2:"Vertical",3:"Radial90",4:"Radial180",5:"Radial360"}[g?.fillType]||"Horizontal",fillAmount:Number.isFinite(g?.field508)?Math.max(0,Math.min(1,g.field508/100)):g?.enableFill===1?0:1,reverseMaskArea:g?.reverseMask===1}:{},...f==="button"?{interactable:m?.interactable===1,raycastTarget:m?.raycastTarget===1,clickAudioId:m?.clickAudioId??50888}:{},...f==="grid"?{cellSizeX:y?.cellSize?.field501??50,cellSizeY:y?.cellSize?.field502??50,spacingX:y?.gap?.field501??8,spacingY:y?.gap?.field502??8,padding1X:y?.padding1?.field501??20,padding1Y:y?.padding1?.field502??20,padding2X:y?.padding2?.field501??20,padding2Y:y?.padding2?.field502??20,previewCount:y?.field511??5}:{},...f==="reference"?{referencedPrefabId:q??""}:{},...f==="keyhint"?{keyboardKeyCode:G?.field502??null,controllerKeyCode:G?.field501??null}:{},...f==="animation"?{animationId:J??""}:{},...f==="fullscreen"?{animationId:H??""}:{}});r.set(s.id?.id,$),(f==="textbox"||f==="textwindow")&&![void 0,0,1,2].includes(h?.align)&&o.push(`${$.name}: \u6C34\u5E73\u5BF9\u9F50\u679A\u4E3E ${h.align} \u7684\u542B\u4E49\u672A\u77E5\uFF0C\u5DF2\u539F\u6837\u4FDD\u7559\u3002`),(f==="textbox"||f==="textwindow")&&![void 0,0,1,2].includes(h?.verticalAlign)&&o.push(`${$.name}: \u5782\u76F4\u5BF9\u9F50\u679A\u4E3E ${h.verticalAlign} \u7684\u542B\u4E49\u672A\u77E5\uFF0C\u5DF2\u539F\u6837\u4FDD\u7559\u3002`),f==="image"&&![void 0,0,1,2,3,4,5].includes(g?.fillType)&&o.push(`${$.name}: \u586B\u5145\u5F62\u72B6\u679A\u4E3E ${g.fillType} \u672A\u8BC6\u522B\uFF0C\u5DF2\u4FDD\u7559\u539F\u503C\u3002`),f==="button"&&a.set($.id,{unavailableChildId:m?.disabledChild,hoverChildId:m?.hoverChild,pressedChildId:m?.pressedChild,selectedChildId:m?.selectedChild})}let l=[],u=new Set;for(let s of e){let f=r.get(s.id?.id),h=(s.ui?.content?.children||[]).map(p=>r.get(p)).filter(Boolean);if(h.length){f.children=t?h.slice().reverse():h;for(let p of h)u.add(p.id)}}for(let s of e){let f=r.get(s.id?.id),h=s.ui?.content?.parent||0,p=r.get(h);p?u.has(f.id)||(t?p.children.unshift(f):p.children.push(f)):l.push(f)}for(let[s,f]of a){let h=[...r.values()].find(p=>p.id===s);for(let[p,g]of Object.entries(f))h[p]=n.get(g)||null}return{nodes:r,rootCandidates:l,warnings:o}}function ra(e){let t=Pi(e),i=Re.toObject(Re.decode(t),{longs:Number,enums:Number,bytes:Buffer,defaults:!1,arrays:!0,objects:!0}),n=i.graph||[];if(!n.some(m=>m.ui?.content))throw new Error("GIA \u4E0D\u542B\u53EF\u8BC6\u522B\u7684 UIControlGroup \u4E3B\u56FE");let r=n.find(m=>m.which===21)||null,a=n.filter(m=>Number(m.which)===70),o=i.accessories||[],l=new Set((r?.relatedIds||[]).map(m=>m.id||0)),u=r?l.size?o.filter(m=>l.has(m.id?.id||0)):o:[],s=a.length?[...a,...o.filter(m=>!l.has(m.id?.id||0))]:r?[]:[...n,...o];if(!u.length&&!s.length)throw new Error("GIA \u4E0D\u542B\u5BA2\u6237\u7AEF\u63A7\u4EF6");let f=["GIA \u5BFC\u5165\u4E3A\u5DF2\u9A8C\u8BC1 UI \u5B57\u6BB5\u7684\u8BED\u4E49\u5BFC\u5165\uFF1B\u672A\u77E5 protobuf \u5B57\u6BB5\u4E0D\u4F1A\u8FDB\u5165 Authoring JSON\u3002"],h=ia(i);f.push(...h.warnings);let p=null,g=null;if(u.length){let m=Vr(u,{reverseSiblings:!0,idOffset:0});f.push(...m.warnings);let y=m.rootCandidates.find(A=>A.kind==="container")||m.rootCandidates[0];if(!y)throw new Error("GIA \u672A\u627E\u5230\u5BA2\u6237\u7AEF\u6839\u63A7\u4EF6");let I=K("server-container",{id:"sc1",guid:r?.id?.id||0,name:r?.name||"\u5BA2\u6237\u7AEF\u63A7\u4EF6\u5BB9\u5668",giaRelatedGuids:(r?.ui?.content?.info||[]).find(A=>A.field501===4&&A.field502===4)?.related?.value||[]});I.children=[y],m.rootCandidates.length>1&&f.push(`\u68C0\u6D4B\u5230 ${m.rootCandidates.length} \u4E2A\u65E0\u7236\u8282\u70B9\u63A7\u4EF6\uFF0C\u4EC5\u5BFC\u5165\u4EE5\u201C${y.name}\u201D\u4E3A\u6839\u7684\u6811\u3002`),p={version:1,layoutSchemaVersion:be,meta:{name:r?.name||"\u5BFC\u5165\u7684\u754C\u9762\u63A7\u4EF6\u7EC4",assetType:"server-control-template",sourceFormat:"gia",sourceFile:"",gameVersion:i.gameVersion||"",giaFilePath:i.filePath||"",...Number.isSafeInteger(Number(i.modeFlag))?{giaModeFlag:Number(i.modeFlag)}:{}},canvasId:"pc-16-9",selectedId:y.id,script:{controlId:y.id,path:"",source:""},root:I}}if(s.length){let m=Vr(s,{reverseSiblings:!1,idOffset:1e3});if(f.push(...m.warnings),!m.rootCandidates.length)throw new Error("GIA \u672A\u627E\u5230\u5BA2\u6237\u7AEF\u6A21\u677F");let y=K("server-container",{id:"sc1",guid:0,name:"\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F"});y.children=m.rootCandidates,g={version:1,layoutSchemaVersion:be,meta:{name:m.rootCandidates.length===1?m.rootCandidates[0].name:"\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F\u5217\u8868",assetType:"client-control-template",sourceFormat:"gia",sourceFile:"",gameVersion:i.gameVersion||"",giaFilePath:i.filePath||"",...Number.isSafeInteger(Number(i.modeFlag))?{giaModeFlag:Number(i.modeFlag)}:{}},canvasId:"pc-16-9",selectedId:m.rootCandidates[0].id,script:{controlId:m.rootCandidates[0].id,path:"",source:""},root:y},Xe(g,{warnings:f});for(let I of m.rootCandidates)Z(I,A=>A.children.reverse());p||(p=g)}return{project:p,clientProject:g&&p!==g?g:void 0,scripts:h.scripts,warnings:f,metadata:{gameVersion:i.gameVersion||"",filePath:i.filePath||"",...Number.isSafeInteger(Number(i.modeFlag))?{modeFlag:Number(i.modeFlag)}:{},combined:!!(r&&a.length)}}}function In(e){let t=Pi(e),i=Re.toObject(Re.decode(t),{longs:Number,enums:Number,defaults:!1,arrays:!0,objects:!0}),n=i.graph||[],r=i.accessories||[],a=[],o=(g,m)=>g!=null&&Object.prototype.hasOwnProperty.call(g,m),l=new Map,u=[];/^\d+-\d+-\d+-\\.+\.gia$/iu.test(i.filePath||"")||a.push(`Root.filePath \u4E0D\u662F UID-TIME-ID-\\\u6587\u4EF6\u540D.gia\uFF1A${i.filePath||"<missing>"}`);let s=n.filter(g=>g.which===70).map(g=>{let m=Ti(g),y=g.ui?.content?.info||[],I=y.find(G=>G.field501===2&&G.field502===6)?.index?.value,A=y.find(G=>G.field501===4&&G.field502===4),x=A?.related?.value||[];return ke(I)||a.push(`${g.name}: Info.index=${I??"<missing>"}\uFF0C\u5FC5\u987B\u662F\u6B63\u6574\u6570`),A||a.push(`${g.name}: \u9876\u5C42 UIControlTemplate \u7F3A\u5C11 Info.related \u8BB0\u5F55`),{id:g.id?.id||0,name:g.name||"",kind:m,actualIndex:I,relatedPresent:!!A,relatedGuids:x}}),f=new Map;for(let g of s){if(!ke(g.actualIndex))continue;let m=f.get(g.actualIndex);m?a.push(`${g.name}: \u72EC\u7ACB\u6A21\u677F\u8D44\u4EA7\u7F16\u53F7 ${g.actualIndex} \u4E0E ${m.name} \u91CD\u590D`):f.set(g.actualIndex,g)}s.length||a.push("Root.graph \u4E0D\u542B UIControlTemplate(70)");let h=0,p=0;for(let g of[...n,...r]){if(!g.ui?.content)continue;let m=g.id?.id||0,y=g.ui.content,I=Ti(g),A=n.includes(g)&&g.which===70,x=`${g.name||"<unnamed>"}(${m||"<missing-guid>"})`;!Number.isSafeInteger(m)||m<=0||m>2147483647?a.push(`${x}: GraphUnit GUID \u975E\u6CD5`):l.has(m)?a.push(`${x}: GUID \u4E0E ${l.get(m).name||"<unnamed>"} \u91CD\u590D`):l.set(m,g),(g.id?.class!==1||g.id?.type!==8)&&a.push(`${x}: GraphUnit.id \u5FC5\u987B\u4E3A class=1,type=8`),y.guid!==m&&a.push(`${x}: content.guid=${y.guid??"<missing>"} \u4E0E GraphUnit.id.id \u4E0D\u4E00\u81F4`),A&&g.which!==70&&a.push(`${x}: \u6A21\u677F\u6839 which \u5FC5\u987B\u4E3A UIControlTemplate(70)`),!A&&g.which!==15&&a.push(`${x}: \u9644\u4EF6\u63A7\u4EF6 which \u5FC5\u987B\u4E3A UIControl(15)`);let G=y.info||[],z=G.find(_=>_.field501===1&&_.field502===5),q=G.find(_=>_.field501===2&&_.field502===6);z?.guid?.value!==m&&a.push(`${x}: Info.self GUID \u7F3A\u5931\u6216\u4E0E\u81EA\u8EAB\u4E0D\u4E00\u81F4`),ke(q?.index?.value)||a.push(`${x}: Info.index=${q?.index?.value??"<missing>"}\uFF0C\u5FC5\u987B\u662F\u6B63\u6574\u6570`);let J=G.find(_=>_.field501===4&&_.field502===4);A&&!J&&a.push(`${x}: \u9876\u5C42\u6A21\u677F\u7F3A\u5C11 Info.related \u8BB0\u5F55`),!A&&J&&a.push(`${x}: \u9644\u4EF6\u63A7\u4EF6\u4E0D\u5E94\u5199 Info.related`);let H=Ur[I],$=y.data||[],v=$.map(_=>`${_.field501}/${_.field502}`),E=H?.map(([_])=>_)||[];H?JSON.stringify(v)!==JSON.stringify(E)&&a.push(`${x}: Data \u69FD\u4F4D\u987A\u5E8F ${v.join(",")}\uFF0C\u5E94\u4E3A ${E.join(",")}`):a.push(`${x}: \u672A\u77E5\u5BA2\u6237\u7AEF\u63A7\u4EF6\u7C7B\u578B ${I}`);for(let _=0;_<Math.min($.length,H?.length||0);_+=1){let D=$[_],[Y,ue,U]=H[_];if(o(D,ue)||a.push(`${x}: Data ${Y} \u7F3A\u5C11 ${ue} \u5206\u652F`),!U)continue;o(D.details,U)||a.push(`${x}: Details ${Y} \u7F3A\u5C11 ${U} \u5206\u652F`);let we=jr[Y];(D.details?.field501!==we||D.details?.field502!==D.field502||D.details?.field503!==1)&&a.push(`${x}: Details ${Y} \u6807\u8BB0\u5E94\u4E3A ${we}/${D.field502}/1`);let Ae=D.details?.nodeRef;(Ae?.class!==1||Ae?.type!==8||Ae?.id!==m)&&a.push(`${x}: Details ${Y} node_ref \u672A\u6307\u5411\u81EA\u8EAB`)}let w=(g.ui.content.data||[]).find(_=>_.field501===4&&_.field502===86);w&&(o(w.field14,"field17")?h+=1:a.push(`${x}: \u7C7B\u578B Data \u7F3A\u5C11\u663E\u5F0F Field14.field17 \u7A7A\u4E32`),o(w.details?.field14,"field17")?h+=1:a.push(`${x}: \u7C7B\u578B Details \u7F3A\u5C11\u663E\u5F0F Field14.field17 \u7A7A\u4E32`));let C=(g.ui.content.data||[]).find(_=>_.details?.transform)?.details?.transform?.multiPlatform?.platforms||[];C.length!==4&&a.push(`${x}: \u591A\u5E73\u53F0\u53D8\u6362\u6570\u91CF=${C.length}\uFF0C\u5E94\u4E3A 4`);let O=C.map(_=>_.platformType||0);JSON.stringify(O)!==JSON.stringify([0,1,2,3])&&a.push(`${x}: \u5E73\u53F0\u987A\u5E8F ${O.join(",")}\uFF0C\u5E94\u4E3A 0,1,2,3`);let k=(g.ui.content.data||[]).find(_=>_.details?.transform)?.details?.transform;k?.multiPlatform?.field502!==ei[I]&&a.push(`${x}: \u53D8\u6362 preset=${k?.multiPlatform?.field502??"<missing>"}\uFF0C${I} \u5E94\u4E3A ${ei[I]}`);for(let _ of C)o(_.transform,"field508")?p+=1:a.push(`${x}: RectTransform \u7F3A\u5C11\u663E\u5F0F field508 \u7A7A\u4E32`);u.push({id:m,name:g.name||"",kind:I,template:A,parent:y.parent||0,children:[...y.children||[]],relatedIds:(g.relatedIds||[]).map(_=>_.id||0),dataSignatures:v})}for(let g of u){let m=`${g.name||"<unnamed>"}(${g.id})`;if(JSON.stringify(g.relatedIds)!==JSON.stringify(g.children)&&a.push(`${m}: GraphUnit.relatedIds \u4E0E content.children \u4E0D\u4E00\u81F4`),g.template&&g.parent&&a.push(`${m}: \u9876\u5C42\u6A21\u677F\u4E0D\u5E94\u6709 parent`),!g.template){let y=l.get(g.parent);y?(y.ui?.content?.children||[]).includes(g.id)||a.push(`${m}: \u7236\u63A7\u4EF6 children \u672A\u53CD\u5411\u5305\u542B\u81EA\u8EAB`):a.push(`${m}: parent=${g.parent||"<missing>"} \u4E0D\u5B58\u5728`)}for(let y of g.children){let I=l.get(y);I?(I.ui?.content?.parent||0)!==g.id&&a.push(`${m}: child=${y} \u7684 parent \u672A\u6307\u56DE\u81EA\u8EAB`):a.push(`${m}: child=${y} \u4E0D\u5B58\u5728`)}}return{valid:a.length===0,errors:a,filePath:i.filePath||"",gameVersion:i.gameVersion||"",templateCount:s.length,accessoryCount:r.length,templates:s,units:u,explicitEmpty:{field17:h,rectField508:p}}}function xn(e){let t=Pi(e),i=Re.toObject(Re.decode(t),{longs:Number,enums:Number,defaults:!1,arrays:!0,objects:!0}),n=(i.graph||[]).filter(k=>k.ui?.content&&Number(k.which)===21),r=(i.graph||[]).filter(k=>Number(k.which)===70),a=(i.graph||[]).filter(k=>Number(k.which)===Nt),o=(i.accessories||[]).filter(k=>k.ui?.content),l=[],u=(k,_)=>k!=null&&Object.prototype.hasOwnProperty.call(k,_);/^\d+-\d+-\d+-\\.+\.gia$/iu.test(i.filePath||"")||l.push(`Root.filePath \u4E0D\u662F UID-TIME-ID-\\\u6587\u4EF6\u540D.gia\uFF1A${i.filePath||"<missing>"}`),n.length!==1&&l.push(`\u670D\u52A1\u7AEF\u63A7\u4EF6\u6A21\u677F UIControlGroup \u6570\u91CF=${n.length}\uFF0C\u5E94\u4E3A 1`);let s=(i.graph||[]).filter(k=>{let _=Number(k.which);return _===Nt||_===70||_===21?!1:!k.ui?.content});s.length&&l.push(`Root.graph \u542B ${s.length} \u4E2A\u65E0\u6CD5\u8BC6\u522B\u7684\u975E\u63A7\u4EF6/\u975E\u811A\u672C\u5355\u5143`);let f=n[0];if(!f)return{valid:!1,errors:l,filePath:i.filePath||"",gameVersion:i.gameVersion||"",accessoryCount:o.length,controls:[],scriptCount:a.length,explicitEmpty:{field17:0,rectField508:0}};let h=[f,...r,...o],p=new Map;for(let k of h){let _=k.id?.id||0,D=`${k.name||"<unnamed>"}(${_||"<missing-guid>"})`;!Number.isSafeInteger(_)||_<=0||_>2147483647?l.push(`${D}: GraphUnit GUID \u975E\u6CD5`):p.has(_)?l.push(`${D}: GUID \u91CD\u590D`):p.set(_,k),(k.id?.class!==1||k.id?.type!==8)&&l.push(`${D}: GraphUnit.id \u5FC5\u987B\u4E3A class=1,type=8`),k.ui?.content?.guid!==_&&l.push(`${D}: content.guid \u4E0E GraphUnit.id.id \u4E0D\u4E00\u81F4`)}let g=f.id?.id||0,m=f.ui.content,y=`${f.name||"<unnamed>"}(${g})`;f.which!==21&&l.push(`${y}: which \u5FC5\u987B\u4E3A UIControlGroup(21)`);let I=m.info||[];I.find(k=>k.field501===1&&k.field502===5)?.guid?.value!==g&&l.push(`${y}: Info.self GUID \u7F3A\u5931\u6216\u4E0D\u4E00\u81F4`),I.find(k=>k.field501===2&&k.field502===6)?.index?.value!==1&&l.push(`${y}: Info.index \u5FC5\u987B\u4E3A 1`);let A=I.find(k=>k.field501===4&&k.field502===4);A||l.push(`${y}: \u7F3A\u5C11\u663E\u5F0F Info.related \u8BB0\u5F55`);let x=0,G=0,z=(k,_,D,Y=!1)=>{let ue=k.id?.id||0,U=`${k.name||"<unnamed>"}(${ue})`,we=k.ui.content.data||[],Ae=we.map(ne=>`${ne.field501}/${ne.field502}`),wt=D.map(([ne])=>ne);JSON.stringify(Ae)!==JSON.stringify(wt)&&l.push(`${U}: Data \u69FD\u4F4D\u987A\u5E8F ${Ae.join(",")}\uFF0C\u5E94\u4E3A ${wt.join(",")}`);for(let ne=0;ne<Math.min(we.length,D.length);ne+=1){let Oe=we[ne],[De,Ut,jt]=D[ne];if(u(Oe,Ut)||l.push(`${U}: Data ${De} \u7F3A\u5C11 ${Ut} \u5206\u652F`),!jt)continue;u(Oe.details,jt)||l.push(`${U}: Details ${De} \u7F3A\u5C11 ${jt} \u5206\u652F`);let Ke=jr[De];(Oe.details?.field501!==Ke||Oe.details?.field502!==Oe.field502||Oe.details?.field503!==1)&&l.push(`${U}: Details ${De} \u6807\u8BB0\u5E94\u4E3A ${Ke}/${Oe.field502}/1`);let Ht=Oe.details?.nodeRef;(Ht?.class!==1||Ht?.type!==8||Ht?.id!==ue)&&l.push(`${U}: Details ${De} node_ref \u672A\u6307\u5411\u81EA\u8EAB`)}let Bt=we.find(ne=>ne.field501===4&&ne.field502===(Y?23:86)),ee=Y?"empty15":"field17";u(Bt?.field14,ee)?Y||(x+=1):l.push(`${U}: \u7C7B\u578B Data \u7F3A\u5C11\u663E\u5F0F Field14.${ee} \u7A7A\u4E32`),u(Bt?.details?.field14,ee)?Y||(x+=1):l.push(`${U}: \u7C7B\u578B Details \u7F3A\u5C11\u663E\u5F0F Field14.${ee} \u7A7A\u4E32`);let Fe=we.find(ne=>ne.details?.transform)?.details?.transform,at=Fe?.multiPlatform?.platforms||[];at.length!==4&&l.push(`${U}: \u591A\u5E73\u53F0\u53D8\u6362\u6570\u91CF=${at.length}\uFF0C\u5E94\u4E3A 4`);let vi=at.map(ne=>ne.platformType||0);JSON.stringify(vi)!==JSON.stringify([0,1,2,3])&&l.push(`${U}: \u5E73\u53F0\u987A\u5E8F ${vi.join(",")}\uFF0C\u5E94\u4E3A 0,1,2,3`);let Si=Y?ei["server-container"]:ei[_];Fe?.multiPlatform?.field502!==Si&&l.push(`${U}: \u53D8\u6362 preset=${Fe?.multiPlatform?.field502??"<missing>"}\uFF0C\u5E94\u4E3A ${Si}`);for(let ne of at)u(ne.transform,"field508")?G+=1:l.push(`${U}: RectTransform \u7F3A\u5C11\u663E\u5F0F field508 \u7A7A\u4E32`);return Ae};z(f,"server-container",sl,!0);let q=(f.relatedIds||[]).map(k=>k.id||0),J=new Set(q),H=o.filter(k=>J.has(k.id?.id||0)),$=H.map(k=>k.id?.id||0);JSON.stringify(q)!==JSON.stringify($)&&l.push(`${y}: \u4E3B\u56FE relatedIds \u5FC5\u987B\u6309\u987A\u5E8F\u8986\u76D6\u672C\u7EC4 accessories`);let v=m.data?.find(k=>k.details?.rootChildRef)?.details?.rootChildRef?.guid||0,E=p.get(v);(!E||!H.includes(E))&&l.push(`${y}: 62/82 \u6839\u8282\u70B9\u5F15\u7528\u4E0D\u5B58\u5728`),$[0]!==v&&l.push(`${y}: \u6839\u5BB9\u5668\u8282\u70B9\u5FC5\u987B\u662F\u672C\u7EC4 accessories[0]`);let w=[];for(let k of H){let _=k.id?.id||0,D=k.ui.content,Y=`${k.name||"<unnamed>"}(${_})`,ue=Ti(k);k.which!==15&&l.push(`${Y}: which \u5FC5\u987B\u4E3A UIControl(15)`);let U=D.info||[];(U.length!==1||U[0]?.field501!==1||U[0]?.field502!==5||U[0]?.guid?.value!==_)&&l.push(`${Y}: \u670D\u52A1\u7AEF\u5BB9\u5668\u5185\u63A7\u4EF6 Info \u5FC5\u987B\u53EA\u542B\u81EA\u8EAB GUID`);let we=Ur[ue];we||l.push(`${Y}: \u672A\u77E5\u5BA2\u6237\u7AEF\u63A7\u4EF6\u7C7B\u578B ${ue}`);let Ae=we?z(k,ue,we):[];w.push({id:_,name:k.name||"",kind:ue,parent:D.parent||0,children:[...D.children||[]],relatedIds:(k.relatedIds||[]).map(wt=>wt.id||0),dataSignatures:Ae})}let C=w.find(k=>k.id===v);C&&(C.kind!=="container"&&l.push(`${C.name}(${v}): \u6839\u63A7\u4EF6\u5FC5\u987B\u4E3A\u5BB9\u5668\u8282\u70B9`),C.parent&&l.push(`${C.name}(${v}): \u6839\u63A7\u4EF6\u4E0D\u5E94\u6709 parent`));let O=new Map(w.map(k=>[k.id,k]));for(let k of w){let _=`${k.name}(${k.id})`;if(JSON.stringify(k.relatedIds)!==JSON.stringify(k.children)&&l.push(`${_}: relatedIds \u5FC5\u987B\u4E0E\u76F4\u63A5 children \u4E00\u81F4`),k.id!==v){let D=O.get(k.parent);D?D.children.includes(k.id)||l.push(`${_}: \u7236\u63A7\u4EF6 children \u672A\u53CD\u5411\u5305\u542B\u81EA\u8EAB`):l.push(`${_}: parent=${k.parent||"<missing>"} \u4E0D\u5B58\u5728`)}for(let D of k.children){let Y=O.get(D);Y?Y.parent!==k.id&&l.push(`${_}: child=${D} \u7684 parent \u672A\u6307\u56DE\u81EA\u8EAB`):l.push(`${_}: child=${D} \u4E0D\u5B58\u5728`)}}if(r.length){let k=In(vn({...i,graph:r,accessories:o.filter(_=>!J.has(_.id?.id||0))}));l.push(...k.errors.map(_=>`\u5BA2\u6237\u7AEF\u6A21\u677F: ${_}`))}return{valid:l.length===0,errors:l,filePath:i.filePath||"",gameVersion:i.gameVersion||"",graph:{id:g,name:f.name||"",relatedGuids:A?.related?.value||[],rootGuid:v},accessoryCount:o.length,controls:w,scriptCount:a.length,explicitEmpty:{field17:x,rectField508:G}}}function aa(e,t=[]){if(!e||e.layoutSchemaVersion===be)return e;if(e.layoutSchemaVersion!==void 0&&e.layoutSchemaVersion!==1)throw new Error(`\u4EC5\u652F\u6301 layoutSchemaVersion=2 \u6216\u53EF\u8FC1\u79FB\u7684\u65E7\u5E03\u5C40\uFF0C\u6536\u5230 ${e.layoutSchemaVersion}`);if(!e.root)return{...e,layoutSchemaVersion:be};let i=structuredClone(e),n=0;return Z(i.root,r=>{let a=r.transformByPlatform||{},o=r.transformByCanvas||{},l=r.name||r.id;for(let s of Object.keys(a))if(!se.includes(s))throw new Error(`${l}: unknown platform ${s}`);let u={};for(let s of se){let f=Ct[s],h=ie[f].platform,p=Object.keys(ie).filter(I=>ie[I].platform===h&&o[I]),g=o[f]?f:p[0],m=s==="CONTROLLER_CONSOLE"?u.KEYBOARD:s==="CONTROLLER_MOBILE"?u.TOUCHSCREEN:null,y=a[s]??m??(g?o[g]:null);if(u[s]=y?ze(y):un(r.kind),y||t.push(`${l}: ${s} \u65E0\u65E7\u5E03\u5C40\uFF0C\u5DF2\u4F7F\u7528\u63A7\u4EF6\u9ED8\u8BA4\u503C`),!a[s]&&!m&&g&&g!==f&&t.push(`${l}: \u7F3A\u5C11 ${f}\uFF0C\u5DF2\u91C7\u7528 ${g} \u7684\u951A\u70B9\u548C\u5C3A\u5BF8\u53C2\u6570`),!m)for(let I of p)JSON.stringify(u[s])!==JSON.stringify(ze(o[I]))&&t.push(`${l}: ${I} \u4E0E ${s} \u5E03\u5C40\u51B2\u7A81\uFF0C\u4FDD\u7559${a[s]?"\u5DF2\u6709\u5E73\u53F0":g}\u53C2\u6570`)}Le(u,`${l}.transformByPlatform`),r.transformByPlatform=u,delete r.transformByCanvas,n++}),i.layoutSchemaVersion=be,t.unshift(`\u5DF2\u81EA\u52A8\u8FC1\u79FB\u65E7\u5E03\u5C40\uFF1A${n} \u4E2A\u63A7\u4EF6\u8F6C\u6362\u4E3A\u56DB\u5E73\u53F0\u53C2\u6570\uFF1B\u518D\u6B21\u4FDD\u5B58\u5C06\u4F7F\u7528\u65B0\u7248\u683C\u5F0F`),i}function Cn(e){if(![1,2,3,4].includes(e))throw new Error(`\u4EC5\u652F\u6301 version=1\u20134 \u7684\u5B58\u6863\uFF0C\u6536\u5230 ${e}`)}function En(e,t,i,n=e.canvasId){let r=Je(e.root,t);return!r||r.kind==="server-container"?ve(n):i[r.id]||ve(n)}function tt(e,{warnings:t=[]}={}){if(!e)return ft();if(e=aa(e,t),(e.root||e.layoutSchemaVersion!==void 0)&&e.layoutSchemaVersion!==be)throw new Error(`\u4EC5\u652F\u6301 layoutSchemaVersion=${be} \u7684\u56DB\u5E73\u53F0\u5E03\u5C40\uFF0C\u4E0D\u652F\u6301\u65E7\u753B\u5E03\u5E03\u5C40\u6216\u5176\u4ED6\u7248\u672C`);let i=e.meta?.assetType==="client-control-template"?"client-control-template":"server-control-template",n=i==="client-control-template"?Rt():ft(),r={layoutSchemaVersion:be,version:Number.isSafeInteger(e.version)&&e.version>0?e.version:1,meta:{name:String(e.meta?.name||n.meta.name),assetType:i,sourceFormat:String(e.meta?.sourceFormat||n.meta.sourceFormat),sourceFile:String(e.meta?.sourceFile||""),...e.meta?.gameVersion?{gameVersion:String(e.meta.gameVersion)}:{},...e.meta?.giaFilePath?{giaFilePath:String(e.meta.giaFilePath)}:{},...Number.isSafeInteger(Number(e.meta?.giaOwnerUid))?{giaOwnerUid:Number(e.meta.giaOwnerUid)}:{},...Number.isSafeInteger(Number(e.meta?.giaTimestamp))?{giaTimestamp:Number(e.meta.giaTimestamp)}:{},...Number.isSafeInteger(Number(e.meta?.giaFileId))?{giaFileId:Number(e.meta.giaFileId)}:{},...e.meta?.giaFileName?{giaFileName:String(e.meta.giaFileName)}:{},...Number.isSafeInteger(e.meta?.giaNextAssetIndex)&&e.meta.giaNextAssetIndex>=2?{giaNextAssetIndex:e.meta.giaNextAssetIndex}:{},...Number.isSafeInteger(e.meta?.giaAssetIndexSchemaVersion)&&e.meta.giaAssetIndexSchemaVersion>0?{giaAssetIndexSchemaVersion:e.meta.giaAssetIndexSchemaVersion}:{},...Number.isSafeInteger(Number(e.meta?.giaModeFlag))&&Number(e.meta.giaModeFlag)>=0?{giaModeFlag:Number(e.meta.giaModeFlag)}:{}},canvasId:e.canvasId&&ie[e.canvasId]?e.canvasId:Ii,selectedId:e.selectedId||n.selectedId,root:dn(e.root||n.root)};return ca(r),Xe(r,{warnings:t}),r}function ca(e){let t=new Set;Z(e.root,i=>{if(typeof i.id!="string"||!i.id)throw new Error("node id must be a non-empty string");if(t.has(i.id))throw new Error(`duplicate node id: ${i.id}`);t.add(i.id)}),t.has(e.selectedId)||(e.selectedId=fn(e.root).id)}function oa(e){return We(Pt(e))}function Sl(e,t){let i=!1;return Z(e,n=>{n.id===t&&(i=!0)}),i}function wl(e,t,i,n){let a=Qe(e.root,e.canvasId).boxes[t.id],o=i.children.findIndex(h=>h.id===t.id);if(o<0)throw new Error("reparent: source node is not attached");if(i.children.splice(o,1),n.children.push(t),!a)return;let l=Qe(e.root,e.canvasId),u=n.kind==="server-container"?ve(e.canvasId):l.boxes[n.id]||ve(e.canvasId),s=Ze(t.transformByPlatform,e.canvasId),f=lt(u,s,{posX:a.centerX,posY:a.centerY,width:a.width,height:a.height});Ft(e,t,f)}function Il(e,t){return e.meta.assetType!=="client-control-template"?hn(e.root,t):(e.root.children||[]).flatMap(i=>hn(i,t))}function fa(e,t){let i=$r(e.root,t);if(e.meta.assetType!=="client-control-template")return i;let n=Qt(e),r=new Set;return n&&n.kind!=="server-container"&&Z(n,a=>r.add(a.id)),i.filter(a=>r.has(a.id))}function da(e){let{canvas:t,boxes:i}=Qe(e.root,e.canvasId),n=ii(e),r=he(e.root,e.selectedId),a=r?i[r.id]:null;return V({layoutSchemaVersion:be,version:e.version,meta:{...e.meta},canvasId:e.canvasId,canvas:{id:e.canvasId,width:t.width,height:t.height,platform:ie[e.canvasId].platform,label:ie[e.canvasId].label,presets:Object.values(ie).map(o=>({id:o.id,label:o.label,width:o.width,height:o.height,platform:o.platform}))},selectedId:e.selectedId,asset:{type:e.meta.assetType,label:e.meta.assetType==="client-control-template"?"\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F":"\u670D\u52A1\u7AEF\u63A7\u4EF6\u6A21\u677F",templateCount:e.meta.assetType==="client-control-template"?e.root.children.length:1,currentTemplateId:e.meta.assetType==="client-control-template"&&Qt(e)?.id||""},tree:Il(e,n),boxes:fa(e,i),inspector:Gr(r,e.canvasId,a||t,n),root:e.root})}function Ft(e,t,i){let n=Qe(e.root,e.canvasId),r=En(e,t.id,n.boxes),a={};if(t.syncAllDevices!==!1)for(let o of se){if(o===st(e.canvasId))continue;let l=Ct[o],u=Qe(e.root,l,o);a[o]=En(e,t.id,u.boxes,l)}t.transformByPlatform=zr({transformByPlatform:t.transformByPlatform,source:i,canvasId:e.canvasId,syncAllDevices:t.syncAllDevices!==!1,sourceParentBox:r,targetParentBoxByPlatform:a})}var xl=new Set(["name","active","visible","canControllerFocus","isolateNavigation","disableKeyEventPassthrough","disableCursorEventPassthrough","showCursor","fontSize","adaptiveFontSize","minimumFontSize","fontColor","bgColor","enableOutline","outlineColor","horizontalAlignment","verticalAlignment","text","imageSource","imageType","imageId","imageColor","enableMask","enableSoftEdge","softEdgeMode","softEdgeWidthX","softEdgeWidthY","horizontalSoftRange","verticalSoftRange","enableFill","fillType","fillHorizontalType","fillVerticalType","fillRadial90Type","fillRadialType","fillAmount","reverseMaskArea","raycastTarget","interactable","clickAudioId","unavailableChildId","hoverChildId","pressedChildId","selectedChildId","showScrollBar","cellSizeX","cellSizeY","spacingX","spacingY","padding1X","padding1Y","padding2X","padding2Y","previewCount","scrollDirection","layoutConstraint","referencedPrefabId","animationId","keyboardKeyCode","controllerKeyCode","itemPrefabId","layoutConstraintFixedCount"]),Cl=new Set(["posX","posY","width","height"]),kl=new Set(["anchorMinX","anchorMinY","anchorMaxX","anchorMaxY","pivotX","pivotY"]);function El(e){if(typeof e=="number"&&Number.isFinite(e))return e>>>0;if(typeof e=="string"){let t=e.trim();if(t.startsWith("#")){let n=t.slice(1);if(n.length===6)return(4278190080|parseInt(n,16))>>>0;if(n.length===8)return parseInt(n,16)>>>0}let i=Number(t);if(Number.isFinite(i))return i>>>0}throw new Error("color must be an ARGB integer or #RRGGBB/#AARRGGBB string")}function Be(e,t){let i=Number(e);if(!Number.isFinite(i))throw new Error(`${t} must be a finite number`);return i}function la(e){if(e===!0||e===1||e==="1"||e==="true")return!0;if(e===!1||e===0||e==="0"||e==="false")return!1;throw new Error("boolean field requires true or false")}var Al=new Set(["fontSize","minimumFontSize","imageId","clickAudioId","softEdgeWidthX","softEdgeWidthY","horizontalSoftRange","verticalSoftRange","fillAmount","cellSizeX","cellSizeY","spacingX","spacingY","padding1X","padding1Y","padding2X","padding2Y","previewCount","keyboardKeyCode","controllerKeyCode","itemPrefabId","layoutConstraintFixedCount"]),_l=new Set(["active","visible","canControllerFocus","isolateNavigation","disableKeyEventPassthrough","disableCursorEventPassthrough","showCursor","adaptiveFontSize","enableOutline","enableMask","enableSoftEdge","enableFill","reverseMaskArea","raycastTarget","interactable","showScrollBar"]),Tl=new Set(["name","imageSource","horizontalAlignment","verticalAlignment","text","softEdgeMode","fillType","fillHorizontalType","fillVerticalType","fillRadial90Type","fillRadialType","scrollDirection","layoutConstraint","referencedPrefabId","animationId"]),sa=new Set(["unavailableChildId","hoverChildId","pressedChildId","selectedChildId"]),ua={imageSource:["StaticReference","Prefab"],imageType:["Basic","Stretch",null],scrollDirection:["Horizontal","Vertical"],layoutConstraint:["AutoWrap","Fixed"],softEdgeMode:["Percentage","Pixel"],fillType:["Horizontal","Vertical","Radial90","Radial180","Radial360"],fillHorizontalType:["Left","Right"],fillVerticalType:["Bottom","Top"],fillRadial90Type:["BottomLeft","TopLeft","TopRight","BottomRight"],fillRadialType:["Bottom","Left","Top","Right"]};function Pl(e,t){if(!t||typeof t!="object")throw new Error("patch requires op");let i=t.op;if(i==="select")return t.id&&he(e.root,t.id)&&(e.selectedId=t.id),e;if(i==="pick"){let{boxes:n}=Qe(e.root,e.canvasId),r=fa(e,n),a=Dr(r,Number(t.x),Number(t.y));return a&&(e.selectedId=a),e}if(i==="setCanvas")return t.canvasId&&ie[t.canvasId]&&(e.canvasId=t.canvasId),e;if(i==="setScript")throw new Error("\u811A\u672C\u7531\u5B58\u6863\u7EDF\u4E00\u7BA1\u7406\uFF0C\u8BF7\u4F7F\u7528 addScript / updateScript / removeScript \u64CD\u4F5C");if(i==="newAsset"){let n=t.assetType==="client-control-template"?Rt():ft();return e.version=n.version,e.meta=n.meta,e.canvasId=n.canvasId,e.selectedId=n.selectedId,e.root=n.root,e}if(i==="addTemplate"){if(e.meta.assetType!=="client-control-template")throw new Error("\u53EA\u6709\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F\u5DE5\u7A0B\u53EF\u4EE5\u65B0\u589E\u6A21\u677F");let n=K(t.kind,{id:cn(e.root),guid:oa(e.root),name:t.name||`\u65B0${t.kind==="container"?"\u5BB9\u5668\u8282\u70B9":t.kind}\u6A21\u677F`});return e.root.children.push(n),e.selectedId=n.id,e}if(i==="add"){let n=he(e.root,t.parentId||e.selectedId);if(!n)throw new Error("add: parent not found");let r=Nr(n,t.kind,{id:cn(e.root),guid:oa(e.root),name:t.name});return e.selectedId=r.id,e}if(i==="reparent"){if(e.meta.assetType!=="client-control-template")throw new Error("\u5C42\u7EA7\u8C03\u6574\u4EC5\u9002\u7528\u4E8E\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F\u5DE5\u7A0B");let n=he(e.root,t.id||e.selectedId),r=n?Je(e.root,n.id):null,a=he(e.root,t.parentId);if(!n||n.kind==="server-container"||!r)throw new Error("reparent: node not found");if(!a)throw new Error("reparent: parent not found");if(a.id===n.id||Sl(n,a.id))throw new Error("\u63A7\u4EF6\u4E0D\u80FD\u79FB\u52A8\u5230\u81EA\u8EAB\u6216\u5176\u540E\u4EE3\u4E0B\u9762");if(a.kind==="server-container"&&r.kind==="server-container")return e;if(r.kind==="server-container"&&a.kind!=="server-container"&&e.root.children.length<=1)throw new Error("\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F\u5217\u8868\u81F3\u5C11\u4FDD\u7559\u4E00\u4E2A\u9876\u5C42\u6A21\u677F");return wl(e,n,r,a),e.selectedId=n.id,e}if(i==="moveSibling"){let n=he(e.root,t.id||e.selectedId),r=n?Je(e.root,n.id):null;if(!n||!r)throw new Error("moveSibling: node not found");let a=r.children.findIndex(u=>u.id===n.id),o=t.direction==="up"?-1:t.direction==="down"?1:0,l=a+o;return!o||l<0||l>=r.children.length||(r.children.splice(a,1),r.children.splice(l,0,n),e.selectedId=n.id),e}if(i==="remove"){let n=t.id||e.selectedId,r=Je(e.root,n);if(r?.kind==="server-container"){if(e.meta.assetType!=="client-control-template")throw new Error("\u670D\u52A1\u7AEF\u63A7\u4EF6\u6A21\u677F\u7684\u5BA2\u6237\u7AEF\u6839\u8282\u70B9\u4E0D\u80FD\u5220\u9664");if((e.root.children||[]).length<=1)throw new Error("\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F\u5217\u8868\u81F3\u5C11\u4FDD\u7559\u4E00\u4E2A\u6A21\u677F")}return Fr(e.root,n)&&(Z(e.root,a=>{if(a.kind==="button")for(let o of sa)a[o]&&!he(e.root,a[o])&&(a[o]=null)}),e.selectedId=r?r.id:e.root.id),e}if(i==="set"){let n=he(e.root,t.id||e.selectedId);if(!n)throw new Error("set: node not found");let r=t.key;r==="reverseMask"&&(r="reverseMaskArea");let a=t.value;if(r.startsWith("giaRaw.")){let s=r.slice(7);if(!s||s.includes("."))throw new Error("invalid raw GIA field path");let f=Pr(n.kind,s);if(!f)throw new Error(`unknown raw GIA field for ${n.kind}: ${s}`);if(n.giaRaw||={},n.giaRaw[s]=an(f,a),s==="footerField505"&&[0,1].includes(n.giaRaw[s])&&(n.canControllerFocus=n.giaRaw[s]===1),n.kind==="cursor"&&s==="cursorField501"&&[0,1].includes(n.giaRaw[s])&&(n.raycastTarget=n.giaRaw[s]===1),(n.kind==="textbox"||n.kind==="textwindow")&&s==="textAlign"){let h={0:"Left",1:"Middle",2:"Right"}[n.giaRaw[s]];h&&(n.horizontalAlignment=h)}if(n.kind==="image"&&s==="imageFillType"){let h={1:"Horizontal",2:"Vertical",3:"Radial90",4:"Radial180",5:"Radial360"}[n.giaRaw[s]];h&&(n.fillType=h)}return n.kind==="keyhint"&&s==="keyHintField502"&&(n.keyboardKeyCode=n.giaRaw[s]),n.kind==="keyhint"&&s==="keyHintField501"&&(n.controllerKeyCode=n.giaRaw[s]),e}if(r==="syncAllDevices"){if(n.syncAllDevices=la(a),n.syncAllDevices){let s=Ze(n.transformByPlatform,e.canvasId);Ft(e,n,s)}return e}if(xl.has(r)){if(r.endsWith("Color")&&(a=El(a)),Al.has(r)){if(a=Be(a,r),a<0)throw new Error(`${r} must not be negative`);if((r==="imageId"||r==="clickAudioId"||r==="keyboardKeyCode"||r==="controllerKeyCode")&&(a=Math.trunc(a)),r==="fillAmount"&&a>1)throw new Error("fillAmount must be between 0 and 1")}if(_l.has(r)&&(a=la(a)),Tl.has(r)&&(a=String(a??"")),r==="horizontalAlignment"&&!["Left","Middle","Right"].includes(a))throw new Error("invalid horizontalAlignment");if(r==="verticalAlignment"&&!["Top","Middle","Bottom"].includes(a))throw new Error("invalid verticalAlignment");if(ua[r]&&!ua[r].includes(a))throw new Error(`invalid ${r}`);if(sa.has(r))if(a===""||a===void 0||a===null)a=null;else{a=String(a);let s=he(e.root,a);if(!s||s===n||s.kind==="server-container"||!(n.children||[]).some(f=>f.id===a))throw new Error(`${r} must reference a direct child of this button`)}if(n.kind==="image"&&(r==="imageSource"||r==="imageId")&&n[r]!==a&&(n.imageType=null,n.giaRaw.imageSlotType=0),n[r]=a,n.kind==="image"&&r==="imageType"&&(n.giaRaw.imageSlotType=a==="Stretch"?1:0),r==="canControllerFocus"&&(n.giaRaw.footerField505=a?1:0),n.kind==="cursor"&&r==="raycastTarget"&&(n.giaRaw.cursorField501=a?1:0),(n.kind==="textbox"||n.kind==="textwindow")&&r==="horizontalAlignment"&&(n.giaRaw.textAlign={Left:0,Middle:1,Right:2}[a]),(n.kind==="textbox"||n.kind==="textwindow")&&r==="verticalAlignment"&&delete n.giaRaw.textVerticalAlign,n.kind==="image"&&r==="fillType"){let s={Horizontal:1,Vertical:2,Radial90:3,Radial180:4,Radial360:5}[a];s&&(n.giaRaw.imageFillType=s)}return n.kind==="reference"&&r==="referencedPrefabId"&&(n.giaRaw.templateRefSlot=a),n.kind==="grid"&&r==="previewCount"&&(n.giaRaw.gridField511=Math.trunc(a)),n.kind==="keyhint"&&r==="keyboardKeyCode"&&(n.giaRaw.keyHintField502=Math.trunc(a)),n.kind==="keyhint"&&r==="controllerKeyCode"&&(n.giaRaw.keyHintField501=Math.trunc(a)),(n.kind==="animation"||n.kind==="fullscreen")&&r==="animationId"&&(n.giaRaw[n.kind==="animation"?"effectSlot":"fullscreenEffectSlot"]=a),e}let{boxes:o}=Qe(e.root,e.canvasId),l=En(e,n.id,o),u=Ze(n.transformByPlatform,e.canvasId);if(r==="anchorType"){let s=kn(o[n.id]),f=kr(u,a);return f=lt(l,f,s),Ft(e,n,f),e}if(["rotationX","rotationY","rotationZ"].includes(r)){let s={...u,rotation:{...u.rotation,[r.slice(-1).toLowerCase()]:Be(a,r)}};return Ft(e,n,s),e}if(kl.has(r)){let s=kn(o[n.id]),f={...u,anchorMin:{...u.anchorMin},anchorMax:{...u.anchorMax},pivot:{...u.pivot}};return r==="anchorMinX"&&(f.anchorMin.x=Be(a,r)),r==="anchorMinY"&&(f.anchorMin.y=Be(a,r)),r==="anchorMaxX"&&(f.anchorMax.x=Be(a,r)),r==="anchorMaxY"&&(f.anchorMax.y=Be(a,r)),r==="pivotX"&&(f.pivot.x=Be(a,r)),r==="pivotY"&&(f.pivot.y=Be(a,r)),Ft(e,n,lt(l,f,s)),e}if(Cl.has(r)){let s=kn(o[n.id]),f=Be(a,r);if((r==="width"||r==="height")&&f<0)throw new Error(`${r} must not be negative`);return s[r]=f,Ft(e,n,lt(l,u,s)),e}throw new Error(`set: unknown key ${r}`)}if(i==="replace"){let n=tt(t.project);return e.version=n.version,e.meta=n.meta,e.canvasId=n.canvasId,e.selectedId=n.selectedId,e.root=n.root,e}throw new Error(`unknown op ${i}`)}function An(e,t){if(!t||typeof t!="object")throw new Error("patch requires op");if(t.expectedRevision!==void 0&&Number(t.expectedRevision)!==e.version)throw new Error(`revision conflict: expected ${t.expectedRevision}, current ${e.version}`);let i=e.version,n=JSON.parse(JSON.stringify(e));return Pl(n,t),ca(n),Xe(n),n.version=i+1,Object.keys(e).forEach(r=>{delete e[r]}),Object.assign(e,n),e}function kn(e){return e?{posX:e.centerX,posY:e.centerY,width:e.width,height:e.height}:{posX:0,posY:0,width:0,height:0}}import Rl from"fengari";var{lua:c,lauxlib:Q,lualib:ha,to_luastring:Ri,to_jsstring:Ml}=Rl,Nl=c.LUA_TNIL,Fl=c.LUA_TBOOLEAN,Ol=c.LUA_TNUMBER,zl=c.LUA_TSTRING,ma=c.LUA_TTABLE,$l=c.LUA_TFUNCTION,_n=c.LUA_TUSERDATA,Me=c.LUA_OK,pa=new WeakMap,Tn=Symbol("luaTableEntries"),Pn={__scriptHostKey:!0};function P(e){return Ri(String(e))}function dt(e,t){pa.set(e,t)}function xe(e){return pa.get(e)}var ni=class{constructor(t){this.value=t}};function oe(e,t,i){if(i instanceof ni){c.lua_pushnumber(e,i.value);return}if(i==null){c.lua_pushnil(e);return}let n=typeof i;if(n==="boolean"){c.lua_pushboolean(e,i);return}if(n==="number"){Number.isInteger(i)&&Math.abs(i)<=2147483647?c.lua_pushinteger(e,i):c.lua_pushnumber(e,i);return}if(n==="string"){c.lua_pushstring(e,P(i));return}if(n==="function"){Vl(e,t,i);return}if(i&&i[Tn]){let r=i[Tn];c.lua_createtable(e,Array.isArray(i)?i.length:0,r.length);for(let[a,o]of r)oe(e,t,a),oe(e,t,o),c.lua_settable(e,-3);return}if(Array.isArray(i)){c.lua_createtable(e,i.length,0);for(let r=0;r<i.length;r++)oe(e,t,i[r]),c.lua_rawseti(e,-2,r+1);return}if(i&&i.__kind==="EnumItem"){t.pushEnumItem(e,i);return}if(i&&i.__kind==="CursorEventData"){t.pushCursor(e,i);return}if(i&&i.__kind==="Script"){t.pushScript(e,i);return}if(i&&i.typeofName){t.pushControl(e,i);return}if(i&&i.__kind==="ServerSignal"){t.pushSignal(e,i);return}if(i&&(i.SetEase||i.Append)){t.pushTween(e,i);return}if(n==="object"){c.lua_createtable(e,0,Object.keys(i).length);for(let[r,a]of Object.entries(i))oe(e,t,a),c.lua_setfield(e,-2,P(r));return}c.lua_pushnil(e)}function W(e,t){if(c.lua_isnil(e,t)||c.lua_type(e,t)===c.LUA_TNONE)return"";if(!c.lua_isstring(e,t)&&c.lua_type(e,t)!==c.LUA_TNUMBER)return`lua_type=${c.lua_type(e,t)}`;let i=c.lua_tostring(e,t);return i==null?"":Ml(i)}function Ue(e,t){t=c.lua_absindex(e,t);let i=c.lua_type(e,t);if(i===_n)return xe(c.lua_touserdata(e,t));if(i===ma){c.lua_pushlightuserdata(e,Pn),c.lua_rawget(e,t);let n=c.lua_type(e,-1)===_n?c.lua_touserdata(e,-1):null;return c.lua_pop(e,1),n?xe(n):null}return null}function ye(e,t,i){i=c.lua_absindex(e,i);let n=c.lua_type(e,i);if(n===Nl)return null;if(n===Fl)return!!c.lua_toboolean(e,i);if(n===Ol)return c.lua_isinteger(e,i)?c.lua_tointeger(e,i):c.lua_tonumber(e,i);if(n===zl)return W(e,i);if(n===_n){let r=c.lua_touserdata(e,i);return xe(r)??r}if(n===$l)return Gl(e,t,i);if(n===ma){let r=Ue(e,i);if(r)return r;let a=[];for(c.lua_pushnil(e);c.lua_next(e,i)!==0;){let s=ye(e,t,-2),f=ye(e,t,-1);a.push([s,f]),c.lua_pop(e,1)}let o=new Map(a.filter(([s])=>Number.isInteger(s)&&s>=1)),l=0;for(;o.has(l+1);)l+=1;let u=l>0?[]:{};for(let[s,f]of a)Array.isArray(u)&&Number.isInteger(s)&&s>=1?u[s-1]=f:(typeof s=="string"||typeof s=="number")&&(u[s]=f);return Object.defineProperty(u,Tn,{value:a}),u}return null}function Gl(e,t,i){t.luaFunctions||(t.luaFunctions=new Map);let n=typeof c.lua_topointer=="function"?c.lua_topointer(e,i):null;if(n!=null&&t.luaFunctions.has(n))return t.luaFunctions.get(n);c.lua_pushvalue(e,i);let r=Q.luaL_ref(e,c.LUA_REGISTRYINDEX),a=Dl(e,t,r);return n!=null&&t.luaFunctions.set(n,a),a}function Dl(e,t,i){let n=(...r)=>{if(n.__luaRef==null)throw new Error("attempt to call a released Lua callback");let a=c.lua_gettop(e);c.lua_rawgeti(e,c.LUA_REGISTRYINDEX,n.__luaRef);for(let s of r)oe(e,t,s);if(c.lua_pcall(e,r.length,c.LUA_MULTRET,0)!==Me){let s=W(e,-1);throw c.lua_settop(e,a),new Error(s)}let l=c.lua_gettop(e)-a,u=[];for(let s=1;s<=l;s++)u.push(ye(e,t,a+s));if(c.lua_settop(e,a),u.length!==0)return u.length===1?u[0]:u};return n.__luaRef=i,n.__luaState=e,n}function ga(e){e?.__luaRef!=null&&(e.__luaHolds=(e.__luaHolds||0)+1)}function ya(e,t){if(!t||t.__luaRef==null||!t.__luaState)return;if(t.__luaHolds>1){t.__luaHolds-=1;return}let i=t.__luaState;if((!e?.luaStates||e.luaStates.has(i))&&Q.luaL_unref(i,c.LUA_REGISTRYINDEX,t.__luaRef),t.__luaRef=null,t.__luaState=null,e?.luaFunctions)for(let[n,r]of e.luaFunctions)r===t&&e.luaFunctions.delete(n)}function Vl(e,t,i){c.lua_pushlightuserdata(e,i),c.lua_pushlightuserdata(e,t),c.lua_pushcclosure(e,function(r){let a=c.lua_touserdata(r,c.lua_upvalueindex(1)),o=c.lua_touserdata(r,c.lua_upvalueindex(2)),l=c.lua_gettop(r),u=[];for(let s=1;s<=l;s++)u.push(ye(r,o,s));try{let s=a(...u);if(Array.isArray(s)&&s.__multi){for(let f of s)oe(r,o,f);return s.length}return s===void 0?0:(oe(r,o,s),1)}catch(s){return c.lua_pushstring(r,P(String(s&&s.message?s.message:s))),c.lua_error(r)}},2)}function ba(e){!e||typeof c.lua_close!="function"||c.lua_close(e)}function va(e){if(Q.luaL_loadstring(e,P(["local nativeGetMetatable = getmetatable","getmetatable = function(value)",' if type(value) == "string" then return nil end'," return nativeGetMetatable(value)","end"].join(`
107
+ `)))===Me&&c.lua_pcall(e,0,0,0),c.lua_settop(e,0),c.lua_pushnil(e),c.lua_setglobal(e,P("_VERSION")),c.lua_getglobal(e,P("string")),!c.lua_isnil(e,-1))for(let i of["dump","pack","unpack"])c.lua_pushnil(e),c.lua_setfield(e,-2,P(i));if(c.lua_pop(e,1),c.lua_pushnil(e),c.lua_setglobal(e,P("io")),c.lua_getglobal(e,P("os")),!c.lua_isnil(e,-1))for(let i of Object.keys({execute:1,getenv:1,remove:1,rename:1,tmpname:1,setlocale:1,exit:1}))c.lua_pushnil(e),c.lua_setfield(e,-2,P(i));c.lua_pop(e,1),c.lua_getglobal(e,P("debug")),c.lua_isnil(e,-1)?c.lua_pop(e,1):(c.lua_getfield(e,-1,P("traceback")),c.lua_newtable(e),c.lua_pushvalue(e,-2),c.lua_setfield(e,-2,P("traceback")),c.lua_setglobal(e,P("debug")),c.lua_pop(e,2)),c.lua_getglobal(e,P("math")),c.lua_isnil(e,-1)||(c.lua_pushcfunction(e,i=>{let n=c.lua_tonumber(i,1);return c.lua_pushboolean(i,Number.isNaN(n)),1}),c.lua_setfield(e,-2,P("isnan")),c.lua_pushcfunction(e,i=>{let n=c.lua_tonumber(i,1);return c.lua_pushboolean(i,n===1/0||n===-1/0),1}),c.lua_setfield(e,-2,P("isinf"))),c.lua_pop(e,1),c.lua_pushnil(e),c.lua_setglobal(e,P("package")),c.lua_pushnil(e),c.lua_setglobal(e,P("load")),c.lua_pushnil(e),c.lua_setglobal(e,P("loadfile")),c.lua_pushnil(e),c.lua_setglobal(e,P("dofile")),c.lua_pushnil(e),c.lua_setglobal(e,P("collectgarbage")),c.lua_pushnil(e),c.lua_setglobal(e,P("coroutine")),c.lua_pushnil(e),c.lua_setglobal(e,P("fengari"))}var Ee=(e,t=0)=>Number.isFinite(Number(e))?Number(e):t,Sa=e=>e?.Name||e,Mi=e=>Math.max(0,Math.min(1,Ee(e)));function ri(e){let t=e.parent?ri(e.parent):[e.runtime.canvasWidth,e.runtime.canvasHeight];return[Math.max(0,(e.anchorMaxX-e.anchorMinX)*t[0]+Ee(e.sizeDeltaX)),Math.max(0,(e.anchorMaxY-e.anchorMinY)*t[1]+Ee(e.sizeDeltaY))]}function ai(e){let[t,i]=ri(e),n=Sa(e.scrollDirection)==="Horizontal",r=Math.max(1,Ee(e.cellSizeX,50)),a=Math.max(1,Ee(e.cellSizeY,50)),o=Math.max(0,Ee(e.spacingX)),l=Math.max(0,Ee(e.spacingY)),u=Math.max(0,Ee(e.padding1X)),s=Math.max(0,Ee(e.padding1Y)),f=Math.max(0,Ee(e.padding2X)),h=Math.max(0,Ee(e.padding2Y)),p=n?i-s-h:t-u-f,g=n?a:r,m=n?l:o,y=Sa(e.layoutConstraint)==="Fixed"?Math.max(1,Math.floor(Ee(e.layoutConstraintFixedCount,1))):Math.max(1,Math.floor((p+m)/(g+m))),I=Math.ceil(e.itemCount/y),A=I?n?u+f+I*r+(I-1)*o:s+h+I*a+(I-1)*l:0,x=n?t:i,G=Math.max(0,A-x);return{width:t,height:i,horizontal:n,cellW:r,cellH:a,gapX:o,gapY:l,left:u,top:s,right:f,bottom:h,lanes:y,length:A,viewport:x,max:G,offset:Mi(e.scrollProgress)*G}}function Ot(e){let t=ai(e);for(let i=0;i<(e._gridItems?.length||0);i+=1){let n=e._gridItems[i];if(!n.alive||n.parent!==e)continue;let r=Math.floor(i/t.lanes),a=i%t.lanes,o=t.horizontal?r:a,l=t.horizontal?a:r,u=t.left+o*(t.cellW+t.gapX)+t.cellW/2-(t.horizontal?t.offset:0),s=-t.top-l*(t.cellH+t.gapY)-t.cellH/2+(t.horizontal?0:t.offset),f={anchorMinX:0,anchorMaxX:0,anchorMinY:1,anchorMaxY:1,pivotX:.5,pivotY:.5,sizeDeltaX:t.cellW,sizeDeltaY:t.cellH,anchoredPositionX:u,anchoredPositionY:s};Object.entries(f).some(([h,p])=>n[h]!==p)&&(Object.assign(n,f),n.markPlayDirty(!0))}return t}var wa={container:"ClientUIContainerControl",textbox:"ClientUITextBoxControl",textwindow:"ClientUITextWindowControl",image:"ClientUIImageControl",button:"ClientUIPresetButtonControl",cursor:"ClientUICursorEventAreaControl",grid:"ClientUIGridScrollerControl",keyhint:"ClientUIKeyHintControl",animation:"ClientUIAnimationControl",fullscreen:"ClientUIFullscreenAnimationControl",reference:"ClientUIReferenceControl"},Yl=["alive","Id","prefabIndex","active","activeInHierarchy","visible"],Ni=new Set(["active","visible","parent","sizeDeltaX","sizeDeltaY","anchorMinX","anchorMinY","anchorMaxX","anchorMaxY","pivotX","pivotY"]),Xl=["name","parent","anchoredPositionX","anchoredPositionY","sizeDeltaX","sizeDeltaY","anchorMinX","anchorMinY","anchorMaxX","anchorMaxY","pivotX","pivotY","localScaleX","localScaleY","localScaleZ","localRotationX","localRotationY","localRotationZ","canControllerFocus"],Bl={image:["imageSource","imageId"],grid:["itemCount","scrollDirection","layoutConstraint","layoutConstraintFixedCount"],reference:["referencedPrefabIndex"]},Ul={container:["isolateNavigation","disableKeyEventPassthrough","disableCursorEventPassthrough","showCursor"],textbox:["text","fontSize","fontColor","bgColor","enableOutline","outlineColor","horizontalAlignment","verticalAlignment","adaptiveFontSize","minimumFontSize"],textwindow:["interactable","showScrollBar","text","fontSize","fontColor","bgColor","enableOutline","outlineColor","horizontalAlignment","verticalAlignment","adaptiveFontSize","minimumFontSize"],image:["imageColor","enableMask","enableSoftEdge","softEdgeMode","softEdgeWidthX","softEdgeWidthY","horizontalSoftRange","verticalSoftRange","reverseMaskArea","fillType","fillHorizontalType","fillVerticalType","fillRadial90Type","fillRadialType","fillAmount"],button:["interactable","clickAudioId","raycastTarget"],cursor:["raycastTarget"],grid:["itemPrefabIndex","raycastTarget","showScrollBar","interactable","scrollProgress"],keyhint:["keyboardKeyCode","controllerKeyCode"],animation:["animationId","playSoundEffect","layer"],fullscreen:["animationId","playSoundEffect"]},jl=["GetChildren","GetChild","FindChild","SetActive","SetVisible","GetSiblingIndex","SetSiblingIndex","SetAsFirstSibling","SetAsLastSibling","GetAnchoredPosition","SetAnchoredPosition","GetSizeDelta","SetSizeDelta","GetAnchorMin","SetAnchorMin","GetAnchorMax","SetAnchorMax","GetPivot","SetPivot","GetLocalScale","SetLocalScale","GetLocalRotation","SetLocalRotation","GetScriptByPath","GetScript","GetScripts","AddKeyEventListener","RemoveKeyEventListener","RemoveKeyEventListeners","RemoveAllKeyEventListeners","AddNavigationEventListener","RemoveNavigationEventListener","RemoveNavigationEventListeners","RemoveAllNavigationEventListeners","SetControllerNavigation","GetControllerNavigation"],Ia=["AddCursorEventListener","RemoveCursorEventListener","RemoveCursorEventListeners","RemoveAllCursorEventListeners","SimulateCursorClick"],Hl={image:["SetImage","SetSoftEdgeWidth","SetFillUnused","SetFillHorizontal","SetFillVertical","SetFillRadial90","SetFillRadial180","SetFillRadial360"],button:Ia,cursor:Ia,animation:["PlayAnimation","StopAnimation"],grid:["RefreshItems","GetItemIndex","GetItemSize","GetItemSpacing","GetPadding","ScrollToItemAt","GetContentLength"]};function Mn(e,t){return e.kind==="image"&&t==="imageType"&&e.runtime.canSelectImageType(e.imageId,e.imageSource)?"rw":Yl.includes(t)||(Bl[e.kind]||[]).includes(t)?"ro":Xl.includes(t)||(Ul[e.kind]||[]).includes(t)?"rw":null}var Kl=["localRotationX","localRotationY","localRotationZ"],zt=Math.PI/180;function xa(e,t){return[e[3]*t[0]+e[0]*t[3]+e[1]*t[2]-e[2]*t[1],e[3]*t[1]-e[0]*t[2]+e[1]*t[3]+e[2]*t[0],e[3]*t[2]+e[0]*t[1]-e[1]*t[0]+e[2]*t[3],e[3]*t[3]-e[0]*t[0]-e[1]*t[1]-e[2]*t[2]]}function Rn(e){if(Object.is(e,-0))return e;let t=(e%360+360)%360,i=Math.round(t*1e6)/1e6;return i>=360?0:i}function Ca(e,t,i){let n=x=>[Math.sin(x*zt/2),Math.cos(x*zt/2)],[r,a]=n(e),[o,l]=n(t),[u,s]=n(i),[f,h,p,g]=xa(xa([0,o,0,l],[r,0,0,a]),[0,0,u,s]),m=Math.max(-1,Math.min(1,-2*(h*p-g*f))),y,I,A;return Math.abs(m)>.999999?(y=Math.sign(m)*90,I=2*Math.atan2(h,g)/zt,A=0):(y=Math.asin(m)/zt,I=Math.atan2(2*(g*h+f*p),1-2*(f*f+h*h))/zt,A=Math.atan2(2*(g*p+f*h),1-2*(f*f+p*p))/zt),[Rn(y),Rn(I),Rn(A)]}function ka(e,t){return jl.includes(t)||(Hl[e.kind]||[]).includes(t)}var ql={container:{isolateNavigation:!1,disableKeyEventPassthrough:!1,disableCursorEventPassthrough:!1,showCursor:!1},textbox:{text:"",fontSize:20,fontColor:4294967295,bgColor:0,enableOutline:!1,outlineColor:0,horizontalAlignment:null,verticalAlignment:null,adaptiveFontSize:!1,minimumFontSize:10},textwindow:{interactable:!0,showScrollBar:!0,text:"",fontSize:20,fontColor:4294967295,bgColor:0,enableOutline:!1,outlineColor:0,horizontalAlignment:null,verticalAlignment:null,adaptiveFontSize:!1,minimumFontSize:10},image:{imageSource:null,imageId:0,imageColor:4294967295,imageType:null,enableMask:!1,enableSoftEdge:!1,softEdgeMode:"Percentage",softEdgeWidthX:8,softEdgeWidthY:8,horizontalSoftRange:85,verticalSoftRange:85,enableFill:!1,fillType:"Unused",fillHorizontalType:"Left",fillVerticalType:"Bottom",fillRadial90Type:"BottomLeft",fillRadialType:"Bottom",reverseMaskArea:!1,fillAmount:1},button:{interactable:!0,clickAudioId:0,raycastTarget:!0,unavailableChildId:null,hoverChildId:null,pressedChildId:null,selectedChildId:null,pressed:!1},cursor:{raycastTarget:!0},grid:{itemCount:0,itemPrefabIndex:null,raycastTarget:!0,interactable:!0,showScrollBar:!0,scrollDirection:"Vertical",layoutConstraint:"AutoWrap",layoutConstraintFixedCount:null,scrollProgress:0,cellSizeX:50,cellSizeY:50,spacingX:8,spacingY:8,padding1X:20,padding1Y:20,padding2X:20,padding2Y:20,previewCount:5},keyhint:{keyboardKeyCode:null,controllerKeyCode:null},animation:{animationId:null,playSoundEffect:null,layer:null,raycastTarget:!1},fullscreen:{animationId:null,playSoundEffect:null,raycastTarget:!1},reference:{referencedPrefabIndex:null}},it=class e{constructor(t,i){this.runtime=t,this.kind=i.kind||"container",this.typeofName=wa[this.kind]||wa.container,this.alive=!0,this.Id=i.Id??t.nextControlId(),this.authoringId=i.authoringId??null,this.prefabIndex=i.prefabIndex??0,this.name=i.name??"",this.active=i.active===!0,this.visible=i.visible!==!1,this._parent=null,this.children=[],this.scripts=[],this.cursorListeners=new Map,this.keyListeners=new Map,this.navListeners=new Map,this.navConfig=new Map,this.anchoredPositionX=i.anchoredPositionX??0,this.anchoredPositionY=i.anchoredPositionY??0,this.sizeDeltaX=i.sizeDeltaX??0,this.sizeDeltaY=i.sizeDeltaY??0,this.anchorMinX=i.anchorMinX??.5,this.anchorMinY=i.anchorMinY??.5,this.anchorMaxX=i.anchorMaxX??.5,this.anchorMaxY=i.anchorMaxY??.5,this.pivotX=i.pivotX??.5,this.pivotY=i.pivotY??.5,this.localScaleX=i.localScaleX??1,this.localScaleY=i.localScaleY??1,this.localScaleZ=i.localScaleZ??1,this.localRotationX=i.localRotationX??0,this.localRotationY=i.localRotationY??0,this.localRotationZ=i.localRotationZ??0,this.canControllerFocus=i.canControllerFocus??!1,this._playDirty=!0,this._playDeepDirty=!0,this._playChildDirty=!1,(this.kind==="grid"||this.kind==="textwindow")&&(this.runtime.scrollControls||=new Set,this.runtime.scrollControls.add(this));let n=ql[this.kind]||{};for(let[r,a]of Object.entries(n))this[r]===void 0&&(this[r]=i[r]!==void 0?i[r]:a);if(this.kind==="grid"&&(this.scrollProgress=i.scrollProgress??0),i.children)for(let r of i.children){let a=r instanceof e?r:new e(t,r);this.addChild(a)}}get parent(){return this._parent}set parent(t){if(this._parent===t)return;if(t!==null&&!(t instanceof e))throw new Error("parent must be a Control or nil");if(t&&t.runtime!==this.runtime)throw new Error("parent must belong to the same runtime");if(t===this)throw new Error("cannot parent a control to itself or its descendant");for(let n=t;n;n=n._parent)if(n===this)throw new Error("cannot parent a control to itself or its descendant");let i=this._parent;if(i){let n=i.children.indexOf(this);n>=0&&i.children.splice(n,1),i.markPlayDirty(!0)}else{let n=this.runtime.roots.indexOf(this);n>=0&&this.runtime.roots.splice(n,1)}this._parent=t,this.markPlayDirty(!0),t&&!t.children.includes(this)?(t.children.push(this),t.markPlayDirty(!0)):!t&&this.alive&&!this.runtime.roots.includes(this)&&this.runtime.roots.push(this)}markPlayDirty(t=!1){this._playDirty=!0,t&&(this._playDeepDirty=!0);for(let i=this._parent;i&&!i._playChildDirty;i=i._parent)i._playChildDirty=!0}get activeInHierarchy(){return this.active?this._parent?this._parent.activeInHierarchy:!0:!1}get scrollProgress(){return this._scrollProgress??0}set scrollProgress(t){if(typeof t!="number"||!Number.isFinite(t))throw new Error("scrollProgress must be a finite number");this._scrollProgress=Mi(t),this.markPlayDirty()}addChild(t){return t.parent=this,t}GetChildren(){return this.children.slice()}GetChild(t){return this.children.find(i=>i.name===t)||null}FindChild(t){if(!t)return null;if(!t.includes("/"))return this.GetChild(t);let i=t.split("/").filter(Boolean),n=this;for(let r of i)if(n=n.GetChild(r),!n)return null;return n}SetActive(t){let i=!!t;if(this.active!==i){if(typeof this.runtime?.onControlActiveChanging=="function"){this.runtime.onControlActiveChanging(this,i);return}this.active=i,this.markPlayDirty(!0)}}SetVisible(t){this.visible=!!t,this.markPlayDirty(!0)}GetSiblingIndex(){if(!this._parent)return-1;let t=this._parent.children,i=t.indexOf(this);return i<0?-1:t.length-1-i}SetSiblingIndex(t){if(!this._parent)return!1;let i=this._parent.children,n=i.indexOf(this);if(n<0)return!1;let r=i.length-1;return!Number.isInteger(t)||t<0||t>r?!1:(i.splice(n,1),i.splice(r-t,0,this),this._parent.markPlayDirty(!0),this.markPlayDirty(),!0)}SetAsFirstSibling(){return this.SetSiblingIndex(0)}SetAsLastSibling(){return this._parent?this.SetSiblingIndex(this._parent.children.length-1):!1}GetAnchoredPosition(){return[this.anchoredPositionX,this.anchoredPositionY]}SetAnchoredPosition(t,i){this.anchoredPositionX=t,this.anchoredPositionY=i,this.markPlayDirty()}GetSizeDelta(){return[this.sizeDeltaX,this.sizeDeltaY]}SetSizeDelta(t,i){this.sizeDeltaX=t,this.sizeDeltaY=i,this.markPlayDirty(!0)}GetAnchorMin(){return[this.anchorMinX,this.anchorMinY]}SetAnchorMin(t,i){this.anchorMinX=t,this.anchorMinY=i,this.markPlayDirty(!0)}GetAnchorMax(){return[this.anchorMaxX,this.anchorMaxY]}SetAnchorMax(t,i){this.anchorMaxX=t,this.anchorMaxY=i,this.markPlayDirty(!0)}GetPivot(){return[this.pivotX,this.pivotY]}SetPivot(t,i){this.pivotX=t,this.pivotY=i,this.markPlayDirty(!0)}GetLocalScale(){return[this.localScaleX,this.localScaleY,this.localScaleZ]}SetLocalScale(t,i,n){this.localScaleX=t,this.localScaleY=i,this.localScaleZ=n,this.markPlayDirty()}GetLocalRotation(){return Ca(this.localRotationX,this.localRotationY,this.localRotationZ)}luaFieldValue(t){if(t==="imageType")return this.imageType??"Stretch";let i=Kl.indexOf(t);return i<0?this[t]:Ca(this.localRotationX,this.localRotationY,this.localRotationZ)[i]}SetLocalRotation(t,i,n){this.localRotationX=t,this.localRotationY=i,this.localRotationZ=n,this.markPlayDirty()}GetScriptByPath(t){return this.scripts.find(i=>i.path===t)||null}GetScript(t){return this.scripts.find(i=>i.scriptMappingId===t)||null}GetScripts(){return this.scripts.slice()}_addListener(t,i,n){let r=t.get(i)||[];r.push(n),t.set(i,r),this.runtime.retainLuaCallback?.(n)}_removeListener(t,i,n){let r=t.get(i);if(!r)return;let a=r.filter(o=>o!==n);t.set(i,a);for(let o=a.length;o<r.length;o++)this.runtime.unrefLuaCallback?.(n)}_removeListeners(t,i){let n=t.get(i)||[];for(let r of n)this.runtime.unrefLuaCallback?.(r);t.delete(i)}_removeAllListeners(t){for(let i of t.values())for(let n of i)this.runtime.unrefLuaCallback?.(n);t.clear()}AddCursorEventListener(t,i){this._addListener(this.cursorListeners,t,i)}RemoveCursorEventListener(t,i){this._removeListener(this.cursorListeners,t,i)}RemoveCursorEventListeners(t){this._removeListeners(this.cursorListeners,t)}RemoveAllCursorEventListeners(){this._removeAllListeners(this.cursorListeners)}SimulateCursorClick(){let t=this.runtime.makeCursorEventData({x:0,y:0,pressX:0,pressY:0});this.emitCursor("CursorDown",t),this.emitCursor("CursorUp",t),this.emitCursor("CursorClick",t)}emitCursor(t,i){if(!this.runtime.cursorEventsEnabled(this))return;let n=this.cursorListeners.get(t)||[];for(let r of n)r(i)}AddKeyEventListener(t,i){this._addListener(this.keyListeners,t,i)}RemoveKeyEventListener(t,i){this._removeListener(this.keyListeners,t,i)}RemoveKeyEventListeners(t){this._removeListeners(this.keyListeners,t)}RemoveAllKeyEventListeners(){this._removeAllListeners(this.keyListeners)}emitKey(t){let i=this.keyListeners.get(t)||[];for(let n of i)if(n()===!0)return!0;return!1}AddNavigationEventListener(t,i){this._addListener(this.navListeners,t,i)}RemoveNavigationEventListener(t,i){this._removeListener(this.navListeners,t,i)}RemoveNavigationEventListeners(t){this._removeListeners(this.navListeners,t)}RemoveAllNavigationEventListeners(){this._removeAllListeners(this.navListeners)}SetControllerNavigation(t,i,n){this.navConfig.set(t,{mode:i,target:n})}GetControllerNavigation(t){let i=this.navConfig.get(t),n=i?[i.mode,i.target]:[null,null];return n.__multi=!0,n}SetImage(t,i){let n=this.imageSource?.Name||this.imageSource,r=t?.Name||t;(i!==this.imageId||n!==r)&&(this.imageType=null),this.imageSource=t,this.imageId=i,this.markPlayDirty()}SetSoftEdgeWidth(t,i){this.softEdgeWidthX=t,this.softEdgeWidthY=i,this.markPlayDirty()}SetFillUnused(){this.fillType="Unused",this.markPlayDirty()}SetFillHorizontal(t,i){this.fillType="Horizontal",this.fillHorizontalType=t,this.fillAmount=i,this.markPlayDirty()}SetFillVertical(t,i){this.fillType="Vertical",this.fillVerticalType=t,this.fillAmount=i,this.markPlayDirty()}SetFillRadial90(t,i){this.fillType="Radial90",this.fillRadial90Type=t,this.fillAmount=i,this.markPlayDirty()}SetFillRadial180(t,i){this.fillType="Radial180",this.fillRadialType=t,this.fillAmount=i,this.markPlayDirty()}SetFillRadial360(t,i){this.fillType="Radial360",this.fillRadialType=t,this.fillAmount=i,this.markPlayDirty()}PlayAnimation(){}StopAnimation(){}RefreshItems(t,i){if(!Number.isInteger(t)||t<0||t>2e3)throw new Error("RefreshItems: simulator supports 0..2000 items");if(typeof i!="function")throw new Error("RefreshItems: callback must be a function");if(!this.alive||this._refreshingGrid)throw new Error("RefreshItems: destroyed control or recursive refresh");if(t&&!this.runtime.templates.has(Number(this.itemPrefabIndex)))throw new Error("RefreshItems: item template not found");if(t&&["OnInit","OnDestroy"].includes(this.runtime.lifecyclePhase))throw new Error("RefreshItems: items cannot be created during OnInit/OnDestroy");this._refreshingGrid=!0;try{this._gridItems||=[];let n=[];for(let r of this._gridItems)r.alive&&r.parent===this&&r.prefabIndex===Number(this.itemPrefabIndex)&&n.length<t?n.push(r):r.alive&&r.parent===this&&this.runtime.destroyControl(r);for(this._gridItems=n;n.length<t;){let r=this.runtime.instantiate(this.itemPrefabIndex,this,this.runtime.lifecyclePhase);if(!r)throw new Error("RefreshItems: could not instantiate item");n.push(r),r.SetActive(!0)}this.itemCount=t,Ot(this),this.markPlayDirty(!0);for(let r=0;r<n.length&&this.alive;r+=1)i(n[r],r)}finally{this._refreshingGrid=!1}}GetItemIndex(t){return t?.alive&&t.parent===this?this._gridItems?.indexOf(t)??-1:-1}GetItemSize(){return[this.cellSizeX,this.cellSizeY]}GetItemSpacing(){return[this.spacingX,this.spacingY]}GetPadding(){return[this.padding1Y,this.padding2Y,this.padding1X,this.padding2X]}ScrollToItemAt(t,i){if(!Number.isInteger(t)||t<0||t>=this.itemCount)throw new Error("ScrollToItemAt: item index out of range");let n=ai(this),r=n.horizontal?n.cellW:n.cellH,a=n.horizontal?n.gapX:n.gapY,o=(n.horizontal?n.left:n.top)+Math.floor(t/n.lanes)*(r+a),l=i?.Name||i;if(!["Top","Center","Bottom"].includes(l))throw new Error("ScrollToItemAt: invalid alignment");let u=o-(l==="Center"?(n.viewport-r)/2:l==="Bottom"?n.viewport-r:0);this.scrollProgress=n.max?Mi(u/n.max):0,Ot(this),this.markPlayDirty(!0)}GetContentLength(){return ai(this).length}};function $e(e,t){t(e);for(let i of e.children)$e(i,t)}function Nn(e,t=[],i=""){t.push(`${i}${e.name||"(unnamed)"} [${e.typeofName}] Id=${e.Id}`);for(let n of e.children)Nn(n,t,i+" ");return t}function Fi(e){return e<1/2.75?7.5625*e*e:e<2/2.75?7.5625*(e-=1.5/2.75)*e+.75:e<2.5/2.75?7.5625*(e-=2.25/2.75)*e+.9375:7.5625*(e-=2.625/2.75)*e+.984375}var Ea={Linear:e=>e,InSine:e=>1-Math.cos(e*Math.PI/2),OutSine:e=>Math.sin(e*Math.PI/2),InOutSine:e=>-(Math.cos(Math.PI*e)-1)/2,InQuad:e=>e*e,OutQuad:e=>1-(1-e)*(1-e),InOutQuad:e=>e<.5?2*e*e:1-(-2*e+2)**2/2,InCubic:e=>e*e*e,OutCubic:e=>1-(1-e)**3,InOutCubic:e=>e<.5?4*e*e*e:1-(-2*e+2)**3/2,InQuart:e=>e**4,OutQuart:e=>1-(1-e)**4,InOutQuart:e=>e<.5?8*e**4:1-(-2*e+2)**4/2,InQuint:e=>e**5,OutQuint:e=>1-(1-e)**5,InOutQuint:e=>e<.5?16*e**5:1-(-2*e+2)**5/2,InExpo:e=>e===0?0:2**(10*e-10),OutExpo:e=>e===1?1:1-2**(-10*e),InOutExpo:e=>e===0||e===1?e:e<.5?2**(20*e-10)/2:(2-2**(-20*e+10))/2,InCirc:e=>1-Math.sqrt(1-e**2),OutCirc:e=>Math.sqrt(1-(e-1)**2),InOutCirc:e=>e<.5?(1-Math.sqrt(1-(2*e)**2))/2:(Math.sqrt(1-(-2*e+2)**2)+1)/2,InBack:e=>(1.70158+1)*e*e*e-1.70158*e*e,OutBack:e=>1+2.70158*(e-1)**3+1.70158*(e-1)**2,InOutBack:e=>{let i=2.5949095;return e<.5?(2*e)**2*((i+1)*2*e-i)/2:((2*e-2)**2*((i+1)*(e*2-2)+i)+2)/2},InElastic:e=>e===0||e===1?e:-(2**(10*e-10))*Math.sin((e*10-10.75)*(2*Math.PI/3)),OutElastic:e=>e===0||e===1?e:2**(-10*e)*Math.sin((e*10-.75)*(2*Math.PI/3))+1,InOutElastic:e=>{if(e===0||e===1)return e;let t=2*Math.PI/4.5;return e<.5?-(2**(20*e-10)*Math.sin((20*e-11.125)*t))/2:2**(-20*e+10)*Math.sin((20*e-11.125)*t)/2+1},InBounce:e=>1-Fi(1-e),OutBounce:Fi,InOutBounce:e=>e<.5?(1-Fi(1-2*e))/2:(1+Fi(2*e-1))/2};function Aa(e,t){let i=Ea[e]||Ea.Linear;return t<=0?0:t>=1?1:i(t)}function $t(e,t,i,n=255){let r=Oi(e),a=Oi(t),o=Oi(i);return((n==null?255:Oi(n))<<24|r<<16|a<<8|o)>>>0}function oi(e){let t=e>>>0;return[t>>>16&255,t>>>8&255,t&255,t>>>24&255]}function Oi(e){let t=Number(e);return Number.isFinite(t)?Math.max(0,Math.min(255,Math.trunc(t))):0}function _a(e,t,i){let n=oi(e),r=oi(t);return $t(n[0]+(r[0]-n[0])*i,n[1]+(r[1]-n[1])*i,n[2]+(r[2]-n[2])*i,n[3]+(r[3]-n[3])*i)}var Ll=new Set(["fontColor","bgColor","outlineColor","imageColor"]),Wl=new Set(["fontSize","minimumFontSize"]),Fn=1e-9;function Jl(e,t){return typeof e?.luaFieldValue=="function"?e.luaFieldValue(t):e[t]}var li=class{constructor(t,i,n,r){this.runtime=t,this.object=i,this.data={...n},this.duration=Math.max(0,Number(r)||0),this.easeName="Linear",this.relative=!1,this.playing=!1,this.paused=!1,this.elapsed=0,this.loops=1,this.loopIndex=0,this.from={},this.to={},this.initialFrom=null,this.initialTo=null,this.onComplete=null,this.onStepComplete=null,this.killed=!1,this.dead=!1,this.completed=!1}capture(){this.from={},this.to={};for(let[t,i]of Object.entries(this.data)){let n=Jl(this.object,t);this.from[t]=n,this.to[t]=this.relative?Number(n)+Number(i):i}}restoreInitial(){this.from={...this.initialFrom},this.to={...this.initialTo}}SetEase(t){return this.easeName=typeof t=="string"?t:t?.Name||"Linear",this}SetRelative(t){return this.relative=!!t,this}Play(){return this.dead?this:this.playing?(this.paused=!1,this):this._start(!1)}_begin(t){this.playing=!0,this.paused=!1,this.elapsed=0,this.loopIndex=0,this.killed=!1,this.completed=!1,t&&this.initialFrom?this.restoreInitial():(this.capture(),this.initialFrom={...this.from},this.initialTo={...this.to})}_start(t){return this._begin(t),this.runtime.tweens.add(this),this.runtime.animations.add(this),this}get loopCount(){return this.loops>0?this.loops:1}Pause(){this.paused=!0}Resume(){this.paused=!1}Restart(){return this.dead?this:this._start(!0)}Complete(){this.dead||this.completed||(this.initialFrom||this._begin(!1),this.apply(1),this.finish(!0))}Kill(t){t?this.Complete():this.finish(!1),this.dead=!0}SetOnComplete(t){return this.onComplete=t,this}SetOnStepComplete(t){return this.onStepComplete=t,this}SetLoops(t){return this.loops=t,this}apply(t){if(this.object?.alive===!1)return;let i=Aa(this.easeName,t),n=!1,r=!1;for(let a of Object.keys(this.to)){let o=this.from[a],l=this.to[a];if(Ll.has(a)&&typeof o=="number"&&typeof l=="number")this.object[a]=_a(o,l,i);else if(typeof o=="number"&&typeof l=="number"){let u=o+(l-o)*i;this.object[a]=Wl.has(a)?Math.trunc(u):u}else this.object[a]=i>=1?l:o;n=!0,Ni.has(a)&&(r=!0)}n&&typeof this.object?.markPlayDirty=="function"&&this.object.markPlayDirty(r)}_advance(t,i){this.elapsed+=t;let n=this.duration<=0?1:Math.min(1,this.elapsed/this.duration);return this.apply(n),n<1?!1:i>=0&&this.loopIndex+1>=i?!0:(this.onStepComplete&&this.runtime.safeCall(this.onStepComplete),this.loopIndex++,this.elapsed=0,this.restoreInitial(),!1)}step(t){!this.playing||this.paused||this.killed||this._advance(t,this.loops<0?-1:this.loopCount)&&(this.onStepComplete&&this.runtime.safeCall(this.onStepComplete),this.finish(!0))}finish(t){this.playing=!1,this.killed=!0,t&&(this.completed=!0),this.runtime.tweens.delete(this),this.runtime.animations.delete(this),t&&this.onComplete&&this.runtime.safeCall(this.onComplete)}},Gt=class{constructor(t){this.runtime=t,this.steps=[],this.playing=!1,this.paused=!1,this.killed=!1,this.dead=!1,this.completed=!1,this.elapsed=0,this.loops=1,this.loopIndex=0,this.onComplete=null,this.onStepComplete=null,this._entries=null}Append(t){return this.steps.push({kind:"tween",tween:t,parallel:!1}),this}AppendInterval(t){return this.steps.push({kind:"interval",duration:t}),this}AppendCallback(t){return this.steps.push({kind:"callback",fn:t}),this}Join(t){return this.steps.push({kind:"tween",tween:t,parallel:!0}),this}Insert(t,i){return this.steps.push({kind:"insert",time:t,tween:i}),this}InsertCallback(t,i){return this.steps.push({kind:"insertCb",time:t,fn:i}),this}Play(){return this.dead?this:this.playing?(this.paused=!1,this):this._play()}_play(){return this.playing=!0,this.paused=!1,this.killed=!1,this.completed=!1,this.elapsed=0,this.loopIndex=0,this._schedule(),this.runtime.sequences.add(this),this.runtime.animations.add(this),this}_schedule(){let t=0,i=0,n=!1,r=[],a=o=>o.duration*o.loopCount;for(let o of this.steps)if(o.kind==="tween"&&o.parallel){let l=n?i:t;r.push({at:l,tween:o.tween}),t=Math.max(t,l+a(o.tween))}else o.kind==="tween"?(r.push({at:t,tween:o.tween}),i=t,n=!0,t+=a(o.tween)):o.kind==="interval"?(i=t,n=!0,t+=o.duration):o.kind==="callback"?r.push({at:t,fn:o.fn}):o.kind==="insert"?(r.push({at:o.time,tween:o.tween}),t=Math.max(t,o.time+a(o.tween))):o.kind==="insertCb"&&(r.push({at:o.time,fn:o.fn}),t=Math.max(t,o.time));this._entries=r.map((o,l)=>({...o,index:l,end:o.tween?o.at+a(o.tween):o.at})),this._end=t,this._resetEntries()}_resetEntries(){for(let t of this._entries)t.started=!1,t.done=!1}_startChild(t){t.started=!0,t.tween._begin(!!t.tween.initialFrom)}_finishChild(t){t.done=!0,t.tween.apply(1),t.tween.onStepComplete&&this.runtime.safeCall(t.tween.onStepComplete),t.tween.finish(!0)}_advanceTo(t,i){let n=this._entries,r=[];for(let o of n)!o.started&&o.at<=t+Fn&&r.push({at:o.at,rank:o.fn?1:2,entry:o}),o.tween&&!o.done&&o.end<=t+Fn&&r.push({at:o.end,rank:0,entry:o});r.sort((o,l)=>o.at-l.at||o.rank-l.rank||o.entry.index-l.entry.index);let a=new Set;for(let{rank:o,entry:l}of r)if(o===1){if(l.started=!0,this.runtime.safeCall(l.fn),!this.playing||this.killed||this._entries!==n)return!1}else l.started||(this._startChild(l),a.add(l)),o===0&&!l.done&&this._finishChild(l);for(let o of n)!o.tween||!o.started||o.done||(a.has(o)?o.tween._advance(t-o.at,o.tween.loopCount):o.tween._advance(i,o.tween.loopCount));return!0}step(t){!this.playing||this.paused||this.killed||(this.elapsed+=t,this._advanceTo(this.elapsed,t)&&(this.elapsed+Fn<this._end||(this.onStepComplete&&this.runtime.safeCall(this.onStepComplete),this.loopIndex++,this.loops<0||this.loopIndex<this.loops?(this.elapsed=0,this._resetEntries()):this.finish(!0))))}Pause(){this.paused=!0}Resume(){this.paused=!1}Restart(){this.dead||this._play()}Complete(){this.dead||this.completed||(this._entries||this._schedule(),this.playing=!0,this.killed=!1,this._advanceTo(1/0,0)&&(this.onStepComplete&&this.runtime.safeCall(this.onStepComplete),this.finish(!0)))}Kill(t){t?this.Complete():this.finish(!1),this.dead=!0}SetOnComplete(t){return this.onComplete=t,this}SetOnStepComplete(t){return this.onStepComplete=t,this}SetLoops(t){return this.loops=t,this}finish(t){this.playing=!1,this.killed=!0,t&&(this.completed=!0),this.runtime.sequences.delete(this),this.runtime.animations.delete(this),t&&this.onComplete&&this.runtime.safeCall(this.onComplete)}};var zi={EaseType:["Linear","InSine","OutSine","InOutSine","InQuad","OutQuad","InOutQuad","InCubic","OutCubic","InOutCubic","InQuart","OutQuart","InOutQuart","InQuint","OutQuint","InOutQuint","InExpo","OutExpo","InOutExpo","InCirc","OutCirc","InOutCirc","InBack","OutBack","InOutBack","InElastic","OutElastic","InOutElastic","InBounce","OutBounce","InOutBounce"],CustomVariableEntityType:["Level","PlayerSelf","AvatarSelf"],Device:["KeyboardAndMouse","Mobile","Controller","MobileController"],StageMode:["Beyond","Classic"],LanguageType:["LanguageNone","LanguageEng","LanguageChs","LanguageCht","LanguageFra","LanguageDeu","LanguageSpa","LanguagePor","LanguageRus","LanguageJpn","LanguageKor","LanguageTha","LanguageVie","LanguageInd","LanguageTur","LanguageIta"],ParamType:["Entity","EntityList","Int","IntList","Bool","BoolList","Float","FloatList","String","StringList","Vector3","Vector3List","Guid","GuidList","ConfigId","PrefabId","ConfigIdList","PrefabIdList"],CursorEventType:["CursorDown","CursorUp","CursorEnter","CursorExit","CursorDrag","CursorBeginDrag","CursorEndDrag","CursorClick"],ScrollDirection:["Horizontal","Vertical"],ScrollLayoutConstraint:["AutoWrap","Fixed"],ScrollAlignType:["Bottom","Center","Top"],ControllerNavigationDir:["Up","Down","Left","Right"],ControllerNavigationEventType:["Confirm","Cancel","Focus","LostFocus","RightStickUp","RightStickDown","RightStickRight","RightStickLeft","LeftStickUp","LeftStickDown","LeftStickRight","LeftStickLeft"],ControllerNavigationMode:["None","NearestControl","Specified"],TextHorizontalAlignment:["Left","Middle","Right"],TextVerticalAlignment:["Top","Middle","Bottom"],ImageType:["Basic","Stretch"],ImageSource:["StaticReference","Item","Equipment","Skill","UnitStatus","Faction","Currency","Prefab"],ImageFillType:["Unused","Horizontal","Vertical","Radial90","Radial180","Radial360"],ImageFillHorizontalType:["Left","Right"],ImageFillVerticalType:["Bottom","Top"],ImageFillRadial90Type:["BottomLeft","TopLeft","TopRight","BottomRight"],ImageFillRadialType:["Bottom","Left","Top","Right"],ImageMaskSoftEdgeMode:["Percentage","Pixel"],UIAnimationLayer:["AboveAllControls","BelowAllControls"]},Zl=[...Array.from({length:43},(e,t)=>`CraftspersonKey${t+1}`),"MoveForwardKey","MoveBackwardKey","MoveLeftKey","MoveRightKey","SwitchToWalkOrRunKey","SprintKey","JumpKey","DropKey","OpenShortcutWheelKey","InteractKey","NormalAttackKey","CharacterSkill1Key","CharacterSkill2Key","CharacterSkill3Key","CharacterSkill4Key","None"],Ql=[...Array.from({length:14},(e,t)=>`CraftspersonKey${t+1}`),"SprintKey","JumpKey","InteractKey","NormalAttackKey","CharacterSkill1Key","CharacterSkill2Key","CharacterSkill3Key","CharacterSkill4Key","MenuConfirmKey","MenuBackKey","None"];function es(){let e=[];for(let t of["Down","Up"]){for(let i=1;i<=43;i++)e.push(`KeyboardCraftspersonKey${i}${t}`);for(let i of["MoveForwardKey","MoveBackwardKey","MoveLeftKey","MoveRightKey","SwitchToWalkOrRunKey","SprintKey","JumpKey","DropKey","OpenShortcutWheelKey","InteractKey","NormalAttackKey","CharacterSkill1Key","CharacterSkill2Key","CharacterSkill3Key","CharacterSkill4Key"])e.push(`Keyboard${i}${t}`);for(let i=1;i<=14;i++)e.push(`ControllerCraftspersonKey${i}${t}`);for(let i of["SprintKey","JumpKey","InteractKey","NormalAttackKey","CharacterSkill1Key","CharacterSkill2Key","CharacterSkill3Key","CharacterSkill4Key","MenuConfirmKey","MenuBackKey"])e.push(`Controller${i}${t}`)}return e}zi.KeyboardKeyCode=Zl;zi.ControllerKeyCode=Ql;zi.KeyEventType=es();var Ta=new Map;function ht(e,t){let i=`${e}\0${t}`,n=Ta.get(i);return n||(n={__kind:"EnumItem",Name:t,FullName:`Enum.${e}.${t}`,EnumType:e},Ta.set(i,n)),n}function On(e,t){return t==null?t:t.__kind==="EnumItem"?ht(t.EnumType||e,t.Name):typeof t=="string"&&t?ht(e,t):t}function zn(){let e={};for(let[t,i]of Object.entries(zi)){let n={};for(let r of i)n[r]=ht(t,r);e[t]=n}return e}var ts=new Set(["Id","prefabIndex","imageId","fontSize","minimumFontSize","clickAudioId","itemCount","itemPrefabIndex","animationId","referencedPrefabIndex"]),is=new Set(["imageColor","fontColor","bgColor","outlineColor"]),Pa={horizontalAlignment:"TextHorizontalAlignment",verticalAlignment:"TextVerticalAlignment",imageSource:"ImageSource",imageType:"ImageType",fillType:"ImageFillType",fillHorizontalType:"ImageFillHorizontalType",fillVerticalType:"ImageFillVerticalType",fillRadial90Type:"ImageFillRadial90Type",fillRadialType:"ImageFillRadialType",softEdgeMode:"ImageMaskSoftEdgeMode",layer:"UIAnimationLayer",scrollDirection:"ScrollDirection",layoutConstraint:"ScrollLayoutConstraint"},mt=c.LUA_REGISTRYINDEX,Ra=c.LUA_MULTRET,ns=Object.freeze({InstantiateClientUIControl:2,DestroyClientUIControl:1,GetClientUIControl:1,FindClientUIRoot:1,GetClientUIRoots:0,GetUICanvasSize:0,GetCursorUIPos:0,GetDevice:0,SetControllerFocus:1,GetControllerFocus:0,GetControllerLeftStickAxis:0,GetControllerRightStickAxis:0,Tween:3,TweenSequence:0,ServerSignal:1,GetGlobalCustomVariableValue:2,PauseLevelTime:1,IsLevelTimePaused:0,PlayAudio2D:1,StopAudio:1,IsAudioAlive:1,GetLanguageType:0,GetStageMode:0,IsTestPlay:0,GetText:1,PrintClientUITree:0});function Se(e){return e==null?"":typeof e=="string"?e:e.Name||e.FullName||String(e)}var $i=class{constructor(t={}){this.canvasWidth=t.canvasWidth??1600,this.canvasHeight=t.canvasHeight??900,this.device=t.device??"KeyboardAndMouse",this.language=t.language??"LanguageChs",this.stageMode=t.stageMode??"Classic",this.testPlay=t.testPlay!==!1,this.canSelectImageType=t.canSelectImageType||(()=>!1),this.clock={time:0,levelTime:0,paused:!1,frame:0},this.logs=[],this.mountErrors=[],this.tweens=new Set,this.sequences=new Set,this.animations=new Set,this.audios=new Map,this.nextAudioId=1,this.audioDuration=t.audioDuration||(()=>null),this.audioHistory=[],this.audioWarnings=new Set,this.audioRevision=0,this._nextControlId=1,this._playRemoved=[],this._nextScriptMappingId=1,this.lifecyclePhase="idle",this.controlsById=new Map,this.roots=[],this.templates=new Map,this.scriptFiles=new Map,this.requireAliases=new Map,this.requireCache=new Map,this.moduleBaseEnvironments=new Map,this.luaFunctions=new Map,this.mountedScripts=[],this.serverVars={Level:Object.create(null),PlayerSelf:Object.create(null),AvatarSelf:Object.create(null)},this.serverBridge=null,this.varHandlers=[],this.signalHandlers=[],this.cursor={x:0,y:0},this.focus=null,this.stick={left:[0,0],right:[0,0]},this.enumTree=zn(),this.luaStates=new Set,this.L=null}nextControlId(){let t=this._nextControlId;return this._nextControlId+=1,t}resolveScriptMappingId(t){let i=Number(t);if(Number.isSafeInteger(i)&&i>0)return this._nextScriptMappingId=Math.max(this._nextScriptMappingId,i+1),i;let n=this._nextScriptMappingId;return this._nextScriptMappingId+=1,n}pushPackedColor(t,i){let n=i>>>0;(n|0)===n?c.lua_pushinteger(t,n):c.lua_pushnumber(t,n)}retainLuaCallback(t){ga(t)}unrefLuaCallback(t){ya(this,t)}log(t,...i){let n=i.map(r=>r==null?"nil":typeof r=="object"&&r!==null&&r.__kind==="EnumItem"?r.Name:String(r)).join(" ");this.logs.push({level:t,text:n,time:this.clock.time})}safeCall(t,...i){try{return t(...i)}catch(n){this.log("lua-error",n&&n.message?n.message:String(n))}}scriptCanRun(t){if(!t?.alive||!t.enabled)return!1;let i=t.object;return!i||i.alive&&i.activeInHierarchy}cursorEventsEnabled(t){for(let i=t;i;i=i.parent)if(i.kind==="container"&&i.showCursor===!0)return!0;return!1}registerTemplate(t,i){this.templates.set(Number(t),i)}registerScriptFile(t,i){let n=this.normalizeRequirePath(t);this.scriptFiles.set(n,i),n.startsWith("default_import_file/")||this.requireAliases.set(`default_import_file/${n}`,n)}normalizeRequirePath(t){let i=String(t).replace(/\\/g,"/");return i.endsWith(".lua")&&(i=i.slice(0,-4)),i}addRoot(t){let i=t instanceof it?t:new it(this,t);return this.roots.push(i),$e(i,n=>this.controlsById.set(n.Id,n)),this.mountSpecScripts(t,i),i}mountSpecScripts(t,i){if(t instanceof it)return;let n=a=>(a.scripts?.length||0)>0||(a.children||[]).some(n);if(!t||!n(t))return;let r=this.lifecyclePhase;try{let a=(o,l)=>{for(let s of o.scripts||[])try{this.mountScript({path:s.path,source:s.source,control:l,scriptMappingId:s.scriptMappingId})}catch(f){let h=f&&f.message?f.message:String(f);this.mountErrors.push(h),this.log("lua-error",h)}let u=o.children||[];for(let s=0;s<u.length;s+=1)a(u[s],l?.children?.[s])};a(t,i)}finally{this.lifecyclePhase=r}}makeCursorEventData({x:t=0,y:i=0,pressX:n=t,pressY:r=i,deltaX:a=t-n,deltaY:o=i-r,dragging:l=!1,touchId:u=-1}={}){let s=this;return{__kind:"CursorEventData",typeofName:"CursorEventData",dragging:l,touchId:u,x:t,y:i,pressX:n,pressY:r,GetUIPos(){return[t,i]},GetPressUIPos(){return[n,r]},GetUIPosDelta(){return[a,o]}}}boot(){let t=this.newLuaThread();this.L=t}installGlobals(t){let i=this;c.lua_pushcfunction(t,n=>{let r=c.lua_gettop(n),a=[];for(let o=1;o<=r;o++)a.push(ye(n,i,o));return i.log("info",...a),0}),c.lua_setglobal(t,P("print")),c.lua_pushcfunction(t,n=>{let r=c.lua_gettop(n),a=[];for(let o=1;o<=r;o++)a.push(ye(n,i,o));return i.log("error",...a),0}),c.lua_setglobal(t,P("printerr")),c.lua_pushcfunction(t,n=>{if(c.lua_type(n,1)===c.LUA_TTABLE&&!Ue(n,1))return c.lua_pushstring(n,P("table")),1;let r=ye(n,i,1);return c.lua_pushstring(n,P(i.typeofOf(r))),1}),c.lua_setglobal(t,P("typeof")),this.pushColorLib(t),this.pushEnumLib(t),this.pushGameLib(t),c.lua_pushcfunction(t,n=>i.luaRequire(n)),c.lua_setglobal(t,P("require"))}typeofOf(t){return t==null?"nil":t.__kind==="Script"?"Script":t.__kind==="EnumItem"?"EnumItem":t.__kind==="CursorEventData"?"CursorEventData":t.__kind==="ServerSignal"?"ServerSignal":t instanceof Gt?"TweenSequence":t instanceof li?"Tween":t.typeofName?t.typeofName:typeof t=="number"?"number":typeof t=="string"?"string":typeof t=="boolean"?"boolean":typeof t}pushColorLib(t){c.lua_newtable(t),c.lua_pushcfunction(t,i=>(this.pushPackedColor(i,$t(c.lua_tonumber(i,1),c.lua_tonumber(i,2),c.lua_tonumber(i,3),255)),1)),c.lua_setfield(t,-2,P("FromRGB")),c.lua_pushcfunction(t,i=>{let n=c.lua_isnoneornil(i,4)?255:c.lua_tonumber(i,4);return this.pushPackedColor(i,$t(c.lua_tonumber(i,1),c.lua_tonumber(i,2),c.lua_tonumber(i,3),n)),1}),c.lua_setfield(t,-2,P("FromRGBA")),c.lua_pushcfunction(t,i=>{let n=c.lua_tonumber(i,1)>>>0;for(let r of oi(n))c.lua_pushinteger(i,r);return 4}),c.lua_setfield(t,-2,P("ToRGBA")),c.lua_newtable(t),c.lua_pushcfunction(t,i=>{let n=c.lua_tonumber(i,2),r=c.lua_tonumber(i,3),a=c.lua_tonumber(i,4),o=c.lua_isnoneornil(i,5)?255:c.lua_tonumber(i,5);return this.pushPackedColor(i,$t(n,r,a,o)),1}),c.lua_setfield(t,-2,P("__call")),c.lua_setmetatable(t,-2),c.lua_setglobal(t,P("Color"))}pushEnumLib(t){c.lua_newtable(t);for(let[i,n]of Object.entries(this.enumTree)){c.lua_newtable(t);for(let[r,a]of Object.entries(n))this.pushEnumItem(t,a),c.lua_setfield(t,-2,P(r));c.lua_setfield(t,-2,P(i))}c.lua_setglobal(t,P("Enum"))}pushEnumItem(t,i){let n=c.lua_newuserdata(t,0);dt(n,i),Q.luaL_setmetatable(t,P("EnumItem"))}pushControl(t,i){let n=c.lua_newuserdata(t,0);dt(n,i),Q.luaL_setmetatable(t,P("Control"))}pushScript(t,i){c.lua_newtable(t),c.lua_pushlightuserdata(t,Pn);let n=c.lua_newuserdata(t,0);dt(n,i),c.lua_rawset(t,-3),Q.luaL_getmetatable(t,P("Script")),c.lua_setmetatable(t,-2)}pushTween(t,i){let n=c.lua_newuserdata(t,0);dt(n,i);let r=i instanceof Gt?"TweenSequence":"Tween";Q.luaL_setmetatable(t,P(r))}pushSignal(t,i){let n=c.lua_newuserdata(t,0);dt(n,i),Q.luaL_setmetatable(t,P("ServerSignal"))}pushCursor(t,i){let n=c.lua_newuserdata(t,0);dt(n,i),Q.luaL_setmetatable(t,P("CursorEventData"))}pushGameLib(t){let i=this;c.lua_newtable(t);let n={InstantiateClientUIControl:r=>{let a=c.lua_tointeger(r,1),o=xe(c.lua_touserdata(r,2)),l=i.instantiate(a,o,i.lifecyclePhase);return l?(i.pushControl(r,l),1):(c.lua_pushnil(r),1)},DestroyClientUIControl:r=>{let a=xe(c.lua_touserdata(r,1));return a&&i.destroyControl(a),0},GetClientUIControl:r=>{let a=c.lua_tointeger(r,1),o=i.controlsById.get(a);return o?i.pushControl(r,o):c.lua_pushnil(r),1},FindClientUIRoot:r=>{let a=W(r,1),o=i.roots.find(l=>l.name===a);return o?i.pushControl(r,o):c.lua_pushnil(r),1},GetClientUIRoots:r=>(c.lua_createtable(r,i.roots.length,0),i.roots.forEach((a,o)=>{i.pushControl(r,a),c.lua_rawseti(r,-2,o+1)}),1),GetUICanvasSize:r=>(c.lua_pushnumber(r,i.canvasWidth),c.lua_pushnumber(r,i.canvasHeight),2),GetCursorUIPos:r=>(c.lua_pushnumber(r,i.cursor.x),c.lua_pushnumber(r,i.cursor.y),2),GetDevice:r=>(i.pushEnumItem(r,ht("Device",i.device)),1),SetControllerFocus:r=>(i.focus=xe(c.lua_touserdata(r,1)),0),GetControllerFocus:r=>(i.focus?i.pushControl(r,i.focus):c.lua_pushnil(r),1),GetControllerLeftStickAxis:r=>(c.lua_pushnumber(r,i.stick.left[0]),c.lua_pushnumber(r,i.stick.left[1]),2),GetControllerRightStickAxis:r=>(c.lua_pushnumber(r,i.stick.right[0]),c.lua_pushnumber(r,i.stick.right[1]),2),Tween:r=>{let a=xe(c.lua_touserdata(r,1))||ye(r,i,1),o=ye(r,i,2)||{},l=c.lua_tonumber(r,3),u=new li(i,a,o,l);return i.pushTween(r,u),1},TweenSequence:r=>(i.pushTween(r,new Gt(i)),1),ServerSignal:r=>{let a=W(r,1);return i.pushSignal(r,i.makeServerSignal(a)),1},GetGlobalCustomVariableValue:r=>{let a=Se(ye(r,i,1)),o=W(r,2);return oe(r,i,i.getVar(a,o)),1},PauseLevelTime:r=>(i.clock.paused=!!c.lua_toboolean(r,1),0),IsLevelTimePaused:r=>(c.lua_pushboolean(r,i.clock.paused),1),PlayAudio2D:r=>{let a=i.playAudio(i.audioInteger(r));return c.lua_pushinteger(r,a),1},StopAudio:r=>(i.stopAudio(i.audioInteger(r)),0),IsAudioAlive:r=>{let a=i.audios.get(i.audioInteger(r));return c.lua_pushboolean(r,!!(a&&a.alive)),1},GetLanguageType:r=>(i.pushEnumItem(r,ht("LanguageType",i.language)),1),GetStageMode:r=>(i.pushEnumItem(r,ht("StageMode",i.stageMode)),1),IsTestPlay:r=>(c.lua_pushboolean(r,i.testPlay),1),GetText:r=>{let a=W(r,1);return c.lua_pushstring(r,P(a)),1},PrintClientUITree:r=>{for(let a of i.roots)i.log("info",Nn(a).join(`
108
+ `));return 0}};for(let[r,a]of Object.entries(n)){let o=ns[r];if(o===void 0)throw new Error(`missing game arity for ${r}`);c.lua_pushcfunction(t,l=>{let u=c.lua_gettop(l);return u!==o?Q.luaL_error(l,P(`bad argument count to '${r}' (${o} expected, got ${u})`)):a(l)}),c.lua_setfield(t,-2,P(r))}c.lua_setglobal(t,P("game"))}makeServerSignal(t){let i=[],n=this;return{__kind:"ServerSignal",name:t,AddParam(r,a){i.push({type:Se(r),value:a})},AddInt(r){i.push({type:"Int",value:r})},AddIntList(r){i.push({type:"IntList",value:r})},AddFloat(r){i.push({type:"Float",value:r})},AddFloatList(r){i.push({type:"FloatList",value:r})},AddString(r){i.push({type:"String",value:r})},AddStringList(r){i.push({type:"StringList",value:r})},AddVector3(r){i.push({type:"Vector3",value:r})},AddVector3List(r){i.push({type:"Vector3List",value:r})},AddBool(r){i.push({type:"Bool",value:r})},AddBoolList(r){i.push({type:"BoolList",value:r})},AddGuid(r){i.push({type:"Guid",value:r})},AddGuidList(r){i.push({type:"GuidList",value:r})},AddEntity(r){i.push({type:"Entity",value:r})},AddEntityList(r){i.push({type:"EntityList",value:r})},AddPrefabId(r){i.push({type:"PrefabId",value:r})},AddPrefabIdList(r){i.push({type:"PrefabIdList",value:r})},AddConfigId(r){i.push({type:"ConfigId",value:r})},AddConfigIdList(r){i.push({type:"ConfigIdList",value:r})},SendSignal(){let r=i.slice();n.serverBridge&&typeof n.serverBridge.receiveFromClient=="function"&&n.serverBridge.receiveFromClient(t,r)}}}audioInteger(t){let i=c.lua_tonumber(t,1);return c.lua_type(t,1)!==c.LUA_TNUMBER||!Number.isSafeInteger(i)?Q.luaL_error(t,P("audio argument must be an integer")):i}playAudio(t){this.audioRevision++;let i=this.nextAudioId++,n=this.audioDuration(t),r=Number.isFinite(n)&&n>0,a={instanceId:i,audioId:t,startedAt:this.clock.time,duration:r?n:0,alive:r,stopped:!1};return this.audioHistory.push(a),this.audioHistory.length>128&&this.audioHistory.shift(),r?(this.audios.size>=128&&this.stopAudio(this.audios.keys().next().value),this.audios.set(i,a)):this.audioWarnings.has(t)||(this.audioWarnings.size>=128&&this.audioWarnings.delete(this.audioWarnings.values().next().value),this.audioWarnings.add(t),this.log("warn",`\u97F3\u6548 ${t} \u672A\u5217\u5165\u6A21\u62DF\u5668\u97F3\u9891\u767D\u540D\u5355`)),i}stopAudio(t){let i=this.audios.get(t)||this.audioHistory.find(n=>n.instanceId===t);i&&!i.stopped&&(i.alive=!1,i.stopped=!0,this.audioRevision++),this.audios.delete(t)}audioSnapshot(){return{sequence:this.nextAudioId-1,revision:this.audioRevision,active:[...this.audios.values()].map(t=>({...t})),recent:this.audioHistory.map(t=>({...t}))}}instantiate(t,i,n){if(n==="OnInit"||n==="OnDestroy")return null;let r=this.templates.get(Number(t));if(!r||!i)return null;let a=new it(this,{...r,Id:this.nextControlId(),authoringId:null,prefabIndex:Number(t)});return i.addChild(a),a.SetAsLastSibling(),$e(a,o=>this.controlsById.set(o.Id,o)),this.mountSpecScripts(r,a),a}destroyControl(t){if(!(!t||!t.alive)){if(t._destroying)throw new Error(`\u5BA2\u6237\u7AEF\u63A7\u4EF6\u751F\u547D\u5468\u671F\u5904\u4E8E\u521B\u5EFA\u6216\u9500\u6BC1\u65F6\uFF0C\u65E0\u6CD5\u8C03\u7528DestroyClientUIControl, ID:${t.name}`);$e(t,i=>{i._destroying=!0}),this._destroyControlTree(t)}}_destroyControlTree(t){this.releaseControlListeners(t);for(let i of t.scripts.slice())this.unmountScript(i);for(let i of t.children.slice())this._destroyControlTree(i);if(t.alive=!1,this.scrollControls?.delete(t),this._playRemoved.push(t.Id),t.parent){let i=t.parent,n=i.children.indexOf(t);n>=0&&i.children.splice(n,1),t._parent=null,i.markPlayDirty(!0)}else{let i=this.roots.indexOf(t);i>=0&&this.roots.splice(i,1)}this.controlsById.delete(t.Id),this.focus===t&&(this.focus=null);for(let i of[...this.tweens])i.object===t&&i.Kill(!1)}releaseControlListeners(t){for(let i of t.cursorListeners.values())for(let n of i)this.unrefLuaCallback(n);for(let i of t.keyListeners.values())for(let n of i)this.unrefLuaCallback(n);for(let i of t.navListeners.values())for(let n of i)this.unrefLuaCallback(n);t.cursorListeners.clear(),t.keyListeners.clear(),t.navListeners.clear(),t.navConfig.clear()}onControlActiveChanging(t,i){let n=[];$e(t,r=>n.push({control:r,was:r.activeInHierarchy})),t.active=!!i,t.markPlayDirty(!0);for(let r of n){let a=r.control.activeInHierarchy;if(r.was!==a)for(let o of r.control.scripts.slice())a?this.enableScript(o):this.disableScript(o)}}bindScriptEnv(t){let i=t.env;return i?(this.pushScript(i,t),c.lua_setglobal(i,P("script")),i):null}disableScript(t){if(!t?.alive||!t.env||t.lifecyclePhase!=="running")return;let i=this.lifecyclePhase;this.lifecyclePhase="OnDisable",t.lifecyclePhase="OnDisable",this.bindScriptEnv(t),this.callGlobal(t.env,"OnDisable"),t.lifecyclePhase="disabled",this.lifecyclePhase=i}enableScript(t){if(!t?.alive||!t.env||t.lifecyclePhase!=="disabled")return;let i=this.lifecyclePhase;this.lifecyclePhase="OnEnable",t.lifecyclePhase="OnEnable",this.bindScriptEnv(t),this.callGlobal(t.env,"OnEnable"),t.lifecyclePhase="running",this.lifecyclePhase=i}unmountScript(t){if(!t||!t.alive)return;let i=t.env,n=this.lifecyclePhase;i&&(t.lifecyclePhase==="running"&&(this.lifecyclePhase="OnDisable",t.lifecyclePhase="OnDisable",this.bindScriptEnv(t),this.callGlobal(i,"OnDisable")),this.lifecyclePhase="OnDestroy",t.lifecyclePhase="OnDestroy",this.bindScriptEnv(t),this.callGlobal(i,"OnDestroy")),t.alive=!1,t.lifecyclePhase="destroyed",this.lifecyclePhase=n,this.mountedScripts=this.mountedScripts.filter(r=>r!==t),t.object&&(t.object.scripts=t.object.scripts.filter(r=>r!==t)),this.varHandlers=this.varHandlers.filter(r=>r.script!==t),this.signalHandlers=this.signalHandlers.filter(r=>r.script!==t),i&&i!==this.L&&this.closeTrackedLuaState(i),t.env=null}installMetatables(t){this.mtEnum(t),this.mtControl(t),this.mtScript(t),this.mtTween(t),this.mtSeq(t),this.mtSignal(t),this.mtCursor(t)}mtIndexNewindex(t,i,n,r,a,o){Q.luaL_newmetatable(t,P(i)),c.lua_pushcfunction(t,l=>{let u=Ue(l,1)||xe(c.lua_touserdata(l,1)),s=W(l,2);if(a[s]&&(!o||o(u,s)))return c.lua_pushcfunction(l,a[s]),1;let f;try{f=n(u,s)}catch(h){return Q.luaL_error(l,P(String(h.message||h)))}return f===void 0?(c.lua_pushnil(l),1):(oe(l,this,f),1)}),c.lua_setfield(t,-2,P("__index")),c.lua_pushcfunction(t,l=>{try{let u=Ue(l,1)||xe(c.lua_touserdata(l,1)),s=W(l,2),f=ye(l,this,3);return r(u,s,f),0}catch(u){return c.lua_pushstring(l,P(String(u.message||u))),c.lua_error(l)}}),c.lua_setfield(t,-2,P("__newindex")),c.lua_pushcfunction(t,l=>{let u=Ue(l,1)||xe(c.lua_touserdata(l,1)),s=Ue(l,2)||xe(c.lua_touserdata(l,2));return c.lua_pushboolean(l,u===s),1}),c.lua_setfield(t,-2,P("__eq")),c.lua_pop(t,1)}method(t){let i=this;return n=>{let r=Ue(n,1)||xe(c.lua_touserdata(n,1)),a=c.lua_gettop(n),o=[];for(let l=2;l<=a;l++)o.push(ye(n,i,l));try{let l=t(r,...o);if(l===r)return c.lua_pushvalue(n,1),1;if(l===void 0)return 0;if(Array.isArray(l)&&l.__multi){for(let u of l)oe(n,i,u);return l.length}if(Array.isArray(l)&&!(l.length&&typeof l[0]=="object"&&l[0]?.typeofName)){if(l.__controls)return c.lua_createtable(n,l.length,0),l.forEach((u,s)=>{i.pushControl(n,u),c.lua_rawseti(n,-2,s+1)}),1;if(l.__scripts)return c.lua_createtable(n,l.length,0),l.forEach((u,s)=>{i.pushScript(n,u),c.lua_rawseti(n,-2,s+1)}),1;if(typeof l[0]=="number"&&l.length<=4){for(let u of l)c.lua_pushnumber(n,u);return l.length}}return oe(n,i,l),1}catch(l){return c.lua_pushstring(n,P(String(l.message||l))),c.lua_error(n)}}}mtEnum(t){let i=new Set(["Name","FullName","EnumType"]);this.mtIndexNewindex(t,"EnumItem",(n,r)=>i.has(r)?n[r]:void 0,(n,r)=>{throw new Error(`cannot set ${r}, no such field`)},{})}mtCursor(t){let i=new Set(["dragging","touchId"]);this.mtIndexNewindex(t,"CursorEventData",(n,r)=>i.has(r)?n[r]:void 0,(n,r)=>{throw new Error(`cannot set ${r}, no such field`)},{GetUIPos:this.method(n=>n.GetUIPos()),GetPressUIPos:this.method(n=>n.GetPressUIPos()),GetUIPosDelta:this.method(n=>n.GetUIPosDelta())})}mtControl(t){let i={GetChildren:this.method(n=>{let r=n.GetChildren();return r.__controls=!0,r}),GetChild:this.method((n,r)=>n.GetChild(r)),FindChild:this.method((n,r)=>n.FindChild(r)),SetActive:this.method((n,r)=>n.SetActive(r)),SetVisible:this.method((n,r)=>n.SetVisible(r)),GetSiblingIndex:this.method(n=>n.GetSiblingIndex()),SetSiblingIndex:this.method((n,r)=>n.SetSiblingIndex(r)),SetAsFirstSibling:this.method(n=>n.SetAsFirstSibling()),SetAsLastSibling:this.method(n=>n.SetAsLastSibling()),GetAnchoredPosition:this.method(n=>n.GetAnchoredPosition()),SetAnchoredPosition:this.method((n,r,a)=>n.SetAnchoredPosition(r,a)),GetSizeDelta:this.method(n=>n.GetSizeDelta()),SetSizeDelta:this.method((n,r,a)=>n.SetSizeDelta(r,a)),GetAnchorMin:this.method(n=>n.GetAnchorMin()),SetAnchorMin:this.method((n,r,a)=>n.SetAnchorMin(r,a)),GetAnchorMax:this.method(n=>n.GetAnchorMax()),SetAnchorMax:this.method((n,r,a)=>n.SetAnchorMax(r,a)),GetPivot:this.method(n=>n.GetPivot()),SetPivot:this.method((n,r,a)=>n.SetPivot(r,a)),GetLocalScale:this.method(n=>n.GetLocalScale()),SetLocalScale:this.method((n,r,a,o)=>n.SetLocalScale(r,a,o)),GetLocalRotation:this.method(n=>n.GetLocalRotation()),SetLocalRotation:this.method((n,r,a,o)=>n.SetLocalRotation(r,a,o)),GetScriptByPath:this.method((n,r)=>n.GetScriptByPath(r)),GetScript:this.method((n,r)=>n.GetScript(r)),GetScripts:this.method(n=>{let r=n.GetScripts();return r.__scripts=!0,r}),AddCursorEventListener:this.method((n,r,a)=>n.AddCursorEventListener(Se(r),a)),RemoveCursorEventListener:this.method((n,r,a)=>n.RemoveCursorEventListener(Se(r),a)),RemoveCursorEventListeners:this.method((n,r)=>n.RemoveCursorEventListeners(Se(r))),RemoveAllCursorEventListeners:this.method(n=>n.RemoveAllCursorEventListeners()),SimulateCursorClick:this.method(n=>n.SimulateCursorClick()),AddKeyEventListener:this.method((n,r,a)=>n.AddKeyEventListener(Se(r),a)),RemoveKeyEventListener:this.method((n,r,a)=>n.RemoveKeyEventListener(Se(r),a)),RemoveKeyEventListeners:this.method((n,r)=>n.RemoveKeyEventListeners(Se(r))),RemoveAllKeyEventListeners:this.method(n=>n.RemoveAllKeyEventListeners()),AddNavigationEventListener:this.method((n,r,a)=>n.AddNavigationEventListener(Se(r),a)),RemoveNavigationEventListener:this.method((n,r,a)=>n.RemoveNavigationEventListener(Se(r),a)),RemoveNavigationEventListeners:this.method((n,r)=>n.RemoveNavigationEventListeners(Se(r))),RemoveAllNavigationEventListeners:this.method(n=>n.RemoveAllNavigationEventListeners()),SetControllerNavigation:this.method((n,r,a,o)=>n.SetControllerNavigation(Se(r),a,o)),GetControllerNavigation:this.method((n,r)=>n.GetControllerNavigation(Se(r))),SetImage:this.method((n,r,a)=>n.SetImage(r,a)),SetSoftEdgeWidth:this.method((n,r,a)=>n.SetSoftEdgeWidth(r,a)),SetFillUnused:this.method(n=>n.SetFillUnused()),SetFillHorizontal:this.method((n,r,a)=>n.SetFillHorizontal(r,a)),SetFillVertical:this.method((n,r,a)=>n.SetFillVertical(r,a)),SetFillRadial90:this.method((n,r,a)=>n.SetFillRadial90(r,a)),SetFillRadial180:this.method((n,r,a)=>n.SetFillRadial180(r,a)),SetFillRadial360:this.method((n,r,a)=>n.SetFillRadial360(r,a)),PlayAnimation:this.method(n=>n.PlayAnimation()),StopAnimation:this.method(n=>n.StopAnimation()),RefreshItems:this.method((n,r,a)=>{this.retainLuaCallback(a);try{n.RefreshItems(r,a)}finally{this.unrefLuaCallback(a)}}),GetItemIndex:this.method((n,r)=>n.GetItemIndex(r)),GetItemSize:this.method(n=>n.GetItemSize()),GetItemSpacing:this.method(n=>n.GetItemSpacing()),GetPadding:this.method(n=>n.GetPadding()),ScrollToItemAt:this.method((n,r,a)=>n.ScrollToItemAt(r,a)),GetContentLength:this.method(n=>n.GetContentLength())};this.mtIndexNewindex(t,"Control",(n,r)=>{if(!Mn(n,r))return;if(!n.alive&&r!=="alive")throw new Error(`attempt to read '${r}' of a destroyed control`);let a=n.luaFieldValue(r),o=Pa[r];return o?On(o,a):typeof a=="number"&&!ts.has(r)&&!is.has(r)?new ni(a):a},(n,r,a)=>{if(Mn(n,r)==="rw"){if((r==="fontSize"||r==="minimumFontSize")&&!Number.isInteger(a)){let u=a===null?"nil":typeof a;throw new Error(`bad argument #2 to '${r}' (integer expected, got ${u})`)}let l=Pa[r];if(r==="imageType"&&(a?.EnumType!=="ImageType"||!["Basic","Stretch"].includes(a.Name)))throw new Error("imageType requires Enum.ImageType.Basic or Stretch");n[r]=l?On(l,a):a,typeof n.markPlayDirty=="function"&&n.markPlayDirty(Ni.has(r));return}throw new Error(`cannot set ${r}, no such field`)},i,ka)}mtScript(t){let i=this,n=new Set(["alive","scriptMappingId","object","path","enabled"]);this.mtIndexNewindex(t,"Script",(r,a)=>n.has(a)?r[a]:void 0,(r,a,o)=>{if(a==="enabled"){r.enabled=!!o;return}throw new Error(`cannot set ${a}, no such field`)},{GetParam:this.method((r,a)=>Object.prototype.hasOwnProperty.call(r.params,a)?r.params[a]:null),Invoke:r=>i.luaInvoke(r),EnableUpdate:this.method((r,a)=>{r.updateEnabled=!!a}),RegisterServerSignalHandler:this.method((r,a,o)=>{i.signalHandlers.push({script:r,name:a,fn:o})}),UnregisterServerSignalHandler:this.method((r,a)=>{i.signalHandlers=i.signalHandlers.filter(o=>!(o.script===r&&o.name===a))}),RegisterCustomVariableChangedHandler:this.method((r,a,o,l)=>{i.varHandlers.push({script:r,entityType:Se(a),name:o,fn:l})}),UnregisterCustomVariableChangedHandler:this.method((r,a,o)=>{let l=Se(a);i.varHandlers=i.varHandlers.filter(u=>!(u.script===r&&u.entityType===l&&u.name===o))})})}mtTween(t){this.mtIndexNewindex(t,"Tween",()=>{},()=>{},{SetEase:this.method((i,n)=>i.SetEase(n)),SetRelative:this.method((i,n)=>i.SetRelative(n)),Play:this.method(i=>i.Play()),Pause:this.method(i=>i.Pause()),Resume:this.method(i=>i.Resume()),Restart:this.method(i=>i.Restart()),Complete:this.method(i=>i.Complete()),Kill:this.method((i,n)=>i.Kill(n)),SetOnComplete:this.method((i,n)=>i.SetOnComplete(n)),SetOnStepComplete:this.method((i,n)=>i.SetOnStepComplete(n)),SetLoops:this.method((i,n)=>i.SetLoops(n))})}mtSeq(t){this.mtIndexNewindex(t,"TweenSequence",()=>{},()=>{},{Append:this.method((i,n)=>i.Append(n)),AppendInterval:this.method((i,n)=>i.AppendInterval(n)),AppendCallback:this.method((i,n)=>i.AppendCallback(n)),Join:this.method((i,n)=>i.Join(n)),Insert:this.method((i,n,r)=>i.Insert(n,r)),InsertCallback:this.method((i,n,r)=>i.InsertCallback(n,r)),Play:this.method(i=>i.Play()),Pause:this.method(i=>i.Pause()),Resume:this.method(i=>i.Resume()),Restart:this.method(i=>i.Restart()),Complete:this.method(i=>i.Complete()),Kill:this.method((i,n)=>i.Kill(n)),SetOnComplete:this.method((i,n)=>i.SetOnComplete(n)),SetOnStepComplete:this.method((i,n)=>i.SetOnStepComplete(n)),SetLoops:this.method((i,n)=>i.SetLoops(n))})}mtSignal(t){this.mtIndexNewindex(t,"ServerSignal",()=>{},()=>{},{AddParam:this.method((i,n,r)=>i.AddParam(n,r)),SendSignal:this.method(i=>i.SendSignal()),AddInt:this.method((i,n)=>i.AddInt(n)),AddIntList:this.method((i,n)=>i.AddIntList(n)),AddFloat:this.method((i,n)=>i.AddFloat(n)),AddFloatList:this.method((i,n)=>i.AddFloatList(n)),AddString:this.method((i,n)=>i.AddString(n)),AddStringList:this.method((i,n)=>i.AddStringList(n)),AddVector3:this.method((i,n)=>i.AddVector3(n)),AddVector3List:this.method((i,n)=>i.AddVector3List(n)),AddBool:this.method((i,n)=>i.AddBool(n)),AddBoolList:this.method((i,n)=>i.AddBoolList(n)),AddGuid:this.method((i,n)=>i.AddGuid(n)),AddGuidList:this.method((i,n)=>i.AddGuidList(n)),AddEntity:this.method((i,n)=>i.AddEntity(n)),AddEntityList:this.method((i,n)=>i.AddEntityList(n)),AddPrefabId:this.method((i,n)=>i.AddPrefabId(n)),AddPrefabIdList:this.method((i,n)=>i.AddPrefabIdList(n)),AddConfigId:this.method((i,n)=>i.AddConfigId(n)),AddConfigIdList:this.method((i,n)=>i.AddConfigIdList(n))})}luaRequire(t){let i=W(t,1),n=this.normalizeRequirePath(i),r=this.requireAliases.get(n)||n;c.lua_rawgeti(t,mt,c.LUA_RIDX_MAINTHREAD);let a=c.lua_tothread(t,-1);c.lua_pop(t,1);let o=this.requireCache.get(a);o||(o=new Map,this.requireCache.set(a,o));let l=o.get(r);if(l?.loading)return c.lua_pushstring(t,P(`failed to load script '${n}': cyclic require`)),c.lua_error(t);if(l&&l.ref!=null)return c.lua_rawgeti(t,mt,l.ref),1;let u=this.scriptFiles.get(r);if(u==null)return c.lua_pushstring(t,P(`failed to load script '${n}'`)),c.lua_error(t);let s=c.lua_gettop(t);o.set(r,{loading:!0});try{this.loadModule(t,a,r,u),c.lua_pushvalue(t,-1);let f=Q.luaL_ref(t,mt);return o.set(r,{ref:f}),1}catch(f){return o.delete(r),c.lua_settop(t,s),c.lua_pushstring(t,P(`failed to load script '${n}': ${f.message||f}`)),c.lua_error(t)}}newLuaThread(){let t=Q.luaL_newstate();return ha.luaL_openlibs(t),va(t),this.installMetatables(t),this.installGlobals(t),this.luaStates.add(t),c.lua_pushglobaltable(t),this.copyLuaEnvironment(t,-1),c.lua_remove(t,-2),this.moduleBaseEnvironments.set(t,Q.luaL_ref(t,mt)),t}copyLuaEnvironment(t,i){let n=c.lua_absindex(t,i);c.lua_newtable(t);let r=c.lua_absindex(t,-1);for(c.lua_pushnil(t);c.lua_next(t,n)!==0;)c.lua_pushvalue(t,-2),c.lua_pushvalue(t,-2),c.lua_rawset(t,r),c.lua_pop(t,1);c.lua_pushvalue(t,r),c.lua_setfield(t,r,P("_G"))}closeTrackedLuaState(t){if(!t||!this.luaStates.has(t))return;for(let n of this.requireCache.get(t)?.values()||[])n.ref!=null&&Q.luaL_unref(t,mt,n.ref);this.requireCache.delete(t);let i=this.moduleBaseEnvironments.get(t);if(i!=null&&Q.luaL_unref(t,mt,i),this.moduleBaseEnvironments.delete(t),this.luaStates.delete(t),this.luaFunctions)for(let[n,r]of this.luaFunctions)r.__luaState===t&&this.luaFunctions.delete(n);ba(t)}loadModule(t,i,n,r){let a={__kind:"Script",alive:!0,scriptMappingId:this.resolveScriptMappingId(),object:null,path:n,enabled:!0,updateEnabled:!1,params:{},env:t,invoke(){}},o=String(r).replace(/^\uFEFF/,""),l=Ri(o);if(Q.luaL_loadbuffer(t,l,l.length,P(`@${n}`))!==Me)throw new Error(W(t,-1));let s=c.lua_absindex(t,-1);if(c.lua_rawgeti(t,mt,this.moduleBaseEnvironments.get(i)),this.copyLuaEnvironment(t,-1),c.lua_remove(t,-2),this.pushScript(t,a),c.lua_setfield(t,-2,P("script")),c.lua_setupvalue(t,s,1),c.lua_pcall(t,0,1,0)!==Me)throw new Error(W(t,-1))}mountScript({path:t,source:i,control:n,params:r={},scriptMappingId:a=void 0}){this.L||this.boot();let o=this.newLuaThread(),l={__kind:"Script",alive:!0,scriptMappingId:this.resolveScriptMappingId(a),object:n,path:this.normalizeRequirePath(t),enabled:!0,updateEnabled:!1,params:r,env:o,lifecyclePhase:"idle"};l.invoke=(s,f)=>this.invokeOn(o,s,f),n&&n.scripts.push(l),this.mountedScripts.push(l),this.pushScript(o,l),c.lua_setglobal(o,P("script"));let u=this.lifecyclePhase;try{this.lifecyclePhase="OnInit",l.lifecyclePhase="OnInit",this.runChunk(o,i,t);let s=this.callGlobal(o,"OnInit");s&&this.mountErrors.push(s),this.lifecyclePhase="OnEnable",l.lifecyclePhase="OnEnable";let f=this.callGlobal(o,"OnEnable");f&&this.mountErrors.push(f),this.lifecyclePhase="OnStart",l.lifecyclePhase="OnStart";let h=this.callGlobal(o,"OnStart");return h&&this.mountErrors.push(h),this.lifecyclePhase="running",l.lifecyclePhase="running",l}catch(s){throw l.alive=!1,l.lifecyclePhase="failed",this.mountedScripts=this.mountedScripts.filter(f=>f!==l),n&&(n.scripts=n.scripts.filter(f=>f!==l)),this.varHandlers=this.varHandlers.filter(f=>f.script!==l),this.signalHandlers=this.signalHandlers.filter(f=>f.script!==l),this.lifecyclePhase=u,o&&o!==this.L&&this.closeTrackedLuaState(o),l.env=null,s}}runChunk(t,i,n){let r=String(i).replace(/^\uFEFF/,""),a=Ri(r),o=Q.luaL_loadbuffer(t,a,a.length,P(`@${n}`));if(o!==Me){let u=W(t,-1)||`luaL_loadbuffer status ${o}`;throw c.lua_pop(t,1),new Error(u)}let l=c.lua_pcall(t,0,0,0);if(l!==Me){let u=W(t,-1)||`lua_pcall status ${l}`;throw c.lua_pop(t,1),new Error(u)}}callGlobal(t,i){if(c.lua_getglobal(t,P(i)),c.lua_isfunction(t,-1)){if(c.lua_pcall(t,0,0,0)!==Me){let r=W(t,-1);c.lua_pop(t,1);let a=`${i}: ${r}`;return this.log("lua-error",a),a}}else c.lua_pop(t,1);return null}callGlobalDt(t,i,n){if(c.lua_getglobal(t,P(i)),c.lua_isfunction(t,-1)){if(c.lua_pushnumber(t,n),c.lua_pcall(t,1,0,0)!==Me){let a=W(t,-1);c.lua_pop(t,1),this.log("lua-error",`${i}: ${a}`)}}else c.lua_pop(t,1)}luaInvoke(t){let i=Ue(t,1);if(!i||i.__kind!=="Script")return Q.luaL_error(t,P("bad self to 'Invoke' (Script expected)"));let n=W(t,2),r=i.env;if(!r||r.l_G!==t.l_G){let u=[];for(let h=3;h<=c.lua_gettop(t);h++)u.push(ye(t,this,h));let s;try{s=i.invoke(n,u)}catch(h){return Q.luaL_error(t,P(String(h.message||h)))}if(s===void 0)return 0;let f=Array.isArray(s)&&s.__multi?s:[s];for(let h of f)oe(t,this,h);return f.length}let a=2;if(c.lua_getglobal(t,P(n)),!c.lua_isfunction(t,-1))return 0;c.lua_replace(t,a),c.lua_remove(t,1);let o=c.lua_gettop(t)-1;return c.lua_pcall(t,o,Ra,0)!==Me?c.lua_error(t):c.lua_gettop(t)}invokeOn(t,i,n){let r=c.lua_gettop(t);if(c.lua_getglobal(t,P(i)),!c.lua_isfunction(t,-1)){c.lua_settop(t,r);return}for(let u of n)oe(t,this,u);if(c.lua_pcall(t,n.length,Ra,0)!==Me){let u=W(t,-1);throw c.lua_settop(t,r),new Error(u)}let o=c.lua_gettop(t)-r;if(o<=0){c.lua_settop(t,r);return}if(o===1){let u=ye(t,this,-1);return c.lua_settop(t,r),u}let l=[];for(let u=1;u<=o;u++)l.push(ye(t,this,r+u));return c.lua_settop(t,r),l.__multi=!0,l}runScriptPhase(t,i){for(let n of this.mountedScripts){if(!this.scriptCanRun(n))continue;let r=n.env;r&&(this.pushScript(r,n),c.lua_setglobal(r,P("script")),!(t==="OnUpdate"&&!n.updateEnabled)&&this.callGlobalDt(r,t,i))}}step(t=1/30){if(typeof t!="number"||!Number.isFinite(t)||t<0)throw new TypeError("dt must be a finite non-negative number");this.clock.frame++,this.clock.time+=t;for(let[n,r]of this.audios)this.clock.time+1e-9>=r.startedAt+r.duration&&(r.alive=!1,this.audios.delete(n),this.audioRevision++);let i=!this.clock.paused;for(let n of[...this.animations])n.step(t);this.runScriptPhase("OnUpdate",t),i&&(this.clock.levelTime+=t,this.runScriptPhase("OnLevelUpdate",t))}injectKey(t){let i=n=>{if(!n.alive||!n.activeInHierarchy)return!1;if(n.keyListeners.has(t)&&n.emitKey(t))return!0;for(let r of[...n.children])if(i(r))return!0;return!1};for(let n of[...this.roots])i(n)}injectCursor(t,i,n){let r=n||this.makeCursorEventData({});Number.isFinite(r.x)&&Number.isFinite(r.y)&&(this.cursor.x=r.x,this.cursor.y=r.y),t.emitCursor(i,r)}getVar(t,i){if(this.serverBridge&&typeof this.serverBridge.getVar=="function")return this.serverBridge.getVar(t,i);let n=this.serverVars[t];return n?n[i]:void 0}notifyVarHandlers(t,i){for(let n of this.varHandlers)this.scriptCanRun(n.script)&&n.entityType===t&&n.name===i&&this.safeCall(n.fn,this.enumTree.CustomVariableEntityType[t],i)}setVar(t,i,n){if(this.serverBridge&&typeof this.serverBridge.setVar=="function"){this.serverBridge.setVar(t,i,n);return}let r=this.serverVars[t]||(this.serverVars[t]=Object.create(null));r[i]=n,this.notifyVarHandlers(t,i)}sendClientSignal(t,i){for(let n of this.signalHandlers)this.scriptCanRun(n.script)&&n.name===t&&this.safeCall(n.fn,t,i)}evalQueryScript(t,i){this.L||this.boot();let n=this.L;c.lua_createtable(n,0,5);let r=(a,o)=>{c.lua_pushcfunction(n,o),c.lua_setfield(n,-2,P(a))};return r("var",a=>(oe(a,this,i.var(W(a,1),W(a,2))),1)),r("logContains",a=>(c.lua_pushboolean(a,i.logContains(W(a,1))),1)),r("control",a=>(oe(a,this,i.control(W(a,1))),1)),r("logs",a=>(oe(a,this,i.logs()),1)),r("signals",a=>(oe(a,this,i.signals(W(a,1))),1)),r("serverLogs",a=>(oe(a,this,i.serverLogs?i.serverLogs():[]),1)),r("serverLogContains",a=>{let o=i.serverLogContains;return c.lua_pushboolean(a,o?!!o(W(a,1)):!1),1}),c.lua_setglobal(n,P("query")),this.runChunk(n,t,"autotest-assert"),!0}destroy(){for(let t of this.roots.slice())this.destroyControl(t);for(let t of this.mountedScripts.slice())this.unmountScript(t);this.lifecyclePhase="idle",this.mountedScripts=[],this.luaFunctions.clear();for(let t of[...this.luaStates])this.closeTrackedLuaState(t);this.L=null,this.audios.clear(),this.audioHistory.length=0,this.audioWarnings.clear()}};function si(e){let t=new $i(e);return t.boot(),t}var gt=Object.freeze(Array.from({length:8},(e,t)=>`Player${t+1}`)),Dn=Object.freeze(Array.from({length:8},(e,t)=>`Avatar${t+1}`)),Da=Object.freeze(["Level","PlayerSelf","AvatarSelf"]);var $n=Object.freeze([...Da,...gt,...Dn]),Va=Object.freeze(["PlayerSelf","AllPlayers",...gt]),rs=Object.freeze(["Level","PlayerSelf",...gt]),Ma=Object.freeze(["Int","Float","String","Bool","Vector3","Entity","Guid","PrefabId","ConfigId","IntList","FloatList","StringList","BoolList","Vector3List","EntityList","GuidList","PrefabIdList","ConfigIdList","Dict","Struct"]),as=-2147483648,os=2147483647,ls=new Set(["set-custom-variable","get-custom-variable","custom-variable-changed","\u8BBE\u7F6E\u81EA\u5B9A\u4E49\u53D8\u91CF","\u83B7\u53D6\u81EA\u5B9A\u4E49\u53D8\u91CF","\u81EA\u5B9A\u4E49\u53D8\u91CF\u53D8\u5316\u65F6","send-signal","listen-signal","send-client-script-signal","\u53D1\u9001\u4FE1\u53F7","\u76D1\u542C\u4FE1\u53F7","\u53D1\u9001\u5BA2\u6237\u7AEF\u811A\u672C\u4FE1\u53F7","setVar","getVar","signal","var"]);function ui(e){return`Player${Number(e)}`}function Gi(e){return`Avatar${Number(e)}`}function Na(e){let t=String(e||"").match(/^(?:Player|Avatar)([1-8])$/);return t?Number(t[1]):0}function pt(e){if(e==null||e==="")return 1;let t=Number(e);if(!Number.isInteger(t)||t<1||t>8)throw new Error("playerCount must be an integer 1-8");return t}function je(e,t=8){let i=pt(t);if(e==null||e==="")return 1;let n=Number(e);if(!Number.isInteger(n)||n<1||n>i)throw new Error(`playerIndex must be an integer 1-${i}`);return n}function Fa(){let e={Level:Object.create(null),PlayerSelf:Object.create(null),AvatarSelf:Object.create(null)};for(let t of gt)e[t]=Object.create(null);for(let t of Dn)e[t]=Object.create(null);return e}function Ya(e){let t=String(e||"");if(!$n.includes(t))throw new Error(`unknown CustomVariableEntityType: ${e}`);return t}function ss(e,t){let i=Ya(e);if(!rs.includes(i))throw new Error(`${t}.entityType must be Level, PlayerSelf, or Player1-8`);return i}function ci(e){let t=String(e??"");if(!t)throw new Error("custom variable name is required");return t}function Di(e){let t=String(e??"");if(!t)throw new Error("signal name is required");return t}function Gn(e){let t=String(e||"PlayerSelf");if(!Va.includes(t))throw new Error(`unsupported client signal target: ${e}. use PlayerSelf, AllPlayers, or Player1-8`);return t}function fi(e){if(e==null)return"";if(typeof e=="boolean")return"Bool";if(typeof e=="string")return"String";if(typeof e=="number")return Number.isInteger(e)?"Int":"Float";if(Array.isArray(e)){if(e.length===0)return"IntList";let t=fi(e[0]);return t&&!t.endsWith("List")&&t!=="Dict"&&t!=="Struct"?`${t}List`:"IntList"}return e&&typeof e=="object"?"x"in e||"y"in e||"z"in e?"Vector3":"Dict":""}function Ie(e){return e===void 0?null:JSON.parse(JSON.stringify(e))}function Oa(e){return Array.isArray(e)?e.map(t=>t&&typeof t=="object"&&Object.prototype.hasOwnProperty.call(t,"value")&&"type"in t?t.value:t):[]}function za(e){return Array.isArray(e)?e.map(t=>t&&typeof t=="object"&&Object.prototype.hasOwnProperty.call(t,"value")&&"type"in t?{type:String(t.type||""),value:t.value}:{type:fi(t),value:t}):[]}function us(e){return String(e?.kind||e?.type||e?.name||e?.id||"")}function Vi(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function Xa(e,t){if(!Vi(e)||!Object.prototype.hasOwnProperty.call(e,"fromSignalParam"))return null;if(Object.keys(e).some(n=>n!=="fromSignalParam"))throw new Error(`${t}.fromSignalParam cannot be combined with literal fields`);let i=Number(e.fromSignalParam);if(!Number.isSafeInteger(i)||i<0)throw new Error(`${t}.fromSignalParam must be a non-negative integer`);return{fromSignalParam:i}}function $a(e,t){return Xa(e,t)||Ie(e)}function cs(e,t,i){if(!Vi(e))throw new Error(`serverLogic.rules[${t}].actions[${i}] must be an object`);let n=String(e.kind||e.type||""),r=`serverLogic.rules[${t}].actions[${i}]`;if(n==="setCustomVariable"){let a=ss(e.entityType,r);if(!Object.prototype.hasOwnProperty.call(e,"value"))throw new Error(`${r}.value is required`);return{kind:n,entityType:a,name:ci(e.name),value:$a(e.value,`${r}.value`),...e.variableType?{variableType:String(e.variableType)}:{}}}if(n==="sendClientScriptSignal"){if(!Array.isArray(e.params))throw new Error(`${r}.params must be an array`);return{kind:n,target:Gn(e.target),signalName:Di(e.signalName),params:e.params.map((a,o)=>$a(a,`${r}.params[${o}]`))}}throw new Error(`${r}.kind must be setCustomVariable or sendClientScriptSignal`)}function di(e){if(e==null)return{version:1,rules:[]};if(!Vi(e))throw new Error("serverLogic must be an object");let t=e.rules===void 0?[]:e.rules;if(!Array.isArray(t))throw new Error("serverLogic.rules must be an array");return{version:1,rules:t.map((i,n)=>{if(!Vi(i))throw new Error(`serverLogic.rules[${n}] must be an object`);if(!Array.isArray(i.actions)||i.actions.length===0)throw new Error(`serverLogic.rules[${n}].actions must be a non-empty array`);return{id:String(i.id||`signal-${n+1}`),signalName:Di(i.signalName),actions:i.actions.map((r,a)=>cs(r,n,a))}})}}function Ga(e,t,{typed:i=!1}={}){let n=Xa(e,"server logic value");if(n){let r=i?t.params:t.values;if(n.fromSignalParam>=r.length)throw new Error(`signal ${t.name} has no parameter at index ${n.fromSignalParam}`);return Ie(r[n.fromSignalParam])}return Ie(e)}function fs(e){return e==="Level"?"Level":gt.includes(e)?"PlayerSelf":Dn.includes(e)?"AvatarSelf":e}function Ba(e={}){let t=Fa(),i=Fa(),n=[],r=[],a=[],o=[],l=Array.from({length:9},()=>null),u=1,s=0,f=Number(e.onlineLatencyMs||0);(!Number.isFinite(f)||f<0)&&(f=0);let h=di(e.logic),p=pt(e.playerCount),g=je(e.viewPlayerIndex,p);function m(v,E){o.push({source:"server",level:String(v||"engine"),text:String(E),time:s})}function y(v){let E=l[v||g],w=Number(E?.clock?.time);Number.isFinite(w)&&(s=w)}function I(v,E,w,C){t[v][E]=w,i[v][E]={type:C||fi(w)||i[v][E]?.type||""}}function A(v,E,w){return typeof w!="number"||!Number.isInteger(w)?{ok:!0,value:w}:w>=as&&w<=os?{ok:!0,value:w}:(m("engine",`Int custom variable ${v}.${E} out of range ${w}; keeping previous legal value`),{ok:!1,value:t[v][E]})}function x(v,E){let w=Ya(v),C=E||g;return w==="PlayerSelf"?ui(C):w==="AvatarSelf"?Gi(C):w}function G(v,E){let w=fs(v);if(v==="Level"){for(let k=1;k<=p;k+=1){let _=l[k];_&&typeof _.notifyVarHandlers=="function"&&_.notifyVarHandlers("Level",E)}return}let C=Na(v);if(!C)return;let O=l[C];O&&typeof O.notifyVarHandlers=="function"&&O.notifyVarHandlers(w,E)}function z(v,E){let w=Gn(v);return w==="AllPlayers"?Array.from({length:p},(C,O)=>O+1):w==="PlayerSelf"?[E||g]:[Na(w)]}function q(v){for(let E of h.rules)if(E.signalName===v.name)for(let w of E.actions){if(w.kind==="setCustomVariable"){let C=Ga(w.value,v);$.setVar(w.entityType,w.name,C,{type:w.variableType,playerIndex:v.playerIndex}),m("info",`logic ${E.id}: set ${w.entityType}.${w.name}`);continue}if(w.kind==="sendClientScriptSignal"){let C=w.params.map(O=>Ga(O,v,{typed:!0}));$.sendToClient(w.signalName,C,{target:w.target,playerIndex:v.playerIndex}),m("info",`logic ${E.id}: sent ${w.signalName} to ${w.target}`)}}}function J(v,E){v&&(v.serverBridge={getVar:(w,C)=>$.getVar(w,C,{playerIndex:E}),setVar:(w,C,O)=>$.setVar(w,C,O,{playerIndex:E}),receiveFromClient:(w,C)=>$.receiveFromClient(w,C,{playerIndex:E})})}function H(v){v&&(v.serverBridge=null)}let $={ENTITY_TYPES:Da,ALL_ENTITY_TYPES:$n,CLIENT_SIGNAL_TARGETS:Va,get clock(){return s},get playerCount(){return p},get viewPlayerIndex(){return g},setClock(v){s=Number(v)||0},setPlayerCount(v){return p=pt(v),g>p&&(g=p),p},setViewPlayerIndex(v){return g=je(v,p),g},log(v,E){m(v,E)},defineVar(v,E,w={},{playerIndex:C}={}){let O=x(v,C),k=ci(E);if(Object.prototype.hasOwnProperty.call(t[O],k))throw new Error(`custom variable already exists: ${O}.${k}`);let _=w.type?String(w.type):fi(w.value??w.defaultValue);if(_&&!Ma.includes(_))throw new Error(`unsupported custom variable type: ${_}`);let D=w.value!==void 0?w.value:w.defaultValue!==void 0?w.defaultValue:null;return I(O,k,D,_),$.getVar(O,k)},getVar(v,E,{playerIndex:w}={}){let C=x(v,w),O=ci(E);if(!Object.prototype.hasOwnProperty.call(t[C],O)){m("engine",`GetGlobalCustomVariableValue missing ${C}.${O}; returning nil (simulator policy)`);return}return t[C][O]},setVar(v,E,w,{notify:C=!0,type:O,playerIndex:k}={}){let _=x(v,k),D=ci(E),Y=O||i[_][D]?.type||fi(w);if(Y&&!Ma.includes(Y)&&Y!=="")throw new Error(`unsupported custom variable type: ${Y}`);let ue=w;if(!((Y==="Int"||Y===""&&typeof w=="number"&&Number.isInteger(w))&&(ue=A(_,D,w).value,ue===void 0)))return I(_,D,ue,Y),C&&G(_,D),ue},listVars(v){let E=v?[x(v)]:["Level",...Array.from({length:p},(C,O)=>ui(O+1)),...Array.from({length:p},(C,O)=>Gi(O+1))],w=[];for(let C of E)for(let O of Object.keys(t[C]))w.push({entityType:C,name:O,type:i[C][O]?.type||"",value:Ie(t[C][O])});return w},receiveFromClient(v,E=[],{playerIndex:w}={}){let C=je(w||g,p);y(C);let O=Di(v),k={id:u++,direction:"inbound",name:O,params:za(E),values:Oa(E),time:s,playerIndex:C,from:ui(C)};return n.push(k),q(k),k},sendToClient(v,E=[],{target:w="PlayerSelf",playerIndex:C}={}){let O=Di(v),k=Gn(w),D=z(k,C||g),Y={id:u++,direction:"outbound",name:O,params:za(E),values:Oa(E),time:s,target:k,players:D,deliverAt:s+f/1e3,delivered:!1};return r.push(Y),f===0?$.deliver(Y):a.push(Y),Y},getLogic(){return Ie(h)},setLogic(v){return h=di(v),$.getLogic()},deliver(v){if(!v||v.delivered)return;v.delivered=!0;let E=Array.isArray(v.players)&&v.players.length?v.players:z(v.target);for(let w of E){let C=l[w];C&&typeof C.sendClientSignal=="function"&&C.sendClientSignal(v.name,v.values)}},flush(v){v!==void 0&&(s=Number(v)||0);let E=[];for(let w=a.length-1;w>=0;w-=1)a[w].deliverAt<=s&&E.push(a.splice(w,1)[0]);E.sort((w,C)=>w.id-C.id);for(let w of E)$.deliver(w);return E},inbound(){return n.slice()},outbound(){return r.slice()},loadConfig(v){if(v!=null){if(typeof v!="object")throw new Error("server config must be an object");if(v.graph&&!Array.isArray(v.nodes))throw new Error("unsupported server node graph: v1 only accepts custom variables and signals");for(let E of v.nodes||[]){let w=us(E);if(!ls.has(w))throw new Error(`unsupported server node: ${w||JSON.stringify(E)}. v1 only supports custom variables and signals`)}if(v.onlineLatencyMs!==void 0){let E=Number(v.onlineLatencyMs);if(!Number.isFinite(E)||E<0)throw new Error("onlineLatencyMs must be a non-negative finite number");f=E}v.playerCount!==void 0&&$.setPlayerCount(v.playerCount),v.viewPlayerIndex!==void 0&&$.setViewPlayerIndex(v.viewPlayerIndex),(v.logic!==void 0||v.serverLogic!==void 0)&&$.setLogic(v.logic??v.serverLogic);for(let E of v.vars||[]){let w=x(E.entityType),C=ci(E.name);Object.prototype.hasOwnProperty.call(t[w],C)?$.setVar(w,C,E.value??E.defaultValue,{notify:!1,type:E.type}):$.defineVar(w,C,E)}}},attachRuntime(v,{playerIndex:E=1}={}){let w=je(E,8);return l[w]&&l[w]!==v&&H(l[w]),l[w]=v||null,J(l[w],w),$},attachRuntimes(v){$.detachRuntime();let E=Array.isArray(v)?v:[];for(let w=0;w<E.length&&w<8;w+=1)l[w+1]=E[w]||null,J(l[w+1],w+1);return $},detachRuntime(){for(let v=1;v<=8;v+=1)H(l[v]),l[v]=null},snapshot(){let v=ui(g),E=Gi(g),w={Level:{},PlayerSelf:{},AvatarSelf:{}};for(let C of Object.keys(t.Level))w.Level[C]={type:i.Level[C]?.type||"",value:Ie(t.Level[C])};for(let C of Object.keys(t[v]))w.PlayerSelf[C]={type:i[v][C]?.type||"",value:Ie(t[v][C])};for(let C of Object.keys(t[E]))w.AvatarSelf[C]={type:i[E][C]?.type||"",value:Ie(t[E][C])};for(let C=1;C<=p;C+=1){let O=ui(C),k=Gi(C);w[O]={},w[k]={};for(let _ of Object.keys(t[O]))w[O][_]={type:i[O][_]?.type||"",value:Ie(t[O][_])};for(let _ of Object.keys(t[k]))w[k][_]={type:i[k][_]?.type||"",value:Ie(t[k][_])}}return{clock:s,onlineLatencyMs:f,playerCount:p,viewPlayerIndex:g,logic:$.getLogic(),vars:w,inbound:n.map(C=>({id:C.id,name:C.name,params:Ie(C.params),values:Ie(C.values),time:C.time,playerIndex:C.playerIndex,from:C.from})),outbound:r.map(C=>({id:C.id,name:C.name,params:Ie(C.params),values:Ie(C.values),time:C.time,target:C.target,players:Array.isArray(C.players)?C.players.slice():[],deliverAt:C.deliverAt,delivered:!!C.delivered})),logs:o.map(C=>({source:"server",level:C.level,text:C.text,time:C.time}))}},reset(){for(let v of $n){for(let E of Object.keys(t[v]))delete t[v][E];for(let E of Object.keys(i[v]))delete i[v][E]}n.length=0,r.length=0,a.length=0,o.length=0,u=1,s=0},destroy(){$.detachRuntime(),$.reset()}};e.config&&$.loadConfig(e.config);for(let v of e.vars||[])$.defineVar(v.entityType,v.name,v);return $}var ds={container:"container",textbox:"textbox",image:"image",button:"button",cursor:"cursor",grid:"grid",reference:"reference",textwindow:"textwindow",keyhint:"keyhint",animation:"animation",fullscreen:"fullscreen"};function Vn(e,t,i=null){let n=Ze(e.transformByPlatform,t),r={authoringId:e.id,kind:ds[e.kind]||"container",name:e.name,prefabIndex:e.guid||0,active:e.active!==!1,visible:e.visible!==!1,canControllerFocus:e.canControllerFocus===!0,anchoredPositionX:n.offset.x,anchoredPositionY:n.offset.y,sizeDeltaX:n.size.x,sizeDeltaY:n.size.y,anchorMinX:n.anchorMin.x,anchorMinY:n.anchorMin.y,anchorMaxX:n.anchorMax.x,anchorMaxY:n.anchorMax.y,pivotX:n.pivot.x,pivotY:n.pivot.y,localScaleX:n.scale.x,localScaleY:n.scale.y,localScaleZ:n.scale.z,localRotationX:n.rotation.x,localRotationY:n.rotation.y,localRotationZ:n.rotation.z,children:(e.children||[]).map(o=>Vn(o,t,i))},a=i?.get(e.id);return a?.length&&(r.scripts=a.map(o=>{let l=Number(o.guid);return{path:o.path||o.id,source:o.source||"",...Number.isSafeInteger(l)&&l>0?{scriptMappingId:l}:{}}})),e.kind==="container"&&(r.isolateNavigation=e.isolateNavigation===!0,r.disableKeyEventPassthrough=e.disableKeyEventPassthrough===!0,r.disableCursorEventPassthrough=e.disableCursorEventPassthrough===!0,r.showCursor=e.showCursor===!0),(e.kind==="textbox"||e.kind==="textwindow")&&(r.text=e.text??"",r.fontSize=e.fontSize,r.adaptiveFontSize=e.adaptiveFontSize===!0,r.minimumFontSize=e.minimumFontSize,r.fontColor=e.fontColor,r.bgColor=e.bgColor,r.enableOutline=e.enableOutline!==!1,r.outlineColor=e.outlineColor,r.horizontalAlignment=e.horizontalAlignment||"Left",r.verticalAlignment=e.verticalAlignment||"Top",e.kind==="textwindow"&&(r.interactable=e.interactable!==!1,r.showScrollBar=e.showScrollBar!==!1)),e.kind==="image"&&(r.imageSource=e.imageSource,r.imageType=e.imageType??null,r.imageId=e.imageId??0,r.imageColor=e.imageColor,r.raycastTarget=e.raycastTarget===!0,r.enableMask=e.enableMask===!0,r.enableSoftEdge=e.enableSoftEdge===!0,r.softEdgeMode=e.softEdgeMode,r.softEdgeWidthX=e.softEdgeWidthX,r.softEdgeWidthY=e.softEdgeWidthY,r.horizontalSoftRange=e.horizontalSoftRange,r.verticalSoftRange=e.verticalSoftRange,r.enableFill=e.enableFill===!0,r.fillType=e.enableFill?e.fillType:"Unused",r.fillHorizontalType=e.fillHorizontalType,r.fillVerticalType=e.fillVerticalType,r.fillRadial90Type=e.fillRadial90Type,r.fillRadialType=e.fillRadialType,r.fillAmount=e.fillAmount,r.reverseMaskArea=e.reverseMaskArea===!0),e.kind==="button"&&(r.raycastTarget=e.raycastTarget!==!1,r.interactable=e.interactable!==!1,r.clickAudioId=e.clickAudioId,r.unavailableChildId=e.unavailableChildId??null,r.hoverChildId=e.hoverChildId??null,r.pressedChildId=e.pressedChildId??null,r.selectedChildId=e.selectedChildId??null),e.kind==="cursor"&&(r.raycastTarget=e.raycastTarget!==!1),e.kind==="reference"&&(r.referencedPrefabIndex=e.referencedPrefabId),e.kind==="grid"&&(r.itemPrefabIndex=e.itemPrefabId,r.raycastTarget=e.raycastTarget!==!1,r.interactable=e.interactable!==!1,r.showScrollBar=e.showScrollBar!==!1,r.scrollDirection=e.scrollDirection,r.layoutConstraint=e.layoutConstraint,r.layoutConstraintFixedCount=e.layoutConstraintFixedCount,r.cellSizeX=e.cellSizeX,r.cellSizeY=e.cellSizeY,r.spacingX=e.spacingX,r.spacingY=e.spacingY,r.padding1X=e.padding1X,r.padding1Y=e.padding1Y,r.padding2X=e.padding2X,r.padding2Y=e.padding2Y,r.previewCount=e.previewCount),e.kind==="keyhint"&&(r.keyboardKeyCode=e.keyboardKeyCode,r.controllerKeyCode=e.controllerKeyCode),(e.kind==="animation"||e.kind==="fullscreen")&&(r.raycastTarget=!1,r.animationId=e.animationId,r.playSoundEffect=e.playSoundEffect,e.kind==="animation"&&(r.layer=e.layer)),r}function Yn(e,t=[],i=""){let n=i&&ie[i]?i:e.canvasId,r=ie[n],a=Qt(e),o=new Map;for(let u of t){if(!u.controlId)continue;let s=o.get(u.controlId)||[];s.push(u),o.set(u.controlId,s)}let l=e.meta?.assetType==="client-control-template"?(e.root.children||[]).map(u=>Vn(u,n,o)):[];return{canvasId:n,platform:r.platform,device:r.luaDevice,canvasWidth:r.width,canvasHeight:r.height,root:Vn(a,n,o),templates:l}}var Yi="qxqy-autotest";var bt=.03333333333333333,hs=new Set(["pointer","key","click","pause","resume","serverSet","serverSend","view"]),ms=new Set(["log","control","var","signal","tree","lua"]);function yt(e,t){let i=Number(e);if(!Number.isFinite(i))throw new Error(`${t} must be a finite number`);return i}function Xn(e){return JSON.parse(JSON.stringify(e??null))}function Xi(e,t){if(!e||typeof e!="object")throw new Error(`events[${t}] must be an object`);let i=String(e.kind||e.do||"");if(!hs.has(i))throw new Error(`unsupported event kind: ${i||"(empty)"}`);let n=e.payload&&typeof e.payload=="object"?{...e.payload}:{};if(i==="pointer")!n.type&&e.type&&(n.type=e.type),n.x===void 0&&(n.x=e.x),n.y===void 0&&(n.y=e.y),n.x=yt(n.x,"pointer.x"),n.y=yt(n.y,"pointer.y"),n.type=String(n.type||"click"),n.type==="wheel"&&(n.deltaX=yt(n.deltaX??e.deltaX??0,"pointer.deltaX"),n.deltaY=yt(n.deltaY??e.deltaY??0,"pointer.deltaY"));else if(i==="key"){if(n.typeName=String(n.typeName||n.key||e.typeName||e.key||""),!n.typeName)throw new Error("key event requires typeName")}else if(i==="click"){if(n.name=String(n.name||e.name||""),!n.name)throw new Error("click event requires control name")}else if(i==="serverSet"){if(n.entityType=String(n.entityType||e.entityType||""),n.name=String(n.name||e.name||""),n.value===void 0&&(n.value=e.value),n.value===void 0&&(n.value=null),!n.entityType||!n.name)throw new Error("serverSet requires entityType and name")}else if(i==="serverSend"){if(n.name=String(n.name||e.name||""),n.params=Array.isArray(n.params)?n.params:Array.isArray(e.params)?e.params:[],n.target=String(n.target||e.target||"PlayerSelf"),!n.name)throw new Error("serverSend requires signal name")}else if(i==="view"&&(n.playerIndex=Number(n.playerIndex||n.viewPlayerIndex||e.playerIndex||e.viewPlayerIndex||0),!Number.isInteger(n.playerIndex)||n.playerIndex<1))throw new Error("view event requires playerIndex 1-8");return{t:yt(e.t??0,"event.t"),source:String(e.source||"user"),kind:i,payload:n}}function Bn(e,t){if(!e||typeof e!="object")throw new Error(`asserts[${t}] must be an object`);let i=String(e.kind||(e.check?"log":""));if(!ms.has(i))throw new Error(`unsupported assert kind: ${i||"(empty)"}`);let n={kind:i};if(e.at!==void 0&&(n.at=yt(e.at,"assert.at")),i==="log"){if(n.contains=String(e.contains||e.check||e.text||""),n.source=e.source==="server"?"server":"client",e.level&&(n.level=String(e.level)),!n.contains)throw new Error("log assert requires contains")}else if(i==="control"){if(n.id=e.id?String(e.id):"",n.name=e.name?String(e.name):"",n.field=String(e.field||""),!n.field)throw new Error("control assert requires field");if(!n.id&&!n.name)throw new Error("control assert requires id or name");if(!Object.prototype.hasOwnProperty.call(e,"equals"))throw new Error("control assert requires equals");n.equals=Xn(e.equals)}else if(i==="var"){if(n.entityType=String(e.entityType||""),n.name=String(e.name||""),!n.entityType||!n.name)throw new Error("var assert requires entityType and name");if(!Object.prototype.hasOwnProperty.call(e,"equals"))throw new Error("var assert requires equals");n.equals=Xn(e.equals)}else if(i==="signal"){if(n.direction=e.direction==="outbound"?"outbound":"inbound",n.name=String(e.name||""),!n.name)throw new Error("signal assert requires name");e.values!==void 0&&(n.values=Xn(e.values))}else if(i==="tree"){if(n.name=String(e.name||""),n.exists=e.exists!==!1,!n.name)throw new Error("tree assert requires name")}else if(i==="lua"&&(n.source=String(e.source||""),!n.source.trim()))throw new Error("lua assert requires source");return n}function Ua(e){let t=0,i=[],n=[];for(let r of e){if(!r||typeof r!="object")throw new Error("queue step must be an object");if(r.do!=="start"){if(r.do==="step"){t+=yt(r.dt??bt,"step.dt");continue}if(r.do==="pointer"||r.do==="key"||r.do==="click"||r.do==="pause"||r.do==="resume"||r.do==="serverSet"||r.do==="serverSend"||r.do==="view"){i.push(Xi({...r,kind:r.do,t},i.length));continue}if(r.assert||r.check||r.kind){n.push(Bn({...r.assert||r,at:r.at??t},n.length));continue}throw new Error(`unsupported queue step: ${JSON.stringify(r)}`)}}return{events:i,asserts:n,dt:bt}}function hi(e){if(Array.isArray(e)){let n=Ua(e);return{format:Yi,version:1,name:"",dt:n.dt,events:n.events,asserts:n.asserts}}if(!e||typeof e!="object")throw new Error("autotest case must be an object or step array");if(Array.isArray(e.queue)||Array.isArray(e.steps)){let n=Ua(e.queue||e.steps);return{format:Yi,version:1,name:String(e.name||""),dt:Number(e.dt)>0?Number(e.dt):n.dt,events:n.events,asserts:n.asserts}}let t=(e.events||[]).map((n,r)=>Xi(n,r)),i=(e.asserts||[]).map((n,r)=>Bn(n,r));return t.sort((n,r)=>n.t-r.t||0),{format:Yi,version:1,name:String(e.name||""),dt:Number(e.dt)>0?Number(e.dt):bt,playerCount:Number(e.playerCount)>0?Number(e.playerCount):1,events:t,asserts:i}}function ja(e,t={}){let i=(e||[]).map((n,r)=>Xi(n,r));return{format:Yi,version:1,name:String(t.name||""),dt:Number(t.dt)>0?Number(t.dt):bt,playerCount:Number(t.playerCount)>0?Number(t.playerCount):1,events:i,asserts:(t.asserts||[]).map((n,r)=>Bn(n,r))}}function Ha(e,t,i){if(!e)return null;let n=Xi({...t,t:t.t??i??0},e.events.length);return e.events.push(n),n}import{createCanvas as ps}from"@napi-rs/canvas";var Ka=ps(1,1).getContext("2d"),gs='"Microsoft YaHei UI","Microsoft YaHei",sans-serif',Bi=(e,t)=>Math.max(0,Math.min(t,Number.isFinite(e)?e:0));function qa(e,t,i){let n=Math.max(8,Number(e.fontSize)||12),r=String(e.text??"").replace(/\r\n?/g,`
109
+ `),a=JSON.stringify([r,t,i,n,e.showScrollBar]),o=e._textWindowLayout;if(o?.key!==a){Ka.font=`${n}px ${gs}`;let s=g=>{let m=[];for(let y of r.split(`
110
+ `)){let I="";for(let A of y)I&&Ka.measureText(I+A).width>g&&(m.push(I),I=""),I+=A;m.push(I)}return m},f=s(Math.max(1,t-4)),h=e.showScrollBar!==!1&&f.length*n*1.2>i,p=Math.max(1,t-4-(h?12:0));h&&(f=s(p)),o=e._textWindowLayout={key:a,lines:f,font:n,textWidth:p,lineHeight:n*1.2,length:f.length*n*1.2}}let l=Math.max(0,o.length-i),u=Bi(e._scrollOffset||0,l);return e._scrollOffset=u,{...o,max:l,offset:u,viewport:i,horizontal:!1,width:t,height:i}}function Ui(e,t,i){if(!e?.showBar||e.max<=0||t<=0||i<=0)return null;let n=e.horizontal===!0,r=n?t:i,a=Math.max(0,r-4),o=Math.min(a,Math.max(18,a*r/(r+e.max))),l=a-o,u=l*e.offset/e.max,s=Math.min(8,n?i:t),f=n?{x:-t/2+2,y:i/2-s-2,width:a,height:s}:{x:t/2-s-2,y:-i/2+2,width:s,height:a},h=n?{...f,x:f.x+u,width:o}:{...f,y:f.y+u,height:o};return{track:f,thumb:h,travel:l}}var ys=[[10001,"ura.1ht4.2ag9.1hh5.jbb.k02.jcw.2tv.2wn.2xk.2r3.d5s.94l.ebv.kcr.b40.77k.9gp.97w.1hb5.jag.btu.jc9.hp5.bmj.blq.blq.ff9.ffk.o74.1owl.rp.mg.l3.lf.lh.qy.1a3z.2xk.2xk.2xk.2xk.2xk.17dc.1f2b.2bc.2bc.2bc.2bc.2bc.ffo.ffo.126.1fk.4mo.4mo.15e.1h2.237.2ba.2kd.2bc.4mo.4mo.4mo.4mo.1mc.1n6.2cu.1ud.2b1.2ee.1tj.1tk"],[20001,"o6.fh.kb.cr.og.sm.6x.8c.87.o7.vz.kt.qo.lg.ob.9w.mg.1kz.zc.1ex.1d5.ps.uu.su.qs.ys.zp.10k.15a.xc.uk.mx.1ax.nt.tu.19m.uj.1ku.tt.100.ie.d3.fp.ie.ie.d3.fp.ie.8p.7k.fw.h0.qc.ot.uc.ot.rk.gb.1c2.ff.cl.9v.wg.1ir.1lr.1b8.1ri.1p0.104.10n.mw.j6.jb.f1.dv.84.a0.cp.bx.1ko.1au.1ia.rs.rt.rs.t7.x6.wi.zc.16f.1i6.2jh.28d.qh.k8.1gz.1ko.2iv.1xp.1l4.1gk.10j.yo.1jk.1jk.xv.104.15o.1xg.1xg.1xi.25i.p1.t1.yh.1ak.1i6.1y2.xt.32u.3g6.1bz.2mn.14l.14c.1e1.op.s8.p2.v5.2ix.1a0.ry.16m.17n.13c.134.ys.yu.xr.sl.sr.sd.yh.z5.gd.gl.hx.h2.g8.fj.iy.hz.jj.th.12n.16r.d3.j9.dg.lj.fl.a7.f9.iw.el.27f.1dh.1rh.2ph.yd.w5.x5.tr.pq.zf.16h.1a5.17t.wy.vn.y8.wl.yv.2ye.2qt.1ah.163.19t.uf.119.2vv.1bm.13h.14p.1so.c3.as.9z.19w.1l4.1nl.rj.we"],[30001,"jo.my.ss.dw.c1.b4.hl.hl.hl.cz.dw.dw.b4.dw.fr.kd.qv.px.px.74.6u.8h.60.8q.8b.eo.eo.eo.8k.a5.99.12v.13y.lg.m4.qr.dw.ex.g0.ef.cd.br.11n.17h.1b8.1c9.9p.ag.9z.l9.m8.m8.lw.m8.cz.99.b4.8c.63.7f.6h.99.re.pp.pi.cq.c9.cp.ck.c6.b0.bd.al.f6.gl.ed.fs.lc.k6.kh.i6.cx.j1.hk.gb.d7.h7.g2.em.kj.kn.k4.j5.rh.t0.qt.mj.i7.ih.i2.hd.3r.8d.6u.6z.by.de.dg.cr.1a5.1ab.16c.18g.n2.ly.no.nt.f9.de.lr.fe.f0.fj.el.fo.t1.g9.ly.h3.g6.de.2ak.2f3.wf.kg.qn.11p.rg.uj.u6.11c.22o.2cs.3dp.3dq.3d5.3d6.1zx.18v"],[40001,"19x.215.2zt.1ex.2pj.7hy.1ur.1gn.1g7.1b1.u9.1tw.108.1ew.rs.1qu.w9.lk.244.qi.b6.tk.jg.jg.jg.y4.c1.b4.iv.hi.r4.n7.gy.ev.qe.12z.18n.dw.1l6.ou.wz.1un.19t.18k.yy.1hs.sl.dw.1vl.100.14k.1q8.209.1jk.1xr.ua.1j2.pr.26h.1gs.s9.px.15v.pf.1jk.xc.1hb.111.172.ut.285.1oh.149.zj.22r.2l9.14a.ok.23y.1eh.xe.1j0.1rp.1cz.wf.1mh.22k.334.1z2.1xo.1br.4ji.5nq.5nf.2za.18r.h3.eo.ia.1kn.dc.ss.s0.1bl.1oc.is.km.177.1ec.1ao.h4.hp.dx.l9.iw.i3.12w.n1.yq.12w.1ju.yx.14s.18b.22t.u3.my.2rb.36w.13u.z8.20r.18g.19r.2x9.w4.q2.1d2.wo.13a.v6.17w.ur.288.1b6.14m.1fi.1xx.1ee.kj.121.j2.1d2.2ad.1ri.2lc.1vk.138.12r.xj.1h5.1c5.2qx.1gj.t2.lv.rf.18q.1kz.dw.2aq.ia.1i9.k5.199.f4.10y.18a.xf.rk.1g9.1q3.10h.sj.15o.e3.dz.sv.135.w9.yg.aw.2a2.19m.22w.1c8.272.13o.104.1sr.rs.1pb.d5.df.kp.jq.1a7.s8.1ao.ba.rb.in.pz.q8.140.ij.1e7.jl.yk.117.10i.1tn.1oj.1sv.sj.1e3.2so.1c7.1gv.178.107.10n.1dx.1qi.1wp.2bc.218.16r.105.xc.z6.11w.1mc.1y9.17p.1cs.2ij.18c.1ie.nn.16c.1ce.xb.1ei.3j0.ve.14x.1sx.285.1b8.1at.v4.rv.rs.10z.xq.11o.15k.xq.u1.i2.pu.i4.l3.9u.oh.mc.nm.pw.1i3.1h4.pj.111.l4.lb.qq.qf.u0.h4.nk.yf.6h.ij.ds.oy.re.m8.1gl.cz.16z.a1.1f8.1x6.vp.dz.gp.g6.fr.vl.fr.gg.qc.aj.99.go.ij.fz.11a.x5.mo.1u9.h0.m8.10m.1an.2bc.3uw.2gk.124.xb.1uk.1b6.2xj.1os.11a.vs.1i9.1lr.2gv.265.668.1xg.45j.404.2x1.1io.3om.4q2.4mo.1d4.2bp.1pr.166.2y6.2bv.361.2nc.2bc.3g0.7g4.334.2bc.2xo.3uw.6ic.4ig.3uw.23v.1la.2zr.1jt.1cq.27a.1n1.19x.1qg.1jn.1ca.26y.2d6.4v4.4mo.4mo.7ps.1jk.153.1fo.1dm.1s2.1w1.oe.1lb.319.2eg.58p.4mo.3dw.2y2.2xm.1u8.1ko.12n.1e0.2sd.1md.2cl.1q2.372.4mo.48s.b14.3fu.334.334.34i.4nf.4ji.5eg.3uw.2u8.1g1.110.37x.2jo.su.334.3aj.3uw.63f.2bc.2bc.8v4.1ts.ax5.5du.34d.3oc.34j.4si.174.rt.1rp.2b0.37d.1ta.2gh.28a.22z.1nc.1a5.1pa.4dd.3ha.2cs.5mv.4mq.5c2.3uw.1gf.4md.113.10x.21o.2hj.1b3.1cx.1ol.3ar.1fv.17t.1a7.2uj.2we.1jk"],[50001,"1o8.1k1.mo.1wu.2c9.22d.1kb.23n.1b8.1ic.24c.2wz.1mq.1mu.1jx.1z1.o3.190.vp.1h7.th.4mo.1rp.4mo.4mo.7ps.zz.143.21v.1nf.34s.1s3.r9.18t.s1.r9.21w.277.ls.25k.5v1.2bc.1kh.wt.14i.1eq.15o.668.sh.rl.3wi.3vc.43c.3yn.17c.f5.xu.jg.176.19v.1xy.23m.18x.30c.10l.13k.v8.vp.17t.qj.17m.1wr.1la.8t.s7.18d.1l2.152.mx.1c8.1l4.1f5.1xe.rz.2hz.1et.13t.xb.14r.15o.z0.1zo.ur.257.1gb.li.12d.15a.132.1m1.3vu.296.1mg.11m.z0.159.mp.hd.x4.1go.ns.xh.2a7.tt.2vb.1bx.1kh.u3.11i.1y1.24e.2hp.2mn.1w6.3zm.166.14g.1mo.2v9.2rg.2f9.1r0.139.m1.k3.ys.1dy.29k.1mm.22m.3zx.4dr.2h7.22o.tv.rm.1et.2wv.2ar.1t7.ku.12s.10b.1v9.1gu.12m.1b3.tv.1c8.tk.10s.ul.1tt.ka.oi.qb.13f.13f.13k.17h.1uh.ez.en.2x7.2ln.2h8.3h8.ig.n9.27o.18b.hl.nm.uk.11a.1ta.1k4.1eh.wv.1go.1gg.sc.18u.1dz.2aq.vt.2l7.25h.1l5.1kn.1vc.1b4.28i.17t.1d6.1k2.18z.jy.jw.dh.1mx.fr.vp.35w.34z.35w.34z.4so.vf.yx.1bg.1d3.2yc.1tg.8q3.99g.am.2du.rm.rg.xa.2cw.xc.1j6.1if.18z.13a.yz.142.1z5.262.1bj.1y8.ur.u5.16j.1pf.1bi.l8.1il.3vz.2dr.jo.ls.18s.16l.18c.141.219.1yz.1fc.24t.27e.481.1vp.25h.1yq.1zn.1uw.11u.1jp.1pz.39o.t6.1mj.1u5.11l.1vd.1dk.1zb.1ic.3ql.14p.1wq.25x.267.zn.zn.1pf.13z.1j7.r9.1hb.4yp.1lt.1cw.1z4.19z.1og.1j4.1cl.1eg.u8.16s.1en.zu.1hr.1js.19g.303.22j.2oa.180.1v7.2ud.2d7.21s.3g9.vh.v1.284.3lg.3lg.17q.1h3.4mo.1cm.1rv.22i.2mc.2j3.27o.333.1q8.237.2ll.23b.2sp.2ll.2ox.2cf.2f8.2hz.1uo.y4.s9.w6.2dg.2q9.up.1m1.1vz.2n8.192.1eb.z7.2em.2q3.1sd.1gj.348.3vf.2iu.29x.1dc.7oj.4pq.5vb.4mx.5me.5sf.5yf.7ps.yj.q0.10w.13p.18b.2wd.11q.2vx.dd.iv.12p.jh.u9.1uy.w0.3f0.3bj.126.qo.1gj.11k.pu.22h.1z6.rp.y4.y0.xl.1d0.11s.wa.1a6.127.10m.12r.1nh.1fy.yo.1js.162.n4.174.1aj.y4.o8.qz.rh.qa.18s.mr.j3.ii.sr.sx.1jk.17l.mj.zr.uy.wa.19t.2bt.xe.1od.hs.xr.5b.12c.1ab.we.gz.mz.4y.sf.11s.e0.1l7.ew.h6.jz.l0.e8.1cx.p6.17u.bw.1ah.10r.10e.o9.1bc.uv.lq.tl.zb.100.jy.b8.bj.336.10n.na.sq.14r.yr.nm.123.tf.l1.zp.1xc.1vk.31l.zl.2bj.2b9.2fv.17p.y0.so.1ln.29c.1eh.nh.xn.131.qc.186.ff.fc.xq.1bm.la.l8.14f.243.111.xi.qw.1qn.11v.1ur.1jx.1ks.s9.nz.269.1zj.2zd.1pv.18n.2vk.p3.1fh.13v.1lf.1lu.2db.1sr.1k3.26o.1dl.1f3.187.2lh.166.v9.xh.1e3.119.s2.mt.1iu.1k6.1o2.12s.u4.2br.1q3.qv.1e4.1zu.1v4.1vk.1t3.3p7.1ob.14d.1ns.1ef.1e4.12w.2kk.1ba.2jx.1e0.1s5.12w.17r.14s.wz.1qp.183.3fb.188.1gr.2ot.168.1u7.w8.28o.1zd.32z.230.w7.vq.x8.1qh.19f.14o.2r9.qg.1ey.1qr.1p6.3a3.1ov.13d.tz.wk.22v.1qa.2l9.yw.yf.nw.p6.1ly.1jk.1nh.x9.q0.17r.17h.ux.uw.12y.p7.g7.kt.14c.ze.1kh.1eo.18a.1d8.26j.15k.19f.1ym.1j5.1c6.11k.1sd.1jp.1ws.13s.1o5.214.sx.px.20x.14h.1ja.s6.1q8.w8.1ks.so.ub.121.202.1ej.1g1.1s8.2bc.4t1.bih.3uw.3pb.avp.6c7.bko.5eg.79c.6wh.3wd.4pn.55j.4a5.3gg.bko.5ei.52p.578.bcv.6gr.2bc.4j9.5y7.9d2.2bb.2bc.668.73z.5pg.50f.5m7.788.267.642.8h2.8h2.49s.64g.5e8.5e8.2bb.3ih.5ur.6bk.578.4ck.3sg.5fe.23i.e9w.2b8.5oj.6bw.2al.2rk.2rk.5pj.n6e.350.6v9.70t.639.3uw.3uw.2bg.639.2bb.2bd.6gj.2bh.660.578.3bk.65e.359.3o0.44i.4tn.1zq.5ee.4a5.3zu.rs.639.33q.5eg.1k1.15o.dw.3uw.b7p.7qd.898.4l4.5uu.5uu.b4g.2yh.2yh.3uw.51a.51a.5kk.66f.iq9.3n7.4nb.46a.1wb.20p.bih.8xa.7ps.70t.70t.4rv.5p1.6aq.ts.63z.668.5v2.5nu.563.55s.55s.5p3.2ga.32x.42x.5cr.4c2.71b.5zp.5c2.66t.4c8.2bc.2bc.2gn.3ea.2kp.fz6.8hz.3e8.4an.bko.j7e.jag.7sr.2bc.3zx.7qd.5ut.5jp.2wk.5q7.3uw.334.4i3.3uw.4bd.5eu.46h.4i2.6t4.446.5s7.5cg.4bk.5nd.7bf.4rt.23b.2bc.2bc.2bc.2bc.2ba.4mo.4dv.3wn.2bc.1we.4he.2bc.4gz.3wn.3km.4xy.4hi.4mr.2bc.247.3yj.2c6.2bc.3aj.446.4ub.3uw.51.e0.86.is.i1.hg.mn.m4.2c.7h.sg.e3.jb.7r.eq.nf.u0.60.4o.ke.47.47.47.47.b8.4x.dr.dy.rw.rw.59.8j.5z.a5.l3.c0.ik.f7.li.lr.7x.dv.du.dd.5e.91.1b.ce.cc.59.bh.e6.8m.9n.cl.lt.7ip.4mr.4si.4kf.vo.we.13e.17n.1iw.2pi.lp.r6.gw.7x.xz.qt.bq.ls.q1.eh.bx.cr.3c.j7.b8.fz.4k.8p.bg.5w.iy.j3.12o.rs.cz.dp.yz.jk.63.63.7ps.7ps.7ps.40g.3jp.4tw.89k.88a.7s0.83d.668.7ps.2fw.2ev.2fp.7ps.2jb.2dh.2ud.25i.24c.2bt.1pa.17r.1a7.7ps.7pt.5rg.4nl.3vv.7qo.31a.2p0.2k0.49a.3v4.3nl.1ug.1ug.1l6.7s1.7ps.2cp.2f8.2i7.7ps.28q.2be.275.1ma.1oz.1q7.16s.1iq.1e0.78m.7ps.2bc.2bc.2bc.bko.2wu.2wu.2wu.3b4.38f.3uw.3uw.3uw.3uw.7ps.7qa.32n.2gg.2wk.7rv.1v3.1qq.1rb.1zk.1my.1zp.1yn.1oh.1uh.7st.9q.9q.9q.9q.9q.kk.kk.kk.kk.kk.dw.dp.dw.rs.rs.rs.rs.s4.sd.54j.5n8.2n6.21r.1nu.1o5.14u.t6.3f7.2j0.32c.304.189.1gf.18w.18j.1st.1vq.116.kw.3uw.3uw.vr.zx.xc.tc.7d.7r.9d.9w.8s.9p.3b.3b"]].map(([e,t])=>[e,t.split(".").map(i=>parseInt(i,36)/1e3)]);function La(e){if(!Number.isSafeInteger(e))return null;for(let[t,i]of ys)if(e>=t&&e<t+i.length)return i[e-t];return null}var ji=e=>Number.isFinite(Number(e))?Math.max(0,Number(e)):0;function Wa(e,t){if(!e||e.kind!=="image"||e.enableMask!==!0||!t)return null;let i=ji(e.sourceWidth??e.width),n=ji(e.sourceHeight??e.height),r=e.enableSoftEdge===!0,a=e.softEdgeMode!=="Pixel",o=r?ji(e.softEdgeWidthX):0,l=r?ji(e.softEdgeWidthY):0;return{id:e.id,matrix:t,width:i,height:n,featherX:a?i*o/100:o,featherY:a?n*l/100:l}}function Ja(e,t,i){let n=Te(e,t,i);return{a:e.a,b:e.b,c:e.c,d:e.d,tx:n.x,ty:n.y}}import{randomUUID as to}from"node:crypto";function qi(e){for(let t of e.runtime.scrollControls||[]){let[i,n]=ri(t),r=t.kind==="grid"?Ot(t):qa(t,i,n),a={offset:r.offset,max:r.max,horizontal:r.horizontal,showBar:t.showScrollBar!==!1,textWidth:r.textWidth??0,lines:r.lines||[],lineHeight:r.lineHeight||0,contentLength:r.length},o=JSON.stringify(a);t._scrollKey!==o&&(t._scrollKey=o,t._scroll=a,t.markPlayDirty())}}function io(e){return{...e._scroll?{scroll:e._scroll}:{},...e.parent?._gridItems?.includes(e)?{clipToParent:!0}:{}}}function Un(e,t){let i=e._scroll?.max||0;e.kind==="grid"?e.scrollProgress=i?Bi(t,i)/i:0:e._scrollOffset=Bi(t,i),e.markPlayDirty()}var bs=Object.freeze(Object.values(ie).map(e=>Object.freeze({id:e.id,label:e.label,platform:e.platform,width:e.width,height:e.height})));function Li(e){qi(e);let t=ve({width:e.runtime.canvasWidth,height:e.runtime.canvasHeight}),i=new Map;function n(r,a,o){let l=Ye(a,r);l.activeInHierarchy=o&&r.active!==!1,i.set(r.Id,l);let u=l.activeInHierarchy;for(let s of r.children)n(s,l,u)}for(let r of e.runtime.roots)n(r,t,!0);return i}function no(e,t=Li(e)){let i=new Map;function n(r,a){let o=t.get(r.Id);if(!o)return;let l=Zt(a,o,r);i.set(r.Id,l);for(let u of r.children)n(u,l)}for(let r of e.runtime.roots)n(r,_t());return i}function ro(e,t){let i=t.get(e.Id);return{id:e.Id,prefabId:e.prefabIndex,authoringId:e.authoringId,name:e.name,kind:e.kind,typeofName:e.typeofName,instantiated:!e.authoringId,active:!!e.active,visible:!!e.visible,activeInHierarchy:!!i?.activeInHierarchy,raycastTarget:e.raycastTarget!==!1,interactable:e.interactable!==!1,pressed:e.pressed===!0,...e._scroll?{scrollOffset:e._scroll.offset,scrollMax:e._scroll.max}:{},...e.kind==="grid"?{itemCount:e.itemCount,scrollProgress:e.scrollProgress}:{},anchoredPositionX:e.anchoredPositionX,anchoredPositionY:e.anchoredPositionY,sizeDeltaX:e.sizeDeltaX,sizeDeltaY:e.sizeDeltaY,localScaleX:e.localScaleX,localScaleY:e.localScaleY,localScaleZ:e.localScaleZ,localRotationZ:e.localRotationZ,text:e.kind==="textbox"||e.kind==="textwindow"?e.text??"":null,fontSize:e.kind==="textbox"||e.kind==="textwindow"?e.fontSize:null,fontColor:e.kind==="textbox"||e.kind==="textwindow"?e.fontColor:null,bgColor:e.kind==="textbox"||e.kind==="textwindow"?e.bgColor:null,enableOutline:e.kind==="textbox"||e.kind==="textwindow"?e.enableOutline===!0:null,outlineColor:e.kind==="textbox"||e.kind==="textwindow"?e.outlineColor:null,imageId:e.kind==="image"?e.imageId??0:null,imageSource:e.kind==="image"?qe(e.imageSource):null,imageType:e.kind==="image"?e.imageType==null?null:Ne(e.imageType):null,primitive:e.kind==="image"?Et(e.imageId,e.imageSource):null,imageColor:e.kind==="image"?e.imageColor:null,enableMask:e.kind==="image"?e.enableMask===!0:null,enableSoftEdge:e.kind==="image"?e.enableSoftEdge===!0:null,softEdgeMode:e.kind==="image"?e.softEdgeMode:null,softEdgeWidthX:e.kind==="image"?e.softEdgeWidthX:null,softEdgeWidthY:e.kind==="image"?e.softEdgeWidthY:null,horizontalSoftRange:e.kind==="image"?e.horizontalSoftRange:null,verticalSoftRange:e.kind==="image"?e.verticalSoftRange:null,enableFill:e.kind==="image"?e.enableFill===!0:null,fillType:e.kind==="image"?e.fillType:null,fillHorizontalType:e.kind==="image"?e.fillHorizontalType:null,fillVerticalType:e.kind==="image"?e.fillVerticalType:null,fillRadial90Type:e.kind==="image"?e.fillRadial90Type:null,fillRadialType:e.kind==="image"?e.fillRadialType:null,reverseMaskArea:e.kind==="image"?e.reverseMaskArea===!0:null,fillAmount:e.kind==="image"?e.fillAmount:null,box:i?{left:i.left,bottom:i.bottom,width:i.width,height:i.height}:null,children:e.children.map(n=>ro(n,t))}}function vs(){return{pointerDownControl:null,pointerDownPosition:null,pointerLastPosition:null,pointerDragging:!1,pointerHoverControl:null,pointerScroll:null,hoveredControl:null,selectedControl:null,stateRestores:new Map,viewCache:null}}function Ss(e,t,i,n){let r=si({canvasWidth:e.canvasWidth,canvasHeight:e.canvasHeight,device:e.device,audioDuration:La,canSelectImageType:vr,...n?{language:n}:{}});for(let a of[...e.templates||[],...t?.templates||[]])Number.isSafeInteger(a.prefabIndex)&&a.prefabIndex>0&&r.registerTemplate(a.prefabIndex,a);for(let a of i){let o=a.path||a.id,l=a.source||"";o&&l&&r.registerScriptFile(o,l)}return r}var ws=["pointerDownControl","pointerDownPosition","pointerLastPosition","pointerDragging","pointerHoverControl","pointerScroll","hoveredControl","selectedControl","stateRestores","viewCache"];function Is(e){Object.defineProperty(e,"runtime",{configurable:!0,enumerable:!0,get(){return e.runtimes[e.viewPlayerIndex-1]}});for(let t of ws)Object.defineProperty(e,t,{configurable:!0,enumerable:!0,get(){return e.views[e.viewPlayerIndex-1][t]},set(i){e.views[e.viewPlayerIndex-1][t]=i}})}function ao(e,{templatesProject:t=null,scripts:i=[],sceneScripts:n=null,templateScripts:r=null,serverConfig:a=null,canvasId:o="",playerCount:l=1,viewPlayerIndex:u=1,language:s=""}={}){let f=n||i,h=r||i,p=Yn(e,f,o),g=t?Yn(t,h,o):null,m=pt(l),y=je(u,m),I=Ba({playerCount:m,viewPlayerIndex:y});a&&I.loadConfig({...a,playerCount:m,viewPlayerIndex:y});let A=[];for(let z=0;z<m;z+=1)A.push(Ss(p,g,i,s));I.attachRuntimes(A);for(let z of A)z.addRoot(p.root);let x={audioSessionId:to(),runtimes:A,views:A.map(()=>vs()),playerCount:m,viewPlayerIndex:y,server:I,compiled:p,mountError:A.find(z=>z.mountErrors[0])?.mountErrors[0]||null,debugPaused:!1,history:{events:[]},recording:!0};Is(x);let G=x.viewPlayerIndex;for(let z=1;z<=m;z+=1)x.viewPlayerIndex=z,Ns(x);return x.viewPlayerIndex=G,x}function qn(e,t){if(!e)throw new Error("play session has not started");let i=je(t,e.playerCount);return i===e.viewPlayerIndex||(nt(e,{kind:"view",payload:{playerIndex:i}}),e.viewPlayerIndex=i,e.viewCache=null,e.server&&e.server.setViewPlayerIndex(i)),i}function nt(e,t){!e?.recording||!e.history||Ha(e.history,{...t,source:t.source||"user"},e.runtime.clock.time)}function xs(e){return e?.history?.events||[]}var Ln=new Set(["image","textbox","textwindow","button","grid"]);function Cs(e,t){let i=Te(t,e.centerX,e.centerY);return{centerX:i.x,centerY:i.y,scaleX:Math.hypot(t.a,t.b),scaleY:Math.hypot(t.c,t.d),rotationZ:Math.atan2(t.b,t.a)*180/Math.PI,matrix:{a:t.a,b:t.b,c:t.c,d:t.d,tx:i.x,ty:i.y}}}function Ne(e){return typeof e=="string"?e:e?.Name}function oo(e){return{fillType:Ne(e.fillType),fillHorizontalType:Ne(e.fillHorizontalType),fillVerticalType:Ne(e.fillVerticalType),fillAmount:e.fillAmount}}function ks(e,t,i){let n=Math.abs(t.width*i.scaleX),r=Math.abs(t.height*i.scaleY),a={id:e.Id,kind:e.kind,name:e.name,left:i.centerX-n/2,bottom:i.centerY-r/2,width:n,height:r,sourceWidth:t.width,sourceHeight:t.height,rotationZ:i.rotationZ,matrix:i.matrix,pressed:e.pressed===!0,...io(e)};return e.kind==="image"&&(a.imageSource=qe(e.imageSource),a.imageType=e.imageType==null?null:Ne(e.imageType),a.primitive=Et(e.imageId,a.imageSource),a.imageColor=e.imageColor,a.imageId=e.imageId,Object.assign(a,oo(e))),(e.kind==="textbox"||e.kind==="textwindow")&&(a.text=e.text??"",a.fontSize=e.fontSize,a.fontColor=e.fontColor,a.bgColor=e.bgColor,a.enableOutline=e.enableOutline===!0,a.outlineColor=e.outlineColor,a.horizontalAlignment=Ne(e.horizontalAlignment),a.verticalAlignment=Ne(e.verticalAlignment)),a}function Es(e,t=Li(e)){let i=[],n=no(e,t);function r(a,o=[],l=[]){let u=t.get(a.Id);if(!u||a.visible===!1||!u.activeInHierarchy)return;let s=n.get(a.Id);if(!s)return;let f=Cs(u,s),h=a.kind==="image"&&a.enableMask===!0?Wa({...lo(a,u),id:a.Id},Ja(s,u.centerX,u.centerY)):null,p=h?[...l,h]:l,g=()=>i.push({...ks(a,u,f),...o.length?{clipPolygons:o}:{},...p.length?{masks:p}:{}});Ln.has(a.kind)&&a.kind!=="grid"&&g();let m=a.children||[];for(let y=m.length-1;y>=0;y-=1){let I=a._gridItems?.includes(m[y])?[...o,[[u.left,u.bottom],[u.right,u.bottom],[u.right,u.top],[u.left,u.top]].map(([A,x])=>Te(s,A,x))]:o;r(m[y],I,p)}a.kind==="grid"&&g()}for(let a of e.runtime.roots)r(a);return i}function lo(e,t){let i={kind:e.kind,name:e.name,sourceWidth:t.width,sourceHeight:t.height,pressed:e.pressed===!0,...io(e)};return e.kind==="image"&&(i.imageSource=qe(e.imageSource),i.imageType=e.imageType==null?null:Ne(e.imageType),i.primitive=Et(e.imageId,i.imageSource),i.imageColor=e.imageColor,i.imageId=e.imageId,Object.assign(i,oo(e),{enableMask:e.enableMask===!0,enableSoftEdge:e.enableSoftEdge===!0,softEdgeMode:Ne(e.softEdgeMode)||"Percentage",softEdgeWidthX:e.softEdgeWidthX,softEdgeWidthY:e.softEdgeWidthY})),(e.kind==="textbox"||e.kind==="textwindow")&&(i.text=e.text??"",i.fontSize=e.fontSize,i.fontColor=e.fontColor,i.bgColor=e.bgColor,i.enableOutline=e.enableOutline===!0,i.outlineColor=e.outlineColor,i.horizontalAlignment=Ne(e.horizontalAlignment),i.verticalAlignment=Ne(e.verticalAlignment)),i}function As(e,t,i){let n=nn(e,t),r=Te(n,e.centerX,e.centerY);return{a:n.a,b:n.b,c:n.c,d:n.d,tx:r.x-(i?i.centerX:0),ty:r.y-(i?i.centerY:0)}}function so(e){let t=e.matrix;return[e.parent,e.z,e.group?1:0,t.a,t.b,t.c,t.d,t.tx,t.ty,e.kind,e.name,e.sourceWidth,e.sourceHeight,e.pressed,e.primitive,e.imageColor,e.imageId,e.imageSource,e.imageType,e.fillType,e.fillHorizontalType,e.fillVerticalType,e.fillAmount,e.enableMask,e.enableSoftEdge,e.softEdgeMode,e.softEdgeWidthX,e.softEdgeWidthY,e.text,e.fontSize,e.fontColor,e.bgColor,e.enableOutline,e.outlineColor,e.horizontalAlignment,e.verticalAlignment,JSON.stringify(e.scroll),e.clipToParent].join(" ")}function uo(e,t,i,n,r,a){return{id:e.Id,parent:t,z:r,group:a>=16,matrix:As(n,e,i),...lo(e,n)}}function _s(e){let t=ve({width:e.runtime.canvasWidth,height:e.runtime.canvasHeight}),i=new Set,n=new Map,r=new Map;function a(u,s,f){let h=Ye(s,u);if(h.activeInHierarchy=f&&u.active!==!1,r.set(u.Id,h),u.visible===!1||!h.activeInHierarchy)return!1;let p=u.children||[],g=Ln.has(u.kind),m=0;for(let y=0;y<p.length;y+=1)a(p[y],h,h.activeInHierarchy)&&(g=!0,m+=1);return g?(i.add(u.Id),n.set(u.Id,m),!0):!1}function o(u,s,f,h){if(!i.has(u.Id))return;let p=r.get(u.Id);l.push(uo(u,s,f,p,h,n.get(u.Id)||0));let g=u.children||[];for(let m=0;m<g.length;m+=1)o(g[m],u.Id,p,m)}let l=[];for(let u=0;u<e.runtime.roots.length;u+=1)a(e.runtime.roots[u],t,!0),o(e.runtime.roots[u],null,null,u);return{nodes:l,childCounts:n}}function Hn(e){let t=e._playChildDirty===!0||e._playDeepDirty===!0;if(e._playDirty=!1,e._playChildDirty=!1,e._playDeepDirty=!1,!t)return;let i=e.children;for(let n=0;n<i.length;n+=1)Hn(i[n])}function Ts(e,t){let i=ve({width:e.runtime.canvasWidth,height:e.runtime.canvasHeight}),n=[],r=[],a=t.count,o=e.runtime._playRemoved||[];for(let s=0;s<o.length;s+=1){let f=o[s];t.fingerprints.has(f)&&(r.push(f),t.fingerprints.delete(f),t.childCounts.delete(f),a-=1)}e.runtime._playRemoved=[];function l(s){t.fingerprints.has(s.Id)&&(r.push(s.Id),t.fingerprints.delete(s.Id),t.childCounts.delete(s.Id),a-=1);let f=s.children;for(let h=0;h<f.length;h+=1)l(f[h])}function u(s,f,h,p,g,m){let y=m||s._playDeepDirty===!0,I=y||s._playDirty===!0,A=y||s._playChildDirty===!0;if(!I&&!A)return;if(!(g&&s.active!==!1)||s.visible===!1){l(s);return}let G=Ye(f,s),z=t.childCounts.get(s.Id)||0;if(A){z=0;let E=s.children;for(let w=0;w<E.length;w+=1)u(E[w],G,s.Id,w,!0,y),t.fingerprints.has(E[w].Id)&&(z+=1)}if(!(Ln.has(s.kind)||z>0)){t.fingerprints.has(s.Id)&&(r.push(s.Id),t.fingerprints.delete(s.Id),t.childCounts.delete(s.Id),a-=1);return}let J=t.childCounts.get(s.Id);t.childCounts.set(s.Id,z);let H=z>=16!=(J||0)>=16;if(!I&&!H&&t.fingerprints.has(s.Id))return;let $=uo(s,h,f===i?null:f,G,p,z),v=so($);t.fingerprints.get($.id)!==v&&(t.fingerprints.has($.id)||(a+=1),t.fingerprints.set($.id,v),n.push($))}for(let s=0;s<e.runtime.roots.length;s+=1)u(e.runtime.roots[s],i,null,s,!0,!1);return t.count=a,{changed:n,removed:r,count:a}}function Ps(e,t){let i=e.viewCache||(e.viewCache={rev:0,fingerprints:new Map,childCounts:new Map,count:0}),n=Number(t);if(!(Number.isFinite(n)&&n===i.rev&&i.fingerprints.size>0)){let{nodes:u,childCounts:s}=_s(e);i.rev+=1,i.fingerprints=new Map(u.map(f=>[f.id,so(f)])),i.childCounts=s,i.count=u.length;for(let f of e.runtime.roots)Hn(f);return{format:"tree-v1",revision:i.rev,reset:!0,count:u.length,nodes:u}}let{changed:a,removed:o,count:l}=Ts(e,i);i.rev+=1;for(let u of e.runtime.roots)Hn(u);return{format:"tree-v1",revision:i.rev,reset:!1,count:l,changed:a,removed:o}}function Wn(e,{inspect:t=!1,view:i=!1,paint:n=!1,sceneRev:r,compact:a=!1}={}){qi(e),e.audioSessionId||=to();let o=e.runtime,l=e.compiled,[u,s]=[o.canvasWidth,o.canvasHeight];e.server&&e.server.setClock(o.clock.time);let f=a?o.logs.slice(-100):o.logs,h=xs(e),p=e.server?e.server.snapshot():{vars:{},inbound:[],outbound:[],logs:[]};a&&(p.inbound=p.inbound.slice(-100),p.outbound=p.outbound.slice(-100),p.logs=p.logs.slice(-100));let g={canvasId:l.canvasId,platform:l.platform,device:o.device,canvasWidth:u,canvasHeight:s,canvasPresets:bs,playerCount:e.playerCount||1,viewPlayerIndex:e.viewPlayerIndex||1,players:Array.from({length:e.playerCount||1},(m,y)=>({index:y+1,label:`\u73A9\u5BB6${y+1}`,entityType:`Player${y+1}`})),time:o.clock.time,frame:o.clock.frame,paused:!!e.debugPaused,levelTimePaused:!!o.clock.paused,audio:{sessionId:e.audioSessionId,playerIndex:e.viewPlayerIndex||1,...o.audioSnapshot()},mountError:e.mountError||o.mountErrors[0]||null,logs:f.map(m=>({source:"client",level:m.level,text:m.text,time:m.time})),tree:[],paint:[],scene:null,server:p,history:(a?h.slice(-100):h).map(m=>({t:m.t,source:m.source||"user",kind:m.kind,payload:m.payload||{}}))};if(t||n){let m=Li(e);t&&(g.tree=o.roots.map(y=>ro(y,m))),n&&(g.paint=Es(e,m))}return i&&(g.scene=Ps(e,r)),At(g),g}function Wi(e,t=1/30){let i=e.runtimes||(e.runtime?[e.runtime]:[]);for(let n of i)n.step(t);e.server&&(e.server.setClock(e.runtime.clock.time),e.server.flush())}function Jn(e,t){nt(e,{kind:"key",payload:{typeName:String(t)}}),e.runtime.injectKey(t)}function Rs(e,t){let i=null;for(let n of e.runtime.roots)$e(n,r=>{!i&&r.name===t&&(i=r)});return i}function Zn(e,t){nt(e,{kind:"click",payload:{name:String(t)}});let i=Rs(e,t);i&&Qn(i)&&(i.kind==="button"||i.kind==="cursor")&&i.SimulateCursorClick()}function Ms(e,t){return!e||!t?null:e.children.find(i=>i.authoringId===t||i.Id===t)||null}var co={unavailable:"unavailableChildId",hover:"hoverChildId",pressed:"pressedChildId",selected:"selectedChildId"};function fo(e,t){let i=[];for(let[n,r]of Object.entries(co)){let a=t[r]?Ms(t,t[r]):null;a&&i.push({state:n,child:a})}return i}function Ns(e){for(let t of e.runtime.roots)$e(t,i=>{if(i.kind==="button"){for(let{child:n}of fo(e,i))e.stateRestores.has(n.Id)||e.stateRestores.set(n.Id,{child:n,active:n.active,visible:n.visible}),n.active=!0,n.visible=!1,typeof n.markPlayDirty=="function"&&n.markPlayDirty(!0);mi(e,i)}})}function mi(e,t){if(!t||t.kind!=="button")return;let i=null;t.interactable===!1?i="unavailable":t.pressed===!0?i="pressed":e.hoveredControl===t?i="hover":e.selectedControl===t&&(i="selected");for(let n of fo(e,t))n.child.active=!0,n.child.visible=n.state===i,typeof n.child.markPlayDirty=="function"&&n.child.markPlayDirty(!0)}function jn(e){if(!e)return null;let t=e.parent;return t?.kind==="button"&&Object.values(co).map(n=>t[n]).filter(Boolean).includes(e.authoringId)?t:e}function Qn(e){return e.kind==="button"?e.raycastTarget!==!1&&e.interactable!==!1:e.kind==="cursor"||e.kind==="grid"?e.raycastTarget!==!1:e.kind==="textwindow"?e.interactable!==!1:e.raycastTarget===!0}function ho(e){return e.kind==="container"||e.kind==="grid"||e.kind==="textwindow"||e.kind==="reference"||e.kind==="button"}function mo(e,t){let i=e.Id,n=t.get(i);if(n!==void 0)return n;let r=Qn(e);if(!r&&ho(e)){let a=e.children;for(let o=0;o<a.length;o+=1)if(mo(a[o],t)){r=!0;break}}return t.set(i,r),r}function Hi(e,t,i){qi(e);let n=ve({width:e.runtime.canvasWidth,height:e.runtime.canvasHeight}),r=new Map;function a(l,u,s,f){if(!f||l.active===!1||l.visible===!1||!mo(l,r))return null;let h=Ye(u,l),p=Zt(s,h,l),g=Tt(p);if(!g)return null;let m=Te(g,t,i);if(m.x<h.left||m.x>h.right||m.y<h.bottom||m.y>h.top)return null;if(Ki(l)){let y=Ui(l._scroll,h.width,h.height)?.track,I=m.x-h.centerX,A=h.centerY-m.y;if(y&&I>=y.x&&I<=y.x+y.width&&A>=y.y&&A<=y.y+y.height)return l}if(ho(l))for(let y=0;y<l.children.length;y+=1){let I=a(l.children[y],h,p,!0);if(I)return I}return Qn(l)?l:null}let o=_t();for(let l=e.runtime.roots.length-1;l>=0;l-=1){let u=a(e.runtime.roots[l],n,o,!0);if(u)return u}return null}function Dt(e,t,i,{dragging:n=!1,press:r=null,previous:a=null}={}){let o=r||{x:t,y:i},l=a||{x:t,y:i};return e.runtime.makeCursorEventData({x:t,y:i,pressX:o.x,pressY:o.y,deltaX:t-l.x,deltaY:i-l.y,dragging:n})}function Kn(e,t,i){t.kind==="grid"||t.kind==="textwindow"||(t.pressed=i,typeof t.markPlayDirty=="function"&&t.markPlayDirty(),mi(e,t))}function Ki(e){if(!e?.alive||!e.activeInHierarchy||e.interactable===!1||e.raycastTarget===!1)return!1;for(let t=e;t;t=t.parent)if(t.visible===!1)return!1;return e._scroll?.max>0}function Za(e){for(let t=e;t;t=t.parent)if(Ki(t))return t;return null}function Qa(e,t,i,n){let r=Li(e),a=r.get(t.Id),o=no(e,r).get(t.Id),l=o&&Tt(o);if(!a||!l)return null;let u=Te(l,i,n);return{x:u.x-a.centerX,y:a.centerY-u.y,width:a.width,height:a.height}}function eo(e,t,i){let n=e.pointerDownControl;if(n?.alive){let r=Dt(e,t,i,{dragging:e.pointerDragging,press:e.pointerDownPosition,previous:e.pointerLastPosition});e.runtime.injectCursor(n,"CursorUp",r),e.pointerDragging&&!e.pointerScroll&&e.runtime.injectCursor(n,"CursorEndDrag",r),Kn(e,n,!1)}e.pointerDownControl=null,e.pointerScroll=null,e.pointerDownPosition=null,e.pointerDragging=!1,e.pointerLastPosition={x:t,y:i}}function pi(e,t,i,n,r={}){let a=Number(i),o=Number(n);if(!Number.isFinite(a)||!Number.isFinite(o))throw new Error("pointer coordinates must be finite");e.runtime.cursor.x=a,e.runtime.cursor.y=o;let l=Number(r.deltaX??0),u=Number(r.deltaY??0);if(t==="wheel"&&(!Number.isFinite(l)||!Number.isFinite(u)))throw new Error("wheel deltas must be finite");if(r.silent||nt(e,{kind:"pointer",payload:{type:t,x:a,y:o,...t==="wheel"?{deltaX:l,deltaY:u}:{}}}),t==="wheel"){let s=Hi(e,a,o),f=Za(s);if(f){let h=f._scroll.horizontal&&l||u;Un(f,f._scroll.offset+h)}return s}if(t==="cancel")return eo(e,a,o),null;if((t==="move"||t==="up")&&e.pointerScroll&&!Ki(e.pointerScroll.control)&&eo(e,a,o),t==="move"){let s=e.pointerLastPosition||{x:a,y:o},f=e.pointerHoverControl,h=jn(Hi(e,a,o)),p=Dt(e,a,o,{previous:s});f&&f!==h&&e.runtime.injectCursor(f,"CursorExit",p),h&&f!==h&&e.runtime.injectCursor(h,"CursorEnter",p),e.pointerHoverControl=h;let g=e.hoveredControl;e.hoveredControl=h?.kind==="button"?h:null,g&&g!==e.hoveredControl&&mi(e,g),e.hoveredControl&&mi(e,e.hoveredControl);let m=e.pointerDownControl,y=e.pointerScroll;if(y)if(!Ki(y.control))e.pointerScroll=null;else{let I=Qa(e,y.control,a,o);if(I){let A=y.control._scroll,x=A.horizontal?I.x-y.start.x:I.y-y.start.y,G=Ui(A,I.width,I.height)?.travel||0,z=y.bar?G?x*A.max/G:0:-x;Un(y.control,y.offset+z)}}if(m?.alive){let I=e.pointerDownPosition||s,A=a!==s.x||o!==s.y;!e.pointerDragging&&A&&(y||e.runtime.injectCursor(m,"CursorBeginDrag",Dt(e,a,o,{press:I,previous:s,dragging:!1})),e.pointerDragging=!0),e.pointerDragging&&!y&&e.runtime.injectCursor(m,"CursorDrag",Dt(e,a,o,{press:I,previous:s,dragging:!0}))}return e.pointerLastPosition={x:a,y:o},h}if(t==="down"){let s=jn(Hi(e,a,o));e.pointerDownControl=s,e.pointerDownPosition={x:a,y:o},e.pointerLastPosition={x:a,y:o},e.pointerDragging=!1,e.pointerScroll=null;let f=Za(s);if(f){let h=Qa(e,f,a,o),p=h&&Ui(f._scroll,h.width,h.height),g=y=>h.x>=y.x&&h.x<=y.x+y.width&&h.y>=y.y&&h.y<=y.y+y.height,m=p&&g(p.track);if(m&&!g(p.thumb)){let y=f._scroll.horizontal?h.x-p.track.x-p.thumb.width/2:h.y-p.track.y-p.thumb.height/2;Un(f,p.travel?y/p.travel*f._scroll.max:0),qi(e)}h&&(e.pointerScroll={control:f,start:h,offset:f._scroll.offset,bar:!!m})}return s&&(Kn(e,s,!0),e.runtime.injectCursor(s,"CursorDown",Dt(e,a,o))),s}if(t==="up"){let s=e.pointerDownControl,f=jn(Hi(e,a,o));if(s?.alive){let h=Dt(e,a,o,{press:e.pointerDownPosition,previous:e.pointerLastPosition,dragging:e.pointerDragging});if(e.runtime.injectCursor(s,"CursorUp",h),e.pointerDragging)e.pointerScroll||e.runtime.injectCursor(s,"CursorEndDrag",h);else if(f===s&&!e.pointerScroll?.bar){e.runtime.injectCursor(s,"CursorClick",h);let p=e.selectedControl;e.selectedControl=s.kind==="button"?s:null,p&&p!==e.selectedControl&&mi(e,p)}Kn(e,s,!1)}return e.pointerDownControl=null,e.pointerDownPosition=null,e.pointerLastPosition={x:a,y:o},e.pointerDragging=!1,e.pointerScroll=null,f}if(t==="click")return pi(e,"down",a,o,{silent:!0}),pi(e,"up",a,o,{silent:!0});throw new Error(`unknown pointer type ${t}`)}function er(e,t,i,n){if(!e?.server)throw new Error("play session has no server");return nt(e,{kind:"serverSet",payload:{entityType:t,name:i,value:n,playerIndex:e.viewPlayerIndex}}),e.server.setVar(t,i,n,{playerIndex:e.viewPlayerIndex})}function po(e,t,i){if(!e?.server)throw new Error("play session has no server");let n=e.server.getVar(t,i,{playerIndex:e.viewPlayerIndex});return n===void 0?null:n}function tr(e,t,i=[],n="PlayerSelf"){if(!e?.server)throw new Error("play session has no server");return nt(e,{kind:"serverSend",payload:{name:t,params:i,target:n,playerIndex:e.viewPlayerIndex}}),e.server.sendToClient(t,i,{target:n,playerIndex:e.viewPlayerIndex})}function Ji(e){return{snapshot:t=>Wn(e,t),step:t=>Wi(e,t),pointer:(t,i,n,r)=>pi(e,t,i,n,r),key:t=>Jn(e,t),click:t=>Zn(e,t),view:t=>qn(e,t),pause:()=>{nt(e,{kind:"pause",payload:{}}),e.debugPaused=!0},resume:()=>{nt(e,{kind:"resume",payload:{}}),e.debugPaused=!1},serverSet:(t,i,n)=>er(e,t,i,n),serverSend:(t,i,n)=>tr(e,t,i,n)}}function ir(e){e?.server&&e.server.destroy();let t=e?.runtimes||(e?.runtime?[e.runtime]:[]);for(let i of t)i.destroy()}function nr(e,t){return JSON.stringify(e)===JSON.stringify(t)}function go(e,t){for(let i of e||[])t(i),i.children?.length&&go(i.children,t)}function rr(e,{id:t,name:i}){let n=null;return go(e,r=>{n||(t&&String(r.id)===String(t)||!t&&i&&r.name===i)&&(n=r)}),n}function Fs(e,t){if(e){if(Object.prototype.hasOwnProperty.call(e,t))return e[t];if(e.box&&Object.prototype.hasOwnProperty.call(e.box,t))return e.box[t]}}function Os(e){return{var(t,i){return e.server?.vars?.[t]?.[i]?.value??null},logs(){return(e.logs||[]).map(t=>t.text)},logContains(t){return(e.logs||[]).some(i=>String(i.text||"").includes(String(t)))},serverLogs(){return(e.server?.logs||e.serverLogs||[]).map(t=>t.text)},serverLogContains(t){return(e.server?.logs||e.serverLogs||[]).some(i=>String(i.text||"").includes(String(t)))},control(t){let i=rr(e.tree,{name:String(t)});return i?{id:i.id,name:i.name,kind:i.kind,active:i.active,visible:i.visible,pressed:i.pressed,text:i.text,interactable:i.interactable}:null},signals(t){let i=t==="outbound"?"outbound":"inbound";return(e.server?.[i]||[]).map(n=>({name:n.name,values:n.values}))}}}function zs(e,t){if(e.kind==="log"){let i=e.source==="server"?t.server?.logs||t.serverLogs||[]:t.logs||[];return i.some(r=>e.level&&r.level!==e.level?!1:String(r.text||"").includes(e.contains))?{ok:!0,actual:e.contains}:{ok:!1,actual:i.map(r=>r.text).slice(-8),expected:e.contains}}if(e.kind==="control"){let i=rr(t.tree,e);if(!i)return{ok:!1,actual:null,expected:e.equals,message:`control not found: ${e.id||e.name}`};let n=Fs(i,e.field);return nr(n,e.equals)?{ok:!0,actual:n}:{ok:!1,actual:n,expected:e.equals}}if(e.kind==="var"){let i=t.server?.vars?.[e.entityType],r=!i||!Object.prototype.hasOwnProperty.call(i,e.name)?null:i[e.name].value;return nr(r,e.equals)?{ok:!0,actual:r}:{ok:!1,actual:r,expected:e.equals}}if(e.kind==="signal"){let i=e.direction==="outbound"?t.server?.outbound||[]:t.server?.inbound||[],n=i.find(r=>r.name===e.name&&(e.values===void 0||nr(r.values,e.values)));return n?{ok:!0,actual:n.values}:{ok:!1,actual:i.map(r=>({name:r.name,values:r.values})),expected:{name:e.name,values:e.values??null}}}if(e.kind==="tree"){let i=!!rr(t.tree,{name:e.name});return i===e.exists?{ok:!0,actual:i}:{ok:!1,actual:i,expected:e.exists}}return{ok:!1,message:`unsupported assert kind ${e.kind}`}}function $s(e,t){let i=si();try{return i.evalQueryScript(e,Os(t)),{ok:!0,actual:!0}}catch(n){return{ok:!1,message:n?.message||String(n)}}finally{i.destroy()}}function yo(e,t){return e.kind==="lua"?$s(e.source,t):zs(e,t)}function Gs(e,t){let i=t>0?t:bt;return Math.round((e+i)*1e9)/1e9}function Ds(e,t){let i=t.payload||{};if(t.kind==="pointer")e.pointer(i.type,i.x,i.y,i);else if(t.kind==="key")e.key(i.typeName);else if(t.kind==="click")e.click(i.name);else if(t.kind==="pause")e.pause();else if(t.kind==="resume")e.resume();else if(t.kind==="serverSet")e.serverSet(i.entityType,i.name,i.value);else if(t.kind==="serverSend")e.serverSend(i.name,i.params,i.target);else if(t.kind==="view")e.view(i.playerIndex);else throw new Error(`unsupported event kind: ${t.kind}`)}function Vs(e,t){let i=yo(e,t);return{kind:e.kind,at:Number(e.at||0),ok:!!i.ok,actual:i.actual??null,expected:i.expected??null,message:i.message||""}}function bo(e,t){let i=hi(t),n=i.events.slice().sort((A,x)=>A.t-x.t),r=i.asserts.slice(),a=i.dt||bt,o=n.reduce((A,x)=>Math.max(A,x.t),0),l=r.reduce((A,x)=>Math.max(A,Number(x.at||0)),0),u=Math.max(o,l),s=0,f=[],h=0,p=r.some(A=>A.kind==="control"||A.kind==="tree"||A.kind==="lua"),g=e.snapshot({inspect:p}),m=()=>{for(;s<n.length&&n[s].t<=h+1e-9;)Ds(e,n[s]),s+=1,g=e.snapshot({inspect:p})},y=()=>{for(let A of r)if(!A._done&&Number(A.at||0)<=h+1e-9){let x=Vs(A,g);if(f.push(x),A._done=!0,!x.ok)return{passed:!1,failedAt:h,frame:g.frame||0,results:f,snapshot:g}}return null};m();let I=y();if(I)return ar(i,I);for(;h+1e-9<u;){e.step(a),h=Gs(h,a),g=e.snapshot({inspect:p}),m();let A=y();if(A)return ar(i,A)}return ar(i,{passed:f.every(A=>A.ok),failedAt:null,frame:g.frame||0,results:f,snapshot:g})}function ar(e,t){return V({format:e.format,name:e.name,passed:t.passed,failedAt:t.failedAt,frame:t.frame,results:t.results,snapshot:{time:t.snapshot?.time??0,frame:t.snapshot?.frame??0,logs:t.snapshot?.logs||[],serverLogs:t.snapshot?.serverLogs||t.snapshot?.server?.logs||[],server:t.snapshot?.server||{vars:{},inbound:[],outbound:[],logs:[]}}})}function or(e){return Array.isArray(e)?e.slice():[]}import{createHash as Ys}from"node:crypto";var vo=e=>Ys("sha256").update(JSON.stringify(e.map(({id:t,path:i,source:n})=>({id:t,path:i,source:n})))).digest("hex");var Hs={Level:"\u5173\u5361",PlayerSelf:"\u5F53\u524D\u73A9\u5BB6",AvatarSelf:"\u5F53\u524D\u89D2\u8272",...Object.fromEntries(gt.map((e,t)=>[e,`\u73A9\u5BB6${t+1}`])),...Object.fromEntries(Array.from({length:8},(e,t)=>[`Avatar${t+1}`,`\u89D2\u8272${t+1}`]))};function Ks(e,t=1){let i=e?.vars||{},n=[],r=Number(t)>0?Number(t):1,a=["Level","PlayerSelf","AvatarSelf"];if(r>1)for(let l=1;l<=r;l+=1)a.push(`Player${l}`,`Avatar${l}`);let o=new Set;for(let l of a){if(o.has(l)||!i[l])continue;o.add(l);let u=i[l]||{};for(let s of Object.keys(u))n.push(V({entityType:l,entityLabel:Hs[l]||l,name:s,type:u[s]?.type||"",value:u[s]?.value??null}))}return n}var St="qxqy-simulator-save",qs="qxqy-simulator-scripts",re="server-control-template",X="client-control-template",lr={[re]:"\u670D\u52A1\u5668\u63A7\u4EF6\u6A21\u677F",[X]:"\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F"};function vt(e){return e===X?"client":"server"}function Xt(e){if(!(typeof e=="number"||typeof e=="string"&&/^\d+$/.test(e.trim()))||!Pe(e))throw new Error("\u63A7\u4EF6\u7D22\u5F15\u5FC5\u987B\u662F 1\u20132147483647 \u8303\u56F4\u5185\u7684\u6574\u6570");return Number(e)}function sr(e=[]){if(!Array.isArray(e))throw new Error("controlGuidChanges \u5FC5\u987B\u662F\u6570\u7EC4");let t=new Set;return e.map(i=>{if(!i||typeof i.id!="string"||!i.id||t.has(i.id)||![re,X].includes(i.controlAsset)||typeof i.controlId!="string"||!i.controlId||typeof i.controlName!="string")throw new Error("controlGuidChanges \u5305\u542B\u65E0\u6548\u6216\u91CD\u590D\u7684\u53D8\u66F4\u8BB0\u5F55");if(t.add(i.id),i.batchId!==void 0&&(typeof i.batchId!="string"||!i.batchId))throw new Error("controlGuidChanges \u5305\u542B\u65E0\u6548\u7684 batchId");if(i.scriptSignature!==void 0&&!/^[a-f0-9]{64}$/.test(i.scriptSignature))throw new Error("controlGuidChanges \u5305\u542B\u65E0\u6548\u7684 scriptSignature");return{id:i.id,controlAsset:i.controlAsset,controlId:i.controlId,controlName:i.controlName,oldGuid:Xt(i.oldGuid),newGuid:Xt(i.newGuid),...i.batchId?{batchId:i.batchId}:{},...i.scriptSignature?{scriptSignature:i.scriptSignature}:{}}})}function Ls(e){let t=[e?.guid,e?.id];for(let i of t){let n=Number(i);if(Number.isSafeInteger(n)&&n>0&&n<=2147483647)return n}return 0}function Zi(e){let t=String(e?.controlAsset||""),i=Ls(e);return{id:String(i||e?.id||""),guid:i,path:String(e?.path||""),source:String(e?.source||""),controlId:String(e?.controlId||""),controlAsset:t===X||t==="client"?X:t===re||t==="server"?re:""}}function Ws(e){let t=[],i=(n,r="")=>{if(n&&(n.path||n.source)){let a=Zi(n);t.push(r?{...a,controlAsset:r}:a)}};if(Array.isArray(e?.assets?.scripts)){for(let n of e.assets.scripts)n&&(n.path||n.source)&&t.push(Zi(n));return t}if(i(e?.assets?.server?.script,re),i(e?.assets?.client?.script,X),e&&e.format!==St){i(e?.script);for(let n of e?.scripts||[])i(n)}return t}function ur(e){return tt(e===X?Rt():ft())}var Js="\u672A\u7ED1\u5B9A",Vt="\u672A\u547D\u540D\u5B58\u6863",Zs="\u672A\u547D\u540D\u754C\u9762";function Qs(e){let t=e;for(let i=0;i<8;i++){if(gi(wo(t,"simulator","studio"))&&gi(wo(t,"lua")))return t;let n=Us(t);if(n===t)break;t=n}return e}function eu(e){return e?{name:Yt(e),path:e,bound:!0}:{name:Js,path:"",bound:!1}}function tu(e,t=process.cwd()){if(js(e)&&gi(e))return e;let i=t||process.cwd(),n=Qs(i),r=Io(n,e);if(gi(r))return r;let a=Io(i,e);if(gi(a))return a;throw new Error("script file not found: "+e)}function cr(e,t={}){e?.format===St&&Cn(e.version);let i=[],n=typeof t.workspacePath=="string"&&t.workspacePath?t.workspacePath:"",r=e?.format===St&&e.assets,a=sr(e?.controlGuidChanges),o=en(e?.scriptSync),l=r?null:tt(e,{warnings:i}),u={server:r&&e.assets.server?tt(e.assets.server,{warnings:i}):ur(re),client:r&&e.assets.client?tt(e.assets.client,{warnings:i}):ur(X)};l&&(u[vt(l.meta.assetType)]=l);let s=r&&e.activeAssetType===X?X:l?.meta.assetType||re,f=r&&e.meta?.name?String(e.meta.name):"",h=()=>f||Vt;!e?.meta?.name&&u.server.meta.name==="\u672A\u547D\u540D\u754C\u9762\u63A7\u4EF6\u7EC4"&&(u.server.meta.name=Zs);let p=[],g=new Set;function m(){g.clear(),Pt(u.server.root,g),Pt(u.client.root,g,{skipServerContainer:!0});for(let d of p)Pe(d.guid)&&g.add(Number(d.guid))}function y(d=0){m();let b=Pe(d)&&!g.has(Number(d))?Number(d):We(g);return g.add(b),b}function I(d){let b=Zi(d),S=y(b.guid);return{...b,guid:S,id:String(S)}}Ke(Ws(e));let A=di(e?.serverLogic),x=null,G="",z=1,q=1;function J(d){let b=String(d||"").trim();if(!b)return"";if(!ie[b])throw new Error(`unknown canvas preset: ${b} (available: ${Object.keys(ie).join(", ")})`);return b}let H=()=>u[vt(s)];function $(d){if(!d)return null;for(let[b,S]of[["server",u.server],["client",u.client]]){let R=he(S.root,d);if(R&&R.kind!=="server-container")return{key:b,node:R}}return null}function v(d){if(!d.controlId)return null;let b=d.controlAsset===X?"client":d.controlAsset===re?"server":null;if(b){let S=he(u[b].root,d.controlId);return S&&S.kind!=="server-container"?{key:b,node:S}:null}return $(d.controlId)}function E(){for(let d of p)d.controlId&&!v(d)&&(d.controlId="",d.controlAsset="")}function w(d){if(!Pe(d))return null;for(let[b,S]of[[re,u.server],[X,u.client]]){let R="";if(Z(S.root,M=>{!R&&(M.scriptMappingIds||[]).includes(Number(d))&&(R=M.id)}),R)return{controlId:R,controlAsset:b}}return null}function C(d,b,S){let R=u[vt(d.controlAsset)],M=R&&he(R.root,d.controlId);M&&(M.scriptMappingIds=(M.scriptMappingIds||[]).map(N=>Number(N)===Number(b)?Number(S):N))}E();function O(){return p.map(d=>{let b=v(d),S=b?b.key==="client"?X:re:"";return V({id:d.id,guid:d.guid||0,path:d.path||"",source:d.source||"",controlId:d.controlId||"",controlAsset:d.controlAsset||S,controlName:b?.node.name||"",assetType:S,assetLabel:b?lr[S]:"",mounted:!!b})})}function k(){let d=[],b=(S,R)=>{Z(S.root,M=>{M.kind!=="server-container"&&d.push(V({id:M.id,name:M.name,kind:M.kind,assetType:R,assetLabel:lr[R]}))})};return b(u.server,re),b(u.client,X),d}function _(d){let b=[];return Z(d.root,S=>{S.kind!=="server-container"&&b.push(JSON.stringify({kind:S.kind,guid:S.guid,name:S.name,text:S.text??null,imageId:S.imageId??null,imageSource:S.imageSource??null,imageType:S.imageType??null,fontSize:S.fontSize??null,fontColor:S.fontColor??null,bgColor:S.bgColor??null,imageColor:S.imageColor??null,fillType:S.fillType??null,fillAmount:S.fillAmount??null,syncAllDevices:S.syncAllDevices!==!1,transformByPlatform:S.transformByPlatform||null}))}),b.join("/")}let D=_(Rt()),Y=_(ft());function ue(d){let b=_(d);return d.meta?.assetType===X?b===D:b===Y}function U(d,b){return String(d||"").replace(/[\\/:*?"<>|]/g,"-").trim()||b}function we(d){let b=U(h(),Vt),S=d.meta?.assetType===X?"\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F":"\u670D\u52A1\u5668\u63A7\u4EF6\u6A21\u677F";return`${b} \xB7 ${S}`}function Ae(){if(!((u.server.root.children||[]).find(b=>b.kind==="container")||u.server.root.children?.[0]))throw new Error("\u6574\u5408\u5305\u9700\u8981\u670D\u52A1\u7AEF\u5BA2\u6237\u7AEF\u63A7\u4EF6\u5BB9\u5668\u4E0B\u81F3\u5C11\u6709\u4E00\u4E2A\u6839\u63A7\u4EF6");return Jr(u.server,u.client,{scripts:p,fileName:`${U(h(),Vt)} \xB7 \u6574\u5408\u5305.gia`})}function wt(){let d=b=>({type:b.meta.assetType,name:b.meta.name,sourceFile:b.meta.sourceFile||""});return{format:St,name:h(),activeAssetType:s,assets:{server:d(u.server),client:d(u.client),scripts:O()}}}function Bt(){return V({format:St,version:4,meta:{name:h()},activeAssetType:s,serverLogic:A,controlGuidChanges:a,scriptSync:o,assets:{server:u.server,client:u.client,scripts:p.map(d=>V({id:d.id,guid:d.guid||0,path:d.path||"",source:d.source||"",controlId:d.controlId||"",controlAsset:d.controlAsset||""}))}})}function ee(){let d=H(),b=da(d);if(b.workspace=eu(n),b.save=wt(),b.scripts=O(),b.mountTargets=k(),b.serverLogic=A,b.migrationWarnings=[...i],b.controlGuidChanges=V(a),s===X){let S=Mt(d,!0);b.clientGuidAutofill={count:S.length,templateCount:S.filter(({parent:R})=>R?.kind==="server-container").length,selectedOffset:S.findIndex(({node:R})=>R.id===b.selectedId)}}return b.scriptSync=V(o),Ir(b),b}function Fe(d){let b=H();if(d.expectedRevision!==void 0&&Number(d.expectedRevision)!==b.version)throw new Error(`revision conflict: expected ${d.expectedRevision}, current ${b.version}`);return b}function at(d,b,S=""){let R=String(b||"");if(R){let M=S===X?X:S===re?re:"";if(!v({controlId:R,controlAsset:M}))throw new Error("\u6302\u8F7D\u76EE\u6807\u5FC5\u987B\u662F\u5B58\u6863\u5185\u7684\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6216\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F");d.controlAsset=M}else d.controlAsset="";d.controlId=R}function vi(d){let b=Fe(d);if(d.op==="addScript"){let S=I({path:String(d.path||""),source:String(d.source||""),controlId:"",controlAsset:""});d.controlId!==void 0&&d.controlId!==""&&at(S,d.controlId,d.controlAsset),p.push(S)}else if(d.op==="updateScript"){let S=p.find(R=>R.id===d.id);if(!S)throw new Error(`\u811A\u672C\u4E0D\u5B58\u5728: ${d.id}`);d.controlId!==void 0&&at(S,d.controlId,d.controlAsset),d.path!==void 0&&(S.path=String(d.path)),d.source!==void 0&&(S.source=String(d.source))}else if(d.op==="removeScript"){let S=p.length;if(p=p.filter(R=>R.id!==d.id),p.length===S)throw new Error(`\u811A\u672C\u4E0D\u5B58\u5728: ${d.id}`)}return b.version+=1,ee()}function Si(d){let b=Fe(d),S=he(b.root,d.id??b.selectedId);if(!S||S.kind==="server-container")throw new Error("\u4EC5\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6216\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F\u5141\u8BB8\u4FEE\u6539\u7D22\u5F15");let R=Xt(d.guid);if(Xt(S.guid),d.autoFillClientGuids!==void 0&&typeof d.autoFillClientGuids!="boolean")throw new Error("autoFillClientGuids \u5FC5\u987B\u662F\u5E03\u5C14\u503C");let M=d.autoFillClientGuids===!0;if(M&&s!==X)throw new Error("\u81EA\u52A8\u586B\u5145\u4EC5\u652F\u6301\u5BA2\u6237\u7AEF\u6A21\u677F\u5217\u8868\uFF1B\u670D\u52A1\u7AEF\u754C\u9762\u7684\u7D22\u5F15\u9700\u5355\u72EC\u586B\u5199");let N=M?Mt(b,!0).map(({node:F})=>F):[S],B=R-N.indexOf(S),L=N.map((F,ae)=>({node:F,oldGuid:Xt(F.guid),newGuid:Xt(B+ae)})),Ce=L.filter(({oldGuid:F,newGuid:ae})=>F!==ae);if(!Ce.length)return ee();let fe=new Map(L.map(({oldGuid:F,newGuid:ae})=>[F,ae]));if(fe.size!==L.length)throw new Error("\u5BA2\u6237\u7AEF\u6A21\u677F\u5B58\u5728\u91CD\u590D\u65E7\u7D22\u5F15\uFF0C\u65E0\u6CD5\u81EA\u52A8\u586B\u5145\uFF1B\u8BF7\u5148\u6D88\u9664\u6B67\u4E49");let ot=new Set(N),pe=[];for(let F of Object.values(u))Z(F.root,ae=>{F===u.client&&ae.kind==="server-container"||pe.push({node:ae,project:F})});let Ve=new Map([...pe.filter(F=>!ot.has(F.node)).map(({node:F})=>[Number(F.guid),F.name]),...p.map(F=>[Number(F.guid),F.path||"Lua \u811A\u672C"])]);for(let{newGuid:F}of Ce)if(Ve.has(F))throw new Error(`\u63A7\u4EF6\u7D22\u5F15 ${F} \u5DF2\u88AB\u300C${Ve.get(F)}\u300D\u5360\u7528\uFF1B\u8BF7\u5148\u586B\u5199\u5B83\u7684\u5B9E\u9645\u7D22\u5F15\u3002\u672C\u6B21\u672A\u4FEE\u6539\u4EFB\u4F55\u7D22\u5F15\u3002`);let te=[],le=(F,ae,xt)=>{let _e=F?.[ae];(typeof _e=="number"||typeof _e=="string"&&/^\d+$/.test(_e.trim()))&&fe.has(Number(_e))&&fe.get(Number(_e))!==Number(_e)&&te.push({owner:F,key:ae,project:xt.project,oldGuid:Number(_e),newGuid:fe.get(Number(_e))})};for(let F of pe)le(F.node,"referencedPrefabId",F),le(F.node,"itemPrefabId",F),le(F.node.giaRaw,"templateRefSlot",F);let It=new Map;for(let{node:F}of pe)It.set(Number(F.guid),(It.get(Number(F.guid))||0)+1);for(let{oldGuid:F}of te)if(It.get(F)!==1)throw new Error(`\u65E7\u7D22\u5F15 ${F} \u5728\u591A\u68F5\u8D44\u4EA7\u6811\u4E2D\u91CD\u590D\uFF0C\u65E0\u6CD5\u786E\u5B9A\u6A21\u677F\u5F15\u7528\u5F52\u5C5E\uFF1B\u8BF7\u5148\u6D88\u9664\u6B67\u4E49\u540E\u4FEE\u6539`);let ge=M?So():"",Qi=vo(p);for(let{node:F,oldGuid:ae,newGuid:xt}of Ce)F.guid=xt,a.push({id:So(),controlAsset:s,controlId:F.id,controlName:F.name,oldGuid:ae,newGuid:xt,scriptSignature:Qi,...ge?{batchId:ge}:{}});let Lt=new Set([b]);for(let{owner:F,key:ae,project:xt,newGuid:_e}of te)F[ae]=typeof F[ae]=="string"?String(_e):_e,Lt.add(xt);for(let F of Lt)F.version+=1;return ee()}function ne(d){let b=Fe(d);if(!Array.isArray(d.changeIds)||!d.changeIds.length||d.changeIds.some(R=>typeof R!="string"||!a.some(M=>M.id===R)))throw new Error("\u8BF7\u660E\u786E\u6307\u5B9A\u5DF2\u6838\u5BF9 Lua \u5F15\u7528\u7684\u6709\u6548\u7D22\u5F15\u53D8\u66F4\u8BB0\u5F55 changeIds");let S=new Set(d.changeIds);return a=a.filter(R=>!S.has(R.id)),b.version+=1,ee()}function Oe(d){if(!d||typeof d!="object")throw new Error("patch requires op");if(d.op==="setScriptSync"){let b=Fe(d);return o=en(d.config),b.version+=1,ee()}if(d.op==="setControlGuid")return Si(d);if(d.op==="acknowledgeControlGuidChanges")return ne(d);if(d.op==="setServerLogic"){let b=Fe(d);return A=di(d.logic),b.version+=1,ee()}if(d.op==="addScript"||d.op==="updateScript"||d.op==="removeScript")return vi(d);if(d.op==="selectAsset")return s=d.assetType===X?X:re,ee();if(d.op==="renameSave"){let b=String(d.name||"").trim();if(!b)throw new Error("\u5B58\u6863\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A");return f=b,ee()}if(d.op==="newAsset"){let b=Fe(d);s=d.assetType===X?X:re;let S=ur(s);return S.version=b.version+1,u[vt(s)]=S,a=a.filter(R=>R.controlAsset!==s),E(),ee()}return An(H(),d),E(),ee()}function De(d){return p.filter(b=>{let S=v(b);return!!(S&&S.key==="client"==(d===X))})}function Ut(d="json",b=""){let S=jt(d,b);if(a.length&&!["save","archive"].includes(String(d).toLowerCase())){let R=a.map(M=>`\u63A7\u4EF6\u7D22\u5F15\u5F85\u6838\u5BF9 Lua \u5F15\u7528\uFF1A${lr[M.controlAsset]} / ${M.controlName} (${M.controlId})\uFF1A${M.oldGuid} \u2192 ${M.newGuid}\u3002\u8BF7\u6309\u8BED\u4E49\u66F4\u65B0\u811A\u672C\u4E2D\u7684\u63A7\u4EF6\u7D22\u5F15\u5F15\u7528\uFF0C\u6838\u5BF9\u540E\u786E\u8BA4\u53D8\u66F4\u8BB0\u5F55 ${M.id}\uFF1B\u4E0D\u8981\u5168\u5C40\u66FF\u6362\u540C\u503C\u6570\u5B57\u3002`);S.warnings=[...new Set([...S.warnings||[],...R])]}return S}function jt(d="json",b=""){let S=String(d).toLowerCase();if(S==="save"||S==="archive"){let N=Buffer.from(JSON.stringify(Bt(),null,2),"utf8");return V({filename:`${h().replace(/[\\/:*?"<>|]/g,"-")} \xB7 \u8D44\u4EA7\u5305.json`,mimeType:"application/json",encoding:"base64",data:N.toString("base64"),warnings:[]})}if(S==="save-gia"||S==="archive-gia"){let N=[],B=[],L=(fe,ot="")=>{let pe=Ut(fe,ot);N.push(V({filename:pe.filename,mimeType:pe.mimeType,encoding:pe.encoding,data:pe.data,warnings:pe.warnings||[]})),B.push(...pe.warnings||[])},Ce=(fe,ot)=>{let pe=u[vt(fe)],Ve=fe===s,te=p.some(le=>le.controlAsset===fe&&le.controlId);if(!Ve&&ue(pe)&&!te){B.push(ot);return}L("gia",fe)};if(Ce(re,"\u670D\u52A1\u5668\u63A7\u4EF6\u6A21\u677F\u4ECD\u662F\u9ED8\u8BA4\u6A71\u7A97\uFF0C\u672A\u6539\u52A8\u4E14\u5F53\u524D\u672A\u663E\u793A\uFF0C\u5DF2\u4ECE\u8D44\u4EA7\u5305 GIA \u4E2D\u7701\u7565\u3002"),Ce(X,"\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F\u4ECD\u662F\u9ED8\u8BA4\u300CLua\u5B9E\u4F8B\u5316\u9762\u677F\u300D\uFF0C\u672A\u6539\u52A8\u4E14\u5F53\u524D\u672A\u663E\u793A\uFF0C\u5DF2\u4ECE\u8D44\u4EA7\u5305 GIA \u4E2D\u7701\u7565\u3002"),p.some(fe=>fe.path||fe.source)&&L("scripts-gia"),!N.length)throw new Error("\u8D44\u4EA7\u5305 GIA \u6CA1\u6709\u53EF\u5BFC\u51FA\u7684\u5DF2\u6539\u52A8\u9879\uFF1B\u8BF7\u5148\u7F16\u8F91\u5F53\u524D\u754C\u9762\uFF0C\u6216\u6539\u7528\u300C\u5F53\u524D\u754C\u9762 GIA\u300D\u3002");return V({format:"qxqy-gia-package",files:N,warnings:[...new Set(B)]})}if(S==="gia-combined"||S==="combined-gia"||S==="combined"){let N=Ae();return V({filename:`${U(h(),Vt)} \xB7 \u6574\u5408\u5305.gia`,mimeType:"application/octet-stream",encoding:"base64",data:N.buffer.toString("base64"),warnings:[...new Set(N.warnings||[])]})}if(S==="scripts"){let N=V({format:qs,version:1,scripts:p.map(L=>V({id:L.id,guid:L.guid||0,path:L.path||"",source:L.source||"",controlId:L.controlId||"",controlAsset:L.controlAsset||""}))}),B=Buffer.from(JSON.stringify(N,null,2),"utf8");return V({filename:`${U(h(),Vt)} \xB7 \u811A\u672C.json`,mimeType:"application/json",encoding:"base64",data:B.toString("base64"),warnings:[]})}if(S==="scripts-gia"||S==="scriptsgia"){let N=ea(p);return V({filename:`${U(h(),Vt)} \xB7 \u811A\u672C.gia`,mimeType:"application/octet-stream",encoding:"base64",data:N.buffer.toString("base64"),warnings:N.warnings})}if(S==="lua"){let N=p.find(L=>L.id===b)||p.find(L=>L.path===b);if(!N)throw new Error("\u6CA1\u6709\u53EF\u5BFC\u51FA\u7684 Lua \u811A\u672C\uFF0C\u8BF7\u5148\u5728\u201CLua \u811A\u672C\u201D\u9875\u521B\u5EFA");let B=Yt(N.path||"")||`qxqy-script-${N.id}`;return V({filename:/\.lua$/i.test(B)?B:`${B}.lua`,mimeType:"text/x-lua",encoding:"base64",data:Buffer.from(N.source||"","utf8").toString("base64"),warnings:[]})}let R=b?u[vt(b)]:H(),M=we(R);if(S==="json"){let N=V({...R,scripts:De(R.meta.assetType),controlGuidChanges:a.filter(L=>L.controlAsset===R.meta.assetType)}),B=Buffer.from(JSON.stringify(N,null,2),"utf8");return V({filename:`${M}.json`,mimeType:"application/json",encoding:"base64",data:B.toString("base64"),warnings:[]})}if(S==="gia"){let N=Wr(R,R.meta.assetType===X?{scripts:De(X)}:{}),B=R.meta.assetType===X?[]:De(re);return B.length&&N.warnings.unshift(`\u5F53\u524D\u670D\u52A1\u5668\u63A7\u4EF6 GIA \u4E0D\u5305\u542B ${B.length} \u4E2A Lua \u811A\u672C\u7684\u6E90\u7801\uFF1B\u8BF7\u4F7F\u7528\u300C\u8D44\u4EA7\u5305 GIA \u6574\u5408\u5305\u300D\uFF0C\u6216\u53E6\u884C\u5BFC\u5165\u811A\u672C\u5305\u5E76\u6838\u5BF9\u6302\u8F7D\u3002`),V({filename:`${M}.gia`,mimeType:"application/octet-stream",encoding:"base64",data:N.buffer.toString("base64"),warnings:N.warnings})}throw new Error(`unsupported export format: ${d}`)}function Ke(d){for(let b of d){let S=Zi(b);if(!S.path&&!S.source)continue;let R=S.controlId?null:w(S.guid),M=I(R?{...S,...R}:S);R&&M.guid!==S.guid&&C(R,S.guid,M.guid),M.controlId&&!v(M)&&(M.controlId="",M.controlAsset=""),p.push(M)}}function Ht(d,b,S=""){let R=String(d||"").toLowerCase();if(typeof b!="string"||!b)throw new Error("import data is required");let M=Buffer.from(b,"base64"),N,B=[],L={};if(R==="json"){try{N=JSON.parse(M.toString("utf8"))}catch{throw new Error("JSON \u6587\u4EF6\u65E0\u6548")}if(N?.project&&(N=N.project),N?.format===St&&N?.assets){Cn(N.version);let te=cr(N);B.push(...te.get().migrationWarnings);let le=te.archiveData();return u.server=le.assets.server,u.client=le.assets.client,i=[...B],s=N.activeAssetType===X?X:re,f=String(N.meta?.name||Yt(S).replace(/\.json$/i,"")||f),A=le.serverLogic,p=le.assets.scripts,a=le.controlGuidChanges,o=le.scriptSync,g.clear(),V({snapshot:ee(),warnings:B,metadata:{format:St}})}}else{if(R==="lua")return p.push(I({path:Yt(S||"imported.lua"),source:M.toString("utf8"),controlId:""})),V({snapshot:ee(),warnings:B,metadata:{assetType:"lua-script"}});if(R==="gia"){if(ta(M)){let ge=na(M);return Ke(ge.scripts),V({snapshot:ee(),warnings:ge.warnings,metadata:ge.metadata})}let te=ra(M);N=te.project,B=te.warnings,L=te.metadata,te.clientProject&&(u.client=tt(te.clientProject),a=a.filter(ge=>ge.controlAsset!==X),B.push("\u6574\u5408\u5305\u5DF2\u62C6\u56DE\u300CUI\u63A7\u4EF6-\u670D\u52A1\u7AEF\u300D\u4E0E\u300CUI\u63A7\u4EF6-\u5BA2\u6237\u7AEF\u300D\uFF1B\u5BA2\u6237\u7AEF\u6A21\u677F\u8FB9\u754C\u5DF2\u4FDD\u7559\u3002"));let le=new Map,It=(ge,Qi)=>{ge&&Z(ge.root,Lt=>{for(let F of Lt.scriptMappingIds||[]){let ae=le.get(Number(F));if(ae){B.push(`\u811A\u672C GUID ${F} \u540C\u65F6\u6302\u8F7D\u5230\u591A\u4E2A\u63A7\u4EF6\uFF0C\u5DF2\u4FDD\u7559\u201C${ae.controlAsset===re?"\u670D\u52A1\u7AEF":"\u5BA2\u6237\u7AEF"}\u201D\u76EE\u6807\u3002`);continue}le.set(Number(F),{controlId:Lt.id,controlAsset:Qi})}})};It(te.project,re),It(te.clientProject,X),Ke((te.scripts||[]).map(ge=>le.has(Number(ge.guid))?{...ge,...le.get(Number(ge.guid))}:ge))}else throw new Error(`unsupported import format: ${d}`)}let Ce=tt(N,{warnings:B}),fe=sr(N?.controlGuidChanges);if(fe.some(te=>te.controlAsset!==Ce.meta.assetType))throw new Error("\u5355\u8D44\u4EA7 JSON \u7684\u7D22\u5F15\u53D8\u66F4\u8BB0\u5F55\u5FC5\u987B\u5C5E\u4E8E\u5F53\u524D\u5BFC\u5165\u8D44\u4EA7");let ot=sr([...a.filter(te=>te.controlAsset!==Ce.meta.assetType),...fe]);i=[...B];let pe=vt(Ce.meta.assetType);u[pe]=Ce,a=ot,s=Ce.meta.assetType;let Ve=u[pe];return S&&(Ve.meta.name=Yt(S).replace(/\.(json|gia)$/i,"")||Ve.meta.name,Ve.meta.sourceFile=Yt(S),Ve.meta.sourceFormat=R),Ke(N?.scripts||[]),N?.script&&(N.script.path||N.script.source)&&Ke([N.script]),V({snapshot:ee(),warnings:B,metadata:L})}function xo(d,b){return An(H(),{op:"pick",x:d,y:b}),ee()}function Co(d){let b=typeof d=="string"&&d?d:"";!b||b===n||(n=b)}function ko(d){let b=d.source||"";if(!b.trim()&&d.path.trim())try{b=Bs(tu(d.path,n),"utf8")}catch(S){throw new Error(`\u811A\u672C ${d.path} \u8BFB\u53D6\u5931\u8D25: ${S?.message||S}`)}return b}function Kt(d={}){let b=J(d.canvasId);b&&(G=b),d.playerCount!==void 0&&d.playerCount!==null&&d.playerCount!==""&&(z=pt(d.playerCount),q>z&&(q=1)),d.viewPlayerIndex!==void 0&&d.viewPlayerIndex!==null&&d.viewPlayerIndex!==""&&(q=je(d.viewPlayerIndex,z)),x&&ir(x);let S=p.map(M=>{try{return{id:M.id,guid:M.guid||0,path:M.path||M.id,source:ko(M),controlId:M.controlId||"",controlAsset:M.controlAsset||""}}catch(N){return{id:M.id,guid:M.guid||0,path:M.path||M.id,source:`error([==[ ${String(N.message).replace(/]=+]/g,"] =]")} ])`,controlId:M.controlId||"",controlAsset:M.controlAsset||""}}}),R=M=>S.filter(N=>{let B={controlId:N.controlId,controlAsset:N.controlAsset},L=N.controlId?v(B):null;return!!(L&&L.key===M)});return x=ao(u.server,{templatesProject:u.client,scripts:S,sceneScripts:R("server"),templateScripts:R("client"),serverConfig:{logic:A},canvasId:G,playerCount:z,viewPlayerIndex:q,language:d.language||""}),ce(d)}function Eo(d,b={}){let S=J(d);if(!S)throw new Error("playSetCanvas requires canvasId");return Kt({...b,canvasId:S})}function ce(d={}){if(!x)return V({running:!1,tree:[],logs:[],serverLogs:[],serverVars:[]});let b=Wn(x,d);return b.running=!0,b.logs=or(b.logs),b.serverLogs=or(b.server?.logs||[]),b.serverVars=Ks(b.server,b.playerCount||1),b}function Ao(d,b={}){return x||Kt(),Wi(x,d),b.observe===!1?V({running:!0,time:x.runtime.clock.time,frame:x.runtime.clock.frame,paused:!!x.debugPaused,levelTimePaused:!!x.runtime.clock.paused,playerCount:x.playerCount||1,viewPlayerIndex:x.viewPlayerIndex||1}):ce(b)}function _o(d=0){Kt();let b=Math.max(0,Number(d)||0);for(let S=0;S<b;S++)Wi(x,1/30);return ce()}function To(){return x&&ir(x),x=null,G="",z=1,q=1,V({running:!1,tree:[],logs:[],serverLogs:[],serverVars:[]})}function Po(d,b={}){let S=qt();return q=qn(S,d),b.observe===!1?null:ce(b)}function Ro(d,b={}){if(!x)throw new Error("play session has not started");return Jn(x,d),b.observe===!1?null:ce(b)}function Mo(d,b={}){if(!x)throw new Error("play session has not started");return Zn(x,d),b.observe===!1?null:ce(b)}function No(d,b,S,R={}){if(!x)throw new Error("play session has not started");return pi(x,d,b,S,R),R.observe===!1?null:ce(R)}function Fo(d={}){return x&&Ji(x).pause(),d.observe===!1?null:ce(d)}function Oo(d={}){return x&&Ji(x).resume(),d.observe===!1?null:ce(d)}function qt(){if(!x)throw new Error("play session has not started");return x}function zo(d,b){let S=qt();if(!d&&!b){let R=ce();return V({vars:R.serverVars||[]})}return V({entityType:String(d||""),name:String(b||""),value:po(S,d,b)})}function $o(d,b,S){let R=qt();return er(R,d,b,S),ce()}function Go(d,b=[],S="PlayerSelf"){let R=qt();return tr(R,d,b,S),ce()}function Do(){let d=ce();return V({events:d.history||[],case:ja(d.history||[],{playerCount:d.playerCount||1})})}function Vo(d={}){let b=ce(),S=hi({name:d.name||"",dt:d.dt,playerCount:d.playerCount||b.playerCount||1,events:d.events||b.history||[],asserts:d.asserts||[]});return V(S)}function Yo(d,b={}){let S=hi(d);Kt({...b,playerCount:b.playerCount||S.playerCount||1});let R=qt();R.recording=!1;try{return bo(Ji(R),d)}finally{R.recording=!0}}function Xo(){if(!x)return{running:!1,paused:!1,time:0,frame:0,playerCount:1,viewPlayerIndex:1};let d=x.runtime.clock;return{running:!0,paused:!!x.debugPaused,levelTimePaused:!!d.paused,time:d.time,frame:d.frame,playerCount:x.playerCount||1,viewPlayerIndex:x.viewPlayerIndex||1}}let mr={get:ee,patch:Oe,setWorkspace:Co,exportData:Ut,importData:Ht,pick:xo,playStart:Kt,playSetCanvas:Eo,playSetView:Po,playGet:ce,playStatus:Xo,playStep:Ao,playRun:_o,playStop:To,playKey:Ro,playClick:Mo,playPointer:No,playPause:Fo,playResume:Oo,playServerGet:zo,playServerSet:$o,playServerSend:Go,playHistory:Do,playSaveCase:Vo,playRunCase:Yo,archiveData:Bt};return Object.defineProperty(mr,"_project",{enumerable:!1,get:H}),mr}var j=null,dr=!1,He=0,Ge=0,hr="realtime",iu=33,yi=1/30,nu=5;function bi(e={}){return{...e.inspect?{inspect:!0}:{},...e.view?{view:!0}:{},...e.paint?{paint:!0}:{},...e.compact?{compact:!0}:{},...e.sceneRev!==void 0&&e.sceneRev!==null?{sceneRev:e.sceneRev}:{}}}function ru(e={}){let t=bi(e);for(let i of["canvasId","playerCount","viewPlayerIndex","language"])e[i]!==void 0&&e[i]!==null&&e[i]!==""&&(t[i]=e[i]);return t}function rt(e={}){return e.light?{...j.playStatus()}:j.playGet(bi(e))}function au(){if(!j||dr||hr!=="realtime")return;let e=j.playStatus();if(!e.running||e.paused){He=0,Ge=0;return}let t=Date.now();if(!He){He=t;return}dr=!0;try{Ge+=Math.min(.25,Math.max(0,(t-He)/1e3)),He=t;let i=0;for(;Ge>=yi&&i<nu;)j.playStep(yi,{observe:!1}),Ge-=yi,i+=1;Ge>yi&&(Ge=yi)}finally{dr=!1}}var Hf=setInterval(au,iu);function ou(e,t={}){if(e==="start"){let i=t.clockMode??"realtime";if(i!=="manual"&&i!=="realtime")throw new Error("clockMode must be manual or realtime");return j&&j.playStop(),j=cr(t.archive||t.project,{workspacePath:t.workspacePath||""}),hr=i,He=0,Ge=0,j.playStart(ru(t))}if(!j)throw new Error("play session has not started");if(e==="get")return t.light?rt(t):j.playGet(bi(t));if(e==="step"){let i=j.playStep(t.dt,t.light?{observe:!1}:bi(t));return t.light?rt(t):i}if(e==="pointer")return j.playPointer(t.type,t.x,t.y,{observe:!1,deltaX:t.deltaX,deltaY:t.deltaY}),rt(t);if(e==="key")return j.playKey(t.key,{observe:!1}),rt(t);if(e==="click")return j.playClick(t.name,{observe:!1}),rt(t);if(e==="pause")return j.playPause({observe:!1}),He=0,Ge=0,rt(t);if(e==="resume")return j.playResume({observe:!1}),He=0,Ge=0,rt(t);if(e==="device")return j.playSetCanvas(t.canvasId,bi(t));if(e==="view")return j.playSetView(t.playerIndex??t.viewPlayerIndex,{observe:!1}),rt(t);if(e==="serverGet")return j.playServerGet(t.entityType,t.name);if(e==="serverSet")return j.playServerSet(t.entityType,t.name,t.value);if(e==="serverSend")return j.playServerSend(t.name,t.params||[],t.target||"PlayerSelf");if(e==="history")return j.playHistory();if(e==="saveCase")return j.playSaveCase(t.case||t);if(e==="runCase")return j.playRunCase(t.case||t,{canvasId:t.canvasId,playerCount:t.playerCount,viewPlayerIndex:t.viewPlayerIndex});if(e==="stop"){let i=j.playStop();return j=null,He=0,Ge=0,i}throw new Error(`unknown play action: ${e}`)}fr.on("message",e=>{let{id:t,action:i,args:n={}}=e||{};try{let r=ou(i,n),a=typeof r?.running=="boolean"?{...r,clockMode:hr}:r;fr.postMessage({id:t,ok:!0,value:a,error:null})}catch(r){fr.postMessage({id:t,ok:!1,value:null,error:r?.message||String(r)})}});