aptechka 0.4.30 → 0.4.31

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,13 @@
1
- "use strict";var wt=Object.defineProperty,yt=Object.defineProperties;var St=Object.getOwnPropertyDescriptors;var Ye=Object.getOwnPropertySymbols;var Lt=Object.prototype.hasOwnProperty,Ht=Object.prototype.propertyIsEnumerable;var qe=(I,A,e)=>A in I?wt(I,A,{enumerable:!0,configurable:!0,writable:!0,value:e}):I[A]=e,$=(I,A)=>{for(var e in A||(A={}))Lt.call(A,e)&&qe(I,e,A[e]);if(Ye)for(var e of Ye(A))Ht.call(A,e)&&qe(I,e,A[e]);return I},ce=(I,A)=>yt(I,St(A));var ue=(I,A,e)=>{if(!A.has(I))throw TypeError("Cannot "+e)};var E=(I,A,e)=>(ue(I,A,"read from private field"),e?e.call(I):A.get(I)),D=(I,A,e)=>{if(A.has(I))throw TypeError("Cannot add the same private member more than once");A instanceof WeakSet?A.add(I):A.set(I,e)},p=(I,A,e,s)=>(ue(I,A,"write to private field"),s?s.call(I,e):A.set(I,e),e);var IA=(I,A,e)=>(ue(I,A,"access private method"),e);var UA=(I,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(I,A)).next())});Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const Xe=require("../ladder/index.cjs"),ot=require("../layout-box/index.cjs"),bA=require("../order/index.cjs"),LA=require("../window-resizer/index.cjs"),HA=require("../ticker/index.cjs"),B=require("three"),ve=require("../intersector/index.cjs"),Tt=require("../dom-JBOkFLTh.cjs");require("../path-data-polyfill-CXsOR7Oc.cjs");const fe=require("../loading/index.cjs"),Jt=require("../SourceManager-Bl_uduSS.cjs"),Ve=require("../Store-BQGNOHlY.cjs");function be(I){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()}};I.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 dA,KA,OA,tA,_A;class Ut{constructor(A){D(this,dA,void 0);D(this,KA,void 0);D(this,OA,void 0);D(this,tA,void 0);D(this,_A,void 0);p(this,dA,A.targetName||void 0),p(this,KA,A.eventDispatcher||A.object3D),p(this,OA,A.propagation||!1),p(this,tA,A.object3D),p(this,_A,E(this,dA)?()=>E(this,tA).getObjectByName(E(this,dA))||E(this,tA):()=>E(this,tA))}get object3D(){return E(this,tA)}get eventDispatcher(){return E(this,KA)}get propagation(){return E(this,OA)}get target(){return E(this,_A).call(this)}dispatch(A,e){this.eventDispatcher.dispatchEvent($({originalEvent:e,type:A},this.intersection))}}dA=new WeakMap,KA=new WeakMap,OA=new WeakMap,tA=new WeakMap,_A=new WeakMap;var sA,T,uA,PA,YA,qA,XA;class rt{constructor(){D(this,sA,[]);D(this,T,[]);D(this,uA,new B.Vector2);D(this,PA,new B.Raycaster);D(this,YA,A=>{for(let e=0;e<E(this,T).length;e++)E(this,T)[e].dispatch("en3PointerDown",A)});D(this,qA,A=>{for(let e=0;e<E(this,T).length;e++)E(this,T)[e].dispatch("en3PointerUp",A)});D(this,XA,A=>{E(this,uA).x=A.clientX/w.width*2-1,E(this,uA).y=-(A.clientY/w.height)*2+1,w.camera&&E(this,PA).setFromCamera(E(this,uA),w.camera);const e=[];for(const o of E(this,sA)){const a=E(this,PA).intersectObject(o.target);a.length&&(o.intersection=a[0],e.push(o))}let s=!1;const t=E(this,T).filter(o=>!e.find(a=>a.object3D.uuid===o.object3D.uuid)),i=e.sort((o,a)=>a.object3D.position.z-o.object3D.position.z).filter((o,a)=>s?(t.push(o),!1):(s=!o.propagation,!0)),r=i.filter(o=>!E(this,T).find(a=>a.object3D.uuid===o.object3D.uuid));for(let o=0;o<t.length;o++)t[o].dispatch("en3PointerLeave",A);for(let o=0;o<r.length;o++)r[o].dispatch("en3PointerEnter",A);p(this,T,i);for(let o=0;o<E(this,T).length;o++)E(this,T)[o].dispatch("en3PointerMove",A)});w.containerElement.addEventListener("pointerdown",E(this,YA)),w.containerElement.addEventListener("pointerup",E(this,qA)),w.containerElement.addEventListener("pointermove",E(this,XA))}destroy(){w.containerElement.removeEventListener("pointerdown",E(this,YA)),w.containerElement.removeEventListener("pointerup",E(this,qA)),w.containerElement.removeEventListener("pointermove",E(this,XA))}add(A,e){if(E(this,sA).find(t=>t.object3D.uuid===A.uuid))return;const s=new Ut($({object3D:A},e));E(this,sA).push(s)}remove(A){p(this,sA,E(this,sA).filter(e=>e.object3D.uuid!==A.uuid)),p(this,T,E(this,T).filter(e=>e.object3D.uuid!==A.uuid))}}sA=new WeakMap,T=new WeakMap,uA=new WeakMap,PA=new WeakMap,YA=new WeakMap,qA=new WeakMap,XA=new WeakMap;var he,nA,N,P,fA,DA,iA,b,FA,GA,j,Y,pA,vA,VA,EA,le,Bt,WA,Te,jA,ZA;class Nt{constructor(){D(this,le);D(this,WA);D(this,he,`https://unpkg.com/three@0.${B.REVISION}.x`);D(this,nA,null);D(this,N,null);D(this,P,null);D(this,fA,null);D(this,DA,null);D(this,iA,[]);D(this,b,new Xe.Ladder({x:0,y:0,z:0}));D(this,FA,new Xe.Ladder({x:0,y:0,z:0}));D(this,GA,"auto");D(this,j,0);D(this,Y,0);D(this,pA,0);D(this,vA,2);D(this,VA,!0);D(this,EA,!1);D(this,jA,()=>{var A;p(this,j,E(this,nA).clientWidth),p(this,Y,E(this,nA).clientHeight),p(this,pA,Math.min(E(this,vA),devicePixelRatio||1)),E(this,N).setPixelRatio(E(this,pA)),E(this,N).setSize(E(this,j),E(this,Y)),IA(this,WA,Te).call(this),(A=this.onResize)==null||A.call(this)});D(this,ZA,()=>{IA(this,le,Bt).call(this),this.render(E(this,fA),E(this,P))})}get CDNVersion(){return E(this,he)}get containerElement(){return E(this,nA)}get webglRenderer(){return E(this,N)}get camera(){return E(this,P)}get scene(){return E(this,fA)}get raycaster(){return E(this,DA)}get attachedObjects(){return E(this,iA)}get cameraPosition(){return E(this,b)}get cameraRotation(){return E(this,FA)}get width(){return E(this,j)}get height(){return E(this,Y)}get pixelRatio(){return E(this,pA)}get cameraDistance(){return E(this,b).getStepValue("_initial").z}set cameraDistance(A){E(this,b).setStep("_initial","+",{z:A}),E(this,b).calculate(),IA(this,WA,Te).call(this)}attachToHTMLElement(A,e,s){const t=new ot.LayoutBox(A,ce($({},s),{containerElement:this.containerElement,cartesian:!0}));return t.bindObject(e),e.userData.box=t,E(this,iA).push(e),e}detachFromHTMLElement(A){p(this,iA,E(this,iA).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)}setup(A){if(E(this,EA)){console.warn("[en3.setup]: You are trying to setup en3 again.");return}p(this,nA,(A==null?void 0:A.containerElement)||document.body),p(this,P,(A==null?void 0:A.cameraType)==="orthographic"?new B.OrthographicCamera:new B.PerspectiveCamera),E(this,b).bind(E(this,P).position),E(this,FA).bind(E(this,P).rotation),E(this,b).setStep("_initial","+",{z:(A==null?void 0:A.cameraDistance)||1e3}),E(this,b).calculate(),E(this,P).near=(A==null?void 0:A.cameraNear)||1,E(this,P).far=(A==null?void 0:A.cameraFar)||11e3,p(this,GA,(A==null?void 0:A.cameraFov)||"auto"),p(this,fA,new B.Scene),p(this,vA,(A==null?void 0:A.maxPixelRatio)||2),p(this,VA,(A==null?void 0:A.cameraAutoUpdate)!==!1),p(this,N,new B.WebGLRenderer(A==null?void 0:A.webGLRendererParameters)),E(this,N).domElement.style.cssText=`
1
+ "use strict";var yt=Object.defineProperty,St=Object.defineProperties;var Lt=Object.getOwnPropertyDescriptors;var Ye=Object.getOwnPropertySymbols;var Ht=Object.prototype.hasOwnProperty,Tt=Object.prototype.propertyIsEnumerable;var qe=(I,A,e)=>A in I?yt(I,A,{enumerable:!0,configurable:!0,writable:!0,value:e}):I[A]=e,$=(I,A)=>{for(var e in A||(A={}))Ht.call(A,e)&&qe(I,e,A[e]);if(Ye)for(var e of Ye(A))Tt.call(A,e)&&qe(I,e,A[e]);return I},ce=(I,A)=>St(I,Lt(A));var ue=(I,A,e)=>{if(!A.has(I))throw TypeError("Cannot "+e)};var E=(I,A,e)=>(ue(I,A,"read from private field"),e?e.call(I):A.get(I)),D=(I,A,e)=>{if(A.has(I))throw TypeError("Cannot add the same private member more than once");A instanceof WeakSet?A.add(I):A.set(I,e)},p=(I,A,e,s)=>(ue(I,A,"write to private field"),s?s.call(I,e):A.set(I,e),e);var IA=(I,A,e)=>(ue(I,A,"access private method"),e);var UA=(I,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(I,A)).next())});Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const Xe=require("../ladder/index.cjs"),ot=require("../layout-box/index.cjs"),bA=require("../order/index.cjs"),LA=require("../window-resizer/index.cjs"),HA=require("../ticker/index.cjs"),B=require("three"),ve=require("../intersector/index.cjs"),Jt=require("../dom-JBOkFLTh.cjs");require("../path-data-polyfill-CXsOR7Oc.cjs");const fe=require("../loading/index.cjs"),Ut=require("../SourceManager-Bl_uduSS.cjs"),Ve=require("../Store-BQGNOHlY.cjs");function be(I){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()}};I.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 dA,KA,OA,tA,_A;class xt{constructor(A){D(this,dA,void 0);D(this,KA,void 0);D(this,OA,void 0);D(this,tA,void 0);D(this,_A,void 0);p(this,dA,A.targetName||void 0),p(this,KA,A.eventDispatcher||A.object3D),p(this,OA,A.propagation||!1),p(this,tA,A.object3D),p(this,_A,E(this,dA)?()=>E(this,tA).getObjectByName(E(this,dA))||E(this,tA):()=>E(this,tA))}get object3D(){return E(this,tA)}get eventDispatcher(){return E(this,KA)}get propagation(){return E(this,OA)}get target(){return E(this,_A).call(this)}dispatch(A,e){this.eventDispatcher.dispatchEvent($({originalEvent:e,type:A},this.intersection))}}dA=new WeakMap,KA=new WeakMap,OA=new WeakMap,tA=new WeakMap,_A=new WeakMap;var sA,T,uA,PA,YA,qA,XA;class rt{constructor(){D(this,sA,[]);D(this,T,[]);D(this,uA,new B.Vector2);D(this,PA,new B.Raycaster);D(this,YA,A=>{for(let e=0;e<E(this,T).length;e++)E(this,T)[e].dispatch("en3PointerDown",A)});D(this,qA,A=>{for(let e=0;e<E(this,T).length;e++)E(this,T)[e].dispatch("en3PointerUp",A)});D(this,XA,A=>{E(this,uA).x=A.clientX/w.width*2-1,E(this,uA).y=-(A.clientY/w.height)*2+1,w.camera&&E(this,PA).setFromCamera(E(this,uA),w.camera);const e=[];for(const o of E(this,sA)){const a=E(this,PA).intersectObject(o.target);a.length&&(o.intersection=a[0],e.push(o))}let s=!1;const t=E(this,T).filter(o=>!e.find(a=>a.object3D.uuid===o.object3D.uuid)),i=e.sort((o,a)=>a.object3D.position.z-o.object3D.position.z).filter((o,a)=>s?(t.push(o),!1):(s=!o.propagation,!0)),r=i.filter(o=>!E(this,T).find(a=>a.object3D.uuid===o.object3D.uuid));for(let o=0;o<t.length;o++)t[o].dispatch("en3PointerLeave",A);for(let o=0;o<r.length;o++)r[o].dispatch("en3PointerEnter",A);p(this,T,i);for(let o=0;o<E(this,T).length;o++)E(this,T)[o].dispatch("en3PointerMove",A)});w.containerElement.addEventListener("pointerdown",E(this,YA)),w.containerElement.addEventListener("pointerup",E(this,qA)),w.containerElement.addEventListener("pointermove",E(this,XA))}destroy(){w.containerElement.removeEventListener("pointerdown",E(this,YA)),w.containerElement.removeEventListener("pointerup",E(this,qA)),w.containerElement.removeEventListener("pointermove",E(this,XA))}add(A,e){if(E(this,sA).find(t=>t.object3D.uuid===A.uuid))return;const s=new xt($({object3D:A},e));E(this,sA).push(s)}remove(A){p(this,sA,E(this,sA).filter(e=>e.object3D.uuid!==A.uuid)),p(this,T,E(this,T).filter(e=>e.object3D.uuid!==A.uuid))}}sA=new WeakMap,T=new WeakMap,uA=new WeakMap,PA=new WeakMap,YA=new WeakMap,qA=new WeakMap,XA=new WeakMap;var he,nA,x,P,fA,DA,iA,b,FA,GA,j,Y,pA,vA,VA,EA,le,Bt,WA,Te,jA,ZA;class Nt{constructor(){D(this,le);D(this,WA);D(this,he,`https://unpkg.com/three@0.${B.REVISION}.x`);D(this,nA,null);D(this,x,null);D(this,P,null);D(this,fA,null);D(this,DA,null);D(this,iA,[]);D(this,b,new Xe.Ladder({x:0,y:0,z:0}));D(this,FA,new Xe.Ladder({x:0,y:0,z:0}));D(this,GA,"auto");D(this,j,0);D(this,Y,0);D(this,pA,0);D(this,vA,2);D(this,VA,!0);D(this,EA,!1);D(this,jA,()=>{var A;p(this,j,E(this,nA).clientWidth),p(this,Y,E(this,nA).clientHeight),p(this,pA,Math.min(E(this,vA),devicePixelRatio||1)),E(this,x).setPixelRatio(E(this,pA)),E(this,x).setSize(E(this,j),E(this,Y)),IA(this,WA,Te).call(this),(A=this.onResize)==null||A.call(this)});D(this,ZA,()=>{IA(this,le,Bt).call(this),this.render(E(this,fA),E(this,P))})}get CDNVersion(){return E(this,he)}get containerElement(){return E(this,nA)}get webglRenderer(){return E(this,x)}get camera(){return E(this,P)}get scene(){return E(this,fA)}get raycaster(){return E(this,DA)}get attachedObjects(){return E(this,iA)}get cameraPosition(){return E(this,b)}get cameraRotation(){return E(this,FA)}get width(){return E(this,j)}get height(){return E(this,Y)}get pixelRatio(){return E(this,pA)}get cameraDistance(){return E(this,b).getStepValue("_initial").z}set cameraDistance(A){E(this,b).setStep("_initial","+",{z:A}),E(this,b).calculate(),IA(this,WA,Te).call(this)}attachToHTMLElement(A,e,s){const t=new ot.LayoutBox(A,ce($({},s),{containerElement:this.containerElement,cartesian:!0}));return t.bindObject(e),e.userData.box=t,E(this,iA).push(e),e}detachFromHTMLElement(A){p(this,iA,E(this,iA).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)}setup(A){if(E(this,EA)){console.warn("[en3.setup]: You are trying to setup en3 again.");return}p(this,nA,(A==null?void 0:A.containerElement)||document.body),p(this,P,(A==null?void 0:A.cameraType)==="orthographic"?new B.OrthographicCamera:new B.PerspectiveCamera),E(this,b).bind(E(this,P).position),E(this,FA).bind(E(this,P).rotation),E(this,b).setStep("_initial","+",{z:(A==null?void 0:A.cameraDistance)||1e3}),E(this,b).calculate(),E(this,P).near=(A==null?void 0:A.cameraNear)||1,E(this,P).far=(A==null?void 0:A.cameraFar)||11e3,p(this,GA,(A==null?void 0:A.cameraFov)||"auto"),p(this,fA,new B.Scene),p(this,vA,(A==null?void 0:A.maxPixelRatio)||2),p(this,VA,(A==null?void 0:A.cameraAutoUpdate)!==!1),p(this,x,new B.WebGLRenderer(A==null?void 0:A.webGLRendererParameters)),E(this,x).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,nA).prepend(E(this,N).domElement),p(this,DA,new rt),p(this,EA,!0),LA.windowResizer.subscribe(E(this,jA),bA.RESIZE_ORDER.EN3),HA.ticker.subscribe(E(this,ZA),{order:bA.TICK_ORDER.EN3})}destroy(){if(!E(this,EA)){console.warn("[en3.setup]: You are trying to destory en3 but it has not been initialized.");return}E(this,iA).forEach(A=>{A.userData.box.destroy()}),LA.windowResizer.unsubscribe(E(this,jA)),HA.ticker.unsubscribe(E(this,ZA)),this.scene.clear(),be(this.scene),E(this,N).dispose(),E(this,N).domElement.remove(),p(this,N,null),E(this,DA).destroy(),p(this,EA,!1)}render(A,e){E(this,N).render(A,e)}}he=new WeakMap,nA=new WeakMap,N=new WeakMap,P=new WeakMap,fA=new WeakMap,DA=new WeakMap,iA=new WeakMap,b=new WeakMap,FA=new WeakMap,GA=new WeakMap,j=new WeakMap,Y=new WeakMap,pA=new WeakMap,vA=new WeakMap,VA=new WeakMap,EA=new WeakMap,le=new WeakSet,Bt=function(){E(this,VA)&&(E(this,b).calculate(),E(this,FA).calculate())},WA=new WeakSet,Te=function(){this.camera instanceof B.PerspectiveCamera?(this.camera.aspect=E(this,j)/E(this,Y),this.camera.fov=E(this,GA)==="auto"?2*Math.atan(E(this,Y)/2/E(this,b).getStepValue("_initial").z)*(180/Math.PI):E(this,GA)):this.camera instanceof B.OrthographicCamera&&(this.camera.left=E(this,j)/-2,this.camera.right=E(this,j)/2,this.camera.top=E(this,Y)/2,this.camera.bottom=E(this,Y)/-2),this.camera.updateProjectionMatrix()},jA=new WeakMap,ZA=new WeakMap;const w=new Nt;class xt{add(A,e){const s=n=>{n.isIntersecting&&(A.sourceManager.lazyLoad(),ve.intersector.unsubscribe(s))},t=Tt.getElement(e);if(t)return ve.intersector.subscribe(t,s)}}const kt=new xt;function We(I,A){if(A===B.TrianglesDrawMode)return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."),I;if(A===B.TriangleFanDrawMode||A===B.TriangleStripDrawMode){let e=I.getIndex();if(e===null){const i=[],r=I.getAttribute("position");if(r!==void 0){for(let o=0;o<r.count;o++)i.push(o);I.setIndex(i),e=I.getIndex()}else return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),I}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=I.clone();return n.setIndex(t),n.clearGroups(),n}else return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:",A),I}class bt 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 $t(e)}),this.register(function(e){return new As(e)}),this.register(function(e){return new es(e)}),this.register(function(e){return new Xt(e)}),this.register(function(e){return new vt(e)}),this.register(function(e){return new Vt(e)}),this.register(function(e){return new Wt(e)}),this.register(function(e){return new Pt(e)}),this.register(function(e){return new jt(e)}),this.register(function(e){return new qt(e)}),this.register(function(e){return new zt(e)}),this.register(function(e){return new Zt(e)}),this.register(function(e){return new Ot(e)}),this.register(function(e){return new ts(e)}),this.register(function(e){return new ss(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))===at){try{i[R.KHR_BINARY_GLTF]=new ns(A)}catch(C){t&&t(C);return}n=JSON.parse(i[R.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 ls(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 C=this.pluginCallbacks[g](a);C.name||console.error("THREE.GLTFLoader: Invalid plugin found: missing name"),r[C.name]=C,i[C.name]=!0}if(n.extensionsUsed)for(let g=0;g<n.extensionsUsed.length;++g){const C=n.extensionsUsed[g],Q=n.extensionsRequired||[];switch(C){case R.KHR_MATERIALS_UNLIT:i[C]=new _t;break;case R.KHR_DRACO_MESH_COMPRESSION:i[C]=new is(n,this.dracoLoader);break;case R.KHR_TEXTURE_TRANSFORM:i[C]=new os;break;case R.KHR_MESH_QUANTIZATION:i[C]=new rs;break;default:Q.indexOf(C)>=0&&r[C]===void 0&&console.warn('THREE.GLTFLoader: Unknown extension "'+C+'".')}}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 Kt(){let I={};return{get:function(A){return I[A]},add:function(A,e){I[A]=e},remove:function(A){delete I[A]},removeAll:function(){I={}}}}const 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 Ot{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,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 C=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=C;break;case"spot":a=new B.SpotLight(g),a.distance=C,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,eA(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 _t{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 Pt{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 Yt{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 r=i.clearcoatNormalTexture.scale;e.clearcoatNormalScale=new B.Vector2(r,r)}return Promise.all(n)}}class qt{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 Xt{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 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 vt{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 Vt{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 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 Wt{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 jt{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 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 Zt{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 zt{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 $t{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 As{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],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 es{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],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 ts{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(r){const o=t.byteOffset||0,a=t.byteLength||0,g=t.count,C=t.byteStride,Q=new Uint8Array(r,o,a);return i.decodeGltfBufferAsync?i.decodeGltfBufferAsync(g,C,Q,t.mode,t.filter).then(function(h){return h.buffer}):i.ready.then(function(){const h=new ArrayBuffer(g*C);return i.decodeGltfBuffer(new Uint8Array(h),g,C,Q,t.mode,t.filter),h})})}else return null}}class ss{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 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(),C=g.isGroup?g.children:[g],Q=a[0].count,h=[];for(const d of C){const l=new B.Matrix4,c=new B.Vector3,u=new B.Quaternion,f=new B.Vector3(1,1,1),F=new B.InstancedMesh(d.geometry,d.material,Q);for(let G=0;G<Q;G++)o.TRANSLATION&&c.fromBufferAttribute(o.TRANSLATION,G),o.ROTATION&&u.fromBufferAttribute(o.ROTATION,G),o.SCALE&&f.fromBufferAttribute(o.SCALE,G),F.setMatrixAt(G,l.compose(c,u,f));for(const G in o)if(G==="_COLOR_0"){const m=o[G];F.instanceColor=new B.InstancedBufferAttribute(m.array,m.itemSize,m.normalized)}else G!=="TRANSLATION"&&G!=="ROTATION"&&G!=="SCALE"&&d.geometry.setAttribute(G,o[G]);B.Object3D.prototype.copy.call(F,d),this.parser.assignFinalMaterial(F),h.push(F)}return g.isGroup?(g.clear(),g.add(...h),g):h[0]}))}}const at="glTF",NA=12,je={JSON:1313821514,BIN:5130562};class ns{constructor(A){this.name=R.KHR_BINARY_GLTF,this.content=null,this.body=null;const e=new DataView(A,0,NA),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!==at)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-NA,n=new DataView(A,NA);let i=0;for(;i<t;){const r=n.getUint32(i,!0);i+=4;const o=n.getUint32(i,!0);if(i+=4,o===je.JSON){const a=new Uint8Array(A,NA+i,r);this.content=s.decode(a)}else if(o===je.BIN){const a=NA+i;this.body=A.slice(a,a+r)}i+=r}if(this.content===null)throw new Error("THREE.GLTFLoader: JSON content not found.")}}class is{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,r={},o={},a={};for(const g in i){const C=Je[g]||g.toLowerCase();r[C]=i[g]}for(const g in A.attributes){const C=Je[g]||g.toLowerCase();if(i[g]!==void 0){const Q=s.accessors[A.attributes[g]],h=lA[Q.componentType];a[C]=h.name,o[C]=Q.normalized===!0}}return e.getDependency("bufferView",n).then(function(g){return new Promise(function(C,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)}C(h)},r,a,B.LinearSRGBColorSpace,Q)})})}}class os{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 rs{constructor(){this.name=R.KHR_MESH_QUANTIZATION}}class Ct 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,C=(s-e)/g,Q=C*C,h=Q*C,d=A*a,l=d-a,c=-2*h+3*Q,u=h-Q,f=1-c,F=u-Q+C;for(let G=0;G!==r;G++){const m=i[l+G+r],M=i[l+G+o]*g,y=i[d+G+r],O=i[d+G]*g;n[G]=f*m+F*M+c*y+u*O}return n}}const Bs=new B.Quaternion;class as extends Ct{interpolate_(A,e,s,t){const n=super.interpolate_(A,e,s,t);return Bs.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},lA={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},Ze={9728:B.NearestFilter,9729:B.LinearFilter,9984:B.NearestMipmapNearestFilter,9985:B.LinearMipmapNearestFilter,9986:B.NearestMipmapLinearFilter,9987:B.LinearMipmapLinearFilter},ze={33071:B.ClampToEdgeWrapping,33648:B.MirroredRepeatWrapping,10497:B.RepeatWrapping},De={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},Je={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"},AA={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},Cs={CUBICSPLINE:void 0,LINEAR:B.InterpolateLinear,STEP:B.InterpolateDiscrete},Fe={OPAQUE:"OPAQUE",MASK:"MASK",BLEND:"BLEND"};function Is(I){return I.DefaultMaterial===void 0&&(I.DefaultMaterial=new B.MeshStandardMaterial({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:B.FrontSide})),I.DefaultMaterial}function gA(I,A,e){for(const s in e.extensions)I[s]===void 0&&(A.userData.gltfExtensions=A.userData.gltfExtensions||{},A.userData.gltfExtensions[s]=e.extensions[s])}function eA(I,A){A.extras!==void 0&&(typeof A.extras=="object"?Object.assign(I.userData,A.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+A.extras))}function gs(I,A,e){let s=!1,t=!1,n=!1;for(let a=0,g=A.length;a<g;a++){const C=A[a];if(C.POSITION!==void 0&&(s=!0),C.NORMAL!==void 0&&(t=!0),C.COLOR_0!==void 0&&(n=!0),s&&t&&n)break}if(!s&&!t&&!n)return Promise.resolve(I);const i=[],r=[],o=[];for(let a=0,g=A.length;a<g;a++){const C=A[a];if(s){const Q=C.POSITION!==void 0?e.getDependency("accessor",C.POSITION):I.attributes.position;i.push(Q)}if(t){const Q=C.NORMAL!==void 0?e.getDependency("accessor",C.NORMAL):I.attributes.normal;r.push(Q)}if(n){const Q=C.COLOR_0!==void 0?e.getDependency("accessor",C.COLOR_0):I.attributes.color;o.push(Q)}}return Promise.all([Promise.all(i),Promise.all(r),Promise.all(o)]).then(function(a){const g=a[0],C=a[1],Q=a[2];return s&&(I.morphAttributes.position=g),t&&(I.morphAttributes.normal=C),n&&(I.morphAttributes.color=Q),I.morphTargetsRelative=!0,I})}function Es(I,A){if(I.updateMorphTargets(),A.weights!==void 0)for(let e=0,s=A.weights.length;e<s;e++)I.morphTargetInfluences[e]=A.weights[e];if(A.extras&&Array.isArray(A.extras.targetNames)){const e=A.extras.targetNames;if(I.morphTargetInfluences.length===e.length){I.morphTargetDictionary={};for(let s=0,t=e.length;s<t;s++)I.morphTargetDictionary[e[s]]=s}else console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.")}}function cs(I){let A;const e=I.extensions&&I.extensions[R.KHR_DRACO_MESH_COMPRESSION];if(e?A="draco:"+e.bufferView+":"+e.indices+":"+Ge(e.attributes):A=I.indices+":"+Ge(I.attributes)+":"+I.mode,I.targets!==void 0)for(let s=0,t=I.targets.length;s<t;s++)A+=":"+Ge(I.targets[s]);return A}function Ge(I){let A="";const e=Object.keys(I).sort();for(let s=0,t=e.length;s<t;s++)A+=e[s]+":"+I[e[s]]+";";return A}function Ue(I){switch(I){case Int8Array:return 1/127;case Uint8Array:return 1/255;case Int16Array:return 1/32767;case Uint16Array:return 1/65535;default:throw new Error("THREE.GLTFLoader: Unsupported normalized accessor component type.")}}function Qs(I){return I.search(/\.jpe?g($|\?)/i)>0||I.search(/^data\:image\/jpeg/)===0?"image/jpeg":I.search(/\.webp($|\?)/i)>0||I.search(/^data\:image\/webp/)===0?"image/webp":"image/png"}const hs=new B.Matrix4;class ls{constructor(A={},e={}){this.json=A,this.extensions={},this.plugins={},this.options=e,this.cache=new Kt,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),eA(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[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=De[t.type],r=lA[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=De[t.type],a=lA[t.componentType],g=a.BYTES_PER_ELEMENT,C=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!==C){const u=Math.floor(Q/h),f="InterleavedBuffer:"+t.bufferView+":"+t.componentType+":"+u+":"+t.count;let F=e.cache.get(f);F||(l=new a(r,u*h,t.count*h/g),F=new B.InterleavedBuffer(l,h/g),e.cache.add(f,F)),c=new B.InterleavedBufferAttribute(F,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=De.SCALAR,f=lA[t.sparse.indices.componentType],F=t.sparse.indices.byteOffset||0,G=t.sparse.values.byteOffset||0,m=new f(i[1],F,t.sparse.count*u),M=new a(i[2],G,t.sparse.count*o);r!==null&&(c=new B.BufferAttribute(c.array.slice(),c.itemSize,c.normalized));for(let y=0,O=m.length;y<O;y++){const H=m[y];if(c.setX(H,M[y*o]),o>=2&&c.setY(H,M[y*o+1]),o>=3&&c.setZ(H,M[y*o+2]),o>=4&&c.setW(H,M[y*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=Ze[Q.magFilter]||B.LinearFilter,g.minFilter=Ze[Q.minFilter]||B.LinearMipmapLinearFilter,g.wrapS=ze[Q.wrapS]||B.RepeatWrapping,g.wrapT=ze[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(C=>C.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(C){a=!0;const Q=new Blob([C],{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(C){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(C,n.path),d,void 0,h)})}).then(function(C){return a===!0&&r.revokeObjectURL(o),C.userData.mimeType=i.mimeType||Qs(i.uri),C}).catch(function(C){throw console.error("THREE.GLTFLoader: Couldn't load texture",o),C});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[R.KHR_TEXTURE_TRANSFORM]){const r=s.extensions!==void 0?s.extensions[R.KHR_TEXTURE_TRANSFORM]:void 0;if(r){const o=n.associations.get(i);i=n.extensions[R.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[R.KHR_MATERIALS_UNLIT]){const C=t[R.KHR_MATERIALS_UNLIT];i=C.getMaterialType(),a.push(C.extendParams(r,n,e))}else{const C=n.pbrMetallicRoughness||{};if(r.color=new B.Color(1,1,1),r.opacity=1,Array.isArray(C.baseColorFactor)){const Q=C.baseColorFactor;r.color.setRGB(Q[0],Q[1],Q[2],B.LinearSRGBColorSpace),r.opacity=Q[3]}C.baseColorTexture!==void 0&&a.push(e.assignTexture(r,"map",C.baseColorTexture,B.SRGBColorSpace)),r.metalness=C.metallicFactor!==void 0?C.metallicFactor:1,r.roughness=C.roughnessFactor!==void 0?C.roughnessFactor:1,C.metallicRoughnessTexture!==void 0&&(a.push(e.assignTexture(r,"metalnessMap",C.metallicRoughnessTexture)),a.push(e.assignTexture(r,"roughnessMap",C.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||Fe.OPAQUE;if(g===Fe.BLEND?(r.transparent=!0,r.depthWrite=!1):(r.transparent=!1,g===Fe.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 C=n.normalTexture.scale;r.normalScale.set(C,C)}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 C=n.emissiveFactor;r.emissive=new B.Color().setRGB(C[0],C[1],C[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 C=new i(r);return n.name&&(C.name=n.name),eA(C,n),e.associations.set(C,{materials:A}),n.extensions&&gA(t,C,n),C})}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[R.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(r,e).then(function(o){return $e(o,r,e)})}const i=[];for(let r=0,o=A.length;r<o;r++){const a=A[r],g=cs(a),C=t[g];if(C)i.push(C.promise);else{let Q;a.extensions&&a.extensions[R.KHR_DRACO_MESH_COMPRESSION]?Q=n(a):Q=$e(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?Is(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],C=[];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=We(u.geometry,B.TriangleStripDrawMode):c.mode===k.TRIANGLE_FAN&&(u.geometry=We(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&&Es(u,n),u.name=e.createUniqueName(n.name||"mesh_"+A),eA(u,n),c.extensions&&gA(t,u,c),e.assignFinalMaterial(u),C.push(u)}for(let h=0,d=C.length;h<d;h++)e.associations.set(C[h],{meshes:A,primitives:h});if(C.length===1)return n.extensions&&gA(t,C[0],n),C[0];const Q=new B.Group;n.extensions&&gA(t,Q,n),e.associations.set(Q,{meshes:A});for(let h=0,d=C.length;h<d;h++)Q.add(C[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)),eA(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 C=i[a];if(C){r.push(C);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 C=0,Q=t.channels.length;C<Q;C++){const h=t.channels[C],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(C){const Q=C[0],h=C[1],d=C[2],l=C[3],c=C[4],u=[];for(let f=0,F=Q.length;f<F;f++){const G=Q[f],m=h[f],M=d[f],y=l[f],O=c[f];if(G===void 0)continue;G.updateMatrix&&G.updateMatrix();const H=s._createAnimationTracks(G,m,M,y,O);if(H)for(let v=0;v<H.length;v++)u.push(H[v])}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],C=a[1],Q=a[2];Q!==null&&g.traverse(function(h){h.isSkinnedMesh&&h.bind(Q,hs)});for(let h=0,d=C.length;h<d;h++)g.add(C[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 C=0,Q=a.length;C<Q;C++)g.add(a[C]);if(n.name&&(g.userData.name=n.name,g.name=i),eA(g,n),n.extensions&&gA(s,g,n),n.matrix!==void 0){const C=new B.Matrix4;C.fromArray(n.matrix),g.applyMatrix4(C)}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)),eA(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,C=o.length;g<C;g++)n.add(o[g]);const a=g=>{const C=new Map;for(const[Q,h]of t.associations)(Q instanceof B.Material||Q instanceof B.Texture)&&C.set(Q,h);return g.traverse(Q=>{const h=t.associations.get(Q);h!=null&&C.set(Q,h)}),C};return t.associations=a(n),n})}_createAnimationTracks(A,e,s,t,n){const i=[],r=A.name?A.name:A.uuid,o=[];AA[n.path]===AA.weights?A.traverse(function(Q){Q.morphTargetInfluences&&o.push(Q.name?Q.name:Q.uuid)}):o.push(r);let a;switch(AA[n.path]){case AA.weights:a=B.NumberKeyframeTrack;break;case AA.rotation:a=B.QuaternionKeyframeTrack;break;case AA.position:case AA.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?Cs[t.interpolation]:B.InterpolateLinear,C=this._getArrayFromAccessor(s);for(let Q=0,h=o.length;Q<h;Q++){const d=new a(o[Q]+"."+AA[n.path],e.array,C,g);t.interpolation==="CUBICSPLINE"&&this._createCubicSplineTrackInterpolant(d),i.push(d)}return i}_getArrayFromAccessor(A){let e=A.array;if(A.normalized){const s=Ue(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?as:Ct;return new t(this.times,this.values,this.getValueSize()/3,s)},A.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0}}function ds(I,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=Ue(lA[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 C=n[a];if(C.POSITION!==void 0){const Q=e.json.accessors[C.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=Ue(lA[Q.componentType]);o.multiplyScalar(l)}r.max(o)}else console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.")}}t.expandByVector(r)}I.boundingBox=t;const i=new B.Sphere;t.getCenter(i.center),i.radius=t.min.distanceTo(t.max)/2,I.boundingSphere=i}function $e(I,A,e){const s=A.attributes,t=[];function n(i,r){return e.getDependency("accessor",i).then(function(o){I.setAttribute(r,o)})}for(const i in s){const r=Je[i]||i.toLowerCase();r in I.attributes||t.push(n(s[i],r))}if(A.indices!==void 0&&!I.index){const i=e.getDependency("accessor",A.indices).then(function(r){I.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.`),eA(I,A),ds(I,A,e),Promise.all(t).then(function(){return A.targets!==void 0?gs(I,A.targets,e):I})}const pe=new WeakMap;class us 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(pe.has(A)){const o=pe.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)}),pe.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=fs.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 fs(){let I,A;onmessage=function(i){const r=i.data;switch(r.type){case"init":I=r.decoderConfig,A=new Promise(function(g){I.onModuleLoaded=function(C){g({draco:C})},DracoDecoderModule(I)});break;case"decode":const o=r.buffer,a=r.taskConfig;A.then(g=>{const C=g.draco,Q=new C.Decoder;try{const h=e(C,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{C.destroy(Q)}});break}};function e(i,r,o,a){const g=a.attributeIDs,C=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[C[c]];let f,F;if(a.useUniqueIDs)F=g[c],f=r.GetAttributeByUniqueId(Q,F);else{if(F=r.GetAttributeId(Q,i[g[c]]),F===-1)continue;f=r.GetAttribute(Q,F)}const G=t(i,r,Q,c,u,f);c==="color"&&(G.vertexColorSpace=a.vertexColorSpace),l.attributes.push(G)}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,C=g*4,Q=i._malloc(C);r.GetTrianglesUInt32Array(o,C,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,C){const Q=C.num_components(),d=o.num_points()*Q,l=d*g.BYTES_PER_ELEMENT,c=n(i,g),u=i._malloc(l);r.GetAttributeDataArrayForAllPoints(o,C,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 Ds{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 Fs=0,At=2,Gs=1,et=2,ps=0,Rs=1,ms=10,Ms=0,It=9,gt=15,Et=16,ct=22,Qt=37,ht=43,lt=76,dt=83,ut=97,ft=100,Dt=103,Ft=109,Gt=165,pt=166;class ws{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 xA{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 L=[171,75,84,88,32,50,48,187,13,10,26,10];function tt(I){return typeof TextDecoder!="undefined"?new TextDecoder().decode(I):Buffer.from(I).toString("utf8")}function ys(I){const A=new Uint8Array(I.buffer,I.byteOffset,L.length);if(A[0]!==L[0]||A[1]!==L[1]||A[2]!==L[2]||A[3]!==L[3]||A[4]!==L[4]||A[5]!==L[5]||A[6]!==L[6]||A[7]!==L[7]||A[8]!==L[8]||A[9]!==L[9]||A[10]!==L[10]||A[11]!==L[11])throw new Error("Missing KTX 2.0 identifier.");const e=new ws,s=17*Uint32Array.BYTES_PER_ELEMENT,t=new xA(I,L.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(),C=t._nextUint64(),Q=new xA(I,L.length+s,3*n*8,!0);for(let S=0;S<n;S++)e.levels.push({levelData:new Uint8Array(I.buffer,I.byteOffset+Q._nextUint64(),Q._nextUint64()),uncompressedByteLength:Q._nextUint64()});const h=new xA(I,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 S=0;S<l;S++){const J={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&J.channelType?(J.sampleLower=h._nextInt32(),J.sampleUpper=h._nextInt32()):(J.sampleLower=h._nextUint32(),J.sampleUpper=h._nextUint32()),d.samples[S]=J}e.dataFormatDescriptor.length=0,e.dataFormatDescriptor.push(d);const c=new xA(I,o,a,!0);for(;c._offset<a;){const S=c._nextUint32(),J=c._scan(S),JA=tt(J),V=c._scan(S-J.byteLength);e.keyValue[JA]=JA.match(/^ktx/i)?tt(V):V,c._offset%4&&c._skip(4-c._offset%4)}if(C<=0)return e;const u=new xA(I,g,C,!0),f=u._nextUint16(),F=u._nextUint16(),G=u._nextUint32(),m=u._nextUint32(),M=u._nextUint32(),y=u._nextUint32(),O=[];for(let S=0;S<n;S++)O.push({imageFlags:u._nextUint32(),rgbSliceByteOffset:u._nextUint32(),rgbSliceByteLength:u._nextUint32(),alphaSliceByteOffset:u._nextUint32(),alphaSliceByteLength:u._nextUint32()});const H=g+u._offset,v=H+G,TA=v+m,Ie=TA+M,CA=new Uint8Array(I.buffer,I.byteOffset+H,G),ge=new Uint8Array(I.buffer,I.byteOffset+v,m),z=new Uint8Array(I.buffer,I.byteOffset+TA,M),Ee=new Uint8Array(I.buffer,I.byteOffset+Ie,y);return e.globalData={endpointCount:f,selectorCount:F,imageDescs:O,endpointsData:CA,selectorsData:ge,tablesData:z,extendedData:Ee},e}let Re,W,Ne;const me={env:{emscripten_notify_memory_growth:function(I){Ne=new Uint8Array(W.exports.memory.buffer)}}};class Ss{init(){return Re||(Re=typeof fetch!="undefined"?fetch("data:application/wasm;base64,"+st).then(A=>A.arrayBuffer()).then(A=>WebAssembly.instantiate(A,me)).then(this._init):WebAssembly.instantiate(Buffer.from(st,"base64"),me).then(this._init),Re)}_init(A){W=A.instance,me.env.emscripten_notify_memory_growth(0)}decode(A,e=0){if(!W)throw new Error("ZSTDDecoder: Await .init() before decoding.");const s=A.byteLength,t=W.exports.malloc(s);Ne.set(A,t),e=e||Number(W.exports.ZSTD_findDecompressedSize(t,s));const n=W.exports.malloc(e),i=W.exports.ZSTD_decompress(n,e,t,s),r=Ne.slice(n,n+i);return W.exports.free(t),W.exports.free(n),r}}const st="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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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",Me=new WeakMap;let we=0,ye;class X extends B.Loader{constructor(A){super(A),this.transcoderPath="",this.transcoderBinary=null,this.transcoderPending=null,this.workerPool=new Ds,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=X.BasisWorker.toString(),o=["/* constants */","let _EngineFormat = "+JSON.stringify(X.EngineFormat),"let _TranscoderFormat = "+JSON.stringify(X.TranscoderFormat),"let _BasisFormat = "+JSON.stringify(X.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})}),we>0&&console.warn("THREE.KTX2Loader: Multiple active KTX2 loaders may cause performance issues. Use a single KTX2Loader instance, or call .dispose() on old instances."),we++}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(Me.has(i))return Me.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 C=s[0].mipmaps;g=e.layerCount>1?new B.CompressedArrayTexture(C,t,n,e.layerCount,i,B.UnsignedByteType):new B.CompressedTexture(C,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=Rt(e),g.premultiplyAlpha=!!(a&Gs),g}_createTexture(s){return UA(this,arguments,function*(A,e={}){const t=ys(new Uint8Array(A));if(t.vkFormat!==Ms)return Hs(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 Me.set(A,{promise:i}),i})}dispose(){return this.workerPool.dispose(),this.workerSourceURL&&URL.revokeObjectURL(this.workerSourceURL),we--,this}}X.BasisFormat={ETC1S:0,UASTC_4x4:1};X.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};X.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};X.BasisWorker=function(){let I,A,e;const s=_EngineFormat,t=_TranscoderFormat,n=_BasisFormat;self.addEventListener("message",function(d){const l=d.data;switch(l.type){case"init":I=l.config,i(l.transcoderBinary);break;case"transcode":A.then(()=>{try{const{faces:c,buffers:u,width:f,height:F,hasAlpha:G,format:m,dfdFlags:M}=r(l.buffer);self.postMessage({type:"transcode",id:l.id,faces:c,width:f,height:F,hasAlpha:G,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(),F=l.getHeight(),G=l.getLayers()||1,m=l.getLevels(),M=l.getFaces(),y=l.getHasAlpha(),O=l.getDFDFlags(),{transcoderFormat:H,engineFormat:v}=C(u,f,F,y);if(!f||!F||!m)throw c(),new Error("THREE.KTX2Loader: Invalid texture");if(!l.startTranscoding())throw c(),new Error("THREE.KTX2Loader: .startTranscoding failed");const TA=[],Ie=[];for(let CA=0;CA<M;CA++){const ge=[];for(let z=0;z<m;z++){const Ee=[];let S,J;for(let V=0;V<G;V++){const hA=l.getImageLevelInfo(z,V,CA);CA===0&&z===0&&V===0&&(hA.origWidth%4!==0||hA.origHeight%4!==0)&&console.warn("THREE.KTX2Loader: ETC1S and UASTC textures should use multiple-of-four dimensions."),m>1?(S=hA.origWidth,J=hA.origHeight):(S=hA.width,J=hA.height);const Pe=new Uint8Array(l.getImageTranscodedSizeInBytes(z,V,0,H));if(!l.transcodeImage(Pe,z,V,CA,H,0,-1,-1))throw c(),new Error("THREE.KTX2Loader: .transcodeImage failed.");Ee.push(Pe)}const JA=h(Ee);ge.push({data:JA,width:S,height:J}),Ie.push(JA.buffer)}TA.push({mipmaps:ge,width:f,height:F,format:v})}return c(),{faces:TA,buffers:Ie,width:f,height:F,hasAlpha:y,format:v,dfdFlags:O}}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 C(d,l,c,u){let f,F;const G=d===n.ETC1S?a:g;for(let m=0;m<G.length;m++){const M=G[m];if(I[M.if]&&M.basisFormat.includes(d)&&!(u&&M.transcoderFormat.length<2)&&!(M.needsPowerOfTwo&&!(Q(l)&&Q(c))))return f=M.transcoderFormat[u?1:0],F=M.engineFormat[u?1:0],{transcoderFormat:f,engineFormat:F}}return console.warn("THREE.KTX2Loader: No suitable compressed texture format found. Decoding to RGBA32."),f=t.RGBA32,F=s.RGBAFormat,{transcoderFormat:f,engineFormat:F}}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 F=d[f];l+=F.byteLength}const c=new Uint8Array(l);let u=0;for(let f=0;f<d.length;f++){const F=d[f];c.set(F,u),u+=F.byteLength}return c}};const Ls=new Set([B.RGBAFormat,B.RGFormat,B.RedFormat]),Se={[Ft]:B.RGBAFormat,[ut]:B.RGBAFormat,[Qt]:B.RGBAFormat,[ht]:B.RGBAFormat,[Dt]:B.RGFormat,[dt]:B.RGFormat,[Et]:B.RGFormat,[ct]:B.RGFormat,[ft]:B.RedFormat,[lt]:B.RedFormat,[gt]:B.RedFormat,[It]:B.RedFormat,[pt]:B.RGBA_ASTC_6x6_Format,[Gt]:B.RGBA_ASTC_6x6_Format},Le={[Ft]:B.FloatType,[ut]:B.HalfFloatType,[Qt]:B.UnsignedByteType,[ht]:B.UnsignedByteType,[Dt]:B.FloatType,[dt]:B.HalfFloatType,[Et]:B.UnsignedByteType,[ct]:B.UnsignedByteType,[ft]:B.FloatType,[lt]:B.HalfFloatType,[gt]:B.UnsignedByteType,[It]:B.UnsignedByteType,[pt]:B.UnsignedByteType,[Gt]:B.UnsignedByteType};function Hs(I){return UA(this,null,function*(){const{vkFormat:A}=I;if(Se[A]===void 0)throw new Error("THREE.KTX2Loader: Unsupported vkFormat.");let e;I.supercompressionScheme===At&&(ye||(ye=new Promise(n=>UA(this,null,function*(){const i=new Ss;yield i.init(),n(i)}))),e=yield ye);const s=[];for(let n=0;n<I.levels.length;n++){const i=Math.max(1,I.pixelWidth>>n),r=Math.max(1,I.pixelHeight>>n),o=I.pixelDepth?Math.max(1,I.pixelDepth>>n):0,a=I.levels[n];let g;if(I.supercompressionScheme===Fs)g=a.levelData;else if(I.supercompressionScheme===At)g=e.decode(a.levelData,a.uncompressedByteLength);else throw new Error("THREE.KTX2Loader: Unsupported supercompressionScheme.");let C;Le[A]===B.FloatType?C=new Float32Array(g.buffer,g.byteOffset,g.byteLength/Float32Array.BYTES_PER_ELEMENT):Le[A]===B.HalfFloatType?C=new Uint16Array(g.buffer,g.byteOffset,g.byteLength/Uint16Array.BYTES_PER_ELEMENT):C=g,s.push({data:C,width:i,height:r,depth:o})}let t;if(Ls.has(Se[A]))t=I.pixelDepth===0?new B.DataTexture(s[0].data,I.pixelWidth,I.pixelHeight):new B.Data3DTexture(s[0].data,I.pixelWidth,I.pixelHeight,I.pixelDepth);else{if(I.pixelDepth>0)throw new Error("THREE.KTX2Loader: Unsupported pixelDepth.");t=new B.CompressedTexture(s,I.pixelWidth,I.pixelHeight)}return t.mipmaps=s,t.type=Le[A],t.format=Se[A],t.colorSpace=Rt(I),t.needsUpdate=!0,Promise.resolve(t)})}function Rt(I){const A=I.dataFormatDescriptor[0];return A.colorPrimaries===Rs?A.transferFunction===et?B.SRGBColorSpace:B.LinearSRGBColorSpace:A.colorPrimaries===ms?A.transferFunction===et?B.DisplayP3ColorSpace:B.LinearDisplayP3ColorSpace:(A.colorPrimaries===ps||console.warn(`THREE.KTX2Loader: Unsupported color primaries, "${A.colorPrimaries}"`),B.NoColorSpace)}let Qe;const Ts=()=>{if(Qe)return Qe;const I="B9h9z9tFBBBF8fL9gBB9gLaaaaaFa9gEaaaB9gFaFa9gEaaaFaEMcBFFFGGGEIIILF9wFFFLEFBFKNFaFCx/IFMO/LFVK9tv9t9vq95GBt9f9f939h9z9t9f9j9h9s9s9f9jW9vq9zBBp9tv9z9o9v9wW9f9kv9j9v9kv9WvqWv94h919m9mvqBF8Z9tv9z9o9v9wW9f9kv9j9v9kv9J9u9kv94h919m9mvqBGy9tv9z9o9v9wW9f9kv9j9v9kv9J9u9kv949TvZ91v9u9jvBEn9tv9z9o9v9wW9f9kv9j9v9kv69p9sWvq9P9jWBIi9tv9z9o9v9wW9f9kv9j9v9kv69p9sWvq9R919hWBLn9tv9z9o9v9wW9f9kv9j9v9kv69p9sWvq9F949wBKI9z9iqlBOc+x8ycGBM/qQFTa8jUUUUBCU/EBlHL8kUUUUBC9+RKGXAGCFJAI9LQBCaRKAE2BBC+gF9HQBALAEAIJHOAGlAGTkUUUBRNCUoBAG9uC/wgBZHKCUGAKCUG9JyRVAECFJRICBRcGXEXAcAF9PQFAVAFAclAcAVJAF9JyRMGXGXAG9FQBAMCbJHKC9wZRSAKCIrCEJCGrRQANCUGJRfCBRbAIRTEXGXAOATlAQ9PQBCBRISEMATAQJRIGXAS9FQBCBRtCBREEXGXAOAIlCi9PQBCBRISLMANCU/CBJAEJRKGXGXGXGXGXATAECKrJ2BBAtCKZrCEZfIBFGEBMAKhB83EBAKCNJhB83EBSEMAKAI2BIAI2BBHmCKrHYAYCE6HYy86BBAKCFJAICIJAYJHY2BBAmCIrCEZHPAPCE6HPy86BBAKCGJAYAPJHY2BBAmCGrCEZHPAPCE6HPy86BBAKCEJAYAPJHY2BBAmCEZHmAmCE6Hmy86BBAKCIJAYAmJHY2BBAI2BFHmCKrHPAPCE6HPy86BBAKCLJAYAPJHY2BBAmCIrCEZHPAPCE6HPy86BBAKCKJAYAPJHY2BBAmCGrCEZHPAPCE6HPy86BBAKCOJAYAPJHY2BBAmCEZHmAmCE6Hmy86BBAKCNJAYAmJHY2BBAI2BGHmCKrHPAPCE6HPy86BBAKCVJAYAPJHY2BBAmCIrCEZHPAPCE6HPy86BBAKCcJAYAPJHY2BBAmCGrCEZHPAPCE6HPy86BBAKCMJAYAPJHY2BBAmCEZHmAmCE6Hmy86BBAKCSJAYAmJHm2BBAI2BEHICKrHYAYCE6HYy86BBAKCQJAmAYJHm2BBAICIrCEZHYAYCE6HYy86BBAKCfJAmAYJHm2BBAICGrCEZHYAYCE6HYy86BBAKCbJAmAYJHK2BBAICEZHIAICE6HIy86BBAKAIJRISGMAKAI2BNAI2BBHmCIrHYAYCb6HYy86BBAKCFJAICNJAYJHY2BBAmCbZHmAmCb6Hmy86BBAKCGJAYAmJHm2BBAI2BFHYCIrHPAPCb6HPy86BBAKCEJAmAPJHm2BBAYCbZHYAYCb6HYy86BBAKCIJAmAYJHm2BBAI2BGHYCIrHPAPCb6HPy86BBAKCLJAmAPJHm2BBAYCbZHYAYCb6HYy86BBAKCKJAmAYJHm2BBAI2BEHYCIrHPAPCb6HPy86BBAKCOJAmAPJHm2BBAYCbZHYAYCb6HYy86BBAKCNJAmAYJHm2BBAI2BIHYCIrHPAPCb6HPy86BBAKCVJAmAPJHm2BBAYCbZHYAYCb6HYy86BBAKCcJAmAYJHm2BBAI2BLHYCIrHPAPCb6HPy86BBAKCMJAmAPJHm2BBAYCbZHYAYCb6HYy86BBAKCSJAmAYJHm2BBAI2BKHYCIrHPAPCb6HPy86BBAKCQJAmAPJHm2BBAYCbZHYAYCb6HYy86BBAKCfJAmAYJHm2BBAI2BOHICIrHYAYCb6HYy86BBAKCbJAmAYJHK2BBAICbZHIAICb6HIy86BBAKAIJRISFMAKAI8pBB83BBAKCNJAICNJ8pBB83BBAICTJRIMAtCGJRtAECTJHEAS9JQBMMGXAIQBCBRISEMGXAM9FQBANAbJ2BBRtCBRKAfREEXAEANCU/CBJAKJ2BBHTCFrCBATCFZl9zAtJHt86BBAEAGJREAKCFJHKAM9HQBMMAfCFJRfAIRTAbCFJHbAG9HQBMMABAcAG9sJANCUGJAMAG9sTkUUUBpANANCUGJAMCaJAG9sJAGTkUUUBpMAMCBAIyAcJRcAIQBMC9+RKSFMCBC99AOAIlAGCAAGCA9Ly6yRKMALCU/EBJ8kUUUUBAKM+OmFTa8jUUUUBCoFlHL8kUUUUBC9+RKGXAFCE9uHOCtJAI9LQBCaRKAE2BBHNC/wFZC/gF9HQBANCbZHVCF9LQBALCoBJCgFCUFT+JUUUBpALC84Jha83EBALC8wJha83EBALC8oJha83EBALCAJha83EBALCiJha83EBALCTJha83EBALha83ENALha83EBAEAIJC9wJRcAECFJHNAOJRMGXAF9FQBCQCbAVCF6yRSABRECBRVCBRQCBRfCBRICBRKEXGXAMAcuQBC9+RKSEMGXGXAN2BBHOC/vF9LQBALCoBJAOCIrCa9zAKJCbZCEWJHb8oGIRTAb8oGBRtGXAOCbZHbAS9PQBALAOCa9zAIJCbZCGWJ8oGBAVAbyROAb9FRbGXGXAGCG9HQBABAt87FBABCIJAO87FBABCGJAT87FBSFMAEAtjGBAECNJAOjGBAECIJATjGBMAVAbJRVALCoBJAKCEWJHmAOjGBAmATjGIALAICGWJAOjGBALCoBJAKCFJCbZHKCEWJHTAtjGBATAOjGIAIAbJRIAKCFJRKSGMGXGXAbCb6QBAQAbJAbC989zJCFJRQSFMAM1BBHbCgFZROGXGXAbCa9MQBAMCFJRMSFMAM1BFHbCgBZCOWAOCgBZqROGXAbCa9MQBAMCGJRMSFMAM1BGHbCgBZCfWAOqROGXAbCa9MQBAMCEJRMSFMAM1BEHbCgBZCdWAOqROGXAbCa9MQBAMCIJRMSFMAM2BIC8cWAOqROAMCLJRMMAOCFrCBAOCFZl9zAQJRQMGXGXAGCG9HQBABAt87FBABCIJAQ87FBABCGJAT87FBSFMAEAtjGBAECNJAQjGBAECIJATjGBMALCoBJAKCEWJHOAQjGBAOATjGIALAICGWJAQjGBALCoBJAKCFJCbZHKCEWJHOAtjGBAOAQjGIAICFJRIAKCFJRKSFMGXAOCDF9LQBALAIAcAOCbZJ2BBHbCIrHTlCbZCGWJ8oGBAVCFJHtATyROALAIAblCbZCGWJ8oGBAtAT9FHmJHtAbCbZHTyRbAT9FRTGXGXAGCG9HQBABAV87FBABCIJAb87FBABCGJAO87FBSFMAEAVjGBAECNJAbjGBAECIJAOjGBMALAICGWJAVjGBALCoBJAKCEWJHYAOjGBAYAVjGIALAICFJHICbZCGWJAOjGBALCoBJAKCFJCbZCEWJHYAbjGBAYAOjGIALAIAmJCbZHICGWJAbjGBALCoBJAKCGJCbZHKCEWJHOAVjGBAOAbjGIAKCFJRKAIATJRIAtATJRVSFMAVCBAM2BBHYyHTAOC/+F6HPJROAYCbZRtGXGXAYCIrHmQBAOCFJRbSFMAORbALAIAmlCbZCGWJ8oGBROMGXGXAtQBAbCFJRVSFMAbRVALAIAYlCbZCGWJ8oGBRbMGXGXAP9FQBAMCFJRYSFMAM1BFHYCgFZRTGXGXAYCa9MQBAMCGJRYSFMAM1BGHYCgBZCOWATCgBZqRTGXAYCa9MQBAMCEJRYSFMAM1BEHYCgBZCfWATqRTGXAYCa9MQBAMCIJRYSFMAM1BIHYCgBZCdWATqRTGXAYCa9MQBAMCLJRYSFMAMCKJRYAM2BLC8cWATqRTMATCFrCBATCFZl9zAQJHQRTMGXGXAmCb6QBAYRPSFMAY1BBHMCgFZROGXGXAMCa9MQBAYCFJRPSFMAY1BFHMCgBZCOWAOCgBZqROGXAMCa9MQBAYCGJRPSFMAY1BGHMCgBZCfWAOqROGXAMCa9MQBAYCEJRPSFMAY1BEHMCgBZCdWAOqROGXAMCa9MQBAYCIJRPSFMAYCLJRPAY2BIC8cWAOqROMAOCFrCBAOCFZl9zAQJHQROMGXGXAtCb6QBAPRMSFMAP1BBHMCgFZRbGXGXAMCa9MQBAPCFJRMSFMAP1BFHMCgBZCOWAbCgBZqRbGXAMCa9MQBAPCGJRMSFMAP1BGHMCgBZCfWAbqRbGXAMCa9MQBAPCEJRMSFMAP1BEHMCgBZCdWAbqRbGXAMCa9MQBAPCIJRMSFMAPCLJRMAP2BIC8cWAbqRbMAbCFrCBAbCFZl9zAQJHQRbMGXGXAGCG9HQBABAT87FBABCIJAb87FBABCGJAO87FBSFMAEATjGBAECNJAbjGBAECIJAOjGBMALCoBJAKCEWJHYAOjGBAYATjGIALAICGWJATjGBALCoBJAKCFJCbZCEWJHYAbjGBAYAOjGIALAICFJHICbZCGWJAOjGBALCoBJAKCGJCbZCEWJHOATjGBAOAbjGIALAIAm9FAmCb6qJHICbZCGWJAbjGBAIAt9FAtCb6qJRIAKCEJRKMANCFJRNABCKJRBAECSJREAKCbZRKAICbZRIAfCEJHfAF9JQBMMCBC99AMAc6yRKMALCoFJ8kUUUUBAKM/tIFGa8jUUUUBCTlRLC9+RKGXAFCLJAI9LQBCaRKAE2BBC/+FZC/QF9HQBALhB83ENAECFJRKAEAIJC98JREGXAF9FQBGXAGCG6QBEXGXAKAE9JQBC9+bMAK1BBHGCgFZRIGXGXAGCa9MQBAKCFJRKSFMAK1BFHGCgBZCOWAICgBZqRIGXAGCa9MQBAKCGJRKSFMAK1BGHGCgBZCfWAIqRIGXAGCa9MQBAKCEJRKSFMAK1BEHGCgBZCdWAIqRIGXAGCa9MQBAKCIJRKSFMAK2BIC8cWAIqRIAKCLJRKMALCNJAICFZCGWqHGAICGrCBAICFrCFZl9zAG8oGBJHIjGBABAIjGBABCIJRBAFCaJHFQBSGMMEXGXAKAE9JQBC9+bMAK1BBHGCgFZRIGXGXAGCa9MQBAKCFJRKSFMAK1BFHGCgBZCOWAICgBZqRIGXAGCa9MQBAKCGJRKSFMAK1BGHGCgBZCfWAIqRIGXAGCa9MQBAKCEJRKSFMAK1BEHGCgBZCdWAIqRIGXAGCa9MQBAKCIJRKSFMAK2BIC8cWAIqRIAKCLJRKMABAICGrCBAICFrCFZl9zALCNJAICFZCGWqHI8oGBJHG87FBAIAGjGBABCGJRBAFCaJHFQBMMCBC99AKAE6yRKMAKM+lLKFaF99GaG99FaG99GXGXAGCI9HQBAF9FQFEXGXGX9DBBB8/9DBBB+/ABCGJHG1BB+yAB1BBHE+yHI+L+TABCFJHL1BBHK+yHO+L+THN9DBBBB9gHVyAN9DBB/+hANAN+U9DBBBBANAVyHcAc+MHMAECa3yAI+SHIAI+UAcAMAKCa3yAO+SHcAc+U+S+S+R+VHO+U+SHN+L9DBBB9P9d9FQBAN+oRESFMCUUUU94REMAGAE86BBGXGX9DBBB8/9DBBB+/Ac9DBBBB9gyAcAO+U+SHN+L9DBBB9P9d9FQBAN+oRGSFMCUUUU94RGMALAG86BBGXGX9DBBB8/9DBBB+/AI9DBBBB9gyAIAO+U+SHN+L9DBBB9P9d9FQBAN+oRGSFMCUUUU94RGMABAG86BBABCIJRBAFCaJHFQBSGMMAF9FQBEXGXGX9DBBB8/9DBBB+/ABCIJHG8uFB+yAB8uFBHE+yHI+L+TABCGJHL8uFBHK+yHO+L+THN9DBBBB9gHVyAN9DB/+g6ANAN+U9DBBBBANAVyHcAc+MHMAECa3yAI+SHIAI+UAcAMAKCa3yAO+SHcAc+U+S+S+R+VHO+U+SHN+L9DBBB9P9d9FQBAN+oRESFMCUUUU94REMAGAE87FBGXGX9DBBB8/9DBBB+/Ac9DBBBB9gyAcAO+U+SHN+L9DBBB9P9d9FQBAN+oRGSFMCUUUU94RGMALAG87FBGXGX9DBBB8/9DBBB+/AI9DBBBB9gyAIAO+U+SHN+L9DBBB9P9d9FQBAN+oRGSFMCUUUU94RGMABAG87FBABCNJRBAFCaJHFQBMMM/SEIEaE99EaF99GXAF9FQBCBREABRIEXGXGX9D/zI818/AICKJ8uFBHLCEq+y+VHKAI8uFB+y+UHO9DB/+g6+U9DBBB8/9DBBB+/AO9DBBBB9gy+SHN+L9DBBB9P9d9FQBAN+oRVSFMCUUUU94RVMAICIJ8uFBRcAICGJ8uFBRMABALCFJCEZAEqCFWJAV87FBGXGXAKAM+y+UHN9DB/+g6+U9DBBB8/9DBBB+/AN9DBBBB9gy+SHS+L9DBBB9P9d9FQBAS+oRMSFMCUUUU94RMMABALCGJCEZAEqCFWJAM87FBGXGXAKAc+y+UHK9DB/+g6+U9DBBB8/9DBBB+/AK9DBBBB9gy+SHS+L9DBBB9P9d9FQBAS+oRcSFMCUUUU94RcMABALCaJCEZAEqCFWJAc87FBGXGX9DBBU8/AOAO+U+TANAN+U+TAKAK+U+THO9DBBBBAO9DBBBB9gy+R9DB/+g6+U9DBBB8/+SHO+L9DBBB9P9d9FQBAO+oRcSFMCUUUU94RcMABALCEZAEqCFWJAc87FBAICNJRIAECIJREAFCaJHFQBMMM9JBGXAGCGrAF9sHF9FQBEXABAB8oGBHGCNWCN91+yAGCi91CnWCUUU/8EJ+++U84GBABCIJRBAFCaJHFQBMMM9TFEaCBCB8oGUkUUBHFABCEJC98ZJHBjGUkUUBGXGXAB8/BCTWHGuQBCaREABAGlCggEJCTrXBCa6QFMAFREMAEM/lFFFaGXGXAFABqCEZ9FQBABRESFMGXGXAGCT9PQBABRESFMABREEXAEAF8oGBjGBAECIJAFCIJ8oGBjGBAECNJAFCNJ8oGBjGBAECSJAFCSJ8oGBjGBAECTJREAFCTJRFAGC9wJHGCb9LQBMMAGCI9JQBEXAEAF8oGBjGBAFCIJRFAECIJREAGC98JHGCE9LQBMMGXAG9FQBEXAEAF2BB86BBAECFJREAFCFJRFAGCaJHGQBMMABMoFFGaGXGXABCEZ9FQBABRESFMAFCgFZC+BwsN9sRIGXGXAGCT9PQBABRESFMABREEXAEAIjGBAECSJAIjGBAECNJAIjGBAECIJAIjGBAECTJREAGC9wJHGCb9LQBMMAGCI9JQBEXAEAIjGBAECIJREAGC98JHGCE9LQBMMGXAG9FQBEXAEAF86BBAECFJREAGCaJHGQBMMABMMMFBCUNMIT9kBB",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=I;WebAssembly.validate(e)&&(t=A);let n;const i=WebAssembly.instantiate(r(t),{}).then(C=>{n=C.instance,n.exports.__wasm_call_ctors()});function r(C){const Q=new Uint8Array(C.length);for(let d=0;d<C.length;++d){const l=C.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<C.length;++d)Q[h++]=Q[d]<60?s[Q[d]]:(Q[d]-60)*64+Q[++d];return Q.buffer.slice(0,h)}function o(C,Q,h,d,l,c){const u=n.exports.sbrk,f=h+3&-4,F=u(f*d),G=u(l.length),m=new Uint8Array(n.exports.memory.buffer);m.set(l,G);const M=C(F,h,d,G,l.length);if(M===0&&c&&c(F,f,d),Q.set(m.subarray(F,F+h*d)),u(F-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 Qe={ready:i,supported:!0,decodeVertexBuffer(C,Q,h,d,l){o(n.exports.meshopt_decodeVertexBuffer,C,Q,h,d,n.exports[a[l]])},decodeIndexBuffer(C,Q,h,d){o(n.exports.meshopt_decodeIndexBuffer,C,Q,h,d)},decodeIndexSequence(C,Q,h,d){o(n.exports.meshopt_decodeIndexSequence,C,Q,h,d)},decodeGltfBuffer(C,Q,h,d,l,c){o(n.exports[g[l]],C,Q,h,d,n.exports[a[c]])}},Qe};var RA,zA,$A,Ae;class Js{constructor(){D(this,RA,new bt);D(this,zA,new us().setDecoderPath(`${w.CDNVersion}/examples/jsm/libs/draco/gltf/`));D(this,$A,new X().setTranscoderPath(`${w.CDNVersion}/examples/jsm/libs/basis/`));D(this,Ae,!1);E(this,RA).setCrossOrigin("anonymous").setDRACOLoader(E(this,zA)).setMeshoptDecoder(Ts)}get gltfLoader(){return E(this,RA)}get dracoLoader(){return E(this,zA)}get ktx2Loader(){return E(this,$A)}load(...A){E(this,Ae)||(E(this,RA).setKTX2Loader(E(this,$A).detectSupport(w.webglRenderer)),p(this,Ae,!0)),this.gltfLoader.load(...A)}}RA=new WeakMap,zA=new WeakMap,$A=new WeakMap,Ae=new WeakMap;const mt=new Js;var K,Z,ee;class Us{constructor(A,e=1){D(this,K,null);D(this,Z,[]);D(this,ee,()=>{const A=E(this,K).position.x,e=E(this,K).position.y;E(this,Z)[0].constant=E(this,K).scale.y/2+e*-1,E(this,Z)[1].constant=E(this,K).scale.y/2+e,E(this,Z)[2].constant=E(this,K).scale.x/2+A,E(this,Z)[3].constant=E(this,K).scale.x/2+A*-1});p(this,K,new ot.LayoutBox(A,{cartesian:!1})),p(this,Z,[new B.Plane(new B.Vector3(0,-1*e,0)),new B.Plane(new B.Vector3(0,1*e,0)),new B.Plane(new B.Vector3(-1*e,0,0)),new B.Plane(new B.Vector3(1*e,0,0))]),HA.ticker.subscribe(E(this,ee),{order:bA.TICK_ORDER.LAYOUT_BOX})}get planes(){return E(this,Z)}get layoutBox(){return E(this,K)}destroy(){HA.ticker.unsubscribe(E(this,ee)),E(this,K).destroy()}}K=new WeakMap,Z=new WeakMap,ee=new WeakMap;class Ns 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,cA,MA,te,se,oA,wA,ne;class Ke extends Jt.SourceManager{constructor(e){super(e);D(this,mA,new Ve.Store(null));D(this,cA,new Ve.Store(void 0));D(this,MA,void 0);D(this,te,void 0);D(this,se,void 0);D(this,oA,void 0);D(this,wA,!1);D(this,ne,()=>{if(!(E(this,oA)&&!E(this,wA))&&(this.current!==this.previous&&(E(this,mA).current=null),this.current)){const e=E(this,se)?this.current.url:this.current.name+this.current.extension;E(this,oA)||fe.loading.setTotal(e,1),E(this,cA).current="start",E(this,te).load(e,s=>{E(this,mA).current=s,E(this,cA).current="complete",E(this,oA)||fe.loading.setLoaded(e,1)},void 0,()=>{E(this,oA)||(E(this,cA).current="error",fe.loading.setError(e,e))})}});p(this,MA,e.consumer),p(this,te,e.loader),p(this,se,e.keepSourceParameters||!1),p(this,oA,e.lazy||!1),this.subscribe(E(this,ne)),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,cA)}lazyLoad(){E(this,wA)||(p(this,wA,!0),E(this,ne).call(this))}}mA=new WeakMap,cA=new WeakMap,MA=new WeakMap,te=new WeakMap,se=new WeakMap,oA=new WeakMap,wA=new WeakMap,ne=new WeakMap;var yA;class xs extends B.Group{constructor(e){super();D(this,yA,void 0);p(this,yA,new Ke($({loader:mt,consumer:this},e))),E(this,yA).data.subscribe(s=>{s.current?this.add(...s.current.scene.children):this.children.forEach(t=>{this.remove(t),be(t)})})}get sourceManager(){return E(this,yA)}}yA=new WeakMap;function Oe(I,A,e){const s=A.x,t=A.y,n=e||I.image.width/I.image.height;let i=0,r=0,o=I.offset.x,a=I.offset.y,g=I.rotation,C=I.center.x,Q=I.center.y;s/t>n?(i=1,r=t/s*n):(r=1,i=s/t/n),I.matrix.setUvTransform(o,a,i,r,g,C,Q)}const kA=new B.Vector3;function x(I,A,e,s,t,n){const i=2*Math.PI*t/4,r=Math.max(n-2*t,0),o=Math.PI/4;kA.copy(A),kA[s]=0,kA.normalize();const a=.5*i/(i+r),g=1-kA.angleTo(I)/o;return Math.sign(kA[e])===1?g*a:r/(i+r)+a+a*(1-g)}class ks 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,C=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,C[c+0]=o.x,C[c+1]=o.y,C[c+2]=o.z,Math.floor(c/h)){case 0:d.set(1,0,0),Q[u+0]=x(d,o,"z","y",n,s),Q[u+1]=1-x(d,o,"y","z",n,e);break;case 1:d.set(-1,0,0),Q[u+0]=1-x(d,o,"z","y",n,s),Q[u+1]=1-x(d,o,"y","z",n,e);break;case 2:d.set(0,1,0),Q[u+0]=1-x(d,o,"x","z",n,A),Q[u+1]=x(d,o,"z","x",n,s);break;case 3:d.set(0,-1,0),Q[u+0]=1-x(d,o,"x","z",n,A),Q[u+1]=1-x(d,o,"z","x",n,s);break;case 4:d.set(0,0,1),Q[u+0]=1-x(d,o,"x","y",n,A),Q[u+1]=1-x(d,o,"y","x",n,e);break;case 5:d.set(0,0,-1),Q[u+0]=x(d,o,"x","y",n,A),Q[u+1]=1-x(d,o,"y","x",n,e);break}}}const nt=new B.Vector3,bs=new B.Quaternion,it=new B.Vector3;class Ks 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 _=new B.Matrix4,Os=new B.Matrix4;class _s{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,F;c.isOrthographicCamera&&(f=-(c.right+c.left)/2,F=(c.top+c.bottom)/2);const G=c.view&&c.view.enabled?c.view.height/c.view.fullHeight:1,m=c.isOrthographicCamera?`scale( ${G} )scale(`+u+")translate("+C(f)+"px,"+C(F)+"px)"+Q(c.matrixWorldInverse):`scale( ${G} )translateZ(`+u+"px)"+Q(c.matrixWorldInverse),y=(c.isPerspectiveCamera?"perspective("+u+"px) ":"")+m+"translate("+n+"px,"+i+"px)";r.camera.style!==y&&(g.style.transform=y,r.camera.style=y),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 C(l){return Math.abs(l)<1e-10?0:l}function Q(l){const c=l.elements;return"matrix3d("+C(c[0])+","+C(-c[1])+","+C(c[2])+","+C(c[3])+","+C(c[4])+","+C(-c[5])+","+C(c[6])+","+C(c[7])+","+C(c[8])+","+C(-c[9])+","+C(c[10])+","+C(c[11])+","+C(c[12])+","+C(-c[13])+","+C(c[14])+","+C(c[15])+")"}function h(l){const c=l.elements;return"translate(-50%,-50%)"+("matrix3d("+C(c[0])+","+C(c[1])+","+C(c[2])+","+C(c[3])+","+C(-c[4])+","+C(-c[5])+","+C(-c[6])+","+C(-c[7])+","+C(c[8])+","+C(c[9])+","+C(c[10])+","+C(c[11])+","+C(c[12])+","+C(c[13])+","+C(c[14])+","+C(c[15])+")")}function d(l,c,u,f){if(l.isCSS3DObject){const F=l.visible===!0&&l.layers.test(u.layers)===!0;if(l.element.style.display=F===!0?"":"none",F===!0){l.onBeforeRender(e,c,u);let G;l.isCSS3DSprite?(_.copy(u.matrixWorldInverse),_.transpose(),l.rotation2D!==0&&_.multiply(Os.makeRotationZ(l.rotation2D)),l.matrixWorld.decompose(nt,bs,it),_.setPosition(nt),_.scale(it),_.elements[3]=0,_.elements[7]=0,_.elements[11]=0,_.elements[15]=1,G=h(_)):G=h(l.matrixWorld);const m=l.element,M=r.objects.get(l);if(M===void 0||M.style!==G){m.style.transform=G;const y={style:G};r.objects.set(l,y)}m.parentNode!==g&&g.appendChild(m),l.onAfterRender(e,c,u)}}for(let F=0,G=l.children.length;F<G;F++)d(l.children[F],c,u)}}}var rA,SA,QA;class _e extends B.Mesh{constructor(e){super(new ks(e.width,e.height,1,e.segments,e.round||0),e.material);D(this,rA,void 0);D(this,SA,void 0);D(this,QA,()=>{E(this,rA).data.current&&E(this,SA)&&this.onCoverResize(E(this,rA).data.current)});p(this,rA,new Ke($({consumer:this},e))),p(this,SA,e.cover||!1),this.addEventListener("added",()=>{LA.windowResizer.subscribe(E(this,QA))}),this.addEventListener("removed",()=>{LA.windowResizer.unsubscribe(E(this,QA))}),E(this,rA).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,QA).call(this))})}get sourceManager(){return E(this,rA)}updateTexture(){E(this,QA).call(this)}onCoverResize(e){Oe(e,{x:this.scale.x,y:this.scale.y})}}rA=new WeakMap,SA=new WeakMap,QA=new WeakMap;const Ps=new B.TextureLoader;class Ys extends _e{constructor(A){super(ce($({},A),{loader:Ps}))}}class qs{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 ie,oe,re;class Xs extends _e{constructor(e){super(ce($({},e),{loader:new qs}));D(this,ie,void 0);D(this,oe,void 0);D(this,re,void 0);p(this,ie,e.autoplay||!1),p(this,oe,e.muted||!1),p(this,re,e.loop||!1),this.sourceManager.data.subscribe(s=>{if(s.current){const t=s.current.image;E(this,oe)&&(t.muted=!0),E(this,re)&&(t.loop=!0),E(this,ie)&&t.play()}})}onCoverResize(e){const s=e.image;Oe(e,{x:this.scale.x,y:this.scale.y},s.videoWidth/s.videoHeight)}}ie=new WeakMap,oe=new WeakMap,re=new WeakMap;function vs(I,A){I.traverse(e=>{e instanceof B.Mesh&&A(e)})}function Vs(I,A){I.traverse(e=>{e instanceof B.Mesh&&e.material&&(Array.isArray(e.material)?e.material:[e.material]).forEach(A)})}const He=new B.Vector3,Ws=new B.Vector3;function js(I){const{width:A,height:e}=w,s=A/e;I instanceof B.Vector3?He.copy(I):He.set(...I);const t=w.camera.getWorldPosition(Ws).distanceTo(He);if(w.camera instanceof B.OrthographicCamera)return{width:A/w.camera.zoom,height:e/w.camera.zoom,factor:1,distance:t,aspect:s};{const n=w.camera.fov*Math.PI/180,i=2*Math.tan(n/2)*t,r=i*(A/e);return{width:r,height:i,factor:A/r,distance:t,aspect:s}}}var q,de,Mt,Be,ae;const U=class U extends Ks{static destroy(){LA.windowResizer.unsubscribe(E(this,ae)),HA.ticker.unsubscribe(E(this,Be)),p(this,q,null)}constructor(A){var e;super(A.element),E(U,q)||IA(e=U,de,Mt).call(e)}};q=new WeakMap,de=new WeakSet,Mt=function(){p(U,q,new _s),E(U,q).domElement.style.cssText=`
8
+ `,E(this,nA).append(E(this,x).domElement),p(this,DA,new rt),p(this,EA,!0),LA.windowResizer.subscribe(E(this,jA),bA.RESIZE_ORDER.EN3),HA.ticker.subscribe(E(this,ZA),{order:bA.TICK_ORDER.EN3})}destroy(){if(!E(this,EA)){console.warn("[en3.setup]: You are trying to destory en3 but it has not been initialized.");return}E(this,iA).forEach(A=>{A.userData.box.destroy()}),LA.windowResizer.unsubscribe(E(this,jA)),HA.ticker.unsubscribe(E(this,ZA)),this.scene.clear(),be(this.scene),E(this,x).dispose(),E(this,x).domElement.remove(),p(this,x,null),E(this,DA).destroy(),p(this,EA,!1)}render(A,e){E(this,x).render(A,e)}}he=new WeakMap,nA=new WeakMap,x=new WeakMap,P=new WeakMap,fA=new WeakMap,DA=new WeakMap,iA=new WeakMap,b=new WeakMap,FA=new WeakMap,GA=new WeakMap,j=new WeakMap,Y=new WeakMap,pA=new WeakMap,vA=new WeakMap,VA=new WeakMap,EA=new WeakMap,le=new WeakSet,Bt=function(){E(this,VA)&&(E(this,b).calculate(),E(this,FA).calculate())},WA=new WeakSet,Te=function(){this.camera instanceof B.PerspectiveCamera?(this.camera.aspect=E(this,j)/E(this,Y),this.camera.fov=E(this,GA)==="auto"?2*Math.atan(E(this,Y)/2/E(this,b).getStepValue("_initial").z)*(180/Math.PI):E(this,GA)):this.camera instanceof B.OrthographicCamera&&(this.camera.left=E(this,j)/-2,this.camera.right=E(this,j)/2,this.camera.top=E(this,Y)/2,this.camera.bottom=E(this,Y)/-2),this.camera.updateProjectionMatrix()},jA=new WeakMap,ZA=new WeakMap;const w=new Nt;class kt{add(A,e){const s=n=>{n.isIntersecting&&(A.sourceManager.lazyLoad(),ve.intersector.unsubscribe(s))},t=Jt.getElement(e);if(t)return ve.intersector.subscribe(t,s)}}const bt=new kt,at=new B.TextureLoader;function We(I,A){if(A===B.TrianglesDrawMode)return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."),I;if(A===B.TriangleFanDrawMode||A===B.TriangleStripDrawMode){let e=I.getIndex();if(e===null){const i=[],r=I.getAttribute("position");if(r!==void 0){for(let o=0;o<r.count;o++)i.push(o);I.setIndex(i),e=I.getIndex()}else return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),I}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=I.clone();return n.setIndex(t),n.clearGroups(),n}else return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:",A),I}class Kt extends B.Loader{constructor(A){super(A),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(e){return new qt(e)}),this.register(function(e){return new As(e)}),this.register(function(e){return new es(e)}),this.register(function(e){return new ts(e)}),this.register(function(e){return new vt(e)}),this.register(function(e){return new Vt(e)}),this.register(function(e){return new Wt(e)}),this.register(function(e){return new jt(e)}),this.register(function(e){return new Yt(e)}),this.register(function(e){return new Zt(e)}),this.register(function(e){return new Xt(e)}),this.register(function(e){return new $t(e)}),this.register(function(e){return new zt(e)}),this.register(function(e){return new _t(e)}),this.register(function(e){return new ss(e)}),this.register(function(e){return new ns(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))===Ct){try{i[R.KHR_BINARY_GLTF]=new is(A)}catch(C){t&&t(C);return}n=JSON.parse(i[R.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 ds(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 C=this.pluginCallbacks[g](a);C.name||console.error("THREE.GLTFLoader: Invalid plugin found: missing name"),r[C.name]=C,i[C.name]=!0}if(n.extensionsUsed)for(let g=0;g<n.extensionsUsed.length;++g){const C=n.extensionsUsed[g],Q=n.extensionsRequired||[];switch(C){case R.KHR_MATERIALS_UNLIT:i[C]=new Pt;break;case R.KHR_DRACO_MESH_COMPRESSION:i[C]=new os(n,this.dracoLoader);break;case R.KHR_TEXTURE_TRANSFORM:i[C]=new rs;break;case R.KHR_MESH_QUANTIZATION:i[C]=new Bs;break;default:Q.indexOf(C)>=0&&r[C]===void 0&&console.warn('THREE.GLTFLoader: Unknown extension "'+C+'".')}}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 Ot(){let I={};return{get:function(A){return I[A]},add:function(A,e){I[A]=e},remove:function(A){delete I[A]},removeAll:function(){I={}}}}const 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 _t{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,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 C=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=C;break;case"spot":a=new B.SpotLight(g),a.distance=C,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,eA(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 Pt{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 Yt{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 qt{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 r=i.clearcoatNormalTexture.scale;e.clearcoatNormalScale=new B.Vector2(r,r)}return Promise.all(n)}}class Xt{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 vt{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 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 Vt{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 Wt{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 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 jt{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 Zt{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 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 zt{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 $t{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 As{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 es{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],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 ts{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],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 ss{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(r){const o=t.byteOffset||0,a=t.byteLength||0,g=t.count,C=t.byteStride,Q=new Uint8Array(r,o,a);return i.decodeGltfBufferAsync?i.decodeGltfBufferAsync(g,C,Q,t.mode,t.filter).then(function(h){return h.buffer}):i.ready.then(function(){const h=new ArrayBuffer(g*C);return i.decodeGltfBuffer(new Uint8Array(h),g,C,Q,t.mode,t.filter),h})})}else return null}}class ns{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 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(),C=g.isGroup?g.children:[g],Q=a[0].count,h=[];for(const d of C){const l=new B.Matrix4,c=new B.Vector3,u=new B.Quaternion,f=new B.Vector3(1,1,1),F=new B.InstancedMesh(d.geometry,d.material,Q);for(let G=0;G<Q;G++)o.TRANSLATION&&c.fromBufferAttribute(o.TRANSLATION,G),o.ROTATION&&u.fromBufferAttribute(o.ROTATION,G),o.SCALE&&f.fromBufferAttribute(o.SCALE,G),F.setMatrixAt(G,l.compose(c,u,f));for(const G in o)if(G==="_COLOR_0"){const m=o[G];F.instanceColor=new B.InstancedBufferAttribute(m.array,m.itemSize,m.normalized)}else G!=="TRANSLATION"&&G!=="ROTATION"&&G!=="SCALE"&&d.geometry.setAttribute(G,o[G]);B.Object3D.prototype.copy.call(F,d),this.parser.assignFinalMaterial(F),h.push(F)}return g.isGroup?(g.clear(),g.add(...h),g):h[0]}))}}const Ct="glTF",xA=12,je={JSON:1313821514,BIN:5130562};class is{constructor(A){this.name=R.KHR_BINARY_GLTF,this.content=null,this.body=null;const e=new DataView(A,0,xA),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!==Ct)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-xA,n=new DataView(A,xA);let i=0;for(;i<t;){const r=n.getUint32(i,!0);i+=4;const o=n.getUint32(i,!0);if(i+=4,o===je.JSON){const a=new Uint8Array(A,xA+i,r);this.content=s.decode(a)}else if(o===je.BIN){const a=xA+i;this.body=A.slice(a,a+r)}i+=r}if(this.content===null)throw new Error("THREE.GLTFLoader: JSON content not found.")}}class os{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,r={},o={},a={};for(const g in i){const C=Je[g]||g.toLowerCase();r[C]=i[g]}for(const g in A.attributes){const C=Je[g]||g.toLowerCase();if(i[g]!==void 0){const Q=s.accessors[A.attributes[g]],h=lA[Q.componentType];a[C]=h.name,o[C]=Q.normalized===!0}}return e.getDependency("bufferView",n).then(function(g){return new Promise(function(C,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)}C(h)},r,a,B.LinearSRGBColorSpace,Q)})})}}class rs{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 Bs{constructor(){this.name=R.KHR_MESH_QUANTIZATION}}class It 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,C=(s-e)/g,Q=C*C,h=Q*C,d=A*a,l=d-a,c=-2*h+3*Q,u=h-Q,f=1-c,F=u-Q+C;for(let G=0;G!==r;G++){const m=i[l+G+r],M=i[l+G+o]*g,y=i[d+G+r],O=i[d+G]*g;n[G]=f*m+F*M+c*y+u*O}return n}}const as=new B.Quaternion;class Cs extends It{interpolate_(A,e,s,t){const n=super.interpolate_(A,e,s,t);return as.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},lA={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},Ze={9728:B.NearestFilter,9729:B.LinearFilter,9984:B.NearestMipmapNearestFilter,9985:B.LinearMipmapNearestFilter,9986:B.NearestMipmapLinearFilter,9987:B.LinearMipmapLinearFilter},ze={33071:B.ClampToEdgeWrapping,33648:B.MirroredRepeatWrapping,10497:B.RepeatWrapping},De={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},Je={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"},AA={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},Is={CUBICSPLINE:void 0,LINEAR:B.InterpolateLinear,STEP:B.InterpolateDiscrete},Fe={OPAQUE:"OPAQUE",MASK:"MASK",BLEND:"BLEND"};function gs(I){return I.DefaultMaterial===void 0&&(I.DefaultMaterial=new B.MeshStandardMaterial({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:B.FrontSide})),I.DefaultMaterial}function gA(I,A,e){for(const s in e.extensions)I[s]===void 0&&(A.userData.gltfExtensions=A.userData.gltfExtensions||{},A.userData.gltfExtensions[s]=e.extensions[s])}function eA(I,A){A.extras!==void 0&&(typeof A.extras=="object"?Object.assign(I.userData,A.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+A.extras))}function Es(I,A,e){let s=!1,t=!1,n=!1;for(let a=0,g=A.length;a<g;a++){const C=A[a];if(C.POSITION!==void 0&&(s=!0),C.NORMAL!==void 0&&(t=!0),C.COLOR_0!==void 0&&(n=!0),s&&t&&n)break}if(!s&&!t&&!n)return Promise.resolve(I);const i=[],r=[],o=[];for(let a=0,g=A.length;a<g;a++){const C=A[a];if(s){const Q=C.POSITION!==void 0?e.getDependency("accessor",C.POSITION):I.attributes.position;i.push(Q)}if(t){const Q=C.NORMAL!==void 0?e.getDependency("accessor",C.NORMAL):I.attributes.normal;r.push(Q)}if(n){const Q=C.COLOR_0!==void 0?e.getDependency("accessor",C.COLOR_0):I.attributes.color;o.push(Q)}}return Promise.all([Promise.all(i),Promise.all(r),Promise.all(o)]).then(function(a){const g=a[0],C=a[1],Q=a[2];return s&&(I.morphAttributes.position=g),t&&(I.morphAttributes.normal=C),n&&(I.morphAttributes.color=Q),I.morphTargetsRelative=!0,I})}function cs(I,A){if(I.updateMorphTargets(),A.weights!==void 0)for(let e=0,s=A.weights.length;e<s;e++)I.morphTargetInfluences[e]=A.weights[e];if(A.extras&&Array.isArray(A.extras.targetNames)){const e=A.extras.targetNames;if(I.morphTargetInfluences.length===e.length){I.morphTargetDictionary={};for(let s=0,t=e.length;s<t;s++)I.morphTargetDictionary[e[s]]=s}else console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.")}}function Qs(I){let A;const e=I.extensions&&I.extensions[R.KHR_DRACO_MESH_COMPRESSION];if(e?A="draco:"+e.bufferView+":"+e.indices+":"+Ge(e.attributes):A=I.indices+":"+Ge(I.attributes)+":"+I.mode,I.targets!==void 0)for(let s=0,t=I.targets.length;s<t;s++)A+=":"+Ge(I.targets[s]);return A}function Ge(I){let A="";const e=Object.keys(I).sort();for(let s=0,t=e.length;s<t;s++)A+=e[s]+":"+I[e[s]]+";";return A}function Ue(I){switch(I){case Int8Array:return 1/127;case Uint8Array:return 1/255;case Int16Array:return 1/32767;case Uint16Array:return 1/65535;default:throw new Error("THREE.GLTFLoader: Unsupported normalized accessor component type.")}}function hs(I){return I.search(/\.jpe?g($|\?)/i)>0||I.search(/^data\:image\/jpeg/)===0?"image/jpeg":I.search(/\.webp($|\?)/i)>0||I.search(/^data\:image\/webp/)===0?"image/webp":"image/png"}const ls=new B.Matrix4;class ds{constructor(A={},e={}){this.json=A,this.extensions={},this.plugins={},this.options=e,this.cache=new Ot,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),eA(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[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=De[t.type],r=lA[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=De[t.type],a=lA[t.componentType],g=a.BYTES_PER_ELEMENT,C=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!==C){const u=Math.floor(Q/h),f="InterleavedBuffer:"+t.bufferView+":"+t.componentType+":"+u+":"+t.count;let F=e.cache.get(f);F||(l=new a(r,u*h,t.count*h/g),F=new B.InterleavedBuffer(l,h/g),e.cache.add(f,F)),c=new B.InterleavedBufferAttribute(F,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=De.SCALAR,f=lA[t.sparse.indices.componentType],F=t.sparse.indices.byteOffset||0,G=t.sparse.values.byteOffset||0,m=new f(i[1],F,t.sparse.count*u),M=new a(i[2],G,t.sparse.count*o);r!==null&&(c=new B.BufferAttribute(c.array.slice(),c.itemSize,c.normalized));for(let y=0,O=m.length;y<O;y++){const H=m[y];if(c.setX(H,M[y*o]),o>=2&&c.setY(H,M[y*o+1]),o>=3&&c.setZ(H,M[y*o+2]),o>=4&&c.setW(H,M[y*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=Ze[Q.magFilter]||B.LinearFilter,g.minFilter=Ze[Q.minFilter]||B.LinearMipmapLinearFilter,g.wrapS=ze[Q.wrapS]||B.RepeatWrapping,g.wrapT=ze[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(C=>C.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(C){a=!0;const Q=new Blob([C],{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(C){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(C,n.path),d,void 0,h)})}).then(function(C){return a===!0&&r.revokeObjectURL(o),C.userData.mimeType=i.mimeType||hs(i.uri),C}).catch(function(C){throw console.error("THREE.GLTFLoader: Couldn't load texture",o),C});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[R.KHR_TEXTURE_TRANSFORM]){const r=s.extensions!==void 0?s.extensions[R.KHR_TEXTURE_TRANSFORM]:void 0;if(r){const o=n.associations.get(i);i=n.extensions[R.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[R.KHR_MATERIALS_UNLIT]){const C=t[R.KHR_MATERIALS_UNLIT];i=C.getMaterialType(),a.push(C.extendParams(r,n,e))}else{const C=n.pbrMetallicRoughness||{};if(r.color=new B.Color(1,1,1),r.opacity=1,Array.isArray(C.baseColorFactor)){const Q=C.baseColorFactor;r.color.setRGB(Q[0],Q[1],Q[2],B.LinearSRGBColorSpace),r.opacity=Q[3]}C.baseColorTexture!==void 0&&a.push(e.assignTexture(r,"map",C.baseColorTexture,B.SRGBColorSpace)),r.metalness=C.metallicFactor!==void 0?C.metallicFactor:1,r.roughness=C.roughnessFactor!==void 0?C.roughnessFactor:1,C.metallicRoughnessTexture!==void 0&&(a.push(e.assignTexture(r,"metalnessMap",C.metallicRoughnessTexture)),a.push(e.assignTexture(r,"roughnessMap",C.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||Fe.OPAQUE;if(g===Fe.BLEND?(r.transparent=!0,r.depthWrite=!1):(r.transparent=!1,g===Fe.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 C=n.normalTexture.scale;r.normalScale.set(C,C)}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 C=n.emissiveFactor;r.emissive=new B.Color().setRGB(C[0],C[1],C[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 C=new i(r);return n.name&&(C.name=n.name),eA(C,n),e.associations.set(C,{materials:A}),n.extensions&&gA(t,C,n),C})}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[R.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(r,e).then(function(o){return $e(o,r,e)})}const i=[];for(let r=0,o=A.length;r<o;r++){const a=A[r],g=Qs(a),C=t[g];if(C)i.push(C.promise);else{let Q;a.extensions&&a.extensions[R.KHR_DRACO_MESH_COMPRESSION]?Q=n(a):Q=$e(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?gs(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],C=[];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=We(u.geometry,B.TriangleStripDrawMode):c.mode===k.TRIANGLE_FAN&&(u.geometry=We(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&&cs(u,n),u.name=e.createUniqueName(n.name||"mesh_"+A),eA(u,n),c.extensions&&gA(t,u,c),e.assignFinalMaterial(u),C.push(u)}for(let h=0,d=C.length;h<d;h++)e.associations.set(C[h],{meshes:A,primitives:h});if(C.length===1)return n.extensions&&gA(t,C[0],n),C[0];const Q=new B.Group;n.extensions&&gA(t,Q,n),e.associations.set(Q,{meshes:A});for(let h=0,d=C.length;h<d;h++)Q.add(C[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)),eA(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 C=i[a];if(C){r.push(C);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 C=0,Q=t.channels.length;C<Q;C++){const h=t.channels[C],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(C){const Q=C[0],h=C[1],d=C[2],l=C[3],c=C[4],u=[];for(let f=0,F=Q.length;f<F;f++){const G=Q[f],m=h[f],M=d[f],y=l[f],O=c[f];if(G===void 0)continue;G.updateMatrix&&G.updateMatrix();const H=s._createAnimationTracks(G,m,M,y,O);if(H)for(let v=0;v<H.length;v++)u.push(H[v])}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],C=a[1],Q=a[2];Q!==null&&g.traverse(function(h){h.isSkinnedMesh&&h.bind(Q,ls)});for(let h=0,d=C.length;h<d;h++)g.add(C[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 C=0,Q=a.length;C<Q;C++)g.add(a[C]);if(n.name&&(g.userData.name=n.name,g.name=i),eA(g,n),n.extensions&&gA(s,g,n),n.matrix!==void 0){const C=new B.Matrix4;C.fromArray(n.matrix),g.applyMatrix4(C)}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)),eA(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,C=o.length;g<C;g++)n.add(o[g]);const a=g=>{const C=new Map;for(const[Q,h]of t.associations)(Q instanceof B.Material||Q instanceof B.Texture)&&C.set(Q,h);return g.traverse(Q=>{const h=t.associations.get(Q);h!=null&&C.set(Q,h)}),C};return t.associations=a(n),n})}_createAnimationTracks(A,e,s,t,n){const i=[],r=A.name?A.name:A.uuid,o=[];AA[n.path]===AA.weights?A.traverse(function(Q){Q.morphTargetInfluences&&o.push(Q.name?Q.name:Q.uuid)}):o.push(r);let a;switch(AA[n.path]){case AA.weights:a=B.NumberKeyframeTrack;break;case AA.rotation:a=B.QuaternionKeyframeTrack;break;case AA.position:case AA.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?Is[t.interpolation]:B.InterpolateLinear,C=this._getArrayFromAccessor(s);for(let Q=0,h=o.length;Q<h;Q++){const d=new a(o[Q]+"."+AA[n.path],e.array,C,g);t.interpolation==="CUBICSPLINE"&&this._createCubicSplineTrackInterpolant(d),i.push(d)}return i}_getArrayFromAccessor(A){let e=A.array;if(A.normalized){const s=Ue(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?Cs:It;return new t(this.times,this.values,this.getValueSize()/3,s)},A.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0}}function us(I,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=Ue(lA[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 C=n[a];if(C.POSITION!==void 0){const Q=e.json.accessors[C.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=Ue(lA[Q.componentType]);o.multiplyScalar(l)}r.max(o)}else console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.")}}t.expandByVector(r)}I.boundingBox=t;const i=new B.Sphere;t.getCenter(i.center),i.radius=t.min.distanceTo(t.max)/2,I.boundingSphere=i}function $e(I,A,e){const s=A.attributes,t=[];function n(i,r){return e.getDependency("accessor",i).then(function(o){I.setAttribute(r,o)})}for(const i in s){const r=Je[i]||i.toLowerCase();r in I.attributes||t.push(n(s[i],r))}if(A.indices!==void 0&&!I.index){const i=e.getDependency("accessor",A.indices).then(function(r){I.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.`),eA(I,A),us(I,A,e),Promise.all(t).then(function(){return A.targets!==void 0?Es(I,A.targets,e):I})}const pe=new WeakMap;class fs 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(pe.has(A)){const o=pe.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)}),pe.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=Ds.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 Ds(){let I,A;onmessage=function(i){const r=i.data;switch(r.type){case"init":I=r.decoderConfig,A=new Promise(function(g){I.onModuleLoaded=function(C){g({draco:C})},DracoDecoderModule(I)});break;case"decode":const o=r.buffer,a=r.taskConfig;A.then(g=>{const C=g.draco,Q=new C.Decoder;try{const h=e(C,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{C.destroy(Q)}});break}};function e(i,r,o,a){const g=a.attributeIDs,C=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[C[c]];let f,F;if(a.useUniqueIDs)F=g[c],f=r.GetAttributeByUniqueId(Q,F);else{if(F=r.GetAttributeId(Q,i[g[c]]),F===-1)continue;f=r.GetAttribute(Q,F)}const G=t(i,r,Q,c,u,f);c==="color"&&(G.vertexColorSpace=a.vertexColorSpace),l.attributes.push(G)}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,C=g*4,Q=i._malloc(C);r.GetTrianglesUInt32Array(o,C,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,C){const Q=C.num_components(),d=o.num_points()*Q,l=d*g.BYTES_PER_ELEMENT,c=n(i,g),u=i._malloc(l);r.GetAttributeDataArrayForAllPoints(o,C,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 Fs{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 Gs=0,At=2,ps=1,et=2,Rs=0,ms=1,Ms=10,ws=0,gt=9,Et=15,ct=16,Qt=22,ht=37,lt=43,dt=76,ut=83,ft=97,Dt=100,Ft=103,Gt=109,pt=165,Rt=166;class ys{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 NA{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 L=[171,75,84,88,32,50,48,187,13,10,26,10];function tt(I){return typeof TextDecoder!="undefined"?new TextDecoder().decode(I):Buffer.from(I).toString("utf8")}function Ss(I){const A=new Uint8Array(I.buffer,I.byteOffset,L.length);if(A[0]!==L[0]||A[1]!==L[1]||A[2]!==L[2]||A[3]!==L[3]||A[4]!==L[4]||A[5]!==L[5]||A[6]!==L[6]||A[7]!==L[7]||A[8]!==L[8]||A[9]!==L[9]||A[10]!==L[10]||A[11]!==L[11])throw new Error("Missing KTX 2.0 identifier.");const e=new ys,s=17*Uint32Array.BYTES_PER_ELEMENT,t=new NA(I,L.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(),C=t._nextUint64(),Q=new NA(I,L.length+s,3*n*8,!0);for(let S=0;S<n;S++)e.levels.push({levelData:new Uint8Array(I.buffer,I.byteOffset+Q._nextUint64(),Q._nextUint64()),uncompressedByteLength:Q._nextUint64()});const h=new NA(I,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 S=0;S<l;S++){const J={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&J.channelType?(J.sampleLower=h._nextInt32(),J.sampleUpper=h._nextInt32()):(J.sampleLower=h._nextUint32(),J.sampleUpper=h._nextUint32()),d.samples[S]=J}e.dataFormatDescriptor.length=0,e.dataFormatDescriptor.push(d);const c=new NA(I,o,a,!0);for(;c._offset<a;){const S=c._nextUint32(),J=c._scan(S),JA=tt(J),V=c._scan(S-J.byteLength);e.keyValue[JA]=JA.match(/^ktx/i)?tt(V):V,c._offset%4&&c._skip(4-c._offset%4)}if(C<=0)return e;const u=new NA(I,g,C,!0),f=u._nextUint16(),F=u._nextUint16(),G=u._nextUint32(),m=u._nextUint32(),M=u._nextUint32(),y=u._nextUint32(),O=[];for(let S=0;S<n;S++)O.push({imageFlags:u._nextUint32(),rgbSliceByteOffset:u._nextUint32(),rgbSliceByteLength:u._nextUint32(),alphaSliceByteOffset:u._nextUint32(),alphaSliceByteLength:u._nextUint32()});const H=g+u._offset,v=H+G,TA=v+m,Ie=TA+M,CA=new Uint8Array(I.buffer,I.byteOffset+H,G),ge=new Uint8Array(I.buffer,I.byteOffset+v,m),z=new Uint8Array(I.buffer,I.byteOffset+TA,M),Ee=new Uint8Array(I.buffer,I.byteOffset+Ie,y);return e.globalData={endpointCount:f,selectorCount:F,imageDescs:O,endpointsData:CA,selectorsData:ge,tablesData:z,extendedData:Ee},e}let Re,W,xe;const me={env:{emscripten_notify_memory_growth:function(I){xe=new Uint8Array(W.exports.memory.buffer)}}};class Ls{init(){return Re||(Re=typeof fetch!="undefined"?fetch("data:application/wasm;base64,"+st).then(A=>A.arrayBuffer()).then(A=>WebAssembly.instantiate(A,me)).then(this._init):WebAssembly.instantiate(Buffer.from(st,"base64"),me).then(this._init),Re)}_init(A){W=A.instance,me.env.emscripten_notify_memory_growth(0)}decode(A,e=0){if(!W)throw new Error("ZSTDDecoder: Await .init() before decoding.");const s=A.byteLength,t=W.exports.malloc(s);xe.set(A,t),e=e||Number(W.exports.ZSTD_findDecompressedSize(t,s));const n=W.exports.malloc(e),i=W.exports.ZSTD_decompress(n,e,t,s),r=xe.slice(n,n+i);return W.exports.free(t),W.exports.free(n),r}}const st="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IAMNACAEQQNxBEADQCACRQ0FIAAgAkF/aiICaiIDIAEgAmotAAA6AAAgA0EDcQ0ACwsgAkEDTQ0AA0AgACACQXxqIgJqIAEgAmooAgA2AgAgAkEDSw0ACwsgAkUNAgNAIAAgAkF/aiICaiABIAJqLQAAOgAAIAINAAsMAgsgAkEDTQ0AIAIhBANAIAMgASgCADYCACABQQRqIQEgA0EEaiEDIARBfGoiBEEDSw0ACyACQQNxIQILIAJFDQADQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQX9qIgINAAsLIAAL8wICAn8BfgJAIAJFDQAgACACaiIDQX9qIAE6AAAgACABOgAAIAJBA0kNACADQX5qIAE6AAAgACABOgABIANBfWogAToAACAAIAE6AAIgAkEHSQ0AIANBfGogAToAACAAIAE6AAMgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBfGogATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQXhqIAE2AgAgAkF0aiABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkFwaiABNgIAIAJBbGogATYCACACQWhqIAE2AgAgAkFkaiABNgIAIAQgA0EEcUEYciIEayICQSBJDQAgAa0iBUIghiAFhCEFIAMgBGohAQNAIAEgBTcDGCABIAU3AxAgASAFNwMIIAEgBTcDACABQSBqIQEgAkFgaiICQR9LDQALCyAACy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAIajYCACADCy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAFajYCACADCx8AIAAgASACKAIEEAg2AgAgARAEGiAAIAJBCGo2AgQLCAAgAGdBH3MLugUBDX8jAEEQayIKJAACfyAEQQNNBEAgCkEANgIMIApBDGogAyAEEAsaIAAgASACIApBDGpBBBAVIgBBbCAAEAMbIAAgACAESxsMAQsgAEEAIAEoAgBBAXRBAmoQECENQVQgAygAACIGQQ9xIgBBCksNABogAiAAQQVqNgIAIAMgBGoiAkF8aiEMIAJBeWohDiACQXtqIRAgAEEGaiELQQQh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ASIDNgLE4AEgACgCvOABIQQgACABNgK84AEgACABIAJqNgK44AEgACABIAQgA2tqNgLA4AELpgEBAX8gACAAKALs4QEQFjYCyOABIABCADcD+OABIABCADcDuOABIABBwOABakIANwMAIABBqNAAaiIBQYyAgOAANgIAIABBADYCmOIBIABCADcDiOEBIABCAzcDgOEBIABBrNABakHgEikCADcCACAAQbTQAWpB6BIoAgA2AgAgACABNgIMIAAgAEGYIGo2AgggACAAQaAwajYCBCAAIABBEGo2AgALYQEBf0G4fyEDAkAgAUEDSQ0AIAIgABAhIgFBA3YiADYCCCACIAFBAXE2AgQgAiABQQF2QQNxIgM2AgACQCADQX9qIgFBAksNAAJAIAFBAWsOAgEAAgtBbA8LIAAhAwsgAwsMACAAIAEgAkEAEC4LiAQCA38CfiADEBYhBCAAQQBBKBAQIQAgBCACSwRAIAQPCyABRQRAQX8PCwJAAkAgA0EBRg0AIAEoAAAiBkGo6r5pRg0AQXYhAyAGQXBxQdDUtMIBRw0BQQghAyACQQhJDQEgAEEAQSgQECEAIAEoAAQhASAAQQE2AhQgACABrTcDAEEADwsgASACIAMQLyIDIAJLDQAgACADNgIYQXIhAyABIARqIgVBf2otAAAiAkEIcQ0AIAJBIHEiBkUEQEFwIQMgBS0AACIFQacBSw0BIAVBB3GtQgEgBUEDdkEKaq2GIgdCA4h+IAd8IQggBEEBaiEECyACQQZ2IQMgAkECdiEFAkAgAkEDcUF/aiICQQJLBEBBACECDAELAkACQAJAIAJBAWsOAgECAAsgASAEai0AACECIARBAWohBAwCCyABIARqLwAAIQIgBEECaiEEDAELIAEgBGooAAAhAiAEQQRqIQQLIAVBAXEhBQJ+AkACQAJAIANBf2oiA0ECTQRAIANBAWsOAgIDAQtCfyAGRQ0DGiABIARqMQAADAMLIAEgBGovAACtQoACfAwCCyABIARqKAAArQwBCyABIARqKQAACyEHIAAgBTYCICAAIAI2AhwgACAHNwMAQQAhAyAAQQA2AhQgACAHIAggBhsiBzcDCCAAIAdCgIAIIAdCgIAIVBs+AhALIAMLWwEBf0G4fyEDIAIQFiICIAFNBH8gACACakF/ai0AACIAQQNxQQJ0QaAeaigC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C0Egak8NAQsgByAHKQNoNwMQIAcgBykDYDcDCCAEIA0gB0EIaiAHQdwAaiAPIA4gESAQEB4hCwwBCyACIARqIQggBCAKEAcgAkERTwRAIARBEGohAgNAIAIgCkEQaiIKEAcgAkEQaiICIAhJDQALCyAIIAlrIQIgByATNgJcIAkgCCAOa0sEQCAJIAggEWtLBEBBbCELDAILIBAgAiAOayICaiIKIANqIBBNBEAgCCAKIAMQDxoMAgsgCCAKQQAgAmsQDyEIIAcgAiADaiIDNgJkIAggAmshCCAOIQILIAlBEE8EQCADIAhqIQMDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALDAELAkAgCUEHTQRAIAggAi0AADoAACAIIAItAAE6AAEgCCACLQACOgACIAggAi0AAzoAAyAIQQRqIAIgCUECdCIDQcAeaigCAGoiAhAXIAIgA0HgHmooAgBrIQIgBygCZCEDDAELIAggAhAMCyADQQlJDQAgAyAIaiEDIAhBCGoiCCACQQhqIgJrQQ9MBEADQCAIIAIQDCACQQhqIQIgCEEIaiIIIANJDQAMAgALAAsDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALCyAHQRhqEAQaIAsgDCALEAMiAhshDCAEIAQgC2ogAhshBCAFQX9qIgUNAAsgDBADDQFBbCEMIAdBGGoQBEECSQ0BQQAhCANAIAhBA0cEQCAAIAhBAnQiAmpBrNABaiACIAdqKAJENgIAIAhBAWohCAwBCwsgBygCXCEIC0G6fyEMIA8gCGsiACANIARrSw0AIAQEfyAEIAggABALIABqBUEACyABayEMCyAHQfAAaiQAIAwLkRcCFn8FfiMAQdABayIHJAAgByAAKALw4QEiCDYCvAEgASACaiESIAggACgCgOIBaiETAkACQCAFRQRAIAEhAwwBCyAAKALE4AEhESAAKALA4AEhFSAAKAK84AEhDyAAQQE2AozhAUEAIQgDQCAIQQNHBEAgByAIQQJ0IgJqIAAgAmpBrNABaigCADYCVCAIQQFqIQgMAQsLIAcgETYCZCAHIA82AmAgByABIA9rNgJoQWwhECAHQShqIAMgBBAGEAMNASAFQQQgBUEESBshFyAHQTxqIAdBKGogACgCABATIAdBxABqIAdBKGogACgCCBATIAdBzABqIAdBKGogACgCBBATQQAhBCAHQeAAaiEMIAdB5ABqIQoDQCAHQShqEARBAksgBCAXTnJFBEAgBygCQCAHKAI8QQN0aikCACIdQhCIp0H/AXEhCyAHKAJQIAcoAkxBA3RqKQIAIh5CEIinQf8BcSEJIAcoAkggBygCREEDdGopAgAiH0IgiKchCCAeQiCIISAgHUIgiKchAgJAIB9CEIinQf8BcSIDQQJPBEACQCAGRSADQRlJckUEQCAIIAdBKGogA0EgIAcoAixrIg0gDSADSxsiDRAFIAMgDWsiA3RqIQggB0EoahAEGiADRQ0BIAdBKGogAxAFIAhqIQgMAQsgB0EoaiADEAUgCGohCCAHQShqEAQaCyAHKQJUISEgByAINgJUIAcgITcDWAwBCwJAIANFBEAgAgRAIAcoAlQhCAwDCyAHKAJYIQgMAQsCQAJAIAdBKGpBARAFIAggAkVqaiIDQQNGBEAgBygCVEF/aiIDIANFaiEIDAELIANBAnQgB2ooAlQiCCAIRWohCCADQQFGDQELIAcgBygCWDYCXAsLIAcgBygCVDYCWCAHIAg2AlQLICCnIQMgCQRAIAdBKGogCRAFIANqIQMLIAkgC2pBFE8EQCAHQShqEAQaCyALBEAgB0EoaiALEAUgAmohAgsgB0EoahAEGiAHIAcoAmggAmoiCSADajYCaCAKIAwgCCAJSxsoAgAhDSAHIAdBKGogHUIYiKdB/wFxEAggHadB//8DcWo2AjwgByAHQShqIB5CGIinQf8BcRAIIB6nQf//A3FqNgJMIAdBKGoQBBogB0EoaiAfQhiIp0H/AXEQCCEOIAdB8ABqIARBBHRqIgsgCSANaiAIazYCDCALIAg2AgggCyADNgIEIAsgAjYCACAHIA4gH6dB//8DcWo2AkQgBEEBaiEEDAELCyAEIBdIDQEgEkFgaiEYIAdB4ABqIRogB0HkAGohGyABIQMDQCAHQShqEARBAksgBCAFTnJFBEAgBygCQCAHKAI8QQN0aikCACIdQhCIp0H/AXEhCyAHKAJQIAcoAkxBA3RqKQIAIh5CEIinQf8BcSEIIAcoAkggBygCREEDdGopAgAiH0IgiKchCSAeQiCIISAgHUIgiKchDAJAIB9CEIinQf8BcSICQQJPBEACQCAGRSACQRlJckUEQCAJIAdBKGogAkEgIAcoAixrIgogCiACSxsiChAFIAIgCmsiAnRqIQkgB0EoahAEGiACRQ0BIAdBKGogAhAFIAlqIQkMAQsgB0EoaiACEAUgCWohCSAHQShqEAQaCyAHKQJUISEgByAJNgJUIAcgITcDWAwBCwJAIAJFBEAgDARAIAcoAlQhCQwDCyAHKAJYIQkMAQsCQAJAIAdBKGpBARAFIAkgDEVqaiICQQNGBEAgBygCVEF/aiICIAJFaiEJDAELIAJBAnQgB2ooAlQiCSAJRWohCSACQQFGDQELIAcgBygCWDYCXAsLIAcgBygCVDYCWCAHIAk2AlQLICCnIRQgCARAIAdBKGogCBAFIBRqIRQLIAggC2pBFE8EQCAHQShqEAQaCyALBEAgB0EoaiALEAUgDGohDAsgB0EoahAEGiAHIAcoAmggDGoiGSAUajYCaCAbIBogCSAZSxsoAgAhHCAHIAdBKGogHUIYiKdB/wFxEAggHadB//8DcWo2AjwgByAHQShqIB5CGIinQf8BcRAIIB6nQf//A3FqNgJMIAdBKGoQBBogByAHQShqIB9CGIinQf8BcRAIIB+nQf//A3FqNgJEIAcgB0HwAGogBEEDcUEEdGoiDSkDCCIdNwPIASAHIA0pAwAiHjcDwAECQAJAAkAgBygCvAEiDiAepyICaiIWIBNLDQAgAyAHKALEASIKIAJqIgtqIBhLDQAgEiADayALQSBqTw0BCyAHIAcpA8gBNwMQIAcgBykDwAE3AwggAyASIAdBCGogB0G8AWogEyAPIBUgERAeIQsMAQsgAiADaiEIIAMgDhAHIAJBEU8EQCADQRBqIQIDQCACIA5BEGoiDhAHIAJBEGoiAiAISQ0ACwsgCCAdpyIOayECIAcgFjYCvAEgDiAIIA9rSwRAIA4gCCAVa0sEQEFsIQsMAgsgESACIA9rIgJqIhYgCmogEU0EQCAIIBYgChAPGgwCCyAIIBZBACACaxAPIQggByACIApqIgo2AsQBIAggAmshCCAPIQILIA5BEE8EQCAIIApqIQoDQCAIIAIQByACQRBqIQIgCEEQaiIIIApJDQALDAELAkAgDkEHTQRAIAggAi0AADoAACAIIAItAAE6AAEgCCACLQACOgACIAggAi0AAzoAAyAIQQRqIAIgDkECdCIKQcAeaigCAGoiAhAXIAIgCkHgHmooAgBrIQIgBygCxAEhCgwBCyAIIAIQDAsgCkEJSQ0AIAggCmohCiAIQQhqIgggAkEIaiICa0EPTARAA0AgCCACEAwgAkEIaiECIAhBCGoiCCAKSQ0ADAIACwALA0AgCCACEAcgAkEQaiECIAhBEGoiCCAKSQ0ACwsgCxADBEAgCyEQDAQFIA0gDDYCACANIBkgHGogCWs2AgwgDSAJNgIIIA0gFDYCBCAEQQFqIQQgAyALaiEDDAILAAsLIAQgBUgNASAEIBdrIQtBACEEA0AgCyAFSARAIAcgB0HwAGogC0EDcUEEdGoiAikDCCIdNwPIASAHIAIpAwAiHjcDwAECQAJAAkAgBygCvAEiDCAepyICaiIKIBNLDQAgAyAHKALEASIJIAJqIhBqIBhLDQAgEiADayAQQSBqTw0BCyAHIAcpA8gBNwMgIAcgBykDwAE3AxggAyASIAdBGGogB0G8AWogEyAPIBUgERAeIRAMAQsgAiADaiEIIAMgDBAHIAJBEU8EQCADQRBqIQIDQCACIAxBEGoiDBAHIAJBEGoiAiAISQ0ACwsgCCAdpyIGayECIAcgCjYCvAEgBiAIIA9rSwRAIAYgCCAVa0sEQEFsIRAMAgsgESACIA9rIgJqIgwgCWogEU0EQCAIIAwgCRAPGgwCCyAIIAxBACACaxAPIQggByACIAlqIgk2AsQBIAggAmshCCAPIQILIAZBEE8EQCAIIAlqIQYDQCAIIAIQByACQRBqIQIgCEEQaiIIIAZJDQALDAELAkAgBkEHTQRAIAggAi0AADoAACAIIAItAAE6AAEgCCACLQACOgACIAggAi0AAzoAAyAIQQRqIAIgBkECdCIGQcAeaigCAGoiAhAXIAIgBkHgHmooAgBrIQIgBygCxAEhCQwBCyAIIAIQDAsgCUEJSQ0AIAggCWohBiAIQQhqIgggAkEIaiICa0EPTARAA0AgCCACEAwgAkEIaiECIAhBCGoiCCAGSQ0ADAIACwALA0AgCCACEAcgAkEQaiECIAhBEGoiCCAGSQ0ACwsgEBADDQMgC0EBaiELIAMgEGohAwwBCwsDQCAEQQNHBEAgACAEQQJ0IgJqQazQAWogAiAHaigCVDYCACAEQQFqIQQMAQsLIAcoArwBIQgLQbp/IRAgEyAIayIAIBIgA2tLDQAgAwR/IAMgCCAAEAsgAGoFQQALIAFrIRALIAdB0AFqJAAgEAslACAAQgA3AgAgAEEAOwEIIABBADoACyAAIAE2AgwgACACOgAKC7QFAQN/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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",Me=new WeakMap;let we=0,ye;class X extends B.Loader{constructor(A){super(A),this.transcoderPath="",this.transcoderBinary=null,this.transcoderPending=null,this.workerPool=new Fs,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=X.BasisWorker.toString(),o=["/* constants */","let _EngineFormat = "+JSON.stringify(X.EngineFormat),"let _TranscoderFormat = "+JSON.stringify(X.TranscoderFormat),"let _BasisFormat = "+JSON.stringify(X.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})}),we>0&&console.warn("THREE.KTX2Loader: Multiple active KTX2 loaders may cause performance issues. Use a single KTX2Loader instance, or call .dispose() on old instances."),we++}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(Me.has(i))return Me.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 C=s[0].mipmaps;g=e.layerCount>1?new B.CompressedArrayTexture(C,t,n,e.layerCount,i,B.UnsignedByteType):new B.CompressedTexture(C,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=mt(e),g.premultiplyAlpha=!!(a&ps),g}_createTexture(s){return UA(this,arguments,function*(A,e={}){const t=Ss(new Uint8Array(A));if(t.vkFormat!==ws)return Ts(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 Me.set(A,{promise:i}),i})}dispose(){return this.workerPool.dispose(),this.workerSourceURL&&URL.revokeObjectURL(this.workerSourceURL),we--,this}}X.BasisFormat={ETC1S:0,UASTC_4x4:1};X.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};X.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};X.BasisWorker=function(){let I,A,e;const s=_EngineFormat,t=_TranscoderFormat,n=_BasisFormat;self.addEventListener("message",function(d){const l=d.data;switch(l.type){case"init":I=l.config,i(l.transcoderBinary);break;case"transcode":A.then(()=>{try{const{faces:c,buffers:u,width:f,height:F,hasAlpha:G,format:m,dfdFlags:M}=r(l.buffer);self.postMessage({type:"transcode",id:l.id,faces:c,width:f,height:F,hasAlpha:G,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(),F=l.getHeight(),G=l.getLayers()||1,m=l.getLevels(),M=l.getFaces(),y=l.getHasAlpha(),O=l.getDFDFlags(),{transcoderFormat:H,engineFormat:v}=C(u,f,F,y);if(!f||!F||!m)throw c(),new Error("THREE.KTX2Loader: Invalid texture");if(!l.startTranscoding())throw c(),new Error("THREE.KTX2Loader: .startTranscoding failed");const TA=[],Ie=[];for(let CA=0;CA<M;CA++){const ge=[];for(let z=0;z<m;z++){const Ee=[];let S,J;for(let V=0;V<G;V++){const hA=l.getImageLevelInfo(z,V,CA);CA===0&&z===0&&V===0&&(hA.origWidth%4!==0||hA.origHeight%4!==0)&&console.warn("THREE.KTX2Loader: ETC1S and UASTC textures should use multiple-of-four dimensions."),m>1?(S=hA.origWidth,J=hA.origHeight):(S=hA.width,J=hA.height);const Pe=new Uint8Array(l.getImageTranscodedSizeInBytes(z,V,0,H));if(!l.transcodeImage(Pe,z,V,CA,H,0,-1,-1))throw c(),new Error("THREE.KTX2Loader: .transcodeImage failed.");Ee.push(Pe)}const JA=h(Ee);ge.push({data:JA,width:S,height:J}),Ie.push(JA.buffer)}TA.push({mipmaps:ge,width:f,height:F,format:v})}return c(),{faces:TA,buffers:Ie,width:f,height:F,hasAlpha:y,format:v,dfdFlags:O}}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 C(d,l,c,u){let f,F;const G=d===n.ETC1S?a:g;for(let m=0;m<G.length;m++){const M=G[m];if(I[M.if]&&M.basisFormat.includes(d)&&!(u&&M.transcoderFormat.length<2)&&!(M.needsPowerOfTwo&&!(Q(l)&&Q(c))))return f=M.transcoderFormat[u?1:0],F=M.engineFormat[u?1:0],{transcoderFormat:f,engineFormat:F}}return console.warn("THREE.KTX2Loader: No suitable compressed texture format found. Decoding to RGBA32."),f=t.RGBA32,F=s.RGBAFormat,{transcoderFormat:f,engineFormat:F}}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 F=d[f];l+=F.byteLength}const c=new Uint8Array(l);let u=0;for(let f=0;f<d.length;f++){const F=d[f];c.set(F,u),u+=F.byteLength}return c}};const Hs=new Set([B.RGBAFormat,B.RGFormat,B.RedFormat]),Se={[Gt]:B.RGBAFormat,[ft]:B.RGBAFormat,[ht]:B.RGBAFormat,[lt]:B.RGBAFormat,[Ft]:B.RGFormat,[ut]:B.RGFormat,[ct]:B.RGFormat,[Qt]:B.RGFormat,[Dt]:B.RedFormat,[dt]:B.RedFormat,[Et]:B.RedFormat,[gt]:B.RedFormat,[Rt]:B.RGBA_ASTC_6x6_Format,[pt]:B.RGBA_ASTC_6x6_Format},Le={[Gt]:B.FloatType,[ft]:B.HalfFloatType,[ht]:B.UnsignedByteType,[lt]:B.UnsignedByteType,[Ft]:B.FloatType,[ut]:B.HalfFloatType,[ct]:B.UnsignedByteType,[Qt]:B.UnsignedByteType,[Dt]:B.FloatType,[dt]:B.HalfFloatType,[Et]:B.UnsignedByteType,[gt]:B.UnsignedByteType,[Rt]:B.UnsignedByteType,[pt]:B.UnsignedByteType};function Ts(I){return UA(this,null,function*(){const{vkFormat:A}=I;if(Se[A]===void 0)throw new Error("THREE.KTX2Loader: Unsupported vkFormat.");let e;I.supercompressionScheme===At&&(ye||(ye=new Promise(n=>UA(this,null,function*(){const i=new Ls;yield i.init(),n(i)}))),e=yield ye);const s=[];for(let n=0;n<I.levels.length;n++){const i=Math.max(1,I.pixelWidth>>n),r=Math.max(1,I.pixelHeight>>n),o=I.pixelDepth?Math.max(1,I.pixelDepth>>n):0,a=I.levels[n];let g;if(I.supercompressionScheme===Gs)g=a.levelData;else if(I.supercompressionScheme===At)g=e.decode(a.levelData,a.uncompressedByteLength);else throw new Error("THREE.KTX2Loader: Unsupported supercompressionScheme.");let C;Le[A]===B.FloatType?C=new Float32Array(g.buffer,g.byteOffset,g.byteLength/Float32Array.BYTES_PER_ELEMENT):Le[A]===B.HalfFloatType?C=new Uint16Array(g.buffer,g.byteOffset,g.byteLength/Uint16Array.BYTES_PER_ELEMENT):C=g,s.push({data:C,width:i,height:r,depth:o})}let t;if(Hs.has(Se[A]))t=I.pixelDepth===0?new B.DataTexture(s[0].data,I.pixelWidth,I.pixelHeight):new B.Data3DTexture(s[0].data,I.pixelWidth,I.pixelHeight,I.pixelDepth);else{if(I.pixelDepth>0)throw new Error("THREE.KTX2Loader: Unsupported pixelDepth.");t=new B.CompressedTexture(s,I.pixelWidth,I.pixelHeight)}return t.mipmaps=s,t.type=Le[A],t.format=Se[A],t.colorSpace=mt(I),t.needsUpdate=!0,Promise.resolve(t)})}function mt(I){const A=I.dataFormatDescriptor[0];return A.colorPrimaries===ms?A.transferFunction===et?B.SRGBColorSpace:B.LinearSRGBColorSpace:A.colorPrimaries===Ms?A.transferFunction===et?B.DisplayP3ColorSpace:B.LinearDisplayP3ColorSpace:(A.colorPrimaries===Rs||console.warn(`THREE.KTX2Loader: Unsupported color primaries, "${A.colorPrimaries}"`),B.NoColorSpace)}let Qe;const Js=()=>{if(Qe)return Qe;const I="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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=I;WebAssembly.validate(e)&&(t=A);let n;const i=WebAssembly.instantiate(r(t),{}).then(C=>{n=C.instance,n.exports.__wasm_call_ctors()});function r(C){const Q=new Uint8Array(C.length);for(let d=0;d<C.length;++d){const l=C.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<C.length;++d)Q[h++]=Q[d]<60?s[Q[d]]:(Q[d]-60)*64+Q[++d];return Q.buffer.slice(0,h)}function o(C,Q,h,d,l,c){const u=n.exports.sbrk,f=h+3&-4,F=u(f*d),G=u(l.length),m=new Uint8Array(n.exports.memory.buffer);m.set(l,G);const M=C(F,h,d,G,l.length);if(M===0&&c&&c(F,f,d),Q.set(m.subarray(F,F+h*d)),u(F-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 Qe={ready:i,supported:!0,decodeVertexBuffer(C,Q,h,d,l){o(n.exports.meshopt_decodeVertexBuffer,C,Q,h,d,n.exports[a[l]])},decodeIndexBuffer(C,Q,h,d){o(n.exports.meshopt_decodeIndexBuffer,C,Q,h,d)},decodeIndexSequence(C,Q,h,d){o(n.exports.meshopt_decodeIndexSequence,C,Q,h,d)},decodeGltfBuffer(C,Q,h,d,l,c){o(n.exports[g[l]],C,Q,h,d,n.exports[a[c]])}},Qe};var RA,zA,$A,Ae;class Us{constructor(){D(this,RA,new Kt);D(this,zA,new fs().setDecoderPath(`${w.CDNVersion}/examples/jsm/libs/draco/gltf/`));D(this,$A,new X().setTranscoderPath(`${w.CDNVersion}/examples/jsm/libs/basis/`));D(this,Ae,!1);E(this,RA).setCrossOrigin("anonymous").setDRACOLoader(E(this,zA)).setMeshoptDecoder(Js)}get gltfLoader(){return E(this,RA)}get dracoLoader(){return E(this,zA)}get ktx2Loader(){return E(this,$A)}load(...A){E(this,Ae)||(E(this,RA).setKTX2Loader(E(this,$A).detectSupport(w.webglRenderer)),p(this,Ae,!0)),this.gltfLoader.load(...A)}}RA=new WeakMap,zA=new WeakMap,$A=new WeakMap,Ae=new WeakMap;const Mt=new Us;var K,Z,ee;class xs{constructor(A,e=1){D(this,K,null);D(this,Z,[]);D(this,ee,()=>{const A=E(this,K).position.x,e=E(this,K).position.y;E(this,Z)[0].constant=E(this,K).scale.y/2+e*-1,E(this,Z)[1].constant=E(this,K).scale.y/2+e,E(this,Z)[2].constant=E(this,K).scale.x/2+A,E(this,Z)[3].constant=E(this,K).scale.x/2+A*-1});p(this,K,new ot.LayoutBox(A,{cartesian:!1})),p(this,Z,[new B.Plane(new B.Vector3(0,-1*e,0)),new B.Plane(new B.Vector3(0,1*e,0)),new B.Plane(new B.Vector3(-1*e,0,0)),new B.Plane(new B.Vector3(1*e,0,0))]),HA.ticker.subscribe(E(this,ee),{order:bA.TICK_ORDER.LAYOUT_BOX})}get planes(){return E(this,Z)}get layoutBox(){return E(this,K)}destroy(){HA.ticker.unsubscribe(E(this,ee)),E(this,K).destroy()}}K=new WeakMap,Z=new WeakMap,ee=new WeakMap;class Ns 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,cA,MA,te,se,oA,wA,ne;class Ke extends Ut.SourceManager{constructor(e){super(e);D(this,mA,new Ve.Store(null));D(this,cA,new Ve.Store(void 0));D(this,MA,void 0);D(this,te,void 0);D(this,se,void 0);D(this,oA,void 0);D(this,wA,!1);D(this,ne,()=>{if(!(E(this,oA)&&!E(this,wA))&&(this.current!==this.previous&&(E(this,mA).current=null),this.current)){const e=E(this,se)?this.current.url:this.current.name+this.current.extension;E(this,oA)||fe.loading.setTotal(e,1),E(this,cA).current="start",E(this,te).load(e,s=>{E(this,mA).current=s,E(this,cA).current="complete",E(this,oA)||fe.loading.setLoaded(e,1)},void 0,()=>{E(this,oA)||(E(this,cA).current="error",fe.loading.setError(e,e))})}});p(this,MA,e.consumer),p(this,te,e.loader),p(this,se,e.keepSourceParameters||!1),p(this,oA,e.lazy||!1),this.subscribe(E(this,ne)),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,cA)}lazyLoad(){E(this,wA)||(p(this,wA,!0),E(this,ne).call(this))}}mA=new WeakMap,cA=new WeakMap,MA=new WeakMap,te=new WeakMap,se=new WeakMap,oA=new WeakMap,wA=new WeakMap,ne=new WeakMap;var yA;class ks extends B.Group{constructor(e){super();D(this,yA,void 0);p(this,yA,new Ke($({loader:Mt,consumer:this},e))),E(this,yA).data.subscribe(s=>{s.current?this.add(...s.current.scene.children):this.children.forEach(t=>{this.remove(t),be(t)})})}get sourceManager(){return E(this,yA)}}yA=new WeakMap;function Oe(I,A,e){const s=A.x,t=A.y,n=e||I.image.width/I.image.height;let i=0,r=0,o=I.offset.x,a=I.offset.y,g=I.rotation,C=I.center.x,Q=I.center.y;s/t>n?(i=1,r=t/s*n):(r=1,i=s/t/n),I.matrix.setUvTransform(o,a,i,r,g,C,Q)}const kA=new B.Vector3;function N(I,A,e,s,t,n){const i=2*Math.PI*t/4,r=Math.max(n-2*t,0),o=Math.PI/4;kA.copy(A),kA[s]=0,kA.normalize();const a=.5*i/(i+r),g=1-kA.angleTo(I)/o;return Math.sign(kA[e])===1?g*a:r/(i+r)+a+a*(1-g)}class bs 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,C=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,C[c+0]=o.x,C[c+1]=o.y,C[c+2]=o.z,Math.floor(c/h)){case 0:d.set(1,0,0),Q[u+0]=N(d,o,"z","y",n,s),Q[u+1]=1-N(d,o,"y","z",n,e);break;case 1:d.set(-1,0,0),Q[u+0]=1-N(d,o,"z","y",n,s),Q[u+1]=1-N(d,o,"y","z",n,e);break;case 2:d.set(0,1,0),Q[u+0]=1-N(d,o,"x","z",n,A),Q[u+1]=N(d,o,"z","x",n,s);break;case 3:d.set(0,-1,0),Q[u+0]=1-N(d,o,"x","z",n,A),Q[u+1]=1-N(d,o,"z","x",n,s);break;case 4:d.set(0,0,1),Q[u+0]=1-N(d,o,"x","y",n,A),Q[u+1]=1-N(d,o,"y","x",n,e);break;case 5:d.set(0,0,-1),Q[u+0]=N(d,o,"x","y",n,A),Q[u+1]=1-N(d,o,"y","x",n,e);break}}}const nt=new B.Vector3,Ks=new B.Quaternion,it=new B.Vector3;class Os 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 _=new B.Matrix4,_s=new B.Matrix4;class Ps{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,F;c.isOrthographicCamera&&(f=-(c.right+c.left)/2,F=(c.top+c.bottom)/2);const G=c.view&&c.view.enabled?c.view.height/c.view.fullHeight:1,m=c.isOrthographicCamera?`scale( ${G} )scale(`+u+")translate("+C(f)+"px,"+C(F)+"px)"+Q(c.matrixWorldInverse):`scale( ${G} )translateZ(`+u+"px)"+Q(c.matrixWorldInverse),y=(c.isPerspectiveCamera?"perspective("+u+"px) ":"")+m+"translate("+n+"px,"+i+"px)";r.camera.style!==y&&(g.style.transform=y,r.camera.style=y),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 C(l){return Math.abs(l)<1e-10?0:l}function Q(l){const c=l.elements;return"matrix3d("+C(c[0])+","+C(-c[1])+","+C(c[2])+","+C(c[3])+","+C(c[4])+","+C(-c[5])+","+C(c[6])+","+C(c[7])+","+C(c[8])+","+C(-c[9])+","+C(c[10])+","+C(c[11])+","+C(c[12])+","+C(-c[13])+","+C(c[14])+","+C(c[15])+")"}function h(l){const c=l.elements;return"translate(-50%,-50%)"+("matrix3d("+C(c[0])+","+C(c[1])+","+C(c[2])+","+C(c[3])+","+C(-c[4])+","+C(-c[5])+","+C(-c[6])+","+C(-c[7])+","+C(c[8])+","+C(c[9])+","+C(c[10])+","+C(c[11])+","+C(c[12])+","+C(c[13])+","+C(c[14])+","+C(c[15])+")")}function d(l,c,u,f){if(l.isCSS3DObject){const F=l.visible===!0&&l.layers.test(u.layers)===!0;if(l.element.style.display=F===!0?"":"none",F===!0){l.onBeforeRender(e,c,u);let G;l.isCSS3DSprite?(_.copy(u.matrixWorldInverse),_.transpose(),l.rotation2D!==0&&_.multiply(_s.makeRotationZ(l.rotation2D)),l.matrixWorld.decompose(nt,Ks,it),_.setPosition(nt),_.scale(it),_.elements[3]=0,_.elements[7]=0,_.elements[11]=0,_.elements[15]=1,G=h(_)):G=h(l.matrixWorld);const m=l.element,M=r.objects.get(l);if(M===void 0||M.style!==G){m.style.transform=G;const y={style:G};r.objects.set(l,y)}m.parentNode!==g&&g.appendChild(m),l.onAfterRender(e,c,u)}}for(let F=0,G=l.children.length;F<G;F++)d(l.children[F],c,u)}}}var rA,SA,QA;class _e extends B.Mesh{constructor(e){super(new bs(e.width,e.height,1,e.segments,e.round||0),e.material);D(this,rA,void 0);D(this,SA,void 0);D(this,QA,()=>{E(this,rA).data.current&&E(this,SA)&&this.onCoverResize(E(this,rA).data.current)});p(this,rA,new Ke($({consumer:this},e))),p(this,SA,e.cover||!1),this.addEventListener("added",()=>{LA.windowResizer.subscribe(E(this,QA))}),this.addEventListener("removed",()=>{LA.windowResizer.unsubscribe(E(this,QA))}),E(this,rA).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,QA).call(this))})}get sourceManager(){return E(this,rA)}updateTexture(){E(this,QA).call(this)}onCoverResize(e){Oe(e,{x:this.scale.x,y:this.scale.y})}}rA=new WeakMap,SA=new WeakMap,QA=new WeakMap;class Ys extends _e{constructor(A){super(ce($({},A),{loader:at}))}}class qs{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 ie,oe,re;class Xs extends _e{constructor(e){super(ce($({},e),{loader:new qs}));D(this,ie,void 0);D(this,oe,void 0);D(this,re,void 0);p(this,ie,e.autoplay||!1),p(this,oe,e.muted||!1),p(this,re,e.loop||!1),this.sourceManager.data.subscribe(s=>{if(s.current){const t=s.current.image;E(this,oe)&&(t.muted=!0),E(this,re)&&(t.loop=!0),E(this,ie)&&t.play()}})}onCoverResize(e){const s=e.image;Oe(e,{x:this.scale.x,y:this.scale.y},s.videoWidth/s.videoHeight)}}ie=new WeakMap,oe=new WeakMap,re=new WeakMap;function vs(I,A){I.traverse(e=>{e instanceof B.Mesh&&A(e)})}function Vs(I,A){I.traverse(e=>{e instanceof B.Mesh&&e.material&&(Array.isArray(e.material)?e.material:[e.material]).forEach(A)})}const He=new B.Vector3,Ws=new B.Vector3;function js(I){const{width:A,height:e}=w,s=A/e;I instanceof B.Vector3?He.copy(I):He.set(...I);const t=w.camera.getWorldPosition(Ws).distanceTo(He);if(w.camera instanceof B.OrthographicCamera)return{width:A/w.camera.zoom,height:e/w.camera.zoom,factor:1,distance:t,aspect:s};{const n=w.camera.fov*Math.PI/180,i=2*Math.tan(n/2)*t,r=i*(A/e);return{width:r,height:i,factor:A/r,distance:t,aspect:s}}}var q,de,wt,Be,ae;const U=class U extends Os{static destroy(){LA.windowResizer.unsubscribe(E(this,ae)),HA.ticker.unsubscribe(E(this,Be)),p(this,q,null)}constructor(A){var e;super(A.element),E(U,q)||IA(e=U,de,wt).call(e)}};q=new WeakMap,de=new WeakSet,wt=function(){p(U,q,new Ps),E(U,q).domElement.style.cssText=`
11
11
  position: fixed;
12
12
  left: 0;
13
13
  top: 0;
@@ -16,7 +16,7 @@
16
16
  z-index: 1;
17
17
  pointer-events: none;
18
18
  overflow: hidden;
19
- `,w.containerElement.prepend(E(U,q).domElement),LA.windowResizer.subscribe(E(this,ae),bA.RESIZE_ORDER.EN3+1),HA.ticker.subscribe(E(this,Be),{order:bA.TICK_ORDER.EN3+1})},Be=new WeakMap,ae=new WeakMap,D(U,de),D(U,q,null),D(U,Be,()=>{E(U,q).render(w.scene,w.camera)}),D(U,ae,()=>{E(U,q).setSize(w.width,w.height)});let xe=U;var BA,aA,Ce,ke;class Zs{constructor(A){D(this,Ce);D(this,BA,void 0);D(this,aA,void 0);p(this,BA,A.material),p(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=`
19
+ `,w.containerElement.prepend(E(U,q).domElement),LA.windowResizer.subscribe(E(this,ae),bA.RESIZE_ORDER.EN3+1),HA.ticker.subscribe(E(this,Be),{order:bA.TICK_ORDER.EN3+1})},Be=new WeakMap,ae=new WeakMap,D(U,de),D(U,q,null),D(U,Be,()=>{E(U,q).render(w.scene,w.camera)}),D(U,ae,()=>{E(U,q).setSize(w.width,w.height)});let Ne=U;var BA,aA,Ce,ke;class Zs{constructor(A){D(this,Ce);D(this,BA,void 0);D(this,aA,void 0);p(this,BA,A.material),p(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=`
20
20
  ${A.vertextDeclarations}
21
21
  ${t.vertexShader}
22
22
  `),A.fragmentDeclarations&&(t.fragmentShader=`
@@ -25,4 +25,4 @@
25
25
  `),IA(this,Ce,ke).call(this,t,"vertex",A),IA(this,Ce,ke).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,Ce=new WeakSet,ke=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
26
  #include <${s[t].update}>
27
27
  ${s[t].content}
28
- `)))};exports.En3Clip=Us;exports.En3ClipHelpers=Ns;exports.En3GLTF=xs;exports.En3HTML=xe;exports.En3Image=Ys;exports.En3ImageLike=_e;exports.En3ModifiedMaterial=Zs;exports.En3Raycaster=rt;exports.En3SourceManager=Ke;exports.En3Video=Xs;exports.coverTexture=Oe;exports.dispose=be;exports.en3=w;exports.en3GLTFLoader=mt;exports.en3LazyLoader=kt;exports.getCurrentViewport=js;exports.traverseMaterials=Vs;exports.traverseMeshes=vs;
28
+ `)))};exports.En3Clip=xs;exports.En3ClipHelpers=Ns;exports.En3GLTF=ks;exports.En3HTML=Ne;exports.En3Image=Ys;exports.En3ImageLike=_e;exports.En3ModifiedMaterial=Zs;exports.En3Raycaster=rt;exports.En3SourceManager=Ke;exports.En3Video=Xs;exports.coverTexture=Oe;exports.dispose=be;exports.en3=w;exports.en3GLTFLoader=Mt;exports.en3LazyLoader=bt;exports.en3TextureLoader=at;exports.getCurrentViewport=js;exports.traverseMaterials=Vs;exports.traverseMeshes=vs;