@microtronics/studio-cli 1.2.0-alpha.1 → 1.2.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/main.js +52 -52
- package/dist/studio-cli.d.ts +19 -0
- package/out/api.js +35 -35
- package/out/studio-cli.d.ts +19 -0
- package/package.json +1 -1
package/out/api.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var $n=Object.create;var tr=Object.defineProperty;var qn=Object.getOwnPropertyDescriptor;var Pn=Object.getOwnPropertyNames;var Ln=Object.getPrototypeOf,Nn=Object.prototype.hasOwnProperty;var Gn=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),Tn=(t,e)=>{for(var F in e)tr(t,F,{get:e[F],enumerable:!0})},Ge=(t,e,F,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of Pn(e))!Nn.call(t,a)&&a!==F&&tr(t,a,{get:()=>e[a],enumerable:!(i=qn(e,a))||i.enumerable});return t};var J0=(t,e,F)=>(F=t!=null?$n(Ln(t)):{},Ge(e||!t||!t.__esModule?tr(F,"default",{value:t,enumerable:!0}):F,t)),In=t=>Ge(tr({},"__esModule",{value:!0}),t);var Jt=Gn((C8,zt)=>{"use strict";var bF=Object.create,zA=Object.defineProperty,mF=Object.getOwnPropertyDescriptor,St=Object.getOwnPropertyNames,hF=Object.getPrototypeOf,gF=Object.prototype.hasOwnProperty,kF=(t,e,F)=>e in t?zA(t,e,{enumerable:!0,configurable:!0,writable:!0,value:F}):t[e]=F,Rt=(t,e)=>function(){return e||(0,t[St(t)[0]])((e={exports:{}}).exports,e),e.exports},yF=(t,e)=>{for(var F in e)zA(t,F,{get:e[F],enumerable:!0})},Ot=(t,e,F,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of St(e))!gF.call(t,a)&&a!==F&&zA(t,a,{get:()=>e[a],enumerable:!(i=mF(e,a))||i.enumerable});return t},Ut=(t,e,F)=>(F=t!=null?bF(hF(t)):{},Ot(e||!t||!t.__esModule?zA(F,"default",{value:t,enumerable:!0}):F,t)),wF=t=>Ot(zA({},"__esModule",{value:!0}),t),N0=(t,e,F)=>kF(t,typeof e!="symbol"?e+"":e,F),_F=Rt({"wasm/bin/pawncc.js"(t,e){"use strict";var F=(()=>{var i=globalThis.document?.currentScript?.src;return async function(a={}){var E,s=a,C=!!globalThis.window,l=!!globalThis.WorkerGlobalScope,d=globalThis.process?.versions?.node&&globalThis.process?.type!="renderer",u=[],p="./this.program",g=(x,n)=>{throw n};typeof __filename<"u"?i=__filename:l&&(i=self.location.href);var w="",b,k;if(d){var _=require("fs");w=__dirname+"/",k=x=>{x=y(x)?new URL(x):x;var n=_.readFileSync(x);return n},b=async(x,n=!0)=>{x=y(x)?new URL(x):x;var v=_.readFileSync(x,n?void 0:"utf8");return v},process.argv.length>1&&(p=process.argv[1].replace(/\\/g,"/")),u=process.argv.slice(2),g=(x,n)=>{throw process.exitCode=x,n}}else if(C||l){try{w=new URL(".",i).href}catch{}l&&(k=x=>{var n=new XMLHttpRequest;return n.open("GET",x,!1),n.responseType="arraybuffer",n.send(null),new Uint8Array(n.response)}),b=async x=>{if(y(x))return new Promise((v,f)=>{var c=new XMLHttpRequest;c.open("GET",x,!0),c.responseType="arraybuffer",c.onload=()=>{if(c.status==200||c.status==0&&c.response){v(c.response);return}f(c.status)},c.onerror=f,c.send(null)});var n=await fetch(x,{credentials:"same-origin"});if(n.ok)return n.arrayBuffer();throw new Error(n.status+" : "+n.url)}}var q=console.log.bind(console),N=console.error.bind(console),S,V=!1,L,y=x=>x.startsWith("file://");class P{}class H extends P{}function U(x){for(var n=0,v=x.length,f=new Uint8Array(v),c;n<v;++n)c=x.charCodeAt(n),f[n]=~c>>8&c;return f}var I,M,W=!1,J=!1;function Z(){var x=p0.buffer;P0=new Int8Array(x),_x=new Int16Array(x),fx=new Uint8Array(x),gr=new Uint16Array(x),h0=new Int32Array(x),r0=new Uint32Array(x),mr=new Float32Array(x),hr=new Float64Array(x),g0=new BigInt64Array(x),kr=new BigUint64Array(x)}function X(){if(s.preRun)for(typeof s.preRun=="function"&&(s.preRun=[s.preRun]);s.preRun.length;)wr(s.preRun.shift());dA(pA)}function T(){W=!0,!s.noFSInit&&!r.initialized&&r.init(),T0.init(),NA.__wasm_call_ctors(),r.ignorePermissions=!1}function A0(){}function e0(){j(),r.quit(),T0.shutdown(),J=!0}function n0(){if(s.postRun)for(typeof s.postRun=="function"&&(s.postRun=[s.postRun]);s.postRun.length;)yr(s.postRun.shift());dA(jA)}function i0(x){s.onAbort?.(x),x=`Aborted(${x})`,N(x),V=!0,x+=". Build with -sASSERTIONS for more info.";var n=new WebAssembly.RuntimeError(x);throw M?.(n),n}var d0;function b0(){return U(`\0asm\0\0\0\x897\`\x7F\x7F\`\x7F\0\`\x7F\x7F\x7F\`\0\0\`\x7F\x7F\x7F\x7F\`\x7F\x7F\0\`\x7F\x7F~~~\`\x7F\x7F\x7F\0\`\x7F\x7F\x7F\x7F\x7F\`\x7F\x7F\x7F\x7F\0\`\0\x7F\`~\0\`\x7F~~~~\0\`\x7F\x7F\x7F\x7F\x7F\x7F\`\x7F\x7F\x7F\x7F\x7F\x7F\x7F\`\x7F\x7F~\`\x7F~\x7F~\`\x7F\x7F\x7F\x7F\x7F\0\`\x7F~\`\x7F~\0\`\x7F|\`\x7F~~\x7F\0\`\x7F\x7F\x7F\x7F\x7F\x7F\0\`\x7F~\x7F\x7F\x7F\`\x7F~\x7F\x7F\`\x07\x7F\x7F\x7F~\x7F\x7F\x7F~\`\x07\x7F\x7F\x7F\x7F\x7F\x7F\x7F\x7F\`~\x7F\`~\x7F\x7F\0\`\x7F\x7F~\0\`\x7F|\x7F\x7F\x7F\x7F\x7F\`\x7F\x7F~\x7F\x7F\x7F\`\x7F\x7F\x7F|\x7F\`\x7F\x7F|\x7F\`\x7F\x7F~\x7F\x7F\`\x07\x7F\x7F\x7F\x7F\x7F\x7F\x7F\0\`\x7F\x7F\x7F~\`\x7F\x7F\x7F\x7F\x7F\x7F~\`\v\x7F\x7F\x7F\x7F\x7F\x7F\x7F\x7F\x7F\x7F\x7F~\`\x7F~\x7F\x7F\x7F\x7F\x7F\` \x7F~\x7F\x7F\x7F\x7F\x7F\x7F\x7F\x7F\`~~\x7F~\`\x7F~~\0\`~\x7F\0\`\x7F~\x7F\`\x7F||\`||\`|\x7F\`\x7F~~~\0\`|\x7F|\`~\x7F\x7F\`~~~~\x7F\`~~~\x7F\`\x7F|\0\`~~|\xD0env\binvoke_v\0env
|
|
2
2
|
invoke_vii\0\x07env invoke_ii\0env
|
|
3
3
|
invoke_iii\0env\binvoke_i\0\0env\vinvoke_iiii\0\benv\r__assert_fail\0 env\finvoke_viiii\0env\finvoke_iiiii\0\renv\rinvoke_viiiii\0env\finvoke_iijii\0env invoke_vi\0env\vinvoke_viii\0 env\vinvoke_iiid\0 env\rinvoke_iiiiii\0env__syscall_faccessat\0\benv__syscall_openat\0\benv__syscall_fcntl64\0env__syscall_ioctl\0wasi_snapshot_preview1\bfd_write\0\bwasi_snapshot_preview1\x07fd_read\0\bwasi_snapshot_preview1\bfd_close\0\0env__syscall_getcwd\0wasi_snapshot_preview1\x07fd_seek\0env__syscall_unlinkat\0env__syscall_rmdir\0\0env__syscall_renameat\0\bwasi_snapshot_preview1clock_time_get\0env__syscall_readlinkat\0\benvemscripten_resize_heap\0\0env_emscripten_throw_longjmp\0\xAA\xA8\x07!
|
|
4
4
|
|
|
@@ -1158,8 +1158,8 @@ S\0\0\xCD\0\0Q\0\0\xCD*\0\0\x97*\0\0>S\0\0A!\0\0\f\0\0\x90\0\0\xC6\0\0l\0\
|
|
|
1158
1158
|
\0\0\xC0\v\0\0\xC0\f\0\0\xC0\r\0\0\xC0\0\0\xC0\0\0\xC0\0\0\xC0\0\0\xC0\0\0\xC0\0\0\xC0\0\0\xC0\0\0\xC0\0\0\xC0\0\0\xC0\0\0\xC0\0\0\xC0\0\0\xC0\x1B\0\0\xC0\0\0\xC0\0\0\xC0\0\0\xC0\0\0\xC0\0\0\0\xB3\0\0\xC3\0\0\xC3\0\0\xC3\0\0\xC3\0\0\xC3\0\0\xC3\x07\0\0\xC3\b\0\0\xC3 \0\0\xC3
|
|
1159
1159
|
\0\0\xC3\v\0\0\xC3\f\0\0\xC3\r\0\0\xD3\0\0\xC3\0\0\xC3\0\0\f\xBB\0\f\xC3\0\f\xC3\0\f\xC3\0\f\xDB\0A\xC0\xF9\v\xE1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0D\0\0\xFAC\0\0 D\0\0\0D\0\0\xFDC\0\0\xF6C\0\0\xEEC\0\0\xEFC\0\0D\0\0\xEBC\0\0\xE8C\0\0z\0\0\x87Y\0\0\xF3C\0\0\fD\0\0\xF7C\0\0\xF0C\0\0D\0\0\xBCC\0\0\xBDC\0\0MO\0\0\xFDN\0\0\xBCN\0\0\xBDN\0\0,D\0\0\xE3\0\0h&\0\0d-\0\0)\0\0\xA2,\0\0d\0\01\0\0>!\0\0G-\0\0_\0\0y\0\0K0\0\0\v!\0\0*\0\0\x84,\0\0\x81\0\0+\0\02\0\0g!\0\0\xF7)\0\0; \0\0-\0\0\xF01\0\0&\0\0\xAD(\0\0\xF1)\0\0\x97.\0\0\xE2\0\0\xB9-\0\0F-\0\0*\0\0
|
|
1160
1160
|
*\0\0\xDC\0\x004\0\0\xE7.\0\0*\0\x006*\0\0.*\0\0\x9D/\0\0\xB3-\0\0\x8A3\0\0\x87/\0\0'*\0\x009)\0\0!D\0\0\0O\0\0!D\0\0\xB63\0\0\xC63\0\0\x983\0\0\xA53\0\0\xD73\0\0\xAD3\0\0\xAD3\0\0\0\0\0\0/\0A\xA0\xFE\vy\0\0\0\\\\\0\0\xF4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\b\0\0\0\0\0\0\0\0\0\xA0\x97\0\0\xA0\x9C\0\0\0\0\0\0\0\0\0 \x9C\0\0 \x9D\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xA0\x9D\0\0\0\0\0\0\0\0\0\x07\0\0\0\0 \0\0\0\0\0\0\0A\xA4\xFF\v\x9F\0A\xBC\xFF\v\v\x9D\0\0\0\x9C\0\0\0("\0A\xD4\xFF\v\0A\xE4\xFF\v\b\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0A\xA8\x80\v \x98\xBF\0\0\0\0\0\0\0A\xBC\x80\v\xA0\0A\xD4\x80\v\x9D\0\0\0\xA1\0\0\x008"\0\0\0A\xEC\x80\v\0A\xFC\x80\v\xFF\xFF\xFF\xFF
|
|
1161
|
-
\0A\xC0\x81\v\v0\xC0\0\0\x80!\0\`(`)}function
|
|
1162
|
-
`));if(!x)return null;Wx=Yx(x,!0)}return Wx.shift()},G0={ttys:[],init(){},shutdown(){},register(x,n){G0.ttys[x]={input:[],output:[],ops:n},r.registerDevice(x,G0.stream_ops)},stream_ops:{open(x){var n=G0.ttys[x.node.rdev];if(!n)throw new r.ErrnoError(43);x.tty=n,x.seekable=!1},close(x){x.tty.ops.fsync(x.tty)},fsync(x){x.tty.ops.fsync(x.tty)},read(x,n,v,f,c){if(!x.tty||!x.tty.ops.get_char)throw new r.ErrnoError(60);for(var m=0,q=0;q<f;q++){var S;try{S=x.tty.ops.get_char(x.tty)}catch{throw new r.ErrnoError(29)}if(S===void 0&&m===0)throw new r.ErrnoError(6);if(S==null)break;m++,n[v+q]=S}return m&&(x.node.atime=Date.now()),m},write(x,n,v,f,c){if(!x.tty||!x.tty.ops.put_char)throw new r.ErrnoError(60);try{for(var m=0;m<f;m++)x.tty.ops.put_char(x.tty,n[v+m])}catch{throw new r.ErrnoError(29)}return f&&(x.node.mtime=x.node.ctime=Date.now()),m}},default_tty_ops:{get_char(x){return $r()},put_char(x,n){n===null||n===10?(P(Tx(x.output)),x.output=[]):n!=0&&x.output.push(n)},fsync(x){x.output?.length>0&&(P(Tx(x.output)),x.output=[])},ioctl_tcgets(x){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(x,n,v){return 0},ioctl_tiocgwinsz(x){return[24,80]}},default_tty1_ops:{put_char(x,n){n===null||n===10?(N(Tx(x.output)),x.output=[]):n!=0&&x.output.push(n)},fsync(x){x.output?.length>0&&(N(Tx(x.output)),x.output=[])}}},hA=x=>{f0()},V={ops_table:null,mount(x){return V.createNode(null,"/",16895,0)},createNode(x,n,v,f){if(r.isBlkdev(v)||r.isFIFO(v))throw new r.ErrnoError(63);V.ops_table||(V.ops_table={dir:{node:{getattr:V.node_ops.getattr,setattr:V.node_ops.setattr,lookup:V.node_ops.lookup,mknod:V.node_ops.mknod,rename:V.node_ops.rename,unlink:V.node_ops.unlink,rmdir:V.node_ops.rmdir,readdir:V.node_ops.readdir,symlink:V.node_ops.symlink},stream:{llseek:V.stream_ops.llseek}},file:{node:{getattr:V.node_ops.getattr,setattr:V.node_ops.setattr},stream:{llseek:V.stream_ops.llseek,read:V.stream_ops.read,write:V.stream_ops.write,mmap:V.stream_ops.mmap,msync:V.stream_ops.msync}},link:{node:{getattr:V.node_ops.getattr,setattr:V.node_ops.setattr,readlink:V.node_ops.readlink},stream:{}},chrdev:{node:{getattr:V.node_ops.getattr,setattr:V.node_ops.setattr},stream:r.chrdev_stream_ops}});var c=r.createNode(x,n,v,f);return r.isDir(c.mode)?(c.node_ops=V.ops_table.dir.node,c.stream_ops=V.ops_table.dir.stream,c.contents={}):r.isFile(c.mode)?(c.node_ops=V.ops_table.file.node,c.stream_ops=V.ops_table.file.stream,c.usedBytes=0,c.contents=V.emptyFileContents??(V.emptyFileContents=new Uint8Array(0))):r.isLink(c.mode)?(c.node_ops=V.ops_table.link.node,c.stream_ops=V.ops_table.link.stream):r.isChrdev(c.mode)&&(c.node_ops=V.ops_table.chrdev.node,c.stream_ops=V.ops_table.chrdev.stream),c.atime=c.mtime=c.ctime=Date.now(),x&&(x.contents[n]=c,x.atime=x.mtime=x.ctime=c.atime),c},getFileDataAsTypedArray(x){return x.contents.subarray(0,x.usedBytes)},expandFileStorage(x,n){var v=x.contents.length;if(!(v>=n)){var f=1024*1024;n=Math.max(n,v*(v<f?2:1.125)>>>0),v&&(n=Math.max(n,256));var c=V.getFileDataAsTypedArray(x);x.contents=new Uint8Array(n),x.contents.set(c)}},resizeFileStorage(x,n){if(x.usedBytes!=n){var v=x.contents;x.contents=new Uint8Array(n),x.contents.set(v.subarray(0,Math.min(n,x.usedBytes))),x.usedBytes=n}},node_ops:{getattr(x){var n={};return n.dev=r.isChrdev(x.mode)?x.id:1,n.ino=x.id,n.mode=x.mode,n.nlink=1,n.uid=0,n.gid=0,n.rdev=x.rdev,r.isDir(x.mode)?n.size=4096:r.isFile(x.mode)?n.size=x.usedBytes:r.isLink(x.mode)?n.size=x.link.length:n.size=0,n.atime=new Date(x.atime),n.mtime=new Date(x.mtime),n.ctime=new Date(x.ctime),n.blksize=4096,n.blocks=Math.ceil(n.size/n.blksize),n},setattr(x,n){for(let v of["mode","atime","mtime","ctime"])n[v]!=null&&(x[v]=n[v]);n.size!==void 0&&V.resizeFileStorage(x,n.size)},lookup(x,n){throw V.doesNotExistError||(V.doesNotExistError=new r.ErrnoError(44),V.doesNotExistError.stack="<generic error, no stack>"),V.doesNotExistError},mknod(x,n,v,f){return V.createNode(x,n,v,f)},rename(x,n,v){var f;try{f=r.lookupNode(n,v)}catch{}if(f){if(r.isDir(x.mode))for(var c in f.contents)throw new r.ErrnoError(55);r.hashRemoveNode(f)}delete x.parent.contents[x.name],n.contents[v]=x,x.name=v,n.ctime=n.mtime=x.parent.ctime=x.parent.mtime=Date.now()},unlink(x,n){delete x.contents[n],x.ctime=x.mtime=Date.now()},rmdir(x,n){var v=r.lookupNode(x,n);for(var f in v.contents)throw new r.ErrnoError(55);delete x.contents[n],x.ctime=x.mtime=Date.now()},readdir(x){return[".","..",...Object.keys(x.contents)]},symlink(x,n,v){var f=V.createNode(x,n,41471,0);return f.link=v,f},readlink(x){if(!r.isLink(x.mode))throw new r.ErrnoError(28);return x.link}},stream_ops:{read(x,n,v,f,c){var m=x.node.contents;if(c>=x.node.usedBytes)return 0;var q=Math.min(x.node.usedBytes-c,f);return n.set(m.subarray(c,c+q),v),q},write(x,n,v,f,c,m){if(n.buffer===q0.buffer&&(m=!1),!f)return 0;var q=x.node;return q.mtime=q.ctime=Date.now(),m?(q.contents=n.subarray(v,v+f),q.usedBytes=f):q.usedBytes===0&&c===0?(q.contents=n.slice(v,v+f),q.usedBytes=f):(V.expandFileStorage(q,c+f),q.contents.set(n.subarray(v,v+f),c),q.usedBytes=Math.max(q.usedBytes,c+f)),f},llseek(x,n,v){var f=n;if(v===1?f+=x.position:v===2&&r.isFile(x.node.mode)&&(f+=x.node.usedBytes),f<0)throw new r.ErrnoError(28);return f},mmap(x,n,v,f,c){if(!r.isFile(x.node.mode))throw new r.ErrnoError(43);var m,q,S=x.node.contents;if(!(c&2)&&S.buffer===q0.buffer)q=!1,m=S.byteOffset;else{if(q=!0,m=hA(n),!m)throw new r.ErrnoError(48);S&&((v>0||v+n<S.length)&&(S.subarray?S=S.subarray(v,v+n):S=Array.prototype.slice.call(S,v,v+n)),q0.set(S,m))}return{ptr:m,allocated:q}},msync(x,n,v,f,c){return V.stream_ops.write(x,n,0,f,v,!1),0}}},qr=x=>{if(typeof x!="string")return x;var n={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},v=n[x];if(typeof v>"u")throw new Error(`Unknown file open mode: ${x}`);return v},gA=x=>(typeof x=="string"&&(x=Yx(x,!0)),x.subarray||(x=new Uint8Array(x)),x),Zx=(x,n)=>{var v=0;return x&&(v|=365),n&&(v|=146),v},c0={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135},B0={mount(x){return B0.createNode(null,"/",x.opts.fs.lstat(x.opts.root).mode,0)},createNode(x,n,v,f){if(!r.isDir(v)&&!r.isFile(v)&&!r.isLink(v))throw new r.ErrnoError(c0.EINVAL);var c=r.createNode(x,n,v);return c.node_ops=B0.node_ops,c.stream_ops=B0.stream_ops,c},realPath(x){for(var n=[];x.parent!==x;)n.push(x.name),x=x.parent;return n.push(x.mount.opts.root),n.reverse(),e0.join(...n)},node_ops:{getattr(x){var n=B0.realPath(x),v;try{v=x.mount.opts.fs.lstat(n)}catch(f){throw f.code?new r.ErrnoError(c0[f.code]):f}return{dev:v.dev,ino:v.ino,mode:v.mode,nlink:v.nlink,uid:v.uid,gid:v.gid,rdev:v.rdev,size:v.size,atime:v.atime,mtime:v.mtime,ctime:v.ctime,blksize:v.blksize,blocks:v.blocks}},setattr(x,n){var v=B0.realPath(x);try{if(n.mode!==void 0&&(x.mount.opts.fs.chmod(v,n.mode),x.mode=n.mode),n.atime||n.mtime){var f=new Date(n.atime||n.mtime),c=new Date(n.mtime||n.atime);x.mount.opts.fs.utime(v,f,c)}n.size!==void 0&&x.mount.opts.fs.truncate(v,n.size)}catch(m){throw m.code?new r.ErrnoError(c0[m.code]):m}},lookup(x,n){try{var v=e0.join2(B0.realPath(x),n),f=x.mount.opts.fs.lstat(v).mode,c=B0.createNode(x,n,f);return c}catch(m){throw m.code?new r.ErrnoError(c0[m.code]):m}},mknod(x,n,v,f){var c=B0.createNode(x,n,v,f),m=B0.realPath(c);try{r.isDir(c.mode)?c.mount.opts.fs.mkdir(m,c.mode):c.mount.opts.fs.writeFile(m,"",{mode:c.mode})}catch(q){throw q.code?new r.ErrnoError(c0[q.code]):q}return c},rename(x,n,v){var f=B0.realPath(x),c=e0.join2(B0.realPath(n),v);try{x.mount.opts.fs.rename(f,c),x.name=v}catch(m){throw m.code?new r.ErrnoError(c0[m.code]):m}},unlink(x,n){var v=e0.join2(B0.realPath(x),n);try{x.mount.opts.fs.unlink(v)}catch(f){throw f.code?new r.ErrnoError(c0[f.code]):f}},rmdir(x,n){var v=e0.join2(B0.realPath(x),n);try{x.mount.opts.fs.rmdir(v)}catch(f){throw f.code?new r.ErrnoError(c0[f.code]):f}},readdir(x){var n=B0.realPath(x);try{return x.mount.opts.fs.readdir(n)}catch(v){throw v.code?new r.ErrnoError(c0[v.code]):v}},symlink(x,n,v){var f=e0.join2(B0.realPath(x),n);try{x.mount.opts.fs.symlink(v,f)}catch(c){throw c.code?new r.ErrnoError(c0[c.code]):c}},readlink(x){var n=B0.realPath(x);try{return x.mount.opts.fs.readlink(n)}catch(v){throw v.code?new r.ErrnoError(c0[v.code]):v}}},stream_ops:{open(x){var n=B0.realPath(x.node);try{x.nfd=x.node.mount.opts.fs.open(n,x.flags)}catch(v){throw v.code?new r.ErrnoError(c0[v.code]):v}},close(x){try{x.node.mount.opts.fs.close(x.nfd)}catch(n){throw n.code?new r.ErrnoError(c0[n.code]):n}},read(x,n,v,f,c){try{return x.node.mount.opts.fs.read(x.nfd,n,v,f,c)}catch(m){throw m.code?new r.ErrnoError(c0[m.code]):m}},write(x,n,v,f,c){try{return x.node.mount.opts.fs.write(x.nfd,n,v,f,c)}catch(m){throw m.code?new r.ErrnoError(c0[m.code]):m}},llseek(x,n,v){var f=n;if(v===1)f+=x.position;else if(v===2&&r.isFile(x.node.mode))try{var c=x.node.node_ops.getattr(x.node);f+=c.size}catch(m){throw new r.ErrnoError(c0[m.code])}if(f<0)throw new r.ErrnoError(c0.EINVAL);return f}}},Pr=async x=>{var n=await b(x);return new Uint8Array(n)},kA=(...x)=>r.createDataFile(...x),Nr=x=>x,Y0=0,fx=null,yA=x=>{if(Y0--,a.monitorRunDependencies?.(Y0),Y0==0&&fx){var n=fx;fx=null,n()}},wA=x=>{Y0++,a.monitorRunDependencies?.(Y0)},_A=[],Lr=async(x,n)=>{typeof Browser<"u"&&Browser.init();for(var v of _A)if(v.canHandle(n))return v.handle(x,n);return x},Qx=async(x,n,v,f,c,m,q,S)=>{var x0=n?Ax.resolve(e0.join2(x,n)):x,E0=Nr(`cp ${x0}`);wA(E0);try{var k0=v;typeof v=="string"&&(k0=await Pr(v)),k0=await Lr(k0,x0),S?.(),m||kA(x,n,k0,f,c,q)}finally{yA(E0)}},Gr=(x,n,v,f,c,m,q,S,x0,E0)=>{Qx(x,n,v,f,c,S,x0,E0).then(m).catch(q)},r={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,filesystems:null,syncFSRequests:0,ErrnoError:class{constructor(x){N0(this,"name","ErrnoError"),this.errno=x}},FSStream:class{constructor(){N0(this,"shared",{})}get object(){return this.node}set object(x){this.node=x}get isRead(){return(this.flags&2097155)!==1}get isWrite(){return(this.flags&2097155)!==0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(x){this.shared.flags=x}get position(){return this.shared.position}set position(x){this.shared.position=x}},FSNode:class{constructor(x,n,v,f){N0(this,"node_ops",{}),N0(this,"stream_ops",{}),N0(this,"readMode",365),N0(this,"writeMode",146),N0(this,"mounted",null),x||(x=this),this.parent=x,this.mount=x.mount,this.id=r.nextInode++,this.name=n,this.mode=v,this.rdev=f,this.atime=this.mtime=this.ctime=Date.now()}get read(){return(this.mode&this.readMode)===this.readMode}set read(x){x?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(x){x?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return r.isDir(this.mode)}get isDevice(){return r.isChrdev(this.mode)}},lookupPath(x,n={}){if(!x)throw new r.ErrnoError(44);n.follow_mount??(n.follow_mount=!0),e0.isAbs(x)||(x=r.cwd()+"/"+x);x:for(var v=0;v<40;v++){for(var f=x.split("/").filter(E0=>!!E0),c=r.root,m="/",q=0;q<f.length;q++){var S=q===f.length-1;if(S&&n.parent)break;if(f[q]!=="."){if(f[q]===".."){if(m=e0.dirname(m),r.isRoot(c)){x=m+"/"+f.slice(q+1).join("/"),v--;continue x}else c=c.parent;continue}m=e0.join2(m,f[q]);try{c=r.lookupNode(c,f[q])}catch(E0){if(E0?.errno===44&&S&&n.noent_okay)return{path:m};throw E0}if(r.isMountpoint(c)&&(!S||n.follow_mount)&&(c=c.mounted.root),r.isLink(c.mode)&&(!S||n.follow)){if(!c.node_ops.readlink)throw new r.ErrnoError(52);var x0=c.node_ops.readlink(c);e0.isAbs(x0)||(x0=e0.dirname(m)+"/"+x0),x=x0+"/"+f.slice(q+1).join("/");continue x}}}return{path:m,node:c}}throw new r.ErrnoError(32)},getPath(x){for(var n;;){if(r.isRoot(x)){var v=x.mount.mountpoint;return n?v[v.length-1]!=="/"?`${v}/${n}`:v+n:v}n=n?`${x.name}/${n}`:x.name,x=x.parent}},hashName(x,n){for(var v=0,f=0;f<n.length;f++)v=(v<<5)-v+n.charCodeAt(f)|0;return(x+v>>>0)%r.nameTable.length},hashAddNode(x){var n=r.hashName(x.parent.id,x.name);x.name_next=r.nameTable[n],r.nameTable[n]=x},hashRemoveNode(x){var n=r.hashName(x.parent.id,x.name);if(r.nameTable[n]===x)r.nameTable[n]=x.name_next;else for(var v=r.nameTable[n];v;){if(v.name_next===x){v.name_next=x.name_next;break}v=v.name_next}},lookupNode(x,n){var v=r.mayLookup(x);if(v)throw new r.ErrnoError(v);for(var f=r.hashName(x.id,n),c=r.nameTable[f];c;c=c.name_next){var m=c.name;if(c.parent.id===x.id&&m===n)return c}return r.lookup(x,n)},createNode(x,n,v,f){var c=new r.FSNode(x,n,v,f);return r.hashAddNode(c),c},destroyNode(x){r.hashRemoveNode(x)},isRoot(x){return x===x.parent},isMountpoint(x){return!!x.mounted},isFile(x){return(x&61440)===32768},isDir(x){return(x&61440)===16384},isLink(x){return(x&61440)===40960},isChrdev(x){return(x&61440)===8192},isBlkdev(x){return(x&61440)===24576},isFIFO(x){return(x&61440)===4096},isSocket(x){return(x&49152)===49152},flagsToPermissionString(x){var n=["r","w","rw"][x&3];return x&512&&(n+="w"),n},nodePermissions(x,n){return r.ignorePermissions?0:n.includes("r")&&!(x.mode&292)||n.includes("w")&&!(x.mode&146)||n.includes("x")&&!(x.mode&73)?2:0},mayLookup(x){if(!r.isDir(x.mode))return 54;var n=r.nodePermissions(x,"x");return n||(x.node_ops.lookup?0:2)},mayCreate(x,n){if(!r.isDir(x.mode))return 54;try{var v=r.lookupNode(x,n);return 20}catch{}return r.nodePermissions(x,"wx")},mayDelete(x,n,v){var f;try{f=r.lookupNode(x,n)}catch(m){return m.errno}var c=r.nodePermissions(x,"wx");if(c)return c;if(v){if(!r.isDir(f.mode))return 54;if(r.isRoot(f)||r.getPath(f)===r.cwd())return 10}else if(r.isDir(f.mode))return 31;return 0},mayOpen(x,n){if(!x)return 44;if(r.isLink(x.mode))return 32;var v=r.flagsToPermissionString(n);return r.isDir(x.mode)&&(v!=="r"||n&576)?31:r.nodePermissions(x,v)},checkOpExists(x,n){if(!x)throw new r.ErrnoError(n);return x},MAX_OPEN_FDS:4096,nextfd(){for(var x=0;x<=r.MAX_OPEN_FDS;x++)if(!r.streams[x])return x;throw new r.ErrnoError(33)},getStreamChecked(x){var n=r.getStream(x);if(!n)throw new r.ErrnoError(8);return n},getStream:x=>r.streams[x],createStream(x,n=-1){return x=Object.assign(new r.FSStream,x),n==-1&&(n=r.nextfd()),x.fd=n,r.streams[n]=x,x},closeStream(x){r.streams[x]=null},dupStream(x,n=-1){var v=r.createStream(x,n);return v.stream_ops?.dup?.(v),v},doSetAttr(x,n,v){var f=x?.stream_ops.setattr,c=f?x:n;f??(f=n.node_ops.setattr),r.checkOpExists(f,63);try{f(c,v)}catch(m){throw m instanceof RangeError?new r.ErrnoError(22):m}},chrdev_stream_ops:{open(x){var n=r.getDevice(x.node.rdev);x.stream_ops=n.stream_ops,x.stream_ops.open?.(x)},llseek(){throw new r.ErrnoError(70)}},major:x=>x>>8,minor:x=>x&255,makedev:(x,n)=>x<<8|n,registerDevice(x,n){r.devices[x]={stream_ops:n}},getDevice:x=>r.devices[x],getMounts(x){for(var n=[],v=[x];v.length;){var f=v.pop();n.push(f),v.push(...f.mounts)}return n},syncfs(x,n){typeof x=="function"&&(n=x,x=!1),r.syncFSRequests++,r.syncFSRequests>1&&N(`warning: ${r.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var v=r.getMounts(r.root.mount),f=0;function c(S){return r.syncFSRequests--,n(S)}function m(S){if(S)return m.errored?void 0:(m.errored=!0,c(S));++f>=v.length&&c(null)}for(var q of v)q.type.syncfs?q.type.syncfs(q,x,m):m(null)},mount(x,n,v){var f=v==="/",c=!v,m;if(f&&r.root)throw new r.ErrnoError(10);if(!f&&!c){var q=r.lookupPath(v,{follow_mount:!1});if(v=q.path,m=q.node,r.isMountpoint(m))throw new r.ErrnoError(10);if(!r.isDir(m.mode))throw new r.ErrnoError(54)}var S={type:x,opts:n,mountpoint:v,mounts:[]},x0=x.mount(S);return x0.mount=S,S.root=x0,f?r.root=x0:m&&(m.mounted=S,m.mount&&m.mount.mounts.push(S)),x0},unmount(x){var n=r.lookupPath(x,{follow_mount:!1});if(!r.isMountpoint(n.node))throw new r.ErrnoError(28);var v=n.node,f=v.mounted,c=r.getMounts(f);for(var[m,q]of Object.entries(r.nameTable))for(;q;){var S=q.name_next;c.includes(q.mount)&&r.destroyNode(q),q=S}v.mounted=null;var x0=v.mount.mounts.indexOf(f);v.mount.mounts.splice(x0,1)},lookup(x,n){return x.node_ops.lookup(x,n)},mknod(x,n,v){var f=r.lookupPath(x,{parent:!0}),c=f.node,m=e0.basename(x);if(!m)throw new r.ErrnoError(28);if(m==="."||m==="..")throw new r.ErrnoError(20);var q=r.mayCreate(c,m);if(q)throw new r.ErrnoError(q);if(!c.node_ops.mknod)throw new r.ErrnoError(63);return c.node_ops.mknod(c,m,n,v)},statfs(x){return r.statfsNode(r.lookupPath(x,{follow:!0}).node)},statfsStream(x){return r.statfsNode(x.node)},statfsNode(x){var n={bsize:4096,frsize:4096,blocks:1e6,bfree:5e5,bavail:5e5,files:r.nextInode,ffree:r.nextInode-1,fsid:42,flags:2,namelen:255};return x.node_ops.statfs&&Object.assign(n,x.node_ops.statfs(x.mount.opts.root)),n},create(x,n=438){return n&=4095,n|=32768,r.mknod(x,n,0)},mkdir(x,n=511){return n&=1023,n|=16384,r.mknod(x,n,0)},mkdirTree(x,n){var v=x.split("/"),f="";for(var c of v)if(c){(f||e0.isAbs(x))&&(f+="/"),f+=c;try{r.mkdir(f,n)}catch(m){if(m.errno!=20)throw m}}},mkdev(x,n,v){return typeof v>"u"&&(v=n,n=438),n|=8192,r.mknod(x,n,v)},symlink(x,n){if(!Ax.resolve(x))throw new r.ErrnoError(44);var v=r.lookupPath(n,{parent:!0}),f=v.node;if(!f)throw new r.ErrnoError(44);var c=e0.basename(n),m=r.mayCreate(f,c);if(m)throw new r.ErrnoError(m);if(!f.node_ops.symlink)throw new r.ErrnoError(63);return f.node_ops.symlink(f,c,x)},rename(x,n){var v=e0.dirname(x),f=e0.dirname(n),c=e0.basename(x),m=e0.basename(n),q,S,x0;if(q=r.lookupPath(x,{parent:!0}),S=q.node,q=r.lookupPath(n,{parent:!0}),x0=q.node,!S||!x0)throw new r.ErrnoError(44);if(S.mount!==x0.mount)throw new r.ErrnoError(75);var E0=r.lookupNode(S,c),k0=Ax.relative(x,f);if(k0.charAt(0)!==".")throw new r.ErrnoError(28);if(k0=Ax.relative(n,v),k0.charAt(0)!==".")throw new r.ErrnoError(55);var b0;try{b0=r.lookupNode(x0,m)}catch{}if(E0!==b0){var j0=r.isDir(E0.mode),a0=r.mayDelete(S,c,j0);if(a0)throw new r.ErrnoError(a0);if(a0=b0?r.mayDelete(x0,m,j0):r.mayCreate(x0,m),a0)throw new r.ErrnoError(a0);if(!S.node_ops.rename)throw new r.ErrnoError(63);if(r.isMountpoint(E0)||b0&&r.isMountpoint(b0))throw new r.ErrnoError(10);if(x0!==S&&(a0=r.nodePermissions(S,"w"),a0))throw new r.ErrnoError(a0);r.hashRemoveNode(E0);try{S.node_ops.rename(E0,x0,m),E0.parent=x0}catch(I0){throw I0}finally{r.hashAddNode(E0)}}},rmdir(x){var n=r.lookupPath(x,{parent:!0}),v=n.node,f=e0.basename(x),c=r.lookupNode(v,f),m=r.mayDelete(v,f,!0);if(m)throw new r.ErrnoError(m);if(!v.node_ops.rmdir)throw new r.ErrnoError(63);if(r.isMountpoint(c))throw new r.ErrnoError(10);v.node_ops.rmdir(v,f),r.destroyNode(c)},readdir(x){var n=r.lookupPath(x,{follow:!0}),v=n.node,f=r.checkOpExists(v.node_ops.readdir,54);return f(v)},unlink(x){var n=r.lookupPath(x,{parent:!0}),v=n.node;if(!v)throw new r.ErrnoError(44);var f=e0.basename(x),c=r.lookupNode(v,f),m=r.mayDelete(v,f,!1);if(m)throw new r.ErrnoError(m);if(!v.node_ops.unlink)throw new r.ErrnoError(63);if(r.isMountpoint(c))throw new r.ErrnoError(10);v.node_ops.unlink(v,f),r.destroyNode(c)},readlink(x){var n=r.lookupPath(x),v=n.node;if(!v)throw new r.ErrnoError(44);if(!v.node_ops.readlink)throw new r.ErrnoError(28);return v.node_ops.readlink(v)},stat(x,n){var v=r.lookupPath(x,{follow:!n}),f=v.node,c=r.checkOpExists(f.node_ops.getattr,63);return c(f)},fstat(x){var n=r.getStreamChecked(x),v=n.node,f=n.stream_ops.getattr,c=f?n:v;return f??(f=v.node_ops.getattr),r.checkOpExists(f,63),f(c)},lstat(x){return r.stat(x,!0)},doChmod(x,n,v,f){r.doSetAttr(x,n,{mode:v&4095|n.mode&-4096,ctime:Date.now(),dontFollow:f})},chmod(x,n,v){var f;if(typeof x=="string"){var c=r.lookupPath(x,{follow:!v});f=c.node}else f=x;r.doChmod(null,f,n,v)},lchmod(x,n){r.chmod(x,n,!0)},fchmod(x,n){var v=r.getStreamChecked(x);r.doChmod(v,v.node,n,!1)},doChown(x,n,v){r.doSetAttr(x,n,{timestamp:Date.now(),dontFollow:v})},chown(x,n,v,f){var c;if(typeof x=="string"){var m=r.lookupPath(x,{follow:!f});c=m.node}else c=x;r.doChown(null,c,f)},lchown(x,n,v){r.chown(x,n,v,!0)},fchown(x,n,v){var f=r.getStreamChecked(x);r.doChown(f,f.node,!1)},doTruncate(x,n,v){if(r.isDir(n.mode))throw new r.ErrnoError(31);if(!r.isFile(n.mode))throw new r.ErrnoError(28);var f=r.nodePermissions(n,"w");if(f)throw new r.ErrnoError(f);r.doSetAttr(x,n,{size:v,timestamp:Date.now()})},truncate(x,n){if(n<0)throw new r.ErrnoError(28);var v;if(typeof x=="string"){var f=r.lookupPath(x,{follow:!0});v=f.node}else v=x;r.doTruncate(null,v,n)},ftruncate(x,n){var v=r.getStreamChecked(x);if(n<0||(v.flags&2097155)===0)throw new r.ErrnoError(28);r.doTruncate(v,v.node,n)},utime(x,n,v){var f=r.lookupPath(x,{follow:!0}),c=f.node,m=r.checkOpExists(c.node_ops.setattr,63);m(c,{atime:n,mtime:v})},open(x,n,v=438){if(x==="")throw new r.ErrnoError(44);n=qr(n),n&64?v=v&4095|32768:v=0;var f,c;if(typeof x=="object")f=x;else{c=x.endsWith("/");var m=r.lookupPath(x,{follow:!(n&131072),noent_okay:!0});f=m.node,x=m.path}var q=!1;if(n&64)if(f){if(n&128)throw new r.ErrnoError(20)}else{if(c)throw new r.ErrnoError(31);f=r.mknod(x,v|511,0),q=!0}if(!f)throw new r.ErrnoError(44);if(r.isChrdev(f.mode)&&(n&=-513),n&65536&&!r.isDir(f.mode))throw new r.ErrnoError(54);if(!q){var S=r.mayOpen(f,n);if(S)throw new r.ErrnoError(S)}n&512&&!q&&r.truncate(f,0),n&=-131713;var x0=r.createStream({node:f,path:r.getPath(f),flags:n,seekable:!0,position:0,stream_ops:f.stream_ops,ungotten:[],error:!1});return x0.stream_ops.open&&x0.stream_ops.open(x0),q&&r.chmod(f,v&511),x0},close(x){if(r.isClosed(x))throw new r.ErrnoError(8);x.getdents&&(x.getdents=null);try{x.stream_ops.close&&x.stream_ops.close(x)}catch(n){throw n}finally{r.closeStream(x.fd)}x.fd=null},isClosed(x){return x.fd===null},llseek(x,n,v){if(r.isClosed(x))throw new r.ErrnoError(8);if(!x.seekable||!x.stream_ops.llseek)throw new r.ErrnoError(70);if(v!=0&&v!=1&&v!=2)throw new r.ErrnoError(28);return x.position=x.stream_ops.llseek(x,n,v),x.ungotten=[],x.position},read(x,n,v,f,c){if(f<0||c<0)throw new r.ErrnoError(28);if(r.isClosed(x))throw new r.ErrnoError(8);if((x.flags&2097155)===1)throw new r.ErrnoError(8);if(r.isDir(x.node.mode))throw new r.ErrnoError(31);if(!x.stream_ops.read)throw new r.ErrnoError(28);var m=typeof c<"u";if(!m)c=x.position;else if(!x.seekable)throw new r.ErrnoError(70);var q=x.stream_ops.read(x,n,v,f,c);return m||(x.position+=q),q},write(x,n,v,f,c,m){if(f<0||c<0)throw new r.ErrnoError(28);if(r.isClosed(x))throw new r.ErrnoError(8);if((x.flags&2097155)===0)throw new r.ErrnoError(8);if(r.isDir(x.node.mode))throw new r.ErrnoError(31);if(!x.stream_ops.write)throw new r.ErrnoError(28);x.seekable&&x.flags&1024&&r.llseek(x,0,2);var q=typeof c<"u";if(!q)c=x.position;else if(!x.seekable)throw new r.ErrnoError(70);var S=x.stream_ops.write(x,n,v,f,c,m);return q||(x.position+=S),S},mmap(x,n,v,f,c){if((f&2)!==0&&(c&2)===0&&(x.flags&2097155)!==2)throw new r.ErrnoError(2);if((x.flags&2097155)===1)throw new r.ErrnoError(2);if(!x.stream_ops.mmap)throw new r.ErrnoError(43);if(!n)throw new r.ErrnoError(28);return x.stream_ops.mmap(x,n,v,f,c)},msync(x,n,v,f,c){return x.stream_ops.msync?x.stream_ops.msync(x,n,v,f,c):0},ioctl(x,n,v){if(!x.stream_ops.ioctl)throw new r.ErrnoError(59);return x.stream_ops.ioctl(x,n,v)},readFile(x,n={}){n.flags=n.flags||0,n.encoding=n.encoding||"binary",n.encoding!=="utf8"&&n.encoding!=="binary"&&f0(`Invalid encoding type "${n.encoding}"`);var v=r.open(x,n.flags),f=r.stat(x),c=f.size,m=new Uint8Array(c);return r.read(v,m,0,c,0),n.encoding==="utf8"&&(m=Tx(m)),r.close(v),m},writeFile(x,n,v={}){v.flags=v.flags||577;var f=r.open(x,v.flags,v.mode);n=gA(n),r.write(f,n,0,n.byteLength,void 0,v.canOwn),r.close(f)},cwd:()=>r.currentPath,chdir(x){var n=r.lookupPath(x,{follow:!0});if(n.node===null)throw new r.ErrnoError(44);if(!r.isDir(n.node.mode))throw new r.ErrnoError(54);var v=r.nodePermissions(n.node,"x");if(v)throw new r.ErrnoError(v);r.currentPath=n.path},createDefaultDirectories(){r.mkdir("/tmp"),r.mkdir("/home"),r.mkdir("/home/web_user")},createDefaultDevices(){r.mkdir("/dev"),r.registerDevice(r.makedev(1,3),{read:()=>0,write:(f,c,m,q,S)=>q,llseek:()=>0}),r.mkdev("/dev/null",r.makedev(1,3)),G0.register(r.makedev(5,0),G0.default_tty_ops),G0.register(r.makedev(6,0),G0.default_tty1_ops),r.mkdev("/dev/tty",r.makedev(5,0)),r.mkdev("/dev/tty1",r.makedev(6,0));var x=new Uint8Array(1024),n=0,v=()=>(n===0&&(bA(x),n=x.byteLength),x[--n]);r.createDevice("/dev","random",v),r.createDevice("/dev","urandom",v),r.mkdir("/dev/shm"),r.mkdir("/dev/shm/tmp")},createSpecialDirectories(){r.mkdir("/proc");var x=r.mkdir("/proc/self");r.mkdir("/proc/self/fd"),r.mount({mount(){var n=r.createNode(x,"fd",16895,73);return n.stream_ops={llseek:V.stream_ops.llseek},n.node_ops={lookup(v,f){var c=+f,m=r.getStreamChecked(c),q={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>m.path},id:c+1};return q.parent=q,q},readdir(){return Array.from(r.streams.entries()).filter(([v,f])=>f).map(([v,f])=>v.toString())}},n}},{},"/proc/self/fd")},createStandardStreams(x,n,v){x?r.createDevice("/dev","stdin",x):r.symlink("/dev/tty","/dev/stdin"),n?r.createDevice("/dev","stdout",null,n):r.symlink("/dev/tty","/dev/stdout"),v?r.createDevice("/dev","stderr",null,v):r.symlink("/dev/tty1","/dev/stderr");var f=r.open("/dev/stdin",0),c=r.open("/dev/stdout",1),m=r.open("/dev/stderr",1)},staticInit(){r.nameTable=new Array(4096),r.mount(V,{},"/"),r.createDefaultDirectories(),r.createDefaultDevices(),r.createSpecialDirectories(),r.filesystems={MEMFS:V,PROXYFS:B0}},init(x,n,v){r.initialized=!0,x??(x=a.stdin),n??(n=a.stdout),v??(v=a.stderr),r.createStandardStreams(x,n,v)},quit(){r.initialized=!1,D(0);for(var x of r.streams)x&&r.close(x)},findObject(x,n){var v=r.analyzePath(x,n);return v.exists?v.object:null},analyzePath(x,n){try{var v=r.lookupPath(x,{follow:!n});x=v.path}catch{}var f={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var v=r.lookupPath(x,{parent:!0});f.parentExists=!0,f.parentPath=v.path,f.parentObject=v.node,f.name=e0.basename(x),v=r.lookupPath(x,{follow:!n}),f.exists=!0,f.path=v.path,f.object=v.node,f.name=v.node.name,f.isRoot=v.path==="/"}catch(c){f.error=c.errno}return f},createPath(x,n,v,f){x=typeof x=="string"?x:r.getPath(x);for(var c=n.split("/").reverse();c.length;){var m=c.pop();if(m){var q=e0.join2(x,m);try{r.mkdir(q)}catch(S){if(S.errno!=20)throw S}x=q}}return q},createFile(x,n,v,f,c){var m=e0.join2(typeof x=="string"?x:r.getPath(x),n),q=Zx(f,c);return r.create(m,q)},createDataFile(x,n,v,f,c,m){var q=n;x&&(x=typeof x=="string"?x:r.getPath(x),q=n?e0.join2(x,n):x);var S=Zx(f,c),x0=r.create(q,S);if(v){v=gA(v),r.chmod(x0,S|146);var E0=r.open(x0,577);r.write(E0,v,0,v.length,0,m),r.close(E0),r.chmod(x0,S)}},createDevice(x,n,v,f){var c,m=e0.join2(typeof x=="string"?x:r.getPath(x),n),q=Zx(!!v,!!f);(c=r.createDevice).major??(c.major=64);var S=r.makedev(r.createDevice.major++,0);return r.registerDevice(S,{open(x0){x0.seekable=!1},close(x0){f?.buffer?.length&&f(10)},read(x0,E0,k0,b0,j0){for(var a0=0,I0=0;I0<b0;I0++){var Z0;try{Z0=v()}catch{throw new r.ErrnoError(29)}if(Z0===void 0&&a0===0)throw new r.ErrnoError(6);if(Z0==null)break;a0++,E0[k0+I0]=Z0}return a0&&(x0.node.atime=Date.now()),a0},write(x0,E0,k0,b0,j0){for(var a0=0;a0<b0;a0++)try{f(E0[k0+a0])}catch{throw new r.ErrnoError(29)}return b0&&(x0.node.mtime=x0.node.ctime=Date.now()),a0}}),r.mkdev(m,q,S)},forceLoadFile(x){if(x.isDevice||x.isFolder||x.link||x.contents)return!0;if(globalThis.XMLHttpRequest)f0("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");else try{x.contents=y(x.url)}catch{throw new r.ErrnoError(29)}},createLazyFile(x,n,v,f,c){class m{constructor(){N0(this,"lengthKnown",!1),N0(this,"chunks",[])}get(j0){if(!(j0>this.length-1||j0<0)){var a0=j0%this.chunkSize,I0=j0/this.chunkSize|0;return this.getter(I0)[a0]}}setDataGetter(j0){this.getter=j0}cacheLength(){var j0=new XMLHttpRequest;j0.open("HEAD",v,!1),j0.send(null),j0.status>=200&&j0.status<300||j0.status===304||f0("Couldn't load "+v+". Status: "+j0.status);var a0=Number(j0.getResponseHeader("Content-length")),I0,Z0=(I0=j0.getResponseHeader("Accept-Ranges"))&&I0==="bytes",Fx=(I0=j0.getResponseHeader("Content-Encoding"))&&I0==="gzip",Dx=1024*1024;Z0||(Dx=a0);var lx=(ux,FA)=>{ux>FA&&f0("invalid range ("+ux+", "+FA+") or no bytes requested!"),FA>a0-1&&f0("only "+a0+" bytes available! programmer error!");var H0=new XMLHttpRequest;return H0.open("GET",v,!1),a0!==Dx&&H0.setRequestHeader("Range","bytes="+ux+"-"+FA),H0.responseType="arraybuffer",H0.overrideMimeType&&H0.overrideMimeType("text/plain; charset=x-user-defined"),H0.send(null),H0.status>=200&&H0.status<300||H0.status===304||f0("Couldn't load "+v+". Status: "+H0.status),H0.response!==void 0?new Uint8Array(H0.response||[]):Yx(H0.responseText||"",!0)},GA=this;GA.setDataGetter(ux=>{var FA=ux*Dx,H0=(ux+1)*Dx-1;return H0=Math.min(H0,a0-1),typeof GA.chunks[ux]>"u"&&(GA.chunks[ux]=lx(FA,H0)),typeof GA.chunks[ux]>"u"&&f0("doXHR failed!"),GA.chunks[ux]}),(Fx||!a0)&&(Dx=a0=1,a0=this.getter(0).length,Dx=a0,P("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=a0,this._chunkSize=Dx,this.lengthKnown=!0}get length(){return this.lengthKnown||this.cacheLength(),this._length}get chunkSize(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}if(globalThis.XMLHttpRequest){l||f0("Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc");var q=new m,S={isDevice:!1,contents:q}}else var S={isDevice:!1,url:v};var x0=r.createFile(x,n,S,f,c);S.contents?x0.contents=S.contents:S.url&&(x0.contents=null,x0.url=S.url),Object.defineProperties(x0,{usedBytes:{get:function(){return this.contents.length}}});var E0={};for(let[b0,j0]of Object.entries(x0.stream_ops))E0[b0]=(...a0)=>(r.forceLoadFile(x0),j0(...a0));function k0(b0,j0,a0,I0,Z0){var Fx=b0.node.contents;if(Z0>=Fx.length)return 0;var Dx=Math.min(Fx.length-Z0,I0);if(Fx.slice)for(var lx=0;lx<Dx;lx++)j0[a0+lx]=Fx[Z0+lx];else for(var lx=0;lx<Dx;lx++)j0[a0+lx]=Fx.get(Z0+lx);return Dx}return E0.read=(b0,j0,a0,I0,Z0)=>(r.forceLoadFile(x0),k0(b0,j0,a0,I0,Z0)),E0.mmap=(b0,j0,a0,I0,Z0)=>{r.forceLoadFile(x0);var Fx=hA(j0);if(!Fx)throw new r.ErrnoError(48);return k0(b0,q0,Fx,j0,a0),{ptr:Fx,allocated:!0}},x0.stream_ops=E0,x0}},o0={currentUmask:18,calculateAt(x,n,v){if(e0.isAbs(n))return n;var f;if(x===-100)f=r.cwd();else{var c=o0.getStreamFromFD(x);f=c.path}if(n.length==0){if(!v)throw new r.ErrnoError(44);return f}return f+"/"+n},writeStat(x,n){A0[x>>2]=n.dev,A0[x+4>>2]=n.mode,A0[x+8>>2]=n.nlink,A0[x+12>>2]=n.uid,A0[x+16>>2]=n.gid,A0[x+20>>2]=n.rdev,h0[x+24>>3]=BigInt(n.size),m0[x+32>>2]=4096,m0[x+36>>2]=n.blocks;var v=n.atime.getTime(),f=n.mtime.getTime(),c=n.ctime.getTime();return h0[x+40>>3]=BigInt(Math.floor(v/1e3)),A0[x+48>>2]=v%1e3*1e3*1e3,h0[x+56>>3]=BigInt(Math.floor(f/1e3)),A0[x+64>>2]=f%1e3*1e3*1e3,h0[x+72>>3]=BigInt(Math.floor(c/1e3)),A0[x+80>>2]=c%1e3*1e3*1e3,h0[x+88>>3]=BigInt(n.ino),0},writeStatFs(x,n){A0[x+4>>2]=n.bsize,A0[x+60>>2]=n.bsize,h0[x+8>>3]=BigInt(n.blocks),h0[x+16>>3]=BigInt(n.bfree),h0[x+24>>3]=BigInt(n.bavail),h0[x+32>>3]=BigInt(n.files),h0[x+40>>3]=BigInt(n.ffree),A0[x+48>>2]=n.fsid,A0[x+64>>2]=n.flags,A0[x+56>>2]=n.namelen},doMsync(x,n,v,f,c){if(!r.isFile(n.node.mode))throw new r.ErrnoError(43);if(f&2)return 0;var m=Cx.slice(x,x+v);r.msync(n,m,c,v,f)},getStreamFromFD(x){var n=r.getStreamChecked(x);return n},varargs:void 0,getStr(x){var n=_x(x);return n}};function Tr(x,n,v,f){try{if(n=o0.getStr(n),n=o0.calculateAt(x,n),v&-8)return-28;var c=r.lookupPath(n,{follow:!0}),m=c.node;if(!m)return-44;var q="";return v&4&&(q+="r"),v&2&&(q+="w"),v&1&&(q+="x"),q&&r.nodePermissions(m,q)?-2:0}catch(S){if(typeof r>"u"||S.name!=="ErrnoError")throw S;return-S.errno}}var iA=()=>{var x=m0[+o0.varargs>>2];return o0.varargs+=4,x},Mx=iA;function Ir(x,n,v){o0.varargs=v;try{var f=o0.getStreamFromFD(x);switch(n){case 0:{var c=iA();if(c<0)return-28;for(;r.streams[c];)c++;var m;return m=r.dupStream(f,c),m.fd}case 1:case 2:return 0;case 3:return f.flags;case 4:{var c=iA(),q=289792;return f.flags=f.flags&~q|c&q,0}case 12:{var c=Mx(),S=0;return yx[c+S>>1]=2,0}case 13:case 14:return 0}return-28}catch(x0){if(typeof r>"u"||x0.name!=="ErrnoError")throw x0;return-x0.errno}}var $A=(x,n,v)=>mA(x,Cx,n,v);function Mr(x,n){try{if(n===0)return-28;var v=r.cwd(),f=Xx(v)+1;return n<f?-68:($A(v,x,n),f)}catch(c){if(typeof r>"u"||c.name!=="ErrnoError")throw c;return-c.errno}}function Sr(x,n,v){o0.varargs=v;try{var f=o0.getStreamFromFD(x);switch(n){case 21509:return f.tty?0:-59;case 21505:{if(!f.tty)return-59;if(f.tty.ops.ioctl_tcgets){var c=f.tty.ops.ioctl_tcgets(f),m=Mx();m0[m>>2]=c.c_iflag||0,m0[m+4>>2]=c.c_oflag||0,m0[m+8>>2]=c.c_cflag||0,m0[m+12>>2]=c.c_lflag||0;for(var q=0;q<32;q++)q0[m+q+17]=c.c_cc[q]||0;return 0}return 0}case 21510:case 21511:case 21512:return f.tty?0:-59;case 21506:case 21507:case 21508:{if(!f.tty)return-59;if(f.tty.ops.ioctl_tcsets){for(var m=Mx(),S=m0[m>>2],x0=m0[m+4>>2],E0=m0[m+8>>2],k0=m0[m+12>>2],b0=[],q=0;q<32;q++)b0.push(q0[m+q+17]);return f.tty.ops.ioctl_tcsets(f.tty,n,{c_iflag:S,c_oflag:x0,c_cflag:E0,c_lflag:k0,c_cc:b0})}return 0}case 21519:{if(!f.tty)return-59;var m=Mx();return m0[m>>2]=0,0}case 21520:return f.tty?-28:-59;case 21537:case 21531:{var m=Mx();return r.ioctl(f,n,m)}case 21523:{if(!f.tty)return-59;if(f.tty.ops.ioctl_tiocgwinsz){var j0=f.tty.ops.ioctl_tiocgwinsz(f.tty),m=Mx();yx[m>>1]=j0[0],yx[m+2>>1]=j0[1]}return 0}case 21524:return f.tty?0:-59;case 21515:return f.tty?0:-59;default:return-28}}catch(a0){if(typeof r>"u"||a0.name!=="ErrnoError")throw a0;return-a0.errno}}function Rr(x,n,v,f){o0.varargs=f;try{n=o0.getStr(n),n=o0.calculateAt(x,n);var c=f?iA():0;return v&64&&(c&=~o0.currentUmask),r.open(n,v,c).fd}catch(m){if(typeof r>"u"||m.name!=="ErrnoError")throw m;return-m.errno}}function Or(x,n,v,f){try{if(n=o0.getStr(n),n=o0.calculateAt(x,n),f<=0)return-28;var c=r.readlink(n),m=Math.min(f,Xx(c)),q=q0[v+m];return $A(c,v,f+1),q0[v+m]=q,m}catch(S){if(typeof r>"u"||S.name!=="ErrnoError")throw S;return-S.errno}}function Ur(x,n,v,f){try{return n=o0.getStr(n),f=o0.getStr(f),n=o0.calculateAt(x,n),f=o0.calculateAt(v,f),r.rename(n,f),0}catch(c){if(typeof r>"u"||c.name!=="ErrnoError")throw c;return-c.errno}}function Hr(x){try{return x=o0.getStr(x),r.rmdir(x),0}catch(n){if(typeof r>"u"||n.name!=="ErrnoError")throw n;return-n.errno}}function zr(x,n,v){try{if(n=o0.getStr(n),n=o0.calculateAt(x,n),!v)r.unlink(n);else if(v===512)r.rmdir(n);else return-28;return 0}catch(f){if(typeof r>"u"||f.name!=="ErrnoError")throw f;return-f.errno}}var Jr=()=>{throw new U},Kr=()=>performance.now(),Vr=()=>Date.now(),Wr=1,Xr=x=>x>=0&&x<=3,ZA=9007199254740992,Yr=-9007199254740992,QA=x=>x<Yr||x>ZA?NaN:Number(x);function Zr(x,n,v){if(n=QA(n),!Xr(x))return 28;var f;if(x===0)f=Vr();else if(Wr)f=Kr();else return 52;var c=Math.round(f*1e3*1e3);return h0[v>>3]=BigInt(c),0}var Qr=()=>2147483648,xr=(x,n)=>Math.ceil(x/n)*n,xe=x=>{var n=p0.buffer.byteLength,v=(x-n+65535)/65536|0;try{return p0.grow(v),z(),1}catch{}},Ae=x=>{var n=Cx.length;x>>>=0;var v=Qr();if(x>v)return!1;for(var f=1;f<=4;f*=2){var c=n*(1+.2/f);c=Math.min(c,x+100663296);var m=Math.min(v,xr(Math.max(x,c),65536)),q=xe(m);if(q)return!0}return!1};function re(x){try{var n=o0.getStreamFromFD(x);return r.close(n),0}catch(v){if(typeof r>"u"||v.name!=="ErrnoError")throw v;return v.errno}}var ee=(x,n,v,f)=>{for(var c=0,m=0;m<v;m++){var q=A0[n>>2],S=A0[n+4>>2];n+=8;var x0=r.read(x,q0,q,S,f);if(x0<0)return-1;if(c+=x0,x0<S)break;typeof f<"u"&&(f+=x0)}return c};function te(x,n,v,f){try{var c=o0.getStreamFromFD(x),m=ee(c,n,v);return A0[f>>2]=m,0}catch(q){if(typeof r>"u"||q.name!=="ErrnoError")throw q;return q.errno}}function Ar(x,n,v,f){n=QA(n);try{if(isNaN(n))return 22;var c=o0.getStreamFromFD(x);return r.llseek(c,n,v),h0[f>>3]=BigInt(c.position),c.getdents&&n===0&&v===0&&(c.getdents=null),0}catch(m){if(typeof r>"u"||m.name!=="ErrnoError")throw m;return m.errno}}var rr=(x,n,v,f)=>{for(var c=0,m=0;m<v;m++){var q=A0[n>>2],S=A0[n+4>>2];n+=8;var x0=r.write(x,q0,q,S,f);if(x0<0)return-1;if(c+=x0,x0<S)break;typeof f<"u"&&(f+=x0)}return c};function er(x,n,v,f){try{var c=o0.getStreamFromFD(x),m=rr(c,n,v);return A0[f>>2]=m,0}catch(q){if(typeof r>"u"||q.name!=="ErrnoError")throw q;return q.errno}}var ne=0,qA=()=>uA||ne>0,ie=x=>{g=x,qA()||(a.onExit?.(x),W=!0),k(x,new Vx(x))},Fe=(x,n)=>{g=x,qA()||t0(),ie(x)},se=x=>{if(x instanceof Vx||x=="unwind")return g;k(1,x)},xA=x=>O(x),ae=x=>{var n=Xx(x)+1,v=xA(n);return $A(x,v,n),v},PA=[],O0=x=>{var n=PA[x];return n||(PA[x]=n=D0.get(x)),n},NA=(...x)=>r.createPath(...x),AA=(...x)=>r.unlink(...x),A=(...x)=>r.createLazyFile(...x),o=(...x)=>r.createDevice(...x);if(r.createPreloadedFile=Gr,r.preloadFile=Qx,r.staticInit(),a.noExitRuntime&&(uA=a.noExitRuntime),a.preloadPlugins&&(_A=a.preloadPlugins),a.print&&(P=a.print),a.printErr&&(N=a.printErr),a.wasmBinary&&(M=a.wasmBinary),a.arguments&&(u=a.arguments),a.thisProgram&&(p=a.thisProgram),a.preInit)for(typeof a.preInit=="function"&&(a.preInit=[a.preInit]);a.preInit.length>0;)a.preInit.shift()();a.callMain=Le,a.addRunDependency=wA,a.removeRunDependency=yA,a.FS_preloadFile=Qx,a.FS_unlink=AA,a.FS_createPath=NA,a.FS_createDevice=o,a.FS=r,a.FS_createDataFile=kA,a.FS_createLazyFile=A,a.PROXYFS=B0;var B,D,j,h,L,O,Z,v0,g0,p0,D0;function s0(x){B=a._main=x.__main_argc_argv,D=x.fflush,j=x.__funcs_on_exit,h=x.setThrew,L=x._emscripten_stack_restore,O=x._emscripten_stack_alloc,Z=x.emscripten_stack_get_current,v0=p0=x.memory,g0=D0=x.__indirect_function_table}var $0={__assert_fail:Ix,__syscall_faccessat:Tr,__syscall_fcntl64:Ir,__syscall_getcwd:Mr,__syscall_ioctl:Sr,__syscall_openat:Rr,__syscall_readlinkat:Or,__syscall_renameat:Ur,__syscall_rmdir:Hr,__syscall_unlinkat:zr,_emscripten_throw_longjmp:Jr,clock_time_get:Zr,emscripten_resize_heap:Ae,fd_close:re,fd_read:te,fd_seek:Ar,fd_write:er,invoke_i:rA,invoke_ii:rx,invoke_iii:ex,invoke_iiid:yn,invoke_iiii:ix,invoke_iiiii:T0,invoke_iiiiii:wn,invoke_iijii:hn,invoke_v:U0,invoke_vi:gn,invoke_vii:xx,invoke_viii:kn,invoke_viiii:Sx,invoke_viiiii:mn};function U0(x){var n=V0();try{O0(x)()}catch(v){if(R0(n),!(v instanceof G))throw v;h(1,0)}}function xx(x,n,v){var f=V0();try{O0(x)(n,v)}catch(c){if(R0(f),!(c instanceof G))throw c;h(1,0)}}function rx(x,n){var v=V0();try{return O0(x)(n)}catch(f){if(R0(v),!(f instanceof G))throw f;h(1,0)}}function ex(x,n,v){var f=V0();try{return O0(x)(n,v)}catch(c){if(R0(f),!(c instanceof G))throw c;h(1,0)}}function rA(x){var n=V0();try{return O0(x)()}catch(v){if(R0(n),!(v instanceof G))throw v;h(1,0)}}function ix(x,n,v,f){var c=V0();try{return O0(x)(n,v,f)}catch(m){if(R0(c),!(m instanceof G))throw m;h(1,0)}}function Sx(x,n,v,f,c){var m=V0();try{O0(x)(n,v,f,c)}catch(q){if(R0(m),!(q instanceof G))throw q;h(1,0)}}function T0(x,n,v,f,c){var m=V0();try{return O0(x)(n,v,f,c)}catch(q){if(R0(m),!(q instanceof G))throw q;h(1,0)}}function mn(x,n,v,f,c,m){var q=V0();try{O0(x)(n,v,f,c,m)}catch(S){if(R0(q),!(S instanceof G))throw S;h(1,0)}}function hn(x,n,v,f,c){var m=V0();try{return O0(x)(n,v,f,c)}catch(q){if(R0(m),!(q instanceof G))throw q;h(1,0)}}function gn(x,n){var v=V0();try{O0(x)(n)}catch(f){if(R0(v),!(f instanceof G))throw f;h(1,0)}}function kn(x,n,v,f){var c=V0();try{O0(x)(n,v,f)}catch(m){if(R0(c),!(m instanceof G))throw m;h(1,0)}}function yn(x,n,v,f){var c=V0();try{return O0(x)(n,v,f)}catch(m){if(R0(c),!(m instanceof G))throw m;h(1,0)}}function wn(x,n,v,f,c,m){var q=V0();try{return O0(x)(n,v,f,c,m)}catch(S){if(R0(q),!(S instanceof G))throw S;h(1,0)}}function Le(x=[]){var n=B;x.unshift(p);var v=x.length,f=xA((v+1)*4),c=f;for(var m of x)A0[c>>2]=ae(m),c+=4;A0[c>>2]=0;try{var q=n(v,f);return Fe(q,!0),q}catch(S){return se(S)}}function oe(x=u){if(Y0>0){fx=oe;return}if(T(),Y0>0){fx=oe;return}function n(){if(a.calledRun=!0,!W){Q(),I?.(a),a.onRuntimeInitialized?.();var v=a.noInitialRun||!0;v||Le(x),n0()}}a.setStatus?(a.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>a.setStatus(""),1),n()},1)):n()}var LA;return LA=await Gx(),oe(),K?E=a:E=new Promise((x,n)=>{I=x,H=n}),E}})();typeof t=="object"&&typeof e=="object"?(e.exports=F,e.exports.default=F):typeof define=="function"&&define.amd&&define([],()=>F)}}),_F=Rt({"wasm/bin/pawndbg.js"(t,e){"use strict";var F=(()=>{var i=globalThis.document?.currentScript?.src;return async function(s={}){var E,a=s,C=!!globalThis.window,l=!!globalThis.WorkerGlobalScope,d=globalThis.process?.versions?.node&&globalThis.process?.type!="renderer",u=[],p="./this.program",k=(A,o)=>{throw o};typeof __filename<"u"?i=__filename:l&&(i=self.location.href);var w="",b,y;if(d){var $=require("fs");w=__dirname+"/",y=A=>{A=_(A)?new URL(A):A;var o=$.readFileSync(A);return o},b=async(A,o=!0)=>{A=_(A)?new URL(A):A;var B=$.readFileSync(A,o?void 0:"utf8");return B},process.argv.length>1&&(p=process.argv[1].replace(/\\/g,"/")),u=process.argv.slice(2),k=(A,o)=>{throw process.exitCode=A,o}}else if(C||l){try{w=new URL(".",i).href}catch{}l&&(y=A=>{var o=new XMLHttpRequest;return o.open("GET",A,!1),o.responseType="arraybuffer",o.send(null),new Uint8Array(o.response)}),b=async A=>{if(_(A))return new Promise((B,D)=>{var j=new XMLHttpRequest;j.open("GET",A,!0),j.responseType="arraybuffer",j.onload=()=>{if(j.status==200||j.status==0&&j.response){B(j.response);return}D(j.status)},j.onerror=D,j.send(null)});var o=await fetch(A,{credentials:"same-origin"});if(o.ok)return o.arrayBuffer();throw new Error(o.status+" : "+o.url)}}var P=console.log.bind(console),N=console.error.bind(console),M,W=!1,g,_=A=>A.startsWith("file://");class G{}class U extends G{}function J(A){for(var o=0,B=A.length,D=new Uint8Array(B),j;o<B;++o)j=A.charCodeAt(o),D[o]=~j>>8&j;return D}var I,H,K=!1,Y=!1;function z(){var A=xA.buffer;q0=new Int8Array(A),yx=new Int16Array(A),Cx=new Uint8Array(A),gr=new Uint16Array(A),m0=new Int32Array(A),A0=new Uint32Array(A),mr=new Float32Array(A),hr=new Float64Array(A),h0=new BigInt64Array(A),kr=new BigUint64Array(A)}function T(){if(a.preRun)for(typeof a.preRun=="function"&&(a.preRun=[a.preRun]);a.preRun.length;)wr(a.preRun.shift());dA(pA)}function Q(){K=!0,!a.noFSInit&&!r.initialized&&r.init(),G0.init(),AA.__wasm_call_ctors(),r.ignorePermissions=!1}function r0(){}function t0(){rr(),r.quit(),G0.shutdown(),Y=!0}function n0(){if(a.postRun)for(typeof a.postRun=="function"&&(a.postRun=[a.postRun]);a.postRun.length;)yr(a.postRun.shift());dA(jA)}function f0(A){a.onAbort?.(A),A=`Aborted(${A})`,N(A),W=!0,A+=". Build with -sASSERTIONS for more info.";var o=new WebAssembly.RuntimeError(A);throw H?.(o),o}var l0;function L0(){return J(`\0asm\0\0\0\xB4\`\x7F\x7F\`\x7F\0\`\x7F\x7F\x7F\x7F\`\x7F\x7F\x7F\`\x7F\x7F\x7F\0\`\x7F~~~~\0\`\x7F\x7F\x7F\x7F\x7F\`\x7F\x7F\0\`\x7F~\x7F~\`\x7F\x7F\x7F\x7F\0\`\0\0\`\0\x7F\`\x7F~~\x7F\0\`\x7F|\x7F\x7F\x7F\x7F\x7F\`\x7F~\x7F\x7F\x7F\`\x7F\x7F|\0\`\x7F~\0\`\x7F|\`\x7F~~~\0\`\x7F~\`|\x7F|\`\x7F\x7F\x7F\x7F\x7F\x7F\x7F\`~\x7F\x7F\`\x7F\x7F\x7F\x7F\x7F\0\`\x7F\x7F~\0\`~~~~\x7F\`~~~\x7F\`\x7F|\0\xFD env\r__assert_fail\0 env__syscall_openat\0env__syscall_fcntl64\0env__syscall_ioctl\0wasi_snapshot_preview1\bfd_write\0wasi_snapshot_preview1\x07fd_read\0wasi_snapshot_preview1\bfd_close\0\0wasi_snapshot_preview1\x07fd_seek\0envemscripten_resize_heap\0\0VU
|
|
1161
|
+
\0A\xC0\x81\v\v0\xC0\0\0\x80!\0\`(`)}function S0(x){return x}async function Cx(x){return x}async function Tx(x,n){try{var v=await Cx(x),f=await WebAssembly.instantiate(v,n);return f}catch(c){N(`failed to asynchronously prepare wasm: ${c}`),i0(c)}}async function Ix(x,n,v){return Tx(n,v)}function Mx(){var x={env:q0,wasi_snapshot_preview1:q0};return x}async function Q0(){function x(m,$){return NA=m.exports,s0(NA),Z(),NA}function n(m){return x(m.instance)}var v=Mx();if(s.instantiateWasm)return new Promise((m,$)=>{s.instantiateWasm(v,(R,x0)=>{m(x(R,x0))})});d0??(d0=b0());var f=await Ix(S,d0,v),c=n(f);return c}class wx{constructor(n){N0(this,"name","ExitStatus"),this.message=`Program terminated with exit(${n})`,this.status=n}}var _x,h0,g0,P0,mr,hr,gr,r0,kr,fx,dA=x=>{for(;x.length>0;)x.shift()(s)},jA=[],yr=x=>jA.push(x),pA=[],wr=x=>pA.push(x),uA=!1,O0=x=>G(x),V0=()=>Q(),$x=globalThis.TextDecoder&&new TextDecoder,nA=(x,n,v,f)=>{var c=n+v;if(f)return c;for(;x[n]&&!(n>=c);)++n;return n},Sx=(x,n=0,v,f)=>{var c=nA(x,n,v,f);if(c-n>16&&x.buffer&&$x)return $x.decode(x.subarray(n,c));for(var m="";n<c;){var $=x[n++];if(!($&128)){m+=String.fromCharCode($);continue}var R=x[n++]&63;if(($&224)==192){m+=String.fromCharCode(($&31)<<6|R);continue}var x0=x[n++]&63;if(($&240)==224?$=($&15)<<12|R<<6|x0:$=($&7)<<18|R<<12|x0<<6|x[n++]&63,$<65536)m+=String.fromCharCode($);else{var B0=$-65536;m+=String.fromCharCode(55296|B0>>10,56320|B0&1023)}}return m},qx=(x,n,v)=>x?Sx(fx,x,n,v):"",Rx=(x,n,v,f)=>i0(`Assertion failed: ${qx(x)}, at: `+[n?qx(n):"unknown filename",v,f?qx(f):"unknown function"]),t0={isAbs:x=>x.charAt(0)==="/",splitPath:x=>{var n=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return n.exec(x).slice(1)},normalizeArray:(x,n)=>{for(var v=0,f=x.length-1;f>=0;f--){var c=x[f];c==="."?x.splice(f,1):c===".."?(x.splice(f,1),v++):v&&(x.splice(f,1),v--)}if(n)for(;v;v--)x.unshift("..");return x},normalize:x=>{var n=t0.isAbs(x),v=x.slice(-1)==="/";return x=t0.normalizeArray(x.split("/").filter(f=>!!f),!n).join("/"),!x&&!n&&(x="."),x&&v&&(x+="/"),(n?"/":"")+x},dirname:x=>{var n=t0.splitPath(x),v=n[0],f=n[1];return!v&&!f?".":(f&&(f=f.slice(0,-1)),v+f)},basename:x=>x&&x.match(/([^\/]+|\/)\/*$/)[1],join:(...x)=>t0.normalize(x.join("/")),join2:(x,n)=>t0.normalize(x+"/"+n)},_r=()=>{if(d){var x=require("crypto");return n=>x.randomFillSync(n)}return n=>(crypto.getRandomValues(n),0)},bA=x=>(bA=_r())(x),Ax={resolve:(...x)=>{for(var n="",v=!1,f=x.length-1;f>=-1&&!v;f--){var c=f>=0?x[f]:r.cwd();if(typeof c!="string")throw new TypeError("Arguments to path.resolve must be strings");if(!c)return"";n=c+"/"+n,v=t0.isAbs(c)}return n=t0.normalizeArray(n.split("/").filter(m=>!!m),!v).join("/"),(v?"/":"")+n||"."},relative:(x,n)=>{x=Ax.resolve(x).slice(1),n=Ax.resolve(n).slice(1);function v(B0){for(var w0=0;w0<B0.length&&B0[w0]==="";w0++);for(var m0=B0.length-1;m0>=0&&B0[m0]==="";m0--);return w0>m0?[]:B0.slice(w0,m0-w0+1)}for(var f=v(x.split("/")),c=v(n.split("/")),m=Math.min(f.length,c.length),$=m,R=0;R<m;R++)if(f[R]!==c[R]){$=R;break}for(var x0=[],R=$;R<f.length;R++)x0.push("..");return x0=x0.concat(c.slice($)),x0.join("/")}},Wx=[],Xx=x=>{for(var n=0,v=0;v<x.length;++v){var f=x.charCodeAt(v);f<=127?n++:f<=2047?n+=2:f>=55296&&f<=57343?(n+=4,++v):n+=3}return n},mA=(x,n,v,f)=>{if(!(f>0))return 0;for(var c=v,m=v+f-1,$=0;$<x.length;++$){var R=x.codePointAt($);if(R<=127){if(v>=m)break;n[v++]=R}else if(R<=2047){if(v+1>=m)break;n[v++]=192|R>>6,n[v++]=128|R&63}else if(R<=65535){if(v+2>=m)break;n[v++]=224|R>>12,n[v++]=128|R>>6&63,n[v++]=128|R&63}else{if(v+3>=m)break;n[v++]=240|R>>18,n[v++]=128|R>>12&63,n[v++]=128|R>>6&63,n[v++]=128|R&63,$++}}return n[v]=0,v-c},Yx=(x,n,v)=>{var f=v>0?v:Xx(x)+1,c=new Array(f),m=mA(x,c,0,c.length);return n&&(c.length=m),c},$r=()=>{if(!Wx.length){var x=null;if(d){var n=256,v=Buffer.alloc(n),f=0,c=process.stdin.fd;try{f=_.readSync(c,v,0,n)}catch(m){if(m.toString().includes("EOF"))f=0;else throw m}f>0&&(x=v.slice(0,f).toString("utf-8"))}else globalThis.window?.prompt&&(x=window.prompt("Input: "),x!==null&&(x+=`
|
|
1162
|
+
`));if(!x)return null;Wx=Yx(x,!0)}return Wx.shift()},T0={ttys:[],init(){},shutdown(){},register(x,n){T0.ttys[x]={input:[],output:[],ops:n},r.registerDevice(x,T0.stream_ops)},stream_ops:{open(x){var n=T0.ttys[x.node.rdev];if(!n)throw new r.ErrnoError(43);x.tty=n,x.seekable=!1},close(x){x.tty.ops.fsync(x.tty)},fsync(x){x.tty.ops.fsync(x.tty)},read(x,n,v,f,c){if(!x.tty||!x.tty.ops.get_char)throw new r.ErrnoError(60);for(var m=0,$=0;$<f;$++){var R;try{R=x.tty.ops.get_char(x.tty)}catch{throw new r.ErrnoError(29)}if(R===void 0&&m===0)throw new r.ErrnoError(6);if(R==null)break;m++,n[v+$]=R}return m&&(x.node.atime=Date.now()),m},write(x,n,v,f,c){if(!x.tty||!x.tty.ops.put_char)throw new r.ErrnoError(60);try{for(var m=0;m<f;m++)x.tty.ops.put_char(x.tty,n[v+m])}catch{throw new r.ErrnoError(29)}return f&&(x.node.mtime=x.node.ctime=Date.now()),m}},default_tty_ops:{get_char(x){return $r()},put_char(x,n){n===null||n===10?(q(Sx(x.output)),x.output=[]):n!=0&&x.output.push(n)},fsync(x){x.output?.length>0&&(q(Sx(x.output)),x.output=[])},ioctl_tcgets(x){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(x,n,v){return 0},ioctl_tiocgwinsz(x){return[24,80]}},default_tty1_ops:{put_char(x,n){n===null||n===10?(N(Sx(x.output)),x.output=[]):n!=0&&x.output.push(n)},fsync(x){x.output?.length>0&&(N(Sx(x.output)),x.output=[])}}},hA=x=>{i0()},K={ops_table:null,mount(x){return K.createNode(null,"/",16895,0)},createNode(x,n,v,f){if(r.isBlkdev(v)||r.isFIFO(v))throw new r.ErrnoError(63);K.ops_table||(K.ops_table={dir:{node:{getattr:K.node_ops.getattr,setattr:K.node_ops.setattr,lookup:K.node_ops.lookup,mknod:K.node_ops.mknod,rename:K.node_ops.rename,unlink:K.node_ops.unlink,rmdir:K.node_ops.rmdir,readdir:K.node_ops.readdir,symlink:K.node_ops.symlink},stream:{llseek:K.stream_ops.llseek}},file:{node:{getattr:K.node_ops.getattr,setattr:K.node_ops.setattr},stream:{llseek:K.stream_ops.llseek,read:K.stream_ops.read,write:K.stream_ops.write,mmap:K.stream_ops.mmap,msync:K.stream_ops.msync}},link:{node:{getattr:K.node_ops.getattr,setattr:K.node_ops.setattr,readlink:K.node_ops.readlink},stream:{}},chrdev:{node:{getattr:K.node_ops.getattr,setattr:K.node_ops.setattr},stream:r.chrdev_stream_ops}});var c=r.createNode(x,n,v,f);return r.isDir(c.mode)?(c.node_ops=K.ops_table.dir.node,c.stream_ops=K.ops_table.dir.stream,c.contents={}):r.isFile(c.mode)?(c.node_ops=K.ops_table.file.node,c.stream_ops=K.ops_table.file.stream,c.usedBytes=0,c.contents=K.emptyFileContents??(K.emptyFileContents=new Uint8Array(0))):r.isLink(c.mode)?(c.node_ops=K.ops_table.link.node,c.stream_ops=K.ops_table.link.stream):r.isChrdev(c.mode)&&(c.node_ops=K.ops_table.chrdev.node,c.stream_ops=K.ops_table.chrdev.stream),c.atime=c.mtime=c.ctime=Date.now(),x&&(x.contents[n]=c,x.atime=x.mtime=x.ctime=c.atime),c},getFileDataAsTypedArray(x){return x.contents.subarray(0,x.usedBytes)},expandFileStorage(x,n){var v=x.contents.length;if(!(v>=n)){var f=1024*1024;n=Math.max(n,v*(v<f?2:1.125)>>>0),v&&(n=Math.max(n,256));var c=K.getFileDataAsTypedArray(x);x.contents=new Uint8Array(n),x.contents.set(c)}},resizeFileStorage(x,n){if(x.usedBytes!=n){var v=x.contents;x.contents=new Uint8Array(n),x.contents.set(v.subarray(0,Math.min(n,x.usedBytes))),x.usedBytes=n}},node_ops:{getattr(x){var n={};return n.dev=r.isChrdev(x.mode)?x.id:1,n.ino=x.id,n.mode=x.mode,n.nlink=1,n.uid=0,n.gid=0,n.rdev=x.rdev,r.isDir(x.mode)?n.size=4096:r.isFile(x.mode)?n.size=x.usedBytes:r.isLink(x.mode)?n.size=x.link.length:n.size=0,n.atime=new Date(x.atime),n.mtime=new Date(x.mtime),n.ctime=new Date(x.ctime),n.blksize=4096,n.blocks=Math.ceil(n.size/n.blksize),n},setattr(x,n){for(let v of["mode","atime","mtime","ctime"])n[v]!=null&&(x[v]=n[v]);n.size!==void 0&&K.resizeFileStorage(x,n.size)},lookup(x,n){throw K.doesNotExistError||(K.doesNotExistError=new r.ErrnoError(44),K.doesNotExistError.stack="<generic error, no stack>"),K.doesNotExistError},mknod(x,n,v,f){return K.createNode(x,n,v,f)},rename(x,n,v){var f;try{f=r.lookupNode(n,v)}catch{}if(f){if(r.isDir(x.mode))for(var c in f.contents)throw new r.ErrnoError(55);r.hashRemoveNode(f)}delete x.parent.contents[x.name],n.contents[v]=x,x.name=v,n.ctime=n.mtime=x.parent.ctime=x.parent.mtime=Date.now()},unlink(x,n){delete x.contents[n],x.ctime=x.mtime=Date.now()},rmdir(x,n){var v=r.lookupNode(x,n);for(var f in v.contents)throw new r.ErrnoError(55);delete x.contents[n],x.ctime=x.mtime=Date.now()},readdir(x){return[".","..",...Object.keys(x.contents)]},symlink(x,n,v){var f=K.createNode(x,n,41471,0);return f.link=v,f},readlink(x){if(!r.isLink(x.mode))throw new r.ErrnoError(28);return x.link}},stream_ops:{read(x,n,v,f,c){var m=x.node.contents;if(c>=x.node.usedBytes)return 0;var $=Math.min(x.node.usedBytes-c,f);return n.set(m.subarray(c,c+$),v),$},write(x,n,v,f,c,m){if(n.buffer===P0.buffer&&(m=!1),!f)return 0;var $=x.node;return $.mtime=$.ctime=Date.now(),m?($.contents=n.subarray(v,v+f),$.usedBytes=f):$.usedBytes===0&&c===0?($.contents=n.slice(v,v+f),$.usedBytes=f):(K.expandFileStorage($,c+f),$.contents.set(n.subarray(v,v+f),c),$.usedBytes=Math.max($.usedBytes,c+f)),f},llseek(x,n,v){var f=n;if(v===1?f+=x.position:v===2&&r.isFile(x.node.mode)&&(f+=x.node.usedBytes),f<0)throw new r.ErrnoError(28);return f},mmap(x,n,v,f,c){if(!r.isFile(x.node.mode))throw new r.ErrnoError(43);var m,$,R=x.node.contents;if(!(c&2)&&R.buffer===P0.buffer)$=!1,m=R.byteOffset;else{if($=!0,m=hA(n),!m)throw new r.ErrnoError(48);R&&((v>0||v+n<R.length)&&(R.subarray?R=R.subarray(v,v+n):R=Array.prototype.slice.call(R,v,v+n)),P0.set(R,m))}return{ptr:m,allocated:$}},msync(x,n,v,f,c){return K.stream_ops.write(x,n,0,f,v,!1),0}}},qr=x=>{if(typeof x!="string")return x;var n={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},v=n[x];if(typeof v>"u")throw new Error(`Unknown file open mode: ${x}`);return v},gA=x=>(typeof x=="string"&&(x=Yx(x,!0)),x.subarray||(x=new Uint8Array(x)),x),Zx=(x,n)=>{var v=0;return x&&(v|=365),n&&(v|=146),v},l0={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135},C0={mount(x){return C0.createNode(null,"/",x.opts.fs.lstat(x.opts.root).mode,0)},createNode(x,n,v,f){if(!r.isDir(v)&&!r.isFile(v)&&!r.isLink(v))throw new r.ErrnoError(l0.EINVAL);var c=r.createNode(x,n,v);return c.node_ops=C0.node_ops,c.stream_ops=C0.stream_ops,c},realPath(x){for(var n=[];x.parent!==x;)n.push(x.name),x=x.parent;return n.push(x.mount.opts.root),n.reverse(),t0.join(...n)},node_ops:{getattr(x){var n=C0.realPath(x),v;try{v=x.mount.opts.fs.lstat(n)}catch(f){throw f.code?new r.ErrnoError(l0[f.code]):f}return{dev:v.dev,ino:v.ino,mode:v.mode,nlink:v.nlink,uid:v.uid,gid:v.gid,rdev:v.rdev,size:v.size,atime:v.atime,mtime:v.mtime,ctime:v.ctime,blksize:v.blksize,blocks:v.blocks}},setattr(x,n){var v=C0.realPath(x);try{if(n.mode!==void 0&&(x.mount.opts.fs.chmod(v,n.mode),x.mode=n.mode),n.atime||n.mtime){var f=new Date(n.atime||n.mtime),c=new Date(n.mtime||n.atime);x.mount.opts.fs.utime(v,f,c)}n.size!==void 0&&x.mount.opts.fs.truncate(v,n.size)}catch(m){throw m.code?new r.ErrnoError(l0[m.code]):m}},lookup(x,n){try{var v=t0.join2(C0.realPath(x),n),f=x.mount.opts.fs.lstat(v).mode,c=C0.createNode(x,n,f);return c}catch(m){throw m.code?new r.ErrnoError(l0[m.code]):m}},mknod(x,n,v,f){var c=C0.createNode(x,n,v,f),m=C0.realPath(c);try{r.isDir(c.mode)?c.mount.opts.fs.mkdir(m,c.mode):c.mount.opts.fs.writeFile(m,"",{mode:c.mode})}catch($){throw $.code?new r.ErrnoError(l0[$.code]):$}return c},rename(x,n,v){var f=C0.realPath(x),c=t0.join2(C0.realPath(n),v);try{x.mount.opts.fs.rename(f,c),x.name=v}catch(m){throw m.code?new r.ErrnoError(l0[m.code]):m}},unlink(x,n){var v=t0.join2(C0.realPath(x),n);try{x.mount.opts.fs.unlink(v)}catch(f){throw f.code?new r.ErrnoError(l0[f.code]):f}},rmdir(x,n){var v=t0.join2(C0.realPath(x),n);try{x.mount.opts.fs.rmdir(v)}catch(f){throw f.code?new r.ErrnoError(l0[f.code]):f}},readdir(x){var n=C0.realPath(x);try{return x.mount.opts.fs.readdir(n)}catch(v){throw v.code?new r.ErrnoError(l0[v.code]):v}},symlink(x,n,v){var f=t0.join2(C0.realPath(x),n);try{x.mount.opts.fs.symlink(v,f)}catch(c){throw c.code?new r.ErrnoError(l0[c.code]):c}},readlink(x){var n=C0.realPath(x);try{return x.mount.opts.fs.readlink(n)}catch(v){throw v.code?new r.ErrnoError(l0[v.code]):v}}},stream_ops:{open(x){var n=C0.realPath(x.node);try{x.nfd=x.node.mount.opts.fs.open(n,x.flags)}catch(v){throw v.code?new r.ErrnoError(l0[v.code]):v}},close(x){try{x.node.mount.opts.fs.close(x.nfd)}catch(n){throw n.code?new r.ErrnoError(l0[n.code]):n}},read(x,n,v,f,c){try{return x.node.mount.opts.fs.read(x.nfd,n,v,f,c)}catch(m){throw m.code?new r.ErrnoError(l0[m.code]):m}},write(x,n,v,f,c){try{return x.node.mount.opts.fs.write(x.nfd,n,v,f,c)}catch(m){throw m.code?new r.ErrnoError(l0[m.code]):m}},llseek(x,n,v){var f=n;if(v===1)f+=x.position;else if(v===2&&r.isFile(x.node.mode))try{var c=x.node.node_ops.getattr(x.node);f+=c.size}catch(m){throw new r.ErrnoError(l0[m.code])}if(f<0)throw new r.ErrnoError(l0.EINVAL);return f}}},Pr=async x=>{var n=await b(x);return new Uint8Array(n)},kA=(...x)=>r.createDataFile(...x),Lr=x=>x,Y0=0,Dx=null,yA=x=>{if(Y0--,s.monitorRunDependencies?.(Y0),Y0==0&&Dx){var n=Dx;Dx=null,n()}},wA=x=>{Y0++,s.monitorRunDependencies?.(Y0)},_A=[],Nr=async(x,n)=>{typeof Browser<"u"&&Browser.init();for(var v of _A)if(v.canHandle(n))return v.handle(x,n);return x},Qx=async(x,n,v,f,c,m,$,R)=>{var x0=n?Ax.resolve(t0.join2(x,n)):x,B0=Lr(`cp ${x0}`);wA(B0);try{var w0=v;typeof v=="string"&&(w0=await Pr(v)),w0=await Nr(w0,x0),R?.(),m||kA(x,n,w0,f,c,$)}finally{yA(B0)}},Gr=(x,n,v,f,c,m,$,R,x0,B0)=>{Qx(x,n,v,f,c,R,x0,B0).then(m).catch($)},r={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,filesystems:null,syncFSRequests:0,ErrnoError:class{constructor(x){N0(this,"name","ErrnoError"),this.errno=x}},FSStream:class{constructor(){N0(this,"shared",{})}get object(){return this.node}set object(x){this.node=x}get isRead(){return(this.flags&2097155)!==1}get isWrite(){return(this.flags&2097155)!==0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(x){this.shared.flags=x}get position(){return this.shared.position}set position(x){this.shared.position=x}},FSNode:class{constructor(x,n,v,f){N0(this,"node_ops",{}),N0(this,"stream_ops",{}),N0(this,"readMode",365),N0(this,"writeMode",146),N0(this,"mounted",null),x||(x=this),this.parent=x,this.mount=x.mount,this.id=r.nextInode++,this.name=n,this.mode=v,this.rdev=f,this.atime=this.mtime=this.ctime=Date.now()}get read(){return(this.mode&this.readMode)===this.readMode}set read(x){x?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(x){x?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return r.isDir(this.mode)}get isDevice(){return r.isChrdev(this.mode)}},lookupPath(x,n={}){if(!x)throw new r.ErrnoError(44);n.follow_mount??(n.follow_mount=!0),t0.isAbs(x)||(x=r.cwd()+"/"+x);x:for(var v=0;v<40;v++){for(var f=x.split("/").filter(B0=>!!B0),c=r.root,m="/",$=0;$<f.length;$++){var R=$===f.length-1;if(R&&n.parent)break;if(f[$]!=="."){if(f[$]===".."){if(m=t0.dirname(m),r.isRoot(c)){x=m+"/"+f.slice($+1).join("/"),v--;continue x}else c=c.parent;continue}m=t0.join2(m,f[$]);try{c=r.lookupNode(c,f[$])}catch(B0){if(B0?.errno===44&&R&&n.noent_okay)return{path:m};throw B0}if(r.isMountpoint(c)&&(!R||n.follow_mount)&&(c=c.mounted.root),r.isLink(c.mode)&&(!R||n.follow)){if(!c.node_ops.readlink)throw new r.ErrnoError(52);var x0=c.node_ops.readlink(c);t0.isAbs(x0)||(x0=t0.dirname(m)+"/"+x0),x=x0+"/"+f.slice($+1).join("/");continue x}}}return{path:m,node:c}}throw new r.ErrnoError(32)},getPath(x){for(var n;;){if(r.isRoot(x)){var v=x.mount.mountpoint;return n?v[v.length-1]!=="/"?`${v}/${n}`:v+n:v}n=n?`${x.name}/${n}`:x.name,x=x.parent}},hashName(x,n){for(var v=0,f=0;f<n.length;f++)v=(v<<5)-v+n.charCodeAt(f)|0;return(x+v>>>0)%r.nameTable.length},hashAddNode(x){var n=r.hashName(x.parent.id,x.name);x.name_next=r.nameTable[n],r.nameTable[n]=x},hashRemoveNode(x){var n=r.hashName(x.parent.id,x.name);if(r.nameTable[n]===x)r.nameTable[n]=x.name_next;else for(var v=r.nameTable[n];v;){if(v.name_next===x){v.name_next=x.name_next;break}v=v.name_next}},lookupNode(x,n){var v=r.mayLookup(x);if(v)throw new r.ErrnoError(v);for(var f=r.hashName(x.id,n),c=r.nameTable[f];c;c=c.name_next){var m=c.name;if(c.parent.id===x.id&&m===n)return c}return r.lookup(x,n)},createNode(x,n,v,f){var c=new r.FSNode(x,n,v,f);return r.hashAddNode(c),c},destroyNode(x){r.hashRemoveNode(x)},isRoot(x){return x===x.parent},isMountpoint(x){return!!x.mounted},isFile(x){return(x&61440)===32768},isDir(x){return(x&61440)===16384},isLink(x){return(x&61440)===40960},isChrdev(x){return(x&61440)===8192},isBlkdev(x){return(x&61440)===24576},isFIFO(x){return(x&61440)===4096},isSocket(x){return(x&49152)===49152},flagsToPermissionString(x){var n=["r","w","rw"][x&3];return x&512&&(n+="w"),n},nodePermissions(x,n){return r.ignorePermissions?0:n.includes("r")&&!(x.mode&292)||n.includes("w")&&!(x.mode&146)||n.includes("x")&&!(x.mode&73)?2:0},mayLookup(x){if(!r.isDir(x.mode))return 54;var n=r.nodePermissions(x,"x");return n||(x.node_ops.lookup?0:2)},mayCreate(x,n){if(!r.isDir(x.mode))return 54;try{var v=r.lookupNode(x,n);return 20}catch{}return r.nodePermissions(x,"wx")},mayDelete(x,n,v){var f;try{f=r.lookupNode(x,n)}catch(m){return m.errno}var c=r.nodePermissions(x,"wx");if(c)return c;if(v){if(!r.isDir(f.mode))return 54;if(r.isRoot(f)||r.getPath(f)===r.cwd())return 10}else if(r.isDir(f.mode))return 31;return 0},mayOpen(x,n){if(!x)return 44;if(r.isLink(x.mode))return 32;var v=r.flagsToPermissionString(n);return r.isDir(x.mode)&&(v!=="r"||n&576)?31:r.nodePermissions(x,v)},checkOpExists(x,n){if(!x)throw new r.ErrnoError(n);return x},MAX_OPEN_FDS:4096,nextfd(){for(var x=0;x<=r.MAX_OPEN_FDS;x++)if(!r.streams[x])return x;throw new r.ErrnoError(33)},getStreamChecked(x){var n=r.getStream(x);if(!n)throw new r.ErrnoError(8);return n},getStream:x=>r.streams[x],createStream(x,n=-1){return x=Object.assign(new r.FSStream,x),n==-1&&(n=r.nextfd()),x.fd=n,r.streams[n]=x,x},closeStream(x){r.streams[x]=null},dupStream(x,n=-1){var v=r.createStream(x,n);return v.stream_ops?.dup?.(v),v},doSetAttr(x,n,v){var f=x?.stream_ops.setattr,c=f?x:n;f??(f=n.node_ops.setattr),r.checkOpExists(f,63);try{f(c,v)}catch(m){throw m instanceof RangeError?new r.ErrnoError(22):m}},chrdev_stream_ops:{open(x){var n=r.getDevice(x.node.rdev);x.stream_ops=n.stream_ops,x.stream_ops.open?.(x)},llseek(){throw new r.ErrnoError(70)}},major:x=>x>>8,minor:x=>x&255,makedev:(x,n)=>x<<8|n,registerDevice(x,n){r.devices[x]={stream_ops:n}},getDevice:x=>r.devices[x],getMounts(x){for(var n=[],v=[x];v.length;){var f=v.pop();n.push(f),v.push(...f.mounts)}return n},syncfs(x,n){typeof x=="function"&&(n=x,x=!1),r.syncFSRequests++,r.syncFSRequests>1&&N(`warning: ${r.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var v=r.getMounts(r.root.mount),f=0;function c(R){return r.syncFSRequests--,n(R)}function m(R){if(R)return m.errored?void 0:(m.errored=!0,c(R));++f>=v.length&&c(null)}for(var $ of v)$.type.syncfs?$.type.syncfs($,x,m):m(null)},mount(x,n,v){var f=v==="/",c=!v,m;if(f&&r.root)throw new r.ErrnoError(10);if(!f&&!c){var $=r.lookupPath(v,{follow_mount:!1});if(v=$.path,m=$.node,r.isMountpoint(m))throw new r.ErrnoError(10);if(!r.isDir(m.mode))throw new r.ErrnoError(54)}var R={type:x,opts:n,mountpoint:v,mounts:[]},x0=x.mount(R);return x0.mount=R,R.root=x0,f?r.root=x0:m&&(m.mounted=R,m.mount&&m.mount.mounts.push(R)),x0},unmount(x){var n=r.lookupPath(x,{follow_mount:!1});if(!r.isMountpoint(n.node))throw new r.ErrnoError(28);var v=n.node,f=v.mounted,c=r.getMounts(f);for(var[m,$]of Object.entries(r.nameTable))for(;$;){var R=$.name_next;c.includes($.mount)&&r.destroyNode($),$=R}v.mounted=null;var x0=v.mount.mounts.indexOf(f);v.mount.mounts.splice(x0,1)},lookup(x,n){return x.node_ops.lookup(x,n)},mknod(x,n,v){var f=r.lookupPath(x,{parent:!0}),c=f.node,m=t0.basename(x);if(!m)throw new r.ErrnoError(28);if(m==="."||m==="..")throw new r.ErrnoError(20);var $=r.mayCreate(c,m);if($)throw new r.ErrnoError($);if(!c.node_ops.mknod)throw new r.ErrnoError(63);return c.node_ops.mknod(c,m,n,v)},statfs(x){return r.statfsNode(r.lookupPath(x,{follow:!0}).node)},statfsStream(x){return r.statfsNode(x.node)},statfsNode(x){var n={bsize:4096,frsize:4096,blocks:1e6,bfree:5e5,bavail:5e5,files:r.nextInode,ffree:r.nextInode-1,fsid:42,flags:2,namelen:255};return x.node_ops.statfs&&Object.assign(n,x.node_ops.statfs(x.mount.opts.root)),n},create(x,n=438){return n&=4095,n|=32768,r.mknod(x,n,0)},mkdir(x,n=511){return n&=1023,n|=16384,r.mknod(x,n,0)},mkdirTree(x,n){var v=x.split("/"),f="";for(var c of v)if(c){(f||t0.isAbs(x))&&(f+="/"),f+=c;try{r.mkdir(f,n)}catch(m){if(m.errno!=20)throw m}}},mkdev(x,n,v){return typeof v>"u"&&(v=n,n=438),n|=8192,r.mknod(x,n,v)},symlink(x,n){if(!Ax.resolve(x))throw new r.ErrnoError(44);var v=r.lookupPath(n,{parent:!0}),f=v.node;if(!f)throw new r.ErrnoError(44);var c=t0.basename(n),m=r.mayCreate(f,c);if(m)throw new r.ErrnoError(m);if(!f.node_ops.symlink)throw new r.ErrnoError(63);return f.node_ops.symlink(f,c,x)},rename(x,n){var v=t0.dirname(x),f=t0.dirname(n),c=t0.basename(x),m=t0.basename(n),$,R,x0;if($=r.lookupPath(x,{parent:!0}),R=$.node,$=r.lookupPath(n,{parent:!0}),x0=$.node,!R||!x0)throw new r.ErrnoError(44);if(R.mount!==x0.mount)throw new r.ErrnoError(75);var B0=r.lookupNode(R,c),w0=Ax.relative(x,f);if(w0.charAt(0)!==".")throw new r.ErrnoError(28);if(w0=Ax.relative(n,v),w0.charAt(0)!==".")throw new r.ErrnoError(55);var m0;try{m0=r.lookupNode(x0,m)}catch{}if(B0!==m0){var j0=r.isDir(B0.mode),o0=r.mayDelete(R,c,j0);if(o0)throw new r.ErrnoError(o0);if(o0=m0?r.mayDelete(x0,m,j0):r.mayCreate(x0,m),o0)throw new r.ErrnoError(o0);if(!R.node_ops.rename)throw new r.ErrnoError(63);if(r.isMountpoint(B0)||m0&&r.isMountpoint(m0))throw new r.ErrnoError(10);if(x0!==R&&(o0=r.nodePermissions(R,"w"),o0))throw new r.ErrnoError(o0);r.hashRemoveNode(B0);try{R.node_ops.rename(B0,x0,m),B0.parent=x0}catch(M0){throw M0}finally{r.hashAddNode(B0)}}},rmdir(x){var n=r.lookupPath(x,{parent:!0}),v=n.node,f=t0.basename(x),c=r.lookupNode(v,f),m=r.mayDelete(v,f,!0);if(m)throw new r.ErrnoError(m);if(!v.node_ops.rmdir)throw new r.ErrnoError(63);if(r.isMountpoint(c))throw new r.ErrnoError(10);v.node_ops.rmdir(v,f),r.destroyNode(c)},readdir(x){var n=r.lookupPath(x,{follow:!0}),v=n.node,f=r.checkOpExists(v.node_ops.readdir,54);return f(v)},unlink(x){var n=r.lookupPath(x,{parent:!0}),v=n.node;if(!v)throw new r.ErrnoError(44);var f=t0.basename(x),c=r.lookupNode(v,f),m=r.mayDelete(v,f,!1);if(m)throw new r.ErrnoError(m);if(!v.node_ops.unlink)throw new r.ErrnoError(63);if(r.isMountpoint(c))throw new r.ErrnoError(10);v.node_ops.unlink(v,f),r.destroyNode(c)},readlink(x){var n=r.lookupPath(x),v=n.node;if(!v)throw new r.ErrnoError(44);if(!v.node_ops.readlink)throw new r.ErrnoError(28);return v.node_ops.readlink(v)},stat(x,n){var v=r.lookupPath(x,{follow:!n}),f=v.node,c=r.checkOpExists(f.node_ops.getattr,63);return c(f)},fstat(x){var n=r.getStreamChecked(x),v=n.node,f=n.stream_ops.getattr,c=f?n:v;return f??(f=v.node_ops.getattr),r.checkOpExists(f,63),f(c)},lstat(x){return r.stat(x,!0)},doChmod(x,n,v,f){r.doSetAttr(x,n,{mode:v&4095|n.mode&-4096,ctime:Date.now(),dontFollow:f})},chmod(x,n,v){var f;if(typeof x=="string"){var c=r.lookupPath(x,{follow:!v});f=c.node}else f=x;r.doChmod(null,f,n,v)},lchmod(x,n){r.chmod(x,n,!0)},fchmod(x,n){var v=r.getStreamChecked(x);r.doChmod(v,v.node,n,!1)},doChown(x,n,v){r.doSetAttr(x,n,{timestamp:Date.now(),dontFollow:v})},chown(x,n,v,f){var c;if(typeof x=="string"){var m=r.lookupPath(x,{follow:!f});c=m.node}else c=x;r.doChown(null,c,f)},lchown(x,n,v){r.chown(x,n,v,!0)},fchown(x,n,v){var f=r.getStreamChecked(x);r.doChown(f,f.node,!1)},doTruncate(x,n,v){if(r.isDir(n.mode))throw new r.ErrnoError(31);if(!r.isFile(n.mode))throw new r.ErrnoError(28);var f=r.nodePermissions(n,"w");if(f)throw new r.ErrnoError(f);r.doSetAttr(x,n,{size:v,timestamp:Date.now()})},truncate(x,n){if(n<0)throw new r.ErrnoError(28);var v;if(typeof x=="string"){var f=r.lookupPath(x,{follow:!0});v=f.node}else v=x;r.doTruncate(null,v,n)},ftruncate(x,n){var v=r.getStreamChecked(x);if(n<0||(v.flags&2097155)===0)throw new r.ErrnoError(28);r.doTruncate(v,v.node,n)},utime(x,n,v){var f=r.lookupPath(x,{follow:!0}),c=f.node,m=r.checkOpExists(c.node_ops.setattr,63);m(c,{atime:n,mtime:v})},open(x,n,v=438){if(x==="")throw new r.ErrnoError(44);n=qr(n),n&64?v=v&4095|32768:v=0;var f,c;if(typeof x=="object")f=x;else{c=x.endsWith("/");var m=r.lookupPath(x,{follow:!(n&131072),noent_okay:!0});f=m.node,x=m.path}var $=!1;if(n&64)if(f){if(n&128)throw new r.ErrnoError(20)}else{if(c)throw new r.ErrnoError(31);f=r.mknod(x,v|511,0),$=!0}if(!f)throw new r.ErrnoError(44);if(r.isChrdev(f.mode)&&(n&=-513),n&65536&&!r.isDir(f.mode))throw new r.ErrnoError(54);if(!$){var R=r.mayOpen(f,n);if(R)throw new r.ErrnoError(R)}n&512&&!$&&r.truncate(f,0),n&=-131713;var x0=r.createStream({node:f,path:r.getPath(f),flags:n,seekable:!0,position:0,stream_ops:f.stream_ops,ungotten:[],error:!1});return x0.stream_ops.open&&x0.stream_ops.open(x0),$&&r.chmod(f,v&511),x0},close(x){if(r.isClosed(x))throw new r.ErrnoError(8);x.getdents&&(x.getdents=null);try{x.stream_ops.close&&x.stream_ops.close(x)}catch(n){throw n}finally{r.closeStream(x.fd)}x.fd=null},isClosed(x){return x.fd===null},llseek(x,n,v){if(r.isClosed(x))throw new r.ErrnoError(8);if(!x.seekable||!x.stream_ops.llseek)throw new r.ErrnoError(70);if(v!=0&&v!=1&&v!=2)throw new r.ErrnoError(28);return x.position=x.stream_ops.llseek(x,n,v),x.ungotten=[],x.position},read(x,n,v,f,c){if(f<0||c<0)throw new r.ErrnoError(28);if(r.isClosed(x))throw new r.ErrnoError(8);if((x.flags&2097155)===1)throw new r.ErrnoError(8);if(r.isDir(x.node.mode))throw new r.ErrnoError(31);if(!x.stream_ops.read)throw new r.ErrnoError(28);var m=typeof c<"u";if(!m)c=x.position;else if(!x.seekable)throw new r.ErrnoError(70);var $=x.stream_ops.read(x,n,v,f,c);return m||(x.position+=$),$},write(x,n,v,f,c,m){if(f<0||c<0)throw new r.ErrnoError(28);if(r.isClosed(x))throw new r.ErrnoError(8);if((x.flags&2097155)===0)throw new r.ErrnoError(8);if(r.isDir(x.node.mode))throw new r.ErrnoError(31);if(!x.stream_ops.write)throw new r.ErrnoError(28);x.seekable&&x.flags&1024&&r.llseek(x,0,2);var $=typeof c<"u";if(!$)c=x.position;else if(!x.seekable)throw new r.ErrnoError(70);var R=x.stream_ops.write(x,n,v,f,c,m);return $||(x.position+=R),R},mmap(x,n,v,f,c){if((f&2)!==0&&(c&2)===0&&(x.flags&2097155)!==2)throw new r.ErrnoError(2);if((x.flags&2097155)===1)throw new r.ErrnoError(2);if(!x.stream_ops.mmap)throw new r.ErrnoError(43);if(!n)throw new r.ErrnoError(28);return x.stream_ops.mmap(x,n,v,f,c)},msync(x,n,v,f,c){return x.stream_ops.msync?x.stream_ops.msync(x,n,v,f,c):0},ioctl(x,n,v){if(!x.stream_ops.ioctl)throw new r.ErrnoError(59);return x.stream_ops.ioctl(x,n,v)},readFile(x,n={}){n.flags=n.flags||0,n.encoding=n.encoding||"binary",n.encoding!=="utf8"&&n.encoding!=="binary"&&i0(`Invalid encoding type "${n.encoding}"`);var v=r.open(x,n.flags),f=r.stat(x),c=f.size,m=new Uint8Array(c);return r.read(v,m,0,c,0),n.encoding==="utf8"&&(m=Sx(m)),r.close(v),m},writeFile(x,n,v={}){v.flags=v.flags||577;var f=r.open(x,v.flags,v.mode);n=gA(n),r.write(f,n,0,n.byteLength,void 0,v.canOwn),r.close(f)},cwd:()=>r.currentPath,chdir(x){var n=r.lookupPath(x,{follow:!0});if(n.node===null)throw new r.ErrnoError(44);if(!r.isDir(n.node.mode))throw new r.ErrnoError(54);var v=r.nodePermissions(n.node,"x");if(v)throw new r.ErrnoError(v);r.currentPath=n.path},createDefaultDirectories(){r.mkdir("/tmp"),r.mkdir("/home"),r.mkdir("/home/web_user")},createDefaultDevices(){r.mkdir("/dev"),r.registerDevice(r.makedev(1,3),{read:()=>0,write:(f,c,m,$,R)=>$,llseek:()=>0}),r.mkdev("/dev/null",r.makedev(1,3)),T0.register(r.makedev(5,0),T0.default_tty_ops),T0.register(r.makedev(6,0),T0.default_tty1_ops),r.mkdev("/dev/tty",r.makedev(5,0)),r.mkdev("/dev/tty1",r.makedev(6,0));var x=new Uint8Array(1024),n=0,v=()=>(n===0&&(bA(x),n=x.byteLength),x[--n]);r.createDevice("/dev","random",v),r.createDevice("/dev","urandom",v),r.mkdir("/dev/shm"),r.mkdir("/dev/shm/tmp")},createSpecialDirectories(){r.mkdir("/proc");var x=r.mkdir("/proc/self");r.mkdir("/proc/self/fd"),r.mount({mount(){var n=r.createNode(x,"fd",16895,73);return n.stream_ops={llseek:K.stream_ops.llseek},n.node_ops={lookup(v,f){var c=+f,m=r.getStreamChecked(c),$={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>m.path},id:c+1};return $.parent=$,$},readdir(){return Array.from(r.streams.entries()).filter(([v,f])=>f).map(([v,f])=>v.toString())}},n}},{},"/proc/self/fd")},createStandardStreams(x,n,v){x?r.createDevice("/dev","stdin",x):r.symlink("/dev/tty","/dev/stdin"),n?r.createDevice("/dev","stdout",null,n):r.symlink("/dev/tty","/dev/stdout"),v?r.createDevice("/dev","stderr",null,v):r.symlink("/dev/tty1","/dev/stderr");var f=r.open("/dev/stdin",0),c=r.open("/dev/stdout",1),m=r.open("/dev/stderr",1)},staticInit(){r.nameTable=new Array(4096),r.mount(K,{},"/"),r.createDefaultDirectories(),r.createDefaultDevices(),r.createSpecialDirectories(),r.filesystems={MEMFS:K,PROXYFS:C0}},init(x,n,v){r.initialized=!0,x??(x=s.stdin),n??(n=s.stdout),v??(v=s.stderr),r.createStandardStreams(x,n,v)},quit(){r.initialized=!1,D(0);for(var x of r.streams)x&&r.close(x)},findObject(x,n){var v=r.analyzePath(x,n);return v.exists?v.object:null},analyzePath(x,n){try{var v=r.lookupPath(x,{follow:!n});x=v.path}catch{}var f={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var v=r.lookupPath(x,{parent:!0});f.parentExists=!0,f.parentPath=v.path,f.parentObject=v.node,f.name=t0.basename(x),v=r.lookupPath(x,{follow:!n}),f.exists=!0,f.path=v.path,f.object=v.node,f.name=v.node.name,f.isRoot=v.path==="/"}catch(c){f.error=c.errno}return f},createPath(x,n,v,f){x=typeof x=="string"?x:r.getPath(x);for(var c=n.split("/").reverse();c.length;){var m=c.pop();if(m){var $=t0.join2(x,m);try{r.mkdir($)}catch(R){if(R.errno!=20)throw R}x=$}}return $},createFile(x,n,v,f,c){var m=t0.join2(typeof x=="string"?x:r.getPath(x),n),$=Zx(f,c);return r.create(m,$)},createDataFile(x,n,v,f,c,m){var $=n;x&&(x=typeof x=="string"?x:r.getPath(x),$=n?t0.join2(x,n):x);var R=Zx(f,c),x0=r.create($,R);if(v){v=gA(v),r.chmod(x0,R|146);var B0=r.open(x0,577);r.write(B0,v,0,v.length,0,m),r.close(B0),r.chmod(x0,R)}},createDevice(x,n,v,f){var c,m=t0.join2(typeof x=="string"?x:r.getPath(x),n),$=Zx(!!v,!!f);(c=r.createDevice).major??(c.major=64);var R=r.makedev(r.createDevice.major++,0);return r.registerDevice(R,{open(x0){x0.seekable=!1},close(x0){f?.buffer?.length&&f(10)},read(x0,B0,w0,m0,j0){for(var o0=0,M0=0;M0<m0;M0++){var Z0;try{Z0=v()}catch{throw new r.ErrnoError(29)}if(Z0===void 0&&o0===0)throw new r.ErrnoError(6);if(Z0==null)break;o0++,B0[w0+M0]=Z0}return o0&&(x0.node.atime=Date.now()),o0},write(x0,B0,w0,m0,j0){for(var o0=0;o0<m0;o0++)try{f(B0[w0+o0])}catch{throw new r.ErrnoError(29)}return m0&&(x0.node.mtime=x0.node.ctime=Date.now()),o0}}),r.mkdev(m,$,R)},forceLoadFile(x){if(x.isDevice||x.isFolder||x.link||x.contents)return!0;if(globalThis.XMLHttpRequest)i0("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");else try{x.contents=k(x.url)}catch{throw new r.ErrnoError(29)}},createLazyFile(x,n,v,f,c){class m{constructor(){N0(this,"lengthKnown",!1),N0(this,"chunks",[])}get(j0){if(!(j0>this.length-1||j0<0)){var o0=j0%this.chunkSize,M0=j0/this.chunkSize|0;return this.getter(M0)[o0]}}setDataGetter(j0){this.getter=j0}cacheLength(){var j0=new XMLHttpRequest;j0.open("HEAD",v,!1),j0.send(null),j0.status>=200&&j0.status<300||j0.status===304||i0("Couldn't load "+v+". Status: "+j0.status);var o0=Number(j0.getResponseHeader("Content-length")),M0,Z0=(M0=j0.getResponseHeader("Accept-Ranges"))&&M0==="bytes",Fx=(M0=j0.getResponseHeader("Content-Encoding"))&&M0==="gzip",lx=1024*1024;Z0||(lx=o0);var cx=(bx,FA)=>{bx>FA&&i0("invalid range ("+bx+", "+FA+") or no bytes requested!"),FA>o0-1&&i0("only "+o0+" bytes available! programmer error!");var z0=new XMLHttpRequest;return z0.open("GET",v,!1),o0!==lx&&z0.setRequestHeader("Range","bytes="+bx+"-"+FA),z0.responseType="arraybuffer",z0.overrideMimeType&&z0.overrideMimeType("text/plain; charset=x-user-defined"),z0.send(null),z0.status>=200&&z0.status<300||z0.status===304||i0("Couldn't load "+v+". Status: "+z0.status),z0.response!==void 0?new Uint8Array(z0.response||[]):Yx(z0.responseText||"",!0)},GA=this;GA.setDataGetter(bx=>{var FA=bx*lx,z0=(bx+1)*lx-1;return z0=Math.min(z0,o0-1),typeof GA.chunks[bx]>"u"&&(GA.chunks[bx]=cx(FA,z0)),typeof GA.chunks[bx]>"u"&&i0("doXHR failed!"),GA.chunks[bx]}),(Fx||!o0)&&(lx=o0=1,o0=this.getter(0).length,lx=o0,q("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=o0,this._chunkSize=lx,this.lengthKnown=!0}get length(){return this.lengthKnown||this.cacheLength(),this._length}get chunkSize(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}if(globalThis.XMLHttpRequest){l||i0("Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc");var $=new m,R={isDevice:!1,contents:$}}else var R={isDevice:!1,url:v};var x0=r.createFile(x,n,R,f,c);R.contents?x0.contents=R.contents:R.url&&(x0.contents=null,x0.url=R.url),Object.defineProperties(x0,{usedBytes:{get:function(){return this.contents.length}}});var B0={};for(let[m0,j0]of Object.entries(x0.stream_ops))B0[m0]=(...o0)=>(r.forceLoadFile(x0),j0(...o0));function w0(m0,j0,o0,M0,Z0){var Fx=m0.node.contents;if(Z0>=Fx.length)return 0;var lx=Math.min(Fx.length-Z0,M0);if(Fx.slice)for(var cx=0;cx<lx;cx++)j0[o0+cx]=Fx[Z0+cx];else for(var cx=0;cx<lx;cx++)j0[o0+cx]=Fx.get(Z0+cx);return lx}return B0.read=(m0,j0,o0,M0,Z0)=>(r.forceLoadFile(x0),w0(m0,j0,o0,M0,Z0)),B0.mmap=(m0,j0,o0,M0,Z0)=>{r.forceLoadFile(x0);var Fx=hA(j0);if(!Fx)throw new r.ErrnoError(48);return w0(m0,P0,Fx,j0,o0),{ptr:Fx,allocated:!0}},x0.stream_ops=B0,x0}},v0={currentUmask:18,calculateAt(x,n,v){if(t0.isAbs(n))return n;var f;if(x===-100)f=r.cwd();else{var c=v0.getStreamFromFD(x);f=c.path}if(n.length==0){if(!v)throw new r.ErrnoError(44);return f}return f+"/"+n},writeStat(x,n){r0[x>>2]=n.dev,r0[x+4>>2]=n.mode,r0[x+8>>2]=n.nlink,r0[x+12>>2]=n.uid,r0[x+16>>2]=n.gid,r0[x+20>>2]=n.rdev,g0[x+24>>3]=BigInt(n.size),h0[x+32>>2]=4096,h0[x+36>>2]=n.blocks;var v=n.atime.getTime(),f=n.mtime.getTime(),c=n.ctime.getTime();return g0[x+40>>3]=BigInt(Math.floor(v/1e3)),r0[x+48>>2]=v%1e3*1e3*1e3,g0[x+56>>3]=BigInt(Math.floor(f/1e3)),r0[x+64>>2]=f%1e3*1e3*1e3,g0[x+72>>3]=BigInt(Math.floor(c/1e3)),r0[x+80>>2]=c%1e3*1e3*1e3,g0[x+88>>3]=BigInt(n.ino),0},writeStatFs(x,n){r0[x+4>>2]=n.bsize,r0[x+60>>2]=n.bsize,g0[x+8>>3]=BigInt(n.blocks),g0[x+16>>3]=BigInt(n.bfree),g0[x+24>>3]=BigInt(n.bavail),g0[x+32>>3]=BigInt(n.files),g0[x+40>>3]=BigInt(n.ffree),r0[x+48>>2]=n.fsid,r0[x+64>>2]=n.flags,r0[x+56>>2]=n.namelen},doMsync(x,n,v,f,c){if(!r.isFile(n.node.mode))throw new r.ErrnoError(43);if(f&2)return 0;var m=fx.slice(x,x+v);r.msync(n,m,c,v,f)},getStreamFromFD(x){var n=r.getStreamChecked(x);return n},varargs:void 0,getStr(x){var n=qx(x);return n}};function Tr(x,n,v,f){try{if(n=v0.getStr(n),n=v0.calculateAt(x,n),v&-8)return-28;var c=r.lookupPath(n,{follow:!0}),m=c.node;if(!m)return-44;var $="";return v&4&&($+="r"),v&2&&($+="w"),v&1&&($+="x"),$&&r.nodePermissions(m,$)?-2:0}catch(R){if(typeof r>"u"||R.name!=="ErrnoError")throw R;return-R.errno}}var iA=()=>{var x=h0[+v0.varargs>>2];return v0.varargs+=4,x},Ox=iA;function Ir(x,n,v){v0.varargs=v;try{var f=v0.getStreamFromFD(x);switch(n){case 0:{var c=iA();if(c<0)return-28;for(;r.streams[c];)c++;var m;return m=r.dupStream(f,c),m.fd}case 1:case 2:return 0;case 3:return f.flags;case 4:{var c=iA(),$=289792;return f.flags=f.flags&~$|c&$,0}case 12:{var c=Ox(),R=0;return _x[c+R>>1]=2,0}case 13:case 14:return 0}return-28}catch(x0){if(typeof r>"u"||x0.name!=="ErrnoError")throw x0;return-x0.errno}}var $A=(x,n,v)=>mA(x,fx,n,v);function Mr(x,n){try{if(n===0)return-28;var v=r.cwd(),f=Xx(v)+1;return n<f?-68:($A(v,x,n),f)}catch(c){if(typeof r>"u"||c.name!=="ErrnoError")throw c;return-c.errno}}function Sr(x,n,v){v0.varargs=v;try{var f=v0.getStreamFromFD(x);switch(n){case 21509:return f.tty?0:-59;case 21505:{if(!f.tty)return-59;if(f.tty.ops.ioctl_tcgets){var c=f.tty.ops.ioctl_tcgets(f),m=Ox();h0[m>>2]=c.c_iflag||0,h0[m+4>>2]=c.c_oflag||0,h0[m+8>>2]=c.c_cflag||0,h0[m+12>>2]=c.c_lflag||0;for(var $=0;$<32;$++)P0[m+$+17]=c.c_cc[$]||0;return 0}return 0}case 21510:case 21511:case 21512:return f.tty?0:-59;case 21506:case 21507:case 21508:{if(!f.tty)return-59;if(f.tty.ops.ioctl_tcsets){for(var m=Ox(),R=h0[m>>2],x0=h0[m+4>>2],B0=h0[m+8>>2],w0=h0[m+12>>2],m0=[],$=0;$<32;$++)m0.push(P0[m+$+17]);return f.tty.ops.ioctl_tcsets(f.tty,n,{c_iflag:R,c_oflag:x0,c_cflag:B0,c_lflag:w0,c_cc:m0})}return 0}case 21519:{if(!f.tty)return-59;var m=Ox();return h0[m>>2]=0,0}case 21520:return f.tty?-28:-59;case 21537:case 21531:{var m=Ox();return r.ioctl(f,n,m)}case 21523:{if(!f.tty)return-59;if(f.tty.ops.ioctl_tiocgwinsz){var j0=f.tty.ops.ioctl_tiocgwinsz(f.tty),m=Ox();_x[m>>1]=j0[0],_x[m+2>>1]=j0[1]}return 0}case 21524:return f.tty?0:-59;case 21515:return f.tty?0:-59;default:return-28}}catch(o0){if(typeof r>"u"||o0.name!=="ErrnoError")throw o0;return-o0.errno}}function Rr(x,n,v,f){v0.varargs=f;try{n=v0.getStr(n),n=v0.calculateAt(x,n);var c=f?iA():0;return v&64&&(c&=~v0.currentUmask),r.open(n,v,c).fd}catch(m){if(typeof r>"u"||m.name!=="ErrnoError")throw m;return-m.errno}}function Or(x,n,v,f){try{if(n=v0.getStr(n),n=v0.calculateAt(x,n),f<=0)return-28;var c=r.readlink(n),m=Math.min(f,Xx(c)),$=P0[v+m];return $A(c,v,f+1),P0[v+m]=$,m}catch(R){if(typeof r>"u"||R.name!=="ErrnoError")throw R;return-R.errno}}function Ur(x,n,v,f){try{return n=v0.getStr(n),f=v0.getStr(f),n=v0.calculateAt(x,n),f=v0.calculateAt(v,f),r.rename(n,f),0}catch(c){if(typeof r>"u"||c.name!=="ErrnoError")throw c;return-c.errno}}function Hr(x){try{return x=v0.getStr(x),r.rmdir(x),0}catch(n){if(typeof r>"u"||n.name!=="ErrnoError")throw n;return-n.errno}}function zr(x,n,v){try{if(n=v0.getStr(n),n=v0.calculateAt(x,n),!v)r.unlink(n);else if(v===512)r.rmdir(n);else return-28;return 0}catch(f){if(typeof r>"u"||f.name!=="ErrnoError")throw f;return-f.errno}}var Jr=()=>{throw new H},Kr=()=>performance.now(),Vr=()=>Date.now(),Wr=1,Xr=x=>x>=0&&x<=3,ZA=9007199254740992,Yr=-9007199254740992,QA=x=>x<Yr||x>ZA?NaN:Number(x);function Zr(x,n,v){if(n=QA(n),!Xr(x))return 28;var f;if(x===0)f=Vr();else if(Wr)f=Kr();else return 52;var c=Math.round(f*1e3*1e3);return g0[v>>3]=BigInt(c),0}var Qr=()=>2147483648,xr=(x,n)=>Math.ceil(x/n)*n,xe=x=>{var n=p0.buffer.byteLength,v=(x-n+65535)/65536|0;try{return p0.grow(v),Z(),1}catch{}},Ae=x=>{var n=fx.length;x>>>=0;var v=Qr();if(x>v)return!1;for(var f=1;f<=4;f*=2){var c=n*(1+.2/f);c=Math.min(c,x+100663296);var m=Math.min(v,xr(Math.max(x,c),65536)),$=xe(m);if($)return!0}return!1};function re(x){try{var n=v0.getStreamFromFD(x);return r.close(n),0}catch(v){if(typeof r>"u"||v.name!=="ErrnoError")throw v;return v.errno}}var ee=(x,n,v,f)=>{for(var c=0,m=0;m<v;m++){var $=r0[n>>2],R=r0[n+4>>2];n+=8;var x0=r.read(x,P0,$,R,f);if(x0<0)return-1;if(c+=x0,x0<R)break;typeof f<"u"&&(f+=x0)}return c};function te(x,n,v,f){try{var c=v0.getStreamFromFD(x),m=ee(c,n,v);return r0[f>>2]=m,0}catch($){if(typeof r>"u"||$.name!=="ErrnoError")throw $;return $.errno}}function Ar(x,n,v,f){n=QA(n);try{if(isNaN(n))return 22;var c=v0.getStreamFromFD(x);return r.llseek(c,n,v),g0[f>>3]=BigInt(c.position),c.getdents&&n===0&&v===0&&(c.getdents=null),0}catch(m){if(typeof r>"u"||m.name!=="ErrnoError")throw m;return m.errno}}var rr=(x,n,v,f)=>{for(var c=0,m=0;m<v;m++){var $=r0[n>>2],R=r0[n+4>>2];n+=8;var x0=r.write(x,P0,$,R,f);if(x0<0)return-1;if(c+=x0,x0<R)break;typeof f<"u"&&(f+=x0)}return c};function er(x,n,v,f){try{var c=v0.getStreamFromFD(x),m=rr(c,n,v);return r0[f>>2]=m,0}catch($){if(typeof r>"u"||$.name!=="ErrnoError")throw $;return $.errno}}var ne=0,qA=()=>uA||ne>0,ie=x=>{L=x,qA()||(s.onExit?.(x),V=!0),g(x,new wx(x))},Fe=(x,n)=>{L=x,qA()||e0(),ie(x)},ae=x=>{if(x instanceof wx||x=="unwind")return L;g(1,x)},xA=x=>z(x),se=x=>{var n=Xx(x)+1,v=xA(n);return $A(x,v,n),v},PA=[],U0=x=>{var n=PA[x];return n||(PA[x]=n=D0.get(x)),n},LA=(...x)=>r.createPath(...x),AA=(...x)=>r.unlink(...x),A=(...x)=>r.createLazyFile(...x),o=(...x)=>r.createDevice(...x);if(r.createPreloadedFile=Gr,r.preloadFile=Qx,r.staticInit(),s.noExitRuntime&&(uA=s.noExitRuntime),s.preloadPlugins&&(_A=s.preloadPlugins),s.print&&(q=s.print),s.printErr&&(N=s.printErr),s.wasmBinary&&(S=s.wasmBinary),s.arguments&&(u=s.arguments),s.thisProgram&&(p=s.thisProgram),s.preInit)for(typeof s.preInit=="function"&&(s.preInit=[s.preInit]);s.preInit.length>0;)s.preInit.shift()();s.callMain=Ne,s.addRunDependency=wA,s.removeRunDependency=yA,s.FS_preloadFile=Qx,s.FS_unlink=AA,s.FS_createPath=LA,s.FS_createDevice=o,s.FS=r,s.FS_createDataFile=kA,s.FS_createLazyFile=A,s.PROXYFS=C0;var B,D,j,h,G,z,Q,E0,k0,p0,D0;function s0(x){B=s._main=x.__main_argc_argv,D=x.fflush,j=x.__funcs_on_exit,h=x.setThrew,G=x._emscripten_stack_restore,z=x._emscripten_stack_alloc,Q=x.emscripten_stack_get_current,E0=p0=x.memory,k0=D0=x.__indirect_function_table}var q0={__assert_fail:Rx,__syscall_faccessat:Tr,__syscall_fcntl64:Ir,__syscall_getcwd:Mr,__syscall_ioctl:Sr,__syscall_openat:Rr,__syscall_readlinkat:Or,__syscall_renameat:Ur,__syscall_rmdir:Hr,__syscall_unlinkat:zr,_emscripten_throw_longjmp:Jr,clock_time_get:Zr,emscripten_resize_heap:Ae,fd_close:re,fd_read:te,fd_seek:Ar,fd_write:er,invoke_i:rA,invoke_ii:rx,invoke_iii:ex,invoke_iiid:wn,invoke_iiii:ix,invoke_iiiii:I0,invoke_iiiiii:_n,invoke_iijii:gn,invoke_v:H0,invoke_vi:kn,invoke_vii:xx,invoke_viii:yn,invoke_viiii:Ux,invoke_viiiii:hn};function H0(x){var n=V0();try{U0(x)()}catch(v){if(O0(n),!(v instanceof P))throw v;h(1,0)}}function xx(x,n,v){var f=V0();try{U0(x)(n,v)}catch(c){if(O0(f),!(c instanceof P))throw c;h(1,0)}}function rx(x,n){var v=V0();try{return U0(x)(n)}catch(f){if(O0(v),!(f instanceof P))throw f;h(1,0)}}function ex(x,n,v){var f=V0();try{return U0(x)(n,v)}catch(c){if(O0(f),!(c instanceof P))throw c;h(1,0)}}function rA(x){var n=V0();try{return U0(x)()}catch(v){if(O0(n),!(v instanceof P))throw v;h(1,0)}}function ix(x,n,v,f){var c=V0();try{return U0(x)(n,v,f)}catch(m){if(O0(c),!(m instanceof P))throw m;h(1,0)}}function Ux(x,n,v,f,c){var m=V0();try{U0(x)(n,v,f,c)}catch($){if(O0(m),!($ instanceof P))throw $;h(1,0)}}function I0(x,n,v,f,c){var m=V0();try{return U0(x)(n,v,f,c)}catch($){if(O0(m),!($ instanceof P))throw $;h(1,0)}}function hn(x,n,v,f,c,m){var $=V0();try{U0(x)(n,v,f,c,m)}catch(R){if(O0($),!(R instanceof P))throw R;h(1,0)}}function gn(x,n,v,f,c){var m=V0();try{return U0(x)(n,v,f,c)}catch($){if(O0(m),!($ instanceof P))throw $;h(1,0)}}function kn(x,n){var v=V0();try{U0(x)(n)}catch(f){if(O0(v),!(f instanceof P))throw f;h(1,0)}}function yn(x,n,v,f){var c=V0();try{U0(x)(n,v,f)}catch(m){if(O0(c),!(m instanceof P))throw m;h(1,0)}}function wn(x,n,v,f){var c=V0();try{return U0(x)(n,v,f)}catch(m){if(O0(c),!(m instanceof P))throw m;h(1,0)}}function _n(x,n,v,f,c,m){var $=V0();try{return U0(x)(n,v,f,c,m)}catch(R){if(O0($),!(R instanceof P))throw R;h(1,0)}}function Ne(x=[]){var n=B;x.unshift(p);var v=x.length,f=xA((v+1)*4),c=f;for(var m of x)r0[c>>2]=se(m),c+=4;r0[c>>2]=0;try{var $=n(v,f);return Fe($,!0),$}catch(R){return ae(R)}}function oe(x=u){if(Y0>0){Dx=oe;return}if(X(),Y0>0){Dx=oe;return}function n(){if(s.calledRun=!0,!V){T(),I?.(s),s.onRuntimeInitialized?.();var v=s.noInitialRun||!0;v||Ne(x),n0()}}s.setStatus?(s.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>s.setStatus(""),1),n()},1)):n()}var NA;return NA=await Q0(),oe(),W?E=s:E=new Promise((x,n)=>{I=x,M=n}),E}})();typeof t=="object"&&typeof e=="object"?(e.exports=F,e.exports.default=F):typeof define=="function"&&define.amd&&define([],()=>F)}}),$F=Rt({"wasm/bin/pawndbg.js"(t,e){"use strict";var F=(()=>{var i=globalThis.document?.currentScript?.src;return async function(a={}){var E,s=a,C=!!globalThis.window,l=!!globalThis.WorkerGlobalScope,d=globalThis.process?.versions?.node&&globalThis.process?.type!="renderer",u=[],p="./this.program",g=(A,o)=>{throw o};typeof __filename<"u"?i=__filename:l&&(i=self.location.href);var w="",b,k;if(d){var _=require("fs");w=__dirname+"/",k=A=>{A=y(A)?new URL(A):A;var o=_.readFileSync(A);return o},b=async(A,o=!0)=>{A=y(A)?new URL(A):A;var B=_.readFileSync(A,o?void 0:"utf8");return B},process.argv.length>1&&(p=process.argv[1].replace(/\\/g,"/")),u=process.argv.slice(2),g=(A,o)=>{throw process.exitCode=A,o}}else if(C||l){try{w=new URL(".",i).href}catch{}l&&(k=A=>{var o=new XMLHttpRequest;return o.open("GET",A,!1),o.responseType="arraybuffer",o.send(null),new Uint8Array(o.response)}),b=async A=>{if(y(A))return new Promise((B,D)=>{var j=new XMLHttpRequest;j.open("GET",A,!0),j.responseType="arraybuffer",j.onload=()=>{if(j.status==200||j.status==0&&j.response){B(j.response);return}D(j.status)},j.onerror=D,j.send(null)});var o=await fetch(A,{credentials:"same-origin"});if(o.ok)return o.arrayBuffer();throw new Error(o.status+" : "+o.url)}}var q=console.log.bind(console),N=console.error.bind(console),S,V=!1,L,y=A=>A.startsWith("file://");class P{}class H extends P{}function U(A){for(var o=0,B=A.length,D=new Uint8Array(B),j;o<B;++o)j=A.charCodeAt(o),D[o]=~j>>8&j;return D}var I,M,W=!1,J=!1;function Z(){var A=xA.buffer;P0=new Int8Array(A),_x=new Int16Array(A),fx=new Uint8Array(A),gr=new Uint16Array(A),h0=new Int32Array(A),r0=new Uint32Array(A),mr=new Float32Array(A),hr=new Float64Array(A),g0=new BigInt64Array(A),kr=new BigUint64Array(A)}function X(){if(s.preRun)for(typeof s.preRun=="function"&&(s.preRun=[s.preRun]);s.preRun.length;)wr(s.preRun.shift());dA(pA)}function T(){W=!0,!s.noFSInit&&!r.initialized&&r.init(),T0.init(),AA.__wasm_call_ctors(),r.ignorePermissions=!1}function A0(){}function e0(){rr(),r.quit(),T0.shutdown(),J=!0}function n0(){if(s.postRun)for(typeof s.postRun=="function"&&(s.postRun=[s.postRun]);s.postRun.length;)yr(s.postRun.shift());dA(jA)}function i0(A){s.onAbort?.(A),A=`Aborted(${A})`,N(A),V=!0,A+=". Build with -sASSERTIONS for more info.";var o=new WebAssembly.RuntimeError(A);throw M?.(o),o}var d0;function b0(){return U(`\0asm\0\0\0\xB4\`\x7F\x7F\`\x7F\0\`\x7F\x7F\x7F\x7F\`\x7F\x7F\x7F\`\x7F\x7F\x7F\0\`\x7F~~~~\0\`\x7F\x7F\x7F\x7F\x7F\`\x7F\x7F\0\`\x7F~\x7F~\`\x7F\x7F\x7F\x7F\0\`\0\0\`\0\x7F\`\x7F~~\x7F\0\`\x7F|\x7F\x7F\x7F\x7F\x7F\`\x7F~\x7F\x7F\x7F\`\x7F\x7F|\0\`\x7F~\0\`\x7F|\`\x7F~~~\0\`\x7F~\`|\x7F|\`\x7F\x7F\x7F\x7F\x7F\x7F\x7F\`~\x7F\x7F\`\x7F\x7F\x7F\x7F\x7F\0\`\x7F\x7F~\0\`~~~~\x7F\`~~~\x7F\`\x7F|\0\xFD env\r__assert_fail\0 env__syscall_openat\0env__syscall_fcntl64\0env__syscall_ioctl\0wasi_snapshot_preview1\bfd_write\0wasi_snapshot_preview1\x07fd_read\0wasi_snapshot_preview1\bfd_close\0\0wasi_snapshot_preview1\x07fd_seek\0envemscripten_resize_heap\0\0VU
|
|
1163
1163
|
|
|
1164
1164
|
\0\x07\v\v\0\b\0\0 \x07\0 \0\b\0\0\f\0\0\r\0\0\x07\0\f\x1B\x07\x07\f\0\v
|
|
1165
1165
|
p\r\r\x07\x82\x80\x80\b\x7FA\x80\xAC\v\x07\xBD memory\0__wasm_call_ctors\0 __main_argc_argv\0
|
|
@@ -1523,24 +1523,24 @@ Usage: pawndbg -f <mapfile> [options]
|
|
|
1523
1523
|
\v\f\r\x1B !"#\xFF\xFF\xFF\xFF\xFF\xFF
|
|
1524
1524
|
\v\f\r\x1B !"#\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x07\0A\xC0\x1B\v\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \0\0\0A\xE4\x1B\v\x07\0A\xFC\x1B\v
|
|
1525
1525
|
\0\0\0\0\0\0\xEC\0A\x94\v\0A\xA4\v\b\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0A\xE8\v \xD8\r\0\0\0\0\0\0\0A\xFC\v\b\0A\x94\v\0\0\0 \0\0\0\xF8\0\0\0\0A\xAC\v\0A\xBC\v\xFF\xFF\xFF\xFF
|
|
1526
|
-
\0A\x80\v\vp\0\0D\0\0\0`)}function
|
|
1527
|
-
`));if(!A)return null;Wx=Yx(A,!0)}return Wx.shift()},G0={ttys:[],init(){},shutdown(){},register(A,o){G0.ttys[A]={input:[],output:[],ops:o},r.registerDevice(A,G0.stream_ops)},stream_ops:{open(A){var o=G0.ttys[A.node.rdev];if(!o)throw new r.ErrnoError(43);A.tty=o,A.seekable=!1},close(A){A.tty.ops.fsync(A.tty)},fsync(A){A.tty.ops.fsync(A.tty)},read(A,o,B,D,j){if(!A.tty||!A.tty.ops.get_char)throw new r.ErrnoError(60);for(var h=0,L=0;L<D;L++){var O;try{O=A.tty.ops.get_char(A.tty)}catch{throw new r.ErrnoError(29)}if(O===void 0&&h===0)throw new r.ErrnoError(6);if(O==null)break;h++,o[B+L]=O}return h&&(A.node.atime=Date.now()),h},write(A,o,B,D,j){if(!A.tty||!A.tty.ops.put_char)throw new r.ErrnoError(60);try{for(var h=0;h<D;h++)A.tty.ops.put_char(A.tty,o[B+h])}catch{throw new r.ErrnoError(29)}return D&&(A.node.mtime=A.node.ctime=Date.now()),h}},default_tty_ops:{get_char(A){return $r()},put_char(A,o){o===null||o===10?(P(wx(A.output)),A.output=[]):o!=0&&A.output.push(o)},fsync(A){A.output?.length>0&&(P(wx(A.output)),A.output=[])},ioctl_tcgets(A){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(A,o,B){return 0},ioctl_tiocgwinsz(A){return[24,80]}},default_tty1_ops:{put_char(A,o){o===null||o===10?(N(wx(A.output)),A.output=[]):o!=0&&A.output.push(o)},fsync(A){A.output?.length>0&&(N(wx(A.output)),A.output=[])}}},hA=A=>{f0()},V={ops_table:null,mount(A){return V.createNode(null,"/",16895,0)},createNode(A,o,B,D){if(r.isBlkdev(B)||r.isFIFO(B))throw new r.ErrnoError(63);V.ops_table||(V.ops_table={dir:{node:{getattr:V.node_ops.getattr,setattr:V.node_ops.setattr,lookup:V.node_ops.lookup,mknod:V.node_ops.mknod,rename:V.node_ops.rename,unlink:V.node_ops.unlink,rmdir:V.node_ops.rmdir,readdir:V.node_ops.readdir,symlink:V.node_ops.symlink},stream:{llseek:V.stream_ops.llseek}},file:{node:{getattr:V.node_ops.getattr,setattr:V.node_ops.setattr},stream:{llseek:V.stream_ops.llseek,read:V.stream_ops.read,write:V.stream_ops.write,mmap:V.stream_ops.mmap,msync:V.stream_ops.msync}},link:{node:{getattr:V.node_ops.getattr,setattr:V.node_ops.setattr,readlink:V.node_ops.readlink},stream:{}},chrdev:{node:{getattr:V.node_ops.getattr,setattr:V.node_ops.setattr},stream:r.chrdev_stream_ops}});var j=r.createNode(A,o,B,D);return r.isDir(j.mode)?(j.node_ops=V.ops_table.dir.node,j.stream_ops=V.ops_table.dir.stream,j.contents={}):r.isFile(j.mode)?(j.node_ops=V.ops_table.file.node,j.stream_ops=V.ops_table.file.stream,j.usedBytes=0,j.contents=V.emptyFileContents??(V.emptyFileContents=new Uint8Array(0))):r.isLink(j.mode)?(j.node_ops=V.ops_table.link.node,j.stream_ops=V.ops_table.link.stream):r.isChrdev(j.mode)&&(j.node_ops=V.ops_table.chrdev.node,j.stream_ops=V.ops_table.chrdev.stream),j.atime=j.mtime=j.ctime=Date.now(),A&&(A.contents[o]=j,A.atime=A.mtime=A.ctime=j.atime),j},getFileDataAsTypedArray(A){return A.contents.subarray(0,A.usedBytes)},expandFileStorage(A,o){var B=A.contents.length;if(!(B>=o)){var D=1024*1024;o=Math.max(o,B*(B<D?2:1.125)>>>0),B&&(o=Math.max(o,256));var j=V.getFileDataAsTypedArray(A);A.contents=new Uint8Array(o),A.contents.set(j)}},resizeFileStorage(A,o){if(A.usedBytes!=o){var B=A.contents;A.contents=new Uint8Array(o),A.contents.set(B.subarray(0,Math.min(o,A.usedBytes))),A.usedBytes=o}},node_ops:{getattr(A){var o={};return o.dev=r.isChrdev(A.mode)?A.id:1,o.ino=A.id,o.mode=A.mode,o.nlink=1,o.uid=0,o.gid=0,o.rdev=A.rdev,r.isDir(A.mode)?o.size=4096:r.isFile(A.mode)?o.size=A.usedBytes:r.isLink(A.mode)?o.size=A.link.length:o.size=0,o.atime=new Date(A.atime),o.mtime=new Date(A.mtime),o.ctime=new Date(A.ctime),o.blksize=4096,o.blocks=Math.ceil(o.size/o.blksize),o},setattr(A,o){for(let B of["mode","atime","mtime","ctime"])o[B]!=null&&(A[B]=o[B]);o.size!==void 0&&V.resizeFileStorage(A,o.size)},lookup(A,o){throw V.doesNotExistError||(V.doesNotExistError=new r.ErrnoError(44),V.doesNotExistError.stack="<generic error, no stack>"),V.doesNotExistError},mknod(A,o,B,D){return V.createNode(A,o,B,D)},rename(A,o,B){var D;try{D=r.lookupNode(o,B)}catch{}if(D){if(r.isDir(A.mode))for(var j in D.contents)throw new r.ErrnoError(55);r.hashRemoveNode(D)}delete A.parent.contents[A.name],o.contents[B]=A,A.name=B,o.ctime=o.mtime=A.parent.ctime=A.parent.mtime=Date.now()},unlink(A,o){delete A.contents[o],A.ctime=A.mtime=Date.now()},rmdir(A,o){var B=r.lookupNode(A,o);for(var D in B.contents)throw new r.ErrnoError(55);delete A.contents[o],A.ctime=A.mtime=Date.now()},readdir(A){return[".","..",...Object.keys(A.contents)]},symlink(A,o,B){var D=V.createNode(A,o,41471,0);return D.link=B,D},readlink(A){if(!r.isLink(A.mode))throw new r.ErrnoError(28);return A.link}},stream_ops:{read(A,o,B,D,j){var h=A.node.contents;if(j>=A.node.usedBytes)return 0;var L=Math.min(A.node.usedBytes-j,D);return o.set(h.subarray(j,j+L),B),L},write(A,o,B,D,j,h){if(o.buffer===q0.buffer&&(h=!1),!D)return 0;var L=A.node;return L.mtime=L.ctime=Date.now(),h?(L.contents=o.subarray(B,B+D),L.usedBytes=D):L.usedBytes===0&&j===0?(L.contents=o.slice(B,B+D),L.usedBytes=D):(V.expandFileStorage(L,j+D),L.contents.set(o.subarray(B,B+D),j),L.usedBytes=Math.max(L.usedBytes,j+D)),D},llseek(A,o,B){var D=o;if(B===1?D+=A.position:B===2&&r.isFile(A.node.mode)&&(D+=A.node.usedBytes),D<0)throw new r.ErrnoError(28);return D},mmap(A,o,B,D,j){if(!r.isFile(A.node.mode))throw new r.ErrnoError(43);var h,L,O=A.node.contents;if(!(j&2)&&O.buffer===q0.buffer)L=!1,h=O.byteOffset;else{if(L=!0,h=hA(o),!h)throw new r.ErrnoError(48);O&&((B>0||B+o<O.length)&&(O.subarray?O=O.subarray(B,B+o):O=Array.prototype.slice.call(O,B,B+o)),q0.set(O,h))}return{ptr:h,allocated:L}},msync(A,o,B,D,j){return V.stream_ops.write(A,o,0,D,B,!1),0}}},qr=A=>{if(typeof A!="string")return A;var o={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},B=o[A];if(typeof B>"u")throw new Error(`Unknown file open mode: ${A}`);return B},gA=A=>(typeof A=="string"&&(A=Yx(A,!0)),A.subarray||(A=new Uint8Array(A)),A),Zx=(A,o)=>{var B=0;return A&&(B|=365),o&&(B|=146),B},c0={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135},B0={mount(A){return B0.createNode(null,"/",A.opts.fs.lstat(A.opts.root).mode,0)},createNode(A,o,B,D){if(!r.isDir(B)&&!r.isFile(B)&&!r.isLink(B))throw new r.ErrnoError(c0.EINVAL);var j=r.createNode(A,o,B);return j.node_ops=B0.node_ops,j.stream_ops=B0.stream_ops,j},realPath(A){for(var o=[];A.parent!==A;)o.push(A.name),A=A.parent;return o.push(A.mount.opts.root),o.reverse(),e0.join(...o)},node_ops:{getattr(A){var o=B0.realPath(A),B;try{B=A.mount.opts.fs.lstat(o)}catch(D){throw D.code?new r.ErrnoError(c0[D.code]):D}return{dev:B.dev,ino:B.ino,mode:B.mode,nlink:B.nlink,uid:B.uid,gid:B.gid,rdev:B.rdev,size:B.size,atime:B.atime,mtime:B.mtime,ctime:B.ctime,blksize:B.blksize,blocks:B.blocks}},setattr(A,o){var B=B0.realPath(A);try{if(o.mode!==void 0&&(A.mount.opts.fs.chmod(B,o.mode),A.mode=o.mode),o.atime||o.mtime){var D=new Date(o.atime||o.mtime),j=new Date(o.mtime||o.atime);A.mount.opts.fs.utime(B,D,j)}o.size!==void 0&&A.mount.opts.fs.truncate(B,o.size)}catch(h){throw h.code?new r.ErrnoError(c0[h.code]):h}},lookup(A,o){try{var B=e0.join2(B0.realPath(A),o),D=A.mount.opts.fs.lstat(B).mode,j=B0.createNode(A,o,D);return j}catch(h){throw h.code?new r.ErrnoError(c0[h.code]):h}},mknod(A,o,B,D){var j=B0.createNode(A,o,B,D),h=B0.realPath(j);try{r.isDir(j.mode)?j.mount.opts.fs.mkdir(h,j.mode):j.mount.opts.fs.writeFile(h,"",{mode:j.mode})}catch(L){throw L.code?new r.ErrnoError(c0[L.code]):L}return j},rename(A,o,B){var D=B0.realPath(A),j=e0.join2(B0.realPath(o),B);try{A.mount.opts.fs.rename(D,j),A.name=B}catch(h){throw h.code?new r.ErrnoError(c0[h.code]):h}},unlink(A,o){var B=e0.join2(B0.realPath(A),o);try{A.mount.opts.fs.unlink(B)}catch(D){throw D.code?new r.ErrnoError(c0[D.code]):D}},rmdir(A,o){var B=e0.join2(B0.realPath(A),o);try{A.mount.opts.fs.rmdir(B)}catch(D){throw D.code?new r.ErrnoError(c0[D.code]):D}},readdir(A){var o=B0.realPath(A);try{return A.mount.opts.fs.readdir(o)}catch(B){throw B.code?new r.ErrnoError(c0[B.code]):B}},symlink(A,o,B){var D=e0.join2(B0.realPath(A),o);try{A.mount.opts.fs.symlink(B,D)}catch(j){throw j.code?new r.ErrnoError(c0[j.code]):j}},readlink(A){var o=B0.realPath(A);try{return A.mount.opts.fs.readlink(o)}catch(B){throw B.code?new r.ErrnoError(c0[B.code]):B}}},stream_ops:{open(A){var o=B0.realPath(A.node);try{A.nfd=A.node.mount.opts.fs.open(o,A.flags)}catch(B){throw B.code?new r.ErrnoError(c0[B.code]):B}},close(A){try{A.node.mount.opts.fs.close(A.nfd)}catch(o){throw o.code?new r.ErrnoError(c0[o.code]):o}},read(A,o,B,D,j){try{return A.node.mount.opts.fs.read(A.nfd,o,B,D,j)}catch(h){throw h.code?new r.ErrnoError(c0[h.code]):h}},write(A,o,B,D,j){try{return A.node.mount.opts.fs.write(A.nfd,o,B,D,j)}catch(h){throw h.code?new r.ErrnoError(c0[h.code]):h}},llseek(A,o,B){var D=o;if(B===1)D+=A.position;else if(B===2&&r.isFile(A.node.mode))try{var j=A.node.node_ops.getattr(A.node);D+=j.size}catch(h){throw new r.ErrnoError(c0[h.code])}if(D<0)throw new r.ErrnoError(c0.EINVAL);return D}}},Pr=async A=>{var o=await b(A);return new Uint8Array(o)},kA=(...A)=>r.createDataFile(...A),Nr=A=>A,Y0=0,fx=null,yA=A=>{if(Y0--,a.monitorRunDependencies?.(Y0),Y0==0&&fx){var o=fx;fx=null,o()}},wA=A=>{Y0++,a.monitorRunDependencies?.(Y0)},_A=[],Lr=async(A,o)=>{typeof Browser<"u"&&Browser.init();for(var B of _A)if(B.canHandle(o))return B.handle(A,o);return A},Qx=async(A,o,B,D,j,h,L,O)=>{var Z=o?Ax.resolve(e0.join2(A,o)):A,v0=Nr(`cp ${Z}`);wA(v0);try{var g0=B;typeof B=="string"&&(g0=await Pr(B)),g0=await Lr(g0,Z),O?.(),h||kA(A,o,g0,D,j,L)}finally{yA(v0)}},Gr=(A,o,B,D,j,h,L,O,Z,v0)=>{Qx(A,o,B,D,j,O,Z,v0).then(h).catch(L)},r={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,filesystems:null,syncFSRequests:0,ErrnoError:class{constructor(A){N0(this,"name","ErrnoError"),this.errno=A}},FSStream:class{constructor(){N0(this,"shared",{})}get object(){return this.node}set object(A){this.node=A}get isRead(){return(this.flags&2097155)!==1}get isWrite(){return(this.flags&2097155)!==0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(A){this.shared.flags=A}get position(){return this.shared.position}set position(A){this.shared.position=A}},FSNode:class{constructor(A,o,B,D){N0(this,"node_ops",{}),N0(this,"stream_ops",{}),N0(this,"readMode",365),N0(this,"writeMode",146),N0(this,"mounted",null),A||(A=this),this.parent=A,this.mount=A.mount,this.id=r.nextInode++,this.name=o,this.mode=B,this.rdev=D,this.atime=this.mtime=this.ctime=Date.now()}get read(){return(this.mode&this.readMode)===this.readMode}set read(A){A?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(A){A?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return r.isDir(this.mode)}get isDevice(){return r.isChrdev(this.mode)}},lookupPath(A,o={}){if(!A)throw new r.ErrnoError(44);o.follow_mount??(o.follow_mount=!0),e0.isAbs(A)||(A=r.cwd()+"/"+A);x:for(var B=0;B<40;B++){for(var D=A.split("/").filter(v0=>!!v0),j=r.root,h="/",L=0;L<D.length;L++){var O=L===D.length-1;if(O&&o.parent)break;if(D[L]!=="."){if(D[L]===".."){if(h=e0.dirname(h),r.isRoot(j)){A=h+"/"+D.slice(L+1).join("/"),B--;continue x}else j=j.parent;continue}h=e0.join2(h,D[L]);try{j=r.lookupNode(j,D[L])}catch(v0){if(v0?.errno===44&&O&&o.noent_okay)return{path:h};throw v0}if(r.isMountpoint(j)&&(!O||o.follow_mount)&&(j=j.mounted.root),r.isLink(j.mode)&&(!O||o.follow)){if(!j.node_ops.readlink)throw new r.ErrnoError(52);var Z=j.node_ops.readlink(j);e0.isAbs(Z)||(Z=e0.dirname(h)+"/"+Z),A=Z+"/"+D.slice(L+1).join("/");continue x}}}return{path:h,node:j}}throw new r.ErrnoError(32)},getPath(A){for(var o;;){if(r.isRoot(A)){var B=A.mount.mountpoint;return o?B[B.length-1]!=="/"?`${B}/${o}`:B+o:B}o=o?`${A.name}/${o}`:A.name,A=A.parent}},hashName(A,o){for(var B=0,D=0;D<o.length;D++)B=(B<<5)-B+o.charCodeAt(D)|0;return(A+B>>>0)%r.nameTable.length},hashAddNode(A){var o=r.hashName(A.parent.id,A.name);A.name_next=r.nameTable[o],r.nameTable[o]=A},hashRemoveNode(A){var o=r.hashName(A.parent.id,A.name);if(r.nameTable[o]===A)r.nameTable[o]=A.name_next;else for(var B=r.nameTable[o];B;){if(B.name_next===A){B.name_next=A.name_next;break}B=B.name_next}},lookupNode(A,o){var B=r.mayLookup(A);if(B)throw new r.ErrnoError(B);for(var D=r.hashName(A.id,o),j=r.nameTable[D];j;j=j.name_next){var h=j.name;if(j.parent.id===A.id&&h===o)return j}return r.lookup(A,o)},createNode(A,o,B,D){var j=new r.FSNode(A,o,B,D);return r.hashAddNode(j),j},destroyNode(A){r.hashRemoveNode(A)},isRoot(A){return A===A.parent},isMountpoint(A){return!!A.mounted},isFile(A){return(A&61440)===32768},isDir(A){return(A&61440)===16384},isLink(A){return(A&61440)===40960},isChrdev(A){return(A&61440)===8192},isBlkdev(A){return(A&61440)===24576},isFIFO(A){return(A&61440)===4096},isSocket(A){return(A&49152)===49152},flagsToPermissionString(A){var o=["r","w","rw"][A&3];return A&512&&(o+="w"),o},nodePermissions(A,o){return r.ignorePermissions?0:o.includes("r")&&!(A.mode&292)||o.includes("w")&&!(A.mode&146)||o.includes("x")&&!(A.mode&73)?2:0},mayLookup(A){if(!r.isDir(A.mode))return 54;var o=r.nodePermissions(A,"x");return o||(A.node_ops.lookup?0:2)},mayCreate(A,o){if(!r.isDir(A.mode))return 54;try{var B=r.lookupNode(A,o);return 20}catch{}return r.nodePermissions(A,"wx")},mayDelete(A,o,B){var D;try{D=r.lookupNode(A,o)}catch(h){return h.errno}var j=r.nodePermissions(A,"wx");if(j)return j;if(B){if(!r.isDir(D.mode))return 54;if(r.isRoot(D)||r.getPath(D)===r.cwd())return 10}else if(r.isDir(D.mode))return 31;return 0},mayOpen(A,o){if(!A)return 44;if(r.isLink(A.mode))return 32;var B=r.flagsToPermissionString(o);return r.isDir(A.mode)&&(B!=="r"||o&576)?31:r.nodePermissions(A,B)},checkOpExists(A,o){if(!A)throw new r.ErrnoError(o);return A},MAX_OPEN_FDS:4096,nextfd(){for(var A=0;A<=r.MAX_OPEN_FDS;A++)if(!r.streams[A])return A;throw new r.ErrnoError(33)},getStreamChecked(A){var o=r.getStream(A);if(!o)throw new r.ErrnoError(8);return o},getStream:A=>r.streams[A],createStream(A,o=-1){return A=Object.assign(new r.FSStream,A),o==-1&&(o=r.nextfd()),A.fd=o,r.streams[o]=A,A},closeStream(A){r.streams[A]=null},dupStream(A,o=-1){var B=r.createStream(A,o);return B.stream_ops?.dup?.(B),B},doSetAttr(A,o,B){var D=A?.stream_ops.setattr,j=D?A:o;D??(D=o.node_ops.setattr),r.checkOpExists(D,63);try{D(j,B)}catch(h){throw h instanceof RangeError?new r.ErrnoError(22):h}},chrdev_stream_ops:{open(A){var o=r.getDevice(A.node.rdev);A.stream_ops=o.stream_ops,A.stream_ops.open?.(A)},llseek(){throw new r.ErrnoError(70)}},major:A=>A>>8,minor:A=>A&255,makedev:(A,o)=>A<<8|o,registerDevice(A,o){r.devices[A]={stream_ops:o}},getDevice:A=>r.devices[A],getMounts(A){for(var o=[],B=[A];B.length;){var D=B.pop();o.push(D),B.push(...D.mounts)}return o},syncfs(A,o){typeof A=="function"&&(o=A,A=!1),r.syncFSRequests++,r.syncFSRequests>1&&N(`warning: ${r.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var B=r.getMounts(r.root.mount),D=0;function j(O){return r.syncFSRequests--,o(O)}function h(O){if(O)return h.errored?void 0:(h.errored=!0,j(O));++D>=B.length&&j(null)}for(var L of B)L.type.syncfs?L.type.syncfs(L,A,h):h(null)},mount(A,o,B){var D=B==="/",j=!B,h;if(D&&r.root)throw new r.ErrnoError(10);if(!D&&!j){var L=r.lookupPath(B,{follow_mount:!1});if(B=L.path,h=L.node,r.isMountpoint(h))throw new r.ErrnoError(10);if(!r.isDir(h.mode))throw new r.ErrnoError(54)}var O={type:A,opts:o,mountpoint:B,mounts:[]},Z=A.mount(O);return Z.mount=O,O.root=Z,D?r.root=Z:h&&(h.mounted=O,h.mount&&h.mount.mounts.push(O)),Z},unmount(A){var o=r.lookupPath(A,{follow_mount:!1});if(!r.isMountpoint(o.node))throw new r.ErrnoError(28);var B=o.node,D=B.mounted,j=r.getMounts(D);for(var[h,L]of Object.entries(r.nameTable))for(;L;){var O=L.name_next;j.includes(L.mount)&&r.destroyNode(L),L=O}B.mounted=null;var Z=B.mount.mounts.indexOf(D);B.mount.mounts.splice(Z,1)},lookup(A,o){return A.node_ops.lookup(A,o)},mknod(A,o,B){var D=r.lookupPath(A,{parent:!0}),j=D.node,h=e0.basename(A);if(!h)throw new r.ErrnoError(28);if(h==="."||h==="..")throw new r.ErrnoError(20);var L=r.mayCreate(j,h);if(L)throw new r.ErrnoError(L);if(!j.node_ops.mknod)throw new r.ErrnoError(63);return j.node_ops.mknod(j,h,o,B)},statfs(A){return r.statfsNode(r.lookupPath(A,{follow:!0}).node)},statfsStream(A){return r.statfsNode(A.node)},statfsNode(A){var o={bsize:4096,frsize:4096,blocks:1e6,bfree:5e5,bavail:5e5,files:r.nextInode,ffree:r.nextInode-1,fsid:42,flags:2,namelen:255};return A.node_ops.statfs&&Object.assign(o,A.node_ops.statfs(A.mount.opts.root)),o},create(A,o=438){return o&=4095,o|=32768,r.mknod(A,o,0)},mkdir(A,o=511){return o&=1023,o|=16384,r.mknod(A,o,0)},mkdirTree(A,o){var B=A.split("/"),D="";for(var j of B)if(j){(D||e0.isAbs(A))&&(D+="/"),D+=j;try{r.mkdir(D,o)}catch(h){if(h.errno!=20)throw h}}},mkdev(A,o,B){return typeof B>"u"&&(B=o,o=438),o|=8192,r.mknod(A,o,B)},symlink(A,o){if(!Ax.resolve(A))throw new r.ErrnoError(44);var B=r.lookupPath(o,{parent:!0}),D=B.node;if(!D)throw new r.ErrnoError(44);var j=e0.basename(o),h=r.mayCreate(D,j);if(h)throw new r.ErrnoError(h);if(!D.node_ops.symlink)throw new r.ErrnoError(63);return D.node_ops.symlink(D,j,A)},rename(A,o){var B=e0.dirname(A),D=e0.dirname(o),j=e0.basename(A),h=e0.basename(o),L,O,Z;if(L=r.lookupPath(A,{parent:!0}),O=L.node,L=r.lookupPath(o,{parent:!0}),Z=L.node,!O||!Z)throw new r.ErrnoError(44);if(O.mount!==Z.mount)throw new r.ErrnoError(75);var v0=r.lookupNode(O,j),g0=Ax.relative(A,D);if(g0.charAt(0)!==".")throw new r.ErrnoError(28);if(g0=Ax.relative(o,B),g0.charAt(0)!==".")throw new r.ErrnoError(55);var p0;try{p0=r.lookupNode(Z,h)}catch{}if(v0!==p0){var D0=r.isDir(v0.mode),s0=r.mayDelete(O,j,D0);if(s0)throw new r.ErrnoError(s0);if(s0=p0?r.mayDelete(Z,h,D0):r.mayCreate(Z,h),s0)throw new r.ErrnoError(s0);if(!O.node_ops.rename)throw new r.ErrnoError(63);if(r.isMountpoint(v0)||p0&&r.isMountpoint(p0))throw new r.ErrnoError(10);if(Z!==O&&(s0=r.nodePermissions(O,"w"),s0))throw new r.ErrnoError(s0);r.hashRemoveNode(v0);try{O.node_ops.rename(v0,Z,h),v0.parent=Z}catch($0){throw $0}finally{r.hashAddNode(v0)}}},rmdir(A){var o=r.lookupPath(A,{parent:!0}),B=o.node,D=e0.basename(A),j=r.lookupNode(B,D),h=r.mayDelete(B,D,!0);if(h)throw new r.ErrnoError(h);if(!B.node_ops.rmdir)throw new r.ErrnoError(63);if(r.isMountpoint(j))throw new r.ErrnoError(10);B.node_ops.rmdir(B,D),r.destroyNode(j)},readdir(A){var o=r.lookupPath(A,{follow:!0}),B=o.node,D=r.checkOpExists(B.node_ops.readdir,54);return D(B)},unlink(A){var o=r.lookupPath(A,{parent:!0}),B=o.node;if(!B)throw new r.ErrnoError(44);var D=e0.basename(A),j=r.lookupNode(B,D),h=r.mayDelete(B,D,!1);if(h)throw new r.ErrnoError(h);if(!B.node_ops.unlink)throw new r.ErrnoError(63);if(r.isMountpoint(j))throw new r.ErrnoError(10);B.node_ops.unlink(B,D),r.destroyNode(j)},readlink(A){var o=r.lookupPath(A),B=o.node;if(!B)throw new r.ErrnoError(44);if(!B.node_ops.readlink)throw new r.ErrnoError(28);return B.node_ops.readlink(B)},stat(A,o){var B=r.lookupPath(A,{follow:!o}),D=B.node,j=r.checkOpExists(D.node_ops.getattr,63);return j(D)},fstat(A){var o=r.getStreamChecked(A),B=o.node,D=o.stream_ops.getattr,j=D?o:B;return D??(D=B.node_ops.getattr),r.checkOpExists(D,63),D(j)},lstat(A){return r.stat(A,!0)},doChmod(A,o,B,D){r.doSetAttr(A,o,{mode:B&4095|o.mode&-4096,ctime:Date.now(),dontFollow:D})},chmod(A,o,B){var D;if(typeof A=="string"){var j=r.lookupPath(A,{follow:!B});D=j.node}else D=A;r.doChmod(null,D,o,B)},lchmod(A,o){r.chmod(A,o,!0)},fchmod(A,o){var B=r.getStreamChecked(A);r.doChmod(B,B.node,o,!1)},doChown(A,o,B){r.doSetAttr(A,o,{timestamp:Date.now(),dontFollow:B})},chown(A,o,B,D){var j;if(typeof A=="string"){var h=r.lookupPath(A,{follow:!D});j=h.node}else j=A;r.doChown(null,j,D)},lchown(A,o,B){r.chown(A,o,B,!0)},fchown(A,o,B){var D=r.getStreamChecked(A);r.doChown(D,D.node,!1)},doTruncate(A,o,B){if(r.isDir(o.mode))throw new r.ErrnoError(31);if(!r.isFile(o.mode))throw new r.ErrnoError(28);var D=r.nodePermissions(o,"w");if(D)throw new r.ErrnoError(D);r.doSetAttr(A,o,{size:B,timestamp:Date.now()})},truncate(A,o){if(o<0)throw new r.ErrnoError(28);var B;if(typeof A=="string"){var D=r.lookupPath(A,{follow:!0});B=D.node}else B=A;r.doTruncate(null,B,o)},ftruncate(A,o){var B=r.getStreamChecked(A);if(o<0||(B.flags&2097155)===0)throw new r.ErrnoError(28);r.doTruncate(B,B.node,o)},utime(A,o,B){var D=r.lookupPath(A,{follow:!0}),j=D.node,h=r.checkOpExists(j.node_ops.setattr,63);h(j,{atime:o,mtime:B})},open(A,o,B=438){if(A==="")throw new r.ErrnoError(44);o=qr(o),o&64?B=B&4095|32768:B=0;var D,j;if(typeof A=="object")D=A;else{j=A.endsWith("/");var h=r.lookupPath(A,{follow:!(o&131072),noent_okay:!0});D=h.node,A=h.path}var L=!1;if(o&64)if(D){if(o&128)throw new r.ErrnoError(20)}else{if(j)throw new r.ErrnoError(31);D=r.mknod(A,B|511,0),L=!0}if(!D)throw new r.ErrnoError(44);if(r.isChrdev(D.mode)&&(o&=-513),o&65536&&!r.isDir(D.mode))throw new r.ErrnoError(54);if(!L){var O=r.mayOpen(D,o);if(O)throw new r.ErrnoError(O)}o&512&&!L&&r.truncate(D,0),o&=-131713;var Z=r.createStream({node:D,path:r.getPath(D),flags:o,seekable:!0,position:0,stream_ops:D.stream_ops,ungotten:[],error:!1});return Z.stream_ops.open&&Z.stream_ops.open(Z),L&&r.chmod(D,B&511),Z},close(A){if(r.isClosed(A))throw new r.ErrnoError(8);A.getdents&&(A.getdents=null);try{A.stream_ops.close&&A.stream_ops.close(A)}catch(o){throw o}finally{r.closeStream(A.fd)}A.fd=null},isClosed(A){return A.fd===null},llseek(A,o,B){if(r.isClosed(A))throw new r.ErrnoError(8);if(!A.seekable||!A.stream_ops.llseek)throw new r.ErrnoError(70);if(B!=0&&B!=1&&B!=2)throw new r.ErrnoError(28);return A.position=A.stream_ops.llseek(A,o,B),A.ungotten=[],A.position},read(A,o,B,D,j){if(D<0||j<0)throw new r.ErrnoError(28);if(r.isClosed(A))throw new r.ErrnoError(8);if((A.flags&2097155)===1)throw new r.ErrnoError(8);if(r.isDir(A.node.mode))throw new r.ErrnoError(31);if(!A.stream_ops.read)throw new r.ErrnoError(28);var h=typeof j<"u";if(!h)j=A.position;else if(!A.seekable)throw new r.ErrnoError(70);var L=A.stream_ops.read(A,o,B,D,j);return h||(A.position+=L),L},write(A,o,B,D,j,h){if(D<0||j<0)throw new r.ErrnoError(28);if(r.isClosed(A))throw new r.ErrnoError(8);if((A.flags&2097155)===0)throw new r.ErrnoError(8);if(r.isDir(A.node.mode))throw new r.ErrnoError(31);if(!A.stream_ops.write)throw new r.ErrnoError(28);A.seekable&&A.flags&1024&&r.llseek(A,0,2);var L=typeof j<"u";if(!L)j=A.position;else if(!A.seekable)throw new r.ErrnoError(70);var O=A.stream_ops.write(A,o,B,D,j,h);return L||(A.position+=O),O},mmap(A,o,B,D,j){if((D&2)!==0&&(j&2)===0&&(A.flags&2097155)!==2)throw new r.ErrnoError(2);if((A.flags&2097155)===1)throw new r.ErrnoError(2);if(!A.stream_ops.mmap)throw new r.ErrnoError(43);if(!o)throw new r.ErrnoError(28);return A.stream_ops.mmap(A,o,B,D,j)},msync(A,o,B,D,j){return A.stream_ops.msync?A.stream_ops.msync(A,o,B,D,j):0},ioctl(A,o,B){if(!A.stream_ops.ioctl)throw new r.ErrnoError(59);return A.stream_ops.ioctl(A,o,B)},readFile(A,o={}){o.flags=o.flags||0,o.encoding=o.encoding||"binary",o.encoding!=="utf8"&&o.encoding!=="binary"&&f0(`Invalid encoding type "${o.encoding}"`);var B=r.open(A,o.flags),D=r.stat(A),j=D.size,h=new Uint8Array(j);return r.read(B,h,0,j,0),o.encoding==="utf8"&&(h=wx(h)),r.close(B),h},writeFile(A,o,B={}){B.flags=B.flags||577;var D=r.open(A,B.flags,B.mode);o=gA(o),r.write(D,o,0,o.byteLength,void 0,B.canOwn),r.close(D)},cwd:()=>r.currentPath,chdir(A){var o=r.lookupPath(A,{follow:!0});if(o.node===null)throw new r.ErrnoError(44);if(!r.isDir(o.node.mode))throw new r.ErrnoError(54);var B=r.nodePermissions(o.node,"x");if(B)throw new r.ErrnoError(B);r.currentPath=o.path},createDefaultDirectories(){r.mkdir("/tmp"),r.mkdir("/home"),r.mkdir("/home/web_user")},createDefaultDevices(){r.mkdir("/dev"),r.registerDevice(r.makedev(1,3),{read:()=>0,write:(D,j,h,L,O)=>L,llseek:()=>0}),r.mkdev("/dev/null",r.makedev(1,3)),G0.register(r.makedev(5,0),G0.default_tty_ops),G0.register(r.makedev(6,0),G0.default_tty1_ops),r.mkdev("/dev/tty",r.makedev(5,0)),r.mkdev("/dev/tty1",r.makedev(6,0));var A=new Uint8Array(1024),o=0,B=()=>(o===0&&(bA(A),o=A.byteLength),A[--o]);r.createDevice("/dev","random",B),r.createDevice("/dev","urandom",B),r.mkdir("/dev/shm"),r.mkdir("/dev/shm/tmp")},createSpecialDirectories(){r.mkdir("/proc");var A=r.mkdir("/proc/self");r.mkdir("/proc/self/fd"),r.mount({mount(){var o=r.createNode(A,"fd",16895,73);return o.stream_ops={llseek:V.stream_ops.llseek},o.node_ops={lookup(B,D){var j=+D,h=r.getStreamChecked(j),L={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>h.path},id:j+1};return L.parent=L,L},readdir(){return Array.from(r.streams.entries()).filter(([B,D])=>D).map(([B,D])=>B.toString())}},o}},{},"/proc/self/fd")},createStandardStreams(A,o,B){A?r.createDevice("/dev","stdin",A):r.symlink("/dev/tty","/dev/stdin"),o?r.createDevice("/dev","stdout",null,o):r.symlink("/dev/tty","/dev/stdout"),B?r.createDevice("/dev","stderr",null,B):r.symlink("/dev/tty1","/dev/stderr");var D=r.open("/dev/stdin",0),j=r.open("/dev/stdout",1),h=r.open("/dev/stderr",1)},staticInit(){r.nameTable=new Array(4096),r.mount(V,{},"/"),r.createDefaultDirectories(),r.createDefaultDevices(),r.createSpecialDirectories(),r.filesystems={MEMFS:V,PROXYFS:B0}},init(A,o,B){r.initialized=!0,A??(A=a.stdin),o??(o=a.stdout),B??(B=a.stderr),r.createStandardStreams(A,o,B)},quit(){r.initialized=!1,er(0);for(var A of r.streams)A&&r.close(A)},findObject(A,o){var B=r.analyzePath(A,o);return B.exists?B.object:null},analyzePath(A,o){try{var B=r.lookupPath(A,{follow:!o});A=B.path}catch{}var D={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var B=r.lookupPath(A,{parent:!0});D.parentExists=!0,D.parentPath=B.path,D.parentObject=B.node,D.name=e0.basename(A),B=r.lookupPath(A,{follow:!o}),D.exists=!0,D.path=B.path,D.object=B.node,D.name=B.node.name,D.isRoot=B.path==="/"}catch(j){D.error=j.errno}return D},createPath(A,o,B,D){A=typeof A=="string"?A:r.getPath(A);for(var j=o.split("/").reverse();j.length;){var h=j.pop();if(h){var L=e0.join2(A,h);try{r.mkdir(L)}catch(O){if(O.errno!=20)throw O}A=L}}return L},createFile(A,o,B,D,j){var h=e0.join2(typeof A=="string"?A:r.getPath(A),o),L=Zx(D,j);return r.create(h,L)},createDataFile(A,o,B,D,j,h){var L=o;A&&(A=typeof A=="string"?A:r.getPath(A),L=o?e0.join2(A,o):A);var O=Zx(D,j),Z=r.create(L,O);if(B){B=gA(B),r.chmod(Z,O|146);var v0=r.open(Z,577);r.write(v0,B,0,B.length,0,h),r.close(v0),r.chmod(Z,O)}},createDevice(A,o,B,D){var j,h=e0.join2(typeof A=="string"?A:r.getPath(A),o),L=Zx(!!B,!!D);(j=r.createDevice).major??(j.major=64);var O=r.makedev(r.createDevice.major++,0);return r.registerDevice(O,{open(Z){Z.seekable=!1},close(Z){D?.buffer?.length&&D(10)},read(Z,v0,g0,p0,D0){for(var s0=0,$0=0;$0<p0;$0++){var U0;try{U0=B()}catch{throw new r.ErrnoError(29)}if(U0===void 0&&s0===0)throw new r.ErrnoError(6);if(U0==null)break;s0++,v0[g0+$0]=U0}return s0&&(Z.node.atime=Date.now()),s0},write(Z,v0,g0,p0,D0){for(var s0=0;s0<p0;s0++)try{D(v0[g0+s0])}catch{throw new r.ErrnoError(29)}return p0&&(Z.node.mtime=Z.node.ctime=Date.now()),s0}}),r.mkdev(h,L,O)},forceLoadFile(A){if(A.isDevice||A.isFolder||A.link||A.contents)return!0;if(globalThis.XMLHttpRequest)f0("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");else try{A.contents=y(A.url)}catch{throw new r.ErrnoError(29)}},createLazyFile(A,o,B,D,j){class h{constructor(){N0(this,"lengthKnown",!1),N0(this,"chunks",[])}get(D0){if(!(D0>this.length-1||D0<0)){var s0=D0%this.chunkSize,$0=D0/this.chunkSize|0;return this.getter($0)[s0]}}setDataGetter(D0){this.getter=D0}cacheLength(){var D0=new XMLHttpRequest;D0.open("HEAD",B,!1),D0.send(null),D0.status>=200&&D0.status<300||D0.status===304||f0("Couldn't load "+B+". Status: "+D0.status);var s0=Number(D0.getResponseHeader("Content-length")),$0,U0=($0=D0.getResponseHeader("Accept-Ranges"))&&$0==="bytes",xx=($0=D0.getResponseHeader("Content-Encoding"))&&$0==="gzip",rx=1024*1024;U0||(rx=s0);var ex=(ix,Sx)=>{ix>Sx&&f0("invalid range ("+ix+", "+Sx+") or no bytes requested!"),Sx>s0-1&&f0("only "+s0+" bytes available! programmer error!");var T0=new XMLHttpRequest;return T0.open("GET",B,!1),s0!==rx&&T0.setRequestHeader("Range","bytes="+ix+"-"+Sx),T0.responseType="arraybuffer",T0.overrideMimeType&&T0.overrideMimeType("text/plain; charset=x-user-defined"),T0.send(null),T0.status>=200&&T0.status<300||T0.status===304||f0("Couldn't load "+B+". Status: "+T0.status),T0.response!==void 0?new Uint8Array(T0.response||[]):Yx(T0.responseText||"",!0)},rA=this;rA.setDataGetter(ix=>{var Sx=ix*rx,T0=(ix+1)*rx-1;return T0=Math.min(T0,s0-1),typeof rA.chunks[ix]>"u"&&(rA.chunks[ix]=ex(Sx,T0)),typeof rA.chunks[ix]>"u"&&f0("doXHR failed!"),rA.chunks[ix]}),(xx||!s0)&&(rx=s0=1,s0=this.getter(0).length,rx=s0,P("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=s0,this._chunkSize=rx,this.lengthKnown=!0}get length(){return this.lengthKnown||this.cacheLength(),this._length}get chunkSize(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}if(globalThis.XMLHttpRequest){l||f0("Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc");var L=new h,O={isDevice:!1,contents:L}}else var O={isDevice:!1,url:B};var Z=r.createFile(A,o,O,D,j);O.contents?Z.contents=O.contents:O.url&&(Z.contents=null,Z.url=O.url),Object.defineProperties(Z,{usedBytes:{get:function(){return this.contents.length}}});var v0={};for(let[p0,D0]of Object.entries(Z.stream_ops))v0[p0]=(...s0)=>(r.forceLoadFile(Z),D0(...s0));function g0(p0,D0,s0,$0,U0){var xx=p0.node.contents;if(U0>=xx.length)return 0;var rx=Math.min(xx.length-U0,$0);if(xx.slice)for(var ex=0;ex<rx;ex++)D0[s0+ex]=xx[U0+ex];else for(var ex=0;ex<rx;ex++)D0[s0+ex]=xx.get(U0+ex);return rx}return v0.read=(p0,D0,s0,$0,U0)=>(r.forceLoadFile(Z),g0(p0,D0,s0,$0,U0)),v0.mmap=(p0,D0,s0,$0,U0)=>{r.forceLoadFile(Z);var xx=hA(D0);if(!xx)throw new r.ErrnoError(48);return g0(p0,q0,xx,D0,s0),{ptr:xx,allocated:!0}},Z.stream_ops=v0,Z}},o0={currentUmask:18,calculateAt(A,o,B){if(e0.isAbs(o))return o;var D;if(A===-100)D=r.cwd();else{var j=o0.getStreamFromFD(A);D=j.path}if(o.length==0){if(!B)throw new r.ErrnoError(44);return D}return D+"/"+o},writeStat(A,o){A0[A>>2]=o.dev,A0[A+4>>2]=o.mode,A0[A+8>>2]=o.nlink,A0[A+12>>2]=o.uid,A0[A+16>>2]=o.gid,A0[A+20>>2]=o.rdev,h0[A+24>>3]=BigInt(o.size),m0[A+32>>2]=4096,m0[A+36>>2]=o.blocks;var B=o.atime.getTime(),D=o.mtime.getTime(),j=o.ctime.getTime();return h0[A+40>>3]=BigInt(Math.floor(B/1e3)),A0[A+48>>2]=B%1e3*1e3*1e3,h0[A+56>>3]=BigInt(Math.floor(D/1e3)),A0[A+64>>2]=D%1e3*1e3*1e3,h0[A+72>>3]=BigInt(Math.floor(j/1e3)),A0[A+80>>2]=j%1e3*1e3*1e3,h0[A+88>>3]=BigInt(o.ino),0},writeStatFs(A,o){A0[A+4>>2]=o.bsize,A0[A+60>>2]=o.bsize,h0[A+8>>3]=BigInt(o.blocks),h0[A+16>>3]=BigInt(o.bfree),h0[A+24>>3]=BigInt(o.bavail),h0[A+32>>3]=BigInt(o.files),h0[A+40>>3]=BigInt(o.ffree),A0[A+48>>2]=o.fsid,A0[A+64>>2]=o.flags,A0[A+56>>2]=o.namelen},doMsync(A,o,B,D,j){if(!r.isFile(o.node.mode))throw new r.ErrnoError(43);if(D&2)return 0;var h=Cx.slice(A,A+B);r.msync(o,h,j,B,D)},getStreamFromFD(A){var o=r.getStreamChecked(A);return o},varargs:void 0,getStr(A){var o=nA(A);return o}};function Tr(A,o,B){o0.varargs=B;try{var D=o0.getStreamFromFD(A);switch(o){case 0:{var j=_x();if(j<0)return-28;for(;r.streams[j];)j++;var h;return h=r.dupStream(D,j),h.fd}case 1:case 2:return 0;case 3:return D.flags;case 4:{var j=_x(),L=289792;return D.flags=D.flags&~L|j&L,0}case 12:{var j=Ix(),O=0;return yx[j+O>>1]=2,0}case 13:case 14:return 0}return-28}catch(Z){if(typeof r>"u"||Z.name!=="ErrnoError")throw Z;return-Z.errno}}function iA(A,o,B){o0.varargs=B;try{var D=o0.getStreamFromFD(A);switch(o){case 21509:return D.tty?0:-59;case 21505:{if(!D.tty)return-59;if(D.tty.ops.ioctl_tcgets){var j=D.tty.ops.ioctl_tcgets(D),h=Ix();m0[h>>2]=j.c_iflag||0,m0[h+4>>2]=j.c_oflag||0,m0[h+8>>2]=j.c_cflag||0,m0[h+12>>2]=j.c_lflag||0;for(var L=0;L<32;L++)q0[h+L+17]=j.c_cc[L]||0;return 0}return 0}case 21510:case 21511:case 21512:return D.tty?0:-59;case 21506:case 21507:case 21508:{if(!D.tty)return-59;if(D.tty.ops.ioctl_tcsets){for(var h=Ix(),O=m0[h>>2],Z=m0[h+4>>2],v0=m0[h+8>>2],g0=m0[h+12>>2],p0=[],L=0;L<32;L++)p0.push(q0[h+L+17]);return D.tty.ops.ioctl_tcsets(D.tty,o,{c_iflag:O,c_oflag:Z,c_cflag:v0,c_lflag:g0,c_cc:p0})}return 0}case 21519:{if(!D.tty)return-59;var h=Ix();return m0[h>>2]=0,0}case 21520:return D.tty?-28:-59;case 21537:case 21531:{var h=Ix();return r.ioctl(D,o,h)}case 21523:{if(!D.tty)return-59;if(D.tty.ops.ioctl_tiocgwinsz){var D0=D.tty.ops.ioctl_tiocgwinsz(D.tty),h=Ix();yx[h>>1]=D0[0],yx[h+2>>1]=D0[1]}return 0}case 21524:return D.tty?0:-59;case 21515:return D.tty?0:-59;default:return-28}}catch(s0){if(typeof r>"u"||s0.name!=="ErrnoError")throw s0;return-s0.errno}}function Mx(A,o,B,D){o0.varargs=D;try{o=o0.getStr(o),o=o0.calculateAt(A,o);var j=D?_x():0;return B&64&&(j&=~o0.currentUmask),r.open(o,B,j).fd}catch(h){if(typeof r>"u"||h.name!=="ErrnoError")throw h;return-h.errno}}var Ir=()=>2147483648,$A=(A,o)=>Math.ceil(A/o)*o,Mr=A=>{var o=xA.buffer.byteLength,B=(A-o+65535)/65536|0;try{return xA.grow(B),z(),1}catch{}},Sr=A=>{var o=Cx.length;A>>>=0;var B=Ir();if(A>B)return!1;for(var D=1;D<=4;D*=2){var j=o*(1+.2/D);j=Math.min(j,A+100663296);var h=Math.min(B,$A(Math.max(A,j),65536)),L=Mr(h);if(L)return!0}return!1};function Rr(A){try{var o=o0.getStreamFromFD(A);return r.close(o),0}catch(B){if(typeof r>"u"||B.name!=="ErrnoError")throw B;return B.errno}}var Or=(A,o,B,D)=>{for(var j=0,h=0;h<B;h++){var L=A0[o>>2],O=A0[o+4>>2];o+=8;var Z=r.read(A,q0,L,O,D);if(Z<0)return-1;if(j+=Z,Z<O)break;typeof D<"u"&&(D+=Z)}return j};function Ur(A,o,B,D){try{var j=o0.getStreamFromFD(A),h=Or(j,o,B);return A0[D>>2]=h,0}catch(L){if(typeof r>"u"||L.name!=="ErrnoError")throw L;return L.errno}}var Hr=9007199254740992,zr=-9007199254740992,Jr=A=>A<zr||A>Hr?NaN:Number(A);function Kr(A,o,B,D){o=Jr(o);try{if(isNaN(o))return 22;var j=o0.getStreamFromFD(A);return r.llseek(j,o,B),h0[D>>3]=BigInt(j.position),j.getdents&&o===0&&B===0&&(j.getdents=null),0}catch(h){if(typeof r>"u"||h.name!=="ErrnoError")throw h;return h.errno}}var Vr=(A,o,B,D)=>{for(var j=0,h=0;h<B;h++){var L=A0[o>>2],O=A0[o+4>>2];o+=8;var Z=r.write(A,q0,L,O,D);if(Z<0)return-1;if(j+=Z,Z<O)break;typeof D<"u"&&(D+=Z)}return j};function Wr(A,o,B,D){try{var j=o0.getStreamFromFD(A),h=Vr(j,o,B);return A0[D>>2]=h,0}catch(L){if(typeof r>"u"||L.name!=="ErrnoError")throw L;return L.errno}}var Xr=0,ZA=()=>uA||Xr>0,Yr=A=>{g=A,ZA()||(a.onExit?.(A),W=!0),k(A,new Vx(A))},QA=(A,o)=>{g=A,ZA()||t0(),Yr(A)},Zr=A=>{if(A instanceof Vx||A=="unwind")return g;k(1,A)},Qr=(A,o,B)=>mA(A,Cx,o,B),xr=A=>qA(A),xe=A=>{var o=Xx(A)+1,B=xr(o);return Qr(A,B,o),B},Ae=(...A)=>r.createPath(...A),re=(...A)=>r.unlink(...A),ee=(...A)=>r.createLazyFile(...A),te=(...A)=>r.createDevice(...A);if(r.createPreloadedFile=Gr,r.preloadFile=Qx,r.staticInit(),a.noExitRuntime&&(uA=a.noExitRuntime),a.preloadPlugins&&(_A=a.preloadPlugins),a.print&&(P=a.print),a.printErr&&(N=a.printErr),a.wasmBinary&&(M=a.wasmBinary),a.arguments&&(u=a.arguments),a.thisProgram&&(p=a.thisProgram),a.preInit)for(typeof a.preInit=="function"&&(a.preInit=[a.preInit]);a.preInit.length>0;)a.preInit.shift()();a.callMain=O0,a.addRunDependency=wA,a.removeRunDependency=yA,a.FS_preloadFile=Qx,a.FS_unlink=re,a.FS_createPath=Ae,a.FS_createDevice=te,a.FS=r,a.FS_createDataFile=kA,a.FS_createLazyFile=ee,a.PROXYFS=B0;var Ar,rr,er,ne,qA,ie,Fe,se,xA;function ae(A){Ar=a._main=A.__main_argc_argv,rr=A.__funcs_on_exit,er=A.fflush,ne=A._emscripten_stack_restore,qA=A._emscripten_stack_alloc,ie=A.emscripten_stack_get_current,Fe=xA=A.memory,se=A.__indirect_function_table}var PA={__assert_fail:Tx,__syscall_fcntl64:Tr,__syscall_ioctl:iA,__syscall_openat:Mx,emscripten_resize_heap:Sr,fd_close:Rr,fd_read:Ur,fd_seek:Kr,fd_write:Wr};function O0(A=[]){var o=Ar;A.unshift(p);var B=A.length,D=xr((B+1)*4),j=D;for(var h of A)A0[j>>2]=xe(h),j+=4;A0[j>>2]=0;try{var L=o(B,D);return QA(L,!0),L}catch(O){return Zr(O)}}function NA(A=u){if(Y0>0){fx=NA;return}if(T(),Y0>0){fx=NA;return}function o(){if(a.calledRun=!0,!W){Q(),I?.(a),a.onRuntimeInitialized?.();var B=a.noInitialRun||!0;B||O0(A),n0()}}a.setStatus?(a.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>a.setStatus(""),1),o()},1)):o()}var AA;return AA=await Gx(),NA(),K?E=a:E=new Promise((A,o)=>{I=A,H=o}),E}})();typeof t=="object"&&typeof e=="object"?(e.exports=F,e.exports.default=F):typeof define=="function"&&define.amd&&define([],()=>F)}}),Ht={};kF(Ht,{createPawnCC:()=>PF,createPawnDbg:()=>NF});zt.exports=yF(Ht);var $F=Ut(wF(),1),qF=Ut(_F(),1),PF=$F.default,NF=qF.default});var Ss={};Gn(Ss,{APM:()=>F0,DDE:()=>Ex,DDE_Core:()=>u0,DFILES:()=>VA,DLO:()=>KA,DefaultFiles:()=>X,Dependencies:()=>_0,DeviceProfiles:()=>or,Diagnostics:()=>TA,ENV:()=>$e,Globals:()=>M0,Helper:()=>i0,HttpMethod:()=>Pe,Library:()=>eA,Log:()=>qe,Manifest:()=>R,MyDatanetClient:()=>br,Package:()=>X0,Registry:()=>y0,build:()=>Gs,buildDevelopmentInstallInfo:()=>bn,generateDevApmId:()=>Ne,install:()=>Ls,pack:()=>Ms,publish:()=>Is});module.exports=Tn(Ss);var S0=require("vscode-uri");var cA=require("vscode-uri");var In=new Uint32Array([0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117]);function nr(t,e=0){let F=~~e^-1;for(let i=0;i<t.length;i++)F=F>>>8^In[(F^t[i])&255];return(F^-1)>>>0}var Os=new Uint8Array([0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64]),Us=new Uint8Array([0,192,193,1,195,3,2,194,198,6,7,199,5,197,196,4,204,12,13,205,15,207,206,14,10,202,203,11,201,9,8,200,216,24,25,217,27,219,218,26,30,222,223,31,221,29,28,220,20,212,213,21,215,23,22,214,210,18,19,211,17,209,208,16,240,48,49,241,51,243,242,50,54,246,247,55,245,53,52,244,60,252,253,61,255,63,62,254,250,58,59,251,57,249,248,56,40,232,233,41,235,43,42,234,238,46,47,239,45,237,236,44,228,36,37,229,39,231,230,38,34,226,227,35,225,33,32,224,160,96,97,161,99,163,162,98,102,166,167,103,165,101,100,164,108,172,173,109,175,111,110,174,170,106,107,171,105,169,168,104,120,184,185,121,187,123,122,186,190,126,127,191,125,189,188,124,180,116,117,181,119,183,182,118,114,178,179,115,177,113,112,176,80,144,145,81,147,83,82,146,150,86,87,151,85,149,148,84,156,92,93,157,95,159,158,94,90,154,155,91,153,89,88,152,136,72,73,137,75,139,138,74,78,142,143,79,141,77,76,140,68,132,133,69,135,71,70,134,130,66,67,131,65,129,128,64]);var i0;(w=>{function t(b,y){let[$,P]=y,{line:N,col:M}=b.linePos($);return{line:Number(N)-1,startCharacter:M-1,endCharacter:M+(P-$)}}w.yamlRangeToLineInformation=t;let e=new TextEncoder;function F(b){return nr(e.encode(b)).toString(16)}w.generateHashForLibraryName=F;function i(b){return nr(e.encode(b)).toString(16)}w.generateHashForFilePath=i;function s(b){return nr(b).toString(16).toUpperCase().padStart(8,"0")}w.generateCRC32ForFileContent=s;function E(b){try{let y=null;return b?.type==="Buffer"?y=Uint8Array.from(b.data):y=b,new TextDecoder("utf8").decode(y)}catch{return""}}w.convertBlobToString=E;function a(b=""){return b.replace(/\r\n|\n\r|\r/g,`
|
|
1528
|
-
`)}w.normalizeLF=
|
|
1529
|
-
`)}catch{return[]}}w.convertBlobToStringArray=C,w.isNumeric=b=>!Array.isArray(b)&&b-parseFloat(b)+1>=0;function d(b){let
|
|
1526
|
+
\0A\x80\v\vp\0\0D\0\0\0`)}function S0(A){return A}async function Cx(A){return A}async function Tx(A,o){try{var B=await Cx(A),D=await WebAssembly.instantiate(B,o);return D}catch(j){N(`failed to asynchronously prepare wasm: ${j}`),i0(j)}}async function Ix(A,o,B){return Tx(o,B)}function Mx(){var A={env:PA,wasi_snapshot_preview1:PA};return A}async function Q0(){function A(h,G){return AA=h.exports,se(AA),Z(),AA}function o(h){return A(h.instance)}var B=Mx();if(s.instantiateWasm)return new Promise((h,G)=>{s.instantiateWasm(B,(z,Q)=>{h(A(z,Q))})});d0??(d0=b0());var D=await Ix(S,d0,B),j=o(D);return j}class wx{constructor(o){N0(this,"name","ExitStatus"),this.message=`Program terminated with exit(${o})`,this.status=o}}var _x,h0,g0,P0,mr,hr,gr,r0,kr,fx,dA=A=>{for(;A.length>0;)A.shift()(s)},jA=[],yr=A=>jA.push(A),pA=[],wr=A=>pA.push(A),uA=!1,O0=globalThis.TextDecoder&&new TextDecoder,V0=(A,o,B,D)=>{var j=o+B;if(D)return j;for(;A[o]&&!(o>=j);)++o;return o},$x=(A,o=0,B,D)=>{var j=V0(A,o,B,D);if(j-o>16&&A.buffer&&O0)return O0.decode(A.subarray(o,j));for(var h="";o<j;){var G=A[o++];if(!(G&128)){h+=String.fromCharCode(G);continue}var z=A[o++]&63;if((G&224)==192){h+=String.fromCharCode((G&31)<<6|z);continue}var Q=A[o++]&63;if((G&240)==224?G=(G&15)<<12|z<<6|Q:G=(G&7)<<18|z<<12|Q<<6|A[o++]&63,G<65536)h+=String.fromCharCode(G);else{var E0=G-65536;h+=String.fromCharCode(55296|E0>>10,56320|E0&1023)}}return h},nA=(A,o,B)=>A?$x(fx,A,o,B):"",Sx=(A,o,B,D)=>i0(`Assertion failed: ${nA(A)}, at: `+[o?nA(o):"unknown filename",B,D?nA(D):"unknown function"]),qx=()=>{var A=h0[+v0.varargs>>2];return v0.varargs+=4,A},Rx=qx,t0={isAbs:A=>A.charAt(0)==="/",splitPath:A=>{var o=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return o.exec(A).slice(1)},normalizeArray:(A,o)=>{for(var B=0,D=A.length-1;D>=0;D--){var j=A[D];j==="."?A.splice(D,1):j===".."?(A.splice(D,1),B++):B&&(A.splice(D,1),B--)}if(o)for(;B;B--)A.unshift("..");return A},normalize:A=>{var o=t0.isAbs(A),B=A.slice(-1)==="/";return A=t0.normalizeArray(A.split("/").filter(D=>!!D),!o).join("/"),!A&&!o&&(A="."),A&&B&&(A+="/"),(o?"/":"")+A},dirname:A=>{var o=t0.splitPath(A),B=o[0],D=o[1];return!B&&!D?".":(D&&(D=D.slice(0,-1)),B+D)},basename:A=>A&&A.match(/([^\/]+|\/)\/*$/)[1],join:(...A)=>t0.normalize(A.join("/")),join2:(A,o)=>t0.normalize(A+"/"+o)},_r=()=>{if(d){var A=require("crypto");return o=>A.randomFillSync(o)}return o=>(crypto.getRandomValues(o),0)},bA=A=>(bA=_r())(A),Ax={resolve:(...A)=>{for(var o="",B=!1,D=A.length-1;D>=-1&&!B;D--){var j=D>=0?A[D]:r.cwd();if(typeof j!="string")throw new TypeError("Arguments to path.resolve must be strings");if(!j)return"";o=j+"/"+o,B=t0.isAbs(j)}return o=t0.normalizeArray(o.split("/").filter(h=>!!h),!B).join("/"),(B?"/":"")+o||"."},relative:(A,o)=>{A=Ax.resolve(A).slice(1),o=Ax.resolve(o).slice(1);function B(E0){for(var k0=0;k0<E0.length&&E0[k0]==="";k0++);for(var p0=E0.length-1;p0>=0&&E0[p0]==="";p0--);return k0>p0?[]:E0.slice(k0,p0-k0+1)}for(var D=B(A.split("/")),j=B(o.split("/")),h=Math.min(D.length,j.length),G=h,z=0;z<h;z++)if(D[z]!==j[z]){G=z;break}for(var Q=[],z=G;z<D.length;z++)Q.push("..");return Q=Q.concat(j.slice(G)),Q.join("/")}},Wx=[],Xx=A=>{for(var o=0,B=0;B<A.length;++B){var D=A.charCodeAt(B);D<=127?o++:D<=2047?o+=2:D>=55296&&D<=57343?(o+=4,++B):o+=3}return o},mA=(A,o,B,D)=>{if(!(D>0))return 0;for(var j=B,h=B+D-1,G=0;G<A.length;++G){var z=A.codePointAt(G);if(z<=127){if(B>=h)break;o[B++]=z}else if(z<=2047){if(B+1>=h)break;o[B++]=192|z>>6,o[B++]=128|z&63}else if(z<=65535){if(B+2>=h)break;o[B++]=224|z>>12,o[B++]=128|z>>6&63,o[B++]=128|z&63}else{if(B+3>=h)break;o[B++]=240|z>>18,o[B++]=128|z>>12&63,o[B++]=128|z>>6&63,o[B++]=128|z&63,G++}}return o[B]=0,B-j},Yx=(A,o,B)=>{var D=B>0?B:Xx(A)+1,j=new Array(D),h=mA(A,j,0,j.length);return o&&(j.length=h),j},$r=()=>{if(!Wx.length){var A=null;if(d){var o=256,B=Buffer.alloc(o),D=0,j=process.stdin.fd;try{D=_.readSync(j,B,0,o)}catch(h){if(h.toString().includes("EOF"))D=0;else throw h}D>0&&(A=B.slice(0,D).toString("utf-8"))}else globalThis.window?.prompt&&(A=window.prompt("Input: "),A!==null&&(A+=`
|
|
1527
|
+
`));if(!A)return null;Wx=Yx(A,!0)}return Wx.shift()},T0={ttys:[],init(){},shutdown(){},register(A,o){T0.ttys[A]={input:[],output:[],ops:o},r.registerDevice(A,T0.stream_ops)},stream_ops:{open(A){var o=T0.ttys[A.node.rdev];if(!o)throw new r.ErrnoError(43);A.tty=o,A.seekable=!1},close(A){A.tty.ops.fsync(A.tty)},fsync(A){A.tty.ops.fsync(A.tty)},read(A,o,B,D,j){if(!A.tty||!A.tty.ops.get_char)throw new r.ErrnoError(60);for(var h=0,G=0;G<D;G++){var z;try{z=A.tty.ops.get_char(A.tty)}catch{throw new r.ErrnoError(29)}if(z===void 0&&h===0)throw new r.ErrnoError(6);if(z==null)break;h++,o[B+G]=z}return h&&(A.node.atime=Date.now()),h},write(A,o,B,D,j){if(!A.tty||!A.tty.ops.put_char)throw new r.ErrnoError(60);try{for(var h=0;h<D;h++)A.tty.ops.put_char(A.tty,o[B+h])}catch{throw new r.ErrnoError(29)}return D&&(A.node.mtime=A.node.ctime=Date.now()),h}},default_tty_ops:{get_char(A){return $r()},put_char(A,o){o===null||o===10?(q($x(A.output)),A.output=[]):o!=0&&A.output.push(o)},fsync(A){A.output?.length>0&&(q($x(A.output)),A.output=[])},ioctl_tcgets(A){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(A,o,B){return 0},ioctl_tiocgwinsz(A){return[24,80]}},default_tty1_ops:{put_char(A,o){o===null||o===10?(N($x(A.output)),A.output=[]):o!=0&&A.output.push(o)},fsync(A){A.output?.length>0&&(N($x(A.output)),A.output=[])}}},hA=A=>{i0()},K={ops_table:null,mount(A){return K.createNode(null,"/",16895,0)},createNode(A,o,B,D){if(r.isBlkdev(B)||r.isFIFO(B))throw new r.ErrnoError(63);K.ops_table||(K.ops_table={dir:{node:{getattr:K.node_ops.getattr,setattr:K.node_ops.setattr,lookup:K.node_ops.lookup,mknod:K.node_ops.mknod,rename:K.node_ops.rename,unlink:K.node_ops.unlink,rmdir:K.node_ops.rmdir,readdir:K.node_ops.readdir,symlink:K.node_ops.symlink},stream:{llseek:K.stream_ops.llseek}},file:{node:{getattr:K.node_ops.getattr,setattr:K.node_ops.setattr},stream:{llseek:K.stream_ops.llseek,read:K.stream_ops.read,write:K.stream_ops.write,mmap:K.stream_ops.mmap,msync:K.stream_ops.msync}},link:{node:{getattr:K.node_ops.getattr,setattr:K.node_ops.setattr,readlink:K.node_ops.readlink},stream:{}},chrdev:{node:{getattr:K.node_ops.getattr,setattr:K.node_ops.setattr},stream:r.chrdev_stream_ops}});var j=r.createNode(A,o,B,D);return r.isDir(j.mode)?(j.node_ops=K.ops_table.dir.node,j.stream_ops=K.ops_table.dir.stream,j.contents={}):r.isFile(j.mode)?(j.node_ops=K.ops_table.file.node,j.stream_ops=K.ops_table.file.stream,j.usedBytes=0,j.contents=K.emptyFileContents??(K.emptyFileContents=new Uint8Array(0))):r.isLink(j.mode)?(j.node_ops=K.ops_table.link.node,j.stream_ops=K.ops_table.link.stream):r.isChrdev(j.mode)&&(j.node_ops=K.ops_table.chrdev.node,j.stream_ops=K.ops_table.chrdev.stream),j.atime=j.mtime=j.ctime=Date.now(),A&&(A.contents[o]=j,A.atime=A.mtime=A.ctime=j.atime),j},getFileDataAsTypedArray(A){return A.contents.subarray(0,A.usedBytes)},expandFileStorage(A,o){var B=A.contents.length;if(!(B>=o)){var D=1024*1024;o=Math.max(o,B*(B<D?2:1.125)>>>0),B&&(o=Math.max(o,256));var j=K.getFileDataAsTypedArray(A);A.contents=new Uint8Array(o),A.contents.set(j)}},resizeFileStorage(A,o){if(A.usedBytes!=o){var B=A.contents;A.contents=new Uint8Array(o),A.contents.set(B.subarray(0,Math.min(o,A.usedBytes))),A.usedBytes=o}},node_ops:{getattr(A){var o={};return o.dev=r.isChrdev(A.mode)?A.id:1,o.ino=A.id,o.mode=A.mode,o.nlink=1,o.uid=0,o.gid=0,o.rdev=A.rdev,r.isDir(A.mode)?o.size=4096:r.isFile(A.mode)?o.size=A.usedBytes:r.isLink(A.mode)?o.size=A.link.length:o.size=0,o.atime=new Date(A.atime),o.mtime=new Date(A.mtime),o.ctime=new Date(A.ctime),o.blksize=4096,o.blocks=Math.ceil(o.size/o.blksize),o},setattr(A,o){for(let B of["mode","atime","mtime","ctime"])o[B]!=null&&(A[B]=o[B]);o.size!==void 0&&K.resizeFileStorage(A,o.size)},lookup(A,o){throw K.doesNotExistError||(K.doesNotExistError=new r.ErrnoError(44),K.doesNotExistError.stack="<generic error, no stack>"),K.doesNotExistError},mknod(A,o,B,D){return K.createNode(A,o,B,D)},rename(A,o,B){var D;try{D=r.lookupNode(o,B)}catch{}if(D){if(r.isDir(A.mode))for(var j in D.contents)throw new r.ErrnoError(55);r.hashRemoveNode(D)}delete A.parent.contents[A.name],o.contents[B]=A,A.name=B,o.ctime=o.mtime=A.parent.ctime=A.parent.mtime=Date.now()},unlink(A,o){delete A.contents[o],A.ctime=A.mtime=Date.now()},rmdir(A,o){var B=r.lookupNode(A,o);for(var D in B.contents)throw new r.ErrnoError(55);delete A.contents[o],A.ctime=A.mtime=Date.now()},readdir(A){return[".","..",...Object.keys(A.contents)]},symlink(A,o,B){var D=K.createNode(A,o,41471,0);return D.link=B,D},readlink(A){if(!r.isLink(A.mode))throw new r.ErrnoError(28);return A.link}},stream_ops:{read(A,o,B,D,j){var h=A.node.contents;if(j>=A.node.usedBytes)return 0;var G=Math.min(A.node.usedBytes-j,D);return o.set(h.subarray(j,j+G),B),G},write(A,o,B,D,j,h){if(o.buffer===P0.buffer&&(h=!1),!D)return 0;var G=A.node;return G.mtime=G.ctime=Date.now(),h?(G.contents=o.subarray(B,B+D),G.usedBytes=D):G.usedBytes===0&&j===0?(G.contents=o.slice(B,B+D),G.usedBytes=D):(K.expandFileStorage(G,j+D),G.contents.set(o.subarray(B,B+D),j),G.usedBytes=Math.max(G.usedBytes,j+D)),D},llseek(A,o,B){var D=o;if(B===1?D+=A.position:B===2&&r.isFile(A.node.mode)&&(D+=A.node.usedBytes),D<0)throw new r.ErrnoError(28);return D},mmap(A,o,B,D,j){if(!r.isFile(A.node.mode))throw new r.ErrnoError(43);var h,G,z=A.node.contents;if(!(j&2)&&z.buffer===P0.buffer)G=!1,h=z.byteOffset;else{if(G=!0,h=hA(o),!h)throw new r.ErrnoError(48);z&&((B>0||B+o<z.length)&&(z.subarray?z=z.subarray(B,B+o):z=Array.prototype.slice.call(z,B,B+o)),P0.set(z,h))}return{ptr:h,allocated:G}},msync(A,o,B,D,j){return K.stream_ops.write(A,o,0,D,B,!1),0}}},qr=A=>{if(typeof A!="string")return A;var o={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},B=o[A];if(typeof B>"u")throw new Error(`Unknown file open mode: ${A}`);return B},gA=A=>(typeof A=="string"&&(A=Yx(A,!0)),A.subarray||(A=new Uint8Array(A)),A),Zx=(A,o)=>{var B=0;return A&&(B|=365),o&&(B|=146),B},l0={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135},C0={mount(A){return C0.createNode(null,"/",A.opts.fs.lstat(A.opts.root).mode,0)},createNode(A,o,B,D){if(!r.isDir(B)&&!r.isFile(B)&&!r.isLink(B))throw new r.ErrnoError(l0.EINVAL);var j=r.createNode(A,o,B);return j.node_ops=C0.node_ops,j.stream_ops=C0.stream_ops,j},realPath(A){for(var o=[];A.parent!==A;)o.push(A.name),A=A.parent;return o.push(A.mount.opts.root),o.reverse(),t0.join(...o)},node_ops:{getattr(A){var o=C0.realPath(A),B;try{B=A.mount.opts.fs.lstat(o)}catch(D){throw D.code?new r.ErrnoError(l0[D.code]):D}return{dev:B.dev,ino:B.ino,mode:B.mode,nlink:B.nlink,uid:B.uid,gid:B.gid,rdev:B.rdev,size:B.size,atime:B.atime,mtime:B.mtime,ctime:B.ctime,blksize:B.blksize,blocks:B.blocks}},setattr(A,o){var B=C0.realPath(A);try{if(o.mode!==void 0&&(A.mount.opts.fs.chmod(B,o.mode),A.mode=o.mode),o.atime||o.mtime){var D=new Date(o.atime||o.mtime),j=new Date(o.mtime||o.atime);A.mount.opts.fs.utime(B,D,j)}o.size!==void 0&&A.mount.opts.fs.truncate(B,o.size)}catch(h){throw h.code?new r.ErrnoError(l0[h.code]):h}},lookup(A,o){try{var B=t0.join2(C0.realPath(A),o),D=A.mount.opts.fs.lstat(B).mode,j=C0.createNode(A,o,D);return j}catch(h){throw h.code?new r.ErrnoError(l0[h.code]):h}},mknod(A,o,B,D){var j=C0.createNode(A,o,B,D),h=C0.realPath(j);try{r.isDir(j.mode)?j.mount.opts.fs.mkdir(h,j.mode):j.mount.opts.fs.writeFile(h,"",{mode:j.mode})}catch(G){throw G.code?new r.ErrnoError(l0[G.code]):G}return j},rename(A,o,B){var D=C0.realPath(A),j=t0.join2(C0.realPath(o),B);try{A.mount.opts.fs.rename(D,j),A.name=B}catch(h){throw h.code?new r.ErrnoError(l0[h.code]):h}},unlink(A,o){var B=t0.join2(C0.realPath(A),o);try{A.mount.opts.fs.unlink(B)}catch(D){throw D.code?new r.ErrnoError(l0[D.code]):D}},rmdir(A,o){var B=t0.join2(C0.realPath(A),o);try{A.mount.opts.fs.rmdir(B)}catch(D){throw D.code?new r.ErrnoError(l0[D.code]):D}},readdir(A){var o=C0.realPath(A);try{return A.mount.opts.fs.readdir(o)}catch(B){throw B.code?new r.ErrnoError(l0[B.code]):B}},symlink(A,o,B){var D=t0.join2(C0.realPath(A),o);try{A.mount.opts.fs.symlink(B,D)}catch(j){throw j.code?new r.ErrnoError(l0[j.code]):j}},readlink(A){var o=C0.realPath(A);try{return A.mount.opts.fs.readlink(o)}catch(B){throw B.code?new r.ErrnoError(l0[B.code]):B}}},stream_ops:{open(A){var o=C0.realPath(A.node);try{A.nfd=A.node.mount.opts.fs.open(o,A.flags)}catch(B){throw B.code?new r.ErrnoError(l0[B.code]):B}},close(A){try{A.node.mount.opts.fs.close(A.nfd)}catch(o){throw o.code?new r.ErrnoError(l0[o.code]):o}},read(A,o,B,D,j){try{return A.node.mount.opts.fs.read(A.nfd,o,B,D,j)}catch(h){throw h.code?new r.ErrnoError(l0[h.code]):h}},write(A,o,B,D,j){try{return A.node.mount.opts.fs.write(A.nfd,o,B,D,j)}catch(h){throw h.code?new r.ErrnoError(l0[h.code]):h}},llseek(A,o,B){var D=o;if(B===1)D+=A.position;else if(B===2&&r.isFile(A.node.mode))try{var j=A.node.node_ops.getattr(A.node);D+=j.size}catch(h){throw new r.ErrnoError(l0[h.code])}if(D<0)throw new r.ErrnoError(l0.EINVAL);return D}}},Pr=async A=>{var o=await b(A);return new Uint8Array(o)},kA=(...A)=>r.createDataFile(...A),Lr=A=>A,Y0=0,Dx=null,yA=A=>{if(Y0--,s.monitorRunDependencies?.(Y0),Y0==0&&Dx){var o=Dx;Dx=null,o()}},wA=A=>{Y0++,s.monitorRunDependencies?.(Y0)},_A=[],Nr=async(A,o)=>{typeof Browser<"u"&&Browser.init();for(var B of _A)if(B.canHandle(o))return B.handle(A,o);return A},Qx=async(A,o,B,D,j,h,G,z)=>{var Q=o?Ax.resolve(t0.join2(A,o)):A,E0=Lr(`cp ${Q}`);wA(E0);try{var k0=B;typeof B=="string"&&(k0=await Pr(B)),k0=await Nr(k0,Q),z?.(),h||kA(A,o,k0,D,j,G)}finally{yA(E0)}},Gr=(A,o,B,D,j,h,G,z,Q,E0)=>{Qx(A,o,B,D,j,z,Q,E0).then(h).catch(G)},r={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,filesystems:null,syncFSRequests:0,ErrnoError:class{constructor(A){N0(this,"name","ErrnoError"),this.errno=A}},FSStream:class{constructor(){N0(this,"shared",{})}get object(){return this.node}set object(A){this.node=A}get isRead(){return(this.flags&2097155)!==1}get isWrite(){return(this.flags&2097155)!==0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(A){this.shared.flags=A}get position(){return this.shared.position}set position(A){this.shared.position=A}},FSNode:class{constructor(A,o,B,D){N0(this,"node_ops",{}),N0(this,"stream_ops",{}),N0(this,"readMode",365),N0(this,"writeMode",146),N0(this,"mounted",null),A||(A=this),this.parent=A,this.mount=A.mount,this.id=r.nextInode++,this.name=o,this.mode=B,this.rdev=D,this.atime=this.mtime=this.ctime=Date.now()}get read(){return(this.mode&this.readMode)===this.readMode}set read(A){A?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(A){A?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return r.isDir(this.mode)}get isDevice(){return r.isChrdev(this.mode)}},lookupPath(A,o={}){if(!A)throw new r.ErrnoError(44);o.follow_mount??(o.follow_mount=!0),t0.isAbs(A)||(A=r.cwd()+"/"+A);x:for(var B=0;B<40;B++){for(var D=A.split("/").filter(E0=>!!E0),j=r.root,h="/",G=0;G<D.length;G++){var z=G===D.length-1;if(z&&o.parent)break;if(D[G]!=="."){if(D[G]===".."){if(h=t0.dirname(h),r.isRoot(j)){A=h+"/"+D.slice(G+1).join("/"),B--;continue x}else j=j.parent;continue}h=t0.join2(h,D[G]);try{j=r.lookupNode(j,D[G])}catch(E0){if(E0?.errno===44&&z&&o.noent_okay)return{path:h};throw E0}if(r.isMountpoint(j)&&(!z||o.follow_mount)&&(j=j.mounted.root),r.isLink(j.mode)&&(!z||o.follow)){if(!j.node_ops.readlink)throw new r.ErrnoError(52);var Q=j.node_ops.readlink(j);t0.isAbs(Q)||(Q=t0.dirname(h)+"/"+Q),A=Q+"/"+D.slice(G+1).join("/");continue x}}}return{path:h,node:j}}throw new r.ErrnoError(32)},getPath(A){for(var o;;){if(r.isRoot(A)){var B=A.mount.mountpoint;return o?B[B.length-1]!=="/"?`${B}/${o}`:B+o:B}o=o?`${A.name}/${o}`:A.name,A=A.parent}},hashName(A,o){for(var B=0,D=0;D<o.length;D++)B=(B<<5)-B+o.charCodeAt(D)|0;return(A+B>>>0)%r.nameTable.length},hashAddNode(A){var o=r.hashName(A.parent.id,A.name);A.name_next=r.nameTable[o],r.nameTable[o]=A},hashRemoveNode(A){var o=r.hashName(A.parent.id,A.name);if(r.nameTable[o]===A)r.nameTable[o]=A.name_next;else for(var B=r.nameTable[o];B;){if(B.name_next===A){B.name_next=A.name_next;break}B=B.name_next}},lookupNode(A,o){var B=r.mayLookup(A);if(B)throw new r.ErrnoError(B);for(var D=r.hashName(A.id,o),j=r.nameTable[D];j;j=j.name_next){var h=j.name;if(j.parent.id===A.id&&h===o)return j}return r.lookup(A,o)},createNode(A,o,B,D){var j=new r.FSNode(A,o,B,D);return r.hashAddNode(j),j},destroyNode(A){r.hashRemoveNode(A)},isRoot(A){return A===A.parent},isMountpoint(A){return!!A.mounted},isFile(A){return(A&61440)===32768},isDir(A){return(A&61440)===16384},isLink(A){return(A&61440)===40960},isChrdev(A){return(A&61440)===8192},isBlkdev(A){return(A&61440)===24576},isFIFO(A){return(A&61440)===4096},isSocket(A){return(A&49152)===49152},flagsToPermissionString(A){var o=["r","w","rw"][A&3];return A&512&&(o+="w"),o},nodePermissions(A,o){return r.ignorePermissions?0:o.includes("r")&&!(A.mode&292)||o.includes("w")&&!(A.mode&146)||o.includes("x")&&!(A.mode&73)?2:0},mayLookup(A){if(!r.isDir(A.mode))return 54;var o=r.nodePermissions(A,"x");return o||(A.node_ops.lookup?0:2)},mayCreate(A,o){if(!r.isDir(A.mode))return 54;try{var B=r.lookupNode(A,o);return 20}catch{}return r.nodePermissions(A,"wx")},mayDelete(A,o,B){var D;try{D=r.lookupNode(A,o)}catch(h){return h.errno}var j=r.nodePermissions(A,"wx");if(j)return j;if(B){if(!r.isDir(D.mode))return 54;if(r.isRoot(D)||r.getPath(D)===r.cwd())return 10}else if(r.isDir(D.mode))return 31;return 0},mayOpen(A,o){if(!A)return 44;if(r.isLink(A.mode))return 32;var B=r.flagsToPermissionString(o);return r.isDir(A.mode)&&(B!=="r"||o&576)?31:r.nodePermissions(A,B)},checkOpExists(A,o){if(!A)throw new r.ErrnoError(o);return A},MAX_OPEN_FDS:4096,nextfd(){for(var A=0;A<=r.MAX_OPEN_FDS;A++)if(!r.streams[A])return A;throw new r.ErrnoError(33)},getStreamChecked(A){var o=r.getStream(A);if(!o)throw new r.ErrnoError(8);return o},getStream:A=>r.streams[A],createStream(A,o=-1){return A=Object.assign(new r.FSStream,A),o==-1&&(o=r.nextfd()),A.fd=o,r.streams[o]=A,A},closeStream(A){r.streams[A]=null},dupStream(A,o=-1){var B=r.createStream(A,o);return B.stream_ops?.dup?.(B),B},doSetAttr(A,o,B){var D=A?.stream_ops.setattr,j=D?A:o;D??(D=o.node_ops.setattr),r.checkOpExists(D,63);try{D(j,B)}catch(h){throw h instanceof RangeError?new r.ErrnoError(22):h}},chrdev_stream_ops:{open(A){var o=r.getDevice(A.node.rdev);A.stream_ops=o.stream_ops,A.stream_ops.open?.(A)},llseek(){throw new r.ErrnoError(70)}},major:A=>A>>8,minor:A=>A&255,makedev:(A,o)=>A<<8|o,registerDevice(A,o){r.devices[A]={stream_ops:o}},getDevice:A=>r.devices[A],getMounts(A){for(var o=[],B=[A];B.length;){var D=B.pop();o.push(D),B.push(...D.mounts)}return o},syncfs(A,o){typeof A=="function"&&(o=A,A=!1),r.syncFSRequests++,r.syncFSRequests>1&&N(`warning: ${r.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var B=r.getMounts(r.root.mount),D=0;function j(z){return r.syncFSRequests--,o(z)}function h(z){if(z)return h.errored?void 0:(h.errored=!0,j(z));++D>=B.length&&j(null)}for(var G of B)G.type.syncfs?G.type.syncfs(G,A,h):h(null)},mount(A,o,B){var D=B==="/",j=!B,h;if(D&&r.root)throw new r.ErrnoError(10);if(!D&&!j){var G=r.lookupPath(B,{follow_mount:!1});if(B=G.path,h=G.node,r.isMountpoint(h))throw new r.ErrnoError(10);if(!r.isDir(h.mode))throw new r.ErrnoError(54)}var z={type:A,opts:o,mountpoint:B,mounts:[]},Q=A.mount(z);return Q.mount=z,z.root=Q,D?r.root=Q:h&&(h.mounted=z,h.mount&&h.mount.mounts.push(z)),Q},unmount(A){var o=r.lookupPath(A,{follow_mount:!1});if(!r.isMountpoint(o.node))throw new r.ErrnoError(28);var B=o.node,D=B.mounted,j=r.getMounts(D);for(var[h,G]of Object.entries(r.nameTable))for(;G;){var z=G.name_next;j.includes(G.mount)&&r.destroyNode(G),G=z}B.mounted=null;var Q=B.mount.mounts.indexOf(D);B.mount.mounts.splice(Q,1)},lookup(A,o){return A.node_ops.lookup(A,o)},mknod(A,o,B){var D=r.lookupPath(A,{parent:!0}),j=D.node,h=t0.basename(A);if(!h)throw new r.ErrnoError(28);if(h==="."||h==="..")throw new r.ErrnoError(20);var G=r.mayCreate(j,h);if(G)throw new r.ErrnoError(G);if(!j.node_ops.mknod)throw new r.ErrnoError(63);return j.node_ops.mknod(j,h,o,B)},statfs(A){return r.statfsNode(r.lookupPath(A,{follow:!0}).node)},statfsStream(A){return r.statfsNode(A.node)},statfsNode(A){var o={bsize:4096,frsize:4096,blocks:1e6,bfree:5e5,bavail:5e5,files:r.nextInode,ffree:r.nextInode-1,fsid:42,flags:2,namelen:255};return A.node_ops.statfs&&Object.assign(o,A.node_ops.statfs(A.mount.opts.root)),o},create(A,o=438){return o&=4095,o|=32768,r.mknod(A,o,0)},mkdir(A,o=511){return o&=1023,o|=16384,r.mknod(A,o,0)},mkdirTree(A,o){var B=A.split("/"),D="";for(var j of B)if(j){(D||t0.isAbs(A))&&(D+="/"),D+=j;try{r.mkdir(D,o)}catch(h){if(h.errno!=20)throw h}}},mkdev(A,o,B){return typeof B>"u"&&(B=o,o=438),o|=8192,r.mknod(A,o,B)},symlink(A,o){if(!Ax.resolve(A))throw new r.ErrnoError(44);var B=r.lookupPath(o,{parent:!0}),D=B.node;if(!D)throw new r.ErrnoError(44);var j=t0.basename(o),h=r.mayCreate(D,j);if(h)throw new r.ErrnoError(h);if(!D.node_ops.symlink)throw new r.ErrnoError(63);return D.node_ops.symlink(D,j,A)},rename(A,o){var B=t0.dirname(A),D=t0.dirname(o),j=t0.basename(A),h=t0.basename(o),G,z,Q;if(G=r.lookupPath(A,{parent:!0}),z=G.node,G=r.lookupPath(o,{parent:!0}),Q=G.node,!z||!Q)throw new r.ErrnoError(44);if(z.mount!==Q.mount)throw new r.ErrnoError(75);var E0=r.lookupNode(z,j),k0=Ax.relative(A,D);if(k0.charAt(0)!==".")throw new r.ErrnoError(28);if(k0=Ax.relative(o,B),k0.charAt(0)!==".")throw new r.ErrnoError(55);var p0;try{p0=r.lookupNode(Q,h)}catch{}if(E0!==p0){var D0=r.isDir(E0.mode),s0=r.mayDelete(z,j,D0);if(s0)throw new r.ErrnoError(s0);if(s0=p0?r.mayDelete(Q,h,D0):r.mayCreate(Q,h),s0)throw new r.ErrnoError(s0);if(!z.node_ops.rename)throw new r.ErrnoError(63);if(r.isMountpoint(E0)||p0&&r.isMountpoint(p0))throw new r.ErrnoError(10);if(Q!==z&&(s0=r.nodePermissions(z,"w"),s0))throw new r.ErrnoError(s0);r.hashRemoveNode(E0);try{z.node_ops.rename(E0,Q,h),E0.parent=Q}catch(q0){throw q0}finally{r.hashAddNode(E0)}}},rmdir(A){var o=r.lookupPath(A,{parent:!0}),B=o.node,D=t0.basename(A),j=r.lookupNode(B,D),h=r.mayDelete(B,D,!0);if(h)throw new r.ErrnoError(h);if(!B.node_ops.rmdir)throw new r.ErrnoError(63);if(r.isMountpoint(j))throw new r.ErrnoError(10);B.node_ops.rmdir(B,D),r.destroyNode(j)},readdir(A){var o=r.lookupPath(A,{follow:!0}),B=o.node,D=r.checkOpExists(B.node_ops.readdir,54);return D(B)},unlink(A){var o=r.lookupPath(A,{parent:!0}),B=o.node;if(!B)throw new r.ErrnoError(44);var D=t0.basename(A),j=r.lookupNode(B,D),h=r.mayDelete(B,D,!1);if(h)throw new r.ErrnoError(h);if(!B.node_ops.unlink)throw new r.ErrnoError(63);if(r.isMountpoint(j))throw new r.ErrnoError(10);B.node_ops.unlink(B,D),r.destroyNode(j)},readlink(A){var o=r.lookupPath(A),B=o.node;if(!B)throw new r.ErrnoError(44);if(!B.node_ops.readlink)throw new r.ErrnoError(28);return B.node_ops.readlink(B)},stat(A,o){var B=r.lookupPath(A,{follow:!o}),D=B.node,j=r.checkOpExists(D.node_ops.getattr,63);return j(D)},fstat(A){var o=r.getStreamChecked(A),B=o.node,D=o.stream_ops.getattr,j=D?o:B;return D??(D=B.node_ops.getattr),r.checkOpExists(D,63),D(j)},lstat(A){return r.stat(A,!0)},doChmod(A,o,B,D){r.doSetAttr(A,o,{mode:B&4095|o.mode&-4096,ctime:Date.now(),dontFollow:D})},chmod(A,o,B){var D;if(typeof A=="string"){var j=r.lookupPath(A,{follow:!B});D=j.node}else D=A;r.doChmod(null,D,o,B)},lchmod(A,o){r.chmod(A,o,!0)},fchmod(A,o){var B=r.getStreamChecked(A);r.doChmod(B,B.node,o,!1)},doChown(A,o,B){r.doSetAttr(A,o,{timestamp:Date.now(),dontFollow:B})},chown(A,o,B,D){var j;if(typeof A=="string"){var h=r.lookupPath(A,{follow:!D});j=h.node}else j=A;r.doChown(null,j,D)},lchown(A,o,B){r.chown(A,o,B,!0)},fchown(A,o,B){var D=r.getStreamChecked(A);r.doChown(D,D.node,!1)},doTruncate(A,o,B){if(r.isDir(o.mode))throw new r.ErrnoError(31);if(!r.isFile(o.mode))throw new r.ErrnoError(28);var D=r.nodePermissions(o,"w");if(D)throw new r.ErrnoError(D);r.doSetAttr(A,o,{size:B,timestamp:Date.now()})},truncate(A,o){if(o<0)throw new r.ErrnoError(28);var B;if(typeof A=="string"){var D=r.lookupPath(A,{follow:!0});B=D.node}else B=A;r.doTruncate(null,B,o)},ftruncate(A,o){var B=r.getStreamChecked(A);if(o<0||(B.flags&2097155)===0)throw new r.ErrnoError(28);r.doTruncate(B,B.node,o)},utime(A,o,B){var D=r.lookupPath(A,{follow:!0}),j=D.node,h=r.checkOpExists(j.node_ops.setattr,63);h(j,{atime:o,mtime:B})},open(A,o,B=438){if(A==="")throw new r.ErrnoError(44);o=qr(o),o&64?B=B&4095|32768:B=0;var D,j;if(typeof A=="object")D=A;else{j=A.endsWith("/");var h=r.lookupPath(A,{follow:!(o&131072),noent_okay:!0});D=h.node,A=h.path}var G=!1;if(o&64)if(D){if(o&128)throw new r.ErrnoError(20)}else{if(j)throw new r.ErrnoError(31);D=r.mknod(A,B|511,0),G=!0}if(!D)throw new r.ErrnoError(44);if(r.isChrdev(D.mode)&&(o&=-513),o&65536&&!r.isDir(D.mode))throw new r.ErrnoError(54);if(!G){var z=r.mayOpen(D,o);if(z)throw new r.ErrnoError(z)}o&512&&!G&&r.truncate(D,0),o&=-131713;var Q=r.createStream({node:D,path:r.getPath(D),flags:o,seekable:!0,position:0,stream_ops:D.stream_ops,ungotten:[],error:!1});return Q.stream_ops.open&&Q.stream_ops.open(Q),G&&r.chmod(D,B&511),Q},close(A){if(r.isClosed(A))throw new r.ErrnoError(8);A.getdents&&(A.getdents=null);try{A.stream_ops.close&&A.stream_ops.close(A)}catch(o){throw o}finally{r.closeStream(A.fd)}A.fd=null},isClosed(A){return A.fd===null},llseek(A,o,B){if(r.isClosed(A))throw new r.ErrnoError(8);if(!A.seekable||!A.stream_ops.llseek)throw new r.ErrnoError(70);if(B!=0&&B!=1&&B!=2)throw new r.ErrnoError(28);return A.position=A.stream_ops.llseek(A,o,B),A.ungotten=[],A.position},read(A,o,B,D,j){if(D<0||j<0)throw new r.ErrnoError(28);if(r.isClosed(A))throw new r.ErrnoError(8);if((A.flags&2097155)===1)throw new r.ErrnoError(8);if(r.isDir(A.node.mode))throw new r.ErrnoError(31);if(!A.stream_ops.read)throw new r.ErrnoError(28);var h=typeof j<"u";if(!h)j=A.position;else if(!A.seekable)throw new r.ErrnoError(70);var G=A.stream_ops.read(A,o,B,D,j);return h||(A.position+=G),G},write(A,o,B,D,j,h){if(D<0||j<0)throw new r.ErrnoError(28);if(r.isClosed(A))throw new r.ErrnoError(8);if((A.flags&2097155)===0)throw new r.ErrnoError(8);if(r.isDir(A.node.mode))throw new r.ErrnoError(31);if(!A.stream_ops.write)throw new r.ErrnoError(28);A.seekable&&A.flags&1024&&r.llseek(A,0,2);var G=typeof j<"u";if(!G)j=A.position;else if(!A.seekable)throw new r.ErrnoError(70);var z=A.stream_ops.write(A,o,B,D,j,h);return G||(A.position+=z),z},mmap(A,o,B,D,j){if((D&2)!==0&&(j&2)===0&&(A.flags&2097155)!==2)throw new r.ErrnoError(2);if((A.flags&2097155)===1)throw new r.ErrnoError(2);if(!A.stream_ops.mmap)throw new r.ErrnoError(43);if(!o)throw new r.ErrnoError(28);return A.stream_ops.mmap(A,o,B,D,j)},msync(A,o,B,D,j){return A.stream_ops.msync?A.stream_ops.msync(A,o,B,D,j):0},ioctl(A,o,B){if(!A.stream_ops.ioctl)throw new r.ErrnoError(59);return A.stream_ops.ioctl(A,o,B)},readFile(A,o={}){o.flags=o.flags||0,o.encoding=o.encoding||"binary",o.encoding!=="utf8"&&o.encoding!=="binary"&&i0(`Invalid encoding type "${o.encoding}"`);var B=r.open(A,o.flags),D=r.stat(A),j=D.size,h=new Uint8Array(j);return r.read(B,h,0,j,0),o.encoding==="utf8"&&(h=$x(h)),r.close(B),h},writeFile(A,o,B={}){B.flags=B.flags||577;var D=r.open(A,B.flags,B.mode);o=gA(o),r.write(D,o,0,o.byteLength,void 0,B.canOwn),r.close(D)},cwd:()=>r.currentPath,chdir(A){var o=r.lookupPath(A,{follow:!0});if(o.node===null)throw new r.ErrnoError(44);if(!r.isDir(o.node.mode))throw new r.ErrnoError(54);var B=r.nodePermissions(o.node,"x");if(B)throw new r.ErrnoError(B);r.currentPath=o.path},createDefaultDirectories(){r.mkdir("/tmp"),r.mkdir("/home"),r.mkdir("/home/web_user")},createDefaultDevices(){r.mkdir("/dev"),r.registerDevice(r.makedev(1,3),{read:()=>0,write:(D,j,h,G,z)=>G,llseek:()=>0}),r.mkdev("/dev/null",r.makedev(1,3)),T0.register(r.makedev(5,0),T0.default_tty_ops),T0.register(r.makedev(6,0),T0.default_tty1_ops),r.mkdev("/dev/tty",r.makedev(5,0)),r.mkdev("/dev/tty1",r.makedev(6,0));var A=new Uint8Array(1024),o=0,B=()=>(o===0&&(bA(A),o=A.byteLength),A[--o]);r.createDevice("/dev","random",B),r.createDevice("/dev","urandom",B),r.mkdir("/dev/shm"),r.mkdir("/dev/shm/tmp")},createSpecialDirectories(){r.mkdir("/proc");var A=r.mkdir("/proc/self");r.mkdir("/proc/self/fd"),r.mount({mount(){var o=r.createNode(A,"fd",16895,73);return o.stream_ops={llseek:K.stream_ops.llseek},o.node_ops={lookup(B,D){var j=+D,h=r.getStreamChecked(j),G={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>h.path},id:j+1};return G.parent=G,G},readdir(){return Array.from(r.streams.entries()).filter(([B,D])=>D).map(([B,D])=>B.toString())}},o}},{},"/proc/self/fd")},createStandardStreams(A,o,B){A?r.createDevice("/dev","stdin",A):r.symlink("/dev/tty","/dev/stdin"),o?r.createDevice("/dev","stdout",null,o):r.symlink("/dev/tty","/dev/stdout"),B?r.createDevice("/dev","stderr",null,B):r.symlink("/dev/tty1","/dev/stderr");var D=r.open("/dev/stdin",0),j=r.open("/dev/stdout",1),h=r.open("/dev/stderr",1)},staticInit(){r.nameTable=new Array(4096),r.mount(K,{},"/"),r.createDefaultDirectories(),r.createDefaultDevices(),r.createSpecialDirectories(),r.filesystems={MEMFS:K,PROXYFS:C0}},init(A,o,B){r.initialized=!0,A??(A=s.stdin),o??(o=s.stdout),B??(B=s.stderr),r.createStandardStreams(A,o,B)},quit(){r.initialized=!1,er(0);for(var A of r.streams)A&&r.close(A)},findObject(A,o){var B=r.analyzePath(A,o);return B.exists?B.object:null},analyzePath(A,o){try{var B=r.lookupPath(A,{follow:!o});A=B.path}catch{}var D={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var B=r.lookupPath(A,{parent:!0});D.parentExists=!0,D.parentPath=B.path,D.parentObject=B.node,D.name=t0.basename(A),B=r.lookupPath(A,{follow:!o}),D.exists=!0,D.path=B.path,D.object=B.node,D.name=B.node.name,D.isRoot=B.path==="/"}catch(j){D.error=j.errno}return D},createPath(A,o,B,D){A=typeof A=="string"?A:r.getPath(A);for(var j=o.split("/").reverse();j.length;){var h=j.pop();if(h){var G=t0.join2(A,h);try{r.mkdir(G)}catch(z){if(z.errno!=20)throw z}A=G}}return G},createFile(A,o,B,D,j){var h=t0.join2(typeof A=="string"?A:r.getPath(A),o),G=Zx(D,j);return r.create(h,G)},createDataFile(A,o,B,D,j,h){var G=o;A&&(A=typeof A=="string"?A:r.getPath(A),G=o?t0.join2(A,o):A);var z=Zx(D,j),Q=r.create(G,z);if(B){B=gA(B),r.chmod(Q,z|146);var E0=r.open(Q,577);r.write(E0,B,0,B.length,0,h),r.close(E0),r.chmod(Q,z)}},createDevice(A,o,B,D){var j,h=t0.join2(typeof A=="string"?A:r.getPath(A),o),G=Zx(!!B,!!D);(j=r.createDevice).major??(j.major=64);var z=r.makedev(r.createDevice.major++,0);return r.registerDevice(z,{open(Q){Q.seekable=!1},close(Q){D?.buffer?.length&&D(10)},read(Q,E0,k0,p0,D0){for(var s0=0,q0=0;q0<p0;q0++){var H0;try{H0=B()}catch{throw new r.ErrnoError(29)}if(H0===void 0&&s0===0)throw new r.ErrnoError(6);if(H0==null)break;s0++,E0[k0+q0]=H0}return s0&&(Q.node.atime=Date.now()),s0},write(Q,E0,k0,p0,D0){for(var s0=0;s0<p0;s0++)try{D(E0[k0+s0])}catch{throw new r.ErrnoError(29)}return p0&&(Q.node.mtime=Q.node.ctime=Date.now()),s0}}),r.mkdev(h,G,z)},forceLoadFile(A){if(A.isDevice||A.isFolder||A.link||A.contents)return!0;if(globalThis.XMLHttpRequest)i0("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");else try{A.contents=k(A.url)}catch{throw new r.ErrnoError(29)}},createLazyFile(A,o,B,D,j){class h{constructor(){N0(this,"lengthKnown",!1),N0(this,"chunks",[])}get(D0){if(!(D0>this.length-1||D0<0)){var s0=D0%this.chunkSize,q0=D0/this.chunkSize|0;return this.getter(q0)[s0]}}setDataGetter(D0){this.getter=D0}cacheLength(){var D0=new XMLHttpRequest;D0.open("HEAD",B,!1),D0.send(null),D0.status>=200&&D0.status<300||D0.status===304||i0("Couldn't load "+B+". Status: "+D0.status);var s0=Number(D0.getResponseHeader("Content-length")),q0,H0=(q0=D0.getResponseHeader("Accept-Ranges"))&&q0==="bytes",xx=(q0=D0.getResponseHeader("Content-Encoding"))&&q0==="gzip",rx=1024*1024;H0||(rx=s0);var ex=(ix,Ux)=>{ix>Ux&&i0("invalid range ("+ix+", "+Ux+") or no bytes requested!"),Ux>s0-1&&i0("only "+s0+" bytes available! programmer error!");var I0=new XMLHttpRequest;return I0.open("GET",B,!1),s0!==rx&&I0.setRequestHeader("Range","bytes="+ix+"-"+Ux),I0.responseType="arraybuffer",I0.overrideMimeType&&I0.overrideMimeType("text/plain; charset=x-user-defined"),I0.send(null),I0.status>=200&&I0.status<300||I0.status===304||i0("Couldn't load "+B+". Status: "+I0.status),I0.response!==void 0?new Uint8Array(I0.response||[]):Yx(I0.responseText||"",!0)},rA=this;rA.setDataGetter(ix=>{var Ux=ix*rx,I0=(ix+1)*rx-1;return I0=Math.min(I0,s0-1),typeof rA.chunks[ix]>"u"&&(rA.chunks[ix]=ex(Ux,I0)),typeof rA.chunks[ix]>"u"&&i0("doXHR failed!"),rA.chunks[ix]}),(xx||!s0)&&(rx=s0=1,s0=this.getter(0).length,rx=s0,q("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=s0,this._chunkSize=rx,this.lengthKnown=!0}get length(){return this.lengthKnown||this.cacheLength(),this._length}get chunkSize(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}if(globalThis.XMLHttpRequest){l||i0("Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc");var G=new h,z={isDevice:!1,contents:G}}else var z={isDevice:!1,url:B};var Q=r.createFile(A,o,z,D,j);z.contents?Q.contents=z.contents:z.url&&(Q.contents=null,Q.url=z.url),Object.defineProperties(Q,{usedBytes:{get:function(){return this.contents.length}}});var E0={};for(let[p0,D0]of Object.entries(Q.stream_ops))E0[p0]=(...s0)=>(r.forceLoadFile(Q),D0(...s0));function k0(p0,D0,s0,q0,H0){var xx=p0.node.contents;if(H0>=xx.length)return 0;var rx=Math.min(xx.length-H0,q0);if(xx.slice)for(var ex=0;ex<rx;ex++)D0[s0+ex]=xx[H0+ex];else for(var ex=0;ex<rx;ex++)D0[s0+ex]=xx.get(H0+ex);return rx}return E0.read=(p0,D0,s0,q0,H0)=>(r.forceLoadFile(Q),k0(p0,D0,s0,q0,H0)),E0.mmap=(p0,D0,s0,q0,H0)=>{r.forceLoadFile(Q);var xx=hA(D0);if(!xx)throw new r.ErrnoError(48);return k0(p0,P0,xx,D0,s0),{ptr:xx,allocated:!0}},Q.stream_ops=E0,Q}},v0={currentUmask:18,calculateAt(A,o,B){if(t0.isAbs(o))return o;var D;if(A===-100)D=r.cwd();else{var j=v0.getStreamFromFD(A);D=j.path}if(o.length==0){if(!B)throw new r.ErrnoError(44);return D}return D+"/"+o},writeStat(A,o){r0[A>>2]=o.dev,r0[A+4>>2]=o.mode,r0[A+8>>2]=o.nlink,r0[A+12>>2]=o.uid,r0[A+16>>2]=o.gid,r0[A+20>>2]=o.rdev,g0[A+24>>3]=BigInt(o.size),h0[A+32>>2]=4096,h0[A+36>>2]=o.blocks;var B=o.atime.getTime(),D=o.mtime.getTime(),j=o.ctime.getTime();return g0[A+40>>3]=BigInt(Math.floor(B/1e3)),r0[A+48>>2]=B%1e3*1e3*1e3,g0[A+56>>3]=BigInt(Math.floor(D/1e3)),r0[A+64>>2]=D%1e3*1e3*1e3,g0[A+72>>3]=BigInt(Math.floor(j/1e3)),r0[A+80>>2]=j%1e3*1e3*1e3,g0[A+88>>3]=BigInt(o.ino),0},writeStatFs(A,o){r0[A+4>>2]=o.bsize,r0[A+60>>2]=o.bsize,g0[A+8>>3]=BigInt(o.blocks),g0[A+16>>3]=BigInt(o.bfree),g0[A+24>>3]=BigInt(o.bavail),g0[A+32>>3]=BigInt(o.files),g0[A+40>>3]=BigInt(o.ffree),r0[A+48>>2]=o.fsid,r0[A+64>>2]=o.flags,r0[A+56>>2]=o.namelen},doMsync(A,o,B,D,j){if(!r.isFile(o.node.mode))throw new r.ErrnoError(43);if(D&2)return 0;var h=fx.slice(A,A+B);r.msync(o,h,j,B,D)},getStreamFromFD(A){var o=r.getStreamChecked(A);return o},varargs:void 0,getStr(A){var o=nA(A);return o}};function Tr(A,o,B){v0.varargs=B;try{var D=v0.getStreamFromFD(A);switch(o){case 0:{var j=qx();if(j<0)return-28;for(;r.streams[j];)j++;var h;return h=r.dupStream(D,j),h.fd}case 1:case 2:return 0;case 3:return D.flags;case 4:{var j=qx(),G=289792;return D.flags=D.flags&~G|j&G,0}case 12:{var j=Rx(),z=0;return _x[j+z>>1]=2,0}case 13:case 14:return 0}return-28}catch(Q){if(typeof r>"u"||Q.name!=="ErrnoError")throw Q;return-Q.errno}}function iA(A,o,B){v0.varargs=B;try{var D=v0.getStreamFromFD(A);switch(o){case 21509:return D.tty?0:-59;case 21505:{if(!D.tty)return-59;if(D.tty.ops.ioctl_tcgets){var j=D.tty.ops.ioctl_tcgets(D),h=Rx();h0[h>>2]=j.c_iflag||0,h0[h+4>>2]=j.c_oflag||0,h0[h+8>>2]=j.c_cflag||0,h0[h+12>>2]=j.c_lflag||0;for(var G=0;G<32;G++)P0[h+G+17]=j.c_cc[G]||0;return 0}return 0}case 21510:case 21511:case 21512:return D.tty?0:-59;case 21506:case 21507:case 21508:{if(!D.tty)return-59;if(D.tty.ops.ioctl_tcsets){for(var h=Rx(),z=h0[h>>2],Q=h0[h+4>>2],E0=h0[h+8>>2],k0=h0[h+12>>2],p0=[],G=0;G<32;G++)p0.push(P0[h+G+17]);return D.tty.ops.ioctl_tcsets(D.tty,o,{c_iflag:z,c_oflag:Q,c_cflag:E0,c_lflag:k0,c_cc:p0})}return 0}case 21519:{if(!D.tty)return-59;var h=Rx();return h0[h>>2]=0,0}case 21520:return D.tty?-28:-59;case 21537:case 21531:{var h=Rx();return r.ioctl(D,o,h)}case 21523:{if(!D.tty)return-59;if(D.tty.ops.ioctl_tiocgwinsz){var D0=D.tty.ops.ioctl_tiocgwinsz(D.tty),h=Rx();_x[h>>1]=D0[0],_x[h+2>>1]=D0[1]}return 0}case 21524:return D.tty?0:-59;case 21515:return D.tty?0:-59;default:return-28}}catch(s0){if(typeof r>"u"||s0.name!=="ErrnoError")throw s0;return-s0.errno}}function Ox(A,o,B,D){v0.varargs=D;try{o=v0.getStr(o),o=v0.calculateAt(A,o);var j=D?qx():0;return B&64&&(j&=~v0.currentUmask),r.open(o,B,j).fd}catch(h){if(typeof r>"u"||h.name!=="ErrnoError")throw h;return-h.errno}}var Ir=()=>2147483648,$A=(A,o)=>Math.ceil(A/o)*o,Mr=A=>{var o=xA.buffer.byteLength,B=(A-o+65535)/65536|0;try{return xA.grow(B),Z(),1}catch{}},Sr=A=>{var o=fx.length;A>>>=0;var B=Ir();if(A>B)return!1;for(var D=1;D<=4;D*=2){var j=o*(1+.2/D);j=Math.min(j,A+100663296);var h=Math.min(B,$A(Math.max(A,j),65536)),G=Mr(h);if(G)return!0}return!1};function Rr(A){try{var o=v0.getStreamFromFD(A);return r.close(o),0}catch(B){if(typeof r>"u"||B.name!=="ErrnoError")throw B;return B.errno}}var Or=(A,o,B,D)=>{for(var j=0,h=0;h<B;h++){var G=r0[o>>2],z=r0[o+4>>2];o+=8;var Q=r.read(A,P0,G,z,D);if(Q<0)return-1;if(j+=Q,Q<z)break;typeof D<"u"&&(D+=Q)}return j};function Ur(A,o,B,D){try{var j=v0.getStreamFromFD(A),h=Or(j,o,B);return r0[D>>2]=h,0}catch(G){if(typeof r>"u"||G.name!=="ErrnoError")throw G;return G.errno}}var Hr=9007199254740992,zr=-9007199254740992,Jr=A=>A<zr||A>Hr?NaN:Number(A);function Kr(A,o,B,D){o=Jr(o);try{if(isNaN(o))return 22;var j=v0.getStreamFromFD(A);return r.llseek(j,o,B),g0[D>>3]=BigInt(j.position),j.getdents&&o===0&&B===0&&(j.getdents=null),0}catch(h){if(typeof r>"u"||h.name!=="ErrnoError")throw h;return h.errno}}var Vr=(A,o,B,D)=>{for(var j=0,h=0;h<B;h++){var G=r0[o>>2],z=r0[o+4>>2];o+=8;var Q=r.write(A,P0,G,z,D);if(Q<0)return-1;if(j+=Q,Q<z)break;typeof D<"u"&&(D+=Q)}return j};function Wr(A,o,B,D){try{var j=v0.getStreamFromFD(A),h=Vr(j,o,B);return r0[D>>2]=h,0}catch(G){if(typeof r>"u"||G.name!=="ErrnoError")throw G;return G.errno}}var Xr=0,ZA=()=>uA||Xr>0,Yr=A=>{L=A,ZA()||(s.onExit?.(A),V=!0),g(A,new wx(A))},QA=(A,o)=>{L=A,ZA()||e0(),Yr(A)},Zr=A=>{if(A instanceof wx||A=="unwind")return L;g(1,A)},Qr=(A,o,B)=>mA(A,fx,o,B),xr=A=>qA(A),xe=A=>{var o=Xx(A)+1,B=xr(o);return Qr(A,B,o),B},Ae=(...A)=>r.createPath(...A),re=(...A)=>r.unlink(...A),ee=(...A)=>r.createLazyFile(...A),te=(...A)=>r.createDevice(...A);if(r.createPreloadedFile=Gr,r.preloadFile=Qx,r.staticInit(),s.noExitRuntime&&(uA=s.noExitRuntime),s.preloadPlugins&&(_A=s.preloadPlugins),s.print&&(q=s.print),s.printErr&&(N=s.printErr),s.wasmBinary&&(S=s.wasmBinary),s.arguments&&(u=s.arguments),s.thisProgram&&(p=s.thisProgram),s.preInit)for(typeof s.preInit=="function"&&(s.preInit=[s.preInit]);s.preInit.length>0;)s.preInit.shift()();s.callMain=U0,s.addRunDependency=wA,s.removeRunDependency=yA,s.FS_preloadFile=Qx,s.FS_unlink=re,s.FS_createPath=Ae,s.FS_createDevice=te,s.FS=r,s.FS_createDataFile=kA,s.FS_createLazyFile=ee,s.PROXYFS=C0;var Ar,rr,er,ne,qA,ie,Fe,ae,xA;function se(A){Ar=s._main=A.__main_argc_argv,rr=A.__funcs_on_exit,er=A.fflush,ne=A._emscripten_stack_restore,qA=A._emscripten_stack_alloc,ie=A.emscripten_stack_get_current,Fe=xA=A.memory,ae=A.__indirect_function_table}var PA={__assert_fail:Sx,__syscall_fcntl64:Tr,__syscall_ioctl:iA,__syscall_openat:Ox,emscripten_resize_heap:Sr,fd_close:Rr,fd_read:Ur,fd_seek:Kr,fd_write:Wr};function U0(A=[]){var o=Ar;A.unshift(p);var B=A.length,D=xr((B+1)*4),j=D;for(var h of A)r0[j>>2]=xe(h),j+=4;r0[j>>2]=0;try{var G=o(B,D);return QA(G,!0),G}catch(z){return Zr(z)}}function LA(A=u){if(Y0>0){Dx=LA;return}if(X(),Y0>0){Dx=LA;return}function o(){if(s.calledRun=!0,!V){T(),I?.(s),s.onRuntimeInitialized?.();var B=s.noInitialRun||!0;B||U0(A),n0()}}s.setStatus?(s.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>s.setStatus(""),1),o()},1)):o()}var AA;return AA=await Q0(),LA(),W?E=s:E=new Promise((A,o)=>{I=A,M=o}),E}})();typeof t=="object"&&typeof e=="object"?(e.exports=F,e.exports.default=F):typeof define=="function"&&define.amd&&define([],()=>F)}}),Ht={};yF(Ht,{createPawnCC:()=>LF,createPawnDbg:()=>NF});zt.exports=wF(Ht);var qF=Ut(_F(),1),PF=Ut($F(),1),LF=qF.default,NF=PF.default});var Ua={};Tn(Ua,{APM:()=>a0,DDE:()=>Ex,DDE_Core:()=>u0,DFILES:()=>VA,DLO:()=>KA,DefaultFiles:()=>Y,Dependencies:()=>y0,DeviceProfiles:()=>or,Diagnostics:()=>TA,ENV:()=>$e,Globals:()=>R0,Helper:()=>F0,HttpMethod:()=>Pe,Library:()=>eA,Log:()=>qe,Manifest:()=>O,MyDatanetClient:()=>br,Package:()=>X0,Registry:()=>_0,build:()=>Ma,buildDevelopmentInstallInfo:()=>mn,generateDevApmId:()=>Le,install:()=>Ia,pack:()=>Oa,publish:()=>Ra});module.exports=In(Ua);var G0=require("vscode-uri");var cA=require("vscode-uri");var Mn=new Uint32Array([0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117]);function nr(t,e=0){let F=~~e^-1;for(let i=0;i<t.length;i++)F=F>>>8^Mn[(F^t[i])&255];return(F^-1)>>>0}var za=new Uint8Array([0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64]),Ja=new Uint8Array([0,192,193,1,195,3,2,194,198,6,7,199,5,197,196,4,204,12,13,205,15,207,206,14,10,202,203,11,201,9,8,200,216,24,25,217,27,219,218,26,30,222,223,31,221,29,28,220,20,212,213,21,215,23,22,214,210,18,19,211,17,209,208,16,240,48,49,241,51,243,242,50,54,246,247,55,245,53,52,244,60,252,253,61,255,63,62,254,250,58,59,251,57,249,248,56,40,232,233,41,235,43,42,234,238,46,47,239,45,237,236,44,228,36,37,229,39,231,230,38,34,226,227,35,225,33,32,224,160,96,97,161,99,163,162,98,102,166,167,103,165,101,100,164,108,172,173,109,175,111,110,174,170,106,107,171,105,169,168,104,120,184,185,121,187,123,122,186,190,126,127,191,125,189,188,124,180,116,117,181,119,183,182,118,114,178,179,115,177,113,112,176,80,144,145,81,147,83,82,146,150,86,87,151,85,149,148,84,156,92,93,157,95,159,158,94,90,154,155,91,153,89,88,152,136,72,73,137,75,139,138,74,78,142,143,79,141,77,76,140,68,132,133,69,135,71,70,134,130,66,67,131,65,129,128,64]);var F0;(w=>{function t(b,k){let[_,q]=k,{line:N,col:S}=b.linePos(_);return{line:Number(N)-1,startCharacter:S-1,endCharacter:S+(q-_)}}w.yamlRangeToLineInformation=t;let e=new TextEncoder;function F(b){return nr(e.encode(b)).toString(16)}w.generateHashForLibraryName=F;function i(b){return nr(e.encode(b)).toString(16)}w.generateHashForFilePath=i;function a(b){return nr(b).toString(16).toUpperCase().padStart(8,"0")}w.generateCRC32ForFileContent=a;function E(b){try{let k=null;return b?.type==="Buffer"?k=Uint8Array.from(b.data):k=b,new TextDecoder("utf8").decode(k)}catch{return""}}w.convertBlobToString=E;function s(b=""){return b.replace(/\r\n|\n\r|\r/g,`
|
|
1528
|
+
`)}w.normalizeLF=s;function C(b){try{let k=E(b);return s(k).split(`
|
|
1529
|
+
`)}catch{return[]}}w.convertBlobToStringArray=C,w.isNumeric=b=>!Array.isArray(b)&&b-parseFloat(b)+1>=0;function d(b){let k="",_=b.byteLength;for(let q=0;q<_;q++)k+=String.fromCharCode(b[q]);return btoa(k)}w.bufferToBase64=d;function u(b,k){let _=`${b}`.match(/\{\d*(index)(\+\d*)?}/g);if(_){let q=b;return _.forEach(N=>{let S=N.replace(/\+0$/,""),V=S.match(/index/)?.[0];if(V){let L=S.slice(1,-1).split(V)[1],y=parseInt(L)||0;q=q.replace(N,`${k+y}`)}}),q}else return b}w.patchValueWithArrayInfo=u;let p={};function g(b,k,_){let q=p[b];q&&clearTimeout(q.timer),p[b]={timer:setTimeout(()=>{delete p[b],_()},k),handler:_}}w.defer=g})(F0||={});var vn=require("image-dimensions"),En=require("file-type-checker");var es=require("cross-fetch/polyfill"),Je=J0(require("openapi-fetch"));var Hx=require("vscode-uri");var W0="dist/",Te="dde/",ve="dlo/",Ie=".studio/",Me="dfiles/",Y;(C=>{C.fileNames={projectSettings:"studio.json",mainAmx:"main.amx",mainAmxReport:"main.xml",ddeXml:"dde.xml",ddeOpenApi:"main.yaml",historyJson:"history.json",mainDDE:"main.dde",autoInc:"auto.inc",defaultInc:"default.inc",autoUplinkInc:"app-uplink.inc",autoDdeInc:"X-dde.inc",mainDdeInc:"main-dde.inc",autoLocalDataInc:"auto-local-data.inc",legacyAutoInc:"legacy-auto.inc",legacyAutoDdeInc:"legacy-auto-dde.inc",legacyAutoUplinkInc:"legacy-auto-uplink.inc",reportTemplate:"mdn_report_template.json",dloCfg:"dlo.cfg"};let e=`${Ie}auto/`,F=`${e}dlo/`,i=`${e}dde/`;C.filePaths={studio:{initFile:`${e}.init`,auto:{path:e,dlo:{path:F,autoInc:`${F}${C.fileNames.autoInc}`,defaultInc:`${F}${C.fileNames.defaultInc}`,autoUplinkInc:`${F}${C.fileNames.autoUplinkInc}`,autoLocalDataInc:`${F}${C.fileNames.autoLocalDataInc}`,autoDdeInc:`${F}${C.fileNames.autoDdeInc}`,mainDdeInc:`${F}${C.fileNames.mainDdeInc}`,legacyAutoInc:`${F}${C.fileNames.legacyAutoInc}`,legacyAutoDdeInc:`${F}${C.fileNames.legacyAutoDdeInc}`,legacyAutoUplinkInc:`${F}${C.fileNames.legacyAutoUplinkInc}`,cfg:`${F}${C.fileNames.dloCfg}`},dde:{path:i,historyJson:`${i}${C.fileNames.historyJson}`}},libdeps:`${Ie}libdeps/`},dist:{path:W0,dloPath:`${W0}dlo/`,mainAmxPath:`${W0}dlo/${C.fileNames.mainAmx}`,mainAmxReportPath:`${W0}dlo/${C.fileNames.mainAmxReport}`,ddeXmlPath:`${W0}dde/${C.fileNames.ddeXml}`,ddeApiPath:`${W0}api/`,ddeApi:`${W0}api/${C.fileNames.ddeOpenApi}`,historyJson:`${W0}dde/${C.fileNames.historyJson}`,povPath:`${W0}pov`,povDetailsPath:`${W0}pov/details`,dfilesPath:`${W0}dfiles`,dfilesProperties:`${W0}dfiles/properties.json`,bloPath:`${W0}blo`,reportTemplate:`${W0}/${C.fileNames.reportTemplate}`,definesTs:`${W0}defines.ts`,definesAppTs:`${W0}defines.app.ts`},dlo:{path:ve,mainDLO:`${ve}main.dlo`,mainINI:`${ve}main.ini`},dde:{path:Te,mainDDE:`${Te}main.dde`},dfiles:{path:Me,mainDFILES:`${Me}/main.dfiles`},appIni:"app.ini",defaultsIni:"defaults.ini"},C.readme=l=>`# ${l} README
|
|
1530
1530
|
|
|
1531
1531
|
This is the README for your project "${l}". Write a brief description what this project is about.`,C.changelog=`# Changelog
|
|
1532
1532
|
|
|
1533
1533
|
All notable changes to this project will be documented in this file.
|
|
1534
1534
|
|
|
1535
|
-
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).`})(
|
|
1536
|
-
`))u.push(` ${N}`)}let
|
|
1537
|
-
`))}
|
|
1535
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).`})(Y||={});var Oe=J0(require("ini"));var Sn=F0.convertBlobToString,Rn=Y.filePaths.dlo.path,R0;(a=>{let t;(l=>(l.lucky="lucky",l.wynni="wynni",l.production="production"))(t=a.ENV||={});async function e(E,s,C){let l=await O.read(E,s),d=await y0.getAll(l),u={},p={},g={};for(let N in d){let S=y0.dependencyToPath(E,N),V=y0.dependencyIdToName(N),L=Hx.Utils.joinPath(S,Rn,`${V}.ini`);await aA(s,L,u,p,g,V);let y=Hx.Utils.joinPath(S,Y.filePaths.defaultsIni);await aA(s,y,u,p,g,V)}if(O.isLibrary(l)){let N=Hx.Utils.joinPath(E,Y.filePaths.dlo.path,`${l.name}.ini`);C&&await s.stat(N)&&C.warn(`dlo/${l.name}.ini is deprecated. Please migrate your defines to defaults.ini in the project root.`),await aA(s,N,u,p,g,l.name)}let w=l.dlo?.iniFile||Y.filePaths.dlo.mainINI,b=Hx.Utils.joinPath(E,w);C&&await s.stat(b)&&C.warn(`${w} is deprecated. Please migrate your defines to app.ini in the project root.`);let k=zn(w);if(await aA(s,b,u,p,g,k),O.isLibrary(l)){let N=Hx.Utils.joinPath(E,Y.filePaths.defaultsIni);await aA(s,N,u,p,g,"defaults")}let _=On(l,u,p,g),q=Hx.Utils.joinPath(E,Y.filePaths.appIni);return await aA(s,q,u,p,g,"app"),{flat:u,sections:p,definesWithSource:g,defaultsOnly:_}}a.read=e;async function F(E,s,C,l){let d=Object.entries(C.flat),u=[];for(let[w,b]of d){let k=C.definesWithSource[w];if(k?.comment){let q=Se(k.comment);for(let N of q.split(`
|
|
1536
|
+
`))u.push(` ${N}`)}let _=Re(b)?"number":"string";u.push(` ${w}: ${_};`)}let p=["// Auto-generated by @microtronics/studio-cli \u2014 DO NOT EDIT","declare global {"," interface StudioDefines {",...u," }"," var STUDIO_DEFINES: StudioDefines;","}","","globalThis.STUDIO_DEFINES ??= {} as StudioDefines;",""];for(let[w,b]of d){let k=C.definesWithSource[w];if(k?.comment&&p.push(Se(k.comment)),Re(b))p.push(`globalThis.STUDIO_DEFINES['${w}'] = ${Number(b)};`);else{let _=b.replace(/\\/g,"\\\\").replace(/'/g,"\\'");p.push(`globalThis.STUDIO_DEFINES['${w}'] = '${_}';`)}}p.push(""),p.push("export {};"),p.push("");let g=Hx.Utils.joinPath(E,l??Y.filePaths.dist.definesTs);await s.writeFile(g,p.join(`
|
|
1537
|
+
`))}a.exportDefinesTs=F;function i(E,s){let C=[];return{result:E.replace(/\{\{([^}]+)\}\}/g,(d,u)=>{let p=u.trim();return Object.hasOwn(s,p)?s[p]:(C.push(p),d)}),unresolvedKeys:C}}a.replaceDefineTemplates=i})(R0||={});function On(t,e,F,i){if(O.isLibrary(t))return{flat:{...e},sections:structuredClone(F),definesWithSource:{...i}}}function Un(t){if(t==="")return{kind:"empty"};if(t.startsWith("#")||t.startsWith(";"))return{kind:"comment",text:t.replace(/^[#;]\s?/,"")};if(t.startsWith("[")&&t.endsWith("]"))return{kind:"section",name:t.slice(1,-1)};let e=t.indexOf("=");return e>0?{kind:"keyValue",key:t.slice(0,e).trim()}:{kind:"other"}}function Hn(t){let e={},F=t.split(/\r?\n/),i=[],a=null;for(let E of F){let s=Un(E.trim());if(s.kind==="empty"||s.kind==="other"){i=[];continue}if(s.kind==="comment"){i.push(s.text);continue}if(s.kind==="section"){a=s.name;continue}let C=a?`${a}_${s.key}`:s.key;i.length>0&&(e[C]=i.join(`
|
|
1538
1538
|
`)),i=[]}return e}function Se(t){let e=t.split(`
|
|
1539
1539
|
`);return e.length===1?`/** ${e[0]} */`:`/**
|
|
1540
1540
|
${e.map(i=>` * ${i}`).join(`
|
|
1541
1541
|
`)}
|
|
1542
|
-
*/`}function Re(t){return t!==""&&!isNaN(Number(t))}function
|
|
1543
|
-
${i}`:i||t}function He(t,e,F,i,
|
|
1542
|
+
*/`}function Re(t){return t!==""&&!isNaN(Number(t))}function zn(t){return(t.split("/").pop()||t).replace(/\.ini$/i,"")}function Ue(t,e,F){let i=e?`${F}: ${e}`:void 0;return t&&i?`${t}
|
|
1543
|
+
${i}`:i||t}function He(t,e,F,i,a,E,s){let C=a?`${a}_${i}`:i,l={value:t,sourceUri:e,sourceLine:Kn(F,i,a)};return E[C]&&(l.comment=`${s}: ${E[C]}`),l}function Jn(t,e,F,i,a,E,s,C,l){i[t]||(i[t]={});for(let[d,u]of Object.entries(e)){let p=`${t}_${d}`,g=C[p],w=`${u}`;F[p]=w,i[t][d]=w;let b=He(w,E,s,d,t,C,l);b.comment=Ue(a[p]?.comment,g,l),a[p]=b}}async function aA(t,e,F,i,a,E){if(!await t.stat(e))return;let s=await t.readFile(e),C=Sn(s),l=Oe.parse(C),d=e.toString(),u=C.split(/\r?\n/),p=Hn(C);for(let[g,w]of Object.entries(l))if(typeof w=="object"&&w!==null)Jn(g,w,F,i,a,d,u,p,E);else{let b=p[g],k=`${w}`;F[g]=k;let _=He(k,d,u,g,null,p,E);_.comment=Ue(a[g]?.comment,b,E),a[g]=_}}function Kn(t,e,F){let i=F===null,a=F?`[${F}]`:null,E=new RegExp(`^\\s*${Vn(e)}\\s*=`);for(let s=0;s<t.length;s++){let C=t[s].trim();if(a&&C===a){i=!0;continue}if(i&&C.startsWith("[")&&C.endsWith("]")&&F!==null){i=!1;continue}if(i&&E.test(t[s]))return s}return 0}function Vn(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}var Fr=J0(require("semver/preload")),{GET:Ee,POST:ir,PUT:ze}=(0,Je.default)();function ax(t){if(t)return{authorization:`Bearer ${t}`}}var _0;(w=>{w.getAPIUrl=b=>{let k="https://api.registry.microtronics.com";return b===R0.ENV.lucky?k="https://api.registry.lucky.ci.microtronics.com":b===R0.ENV.wynni&&(k="https://api.registry.wynni.ci.microtronics.com"),{baseUrl:k+"/v1"}};async function e(b,k,_,q){let{data:N,error:S}=await Ee("/publisher/{publisherId}/libraries/{libraryId}",{...(0,w.getAPIUrl)(q),headers:{...ax(b)},params:{path:{publisherId:k,libraryId:_}}});if(S)throw new Error(S.reason);return N}w.getLibraryProfile=e;async function F(b,k,_=!1){let q=await fetch(k,{headers:{...ax(b),...g(!0)}});if(q.status===200)return _?await q.json():await q.arrayBuffer();throw new Error("Failed to fetch the library content")}w.fetchCustomContent=F;async function i(b,k,_){try{let{data:q,error:N}=await Ee("/publisher/{publisherId}",{...(0,w.getAPIUrl)(_),headers:{...ax(b)},params:{path:{publisherId:k}}});return N?(console.error(N),null):q}catch(q){return console.error(q),null}}w.getPublisher=i;async function a(b,k,_,q){try{let{data:N,error:S}=await ir("/packages/{publisherId}/applications",{...(0,w.getAPIUrl)(q),headers:{...ax(b),...g(!0)},params:{path:{publisherId:k}},body:{..._}});if(S)throw new Error(S.reason);return N.id}catch{return null}}w.createNewApplication=a;async function E(b,k,_,q){let{data:N,error:S}=await Ee("/publisher/{publisherId}/applications/{applicationId}",{...(0,w.getAPIUrl)(q),headers:{...ax(b),...g(!0)},params:{path:{publisherId:k,applicationId:_}}});if(S)throw new Error(S.reason);return N}w.getExistingApplication=E;async function s(b,k,_,q,N){try{let{error:S}=await ze("/packages/{publisherId}/applications/{applicationId}",{...(0,w.getAPIUrl)(N),headers:{...ax(b),...g(!0)},params:{path:{publisherId:k,applicationId:_}},body:{...q}});if(S)throw new Error(S.reason);return}catch{return null}}w.updateExistingApplication=s;async function C(b,k,_,q,N,S){let V=!!Fr.default.valid(q);try{let{error:L}=await ze("/packages/{publisherId}/applications/{applicationId}/versions/{applicationVersion}",{...(0,w.getAPIUrl)(S),headers:{...ax(b),...g(V)},params:{path:{publisherId:k,applicationId:_,applicationVersion:q}},body:{...N}});if(L)throw new Error(L.reason);return}catch{return null}}w.updateExistingApplicationVersion=C;async function l(b,k,_,q,N,S){let V=!!Fr.default.valid(q),{data:L,error:y}=await ir("/packages/{publisherId}/applications/{applicationId}/versions/{applicationVersion}",{...(0,w.getAPIUrl)(S),headers:{...ax(b),...g(V)},params:{path:{publisherId:k,applicationId:_,applicationVersion:q}},body:{},bodySerializer(){return N}});if(y)throw new Error(y.reason||y.err||y);return L}w.publishApplicationVersion=l;let d={"README.md":"text/markdown","CHANGELOG.md":"text/markdown","library.tar.gz":"application/gzip","studio.json":"application/json"};async function u(b,k,_,q,N,S){try{let{error:V}=await ir("/packages/{publisherId}/libraries/{libraryId}/versions/{libraryVersion}",{...(0,w.getAPIUrl)(S),headers:{...ax(b),...g(!0)},params:{path:{publisherId:k,libraryId:_,libraryVersion:q}},body:{...N},bodySerializer(L){let y=new FormData;for(let[P,H]of Object.entries(L))H!==void 0&&y.append(P,new Blob([H],{type:d[P]}),P);return y}});if(V)throw new Error(V.reason)}catch(V){throw console.error(V),V}}w.publishLibraryVersion=u;async function p(b,k,_,q,N,S,V){let L=!!Fr.default.valid(q),{error:y}=await ir("/packages/{publisherId}/applications/{applicationId}/versions/{applicationVersion}/files/{applicationFileName}",{...(0,w.getAPIUrl)(V),headers:{...ax(b),...g(L),"Content-Type":"application/octet-stream"},params:{path:{publisherId:k,applicationId:_,applicationVersion:q,applicationFileName:N}},body:{},bodySerializer(){return S}});if(y)throw new Error(y.reason)}w.updateApplicationFile=p;function g(b=!1){return b?{"X-Semver":"true"}:{}}w.injectSemverHeader=g})(_0||={});var Bn=J0(require("semver/preload"));var Nx=require("vscode-uri");var tA=require("vscode-uri");var L0=require("vscode-uri");var Dt=J0(require("ajv")),lt=J0(require("ajv-formats"));var Ke={$schema:"http://json-schema.org/draft-07/schema#",title:"Dynamic DDE Schema",description:"Describe your data structure for Microtronics IoT devices",type:"object",additionalProperties:!1,properties:{dde:{type:"string",default:"1.0.0",readOnly:!0,description:"Version of the DDE schema. Do not modify this value.",markdownDescription:`Version of the DDE schema.
|
|
1544
1544
|
|
|
1545
1545
|
\u26A0\uFE0F **Do not modify this value.**`},cloudProject:{type:"boolean",description:"Indicates whether this is a cloud project.",markdownDescription:"Indicates whether this is a cloud project.\n\nWhen set to `false`, certain containers and top-level custom containers are restricted."},constants:{type:"object",description:"Declare constants that can be used across the YAML file.",markdownDescription:"Declare constants that can be referenced and used across the YAML file."},state:{$ref:"#/$defs/stateContainer"},result:{$ref:"#/$defs/resultContainer"},volatile:{$ref:"#/$defs/volatileContainer"},timeseries:{type:"object",description:"Define time-series data channels for recording measurements.",markdownDescription:"Define time-series data channels for recording measurements.\n\n**Limits:** Maximum 9 fields.\n\n**Naming rules:**\n- Must start with a letter or `_`\n- May contain letters, digits, and `_`\n- Names like `field0`, `ch0`, etc. are **not allowed**\n- Reserved names (`_id`, `id`, `_stamp`, `stamp`, `tag`, `_uid`, `customer_id`, `site_id`, `_rec_flags__`, `applog`) are **not allowed**",additionalProperties:!1,maxProperties:9,errorMessage:{maxProperties:"The timeseries container supports a maximum of 9 fields."},properties:{_id:{not:{},errorMessage:"'_id' is a reserved name and cannot be used as a timeseries field."},id:{not:{},errorMessage:"'id' is a reserved name and cannot be used as a timeseries field."},_stamp:{not:{},errorMessage:"'_stamp' is a reserved name and cannot be used as a timeseries field."},stamp:{not:{},errorMessage:"'stamp' is a reserved name and cannot be used as a timeseries field."},tag:{not:{},errorMessage:"'tag' is a reserved name and cannot be used as a timeseries field."},_uid:{not:{},errorMessage:"'_uid' is a reserved name and cannot be used as a timeseries field."},customer_id:{not:{},errorMessage:"'customer_id' is a reserved name and cannot be used as a timeseries field."},site_id:{not:{},errorMessage:"'site_id' is a reserved name and cannot be used as a timeseries field."},_rec_flags__:{not:{},errorMessage:"'_rec_flags__' is a reserved name and cannot be used as a timeseries field."},applog:{not:{},errorMessage:"'applog' is a reserved name and cannot be used as a timeseries field."}},patternProperties:{"^(?!.*^field\\d+$)(?!.*^ch\\d+$)[a-zA-Z_][0-9a-zA-Z_]*$":{$ref:"#/$defs/timeseriesFields"}}},aloha:{type:"object",description:"Special container to transport live data during put-into-operation procedures.",markdownDescription:`Special container to transport **live data** during put-into-operation procedures.
|
|
1546
1546
|
|
|
@@ -1638,29 +1638,29 @@ Accepts a number (\u2265 0) or a relation link (\`@container.field\`).`,minimum:
|
|
|
1638
1638
|
|
|
1639
1639
|
\u26A0\uFE0F **Important:** This does not activate any alarming. Alarming must be implemented in the DLO.
|
|
1640
1640
|
|
|
1641
|
-
Accepts a number or a relation link (\`@container.field\`).`,$ref:"#/$defs/relationLinkPattern"}}};var cr=require("yaml");var Ox=require("yaml");var TA;(e=>e.CODE={ddeFieldLength:"field_name_length"})(TA||={});var u0;(I=>{let t;(n0=>(n0.state="state",n0.result="result",n0.aloha="aloha",n0.volatile="volatile",n0.setting="setting",n0.command="command",n0.storage="storage",n0.relations="relations"))(t=I.DDEContainerName||={});let e;(A0=>(A0.configA="configA",A0.configB="configB",A0.configC="configC",A0.config0="config0",A0.config1="config1",A0.config2="config2",A0.config3="config3",A0.config4="config4",A0.config5="config5",A0.config6="config6",A0.config7="config7",A0.config8="config8",A0.config9="config9",A0.histdata0="histdata0",A0.histdata1="histdata1",A0.histdata2="histdata2",A0.histdata3="histdata3",A0.histdata4="histdata4",A0.histdata5="histdata5",A0.histdata6="histdata6",A0.histdata7="histdata7",A0.histdata8="histdata8",A0.histdata9="histdata9",A0.aloha="aloha",A0.alerts="alerts",A0.applog="applog"))(e=I.ContainerName||={});let F;(Q=>(Q.cx="cx",Q.hx="hx",Q.cb="cb",Q.aloha="aloha",Q.applog="applog"))(F=I.ContainerType||={});let i;(l0=>(l0.up="up",l0.down="down",l0.upPlus="up+",l0.downPlus="down+",l0.none="none",l0.backendOnly="backend-only",l0.deviceOnly="device-only",l0.both="both",l0.bothPlus="both+",l0.noneBackend="none-be"))(i=I.TransferDirection||={});function s(H,K){return H==="cx"&&!["backend-only"].includes(K)?"DDE_CID_CONFIG":H==="hx"?"DDE_CID_HISTDATA":H==="aloha"?"DDE_CID_ALOHA":null}I.CONTAINER_DEF_DLO_CID_BASE=s;let E=["up","up+","down","down+","both","none","both+","backend-only","device-only"],a=["up","up+","backend-only"];I.CONTAINER_DEFS={configA:{ctype:"cb",cnum:"a",alias:"",flds:"field",xmits:["backend-only"]},configB:{ctype:"cb",cnum:"b",alias:"",flds:"field",xmits:["backend-only"]},configC:{ctype:"cb",cnum:"c",alias:"",flds:"field",xmits:["backend-only"]},config0:{ctype:"cx",cnum:0,alias:"",flds:"field",xmits:E},config1:{ctype:"cx",cnum:1,alias:"",flds:"field",xmits:E},config2:{ctype:"cx",cnum:2,alias:"",flds:"field",xmits:E},config3:{ctype:"cx",cnum:3,alias:"",flds:"field",xmits:E},config4:{ctype:"cx",cnum:4,alias:"",flds:"field",xmits:E},config5:{ctype:"cx",cnum:5,alias:"",flds:"field",xmits:E},config6:{ctype:"cx",cnum:6,alias:"",flds:"field",xmits:E},config7:{ctype:"cx",cnum:7,alias:"",flds:"field",xmits:E},config8:{ctype:"cx",cnum:8,alias:"",flds:"field",xmits:E},config9:{ctype:"cx",cnum:9,alias:"",flds:"field",xmits:E},histdata0:{ctype:"hx",cnum:0,alias:"",flds:"ch",xmits:a},histdata1:{ctype:"hx",cnum:1,alias:"",flds:"ch",xmits:a},histdata2:{ctype:"hx",cnum:2,alias:"",flds:"ch",xmits:a},histdata3:{ctype:"hx",cnum:3,alias:"",flds:"ch",xmits:a},histdata4:{ctype:"hx",cnum:4,alias:"",flds:"ch",xmits:a},histdata5:{ctype:"hx",cnum:5,alias:"",flds:"ch",xmits:a},histdata6:{ctype:"hx",cnum:6,alias:"",flds:"ch",xmits:a},histdata7:{ctype:"hx",cnum:7,alias:"",flds:"ch",xmits:a},histdata8:{ctype:"hx",cnum:8,alias:"",flds:"ch",xmits:a},histdata9:{ctype:"hx",cnum:9,alias:"",flds:"ch",xmits:a},aloha:{ctype:"aloha",cnum:void 0,alias:"aloha",flds:null,xmits:["up","up+"]},alerts:{ctype:void 0,cnum:void 0,alias:"alerts",flds:null,xmits:["up"]},applog:{ctype:"applog",cnum:void 0,alias:"applog",flds:null,xmits:["up+"]}},I.HISTDATA_CONTAINER=["histdata0","histdata1","histdata2","histdata3","histdata4","histdata5","histdata6","histdata7","histdata8","histdata9"],I.CONFIG_CONTAINER=["config0","config1","config2","config3","config4","config5","config6","config7","config8","config9"],I.SERVER_CONTAINER=["configA","configB","configC"],I.regexRelation=/^(@[a-zA-Z_][a-zA-Z0-9_]*\.[a-zA-Z_][a-zA-Z0-9_]*(\[[^\]]+\])?(\.[a-zA-Z_][a-zA-Z0-9_]*)*|lib:[a-zA-Z0-9_-]+@[a-zA-Z_][a-zA-Z0-9_]*\.[a-zA-Z_][a-zA-Z0-9_]*(\[[^\]]+\])?(\.[a-zA-Z_][a-zA-Z0-9_]*)*)$/;let k=["astring","nstring","cstring","wstring","ustring"],w=["int8","int16","int32","int64","uint8","uint16","uint32","float16","float32","float64"];I.allowedRelationTypes={title:k,unit:k,chartMinimum:w,chartMaximum:w,scale:w,offset:w,decimalPlaces:["uint8","uint16","uint32","int8","int16","int32","int64"],channelMode:["uint8","uint16","uint32"],chartAlarmLow:w,chartAlarmHigh:w,chartWarningLow:w,chartWarningHigh:w,chartHysteresis:w,chartTriggerThreshold:w,chartTriggerRelation:w,chartSetPoint:w};function y(H,K,Y){let z=K[H];if(z!==void 0)if(I.regexRelation.exec(`${z}`)){let T=H==="chartSetPoint",[Q,...r0]=z.split("."),[,t0]=Q.split("@"),n0=Object.values(Y.containers).find(K0=>K0.title===t0),f0=r0.join("."),l0=T?";":"%",L0=(T?"":"%")+(n0?.name||t0)+l0;if(L0=L0+`${f0}`,T){let K0=Y.setPointList[K.name];L0=L0+`;actual_output_value_${K0}`}return L0}else return z}I.parseXMLValueWithRelation=y;function $(H){let{bitmask:K}=H;if(!K)return;let Y="$",z=K.replaceAll(" ","");if(K.startsWith("0x"))Y+=z.substring(2);else if(z.startsWith("0b")){let T=z.substring(2).replaceAll(" ","");Y+=parseInt(T,2).toString(16).toUpperCase()}return Y}I.parseXMLBitmask=$;function P(H){return H.type==="binary"?H.defaultValue.substring(2):H.defaultValue==="NaN"?"NAN":H.defaultValue}I.parseXMLDefaultValue=P,I.TDEF_NUMBER={xmlOut(H,K,Y){H.decpl=y("decimalPlaces",K,Y),H.decpl===void 0&&(H.decpl=0),H.vscale=y("scale",K,Y),H.vofs=y("offset",K,Y),H.min=y("chartMinimum",K,Y),H.max=y("chartMaximum",K,Y)}};let M={isBlob:1,xmlOut(H,K){H.max=K.byteSize}},W={xmlOut(H){H.decpl=-1,H.param0="local",H.units="UTC"}};I.TYPE_DEFS={u8:{dde:"uint8",dim:1,len:1,...I.TDEF_NUMBER,rdef:1,xml:{type:"u8"},pwn:{rwfunc:"u8",htype:"s32",printf:"%d"},openApi:{type:"number",minimum:0}},u16:{dde:"uint16",dim:1,len:2,...I.TDEF_NUMBER,rdef:1,xml:{type:"u16"},pwn:{rwfunc:"u16",htype:"s32",printf:"%d"},openApi:{type:"number",minimum:0}},u32:{dde:"uint32",dim:1,len:4,...I.TDEF_NUMBER,rdef:1,xml:{type:"u32"},pwn:{rwfunc:"u32",htype:"s32",printf:"%d"},openApi:{type:"number",minimum:0}},s8:{dde:"int8",dim:1,len:1,...I.TDEF_NUMBER,rdef:1,xml:{type:"s8"},pwn:{rwfunc:"s8",htype:"s32",printf:"%d"},openApi:{type:"number"}},s16:{dde:"int16",dim:1,len:2,...I.TDEF_NUMBER,rdef:1,xml:{type:"s16"},pwn:{rwfunc:"s16",htype:"s32",printf:"%d"},openApi:{type:"number"}},s32:{dde:"int32",dim:1,len:4,...I.TDEF_NUMBER,rdef:1,xml:{type:"s32"},pwn:{rwfunc:"s32",printf:"%d"},openApi:{type:"number"}},s64:{dde:"int64",dim:0,len:8,...I.TDEF_NUMBER,rdef:1,xml:{type:"s64"},pwn:{rwfunc:"s64",rwp:"%n{%l}",htype:"{%l}",printf:"%d"},openApi:{type:"number"}},f16:{dde:"float16",dim:1,len:2,...I.TDEF_NUMBER,rdef:1,xml:{type:"floatm16"},pwn:{rwfunc:"f16",rwp:"Float:%n",htype:"f32",printf:"%f"},openApi:{type:"number"}},f32:{dde:"float32",dim:1,len:4,...I.TDEF_NUMBER,rdef:1,xml:{type:"f32"},pwn:{rwfunc:"f32",rwp:"Float:%n",printf:"%f"},openApi:{type:"number"}},f64:{dde:"float64",dim:0,len:8,...I.TDEF_NUMBER,rdef:0,xml:{type:"f64"},pwn:{rwfunc:"f64",rwp:"%n{%l}",htype:"{%l}",printf:"%f"},openApi:{type:"number"}},stamp32:{dde:"stamp32",dim:1,len:4,...W,rdef:0,xml:{type:"stamp4"},pwn:{rwfunc:"stamp32",printf:"%s",printfFormat:"stampToISOString"},openApi:{type:"string",format:"YYYYMMDDhhmmssSSS",description:"UTC"}},stamp40:{dde:"stamp40",dim:0,len:5,...W,rdef:0,xml:{type:"stamp"},pwn:{rwfunc:"stamp40",rwp:"%n{%l}",htype:"{%l}",printf:"%s",printfFormat:"stampToISOString"},openApi:{type:"string",format:"YYYYMMDDhhmmssSSS",description:"UTC"}},bin:{dde:"binary",dim:0,...M,rdef:0,lenUnits:"byte",xml:{type:"string",editmask:"%HEX%"},pwn:{rwfunc:"bin",rwlen:1,rwp:"%n{%l}",htype:"{%l}",printf:null,printfFormat:"memtostr"},openApi:{type:"string",description:"HEX string"}},astr:{dde:"astring",dim:0,...M,rdef:1,lenUnits:"char",xml:{type:"string",param1:"nocodepage"},pwn:{rwfunc:"astr",rwlen:1,rwp:"%n{%l+1}",htype:"{%l+1}",printf:"%s"},openApi:{type:"string"}},nstr:{dde:"nstring",dim:0,...M,rdef:1,lenUnits:"byte",xml:{type:"string"},pwn:{rwfunc:"nstr",rwlen:1,rwp:"%n{%l+1}",htype:"{%l+1}",printf:"%s"},openApi:{type:"string"}},wstr:{dde:"wstring",dim:0,...M,rdef:1,lenUnits:"byte",xml:{type:"string"},pwn:{rwfunc:"wstr",rwlen:1,rwp:"%n[%l+1]",htype:"[%l+1]",printf:"%s"},openApi:{type:"string"}},ustr:{dde:"ustring",dim:0,...M,rdef:0,lenUnits:"byte",xml:{type:"string"},pwn:{rwfunc:"ustr",rwlen:1,rwp:"%n{%l+1}",htype:"{%l+1}",printf:"%s"},openApi:{type:"string"}},cstr:{dde:"cstring",dim:0,...M,rdef:1,lenUnits:"char",xml:{type:"string",editmask:"%HEX%"},pwn:{rwfunc:"cstr",rwlen:1,rwp:"%n{%l+1}",htype:"{%l+1}",printf:"%s"},openApi:{type:"string"}},_siteref:{dim:0,len:80,rdef:0,xml:{type:"string",max:"80",editmask:"%QUERY%all_sites;-name;!id;class;name;%EMPTY%"},pwn:{rwfunc:"astr",rwlen:1,rwp:"%n{%l+1}",htype:"{%l+1}"},js:{rwfunc:"String"}}},I.fieldTypeDefinitions={uint8:I.TYPE_DEFS.u8,uint16:I.TYPE_DEFS.u16,uint32:I.TYPE_DEFS.u32,int8:I.TYPE_DEFS.s8,int16:I.TYPE_DEFS.s16,int32:I.TYPE_DEFS.s32,int64:I.TYPE_DEFS.s64,float16:I.TYPE_DEFS.f16,float32:I.TYPE_DEFS.f32,float64:I.TYPE_DEFS.f64,stamp32:I.TYPE_DEFS.stamp32,stamp40:I.TYPE_DEFS.stamp40,binary:I.TYPE_DEFS.bin,astring:I.TYPE_DEFS.astr,nstring:I.TYPE_DEFS.nstr,wstring:I.TYPE_DEFS.wstr,ustring:I.TYPE_DEFS.ustr,cstring:I.TYPE_DEFS.cstr};let G=["_id","id","_stamp","stamp","tag","_uid","customer_id","site_id","_rec_flags__","applog"];function U(H){let K=H.toLowerCase();return G.includes(K)||/^field\d+$/.test(K)||/^ch\d+$/.test(K)}I.checkForReservedFieldName=U;function J(H){return!!H.fields.find(K=>K.library===null&&K.type!=="shadow")}I.hasContainerAppFields=J})(u0||={});var Ux=u0.DDEContainerName,Ve=u0.allowedRelationTypes,Wn=u0.regexRelation,Xn=u0.ContainerType,Yn=u0.checkForReservedFieldName,sr=u0.ContainerName,We=u0.CONTAINER_DEFS,Zn=u0.SERVER_CONTAINER,Qn=u0.HISTDATA_CONTAINER,xi=u0.CONFIG_CONTAINER,aA=u0.TransferDirection,Xe=u0.fieldTypeDefinitions,ax=i0.yamlRangeToLineInformation,ar;(e=>{class t{constructor(i,s,E){this.manifest=i;this.libraryFiles=s;this.ddeHistory=E}manifest;libraryFiles;ddeHistory;fieldNamesPerContainer={};usedContainerNames={};fileDiagnostics=[];libraryDDE=[];libraryYaml={};parseLibraries(){this.libraryDDE.length=0;let i=[];return this.libraryFiles.forEach(s=>{let{parsedDDE:E,diagnostics:a,parsedYaml:C}=this.parseYamlFile(s.path,s.yaml,s.libraryName);i.push(...a),this.libraryDDE.push(E),this.libraryYaml[s.libraryName]=C}),i}get previousVersion(){return{setPointList:{...this.ddeHistory?.setPointList},containers:{...this.ddeHistory?.containers}}}getContainerOfPreviousVersion(i){let s=this.previousVersion,E=i.startsWith("timeseries_")?i.substring(11):i;return Object.values(s.containers).find(a=>a.title===E)||null}parseMainDDE(i,s){let{parsedDDE:E,diagnostics:a}=this.parseYamlFile(i,s);return a.find(d=>d.level==="error")?{ddeJSON:null,diagnostics:a}:{ddeJSON:this.mergeAndFormat(E),diagnostics:a}}parseYamlFile(i,s,E){this.fileDiagnostics.length=0;let a=new Ox.LineCounter,C=(0,Ox.parseDocument)(s,{lineCounter:a});if(!C.contents)return{parsedDDE:{containers:{},setPointList:{}},diagnostics:[],parsedYaml:null};let l=C.contents||new Ox.YAMLMap;return this.validateContainerDefinition(l.items).forEach(u=>{this.validateAllowedContainer(i,u,a,E),this.validateContainerFields(C,i,u,a)}),{parsedDDE:this.yamlDocToDdeJson(C.toJS({mapAsMap:!0}),E),diagnostics:[...this.fileDiagnostics],parsedYaml:C}}yamlDocToDdeJson(i,s){let E={containers:{},setPointList:{}},a=new Map,C=[...Object.values(Ux)];if(i.get("cloudProject")){let d=Object.values(this.previousVersion.containers).map(p=>p.title),u=[...new Set([...C,...d])];C.length=0,C.push(...u)}for(let d of C)i.has(d)&&a.set(d,i.get(d));let l=i.get("timeseries");if(l)for(let[d,u]of l)a.set(d,u);for(let[d,u]of a){let{realContainer:p,transferDirection:k,legacyTitle:w}=this.getRealContainerInformation(d);if(!p)continue;let b=We[p],y=d.includes("timeseries_")?d.replace("timeseries_",""):d,$={name:p,title:y,previousTitle:w,containerType:b.ctype,volatile:d===Ux.volatile,transferDirection:k,fieldCount:u.size,knownNames:[],libraries:[],arrays:{},shadows:{},fields:[],size:0,fieldIndex:0};s&&$.libraries.push(s);for(let[P,N]of u){let M=[],W=N.get("type"),g=Xe[W];if(!(!g&&W!=="array")){if(W==="array"){let _=[],G=N.get("length"),U=N.get("fields"),J={name:P,length:G,library:s||null,fields:[]};$.arrays[P]=J;for(let I=0;I<G;I++){let H={name:P,index:I};for(let[K,Y]of U){let z=Xe[Y.get("type")];if(!z)continue;J.fields?.find(t0=>t0.name===K)||J.fields.push({name:K,type:Y.get("type"),byteSize:z.len||Y.get("bytes")||Y.get("length")});let T=`${P}[${I}].${K}`,{fields:Q,shadowInfo:r0}=this.createDDEJsonFields(T,s,z,Y);Q.forEach(t0=>{t0.arrayRef=H}),r0&&($.shadows[r0.name]=r0),_.push(...Q)}}M.push(..._)}else{let{arrayInfo:_,fields:G,shadowInfo:U}=this.createDDEJsonFields(P,s,g,N);_&&($.arrays[_.name]=_),U&&($.shadows[U.name]=U),M.push(...G)}M.forEach(_=>{_.index=++$.fieldIndex,$.fields.push(_),$.size+=_.byteSize})}}E.containers[p]=$}return E}getRealContainerInformation(i){let s,E,a;if(this.previousVersion){let C=i.startsWith("timeseries_")?i.substring(11):i,{name:l,direction:d,previousTitle:u}=this.findPreviousUsedContainer(C);s=l,E=d,a=u}if(!s){let C=Object.entries(this.usedContainerNames).find(([,l])=>l===i);C&&(s=C[0])}return s||(s=this.findNextFreeContainer(i)),this.usedContainerNames[s]=i,E||(E=[Ux.setting,Ux.command].includes(i)?aA.down:aA.up),E===aA.up&&s&&We[s].xmits.includes(aA.upPlus)&&(E=aA.upPlus),s&&[sr.configA,sr.configB].includes(s)&&(E=aA.backendOnly),{realContainer:s,transferDirection:E,legacyTitle:a}}findNextFreeContainer(i){if(i===sr.aloha)return sr.aloha;let s=xi;i.startsWith("timeseries_")?s=Qn:[Ux.relations,Ux.storage].includes(i)&&(s=Zn);let E=this.previousVersion?.containers;return E&&(s=s.filter(a=>!Object.hasOwn(E,a))),s.find(a=>!Object.hasOwn(this.usedContainerNames,a))}findPreviousUsedContainer(i){let s=this.previousVersion.containers,E=Object.values(s).find(a=>a.title===i);return{name:E?.name,direction:E?.transferDirection,previousTitle:E?.previousTitle}}createDDEJsonFields(i,s,E,a){let C=a.get("array"),l=[],d,u;if(C){d={name:i,library:s||null,length:C};for(let p=0;p<C;p++){let k=`${i.toLowerCase()}[${p}]`;l.push(this.buildDDEJsonField(k,a,{name:i,index:p},E,s,null))}}else{let p=this.buildDDEJsonField(i,a,null,E,s,null);l.push(p);let k=a.get("shadowFields");if(k){u={name:p.name,byteSize:p.byteSize,byteOffset:p.byteOffset};for(let[w,b]of k){let y=w;i.includes(".")&&(y=i.split(".")[0]+`.${w}`),l.push(this.buildDDEJsonField(y,b,null,E,s,p.name))}}}return{arrayInfo:d,shadowInfo:u,fields:l}}buildDDEJsonField(i,s,E,a,C,l){return{id:i.toLowerCase(),name:i,index:0,library:C||null,byteOffset:0,byteSize:a.len||s.get("bytes")||s.get("length"),type:s.get("type"),title:s.get("title")||null,arrayRef:E,shadowRef:l,unit:s.get("unit"),hex:s.get("hex"),decimalPlaces:s.get("decimalPlaces"),writePermission:this.parseUserLevel(s.get("writePermission")),readPermission:this.parseUserLevel(s.get("readPermission")),channelMode:this.parseChannelMode(s.get("channelMode")),defaultValue:s.get("defaultValue"),scale:s.get("scale"),offset:s.get("offset"),chartMinimum:s.get("chartMinimum"),description:s.get("description"),chartMaximum:s.get("chartMaximum"),chartAlarmLow:s.get("chartAlarmLow"),chartAlarmHigh:s.get("chartAlarmHigh"),chartWarningLow:s.get("chartWarningLow"),chartWarningHigh:s.get("chartWarningHigh"),chartHysteresis:s.get("chartHysteresis"),chartTriggerThreshold:s.get("chartTriggerThreshold"),chartTriggerRelation:this.parseTriggerUndershoot(s.get("chartTriggerRelation")),chartSetPoint:s.get("chartSetPoint"),utilsTransferInterval:!!s.get("utilsTransferInterval"),bitmask:s.get("bitmask")}}resolvePossibleAlias(i,s){return(0,Ox.isAlias)(s)?s.resolve(i).value:s?.value}validateContainerDefinition(i){let s=[];return i.forEach(E=>{let C=E.key.value;C==="timeseries"?E.value.items.forEach(l=>{l.key.value=`timeseries_${l.key}`,s.push(l)}):["dde","cloudProject","constants"].includes(C)||s.push(E)}),s}parseUserLevel(i){if(i==="read-only")return 99;if(i?.startsWith("UL"))return Number(i.substring(2))}parseChannelMode(i){if(i)return{digital:1,"day-counter":2,"interval-counter":3,analog:6,"infinite-counter":12}[i]??i}parseTriggerUndershoot(i){if(i)return{"greater-or-equal":0,"less-or-equal":1}[i]??i}validateAllowedContainer(i,s,E,a){if(!s.value)return;let l=s.key.value;if(a&&(l.startsWith("aloha")||l.startsWith("timeseries"))){let d=l.includes("_")?l.split("_")[1]:l;this.fileDiagnostics.push({file:i,level:"error",message:`"${d}" not allowed within a library`,...ax(E,s.key.range)})}if(R.isAnalytics(this.manifest)&&![Ux.relations,Ux.storage].includes(l)){let d=l.includes("_")?l.split("_")[1]:l;this.fileDiagnostics.push({file:i,level:"error",message:`"${d}" not allowed within an analytics app. Only "relations" and "storage" are allowed.`,...ax(E,s.key.range)})}}validateContainerFields(i,s,E,a){let C=E.value;if(!C)return;let l=E.key.value;Object.hasOwn(this.fieldNamesPerContainer,l)||(this.fieldNamesPerContainer[l]=[]);let d=this.getContainerOfPreviousVersion(l);C.items.forEach(u=>{let k=u.key.value;this.checkForContainerRelation(u,i,s,a),this.validateFieldName(u,l,s,a),this.checkFieldNameLength(u,l,s,a);let w=d?.fields.find(M=>M.id===k.toLowerCase()),b=u.value,y=b.get("type",!0),$=this.resolvePossibleAlias(i,y),P=b.get("bytes",!0),N=this.resolvePossibleAlias(i,P);w&&(y&&$&&w.type!==$&&this.fileDiagnostics.push({file:s,level:"warning",message:`Field type changed from "${w.type}" to "${$}".
|
|
1642
|
-
Changing the type of an existing field can result in data loss or unexpected behaviour.`,...
|
|
1643
|
-
Changing the size of an existing field can result in data loss or unexpected behaviour.`,...
|
|
1644
|
-
`)}function
|
|
1645
|
-
`);if(u.length===1)t(`/** ${u[0]} */`);else{t("/**");for(let p of u)t(` * ${p}`);t(" */")}}let d=Object.hasOwn(
|
|
1641
|
+
Accepts a number or a relation link (\`@container.field\`).`,$ref:"#/$defs/relationLinkPattern"}}};var cr=require("yaml");var zx=require("yaml");var TA;(e=>e.CODE={ddeFieldLength:"field_name_length"})(TA||={});var u0;(I=>{let t;(n0=>(n0.state="state",n0.result="result",n0.aloha="aloha",n0.volatile="volatile",n0.setting="setting",n0.command="command",n0.storage="storage",n0.relations="relations"))(t=I.DDEContainerName||={});let e;(r0=>(r0.configA="configA",r0.configB="configB",r0.configC="configC",r0.config0="config0",r0.config1="config1",r0.config2="config2",r0.config3="config3",r0.config4="config4",r0.config5="config5",r0.config6="config6",r0.config7="config7",r0.config8="config8",r0.config9="config9",r0.histdata0="histdata0",r0.histdata1="histdata1",r0.histdata2="histdata2",r0.histdata3="histdata3",r0.histdata4="histdata4",r0.histdata5="histdata5",r0.histdata6="histdata6",r0.histdata7="histdata7",r0.histdata8="histdata8",r0.histdata9="histdata9",r0.aloha="aloha",r0.alerts="alerts",r0.applog="applog"))(e=I.ContainerName||={});let F;(T=>(T.cx="cx",T.hx="hx",T.cb="cb",T.aloha="aloha",T.applog="applog"))(F=I.ContainerType||={});let i;(d0=>(d0.up="up",d0.down="down",d0.upPlus="up+",d0.downPlus="down+",d0.none="none",d0.backendOnly="backend-only",d0.deviceOnly="device-only",d0.both="both",d0.bothPlus="both+",d0.noneBackend="none-be"))(i=I.TransferDirection||={});function a(M,W){return M==="cx"&&!["backend-only"].includes(W)?"DDE_CID_CONFIG":M==="hx"?"DDE_CID_HISTDATA":M==="aloha"?"DDE_CID_ALOHA":null}I.CONTAINER_DEF_DLO_CID_BASE=a;let E=["up","up+","down","down+","both","none","both+","backend-only","device-only"],s=["up","up+","backend-only"];I.CONTAINER_DEFS={configA:{ctype:"cb",cnum:"a",alias:"",flds:"field",xmits:["backend-only"]},configB:{ctype:"cb",cnum:"b",alias:"",flds:"field",xmits:["backend-only"]},configC:{ctype:"cb",cnum:"c",alias:"",flds:"field",xmits:["backend-only"]},config0:{ctype:"cx",cnum:0,alias:"",flds:"field",xmits:E},config1:{ctype:"cx",cnum:1,alias:"",flds:"field",xmits:E},config2:{ctype:"cx",cnum:2,alias:"",flds:"field",xmits:E},config3:{ctype:"cx",cnum:3,alias:"",flds:"field",xmits:E},config4:{ctype:"cx",cnum:4,alias:"",flds:"field",xmits:E},config5:{ctype:"cx",cnum:5,alias:"",flds:"field",xmits:E},config6:{ctype:"cx",cnum:6,alias:"",flds:"field",xmits:E},config7:{ctype:"cx",cnum:7,alias:"",flds:"field",xmits:E},config8:{ctype:"cx",cnum:8,alias:"",flds:"field",xmits:E},config9:{ctype:"cx",cnum:9,alias:"",flds:"field",xmits:E},histdata0:{ctype:"hx",cnum:0,alias:"",flds:"ch",xmits:s},histdata1:{ctype:"hx",cnum:1,alias:"",flds:"ch",xmits:s},histdata2:{ctype:"hx",cnum:2,alias:"",flds:"ch",xmits:s},histdata3:{ctype:"hx",cnum:3,alias:"",flds:"ch",xmits:s},histdata4:{ctype:"hx",cnum:4,alias:"",flds:"ch",xmits:s},histdata5:{ctype:"hx",cnum:5,alias:"",flds:"ch",xmits:s},histdata6:{ctype:"hx",cnum:6,alias:"",flds:"ch",xmits:s},histdata7:{ctype:"hx",cnum:7,alias:"",flds:"ch",xmits:s},histdata8:{ctype:"hx",cnum:8,alias:"",flds:"ch",xmits:s},histdata9:{ctype:"hx",cnum:9,alias:"",flds:"ch",xmits:s},aloha:{ctype:"aloha",cnum:void 0,alias:"aloha",flds:null,xmits:["up","up+"]},alerts:{ctype:void 0,cnum:void 0,alias:"alerts",flds:null,xmits:["up"]},applog:{ctype:"applog",cnum:void 0,alias:"applog",flds:null,xmits:["up+"]}},I.HISTDATA_CONTAINER=["histdata0","histdata1","histdata2","histdata3","histdata4","histdata5","histdata6","histdata7","histdata8","histdata9"],I.CONFIG_CONTAINER=["config0","config1","config2","config3","config4","config5","config6","config7","config8","config9"],I.SERVER_CONTAINER=["configA","configB","configC"],I.regexRelation=/^(@[a-zA-Z_][a-zA-Z0-9_]*\.[a-zA-Z_][a-zA-Z0-9_]*(\[[^\]]+\])?(\.[a-zA-Z_][a-zA-Z0-9_]*)*|lib:[a-zA-Z0-9_-]+@[a-zA-Z_][a-zA-Z0-9_]*\.[a-zA-Z_][a-zA-Z0-9_]*(\[[^\]]+\])?(\.[a-zA-Z_][a-zA-Z0-9_]*)*)$/;let g=["astring","nstring","cstring","wstring","ustring"],w=["int8","int16","int32","int64","uint8","uint16","uint32","float16","float32","float64"];I.allowedRelationTypes={title:g,unit:g,chartMinimum:w,chartMaximum:w,scale:w,offset:w,decimalPlaces:["uint8","uint16","uint32","int8","int16","int32","int64"],channelMode:["uint8","uint16","uint32"],chartAlarmLow:w,chartAlarmHigh:w,chartWarningLow:w,chartWarningHigh:w,chartHysteresis:w,chartTriggerThreshold:w,chartTriggerRelation:w,chartSetPoint:w};function k(M,W,J){let Z=W[M];if(Z!==void 0)if(I.regexRelation.exec(`${Z}`)){let X=M==="chartSetPoint",[T,...A0]=Z.split("."),[,e0]=T.split("@"),n0=Object.values(J.containers).find(S0=>S0.title===e0),i0=A0.join("."),d0=X?";":"%",b0=(X?"":"%")+(n0?.name||e0)+d0;if(b0=b0+`${i0}`,X){let S0=J.setPointList[W.name];b0=b0+`;actual_output_value_${S0}`}return b0}else return Z}I.parseXMLValueWithRelation=k;function _(M){let{bitmask:W}=M;if(!W)return;let J="$",Z=W.replaceAll(" ","");if(W.startsWith("0x"))J+=Z.substring(2);else if(Z.startsWith("0b")){let X=Z.substring(2).replaceAll(" ","");J+=parseInt(X,2).toString(16).toUpperCase()}return J}I.parseXMLBitmask=_;function q(M){return M.type==="binary"?M.defaultValue.substring(2):M.defaultValue==="NaN"?"NAN":M.defaultValue}I.parseXMLDefaultValue=q,I.TDEF_NUMBER={xmlOut(M,W,J){M.decpl=k("decimalPlaces",W,J),M.decpl===void 0&&(M.decpl=0),M.vscale=k("scale",W,J),M.vofs=k("offset",W,J),M.min=k("chartMinimum",W,J),M.max=k("chartMaximum",W,J)}};let S={isBlob:1,xmlOut(M,W){M.max=W.byteSize}},V={xmlOut(M){M.decpl=-1,M.param0="local",M.units="UTC"}};I.TYPE_DEFS={u8:{dde:"uint8",dim:1,len:1,...I.TDEF_NUMBER,rdef:1,xml:{type:"u8"},pwn:{rwfunc:"u8",htype:"s32",printf:"%d"},openApi:{type:"number",minimum:0}},u16:{dde:"uint16",dim:1,len:2,...I.TDEF_NUMBER,rdef:1,xml:{type:"u16"},pwn:{rwfunc:"u16",htype:"s32",printf:"%d"},openApi:{type:"number",minimum:0}},u32:{dde:"uint32",dim:1,len:4,...I.TDEF_NUMBER,rdef:1,xml:{type:"u32"},pwn:{rwfunc:"u32",htype:"s32",printf:"%d"},openApi:{type:"number",minimum:0}},s8:{dde:"int8",dim:1,len:1,...I.TDEF_NUMBER,rdef:1,xml:{type:"s8"},pwn:{rwfunc:"s8",htype:"s32",printf:"%d"},openApi:{type:"number"}},s16:{dde:"int16",dim:1,len:2,...I.TDEF_NUMBER,rdef:1,xml:{type:"s16"},pwn:{rwfunc:"s16",htype:"s32",printf:"%d"},openApi:{type:"number"}},s32:{dde:"int32",dim:1,len:4,...I.TDEF_NUMBER,rdef:1,xml:{type:"s32"},pwn:{rwfunc:"s32",printf:"%d"},openApi:{type:"number"}},s64:{dde:"int64",dim:0,len:8,...I.TDEF_NUMBER,rdef:1,xml:{type:"s64"},pwn:{rwfunc:"s64",rwp:"%n{%l}",htype:"{%l}",printf:"%d"},openApi:{type:"number"}},f16:{dde:"float16",dim:1,len:2,...I.TDEF_NUMBER,rdef:1,xml:{type:"floatm16"},pwn:{rwfunc:"f16",rwp:"Float:%n",htype:"f32",printf:"%f"},openApi:{type:"number"}},f32:{dde:"float32",dim:1,len:4,...I.TDEF_NUMBER,rdef:1,xml:{type:"f32"},pwn:{rwfunc:"f32",rwp:"Float:%n",printf:"%f"},openApi:{type:"number"}},f64:{dde:"float64",dim:0,len:8,...I.TDEF_NUMBER,rdef:0,xml:{type:"f64"},pwn:{rwfunc:"f64",rwp:"%n{%l}",htype:"{%l}",printf:"%f"},openApi:{type:"number"}},stamp32:{dde:"stamp32",dim:1,len:4,...V,rdef:0,xml:{type:"stamp4"},pwn:{rwfunc:"stamp32",printf:"%s",printfFormat:"stampToISOString"},openApi:{type:"string",format:"YYYYMMDDhhmmssSSS",description:"UTC"}},stamp40:{dde:"stamp40",dim:0,len:5,...V,rdef:0,xml:{type:"stamp"},pwn:{rwfunc:"stamp40",rwp:"%n{%l}",htype:"{%l}",printf:"%s",printfFormat:"stampToISOString"},openApi:{type:"string",format:"YYYYMMDDhhmmssSSS",description:"UTC"}},bin:{dde:"binary",dim:0,...S,rdef:0,lenUnits:"byte",xml:{type:"string",editmask:"%HEX%"},pwn:{rwfunc:"bin",rwlen:1,rwp:"%n{%l}",htype:"{%l}",printf:null,printfFormat:"memtostr"},openApi:{type:"string",description:"HEX string"}},astr:{dde:"astring",dim:0,...S,rdef:1,lenUnits:"char",xml:{type:"string",param1:"nocodepage"},pwn:{rwfunc:"astr",rwlen:1,rwp:"%n{%l+1}",htype:"{%l+1}",printf:"%s"},openApi:{type:"string"}},nstr:{dde:"nstring",dim:0,...S,rdef:1,lenUnits:"byte",xml:{type:"string"},pwn:{rwfunc:"nstr",rwlen:1,rwp:"%n{%l+1}",htype:"{%l+1}",printf:"%s"},openApi:{type:"string"}},wstr:{dde:"wstring",dim:0,...S,rdef:1,lenUnits:"byte",xml:{type:"string"},pwn:{rwfunc:"wstr",rwlen:1,rwp:"%n[%l+1]",htype:"[%l+1]",printf:"%s"},openApi:{type:"string"}},ustr:{dde:"ustring",dim:0,...S,rdef:0,lenUnits:"byte",xml:{type:"string"},pwn:{rwfunc:"ustr",rwlen:1,rwp:"%n{%l+1}",htype:"{%l+1}",printf:"%s"},openApi:{type:"string"}},cstr:{dde:"cstring",dim:0,...S,rdef:1,lenUnits:"char",xml:{type:"string",editmask:"%HEX%"},pwn:{rwfunc:"cstr",rwlen:1,rwp:"%n{%l+1}",htype:"{%l+1}",printf:"%s"},openApi:{type:"string"}},_siteref:{dim:0,len:80,rdef:0,xml:{type:"string",max:"80",editmask:"%QUERY%all_sites;-name;!id;class;name;%EMPTY%"},pwn:{rwfunc:"astr",rwlen:1,rwp:"%n{%l+1}",htype:"{%l+1}"},js:{rwfunc:"String"}}},I.fieldTypeDefinitions={uint8:I.TYPE_DEFS.u8,uint16:I.TYPE_DEFS.u16,uint32:I.TYPE_DEFS.u32,int8:I.TYPE_DEFS.s8,int16:I.TYPE_DEFS.s16,int32:I.TYPE_DEFS.s32,int64:I.TYPE_DEFS.s64,float16:I.TYPE_DEFS.f16,float32:I.TYPE_DEFS.f32,float64:I.TYPE_DEFS.f64,stamp32:I.TYPE_DEFS.stamp32,stamp40:I.TYPE_DEFS.stamp40,binary:I.TYPE_DEFS.bin,astring:I.TYPE_DEFS.astr,nstring:I.TYPE_DEFS.nstr,wstring:I.TYPE_DEFS.wstr,ustring:I.TYPE_DEFS.ustr,cstring:I.TYPE_DEFS.cstr};let P=["_id","id","_stamp","stamp","tag","_uid","customer_id","site_id","_rec_flags__","applog"];function H(M){let W=M.toLowerCase();return P.includes(W)||/^field\d+$/.test(W)||/^ch\d+$/.test(W)}I.checkForReservedFieldName=H;function U(M){return!!M.fields.find(W=>W.library===null&&W.type!=="shadow")}I.hasContainerAppFields=U})(u0||={});var Jx=u0.DDEContainerName,Ve=u0.allowedRelationTypes,Xn=u0.regexRelation,Yn=u0.ContainerType,Zn=u0.checkForReservedFieldName,ar=u0.ContainerName,We=u0.CONTAINER_DEFS,Qn=u0.SERVER_CONTAINER,xi=u0.HISTDATA_CONTAINER,Ai=u0.CONFIG_CONTAINER,sA=u0.TransferDirection,Xe=u0.fieldTypeDefinitions,sx=F0.yamlRangeToLineInformation,sr;(e=>{class t{constructor(i,a,E){this.manifest=i;this.libraryFiles=a;this.ddeHistory=E}manifest;libraryFiles;ddeHistory;fieldNamesPerContainer={};usedContainerNames={};fileDiagnostics=[];libraryDDE=[];libraryYaml={};parseLibraries(){this.libraryDDE.length=0;let i=[];return this.libraryFiles.forEach(a=>{let{parsedDDE:E,diagnostics:s,parsedYaml:C}=this.parseYamlFile(a.path,a.yaml,a.libraryName);i.push(...s),this.libraryDDE.push(E),this.libraryYaml[a.libraryName]=C}),i}get previousVersion(){return{setPointList:{...this.ddeHistory?.setPointList},containers:{...this.ddeHistory?.containers}}}getContainerOfPreviousVersion(i){let a=this.previousVersion,E=i.startsWith("timeseries_")?i.substring(11):i;return Object.values(a.containers).find(s=>s.title===E)||null}parseMainDDE(i,a){let{parsedDDE:E,diagnostics:s}=this.parseYamlFile(i,a);return s.find(d=>d.level==="error")?{ddeJSON:null,diagnostics:s}:{ddeJSON:this.mergeAndFormat(E),diagnostics:s}}parseYamlFile(i,a,E){this.fileDiagnostics.length=0;let s=new zx.LineCounter,C=(0,zx.parseDocument)(a,{lineCounter:s});if(!C.contents)return{parsedDDE:{containers:{},setPointList:{}},diagnostics:[],parsedYaml:null};let l=C.contents||new zx.YAMLMap;return this.validateContainerDefinition(l.items).forEach(u=>{this.validateAllowedContainer(i,u,s,E),this.validateContainerFields(C,i,u,s)}),{parsedDDE:this.yamlDocToDdeJson(C.toJS({mapAsMap:!0}),E),diagnostics:[...this.fileDiagnostics],parsedYaml:C}}yamlDocToDdeJson(i,a){let E={containers:{},setPointList:{}},s=new Map,C=[...Object.values(Jx)];if(i.get("cloudProject")){let d=Object.values(this.previousVersion.containers).map(p=>p.title),u=[...new Set([...C,...d])];C.length=0,C.push(...u)}for(let d of C)i.has(d)&&s.set(d,i.get(d));let l=i.get("timeseries");if(l)for(let[d,u]of l)s.set(d,u);for(let[d,u]of s){let{realContainer:p,transferDirection:g,legacyTitle:w}=this.getRealContainerInformation(d);if(!p)continue;let b=We[p],k=d.includes("timeseries_")?d.replace("timeseries_",""):d,_={name:p,title:k,previousTitle:w,containerType:b.ctype,volatile:d===Jx.volatile,transferDirection:g,fieldCount:u.size,knownNames:[],libraries:[],arrays:{},shadows:{},fields:[],size:0,fieldIndex:0};a&&_.libraries.push(a);for(let[q,N]of u){let S=[],V=N.get("type"),L=Xe[V];if(!(!L&&V!=="array")){if(V==="array"){let y=[],P=N.get("length"),H=N.get("fields"),U={name:q,length:P,library:a||null,fields:[]};_.arrays[q]=U;for(let I=0;I<P;I++){let M={name:q,index:I};for(let[W,J]of H){let Z=Xe[J.get("type")];if(!Z)continue;U.fields?.find(e0=>e0.name===W)||U.fields.push({name:W,type:J.get("type"),byteSize:Z.len||J.get("bytes")||J.get("length")});let X=`${q}[${I}].${W}`,{fields:T,shadowInfo:A0}=this.createDDEJsonFields(X,a,Z,J);T.forEach(e0=>{e0.arrayRef=M}),A0&&(_.shadows[A0.name]=A0),y.push(...T)}}S.push(...y)}else{let{arrayInfo:y,fields:P,shadowInfo:H}=this.createDDEJsonFields(q,a,L,N);y&&(_.arrays[y.name]=y),H&&(_.shadows[H.name]=H),S.push(...P)}S.forEach(y=>{y.index=++_.fieldIndex,_.fields.push(y),_.size+=y.byteSize})}}E.containers[p]=_}return E}getRealContainerInformation(i){let a,E,s;if(this.previousVersion){let C=i.startsWith("timeseries_")?i.substring(11):i,{name:l,direction:d,previousTitle:u}=this.findPreviousUsedContainer(C);a=l,E=d,s=u}if(!a){let C=Object.entries(this.usedContainerNames).find(([,l])=>l===i);C&&(a=C[0])}return a||(a=this.findNextFreeContainer(i)),this.usedContainerNames[a]=i,E||(E=[Jx.setting,Jx.command].includes(i)?sA.down:sA.up),E===sA.up&&a&&We[a].xmits.includes(sA.upPlus)&&(E=sA.upPlus),a&&[ar.configA,ar.configB].includes(a)&&(E=sA.backendOnly),{realContainer:a,transferDirection:E,legacyTitle:s}}findNextFreeContainer(i){if(i===ar.aloha)return ar.aloha;let a=Ai;i.startsWith("timeseries_")?a=xi:[Jx.relations,Jx.storage].includes(i)&&(a=Qn);let E=this.previousVersion?.containers;return E&&(a=a.filter(s=>!Object.hasOwn(E,s))),a.find(s=>!Object.hasOwn(this.usedContainerNames,s))}findPreviousUsedContainer(i){let a=this.previousVersion.containers,E=Object.values(a).find(s=>s.title===i);return{name:E?.name,direction:E?.transferDirection,previousTitle:E?.previousTitle}}createDDEJsonFields(i,a,E,s){let C=s.get("array"),l=[],d,u;if(C){d={name:i,library:a||null,length:C};for(let p=0;p<C;p++){let g=`${i.toLowerCase()}[${p}]`;l.push(this.buildDDEJsonField(g,s,{name:i,index:p},E,a,null))}}else{let p=this.buildDDEJsonField(i,s,null,E,a,null);l.push(p);let g=s.get("shadowFields");if(g){u={name:p.name,byteSize:p.byteSize,byteOffset:p.byteOffset};for(let[w,b]of g){let k=w;i.includes(".")&&(k=i.split(".")[0]+`.${w}`),l.push(this.buildDDEJsonField(k,b,null,E,a,p.name))}}}return{arrayInfo:d,shadowInfo:u,fields:l}}buildDDEJsonField(i,a,E,s,C,l){return{id:i.toLowerCase(),name:i,index:0,library:C||null,byteOffset:0,byteSize:s.len||a.get("bytes")||a.get("length"),type:a.get("type"),title:a.get("title")||null,arrayRef:E,shadowRef:l,unit:a.get("unit"),hex:a.get("hex"),decimalPlaces:a.get("decimalPlaces"),writePermission:this.parseUserLevel(a.get("writePermission")),readPermission:this.parseUserLevel(a.get("readPermission")),channelMode:this.parseChannelMode(a.get("channelMode")),defaultValue:a.get("defaultValue"),scale:a.get("scale"),offset:a.get("offset"),chartMinimum:a.get("chartMinimum"),description:a.get("description"),chartMaximum:a.get("chartMaximum"),chartAlarmLow:a.get("chartAlarmLow"),chartAlarmHigh:a.get("chartAlarmHigh"),chartWarningLow:a.get("chartWarningLow"),chartWarningHigh:a.get("chartWarningHigh"),chartHysteresis:a.get("chartHysteresis"),chartTriggerThreshold:a.get("chartTriggerThreshold"),chartTriggerRelation:this.parseTriggerUndershoot(a.get("chartTriggerRelation")),chartSetPoint:a.get("chartSetPoint"),utilsTransferInterval:!!a.get("utilsTransferInterval"),bitmask:a.get("bitmask")}}resolvePossibleAlias(i,a){return(0,zx.isAlias)(a)?a.resolve(i).value:a?.value}validateContainerDefinition(i){let a=[];return i.forEach(E=>{let C=E.key.value;C==="timeseries"?E.value.items.forEach(l=>{l.key.value=`timeseries_${l.key}`,a.push(l)}):["dde","cloudProject","constants"].includes(C)||a.push(E)}),a}parseUserLevel(i){if(i==="read-only")return 99;if(i?.startsWith("UL"))return Number(i.substring(2))}parseChannelMode(i){if(i)return{digital:1,"day-counter":2,"interval-counter":3,analog:6,"infinite-counter":12}[i]??i}parseTriggerUndershoot(i){if(i)return{"greater-or-equal":0,"less-or-equal":1}[i]??i}validateAllowedContainer(i,a,E,s){if(!a.value)return;let l=a.key.value;if(s&&(l.startsWith("aloha")||l.startsWith("timeseries"))){let d=l.includes("_")?l.split("_")[1]:l;this.fileDiagnostics.push({file:i,level:"error",message:`"${d}" not allowed within a library`,...sx(E,a.key.range)})}if(O.isAnalytics(this.manifest)&&![Jx.relations,Jx.storage].includes(l)){let d=l.includes("_")?l.split("_")[1]:l;this.fileDiagnostics.push({file:i,level:"error",message:`"${d}" not allowed within an analytics app. Only "relations" and "storage" are allowed.`,...sx(E,a.key.range)})}}validateContainerFields(i,a,E,s){let C=E.value;if(!C)return;let l=E.key.value;Object.hasOwn(this.fieldNamesPerContainer,l)||(this.fieldNamesPerContainer[l]=[]);let d=this.getContainerOfPreviousVersion(l);C.items.forEach(u=>{let g=u.key.value;this.checkForContainerRelation(u,i,a,s),this.validateFieldName(u,l,a,s),this.checkFieldNameLength(u,l,a,s);let w=d?.fields.find(S=>S.id===g.toLowerCase()),b=u.value,k=b.get("type",!0),_=this.resolvePossibleAlias(i,k),q=b.get("bytes",!0),N=this.resolvePossibleAlias(i,q);w&&(k&&_&&w.type!==_&&this.fileDiagnostics.push({file:a,level:"warning",message:`Field type changed from "${w.type}" to "${_}".
|
|
1642
|
+
Changing the type of an existing field can result in data loss or unexpected behaviour.`,...sx(s,k.range)}),q&&N&&w.byteSize!==N&&this.fileDiagnostics.push({file:a,level:"warning",message:`Byte size changed from '${w.byteSize}' to '${N}'.
|
|
1643
|
+
Changing the size of an existing field can result in data loss or unexpected behaviour.`,...sx(s,q.range)}))})}checkForContainerRelation(i,a,E,s){let C=i.value.get("fields");C&&C.items.forEach(d=>{this.checkForContainerRelation(d,a,E,s)}),i.value.items.forEach(d=>{let u=d.value;if(u?.value&&Xn.exec(`${u.value}`)){let p=d.key.value;if(p){if(!Object.hasOwn(Ve,p))return this.fileDiagnostics.push({file:E,level:"error",message:`Property "${p}" does not allow relations.`,...sx(s,u.range)});if(["scale","offset"].includes(p))return this.fileDiagnostics.push({file:E,level:"warning",message:`Container relations for "${p}" are not available within the dlo source.`,...sx(s,u.range)})}return this.validateContainerRelation(p,u,a,E,s)}})}validateFieldName(i,a,E,s){let C=this.fieldNamesPerContainer[a],l=i.key,d=l.value;Zn(d)&&this.fileDiagnostics.push({file:E,level:"error",message:`Reserved property "${d}" is not allowed.`,...sx(s,l.range)});let u=i.value.get("shadowFields");u&&u.items.forEach(p=>{this.validateFieldName(p,a,E,s)}),C.includes(d.toLowerCase())?this.fileDiagnostics.push({file:E,level:"error",message:`Field name "${d}" is already occupied`,...sx(s,l.range)}):C.push(d.toLowerCase())}checkFieldNameLength(i,a,E,s){let C=i.key,l=C.value,u=`DDE_${a.startsWith("timeseries")?a.substring(10):a}_`,p=31-u.length;u.length+l.length>31&&this.fileDiagnostics.push({file:E,level:"error",code:TA.CODE.ddeFieldLength,message:`Field name "${l}" to long. ${p} characters allowed for this field/container.`,...sx(s,C.range)})}validateContainerRelation(i,a,E,s,C){let[l,d,u]=a.value.split(".",3),[p,g]=l.split("@"),w=p?p.split(":")[1]:null,k=(w&&this.libraryYaml[w]?this.libraryYaml[w]:E).contents?.get(g),_=d.split("[")[0],q=null;if(k){let N=k.get(_);if(N)if(u){let S=N.get("fields");S&&S.get(u)&&(q=S.get(u))}else q=N;else q=this.findRelatedShadowField(k,_)}if(q){let N=Ve[i],S=q.get("type");N.includes(S)||this.fileDiagnostics.push({file:s,level:"error",message:`Related field type "${S}" is not allowed for attribute "${i}".`,...sx(C,a.range)})}else w&&!this.libraryYaml[w]?this.fileDiagnostics.push({file:s,level:"error",message:`Related library "${w}" does not exist.`,...sx(C,a.range)}):this.fileDiagnostics.push({file:s,level:"error",message:`Related field "${a.value}" does not exist.`,...sx(C,a.range)})}findRelatedShadowField(i,a){for(let E of i.items){let C=E.value.get("shadowFields");if(!C)continue;let l=C.get(a);if(l)return l}}mergeAndFormat(i){let a={containers:{},setPointList:{}};for(let E of this.libraryDDE)this.combineDDE(a,E);return this.combineDDE(a,i),this.sortContainerFields(a),this.generateSetPointList(a),a}combineDDE(i,a){for(let[E,s]of Object.entries(a.containers)){let C=i.containers[E];C?(C.title=s.title,C.knownNames.unshift(s.title),C.libraries.push(...s.libraries),C.fields.push(...s.fields),C.arrays={...C.arrays,...s.arrays},C.shadows={...C.shadows,...s.shadows}):(C=i.containers[E]=structuredClone(s),C.knownNames.unshift(s.title),C.fieldCount=C.fields.length,C.fieldIndex=0);let l=this.initialContainerByteOffset(C);for(let[d,u]of C.fields.entries()){if(u.shadowRef){let p=C.shadows[u.shadowRef];u.byteOffset=p.byteOffset}else u.byteOffset=l,this.updateShadowFieldInformation(i.containers[E],u),l+=u.byteSize||0;d>C.fieldCount-1&&(u.index+=C.fieldIndex)}C.fieldIndex+=s.fieldIndex,C.knownNames=[...new Set(C.knownNames)],C.libraries=[...new Set(C.libraries)],C.fieldCount=C.fields.length}}initialContainerByteOffset(i){return i.containerType===Yn.hx?1:0}updateShadowFieldInformation(i,a){a&&Object.hasOwn(i.shadows,a.name)&&(i.shadows[a.name].byteOffset=a.byteOffset)}sortContainerFields(i){for(let a of Object.values(i.containers)){let{sortedFields:E,containerSize:s}=this.sortFields(a);a.fields=E,a.size=s,a.fieldCount=a.fields.length}}sortFields(i){let a=i.fields.filter(p=>!p.shadowRef),E=i.fields.filter(p=>p.shadowRef),s=[],C=i.name;if(this.previousVersion.containers[C]){let p=this.sortPreviousContainerFields(i,a);s.push(...p)}else s.push(...a);s.forEach(p=>{this.updateShadowFieldInformation(i,p)});let d=s[s.length-1],u=d.byteSize+d.byteOffset;return E.forEach(p=>{p.byteOffset=i.shadows[p.shadowRef].byteOffset,s.push(p)}),{sortedFields:s,containerSize:u}}sortPreviousContainerFields(i,a){let E=i.name,s=this.previousVersion.containers[E],C=[],l=this.initialContainerByteOffset(i);for(let d of s.fields){if(d.shadowRef)continue;let u=a.findIndex(g=>d.id===g.name?.toLowerCase());if(u===-1){l=d.byteOffset+d.byteSize;continue}let p=a[u];if(d.type!==p.type&&d.byteSize!==p.byteSize){l=d.byteOffset+d.byteSize;continue}p.byteOffset=d.byteOffset,a.splice(u,1),C.push(p),l=this.initialContainerByteOffset(i)}if(l>this.initialContainerByteOffset(i)){let d=a.shift();C.push(...this.generatePlaceholderFieldIfNeeded(l,d)),this.updateShadowFieldInformation(i,d)}for(let d of a){if(d.shadowRef)d.byteOffset=i.shadows[d.shadowRef].byteOffset;else{this.updateShadowFieldInformation(i,d);let u=C[C.length-1];u.shadowRef&&(u=i.shadows[u.shadowRef]),d.byteOffset=u.byteOffset+u.byteSize}C.push(d)}return C}generatePlaceholderFieldIfNeeded(i,a){let E=[];if(a)a.byteOffset=i,E.push(a);else{let s={byteOffset:i,byteSize:0,id:"_shadow",library:null,name:"_shadow",type:"shadow",arrayRef:null,shadowRef:null,title:null,index:0};E.push(s)}return E}generateSetPointList(i){i.setPointList={...this.previousVersion.setPointList||{}};for(let a of Object.values(i.containers))for(let E of a.fields)E.chartSetPoint&&(Object.hasOwn(i.setPointList,E.name)||(i.setPointList[E.name]=this.getNextSetpointValue(i.setPointList)))}getNextSetpointValue(i){let a=[...Object.values(i),0];return Math.max(...a)+1}}e.PreCompiler=t})(sr||={});var tx=u0.TransferDirection,dx=u0.parseXMLValueWithRelation,ri=u0.parseXMLBitmask,ei=u0.parseXMLDefaultValue,ti=u0.fieldTypeDefinitions;function Be(t,e){let i=[];function a(C,l=!0){if(l){if(Array.isArray(C)){i.push.apply(i,C);return}i.push(""+C)}}function E(C,l){C!=="mergeofs"&&a(`${C}=${l}`)}a("// DDE STRUCTURE created by Microtronics Studio");let s="source=rm2mraw";for(let[C,l]of Object.entries(e.containers)){C.startsWith("histdata")&&l.transferDirection!==tx.deviceOnly&&(a("<split>"),a(s),a("target="+C),a("key=0"+C.substr(-1,1)),a("</split>")),a("<table>"),E("name",C),E("alias",l.title),E("title",l.title.replace("_"," "));let d={};[tx.none,tx.backendOnly,tx.deviceOnly,tx.down,tx.downPlus].includes(l.transferDirection)&&E("upload","0"),[tx.none,tx.backendOnly,tx.deviceOnly,tx.up,tx.upPlus].includes(l.transferDirection)&&E("download","0"),(O.isIotApp(t)||O.isLibrary(t))&&[tx.up,tx.upPlus].includes(l.transferDirection)&&E("edit","99");for(let u of l.fields){if(u.type==="shadow")continue;let p=ni(u),g=ti[p.type],w=dx("title",p,e)||p.name;!w.startsWith("%")&&p.library&&(w=`${p.library}: ${w}`);let b={title:w,alias:p.name,index:u.index,...d};b.byteofs=`${p.byteOffset}`;for(let[k,_]of Object.entries(g.xml))b[k]=_;Object.hasOwn(g,"xmlOut")&&g.xmlOut(b,p,e),b.units=dx("unit",p,e),b.chmode=dx("channelMode",p,e),b.ialarm_high=dx("chartAlarmHigh",p,e),b.ialarm_low=dx("chartAlarmLow",p,e),b.iwarn_high=dx("chartWarningHigh",p,e),b.iwarn_low=dx("chartWarningLow",p,e),b.hysterese=dx("chartHysteresis",p,e),b.itrigger=dx("chartTriggerThreshold",p,e),b.itriggerus=dx("chartTriggerRelation",p,e),b.setpoint=dx("chartSetPoint",p,e),b.bitmask=ri(p),p.hex&&(b.editmask="%HEX%"),p.readPermission&&(b.view=p.readPermission),p.writePermission&&(b.edit=p.writePermission),p.defaultValue!==void 0&&(b.default=ei(p)),p.utilsTransferInterval===!0&&(b.param0="%FFFF0005%transfer_interval"),a("<field>"),p.library&&a(`// declared by ${p.library} library`,!0);for(let[k,_]of Object.entries(b))_!==void 0&&E(k,`${_}`);a("</field>")}["alerts","applog"].includes(C)||(a("</table>"),a("// "+l.size+" bytes total size"))}return a("<split>"),a(s),a("target=alarm0"),a("key=20"),a("</split>"),a("<split>"),a(s),a("target=applog0"),a("key=28"),a("</split>"),i.join(`
|
|
1644
|
+
`)}function ni(t){let e=structuredClone(t),F=t.arrayRef?.index;if(F===void 0)return e;for(let[i,a]of Object.entries(e))e[i]=F0.patchValueWithArrayInfo(a,F);return e}var hx=J0(require("semver"));var px=J0(require("semver"));var oA={DP_registry_sz:1024,DP_config_sz:4e3,DP_histdata_sz:1024,DP_DISPLAY_CNT:0,DP_LED_CNT:0,DP_BUTTON_CNT:0,DP_GPIO_CNT:0,DP_IRQ_CNT:0,DP_DIGOUT_CNT:0,DP_UIN_CNT:0,DP_TEMP_CNT:0,DP_I2C_CNT:0,DP_SPI_CNT:0,DP_UART_CNT:0,DP_RS485_CNT:0,DP_RS232_CNT:0,DP_WIFI_CNT:0,DP_BLE_CNT:0,DP_LORA_CNT:0,DP_NBIOT_CNT:0},Ce={max_size:1e5,max_fields:1e3},mx={max_size:4e3,max_fields:1e3},jx={max_size:1024,max_fields:1e3},vA={configA:Ce,configB:Ce,configC:Ce,config0:mx,config1:mx,config2:mx,config3:mx,config4:mx,config5:mx,config6:mx,config7:mx,config8:mx,config9:mx,histdata0:jx,histdata1:jx,histdata2:jx,histdata3:jx,histdata4:jx,histdata5:jx,histdata6:jx,histdata7:jx,histdata8:jx,histdata9:jx,aloha:{...jx,warn_fields:10},alerts:{max_size:13,max_fields:0,exact_match:!0},applog:{max_size:125,max_fields:0,exact_match:!1}},or={m22x:{name:"M22x",dpid:"m22x",interface:{type:"usb",filter:{vendorId:9540},fileChunk:4096},usb_ids:["rapidM2M M2 HW1.0"],alt_ids:[],generation:"M2",prog_mem:256*1024,data_mem:64*1024,total_mem:256*1024,hw_reqd:!1,dde:vA,auto_inc:{...oA,DP_LED_CNT:1,DP_GPIO_CNT:6,DP_IRQ_CNT:2,DP_I2C_CNT:1,DP_SPI_CNT:1,DP_UART_CNT:2,DP_WIFI_CNT:1},usbcaps:{},dlo:{compileRestrictions:{"-z":0}}},m23x:{name:"M23x",dpid:"m23x",interface:{type:"usb",filter:{vendorId:1155},fileChunk:4096},usb_ids:["rapidM2M M23 HW2.0","rapidM2M M23 HW1.0"],alt_ids:[],generation:"M23",prog_mem:8*1024*1024,data_mem:8*1024*1024,total_mem:8*1024*1024,hw_reqd:!1,dde:vA,auto_inc:{...oA,DP_LED_CNT:1,DP_GPIO_CNT:6,DP_IRQ_CNT:2,DP_I2C_CNT:1,DP_SPI_CNT:1,DP_UART_CNT:1,DP_WIFI_CNT:1},usbcaps:{dbgItfMayHangFixed:"99v999"},dlo:{compileRestrictions:{}}},nrf91:{name:"NRF91",dpid:"nrf91",interface:{type:"usb",filter:{vendorId:9540},fileChunk:2048},usb_ids:["rapidM2M NRF91 HW1.0","ONE NRF91 HW1.0","rapidM2M Evolve HW1.0"],alt_ids:[],generation:"NRF91",prog_mem:256*1024,data_mem:64*1024,total_mem:256*1024,hw_reqd:!1,dde:vA,auto_inc:{...oA,DP_LED_CNT:1,DP_GPIO_CNT:32,DP_IRQ_CNT:6,DP_I2C_CNT:2,DP_SPI_CNT:2,DP_UART_CNT:2,DP_AIN_CNT:8,DP_PWM_CNT:3},usbcaps:{}},m2blegw:{name:"BLE Gateway",dpid:"m2blegw",interface:{type:"usb",filter:{vendorId:9540},fileChunk:4096},usb_ids:["rapidM2M BLEGW HW1.0"],alt_ids:[],generation:"M2",prog_mem:256*1024,data_mem:256*1024,total_mem:256*1024,hw_reqd:!1,dde:vA,auto_inc:{...oA,DP_DISPLAY_CNT:1,DP_DISPLAY_TYPE:"xc",DP_BUTTON_CNT:1,DP_BLE_CNT:1},usbcaps:{},dlo:{compileRestrictions:{"-z":0}}},m2easyv3:{name:"myDatalogEasy V3",dpid:"m2easyv3",interface:{type:"usb",filter:{vendorId:9540},fileChunk:4096},usb_ids:["rapidM2M Easy HW3.0"],alt_ids:["rapidM2M EasyIoT HW1.0","rapidM2M M220 HW1.0"],generation:"M2",prog_mem:256*1024,data_mem:256*1024,total_mem:256*1024,hw_reqd:!1,dde:vA,auto_inc:{...oA,DP_LED_CNT:1,DP_BUTTON_CNT:1,DP_DIGOUT_CNT:1,DP_UIN_CNT:4,DP_TEMP_CNT:1,DP_RS485_CNT:1,DP_RS232_CNT:1,DP_BLE_CNT:1,DP_LORA_CNT:1},usbcaps:{},dlo:{compileRestrictions:{"-z":0}}},m2easyiot:{name:"myDatalogEasy IoT",dpid:"m2easyiot",interface:{type:"usb",filter:{vendorId:9540},fileChunk:4096},usb_ids:["rapidM2M EasyIoT HW1.0"],alt_ids:[],generation:"M2",prog_mem:256*1024,data_mem:256*1024,total_mem:256*1024,hw_reqd:!1,dde:vA,auto_inc:{...oA,DP_LED_CNT:1,DP_BUTTON_CNT:1,DP_DIGOUT_CNT:1,DP_UIN_CNT:4,DP_TEMP_CNT:1,DP_RS485_CNT:1,DP_RS232_CNT:1,DP_BLE_CNT:1,DP_LORA_CNT:1},usbcaps:{},dlo:{compileRestrictions:{"-z":0}}}};var le=require("vscode-uri");var K0=u0.ContainerType,c0=u0.TransferDirection,IA=u0.regexRelation,ii=u0.CONFIG_CONTAINER,De=u0.CONTAINER_DEF_DLO_CID_BASE,SA=u0.CONTAINER_DEFS,Er=u0.fieldTypeDefinitions,Ze=F0.isNumeric;function ox(t){let e=Er[t.type];return e.pwn.rwp||(e.pwn.rwp="%n"),e.pwn.htype||(e.pwn.htype=e.pwn.rwfunc),e.pwn}var vr="Microtronics/dlo-core";function ce(t){return O.isLibrary(t)&&t.name==="dlo-core"?t.version:t.libraryDependencies&&Object.hasOwn(t.libraryDependencies,vr)?y0.rangeToVersion(t.libraryDependencies[vr]):t.libraryDevDependencies&&Object.hasOwn(t.libraryDevDependencies,vr)?y0.rangeToVersion(t.libraryDevDependencies[vr]):null}function Fi(t){let e=ce(t);return e===null||px.gte(e,"0.3.0")?px.valid(t.version)?t.version:px.coerce(`${t.version}`):px.coerce(t.version)?.major}function fe(t){let e=ce(t);if(e===null)return!1;let F=px.coerce(e);return px.gte(F,"1.1.0")}function ai(t){let e=ce(t);if(e===null)return!1;let F=px.coerce(e);return px.gte(F,"1.15.0")}var si=["u8","u16","u32","s8","s16","s32","s64","f16","f32","f64"];function oi(t){if(t.type==="ustring")return!1;if(t.defaultValue!=="NaN")return!0;let e=ox(t);return!e||e==="skip"?!1:si.includes(`${e.rwfunc}`)}function vi(t,e,F){t("PROJECT META");let{dpid:i,registry:a}=F;if(!i)throw new Error('Setting "dpid" is required to generate dlo files');let{auto_inc:E}=or[i];e("APM_DPID",`${i}`),e(`APM_DPID_${i}`,"1"),e(`APM_DPID_${i.toUpperCase()}`,"1"),e("APM_ID",a?.id||"");let s=Fi(F);e("APM_VERSION",`${s}`),e("APM_NAME",`${F.name}`),e("APM_AUTHOR",`${F.publisher}`);for(let[C,l]of Object.entries(E))Ze(l)?e(C,`${l}`):e(C,`"${l}"`)}function Ei(t,e,F,i){let a=i.flat,{definesWithSource:E}=i;e("GLOBAL DEFINES");for(let[s,C]of Object.entries(a)){let l=E[s]?.comment;if(l){let u=l.split(`
|
|
1645
|
+
`);if(u.length===1)t(`/** ${u[0]} */`);else{t("/**");for(let p of u)t(` * ${p}`);t(" */")}}let d=Object.hasOwn(a,C);F(s,`${C}`,d)}}function Bi(t,e,F,i){let a=parseInt(t.substring(6)),E=1<<a;F[a]=e.size,i.cx_isupm|=[c0.both,c0.none,c0.deviceOnly,c0.up,c0.upPlus].includes(e.transferDirection)?E:0,i.cx_isvolatilem|=e.volatile?E:0,i.cx_isdnm|=[c0.both,c0.none,c0.deviceOnly,c0.down,c0.downPlus].includes(e.transferDirection)?E:0,i.cx_isvlm|=[c0.bothPlus,c0.upPlus,c0.downPlus].includes(e.transferDirection)?E:0}function Ci(t,e,F,i){let a=parseInt(t.substring(8));F[a]=e.size,i.hx_isvlm|=[c0.upPlus].includes(e.transferDirection)?1<<a:0}function fi(t){return[c0.upPlus].includes(t.transferDirection)}function Di(t,e,F){let i=0,a=Array(10).fill(0),E={cx_isupm:0,cx_isvolatilem:0,cx_isdnm:0,cx_isvlm:0},s=0,C=Array(10).fill(0),l={hx_isvlm:0},d;for(let[p,g]of Object.entries(F.containers))g.containerType===K0.cx&&g.transferDirection!==c0.backendOnly?(Bi(p,g,a,E),i=Math.max(i,g.size)):g.containerType===K0.hx?(Ci(p,g,C,l),i=Math.max(i,g.size)):g.containerType===K0.aloha&&(d=fi(g),i=Math.max(i,g.size));e("DDE CORE"),t(`#define _DDE_BUF_BYTES (${i}+10)`),t(""),t("// c0 c1 c2 c3 c4 c5 c6 c7 c8 c9"),t(`stock _DDE_CONFIGS_size[] =[ ${a.join(", ")}];`),t(`#define _DDE_CONFIGS_upm 0b${E.cx_isupm.toString(2)} // ..is tolerant when reading back container with under-length`),t(`#define _DDE_CONFIGS_volatilem 0b${E.cx_isvolatilem.toString(2)} // inits container as volatile`),t(`#define _DDE_CONFIGS_downm 0b${E.cx_isdnm.toString(2)} // reading the container expects strict length`),t(`#define _DDE_CONFIGS_varlenm 0b${E.cx_isvlm.toString(2)} // allow partial write (dde_wxxx)`),t(`#define _DDE_CONFIGS_rdef 0b${s.toString(2)} // ..apply defaults reading a container with under-length`),t(""),t("// h0 h1 h2 h3 h4 h5 h6 h7 h8 h9"),t(`stock _DDE_HISTS_size[] =[ ${C.join(", ")}];`),t(`#define _DDE_HISTS_varlenm 0b${l.hx_isvlm.toString(2)} // allow partial write (dde_wxxx)`);let u=[...C];Object.hasOwn(F,"applog")&&u.push(125),Object.hasOwn(F,"alerts")&&u.push(13),t(`#define _DDE_HISTS_maxsize ${Math.max(...u)}`),t(""),d!==void 0&&(t(`#define _DDE_ALOHA_varlen ${d?1:0}`),t(""))}function li(t,e,F){for(let[i,a]of Object.entries(F.containers)){if(a.containerType==="applog")continue;e(`${a.title.toUpperCase()} - ${a.transferDirection} via #${i}`);let E=De(a.containerType,a.transferDirection);if(!E){t("// ... container not available in DLO");continue}let s=`DDE_${a.containerType===K0.aloha?K0.aloha:a.title}`,C=SA[i];t(`// ${s}_id - container identifier required for ${s}_read/_write operations`),t(`#define ${s}_id (${E}+${C.cnum||0})`),t(`// ${s}_sz - [byte] container total size`),t(`#define ${s}_sz ${a.size}`),C.cnum!==void 0&&(t(`// ${s}_idx - 0+ container index number`),t(`#define ${s}_idx ${C.cnum}`))}}function Qe(t,e,F){let i=[],a=i.push.bind(i);function E(C){a(`
|
|
1646
1646
|
// === ${C} ===
|
|
1647
|
-
`)}function
|
|
1648
|
-
`)}var RA=class{constructor(e,F,i){this.manifest=e;this.ddeMap=F;this.context=i;this.sourceType="pawnSource"}manifest;ddeMap;context;globalVariables=[];pawnGlobalSource=[];pawnHelperSource=[];timeSeriesSource=[];readWriteSource=[];definesSource=[];defaultDefinesSource=[];knownDefines=[];pawnIndent=0;sourceType;pawn(e,F){F&&e==="<"&&this.pawnIndent--,{pawnSource:this.pawnGlobalSource,globalVariables:this.globalVariables,timeseries:this.timeSeriesSource,readWrite:this.readWriteSource,defines:this.definesSource,defaultDefines:this.defaultDefinesSource}[this.sourceType].push(" ".repeat(this.pawnIndent)+(F||e)),F&&e===">"&&this.pawnIndent++}generate(){for(let[e,F]of Object.entries(this.ddeMap.containers))this.context&&!F.libraries.includes(this.context)||!De(F.containerType,F.transferDirection)||!F.fields||!this.context&&!u0.hasContainerAppFields(F)||SA[e].ctype!==J0.cx&&this.context||(this.generateGlobalVarsForContainer(F),this.generateReadWriteFunctions(F));return this.mergeSourceTypes(),{globals:this.pawnGlobalSource,helper:this.pawnHelperSource}}createGlobalVar(e,F){this.sourceType="globalVariables";let i=F?this.variableNameForPawnDefinition(e,F):e;if(F){let s=this.generateCommentForField(F);s&&(Array.isArray(s)?(this.pawn("/**"),s.forEach(E=>{this.pawn(` * ${E}`)}),this.pawn(" */")):this.pawn(`// ${s}`))}this.pawn(`stock ${i}${F?this.initialiserForGlobalVar(F):""};`)}initialiserForGlobalVar(e){if(e.defaultDloDefine===void 0||e.arrayRef)return"";let F=ox(e);return!F||F==="skip"||`${F.rwp||""}`.includes("%l")?"":` = ${e.defaultDloDefine}`}insertSection(e){this.pawn(""),this.pawn("// ============================================================================="),this.pawn(`// ${e}`),this.pawn("// ============================================================================="),this.pawn("")}mergeSourceTypes(){this.sourceType="pawnSource",this.definesSource.length&&(this.insertSection("Defines"),this.pawnGlobalSource.push(...this.definesSource)),this.defaultDefinesSource.length&&(this.insertSection("Field defaults"),this.pawnGlobalSource.push(...this.defaultDefinesSource)),this.globalVariables.length&&(this.insertSection("Global Variables"),this.pawnGlobalSource.push(...this.globalVariables)),this.readWriteSource.length&&(this.insertSection("Internal read/write calls"),this.pawnHelperSource.push(...this.readWriteSource)),this.pawn("")}generateGlobalVarsForContainer(e){this.sourceType="globalVariables",this.pawn(""),this.pawn(`// Container '${e.title.replace("_"," ")}'`),this.pawn("");let F=`DDE_${e.title}`;this.generateArrayDefines(F,e);for(let i of e.fields){if(i.type==="shadow"||i.shadowRef||i.library!==this.context)continue;if(i.arrayRef!==null){let E=e.arrays[i.arrayRef.name],a=`${F}_${i.arrayRef.name}`;E.fields?.length&&(a+=`_${i.name.split(".")[1]}`),this.createDefaultDefineForField(a,i);continue}let s=this.generateFieldVariableName(F,i);this.createDefaultDefineForField(s,i),this.createGlobalVar(`${s}`,i)}}generateArrayDefines(e,F){for(let i of Object.values(F.arrays)){if(this.context!==i.library)continue;let s=`${e}_${i.name}_dim`;if(this.sourceType="defines",this.pawn(`#define ${s} ${i.length}`),i.fields){for(let C of i.fields)Er[C.type]?.isBlob&&C.byteSize&&this.addDefine(`${e}_${i.name}_${C.name}_dim`,C.byteSize);let E={...F};E.fields=[],i.fields.forEach(C=>{E.fields.push({arrayRef:null,shadowRef:null,byteOffset:0,byteSize:C.byteSize,id:C.name,library:i.library,name:C.name,type:C.type,title:null,index:0})});let a=`${e}_${i.name}_def`;this.generateTypeDefinitions(E,a),this.createGlobalVar(`${e}_${i.name}[${s}][${a}]`)}else this.createGlobalVar(`${e}_${i.name}[${s}]`)}}generateCommentForField(e){let F=[`@type ${e.type}`];if(e.description&&F.unshift(e.description),e.defaultValue!==void 0){let{value:i,reason:s}=this.parseFieldDefault(e);F.push(`@default ${i} ${s||""}`)}return F}generateFieldVariableName(e,F){let i=`${e}_${F.name}`,s=Object.hasOwn(Er,F.type)&&Er[F.type].isBlob,E=F.byteSize;return E&&s&&(this.sourceType="defines",this.pawn(`#define ${e}_${F.name}_dim ${E}`),this.pawn(`#define ${e}_${F.name}_iter() for(new i=0;i<${E};i++)`)),this.sourceType="globalVariables",i}generateTypeDefinitions(e,F){this.sourceType="defines";let i=e.fields;if(!i)return;let s=[];this.pawn(">",`#define ${F} [`);for(let E of i){let a=this.generateFieldTypeDefinition(E,e,s,F);a!==null&&this.pawn(a)}this.pawn("<","]")}handleArrayFieldDedup(e,F,i,s){let E=e.arrayRef;if(E){let l=F.arrays[E.name];if(!i.includes(E.name)&&!l.fields)i.push(E.name);else return null}let a=e.arrayRef?e.arrayRef.name:e.name,C=e.arrayRef?`[${s}_${a}_dim]`:"";return{fieldName:a,fld_dim:C}}generateFieldTypeDefinition(e,F,i,s){if(e.type==="shadow"||e.shadowRef||e.library!==this.context)return null;let E=this.handleArrayFieldDedup(e,F,i,s);if(E===null)return null;let{fieldName:a,fld_dim:C}=E,l="";if(e.type==="struct")l="// ."+a+C;else{let d=ox(e);if(!d)return null;d==="skip"?l=`// skipped - .${a}${C}`:l+=d.rwp.replace("%n",`.${a}${C}`).replace("%l",e.byteSize)}return l+=",",e.library&&(l+=` // declared by ${e.library} library`),l}variableNameForPawnDefinition(e,F){let i=ox(F);return i&&i!=="skip"?i.rwp.replace("%n",`${e}`).replace("%l",F.byteSize):e}createDefaultDefineForField(e,F){if(this.sourceType="defaultDefines",F.scale!==void 0&&this.addDefine(`${e}_scale`,F.scale),F.offset!==void 0&&this.addDefine(`${e}_offset`,F.offset),F.defaultValue!==void 0&&ai(F)){let{value:i,reason:s}=this.parseFieldDefault(F),E=`${e}_default`;this.addDefine(E,i,s)&&(F.defaultDloDefine=E)}}addDefine(e,F,i){return IA.exec(`${F}`)?!1:(this.knownDefines.includes(e)||(i&&this.pawn(`// ${i}`),this.pawn(`#define ${e} ${F}`),this.knownDefines.push(e)),!0)}generateReadWriteFunctions(e){let F=e.name,i=SA[F],s=`DDE_${e.containerType===J0.aloha?J0.aloha:e.title}`;[d0.both,d0.bothPlus,d0.none,d0.deviceOnly,d0.up,d0.upPlus].includes(e.transferDirection)&&this.generateWriteMethod(s,e),i.ctype===J0.cx&&this.generateReadMethod(s,e)}generateWriteMethod(e,F){this.sourceType="readWrite";let i=`DDE_${F.title}_id`,s=[J0.hx,J0.aloha].includes(F.containerType),E=F.containerType===J0.hx,a=F.containerType===J0.aloha,C=`_${e}_write`,l=fe(this.manifest)?", flags":"",d=E?`stamp${l}`:"",u=fe(this.manifest)?"const stamp=0, const flags=0":"const stamp=0";this.pawn(">",`stock ${C}(${E?u:""}) {`),s&&this.pawn(`dde_wbegin(DDE_${a?J0.aloha:F.title}_id);`),this.generateRWFunctionBody(e,F,"dde_w"),s&&this.pawn(`return dde_wend(${d});`),this.pawn("<","}"),this.pawn(""),this.sourceType="globalVariables";let p=`${e}_transfer`,k=`${e}_persist`,w=this.functionArgumentsForDdeWrite(E,s);if(this.pawn(">",`${this.context?"stock ":""}${p}(${w}) {`),s)this.pawn(`${C}(${d});`);else{let b=F.name.slice(-1);this.pawn(`dde_flush(${b}, immediate);`)}this.pawn("<","}"),this.pawn(""),F.volatile&&(this.pawn(">",`stock ${k}() {`),this.pawn(`return rM2M_CfgFlush(${i});`),this.pawn("<","}"))}functionArgumentsForDdeWrite(e,F){let i=fe(this.manifest)?", const flags=0":"";return e?`const stamp=0${i}`:F?"":"bool:immediate=false"}generateReadMethod(e,F){this.sourceType="readWrite";let i=`_${e}_read`;this.pawn(">",`stock ${i}() {`),this.generateRWFunctionBody(e,F,"dde_r"),this.pawn("<","}"),this.pawn("")}isFieldSkipped(e){return e.type==="shadow"||!!e.shadowRef||e.library!==this.context}emitFieldRW(e,F,i,s,E,a,C){if(!F.arrayRef)return this.emitSingleField(e,F,i,s,C);let l=F.arrayRef.name,d=E.get(l);return d?a.has(l)?C:(a.add(l),this.emitArrayLoop(e,d,i)):this.emitSingleField(e,F,i,s,C)}generateRWFunctionBody(e,F,i){let s=F.fields,E=this.analyzeArrayGroups(s,e,F),a=new Set,C=-1;for(let l of s){if(this.isFieldSkipped(l))continue;let d=ox(l);!d||d==="skip"||(C=this.emitFieldRW(e,l,i,d,E,a,C))}}defaultArgumentFor(e,F){return e.defaultDloDefine===void 0?"":F==="dde_r"||Fi(this.manifest)?`, ${e.defaultDloDefine}`:""}emitSingleField(e,F,i,s,E){F.byteOffset!==E&&this.pawn(`_dde_idx = ${F.byteOffset};`);let a="";a+=i,a+=s.rwfunc;let C=`${e}_${F.name}`;return a+=`(${C}`,s.rwlen&&(a+=`, ${F.byteSize}`),a+=this.defaultArgumentFor(F,i),this.pawn(a+");"),F.byteOffset+F.byteSize}emitArrayLoop(e,F,i){this.pawn(">",`for (new _i = 0; _i < ${F.dimDefine}; _i++) {`);let s=-1;for(let E of F.templateFields){let a=ox(E);if(!a||a==="skip")continue;let C=E.byteOffset;C!==s&&this.pawn(`_dde_idx = ${C} + (_i * ${F.stride});`),s=C+E.byteSize;let l=`${e}_${E.name.replace(/\[\d+\]/,"[_i]")}`,d=`${i}${a.rwfunc}(${l}`;a.rwlen&&(d+=`, ${E.byteSize}`),d+=this.defaultArgumentFor(E,i),this.pawn(d+");")}return this.pawn("<","}"),-1}analyzeArrayGroups(e,F,i){let s=this.collectArrayFieldsByIndex(e);return this.buildArrayGroups(s,F,i)}collectArrayFieldsByIndex(e){let F=new Map;for(let i of e){if(this.isFieldSkipped(i)||!i.arrayRef)continue;let s=ox(i);if(!s||s==="skip")continue;let{name:E,index:a}=i.arrayRef;F.has(E)||F.set(E,new Map);let C=F.get(E);C.has(a)||C.set(a,[]),C.get(a).push(i)}return F}validateArrayStride(e,F){let i=F[0].byteOffset-e[0].byteOffset;if(i<=0)return null;for(let s=0;s<e.length;s++)if(F[s].byteOffset-e[s].byteOffset!==i)return null;return i}buildArrayGroups(e,F,i){let s=new Map;for(let[E,a]of e){let C=i.arrays[E];if(!C||C.length<2)continue;let l=a.get(0),d=a.get(1);if(!l||!d||l.length===0||d.length===0||l.length!==d.length)continue;let u=this.validateArrayStride(l,d);u!==null&&s.set(E,{arrayName:E,dimDefine:`${F}_${E}_dim`,stride:u,templateFields:l})}return s}parseFieldDefault(e){let F=ox(e),i=e.defaultValue;function s(a,C){return{value:a,reason:C}}switch(e.type){case"astring":case"nstring":case"cstring":return s(`"${i}"`);case"wstring":return s(`''${i}''`);case"ustring":return s(`/* default not supported: ${i} */`);case"binary":{let C=`{ 0x${(i.substring(2).replace(/\s+/g,"").match(/.{1,2}/g)||[]).join(", 0x")} }`;return s(C)}}if(i==="NaN"){let a=F.rwfunc;return s(`${a}_NaN`.toUpperCase())}let E=this.parseFieldScaleOffset(e);return E?s(E.calculated,E.reason):(i!==void 0&&!IA.exec(`${i}`)&&e.type.startsWith("float")&&i%1===0&&(i=i.toFixed(e.decimalPlaces||1)),s(`${i}`))}parseFieldScaleOffset(e){let F=e.defaultValue;if(!(!!IA.exec(`${e.offset}`)||!!IA.exec(`${e.scale}`)||!!IA.exec(`${e.defaultValue}`))&&(e.offset!==void 0||e.scale!==void 0)){let s=e.offset!==void 0?Number(e.offset):0,E=e.scale!==void 0?Number(e.scale):1;if(E===0)return null;let a=(Number(F)-s)/E,C=`(defaultValue - offset) / scale -> (${F} - ${s}) / ${E}`;return e.type.startsWith("float")?a%1===0&&(a=a.toFixed(1)):(a=Math.round(a),C=`Rounded value of: ${C}`),{calculated:a,reason:C}}return null}};function li(t){return`${`onUplinkApply_${t}()`};`}function xt(t,e,F){e.libraries.forEach(i=>{let s=i0.generateHashForLibraryName(i);t(` #ifdef _${s}${F}_${e.title}`),t(` _${s}${F}_${e.title}(); // ${i}`),t(" #endif")})}function ci(t,e){t("stock _onUplinkEvent(ev, param) {"),e.forEach(F=>{let s=`_${i0.generateHashForLibraryName(F)}UplinkEvent`;t(` #ifdef ${s}`),t(` ${s}(ev, param);`),t(" #endif")}),t(" onUplinkEvent(ev, param);"),t("}")}function di(t){let e=[],F=[];for(let[i,s]of Object.entries(t.containers))SA[i].ctype===J0.cx&&([d0.up,d0.upPlus,d0.deviceOnly].includes(s.transferDirection)&&F.push(s),[d0.bothPlus,d0.both,d0.downPlus,d0.down].includes(s.transferDirection)&&e.push(s));return{containerApply:e,containerRestore:F}}function ji(t,e){e.length&&t("");for(let F of e)F.knownNames.forEach(i=>{t(`forward onUplinkRestore_${i}();`)}),t(""),t(`stock restoreUplink${F.name}() {`),t(` _DDE_${F.name}_read();`),xt(t,F,"Restore"),u0.hasContainerAppFields(F)&&t(` onUplinkRestore_${F.title}();`),t("}");if(t("#pragma warning push"),t("stock _onUplinkRestore(cfgId) {"),e.length){t(" switch(cfgId) {");for(let F of e)t(` case DDE_${F.title}_id: restoreUplink${F.name}(); // ${F.name}`);t(" }")}else t(" #pragma warning disable 203"),t(" // no containers to restore");t("}"),t("#pragma warning pop")}function pi(t,e){e.length&&t("");for(let F of e)F.knownNames.forEach(i=>{t(`forward onUplinkApply_${i}();`)}),t(""),t(`stock applyUplink${F.name}() {`),t(` _DDE_${F.name}_read();`),xt(t,F,"Apply"),u0.hasContainerAppFields(F)&&t(` ${li(F.title)}`),t(" return(OK);"),t("}");if(t("#pragma warning push"),t("stock _onUplinkApply(cfgId) {"),e.length){t(" switch(cfgId) {");for(let F of e)t(` case DDE_${F.title}_id: return applyUplink${F.name}(); // ${F.name}`);t(" }"),t(" return ERROR;")}else t(" #pragma warning disable 203"),t(" // no containers to apply"),t(" return OK;");t("}"),t("#pragma warning pop")}function At(t,e){let F=[],i=F.push.bind(F);ci(i,e);let{containerApply:s,containerRestore:E}=di(t);return ji(i,E),pi(i,s),F.join(`
|
|
1649
|
-
`)}var
|
|
1650
|
-
`)}function Ye(t,e,F){e.libraries.forEach(i=>{let
|
|
1651
|
-
`)}async function bi(t,e,F){let i=[];for(let s of F){let E=X.filePaths.studio.auto.dlo.autoDdeInc.replace("X",s.name);await e.stat(le.Utils.joinPath(t,E))&&i.push(`#include "${X.fileNames.autoDdeInc.replace("X",s.name)}"`)}return i}async function MA(t,e,F,i){let s=le.Utils.joinPath(t,X.filePaths.studio.auto.dlo.path,i);await e.stat(s)&&F.push(`#include "${i}"`)}var nt=z0(require("semver")),it=require("yaml");var vx=u0.ContainerType,Cr=u0.TransferDirection,mi=u0.fieldTypeDefinitions,EA={$ref:"#/components/parameters/contextId"},hi={$ref:"#/components/parameters/addonId"},gi={$ref:"#/components/parameters/appId"},tt={$ref:"#/components/schemas/histdataResponse"},ki={$ref:"#/components/schemas/histdataRequest"},fr={$ref:"#/components/schemas/rapidM2MStamp"},yi={$ref:"#/components/schemas/timeseriesRequestBase"},Br="rapidM2M Stamp",px={description:"Successful operation"},Ft={parameters:{contextId:{name:"siteUid",in:"path",description:"The site uid",schema:{type:"string"},required:!0},appId:{name:"appUid",in:"path",description:"The app uid",schema:{type:"string"},required:!0}},schemas:{rapidM2MStamp:{type:"string",format:"YYYYMMDDhhmmssSSS",description:'Special format of an UTC timestamp. Important: The trailing 0 are truncated. eg.: "2024-02-10" -> "2024021"'}}},st={...structuredClone(Ft)};Object.assign(st.schemas,{histdataResponse:{type:"array",description:"Array of histdata records. Array starts with the youngest record",items:{type:"array",description:'First item is always the rapidM2M timestamp of the record. All following values are in the order of the "select" array.',items:{anyOf:[fr,{type:"string"},{type:"number"}]}}},histdataRequest:{type:"object",additionalProperties:!1,required:["from","until"],properties:{from:{type:"string",format:Br,description:"items to include must be older or equal, UTC w/o time saving."},until:{type:"string",format:Br,description:"items to include must be younger, UTC w/o time saving. Reply set is limited like that: from <= item.stamp < until."},count:{type:"integer",description:"limits the number of returned records, negative values will count the records from the end of the result set."},offset:{type:"integer",description:"skips the given number of records in the result set."}}},timeseriesRequestBase:{type:"object",additionalProperties:!1,properties:{count:{type:"integer",description:"limits the number of returned records, negative values will count the records from the end of the result set.",minimum:-1e3,maximum:1e3,default:1e3},from:{type:"string",format:Br,description:"items to include must be older or equal, UTC w/o time saving"},until:{type:"string",format:Br,description:"items to include must be younger, UTC w/o time saving. Reply set is limited like that: from <= item.stamp < until"},offset:{type:"integer",description:"Skips the given number of records in the result set",minimum:0,default:0}}}});var OA={content:{"application/json":{schema:{type:"object",additionalProperties:!1,properties:{err:{type:"string",description:"Information what went wrong"}}}}}},Hx={401:{description:"Permission denied",...OA},403:{description:"Forbidden",...OA},404:{description:"Resource not found",...OA},500:{description:"Internal error",...OA}};function de(t,e,F=null){let i=nt.coerce(e.version)?.version,s={openapi:"3.0.3",info:{description:e.description,title:e.name,version:i||""},tags:[],paths:{},components:{parameters:{},schemas:{}}};F?Object.assign(s.components,structuredClone(Ft)):Object.assign(s.components,structuredClone(st));let E=R.isAddon(e),a=R.isAnalytics(e);E&&(s.components.parameters.addonId={name:"addonUid",in:"path",description:"The addon uid",schema:{type:"string"},required:!0});for(let C of Object.values(t.containers))F&&(!C.libraries.includes(F)||C.containerType===vx.hx)||!F&&!u0.hasContainerAppFields(C)||C.containerType===vx.aloha||(wi(s,C),$i(s,C,F),Ni(s,C,E,a),!E&&!a&&(_i(s,C,F),Pi(s,C)));return s.tags.push({name:"app-center",description:"App Center related routes"}),(0,it.stringify)(s)}function wi(t,e){t.tags.push({name:nx(e.title),description:`Transfer direction ${e.transferDirection}`})}function nx(t){return t.split("_").join(" ")}function _i(t,e,F){let i=`${e.name}`,s={type:"object",description:`Container: "${e.title}"`,additionalProperties:!1,properties:{}},E=[];e.containerType===vx.hx&&(i+="Select",E.push("select"),s.properties.select={type:"array",items:{type:"string",enum:[]}});for(let a of e.fields)a.library!==F||a.type==="shadow"||(e.containerType===vx.hx?s.properties.select.items.enum.push(a.id):(s.properties[a.id]=at(a),!a.readPermission&&!a.writePermission&&E.push(a.id)));s.required=E.length?E:void 0,t.components.schemas[i]=s}function $i(t,e,F=null){let i=`${e.title}`,s={type:"object",description:`Container: "${e.title}" with device transfer direction "${e.transferDirection}"`,additionalProperties:!1,properties:{}},E=[],a=e.containerType===vx.hx;for(let l of e.fields)l.library!==F||l.type==="shadow"||(s.properties[l.name]=at(l),!l.readPermission&&!l.writePermission&&E.push(l.name));s.required=E.length?E:void 0,t.components.schemas[i]=s;let C=s.properties;if(a){s.required=s.required?.map(d=>d.toLowerCase());let l={};for(let[d,u]of Object.entries(s.properties))l[d.toLowerCase()]=u;s.properties=l}if(a){let l={type:"object",description:`Request schema of "${e.title}"`,additionalProperties:!1,properties:{select:{type:"array",description:"Optional selection of specific fields of the given container",items:{type:"string",enum:Object.keys(C)}}}};t.components.schemas[`${i}RequestSingle`]=l,t.components.schemas[`${i}Request`]={allOf:[yi,l]},s.properties.stamp=fr,E.push("stamp")}}function at(t){let F={...mi[t.type].openApi},i=qi(t);return F.default=i,F.example=i,F.description=t.description,F}function qi(t){return t.defaultValue===void 0?t.defaultValue:t.type==="binary"?`${t.defaultValue.substring(2)}`:t.defaultValue}function Pi(t,e){let F=`/api/1/sites/{siteUid}/${e.name}`,i={get:void 0,put:void 0};if([vx.cx,vx.cb].includes(e.containerType))i.get={deprecated:!0,tags:[nx(e.title)],summary:`Retrieve the data of the "${nx(e.title)}" container`,parameters:[EA],responses:{200:{...px,content:{"application/json":{schema:{allOf:[{type:"object",required:["stamp"],properties:{stamp:fr}},{$ref:`#/components/schemas/${e.name}`}]}}}},...Hx}},[Cr.down,Cr.backendOnly].includes(e.transferDirection)&&(i.put={deprecated:!0,tags:[nx(e.title)],summary:`Modify the data of the "${nx(e.title)}" container`,parameters:[EA],requestBody:{content:{"application/json":{schema:{$ref:`#/components/schemas/${e.name}`}}}},responses:{201:{...px},204:{...px},...Hx}});else if(e.containerType===vx.hx){let s=`${F}`;F+="/youngest",i.get={deprecated:!0,tags:[nx(e.title)],summary:`Retrieve the youngest data of the "${nx(e.title)}" container`,parameters:[EA,{name:"json",in:"query",required:!0,schema:{$ref:`#/components/schemas/${e.name}Select`}}],responses:{200:{...px,content:{"application/json":{schema:tt}}},...Hx}},t.paths[s]={get:{deprecated:!0,tags:[nx(e.title)],summary:`Get the historical data of the "${nx(e.title)}" container.`,parameters:[EA,{name:"json",in:"query",required:!0,schema:{allOf:[{$ref:`#/components/schemas/${e.name}Select`},ki]}}],responses:{200:{...px,content:{"application/json":{schema:tt}}},...Hx}}}}t.paths[F]=i}function Ni(t,e,F=!1,i=!1){let E=e.containerType===vx.hx?"timeseries":"containers",a=[],C=nx(e.title);i||a.push({path:`/api/1/sites/{siteUid}/${E}/${e.title}`,params:[EA],tags:[C]}),F&&(a=[{path:`/api/1/sites/{siteUid}/addons/{addonUid}/${E}/${e.title}`,params:[EA,hi],tags:[C]}]);let l={path:`/api/1/app-center/apps/{appUid}/${E}/${e.title}`,params:[gi],tags:["app-center"]};i&&l.tags.push(C),a.push(l);let d={get:void 0,put:void 0,post:void 0},u={tags:[],summary:`Retrieve the data of the "${nx(e.title)}" container`,parameters:[],responses:{200:{...px,content:{"application/json":{schema:{allOf:[{type:"object",required:["stamp"],properties:{stamp:fr}},{$ref:`#/components/schemas/${e.title}`}]}}}},...Hx}};if([vx.cx,vx.cb].includes(e.containerType)&&(d.get=u,[Cr.down,Cr.backendOnly].includes(e.transferDirection)&&(d.put={tags:[],summary:`Modify the data of the "${nx(e.title)}" container`,parameters:[],requestBody:{content:{"application/json":{schema:{$ref:`#/components/schemas/${e.title}`}}}},responses:{201:{...px},204:{...px},...Hx}}),a.forEach(p=>{let k=structuredClone(d);Object.values(k).forEach(w=>{w?.parameters?.unshift(...p.params),w?.tags?.unshift(...p.tags)}),t.paths[p.path]=k})),e.containerType===vx.hx){d.get={tags:[],summary:`Get the historical data of "${e.title}"`,parameters:[{name:"json",in:"query",required:!1,schema:{$ref:`#/components/schemas/${e.title}Request`}}],responses:{200:{...px,content:{"application/json":{schema:{type:"array",items:{$ref:`#/components/schemas/${e.title}`}}}}},...Hx}},F&&(d.post={tags:[],summary:`Insert data into the "${nx(e.title)}" container`,parameters:[{name:"allow_future_date",in:"query",description:"Allow inserting records with a stamp value in the future",schema:{type:"boolean"}}],requestBody:{content:{"application/json":{schema:{$ref:`#/components/schemas/${e.title}`}}}},responses:{201:{...px},400:{description:"Bad request",...OA},...Hx}});let p=a[0],k=structuredClone(d);Object.values(k).forEach(M=>{M?.parameters?.unshift(...p.params),M?.tags?.unshift(...p.tags)}),t.paths[p.path]=k;let w={...px,content:{"application/json":{schema:{$ref:`#/components/schemas/${e.title}`}}}},b=`${p.path}/youngest`,y={get:structuredClone(k.get)};y.get.summary=`Get the youngest record of "${e.title}" container`,y.get.responses[200]=w;let $=F?2:1;y.get.parameters[$].schema.$ref=`#/components/schemas/${e.title}RequestSingle`,t.paths[b]=y;let P=`${p.path}/oldest`,N={get:structuredClone(k.get)};N.get.summary=`Get the oldest record of "${e.title}" container`,N.get.responses[200]=w,N.get.parameters[$].schema.$ref=`#/components/schemas/${e.title}RequestSingle`,t.paths[P]=N}}var vt=u0.TransferDirection,Dr=" new szTemp{64};",lr=" return strcat(aData, szTemp, sizeof(szTemp));";function Et(t){if(!t.printf&&t.printfFormat==="memtostr")return"bin";if(!t.printf)return null;let e=t.rwp||"%n",F=e.includes("["),s=e.includes("{")||F;if(t.printfFormat==="stampToISOString")return s?null:"stamp";switch(t.printf){case"%d":return s?null:"d";case"%f":return s?null:"f";case"%s":return F?null:"s";default:return null}}function je(t){if(t.type==="shadow"||t.shadowRef)return null;let e=ox(t);return!e||e==="skip"?null:Et(e)}function Bt(t){return[u0.ContainerType.hx,u0.ContainerType.cx].includes(t.containerType)&&t.transferDirection!==vt.backendOnly}function Li(t){if(t.type==="shadow"||t.shadowRef)return!1;let e=ox(t);return!!e&&e!=="skip"}function Gi(t,e,F){let i=t.name.indexOf("]"),s=i>=0?t.name.substring(i+1):"",E=`${t.arrayRef.name}|${s}|${e}`;F.has(E)||F.set(E,{fields:[],formatType:e}),F.get(E).fields.push(t)}function Ti(t){let e=[],F=new Map,i=new Set,s=!1;for(let E of t){if(!Li(E))continue;let a=je(E);E.arrayRef&&a?Gi(E,a,F):(e.push(E),a?i.add(a):s=!0)}return{standaloneFields:e,groupMap:F,usedFormats:i,hasInlineFields:s}}function Ii(t,e,F){F.sort((d,u)=>d.arrayRef.index-u.arrayRef.index);let i=F.map(d=>d.byteOffset),s=i[1]-i[0];if(!(s>0&&i.every((d,u)=>u===0||d-i[u-1]===s)))return null;let[a,C]=e.split("|"),l=F[0].library?`_${i0.generateHashForLibraryName(F[0].library)}`:"DDE_";return{arrayName:a,subField:C,fields:F,startOffset:i[0],endOffset:i[i.length-1],step:s,formatType:je(F[0]),pawnVarBase:`${l}${t}_${a}`}}function Mi(t,e){let{standaloneFields:F,groupMap:i,usedFormats:s,hasInlineFields:E}=Ti(e),a=[];for(let[C,l]of i){let{fields:d,formatType:u}=l;if(d.length<2){F.push(...d),s.add(u);continue}let p=Ii(t,C,d);p?(s.add(u),a.push(p)):(F.push(...d),s.add(u))}return F.sort((C,l)=>C.byteOffset-l.byteOffset),{arrayGroups:a,standaloneFields:F,usedFormats:s,hasInlineFields:E}}function Si(t){let e=new Set;for(let[,F]of Object.entries(t.containers))if(Bt(F))for(let i of F.fields){let s=je(i);s&&e.add(s)}return e}function Ri(t,e){e.has("d")&&(t("stock _DDE_fmt_d(aData{}, value) {"),t(Dr),t(' sprintf(szTemp, _, "%d", value);'),t(lr),t("}")),e.has("f")&&(t(""),t("stock _DDE_fmt_f(aData{}, Float:value) {"),t(Dr),t(' sprintf(szTemp, _, "%.3f", value);'),t(lr),t("}")),e.has("s")&&(t(""),t("stock _DDE_fmt_s(aData{}, value{}) {"),t(Dr),t(' sprintf(szTemp, _, "%s", value);'),t(lr),t("}")),e.has("stamp")&&(t(""),t("stock _DDE_fmt_stamp(aData{}, value) {"),t(Dr),t(' sprintf(szTemp, _, "%s", (stampToISOString(value)));'),t(lr),t("}")),e.has("bin")&&(t(""),t("stock _DDE_fmt_bin(aData{}, mem{}, dim) {"),t(" #pragma warning disable 224"),t(" memtostr(aData, mem, 0, dim);"),t(" #pragma warning disable 224"),t(" return dim;"),t("}"))}function Oi(t,e){return e===1?t===0?"idx":`idx - ${t}`:t===0?`idx / ${e}`:`(idx - ${t}) / ${e}`}function Ui(t,e,F){let i=`idx >= ${t} && idx <= ${e}`;if(F===1)return i;let s=t===0?`idx % ${F} == 0`:`(idx - ${t}) % ${F} == 0`;return`${i} && ${s}`}function Hi(t,e){let{startOffset:F,endOffset:i,step:s,formatType:E,pawnVarBase:a,subField:C}=e,l=Oi(F,s),d=Ui(F,i,s);if(t(` if (${d}) {`),E==="bin"){let u=`${a}[${l}]${C}`,p=C?C.substring(1):"",k=p?`${a}_${p}_dim`:`${a}_dim`;t(` return _DDE_fmt_bin(aData, ${u}, ${k});`)}else t(` return _DDE_fmt_${E}(aData, ${a}[${l}]${C});`);t(" }")}function zi(t,e,F){if(F.type==="shadow"||F.shadowRef)return;let i=ox(F);if(!i||i==="skip")return;let E=`${F.library?`_${i0.generateHashForLibraryName(F.library)}`:"DDE_"}${e}_${F.name}`,a=Et(i);if(a==="bin")t(` case ${F.byteOffset}: return _DDE_fmt_bin(aData, ${E}, ${E}_dim);`);else if(a)t(` case ${F.byteOffset}: return _DDE_fmt_${a}(aData, ${E});`);else{if(t(` case ${F.byteOffset}: {`),i.printf){let C=E;i.printfFormat&&(C=`(${i.printfFormat}(${C}))`),t(` sprintf(szTemp, _, "${i.printf}", ${C});`),t(" return (strcat(aData, szTemp, sizeof(szTemp)));")}t(" }")}}function Ji(t,e,F){t(` case '${e.at(-1)}': {`),t(` return _DDE_local_${F.title}(aData, idx);`),t(" }")}function ot(t,e,F){let i=F===u0.ContainerType.cx?"c":"h",s=F===u0.ContainerType.cx?"config":"histdata";t(` if(cname{0} == '${i}'){`),t(" switch(cname{1}) {");for(let[E,a]of Object.entries(e.containers))F===a.containerType&&E.startsWith(s)&&a.transferDirection!==vt.backendOnly&&Ji(t,E,a);t(" default:"),t(" return OK;"),t(" }"),t(" return OK;"),t(" }")}function Ki(t,e){let F=Mi(e.title,e.fields);t(""),t(`stock _DDE_local_${e.title}(aData{}, idx) {`),F.hasInlineFields&&t(" new szTemp{64};");for(let i of F.arrayGroups)Hi(t,i);if(F.standaloneFields.length>0){t(" switch(idx) {");for(let i of F.standaloneFields)zi(t,e.title,i);t(" default:"),t(" return OK;"),t(" }")}t(" return OK;"),t("}")}function Vi(t,e){for(let[,F]of Object.entries(e.containers))Bt(F)&&Ki(t,F)}function Ct(t){let e=[],F=e.push.bind(e),i=Si(t);return Ri(F,i),i.size>0&&F(""),F("stock DDE_get_local_data(cname{}, aData{}, idx) {"),ot(F,t,u0.ContainerType.cx),ot(F,t,u0.ContainerType.hx),F(" return OK;"),F("}"),Vi(F,t),e.join(`
|
|
1652
|
-
`)}var ct=
|
|
1653
|
-
`),
|
|
1654
|
-
`)),
|
|
1655
|
-
`),diagnostics:
|
|
1656
|
-
forward ___${
|
|
1647
|
+
`)}function s(C,l,d=!1){let u=Ze(l)?"":'"';d&&(u=""),a(`#define ${C} ${u}${l}${u}`)}return vi(E,s,F),Ei(a,E,s,e),Di(a,E,t),li(a,E,t),i.join(`
|
|
1648
|
+
`)}var RA=class{constructor(e,F,i){this.manifest=e;this.ddeMap=F;this.context=i;this.sourceType="pawnSource"}manifest;ddeMap;context;globalVariables=[];pawnGlobalSource=[];pawnHelperSource=[];timeSeriesSource=[];readWriteSource=[];definesSource=[];defaultDefinesSource=[];knownDefines=[];pawnIndent=0;sourceType;pawn(e,F){F&&e==="<"&&this.pawnIndent--,{pawnSource:this.pawnGlobalSource,globalVariables:this.globalVariables,timeseries:this.timeSeriesSource,readWrite:this.readWriteSource,defines:this.definesSource,defaultDefines:this.defaultDefinesSource}[this.sourceType].push(" ".repeat(this.pawnIndent)+(F||e)),F&&e===">"&&this.pawnIndent++}generate(){for(let[e,F]of Object.entries(this.ddeMap.containers))this.context&&!F.libraries.includes(this.context)||!De(F.containerType,F.transferDirection)||!F.fields||!this.context&&!u0.hasContainerAppFields(F)||SA[e].ctype!==K0.cx&&this.context||(this.generateGlobalVarsForContainer(F),this.generateReadWriteFunctions(F));return this.mergeSourceTypes(),{globals:this.pawnGlobalSource,helper:this.pawnHelperSource}}createGlobalVar(e,F){this.sourceType="globalVariables";let i=F?this.variableNameForPawnDefinition(e,F):e;if(F){let a=this.generateCommentForField(F);a&&(Array.isArray(a)?(this.pawn("/**"),a.forEach(E=>{this.pawn(` * ${E}`)}),this.pawn(" */")):this.pawn(`// ${a}`))}this.pawn(`stock ${i}${F?this.initialiserForGlobalVar(F):""};`)}initialiserForGlobalVar(e){if(e.defaultDloDefine===void 0||e.arrayRef)return"";let F=ox(e);return!F||F==="skip"||`${F.rwp||""}`.includes("%l")?"":` = ${e.defaultDloDefine}`}insertSection(e){this.pawn(""),this.pawn("// ============================================================================="),this.pawn(`// ${e}`),this.pawn("// ============================================================================="),this.pawn("")}mergeSourceTypes(){this.sourceType="pawnSource",this.definesSource.length&&(this.insertSection("Defines"),this.pawnGlobalSource.push(...this.definesSource)),this.defaultDefinesSource.length&&(this.insertSection("Field defaults"),this.pawnGlobalSource.push(...this.defaultDefinesSource)),this.globalVariables.length&&(this.insertSection("Global Variables"),this.pawnGlobalSource.push(...this.globalVariables)),this.readWriteSource.length&&(this.insertSection("Internal read/write calls"),this.pawnHelperSource.push(...this.readWriteSource)),this.pawn("")}generateGlobalVarsForContainer(e){this.sourceType="globalVariables",this.pawn(""),this.pawn(`// Container '${e.title.replace("_"," ")}'`),this.pawn("");let F=`DDE_${e.title}`;this.generateArrayDefines(F,e);for(let i of e.fields){if(i.type==="shadow"||i.shadowRef||i.library!==this.context)continue;if(i.arrayRef!==null){let E=e.arrays[i.arrayRef.name],s=`${F}_${i.arrayRef.name}`;E.fields?.length&&(s+=`_${i.name.split(".")[1]}`),this.createDefaultDefineForField(s,i);continue}let a=this.generateFieldVariableName(F,i);this.createDefaultDefineForField(a,i),this.createGlobalVar(`${a}`,i)}}generateArrayDefines(e,F){for(let i of Object.values(F.arrays)){if(this.context!==i.library)continue;let a=`${e}_${i.name}_dim`;if(this.sourceType="defines",this.pawn(`#define ${a} ${i.length}`),i.fields){for(let C of i.fields)Er[C.type]?.isBlob&&C.byteSize&&this.addDefine(`${e}_${i.name}_${C.name}_dim`,C.byteSize);let E={...F};E.fields=[],i.fields.forEach(C=>{E.fields.push({arrayRef:null,shadowRef:null,byteOffset:0,byteSize:C.byteSize,id:C.name,library:i.library,name:C.name,type:C.type,title:null,index:0})});let s=`${e}_${i.name}_def`;this.generateTypeDefinitions(E,s),this.createGlobalVar(`${e}_${i.name}[${a}][${s}]`)}else this.createGlobalVar(`${e}_${i.name}[${a}]`)}}generateCommentForField(e){let F=[`@type ${e.type}`];if(e.description&&F.unshift(e.description),e.defaultValue!==void 0){let{value:i,reason:a}=this.parseFieldDefault(e);F.push(`@default ${i} ${a||""}`)}return F}generateFieldVariableName(e,F){let i=`${e}_${F.name}`,a=Object.hasOwn(Er,F.type)&&Er[F.type].isBlob,E=F.byteSize;return E&&a&&(this.sourceType="defines",this.pawn(`#define ${e}_${F.name}_dim ${E}`),this.pawn(`#define ${e}_${F.name}_iter() for(new i=0;i<${E};i++)`)),this.sourceType="globalVariables",i}generateTypeDefinitions(e,F){this.sourceType="defines";let i=e.fields;if(!i)return;let a=[];this.pawn(">",`#define ${F} [`);for(let E of i){let s=this.generateFieldTypeDefinition(E,e,a,F);s!==null&&this.pawn(s)}this.pawn("<","]")}handleArrayFieldDedup(e,F,i,a){let E=e.arrayRef;if(E){let l=F.arrays[E.name];if(!i.includes(E.name)&&!l.fields)i.push(E.name);else return null}let s=e.arrayRef?e.arrayRef.name:e.name,C=e.arrayRef?`[${a}_${s}_dim]`:"";return{fieldName:s,fld_dim:C}}generateFieldTypeDefinition(e,F,i,a){if(e.type==="shadow"||e.shadowRef||e.library!==this.context)return null;let E=this.handleArrayFieldDedup(e,F,i,a);if(E===null)return null;let{fieldName:s,fld_dim:C}=E,l="";if(e.type==="struct")l="// ."+s+C;else{let d=ox(e);if(!d)return null;d==="skip"?l=`// skipped - .${s}${C}`:l+=d.rwp.replace("%n",`.${s}${C}`).replace("%l",e.byteSize)}return l+=",",e.library&&(l+=` // declared by ${e.library} library`),l}variableNameForPawnDefinition(e,F){let i=ox(F);return i&&i!=="skip"?i.rwp.replace("%n",`${e}`).replace("%l",F.byteSize):e}createDefaultDefineForField(e,F){if(this.sourceType="defaultDefines",F.scale!==void 0&&this.addDefine(`${e}_scale`,F.scale),F.offset!==void 0&&this.addDefine(`${e}_offset`,F.offset),F.defaultValue!==void 0&&oi(F)){let{value:i,reason:a}=this.parseFieldDefault(F),E=`${e}_default`;this.addDefine(E,i,a)&&(F.defaultDloDefine=E)}}addDefine(e,F,i){return IA.exec(`${F}`)?!1:(this.knownDefines.includes(e)||(i&&this.pawn(`// ${i}`),this.pawn(`#define ${e} ${F}`),this.knownDefines.push(e)),!0)}generateReadWriteFunctions(e){let F=e.name,i=SA[F],a=`DDE_${e.containerType===K0.aloha?K0.aloha:e.title}`;[c0.both,c0.bothPlus,c0.none,c0.deviceOnly,c0.up,c0.upPlus].includes(e.transferDirection)&&this.generateWriteMethod(a,e),i.ctype===K0.cx&&this.generateReadMethod(a,e)}generateWriteMethod(e,F){this.sourceType="readWrite";let i=`DDE_${F.title}_id`,a=[K0.hx,K0.aloha].includes(F.containerType),E=F.containerType===K0.hx,s=F.containerType===K0.aloha,C=`_${e}_write`,l=fe(this.manifest)?", flags":"",d=E?`stamp${l}`:"",u=fe(this.manifest)?"const stamp=0, const flags=0":"const stamp=0";this.pawn(">",`stock ${C}(${E?u:""}) {`),a&&this.pawn(`dde_wbegin(DDE_${s?K0.aloha:F.title}_id);`),this.generateRWFunctionBody(e,F,"dde_w"),a&&this.pawn(`return dde_wend(${d});`),this.pawn("<","}"),this.pawn(""),this.sourceType="globalVariables";let p=`${e}_transfer`,g=`${e}_persist`,w=this.functionArgumentsForDdeWrite(E,a);if(this.pawn(">",`${this.context?"stock ":""}${p}(${w}) {`),a)this.pawn(`${C}(${d});`);else{let b=F.name.slice(-1);this.pawn(`dde_flush(${b}, immediate);`)}this.pawn("<","}"),this.pawn(""),F.volatile&&(this.pawn(">",`stock ${g}() {`),this.pawn(`return rM2M_CfgFlush(${i});`),this.pawn("<","}"))}functionArgumentsForDdeWrite(e,F){let i=fe(this.manifest)?", const flags=0":"";return e?`const stamp=0${i}`:F?"":"bool:immediate=false"}generateReadMethod(e,F){this.sourceType="readWrite";let i=`_${e}_read`;this.pawn(">",`stock ${i}() {`),this.generateRWFunctionBody(e,F,"dde_r"),this.pawn("<","}"),this.pawn("")}isFieldSkipped(e){return e.type==="shadow"||!!e.shadowRef||e.library!==this.context}emitFieldRW(e,F,i,a,E,s,C){if(!F.arrayRef)return this.emitSingleField(e,F,i,a,C);let l=F.arrayRef.name,d=E.get(l);return d?s.has(l)?C:(s.add(l),this.emitArrayLoop(e,d,i)):this.emitSingleField(e,F,i,a,C)}generateRWFunctionBody(e,F,i){let a=F.fields,E=this.analyzeArrayGroups(a,e,F),s=new Set,C=-1;for(let l of a){if(this.isFieldSkipped(l))continue;let d=ox(l);!d||d==="skip"||(C=this.emitFieldRW(e,l,i,d,E,s,C))}}defaultArgumentFor(e,F){return e.defaultDloDefine===void 0?"":F==="dde_r"||ai(this.manifest)?`, ${e.defaultDloDefine}`:""}emitSingleField(e,F,i,a,E){F.byteOffset!==E&&this.pawn(`_dde_idx = ${F.byteOffset};`);let s="";s+=i,s+=a.rwfunc;let C=`${e}_${F.name}`;return s+=`(${C}`,a.rwlen&&(s+=`, ${F.byteSize}`),s+=this.defaultArgumentFor(F,i),this.pawn(s+");"),F.byteOffset+F.byteSize}emitArrayLoop(e,F,i){this.pawn(">",`for (new _i = 0; _i < ${F.dimDefine}; _i++) {`);let a=-1;for(let E of F.templateFields){let s=ox(E);if(!s||s==="skip")continue;let C=E.byteOffset;C!==a&&this.pawn(`_dde_idx = ${C} + (_i * ${F.stride});`),a=C+E.byteSize;let l=`${e}_${E.name.replace(/\[\d+\]/,"[_i]")}`,d=`${i}${s.rwfunc}(${l}`;s.rwlen&&(d+=`, ${E.byteSize}`),d+=this.defaultArgumentFor(E,i),this.pawn(d+");")}return this.pawn("<","}"),-1}analyzeArrayGroups(e,F,i){let a=this.collectArrayFieldsByIndex(e);return this.buildArrayGroups(a,F,i)}collectArrayFieldsByIndex(e){let F=new Map;for(let i of e){if(this.isFieldSkipped(i)||!i.arrayRef)continue;let a=ox(i);if(!a||a==="skip")continue;let{name:E,index:s}=i.arrayRef;F.has(E)||F.set(E,new Map);let C=F.get(E);C.has(s)||C.set(s,[]),C.get(s).push(i)}return F}validateArrayStride(e,F){let i=F[0].byteOffset-e[0].byteOffset;if(i<=0)return null;for(let a=0;a<e.length;a++)if(F[a].byteOffset-e[a].byteOffset!==i)return null;return i}buildArrayGroups(e,F,i){let a=new Map;for(let[E,s]of e){let C=i.arrays[E];if(!C||C.length<2)continue;let l=s.get(0),d=s.get(1);if(!l||!d||l.length===0||d.length===0||l.length!==d.length)continue;let u=this.validateArrayStride(l,d);u!==null&&a.set(E,{arrayName:E,dimDefine:`${F}_${E}_dim`,stride:u,templateFields:l})}return a}parseFieldDefault(e){let F=ox(e),i=e.defaultValue;function a(s,C){return{value:s,reason:C}}switch(e.type){case"astring":case"nstring":case"cstring":return a(`"${i}"`);case"wstring":return a(`''${i}''`);case"ustring":return a(`/* default not supported: ${i} */`);case"binary":{let C=`{ 0x${(i.substring(2).replace(/\s+/g,"").match(/.{1,2}/g)||[]).join(", 0x")} }`;return a(C)}}if(i==="NaN"){let s=F.rwfunc;return a(`${s}_NaN`.toUpperCase())}let E=this.parseFieldScaleOffset(e);return E?a(E.calculated,E.reason):(i!==void 0&&!IA.exec(`${i}`)&&e.type.startsWith("float")&&i%1===0&&(i=i.toFixed(e.decimalPlaces||1)),a(`${i}`))}parseFieldScaleOffset(e){let F=e.defaultValue;if(!(!!IA.exec(`${e.offset}`)||!!IA.exec(`${e.scale}`)||!!IA.exec(`${e.defaultValue}`))&&(e.offset!==void 0||e.scale!==void 0)){let a=e.offset!==void 0?Number(e.offset):0,E=e.scale!==void 0?Number(e.scale):1;if(E===0)return null;let s=(Number(F)-a)/E,C=`(defaultValue - offset) / scale -> (${F} - ${a}) / ${E}`;return e.type.startsWith("float")?s%1===0&&(s=s.toFixed(1)):(s=Math.round(s),C=`Rounded value of: ${C}`),{calculated:s,reason:C}}return null}};function ci(t){return`${`onUplinkApply_${t}()`};`}function xt(t,e,F){e.libraries.forEach(i=>{let a=F0.generateHashForLibraryName(i);t(` #ifdef _${a}${F}_${e.title}`),t(` _${a}${F}_${e.title}(); // ${i}`),t(" #endif")})}function di(t,e){t("stock _onUplinkEvent(ev, param) {"),e.forEach(F=>{let a=`_${F0.generateHashForLibraryName(F)}UplinkEvent`;t(` #ifdef ${a}`),t(` ${a}(ev, param);`),t(" #endif")}),t(" onUplinkEvent(ev, param);"),t("}")}function ji(t){let e=[],F=[];for(let[i,a]of Object.entries(t.containers))SA[i].ctype===K0.cx&&([c0.up,c0.upPlus,c0.deviceOnly].includes(a.transferDirection)&&F.push(a),[c0.bothPlus,c0.both,c0.downPlus,c0.down].includes(a.transferDirection)&&e.push(a));return{containerApply:e,containerRestore:F}}function pi(t,e){e.length&&t("");for(let F of e)F.knownNames.forEach(i=>{t(`forward onUplinkRestore_${i}();`)}),t(""),t(`stock restoreUplink${F.name}() {`),t(` _DDE_${F.name}_read();`),xt(t,F,"Restore"),u0.hasContainerAppFields(F)&&t(` onUplinkRestore_${F.title}();`),t("}");if(t("#pragma warning push"),t("stock _onUplinkRestore(cfgId) {"),e.length){t(" switch(cfgId) {");for(let F of e)t(` case DDE_${F.title}_id: restoreUplink${F.name}(); // ${F.name}`);t(" }")}else t(" #pragma warning disable 203"),t(" // no containers to restore");t("}"),t("#pragma warning pop")}function ui(t,e){e.length&&t("");for(let F of e)F.knownNames.forEach(i=>{t(`forward onUplinkApply_${i}();`)}),t(""),t(`stock applyUplink${F.name}() {`),t(` _DDE_${F.name}_read();`),xt(t,F,"Apply"),u0.hasContainerAppFields(F)&&t(` ${ci(F.title)}`),t(" return(OK);"),t("}");if(t("#pragma warning push"),t("stock _onUplinkApply(cfgId) {"),e.length){t(" switch(cfgId) {");for(let F of e)t(` case DDE_${F.title}_id: return applyUplink${F.name}(); // ${F.name}`);t(" }"),t(" return ERROR;")}else t(" #pragma warning disable 203"),t(" // no containers to apply"),t(" return OK;");t("}"),t("#pragma warning pop")}function At(t,e){let F=[],i=F.push.bind(F);di(i,e);let{containerApply:a,containerRestore:E}=ji(t);return pi(i,E),ui(i,a),F.join(`
|
|
1649
|
+
`)}var bi=ii.map(t=>`_DDE_${t}_write`);function rt(t){let e=[],F=e.push.bind(e),i=[...bi];for(let[a,E]of Object.entries(t.containers)){let s=De(E.containerType,E.transferDirection),C=SA[a];if(!s||!E.fields||C.ctype!==K0.cx)continue;let l=`DDE_${E.name}`,d=`DDE_${E.title}_id`;if([c0.both,c0.bothPlus,c0.none,c0.deviceOnly,c0.up,c0.upPlus].includes(E.transferDirection)){let u=`_${l}_write`;F(`stock ${u}() {`),F(` dde_wbegin(${d});`),Ye(F,E,"write"),F(" return dde_wend();"),F("}"),i.splice(i.indexOf(u),1)}if(C.ctype===K0.cx){let u=`_${l}_read`;F(`stock ${u}() {`),F(` if (dde_rbegin(${d})) return ERROR;`),Ye(F,E,"read"),F(" dde_rend();"),F(" return OK;"),F("}")}}if(i.length){F(""),F("// Dummy functions needed by the dde library");for(let a of i)F(`stock ${a}() { return OK; }`)}return e.join(`
|
|
1650
|
+
`)}function Ye(t,e,F){e.libraries.forEach(i=>{let a=F0.generateHashForLibraryName(i);t(` #ifdef __${a}${e.title}_${F}`),t(` __${a}${e.title}_${F}();`),t(" #endif")}),u0.hasContainerAppFields(e)&&(t(` #ifdef _DDE_${e.title}_${F}`),t(` _DDE_${e.title}_${F}();`),t(" #endif"))}async function et(t,e){let F=[],i=await y0.getApmPartDependencies(t,e,a0.Part.dlo);await MA(t,e,F,Y.fileNames.autoInc);let a=await mi(t,e,i);for(let E of i)E.name==="local-data-interface"&&await MA(t,e,F,Y.fileNames.autoLocalDataInc),F.push(`#include <${E.name}>`),E.name==="dlo-core"&&(F.push(...a),await MA(t,e,F,Y.fileNames.autoDdeInc.replace("X","app")),await MA(t,e,F,Y.fileNames.autoDdeInc.replace("X","main")));return i.some(E=>E.name==="dlo-core")&&await MA(t,e,F,Y.fileNames.autoUplinkInc),F.join(`
|
|
1651
|
+
`)}async function mi(t,e,F){let i=[];for(let a of F){let E=Y.filePaths.studio.auto.dlo.autoDdeInc.replace("X",a.name);await e.stat(le.Utils.joinPath(t,E))&&i.push(`#include "${Y.fileNames.autoDdeInc.replace("X",a.name)}"`)}return i}async function MA(t,e,F,i){let a=le.Utils.joinPath(t,Y.filePaths.studio.auto.dlo.path,i);await e.stat(a)&&F.push(`#include "${i}"`)}var nt=J0(require("semver")),it=require("yaml");var vx=u0.ContainerType,Cr=u0.TransferDirection,hi=u0.fieldTypeDefinitions,EA={$ref:"#/components/parameters/contextId"},gi={$ref:"#/components/parameters/addonId"},ki={$ref:"#/components/parameters/appId"},tt={$ref:"#/components/schemas/histdataResponse"},yi={$ref:"#/components/schemas/histdataRequest"},fr={$ref:"#/components/schemas/rapidM2MStamp"},wi={$ref:"#/components/schemas/timeseriesRequestBase"},Br="rapidM2M Stamp",ux={description:"Successful operation"},Ft={parameters:{contextId:{name:"siteUid",in:"path",description:"The site uid",schema:{type:"string"},required:!0},appId:{name:"appUid",in:"path",description:"The app uid",schema:{type:"string"},required:!0}},schemas:{rapidM2MStamp:{type:"string",format:"YYYYMMDDhhmmssSSS",description:'Special format of an UTC timestamp. Important: The trailing 0 are truncated. eg.: "2024-02-10" -> "2024021"'}}},at={...structuredClone(Ft)};Object.assign(at.schemas,{histdataResponse:{type:"array",description:"Array of histdata records. Array starts with the youngest record",items:{type:"array",description:'First item is always the rapidM2M timestamp of the record. All following values are in the order of the "select" array.',items:{anyOf:[fr,{type:"string"},{type:"number"}]}}},histdataRequest:{type:"object",additionalProperties:!1,required:["from","until"],properties:{from:{type:"string",format:Br,description:"items to include must be older or equal, UTC w/o time saving."},until:{type:"string",format:Br,description:"items to include must be younger, UTC w/o time saving. Reply set is limited like that: from <= item.stamp < until."},count:{type:"integer",description:"limits the number of returned records, negative values will count the records from the end of the result set."},offset:{type:"integer",description:"skips the given number of records in the result set."}}},timeseriesRequestBase:{type:"object",additionalProperties:!1,properties:{count:{type:"integer",description:"limits the number of returned records, negative values will count the records from the end of the result set.",minimum:-1e3,maximum:1e3,default:1e3},from:{type:"string",format:Br,description:"items to include must be older or equal, UTC w/o time saving"},until:{type:"string",format:Br,description:"items to include must be younger, UTC w/o time saving. Reply set is limited like that: from <= item.stamp < until"},offset:{type:"integer",description:"Skips the given number of records in the result set",minimum:0,default:0}}}});var OA={content:{"application/json":{schema:{type:"object",additionalProperties:!1,properties:{err:{type:"string",description:"Information what went wrong"}}}}}},Kx={401:{description:"Permission denied",...OA},403:{description:"Forbidden",...OA},404:{description:"Resource not found",...OA},500:{description:"Internal error",...OA}};function de(t,e,F=null){let i=nt.coerce(e.version)?.version,a={openapi:"3.0.3",info:{description:e.description,title:e.name,version:i||""},tags:[],paths:{},components:{parameters:{},schemas:{}}};F?Object.assign(a.components,structuredClone(Ft)):Object.assign(a.components,structuredClone(at));let E=O.isAddon(e),s=O.isAnalytics(e);E&&(a.components.parameters.addonId={name:"addonUid",in:"path",description:"The addon uid",schema:{type:"string"},required:!0});for(let C of Object.values(t.containers))F&&(!C.libraries.includes(F)||C.containerType===vx.hx)||!F&&!u0.hasContainerAppFields(C)||C.containerType===vx.aloha||(_i(a,C),qi(a,C,F),Ni(a,C,E,s),!E&&!s&&($i(a,C,F),Li(a,C)));return a.tags.push({name:"app-center",description:"App Center related routes"}),(0,it.stringify)(a)}function _i(t,e){t.tags.push({name:nx(e.title),description:`Transfer direction ${e.transferDirection}`})}function nx(t){return t.split("_").join(" ")}function $i(t,e,F){let i=`${e.name}`,a={type:"object",description:`Container: "${e.title}"`,additionalProperties:!1,properties:{}},E=[];e.containerType===vx.hx&&(i+="Select",E.push("select"),a.properties.select={type:"array",items:{type:"string",enum:[]}});for(let s of e.fields)s.library!==F||s.type==="shadow"||(e.containerType===vx.hx?a.properties.select.items.enum.push(s.id):(a.properties[s.id]=st(s),!s.readPermission&&!s.writePermission&&E.push(s.id)));a.required=E.length?E:void 0,t.components.schemas[i]=a}function qi(t,e,F=null){let i=`${e.title}`,a={type:"object",description:`Container: "${e.title}" with device transfer direction "${e.transferDirection}"`,additionalProperties:!1,properties:{}},E=[],s=e.containerType===vx.hx;for(let l of e.fields)l.library!==F||l.type==="shadow"||(a.properties[l.name]=st(l),!l.readPermission&&!l.writePermission&&E.push(l.name));a.required=E.length?E:void 0,t.components.schemas[i]=a;let C=a.properties;if(s){a.required=a.required?.map(d=>d.toLowerCase());let l={};for(let[d,u]of Object.entries(a.properties))l[d.toLowerCase()]=u;a.properties=l}if(s){let l={type:"object",description:`Request schema of "${e.title}"`,additionalProperties:!1,properties:{select:{type:"array",description:"Optional selection of specific fields of the given container",items:{type:"string",enum:Object.keys(C)}}}};t.components.schemas[`${i}RequestSingle`]=l,t.components.schemas[`${i}Request`]={allOf:[wi,l]},a.properties.stamp=fr,E.push("stamp")}}function st(t){let F={...hi[t.type].openApi},i=Pi(t);return F.default=i,F.example=i,F.description=t.description,F}function Pi(t){return t.defaultValue===void 0?t.defaultValue:t.type==="binary"?`${t.defaultValue.substring(2)}`:t.defaultValue}function Li(t,e){let F=`/api/1/sites/{siteUid}/${e.name}`,i={get:void 0,put:void 0};if([vx.cx,vx.cb].includes(e.containerType))i.get={deprecated:!0,tags:[nx(e.title)],summary:`Retrieve the data of the "${nx(e.title)}" container`,parameters:[EA],responses:{200:{...ux,content:{"application/json":{schema:{allOf:[{type:"object",required:["stamp"],properties:{stamp:fr}},{$ref:`#/components/schemas/${e.name}`}]}}}},...Kx}},[Cr.down,Cr.backendOnly].includes(e.transferDirection)&&(i.put={deprecated:!0,tags:[nx(e.title)],summary:`Modify the data of the "${nx(e.title)}" container`,parameters:[EA],requestBody:{content:{"application/json":{schema:{$ref:`#/components/schemas/${e.name}`}}}},responses:{201:{...ux},204:{...ux},...Kx}});else if(e.containerType===vx.hx){let a=`${F}`;F+="/youngest",i.get={deprecated:!0,tags:[nx(e.title)],summary:`Retrieve the youngest data of the "${nx(e.title)}" container`,parameters:[EA,{name:"json",in:"query",required:!0,schema:{$ref:`#/components/schemas/${e.name}Select`}}],responses:{200:{...ux,content:{"application/json":{schema:tt}}},...Kx}},t.paths[a]={get:{deprecated:!0,tags:[nx(e.title)],summary:`Get the historical data of the "${nx(e.title)}" container.`,parameters:[EA,{name:"json",in:"query",required:!0,schema:{allOf:[{$ref:`#/components/schemas/${e.name}Select`},yi]}}],responses:{200:{...ux,content:{"application/json":{schema:tt}}},...Kx}}}}t.paths[F]=i}function Ni(t,e,F=!1,i=!1){let E=e.containerType===vx.hx?"timeseries":"containers",s=[],C=nx(e.title);i||s.push({path:`/api/1/sites/{siteUid}/${E}/${e.title}`,params:[EA],tags:[C]}),F&&(s=[{path:`/api/1/sites/{siteUid}/addons/{addonUid}/${E}/${e.title}`,params:[EA,gi],tags:[C]}]);let l={path:`/api/1/app-center/apps/{appUid}/${E}/${e.title}`,params:[ki],tags:["app-center"]};i&&l.tags.push(C),s.push(l);let d={get:void 0,put:void 0,post:void 0},u={tags:[],summary:`Retrieve the data of the "${nx(e.title)}" container`,parameters:[],responses:{200:{...ux,content:{"application/json":{schema:{allOf:[{type:"object",required:["stamp"],properties:{stamp:fr}},{$ref:`#/components/schemas/${e.title}`}]}}}},...Kx}};if([vx.cx,vx.cb].includes(e.containerType)&&(d.get=u,[Cr.down,Cr.backendOnly].includes(e.transferDirection)&&(d.put={tags:[],summary:`Modify the data of the "${nx(e.title)}" container`,parameters:[],requestBody:{content:{"application/json":{schema:{$ref:`#/components/schemas/${e.title}`}}}},responses:{201:{...ux},204:{...ux},...Kx}}),s.forEach(p=>{let g=structuredClone(d);Object.values(g).forEach(w=>{w?.parameters?.unshift(...p.params),w?.tags?.unshift(...p.tags)}),t.paths[p.path]=g})),e.containerType===vx.hx){d.get={tags:[],summary:`Get the historical data of "${e.title}"`,parameters:[{name:"json",in:"query",required:!1,schema:{$ref:`#/components/schemas/${e.title}Request`}}],responses:{200:{...ux,content:{"application/json":{schema:{type:"array",items:{$ref:`#/components/schemas/${e.title}`}}}}},...Kx}},F&&(d.post={tags:[],summary:`Insert data into the "${nx(e.title)}" container`,parameters:[{name:"allow_future_date",in:"query",description:"Allow inserting records with a stamp value in the future",schema:{type:"boolean"}}],requestBody:{content:{"application/json":{schema:{$ref:`#/components/schemas/${e.title}`}}}},responses:{201:{...ux},400:{description:"Bad request",...OA},...Kx}});let p=s[0],g=structuredClone(d);Object.values(g).forEach(S=>{S?.parameters?.unshift(...p.params),S?.tags?.unshift(...p.tags)}),t.paths[p.path]=g;let w={...ux,content:{"application/json":{schema:{$ref:`#/components/schemas/${e.title}`}}}},b=`${p.path}/youngest`,k={get:structuredClone(g.get)};k.get.summary=`Get the youngest record of "${e.title}" container`,k.get.responses[200]=w;let _=F?2:1;k.get.parameters[_].schema.$ref=`#/components/schemas/${e.title}RequestSingle`,t.paths[b]=k;let q=`${p.path}/oldest`,N={get:structuredClone(g.get)};N.get.summary=`Get the oldest record of "${e.title}" container`,N.get.responses[200]=w,N.get.parameters[_].schema.$ref=`#/components/schemas/${e.title}RequestSingle`,t.paths[q]=N}}var vt=u0.TransferDirection,Dr=" new szTemp{64};",lr=" return strcat(aData, szTemp, sizeof(szTemp));";function Et(t){if(!t.printf&&t.printfFormat==="memtostr")return"bin";if(!t.printf)return null;let e=t.rwp||"%n",F=e.includes("["),a=e.includes("{")||F;if(t.printfFormat==="stampToISOString")return a?null:"stamp";switch(t.printf){case"%d":return a?null:"d";case"%f":return a?null:"f";case"%s":return F?null:"s";default:return null}}function je(t){if(t.type==="shadow"||t.shadowRef)return null;let e=ox(t);return!e||e==="skip"?null:Et(e)}function Bt(t){return[u0.ContainerType.hx,u0.ContainerType.cx].includes(t.containerType)&&t.transferDirection!==vt.backendOnly}function Gi(t){if(t.type==="shadow"||t.shadowRef)return!1;let e=ox(t);return!!e&&e!=="skip"}function Ti(t,e,F){let i=t.name.indexOf("]"),a=i>=0?t.name.substring(i+1):"",E=`${t.arrayRef.name}|${a}|${e}`;F.has(E)||F.set(E,{fields:[],formatType:e}),F.get(E).fields.push(t)}function Ii(t){let e=[],F=new Map,i=new Set,a=!1;for(let E of t){if(!Gi(E))continue;let s=je(E);E.arrayRef&&s?Ti(E,s,F):(e.push(E),s?i.add(s):a=!0)}return{standaloneFields:e,groupMap:F,usedFormats:i,hasInlineFields:a}}function Mi(t,e,F){F.sort((d,u)=>d.arrayRef.index-u.arrayRef.index);let i=F.map(d=>d.byteOffset),a=i[1]-i[0];if(!(a>0&&i.every((d,u)=>u===0||d-i[u-1]===a)))return null;let[s,C]=e.split("|"),l=F[0].library?`_${F0.generateHashForLibraryName(F[0].library)}`:"DDE_";return{arrayName:s,subField:C,fields:F,startOffset:i[0],endOffset:i[i.length-1],step:a,formatType:je(F[0]),pawnVarBase:`${l}${t}_${s}`}}function Si(t,e){let{standaloneFields:F,groupMap:i,usedFormats:a,hasInlineFields:E}=Ii(e),s=[];for(let[C,l]of i){let{fields:d,formatType:u}=l;if(d.length<2){F.push(...d),a.add(u);continue}let p=Mi(t,C,d);p?(a.add(u),s.push(p)):(F.push(...d),a.add(u))}return F.sort((C,l)=>C.byteOffset-l.byteOffset),{arrayGroups:s,standaloneFields:F,usedFormats:a,hasInlineFields:E}}function Ri(t){let e=new Set;for(let[,F]of Object.entries(t.containers))if(Bt(F))for(let i of F.fields){let a=je(i);a&&e.add(a)}return e}function Oi(t,e){e.has("d")&&(t("stock _DDE_fmt_d(aData{}, value) {"),t(Dr),t(' sprintf(szTemp, _, "%d", value);'),t(lr),t("}")),e.has("f")&&(t(""),t("stock _DDE_fmt_f(aData{}, Float:value) {"),t(Dr),t(' sprintf(szTemp, _, "%.3f", value);'),t(lr),t("}")),e.has("s")&&(t(""),t("stock _DDE_fmt_s(aData{}, value{}) {"),t(Dr),t(' sprintf(szTemp, _, "%s", value);'),t(lr),t("}")),e.has("stamp")&&(t(""),t("stock _DDE_fmt_stamp(aData{}, value) {"),t(Dr),t(' sprintf(szTemp, _, "%s", (stampToISOString(value)));'),t(lr),t("}")),e.has("bin")&&(t(""),t("stock _DDE_fmt_bin(aData{}, mem{}, dim) {"),t(" #pragma warning disable 224"),t(" memtostr(aData, mem, 0, dim);"),t(" #pragma warning disable 224"),t(" return dim;"),t("}"))}function Ui(t,e){return e===1?t===0?"idx":`idx - ${t}`:t===0?`idx / ${e}`:`(idx - ${t}) / ${e}`}function Hi(t,e,F){let i=`idx >= ${t} && idx <= ${e}`;if(F===1)return i;let a=t===0?`idx % ${F} == 0`:`(idx - ${t}) % ${F} == 0`;return`${i} && ${a}`}function zi(t,e){let{startOffset:F,endOffset:i,step:a,formatType:E,pawnVarBase:s,subField:C}=e,l=Ui(F,a),d=Hi(F,i,a);if(t(` if (${d}) {`),E==="bin"){let u=`${s}[${l}]${C}`,p=C?C.substring(1):"",g=p?`${s}_${p}_dim`:`${s}_dim`;t(` return _DDE_fmt_bin(aData, ${u}, ${g});`)}else t(` return _DDE_fmt_${E}(aData, ${s}[${l}]${C});`);t(" }")}function Ji(t,e,F){if(F.type==="shadow"||F.shadowRef)return;let i=ox(F);if(!i||i==="skip")return;let E=`${F.library?`_${F0.generateHashForLibraryName(F.library)}`:"DDE_"}${e}_${F.name}`,s=Et(i);if(s==="bin")t(` case ${F.byteOffset}: return _DDE_fmt_bin(aData, ${E}, ${E}_dim);`);else if(s)t(` case ${F.byteOffset}: return _DDE_fmt_${s}(aData, ${E});`);else{if(t(` case ${F.byteOffset}: {`),i.printf){let C=E;i.printfFormat&&(C=`(${i.printfFormat}(${C}))`),t(` sprintf(szTemp, _, "${i.printf}", ${C});`),t(" return (strcat(aData, szTemp, sizeof(szTemp)));")}t(" }")}}function Ki(t,e,F){t(` case '${e.at(-1)}': {`),t(` return _DDE_local_${F.title}(aData, idx);`),t(" }")}function ot(t,e,F){let i=F===u0.ContainerType.cx?"c":"h",a=F===u0.ContainerType.cx?"config":"histdata";t(` if(cname{0} == '${i}'){`),t(" switch(cname{1}) {");for(let[E,s]of Object.entries(e.containers))F===s.containerType&&E.startsWith(a)&&s.transferDirection!==vt.backendOnly&&Ki(t,E,s);t(" default:"),t(" return OK;"),t(" }"),t(" return OK;"),t(" }")}function Vi(t,e){let F=Si(e.title,e.fields);t(""),t(`stock _DDE_local_${e.title}(aData{}, idx) {`),F.hasInlineFields&&t(" new szTemp{64};");for(let i of F.arrayGroups)zi(t,i);if(F.standaloneFields.length>0){t(" switch(idx) {");for(let i of F.standaloneFields)Ji(t,e.title,i);t(" default:"),t(" return OK;"),t(" }")}t(" return OK;"),t("}")}function Wi(t,e){for(let[,F]of Object.entries(e.containers))Bt(F)&&Vi(t,F)}function Ct(t){let e=[],F=e.push.bind(e),i=Ri(t);return Oi(F,i),i.size>0&&F(""),F("stock DDE_get_local_data(cname{}, aData{}, idx) {"),ot(F,t,u0.ContainerType.cx),ot(F,t,u0.ContainerType.hx),F(" return OK;"),F("}"),Wi(F,t),e.join(`
|
|
1652
|
+
`)}var ct=F0.yamlRangeToLineInformation,UA=Y.filePaths.dde.path,Ex;(V=>{let t=u0.DDEJson,e=F0.convertBlobToString;V.DDE_SCHEMA=Ke;async function i(L,y){let P=await y.readFile(L);return e(P)}V.readYamlFile=i;async function a(L,y,P=Y.fileNames.mainDDE,H){let U=[],I=await O.read(L,y),M=await ft(L,y,I);if(H)for(let Z of M){let{result:X,unresolvedKeys:T}=R0.replaceDefineTemplates(Z.yaml,H);Z.yaml=X;for(let A0 of T)U.push({file:Z.path,level:"error",message:`Unresolved define template: {{${A0}}}`,line:0,startCharacter:0,endCharacter:0})}for(let Z of M)U.push(...l(Z.path,Z.yaml));let W=L0.Utils.joinPath(L,UA,P),J=await i(W,y);if(H){let{result:Z,unresolvedKeys:X}=R0.replaceDefineTemplates(J,H);J=Z;for(let T of X)U.push({file:W,level:"error",message:`Unresolved define template: {{${T}}}`,line:0,startCharacter:0,endCharacter:0})}return U.push(...l(W,J)),{manifest:I,libraryFiles:M,main:{path:W,yaml:J},diagnostics:U}}V.validate=a;async function E(L,y,P,H=Y.fileNames.mainDDE){let U=await O.read(L,y),I=await R0.read(L,y,P),M=await a(L,y,H,I.flat);if(M.diagnostics.filter(n0=>n0.level==="error").length>0)return{ddeJSON:null,diagnostics:M.diagnostics};let J=await w(L,y,P),Z=new sr.PreCompiler(U,M.libraryFiles,J),X=Z.parseLibraries();if(X.find(n0=>n0.level==="error"))return{ddeJSON:null,diagnostics:[...M.diagnostics,...X]};let{ddeJSON:A0,diagnostics:e0}=Z.parseMainDDE(M.main.path,M.main.yaml);return{ddeJSON:A0,diagnostics:[...M.diagnostics,...e0]}}V.compileDDE=E;let s=new Dt.default({strict:!1,allErrors:!0,verbose:!0});(0,lt.default)(s);let C=s.compile(V.DDE_SCHEMA);function l(L,y){let P=new cr.LineCounter,H=(0,cr.parseDocument)(y,{lineCounter:P,keepSourceTokens:!0}),U=[];for(let W of H.errors){let J=W.pos?ct(P,[W.pos[0],W.pos[1],W.pos[1]]):{line:0,startCharacter:0,endCharacter:0};U.push({file:L,level:"error",message:W.message,...J})}if(U.length>0)return U;let I=H.toJSON();if(!C(I)){let J=(C.errors||[]).filter(X=>X.keyword!=="if"),Z=new Set;for(let X of J){let T=Zi(X);if(Z.has(T))continue;Z.add(T);let A0=xF(H,P,X);U.push({file:L,level:"error",message:T,...A0})}}return U}V.validateJsonSchema=l,V.PreCompiler=(L,y,P)=>new sr.PreCompiler(L,y,P);function u(L,y){return Be(L,y)}V.generateMyDatanetXML=u;async function p(L,y,P,H){let U=await O.read(L,y),I=Be(U,H),M=L0.Utils.joinPath(L,Y.filePaths.dist.ddeXmlPath);await y.writeFile(M,I),P.log("Generated",Y.filePaths.dist.ddeXmlPath)}V.exportMyDatanetXML=p;async function g(L,y,P,H,U){let I=L0.Utils.joinPath(L,Y.filePaths.studio.auto.dde.historyJson);await y.rm(I).catch(console.error);let M=await O.read(L,y);if(!O.isApp(M)||!M.registry?.id)return;if(!U){P.warn("Could not fetch dde of previous version: No API token provided.");return}let W=hx.coerce(M.version);try{let X=(await _0.getExistingApplication(U,M.publisher,M.registry.id,H)).versions.find(n0=>!hx.prerelease(n0.version)&&hx.lte(n0.version,W)),T=X?.files.find(n0=>n0.name==="dde.json");if(!T){P.warn("Could not find a valid previous released app version to fetch the previous dde from.");return}let A0=await fetch(T.downloadUrl,{headers:{...ax(U),..._0.injectSemverHeader(!0)}});if(A0.status!==200){P.warn(`Could not fetch the dde.json of version "${X?.version}"`);return}let e0=await A0.text();await y.writeFile(I,e0),P.log(`Saved history.json of previous app version ${X.version}`)}catch(J){P.error("Failed to fetch the dde of previous version",J)}}V.fetchPreviousHistoryJson=g;async function w(L,y,P){try{let H=L0.Utils.joinPath(L,Y.filePaths.studio.auto.dde.historyJson);if(await y.stat(H)){let I=await y.readFile(H);return JSON.parse(e(I))}let U=L0.Utils.joinPath(L,UA,"history.json");if(await y.stat(U)){P.warn(`"${Y.filePaths.studio.auto.dde.historyJson}" does not exist - fallback to "${UA}history.json"`);let I=await y.readFile(U),M=JSON.parse(e(I)),W=await O.read(L,y),J=hx.coerce(W.version)?.version,Z=Object.keys(M||{}).sort(hx.rcompare).find(T=>T!==J);if(!Z)return null;let X=M[Z];return{version:Z,...X}}}catch(H){P.error("Failed to read history.json",H)}return P.warn("history.json does not exist"),null}V.getHistoryJson=w;function b(L,y){return{version:hx.coerce(y.version)?.version||"1.0.0",...structuredClone(L)}}V.buildHistoryJson=b;async function k(L,y,P,H){let U=await O.read(L,y),I=b(H,U),M=L0.Utils.joinPath(L,Y.filePaths.dist.historyJson);await y.writeFile(M,JSON.stringify(I,null," ")),P.log("Generated",Y.filePaths.dist.historyJson)}V.exportHistoryJson=k;async function _(L,y){return y.rm(L0.Utils.joinPath(L,Y.filePaths.studio.auto.dlo.path))}V.clearAutoDloDir=_;async function q(L,y,P,H){await _(L,y);let U=await O.read(L,y),I=await ft(L,y,U),M=await R0.read(L,y,P),W=Qe(H,M,U),Z=new RA(U,H,null).generate();for(let S0 of I){let Cx=new RA(U,H,S0.libraryName),{globals:Tx,helper:Ix}=Cx.generate(),Mx=[...Tx,...Ix].join(`\r
|
|
1653
|
+
`),Q0=Y.filePaths.studio.auto.dlo.autoDdeInc.replace("X",S0.libraryName),wx=L0.Utils.joinPath(L,Q0);Mx.length&&(P.log("Generated",Q0),await y.writeFile(wx,Mx))}let X=rt(H),T=At(H,I.map(S0=>S0.libraryName)),A0=Ct(H),e0=L0.Utils.joinPath(L,Y.filePaths.studio.auto.dlo.autoInc);await y.writeFile(e0,W),P.log("Generated",Y.filePaths.studio.auto.dlo.autoInc);let n0=L0.Utils.joinPath(L,Y.filePaths.studio.auto.dlo.autoUplinkInc);await y.writeFile(n0,T),P.log("Generated",Y.filePaths.studio.auto.dlo.autoUplinkInc);let i0=L0.Utils.joinPath(L,Y.filePaths.studio.auto.dlo.autoLocalDataInc);await y.writeFile(i0,A0),P.log("Generated",Y.filePaths.studio.auto.dlo.autoLocalDataInc);let d0=L0.Utils.joinPath(L,Y.filePaths.studio.auto.dlo.autoDdeInc.replace("X","app"));await y.writeFile(d0,[...Z.globals,...Z.helper].join(`
|
|
1654
|
+
`)),P.log("Generated",Y.filePaths.studio.auto.dlo.autoDdeInc.replace("X","app"));let b0=L0.Utils.joinPath(L,Y.filePaths.studio.auto.dlo.autoDdeInc.replace("X","main"));await y.writeFile(b0,X),P.log("Generated",Y.filePaths.studio.auto.dlo.autoDdeInc.replace("X","main")),await S(L,y,P)}V.exportAutoDloFiles=q;async function N(L,y,P,H){let U=await O.read(L,y),I=O.isLibrary(U),M=L0.Utils.joinPath(L,Y.filePaths.dist.path,"dde-api.yaml");await y.rm(M).catch(()=>{});let W=L0.Utils.joinPath(L,Y.filePaths.dist.ddeApi);if(await y.writeFile(W,de(H,U)),P.log("Generated",Y.filePaths.dist.ddeApi),I){let J=L0.Utils.joinPath(L,Y.filePaths.dist.ddeApiPath,`${U.name}.yaml`),Z=de(H,U,U.name);Z.length&&(await y.writeFile(J,Z),P.log("Generated",Y.filePaths.dist.ddeApiPath+`${U.name}.yaml`))}}V.exportOpenApi=N;async function S(L,y,P){let H=L0.Utils.joinPath(L,Y.filePaths.studio.auto.dlo.defaultInc),U=await et(L,y);await y.writeFile(H,U),P.log("Generated",Y.filePaths.studio.auto.dlo.defaultInc)}V.exportDefaultInc=S})(Ex||={});async function ft(t,e,F){let i=[],a=await y0.getAll(F);for(let E in a){let s=y0.dependencyToPath(t,E),C=y0.dependencyIdToName(E),l=L0.Utils.joinPath(s,`${UA}/${C}.dde`);await e.stat(l)&&i.push({libraryName:C,path:l,yaml:await Ex.readYamlFile(l,e)})}if(O.isLibrary(F)){let E=L0.Utils.joinPath(t,`/${UA}/${F.name}.dde`);await e.stat(E)&&i.push({libraryName:F.name,path:E,yaml:await Ex.readYamlFile(E,e)})}return i}function Xi(t,e,F){if(typeof t=="string")return t;if(typeof t!="object"||t===null)return"";let i=t[e];if(typeof i=="string")return i;if(typeof i!="object"||i===null)return"";let a=F?.missingProperty;return a?i[a]??"":""}function Yi(t,e,F,i){let E={required:()=>`Missing required property '${e.missingProperty}'.`,additionalProperties:()=>`Unknown property '${e.additionalProperty}' is not allowed.`,type:()=>`Must be of type '${e.type}'.`,enum:()=>`Must be one of the allowed values: ${JSON.stringify(e.allowedValues)}.`,pattern:()=>`Value does not match the required pattern. ${i?.patternErrorMessage??F}`,minimum:()=>`${F}.`,maximum:()=>`${F}.`,exclusiveMinimum:()=>`${F}.`,exclusiveMaximum:()=>`${F}.`,not:()=>`This value is not allowed here. ${i?.description??""}`.trimEnd(),anyOf:()=>`Value does not match any of the allowed schemas. ${i?.description??""}`.trimEnd(),oneOf:()=>`Value does not match any of the allowed schemas. ${i?.description??""}`.trimEnd()}[t];return E?E():F}function Zi(t){let e=t.instancePath||"/",F=t.parentSchema,i=Xi(F?.errorMessage,t.keyword,t.params);if(i)return`${e}: ${i}`;let a=t.message||"unknown validation error";return`${e}: ${Yi(t.keyword,t.params,a,F)}`}function Qi(t,e){let F=e.split("/").filter(Boolean).map(i=>{let a=Number(i);return Number.isNaN(a)?i:a});for(let i=F.length;i>=0;i--){let a=F.slice(0,i),E=t.getIn(a,!0);if(E?.range)return E.range}return null}function xF(t,e,F){let i=Qi(t,F.instancePath||"");return i?ct(e,i):{line:0,startCharacter:0,endCharacter:0}}var pe=require("vscode-uri");var BA=class{dloFileMap={};rootUri=pe.URI.parse("");constructor(){}set workspacePath(e){this.rootUri=e}getSequenceForFile(e){let F=e.substring(this.rootUri.path.length||0);if(this.rootUri.scheme!=="file"){let a=this.rootUri.toString();F=e.substring(a.length+1)}if(Object.hasOwn(this.dloFileMap,F))return this.dloFileMap[F];let i=F0.generateHashForFilePath(F);return this.dloFileMap[F]=i,i}getFilePathForSequence(e){let F=Object.entries(this.dloFileMap).find(([,i])=>i===e);return F?pe.URI.parse(`${this.rootUri.path}${F[0]}`).path:null}};var pt=require("vscode-uri");var AF=/^(?:\s*#options\s+)(.*)(?:\s*)$/,rF=/^(?:\s*#preinclude\s+)(.*)(?:\s*)$/,eF=/^(?:\s*#ifdef\s+)(.*)$/,tF=/^(?:\s*#ifndef\s+)(.*)$/,nF=/^(?:\s*#elseifdef\s+)(.*)$/,iF=/^(?:\s*#elseifndef\s+)(.*)$/,ut=/^(\s*)(?:#callback\s+)(\w*)(?:\s*\(\s*)(.*?)(?:\s*\)\s*)(\{*){1}(?:\s*)$/,bt=/^(.*)(^|\s+)(?:assert\s*\(\s*)(.*?)(?:\s*,\s*)(.*?)(?:\s*\)\s*;*\s*)$/,mt=/^(.*)(^|\s+)(?:assert\s*\(\s*)(.*?)(?:\s*\)\s*;*\s*)$/,ht=/^(.*)(^|\s+)(?:assert\s*\(\s*\);*\s*)$/,gt=/^(.*)(^|\s+)(?:catch\s*\(\s*)(.*?)(?:\s*\)\s*;*\s*)$/,FF=/^\s*#include\s*</,aF=/^\s*#endinput\s*/,sF=/^\s*#pragma\s+dynamic\s+(\S+)\s*(\/\/.*|\/\*.*|)$/,kt=/^(.*)(^|\s+)(?:applog(|_ok|_warning|_alarm|_debug|_fatal)\s*\(\s*)(.*?)(?:\s*,\s*)(.*?)(?:\s*\)\s*;*\s*)$/,yt=/^(.*)(^|\s*)(?:applog(|_ok|_warning|_alarm|_debug|_fatal)\s*\(\s*)(.*?)(?:\s*\)\s*;*\s*)$/;function dt(t,e=""){let F=" ",i=t;return e.length?F={fatal:"\xA7",alarm:"!",warning:"?",debug:"~",ok:"$"}[e]||null:["!","?","~","$","\xA7"].includes(t.substring(1,1))&&(F=t.substring(1,1),i=`"${t.substring(2,t.length-1)}"`),{priority:`'${F}'`,code:i}}var wt=/^(.*)(^|\s+)(?:log(|_debug|_info|_warn|_error)\s*\(\s*)(.*?)(?:\s*\)\s*;*\s*)$/,_t=(a=>(a[a.debug=0]="debug",a[a.info=1]="info",a[a.warn=2]="warn",a[a.error=3]="error",a))(_t||{}),oF=/^(.*)(^|\s*)DDE_(state|result|aloha|volatile|setting|command)_/,vF=/^(.*)(^|\s*)onUplink(Restore|Apply)_(state|result|aloha|volatile|setting|command)/,EF=/^(.*)(^|\s*)onUplinkEvent/,BF=/(?:^|\s)(?:assert|catch|applog(?:_ok|_warning|_alarm|_debug|_fatal)?|log(?:_debug|_info|_warn|_error)?)\s*\(/,CF=/^\s*#callback\s+\w+\s*\(/;function jt(t){let e=0,F=!1,i="";for(let a=0;a<t.length;a++){let E=t[a];if(F){if(E==="\\"){a++;continue}E===i&&(F=!1);continue}if(E==='"'||E==="'"){F=!0,i=E;continue}E==="("?e++:E===")"&&e--}return e}function $t(t){return ut.test(t)||ht.test(t)||bt.test(t)||mt.test(t)||gt.test(t)||kt.test(t)||yt.test(t)||wt.test(t)}function fF(t,e,F){if(!(BF.test(F)||CF.test(F)))return null;let a=jt(F);if(a<=0)return null;let E=a,s=[t[e]],C=[F],l=e+1,d=100;for(;E>0&&l<t.length&&l-e<d;){let g=t[l],w=g.split("//",1)[0];s.push(g),C.push(w),E+=jt(w),l++}if(s.length<=1||E>0)return null;let u=s.map((g,w)=>w===0?g:g.trim()).join(" "),p=C.map((g,w)=>w===0?g:g.trim()).join(" ");return $t(p)?{joinedOriginal:u,joinedStripped:p,extraLineCount:s.length-1}:null}var CA=class{pragmaDynamic=null;dloFileSequencer=new BA;constructor(){}get pragmaDynamicFlag(){return this.pragmaDynamic?`-S${this.pragmaDynamic}`:null}preCompileDloFile(e,F,i,a,E){this.dloFileSequencer.workspacePath=e;let s=[],C=a.path,l=!1,d=pt.Utils.basename(a);if(C.includes(Y.filePaths.studio.auto.dlo.path)){let b=d.substring(0,d.length-8);!["app","main"].includes(b)&&d.endsWith("-dde.inc")&&(l=F0.generateHashForLibraryName(b))}else if(C.includes(Y.filePaths.studio.libdeps)){let b=C.split("libdeps/")[1],[k]=b.split("/");["dlo-core"].includes(k)||(l=F0.generateHashForLibraryName(k))}else O.isLibrary(i)&&(d.endsWith(".dlo")||C.includes("/dlo/examples/")||C.includes("/dlo/test/")?F.log("Skipping dde mangling for project file",d):l=F0.generateHashForLibraryName(i.name));if(C.endsWith(".auto/default.inc"))return{data:E.join(`
|
|
1655
|
+
`),diagnostics:s};let u=[],p=this.dloFileSequencer.getSequenceForFile(C);u.push(`stock static __file{} = "${p}";`),u.push(`stock static __refid{} = "${p}";`),u.push('stock static __applog_src_id{} = "A\\0\\0\\0\\0\\0\\0\\0";'),u.push("#line 0");let w=0;for(let b=0;b<E.length;b++){let k=E[b],_=k.split("//",1)[0],q=null,N=0;if(!$t(_)){let S=fF(E,b,_);S&&(k=S.joinedOriginal,_=S.joinedStripped,N=S.extraLineCount)}if(q=AF.exec(_))k="// "+k,s.push({file:a,level:"error",line:b,message:"#options is not supported here. Use the DLO settings instead."});else if(q=rF.exec(_))k="// "+k,s.push({file:a,level:"error",line:b,message:"#preinclude is not supported here. Use the DLO settings instead."});else if(q=sF.exec(_)){let S=Number(q[1].startsWith("(")?q[1].substring(1,q[1].length-1):q[1]);!Number.isInteger(S)||S<64?s.push({file:a,level:"error",line:b,message:"#pragma dynamic only supports integer values and must be greater than 63"}):(!this.pragmaDynamic||S>this.pragmaDynamic)&&(this.pragmaDynamic=S)}else if(q=eF.exec(_))k=k.replace("#ifdef ","#if defined ");else if(q=tF.exec(_))k=k.replace("#ifndef ","#if !defined ");else if(q=nF.exec(_))k=k.replace("#elseifdef ","#elseif defined ");else if(q=iF.exec(_))k=k.replace("#elseifndef ","#elseif !defined ");else if(q=ut.exec(_)){let[,S,V,L,y]=q;k=`${S}#define ${V} _catch_funcidx( "___${V}")
|
|
1656
|
+
forward ___${V}( ${L});
|
|
1657
1657
|
#line
|
|
1658
1658
|
${w}
|
|
1659
|
-
public ___${
|
|
1660
|
-
`),diagnostics:
|
|
1661
|
-
`)}}var KA;(l=>{l.createPawnCC=JA,l.createPawnDbg=Vt,l.FileSequencer=BA,l.PreCompiler=CA,l.Compiler=DA,l.uriToMemFs=
|
|
1662
|
-
`),N=JSON.stringify(
|
|
1663
|
-
`:"");try{await E.writeFile(l,N)}catch(M){return C.warn(`Could not write "${d}/package.json": ${M}`),!1}return!0}i.normalizePartPackageJson=e;async function F(s,E,a,C){for(let l of i.PART_DIST_PATHS){let d=we.Utils.joinPath(s,l);await e(d,E,a,C)}}i.normalizeLibraryParts=F})(lA||={});async function JF(t,e,F,i){try{let s=await t.readFile(e),E=i0.convertBlobToString(s),a=JSON.parse(E);return{raw:E,pkg:a}}catch(s){return i.warn(`Could not read/parse "${F}/package.json": ${s}`),null}}function KF(t,e,F,i){t.name!==void 0&&t.name!==e.name&&i.warn(`"${F}/package.json" name "${t.name}" does not match library name "${e.name}".`)}function VF(t,e){if(t.version===e)return{pkg:t,changed:!1,oldVersion:t.version};let F=t.version;if(t.version===void 0&&Object.hasOwn(t,"name")){let{name:i,...s}=t;t={name:i,version:e,...s}}else t.version=e;return{pkg:t,changed:!0,oldVersion:F}}function WF(t,e,F,i){let s=!1;for(let E of HF){let a=t[E];if(!a)continue;let C=!1;for(let l of Object.keys(a)){if(!e.has(l))continue;let d=a[l];if(typeof d!="string"||d.startsWith("npm:")||d.includes("://")){i.warn(`Left "${l}" in ${E} of ${F}/package.json untouched - its value "${d}" does not look like a Studio library reference.`);continue}delete a[l],C=!0,s=!0,i.warn(`Removed "${l}" from ${E} of ${F}/package.json - Studio libraries must be declared in studio.json "libraryDependencies" (npm ranges never match prereleases across minor versions).`)}C&&Object.keys(a).length===0&&delete t[E]}return s}function XF(t){let e=[...Object.keys(t.libraryDependencies||{}),...Object.keys(t.libraryDevDependencies||{})];return new Set(e.map(F=>F.split("/")[1]))}function YF(t){let e=t.path.replace(/\\/g,"/");for(let F of lA.PART_DIST_PATHS)if(e===F||e.endsWith(`/${F}`))return F;return e}function ZF(t){let e=t.match(/^\{\r?\n([ \t]+)/);return e?e[1].startsWith(" ")?" ":e[1]:zF}var WA=require("@gera2ld/tarjs"),tn=i0.convertBlobToString,_e=require("pako"),X0;(p=>{class t extends Error{_mergedDiagnostics;constructor(w,b){super(w),this.name="BuildError",this._mergedDiagnostics=b}get mergedDiagnostics(){return this._mergedDiagnostics}}p.BuildError=t;async function e(k,w,b,y,$,P=!0,N){P=QF(b,P),await xs(k,w,b,y,$,P);try{let g=await M0.read(k,w,b);await As(k,w,b,g)}catch(g){b.warn("Could not generate defines.ts:",g)}let M={[F0.Part.dde]:[],[F0.Part.dlo]:[],[F0.Part.dfiles]:[]},W={[F0.Part.dde]:rs,[F0.Part.dlo]:es,[F0.Part.dfiles]:ts};try{for(let g of[F0.Part.dde,F0.Part.dlo,F0.Part.dfiles])if(P.includes(g)&&(b.info(`Building ${g.toUpperCase()}...`),await ss(b,g,W[g],M[g],k,w)))return M}catch(g){throw N?new t(g?.message,M):g}return P.includes(F0.Part.pov)?await jr.tryBuildPov(k,w,b):b.info("Skipping pov build"),P.includes(F0.Part.blo)?await jr.tryBuildBlo(k,w,b):b.info("Skipping blo build"),await ns(k,w,b),await is(k,w,b),b.done("Project build completed."),M}p.buildAll=e;async function F(k,w,b,y,$,P,N){let M=await R.read(k,w);return R.isLibrary(M)?(b.info("Library project detected. Publishing library..."),E(k,w,b,$,y)):(b.info("App project detected. Publishing app..."),s(k,w,b,$,P,N,y))}p.release=F;async function i(k,w,b,y,$,P){let N=await R.read(k,w),M=`${N.name}-${N.version}.tar.gz`,W=null;if(R.isLibrary(N))b.info("Library project detected. Packing library..."),W=await nn(k,w,b,$,y);else{b.info("App project detected. Packing app...");let _=await Fn(k,w,b,$,P,y);W=await os(_)}let g=tA.Utils.joinPath(k,M);W!==null?(await w.writeFile(g,W),b.done(`Packaged: ${g.fsPath}`)):b.error(`Could not create archive: ${g.fsPath}`)}p.pack=i;async function s(k,w,b,y,$,P=null,N){if(!await F0.validateAccess(k,w,y,!1,N))throw new Error("Could not validate access to application");let W=await Fn(k,w,b,y,$,N);await F0.updateProfile(k,w,y,N);let g=await F0.publishTag(k,w,y,W,N);if(P!==null){let _=await R.read(k,w);await y0.updateExistingApplicationVersion(y,_.publisher,_.registry?.id,_.version,{allowedBackends:P},N),b.info(`Tag "${g.version}" with phase "${g.phase}" shared with ${[...P].join(";")}!`)}b.done(`Tag "${g.version}" with phase "${g.phase}" published!`)}p.releaseAPM=s;async function E(k,w,b,y,$){let P=await R.read(k,w),N=await nn(k,w,b,y,$);await eA.publishPackage(y,P,N,$),b.done(`Library "${P.publisher}/${P.name}" with version "${P.version}" published!`)}p.releaseLibrary=E;async function a(k,w,b,y,$,P,N,M=null){if(P==="*"){let I=await R.read(k,w);P=`${I.name}-${I.version}.tar.gz`,b.info(`Publishing detected archive package "${P}"...`)}let W=tA.Utils.joinPath(k,P);if(!await w.stat(W))throw new Error(`Archive package not found: ${W.fsPath}`);let g=await w.readFile(W),_=await vs(g),{publisher:G,registry:U,version:J}=_;R.isLibrary(_)?(await eA.publishPackage(y,_,g,$),b.done(`Library "${G}/${_.name}" with version "${_.version}" published!`)):(await y0.updateApplicationFile(y,G,U.id,J,"app.tar.gz",g,$),await y0.updateExistingApplicationVersion(y,G,U?.id,J,{allowedBackends:M||void 0,phase:N||void 0},$),b.info(`Tag "${J}" with phase "${N}" shared with ${[...M||""].join(";")}!`),b.done(`Tag "${J}" with phase "${N}" published!`))}p.publishArchive=a;async function C(k,w,b){let y;try{y=await w.readFile(tA.Utils.joinPath(k,"README.md"))}catch{throw new Error('Could not find "README.md". "README.md" is required for publishing.')}if(tn(y)===X.readme(b))throw new Error('"README.md" matches the default template. Please write a brief project description.');return y}p.getReadmeFile=C;async function l(k,w){let b;try{b=await w.readFile(tA.Utils.joinPath(k,"CHANGELOG.md"))}catch{throw new Error('Could not find "CHANGELOG.md". "CHANGELOG.md" is required for publishing.')}if(tn(b)===X.changelog)throw new Error('"CHANGELOG.md" matches the default template.');return b}p.getChangelogFile=l;async function d(k,w,b,y){let $=await R.read(k,w),{name:P,publisher:N,description:M}=$,W=R.validateProjectName(P,R.isLibrary($));if(W)throw new Error(`name: ${W}`);let g=R.validateDescription(M);if(g)throw new Error(`description: ${g}`);let _=R.validatePublisherId(N)||await R.validatePublisherOnline(b,N,y);if(_)throw new Error(`publisher: ${_}`);if(!R.isLibrary($)&&(await R.validateApplicationIcon(k,w,$),R.validateEngineSettings($),R.isApp($)&&await R.isApmPartEnabled(k,w,F0.Part.dlo,$)&&(!$.dpid||!Object.values(R.DeviceProfiles).includes($.dpid))))throw new Error("dpid: The device profile is needed to compile a dlo")}p.validatePublishSettings=d;async function u(k,w){let b=_e.ungzip(k),y=await WA.TarReader.load(b),$={};for(let P of y.fileInfos)w.includes(P.name)&&($[P.name]=y.getFileBlob(P.name));return $}p.readFilesFromTarGz=u})(X0||={});function QF(t,e){let F=Object.values(F0.Part);return e===!0?(t.info("Building project..."),F):e===!1?[]:e}async function xs(t,e,F,i,s,E){E.includes(F0.Part.dde)&&await Ex.fetchPreviousHistoryJson(t,e,F,i,s)}async function As(t,e,F,i){i.defaultsOnly?(await M0.exportDefinesTs(t,e,i.defaultsOnly),F.log("Generated",X.filePaths.dist.definesTs,"(defaults only)"),await M0.exportDefinesTs(t,e,i,X.filePaths.dist.definesAppTs),F.log("Generated",X.filePaths.dist.definesAppTs,"(with app.ini overrides)")):(await M0.exportDefinesTs(t,e,i),F.log("Generated",X.filePaths.dist.definesTs))}async function rs(t,e,F){let i=await Ex.compileDDE(t,e,F);if(i.ddeJSON){await Ex.exportMyDatanetXML(t,e,F,i.ddeJSON);let s=await R.read(t,e);R.isLibrary(s)||await Ex.exportHistoryJson(t,e,F,i.ddeJSON),await Ex.exportOpenApi(t,e,F,i.ddeJSON),await R.isApmPartEnabled(t,e,F0.Part.dlo,s)&&(await Ex.exportAutoDloFiles(t,e,F,i.ddeJSON),await KA.exportDloConfig(t,e,F))}return i.diagnostics}async function es(t,e,F){let i=new DA(t,e,F),{diagnostics:s}=await i.compile(t,e);return s}async function ts(t,e,F){return await VA.process(t,e,F)}async function ns(t,e,F){let i=await R.read(t,e);R.isLibrary(i)&&await lA.normalizeLibraryParts(t,e,i,F)}async function is(t,e,F){let i=tA.Utils.joinPath(t,X.fileNames.reportTemplate);if(await e.stat(i)){let s=tA.Utils.joinPath(t,X.filePaths.dist.reportTemplate);await e.copy(i,s),F.log(`Copied "${X.fileNames.reportTemplate}" to dist folder.`)}}function Fs(t,e,F){e!==F0.Part.dlo&&as(t,F);let i=F.some(s=>s.level==="error");if(i){let s=`APM part "${e}" has errors. Aborted.`;throw new Error(s)}return i}async function ss(t,e,F,i,s,E){let a=await F(s,E,t);return i.push(...a),Fs(t,e,a)}function as(t,e){e.forEach(F=>{let i=F.startCharacter?`:${F.startCharacter+1}`:"",s=`${F.file.path}:${F.line+1}${i} - ${F.message}`;F.level==="error"?t.error(s):F.level==="warning"?t.warn(s):t.log(s)})}async function nn(t,e,F,i,s){let E=await R.read(t,e);return await R.validateBasicManifest(t,e,E),await X0.buildAll(t,e,F,s,i),await eA.createArchive(t,e)}async function Fn(t,e,F,i,s,E){if(!Object.values(F0.TagPhase).includes(s))throw new Error(`ReleasePhase: ${s} is not a valid release phase`);return await R.validateBasicManifest(t,e,null),await X0.buildAll(t,e,F,E,i),await F0.createTag(t,e,s)}async function os(t){let e=new WA.TarWriter;for(let[i,s]of t.entries())if(i==="tag"){let E=s;e.addFile(i,E)}else{let E=s;e.addFile(i,await E.arrayBuffer())}let F=await e.write();return _e.gzip(await F.arrayBuffer())}async function vs(t){let e=await Es(t,["studio.json","src/studio.json"]);if(!e)throw new Error('Could not find "studio.json" in archive');return JSON.parse(await e.text())}async function Es(t,e){let F=_e.ungzip(t),i=await WA.TarReader.load(F);for(let s of i.fileInfos)if(e.includes(s.name))return i.getFileBlob(s.name);return null}var Bs=i0.bufferToBase64;var F0;(u=>{let t;(N=>(N.alpha="alpha",N.beta="beta",N.rc="rc",N.release="release",N.stage="stage",N.passive="passive",N.withdrawn="withdrawn"))(t=u.TagPhase||={});let e;($=>($.dde="dde",$.dlo="dlo",$.pov="pov",$.blo="blo",$.dfiles="dfiles"))(e=u.Part||={});function F(p){let{description:k,name:w,pov:b,engines:y,blo:$,publisher:P,type:N}=p,M=N||R.ProjectTypes.app,W={name:w,abstract:k,author:P||"",pov_location:R.PovLocation.embedded,pov_details_lowlevel:!1,required_be:y?.backend,required_hwfw:y?.hwfw?.join(";"),required_productcode:y?.productId?.join(";"),blo_level:$?.accessLevel||R.BloAccessLevel.restricted,pip_id:""};return b&&b.details&&(W.pov_location=R.PovLocation.pure,W.pov_details_lowlevel=!!b.details.lowLevel),M==="addon"&&(W.required_hwfw=void 0,W.required_productcode=void 0,W.addon_max_sources=1,W.addon_max_per_site=p.maxInstancesPerSite),W}u.createBaseTagHeader=F;async function i(p,k,w){let b=await R.read(p,k),y=F(b),$={version:b.version,...y,phase:w};return await E(p,k,b,$)}u.createTag=i;async function s(p,k){let w=await R.read(p,k),y={...F(w),blo_autostart:!1};return E(p,k,w,y)}u.createDevTag=s;async function E(p,k,w,b){let y=new FormData;y.append("tag",JSON.stringify(b)),y.append(`src/${R.fileName}`,new Blob([await R.readAsBlob(p,k)]));let $=new Blob([await k.readFile(Px.Utils.joinPath(p,X.filePaths.dist.ddeXmlPath))]);if(y.append("bin/dde/xml",$),w.icon){let N=await k.readFile(Px.Utils.joinPath(p,w.icon)),M=Bs(N);y.append("previews/00.png",new Blob([`data:image/png;base64,${M}`]))}if(Object.hasOwn(b,"phase")){let N=await X0.getReadmeFile(p,k,b.name),M=await X0.getChangelogFile(p,k);y.append("previews/README.md",new Blob([N])),y.append("previews/CHANGELOG.md",new Blob([M]))}if(await R.isApmPartEnabled(p,k,"dlo")){let N=new Blob([await k.readFile(Px.Utils.joinPath(p,X.filePaths.dist.mainAmxPath))]);y.append("bin/dlo/amx",N)}if(await R.isApmPartEnabled(p,k,"pov",w)){await sn(p,k,y,X.filePaths.dist.povDetailsPath,"bin/pov/details");let N=new TextEncoder().encode('<!DOCTYPE html><html lang="en">');y.append("bin/pov/list/index.html",new Blob([N]))}let P=await k.findFiles(p,`${X.filePaths.dist.dfilesPath}/*`);for(let N of P){let M=new Blob([await k.readFile(N)]);y.append(`bin/dfiles/${Px.Utils.basename(N)}`,M)}return await R.isApmPartEnabled(p,k,"blo",w)&&await sn(p,k,y,X.filePaths.dist.bloPath,"bin/blo"),await Cs(p,k,y),y}u.createBuffer=E;async function a(p,k,w,b,y){let $=await R.read(p,k);b||await X0.validatePublishSettings(p,k,w,y);let{registry:P}=$,N=P?.id;if(!N&&!b&&(N=await C(p,k,w,$,y)),N){let{publisher:M}=$;if(!M)return null;try{return{id:N,...await y0.getExistingApplication(w,M,N,y)}}catch(W){if(W?.message==="Could not find given application")return N=await C(p,k,w,$,y),{id:N,...await y0.getExistingApplication(w,M,N,y)}}}return null}u.validateAccess=a;async function C(p,k,w,b,y){let $="myDatanet",{publisher:P,name:N,description:M,registry:W}=b,g={id:W?.id,type:b.type||R.ProjectTypes.app,name:N,targetSystem:$,description:M||"",allowedBackends:null};R.isAddon(b)&&(g.allowedApplications=null);let _=await y0.createNewApplication(w,P,g,y);if(!_)throw new Error("Failed to initialize application");return b.registry={id:_},await R.write(p,k,b),_}u.registerNew=C;async function l(p,k,w,b){let{name:y,publisher:$,description:P,registry:N}=await R.read(p,k),M=N?.id;await y0.updateExistingApplication(w,$,M,{description:P,name:y,targetSystem:"myDatanet"},b)}u.updateProfile=l;async function d(p,k,w,b,y){let{publisher:$,registry:P,version:N}=await R.read(p,k);return await y0.publishApplicationVersion(w,$,P?.id,N,b,y)}u.publishTag=d})(F0||={});async function sn(t,e,F,i,s){let E=await e.findFiles(t,`${i}/**`);for(let a of E){let C=Px.Utils.joinPath(t,i),l=a.path.substring(C.path.length+1),d=new Blob([await e.readFile(Px.Utils.joinPath(t,`${i}/${l}`))]);F.append(`${s}/${l}`,d)}}async function Cs(t,e,F){let i=Px.Utils.joinPath(t,X.filePaths.dist.reportTemplate);if(await e.stat(i)){let E=new Blob([await e.readFile(i)]);F.append("bin/pov/mdn_report_template.json",E)}let s=Px.Utils.joinPath(t,X.filePaths.dist.historyJson);await e.stat(s)&&F.append("src/dde/history.json",new Blob([await e.readFile(s)]))}var Cn=require("deepmerge-ts"),fs=i0.isNumeric,an="52v007",on="53v001",Ds="54v001",ls="56v001",Bx={_manifest:null,_stat:null,_overwrites:null,get manifest(){return(0,Cn.deepmerge)(structuredClone(this._manifest),Bx._overwrites||{})},set manifest(t){this._manifest=t},set overwrites(t){this._overwrites=t},get stat(){return this._stat},set stat(t){this._stat=t},clear(){this._stat=null,this._manifest=null}},R;(z=>{let t=i0.convertBlobToString;z.fileName="studio.json";let F;(l0=>(l0.m22x="m22x",l0.m23x="m23x",l0.nrf91="nrf91",l0.m2blegw="m2blegw",l0.m2easyv3="m2easyv3",l0.m2easyiot="m2easyiot"))(F=z.DeviceProfiles||={});let i;(n0=>(n0.app="app",n0.library="library",n0.addon="addon",n0.analytics="analytics"))(i=z.ProjectTypes||={});let s;(r0=>(r0.restricted="restricted",r0.global="global"))(s=z.BloAccessLevel||={});let E;(r0=>(r0.embedded="$embedded",r0.pure="$pure"))(E=z.PovLocation||={});function a(T){Bx.overwrites=T}z.setOverwrites=a;function C(){Bx.overwrites=null}z.clearOverwrites=C;async function l(T,Q){let r0=cA.Utils.joinPath(T,z.fileName),t0=await Q.stat(r0);if(Bx.manifest===null||r0?.fsPath!==Bx.stat?.path.fsPath||t0?.ctime!==Bx.stat?.ctime||t0?.mtime!==Bx.stat?.mtime||t0?.size!==Bx.stat?.size){let n0=await Q.readFile(r0),f0=t(n0);Bx.manifest=JSON.parse(f0),Bx.stat={...t0,path:r0}}return Bx.manifest}z.read=l;async function d(T,Q){return await Q.readFile(cA.Utils.joinPath(T,z.fileName))}z.readAsBlob=d;async function u(T,Q){let r0=cA.Utils.joinPath(T,z.fileName),t0=await Q.readFile(r0),n0=t(t0);return JSON.parse(n0)}z.readRaw=u;async function p(T,Q,r0){return Bx.clear(),ms(r0),Q.writeFile(cA.Utils.joinPath(T,z.fileName),JSON.stringify(r0,null," "))}z.write=p;function k(T){return T.library!==void 0?T.library:T.type==="library"}z.isLibrary=k;function w(T){return T.type==="addon"}z.isAddon=w;function b(T){return T.type===void 0&&!k(T)?!0:T.type==="app"}z.isApp=b;function y(T){return T.type===void 0?!0:T.type==="app"}z.isIotApp=y;function $(T){return T.type==="analytics"}z.isAnalytics=$;async function P(T,Q,r0){r0||(r0=await l(T,Q)),bs(r0),cs(r0),ds(r0),us(r0)}z.validateBasicManifest=P;function N(T){let Q="Library name can only contain 'a' through 'z', '0' through '9', '_' and '-'. The Library name must start with an alphabetic or numeric character.";if(T.match(/^[a-z0-9-_]+$/)){let t0=["-","_"];if(t0.includes(T[0])||t0.includes(T[T.length-1]))return Q}else return Q;return T.length<3||T.length>20?"The library name is beyond permissible length of 20 characters.":null}z.validateLibraryName=N;function M(T,Q){if(Q)return N(T);{let r0="Project name can only contain 'A' through 'Z', 'a' through 'z', '0' through '9', ' ', '_' and '-'. The Project name must start with an alphabetic or numeric character.";if(!T.match(/^([a-zA-Z0-9 _-]+)$/))return r0;if(T.length<3||T.length>40)return"The project name is beyond permissible length of 40 characters.";let n0=["-","_"," "];return n0.includes(T[0])||n0.includes(T[T.length-1])?r0:null}}z.validateProjectName=M;function W(T){return T.length<5?"The description must have at least 5 characters.":null}z.validateDescription=W;function g(T){if(!T)return"No publisher set yet";let Q="Publisher can only contain 'A' through 'Z', 'a' through 'z', '0' through '9' and '-'. The Publisher start with an alphabetic or numeric character.";if(T.match(/^[a-zA-Z0-9-]+$/)){let t0=["_"];if(t0.includes(T[0])||t0.includes(T[T.length-1]))return Q}else return Q;return null}z.validatePublisherId=g;async function _(T,Q,r0){return await y0.getPublisher(T,Q,r0)?null:`Publisher '${Q}' does not exist.`}z.validatePublisherOnline=_;let G=/^(((?!-))(xn--)?[a-z0-9\-_]{0,61}[a-z0-9]{1,1}\.)*(xn--)?([a-z0-9-]{1,61}|[a-z0-9-]{1,30})\.[a-z]{2,}$/;async function U(T){if(T===void 0)return"Allowed backends not specified yet";if(T===null)return null;if(Array.isArray(T)||T?.includes(";")){let Q=T?.includes(";")?T.split(";"):T;for(let r0 of Q)if(!r0.match(G))return`Domain "${r0}" is invalid`}else if(!T?.match(G)&&T!=="*")return'Invalid value for "allowedBackends"';return null}z.validateRegistryAllowedBackends=U;let J=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}$/i;async function I(T){if(T===void 0)return"Allowed applications not specified yet";if(T===null)return null;if(Array.isArray(T)||T?.includes(";")){let Q=T?.includes(";")?T.split(";"):T;for(let r0 of Q)if(!r0.match(J))return`Application id "${r0}" is invalid`}else if(!T?.match(J)&&T!=="*")return'Invalid value for "allowedApplications"';return null}z.validateRegistryAllowedApplications=I;async function H(T,Q,r0){let t0=r0.icon;if(!t0)throw new Error("App icon is required for publishing an application!");let n0=cA.Utils.joinPath(T,t0);if(!await Q.stat(n0))throw new Error(`Could not load icon "${t0}"`);let l0=await Q.readFile(n0),L0=(0,vn.imageDimensionsFromData)(l0);if(!L0)throw new Error("App icon could not be validated!");if(L0?.width!==L0?.height)throw new Error("App icon has to be a square!");if(L0.width>512||L0.width<75)throw new Error("App icon size should be between 75px and 512px!");if(!(0,En.isPNG)(l0))throw new Error("App icon has to be of type PNG!")}z.validateApplicationIcon=H;function K(T){let{engines:Q}=T;if(Q?.backend&&!Q.backend.match(/(^[5-9][2-9]|[6-9]\d+|\d{3,})v(0(0[0-9]|[1-9]\d)|[1-9]\d{2}|[1-9]\d{3,})$/))throw new Error('Setting "engines.backend" is invalid');js(T),ps(T)}z.validateEngineSettings=K;async function Y(T,Q,r0,t0){t0||(t0=await z.read(T,Q));let n0=z.isAddon(t0),f0=z.isAnalytics(t0);switch(r0){case F0.Part.dlo:return!!t0?.dlo?.mainFile&&!n0&&!f0;case F0.Part.blo:return!!(t0.blo?.buildCommand&&t0.blo?.workingPath);case F0.Part.pov:return!!(t0.pov?.details?.buildCommand&&t0.pov.details.workingPath);case F0.Part.dde:case F0.Part.dfiles:return!0;default:return!1}}z.isApmPartEnabled=Y})(R||={});function cs(t){let{pov:e}=t;if(e&&e.details){if(!Object.hasOwn(e.details,"buildCommand"))throw new Error('Setting "pov.details.buildCommand" missing!');if(!Object.hasOwn(e.details,"workingPath"))throw new Error('Setting "pov.details.workingPath" missing!')}}function ds(t){let{blo:e}=t;if(e){if(!Object.hasOwn(e,"buildCommand"))throw new Error('Setting "blo.buildCommand" missing!');if(!Object.hasOwn(e,"workingPath"))throw new Error('Setting "blo.workingPath" missing!');if(e.accessLevel&&!["restricted","global"].includes(e.accessLevel))throw new Error('Only "restricted" or "global" are allowed as value for "blo.accessLevel"!')}}function js(t){let{backend:e,productId:F,hwfw:i}=t.engines;if(R.isAddon(t)&&(F||i))throw new Error('For project type "addon", "engines.hwfw" or "engines.productId" is not allowed!"');if(e&&e>=an){if(i&&F)throw new Error('Only "engines.hwfw" or "engines.productId" is allowed!"')}else if(F)throw new Error(`"engines.productId" requires "engines.backend" to be "${an}"`)}function ps(t){if(!R.isAddon(t)&&!R.isAnalytics(t))return;let{backend:e}=t.engines,F=R.isAddon(t)?Ds:ls;if(!e||e<F)throw new Error(`Project type "${t.type}" requires "engines.backend" to be ">=${F}"`);if(t.dlo)throw new Error(`For project type "${t.type}", "dlo" is not supported!"`);if(t.dpid)throw new Error(`For project type "${t.type}", "dpid" is not supported!"`)}function us(t){let{maxInstancesPerSite:e}=t;if(e===void 0){if(R.isAddon(t))throw new Error('Property "maxInstancesPerSite" is required for addon projects!');return}if(!R.isAddon(t))throw new Error('Property "maxInstancesPerSite" is only allowed for addon projects!');if(!Number.isInteger(e))throw new Error('Property "maxInstancesPerSite" must be an integer!');if(e<1||e>100)throw new Error('Property "maxInstancesPerSite" must be between 1 and 100!')}function bs(t){if((t.engines?.backend||"00v000")>=on||R.isLibrary(t)){if(!Bn.default.valid(t.version))throw new Error(`From "engines.backend" version >= ${on} onwards "version" has to be a semantic version string!"`)}else if(!fs(t.version))throw new Error('"version" has to be a number!')}function ms(t){t.registry&&(delete t.registry.allowedBackends,delete t.registry.target)}var kx=z0(require("semver"));var ln=z0(require("node:child_process")),cn=require("minimatch");var hs=require("tinytar-fix"),gs=require("pako"),Jx=".studio/libdeps",XA="package.json",ks="package-lock.json",_0;(W=>{async function t(g,_=!1){let G=g.libraryDependencies||{};return _||Object.assign(G,g.libraryDevDependencies||{}),G}W.getAll=t;function e(g){return g.split("/")[1]}W.dependencyIdToName=e;function F(g,_){let G=e(_);return S0.Utils.joinPath(g,Jx,G)}W.dependencyToPath=F;function i(g){return isNaN(g.split("")[0])?g.substring(1):g}W.rangeToVersion=i;function s(g,_,G){if(!kx.satisfies(_,G,{includePrerelease:!0}))throw new Error(`${g}, version ${_} does not satisfy required constraint ${G}`)}W.satisfiesSemverRange=s;async function E(g,_,G={},U=!1){let J=await R.read(g,_),I=J.libraryDependencies||{};U&&Object.assign(I,J.libraryDevDependencies);let H=Object.keys(G);for(let K of H)if(Object.hasOwn(I,K)){let Y=G[K],z=I[K],T=i(Y),Q=i(z),r0=kx.compare(T,Q);r0===1?(I[K]=Y,s(K,T,z)):r0===-1&&(I[K]=z,s(K,Q,Y))}else I[K]=G[K];return I}W.validateDependencyTree=E;async function a(g,_,G,U,J){let I=i(J),H=S0.Utils.joinPath(g,Jx,U);try{let K=await R.read(H,_);return kx.gte(K.version,I)&&K.publisher.toLowerCase()===G.toLowerCase()}catch{return!1}}W.isDependencyInstalled=a;async function C(g,_,G,U){let J=S0.Utils.joinPath(g,Jx,U);await _.rm(J).catch(I=>{G.error("removeExisting",I)})}W.removeExisting=C;async function l(g,_,G,U,J){let I=hs.untar(gs.ungzip(J));await C(g,_,G,U);for(let H of I.values())try{let K=S0.Utils.joinPath(g,Jx,U,H.name);await _.writeFile(K,H.data)}catch(K){G.error("Extracting lib",K)}}W.extractLibraryContent=l;async function d(g,_,G,U,J,I,H,K=!1){let[Y,z]=I.split("/");if(H&&await a(g,_,Y,z,H))return;await C(g,_,G,z);let T=await y0.getLibraryProfile(J,Y,z,U),Q=H?T.versions?.find(Q0=>kx.eq(Q0.name,W.rangeToVersion(H))):T.versions[0];if(!Q)throw new Error(`Library ${I} with version ${H} does not exist!`);let r0=Q.files.find(Q0=>Q0.name==="studio.json"),n0=(await ys(J,r0.downloadUrl)).libraryDependencies||{},f0={...n0};f0[I]=`^${Q.name}`,await E(g,_,f0,K);for(let[Q0,Gx]of Object.entries(n0))await d(g,_,G,U,J,Q0,Gx,K);let l0=Q.files.find(Q0=>Q0.name==="library.tar.gz");if(!l0)throw new Error(`Library ${I} has no content!`);let L0=await y0.fetchCustomContent(J,l0.downloadUrl);await l(g,_,G,z,L0),await N(g,_,G,z,K);let K0=await R.read(g,_),Nx=K0.libraryDependencies||{},Lx=K0.libraryDevDependencies||{},Kx=K?Lx:Nx;Kx[I]=`^${Q.name}`,K0.libraryDependencies=Nx,K0.libraryDevDependencies=Lx,await R.write(g,_,K0)}W.installDependency=d;async function u(g,_,G,U,J){let I=await R.read(g,_),H=I.libraryDependencies||{},K=I.libraryDevDependencies||{},Y=Object.assign(H,K);for(let[z,T]of Object.entries(Y)){let Q=Object.hasOwn(K,z);await d(g,_,G,U,J,z,T,Q)}for(let[z]of Object.entries(Y)){let T=e(z),Q=Object.hasOwn(K,z);await N(g,_,G,T,Q)}G.done(`Installed ${Object.entries(Y).length} dependencies`)}W.installDependencies=u;async function p(g,_,G,U,J){let I=await R.read(g,_),H=I.libraryDependencies||{},K=I.libraryDevDependencies||{},Y=Object.assign(H,K),z=`${U}/${J}`;delete Y[z];let T=await ws(g,_,Y);if(!Object.hasOwn(T,z))await M(g,_,G,J),await C(g,_,G,J),delete K[z],delete H[z],await R.write(g,_,I);else throw new Error(`Library '${J}' not removed. This library is a dependency of other libraries.`)}W.uninstallDependency=p;async function k(g,_){try{let U=(await dn(S0.Utils.joinPath(g,XA),_)).workspaces;if(Array.isArray(U)&&U.every(I=>typeof I=="string")&&U.length>0)return U;let J=U?.packages;return Array.isArray(J)&&J.every(I=>typeof I=="string")&&J.length>0?J:null}catch{return null}}W.readNpmWorkspacePatterns=k;function w(g,_){let G=J=>J.replace(/\\/g,"/").replace(/^\.\//,"").replace(/\/$/,""),U=G(g);return _.some(J=>{let I=G(J);return I===U||(0,cn.minimatch)(U,I)})}W.isPathInWorkspaces=w;function b(g,_){if(!_)return{rootInstall:!1,partInstalls:g.map(J=>J.workingPath)};let G=[],U=!1;for(let J of g)w(J.workingPath,_)?U=!0:G.push(J.workingPath);return{rootInstall:U,partInstalls:G}}W.planNpmInstalls=b;async function y(g,_,G){let U=await R.read(g,_),J=new Set([...Object.keys(U.libraryDependencies||{}),...Object.keys(U.libraryDevDependencies||{})].map(e)),I=new Set,H=[...J];for(;H.length>0;){let K=H.shift();if(I.has(K))continue;I.add(K);let Y=S0.Utils.joinPath(g,Jx,K);try{let z=S0.Utils.joinPath(Y,R.fileName);if(!await _.stat(z))continue;let T=await R.readRaw(Y,_);await lA.normalizeLibraryParts(Y,_,T,G),H.push(...[...Object.keys(T.libraryDependencies||{}),...Object.keys(T.libraryDevDependencies||{})].map(e))}catch(z){G.warn(`Could not normalize library parts for "${K}": ${z}`)}}}W.normalizeInstalledLibraryParts=y;async function $(g,_,G){await y(g,_,G);let U=await R.read(g,_),J=[];U.pov?.details?.workingPath&&J.push({name:"pov",workingPath:U.pov.details.workingPath}),U.blo?.workingPath&&J.push({name:"blo",workingPath:U.blo.workingPath});let I=[];for(let z of J){let T=S0.Utils.joinPath(g,z.workingPath),Q=S0.Utils.joinPath(T,XA);await _.stat(Q)&&I.push(z)}if(I.length===0)return;let H=await k(g,_),{rootInstall:K,partInstalls:Y}=b(I,H);if(K){let z=I.filter(T=>!Y.includes(T.workingPath)).map(T=>T.workingPath).join(", ");G.info(`npm workspaces detected in root package.json - installing dependencies once at the project root (${z}) using 'npm install' (an in-sync package-lock.json is installed as-is and left unchanged)`),await ur(g,"npm install --no-audit --no-fund",G)}for(let z of I){if(!Y.includes(z.workingPath))continue;H?G.warn(`${z.workingPath} (${z.name}) is not covered by any workspace pattern in the root package.json - installing it separately.`):G.info(`Installing npm dependencies for ${z.name} (${z.workingPath})...`);let T=S0.Utils.joinPath(g,z.workingPath);await qs(T,_,G)}}W.installNpmInApmParts=$;async function P(g,_,G){let U=await R.read(g,_),J=await t(U),I=[],H=X.filePaths[G].path,K=G===F0.Part.dlo?"inc":"dfiles";for(let Y in J){let z=W.dependencyToPath(g,Y),T=W.dependencyIdToName(Y),Q=S0.Utils.joinPath(z,H,`${T}.${K}`);await _.stat(Q)&&I.push({name:T,path:Q})}if(R.isLibrary(U)){let Y=S0.Utils.joinPath(g,H,`${U.name}.${K}`);await _.stat(Y)&&I.push({name:U.name,path:Y})}return I}W.getApmPartDependencies=P;async function N(g,_,G,U,J){let I=await R.read(g,_),H=[{partName:"blo",partDistPath:"blo",workingPath:I.blo?.workingPath},{partName:"pov",partDistPath:"pov/details",workingPath:I.pov?.details?.workingPath}];for(let{partName:K,partDistPath:Y,workingPath:z}of H){if(!z)continue;let T=S0.Utils.joinPath(g,Jx,U,"dist",...Y.split("/"),XA);if(await _.stat(T))try{let r0=await fn(g,_,z),t0=J?"devDependencies":"dependencies";r0[t0]=r0[t0]||{};let n0=z.split("/").length,f0=Array(n0).fill("..").join("/");r0[t0][U]=`file:${f0}/${Jx}/${U}/dist/${Y}`,await Dn(g,_,z,r0),G.info(`Linked ${U} to ${K} (${z})`)}catch(r0){G.warn(`Could not link ${U} to ${K}: ${r0}`)}}}W.linkLibraryApmParts=N;async function M(g,_,G,U){let J=await R.read(g,_),I=[{partName:"blo",workingPath:J.blo?.workingPath},{partName:"pov",workingPath:J.pov?.details?.workingPath}];for(let{partName:H,workingPath:K}of I)if(K)try{let Y=await fn(g,_,K),z=!1;Y.dependencies?.[U]?.startsWith("file:")&&(delete Y.dependencies[U],z=!0),Y.devDependencies?.[U]?.startsWith("file:")&&(delete Y.devDependencies[U],z=!0),z&&(await Dn(g,_,K,Y),G.info(`Unlinked ${U} from ${H}`))}catch(Y){G.warn(`Could not unlink ${U} from ${H}: ${Y}`)}}W.unlinkLibraryApmParts=M})(_0||={});async function dn(t,e){let F=await e.readFile(t);return JSON.parse(i0.convertBlobToString(F))}function fn(t,e,F){return dn(S0.Utils.joinPath(t,F,XA),e)}async function Dn(t,e,F,i){let s=S0.Utils.joinPath(t,F,XA),E=JSON.stringify(i,null," ")+`
|
|
1664
|
-
`;await e.writeFile(
|
|
1665
|
-
${
|
|
1666
|
-
${C}`));return}i()})})}async function
|
|
1659
|
+
public ___${V}( ${L})${y}`}else if(q=ht.exec(_)){let[,S,V]=q;k=`${S}${V}{_log_string="";_assert(__refid,__line);}`}else if(q=bt.exec(_)){let[,S,V,L,y]=q;k=`${S}${V}{ if (!(${L})) { sprintf(_log_string,_,${y.replace(/%%/g,"\xFF")});_assert(__refid,__line); }}`}else if(q=mt.exec(_)){let[,S,V,L]=q;k=`${S}${V}{ if (!(${L})) { _log_string="";_assert(__refid,__line); }}`}else if(q=gt.exec(_)){let[,S,V,L]=q;k=`${S}${V}_catch(__refid,__line,${L});`}else if(q=kt.exec(_)){let[,S,V,L,y,P]=q,{priority:H,code:U}=dt(y,L.substring(1));H!==null&&(k=`${S}${V}{new params_str{DDE_APPLOG_SIZE_PARAMS};sprintf(params_str,_,${P});DDE_applog_write(${H}, ${U}, params_str, __applog_src_id);}`)}else if(q=yt.exec(_)){let[,S,V,L,y]=q,{priority:P,code:H}=dt(y,L.substring(1));P!==null&&(k=`${S}${V}DDE_applog_write(${P}, ${H}, "", __applog_src_id);`)}else if(q=wt.exec(_)){let[,S,V,L,y]=q,P=L.substring(1),H=_t[P];k=`${S}${V}{ if(_log_level <= ${H}){ sprintf(_log_string,_,${y.replace(/%%/g,"\xFF")}); _log${L}(__refid,__line); }}`}else(q=FF.exec(_))&&!C.includes(Y.filePaths.studio.auto.path)?(C.includes(Y.filePaths.studio.libdeps)||s.push({file:a,level:"warning",line:b,message:"Libraries are included automatically - remove this #include line"}),k="// Libraries are included automatically! - "+_):(q=aF.exec(_))&&(s.push({file:a,level:"error",line:b,message:"#endinput is not supported - use #if/#endif instead"}),k=_);l&&!i.legacyProject&&(oF.exec(_)&&(k=k.replaceAll("DDE_",`_${l}`)),vF.exec(_)&&(k=k.replace("onUplink",`_${l}`)),EF.exec(_)&&(k=k.replace("onUplink",`_${l}Uplink`))),u.push(k),w++;for(let S=0;S<N;S++)u.push(""),w++,b++}if(d!=="main.dlo"){let b=d.split(".")[0].replace(/[^a-zA-Z0-9]/g,"_"),k=`_inc_${b}`.substring(0,31),_=`_inc_${b}_inc`.substring(0,31);u.push(`#if defined ${k}`),u.push(`#undef ${k}`),u.push("#endif"),u.push(`#if defined ${_}`),u.push(`#undef ${_}`),u.push("#endif")}return{data:u.join(`
|
|
1660
|
+
`),diagnostics:s}}};var gx=require("vscode-uri");var f0=J0(require("fs")),$0=require("vscode-uri");var Nt=J0(require("iconv-lite")),DF=F0.convertBlobToStringArray,Gt=16384,Tt=511,ue=Gt|Tt,lF=32768,cF=438,qt=lF|cF,dF=new CA,fA={};function It(){let t=[];for(let e of Object.keys(fA))t.push(...fA[e].diagnostics);return t}var dr=!!process.env.DLO_PROFILE,Px={precompileCount:0,cacheHits:0,precompileMs:0};function Mt(t){dr&&(t.log(`[DLO_PROFILE] precompile: ${Px.precompileCount} runs, ${Px.cacheHits} cache hits, ${Px.precompileMs.toFixed(1)}ms`),Px.precompileCount=0,Px.cacheHits=0,Px.precompileMs=0)}var be=(t,e,F,i)=>{let a={getattr(s){let C=$0.Utils.joinPath($0.URI.parse(s.mount.opts.root),t.getPath(s)),l=C.fsPath;if(!f0.existsSync(l))throw new t.ErrnoError(44);let d=Lt(e,i,F,C),u=f0.statSync(l),p=d?.length||u.size;return{mode:u.isDirectory()?ue:qt,size:p,atime:u.atime,mtime:u.mtime,ctime:u.ctime}},setattr(s,C){let l=$0.Utils.joinPath($0.URI.parse(s.mount.opts.root),t.getPath(s)).fsPath;if(!f0.existsSync(l))throw new t.ErrnoError(44);if(typeof C.size=="number"&&f0.truncateSync(l,C.size),typeof C.mode=="number"&&f0.chmodSync(l,C.mode),C.atime||C.mtime){let d=f0.statSync(l);f0.utimesSync(l,C.atime??d.atime,C.mtime??d.mtime)}},lookup(s,C){let d=$0.Utils.joinPath($0.URI.parse(s.mount.opts.root),t.getPath(s),C).fsPath;if(!f0.existsSync(d))throw new t.ErrnoError(44);let u=f0.statSync(d),p=t.createNode(s,C,u.isDirectory()?ue:qt,0);return p.node_ops=s.node_ops,p.stream_ops=s.stream_ops,p},readdir(s){let C=$0.Utils.joinPath($0.URI.parse(s.mount.opts.root),t.getPath(s)).fsPath;return[".","..",...f0.readdirSync(C)]},mknod(s,C,l,d){let u=$0.Utils.joinPath($0.URI.parse(s.mount.opts.root),t.getPath(s),C).fsPath;f0.writeFileSync(u,"");let p=t.createNode(s,C,l,d);return p.node_ops=s.node_ops,p.stream_ops=s.stream_ops,p},unlink(s,C){let l=$0.Utils.joinPath($0.URI.parse(s.mount.opts.root),t.getPath(s),C).fsPath;f0.unlinkSync(l)},mkdir(s,C,l){let d=$0.Utils.joinPath($0.URI.parse(s.mount.opts.root),t.getPath(s),C).fsPath;f0.mkdirSync(d,{mode:l});let u=t.createNode(s,C,l|ue,0);return u.node_ops=s.node_ops,u.stream_ops=s.stream_ops,u},rmdir(s,C){let l=$0.Utils.joinPath($0.URI.parse(s.mount.opts.root),t.getPath(s),C).fsPath;f0.rmdirSync(l)},rename(s,C,l){let d=$0.Utils.joinPath($0.URI.parse(s.mount.opts.root),t.getPath(s)).fsPath,u=$0.Utils.joinPath($0.URI.parse(C.mount.opts.root),t.getPath(C),l).fsPath;f0.renameSync(d,u)}},E={open(s){let C=$0.Utils.joinPath($0.URI.parse(s.node.mount.opts.root),t.getPath(s.node));s.modifiedContent=Lt(e,i,F,C),s.modifiedContent||(s.nfd=f0.openSync(C.fsPath,Pt(s.flags)))},close(s){s.nfd&&f0.closeSync(s.nfd)},read(s,C,l,d,u){if(!s.modifiedContent)return f0.readSync(s.nfd,C,l,d,u);let p=s.modifiedContent;if(u>=p.length)return 0;let g=p.length-u,w=Math.min(d,g);return jF(p,C,l,u,u+w),w},write(s,C,l,d,u){return f0.writeSync(s.nfd,C,l,d,u)},flagsToMode:Pt,llseek(s,C,l){let d=C;if(l===1)d+=s.position;else if(l===2){let u=f0.fstatSync(s.nfd);d+=u.size}if(d<0)throw new t.ErrnoError(28);return s.position=d,d}};return{mount(){let s=Lx(e),C=t.createNode(null,s,Gt|Tt,0);return C.node_ops=a,C.stream_ops=E,C},node_ops:a,stream_ops:E}};function Pt(t){let e=t&2097155;if(e===0)return"r";if(e===1)return"r+";if(e===65)return"w";if(e===577)return"w+";if(e===1089)return"a";if(e===1217)return"a+";throw new Error(`Unknown file open flags: ${t}`)}function jF(t,e,F,i,a){if(Buffer.isBuffer(t)&&Buffer.isBuffer(e))t.copy(e,F,i,a);else{let E=t.subarray(i,a);Buffer.isBuffer(e)?Uint8Array.prototype.set.call(e,E,F):e.set(E,F)}}function Lt(t,e,F,i){let a=i.fsPath;if(!a.endsWith(".dlo")&&!a.endsWith(".inc"))return;let E=pF(a);if(!E){delete fA[a];return}let s=fA[a];if(s&&s.mtimeMs===E.mtimeMs&&s.size===E.size)return dr&&Px.cacheHits++,s.buffer;let C=dr?performance.now():0,l=uF(t,e,F,i);return dr&&(Px.precompileCount++,Px.precompileMs+=performance.now()-C),fA[a]={buffer:l.buffer,mtimeMs:E.mtimeMs,size:E.size,diagnostics:l.diagnostics},fA[a].buffer}function pF(t){try{return f0.statSync(t)}catch{return null}}function uF(t,e,F,i){let a=f0.readFileSync(i.fsPath),E=DF(a),s=dF.preCompileDloFile(t,e,F,i,E);return{buffer:Nt.encode(s.data,"cp1252"),diagnostics:s.diagnostics}}function Lx(t){return t.fsPath.replace(/\\/g,"/")}function HA(t,e){let F=Lx(t);return Lx(e).replace(F,"")}var Kt=Jt(),JA=Kt.createPawnCC,Vt=Kt.createPawnDbg;var DA=class{constructor(e,F,i){this.cwd=e;this.fs=F;this.logger=i;this.dloCC=null}cwd;fs;logger;dloCC;stdout=[];stderr=[];async initDloCC(e=!1){this.stdout.length=0,this.stderr.length=0,this.dloCC=await JA({noExitRuntime:e,print:s=>{let C=me(this.cwd,s);this.logger.log(C?C.message:s),this.stdout.push(s)},printErr:s=>{let C=me(this.cwd,s);s.includes(": warning")?this.logger.warn(C?C.message:s):this.logger.error(C?C.message:s),this.stderr.push(s),this.stdout.push(s)}});let F=Lx(this.cwd),[i]=F.split("/"),a=this.dloCC.FS,E=await O.read(this.cwd,this.fs);a.filesystems.NODEFS_TS=be(a,this.cwd,E,this.logger),a.mkdir(i),a.mount(a.filesystems.NODEFS_TS,{root:"/"},i),a.chdir(Lx(this.cwd))}async compile(e,F){let i=await O.read(e,F);if(!await O.isApmPartEnabled(e,F,a0.Part.dlo,i))return this.logger.log("DLO not enabled. Skipped."),{code:0,stdout:[],stderr:[],diagnostics:[]};await this.initDloCC(),await F.mkdir(gx.Utils.joinPath(e,"dist/dlo"));let a=gx.Utils.joinPath(e,i.dlo?.mainFile||Y.filePaths.dlo.mainDLO),E=[],s=gx.Utils.joinPath(e,Y.filePaths.studio.auto.dlo.cfg),C=HA(e,s);E.push(`-T.${C}`);let l=0;try{let d=`.${HA(e,a)}`;l=await this.dloCC.callMain([d,...E])}catch(d){this.logger.error(d)}return{code:l,stdout:this.stdout,stderr:this.stderr,diagnostics:[...It(),...he(e,this.stderr,a)]}}async getDloSymbols(e,F){let i=F.map(u=>{let p=u.substring(0,2);return["-D","-e","-i","-o","-p","-r","-T"].includes(p)?`${p}.${u.substring(2)}`:u}),a=!!process.env.DLO_PROFILE,E=a?performance.now():0,{compiler:s,print:C}=await this.getSymbolCompiler(),l=a?performance.now()-E:0,d=a?performance.now():0;try{if(await s.callMain(["."+e,...i,"-R"]))return null}catch(u){if(u.stack?.startsWith("RuntimeError"))return null;throw u}finally{if(a){let u=performance.now()-d;this.logger.log(`[DLO_PROFILE] instantiate: ${l.toFixed(1)}ms, callMain: ${u.toFixed(1)}ms`),Mt(this.logger)}}return[...C.stdout,...C.stderr]}async getSymbolCompiler(){let e={stdout:[],stderr:[]},F=await JA({noExitRuntime:!1,print:C=>{e.stdout.push(C)},printErr:C=>{e.stderr.push(C)}}),i=Lx(this.cwd),[a]=i.split("/"),E=F.FS,s=await O.read(this.cwd,this.fs);return E.filesystems.NODEFS_TS=be(E,this.cwd,s,this.logger),E.mkdir(a),E.mount(E.filesystems.NODEFS_TS,{root:"/"},a),{compiler:F,print:e}}};function he(t,e,F){let i=[],a=e.filter(E=>!!E.trim());for(let E of a){if((E.includes("Assertion failed:")||E.includes("Compilation aborted."))&&F){i.push({file:F,level:"error",line:0,message:E});continue}let s=me(t,E);s&&i.push({file:gx.URI.parse(`file:///${s?.posixPath}`),level:s.level,line:Number(s.lineNumber)-1,message:s.msg})}return i}function me(t,e){let F=e.indexOf(" : "),i=e.indexOf(": ",F+3),a=e.substring(0,F).trim(),E=e.substring(F+3,i).trim(),s=e.substring(i+2).trim();if(!a||!E||!s)return null;let[C,l]=a.split(/[()(-)]/),d=E.split(" "),u=d[d.length-2],g=gx.Utils.joinPath(t,C).fsPath.replace(/\\/g,"/");g.startsWith("/")&&(g=g.substring(1));let w=e.replace(C,g);return{level:u,msg:s,posixPath:g,lineNumber:l,message:w}}async function Wt(t,e,F){let i=["-M","-v2"],a=gx.Utils.joinPath(t,Y.filePaths.studio.auto.dlo.defaultInc);i.push(`-p.${HA(t,a)}`);let E=await y0.getApmPartDependencies(t,e,a0.Part.dlo);for(let C of E){let l=gx.Utils.dirname(C.path);i.push(`-i.${HA(t,l)}`)}let s=F.dlo;return s&&i.push(...s.compileOptions),i.push("-o./dist/dlo/main.amx"),{path:gx.Utils.joinPath(t,Y.filePaths.studio.auto.dlo.cfg),data:i.join(`
|
|
1661
|
+
`)}}var KA;(l=>{l.createPawnCC=JA,l.createPawnDbg=Vt,l.FileSequencer=BA,l.PreCompiler=CA,l.Compiler=DA,l.uriToMemFs=Lx,l.parseCompilerWarningsAndErrors=he;async function C(d,u,p){let g=await O.read(d,u),w=await Wt(d,u,g);await u.writeFile(w.path,w.data),p.log("Generated",Y.filePaths.studio.auto.dlo.cfg)}l.exportDloConfig=C})(KA||={});var ge=require("vscode-uri");var Yt=J0(require("node:child_process"));var jr;(F=>{async function t(i,a,E){let s=await O.read(i,a);if(await O.isApmPartEnabled(i,a,a0.Part.pov)){E.info("Executing POV build script",s.pov?.details.buildCommand);let{buildCommand:C,workingPath:l}=s.pov.details,d=ge.Utils.joinPath(i,l);try{await Xt(d,C,E)}catch(u){throw u.code?new Error(`APM part '${a0.Part.pov}' has errors. Aborted.`):u}}}F.tryBuildPov=t;async function e(i,a,E){let s=await O.read(i,a);if(await O.isApmPartEnabled(i,a,a0.Part.blo,s)){E.info("Executing BLO build script",s.blo?.buildCommand);let{buildCommand:C,workingPath:l}=s.blo,d=ge.Utils.joinPath(i,l);try{await Xt(d,C,E)}catch(u){throw u.code?new Error(`APM part '${a0.Part.blo}' has errors. Aborted.`):u}}}F.tryBuildBlo=e})(jr||={});async function Xt(t,e,F){return new Promise((i,a)=>{Yt.exec(e,{cwd:t.fsPath,env:process.env},(E,s,C)=>{F.log(s),C&&F.error(C),E&&a(E),i(null)})})}var Qt=require("vscode-uri");var ye=require("minimatch");var xn=require("@gera2ld/tarjs"),TF=F0.convertBlobToString,IF=require("pako"),An=".studioignore",rn=[".vscodeignore","package-lock.json","npm-debug.log","yarn.lock","yarn-error.log","npm-shrinkwrap.json",".editorconfig",".npmrc",".yarnrc",".gitattributes","*.todo","tslint.yaml",".eslintrc*",".babelrc*",".prettierrc*",".cz-config.js",".commitlintrc*","webpack.config.js","ISSUE_TEMPLATE.md","CONTRIBUTING.md","PULL_REQUEST_TEMPLATE.md","CODE_OF_CONDUCT.md",".github",".travis.yml","appveyor.yml","**/.git","**/.git/**","**/*.vsix","**/.DS_Store","**/*.vsixmanifest","**/.vscode-test/**","**/.vscode-test-web/**"];rn.push("**/.studio/**","**/node_modules/**",An,"dist/defines.app.ts");var Zt={dot:!0},eA;(i=>{async function t(a,E){let s=new xn.TarWriter;(await e(a,E)).forEach(d=>{s.addFile(d.name,d.data)});let l=await s.write();return IF.gzip(await l.arrayBuffer())}i.createArchive=t;async function e(a,E){let s=[],{ignore:C,negate:l}=await MF(a,E),u=(await E.findFiles(a,"**/*")).filter(({path:p})=>{let g=p.slice(a.path.length+1);return!C.some(w=>(0,ye.minimatch)(g,w,Zt))||l.some(w=>(0,ye.minimatch)(g,w.slice(1),Zt))});for(let p of u){let g=p.path.slice(a.path.length+1),[w,b]=await Promise.all([E.stat(p),E.readFile(p)]);w&&s.push({name:g,data:b,modifyTime:new Date(w.mtime)})}return s}i.getFilesForArchive=e;async function F(a,E,s,C=R0.ENV.production){let{publisher:l,name:d,version:u}=E,p=await X0.readFilesFromTarGz(s,["CHANGELOG.md","README.md","studio.json"]),g={"CHANGELOG.md":await ke(p["CHANGELOG.md"]),"README.md":await ke(p["README.md"]),"studio.json":await ke(p["studio.json"]),"library.tar.gz":s};return await _0.publishLibraryVersion(a,l,d,u,g,C)}i.publishPackage=F})(eA||={});async function MF(t,e){let F=["!studio.json","!README.md"],a=(await SF(t,e)).split(/[\n\r]/).map(d=>d.trim()).filter(d=>!!d).filter(d=>!/^\s*#/.test(d)),E=[...a,...a.filter(d=>!/(^|\/)[^/]*\*[^/]*$/.test(d)).map(d=>/\/$/.test(d)?`${d}**`:`${d}/**`)],s=[...rn,...E,...F],[C,l]=s.reduce((d,u)=>/^\s*!/.test(u)?[d[0],[...d[1],u]]:[[...d[0],u],d[1]],[[],[]]);return{ignore:C,negate:l}}async function SF(t,e){let F=Qt.Utils.joinPath(t,An);if(await e.stat(F)){let a=await e.readFile(F);return TF(a)}else return""}async function ke(t){return new Uint8Array(await t.arrayBuffer())}var kx=require("vscode-uri");var Vx=require("yaml");var RF=F0.convertBlobToString,pr=F0.yamlRangeToLineInformation,VA;(s=>{let t;(u=>(u.static="static",u.dynamic="dynamic",u.appDynamic="app-dynamic"))(t=s.Type||={});let e;(p=>(p.crcStamp="crc_stamp",p.stampOnly="stamp_only",p.onlyDown="only_down",p.onlyUp="only_up"))(e=s.SyncLogic||={});let F;(u=>(u.down="down",u.up="up",u.off="off"))(F=s.Force||={});async function i(C,l,d){let{properties:u,diagnostics:p,libraryFiles:g}=await a(C,l),w=kx.Utils.joinPath(C,Y.filePaths.dist.dfilesPath);await l.stat(w)&&await l.rm(w);for(let[b,k]of Object.entries(u))await UF(C,l,b,k,g);return Object.keys(u).length&&(d.done(`${Object.keys(u).length} dfiles processed.`),await l.writeFile(kx.Utils.joinPath(C,Y.filePaths.dist.dfilesProperties),JSON.stringify(u,null," "))),p}s.process=i;async function a(C,l){let d=[],u={},p=await y0.getApmPartDependencies(C,l,a0.Part.dfiles);for(let b of p){let{properties:k,diagnostics:_}=await E(l,b.path,b.name);Object.assign(u,k),d.push(..._)}let{properties:g,diagnostics:w}=await E(l,kx.Utils.joinPath(C,Y.filePaths.dfiles.mainDFILES),null);return Object.assign(u,g),d.push(...w),{properties:u,diagnostics:d,libraryFiles:p}}s.parseDfile=a;async function E(C,l,d){let u=[],p={};if(!await C.stat(l))return{properties:p,diagnostics:u};let g=await C.readFile(l),w=RF(g),b=new Vx.LineCounter,_=(0,Vx.parseDocument)(w,{lineCounter:b}).contents||new Vx.YAMLMap;for(let q of _.items){let N=q.key.value,S=(0,Vx.isMap)(q.value)?q.value:null,V=pr(b,q.key.range),L=S?S.has("syncMode"):!1,y=L?S.get("syncMode"):"crc_stamp";if(L){let M=Object.values(s.SyncLogic);if(!M.includes(y)){let W=S.items.find(Z=>Z.key.value==="syncMode"),J=pr(b,W.key.range);u.push({file:l,code:"",message:`Property syncMode does not match any of "${M.join(", ")}"`,line:J.line,startCharacter:J.startCharacter,endCharacter:J.endCharacter,level:"error"})}}else u.push({file:l,code:"",message:'Property "syncMode" missing',line:V.line,startCharacter:V.startCharacter,endCharacter:V.endCharacter,level:"error"});let P=S?S.has("type"):!1,H=P?S.get("type"):"static";if(P){let M=Object.values(s.Type);if(!M.includes(H)){let W=S.items.find(Z=>Z.key.value==="type"),J=pr(b,W.key.range);u.push({file:l,code:"",message:`Property type does not match any of "${M.join(", ")}"`,line:J.line,startCharacter:J.startCharacter,endCharacter:J.endCharacter,level:"error"})}}N.match(/^[a-z0-9._-]*$/)||u.push({file:l,code:"",message:'Filename does not match pattern "a-z0-9._-"',line:V.line,startCharacter:V.startCharacter,endCharacter:V.endCharacter,level:"error"});let U=kx.Utils.joinPath(kx.Utils.dirname(l),N),I=await OF(C,U);if(I)p[N]={crc:I.crc,force:"off",readable:!1,size:I.size,stamp:I.stamp,sync_logic:y,type:H,library:d};else{let M=pr(b,q.key.range);u.push({file:l,code:"",message:`Could not find file "${N}"`,line:M.line,startCharacter:M.startCharacter,endCharacter:M.endCharacter,level:"error"})}}return{properties:p,diagnostics:u}}s.parseYamlFile=E})(VA||={});async function OF(t,e){let F=await t.stat(e);if(!F)return null;let i=await t.readFile(e);return{size:F.size,stamp:Math.trunc(F.ctime),crc:F0.generateCRC32ForFileContent(i)}}async function UF(t,e,F,i,a){let s=i.library!==null?kx.Utils.dirname(a.find(d=>d.name===i.library).path):kx.Utils.joinPath(t,Y.filePaths.dfiles.path),C=kx.Utils.joinPath(t,Y.filePaths.dist.dfilesPath,F),l=kx.Utils.joinPath(s,F);await e.copy(l,C)}var we=require("vscode-uri");var en=J0(require("semver")),HF="package.json",zF=["peerDependencies","dependencies","optionalDependencies"],JF=" ",lA;(i=>{i.PART_DIST_PATHS=[Y.filePaths.dist.bloPath,Y.filePaths.dist.povDetailsPath];async function e(a,E,s,C){let l=we.Utils.joinPath(a,HF),d=`${s.name}/${ZF(a)}`;if(!await E.stat(l))return!1;let p=await KF(E,l,d,C);if(!p)return!1;let g=p.pkg;if(typeof g!="object"||g===null||Array.isArray(g))return C.warn(`"${d}/package.json" does not contain a JSON object - skipped normalizing it.`),!1;if(!en.valid(s.version))return C.warn(`Library manifest version "${s.version}" is not a valid semantic version - skipped normalizing "${d}/package.json".`),!1;VF(g,s,d,C);let w=WF(g,s.version);g=w.pkg;let b=w.changed;b&&C.warn(`Patched version "${w.oldVersion??"<none>"}" -> "${s.version}" in "${d}/package.json" (studio.json is the source of truth).`);let k=YF(s);if(XF(g,k,d,C)&&(b=!0),!b)return!1;let _=QF(p.raw),q=p.raw.endsWith(`
|
|
1662
|
+
`),N=JSON.stringify(g,null,_)+(q?`
|
|
1663
|
+
`:"");try{await E.writeFile(l,N)}catch(S){return C.warn(`Could not write "${d}/package.json": ${S}`),!1}return!0}i.normalizePartPackageJson=e;async function F(a,E,s,C){for(let l of i.PART_DIST_PATHS){let d=we.Utils.joinPath(a,l);await e(d,E,s,C)}}i.normalizeLibraryParts=F})(lA||={});async function KF(t,e,F,i){try{let a=await t.readFile(e),E=F0.convertBlobToString(a),s=JSON.parse(E);return{raw:E,pkg:s}}catch(a){return i.warn(`Could not read/parse "${F}/package.json": ${a}`),null}}function VF(t,e,F,i){t.name!==void 0&&t.name!==e.name&&i.warn(`"${F}/package.json" name "${t.name}" does not match library name "${e.name}".`)}function WF(t,e){if(t.version===e)return{pkg:t,changed:!1,oldVersion:t.version};let F=t.version;if(t.version===void 0&&Object.hasOwn(t,"name")){let{name:i,...a}=t;t={name:i,version:e,...a}}else t.version=e;return{pkg:t,changed:!0,oldVersion:F}}function XF(t,e,F,i){let a=!1;for(let E of zF){let s=t[E];if(!s)continue;let C=!1;for(let l of Object.keys(s)){if(!e.has(l))continue;let d=s[l];if(typeof d!="string"||d.startsWith("npm:")||d.includes("://")){i.warn(`Left "${l}" in ${E} of ${F}/package.json untouched - its value "${d}" does not look like a Studio library reference.`);continue}delete s[l],C=!0,a=!0,i.warn(`Removed "${l}" from ${E} of ${F}/package.json - Studio libraries must be declared in studio.json "libraryDependencies" (npm ranges never match prereleases across minor versions).`)}C&&Object.keys(s).length===0&&delete t[E]}return a}function YF(t){let e=[...Object.keys(t.libraryDependencies||{}),...Object.keys(t.libraryDevDependencies||{})];return new Set(e.map(F=>F.split("/")[1]))}function ZF(t){let e=t.path.replace(/\\/g,"/");for(let F of lA.PART_DIST_PATHS)if(e===F||e.endsWith(`/${F}`))return F;return e}function QF(t){let e=t.match(/^\{\r?\n([ \t]+)/);return e?e[1].startsWith(" ")?" ":e[1]:JF}var WA=require("@gera2ld/tarjs"),tn=F0.convertBlobToString,_e=require("pako"),X0;(p=>{class t extends Error{_mergedDiagnostics;constructor(w,b){super(w),this.name="BuildError",this._mergedDiagnostics=b}get mergedDiagnostics(){return this._mergedDiagnostics}}p.BuildError=t;async function e(g,w,b,k,_,q=!0,N){q=xa(b,q),await Aa(g,w,b,k,_,q);try{let L=await R0.read(g,w,b);await ra(g,w,b,L)}catch(L){b.warn("Could not generate defines.ts:",L)}let S={[a0.Part.dde]:[],[a0.Part.dlo]:[],[a0.Part.dfiles]:[]},V={[a0.Part.dde]:ea,[a0.Part.dlo]:ta,[a0.Part.dfiles]:na};try{for(let L of[a0.Part.dde,a0.Part.dlo,a0.Part.dfiles])if(q.includes(L)&&(b.info(`Building ${L.toUpperCase()}...`),await sa(b,L,V[L],S[L],g,w)))return S}catch(L){throw N?new t(L?.message,S):L}return q.includes(a0.Part.pov)?await jr.tryBuildPov(g,w,b):b.info("Skipping pov build"),q.includes(a0.Part.blo)?await jr.tryBuildBlo(g,w,b):b.info("Skipping blo build"),await ia(g,w,b),await Fa(g,w,b),b.done("Project build completed."),S}p.buildAll=e;async function F(g,w,b,k,_,q,N){let S=await O.read(g,w);return O.isLibrary(S)?(b.info("Library project detected. Publishing library..."),E(g,w,b,_,k)):(b.info("App project detected. Publishing app..."),a(g,w,b,_,q,N,k))}p.release=F;async function i(g,w,b,k,_,q){let N=await O.read(g,w),S=`${N.name}-${N.version}.tar.gz`,V=null;if(O.isLibrary(N))b.info("Library project detected. Packing library..."),V=await nn(g,w,b,_,k);else{b.info("App project detected. Packing app...");let y=await Fn(g,w,b,_,q,k);V=await va(y)}let L=tA.Utils.joinPath(g,S);V!==null?(await w.writeFile(L,V),b.done(`Packaged: ${L.fsPath}`)):b.error(`Could not create archive: ${L.fsPath}`)}p.pack=i;async function a(g,w,b,k,_,q=null,N){if(!await a0.validateAccess(g,w,k,!1,N))throw new Error("Could not validate access to application");let V=await Fn(g,w,b,k,_,N);await a0.updateProfile(g,w,k,N);let L=await a0.publishTag(g,w,k,V,N);if(q!==null){let y=await O.read(g,w);await _0.updateExistingApplicationVersion(k,y.publisher,y.registry?.id,y.version,{allowedBackends:q},N),b.info(`Tag "${L.version}" with phase "${L.phase}" shared with ${[...q].join(";")}!`)}b.done(`Tag "${L.version}" with phase "${L.phase}" published!`)}p.releaseAPM=a;async function E(g,w,b,k,_){let q=await O.read(g,w),N=await nn(g,w,b,k,_);await eA.publishPackage(k,q,N,_),b.done(`Library "${q.publisher}/${q.name}" with version "${q.version}" published!`)}p.releaseLibrary=E;async function s(g,w,b,k,_,q,N,S=null){if(q==="*"){let I=await O.read(g,w);q=`${I.name}-${I.version}.tar.gz`,b.info(`Publishing detected archive package "${q}"...`)}let V=tA.Utils.joinPath(g,q);if(!await w.stat(V))throw new Error(`Archive package not found: ${V.fsPath}`);let L=await w.readFile(V),y=await Ea(L),{publisher:P,registry:H,version:U}=y;O.isLibrary(y)?(await eA.publishPackage(k,y,L,_),b.done(`Library "${P}/${y.name}" with version "${y.version}" published!`)):(await _0.updateApplicationFile(k,P,H.id,U,"app.tar.gz",L,_),await _0.updateExistingApplicationVersion(k,P,H?.id,U,{allowedBackends:S||void 0,phase:N||void 0},_),b.info(`Tag "${U}" with phase "${N}" shared with ${[...S||""].join(";")}!`),b.done(`Tag "${U}" with phase "${N}" published!`))}p.publishArchive=s;async function C(g,w,b){let k;try{k=await w.readFile(tA.Utils.joinPath(g,"README.md"))}catch{throw new Error('Could not find "README.md". "README.md" is required for publishing.')}if(tn(k)===Y.readme(b))throw new Error('"README.md" matches the default template. Please write a brief project description.');return k}p.getReadmeFile=C;async function l(g,w){let b;try{b=await w.readFile(tA.Utils.joinPath(g,"CHANGELOG.md"))}catch{throw new Error('Could not find "CHANGELOG.md". "CHANGELOG.md" is required for publishing.')}if(tn(b)===Y.changelog)throw new Error('"CHANGELOG.md" matches the default template.');return b}p.getChangelogFile=l;async function d(g,w,b,k){let _=await O.read(g,w),{name:q,publisher:N,description:S}=_,V=O.validateProjectName(q,O.isLibrary(_));if(V)throw new Error(`name: ${V}`);let L=O.validateDescription(S);if(L)throw new Error(`description: ${L}`);let y=O.validatePublisherId(N)||await O.validatePublisherOnline(b,N,k);if(y)throw new Error(`publisher: ${y}`);if(!O.isLibrary(_)&&(await O.validateApplicationIcon(g,w,_),O.validateEngineSettings(_),O.isApp(_)&&await O.isApmPartEnabled(g,w,a0.Part.dlo,_)&&(!_.dpid||!Object.values(O.DeviceProfiles).includes(_.dpid))))throw new Error("dpid: The device profile is needed to compile a dlo")}p.validatePublishSettings=d;async function u(g,w){let b=_e.ungzip(g),k=await WA.TarReader.load(b),_={};for(let q of k.fileInfos)w.includes(q.name)&&(_[q.name]=k.getFileBlob(q.name));return _}p.readFilesFromTarGz=u})(X0||={});function xa(t,e){let F=Object.values(a0.Part);return e===!0?(t.info("Building project..."),F):e===!1?[]:e}async function Aa(t,e,F,i,a,E){await y0.validateMinimumBackendVersion(t,e,F),E.includes(a0.Part.dde)&&await Ex.fetchPreviousHistoryJson(t,e,F,i,a)}async function ra(t,e,F,i){i.defaultsOnly?(await R0.exportDefinesTs(t,e,i.defaultsOnly),F.log("Generated",Y.filePaths.dist.definesTs,"(defaults only)"),await R0.exportDefinesTs(t,e,i,Y.filePaths.dist.definesAppTs),F.log("Generated",Y.filePaths.dist.definesAppTs,"(with app.ini overrides)")):(await R0.exportDefinesTs(t,e,i),F.log("Generated",Y.filePaths.dist.definesTs))}async function ea(t,e,F){let i=await Ex.compileDDE(t,e,F);if(i.ddeJSON){await Ex.exportMyDatanetXML(t,e,F,i.ddeJSON);let a=await O.read(t,e);O.isLibrary(a)||await Ex.exportHistoryJson(t,e,F,i.ddeJSON),await Ex.exportOpenApi(t,e,F,i.ddeJSON),await O.isApmPartEnabled(t,e,a0.Part.dlo,a)&&(await Ex.exportAutoDloFiles(t,e,F,i.ddeJSON),await KA.exportDloConfig(t,e,F))}return i.diagnostics}async function ta(t,e,F){let i=new DA(t,e,F),{diagnostics:a}=await i.compile(t,e);return a}async function na(t,e,F){return await VA.process(t,e,F)}async function ia(t,e,F){let i=await O.read(t,e);O.isLibrary(i)&&await lA.normalizeLibraryParts(t,e,i,F)}async function Fa(t,e,F){let i=tA.Utils.joinPath(t,Y.fileNames.reportTemplate);if(await e.stat(i)){let a=tA.Utils.joinPath(t,Y.filePaths.dist.reportTemplate);await e.copy(i,a),F.log(`Copied "${Y.fileNames.reportTemplate}" to dist folder.`)}}function aa(t,e,F){e!==a0.Part.dlo&&oa(t,F);let i=F.some(a=>a.level==="error");if(i){let a=`APM part "${e}" has errors. Aborted.`;throw new Error(a)}return i}async function sa(t,e,F,i,a,E){let s=await F(a,E,t);return i.push(...s),aa(t,e,s)}function oa(t,e){e.forEach(F=>{let i=F.startCharacter?`:${F.startCharacter+1}`:"",a=`${F.file.path}:${F.line+1}${i} - ${F.message}`;F.level==="error"?t.error(a):F.level==="warning"?t.warn(a):t.log(a)})}async function nn(t,e,F,i,a){let E=await O.read(t,e);return await O.validateBasicManifest(t,e,E),await X0.buildAll(t,e,F,a,i),await eA.createArchive(t,e)}async function Fn(t,e,F,i,a,E){if(!Object.values(a0.TagPhase).includes(a))throw new Error(`ReleasePhase: ${a} is not a valid release phase`);return await O.validateBasicManifest(t,e,null),await X0.buildAll(t,e,F,E,i),await a0.createTag(t,e,a)}async function va(t){let e=new WA.TarWriter;for(let[i,a]of t.entries())if(i==="tag"){let E=a;e.addFile(i,E)}else{let E=a;e.addFile(i,await E.arrayBuffer())}let F=await e.write();return _e.gzip(await F.arrayBuffer())}async function Ea(t){let e=await Ba(t,["studio.json","src/studio.json"]);if(!e)throw new Error('Could not find "studio.json" in archive');return JSON.parse(await e.text())}async function Ba(t,e){let F=_e.ungzip(t),i=await WA.TarReader.load(F);for(let a of i.fileInfos)if(e.includes(a.name))return i.getFileBlob(a.name);return null}var Ca=F0.bufferToBase64;var a0;(u=>{let t;(N=>(N.alpha="alpha",N.beta="beta",N.rc="rc",N.release="release",N.stage="stage",N.passive="passive",N.withdrawn="withdrawn"))(t=u.TagPhase||={});let e;(_=>(_.dde="dde",_.dlo="dlo",_.pov="pov",_.blo="blo",_.dfiles="dfiles"))(e=u.Part||={});function F(p){let{description:g,name:w,pov:b,engines:k,blo:_,publisher:q,type:N}=p,S=N||O.ProjectTypes.app,V={name:w,abstract:g,author:q||"",pov_location:O.PovLocation.embedded,pov_details_lowlevel:!1,required_be:k?.backend,required_hwfw:k?.hwfw?.join(";"),required_productcode:k?.productId?.join(";"),blo_level:_?.accessLevel||O.BloAccessLevel.restricted,pip_id:""};return b&&b.details&&(V.pov_location=O.PovLocation.pure,V.pov_details_lowlevel=!!b.details.lowLevel),S==="addon"&&(V.required_hwfw=void 0,V.required_productcode=void 0,V.addon_max_sources=1,V.addon_max_per_site=p.maxInstancesPerSite),V}u.createBaseTagHeader=F;async function i(p,g,w){let b=await O.read(p,g),k=F(b),_={version:b.version,...k,phase:w};return await E(p,g,b,_)}u.createTag=i;async function a(p,g){let w=await O.read(p,g),k={...F(w),blo_autostart:!1};return E(p,g,w,k)}u.createDevTag=a;async function E(p,g,w,b){let k=new FormData;k.append("tag",JSON.stringify(b)),k.append(`src/${O.fileName}`,new Blob([await O.readAsBlob(p,g)]));let _=new Blob([await g.readFile(Nx.Utils.joinPath(p,Y.filePaths.dist.ddeXmlPath))]);if(k.append("bin/dde/xml",_),w.icon){let N=await g.readFile(Nx.Utils.joinPath(p,w.icon)),S=Ca(N);k.append("previews/00.png",new Blob([`data:image/png;base64,${S}`]))}if(Object.hasOwn(b,"phase")){let N=await X0.getReadmeFile(p,g,b.name),S=await X0.getChangelogFile(p,g);k.append("previews/README.md",new Blob([N])),k.append("previews/CHANGELOG.md",new Blob([S]))}if(await O.isApmPartEnabled(p,g,"dlo")){let N=new Blob([await g.readFile(Nx.Utils.joinPath(p,Y.filePaths.dist.mainAmxPath))]);k.append("bin/dlo/amx",N)}if(await O.isApmPartEnabled(p,g,"pov",w)){await an(p,g,k,Y.filePaths.dist.povDetailsPath,"bin/pov/details");let N=new TextEncoder().encode('<!DOCTYPE html><html lang="en">');k.append("bin/pov/list/index.html",new Blob([N]))}let q=await g.findFiles(p,`${Y.filePaths.dist.dfilesPath}/*`);for(let N of q){let S=new Blob([await g.readFile(N)]);k.append(`bin/dfiles/${Nx.Utils.basename(N)}`,S)}return await O.isApmPartEnabled(p,g,"blo",w)&&await an(p,g,k,Y.filePaths.dist.bloPath,"bin/blo"),await fa(p,g,k),k}u.createBuffer=E;async function s(p,g,w,b,k){let _=await O.read(p,g);b||await X0.validatePublishSettings(p,g,w,k);let{registry:q}=_,N=q?.id;if(!N&&!b&&(N=await C(p,g,w,_,k)),N){let{publisher:S}=_;if(!S)return null;try{return{id:N,...await _0.getExistingApplication(w,S,N,k)}}catch(V){if(V?.message==="Could not find given application")return N=await C(p,g,w,_,k),{id:N,...await _0.getExistingApplication(w,S,N,k)}}}return null}u.validateAccess=s;async function C(p,g,w,b,k){let _="myDatanet",{publisher:q,name:N,description:S,registry:V}=b,L={id:V?.id,type:b.type||O.ProjectTypes.app,name:N,targetSystem:_,description:S||"",allowedBackends:null};O.isAddon(b)&&(L.allowedApplications=null);let y=await _0.createNewApplication(w,q,L,k);if(!y)throw new Error("Failed to initialize application");return b.registry={id:y},await O.write(p,g,b),y}u.registerNew=C;async function l(p,g,w,b){let{name:k,publisher:_,description:q,registry:N}=await O.read(p,g),S=N?.id;await _0.updateExistingApplication(w,_,S,{description:q,name:k,targetSystem:"myDatanet"},b)}u.updateProfile=l;async function d(p,g,w,b,k){let{publisher:_,registry:q,version:N}=await O.read(p,g);return await _0.publishApplicationVersion(w,_,q?.id,N,b,k)}u.publishTag=d})(a0||={});async function an(t,e,F,i,a){let E=await e.findFiles(t,`${i}/**`);for(let s of E){let C=Nx.Utils.joinPath(t,i),l=s.path.substring(C.path.length+1),d=new Blob([await e.readFile(Nx.Utils.joinPath(t,`${i}/${l}`))]);F.append(`${a}/${l}`,d)}}async function fa(t,e,F){let i=Nx.Utils.joinPath(t,Y.filePaths.dist.reportTemplate);if(await e.stat(i)){let E=new Blob([await e.readFile(i)]);F.append("bin/pov/mdn_report_template.json",E)}let a=Nx.Utils.joinPath(t,Y.filePaths.dist.historyJson);await e.stat(a)&&F.append("src/dde/history.json",new Blob([await e.readFile(a)]))}var Cn=require("deepmerge-ts"),Da=F0.isNumeric,sn="52v007",on="53v001",la="54v001",ca="56v001",Bx={_manifest:null,_stat:null,_overwrites:null,get manifest(){return(0,Cn.deepmerge)(structuredClone(this._manifest),Bx._overwrites||{})},set manifest(t){this._manifest=t},set overwrites(t){this._overwrites=t},get stat(){return this._stat},set stat(t){this._stat=t},clear(){this._stat=null,this._manifest=null}},O;(X=>{let t=F0.convertBlobToString;X.fileName="studio.json";let F;(b0=>(b0.m22x="m22x",b0.m23x="m23x",b0.nrf91="nrf91",b0.m2blegw="m2blegw",b0.m2easyv3="m2easyv3",b0.m2easyiot="m2easyiot"))(F=X.DeviceProfiles||={});let i;(i0=>(i0.app="app",i0.library="library",i0.addon="addon",i0.analytics="analytics"))(i=X.ProjectTypes||={});let a;(e0=>(e0.restricted="restricted",e0.global="global"))(a=X.BloAccessLevel||={});let E;(e0=>(e0.embedded="$embedded",e0.pure="$pure"))(E=X.PovLocation||={});function s(T){Bx.overwrites=T}X.setOverwrites=s;function C(){Bx.overwrites=null}X.clearOverwrites=C;async function l(T,A0){let e0=cA.Utils.joinPath(T,X.fileName),n0=await A0.stat(e0);if(Bx.manifest===null||e0?.fsPath!==Bx.stat?.path.fsPath||n0?.ctime!==Bx.stat?.ctime||n0?.mtime!==Bx.stat?.mtime||n0?.size!==Bx.stat?.size){let i0=await A0.readFile(e0),d0=t(i0);Bx.manifest=JSON.parse(d0),Bx.stat={...n0,path:e0}}return Bx.manifest}X.read=l;async function d(T,A0){return await A0.readFile(cA.Utils.joinPath(T,X.fileName))}X.readAsBlob=d;async function u(T,A0){let e0=cA.Utils.joinPath(T,X.fileName),n0=await A0.readFile(e0),i0=t(n0);return JSON.parse(i0)}X.readRaw=u;async function p(T,A0,e0){return Bx.clear(),ha(e0),A0.writeFile(cA.Utils.joinPath(T,X.fileName),JSON.stringify(e0,null," "))}X.write=p;function g(T){return T.library!==void 0?T.library:T.type==="library"}X.isLibrary=g;function w(T){return T.type==="addon"}X.isAddon=w;function b(T){return T.type===void 0&&!g(T)?!0:T.type==="app"}X.isApp=b;function k(T){return T.type===void 0?!0:T.type==="app"}X.isIotApp=k;function _(T){return T.type==="analytics"}X.isAnalytics=_;async function q(T,A0,e0){e0||(e0=await l(T,A0)),ma(e0),da(e0),ja(e0),ba(e0)}X.validateBasicManifest=q;function N(T){let A0="Library name can only contain 'a' through 'z', '0' through '9', '_' and '-'. The Library name must start with an alphabetic or numeric character.";if(T.match(/^[a-z0-9-_]+$/)){let n0=["-","_"];if(n0.includes(T[0])||n0.includes(T[T.length-1]))return A0}else return A0;return T.length<3||T.length>20?"The library name is beyond permissible length of 20 characters.":null}X.validateLibraryName=N;function S(T,A0){if(A0)return N(T);{let e0="Project name can only contain 'A' through 'Z', 'a' through 'z', '0' through '9', ' ', '_' and '-'. The Project name must start with an alphabetic or numeric character.";if(!T.match(/^([a-zA-Z0-9 _-]+)$/))return e0;if(T.length<3||T.length>40)return"The project name is beyond permissible length of 40 characters.";let i0=["-","_"," "];return i0.includes(T[0])||i0.includes(T[T.length-1])?e0:null}}X.validateProjectName=S;function V(T){return T.length<5?"The description must have at least 5 characters.":null}X.validateDescription=V;function L(T){if(!T)return"No publisher set yet";let A0="Publisher can only contain 'A' through 'Z', 'a' through 'z', '0' through '9' and '-'. The Publisher start with an alphabetic or numeric character.";if(T.match(/^[a-zA-Z0-9-]+$/)){let n0=["_"];if(n0.includes(T[0])||n0.includes(T[T.length-1]))return A0}else return A0;return null}X.validatePublisherId=L;async function y(T,A0,e0){return await _0.getPublisher(T,A0,e0)?null:`Publisher '${A0}' does not exist.`}X.validatePublisherOnline=y;let P=/^(((?!-))(xn--)?[a-z0-9\-_]{0,61}[a-z0-9]{1,1}\.)*(xn--)?([a-z0-9-]{1,61}|[a-z0-9-]{1,30})\.[a-z]{2,}$/;async function H(T){if(T===void 0)return"Allowed backends not specified yet";if(T===null)return null;if(Array.isArray(T)||T?.includes(";")){let A0=T?.includes(";")?T.split(";"):T;for(let e0 of A0)if(!e0.match(P))return`Domain "${e0}" is invalid`}else if(!T?.match(P)&&T!=="*")return'Invalid value for "allowedBackends"';return null}X.validateRegistryAllowedBackends=H;let U=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}$/i;async function I(T){if(T===void 0)return"Allowed applications not specified yet";if(T===null)return null;if(Array.isArray(T)||T?.includes(";")){let A0=T?.includes(";")?T.split(";"):T;for(let e0 of A0)if(!e0.match(U))return`Application id "${e0}" is invalid`}else if(!T?.match(U)&&T!=="*")return'Invalid value for "allowedApplications"';return null}X.validateRegistryAllowedApplications=I;async function M(T,A0,e0){let n0=e0.icon;if(!n0)throw new Error("App icon is required for publishing an application!");let i0=cA.Utils.joinPath(T,n0);if(!await A0.stat(i0))throw new Error(`Could not load icon "${n0}"`);let b0=await A0.readFile(i0),S0=(0,vn.imageDimensionsFromData)(b0);if(!S0)throw new Error("App icon could not be validated!");if(S0?.width!==S0?.height)throw new Error("App icon has to be a square!");if(S0.width>512||S0.width<75)throw new Error("App icon size should be between 75px and 512px!");if(!(0,En.isPNG)(b0))throw new Error("App icon has to be of type PNG!")}X.validateApplicationIcon=M;function W(T){let{engines:A0}=T;if(A0?.backend&&!A0.backend.match(/(^[5-9][2-9]|[6-9]\d+|\d{3,})v(0(0[0-9]|[1-9]\d)|[1-9]\d{2}|[1-9]\d{3,})$/))throw new Error('Setting "engines.backend" is invalid');pa(T),ua(T)}X.validateEngineSettings=W;function J(T,A0){let e0=d0=>{let b0=/^(\d+)v(\d+)$/.exec(d0);return b0?[Number(b0[1]),Number(b0[2])]:null},n0=e0(T),i0=e0(A0);return n0&&i0?n0[0]-i0[0]||n0[1]-i0[1]:T===A0?0:T<A0?-1:1}X.compareBackendVersion=J;async function Z(T,A0,e0,n0){n0||(n0=await X.read(T,A0));let i0=X.isAddon(n0),d0=X.isAnalytics(n0);switch(e0){case a0.Part.dlo:return!!n0?.dlo?.mainFile&&!i0&&!d0;case a0.Part.blo:return!!(n0.blo?.buildCommand&&n0.blo?.workingPath);case a0.Part.pov:return!!(n0.pov?.details?.buildCommand&&n0.pov.details.workingPath);case a0.Part.dde:case a0.Part.dfiles:return!0;default:return!1}}X.isApmPartEnabled=Z})(O||={});function da(t){let{pov:e}=t;if(e&&e.details){if(!Object.hasOwn(e.details,"buildCommand"))throw new Error('Setting "pov.details.buildCommand" missing!');if(!Object.hasOwn(e.details,"workingPath"))throw new Error('Setting "pov.details.workingPath" missing!')}}function ja(t){let{blo:e}=t;if(e){if(!Object.hasOwn(e,"buildCommand"))throw new Error('Setting "blo.buildCommand" missing!');if(!Object.hasOwn(e,"workingPath"))throw new Error('Setting "blo.workingPath" missing!');if(e.accessLevel&&!["restricted","global"].includes(e.accessLevel))throw new Error('Only "restricted" or "global" are allowed as value for "blo.accessLevel"!')}}function pa(t){let{backend:e,productId:F,hwfw:i}=t.engines;if(O.isAddon(t)&&(F||i))throw new Error('For project type "addon", "engines.hwfw" or "engines.productId" is not allowed!"');if(e&&e>=sn){if(i&&F)throw new Error('Only "engines.hwfw" or "engines.productId" is allowed!"')}else if(F)throw new Error(`"engines.productId" requires "engines.backend" to be "${sn}"`)}function ua(t){if(!O.isAddon(t)&&!O.isAnalytics(t))return;let{backend:e}=t.engines,F=O.isAddon(t)?la:ca;if(!e||e<F)throw new Error(`Project type "${t.type}" requires "engines.backend" to be ">=${F}"`);if(t.dlo)throw new Error(`For project type "${t.type}", "dlo" is not supported!"`);if(t.dpid)throw new Error(`For project type "${t.type}", "dpid" is not supported!"`)}function ba(t){let{maxInstancesPerSite:e}=t;if(e===void 0){if(O.isAddon(t))throw new Error('Property "maxInstancesPerSite" is required for addon projects!');return}if(!O.isAddon(t))throw new Error('Property "maxInstancesPerSite" is only allowed for addon projects!');if(!Number.isInteger(e))throw new Error('Property "maxInstancesPerSite" must be an integer!');if(e<1||e>100)throw new Error('Property "maxInstancesPerSite" must be between 1 and 100!')}function ma(t){if((t.engines?.backend||"00v000")>=on||O.isLibrary(t)){if(!Bn.default.valid(t.version))throw new Error(`From "engines.backend" version >= ${on} onwards "version" has to be a semantic version string!"`)}else if(!Da(t.version))throw new Error('"version" has to be a number!')}function ha(t){t.registry&&(delete t.registry.allowedBackends,delete t.registry.target)}var yx=J0(require("semver"));var cn=J0(require("node:child_process")),dn=require("minimatch");var ga=require("tinytar-fix"),ka=require("pako"),Gx=".studio/libdeps",XA="package.json",ya="package-lock.json";function fn(t){return[...Object.keys(t.libraryDependencies||{}),...Object.keys(t.libraryDevDependencies||{})].map(y0.dependencyIdToName)}async function wa(t,e,F,i){let a=G0.Utils.joinPath(t,Gx,i);try{return await e.stat(G0.Utils.joinPath(a,O.fileName))?await O.readRaw(a,e):null}catch(E){return F.warn(`Could not read manifest for library "${i}": ${E}`),null}}async function _a(t,e,F,i){let a=new Set,E=fn(i),s=null;for(;E.length>0;){let C=E.shift();if(a.has(C))continue;a.add(C);let l=await wa(t,e,F,C);if(!l)continue;let d=l.engines?.backend;d&&(!s||O.compareBackendVersion(d,s.backend)>0)&&(s={backend:d,requiredBy:`${l.publisher}/${l.name}`}),E.push(...fn(l))}return s}var y0;(L=>{async function t(y,P=!1){let H=y.libraryDependencies||{};return P||Object.assign(H,y.libraryDevDependencies||{}),H}L.getAll=t;function e(y){return y.split("/")[1]}L.dependencyIdToName=e;function F(y,P){let H=e(P);return G0.Utils.joinPath(y,Gx,H)}L.dependencyToPath=F;function i(y){return isNaN(y.split("")[0])?y.substring(1):y}L.rangeToVersion=i;function a(y,P,H){if(!yx.satisfies(P,H,{includePrerelease:!0}))throw new Error(`${y}, version ${P} does not satisfy required constraint ${H}`)}L.satisfiesSemverRange=a;async function E(y,P,H={},U=!1){let I=await O.read(y,P),M=I.libraryDependencies||{};U&&Object.assign(M,I.libraryDevDependencies);let W=Object.keys(H);for(let J of W)if(Object.hasOwn(M,J)){let Z=H[J],X=M[J],T=i(Z),A0=i(X),e0=yx.compare(T,A0);e0===1?(M[J]=Z,a(J,T,X)):e0===-1&&(M[J]=X,a(J,A0,Z))}else M[J]=H[J];return M}L.validateDependencyTree=E;async function s(y,P,H,U,I){let M=i(I),W=G0.Utils.joinPath(y,Gx,U);try{let J=await O.read(W,P);return yx.gte(J.version,M)&&J.publisher.toLowerCase()===H.toLowerCase()}catch{return!1}}L.isDependencyInstalled=s;async function C(y,P,H,U){let I=G0.Utils.joinPath(y,Gx,U);await P.rm(I).catch(M=>{H.error("removeExisting",M)})}L.removeExisting=C;async function l(y,P,H,U,I){let M=ga.untar(ka.ungzip(I));await C(y,P,H,U);for(let W of M.values())try{let J=G0.Utils.joinPath(y,Gx,U,W.name);await P.writeFile(J,W.data)}catch(J){H.error("Extracting lib",J)}}L.extractLibraryContent=l;async function d(y,P,H,U,I,M,W,J=!1){let[Z,X]=M.split("/");if(W&&await s(y,P,Z,X,W))return;await C(y,P,H,X);let T=await _0.getLibraryProfile(I,Z,X,U),A0=W?T.versions?.find(Q0=>yx.eq(Q0.name,L.rangeToVersion(W))):T.versions[0];if(!A0)throw new Error(`Library ${M} with version ${W} does not exist!`);let e0=A0.files.find(Q0=>Q0.name==="studio.json"),i0=(await $a(I,e0.downloadUrl)).libraryDependencies||{},d0={...i0};d0[M]=`^${A0.name}`,await E(y,P,d0,J);for(let[Q0,wx]of Object.entries(i0))await d(y,P,H,U,I,Q0,wx,J);let b0=A0.files.find(Q0=>Q0.name==="library.tar.gz");if(!b0)throw new Error(`Library ${M} has no content!`);let S0=await _0.fetchCustomContent(I,b0.downloadUrl);await l(y,P,H,X,S0),await S(y,P,H,X,J);let Cx=await O.read(y,P),Tx=Cx.libraryDependencies||{},Ix=Cx.libraryDevDependencies||{},Mx=J?Ix:Tx;Mx[M]=`^${A0.name}`,Cx.libraryDependencies=Tx,Cx.libraryDevDependencies=Ix,await O.write(y,P,Cx)}L.installDependency=d;async function u(y,P,H,U,I){let M=await O.read(y,P),W=M.libraryDependencies||{},J=M.libraryDevDependencies||{},Z=Object.assign(W,J);for(let[X,T]of Object.entries(Z)){let A0=Object.hasOwn(J,X);await d(y,P,H,U,I,X,T,A0)}for(let[X]of Object.entries(Z)){let T=e(X),A0=Object.hasOwn(J,X);await S(y,P,H,T,A0)}H.done(`Installed ${Object.entries(Z).length} dependencies`)}L.installDependencies=u;async function p(y,P,H,U,I){let M=await O.read(y,P),W=M.libraryDependencies||{},J=M.libraryDevDependencies||{},Z=Object.assign(W,J),X=`${U}/${I}`;delete Z[X];let T=await qa(y,P,Z);if(!Object.hasOwn(T,X))await V(y,P,H,I),await C(y,P,H,I),delete J[X],delete W[X],await O.write(y,P,M);else throw new Error(`Library '${I}' not removed. This library is a dependency of other libraries.`)}L.uninstallDependency=p;async function g(y,P){try{let U=(await jn(G0.Utils.joinPath(y,XA),P)).workspaces;if(Array.isArray(U)&&U.every(M=>typeof M=="string")&&U.length>0)return U;let I=U?.packages;return Array.isArray(I)&&I.every(M=>typeof M=="string")&&I.length>0?I:null}catch{return null}}L.readNpmWorkspacePatterns=g;function w(y,P){let H=I=>I.replace(/\\/g,"/").replace(/^\.\//,"").replace(/\/$/,""),U=H(y);return P.some(I=>{let M=H(I);return M===U||(0,dn.minimatch)(U,M)})}L.isPathInWorkspaces=w;function b(y,P){if(!P)return{rootInstall:!1,partInstalls:y.map(I=>I.workingPath)};let H=[],U=!1;for(let I of y)w(I.workingPath,P)?U=!0:H.push(I.workingPath);return{rootInstall:U,partInstalls:H}}L.planNpmInstalls=b;async function k(y,P,H){let U=await O.read(y,P),I=new Set([...Object.keys(U.libraryDependencies||{}),...Object.keys(U.libraryDevDependencies||{})].map(e)),M=new Set,W=[...I];for(;W.length>0;){let J=W.shift();if(M.has(J))continue;M.add(J);let Z=G0.Utils.joinPath(y,Gx,J);try{let X=G0.Utils.joinPath(Z,O.fileName);if(!await P.stat(X))continue;let T=await O.readRaw(Z,P);await lA.normalizeLibraryParts(Z,P,T,H),W.push(...[...Object.keys(T.libraryDependencies||{}),...Object.keys(T.libraryDevDependencies||{})].map(e))}catch(X){H.warn(`Could not normalize library parts for "${J}": ${X}`)}}}L.normalizeInstalledLibraryParts=k;async function _(y,P,H){let U=await O.read(y,P),I=await _a(y,P,H,U);if(!I)return;let M=U.engines?.backend;if(!M||O.compareBackendVersion(I.backend,M)>0){let W=M?`"${M}"`:"none",J=O.isLibrary(U)?"library":"application",Z=O.isLibrary(U)?" Every application using this library must then satisfy that version as well.":"";throw new Error(`Library "${I.requiredBy}" requires "engines.backend" >= "${I.backend}" but the ${J} "${U.publisher}/${U.name}" declares ${W}. Raise "engines.backend" in studio.json to at least "${I.backend}".${Z}`)}}L.validateMinimumBackendVersion=_;async function q(y,P,H){await k(y,P,H);let U=await O.read(y,P),I=[];U.pov?.details?.workingPath&&I.push({name:"pov",workingPath:U.pov.details.workingPath}),U.blo?.workingPath&&I.push({name:"blo",workingPath:U.blo.workingPath});let M=[];for(let X of I){let T=G0.Utils.joinPath(y,X.workingPath),A0=G0.Utils.joinPath(T,XA);await P.stat(A0)&&M.push(X)}if(M.length===0)return;let W=await g(y,P),{rootInstall:J,partInstalls:Z}=b(M,W);if(J){let X=M.filter(T=>!Z.includes(T.workingPath)).map(T=>T.workingPath).join(", ");H.info(`npm workspaces detected in root package.json - installing dependencies once at the project root (${X}) using 'npm install' (an in-sync package-lock.json is installed as-is and left unchanged)`),await ur(y,"npm install --no-audit --no-fund",H)}for(let X of M){if(!Z.includes(X.workingPath))continue;W?H.warn(`${X.workingPath} (${X.name}) is not covered by any workspace pattern in the root package.json - installing it separately.`):H.info(`Installing npm dependencies for ${X.name} (${X.workingPath})...`);let T=G0.Utils.joinPath(y,X.workingPath);await Na(T,P,H)}}L.installNpmInApmParts=q;async function N(y,P,H){let U=await O.read(y,P),I=await t(U),M=[],W=Y.filePaths[H].path,J=H===a0.Part.dlo?"inc":"dfiles";for(let Z in I){let X=L.dependencyToPath(y,Z),T=L.dependencyIdToName(Z),A0=G0.Utils.joinPath(X,W,`${T}.${J}`);await P.stat(A0)&&M.push({name:T,path:A0})}if(O.isLibrary(U)){let Z=G0.Utils.joinPath(y,W,`${U.name}.${J}`);await P.stat(Z)&&M.push({name:U.name,path:Z})}return M}L.getApmPartDependencies=N;async function S(y,P,H,U,I){let M=await O.read(y,P),W=[{partName:"blo",partDistPath:"blo",workingPath:M.blo?.workingPath},{partName:"pov",partDistPath:"pov/details",workingPath:M.pov?.details?.workingPath}];for(let{partName:J,partDistPath:Z,workingPath:X}of W){if(!X)continue;let T=G0.Utils.joinPath(y,Gx,U,"dist",...Z.split("/"),XA);if(await P.stat(T))try{let e0=await Dn(y,P,X),n0=I?"devDependencies":"dependencies";e0[n0]=e0[n0]||{};let i0=X.split("/").length,d0=Array(i0).fill("..").join("/");e0[n0][U]=`file:${d0}/${Gx}/${U}/dist/${Z}`,await ln(y,P,X,e0),H.info(`Linked ${U} to ${J} (${X})`)}catch(e0){H.warn(`Could not link ${U} to ${J}: ${e0}`)}}}L.linkLibraryApmParts=S;async function V(y,P,H,U){let I=await O.read(y,P),M=[{partName:"blo",workingPath:I.blo?.workingPath},{partName:"pov",workingPath:I.pov?.details?.workingPath}];for(let{partName:W,workingPath:J}of M)if(J)try{let Z=await Dn(y,P,J),X=!1;Z.dependencies?.[U]?.startsWith("file:")&&(delete Z.dependencies[U],X=!0),Z.devDependencies?.[U]?.startsWith("file:")&&(delete Z.devDependencies[U],X=!0),X&&(await ln(y,P,J,Z),H.info(`Unlinked ${U} from ${W}`))}catch(Z){H.warn(`Could not unlink ${U} from ${W}: ${Z}`)}}L.unlinkLibraryApmParts=V})(y0||={});async function jn(t,e){let F=await e.readFile(t);return JSON.parse(F0.convertBlobToString(F))}function Dn(t,e,F){return jn(G0.Utils.joinPath(t,F,XA),e)}async function ln(t,e,F,i){let a=G0.Utils.joinPath(t,F,XA),E=JSON.stringify(i,null," ")+`
|
|
1664
|
+
`;await e.writeFile(a,E)}async function $a(t,e){return await _0.fetchCustomContent(t,e,!0)}async function qa(t,e,F){let i={};function a(d,u,p,g=!1){let w=i[d],b=y0.rangeToVersion(p),k=y0.rangeToVersion(p);(!w||yx.gt(b,k))&&(i[d]={publisherId:u,version:p,installed:g})}let E=Object.entries(F).map(([d,u])=>{let[p,g]=d.split("/");return a(g,p,u,!0),g}),s={};for(let d of E)try{let u=await Pa(t,e,d);s[d]=Object.entries(u).map(([p,g])=>{let[w,b]=p.split("/");return a(b,w,g),b}),E.push(...s[d])}catch{let p=i[d];throw new Error(`Please import "${p.publisherId}/${d}" first.`)}let C=[];for(;;){let d=E.filter(u=>C.includes(u)?!1:(s[u]||[]).every(g=>C.includes(g)));if(C.push(...d),E.length===C.length||!d.length)break}let l={};return[...new Set(C)].forEach(d=>{let{version:u,publisherId:p}=i[d],g=La(p,d,u);l[g.libraryId]=g.libraryVersion}),l}async function Pa(t,e,F){let i=G0.Utils.joinPath(t,Gx,F);return(await O.read(i,e))?.libraryDependencies||{}}function La(t,e,F){return{libraryName:e,publisherId:t,libraryVersion:F[0]==="^"?F:"^"+F,libraryId:`${t}/${e}`}}function ur(t,e,F){return new Promise((i,a)=>{cn.exec(e,{cwd:t.fsPath,env:process.env},(E,s,C)=>{if(s&&F.log(s),C&&F.error(C),E){a(new Error(`${E.message}
|
|
1665
|
+
${s}
|
|
1666
|
+
${C}`));return}i()})})}async function Na(t,e,F){let i=G0.Utils.joinPath(t,ya);if(!await e.stat(i)){F.warn(`No package-lock.json found in ${t.fsPath} - running 'npm install' instead of 'npm ci'.`),await ur(t,"npm install",F);return}try{await ur(t,"npm ci",F)}catch{F.warn(`'npm ci' failed in ${t.fsPath} - falling back to 'npm install'. If package-lock.json changed afterwards, commit it.`),await ur(t,"npm install",F)}}var pn=J0(require("dotenv")),un=require("vscode-uri");var Ga=".env.local",$e;(e=>{async function t(F,i){let a=un.Utils.joinPath(F,Ga);if(await i.stat(a)){let E=await i.readFile(a);return pn.default.parse(F0.convertBlobToString(E))}return{}}e.read=t})($e||={});var YA=J0(require("chalk")),qe;(i=>{let t;(d=>(d[d.log=0]="log",d[d.done=1]="done",d[d.info=2]="info",d[d.warning=3]="warning",d[d.error=4]="error"))(t=i.LogMessageType||={}),i.LOG_PREFIX={1:YA.default.bgGreen.black(" DONE "),0:"",2:YA.default.bgBlueBright.black(" INFO "),3:YA.default.bgYellow.black(" WARNING "),4:YA.default.bgRed.black(" ERROR ")};class F{_logHandler;_silent=!1;constructor(E=console){this._logHandler=E}_log(E,s,...C){this._silent&&E!==4||(C=[i.LOG_PREFIX[E],s,...C],this._logHandler.log(...C))}set silent(E){this._silent=E}log(E,...s){this._log(0,E,...s)}debug(E,...s){this._log(0,E,...s)}error(E,...s){this._log(4,E,...s)}info(E,...s){this._log(2,E,...s)}warn(E,...s){this._log(3,E,...s)}done(E,...s){this._log(1,E,...s)}}i.Logger=F})(qe||={});var bn=require("uuid"),Ta="b4baec47-0ba4-4e37-b237-8f9cde42b8dd",Pe=(a=>(a.Get="GET",a.Post="POST",a.Put="PUT",a.Delete="DELETE",a))(Pe||{});var br=class{domain;auth;logger;userInfo=null;constructor(e,F,i){if(typeof e=="object"){let{serverUrl:a,apiToken:E,authHeader:s,logger:C}=e;this.domain=this.normalizeServerUrl(a),this.auth=s||(E?`Bearer ${E}`:""),this.logger=C}else this.domain=this.normalizeServerUrl(e),typeof F=="string"?(this.auth=`Bearer ${F}`,this.logger=i):(this.auth="",this.logger=F)}setAuth(e){this.auth=e}getDomain(){return this.domain}normalizeServerUrl(e){return!e.startsWith("http://")&&!e.startsWith("https://")?`https://${e}`:e}trimDomain(e){return e.replace(/(^\w+:|^)\/\//,"")}async fetchJSON(e,F,i){let a=`${this.domain}${F}`,E={Authorization:this.auth},s={method:e,headers:E};i&&(i instanceof FormData?s.body=i:(E["Content-Type"]="application/json",s.body=JSON.stringify(i)));let C=await fetch(a,s);if(!C.ok){let l=await C.text().catch(()=>"Unknown error");throw new Error(`HTTP ${C.status}: ${l}`)}return C.json()}async authenticate(){this.logger?.info(`Authenticating with ${this.trimDomain(this.domain)}...`);try{let{user:e,customers:F}=await this.fetchJSON("GET","/api/1/me");return this.userInfo={name:e.name,email:e.email,group:e.group,customers:F},this.logger?.info(`Authenticated as ${this.userInfo.name}`),this.userInfo}catch(e){throw new Error(`Authentication failed: ${e instanceof Error?e.message:String(e)}`)}}getUserInfo(){return this.userInfo}async uploadDevTag(e,F){this.logger?.info(`Uploading development tag ${e}...`);let{applid:i}=await this.fetchJSON("POST",`/api/1/app-center/__dev/${e}`,F);return this.logger?.info(`Development tag uploaded, application ID: ${i}`),i}async getCustomer(e){let{_uid:F,name:i}=await this.fetchJSON("GET",`/api/1/customers/${e}`);return{_uid:F,name:i}}async getCustomers(){return this.fetchJSON("GET","/api/1/customers")}async getDeviceSite(e){try{return await this.fetchJSON("GET",`/api/1/devices/${e}/site`)}catch{return null}}async getDevice(e){try{return await this.fetchJSON("GET",`/api/1/devices/${e}`)}catch{return null}}async getSite(e,F){try{return await this.fetchJSON("GET",`/api/1/customers/${e}/sites/${F}`)}catch{return null}}async createDevelopmentSite(e,F,i){if(this.logger?.info(`Creating development site "${F.name}"...`),F.serialNumber){let E=await this.getSite(e,F.name.toLowerCase());if(E)try{return await this.fetchJSON("POST",`/api/1/customers/${e}/sites/${E._uid}/cn-attach-device`,{device_id:F.serialNumber,allow_overwrite:!0,detach_from_old_site:!0,acquire:!0,create:!0}),this.logger?.info(`Device attached to existing site ${E._uid}`),E._uid}catch(s){if(s.message&&!s.message.includes("304"))this.logger?.warn(`Could not attach device to existing site: ${s.message}`);else return E._uid}}let{_uid:a}=await this.fetchJSON("POST",`/api/1/customers/${e}/sites`,{name:F.name,create:!0,force:!0,note:"This is a Studio development site",applid:F.applicationId,device_id:F.serialNumber,reg_code:i,servicetariff:"0000000000000000",servicetariff_indiv_cost:0});return this.logger?.info(`Development site created: ${a}`),a}async updateSiteName(e,F){try{await this.fetchJSON("PUT",`/api/1/sites/${e}`,{name:F})}catch{}}};function Le(t){return(0,bn.v5)(t,Ta)}async function mn(t,e,F,i,a,E,s){let C=await O.read(t,e),l=a.replaceAll(" ","_").replace(/[^a-zA-Z0-9-]+/g,""),d=C.name.replaceAll(" ","_").replace(/[^a-zA-Z0-9-]+/g,""),u=await O.isApmPartEnabled(t,e,a0.Part.dlo,C),p=u&&i,g=p?i.toUpperCase():`${d}_${l}`,w=p?i:g,b=s||g;return b.length>50&&(F.warn(`Site name "${b}" is too long. Truncating to 50 characters.`),b=b.substring(0,50)),{apmId:Le(w),applicationId:null,name:b,version:1,serialNumber:u?i:void 0,siteUid:null,customerUid:E}}async function Ia(t,e,F,i,a,E,s=!1){if(E.length>0)for(let C of E){let[l,d]=C.split("@");await y0.installDependency(t,e,F,i,a,l,d||null,s)}else await y0.installDependencies(t,e,F,i,a);await y0.installNpmInApmParts(t,e,F)}async function Ma(t,e,F,i,a=null,E=!0,s){return await O.validateBasicManifest(t,e,null),X0.buildAll(t,e,F,i,a,E,s)}async function Sa(t){let e=null;if(t){e=t==="*"?t:t.split(";");let F=await O.validateRegistryAllowedBackends(e);if(F)throw new Error(F)}return e}async function Ra(t,e,F,i,a,E,s,C){F.info("Publishing package...");let l=await Sa(E);if(C)await X0.publishArchive(t,e,F,a,i,C,s,l);else return await X0.validatePublishSettings(t,e,a,i),X0.release(t,e,F,i,a,s,l)}async function Oa(t,e,F,i,a,E){return X0.pack(t,e,F,i,a,E)}0&&(module.exports={APM,DDE,DDE_Core,DFILES,DLO,DefaultFiles,Dependencies,DeviceProfiles,Diagnostics,ENV,Globals,Helper,HttpMethod,Library,Log,Manifest,MyDatanetClient,Package,Registry,build,buildDevelopmentInstallInfo,generateDevApmId,install,pack,publish});
|