@needle-tools/engine 3.6.6 → 3.6.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/needle-engine.js +3 -3
- package/dist/needle-engine.light.js +3 -3
- package/dist/needle-engine.light.min.js +1 -1
- package/dist/needle-engine.light.umd.cjs +1 -1
- package/dist/needle-engine.min.js +1 -1
- package/dist/needle-engine.umd.cjs +1 -1
- package/lib/engine/engine_license.js +3 -3
- package/lib/engine/engine_license.js.map +1 -1
- package/package.json +1 -1
- package/src/engine/engine_license.ts +3 -3
|
@@ -3957,7 +3957,7 @@ irradiance += getLightProbeIrradiance( lightProbe, geometry.normal );
|
|
|
3957
3957
|
transform: scale(1.1) !important;
|
|
3958
3958
|
cursor: pointer !important;
|
|
3959
3959
|
}
|
|
3960
|
-
`,i}async function e9(){try{let e=await(await fetch("https://urls.needle.tools/analytics-endpoint")).text();if(e){Ts&&console.log("Analytics backend url",e);const t=window.location.href;let g="api/
|
|
3960
|
+
`,i}async function e9(){try{let e=await(await fetch("https://urls.needle.tools/analytics-endpoint-v2")).text();if(e){Ts&&console.log("Analytics backend url",e);const t=window.location.href;let g="api/v2/new/request";e.endsWith("/")||(g="/"+g);const o=`${e}${g}?license=${VQ}&url=${encodeURIComponent(t)}&hostname=${encodeURIComponent(window.location.hostname)}&pathname=${encodeURIComponent(window.location.pathname)}&search=${encodeURIComponent(window.location.search)}&hash=${encodeURIComponent(window.location.hash)}&version=${im}&generator=${Cx}`;Ts&&console.log("Sending non-commercial usage message to analytics backend",o),fetch(o,{mode:"no-cors"}).catch(C=>{Ts&&console.log("Failed to send non-commercial usage message to analytics backend",C)})}}catch(i){Ts&&console.log("Failed to send non-commercial usage message to analytics backend",i)}}const hr=aA("debugloading"),wc=aA("debugloadingrendering");class t9{constructor(){r(this,"className");r(this,"additionalClasses")}}let yc=0,NK;function pm(i){hr&&console.log(i.progress.loaded.toFixed(0)+"/"+i.progress.total.toFixed(0),i);const A=i.count,e=i.progress.total;e===0||e===void 0?(NK!==i.name&&(yc=0),NK=i.name,yc+=(1-yc)*.001,hr&&Ro("Loading "+i.name+" did not report total size")):yc=i.progress.loaded/e;const t=i.index/A+yc/A;return ee.clamp01(t)}const Mf=class{constructor(A,e){r(this,"loadingProgress",0);r(this,"_element");r(this,"_progress",0);r(this,"_allowCustomLoadingElement",!0);r(this,"_loadingElement");r(this,"_loadingTextContainer",null);r(this,"_loadingBar",null);r(this,"_messageContainer",null);r(this,"_loadingElementOptions");r(this,"_progressLoop");this._element=A,this._loadingElementOptions=e}onLoadingBegin(A){const e=this._element.shadowRoot||this._element;if(hr&&console.warn("Begin Loading"),!this._loadingElement){for(let t=0;t<e.children.length;t++){const g=e.children[t];if(g.classList.contains(Mf.LoadingContainerClassName)){if(!this._allowCustomLoadingElement){hr&&console.warn("Remove custom loading container"),e.removeChild(g);continue}this._loadingElement=this.createLoadingElement(g)}}this._loadingElement||(this._loadingElement=this.createLoadingElement())}this._progress=0,this.loadingProgress=0,this._loadingElement.style.display="flex",e.appendChild(this._loadingElement),this.smoothProgressLoop(),this.setMessage(A??"")}onLoadingUpdate(A,e){var g;if(!((g=this._loadingElement)!=null&&g.parentElement))return;let t=0;typeof A=="number"?t=A:("index"in A&&(t=pm(A)),!e&&"name"in A&&this.setMessage("loading "+A.name)),this.loadingProgress=t,e&&this.setMessage(e),this.updateDisplay()}onLoadingFinished(){hr&&console.warn("Finished Loading"),wc||(this.loadingProgress=1,this.onDoneLoading())}setMessage(A){this._messageContainer&&(this._messageContainer.innerText=A)}smoothProgressLoop(){if(this._progressLoop)return;let A=1/12;wc&&(A=1/500,typeof wc=="number"&&(A*=wc)),this._progressLoop=setInterval(()=>{this.loadingProgress>=.95&&!wc&&(A=.9),this._progress=ee.lerp(this._progress,this.loadingProgress,A*this.loadingProgress),this.updateDisplay()},A)}onDoneLoading(){this._loadingElement&&(hr&&console.log("Hiding loading element"),this._loadingElement.style.display="none",this._loadingElement.remove()),this._progressLoop&&clearInterval(this._progressLoop),this._progressLoop=null}updateDisplay(){const A=this._progress,e=(A*100).toFixed(0)+"%";this._loadingBar&&(this._loadingBar.style.width=A*100+"%"),this._loadingTextContainer&&(this._loadingTextContainer.textContent=e)}createLoadingElement(A){var B,Q;hr&&!A&&console.log("Creating loading element"),this._loadingElement=A||document.createElement("div");const e=this._element.getAttribute("loading-style"),t=mQ();if(!A&&(this._loadingElement.style.position="absolute",this._loadingElement.style.width="100%",this._loadingElement.style.height="100%",this._loadingElement.style.left="0",this._loadingElement.style.top="0",e==="light"?this._loadingElement.style.backgroundColor="#ddd":this._loadingElement.style.backgroundColor="#222",this._loadingElement.style.display="flex",this._loadingElement.style.alignItems="center",this._loadingElement.style.justifyContent="center",this._loadingElement.style.zIndex=Number.MAX_SAFE_INTEGER.toString(),this._loadingElement.style.flexDirection="column",this._loadingElement.style.pointerEvents="none",this._loadingElement.style.color="white",e==="light"?this._loadingElement.style.color="rgba(0,0,0,.8)":this._loadingElement.style.color="rgba(255,255,255,.5)",t&&this._element)){const E=this._element.getAttribute("loading-background-color");E&&(this._loadingElement.style.backgroundColor=E);const c=this._element.getAttribute("loading-text-color");c&&(this._loadingElement.style.color=c)}const g=((B=this._loadingElementOptions)==null?void 0:B.className)??Mf.LoadingContainerClassName;if(this._loadingElement.classList.add(g),(Q=this._loadingElementOptions)!=null&&Q.additionalClasses)for(const E of this._loadingElementOptions.additionalClasses)this._loadingElement.classList.add(E);const I=document.createElement("div"),o=30;I.style.display="flex",I.style.width=o+"%",I.style.height="2px",e==="light"?I.style.backgroundColor="rgba(0,0,0,.2)":I.style.backgroundColor="rgba(255,255,255,.2)";const C=document.createElement("img"),s=64;if(C.style.width=`${s}px`,C.style.height=`${s}px`,C.style.marginBottom="20px",C.addEventListener("click",()=>window.open("https://needle.tools","_blank")),C.style.cursor="pointer",C.style.userSelect="none",C.style.pointerEvents="all",C.style.objectFit="contain",C.src=hY,t&&this._element){const E=this._element.getAttribute("loading-logo-src");E&&(C.src=E)}this._loadingElement.appendChild(C),this._loadingElement.appendChild(I),this._loadingBar=document.createElement("div"),I.appendChild(this._loadingBar);const n=function(E){return ee.lerp(o*.5,100-o*.5,E)+"%"};if(this._loadingBar.style.background=`linear-gradient(90deg, #02022B ${n(0)}, #0BA398 ${n(.4)}, #99CC33 ${n(.5)}, #D7DB0A ${n(1)})`,this._loadingBar.style.backgroundAttachment="fixed",this._loadingBar.style.width="0%",this._loadingBar.style.height="100%",t&&this._element){const E=this._element.getAttribute("primary-color"),c=this._element.getAttribute("secondary-color");E&&c?this._loadingBar.style.background=`linear-gradient(90deg, ${E} ${n(0)}, ${c} ${n(1)})`:E?this._loadingBar.style.background=E:c&&(this._loadingBar.style.background=c)}this._loadingTextContainer=document.createElement("div"),this._loadingTextContainer.style.display="flex",this._loadingTextContainer.style.justifyContent="center",this._loadingTextContainer.style.marginTop="1.2em",this._loadingElement.appendChild(this._loadingTextContainer);const a=document.createElement("div");if(this._messageContainer=a,a.style.display="flex",a.style.fontSize=".8em",a.style.paddingTop=".5em",a.style.fontWeight="200",a.style.fontFamily="Roboto, sans-serif, Arial",a.style.justifyContent="center",this._loadingElement.appendChild(a),t&&this._element){const E=this._element.getAttribute("loading-text-color");E&&(a.style.color=E)}if(!Id()){const E=document.createElement("div");E.style.paddingTop=".6em",E.style.fontSize=".8em",E.innerText="NON COMMERCIAL",this._loadingElement.appendChild(E)}return this._loadingElement}};let hh=Mf;r(hh,"LoadingContainerClassName","loading");const zS=new WeakMap;class Dm extends vg{constructor(A){super(A),this.decoderPath="",this.decoderConfig={},this.decoderBinary=null,this.decoderPending=null,this.workerLimit=4,this.workerPool=[],this.workerNextTaskID=1,this.workerSourceURL="",this.defaultAttributeIDs={position:"POSITION",normal:"NORMAL",color:"COLOR",uv:"TEX_COORD"},this.defaultAttributeTypes={position:"Float32Array",normal:"Float32Array",color:"Float32Array",uv:"Float32Array"}}setDecoderPath(A){return this.decoderPath=A,this}setDecoderConfig(A){return this.decoderConfig=A,this}setWorkerLimit(A){return this.workerLimit=A,this}load(A,e,t,g){const I=new Hi(this.manager);I.setPath(this.path),I.setResponseType("arraybuffer"),I.setRequestHeader(this.requestHeader),I.setWithCredentials(this.withCredentials),I.load(A,o=>{this.decodeDracoFile(o,e).catch(g)},t,g)}decodeDracoFile(A,e,t,g){const I={attributeIDs:t||this.defaultAttributeIDs,attributeTypes:g||this.defaultAttributeTypes,useUniqueIDs:!!t};return this.decodeGeometry(A,I).then(e)}decodeGeometry(A,e){const t=JSON.stringify(e);if(zS.has(A)){const s=zS.get(A);if(s.key===t)return s.promise;if(A.byteLength===0)throw new Error("THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.")}let g;const I=this.workerNextTaskID++,o=A.byteLength,C=this._getWorker(I,o).then(s=>(g=s,new Promise((n,a)=>{g._callbacks[I]={resolve:n,reject:a},g.postMessage({type:"decode",id:I,taskConfig:e,buffer:A},[A])}))).then(s=>this._createGeometry(s.geometry));return C.catch(()=>!0).then(()=>{g&&I&&this._releaseTask(g,I)}),zS.set(A,{key:t,promise:C}),C}_createGeometry(A){const e=new ue;A.index&&e.setIndex(new Ce(A.index.array,1));for(let t=0;t<A.attributes.length;t++){const g=A.attributes[t],I=g.name,o=g.array,C=g.itemSize;e.setAttribute(I,new Ce(o,C))}return e}_loadLibrary(A,e){const t=new Hi(this.manager);return t.setPath(this.decoderPath),t.setResponseType(e),t.setWithCredentials(this.withCredentials),new Promise((g,I)=>{t.load(A,g,void 0,I)})}preload(){return this._initDecoder(),this}_initDecoder(){if(this.decoderPending)return this.decoderPending;const A=typeof WebAssembly!="object"||this.decoderConfig.type==="js",e=[];return A?e.push(this._loadLibrary("draco_decoder.js","text")):(e.push(this._loadLibrary("draco_wasm_wrapper.js","text")),e.push(this._loadLibrary("draco_decoder.wasm","arraybuffer"))),this.decoderPending=Promise.all(e).then(t=>{const g=t[0];A||(this.decoderConfig.wasmBinary=t[1]);const I=i9.toString(),o=["/* draco decoder */",g,"","/* worker */",I.substring(I.indexOf("{")+1,I.lastIndexOf("}"))].join(`
|
|
3961
3961
|
`);this.workerSourceURL=URL.createObjectURL(new Blob([o]))}),this.decoderPending}_getWorker(A,e){return this._initDecoder().then(()=>{if(this.workerPool.length<this.workerLimit){const g=new Worker(this.workerSourceURL);g._callbacks={},g._taskCosts={},g._taskLoad=0,g.postMessage({type:"init",decoderConfig:this.decoderConfig}),g.onmessage=function(I){const o=I.data;switch(o.type){case"decode":g._callbacks[o.id].resolve(o);break;case"error":g._callbacks[o.id].reject(o);break;default:console.error('THREE.DRACOLoader: Unexpected message, "'+o.type+'"')}},this.workerPool.push(g)}else this.workerPool.sort(function(g,I){return g._taskLoad>I._taskLoad?-1:1});const t=this.workerPool[this.workerPool.length-1];return t._taskCosts[A]=e,t._taskLoad+=e,t})}_releaseTask(A,e){A._taskLoad-=A._taskCosts[e],delete A._callbacks[e],delete A._taskCosts[e]}debug(){console.log("Task load: ",this.workerPool.map(A=>A._taskLoad))}dispose(){for(let A=0;A<this.workerPool.length;++A)this.workerPool[A].terminate();return this.workerPool.length=0,this}}function i9(){let i,A;onmessage=function(o){const C=o.data;switch(C.type){case"init":i=C.decoderConfig,A=new Promise(function(a){i.onModuleLoaded=function(B){a({draco:B})},DracoDecoderModule(i)});break;case"decode":const s=C.buffer,n=C.taskConfig;A.then(a=>{const B=a.draco,Q=new B.Decoder,E=new B.DecoderBuffer;E.Init(new Int8Array(s),s.byteLength);try{const c=e(B,Q,E,n),h=c.attributes.map(l=>l.array.buffer);c.index&&h.push(c.index.array.buffer),self.postMessage({type:"decode",id:C.id,geometry:c},h)}catch(c){console.error(c),self.postMessage({type:"error",id:C.id,error:c.message})}finally{B.destroy(E),B.destroy(Q)}});break}};function e(o,C,s,n){const a=n.attributeIDs,B=n.attributeTypes;let Q,E;const c=C.GetEncodedGeometryType(s);if(c===o.TRIANGULAR_MESH)Q=new o.Mesh,E=C.DecodeBufferToMesh(s,Q);else if(c===o.POINT_CLOUD)Q=new o.PointCloud,E=C.DecodeBufferToPointCloud(s,Q);else throw new Error("THREE.DRACOLoader: Unexpected geometry type.");if(!E.ok()||Q.ptr===0)throw new Error("THREE.DRACOLoader: Decoding failed: "+E.error_msg());const h={index:null,attributes:[]};for(const l in a){const d=self[B[l]];let D,u;if(n.useUniqueIDs)u=a[l],D=C.GetAttributeByUniqueId(Q,u);else{if(u=C.GetAttributeId(Q,o[a[l]]),u===-1)continue;D=C.GetAttribute(Q,u)}h.attributes.push(g(o,C,Q,l,d,D))}return c===o.TRIANGULAR_MESH&&(h.index=t(o,C,Q)),o.destroy(Q),h}function t(o,C,s){const a=s.num_faces()*3,B=a*4,Q=o._malloc(B);C.GetTrianglesUInt32Array(s,B,Q);const E=new Uint32Array(o.HEAPF32.buffer,Q,a).slice();return o._free(Q),{array:E,itemSize:1}}function g(o,C,s,n,a,B){const Q=B.num_components(),c=s.num_points()*Q,h=c*a.BYTES_PER_ELEMENT,l=I(o,a),d=o._malloc(h);C.GetAttributeDataArrayForAllPoints(s,B,l,h,d);const D=new a(o.HEAPF32.buffer,d,c).slice();return o._free(d),{name:n,array:D,itemSize:Q}}function I(o,C){switch(C){case Float32Array:return o.DT_FLOAT32;case Int8Array:return o.DT_INT8;case Int16Array:return o.DT_INT16;case Int32Array:return o.DT_INT32;case Uint8Array:return o.DT_UINT8;case Uint16Array:return o.DT_UINT16;case Uint32Array:return o.DT_UINT32}}}class g9{constructor(A=4){this.pool=A,this.queue=[],this.workers=[],this.workersResolve=[],this.workerStatus=0}_initWorker(A){if(!this.workers[A]){const e=this.workerCreator();e.addEventListener("message",this._onMessage.bind(this,A)),this.workers[A]=e}}_getIdleWorker(){for(let A=0;A<this.pool;A++)if(!(this.workerStatus&1<<A))return A;return-1}_onMessage(A,e){const t=this.workersResolve[A];if(t&&t(e),this.queue.length){const{resolve:g,msg:I,transfer:o}=this.queue.shift();this.workersResolve[A]=g,this.workers[A].postMessage(I,o)}else this.workerStatus^=1<<A}setWorkerCreator(A){this.workerCreator=A}setWorkerLimit(A){this.pool=A}postMessage(A,e){return new Promise(t=>{const g=this._getIdleWorker();g!==-1?(this._initWorker(g),this.workerStatus|=1<<g,this.workersResolve[g]=t,this.workers[g].postMessage(A,e)):this.queue.push({resolve:t,msg:A,transfer:e})})}dispose(){this.workers.forEach(A=>A.terminate()),this.workersResolve.length=0,this.workers.length=0,this.queue.length=0,this.workerStatus=0}}const I9=0,o9=2,C9=1,s9=2,n9=0,pY=9,fm=15,DY=16,wm=22,fY=37,ym=43,wY=76,yY=83,SY=97,kY=100,GY=103,MY=109;class a9{constructor(){this.vkFormat=0,this.typeSize=1,this.pixelWidth=0,this.pixelHeight=0,this.pixelDepth=0,this.layerCount=0,this.faceCount=1,this.supercompressionScheme=0,this.levels=[],this.dataFormatDescriptor=[{vendorId:0,descriptorType:0,descriptorBlockSize:0,versionNumber:2,colorModel:0,colorPrimaries:1,transferFunction:2,flags:0,texelBlockDimension:[0,0,0,0],bytesPlane:[0,0,0,0,0,0,0,0],samples:[]}],this.keyValue={},this.globalData=null}}class Sc{constructor(A,e,t,g){this._dataView=new DataView(A.buffer,A.byteOffset+e,t),this._littleEndian=g,this._offset=0}_nextUint8(){const A=this._dataView.getUint8(this._offset);return this._offset+=1,A}_nextUint16(){const A=this._dataView.getUint16(this._offset,this._littleEndian);return this._offset+=2,A}_nextUint32(){const A=this._dataView.getUint32(this._offset,this._littleEndian);return this._offset+=4,A}_nextUint64(){const A=this._dataView.getUint32(this._offset,this._littleEndian)+4294967296*this._dataView.getUint32(this._offset+4,this._littleEndian);return this._offset+=8,A}_nextInt32(){const A=this._dataView.getInt32(this._offset,this._littleEndian);return this._offset+=4,A}_skip(A){return this._offset+=A,this}_scan(A,e=0){const t=this._offset;let g=0;for(;this._dataView.getUint8(this._offset)!==e&&g<A;)g++,this._offset++;return g<A&&this._offset++,new Uint8Array(this._dataView.buffer,this._dataView.byteOffset+t,g)}}const Tg=[171,75,84,88,32,50,48,187,13,10,26,10];function KK(i){return typeof TextDecoder<"u"?new TextDecoder().decode(i):Buffer.from(i).toString("utf8")}function r9(i){const A=new Uint8Array(i.buffer,i.byteOffset,Tg.length);if(A[0]!==Tg[0]||A[1]!==Tg[1]||A[2]!==Tg[2]||A[3]!==Tg[3]||A[4]!==Tg[4]||A[5]!==Tg[5]||A[6]!==Tg[6]||A[7]!==Tg[7]||A[8]!==Tg[8]||A[9]!==Tg[9]||A[10]!==Tg[10]||A[11]!==Tg[11])throw new Error("Missing KTX 2.0 identifier.");const e=new a9,t=17*Uint32Array.BYTES_PER_ELEMENT,g=new Sc(i,Tg.length,t,!0);e.vkFormat=g._nextUint32(),e.typeSize=g._nextUint32(),e.pixelWidth=g._nextUint32(),e.pixelHeight=g._nextUint32(),e.pixelDepth=g._nextUint32(),e.layerCount=g._nextUint32(),e.faceCount=g._nextUint32();const I=g._nextUint32();e.supercompressionScheme=g._nextUint32();const o=g._nextUint32(),C=g._nextUint32(),s=g._nextUint32(),n=g._nextUint32(),a=g._nextUint64(),B=g._nextUint64(),Q=new Sc(i,Tg.length+t,3*I*8,!0);for(let $=0;$<I;$++)e.levels.push({levelData:new Uint8Array(i.buffer,i.byteOffset+Q._nextUint64(),Q._nextUint64()),uncompressedByteLength:Q._nextUint64()});const E=new Sc(i,o,C,!0),c={vendorId:E._skip(4)._nextUint16(),descriptorType:E._nextUint16(),versionNumber:E._nextUint16(),descriptorBlockSize:E._nextUint16(),colorModel:E._nextUint8(),colorPrimaries:E._nextUint8(),transferFunction:E._nextUint8(),flags:E._nextUint8(),texelBlockDimension:[E._nextUint8(),E._nextUint8(),E._nextUint8(),E._nextUint8()],bytesPlane:[E._nextUint8(),E._nextUint8(),E._nextUint8(),E._nextUint8(),E._nextUint8(),E._nextUint8(),E._nextUint8(),E._nextUint8()],samples:[]},h=(c.descriptorBlockSize/4-6)/4;for(let $=0;$<h;$++){const X={bitOffset:E._nextUint16(),bitLength:E._nextUint8(),channelType:E._nextUint8(),samplePosition:[E._nextUint8(),E._nextUint8(),E._nextUint8(),E._nextUint8()],sampleLower:-1/0,sampleUpper:1/0};64&X.channelType?(X.sampleLower=E._nextInt32(),X.sampleUpper=E._nextInt32()):(X.sampleLower=E._nextUint32(),X.sampleUpper=E._nextUint32()),c.samples[$]=X}e.dataFormatDescriptor.length=0,e.dataFormatDescriptor.push(c);const l=new Sc(i,s,n,!0);for(;l._offset<n;){const $=l._nextUint32(),X=l._scan($),cA=KK(X),EA=l._scan($-X.byteLength);e.keyValue[cA]=cA.match(/^ktx/i)?KK(EA):EA,l._offset%4&&l._skip(4-l._offset%4)}if(B<=0)return e;const d=new Sc(i,a,B,!0),D=d._nextUint16(),u=d._nextUint16(),p=d._nextUint32(),y=d._nextUint32(),k=d._nextUint32(),R=d._nextUint32(),f=[];for(let $=0;$<I;$++)f.push({imageFlags:d._nextUint32(),rgbSliceByteOffset:d._nextUint32(),rgbSliceByteLength:d._nextUint32(),alphaSliceByteOffset:d._nextUint32(),alphaSliceByteLength:d._nextUint32()});const M=a+d._offset,U=M+p,J=U+y,H=J+k,Y=new Uint8Array(i.buffer,i.byteOffset+M,p),b=new Uint8Array(i.buffer,i.byteOffset+U,y),_=new Uint8Array(i.buffer,i.byteOffset+J,k),eA=new Uint8Array(i.buffer,i.byteOffset+H,R);return e.globalData={endpointCount:D,selectorCount:u,imageDescs:f,endpointsData:Y,selectorsData:b,tablesData:_,extendedData:eA},e}let ZS,ds,rG;const XS={env:{emscripten_notify_memory_growth:function(i){rG=new Uint8Array(ds.exports.memory.buffer)}}};let B9=class{init(){return ZS||(ZS=typeof fetch<"u"?fetch("data:application/wasm;base64,"+JK).then(A=>A.arrayBuffer()).then(A=>WebAssembly.instantiate(A,XS)).then(this._init):WebAssembly.instantiate(Buffer.from(JK,"base64"),XS).then(this._init),ZS)}_init(A){ds=A.instance,XS.env.emscripten_notify_memory_growth(0)}decode(A,e=0){if(!ds)throw new Error("ZSTDDecoder: Await .init() before decoding.");const t=A.byteLength,g=ds.exports.malloc(t);rG.set(A,g),e=e||Number(ds.exports.ZSTD_findDecompressedSize(g,t));const I=ds.exports.malloc(e),o=ds.exports.ZSTD_decompress(I,e,g,t),C=rG.slice(I,I+o);return ds.exports.free(g),ds.exports.free(I),C}};const JK="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IAMNACAEQQNxBEADQCACRQ0FIAAgAkF/aiICaiIDIAEgAmotAAA6AAAgA0EDcQ0ACwsgAkEDTQ0AA0AgACACQXxqIgJqIAEgAmooAgA2AgAgAkEDSw0ACwsgAkUNAgNAIAAgAkF/aiICaiABIAJqLQAAOgAAIAINAAsMAgsgAkEDTQ0AIAIhBANAIAMgASgCADYCACABQQRqIQEgA0EEaiEDIARBfGoiBEEDSw0ACyACQQNxIQILIAJFDQADQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQX9qIgINAAsLIAAL8wICAn8BfgJAIAJFDQAgACACaiIDQX9qIAE6AAAgACABOgAAIAJBA0kNACADQX5qIAE6AAAgACABOgABIANBfWogAToAACAAIAE6AAIgAkEHSQ0AIANBfGogAToAACAAIAE6AAMgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBfGogATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQXhqIAE2AgAgAkF0aiABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkFwaiABNgIAIAJBbGogATYCACACQWhqIAE2AgAgAkFkaiABNgIAIAQgA0EEcUEYciIEayICQSBJDQAgAa0iBUIghiAFhCEFIAMgBGohAQNAIAEgBTcDGCABIAU3AxAgASAFNwMIIAEgBTcDACABQSBqIQEgAkFgaiICQR9LDQALCyAACy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAIajYCACADCy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAFajYCACADCx8AIAAgASACKAIEEAg2AgAgARAEGiAAIAJBCGo2AgQLCAAgAGdBH3MLugUBDX8jAEEQayIKJAACfyAEQQNNBEAgCkEANgIMIApBDGogAyAEEAsaIAAgASACIApBDGpBBBAVIgBBbCAAEAMbIAAgACAESxsMAQsgAEEAIAEoAgBBAXRBAmoQECENQVQgAygAACIGQQ9xIgBBCksNABogAiAAQQVqNgIAIAMgBGoiAkF8aiEMIAJBeWohDiACQXtqIRAgAEEGaiELQQQh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ASIDNgLE4AEgACgCvOABIQQgACABNgK84AEgACABIAJqNgK44AEgACABIAQgA2tqNgLA4AELpgEBAX8gACAAKALs4QEQFjYCyOABIABCADcD+OABIABCADcDuOABIABBwOABakIANwMAIABBqNAAaiIBQYyAgOAANgIAIABBADYCmOIBIABCADcDiOEBIABCAzcDgOEBIABBrNABakHgEikCADcCACAAQbTQAWpB6BIoAgA2AgAgACABNgIMIAAgAEGYIGo2AgggACAAQaAwajYCBCAAIABBEGo2AgALYQEBf0G4fyEDAkAgAUEDSQ0AIAIgABAhIgFBA3YiADYCCCACIAFBAXE2AgQgAiABQQF2QQNxIgM2AgACQCADQX9qIgFBAksNAAJAIAFBAWsOAgEAAgtBbA8LIAAhAwsgAwsMACAAIAEgAkEAEC4LiAQCA38CfiADEBYhBCAAQQBBKBAQIQAgBCACSwRAIAQPCyABRQRAQX8PCwJAAkAgA0EBRg0AIAEoAAAiBkGo6r5pRg0AQXYhAyAGQXBxQdDUtMIBRw0BQQghAyACQQhJDQEgAEEAQSgQECEAIAEoAAQhASAAQQE2AhQgACABrTcDAEEADwsgASACIAMQLyIDIAJLDQAgACADNgIYQXIhAyABIARqIgVBf2otAAAiAkEIcQ0AIAJBIHEiBkUEQEFwIQMgBS0AACIFQacBSw0BIAVBB3GtQgEgBUEDdkEKaq2GIgdCA4h+IAd8IQggBEEBaiEECyACQQZ2IQMgAkECdiEFAkAgAkEDcUF/aiICQQJLBEBBACECDAELAkACQAJAIAJBAWsOAgECAAsgASAEai0AACECIARBAWohBAwCCyABIARqLwAAIQIgBEECaiEEDAELIAEgBGooAAAhAiAEQQRqIQQLIAVBAXEhBQJ+AkACQAJAIANBf2oiA0ECTQRAIANBAWsOAgIDAQtCfyAGRQ0DGiABIARqMQAADAMLIAEgBGovAACtQoACfAwCCyABIARqKAAArQwBCyABIARqKQAACyEHIAAgBTYCICAAIAI2AhwgACAHNwMAQQAhAyAAQQA2AhQgACAHIAggBhsiBzcDCCAAIAdCgIAIIAdCgIAIVBs+AhALIAMLWwEBf0G4fyEDIAIQFiICIAFNBH8gACACakF/ai0AACIAQQNxQQJ0QaAeaigC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C0Egak8NAQsgByAHKQNoNwMQIAcgBykDYDcDCCAEIA0gB0EIaiAHQdwAaiAPIA4gESAQEB4hCwwBCyACIARqIQggBCAKEAcgAkERTwRAIARBEGohAgNAIAIgCkEQaiIKEAcgAkEQaiICIAhJDQALCyAIIAlrIQIgByATNgJcIAkgCCAOa0sEQCAJIAggEWtLBEBBbCELDAILIBAgAiAOayICaiIKIANqIBBNBEAgCCAKIAMQDxoMAgsgCCAKQQAgAmsQDyEIIAcgAiADaiIDNgJkIAggAmshCCAOIQILIAlBEE8EQCADIAhqIQMDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALDAELAkAgCUEHTQRAIAggAi0AADoAACAIIAItAAE6AAEgCCACLQACOgACIAggAi0AAzoAAyAIQQRqIAIgCUECdCIDQcAeaigCAGoiAhAXIAIgA0HgHmooAgBrIQIgBygCZCEDDAELIAggAhAMCyADQQlJDQAgAyAIaiEDIAhBCGoiCCACQQhqIgJrQQ9MBEADQCAIIAIQDCACQQhqIQIgCEEIaiIIIANJDQAMAgALAAsDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALCyAHQRhqEAQaIAsgDCALEAMiAhshDCAEIAQgC2ogAhshBCAFQX9qIgUNAAsgDBADDQFBbCEMIAdBGGoQBEECSQ0BQQAhCANAIAhBA0cEQCAAIAhBAnQiAmpBrNABaiACIAdqKAJENgIAIAhBAWohCAwBCwsgBygCXCEIC0G6fyEMIA8gCGsiACANIARrSw0AIAQEfyAEIAggABALIABqBUEACyABayEMCyAHQfAAaiQAIAwLkRcCFn8FfiMAQdABayIHJAAgByAAKALw4QEiCDYCvAEgASACaiESIAggACgCgOIBaiETAkACQCAFRQRAIAEhAwwBCyAAKALE4AEhESAAKALA4AEhFSAAKAK84AEhDyAAQQE2AozhAUEAIQgDQCAIQQNHBEAgByAIQQJ0IgJqIAAgAmpBrNABaigCADYCVCAIQQFqIQgMAQsLIAcgETYCZCAHIA82AmAgByABIA9rNgJoQWwhECAHQShqIAMgBBAGEAMNASAFQQQgBUEESBshFyAHQTxqIAdBKGogACgCABATIAdBxABqIAdBKGogACgCCBATIAdBzABqIAdB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IAdB0AFqJAAgEAslACAAQgA3AgAgAEEAOwEIIABBADoACyAAIAE2AgwgACACOgAKC7QFAQN/IwBBMGsiBCQAIABB/wFqIgVBfWohBgJAIAMvAQIEQCAEQRhqIAEgAhAGIgIQAw0BIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahASOgAAIAMgBEEIaiAEQRhqEBI6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0FIAEgBEEQaiAEQRhqEBI6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBSABIARBCGogBEEYahASOgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEjoAACABIAJqIABrIQIMAwsgAyAEQRBqIARBGGoQEjoAAiADIARBCGogBEEYahASOgADIANBBGohAwwAAAsACyAEQRhqIAEgAhAGIgIQAw0AIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahAROgAAIAMgBEEIaiAEQRhqEBE6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0EIAEgBEEQaiAEQRhqEBE6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBCABIARBCGogBEEYahAROgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEToAACABIAJqIABrIQIMAgsgAyAEQRBqIARBGGoQEToAAiADIARBCGogBEEYahAROgADIANBBGohAwwAAAsACyAEQTBqJAAgAgtpAQF/An8CQAJAIAJBB00NACABKAAAQbfIwuF+Rw0AIAAgASgABDYCmOIBQWIgAEEQaiABIAIQPiIDEAMNAhogAEKBgICAEDcDiOEBIAAgASADaiACIANrECoMAQsgACABIAIQKgtBAAsLrQMBBn8jAEGAAWsiAyQAQWIhCAJAIAJBCUkNACAAQZjQAGogAUEIaiIEIAJBeGogAEGY0AAQMyIFEAMiBg0AIANBHzYCfCADIANB/ABqIANB+ABqIAQgBCAFaiAGGyIEIAEgAmoiAiAEaxAVIgUQAw0AIAMoAnwiBkEfSw0AIAMoAngiB0EJTw0AIABBiCBqIAMgBkGAC0GADCAHEBggA0E0NgJ8IAMgA0H8AGogA0H4AGogBCAFaiIEIAIgBGsQFSIFEAMNACADKAJ8IgZBNEsNACADKAJ4IgdBCk8NACAAQZAwaiADIAZBgA1B4A4gBxAYIANBIzYCfCADIANB/ABqIANB+ABqIAQgBWoiBCACIARrEBUiBRADDQAgAygCfCIGQSNLDQAgAygCeCIHQQpPDQAgACADIAZBwBBB0BEgBxAYIAQgBWoiBEEMaiIFIAJLDQAgAiAFayEFQQAhAgNAIAJBA0cEQCAEKAAAIgZBf2ogBU8NAiAAIAJBAnRqQZzQAWogBjYCACACQQFqIQIgBEEEaiEEDAELCyAEIAFrIQgLIANBgAFqJAAgCAtGAQN/IABBCGohAyAAKAIEIQJBACEAA0AgACACdkUEQCABIAMgAEEDdGotAAJBFktqIQEgAEEBaiEADAELCyABQQggAmt0C4YDAQV/Qbh/IQcCQCADRQ0AIAItAAAiBEUEQCABQQA2AgBBAUG4fyADQQFGGw8LAn8gAkEBaiIFIARBGHRBGHUiBkF/Sg0AGiAGQX9GBEAgA0EDSA0CIAUvAABBgP4BaiEEIAJBA2oMAQsgA0ECSA0BIAItAAEgBEEIdHJBgIB+aiEEIAJBAmoLIQUgASAENgIAIAVBAWoiASACIANqIgNLDQBBbCEHIABBEGogACAFLQAAIgVBBnZBI0EJIAEgAyABa0HAEEHQEUHwEiAAKAKM4QEgACgCnOIBIAQQHyIGEAMiCA0AIABBmCBqIABBCGogBUEEdkEDcUEfQQggASABIAZqIAgbIgEgAyABa0GAC0GADEGAFyAAKAKM4QEgACgCnOIBIAQQHyIGEAMiCA0AIABBoDBqIABBBGogBUECdkEDcUE0QQkgASABIAZqIAgbIgEgAyABa0GADUHgDkGQGSAAKAKM4QEgACgCnOIBIAQQHyIAEAMNACAAIAFqIAJrIQcLIAcLrQMBCn8jAEGABGsiCCQAAn9BUiACQf8BSw0AGkFUIANBDEsNABogAkEBaiELIABBBGohCUGAgAQgA0F/anRBEHUhCkEAIQJBASEEQQEgA3QiB0F/aiIMIQUDQCACIAtGRQRAAkAgASACQQF0Ig1qLwEAIgZB//8DRgRAIAkgBUECdGogAjoAAiAFQX9qIQVBASEGDAELIARBACAKIAZBEHRBEHVKGyEECyAIIA1qIAY7AQAgAkEBaiECDAELCyAAIAQ7AQIgACADOwEAIAdBA3YgB0EBdmpBA2ohBkEAIQRBACECA0AgBCALRkUEQCABIARBAXRqLgEAIQpBACEAA0AgACAKTkUEQCAJIAJBAnRqIAQ6AAIDQCACIAZqIAxxIgIgBUsNAAsgAEEBaiEADAELCyAEQQFqIQQMAQsLQX8gAg0AGkEAIQIDfyACIAdGBH9BAAUgCCAJIAJBAnRqIgAtAAJBAXRqIgEgAS8BACIBQQFqOwEAIAAgAyABEBRrIgU6AAMgACABIAVB/wFxdCAHazsBACACQQFqIQIMAQsLCyEFIAhBgARqJAAgBQvjBgEIf0FsIQcCQCACQQNJDQACQAJAAkACQCABLQAAIgNBA3EiCUEBaw4DAwEAAgsgACgCiOEBDQBBYg8LIAJBBUkNAkEDIQYgASgAACEFAn8CQAJAIANBAnZBA3EiCEF+aiIEQQFNBEAgBEEBaw0BDAILIAVBDnZB/wdxIQQgBUEEdkH/B3EhAyAIRQwCCyAFQRJ2IQRBBCEGIAVBBHZB//8AcSEDQQAMAQsgBUEEdkH//w9xIgNBgIAISw0DIAEtAARBCnQgBUEWdnIhBEEFIQZBAAshBSAEIAZqIgogAksNAgJAIANBgQZJDQAgACgCnOIBRQ0AQQAhAgNAIAJBg4ABSw0BIAJBQGshAgwAAAsACwJ/IAlBA0YEQCABIAZqIQEgAEHw4gFqIQIgACgCDCEGIAUEQCACIAMgASAEIAYQXwwCCyACIAMgASAEIAYQXQwBCyAAQbjQAWohAiABIAZqIQEgAEHw4gFqIQYgAEGo0ABqIQggBQRAIAggBiADIAEgBCACEF4MAQsgCCAGIAMgASAEIAIQXAsQAw0CIAAgAzYCgOIBIABBATYCiOEBIAAgAEHw4gFqNgLw4QEgCUECRgRAIAAgAEGo0ABqNgIMCyAAIANqIgBBiOMBakIANwAAIABBgOMBakIANwAAIABB+OIBakIANwAAIABB8OIBakIANwAAIAoPCwJ/AkACQAJAIANBAnZBA3FBf2oiBEECSw0AIARBAWsOAgACAQtBASEEIANBA3YMAgtBAiEEIAEvAABBBHYMAQtBAyEEIAEQIUEEdgsiAyAEaiIFQSBqIAJLBEAgBSACSw0CIABB8OIBaiABIARqIAMQCyEBIAAgAzYCgOIBIAAgATYC8OEBIAEgA2oiAEIANwAYIABCADcAECAAQgA3AAggAEIANwAAIAUPCyAAIAM2AoDiASAAIAEgBGo2AvDhASAFDwsCfwJAAkACQCADQQJ2QQNxQX9qIgRBAksNACAEQQFrDgIAAgELQQEhByADQQN2DAILQQIhByABLwAAQQR2DAELIAJBBEkgARAhIgJBj4CAAUtyDQFBAyEHIAJBBHYLIQIgAEHw4gFqIAEgB2otAAAgAkEgahAQIQEgACACNgKA4gEgACABNgLw4QEgB0EBaiEHCyAHC0sAIABC+erQ0OfJoeThADcDICAAQgA3AxggAELP1tO+0ser2UI3AxAgAELW64Lu6v2J9eAANwMIIABCADcDACAAQShqQQBBKBAQGgviAgICfwV+IABBKGoiASAAKAJIaiECAn4gACkDACIDQiBaBEAgACkDECIEQgeJIAApAwgiBUIBiXwgACkDGCIGQgyJfCAAKQMgIgdCEol8IAUQGSAEEBkgBhAZIAcQGQwBCyAAKQMYQsXP2bLx5brqJ3wLIAN8IQMDQCABQQhqIgAgAk0EQEIAIAEpAAAQCSADhUIbiUKHla+vmLbem55/fkLj3MqV/M7y9YV/fCEDIAAhAQwBCwsCQCABQQRqIgAgAksEQCABIQAMAQsgASgAAK1Ch5Wvr5i23puef34gA4VCF4lCz9bTvtLHq9lCfkL5893xmfaZqxZ8IQMLA0AgACACSQRAIAAxAABCxc/ZsvHluuonfiADhUILiUKHla+vmLbem55/fiEDIABBAWohAAwBCwsgA0IhiCADhULP1tO+0ser2UJ+IgNCHYggA4VC+fPd8Zn2masWfiIDQiCIIAOFC+8CAgJ/BH4gACAAKQMAIAKtfDcDAAJAAkAgACgCSCIDIAJqIgRBH00EQCABRQ0BIAAgA2pBKGogASACECAgACgCSCACaiEEDAELIAEgAmohAgJ/IAMEQCAAQShqIgQgA2ogAUEgIANrECAgACAAKQMIIAQpAAAQCTcDCCAAIAApAxAgACkAMBAJNwMQIAAgACkDGCAAKQA4EAk3AxggACAAKQMgIABBQGspAAAQCTcDICAAKAJIIQMgAEEANgJIIAEgA2tBIGohAQsgAUEgaiACTQsEQCACQWBqIQMgACkDICEFIAApAxghBiAAKQMQIQcgACkDCCEIA0AgCCABKQAAEAkhCCAHIAEpAAgQCSEHIAYgASkAEBAJIQYgBSABKQAYEAkhBSABQSBqIgEgA00NAAsgACAFNwMgIAAgBjcDGCAAIAc3AxAgACAINwMICyABIAJPDQEgAEEoaiABIAIgAWsiBBAgCyAAIAQ2AkgLCy8BAX8gAEUEQEG2f0EAIAMbDwtBun8hBCADIAFNBH8gACACIAMQEBogAwVBun8LCy8BAX8gAEUEQEG2f0EAIAMbDwtBun8hBCADIAFNBH8gACACIAMQCxogAwVBun8LC6gCAQZ/IwBBEGsiByQAIABB2OABaikDAEKAgIAQViEIQbh/IQUCQCAEQf//B0sNACAAIAMgBBBCIgUQAyIGDQAgACgCnOIBIQkgACAHQQxqIAMgAyAFaiAGGyIKIARBACAFIAYbayIGEEAiAxADBEAgAyEFDAELIAcoAgwhBCABRQRAQbp/IQUgBEEASg0BCyAGIANrIQUgAyAKaiEDAkAgCQRAIABBADYCnOIBDAELAkACQAJAIARBBUgNACAAQdjgAWopAwBCgICACFgNAAwBCyAAQQA2ApziAQwBCyAAKAIIED8hBiAAQQA2ApziASAGQRRPDQELIAAgASACIAMgBSAEIAgQOSEFDAELIAAgASACIAMgBSAEIAgQOiEFCyAHQRBqJAAgBQtnACAAQdDgAWogASACIAAoAuzhARAuIgEQAwRAIAEPC0G4fyECAkAgAQ0AIABB7OABaigCACIBBEBBYCECIAAoApjiASABRw0BC0EAIQIgAEHw4AFqKAIARQ0AIABBkOEBahBDCyACCycBAX8QVyIERQRAQUAPCyAEIAAgASACIAMgBBBLEE8hACAEEFYgAAs/AQF/AkACQAJAIAAoAqDiAUEBaiIBQQJLDQAgAUEBaw4CAAECCyAAEDBBAA8LIABBADYCoOIBCyAAKAKU4gELvAMCB38BfiMAQRBrIgkkAEG4fyEGAkAgBCgCACIIQQVBCSAAKALs4QEiBRtJDQAgAygCACIHQQFBBSAFGyAFEC8iBRADBEAgBSEGDAELIAggBUEDakkNACAAIAcgBRBJIgYQAw0AIAEgAmohCiAAQZDhAWohCyAIIAVrIQIgBSAHaiEHIAEhBQNAIAcgAiAJECwiBhADDQEgAkF9aiICIAZJBEBBuH8hBgwCCyAJKAIAIghBAksEQEFsIQYMAgsgB0EDaiEHAn8CQAJAAkAgCEEBaw4CAgABCyAAIAUgCiAFayAHIAYQSAwCCyAFIAogBWsgByAGEEcMAQsgBSAKIAVrIActAAAgCSgCCBBGCyIIEAMEQCAIIQYMAgsgACgC8OABBEAgCyAFIAgQRQsgAiAGayECIAYgB2ohByAFIAhqIQUgCSgCBEUNAAsgACkD0OABIgxCf1IEQEFsIQYgDCAFIAFrrFINAQsgACgC8OABBEBBaiEGIAJBBEkNASALEEQhDCAHKAAAIAynRw0BIAdBBGohByACQXxqIQILIAMgBzYCACAEIAI2AgAgBSABayEGCyAJQRBqJAAgBgsuACAAECsCf0EAQQAQAw0AGiABRSACRXJFBEBBYiAAIAEgAhA9EAMNARoLQQALCzcAIAEEQCAAIAAoAsTgASABKAIEIAEoAghqRzYCnOIBCyAAECtBABADIAFFckUEQCAAIAEQWwsL0QIBB38jAEEQayIGJAAgBiAENgIIIAYgAzYCDCAFBEAgBSgCBCEKIAUoAgghCQsgASEIAkACQANAIAAoAuzhARAWIQsCQANAIAQgC0kNASADKAAAQXBxQdDUtMIBRgRAIAMgBBAiIgcQAw0EIAQgB2shBCADIAdqIQMMAQsLIAYgAzYCDCAGIAQ2AggCQCAFBEAgACAFEE5BACEHQQAQA0UNAQwFCyAAIAogCRBNIgcQAw0ECyAAIAgQUCAMQQFHQQAgACAIIAIgBkEMaiAGQQhqEEwiByIDa0EAIAMQAxtBCkdyRQRAQbh/IQcMBAsgBxADDQMgAiAHayECIAcgCGohCEEBIQwgBigCDCEDIAYoAgghBAwBCwsgBiADNgIMIAYgBDYCCEG4fyEHIAQNASAIIAFrIQcMAQsgBiADNgIMIAYgBDYCCAsgBkEQaiQAIAcLRgECfyABIAAoArjgASICRwRAIAAgAjYCxOABIAAgATYCuOABIAAoArzgASEDIAAgATYCvOABIAAgASADIAJrajYCwOABCwutAgIEfwF+IwBBQGoiBCQAAkACQCACQQhJDQAgASgAAEFwcUHQ1LTCAUcNACABIAIQIiEBIABCADcDCCAAQQA2AgQgACABNgIADAELIARBGGogASACEC0iAxADBEAgACADEBoMAQsgAwRAIABBuH8QGgwBCyACIAQoAjAiA2shAiABIANqIQMDQAJAIAAgAyACIARBCGoQLCIFEAMEfyAFBSACIAVBA2oiBU8NAUG4fwsQGgwCCyAGQQFqIQYgAiAFayECIAMgBWohAyAEKAIMRQ0ACyAEKAI4BEAgAkEDTQRAIABBuH8QGgwCCyADQQRqIQMLIAQoAighAiAEKQMYIQcgAEEANgIEIAAgAyABazYCACAAIAIgBmytIAcgB0J/URs3AwgLIARBQGskAAslAQF/IwBBEGsiAiQAIAIgACABEFEgAigCACEAIAJBEGokACAAC30BBH8jAEGQBGsiBCQAIARB/wE2AggCQCAEQRBqIARBCGogBEEMaiABIAIQFSIGEAMEQCAGIQUMAQtBVCEFIAQoAgwiB0EGSw0AIAMgBEEQaiAEKAIIIAcQQSIFEAMNACAAIAEgBmogAiAGayADEDwhBQsgBEGQBGokACAFC4cBAgJ/An5BABAWIQMCQANAIAEgA08EQAJAIAAoAABBcHFB0NS0wgFGBEAgACABECIiAhADRQ0BQn4PCyAAIAEQVSIEQn1WDQMgBCAFfCIFIARUIQJCfiEEIAINAyAAIAEQUiICEAMNAwsgASACayEBIAAgAmohAAwBCwtCfiAFIAEbIQQLIAQLPwIBfwF+IwBBMGsiAiQAAn5CfiACQQhqIAAgARAtDQAaQgAgAigCHEEBRg0AGiACKQMICyEDIAJBMGokACADC40BAQJ/IwBBMGsiASQAAkAgAEUNACAAKAKI4gENACABIABB/OEBaigCADYCKCABIAApAvThATcDICAAEDAgACgCqOIBIQIgASABKAIoNgIYIAEgASkDIDcDECACIAFBEGoQGyAAQQA2AqjiASABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALKgECfyMAQRBrIgAkACAAQQA2AgggAEIANwMAIAAQWCEBIABBEGokACABC4cBAQN/IwBBEGsiAiQAAkAgACgCAEUgACgCBEVzDQAgAiAAKAIINgIIIAIgACkCADcDAAJ/IAIoAgAiAQRAIAIoAghBqOMJIAERBQAMAQtBqOMJECgLIgFFDQAgASAAKQIANwL04QEgAUH84QFqIAAoAgg2AgAgARBZIAEhAwsgAkEQaiQAIAMLywEBAn8jAEEgayIBJAAgAEGBgIDAADYCtOIBIABBADYCiOIBIABBADYC7OEBIABCADcDkOIBIABBADYCpOMJIABBADYC3OIBIABCADcCzOIBIABBADYCvOIBIABBADYCxOABIABCADcCnOIBIABBpOIBakIANwIAIABBrOIBakEANgIAIAFCADcCECABQgA3AhggASABKQMYNwMIIAEgASkDEDcDACABKAIIQQh2QQFxIQIgAEEANgLg4gEgACACNgKM4gEgAUEgaiQAC3YBA38jAEEwayIBJAAgAARAIAEgAEHE0AFqIgIoAgA2AiggASAAKQK80AE3AyAgACgCACEDIAEgAigCADYCGCABIAApArzQATcDECADIAFBEGoQGyABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALzAEBAX8gACABKAK00AE2ApjiASAAIAEoAgQiAjYCwOABIAAgAjYCvOABIAAgAiABKAIIaiICNgK44AEgACACNgLE4AEgASgCuNABBEAgAEKBgICAEDcDiOEBIAAgAUGk0ABqNgIMIAAgAUGUIGo2AgggACABQZwwajYCBCAAIAFBDGo2AgAgAEGs0AFqIAFBqNABaigCADYCACAAQbDQAWogAUGs0AFqKAIANgIAIABBtNABaiABQbDQAWooAgA2AgAPCyAAQgA3A4jhAQs7ACACRQRAQbp/DwsgBEUEQEFsDwsgAiAEEGAEQCAAIAEgAiADIAQgBRBhDwsgACABIAIgAyAEIAUQZQtGAQF/IwBBEGsiBSQAIAVBCGogBBAOAn8gBS0ACQRAIAAgASACIAMgBBAyDAELIAAgASACIAMgBBA0CyEAIAVBEGokACAACzQAIAAgAyAEIAUQNiIFEAMEQCAFDwsgBSAESQR/IAEgAiADIAVqIAQgBWsgABA1BUG4fwsLRgEBfyMAQRBrIgUkACAFQQhqIAQQDgJ/IAUtAAkEQCAAIAEgAiADIAQQYgwBCyAAIAEgAiADIAQQNQshACAFQRBqJAAgAAtZAQF/QQ8hAiABIABJBEAgAUEE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",$S=new WeakMap;let A0=0,e0;class tC extends vg{constructor(A){super(A),this.transcoderPath="",this.transcoderBinary=null,this.transcoderPending=null,this.workerPool=new g9,this.workerSourceURL="",this.workerConfig=null,typeof MSC_TRANSCODER<"u"&&console.warn('THREE.KTX2Loader: Please update to latest "basis_transcoder". "msc_basis_transcoder" is no longer supported in three.js r125+.')}setTranscoderPath(A){return this.transcoderPath=A,this}setWorkerLimit(A){return this.workerPool.setWorkerLimit(A),this}detectSupport(A){return this.workerConfig={astcSupported:A.extensions.has("WEBGL_compressed_texture_astc"),etc1Supported:A.extensions.has("WEBGL_compressed_texture_etc1"),etc2Supported:A.extensions.has("WEBGL_compressed_texture_etc"),dxtSupported:A.extensions.has("WEBGL_compressed_texture_s3tc"),bptcSupported:A.extensions.has("EXT_texture_compression_bptc"),pvrtcSupported:A.extensions.has("WEBGL_compressed_texture_pvrtc")||A.extensions.has("WEBKIT_WEBGL_compressed_texture_pvrtc")},A.capabilities.isWebGL2&&(this.workerConfig.etc1Supported=!1),this}init(){if(!this.transcoderPending){const A=new Hi(this.manager);A.setPath(this.transcoderPath),A.setWithCredentials(this.withCredentials);const e=A.loadAsync("basis_transcoder.js"),t=new Hi(this.manager);t.setPath(this.transcoderPath),t.setResponseType("arraybuffer"),t.setWithCredentials(this.withCredentials);const g=t.loadAsync("basis_transcoder.wasm");this.transcoderPending=Promise.all([e,g]).then(([I,o])=>{const C=tC.BasisWorker.toString(),s=["/* constants */","let _EngineFormat = "+JSON.stringify(tC.EngineFormat),"let _TranscoderFormat = "+JSON.stringify(tC.TranscoderFormat),"let _BasisFormat = "+JSON.stringify(tC.BasisFormat),"/* basis_transcoder.js */",I,"/* worker */",C.substring(C.indexOf("{")+1,C.lastIndexOf("}"))].join(`
|
|
3962
3962
|
`);this.workerSourceURL=URL.createObjectURL(new Blob([s])),this.transcoderBinary=o,this.workerPool.setWorkerCreator(()=>{const n=new Worker(this.workerSourceURL),a=this.transcoderBinary.slice(0);return n.postMessage({type:"init",config:this.workerConfig,transcoderBinary:a},[a]),n})}),A0>0&&console.warn("THREE.KTX2Loader: Multiple active KTX2 loaders may cause performance issues. Use a single KTX2Loader instance, or call .dispose() on old instances."),A0++}return this.transcoderPending}load(A,e,t,g){if(this.workerConfig===null)throw new Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");const I=new Hi(this.manager);I.setResponseType("arraybuffer"),I.setWithCredentials(this.withCredentials),I.load(A,o=>{if($S.has(o))return $S.get(o).promise.then(e).catch(g);this._createTexture(o).then(C=>e?e(C):null).catch(g)},t,g)}_createTextureFrom(A,e){const{mipmaps:t,width:g,height:I,format:o,type:C,error:s,dfdTransferFn:n,dfdFlags:a}=A;if(C==="error")return Promise.reject(s);const B=e.layerCount>1?new cL(t,g,I,e.layerCount,o,Dt):new ms(t,g,I,o,Dt);return B.minFilter=t.length===1?be:sC,B.magFilter=be,B.generateMipmaps=!1,B.needsUpdate=!0,B.encoding=n===s9?De:di,B.premultiplyAlpha=!!(a&C9),B}async _createTexture(A,e={}){const t=r9(new Uint8Array(A));if(t.vkFormat!==n9)return E9(t);const g=e,I=this.init().then(()=>this.workerPool.postMessage({type:"transcode",buffer:A,taskConfig:g},[A])).then(o=>this._createTextureFrom(o.data,t));return $S.set(A,{promise:I}),I}dispose(){return this.workerPool.dispose(),this.workerSourceURL&&URL.revokeObjectURL(this.workerSourceURL),A0--,this}}tC.BasisFormat={ETC1S:0,UASTC_4x4:1};tC.TranscoderFormat={ETC1:0,ETC2:1,BC1:2,BC3:3,BC4:4,BC5:5,BC7_M6_OPAQUE_ONLY:6,BC7_M5:7,PVRTC1_4_RGB:8,PVRTC1_4_RGBA:9,ASTC_4x4:10,ATC_RGB:11,ATC_RGBA_INTERPOLATED_ALPHA:12,RGBA32:13,RGB565:14,BGR565:15,RGBA4444:16};tC.EngineFormat={RGBAFormat:bt,RGBA_ASTC_4x4_Format:mD,RGBA_BPTC_Format:RD,RGBA_ETC2_EAC_Format:MD,RGBA_PVRTC_4BPPV1_Format:kD,RGBA_S3TC_DXT5_Format:ih,RGB_ETC1_Format:sM,RGB_ETC2_Format:GD,RGB_PVRTC_4BPPV1_Format:SD,RGB_S3TC_DXT1_Format:th};tC.BasisWorker=function(){let i,A,e;const t=_EngineFormat,g=_TranscoderFormat,I=_BasisFormat;self.addEventListener("message",function(c){const h=c.data;switch(h.type){case"init":i=h.config,o(h.transcoderBinary);break;case"transcode":A.then(()=>{try{const{width:l,height:d,hasAlpha:D,mipmaps:u,format:p,dfdTransferFn:y,dfdFlags:k}=C(h.buffer),R=[];for(let f=0;f<u.length;++f)R.push(u[f].data.buffer);self.postMessage({type:"transcode",id:h.id,width:l,height:d,hasAlpha:D,mipmaps:u,format:p,dfdTransferFn:y,dfdFlags:k},R)}catch(l){console.error(l),self.postMessage({type:"error",id:h.id,error:l.message})}});break}});function o(c){A=new Promise(h=>{e={wasmBinary:c,onRuntimeInitialized:h},BASIS(e)}).then(()=>{e.initializeBasis(),e.KTX2File===void 0&&console.warn("THREE.KTX2Loader: Please update Basis Universal transcoder.")})}function C(c){const h=new e.KTX2File(new Uint8Array(c));function l(){h.close(),h.delete()}if(!h.isValid())throw l(),new Error("THREE.KTX2Loader: Invalid or unsupported .ktx2 file");const d=h.isUASTC()?I.UASTC_4x4:I.ETC1S,D=h.getWidth(),u=h.getHeight(),p=h.getLayers()||1,y=h.getLevels(),k=h.getHasAlpha(),R=h.getDFDTransferFunc(),f=h.getDFDFlags(),{transcoderFormat:M,engineFormat:U}=B(d,D,u,k);if(!D||!u||!y)throw l(),new Error("THREE.KTX2Loader: Invalid texture");if(!h.startTranscoding())throw l(),new Error("THREE.KTX2Loader: .startTranscoding failed");const J=[];for(let H=0;H<y;H++){const Y=[];let b,_;for(let eA=0;eA<p;eA++){const $=h.getImageLevelInfo(H,eA,0);b=$.origWidth,_=$.origHeight;const X=new Uint8Array(h.getImageTranscodedSizeInBytes(H,eA,0,M));if(!h.transcodeImage(X,H,eA,0,M,0,-1,-1))throw l(),new Error("THREE.KTX2Loader: .transcodeImage failed.");Y.push(X)}J.push({data:E(Y),width:b,height:_})}return l(),{width:D,height:u,hasAlpha:k,mipmaps:J,format:U,dfdTransferFn:R,dfdFlags:f}}const s=[{if:"astcSupported",basisFormat:[I.UASTC_4x4],transcoderFormat:[g.ASTC_4x4,g.ASTC_4x4],engineFormat:[t.RGBA_ASTC_4x4_Format,t.RGBA_ASTC_4x4_Format],priorityETC1S:1/0,priorityUASTC:1,needsPowerOfTwo:!1},{if:"bptcSupported",basisFormat:[I.ETC1S,I.UASTC_4x4],transcoderFormat:[g.BC7_M5,g.BC7_M5],engineFormat:[t.RGBA_BPTC_Format,t.RGBA_BPTC_Format],priorityETC1S:3,priorityUASTC:2,needsPowerOfTwo:!1},{if:"dxtSupported",basisFormat:[I.ETC1S,I.UASTC_4x4],transcoderFormat:[g.BC1,g.BC3],engineFormat:[t.RGB_S3TC_DXT1_Format,t.RGBA_S3TC_DXT5_Format],priorityETC1S:4,priorityUASTC:5,needsPowerOfTwo:!1},{if:"etc2Supported",basisFormat:[I.ETC1S,I.UASTC_4x4],transcoderFormat:[g.ETC1,g.ETC2],engineFormat:[t.RGB_ETC2_Format,t.RGBA_ETC2_EAC_Format],priorityETC1S:1,priorityUASTC:3,needsPowerOfTwo:!1},{if:"etc1Supported",basisFormat:[I.ETC1S,I.UASTC_4x4],transcoderFormat:[g.ETC1],engineFormat:[t.RGB_ETC1_Format],priorityETC1S:2,priorityUASTC:4,needsPowerOfTwo:!1},{if:"pvrtcSupported",basisFormat:[I.ETC1S,I.UASTC_4x4],transcoderFormat:[g.PVRTC1_4_RGB,g.PVRTC1_4_RGBA],engineFormat:[t.RGB_PVRTC_4BPPV1_Format,t.RGBA_PVRTC_4BPPV1_Format],priorityETC1S:5,priorityUASTC:6,needsPowerOfTwo:!0}],n=s.sort(function(c,h){return c.priorityETC1S-h.priorityETC1S}),a=s.sort(function(c,h){return c.priorityUASTC-h.priorityUASTC});function B(c,h,l,d){let D,u;const p=c===I.ETC1S?n:a;for(let y=0;y<p.length;y++){const k=p[y];if(i[k.if]&&k.basisFormat.includes(c)&&!(d&&k.transcoderFormat.length<2)&&!(k.needsPowerOfTwo&&!(Q(h)&&Q(l))))return D=k.transcoderFormat[d?1:0],u=k.engineFormat[d?1:0],{transcoderFormat:D,engineFormat:u}}return console.warn("THREE.KTX2Loader: No suitable compressed texture format found. Decoding to RGBA32."),D=g.RGBA32,u=t.RGBAFormat,{transcoderFormat:D,engineFormat:u}}function Q(c){return c<=2?!0:(c&c-1)===0&&c!==0}function E(c){let h=0;for(const D of c)h+=D.byteLength;const l=new Uint8Array(h);let d=0;for(const D of c)l.set(D,d),d+=D.byteLength;return l}};const qK={[MY]:bt,[SY]:bt,[fY]:bt,[ym]:bt,[GY]:pr,[yY]:pr,[DY]:pr,[wm]:pr,[kY]:Aa,[wY]:Aa,[fm]:Aa,[pY]:Aa},t0={[MY]:Mi,[SY]:Ti,[fY]:Dt,[ym]:Dt,[GY]:Mi,[yY]:Ti,[DY]:Dt,[wm]:Dt,[kY]:Mi,[wY]:Ti,[fm]:Dt,[pY]:Dt},Q9={[ym]:De,[wm]:De,[fm]:De};async function E9(i){const{vkFormat:A,pixelWidth:e,pixelHeight:t,pixelDepth:g}=i;if(qK[A]===void 0)throw new Error("THREE.KTX2Loader: Unsupported vkFormat.");const I=i.levels[0];let o,C;if(i.supercompressionScheme===I9)o=I.levelData;else if(i.supercompressionScheme===o9)e0||(e0=new Promise(async n=>{const a=new B9;await a.init(),n(a)})),o=(await e0).decode(I.levelData,I.uncompressedByteLength);else throw new Error("THREE.KTX2Loader: Unsupported supercompressionScheme.");t0[A]===Mi?C=new Float32Array(o.buffer,o.byteOffset,o.byteLength/Float32Array.BYTES_PER_ELEMENT):t0[A]===Ti?C=new Uint16Array(o.buffer,o.byteOffset,o.byteLength/Uint16Array.BYTES_PER_ELEMENT):C=o;const s=g===0?new So(C,e,t):new Jl(C,e,t,g);return s.type=t0[A],s.format=qK[A],s.encoding=Q9[A]||di,s.needsUpdate=!0,Promise.resolve(s)}var c9=function(){var i="b9H79Tebbbe8Fv9Gbb9Gvuuuuueu9Giuuub9Geueu9Giuuueuikqbeeedddillviebeoweuec:q;iekr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbeY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVbdE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbiL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtblK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbol79IV9Rbrq:P8Yqdbk;3sezu8Jjjjjbcj;eb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Radz1jjjbhwcj;abad9UhoaicefhldnadTmbaoc;WFbGgocjdaocjd6EhDcbhqinaqae9pmeaDaeaq9RaqaDfae6Egkcsfgocl4cifcd4hxdndndndnaoc9WGgmTmbcbhPcehsawcjdfhzalhHinaraH9Rax6midnaraHaxfgl9RcK6mbczhoinawcj;cbfaogifgoc9WfhOdndndndndnaHaic9WfgAco4fRbbaAci4coG4ciGPlbedibkaO9cb83ibaOcwf9cb83ibxikaOalRblalRbbgAco4gCaCciSgCE86bbaocGfalclfaCfgORbbaAcl4ciGgCaCciSgCE86bbaocVfaOaCfgORbbaAcd4ciGgCaCciSgCE86bbaoc7faOaCfgORbbaAciGgAaAciSgAE86bbaoctfaOaAfgARbbalRbegOco4gCaCciSgCE86bbaoc91faAaCfgARbbaOcl4ciGgCaCciSgCE86bbaoc4faAaCfgARbbaOcd4ciGgCaCciSgCE86bbaoc93faAaCfgARbbaOciGgOaOciSgOE86bbaoc94faAaOfgARbbalRbdgOco4gCaCciSgCE86bbaoc95faAaCfgARbbaOcl4ciGgCaCciSgCE86bbaoc96faAaCfgARbbaOcd4ciGgCaCciSgCE86bbaoc97faAaCfgARbbaOciGgOaOciSgOE86bbaoc98faAaOfgORbbalRbiglco4gAaAciSgAE86bbaoc99faOaAfgORbbalcl4ciGgAaAciSgAE86bbaoc9:faOaAfgORbbalcd4ciGgAaAciSgAE86bbaocufaOaAfgoRbbalciGglalciSglE86bbaoalfhlxdkaOalRbwalRbbgAcl4gCaCcsSgCE86bbaocGfalcwfaCfgORbbaAcsGgAaAcsSgAE86bbaocVfaOaAfgORbbalRbegAcl4gCaCcsSgCE86bbaoc7faOaCfgORbbaAcsGgAaAcsSgAE86bbaoctfaOaAfgORbbalRbdgAcl4gCaCcsSgCE86bbaoc91faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc4faOaAfgORbbalRbigAcl4gCaCcsSgCE86bbaoc93faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc94faOaAfgORbbalRblgAcl4gCaCcsSgCE86bbaoc95faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc96faOaAfgORbbalRbvgAcl4gCaCcsSgCE86bbaoc97faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc98faOaAfgORbbalRbogAcl4gCaCcsSgCE86bbaoc99faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc9:faOaAfgORbbalRbrglcl4gAaAcsSgAE86bbaocufaOaAfgoRbbalcsGglalcsSglE86bbaoalfhlxekaOal8Pbb83bbaOcwfalcwf8Pbb83bbalczfhlkdnaiam9pmbaiczfhoaral9RcL0mekkaiam6mialTmidnakTmbawaPfRbbhOcbhoazhiinaiawcj;cbfaofRbbgAce4cbaAceG9R7aOfgO86bbaiadfhiaocefgoak9hmbkkazcefhzaPcefgPad6hsalhHaPad9hmexvkkcbhlasceGmdxikalaxad2fhCdnakTmbcbhHcehsawcjdfhminaral9Rax6mialTmdalaxfhlawaHfRbbhOcbhoamhiinaiawcj;cbfaofRbbgAce4cbaAceG9R7aOfgO86bbaiadfhiaocefgoak9hmbkamcefhmaHcefgHad6hsaHad9hmbkaChlxikcbhocehsinaral9Rax6mdalTmealaxfhlaocefgoad6hsadao9hmbkaChlxdkcbhlasceGTmekc9:hoxikabaqad2fawcjdfakad2z1jjjb8Aawawcjdfakcufad2fadz1jjjb8Aakaqfhqalmbkc9:hoxekcbc99aral9Radcaadca0ESEhokavcj;ebf8Kjjjjbaok;yzeHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecjez:jjjjb8AavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhodnaeTmbcmcsaDceSEhkcbhxcbhmcbhDcbhicbhlindnaoaq9nmbc9:hoxikdndnawRbbgrc;Ve0mbavc;abfalarcl4cu7fcsGcitfgPydlhsaPydbhzdnarcsGgPak9pmbavaiarcu7fcsGcdtfydbaxaPEhraPThPdndnadcd9hmbabaDcetfgHaz87ebaHcdfas87ebaHclfar87ebxekabaDcdtfgHazBdbaHclfasBdbaHcwfarBdbkaxaPfhxavc;abfalcitfgHarBdbaHasBdlavaicdtfarBdbavc;abfalcefcsGglcitfgHazBdbaHarBdlaiaPfhialcefhlxdkdndnaPcsSmbamaPfaPc987fcefhmxekaocefhrao8SbbgPcFeGhHdndnaPcu9mmbarhoxekaocvfhoaHcFbGhHcrhPdninar8SbbgOcFbGaPtaHVhHaOcu9kmearcefhraPcrfgPc8J9hmbxdkkarcefhokaHce4cbaHceG9R7amfhmkdndnadcd9hmbabaDcetfgraz87ebarcdfas87ebarclfam87ebxekabaDcdtfgrazBdbarclfasBdbarcwfamBdbkavc;abfalcitfgramBdbarasBdlavaicdtfamBdbavc;abfalcefcsGglcitfgrazBdbaramBdlaicefhialcefhlxekdnarcpe0mbaxcefgOavaiaqarcsGfRbbgPcl49RcsGcdtfydbaPcz6gHEhravaiaP9RcsGcdtfydbaOaHfgsaPcsGgOEhPaOThOdndnadcd9hmbabaDcetfgzax87ebazcdfar87ebazclfaP87ebxekabaDcdtfgzaxBdbazclfarBdbazcwfaPBdbkavaicdtfaxBdbavc;abfalcitfgzarBdbazaxBdlavaicefgicsGcdtfarBdbavc;abfalcefcsGcitfgzaPBdbazarBdlavaiaHfcsGgicdtfaPBdbavc;abfalcdfcsGglcitfgraxBdbaraPBdlalcefhlaiaOfhiasaOfhxxekaxcbaoRbbgzEgAarc;:eSgrfhsazcsGhCazcl4hXdndnazcs0mbascefhOxekashOavaiaX9RcsGcdtfydbhskdndnaCmbaOcefhxxekaOhxavaiaz9RcsGcdtfydbhOkdndnarTmbaocefhrxekaocdfhrao8SbegHcFeGhPdnaHcu9kmbaocofhAaPcFbGhPcrhodninar8SbbgHcFbGaotaPVhPaHcu9kmearcefhraocrfgoc8J9hmbkaAhrxekarcefhrkaPce4cbaPceG9R7amfgmhAkdndnaXcsSmbarhPxekarcefhPar8SbbgocFeGhHdnaocu9kmbarcvfhsaHcFbGhHcrhodninaP8SbbgrcFbGaotaHVhHarcu9kmeaPcefhPaocrfgoc8J9hmbkashPxekaPcefhPkaHce4cbaHceG9R7amfgmhskdndnaCcsSmbaPhoxekaPcefhoaP8SbbgrcFeGhHdnarcu9kmbaPcvfhOaHcFbGhHcrhrdninao8SbbgPcFbGartaHVhHaPcu9kmeaocefhoarcrfgrc8J9hmbkaOhoxekaocefhokaHce4cbaHceG9R7amfgmhOkdndnadcd9hmbabaDcetfgraA87ebarcdfas87ebarclfaO87ebxekabaDcdtfgraABdbarclfasBdbarcwfaOBdbkavc;abfalcitfgrasBdbaraABdlavaicdtfaABdbavc;abfalcefcsGcitfgraOBdbarasBdlavaicefgicsGcdtfasBdbavc;abfalcdfcsGcitfgraABdbaraOBdlavaiazcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhialcifhlkawcefhwalcsGhlaicsGhiaDcifgDae6mbkkcbc99aoaqSEhokavc;aef8Kjjjjbaok:llevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:Lvoeue99dud99eud99dndnadcl9hmbaeTmeindndnabcdfgd8Sbb:Yab8Sbbgi:Ygl:l:tabcefgv8Sbbgo:Ygr:l:tgwJbb;:9cawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai86bbdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad86bbdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad86bbabclfhbaecufgembxdkkaeTmbindndnabclfgd8Ueb:Yab8Uebgi:Ygl:l:tabcdfgv8Uebgo:Ygr:l:tgwJb;:FSawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai87ebdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad87ebdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad87ebabcwfhbaecufgembkkk;siliui99iue99dnaeTmbcbhiabhlindndnJ;Zl81Zalcof8UebgvciV:Y:vgoal8Ueb:YNgrJb;:FSNJbbbZJbbb:;arJbbbb9GEMgw:lJbbb9p9DTmbaw:OhDxekcjjjj94hDkalclf8Uebhqalcdf8UebhkabavcefciGaiVcetfaD87ebdndnaoak:YNgwJb;:FSNJbbbZJbbb:;awJbbbb9GEMgx:lJbbb9p9DTmbax:Ohkxekcjjjj94hkkabavcdfciGaiVcetfak87ebdndnaoaq:YNgoJb;:FSNJbbbZJbbb:;aoJbbbb9GEMgx:lJbbb9p9DTmbax:Ohqxekcjjjj94hqkabavcufciGaiVcetfaq87ebdndnJbbjZararN:tawawN:taoaoN:tgrJbbbbarJbbbb9GE:rJb;:FSNJbbbZMgr:lJbbb9p9DTmbar:Ohqxekcjjjj94hqkabavciGaiVcetfaq87ebalcwfhlaiclfhiaecufgembkkk9mbdnadcd4ae2geTmbinababydbgdcwtcw91:Yadce91cjjj;8ifcjjj98G::NUdbabclfhbaecufgembkkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaiczfhiaeczfheadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabkkkebcjwklz9Kbb",A="b9H79TebbbeKl9Gbb9Gvuuuuueu9Giuuub9Geueuikqbbebeedddilve9Weeeviebeoweuec:q;Aekr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbdY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVblE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtboK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbrL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbwl79IV9RbDq;t9tqlbzik9:evu8Jjjjjbcz9Rhbcbheincbhdcbhiinabcwfadfaicjuaead4ceGglE86bbaialfhiadcefgdcw9hmbkaec:q:yjjbfai86bbaecitc:q1jjbfab8Piw83ibaecefgecjd9hmbkk;h8JlHud97euo978Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Rad;8qbbcj;abad9UhoaicefhldnadTmbaoc;WFbGgocjdaocjd6EhwcbhDinaDae9pmeawaeaD9RaDawfae6Egqcsfgoc9WGgkci2hxakcethmaocl4cifcd4hPabaDad2fhscbhzdnincehHalhOcbhAdninaraO9RaP6miavcj;cbfaAak2fhCaOaPfhlcbhidnakc;ab6mbaral9Rc;Gb6mbcbhoinaCaofhidndndndndnaOaoco4fRbbgXciGPlbedibkaipxbbbbbbbbbbbbbbbbpklbxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklbalczfhlkdndndndndnaXcd4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklzxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklzalczfhlkdndndndndnaXcl4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklaxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklaalczfhlkdndndndndnaXco4Plbedibkaipxbbbbbbbbbbbbbbbbpkl8WxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WalclfaYpQbfaXc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WalcwfaYpQbfaXc:q:yjjbfRbbfhlxekaialpbbbpkl8Walczfhlkaoc;abfhiaocjefak0meaihoaral9Rc;Fb0mbkkdndnaiak9pmbaici4hoinaral9RcK6mdaCaifhXdndndndndnaOaico4fRbbaocoG4ciGPlbedibkaXpxbbbbbbbbbbbbbbbbpklbxikaXalpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaXalpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaXalpbbbpklbalczfhlkaocdfhoaiczfgiak6mbkkalTmbaAci6hHalhOaAcefgohAaoclSmdxekkcbhlaHceGmdkdnakTmbavcjdfazfhiavazfpbdbhYcbhXinaiavcj;cbfaXfgopblbgLcep9TaLpxeeeeeeeeeeeeeeeegQp9op9Hp9rgLaoakfpblbg8Acep9Ta8AaQp9op9Hp9rg8ApmbzeHdOiAlCvXoQrLgEaoamfpblbg3cep9Ta3aQp9op9Hp9rg3aoaxfpblbg5cep9Ta5aQp9op9Hp9rg5pmbzeHdOiAlCvXoQrLg8EpmbezHdiOAlvCXorQLgQaQpmbedibedibedibediaYp9UgYp9AdbbaiadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaEa8EpmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaLa8ApmwKDYq8AkEx3m5P8Es8FgLa3a5pmwKDYq8AkEx3m5P8Es8Fg8ApmbezHdiOAlvCXorQLgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaLa8ApmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfhiaXczfgXak6mbkkazclfgzad6mbkasavcjdfaqad2;8qbbavavcjdfaqcufad2fad;8qbbaqaDfhDc9:hoalmexikkc9:hoxekcbc99aral9Radcaadca0ESEhokavcj;kbf8Kjjjjbaokwbz:bjjjbk;uzeHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecje;8kbavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhodnaeTmbcmcsaDceSEhkcbhxcbhmcbhDcbhicbhlindnaoaq9nmbc9:hoxikdndnawRbbgrc;Ve0mbavc;abfalarcl4cu7fcsGcitfgPydlhsaPydbhzdnarcsGgPak9pmbavaiarcu7fcsGcdtfydbaxaPEhraPThPdndnadcd9hmbabaDcetfgHaz87ebaHcdfas87ebaHclfar87ebxekabaDcdtfgHazBdbaHclfasBdbaHcwfarBdbkaxaPfhxavc;abfalcitfgHarBdbaHasBdlavaicdtfarBdbavc;abfalcefcsGglcitfgHazBdbaHarBdlaiaPfhialcefhlxdkdndnaPcsSmbamaPfaPc987fcefhmxekaocefhrao8SbbgPcFeGhHdndnaPcu9mmbarhoxekaocvfhoaHcFbGhHcrhPdninar8SbbgOcFbGaPtaHVhHaOcu9kmearcefhraPcrfgPc8J9hmbxdkkarcefhokaHce4cbaHceG9R7amfhmkdndnadcd9hmbabaDcetfgraz87ebarcdfas87ebarclfam87ebxekabaDcdtfgrazBdbarclfasBdbarcwfamBdbkavc;abfalcitfgramBdbarasBdlavaicdtfamBdbavc;abfalcefcsGglcitfgrazBdbaramBdlaicefhialcefhlxekdnarcpe0mbaxcefgOavaiaqarcsGfRbbgPcl49RcsGcdtfydbaPcz6gHEhravaiaP9RcsGcdtfydbaOaHfgsaPcsGgOEhPaOThOdndnadcd9hmbabaDcetfgzax87ebazcdfar87ebazclfaP87ebxekabaDcdtfgzaxBdbazclfarBdbazcwfaPBdbkavaicdtfaxBdbavc;abfalcitfgzarBdbazaxBdlavaicefgicsGcdtfarBdbavc;abfalcefcsGcitfgzaPBdbazarBdlavaiaHfcsGgicdtfaPBdbavc;abfalcdfcsGglcitfgraxBdbaraPBdlalcefhlaiaOfhiasaOfhxxekaxcbaoRbbgzEgAarc;:eSgrfhsazcsGhCazcl4hXdndnazcs0mbascefhOxekashOavaiaX9RcsGcdtfydbhskdndnaCmbaOcefhxxekaOhxavaiaz9RcsGcdtfydbhOkdndnarTmbaocefhrxekaocdfhrao8SbegHcFeGhPdnaHcu9kmbaocofhAaPcFbGhPcrhodninar8SbbgHcFbGaotaPVhPaHcu9kmearcefhraocrfgoc8J9hmbkaAhrxekarcefhrkaPce4cbaPceG9R7amfgmhAkdndnaXcsSmbarhPxekarcefhPar8SbbgocFeGhHdnaocu9kmbarcvfhsaHcFbGhHcrhodninaP8SbbgrcFbGaotaHVhHarcu9kmeaPcefhPaocrfgoc8J9hmbkashPxekaPcefhPkaHce4cbaHceG9R7amfgmhskdndnaCcsSmbaPhoxekaPcefhoaP8SbbgrcFeGhHdnarcu9kmbaPcvfhOaHcFbGhHcrhrdninao8SbbgPcFbGartaHVhHaPcu9kmeaocefhoarcrfgrc8J9hmbkaOhoxekaocefhokaHce4cbaHceG9R7amfgmhOkdndnadcd9hmbabaDcetfgraA87ebarcdfas87ebarclfaO87ebxekabaDcdtfgraABdbarclfasBdbarcwfaOBdbkavc;abfalcitfgrasBdbaraABdlavaicdtfaABdbavc;abfalcefcsGcitfgraOBdbarasBdlavaicefgicsGcdtfasBdbavc;abfalcdfcsGcitfgraABdbaraOBdlavaiazcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhialcifhlkawcefhwalcsGhlaicsGhiaDcifgDae6mbkkcbc99aoaqSEhokavc;aef8Kjjjjbaok:llevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:EPliuo97eue978Jjjjjbca9Rhidndnadcl9hmbdnaec98GglTmbcbhvabhdinadadpbbbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpkbbadczfhdavclfgval6mbkkalae9pmeaiaeciGgvcdtgdVcbczad9R;8kbaiabalcdtfglad;8qbbdnavTmbaiaipblbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpklbkalaiad;8qbbskdnaec98GgxTmbcbhvabhdinadczfglalpbbbgopxbbbbbbFFbbbbbbFFgkp9oadpbbbgDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eaDaopmbediwDqkzHOAKY8AEgoczp:Sep;6egrp;Geaoczp:Reczp:Sep;6egwp;Gep;Kep;Legopxb;:FSb;:FSb;:FSb;:FSawaopxbbbbbbbbbbbbbbbbp:2egqawpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegwawp;Meaoaop;Mearaqaramp9op9rp;Kegoaop;Mep;Kep;Kep;Jep;Negrp;Mepxbbn0bbn0bbn0bbn0gqp;Keczp:Reawarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9op9qgwaoarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogopmwDKYqk8AExm35Ps8E8Fp9qpkbbadaDakp9oawaopmbezHdiOAlvCXorQLp9qpkbbadcafhdavclfgvax6mbkkaxae9pmbaiaeciGgvcitgdfcbcaad9R;8kbaiabaxcitfglad;8qbbdnavTmbaiaipblzgopxbbbbbbFFbbbbbbFFgkp9oaipblbgDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eaDaopmbediwDqkzHOAKY8AEgoczp:Sep;6egrp;Geaoczp:Reczp:Sep;6egwp;Gep;Kep;Legopxb;:FSb;:FSb;:FSb;:FSawaopxbbbbbbbbbbbbbbbbp:2egqawpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegwawp;Meaoaop;Mearaqaramp9op9rp;Kegoaop;Mep;Kep;Kep;Jep;Negrp;Mepxbbn0bbn0bbn0bbn0gqp;Keczp:Reawarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9op9qgwaoarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogopmwDKYqk8AExm35Ps8E8Fp9qpklzaiaDakp9oawaopmbezHdiOAlvCXorQLp9qpklbkalaiad;8qbbkk;4wllue97euv978Jjjjjbc8W9Rhidnaec98GglTmbcbhvabhoinaiaopbbbgraoczfgwpbbbgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklbaopxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaqakp;Mearp;Keczp:ReaDakp;Mearp;Keamp9op9qgkpmbezHdiOAlvCXorQLgrp5baipblbpEb:T:j83ibaocwfarp5eaipblbpEe:T:j83ibawaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblbpEd:T:j83ibaocKfakp5eaipblbpEi:T:j83ibaocafhoavclfgval6mbkkdnalae9pmbaiaeciGgvcitgofcbcaao9R;8kbaiabalcitfgwao;8qbbdnavTmbaiaipblbgraipblzgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklaaipxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaqakp;Mearp;Keczp:ReaDakp;Mearp;Keamp9op9qgkpmbezHdiOAlvCXorQLgrp5baipblapEb:T:j83ibaiarp5eaipblapEe:T:j83iwaiaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblapEd:T:j83izaiakp5eaipblapEi:T:j83iKkawaiao;8qbbkk:Pddiue978Jjjjjbc;ab9Rhidnadcd4ae2glc98GgvTmbcbhdabheinaeaepbbbgocwp:Recwp:Sep;6eaocep:SepxbbjZbbjZbbjZbbjZp:UepxbbjFbbjFbbjFbbjFp9op;Mepkbbaeczfheadclfgdav6mbkkdnaval9pmbaialciGgdcdtgeVcbc;abae9R;8kbaiabavcdtfgvae;8qbbdnadTmbaiaipblbgocwp:Recwp:Sep;6eaocep:SepxbbjZbbjZbbjZbbjZp:UepxbbjFbbjFbbjFbbjFp9op;Mepklbkavaiae;8qbbkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikkkebcjwklz9Tbb",e=new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,3,2,0,0,5,3,1,0,1,12,1,0,10,22,2,12,0,65,0,65,0,65,0,252,10,0,0,11,7,0,65,0,253,15,26,11]),t=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!="object")return{supported:!1};var g=WebAssembly.validate(e)?A:i,I,o=WebAssembly.instantiate(C(g),{}).then(function(d){I=d.instance,I.exports.__wasm_call_ctors()});function C(d){for(var D=new Uint8Array(d.length),u=0;u<d.length;++u){var p=d.charCodeAt(u);D[u]=p>96?p-97:p>64?p-39:p+4}for(var y=0,u=0;u<d.length;++u)D[y++]=D[u]<60?t[D[u]]:(D[u]-60)*64+D[++u];return D.buffer.slice(0,y)}function s(d,D,u,p,y,k){var R=I.exports.sbrk,f=u+3&-4,M=R(f*p),U=R(y.length),J=new Uint8Array(I.exports.memory.buffer);J.set(y,U);var H=d(M,u,p,U,y.length);if(H==0&&k&&k(M,f,p),D.set(J.subarray(M,M+u*p)),R(M-R(0)),H!=0)throw new Error("Malformed buffer data: "+H)}var n={NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp"},a={ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"},B=[],Q=0;function E(d){var D={object:new Worker(d),pending:0,requests:{}};return D.object.onmessage=function(u){var p=u.data;D.pending-=p.count,D.requests[p.id][p.action](p.value),delete D.requests[p.id]},D}function c(d){for(var D="var instance; var ready = WebAssembly.instantiate(new Uint8Array(["+new Uint8Array(C(g))+"]), {}).then(function(result) { instance = result.instance; instance.exports.__wasm_call_ctors(); });self.onmessage = workerProcess;"+s.toString()+l.toString(),u=new Blob([D],{type:"text/javascript"}),p=URL.createObjectURL(u),y=0;y<d;++y)B[y]=E(p);URL.revokeObjectURL(p)}function h(d,D,u,p,y){for(var k=B[0],R=1;R<B.length;++R)B[R].pending<k.pending&&(k=B[R]);return new Promise(function(f,M){var U=new Uint8Array(u),J=Q++;k.pending+=d,k.requests[J]={resolve:f,reject:M},k.object.postMessage({id:J,count:d,size:D,source:U,mode:p,filter:y},[U.buffer])})}function l(d){o.then(function(){var D=d.data;try{var u=new Uint8Array(D.count*D.size);s(I.exports[D.mode],u,D.count,D.size,D.source,I.exports[D.filter]),self.postMessage({id:D.id,count:D.count,action:"resolve",value:u},[u.buffer])}catch(p){self.postMessage({id:D.id,count:D.count,action:"reject",value:p})}})}return{ready:o,supported:!0,useWorkers:function(d){c(d)},decodeVertexBuffer:function(d,D,u,p,y){s(I.exports.meshopt_decodeVertexBuffer,d,D,u,p,I.exports[n[y]])},decodeIndexBuffer:function(d,D,u,p){s(I.exports.meshopt_decodeIndexBuffer,d,D,u,p)},decodeIndexSequence:function(d,D,u,p){s(I.exports.meshopt_decodeIndexSequence,d,D,u,p)},decodeGltfBuffer:function(d,D,u,p,y,k){s(I.exports[a[y]],d,D,u,p,I.exports[n[k]])},decodeGltfBufferAsync:function(d,D,u,p,y){return B.length>0?h(d,D,u,a[p],n[y]):o.then(function(){var k=new Uint8Array(d*D);return s(I.exports[a[p]],k,d,D,u,I.exports[n[y]]),k})}}}();const RQ=aA("debugdecoders"),bK="https://www.gstatic.com/draco/versioned/decoders/1.4.1/",LK="https://www.gstatic.com/basis-universal/versioned/2021-04-15-ba1c3e4/";let AC,i0,Xn;function vK(i){i!==void 0&&typeof i=="string"&&(AC||(AC=new Dm),RQ&&console.log("Setting draco decoder path to",i),AC.setDecoderPath(i))}function xK(i){i!==void 0&&typeof i=="string"&&(AC||(AC=new Dm),RQ&&console.log("Setting draco decoder type to",i),AC.setDecoderConfig({type:i}))}function YK(i){i!==void 0&&typeof i=="string"&&(Xn||(Xn=new tC),RQ&&console.log("Setting ktx2 transcoder path to",i),Xn.setTranscoderPath(i))}function od(i,A){AC||(AC=new Dm,AC.setDecoderPath(bK),AC.setDecoderConfig({type:"js"}),RQ&&console.log("Setting draco decoder path to",bK)),Xn||(Xn=new tC,Xn.setTranscoderPath(LK),RQ&&console.log("Setting ktx2 transcoder path to",LK),A.renderer&&Xn.detectSupport(A.renderer)),i0||(i0=c9,RQ&&console.log("Using the default meshopt decoder")),i.setDRACOLoader(AC),i.setKTX2Loader(Xn),i.setMeshoptDecoder(i0)}class wE extends vg{constructor(A){super(A),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.animationPointerResolver=null,this.pluginCallbacks=[],this.register(function(e){return new p9(e)}),this.register(function(e){return new M9(e)}),this.register(function(e){return new m9(e)}),this.register(function(e){return new w9(e)}),this.register(function(e){return new y9(e)}),this.register(function(e){return new S9(e)}),this.register(function(e){return new k9(e)}),this.register(function(e){return new u9(e)}),this.register(function(e){return new G9(e)}),this.register(function(e){return new f9(e)}),this.register(function(e){return new l9(e)}),this.register(function(e){return new R9(e)}),this.register(function(e){return new U9(e)}),this.register(function(e){return new D9(e)})}load(A,e,t,g){const I=this;let o;this.resourcePath!==""?o=this.resourcePath:this.path!==""?o=this.path:o=YC.extractUrlBase(A),this.manager.itemStart(A);const C=function(n){g?g(n):console.error(n),I.manager.itemError(A),I.manager.itemEnd(A)},s=new Hi(this.manager);s.setPath(this.path),s.setResponseType("arraybuffer"),s.setRequestHeader(this.requestHeader),s.setWithCredentials(this.withCredentials),s.load(A,function(n){try{I.parse(n,o,function(a){e(a),I.manager.itemEnd(A)},C)}catch(a){C(a)}},t,C)}setDRACOLoader(A){return this.dracoLoader=A,this}setDDSLoader(){throw new Error('THREE.GLTFLoader: "MSFT_texture_dds" no longer supported. Please update to "KHR_texture_basisu".')}setKTX2Loader(A){return this.ktx2Loader=A,this}setMeshoptDecoder(A){return this.meshoptDecoder=A,this}setAnimationPointerResolver(A){return this.animationPointerResolver=A,this}register(A){return this.pluginCallbacks.indexOf(A)===-1&&this.pluginCallbacks.push(A),this}unregister(A){return this.pluginCallbacks.indexOf(A)!==-1&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(A),1),this}parse(A,e,t,g){let I;const o={},C={};if(typeof A=="string")I=JSON.parse(A);else if(A instanceof ArrayBuffer)if(YC.decodeText(new Uint8Array(A,0,4))===mY){try{o[Oe.KHR_BINARY_GLTF]=new F9(A)}catch(a){g&&g(a);return}I=JSON.parse(o[Oe.KHR_BINARY_GLTF].content)}else I=JSON.parse(YC.decodeText(new Uint8Array(A)));else I=A;if(I.asset===void 0||I.asset.version[0]<2){g&&g(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported."));return}const s=new H9(I,{path:e||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder,animationPointerResolver:this.animationPointerResolver});s.fileLoader.setRequestHeader(this.requestHeader);for(let n=0;n<this.pluginCallbacks.length;n++){const a=this.pluginCallbacks[n](s);C[a.name]=a,o[a.name]=!0}if(I.extensionsUsed)for(let n=0;n<I.extensionsUsed.length;++n){const a=I.extensionsUsed[n],B=I.extensionsRequired||[];switch(a){case Oe.KHR_MATERIALS_UNLIT:o[a]=new d9;break;case Oe.KHR_DRACO_MESH_COMPRESSION:o[a]=new N9(I,this.dracoLoader);break;case Oe.KHR_TEXTURE_TRANSFORM:o[a]=new K9;break;case Oe.KHR_MESH_QUANTIZATION:o[a]=new J9;break;default:B.indexOf(a)>=0&&C[a]===void 0&&console.warn('THREE.GLTFLoader: Unknown extension "'+a+'".')}}s.setExtensions(o),s.setPlugins(C),s.parse(t,g)}parseAsync(A,e){const t=this;return new Promise(function(g,I){t.parse(A,e,g,I)})}}function h9(){let i={};return{get:function(A){return i[A]},add:function(A,e){i[A]=e},remove:function(A){delete i[A]},removeAll:function(){i={}}}}const Oe={KHR_BINARY_GLTF:"KHR_binary_glTF",KHR_DRACO_MESH_COMPRESSION:"KHR_draco_mesh_compression",KHR_LIGHTS_PUNCTUAL:"KHR_lights_punctual",KHR_MATERIALS_CLEARCOAT:"KHR_materials_clearcoat",KHR_MATERIALS_IOR:"KHR_materials_ior",KHR_MATERIALS_SHEEN:"KHR_materials_sheen",KHR_MATERIALS_SPECULAR:"KHR_materials_specular",KHR_MATERIALS_TRANSMISSION:"KHR_materials_transmission",KHR_MATERIALS_IRIDESCENCE:"KHR_materials_iridescence",KHR_MATERIALS_UNLIT:"KHR_materials_unlit",KHR_MATERIALS_VOLUME:"KHR_materials_volume",KHR_TEXTURE_BASISU:"KHR_texture_basisu",KHR_TEXTURE_TRANSFORM:"KHR_texture_transform",KHR_MESH_QUANTIZATION:"KHR_mesh_quantization",KHR_MATERIALS_EMISSIVE_STRENGTH:"KHR_materials_emissive_strength",KHR_ANIMATION_POINTER:"KHR_animation_pointer",EXT_TEXTURE_WEBP:"EXT_texture_webp",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression",EXT_MESH_GPU_INSTANCING:"EXT_mesh_gpu_instancing"};class l9{constructor(A){this.parser=A,this.name=Oe.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){const A=this.parser,e=this.parser.json.nodes||[];for(let t=0,g=e.length;t<g;t++){const I=e[t];I.extensions&&I.extensions[this.name]&&I.extensions[this.name].light!==void 0&&A._addNodeRef(this.cache,I.extensions[this.name].light)}}_loadLight(A){const e=this.parser,t="light:"+A;let g=e.cache.get(t);if(g)return g;const I=e.json,s=((I.extensions&&I.extensions[this.name]||{}).lights||[])[A];let n;const a=new wA(16777215);s.color!==void 0&&a.fromArray(s.color);const B=s.range!==void 0?s.range:0;switch(s.type){case"directional":n=new tw(a),n.target.position.set(0,0,-1),n.add(n.target);break;case"point":n=new ew(a),n.distance=B;break;case"spot":n=new Aw(a),n.distance=B,s.spot=s.spot||{},s.spot.innerConeAngle=s.spot.innerConeAngle!==void 0?s.spot.innerConeAngle:0,s.spot.outerConeAngle=s.spot.outerConeAngle!==void 0?s.spot.outerConeAngle:Math.PI/4,n.angle=s.spot.outerConeAngle,n.penumbra=1-s.spot.innerConeAngle/s.spot.outerConeAngle,n.target.position.set(0,0,-1),n.add(n.target);break;default:throw new Error("THREE.GLTFLoader: Unexpected light type: "+s.type)}return n.position.set(0,0,0),n.decay=2,Vn(n,s),s.intensity!==void 0&&(n.intensity=s.intensity),n.name=e.createUniqueName(s.name||"light_"+A),g=Promise.resolve(n),e.cache.add(t,g),g}getDependency(A,e){if(A==="light")return this._loadLight(e)}createNodeAttachment(A){const e=this,t=this.parser,I=t.json.nodes[A],C=(I.extensions&&I.extensions[this.name]||{}).light;return C===void 0?null:this._loadLight(C).then(function(s){return t._getNodeRef(e.cache,C,s)})}}let d9=class{constructor(){this.name=Oe.KHR_MATERIALS_UNLIT}getMaterialType(){return wt}extendParams(A,e,t){const g=[];A.color=new wA(1,1,1),A.opacity=1;const I=e.pbrMetallicRoughness;if(I){if(Array.isArray(I.baseColorFactor)){const o=I.baseColorFactor;A.color.fromArray(o),A.opacity=o[3]}I.baseColorTexture!==void 0&&g.push(t.assignTexture(A,"map",I.baseColorTexture,De))}return Promise.all(g)}};class u9{constructor(A){this.parser=A,this.name=Oe.KHR_MATERIALS_EMISSIVE_STRENGTH}extendMaterialParams(A,e){const g=this.parser.json.materials[A];if(!g.extensions||!g.extensions[this.name])return Promise.resolve();const I=g.extensions[this.name].emissiveStrength;return I!==void 0&&(e.emissiveIntensity=I),Promise.resolve()}}let p9=class{constructor(A){this.parser=A,this.name=Oe.KHR_MATERIALS_CLEARCOAT}getMaterialType(A){const t=this.parser.json.materials[A];return!t.extensions||!t.extensions[this.name]?null:ZC}extendMaterialParams(A,e){const t=this.parser,g=t.json.materials[A];if(!g.extensions||!g.extensions[this.name])return Promise.resolve();const I=[],o=g.extensions[this.name];if(o.clearcoatFactor!==void 0&&(e.clearcoat=o.clearcoatFactor),o.clearcoatTexture!==void 0&&I.push(t.assignTexture(e,"clearcoatMap",o.clearcoatTexture)),o.clearcoatRoughnessFactor!==void 0&&(e.clearcoatRoughness=o.clearcoatRoughnessFactor),o.clearcoatRoughnessTexture!==void 0&&I.push(t.assignTexture(e,"clearcoatRoughnessMap",o.clearcoatRoughnessTexture)),o.clearcoatNormalTexture!==void 0&&(I.push(t.assignTexture(e,"clearcoatNormalMap",o.clearcoatNormalTexture)),o.clearcoatNormalTexture.scale!==void 0)){const C=o.clearcoatNormalTexture.scale;e.clearcoatNormalScale=new P(C,C)}return Promise.all(I)}};const TK=He.findNode;class D9{constructor(A){r(this,"ANIMATION_TARGET_TYPE",{node:"node",material:"material",camera:"camera",light:"light"});r(this,"_havePatchedPropertyBindings",!1);this.parser=A,this.name=Oe.KHR_ANIMATION_POINTER}_patchPropertyBindingFindNode(){this._havePatchedPropertyBindings||(this._havePatchedPropertyBindings=!0,He.findNode=function(A,e){if(e.startsWith(".materials.")){const t=e.substring(11).substring(e.indexOf(".")),g=t.indexOf("."),I=g<0?t:t.substring(0,g);let o=null;return A.traverse(C=>{var s,n;o!==null||C.type!=="Mesh"||(((s=C.material)==null?void 0:s.uuid)===I||((n=C.material)==null?void 0:n.name)===I)&&(o=C.material,o!==null&&(t.endsWith(".map")?o=o.map:t.endsWith(".emissiveMap")&&(o=o.emissiveMap)))}),o}else if(e.startsWith(".nodes.")||e.startsWith(".lights.")||e.startsWith(".cameras.")){const t=e.split(".");let g;for(let I=1;I<t.length;I++){const o=t[I];if(o.length==36)g=A.getObjectByProperty("uuid",o);else if(g&&g[o]){const s=Number.parseInt(o);let n=o;s>=0&&(n=s),g=g[n]}else{const s=A.getObjectByName(o);s&&(g=s)}}if(!g){const I=TK(A,t[2]);return I||console.warn(Oe.KHR_ANIMATION_POINTER+": Property binding not found",e,A,A.name,t),I}return g}return TK(A,e)})}loadAnimationTargetFromChannel(A){this._havePatchedPropertyBindings||this._patchPropertyBindingFindNode();const e=A.target,t=e.extensions&&e.extensions[Oe.KHR_ANIMATION_POINTER]&&e.path&&e.path==="pointer";if(!t)return null;let g,I=this.ANIMATION_TARGET_TYPE.node,o;if(t){const s=e.extensions[Oe.KHR_ANIMATION_POINTER];let n=s.pointer;if(this._animationPointerDebug&&console.log("Original path: "+n,e),!n){console.warn("Invalid path",s,e);return}if(n.startsWith("/materials/")?I=this.ANIMATION_TARGET_TYPE.material:n.startsWith("/extensions/KHR_lights_punctual/lights/")?I=this.ANIMATION_TARGET_TYPE.light:n.startsWith("/cameras/")&&(I=this.ANIMATION_TARGET_TYPE.camera),o=this._tryResolveTargetId(n,I),o===null||isNaN(o)){console.warn("Failed resolving animation node id: "+o,n);return}else this._animationPointerDebug&&console.log("Resolved node ID for "+I,o);switch(I){case this.ANIMATION_TARGET_TYPE.material:const B=("/materials/"+o.toString()+"/").length,Q=n.substring(0,B);switch(g=n.substring(B),g){case"pbrMetallicRoughness/baseColorFactor":g="color";break;case"pbrMetallicRoughness/roughnessFactor":g="roughness";break;case"pbrMetallicRoughness/metallicFactor":g="metalness";break;case"emissiveFactor":g="emissive";break;case"alphaCutoff":g="alphaTest";break;case"occlusionTexture/strength":g="aoMapIntensity";break;case"normalTexture/scale":g="normalScale";break;case"pbrMetallicRoughness/baseColorTexture/extensions/KHR_texture_transform/scale":g="map/repeat";break;case"pbrMetallicRoughness/baseColorTexture/extensions/KHR_texture_transform/offset":g="map/offset";break;case"emissiveTexture/extensions/KHR_texture_transform/scale":g="emissiveMap/repeat";break;case"emissiveTexture/extensions/KHR_texture_transform/offset":g="emissiveMap/offset";break;case"extensions/KHR_materials_emissive_strength/emissiveStrength":g="emissiveIntensity";break;case"extensions/KHR_materials_transmission/transmissionFactor":g="transmission";break;case"extensions/KHR_materials_ior/ior":g="ior";break;case"extensions/KHR_materials_volume/thicknessFactor":g="thickness";break;case"extensions/KHR_materials_volume/attenuationColor":g="attenuationColor";break;case"extensions/KHR_materials_volume/attenuationDistance":g="attenuationDistance";break;case"extensions/KHR_materials_iridescence/iridescenceFactor":g="iridescence";break;case"extensions/KHR_materials_iridescence/iridescenceIor":g="iridescenceIOR";break;case"extensions/KHR_materials_iridescence/iridescenceThicknessMinimum":g="iridescenceThicknessRange[0]";break;case"extensions/KHR_materials_iridescence/iridescenceThicknessMaximum":g="iridescenceThicknessRange[1]";break;case"extensions/KHR_materials_clearcoat/clearcoatFactor":g="clearcoat";break;case"extensions/KHR_materials_clearcoat/clearcoatRoughnessFactor":g="clearcoatRoughness";break;case"extensions/KHR_materials_sheen/sheenColorFactor":g="sheenColor";break;case"extensions/KHR_materials_sheen/sheenRoughnessFactor":g="sheenRoughness";break;case"extensions/KHR_materials_specular/specularFactor":g="specularIntensity";break;case"extensions/KHR_materials_specular/specularColorFactor":g="specularColor";break}n=Q+g,this._animationPointerDebug&&console.log("PROPERTY PATH",Q,g,n);break;case this.ANIMATION_TARGET_TYPE.node:const E=("/nodes/"+o.toString()+"/").length,c=n.substring(0,E);switch(g=n.substring(E),g){case"translation":g="position";break;case"rotation":g="quaternion";break;case"scale":g="scale";break;case"weights":g="morphTargetInfluences";break}n=c+g;break;case this.ANIMATION_TARGET_TYPE.light:const h=("/extensions/KHR_lights_punctual/lights/"+o.toString()+"/").length;switch(g=n.substring(h),g){case"color":break;case"intensity":break;case"spot/innerConeAngle":g="penumbra";break;case"spot/outerConeAngle":g="angle";break;case"range":g="distance";break}n="/lights/"+o.toString()+"/"+g;break;case this.ANIMATION_TARGET_TYPE.camera:const l=("/cameras/"+o.toString()+"/").length,d=n.substring(0,l);switch(g=n.substring(l),g){case"perspective/yfov":g="fov";break;case"perspective/znear":case"orthographic/znear":g="near";break;case"perspective/zfar":case"orthographic/zfar":g="far";break;case"perspective/aspect":g="aspect";break;case"orthographic/xmag":g="zoom";break;case"orthographic/ymag":g="zoom";break}n=d+g;break}const a=this.parser.options.animationPointerResolver;a&&a.resolvePath&&(n=a.resolvePath(n)),e.extensions[Oe.KHR_ANIMATION_POINTER].pointer=n}if(o===null||isNaN(o)){console.warn("Failed resolving animation node id: "+o,e);return}let C;return I===this.ANIMATION_TARGET_TYPE.node?C=this.parser.getDependency("node",o):I===this.ANIMATION_TARGET_TYPE.material?C=this.parser.getDependency("material",o):I===this.ANIMATION_TARGET_TYPE.light?C=this.parser.getDependency("light",o):I===this.ANIMATION_TARGET_TYPE.camera?C=this.parser.getDependency("camera",o):console.error("Unhandled type",I),C}createAnimationTracks(A,e,t,g,I){if(!(I.extensions&&I.extensions[Oe.KHR_ANIMATION_POINTER]&&I.path&&I.path==="pointer"))return null;let C=I.extensions[Oe.KHR_ANIMATION_POINTER].pointer;if(!C)return null;const s=[];C=C.replaceAll("/",".");const n=C.split(".");n[2]=A.name??A.uuid,C=n.join("."),this._animationPointerDebug&&console.log(A,e,t,I,C);let a;switch(t.itemSize){case 1:a=ua;break;case 2:case 3:a=pa;break;case 4:C.endsWith(".quaternion")?a=XC:a=Vl;break}const B=g.interpolation!==void 0?UY[g.interpolation]:Zs;let Q=FY(t);C.endsWith(".fov")&&(Q=Q.map(c=>c/Math.PI*180));const E=new a(C,e.array,Q,B);if(B==="CUBICSPLINE"&&EG(E),s.push(E),C&&t.itemSize===4&&C.startsWith(".materials.")&&C.endsWith(".color")){const c=new Float32Array(Q.length/4);for(let l=0,d=Q.length/4;l<d;l+=1)c[l]=Q[l*4+3];const h=new a(C.replace(".color",".opacity"),e.array,c,B);B==="CUBICSPLINE"&&EG(E),s.push(h)}return s}_tryResolveTargetId(A,e){let t="";return e==="node"?t=A.substring(7):e==="material"?t=A.substring(11):e==="light"?t=A.substring(39):e==="camera"&&(t=A.substring(9)),t=t.substring(0,t.indexOf("/")),Number.parseInt(t)}}let f9=class{constructor(A){this.parser=A,this.name=Oe.KHR_MATERIALS_IRIDESCENCE}getMaterialType(A){const t=this.parser.json.materials[A];return!t.extensions||!t.extensions[this.name]?null:ZC}extendMaterialParams(A,e){const t=this.parser,g=t.json.materials[A];if(!g.extensions||!g.extensions[this.name])return Promise.resolve();const I=[],o=g.extensions[this.name];return o.iridescenceFactor!==void 0&&(e.iridescence=o.iridescenceFactor),o.iridescenceTexture!==void 0&&I.push(t.assignTexture(e,"iridescenceMap",o.iridescenceTexture)),o.iridescenceIor!==void 0&&(e.iridescenceIOR=o.iridescenceIor),e.iridescenceThicknessRange===void 0&&(e.iridescenceThicknessRange=[100,400]),o.iridescenceThicknessMinimum!==void 0&&(e.iridescenceThicknessRange[0]=o.iridescenceThicknessMinimum),o.iridescenceThicknessMaximum!==void 0&&(e.iridescenceThicknessRange[1]=o.iridescenceThicknessMaximum),o.iridescenceThicknessTexture!==void 0&&I.push(t.assignTexture(e,"iridescenceThicknessMap",o.iridescenceThicknessTexture)),Promise.all(I)}};class w9{constructor(A){this.parser=A,this.name=Oe.KHR_MATERIALS_SHEEN}getMaterialType(A){const t=this.parser.json.materials[A];return!t.extensions||!t.extensions[this.name]?null:ZC}extendMaterialParams(A,e){const t=this.parser,g=t.json.materials[A];if(!g.extensions||!g.extensions[this.name])return Promise.resolve();const I=[];e.sheenColor=new wA(0,0,0),e.sheenRoughness=0,e.sheen=1;const o=g.extensions[this.name];return o.sheenColorFactor!==void 0&&e.sheenColor.fromArray(o.sheenColorFactor),o.sheenRoughnessFactor!==void 0&&(e.sheenRoughness=o.sheenRoughnessFactor),o.sheenColorTexture!==void 0&&I.push(t.assignTexture(e,"sheenColorMap",o.sheenColorTexture,De)),o.sheenRoughnessTexture!==void 0&&I.push(t.assignTexture(e,"sheenRoughnessMap",o.sheenRoughnessTexture)),Promise.all(I)}}let y9=class{constructor(A){this.parser=A,this.name=Oe.KHR_MATERIALS_TRANSMISSION}getMaterialType(A){const t=this.parser.json.materials[A];return!t.extensions||!t.extensions[this.name]?null:ZC}extendMaterialParams(A,e){const t=this.parser,g=t.json.materials[A];if(!g.extensions||!g.extensions[this.name])return Promise.resolve();const I=[],o=g.extensions[this.name];return o.transmissionFactor!==void 0&&(e.transmission=o.transmissionFactor),o.transmissionTexture!==void 0&&I.push(t.assignTexture(e,"transmissionMap",o.transmissionTexture)),Promise.all(I)}},S9=class{constructor(A){this.parser=A,this.name=Oe.KHR_MATERIALS_VOLUME}getMaterialType(A){const t=this.parser.json.materials[A];return!t.extensions||!t.extensions[this.name]?null:ZC}extendMaterialParams(A,e){const t=this.parser,g=t.json.materials[A];if(!g.extensions||!g.extensions[this.name])return Promise.resolve();const I=[],o=g.extensions[this.name];e.thickness=o.thicknessFactor!==void 0?o.thicknessFactor:0,o.thicknessTexture!==void 0&&I.push(t.assignTexture(e,"thicknessMap",o.thicknessTexture)),e.attenuationDistance=o.attenuationDistance||1/0;const C=o.attenuationColor||[1,1,1];return e.attenuationColor=new wA(C[0],C[1],C[2]),Promise.all(I)}};class k9{constructor(A){this.parser=A,this.name=Oe.KHR_MATERIALS_IOR}getMaterialType(A){const t=this.parser.json.materials[A];return!t.extensions||!t.extensions[this.name]?null:ZC}extendMaterialParams(A,e){const g=this.parser.json.materials[A];if(!g.extensions||!g.extensions[this.name])return Promise.resolve();const I=g.extensions[this.name];return e.ior=I.ior!==void 0?I.ior:1.5,Promise.resolve()}}class G9{constructor(A){this.parser=A,this.name=Oe.KHR_MATERIALS_SPECULAR}getMaterialType(A){const t=this.parser.json.materials[A];return!t.extensions||!t.extensions[this.name]?null:ZC}extendMaterialParams(A,e){const t=this.parser,g=t.json.materials[A];if(!g.extensions||!g.extensions[this.name])return Promise.resolve();const I=[],o=g.extensions[this.name];e.specularIntensity=o.specularFactor!==void 0?o.specularFactor:1,o.specularTexture!==void 0&&I.push(t.assignTexture(e,"specularIntensityMap",o.specularTexture));const C=o.specularColorFactor||[1,1,1];return e.specularColor=new wA(C[0],C[1],C[2]),o.specularColorTexture!==void 0&&I.push(t.assignTexture(e,"specularColorMap",o.specularColorTexture,De)),Promise.all(I)}}class M9{constructor(A){this.parser=A,this.name=Oe.KHR_TEXTURE_BASISU}loadTexture(A){const e=this.parser,t=e.json,g=t.textures[A];if(!g.extensions||!g.extensions[this.name])return null;const I=g.extensions[this.name],o=e.options.ktx2Loader;if(!o){if(t.extensionsRequired&&t.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return null}return e.loadTextureImage(A,I.source,o)}}class m9{constructor(A){this.parser=A,this.name=Oe.EXT_TEXTURE_WEBP,this.isSupported=null}loadTexture(A){const e=this.name,t=this.parser,g=t.json,I=g.textures[A];if(!I.extensions||!I.extensions[e])return null;const o=I.extensions[e],C=g.images[o.source];let s=t.textureLoader;if(C.uri){const n=t.options.manager.getHandler(C.uri);n!==null&&(s=n)}return this.detectSupport().then(function(n){if(n)return t.loadTextureImage(A,o.source,s);if(g.extensionsRequired&&g.extensionsRequired.indexOf(e)>=0)throw new Error("THREE.GLTFLoader: WebP required by asset but unsupported.");return t.loadTexture(A)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(A){const e=new Image;e.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA",e.onload=e.onerror=function(){A(e.height===1)}})),this.isSupported}}class R9{constructor(A){this.name=Oe.EXT_MESHOPT_COMPRESSION,this.parser=A}loadBufferView(A){const e=this.parser.json,t=e.bufferViews[A];if(t.extensions&&t.extensions[this.name]){const g=t.extensions[this.name],I=this.parser.getDependency("buffer",g.buffer),o=this.parser.options.meshoptDecoder;if(!o||!o.supported){if(e.extensionsRequired&&e.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return null}return I.then(function(C){const s=g.byteOffset||0,n=g.byteLength||0,a=g.count,B=g.byteStride,Q=new Uint8Array(C,s,n);return o.decodeGltfBufferAsync?o.decodeGltfBufferAsync(a,B,Q,g.mode,g.filter).then(function(E){return E.buffer}):o.ready.then(function(){const E=new ArrayBuffer(a*B);return o.decodeGltfBuffer(new Uint8Array(E),a,B,Q,g.mode,g.filter),E})})}else return null}}class U9{constructor(A){this.name=Oe.EXT_MESH_GPU_INSTANCING,this.parser=A}createNodeMesh(A){const e=this.parser.json,t=e.nodes[A];if(!t.extensions||!t.extensions[this.name]||t.mesh===void 0)return null;const g=e.meshes[t.mesh];for(const n of g.primitives)if(n.mode!==ro.TRIANGLES&&n.mode!==ro.TRIANGLE_STRIP&&n.mode!==ro.TRIANGLE_FAN&&n.mode!==void 0)return null;const o=t.extensions[this.name].attributes,C=[],s={};for(const n in o)C.push(this.parser.getDependency("accessor",o[n]).then(a=>(s[n]=a,s[n])));return C.length<1?null:(C.push(this.parser.createNodeMesh(A)),Promise.all(C).then(n=>{const a=n.pop(),B=a.isGroup?a.children:[a],Q=n[0].count,E=[];for(const c of B){const h=new NA,l=new S,d=new kA,D=new S(1,1,1),u=new Wf(c.geometry,c.material,Q);for(let p=0;p<Q;p++)s.TRANSLATION&&l.fromBufferAttribute(s.TRANSLATION,p),s.ROTATION&&d.fromBufferAttribute(s.ROTATION,p),s.SCALE&&D.fromBufferAttribute(s.SCALE,p),u.setMatrixAt(p,h.compose(l,d,D));for(const p in s)p!=="TRANSLATION"&&p!=="ROTATION"&&p!=="SCALE"&&c.geometry.setAttribute(p,s[p]);UA.prototype.copy.call(u,c),u.frustumCulled=!1,this.parser.assignFinalMaterial(u),E.push(u)}return a.isGroup?(a.clear(),a.add(...E),a):E[0]}))}}const mY="glTF",kc=12,HK={JSON:1313821514,BIN:5130562};class F9{constructor(A){this.name=Oe.KHR_BINARY_GLTF,this.content=null,this.body=null;const e=new DataView(A,0,kc);if(this.header={magic:YC.decodeText(new Uint8Array(A.slice(0,4))),version:e.getUint32(4,!0),length:e.getUint32(8,!0)},this.header.magic!==mY)throw new Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");if(this.header.version<2)throw new Error("THREE.GLTFLoader: Legacy binary file detected.");const t=this.header.length-kc,g=new DataView(A,kc);let I=0;for(;I<t;){const o=g.getUint32(I,!0);I+=4;const C=g.getUint32(I,!0);if(I+=4,C===HK.JSON){const s=new Uint8Array(A,kc+I,o);this.content=YC.decodeText(s)}else if(C===HK.BIN){const s=kc+I;this.body=A.slice(s,s+o)}I+=o}if(this.content===null)throw new Error("THREE.GLTFLoader: JSON content not found.")}}class N9{constructor(A,e){if(!e)throw new Error("THREE.GLTFLoader: No DRACOLoader instance provided.");this.name=Oe.KHR_DRACO_MESH_COMPRESSION,this.json=A,this.dracoLoader=e,this.dracoLoader.preload()}decodePrimitive(A,e){const t=this.json,g=this.dracoLoader,I=A.extensions[this.name].bufferView,o=A.extensions[this.name].attributes,C={},s={},n={};for(const a in o){const B=BG[a]||a.toLowerCase();C[B]=o[a]}for(const a in A.attributes){const B=BG[a]||a.toLowerCase();if(o[a]!==void 0){const Q=t.accessors[A.attributes[a]],E=UQ[Q.componentType];n[B]=E.name,s[B]=Q.normalized===!0}}return e.getDependency("bufferView",I).then(function(a){return new Promise(function(B){g.decodeDracoFile(a,function(Q){for(const E in Q.attributes){const c=Q.attributes[E],h=s[E];h!==void 0&&(c.normalized=h)}B(Q)},C,n)})})}}class K9{constructor(){this.name=Oe.KHR_TEXTURE_TRANSFORM}extendTexture(A,e){return e.texCoord!==void 0&&console.warn('THREE.GLTFLoader: Custom UV sets in "'+this.name+'" extension not yet supported.'),e.offset===void 0&&e.rotation===void 0&&e.scale===void 0||(A=A.clone(),e.offset!==void 0&&A.offset.fromArray(e.offset),e.rotation!==void 0&&(A.rotation=e.rotation),e.scale!==void 0&&A.repeat.fromArray(e.scale),A.needsUpdate=!0),A}}class J9{constructor(){this.name=Oe.KHR_MESH_QUANTIZATION}}class RY extends cE{constructor(A,e,t,g){super(A,e,t,g)}copySampleValue_(A){const e=this.resultBuffer,t=this.sampleValues,g=this.valueSize,I=A*g*3+g;for(let o=0;o!==g;o++)e[o]=t[I+o];return e}interpolate_(A,e,t,g){const I=this.resultBuffer,o=this.sampleValues,C=this.valueSize,s=C*2,n=C*3,a=g-e,B=(t-e)/a,Q=B*B,E=Q*B,c=A*n,h=c-n,l=-2*E+3*Q,d=E-Q,D=1-l,u=d-Q+B;for(let p=0;p!==C;p++){const y=o[h+p+C],k=o[h+p+s]*a,R=o[c+p+C],f=o[c+p]*a;I[p]=D*y+u*k+l*R+d*f}return I}}const q9=new kA;class b9 extends RY{interpolate_(A,e,t,g){const I=super.interpolate_(A,e,t,g);return q9.fromArray(I).normalize().toArray(I),I}}const ro={FLOAT:5126,FLOAT_MAT3:35675,FLOAT_MAT4:35676,FLOAT_VEC2:35664,FLOAT_VEC3:35665,FLOAT_VEC4:35666,LINEAR:9729,REPEAT:10497,SAMPLER_2D:35678,POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,UNSIGNED_BYTE:5121,UNSIGNED_SHORT:5123},UQ={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},_K={9728:$e,9729:be,9984:YQ,9985:Nl,9986:TQ,9987:sC},OK={33071:eg,33648:zs,10497:SI},g0={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},BG={POSITION:"position",NORMAL:"normal",TANGENT:"tangent",TEXCOORD_0:"uv",TEXCOORD_1:"uv2",COLOR_0:"color",WEIGHTS_0:"skinWeight",JOINTS_0:"skinIndex"},Ln={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},UY={CUBICSPLINE:void 0,LINEAR:Zs,STEP:br},I0={OPAQUE:"OPAQUE",MASK:"MASK",BLEND:"BLEND"};function L9(i){return i.DefaultMaterial===void 0&&(i.DefaultMaterial=new $s({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:iI})),i.DefaultMaterial}function Gc(i,A,e){for(const t in e.extensions)i[t]===void 0&&(A.userData.gltfExtensions=A.userData.gltfExtensions||{},A.userData.gltfExtensions[t]=e.extensions[t])}function Vn(i,A){A.extras!==void 0&&(typeof A.extras=="object"?Object.assign(i.userData,A.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+A.extras))}function v9(i,A,e){let t=!1,g=!1,I=!1;for(let n=0,a=A.length;n<a;n++){const B=A[n];if(B.POSITION!==void 0&&(t=!0),B.NORMAL!==void 0&&(g=!0),B.COLOR_0!==void 0&&(I=!0),t&&g&&I)break}if(!t&&!g&&!I)return Promise.resolve(i);const o=[],C=[],s=[];for(let n=0,a=A.length;n<a;n++){const B=A[n];if(t){const Q=B.POSITION!==void 0?e.getDependency("accessor",B.POSITION):i.attributes.position;o.push(Q)}if(g){const Q=B.NORMAL!==void 0?e.getDependency("accessor",B.NORMAL):i.attributes.normal;C.push(Q)}if(I){const Q=B.COLOR_0!==void 0?e.getDependency("accessor",B.COLOR_0):i.attributes.color;s.push(Q)}}return Promise.all([Promise.all(o),Promise.all(C),Promise.all(s)]).then(function(n){const a=n[0],B=n[1],Q=n[2];return t&&(i.morphAttributes.position=a),g&&(i.morphAttributes.normal=B),I&&(i.morphAttributes.color=Q),i.morphTargetsRelative=!0,i})}function x9(i,A){if(i.updateMorphTargets(),A.weights!==void 0)for(let e=0,t=A.weights.length;e<t;e++)i.morphTargetInfluences[e]=A.weights[e];if(A.extras&&Array.isArray(A.extras.targetNames)){const e=A.extras.targetNames;if(i.morphTargetInfluences.length===e.length){i.morphTargetDictionary={};for(let t=0,g=e.length;t<g;t++)i.morphTargetDictionary[e[t]]=t}else console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.")}}function Y9(i){const A=i.extensions&&i.extensions[Oe.KHR_DRACO_MESH_COMPRESSION];let e;return A?e="draco:"+A.bufferView+":"+A.indices+":"+PK(A.attributes):e=i.indices+":"+PK(i.attributes)+":"+i.mode,e}function PK(i){let A="";const e=Object.keys(i).sort();for(let t=0,g=e.length;t<g;t++)A+=e[t]+":"+i[e[t]]+";";return A}function QG(i){switch(i){case Int8Array:return 1/127;case Uint8Array:return 1/255;case Int16Array:return 1/32767;case Uint16Array:return 1/65535;default:throw new Error("THREE.GLTFLoader: Unsupported normalized accessor component type.")}}function FY(i){let A=i.array;if(i.normalized){const e=QG(A.constructor),t=new Float32Array(A.length);for(let g=0,I=A.length;g<I;g++)t[g]=A[g]*e;A=t}return A}function EG(i){i.createInterpolant=function(e){const t=this instanceof XC?b9:RY;return new t(this.times,this.values,this.getValueSize()/3,e)},i.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0}function T9(i){return i.search(/\.jpe?g($|\?)/i)>0||i.search(/^data\:image\/jpeg/)===0?"image/jpeg":i.search(/\.webp($|\?)/i)>0||i.search(/^data\:image\/webp/)===0?"image/webp":"image/png"}class H9{constructor(A={},e={}){this.json=A,this.extensions={},this.plugins={},this.options=e,this.cache=new h9,this.associations=new Map,this.primitiveCache={},this.meshCache={refs:{},uses:{}},this.cameraCache={refs:{},uses:{}},this.lightCache={refs:{},uses:{}},this.sourceCache={},this.textureCache={},this.nodeNamesUsed={};let t=!1,g=!1,I=-1;typeof navigator<"u"&&(t=/^((?!chrome|android).)*safari/i.test(navigator.userAgent)===!0,g=navigator.userAgent.indexOf("Firefox")>-1,I=g?navigator.userAgent.match(/Firefox\/([0-9]+)\./)[1]:-1),typeof createImageBitmap>"u"||t||g&&I<98?this.textureLoader=new Ba(this.options.manager):this.textureLoader=new LL(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new Hi(this.options.manager),this.fileLoader.setResponseType("arraybuffer"),this.options.crossOrigin==="use-credentials"&&this.fileLoader.setWithCredentials(!0)}setExtensions(A){this.extensions=A}setPlugins(A){this.plugins=A}parse(A,e){const t=this,g=this.json,I=this.extensions;this.cache.removeAll(),this._invokeAll(function(o){return o._markDefs&&o._markDefs()}),Promise.all(this._invokeAll(function(o){return o.beforeRoot&&o.beforeRoot()})).then(function(){return Promise.all([t.getDependencies("scene"),t.getDependencies("animation"),t.getDependencies("camera")])}).then(function(o){const C={scene:o[0][g.scene||0],scenes:o[0],animations:o[1],cameras:o[2],asset:g.asset,parser:t,userData:{}};Gc(I,C,g),Vn(C,g),Promise.all(t._invokeAll(function(s){return s.afterRoot&&s.afterRoot(C)})).then(function(){A(C)})}).catch(e)}_markDefs(){const A=this.json.nodes||[],e=this.json.skins||[],t=this.json.meshes||[];for(let g=0,I=e.length;g<I;g++){const o=e[g].joints;for(let C=0,s=o.length;C<s;C++)A[o[C]].isBone=!0}for(let g=0,I=A.length;g<I;g++){const o=A[g];o.mesh!==void 0&&(this._addNodeRef(this.meshCache,o.mesh),o.skin!==void 0&&(t[o.mesh].isSkinnedMesh=!0)),o.camera!==void 0&&this._addNodeRef(this.cameraCache,o.camera)}}_addNodeRef(A,e){e!==void 0&&(A.refs[e]===void 0&&(A.refs[e]=A.uses[e]=0),A.refs[e]++)}_getNodeRef(A,e,t){if(A.refs[e]<=1)return t;const g=t.clone(),I=(o,C)=>{const s=this.associations.get(o);s!=null&&this.associations.set(C,s);for(const[n,a]of o.children.entries())I(a,C.children[n])};return I(t,g),g.name+="_instance_"+A.uses[e]++,g}_invokeOne(A){const e=Object.values(this.plugins);e.push(this);for(let t=0;t<e.length;t++){const g=A(e[t]);if(g)return g}return null}_invokeAll(A){const e=Object.values(this.plugins);e.unshift(this);const t=[];for(let g=0;g<e.length;g++){const I=A(e[g]);I&&t.push(I)}return t}getDependency(A,e){const t=A+":"+e;let g=this.cache.get(t);if(!g){switch(A){case"scene":g=this.loadScene(e);break;case"node":g=this.loadNode(e);break;case"mesh":g=this._invokeOne(function(I){return I.loadMesh&&I.loadMesh(e)});break;case"accessor":g=this.loadAccessor(e);break;case"bufferView":g=this._invokeOne(function(I){return I.loadBufferView&&I.loadBufferView(e)});break;case"buffer":g=this.loadBuffer(e);break;case"material":g=this._invokeOne(function(I){return I.loadMaterial&&I.loadMaterial(e)});break;case"texture":g=this._invokeOne(function(I){return I.loadTexture&&I.loadTexture(e)});break;case"skin":g=this.loadSkin(e);break;case"animation":g=this._invokeOne(function(I){return I.loadAnimation&&I.loadAnimation(e)});break;case"camera":g=this.loadCamera(e);break;case"light":g=this._invokeOne(function(I){return I._loadLight&&I._loadLight(e)});break;default:if(g=this._invokeOne(function(I){return I!=this&&I.getDependency&&I.getDependency(A,e)}),!g)throw new Error("Unknown type: "+A);break}this.cache.add(t,g)}return g}getDependencies(A){let e=this.cache.get(A);if(!e){const t=this,g=this.json[A+(A==="mesh"?"es":"s")]||[];e=Promise.all(g.map(function(I,o){return t.getDependency(A,o)})),this.cache.add(A,e)}return e}loadBuffer(A){const e=this.json.buffers[A],t=this.fileLoader;if(e.type&&e.type!=="arraybuffer")throw new Error("THREE.GLTFLoader: "+e.type+" buffer type is not supported.");if(e.uri===void 0&&A===0)return Promise.resolve(this.extensions[Oe.KHR_BINARY_GLTF].body);const g=this.options;return new Promise(function(I,o){t.load(YC.resolveURL(e.uri,g.path),I,void 0,function(){o(new Error('THREE.GLTFLoader: Failed to load buffer "'+e.uri+'".'))})})}loadBufferView(A){const e=this.json.bufferViews[A];return this.getDependency("buffer",e.buffer).then(function(t){const g=e.byteLength||0,I=e.byteOffset||0;return t.slice(I,I+g)})}loadAccessor(A){const e=this,t=this.json,g=this.json.accessors[A];if(g.bufferView===void 0&&g.sparse===void 0){const o=g0[g.type],C=UQ[g.componentType],s=g.normalized===!0,n=new C(g.count*o);return Promise.resolve(new Ce(n,o,s))}const I=[];return g.bufferView!==void 0?I.push(this.getDependency("bufferView",g.bufferView)):I.push(null),g.sparse!==void 0&&(I.push(this.getDependency("bufferView",g.sparse.indices.bufferView)),I.push(this.getDependency("bufferView",g.sparse.values.bufferView))),Promise.all(I).then(function(o){const C=o[0],s=g0[g.type],n=UQ[g.componentType],a=n.BYTES_PER_ELEMENT,B=a*s,Q=g.byteOffset||0,E=g.bufferView!==void 0?t.bufferViews[g.bufferView].byteStride:void 0,c=g.normalized===!0;let h,l;if(E&&E!==B){const d=Math.floor(Q/E),D="InterleavedBuffer:"+g.bufferView+":"+g.componentType+":"+d+":"+g.count;let u=e.cache.get(D);u||(h=new n(C,d*E,g.count*E/a),u=new bl(h,E/a),e.cache.add(D,u)),l=new Xs(u,s,Q%E/a,c)}else C===null?h=new n(g.count*s):h=new n(C,Q,g.count*s),l=new Ce(h,s,c);if(g.sparse!==void 0){const d=g0.SCALAR,D=UQ[g.sparse.indices.componentType],u=g.sparse.indices.byteOffset||0,p=g.sparse.values.byteOffset||0,y=new D(o[1],u,g.sparse.count*d),k=new n(o[2],p,g.sparse.count*s);C!==null&&(l=new Ce(l.array.slice(),l.itemSize,l.normalized));for(let R=0,f=y.length;R<f;R++){const M=y[R];if(l.setX(M,k[R*s]),s>=2&&l.setY(M,k[R*s+1]),s>=3&&l.setZ(M,k[R*s+2]),s>=4&&l.setW(M,k[R*s+3]),s>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}}return l})}loadTexture(A){const e=this.json,t=this.options,I=e.textures[A].source,o=e.images[I];let C=this.textureLoader;if(o.uri){const s=t.manager.getHandler(o.uri);s!==null&&(C=s)}return this.loadTextureImage(A,I,C)}loadTextureImage(A,e,t){const g=this,I=this.json,o=I.textures[A],C=I.images[e],s=(C.uri||C.bufferView)+":"+o.sampler;if(this.textureCache[s])return this.textureCache[s];const n=this.loadImageSource(e,t).then(function(a){a.flipY=!1,a.name=o.name||C.name||"";const Q=(I.samplers||{})[o.sampler]||{};return a.magFilter=_K[Q.magFilter]||be,a.minFilter=_K[Q.minFilter]||sC,a.wrapS=OK[Q.wrapS]||SI,a.wrapT=OK[Q.wrapT]||SI,a.anisotropy=4,g.associations.set(a,{textures:A}),a}).catch(function(){return null});return this.textureCache[s]=n,n}loadImageSource(A,e){const t=this,g=this.json,I=this.options;if(this.sourceCache[A]!==void 0)return this.sourceCache[A].then(B=>B.clone());const o=g.images[A],C=self.URL||self.webkitURL;let s=o.uri||"",n=!1;if(o.bufferView!==void 0)s=t.getDependency("bufferView",o.bufferView).then(function(B){n=!0;const Q=new Blob([B],{type:o.mimeType});return s=C.createObjectURL(Q),s});else if(o.uri===void 0)throw new Error("THREE.GLTFLoader: Image "+A+" is missing URI and bufferView");const a=Promise.resolve(s).then(function(B){return new Promise(function(Q,E){let c=Q;e.isImageBitmapLoader===!0&&(c=function(h){const l=new Te(h);l.needsUpdate=!0,Q(l)}),e.load(YC.resolveURL(B,I.path),c,void 0,E)})}).then(function(B){return n===!0&&C.revokeObjectURL(s),B.userData.mimeType=o.mimeType||T9(o.uri),B}).catch(function(B){throw console.error("THREE.GLTFLoader: Couldn't load texture",s),B});return this.sourceCache[A]=a,a}assignTexture(A,e,t,g){const I=this;return this.getDependency("texture",t.index).then(function(o){if(t.texCoord!==void 0&&t.texCoord!=0&&!(e==="aoMap"&&t.texCoord==1)&&console.warn("THREE.GLTFLoader: Custom UV set "+t.texCoord+" for texture "+e+" not yet supported."),I.extensions[Oe.KHR_TEXTURE_TRANSFORM]){const C=t.extensions!==void 0?t.extensions[Oe.KHR_TEXTURE_TRANSFORM]:void 0;if(C){const s=I.associations.get(o);o=I.extensions[Oe.KHR_TEXTURE_TRANSFORM].extendTexture(o,C),I.associations.set(o,s)}}return g!==void 0&&o&&(o.encoding=g),A[e]=o,o})}assignFinalMaterial(A){const e=A.geometry;let t=A.material;const g=e.attributes.tangent===void 0,I=e.attributes.color!==void 0,o=e.attributes.normal===void 0;if(A.isPoints){const C="PointsMaterial:"+t.uuid;let s=this.cache.get(C);s||(s=new Vf,Je.prototype.copy.call(s,t),s.color.copy(t.color),s.map=t.map,s.sizeAttenuation=!1,this.cache.add(C,s)),t=s}else if(A.isLine){const C="LineBasicMaterial:"+t.uuid;let s=this.cache.get(C);s||(s=new ui,Je.prototype.copy.call(s,t),s.color.copy(t.color),this.cache.add(C,s)),t=s}if(g||I||o){let C="ClonedMaterial:"+t.uuid+":";g&&(C+="derivative-tangents:"),I&&(C+="vertex-colors:"),o&&(C+="flat-shading:");let s=this.cache.get(C);s||(s=t.clone(),I&&(s.vertexColors=!0),o&&(s.flatShading=!0),g&&(s.normalScale&&(s.normalScale.y*=-1),s.clearcoatNormalScale&&(s.clearcoatNormalScale.y*=-1)),this.cache.add(C,s),this.associations.set(s,this.associations.get(t))),t=s}t.aoMap&&e.attributes.uv2===void 0&&e.attributes.uv!==void 0&&e.setAttribute("uv2",e.attributes.uv),A.material=t}getMaterialType(){return $s}loadMaterial(A){const e=this,t=this.json,g=this.extensions,I=t.materials[A];let o;const C={},s=I.extensions||{},n=[];if(s[Oe.KHR_MATERIALS_UNLIT]){const B=g[Oe.KHR_MATERIALS_UNLIT];o=B.getMaterialType(),n.push(B.extendParams(C,I,e))}else{const B=I.pbrMetallicRoughness||{};if(C.color=new wA(1,1,1),C.opacity=1,Array.isArray(B.baseColorFactor)){const Q=B.baseColorFactor;C.color.fromArray(Q),C.opacity=Q[3]}B.baseColorTexture!==void 0&&n.push(e.assignTexture(C,"map",B.baseColorTexture,De)),C.metalness=B.metallicFactor!==void 0?B.metallicFactor:1,C.roughness=B.roughnessFactor!==void 0?B.roughnessFactor:1,B.metallicRoughnessTexture!==void 0&&(n.push(e.assignTexture(C,"metalnessMap",B.metallicRoughnessTexture)),n.push(e.assignTexture(C,"roughnessMap",B.metallicRoughnessTexture))),o=this._invokeOne(function(Q){return Q.getMaterialType&&Q.getMaterialType(A)}),n.push(Promise.all(this._invokeAll(function(Q){return Q.extendMaterialParams&&Q.extendMaterialParams(A,C)})))}I.doubleSided===!0&&(C.side=Nt);const a=I.alphaMode||I0.OPAQUE;if(a===I0.BLEND?(C.transparent=!0,C.depthWrite=!1):(C.transparent=!1,a===I0.MASK&&(C.alphaTest=I.alphaCutoff!==void 0?I.alphaCutoff:.5)),I.normalTexture!==void 0&&o!==wt&&(n.push(e.assignTexture(C,"normalMap",I.normalTexture)),C.normalScale=new P(1,1),I.normalTexture.scale!==void 0)){const B=I.normalTexture.scale;C.normalScale.set(B,B)}return I.occlusionTexture!==void 0&&o!==wt&&(n.push(e.assignTexture(C,"aoMap",I.occlusionTexture)),I.occlusionTexture.strength!==void 0&&(C.aoMapIntensity=I.occlusionTexture.strength)),I.emissiveFactor!==void 0&&o!==wt&&(C.emissive=new wA().fromArray(I.emissiveFactor)),I.emissiveTexture!==void 0&&o!==wt&&n.push(e.assignTexture(C,"emissiveMap",I.emissiveTexture,De)),Promise.all(n).then(function(){const B=new o(C);return I.name&&(B.name=I.name),Vn(B,I),e.associations.set(B,{materials:A}),I.extensions&&Gc(g,B,I),B})}createUniqueName(A){const e=He.sanitizeNodeName(A||"");let t=e;for(let g=1;this.nodeNamesUsed[t];++g)t=e+"_"+g;return this.nodeNamesUsed[t]=!0,t}loadGeometries(A){const e=this,t=this.extensions,g=this.primitiveCache;function I(C){return t[Oe.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(C,e).then(function(s){return WK(s,C,e)})}const o=[];for(let C=0,s=A.length;C<s;C++){const n=A[C],a=Y9(n),B=g[a];if(B)o.push(B.promise);else{let Q;n.extensions&&n.extensions[Oe.KHR_DRACO_MESH_COMPRESSION]?Q=I(n):Q=WK(new ue,n,e),g[a]={primitive:n,promise:Q},o.push(Q)}}return Promise.all(o)}loadMesh(A){const e=this,t=this.json,g=this.extensions,I=t.meshes[A],o=I.primitives,C=[];for(let s=0,n=o.length;s<n;s++){const a=o[s].material===void 0?L9(this.cache):this.getDependency("material",o[s].material);C.push(a)}return C.push(e.loadGeometries(o)),Promise.all(C).then(function(s){const n=s.slice(0,s.length-1),a=s[s.length-1],B=[];for(let E=0,c=a.length;E<c;E++){const h=a[E],l=o[E];let d;const D=n[E];if(l.mode===ro.TRIANGLES||l.mode===ro.TRIANGLE_STRIP||l.mode===ro.TRIANGLE_FAN||l.mode===void 0)d=I.isSkinnedMesh===!0?new aE(h,D):new pA(h,D),d.isSkinnedMesh===!0&&!d.geometry.attributes.skinWeight.normalized&&d.normalizeSkinWeights(),l.mode===ro.TRIANGLE_STRIP?d.geometry=VK(d.geometry,qb):l.mode===ro.TRIANGLE_FAN&&(d.geometry=VK(d.geometry,rM));else if(l.mode===ro.LINES)d=new VI(h,D);else if(l.mode===ro.LINE_STRIP)d=new Ei(h,D);else if(l.mode===ro.LINE_LOOP)d=new yM(h,D);else if(l.mode===ro.POINTS)d=new SM(h,D);else throw new Error("THREE.GLTFLoader: Primitive mode unsupported: "+l.mode);Object.keys(d.geometry.morphAttributes).length>0&&x9(d,I),d.name=e.createUniqueName(I.name||"mesh_"+A),Vn(d,I),l.extensions&&Gc(g,d,l),e.assignFinalMaterial(d),B.push(d)}for(let E=0,c=B.length;E<c;E++)e.associations.set(B[E],{meshes:A,primitives:E});if(B.length===1)return B[0];const Q=new po;e.associations.set(Q,{meshes:A});for(let E=0,c=B.length;E<c;E++)Q.add(B[E]);return Q})}loadCamera(A){let e;const t=this.json.cameras[A],g=t[t.type];if(!g){console.warn("THREE.GLTFLoader: Missing camera parameters.");return}return t.type==="perspective"?e=new gt($g.radToDeg(g.yfov),g.aspectRatio||1,g.znear||1,g.zfar||2e6):t.type==="orthographic"&&(e=new zr(-g.xmag,g.xmag,g.ymag,-g.ymag,g.znear,g.zfar)),t.name&&(e.name=this.createUniqueName(t.name)),Vn(e,t),Promise.resolve(e)}loadSkin(A){const e=this.json.skins[A],t={joints:e.joints};return e.inverseBindMatrices===void 0?Promise.resolve(t):this.getDependency("accessor",e.inverseBindMatrices).then(function(g){return t.inverseBindMatrices=g,t})}loadAnimation(A){const e=this.json,t=this,g=e.animations[A],I=[],o=[],C=[],s=[],n=[];let a=0,B=g.channels.length;for(a=0,B=g.channels.length;a<B;a++){const Q=g.channels[a],E=g.samplers[Q.sampler],c=Q.target,h=g.parameters!==void 0?g.parameters[E.input]:E.input,l=g.parameters!==void 0?g.parameters[E.output]:E.output,d=t._invokeOne(function(D){return D.loadAnimationTargetFromChannel&&D.loadAnimationTargetFromChannel(Q)});I.push(d),o.push(this.getDependency("accessor",h)),C.push(this.getDependency("accessor",l)),s.push(E),n.push(c)}return Promise.all([Promise.all(I),Promise.all(o),Promise.all(C),Promise.all(s),Promise.all(n)]).then(function(Q){const E=Q[0],c=Q[1],h=Q[2],l=Q[3],d=Q[4],D=[];for(a=0,B=E.length;a<B;a++){const p=E[a],y=c[a],k=h[a],R=l[a],f=d[a];if(p===void 0)continue;p.updateMatrix&&(p.updateMatrix(),p.matrixAutoUpdate=!0);const M=t._invokeOne(function(U){return U.createAnimationTracks&&U.createAnimationTracks(p,y,k,R,f)});if(M)for(let U=0;U<M.length;U++)D.push(M[U])}const u=g.name?g.name:"animation_"+A;return new mo(u,void 0,D)})}createNodeMesh(A){const e=this.json,t=this,g=e.nodes[A];return g.mesh===void 0?null:t.getDependency("mesh",g.mesh).then(function(I){const o=t._getNodeRef(t.meshCache,g.mesh,I);return g.weights!==void 0&&o.traverse(function(C){if(C.isMesh)for(let s=0,n=g.weights.length;s<n;s++)C.morphTargetInfluences[s]=g.weights[s]}),o})}loadNode(A){const e=this.json,t=this.extensions,g=this,I=e.nodes[A],o=I.name?g.createUniqueName(I.name):"";return function(){const C=[],s=g._invokeOne(function(n){return n.createNodeMesh&&n.createNodeMesh(A)});return s&&C.push(s),I.camera!==void 0&&C.push(g.getDependency("camera",I.camera).then(function(n){return g._getNodeRef(g.cameraCache,I.camera,n)})),g._invokeAll(function(n){return n.createNodeAttachment&&n.createNodeAttachment(A)}).forEach(function(n){C.push(n)}),Promise.all(C)}().then(function(C){let s;if(I.isBone===!0?s=new Ll:C.length>1?s=new po:C.length===1?s=C[0]:s=new UA,s!==C[0])for(let n=0,a=C.length;n<a;n++)s.add(C[n]);if(I.name&&(s.userData.name=I.name,s.name=o),Vn(s,I),I.extensions&&Gc(t,s,I),I.matrix!==void 0){const n=new NA;n.fromArray(I.matrix),s.applyMatrix4(n)}else I.translation!==void 0&&s.position.fromArray(I.translation),I.rotation!==void 0&&s.quaternion.fromArray(I.rotation),I.scale!==void 0&&s.scale.fromArray(I.scale);return g.associations.has(s)||g.associations.set(s,{}),g.associations.get(s).nodes=A,s})}loadScene(A){const e=this.json,t=this.extensions,g=this.json.scenes[A],I=this,o=new po;g.name&&(o.name=I.createUniqueName(g.name)),Vn(o,g),g.extensions&&Gc(t,o,g);const C=g.nodes||[],s=[];for(let n=0,a=C.length;n<a;n++)s.push(NY(C[n],o,e,I));return Promise.all(s).then(function(){const n=a=>{const B=new Map;for(const[Q,E]of I.associations)(Q instanceof Je||Q instanceof Te)&&B.set(Q,E);return a.traverse(Q=>{const E=I.associations.get(Q);E!=null&&B.set(Q,E)}),B};return I.associations=n(o),o})}loadAnimationTargetFromChannel(A){const e=A.target,t=e.node!==void 0?e.node:e.id;return this.getDependency("node",t)}createAnimationTracks(A,e,t,g,I){const o=[],C=A.name?A.name:A.uuid,s=[];Ln[I.path]===Ln.weights?A.traverse(function(Q){Q.morphTargetInfluences&&s.push(Q.name?Q.name:Q.uuid)}):s.push(C);let n;switch(Ln[I.path]){case Ln.weights:n=ua;break;case Ln.rotation:n=XC;break;case Ln.position:case Ln.scale:default:switch(t.itemSize){case 1:n=ua;break;case 2:case 3:n=pa;break;case 4:n=Vl;break}break}const a=g.interpolation!==void 0?UY[g.interpolation]:Zs,B=FY(t);for(let Q=0,E=s.length;Q<E;Q++){const c=new n(s[Q]+"."+Ln[I.path],e.array,B,a);a==="CUBICSPLINE"&&EG(c),o.push(c)}return o}}function NY(i,A,e,t){const g=e.nodes[i];return t.getDependency("node",i).then(function(I){if(g.skin===void 0)return I;let o;return t.getDependency("skin",g.skin).then(function(C){o=C;const s=[];for(let n=0,a=o.joints.length;n<a;n++)s.push(t.getDependency("node",o.joints[n]));return Promise.all(s)}).then(function(C){return I.traverse(function(s){if(!s.isMesh)return;const n=[],a=[];for(let B=0,Q=C.length;B<Q;B++){const E=C[B];if(E){n.push(E);const c=new NA;o.inverseBindMatrices!==void 0&&c.fromArray(o.inverseBindMatrices.array,B*16),a.push(c)}else console.warn('THREE.GLTFLoader: Joint "%s" could not be found.',o.joints[B])}s.bind(new rE(n,a),s.matrixWorld)}),I})}).then(function(I){A.add(I);const o=[];if(g.children){const C=g.children;for(let s=0,n=C.length;s<n;s++){const a=C[s];o.push(NY(a,I,e,t))}}return Promise.all(o)})}function _9(i,A,e){const t=A.attributes,g=new Kg;if(t.POSITION!==void 0){const C=e.json.accessors[t.POSITION],s=C.min,n=C.max;if(s!==void 0&&n!==void 0){if(g.set(new S(s[0],s[1],s[2]),new S(n[0],n[1],n[2])),C.normalized){const a=QG(UQ[C.componentType]);g.min.multiplyScalar(a),g.max.multiplyScalar(a)}}else{console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");return}}else return;const I=A.targets;if(I!==void 0){const C=new S,s=new S;for(let n=0,a=I.length;n<a;n++){const B=I[n];if(B.POSITION!==void 0){const Q=e.json.accessors[B.POSITION],E=Q.min,c=Q.max;if(E!==void 0&&c!==void 0){if(s.setX(Math.max(Math.abs(E[0]),Math.abs(c[0]))),s.setY(Math.max(Math.abs(E[1]),Math.abs(c[1]))),s.setZ(Math.max(Math.abs(E[2]),Math.abs(c[2]))),Q.normalized){const h=QG(UQ[Q.componentType]);s.multiplyScalar(h)}C.max(s)}else console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.")}}g.expandByVector(C)}i.boundingBox=g;const o=new nC;g.getCenter(o.center),o.radius=g.min.distanceTo(g.max)/2,i.boundingSphere=o}function WK(i,A,e){const t=A.attributes,g=[];function I(o,C){return e.getDependency("accessor",o).then(function(s){i.setAttribute(C,s)})}for(const o in t){const C=BG[o]||o.toLowerCase();C in i.attributes||g.push(I(t[o],C))}if(A.indices!==void 0&&!i.index){const o=e.getDependency("accessor",A.indices).then(function(C){i.setIndex(C)});g.push(o)}return Vn(i,A),_9(i,A,e),Promise.all(g).then(function(){return A.targets!==void 0?v9(i,A.targets,e):i})}function VK(i,A){let e=i.getIndex();if(e===null){const o=[],C=i.getAttribute("position");if(C!==void 0){for(let s=0;s<C.count;s++)o.push(s);i.setIndex(o),e=i.getIndex()}else return console.error("THREE.GLTFLoader.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),i}const t=e.count-2,g=[];if(A===rM)for(let o=1;o<=t;o++)g.push(e.getX(0)),g.push(e.getX(o)),g.push(e.getX(o+1));else for(let o=0;o<t;o++)o%2===0?(g.push(e.getX(o)),g.push(e.getX(o+1)),g.push(e.getX(o+2))):(g.push(e.getX(o+2)),g.push(e.getX(o+1)),g.push(e.getX(o)));g.length/3!==t&&console.error("THREE.GLTFLoader.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");const I=i.clone();return I.setIndex(g),I}var KY=(i=>(i[i.INT=5124]="INT",i[i.FLOAT=5126]="FLOAT",i[i.FLOAT_VEC2=35664]="FLOAT_VEC2",i[i.FLOAT_VEC3=35665]="FLOAT_VEC3",i[i.FLOAT_VEC4=35666]="FLOAT_VEC4",i[i.INT_VEC2=35667]="INT_VEC2",i[i.INT_VEC3=35668]="INT_VEC3",i[i.INT_VEC4=35669]="INT_VEC4",i[i.BOOL=35670]="BOOL",i[i.BOOL_VEC2=35671]="BOOL_VEC2",i[i.BOOL_VEC3=35672]="BOOL_VEC3",i[i.BOOL_VEC4=35673]="BOOL_VEC4",i[i.FLOAT_MAT2=35674]="FLOAT_MAT2",i[i.FLOAT_MAT3=35675]="FLOAT_MAT3",i[i.FLOAT_MAT4=35676]="FLOAT_MAT4",i[i.SAMPLER_2D=35678]="SAMPLER_2D",i[i.SAMPLER_3D=35680]="SAMPLER_3D",i[i.SAMPLER_CUBE=35681]="SAMPLER_CUBE",i[i.UNKNOWN=0]="UNKNOWN",i))(KY||{});const Ss=aA("debugcustomshader"),OB="NEEDLE_techniques_webgl";class O9{constructor(){r(this,"objectToWorldMatrix",new NA);r(this,"worldToObjectMatrix",new NA);r(this,"objectToWorld",new Array);r(this,"worldToObject",new Array)}updateFrom(A){this.objectToWorldMatrix.copy(A.matrixWorld),_D(this.objectToWorldMatrix,this.objectToWorld),this.worldToObjectMatrix.copy(A.matrixWorld).invert(),_D(this.worldToObjectMatrix,this.worldToObject)}}const vt=class extends Xf{constructor(e,...t){super(...t);r(this,"identifier");r(this,"onBeforeRenderSceneCallback",this.onBeforeRenderScene.bind(this));r(this,"_sphericalHarmonicsName","unity_SpecCube0");r(this,"_objToWorldName","hlslcc_mtx4x4unity_ObjectToWorld");r(this,"_worldToObjectName","hlslcc_mtx4x4unity_WorldToObject");r(this,"_viewProjectionName","hlslcc_mtx4x4unity_MatrixVP");r(this,"_viewMatrixName","hlslcc_mtx4x4unity_MatrixV");r(this,"_rendererData",new O9);this.identifier=e,Ss&&console.log(this),this.type="NEEDLE_CUSTOM_SHADER",this.uniforms[this._objToWorldName]||(this.uniforms[this._objToWorldName]={value:[]}),this.uniforms[this._worldToObjectName]||(this.uniforms[this._worldToObjectName]={value:[]}),this.uniforms[this._viewProjectionName]||(this.uniforms[this._viewProjectionName]={value:[]}),this.uniforms[this._sphericalHarmonicsName]&&this.waitForLighting(),(this.depthTextureUniform||this.opaqueTextureUniform)&&de.Current.pre_render_callbacks.push(this.onBeforeRenderSceneCallback)}clone(){const e=super.clone();return JY(e),e}dispose(){super.dispose();const e=de.Current.pre_render_callbacks.indexOf(this.onBeforeRenderSceneCallback);e>=0&&de.Current.pre_render_callbacks.splice(e,1)}async waitForLighting(){const e=de.Current;if(!e){console.error("Missing context");return}const t=await e.sceneLighting.internalGetSceneLightingData(this.identifier);if(!t||!t.array){console.warn("Missing lighting data for custom shader, getSceneLightingData did not return anything");return}Ss&&console.log(t);const g=t.array,I=t.texture;this.uniforms.unity_SpecCube0={value:I},tY(this.uniforms,g);const o=Math.sqrt(Math.PI*.5);this.uniforms.unity_SpecCube0_HDR={value:new se(o,o,o,o)},Ss&&console.log("Set environment lighting",this.uniforms)}get depthTextureUniform(){if(this.uniforms)return this.uniforms._CameraDepthTexture}get opaqueTextureUniform(){if(this.uniforms)return this.uniforms._CameraOpaqueTexture}onBeforeRenderScene(){this.opaqueTextureUniform&&de.Current.setRequireColor(!0),this.depthTextureUniform&&de.Current.setRequireDepth(!0)}onBeforeRender(e,t,g,I,o,C){I.attributes.tangent||I.computeTangents(),this.onUpdateUniforms(g,o)}onUpdateUniforms(e,t){const g=de.Current;e&&(vt.viewProjection&&this.uniforms[this._viewProjectionName]&&(vt.viewProjection.copy(e.projectionMatrix).multiply(e.matrixWorldInverse),_D(vt.viewProjection,vt._viewProjectionValues)),vt.viewMatrix&&this.uniforms[this._viewMatrixName]&&(vt.viewMatrix.copy(e.matrixWorldInverse),_D(vt.viewMatrix,vt._viewMatrixValues)),this.uniforms[vt._worldSpaceCameraPosName]&&vt._worldSpaceCameraPos.setFromMatrixPosition(e.matrixWorld)),this.uniforms._TimeParameters?this.uniforms._TimeParameters.value=g.sceneLighting.timeVec4:this.uniforms._Time&&(this.uniforms._Time.value=g.sceneLighting.timeVec4);const I=g.mainLight;if(I){const s=ye(I.gameObject,vt._mainLightPosition);this.uniforms._MainLightPosition={value:s.normalize()},vt._mainLightColor.set(I.color.r,I.color.g,I.color.b,0),this.uniforms._MainLightColor={value:vt._mainLightColor};const n=I.intensity;vt._lightData.z=n,this.uniforms.unity_LightData={value:vt._lightData}}if(e&&(vt.viewProjection&&this.uniforms[this._viewProjectionName]&&(this.uniforms[this._viewProjectionName].value=vt._viewProjectionValues),vt.viewMatrix&&this.uniforms[this._viewMatrixName]&&(this.uniforms[this._viewMatrixName].value=vt._viewMatrixValues),this.uniforms[vt._worldSpaceCameraPosName]&&(this.uniforms[vt._worldSpaceCameraPosName]={value:vt._worldSpaceCameraPos}),g.mainCameraComponent)){if(this.uniforms._ProjectionParams){const s=this.uniforms._ProjectionParams.value;s.x=1,s.y=g.mainCameraComponent.nearClipPlane,s.z=g.mainCameraComponent.farClipPlane,s.w=1/s.z,this.uniforms._ProjectionParams.value=s}if(this.uniforms._ZBufferParams){const s=this.uniforms._ZBufferParams.value,n=g.mainCameraComponent;s.x=1-n.farClipPlane/n.nearClipPlane,s.y=n.farClipPlane/n.nearClipPlane,s.z=s.x/n.farClipPlane,s.w=s.y/n.farClipPlane,this.uniforms._ZBufferParams.value=s}if(this.uniforms._ScreenParams){const s=this.uniforms._ScreenParams.value;s.x=g.domWidth,s.y=g.domHeight,s.z=1+1/s.x,s.w=1+1/s.y,this.uniforms._ScreenParams.value=s}}const o=this.depthTextureUniform;o&&(o.value=g.depthTexture);const C=this.opaqueTextureUniform;if(C&&(C.value=g.opaqueColorTexture),t){const s=this._rendererData;s.updateFrom(t),this.uniforms[this._worldToObjectName].value=s.worldToObject,this.uniforms[this._objToWorldName].value=s.objectToWorld}this.uniformsNeedUpdate=!0}};let NI=vt;r(NI,"viewProjection",new NA),r(NI,"_viewProjectionValues",[]),r(NI,"viewMatrix",new NA),r(NI,"_viewMatrixValues",[]),r(NI,"_worldSpaceCameraPosName","_WorldSpaceCameraPos"),r(NI,"_worldSpaceCameraPos",new S),r(NI,"_mainLightColor",new se),r(NI,"_mainLightPosition",new S),r(NI,"_lightData",new se);class P9{constructor(A,e){r(this,"parser");r(this,"identifier");this.parser=A,this.identifier=e}get name(){return OB}loadMaterial(A){const e=this.parser.json.materials[A];if(!e)return Ss&&console.log(A,this.parser.json.materials),null;if(!e.extensions||!e.extensions[OB])return Ss&&console.log("material "+A+" does not use NEEDLE_techniques_webgl"),null;const t=e.extensions[OB].technique;if(t<0)return null;const g=this.parser.json.extensions[OB];if(!g)return null;Ss&&console.log(g);const I=g.techniques[t];return I?new Promise(async(o,C)=>{var d,D,u;const s=await y5(g,I.program),n=s==null?void 0:s.fragmentShader,a=s==null?void 0:s.vertexShader;if(!n||!a)return C();Ss&&console.log("loadMaterial",e,s);const B={},Q=I.uniforms;a.includes("_Time")&&(B._Time={value:new se(0,0,0,0)});for(const p in Q){const y=p;switch(y){case"_TimeParameters":const k=new se;B[y]={value:k};break;case"hlslcc_mtx4x4unity_MatrixV":case"hlslcc_mtx4x4unity_MatrixVP":B[y]={value:[]};break;case"_MainLightPosition":case"_MainLightColor":case"_WorldSpaceCameraPos":B[y]={value:[0,0,0,1]};break;case"unity_OrthoParams":break;case"unity_SpecCube0":B[y]={value:null};break;default:case"_ScreenParams":case"_ZBufferParams":case"_ProjectionParams":B[y]={value:[0,0,0,0]};break;case"_CameraOpaqueTexture":case"_CameraDepthTexture":B[y]={value:null};break}}let E=!1;if(e.extensions&&e.extensions[OB]){const p=e.extensions[OB];if(p.technique===t){Ss&&console.log(e.name,"Material Properties",p);for(const y in p.values){const k=p.values[y];if(typeof k=="string"){if(k.startsWith("/textures/")){const R=k.substring(10),f=Number.parseInt(R);if(f>=0){const M=await this.parser.getDependency("texture",f);M&&(M.encoding=di,M.needsUpdate=!0),B[y]={value:M};continue}}switch(y){case"alphaMode":k==="BLEND"&&(E=!0);continue}}if(Array.isArray(k)&&k.length===4){B[y]={value:new se(k[0],k[1],k[2],k[3])};continue}B[y]={value:k}}}}const c=new NI(this.identifier,{name:e.name??"",uniforms:B,vertexShader:a,fragmentShader:n,lights:!1});switch((d=B._Cull)==null?void 0:d.value){case 0:c.side=Nt;break;case 1:c.side=Yi;break;case 2:c.side=iI;break;default:c.side=iI;break}switch((D=B._ZTest)==null?void 0:D.value){case 3:c.depthTest=!0,c.depthFunc=vQ;break;case 6:c.depthTest=!0,c.depthFunc=Ul;break;case 2:c.depthTest=!0,c.depthFunc=bh;break;case 4:c.depthTest=!0,c.depthFunc=LQ;break;case 5:c.depthTest=!0,c.depthFunc=qf;break;case 7:c.depthTest=!0,c.depthFunc=Jf;break;case 8:c.depthTest=!1,c.depthFunc=Kf;break}c.transparent=E,E&&(c.depthWrite=!1),tY(B),c.onUpdateUniforms();for(const p in Q){const y=p,k=Q[p].type;if(((u=B[y])==null?void 0:u.value)===void 0)switch(k){case KY.SAMPLER_2D:B[y]={value:D5},console.warn("Missing/unassigned texture, fallback to white: "+y);break;default:y==="unity_OrthoParams"||console.warn("TODO: EXPECTED UNIFORM / fallback NOT SET: "+y,Q[p]);break}}Ss&&console.log(c.uuid,B),JY(c),o(c)}):null}}function JY(i){if(i.uniforms)for(const A in i.uniforms)Object.getOwnPropertyDescriptor(i,A)||Object.defineProperty(i,A,{get:()=>i.uniforms[A].value,set:e=>{i.uniforms[A].value=e,i.needsUpdate=!0}})}const vn=Ng,ju="$___Export_Components",W9="NEEDLE_components";var msA;class V9{constructor(){r(this,msA)}}msA=Er;class j9{constructor(A,e,t){r(this,"node");r(this,"nodeIndex");r(this,"nodeDef");this.node=A,this.nodeIndex=e,this.nodeDef=t}}class qY{constructor(){r(this,"parser");r(this,"nodeToObjectMap",{});r(this,"exportContext");r(this,"objectToNodeMap",{});r(this,"context");r(this,"writer")}get name(){return W9}registerExport(A){A.register(e=>{if("serializeUserData"in e){const t=e.serializeUserData.bind(e);this.writer=e,e.serializeUserData=(g,I)=>{try{this.serializeUserData(g,I),t(g,I)}finally{this.afterSerializeUserData(g,I)}}}return this})}beforeParse(){this.exportContext={},this.objectToNodeMap={}}serializeUserData(A,e){var g;const t=(g=A.userData)==null?void 0:g.components;!t||t.length<=0||(delete A.userData.components,A[ju]=t)}afterSerializeUserData(A,e){if(A.type==="Scene"&&vn&&console.log("DONE",JSON.stringify(e)),A[ju]===void 0)return;const t=A[ju];delete A[ju],t!==null&&(A.userData.components=t)}writeNode(A,e){let t=this.writer.json.nodes.length;console.log(A.name,t,A.uuid);const g=new j9(A,t,e);this.exportContext[t]=g,this.objectToNodeMap[A.uuid]=t}afterParse(A){var e;vn&&console.log("AFTER",A);for(const t in this.exportContext){const g=this.exportContext[t],I=g.node,o=g.nodeDef,C=g.nodeIndex,s=(e=I.userData)==null?void 0:e.components;if(!s||s.length<=0)continue;const n=new V9;o.extensions=o.extensions||{},o.extensions[this.name]=n,this.context.object=I,this.context.nodeId=C,this.context.objectToNode=this.objectToNodeMap;const a=[];for(const B of s){this.context.target=B;const Q=IC().writeBuiltinComponentData(B,this.context);Q!==null&&a.push(Q)}a.length>0&&(n[Er]=a,vn&&console.log("DID WRITE",I,"nodeIndex",C,a))}}beforeRoot(){return vn&&console.log("BEGIN LOAD"),this.nodeToObjectMap={},null}async afterRoot(A){const e=A.parser,t=e==null?void 0:e.extensions;if(!t)return;const g=t[this.name];vn&&console.log("After root",A,this.parser,t);const I=[];if(g===!0){const o=e.json.nodes;for(let C=0;C<o.length;C++){const s=await e.getDependency("node",C);this.nodeToObjectMap[C]=s}for(let C=0;C<o.length;C++){const s=o[C],n=C,a=s.extensions;if(!a)continue;const B=a[this.name];if(!B)continue;vn&&console.log("NODE",s);const Q=this.nodeToObjectMap[n];if(!Q){console.error("Could not find object for node index: "+n,s,e);continue}yw(Q),I.push(this.createComponents(Q,B))}}await Promise.all(I)}async createComponents(A,e){if(!e)return;const t=e[Er];if(t){const g=new Array;vn&&console.log(A.name,t);for(const I in t){const o=t[I];vn&&console.log("Serialized data",JSON.parse(JSON.stringify(o))),o&&this.parser&&g.push(jM(this.parser,o).catch(C=>console.error(`Error while resolving references (see console for details)
|
|
3963
3963
|
`,C,A,o))),A.userData=A.userData||{},A.userData[Er]=A.userData[Er]||[],A.userData[Er].push(o)}await Promise.all(g).catch(I=>{console.error("Error while loading components",I)})}}}/*!
|
|
@@ -270,7 +270,7 @@ function createLicenseStyle() {
|
|
|
270
270
|
}
|
|
271
271
|
async function sendUsageMessageToAnalyticsBackend() {
|
|
272
272
|
try {
|
|
273
|
-
const analyticsBackendUrlForward = "https://urls.needle.tools/analytics-endpoint";
|
|
273
|
+
const analyticsBackendUrlForward = "https://urls.needle.tools/analytics-endpoint-v2";
|
|
274
274
|
const res = await fetch(analyticsBackendUrlForward);
|
|
275
275
|
let analyticsUrl = await res.text();
|
|
276
276
|
if (analyticsUrl) {
|
|
@@ -278,11 +278,11 @@ async function sendUsageMessageToAnalyticsBackend() {
|
|
|
278
278
|
console.log("Analytics backend url", analyticsUrl);
|
|
279
279
|
// analyticsUrl = "http://localhost:3000/";
|
|
280
280
|
const currentUrl = window.location.href;
|
|
281
|
-
let endpoint = "api/
|
|
281
|
+
let endpoint = "api/v2/new/request";
|
|
282
282
|
if (!analyticsUrl.endsWith("/"))
|
|
283
283
|
endpoint = "/" + endpoint;
|
|
284
284
|
const license = NEEDLE_ENGINE_LICENSE_TYPE;
|
|
285
|
-
const finalUrl = `${analyticsUrl}${endpoint}?license=${license}&url=${encodeURIComponent(currentUrl)}&hostname=${encodeURIComponent(window.location.hostname)}&pathname=${encodeURIComponent(window.location.pathname)}&search=${encodeURIComponent(window.location.search)}&hash=${encodeURIComponent(window.location.hash)}&version=${VERSION}
|
|
285
|
+
const finalUrl = `${analyticsUrl}${endpoint}?license=${license}&url=${encodeURIComponent(currentUrl)}&hostname=${encodeURIComponent(window.location.hostname)}&pathname=${encodeURIComponent(window.location.pathname)}&search=${encodeURIComponent(window.location.search)}&hash=${encodeURIComponent(window.location.hash)}&version=${VERSION}&generator=${GENERATOR}`;
|
|
286
286
|
if (debug)
|
|
287
287
|
console.log("Sending non-commercial usage message to analytics backend", finalUrl);
|
|
288
288
|
fetch(finalUrl, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine_license.js","sourceRoot":"","sources":["../../src/engine/engine_license.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"engine_license.js","sourceRoot":"","sources":["../../src/engine/engine_license.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@needle-tools/engine",
|
|
3
|
-
"version": "3.6.
|
|
3
|
+
"version": "3.6.7",
|
|
4
4
|
"description": "Needle Engine is a web-based runtime for 3D apps. It runs on your machine for development with great integrations into editors like Unity or Blender - and can be deployed onto any device! It is flexible, extensible and networking and XR are built-in",
|
|
5
5
|
"main": "dist/needle-engine.umd.cjs",
|
|
6
6
|
"type": "module",
|
|
@@ -286,7 +286,7 @@ function createLicenseStyle() {
|
|
|
286
286
|
|
|
287
287
|
async function sendUsageMessageToAnalyticsBackend() {
|
|
288
288
|
try {
|
|
289
|
-
const analyticsBackendUrlForward = "https://urls.needle.tools/analytics-endpoint";
|
|
289
|
+
const analyticsBackendUrlForward = "https://urls.needle.tools/analytics-endpoint-v2";
|
|
290
290
|
const res = await fetch(analyticsBackendUrlForward);
|
|
291
291
|
let analyticsUrl = await res.text();
|
|
292
292
|
if (analyticsUrl) {
|
|
@@ -296,10 +296,10 @@ async function sendUsageMessageToAnalyticsBackend() {
|
|
|
296
296
|
|
|
297
297
|
const currentUrl = window.location.href;
|
|
298
298
|
|
|
299
|
-
let endpoint = "api/
|
|
299
|
+
let endpoint = "api/v2/new/request";
|
|
300
300
|
if (!analyticsUrl.endsWith("/")) endpoint = "/" + endpoint;
|
|
301
301
|
const license = NEEDLE_ENGINE_LICENSE_TYPE;
|
|
302
|
-
const finalUrl = `${analyticsUrl}${endpoint}?license=${license}&url=${encodeURIComponent(currentUrl)}&hostname=${encodeURIComponent(window.location.hostname)}&pathname=${encodeURIComponent(window.location.pathname)}&search=${encodeURIComponent(window.location.search)}&hash=${encodeURIComponent(window.location.hash)}&version=${VERSION}
|
|
302
|
+
const finalUrl = `${analyticsUrl}${endpoint}?license=${license}&url=${encodeURIComponent(currentUrl)}&hostname=${encodeURIComponent(window.location.hostname)}&pathname=${encodeURIComponent(window.location.pathname)}&search=${encodeURIComponent(window.location.search)}&hash=${encodeURIComponent(window.location.hash)}&version=${VERSION}&generator=${GENERATOR}`;
|
|
303
303
|
if (debug) console.log("Sending non-commercial usage message to analytics backend", finalUrl);
|
|
304
304
|
|
|
305
305
|
|