aptechka 0.5.1 → 0.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -20,9 +20,9 @@ declare class En3 {
20
20
  get pixelRatio(): number;
21
21
  setup(options?: En3Options): void;
22
22
  destroy(): void;
23
- createView(name: string, viewOptions?: En3ViewOptions): En3View;
24
- getView(name: string): En3View;
25
- removeView(view: En3View): void;
23
+ createView(viewName: string, viewOptions?: En3ViewOptions): En3View;
24
+ getView(viewName: string): En3View;
25
+ destroyView(viewName: string): void;
26
26
  render(view: En3View): void;
27
27
  onResize?(): void;
28
28
  }
package/lib/en3/index.cjs CHANGED
@@ -1,13 +1,13 @@
1
- "use strict";var dt=Object.defineProperty,ut=Object.defineProperties;var ft=Object.getOwnPropertyDescriptors;var Ue=Object.getOwnPropertySymbols;var Dt=Object.prototype.hasOwnProperty,Ft=Object.prototype.propertyIsEnumerable;var Ne=(I,A,e)=>A in I?dt(I,A,{enumerable:!0,configurable:!0,writable:!0,value:e}):I[A]=e,hA=(I,A)=>{for(var e in A||(A={}))Dt.call(A,e)&&Ne(I,e,A[e]);if(Ue)for(var e of Ue(A))Ft.call(A,e)&&Ne(I,e,A[e]);return I},ne=(I,A)=>ut(I,ft(A));var Ce=(I,A,e)=>{if(!A.has(I))throw TypeError("Cannot "+e)};var E=(I,A,e)=>(Ce(I,A,"read from private field"),e?e.call(I):A.get(I)),G=(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)},R=(I,A,e,s)=>(Ce(I,A,"write to private field"),s?s.call(I,e):A.set(I,e),e);var oe=(I,A,e)=>(Ce(I,A,"access private method"),e);var TA=(I,A,e)=>new Promise((s,t)=>{var i=o=>{try{r(e.next(o))}catch(a){t(a)}},n=o=>{try{r(e.throw(o))}catch(a){t(a)}},r=o=>o.done?s(o.value):Promise.resolve(o.value).then(i,n);r((e=e.apply(I,A)).next())});Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const NA=require("../order/index.cjs"),wA=require("../window-resizer/index.cjs"),SA=require("../ticker/index.cjs"),je=require("../dom-JBOkFLTh.cjs");require("../path-data-polyfill-CXsOR7Oc.cjs");const B=require("three"),Ze=require("../layout-box/index.cjs"),xe=require("../layout-8ryRAMGJ.cjs"),Ie=require("../loading/index.cjs"),Gt=require("../SourceManager-Bl_uduSS.cjs"),ke=require("../Store-BQGNOHlY.cjs");function ye(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 xA,L,IA,AA,eA,dA,V,tA,W,kA,bA;class Re{constructor(A,e){G(this,xA,void 0);G(this,L,void 0);G(this,IA,void 0);G(this,AA,void 0);G(this,eA,void 0);G(this,dA,void 0);G(this,V,void 0);G(this,tA,0);G(this,W,0);G(this,kA,0);G(this,bA,0);R(this,xA,A),R(this,L,(e==null?void 0:e.cameraType)==="orthographic"?new B.OrthographicCamera:new B.PerspectiveCamera),R(this,IA,new B.Scene),R(this,AA,[]),R(this,eA,(e==null?void 0:e.cameraDistance)||1e3),E(this,L).near=(e==null?void 0:e.cameraNear)||1,E(this,L).far=(e==null?void 0:e.cameraFar)||11e3,R(this,dA,(e==null?void 0:e.cameraFov)||"auto"),R(this,V,je.getElement(e==null?void 0:e.sizeElement)||document.documentElement),this.beforeRenderCallback=e==null?void 0:e.beforeRender}get name(){return E(this,xA)}get camera(){return E(this,L)}get scene(){return E(this,IA)}get width(){return E(this,tA)}get height(){return E(this,W)}get top(){return E(this,kA)}get left(){return E(this,bA)}get cameraDistance(){return E(this,eA)}set cameraDistance(A){R(this,eA,A),this.resize()}resize(){R(this,tA,E(this,V).offsetWidth),R(this,W,E(this,V).offsetHeight),R(this,kA,xe.getCumulativeOffsetTop(E(this,V))),R(this,bA,xe.getCumulativeOffsetLeft(E(this,V))),E(this,L).position.z=E(this,eA),E(this,L)instanceof B.PerspectiveCamera?(E(this,L).aspect=E(this,tA)/E(this,W),E(this,L).fov=E(this,dA)==="auto"?2*Math.atan(E(this,W)/2/E(this,eA))*(180/Math.PI):E(this,dA)):E(this,L)instanceof B.OrthographicCamera&&(E(this,L).left=E(this,tA)/-2,E(this,L).right=E(this,tA)/2,E(this,L).top=E(this,W)/2,E(this,L).bottom=E(this,W)/-2),E(this,L).updateProjectionMatrix()}destroy(){E(this,AA).forEach(A=>{A.userData.box.destroy()}),E(this,IA).clear(),ye(E(this,IA)),k.removeView(this)}attachToHTMLElement(A,e,s){const t=new Ze.LayoutBox(A,ne(hA({},s),{containerElement:E(this,V),cartesian:!0}));return t.bindObject(e),e.userData.box=t,E(this,AA).push(e),e}detachFromHTMLElement(A){R(this,AA,E(this,AA).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)}}xA=new WeakMap,L=new WeakMap,IA=new WeakMap,AA=new WeakMap,eA=new WeakMap,dA=new WeakMap,V=new WeakMap,tA=new WeakMap,W=new WeakMap,kA=new WeakMap,bA=new WeakMap;var Be,sA,S,U,uA,fA,DA,KA,gA,OA,_A;class Rt{constructor(){G(this,Be,`https://unpkg.com/three@0.${B.REVISION}.x`);G(this,sA,null);G(this,S,null);G(this,U,new Map);G(this,uA,0);G(this,fA,0);G(this,DA,0);G(this,KA,2);G(this,gA,!1);G(this,OA,()=>{var A;R(this,uA,E(this,sA).clientWidth),R(this,fA,E(this,sA).clientHeight),R(this,DA,Math.min(E(this,KA),devicePixelRatio||1)),E(this,S).setPixelRatio(E(this,DA)),E(this,S).setSize(E(this,uA),E(this,fA)),E(this,U).forEach(e=>{e.resize()}),(A=this.onResize)==null||A.call(this)});G(this,_A,()=>{E(this,S).setRenderTarget(null),E(this,U).forEach(A=>{this.render(A)})})}get CDNVersion(){return E(this,Be)}get containerElement(){return E(this,sA)}get webglRenderer(){return E(this,S)}get views(){return E(this,U)}get view(){return this.getView("default")}get width(){return E(this,uA)}get height(){return E(this,fA)}get pixelRatio(){return E(this,DA)}setup(A){if(E(this,gA)){console.warn("[en3.setup]: You are trying to setup en3 again.");return}R(this,sA,je.getElement(A==null?void 0:A.containerElement)||document.body),R(this,KA,(A==null?void 0:A.maxPixelRatio)||2),R(this,S,new B.WebGLRenderer(A==null?void 0:A.webGLRendererParameters)),E(this,S).domElement.style.cssText=`
1
+ "use strict";var dt=Object.defineProperty,ut=Object.defineProperties;var ft=Object.getOwnPropertyDescriptors;var Ue=Object.getOwnPropertySymbols;var Dt=Object.prototype.hasOwnProperty,Ft=Object.prototype.propertyIsEnumerable;var Ne=(I,A,e)=>A in I?dt(I,A,{enumerable:!0,configurable:!0,writable:!0,value:e}):I[A]=e,hA=(I,A)=>{for(var e in A||(A={}))Dt.call(A,e)&&Ne(I,e,A[e]);if(Ue)for(var e of Ue(A))Ft.call(A,e)&&Ne(I,e,A[e]);return I},ne=(I,A)=>ut(I,ft(A));var Ce=(I,A,e)=>{if(!A.has(I))throw TypeError("Cannot "+e)};var E=(I,A,e)=>(Ce(I,A,"read from private field"),e?e.call(I):A.get(I)),G=(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)},R=(I,A,e,s)=>(Ce(I,A,"write to private field"),s?s.call(I,e):A.set(I,e),e);var oe=(I,A,e)=>(Ce(I,A,"access private method"),e);var TA=(I,A,e)=>new Promise((s,t)=>{var i=o=>{try{r(e.next(o))}catch(a){t(a)}},n=o=>{try{r(e.throw(o))}catch(a){t(a)}},r=o=>o.done?s(o.value):Promise.resolve(o.value).then(i,n);r((e=e.apply(I,A)).next())});Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const NA=require("../order/index.cjs"),wA=require("../window-resizer/index.cjs"),SA=require("../ticker/index.cjs"),je=require("../dom-JBOkFLTh.cjs");require("../path-data-polyfill-CXsOR7Oc.cjs");const B=require("three"),Ze=require("../layout-box/index.cjs"),xe=require("../layout-8ryRAMGJ.cjs"),Ie=require("../loading/index.cjs"),Gt=require("../SourceManager-Bl_uduSS.cjs"),ke=require("../Store-BQGNOHlY.cjs");function ye(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 xA,L,IA,AA,eA,dA,V,tA,W,kA,bA;class Re{constructor(A,e){G(this,xA,void 0);G(this,L,void 0);G(this,IA,void 0);G(this,AA,void 0);G(this,eA,void 0);G(this,dA,void 0);G(this,V,void 0);G(this,tA,0);G(this,W,0);G(this,kA,0);G(this,bA,0);R(this,xA,A),R(this,L,(e==null?void 0:e.cameraType)==="orthographic"?new B.OrthographicCamera:new B.PerspectiveCamera),R(this,IA,new B.Scene),R(this,AA,[]),R(this,eA,(e==null?void 0:e.cameraDistance)||1e3),E(this,L).near=(e==null?void 0:e.cameraNear)||1,E(this,L).far=(e==null?void 0:e.cameraFar)||11e3,R(this,dA,(e==null?void 0:e.cameraFov)||"auto"),R(this,V,je.getElement(e==null?void 0:e.sizeElement)||document.documentElement),this.beforeRenderCallback=e==null?void 0:e.beforeRender}get name(){return E(this,xA)}get camera(){return E(this,L)}get scene(){return E(this,IA)}get width(){return E(this,tA)}get height(){return E(this,W)}get top(){return E(this,kA)}get left(){return E(this,bA)}get cameraDistance(){return E(this,eA)}set cameraDistance(A){R(this,eA,A),this.resize()}resize(){R(this,tA,E(this,V).offsetWidth),R(this,W,E(this,V).offsetHeight),R(this,kA,xe.getCumulativeOffsetTop(E(this,V))),R(this,bA,xe.getCumulativeOffsetLeft(E(this,V))),E(this,L).position.z=E(this,eA),E(this,L)instanceof B.PerspectiveCamera?(E(this,L).aspect=E(this,tA)/E(this,W),E(this,L).fov=E(this,dA)==="auto"?2*Math.atan(E(this,W)/2/E(this,eA))*(180/Math.PI):E(this,dA)):E(this,L)instanceof B.OrthographicCamera&&(E(this,L).left=E(this,tA)/-2,E(this,L).right=E(this,tA)/2,E(this,L).top=E(this,W)/2,E(this,L).bottom=E(this,W)/-2),E(this,L).updateProjectionMatrix()}destroy(){E(this,AA).forEach(A=>{A.userData.box.destroy()}),E(this,IA).clear(),ye(E(this,IA)),k.destroyView(this.name)}attachToHTMLElement(A,e,s){const t=new Ze.LayoutBox(A,ne(hA({},s),{containerElement:E(this,V),cartesian:!0}));return t.bindObject(e),e.userData.box=t,E(this,AA).push(e),e}detachFromHTMLElement(A){R(this,AA,E(this,AA).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)}}xA=new WeakMap,L=new WeakMap,IA=new WeakMap,AA=new WeakMap,eA=new WeakMap,dA=new WeakMap,V=new WeakMap,tA=new WeakMap,W=new WeakMap,kA=new WeakMap,bA=new WeakMap;var Be,sA,S,J,uA,fA,DA,KA,gA,OA,_A;class Rt{constructor(){G(this,Be,`https://unpkg.com/three@0.${B.REVISION}.x`);G(this,sA,null);G(this,S,null);G(this,J,new Map);G(this,uA,0);G(this,fA,0);G(this,DA,0);G(this,KA,2);G(this,gA,!1);G(this,OA,()=>{var A;R(this,uA,E(this,sA).clientWidth),R(this,fA,E(this,sA).clientHeight),R(this,DA,Math.min(E(this,KA),devicePixelRatio||1)),E(this,S).setPixelRatio(E(this,DA)),E(this,S).setSize(E(this,uA),E(this,fA)),E(this,J).forEach(e=>{e.resize()}),(A=this.onResize)==null||A.call(this)});G(this,_A,()=>{E(this,S).setRenderTarget(null),E(this,J).forEach(A=>{this.render(A)})})}get CDNVersion(){return E(this,Be)}get containerElement(){return E(this,sA)}get webglRenderer(){return E(this,S)}get views(){return E(this,J)}get view(){return this.getView("default")}get width(){return E(this,uA)}get height(){return E(this,fA)}get pixelRatio(){return E(this,DA)}setup(A){if(E(this,gA)){console.warn("[en3.setup]: You are trying to setup en3 again.");return}R(this,sA,je.getElement(A==null?void 0:A.containerElement)||document.body),R(this,KA,(A==null?void 0:A.maxPixelRatio)||2),R(this,S,new B.WebGLRenderer(A==null?void 0:A.webGLRendererParameters)),E(this,S).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,sA).append(E(this,S).domElement),E(this,U).set("default",new Re("default",A==null?void 0:A.view)),R(this,gA,!0),wA.windowResizer.subscribe(E(this,OA),NA.RESIZE_ORDER.EN3),SA.ticker.subscribe(E(this,_A),{order:NA.TICK_ORDER.EN3})}destroy(){if(!E(this,gA)){console.warn("[en3.setup]: You are trying to destory en3 but it has not been initialized.");return}wA.windowResizer.unsubscribe(E(this,OA)),SA.ticker.unsubscribe(E(this,_A)),E(this,U).forEach(A=>{A.destroy()}),E(this,S).dispose(),E(this,S).domElement.remove(),R(this,S,null),R(this,gA,!1)}createView(A,e){const s=E(this,U).size,t=new Re(A,e);return E(this,U).set(A,t),t.resize(),s<=1&&E(this,S).setScissorTest(!0),t}getView(A){return E(this,U).get(A)}removeView(A){E(this,U).delete(A.name),E(this,U).size<=1&&E(this,S).setScissorTest(!1)}render(A){var e;E(this,U).size>1&&(E(this,S).setScissor(A.left,A.top,A.width,A.height),E(this,S).setViewport(A.left,A.top,A.width,A.height)),(e=A.beforeRenderCallback)==null||e.call(A),E(this,S).render(A.scene,A.camera)}}Be=new WeakMap,sA=new WeakMap,S=new WeakMap,U=new WeakMap,uA=new WeakMap,fA=new WeakMap,DA=new WeakMap,KA=new WeakMap,gA=new WeakMap,OA=new WeakMap,_A=new WeakMap;const k=new Rt,ze=new B.TextureLoader;function be(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 n=[],r=I.getAttribute("position");if(r!==void 0){for(let o=0;o<r.count;o++)n.push(o);I.setIndex(n),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 n=1;n<=s;n++)t.push(e.getX(0)),t.push(e.getX(n)),t.push(e.getX(n+1));else for(let n=0;n<s;n++)n%2===0?(t.push(e.getX(n)),t.push(e.getX(n+1)),t.push(e.getX(n+2))):(t.push(e.getX(n+2)),t.push(e.getX(n+1)),t.push(e.getX(n)));t.length/3!==s&&console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");const i=I.clone();return i.setIndex(t),i.clearGroups(),i}else return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:",A),I}class pt extends B.Loader{constructor(A){super(A),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(e){return new yt(e)}),this.register(function(e){return new bt(e)}),this.register(function(e){return new Kt(e)}),this.register(function(e){return new Ot(e)}),this.register(function(e){return new Tt(e)}),this.register(function(e){return new Ht(e)}),this.register(function(e){return new Jt(e)}),this.register(function(e){return new Ut(e)}),this.register(function(e){return new St(e)}),this.register(function(e){return new Nt(e)}),this.register(function(e){return new Lt(e)}),this.register(function(e){return new kt(e)}),this.register(function(e){return new xt(e)}),this.register(function(e){return new Mt(e)}),this.register(function(e){return new _t(e)}),this.register(function(e){return new Pt(e)})}load(A,e,s,t){const i=this;let n;if(this.resourcePath!=="")n=this.resourcePath;else if(this.path!==""){const a=B.LoaderUtils.extractUrlBase(A);n=B.LoaderUtils.resolveURL(a,this.path)}else n=B.LoaderUtils.extractUrlBase(A);this.manager.itemStart(A);const r=function(a){t?t(a):console.error(a),i.manager.itemError(A),i.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{i.parse(a,n,function(g){e(g),i.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 i;const n={},r={},o=new TextDecoder;if(typeof A=="string")i=JSON.parse(A);else if(A instanceof ArrayBuffer)if(o.decode(new Uint8Array(A,0,4))===$e){try{n[p.KHR_BINARY_GLTF]=new Yt(A)}catch(C){t&&t(C);return}i=JSON.parse(n[p.KHR_BINARY_GLTF].content)}else i=JSON.parse(o.decode(A));else i=A;if(i.asset===void 0||i.asset.version[0]<2){t&&t(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported."));return}const a=new ss(i,{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,n[C.name]=!0}if(i.extensionsUsed)for(let g=0;g<i.extensionsUsed.length;++g){const C=i.extensionsUsed[g],Q=i.extensionsRequired||[];switch(C){case p.KHR_MATERIALS_UNLIT:n[C]=new wt;break;case p.KHR_DRACO_MESH_COMPRESSION:n[C]=new qt(i,this.dracoLoader);break;case p.KHR_TEXTURE_TRANSFORM:n[C]=new Xt;break;case p.KHR_MESH_QUANTIZATION:n[C]=new vt;break;default:Q.indexOf(C)>=0&&r[C]===void 0&&console.warn('THREE.GLTFLoader: Unknown extension "'+C+'".')}}a.setExtensions(n),a.setPlugins(r),a.parse(s,t)}parseAsync(A,e){const s=this;return new Promise(function(t,i){s.parse(A,e,t,i)})}}function mt(){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 p={KHR_BINARY_GLTF:"KHR_binary_glTF",KHR_DRACO_MESH_COMPRESSION:"KHR_draco_mesh_compression",KHR_LIGHTS_PUNCTUAL:"KHR_lights_punctual",KHR_MATERIALS_CLEARCOAT:"KHR_materials_clearcoat",KHR_MATERIALS_IOR:"KHR_materials_ior",KHR_MATERIALS_SHEEN:"KHR_materials_sheen",KHR_MATERIALS_SPECULAR:"KHR_materials_specular",KHR_MATERIALS_TRANSMISSION:"KHR_materials_transmission",KHR_MATERIALS_IRIDESCENCE:"KHR_materials_iridescence",KHR_MATERIALS_ANISOTROPY:"KHR_materials_anisotropy",KHR_MATERIALS_UNLIT:"KHR_materials_unlit",KHR_MATERIALS_VOLUME:"KHR_materials_volume",KHR_TEXTURE_BASISU:"KHR_texture_basisu",KHR_TEXTURE_TRANSFORM:"KHR_texture_transform",KHR_MESH_QUANTIZATION:"KHR_mesh_quantization",KHR_MATERIALS_EMISSIVE_STRENGTH:"KHR_materials_emissive_strength",EXT_MATERIALS_BUMP:"EXT_materials_bump",EXT_TEXTURE_WEBP:"EXT_texture_webp",EXT_TEXTURE_AVIF:"EXT_texture_avif",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression",EXT_MESH_GPU_INSTANCING:"EXT_mesh_gpu_instancing"};class Mt{constructor(A){this.parser=A,this.name=p.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){const A=this.parser,e=this.parser.json.nodes||[];for(let s=0,t=e.length;s<t;s++){const i=e[s];i.extensions&&i.extensions[this.name]&&i.extensions[this.name].light!==void 0&&A._addNodeRef(this.cache,i.extensions[this.name].light)}}_loadLight(A){const e=this.parser,s="light:"+A;let t=e.cache.get(s);if(t)return t;const i=e.json,o=((i.extensions&&i.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,$(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,i=s.json.nodes[A],r=(i.extensions&&i.extensions[this.name]||{}).light;return r===void 0?null:this._loadLight(r).then(function(o){return s._getNodeRef(e.cache,r,o)})}}class wt{constructor(){this.name=p.KHR_MATERIALS_UNLIT}getMaterialType(){return B.MeshBasicMaterial}extendParams(A,e,s){const t=[];A.color=new B.Color(1,1,1),A.opacity=1;const i=e.pbrMetallicRoughness;if(i){if(Array.isArray(i.baseColorFactor)){const n=i.baseColorFactor;A.color.setRGB(n[0],n[1],n[2],B.LinearSRGBColorSpace),A.opacity=n[3]}i.baseColorTexture!==void 0&&t.push(s.assignTexture(A,"map",i.baseColorTexture,B.SRGBColorSpace))}return Promise.all(t)}}class St{constructor(A){this.parser=A,this.name=p.KHR_MATERIALS_EMISSIVE_STRENGTH}extendMaterialParams(A,e){const t=this.parser.json.materials[A];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const i=t.extensions[this.name].emissiveStrength;return i!==void 0&&(e.emissiveIntensity=i),Promise.resolve()}}class yt{constructor(A){this.parser=A,this.name=p.KHR_MATERIALS_CLEARCOAT}getMaterialType(A){const s=this.parser.json.materials[A];return!s.extensions||!s.extensions[this.name]?null:B.MeshPhysicalMaterial}extendMaterialParams(A,e){const s=this.parser,t=s.json.materials[A];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const i=[],n=t.extensions[this.name];if(n.clearcoatFactor!==void 0&&(e.clearcoat=n.clearcoatFactor),n.clearcoatTexture!==void 0&&i.push(s.assignTexture(e,"clearcoatMap",n.clearcoatTexture)),n.clearcoatRoughnessFactor!==void 0&&(e.clearcoatRoughness=n.clearcoatRoughnessFactor),n.clearcoatRoughnessTexture!==void 0&&i.push(s.assignTexture(e,"clearcoatRoughnessMap",n.clearcoatRoughnessTexture)),n.clearcoatNormalTexture!==void 0&&(i.push(s.assignTexture(e,"clearcoatNormalMap",n.clearcoatNormalTexture)),n.clearcoatNormalTexture.scale!==void 0)){const r=n.clearcoatNormalTexture.scale;e.clearcoatNormalScale=new B.Vector2(r,r)}return Promise.all(i)}}class Lt{constructor(A){this.parser=A,this.name=p.KHR_MATERIALS_IRIDESCENCE}getMaterialType(A){const s=this.parser.json.materials[A];return!s.extensions||!s.extensions[this.name]?null:B.MeshPhysicalMaterial}extendMaterialParams(A,e){const s=this.parser,t=s.json.materials[A];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const i=[],n=t.extensions[this.name];return n.iridescenceFactor!==void 0&&(e.iridescence=n.iridescenceFactor),n.iridescenceTexture!==void 0&&i.push(s.assignTexture(e,"iridescenceMap",n.iridescenceTexture)),n.iridescenceIor!==void 0&&(e.iridescenceIOR=n.iridescenceIor),e.iridescenceThicknessRange===void 0&&(e.iridescenceThicknessRange=[100,400]),n.iridescenceThicknessMinimum!==void 0&&(e.iridescenceThicknessRange[0]=n.iridescenceThicknessMinimum),n.iridescenceThicknessMaximum!==void 0&&(e.iridescenceThicknessRange[1]=n.iridescenceThicknessMaximum),n.iridescenceThicknessTexture!==void 0&&i.push(s.assignTexture(e,"iridescenceThicknessMap",n.iridescenceThicknessTexture)),Promise.all(i)}}class Tt{constructor(A){this.parser=A,this.name=p.KHR_MATERIALS_SHEEN}getMaterialType(A){const s=this.parser.json.materials[A];return!s.extensions||!s.extensions[this.name]?null:B.MeshPhysicalMaterial}extendMaterialParams(A,e){const s=this.parser,t=s.json.materials[A];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const i=[];e.sheenColor=new B.Color(0,0,0),e.sheenRoughness=0,e.sheen=1;const n=t.extensions[this.name];if(n.sheenColorFactor!==void 0){const r=n.sheenColorFactor;e.sheenColor.setRGB(r[0],r[1],r[2],B.LinearSRGBColorSpace)}return n.sheenRoughnessFactor!==void 0&&(e.sheenRoughness=n.sheenRoughnessFactor),n.sheenColorTexture!==void 0&&i.push(s.assignTexture(e,"sheenColorMap",n.sheenColorTexture,B.SRGBColorSpace)),n.sheenRoughnessTexture!==void 0&&i.push(s.assignTexture(e,"sheenRoughnessMap",n.sheenRoughnessTexture)),Promise.all(i)}}class Ht{constructor(A){this.parser=A,this.name=p.KHR_MATERIALS_TRANSMISSION}getMaterialType(A){const s=this.parser.json.materials[A];return!s.extensions||!s.extensions[this.name]?null:B.MeshPhysicalMaterial}extendMaterialParams(A,e){const s=this.parser,t=s.json.materials[A];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const i=[],n=t.extensions[this.name];return n.transmissionFactor!==void 0&&(e.transmission=n.transmissionFactor),n.transmissionTexture!==void 0&&i.push(s.assignTexture(e,"transmissionMap",n.transmissionTexture)),Promise.all(i)}}class Jt{constructor(A){this.parser=A,this.name=p.KHR_MATERIALS_VOLUME}getMaterialType(A){const s=this.parser.json.materials[A];return!s.extensions||!s.extensions[this.name]?null:B.MeshPhysicalMaterial}extendMaterialParams(A,e){const s=this.parser,t=s.json.materials[A];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const i=[],n=t.extensions[this.name];e.thickness=n.thicknessFactor!==void 0?n.thicknessFactor:0,n.thicknessTexture!==void 0&&i.push(s.assignTexture(e,"thicknessMap",n.thicknessTexture)),e.attenuationDistance=n.attenuationDistance||1/0;const r=n.attenuationColor||[1,1,1];return e.attenuationColor=new B.Color().setRGB(r[0],r[1],r[2],B.LinearSRGBColorSpace),Promise.all(i)}}class Ut{constructor(A){this.parser=A,this.name=p.KHR_MATERIALS_IOR}getMaterialType(A){const s=this.parser.json.materials[A];return!s.extensions||!s.extensions[this.name]?null:B.MeshPhysicalMaterial}extendMaterialParams(A,e){const t=this.parser.json.materials[A];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const i=t.extensions[this.name];return e.ior=i.ior!==void 0?i.ior:1.5,Promise.resolve()}}class Nt{constructor(A){this.parser=A,this.name=p.KHR_MATERIALS_SPECULAR}getMaterialType(A){const s=this.parser.json.materials[A];return!s.extensions||!s.extensions[this.name]?null:B.MeshPhysicalMaterial}extendMaterialParams(A,e){const s=this.parser,t=s.json.materials[A];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const i=[],n=t.extensions[this.name];e.specularIntensity=n.specularFactor!==void 0?n.specularFactor:1,n.specularTexture!==void 0&&i.push(s.assignTexture(e,"specularIntensityMap",n.specularTexture));const r=n.specularColorFactor||[1,1,1];return e.specularColor=new B.Color().setRGB(r[0],r[1],r[2],B.LinearSRGBColorSpace),n.specularColorTexture!==void 0&&i.push(s.assignTexture(e,"specularColorMap",n.specularColorTexture,B.SRGBColorSpace)),Promise.all(i)}}class xt{constructor(A){this.parser=A,this.name=p.EXT_MATERIALS_BUMP}getMaterialType(A){const s=this.parser.json.materials[A];return!s.extensions||!s.extensions[this.name]?null:B.MeshPhysicalMaterial}extendMaterialParams(A,e){const s=this.parser,t=s.json.materials[A];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const i=[],n=t.extensions[this.name];return e.bumpScale=n.bumpFactor!==void 0?n.bumpFactor:1,n.bumpTexture!==void 0&&i.push(s.assignTexture(e,"bumpMap",n.bumpTexture)),Promise.all(i)}}class kt{constructor(A){this.parser=A,this.name=p.KHR_MATERIALS_ANISOTROPY}getMaterialType(A){const s=this.parser.json.materials[A];return!s.extensions||!s.extensions[this.name]?null:B.MeshPhysicalMaterial}extendMaterialParams(A,e){const s=this.parser,t=s.json.materials[A];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const i=[],n=t.extensions[this.name];return n.anisotropyStrength!==void 0&&(e.anisotropy=n.anisotropyStrength),n.anisotropyRotation!==void 0&&(e.anisotropyRotation=n.anisotropyRotation),n.anisotropyTexture!==void 0&&i.push(s.assignTexture(e,"anisotropyMap",n.anisotropyTexture)),Promise.all(i)}}class bt{constructor(A){this.parser=A,this.name=p.KHR_TEXTURE_BASISU}loadTexture(A){const e=this.parser,s=e.json,t=s.textures[A];if(!t.extensions||!t.extensions[this.name])return null;const i=t.extensions[this.name],n=e.options.ktx2Loader;if(!n){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,i.source,n)}}class Kt{constructor(A){this.parser=A,this.name=p.EXT_TEXTURE_WEBP,this.isSupported=null}loadTexture(A){const e=this.name,s=this.parser,t=s.json,i=t.textures[A];if(!i.extensions||!i.extensions[e])return null;const n=i.extensions[e],r=t.images[n.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,n.source,o);if(t.extensionsRequired&&t.extensionsRequired.indexOf(e)>=0)throw new Error("THREE.GLTFLoader: WebP required by asset but unsupported.");return s.loadTexture(A)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(A){const e=new Image;e.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA",e.onload=e.onerror=function(){A(e.height===1)}})),this.isSupported}}class Ot{constructor(A){this.parser=A,this.name=p.EXT_TEXTURE_AVIF,this.isSupported=null}loadTexture(A){const e=this.name,s=this.parser,t=s.json,i=t.textures[A];if(!i.extensions||!i.extensions[e])return null;const n=i.extensions[e],r=t.images[n.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,n.source,o);if(t.extensionsRequired&&t.extensionsRequired.indexOf(e)>=0)throw new Error("THREE.GLTFLoader: AVIF required by asset but unsupported.");return s.loadTexture(A)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(A){const e=new Image;e.src="data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAABcAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQAMAAAAABNjb2xybmNseAACAAIABoAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAAB9tZGF0EgAKCBgABogQEDQgMgkQAAAAB8dSLfI=",e.onload=e.onerror=function(){A(e.height===1)}})),this.isSupported}}class _t{constructor(A){this.name=p.EXT_MESHOPT_COMPRESSION,this.parser=A}loadBufferView(A){const e=this.parser.json,s=e.bufferViews[A];if(s.extensions&&s.extensions[this.name]){const t=s.extensions[this.name],i=this.parser.getDependency("buffer",t.buffer),n=this.parser.options.meshoptDecoder;if(!n||!n.supported){if(e.extensionsRequired&&e.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return null}return i.then(function(r){const o=t.byteOffset||0,a=t.byteLength||0,g=t.count,C=t.byteStride,Q=new Uint8Array(r,o,a);return n.decodeGltfBufferAsync?n.decodeGltfBufferAsync(g,C,Q,t.mode,t.filter).then(function(h){return h.buffer}):n.ready.then(function(){const h=new ArrayBuffer(g*C);return n.decodeGltfBuffer(new Uint8Array(h),g,C,Q,t.mode,t.filter),h})})}else return null}}class Pt{constructor(A){this.name=p.EXT_MESH_GPU_INSTANCING,this.parser=A}createNodeMesh(A){const e=this.parser.json,s=e.nodes[A];if(!s.extensions||!s.extensions[this.name]||s.mesh===void 0)return null;const t=e.meshes[s.mesh];for(const a of t.primitives)if(a.mode!==K.TRIANGLES&&a.mode!==K.TRIANGLE_STRIP&&a.mode!==K.TRIANGLE_FAN&&a.mode!==void 0)return null;const n=s.extensions[this.name].attributes,r=[],o={};for(const a in n)r.push(this.parser.getDependency("accessor",n[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),D=new B.InstancedMesh(d.geometry,d.material,Q);for(let F=0;F<Q;F++)o.TRANSLATION&&c.fromBufferAttribute(o.TRANSLATION,F),o.ROTATION&&u.fromBufferAttribute(o.ROTATION,F),o.SCALE&&f.fromBufferAttribute(o.SCALE,F),D.setMatrixAt(F,l.compose(c,u,f));for(const F in o)if(F==="_COLOR_0"){const m=o[F];D.instanceColor=new B.InstancedBufferAttribute(m.array,m.itemSize,m.normalized)}else F!=="TRANSLATION"&&F!=="ROTATION"&&F!=="SCALE"&&d.geometry.setAttribute(F,o[F]);B.Object3D.prototype.copy.call(D,d),this.parser.assignFinalMaterial(D),h.push(D)}return g.isGroup?(g.clear(),g.add(...h),g):h[0]}))}}const $e="glTF",HA=12,Ke={JSON:1313821514,BIN:5130562};class Yt{constructor(A){this.name=p.KHR_BINARY_GLTF,this.content=null,this.body=null;const e=new DataView(A,0,HA),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!==$e)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-HA,i=new DataView(A,HA);let n=0;for(;n<t;){const r=i.getUint32(n,!0);n+=4;const o=i.getUint32(n,!0);if(n+=4,o===Ke.JSON){const a=new Uint8Array(A,HA+n,r);this.content=s.decode(a)}else if(o===Ke.BIN){const a=HA+n;this.body=A.slice(a,a+r)}n+=r}if(this.content===null)throw new Error("THREE.GLTFLoader: JSON content not found.")}}class qt{constructor(A,e){if(!e)throw new Error("THREE.GLTFLoader: No DRACOLoader instance provided.");this.name=p.KHR_DRACO_MESH_COMPRESSION,this.json=A,this.dracoLoader=e,this.dracoLoader.preload()}decodePrimitive(A,e){const s=this.json,t=this.dracoLoader,i=A.extensions[this.name].bufferView,n=A.extensions[this.name].attributes,r={},o={},a={};for(const g in n){const C=pe[g]||g.toLowerCase();r[C]=n[g]}for(const g in A.attributes){const C=pe[g]||g.toLowerCase();if(n[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",i).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 Xt{constructor(){this.name=p.KHR_TEXTURE_TRANSFORM}extendTexture(A,e){return(e.texCoord===void 0||e.texCoord===A.channel)&&e.offset===void 0&&e.rotation===void 0&&e.scale===void 0||(A=A.clone(),e.texCoord!==void 0&&(A.channel=e.texCoord),e.offset!==void 0&&A.offset.fromArray(e.offset),e.rotation!==void 0&&(A.rotation=e.rotation),e.scale!==void 0&&A.repeat.fromArray(e.scale),A.needsUpdate=!0),A}}class vt{constructor(){this.name=p.KHR_MESH_QUANTIZATION}}class At 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,i=A*t*3+t;for(let n=0;n!==t;n++)e[n]=s[i+n];return e}interpolate_(A,e,s,t){const i=this.resultBuffer,n=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,D=u-Q+C;for(let F=0;F!==r;F++){const m=n[l+F+r],M=n[l+F+o]*g,w=n[d+F+r],O=n[d+F]*g;i[F]=f*m+D*M+c*w+u*O}return i}}const Vt=new B.Quaternion;class Wt extends At{interpolate_(A,e,s,t){const i=super.interpolate_(A,e,s,t);return Vt.fromArray(i).normalize().toArray(i),i}}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},Oe={9728:B.NearestFilter,9729:B.LinearFilter,9984:B.NearestMipmapNearestFilter,9985:B.LinearMipmapNearestFilter,9986:B.NearestMipmapLinearFilter,9987:B.LinearMipmapLinearFilter},_e={33071:B.ClampToEdgeWrapping,33648:B.MirroredRepeatWrapping,10497:B.RepeatWrapping},ge={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},pe={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"},z={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},jt={CUBICSPLINE:void 0,LINEAR:B.InterpolateLinear,STEP:B.InterpolateDiscrete},Ee={OPAQUE:"OPAQUE",MASK:"MASK",BLEND:"BLEND"};function Zt(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 CA(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 $(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 zt(I,A,e){let s=!1,t=!1,i=!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&&(i=!0),s&&t&&i)break}if(!s&&!t&&!i)return Promise.resolve(I);const n=[],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;n.push(Q)}if(t){const Q=C.NORMAL!==void 0?e.getDependency("accessor",C.NORMAL):I.attributes.normal;r.push(Q)}if(i){const Q=C.COLOR_0!==void 0?e.getDependency("accessor",C.COLOR_0):I.attributes.color;o.push(Q)}}return Promise.all([Promise.all(n),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),i&&(I.morphAttributes.color=Q),I.morphTargetsRelative=!0,I})}function $t(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 As(I){let A;const e=I.extensions&&I.extensions[p.KHR_DRACO_MESH_COMPRESSION];if(e?A="draco:"+e.bufferView+":"+e.indices+":"+ce(e.attributes):A=I.indices+":"+ce(I.attributes)+":"+I.mode,I.targets!==void 0)for(let s=0,t=I.targets.length;s<t;s++)A+=":"+ce(I.targets[s]);return A}function ce(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 me(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 es(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 ts=new B.Matrix4;class ss{constructor(A={},e={}){this.json=A,this.extensions={},this.plugins={},this.options=e,this.cache=new mt,this.associations=new Map,this.primitiveCache={},this.nodeCache={},this.meshCache={refs:{},uses:{}},this.cameraCache={refs:{},uses:{}},this.lightCache={refs:{},uses:{}},this.sourceCache={},this.textureCache={},this.nodeNamesUsed={};let s=!1,t=!1,i=-1;typeof navigator!="undefined"&&(s=/^((?!chrome|android).)*safari/i.test(navigator.userAgent)===!0,t=navigator.userAgent.indexOf("Firefox")>-1,i=t?navigator.userAgent.match(/Firefox\/([0-9]+)\./)[1]:-1),typeof createImageBitmap=="undefined"||s||t&&i<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,i=this.extensions;this.cache.removeAll(),this.nodeCache={},this._invokeAll(function(n){return n._markDefs&&n._markDefs()}),Promise.all(this._invokeAll(function(n){return n.beforeRoot&&n.beforeRoot()})).then(function(){return Promise.all([s.getDependencies("scene"),s.getDependencies("animation"),s.getDependencies("camera")])}).then(function(n){const r={scene:n[0][t.scene||0],scenes:n[0],animations:n[1],cameras:n[2],asset:t.asset,parser:s,userData:{}};return CA(i,r,t),$(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,i=e.length;t<i;t++){const n=e[t].joints;for(let r=0,o=n.length;r<o;r++)A[n[r]].isBone=!0}for(let t=0,i=A.length;t<i;t++){const n=A[t];n.mesh!==void 0&&(this._addNodeRef(this.meshCache,n.mesh),n.skin!==void 0&&(s[n.mesh].isSkinnedMesh=!0)),n.camera!==void 0&&this._addNodeRef(this.cameraCache,n.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(),i=(n,r)=>{const o=this.associations.get(n);o!=null&&this.associations.set(r,o);for(const[a,g]of n.children.entries())i(g,r.children[a])};return i(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 i=A(e[t]);i&&s.push(i)}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(i){return i.loadNode&&i.loadNode(e)});break;case"mesh":t=this._invokeOne(function(i){return i.loadMesh&&i.loadMesh(e)});break;case"accessor":t=this.loadAccessor(e);break;case"bufferView":t=this._invokeOne(function(i){return i.loadBufferView&&i.loadBufferView(e)});break;case"buffer":t=this.loadBuffer(e);break;case"material":t=this._invokeOne(function(i){return i.loadMaterial&&i.loadMaterial(e)});break;case"texture":t=this._invokeOne(function(i){return i.loadTexture&&i.loadTexture(e)});break;case"skin":t=this.loadSkin(e);break;case"animation":t=this._invokeOne(function(i){return i.loadAnimation&&i.loadAnimation(e)});break;case"camera":t=this.loadCamera(e);break;default:if(t=this._invokeOne(function(i){return i!=this&&i.getDependency&&i.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(i,n){return s.getDependency(A,n)})),this.cache.add(A,e)}return e}loadBuffer(A){const e=this.json.buffers[A],s=this.fileLoader;if(e.type&&e.type!=="arraybuffer")throw new Error("THREE.GLTFLoader: "+e.type+" buffer type is not supported.");if(e.uri===void 0&&A===0)return Promise.resolve(this.extensions[p.KHR_BINARY_GLTF].body);const t=this.options;return new Promise(function(i,n){s.load(B.LoaderUtils.resolveURL(e.uri,t.path),i,void 0,function(){n(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,i=e.byteOffset||0;return s.slice(i,i+t)})}loadAccessor(A){const e=this,s=this.json,t=this.json.accessors[A];if(t.bufferView===void 0&&t.sparse===void 0){const n=ge[t.type],r=lA[t.componentType],o=t.normalized===!0,a=new r(t.count*n);return Promise.resolve(new B.BufferAttribute(a,n,o))}const i=[];return t.bufferView!==void 0?i.push(this.getDependency("bufferView",t.bufferView)):i.push(null),t.sparse!==void 0&&(i.push(this.getDependency("bufferView",t.sparse.indices.bufferView)),i.push(this.getDependency("bufferView",t.sparse.values.bufferView))),Promise.all(i).then(function(n){const r=n[0],o=ge[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 D=e.cache.get(f);D||(l=new a(r,u*h,t.count*h/g),D=new B.InterleavedBuffer(l,h/g),e.cache.add(f,D)),c=new B.InterleavedBufferAttribute(D,o,Q%h/g,d)}else r===null?l=new a(t.count*o):l=new a(r,Q,t.count*o),c=new B.BufferAttribute(l,o,d);if(t.sparse!==void 0){const u=ge.SCALAR,f=lA[t.sparse.indices.componentType],D=t.sparse.indices.byteOffset||0,F=t.sparse.values.byteOffset||0,m=new f(n[1],D,t.sparse.count*u),M=new a(n[2],F,t.sparse.count*o);r!==null&&(c=new B.BufferAttribute(c.array.slice(),c.itemSize,c.normalized));for(let w=0,O=m.length;w<O;w++){const J=m[w];if(c.setX(J,M[w*o]),o>=2&&c.setY(J,M[w*o+1]),o>=3&&c.setZ(J,M[w*o+2]),o>=4&&c.setW(J,M[w*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,i=e.textures[A].source,n=e.images[i];let r=this.textureLoader;if(n.uri){const o=s.manager.getHandler(n.uri);o!==null&&(r=o)}return this.loadTextureImage(A,i,r)}loadTextureImage(A,e,s){const t=this,i=this.json,n=i.textures[A],r=i.images[e],o=(r.uri||r.bufferView)+":"+n.sampler;if(this.textureCache[o])return this.textureCache[o];const a=this.loadImageSource(e,s).then(function(g){g.flipY=!1,g.name=n.name||r.name||"",g.name===""&&typeof r.uri=="string"&&r.uri.startsWith("data:image/")===!1&&(g.name=r.uri);const Q=(i.samplers||{})[n.sampler]||{};return g.magFilter=Oe[Q.magFilter]||B.LinearFilter,g.minFilter=Oe[Q.minFilter]||B.LinearMipmapLinearFilter,g.wrapS=_e[Q.wrapS]||B.RepeatWrapping,g.wrapT=_e[Q.wrapT]||B.RepeatWrapping,t.associations.set(g,{textures:A}),g}).catch(function(){return null});return this.textureCache[o]=a,a}loadImageSource(A,e){const s=this,t=this.json,i=this.options;if(this.sourceCache[A]!==void 0)return this.sourceCache[A].then(C=>C.clone());const n=t.images[A],r=self.URL||self.webkitURL;let o=n.uri||"",a=!1;if(n.bufferView!==void 0)o=s.getDependency("bufferView",n.bufferView).then(function(C){a=!0;const Q=new Blob([C],{type:n.mimeType});return o=r.createObjectURL(Q),o});else if(n.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,i.path),d,void 0,h)})}).then(function(C){return a===!0&&r.revokeObjectURL(o),C.userData.mimeType=n.mimeType||es(n.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 i=this;return this.getDependency("texture",s.index).then(function(n){if(!n)return null;if(s.texCoord!==void 0&&s.texCoord>0&&(n=n.clone(),n.channel=s.texCoord),i.extensions[p.KHR_TEXTURE_TRANSFORM]){const r=s.extensions!==void 0?s.extensions[p.KHR_TEXTURE_TRANSFORM]:void 0;if(r){const o=i.associations.get(n);n=i.extensions[p.KHR_TEXTURE_TRANSFORM].extendTexture(n,r),i.associations.set(n,o)}}return t!==void 0&&(n.colorSpace=t),A[e]=n,n})}assignFinalMaterial(A){const e=A.geometry;let s=A.material;const t=e.attributes.tangent===void 0,i=e.attributes.color!==void 0,n=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||i||n){let r="ClonedMaterial:"+s.uuid+":";t&&(r+="derivative-tangents:"),i&&(r+="vertex-colors:"),n&&(r+="flat-shading:");let o=this.cache.get(r);o||(o=s.clone(),i&&(o.vertexColors=!0),n&&(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,i=s.materials[A];let n;const r={},o=i.extensions||{},a=[];if(o[p.KHR_MATERIALS_UNLIT]){const C=t[p.KHR_MATERIALS_UNLIT];n=C.getMaterialType(),a.push(C.extendParams(r,i,e))}else{const C=i.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))),n=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)})))}i.doubleSided===!0&&(r.side=B.DoubleSide);const g=i.alphaMode||Ee.OPAQUE;if(g===Ee.BLEND?(r.transparent=!0,r.depthWrite=!1):(r.transparent=!1,g===Ee.MASK&&(r.alphaTest=i.alphaCutoff!==void 0?i.alphaCutoff:.5)),i.normalTexture!==void 0&&n!==B.MeshBasicMaterial&&(a.push(e.assignTexture(r,"normalMap",i.normalTexture)),r.normalScale=new B.Vector2(1,1),i.normalTexture.scale!==void 0)){const C=i.normalTexture.scale;r.normalScale.set(C,C)}if(i.occlusionTexture!==void 0&&n!==B.MeshBasicMaterial&&(a.push(e.assignTexture(r,"aoMap",i.occlusionTexture)),i.occlusionTexture.strength!==void 0&&(r.aoMapIntensity=i.occlusionTexture.strength)),i.emissiveFactor!==void 0&&n!==B.MeshBasicMaterial){const C=i.emissiveFactor;r.emissive=new B.Color().setRGB(C[0],C[1],C[2],B.LinearSRGBColorSpace)}return i.emissiveTexture!==void 0&&n!==B.MeshBasicMaterial&&a.push(e.assignTexture(r,"emissiveMap",i.emissiveTexture,B.SRGBColorSpace)),Promise.all(a).then(function(){const C=new n(r);return i.name&&(C.name=i.name),$(C,i),e.associations.set(C,{materials:A}),i.extensions&&CA(t,C,i),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 i(r){return s[p.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(r,e).then(function(o){return Pe(o,r,e)})}const n=[];for(let r=0,o=A.length;r<o;r++){const a=A[r],g=As(a),C=t[g];if(C)n.push(C.promise);else{let Q;a.extensions&&a.extensions[p.KHR_DRACO_MESH_COMPRESSION]?Q=i(a):Q=Pe(new B.BufferGeometry,a,e),t[g]={primitive:a,promise:Q},n.push(Q)}}return Promise.all(n)}loadMesh(A){const e=this,s=this.json,t=this.extensions,i=s.meshes[A],n=i.primitives,r=[];for(let o=0,a=n.length;o<a;o++){const g=n[o].material===void 0?Zt(this.cache):this.getDependency("material",n[o].material);r.push(g)}return r.push(e.loadGeometries(n)),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=n[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=i.isSkinnedMesh===!0?new B.SkinnedMesh(l,f):new B.Mesh(l,f),u.isSkinnedMesh===!0&&u.normalizeSkinWeights(),c.mode===K.TRIANGLE_STRIP?u.geometry=be(u.geometry,B.TriangleStripDrawMode):c.mode===K.TRIANGLE_FAN&&(u.geometry=be(u.geometry,B.TriangleFanDrawMode));else if(c.mode===K.LINES)u=new B.LineSegments(l,f);else if(c.mode===K.LINE_STRIP)u=new B.Line(l,f);else if(c.mode===K.LINE_LOOP)u=new B.LineLoop(l,f);else if(c.mode===K.POINTS)u=new B.Points(l,f);else throw new Error("THREE.GLTFLoader: Primitive mode unsupported: "+c.mode);Object.keys(u.geometry.morphAttributes).length>0&&$t(u,i),u.name=e.createUniqueName(i.name||"mesh_"+A),$(u,i),c.extensions&&CA(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 i.extensions&&CA(t,C[0],i),C[0];const Q=new B.Group;i.extensions&&CA(t,Q,i),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)),$(e,s),Promise.resolve(e)}loadSkin(A){const e=this.json.skins[A],s=[];for(let t=0,i=e.joints.length;t<i;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 i=t.pop(),n=t,r=[],o=[];for(let a=0,g=n.length;a<g;a++){const C=n[a];if(C){r.push(C);const Q=new B.Matrix4;i!==null&&Q.fromArray(i.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],i=t.name?t.name:"animation_"+A,n=[],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&&(n.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(n),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,D=Q.length;f<D;f++){const F=Q[f],m=h[f],M=d[f],w=l[f],O=c[f];if(F===void 0)continue;F.updateMatrix&&F.updateMatrix();const J=s._createAnimationTracks(F,m,M,w,O);if(J)for(let q=0;q<J.length;q++)u.push(J[q])}return new B.AnimationClip(i,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(i){const n=s._getNodeRef(s.meshCache,t.mesh,i);return t.weights!==void 0&&n.traverse(function(r){if(r.isMesh)for(let o=0,a=t.weights.length;o<a;o++)r.morphTargetInfluences[o]=t.weights[o]}),n})}loadNode(A){const e=this.json,s=this,t=e.nodes[A],i=s._loadNodeShallow(A),n=[],r=t.children||[];for(let a=0,g=r.length;a<g;a++)n.push(s.getDependency("node",r[a]));const o=t.skin===void 0?Promise.resolve(null):s.getDependency("skin",t.skin);return Promise.all([i,Promise.all(n),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,ts)});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 i=e.nodes[A],n=i.name?t.createUniqueName(i.name):"",r=[],o=t._invokeOne(function(a){return a.createNodeMesh&&a.createNodeMesh(A)});return o&&r.push(o),i.camera!==void 0&&r.push(t.getDependency("camera",i.camera).then(function(a){return t._getNodeRef(t.cameraCache,i.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(i.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(i.name&&(g.userData.name=i.name,g.name=n),$(g,i),i.extensions&&CA(s,g,i),i.matrix!==void 0){const C=new B.Matrix4;C.fromArray(i.matrix),g.applyMatrix4(C)}else i.translation!==void 0&&g.position.fromArray(i.translation),i.rotation!==void 0&&g.quaternion.fromArray(i.rotation),i.scale!==void 0&&g.scale.fromArray(i.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,i=new B.Group;s.name&&(i.name=t.createUniqueName(s.name)),$(i,s),s.extensions&&CA(e,i,s);const n=s.nodes||[],r=[];for(let o=0,a=n.length;o<a;o++)r.push(t.getDependency("node",n[o]));return Promise.all(r).then(function(o){for(let g=0,C=o.length;g<C;g++)i.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(i),i})}_createAnimationTracks(A,e,s,t,i){const n=[],r=A.name?A.name:A.uuid,o=[];z[i.path]===z.weights?A.traverse(function(Q){Q.morphTargetInfluences&&o.push(Q.name?Q.name:Q.uuid)}):o.push(r);let a;switch(z[i.path]){case z.weights:a=B.NumberKeyframeTrack;break;case z.rotation:a=B.QuaternionKeyframeTrack;break;case z.position:case z.scale:a=B.VectorKeyframeTrack;break;default:switch(s.itemSize){case 1:a=B.NumberKeyframeTrack;break;case 2:case 3:default:a=B.VectorKeyframeTrack;break}break}const g=t.interpolation!==void 0?jt[t.interpolation]:B.InterpolateLinear,C=this._getArrayFromAccessor(s);for(let Q=0,h=o.length;Q<h;Q++){const d=new a(o[Q]+"."+z[i.path],e.array,C,g);t.interpolation==="CUBICSPLINE"&&this._createCubicSplineTrackInterpolant(d),n.push(d)}return n}_getArrayFromAccessor(A){let e=A.array;if(A.normalized){const s=me(e.constructor),t=new Float32Array(e.length);for(let i=0,n=e.length;i<n;i++)t[i]=e[i]*s;e=t}return e}_createCubicSplineTrackInterpolant(A){A.createInterpolant=function(s){const t=this instanceof B.QuaternionKeyframeTrack?Wt:At;return new t(this.times,this.values,this.getValueSize()/3,s)},A.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0}}function is(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=me(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 i=A.targets;if(i!==void 0){const r=new B.Vector3,o=new B.Vector3;for(let a=0,g=i.length;a<g;a++){const C=i[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=me(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 n=new B.Sphere;t.getCenter(n.center),n.radius=t.min.distanceTo(t.max)/2,I.boundingSphere=n}function Pe(I,A,e){const s=A.attributes,t=[];function i(n,r){return e.getDependency("accessor",n).then(function(o){I.setAttribute(r,o)})}for(const n in s){const r=pe[n]||n.toLowerCase();r in I.attributes||t.push(i(s[n],r))}if(A.indices!==void 0&&!I.index){const n=e.getDependency("accessor",A.indices).then(function(r){I.setIndex(r)});t.push(n)}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.`),$(I,A),is(I,A,e),Promise.all(t).then(function(){return A.targets!==void 0?zt(I,A.targets,e):I})}const Qe=new WeakMap;class ns 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 i=new B.FileLoader(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),i.load(A,n=>{this.parse(n,e,t)},s,t)}parse(A,e,s=()=>{}){this.decodeDracoFile(A,e,null,null,B.SRGBColorSpace).catch(s)}decodeDracoFile(A,e,s,t,i=B.LinearSRGBColorSpace,n=()=>{}){const r={attributeIDs:s||this.defaultAttributeIDs,attributeTypes:t||this.defaultAttributeTypes,useUniqueIDs:!!s,vertexColorSpace:i};return this.decodeGeometry(A,r).then(e).catch(n)}decodeGeometry(A,e){const s=JSON.stringify(e);if(Qe.has(A)){const o=Qe.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 i=this.workerNextTaskID++,n=A.byteLength,r=this._getWorker(i,n).then(o=>(t=o,new Promise((a,g)=>{t._callbacks[i]={resolve:a,reject:g},t.postMessage({type:"decode",id:i,taskConfig:e,buffer:A},[A])}))).then(o=>this._createGeometry(o.geometry));return r.catch(()=>!0).then(()=>{t&&i&&this._releaseTask(t,i)}),Qe.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],i=t.name,n=t.array,r=t.itemSize,o=new B.BufferAttribute(n,r);i==="color"&&(this._assignVertexColorSpace(o,t.vertexColorSpace),o.normalized=!(n instanceof Float32Array)),e.setAttribute(i,o)}return e}_assignVertexColorSpace(A,e){if(e!==B.SRGBColorSpace)return;const s=new B.Color;for(let t=0,i=A.count;t<i;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,i)=>{s.load(A,t,void 0,i)})}preload(){return this._initDecoder(),this}_initDecoder(){if(this.decoderPending)return this.decoderPending;const A=typeof WebAssembly!="object"||this.decoderConfig.type==="js",e=[];return A?e.push(this._loadLibrary("draco_decoder.js","text")):(e.push(this._loadLibrary("draco_wasm_wrapper.js","text")),e.push(this._loadLibrary("draco_decoder.wasm","arraybuffer"))),this.decoderPending=Promise.all(e).then(s=>{const t=s[0];A||(this.decoderConfig.wasmBinary=s[1]);const i=os.toString(),n=["/* draco decoder */",t,"","/* worker */",i.substring(i.indexOf("{")+1,i.lastIndexOf("}"))].join(`
9
- `);this.workerSourceURL=URL.createObjectURL(new Blob([n]))}),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(i){const n=i.data;switch(n.type){case"decode":t._callbacks[n.id].resolve(n);break;case"error":t._callbacks[n.id].reject(n);break;default:console.error('THREE.DRACOLoader: Unexpected message, "'+n.type+'"')}},this.workerPool.push(t)}else this.workerPool.sort(function(t,i){return t._taskLoad>i._taskLoad?-1:1});const s=this.workerPool[this.workerPool.length-1];return s._taskCosts[A]=e,s._taskLoad+=e,s})}_releaseTask(A,e){A._taskLoad-=A._taskCosts[e],delete A._callbacks[e],delete A._taskCosts[e]}debug(){console.log("Task load: ",this.workerPool.map(A=>A._taskLoad))}dispose(){for(let A=0;A<this.workerPool.length;++A)this.workerPool[A].terminate();return this.workerPool.length=0,this.workerSourceURL!==""&&URL.revokeObjectURL(this.workerSourceURL),this}}function os(){let I,A;onmessage=function(n){const r=n.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(n,r,o,a){const g=a.attributeIDs,C=a.attributeTypes;let Q,h;const d=r.GetEncodedGeometryType(o);if(d===n.TRIANGULAR_MESH)Q=new n.Mesh,h=r.DecodeArrayToMesh(o,o.byteLength,Q);else if(d===n.POINT_CLOUD)Q=new n.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,D;if(a.useUniqueIDs)D=g[c],f=r.GetAttributeByUniqueId(Q,D);else{if(D=r.GetAttributeId(Q,n[g[c]]),D===-1)continue;f=r.GetAttribute(Q,D)}const F=t(n,r,Q,c,u,f);c==="color"&&(F.vertexColorSpace=a.vertexColorSpace),l.attributes.push(F)}return d===n.TRIANGULAR_MESH&&(l.index=s(n,r,Q)),n.destroy(Q),l}function s(n,r,o){const g=o.num_faces()*3,C=g*4,Q=n._malloc(C);r.GetTrianglesUInt32Array(o,C,Q);const h=new Uint32Array(n.HEAPF32.buffer,Q,g).slice();return n._free(Q),{array:h,itemSize:1}}function t(n,r,o,a,g,C){const Q=C.num_components(),d=o.num_points()*Q,l=d*g.BYTES_PER_ELEMENT,c=i(n,g),u=n._malloc(l);r.GetAttributeDataArrayForAllPoints(o,C,c,l,u);const f=new g(n.HEAPF32.buffer,u,d).slice();return n._free(u),{name:a,array:f,itemSize:Q}}function i(n,r){switch(r){case Float32Array:return n.DT_FLOAT32;case Int8Array:return n.DT_INT8;case Int16Array:return n.DT_INT16;case Int32Array:return n.DT_INT32;case Uint8Array:return n.DT_UINT8;case Uint16Array:return n.DT_UINT16;case Uint32Array:return n.DT_UINT32}}}class rs{constructor(A=4){this.pool=A,this.queue=[],this.workers=[],this.workersResolve=[],this.workerStatus=0}_initWorker(A){if(!this.workers[A]){const e=this.workerCreator();e.addEventListener("message",this._onMessage.bind(this,A)),this.workers[A]=e}}_getIdleWorker(){for(let A=0;A<this.pool;A++)if(!(this.workerStatus&1<<A))return A;return-1}_onMessage(A,e){const s=this.workersResolve[A];if(s&&s(e),this.queue.length){const{resolve:t,msg:i,transfer:n}=this.queue.shift();this.workersResolve[A]=t,this.workers[A].postMessage(i,n)}else this.workerStatus^=1<<A}setWorkerCreator(A){this.workerCreator=A}setWorkerLimit(A){this.pool=A}postMessage(A,e){return new Promise(s=>{const t=this._getIdleWorker();t!==-1?(this._initWorker(t),this.workerStatus|=1<<t,this.workersResolve[t]=s,this.workers[t].postMessage(A,e)):this.queue.push({resolve:s,msg:A,transfer:e})})}dispose(){this.workers.forEach(A=>A.terminate()),this.workersResolve.length=0,this.workers.length=0,this.queue.length=0,this.workerStatus=0}}const Bs=0,Ye=2,as=1,qe=2,Cs=0,Is=1,gs=10,Es=0,et=9,tt=15,st=16,it=22,nt=37,ot=43,rt=76,Bt=83,at=97,Ct=100,It=103,gt=109,Et=165,ct=166;class cs{constructor(){this.vkFormat=0,this.typeSize=1,this.pixelWidth=0,this.pixelHeight=0,this.pixelDepth=0,this.layerCount=0,this.faceCount=1,this.supercompressionScheme=0,this.levels=[],this.dataFormatDescriptor=[{vendorId:0,descriptorType:0,descriptorBlockSize:0,versionNumber:2,colorModel:0,colorPrimaries:1,transferFunction:2,flags:0,texelBlockDimension:[0,0,0,0],bytesPlane:[0,0,0,0,0,0,0,0],samples:[]}],this.keyValue={},this.globalData=null}}class JA{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 H=[171,75,84,88,32,50,48,187,13,10,26,10];function Xe(I){return typeof TextDecoder!="undefined"?new TextDecoder().decode(I):Buffer.from(I).toString("utf8")}function Qs(I){const A=new Uint8Array(I.buffer,I.byteOffset,H.length);if(A[0]!==H[0]||A[1]!==H[1]||A[2]!==H[2]||A[3]!==H[3]||A[4]!==H[4]||A[5]!==H[5]||A[6]!==H[6]||A[7]!==H[7]||A[8]!==H[8]||A[9]!==H[9]||A[10]!==H[10]||A[11]!==H[11])throw new Error("Missing KTX 2.0 identifier.");const e=new cs,s=17*Uint32Array.BYTES_PER_ELEMENT,t=new JA(I,H.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 i=t._nextUint32();e.supercompressionScheme=t._nextUint32();const n=t._nextUint32(),r=t._nextUint32(),o=t._nextUint32(),a=t._nextUint32(),g=t._nextUint64(),C=t._nextUint64(),Q=new JA(I,H.length+s,3*i*8,!0);for(let T=0;T<i;T++)e.levels.push({levelData:new Uint8Array(I.buffer,I.byteOffset+Q._nextUint64(),Q._nextUint64()),uncompressedByteLength:Q._nextUint64()});const h=new JA(I,n,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 T=0;T<l;T++){const N={bitOffset:h._nextUint16(),bitLength:h._nextUint8(),channelType:h._nextUint8(),samplePosition:[h._nextUint8(),h._nextUint8(),h._nextUint8(),h._nextUint8()],sampleLower:-1/0,sampleUpper:1/0};64&N.channelType?(N.sampleLower=h._nextInt32(),N.sampleUpper=h._nextInt32()):(N.sampleLower=h._nextUint32(),N.sampleUpper=h._nextUint32()),d.samples[T]=N}e.dataFormatDescriptor.length=0,e.dataFormatDescriptor.push(d);const c=new JA(I,o,a,!0);for(;c._offset<a;){const T=c._nextUint32(),N=c._scan(T),LA=Xe(N),X=c._scan(T-N.byteLength);e.keyValue[LA]=LA.match(/^ktx/i)?Xe(X):X,c._offset%4&&c._skip(4-c._offset%4)}if(C<=0)return e;const u=new JA(I,g,C,!0),f=u._nextUint16(),D=u._nextUint16(),F=u._nextUint32(),m=u._nextUint32(),M=u._nextUint32(),w=u._nextUint32(),O=[];for(let T=0;T<i;T++)O.push({imageFlags:u._nextUint32(),rgbSliceByteOffset:u._nextUint32(),rgbSliceByteLength:u._nextUint32(),alphaSliceByteOffset:u._nextUint32(),alphaSliceByteLength:u._nextUint32()});const J=g+u._offset,q=J+F,yA=q+m,te=yA+M,aA=new Uint8Array(I.buffer,I.byteOffset+J,F),se=new Uint8Array(I.buffer,I.byteOffset+q,m),Z=new Uint8Array(I.buffer,I.byteOffset+yA,M),ie=new Uint8Array(I.buffer,I.byteOffset+te,w);return e.globalData={endpointCount:f,selectorCount:D,imageDescs:O,endpointsData:aA,selectorsData:se,tablesData:Z,extendedData:ie},e}let he,v,Me;const le={env:{emscripten_notify_memory_growth:function(I){Me=new Uint8Array(v.exports.memory.buffer)}}};class hs{init(){return he||(he=typeof fetch!="undefined"?fetch("data:application/wasm;base64,"+ve).then(A=>A.arrayBuffer()).then(A=>WebAssembly.instantiate(A,le)).then(this._init):WebAssembly.instantiate(Buffer.from(ve,"base64"),le).then(this._init),he)}_init(A){v=A.instance,le.env.emscripten_notify_memory_growth(0)}decode(A,e=0){if(!v)throw new Error("ZSTDDecoder: Await .init() before decoding.");const s=A.byteLength,t=v.exports.malloc(s);Me.set(A,t),e=e||Number(v.exports.ZSTD_findDecompressedSize(t,s));const i=v.exports.malloc(e),n=v.exports.ZSTD_decompress(i,e,t,s),r=Me.slice(i,i+n);return v.exports.free(t),v.exports.free(i),r}}const ve="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IAMNACAEQQNxBEADQCACRQ0FIAAgAkF/aiICaiIDIAEgAmotAAA6AAAgA0EDcQ0ACwsgAkEDTQ0AA0AgACACQXxqIgJqIAEgAmooAgA2AgAgAkEDSw0ACwsgAkUNAgNAIAAgAkF/aiICaiABIAJqLQAAOgAAIAINAAsMAgsgAkEDTQ0AIAIhBANAIAMgASgCADYCACABQQRqIQEgA0EEaiEDIARBfGoiBEEDSw0ACyACQQNxIQILIAJFDQADQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQX9qIgINAAsLIAAL8wICAn8BfgJAIAJFDQAgACACaiIDQX9qIAE6AAAgACABOgAAIAJBA0kNACADQX5qIAE6AAAgACABOgABIANBfWogAToAACAAIAE6AAIgAkEHSQ0AIANBfGogAToAACAAIAE6AAMgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBfGogATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQXhqIAE2AgAgAkF0aiABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkFwaiABNgIAIAJBbGogATYCACACQWhqIAE2AgAgAkFkaiABNgIAIAQgA0EEcUEYciIEayICQSBJDQAgAa0iBUIghiAFhCEFIAMgBGohAQNAIAEgBTcDGCABIAU3AxAgASAFNwMIIAEgBTcDACABQSBqIQEgAkFgaiICQR9LDQALCyAACy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAIajYCACADCy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAFajYCACADCx8AIAAgASACKAIEEAg2AgAgARAEGiAAIAJBCGo2AgQLCAAgAGdBH3MLugUBDX8jAEEQayIKJAACfyAEQQNNBEAgCkEANgIMIApBDGogAyAEEAsaIAAgASACIApBDGpBBBAVIgBBbCAAEAMbIAAgACAESxsMAQsgAEEAIAEoAgBBAXRBAmoQECENQVQgAygAACIGQQ9xIgBBCksNABogAiAAQQVqNgIAIAMgBGoiAkF8aiEMIAJBeWohDiACQXtqIRAgAEEGaiELQQQhBSAGQQR2IQRBICAAdCIAQQFyIQkgASgCACEPQQAhAiADIQYCQANAIAlBAkggAiAPS3JFBEAgAiEHAkAgCARAA0AgBEH//wNxQf//A0YEQCAHQRhqIQcgBiAQSQR/IAZBAmoiBigAACAFdgUgBUEQaiEFIARBEHYLIQQMAQsLA0AgBEEDcSIIQQNGBEAgBUECaiEFIARBAnYhBCAHQQNqIQcMAQsLIAcgCGoiByAPSw0EIAVBAmohBQNAIAIgB0kEQCANIAJBAXRqQQA7AQAgAkEBaiECDAELCyAGIA5LQQAgBiAFQQN1aiIHIAxLG0UEQCAHKAAAIAVBB3EiBXYhBAwCCyAEQQJ2IQQLIAYhBwsCfyALQX9qIAQgAEF/anEiBiAAQQF0QX9qIgggCWsiEUkNABogBCAIcSIEQQAgESAEIABIG2shBiALCyEIIA0gAkEBdGogBkF/aiIEOwEAIAlBASAGayAEIAZBAUgbayEJA0AgCSAASARAIABBAXUhACALQX9qIQsMAQsLAn8gByAOS0EAIAcgBSAIaiIFQQN1aiIGIAxLG0UEQCAFQQdxDAELIAUgDCIGIAdrQQN0awshBSACQQFqIQIgBEUhCCAGKAAAIAVBH3F2IQQMAQsLQWwgCUEBRyAFQSBKcg0BGiABIAJBf2o2AgAgBiAFQQdqQQN1aiADawwBC0FQCyEAIApBEGokACAACwkAQQFBBSAAGwsMACAAIAEoAAA2AAALqgMBCn8jAEHwAGsiCiQAIAJBAWohDiAAQQhqIQtBgIAEIAVBf2p0QRB1IQxBACECQQEhBkEBIAV0IglBf2oiDyEIA0AgAiAORkUEQAJAIAEgAkEBdCINai8BACIHQf//A0YEQCALIAhBA3RqIAI2AgQgCEF/aiEIQQEhBwwBCyAGQQAgDCAHQRB0QRB1ShshBgsgCiANaiAHOwEAIAJBAWohAgwBCwsgACAFNgIEIAAgBjYCACAJQQN2IAlBAXZqQQNqIQxBACEAQQAhBkEAIQIDQCAGIA5GBEADQAJAIAAgCUYNACAKIAsgAEEDdGoiASgCBCIGQQF0aiICIAIvAQAiAkEBajsBACABIAUgAhAUayIIOgADIAEgAiAIQf8BcXQgCWs7AQAgASAEIAZBAnQiAmooAgA6AAIgASACIANqKAIANgIEIABBAWohAAwBCwsFIAEgBkEBdGouAQAhDUEAIQcDQCAHIA1ORQRAIAsgAkEDdGogBjYCBANAIAIgDGogD3EiAiAISw0ACyAHQQFqIQcMAQsLIAZBAWohBgwBCwsgCkHwAGokAAsjAEIAIAEQCSAAhUKHla+vmLbem55/fkLj3MqV/M7y9YV/fAsQACAAQn43AwggACABNgIACyQBAX8gAARAIAEoAgQiAgRAIAEoAgggACACEQEADwsgABAmCwsfACAAIAEgAi8BABAINgIAIAEQBBogACACQQRqNgIEC0oBAX9BoCAoAgAiASAAaiIAQX9MBEBBiCBBMDYCAEF/DwsCQCAAPwBBEHRNDQAgABBmDQBBiCBBMDYCAEF/DwtBoCAgADYCACABC9cBAQh/Qbp/IQoCQCACKAIEIgggAigCACIJaiIOIAEgAGtLDQBBbCEKIAkgBCADKAIAIgtrSw0AIAAgCWoiBCACKAIIIgxrIQ0gACABQWBqIg8gCyAJQQAQKSADIAkgC2o2AgACQAJAIAwgBCAFa00EQCANIQUMAQsgDCAEIAZrSw0CIAcgDSAFayIAaiIBIAhqIAdNBEAgBCABIAgQDxoMAgsgBCABQQAgAGsQDyEBIAIgACAIaiIINgIEIAEgAGshBAsgBCAPIAUgCEEBECkLIA4hCgsgCgubAgEBfyMAQYABayINJAAgDSADNgJ8AkAgAkEDSwRAQX8hCQwBCwJAAkACQAJAIAJBAWsOAwADAgELIAZFBEBBuH8hCQwEC0FsIQkgBS0AACICIANLDQMgACAHIAJBAnQiAmooAgAgAiAIaigCABA7IAEgADYCAEEBIQkMAwsgASAJNgIAQQAhCQwCCyAKRQRAQWwhCQwCC0EAIQkgC0UgDEEZSHINAUEIIAR0QQhqIQBBACECA0AgAiAATw0CIAJBQGshAgwAAAsAC0FsIQkgDSANQfwAaiANQfgAaiAFIAYQFSICEAMNACANKAJ4IgMgBEsNACAAIA0gDSgCfCAHIAggAxAYIAEgADYCACACIQkLIA1BgAFqJAAgCQsLACAAIAEgAhALGgsQACAALwAAIAAtAAJBEHRyCy8AAn9BuH8gAUEISQ0AGkFyIAAoAAQiAEF3Sw0AGkG4fyAAQQhqIgAgACABSxsLCwkAIAAgATsAAAsDAAELigYBBX8gACAAKAIAIgVBfnE2AgBBACAAIAVBAXZqQYQgKAIAIgQgAEYbIQECQAJAIAAoAgQiAkUNACACKAIAIgNBAXENACACQQhqIgUgA0EBdkF4aiIDQQggA0EISxtnQR9zQQJ0QYAfaiIDKAIARgRAIAMgAigCDDYCAAsgAigCCCIDBEAgAyACKAIMNgIECyACKAIMIgMEQCADIAIoAgg2AgALIAIgAigCACAAKAIAQX5xajYCAEGEICEAAkACQCABRQ0AIAEgAjYCBCABKAIAIgNBAXENASADQQF2QXhqIgNBCCADQQhLG2dBH3NBAnRBgB9qIgMoAgAgAUEIakYEQCADIAEoAgw2AgALIAEoAggiAwRAIAMgASgCDDYCBAsgASgCDCIDBEAgAyABKAIINgIAQYQgKAIAIQQLIAIgAigCACABKAIAQX5xajYCACABIARGDQAgASABKAIAQQF2akEEaiEACyAAIAI2AgALIAIoAgBBAXZBeGoiAEEIIABBCEsbZ0Efc0ECdEGAH2oiASgCACEAIAEgBTYCACACIAA2AgwgAkEANgIIIABFDQEgACAFNgIADwsCQCABRQ0AIAEoAgAiAkEBcQ0AIAJBAXZBeGoiAkEIIAJBCEsbZ0Efc0ECdEGAH2oiAigCACABQQhqRgRAIAIgASgCDDYCAAsgASgCCCICBEAgAiABKAIMNgIECyABKAIMIgIEQCACIAEoAgg2AgBBhCAoAgAhBAsgACAAKAIAIAEoAgBBfnFqIgI2AgACQCABIARHBEAgASABKAIAQQF2aiAANgIEIAAoAgAhAgwBC0GEICAANgIACyACQQF2QXhqIgFBCCABQQhLG2dBH3NBAnRBgB9qIgIoAgAhASACIABBCGoiAjYCACAAIAE2AgwgAEEANgIIIAFFDQEgASACNgIADwsgBUEBdkF4aiIBQQggAUEISxtnQR9zQQJ0QYAfaiICKAIAIQEgAiAAQQhqIgI2AgAgACABNgIMIABBADYCCCABRQ0AIAEgAjYCAAsLDgAgAARAIABBeGoQJQsLgAIBA38CQCAAQQ9qQXhxQYQgKAIAKAIAQQF2ayICEB1Bf0YNAAJAQYQgKAIAIgAoAgAiAUEBcQ0AIAFBAXZBeGoiAUEIIAFBCEsbZ0Efc0ECdEGAH2oiASgCACAAQQhqRgRAIAEgACgCDDYCAAsgACgCCCIBBEAgASAAKAIMNgIECyAAKAIMIgFFDQAgASAAKAIINgIAC0EBIQEgACAAKAIAIAJBAXRqIgI2AgAgAkEBcQ0AIAJBAXZBeGoiAkEIIAJBCEsbZ0Efc0ECdEGAH2oiAygCACECIAMgAEEIaiIDNgIAIAAgAjYCDCAAQQA2AgggAkUNACACIAM2AgALIAELtwIBA38CQAJAIABBASAAGyICEDgiAA0AAkACQEGEICgCACIARQ0AIAAoAgAiA0EBcQ0AIAAgA0EBcjYCACADQQF2QXhqIgFBCCABQQhLG2dBH3NBAnRBgB9qIgEoAgAgAEEIakYEQCABIAAoAgw2AgALIAAoAggiAQRAIAEgACgCDDYCBAsgACgCDCIBBEAgASAAKAIINgIACyACECchAkEAIQFBhCAoAgAhACACDQEgACAAKAIAQX5xNgIAQQAPCyACQQ9qQXhxIgMQHSICQX9GDQIgAkEHakF4cSIAIAJHBEAgACACaxAdQX9GDQMLAkBBhCAoAgAiAUUEQEGAICAANgIADAELIAAgATYCBAtBhCAgADYCACAAIANBAXRBAXI2AgAMAQsgAEUNAQsgAEEIaiEBCyABC7kDAQJ/IAAgA2ohBQJAIANBB0wEQANAIAAgBU8NAiAAIAItAAA6AAAgAEEBaiEAIAJBAWohAgwAAAsACyAEQQFGBEACQCAAIAJrIgZBB00EQCAAIAItAAA6AAAgACACLQABOgABIAAgAi0AAjoAAiAAIAItAAM6AAMgAEEEaiACIAZBAnQiBkHAHmooAgBqIgIQFyACIAZB4B5qKAIAayECDAELIAAgAhAMCyACQQhqIQIgAEEIaiEACwJAAkACQAJAIAUgAU0EQCAAIANqIQEgBEEBRyAAIAJrQQ9Kcg0BA0AgACACEAwgAkEIaiECIABBCGoiACABSQ0ACwwFCyAAIAFLBEAgACEBDAQLIARBAUcgACACa0EPSnINASAAIQMgAiEEA0AgAyAEEAwgBEEIaiEEIANBCGoiAyABSQ0ACwwCCwNAIAAgAhAHIAJBEGohAiAAQRBqIgAgAUkNAAsMAwsgACEDIAIhBANAIAMgBBAHIARBEGohBCADQRBqIgMgAUkNAAsLIAIgASAAa2ohAgsDQCABIAVPDQEgASACLQAAOgAAIAFBAWohASACQQFqIQIMAAALAAsLQQECfyAAIAAoArjgASIDNgLE4AEgACgCvOABIQQgACABNgK84AEgACABIAJqNgK44AEgACABIAQgA2tqNgLA4AELpgEBAX8gACAAKALs4QEQFjYCyOABIABCADcD+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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",de=new WeakMap;let ue=0,fe;class Y extends B.Loader{constructor(A){super(A),this.transcoderPath="",this.transcoderBinary=null,this.transcoderPending=null,this.workerPool=new rs,this.workerSourceURL="",this.workerConfig=null,typeof MSC_TRANSCODER!="undefined"&&console.warn('THREE.KTX2Loader: Please update to latest "basis_transcoder". "msc_basis_transcoder" is no longer supported in three.js r125+.')}setTranscoderPath(A){return this.transcoderPath=A,this}setWorkerLimit(A){return this.workerPool.setWorkerLimit(A),this}detectSupportAsync(A){return TA(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(([i,n])=>{const r=Y.BasisWorker.toString(),o=["/* constants */","let _EngineFormat = "+JSON.stringify(Y.EngineFormat),"let _TranscoderFormat = "+JSON.stringify(Y.TranscoderFormat),"let _BasisFormat = "+JSON.stringify(Y.BasisFormat),"/* basis_transcoder.js */",i,"/* worker */",r.substring(r.indexOf("{")+1,r.lastIndexOf("}"))].join(`
10
- `);this.workerSourceURL=URL.createObjectURL(new Blob([o])),this.transcoderBinary=n,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})}),ue>0&&console.warn("THREE.KTX2Loader: Multiple active KTX2 loaders may cause performance issues. Use a single KTX2Loader instance, or call .dispose() on old instances."),ue++}return this.transcoderPending}load(A,e,s,t){if(this.workerConfig===null)throw new Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");const i=new B.FileLoader(this.manager);i.setResponseType("arraybuffer"),i.setWithCredentials(this.withCredentials),i.load(A,n=>{if(de.has(n))return de.get(n).promise.then(e).catch(t);this._createTexture(n).then(r=>e?e(r):null).catch(t)},s,t)}_createTextureFrom(A,e){const{faces:s,width:t,height:i,format:n,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,n,B.UnsignedByteType);else{const C=s[0].mipmaps;g=e.layerCount>1?new B.CompressedArrayTexture(C,t,i,e.layerCount,n,B.UnsignedByteType):new B.CompressedTexture(C,t,i,n,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=Qt(e),g.premultiplyAlpha=!!(a&as),g}_createTexture(s){return TA(this,arguments,function*(A,e={}){const t=Qs(new Uint8Array(A));if(t.vkFormat!==Es)return ds(t);const i=e,n=this.init().then(()=>this.workerPool.postMessage({type:"transcode",buffer:A,taskConfig:i},[A])).then(r=>this._createTextureFrom(r.data,t));return de.set(A,{promise:n}),n})}dispose(){return this.workerPool.dispose(),this.workerSourceURL&&URL.revokeObjectURL(this.workerSourceURL),ue--,this}}Y.BasisFormat={ETC1S:0,UASTC_4x4:1};Y.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};Y.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};Y.BasisWorker=function(){let I,A,e;const s=_EngineFormat,t=_TranscoderFormat,i=_BasisFormat;self.addEventListener("message",function(d){const l=d.data;switch(l.type){case"init":I=l.config,n(l.transcoderBinary);break;case"transcode":A.then(()=>{try{const{faces:c,buffers:u,width:f,height:D,hasAlpha:F,format:m,dfdFlags:M}=r(l.buffer);self.postMessage({type:"transcode",id:l.id,faces:c,width:f,height:D,hasAlpha:F,format:m,dfdFlags:M},u)}catch(c){console.error(c),self.postMessage({type:"error",id:l.id,error:c.message})}});break}});function n(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()?i.UASTC_4x4:i.ETC1S,f=l.getWidth(),D=l.getHeight(),F=l.getLayers()||1,m=l.getLevels(),M=l.getFaces(),w=l.getHasAlpha(),O=l.getDFDFlags(),{transcoderFormat:J,engineFormat:q}=C(u,f,D,w);if(!f||!D||!m)throw c(),new Error("THREE.KTX2Loader: Invalid texture");if(!l.startTranscoding())throw c(),new Error("THREE.KTX2Loader: .startTranscoding failed");const yA=[],te=[];for(let aA=0;aA<M;aA++){const se=[];for(let Z=0;Z<m;Z++){const ie=[];let T,N;for(let X=0;X<F;X++){const QA=l.getImageLevelInfo(Z,X,aA);aA===0&&Z===0&&X===0&&(QA.origWidth%4!==0||QA.origHeight%4!==0)&&console.warn("THREE.KTX2Loader: ETC1S and UASTC textures should use multiple-of-four dimensions."),m>1?(T=QA.origWidth,N=QA.origHeight):(T=QA.width,N=QA.height);const Je=new Uint8Array(l.getImageTranscodedSizeInBytes(Z,X,0,J));if(!l.transcodeImage(Je,Z,X,aA,J,0,-1,-1))throw c(),new Error("THREE.KTX2Loader: .transcodeImage failed.");ie.push(Je)}const LA=h(ie);se.push({data:LA,width:T,height:N}),te.push(LA.buffer)}yA.push({mipmaps:se,width:f,height:D,format:q})}return c(),{faces:yA,buffers:te,width:f,height:D,hasAlpha:w,format:q,dfdFlags:O}}const o=[{if:"astcSupported",basisFormat:[i.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:[i.ETC1S,i.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:[i.ETC1S,i.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:[i.ETC1S,i.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:[i.ETC1S,i.UASTC_4x4],transcoderFormat:[t.ETC1],engineFormat:[s.RGB_ETC1_Format],priorityETC1S:2,priorityUASTC:4,needsPowerOfTwo:!1},{if:"pvrtcSupported",basisFormat:[i.ETC1S,i.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,D;const F=d===i.ETC1S?a:g;for(let m=0;m<F.length;m++){const M=F[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],D=M.engineFormat[u?1:0],{transcoderFormat:f,engineFormat:D}}return console.warn("THREE.KTX2Loader: No suitable compressed texture format found. Decoding to RGBA32."),f=t.RGBA32,D=s.RGBAFormat,{transcoderFormat:f,engineFormat:D}}function Q(d){return d<=2?!0:(d&d-1)===0&&d!==0}function h(d){if(d.length===1)return d[0];let l=0;for(let f=0;f<d.length;f++){const D=d[f];l+=D.byteLength}const c=new Uint8Array(l);let u=0;for(let f=0;f<d.length;f++){const D=d[f];c.set(D,u),u+=D.byteLength}return c}};const ls=new Set([B.RGBAFormat,B.RGFormat,B.RedFormat]),De={[gt]:B.RGBAFormat,[at]:B.RGBAFormat,[nt]:B.RGBAFormat,[ot]:B.RGBAFormat,[It]:B.RGFormat,[Bt]:B.RGFormat,[st]:B.RGFormat,[it]:B.RGFormat,[Ct]:B.RedFormat,[rt]:B.RedFormat,[tt]:B.RedFormat,[et]:B.RedFormat,[ct]:B.RGBA_ASTC_6x6_Format,[Et]:B.RGBA_ASTC_6x6_Format},Fe={[gt]:B.FloatType,[at]:B.HalfFloatType,[nt]:B.UnsignedByteType,[ot]:B.UnsignedByteType,[It]:B.FloatType,[Bt]:B.HalfFloatType,[st]:B.UnsignedByteType,[it]:B.UnsignedByteType,[Ct]:B.FloatType,[rt]:B.HalfFloatType,[tt]:B.UnsignedByteType,[et]:B.UnsignedByteType,[ct]:B.UnsignedByteType,[Et]:B.UnsignedByteType};function ds(I){return TA(this,null,function*(){const{vkFormat:A}=I;if(De[A]===void 0)throw new Error("THREE.KTX2Loader: Unsupported vkFormat.");let e;I.supercompressionScheme===Ye&&(fe||(fe=new Promise(i=>TA(this,null,function*(){const n=new hs;yield n.init(),i(n)}))),e=yield fe);const s=[];for(let i=0;i<I.levels.length;i++){const n=Math.max(1,I.pixelWidth>>i),r=Math.max(1,I.pixelHeight>>i),o=I.pixelDepth?Math.max(1,I.pixelDepth>>i):0,a=I.levels[i];let g;if(I.supercompressionScheme===Bs)g=a.levelData;else if(I.supercompressionScheme===Ye)g=e.decode(a.levelData,a.uncompressedByteLength);else throw new Error("THREE.KTX2Loader: Unsupported supercompressionScheme.");let C;Fe[A]===B.FloatType?C=new Float32Array(g.buffer,g.byteOffset,g.byteLength/Float32Array.BYTES_PER_ELEMENT):Fe[A]===B.HalfFloatType?C=new Uint16Array(g.buffer,g.byteOffset,g.byteLength/Uint16Array.BYTES_PER_ELEMENT):C=g,s.push({data:C,width:n,height:r,depth:o})}let t;if(ls.has(De[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=Fe[A],t.format=De[A],t.colorSpace=Qt(I),t.needsUpdate=!0,Promise.resolve(t)})}function Qt(I){const A=I.dataFormatDescriptor[0];return A.colorPrimaries===Is?A.transferFunction===qe?B.SRGBColorSpace:B.LinearSRGBColorSpace:A.colorPrimaries===gs?A.transferFunction===qe?B.DisplayP3ColorSpace:B.LinearDisplayP3ColorSpace:(A.colorPrimaries===Cs||console.warn(`THREE.KTX2Loader: Unsupported color primaries, "${A.colorPrimaries}"`),B.NoColorSpace)}let re;const us=()=>{if(re)return re;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 i;const n=WebAssembly.instantiate(r(t),{}).then(C=>{i=C.instance,i.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=i.exports.sbrk,f=h+3&-4,D=u(f*d),F=u(l.length),m=new Uint8Array(i.exports.memory.buffer);m.set(l,F);const M=C(D,h,d,F,l.length);if(M===0&&c&&c(D,f,d),Q.set(m.subarray(D,D+h*d)),u(D-u(0)),M!==0)throw new Error(`Malformed buffer data: ${M}`)}const a={0:"",1:"meshopt_decodeFilterOct",2:"meshopt_decodeFilterQuat",3:"meshopt_decodeFilterExp",NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp"},g={0:"meshopt_decodeVertexBuffer",1:"meshopt_decodeIndexBuffer",2:"meshopt_decodeIndexSequence",ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"};return re={ready:n,supported:!0,decodeVertexBuffer(C,Q,h,d,l){o(i.exports.meshopt_decodeVertexBuffer,C,Q,h,d,i.exports[a[l]])},decodeIndexBuffer(C,Q,h,d){o(i.exports.meshopt_decodeIndexBuffer,C,Q,h,d)},decodeIndexSequence(C,Q,h,d){o(i.exports.meshopt_decodeIndexSequence,C,Q,h,d)},decodeGltfBuffer(C,Q,h,d,l,c){o(i.exports[g[l]],C,Q,h,d,i.exports[a[c]])}},re};var FA,PA,YA,qA;class fs{constructor(){G(this,FA,new pt);G(this,PA,new ns().setDecoderPath(`${k.CDNVersion}/examples/jsm/libs/draco/gltf/`));G(this,YA,new Y().setTranscoderPath(`${k.CDNVersion}/examples/jsm/libs/basis/`));G(this,qA,!1);E(this,FA).setCrossOrigin("anonymous").setDRACOLoader(E(this,PA)).setMeshoptDecoder(us)}get gltfLoader(){return E(this,FA)}get dracoLoader(){return E(this,PA)}get ktx2Loader(){return E(this,YA)}load(...A){E(this,qA)||(E(this,FA).setKTX2Loader(E(this,YA).detectSupport(k.webglRenderer)),R(this,qA,!0)),this.gltfLoader.load(...A)}}FA=new WeakMap,PA=new WeakMap,YA=new WeakMap,qA=new WeakMap;const ht=new fs;var iA,y,j,XA;class Ds{constructor(A,e){G(this,iA,void 0);G(this,y,void 0);G(this,j,[]);G(this,XA,()=>{const A=E(this,y).left-E(this,iA).left,e=E(this,y).top-E(this,iA).top,s=E(this,y).position.x-E(this,y).left,t=E(this,y).position.y-E(this,y).top,i=E(this,iA).width-E(this,y).scale.x,n=A-i,r=E(this,iA).height-E(this,y).scale.y,o=e-r;E(this,j)[0].constant=E(this,y).scale.y/2+t*-1-r/2-o,E(this,j)[1].constant=E(this,y).scale.y/2+t+r/2+o,E(this,j)[2].constant=E(this,y).scale.x/2+s+i/2+n,E(this,j)[3].constant=E(this,y).scale.x/2+s*-1-i/2-n});R(this,iA,k.getView((e==null?void 0:e.viewName)||"default")),R(this,y,new Ze.LayoutBox(A,{cartesian:!1}));const s=(e==null?void 0:e.scale)||1;R(this,j,[new B.Plane(new B.Vector3(0,-1*s,0)),new B.Plane(new B.Vector3(0,1*s,0)),new B.Plane(new B.Vector3(-1*s,0,0)),new B.Plane(new B.Vector3(1*s,0,0))]),SA.ticker.subscribe(E(this,XA),{order:NA.TICK_ORDER.LAYOUT_BOX})}get planes(){return E(this,j)}get layoutBox(){return E(this,y)}destroy(){SA.ticker.unsubscribe(E(this,XA)),E(this,y).destroy()}}iA=new WeakMap,y=new WeakMap,j=new WeakMap,XA=new WeakMap;class Fs extends B.Group{constructor(A,e=500){super(),this.add(new B.PlaneHelper(A.planes[0],e,16711680)),this.add(new B.PlaneHelper(A.planes[1],e,16711680)),this.add(new B.PlaneHelper(A.planes[2],e,16711680)),this.add(new B.PlaneHelper(A.planes[3],e,16711680))}}var GA,EA,RA,vA,VA,nA,pA,WA;class Le extends Gt.SourceManager{constructor(e){super(e);G(this,GA,new ke.Store(null));G(this,EA,new ke.Store(void 0));G(this,RA,void 0);G(this,vA,void 0);G(this,VA,void 0);G(this,nA,void 0);G(this,pA,!1);G(this,WA,()=>{if(!(E(this,nA)&&!E(this,pA))&&(this.current!==this.previous&&(E(this,GA).current=null),this.current)){const e=E(this,VA)?this.current.url:this.current.name+this.current.extension;E(this,nA)||Ie.loading.setTotal(e,1),E(this,EA).current="start",E(this,vA).load(e,s=>{E(this,GA).current=s,E(this,EA).current="complete",E(this,nA)||Ie.loading.setLoaded(e,1)},void 0,()=>{E(this,nA)||(E(this,EA).current="error",Ie.loading.setError(e,e))})}});R(this,RA,e.consumer),R(this,vA,e.loader),R(this,VA,e.keepSourceParameters||!1),R(this,nA,e.lazy||!1),this.subscribe(E(this,WA)),E(this,RA).addEventListener("added",()=>{this.connect()}),E(this,RA).addEventListener("removed",()=>{this.disconnect()})}get data(){return E(this,GA)}get loading(){return E(this,EA)}lazyLoad(){E(this,pA)||(R(this,pA,!0),E(this,WA).call(this))}}GA=new WeakMap,EA=new WeakMap,RA=new WeakMap,vA=new WeakMap,VA=new WeakMap,nA=new WeakMap,pA=new WeakMap,WA=new WeakMap;var mA;class Gs extends B.Group{constructor(e){super();G(this,mA,void 0);R(this,mA,new Le(hA({loader:ht,consumer:this},e))),E(this,mA).data.subscribe(s=>{s.current?this.add(...s.current.scene.children):this.children.forEach(t=>{this.remove(t),ye(t)})})}get sourceManager(){return E(this,mA)}}mA=new WeakMap;function Te(I,A,e){const s=A.x,t=A.y,i=e||I.image.width/I.image.height;let n=0,r=0,o=I.offset.x,a=I.offset.y,g=I.rotation,C=I.center.x,Q=I.center.y;s/t>i?(n=1,r=t/s*i):(r=1,n=s/t/i),I.matrix.setUvTransform(o,a,n,r,g,C,Q)}const UA=new B.Vector3;function b(I,A,e,s,t,i){const n=2*Math.PI*t/4,r=Math.max(i-2*t,0),o=Math.PI/4;UA.copy(A),UA[s]=0,UA.normalize();const a=.5*n/(n+r),g=1-UA.angleTo(I)/o;return Math.sign(UA[e])===1?g*a:r/(n+r)+a+a*(1-g)}class Rs extends B.BoxGeometry{constructor(A=1,e=1,s=1,t=2,i=.1){if(t=t*2+1,i=Math.min(A/2,e/2,s/2,i),super(1,1,1,t,t,t),t===1)return;const n=this.toNonIndexed();this.index=null,this.attributes.position=n.attributes.position,this.attributes.normal=n.attributes.normal,this.attributes.uv=n.attributes.uv;const r=new B.Vector3,o=new B.Vector3,a=new B.Vector3(A,e,s).divideScalar(2).subScalar(i),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*i,g[c+1]=a.y*Math.sign(r.y)+o.y*i,g[c+2]=a.z*Math.sign(r.z)+o.z*i,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]=b(d,o,"z","y",i,s),Q[u+1]=1-b(d,o,"y","z",i,e);break;case 1:d.set(-1,0,0),Q[u+0]=1-b(d,o,"z","y",i,s),Q[u+1]=1-b(d,o,"y","z",i,e);break;case 2:d.set(0,1,0),Q[u+0]=1-b(d,o,"x","z",i,A),Q[u+1]=b(d,o,"z","x",i,s);break;case 3:d.set(0,-1,0),Q[u+0]=1-b(d,o,"x","z",i,A),Q[u+1]=1-b(d,o,"z","x",i,s);break;case 4:d.set(0,0,1),Q[u+0]=1-b(d,o,"x","y",i,A),Q[u+1]=1-b(d,o,"y","x",i,e);break;case 5:d.set(0,0,-1),Q[u+0]=b(d,o,"x","y",i,A),Q[u+1]=1-b(d,o,"y","x",i,e);break}}}const Ve=new B.Vector3,ps=new B.Quaternion,We=new B.Vector3;class ms extends B.Object3D{constructor(A=document.createElement("div")){super(),this.isCSS3DObject=!0,this.element=A,this.element.style.position="absolute",this.element.style.pointerEvents="auto",this.element.style.userSelect="none",this.element.setAttribute("draggable",!1),this.addEventListener("removed",function(){this.traverse(function(e){e.element instanceof Element&&e.element.parentNode!==null&&e.element.parentNode.removeChild(e.element)})})}copy(A,e){return super.copy(A,e),this.element=A.element.cloneNode(!0),this}}const _=new B.Matrix4,Ms=new B.Matrix4;class ws{constructor(A={}){const e=this;let s,t,i,n;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]*n;c.view&&c.view.enabled?(a.style.transform=`translate( ${-c.view.offsetX*(s/c.view.width)}px, ${-c.view.offsetY*(t/c.view.height)}px )`,a.style.transform+=`scale( ${c.view.fullWidth/c.view.width}, ${c.view.fullHeight/c.view.height} )`):a.style.transform="",l.matrixWorldAutoUpdate===!0&&l.updateMatrixWorld(),c.parent===null&&c.matrixWorldAutoUpdate===!0&&c.updateMatrixWorld();let f,D;c.isOrthographicCamera&&(f=-(c.right+c.left)/2,D=(c.top+c.bottom)/2);const F=c.view&&c.view.enabled?c.view.height/c.view.fullHeight:1,m=c.isOrthographicCamera?`scale( ${F} )scale(`+u+")translate("+C(f)+"px,"+C(D)+"px)"+Q(c.matrixWorldInverse):`scale( ${F} )translateZ(`+u+"px)"+Q(c.matrixWorldInverse),w=(c.isPerspectiveCamera?"perspective("+u+"px) ":"")+m+"translate("+i+"px,"+n+"px)";r.camera.style!==w&&(g.style.transform=w,r.camera.style=w),d(l,l,c)},this.setSize=function(l,c){s=l,t=c,i=s/2,n=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 D=l.visible===!0&&l.layers.test(u.layers)===!0;if(l.element.style.display=D===!0?"":"none",D===!0){l.onBeforeRender(e,c,u);let F;l.isCSS3DSprite?(_.copy(u.matrixWorldInverse),_.transpose(),l.rotation2D!==0&&_.multiply(Ms.makeRotationZ(l.rotation2D)),l.matrixWorld.decompose(Ve,ps,We),_.setPosition(Ve),_.scale(We),_.elements[3]=0,_.elements[7]=0,_.elements[11]=0,_.elements[15]=1,F=h(_)):F=h(l.matrixWorld);const m=l.element,M=r.objects.get(l);if(M===void 0||M.style!==F){m.style.transform=F;const w={style:F};r.objects.set(l,w)}m.parentNode!==g&&g.appendChild(m),l.onAfterRender(e,c,u)}}for(let D=0,F=l.children.length;D<F;D++)d(l.children[D],c,u)}}}var oA,MA,cA;class He extends B.Mesh{constructor(e){super(new Rs(e.width,e.height,1,e.segments,e.round||0),e.material);G(this,oA,void 0);G(this,MA,void 0);G(this,cA,()=>{E(this,oA).data.current&&E(this,MA)&&this.onCoverResize(E(this,oA).data.current)});R(this,oA,new Le(hA({consumer:this},e))),R(this,MA,e.cover||!1),this.addEventListener("added",()=>{wA.windowResizer.subscribe(E(this,cA))}),this.addEventListener("removed",()=>{wA.windowResizer.unsubscribe(E(this,cA))}),E(this,oA).data.subscribe(s=>{!s.current&&s.previous?s.previous.dispose():s.current&&this.material&&(E(this,MA)&&(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,cA).call(this))})}get sourceManager(){return E(this,oA)}updateTexture(){E(this,cA).call(this)}onCoverResize(e){Te(e,{x:this.scale.x,y:this.scale.y})}}oA=new WeakMap,MA=new WeakMap,cA=new WeakMap;class Ss extends He{constructor(A){super(ne(hA({},A),{loader:ze}))}}class ys{load(...A){const e=A[0],s=A[1],t=A[3],i=document.createElement("video");i.src=e,i.onloadeddata=()=>{s(new B.VideoTexture(i)),i.onerror=null,i.onloadeddata=null},i.onerror=()=>{t==null||t(e),i.onerror=null,i.onloadeddata=null}}}var jA,ZA,zA;class Ls extends He{constructor(e){super(ne(hA({},e),{loader:new ys}));G(this,jA,void 0);G(this,ZA,void 0);G(this,zA,void 0);R(this,jA,e.autoplay||!1),R(this,ZA,e.muted||!1),R(this,zA,e.loop||!1),this.sourceManager.data.subscribe(s=>{if(s.current){const t=s.current.image;E(this,ZA)&&(t.muted=!0),E(this,zA)&&(t.loop=!0),E(this,jA)&&t.play()}})}onCoverResize(e){const s=e.image;Te(e,{x:this.scale.x,y:this.scale.y},s.videoWidth/s.videoHeight)}}jA=new WeakMap,ZA=new WeakMap,zA=new WeakMap;function Ts(I,A){I.traverse(e=>{e instanceof B.Mesh&&A(e)})}function Hs(I,A){I.traverse(e=>{e instanceof B.Mesh&&e.material&&(Array.isArray(e.material)?e.material:[e.material]).forEach(A)})}const Ge=new B.Vector3,Js=new B.Vector3;function Us(I,A="default"){const e=k.getView(A),{width:s,height:t}=k,i=s/t;I instanceof B.Vector3?Ge.copy(I):Ge.set(...I);const n=e.camera.getWorldPosition(Js).distanceTo(Ge);if(e.camera instanceof B.OrthographicCamera)return{width:s/e.camera.zoom,height:t/e.camera.zoom,factor:1,distance:n,aspect:i};{const r=e.camera.fov*Math.PI/180,o=2*Math.tan(r/2)*n,a=o*(s/t);return{width:a,height:o,factor:s/a,distance:n,aspect:i}}}var P,ae,lt,$A,Ae;const x=class x extends ms{static destroy(){wA.windowResizer.unsubscribe(E(this,Ae)),SA.ticker.unsubscribe(E(this,$A)),R(this,P,null)}constructor(A){var e;super(A.element),E(x,P)||oe(e=x,ae,lt).call(e)}};P=new WeakMap,ae=new WeakSet,lt=function(){R(x,P,new ws),E(x,P).domElement.style.cssText=`
8
+ `,E(this,sA).append(E(this,S).domElement),E(this,J).set("default",new Re("default",A==null?void 0:A.view)),R(this,gA,!0),wA.windowResizer.subscribe(E(this,OA),NA.RESIZE_ORDER.EN3),SA.ticker.subscribe(E(this,_A),{order:NA.TICK_ORDER.EN3})}destroy(){if(!E(this,gA)){console.warn("[en3.setup]: You are trying to destory en3 but it has not been initialized.");return}wA.windowResizer.unsubscribe(E(this,OA)),SA.ticker.unsubscribe(E(this,_A)),E(this,J).forEach(A=>{A.destroy()}),E(this,S).dispose(),E(this,S).domElement.remove(),R(this,S,null),R(this,gA,!1)}createView(A,e){const s=E(this,J).size,t=new Re(A,e);return E(this,J).set(A,t),t.resize(),s<=1&&E(this,S).setScissorTest(!0),t}getView(A){return E(this,J).get(A)}destroyView(A){const e=E(this,J).get(A);e&&(E(this,J).delete(A),e.destroy(),E(this,J).size<=1&&E(this,S).setScissorTest(!1))}render(A){var e;E(this,J).size>1&&(E(this,S).setScissor(A.left,A.top,A.width,A.height),E(this,S).setViewport(A.left,A.top,A.width,A.height)),(e=A.beforeRenderCallback)==null||e.call(A),E(this,S).render(A.scene,A.camera)}}Be=new WeakMap,sA=new WeakMap,S=new WeakMap,J=new WeakMap,uA=new WeakMap,fA=new WeakMap,DA=new WeakMap,KA=new WeakMap,gA=new WeakMap,OA=new WeakMap,_A=new WeakMap;const k=new Rt,ze=new B.TextureLoader;function be(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 n=[],r=I.getAttribute("position");if(r!==void 0){for(let o=0;o<r.count;o++)n.push(o);I.setIndex(n),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 n=1;n<=s;n++)t.push(e.getX(0)),t.push(e.getX(n)),t.push(e.getX(n+1));else for(let n=0;n<s;n++)n%2===0?(t.push(e.getX(n)),t.push(e.getX(n+1)),t.push(e.getX(n+2))):(t.push(e.getX(n+2)),t.push(e.getX(n+1)),t.push(e.getX(n)));t.length/3!==s&&console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");const i=I.clone();return i.setIndex(t),i.clearGroups(),i}else return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:",A),I}class pt extends B.Loader{constructor(A){super(A),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(e){return new yt(e)}),this.register(function(e){return new bt(e)}),this.register(function(e){return new Kt(e)}),this.register(function(e){return new Ot(e)}),this.register(function(e){return new Tt(e)}),this.register(function(e){return new Ht(e)}),this.register(function(e){return new Jt(e)}),this.register(function(e){return new Ut(e)}),this.register(function(e){return new St(e)}),this.register(function(e){return new Nt(e)}),this.register(function(e){return new Lt(e)}),this.register(function(e){return new kt(e)}),this.register(function(e){return new xt(e)}),this.register(function(e){return new Mt(e)}),this.register(function(e){return new _t(e)}),this.register(function(e){return new Pt(e)})}load(A,e,s,t){const i=this;let n;if(this.resourcePath!=="")n=this.resourcePath;else if(this.path!==""){const a=B.LoaderUtils.extractUrlBase(A);n=B.LoaderUtils.resolveURL(a,this.path)}else n=B.LoaderUtils.extractUrlBase(A);this.manager.itemStart(A);const r=function(a){t?t(a):console.error(a),i.manager.itemError(A),i.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{i.parse(a,n,function(g){e(g),i.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 i;const n={},r={},o=new TextDecoder;if(typeof A=="string")i=JSON.parse(A);else if(A instanceof ArrayBuffer)if(o.decode(new Uint8Array(A,0,4))===$e){try{n[p.KHR_BINARY_GLTF]=new Yt(A)}catch(C){t&&t(C);return}i=JSON.parse(n[p.KHR_BINARY_GLTF].content)}else i=JSON.parse(o.decode(A));else i=A;if(i.asset===void 0||i.asset.version[0]<2){t&&t(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported."));return}const a=new ss(i,{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,n[C.name]=!0}if(i.extensionsUsed)for(let g=0;g<i.extensionsUsed.length;++g){const C=i.extensionsUsed[g],Q=i.extensionsRequired||[];switch(C){case p.KHR_MATERIALS_UNLIT:n[C]=new wt;break;case p.KHR_DRACO_MESH_COMPRESSION:n[C]=new qt(i,this.dracoLoader);break;case p.KHR_TEXTURE_TRANSFORM:n[C]=new Xt;break;case p.KHR_MESH_QUANTIZATION:n[C]=new vt;break;default:Q.indexOf(C)>=0&&r[C]===void 0&&console.warn('THREE.GLTFLoader: Unknown extension "'+C+'".')}}a.setExtensions(n),a.setPlugins(r),a.parse(s,t)}parseAsync(A,e){const s=this;return new Promise(function(t,i){s.parse(A,e,t,i)})}}function mt(){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 p={KHR_BINARY_GLTF:"KHR_binary_glTF",KHR_DRACO_MESH_COMPRESSION:"KHR_draco_mesh_compression",KHR_LIGHTS_PUNCTUAL:"KHR_lights_punctual",KHR_MATERIALS_CLEARCOAT:"KHR_materials_clearcoat",KHR_MATERIALS_IOR:"KHR_materials_ior",KHR_MATERIALS_SHEEN:"KHR_materials_sheen",KHR_MATERIALS_SPECULAR:"KHR_materials_specular",KHR_MATERIALS_TRANSMISSION:"KHR_materials_transmission",KHR_MATERIALS_IRIDESCENCE:"KHR_materials_iridescence",KHR_MATERIALS_ANISOTROPY:"KHR_materials_anisotropy",KHR_MATERIALS_UNLIT:"KHR_materials_unlit",KHR_MATERIALS_VOLUME:"KHR_materials_volume",KHR_TEXTURE_BASISU:"KHR_texture_basisu",KHR_TEXTURE_TRANSFORM:"KHR_texture_transform",KHR_MESH_QUANTIZATION:"KHR_mesh_quantization",KHR_MATERIALS_EMISSIVE_STRENGTH:"KHR_materials_emissive_strength",EXT_MATERIALS_BUMP:"EXT_materials_bump",EXT_TEXTURE_WEBP:"EXT_texture_webp",EXT_TEXTURE_AVIF:"EXT_texture_avif",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression",EXT_MESH_GPU_INSTANCING:"EXT_mesh_gpu_instancing"};class Mt{constructor(A){this.parser=A,this.name=p.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){const A=this.parser,e=this.parser.json.nodes||[];for(let s=0,t=e.length;s<t;s++){const i=e[s];i.extensions&&i.extensions[this.name]&&i.extensions[this.name].light!==void 0&&A._addNodeRef(this.cache,i.extensions[this.name].light)}}_loadLight(A){const e=this.parser,s="light:"+A;let t=e.cache.get(s);if(t)return t;const i=e.json,o=((i.extensions&&i.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,$(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,i=s.json.nodes[A],r=(i.extensions&&i.extensions[this.name]||{}).light;return r===void 0?null:this._loadLight(r).then(function(o){return s._getNodeRef(e.cache,r,o)})}}class wt{constructor(){this.name=p.KHR_MATERIALS_UNLIT}getMaterialType(){return B.MeshBasicMaterial}extendParams(A,e,s){const t=[];A.color=new B.Color(1,1,1),A.opacity=1;const i=e.pbrMetallicRoughness;if(i){if(Array.isArray(i.baseColorFactor)){const n=i.baseColorFactor;A.color.setRGB(n[0],n[1],n[2],B.LinearSRGBColorSpace),A.opacity=n[3]}i.baseColorTexture!==void 0&&t.push(s.assignTexture(A,"map",i.baseColorTexture,B.SRGBColorSpace))}return Promise.all(t)}}class St{constructor(A){this.parser=A,this.name=p.KHR_MATERIALS_EMISSIVE_STRENGTH}extendMaterialParams(A,e){const t=this.parser.json.materials[A];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const i=t.extensions[this.name].emissiveStrength;return i!==void 0&&(e.emissiveIntensity=i),Promise.resolve()}}class yt{constructor(A){this.parser=A,this.name=p.KHR_MATERIALS_CLEARCOAT}getMaterialType(A){const s=this.parser.json.materials[A];return!s.extensions||!s.extensions[this.name]?null:B.MeshPhysicalMaterial}extendMaterialParams(A,e){const s=this.parser,t=s.json.materials[A];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const i=[],n=t.extensions[this.name];if(n.clearcoatFactor!==void 0&&(e.clearcoat=n.clearcoatFactor),n.clearcoatTexture!==void 0&&i.push(s.assignTexture(e,"clearcoatMap",n.clearcoatTexture)),n.clearcoatRoughnessFactor!==void 0&&(e.clearcoatRoughness=n.clearcoatRoughnessFactor),n.clearcoatRoughnessTexture!==void 0&&i.push(s.assignTexture(e,"clearcoatRoughnessMap",n.clearcoatRoughnessTexture)),n.clearcoatNormalTexture!==void 0&&(i.push(s.assignTexture(e,"clearcoatNormalMap",n.clearcoatNormalTexture)),n.clearcoatNormalTexture.scale!==void 0)){const r=n.clearcoatNormalTexture.scale;e.clearcoatNormalScale=new B.Vector2(r,r)}return Promise.all(i)}}class Lt{constructor(A){this.parser=A,this.name=p.KHR_MATERIALS_IRIDESCENCE}getMaterialType(A){const s=this.parser.json.materials[A];return!s.extensions||!s.extensions[this.name]?null:B.MeshPhysicalMaterial}extendMaterialParams(A,e){const s=this.parser,t=s.json.materials[A];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const i=[],n=t.extensions[this.name];return n.iridescenceFactor!==void 0&&(e.iridescence=n.iridescenceFactor),n.iridescenceTexture!==void 0&&i.push(s.assignTexture(e,"iridescenceMap",n.iridescenceTexture)),n.iridescenceIor!==void 0&&(e.iridescenceIOR=n.iridescenceIor),e.iridescenceThicknessRange===void 0&&(e.iridescenceThicknessRange=[100,400]),n.iridescenceThicknessMinimum!==void 0&&(e.iridescenceThicknessRange[0]=n.iridescenceThicknessMinimum),n.iridescenceThicknessMaximum!==void 0&&(e.iridescenceThicknessRange[1]=n.iridescenceThicknessMaximum),n.iridescenceThicknessTexture!==void 0&&i.push(s.assignTexture(e,"iridescenceThicknessMap",n.iridescenceThicknessTexture)),Promise.all(i)}}class Tt{constructor(A){this.parser=A,this.name=p.KHR_MATERIALS_SHEEN}getMaterialType(A){const s=this.parser.json.materials[A];return!s.extensions||!s.extensions[this.name]?null:B.MeshPhysicalMaterial}extendMaterialParams(A,e){const s=this.parser,t=s.json.materials[A];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const i=[];e.sheenColor=new B.Color(0,0,0),e.sheenRoughness=0,e.sheen=1;const n=t.extensions[this.name];if(n.sheenColorFactor!==void 0){const r=n.sheenColorFactor;e.sheenColor.setRGB(r[0],r[1],r[2],B.LinearSRGBColorSpace)}return n.sheenRoughnessFactor!==void 0&&(e.sheenRoughness=n.sheenRoughnessFactor),n.sheenColorTexture!==void 0&&i.push(s.assignTexture(e,"sheenColorMap",n.sheenColorTexture,B.SRGBColorSpace)),n.sheenRoughnessTexture!==void 0&&i.push(s.assignTexture(e,"sheenRoughnessMap",n.sheenRoughnessTexture)),Promise.all(i)}}class Ht{constructor(A){this.parser=A,this.name=p.KHR_MATERIALS_TRANSMISSION}getMaterialType(A){const s=this.parser.json.materials[A];return!s.extensions||!s.extensions[this.name]?null:B.MeshPhysicalMaterial}extendMaterialParams(A,e){const s=this.parser,t=s.json.materials[A];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const i=[],n=t.extensions[this.name];return n.transmissionFactor!==void 0&&(e.transmission=n.transmissionFactor),n.transmissionTexture!==void 0&&i.push(s.assignTexture(e,"transmissionMap",n.transmissionTexture)),Promise.all(i)}}class Jt{constructor(A){this.parser=A,this.name=p.KHR_MATERIALS_VOLUME}getMaterialType(A){const s=this.parser.json.materials[A];return!s.extensions||!s.extensions[this.name]?null:B.MeshPhysicalMaterial}extendMaterialParams(A,e){const s=this.parser,t=s.json.materials[A];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const i=[],n=t.extensions[this.name];e.thickness=n.thicknessFactor!==void 0?n.thicknessFactor:0,n.thicknessTexture!==void 0&&i.push(s.assignTexture(e,"thicknessMap",n.thicknessTexture)),e.attenuationDistance=n.attenuationDistance||1/0;const r=n.attenuationColor||[1,1,1];return e.attenuationColor=new B.Color().setRGB(r[0],r[1],r[2],B.LinearSRGBColorSpace),Promise.all(i)}}class Ut{constructor(A){this.parser=A,this.name=p.KHR_MATERIALS_IOR}getMaterialType(A){const s=this.parser.json.materials[A];return!s.extensions||!s.extensions[this.name]?null:B.MeshPhysicalMaterial}extendMaterialParams(A,e){const t=this.parser.json.materials[A];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const i=t.extensions[this.name];return e.ior=i.ior!==void 0?i.ior:1.5,Promise.resolve()}}class Nt{constructor(A){this.parser=A,this.name=p.KHR_MATERIALS_SPECULAR}getMaterialType(A){const s=this.parser.json.materials[A];return!s.extensions||!s.extensions[this.name]?null:B.MeshPhysicalMaterial}extendMaterialParams(A,e){const s=this.parser,t=s.json.materials[A];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const i=[],n=t.extensions[this.name];e.specularIntensity=n.specularFactor!==void 0?n.specularFactor:1,n.specularTexture!==void 0&&i.push(s.assignTexture(e,"specularIntensityMap",n.specularTexture));const r=n.specularColorFactor||[1,1,1];return e.specularColor=new B.Color().setRGB(r[0],r[1],r[2],B.LinearSRGBColorSpace),n.specularColorTexture!==void 0&&i.push(s.assignTexture(e,"specularColorMap",n.specularColorTexture,B.SRGBColorSpace)),Promise.all(i)}}class xt{constructor(A){this.parser=A,this.name=p.EXT_MATERIALS_BUMP}getMaterialType(A){const s=this.parser.json.materials[A];return!s.extensions||!s.extensions[this.name]?null:B.MeshPhysicalMaterial}extendMaterialParams(A,e){const s=this.parser,t=s.json.materials[A];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const i=[],n=t.extensions[this.name];return e.bumpScale=n.bumpFactor!==void 0?n.bumpFactor:1,n.bumpTexture!==void 0&&i.push(s.assignTexture(e,"bumpMap",n.bumpTexture)),Promise.all(i)}}class kt{constructor(A){this.parser=A,this.name=p.KHR_MATERIALS_ANISOTROPY}getMaterialType(A){const s=this.parser.json.materials[A];return!s.extensions||!s.extensions[this.name]?null:B.MeshPhysicalMaterial}extendMaterialParams(A,e){const s=this.parser,t=s.json.materials[A];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const i=[],n=t.extensions[this.name];return n.anisotropyStrength!==void 0&&(e.anisotropy=n.anisotropyStrength),n.anisotropyRotation!==void 0&&(e.anisotropyRotation=n.anisotropyRotation),n.anisotropyTexture!==void 0&&i.push(s.assignTexture(e,"anisotropyMap",n.anisotropyTexture)),Promise.all(i)}}class bt{constructor(A){this.parser=A,this.name=p.KHR_TEXTURE_BASISU}loadTexture(A){const e=this.parser,s=e.json,t=s.textures[A];if(!t.extensions||!t.extensions[this.name])return null;const i=t.extensions[this.name],n=e.options.ktx2Loader;if(!n){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,i.source,n)}}class Kt{constructor(A){this.parser=A,this.name=p.EXT_TEXTURE_WEBP,this.isSupported=null}loadTexture(A){const e=this.name,s=this.parser,t=s.json,i=t.textures[A];if(!i.extensions||!i.extensions[e])return null;const n=i.extensions[e],r=t.images[n.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,n.source,o);if(t.extensionsRequired&&t.extensionsRequired.indexOf(e)>=0)throw new Error("THREE.GLTFLoader: WebP required by asset but unsupported.");return s.loadTexture(A)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(A){const e=new Image;e.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA",e.onload=e.onerror=function(){A(e.height===1)}})),this.isSupported}}class Ot{constructor(A){this.parser=A,this.name=p.EXT_TEXTURE_AVIF,this.isSupported=null}loadTexture(A){const e=this.name,s=this.parser,t=s.json,i=t.textures[A];if(!i.extensions||!i.extensions[e])return null;const n=i.extensions[e],r=t.images[n.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,n.source,o);if(t.extensionsRequired&&t.extensionsRequired.indexOf(e)>=0)throw new Error("THREE.GLTFLoader: AVIF required by asset but unsupported.");return s.loadTexture(A)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(A){const e=new Image;e.src="data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAABcAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQAMAAAAABNjb2xybmNseAACAAIABoAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAAB9tZGF0EgAKCBgABogQEDQgMgkQAAAAB8dSLfI=",e.onload=e.onerror=function(){A(e.height===1)}})),this.isSupported}}class _t{constructor(A){this.name=p.EXT_MESHOPT_COMPRESSION,this.parser=A}loadBufferView(A){const e=this.parser.json,s=e.bufferViews[A];if(s.extensions&&s.extensions[this.name]){const t=s.extensions[this.name],i=this.parser.getDependency("buffer",t.buffer),n=this.parser.options.meshoptDecoder;if(!n||!n.supported){if(e.extensionsRequired&&e.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return null}return i.then(function(r){const o=t.byteOffset||0,a=t.byteLength||0,g=t.count,C=t.byteStride,Q=new Uint8Array(r,o,a);return n.decodeGltfBufferAsync?n.decodeGltfBufferAsync(g,C,Q,t.mode,t.filter).then(function(h){return h.buffer}):n.ready.then(function(){const h=new ArrayBuffer(g*C);return n.decodeGltfBuffer(new Uint8Array(h),g,C,Q,t.mode,t.filter),h})})}else return null}}class Pt{constructor(A){this.name=p.EXT_MESH_GPU_INSTANCING,this.parser=A}createNodeMesh(A){const e=this.parser.json,s=e.nodes[A];if(!s.extensions||!s.extensions[this.name]||s.mesh===void 0)return null;const t=e.meshes[s.mesh];for(const a of t.primitives)if(a.mode!==K.TRIANGLES&&a.mode!==K.TRIANGLE_STRIP&&a.mode!==K.TRIANGLE_FAN&&a.mode!==void 0)return null;const n=s.extensions[this.name].attributes,r=[],o={};for(const a in n)r.push(this.parser.getDependency("accessor",n[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),D=new B.InstancedMesh(d.geometry,d.material,Q);for(let F=0;F<Q;F++)o.TRANSLATION&&c.fromBufferAttribute(o.TRANSLATION,F),o.ROTATION&&u.fromBufferAttribute(o.ROTATION,F),o.SCALE&&f.fromBufferAttribute(o.SCALE,F),D.setMatrixAt(F,l.compose(c,u,f));for(const F in o)if(F==="_COLOR_0"){const m=o[F];D.instanceColor=new B.InstancedBufferAttribute(m.array,m.itemSize,m.normalized)}else F!=="TRANSLATION"&&F!=="ROTATION"&&F!=="SCALE"&&d.geometry.setAttribute(F,o[F]);B.Object3D.prototype.copy.call(D,d),this.parser.assignFinalMaterial(D),h.push(D)}return g.isGroup?(g.clear(),g.add(...h),g):h[0]}))}}const $e="glTF",HA=12,Ke={JSON:1313821514,BIN:5130562};class Yt{constructor(A){this.name=p.KHR_BINARY_GLTF,this.content=null,this.body=null;const e=new DataView(A,0,HA),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!==$e)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-HA,i=new DataView(A,HA);let n=0;for(;n<t;){const r=i.getUint32(n,!0);n+=4;const o=i.getUint32(n,!0);if(n+=4,o===Ke.JSON){const a=new Uint8Array(A,HA+n,r);this.content=s.decode(a)}else if(o===Ke.BIN){const a=HA+n;this.body=A.slice(a,a+r)}n+=r}if(this.content===null)throw new Error("THREE.GLTFLoader: JSON content not found.")}}class qt{constructor(A,e){if(!e)throw new Error("THREE.GLTFLoader: No DRACOLoader instance provided.");this.name=p.KHR_DRACO_MESH_COMPRESSION,this.json=A,this.dracoLoader=e,this.dracoLoader.preload()}decodePrimitive(A,e){const s=this.json,t=this.dracoLoader,i=A.extensions[this.name].bufferView,n=A.extensions[this.name].attributes,r={},o={},a={};for(const g in n){const C=pe[g]||g.toLowerCase();r[C]=n[g]}for(const g in A.attributes){const C=pe[g]||g.toLowerCase();if(n[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",i).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 Xt{constructor(){this.name=p.KHR_TEXTURE_TRANSFORM}extendTexture(A,e){return(e.texCoord===void 0||e.texCoord===A.channel)&&e.offset===void 0&&e.rotation===void 0&&e.scale===void 0||(A=A.clone(),e.texCoord!==void 0&&(A.channel=e.texCoord),e.offset!==void 0&&A.offset.fromArray(e.offset),e.rotation!==void 0&&(A.rotation=e.rotation),e.scale!==void 0&&A.repeat.fromArray(e.scale),A.needsUpdate=!0),A}}class vt{constructor(){this.name=p.KHR_MESH_QUANTIZATION}}class At 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,i=A*t*3+t;for(let n=0;n!==t;n++)e[n]=s[i+n];return e}interpolate_(A,e,s,t){const i=this.resultBuffer,n=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,D=u-Q+C;for(let F=0;F!==r;F++){const m=n[l+F+r],M=n[l+F+o]*g,w=n[d+F+r],O=n[d+F]*g;i[F]=f*m+D*M+c*w+u*O}return i}}const Vt=new B.Quaternion;class Wt extends At{interpolate_(A,e,s,t){const i=super.interpolate_(A,e,s,t);return Vt.fromArray(i).normalize().toArray(i),i}}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},Oe={9728:B.NearestFilter,9729:B.LinearFilter,9984:B.NearestMipmapNearestFilter,9985:B.LinearMipmapNearestFilter,9986:B.NearestMipmapLinearFilter,9987:B.LinearMipmapLinearFilter},_e={33071:B.ClampToEdgeWrapping,33648:B.MirroredRepeatWrapping,10497:B.RepeatWrapping},ge={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},pe={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"},z={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},jt={CUBICSPLINE:void 0,LINEAR:B.InterpolateLinear,STEP:B.InterpolateDiscrete},Ee={OPAQUE:"OPAQUE",MASK:"MASK",BLEND:"BLEND"};function Zt(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 CA(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 $(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 zt(I,A,e){let s=!1,t=!1,i=!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&&(i=!0),s&&t&&i)break}if(!s&&!t&&!i)return Promise.resolve(I);const n=[],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;n.push(Q)}if(t){const Q=C.NORMAL!==void 0?e.getDependency("accessor",C.NORMAL):I.attributes.normal;r.push(Q)}if(i){const Q=C.COLOR_0!==void 0?e.getDependency("accessor",C.COLOR_0):I.attributes.color;o.push(Q)}}return Promise.all([Promise.all(n),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),i&&(I.morphAttributes.color=Q),I.morphTargetsRelative=!0,I})}function $t(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 As(I){let A;const e=I.extensions&&I.extensions[p.KHR_DRACO_MESH_COMPRESSION];if(e?A="draco:"+e.bufferView+":"+e.indices+":"+ce(e.attributes):A=I.indices+":"+ce(I.attributes)+":"+I.mode,I.targets!==void 0)for(let s=0,t=I.targets.length;s<t;s++)A+=":"+ce(I.targets[s]);return A}function ce(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 me(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 es(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 ts=new B.Matrix4;class ss{constructor(A={},e={}){this.json=A,this.extensions={},this.plugins={},this.options=e,this.cache=new mt,this.associations=new Map,this.primitiveCache={},this.nodeCache={},this.meshCache={refs:{},uses:{}},this.cameraCache={refs:{},uses:{}},this.lightCache={refs:{},uses:{}},this.sourceCache={},this.textureCache={},this.nodeNamesUsed={};let s=!1,t=!1,i=-1;typeof navigator!="undefined"&&(s=/^((?!chrome|android).)*safari/i.test(navigator.userAgent)===!0,t=navigator.userAgent.indexOf("Firefox")>-1,i=t?navigator.userAgent.match(/Firefox\/([0-9]+)\./)[1]:-1),typeof createImageBitmap=="undefined"||s||t&&i<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,i=this.extensions;this.cache.removeAll(),this.nodeCache={},this._invokeAll(function(n){return n._markDefs&&n._markDefs()}),Promise.all(this._invokeAll(function(n){return n.beforeRoot&&n.beforeRoot()})).then(function(){return Promise.all([s.getDependencies("scene"),s.getDependencies("animation"),s.getDependencies("camera")])}).then(function(n){const r={scene:n[0][t.scene||0],scenes:n[0],animations:n[1],cameras:n[2],asset:t.asset,parser:s,userData:{}};return CA(i,r,t),$(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,i=e.length;t<i;t++){const n=e[t].joints;for(let r=0,o=n.length;r<o;r++)A[n[r]].isBone=!0}for(let t=0,i=A.length;t<i;t++){const n=A[t];n.mesh!==void 0&&(this._addNodeRef(this.meshCache,n.mesh),n.skin!==void 0&&(s[n.mesh].isSkinnedMesh=!0)),n.camera!==void 0&&this._addNodeRef(this.cameraCache,n.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(),i=(n,r)=>{const o=this.associations.get(n);o!=null&&this.associations.set(r,o);for(const[a,g]of n.children.entries())i(g,r.children[a])};return i(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 i=A(e[t]);i&&s.push(i)}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(i){return i.loadNode&&i.loadNode(e)});break;case"mesh":t=this._invokeOne(function(i){return i.loadMesh&&i.loadMesh(e)});break;case"accessor":t=this.loadAccessor(e);break;case"bufferView":t=this._invokeOne(function(i){return i.loadBufferView&&i.loadBufferView(e)});break;case"buffer":t=this.loadBuffer(e);break;case"material":t=this._invokeOne(function(i){return i.loadMaterial&&i.loadMaterial(e)});break;case"texture":t=this._invokeOne(function(i){return i.loadTexture&&i.loadTexture(e)});break;case"skin":t=this.loadSkin(e);break;case"animation":t=this._invokeOne(function(i){return i.loadAnimation&&i.loadAnimation(e)});break;case"camera":t=this.loadCamera(e);break;default:if(t=this._invokeOne(function(i){return i!=this&&i.getDependency&&i.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(i,n){return s.getDependency(A,n)})),this.cache.add(A,e)}return e}loadBuffer(A){const e=this.json.buffers[A],s=this.fileLoader;if(e.type&&e.type!=="arraybuffer")throw new Error("THREE.GLTFLoader: "+e.type+" buffer type is not supported.");if(e.uri===void 0&&A===0)return Promise.resolve(this.extensions[p.KHR_BINARY_GLTF].body);const t=this.options;return new Promise(function(i,n){s.load(B.LoaderUtils.resolveURL(e.uri,t.path),i,void 0,function(){n(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,i=e.byteOffset||0;return s.slice(i,i+t)})}loadAccessor(A){const e=this,s=this.json,t=this.json.accessors[A];if(t.bufferView===void 0&&t.sparse===void 0){const n=ge[t.type],r=lA[t.componentType],o=t.normalized===!0,a=new r(t.count*n);return Promise.resolve(new B.BufferAttribute(a,n,o))}const i=[];return t.bufferView!==void 0?i.push(this.getDependency("bufferView",t.bufferView)):i.push(null),t.sparse!==void 0&&(i.push(this.getDependency("bufferView",t.sparse.indices.bufferView)),i.push(this.getDependency("bufferView",t.sparse.values.bufferView))),Promise.all(i).then(function(n){const r=n[0],o=ge[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 D=e.cache.get(f);D||(l=new a(r,u*h,t.count*h/g),D=new B.InterleavedBuffer(l,h/g),e.cache.add(f,D)),c=new B.InterleavedBufferAttribute(D,o,Q%h/g,d)}else r===null?l=new a(t.count*o):l=new a(r,Q,t.count*o),c=new B.BufferAttribute(l,o,d);if(t.sparse!==void 0){const u=ge.SCALAR,f=lA[t.sparse.indices.componentType],D=t.sparse.indices.byteOffset||0,F=t.sparse.values.byteOffset||0,m=new f(n[1],D,t.sparse.count*u),M=new a(n[2],F,t.sparse.count*o);r!==null&&(c=new B.BufferAttribute(c.array.slice(),c.itemSize,c.normalized));for(let w=0,O=m.length;w<O;w++){const U=m[w];if(c.setX(U,M[w*o]),o>=2&&c.setY(U,M[w*o+1]),o>=3&&c.setZ(U,M[w*o+2]),o>=4&&c.setW(U,M[w*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,i=e.textures[A].source,n=e.images[i];let r=this.textureLoader;if(n.uri){const o=s.manager.getHandler(n.uri);o!==null&&(r=o)}return this.loadTextureImage(A,i,r)}loadTextureImage(A,e,s){const t=this,i=this.json,n=i.textures[A],r=i.images[e],o=(r.uri||r.bufferView)+":"+n.sampler;if(this.textureCache[o])return this.textureCache[o];const a=this.loadImageSource(e,s).then(function(g){g.flipY=!1,g.name=n.name||r.name||"",g.name===""&&typeof r.uri=="string"&&r.uri.startsWith("data:image/")===!1&&(g.name=r.uri);const Q=(i.samplers||{})[n.sampler]||{};return g.magFilter=Oe[Q.magFilter]||B.LinearFilter,g.minFilter=Oe[Q.minFilter]||B.LinearMipmapLinearFilter,g.wrapS=_e[Q.wrapS]||B.RepeatWrapping,g.wrapT=_e[Q.wrapT]||B.RepeatWrapping,t.associations.set(g,{textures:A}),g}).catch(function(){return null});return this.textureCache[o]=a,a}loadImageSource(A,e){const s=this,t=this.json,i=this.options;if(this.sourceCache[A]!==void 0)return this.sourceCache[A].then(C=>C.clone());const n=t.images[A],r=self.URL||self.webkitURL;let o=n.uri||"",a=!1;if(n.bufferView!==void 0)o=s.getDependency("bufferView",n.bufferView).then(function(C){a=!0;const Q=new Blob([C],{type:n.mimeType});return o=r.createObjectURL(Q),o});else if(n.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,i.path),d,void 0,h)})}).then(function(C){return a===!0&&r.revokeObjectURL(o),C.userData.mimeType=n.mimeType||es(n.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 i=this;return this.getDependency("texture",s.index).then(function(n){if(!n)return null;if(s.texCoord!==void 0&&s.texCoord>0&&(n=n.clone(),n.channel=s.texCoord),i.extensions[p.KHR_TEXTURE_TRANSFORM]){const r=s.extensions!==void 0?s.extensions[p.KHR_TEXTURE_TRANSFORM]:void 0;if(r){const o=i.associations.get(n);n=i.extensions[p.KHR_TEXTURE_TRANSFORM].extendTexture(n,r),i.associations.set(n,o)}}return t!==void 0&&(n.colorSpace=t),A[e]=n,n})}assignFinalMaterial(A){const e=A.geometry;let s=A.material;const t=e.attributes.tangent===void 0,i=e.attributes.color!==void 0,n=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||i||n){let r="ClonedMaterial:"+s.uuid+":";t&&(r+="derivative-tangents:"),i&&(r+="vertex-colors:"),n&&(r+="flat-shading:");let o=this.cache.get(r);o||(o=s.clone(),i&&(o.vertexColors=!0),n&&(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,i=s.materials[A];let n;const r={},o=i.extensions||{},a=[];if(o[p.KHR_MATERIALS_UNLIT]){const C=t[p.KHR_MATERIALS_UNLIT];n=C.getMaterialType(),a.push(C.extendParams(r,i,e))}else{const C=i.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))),n=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)})))}i.doubleSided===!0&&(r.side=B.DoubleSide);const g=i.alphaMode||Ee.OPAQUE;if(g===Ee.BLEND?(r.transparent=!0,r.depthWrite=!1):(r.transparent=!1,g===Ee.MASK&&(r.alphaTest=i.alphaCutoff!==void 0?i.alphaCutoff:.5)),i.normalTexture!==void 0&&n!==B.MeshBasicMaterial&&(a.push(e.assignTexture(r,"normalMap",i.normalTexture)),r.normalScale=new B.Vector2(1,1),i.normalTexture.scale!==void 0)){const C=i.normalTexture.scale;r.normalScale.set(C,C)}if(i.occlusionTexture!==void 0&&n!==B.MeshBasicMaterial&&(a.push(e.assignTexture(r,"aoMap",i.occlusionTexture)),i.occlusionTexture.strength!==void 0&&(r.aoMapIntensity=i.occlusionTexture.strength)),i.emissiveFactor!==void 0&&n!==B.MeshBasicMaterial){const C=i.emissiveFactor;r.emissive=new B.Color().setRGB(C[0],C[1],C[2],B.LinearSRGBColorSpace)}return i.emissiveTexture!==void 0&&n!==B.MeshBasicMaterial&&a.push(e.assignTexture(r,"emissiveMap",i.emissiveTexture,B.SRGBColorSpace)),Promise.all(a).then(function(){const C=new n(r);return i.name&&(C.name=i.name),$(C,i),e.associations.set(C,{materials:A}),i.extensions&&CA(t,C,i),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 i(r){return s[p.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(r,e).then(function(o){return Pe(o,r,e)})}const n=[];for(let r=0,o=A.length;r<o;r++){const a=A[r],g=As(a),C=t[g];if(C)n.push(C.promise);else{let Q;a.extensions&&a.extensions[p.KHR_DRACO_MESH_COMPRESSION]?Q=i(a):Q=Pe(new B.BufferGeometry,a,e),t[g]={primitive:a,promise:Q},n.push(Q)}}return Promise.all(n)}loadMesh(A){const e=this,s=this.json,t=this.extensions,i=s.meshes[A],n=i.primitives,r=[];for(let o=0,a=n.length;o<a;o++){const g=n[o].material===void 0?Zt(this.cache):this.getDependency("material",n[o].material);r.push(g)}return r.push(e.loadGeometries(n)),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=n[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=i.isSkinnedMesh===!0?new B.SkinnedMesh(l,f):new B.Mesh(l,f),u.isSkinnedMesh===!0&&u.normalizeSkinWeights(),c.mode===K.TRIANGLE_STRIP?u.geometry=be(u.geometry,B.TriangleStripDrawMode):c.mode===K.TRIANGLE_FAN&&(u.geometry=be(u.geometry,B.TriangleFanDrawMode));else if(c.mode===K.LINES)u=new B.LineSegments(l,f);else if(c.mode===K.LINE_STRIP)u=new B.Line(l,f);else if(c.mode===K.LINE_LOOP)u=new B.LineLoop(l,f);else if(c.mode===K.POINTS)u=new B.Points(l,f);else throw new Error("THREE.GLTFLoader: Primitive mode unsupported: "+c.mode);Object.keys(u.geometry.morphAttributes).length>0&&$t(u,i),u.name=e.createUniqueName(i.name||"mesh_"+A),$(u,i),c.extensions&&CA(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 i.extensions&&CA(t,C[0],i),C[0];const Q=new B.Group;i.extensions&&CA(t,Q,i),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)),$(e,s),Promise.resolve(e)}loadSkin(A){const e=this.json.skins[A],s=[];for(let t=0,i=e.joints.length;t<i;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 i=t.pop(),n=t,r=[],o=[];for(let a=0,g=n.length;a<g;a++){const C=n[a];if(C){r.push(C);const Q=new B.Matrix4;i!==null&&Q.fromArray(i.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],i=t.name?t.name:"animation_"+A,n=[],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&&(n.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(n),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,D=Q.length;f<D;f++){const F=Q[f],m=h[f],M=d[f],w=l[f],O=c[f];if(F===void 0)continue;F.updateMatrix&&F.updateMatrix();const U=s._createAnimationTracks(F,m,M,w,O);if(U)for(let q=0;q<U.length;q++)u.push(U[q])}return new B.AnimationClip(i,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(i){const n=s._getNodeRef(s.meshCache,t.mesh,i);return t.weights!==void 0&&n.traverse(function(r){if(r.isMesh)for(let o=0,a=t.weights.length;o<a;o++)r.morphTargetInfluences[o]=t.weights[o]}),n})}loadNode(A){const e=this.json,s=this,t=e.nodes[A],i=s._loadNodeShallow(A),n=[],r=t.children||[];for(let a=0,g=r.length;a<g;a++)n.push(s.getDependency("node",r[a]));const o=t.skin===void 0?Promise.resolve(null):s.getDependency("skin",t.skin);return Promise.all([i,Promise.all(n),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,ts)});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 i=e.nodes[A],n=i.name?t.createUniqueName(i.name):"",r=[],o=t._invokeOne(function(a){return a.createNodeMesh&&a.createNodeMesh(A)});return o&&r.push(o),i.camera!==void 0&&r.push(t.getDependency("camera",i.camera).then(function(a){return t._getNodeRef(t.cameraCache,i.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(i.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(i.name&&(g.userData.name=i.name,g.name=n),$(g,i),i.extensions&&CA(s,g,i),i.matrix!==void 0){const C=new B.Matrix4;C.fromArray(i.matrix),g.applyMatrix4(C)}else i.translation!==void 0&&g.position.fromArray(i.translation),i.rotation!==void 0&&g.quaternion.fromArray(i.rotation),i.scale!==void 0&&g.scale.fromArray(i.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,i=new B.Group;s.name&&(i.name=t.createUniqueName(s.name)),$(i,s),s.extensions&&CA(e,i,s);const n=s.nodes||[],r=[];for(let o=0,a=n.length;o<a;o++)r.push(t.getDependency("node",n[o]));return Promise.all(r).then(function(o){for(let g=0,C=o.length;g<C;g++)i.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(i),i})}_createAnimationTracks(A,e,s,t,i){const n=[],r=A.name?A.name:A.uuid,o=[];z[i.path]===z.weights?A.traverse(function(Q){Q.morphTargetInfluences&&o.push(Q.name?Q.name:Q.uuid)}):o.push(r);let a;switch(z[i.path]){case z.weights:a=B.NumberKeyframeTrack;break;case z.rotation:a=B.QuaternionKeyframeTrack;break;case z.position:case z.scale:a=B.VectorKeyframeTrack;break;default:switch(s.itemSize){case 1:a=B.NumberKeyframeTrack;break;case 2:case 3:default:a=B.VectorKeyframeTrack;break}break}const g=t.interpolation!==void 0?jt[t.interpolation]:B.InterpolateLinear,C=this._getArrayFromAccessor(s);for(let Q=0,h=o.length;Q<h;Q++){const d=new a(o[Q]+"."+z[i.path],e.array,C,g);t.interpolation==="CUBICSPLINE"&&this._createCubicSplineTrackInterpolant(d),n.push(d)}return n}_getArrayFromAccessor(A){let e=A.array;if(A.normalized){const s=me(e.constructor),t=new Float32Array(e.length);for(let i=0,n=e.length;i<n;i++)t[i]=e[i]*s;e=t}return e}_createCubicSplineTrackInterpolant(A){A.createInterpolant=function(s){const t=this instanceof B.QuaternionKeyframeTrack?Wt:At;return new t(this.times,this.values,this.getValueSize()/3,s)},A.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0}}function is(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=me(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 i=A.targets;if(i!==void 0){const r=new B.Vector3,o=new B.Vector3;for(let a=0,g=i.length;a<g;a++){const C=i[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=me(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 n=new B.Sphere;t.getCenter(n.center),n.radius=t.min.distanceTo(t.max)/2,I.boundingSphere=n}function Pe(I,A,e){const s=A.attributes,t=[];function i(n,r){return e.getDependency("accessor",n).then(function(o){I.setAttribute(r,o)})}for(const n in s){const r=pe[n]||n.toLowerCase();r in I.attributes||t.push(i(s[n],r))}if(A.indices!==void 0&&!I.index){const n=e.getDependency("accessor",A.indices).then(function(r){I.setIndex(r)});t.push(n)}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.`),$(I,A),is(I,A,e),Promise.all(t).then(function(){return A.targets!==void 0?zt(I,A.targets,e):I})}const Qe=new WeakMap;class ns 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 i=new B.FileLoader(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),i.load(A,n=>{this.parse(n,e,t)},s,t)}parse(A,e,s=()=>{}){this.decodeDracoFile(A,e,null,null,B.SRGBColorSpace).catch(s)}decodeDracoFile(A,e,s,t,i=B.LinearSRGBColorSpace,n=()=>{}){const r={attributeIDs:s||this.defaultAttributeIDs,attributeTypes:t||this.defaultAttributeTypes,useUniqueIDs:!!s,vertexColorSpace:i};return this.decodeGeometry(A,r).then(e).catch(n)}decodeGeometry(A,e){const s=JSON.stringify(e);if(Qe.has(A)){const o=Qe.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 i=this.workerNextTaskID++,n=A.byteLength,r=this._getWorker(i,n).then(o=>(t=o,new Promise((a,g)=>{t._callbacks[i]={resolve:a,reject:g},t.postMessage({type:"decode",id:i,taskConfig:e,buffer:A},[A])}))).then(o=>this._createGeometry(o.geometry));return r.catch(()=>!0).then(()=>{t&&i&&this._releaseTask(t,i)}),Qe.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],i=t.name,n=t.array,r=t.itemSize,o=new B.BufferAttribute(n,r);i==="color"&&(this._assignVertexColorSpace(o,t.vertexColorSpace),o.normalized=!(n instanceof Float32Array)),e.setAttribute(i,o)}return e}_assignVertexColorSpace(A,e){if(e!==B.SRGBColorSpace)return;const s=new B.Color;for(let t=0,i=A.count;t<i;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,i)=>{s.load(A,t,void 0,i)})}preload(){return this._initDecoder(),this}_initDecoder(){if(this.decoderPending)return this.decoderPending;const A=typeof WebAssembly!="object"||this.decoderConfig.type==="js",e=[];return A?e.push(this._loadLibrary("draco_decoder.js","text")):(e.push(this._loadLibrary("draco_wasm_wrapper.js","text")),e.push(this._loadLibrary("draco_decoder.wasm","arraybuffer"))),this.decoderPending=Promise.all(e).then(s=>{const t=s[0];A||(this.decoderConfig.wasmBinary=s[1]);const i=os.toString(),n=["/* draco decoder */",t,"","/* worker */",i.substring(i.indexOf("{")+1,i.lastIndexOf("}"))].join(`
9
+ `);this.workerSourceURL=URL.createObjectURL(new Blob([n]))}),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(i){const n=i.data;switch(n.type){case"decode":t._callbacks[n.id].resolve(n);break;case"error":t._callbacks[n.id].reject(n);break;default:console.error('THREE.DRACOLoader: Unexpected message, "'+n.type+'"')}},this.workerPool.push(t)}else this.workerPool.sort(function(t,i){return t._taskLoad>i._taskLoad?-1:1});const s=this.workerPool[this.workerPool.length-1];return s._taskCosts[A]=e,s._taskLoad+=e,s})}_releaseTask(A,e){A._taskLoad-=A._taskCosts[e],delete A._callbacks[e],delete A._taskCosts[e]}debug(){console.log("Task load: ",this.workerPool.map(A=>A._taskLoad))}dispose(){for(let A=0;A<this.workerPool.length;++A)this.workerPool[A].terminate();return this.workerPool.length=0,this.workerSourceURL!==""&&URL.revokeObjectURL(this.workerSourceURL),this}}function os(){let I,A;onmessage=function(n){const r=n.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(n,r,o,a){const g=a.attributeIDs,C=a.attributeTypes;let Q,h;const d=r.GetEncodedGeometryType(o);if(d===n.TRIANGULAR_MESH)Q=new n.Mesh,h=r.DecodeArrayToMesh(o,o.byteLength,Q);else if(d===n.POINT_CLOUD)Q=new n.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,D;if(a.useUniqueIDs)D=g[c],f=r.GetAttributeByUniqueId(Q,D);else{if(D=r.GetAttributeId(Q,n[g[c]]),D===-1)continue;f=r.GetAttribute(Q,D)}const F=t(n,r,Q,c,u,f);c==="color"&&(F.vertexColorSpace=a.vertexColorSpace),l.attributes.push(F)}return d===n.TRIANGULAR_MESH&&(l.index=s(n,r,Q)),n.destroy(Q),l}function s(n,r,o){const g=o.num_faces()*3,C=g*4,Q=n._malloc(C);r.GetTrianglesUInt32Array(o,C,Q);const h=new Uint32Array(n.HEAPF32.buffer,Q,g).slice();return n._free(Q),{array:h,itemSize:1}}function t(n,r,o,a,g,C){const Q=C.num_components(),d=o.num_points()*Q,l=d*g.BYTES_PER_ELEMENT,c=i(n,g),u=n._malloc(l);r.GetAttributeDataArrayForAllPoints(o,C,c,l,u);const f=new g(n.HEAPF32.buffer,u,d).slice();return n._free(u),{name:a,array:f,itemSize:Q}}function i(n,r){switch(r){case Float32Array:return n.DT_FLOAT32;case Int8Array:return n.DT_INT8;case Int16Array:return n.DT_INT16;case Int32Array:return n.DT_INT32;case Uint8Array:return n.DT_UINT8;case Uint16Array:return n.DT_UINT16;case Uint32Array:return n.DT_UINT32}}}class rs{constructor(A=4){this.pool=A,this.queue=[],this.workers=[],this.workersResolve=[],this.workerStatus=0}_initWorker(A){if(!this.workers[A]){const e=this.workerCreator();e.addEventListener("message",this._onMessage.bind(this,A)),this.workers[A]=e}}_getIdleWorker(){for(let A=0;A<this.pool;A++)if(!(this.workerStatus&1<<A))return A;return-1}_onMessage(A,e){const s=this.workersResolve[A];if(s&&s(e),this.queue.length){const{resolve:t,msg:i,transfer:n}=this.queue.shift();this.workersResolve[A]=t,this.workers[A].postMessage(i,n)}else this.workerStatus^=1<<A}setWorkerCreator(A){this.workerCreator=A}setWorkerLimit(A){this.pool=A}postMessage(A,e){return new Promise(s=>{const t=this._getIdleWorker();t!==-1?(this._initWorker(t),this.workerStatus|=1<<t,this.workersResolve[t]=s,this.workers[t].postMessage(A,e)):this.queue.push({resolve:s,msg:A,transfer:e})})}dispose(){this.workers.forEach(A=>A.terminate()),this.workersResolve.length=0,this.workers.length=0,this.queue.length=0,this.workerStatus=0}}const Bs=0,Ye=2,as=1,qe=2,Cs=0,Is=1,gs=10,Es=0,et=9,tt=15,st=16,it=22,nt=37,ot=43,rt=76,Bt=83,at=97,Ct=100,It=103,gt=109,Et=165,ct=166;class cs{constructor(){this.vkFormat=0,this.typeSize=1,this.pixelWidth=0,this.pixelHeight=0,this.pixelDepth=0,this.layerCount=0,this.faceCount=1,this.supercompressionScheme=0,this.levels=[],this.dataFormatDescriptor=[{vendorId:0,descriptorType:0,descriptorBlockSize:0,versionNumber:2,colorModel:0,colorPrimaries:1,transferFunction:2,flags:0,texelBlockDimension:[0,0,0,0],bytesPlane:[0,0,0,0,0,0,0,0],samples:[]}],this.keyValue={},this.globalData=null}}class JA{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 H=[171,75,84,88,32,50,48,187,13,10,26,10];function Xe(I){return typeof TextDecoder!="undefined"?new TextDecoder().decode(I):Buffer.from(I).toString("utf8")}function Qs(I){const A=new Uint8Array(I.buffer,I.byteOffset,H.length);if(A[0]!==H[0]||A[1]!==H[1]||A[2]!==H[2]||A[3]!==H[3]||A[4]!==H[4]||A[5]!==H[5]||A[6]!==H[6]||A[7]!==H[7]||A[8]!==H[8]||A[9]!==H[9]||A[10]!==H[10]||A[11]!==H[11])throw new Error("Missing KTX 2.0 identifier.");const e=new cs,s=17*Uint32Array.BYTES_PER_ELEMENT,t=new JA(I,H.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 i=t._nextUint32();e.supercompressionScheme=t._nextUint32();const n=t._nextUint32(),r=t._nextUint32(),o=t._nextUint32(),a=t._nextUint32(),g=t._nextUint64(),C=t._nextUint64(),Q=new JA(I,H.length+s,3*i*8,!0);for(let T=0;T<i;T++)e.levels.push({levelData:new Uint8Array(I.buffer,I.byteOffset+Q._nextUint64(),Q._nextUint64()),uncompressedByteLength:Q._nextUint64()});const h=new JA(I,n,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 T=0;T<l;T++){const N={bitOffset:h._nextUint16(),bitLength:h._nextUint8(),channelType:h._nextUint8(),samplePosition:[h._nextUint8(),h._nextUint8(),h._nextUint8(),h._nextUint8()],sampleLower:-1/0,sampleUpper:1/0};64&N.channelType?(N.sampleLower=h._nextInt32(),N.sampleUpper=h._nextInt32()):(N.sampleLower=h._nextUint32(),N.sampleUpper=h._nextUint32()),d.samples[T]=N}e.dataFormatDescriptor.length=0,e.dataFormatDescriptor.push(d);const c=new JA(I,o,a,!0);for(;c._offset<a;){const T=c._nextUint32(),N=c._scan(T),LA=Xe(N),X=c._scan(T-N.byteLength);e.keyValue[LA]=LA.match(/^ktx/i)?Xe(X):X,c._offset%4&&c._skip(4-c._offset%4)}if(C<=0)return e;const u=new JA(I,g,C,!0),f=u._nextUint16(),D=u._nextUint16(),F=u._nextUint32(),m=u._nextUint32(),M=u._nextUint32(),w=u._nextUint32(),O=[];for(let T=0;T<i;T++)O.push({imageFlags:u._nextUint32(),rgbSliceByteOffset:u._nextUint32(),rgbSliceByteLength:u._nextUint32(),alphaSliceByteOffset:u._nextUint32(),alphaSliceByteLength:u._nextUint32()});const U=g+u._offset,q=U+F,yA=q+m,te=yA+M,aA=new Uint8Array(I.buffer,I.byteOffset+U,F),se=new Uint8Array(I.buffer,I.byteOffset+q,m),Z=new Uint8Array(I.buffer,I.byteOffset+yA,M),ie=new Uint8Array(I.buffer,I.byteOffset+te,w);return e.globalData={endpointCount:f,selectorCount:D,imageDescs:O,endpointsData:aA,selectorsData:se,tablesData:Z,extendedData:ie},e}let he,v,Me;const le={env:{emscripten_notify_memory_growth:function(I){Me=new Uint8Array(v.exports.memory.buffer)}}};class hs{init(){return he||(he=typeof fetch!="undefined"?fetch("data:application/wasm;base64,"+ve).then(A=>A.arrayBuffer()).then(A=>WebAssembly.instantiate(A,le)).then(this._init):WebAssembly.instantiate(Buffer.from(ve,"base64"),le).then(this._init),he)}_init(A){v=A.instance,le.env.emscripten_notify_memory_growth(0)}decode(A,e=0){if(!v)throw new Error("ZSTDDecoder: Await .init() before decoding.");const s=A.byteLength,t=v.exports.malloc(s);Me.set(A,t),e=e||Number(v.exports.ZSTD_findDecompressedSize(t,s));const i=v.exports.malloc(e),n=v.exports.ZSTD_decompress(i,e,t,s),r=Me.slice(i,i+n);return v.exports.free(t),v.exports.free(i),r}}const ve="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IAMNACAEQQNxBEADQCACRQ0FIAAgAkF/aiICaiIDIAEgAmotAAA6AAAgA0EDcQ0ACwsgAkEDTQ0AA0AgACACQXxqIgJqIAEgAmooAgA2AgAgAkEDSw0ACwsgAkUNAgNAIAAgAkF/aiICaiABIAJqLQAAOgAAIAINAAsMAgsgAkEDTQ0AIAIhBANAIAMgASgCADYCACABQQRqIQEgA0EEaiEDIARBfGoiBEEDSw0ACyACQQNxIQILIAJFDQADQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQX9qIgINAAsLIAAL8wICAn8BfgJAIAJFDQAgACACaiIDQX9qIAE6AAAgACABOgAAIAJBA0kNACADQX5qIAE6AAAgACABOgABIANBfWogAToAACAAIAE6AAIgAkEHSQ0AIANBfGogAToAACAAIAE6AAMgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBfGogATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQXhqIAE2AgAgAkF0aiABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkFwaiABNgIAIAJBbGogATYCACACQWhqIAE2AgAgAkFkaiABNgIAIAQgA0EEcUEYciIEayICQSBJDQAgAa0iBUIghiAFhCEFIAMgBGohAQNAIAEgBTcDGCABIAU3AxAgASAFNwMIIAEgBTcDACABQSBqIQEgAkFgaiICQR9LDQALCyAACy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAIajYCACADCy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAFajYCACADCx8AIAAgASACKAIEEAg2AgAgARAEGiAAIAJBCGo2AgQLCAAgAGdBH3MLugUBDX8jAEEQayIKJAACfyAEQQNNBEAgCkEANgIMIApBDGogAyAEEAsaIAAgASACIApBDGpBBBAVIgBBbCAAEAMbIAAgACAESxsMAQsgAEEAIAEoAgBBAXRBAmoQECENQVQgAygAACIGQQ9xIgBBCksNABogAiAAQQVqNgIAIAMgBGoiAkF8aiEMIAJBeWohDiACQXtqIRAgAEEGaiELQQQh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ASIDNgLE4AEgACgCvOABIQQgACABNgK84AEgACABIAJqNgK44AEgACABIAQgA2tqNgLA4AELpgEBAX8gACAAKALs4QEQFjYCyOABIABCADcD+OABIABCADcDuOABIABBwOABakIANwMAIABBqNAAaiIBQYyAgOAANgIAIABBADYCmOIBIABCADcDiOEBIABCAzcDgOEBIABBrNABakHgEikCADcCACAAQbTQAWpB6BIoAgA2AgAgACABNgIMIAAgAEGYIGo2AgggACAAQaAwajYCBCAAIABBEGo2AgALYQEBf0G4fyEDAkAgAUEDSQ0AIAIgABAhIgFBA3YiADYCCCACIAFBAXE2AgQgAiABQQF2QQNxIgM2AgACQCADQX9qIgFBAksNAAJAIAFBAWsOAgEAAgtBbA8LIAAhAwsgAwsMACAAIAEgAkEAEC4LiAQCA38CfiADEBYhBCAAQQBBKBAQIQAgBCACSwRAIAQPCyABRQRAQX8PCwJAAkAgA0EBRg0AIAEoAAAiBkGo6r5pRg0AQXYhAyAGQXBxQdDUtMIBRw0BQQghAyACQQhJDQEgAEEAQSgQECEAIAEoAAQhASAAQQE2AhQgACABrTcDAEEADwsgASACIAMQLyIDIAJLDQAgACADNgIYQXIhAyABIARqIgVBf2otAAAiAkEIcQ0AIAJBIHEiBkUEQEFwIQMgBS0AACIFQacBSw0BIAVBB3GtQgEgBUEDdkEKaq2GIgdCA4h+IAd8IQggBEEBaiEECyACQQZ2IQMgAkECdiEFAkAgAkEDcUF/aiICQQJLBEBBACECDAELAkACQAJAIAJBAWsOAgECAAsgASAEai0AACECIARBAWohBAwCCyABIARqLwAAIQIgBEECaiEEDAELIAEgBGooAAAhAiAEQQRqIQQLIAVBAXEhBQJ+AkACQAJAIANBf2oiA0ECTQRAIANBAWsOAgIDAQtCfyAGRQ0DGiABIARqMQAADAMLIAEgBGovAACtQoACfAwCCyABIARqKAAArQwBCyABIARqKQAACyEHIAAgBTYCICAAIAI2AhwgACAHNwMAQQAhAyAAQQA2AhQgACAHIAggBhsiBzcDCCAAIAdCgIAIIAdCgIAIVBs+AhALIAMLWwEBf0G4fyEDIAIQFiICIAFNBH8gACACakF/ai0AACIAQQNxQQJ0QaAeaigC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C0Egak8NAQsgByAHKQNoNwMQIAcgBykDYDcDCCAEIA0gB0EIaiAHQdwAaiAPIA4gESAQEB4hCwwBCyACIARqIQggBCAKEAcgAkERTwRAIARBEGohAgNAIAIgCkEQaiIKEAcgAkEQaiICIAhJDQALCyAIIAlrIQIgByATNgJcIAkgCCAOa0sEQCAJIAggEWtLBEBBbCELDAILIBAgAiAOayICaiIKIANqIBBNBEAgCCAKIAMQDxoMAgsgCCAKQQAgAmsQDyEIIAcgAiADaiIDNgJkIAggAmshCCAOIQILIAlBEE8EQCADIAhqIQMDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALDAELAkAgCUEHTQRAIAggAi0AADoAACAIIAItAAE6AAEgCCACLQACOgACIAggAi0AAzoAAyAIQQRqIAIgCUECdCIDQcAeaigCAGoiAhAXIAIgA0HgHmooAgBrIQIgBygCZCEDDAELIAggAhAMCyADQQlJDQAgAyAIaiEDIAhBCGoiCCACQQhqIgJrQQ9MBEADQCAIIAIQDCACQQhqIQIgCEEIaiIIIANJDQAMAgALAAsDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALCyAHQRhqEAQaIAsgDCALEAMiAhshDCAEIAQgC2ogAhshBCAFQX9qIgUNAAsgDBADDQFBbCEMIAdBGGoQBEECSQ0BQQAhCANAIAhBA0cEQCAAIAhBAnQiAmpBrNABaiACIAdqKAJENgIAIAhBAWohCAwBCwsgBygCXCEIC0G6fyEMIA8gCGsiACANIARrSw0AIAQEfyAEIAggABALIABqBUEACyABayEMCyAHQfAAaiQAIAwLkRcCFn8FfiMAQdABayIHJAAgByAAKALw4QEiCDYCvAEgASACaiESIAggACgCgOIBaiETAkACQCAFRQRAIAEhAwwBCyAAKALE4AEhESAAKALA4AEhFSAAKAK84AEhDyAAQQE2AozhAUEAIQgDQCAIQQNHBEAgByAIQQJ0IgJqIAAgAmpBrNABaigCADYCVCAIQQFqIQgMAQsLIAcgETYCZCAHIA82AmAgByABIA9rNgJoQWwhECAHQShqIAMgBBAGEAMNASAFQQQgBUEESBshFyAHQTxqIAdBKGogACgCABATIAdBxABqIAdBKGogACgCCBATIAdBzABqIAdB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IAdB0AFqJAAgEAslACAAQgA3AgAgAEEAOwEIIABBADoACyAAIAE2AgwgACACOgAKC7QFAQN/IwBBMGsiBCQAIABB/wFqIgVBfWohBgJAIAMvAQIEQCAEQRhqIAEgAhAGIgIQAw0BIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahASOgAAIAMgBEEIaiAEQRhqEBI6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0FIAEgBEEQaiAEQRhqEBI6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBSABIARBCGogBEEYahASOgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEjoAACABIAJqIABrIQIMAwsgAyAEQRBqIARBGGoQEjoAAiADIARBCGogBEEYahASOgADIANBBGohAwwAAAsACyAEQRhqIAEgAhAGIgIQAw0AIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahAROgAAIAMgBEEIaiAEQRhqEBE6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0EIAEgBEEQaiAEQRhqEBE6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBCABIARBCGogBEEYahAROgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEToAACABIAJqIABrIQIMAgsgAyAEQRBqIARBGGoQEToAAiADIARBCGogBEEYahAROgADIANBBGohAwwAAAsACyAEQTBqJAAgAgtpAQF/An8CQAJAIAJBB00NACABKAAAQbfIwuF+Rw0AIAAgASgABDYCmOIBQWIgAEEQaiABIAIQPiIDEAMNAhogAEKBgICAEDcDiOEBIAAgASADaiACIANrECoMAQsgACABIAIQKgtBAAsLrQMBBn8jAEGAAWsiAyQAQWIhCAJAIAJBCUkNACAAQZjQAGogAUEIaiIEIAJBeGogAEGY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wOABCwutAgIEfwF+IwBBQGoiBCQAAkACQCACQQhJDQAgASgAAEFwcUHQ1LTCAUcNACABIAIQIiEBIABCADcDCCAAQQA2AgQgACABNgIADAELIARBGGogASACEC0iAxADBEAgACADEBoMAQsgAwRAIABBuH8QGgwBCyACIAQoAjAiA2shAiABIANqIQMDQAJAIAAgAyACIARBCGoQLCIFEAMEfyAFBSACIAVBA2oiBU8NAUG4fwsQGgwCCyAGQQFqIQYgAiAFayECIAMgBWohAyAEKAIMRQ0ACyAEKAI4BEAgAkEDTQRAIABBuH8QGgwCCyADQQRqIQMLIAQoAighAiAEKQMYIQcgAEEANgIEIAAgAyABazYCACAAIAIgBmytIAcgB0J/URs3AwgLIARBQGskAAslAQF/IwBBEGsiAiQAIAIgACABEFEgAigCACEAIAJBEGokACAAC30BBH8jAEGQBGsiBCQAIARB/wE2AggCQCAEQRBqIARBCGogBEEMaiABIAIQFSIGEAMEQCAGIQUMAQtBVCEFIAQoAgwiB0EGSw0AIAMgBEEQaiAEKAIIIAcQQSIFEAMNACAAIAEgBmogAiAGayADEDwhBQsgBEGQBGokACAFC4cBAgJ/An5BABAWIQMCQANAIAEgA08EQAJAIAAoAABBcHFB0NS0wgFGBEAgACABECIiAhADRQ0BQn4PCyAAIAEQVSIEQn1WDQMgBCAFfCIFIARUIQJCfiEEIAINAyAAIAEQUiICEAMNAwsgASACayEBIAAgAmohAAwBCwtCfiAFIAEbIQQLIAQLPwIBfwF+IwBBMGsiAiQAAn5CfiACQQhqIAAgARAtDQAaQgAgAigCHEEBRg0AGiACKQMICyEDIAJBMGokACADC40BAQJ/IwBBMGsiASQAAkAgAEUNACAAKAKI4gENACABIABB/OEBaigCADYCKCABIAApAvThATcDICAAEDAgACgCqOIBIQIgASABKAIoNgIYIAEgASkDIDcDECACIAFBEGoQGyAAQQA2AqjiASABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALKgECfyMAQRBrIgAkACAAQQA2AgggAEIANwMAIAAQWCEBIABBEGokACABC4cBAQN/IwBBEGsiAiQAAkAgACgCAEUgACgCBEVzDQAgAiAAKAIINgIIIAIgACkCADcDAAJ/IAIoAgAiAQRAIAIoAghBqOMJIAERBQAMAQtBqOMJECgLIgFFDQAgASAAKQIANwL04QEgAUH84QFqIAAoAgg2AgAgARBZIAEhAwsgAkEQaiQAIAMLywEBAn8jAEEgayIBJAAgAEGBgIDAADYCtOIBIABBADYCiOIBIABBADYC7OEBIABCADcDkOIBIABBADYCpOMJIABBADYC3OIBIABCADcCzOIBIABBADYCvOIBIABBADYCxOABIABCADcCnOIBIABBpOIBakIANwIAIABBrOIBakEANgIAIAFCADcCECABQgA3AhggASABKQMYNwMIIAEgASkDEDcDACABKAIIQQh2QQFxIQIgAEEANgLg4gEgACACNgKM4gEgAUEgaiQAC3YBA38jAEEwayIBJAAgAARAIAEgAEHE0AFqIgIoAgA2AiggASAAKQK80AE3AyAgACgCACEDIAEgAigCADYCGCABIAApArzQATcDECADIAFBEGoQGyABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALzAEBAX8gACABKAK00AE2ApjiASAAIAEoAgQiAjYCwOABIAAgAjYCvOABIAAgAiABKAIIaiICNgK44AEgACACNgLE4AEgASgCuNABBEAgAEKBgICAEDcDiOEBIAAgAUGk0ABqNgIMIAAgAUGUIGo2AgggACABQZwwajYCBCAAIAFBDGo2AgAgAEGs0AFqIAFBqNABaigCADYCACAAQbDQAWogAUGs0AFqKAIANgIAIABBtNABaiABQbDQAWooAgA2AgAPCyAAQgA3A4jhAQs7ACACRQRAQbp/DwsgBEUEQEFsDwsgAiAEEGAEQCAAIAEgAiADIAQgBRBhDwsgACABIAIgAyAEIAUQZQtGAQF/IwBBEGsiBSQAIAVBCGogBBAOAn8gBS0ACQRAIAAgASACIAMgBBAyDAELIAAgASACIAMgBBA0CyEAIAVBEGokACAACzQAIAAgAyAEIAUQNiIFEAMEQCAFDwsgBSAESQR/IAEgAiADIAVqIAQgBWsgABA1BUG4fwsLRgEBfyMAQRBrIgUkACAFQQhqIAQQDgJ/IAUtAAkEQCAAIAEgAiADIAQQYgwBCyAAIAEgAiADIAQQNQshACAFQRBqJAAgAAtZAQF/QQ8hAiABIABJBEAgAUEE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",de=new WeakMap;let ue=0,fe;class Y extends B.Loader{constructor(A){super(A),this.transcoderPath="",this.transcoderBinary=null,this.transcoderPending=null,this.workerPool=new rs,this.workerSourceURL="",this.workerConfig=null,typeof MSC_TRANSCODER!="undefined"&&console.warn('THREE.KTX2Loader: Please update to latest "basis_transcoder". "msc_basis_transcoder" is no longer supported in three.js r125+.')}setTranscoderPath(A){return this.transcoderPath=A,this}setWorkerLimit(A){return this.workerPool.setWorkerLimit(A),this}detectSupportAsync(A){return TA(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(([i,n])=>{const r=Y.BasisWorker.toString(),o=["/* constants */","let _EngineFormat = "+JSON.stringify(Y.EngineFormat),"let _TranscoderFormat = "+JSON.stringify(Y.TranscoderFormat),"let _BasisFormat = "+JSON.stringify(Y.BasisFormat),"/* basis_transcoder.js */",i,"/* worker */",r.substring(r.indexOf("{")+1,r.lastIndexOf("}"))].join(`
10
+ `);this.workerSourceURL=URL.createObjectURL(new Blob([o])),this.transcoderBinary=n,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})}),ue>0&&console.warn("THREE.KTX2Loader: Multiple active KTX2 loaders may cause performance issues. Use a single KTX2Loader instance, or call .dispose() on old instances."),ue++}return this.transcoderPending}load(A,e,s,t){if(this.workerConfig===null)throw new Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");const i=new B.FileLoader(this.manager);i.setResponseType("arraybuffer"),i.setWithCredentials(this.withCredentials),i.load(A,n=>{if(de.has(n))return de.get(n).promise.then(e).catch(t);this._createTexture(n).then(r=>e?e(r):null).catch(t)},s,t)}_createTextureFrom(A,e){const{faces:s,width:t,height:i,format:n,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,n,B.UnsignedByteType);else{const C=s[0].mipmaps;g=e.layerCount>1?new B.CompressedArrayTexture(C,t,i,e.layerCount,n,B.UnsignedByteType):new B.CompressedTexture(C,t,i,n,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=Qt(e),g.premultiplyAlpha=!!(a&as),g}_createTexture(s){return TA(this,arguments,function*(A,e={}){const t=Qs(new Uint8Array(A));if(t.vkFormat!==Es)return ds(t);const i=e,n=this.init().then(()=>this.workerPool.postMessage({type:"transcode",buffer:A,taskConfig:i},[A])).then(r=>this._createTextureFrom(r.data,t));return de.set(A,{promise:n}),n})}dispose(){return this.workerPool.dispose(),this.workerSourceURL&&URL.revokeObjectURL(this.workerSourceURL),ue--,this}}Y.BasisFormat={ETC1S:0,UASTC_4x4:1};Y.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};Y.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};Y.BasisWorker=function(){let I,A,e;const s=_EngineFormat,t=_TranscoderFormat,i=_BasisFormat;self.addEventListener("message",function(d){const l=d.data;switch(l.type){case"init":I=l.config,n(l.transcoderBinary);break;case"transcode":A.then(()=>{try{const{faces:c,buffers:u,width:f,height:D,hasAlpha:F,format:m,dfdFlags:M}=r(l.buffer);self.postMessage({type:"transcode",id:l.id,faces:c,width:f,height:D,hasAlpha:F,format:m,dfdFlags:M},u)}catch(c){console.error(c),self.postMessage({type:"error",id:l.id,error:c.message})}});break}});function n(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()?i.UASTC_4x4:i.ETC1S,f=l.getWidth(),D=l.getHeight(),F=l.getLayers()||1,m=l.getLevels(),M=l.getFaces(),w=l.getHasAlpha(),O=l.getDFDFlags(),{transcoderFormat:U,engineFormat:q}=C(u,f,D,w);if(!f||!D||!m)throw c(),new Error("THREE.KTX2Loader: Invalid texture");if(!l.startTranscoding())throw c(),new Error("THREE.KTX2Loader: .startTranscoding failed");const yA=[],te=[];for(let aA=0;aA<M;aA++){const se=[];for(let Z=0;Z<m;Z++){const ie=[];let T,N;for(let X=0;X<F;X++){const QA=l.getImageLevelInfo(Z,X,aA);aA===0&&Z===0&&X===0&&(QA.origWidth%4!==0||QA.origHeight%4!==0)&&console.warn("THREE.KTX2Loader: ETC1S and UASTC textures should use multiple-of-four dimensions."),m>1?(T=QA.origWidth,N=QA.origHeight):(T=QA.width,N=QA.height);const Je=new Uint8Array(l.getImageTranscodedSizeInBytes(Z,X,0,U));if(!l.transcodeImage(Je,Z,X,aA,U,0,-1,-1))throw c(),new Error("THREE.KTX2Loader: .transcodeImage failed.");ie.push(Je)}const LA=h(ie);se.push({data:LA,width:T,height:N}),te.push(LA.buffer)}yA.push({mipmaps:se,width:f,height:D,format:q})}return c(),{faces:yA,buffers:te,width:f,height:D,hasAlpha:w,format:q,dfdFlags:O}}const o=[{if:"astcSupported",basisFormat:[i.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:[i.ETC1S,i.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:[i.ETC1S,i.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:[i.ETC1S,i.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:[i.ETC1S,i.UASTC_4x4],transcoderFormat:[t.ETC1],engineFormat:[s.RGB_ETC1_Format],priorityETC1S:2,priorityUASTC:4,needsPowerOfTwo:!1},{if:"pvrtcSupported",basisFormat:[i.ETC1S,i.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,D;const F=d===i.ETC1S?a:g;for(let m=0;m<F.length;m++){const M=F[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],D=M.engineFormat[u?1:0],{transcoderFormat:f,engineFormat:D}}return console.warn("THREE.KTX2Loader: No suitable compressed texture format found. Decoding to RGBA32."),f=t.RGBA32,D=s.RGBAFormat,{transcoderFormat:f,engineFormat:D}}function Q(d){return d<=2?!0:(d&d-1)===0&&d!==0}function h(d){if(d.length===1)return d[0];let l=0;for(let f=0;f<d.length;f++){const D=d[f];l+=D.byteLength}const c=new Uint8Array(l);let u=0;for(let f=0;f<d.length;f++){const D=d[f];c.set(D,u),u+=D.byteLength}return c}};const ls=new Set([B.RGBAFormat,B.RGFormat,B.RedFormat]),De={[gt]:B.RGBAFormat,[at]:B.RGBAFormat,[nt]:B.RGBAFormat,[ot]:B.RGBAFormat,[It]:B.RGFormat,[Bt]:B.RGFormat,[st]:B.RGFormat,[it]:B.RGFormat,[Ct]:B.RedFormat,[rt]:B.RedFormat,[tt]:B.RedFormat,[et]:B.RedFormat,[ct]:B.RGBA_ASTC_6x6_Format,[Et]:B.RGBA_ASTC_6x6_Format},Fe={[gt]:B.FloatType,[at]:B.HalfFloatType,[nt]:B.UnsignedByteType,[ot]:B.UnsignedByteType,[It]:B.FloatType,[Bt]:B.HalfFloatType,[st]:B.UnsignedByteType,[it]:B.UnsignedByteType,[Ct]:B.FloatType,[rt]:B.HalfFloatType,[tt]:B.UnsignedByteType,[et]:B.UnsignedByteType,[ct]:B.UnsignedByteType,[Et]:B.UnsignedByteType};function ds(I){return TA(this,null,function*(){const{vkFormat:A}=I;if(De[A]===void 0)throw new Error("THREE.KTX2Loader: Unsupported vkFormat.");let e;I.supercompressionScheme===Ye&&(fe||(fe=new Promise(i=>TA(this,null,function*(){const n=new hs;yield n.init(),i(n)}))),e=yield fe);const s=[];for(let i=0;i<I.levels.length;i++){const n=Math.max(1,I.pixelWidth>>i),r=Math.max(1,I.pixelHeight>>i),o=I.pixelDepth?Math.max(1,I.pixelDepth>>i):0,a=I.levels[i];let g;if(I.supercompressionScheme===Bs)g=a.levelData;else if(I.supercompressionScheme===Ye)g=e.decode(a.levelData,a.uncompressedByteLength);else throw new Error("THREE.KTX2Loader: Unsupported supercompressionScheme.");let C;Fe[A]===B.FloatType?C=new Float32Array(g.buffer,g.byteOffset,g.byteLength/Float32Array.BYTES_PER_ELEMENT):Fe[A]===B.HalfFloatType?C=new Uint16Array(g.buffer,g.byteOffset,g.byteLength/Uint16Array.BYTES_PER_ELEMENT):C=g,s.push({data:C,width:n,height:r,depth:o})}let t;if(ls.has(De[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=Fe[A],t.format=De[A],t.colorSpace=Qt(I),t.needsUpdate=!0,Promise.resolve(t)})}function Qt(I){const A=I.dataFormatDescriptor[0];return A.colorPrimaries===Is?A.transferFunction===qe?B.SRGBColorSpace:B.LinearSRGBColorSpace:A.colorPrimaries===gs?A.transferFunction===qe?B.DisplayP3ColorSpace:B.LinearDisplayP3ColorSpace:(A.colorPrimaries===Cs||console.warn(`THREE.KTX2Loader: Unsupported color primaries, "${A.colorPrimaries}"`),B.NoColorSpace)}let re;const us=()=>{if(re)return re;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 i;const n=WebAssembly.instantiate(r(t),{}).then(C=>{i=C.instance,i.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=i.exports.sbrk,f=h+3&-4,D=u(f*d),F=u(l.length),m=new Uint8Array(i.exports.memory.buffer);m.set(l,F);const M=C(D,h,d,F,l.length);if(M===0&&c&&c(D,f,d),Q.set(m.subarray(D,D+h*d)),u(D-u(0)),M!==0)throw new Error(`Malformed buffer data: ${M}`)}const a={0:"",1:"meshopt_decodeFilterOct",2:"meshopt_decodeFilterQuat",3:"meshopt_decodeFilterExp",NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp"},g={0:"meshopt_decodeVertexBuffer",1:"meshopt_decodeIndexBuffer",2:"meshopt_decodeIndexSequence",ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"};return re={ready:n,supported:!0,decodeVertexBuffer(C,Q,h,d,l){o(i.exports.meshopt_decodeVertexBuffer,C,Q,h,d,i.exports[a[l]])},decodeIndexBuffer(C,Q,h,d){o(i.exports.meshopt_decodeIndexBuffer,C,Q,h,d)},decodeIndexSequence(C,Q,h,d){o(i.exports.meshopt_decodeIndexSequence,C,Q,h,d)},decodeGltfBuffer(C,Q,h,d,l,c){o(i.exports[g[l]],C,Q,h,d,i.exports[a[c]])}},re};var FA,PA,YA,qA;class fs{constructor(){G(this,FA,new pt);G(this,PA,new ns().setDecoderPath(`${k.CDNVersion}/examples/jsm/libs/draco/gltf/`));G(this,YA,new Y().setTranscoderPath(`${k.CDNVersion}/examples/jsm/libs/basis/`));G(this,qA,!1);E(this,FA).setCrossOrigin("anonymous").setDRACOLoader(E(this,PA)).setMeshoptDecoder(us)}get gltfLoader(){return E(this,FA)}get dracoLoader(){return E(this,PA)}get ktx2Loader(){return E(this,YA)}load(...A){E(this,qA)||(E(this,FA).setKTX2Loader(E(this,YA).detectSupport(k.webglRenderer)),R(this,qA,!0)),this.gltfLoader.load(...A)}}FA=new WeakMap,PA=new WeakMap,YA=new WeakMap,qA=new WeakMap;const ht=new fs;var iA,y,j,XA;class Ds{constructor(A,e){G(this,iA,void 0);G(this,y,void 0);G(this,j,[]);G(this,XA,()=>{const A=E(this,y).left-E(this,iA).left,e=E(this,y).top-E(this,iA).top,s=E(this,y).position.x-E(this,y).left,t=E(this,y).position.y-E(this,y).top,i=E(this,iA).width-E(this,y).scale.x,n=A-i,r=E(this,iA).height-E(this,y).scale.y,o=e-r;E(this,j)[0].constant=E(this,y).scale.y/2+t*-1-r/2-o,E(this,j)[1].constant=E(this,y).scale.y/2+t+r/2+o,E(this,j)[2].constant=E(this,y).scale.x/2+s+i/2+n,E(this,j)[3].constant=E(this,y).scale.x/2+s*-1-i/2-n});R(this,iA,k.getView((e==null?void 0:e.viewName)||"default")),R(this,y,new Ze.LayoutBox(A,{cartesian:!1}));const s=(e==null?void 0:e.scale)||1;R(this,j,[new B.Plane(new B.Vector3(0,-1*s,0)),new B.Plane(new B.Vector3(0,1*s,0)),new B.Plane(new B.Vector3(-1*s,0,0)),new B.Plane(new B.Vector3(1*s,0,0))]),SA.ticker.subscribe(E(this,XA),{order:NA.TICK_ORDER.LAYOUT_BOX})}get planes(){return E(this,j)}get layoutBox(){return E(this,y)}destroy(){SA.ticker.unsubscribe(E(this,XA)),E(this,y).destroy()}}iA=new WeakMap,y=new WeakMap,j=new WeakMap,XA=new WeakMap;class Fs extends B.Group{constructor(A,e=500){super(),this.add(new B.PlaneHelper(A.planes[0],e,16711680)),this.add(new B.PlaneHelper(A.planes[1],e,16711680)),this.add(new B.PlaneHelper(A.planes[2],e,16711680)),this.add(new B.PlaneHelper(A.planes[3],e,16711680))}}var GA,EA,RA,vA,VA,nA,pA,WA;class Le extends Gt.SourceManager{constructor(e){super(e);G(this,GA,new ke.Store(null));G(this,EA,new ke.Store(void 0));G(this,RA,void 0);G(this,vA,void 0);G(this,VA,void 0);G(this,nA,void 0);G(this,pA,!1);G(this,WA,()=>{if(!(E(this,nA)&&!E(this,pA))&&(this.current!==this.previous&&(E(this,GA).current=null),this.current)){const e=E(this,VA)?this.current.url:this.current.name+this.current.extension;E(this,nA)||Ie.loading.setTotal(e,1),E(this,EA).current="start",E(this,vA).load(e,s=>{E(this,GA).current=s,E(this,EA).current="complete",E(this,nA)||Ie.loading.setLoaded(e,1)},void 0,()=>{E(this,nA)||(E(this,EA).current="error",Ie.loading.setError(e,e))})}});R(this,RA,e.consumer),R(this,vA,e.loader),R(this,VA,e.keepSourceParameters||!1),R(this,nA,e.lazy||!1),this.subscribe(E(this,WA)),E(this,RA).addEventListener("added",()=>{this.connect()}),E(this,RA).addEventListener("removed",()=>{this.disconnect()})}get data(){return E(this,GA)}get loading(){return E(this,EA)}lazyLoad(){E(this,pA)||(R(this,pA,!0),E(this,WA).call(this))}}GA=new WeakMap,EA=new WeakMap,RA=new WeakMap,vA=new WeakMap,VA=new WeakMap,nA=new WeakMap,pA=new WeakMap,WA=new WeakMap;var mA;class Gs extends B.Group{constructor(e){super();G(this,mA,void 0);R(this,mA,new Le(hA({loader:ht,consumer:this},e))),E(this,mA).data.subscribe(s=>{s.current?this.add(...s.current.scene.children):this.children.forEach(t=>{this.remove(t),ye(t)})})}get sourceManager(){return E(this,mA)}}mA=new WeakMap;function Te(I,A,e){const s=A.x,t=A.y,i=e||I.image.width/I.image.height;let n=0,r=0,o=I.offset.x,a=I.offset.y,g=I.rotation,C=I.center.x,Q=I.center.y;s/t>i?(n=1,r=t/s*i):(r=1,n=s/t/i),I.matrix.setUvTransform(o,a,n,r,g,C,Q)}const UA=new B.Vector3;function b(I,A,e,s,t,i){const n=2*Math.PI*t/4,r=Math.max(i-2*t,0),o=Math.PI/4;UA.copy(A),UA[s]=0,UA.normalize();const a=.5*n/(n+r),g=1-UA.angleTo(I)/o;return Math.sign(UA[e])===1?g*a:r/(n+r)+a+a*(1-g)}class Rs extends B.BoxGeometry{constructor(A=1,e=1,s=1,t=2,i=.1){if(t=t*2+1,i=Math.min(A/2,e/2,s/2,i),super(1,1,1,t,t,t),t===1)return;const n=this.toNonIndexed();this.index=null,this.attributes.position=n.attributes.position,this.attributes.normal=n.attributes.normal,this.attributes.uv=n.attributes.uv;const r=new B.Vector3,o=new B.Vector3,a=new B.Vector3(A,e,s).divideScalar(2).subScalar(i),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*i,g[c+1]=a.y*Math.sign(r.y)+o.y*i,g[c+2]=a.z*Math.sign(r.z)+o.z*i,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]=b(d,o,"z","y",i,s),Q[u+1]=1-b(d,o,"y","z",i,e);break;case 1:d.set(-1,0,0),Q[u+0]=1-b(d,o,"z","y",i,s),Q[u+1]=1-b(d,o,"y","z",i,e);break;case 2:d.set(0,1,0),Q[u+0]=1-b(d,o,"x","z",i,A),Q[u+1]=b(d,o,"z","x",i,s);break;case 3:d.set(0,-1,0),Q[u+0]=1-b(d,o,"x","z",i,A),Q[u+1]=1-b(d,o,"z","x",i,s);break;case 4:d.set(0,0,1),Q[u+0]=1-b(d,o,"x","y",i,A),Q[u+1]=1-b(d,o,"y","x",i,e);break;case 5:d.set(0,0,-1),Q[u+0]=b(d,o,"x","y",i,A),Q[u+1]=1-b(d,o,"y","x",i,e);break}}}const Ve=new B.Vector3,ps=new B.Quaternion,We=new B.Vector3;class ms extends B.Object3D{constructor(A=document.createElement("div")){super(),this.isCSS3DObject=!0,this.element=A,this.element.style.position="absolute",this.element.style.pointerEvents="auto",this.element.style.userSelect="none",this.element.setAttribute("draggable",!1),this.addEventListener("removed",function(){this.traverse(function(e){e.element instanceof Element&&e.element.parentNode!==null&&e.element.parentNode.removeChild(e.element)})})}copy(A,e){return super.copy(A,e),this.element=A.element.cloneNode(!0),this}}const _=new B.Matrix4,Ms=new B.Matrix4;class ws{constructor(A={}){const e=this;let s,t,i,n;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]*n;c.view&&c.view.enabled?(a.style.transform=`translate( ${-c.view.offsetX*(s/c.view.width)}px, ${-c.view.offsetY*(t/c.view.height)}px )`,a.style.transform+=`scale( ${c.view.fullWidth/c.view.width}, ${c.view.fullHeight/c.view.height} )`):a.style.transform="",l.matrixWorldAutoUpdate===!0&&l.updateMatrixWorld(),c.parent===null&&c.matrixWorldAutoUpdate===!0&&c.updateMatrixWorld();let f,D;c.isOrthographicCamera&&(f=-(c.right+c.left)/2,D=(c.top+c.bottom)/2);const F=c.view&&c.view.enabled?c.view.height/c.view.fullHeight:1,m=c.isOrthographicCamera?`scale( ${F} )scale(`+u+")translate("+C(f)+"px,"+C(D)+"px)"+Q(c.matrixWorldInverse):`scale( ${F} )translateZ(`+u+"px)"+Q(c.matrixWorldInverse),w=(c.isPerspectiveCamera?"perspective("+u+"px) ":"")+m+"translate("+i+"px,"+n+"px)";r.camera.style!==w&&(g.style.transform=w,r.camera.style=w),d(l,l,c)},this.setSize=function(l,c){s=l,t=c,i=s/2,n=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 D=l.visible===!0&&l.layers.test(u.layers)===!0;if(l.element.style.display=D===!0?"":"none",D===!0){l.onBeforeRender(e,c,u);let F;l.isCSS3DSprite?(_.copy(u.matrixWorldInverse),_.transpose(),l.rotation2D!==0&&_.multiply(Ms.makeRotationZ(l.rotation2D)),l.matrixWorld.decompose(Ve,ps,We),_.setPosition(Ve),_.scale(We),_.elements[3]=0,_.elements[7]=0,_.elements[11]=0,_.elements[15]=1,F=h(_)):F=h(l.matrixWorld);const m=l.element,M=r.objects.get(l);if(M===void 0||M.style!==F){m.style.transform=F;const w={style:F};r.objects.set(l,w)}m.parentNode!==g&&g.appendChild(m),l.onAfterRender(e,c,u)}}for(let D=0,F=l.children.length;D<F;D++)d(l.children[D],c,u)}}}var oA,MA,cA;class He extends B.Mesh{constructor(e){super(new Rs(e.width,e.height,1,e.segments,e.round||0),e.material);G(this,oA,void 0);G(this,MA,void 0);G(this,cA,()=>{E(this,oA).data.current&&E(this,MA)&&this.onCoverResize(E(this,oA).data.current)});R(this,oA,new Le(hA({consumer:this},e))),R(this,MA,e.cover||!1),this.addEventListener("added",()=>{wA.windowResizer.subscribe(E(this,cA))}),this.addEventListener("removed",()=>{wA.windowResizer.unsubscribe(E(this,cA))}),E(this,oA).data.subscribe(s=>{!s.current&&s.previous?s.previous.dispose():s.current&&this.material&&(E(this,MA)&&(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,cA).call(this))})}get sourceManager(){return E(this,oA)}updateTexture(){E(this,cA).call(this)}onCoverResize(e){Te(e,{x:this.scale.x,y:this.scale.y})}}oA=new WeakMap,MA=new WeakMap,cA=new WeakMap;class Ss extends He{constructor(A){super(ne(hA({},A),{loader:ze}))}}class ys{load(...A){const e=A[0],s=A[1],t=A[3],i=document.createElement("video");i.src=e,i.onloadeddata=()=>{s(new B.VideoTexture(i)),i.onerror=null,i.onloadeddata=null},i.onerror=()=>{t==null||t(e),i.onerror=null,i.onloadeddata=null}}}var jA,ZA,zA;class Ls extends He{constructor(e){super(ne(hA({},e),{loader:new ys}));G(this,jA,void 0);G(this,ZA,void 0);G(this,zA,void 0);R(this,jA,e.autoplay||!1),R(this,ZA,e.muted||!1),R(this,zA,e.loop||!1),this.sourceManager.data.subscribe(s=>{if(s.current){const t=s.current.image;E(this,ZA)&&(t.muted=!0),E(this,zA)&&(t.loop=!0),E(this,jA)&&t.play()}})}onCoverResize(e){const s=e.image;Te(e,{x:this.scale.x,y:this.scale.y},s.videoWidth/s.videoHeight)}}jA=new WeakMap,ZA=new WeakMap,zA=new WeakMap;function Ts(I,A){I.traverse(e=>{e instanceof B.Mesh&&A(e)})}function Hs(I,A){I.traverse(e=>{e instanceof B.Mesh&&e.material&&(Array.isArray(e.material)?e.material:[e.material]).forEach(A)})}const Ge=new B.Vector3,Js=new B.Vector3;function Us(I,A="default"){const e=k.getView(A),{width:s,height:t}=k,i=s/t;I instanceof B.Vector3?Ge.copy(I):Ge.set(...I);const n=e.camera.getWorldPosition(Js).distanceTo(Ge);if(e.camera instanceof B.OrthographicCamera)return{width:s/e.camera.zoom,height:t/e.camera.zoom,factor:1,distance:n,aspect:i};{const r=e.camera.fov*Math.PI/180,o=2*Math.tan(r/2)*n,a=o*(s/t);return{width:a,height:o,factor:s/a,distance:n,aspect:i}}}var P,ae,lt,$A,Ae;const x=class x extends ms{static destroy(){wA.windowResizer.unsubscribe(E(this,Ae)),SA.ticker.unsubscribe(E(this,$A)),R(this,P,null)}constructor(A){var e;super(A.element),E(x,P)||oe(e=x,ae,lt).call(e)}};P=new WeakMap,ae=new WeakSet,lt=function(){R(x,P,new ws),E(x,P).domElement.style.cssText=`
11
11
  position: fixed;
