mirror of
https://github.com/exogen/t2-mapper.git
synced 2026-03-23 14:21:01 +00:00
1 line
No EOL
108 KiB
JavaScript
1 line
No EOL
108 KiB
JavaScript
import{r as e,t}from"./chunk-DECur_0Z.js";import{St as n,nt as r}from"./three.module-CwgFV8Kd.js";var i={},a=(function(e,t,n,r,a){var o=new Worker(i[t]||(i[t]=URL.createObjectURL(new Blob([e+`;addEventListener("error",function(e){e=e.error;postMessage({$e$:[e.message,e.code,e.stack]})})`],{type:`text/javascript`}))));return o.onmessage=function(e){var t=e.data,n=t.$e$;if(n){var r=Error(n[0]);r.code=n[1],r.stack=n[2],a(r,null)}else a(null,t)},o.postMessage(n,r),o}),o=Uint8Array,s=Uint16Array,c=Int32Array,l=new o([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),u=new o([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),d=new o([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),f=function(e,t){for(var n=new s(31),r=0;r<31;++r)n[r]=t+=1<<e[r-1];for(var i=new c(n[30]),r=1;r<30;++r)for(var a=n[r];a<n[r+1];++a)i[a]=a-n[r]<<5|r;return{b:n,r:i}},p=f(l,2),m=p.b,h=p.r;m[28]=258,h[258]=28;var g=f(u,0),_=g.b;g.r;for(var v=new s(32768),y=0;y<32768;++y){var b=(y&43690)>>1|(y&21845)<<1;b=(b&52428)>>2|(b&13107)<<2,b=(b&61680)>>4|(b&3855)<<4,v[y]=((b&65280)>>8|(b&255)<<8)>>1}for(var x=(function(e,t,n){for(var r=e.length,i=0,a=new s(t);i<r;++i)e[i]&&++a[e[i]-1];var o=new s(t);for(i=1;i<t;++i)o[i]=o[i-1]+a[i-1]<<1;var c;if(n){c=new s(1<<t);var l=15-t;for(i=0;i<r;++i)if(e[i])for(var u=i<<4|e[i],d=t-e[i],f=o[e[i]-1]++<<d,p=f|(1<<d)-1;f<=p;++f)c[v[f]>>l]=u}else for(c=new s(r),i=0;i<r;++i)e[i]&&(c[i]=v[o[e[i]-1]++]>>15-e[i]);return c}),S=new o(288),y=0;y<144;++y)S[y]=8;for(var y=144;y<256;++y)S[y]=9;for(var y=256;y<280;++y)S[y]=7;for(var y=280;y<288;++y)S[y]=8;for(var C=new o(32),y=0;y<32;++y)C[y]=5;x(S,9,0);var ee=x(S,9,1);x(C,5,0);var w=x(C,5,1),T=function(e){for(var t=e[0],n=1;n<e.length;++n)e[n]>t&&(t=e[n]);return t},E=function(e,t,n){var r=t/8|0;return(e[r]|e[r+1]<<8)>>(t&7)&n},D=function(e,t){var n=t/8|0;return(e[n]|e[n+1]<<8|e[n+2]<<16)>>(t&7)},O=function(e){return(e+7)/8|0},te=function(e,t,n){return(t==null||t<0)&&(t=0),(n==null||n>e.length)&&(n=e.length),new o(e.subarray(t,n))},k=[`unexpected EOF`,`invalid block type`,`invalid length/literal`,`invalid distance`,`stream finished`,`no stream handler`,,`no callback`,`invalid UTF-8 data`,`extra field too long`,`date not in range 1980-2099`,`filename too long`,`stream finishing`,`invalid zip data`],A=function(e,t,n){var r=Error(t||k[e]);if(r.code=e,Error.captureStackTrace&&Error.captureStackTrace(r,A),!n)throw r;return r},j=function(e,t,n,r){var i=e.length,a=r?r.length:0;if(!i||t.f&&!t.l)return n||new o(0);var s=!n,c=s||t.i!=2,f=t.i;s&&(n=new o(i*3));var p=function(e){var t=n.length;if(e>t){var r=new o(Math.max(t*2,e));r.set(n),n=r}},h=t.f||0,g=t.p||0,v=t.b||0,y=t.l,b=t.d,S=t.m,C=t.n,k=i*8;do{if(!y){h=E(e,g,1);var j=E(e,g+1,3);if(g+=3,!j){var M=O(g)+4,ne=e[M-4]|e[M-3]<<8,re=M+ne;if(re>i){f&&A(0);break}c&&p(v+ne),n.set(e.subarray(M,re),v),t.b=v+=ne,t.p=g=re*8,t.f=h;continue}else if(j==1)y=ee,b=w,S=9,C=5;else if(j==2){var N=E(e,g,31)+257,ie=E(e,g+10,15)+4,ae=N+E(e,g+5,31)+1;g+=14;for(var oe=new o(ae),se=new o(19),P=0;P<ie;++P)se[d[P]]=E(e,g+P*3,7);g+=ie*3;for(var ce=T(se),le=(1<<ce)-1,ue=x(se,ce,1),P=0;P<ae;){var de=ue[E(e,g,le)];g+=de&15;var M=de>>4;if(M<16)oe[P++]=M;else{var fe=0,pe=0;for(M==16?(pe=3+E(e,g,3),g+=2,fe=oe[P-1]):M==17?(pe=3+E(e,g,7),g+=3):M==18&&(pe=11+E(e,g,127),g+=7);pe--;)oe[P++]=fe}}var me=oe.subarray(0,N),F=oe.subarray(N);S=T(me),C=T(F),y=x(me,S,1),b=x(F,C,1)}else A(1);if(g>k){f&&A(0);break}}c&&p(v+131072);for(var he=(1<<S)-1,ge=(1<<C)-1,I=g;;I=g){var fe=y[D(e,g)&he],L=fe>>4;if(g+=fe&15,g>k){f&&A(0);break}if(fe||A(2),L<256)n[v++]=L;else if(L==256){I=g,y=null;break}else{var _e=L-254;if(L>264){var P=L-257,ve=l[P];_e=E(e,g,(1<<ve)-1)+m[P],g+=ve}var R=b[D(e,g)&ge],z=R>>4;R||A(3),g+=R&15;var F=_[z];if(z>3){var ve=u[z];F+=D(e,g)&(1<<ve)-1,g+=ve}if(g>k){f&&A(0);break}c&&p(v+131072);var ye=v+_e;if(v<F){var B=a-F,be=Math.min(F,ye);for(B+v<0&&A(3);v<be;++v)n[v]=r[B+v]}for(;v<ye;++v)n[v]=n[v-F]}}t.l=y,t.p=I,t.b=v,t.f=h,y&&(h=1,t.m=S,t.d=b,t.n=C)}while(!h);return v!=n.length&&s?te(n,0,v):n.subarray(0,v)},M=new o(0),ne=function(e,t){var n={};for(var r in e)n[r]=e[r];for(var r in t)n[r]=t[r];return n},re=function(e,t,n){for(var r=e(),i=e.toString(),a=i.slice(i.indexOf(`[`)+1,i.lastIndexOf(`]`)).replace(/\s+/g,``).split(`,`),o=0;o<r.length;++o){var s=r[o],c=a[o];if(typeof s==`function`){t+=`;`+c+`=`;var l=s.toString();if(s.prototype)if(l.indexOf(`[native code]`)!=-1){var u=l.indexOf(` `,8)+1;t+=l.slice(u,l.indexOf(`(`,u))}else for(var d in t+=l,s.prototype)t+=`;`+c+`.prototype.`+d+`=`+s.prototype[d].toString();else t+=l}else n[c]=s}return t},N=[],ie=function(e){var t=[];for(var n in e)e[n].buffer&&t.push((e[n]=new e[n].constructor(e[n])).buffer);return t},ae=function(e,t,n,r){if(!N[n]){for(var i=``,o={},s=e.length-1,c=0;c<s;++c)i=re(e[c],i,o);N[n]={c:re(e[s],i,o),e:o}}var l=ne({},N[n].e);return a(N[n].c+`;onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage=`+t.toString()+`}`,n,l,ie(l),r)},oe=function(){return[o,s,c,l,u,d,m,_,ee,w,v,k,x,T,E,D,O,te,A,j,ue,se,P]},se=function(e){return postMessage(e,[e.buffer])},P=function(e){return e&&{out:e.size&&new o(e.size),dictionary:e.dictionary}},ce=function(e,t,n,r,i,a){var o=ae(n,r,i,function(e,t){o.terminate(),a(e,t)});return o.postMessage([e,t],t.consume?[e.buffer]:[]),function(){o.terminate()}};function le(e,t,n){return n||(n=t,t={}),typeof n!=`function`&&A(7),ce(e,t,[oe],function(e){return se(ue(e.data[0],P(e.data[1])))},1,n)}function ue(e,t){return j(e,{i:2},t&&t.out,t&&t.dictionary)}var de=typeof TextDecoder<`u`&&new TextDecoder;try{de.decode(M,{stream:!0})}catch{}var fe=t(((e,t)=>{var n=1e3,r=n*60,i=r*60,a=i*24,o=a*7,s=a*365.25;t.exports=function(e,t){t||={};var n=typeof e;if(n===`string`&&e.length>0)return c(e);if(n===`number`&&isFinite(e))return t.long?u(e):l(e);throw Error(`val is not a non-empty string or a valid number. val=`+JSON.stringify(e))};function c(e){if(e=String(e),!(e.length>100)){var t=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(t){var c=parseFloat(t[1]);switch((t[2]||`ms`).toLowerCase()){case`years`:case`year`:case`yrs`:case`yr`:case`y`:return c*s;case`weeks`:case`week`:case`w`:return c*o;case`days`:case`day`:case`d`:return c*a;case`hours`:case`hour`:case`hrs`:case`hr`:case`h`:return c*i;case`minutes`:case`minute`:case`mins`:case`min`:case`m`:return c*r;case`seconds`:case`second`:case`secs`:case`sec`:case`s`:return c*n;case`milliseconds`:case`millisecond`:case`msecs`:case`msec`:case`ms`:return c;default:return}}}}function l(e){var t=Math.abs(e);return t>=a?Math.round(e/a)+`d`:t>=i?Math.round(e/i)+`h`:t>=r?Math.round(e/r)+`m`:t>=n?Math.round(e/n)+`s`:e+`ms`}function u(e){var t=Math.abs(e);return t>=a?d(e,t,a,`day`):t>=i?d(e,t,i,`hour`):t>=r?d(e,t,r,`minute`):t>=n?d(e,t,n,`second`):e+` ms`}function d(e,t,n,r){var i=t>=n*1.5;return Math.round(e/n)+` `+r+(i?`s`:``)}})),pe=t(((e,t)=>{function n(e){n.debug=n,n.default=n,n.coerce=c,n.disable=o,n.enable=i,n.enabled=s,n.humanize=fe(),n.destroy=l,Object.keys(e).forEach(t=>{n[t]=e[t]}),n.names=[],n.skips=[],n.formatters={};function t(e){let t=0;for(let n=0;n<e.length;n++)t=(t<<5)-t+e.charCodeAt(n),t|=0;return n.colors[Math.abs(t)%n.colors.length]}n.selectColor=t;function n(e){let t,i=null,a,o;function s(...e){if(!s.enabled)return;let r=s,i=Number(new Date);r.diff=i-(t||i),r.prev=t,r.curr=i,t=i,e[0]=n.coerce(e[0]),typeof e[0]!=`string`&&e.unshift(`%O`);let a=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,(t,i)=>{if(t===`%%`)return`%`;a++;let o=n.formatters[i];if(typeof o==`function`){let n=e[a];t=o.call(r,n),e.splice(a,1),a--}return t}),n.formatArgs.call(r,e),(r.log||n.log).apply(r,e)}return s.namespace=e,s.useColors=n.useColors(),s.color=n.selectColor(e),s.extend=r,s.destroy=n.destroy,Object.defineProperty(s,`enabled`,{enumerable:!0,configurable:!1,get:()=>i===null?(a!==n.namespaces&&(a=n.namespaces,o=n.enabled(e)),o):i,set:e=>{i=e}}),typeof n.init==`function`&&n.init(s),s}function r(e,t){let r=n(this.namespace+(t===void 0?`:`:t)+e);return r.log=this.log,r}function i(e){n.save(e),n.namespaces=e,n.names=[],n.skips=[];let t=(typeof e==`string`?e:``).trim().replace(/\s+/g,`,`).split(`,`).filter(Boolean);for(let e of t)e[0]===`-`?n.skips.push(e.slice(1)):n.names.push(e)}function a(e,t){let n=0,r=0,i=-1,a=0;for(;n<e.length;)if(r<t.length&&(t[r]===e[n]||t[r]===`*`))t[r]===`*`?(i=r,a=n,r++):(n++,r++);else if(i!==-1)r=i+1,a++,n=a;else return!1;for(;r<t.length&&t[r]===`*`;)r++;return r===t.length}function o(){let e=[...n.names,...n.skips.map(e=>`-`+e)].join(`,`);return n.enable(``),e}function s(e){for(let t of n.skips)if(a(e,t))return!1;for(let t of n.names)if(a(e,t))return!0;return!1}function c(e){return e instanceof Error?e.stack||e.message:e}function l(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return n.enable(n.load()),n}t.exports=n})),me=t(((e,t)=>{e.formatArgs=r,e.save=i,e.load=a,e.useColors=n,e.storage=o(),e.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),e.colors=`#0000CC.#0000FF.#0033CC.#0033FF.#0066CC.#0066FF.#0099CC.#0099FF.#00CC00.#00CC33.#00CC66.#00CC99.#00CCCC.#00CCFF.#3300CC.#3300FF.#3333CC.#3333FF.#3366CC.#3366FF.#3399CC.#3399FF.#33CC00.#33CC33.#33CC66.#33CC99.#33CCCC.#33CCFF.#6600CC.#6600FF.#6633CC.#6633FF.#66CC00.#66CC33.#9900CC.#9900FF.#9933CC.#9933FF.#99CC00.#99CC33.#CC0000.#CC0033.#CC0066.#CC0099.#CC00CC.#CC00FF.#CC3300.#CC3333.#CC3366.#CC3399.#CC33CC.#CC33FF.#CC6600.#CC6633.#CC9900.#CC9933.#CCCC00.#CCCC33.#FF0000.#FF0033.#FF0066.#FF0099.#FF00CC.#FF00FF.#FF3300.#FF3333.#FF3366.#FF3399.#FF33CC.#FF33FF.#FF6600.#FF6633.#FF9900.#FF9933.#FFCC00.#FFCC33`.split(`.`);function n(){if(typeof window<`u`&&window.process&&(window.process.type===`renderer`||window.process.__nwjs))return!0;if(typeof navigator<`u`&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let e;return typeof document<`u`&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<`u`&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<`u`&&navigator.userAgent&&(e=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(e[1],10)>=31||typeof navigator<`u`&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function r(e){if(e[0]=(this.useColors?`%c`:``)+this.namespace+(this.useColors?` %c`:` `)+e[0]+(this.useColors?`%c `:` `)+`+`+t.exports.humanize(this.diff),!this.useColors)return;let n=`color: `+this.color;e.splice(1,0,n,`color: inherit`);let r=0,i=0;e[0].replace(/%[a-zA-Z%]/g,e=>{e!==`%%`&&(r++,e===`%c`&&(i=r))}),e.splice(i,0,n)}e.log=console.debug||console.log||(()=>{});function i(t){try{t?e.storage.setItem(`debug`,t):e.storage.removeItem(`debug`)}catch{}}function a(){let t;try{t=e.storage.getItem(`debug`)||e.storage.getItem(`DEBUG`)}catch{}return!t&&typeof process<`u`&&`env`in process&&(t={}.DEBUG),t}function o(){try{return localStorage}catch{}}t.exports=pe()(e);var{formatters:s}=t.exports;s.j=function(e){try{return JSON.stringify(e)}catch(e){return`[UnexpectedJSONParseError]: `+e.message}}})),F=[0,0,0,0,0,0,0,0,0,329,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2809,68,0,27,0,58,3,62,4,7,0,0,15,65,554,3,394,404,189,117,30,51,27,15,34,32,80,1,142,3,142,39,0,144,125,44,122,275,70,135,61,127,8,12,113,246,122,36,185,1,149,309,335,12,11,14,54,151,0,0,2,0,0,211,0,2090,344,736,993,2872,701,605,646,1552,328,305,1240,735,1533,1713,562,3,1775,1149,1469,979,407,553,59,279,31,0,0,0,68,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,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,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,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,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,0,0,0,0],he=1;function ge(e){return e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122}function I(e){return e.node?e.node.pop:e.leaf.pop}var L=new class{nodes=[];leaves=[];tablesBuilt=!1;buildTables(){if(this.tablesBuilt)return;this.tablesBuilt=!0,this.leaves=[];for(let e=0;e<256;e++)this.leaves.push({pop:F[e]+(ge(e)?he:0)+he,symbol:e,numBits:0,code:0});this.nodes=[{pop:0,index0:0,index1:0}];let e=256,t=[];for(let e=0;e<256;e++)t.push({node:null,leaf:this.leaves[e]});for(;e!==1;){let n=4294967294,r=4294967295,i=-1,a=-1;for(let o=0;o<e;o++){let e=I(t[o]);e<n?(r=n,a=i,n=e,i=o):e<r&&(r=e,a=o)}let o={pop:I(t[i])+I(t[a]),index0:this.determineIndex(t[i]),index1:this.determineIndex(t[a])};this.nodes.push(o);let s=i<a?i:a,c=i>a?i:a;t[s]={node:o,leaf:null},c!==e-1&&(t[c]=t[e-1]),e--}this.nodes[0]=t[0].node,this.generateCodes(0,0,0)}determineIndex(e){return e.leaf===null?this.nodes.indexOf(e.node):-(this.leaves.indexOf(e.leaf)+1)}generateCodes(e,t,n){if(t<0){let r=this.leaves[-(t+1)];r.code=e,r.numBits=n}else{let r=this.nodes[t];this.generateCodes(e,r.index0,n+1),this.generateCodes(e|1<<n,r.index1,n+1)}}readHuffBuffer(e){if(this.tablesBuilt||this.buildTables(),e.readFlag()){let t=e.readInt(8),n=[];for(let r=0;r<t;r++){let t=0;for(;;)if(t>=0)t=e.readFlag()?this.nodes[t].index1:this.nodes[t].index0;else{n.push(this.leaves[-(t+1)].symbol);break}}return String.fromCharCode(...n)}else{let t=e.readInt(8),n=e.readBytes(t);return String.fromCharCode(...n)}}},_e=class e{data;bitNum;maxReadBitNum;error;stringBuffer=null;constructor(e,t=0){this.data=e,this.bitNum=t,this.maxReadBitNum=e.length<<3,this.error=!1}getCurPos(){return this.bitNum}setCurPos(e){this.bitNum=e}getBytePosition(){return this.bitNum+7>>3}isError(){return this.error}isFull(){return this.bitNum>this.maxReadBitNum}getRemainingBits(){return this.maxReadBitNum-this.bitNum}getMaxPos(){return this.maxReadBitNum}readFlag(){if(this.bitNum>=this.maxReadBitNum)return this.error=!0,!1;let e=1<<(this.bitNum&7),t=(this.data[this.bitNum>>3]&e)!==0;return this.bitNum++,t}readInt(e){if(e===0)return 0;if(this.bitNum+e>this.maxReadBitNum)return this.error=!0,0;let t=this.bitNum>>3,n=this.bitNum&7;if(this.bitNum+=e,e+n<=32){let r=0,i=e+n+7>>3;for(let e=0;e<i&&t+e<this.data.length;e++)r|=this.data[t+e]<<e*8;return r>>>=n,e===32?r>>>0:r&(1<<e)-1}let r=0,i=e+n+7>>3;for(let e=0;e<i&&t+e<this.data.length;e++)r+=this.data[t+e]*2**(e*8);return r=Math.floor(r/2**n),e===32?r>>>0:r&(1<<e)-1}readSignedInt(e){return this.readFlag()?-this.readInt(e-1):this.readInt(e-1)}readFloat(e){return this.readInt(e)/((1<<e)-1)}readSignedFloat(e){return this.readInt(e)*2/((1<<e)-1)-1}readRangedU32(e,t){let n=t-e+1,r=Math.ceil(Math.log2(n))||1;return this.readInt(r)+e}readBitsBuffer(e){if(e===0)return new Uint8Array;let t=e+7>>3,n=new Uint8Array(t),r=this.bitNum>>3,i=this.bitNum&7,a=8-i;if(i===0)n.set(this.data.subarray(r,r+t));else{let e=this.data[r];for(let o=0;o<t;o++){let t=r+o+1<this.data.length?this.data[r+o+1]:0;n[o]=(e>>i|t<<a)&255,e=t}}let o=e&7;return o!==0&&(n[t-1]&=(1<<o)-1),this.bitNum+=e,n}readBytes(e){let t=this.readBitsBuffer(e*8);return Array.from(t)}readU8(){return this.readInt(8)}readU16(){return this.readInt(16)}readU32(){return this.readInt(32)}readS32(){return this.readU32()|0}static f32Buf=new ArrayBuffer(4);static f32View=new DataView(e.f32Buf);static f32U8=new Uint8Array(e.f32Buf);readF32(){if(this.bitNum+32>this.maxReadBitNum)return this.error=!0,0;let t=this.bitNum>>3,n=this.bitNum&7,r=e.f32U8;if(n===0)r[0]=this.data[t],r[1]=this.data[t+1],r[2]=this.data[t+2],r[3]=this.data[t+3];else{let e=8-n;for(let i=0;i<4;i++){let a=this.data[t+i],o=t+i+1<this.data.length?this.data[t+i+1]:0;r[i]=(a>>n|o<<e)&255}}return this.bitNum+=32,e.f32View.getFloat32(0,!0)}readBool(){return this.readU8()!==0}readNormalVector(e){let t=this.readSignedFloat(e+1)*Math.PI,n=this.readSignedFloat(e)*(Math.PI/2);return{x:Math.sin(t)*Math.cos(n),y:Math.cos(t)*Math.cos(n),z:Math.sin(n)}}readAffineTransform(){let e={x:this.readF32(),y:this.readF32(),z:this.readF32()},t=this.readF32(),n=this.readF32(),r=this.readF32(),i=Math.sqrt(Math.max(0,1-(t*t+n*n+r*r)));return this.readFlag()&&(i=-i),{position:e,rotation:{x:t,y:n,z:r,w:i}}}readString(){if(this.stringBuffer!==null&&this.readFlag()){let e=this.readInt(8),t=L.readHuffBuffer(this),n=this.stringBuffer.substring(0,e)+t;return this.stringBuffer=n,n}let e=L.readHuffBuffer(this);return this.stringBuffer!==null&&(this.stringBuffer=e),e}setStringBuffer(e){this.stringBuffer=e?``:null}skipBits(e){this.bitNum+=e}readPoint3F(){return{x:this.readF32(),y:this.readF32(),z:this.readF32()}}readCompressedPoint(e,t=.01){let n=this.readInt(2);if(n===3)return{x:this.readF32(),y:this.readF32(),z:this.readF32()};let r=[16,18,20][n],i=this.readSignedInt(r),a=this.readSignedInt(r),o=this.readSignedInt(r);return{x:e.x+i*t,y:e.y+a*t,z:e.z+o*t}}readMatrixF(){let e=Array(16);for(let t=0;t<16;t++)e[t]=this.readF32();return{elements:e,position:{x:e[3],y:e[7],z:e[11]}}}unpackNetString(){switch(this.readInt(2)){case 0:return``;case 1:return this.readString();case 2:return`\x01${this.readInt(10)}`;case 3:{let e=this.readFlag(),t;return t=this.readFlag()?this.readInt(7):this.readFlag()?this.readInt(15):this.readInt(31),e&&(t=-t),String(t)}default:return``}}savePos(){return this.bitNum}restorePos(e){this.bitNum=e,this.error=!1}getBuffer(){return this.data}},ve=1024,R=`AudioDescription.AudioEnvironment.AudioProfile.AudioSampleEnvironment.BombProjectileData.CameraData.CannedChatItem.CommanderIconData.DebrisData.DecalData.ELFProjectileData.EffectProfile.EnergyProjectileData.ExplosionData.FireballAtmosphereData.FlareProjectileData.FlyingVehicleData.ForceFieldBareData.GameBaseData.GrenadeProjectileData.HoverVehicleData.ItemData.JetEffectData.LightningData.LinearFlareProjectileData.LinearProjectileData.MissionMarkerData.ParticleData.ParticleEmissionDummyData.ParticleEmitterData.PlayerData.PrecipitationData.ProjectileData.RepairProjectileData.RunningLightData.SeekerProjectileData.SensorData.ShapeBaseData.ShapeBaseImageData.ShockLanceProjectileData.ShockwaveData.SimDataBlock.SniperProjectileData.SplashData.StaticShapeData.StationFXPersonalData.StationFXVehicleData.TSShapeConstructor.TargetProjectileData.TracerProjectileData.TriggerData.TurretData.TurretImageData.WheeledVehicleData`.split(`.`),z=`AIObjective.AudioEmitter.BeaconObject.BombProjectile.Camera.Debris.ELFProjectile.EnergyProjectile.FireballAtmosphere.FlareProjectile.FlyingVehicle.ForceFieldBare.GameBase.GrenadeProjectile.HoverVehicle.InteriorInstance.Item.Lightning.LinearFlareProjectile.LinearProjectile.Marker.MissionArea.MissionMarker.ParticleEmissionDummy.PhysicalZone.Player.Precipitation.Projectile.RepairProjectile.ScopeAlwaysShape.SeekerProjectile.ShapeBase.ShockLanceProjectile.Shockwave.SimpleNetObject.Sky.SniperProjectile.SpawnSphere.Splash.StaticShape.StationFXPersonal.StationFXVehicle.Sun.TSStatic.TargetProjectile.TerrainBlock.TracerProjectile.Trigger.Turret.VehicleBlocker.WaterBlock.WayPoint.WheeledVehicle`.split(`.`),ye=`CRCChallengeEvent.CRCChallengeResponseEvent.FogChallengeEvent.GhostAlwaysObjectEvent.GhostingMessageEvent.GravityEvent.LightningStrikeEvent.NetStringEvent.PathManagerEvent.RemoteCommandEvent.RemoveClientTargetTypeEvent.ResetClientTargetsEvent.SensorGroupColorEvent.SetMissionCRCEvent.SetObjectActiveImageEvent.SetSensorGroupEvent.SetServerTargetEvent.Sim2DAudioEvent.Sim3DAudioEvent.SimDataBlockEvent.SimTargetAudioEvent.SimVoiceStreamEvent.SimpleMessageEvent.TargetFreeEvent.TargetInfoEvent.TargetToEvent`.split(`.`),B=e(me(),1),be=(0,B.default)(`t2-demo-parser:ghosts`),xe=class{registry;ghostTracker;compressionPoint={x:0,y:0,z:0};controlParserByGhostIndex=new Map;dataBlockDataMap;lastSeqRecvdAtSend=Array(32).fill(0);lastSeqRecvd=0;highestAckedSeq=0;lastSendSeq=0;recvAckMask=0;connectSequence=0;lastRecvAckAck=0;_connectionEstablished=!1;nextRecvEventSeq=0;pendingGuaranteedEvents=[];controlObjectParsed=0;controlObjectFailed=0;eventsParsed=0;eventsFailed=0;ghostCreatesParsed=0;ghostUpdatesParsed=0;ghostDeletes=0;ghostsFailed=0;ghostsTrackerDiverged=0;packetsParsed=0;protocolRejected=0;protocolNoDispatch=0;constructor(e,t,n){this.registry=e,this.ghostTracker=t,this.dataBlockDataMap=n?.dataBlockDataMap,n?.connectionProtocolState&&this.setConnectionProtocolState(n.connectionProtocolState),typeof n?.nextRecvEventSeq==`number`&&(this.nextRecvEventSeq=n.nextRecvEventSeq>>>0)}getCompressionPoint(){return this.compressionPoint}getDataBlockDataMap(){return this.dataBlockDataMap}getConnectionContext(){let e=this.dataBlockDataMap;return{compressionPoint:this.compressionPoint,ghostTracker:this.ghostTracker,getDataBlockParser:e=>this.registry.getDataBlockParser(e),getDataBlockData:e?t=>e.get(t):void 0,getGhostParser:e=>this.registry.getGhostParser(e)}}_setNextRecvEventSeq(e){this.nextRecvEventSeq=e>>>0}setConnectionProtocolState(e){for(this.lastSeqRecvdAtSend=e.lastSeqRecvdAtSend.slice(0,32);this.lastSeqRecvdAtSend.length<32;)this.lastSeqRecvdAtSend.push(0);this.lastSeqRecvd=e.lastSeqRecvd>>>0,this.highestAckedSeq=e.highestAckedSeq>>>0,this.lastSendSeq=e.lastSendSeq>>>0,this.recvAckMask=e.ackMask>>>0,this.connectSequence=e.connectSequence>>>0,this.lastRecvAckAck=e.lastRecvAckAck>>>0,this._connectionEstablished=e.connectionEstablished}onSendPacketTrigger(){this.lastSendSeq=this.lastSendSeq+1>>>0,this.lastSeqRecvdAtSend[this.lastSendSeq&31]=this.lastSeqRecvd>>>0}applyProtocolHeader(e){if(e.connectSeqBit!==(this.connectSequence&1)||e.ackByteCount>4||e.packetType>2)return{accepted:!1,dispatchData:!1};let t=(e.seqNumber|this.lastSeqRecvd&4294966784)>>>0;if(t<this.lastSeqRecvd&&(t=t+512>>>0),this.lastSeqRecvd+31<t)return{accepted:!1,dispatchData:!1};let n=(e.highestAck|this.highestAckedSeq&4294966784)>>>0;if(n<this.highestAckedSeq&&(n=n+512>>>0),this.lastSendSeq<n)return{accepted:!1,dispatchData:!1};let r=t-this.lastSeqRecvd&31;this.recvAckMask=this.recvAckMask<<r>>>0,e.packetType===0&&(this.recvAckMask=(this.recvAckMask|1)>>>0);for(let t=this.highestAckedSeq+1;t<=n;t++)e.ackMask&1<<(n-t&31)&&(this.lastRecvAckAck=this.lastSeqRecvdAtSend[t&31]>>>0);t-this.lastRecvAckAck>32&&(this.lastRecvAckAck=t-32),this.highestAckedSeq=n;let i=this.lastSeqRecvd!==t&&e.packetType===0;return this.lastSeqRecvd=t,{accepted:!0,dispatchData:i}}parsePacket(e){let t=new _e(e),n=this.readDnetHeader(t),r=this.applyProtocolHeader(n);if(this.packetsParsed++,!r.accepted)return this.protocolRejected++,{dnetHeader:n,rateInfo:{},gameState:this.emptyGameState(),events:[],ghosts:[]};if(!r.dispatchData)return this.protocolNoDispatch++,{dnetHeader:n,rateInfo:{},gameState:this.emptyGameState(),events:[],ghosts:[]};let i=this.readRateInfo(t);t.setStringBuffer(!0);let a=this.readGameState(t),o=a.controlObjectDataStart===void 0||a.controlObjectData!==void 0,s=o?this.readEvents(t):[],c=s[s.length-1],l=!c||c.dataBitsEnd!==c.dataBitsStart,u=o&&l?t.getCurPos():void 0,d=o&&l?this.readGhosts(t,n.seqNumber):[];return t.setStringBuffer(!1),{dnetHeader:n,rateInfo:i,gameState:a,events:s,ghosts:d,ghostSectionStart:u}}readDnetHeader(e){let t=e.readFlag(),n=e.readInt(1),r=e.readInt(9),i=e.readInt(9),a=e.readInt(2),o=e.readInt(3);return{gameFlag:t,connectSeqBit:n,seqNumber:r,highestAck:i,packetType:a,ackByteCount:o,ackMask:o>0?e.readInt(8*o):0}}readRateInfo(e){let t={};return e.readFlag()&&(t.updateDelay=e.readInt(10),t.packetSize=e.readInt(10)),e.readFlag()&&(t.maxUpdateDelay=e.readInt(10),t.maxPacketSize=e.readInt(10)),t}readGameState(e){let t=e.readInt(32),n,r;e.readFlag()&&(e.readFlag()&&(n=e.readFloat(7)),e.readFlag()&&(r=e.readFloat(7)*1.5));let i,a;e.readFlag()&&(i=e.readFlag(),a=e.readFlag());let o,s,c,l,u;e.readFlag()&&(o=e.readFlag(),o&&(s={x:e.readF32(),y:e.readF32(),z:e.readF32()}),c=e.readRangedU32(0,2),c===1?e.readFlag()&&(l=e.readRangedU32(0,ve-1)):c===2&&(u={x:e.readF32(),y:e.readF32(),z:e.readF32()}));let d=e.readFlag(),f=e.readFlag(),p,m,h,g,_;if(e.readFlag())if(e.readFlag()){let v=e.readInt(10);p=v,m=e.getCurPos();let y=e.savePos(),b=this.ghostTracker.getGhost(v),x=b?this.registry.getGhostParser(b.classId):void 0,S=this.controlParserByGhostIndex.get(v),C=this.registry.getGhostParser(25),ee=this.registry.getGhostParser(4),w=[],T=new Set,E=e=>{e?.readPacketData&&(T.has(e.name)||(T.add(e.name),w.push(e)))};E(x),E(S),E(C),E(ee);let D=!1;for(let t of w){e.restorePos(y);try{let n=this.getConnectionContext(),r=t.readPacketData(e,n);if(e.getCurPos()-m<=0||e.isError())continue;g=r,h=e.getCurPos(),this.controlParserByGhostIndex.set(v,t),n.compressionPoint!==this.compressionPoint&&(this.compressionPoint=n.compressionPoint,_=this.compressionPoint),this.controlObjectParsed++,D=!0;break}catch{}}if(!D)return e.restorePos(y),h=m,this.controlObjectFailed++,{lastMoveAck:t,damageFlash:n,whiteOut:r,selfLocked:i,selfHomed:a,seekerTracking:o,seekerTrackingPos:s,seekerMode:c,seekerObjectGhostIndex:l,targetPos:u,pinged:d,jammed:f,controlObjectGhostIndex:p,controlObjectDataStart:m,controlObjectDataEnd:h,controlObjectData:g,targetVisibility:[]}}else _={x:e.readF32(),y:e.readF32(),z:e.readF32()},this.compressionPoint=_;let v=[];for(;e.readFlag();)v.push({index:e.readInt(4),mask:e.readInt(32)});let y;return e.readFlag()&&(y=e.readInt(8)),{lastMoveAck:t,damageFlash:n,whiteOut:r,selfLocked:i,selfHomed:a,seekerTracking:o,seekerTrackingPos:s,seekerMode:c,seekerObjectGhostIndex:l,targetPos:u,pinged:d,jammed:f,controlObjectGhostIndex:p,controlObjectDataStart:m,controlObjectDataEnd:h,controlObjectData:g,compressionPoint:_,targetVisibility:v.length>0?v:void 0,cameraFov:y}}readEvents(e){let t=[],n=!0,r=-2;for(;;){let i=e.readFlag();if(n&&!i){if(n=!1,!e.readFlag()){this.dispatchGuaranteedEvents(t);break}}else if(!n&&!i){this.dispatchGuaranteedEvents(t);break}else if(!i)break;let a,o;n||(a=e.readFlag()?r+1&127:e.readInt(7),r=a,o=a|this.nextRecvEventSeq&4294967168,o<this.nextRecvEventSeq&&(o+=128));let s=e.readInt(6)+255,c=e.getCurPos(),l=this.registry.getEventParser(s),u;if(l)try{let t=this.getConnectionContext();u=l.unpack(e,t),this.eventsParsed++}catch{return this.eventsFailed++,t.push({classId:s,guaranteed:!n,sequenceNumber:a,absoluteSequenceNumber:o,dataBitsStart:c,dataBitsEnd:c}),t}else return t.push({classId:s,guaranteed:!n,sequenceNumber:a,absoluteSequenceNumber:o,dataBitsStart:c,dataBitsEnd:c}),t;let d={classId:s,guaranteed:!n,sequenceNumber:a,absoluteSequenceNumber:o,dataBitsStart:c,dataBitsEnd:e.getCurPos(),parsedData:u};n?(t.push(d),u&&this.applyEventSideEffects(u)):o!==void 0&&this.enqueueGuaranteedEvent(o,d)}return t}enqueueGuaranteedEvent(e,t){let n=0;for(;n<this.pendingGuaranteedEvents.length&&this.pendingGuaranteedEvents[n].absoluteSequenceNumber<e;)n++;this.pendingGuaranteedEvents.splice(n,0,{absoluteSequenceNumber:e,event:t})}dispatchGuaranteedEvents(e){for(;this.pendingGuaranteedEvents.length>0&&this.pendingGuaranteedEvents[0].absoluteSequenceNumber===this.nextRecvEventSeq;){let t=this.pendingGuaranteedEvents.shift();if(!t)break;this.nextRecvEventSeq=this.nextRecvEventSeq+1>>>0,e.push(t.event),t.event.parsedData&&this.applyEventSideEffects(t.event.parsedData)}}applyEventSideEffects(e){let t=e.type;if(t===`GhostingMessageEvent`){let t=e.message;typeof t==`number`&&t===2&&this.ghostTracker.clear();return}if(t===`GhostAlwaysObjectEvent`){let t=e.ghostIndex,n=e.classId;if(typeof t==`number`&&typeof n==`number`){let e=this.registry.getGhostParser(n);this.ghostTracker.createGhost(t,n,e?.name??`unknown_${n}`)}}t===`SimDataBlockEvent`&&this.dataBlockDataMap&&e.dataBlockData&&typeof e.objectId==`number`&&this.dataBlockDataMap.set(e.objectId,e.dataBlockData)}readGhosts(e,t){let n=[];if(!e.readFlag())return n;let r=e.readInt(3)+3;for(;e.readFlag()&&!e.isError();){let i=e.readInt(r);if(e.isError())break;if(e.readFlag()){this.ghostTracker.deleteGhost(i),this.ghostDeletes++,n.push({index:i,type:`delete`,updateBitsStart:e.getCurPos(),updateBitsEnd:e.getCurPos()});continue}let a=!this.ghostTracker.hasGhost(i),o;o=a?e.readInt(7)+0:this.ghostTracker.getGhost(i)?.classId;let s=e.getCurPos(),c=o===void 0?void 0:this.registry.getGhostParser(o);if(a&&!c)return this.ghostsTrackerDiverged++,be(`DIVERGED pkt=%d seq=%d idx=%d classId=%d bit=%d/%d trackerSize=%d (server sent UPDATE for ghost not in our tracker; 7-bit classId is actually update data)`,this.packetsParsed,t,i,o,s,e.getMaxPos(),this.ghostTracker.size()),n.push({index:i,type:`create`,classId:o,updateBitsStart:s,updateBitsEnd:s}),n;let l=!1;if(c)try{let t=this.getConnectionContext();t.currentGhostIndex=i;let r=c.unpackUpdate(e,a,t),u=e.getCurPos();a&&o!==void 0?(this.ghostTracker.createGhost(i,o,c.name),this.ghostCreatesParsed++):this.ghostUpdatesParsed++,n.push({index:i,type:a?`create`:`update`,classId:o,updateBitsStart:s,updateBitsEnd:u,parsedData:r}),l=!0}catch(r){this.ghostsFailed++;let l=a?`create`:`update`,u=r instanceof Error?r.message:String(r);be(`FAIL pkt=%d seq=%d #%d idx=%d op=%s classId=%d parser=%s bit=%d/%d trackerSize=%d err=%s`,this.packetsParsed,t,n.length,i,l,o,c.name,s,e.getMaxPos(),this.ghostTracker.size(),u)}if(!l)return be(`STOP pkt=%d seq=%d idx=%d op=%s classId=%d parser=%s bit=%d/%d`,this.packetsParsed,t,i,a?`create`:`update`,o,c?.name??`NONE`,s,e.getMaxPos()),n.push({index:i,type:a?`create`:`update`,classId:o,updateBitsStart:s,updateBitsEnd:s}),n}return n}emptyGameState(){return{lastMoveAck:0,pinged:!1,jammed:!1}}},Se=class{eventParsers=new Map;ghostParsers=new Map;dataBlockParsers=new Map;eventCatalog=new Map;ghostCatalog=new Map;dataBlockCatalog=new Map;catalogEvent(e){this.eventCatalog.set(e.name,e)}catalogGhost(e){this.ghostCatalog.set(e.name,e)}catalogDataBlock(e){this.dataBlockCatalog.set(e.name,e)}bindDeterministicDataBlocks(e,t){let n=0,r=[];for(let i=0;i<e.length;i++){let a=e[i],o=this.dataBlockCatalog.get(a);o?(this.dataBlockParsers.set(t+i,o),n++):r.push(a)}return{bound:n,missing:r}}bindDeterministicEvents(e,t){let n=0,r=[];for(let i=0;i<e.length;i++){let a=e[i],o=this.eventCatalog.get(a);o?(this.eventParsers.set(t+i,o),n++):r.push(a)}return{bound:n,missing:r}}bindDeterministicGhosts(e,t){let n=0,r=[];for(let i=0;i<e.length;i++){let a=e[i],o=this.ghostCatalog.get(a);o?(this.ghostParsers.set(t+i,o),n++):r.push(a)}return{bound:n,missing:r}}getEventParser(e){return this.eventParsers.get(e)}getGhostParser(e){return this.ghostParsers.get(e)}getDataBlockParser(e){return this.dataBlockParsers.get(e)}getGhostCatalog(){return this.ghostCatalog}getEventBindings(){let e=new Map;for(let[t,n]of this.eventParsers)e.set(t,n.name);return e}getGhostBindings(){let e=new Map;for(let[t,n]of this.ghostParsers)e.set(t,n.name);return e}},Ce=class{ghosts=new Map;getGhost(e){return this.ghosts.get(e)}hasGhost(e){return this.ghosts.has(e)}createGhost(e,t,n){let r={classId:t,className:n,state:{}};return this.ghosts.set(e,r),r}deleteGhost(e){this.ghosts.delete(e)}getAllGhosts(){return this.ghosts}size(){return this.ghosts.size}clear(){this.ghosts.clear()}};function we(e){let t=e.readFlag()?e.readInt(16):0,n=e.readFlag()?e.readInt(16):0,r=e.readFlag()?e.readInt(16):0,i=e.readInt(6),a=e.readInt(6),o=e.readInt(6),s=e.readFlag(),c=[];for(let t=0;t<6;t++)c.push(e.readFlag());return{pyaw:t,ppitch:n,proll:r,px:i,py:a,pz:o,freeLook:s,trigger:c}}function Te(e){return{r:e.readInt(8)/255,g:e.readInt(8)/255,b:e.readInt(8)/255,a:e.readInt(8)/255}}function V(e){return e.readInt(11)}function H(e,t,n){let r={};return e.readFlag()&&(r.dataBlockId=V(e)),e.readFlag()&&(r.targetId=e.readFlag()?e.readInt(9):-1),r}function U(e,t,n){let r=H(e,t,n);if(!e.readFlag())return r;if(e.readFlag()&&(r.damageLevel=e.readFloat(6),r.damageState=e.readInt(2),r.blowApart=e.readFlag(),r.damageDir=e.readNormalVector(8)),e.readFlag()){let t=[];for(let n=0;n<4;n++)if(e.readFlag()){let r=e.readFlag(),i={index:n,playing:r};r&&(i.profileId=V(e)),t.push(i)}t.length>0&&(r.sounds=t)}if(e.readFlag()){let t=[];for(let n=0;n<4;n++)e.readFlag()&&t.push({index:n,sequence:e.readInt(5),state:e.readInt(2),forward:e.readFlag(),atEnd:e.readFlag()});t.length>0&&(r.threads=t)}let i=!1;if(e.readFlag()){let n=[];for(let r=0;r<8;r++)if(e.readFlag()){let a={index:r};e.readFlag()?a.dataBlockId=V(e):a.dataBlockId=0,e.readFlag()&&(e.readFlag()?(a.skinTagIndex=e.readInt(10),i=!0):(a.skinName=e.readString(),i=!0)),a.triggerDown=e.readFlag(),a.loaded=e.readFlag(),a.ammo=e.readFlag(),a.wet=e.readFlag(),a.target=e.readFlag(),a.fireCount=e.readInt(3),t&&(a.imageExtraFlag=e.readFlag()),n.push(a)}n.length>0&&(r.images=n)}if(e.readFlag()){if(e.readFlag()){r.stateAEnabled=e.readFlag(),r.stateB=e.readFlag();let t=e.readFlag();r.hasInvulnerability=t,t?(r.invulnerabilityVisual=e.readFlag(),r.invulnerabilityTicks=e.readU32()):r.binaryCloak=e.readFlag()}if(e.readFlag())if(e.readFlag()){let t=e.readFlag();r.stateBMode=t,t?r.energyPackOn=!0:r.energyPackOn=!1}else r.shieldNormal=e.readNormalVector(8),r.energyPercent=e.readFloat(5);e.readFlag()&&(r.stateValue1=e.readU32(),r.stateValue2=e.readU32())}return i&&(r.imageSkinDirty=!0),e.readFlag()&&(e.readFlag()?(r.mountObject=e.readInt(10),r.mountNode=e.readInt(5)):r.mountObject=-1),r}function Ee(e,t,n){let r=U(e,t,n);if(e.readFlag()&&(r.impactSound=e.readInt(3)),e.readFlag()&&(r.action=e.readInt(8),r.actionHoldAtEnd=e.readFlag(),r.actionAtEnd=e.readFlag(),r.actionFirstPerson=e.readFlag(),r.actionAtEnd||e.readFlag()&&(r.actionAnimPos=e.readSignedFloat(6))),e.readFlag()&&(r.armAction=e.readInt(8)),e.readFlag())return r;if(e.readFlag()){if(r.actionState=e.readInt(3),e.readFlag()&&(r.recoverTicks=e.readInt(7)),r.moveFlag0=e.readFlag(),r.moveFlag1=e.readFlag(),r.position=e.readCompressedPoint(n.compressionPoint),e.readFlag()){let t=e.readInt(13)/32,n=e.readNormalVector(10);r.velocity={x:n.x*t,y:n.y*t,z:n.z*t}}else r.velocity={x:0,y:0,z:0};r.headX=e.readSignedFloat(6),r.headZ=e.readSignedFloat(6),r.rotationZ=e.readFloat(7)*2*Math.PI,r.move=we(e),r.allowWarp=e.readFlag()}return r.energy=e.readFloat(5),r}function De(e,t){let n={};if(n.energyLevel=e.readF32(),n.rechargeRate=e.readF32(),n.actionState=e.readInt(3),e.readFlag()&&(n.recoverTicks=e.readInt(7)),e.readFlag()&&(n.jumpDelay=e.readInt(7)),e.readFlag()){let r={x:e.readF32(),y:e.readF32(),z:e.readF32()};n.position=r,t.compressionPoint=r,n.velocity={x:e.readF32(),y:e.readF32(),z:e.readF32()},n.jumpSurfaceLastContact=e.readInt(4)}if(n.headX=e.readF32(),n.headZ=e.readF32(),n.rotationZ=e.readF32(),e.readFlag()){let r=e.readInt(10);n.controlObjectGhost=r;let i=t.ghostTracker.getGhost(r),a=i?t.getGhostParser?.(i.classId):void 0;if(a?.readPacketData){let i=t.currentGhostIndex;t.currentGhostIndex=r,n.controlObjectData=a.readPacketData(e,t),t.currentGhostIndex=i}}return n.disableMove=e.readFlag(),n.pilot=e.readFlag(),n}function Oe(e,t,n){let r=U(e,t,n);return r.jetting=e.readFlag(),e.readFlag()?(r._controlledEarlyReturn=!0,r):(r.steeringYaw=e.readFloat(9),r.steeringPitch=e.readFloat(9),r.move=we(e),r.frozen=e.readFlag(),e.readFlag()&&(r.position=e.readCompressedPoint(n.compressionPoint),r.angPosition={x:e.readF32(),y:e.readF32(),z:e.readF32(),w:e.readF32()},r.linMomentum=e.readPoint3F(),r.angMomentum=e.readPoint3F()),e.readFlag()&&(r.energy=e.readFloat(8)),r)}function ke(e,t){let n={};n.energyLevel=e.readF32(),n.rechargeRate=e.readF32(),n.steering={x:e.readF32(),y:e.readF32()};let r={x:e.readF32(),y:e.readF32(),z:e.readF32()};return n.linPosition=r,n.angPosition={x:e.readF32(),y:e.readF32(),z:e.readF32(),w:e.readF32()},n.linMomentum=e.readPoint3F(),n.angMomentum=e.readPoint3F(),n.disableMove=e.readFlag(),n.frozen=e.readFlag(),t.compressionPoint=r,n}function Ae(e,t){let n=ke(e,t);n.braking=e.readFlag();let r=4,i=t.currentGhostIndex;if(i!==void 0){let e=bt.get(i);e!==void 0&&(r=e)}let a=[];for(let t=0;t<r;t++)a.push({avel:e.readF32(),Dy:e.readF32(),Dx:e.readF32()});return n.wheels=a,n}function je(e,t,n){let r=Oe(e,t,n);return e.readFlag()?r:(r.createHeightOn=e.readFlag(),r.thrustDirection=e.readInt(3),r)}function Me(e,t,n){let r=Oe(e,t,n);return r.thrustDirection=e.readInt(3),r}function Ne(e,t,n){let r=U(e,t,n);if(e.readFlag()&&(r.rotate=e.readFlag(),r.isStatic=e.readFlag(),r.collideable=e.readFlag(),e.readFlag()&&(r.scale=e.readPoint3F())),e.readFlag()&&(r.collisionObject=e.readInt(10)),e.readFlag()&&(r.rotation={zSign:e.readFlag()?-1:1,angle:e.readF32()}),e.readFlag()){r.position=e.readPoint3F();let t=e.readFlag();r.atRest=t,t||(r.velocity=e.readPoint3F()),r.warp=e.readFlag()}return r}function Pe(e,t,n){let r=U(e,t,n);return e.readFlag()&&(r.transform=e.readAffineTransform(),r.position=r.transform.position,r.scale=e.readPoint3F()),r.powered=e.readFlag(),r}function Fe(e,t,n){return Pe(e,t,n)}function Ie(e,t,n){return{position:e.readPoint3F()}}function Le(e,t,n){return{message:e.readString()}}function Re(e,t,n){let r=Pe(e,t,n);return e.readFlag()&&(r.beaconType=e.readInt(2)),r}function ze(e,t,n){let r=U(e,t,n);return e.readFlag()&&(r.transform=e.readAffineTransform(),r.position=r.transform.position,r.scale=e.readPoint3F()),r}function Be(e,t,n){let r=H(e,t,n);r.value0=e.readF32(),r.value1=e.readF32(),r.value2=e.readF32(),r.value3=e.readF32(),r.value4=e.readF32(),r.value5=e.readF32(),r.bool0=e.readBool(),r.bool1=e.readBool(),r.bool2=e.readBool(),r.bool3=e.readBool(),r.value6=e.readF32(),r.value7=e.readF32(),r.value8=e.readF32(),r.value9=e.readF32(),r.value10=e.readF32(),r.value11=e.readF32(),r.bool4=e.readBool(),r.bool5=e.readBool(),r.value12=e.readF32(),r.value13=e.readF32(),r.value14=e.readF32(),r.bool6=e.readBool(),r.string0=e.readString(),r.string1=e.readString();let i=[];for(let t=0;t<2;t++)i.push(e.readFlag()?V(e):-1);return r.objectRefs=i,r.objectRef2=e.readFlag()?V(e):-1,r}function Ve(e,t,n){return H(e,t,n)}function He(e,t,n){let r={};return e.readFlag()&&(r.dataBlockId=V(e)),e.readFlag()&&(r.targetId=e.readFlag()?e.readInt(9):-1),e.readFlag()?(r.position={x:e.readF32(),y:e.readF32(),z:e.readF32()},r.velocity={x:e.readF32(),y:e.readF32(),z:e.readF32()},r.currTick=e.readInt(12),e.readFlag()&&(r.resetFlag=!0),e.readFlag()&&(r.explodePoint={x:e.readF32(),y:e.readF32(),z:e.readF32()},r.explodeNormal={x:e.readF32(),y:e.readF32(),z:e.readF32()}),e.readFlag()?(r.sourceObject=e.readInt(11),r.sourceSlot=e.readInt(3)):(r.sourceObject=-1,r.sourceSlot=-1),e.readFlag()?r.vehicleObject=e.readInt(11):r.vehicleObject=0,r):(e.readFlag()&&(r.position={x:e.readF32(),y:e.readF32(),z:e.readF32()},r.velocity={x:e.readF32(),y:e.readF32(),z:e.readF32()}),e.readFlag()?(r.endPoint={x:e.readF32(),y:e.readF32(),z:e.readF32()},r.endNormal={x:e.readF32(),y:e.readF32(),z:e.readF32()},r):r)}function Ue(e,t,n){let r=H(e,t,n);return e.readFlag()?(r.position=e.readPoint3F(),r.velocity=e.readPoint3F(),r.currTick=e.readRangedU32(0,4095),r.quickSplash=e.readFlag(),e.readFlag()&&(r.explodePoint=e.readPoint3F(),r.explodeNormal=e.readPoint3F()),e.readFlag()&&(r.sourceObject=e.readRangedU32(0,1024),r.sourceSlot=e.readRangedU32(0,7)),e.readFlag()&&(r.vehicleObject=e.readRangedU32(0,1024))):(e.readFlag()&&(r.position=e.readPoint3F(),r.velocity=e.readPoint3F()),e.readFlag()&&(r.explodePoint=e.readPoint3F(),r.explodeNormal=e.readPoint3F())),r}function We(e,t,n){let r=H(e,t,n);return e.readFlag()?(r.position={x:e.readF32(),y:e.readF32(),z:e.readF32()},r.velocity={x:e.readF32(),y:e.readF32(),z:e.readF32()},r.orientation={x:e.readF32(),y:e.readF32(),z:e.readF32()},e.readFlag()?(r.sourceObject=e.readInt(11),r.sourceSlot=e.readInt(3)):(r.sourceObject=-1,r.sourceSlot=-1),e.readFlag()?e.readFlag()?(r.targetGhost=e.readInt(11),r.targetMode=0):(r.targetDirection={x:e.readF32(),y:e.readF32(),z:e.readF32()},r.targetMode=1):r.targetMode=2,r.timeoutReset=e.readFlag(),r):e.readFlag()?(r.explodePosition={x:e.readF32(),y:e.readF32(),z:e.readF32()},r.explodeNormal={x:e.readF32(),y:e.readF32(),z:e.readF32()},r):(r.position={x:e.readF32(),y:e.readF32(),z:e.readF32()},r.velocity={x:e.readF32(),y:e.readF32(),z:e.readF32()},e.readFlag()?e.readFlag()?(r.targetGhost=e.readInt(11),r.targetMode=0):(r.targetDirection={x:e.readF32(),y:e.readF32(),z:e.readF32()},r.targetMode=1):r.targetMode=2,r)}function Ge(e,t,n){let r=Pe(e,t,n);return e.readFlag()&&(r.capacitorEnergy=e.readFloat(8)),e.readFlag()||e.readFlag()&&(r.phi=e.readFloat(10),r.theta=e.readFloat(10),r.activationLevel=e.readFloat(8)),r}function Ke(e,t,n){let r={};return e.readFlag()?(r.crc=e.readU32(),r.interiorFile=e.readString(),r.showTerrainInside=e.readFlag(),r.transform=e.readMatrixF(),r.scale=e.readPoint3F(),r.alarmState=e.readFlag(),r.skinBase=e.readString(),e.readFlag()&&(r.audioProfileId=V(e)),e.readFlag()&&(r.audioEnvironmentId=V(e))):(e.readFlag()&&(r.transform=e.readMatrixF(),r.scale=e.readPoint3F()),r.alarmState=e.readFlag(),e.readFlag()&&(r.skinBase=e.readString()),e.readFlag()&&(e.readFlag()&&(r.audioProfileId=V(e)),e.readFlag()&&(r.audioEnvironmentId=V(e)))),r}function qe(e,t,n){let r=U(e,t,n);return e.readFlag()||e.readFlag()&&(r.posX=e.readF32(),r.posY=e.readF32(),r.posZ=e.readF32(),r.fovOrDist=e.readF32(),r.orbitParam=e.readF32()),r}function Je(e,t){let n={};n.energyLevel=e.readF32(),n.rechargeRate=e.readF32();let r={x:e.readF32(),y:e.readF32(),z:e.readF32()};n.position=r,n.rotX=e.readF32(),n.rotZ=e.readF32();let i=e.readInt(3);return n.cameraMode=i,(i===3||i===4)&&(n.minOrbitDist=e.readF32(),n.maxOrbitDist=e.readF32(),n.curOrbitDist=e.readF32(),i===3&&(n.observingClientObject=e.readFlag(),n.orbitObjectGhostIndex=e.readInt(10)),i===4&&(n.orbitPoint=e.readCompressedPoint(t.compressionPoint,.01))),t.compressionPoint=r,n}function Ye(e,t,n){let r=H(e,t,n);return e.readFlag()?e.readFlag()?(r.hidden=!0,r.explodePosition=e.readCompressedPoint(n.compressionPoint),r.explodeNormal=e.readNormalVector(14),r.endedWithDecal=e.readFlag()):(r.position=e.readCompressedPoint(n.compressionPoint),r.direction=e.readNormalVector(14),r.currTick=e.readRangedU32(0,511),e.readFlag()&&(r.sourceObject=e.readInt(10),r.sourceSlot=e.readRangedU32(0,7),e.readFlag()&&(r.excessVel=e.readRangedU32(0,255),r.excessDir=e.readNormalVector(7))),e.readFlag()&&(r.vehicleObject=e.readInt(10))):(r.explodePosition=e.readCompressedPoint(n.compressionPoint),r.explodeNormal=e.readNormalVector(14),r.endedWithDecal=e.readFlag()),r}function Xe(e,t,n){let r=H(e,t,n);return e.readFlag()&&e.readFlag()&&(r.sourceObject=e.readRangedU32(0,1024),r.sourceSlot=e.readRangedU32(0,7),r.targetObject=e.readRangedU32(0,1024)),r}function Ze(e,t,n){let r=H(e,t,n);return e.readFlag()&&e.readFlag()&&(r.sourceObject=e.readRangedU32(0,1024),r.sourceSlot=e.readRangedU32(0,7),r.repairingObject=e.readRangedU32(0,1024)),r}function Qe(e,t,n){let r=H(e,t,n);return e.readFlag()?(r.initialPosition=e.readPoint3F(),r.endPos=e.readPoint3F(),r.truncated=e.readFlag(),e.readFlag()&&(r.sourceObject=e.readRangedU32(0,1024),r.sourceSlot=e.readRangedU32(0,7),r.clientOwned=e.readFlag())):(e.readFlag()?(r.sourceObject=e.readRangedU32(0,1024),r.sourceSlot=e.readRangedU32(0,7),r.clientOwned=e.readFlag()):r.initialPosition=e.readPoint3F(),r.endPos=e.readPoint3F(),r.truncated=e.readFlag()),r}function $e(e,t,n){let r=ze(e,t,n);return e.readFlag()&&(r.name=e.readString()),e.readFlag()&&(r.teamId=e.readS32()),e.readFlag()&&(r.hidden=e.readFlag()),r}function et(e,t,n){let r=ze(e,t,n);return e.readFlag()&&(r.radius=e.readF32(),r.sphereWeight=e.readF32(),r.indoorWeight=e.readF32(),r.outdoorWeight=e.readF32()),r}function tt(e,t,n){let r=H(e,t,n);if((e.readFlag()||e.readFlag())&&(r.transform=e.readAffineTransform(),r.scale=e.readPoint3F()),e.readFlag()){let t=e.readInt(2);r.state=t,t===3?r.position=0:t===0||(r.position=e.readU32())}return r}function nt(e,t,n){let r={};return r.transform=e.readMatrixF(),r.scale=e.readPoint3F(),r.shapeName=e.readString(),r}function rt(e,t,n){let r={};if(e.readFlag()){r.crc=e.readU32(),r.terrFileName=e.readString(),r.detailTextureName=e.readString(),r.squareSize=e.readU32();let t=e.readU32(),n=[];for(let r=0;r<t;r++)n.push(e.readU32());r.emptySquareRuns=n,r.emptySquareRunCount=t}else if(e.readFlag()){let t=e.readU32(),n=[];for(let r=0;r<t;r++)n.push(e.readU32());r.emptySquareRuns=n,r.emptySquareRunCount=t}return r}function it(e,t,n){let r={};if(e.readFlag()){let t=[];for(let n=0;n<5;n++)t.push(e.readString());r.textures=t}if(e.readFlag()){let t=[];for(let n=0;n<19;n++)t.push(e.readF32());r.direction={x:t[0],y:t[1],z:t[2]},r.color={r:t[3],g:t[4],b:t[5],a:t[6]},r.ambient={r:t[7],g:t[8],b:t[9],a:t[10]},r.extraLightProps=t.slice(11)}return r}function at(e,t,n){let r={};if(e.readFlag()){r.materialList=e.readString(),r.fogColor={r:e.readF32(),g:e.readF32(),b:e.readF32()};let t=e.readU32();if(t>64)throw Error(`Invalid Sky fogVolumeCount: ${t}`);r.fogVolumeCount=t,r.useSkyTextures=e.readBool(),r.renderBottomTexture=e.readBool(),r.skySolidColor={r:e.readF32(),g:e.readF32(),b:e.readF32()},r.windEffectPrecipitation=e.readBool();let n=[];for(let r=0;r<t;r++)n.push({visibleDistance:e.readF32(),minHeight:e.readF32(),maxHeight:e.readF32(),color:{r:e.readF32(),g:e.readF32(),b:e.readF32()}});r.fogVolumes=n;let i=[];for(let t=0;t<3;t++)i.push({texture:e.readString(),heightPercent:e.readF32(),speed:e.readF32()});r.cloudLayers=i,r.windVelocity=e.readPoint3F(),r.stormCurrent=e.readF32(),e.readFlag()&&(r.stormInit={startPct:e.readF32(),duration:e.readF32(),indexOrMode:e.readF32(),startTime:e.readF32(),targetPct:e.readF32()})}return e.readFlag()&&(r.stormCloudsOn=e.readBool()),e.readFlag()&&(r.stormFogOn=e.readBool()),e.readFlag()&&(r.visibleDistance=e.readF32(),r.fogDistance=e.readF32()),e.readFlag()&&(r.stormType=e.readF32(),r.stormMagnitude=e.readF32()),e.readFlag()&&(r.stormTimeline={startPct:e.readF32(),duration:e.readF32(),indexOrMode:e.readF32()}),e.readFlag()&&(r.stormCloudProfile={enabled:e.readF32(),value0:e.readF32(),value1:e.readF32(),value2:e.readF32()}),e.readFlag()&&(r.windVelocity=e.readPoint3F()),r}function ot(e,t,n){let r=H(e,t,n);return e.readFlag()&&(r.position=e.readPoint3F(),r.scale=e.readPoint3F(),r.strikeWidth=e.readF32(),r.chanceToHitTarget=e.readF32(),r.strikeRadius=e.readF32(),r.boltStartRadius=e.readF32(),r.color={r:e.readF32(),g:e.readF32(),b:e.readF32()},r.fadeColor={r:e.readF32(),g:e.readF32(),b:e.readF32()},r.useFog=e.readInt(8)!==0,r.strikesPerMinute=e.readF32()),r}var st=2;function ct(e,t,n){let r={};r.transform=e.readAffineTransform(),r.scale=e.readPoint3F(),r.surfaceName=e.readString(),r.envMapName=e.readString();let i=[];for(let t=0;t<st;t++)i.push(e.readString());return r.submergeNames=i,r.liquidType=e.readS32(),r.density=e.readF32(),r.viscosity=e.readF32(),r.waveMagnitude=e.readF32(),r.surfaceOpacity=e.readF32(),r.envMapIntensity=e.readF32(),r.removeWetEdges=e.readInt(8)!==0,e.readFlag()&&(r.audioEnvironmentId=V(e)),r}function lt(e,t,n){let r={};return e.readFlag()&&(r.area={x:e.readS32(),y:e.readS32(),w:e.readS32(),h:e.readS32()},r.flightCeiling=e.readF32(),r.flightCeilingRange=e.readF32()),r}function ut(e,t,n){let r=H(e,t,n);return e.readFlag()&&(r.position=e.readPoint3F()),r}function dt(e,t,n){let r=H(e,t,n);return e.readFlag()&&(r.position=e.readPoint3F(),r.normal=e.readPoint3F()),r}function ft(e,t,n){let r=H(e,t,n);return e.readFlag()&&(r.dropRadius=e.readF32(),r.dropsPerMinute=e.readF32(),r.maxDropAngle=e.readF32(),r.minDropAngle=e.readF32(),r.startVelocity=e.readF32(),r.dropHeight=e.readF32(),r.dropDir=e.readPoint3F()),r}function pt(e,t,n){let r={};return r.transform=e.readMatrixF(),r.boundsMin=e.readPoint3F(),r.boundsMax=e.readPoint3F(),r}function mt(e,t,n){let r=H(e,t,n);return r.transform=e.readMatrixF(),r.scale=e.readPoint3F(),e.readFlag()&&(r.emitterDatablockId=V(e)),r}function ht(e,t,n){let r=H(e,t,n);if(e.readFlag()){r.percentage=e.readF32();let t=e.readS32();if(r.colorCount=t,t<0||t>3)throw Error(`Invalid precipitation colorCount: ${t}`);let n=[];for(let r=0;r<t;r++)n.push(Te(e));r.colors=n,r.offsetSpeed=e.readF32(),r.minVelocity=e.readF32(),r.maxVelocity=e.readF32(),r.maxDrops=e.readS32(),r.maxRadius=e.readF32(),e.readFlag()&&(r.stormLastTime=e.readF32(),r.stormTime=e.readF32(),r.stormEndPercentage=e.readF32())}return e.readFlag()&&(r.stormPrecipitationOn=e.readBool()),e.readFlag()&&(r.stormTime=e.readF32(),r.stormEndPercentage=e.readF32()),e.readFlag()&&(r.percentageUpdate=e.readF32()),r}function gt(e,t,n){let r=H(e,t,n);return e.readFlag()?(r.energyPercentage=e.readFloat(7),r.initialPosition=e.readPoint3F(),r.endPos=e.readPoint3F(),r.truncated=e.readFlag(),r.hitWater=e.readFlag(),e.readFlag()&&(r.sourceObject=e.readRangedU32(0,1024),r.sourceSlot=e.readRangedU32(0,7),r.clientOwned=e.readFlag())):(e.readFlag()?(r.sourceObject=e.readRangedU32(0,1024),r.sourceSlot=e.readRangedU32(0,7),r.clientOwned=e.readFlag()):r.initialPosition=e.readPoint3F(),r.endPos=e.readPoint3F(),r.truncated=e.readFlag()),r}function _t(e,t,n){let r=H(e,t,n);return e.readFlag()&&(r.targetObject=e.readRangedU32(0,1024)),e.readFlag()&&(r.start=e.readPoint3F(),r.end=e.readPoint3F(),r.hitObject=e.readFlag(),e.readFlag()&&(r.sourceObject=e.readRangedU32(0,1024),r.sourceSlot=e.readRangedU32(0,7))),r}function vt(e){if(!e)return 6;let t=e.toLowerCase();return t.includes(`mpb`)||t.includes(`mpbase`),6}var yt=new Map,bt=new Map;function xt(e,t,n){let r=Oe(e,t,n);if(r.braking=e.readFlag(),e.readFlag()){let t=4,i=r.dataBlockId,a=n.currentGhostIndex;if(i!==void 0){let e=yt.get(i);if(e!==void 0)t=e;else if(n.getDataBlockData){let e=n.getDataBlockData(i);e&&(t=vt(e.shapeName),yt.set(i,t))}a!==void 0&&bt.set(a,t)}else if(a!==void 0){let e=bt.get(a);e!==void 0&&(t=e)}let o=[];for(let n=0;n<t;n++)o.push({avel:e.readF32(),dy:e.readF32(),dx:e.readF32()});r.wheels=o}return r}function St(e,t,n){return{tickPeriodMS:e.readU32()}}function Ct(e,t,n){let r={};if(e.readFlag()){r.transform=e.readMatrixF(),r.scale=e.readPoint3F();let t=e.readU32();if(t>Math.floor(e.getRemainingBits()/96))throw Error(`Invalid physicalZone point count: ${t}`);let n=[];for(let r=0;r<t;r++)n.push(e.readPoint3F());r.points=n;let i=e.readU32();if(i>Math.floor(e.getRemainingBits()/128))throw Error(`Invalid physicalZone plane count: ${i}`);let a=[];for(let t=0;t<i;t++)a.push({x:e.readF32(),y:e.readF32(),z:e.readF32(),d:e.readF32()});r.planes=a;let o=e.readU32();if(o>Math.floor(e.getRemainingBits()/128))throw Error(`Invalid physicalZone edge count: ${o}`);let s=[];for(let t=0;t<o;t++)s.push({face0:e.readU32(),face1:e.readU32(),vertex0:e.readU32(),vertex1:e.readU32()});r.edges=s,r.velocityMod=e.readF32(),r.gravityMod=e.readF32(),r.appliedForce=e.readPoint3F(),r.active=e.readFlag()}else r.active=e.readFlag();return r}function wt(e,t,n){let r={};return r.initialUpdate=e.readFlag(),e.readFlag()&&(r.transform=e.readAffineTransform()),e.readFlag()&&e.readFlag()&&(r.audioProfileId=V(e)),e.readFlag()&&e.readFlag()&&(r.audioDescriptionId=V(e)),e.readFlag()&&(r.filename=e.readString()),e.readFlag()&&(r.useProfileDescription=e.readFlag()),e.readFlag()&&(r.volume=e.readF32()),e.readFlag()&&(r.isLooping=e.readFlag()),e.readFlag()&&(r.is3D=e.readFlag()),e.readFlag()&&(r.minDistance=e.readF32()),e.readFlag()&&(r.maxDistance=e.readF32()),e.readFlag()&&(r.coneInsideAngle=e.readS32()),e.readFlag()&&(r.coneOutsideAngle=e.readS32()),e.readFlag()&&(r.coneOutsideVolume=e.readF32()),e.readFlag()&&(r.coneVector=e.readPoint3F()),e.readFlag()&&(r.loopCount=e.readS32()),e.readFlag()&&(r.minLoopGap=e.readS32()),e.readFlag()&&(r.maxLoopGap=e.readS32()),e.readFlag()&&(r.audioType=e.readS32()),e.readFlag()&&(r.outsideAmbient=e.readFlag()),r}function Tt(e,t,n){let r=H(e,t,n);return e.readFlag()&&e.readFlag()&&(r.stationObject=e.readRangedU32(0,1024)),r}function Et(e,t,n){let r=U(e,t,n);return e.readFlag()&&(r.transform=e.readAffineTransform(),r.scale=e.readPoint3F()),r.unknownFlag=e.readFlag(),r}function Dt(e){e.catalogGhost({name:`AIObjective`,unpackUpdate:Et}),e.catalogGhost({name:`BeaconObject`,unpackUpdate:Re}),e.catalogGhost({name:`BombProjectile`,unpackUpdate:He}),e.catalogGhost({name:`Player`,unpackUpdate:Ee,readPacketData:De}),e.catalogGhost({name:`Debris`,unpackUpdate:Be}),e.catalogGhost({name:`GameBase`,unpackUpdate:H}),e.catalogGhost({name:`ShapeBase`,unpackUpdate:U,readPacketData:ke}),e.catalogGhost({name:`Vehicle`,unpackUpdate:Oe,readPacketData:ke}),e.catalogGhost({name:`FlyingVehicle`,unpackUpdate:je,readPacketData:ke}),e.catalogGhost({name:`HoverVehicle`,unpackUpdate:Me,readPacketData:ke}),e.catalogGhost({name:`Item`,unpackUpdate:Ne}),e.catalogGhost({name:`Marker`,unpackUpdate:Ie}),e.catalogGhost({name:`MissionMarker`,unpackUpdate:ze}),e.catalogGhost({name:`StaticShape`,unpackUpdate:Pe}),e.catalogGhost({name:`Projectile`,unpackUpdate:Ve}),e.catalogGhost({name:`ScopeAlwaysShape`,unpackUpdate:Fe}),e.catalogGhost({name:`GrenadeProjectile`,unpackUpdate:Ue}),e.catalogGhost({name:`SimpleNetObject`,unpackUpdate:Le}),e.catalogGhost({name:`SeekerProjectile`,unpackUpdate:We}),e.catalogGhost({name:`Turret`,unpackUpdate:Ge}),e.catalogGhost({name:`InteriorInstance`,unpackUpdate:Ke}),e.catalogGhost({name:`Camera`,unpackUpdate:qe,readPacketData:Je}),e.catalogGhost({name:`LinearProjectile`,unpackUpdate:Ye}),e.catalogGhost({name:`ELFProjectile`,unpackUpdate:Xe}),e.catalogGhost({name:`RepairProjectile`,unpackUpdate:Ze}),e.catalogGhost({name:`TargetProjectile`,unpackUpdate:Qe}),e.catalogGhost({name:`TracerProjectile`,unpackUpdate:Ye}),e.catalogGhost({name:`WayPoint`,unpackUpdate:$e}),e.catalogGhost({name:`SpawnSphere`,unpackUpdate:et}),e.catalogGhost({name:`ForceFieldBare`,unpackUpdate:tt}),e.catalogGhost({name:`TSStatic`,unpackUpdate:nt}),e.catalogGhost({name:`TerrainBlock`,unpackUpdate:rt}),e.catalogGhost({name:`Sun`,unpackUpdate:it}),e.catalogGhost({name:`Sky`,unpackUpdate:at}),e.catalogGhost({name:`Lightning`,unpackUpdate:ot}),e.catalogGhost({name:`WaterBlock`,unpackUpdate:ct}),e.catalogGhost({name:`MissionArea`,unpackUpdate:lt}),e.catalogGhost({name:`Splash`,unpackUpdate:ut}),e.catalogGhost({name:`Shockwave`,unpackUpdate:dt}),e.catalogGhost({name:`FireballAtmosphere`,unpackUpdate:ft}),e.catalogGhost({name:`VehicleBlocker`,unpackUpdate:pt}),e.catalogGhost({name:`ParticleEmissionDummy`,unpackUpdate:mt}),e.catalogGhost({name:`Precipitation`,unpackUpdate:ht}),e.catalogGhost({name:`EnergyProjectile`,unpackUpdate:Ue}),e.catalogGhost({name:`FlareProjectile`,unpackUpdate:Ue}),e.catalogGhost({name:`LinearFlareProjectile`,unpackUpdate:Ye}),e.catalogGhost({name:`SniperProjectile`,unpackUpdate:gt}),e.catalogGhost({name:`ShockLanceProjectile`,unpackUpdate:_t}),e.catalogGhost({name:`WheeledVehicle`,unpackUpdate:xt,readPacketData:Ae}),e.catalogGhost({name:`Trigger`,unpackUpdate:St}),e.catalogGhost({name:`PhysicalZone`,unpackUpdate:Ct}),e.catalogGhost({name:`AudioEmitter`,unpackUpdate:wt}),e.catalogGhost({name:`StationFXPersonal`,unpackUpdate:Tt}),e.catalogGhost({name:`StationFXVehicle`,unpackUpdate:Tt})}function Ot(e,t){if(!e.readFlag())return{type:`SimDataBlockEvent`,mProcess:!1};let n=e.readInt(11)+0,r=e.readInt(7)+128,i=e.readInt(11),a=e.readInt(12),o={type:`SimDataBlockEvent`,mProcess:!0};o.objectId=n,o.classId=r,o.index=i,o.total=a,o._payloadBitPos=e.getCurPos();let s=t.getDataBlockParser?.(r);if(s)try{o.dataBlockData=s.unpackData(e),o.dataBlockClassName=s.name}catch{o._needsClassParser=!0}else o._needsClassParser=!0;return o}function kt(e,t){let n=e.readInt(10),r=e.readFlag();return{type:`NetStringEvent`,id:n,hasValue:r,value:r?e.readString():void 0}}function At(e,t){return{type:`Sim2DAudioEvent`,profileId:e.readInt(11)}}function jt(e,t){let n=e.readInt(11),r;if(e.readFlag()){let t=e.readFloat(8),n=e.readFloat(8),i=e.readFloat(8),a=Math.sqrt(Math.max(0,1-(t*t+n*n+i*i)));e.readFlag()&&(a=-a),r={x:t,y:n,z:i,w:a}}let i=e.readCompressedPoint(t.compressionPoint,.5);return{type:`Sim3DAudioEvent`,profileId:n,rotation:r,position:i}}function Mt(e,t){return{type:`SetSensorGroupEvent`,sensorGroup:e.readInt(5)}}function Nt(e,t){let n={type:`SetServerTargetEvent`};return e.readFlag()&&(n.targetId=e.readInt(9)),n.targetPos={x:e.readF32(),y:e.readF32(),z:e.readF32()},n}function Pt(e,t){let n={type:`TargetToEvent`};return e.readFlag()&&(n.targetId=e.readInt(9)),e.readFlag()&&(n.targetPos={x:e.readF32(),y:e.readF32(),z:e.readF32()}),n.assign=e.readFlag(),n}function Ft(e,t){return{type:`SetObjectActiveImageEvent`,objectId:e.readRangedU32(0,1023),imageSlot:e.readRangedU32(0,8)}}function It(e,t){return{type:`SetMissionCRCEvent`,crc:e.readU32()}}function Lt(e,t){let n=e.readInt(5),r=[];for(let t=0;t<n;t++)r.push(e.unpackNetString());return{type:`RemoteCommandEvent`,argc:n,argv:r,funcName:r[0]??``,args:r.slice(1)}}function Rt(e,t){let n={type:`TargetInfoEvent`};return n.targetId=e.readInt(9),e.readFlag()&&(n.nameTag=e.readFlag()?e.readInt(10):1024),e.readFlag()&&(n.skinTag=e.readFlag()?e.readInt(10):1024),e.readFlag()&&(n.skinPrefTag=e.readFlag()?e.readInt(10):1024),e.readFlag()&&(n.voiceTag=e.readFlag()?e.readInt(10):1024),e.readFlag()&&(n.typeTag=e.readFlag()?e.readInt(10):1024),e.readFlag()&&(n.sensorGroup=e.readInt(5)),e.readFlag()&&(n.dataBlockId=e.readFlag()?e.readInt(11):-2),e.readFlag()&&(n.renderFlags=e.readInt(9)),e.readFlag()&&(n.voicePitch=e.readFloat(7)*1.5+.5),n}function zt(e,t){return{type:`TargetFreeEvent`,targetId:e.readInt(9)}}function Bt(e,t){let n={type:`SimTargetAudioEvent`};return n.targetId=e.readInt(9),n.fileTag=e.readInt(12),n.descriptionId=e.readRangedU32(3,1026),e.readFlag()&&(n.position=e.readCompressedPoint(t.compressionPoint,.5)),n.updateSound=e.readFlag(),n}function Vt(e,t){let n={type:`SensorGroupColorEvent`};n.sensorGroup=e.readInt(5);let r=e.readU32();n.updateMask=r;let i=[];for(let t=0;t<32;t++)1<<t&r&&(e.readFlag()?i.push({index:t,r:e.readU8(),g:e.readU8(),b:e.readU8(),a:e.readU8()}):i.push({index:t,default:!0}));return n.colors=i,n}function Ht(e,t){return{type:`ResetClientTargetsEvent`,clientTargetsOnly:e.readFlag()}}function Ut(e,t){return{type:`RemoveClientTargetTypeEvent`,targetType:e.readRangedU32(0,3)}}function Wt(e,t){let n={type:`SimVoiceStreamEvent`};n.streamId=e.readInt(5),n.sequence=e.readInt(6),n.codecId=e.readInt(2),n.clientId=e.readU8(),n.sequence===0&&(n.objectId=e.readInt(10)),e.readFlag()?n.size=e.readInt(5):n.size=16;let r=n.size;return r>0&&(n.audioData=e.readBitsBuffer(r*8)),n}function Gt(e,t){return{type:`GhostingMessageEvent`,sequence:e.readU32(),message:e.readInt(3),ghostCount:e.readInt(11)}}function Kt(e,t){let n={type:`GhostAlwaysObjectEvent`};n.ghostIndex=e.readInt(10);let r=e.readFlag();if(n._hasObjectData=r,r){let r=e.readInt(7);n.classId=r;let i=t.getGhostParser?.(r);if(!i)throw Error(`No ghost parser for GhostAlwaysObjectEvent classId=${r}`);n.objectData=i.unpackUpdate(e,!0,t)}return n}function qt(e,t){let n={type:`PathManagerEvent`};if(e.readFlag()){n.messageType=`NewPaths`;let t=e.readU32(),r=[];for(let n=0;n<t&&n<256;n++){let t=e.readU32(),n=e.readU32(),i=[];for(let t=0;t<n&&t<1024;t++)i.push({position:e.readPoint3F(),msToNext:e.readU32()});r.push({totalTime:t,points:i})}n.paths=r}else{n.messageType=`ModifyPath`,n.modifiedPath=e.readU32();let t=e.readU32(),r=e.readU32(),i=[];for(let t=0;t<r&&t<1024;t++)i.push({position:e.readPoint3F(),msToNext:e.readU32()});n.path={totalTime:t,points:i}}return n}function Jt(e,t){let n={type:`LightningStrikeEvent`};return e.readFlag()?(n.sourceGhost=e.readInt(11),n.startX=e.readFloat(10),n.startY=e.readFloat(10),e.readFlag()&&(n.targetGhost=e.readInt(11)),n):n}function Yt(e,t){let n=e.readRangedU32(0,63);return{type:`FileChunkEvent`,chunkLen:n,chunkData:e.readBitsBuffer(n*8)}}function Xt(e,t){return{type:`DownloadMessageEvent`,value:e.readU32(),message:e.readInt(3)}}function Zt(e,t){let n=e.readRangedU32(0,31),r=[];for(let t=0;t<n;t++)r.push(e.readString());return{type:`FileDownloadRequestEvent`,fileNames:r}}function Qt(e,t){return{type:`SimpleMessageEvent`,message:e.readString()}}function $t(e,t){return{type:`CRCChallengeEvent`,crcValue:e.readU32(),field1:e.readU32(),field2:e.readU32(),flag:e.readFlag()}}function en(e,t){return{type:`CRCChallengeResponseEvent`,crcValue:e.readU32(),field1:e.readU32(),field2:e.readU32()}}function tn(e,t){return{type:`GravityEvent`,gravity:e.readF32()}}function nn(e,t){return{type:`FogChallengeEvent`}}function rn(e){e.catalogEvent({name:`SimDataBlockEvent`,unpack:Ot}),e.catalogEvent({name:`NetStringEvent`,unpack:kt}),e.catalogEvent({name:`Sim2DAudioEvent`,unpack:At}),e.catalogEvent({name:`Sim3DAudioEvent`,unpack:jt}),e.catalogEvent({name:`SetSensorGroupEvent`,unpack:Mt}),e.catalogEvent({name:`SetServerTargetEvent`,unpack:Nt}),e.catalogEvent({name:`TargetToEvent`,unpack:Pt}),e.catalogEvent({name:`SetObjectActiveImageEvent`,unpack:Ft}),e.catalogEvent({name:`SetMissionCRCEvent`,unpack:It}),e.catalogEvent({name:`RemoteCommandEvent`,unpack:Lt}),e.catalogEvent({name:`TargetInfoEvent`,unpack:Rt}),e.catalogEvent({name:`TargetFreeEvent`,unpack:zt}),e.catalogEvent({name:`SimTargetAudioEvent`,unpack:Bt}),e.catalogEvent({name:`SensorGroupColorEvent`,unpack:Vt}),e.catalogEvent({name:`ResetClientTargetsEvent`,unpack:Ht}),e.catalogEvent({name:`RemoveClientTargetTypeEvent`,unpack:Ut}),e.catalogEvent({name:`SimVoiceStreamEvent`,unpack:Wt}),e.catalogEvent({name:`GhostingMessageEvent`,unpack:Gt}),e.catalogEvent({name:`GhostAlwaysObjectEvent`,unpack:Kt}),e.catalogEvent({name:`PathManagerEvent`,unpack:qt}),e.catalogEvent({name:`LightningStrikeEvent`,unpack:Jt}),e.catalogEvent({name:`FileChunkEvent`,unpack:Yt}),e.catalogEvent({name:`DownloadMessageEvent`,unpack:Xt}),e.catalogEvent({name:`FileDownloadRequestEvent`,unpack:Zt}),e.catalogEvent({name:`SimpleMessageEvent`,unpack:Qt}),e.catalogEvent({name:`CRCChallengeEvent`,unpack:$t}),e.catalogEvent({name:`CRCChallengeResponseEvent`,unpack:en}),e.catalogEvent({name:`GravityEvent`,unpack:tn}),e.catalogEvent({name:`FogChallengeEvent`,unpack:nn})}function W(e){return e.readFlag()?e.readInt(11):null}function G(e,t,n){return e.readRangedU32(0,n-t)+t}function K(e){return{r:e.readInt(8)/255,g:e.readInt(8)/255,b:e.readInt(8)/255,a:e.readInt(8)/255}}function q(e){return e.readInt(8)!==0}function J(e,t,n,r){return t+e.readInt(r)/((1<<r)-1)*(n-t)}function Y(e){let t={};e.readFlag()&&(t.crc=e.readU32()),t.shapeName=e.readString(),e.readFlag()&&(t.mass=e.readF32()),e.readFlag()&&(t.drag=e.readF32()),e.readFlag()&&(t.density=e.readF32()),e.readFlag()&&(t.maxEnergy=e.readF32()),e.readFlag()&&(t.cameraMaxDist=e.readF32()),e.readFlag()&&(t.cameraMinDist=e.readF32()),e.readFlag()&&(t.cameraDefaultFov=e.readF32()),e.readFlag()&&(t.cameraMinFov=e.readF32()),e.readFlag()&&(t.cameraMaxFov=e.readF32()),t.debrisShapeName=e.readString(),e.readFlag()&&(t.sensorRadius=e.readInt(10),t.sensorColor={r:e.readInt(8),g:e.readInt(8),b:e.readInt(8),a:e.readInt(8)}),e.readFlag()&&(t.heat=e.readF32()),t.cmdCategory=e.readString(),t.cmdMiniIconName=e.readString(),t.canControl=e.readFlag(),t.canObserve=e.readFlag(),t.observeThroughObject=e.readFlag(),t.firstPersonOnly=e.readFlag(),t.isInvincible=e.readFlag(),t.renderWhenDestroyed=e.readFlag(),t.debris=W(e),t.explosion=W(e),t.underwaterExplosion=W(e),t.debrisEmitter=W(e),t.inheritEnergyFromMount=e.readFlag(),t.useEyePoint=e.readFlag(),t.emap=e.readFlag(),t.shieldEffectLifetimeMS=e.readU32(),e.readFlag()&&(t.shieldEffectScale={x:e.readF32(),y:e.readF32(),z:e.readF32()});let n=[];for(let t=0;t<8;t++){if(!e.readFlag())continue;let t={};t.friendlyName=e.readString(),e.readFlag()&&(t.enemyName=e.readString()),t.renderCenter=e.readFlag(),t.renderModulated=e.readFlag(),t.renderAlways=e.readFlag(),t.renderDistance=e.readFlag(),t.renderName=e.readFlag(),n.push(t)}return n.length>0&&(t.hudImages=n),t}function an(e){let t={};e.readFlag()&&(t.crc=e.readU32()),t.shapeName=e.readString(),t.mountPoint=e.readU32(),e.readFlag()||(t.offset=e.readAffineTransform()),t.firstPerson=e.readFlag(),t.mass=e.readF32(),t.usesEnergy=e.readFlag(),t.minEnergy=e.readF32(),t.hasFlash=e.readFlag(),t.projectile=W(e),t.muzzleFlash=W(e),t.isSeeker=e.readFlag(),t.isSeeker&&(t.seekerRadius=e.readF32(),t.maxSeekAngle=e.readF32(),t.seekerLockTime=e.readF32(),t.seekerFreeTime=e.readF32(),t.isTargetLockRequired=e.readFlag(),t.maxLockRange=e.readF32()),t.cloakable=e.readFlag(),t.lightType=e.readRangedU32(0,3),t.lightType!==0&&(t.lightRadius=e.readF32(),t.lightTime=e.readS32(),t.lightColor={r:e.readFloat(7),g:e.readFloat(7),b:e.readFloat(7),a:e.readFloat(7)}),t.shellExitDir={x:e.readF32(),y:e.readF32(),z:e.readF32()},t.shellExitVariance=e.readF32(),t.shellVelocity=e.readF32(),t.casing=W(e),t.accuFire=e.readFlag();let n=[];for(let t=0;t<31;t++){if(!e.readFlag())continue;let t={};t.name=e.readString(),t.transitionOnAmmo=e.readInt(5),t.transitionOnNoAmmo=e.readInt(5),t.transitionOnTarget=e.readInt(5),t.transitionOnNoTarget=e.readInt(5),t.transitionOnWet=e.readInt(5),t.transitionOnNotWet=e.readInt(5),t.transitionOnTriggerUp=e.readInt(5),t.transitionOnTriggerDown=e.readInt(5),t.transitionOnTimeout=e.readInt(5),t.transitionGeneric0In=e.readInt(5),t.transitionGeneric0Out=e.readInt(5),e.readFlag()&&(t.timeoutValue=e.readF32()),t.waitForTimeout=e.readFlag(),t.fire=e.readFlag(),t.ejectShell=e.readFlag(),t.scaleAnimation=e.readFlag(),t.direction=e.readFlag(),t.reload=e.readFlag(),e.readFlag()&&(t.energyDrain=e.readF32()),t.loaded=e.readInt(3),t.spin=e.readInt(3),t.recoil=e.readInt(3),e.readFlag()&&(t.sequence=e.readSignedInt(16)),e.readFlag()&&(t.sequenceVis=e.readSignedInt(16)),t.flashSequence=e.readFlag(),t.ignoreLoadedForReady=e.readFlag(),t.emitter=W(e),t.emitter!==null&&(t.emitterTime=e.readF32(),t.emitterNode=e.readS32()),t.sound=W(e),n.push(t)}return t.states=n,t}function on(e){let t=Y(e);t.renderFirstPerson=e.readFlag(),t.minLookAngle=e.readF32(),t.maxLookAngle=e.readF32(),t.maxFreelookAngle=e.readF32(),t.maxTimeScale=e.readF32(),t.maxStepHeight=e.readF32(),t.runForce=e.readF32(),t.runEnergyDrain=e.readF32(),t.minRunEnergy=e.readF32(),t.maxForwardSpeed=e.readF32(),t.maxBackwardSpeed=e.readF32(),t.maxSideSpeed=e.readF32(),t.maxUnderwaterForwardSpeed=e.readF32(),t.maxUnderwaterBackwardSpeed=e.readF32(),t.maxUnderwaterSideSpeedRef=W(e),e.readFlag()&&(t.runSurfaceAngleRef=e.readInt(11)),t.runSurfaceAngle=e.readF32(),t.recoverDelay=e.readF32(),t.recoverRunForceScale=e.readF32(),t.jumpForce=e.readF32(),t.jumpEnergyDrain=e.readF32(),t.minJumpEnergy=e.readF32(),t.minJumpSpeed=e.readF32(),t.maxJumpSpeed=e.readF32(),t.jumpSurfaceAngle=e.readF32(),t.minJetEnergy=e.readF32(),t.splashVelocity=e.readF32(),t.splashAngle=e.readF32(),t.splashFreqMod=e.readF32(),t.splashVelEpsilon=e.readF32(),t.bubbleEmitTime=e.readF32(),t.medSplashSoundVel=e.readF32(),t.hardSplashSoundVel=e.readF32(),t.exitSplashSoundVel=e.readF32(),t.jumpDelay=e.readInt(7),t.horizMaxSpeed=e.readF32(),t.horizResistSpeed=e.readF32(),t.horizResistFactor=e.readF32(),t.upMaxSpeed=e.readF32(),t.upResistSpeed=e.readF32(),t.upResistFactor=e.readF32(),t.jetEnergyDrain=e.readF32(),t.canJet=e.readF32(),t.maxJetHorizontalPercentage=e.readF32(),t.maxJetForwardSpeed=e.readF32(),t.jetForce=e.readF32(),t.minJetSpeed=e.readF32(),t.maxDamage=e.readF32(),t.minImpactDamageSpeed=e.readF32(),t.impactDamageScale=e.readF32(),t.footSplashHeight=e.readF32();let n=[];for(let t=0;t<32;t++)e.readFlag()?n.push(e.readInt(11)):n.push(null);t.sounds=n,t.boxSize={x:e.readF32(),y:e.readF32(),z:e.readF32()},t.footPuffEmitter=W(e),t.footPuffNumParts=e.readF32(),t.footPuffRadius=e.readF32(),t.decalData=W(e),t.decalOffset=e.readF32(),t.dustEmitter=W(e),t.splash=W(e);let r=[];for(let t=0;t<3;t++)r.push(W(e));return t.splashEmitters=r,t.groundImpactMinSpeed=e.readF32(),t.groundImpactShakeFreq={x:e.readF32(),y:e.readF32(),z:e.readF32()},t.groundImpactShakeAmp={x:e.readF32(),y:e.readF32(),z:e.readF32()},t.groundImpactShakeDuration=e.readF32(),t.groundImpactShakeFalloff=e.readF32(),t.boundingRadius=e.readF32(),t.moveBubbleSize=e.readF32(),t}function sn(e){let t=Y(e);t.bodyRestitution=e.readF32(),t.bodyFriction=e.readF32();let n=[];for(let t=0;t<2;t++)n.push(W(e));t.impactSounds=n,t.minImpactSpeed=e.readF32(),t.softImpactSpeed=e.readF32(),t.hardImpactSpeed=e.readF32(),t.minRollSpeed=e.readF32(),t.maxSteeringAngle=e.readF32(),t.maxDrag=e.readF32(),t.minDrag=e.readF32(),t.cameraOffset=e.readF32(),t.cameraLag=e.readF32(),t.jetForce=e.readF32(),t.jetEnergyDrain=e.readF32(),t.minJetEnergy=e.readF32(),t.integration=e.readF32(),t.collisionTol=e.readF32(),t.massCenter=e.readF32(),t.exitSplashSoundVelocity=e.readF32(),t.softSplashSoundVelocity=e.readF32(),t.mediumSplashSoundVelocity=e.readF32(),t.hardSplashSoundVelocity=e.readF32();let r=[];for(let t=0;t<5;t++)r.push(W(e));t.waterSounds=r,t.dustEmitter=W(e);let i=[];for(let t=0;t<3;t++)i.push(W(e));t.damageEmitters=i;let a=[];for(let t=0;t<2;t++)a.push(W(e));return t.splashEmitters=a,t.damageEmitterOffset0={x:e.readF32(),y:e.readF32(),z:e.readF32()},t.damageEmitterOffset1={x:e.readF32(),y:e.readF32(),z:e.readF32()},t.damageLevelTolerance0=e.readF32(),t.damageLevelTolerance1=e.readF32(),t.splashFreqMod=e.readF32(),t.splashVelEpsilon=e.readF32(),t.collDamageThresholdVel=e.readF32(),t.collDamageMultiplier=e.readF32(),t}function cn(e){let t=sn(e);t.jetActivateSound=W(e),t.jetDeactivateSound=W(e);let n=[];for(let t=0;t<4;t++)n.push(W(e));return t.jetEmitters=n,t.maneuveringForce=e.readF32(),t.horizontalSurfaceForce=e.readF32(),t.verticalSurfaceForce=e.readF32(),t.autoInputDamping=e.readF32(),t.steeringForce=e.readF32(),t.steeringRollForce=e.readF32(),t.rollForce=e.readF32(),t.autoAngularForce=e.readF32(),t.rotationalDrag=e.readF32(),t.maxAutoSpeed=e.readF32(),t.autoLinearForce=e.readF32(),t.hoverHeight=e.readF32(),t.createHoverHeight=e.readF32(),t.minTrailSpeed=e.readF32(),t.vertThrustMultiple=e.readF32(),t.maxForwardSpeed=e.readF32(),t}function ln(e){let t=sn(e);t.dragForce=e.readF32(),t.mainThrustForce=e.readF32(),t.reverseThrustForce=e.readF32(),t.strafeThrustForce=e.readF32(),t.turboFactor=e.readF32(),t.stabLenMin=e.readF32(),t.stabLenMax=e.readF32(),t.stabSpringConstant=e.readF32(),t.stabDampingConstant=e.readF32(),t.gyroDrag=e.readF32(),t.normalForce=e.readF32(),t.restorativeForce=e.readF32(),t.steeringForce=e.readF32(),t.rollForce=e.readF32(),t.pitchForce=e.readF32(),t.floatingThrustFactor=e.readF32(),t.brakingForce=e.readF32(),t.dustTrailOffset={x:e.readF32(),y:e.readF32(),z:e.readF32()},t.dustTrailFreqMod=e.readF32(),t.triggerTrailHeight=e.readF32(),t.floatSound=W(e),t.thrustSound=W(e),t.turboSound=W(e);let n=[];for(let t=0;t<3;t++)n.push(W(e));return t.jetEmitters=n,t.dustTrailEmitter=W(e),t.mainThrustEmitterFactor=e.readF32(),t.strafeThrustEmitterFactor=e.readF32(),t.reverseThrustEmitterFactor=e.readF32(),t}function un(e){let t=sn(e);return t.tireRadius=e.readF32(),t.tireStaticFriction=e.readF32(),t.tireKineticFriction=e.readF32(),t.tireRestitution=e.readF32(),t.tireLateralForce=e.readF32(),t.tireLateralDamping=e.readF32(),t.tireLateralRelaxation=e.readF32(),t.tireLongitudinalForce=e.readF32(),t.tireLongitudinalDamping=e.readF32(),t.tireEmitter=W(e),t.jetSound=W(e),t.engineSound=W(e),t.squealSound=W(e),t.wadeSound=W(e),t.spring=e.readF32(),t.springDamping=e.readF32(),t.springLength=e.readF32(),t.brakeTorque=e.readF32(),t.engineTorque=e.readF32(),t.engineBrake=e.readF32(),t.maxWheelSpeed=e.readF32(),t.steeringAngle=e.readF32(),t.steeringReturn=e.readF32(),t.steeringDamping=e.readF32(),t.powerSteeringFactor=e.readF32(),t}function dn(e){let t=Y(e);return t.noIndividualDamage=e.readFlag(),t.dynamicTypeField=e.readS32(),t}function fn(e){let t=dn(e);return t.thetaMin=e.readF32(),t.thetaMax=e.readF32(),t.thetaNull=e.readF32(),t.neverUpdateControl=e.readFlag(),t.primaryAxis=e.readRangedU32(0,3),t.maxCapacitorEnergy=e.readF32(),t.capacitorRechargeRate=e.readF32(),t}function pn(e){let t=an(e);return t.activationMS=e.readInt(8),t.deactivateDelayMS=e.readInt(8),t.degPerSecTheta=e.readRangedU32(0,1080),t.degPerSecPhi=e.readRangedU32(0,1080),t.dontFireInsideDamageRadius=e.readFlag(),t.damageRadius=e.readF32(),t.useCapacitor=e.readFlag(),t}function mn(e){let t=Y(e);return t.friction=e.readFloat(10),t.elasticity=e.readFloat(10),t.sticky=e.readFlag(),e.readFlag()&&(t.gravityMod=e.readFloat(10)),e.readFlag()&&(t.maxVelocity=e.readF32()),e.readFlag()&&(t.lightType=e.readInt(2),t.lightColor={r:e.readFloat(7),g:e.readFloat(7),b:e.readFloat(7),a:e.readFloat(7)},t.lightTime=e.readS32(),t.lightRadius=e.readF32(),t.lightOnlyStatic=e.readFlag()),t}function X(e){let t={};t.projectileShapeName=e.readString(),t.faceViewerLinkTime=e.readS32(),t.lifetime=e.readS32(),t.faceViewer=e.readFlag(),e.readFlag()&&(t.scale={x:e.readF32(),y:e.readF32(),z:e.readF32()}),t.baseEmitter=W(e),t.delayEmitter=W(e),t.bubbleEmitter=W(e),t.explosion=W(e),t.underwaterExplosion=W(e),t.splash=W(e),t.sound=W(e),t.wetFireSound=W(e),t.fireSound=W(e);let n=[];for(let t=0;t<6;t++)n.push(W(e));return t.decals=n,e.readFlag()&&(t.lightRadius=e.readFloat(8),t.lightColor={r:e.readFloat(7),g:e.readFloat(7),b:e.readFloat(7)}),e.readFlag()&&(t.underwaterLightColor={r:e.readFloat(7),g:e.readFloat(7),b:e.readFloat(7)}),t.explodeOnWaterImpact=q(e),t.depthTolerance=e.readF32(),t}function hn(e){let t=X(e);return t.dryVelocity=e.readF32(),t.wetVelocity=e.readF32(),t.fizzleTime=e.readU32(),t.fizzleType=e.readU32(),t.hardRetarget=e.readFlag(),t.inheritedVelocityScale=e.readRangedU32(0,90),t.lifetimeMS=e.readRangedU32(0,90),t.collideWithOwnerTimeMS=e.readU32(),t.proximityRadius=e.readU32(),t.tracerProjectile=e.readFlag(),t}function gn(e){let t=X(e);return t.armingDelayMS=e.readS32(),t.muzzleVelocity=e.readF32(),t.grenadeElasticity=e.readF32(),t.grenadeFriction=e.readF32(),t.drag=e.readF32(),t.density=e.readF32(),t.gravityMod=e.readF32(),t.lifetimeMS=e.readS32(),t}function _n(e){let t=X(e);return t.lifetimeMS=e.readS32(),t.muzzleVelocity=e.readF32(),t.turningSpeed=e.readF32(),t.proximityRadius=e.readF32(),t.terrainAvoidanceSpeed=e.readF32(),t.terrainScanAhead=e.readF32(),t.terrainHeightFail=e.readF32(),t.terrainAvoidanceRadius=e.readF32(),t.flareDistance=e.readF32(),t.flareAngle=e.readF32(),t.useFlechette=q(e),t.maxVelocity=e.readF32(),t.acceleration=e.readF32(),t.flechetteDelayMs=e.readS32(),t.exhaustTimeMs=e.readS32(),t.exhaustNodeName=e.readString(),t.casingShapeName=e.readString(),t.casingDebris=W(e),t.puffEmitter=W(e),t.exhaustEmitter=W(e),t}function vn(e){let t=X(e);t.maxRifleRange=e.readF32(),t.rifleHeadMultiplier=e.readF32(),t.beamColor=K(e),t.fadeTime=e.readF32(),t.startBeamWidth=e.readF32(),t.endBeamWidth=e.readF32(),t.pulseBeamWidth=e.readF32(),t.beamFlareAngle=e.readF32(),t.minFlareSize=e.readF32(),t.maxFlareSize=e.readF32(),t.pulseSpeed=e.readF32(),t.pulseLength=e.readF32(),t.lightColor=K(e),t.lightRadius=e.readF32();let n=[];for(let t=0;t<12;t++)n.push(e.readString());return t.textures=n,t}function yn(e){let t=X(e);t.zapDuration=e.readF32(),t.boltLength=e.readF32(),t.numParts=e.readF32(),t.lightningFreq=e.readF32(),t.lightningDensity=e.readF32(),t.lightningAmp=e.readF32(),t.lightningWidth=e.readF32(),t.shockwave=W(e);let n=[],r=[],i=[],a=[];for(let t=0;t<2;t++)n.push(e.readF32()),r.push(e.readF32()),i.push(e.readF32()),a.push(e.readF32());t.startWidth=n,t.endWidth=r,t.boltSpeed=i,t.texWrap=a;let o=[];for(let t=0;t<4;t++)o.push(e.readString());return t.textures=o,t.emitter=W(e),t}function bn(e){let t=X(e);return t.beamRange=e.readF32(),t.beamDrainRate=e.readF32(),t.muzzleVelocity=e.readF32(),t.proximityRadius=e.readF32(),t.startWidth=e.readF32(),t.endWidth=e.readF32(),t.mainBeamTexture=e.readString(),t.innerBeamTexture=e.readString(),t.flareTexture=e.readString(),t.hitEmitter=W(e),t}function xn(e){let t=X(e);return t.beamRange=e.readF32(),t.beamRepairRate=e.readF32(),t.muzzleVelocity=e.readF32(),t.proximityRadius=e.readF32(),t.startWidth=e.readF32(),t.endWidth=e.readF32(),t.startBeamWidth=e.readF32(),t.endBeamWidth=e.readF32(),t.mainBeamTexture=e.readString(),t.innerBeamTexture=e.readString(),t}function Sn(e){let t=X(e);t.maxRifleRange=e.readF32(),t.beamColor=K(e),t.startBeamWidth=e.readF32(),t.pulseBeamWidth=e.readF32(),t.beamFlareAngle=e.readF32(),t.minFlareSize=e.readF32(),t.maxFlareSize=e.readF32(),t.pulseSpeed=e.readF32(),t.pulseLength=e.readF32();let n=[];for(let t=0;t<4;t++)n.push(e.readString());return t.textures=n,t}function Cn(e){let t=hn(e);return t.tracerLength=e.readF32(),t.tracerAlpha=e.readF32(),t.tracerMinPixels=e.readF32(),t.crossViewFraction=q(e),t.tracerColor=K(e),t.tracerWidth=e.readF32(),t.muzzleVelocity=e.readF32(),t.proximityRadius=q(e),t.textureName0=e.readString(),t.textureName1=e.readString(),t}function wn(e){let t=gn(e);return t.energyDrainPerSecond=e.readF32(),t.energyMinDrain=e.readF32(),t.beamWidth=e.readF32(),t.beamRange=e.readF32(),t.numSegments=e.readF32(),t.texRepeat=e.readF32(),t.beamFlareAngle=e.readF32(),t.beamTexture=e.readString(),t.flareTexture=e.readString(),t}function Tn(e){let t=hn(e);return t.numFlares=e.readF32(),t.flareColor=K(e),t.flareTexture=e.readString(),t.smokeTexture=e.readString(),t.size=e.readF32(),t.flareModTexture=e.readF32(),t.smokeSize=e.readF32(),t}function En(e){let t=gn(e);return t.smokeDist=e.readF32(),t.noSmoke=e.readF32(),t.boomTime=e.readF32(),t.casingDist=e.readF32(),t.smokeCushion=e.readF32(),t.noSmokeCounter=e.readF32(),t.smokeTexture=e.readString(),t.bombTexture=e.readString(),t}function Dn(e){let t=gn(e);return t.size=e.readF32(),t.useLensFlare=q(e),t.flareTexture=e.readString(),t.lensFlareTexture=e.readString(),t}function On(e){let t={};t.dtsFileName=e.readString(),t.soundProfile=W(e),t.particleEmitter=W(e),t.particleDensity=e.readInt(14),t.particleRadius=e.readF32(),t.faceViewer=e.readFlag(),e.readFlag()&&(t.explosionScale={x:e.readInt(16),y:e.readInt(16),z:e.readInt(16)}),t.playSpeed=e.readInt(14),t.debrisThetaMin=e.readRangedU32(0,180),t.debrisThetaMax=e.readRangedU32(0,180),t.debrisPhiMin=e.readRangedU32(0,360),t.debrisPhiMax=e.readRangedU32(0,360),t.debrisMinVelocity=e.readRangedU32(0,1e3),t.debrisMaxVelocity=e.readRangedU32(0,1e3),t.debrisNum=e.readInt(14),t.debrisVariance=e.readRangedU32(0,1e4),t.delayMS=e.readInt(16),t.delayVariance=e.readInt(16),t.lifetimeMS=e.readInt(16),t.lifetimeVariance=e.readInt(16),t.offset=e.readF32(),t.shakeCamera=e.readFlag(),t.hasLight=e.readFlag(),t.camShakeFreq={x:e.readF32(),y:e.readF32(),z:e.readF32()},t.camShakeAmp={x:e.readF32(),y:e.readF32(),z:e.readF32()},t.camShakeDuration=e.readF32(),t.camShakeRadius=e.readF32(),t.camShakeFalloff=e.readF32(),t.shockwave=W(e),t.debris=W(e);let n=[];for(let t=0;t<4;t++)n.push(W(e));t.emitters=n;let r=[];for(let t=0;t<5;t++)r.push(W(e));t.subExplosions=r;let i=e.readRangedU32(0,4),a=[];for(let t=0;t<i;t++)a.push(e.readFloat(8));t.times=a;let o=[];for(let t=0;t<i;t++)o.push({x:e.readRangedU32(0,16e3),y:e.readRangedU32(0,16e3),z:e.readRangedU32(0,16e3)});return t.sizes=o,t}function kn(e){let t={};return t.elasticity=e.readF32(),t.friction=e.readF32(),t.numBounces=e.readS32(),t.bounceVariance=e.readS32(),t.minSpinSpeed=e.readF32(),t.maxSpinSpeed=e.readF32(),t.render2D=q(e),t.explodeOnMaxBounce=q(e),t.staticOnMaxBounce=q(e),t.snapOnMaxBounce=q(e),t.lifetime=e.readF32(),t.lifetimeVariance=e.readF32(),t.minSpinSpeed_dup=e.readF32(),t.maxSpinSpeed_dup=e.readF32(),t.velocity=e.readF32(),t.velocityVariance=e.readF32(),t.useRadiusMass=q(e),t.fade=q(e),t.baseRadius=e.readF32(),t.gravModifier=e.readF32(),t.terminalVelocity=e.readF32(),t.ignoreWater=q(e),t.shapeFileName=e.readString(),t.skinName=e.readString(),t.emitter0=W(e),t.emitter1=W(e),t.explosion=W(e),t}function An(e){let t={};t.scale={x:e.readF32(),y:e.readF32(),z:e.readF32()},t.delayMS=e.readS32(),t.delayVariance=e.readS32(),t.lifetimeMS=e.readS32(),t.lifetimeVariance=e.readS32(),t.width=e.readF32(),t.numSegments=e.readS32(),t.velocity=e.readF32(),t.height=e.readF32(),t.acceleration=e.readF32(),t.texWrap=e.readF32(),t.texFactor=e.readF32(),t.ejectionFreq=e.readF32(),t.ejectionAngle=e.readF32(),t.ringLifetime=e.readF32(),t.startRadius=e.readF32(),t.explosion=W(e);let n=[];for(let t=0;t<3;t++)n.push(W(e));t.emitters=n;let r=[];for(let t=0;t<4;t++)r.push(K(e));t.colors=r;let i=[];for(let t=0;t<4;t++)i.push(e.readF32());return t.times=i,t.textureName=e.readString(),t.foamTexture=e.readString(),t}function jn(e){let t={};t.scale={x:e.readF32(),y:e.readF32(),z:e.readF32()},t.delayMS=e.readS32(),t.delayVariance=e.readS32(),t.lifetimeMS=e.readS32(),t.lifetimeVariance=e.readS32(),t.width=e.readF32(),t.numSegments=e.readS32(),t.numVertSegments=e.readS32(),t.velocity=e.readF32(),t.height=e.readF32(),t.verticalCurve=e.readF32(),t.acceleration=e.readF32(),t.texWrap=e.readF32(),t.is2D=q(e),t.orientToNormal=q(e),t.mapToTerrain=q(e),t.renderBottom=q(e),t.renderSquare=q(e);let n=[];for(let t=0;t<3;t++)n.push(W(e));t.emitters=n;let r=[];for(let t=0;t<4;t++)r.push(K(e));t.colors=r;let i=[];for(let t=0;t<4;t++)i.push(e.readF32());return t.times=i,t.textureName=e.readString(),t.mapToTexture=e.readString(),t}function Mn(e){let t={};t.ejectionPeriodMS=e.readInt(10),t.periodVarianceMS=e.readInt(10),t.ejectionVelocity=e.readInt(16),t.velocityVariance=e.readInt(14),e.readFlag()&&(t.ejectionOffset=e.readInt(16)),t.thetaMin=e.readRangedU32(0,180),t.thetaMax=e.readRangedU32(0,180),e.readFlag()&&(t.phiReferenceVel=e.readRangedU32(0,360)),e.readFlag()&&(t.phiVariance=e.readRangedU32(0,360)),t.overrideAdvances=e.readFlag(),t.orientParticles=e.readFlag(),t.orientOnVelocity=e.readFlag(),t.lifetimeMS=e.readInt(10),t.lifetimeVarianceMS=e.readInt(10),t.useEmitterSizes=e.readFlag(),t.useEmitterColors=e.readFlag();let n=e.readU32(),r=[];for(let t=0;t<n&&t<16;t++)r.push(W(e));return t.particles=r,t}function Nn(e){let t={};t.dragCoefficient=e.readFloat(10),e.readFlag()&&(t.windCoefficient=e.readF32()),t.gravityCoefficient=e.readSignedFloat(12),t.inheritedVelFactor=e.readFloat(9),e.readFlag()&&(t.constantAcceleration=e.readF32()),t.lifetimeMS=e.readInt(10),t.lifetimeVarianceMS=e.readInt(10),e.readFlag()&&(t.spinSpeed=e.readF32()),e.readFlag()&&(t.spinRandomMin=e.readInt(11),t.spinRandomMax=e.readInt(11)),t.useInvAlpha=e.readFlag();let n=e.readInt(2)+1,r=[];for(let t=0;t<n;t++)r.push({r:e.readFloat(7),g:e.readFloat(7),b:e.readFloat(7),a:e.readFloat(7),size:e.readFloat(14),time:e.readFloat(8)});t.keys=r;let i=e.readInt(6),a=[];for(let t=0;t<i&&t<50;t++)a.push(e.readString());return t.textures=a,t}function Pn(e){let t={};return t.volume=e.readFloat(6),t.isLooping=e.readFlag(),t.isLooping&&(t.loopCount=e.readS32(),t.minLoopGap=e.readS32(),t.maxLoopGap=e.readS32()),t.is3D=e.readFlag(),t.is3D&&(t.referenceDistance=e.readF32(),t.maxDistance=e.readF32(),t.coneInsideAngle=e.readInt(9),t.coneOutsideAngle=e.readInt(9),t.coneOutsideVolume=e.readFloat(6),t.coneVector=e.readNormalVector(8),t.environmentLevel=e.readF32()),t.type=e.readInt(3),t}function Fn(e){let t={};return t.description=W(e),t.environment=W(e),t.sampleEnvironment=W(e),t.filename=e.readString(),t}function In(e){let t={};return t.useRoom=e.readFlag(),t.useRoom?t.room=e.readRangedU32(0,26):(t.roomHF=G(e,-1e4,0),t.reflections=G(e,-1e4,1e4),t.reverb=G(e,-1e4,2e3),t.roomRolloffFactor=J(e,.1,10,8),t.decayTime=J(e,.1,20,8),t.decayHFRatio=J(e,.1,20,8),t.reflectionsDelay=J(e,0,.3,9),t.reverbDelay=J(e,0,.1,7),t.roomVolume=G(e,-1e4,0),t.effectVolume=J(e,0,1,9),t.damping=J(e,0,2,10),t.environmentSize=J(e,1,100,8),t.environmentDiffusion=J(e,0,1,10),t.flags=e.readInt(6)),t.effectVolumeHF=J(e,0,1,8),t}function Ln(e){let t={};return t.direct=G(e,-1e4,1e3),t.directHF=G(e,-1e4,0),t.room=G(e,-1e4,1e3),t.roomHF=G(e,-1e4,0),t.obstruction=J(e,0,1,9),t.obstructionLFRatio=J(e,0,1,8),t.occlusion=J(e,0,1,9),t.occlusionLFRatio=J(e,0,1,8),t.occlusionRoomRatio=J(e,0,10,9),t.roomRolloff=J(e,0,10,9),t.airAbsorption=J(e,0,10,9),t.outsideVolumeHF=G(e,-1e4,0),t.flags=e.readInt(3),t}function Rn(e){return{sizeX:e.readF32(),sizeY:e.readF32(),textureName:e.readString()}}function zn(e){return Y(e)}function Bn(e){return{}}function Vn(e){return{tickPeriodMS:e.readS32()}}function Hn(e){let t={};return t.fadeMS=e.readS32(),t.baseTranslucency=e.readF32(),t.powerOffTranslucency=e.readF32(),t.fadeInOnly=e.readFlag(),t.triggerEnable=e.readFlag(),t.color1=K(e),t.color2=K(e),t.banRadius=e.readF32(),t.speed=e.readF32(),t.maxSpeed=e.readF32(),t.attackMS=e.readF32(),t.decayMS=e.readF32(),t.texture0=e.readString(),t.texture1=e.readString(),t.texture2=e.readString(),t.texture3=e.readString(),t.texture4=e.readString(),t}function Un(e){return{timeMultiple:e.readF32()}}function Wn(e){let t=[`baseImage`,`activeImage`,`inactiveImage`,`selectImage`,`hilightImage`],n={};for(let r=0;r<5;r++)n[t[r]]=e.readString();return n}function Gn(e){let t={};return t.soundProfile=W(e),t.numDrops=e.readS32(),t.maxSize=e.readF32(),t.materialList=e.readString(),t.sizeX=e.readF32(),t.sizeY=e.readF32(),t.movingBoxPer=e.readF32(),t.divHeightVal=e.readF32(),t.sizeBigBox=e.readF32(),t.topBoxSpeed=e.readF32(),t.frontBoxSpeed=e.readF32(),t.topBoxDrawPer=e.readF32(),t.bottomDrawHeight=e.readF32(),t.skipIfPer=e.readF32(),t.bottomSpeedPer=e.readF32(),t.frontSpeedPer=e.readF32(),t.frontRadiusPer=e.readF32(),t}function Kn(e){return{emitter:W(e)}}function qn(e){let t={},n=[];for(let t=0;t<8;t++)n.push(W(e));t.strikeSounds=n;let r=[];for(let t=0;t<8;t++)r.push(e.readString());return t.strikeTextures=r,t.thunderSound=W(e),t}function Jn(e){let t={};t.glowTopHeight=e.readF32(),t.glowBottomHeight=e.readF32(),t.glowTopRadius=e.readF32(),t.glowBottomRadius=e.readF32(),t.numGlowSegments=e.readF32(),t.glowFadeTime=e.readF32(),t.armLightDelay=e.readF32(),t.armLightLifetime=e.readF32(),t.armLightFadeTime=e.readF32(),t.lifetime=e.readF32(),t.numArcSegments=e.readF32(),t.sphereColor=K(e),t.spherePhiSegments=e.readF32(),t.sphereThetaSegments=e.readF32(),t.sphereRadius=e.readF32(),t.scale={x:e.readF32(),y:e.readF32(),z:e.readF32()},t.glowTexture=e.readString();for(let n=0;n<4;n++)t[`padTexture${n}0`]=e.readString(),t[`padTexture${n}1`]=e.readString();return t.lightStartColor=e.readString(),t.lightEndColor=e.readString(),t}function Yn(e){let t={};return t.glowTopRadius=e.readF32(),t.glowBottomRadius=e.readF32(),t.glowTopHeight=e.readF32(),t.glowBottomHeight=e.readF32(),t.numGlowSegments=e.readF32(),t.numGlowPanels=e.readF32(),t.topAlpha=e.readF32(),t.bottomAlpha=e.readF32(),t.glowSpeed=e.readF32(),t.scrollSpeed=e.readF32(),t.glowTexture=e.readString(),t.padTexture=e.readString(),t.lightStartColor=e.readString(),t.lightEndColor=e.readString(),t}function Xn(e){return{chatText:e.readString()}}function Zn(e){return Y(e)}function Qn(e){return{}}function $n(e){return{}}function er(e){let t={};t.shape=e.readString();let n=e.readInt(7),r=[];for(let t=0;t<n&&t<128;t++)r.push(e.readString());return t.sequences=r,t}function tr(e){let t={};return t.minDistance=e.readF32(),t.maxDistance=e.readF32(),t.audioScale=e.readF32(),t.directional=q(e),t.effectName=e.readString(),t}function nr(e){let t={};return t.coolColor=K(e),t.hotColor=K(e),t.activateTime=e.readF32(),t.deactivateTime=e.readF32(),t.length=e.readF32(),t.width=e.readF32(),t.speed=e.readF32(),t.stretch=e.readF32(),t.yOffset=e.readF32(),e.readFlag()&&(t.texture=e.readString()),t}function rr(e){let t={};return t.radius=e.readF32(),t.color=K(e),t.type=e.readF32(),t.length=e.readF32(),t.nodeName=e.readString(),t.direction={x:e.readF32(),y:e.readF32(),z:e.readF32()},t.offset={x:e.readF32(),y:e.readF32(),z:e.readF32()},e.readFlag()&&(t.texture=e.readString()),t}function ir(e){e.catalogDataBlock({name:`ShapeBaseData`,unpackData:Y}),e.catalogDataBlock({name:`ShapeBaseImageData`,unpackData:an}),e.catalogDataBlock({name:`PlayerData`,unpackData:on}),e.catalogDataBlock({name:`VehicleData`,unpackData:sn}),e.catalogDataBlock({name:`FlyingVehicleData`,unpackData:cn}),e.catalogDataBlock({name:`HoverVehicleData`,unpackData:ln}),e.catalogDataBlock({name:`WheeledVehicleData`,unpackData:un}),e.catalogDataBlock({name:`StaticShapeData`,unpackData:dn}),e.catalogDataBlock({name:`TurretData`,unpackData:fn}),e.catalogDataBlock({name:`TurretImageData`,unpackData:pn}),e.catalogDataBlock({name:`ItemData`,unpackData:mn}),e.catalogDataBlock({name:`ProjectileData`,unpackData:X}),e.catalogDataBlock({name:`LinearProjectileData`,unpackData:hn}),e.catalogDataBlock({name:`GrenadeProjectileData`,unpackData:gn}),e.catalogDataBlock({name:`SeekerProjectileData`,unpackData:_n}),e.catalogDataBlock({name:`SniperProjectileData`,unpackData:vn}),e.catalogDataBlock({name:`ShockLanceProjectileData`,unpackData:yn}),e.catalogDataBlock({name:`ELFProjectileData`,unpackData:bn}),e.catalogDataBlock({name:`RepairProjectileData`,unpackData:xn}),e.catalogDataBlock({name:`TargetProjectileData`,unpackData:Sn}),e.catalogDataBlock({name:`TracerProjectileData`,unpackData:Cn}),e.catalogDataBlock({name:`EnergyProjectileData`,unpackData:wn}),e.catalogDataBlock({name:`LinearFlareProjectileData`,unpackData:Tn}),e.catalogDataBlock({name:`BombProjectileData`,unpackData:En}),e.catalogDataBlock({name:`FlareProjectileData`,unpackData:Dn}),e.catalogDataBlock({name:`ExplosionData`,unpackData:On}),e.catalogDataBlock({name:`DebrisData`,unpackData:kn}),e.catalogDataBlock({name:`SplashData`,unpackData:An}),e.catalogDataBlock({name:`ShockwaveData`,unpackData:jn}),e.catalogDataBlock({name:`ParticleEmitterData`,unpackData:Mn}),e.catalogDataBlock({name:`ParticleData`,unpackData:Nn}),e.catalogDataBlock({name:`AudioDescription`,unpackData:Pn}),e.catalogDataBlock({name:`AudioProfile`,unpackData:Fn}),e.catalogDataBlock({name:`AudioEnvironment`,unpackData:In}),e.catalogDataBlock({name:`AudioSampleEnvironment`,unpackData:Ln}),e.catalogDataBlock({name:`DecalData`,unpackData:Rn}),e.catalogDataBlock({name:`CameraData`,unpackData:zn}),e.catalogDataBlock({name:`SensorData`,unpackData:Bn}),e.catalogDataBlock({name:`TriggerData`,unpackData:Vn}),e.catalogDataBlock({name:`ForceFieldBareData`,unpackData:Hn}),e.catalogDataBlock({name:`ParticleEmissionDummyData`,unpackData:Un}),e.catalogDataBlock({name:`CommanderIconData`,unpackData:Wn}),e.catalogDataBlock({name:`PrecipitationData`,unpackData:Gn}),e.catalogDataBlock({name:`FireballAtmosphereData`,unpackData:Kn}),e.catalogDataBlock({name:`LightningData`,unpackData:qn}),e.catalogDataBlock({name:`StationFXVehicleData`,unpackData:Jn}),e.catalogDataBlock({name:`StationFXPersonalData`,unpackData:Yn}),e.catalogDataBlock({name:`CannedChatItem`,unpackData:Xn}),e.catalogDataBlock({name:`MissionMarkerData`,unpackData:Zn}),e.catalogDataBlock({name:`GameBaseData`,unpackData:Qn}),e.catalogDataBlock({name:`SimDataBlock`,unpackData:$n}),e.catalogDataBlock({name:`TSShapeConstructor`,unpackData:er}),e.catalogDataBlock({name:`EffectProfile`,unpackData:tr}),e.catalogDataBlock({name:`JetEffectData`,unpackData:nr}),e.catalogDataBlock({name:`RunningLightData`,unpackData:rr})}var Z=(0,B.default)(`t2-demo-parser`),Q=(0,B.default)(`t2-demo-parser:initial`),ar=(0,B.default)(`t2-demo-parser:blocks`),or=class{buffer;view;offset;registry;ghostTracker;packetParser;_loaded=!1;_header;_initialBlock;_decompressedData;_decompressedView;_blockStreamOffset=0;_blockCount;_blockCursor=0;constructor(e){this.buffer=e,this.view=new DataView(e.buffer,e.byteOffset,e.byteLength),this.offset=0,this.registry=new Se,this.ghostTracker=new Ce,rn(this.registry),Dt(this.registry),ir(this.registry);let{bound:t,missing:n}=this.registry.bindDeterministicDataBlocks(R,128);n.length>0&&Z(`DataBlock binding: %d/%d bound, missing parsers: %s`,t,R.length,n.join(`, `));let{bound:r,missing:i}=this.registry.bindDeterministicGhosts(z,0);i.length>0&&Z(`Ghost binding: %d/%d bound, missing parsers: %s`,r,z.length,i.join(`, `));let{bound:a,missing:o}=this.registry.bindDeterministicEvents(ye,255);o.length>0&&Z(`Event binding: %d/%d bound, missing parsers: %s`,a,ye.length,o.join(`, `)),this.packetParser=new xe(this.registry,this.ghostTracker)}getRegistry(){return this.registry}getGhostTracker(){return this.ghostTracker}getPacketParser(){return this.packetParser}get loaded(){return this._loaded}get header(){if(!this._loaded)throw Error(`must call load() first`);return this._header}get initialBlock(){if(!this._loaded)throw Error(`must call load() first`);return this._initialBlock}get blockCount(){if(!this._loaded)throw Error(`must call load() first`);if(this._blockCount===void 0){let e=this._decompressedData,t=this._decompressedView,n=0,r=0;for(;r+2<=e.length;){let i=t.getUint16(r,!0)&4095;if(r+=2+i,r>e.length)break;n++}this._blockCount=n}return this._blockCount}get blockCursor(){if(!this._loaded)throw Error(`must call load() first`);return this._blockCursor}async load(){if(this._loaded)return{header:this._header,initialBlock:this._initialBlock};let e=this.readHeader();Z(`header: "%s" version=0x%s length=%dms (%smin) initialBlockSize=%d`,e.identString,e.protocolVersion.toString(16),e.demoLengthMs,(e.demoLengthMs/1e3/60).toFixed(1),e.initialBlockSize);let t=this.buffer.subarray(this.offset,this.offset+e.initialBlockSize),n=this.readInitialBlock(t);this.offset+=e.initialBlockSize;let r=this.buffer.subarray(this.offset);Z(`compressed block stream: %d bytes`,r.length);let i=await new Promise((e,t)=>{le(r,(n,r)=>{n?t(n):e(r)})});return Z(`decompressed block stream: %d bytes`,i.length),this._decompressedData=i,this._decompressedView=new DataView(i.buffer,i.byteOffset,i.byteLength),this.setupPacketParser(n),this._header=e,this._initialBlock=n,this._blockStreamOffset=0,this._blockCursor=0,this._loaded=!0,{header:e,initialBlock:n}}nextBlock(){if(!this._loaded)throw Error(`must call load() first`);let e=this._decompressedData,t=this._decompressedView,n=this._blockStreamOffset;if(n+2>e.length)return;let r=t.getUint16(n,!0),i=r>>12,a=r&4095;if(n+2+a>e.length){ar(`block %d: size %d would exceed decompressed data (offset=%d remaining=%d), stopping`,this._blockCursor,a,n+2,e.length-n-2);return}let o=e.subarray(n+2,n+2+a);this._blockStreamOffset=n+2+a;let s={index:this._blockCursor,type:i,size:a,data:o};if(this._blockCursor++,i===0)try{s.parsed=this.packetParser.parsePacket(o)}catch{}else if(i===1)this.packetParser.onSendPacketTrigger();else if(i===2&&a===64)try{s.parsed=this.readRawMove(o)}catch{}else if(i===3&&a===8)try{s.parsed=this.readInfoBlock(o)}catch{}return s}reset(){if(!this._loaded)throw Error(`must call load() first`);this._blockStreamOffset=0,this._blockCursor=0,this._blockCount=void 0,this.setupPacketParser(this._initialBlock)}processBlocks(e){if(!this._loaded)throw Error(`must call load() first`);let t=0;for(let n=0;n<e&&this.nextBlock();n++)t++;return t}setupPacketParser(e){let t=new Map;for(let[n,r]of e.dataBlocks)t.set(n,r.data);let n=new Ce;for(let t of e.initialGhosts){if(t.type!==`create`||t.classId===void 0)continue;let e=this.registry.getGhostParser(t.classId);n.createGhost(t.index,t.classId,e?.name??`unknown_${t.classId}`)}let r=new xe(this.registry,n,{dataBlockDataMap:t,connectionProtocolState:e.connectionState,nextRecvEventSeq:e.nextRecvEventSeq});this.ghostTracker=n,this.packetParser=r}async parseFullDemo(){let{header:e,initialBlock:t}=await this.load(),n=[],r;for(;r=this.nextBlock();)n.push(r);return{header:e,initialBlock:t,blocks:n}}readHeader(){let e=this.view.getUint8(this.offset);this.offset+=1;let t=new TextDecoder(`ascii`).decode(this.buffer.subarray(this.offset,this.offset+e));this.offset+=e;let n=this.view.getUint32(this.offset,!0);this.offset+=4;let r=this.view.getUint32(this.offset,!0);this.offset+=4;let i=this.view.getUint32(this.offset,!0);return this.offset+=4,{identString:t,protocolVersion:n,demoLengthMs:r,initialBlockSize:i}}readInitialBlock(e){let t=new _e(e),n=new Map;for(let e=0;e<1024;e++)t.readFlag()&&n.set(e,t.readString());Q(`after tagged strings bit=%d count=%d`,t.getCurPos(),n.size);let r=t.readU32(),i=[],a=new Map,o=0;for(;t.readFlag();){if(o++,!t.readFlag())continue;let e=t.readInt(11),n=t.readInt(7)+128,r=t.readInt(11),s=t.readInt(12),c=t.getCurPos();i.push({objectId:e,classId:n,index:r,total:s,dataBitsStart:c});let l=this.registry.getDataBlockParser(n);if(l){let r=l.unpackData(t);a.set(e,{classId:n,className:l.name,objectId:e,data:r})}else{let e=n>=128&&n<128+R.length?R[n-128]:`unknown(${n})`;throw Error(`No parser for DataBlock classId ${n} (${e}) at bit ${c}`)}}Z(`all %d/%d DataBlocks parsed (%d payloads), bit position after DataBlocks: %d`,o,r,a.size,t.getCurPos());let s=t.readU8()!==0,c=[];for(let e=0;e<6;e++)c.push(t.readU32());let l=[];for(let e=0;e<16;e++)l.push(t.readU32());let u=t.readU32(),d=[];for(let e=0;e<u;e++)d.push(this.readScoreEntry(t));Q(`after score entries bit=%d scoreCount=%d`,t.getCurPos(),u);let f=this.readDemoValues(t);Q(`after demo values bit=%d demoValues=%d`,t.getCurPos(),f.length);let{sensorGroupColors:p,targets:m}=this.readComplexTargetManager(t);Q(`after complex target manager bit=%d targets=%d sensorGroupColors=%d`,t.getCurPos(),m.length,p.length);let h=this.readConnectionProtocol(t);Q(`after connection protocol bit=%d lastRecv=%d highestAck=%d lastSend=%d connected=%s`,t.getCurPos(),h.lastSeqRecvd,h.highestAckedSeq,h.lastSendSeq,h.connectionEstablished);let g=t.readF32(),_=t.readF32();Q(`after RTT/loss bit=%d rtt=%d loss=%d`,t.getCurPos(),g,_);let v=this.readPathManager(t);Q(`after path manager bit=%d entries=%d`,t.getCurPos(),v.length);let y=t.readU32();Q(`after notify count bit=%d notifyCount=%d`,t.getCurPos(),y);let b=t.getBuffer().length*8,x=new Ce,S=this.ghostTracker;this.ghostTracker=x;let C=[],ee=0,w=0,T=[],E=-1,D,O=``,te=0,k;try{Q(`phase2 start bit=%d remaining=%d`,t.getCurPos(),b-t.getCurPos()),{nextRecvEventSeq:ee,events:C}=this.readEventStartBlock(t),Q(`after initial events bit=%d count=%d`,t.getCurPos(),C.length);let e=this.readGhostStartBlock(t,a);if(w=e.ghostingSequence,T=e.ghosts,Q(`after initial ghosts bit=%d count=%d seq=%d`,t.getCurPos(),T.length,w),E=t.readS32(),Q(`after control ghost index bit=%d control=%d`,t.getCurPos(),E),E!==-1){let e=x.getGhost(E);if(e){let n=this.registry.getGhostParser(e.classId);if(n?.readPacketData){let e={compressionPoint:{x:0,y:0,z:0},ghostTracker:x};D=n.readPacketData(t,e),Q(`after control readPacketData bit=%d parser=%s`,t.getCurPos(),n.name)}}}O=t.readString(),te=t.readU32(),t.setCurPos(t.getCurPos()+7>>3<<3),this.readSimpleTargetManager(t),this.readSimpleTargetManager(t),Q(`after sequential tail bit=%d mission="%s" CRC=0x%s`,t.getCurPos(),O,te.toString(16))}catch(e){k=e instanceof Error?e.message:String(e)}finally{this.ghostTracker=S}let A=b-t.getCurPos(),j=O.length>0?O.split(``).filter(e=>{let t=e.charCodeAt(0);return t>=32&&t<=126}).length/O.length:1,M=O.length>0&&j>=.8&&k===void 0;return Z(`initial block: events=%d ghosts=%d ghostingSeq=%d controlObj=%d mission="%s" CRC=0x%s valid=%s%s`,C.length,T.length,w,E,O,te.toString(16),M,k?` error=${k}`:``),{taggedStrings:n,dataBlockHeaders:i,dataBlockCount:o,dataBlocks:a,firstPerson:s,connectionFields:c,stateArray:l,scoreEntries:d,demoValues:f,sensorGroupColors:p,targetEntries:m,connectionState:h,roundTripTime:g,packetLoss:_,pathManager:v,notifyCount:y,nextRecvEventSeq:ee,ghostingSequence:w,initialGhosts:T,initialEvents:C,controlObjectGhostIndex:E,controlObjectData:D,missionName:O,missionCRC:te,phase2TrailingBits:A,phase2Valid:M,phase2Error:k}}readScoreEntry(e){let t=e.readFlag()?e.readInt(16):0,n=e.readFlag()?e.readInt(16):0,r=e.readFlag()?e.readInt(16):0,i=e.readInt(6),a=e.readInt(6),o=e.readInt(6),s=e.readFlag(),c=[];for(let t=0;t<6;t++)c.push(e.readFlag());return{clientId:t,teamId:n,score:r,field0:i,field1:a,field2:o,isBot:s,triggerFlags:c}}readDemoValues(e){let t=[];for(;e.readFlag();)t.push(e.readString());return t}readComplexTargetManager(e){e.readU8(),e.readU8(),e.readU8(),e.readU8();let t=[];for(let n=0;n<32;n++)for(let r=0;r<32;r++)e.readFlag()&&t.push({group:n,targetGroup:r,r:e.readU8(),g:e.readU8(),b:e.readU8(),a:e.readU8()});let n=[];for(let t=0;t<512;t++){if(!e.readFlag())continue;let r={targetId:t,sensorGroup:0,targetData:0,damageLevel:0};e.readFlag()&&(r.sensorData=e.readU32()),e.readFlag()&&(r.voiceMapData=e.readU32()),e.readFlag()&&(r.name=e.readString()),e.readFlag()&&(r.skin=e.readString()),e.readFlag()&&(r.skinPref=e.readString()),e.readFlag()&&(r.voice=e.readString()),e.readFlag()&&(r.typeDescription=e.readString()),r.sensorGroup=e.readInt(5),r.targetData=e.readInt(9),t>=32&&e.readFlag()&&(r.dataBlockRef=e.readInt(11)),r.damageLevel=e.readFloat(7),n.push(r)}return{sensorGroupColors:t,targets:n}}readPathManager(e){let t=[],n=e.readU32();for(let r=0;r<n;r++){let n=e.readU32(),r=e.readU32(),i=[];for(let t=0;t<r;t++)i.push({field0:e.readU32(),field1:e.readU32(),field2:e.readU32(),auxField:e.readU32()});t.push({entryId:n,records:i})}return t}readSimpleTargetManager(e){e.readU8(),e.readU32(),e.readU32(),e.readU32(),e.readU32()}readConnectionProtocol(e){let t=[];for(let n=0;n<32;n++)t.push(e.readU32());return{lastSeqRecvdAtSend:t,lastSeqRecvd:e.readU32(),highestAckedSeq:e.readU32(),lastSendSeq:e.readU32(),ackMask:e.readU32(),connectSequence:e.readU32(),lastRecvAckAck:e.readU32(),connectionEstablished:e.readBool()}}readEventStartBlock(e){let t=e.readU32(),n=[];for(Q(`event block: nextRecvEventSeq=%d bit=%d`,t,e.getCurPos());e.readFlag();){let t=e.readInt(6)+255,r=e.getCurPos(),i=this.registry.getEventParser(t),a;if(i)try{let t={compressionPoint:{x:0,y:0,z:0},ghostTracker:this.ghostTracker,getDataBlockParser:e=>this.registry.getDataBlockParser(e)};a=i.unpack(e,t)}catch{n.push({classId:t,guaranteed:!0,dataBitsStart:r,dataBitsEnd:r});break}else{n.push({classId:t,guaranteed:!0,dataBitsStart:r,dataBitsEnd:r});break}n.push({classId:t,guaranteed:!0,dataBitsStart:r,dataBitsEnd:e.getCurPos(),parsedData:a}),Q(` event classId=%d bits=%d`,t,e.getCurPos()-r)}return{nextRecvEventSeq:t,events:n}}readGhostStartBlock(e,t){let n=e.readU32(),r=[];Q(`ghost block: seq=%d bit=%d`,n,e.getCurPos());let i=this.registry.getGhostCatalog(),a=e.getBuffer().length*8,o=new Map;for(let[e,n]of t)o.set(e,n.data);for(;e.readFlag()&&!e.isError();){let n=e.readInt(10),s=e.readInt(7)+0,c=e.getCurPos(),l=[],u=new Set,{entry:d}=this.identifyGhostViaDataBlock(e,t,i),f=this.registry.getGhostParser(s);f&&(l.push({entry:f,method:`registry`}),u.add(f)),d&&!u.has(d)&&(l.push({entry:d,method:`datablock`}),u.add(d));let p={getDataBlockData:e=>o.get(e),getDataBlockParser:e=>this.registry.getDataBlockParser(e)},m=!1;for(let{entry:t,method:i}of l){let o=i===`registry`,l=this.tryGhostParser(e,t,c,a,!1,p,o);if(l!==!1){this.ghostTracker.createGhost(n,s,t.name),Q(` ghost idx=%d classId=%d parser=%s bits=%d via=%s`,n,s,t.name,e.getCurPos()-c,i),r.push({index:n,type:`create`,classId:s,updateBitsStart:c,updateBitsEnd:e.getCurPos(),parsedData:l}),m=!0;break}}if(!m){Q(` ghost idx=%d classId=%d NO PARSER (stopping at bit=%d, remaining=%d)`,n,s,c,a-c);break}}return Q(`ghost loop ended at bit=%d remaining=%d count=%d`,e.getCurPos(),a-e.getCurPos(),r.length),{ghostingSequence:n,ghosts:r}}tryGhostParser(e,t,n,r,i=!1,a,o=!1){let s=e.savePos();i||Q(` try %s: startBit=%d`,t.name,n);try{let c=t.unpackUpdate(e,!0,{compressionPoint:{x:0,y:0,z:0},ghostTracker:this.ghostTracker,...a}),l=e.getCurPos()-n,u=r-e.getCurPos();if(e.isError()||!o&&l<3)return i||Q(` reject %s: bits=%d isError=%s`,t.name,l,e.isError()),e.restorePos(s),!1;if(u>1e3){let n=e.getCurPos(),r=e.readFlag();if(e.setCurPos(n),!r)return i||Q(` reject %s: bits=%d misaligned (remaining=%d)`,t.name,l,u),e.restorePos(s),!1}return c??{}}catch(n){return i||Q(` reject %s: error at bit=%d: %s`,t.name,e.getCurPos(),n instanceof Error?n.message:String(n)),e.restorePos(s),!1}}identifyGhostViaDataBlock(e,t,n){if(!t)return{entry:void 0,dbFlag:!1};let r=e.savePos(),i,a=!1;try{if(a=e.readFlag(),a){let r=e.readInt(11),a=t.get(r);if(a){let e=a.className.replace(/Data$/,``);i=n.get(e),i||Q(` identifyGhostViaDataBlock: dbId=%d className=%s ghostName=%s (no ghost parser)`,r,a.className,e)}else Q(` identifyGhostViaDataBlock: dbId=%d (no DataBlock found)`,r)}else Q(` identifyGhostViaDataBlock: DataBlock flag=0`)}catch{}return e.restorePos(r),{entry:i,dbFlag:a}}readRawMove(e){let t=new DataView(e.buffer,e.byteOffset,e.byteLength),n=t.getInt32(0,!0),r=t.getInt32(4,!0),i=t.getInt32(8,!0),a=t.getUint32(12,!0),o=t.getUint32(16,!0),s=t.getUint32(20,!0),c=t.getFloat32(24,!0),l=t.getFloat32(28,!0),u=t.getFloat32(32,!0),d=t.getFloat32(36,!0),f=t.getFloat32(40,!0),p=t.getFloat32(44,!0),m=t.getUint32(48,!0),h=t.getUint32(52,!0),g=e[56]!==0,_=[];for(let t=0;t<6;t++)_.push(e[57+t]!==0);return{px:n,py:r,pz:i,pyaw:a,ppitch:o,proll:s,x:c,y:l,z:u,yaw:d,pitch:f,roll:p,id:m,sendCount:h,freeLook:g,trigger:_}}readInfoBlock(e){let t=new DataView(e.buffer,e.byteOffset,e.byteLength);return{value1:t.getUint32(0,!0),value2:t.getFloat32(4,!0)}}};function sr(){let e=new Se,t=new Ce;return rn(e),Dt(e),ir(e),e.bindDeterministicDataBlocks(R,128),e.bindDeterministicGhosts(z,0),e.bindDeterministicEvents(ye,255),{registry:e,ghostTracker:t,packetParser:new xe(e,t,{dataBlockDataMap:new Map})}}var cr=new Set([`FlyingVehicle`,`HoverVehicle`,`WheeledVehicle`]),lr=new Set([`BombProjectile`,`EnergyProjectile`,`FlareProjectile`,`GrenadeProjectile`,`LinearFlareProjectile`,`LinearProjectile`,`Projectile`,`SeekerProjectile`,`TracerProjectile`]),ur=new Set([`LinearProjectile`,`TracerProjectile`,`LinearFlareProjectile`,`Projectile`]),dr=new Set([`GrenadeProjectile`,`EnergyProjectile`,`FlareProjectile`,`BombProjectile`]),fr=new Set([`SeekerProjectile`]),pr=new Set([`StaticShape`,`ScopeAlwaysShape`,`Turret`,`BeaconObject`,`ForceFieldBare`]);function mr(e){return e===`Player`?`Player`:cr.has(e)?`Vehicle`:e===`Item`?`Item`:lr.has(e)?`Projectile`:pr.has(e)?`Deployable`:`Ghost`}function hr(e,t){return`${e}_${t}`}var gr=Object.freeze({r:0,g:255,b:0}),_r=Object.freeze({r:255,g:0,b:0}),vr=new r,yr=new n;function br(e,t,n){return e<t?t:e>n?n:e}var xr=Math.PI*.494;function Sr(e,t){let n=Math.sin(t),r=Math.cos(t),i=Math.sin(e),a=Math.cos(e);return vr.set(-i,a*n,-a*r,0,0,r,n,0,a,i*n,-i*r,0,0,0,0,1),yr.setFromRotationMatrix(vr),[yr.x,yr.y,yr.z,yr.w]}function Cr(e){let t=-e/2;return[0,Math.sin(t),0,Math.cos(t)]}function wr(e){if(!Number.isFinite(e.x)||!Number.isFinite(e.y)||!Number.isFinite(e.z)||!Number.isFinite(e.w))return null;let t=-e.y,n=-e.z,r=-e.x,i=e.w,a=t*t+n*n+r*r+i*i;if(a<=1e-12)return null;let o=1/Math.sqrt(a);return[t*o,n*o,r*o,i*o]}function Tr(e){return Math.atan2(2*(e.w*e.z+e.x*e.y),e.w*e.w+e.x*e.x-e.y*e.y-e.z*e.z)}function Er(e){let t=2*(e.w*e.x-e.y*e.z);return Math.asin(Math.max(-1,Math.min(1,t)))}function Dr(e){return e!=null&&Number.isFinite(e.x)&&Number.isFinite(e.y)&&Number.isFinite(e.z)}function Or(e){return!!e&&typeof e==`object`&&typeof e.x==`number`&&typeof e.y==`number`&&typeof e.z==`number`}function kr(e){return!!e&&typeof e==`object`&&typeof e.x==`number`&&typeof e.y==`number`&&typeof e.z==`number`&&typeof e.w==`number`}function Ar(e,t){if(!t)return;let n;return n=lr.has(e)||e.endsWith(`ProjectileData`)?t.projectileShapeName:e===`DebrisData`?t.shapeFileName:t.shapeName,typeof n==`string`&&n.length>0?n:void 0}function $(e,t){if(e)for(let n of t){let t=e[n];if(typeof t==`number`&&Number.isFinite(t))return t}}function jr(e,t){if(e)for(let n of t){let t=e[n];if(typeof t==`string`&&t.length>0)return t}}function Mr(e,t){if(e)for(let n of t){let t=e[n];if(typeof t==`boolean`)return t}}function Nr(e,t){if(!t)return;let n=jr(t,[`tracerTex0`,`textureName0`,`texture0`])??``;if(!(e===`TracerProjectile`||n.length>0&&$(t,[`tracerLength`])!=null)||!n)return;let r=jr(t,[`tracerTex1`,`textureName1`,`texture1`]),i=$(t,[`tracerLength`])??10,a=$(t,[`tracerWidth`]),o=$(t,[`tracerAlpha`]);return{kind:`tracer`,texture:n,crossTexture:r,tracerLength:i,tracerWidth:a!=null&&($(t,[`crossViewAng`])!=null||a<=.7)?a:o??a??.5,crossViewAng:$(t,[`crossViewAng`,`crossViewFraction`])??(typeof t.tracerWidth==`number`&&t.tracerWidth>.7?t.tracerWidth:.98),crossSize:$(t,[`crossSize`,`muzzleVelocity`])??.45,renderCross:Mr(t,[`renderCross`,`proximityRadius`])??!0}}function Pr(e,t){if(t){if(e===`LinearFlareProjectile`){let e=jr(t,[`smokeTexture`,`flareTexture`]);if(!e)return;let n=t.flareColor,r=$(t,[`size`])??.5;return{kind:`sprite`,texture:e,color:n?{r:n.r,g:n.g,b:n.b}:{r:1,g:1,b:1},size:r}}if(e===`FlareProjectile`){let e=jr(t,[`flareTexture`]);return e?{kind:`sprite`,texture:e,color:{r:1,g:.9,b:.5},size:$(t,[`size`])??4}:void 0}}}function Fr(e){let t=e.states;if(!(!Array.isArray(t)||t.length===0))return t.map(e=>{let t=e=>{let t=e;return t==null?-1:t-1};return{name:e.name??``,transitionOnNotLoaded:t(e.transitionOnAmmo),transitionOnLoaded:t(e.transitionOnNoAmmo),transitionOnNoAmmo:t(e.transitionOnTarget),transitionOnAmmo:t(e.transitionOnNoTarget),transitionOnNoTarget:t(e.transitionOnWet),transitionOnTarget:t(e.transitionOnNotWet),transitionOnNotWet:t(e.transitionOnTriggerUp),transitionOnWet:t(e.transitionOnTriggerDown),transitionOnTriggerUp:t(e.transitionOnTimeout),transitionOnTriggerDown:t(e.transitionGeneric0In),transitionOnTimeout:t(e.transitionGeneric0Out),timeoutValue:e.timeoutValue,waitForTimeout:e.waitForTimeout??!1,fire:e.fire??!1,sequence:e.sequence,spin:e.spin??0,direction:e.direction??!0,scaleAnimation:e.scaleAnimation??!1,loaded:e.loaded??0,soundDataBlockId:e.sound??-1}})}function Ir(e){let t=``;for(let n=0;n<e.length;n++)e.charCodeAt(n)>=32&&(t+=e[n]);return t}var Lr={2:0,3:1,4:2,5:3,6:4,7:5,8:6,11:7,12:8,14:9},Rr=15,zr=16,Br=17;function Vr(e){for(let t=0;t<e.length;t++){let n=e.charCodeAt(t),r=Lr[n];if(r!==void 0)return r;if(n>=32)return}}function Hr(e){let t=[],n=0,r=``,i=!1;for(let a=0;a<e.length;a++){let o=e.charCodeAt(a);if(o===zr){i=!0;continue}if(o===Br){i=!1;continue}if(i){o>=32&&(r+=e[a]);continue}let s=Lr[o];s===void 0?o===Rr?(r&&=(t.push({text:r,colorCode:n}),``),n=0):o>=32&&(r+=e[a]):(r&&=(t.push({text:r,colorCode:n}),``),n=s)}return r&&t.push({text:r,colorCode:n}),t}function Ur(e){let t=e.indexOf(`~w`);return t===-1?{text:e,wavPath:null}:{text:e.substring(0,t),wavPath:e.substring(t+2)}}function Wr(e){return e?typeof e.cameraMode==`number`?`camera`:typeof e.rotationZ==`number`?`player`:null:null}var Gr=new Map([[`gui/hud_new_packammo`,0],[`gui/hud_new_packcloak`,1],[`gui/hud_new_packenergy`,2],[`gui/hud_new_packrepair`,3],[`gui/hud_new_packsatchel`,4],[`gui/hud_new_packshield`,5],[`gui/hud_new_packinventory`,6],[`gui/hud_new_packmotionsens`,7],[`gui/hud_new_packradar`,8],[`gui/hud_new_packturretout`,9],[`gui/hud_new_packturretin`,10],[`gui/hud_new_packsensjam`,11],[`gui/hud_new_packturret`,12],[`gui/hud_satchel_unarmed`,18]]);function Kr(e){let t=e.toLowerCase();for(let[e,n]of Gr)if(e===t)return n;return-1}export{or as A,_r as C,hr as D,fr as E,mr as O,gr as S,ur as T,Ir as _,Wr as a,wr as b,kr as c,Hr as d,Fr as f,Nr as g,Pr as h,Vr as i,sr as k,Dr as l,Ar as m,Kr as n,Ur as o,Cr as p,br as r,$ as s,xr as t,Or as u,Tr as v,dr as w,Sr as x,Er as y}; |