aptechka 0.5.30 → 0.5.32

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/lib/en3/index.cjs CHANGED
@@ -1,13 +1,200 @@
1
- "use strict";var ht=Object.defineProperty,lt=Object.defineProperties;var dt=Object.getOwnPropertyDescriptors;var xe=Object.getOwnPropertySymbols;var ut=Object.prototype.hasOwnProperty,ft=Object.prototype.propertyIsEnumerable;var Ne=(C,A,e)=>A in C?ht(C,A,{enumerable:!0,configurable:!0,writable:!0,value:e}):C[A]=e,AA=(C,A)=>{for(var e in A||(A={}))ut.call(A,e)&&Ne(C,e,A[e]);if(xe)for(var e of xe(A))ft.call(A,e)&&Ne(C,e,A[e]);return C},oe=(C,A)=>lt(C,dt(A));var Ie=(C,A,e)=>{if(!A.has(C))throw TypeError("Cannot "+e)};var E=(C,A,e)=>(Ie(C,A,"read from private field"),e?e.call(C):A.get(C)),G=(C,A,e)=>{if(A.has(C))throw TypeError("Cannot add the same private member more than once");A instanceof WeakSet?A.add(C):A.set(C,e)},R=(C,A,e,s)=>(Ie(C,A,"write to private field"),s?s.call(C,e):A.set(C,e),e);var re=(C,A,e)=>(Ie(C,A,"access private method"),e);var uA=(C,A,e)=>new Promise((s,t)=>{var n=o=>{try{r(e.next(o))}catch(a){t(a)}},i=o=>{try{r(e.throw(o))}catch(a){t(a)}},r=o=>o.done?s(o.value):Promise.resolve(o.value).then(n,i);r((e=e.apply(C,A)).next())});Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const NA=require("../order/index.cjs"),yA=require("../window-resizer/index.cjs"),LA=require("../ticker/index.cjs"),je=require("../dom-JBOkFLTh.cjs"),B=require("three"),pe=require("../layout-box/index.cjs"),ge=require("../loading/index.cjs"),Dt=require("../SourceManager-vSlsMKUE.cjs"),ke=require("../Store-C-1ruEIm.cjs");function kA(C){const A=e=>{e.dispose();for(const s of Object.keys(e)){const t=e[s];t&&typeof t=="object"&&"minFilter"in t&&t.dispose()}};C.traverse(e=>{if(e instanceof B.Mesh){if(e.geometry.dispose(),!Array.isArray(e.material)&&e.material.isMaterial)A(e.material);else if(Array.isArray(e.material))for(const s of e.material)A(s)}})}var bA,T,EA,sA,nA,DA,iA,oA;class me{constructor(A,e){G(this,bA,void 0);G(this,T,void 0);G(this,EA,void 0);G(this,sA,void 0);G(this,nA,void 0);G(this,DA,void 0);G(this,iA,void 0);G(this,oA,void 0);R(this,bA,A),R(this,T,(e==null?void 0:e.cameraType)==="orthographic"?new B.OrthographicCamera:new B.PerspectiveCamera),R(this,EA,new B.Scene),R(this,sA,[]),R(this,nA,(e==null?void 0:e.cameraDistance)||1e3),E(this,T).near=(e==null?void 0:e.cameraNear)||1,E(this,T).far=(e==null?void 0:e.cameraFar)||11e3,R(this,DA,(e==null?void 0:e.cameraFov)||"auto"),R(this,iA,je.getElement(e==null?void 0:e.sizeElement)||document.documentElement),this.beforeRenderCallback=e==null?void 0:e.beforeRender,R(this,oA,new pe.LayoutBox(E(this,iA))),E(this,oA).onScale(()=>{this.resize()})}get name(){return E(this,bA)}get camera(){return E(this,T)}get scene(){return E(this,EA)}get box(){return E(this,oA)}get cameraDistance(){return E(this,nA)}set cameraDistance(A){R(this,nA,A),this.resize()}get sizeElement(){return E(this,iA)}get isClipped(){return E(this,iA)!==w.containerElement}resize(){const{width:A,height:e}=E(this,oA);E(this,T).position.z=E(this,nA),E(this,T)instanceof B.PerspectiveCamera?(E(this,T).aspect=A/e,E(this,T).fov=E(this,DA)==="auto"?2*Math.atan(e/2/E(this,nA))*(180/Math.PI):E(this,DA)):E(this,T)instanceof B.OrthographicCamera&&(E(this,T).left=A/-2,E(this,T).right=A/2,E(this,T).top=e/2,E(this,T).bottom=e/-2),E(this,T).updateProjectionMatrix()}destroy(){E(this,sA).forEach(A=>{A.userData.box.destroy()}),E(this,EA).clear(),kA(E(this,EA)),w.destroyView(this.name),E(this,oA).destroy()}attachToHTMLElement(A,e,s){const t=new pe.LayoutBox(A,oe(AA({},s),{containerElement:E(this,iA),cartesian:!0,scrollStep:!this.isClipped}));return t.bindObject(e),e.userData.box=t,E(this,sA).push(e),e}detachFromHTMLElement(A){R(this,sA,E(this,sA).filter(e=>e===A?(A.userData.box.destroy(),!1):!0))}add(...A){const e=A[0],s=A[1],t=A[2];return this.scene.add(e),s?this.attachToHTMLElement(s,e,t):e}remove(A,e){this.scene.remove(A),e&&this.detachFromHTMLElement(A)}}bA=new WeakMap,T=new WeakMap,EA=new WeakMap,sA=new WeakMap,nA=new WeakMap,DA=new WeakMap,iA=new WeakMap,oA=new WeakMap;const O=new Map;var ae,W,y,x,FA,GA,RA,KA,cA,OA,_A,PA;class Ft{constructor(){G(this,ae,`https://unpkg.com/three@0.${B.REVISION}.x`);G(this,W,null);G(this,y,null);G(this,x,new Map);G(this,FA,0);G(this,GA,0);G(this,RA,0);G(this,KA,2);G(this,cA,!1);G(this,OA,!1);G(this,_A,()=>{var A;R(this,FA,E(this,W).clientWidth),R(this,GA,E(this,W).clientHeight),R(this,RA,Math.min(E(this,KA),devicePixelRatio||1)),E(this,y).setPixelRatio(E(this,RA)),E(this,y).setSize(E(this,FA),E(this,GA)),(A=this.onResize)==null||A.call(this)});G(this,PA,()=>{E(this,y).setRenderTarget(null),E(this,x).forEach(A=>{this.render(A)})})}get CDNVersion(){return E(this,ae)}get containerElement(){return E(this,W)}get webglRenderer(){return E(this,y)}get views(){return E(this,x)}get view(){return this.getView("default")}get width(){return E(this,FA)}get height(){return E(this,GA)}get pixelRatio(){return E(this,RA)}get cacheAssets(){return E(this,OA)}setup(A){if(E(this,cA)){console.warn("[en3.setup]: You are trying to setup en3 again.");return}R(this,W,je.getElement(A==null?void 0:A.containerElement)||document.body),R(this,KA,(A==null?void 0:A.maxPixelRatio)||2),R(this,y,new B.WebGLRenderer(A==null?void 0:A.webGLRendererParameters)),E(this,y).domElement.style.cssText=`
1
+ "use strict";var Fs=Object.defineProperty,Gs=Object.defineProperties;var ms=Object.getOwnPropertyDescriptors;var bt=Object.getOwnPropertySymbols;var Rs=Object.prototype.hasOwnProperty,ws=Object.prototype.propertyIsEnumerable;var Nt=(C,A,e)=>A in C?Fs(C,A,{enumerable:!0,configurable:!0,writable:!0,value:e}):C[A]=e,eA=(C,A)=>{for(var e in A||(A={}))Rs.call(A,e)&&Nt(C,e,A[e]);if(bt)for(var e of bt(A))ws.call(A,e)&&Nt(C,e,A[e]);return C},Fe=(C,A)=>Gs(C,ms(A));var at=(C,A,e)=>{if(!A.has(C))throw TypeError("Cannot "+e)};var o=(C,A,e)=>(at(C,A,"read from private field"),e?e.call(C):A.get(C)),d=(C,A,e)=>{if(A.has(C))throw TypeError("Cannot add the same private member more than once");A instanceof WeakSet?A.add(C):A.set(C,e)},D=(C,A,e,s)=>(at(C,A,"write to private field"),s?s.call(C,e):A.set(C,e),e);var tA=(C,A,e)=>(at(C,A,"access private method"),e);var YA=(C,A,e)=>new Promise((s,t)=>{var n=r=>{try{a(e.next(r))}catch(I){t(I)}},i=r=>{try{a(e.throw(r))}catch(I){t(I)}},a=r=>r.done?s(r.value):Promise.resolve(r.value).then(n,i);a((e=e.apply(C,A)).next())});Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const we=require("../order/index.cjs"),wA=require("../window-resizer/index.cjs"),yA=require("../ticker/index.cjs"),Zt=require("../dom-JBOkFLTh.cjs"),B=require("three"),mt=require("../layout-box/index.cjs"),Ct=require("../loading/index.cjs"),ys=require("../SourceManager-vSlsMKUE.cjs"),J=require("../Store-C-1ruEIm.cjs"),Ms=require("../easings-DsS5-Kqc.cjs"),Ss=require("../function-MthRj-GJ.cjs"),Ls=require("../Tweened-Bv9mgPvl.cjs"),Ts=require("../Viewport-DMB0dO-s.cjs"),zt=require("../custom-element/index.cjs");function xs(C){const A=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(C){for(const e in C)if(e!=="default"){const s=Object.getOwnPropertyDescriptor(C,e);Object.defineProperty(A,e,s.get?s:{enumerable:!0,get:()=>C[e]})}}return A.default=C,Object.freeze(A)}const It=xs(B);function vA(C){const A=e=>{e.dispose();for(const s of Object.keys(e)){const t=e[s];t&&typeof t=="object"&&"minFilter"in t&&t.dispose()}};C.traverse(e=>{if(e instanceof B.Mesh){if(e.geometry.dispose(),!Array.isArray(e.material)&&e.material.isMaterial)A(e.material);else if(Array.isArray(e.material))for(const s of e.material)A(s)}})}var ye,H,TA,EA,QA,XA,lA,hA;class Rt{constructor(A,e){d(this,ye,void 0);d(this,H,void 0);d(this,TA,void 0);d(this,EA,void 0);d(this,QA,void 0);d(this,XA,void 0);d(this,lA,void 0);d(this,hA,void 0);D(this,ye,A),D(this,H,(e==null?void 0:e.cameraType)==="orthographic"?new B.OrthographicCamera:new B.PerspectiveCamera),D(this,TA,new B.Scene),D(this,EA,[]),D(this,QA,(e==null?void 0:e.cameraDistance)||1e3),o(this,H).near=(e==null?void 0:e.cameraNear)||1,o(this,H).far=(e==null?void 0:e.cameraFar)||11e3,D(this,XA,(e==null?void 0:e.cameraFov)||"auto"),D(this,lA,Zt.getElement(e==null?void 0:e.sizeElement)||document.documentElement),this.beforeRenderCallback=e==null?void 0:e.beforeRender,D(this,hA,new mt.LayoutBox(o(this,lA))),o(this,hA).onScale(()=>{this.resize()})}get name(){return o(this,ye)}get camera(){return o(this,H)}get scene(){return o(this,TA)}get box(){return o(this,hA)}get cameraDistance(){return o(this,QA)}set cameraDistance(A){D(this,QA,A),this.resize()}get sizeElement(){return o(this,lA)}get isClipped(){return o(this,lA)!==w.containerElement}resize(){const{width:A,height:e}=o(this,hA);o(this,H).position.z=o(this,QA),o(this,H)instanceof B.PerspectiveCamera?(o(this,H).aspect=A/e,o(this,H).fov=o(this,XA)==="auto"?2*Math.atan(e/2/o(this,QA))*(180/Math.PI):o(this,XA)):o(this,H)instanceof B.OrthographicCamera&&(o(this,H).left=A/-2,o(this,H).right=A/2,o(this,H).top=e/2,o(this,H).bottom=e/-2),o(this,H).updateProjectionMatrix()}destroy(){o(this,EA).forEach(A=>{A.userData.box.destroy()}),o(this,TA).clear(),vA(o(this,TA)),w.destroyView(this.name),o(this,hA).destroy()}attachToHTMLElement(A,e,s){const t=new mt.LayoutBox(A,Fe(eA({},s),{containerElement:o(this,lA),cartesian:!0,scrollStep:!this.isClipped}));return t.bindObject(e),e.userData.box=t,o(this,EA).push(e),e}detachFromHTMLElement(A){D(this,EA,o(this,EA).filter(e=>e===A?(A.userData.box.destroy(),!1):!0))}add(...A){const e=A[0],s=A[1],t=A[2];return this.scene.add(e),s?this.attachToHTMLElement(s,e,t):e}remove(A,e){this.scene.remove(A),e&&this.detachFromHTMLElement(A)}}ye=new WeakMap,H=new WeakMap,TA=new WeakMap,EA=new WeakMap,QA=new WeakMap,XA=new WeakMap,lA=new WeakMap,hA=new WeakMap;const Y=new Map;var nt,iA,T,k,VA,WA,jA,Me,xA,Se,Le,Te;class Hs{constructor(){d(this,nt,`https://unpkg.com/three@0.${B.REVISION}.x`);d(this,iA,null);d(this,T,null);d(this,k,new Map);d(this,VA,0);d(this,WA,0);d(this,jA,0);d(this,Me,2);d(this,xA,!1);d(this,Se,!1);d(this,Le,()=>{var A;D(this,VA,o(this,iA).clientWidth),D(this,WA,o(this,iA).clientHeight),D(this,jA,Math.min(o(this,Me),devicePixelRatio||1)),o(this,T).setPixelRatio(o(this,jA)),o(this,T).setSize(o(this,VA),o(this,WA)),(A=this.onResize)==null||A.call(this)});d(this,Te,()=>{o(this,T).setRenderTarget(null),o(this,k).forEach(A=>{this.render(A)})})}get CDNVersion(){return o(this,nt)}get containerElement(){return o(this,iA)}get webglRenderer(){return o(this,T)}get views(){return o(this,k)}get view(){return this.getView("default")}get width(){return o(this,VA)}get height(){return o(this,WA)}get pixelRatio(){return o(this,jA)}get cacheAssets(){return o(this,Se)}setup(A){if(o(this,xA)){console.warn("[en3.setup]: You are trying to setup en3 again.");return}D(this,iA,Zt.getElement(A==null?void 0:A.containerElement)||document.body),D(this,Me,(A==null?void 0:A.maxPixelRatio)||2),D(this,T,new B.WebGLRenderer(A==null?void 0:A.webGLRendererParameters)),o(this,T).domElement.style.cssText=`
2
2
  position: fixed;
3
3
  left: 0;
4
4
  top: 0;
5
5
  width: 100%;
6
6
  height: 100%;
7
7
  z-index: -1;
8
- `,E(this,W).append(E(this,y).domElement),E(this,x).set("default",new me("default",AA({sizeElement:E(this,W)},A==null?void 0:A.view))),R(this,OA,(A==null?void 0:A.cacheAssets)||!1),R(this,cA,!0),yA.windowResizer.subscribe(E(this,_A),NA.RESIZE_ORDER.EN3),LA.ticker.subscribe(E(this,PA),{order:NA.TICK_ORDER.EN3})}destroy(){if(!E(this,cA)){console.warn("[en3.setup]: You are trying to destory en3 but it has not been initialized.");return}yA.windowResizer.unsubscribe(E(this,_A)),LA.ticker.unsubscribe(E(this,PA)),E(this,x).forEach(A=>{A.destroy()}),E(this,y).dispose(),E(this,y).domElement.remove(),R(this,y,null),R(this,cA,!1),O.forEach(A=>{A.dispose()}),O.clear()}createView(A,e){const s=E(this,x).size,t=new me(A,e);return E(this,x).set(A,t),s===1&&E(this,y).setScissorTest(!0),t}getView(A){return E(this,x).get(A)}destroyView(A){const e=E(this,x).get(A);e&&(E(this,x).delete(A),e.destroy(),E(this,x).size<=1&&E(this,y).setScissorTest(!1))}render(A){var e;if(E(this,x).size>1||this.view.isClipped){const s=A.box.left+A.box.CSSTranslation.x+A.box.scrollValue.x,t=w.height-A.box.height-A.box.top+A.box.CSSTranslation.y+A.box.scrollValue.y*-1;E(this,y).setScissor(s,t,A.box.width,A.box.height),E(this,y).setViewport(s,t,A.box.width,A.box.height)}(e=A.beforeRenderCallback)==null||e.call(A),E(this,y).render(A.scene,A.camera)}}ae=new WeakMap,W=new WeakMap,y=new WeakMap,x=new WeakMap,FA=new WeakMap,GA=new WeakMap,RA=new WeakMap,KA=new WeakMap,cA=new WeakMap,OA=new WeakMap,_A=new WeakMap,PA=new WeakMap;const w=new Ft,CA=new B.TextureLoader,Gt=CA.load.bind(CA),Rt=CA.loadAsync.bind(CA);CA.load=(C,A,...e)=>{if(w.cacheAssets&&O.has(C)){const s=O.get(C);return A==null||A(s.data),s.data}return Gt(C,s=>{w.cacheAssets&&O.set(C,{data:s,dispose:()=>s.dispose()}),A==null||A(s)},...e)};CA.loadAsync=(C,...A)=>uA(exports,null,function*(){if(w.cacheAssets&&O.has(C))return O.get(C).data;const e=yield Rt(C,...A);return w.cacheAssets&&O.set(C,{data:e,dispose:()=>e.dispose()}),e});function be(C,A){if(A===B.TrianglesDrawMode)return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."),C;if(A===B.TriangleFanDrawMode||A===B.TriangleStripDrawMode){let e=C.getIndex();if(e===null){const i=[],r=C.getAttribute("position");if(r!==void 0){for(let o=0;o<r.count;o++)i.push(o);C.setIndex(i),e=C.getIndex()}else return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),C}const s=e.count-2,t=[];if(A===B.TriangleFanDrawMode)for(let i=1;i<=s;i++)t.push(e.getX(0)),t.push(e.getX(i)),t.push(e.getX(i+1));else for(let i=0;i<s;i++)i%2===0?(t.push(e.getX(i)),t.push(e.getX(i+1)),t.push(e.getX(i+2))):(t.push(e.getX(i+2)),t.push(e.getX(i+1)),t.push(e.getX(i)));t.length/3!==s&&console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");const n=C.clone();return n.setIndex(t),n.clearGroups(),n}else return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:",A),C}class pt extends B.Loader{constructor(A){super(A),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(e){return new yt(e)}),this.register(function(e){return new bt(e)}),this.register(function(e){return new Kt(e)}),this.register(function(e){return new Ot(e)}),this.register(function(e){return new Tt(e)}),this.register(function(e){return new Ht(e)}),this.register(function(e){return new Jt(e)}),this.register(function(e){return new Ut(e)}),this.register(function(e){return new St(e)}),this.register(function(e){return new xt(e)}),this.register(function(e){return new Lt(e)}),this.register(function(e){return new kt(e)}),this.register(function(e){return new Nt(e)}),this.register(function(e){return new Mt(e)}),this.register(function(e){return new _t(e)}),this.register(function(e){return new Pt(e)})}load(A,e,s,t){const n=this;let i;if(this.resourcePath!=="")i=this.resourcePath;else if(this.path!==""){const a=B.LoaderUtils.extractUrlBase(A);i=B.LoaderUtils.resolveURL(a,this.path)}else i=B.LoaderUtils.extractUrlBase(A);this.manager.itemStart(A);const r=function(a){t?t(a):console.error(a),n.manager.itemError(A),n.manager.itemEnd(A)},o=new B.FileLoader(this.manager);o.setPath(this.path),o.setResponseType("arraybuffer"),o.setRequestHeader(this.requestHeader),o.setWithCredentials(this.withCredentials),o.load(A,function(a){try{n.parse(a,i,function(g){e(g),n.manager.itemEnd(A)},r)}catch(g){r(g)}},s,r)}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}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,s,t){let n;const i={},r={},o=new TextDecoder;if(typeof A=="string")n=JSON.parse(A);else if(A instanceof ArrayBuffer)if(o.decode(new Uint8Array(A,0,4))===Ze){try{i[p.KHR_BINARY_GLTF]=new Yt(A)}catch(I){t&&t(I);return}n=JSON.parse(i[p.KHR_BINARY_GLTF].content)}else n=JSON.parse(o.decode(A));else n=A;if(n.asset===void 0||n.asset.version[0]<2){t&&t(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported."));return}const a=new ss(n,{path:e||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});a.fileLoader.setRequestHeader(this.requestHeader);for(let g=0;g<this.pluginCallbacks.length;g++){const I=this.pluginCallbacks[g](a);I.name||console.error("THREE.GLTFLoader: Invalid plugin found: missing name"),r[I.name]=I,i[I.name]=!0}if(n.extensionsUsed)for(let g=0;g<n.extensionsUsed.length;++g){const I=n.extensionsUsed[g],Q=n.extensionsRequired||[];switch(I){case p.KHR_MATERIALS_UNLIT:i[I]=new wt;break;case p.KHR_DRACO_MESH_COMPRESSION:i[I]=new qt(n,this.dracoLoader);break;case p.KHR_TEXTURE_TRANSFORM:i[I]=new Xt;break;case p.KHR_MESH_QUANTIZATION:i[I]=new Vt;break;default:Q.indexOf(I)>=0&&r[I]===void 0&&console.warn('THREE.GLTFLoader: Unknown extension "'+I+'".')}}a.setExtensions(i),a.setPlugins(r),a.parse(s,t)}parseAsync(A,e){const s=this;return new Promise(function(t,n){s.parse(A,e,t,n)})}}function mt(){let C={};return{get:function(A){return C[A]},add:function(A,e){C[A]=e},remove:function(A){delete C[A]},removeAll:function(){C={}}}}const p={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_ANISOTROPY:"KHR_materials_anisotropy",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",EXT_MATERIALS_BUMP:"EXT_materials_bump",EXT_TEXTURE_WEBP:"EXT_texture_webp",EXT_TEXTURE_AVIF:"EXT_texture_avif",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression",EXT_MESH_GPU_INSTANCING:"EXT_mesh_gpu_instancing"};class Mt{constructor(A){this.parser=A,this.name=p.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){const A=this.parser,e=this.parser.json.nodes||[];for(let s=0,t=e.length;s<t;s++){const n=e[s];n.extensions&&n.extensions[this.name]&&n.extensions[this.name].light!==void 0&&A._addNodeRef(this.cache,n.extensions[this.name].light)}}_loadLight(A){const e=this.parser,s="light:"+A;let t=e.cache.get(s);if(t)return t;const n=e.json,o=((n.extensions&&n.extensions[this.name]||{}).lights||[])[A];let a;const g=new B.Color(16777215);o.color!==void 0&&g.setRGB(o.color[0],o.color[1],o.color[2],B.LinearSRGBColorSpace);const I=o.range!==void 0?o.range:0;switch(o.type){case"directional":a=new B.DirectionalLight(g),a.target.position.set(0,0,-1),a.add(a.target);break;case"point":a=new B.PointLight(g),a.distance=I;break;case"spot":a=new B.SpotLight(g),a.distance=I,o.spot=o.spot||{},o.spot.innerConeAngle=o.spot.innerConeAngle!==void 0?o.spot.innerConeAngle:0,o.spot.outerConeAngle=o.spot.outerConeAngle!==void 0?o.spot.outerConeAngle:Math.PI/4,a.angle=o.spot.outerConeAngle,a.penumbra=1-o.spot.innerConeAngle/o.spot.outerConeAngle,a.target.position.set(0,0,-1),a.add(a.target);break;default:throw new Error("THREE.GLTFLoader: Unexpected light type: "+o.type)}return a.position.set(0,0,0),a.decay=2,tA(a,o),o.intensity!==void 0&&(a.intensity=o.intensity),a.name=e.createUniqueName(o.name||"light_"+A),t=Promise.resolve(a),e.cache.add(s,t),t}getDependency(A,e){if(A==="light")return this._loadLight(e)}createNodeAttachment(A){const e=this,s=this.parser,n=s.json.nodes[A],r=(n.extensions&&n.extensions[this.name]||{}).light;return r===void 0?null:this._loadLight(r).then(function(o){return s._getNodeRef(e.cache,r,o)})}}class wt{constructor(){this.name=p.KHR_MATERIALS_UNLIT}getMaterialType(){return B.MeshBasicMaterial}extendParams(A,e,s){const t=[];A.color=new B.Color(1,1,1),A.opacity=1;const n=e.pbrMetallicRoughness;if(n){if(Array.isArray(n.baseColorFactor)){const i=n.baseColorFactor;A.color.setRGB(i[0],i[1],i[2],B.LinearSRGBColorSpace),A.opacity=i[3]}n.baseColorTexture!==void 0&&t.push(s.assignTexture(A,"map",n.baseColorTexture,B.SRGBColorSpace))}return Promise.all(t)}}class St{constructor(A){this.parser=A,this.name=p.KHR_MATERIALS_EMISSIVE_STRENGTH}extendMaterialParams(A,e){const t=this.parser.json.materials[A];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const n=t.extensions[this.name].emissiveStrength;return n!==void 0&&(e.emissiveIntensity=n),Promise.resolve()}}class yt{constructor(A){this.parser=A,this.name=p.KHR_MATERIALS_CLEARCOAT}getMaterialType(A){const s=this.parser.json.materials[A];return!s.extensions||!s.extensions[this.name]?null:B.MeshPhysicalMaterial}extendMaterialParams(A,e){const s=this.parser,t=s.json.materials[A];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const n=[],i=t.extensions[this.name];if(i.clearcoatFactor!==void 0&&(e.clearcoat=i.clearcoatFactor),i.clearcoatTexture!==void 0&&n.push(s.assignTexture(e,"clearcoatMap",i.clearcoatTexture)),i.clearcoatRoughnessFactor!==void 0&&(e.clearcoatRoughness=i.clearcoatRoughnessFactor),i.clearcoatRoughnessTexture!==void 0&&n.push(s.assignTexture(e,"clearcoatRoughnessMap",i.clearcoatRoughnessTexture)),i.clearcoatNormalTexture!==void 0&&(n.push(s.assignTexture(e,"clearcoatNormalMap",i.clearcoatNormalTexture)),i.clearcoatNormalTexture.scale!==void 0)){const r=i.clearcoatNormalTexture.scale;e.clearcoatNormalScale=new B.Vector2(r,r)}return Promise.all(n)}}class Lt{constructor(A){this.parser=A,this.name=p.KHR_MATERIALS_IRIDESCENCE}getMaterialType(A){const s=this.parser.json.materials[A];return!s.extensions||!s.extensions[this.name]?null:B.MeshPhysicalMaterial}extendMaterialParams(A,e){const s=this.parser,t=s.json.materials[A];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const n=[],i=t.extensions[this.name];return i.iridescenceFactor!==void 0&&(e.iridescence=i.iridescenceFactor),i.iridescenceTexture!==void 0&&n.push(s.assignTexture(e,"iridescenceMap",i.iridescenceTexture)),i.iridescenceIor!==void 0&&(e.iridescenceIOR=i.iridescenceIor),e.iridescenceThicknessRange===void 0&&(e.iridescenceThicknessRange=[100,400]),i.iridescenceThicknessMinimum!==void 0&&(e.iridescenceThicknessRange[0]=i.iridescenceThicknessMinimum),i.iridescenceThicknessMaximum!==void 0&&(e.iridescenceThicknessRange[1]=i.iridescenceThicknessMaximum),i.iridescenceThicknessTexture!==void 0&&n.push(s.assignTexture(e,"iridescenceThicknessMap",i.iridescenceThicknessTexture)),Promise.all(n)}}class Tt{constructor(A){this.parser=A,this.name=p.KHR_MATERIALS_SHEEN}getMaterialType(A){const s=this.parser.json.materials[A];return!s.extensions||!s.extensions[this.name]?null:B.MeshPhysicalMaterial}extendMaterialParams(A,e){const s=this.parser,t=s.json.materials[A];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const n=[];e.sheenColor=new B.Color(0,0,0),e.sheenRoughness=0,e.sheen=1;const i=t.extensions[this.name];if(i.sheenColorFactor!==void 0){const r=i.sheenColorFactor;e.sheenColor.setRGB(r[0],r[1],r[2],B.LinearSRGBColorSpace)}return i.sheenRoughnessFactor!==void 0&&(e.sheenRoughness=i.sheenRoughnessFactor),i.sheenColorTexture!==void 0&&n.push(s.assignTexture(e,"sheenColorMap",i.sheenColorTexture,B.SRGBColorSpace)),i.sheenRoughnessTexture!==void 0&&n.push(s.assignTexture(e,"sheenRoughnessMap",i.sheenRoughnessTexture)),Promise.all(n)}}class Ht{constructor(A){this.parser=A,this.name=p.KHR_MATERIALS_TRANSMISSION}getMaterialType(A){const s=this.parser.json.materials[A];return!s.extensions||!s.extensions[this.name]?null:B.MeshPhysicalMaterial}extendMaterialParams(A,e){const s=this.parser,t=s.json.materials[A];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const n=[],i=t.extensions[this.name];return i.transmissionFactor!==void 0&&(e.transmission=i.transmissionFactor),i.transmissionTexture!==void 0&&n.push(s.assignTexture(e,"transmissionMap",i.transmissionTexture)),Promise.all(n)}}class Jt{constructor(A){this.parser=A,this.name=p.KHR_MATERIALS_VOLUME}getMaterialType(A){const s=this.parser.json.materials[A];return!s.extensions||!s.extensions[this.name]?null:B.MeshPhysicalMaterial}extendMaterialParams(A,e){const s=this.parser,t=s.json.materials[A];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const n=[],i=t.extensions[this.name];e.thickness=i.thicknessFactor!==void 0?i.thicknessFactor:0,i.thicknessTexture!==void 0&&n.push(s.assignTexture(e,"thicknessMap",i.thicknessTexture)),e.attenuationDistance=i.attenuationDistance||1/0;const r=i.attenuationColor||[1,1,1];return e.attenuationColor=new B.Color().setRGB(r[0],r[1],r[2],B.LinearSRGBColorSpace),Promise.all(n)}}class Ut{constructor(A){this.parser=A,this.name=p.KHR_MATERIALS_IOR}getMaterialType(A){const s=this.parser.json.materials[A];return!s.extensions||!s.extensions[this.name]?null:B.MeshPhysicalMaterial}extendMaterialParams(A,e){const t=this.parser.json.materials[A];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const n=t.extensions[this.name];return e.ior=n.ior!==void 0?n.ior:1.5,Promise.resolve()}}class xt{constructor(A){this.parser=A,this.name=p.KHR_MATERIALS_SPECULAR}getMaterialType(A){const s=this.parser.json.materials[A];return!s.extensions||!s.extensions[this.name]?null:B.MeshPhysicalMaterial}extendMaterialParams(A,e){const s=this.parser,t=s.json.materials[A];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const n=[],i=t.extensions[this.name];e.specularIntensity=i.specularFactor!==void 0?i.specularFactor:1,i.specularTexture!==void 0&&n.push(s.assignTexture(e,"specularIntensityMap",i.specularTexture));const r=i.specularColorFactor||[1,1,1];return e.specularColor=new B.Color().setRGB(r[0],r[1],r[2],B.LinearSRGBColorSpace),i.specularColorTexture!==void 0&&n.push(s.assignTexture(e,"specularColorMap",i.specularColorTexture,B.SRGBColorSpace)),Promise.all(n)}}class Nt{constructor(A){this.parser=A,this.name=p.EXT_MATERIALS_BUMP}getMaterialType(A){const s=this.parser.json.materials[A];return!s.extensions||!s.extensions[this.name]?null:B.MeshPhysicalMaterial}extendMaterialParams(A,e){const s=this.parser,t=s.json.materials[A];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const n=[],i=t.extensions[this.name];return e.bumpScale=i.bumpFactor!==void 0?i.bumpFactor:1,i.bumpTexture!==void 0&&n.push(s.assignTexture(e,"bumpMap",i.bumpTexture)),Promise.all(n)}}class kt{constructor(A){this.parser=A,this.name=p.KHR_MATERIALS_ANISOTROPY}getMaterialType(A){const s=this.parser.json.materials[A];return!s.extensions||!s.extensions[this.name]?null:B.MeshPhysicalMaterial}extendMaterialParams(A,e){const s=this.parser,t=s.json.materials[A];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const n=[],i=t.extensions[this.name];return i.anisotropyStrength!==void 0&&(e.anisotropy=i.anisotropyStrength),i.anisotropyRotation!==void 0&&(e.anisotropyRotation=i.anisotropyRotation),i.anisotropyTexture!==void 0&&n.push(s.assignTexture(e,"anisotropyMap",i.anisotropyTexture)),Promise.all(n)}}class bt{constructor(A){this.parser=A,this.name=p.KHR_TEXTURE_BASISU}loadTexture(A){const e=this.parser,s=e.json,t=s.textures[A];if(!t.extensions||!t.extensions[this.name])return null;const n=t.extensions[this.name],i=e.options.ktx2Loader;if(!i){if(s.extensionsRequired&&s.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return null}return e.loadTextureImage(A,n.source,i)}}class Kt{constructor(A){this.parser=A,this.name=p.EXT_TEXTURE_WEBP,this.isSupported=null}loadTexture(A){const e=this.name,s=this.parser,t=s.json,n=t.textures[A];if(!n.extensions||!n.extensions[e])return null;const i=n.extensions[e],r=t.images[i.source];let o=s.textureLoader;if(r.uri){const a=s.options.manager.getHandler(r.uri);a!==null&&(o=a)}return this.detectSupport().then(function(a){if(a)return s.loadTextureImage(A,i.source,o);if(t.extensionsRequired&&t.extensionsRequired.indexOf(e)>=0)throw new Error("THREE.GLTFLoader: WebP required by asset but unsupported.");return s.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 Ot{constructor(A){this.parser=A,this.name=p.EXT_TEXTURE_AVIF,this.isSupported=null}loadTexture(A){const e=this.name,s=this.parser,t=s.json,n=t.textures[A];if(!n.extensions||!n.extensions[e])return null;const i=n.extensions[e],r=t.images[i.source];let o=s.textureLoader;if(r.uri){const a=s.options.manager.getHandler(r.uri);a!==null&&(o=a)}return this.detectSupport().then(function(a){if(a)return s.loadTextureImage(A,i.source,o);if(t.extensionsRequired&&t.extensionsRequired.indexOf(e)>=0)throw new Error("THREE.GLTFLoader: AVIF required by asset but unsupported.");return s.loadTexture(A)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(A){const e=new Image;e.src="data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAABcAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQAMAAAAABNjb2xybmNseAACAAIABoAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAAB9tZGF0EgAKCBgABogQEDQgMgkQAAAAB8dSLfI=",e.onload=e.onerror=function(){A(e.height===1)}})),this.isSupported}}class _t{constructor(A){this.name=p.EXT_MESHOPT_COMPRESSION,this.parser=A}loadBufferView(A){const e=this.parser.json,s=e.bufferViews[A];if(s.extensions&&s.extensions[this.name]){const t=s.extensions[this.name],n=this.parser.getDependency("buffer",t.buffer),i=this.parser.options.meshoptDecoder;if(!i||!i.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 n.then(function(r){const o=t.byteOffset||0,a=t.byteLength||0,g=t.count,I=t.byteStride,Q=new Uint8Array(r,o,a);return i.decodeGltfBufferAsync?i.decodeGltfBufferAsync(g,I,Q,t.mode,t.filter).then(function(h){return h.buffer}):i.ready.then(function(){const h=new ArrayBuffer(g*I);return i.decodeGltfBuffer(new Uint8Array(h),g,I,Q,t.mode,t.filter),h})})}else return null}}class Pt{constructor(A){this.name=p.EXT_MESH_GPU_INSTANCING,this.parser=A}createNodeMesh(A){const e=this.parser.json,s=e.nodes[A];if(!s.extensions||!s.extensions[this.name]||s.mesh===void 0)return null;const t=e.meshes[s.mesh];for(const a of t.primitives)if(a.mode!==K.TRIANGLES&&a.mode!==K.TRIANGLE_STRIP&&a.mode!==K.TRIANGLE_FAN&&a.mode!==void 0)return null;const i=s.extensions[this.name].attributes,r=[],o={};for(const a in i)r.push(this.parser.getDependency("accessor",i[a]).then(g=>(o[a]=g,o[a])));return r.length<1?null:(r.push(this.parser.createNodeMesh(A)),Promise.all(r).then(a=>{const g=a.pop(),I=g.isGroup?g.children:[g],Q=a[0].count,h=[];for(const d of I){const l=new B.Matrix4,c=new B.Vector3,u=new B.Quaternion,f=new B.Vector3(1,1,1),D=new B.InstancedMesh(d.geometry,d.material,Q);for(let F=0;F<Q;F++)o.TRANSLATION&&c.fromBufferAttribute(o.TRANSLATION,F),o.ROTATION&&u.fromBufferAttribute(o.ROTATION,F),o.SCALE&&f.fromBufferAttribute(o.SCALE,F),D.setMatrixAt(F,l.compose(c,u,f));for(const F in o)if(F==="_COLOR_0"){const m=o[F];D.instanceColor=new B.InstancedBufferAttribute(m.array,m.itemSize,m.normalized)}else F!=="TRANSLATION"&&F!=="ROTATION"&&F!=="SCALE"&&d.geometry.setAttribute(F,o[F]);B.Object3D.prototype.copy.call(D,d),this.parser.assignFinalMaterial(D),h.push(D)}return g.isGroup?(g.clear(),g.add(...h),g):h[0]}))}}const Ze="glTF",JA=12,Ke={JSON:1313821514,BIN:5130562};class Yt{constructor(A){this.name=p.KHR_BINARY_GLTF,this.content=null,this.body=null;const e=new DataView(A,0,JA),s=new TextDecoder;if(this.header={magic:s.decode(new Uint8Array(A.slice(0,4))),version:e.getUint32(4,!0),length:e.getUint32(8,!0)},this.header.magic!==Ze)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-JA,n=new DataView(A,JA);let i=0;for(;i<t;){const r=n.getUint32(i,!0);i+=4;const o=n.getUint32(i,!0);if(i+=4,o===Ke.JSON){const a=new Uint8Array(A,JA+i,r);this.content=s.decode(a)}else if(o===Ke.BIN){const a=JA+i;this.body=A.slice(a,a+r)}i+=r}if(this.content===null)throw new Error("THREE.GLTFLoader: JSON content not found.")}}class qt{constructor(A,e){if(!e)throw new Error("THREE.GLTFLoader: No DRACOLoader instance provided.");this.name=p.KHR_DRACO_MESH_COMPRESSION,this.json=A,this.dracoLoader=e,this.dracoLoader.preload()}decodePrimitive(A,e){const s=this.json,t=this.dracoLoader,n=A.extensions[this.name].bufferView,i=A.extensions[this.name].attributes,r={},o={},a={};for(const g in i){const I=Me[g]||g.toLowerCase();r[I]=i[g]}for(const g in A.attributes){const I=Me[g]||g.toLowerCase();if(i[g]!==void 0){const Q=s.accessors[A.attributes[g]],h=fA[Q.componentType];a[I]=h.name,o[I]=Q.normalized===!0}}return e.getDependency("bufferView",n).then(function(g){return new Promise(function(I,Q){t.decodeDracoFile(g,function(h){for(const d in h.attributes){const l=h.attributes[d],c=o[d];c!==void 0&&(l.normalized=c)}I(h)},r,a,B.LinearSRGBColorSpace,Q)})})}}class Xt{constructor(){this.name=p.KHR_TEXTURE_TRANSFORM}extendTexture(A,e){return(e.texCoord===void 0||e.texCoord===A.channel)&&e.offset===void 0&&e.rotation===void 0&&e.scale===void 0||(A=A.clone(),e.texCoord!==void 0&&(A.channel=e.texCoord),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 Vt{constructor(){this.name=p.KHR_MESH_QUANTIZATION}}class ze extends B.Interpolant{constructor(A,e,s,t){super(A,e,s,t)}copySampleValue_(A){const e=this.resultBuffer,s=this.sampleValues,t=this.valueSize,n=A*t*3+t;for(let i=0;i!==t;i++)e[i]=s[n+i];return e}interpolate_(A,e,s,t){const n=this.resultBuffer,i=this.sampleValues,r=this.valueSize,o=r*2,a=r*3,g=t-e,I=(s-e)/g,Q=I*I,h=Q*I,d=A*a,l=d-a,c=-2*h+3*Q,u=h-Q,f=1-c,D=u-Q+I;for(let F=0;F!==r;F++){const m=i[l+F+r],M=i[l+F+o]*g,S=i[d+F+r],_=i[d+F]*g;n[F]=f*m+D*M+c*S+u*_}return n}}const vt=new B.Quaternion;class Wt extends ze{interpolate_(A,e,s,t){const n=super.interpolate_(A,e,s,t);return vt.fromArray(n).normalize().toArray(n),n}}const K={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},fA={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},Oe={9728:B.NearestFilter,9729:B.LinearFilter,9984:B.NearestMipmapNearestFilter,9985:B.LinearMipmapNearestFilter,9986:B.NearestMipmapLinearFilter,9987:B.LinearMipmapLinearFilter},_e={33071:B.ClampToEdgeWrapping,33648:B.MirroredRepeatWrapping,10497:B.RepeatWrapping},Ee={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},Me={POSITION:"position",NORMAL:"normal",TANGENT:"tangent",TEXCOORD_0:"uv",TEXCOORD_1:"uv1",TEXCOORD_2:"uv2",TEXCOORD_3:"uv3",COLOR_0:"color",WEIGHTS_0:"skinWeight",JOINTS_0:"skinIndex"},eA={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},jt={CUBICSPLINE:void 0,LINEAR:B.InterpolateLinear,STEP:B.InterpolateDiscrete},ce={OPAQUE:"OPAQUE",MASK:"MASK",BLEND:"BLEND"};function Zt(C){return C.DefaultMaterial===void 0&&(C.DefaultMaterial=new B.MeshStandardMaterial({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:B.FrontSide})),C.DefaultMaterial}function gA(C,A,e){for(const s in e.extensions)C[s]===void 0&&(A.userData.gltfExtensions=A.userData.gltfExtensions||{},A.userData.gltfExtensions[s]=e.extensions[s])}function tA(C,A){A.extras!==void 0&&(typeof A.extras=="object"?Object.assign(C.userData,A.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+A.extras))}function zt(C,A,e){let s=!1,t=!1,n=!1;for(let a=0,g=A.length;a<g;a++){const I=A[a];if(I.POSITION!==void 0&&(s=!0),I.NORMAL!==void 0&&(t=!0),I.COLOR_0!==void 0&&(n=!0),s&&t&&n)break}if(!s&&!t&&!n)return Promise.resolve(C);const i=[],r=[],o=[];for(let a=0,g=A.length;a<g;a++){const I=A[a];if(s){const Q=I.POSITION!==void 0?e.getDependency("accessor",I.POSITION):C.attributes.position;i.push(Q)}if(t){const Q=I.NORMAL!==void 0?e.getDependency("accessor",I.NORMAL):C.attributes.normal;r.push(Q)}if(n){const Q=I.COLOR_0!==void 0?e.getDependency("accessor",I.COLOR_0):C.attributes.color;o.push(Q)}}return Promise.all([Promise.all(i),Promise.all(r),Promise.all(o)]).then(function(a){const g=a[0],I=a[1],Q=a[2];return s&&(C.morphAttributes.position=g),t&&(C.morphAttributes.normal=I),n&&(C.morphAttributes.color=Q),C.morphTargetsRelative=!0,C})}function $t(C,A){if(C.updateMorphTargets(),A.weights!==void 0)for(let e=0,s=A.weights.length;e<s;e++)C.morphTargetInfluences[e]=A.weights[e];if(A.extras&&Array.isArray(A.extras.targetNames)){const e=A.extras.targetNames;if(C.morphTargetInfluences.length===e.length){C.morphTargetDictionary={};for(let s=0,t=e.length;s<t;s++)C.morphTargetDictionary[e[s]]=s}else console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.")}}function As(C){let A;const e=C.extensions&&C.extensions[p.KHR_DRACO_MESH_COMPRESSION];if(e?A="draco:"+e.bufferView+":"+e.indices+":"+Qe(e.attributes):A=C.indices+":"+Qe(C.attributes)+":"+C.mode,C.targets!==void 0)for(let s=0,t=C.targets.length;s<t;s++)A+=":"+Qe(C.targets[s]);return A}function Qe(C){let A="";const e=Object.keys(C).sort();for(let s=0,t=e.length;s<t;s++)A+=e[s]+":"+C[e[s]]+";";return A}function we(C){switch(C){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 es(C){return C.search(/\.jpe?g($|\?)/i)>0||C.search(/^data\:image\/jpeg/)===0?"image/jpeg":C.search(/\.webp($|\?)/i)>0||C.search(/^data\:image\/webp/)===0?"image/webp":"image/png"}const ts=new B.Matrix4;class ss{constructor(A={},e={}){this.json=A,this.extensions={},this.plugins={},this.options=e,this.cache=new mt,this.associations=new Map,this.primitiveCache={},this.nodeCache={},this.meshCache={refs:{},uses:{}},this.cameraCache={refs:{},uses:{}},this.lightCache={refs:{},uses:{}},this.sourceCache={},this.textureCache={},this.nodeNamesUsed={};let s=!1,t=!1,n=-1;typeof navigator!="undefined"&&(s=/^((?!chrome|android).)*safari/i.test(navigator.userAgent)===!0,t=navigator.userAgent.indexOf("Firefox")>-1,n=t?navigator.userAgent.match(/Firefox\/([0-9]+)\./)[1]:-1),typeof createImageBitmap=="undefined"||s||t&&n<98?this.textureLoader=new B.TextureLoader(this.options.manager):this.textureLoader=new B.ImageBitmapLoader(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new B.FileLoader(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 s=this,t=this.json,n=this.extensions;this.cache.removeAll(),this.nodeCache={},this._invokeAll(function(i){return i._markDefs&&i._markDefs()}),Promise.all(this._invokeAll(function(i){return i.beforeRoot&&i.beforeRoot()})).then(function(){return Promise.all([s.getDependencies("scene"),s.getDependencies("animation"),s.getDependencies("camera")])}).then(function(i){const r={scene:i[0][t.scene||0],scenes:i[0],animations:i[1],cameras:i[2],asset:t.asset,parser:s,userData:{}};return gA(n,r,t),tA(r,t),Promise.all(s._invokeAll(function(o){return o.afterRoot&&o.afterRoot(r)})).then(function(){for(const o of r.scenes)o.updateMatrixWorld();A(r)})}).catch(e)}_markDefs(){const A=this.json.nodes||[],e=this.json.skins||[],s=this.json.meshes||[];for(let t=0,n=e.length;t<n;t++){const i=e[t].joints;for(let r=0,o=i.length;r<o;r++)A[i[r]].isBone=!0}for(let t=0,n=A.length;t<n;t++){const i=A[t];i.mesh!==void 0&&(this._addNodeRef(this.meshCache,i.mesh),i.skin!==void 0&&(s[i.mesh].isSkinnedMesh=!0)),i.camera!==void 0&&this._addNodeRef(this.cameraCache,i.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,s){if(A.refs[e]<=1)return s;const t=s.clone(),n=(i,r)=>{const o=this.associations.get(i);o!=null&&this.associations.set(r,o);for(const[a,g]of i.children.entries())n(g,r.children[a])};return n(s,t),t.name+="_instance_"+A.uses[e]++,t}_invokeOne(A){const e=Object.values(this.plugins);e.push(this);for(let s=0;s<e.length;s++){const t=A(e[s]);if(t)return t}return null}_invokeAll(A){const e=Object.values(this.plugins);e.unshift(this);const s=[];for(let t=0;t<e.length;t++){const n=A(e[t]);n&&s.push(n)}return s}getDependency(A,e){const s=A+":"+e;let t=this.cache.get(s);if(!t){switch(A){case"scene":t=this.loadScene(e);break;case"node":t=this._invokeOne(function(n){return n.loadNode&&n.loadNode(e)});break;case"mesh":t=this._invokeOne(function(n){return n.loadMesh&&n.loadMesh(e)});break;case"accessor":t=this.loadAccessor(e);break;case"bufferView":t=this._invokeOne(function(n){return n.loadBufferView&&n.loadBufferView(e)});break;case"buffer":t=this.loadBuffer(e);break;case"material":t=this._invokeOne(function(n){return n.loadMaterial&&n.loadMaterial(e)});break;case"texture":t=this._invokeOne(function(n){return n.loadTexture&&n.loadTexture(e)});break;case"skin":t=this.loadSkin(e);break;case"animation":t=this._invokeOne(function(n){return n.loadAnimation&&n.loadAnimation(e)});break;case"camera":t=this.loadCamera(e);break;default:if(t=this._invokeOne(function(n){return n!=this&&n.getDependency&&n.getDependency(A,e)}),!t)throw new Error("Unknown type: "+A);break}this.cache.add(s,t)}return t}getDependencies(A){let e=this.cache.get(A);if(!e){const s=this,t=this.json[A+(A==="mesh"?"es":"s")]||[];e=Promise.all(t.map(function(n,i){return s.getDependency(A,i)})),this.cache.add(A,e)}return e}loadBuffer(A){const e=this.json.buffers[A],s=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[p.KHR_BINARY_GLTF].body);const t=this.options;return new Promise(function(n,i){s.load(B.LoaderUtils.resolveURL(e.uri,t.path),n,void 0,function(){i(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(s){const t=e.byteLength||0,n=e.byteOffset||0;return s.slice(n,n+t)})}loadAccessor(A){const e=this,s=this.json,t=this.json.accessors[A];if(t.bufferView===void 0&&t.sparse===void 0){const i=Ee[t.type],r=fA[t.componentType],o=t.normalized===!0,a=new r(t.count*i);return Promise.resolve(new B.BufferAttribute(a,i,o))}const n=[];return t.bufferView!==void 0?n.push(this.getDependency("bufferView",t.bufferView)):n.push(null),t.sparse!==void 0&&(n.push(this.getDependency("bufferView",t.sparse.indices.bufferView)),n.push(this.getDependency("bufferView",t.sparse.values.bufferView))),Promise.all(n).then(function(i){const r=i[0],o=Ee[t.type],a=fA[t.componentType],g=a.BYTES_PER_ELEMENT,I=g*o,Q=t.byteOffset||0,h=t.bufferView!==void 0?s.bufferViews[t.bufferView].byteStride:void 0,d=t.normalized===!0;let l,c;if(h&&h!==I){const u=Math.floor(Q/h),f="InterleavedBuffer:"+t.bufferView+":"+t.componentType+":"+u+":"+t.count;let D=e.cache.get(f);D||(l=new a(r,u*h,t.count*h/g),D=new B.InterleavedBuffer(l,h/g),e.cache.add(f,D)),c=new B.InterleavedBufferAttribute(D,o,Q%h/g,d)}else r===null?l=new a(t.count*o):l=new a(r,Q,t.count*o),c=new B.BufferAttribute(l,o,d);if(t.sparse!==void 0){const u=Ee.SCALAR,f=fA[t.sparse.indices.componentType],D=t.sparse.indices.byteOffset||0,F=t.sparse.values.byteOffset||0,m=new f(i[1],D,t.sparse.count*u),M=new a(i[2],F,t.sparse.count*o);r!==null&&(c=new B.BufferAttribute(c.array.slice(),c.itemSize,c.normalized));for(let S=0,_=m.length;S<_;S++){const U=m[S];if(c.setX(U,M[S*o]),o>=2&&c.setY(U,M[S*o+1]),o>=3&&c.setZ(U,M[S*o+2]),o>=4&&c.setW(U,M[S*o+3]),o>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}}return c})}loadTexture(A){const e=this.json,s=this.options,n=e.textures[A].source,i=e.images[n];let r=this.textureLoader;if(i.uri){const o=s.manager.getHandler(i.uri);o!==null&&(r=o)}return this.loadTextureImage(A,n,r)}loadTextureImage(A,e,s){const t=this,n=this.json,i=n.textures[A],r=n.images[e],o=(r.uri||r.bufferView)+":"+i.sampler;if(this.textureCache[o])return this.textureCache[o];const a=this.loadImageSource(e,s).then(function(g){g.flipY=!1,g.name=i.name||r.name||"",g.name===""&&typeof r.uri=="string"&&r.uri.startsWith("data:image/")===!1&&(g.name=r.uri);const Q=(n.samplers||{})[i.sampler]||{};return g.magFilter=Oe[Q.magFilter]||B.LinearFilter,g.minFilter=Oe[Q.minFilter]||B.LinearMipmapLinearFilter,g.wrapS=_e[Q.wrapS]||B.RepeatWrapping,g.wrapT=_e[Q.wrapT]||B.RepeatWrapping,t.associations.set(g,{textures:A}),g}).catch(function(){return null});return this.textureCache[o]=a,a}loadImageSource(A,e){const s=this,t=this.json,n=this.options;if(this.sourceCache[A]!==void 0)return this.sourceCache[A].then(I=>I.clone());const i=t.images[A],r=self.URL||self.webkitURL;let o=i.uri||"",a=!1;if(i.bufferView!==void 0)o=s.getDependency("bufferView",i.bufferView).then(function(I){a=!0;const Q=new Blob([I],{type:i.mimeType});return o=r.createObjectURL(Q),o});else if(i.uri===void 0)throw new Error("THREE.GLTFLoader: Image "+A+" is missing URI and bufferView");const g=Promise.resolve(o).then(function(I){return new Promise(function(Q,h){let d=Q;e.isImageBitmapLoader===!0&&(d=function(l){const c=new B.Texture(l);c.needsUpdate=!0,Q(c)}),e.load(B.LoaderUtils.resolveURL(I,n.path),d,void 0,h)})}).then(function(I){return a===!0&&r.revokeObjectURL(o),I.userData.mimeType=i.mimeType||es(i.uri),I}).catch(function(I){throw console.error("THREE.GLTFLoader: Couldn't load texture",o),I});return this.sourceCache[A]=g,g}assignTexture(A,e,s,t){const n=this;return this.getDependency("texture",s.index).then(function(i){if(!i)return null;if(s.texCoord!==void 0&&s.texCoord>0&&(i=i.clone(),i.channel=s.texCoord),n.extensions[p.KHR_TEXTURE_TRANSFORM]){const r=s.extensions!==void 0?s.extensions[p.KHR_TEXTURE_TRANSFORM]:void 0;if(r){const o=n.associations.get(i);i=n.extensions[p.KHR_TEXTURE_TRANSFORM].extendTexture(i,r),n.associations.set(i,o)}}return t!==void 0&&(i.colorSpace=t),A[e]=i,i})}assignFinalMaterial(A){const e=A.geometry;let s=A.material;const t=e.attributes.tangent===void 0,n=e.attributes.color!==void 0,i=e.attributes.normal===void 0;if(A.isPoints){const r="PointsMaterial:"+s.uuid;let o=this.cache.get(r);o||(o=new B.PointsMaterial,B.Material.prototype.copy.call(o,s),o.color.copy(s.color),o.map=s.map,o.sizeAttenuation=!1,this.cache.add(r,o)),s=o}else if(A.isLine){const r="LineBasicMaterial:"+s.uuid;let o=this.cache.get(r);o||(o=new B.LineBasicMaterial,B.Material.prototype.copy.call(o,s),o.color.copy(s.color),o.map=s.map,this.cache.add(r,o)),s=o}if(t||n||i){let r="ClonedMaterial:"+s.uuid+":";t&&(r+="derivative-tangents:"),n&&(r+="vertex-colors:"),i&&(r+="flat-shading:");let o=this.cache.get(r);o||(o=s.clone(),n&&(o.vertexColors=!0),i&&(o.flatShading=!0),t&&(o.normalScale&&(o.normalScale.y*=-1),o.clearcoatNormalScale&&(o.clearcoatNormalScale.y*=-1)),this.cache.add(r,o),this.associations.set(o,this.associations.get(s))),s=o}A.material=s}getMaterialType(){return B.MeshStandardMaterial}loadMaterial(A){const e=this,s=this.json,t=this.extensions,n=s.materials[A];let i;const r={},o=n.extensions||{},a=[];if(o[p.KHR_MATERIALS_UNLIT]){const I=t[p.KHR_MATERIALS_UNLIT];i=I.getMaterialType(),a.push(I.extendParams(r,n,e))}else{const I=n.pbrMetallicRoughness||{};if(r.color=new B.Color(1,1,1),r.opacity=1,Array.isArray(I.baseColorFactor)){const Q=I.baseColorFactor;r.color.setRGB(Q[0],Q[1],Q[2],B.LinearSRGBColorSpace),r.opacity=Q[3]}I.baseColorTexture!==void 0&&a.push(e.assignTexture(r,"map",I.baseColorTexture,B.SRGBColorSpace)),r.metalness=I.metallicFactor!==void 0?I.metallicFactor:1,r.roughness=I.roughnessFactor!==void 0?I.roughnessFactor:1,I.metallicRoughnessTexture!==void 0&&(a.push(e.assignTexture(r,"metalnessMap",I.metallicRoughnessTexture)),a.push(e.assignTexture(r,"roughnessMap",I.metallicRoughnessTexture))),i=this._invokeOne(function(Q){return Q.getMaterialType&&Q.getMaterialType(A)}),a.push(Promise.all(this._invokeAll(function(Q){return Q.extendMaterialParams&&Q.extendMaterialParams(A,r)})))}n.doubleSided===!0&&(r.side=B.DoubleSide);const g=n.alphaMode||ce.OPAQUE;if(g===ce.BLEND?(r.transparent=!0,r.depthWrite=!1):(r.transparent=!1,g===ce.MASK&&(r.alphaTest=n.alphaCutoff!==void 0?n.alphaCutoff:.5)),n.normalTexture!==void 0&&i!==B.MeshBasicMaterial&&(a.push(e.assignTexture(r,"normalMap",n.normalTexture)),r.normalScale=new B.Vector2(1,1),n.normalTexture.scale!==void 0)){const I=n.normalTexture.scale;r.normalScale.set(I,I)}if(n.occlusionTexture!==void 0&&i!==B.MeshBasicMaterial&&(a.push(e.assignTexture(r,"aoMap",n.occlusionTexture)),n.occlusionTexture.strength!==void 0&&(r.aoMapIntensity=n.occlusionTexture.strength)),n.emissiveFactor!==void 0&&i!==B.MeshBasicMaterial){const I=n.emissiveFactor;r.emissive=new B.Color().setRGB(I[0],I[1],I[2],B.LinearSRGBColorSpace)}return n.emissiveTexture!==void 0&&i!==B.MeshBasicMaterial&&a.push(e.assignTexture(r,"emissiveMap",n.emissiveTexture,B.SRGBColorSpace)),Promise.all(a).then(function(){const I=new i(r);return n.name&&(I.name=n.name),tA(I,n),e.associations.set(I,{materials:A}),n.extensions&&gA(t,I,n),I})}createUniqueName(A){const e=B.PropertyBinding.sanitizeNodeName(A||"");return e in this.nodeNamesUsed?e+"_"+ ++this.nodeNamesUsed[e]:(this.nodeNamesUsed[e]=0,e)}loadGeometries(A){const e=this,s=this.extensions,t=this.primitiveCache;function n(r){return s[p.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(r,e).then(function(o){return Pe(o,r,e)})}const i=[];for(let r=0,o=A.length;r<o;r++){const a=A[r],g=As(a),I=t[g];if(I)i.push(I.promise);else{let Q;a.extensions&&a.extensions[p.KHR_DRACO_MESH_COMPRESSION]?Q=n(a):Q=Pe(new B.BufferGeometry,a,e),t[g]={primitive:a,promise:Q},i.push(Q)}}return Promise.all(i)}loadMesh(A){const e=this,s=this.json,t=this.extensions,n=s.meshes[A],i=n.primitives,r=[];for(let o=0,a=i.length;o<a;o++){const g=i[o].material===void 0?Zt(this.cache):this.getDependency("material",i[o].material);r.push(g)}return r.push(e.loadGeometries(i)),Promise.all(r).then(function(o){const a=o.slice(0,o.length-1),g=o[o.length-1],I=[];for(let h=0,d=g.length;h<d;h++){const l=g[h],c=i[h];let u;const f=a[h];if(c.mode===K.TRIANGLES||c.mode===K.TRIANGLE_STRIP||c.mode===K.TRIANGLE_FAN||c.mode===void 0)u=n.isSkinnedMesh===!0?new B.SkinnedMesh(l,f):new B.Mesh(l,f),u.isSkinnedMesh===!0&&u.normalizeSkinWeights(),c.mode===K.TRIANGLE_STRIP?u.geometry=be(u.geometry,B.TriangleStripDrawMode):c.mode===K.TRIANGLE_FAN&&(u.geometry=be(u.geometry,B.TriangleFanDrawMode));else if(c.mode===K.LINES)u=new B.LineSegments(l,f);else if(c.mode===K.LINE_STRIP)u=new B.Line(l,f);else if(c.mode===K.LINE_LOOP)u=new B.LineLoop(l,f);else if(c.mode===K.POINTS)u=new B.Points(l,f);else throw new Error("THREE.GLTFLoader: Primitive mode unsupported: "+c.mode);Object.keys(u.geometry.morphAttributes).length>0&&$t(u,n),u.name=e.createUniqueName(n.name||"mesh_"+A),tA(u,n),c.extensions&&gA(t,u,c),e.assignFinalMaterial(u),I.push(u)}for(let h=0,d=I.length;h<d;h++)e.associations.set(I[h],{meshes:A,primitives:h});if(I.length===1)return n.extensions&&gA(t,I[0],n),I[0];const Q=new B.Group;n.extensions&&gA(t,Q,n),e.associations.set(Q,{meshes:A});for(let h=0,d=I.length;h<d;h++)Q.add(I[h]);return Q})}loadCamera(A){let e;const s=this.json.cameras[A],t=s[s.type];if(!t){console.warn("THREE.GLTFLoader: Missing camera parameters.");return}return s.type==="perspective"?e=new B.PerspectiveCamera(B.MathUtils.radToDeg(t.yfov),t.aspectRatio||1,t.znear||1,t.zfar||2e6):s.type==="orthographic"&&(e=new B.OrthographicCamera(-t.xmag,t.xmag,t.ymag,-t.ymag,t.znear,t.zfar)),s.name&&(e.name=this.createUniqueName(s.name)),tA(e,s),Promise.resolve(e)}loadSkin(A){const e=this.json.skins[A],s=[];for(let t=0,n=e.joints.length;t<n;t++)s.push(this._loadNodeShallow(e.joints[t]));return e.inverseBindMatrices!==void 0?s.push(this.getDependency("accessor",e.inverseBindMatrices)):s.push(null),Promise.all(s).then(function(t){const n=t.pop(),i=t,r=[],o=[];for(let a=0,g=i.length;a<g;a++){const I=i[a];if(I){r.push(I);const Q=new B.Matrix4;n!==null&&Q.fromArray(n.array,a*16),o.push(Q)}else console.warn('THREE.GLTFLoader: Joint "%s" could not be found.',e.joints[a])}return new B.Skeleton(r,o)})}loadAnimation(A){const e=this.json,s=this,t=e.animations[A],n=t.name?t.name:"animation_"+A,i=[],r=[],o=[],a=[],g=[];for(let I=0,Q=t.channels.length;I<Q;I++){const h=t.channels[I],d=t.samplers[h.sampler],l=h.target,c=l.node,u=t.parameters!==void 0?t.parameters[d.input]:d.input,f=t.parameters!==void 0?t.parameters[d.output]:d.output;l.node!==void 0&&(i.push(this.getDependency("node",c)),r.push(this.getDependency("accessor",u)),o.push(this.getDependency("accessor",f)),a.push(d),g.push(l))}return Promise.all([Promise.all(i),Promise.all(r),Promise.all(o),Promise.all(a),Promise.all(g)]).then(function(I){const Q=I[0],h=I[1],d=I[2],l=I[3],c=I[4],u=[];for(let f=0,D=Q.length;f<D;f++){const F=Q[f],m=h[f],M=d[f],S=l[f],_=c[f];if(F===void 0)continue;F.updateMatrix&&F.updateMatrix();const U=s._createAnimationTracks(F,m,M,S,_);if(U)for(let X=0;X<U.length;X++)u.push(U[X])}return new B.AnimationClip(n,void 0,u)})}createNodeMesh(A){const e=this.json,s=this,t=e.nodes[A];return t.mesh===void 0?null:s.getDependency("mesh",t.mesh).then(function(n){const i=s._getNodeRef(s.meshCache,t.mesh,n);return t.weights!==void 0&&i.traverse(function(r){if(r.isMesh)for(let o=0,a=t.weights.length;o<a;o++)r.morphTargetInfluences[o]=t.weights[o]}),i})}loadNode(A){const e=this.json,s=this,t=e.nodes[A],n=s._loadNodeShallow(A),i=[],r=t.children||[];for(let a=0,g=r.length;a<g;a++)i.push(s.getDependency("node",r[a]));const o=t.skin===void 0?Promise.resolve(null):s.getDependency("skin",t.skin);return Promise.all([n,Promise.all(i),o]).then(function(a){const g=a[0],I=a[1],Q=a[2];Q!==null&&g.traverse(function(h){h.isSkinnedMesh&&h.bind(Q,ts)});for(let h=0,d=I.length;h<d;h++)g.add(I[h]);return g})}_loadNodeShallow(A){const e=this.json,s=this.extensions,t=this;if(this.nodeCache[A]!==void 0)return this.nodeCache[A];const n=e.nodes[A],i=n.name?t.createUniqueName(n.name):"",r=[],o=t._invokeOne(function(a){return a.createNodeMesh&&a.createNodeMesh(A)});return o&&r.push(o),n.camera!==void 0&&r.push(t.getDependency("camera",n.camera).then(function(a){return t._getNodeRef(t.cameraCache,n.camera,a)})),t._invokeAll(function(a){return a.createNodeAttachment&&a.createNodeAttachment(A)}).forEach(function(a){r.push(a)}),this.nodeCache[A]=Promise.all(r).then(function(a){let g;if(n.isBone===!0?g=new B.Bone:a.length>1?g=new B.Group:a.length===1?g=a[0]:g=new B.Object3D,g!==a[0])for(let I=0,Q=a.length;I<Q;I++)g.add(a[I]);if(n.name&&(g.userData.name=n.name,g.name=i),tA(g,n),n.extensions&&gA(s,g,n),n.matrix!==void 0){const I=new B.Matrix4;I.fromArray(n.matrix),g.applyMatrix4(I)}else n.translation!==void 0&&g.position.fromArray(n.translation),n.rotation!==void 0&&g.quaternion.fromArray(n.rotation),n.scale!==void 0&&g.scale.fromArray(n.scale);return t.associations.has(g)||t.associations.set(g,{}),t.associations.get(g).nodes=A,g}),this.nodeCache[A]}loadScene(A){const e=this.extensions,s=this.json.scenes[A],t=this,n=new B.Group;s.name&&(n.name=t.createUniqueName(s.name)),tA(n,s),s.extensions&&gA(e,n,s);const i=s.nodes||[],r=[];for(let o=0,a=i.length;o<a;o++)r.push(t.getDependency("node",i[o]));return Promise.all(r).then(function(o){for(let g=0,I=o.length;g<I;g++)n.add(o[g]);const a=g=>{const I=new Map;for(const[Q,h]of t.associations)(Q instanceof B.Material||Q instanceof B.Texture)&&I.set(Q,h);return g.traverse(Q=>{const h=t.associations.get(Q);h!=null&&I.set(Q,h)}),I};return t.associations=a(n),n})}_createAnimationTracks(A,e,s,t,n){const i=[],r=A.name?A.name:A.uuid,o=[];eA[n.path]===eA.weights?A.traverse(function(Q){Q.morphTargetInfluences&&o.push(Q.name?Q.name:Q.uuid)}):o.push(r);let a;switch(eA[n.path]){case eA.weights:a=B.NumberKeyframeTrack;break;case eA.rotation:a=B.QuaternionKeyframeTrack;break;case eA.position:case eA.scale:a=B.VectorKeyframeTrack;break;default:switch(s.itemSize){case 1:a=B.NumberKeyframeTrack;break;case 2:case 3:default:a=B.VectorKeyframeTrack;break}break}const g=t.interpolation!==void 0?jt[t.interpolation]:B.InterpolateLinear,I=this._getArrayFromAccessor(s);for(let Q=0,h=o.length;Q<h;Q++){const d=new a(o[Q]+"."+eA[n.path],e.array,I,g);t.interpolation==="CUBICSPLINE"&&this._createCubicSplineTrackInterpolant(d),i.push(d)}return i}_getArrayFromAccessor(A){let e=A.array;if(A.normalized){const s=we(e.constructor),t=new Float32Array(e.length);for(let n=0,i=e.length;n<i;n++)t[n]=e[n]*s;e=t}return e}_createCubicSplineTrackInterpolant(A){A.createInterpolant=function(s){const t=this instanceof B.QuaternionKeyframeTrack?Wt:ze;return new t(this.times,this.values,this.getValueSize()/3,s)},A.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0}}function ns(C,A,e){const s=A.attributes,t=new B.Box3;if(s.POSITION!==void 0){const r=e.json.accessors[s.POSITION],o=r.min,a=r.max;if(o!==void 0&&a!==void 0){if(t.set(new B.Vector3(o[0],o[1],o[2]),new B.Vector3(a[0],a[1],a[2])),r.normalized){const g=we(fA[r.componentType]);t.min.multiplyScalar(g),t.max.multiplyScalar(g)}}else{console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");return}}else return;const n=A.targets;if(n!==void 0){const r=new B.Vector3,o=new B.Vector3;for(let a=0,g=n.length;a<g;a++){const I=n[a];if(I.POSITION!==void 0){const Q=e.json.accessors[I.POSITION],h=Q.min,d=Q.max;if(h!==void 0&&d!==void 0){if(o.setX(Math.max(Math.abs(h[0]),Math.abs(d[0]))),o.setY(Math.max(Math.abs(h[1]),Math.abs(d[1]))),o.setZ(Math.max(Math.abs(h[2]),Math.abs(d[2]))),Q.normalized){const l=we(fA[Q.componentType]);o.multiplyScalar(l)}r.max(o)}else console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.")}}t.expandByVector(r)}C.boundingBox=t;const i=new B.Sphere;t.getCenter(i.center),i.radius=t.min.distanceTo(t.max)/2,C.boundingSphere=i}function Pe(C,A,e){const s=A.attributes,t=[];function n(i,r){return e.getDependency("accessor",i).then(function(o){C.setAttribute(r,o)})}for(const i in s){const r=Me[i]||i.toLowerCase();r in C.attributes||t.push(n(s[i],r))}if(A.indices!==void 0&&!C.index){const i=e.getDependency("accessor",A.indices).then(function(r){C.setIndex(r)});t.push(i)}return B.ColorManagement.workingColorSpace!==B.LinearSRGBColorSpace&&"COLOR_0"in s&&console.warn(`THREE.GLTFLoader: Converting vertex colors from "srgb-linear" to "${B.ColorManagement.workingColorSpace}" not supported.`),tA(C,A),ns(C,A,e),Promise.all(t).then(function(){return A.targets!==void 0?zt(C,A.targets,e):C})}const he=new WeakMap;class is extends B.Loader{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,s,t){const n=new B.FileLoader(this.manager);n.setPath(this.path),n.setResponseType("arraybuffer"),n.setRequestHeader(this.requestHeader),n.setWithCredentials(this.withCredentials),n.load(A,i=>{this.parse(i,e,t)},s,t)}parse(A,e,s=()=>{}){this.decodeDracoFile(A,e,null,null,B.SRGBColorSpace).catch(s)}decodeDracoFile(A,e,s,t,n=B.LinearSRGBColorSpace,i=()=>{}){const r={attributeIDs:s||this.defaultAttributeIDs,attributeTypes:t||this.defaultAttributeTypes,useUniqueIDs:!!s,vertexColorSpace:n};return this.decodeGeometry(A,r).then(e).catch(i)}decodeGeometry(A,e){const s=JSON.stringify(e);if(he.has(A)){const o=he.get(A);if(o.key===s)return o.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 t;const n=this.workerNextTaskID++,i=A.byteLength,r=this._getWorker(n,i).then(o=>(t=o,new Promise((a,g)=>{t._callbacks[n]={resolve:a,reject:g},t.postMessage({type:"decode",id:n,taskConfig:e,buffer:A},[A])}))).then(o=>this._createGeometry(o.geometry));return r.catch(()=>!0).then(()=>{t&&n&&this._releaseTask(t,n)}),he.set(A,{key:s,promise:r}),r}_createGeometry(A){const e=new B.BufferGeometry;A.index&&e.setIndex(new B.BufferAttribute(A.index.array,1));for(let s=0;s<A.attributes.length;s++){const t=A.attributes[s],n=t.name,i=t.array,r=t.itemSize,o=new B.BufferAttribute(i,r);n==="color"&&(this._assignVertexColorSpace(o,t.vertexColorSpace),o.normalized=!(i instanceof Float32Array)),e.setAttribute(n,o)}return e}_assignVertexColorSpace(A,e){if(e!==B.SRGBColorSpace)return;const s=new B.Color;for(let t=0,n=A.count;t<n;t++)s.fromBufferAttribute(A,t).convertSRGBToLinear(),A.setXYZ(t,s.r,s.g,s.b)}_loadLibrary(A,e){const s=new B.FileLoader(this.manager);return s.setPath(this.decoderPath),s.setResponseType(e),s.setWithCredentials(this.withCredentials),new Promise((t,n)=>{s.load(A,t,void 0,n)})}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(s=>{const t=s[0];A||(this.decoderConfig.wasmBinary=s[1]);const n=os.toString(),i=["/* draco decoder */",t,"","/* worker */",n.substring(n.indexOf("{")+1,n.lastIndexOf("}"))].join(`
9
- `);this.workerSourceURL=URL.createObjectURL(new Blob([i]))}),this.decoderPending}_getWorker(A,e){return this._initDecoder().then(()=>{if(this.workerPool.length<this.workerLimit){const t=new Worker(this.workerSourceURL);t._callbacks={},t._taskCosts={},t._taskLoad=0,t.postMessage({type:"init",decoderConfig:this.decoderConfig}),t.onmessage=function(n){const i=n.data;switch(i.type){case"decode":t._callbacks[i.id].resolve(i);break;case"error":t._callbacks[i.id].reject(i);break;default:console.error('THREE.DRACOLoader: Unexpected message, "'+i.type+'"')}},this.workerPool.push(t)}else this.workerPool.sort(function(t,n){return t._taskLoad>n._taskLoad?-1:1});const s=this.workerPool[this.workerPool.length-1];return s._taskCosts[A]=e,s._taskLoad+=e,s})}_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.workerSourceURL!==""&&URL.revokeObjectURL(this.workerSourceURL),this}}function os(){let C,A;onmessage=function(i){const r=i.data;switch(r.type){case"init":C=r.decoderConfig,A=new Promise(function(g){C.onModuleLoaded=function(I){g({draco:I})},DracoDecoderModule(C)});break;case"decode":const o=r.buffer,a=r.taskConfig;A.then(g=>{const I=g.draco,Q=new I.Decoder;try{const h=e(I,Q,new Int8Array(o),a),d=h.attributes.map(l=>l.array.buffer);h.index&&d.push(h.index.array.buffer),self.postMessage({type:"decode",id:r.id,geometry:h},d)}catch(h){console.error(h),self.postMessage({type:"error",id:r.id,error:h.message})}finally{I.destroy(Q)}});break}};function e(i,r,o,a){const g=a.attributeIDs,I=a.attributeTypes;let Q,h;const d=r.GetEncodedGeometryType(o);if(d===i.TRIANGULAR_MESH)Q=new i.Mesh,h=r.DecodeArrayToMesh(o,o.byteLength,Q);else if(d===i.POINT_CLOUD)Q=new i.PointCloud,h=r.DecodeArrayToPointCloud(o,o.byteLength,Q);else throw new Error("THREE.DRACOLoader: Unexpected geometry type.");if(!h.ok()||Q.ptr===0)throw new Error("THREE.DRACOLoader: Decoding failed: "+h.error_msg());const l={index:null,attributes:[]};for(const c in g){const u=self[I[c]];let f,D;if(a.useUniqueIDs)D=g[c],f=r.GetAttributeByUniqueId(Q,D);else{if(D=r.GetAttributeId(Q,i[g[c]]),D===-1)continue;f=r.GetAttribute(Q,D)}const F=t(i,r,Q,c,u,f);c==="color"&&(F.vertexColorSpace=a.vertexColorSpace),l.attributes.push(F)}return d===i.TRIANGULAR_MESH&&(l.index=s(i,r,Q)),i.destroy(Q),l}function s(i,r,o){const g=o.num_faces()*3,I=g*4,Q=i._malloc(I);r.GetTrianglesUInt32Array(o,I,Q);const h=new Uint32Array(i.HEAPF32.buffer,Q,g).slice();return i._free(Q),{array:h,itemSize:1}}function t(i,r,o,a,g,I){const Q=I.num_components(),d=o.num_points()*Q,l=d*g.BYTES_PER_ELEMENT,c=n(i,g),u=i._malloc(l);r.GetAttributeDataArrayForAllPoints(o,I,c,l,u);const f=new g(i.HEAPF32.buffer,u,d).slice();return i._free(u),{name:a,array:f,itemSize:Q}}function n(i,r){switch(r){case Float32Array:return i.DT_FLOAT32;case Int8Array:return i.DT_INT8;case Int16Array:return i.DT_INT16;case Int32Array:return i.DT_INT32;case Uint8Array:return i.DT_UINT8;case Uint16Array:return i.DT_UINT16;case Uint32Array:return i.DT_UINT32}}}class rs{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 s=this.workersResolve[A];if(s&&s(e),this.queue.length){const{resolve:t,msg:n,transfer:i}=this.queue.shift();this.workersResolve[A]=t,this.workers[A].postMessage(n,i)}else this.workerStatus^=1<<A}setWorkerCreator(A){this.workerCreator=A}setWorkerLimit(A){this.pool=A}postMessage(A,e){return new Promise(s=>{const t=this._getIdleWorker();t!==-1?(this._initWorker(t),this.workerStatus|=1<<t,this.workersResolve[t]=s,this.workers[t].postMessage(A,e)):this.queue.push({resolve:s,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 Bs=0,Ye=2,as=1,qe=2,Cs=0,Is=1,gs=10,Es=0,$e=9,At=15,et=16,tt=22,st=37,nt=43,it=76,ot=83,rt=97,Bt=100,at=103,Ct=109,It=165,gt=166;class cs{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 UA{constructor(A,e,s,t){this._dataView=new DataView(A.buffer,A.byteOffset+e,s),this._littleEndian=t,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 s=this._offset;let t=0;for(;this._dataView.getUint8(this._offset)!==e&&t<A;)t++,this._offset++;return t<A&&this._offset++,new Uint8Array(this._dataView.buffer,this._dataView.byteOffset+s,t)}}const J=[171,75,84,88,32,50,48,187,13,10,26,10];function Xe(C){return typeof TextDecoder!="undefined"?new TextDecoder().decode(C):Buffer.from(C).toString("utf8")}function Qs(C){const A=new Uint8Array(C.buffer,C.byteOffset,J.length);if(A[0]!==J[0]||A[1]!==J[1]||A[2]!==J[2]||A[3]!==J[3]||A[4]!==J[4]||A[5]!==J[5]||A[6]!==J[6]||A[7]!==J[7]||A[8]!==J[8]||A[9]!==J[9]||A[10]!==J[10]||A[11]!==J[11])throw new Error("Missing KTX 2.0 identifier.");const e=new cs,s=17*Uint32Array.BYTES_PER_ELEMENT,t=new UA(C,J.length,s,!0);e.vkFormat=t._nextUint32(),e.typeSize=t._nextUint32(),e.pixelWidth=t._nextUint32(),e.pixelHeight=t._nextUint32(),e.pixelDepth=t._nextUint32(),e.layerCount=t._nextUint32(),e.faceCount=t._nextUint32();const n=t._nextUint32();e.supercompressionScheme=t._nextUint32();const i=t._nextUint32(),r=t._nextUint32(),o=t._nextUint32(),a=t._nextUint32(),g=t._nextUint64(),I=t._nextUint64(),Q=new UA(C,J.length+s,3*n*8,!0);for(let H=0;H<n;H++)e.levels.push({levelData:new Uint8Array(C.buffer,C.byteOffset+Q._nextUint64(),Q._nextUint64()),uncompressedByteLength:Q._nextUint64()});const h=new UA(C,i,r,!0),d={vendorId:h._skip(4)._nextUint16(),descriptorType:h._nextUint16(),versionNumber:h._nextUint16(),descriptorBlockSize:h._nextUint16(),colorModel:h._nextUint8(),colorPrimaries:h._nextUint8(),transferFunction:h._nextUint8(),flags:h._nextUint8(),texelBlockDimension:[h._nextUint8(),h._nextUint8(),h._nextUint8(),h._nextUint8()],bytesPlane:[h._nextUint8(),h._nextUint8(),h._nextUint8(),h._nextUint8(),h._nextUint8(),h._nextUint8(),h._nextUint8(),h._nextUint8()],samples:[]},l=(d.descriptorBlockSize/4-6)/4;for(let H=0;H<l;H++){const N={bitOffset:h._nextUint16(),bitLength:h._nextUint8(),channelType:h._nextUint8(),samplePosition:[h._nextUint8(),h._nextUint8(),h._nextUint8(),h._nextUint8()],sampleLower:-1/0,sampleUpper:1/0};64&N.channelType?(N.sampleLower=h._nextInt32(),N.sampleUpper=h._nextInt32()):(N.sampleLower=h._nextUint32(),N.sampleUpper=h._nextUint32()),d.samples[H]=N}e.dataFormatDescriptor.length=0,e.dataFormatDescriptor.push(d);const c=new UA(C,o,a,!0);for(;c._offset<a;){const H=c._nextUint32(),N=c._scan(H),HA=Xe(N),V=c._scan(H-N.byteLength);e.keyValue[HA]=HA.match(/^ktx/i)?Xe(V):V,c._offset%4&&c._skip(4-c._offset%4)}if(I<=0)return e;const u=new UA(C,g,I,!0),f=u._nextUint16(),D=u._nextUint16(),F=u._nextUint32(),m=u._nextUint32(),M=u._nextUint32(),S=u._nextUint32(),_=[];for(let H=0;H<n;H++)_.push({imageFlags:u._nextUint32(),rgbSliceByteOffset:u._nextUint32(),rgbSliceByteLength:u._nextUint32(),alphaSliceByteOffset:u._nextUint32(),alphaSliceByteLength:u._nextUint32()});const U=g+u._offset,X=U+F,TA=X+m,se=TA+M,IA=new Uint8Array(C.buffer,C.byteOffset+U,F),ne=new Uint8Array(C.buffer,C.byteOffset+X,m),$=new Uint8Array(C.buffer,C.byteOffset+TA,M),ie=new Uint8Array(C.buffer,C.byteOffset+se,S);return e.globalData={endpointCount:f,selectorCount:D,imageDescs:_,endpointsData:IA,selectorsData:ne,tablesData:$,extendedData:ie},e}let le,v,Se;const de={env:{emscripten_notify_memory_growth:function(C){Se=new Uint8Array(v.exports.memory.buffer)}}};class hs{init(){return le||(le=typeof fetch!="undefined"?fetch("data:application/wasm;base64,"+Ve).then(A=>A.arrayBuffer()).then(A=>WebAssembly.instantiate(A,de)).then(this._init):WebAssembly.instantiate(Buffer.from(Ve,"base64"),de).then(this._init),le)}_init(A){v=A.instance,de.env.emscripten_notify_memory_growth(0)}decode(A,e=0){if(!v)throw new Error("ZSTDDecoder: Await .init() before decoding.");const s=A.byteLength,t=v.exports.malloc(s);Se.set(A,t),e=e||Number(v.exports.ZSTD_findDecompressedSize(t,s));const n=v.exports.malloc(e),i=v.exports.ZSTD_decompress(n,e,t,s),r=Se.slice(n,n+i);return v.exports.free(t),v.exports.free(n),r}}const Ve="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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+Rw0AIAAgASgABDYCmOIBQWIgAEEQaiABIAIQPiIDEAMNAhogAEKBgICAEDcDiOEBIAAgASADaiACIANrECoMAQsgACABIAIQKgtBAAsLrQMBBn8jAEGAAWsiAyQAQWIhCAJAIAJBCUkNACAAQZjQAGogAUEIaiIEIAJBeGogAEGY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wOABCwutAgIEfwF+IwBBQGoiBCQAAkACQCACQQhJDQAgASgAAEFwcUHQ1LTCAUcNACABIAIQIiEBIABCADcDCCAAQQA2AgQgACABNgIADAELIARBGGogASACEC0iAxADBEAgACADEBoMAQsgAwRAIABBuH8QGgwBCyACIAQoAjAiA2shAiABIANqIQMDQAJAIAAgAyACIARBCGoQLCIFEAMEfyAFBSACIAVBA2oiBU8NAUG4fwsQGgwCCyAGQQFqIQYgAiAFayECIAMgBWohAyAEKAIMRQ0ACyAEKAI4BEAgAkEDTQRAIABBuH8QGgwCCyADQQRqIQMLIAQoAighAiAEKQMYIQcgAEEANgIEIAAgAyABazYCACAAIAIgBmytIAcgB0J/URs3AwgLIARBQGskAAslAQF/IwBBEGsiAiQAIAIgACABEFEgAigCACEAIAJBEGokACAAC30BBH8jAEGQBGsiBCQAIARB/wE2AggCQCAEQRBqIARBCGogBEEMaiABIAIQFSIGEAMEQCAGIQUMAQtBVCEFIAQoAgwiB0EGSw0AIAMgBEEQaiAEKAIIIAcQQSIFEAMNACAAIAEgBmogAiAGayADEDwhBQsgBEGQBGokACAFC4cBAgJ/An5BABAWIQMCQANAIAEgA08EQAJAIAAoAABBcHFB0NS0wgFGBEAgACABECIiAhADRQ0BQn4PCyAAIAEQVSIEQn1WDQMgBCAFfCIFIARUIQJCfiEEIAINAyAAIAEQUiICEAMNAwsgASACayEBIAAgAmohAAwBCwtCfiAFIAEbIQQLIAQLPwIBfwF+IwBBMGsiAiQAAn5CfiACQQhqIAAgARAtDQAaQgAgAigCHEEBRg0AGiACKQMICyEDIAJBMGokACADC40BAQJ/IwBBMGsiASQAAkAgAEUNACAAKAKI4gENACABIABB/OEBaigCADYCKCABIAApAvThATcDICAAEDAgACgCqOIBIQIgASABKAIoNgIYIAEgASkDIDcDECACIAFBEGoQGyAAQQA2AqjiASABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALKgECfyMAQRBrIgAkACAAQQA2AgggAEIANwMAIAAQWCEBIABBEGokACABC4cBAQN/IwBBEGsiAiQAAkAgACgCAEUgACgCBEVzDQAgAiAAKAIINgIIIAIgACkCADcDAAJ/IAIoAgAiAQRAIAIoAghBqOMJIAERBQAMAQtBqOMJECgLIgFFDQAgASAAKQIANwL04QEgAUH84QFqIAAoAgg2AgAgARBZIAEhAwsgAkEQaiQAIAMLywEBAn8jAEEgayIBJAAgAEGBgIDAADYCtOIBIABBADYCiOIBIABBADYC7OEBIABCADcDkOIBIABBADYCpOMJIABBADYC3OIBIABCADcCzOIBIABBADYCvOIBIABBADYCxOABIABCADcCnOIBIABBpOIBakIANwIAIABBrOIBakEANgIAIAFCADcCECABQgA3AhggASABKQMYNwMIIAEgASkDEDcDACABKAIIQQh2QQFxIQIgAEEANgLg4gEgACACNgKM4gEgAUEgaiQAC3YBA38jAEEwayIBJAAgAARAIAEgAEHE0AFqIgIoAgA2AiggASAAKQK80AE3AyAgACgCACEDIAEgAigCADYCGCABIAApArzQATcDECADIAFBEGoQGyABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALzAEBAX8gACABKAK00AE2ApjiASAAIAEoAgQiAjYCwOABIAAgAjYCvOABIAAgAiABKAIIaiICNgK44AEgACACNgLE4AEgASgCuNABBEAgAEKBgICAEDcDiOEBIAAgAUGk0ABqNgIMIAAgAUGUIGo2AgggACABQZwwajYCBCAAIAFBDGo2AgAgAEGs0AFqIAFBqNABaigCADYCACAAQbDQAWogAUGs0AFqKAIANgIAIABBtNABaiABQbDQAWooAgA2AgAPCyAAQgA3A4jhAQs7ACACRQRAQbp/DwsgBEUEQEFsDwsgAiAEEGAEQCAAIAEgAiADIAQgBRBhDwsgACABIAIgAyAEIAUQZQtGAQF/IwBBEGsiBSQAIAVBCGogBBAOAn8gBS0ACQRAIAAgASACIAMgBBAyDAELIAAgASACIAMgBBA0CyEAIAVBEGokACAACzQAIAAgAyAEIAUQNiIFEAMEQCAFDwsgBSAESQR/IAEgAiADIAVqIAQgBWsgABA1BUG4fwsLRgEBfyMAQRBrIgUkACAFQQhqIAQQDgJ/IAUtAAkEQCAAIAEgAiADIAQQYgwBCyAAIAEgAiADIAQQNQshACAFQRBqJAAgAAtZAQF/QQ8hAiABIABJBEAgAUEE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",ue=new WeakMap;let fe=0,De;class q extends B.Loader{constructor(A){super(A),this.transcoderPath="",this.transcoderBinary=null,this.transcoderPending=null,this.workerPool=new rs,this.workerSourceURL="",this.workerConfig=null,typeof MSC_TRANSCODER!="undefined"&&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}detectSupportAsync(A){return uA(this,null,function*(){return this.workerConfig={astcSupported:yield A.hasFeatureAsync("texture-compression-astc"),etc1Supported:yield A.hasFeatureAsync("texture-compression-etc1"),etc2Supported:yield A.hasFeatureAsync("texture-compression-etc2"),dxtSupported:yield A.hasFeatureAsync("texture-compression-bc"),bptcSupported:yield A.hasFeatureAsync("texture-compression-bptc"),pvrtcSupported:yield A.hasFeatureAsync("texture-compression-pvrtc")},this})}detectSupport(A){return A.isWebGPURenderer===!0?this.workerConfig={astcSupported:A.hasFeature("texture-compression-astc"),etc1Supported:A.hasFeature("texture-compression-etc1"),etc2Supported:A.hasFeature("texture-compression-etc2"),dxtSupported:A.hasFeature("texture-compression-bc"),bptcSupported:A.hasFeature("texture-compression-bptc"),pvrtcSupported:A.hasFeature("texture-compression-pvrtc")}:(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")},this.workerConfig.etc1Supported=!1),this}init(){if(!this.transcoderPending){const A=new B.FileLoader(this.manager);A.setPath(this.transcoderPath),A.setWithCredentials(this.withCredentials);const e=A.loadAsync("basis_transcoder.js"),s=new B.FileLoader(this.manager);s.setPath(this.transcoderPath),s.setResponseType("arraybuffer"),s.setWithCredentials(this.withCredentials);const t=s.loadAsync("basis_transcoder.wasm");this.transcoderPending=Promise.all([e,t]).then(([n,i])=>{const r=q.BasisWorker.toString(),o=["/* constants */","let _EngineFormat = "+JSON.stringify(q.EngineFormat),"let _TranscoderFormat = "+JSON.stringify(q.TranscoderFormat),"let _BasisFormat = "+JSON.stringify(q.BasisFormat),"/* basis_transcoder.js */",n,"/* worker */",r.substring(r.indexOf("{")+1,r.lastIndexOf("}"))].join(`
10
- `);this.workerSourceURL=URL.createObjectURL(new Blob([o])),this.transcoderBinary=i,this.workerPool.setWorkerCreator(()=>{const a=new Worker(this.workerSourceURL),g=this.transcoderBinary.slice(0);return a.postMessage({type:"init",config:this.workerConfig,transcoderBinary:g},[g]),a})}),fe>0&&console.warn("THREE.KTX2Loader: Multiple active KTX2 loaders may cause performance issues. Use a single KTX2Loader instance, or call .dispose() on old instances."),fe++}return this.transcoderPending}load(A,e,s,t){if(this.workerConfig===null)throw new Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");const n=new B.FileLoader(this.manager);n.setResponseType("arraybuffer"),n.setWithCredentials(this.withCredentials),n.load(A,i=>{if(ue.has(i))return ue.get(i).promise.then(e).catch(t);this._createTexture(i).then(r=>e?e(r):null).catch(t)},s,t)}_createTextureFrom(A,e){const{faces:s,width:t,height:n,format:i,type:r,error:o,dfdFlags:a}=A;if(r==="error")return Promise.reject(o);let g;if(e.faceCount===6)g=new B.CompressedCubeTexture(s,i,B.UnsignedByteType);else{const I=s[0].mipmaps;g=e.layerCount>1?new B.CompressedArrayTexture(I,t,n,e.layerCount,i,B.UnsignedByteType):new B.CompressedTexture(I,t,n,i,B.UnsignedByteType)}return g.minFilter=s[0].mipmaps.length===1?B.LinearFilter:B.LinearMipmapLinearFilter,g.magFilter=B.LinearFilter,g.generateMipmaps=!1,g.needsUpdate=!0,g.colorSpace=Et(e),g.premultiplyAlpha=!!(a&as),g}_createTexture(s){return uA(this,arguments,function*(A,e={}){const t=Qs(new Uint8Array(A));if(t.vkFormat!==Es)return ds(t);const n=e,i=this.init().then(()=>this.workerPool.postMessage({type:"transcode",buffer:A,taskConfig:n},[A])).then(r=>this._createTextureFrom(r.data,t));return ue.set(A,{promise:i}),i})}dispose(){return this.workerPool.dispose(),this.workerSourceURL&&URL.revokeObjectURL(this.workerSourceURL),fe--,this}}q.BasisFormat={ETC1S:0,UASTC_4x4:1};q.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};q.EngineFormat={RGBAFormat:B.RGBAFormat,RGBA_ASTC_4x4_Format:B.RGBA_ASTC_4x4_Format,RGBA_BPTC_Format:B.RGBA_BPTC_Format,RGBA_ETC2_EAC_Format:B.RGBA_ETC2_EAC_Format,RGBA_PVRTC_4BPPV1_Format:B.RGBA_PVRTC_4BPPV1_Format,RGBA_S3TC_DXT5_Format:B.RGBA_S3TC_DXT5_Format,RGB_ETC1_Format:B.RGB_ETC1_Format,RGB_ETC2_Format:B.RGB_ETC2_Format,RGB_PVRTC_4BPPV1_Format:B.RGB_PVRTC_4BPPV1_Format,RGB_S3TC_DXT1_Format:B.RGB_S3TC_DXT1_Format};q.BasisWorker=function(){let C,A,e;const s=_EngineFormat,t=_TranscoderFormat,n=_BasisFormat;self.addEventListener("message",function(d){const l=d.data;switch(l.type){case"init":C=l.config,i(l.transcoderBinary);break;case"transcode":A.then(()=>{try{const{faces:c,buffers:u,width:f,height:D,hasAlpha:F,format:m,dfdFlags:M}=r(l.buffer);self.postMessage({type:"transcode",id:l.id,faces:c,width:f,height:D,hasAlpha:F,format:m,dfdFlags:M},u)}catch(c){console.error(c),self.postMessage({type:"error",id:l.id,error:c.message})}});break}});function i(d){A=new Promise(l=>{e={wasmBinary:d,onRuntimeInitialized:l},BASIS(e)}).then(()=>{e.initializeBasis(),e.KTX2File===void 0&&console.warn("THREE.KTX2Loader: Please update Basis Universal transcoder.")})}function r(d){const l=new e.KTX2File(new Uint8Array(d));function c(){l.close(),l.delete()}if(!l.isValid())throw c(),new Error("THREE.KTX2Loader: Invalid or unsupported .ktx2 file");const u=l.isUASTC()?n.UASTC_4x4:n.ETC1S,f=l.getWidth(),D=l.getHeight(),F=l.getLayers()||1,m=l.getLevels(),M=l.getFaces(),S=l.getHasAlpha(),_=l.getDFDFlags(),{transcoderFormat:U,engineFormat:X}=I(u,f,D,S);if(!f||!D||!m)throw c(),new Error("THREE.KTX2Loader: Invalid texture");if(!l.startTranscoding())throw c(),new Error("THREE.KTX2Loader: .startTranscoding failed");const TA=[],se=[];for(let IA=0;IA<M;IA++){const ne=[];for(let $=0;$<m;$++){const ie=[];let H,N;for(let V=0;V<F;V++){const dA=l.getImageLevelInfo($,V,IA);IA===0&&$===0&&V===0&&(dA.origWidth%4!==0||dA.origHeight%4!==0)&&console.warn("THREE.KTX2Loader: ETC1S and UASTC textures should use multiple-of-four dimensions."),m>1?(H=dA.origWidth,N=dA.origHeight):(H=dA.width,N=dA.height);const Ue=new Uint8Array(l.getImageTranscodedSizeInBytes($,V,0,U));if(!l.transcodeImage(Ue,$,V,IA,U,0,-1,-1))throw c(),new Error("THREE.KTX2Loader: .transcodeImage failed.");ie.push(Ue)}const HA=h(ie);ne.push({data:HA,width:H,height:N}),se.push(HA.buffer)}TA.push({mipmaps:ne,width:f,height:D,format:X})}return c(),{faces:TA,buffers:se,width:f,height:D,hasAlpha:S,format:X,dfdFlags:_}}const o=[{if:"astcSupported",basisFormat:[n.UASTC_4x4],transcoderFormat:[t.ASTC_4x4,t.ASTC_4x4],engineFormat:[s.RGBA_ASTC_4x4_Format,s.RGBA_ASTC_4x4_Format],priorityETC1S:1/0,priorityUASTC:1,needsPowerOfTwo:!1},{if:"bptcSupported",basisFormat:[n.ETC1S,n.UASTC_4x4],transcoderFormat:[t.BC7_M5,t.BC7_M5],engineFormat:[s.RGBA_BPTC_Format,s.RGBA_BPTC_Format],priorityETC1S:3,priorityUASTC:2,needsPowerOfTwo:!1},{if:"dxtSupported",basisFormat:[n.ETC1S,n.UASTC_4x4],transcoderFormat:[t.BC1,t.BC3],engineFormat:[s.RGB_S3TC_DXT1_Format,s.RGBA_S3TC_DXT5_Format],priorityETC1S:4,priorityUASTC:5,needsPowerOfTwo:!1},{if:"etc2Supported",basisFormat:[n.ETC1S,n.UASTC_4x4],transcoderFormat:[t.ETC1,t.ETC2],engineFormat:[s.RGB_ETC2_Format,s.RGBA_ETC2_EAC_Format],priorityETC1S:1,priorityUASTC:3,needsPowerOfTwo:!1},{if:"etc1Supported",basisFormat:[n.ETC1S,n.UASTC_4x4],transcoderFormat:[t.ETC1],engineFormat:[s.RGB_ETC1_Format],priorityETC1S:2,priorityUASTC:4,needsPowerOfTwo:!1},{if:"pvrtcSupported",basisFormat:[n.ETC1S,n.UASTC_4x4],transcoderFormat:[t.PVRTC1_4_RGB,t.PVRTC1_4_RGBA],engineFormat:[s.RGB_PVRTC_4BPPV1_Format,s.RGBA_PVRTC_4BPPV1_Format],priorityETC1S:5,priorityUASTC:6,needsPowerOfTwo:!0}],a=o.sort(function(d,l){return d.priorityETC1S-l.priorityETC1S}),g=o.sort(function(d,l){return d.priorityUASTC-l.priorityUASTC});function I(d,l,c,u){let f,D;const F=d===n.ETC1S?a:g;for(let m=0;m<F.length;m++){const M=F[m];if(C[M.if]&&M.basisFormat.includes(d)&&!(u&&M.transcoderFormat.length<2)&&!(M.needsPowerOfTwo&&!(Q(l)&&Q(c))))return f=M.transcoderFormat[u?1:0],D=M.engineFormat[u?1:0],{transcoderFormat:f,engineFormat:D}}return console.warn("THREE.KTX2Loader: No suitable compressed texture format found. Decoding to RGBA32."),f=t.RGBA32,D=s.RGBAFormat,{transcoderFormat:f,engineFormat:D}}function Q(d){return d<=2?!0:(d&d-1)===0&&d!==0}function h(d){if(d.length===1)return d[0];let l=0;for(let f=0;f<d.length;f++){const D=d[f];l+=D.byteLength}const c=new Uint8Array(l);let u=0;for(let f=0;f<d.length;f++){const D=d[f];c.set(D,u),u+=D.byteLength}return c}};const ls=new Set([B.RGBAFormat,B.RGFormat,B.RedFormat]),Fe={[Ct]:B.RGBAFormat,[rt]:B.RGBAFormat,[st]:B.RGBAFormat,[nt]:B.RGBAFormat,[at]:B.RGFormat,[ot]:B.RGFormat,[et]:B.RGFormat,[tt]:B.RGFormat,[Bt]:B.RedFormat,[it]:B.RedFormat,[At]:B.RedFormat,[$e]:B.RedFormat,[gt]:B.RGBA_ASTC_6x6_Format,[It]:B.RGBA_ASTC_6x6_Format},Ge={[Ct]:B.FloatType,[rt]:B.HalfFloatType,[st]:B.UnsignedByteType,[nt]:B.UnsignedByteType,[at]:B.FloatType,[ot]:B.HalfFloatType,[et]:B.UnsignedByteType,[tt]:B.UnsignedByteType,[Bt]:B.FloatType,[it]:B.HalfFloatType,[At]:B.UnsignedByteType,[$e]:B.UnsignedByteType,[gt]:B.UnsignedByteType,[It]:B.UnsignedByteType};function ds(C){return uA(this,null,function*(){const{vkFormat:A}=C;if(Fe[A]===void 0)throw new Error("THREE.KTX2Loader: Unsupported vkFormat.");let e;C.supercompressionScheme===Ye&&(De||(De=new Promise(n=>uA(this,null,function*(){const i=new hs;yield i.init(),n(i)}))),e=yield De);const s=[];for(let n=0;n<C.levels.length;n++){const i=Math.max(1,C.pixelWidth>>n),r=Math.max(1,C.pixelHeight>>n),o=C.pixelDepth?Math.max(1,C.pixelDepth>>n):0,a=C.levels[n];let g;if(C.supercompressionScheme===Bs)g=a.levelData;else if(C.supercompressionScheme===Ye)g=e.decode(a.levelData,a.uncompressedByteLength);else throw new Error("THREE.KTX2Loader: Unsupported supercompressionScheme.");let I;Ge[A]===B.FloatType?I=new Float32Array(g.buffer,g.byteOffset,g.byteLength/Float32Array.BYTES_PER_ELEMENT):Ge[A]===B.HalfFloatType?I=new Uint16Array(g.buffer,g.byteOffset,g.byteLength/Uint16Array.BYTES_PER_ELEMENT):I=g,s.push({data:I,width:i,height:r,depth:o})}let t;if(ls.has(Fe[A]))t=C.pixelDepth===0?new B.DataTexture(s[0].data,C.pixelWidth,C.pixelHeight):new B.Data3DTexture(s[0].data,C.pixelWidth,C.pixelHeight,C.pixelDepth);else{if(C.pixelDepth>0)throw new Error("THREE.KTX2Loader: Unsupported pixelDepth.");t=new B.CompressedTexture(s,C.pixelWidth,C.pixelHeight)}return t.mipmaps=s,t.type=Ge[A],t.format=Fe[A],t.colorSpace=Et(C),t.needsUpdate=!0,Promise.resolve(t)})}function Et(C){const A=C.dataFormatDescriptor[0];return A.colorPrimaries===Is?A.transferFunction===qe?B.SRGBColorSpace:B.LinearSRGBColorSpace:A.colorPrimaries===gs?A.transferFunction===qe?B.DisplayP3ColorSpace:B.LinearDisplayP3ColorSpace:(A.colorPrimaries===Cs||console.warn(`THREE.KTX2Loader: Unsupported color primaries, "${A.colorPrimaries}"`),B.NoColorSpace)}let Be;const us=()=>{if(Be)return Be;const C="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",A="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",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]),s=new Uint8Array([32,0,65,253,3,1,2,34,4,106,6,5,11,8,7,20,13,33,12,16,128,9,116,64,19,113,127,15,10,21,22,14,255,66,24,54,136,107,18,23,192,26,114,118,132,17,77,101,130,144,27,87,131,44,45,74,156,154,70,167]);if(typeof WebAssembly!="object")return{supported:!1};let t=C;WebAssembly.validate(e)&&(t=A);let n;const i=WebAssembly.instantiate(r(t),{}).then(I=>{n=I.instance,n.exports.__wasm_call_ctors()});function r(I){const Q=new Uint8Array(I.length);for(let d=0;d<I.length;++d){const l=I.charCodeAt(d);Q[d]=l>96?l-71:l>64?l-65:l>47?l+4:l>46?63:62}let h=0;for(let d=0;d<I.length;++d)Q[h++]=Q[d]<60?s[Q[d]]:(Q[d]-60)*64+Q[++d];return Q.buffer.slice(0,h)}function o(I,Q,h,d,l,c){const u=n.exports.sbrk,f=h+3&-4,D=u(f*d),F=u(l.length),m=new Uint8Array(n.exports.memory.buffer);m.set(l,F);const M=I(D,h,d,F,l.length);if(M===0&&c&&c(D,f,d),Q.set(m.subarray(D,D+h*d)),u(D-u(0)),M!==0)throw new Error(`Malformed buffer data: ${M}`)}const a={0:"",1:"meshopt_decodeFilterOct",2:"meshopt_decodeFilterQuat",3:"meshopt_decodeFilterExp",NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp"},g={0:"meshopt_decodeVertexBuffer",1:"meshopt_decodeIndexBuffer",2:"meshopt_decodeIndexSequence",ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"};return Be={ready:i,supported:!0,decodeVertexBuffer(I,Q,h,d,l){o(n.exports.meshopt_decodeVertexBuffer,I,Q,h,d,n.exports[a[l]])},decodeIndexBuffer(I,Q,h,d){o(n.exports.meshopt_decodeIndexBuffer,I,Q,h,d)},decodeIndexSequence(I,Q,h,d){o(n.exports.meshopt_decodeIndexSequence,I,Q,h,d)},decodeGltfBuffer(I,Q,h,d,l,c){o(n.exports[g[l]],I,Q,h,d,n.exports[a[c]])}},Be};var pA,YA,qA,XA;class fs{constructor(){G(this,pA,new pt);G(this,YA,new is().setDecoderPath(`${w.CDNVersion}/examples/jsm/libs/draco/gltf/`));G(this,qA,new q().setTranscoderPath(`${w.CDNVersion}/examples/jsm/libs/basis/`));G(this,XA,!1);E(this,pA).setCrossOrigin("anonymous").setDRACOLoader(E(this,YA)).setMeshoptDecoder(us)}get gltfLoader(){return E(this,pA)}get dracoLoader(){return E(this,YA)}get ktx2Loader(){return E(this,qA)}load(...A){E(this,XA)||(E(this,pA).setKTX2Loader(E(this,qA).detectSupport(w.webglRenderer)),R(this,XA,!0));const[e,s,...t]=A;if(w.cacheAssets&&O.has(e)){const n=O.get(e).data;s(n)}else this.gltfLoader.load(e,n=>{w.cacheAssets&&O.set(e,{data:n,dispose:()=>{n.cameras.forEach(i=>kA(i)),n.scenes.forEach(i=>{kA(i)})}}),s(n)},...t)}}pA=new WeakMap,YA=new WeakMap,qA=new WeakMap,XA=new WeakMap;const ct=new fs;var j,L,Z,VA;class Ds{constructor(A,e){G(this,j,void 0);G(this,L,void 0);G(this,Z,[]);G(this,VA,()=>{const A=E(this,L).left-E(this,j).box.left,e=E(this,L).top-E(this,j).box.top;let s=0,t=0;E(this,j).isClipped||(s=E(this,L).position.x-E(this,L).left,t=E(this,L).position.y-E(this,L).top);const n=E(this,j).box.width-E(this,L).scale.x,i=A-n,r=E(this,j).box.height-E(this,L).scale.y,o=e-r;E(this,Z)[0].constant=E(this,L).scale.y/2+t*-1-r/2-o,E(this,Z)[1].constant=E(this,L).scale.y/2+t+r/2+o,E(this,Z)[2].constant=E(this,L).scale.x/2+s+n/2+i,E(this,Z)[3].constant=E(this,L).scale.x/2+s*-1-n/2-i});R(this,j,w.getView((e==null?void 0:e.viewName)||"default")),R(this,L,new pe.LayoutBox(A,{cartesian:!1}));const s=(e==null?void 0:e.scale)||1;R(this,Z,[new B.Plane(new B.Vector3(0,-1*s,0)),new B.Plane(new B.Vector3(0,1*s,0)),new B.Plane(new B.Vector3(-1*s,0,0)),new B.Plane(new B.Vector3(1*s,0,0))]),LA.ticker.subscribe(E(this,VA),{order:NA.TICK_ORDER.LAYOUT_BOX})}get planes(){return E(this,Z)}get layoutBox(){return E(this,L)}destroy(){LA.ticker.unsubscribe(E(this,VA)),E(this,L).destroy()}}j=new WeakMap,L=new WeakMap,Z=new WeakMap,VA=new WeakMap;class Fs extends B.Group{constructor(A,e=500){super(),this.add(new B.PlaneHelper(A.planes[0],e,16711680)),this.add(new B.PlaneHelper(A.planes[1],e,16711680)),this.add(new B.PlaneHelper(A.planes[2],e,16711680)),this.add(new B.PlaneHelper(A.planes[3],e,16711680))}}var mA,QA,MA,vA,WA,rA,wA,jA;class Te extends Dt.SourceManager{constructor(e){super(e);G(this,mA,new ke.Store(null));G(this,QA,new ke.Store(void 0));G(this,MA,void 0);G(this,vA,void 0);G(this,WA,void 0);G(this,rA,void 0);G(this,wA,!1);G(this,jA,()=>{if(!(E(this,rA)&&!E(this,wA))&&(this.current!==this.previous&&(E(this,mA).current=null),this.current)){const e=E(this,WA)?this.current.url:this.current.name+this.current.extension;E(this,rA)||ge.loading.setTotal(e,1),E(this,QA).current="start",E(this,vA).load(e,s=>{var t;E(this,mA).current=((t=this.processData)==null?void 0:t.call(this,s))||s,E(this,QA).current="complete",E(this,rA)||ge.loading.setLoaded(e,1)},void 0,()=>{E(this,rA)||(E(this,QA).current="error",ge.loading.setError(e,e))})}});R(this,MA,e.consumer),R(this,vA,e.loader),R(this,WA,e.keepSourceParameters||!1),R(this,rA,e.lazy||!1),this.subscribe(E(this,jA)),E(this,MA).addEventListener("added",()=>{this.connect()}),E(this,MA).addEventListener("removed",()=>{this.disconnect()})}get data(){return E(this,mA)}get loading(){return E(this,QA)}lazyLoad(){E(this,wA)||(R(this,wA,!0),E(this,jA).call(this))}}mA=new WeakMap,QA=new WeakMap,MA=new WeakMap,vA=new WeakMap,WA=new WeakMap,rA=new WeakMap,wA=new WeakMap,jA=new WeakMap;var hA;class Gs extends B.Group{constructor(e){super();G(this,hA,void 0);R(this,hA,new Te(AA({loader:ct,consumer:this},e))),E(this,hA).processData=s=>{if(w.cacheAssets){const t=AA({},s);return t.scene=s.scene.clone(!0),t.scenes=s.scenes.map(n=>s.scene===n?t.scene:n.clone(!0)),t}return s},E(this,hA).data.subscribe(s=>{s.current?this.add(...s.current.scene.children):this.children.forEach(t=>{this.remove(t),kA(t)})})}get sourceManager(){return E(this,hA)}}hA=new WeakMap;function He(C,A,e){const s=A.x,t=A.y,n=e||C.image.width/C.image.height;let i=0,r=0,o=C.offset.x,a=C.offset.y,g=C.rotation,I=C.center.x,Q=C.center.y;s/t>n?(i=1,r=t/s*n):(r=1,i=s/t/n),C.matrix.setUvTransform(o,a,i,r,g,I,Q)}const xA=new B.Vector3;function b(C,A,e,s,t,n){const i=2*Math.PI*t/4,r=Math.max(n-2*t,0),o=Math.PI/4;xA.copy(A),xA[s]=0,xA.normalize();const a=.5*i/(i+r),g=1-xA.angleTo(C)/o;return Math.sign(xA[e])===1?g*a:r/(i+r)+a+a*(1-g)}class Rs extends B.BoxGeometry{constructor(A=1,e=1,s=1,t=2,n=.1){if(t=t*2+1,n=Math.min(A/2,e/2,s/2,n),super(1,1,1,t,t,t),t===1)return;const i=this.toNonIndexed();this.index=null,this.attributes.position=i.attributes.position,this.attributes.normal=i.attributes.normal,this.attributes.uv=i.attributes.uv;const r=new B.Vector3,o=new B.Vector3,a=new B.Vector3(A,e,s).divideScalar(2).subScalar(n),g=this.attributes.position.array,I=this.attributes.normal.array,Q=this.attributes.uv.array,h=g.length/6,d=new B.Vector3,l=.5/t;for(let c=0,u=0;c<g.length;c+=3,u+=2)switch(r.fromArray(g,c),o.copy(r),o.x-=Math.sign(o.x)*l,o.y-=Math.sign(o.y)*l,o.z-=Math.sign(o.z)*l,o.normalize(),g[c+0]=a.x*Math.sign(r.x)+o.x*n,g[c+1]=a.y*Math.sign(r.y)+o.y*n,g[c+2]=a.z*Math.sign(r.z)+o.z*n,I[c+0]=o.x,I[c+1]=o.y,I[c+2]=o.z,Math.floor(c/h)){case 0:d.set(1,0,0),Q[u+0]=b(d,o,"z","y",n,s),Q[u+1]=1-b(d,o,"y","z",n,e);break;case 1:d.set(-1,0,0),Q[u+0]=1-b(d,o,"z","y",n,s),Q[u+1]=1-b(d,o,"y","z",n,e);break;case 2:d.set(0,1,0),Q[u+0]=1-b(d,o,"x","z",n,A),Q[u+1]=b(d,o,"z","x",n,s);break;case 3:d.set(0,-1,0),Q[u+0]=1-b(d,o,"x","z",n,A),Q[u+1]=1-b(d,o,"z","x",n,s);break;case 4:d.set(0,0,1),Q[u+0]=1-b(d,o,"x","y",n,A),Q[u+1]=1-b(d,o,"y","x",n,e);break;case 5:d.set(0,0,-1),Q[u+0]=b(d,o,"x","y",n,A),Q[u+1]=1-b(d,o,"y","x",n,e);break}}}const ve=new B.Vector3,ps=new B.Quaternion,We=new B.Vector3;class ms extends B.Object3D{constructor(A=document.createElement("div")){super(),this.isCSS3DObject=!0,this.element=A,this.element.style.position="absolute",this.element.style.pointerEvents="auto",this.element.style.userSelect="none",this.element.setAttribute("draggable",!1),this.addEventListener("removed",function(){this.traverse(function(e){e.element instanceof Element&&e.element.parentNode!==null&&e.element.parentNode.removeChild(e.element)})})}copy(A,e){return super.copy(A,e),this.element=A.element.cloneNode(!0),this}}const P=new B.Matrix4,Ms=new B.Matrix4;class ws{constructor(A={}){const e=this;let s,t,n,i;const r={camera:{style:""},objects:new WeakMap},o=A.element!==void 0?A.element:document.createElement("div");o.style.overflow="hidden",this.domElement=o;const a=document.createElement("div");a.style.transformOrigin="0 0",a.style.pointerEvents="none",o.appendChild(a);const g=document.createElement("div");g.style.transformStyle="preserve-3d",a.appendChild(g),this.getSize=function(){return{width:s,height:t}},this.render=function(l,c){const u=c.projectionMatrix.elements[5]*i;c.view&&c.view.enabled?(a.style.transform=`translate( ${-c.view.offsetX*(s/c.view.width)}px, ${-c.view.offsetY*(t/c.view.height)}px )`,a.style.transform+=`scale( ${c.view.fullWidth/c.view.width}, ${c.view.fullHeight/c.view.height} )`):a.style.transform="",l.matrixWorldAutoUpdate===!0&&l.updateMatrixWorld(),c.parent===null&&c.matrixWorldAutoUpdate===!0&&c.updateMatrixWorld();let f,D;c.isOrthographicCamera&&(f=-(c.right+c.left)/2,D=(c.top+c.bottom)/2);const F=c.view&&c.view.enabled?c.view.height/c.view.fullHeight:1,m=c.isOrthographicCamera?`scale( ${F} )scale(`+u+")translate("+I(f)+"px,"+I(D)+"px)"+Q(c.matrixWorldInverse):`scale( ${F} )translateZ(`+u+"px)"+Q(c.matrixWorldInverse),S=(c.isPerspectiveCamera?"perspective("+u+"px) ":"")+m+"translate("+n+"px,"+i+"px)";r.camera.style!==S&&(g.style.transform=S,r.camera.style=S),d(l,l,c)},this.setSize=function(l,c){s=l,t=c,n=s/2,i=t/2,o.style.width=l+"px",o.style.height=c+"px",a.style.width=l+"px",a.style.height=c+"px",g.style.width=l+"px",g.style.height=c+"px"};function I(l){return Math.abs(l)<1e-10?0:l}function Q(l){const c=l.elements;return"matrix3d("+I(c[0])+","+I(-c[1])+","+I(c[2])+","+I(c[3])+","+I(c[4])+","+I(-c[5])+","+I(c[6])+","+I(c[7])+","+I(c[8])+","+I(-c[9])+","+I(c[10])+","+I(c[11])+","+I(c[12])+","+I(-c[13])+","+I(c[14])+","+I(c[15])+")"}function h(l){const c=l.elements;return"translate(-50%,-50%)"+("matrix3d("+I(c[0])+","+I(c[1])+","+I(c[2])+","+I(c[3])+","+I(-c[4])+","+I(-c[5])+","+I(-c[6])+","+I(-c[7])+","+I(c[8])+","+I(c[9])+","+I(c[10])+","+I(c[11])+","+I(c[12])+","+I(c[13])+","+I(c[14])+","+I(c[15])+")")}function d(l,c,u,f){if(l.isCSS3DObject){const D=l.visible===!0&&l.layers.test(u.layers)===!0;if(l.element.style.display=D===!0?"":"none",D===!0){l.onBeforeRender(e,c,u);let F;l.isCSS3DSprite?(P.copy(u.matrixWorldInverse),P.transpose(),l.rotation2D!==0&&P.multiply(Ms.makeRotationZ(l.rotation2D)),l.matrixWorld.decompose(ve,ps,We),P.setPosition(ve),P.scale(We),P.elements[3]=0,P.elements[7]=0,P.elements[11]=0,P.elements[15]=1,F=h(P)):F=h(l.matrixWorld);const m=l.element,M=r.objects.get(l);if(M===void 0||M.style!==F){m.style.transform=F;const S={style:F};r.objects.set(l,S)}m.parentNode!==g&&g.appendChild(m),l.onAfterRender(e,c,u)}}for(let D=0,F=l.children.length;D<F;D++)d(l.children[D],c,u)}}}var z,SA,lA;class Je extends B.Mesh{constructor(e){super(new Rs(e.width,e.height,1,e.segments,e.round||0),e.material);G(this,z,void 0);G(this,SA,void 0);G(this,lA,()=>{E(this,z).data.current&&E(this,SA)==="cover"&&this.onCoverResize(E(this,z).data.current)});R(this,z,new Te(AA({consumer:this},e))),R(this,SA,e.fit),this.addEventListener("added",()=>{yA.windowResizer.subscribe(E(this,lA))}),this.addEventListener("removed",()=>{yA.windowResizer.unsubscribe(E(this,lA))}),E(this,z).processData=s=>w.cacheAssets?s.clone():s,E(this,z).data.subscribe(s=>{!s.current&&s.previous?s.previous.dispose():s.current&&this.material&&(E(this,SA)&&(s.current.matrixAutoUpdate=!1),s.current.colorSpace=B.SRGBColorSpace,s.current.center.set(.5,.5),this.material.map=s.current,this.material.needsUpdate=!0,E(this,lA).call(this))})}get sourceManager(){return E(this,z)}updateTexture(){E(this,lA).call(this)}onCoverResize(e){He(e,{x:this.scale.x,y:this.scale.y})}}z=new WeakMap,SA=new WeakMap,lA=new WeakMap;class Ss extends Je{constructor(A){super(oe(AA({},A),{loader:CA}))}}class ys{load(...A){const e=A[0],s=A[1],t=A[3],n=document.createElement("video");n.src=e,n.onloadeddata=()=>{s(new B.VideoTexture(n)),n.onerror=null,n.onloadeddata=null},n.onerror=()=>{t==null||t(e),n.onerror=null,n.onloadeddata=null}}}var ZA,zA,$A;class Ls extends Je{constructor(e){super(oe(AA({},e),{loader:new ys}));G(this,ZA,void 0);G(this,zA,void 0);G(this,$A,void 0);R(this,ZA,e.autoplay||!1),R(this,zA,e.muted||!1),R(this,$A,e.loop||!1),this.sourceManager.data.subscribe(s=>{if(s.current){const t=s.current.image;E(this,zA)&&(t.muted=!0),E(this,$A)&&(t.loop=!0),E(this,ZA)&&t.play()}})}onCoverResize(e){const s=e.image;He(e,{x:this.scale.x,y:this.scale.y},s.videoWidth/s.videoHeight)}}ZA=new WeakMap,zA=new WeakMap,$A=new WeakMap;function Ts(C,A){C.traverse(e=>{e instanceof B.Mesh&&A(e)})}function Hs(C,A){C.traverse(e=>{e instanceof B.Mesh&&e.material&&(Array.isArray(e.material)?e.material:[e.material]).forEach(A)})}const Re=new B.Vector3,Js=new B.Vector3;function Us(C,A="default"){const e=w.getView(A),{width:s,height:t}=w,n=s/t;C instanceof B.Vector3?Re.copy(C):Re.set(...C);const i=e.camera.getWorldPosition(Js).distanceTo(Re);if(e.camera instanceof B.OrthographicCamera)return{width:s/e.camera.zoom,height:t/e.camera.zoom,factor:1,distance:i,aspect:n};{const r=e.camera.fov*Math.PI/180,o=2*Math.tan(r/2)*i,a=o*(s/t);return{width:a,height:o,factor:s/a,distance:i,aspect:n}}}var Y,Ce,Qt,Ae,ee;const k=class k extends ms{static destroy(){yA.windowResizer.unsubscribe(E(this,ee)),LA.ticker.unsubscribe(E(this,Ae)),R(this,Y,null)}constructor(A){var e;super(A.element),E(k,Y)||re(e=k,Ce,Qt).call(e)}};Y=new WeakMap,Ce=new WeakSet,Qt=function(){R(k,Y,new ws),E(k,Y).domElement.style.cssText=`
8
+ `,o(this,iA).append(o(this,T).domElement),o(this,k).set("default",new Rt("default",eA({sizeElement:o(this,iA)},A==null?void 0:A.view))),D(this,Se,(A==null?void 0:A.cacheAssets)||!1),D(this,xA,!0),wA.windowResizer.subscribe(o(this,Le),we.RESIZE_ORDER.EN3),yA.ticker.subscribe(o(this,Te),{order:we.TICK_ORDER.EN3})}destroy(){if(!o(this,xA)){console.warn("[en3.setup]: You are trying to destory en3 but it has not been initialized.");return}wA.windowResizer.unsubscribe(o(this,Le)),yA.ticker.unsubscribe(o(this,Te)),o(this,k).forEach(A=>{A.destroy()}),o(this,T).dispose(),o(this,T).domElement.remove(),D(this,T,null),D(this,xA,!1),Y.forEach(A=>{A.dispose()}),Y.clear()}createView(A,e){const s=o(this,k).size,t=new Rt(A,e);return o(this,k).set(A,t),s===1&&o(this,T).setScissorTest(!0),t}getView(A){return o(this,k).get(A)}destroyView(A){const e=o(this,k).get(A);e&&(o(this,k).delete(A),e.destroy(),o(this,k).size<=1&&o(this,T).setScissorTest(!1))}render(A){var e;if(o(this,k).size>1||this.view.isClipped){const s=A.box.left+A.box.CSSTranslation.x+A.box.scrollValue.x,t=w.height-A.box.height-A.box.top+A.box.CSSTranslation.y+A.box.scrollValue.y*-1;o(this,T).setScissor(s,t,A.box.width,A.box.height),o(this,T).setViewport(s,t,A.box.width,A.box.height)}(e=A.beforeRenderCallback)==null||e.call(A),o(this,T).render(A.scene,A.camera)}}nt=new WeakMap,iA=new WeakMap,T=new WeakMap,k=new WeakMap,VA=new WeakMap,WA=new WeakMap,jA=new WeakMap,Me=new WeakMap,xA=new WeakMap,Se=new WeakMap,Le=new WeakMap,Te=new WeakMap;const w=new Hs,MA=new B.TextureLoader,Js=MA.load.bind(MA),Us=MA.loadAsync.bind(MA);MA.load=(C,A,...e)=>{if(w.cacheAssets&&Y.has(C)){const s=Y.get(C);return A==null||A(s.data),s.data}return Js(C,s=>{w.cacheAssets&&Y.set(C,{data:s,dispose:()=>s.dispose()}),A==null||A(s)},...e)};MA.loadAsync=(C,...A)=>YA(exports,null,function*(){if(w.cacheAssets&&Y.has(C))return Y.get(C).data;const e=yield Us(C,...A);return w.cacheAssets&&Y.set(C,{data:e,dispose:()=>e.dispose()}),e});function kt(C,A){if(A===B.TrianglesDrawMode)return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."),C;if(A===B.TriangleFanDrawMode||A===B.TriangleStripDrawMode){let e=C.getIndex();if(e===null){const i=[],a=C.getAttribute("position");if(a!==void 0){for(let r=0;r<a.count;r++)i.push(r);C.setIndex(i),e=C.getIndex()}else return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),C}const s=e.count-2,t=[];if(A===B.TriangleFanDrawMode)for(let i=1;i<=s;i++)t.push(e.getX(0)),t.push(e.getX(i)),t.push(e.getX(i+1));else for(let i=0;i<s;i++)i%2===0?(t.push(e.getX(i)),t.push(e.getX(i+1)),t.push(e.getX(i+2))):(t.push(e.getX(i+2)),t.push(e.getX(i+1)),t.push(e.getX(i)));t.length/3!==s&&console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");const n=C.clone();return n.setIndex(t),n.clearGroups(),n}else return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:",A),C}class bs extends B.Loader{constructor(A){super(A),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(e){return new _s(e)}),this.register(function(e){return new Zs(e)}),this.register(function(e){return new zs(e)}),this.register(function(e){return new $s(e)}),this.register(function(e){return new Ps(e)}),this.register(function(e){return new Ys(e)}),this.register(function(e){return new qs(e)}),this.register(function(e){return new Xs(e)}),this.register(function(e){return new Os(e)}),this.register(function(e){return new Vs(e)}),this.register(function(e){return new vs(e)}),this.register(function(e){return new js(e)}),this.register(function(e){return new Ws(e)}),this.register(function(e){return new ks(e)}),this.register(function(e){return new An(e)}),this.register(function(e){return new en(e)})}load(A,e,s,t){const n=this;let i;if(this.resourcePath!=="")i=this.resourcePath;else if(this.path!==""){const I=B.LoaderUtils.extractUrlBase(A);i=B.LoaderUtils.resolveURL(I,this.path)}else i=B.LoaderUtils.extractUrlBase(A);this.manager.itemStart(A);const a=function(I){t?t(I):console.error(I),n.manager.itemError(A),n.manager.itemEnd(A)},r=new B.FileLoader(this.manager);r.setPath(this.path),r.setResponseType("arraybuffer"),r.setRequestHeader(this.requestHeader),r.setWithCredentials(this.withCredentials),r.load(A,function(I){try{n.parse(I,i,function(c){e(c),n.manager.itemEnd(A)},a)}catch(c){a(c)}},s,a)}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}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,s,t){let n;const i={},a={},r=new TextDecoder;if(typeof A=="string")n=JSON.parse(A);else if(A instanceof ArrayBuffer)if(r.decode(new Uint8Array(A,0,4))===$t){try{i[R.KHR_BINARY_GLTF]=new tn(A)}catch(g){t&&t(g);return}n=JSON.parse(i[R.KHR_BINARY_GLTF].content)}else n=JSON.parse(r.decode(A));else n=A;if(n.asset===void 0||n.asset.version[0]<2){t&&t(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported."));return}const I=new ln(n,{path:e||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});I.fileLoader.setRequestHeader(this.requestHeader);for(let c=0;c<this.pluginCallbacks.length;c++){const g=this.pluginCallbacks[c](I);g.name||console.error("THREE.GLTFLoader: Invalid plugin found: missing name"),a[g.name]=g,i[g.name]=!0}if(n.extensionsUsed)for(let c=0;c<n.extensionsUsed.length;++c){const g=n.extensionsUsed[c],Q=n.extensionsRequired||[];switch(g){case R.KHR_MATERIALS_UNLIT:i[g]=new Ks;break;case R.KHR_DRACO_MESH_COMPRESSION:i[g]=new sn(n,this.dracoLoader);break;case R.KHR_TEXTURE_TRANSFORM:i[g]=new nn;break;case R.KHR_MESH_QUANTIZATION:i[g]=new on;break;default:Q.indexOf(g)>=0&&a[g]===void 0&&console.warn('THREE.GLTFLoader: Unknown extension "'+g+'".')}}I.setExtensions(i),I.setPlugins(a),I.parse(s,t)}parseAsync(A,e){const s=this;return new Promise(function(t,n){s.parse(A,e,t,n)})}}function Ns(){let C={};return{get:function(A){return C[A]},add:function(A,e){C[A]=e},remove:function(A){delete C[A]},removeAll:function(){C={}}}}const R={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_ANISOTROPY:"KHR_materials_anisotropy",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",EXT_MATERIALS_BUMP:"EXT_materials_bump",EXT_TEXTURE_WEBP:"EXT_texture_webp",EXT_TEXTURE_AVIF:"EXT_texture_avif",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression",EXT_MESH_GPU_INSTANCING:"EXT_mesh_gpu_instancing"};class ks{constructor(A){this.parser=A,this.name=R.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){const A=this.parser,e=this.parser.json.nodes||[];for(let s=0,t=e.length;s<t;s++){const n=e[s];n.extensions&&n.extensions[this.name]&&n.extensions[this.name].light!==void 0&&A._addNodeRef(this.cache,n.extensions[this.name].light)}}_loadLight(A){const e=this.parser,s="light:"+A;let t=e.cache.get(s);if(t)return t;const n=e.json,r=((n.extensions&&n.extensions[this.name]||{}).lights||[])[A];let I;const c=new B.Color(16777215);r.color!==void 0&&c.setRGB(r.color[0],r.color[1],r.color[2],B.LinearSRGBColorSpace);const g=r.range!==void 0?r.range:0;switch(r.type){case"directional":I=new B.DirectionalLight(c),I.target.position.set(0,0,-1),I.add(I.target);break;case"point":I=new B.PointLight(c),I.distance=g;break;case"spot":I=new B.SpotLight(c),I.distance=g,r.spot=r.spot||{},r.spot.innerConeAngle=r.spot.innerConeAngle!==void 0?r.spot.innerConeAngle:0,r.spot.outerConeAngle=r.spot.outerConeAngle!==void 0?r.spot.outerConeAngle:Math.PI/4,I.angle=r.spot.outerConeAngle,I.penumbra=1-r.spot.innerConeAngle/r.spot.outerConeAngle,I.target.position.set(0,0,-1),I.add(I.target);break;default:throw new Error("THREE.GLTFLoader: Unexpected light type: "+r.type)}return I.position.set(0,0,0),I.decay=2,cA(I,r),r.intensity!==void 0&&(I.intensity=r.intensity),I.name=e.createUniqueName(r.name||"light_"+A),t=Promise.resolve(I),e.cache.add(s,t),t}getDependency(A,e){if(A==="light")return this._loadLight(e)}createNodeAttachment(A){const e=this,s=this.parser,n=s.json.nodes[A],a=(n.extensions&&n.extensions[this.name]||{}).light;return a===void 0?null:this._loadLight(a).then(function(r){return s._getNodeRef(e.cache,a,r)})}}class Ks{constructor(){this.name=R.KHR_MATERIALS_UNLIT}getMaterialType(){return B.MeshBasicMaterial}extendParams(A,e,s){const t=[];A.color=new B.Color(1,1,1),A.opacity=1;const n=e.pbrMetallicRoughness;if(n){if(Array.isArray(n.baseColorFactor)){const i=n.baseColorFactor;A.color.setRGB(i[0],i[1],i[2],B.LinearSRGBColorSpace),A.opacity=i[3]}n.baseColorTexture!==void 0&&t.push(s.assignTexture(A,"map",n.baseColorTexture,B.SRGBColorSpace))}return Promise.all(t)}}class Os{constructor(A){this.parser=A,this.name=R.KHR_MATERIALS_EMISSIVE_STRENGTH}extendMaterialParams(A,e){const t=this.parser.json.materials[A];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const n=t.extensions[this.name].emissiveStrength;return n!==void 0&&(e.emissiveIntensity=n),Promise.resolve()}}class _s{constructor(A){this.parser=A,this.name=R.KHR_MATERIALS_CLEARCOAT}getMaterialType(A){const s=this.parser.json.materials[A];return!s.extensions||!s.extensions[this.name]?null:B.MeshPhysicalMaterial}extendMaterialParams(A,e){const s=this.parser,t=s.json.materials[A];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const n=[],i=t.extensions[this.name];if(i.clearcoatFactor!==void 0&&(e.clearcoat=i.clearcoatFactor),i.clearcoatTexture!==void 0&&n.push(s.assignTexture(e,"clearcoatMap",i.clearcoatTexture)),i.clearcoatRoughnessFactor!==void 0&&(e.clearcoatRoughness=i.clearcoatRoughnessFactor),i.clearcoatRoughnessTexture!==void 0&&n.push(s.assignTexture(e,"clearcoatRoughnessMap",i.clearcoatRoughnessTexture)),i.clearcoatNormalTexture!==void 0&&(n.push(s.assignTexture(e,"clearcoatNormalMap",i.clearcoatNormalTexture)),i.clearcoatNormalTexture.scale!==void 0)){const a=i.clearcoatNormalTexture.scale;e.clearcoatNormalScale=new B.Vector2(a,a)}return Promise.all(n)}}class vs{constructor(A){this.parser=A,this.name=R.KHR_MATERIALS_IRIDESCENCE}getMaterialType(A){const s=this.parser.json.materials[A];return!s.extensions||!s.extensions[this.name]?null:B.MeshPhysicalMaterial}extendMaterialParams(A,e){const s=this.parser,t=s.json.materials[A];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const n=[],i=t.extensions[this.name];return i.iridescenceFactor!==void 0&&(e.iridescence=i.iridescenceFactor),i.iridescenceTexture!==void 0&&n.push(s.assignTexture(e,"iridescenceMap",i.iridescenceTexture)),i.iridescenceIor!==void 0&&(e.iridescenceIOR=i.iridescenceIor),e.iridescenceThicknessRange===void 0&&(e.iridescenceThicknessRange=[100,400]),i.iridescenceThicknessMinimum!==void 0&&(e.iridescenceThicknessRange[0]=i.iridescenceThicknessMinimum),i.iridescenceThicknessMaximum!==void 0&&(e.iridescenceThicknessRange[1]=i.iridescenceThicknessMaximum),i.iridescenceThicknessTexture!==void 0&&n.push(s.assignTexture(e,"iridescenceThicknessMap",i.iridescenceThicknessTexture)),Promise.all(n)}}class Ps{constructor(A){this.parser=A,this.name=R.KHR_MATERIALS_SHEEN}getMaterialType(A){const s=this.parser.json.materials[A];return!s.extensions||!s.extensions[this.name]?null:B.MeshPhysicalMaterial}extendMaterialParams(A,e){const s=this.parser,t=s.json.materials[A];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const n=[];e.sheenColor=new B.Color(0,0,0),e.sheenRoughness=0,e.sheen=1;const i=t.extensions[this.name];if(i.sheenColorFactor!==void 0){const a=i.sheenColorFactor;e.sheenColor.setRGB(a[0],a[1],a[2],B.LinearSRGBColorSpace)}return i.sheenRoughnessFactor!==void 0&&(e.sheenRoughness=i.sheenRoughnessFactor),i.sheenColorTexture!==void 0&&n.push(s.assignTexture(e,"sheenColorMap",i.sheenColorTexture,B.SRGBColorSpace)),i.sheenRoughnessTexture!==void 0&&n.push(s.assignTexture(e,"sheenRoughnessMap",i.sheenRoughnessTexture)),Promise.all(n)}}class Ys{constructor(A){this.parser=A,this.name=R.KHR_MATERIALS_TRANSMISSION}getMaterialType(A){const s=this.parser.json.materials[A];return!s.extensions||!s.extensions[this.name]?null:B.MeshPhysicalMaterial}extendMaterialParams(A,e){const s=this.parser,t=s.json.materials[A];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const n=[],i=t.extensions[this.name];return i.transmissionFactor!==void 0&&(e.transmission=i.transmissionFactor),i.transmissionTexture!==void 0&&n.push(s.assignTexture(e,"transmissionMap",i.transmissionTexture)),Promise.all(n)}}class qs{constructor(A){this.parser=A,this.name=R.KHR_MATERIALS_VOLUME}getMaterialType(A){const s=this.parser.json.materials[A];return!s.extensions||!s.extensions[this.name]?null:B.MeshPhysicalMaterial}extendMaterialParams(A,e){const s=this.parser,t=s.json.materials[A];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const n=[],i=t.extensions[this.name];e.thickness=i.thicknessFactor!==void 0?i.thicknessFactor:0,i.thicknessTexture!==void 0&&n.push(s.assignTexture(e,"thicknessMap",i.thicknessTexture)),e.attenuationDistance=i.attenuationDistance||1/0;const a=i.attenuationColor||[1,1,1];return e.attenuationColor=new B.Color().setRGB(a[0],a[1],a[2],B.LinearSRGBColorSpace),Promise.all(n)}}class Xs{constructor(A){this.parser=A,this.name=R.KHR_MATERIALS_IOR}getMaterialType(A){const s=this.parser.json.materials[A];return!s.extensions||!s.extensions[this.name]?null:B.MeshPhysicalMaterial}extendMaterialParams(A,e){const t=this.parser.json.materials[A];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const n=t.extensions[this.name];return e.ior=n.ior!==void 0?n.ior:1.5,Promise.resolve()}}class Vs{constructor(A){this.parser=A,this.name=R.KHR_MATERIALS_SPECULAR}getMaterialType(A){const s=this.parser.json.materials[A];return!s.extensions||!s.extensions[this.name]?null:B.MeshPhysicalMaterial}extendMaterialParams(A,e){const s=this.parser,t=s.json.materials[A];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const n=[],i=t.extensions[this.name];e.specularIntensity=i.specularFactor!==void 0?i.specularFactor:1,i.specularTexture!==void 0&&n.push(s.assignTexture(e,"specularIntensityMap",i.specularTexture));const a=i.specularColorFactor||[1,1,1];return e.specularColor=new B.Color().setRGB(a[0],a[1],a[2],B.LinearSRGBColorSpace),i.specularColorTexture!==void 0&&n.push(s.assignTexture(e,"specularColorMap",i.specularColorTexture,B.SRGBColorSpace)),Promise.all(n)}}class Ws{constructor(A){this.parser=A,this.name=R.EXT_MATERIALS_BUMP}getMaterialType(A){const s=this.parser.json.materials[A];return!s.extensions||!s.extensions[this.name]?null:B.MeshPhysicalMaterial}extendMaterialParams(A,e){const s=this.parser,t=s.json.materials[A];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const n=[],i=t.extensions[this.name];return e.bumpScale=i.bumpFactor!==void 0?i.bumpFactor:1,i.bumpTexture!==void 0&&n.push(s.assignTexture(e,"bumpMap",i.bumpTexture)),Promise.all(n)}}class js{constructor(A){this.parser=A,this.name=R.KHR_MATERIALS_ANISOTROPY}getMaterialType(A){const s=this.parser.json.materials[A];return!s.extensions||!s.extensions[this.name]?null:B.MeshPhysicalMaterial}extendMaterialParams(A,e){const s=this.parser,t=s.json.materials[A];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const n=[],i=t.extensions[this.name];return i.anisotropyStrength!==void 0&&(e.anisotropy=i.anisotropyStrength),i.anisotropyRotation!==void 0&&(e.anisotropyRotation=i.anisotropyRotation),i.anisotropyTexture!==void 0&&n.push(s.assignTexture(e,"anisotropyMap",i.anisotropyTexture)),Promise.all(n)}}class Zs{constructor(A){this.parser=A,this.name=R.KHR_TEXTURE_BASISU}loadTexture(A){const e=this.parser,s=e.json,t=s.textures[A];if(!t.extensions||!t.extensions[this.name])return null;const n=t.extensions[this.name],i=e.options.ktx2Loader;if(!i){if(s.extensionsRequired&&s.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return null}return e.loadTextureImage(A,n.source,i)}}class zs{constructor(A){this.parser=A,this.name=R.EXT_TEXTURE_WEBP,this.isSupported=null}loadTexture(A){const e=this.name,s=this.parser,t=s.json,n=t.textures[A];if(!n.extensions||!n.extensions[e])return null;const i=n.extensions[e],a=t.images[i.source];let r=s.textureLoader;if(a.uri){const I=s.options.manager.getHandler(a.uri);I!==null&&(r=I)}return this.detectSupport().then(function(I){if(I)return s.loadTextureImage(A,i.source,r);if(t.extensionsRequired&&t.extensionsRequired.indexOf(e)>=0)throw new Error("THREE.GLTFLoader: WebP required by asset but unsupported.");return s.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 $s{constructor(A){this.parser=A,this.name=R.EXT_TEXTURE_AVIF,this.isSupported=null}loadTexture(A){const e=this.name,s=this.parser,t=s.json,n=t.textures[A];if(!n.extensions||!n.extensions[e])return null;const i=n.extensions[e],a=t.images[i.source];let r=s.textureLoader;if(a.uri){const I=s.options.manager.getHandler(a.uri);I!==null&&(r=I)}return this.detectSupport().then(function(I){if(I)return s.loadTextureImage(A,i.source,r);if(t.extensionsRequired&&t.extensionsRequired.indexOf(e)>=0)throw new Error("THREE.GLTFLoader: AVIF required by asset but unsupported.");return s.loadTexture(A)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(A){const e=new Image;e.src="data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAABcAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQAMAAAAABNjb2xybmNseAACAAIABoAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAAB9tZGF0EgAKCBgABogQEDQgMgkQAAAAB8dSLfI=",e.onload=e.onerror=function(){A(e.height===1)}})),this.isSupported}}class An{constructor(A){this.name=R.EXT_MESHOPT_COMPRESSION,this.parser=A}loadBufferView(A){const e=this.parser.json,s=e.bufferViews[A];if(s.extensions&&s.extensions[this.name]){const t=s.extensions[this.name],n=this.parser.getDependency("buffer",t.buffer),i=this.parser.options.meshoptDecoder;if(!i||!i.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 n.then(function(a){const r=t.byteOffset||0,I=t.byteLength||0,c=t.count,g=t.byteStride,Q=new Uint8Array(a,r,I);return i.decodeGltfBufferAsync?i.decodeGltfBufferAsync(c,g,Q,t.mode,t.filter).then(function(l){return l.buffer}):i.ready.then(function(){const l=new ArrayBuffer(c*g);return i.decodeGltfBuffer(new Uint8Array(l),c,g,Q,t.mode,t.filter),l})})}else return null}}class en{constructor(A){this.name=R.EXT_MESH_GPU_INSTANCING,this.parser=A}createNodeMesh(A){const e=this.parser.json,s=e.nodes[A];if(!s.extensions||!s.extensions[this.name]||s.mesh===void 0)return null;const t=e.meshes[s.mesh];for(const I of t.primitives)if(I.mode!==v.TRIANGLES&&I.mode!==v.TRIANGLE_STRIP&&I.mode!==v.TRIANGLE_FAN&&I.mode!==void 0)return null;const i=s.extensions[this.name].attributes,a=[],r={};for(const I in i)a.push(this.parser.getDependency("accessor",i[I]).then(c=>(r[I]=c,r[I])));return a.length<1?null:(a.push(this.parser.createNodeMesh(A)),Promise.all(a).then(I=>{const c=I.pop(),g=c.isGroup?c.children:[c],Q=I[0].count,l=[];for(const u of g){const h=new B.Matrix4,E=new B.Vector3,f=new B.Quaternion,p=new B.Vector3(1,1,1),F=new B.InstancedMesh(u.geometry,u.material,Q);for(let G=0;G<Q;G++)r.TRANSLATION&&E.fromBufferAttribute(r.TRANSLATION,G),r.ROTATION&&f.fromBufferAttribute(r.ROTATION,G),r.SCALE&&p.fromBufferAttribute(r.SCALE,G),F.setMatrixAt(G,h.compose(E,f,p));for(const G in r)if(G==="_COLOR_0"){const y=r[G];F.instanceColor=new B.InstancedBufferAttribute(y.array,y.itemSize,y.normalized)}else G!=="TRANSLATION"&&G!=="ROTATION"&&G!=="SCALE"&&u.geometry.setAttribute(G,r[G]);B.Object3D.prototype.copy.call(F,u),this.parser.assignFinalMaterial(F),l.push(F)}return c.isGroup?(c.clear(),c.add(...l),c):l[0]}))}}const $t="glTF",Ge=12,Kt={JSON:1313821514,BIN:5130562};class tn{constructor(A){this.name=R.KHR_BINARY_GLTF,this.content=null,this.body=null;const e=new DataView(A,0,Ge),s=new TextDecoder;if(this.header={magic:s.decode(new Uint8Array(A.slice(0,4))),version:e.getUint32(4,!0),length:e.getUint32(8,!0)},this.header.magic!==$t)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-Ge,n=new DataView(A,Ge);let i=0;for(;i<t;){const a=n.getUint32(i,!0);i+=4;const r=n.getUint32(i,!0);if(i+=4,r===Kt.JSON){const I=new Uint8Array(A,Ge+i,a);this.content=s.decode(I)}else if(r===Kt.BIN){const I=Ge+i;this.body=A.slice(I,I+a)}i+=a}if(this.content===null)throw new Error("THREE.GLTFLoader: JSON content not found.")}}class sn{constructor(A,e){if(!e)throw new Error("THREE.GLTFLoader: No DRACOLoader instance provided.");this.name=R.KHR_DRACO_MESH_COMPRESSION,this.json=A,this.dracoLoader=e,this.dracoLoader.preload()}decodePrimitive(A,e){const s=this.json,t=this.dracoLoader,n=A.extensions[this.name].bufferView,i=A.extensions[this.name].attributes,a={},r={},I={};for(const c in i){const g=wt[c]||c.toLowerCase();a[g]=i[c]}for(const c in A.attributes){const g=wt[c]||c.toLowerCase();if(i[c]!==void 0){const Q=s.accessors[A.attributes[c]],l=qA[Q.componentType];I[g]=l.name,r[g]=Q.normalized===!0}}return e.getDependency("bufferView",n).then(function(c){return new Promise(function(g,Q){t.decodeDracoFile(c,function(l){for(const u in l.attributes){const h=l.attributes[u],E=r[u];E!==void 0&&(h.normalized=E)}g(l)},a,I,B.LinearSRGBColorSpace,Q)})})}}class nn{constructor(){this.name=R.KHR_TEXTURE_TRANSFORM}extendTexture(A,e){return(e.texCoord===void 0||e.texCoord===A.channel)&&e.offset===void 0&&e.rotation===void 0&&e.scale===void 0||(A=A.clone(),e.texCoord!==void 0&&(A.channel=e.texCoord),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 on{constructor(){this.name=R.KHR_MESH_QUANTIZATION}}class As extends B.Interpolant{constructor(A,e,s,t){super(A,e,s,t)}copySampleValue_(A){const e=this.resultBuffer,s=this.sampleValues,t=this.valueSize,n=A*t*3+t;for(let i=0;i!==t;i++)e[i]=s[n+i];return e}interpolate_(A,e,s,t){const n=this.resultBuffer,i=this.sampleValues,a=this.valueSize,r=a*2,I=a*3,c=t-e,g=(s-e)/c,Q=g*g,l=Q*g,u=A*I,h=u-I,E=-2*l+3*Q,f=l-Q,p=1-E,F=f-Q+g;for(let G=0;G!==a;G++){const y=i[h+G+a],M=i[h+G+r]*c,L=i[u+G+a],V=i[u+G]*c;n[G]=p*y+F*M+E*L+f*V}return n}}const rn=new B.Quaternion;class Bn extends As{interpolate_(A,e,s,t){const n=super.interpolate_(A,e,s,t);return rn.fromArray(n).normalize().toArray(n),n}}const v={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},qA={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},Ot={9728:B.NearestFilter,9729:B.LinearFilter,9984:B.NearestMipmapNearestFilter,9985:B.LinearMipmapNearestFilter,9986:B.NearestMipmapLinearFilter,9987:B.LinearMipmapLinearFilter},_t={33071:B.ClampToEdgeWrapping,33648:B.MirroredRepeatWrapping,10497:B.RepeatWrapping},gt={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},wt={POSITION:"position",NORMAL:"normal",TANGENT:"tangent",TEXCOORD_0:"uv",TEXCOORD_1:"uv1",TEXCOORD_2:"uv2",TEXCOORD_3:"uv3",COLOR_0:"color",WEIGHTS_0:"skinWeight",JOINTS_0:"skinIndex"},gA={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},an={CUBICSPLINE:void 0,LINEAR:B.InterpolateLinear,STEP:B.InterpolateDiscrete},ct={OPAQUE:"OPAQUE",MASK:"MASK",BLEND:"BLEND"};function Cn(C){return C.DefaultMaterial===void 0&&(C.DefaultMaterial=new B.MeshStandardMaterial({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:B.FrontSide})),C.DefaultMaterial}function LA(C,A,e){for(const s in e.extensions)C[s]===void 0&&(A.userData.gltfExtensions=A.userData.gltfExtensions||{},A.userData.gltfExtensions[s]=e.extensions[s])}function cA(C,A){A.extras!==void 0&&(typeof A.extras=="object"?Object.assign(C.userData,A.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+A.extras))}function In(C,A,e){let s=!1,t=!1,n=!1;for(let I=0,c=A.length;I<c;I++){const g=A[I];if(g.POSITION!==void 0&&(s=!0),g.NORMAL!==void 0&&(t=!0),g.COLOR_0!==void 0&&(n=!0),s&&t&&n)break}if(!s&&!t&&!n)return Promise.resolve(C);const i=[],a=[],r=[];for(let I=0,c=A.length;I<c;I++){const g=A[I];if(s){const Q=g.POSITION!==void 0?e.getDependency("accessor",g.POSITION):C.attributes.position;i.push(Q)}if(t){const Q=g.NORMAL!==void 0?e.getDependency("accessor",g.NORMAL):C.attributes.normal;a.push(Q)}if(n){const Q=g.COLOR_0!==void 0?e.getDependency("accessor",g.COLOR_0):C.attributes.color;r.push(Q)}}return Promise.all([Promise.all(i),Promise.all(a),Promise.all(r)]).then(function(I){const c=I[0],g=I[1],Q=I[2];return s&&(C.morphAttributes.position=c),t&&(C.morphAttributes.normal=g),n&&(C.morphAttributes.color=Q),C.morphTargetsRelative=!0,C})}function gn(C,A){if(C.updateMorphTargets(),A.weights!==void 0)for(let e=0,s=A.weights.length;e<s;e++)C.morphTargetInfluences[e]=A.weights[e];if(A.extras&&Array.isArray(A.extras.targetNames)){const e=A.extras.targetNames;if(C.morphTargetInfluences.length===e.length){C.morphTargetDictionary={};for(let s=0,t=e.length;s<t;s++)C.morphTargetDictionary[e[s]]=s}else console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.")}}function cn(C){let A;const e=C.extensions&&C.extensions[R.KHR_DRACO_MESH_COMPRESSION];if(e?A="draco:"+e.bufferView+":"+e.indices+":"+Et(e.attributes):A=C.indices+":"+Et(C.attributes)+":"+C.mode,C.targets!==void 0)for(let s=0,t=C.targets.length;s<t;s++)A+=":"+Et(C.targets[s]);return A}function Et(C){let A="";const e=Object.keys(C).sort();for(let s=0,t=e.length;s<t;s++)A+=e[s]+":"+C[e[s]]+";";return A}function yt(C){switch(C){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 En(C){return C.search(/\.jpe?g($|\?)/i)>0||C.search(/^data\:image\/jpeg/)===0?"image/jpeg":C.search(/\.webp($|\?)/i)>0||C.search(/^data\:image\/webp/)===0?"image/webp":"image/png"}const Qn=new B.Matrix4;class ln{constructor(A={},e={}){this.json=A,this.extensions={},this.plugins={},this.options=e,this.cache=new Ns,this.associations=new Map,this.primitiveCache={},this.nodeCache={},this.meshCache={refs:{},uses:{}},this.cameraCache={refs:{},uses:{}},this.lightCache={refs:{},uses:{}},this.sourceCache={},this.textureCache={},this.nodeNamesUsed={};let s=!1,t=!1,n=-1;typeof navigator!="undefined"&&(s=/^((?!chrome|android).)*safari/i.test(navigator.userAgent)===!0,t=navigator.userAgent.indexOf("Firefox")>-1,n=t?navigator.userAgent.match(/Firefox\/([0-9]+)\./)[1]:-1),typeof createImageBitmap=="undefined"||s||t&&n<98?this.textureLoader=new B.TextureLoader(this.options.manager):this.textureLoader=new B.ImageBitmapLoader(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new B.FileLoader(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 s=this,t=this.json,n=this.extensions;this.cache.removeAll(),this.nodeCache={},this._invokeAll(function(i){return i._markDefs&&i._markDefs()}),Promise.all(this._invokeAll(function(i){return i.beforeRoot&&i.beforeRoot()})).then(function(){return Promise.all([s.getDependencies("scene"),s.getDependencies("animation"),s.getDependencies("camera")])}).then(function(i){const a={scene:i[0][t.scene||0],scenes:i[0],animations:i[1],cameras:i[2],asset:t.asset,parser:s,userData:{}};return LA(n,a,t),cA(a,t),Promise.all(s._invokeAll(function(r){return r.afterRoot&&r.afterRoot(a)})).then(function(){for(const r of a.scenes)r.updateMatrixWorld();A(a)})}).catch(e)}_markDefs(){const A=this.json.nodes||[],e=this.json.skins||[],s=this.json.meshes||[];for(let t=0,n=e.length;t<n;t++){const i=e[t].joints;for(let a=0,r=i.length;a<r;a++)A[i[a]].isBone=!0}for(let t=0,n=A.length;t<n;t++){const i=A[t];i.mesh!==void 0&&(this._addNodeRef(this.meshCache,i.mesh),i.skin!==void 0&&(s[i.mesh].isSkinnedMesh=!0)),i.camera!==void 0&&this._addNodeRef(this.cameraCache,i.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,s){if(A.refs[e]<=1)return s;const t=s.clone(),n=(i,a)=>{const r=this.associations.get(i);r!=null&&this.associations.set(a,r);for(const[I,c]of i.children.entries())n(c,a.children[I])};return n(s,t),t.name+="_instance_"+A.uses[e]++,t}_invokeOne(A){const e=Object.values(this.plugins);e.push(this);for(let s=0;s<e.length;s++){const t=A(e[s]);if(t)return t}return null}_invokeAll(A){const e=Object.values(this.plugins);e.unshift(this);const s=[];for(let t=0;t<e.length;t++){const n=A(e[t]);n&&s.push(n)}return s}getDependency(A,e){const s=A+":"+e;let t=this.cache.get(s);if(!t){switch(A){case"scene":t=this.loadScene(e);break;case"node":t=this._invokeOne(function(n){return n.loadNode&&n.loadNode(e)});break;case"mesh":t=this._invokeOne(function(n){return n.loadMesh&&n.loadMesh(e)});break;case"accessor":t=this.loadAccessor(e);break;case"bufferView":t=this._invokeOne(function(n){return n.loadBufferView&&n.loadBufferView(e)});break;case"buffer":t=this.loadBuffer(e);break;case"material":t=this._invokeOne(function(n){return n.loadMaterial&&n.loadMaterial(e)});break;case"texture":t=this._invokeOne(function(n){return n.loadTexture&&n.loadTexture(e)});break;case"skin":t=this.loadSkin(e);break;case"animation":t=this._invokeOne(function(n){return n.loadAnimation&&n.loadAnimation(e)});break;case"camera":t=this.loadCamera(e);break;default:if(t=this._invokeOne(function(n){return n!=this&&n.getDependency&&n.getDependency(A,e)}),!t)throw new Error("Unknown type: "+A);break}this.cache.add(s,t)}return t}getDependencies(A){let e=this.cache.get(A);if(!e){const s=this,t=this.json[A+(A==="mesh"?"es":"s")]||[];e=Promise.all(t.map(function(n,i){return s.getDependency(A,i)})),this.cache.add(A,e)}return e}loadBuffer(A){const e=this.json.buffers[A],s=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[R.KHR_BINARY_GLTF].body);const t=this.options;return new Promise(function(n,i){s.load(B.LoaderUtils.resolveURL(e.uri,t.path),n,void 0,function(){i(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(s){const t=e.byteLength||0,n=e.byteOffset||0;return s.slice(n,n+t)})}loadAccessor(A){const e=this,s=this.json,t=this.json.accessors[A];if(t.bufferView===void 0&&t.sparse===void 0){const i=gt[t.type],a=qA[t.componentType],r=t.normalized===!0,I=new a(t.count*i);return Promise.resolve(new B.BufferAttribute(I,i,r))}const n=[];return t.bufferView!==void 0?n.push(this.getDependency("bufferView",t.bufferView)):n.push(null),t.sparse!==void 0&&(n.push(this.getDependency("bufferView",t.sparse.indices.bufferView)),n.push(this.getDependency("bufferView",t.sparse.values.bufferView))),Promise.all(n).then(function(i){const a=i[0],r=gt[t.type],I=qA[t.componentType],c=I.BYTES_PER_ELEMENT,g=c*r,Q=t.byteOffset||0,l=t.bufferView!==void 0?s.bufferViews[t.bufferView].byteStride:void 0,u=t.normalized===!0;let h,E;if(l&&l!==g){const f=Math.floor(Q/l),p="InterleavedBuffer:"+t.bufferView+":"+t.componentType+":"+f+":"+t.count;let F=e.cache.get(p);F||(h=new I(a,f*l,t.count*l/c),F=new B.InterleavedBuffer(h,l/c),e.cache.add(p,F)),E=new B.InterleavedBufferAttribute(F,r,Q%l/c,u)}else a===null?h=new I(t.count*r):h=new I(a,Q,t.count*r),E=new B.BufferAttribute(h,r,u);if(t.sparse!==void 0){const f=gt.SCALAR,p=qA[t.sparse.indices.componentType],F=t.sparse.indices.byteOffset||0,G=t.sparse.values.byteOffset||0,y=new p(i[1],F,t.sparse.count*f),M=new I(i[2],G,t.sparse.count*r);a!==null&&(E=new B.BufferAttribute(E.array.slice(),E.itemSize,E.normalized));for(let L=0,V=y.length;L<V;L++){const N=y[L];if(E.setX(N,M[L*r]),r>=2&&E.setY(N,M[L*r+1]),r>=3&&E.setZ(N,M[L*r+2]),r>=4&&E.setW(N,M[L*r+3]),r>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}}return E})}loadTexture(A){const e=this.json,s=this.options,n=e.textures[A].source,i=e.images[n];let a=this.textureLoader;if(i.uri){const r=s.manager.getHandler(i.uri);r!==null&&(a=r)}return this.loadTextureImage(A,n,a)}loadTextureImage(A,e,s){const t=this,n=this.json,i=n.textures[A],a=n.images[e],r=(a.uri||a.bufferView)+":"+i.sampler;if(this.textureCache[r])return this.textureCache[r];const I=this.loadImageSource(e,s).then(function(c){c.flipY=!1,c.name=i.name||a.name||"",c.name===""&&typeof a.uri=="string"&&a.uri.startsWith("data:image/")===!1&&(c.name=a.uri);const Q=(n.samplers||{})[i.sampler]||{};return c.magFilter=Ot[Q.magFilter]||B.LinearFilter,c.minFilter=Ot[Q.minFilter]||B.LinearMipmapLinearFilter,c.wrapS=_t[Q.wrapS]||B.RepeatWrapping,c.wrapT=_t[Q.wrapT]||B.RepeatWrapping,t.associations.set(c,{textures:A}),c}).catch(function(){return null});return this.textureCache[r]=I,I}loadImageSource(A,e){const s=this,t=this.json,n=this.options;if(this.sourceCache[A]!==void 0)return this.sourceCache[A].then(g=>g.clone());const i=t.images[A],a=self.URL||self.webkitURL;let r=i.uri||"",I=!1;if(i.bufferView!==void 0)r=s.getDependency("bufferView",i.bufferView).then(function(g){I=!0;const Q=new Blob([g],{type:i.mimeType});return r=a.createObjectURL(Q),r});else if(i.uri===void 0)throw new Error("THREE.GLTFLoader: Image "+A+" is missing URI and bufferView");const c=Promise.resolve(r).then(function(g){return new Promise(function(Q,l){let u=Q;e.isImageBitmapLoader===!0&&(u=function(h){const E=new B.Texture(h);E.needsUpdate=!0,Q(E)}),e.load(B.LoaderUtils.resolveURL(g,n.path),u,void 0,l)})}).then(function(g){return I===!0&&a.revokeObjectURL(r),g.userData.mimeType=i.mimeType||En(i.uri),g}).catch(function(g){throw console.error("THREE.GLTFLoader: Couldn't load texture",r),g});return this.sourceCache[A]=c,c}assignTexture(A,e,s,t){const n=this;return this.getDependency("texture",s.index).then(function(i){if(!i)return null;if(s.texCoord!==void 0&&s.texCoord>0&&(i=i.clone(),i.channel=s.texCoord),n.extensions[R.KHR_TEXTURE_TRANSFORM]){const a=s.extensions!==void 0?s.extensions[R.KHR_TEXTURE_TRANSFORM]:void 0;if(a){const r=n.associations.get(i);i=n.extensions[R.KHR_TEXTURE_TRANSFORM].extendTexture(i,a),n.associations.set(i,r)}}return t!==void 0&&(i.colorSpace=t),A[e]=i,i})}assignFinalMaterial(A){const e=A.geometry;let s=A.material;const t=e.attributes.tangent===void 0,n=e.attributes.color!==void 0,i=e.attributes.normal===void 0;if(A.isPoints){const a="PointsMaterial:"+s.uuid;let r=this.cache.get(a);r||(r=new B.PointsMaterial,B.Material.prototype.copy.call(r,s),r.color.copy(s.color),r.map=s.map,r.sizeAttenuation=!1,this.cache.add(a,r)),s=r}else if(A.isLine){const a="LineBasicMaterial:"+s.uuid;let r=this.cache.get(a);r||(r=new B.LineBasicMaterial,B.Material.prototype.copy.call(r,s),r.color.copy(s.color),r.map=s.map,this.cache.add(a,r)),s=r}if(t||n||i){let a="ClonedMaterial:"+s.uuid+":";t&&(a+="derivative-tangents:"),n&&(a+="vertex-colors:"),i&&(a+="flat-shading:");let r=this.cache.get(a);r||(r=s.clone(),n&&(r.vertexColors=!0),i&&(r.flatShading=!0),t&&(r.normalScale&&(r.normalScale.y*=-1),r.clearcoatNormalScale&&(r.clearcoatNormalScale.y*=-1)),this.cache.add(a,r),this.associations.set(r,this.associations.get(s))),s=r}A.material=s}getMaterialType(){return B.MeshStandardMaterial}loadMaterial(A){const e=this,s=this.json,t=this.extensions,n=s.materials[A];let i;const a={},r=n.extensions||{},I=[];if(r[R.KHR_MATERIALS_UNLIT]){const g=t[R.KHR_MATERIALS_UNLIT];i=g.getMaterialType(),I.push(g.extendParams(a,n,e))}else{const g=n.pbrMetallicRoughness||{};if(a.color=new B.Color(1,1,1),a.opacity=1,Array.isArray(g.baseColorFactor)){const Q=g.baseColorFactor;a.color.setRGB(Q[0],Q[1],Q[2],B.LinearSRGBColorSpace),a.opacity=Q[3]}g.baseColorTexture!==void 0&&I.push(e.assignTexture(a,"map",g.baseColorTexture,B.SRGBColorSpace)),a.metalness=g.metallicFactor!==void 0?g.metallicFactor:1,a.roughness=g.roughnessFactor!==void 0?g.roughnessFactor:1,g.metallicRoughnessTexture!==void 0&&(I.push(e.assignTexture(a,"metalnessMap",g.metallicRoughnessTexture)),I.push(e.assignTexture(a,"roughnessMap",g.metallicRoughnessTexture))),i=this._invokeOne(function(Q){return Q.getMaterialType&&Q.getMaterialType(A)}),I.push(Promise.all(this._invokeAll(function(Q){return Q.extendMaterialParams&&Q.extendMaterialParams(A,a)})))}n.doubleSided===!0&&(a.side=B.DoubleSide);const c=n.alphaMode||ct.OPAQUE;if(c===ct.BLEND?(a.transparent=!0,a.depthWrite=!1):(a.transparent=!1,c===ct.MASK&&(a.alphaTest=n.alphaCutoff!==void 0?n.alphaCutoff:.5)),n.normalTexture!==void 0&&i!==B.MeshBasicMaterial&&(I.push(e.assignTexture(a,"normalMap",n.normalTexture)),a.normalScale=new B.Vector2(1,1),n.normalTexture.scale!==void 0)){const g=n.normalTexture.scale;a.normalScale.set(g,g)}if(n.occlusionTexture!==void 0&&i!==B.MeshBasicMaterial&&(I.push(e.assignTexture(a,"aoMap",n.occlusionTexture)),n.occlusionTexture.strength!==void 0&&(a.aoMapIntensity=n.occlusionTexture.strength)),n.emissiveFactor!==void 0&&i!==B.MeshBasicMaterial){const g=n.emissiveFactor;a.emissive=new B.Color().setRGB(g[0],g[1],g[2],B.LinearSRGBColorSpace)}return n.emissiveTexture!==void 0&&i!==B.MeshBasicMaterial&&I.push(e.assignTexture(a,"emissiveMap",n.emissiveTexture,B.SRGBColorSpace)),Promise.all(I).then(function(){const g=new i(a);return n.name&&(g.name=n.name),cA(g,n),e.associations.set(g,{materials:A}),n.extensions&&LA(t,g,n),g})}createUniqueName(A){const e=B.PropertyBinding.sanitizeNodeName(A||"");return e in this.nodeNamesUsed?e+"_"+ ++this.nodeNamesUsed[e]:(this.nodeNamesUsed[e]=0,e)}loadGeometries(A){const e=this,s=this.extensions,t=this.primitiveCache;function n(a){return s[R.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(a,e).then(function(r){return vt(r,a,e)})}const i=[];for(let a=0,r=A.length;a<r;a++){const I=A[a],c=cn(I),g=t[c];if(g)i.push(g.promise);else{let Q;I.extensions&&I.extensions[R.KHR_DRACO_MESH_COMPRESSION]?Q=n(I):Q=vt(new B.BufferGeometry,I,e),t[c]={primitive:I,promise:Q},i.push(Q)}}return Promise.all(i)}loadMesh(A){const e=this,s=this.json,t=this.extensions,n=s.meshes[A],i=n.primitives,a=[];for(let r=0,I=i.length;r<I;r++){const c=i[r].material===void 0?Cn(this.cache):this.getDependency("material",i[r].material);a.push(c)}return a.push(e.loadGeometries(i)),Promise.all(a).then(function(r){const I=r.slice(0,r.length-1),c=r[r.length-1],g=[];for(let l=0,u=c.length;l<u;l++){const h=c[l],E=i[l];let f;const p=I[l];if(E.mode===v.TRIANGLES||E.mode===v.TRIANGLE_STRIP||E.mode===v.TRIANGLE_FAN||E.mode===void 0)f=n.isSkinnedMesh===!0?new B.SkinnedMesh(h,p):new B.Mesh(h,p),f.isSkinnedMesh===!0&&f.normalizeSkinWeights(),E.mode===v.TRIANGLE_STRIP?f.geometry=kt(f.geometry,B.TriangleStripDrawMode):E.mode===v.TRIANGLE_FAN&&(f.geometry=kt(f.geometry,B.TriangleFanDrawMode));else if(E.mode===v.LINES)f=new B.LineSegments(h,p);else if(E.mode===v.LINE_STRIP)f=new B.Line(h,p);else if(E.mode===v.LINE_LOOP)f=new B.LineLoop(h,p);else if(E.mode===v.POINTS)f=new B.Points(h,p);else throw new Error("THREE.GLTFLoader: Primitive mode unsupported: "+E.mode);Object.keys(f.geometry.morphAttributes).length>0&&gn(f,n),f.name=e.createUniqueName(n.name||"mesh_"+A),cA(f,n),E.extensions&&LA(t,f,E),e.assignFinalMaterial(f),g.push(f)}for(let l=0,u=g.length;l<u;l++)e.associations.set(g[l],{meshes:A,primitives:l});if(g.length===1)return n.extensions&&LA(t,g[0],n),g[0];const Q=new B.Group;n.extensions&&LA(t,Q,n),e.associations.set(Q,{meshes:A});for(let l=0,u=g.length;l<u;l++)Q.add(g[l]);return Q})}loadCamera(A){let e;const s=this.json.cameras[A],t=s[s.type];if(!t){console.warn("THREE.GLTFLoader: Missing camera parameters.");return}return s.type==="perspective"?e=new B.PerspectiveCamera(B.MathUtils.radToDeg(t.yfov),t.aspectRatio||1,t.znear||1,t.zfar||2e6):s.type==="orthographic"&&(e=new B.OrthographicCamera(-t.xmag,t.xmag,t.ymag,-t.ymag,t.znear,t.zfar)),s.name&&(e.name=this.createUniqueName(s.name)),cA(e,s),Promise.resolve(e)}loadSkin(A){const e=this.json.skins[A],s=[];for(let t=0,n=e.joints.length;t<n;t++)s.push(this._loadNodeShallow(e.joints[t]));return e.inverseBindMatrices!==void 0?s.push(this.getDependency("accessor",e.inverseBindMatrices)):s.push(null),Promise.all(s).then(function(t){const n=t.pop(),i=t,a=[],r=[];for(let I=0,c=i.length;I<c;I++){const g=i[I];if(g){a.push(g);const Q=new B.Matrix4;n!==null&&Q.fromArray(n.array,I*16),r.push(Q)}else console.warn('THREE.GLTFLoader: Joint "%s" could not be found.',e.joints[I])}return new B.Skeleton(a,r)})}loadAnimation(A){const e=this.json,s=this,t=e.animations[A],n=t.name?t.name:"animation_"+A,i=[],a=[],r=[],I=[],c=[];for(let g=0,Q=t.channels.length;g<Q;g++){const l=t.channels[g],u=t.samplers[l.sampler],h=l.target,E=h.node,f=t.parameters!==void 0?t.parameters[u.input]:u.input,p=t.parameters!==void 0?t.parameters[u.output]:u.output;h.node!==void 0&&(i.push(this.getDependency("node",E)),a.push(this.getDependency("accessor",f)),r.push(this.getDependency("accessor",p)),I.push(u),c.push(h))}return Promise.all([Promise.all(i),Promise.all(a),Promise.all(r),Promise.all(I),Promise.all(c)]).then(function(g){const Q=g[0],l=g[1],u=g[2],h=g[3],E=g[4],f=[];for(let p=0,F=Q.length;p<F;p++){const G=Q[p],y=l[p],M=u[p],L=h[p],V=E[p];if(G===void 0)continue;G.updateMatrix&&G.updateMatrix();const N=s._createAnimationTracks(G,y,M,L,V);if(N)for(let $=0;$<N.length;$++)f.push(N[$])}return new B.AnimationClip(n,void 0,f)})}createNodeMesh(A){const e=this.json,s=this,t=e.nodes[A];return t.mesh===void 0?null:s.getDependency("mesh",t.mesh).then(function(n){const i=s._getNodeRef(s.meshCache,t.mesh,n);return t.weights!==void 0&&i.traverse(function(a){if(a.isMesh)for(let r=0,I=t.weights.length;r<I;r++)a.morphTargetInfluences[r]=t.weights[r]}),i})}loadNode(A){const e=this.json,s=this,t=e.nodes[A],n=s._loadNodeShallow(A),i=[],a=t.children||[];for(let I=0,c=a.length;I<c;I++)i.push(s.getDependency("node",a[I]));const r=t.skin===void 0?Promise.resolve(null):s.getDependency("skin",t.skin);return Promise.all([n,Promise.all(i),r]).then(function(I){const c=I[0],g=I[1],Q=I[2];Q!==null&&c.traverse(function(l){l.isSkinnedMesh&&l.bind(Q,Qn)});for(let l=0,u=g.length;l<u;l++)c.add(g[l]);return c})}_loadNodeShallow(A){const e=this.json,s=this.extensions,t=this;if(this.nodeCache[A]!==void 0)return this.nodeCache[A];const n=e.nodes[A],i=n.name?t.createUniqueName(n.name):"",a=[],r=t._invokeOne(function(I){return I.createNodeMesh&&I.createNodeMesh(A)});return r&&a.push(r),n.camera!==void 0&&a.push(t.getDependency("camera",n.camera).then(function(I){return t._getNodeRef(t.cameraCache,n.camera,I)})),t._invokeAll(function(I){return I.createNodeAttachment&&I.createNodeAttachment(A)}).forEach(function(I){a.push(I)}),this.nodeCache[A]=Promise.all(a).then(function(I){let c;if(n.isBone===!0?c=new B.Bone:I.length>1?c=new B.Group:I.length===1?c=I[0]:c=new B.Object3D,c!==I[0])for(let g=0,Q=I.length;g<Q;g++)c.add(I[g]);if(n.name&&(c.userData.name=n.name,c.name=i),cA(c,n),n.extensions&&LA(s,c,n),n.matrix!==void 0){const g=new B.Matrix4;g.fromArray(n.matrix),c.applyMatrix4(g)}else n.translation!==void 0&&c.position.fromArray(n.translation),n.rotation!==void 0&&c.quaternion.fromArray(n.rotation),n.scale!==void 0&&c.scale.fromArray(n.scale);return t.associations.has(c)||t.associations.set(c,{}),t.associations.get(c).nodes=A,c}),this.nodeCache[A]}loadScene(A){const e=this.extensions,s=this.json.scenes[A],t=this,n=new B.Group;s.name&&(n.name=t.createUniqueName(s.name)),cA(n,s),s.extensions&&LA(e,n,s);const i=s.nodes||[],a=[];for(let r=0,I=i.length;r<I;r++)a.push(t.getDependency("node",i[r]));return Promise.all(a).then(function(r){for(let c=0,g=r.length;c<g;c++)n.add(r[c]);const I=c=>{const g=new Map;for(const[Q,l]of t.associations)(Q instanceof B.Material||Q instanceof B.Texture)&&g.set(Q,l);return c.traverse(Q=>{const l=t.associations.get(Q);l!=null&&g.set(Q,l)}),g};return t.associations=I(n),n})}_createAnimationTracks(A,e,s,t,n){const i=[],a=A.name?A.name:A.uuid,r=[];gA[n.path]===gA.weights?A.traverse(function(Q){Q.morphTargetInfluences&&r.push(Q.name?Q.name:Q.uuid)}):r.push(a);let I;switch(gA[n.path]){case gA.weights:I=B.NumberKeyframeTrack;break;case gA.rotation:I=B.QuaternionKeyframeTrack;break;case gA.position:case gA.scale:I=B.VectorKeyframeTrack;break;default:switch(s.itemSize){case 1:I=B.NumberKeyframeTrack;break;case 2:case 3:default:I=B.VectorKeyframeTrack;break}break}const c=t.interpolation!==void 0?an[t.interpolation]:B.InterpolateLinear,g=this._getArrayFromAccessor(s);for(let Q=0,l=r.length;Q<l;Q++){const u=new I(r[Q]+"."+gA[n.path],e.array,g,c);t.interpolation==="CUBICSPLINE"&&this._createCubicSplineTrackInterpolant(u),i.push(u)}return i}_getArrayFromAccessor(A){let e=A.array;if(A.normalized){const s=yt(e.constructor),t=new Float32Array(e.length);for(let n=0,i=e.length;n<i;n++)t[n]=e[n]*s;e=t}return e}_createCubicSplineTrackInterpolant(A){A.createInterpolant=function(s){const t=this instanceof B.QuaternionKeyframeTrack?Bn:As;return new t(this.times,this.values,this.getValueSize()/3,s)},A.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0}}function hn(C,A,e){const s=A.attributes,t=new B.Box3;if(s.POSITION!==void 0){const a=e.json.accessors[s.POSITION],r=a.min,I=a.max;if(r!==void 0&&I!==void 0){if(t.set(new B.Vector3(r[0],r[1],r[2]),new B.Vector3(I[0],I[1],I[2])),a.normalized){const c=yt(qA[a.componentType]);t.min.multiplyScalar(c),t.max.multiplyScalar(c)}}else{console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");return}}else return;const n=A.targets;if(n!==void 0){const a=new B.Vector3,r=new B.Vector3;for(let I=0,c=n.length;I<c;I++){const g=n[I];if(g.POSITION!==void 0){const Q=e.json.accessors[g.POSITION],l=Q.min,u=Q.max;if(l!==void 0&&u!==void 0){if(r.setX(Math.max(Math.abs(l[0]),Math.abs(u[0]))),r.setY(Math.max(Math.abs(l[1]),Math.abs(u[1]))),r.setZ(Math.max(Math.abs(l[2]),Math.abs(u[2]))),Q.normalized){const h=yt(qA[Q.componentType]);r.multiplyScalar(h)}a.max(r)}else console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.")}}t.expandByVector(a)}C.boundingBox=t;const i=new B.Sphere;t.getCenter(i.center),i.radius=t.min.distanceTo(t.max)/2,C.boundingSphere=i}function vt(C,A,e){const s=A.attributes,t=[];function n(i,a){return e.getDependency("accessor",i).then(function(r){C.setAttribute(a,r)})}for(const i in s){const a=wt[i]||i.toLowerCase();a in C.attributes||t.push(n(s[i],a))}if(A.indices!==void 0&&!C.index){const i=e.getDependency("accessor",A.indices).then(function(a){C.setIndex(a)});t.push(i)}return B.ColorManagement.workingColorSpace!==B.LinearSRGBColorSpace&&"COLOR_0"in s&&console.warn(`THREE.GLTFLoader: Converting vertex colors from "srgb-linear" to "${B.ColorManagement.workingColorSpace}" not supported.`),cA(C,A),hn(C,A,e),Promise.all(t).then(function(){return A.targets!==void 0?In(C,A.targets,e):C})}const Qt=new WeakMap;class un extends B.Loader{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,s,t){const n=new B.FileLoader(this.manager);n.setPath(this.path),n.setResponseType("arraybuffer"),n.setRequestHeader(this.requestHeader),n.setWithCredentials(this.withCredentials),n.load(A,i=>{this.parse(i,e,t)},s,t)}parse(A,e,s=()=>{}){this.decodeDracoFile(A,e,null,null,B.SRGBColorSpace).catch(s)}decodeDracoFile(A,e,s,t,n=B.LinearSRGBColorSpace,i=()=>{}){const a={attributeIDs:s||this.defaultAttributeIDs,attributeTypes:t||this.defaultAttributeTypes,useUniqueIDs:!!s,vertexColorSpace:n};return this.decodeGeometry(A,a).then(e).catch(i)}decodeGeometry(A,e){const s=JSON.stringify(e);if(Qt.has(A)){const r=Qt.get(A);if(r.key===s)return r.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 t;const n=this.workerNextTaskID++,i=A.byteLength,a=this._getWorker(n,i).then(r=>(t=r,new Promise((I,c)=>{t._callbacks[n]={resolve:I,reject:c},t.postMessage({type:"decode",id:n,taskConfig:e,buffer:A},[A])}))).then(r=>this._createGeometry(r.geometry));return a.catch(()=>!0).then(()=>{t&&n&&this._releaseTask(t,n)}),Qt.set(A,{key:s,promise:a}),a}_createGeometry(A){const e=new B.BufferGeometry;A.index&&e.setIndex(new B.BufferAttribute(A.index.array,1));for(let s=0;s<A.attributes.length;s++){const t=A.attributes[s],n=t.name,i=t.array,a=t.itemSize,r=new B.BufferAttribute(i,a);n==="color"&&(this._assignVertexColorSpace(r,t.vertexColorSpace),r.normalized=!(i instanceof Float32Array)),e.setAttribute(n,r)}return e}_assignVertexColorSpace(A,e){if(e!==B.SRGBColorSpace)return;const s=new B.Color;for(let t=0,n=A.count;t<n;t++)s.fromBufferAttribute(A,t).convertSRGBToLinear(),A.setXYZ(t,s.r,s.g,s.b)}_loadLibrary(A,e){const s=new B.FileLoader(this.manager);return s.setPath(this.decoderPath),s.setResponseType(e),s.setWithCredentials(this.withCredentials),new Promise((t,n)=>{s.load(A,t,void 0,n)})}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(s=>{const t=s[0];A||(this.decoderConfig.wasmBinary=s[1]);const n=dn.toString(),i=["/* draco decoder */",t,"","/* worker */",n.substring(n.indexOf("{")+1,n.lastIndexOf("}"))].join(`
9
+ `);this.workerSourceURL=URL.createObjectURL(new Blob([i]))}),this.decoderPending}_getWorker(A,e){return this._initDecoder().then(()=>{if(this.workerPool.length<this.workerLimit){const t=new Worker(this.workerSourceURL);t._callbacks={},t._taskCosts={},t._taskLoad=0,t.postMessage({type:"init",decoderConfig:this.decoderConfig}),t.onmessage=function(n){const i=n.data;switch(i.type){case"decode":t._callbacks[i.id].resolve(i);break;case"error":t._callbacks[i.id].reject(i);break;default:console.error('THREE.DRACOLoader: Unexpected message, "'+i.type+'"')}},this.workerPool.push(t)}else this.workerPool.sort(function(t,n){return t._taskLoad>n._taskLoad?-1:1});const s=this.workerPool[this.workerPool.length-1];return s._taskCosts[A]=e,s._taskLoad+=e,s})}_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.workerSourceURL!==""&&URL.revokeObjectURL(this.workerSourceURL),this}}function dn(){let C,A;onmessage=function(i){const a=i.data;switch(a.type){case"init":C=a.decoderConfig,A=new Promise(function(c){C.onModuleLoaded=function(g){c({draco:g})},DracoDecoderModule(C)});break;case"decode":const r=a.buffer,I=a.taskConfig;A.then(c=>{const g=c.draco,Q=new g.Decoder;try{const l=e(g,Q,new Int8Array(r),I),u=l.attributes.map(h=>h.array.buffer);l.index&&u.push(l.index.array.buffer),self.postMessage({type:"decode",id:a.id,geometry:l},u)}catch(l){console.error(l),self.postMessage({type:"error",id:a.id,error:l.message})}finally{g.destroy(Q)}});break}};function e(i,a,r,I){const c=I.attributeIDs,g=I.attributeTypes;let Q,l;const u=a.GetEncodedGeometryType(r);if(u===i.TRIANGULAR_MESH)Q=new i.Mesh,l=a.DecodeArrayToMesh(r,r.byteLength,Q);else if(u===i.POINT_CLOUD)Q=new i.PointCloud,l=a.DecodeArrayToPointCloud(r,r.byteLength,Q);else throw new Error("THREE.DRACOLoader: Unexpected geometry type.");if(!l.ok()||Q.ptr===0)throw new Error("THREE.DRACOLoader: Decoding failed: "+l.error_msg());const h={index:null,attributes:[]};for(const E in c){const f=self[g[E]];let p,F;if(I.useUniqueIDs)F=c[E],p=a.GetAttributeByUniqueId(Q,F);else{if(F=a.GetAttributeId(Q,i[c[E]]),F===-1)continue;p=a.GetAttribute(Q,F)}const G=t(i,a,Q,E,f,p);E==="color"&&(G.vertexColorSpace=I.vertexColorSpace),h.attributes.push(G)}return u===i.TRIANGULAR_MESH&&(h.index=s(i,a,Q)),i.destroy(Q),h}function s(i,a,r){const c=r.num_faces()*3,g=c*4,Q=i._malloc(g);a.GetTrianglesUInt32Array(r,g,Q);const l=new Uint32Array(i.HEAPF32.buffer,Q,c).slice();return i._free(Q),{array:l,itemSize:1}}function t(i,a,r,I,c,g){const Q=g.num_components(),u=r.num_points()*Q,h=u*c.BYTES_PER_ELEMENT,E=n(i,c),f=i._malloc(h);a.GetAttributeDataArrayForAllPoints(r,g,E,h,f);const p=new c(i.HEAPF32.buffer,f,u).slice();return i._free(f),{name:I,array:p,itemSize:Q}}function n(i,a){switch(a){case Float32Array:return i.DT_FLOAT32;case Int8Array:return i.DT_INT8;case Int16Array:return i.DT_INT16;case Int32Array:return i.DT_INT32;case Uint8Array:return i.DT_UINT8;case Uint16Array:return i.DT_UINT16;case Uint32Array:return i.DT_UINT32}}}class fn{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 s=this.workersResolve[A];if(s&&s(e),this.queue.length){const{resolve:t,msg:n,transfer:i}=this.queue.shift();this.workersResolve[A]=t,this.workers[A].postMessage(n,i)}else this.workerStatus^=1<<A}setWorkerCreator(A){this.workerCreator=A}setWorkerLimit(A){this.pool=A}postMessage(A,e){return new Promise(s=>{const t=this._getIdleWorker();t!==-1?(this._initWorker(t),this.workerStatus|=1<<t,this.workersResolve[t]=s,this.workers[t].postMessage(A,e)):this.queue.push({resolve:s,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 Dn=0,Pt=2,pn=1,Yt=2,Fn=0,Gn=1,mn=10,Rn=0,es=9,ts=15,ss=16,ns=22,is=37,os=43,rs=76,Bs=83,as=97,Cs=100,Is=103,gs=109,cs=165,Es=166;class wn{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 me{constructor(A,e,s,t){this._dataView=new DataView(A.buffer,A.byteOffset+e,s),this._littleEndian=t,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 s=this._offset;let t=0;for(;this._dataView.getUint8(this._offset)!==e&&t<A;)t++,this._offset++;return t<A&&this._offset++,new Uint8Array(this._dataView.buffer,this._dataView.byteOffset+s,t)}}const b=[171,75,84,88,32,50,48,187,13,10,26,10];function qt(C){return typeof TextDecoder!="undefined"?new TextDecoder().decode(C):Buffer.from(C).toString("utf8")}function yn(C){const A=new Uint8Array(C.buffer,C.byteOffset,b.length);if(A[0]!==b[0]||A[1]!==b[1]||A[2]!==b[2]||A[3]!==b[3]||A[4]!==b[4]||A[5]!==b[5]||A[6]!==b[6]||A[7]!==b[7]||A[8]!==b[8]||A[9]!==b[9]||A[10]!==b[10]||A[11]!==b[11])throw new Error("Missing KTX 2.0 identifier.");const e=new wn,s=17*Uint32Array.BYTES_PER_ELEMENT,t=new me(C,b.length,s,!0);e.vkFormat=t._nextUint32(),e.typeSize=t._nextUint32(),e.pixelWidth=t._nextUint32(),e.pixelHeight=t._nextUint32(),e.pixelDepth=t._nextUint32(),e.layerCount=t._nextUint32(),e.faceCount=t._nextUint32();const n=t._nextUint32();e.supercompressionScheme=t._nextUint32();const i=t._nextUint32(),a=t._nextUint32(),r=t._nextUint32(),I=t._nextUint32(),c=t._nextUint64(),g=t._nextUint64(),Q=new me(C,b.length+s,3*n*8,!0);for(let U=0;U<n;U++)e.levels.push({levelData:new Uint8Array(C.buffer,C.byteOffset+Q._nextUint64(),Q._nextUint64()),uncompressedByteLength:Q._nextUint64()});const l=new me(C,i,a,!0),u={vendorId:l._skip(4)._nextUint16(),descriptorType:l._nextUint16(),versionNumber:l._nextUint16(),descriptorBlockSize:l._nextUint16(),colorModel:l._nextUint8(),colorPrimaries:l._nextUint8(),transferFunction:l._nextUint8(),flags:l._nextUint8(),texelBlockDimension:[l._nextUint8(),l._nextUint8(),l._nextUint8(),l._nextUint8()],bytesPlane:[l._nextUint8(),l._nextUint8(),l._nextUint8(),l._nextUint8(),l._nextUint8(),l._nextUint8(),l._nextUint8(),l._nextUint8()],samples:[]},h=(u.descriptorBlockSize/4-6)/4;for(let U=0;U<h;U++){const K={bitOffset:l._nextUint16(),bitLength:l._nextUint8(),channelType:l._nextUint8(),samplePosition:[l._nextUint8(),l._nextUint8(),l._nextUint8(),l._nextUint8()],sampleLower:-1/0,sampleUpper:1/0};64&K.channelType?(K.sampleLower=l._nextInt32(),K.sampleUpper=l._nextInt32()):(K.sampleLower=l._nextUint32(),K.sampleUpper=l._nextUint32()),u.samples[U]=K}e.dataFormatDescriptor.length=0,e.dataFormatDescriptor.push(u);const E=new me(C,r,I,!0);for(;E._offset<I;){const U=E._nextUint32(),K=E._scan(U),pe=qt(K),AA=E._scan(U-K.byteLength);e.keyValue[pe]=pe.match(/^ktx/i)?qt(AA):AA,E._offset%4&&E._skip(4-E._offset%4)}if(g<=0)return e;const f=new me(C,c,g,!0),p=f._nextUint16(),F=f._nextUint16(),G=f._nextUint32(),y=f._nextUint32(),M=f._nextUint32(),L=f._nextUint32(),V=[];for(let U=0;U<n;U++)V.push({imageFlags:f._nextUint32(),rgbSliceByteOffset:f._nextUint32(),rgbSliceByteLength:f._nextUint32(),alphaSliceByteOffset:f._nextUint32(),alphaSliceByteLength:f._nextUint32()});const N=c+f._offset,$=N+G,De=$+y,ze=De+M,SA=new Uint8Array(C.buffer,C.byteOffset+N,G),$e=new Uint8Array(C.buffer,C.byteOffset+$,y),IA=new Uint8Array(C.buffer,C.byteOffset+De,M),At=new Uint8Array(C.buffer,C.byteOffset+ze,L);return e.globalData={endpointCount:p,selectorCount:F,imageDescs:V,endpointsData:SA,selectorsData:$e,tablesData:IA,extendedData:At},e}let lt,sA,Mt;const ht={env:{emscripten_notify_memory_growth:function(C){Mt=new Uint8Array(sA.exports.memory.buffer)}}};class Mn{init(){return lt||(lt=typeof fetch!="undefined"?fetch("data:application/wasm;base64,"+Xt).then(A=>A.arrayBuffer()).then(A=>WebAssembly.instantiate(A,ht)).then(this._init):WebAssembly.instantiate(Buffer.from(Xt,"base64"),ht).then(this._init),lt)}_init(A){sA=A.instance,ht.env.emscripten_notify_memory_growth(0)}decode(A,e=0){if(!sA)throw new Error("ZSTDDecoder: Await .init() before decoding.");const s=A.byteLength,t=sA.exports.malloc(s);Mt.set(A,t),e=e||Number(sA.exports.ZSTD_findDecompressedSize(t,s));const n=sA.exports.malloc(e),i=sA.exports.ZSTD_decompress(n,e,t,s),a=Mt.slice(n,n+i);return sA.exports.free(t),sA.exports.free(n),a}}const Xt="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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+Rw0AIAAgASgABDYCmOIBQWIgAEEQaiABIAIQPiIDEAMNAhogAEKBgICAEDcDiOEBIAAgASADaiACIANrECoMAQsgACABIAIQKgtBAAsLrQMBBn8jAEGAAWsiAyQAQWIhCAJAIAJBCUkNACAAQZjQAGogAUEIaiIEIAJBeGogAEGY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wOABCwutAgIEfwF+IwBBQGoiBCQAAkACQCACQQhJDQAgASgAAEFwcUHQ1LTCAUcNACABIAIQIiEBIABCADcDCCAAQQA2AgQgACABNgIADAELIARBGGogASACEC0iAxADBEAgACADEBoMAQsgAwRAIABBuH8QGgwBCyACIAQoAjAiA2shAiABIANqIQMDQAJAIAAgAyACIARBCGoQLCIFEAMEfyAFBSACIAVBA2oiBU8NAUG4fwsQGgwCCyAGQQFqIQYgAiAFayECIAMgBWohAyAEKAIMRQ0ACyAEKAI4BEAgAkEDTQRAIABBuH8QGgwCCyADQQRqIQMLIAQoAighAiAEKQMYIQcgAEEANgIEIAAgAyABazYCACAAIAIgBmytIAcgB0J/URs3AwgLIARBQGskAAslAQF/IwBBEGsiAiQAIAIgACABEFEgAigCACEAIAJBEGokACAAC30BBH8jAEGQBGsiBCQAIARB/wE2AggCQCAEQRBqIARBCGogBEEMaiABIAIQFSIGEAMEQCAGIQUMAQtBVCEFIAQoAgwiB0EGSw0AIAMgBEEQaiAEKAIIIAcQQSIFEAMNACAAIAEgBmogAiAGayADEDwhBQsgBEGQBGokACAFC4cBAgJ/An5BABAWIQMCQANAIAEgA08EQAJAIAAoAABBcHFB0NS0wgFGBEAgACABECIiAhADRQ0BQn4PCyAAIAEQVSIEQn1WDQMgBCAFfCIFIARUIQJCfiEEIAINAyAAIAEQUiICEAMNAwsgASACayEBIAAgAmohAAwBCwtCfiAFIAEbIQQLIAQLPwIBfwF+IwBBMGsiAiQAAn5CfiACQQhqIAAgARAtDQAaQgAgAigCHEEBRg0AGiACKQMICyEDIAJBMGokACADC40BAQJ/IwBBMGsiASQAAkAgAEUNACAAKAKI4gENACABIABB/OEBaigCADYCKCABIAApAvThATcDICAAEDAgACgCqOIBIQIgASABKAIoNgIYIAEgASkDIDcDECACIAFBEGoQGyAAQQA2AqjiASABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALKgECfyMAQRBrIgAkACAAQQA2AgggAEIANwMAIAAQWCEBIABBEGokACABC4cBAQN/IwBBEGsiAiQAAkAgACgCAEUgACgCBEVzDQAgAiAAKAIINgIIIAIgACkCADcDAAJ/IAIoAgAiAQRAIAIoAghBqOMJIAERBQAMAQtBqOMJECgLIgFFDQAgASAAKQIANwL04QEgAUH84QFqIAAoAgg2AgAgARBZIAEhAwsgAkEQaiQAIAMLywEBAn8jAEEgayIBJAAgAEGBgIDAADYCtOIBIABBADYCiOIBIABBADYC7OEBIABCADcDkOIBIABBADYCpOMJIABBADYC3OIBIABCADcCzOIBIABBADYCvOIBIABBADYCxOABIABCADcCnOIBIABBpOIBakIANwIAIABBrOIBakEANgIAIAFCADcCECABQgA3AhggASABKQMYNwMIIAEgASkDEDcDACABKAIIQQh2QQFxIQIgAEEANgLg4gEgACACNgKM4gEgAUEgaiQAC3YBA38jAEEwayIBJAAgAARAIAEgAEHE0AFqIgIoAgA2AiggASAAKQK80AE3AyAgACgCACEDIAEgAigCADYCGCABIAApArzQATcDECADIAFBEGoQGyABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALzAEBAX8gACABKAK00AE2ApjiASAAIAEoAgQiAjYCwOABIAAgAjYCvOABIAAgAiABKAIIaiICNgK44AEgACACNgLE4AEgASgCuNABBEAgAEKBgICAEDcDiOEBIAAgAUGk0ABqNgIMIAAgAUGUIGo2AgggACABQZwwajYCBCAAIAFBDGo2AgAgAEGs0AFqIAFBqNABaigCADYCACAAQbDQAWogAUGs0AFqKAIANgIAIABBtNABaiABQbDQAWooAgA2AgAPCyAAQgA3A4jhAQs7ACACRQRAQbp/DwsgBEUEQEFsDwsgAiAEEGAEQCAAIAEgAiADIAQgBRBhDwsgACABIAIgAyAEIAUQZQtGAQF/IwBBEGsiBSQAIAVBCGogBBAOAn8gBS0ACQRAIAAgASACIAMgBBAyDAELIAAgASACIAMgBBA0CyEAIAVBEGokACAACzQAIAAgAyAEIAUQNiIFEAMEQCAFDwsgBSAESQR/IAEgAiADIAVqIAQgBWsgABA1BUG4fwsLRgEBfyMAQRBrIgUkACAFQQhqIAQQDgJ/IAUtAAkEQCAAIAEgAiADIAQQYgwBCyAAIAEgAiADIAQQNQshACAFQRBqJAAgAAtZAQF/QQ8hAiABIABJBEAgAUEE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",ut=new WeakMap;let dt=0,ft;class z extends B.Loader{constructor(A){super(A),this.transcoderPath="",this.transcoderBinary=null,this.transcoderPending=null,this.workerPool=new fn,this.workerSourceURL="",this.workerConfig=null,typeof MSC_TRANSCODER!="undefined"&&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}detectSupportAsync(A){return YA(this,null,function*(){return this.workerConfig={astcSupported:yield A.hasFeatureAsync("texture-compression-astc"),etc1Supported:yield A.hasFeatureAsync("texture-compression-etc1"),etc2Supported:yield A.hasFeatureAsync("texture-compression-etc2"),dxtSupported:yield A.hasFeatureAsync("texture-compression-bc"),bptcSupported:yield A.hasFeatureAsync("texture-compression-bptc"),pvrtcSupported:yield A.hasFeatureAsync("texture-compression-pvrtc")},this})}detectSupport(A){return A.isWebGPURenderer===!0?this.workerConfig={astcSupported:A.hasFeature("texture-compression-astc"),etc1Supported:A.hasFeature("texture-compression-etc1"),etc2Supported:A.hasFeature("texture-compression-etc2"),dxtSupported:A.hasFeature("texture-compression-bc"),bptcSupported:A.hasFeature("texture-compression-bptc"),pvrtcSupported:A.hasFeature("texture-compression-pvrtc")}:(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")},this.workerConfig.etc1Supported=!1),this}init(){if(!this.transcoderPending){const A=new B.FileLoader(this.manager);A.setPath(this.transcoderPath),A.setWithCredentials(this.withCredentials);const e=A.loadAsync("basis_transcoder.js"),s=new B.FileLoader(this.manager);s.setPath(this.transcoderPath),s.setResponseType("arraybuffer"),s.setWithCredentials(this.withCredentials);const t=s.loadAsync("basis_transcoder.wasm");this.transcoderPending=Promise.all([e,t]).then(([n,i])=>{const a=z.BasisWorker.toString(),r=["/* constants */","let _EngineFormat = "+JSON.stringify(z.EngineFormat),"let _TranscoderFormat = "+JSON.stringify(z.TranscoderFormat),"let _BasisFormat = "+JSON.stringify(z.BasisFormat),"/* basis_transcoder.js */",n,"/* worker */",a.substring(a.indexOf("{")+1,a.lastIndexOf("}"))].join(`
10
+ `);this.workerSourceURL=URL.createObjectURL(new Blob([r])),this.transcoderBinary=i,this.workerPool.setWorkerCreator(()=>{const I=new Worker(this.workerSourceURL),c=this.transcoderBinary.slice(0);return I.postMessage({type:"init",config:this.workerConfig,transcoderBinary:c},[c]),I})}),dt>0&&console.warn("THREE.KTX2Loader: Multiple active KTX2 loaders may cause performance issues. Use a single KTX2Loader instance, or call .dispose() on old instances."),dt++}return this.transcoderPending}load(A,e,s,t){if(this.workerConfig===null)throw new Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");const n=new B.FileLoader(this.manager);n.setResponseType("arraybuffer"),n.setWithCredentials(this.withCredentials),n.load(A,i=>{if(ut.has(i))return ut.get(i).promise.then(e).catch(t);this._createTexture(i).then(a=>e?e(a):null).catch(t)},s,t)}_createTextureFrom(A,e){const{faces:s,width:t,height:n,format:i,type:a,error:r,dfdFlags:I}=A;if(a==="error")return Promise.reject(r);let c;if(e.faceCount===6)c=new B.CompressedCubeTexture(s,i,B.UnsignedByteType);else{const g=s[0].mipmaps;c=e.layerCount>1?new B.CompressedArrayTexture(g,t,n,e.layerCount,i,B.UnsignedByteType):new B.CompressedTexture(g,t,n,i,B.UnsignedByteType)}return c.minFilter=s[0].mipmaps.length===1?B.LinearFilter:B.LinearMipmapLinearFilter,c.magFilter=B.LinearFilter,c.generateMipmaps=!1,c.needsUpdate=!0,c.colorSpace=Qs(e),c.premultiplyAlpha=!!(I&pn),c}_createTexture(s){return YA(this,arguments,function*(A,e={}){const t=yn(new Uint8Array(A));if(t.vkFormat!==Rn)return Ln(t);const n=e,i=this.init().then(()=>this.workerPool.postMessage({type:"transcode",buffer:A,taskConfig:n},[A])).then(a=>this._createTextureFrom(a.data,t));return ut.set(A,{promise:i}),i})}dispose(){return this.workerPool.dispose(),this.workerSourceURL&&URL.revokeObjectURL(this.workerSourceURL),dt--,this}}z.BasisFormat={ETC1S:0,UASTC_4x4:1};z.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};z.EngineFormat={RGBAFormat:B.RGBAFormat,RGBA_ASTC_4x4_Format:B.RGBA_ASTC_4x4_Format,RGBA_BPTC_Format:B.RGBA_BPTC_Format,RGBA_ETC2_EAC_Format:B.RGBA_ETC2_EAC_Format,RGBA_PVRTC_4BPPV1_Format:B.RGBA_PVRTC_4BPPV1_Format,RGBA_S3TC_DXT5_Format:B.RGBA_S3TC_DXT5_Format,RGB_ETC1_Format:B.RGB_ETC1_Format,RGB_ETC2_Format:B.RGB_ETC2_Format,RGB_PVRTC_4BPPV1_Format:B.RGB_PVRTC_4BPPV1_Format,RGB_S3TC_DXT1_Format:B.RGB_S3TC_DXT1_Format};z.BasisWorker=function(){let C,A,e;const s=_EngineFormat,t=_TranscoderFormat,n=_BasisFormat;self.addEventListener("message",function(u){const h=u.data;switch(h.type){case"init":C=h.config,i(h.transcoderBinary);break;case"transcode":A.then(()=>{try{const{faces:E,buffers:f,width:p,height:F,hasAlpha:G,format:y,dfdFlags:M}=a(h.buffer);self.postMessage({type:"transcode",id:h.id,faces:E,width:p,height:F,hasAlpha:G,format:y,dfdFlags:M},f)}catch(E){console.error(E),self.postMessage({type:"error",id:h.id,error:E.message})}});break}});function i(u){A=new Promise(h=>{e={wasmBinary:u,onRuntimeInitialized:h},BASIS(e)}).then(()=>{e.initializeBasis(),e.KTX2File===void 0&&console.warn("THREE.KTX2Loader: Please update Basis Universal transcoder.")})}function a(u){const h=new e.KTX2File(new Uint8Array(u));function E(){h.close(),h.delete()}if(!h.isValid())throw E(),new Error("THREE.KTX2Loader: Invalid or unsupported .ktx2 file");const f=h.isUASTC()?n.UASTC_4x4:n.ETC1S,p=h.getWidth(),F=h.getHeight(),G=h.getLayers()||1,y=h.getLevels(),M=h.getFaces(),L=h.getHasAlpha(),V=h.getDFDFlags(),{transcoderFormat:N,engineFormat:$}=g(f,p,F,L);if(!p||!F||!y)throw E(),new Error("THREE.KTX2Loader: Invalid texture");if(!h.startTranscoding())throw E(),new Error("THREE.KTX2Loader: .startTranscoding failed");const De=[],ze=[];for(let SA=0;SA<M;SA++){const $e=[];for(let IA=0;IA<y;IA++){const At=[];let U,K;for(let AA=0;AA<G;AA++){const PA=h.getImageLevelInfo(IA,AA,SA);SA===0&&IA===0&&AA===0&&(PA.origWidth%4!==0||PA.origHeight%4!==0)&&console.warn("THREE.KTX2Loader: ETC1S and UASTC textures should use multiple-of-four dimensions."),y>1?(U=PA.origWidth,K=PA.origHeight):(U=PA.width,K=PA.height);const Ut=new Uint8Array(h.getImageTranscodedSizeInBytes(IA,AA,0,N));if(!h.transcodeImage(Ut,IA,AA,SA,N,0,-1,-1))throw E(),new Error("THREE.KTX2Loader: .transcodeImage failed.");At.push(Ut)}const pe=l(At);$e.push({data:pe,width:U,height:K}),ze.push(pe.buffer)}De.push({mipmaps:$e,width:p,height:F,format:$})}return E(),{faces:De,buffers:ze,width:p,height:F,hasAlpha:L,format:$,dfdFlags:V}}const r=[{if:"astcSupported",basisFormat:[n.UASTC_4x4],transcoderFormat:[t.ASTC_4x4,t.ASTC_4x4],engineFormat:[s.RGBA_ASTC_4x4_Format,s.RGBA_ASTC_4x4_Format],priorityETC1S:1/0,priorityUASTC:1,needsPowerOfTwo:!1},{if:"bptcSupported",basisFormat:[n.ETC1S,n.UASTC_4x4],transcoderFormat:[t.BC7_M5,t.BC7_M5],engineFormat:[s.RGBA_BPTC_Format,s.RGBA_BPTC_Format],priorityETC1S:3,priorityUASTC:2,needsPowerOfTwo:!1},{if:"dxtSupported",basisFormat:[n.ETC1S,n.UASTC_4x4],transcoderFormat:[t.BC1,t.BC3],engineFormat:[s.RGB_S3TC_DXT1_Format,s.RGBA_S3TC_DXT5_Format],priorityETC1S:4,priorityUASTC:5,needsPowerOfTwo:!1},{if:"etc2Supported",basisFormat:[n.ETC1S,n.UASTC_4x4],transcoderFormat:[t.ETC1,t.ETC2],engineFormat:[s.RGB_ETC2_Format,s.RGBA_ETC2_EAC_Format],priorityETC1S:1,priorityUASTC:3,needsPowerOfTwo:!1},{if:"etc1Supported",basisFormat:[n.ETC1S,n.UASTC_4x4],transcoderFormat:[t.ETC1],engineFormat:[s.RGB_ETC1_Format],priorityETC1S:2,priorityUASTC:4,needsPowerOfTwo:!1},{if:"pvrtcSupported",basisFormat:[n.ETC1S,n.UASTC_4x4],transcoderFormat:[t.PVRTC1_4_RGB,t.PVRTC1_4_RGBA],engineFormat:[s.RGB_PVRTC_4BPPV1_Format,s.RGBA_PVRTC_4BPPV1_Format],priorityETC1S:5,priorityUASTC:6,needsPowerOfTwo:!0}],I=r.sort(function(u,h){return u.priorityETC1S-h.priorityETC1S}),c=r.sort(function(u,h){return u.priorityUASTC-h.priorityUASTC});function g(u,h,E,f){let p,F;const G=u===n.ETC1S?I:c;for(let y=0;y<G.length;y++){const M=G[y];if(C[M.if]&&M.basisFormat.includes(u)&&!(f&&M.transcoderFormat.length<2)&&!(M.needsPowerOfTwo&&!(Q(h)&&Q(E))))return p=M.transcoderFormat[f?1:0],F=M.engineFormat[f?1:0],{transcoderFormat:p,engineFormat:F}}return console.warn("THREE.KTX2Loader: No suitable compressed texture format found. Decoding to RGBA32."),p=t.RGBA32,F=s.RGBAFormat,{transcoderFormat:p,engineFormat:F}}function Q(u){return u<=2?!0:(u&u-1)===0&&u!==0}function l(u){if(u.length===1)return u[0];let h=0;for(let p=0;p<u.length;p++){const F=u[p];h+=F.byteLength}const E=new Uint8Array(h);let f=0;for(let p=0;p<u.length;p++){const F=u[p];E.set(F,f),f+=F.byteLength}return E}};const Sn=new Set([B.RGBAFormat,B.RGFormat,B.RedFormat]),Dt={[gs]:B.RGBAFormat,[as]:B.RGBAFormat,[is]:B.RGBAFormat,[os]:B.RGBAFormat,[Is]:B.RGFormat,[Bs]:B.RGFormat,[ss]:B.RGFormat,[ns]:B.RGFormat,[Cs]:B.RedFormat,[rs]:B.RedFormat,[ts]:B.RedFormat,[es]:B.RedFormat,[Es]:B.RGBA_ASTC_6x6_Format,[cs]:B.RGBA_ASTC_6x6_Format},pt={[gs]:B.FloatType,[as]:B.HalfFloatType,[is]:B.UnsignedByteType,[os]:B.UnsignedByteType,[Is]:B.FloatType,[Bs]:B.HalfFloatType,[ss]:B.UnsignedByteType,[ns]:B.UnsignedByteType,[Cs]:B.FloatType,[rs]:B.HalfFloatType,[ts]:B.UnsignedByteType,[es]:B.UnsignedByteType,[Es]:B.UnsignedByteType,[cs]:B.UnsignedByteType};function Ln(C){return YA(this,null,function*(){const{vkFormat:A}=C;if(Dt[A]===void 0)throw new Error("THREE.KTX2Loader: Unsupported vkFormat.");let e;C.supercompressionScheme===Pt&&(ft||(ft=new Promise(n=>YA(this,null,function*(){const i=new Mn;yield i.init(),n(i)}))),e=yield ft);const s=[];for(let n=0;n<C.levels.length;n++){const i=Math.max(1,C.pixelWidth>>n),a=Math.max(1,C.pixelHeight>>n),r=C.pixelDepth?Math.max(1,C.pixelDepth>>n):0,I=C.levels[n];let c;if(C.supercompressionScheme===Dn)c=I.levelData;else if(C.supercompressionScheme===Pt)c=e.decode(I.levelData,I.uncompressedByteLength);else throw new Error("THREE.KTX2Loader: Unsupported supercompressionScheme.");let g;pt[A]===B.FloatType?g=new Float32Array(c.buffer,c.byteOffset,c.byteLength/Float32Array.BYTES_PER_ELEMENT):pt[A]===B.HalfFloatType?g=new Uint16Array(c.buffer,c.byteOffset,c.byteLength/Uint16Array.BYTES_PER_ELEMENT):g=c,s.push({data:g,width:i,height:a,depth:r})}let t;if(Sn.has(Dt[A]))t=C.pixelDepth===0?new B.DataTexture(s[0].data,C.pixelWidth,C.pixelHeight):new B.Data3DTexture(s[0].data,C.pixelWidth,C.pixelHeight,C.pixelDepth);else{if(C.pixelDepth>0)throw new Error("THREE.KTX2Loader: Unsupported pixelDepth.");t=new B.CompressedTexture(s,C.pixelWidth,C.pixelHeight)}return t.mipmaps=s,t.type=pt[A],t.format=Dt[A],t.colorSpace=Qs(C),t.needsUpdate=!0,Promise.resolve(t)})}function Qs(C){const A=C.dataFormatDescriptor[0];return A.colorPrimaries===Gn?A.transferFunction===Yt?B.SRGBColorSpace:B.LinearSRGBColorSpace:A.colorPrimaries===mn?A.transferFunction===Yt?B.DisplayP3ColorSpace:B.LinearDisplayP3ColorSpace:(A.colorPrimaries===Fn||console.warn(`THREE.KTX2Loader: Unsupported color primaries, "${A.colorPrimaries}"`),B.NoColorSpace)}let et;const Tn=()=>{if(et)return et;const C="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",A="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",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]),s=new Uint8Array([32,0,65,253,3,1,2,34,4,106,6,5,11,8,7,20,13,33,12,16,128,9,116,64,19,113,127,15,10,21,22,14,255,66,24,54,136,107,18,23,192,26,114,118,132,17,77,101,130,144,27,87,131,44,45,74,156,154,70,167]);if(typeof WebAssembly!="object")return{supported:!1};let t=C;WebAssembly.validate(e)&&(t=A);let n;const i=WebAssembly.instantiate(a(t),{}).then(g=>{n=g.instance,n.exports.__wasm_call_ctors()});function a(g){const Q=new Uint8Array(g.length);for(let u=0;u<g.length;++u){const h=g.charCodeAt(u);Q[u]=h>96?h-71:h>64?h-65:h>47?h+4:h>46?63:62}let l=0;for(let u=0;u<g.length;++u)Q[l++]=Q[u]<60?s[Q[u]]:(Q[u]-60)*64+Q[++u];return Q.buffer.slice(0,l)}function r(g,Q,l,u,h,E){const f=n.exports.sbrk,p=l+3&-4,F=f(p*u),G=f(h.length),y=new Uint8Array(n.exports.memory.buffer);y.set(h,G);const M=g(F,l,u,G,h.length);if(M===0&&E&&E(F,p,u),Q.set(y.subarray(F,F+l*u)),f(F-f(0)),M!==0)throw new Error(`Malformed buffer data: ${M}`)}const I={0:"",1:"meshopt_decodeFilterOct",2:"meshopt_decodeFilterQuat",3:"meshopt_decodeFilterExp",NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp"},c={0:"meshopt_decodeVertexBuffer",1:"meshopt_decodeIndexBuffer",2:"meshopt_decodeIndexSequence",ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"};return et={ready:i,supported:!0,decodeVertexBuffer(g,Q,l,u,h){r(n.exports.meshopt_decodeVertexBuffer,g,Q,l,u,n.exports[I[h]])},decodeIndexBuffer(g,Q,l,u){r(n.exports.meshopt_decodeIndexBuffer,g,Q,l,u)},decodeIndexSequence(g,Q,l,u){r(n.exports.meshopt_decodeIndexSequence,g,Q,l,u)},decodeGltfBuffer(g,Q,l,u,h,E){r(n.exports[c[h]],g,Q,l,u,n.exports[I[E]])}},et};var ZA,xe,He,Je;class xn{constructor(){d(this,ZA,new bs);d(this,xe,new un().setDecoderPath(`${w.CDNVersion}/examples/jsm/libs/draco/gltf/`));d(this,He,new z().setTranscoderPath(`${w.CDNVersion}/examples/jsm/libs/basis/`));d(this,Je,!1);o(this,ZA).setCrossOrigin("anonymous").setDRACOLoader(o(this,xe)).setMeshoptDecoder(Tn)}get gltfLoader(){return o(this,ZA)}get dracoLoader(){return o(this,xe)}get ktx2Loader(){return o(this,He)}load(...A){o(this,Je)||(o(this,ZA).setKTX2Loader(o(this,He).detectSupport(w.webglRenderer)),D(this,Je,!0));const[e,s,...t]=A;if(w.cacheAssets&&Y.has(e)){const n=Y.get(e).data;s(n)}else this.gltfLoader.load(e,n=>{w.cacheAssets&&Y.set(e,{data:n,dispose:()=>{n.cameras.forEach(i=>vA(i)),n.scenes.forEach(i=>{vA(i)})}}),s(n)},...t)}}ZA=new WeakMap,xe=new WeakMap,He=new WeakMap,Je=new WeakMap;const ls=new xn;var oA,x,rA,Ue;class Hn{constructor(A,e){d(this,oA,void 0);d(this,x,void 0);d(this,rA,[]);d(this,Ue,()=>{const A=o(this,x).left-o(this,oA).box.left,e=o(this,x).top-o(this,oA).box.top;let s=0,t=0;o(this,oA).isClipped||(s=o(this,x).position.x-o(this,x).left,t=o(this,x).position.y-o(this,x).top);const n=o(this,oA).box.width-o(this,x).scale.x,i=A-n,a=o(this,oA).box.height-o(this,x).scale.y,r=e-a;o(this,rA)[0].constant=o(this,x).scale.y/2+t*-1-a/2-r,o(this,rA)[1].constant=o(this,x).scale.y/2+t+a/2+r,o(this,rA)[2].constant=o(this,x).scale.x/2+s+n/2+i,o(this,rA)[3].constant=o(this,x).scale.x/2+s*-1-n/2-i});D(this,oA,w.getView((e==null?void 0:e.viewName)||"default")),D(this,x,new mt.LayoutBox(A,{cartesian:!1}));const s=(e==null?void 0:e.scale)||1;D(this,rA,[new B.Plane(new B.Vector3(0,-1*s,0)),new B.Plane(new B.Vector3(0,1*s,0)),new B.Plane(new B.Vector3(-1*s,0,0)),new B.Plane(new B.Vector3(1*s,0,0))]),yA.ticker.subscribe(o(this,Ue),{order:we.TICK_ORDER.LAYOUT_BOX})}get planes(){return o(this,rA)}get layoutBox(){return o(this,x)}destroy(){yA.ticker.unsubscribe(o(this,Ue)),o(this,x).destroy()}}oA=new WeakMap,x=new WeakMap,rA=new WeakMap,Ue=new WeakMap;class Jn extends B.Group{constructor(A,e=500){super(),this.add(new B.PlaneHelper(A.planes[0],e,16711680)),this.add(new B.PlaneHelper(A.planes[1],e,16711680)),this.add(new B.PlaneHelper(A.planes[2],e,16711680)),this.add(new B.PlaneHelper(A.planes[3],e,16711680))}}var zA,HA,$A,be,Ne,uA,Ae,ke;class xt extends ys.SourceManager{constructor(e){super(e);d(this,zA,new J.Store(null));d(this,HA,new J.Store(void 0));d(this,$A,void 0);d(this,be,void 0);d(this,Ne,void 0);d(this,uA,void 0);d(this,Ae,!1);d(this,ke,()=>{if(!(o(this,uA)&&!o(this,Ae))&&(this.current!==this.previous&&(o(this,zA).current=null),this.current)){const e=o(this,Ne)?this.current.url:this.current.name+this.current.extension;o(this,uA)||Ct.loading.setTotal(e,1),o(this,HA).current="start",o(this,be).load(e,s=>{var t;o(this,zA).current=((t=this.processData)==null?void 0:t.call(this,s))||s,o(this,HA).current="complete",o(this,uA)||Ct.loading.setLoaded(e,1)},void 0,()=>{o(this,uA)||(o(this,HA).current="error",Ct.loading.setError(e,e))})}});D(this,$A,e.consumer),D(this,be,e.loader),D(this,Ne,e.keepSourceParameters||!1),D(this,uA,e.lazy||!1),this.subscribe(o(this,ke)),o(this,$A).addEventListener("added",()=>{this.connect()}),o(this,$A).addEventListener("removed",()=>{this.disconnect()})}get data(){return o(this,zA)}get loading(){return o(this,HA)}lazyLoad(){o(this,Ae)||(D(this,Ae,!0),o(this,ke).call(this))}}zA=new WeakMap,HA=new WeakMap,$A=new WeakMap,be=new WeakMap,Ne=new WeakMap,uA=new WeakMap,Ae=new WeakMap,ke=new WeakMap;var JA;class Un extends B.Group{constructor(e){super();d(this,JA,void 0);D(this,JA,new xt(eA({loader:ls,consumer:this},e))),o(this,JA).processData=s=>{if(w.cacheAssets){const t=eA({},s);return t.scene=s.scene.clone(!0),t.scenes=s.scenes.map(n=>s.scene===n?t.scene:n.clone(!0)),t}return s},o(this,JA).data.subscribe(s=>{s.current?this.add(...s.current.scene.children):this.children.forEach(t=>{this.remove(t),vA(t)})})}get sourceManager(){return o(this,JA)}}JA=new WeakMap;const de=`attribute vec3 position;
11
+ uniform vec2 px;
12
+ uniform vec2 boundarySpace;
13
+ varying vec2 uv;
14
+
15
+ precision highp float;
16
+
17
+ void main(){
18
+ vec3 pos = position;
19
+ vec2 scale = 1.0 - boundarySpace * 2.0;
20
+ pos.xy = pos.xy * scale;
21
+ uv = vec2(0.5)+(pos.xy)*0.5;
22
+ gl_Position = vec4(pos, 1.0);
23
+ }`,bn=`precision highp float;
24
+ uniform vec3 backgroundColor;
25
+ uniform float backgroundOpacity;
26
+ uniform vec3 fluidColor;
27
+ uniform float fluidOpacity;
28
+ uniform float backgroundMixThreshold;
29
+ uniform sampler2D velocity;
30
+ varying vec2 uv;
31
+
32
+ void main(){
33
+ vec2 vel = texture2D(velocity, uv).xy;
34
+
35
+ float len = length(vel);
36
+
37
+ vel = vel * 0.5 + 0.5;
38
+
39
+ vec4 backgroundColorA = mix(vec4(vec3(0.0,0.0,0.0), backgroundOpacity), vec4(backgroundColor, backgroundOpacity), backgroundMixThreshold);
40
+ vec4 fluidColorA = vec4(fluidColor, fluidOpacity);
41
+ vec4 finalColor = mix(backgroundColorA, fluidColorA, len);
42
+
43
+ gl_FragColor = finalColor;
44
+ }`,Nn=`attribute vec3 position;
45
+ varying vec2 uv;
46
+ uniform vec2 px;
47
+
48
+ precision highp float;
49
+
50
+ void main(){
51
+ vec3 pos = position;
52
+ uv = 0.5 + pos.xy * 0.5;
53
+ vec2 n = sign(pos.xy);
54
+ pos.xy = abs(pos.xy) - px * 1.0;
55
+ pos.xy *= n;
56
+ gl_Position = vec4(pos, 1.0);
57
+ }`,Vt=`precision highp float;
58
+ uniform sampler2D velocity;
59
+ uniform float dt;
60
+ uniform bool isBFECC;
61
+ // uniform float uvScale;
62
+ uniform vec2 fboSize;
63
+ uniform vec2 px;
64
+ varying vec2 uv;
65
+
66
+ void main(){
67
+ vec2 ratio = max(fboSize.x, fboSize.y) / fboSize;
68
+
69
+ if(isBFECC == false){
70
+ vec2 vel = texture2D(velocity, uv).xy;
71
+ vec2 uv2 = uv - vel * dt * ratio;
72
+ vec2 newVel = texture2D(velocity, uv2).xy;
73
+ gl_FragColor = vec4(newVel, 0.0, 0.0);
74
+ } else {
75
+ vec2 spot_new = uv;
76
+ vec2 vel_old = texture2D(velocity, uv).xy;
77
+ // back trace
78
+ vec2 spot_old = spot_new - vel_old * dt * ratio;
79
+ vec2 vel_new1 = texture2D(velocity, spot_old).xy;
80
+
81
+ // forward trace
82
+ vec2 spot_new2 = spot_old + vel_new1 * dt * ratio;
83
+
84
+ vec2 error = spot_new2 - spot_new;
85
+
86
+ vec2 spot_new3 = spot_new - error / 2.0;
87
+ vec2 vel_2 = texture2D(velocity, spot_new3).xy;
88
+
89
+ // back trace 2
90
+ vec2 spot_old2 = spot_new3 - vel_2 * dt * ratio;
91
+ // gl_FragColor = vec4(spot_old2, 0.0, 0.0);
92
+ vec2 newVel2 = texture2D(velocity, spot_old2).xy;
93
+ gl_FragColor = vec4(newVel2, 0.0, 0.0);
94
+ }
95
+ }`;var dA,UA,Ke,Oe,_e,ve,bA;class fe{constructor(A){d(this,dA,null);d(this,UA,null);d(this,Ke,null);d(this,Oe,null);d(this,_e,null);d(this,ve,void 0);d(this,bA,{});var e;if(D(this,ve,A.material),(e=A.material)!=null&&e.uniforms)for(const s in A.material.uniforms)o(this,bA)[s]={value:A.material.uniforms[s]};this.output=A.output}get scene(){return o(this,dA)}get camera(){return o(this,UA)}get uniforms(){return o(this,bA)}update(...A){w.webglRenderer.setRenderTarget(this.output),w.webglRenderer.render(o(this,dA),o(this,UA)),w.webglRenderer.setRenderTarget(null)}dispose(){vA(o(this,UA)),vA(o(this,dA))}init(...A){D(this,dA,new B.Scene),D(this,UA,new B.Camera),Object.keys(o(this,bA)).length&&(D(this,Ke,new B.PlaneGeometry(2,2)),D(this,Oe,new B.RawShaderMaterial(Fe(eA({},o(this,ve)),{uniforms:o(this,bA)}))),D(this,_e,new B.Mesh(o(this,Ke),o(this,Oe))),o(this,dA).add(o(this,_e)))}}dA=new WeakMap,UA=new WeakMap,Ke=new WeakMap,Oe=new WeakMap,_e=new WeakMap,ve=new WeakMap,bA=new WeakMap;var ee,it,hs;class kn extends fe{constructor(e){super({material:{vertexShader:de,fragmentShader:Vt,uniforms:{boundarySpace:e.cellScale,px:e.cellScale,fboSize:e.fboSize,velocity:e.src.texture,dt:e.dt,isBFECC:e.BFECC}},output:e.dst});d(this,it);d(this,ee,null);this.init()}update(e){this.uniforms.dt.value=e.dt,o(this,ee).visible=e.isBounce,this.uniforms.isBFECC.value=e.BFECC,super.update()}init(){super.init(),tA(this,it,hs).call(this)}}ee=new WeakMap,it=new WeakSet,hs=function(){const e=new B.BufferGeometry,s=new Float32Array([-1,-1,0,-1,1,0,-1,1,0,1,1,0,1,1,0,1,-1,0,1,-1,0,-1,-1,0]);e.setAttribute("position",new B.BufferAttribute(s,3));const t=new B.RawShaderMaterial({vertexShader:Nn,fragmentShader:Vt,uniforms:this.uniforms});D(this,ee,new B.LineSegments(e,t)),this.scene.add(o(this,ee))};const Kn=`precision highp float;
96
+
97
+ attribute vec3 position;
98
+ attribute vec2 uv;
99
+ uniform vec2 center;
100
+ uniform vec2 scale;
101
+ uniform vec2 px;
102
+ varying vec2 vUv;
103
+
104
+ void main(){
105
+ vec2 pos = position.xy * scale * 2.0 * px + center;
106
+ vUv = uv;
107
+ gl_Position = vec4(pos, 0.0, 1.0);
108
+ }
109
+ `,On=`precision highp float;
110
+
111
+ uniform vec2 force;
112
+ uniform vec2 center;
113
+ uniform vec2 scale;
114
+ uniform vec2 px;
115
+ varying vec2 vUv;
116
+
117
+ void main(){
118
+ vec2 circle = (vUv - 0.5) * 2.0;
119
+ float d = 1.0-min(length(circle), 1.0);
120
+ d *= d;
121
+ gl_FragColor = vec4(force * d, 0, 1);
122
+ }
123
+ `;var q,X,fA,te;class _n{constructor(){d(this,q,void 0);d(this,X,void 0);d(this,fA,void 0);d(this,te,void 0);this.disabled=!1,D(this,q,new It.Vector2),D(this,X,new It.Vector2),D(this,fA,new It.Vector2),D(this,te,A=>{this.disabled||this.updateCoords(A.clientX,A.clientY)})}init(){document.body.addEventListener("pointermove",o(this,te),!1)}dispose(){document.body.removeEventListener("pointermove",o(this,te),!1)}get coords(){return o(this,q)}get diff(){return o(this,fA)}updateCoords(A=0,e=0){o(this,q).set(A/w.width*2-1,-(e/w.height)*2+1),Math.abs(o(this,q).x-o(this,X).x)>.2&&(o(this,X).copy(o(this,q)),o(this,fA).subVectors(o(this,q),o(this,X)))}update(){o(this,fA).subVectors(o(this,q),o(this,X)),o(this,X).copy(o(this,q)),o(this,X).x===0&&o(this,X).y===0&&o(this,fA).set(0,0)}}q=new WeakMap,X=new WeakMap,fA=new WeakMap,te=new WeakMap;const RA=new _n;var se;class vn extends fe{constructor(e){super({output:e.dst});d(this,se,null);this.init(e)}update(e){const s=RA.diff.x/2*e.pointerForce,t=RA.diff.y/2*e.pointerForce,n=e.pointerSize*e.cellScale.x,i=e.pointerSize*e.cellScale.y,a=Math.min(Math.max(RA.coords.x,-1+n+e.cellScale.x*2),1-n-e.cellScale.x*2),r=Math.min(Math.max(RA.coords.y,-1+i+e.cellScale.y*2),1-i-e.cellScale.y*2),I=o(this,se).material.uniforms;I.force.value.set(s,t),I.center.value.set(a,r),I.scale.value.set(e.pointerSize,e.pointerSize),super.update()}init(e){super.init();const s=new B.PlaneGeometry(1,1),t=new B.RawShaderMaterial({vertexShader:Kn,fragmentShader:On,blending:B.AdditiveBlending,uniforms:{px:{value:e.cellScale},force:{value:new B.Vector2(0,0)},center:{value:new B.Vector2(0,0)},scale:{value:new B.Vector2(e.pointerSize,e.pointerSize)}}});D(this,se,new B.Mesh(s,t)),this.scene.add(o(this,se))}}se=new WeakMap;const Pn=`precision highp float;
124
+ uniform sampler2D velocity;
125
+ uniform sampler2D velocity_new;
126
+ uniform float v;
127
+ uniform vec2 px;
128
+ uniform float dt;
129
+
130
+ varying vec2 uv;
131
+
132
+ void main(){
133
+ // poisson equation
134
+ vec2 old = texture2D(velocity, uv).xy;
135
+ vec2 new0 = texture2D(velocity_new, uv + vec2(px.x * 2.0, 0)).xy;
136
+ vec2 new1 = texture2D(velocity_new, uv - vec2(px.x * 2.0, 0)).xy;
137
+ vec2 new2 = texture2D(velocity_new, uv + vec2(0, px.y * 2.0)).xy;
138
+ vec2 new3 = texture2D(velocity_new, uv - vec2(0, px.y * 2.0)).xy;
139
+
140
+ vec2 new = 4.0 * old + v * dt * (new0 + new1 + new2 + new3);
141
+ new /= 4.0 * (1.0 + v * dt);
142
+
143
+ gl_FragColor = vec4(new, 0.0, 0.0);
144
+ }
145
+ `;var ne,ie;class Yn extends fe{constructor(e){super({material:{vertexShader:de,fragmentShader:Pn,uniforms:{boundarySpace:e.boundarySpace,velocity:e.src.texture,velocity_new:e.dst_.texture,v:e.viscous,px:e.cellScale,dt:e.dt}},output:e.dst});d(this,ne,void 0);d(this,ie,void 0);D(this,ne,e.dst_),D(this,ie,e.dst),this.init()}update(e){let s=null,t=null;this.uniforms.v.value=e.viscous;for(var n=0;n<e.iterations;n++)n%2==0?(s=o(this,ne),t=o(this,ie)):(s=o(this,ie),t=o(this,ne)),this.uniforms.velocity_new.value=s.texture,this.output=t,this.uniforms.dt.value=e.dt,super.update();return t}}ne=new WeakMap,ie=new WeakMap;const qn=`precision highp float;
146
+ uniform sampler2D velocity;
147
+ uniform float dt;
148
+ uniform vec2 px;
149
+ varying vec2 uv;
150
+
151
+ void main(){
152
+ float x0 = texture2D(velocity, uv-vec2(px.x, 0)).x;
153
+ float x1 = texture2D(velocity, uv+vec2(px.x, 0)).x;
154
+ float y0 = texture2D(velocity, uv-vec2(0, px.y)).y;
155
+ float y1 = texture2D(velocity, uv+vec2(0, px.y)).y;
156
+ float divergence = (x1-x0 + y1-y0) / 2.0;
157
+
158
+ gl_FragColor = vec4(divergence / dt);
159
+ }
160
+ `;class Xn extends fe{constructor(A){super({material:{vertexShader:de,fragmentShader:qn,uniforms:{boundarySpace:A.boundarySpace,velocity:A.src.texture,px:A.cellScale,dt:A.dt}},output:A.dst}),this.init()}update(A){this.uniforms.velocity.value=A.vel.texture,super.update()}}const Vn=`precision highp float;
161
+ uniform sampler2D pressure;
162
+ uniform sampler2D divergence;
163
+ uniform vec2 px;
164
+ varying vec2 uv;
165
+
166
+ void main(){
167
+ // poisson equation
168
+ float p0 = texture2D(pressure, uv+vec2(px.x * 2.0, 0)).r;
169
+ float p1 = texture2D(pressure, uv-vec2(px.x * 2.0, 0)).r;
170
+ float p2 = texture2D(pressure, uv+vec2(0, px.y * 2.0 )).r;
171
+ float p3 = texture2D(pressure, uv-vec2(0, px.y * 2.0 )).r;
172
+ float div = texture2D(divergence, uv).r;
173
+
174
+ float newP = (p0 + p1 + p2 + p3) / 4.0 - div;
175
+ gl_FragColor = vec4(newP);
176
+ }
177
+ `;var oe,re;class Wn extends fe{constructor(e){super({material:{vertexShader:de,fragmentShader:Vn,uniforms:{boundarySpace:e.boundarySpace,pressure:e.dst_.texture,divergence:e.src.texture,px:e.cellScale}},output:e.dst});d(this,oe,void 0);d(this,re,void 0);D(this,oe,e.dst_),D(this,re,e.dst),this.init()}update(e){let s=null,t=null;for(var n=0;n<e.iterations;n++)n%2==0?(s=o(this,oe),t=o(this,re)):(s=o(this,re),t=o(this,oe)),this.uniforms.pressure.value=s.texture,this.output=t,super.update();return t}}oe=new WeakMap,re=new WeakMap;const jn=`precision highp float;
178
+ uniform sampler2D pressure;
179
+ uniform sampler2D velocity;
180
+ uniform vec2 px;
181
+ uniform float dt;
182
+ varying vec2 uv;
183
+
184
+ void main(){
185
+ float step = 1.0;
186
+
187
+ float p0 = texture2D(pressure, uv+vec2(px.x * step, 0)).r;
188
+ float p1 = texture2D(pressure, uv-vec2(px.x * step, 0)).r;
189
+ float p2 = texture2D(pressure, uv+vec2(0, px.y * step)).r;
190
+ float p3 = texture2D(pressure, uv-vec2(0, px.y * step)).r;
191
+
192
+ vec2 v = texture2D(velocity, uv).xy;
193
+ vec2 gradP = vec2(p0 - p1, p2 - p3) * 0.5;
194
+ v = v - gradP * dt;
195
+ gl_FragColor = vec4(v, 0.0, 1.0);
196
+ }
197
+ `;class Zn extends fe{constructor(A){super({material:{vertexShader:de,fragmentShader:jn,uniforms:{boundarySpace:A.boundarySpace,pressure:A.srcP.texture,velocity:A.srcV.texture,px:A.cellScale,dt:A.dt}},output:A.dst}),this.init()}update(A){this.uniforms.velocity.value=A.vel.texture,this.uniforms.pressure.value=A.pressure.texture,super.update()}}var m,S,BA,P,aA,Be,Pe,ae,Ce,Ie,ge,Ye,St,ot,us,rt,ds;class zn{constructor(){d(this,Ye);d(this,ot);d(this,rt);d(this,m,{isViscous:new J.Store(!1,{passport:{name:"Fluid.Вязкость.Активна",manager:{type:"boolean"}}}),viscous:new J.Store(30,{passport:{name:"Fluid.Вязкость.Величина",manager:{type:"range",min:0,max:500}}}),iterationsViscous:new J.Store(16,{passport:{name:"Fluid.Вязкость.Количество итераций",manager:{type:"range",min:1,max:32,step:1}}}),pointerForce:new J.Store(20,{passport:{name:"Fluid.Курсор.Сила",manager:{type:"range",min:1,max:200,step:1}}}),pointerSize:new J.Store(100,{passport:{name:"Fluid.Курсор.Размер",manager:{type:"range",min:10,max:200,step:1}}}),dt:new J.Store(.014,{passport:{name:"Fluid.Скорость",manager:{type:"range",min:.001,max:.1,step:.001}}}),iterationsPoisson:new J.Store(16,{passport:{name:"Fluid.Poisson",manager:{type:"range",min:1,max:32,step:1}}}),resolution:new J.Store(.5,{passport:{name:"Fluid.Разрешение",manager:{type:"range",min:.1,max:1}}}),isBounce:new J.Store(!1,{passport:{name:"Fluid.Bounce",manager:{type:"boolean"}}}),BFECC:new J.Store(!0,{passport:{name:"Fluid.BFECC",manager:{type:"boolean"}}})});d(this,S,{vel0:null,vel1:null,velViscous0:null,velViscous1:null,div:null,pressure0:null,pressure1:null});d(this,BA,new B.Vector2);d(this,P,new B.Vector2);d(this,aA,new B.Vector2);d(this,Be,null);d(this,Pe,null);d(this,ae,null);d(this,Ce,null);d(this,Ie,null);d(this,ge,null);this.init()}get parameters(){return o(this,m)}get fbos(){return o(this,S)}resize(){tA(this,Ye,St).call(this);for(let A in this.fbos)o(this,S)[A].setSize(o(this,BA).x,o(this,BA).y)}update(){o(this,m).isBounce.current?o(this,aA).set(0,0):o(this,aA).copy(o(this,P)),o(this,Be).update({BFECC:o(this,m).BFECC.current,dt:o(this,m).dt.current,isBounce:o(this,m).isBounce.current}),o(this,Pe).update({pointerSize:o(this,m).pointerSize.current,pointerForce:o(this,m).pointerForce.current,cellScale:o(this,P)});let A=o(this,S).vel1;o(this,m).isViscous.current&&(A=o(this,ae).update({viscous:o(this,m).viscous.current,iterations:o(this,m).iterationsViscous.current,dt:o(this,m).dt.current})),o(this,Ce).update({vel:A});const e=o(this,Ie).update({iterations:o(this,m).iterationsPoisson.current});o(this,ge).update({vel:A,pressure:e})}dispose(){o(this,Be).dispose(),o(this,ae).dispose(),o(this,Ce).dispose(),o(this,Ie).dispose(),o(this,ge).dispose();for(const A in o(this,S))o(this,S)[A].dispose();for(const A in o(this,m))o(this,m)[A].close()}init(){tA(this,Ye,St).call(this),tA(this,ot,us).call(this),tA(this,rt,ds).call(this),setTimeout(()=>{o(this,m).isViscous.subscribe(()=>{}),o(this,m).viscous.subscribe(()=>{}),o(this,m).iterationsViscous.subscribe(()=>{}),o(this,m).pointerSize.subscribe(()=>{}),o(this,m).pointerForce.subscribe(()=>{}),o(this,m).dt.subscribe(()=>{}),o(this,m).resolution.subscribe(()=>{this.resize()}),o(this,m).iterationsPoisson.subscribe(()=>{}),o(this,m).isBounce.subscribe(()=>{}),o(this,m).BFECC.subscribe(()=>{})})}}m=new WeakMap,S=new WeakMap,BA=new WeakMap,P=new WeakMap,aA=new WeakMap,Be=new WeakMap,Pe=new WeakMap,ae=new WeakMap,Ce=new WeakMap,Ie=new WeakMap,ge=new WeakMap,Ye=new WeakSet,St=function(){const A=Math.round(o(this,m).resolution.current*w.width),e=Math.round(o(this,m).resolution.current*w.height),s=1/A,t=1/e;o(this,P).set(s,t),o(this,BA).set(A,e)},ot=new WeakSet,us=function(){const A=Ts.device.isApple?B.HalfFloatType:B.FloatType;for(let e in o(this,S))o(this,S)[e]=new B.WebGLRenderTarget(o(this,BA).x,o(this,BA).y,{type:A})},rt=new WeakSet,ds=function(){D(this,Be,new kn({cellScale:o(this,P),fboSize:o(this,BA),dt:o(this,m).dt.current,src:o(this,S).vel0,dst:o(this,S).vel1,BFECC:o(this,m).BFECC.current})),D(this,Pe,new vn({cellScale:o(this,P),pointerSize:o(this,m).pointerSize.current,dst:o(this,S).vel1})),D(this,ae,new Yn({cellScale:o(this,P),boundarySpace:o(this,aA),viscous:o(this,m).viscous.current,src:o(this,S).vel1,dst:o(this,S).velViscous1,dst_:o(this,S).velViscous0,dt:o(this,m).dt.current})),D(this,Ce,new Xn({cellScale:o(this,P),boundarySpace:o(this,aA),src:o(this,S).velViscous0,dst:o(this,S).div,dt:o(this,m).dt.current})),D(this,Ie,new Wn({cellScale:o(this,P),boundarySpace:o(this,aA),src:o(this,S).div,dst:o(this,S).pressure1,dst_:o(this,S).pressure0})),D(this,ge,new Zn({cellScale:o(this,P),boundarySpace:o(this,aA),srcP:o(this,S).pressure0,srcV:o(this,S).velViscous0,dst:o(this,S).vel0,dt:o(this,m).dt.current}))};var DA,NA,kA,pA,KA,FA,OA,ce,Ee,Qe,le,he;class fs extends B.Mesh{constructor(){super();d(this,DA,void 0);d(this,NA,void 0);d(this,kA,void 0);d(this,pA,void 0);d(this,KA,void 0);d(this,FA,void 0);d(this,OA,void 0);d(this,ce,void 0);d(this,Ee,void 0);d(this,Qe,void 0);d(this,le,void 0);d(this,he,void 0);this.colorTweenDuration=1e3,D(this,NA,new J.Store("#000000",{passport:{name:"Fluid.Цвета.Фон.Цвет",manager:{type:"color"}}})),D(this,kA,new J.Store(1,{passport:{name:"Fluid.Цвета.Фон.Порог",manager:{type:"range"}}})),D(this,pA,new J.Store(1,{passport:{name:"Fluid.Цвета.Фон.Прозрачность",manager:{type:"range"}}})),D(this,KA,new J.Store("#ffffff",{passport:{name:"Fluid.Цвета.Жидкость.Цвет",manager:{type:"color"}}})),D(this,FA,new J.Store(1,{passport:{name:"Fluid.Цвета.Жидкость.Прозрачность",manager:{type:"range"}}})),D(this,OA,new Ls.Tweened(0,{easing:Ms.easeInOutCubic,min:0,max:1,duration:this.colorTweenDuration})),D(this,ce,new B.Color),D(this,Ee,new B.Color),D(this,Qe,new B.Color),D(this,le,new B.Color),D(this,he,Ss.debounce(()=>{o(this,OA).reset(),o(this,OA).set(1)},0)),D(this,DA,new zn),RA.init(),this.geometry=new B.PlaneGeometry(2,2),this.material=new B.RawShaderMaterial({vertexShader:de,fragmentShader:bn,transparent:!0,uniforms:{velocity:{value:o(this,DA).fbos.vel0.texture},backgroundColor:{value:o(this,Ee)},backgroundOpacity:{value:o(this,pA).current},fluidColor:{value:o(this,ce)},fluidOpacity:{value:o(this,FA).current},backgroundMixThreshold:{value:0},opacity:{value:1},boundarySpace:{value:new B.Vector2(0,0)}}}),o(this,NA).subscribe(e=>{D(this,le,new B.Color(e.current)),o(this,he).call(this)}),o(this,KA).subscribe(e=>{D(this,Qe,new B.Color(e.current)),o(this,he).call(this)}),o(this,pA).subscribe(e=>{this.material.uniforms.backgroundOpacity.value=e.current}),o(this,FA).subscribe(e=>{this.material.uniforms.fluidOpacity.value=e.current}),o(this,kA).subscribe(e=>{this.material.uniforms.backgroundMixThreshold.value=e.current}),o(this,OA).subscribe(e=>{o(this,Ee).lerp(o(this,le),e.current),o(this,ce).lerp(o(this,Qe),e.current)})}get backgroundColor(){return o(this,NA)}get backgroundMixThreshold(){return o(this,kA)}get backgroundOpacity(){return o(this,pA)}get fluidColor(){return o(this,KA)}get fluidOpacity(){return o(this,FA)}resize(){o(this,DA).resize()}update(){RA.update(),o(this,DA).update()}dispose(){RA.dispose(),o(this,DA).dispose(),o(this,NA).close(),o(this,pA).close(),o(this,KA).close(),o(this,FA).close(),o(this,kA).close()}}DA=new WeakMap,NA=new WeakMap,kA=new WeakMap,pA=new WeakMap,KA=new WeakMap,FA=new WeakMap,OA=new WeakMap,ce=new WeakMap,Ee=new WeakMap,Qe=new WeakMap,le=new WeakMap,he=new WeakMap;var $n=Object.defineProperty,Ai=Object.getOwnPropertyDescriptor,ei=(C,A,e,s)=>{for(var t=s>1?void 0:s?Ai(A,e):A,n=C.length-1,i;n>=0;n--)(i=C[n])&&(t=(s?i(A,e,t):i(t))||t);return s&&t&&$n(A,e,t),t},Ds=(C,A,e)=>{if(!A.has(C))throw TypeError("Cannot "+e)},W=(C,A,e)=>(Ds(C,A,"read from private field"),e?e.call(C):A.get(C)),Ft=(C,A,e)=>{if(A.has(C))throw TypeError("Cannot add the same private member more than once");A instanceof WeakSet?A.add(C):A.set(C,e)},ti=(C,A,e,s)=>(Ds(C,A,"write to private field"),s?s.call(C,e):A.set(C,e),e),nA,tt,st;exports.En3FluidElement=class extends zt.CustomElement{constructor(){super(...arguments),Ft(this,nA,null),Ft(this,tt,()=>{W(this,nA).resize()}),Ft(this,st,()=>{w.width&&W(this,nA).update()})}get fluid(){return W(this,nA)}connectedCallback(){ti(this,nA,new fs),w.view.add(W(this,nA)),wA.windowResizer.subscribe(W(this,tt)),yA.ticker.subscribe(W(this,st))}disconnectedCallback(){w.view.remove(W(this,nA)),W(this,nA).dispose(),wA.windowResizer.unsubscribe(W(this,tt)),yA.ticker.unsubscribe(W(this,st))}};nA=new WeakMap;tt=new WeakMap;st=new WeakMap;exports.En3FluidElement=ei([zt.define("en3-fluid")],exports.En3FluidElement);function Ht(C,A,e){const s=A.x,t=A.y,n=e||C.image.width/C.image.height;let i=0,a=0,r=C.offset.x,I=C.offset.y,c=C.rotation,g=C.center.x,Q=C.center.y;s/t>n?(i=1,a=t/s*n):(a=1,i=s/t/n),C.matrix.setUvTransform(r,I,i,a,c,g,Q)}const Re=new B.Vector3;function _(C,A,e,s,t,n){const i=2*Math.PI*t/4,a=Math.max(n-2*t,0),r=Math.PI/4;Re.copy(A),Re[s]=0,Re.normalize();const I=.5*i/(i+a),c=1-Re.angleTo(C)/r;return Math.sign(Re[e])===1?c*I:a/(i+a)+I+I*(1-c)}class si extends B.BoxGeometry{constructor(A=1,e=1,s=1,t=2,n=.1){if(t=t*2+1,n=Math.min(A/2,e/2,s/2,n),super(1,1,1,t,t,t),t===1)return;const i=this.toNonIndexed();this.index=null,this.attributes.position=i.attributes.position,this.attributes.normal=i.attributes.normal,this.attributes.uv=i.attributes.uv;const a=new B.Vector3,r=new B.Vector3,I=new B.Vector3(A,e,s).divideScalar(2).subScalar(n),c=this.attributes.position.array,g=this.attributes.normal.array,Q=this.attributes.uv.array,l=c.length/6,u=new B.Vector3,h=.5/t;for(let E=0,f=0;E<c.length;E+=3,f+=2)switch(a.fromArray(c,E),r.copy(a),r.x-=Math.sign(r.x)*h,r.y-=Math.sign(r.y)*h,r.z-=Math.sign(r.z)*h,r.normalize(),c[E+0]=I.x*Math.sign(a.x)+r.x*n,c[E+1]=I.y*Math.sign(a.y)+r.y*n,c[E+2]=I.z*Math.sign(a.z)+r.z*n,g[E+0]=r.x,g[E+1]=r.y,g[E+2]=r.z,Math.floor(E/l)){case 0:u.set(1,0,0),Q[f+0]=_(u,r,"z","y",n,s),Q[f+1]=1-_(u,r,"y","z",n,e);break;case 1:u.set(-1,0,0),Q[f+0]=1-_(u,r,"z","y",n,s),Q[f+1]=1-_(u,r,"y","z",n,e);break;case 2:u.set(0,1,0),Q[f+0]=1-_(u,r,"x","z",n,A),Q[f+1]=_(u,r,"z","x",n,s);break;case 3:u.set(0,-1,0),Q[f+0]=1-_(u,r,"x","z",n,A),Q[f+1]=1-_(u,r,"z","x",n,s);break;case 4:u.set(0,0,1),Q[f+0]=1-_(u,r,"x","y",n,A),Q[f+1]=1-_(u,r,"y","x",n,e);break;case 5:u.set(0,0,-1),Q[f+0]=_(u,r,"x","y",n,A),Q[f+1]=1-_(u,r,"y","x",n,e);break}}}const Wt=new B.Vector3,ni=new B.Quaternion,jt=new B.Vector3;class ii extends B.Object3D{constructor(A=document.createElement("div")){super(),this.isCSS3DObject=!0,this.element=A,this.element.style.position="absolute",this.element.style.pointerEvents="auto",this.element.style.userSelect="none",this.element.setAttribute("draggable",!1),this.addEventListener("removed",function(){this.traverse(function(e){e.element instanceof Element&&e.element.parentNode!==null&&e.element.parentNode.removeChild(e.element)})})}copy(A,e){return super.copy(A,e),this.element=A.element.cloneNode(!0),this}}const j=new B.Matrix4,oi=new B.Matrix4;class ri{constructor(A={}){const e=this;let s,t,n,i;const a={camera:{style:""},objects:new WeakMap},r=A.element!==void 0?A.element:document.createElement("div");r.style.overflow="hidden",this.domElement=r;const I=document.createElement("div");I.style.transformOrigin="0 0",I.style.pointerEvents="none",r.appendChild(I);const c=document.createElement("div");c.style.transformStyle="preserve-3d",I.appendChild(c),this.getSize=function(){return{width:s,height:t}},this.render=function(h,E){const f=E.projectionMatrix.elements[5]*i;E.view&&E.view.enabled?(I.style.transform=`translate( ${-E.view.offsetX*(s/E.view.width)}px, ${-E.view.offsetY*(t/E.view.height)}px )`,I.style.transform+=`scale( ${E.view.fullWidth/E.view.width}, ${E.view.fullHeight/E.view.height} )`):I.style.transform="",h.matrixWorldAutoUpdate===!0&&h.updateMatrixWorld(),E.parent===null&&E.matrixWorldAutoUpdate===!0&&E.updateMatrixWorld();let p,F;E.isOrthographicCamera&&(p=-(E.right+E.left)/2,F=(E.top+E.bottom)/2);const G=E.view&&E.view.enabled?E.view.height/E.view.fullHeight:1,y=E.isOrthographicCamera?`scale( ${G} )scale(`+f+")translate("+g(p)+"px,"+g(F)+"px)"+Q(E.matrixWorldInverse):`scale( ${G} )translateZ(`+f+"px)"+Q(E.matrixWorldInverse),L=(E.isPerspectiveCamera?"perspective("+f+"px) ":"")+y+"translate("+n+"px,"+i+"px)";a.camera.style!==L&&(c.style.transform=L,a.camera.style=L),u(h,h,E)},this.setSize=function(h,E){s=h,t=E,n=s/2,i=t/2,r.style.width=h+"px",r.style.height=E+"px",I.style.width=h+"px",I.style.height=E+"px",c.style.width=h+"px",c.style.height=E+"px"};function g(h){return Math.abs(h)<1e-10?0:h}function Q(h){const E=h.elements;return"matrix3d("+g(E[0])+","+g(-E[1])+","+g(E[2])+","+g(E[3])+","+g(E[4])+","+g(-E[5])+","+g(E[6])+","+g(E[7])+","+g(E[8])+","+g(-E[9])+","+g(E[10])+","+g(E[11])+","+g(E[12])+","+g(-E[13])+","+g(E[14])+","+g(E[15])+")"}function l(h){const E=h.elements;return"translate(-50%,-50%)"+("matrix3d("+g(E[0])+","+g(E[1])+","+g(E[2])+","+g(E[3])+","+g(-E[4])+","+g(-E[5])+","+g(-E[6])+","+g(-E[7])+","+g(E[8])+","+g(E[9])+","+g(E[10])+","+g(E[11])+","+g(E[12])+","+g(E[13])+","+g(E[14])+","+g(E[15])+")")}function u(h,E,f,p){if(h.isCSS3DObject){const F=h.visible===!0&&h.layers.test(f.layers)===!0;if(h.element.style.display=F===!0?"":"none",F===!0){h.onBeforeRender(e,E,f);let G;h.isCSS3DSprite?(j.copy(f.matrixWorldInverse),j.transpose(),h.rotation2D!==0&&j.multiply(oi.makeRotationZ(h.rotation2D)),h.matrixWorld.decompose(Wt,ni,jt),j.setPosition(Wt),j.scale(jt),j.elements[3]=0,j.elements[7]=0,j.elements[11]=0,j.elements[15]=1,G=l(j)):G=l(h.matrixWorld);const y=h.element,M=a.objects.get(h);if(M===void 0||M.style!==G){y.style.transform=G;const L={style:G};a.objects.set(h,L)}y.parentNode!==c&&c.appendChild(y),h.onAfterRender(e,E,f)}}for(let F=0,G=h.children.length;F<G;F++)u(h.children[F],E,f)}}}var CA,ue,_A;class Jt extends B.Mesh{constructor(e){super(new si(e.width,e.height,1,e.segments,e.round||0),e.material);d(this,CA,void 0);d(this,ue,void 0);d(this,_A,()=>{o(this,CA).data.current&&o(this,ue)==="cover"&&this.onCoverResize(o(this,CA).data.current)});D(this,CA,new xt(eA({consumer:this},e))),D(this,ue,e.fit),this.addEventListener("added",()=>{wA.windowResizer.subscribe(o(this,_A))}),this.addEventListener("removed",()=>{wA.windowResizer.unsubscribe(o(this,_A))}),o(this,CA).processData=s=>w.cacheAssets?s.clone():s,o(this,CA).data.subscribe(s=>{!s.current&&s.previous?s.previous.dispose():s.current&&this.material&&(o(this,ue)&&(s.current.matrixAutoUpdate=!1),s.current.colorSpace=B.SRGBColorSpace,s.current.center.set(.5,.5),this.material.map=s.current,this.material.needsUpdate=!0,o(this,_A).call(this))})}get sourceManager(){return o(this,CA)}updateTexture(){o(this,_A).call(this)}onCoverResize(e){Ht(e,{x:this.scale.x,y:this.scale.y})}}CA=new WeakMap,ue=new WeakMap,_A=new WeakMap;class Bi extends Jt{constructor(A){super(Fe(eA({},A),{loader:MA}))}}class ai{load(...A){const e=A[0],s=A[1],t=A[3],n=document.createElement("video");n.src=e,n.onloadeddata=()=>{s(new B.VideoTexture(n)),n.onerror=null,n.onloadeddata=null},n.onerror=()=>{t==null||t(e),n.onerror=null,n.onloadeddata=null}}}var qe,Xe,Ve;class Ci extends Jt{constructor(e){super(Fe(eA({},e),{loader:new ai}));d(this,qe,void 0);d(this,Xe,void 0);d(this,Ve,void 0);D(this,qe,e.autoplay||!1),D(this,Xe,e.muted||!1),D(this,Ve,e.loop||!1),this.sourceManager.data.subscribe(s=>{if(s.current){const t=s.current.image;o(this,Xe)&&(t.muted=!0),o(this,Ve)&&(t.loop=!0),o(this,qe)&&t.play()}})}onCoverResize(e){const s=e.image;Ht(e,{x:this.scale.x,y:this.scale.y},s.videoWidth/s.videoHeight)}}qe=new WeakMap,Xe=new WeakMap,Ve=new WeakMap;function Ii(C,A){C.traverse(e=>{e instanceof B.Mesh&&A(e)})}function gi(C,A){C.traverse(e=>{e instanceof B.Mesh&&e.material&&(Array.isArray(e.material)?e.material:[e.material]).forEach(A)})}const Gt=new B.Vector3,ci=new B.Vector3;function Ei(C,A="default"){const e=w.getView(A),{width:s,height:t}=w,n=s/t;C instanceof B.Vector3?Gt.copy(C):Gt.set(...C);const i=e.camera.getWorldPosition(ci).distanceTo(Gt);if(e.camera instanceof B.OrthographicCamera)return{width:s/e.camera.zoom,height:t/e.camera.zoom,factor:1,distance:i,aspect:n};{const a=e.camera.fov*Math.PI/180,r=2*Math.tan(a/2)*i,I=r*(s/t);return{width:I,height:r,factor:s/I,distance:i,aspect:n}}}var Z,Bt,ps,We,je;const O=class O extends ii{static destroy(){wA.windowResizer.unsubscribe(o(this,je)),yA.ticker.unsubscribe(o(this,We)),D(this,Z,null)}constructor(A){var e;super(A.element),o(O,Z)||tA(e=O,Bt,ps).call(e)}};Z=new WeakMap,Bt=new WeakSet,ps=function(){D(O,Z,new ri),o(O,Z).domElement.style.cssText=`
11
198
  position: fixed;
12
199
  left: 0;
13
200
  top: 0;
@@ -16,13 +203,13 @@
16
203
  z-index: 1;
17
204
  pointer-events: none;
18
205
  overflow: hidden;
19
- `,w.containerElement.prepend(E(k,Y).domElement),yA.windowResizer.subscribe(E(this,ee),NA.RESIZE_ORDER.EN3+1),LA.ticker.subscribe(E(this,Ae),{order:NA.TICK_ORDER.EN3+1})},Ae=new WeakMap,ee=new WeakMap,G(k,Ce),G(k,Y,null),G(k,Ae,()=>{E(k,Y).render(w.view.scene,w.view.camera)}),G(k,ee,()=>{E(k,Y).setSize(w.width,w.height)});let ye=k;var BA,aA,te,Le;class xs{constructor(A){G(this,te);G(this,BA,void 0);G(this,aA,void 0);R(this,BA,A.material),R(this,aA,A.uniforms||{}),E(this,BA).userData.uniforms=E(this,aA);let e;const s=()=>{e==null||e()};E(this,BA).addEventListener("dispose",s),E(this,BA).onBeforeCompile=t=>{var n;e==null||e();for(const i in E(this,aA))t.uniforms[i]=E(this,aA)[i];A.vertextDeclarations&&(t.vertexShader=`
206
+ `,w.containerElement.prepend(o(O,Z).domElement),wA.windowResizer.subscribe(o(this,je),we.RESIZE_ORDER.EN3+1),yA.ticker.subscribe(o(this,We),{order:we.TICK_ORDER.EN3+1})},We=new WeakMap,je=new WeakMap,d(O,Bt),d(O,Z,null),d(O,We,()=>{o(O,Z).render(w.view.scene,w.view.camera)}),d(O,je,()=>{o(O,Z).setSize(w.width,w.height)});let Lt=O;var GA,mA,Ze,Tt;class Qi{constructor(A){d(this,Ze);d(this,GA,void 0);d(this,mA,void 0);D(this,GA,A.material),D(this,mA,A.uniforms||{}),o(this,GA).userData.uniforms=o(this,mA);let e;const s=()=>{e==null||e()};o(this,GA).addEventListener("dispose",s),o(this,GA).onBeforeCompile=t=>{var n;e==null||e();for(const i in o(this,mA))t.uniforms[i]=o(this,mA)[i];A.vertextDeclarations&&(t.vertexShader=`
20
207
  ${A.vertextDeclarations}
21
208
  ${t.vertexShader}
22
209
  `),A.fragmentDeclarations&&(t.fragmentShader=`
23
210
  ${A.fragmentDeclarations}
24
211
  ${t.fragmentShader}
25
- `),re(this,te,Le).call(this,t,"vertex",A),re(this,te,Le).call(this,t,"fragment",A),e=(n=A.onReady)==null?void 0:n.call(A,this),A.log&&(console.log("VERTEX SHADER: ",t.vertexShader),console.log("FRAGMENT SHADER: ",t.fragmentShader))}}get material(){return E(this,BA)}get uniforms(){return E(this,aA)}}BA=new WeakMap,aA=new WeakMap,te=new WeakSet,Le=function(A,e,s){const t=e==="vertex"?"vertexChunk":"fragmentChunk",n=e==="vertex"?"vertexShader":"fragmentShader";s[t]&&(s[t].replace?A[n]=A[n].replace(`#include <${s[t].replace}>`,s[t].content):s[t].update&&(A[n]=A[n].replace(`#include <${s[t].update}>`,`
212
+ `),tA(this,Ze,Tt).call(this,t,"vertex",A),tA(this,Ze,Tt).call(this,t,"fragment",A),e=(n=A.onReady)==null?void 0:n.call(A,this),A.log&&(console.log("VERTEX SHADER: ",t.vertexShader),console.log("FRAGMENT SHADER: ",t.fragmentShader))}}get material(){return o(this,GA)}get uniforms(){return o(this,mA)}}GA=new WeakMap,mA=new WeakMap,Ze=new WeakSet,Tt=function(A,e,s){const t=e==="vertex"?"vertexChunk":"fragmentChunk",n=e==="vertex"?"vertexShader":"fragmentShader";s[t]&&(s[t].replace?A[n]=A[n].replace(`#include <${s[t].replace}>`,s[t].content):s[t].update&&(A[n]=A[n].replace(`#include <${s[t].update}>`,`
26
213
  #include <${s[t].update}>
27
214
  ${s[t].content}
28
- `)))};exports.En3Clip=Ds;exports.En3ClipHelpers=Fs;exports.En3GLTF=Gs;exports.En3HTML=ye;exports.En3Image=Ss;exports.En3ImageLike=Je;exports.En3ModifiedMaterial=xs;exports.En3SourceManager=Te;exports.En3Video=Ls;exports.En3View=me;exports.coverTexture=He;exports.dispose=kA;exports.en3=w;exports.en3Cache=O;exports.en3GLTFLoader=ct;exports.en3TextureLoader=CA;exports.getCurrentViewport=Us;exports.traverseMaterials=Hs;exports.traverseMeshes=Ts;
215
+ `)))};exports.En3Clip=Hn;exports.En3ClipHelpers=Jn;exports.En3Fluid=fs;exports.En3GLTF=Un;exports.En3HTML=Lt;exports.En3Image=Bi;exports.En3ImageLike=Jt;exports.En3ModifiedMaterial=Qi;exports.En3SourceManager=xt;exports.En3Video=Ci;exports.En3View=Rt;exports.coverTexture=Ht;exports.dispose=vA;exports.en3=w;exports.en3Cache=Y;exports.en3FluidPointer=RA;exports.en3GLTFLoader=ls;exports.en3TextureLoader=MA;exports.getCurrentViewport=Ei;exports.traverseMaterials=gi;exports.traverseMeshes=Ii;