12
12
  left: 0;
13
13
  top: 0;
@@ -1,5 +1,5 @@
1
1
  export { en3 } from './core/en3';
2
- export { En3View, type En3ViewOptions, type En3AttachedObject3D, type En3AttachOptions, } from './core/En3View';
2
+ export { En3View, type En3ViewOptions, type En3AttachedObject3D, type En3AttachOptions, type En3ViewBeforeRenderCallback, } from './core/En3View';
3
3
  export { en3TextureLoader } from './loaders/en3TextureLoader';
4
4
  export { en3GLTFLoader } from './loaders/en3GLTFLoader';
5
5
  export { En3Clip } from './objects/En3Clip';
package/lib/en3/index.js CHANGED
@@ -10,16 +10,16 @@ var it = (a, A, e) => A in a ? is(a, A, { enumerable: !0, configurable: !0, writ
10
10
  Cs.call(A, e) && it(a, e, A[e]);
11
11
  return a;
12
12
  }, ue = (a, A) => os(a, Bs(A));
13
- var ye = (a, A, e) => {
13
+ var Se = (a, A, e) => {
14
14
  if (!A.has(a))
15
15
  throw TypeError("Cannot " + e);
16
16
  };
17
- var g = (a, A, e) => (ye(a, A, "read from private field"), e ? e.call(a) : A.get(a)), F = (a, A, e) => {
17
+ var g = (a, A, e) => (Se(a, A, "read from private field"), e ? e.call(a) : A.get(a)), F = (a, A, e) => {
18
18
  if (A.has(a))
19
19
  throw TypeError("Cannot add the same private member more than once");
20
20
  A instanceof WeakSet ? A.add(a) : A.set(a, e);
21
- }, G = (a, A, e, s) => (ye(a, A, "write to private field"), s ? s.call(a, e) : A.set(a, e), e);
22
- var fe = (a, A, e) => (ye(a, A, "access private method"), e);
21
+ }, G = (a, A, e, s) => (Se(a, A, "write to private field"), s ? s.call(a, e) : A.set(a, e), e);
22
+ var fe = (a, A, e) => (Se(a, A, "access private method"), e);
23
23
  var KA = (a, A, e) => new Promise((s, t) => {
24
24
  var n = (o) => {
25
25
  try {
@@ -41,7 +41,7 @@ import { windowResizer as UA } from "../window-resizer/index.js";
41
41
  import { ticker as NA } from "../ticker/index.js";
42
42
  import { g as wt } from "../dom-0S_WDL4g.js";
43
43
  import "../path-data-polyfill-DgeDWYeI.js";
44
- import { Mesh as Qe, OrthographicCamera as me, PerspectiveCamera as qe, Scene as as, REVISION as Is, WebGLRenderer as gs, TextureLoader as St, TrianglesDrawMode as Es, TriangleFanDrawMode as Xe, TriangleStripDrawMode as yt, Loader as $e, LoaderUtils as vA, FileLoader as fA, Color as EA, LinearSRGBColorSpace as _, SpotLight as cs, PointLight as Qs, DirectionalLight as hs, MeshBasicMaterial as YA, SRGBColorSpace as $, MeshPhysicalMaterial as AA, Vector2 as Lt, Matrix4 as xA, Vector3 as w, Quaternion as At, InstancedMesh as ls, InstancedBufferAttribute as ds, Object3D as et, ImageBitmapLoader as us, BufferAttribute as WA, InterleavedBuffer as fs, InterleavedBufferAttribute as Ds, LinearFilter as Me, LinearMipmapLinearFilter as tt, RepeatWrapping as ve, PointsMaterial as Fs, Material as Le, LineBasicMaterial as Gs, MeshStandardMaterial as Jt, DoubleSide as Rs, PropertyBinding as ps, BufferGeometry as Ht, SkinnedMesh as ms, LineSegments as Ms, Line as ws, LineLoop as Ss, Points as ys, Group as VA, MathUtils as Ls, Skeleton as Js, AnimationClip as Hs, Bone as Ts, InterpolateLinear as Tt, ColorManagement as ot, NearestFilter as Us, NearestMipmapNearestFilter as Ns, LinearMipmapNearestFilter as xs, NearestMipmapLinearFilter as ks, ClampToEdgeWrapping as bs, MirroredRepeatWrapping as Ks, InterpolateDiscrete as Os, FrontSide as _s, Texture as Bt, VectorKeyframeTrack as rt, NumberKeyframeTrack as Ct, QuaternionKeyframeTrack as at, Box3 as Ps, Sphere as Ys, Interpolant as qs, CompressedCubeTexture as Xs, UnsignedByteType as O, CompressedArrayTexture as vs, CompressedTexture as Ut, RGBAFormat as GA, RGBA_ASTC_4x4_Format as Ws, RGBA_BPTC_Format as Vs, RGBA_ETC2_EAC_Format as js, RGBA_PVRTC_4BPPV1_Format as Zs, RGBA_S3TC_DXT5_Format as zs, RGB_ETC1_Format as $s, RGB_ETC2_Format as An, RGB_PVRTC_4BPPV1_Format as en, RGB_S3TC_DXT1_Format as tn, FloatType as Re, HalfFloatType as pe, DataTexture as sn, Data3DTexture as nn, DisplayP3ColorSpace as on, LinearDisplayP3ColorSpace as Bn, NoColorSpace as It, RGFormat as qA, RedFormat as XA, RGBA_ASTC_6x6_Format as gt, Plane as De, PlaneHelper as Fe, BoxGeometry as rn, VideoTexture as Cn } from "three";
44
+ import { Mesh as Qe, OrthographicCamera as me, PerspectiveCamera as qe, Scene as as, REVISION as Is, WebGLRenderer as gs, TextureLoader as yt, TrianglesDrawMode as Es, TriangleFanDrawMode as Xe, TriangleStripDrawMode as St, Loader as $e, LoaderUtils as vA, FileLoader as fA, Color as EA, LinearSRGBColorSpace as _, SpotLight as cs, PointLight as Qs, DirectionalLight as hs, MeshBasicMaterial as YA, SRGBColorSpace as $, MeshPhysicalMaterial as AA, Vector2 as Lt, Matrix4 as xA, Vector3 as w, Quaternion as At, InstancedMesh as ls, InstancedBufferAttribute as ds, Object3D as et, ImageBitmapLoader as us, BufferAttribute as WA, InterleavedBuffer as fs, InterleavedBufferAttribute as Ds, LinearFilter as Me, LinearMipmapLinearFilter as tt, RepeatWrapping as ve, PointsMaterial as Fs, Material as Le, LineBasicMaterial as Gs, MeshStandardMaterial as Jt, DoubleSide as Rs, PropertyBinding as ps, BufferGeometry as Ht, SkinnedMesh as ms, LineSegments as Ms, Line as ws, LineLoop as ys, Points as Ss, Group as VA, MathUtils as Ls, Skeleton as Js, AnimationClip as Hs, Bone as Ts, InterpolateLinear as Tt, ColorManagement as ot, NearestFilter as Us, NearestMipmapNearestFilter as Ns, LinearMipmapNearestFilter as xs, NearestMipmapLinearFilter as ks, ClampToEdgeWrapping as bs, MirroredRepeatWrapping as Ks, InterpolateDiscrete as Os, FrontSide as _s, Texture as Bt, VectorKeyframeTrack as rt, NumberKeyframeTrack as Ct, QuaternionKeyframeTrack as at, Box3 as Ps, Sphere as Ys, Interpolant as qs, CompressedCubeTexture as Xs, UnsignedByteType as O, CompressedArrayTexture as vs, CompressedTexture as Ut, RGBAFormat as GA, RGBA_ASTC_4x4_Format as Ws, RGBA_BPTC_Format as Vs, RGBA_ETC2_EAC_Format as js, RGBA_PVRTC_4BPPV1_Format as Zs, RGBA_S3TC_DXT5_Format as zs, RGB_ETC1_Format as $s, RGB_ETC2_Format as An, RGB_PVRTC_4BPPV1_Format as en, RGB_S3TC_DXT1_Format as tn, FloatType as Re, HalfFloatType as pe, DataTexture as sn, Data3DTexture as nn, DisplayP3ColorSpace as on, LinearDisplayP3ColorSpace as Bn, NoColorSpace as It, RGFormat as qA, RedFormat as XA, RGBA_ASTC_6x6_Format as gt, Plane as De, PlaneHelper as Fe, BoxGeometry as rn, VideoTexture as Cn } from "three";
45
45
  import { LayoutBox as Nt } from "../layout-box/index.js";
46
46
  import { a as an, g as In } from "../layout-HoBT_Da2.js";
47
47
  import { loading as Je } from "../loading/index.js";
@@ -114,7 +114,7 @@ class ct {
114
114
  destroy() {
115
115
  g(this, nA).forEach((A) => {
116
116
  A.userData.box.destroy();
117
- }), g(this, hA).clear(), xt(g(this, hA)), K.removeView(this);
117
+ }), g(this, hA).clear(), xt(g(this, hA)), K.destroyView(this.name);
118
118
  }
119
119
  attachToHTMLElement(A, e, s) {
120
120
  const t = new Nt(A, ue(FA({}, s), {
@@ -135,13 +135,13 @@ class ct {
135
135
  }
136
136
  }
137
137
  jA = new WeakMap(), L = new WeakMap(), hA = new WeakMap(), nA = new WeakMap(), iA = new WeakMap(), pA = new WeakMap(), j = new WeakMap(), oA = new WeakMap(), Z = new WeakMap(), ZA = new WeakMap(), zA = new WeakMap();
138
- var we, BA, S, U, mA, MA, wA, $A, lA, Ae, ee;
138
+ var we, BA, y, T, mA, MA, wA, $A, lA, Ae, ee;
139
139
  class En {
140
140
  constructor() {
141
141
  F(this, we, `https://unpkg.com/three@0.${Is}.x`);
142
142
  F(this, BA, null);
143
- F(this, S, null);
144
- F(this, U, /* @__PURE__ */ new Map());
143
+ F(this, y, null);
144
+ F(this, T, /* @__PURE__ */ new Map());
145
145
  F(this, mA, 0);
146
146
  F(this, MA, 0);
147
147
  F(this, wA, 0);
@@ -149,12 +149,12 @@ class En {
149
149
  F(this, lA, !1);
150
150
  F(this, Ae, () => {
151
151
  var A;
152
- G(this, mA, g(this, BA).clientWidth), G(this, MA, g(this, BA).clientHeight), G(this, wA, Math.min(g(this, $A), devicePixelRatio || 1)), g(this, S).setPixelRatio(g(this, wA)), g(this, S).setSize(g(this, mA), g(this, MA)), g(this, U).forEach((e) => {
152
+ G(this, mA, g(this, BA).clientWidth), G(this, MA, g(this, BA).clientHeight), G(this, wA, Math.min(g(this, $A), devicePixelRatio || 1)), g(this, y).setPixelRatio(g(this, wA)), g(this, y).setSize(g(this, mA), g(this, MA)), g(this, T).forEach((e) => {
153
153
  e.resize();
154
154
  }), (A = this.onResize) == null || A.call(this);
155
155
  });
156
156
  F(this, ee, () => {
157
- g(this, S).setRenderTarget(null), g(this, U).forEach((A) => {
157
+ g(this, y).setRenderTarget(null), g(this, T).forEach((A) => {
158
158
  this.render(A);
159
159
  });
160
160
  });
@@ -166,10 +166,10 @@ class En {
166
166
  return g(this, BA);
167
167
  }
168
168
  get webglRenderer() {
169
- return g(this, S);
169
+ return g(this, y);
170
170
  }
171
171
  get views() {
172
- return g(this, U);
172
+ return g(this, T);
173
173
  }
174
174
  get view() {
175
175
  return this.getView("default");
@@ -188,14 +188,14 @@ class En {
188
188
  console.warn("[en3.setup]: You are trying to setup en3 again.");
189
189
  return;
190
190
  }
191
- G(this, BA, wt(A == null ? void 0 : A.containerElement) || document.body), G(this, $A, (A == null ? void 0 : A.maxPixelRatio) || 2), G(this, S, new gs(A == null ? void 0 : A.webGLRendererParameters)), g(this, S).domElement.style.cssText = `
191
+ G(this, BA, wt(A == null ? void 0 : A.containerElement) || document.body), G(this, $A, (A == null ? void 0 : A.maxPixelRatio) || 2), G(this, y, new gs(A == null ? void 0 : A.webGLRendererParameters)), g(this, y).domElement.style.cssText = `
192
192
  position: fixed;
193
193
  left: 0;
194
194
  top: 0;
195
195
  width: 100%;
196
196
  height: 100%;
197
197
  z-index: -1;
198
- `, g(this, BA).append(g(this, S).domElement), g(this, U).set("default", new ct("default", A == null ? void 0 : A.view)), G(this, lA, !0), UA.subscribe(g(this, Ae), Mt.EN3), NA.subscribe(g(this, ee), { order: ze.EN3 });
198
+ `, g(this, BA).append(g(this, y).domElement), g(this, T).set("default", new ct("default", A == null ? void 0 : A.view)), G(this, lA, !0), UA.subscribe(g(this, Ae), Mt.EN3), NA.subscribe(g(this, ee), { order: ze.EN3 });
199
199
  }
200
200
  destroy() {
201
201
  if (!g(this, lA)) {
@@ -204,41 +204,42 @@ class En {
204
204
  );
205
205
  return;
206
206
  }
207
- UA.unsubscribe(g(this, Ae)), NA.unsubscribe(g(this, ee)), g(this, U).forEach((A) => {
207
+ UA.unsubscribe(g(this, Ae)), NA.unsubscribe(g(this, ee)), g(this, T).forEach((A) => {
208
208
  A.destroy();
209
- }), g(this, S).dispose(), g(this, S).domElement.remove(), G(this, S, null), G(this, lA, !1);
209
+ }), g(this, y).dispose(), g(this, y).domElement.remove(), G(this, y, null), G(this, lA, !1);
210
210
  }
211
211
  createView(A, e) {
212
- const s = g(this, U).size, t = new ct(A, e);
213
- return g(this, U).set(A, t), t.resize(), s <= 1 && g(this, S).setScissorTest(!0), t;
212
+ const s = g(this, T).size, t = new ct(A, e);
213
+ return g(this, T).set(A, t), t.resize(), s <= 1 && g(this, y).setScissorTest(!0), t;
214
214
  }
215
215
  getView(A) {
216
- return g(this, U).get(A);
216
+ return g(this, T).get(A);
217
217
  }
218
- removeView(A) {
219
- g(this, U).delete(A.name), g(this, U).size <= 1 && g(this, S).setScissorTest(!1);
218
+ destroyView(A) {
219
+ const e = g(this, T).get(A);
220
+ e && (g(this, T).delete(A), e.destroy(), g(this, T).size <= 1 && g(this, y).setScissorTest(!1));
220
221
  }
221
222
  render(A) {
222
223
  var e;
223
- g(this, U).size > 1 && (g(this, S).setScissor(
224
+ g(this, T).size > 1 && (g(this, y).setScissor(
224
225
  A.left,
225
226
  A.top,
226
227
  A.width,
227
228
  A.height
228
- ), g(this, S).setViewport(
229
+ ), g(this, y).setViewport(
229
230
  A.left,
230
231
  A.top,
231
232
  A.width,
232
233
  A.height
233
- )), (e = A.beforeRenderCallback) == null || e.call(A), g(this, S).render(A.scene, A.camera);
234
+ )), (e = A.beforeRenderCallback) == null || e.call(A), g(this, y).render(A.scene, A.camera);
234
235
  }
235
236
  }
236
- we = new WeakMap(), BA = new WeakMap(), S = new WeakMap(), U = new WeakMap(), mA = new WeakMap(), MA = new WeakMap(), wA = new WeakMap(), $A = new WeakMap(), lA = new WeakMap(), Ae = new WeakMap(), ee = new WeakMap();
237
- const K = new En(), cn = new St();
237
+ we = new WeakMap(), BA = new WeakMap(), y = new WeakMap(), T = new WeakMap(), mA = new WeakMap(), MA = new WeakMap(), wA = new WeakMap(), $A = new WeakMap(), lA = new WeakMap(), Ae = new WeakMap(), ee = new WeakMap();
238
+ const K = new En(), cn = new yt();
238
239
  function Qt(a, A) {
239
240
  if (A === Es)
240
241
  return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."), a;
241
- if (A === Xe || A === yt) {
242
+ if (A === Xe || A === St) {
242
243
  let e = a.getIndex();
243
244
  if (e === null) {
244
245
  const i = [], B = a.getAttribute("position");
@@ -266,10 +267,10 @@ class Qn extends $e {
266
267
  constructor(A) {
267
268
  super(A), this.dracoLoader = null, this.ktx2Loader = null, this.meshoptDecoder = null, this.pluginCallbacks = [], this.register(function(e) {
268
269
  return new fn(e);
269
- }), this.register(function(e) {
270
- return new Sn(e);
271
270
  }), this.register(function(e) {
272
271
  return new yn(e);
272
+ }), this.register(function(e) {
273
+ return new Sn(e);
273
274
  }), this.register(function(e) {
274
275
  return new Ln(e);
275
276
  }), this.register(function(e) {
@@ -684,7 +685,7 @@ class wn {
684
685
  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);
685
686
  }
686
687
  }
687
- class Sn {
688
+ class yn {
688
689
  constructor(A) {
689
690
  this.parser = A, this.name = R.KHR_TEXTURE_BASISU;
690
691
  }
@@ -701,7 +702,7 @@ class Sn {
701
702
  return e.loadTextureImage(A, n.source, i);
702
703
  }
703
704
  }
704
- class yn {
705
+ class Sn {
705
706
  constructor(A) {
706
707
  this.parser = A, this.name = R.EXT_TEXTURE_WEBP, this.isSupported = null;
707
708
  }
@@ -1101,7 +1102,7 @@ class vn {
1101
1102
  constructor(A = {}, e = {}) {
1102
1103
  this.json = A, this.extensions = {}, this.plugins = {}, this.options = e, this.cache = new hn(), this.associations = /* @__PURE__ */ new Map(), this.primitiveCache = {}, this.nodeCache = {}, this.meshCache = { refs: {}, uses: {} }, this.cameraCache = { refs: {}, uses: {} }, this.lightCache = { refs: {}, uses: {} }, this.sourceCache = {}, this.textureCache = {}, this.nodeNamesUsed = {};
1103
1104
  let s = !1, t = !1, n = -1;
1104
- 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 St(this.options.manager) : this.textureLoader = new us(this.options.manager), this.textureLoader.setCrossOrigin(this.options.crossOrigin), this.textureLoader.setRequestHeader(this.options.requestHeader), this.fileLoader = new fA(this.options.manager), this.fileLoader.setResponseType("arraybuffer"), this.options.crossOrigin === "use-credentials" && this.fileLoader.setWithCredentials(!0);
1105
+ 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 yt(this.options.manager) : this.textureLoader = new us(this.options.manager), this.textureLoader.setCrossOrigin(this.options.crossOrigin), this.textureLoader.setRequestHeader(this.options.requestHeader), this.fileLoader = new fA(this.options.manager), this.fileLoader.setResponseType("arraybuffer"), this.options.crossOrigin === "use-credentials" && this.fileLoader.setWithCredentials(!0);
1105
1106
  }
1106
1107
  setExtensions(A) {
1107
1108
  this.extensions = A;
@@ -1336,8 +1337,8 @@ class vn {
1336
1337
  const d = He.SCALAR, u = RA[t.sparse.indices.componentType], f = t.sparse.indices.byteOffset || 0, D = t.sparse.values.byteOffset || 0, p = new u(i[1], f, t.sparse.count * d), m = new r(i[2], D, t.sparse.count * o);
1337
1338
  B !== null && (E = new WA(E.array.slice(), E.itemSize, E.normalized));
1338
1339
  for (let M = 0, P = p.length; M < P; M++) {
1339
- const T = p[M];
1340
- if (E.setX(T, m[M * o]), o >= 2 && E.setY(T, m[M * o + 1]), o >= 3 && E.setZ(T, m[M * o + 2]), o >= 4 && E.setW(T, m[M * o + 3]), o >= 5)
1340
+ const U = p[M];
1341
+ if (E.setX(U, m[M * o]), o >= 2 && E.setY(U, m[M * o + 1]), o >= 3 && E.setZ(U, m[M * o + 2]), o >= 4 && E.setW(U, m[M * o + 3]), o >= 5)
1341
1342
  throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.");
1342
1343
  }
1343
1344
  }
@@ -1543,15 +1544,15 @@ class vn {
1543
1544
  let d;
1544
1545
  const u = r[Q];
1545
1546
  if (E.mode === b.TRIANGLES || E.mode === b.TRIANGLE_STRIP || E.mode === b.TRIANGLE_FAN || E.mode === void 0)
1546
- d = n.isSkinnedMesh === !0 ? new ms(h, u) : new Qe(h, u), d.isSkinnedMesh === !0 && d.normalizeSkinWeights(), E.mode === b.TRIANGLE_STRIP ? d.geometry = Qt(d.geometry, yt) : E.mode === b.TRIANGLE_FAN && (d.geometry = Qt(d.geometry, Xe));
1547
+ d = n.isSkinnedMesh === !0 ? new ms(h, u) : new Qe(h, u), d.isSkinnedMesh === !0 && d.normalizeSkinWeights(), E.mode === b.TRIANGLE_STRIP ? d.geometry = Qt(d.geometry, St) : E.mode === b.TRIANGLE_FAN && (d.geometry = Qt(d.geometry, Xe));
1547
1548
  else if (E.mode === b.LINES)
1548
1549
  d = new Ms(h, u);
1549
1550
  else if (E.mode === b.LINE_STRIP)
1550
1551
  d = new ws(h, u);
1551
1552
  else if (E.mode === b.LINE_LOOP)
1552
- d = new Ss(h, u);
1553
- else if (E.mode === b.POINTS)
1554
1553
  d = new ys(h, u);
1554
+ else if (E.mode === b.POINTS)
1555
+ d = new Ss(h, u);
1555
1556
  else
1556
1557
  throw new Error("THREE.GLTFLoader: Primitive mode unsupported: " + E.mode);
1557
1558
  Object.keys(d.geometry.morphAttributes).length > 0 && Pn(d, n), d.name = e.createUniqueName(n.name || "mesh_" + A), sA(d, n), E.extensions && QA(t, d, E), e.assignFinalMaterial(d), C.push(d);
@@ -1631,10 +1632,10 @@ class vn {
1631
1632
  if (D === void 0)
1632
1633
  continue;
1633
1634
  D.updateMatrix && D.updateMatrix();
1634
- const T = s._createAnimationTracks(D, p, m, M, P);
1635
- if (T)
1636
- for (let v = 0; v < T.length; v++)
1637
- d.push(T[v]);
1635
+ const U = s._createAnimationTracks(D, p, m, M, P);
1636
+ if (U)
1637
+ for (let v = 0; v < U.length; v++)
1638
+ d.push(U[v]);
1638
1639
  }
1639
1640
  return new Hs(n, void 0, d);
1640
1641
  });
@@ -2198,7 +2199,7 @@ function ii(a) {
2198
2199
  const d = new _A(a, I, C, !0), u = d._nextUint16(), f = d._nextUint16(), D = d._nextUint32(), p = d._nextUint32(), m = d._nextUint32(), M = d._nextUint32(), P = [];
2199
2200
  for (let J = 0; J < n; J++)
2200
2201
  P.push({ imageFlags: d._nextUint32(), rgbSliceByteOffset: d._nextUint32(), rgbSliceByteLength: d._nextUint32(), alphaSliceByteOffset: d._nextUint32(), alphaSliceByteLength: d._nextUint32() });
2201
- const T = I + d._offset, v = T + D, kA = v + p, he = kA + m, cA = new Uint8Array(a.buffer, a.byteOffset + T, D), le = new Uint8Array(a.buffer, a.byteOffset + v, p), eA = new Uint8Array(a.buffer, a.byteOffset + kA, m), de = new Uint8Array(a.buffer, a.byteOffset + he, M);
2202
+ const U = I + d._offset, v = U + D, kA = v + p, he = kA + m, cA = new Uint8Array(a.buffer, a.byteOffset + U, D), le = new Uint8Array(a.buffer, a.byteOffset + v, p), eA = new Uint8Array(a.buffer, a.byteOffset + kA, m), de = new Uint8Array(a.buffer, a.byteOffset + he, M);
2202
2203
  return e.globalData = { endpointCount: u, selectorCount: f, imageDescs: P, endpointsData: cA, selectorsData: le, tablesData: eA, extendedData: de }, e;
2203
2204
  }
2204
2205
  let xe, V, je;
@@ -2404,7 +2405,7 @@ X.BasisWorker = function() {
2404
2405
  }
2405
2406
  if (!h.isValid())
2406
2407
  throw E(), new Error("THREE.KTX2Loader: Invalid or unsupported .ktx2 file");
2407
- const d = h.isUASTC() ? n.UASTC_4x4 : n.ETC1S, u = h.getWidth(), f = h.getHeight(), D = h.getLayers() || 1, p = h.getLevels(), m = h.getFaces(), M = h.getHasAlpha(), P = h.getDFDFlags(), { transcoderFormat: T, engineFormat: v } = C(d, u, f, M);
2408
+ const d = h.isUASTC() ? n.UASTC_4x4 : n.ETC1S, u = h.getWidth(), f = h.getHeight(), D = h.getLayers() || 1, p = h.getLevels(), m = h.getFaces(), M = h.getHasAlpha(), P = h.getDFDFlags(), { transcoderFormat: U, engineFormat: v } = C(d, u, f, M);
2408
2409
  if (!u || !f || !p)
2409
2410
  throw E(), new Error("THREE.KTX2Loader: Invalid texture");
2410
2411
  if (!h.startTranscoding())
@@ -2418,8 +2419,8 @@ X.BasisWorker = function() {
2418
2419
  for (let W = 0; W < D; W++) {
2419
2420
  const DA = h.getImageLevelInfo(eA, W, cA);
2420
2421
  cA === 0 && eA === 0 && W === 0 && (DA.origWidth % 4 !== 0 || DA.origHeight % 4 !== 0) && console.warn("THREE.KTX2Loader: ETC1S and UASTC textures should use multiple-of-four dimensions."), p > 1 ? (J = DA.origWidth, N = DA.origHeight) : (J = DA.width, N = DA.height);
2421
- const st = new Uint8Array(h.getImageTranscodedSizeInBytes(eA, W, 0, T));
2422
- if (!h.transcodeImage(st, eA, W, cA, T, 0, -1, -1))
2422
+ const st = new Uint8Array(h.getImageTranscodedSizeInBytes(eA, W, 0, U));
2423
+ if (!h.transcodeImage(st, eA, W, cA, U, 0, -1, -1))
2423
2424
  throw E(), new Error("THREE.KTX2Loader: .transcodeImage failed.");
2424
2425
  de.push(st);
2425
2426
  }
@@ -2800,10 +2801,10 @@ const Ci = () => {
2800
2801
  }
2801
2802
  }, Ge;
2802
2803
  };
2803
- var SA, te, se, ne;
2804
+ var yA, te, se, ne;
2804
2805
  class ai {
2805
2806
  constructor() {
2806
- F(this, SA, new Qn());
2807
+ F(this, yA, new Qn());
2807
2808
  F(this, te, new Vn().setDecoderPath(
2808
2809
  `${K.CDNVersion}/examples/jsm/libs/draco/gltf/`
2809
2810
  ));
@@ -2811,10 +2812,10 @@ class ai {
2811
2812
  `${K.CDNVersion}/examples/jsm/libs/basis/`
2812
2813
  ));
2813
2814
  F(this, ne, !1);
2814
- g(this, SA).setCrossOrigin("anonymous").setDRACOLoader(g(this, te)).setMeshoptDecoder(Ci);
2815
+ g(this, yA).setCrossOrigin("anonymous").setDRACOLoader(g(this, te)).setMeshoptDecoder(Ci);
2815
2816
  }
2816
2817
  get gltfLoader() {
2817
- return g(this, SA);
2818
+ return g(this, yA);
2818
2819
  }
2819
2820
  get dracoLoader() {
2820
2821
  return g(this, te);
@@ -2823,22 +2824,22 @@ class ai {
2823
2824
  return g(this, se);
2824
2825
  }
2825
2826
  load(...A) {
2826
- g(this, ne) || (g(this, SA).setKTX2Loader(g(this, se).detectSupport(K.webglRenderer)), G(this, ne, !0)), this.gltfLoader.load(...A);
2827
+ g(this, ne) || (g(this, yA).setKTX2Loader(g(this, se).detectSupport(K.webglRenderer)), G(this, ne, !0)), this.gltfLoader.load(...A);
2827
2828
  }
2828
2829
  }
2829
- SA = new WeakMap(), te = new WeakMap(), se = new WeakMap(), ne = new WeakMap();
2830
+ yA = new WeakMap(), te = new WeakMap(), se = new WeakMap(), ne = new WeakMap();
2830
2831
  const Ii = new ai();
2831
- var rA, y, z, ie;
2832
+ var rA, S, z, ie;
2832
2833
  class Ji {
2833
2834
  constructor(A, e) {
2834
2835
  F(this, rA, void 0);
2835
- F(this, y, void 0);
2836
+ F(this, S, void 0);
2836
2837
  F(this, z, []);
2837
2838
  F(this, ie, () => {
2838
- const A = g(this, y).left - g(this, rA).left, e = g(this, y).top - g(this, rA).top, s = g(this, y).position.x - g(this, y).left, t = g(this, y).position.y - g(this, y).top, n = g(this, rA).width - g(this, y).scale.x, i = A - n, B = g(this, rA).height - g(this, y).scale.y, o = e - B;
2839
- g(this, z)[0].constant = g(this, y).scale.y / 2 + t * -1 - B / 2 - o, g(this, z)[1].constant = g(this, y).scale.y / 2 + t + B / 2 + o, g(this, z)[2].constant = g(this, y).scale.x / 2 + s + n / 2 + i, g(this, z)[3].constant = g(this, y).scale.x / 2 + s * -1 - n / 2 - i;
2839
+ const A = g(this, S).left - g(this, rA).left, e = g(this, S).top - g(this, rA).top, s = g(this, S).position.x - g(this, S).left, t = g(this, S).position.y - g(this, S).top, n = g(this, rA).width - g(this, S).scale.x, i = A - n, B = g(this, rA).height - g(this, S).scale.y, o = e - B;
2840
+ g(this, z)[0].constant = g(this, S).scale.y / 2 + t * -1 - B / 2 - o, g(this, z)[1].constant = g(this, S).scale.y / 2 + t + B / 2 + o, g(this, z)[2].constant = g(this, S).scale.x / 2 + s + n / 2 + i, g(this, z)[3].constant = g(this, S).scale.x / 2 + s * -1 - n / 2 - i;
2840
2841
  });
2841
- G(this, rA, K.getView((e == null ? void 0 : e.viewName) || "default")), G(this, y, new Nt(A, { cartesian: !1 }));
2842
+ G(this, rA, K.getView((e == null ? void 0 : e.viewName) || "default")), G(this, S, new Nt(A, { cartesian: !1 }));
2842
2843
  const s = (e == null ? void 0 : e.scale) || 1;
2843
2844
  G(this, z, [
2844
2845
  new De(new w(0, -1 * s, 0)),
@@ -2851,23 +2852,23 @@ class Ji {
2851
2852
  return g(this, z);
2852
2853
  }
2853
2854
  get layoutBox() {
2854
- return g(this, y);
2855
+ return g(this, S);
2855
2856
  }
2856
2857
  destroy() {
2857
- NA.unsubscribe(g(this, ie)), g(this, y).destroy();
2858
+ NA.unsubscribe(g(this, ie)), g(this, S).destroy();
2858
2859
  }
2859
2860
  }
2860
- rA = new WeakMap(), y = new WeakMap(), z = new WeakMap(), ie = new WeakMap();
2861
+ rA = new WeakMap(), S = new WeakMap(), z = new WeakMap(), ie = new WeakMap();
2861
2862
  class Hi extends VA {
2862
2863
  constructor(A, e = 500) {
2863
2864
  super(), this.add(new Fe(A.planes[0], e, 16711680)), this.add(new Fe(A.planes[1], e, 16711680)), this.add(new Fe(A.planes[2], e, 16711680)), this.add(new Fe(A.planes[3], e, 16711680));
2864
2865
  }
2865
2866
  }
2866
- var yA, dA, LA, oe, Be, CA, JA, re;
2867
+ var SA, dA, LA, oe, Be, CA, JA, re;
2867
2868
  class es extends gn {
2868
2869
  constructor(e) {
2869
2870
  super(e);
2870
- F(this, yA, new Et(null));
2871
+ F(this, SA, new Et(null));
2871
2872
  F(this, dA, new Et(void 0));
2872
2873
  F(this, LA, void 0);
2873
2874
  F(this, oe, void 0);
@@ -2875,12 +2876,12 @@ class es extends gn {
2875
2876
  F(this, CA, void 0);
2876
2877
  F(this, JA, !1);
2877
2878
  F(this, re, () => {
2878
- if (!(g(this, CA) && !g(this, JA)) && (this.current !== this.previous && (g(this, yA).current = null), this.current)) {
2879
+ if (!(g(this, CA) && !g(this, JA)) && (this.current !== this.previous && (g(this, SA).current = null), this.current)) {
2879
2880
  const e = g(this, Be) ? this.current.url : this.current.name + this.current.extension;
2880
2881
  g(this, CA) || Je.setTotal(e, 1), g(this, dA).current = "start", g(this, oe).load(
2881
2882
  e,
2882
2883
  (s) => {
2883
- g(this, yA).current = s, g(this, dA).current = "complete", g(this, CA) || Je.setLoaded(e, 1);
2884
+ g(this, SA).current = s, g(this, dA).current = "complete", g(this, CA) || Je.setLoaded(e, 1);
2884
2885
  },
2885
2886
  void 0,
2886
2887
  () => {
@@ -2899,7 +2900,7 @@ class es extends gn {
2899
2900
  * Resource store.
2900
2901
  */
2901
2902
  get data() {
2902
- return g(this, yA);
2903
+ return g(this, SA);
2903
2904
  }
2904
2905
  /**
2905
2906
  * Loading store.
@@ -2914,7 +2915,7 @@ class es extends gn {
2914
2915
  g(this, JA) || (G(this, JA, !0), g(this, re).call(this));
2915
2916
  }
2916
2917
  }
2917
- yA = new WeakMap(), dA = new WeakMap(), LA = new WeakMap(), oe = new WeakMap(), Be = new WeakMap(), CA = new WeakMap(), JA = new WeakMap(), re = new WeakMap();
2918
+ SA = new WeakMap(), dA = new WeakMap(), LA = new WeakMap(), oe = new WeakMap(), Be = new WeakMap(), CA = new WeakMap(), JA = new WeakMap(), re = new WeakMap();
2918
2919
  var HA;
2919
2920
  class Ti extends VA {
2920
2921
  constructor(e) {
@@ -3165,17 +3166,17 @@ function bi(a, A = "default") {
3165
3166
  return { width: r, height: o, factor: s / r, distance: i, aspect: n };
3166
3167
  }
3167
3168
  }
3168
- var q, Se, ns, ge, Ee;
3169
+ var q, ye, ns, ge, Ee;
3169
3170
  const x = class x extends ci {
3170
3171
  static destroy() {
3171
3172
  UA.unsubscribe(g(this, Ee)), NA.unsubscribe(g(this, ge)), G(this, q, null);
3172
3173
  }
3173
3174
  constructor(A) {
3174
3175
  var e;
3175
- super(A.element), g(x, q) || fe(e = x, Se, ns).call(e);
3176
+ super(A.element), g(x, q) || fe(e = x, ye, ns).call(e);
3176
3177
  }
3177
3178
  };
3178
- q = new WeakMap(), Se = new WeakSet(), ns = function() {
3179
+ q = new WeakMap(), ye = new WeakSet(), ns = function() {
3179
3180
  G(x, q, new hi()), g(x, q).domElement.style.cssText = `
3180
3181
  position: fixed;
3181
3182
  left: 0;
@@ -3186,7 +3187,7 @@ q = new WeakMap(), Se = new WeakSet(), ns = function() {
3186
3187
  pointer-events: none;
3187
3188
  overflow: hidden;
3188
3189
  `, K.containerElement.prepend(g(x, q).domElement), UA.subscribe(g(this, Ee), Mt.EN3 + 1), NA.subscribe(g(this, ge), { order: ze.EN3 + 1 });
3189
- }, ge = new WeakMap(), Ee = new WeakMap(), F(x, Se), F(x, q, null), F(x, ge, () => {
3190
+ }, ge = new WeakMap(), Ee = new WeakMap(), F(x, ye), F(x, q, null), F(x, ge, () => {
3190
3191
  g(x, q).render(K.view.scene, K.view.camera);
3191
3192
  }), F(x, Ee, () => {
3192
3193
  g(x, q).setSize(K.width, K.height);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aptechka",
3
- "version": "0.5.1",
3
+ "version": "0.5.2",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/denisavitski/aptechka.git"