@jdultra/threedtiles 13.0.7 → 13.0.9

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.
@@ -1,28 +1,23 @@
1
- "use strict";var Na=Object.defineProperty;var _a=(n,e,t)=>e in n?Na(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var ve=(n,e,t)=>_a(n,typeof e!="symbol"?e+"":e,t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const b=require("three");var it=typeof document<"u"?document.currentScript:null;function Pa(n){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(n){for(const t in n)if(t!=="default"){const a=Object.getOwnPropertyDescriptor(n,t);Object.defineProperty(e,t,a.get?a:{enumerable:!0,get:()=>n[t]})}}return e.default=n,Object.freeze(e)}const R=Pa(b),de=new b.Matrix3,$=new b.Vector3,St=new b.Vector3,vt=new b.Box3,Xe=new b.Matrix4,Lt=new b.Matrix4,Ut=new b.Ray;class ye{constructor(e){this.center=new b.Vector3(e[0],e[1],e[2]),this.e1=new b.Vector3(e[3],e[4],e[5]),this.e2=new b.Vector3(e[6],e[7],e[8]),this.e3=new b.Vector3(e[9],e[10],e[11]),this.halfSize=new b.Vector3(this.e1.length(),this.e2.length(),this.e3.length()),this.e1.normalize(),this.e2.normalize(),this.e3.normalize(),this.rotationMatrix=new b.Matrix3,this.rotationMatrix.set(this.e1.x,this.e1.y,this.e1.z,this.e2.x,this.e2.y,this.e2.z,this.e3.x,this.e3.y,this.e3.z)}copy(e){this.center.copy(e.center),this.rotationMatrix.copy(e.rotationMatrix),this.halfSize.copy(e.halfSize)}getSize(e){return e.copy(this.halfSize).multiplyScalar(2)}applyMatrix4(e){const t=e.elements;let a=$.set(t[0],t[1],t[2]).length();const A=$.set(t[4],t[5],t[6]).length(),r=$.set(t[8],t[9],t[10]).length();e.determinant()<0&&(a=-a),de.setFromMatrix4(e);const i=1/a,o=1/A,l=1/r;return de.elements[0]*=i,de.elements[1]*=i,de.elements[2]*=i,de.elements[3]*=o,de.elements[4]*=o,de.elements[5]*=o,de.elements[6]*=l,de.elements[7]*=l,de.elements[8]*=l,this.rotationMatrix.multiply(de),this.halfSize.x*=a,this.halfSize.y*=A,this.halfSize.z*=r,$.setFromMatrixPosition(e),this.center.applyMatrix4(e),this}intersectRay(e,t){return this.getSize(St),vt.setFromCenterAndSize($.set(0,0,0),St),Xe.setFromMatrix3(this.rotationMatrix),Xe.setPosition(this.center),Lt.copy(Xe).invert(),Ut.copy(e).applyMatrix4(Lt),Ut.intersectBox(vt,t)?t.applyMatrix4(Xe):null}intersectsRay(e){return this.intersectRay(e,$)!==null}insidePlane(e){const t=this.halfSize.x*Math.abs(e.normal.dot(this.e1))+this.halfSize.y*Math.abs(e.normal.dot(this.e2))+this.halfSize.z*Math.abs(e.normal.dot(this.e3)),a=e.distanceToPoint(this.center);return[Math.abs(a)<=t,a>-t]}inFrustum(e){this.rotationMatrix.extractBasis(this.e1,this.e2,this.e3);for(let t=0;t<6;t++){const a=e.planes[t];if(!this.insidePlane(a)[1])return!1}return!0}distanceToPoint(e){$.copy(e),$.sub(this.center),$.applyMatrix3(this.rotationMatrix);let t=Math.max(0,Math.max(-this.halfSize.x-$.x,$.x-this.halfSize.x)),a=Math.max(0,Math.max(-this.halfSize.y-$.y,$.y-this.halfSize.y)),A=Math.max(0,Math.max(-this.halfSize.z-$.z,$.z-this.halfSize.z));return Math.sqrt(t*t+a*a+A*A)}}function Oa(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n}/**
1
+ "use strict";var Ka=Object.defineProperty;var za=(n,e,t)=>e in n?Ka(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var ve=(n,e,t)=>za(n,typeof e!="symbol"?e+"":e,t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const b=require("three");var ct=typeof document<"u"?document.currentScript:null;function Va(n){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(n){for(const t in n)if(t!=="default"){const a=Object.getOwnPropertyDescriptor(n,t);Object.defineProperty(e,t,a.get?a:{enumerable:!0,get:()=>n[t]})}}return e.default=n,Object.freeze(e)}function Ze(n,e){for(var t=0;t<e.length;t++){const a=e[t];if(typeof a!="string"&&!Array.isArray(a)){for(const A in a)if(A!=="default"&&!(A in n)){const r=Object.getOwnPropertyDescriptor(a,A);r&&Object.defineProperty(n,A,r.get?r:{enumerable:!0,get:()=>a[A]})}}}return Object.freeze(Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}))}const R=Va(b),de=new b.Matrix3,$=new b.Vector3,Gt=new b.Vector3,Nt=new b.Box3,et=new b.Matrix4,_t=new b.Matrix4,Pt=new b.Ray;class ye{constructor(e){this.center=new b.Vector3(e[0],e[1],e[2]),this.e1=new b.Vector3(e[3],e[4],e[5]),this.e2=new b.Vector3(e[6],e[7],e[8]),this.e3=new b.Vector3(e[9],e[10],e[11]),this.halfSize=new b.Vector3(this.e1.length(),this.e2.length(),this.e3.length()),this.e1.normalize(),this.e2.normalize(),this.e3.normalize(),this.rotationMatrix=new b.Matrix3,this.rotationMatrix.set(this.e1.x,this.e1.y,this.e1.z,this.e2.x,this.e2.y,this.e2.z,this.e3.x,this.e3.y,this.e3.z)}copy(e){this.center.copy(e.center),this.rotationMatrix.copy(e.rotationMatrix),this.halfSize.copy(e.halfSize)}getSize(e){return e.copy(this.halfSize).multiplyScalar(2)}applyMatrix4(e){const t=e.elements;let a=$.set(t[0],t[1],t[2]).length();const A=$.set(t[4],t[5],t[6]).length(),r=$.set(t[8],t[9],t[10]).length();e.determinant()<0&&(a=-a),de.setFromMatrix4(e);const i=1/a,o=1/A,l=1/r;return de.elements[0]*=i,de.elements[1]*=i,de.elements[2]*=i,de.elements[3]*=o,de.elements[4]*=o,de.elements[5]*=o,de.elements[6]*=l,de.elements[7]*=l,de.elements[8]*=l,this.rotationMatrix.multiply(de),this.halfSize.x*=a,this.halfSize.y*=A,this.halfSize.z*=r,$.setFromMatrixPosition(e),this.center.applyMatrix4(e),this}intersectRay(e,t){return this.getSize(Gt),Nt.setFromCenterAndSize($.set(0,0,0),Gt),et.setFromMatrix3(this.rotationMatrix),et.setPosition(this.center),_t.copy(et).invert(),Pt.copy(e).applyMatrix4(_t),Pt.intersectBox(Nt,t)?t.applyMatrix4(et):null}intersectsRay(e){return this.intersectRay(e,$)!==null}insidePlane(e){const t=this.halfSize.x*Math.abs(e.normal.dot(this.e1))+this.halfSize.y*Math.abs(e.normal.dot(this.e2))+this.halfSize.z*Math.abs(e.normal.dot(this.e3)),a=e.distanceToPoint(this.center);return[Math.abs(a)<=t,a>-t]}inFrustum(e){this.rotationMatrix.extractBasis(this.e1,this.e2,this.e3);for(let t=0;t<6;t++){const a=e.planes[t];if(!this.insidePlane(a)[1])return!1}return!0}distanceToPoint(e){$.copy(e),$.sub(this.center),$.applyMatrix3(this.rotationMatrix);let t=Math.max(0,Math.max(-this.halfSize.x-$.x,$.x-this.halfSize.x)),a=Math.max(0,Math.max(-this.halfSize.y-$.y,$.y-this.halfSize.y)),A=Math.max(0,Math.max(-this.halfSize.z-$.z,$.z-this.halfSize.z));return Math.sqrt(t*t+a*a+A*A)}}function ot(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n}function $e(n){if(n.__esModule)return n;var e=n.default;if(typeof e=="function"){var t=function a(){return this instanceof a?Reflect.construct(e,arguments,this.constructor):e.apply(this,arguments)};t.prototype=e.prototype}else t={};return Object.defineProperty(t,"__esModule",{value:!0}),Object.keys(n).forEach(function(a){var A=Object.getOwnPropertyDescriptor(n,a);Object.defineProperty(t,a,A.get?A:{enumerable:!0,get:function(){return n[a]}})}),t}/**
2
2
  * @copyright 2021 Aaron Zhao <yujianzhao2013@gmail.com>
3
3
  * @license MIT
4
4
  * Heap implementation using 1-d array
5
5
  * Children is index of 2n + 1 and 2n + 2 where n is the parent index
6
6
  * Parent is math.floor((m - 1) / 2) where m is is the child index
7
7
  * @class Heap
8
- */var Ha=class{constructor(n,e){if(this._data=[],this._comparator=function(t,a){return t>=a},n!=null){if(!Array.isArray(n))throw Error("Constructor expects data to be an array");this._data=n}if(e!=null){if(typeof e!="function")throw Error("Constructor expects comparator to be a function");this._comparator=e}}peek(){return this.size()<1?null:this._data[0]}pop(){if(this.size()<1)return null;const n=this._data[0];return this.swap(this.size()-1,0),this._data.pop(),this.heapifyDown(0),n}replaceTop(n){if(this.size()<1)return null;const e=this._data[0];return this._data[0]=n,this.heapifyDown(0),e}push(n){this._data.push(n),this.heapifyUp(this._data.length-1)}size(){return this._data.length}swap(n,e){const t=this._data[n];this._data[n]=this._data[e],this._data[e]=t}heapifyUp(n){if(n===0)return;const e=Math.floor((n-1)/2);this._comparator(this._data[n],this._data[e])||(this.swap(n,e),this.heapifyUp(e))}heapifyDown(n){const e=2*n+1,t=2*n+2;if(e>=this._data.length)return;const a=t<this._data.length&&!this._comparator(this._data[t],this._data[e])?t:e;this._comparator(this._data[n],this._data[a])&&(this.swap(n,a),this.heapifyDown(a))}};/**
9
- * @copyright 2021 Aaron Zhao <yujianzhao2013@gmail.com>
10
- * @license MIT
11
- * FIFO queue data structure
12
- * @class Queue
13
- */var qa=class{constructor(n,e){if(this._data=[],this._head=0,this._cap=null,n!=null){if(!Array.isArray(n))throw Error("Constructor expects data to be an array");this._data=n}if(e!=null){if(typeof e!="number")throw Error("Constructor expects capacity to be a number");this._cap=e}}enqueue(n){return!(this._cap!=null&&this.size()>=this._cap)&&(this._data.push(n),!0)}dequeue(){if(this.size()===0)return null;const n=this._data[this._head];return this._head+=1,2*this._head>=this._data.length&&(this._data=this._data.slice(this._head),this._head=0),n}peek(n=!1){return this.size()>0?n?this._data[this._data.length-1]:this._data[this._head]:null}size(){return this._data.length-this._head}updateCapacity(n){this._cap=n}reset(){this._data=[],this._head=0}forEach(n){for(let e=this._head;e<this._data.length;e+=1)n(this._data[e],e-this._head)}toArray(){return this._data.slice(this._head)}};/**
14
- * @copyright 2021 Aaron Zhao <yujianzhao2013@gmail.com>
15
- * @license MIT
16
- * Linked hash map data structure
17
- * @class LinkedHashMap
18
- */var na={Heap:Ha,Queue:qa,LinkedHashMap:class{constructor(){this._data=new Map,this._link=new Map,this._head=void 0,this._tail=void 0}put(n,e,t=!1){this.has(n)?this._data.set(n,e):(this._data.set(n,e),this._link.set(n,{previous:void 0,next:void 0}),this._head==null?(this._head=n,this._tail=n):t?(this._link.get(this._head).previous=n,this._link.get(n).next=this._head,this._head=n):(this._link.get(this._tail).next=n,this._link.get(n).previous=this._tail,this._tail=n))}head(){return{key:this._head,value:this.get(this._head),next:()=>this.next(this._head),previous:()=>null}}tail(){return{key:this._tail,value:this.get(this._tail),next:()=>null,previous:()=>this.previous(this._tail)}}get(n){return this._data.get(n)}previousKey(n){const e=this._link.get(n);return e!=null?e.previous:void 0}previousValue(n){return this.get(this.previousKey(n))}previous(n){const e=this.previousKey(n);return{key:e,value:this.get(e),next:()=>this.next(e),previous:()=>this.previous(e)}}nextKey(n){const e=this._link.get(n);return e!=null?e.next:void 0}nextValue(n){return this.get(this.nextKey(n))}next(n){const e=this.nextKey(n);return{key:e,value:this.get(e),next:()=>this.next(e),previous:()=>this.previous(e)}}remove(n){const e=this._data.get(n);if(e!=null)if(this.size()===1)this.reset();else{if(n===this._head){const t=this._link.get(this._head);this._link.get(t.next).previous=null,this._head=t.next}else if(n===this._tail){const t=this._link.get(this._tail);this._link.get(t.previous).next=null,this._tail=t.previous}else{const t=this._link.get(n),a=this._link.get(t.previous),A=this._link.get(t.next);a.next=t.next,A.previous=t.previous}this._link.delete(n),this._data.delete(n)}return e}has(n){return this._data.has(n)}size(){return this._data.size}reset(){this._data.clear(),this._link.clear(),this._head=void 0,this._tail=void 0}keys(){return this._data.keys()}values(){return this._data.values()}entries(){return this._data.entries()}toArray(n="orderByInsert"){if(n!=="orderByInsert"){const e=[];let t=this._head;for(;t!=null;)e.push({key:t,value:this.get(t)}),t=this.nextKey(t);return e}return Array.from(this.keys()).map(e=>({key:e,value:this.get(e)}))}}};const Ja=new TextDecoder;class oa{constructor(e,t,a,A){this.buffer=e,this.binOffset=t+a,this.binLength=A;let r=null;if(a!==0)try{const i=new Uint8Array(e,t,a);r=JSON.parse(Ja.decode(i))}catch{r={}}else r={};this.header=r}getKeys(){return Object.keys(this.header)}getData(e,t,a=null,A=null){const r=this.header;if(!(e in r))return null;const i=r[e];if(i instanceof Object){if(Array.isArray(i))return i;{const{buffer:o,binOffset:l,binLength:h}=this,g=i.byteOffset||0,f=i.type||A,u=i.componentType||a;if("type"in i&&A&&i.type!==A)throw new Error("FeatureTable: Specified type does not match expected type.");let I,p;switch(f){case"SCALAR":I=1;break;case"VEC2":I=2;break;case"VEC3":I=3;break;case"VEC4":I=4;break;default:throw new Error(`FeatureTable : Feature type not provided for "${e}".`)}const B=l+g,m=t*I;switch(u){case"BYTE":p=new Int8Array(o,B,m);break;case"UNSIGNED_BYTE":p=new Uint8Array(o,B,m);break;case"SHORT":p=new Int16Array(o,B,m);break;case"UNSIGNED_SHORT":p=new Uint16Array(o,B,m);break;case"INT":p=new Int32Array(o,B,m);break;case"UNSIGNED_INT":p=new Uint32Array(o,B,m);break;case"FLOAT":p=new Float32Array(o,B,m);break;case"DOUBLE":p=new Float64Array(o,B,m);break;default:throw new Error(`FeatureTable : Feature component type not provided for "${e}".`)}if(B+m*p.BYTES_PER_ELEMENT>l+h)throw new Error("FeatureTable: Feature data read outside binary body length.");return p}}return i}}class Ka extends oa{constructor(e,t,a,A,r){super(e,a,A,r),this.batchSize=t}getData(e,t=null,a=null){return super.getData(e,this.batchSize,t,a)}}function Gt(n){let e,t,a,A=-1,r=0;for(let h=0;h<n.length;++h){const g=n[h];if(e===void 0&&(e=g.array.constructor),e!==g.array.constructor)return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.array must be of consistent array types across matching attributes."),null;if(t===void 0&&(t=g.itemSize),t!==g.itemSize)return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.itemSize must be consistent across matching attributes."),null;if(a===void 0&&(a=g.normalized),a!==g.normalized)return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.normalized must be consistent across matching attributes."),null;if(A===-1&&(A=g.gpuType),A!==g.gpuType)return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.gpuType must be consistent across matching attributes."),null;r+=g.count*t}const i=new e(r),o=new b.BufferAttribute(i,t,a);let l=0;for(let h=0;h<n.length;++h){const g=n[h];if(g.isInterleavedBufferAttribute){const f=l/t;for(let u=0,I=g.count;u<I;u++)for(let p=0;p<t;p++){const B=g.getComponent(u,p);o.setComponent(u+f,p,B)}}else i.set(g.array,l);l+=g.count*t}return A!==void 0&&(o.gpuType=A),o}function Nt(n,e){if(e===b.TrianglesDrawMode)return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."),n;if(e===b.TriangleFanDrawMode||e===b.TriangleStripDrawMode){let t=n.getIndex();if(t===null){const i=[],o=n.getAttribute("position");if(o===void 0)return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),n;for(let l=0;l<o.count;l++)i.push(l);n.setIndex(i),t=n.getIndex()}const a=t.count-2,A=[];if(e===b.TriangleFanDrawMode)for(let i=1;i<=a;i++)A.push(t.getX(0)),A.push(t.getX(i)),A.push(t.getX(i+1));else for(let i=0;i<a;i++)i%2==0?(A.push(t.getX(i)),A.push(t.getX(i+1)),A.push(t.getX(i+2))):(A.push(t.getX(i+2)),A.push(t.getX(i+1)),A.push(t.getX(i)));A.length/3!==a&&console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");const r=n.clone();return r.setIndex(A),r.clearGroups(),r}return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:",e),n}class ca{constructor(e){ve(this,"checkLoaderInitialized",async()=>new Promise(e=>{const t=setInterval(()=>{this.gltfLoader.hasDracoLoader&&!this.gltfLoader.dracoLoader||this.gltfLoader.hasKTX2Loader&&!this.gltfLoader.ktx2Loader||(clearInterval(t),e())},10)}));this.gltfLoader=e,this.tempMatrix=new R.Matrix4,this.zUpToYUpMatrix=new R.Matrix4,this.zUpToYUpMatrix.set(1,0,0,0,0,0,-1,0,0,1,0,0,0,0,0,1)}parseB3DM(e,t,a,A){const r=this,i=new DataView(e),o=String.fromCharCode(i.getUint8(0))+String.fromCharCode(i.getUint8(1))+String.fromCharCode(i.getUint8(2))+String.fromCharCode(i.getUint8(3));console.assert(o==="b3dm");const l=i.getUint32(8,!0);console.assert(l===e.byteLength);const h=i.getUint32(12,!0),g=i.getUint32(16,!0),f=i.getUint32(20,!0),u=i.getUint32(24,!0),I=new oa(e,28,h,g),p=28+h+g;new Ka(e,I.getData("BATCH_LENGTH"),p,f,u);const B=p+f+u,m=new Uint8Array(e,B,l-B).slice().buffer;return new Promise(async(E,Q)=>{await this.checkLoaderInitialized(),this.gltfLoader.parse(m,null,k=>{const x=I.getData("RTC_CENTER");x?(this.tempMatrix.makeTranslation(x[0],x[1],x[2]),k.scene.applyMatrix4(this.tempMatrix)):k.userData.gltfExtensions&&k.userData.gltfExtensions.CESIUM_RTC&&(this.tempMatrix.makeTranslation(k.userData.gltfExtensions.CESIUM_RTC.center[0],k.userData.gltfExtensions.CESIUM_RTC.center[1],k.userData.gltfExtensions.CESIUM_RTC.center[2]),k.scene.applyMatrix4(this.tempMatrix)),a&&k.scene.applyMatrix4(r.zUpToYUpMatrix),k.scene.asset=k.asset,k.scene.traverse(T=>{T.isMesh&&(A&&T.applyMatrix4(r.zUpToYUpMatrix),t&&t(T))}),E(k.scene)},k=>{console.error(k)})})}parseB3DMInstanced(e,t,a,A,r){return this.parseB3DM(e,t,A,r).then(i=>{let o,l=[],h=[];i.updateWorldMatrix(!1,!0),i.traverse(f=>{f.isMesh&&(f.geometry.applyMatrix4(f.matrixWorld),l.push(f.geometry),h.push(f.material))});let g=function(f){let u=new Set;return f.forEach(p=>{for(let B in p.attributes)u.add(B)}),f.forEach(p=>{u.forEach(B=>{if(!p.attributes[B]){const m=function(Q){switch(Q){case"position":case"normal":case"color":return 3;case"uv":case"uv2":return 2;default:throw new Error(`Unknown attribute ${Q}`)}}(B),E=new Float32Array(m*p.getAttribute("position").count).fill(0);p.setAttribute(B,new R.BufferAttribute(E,m))}})}),function(p,B=!1){const m=p[0].index!==null,E=new Set(Object.keys(p[0].attributes)),Q=new Set(Object.keys(p[0].morphAttributes)),k={},x={},T=p[0].morphTargetsRelative,S=new b.BufferGeometry;let F=0;for(let D=0;D<p.length;++D){const M=p[D];let v=0;if(m!==(M.index!==null))return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+D+". All geometries must have compatible attributes; make sure index attribute exists among all geometries, or in none of them."),null;for(const L in M.attributes){if(!E.has(L))return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+D+'. All geometries must have compatible attributes; make sure "'+L+'" attribute exists among all geometries, or in none of them.'),null;k[L]===void 0&&(k[L]=[]),k[L].push(M.attributes[L]),v++}if(v!==E.size)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+D+". Make sure all geometries have the same number of attributes."),null;if(T!==M.morphTargetsRelative)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+D+". .morphTargetsRelative must be consistent throughout all geometries."),null;for(const L in M.morphAttributes){if(!Q.has(L))return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+D+". .morphAttributes must be consistent throughout all geometries."),null;x[L]===void 0&&(x[L]=[]),x[L].push(M.morphAttributes[L])}if(B){let L;if(m)L=M.index.count;else{if(M.attributes.position===void 0)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+D+". The geometry must have either an index or a position attribute"),null;L=M.attributes.position.count}S.addGroup(F,L,D),F+=L}}if(m){let D=0;const M=[];for(let v=0;v<p.length;++v){const L=p[v].index;for(let K=0;K<L.count;++K)M.push(L.getX(K)+D);D+=p[v].attributes.position.count}S.setIndex(M)}for(const D in k){const M=Gt(k[D]);if(!M)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed while trying to merge the "+D+" attribute."),null;S.setAttribute(D,M)}for(const D in x){const M=x[D][0].length;if(M===0)break;S.morphAttributes=S.morphAttributes||{},S.morphAttributes[D]=[];for(let v=0;v<M;++v){const L=[];for(let te=0;te<x[D].length;++te)L.push(x[D][te][v]);const K=Gt(L);if(!K)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed while trying to merge the "+D+" morphAttribute."),null;S.morphAttributes[D].push(K)}}return S}(f,!0)}(l);return o=new R.InstancedMesh(g,h,a),o.baseMatrix=new R.Matrix4().identity(),o})}}var rt,za=new Uint8Array(16);function Va(){if(!rt&&!(rt=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||typeof msCrypto<"u"&&typeof msCrypto.getRandomValues=="function"&&msCrypto.getRandomValues.bind(msCrypto)))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return rt(za)}const Ya=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;for(var X=[],st=0;st<256;++st)X.push((st+256).toString(16).substr(1));function Wa(n){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,t=(X[n[e+0]]+X[n[e+1]]+X[n[e+2]]+X[n[e+3]]+"-"+X[n[e+4]]+X[n[e+5]]+"-"+X[n[e+6]]+X[n[e+7]]+"-"+X[n[e+8]]+X[n[e+9]]+"-"+X[n[e+10]]+X[n[e+11]]+X[n[e+12]]+X[n[e+13]]+X[n[e+14]]+X[n[e+15]]).toLowerCase();if(!function(a){return typeof a=="string"&&Ya.test(a)}(t))throw TypeError("Stringified UUID is invalid");return t}function da(n,e,t){var a=(n=n||{}).random||(n.rng||Va)();return a[6]=15&a[6]|64,a[8]=63&a[8]|128,Wa(a)}class Xa{constructor(e,t){ve(this,"checkLoaderInitialized",async()=>{const e=this;return new Promise(t=>{const a=setInterval(()=>{e.gltfLoader.hasDracoLoader&&!e.gltfLoader.dracoLoader||e.gltfLoader.hasKTX2Loader&&!e.gltfLoader.ktx2Loader||(clearInterval(a),t())},10)})});this.renderer=t,this.gltfLoader=e}parseSplats(e,t,a,A){const r=this;return new Promise(async(i,o)=>{await r.checkLoaderInitialized(),r.gltfLoader.parse(e,null,l=>{l.scene;const h=l.scene.children[0],g=h.geometry.attributes.position,f=h.geometry.attributes.color,u=h.geometry.attributes.cov_0,I=h.geometry.attributes.cov_1,p=A.addSplatsTile(g,f,u,I);l.scene.traverse(B=>{B.dispose&&B.dispose()}),i(p)},l=>{console.error(l)})})}}class ha extends b.Loader{constructor(e){super(e),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(t){return new aA(t)}),this.register(function(t){return new AA(t)}),this.register(function(t){return new lA(t)}),this.register(function(t){return new bA(t)}),this.register(function(t){return new gA(t)}),this.register(function(t){return new rA(t)}),this.register(function(t){return new sA(t)}),this.register(function(t){return new nA(t)}),this.register(function(t){return new oA(t)}),this.register(function(t){return new tA(t)}),this.register(function(t){return new cA(t)}),this.register(function(t){return new iA(t)}),this.register(function(t){return new hA(t)}),this.register(function(t){return new dA(t)}),this.register(function(t){return new $a(t)}),this.register(function(t){return new fA(t)}),this.register(function(t){return new uA(t)})}load(e,t,a,A){const r=this;let i;if(this.resourcePath!=="")i=this.resourcePath;else if(this.path!==""){const h=b.LoaderUtils.extractUrlBase(e);i=b.LoaderUtils.resolveURL(h,this.path)}else i=b.LoaderUtils.extractUrlBase(e);this.manager.itemStart(e);const o=function(h){A?A(h):console.error(h),r.manager.itemError(e),r.manager.itemEnd(e)},l=new b.FileLoader(this.manager);l.setPath(this.path),l.setResponseType("arraybuffer"),l.setRequestHeader(this.requestHeader),l.setWithCredentials(this.withCredentials),l.load(e,function(h){try{r.parse(h,i,function(g){t(g),r.manager.itemEnd(e)},o)}catch(g){o(g)}},a,o)}setDRACOLoader(e){return this.dracoLoader=e,this}setKTX2Loader(e){return this.ktx2Loader=e,this}setMeshoptDecoder(e){return this.meshoptDecoder=e,this}register(e){return this.pluginCallbacks.indexOf(e)===-1&&this.pluginCallbacks.push(e),this}unregister(e){return this.pluginCallbacks.indexOf(e)!==-1&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(e),1),this}parse(e,t,a,A){let r;const i={},o={},l=new TextDecoder;if(typeof e=="string")r=JSON.parse(e);else if(e instanceof ArrayBuffer)if(l.decode(new Uint8Array(e,0,4))===la){try{i[G.KHR_BINARY_GLTF]=new BA(e)}catch(g){return void(A&&A(g))}r=JSON.parse(i[G.KHR_BINARY_GLTF].content)}else r=JSON.parse(l.decode(e));else r=e;if(r.asset===void 0||r.asset.version[0]<2)return void(A&&A(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported.")));const h=new TA(r,{path:t||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});h.fileLoader.setRequestHeader(this.requestHeader);for(let g=0;g<this.pluginCallbacks.length;g++){const f=this.pluginCallbacks[g](h);f.name||console.error("THREE.GLTFLoader: Invalid plugin found: missing name"),o[f.name]=f,i[f.name]=!0}if(r.extensionsUsed)for(let g=0;g<r.extensionsUsed.length;++g){const f=r.extensionsUsed[g],u=r.extensionsRequired||[];switch(f){case G.KHR_MATERIALS_UNLIT:i[f]=new eA;break;case G.KHR_DRACO_MESH_COMPRESSION:i[f]=new mA(r,this.dracoLoader);break;case G.KHR_TEXTURE_TRANSFORM:i[f]=new CA;break;case G.KHR_MESH_QUANTIZATION:i[f]=new EA;break;default:u.indexOf(f)>=0&&o[f]===void 0&&console.warn('THREE.GLTFLoader: Unknown extension "'+f+'".')}}h.setExtensions(i),h.setPlugins(o),h.parse(a,A)}parseAsync(e,t){const a=this;return new Promise(function(A,r){a.parse(e,t,A,r)})}}function Za(){let n={};return{get:function(e){return n[e]},add:function(e,t){n[e]=t},remove:function(e){delete n[e]},removeAll:function(){n={}}}}const G={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_DISPERSION:"KHR_materials_dispersion",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 $a{constructor(e){this.parser=e,this.name=G.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){const e=this.parser,t=this.parser.json.nodes||[];for(let a=0,A=t.length;a<A;a++){const r=t[a];r.extensions&&r.extensions[this.name]&&r.extensions[this.name].light!==void 0&&e._addNodeRef(this.cache,r.extensions[this.name].light)}}_loadLight(e){const t=this.parser,a="light:"+e;let A=t.cache.get(a);if(A)return A;const r=t.json,i=((r.extensions&&r.extensions[this.name]||{}).lights||[])[e];let o;const l=new b.Color(16777215);i.color!==void 0&&l.setRGB(i.color[0],i.color[1],i.color[2],b.LinearSRGBColorSpace);const h=i.range!==void 0?i.range:0;switch(i.type){case"directional":o=new b.DirectionalLight(l),o.target.position.set(0,0,-1),o.add(o.target);break;case"point":o=new b.PointLight(l),o.distance=h;break;case"spot":o=new b.SpotLight(l),o.distance=h,i.spot=i.spot||{},i.spot.innerConeAngle=i.spot.innerConeAngle!==void 0?i.spot.innerConeAngle:0,i.spot.outerConeAngle=i.spot.outerConeAngle!==void 0?i.spot.outerConeAngle:Math.PI/4,o.angle=i.spot.outerConeAngle,o.penumbra=1-i.spot.innerConeAngle/i.spot.outerConeAngle,o.target.position.set(0,0,-1),o.add(o.target);break;default:throw new Error("THREE.GLTFLoader: Unexpected light type: "+i.type)}return o.position.set(0,0,0),o.decay=2,Ce(o,i),i.intensity!==void 0&&(o.intensity=i.intensity),o.name=t.createUniqueName(i.name||"light_"+e),A=Promise.resolve(o),t.cache.add(a,A),A}getDependency(e,t){if(e==="light")return this._loadLight(t)}createNodeAttachment(e){const t=this,a=this.parser,A=a.json.nodes[e],r=(A.extensions&&A.extensions[this.name]||{}).light;return r===void 0?null:this._loadLight(r).then(function(i){return a._getNodeRef(t.cache,r,i)})}}class eA{constructor(){this.name=G.KHR_MATERIALS_UNLIT}getMaterialType(){return b.MeshBasicMaterial}extendParams(e,t,a){const A=[];e.color=new b.Color(1,1,1),e.opacity=1;const r=t.pbrMetallicRoughness;if(r){if(Array.isArray(r.baseColorFactor)){const i=r.baseColorFactor;e.color.setRGB(i[0],i[1],i[2],b.LinearSRGBColorSpace),e.opacity=i[3]}r.baseColorTexture!==void 0&&A.push(a.assignTexture(e,"map",r.baseColorTexture,b.SRGBColorSpace))}return Promise.all(A)}}class tA{constructor(e){this.parser=e,this.name=G.KHR_MATERIALS_EMISSIVE_STRENGTH}extendMaterialParams(e,t){const a=this.parser.json.materials[e];if(!a.extensions||!a.extensions[this.name])return Promise.resolve();const A=a.extensions[this.name].emissiveStrength;return A!==void 0&&(t.emissiveIntensity=A),Promise.resolve()}}class aA{constructor(e){this.parser=e,this.name=G.KHR_MATERIALS_CLEARCOAT}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?b.MeshPhysicalMaterial:null}extendMaterialParams(e,t){const a=this.parser,A=a.json.materials[e];if(!A.extensions||!A.extensions[this.name])return Promise.resolve();const r=[],i=A.extensions[this.name];if(i.clearcoatFactor!==void 0&&(t.clearcoat=i.clearcoatFactor),i.clearcoatTexture!==void 0&&r.push(a.assignTexture(t,"clearcoatMap",i.clearcoatTexture)),i.clearcoatRoughnessFactor!==void 0&&(t.clearcoatRoughness=i.clearcoatRoughnessFactor),i.clearcoatRoughnessTexture!==void 0&&r.push(a.assignTexture(t,"clearcoatRoughnessMap",i.clearcoatRoughnessTexture)),i.clearcoatNormalTexture!==void 0&&(r.push(a.assignTexture(t,"clearcoatNormalMap",i.clearcoatNormalTexture)),i.clearcoatNormalTexture.scale!==void 0)){const o=i.clearcoatNormalTexture.scale;t.clearcoatNormalScale=new b.Vector2(o,o)}return Promise.all(r)}}class AA{constructor(e){this.parser=e,this.name=G.KHR_MATERIALS_DISPERSION}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?b.MeshPhysicalMaterial:null}extendMaterialParams(e,t){const a=this.parser.json.materials[e];if(!a.extensions||!a.extensions[this.name])return Promise.resolve();const A=a.extensions[this.name];return t.dispersion=A.dispersion!==void 0?A.dispersion:0,Promise.resolve()}}class iA{constructor(e){this.parser=e,this.name=G.KHR_MATERIALS_IRIDESCENCE}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?b.MeshPhysicalMaterial:null}extendMaterialParams(e,t){const a=this.parser,A=a.json.materials[e];if(!A.extensions||!A.extensions[this.name])return Promise.resolve();const r=[],i=A.extensions[this.name];return i.iridescenceFactor!==void 0&&(t.iridescence=i.iridescenceFactor),i.iridescenceTexture!==void 0&&r.push(a.assignTexture(t,"iridescenceMap",i.iridescenceTexture)),i.iridescenceIor!==void 0&&(t.iridescenceIOR=i.iridescenceIor),t.iridescenceThicknessRange===void 0&&(t.iridescenceThicknessRange=[100,400]),i.iridescenceThicknessMinimum!==void 0&&(t.iridescenceThicknessRange[0]=i.iridescenceThicknessMinimum),i.iridescenceThicknessMaximum!==void 0&&(t.iridescenceThicknessRange[1]=i.iridescenceThicknessMaximum),i.iridescenceThicknessTexture!==void 0&&r.push(a.assignTexture(t,"iridescenceThicknessMap",i.iridescenceThicknessTexture)),Promise.all(r)}}class rA{constructor(e){this.parser=e,this.name=G.KHR_MATERIALS_SHEEN}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?b.MeshPhysicalMaterial:null}extendMaterialParams(e,t){const a=this.parser,A=a.json.materials[e];if(!A.extensions||!A.extensions[this.name])return Promise.resolve();const r=[];t.sheenColor=new b.Color(0,0,0),t.sheenRoughness=0,t.sheen=1;const i=A.extensions[this.name];if(i.sheenColorFactor!==void 0){const o=i.sheenColorFactor;t.sheenColor.setRGB(o[0],o[1],o[2],b.LinearSRGBColorSpace)}return i.sheenRoughnessFactor!==void 0&&(t.sheenRoughness=i.sheenRoughnessFactor),i.sheenColorTexture!==void 0&&r.push(a.assignTexture(t,"sheenColorMap",i.sheenColorTexture,b.SRGBColorSpace)),i.sheenRoughnessTexture!==void 0&&r.push(a.assignTexture(t,"sheenRoughnessMap",i.sheenRoughnessTexture)),Promise.all(r)}}class sA{constructor(e){this.parser=e,this.name=G.KHR_MATERIALS_TRANSMISSION}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?b.MeshPhysicalMaterial:null}extendMaterialParams(e,t){const a=this.parser,A=a.json.materials[e];if(!A.extensions||!A.extensions[this.name])return Promise.resolve();const r=[],i=A.extensions[this.name];return i.transmissionFactor!==void 0&&(t.transmission=i.transmissionFactor),i.transmissionTexture!==void 0&&r.push(a.assignTexture(t,"transmissionMap",i.transmissionTexture)),Promise.all(r)}}class nA{constructor(e){this.parser=e,this.name=G.KHR_MATERIALS_VOLUME}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?b.MeshPhysicalMaterial:null}extendMaterialParams(e,t){const a=this.parser,A=a.json.materials[e];if(!A.extensions||!A.extensions[this.name])return Promise.resolve();const r=[],i=A.extensions[this.name];t.thickness=i.thicknessFactor!==void 0?i.thicknessFactor:0,i.thicknessTexture!==void 0&&r.push(a.assignTexture(t,"thicknessMap",i.thicknessTexture)),t.attenuationDistance=i.attenuationDistance||1/0;const o=i.attenuationColor||[1,1,1];return t.attenuationColor=new b.Color().setRGB(o[0],o[1],o[2],b.LinearSRGBColorSpace),Promise.all(r)}}class oA{constructor(e){this.parser=e,this.name=G.KHR_MATERIALS_IOR}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?b.MeshPhysicalMaterial:null}extendMaterialParams(e,t){const a=this.parser.json.materials[e];if(!a.extensions||!a.extensions[this.name])return Promise.resolve();const A=a.extensions[this.name];return t.ior=A.ior!==void 0?A.ior:1.5,Promise.resolve()}}class cA{constructor(e){this.parser=e,this.name=G.KHR_MATERIALS_SPECULAR}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?b.MeshPhysicalMaterial:null}extendMaterialParams(e,t){const a=this.parser,A=a.json.materials[e];if(!A.extensions||!A.extensions[this.name])return Promise.resolve();const r=[],i=A.extensions[this.name];t.specularIntensity=i.specularFactor!==void 0?i.specularFactor:1,i.specularTexture!==void 0&&r.push(a.assignTexture(t,"specularIntensityMap",i.specularTexture));const o=i.specularColorFactor||[1,1,1];return t.specularColor=new b.Color().setRGB(o[0],o[1],o[2],b.LinearSRGBColorSpace),i.specularColorTexture!==void 0&&r.push(a.assignTexture(t,"specularColorMap",i.specularColorTexture,b.SRGBColorSpace)),Promise.all(r)}}class dA{constructor(e){this.parser=e,this.name=G.EXT_MATERIALS_BUMP}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?b.MeshPhysicalMaterial:null}extendMaterialParams(e,t){const a=this.parser,A=a.json.materials[e];if(!A.extensions||!A.extensions[this.name])return Promise.resolve();const r=[],i=A.extensions[this.name];return t.bumpScale=i.bumpFactor!==void 0?i.bumpFactor:1,i.bumpTexture!==void 0&&r.push(a.assignTexture(t,"bumpMap",i.bumpTexture)),Promise.all(r)}}class hA{constructor(e){this.parser=e,this.name=G.KHR_MATERIALS_ANISOTROPY}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?b.MeshPhysicalMaterial:null}extendMaterialParams(e,t){const a=this.parser,A=a.json.materials[e];if(!A.extensions||!A.extensions[this.name])return Promise.resolve();const r=[],i=A.extensions[this.name];return i.anisotropyStrength!==void 0&&(t.anisotropy=i.anisotropyStrength),i.anisotropyRotation!==void 0&&(t.anisotropyRotation=i.anisotropyRotation),i.anisotropyTexture!==void 0&&r.push(a.assignTexture(t,"anisotropyMap",i.anisotropyTexture)),Promise.all(r)}}class lA{constructor(e){this.parser=e,this.name=G.KHR_TEXTURE_BASISU}loadTexture(e){const t=this.parser,a=t.json,A=a.textures[e];if(!A.extensions||!A.extensions[this.name])return null;const r=A.extensions[this.name],i=t.options.ktx2Loader;if(!i){if(a.extensionsRequired&&a.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return null}return t.loadTextureImage(e,r.source,i)}}class bA{constructor(e){this.parser=e,this.name=G.EXT_TEXTURE_WEBP,this.isSupported=null}loadTexture(e){const t=this.name,a=this.parser,A=a.json,r=A.textures[e];if(!r.extensions||!r.extensions[t])return null;const i=r.extensions[t],o=A.images[i.source];let l=a.textureLoader;if(o.uri){const h=a.options.manager.getHandler(o.uri);h!==null&&(l=h)}return this.detectSupport().then(function(h){if(h)return a.loadTextureImage(e,i.source,l);if(A.extensionsRequired&&A.extensionsRequired.indexOf(t)>=0)throw new Error("THREE.GLTFLoader: WebP required by asset but unsupported.");return a.loadTexture(e)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(e){const t=new Image;t.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA",t.onload=t.onerror=function(){e(t.height===1)}})),this.isSupported}}class gA{constructor(e){this.parser=e,this.name=G.EXT_TEXTURE_AVIF,this.isSupported=null}loadTexture(e){const t=this.name,a=this.parser,A=a.json,r=A.textures[e];if(!r.extensions||!r.extensions[t])return null;const i=r.extensions[t],o=A.images[i.source];let l=a.textureLoader;if(o.uri){const h=a.options.manager.getHandler(o.uri);h!==null&&(l=h)}return this.detectSupport().then(function(h){if(h)return a.loadTextureImage(e,i.source,l);if(A.extensionsRequired&&A.extensionsRequired.indexOf(t)>=0)throw new Error("THREE.GLTFLoader: AVIF required by asset but unsupported.");return a.loadTexture(e)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(e){const t=new Image;t.src="data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAABcAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQAMAAAAABNjb2xybmNseAACAAIABoAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAAB9tZGF0EgAKCBgABogQEDQgMgkQAAAAB8dSLfI=",t.onload=t.onerror=function(){e(t.height===1)}})),this.isSupported}}class fA{constructor(e){this.name=G.EXT_MESHOPT_COMPRESSION,this.parser=e}loadBufferView(e){const t=this.parser.json,a=t.bufferViews[e];if(a.extensions&&a.extensions[this.name]){const A=a.extensions[this.name],r=this.parser.getDependency("buffer",A.buffer),i=this.parser.options.meshoptDecoder;if(!i||!i.supported){if(t.extensionsRequired&&t.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return null}return r.then(function(o){const l=A.byteOffset||0,h=A.byteLength||0,g=A.count,f=A.byteStride,u=new Uint8Array(o,l,h);return i.decodeGltfBufferAsync?i.decodeGltfBufferAsync(g,f,u,A.mode,A.filter).then(function(I){return I.buffer}):i.ready.then(function(){const I=new ArrayBuffer(g*f);return i.decodeGltfBuffer(new Uint8Array(I),g,f,u,A.mode,A.filter),I})})}return null}}class uA{constructor(e){this.name=G.EXT_MESH_GPU_INSTANCING,this.parser=e}createNodeMesh(e){const t=this.parser.json,a=t.nodes[e];if(!a.extensions||!a.extensions[this.name]||a.mesh===void 0)return null;const A=t.meshes[a.mesh];for(const l of A.primitives)if(l.mode!==ne.TRIANGLES&&l.mode!==ne.TRIANGLE_STRIP&&l.mode!==ne.TRIANGLE_FAN&&l.mode!==void 0)return null;const r=a.extensions[this.name].attributes,i=[],o={};for(const l in r)i.push(this.parser.getDependency("accessor",r[l]).then(h=>(o[l]=h,o[l])));return i.length<1?null:(i.push(this.parser.createNodeMesh(e)),Promise.all(i).then(l=>{const h=l.pop(),g=h.isGroup?h.children:[h],f=l[0].count,u=[];for(const I of g){const p=new b.Matrix4,B=new b.Vector3,m=new b.Quaternion,E=new b.Vector3(1,1,1),Q=new b.InstancedMesh(I.geometry,I.material,f);for(let k=0;k<f;k++)o.TRANSLATION&&B.fromBufferAttribute(o.TRANSLATION,k),o.ROTATION&&m.fromBufferAttribute(o.ROTATION,k),o.SCALE&&E.fromBufferAttribute(o.SCALE,k),Q.setMatrixAt(k,p.compose(B,m,E));for(const k in o)if(k==="_COLOR_0"){const x=o[k];Q.instanceColor=new b.InstancedBufferAttribute(x.array,x.itemSize,x.normalized)}else k!=="TRANSLATION"&&k!=="ROTATION"&&k!=="SCALE"&&I.geometry.setAttribute(k,o[k]);b.Object3D.prototype.copy.call(Q,I),this.parser.assignFinalMaterial(Q),u.push(Q)}return h.isGroup?(h.clear(),h.add(...u),h):u[0]}))}}const la="glTF",IA=1313821514,pA=5130562;class BA{constructor(e){this.name=G.KHR_BINARY_GLTF,this.content=null,this.body=null;const t=new DataView(e,0,12),a=new TextDecoder;if(this.header={magic:a.decode(new Uint8Array(e.slice(0,4))),version:t.getUint32(4,!0),length:t.getUint32(8,!0)},this.header.magic!==la)throw new Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");if(this.header.version<2)throw new Error("THREE.GLTFLoader: Legacy binary file detected.");const A=this.header.length-12,r=new DataView(e,12);let i=0;for(;i<A;){const o=r.getUint32(i,!0);i+=4;const l=r.getUint32(i,!0);if(i+=4,l===IA){const h=new Uint8Array(e,12+i,o);this.content=a.decode(h)}else if(l===pA){const h=12+i;this.body=e.slice(h,h+o)}i+=o}if(this.content===null)throw new Error("THREE.GLTFLoader: JSON content not found.")}}class mA{constructor(e,t){if(!t)throw new Error("THREE.GLTFLoader: No DRACOLoader instance provided.");this.name=G.KHR_DRACO_MESH_COMPRESSION,this.json=e,this.dracoLoader=t,this.dracoLoader.preload()}decodePrimitive(e,t){const a=this.json,A=this.dracoLoader,r=e.extensions[this.name].bufferView,i=e.extensions[this.name].attributes,o={},l={},h={};for(const g in i){const f=wt[g]||g.toLowerCase();o[f]=i[g]}for(const g in e.attributes){const f=wt[g]||g.toLowerCase();if(i[g]!==void 0){const u=a.accessors[e.attributes[g]],I=He[u.componentType];h[f]=I.name,l[f]=u.normalized===!0}}return t.getDependency("bufferView",r).then(function(g){return new Promise(function(f,u){A.decodeDracoFile(g,function(I){for(const p in I.attributes){const B=I.attributes[p],m=l[p];m!==void 0&&(B.normalized=m)}f(I)},o,h,b.LinearSRGBColorSpace,u)})})}}class CA{constructor(){this.name=G.KHR_TEXTURE_TRANSFORM}extendTexture(e,t){return(t.texCoord!==void 0&&t.texCoord!==e.channel||t.offset!==void 0||t.rotation!==void 0||t.scale!==void 0)&&(e=e.clone(),t.texCoord!==void 0&&(e.channel=t.texCoord),t.offset!==void 0&&e.offset.fromArray(t.offset),t.rotation!==void 0&&(e.rotation=t.rotation),t.scale!==void 0&&e.repeat.fromArray(t.scale),e.needsUpdate=!0),e}}class EA{constructor(){this.name=G.KHR_MESH_QUANTIZATION}}class ba extends b.Interpolant{constructor(e,t,a,A){super(e,t,a,A)}copySampleValue_(e){const t=this.resultBuffer,a=this.sampleValues,A=this.valueSize,r=e*A*3+A;for(let i=0;i!==A;i++)t[i]=a[r+i];return t}interpolate_(e,t,a,A){const r=this.resultBuffer,i=this.sampleValues,o=this.valueSize,l=2*o,h=3*o,g=A-t,f=(a-t)/g,u=f*f,I=u*f,p=e*h,B=p-h,m=-2*I+3*u,E=I-u,Q=1-m,k=E-u+f;for(let x=0;x!==o;x++){const T=i[B+x+o],S=i[B+x+l]*g,F=i[p+x+o],D=i[p+x]*g;r[x]=Q*T+k*S+m*F+E*D}return r}}const QA=new b.Quaternion;class yA extends ba{interpolate_(e,t,a,A){const r=super.interpolate_(e,t,a,A);return QA.fromArray(r).normalize().toArray(r),r}}const ne={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},He={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},_t={9728:b.NearestFilter,9729:b.LinearFilter,9984:b.NearestMipmapNearestFilter,9985:b.LinearMipmapNearestFilter,9986:b.NearestMipmapLinearFilter,9987:b.LinearMipmapLinearFilter},Pt={33071:b.ClampToEdgeWrapping,33648:b.MirroredRepeatWrapping,10497:b.RepeatWrapping},nt={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},wt={POSITION:"position",NORMAL:"normal",TANGENT:"tangent",TEXCOORD_0:"uv",TEXCOORD_1:"uv1",TEXCOORD_2:"uv2",TEXCOORD_3:"uv3",COLOR_0:"color",WEIGHTS_0:"skinWeight",JOINTS_0:"skinIndex"},Re={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},wA={CUBICSPLINE:void 0,LINEAR:b.InterpolateLinear,STEP:b.InterpolateDiscrete},xA="OPAQUE",kA="MASK",DA="BLEND";function Le(n,e,t){for(const a in t.extensions)n[a]===void 0&&(e.userData.gltfExtensions=e.userData.gltfExtensions||{},e.userData.gltfExtensions[a]=t.extensions[a])}function Ce(n,e){e.extras!==void 0&&(typeof e.extras=="object"?Object.assign(n.userData,e.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+e.extras))}function jA(n,e){if(n.updateMorphTargets(),e.weights!==void 0)for(let t=0,a=e.weights.length;t<a;t++)n.morphTargetInfluences[t]=e.weights[t];if(e.extras&&Array.isArray(e.extras.targetNames)){const t=e.extras.targetNames;if(n.morphTargetInfluences.length===t.length){n.morphTargetDictionary={};for(let a=0,A=t.length;a<A;a++)n.morphTargetDictionary[t[a]]=a}else console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.")}}function RA(n){let e;const t=n.extensions&&n.extensions[G.KHR_DRACO_MESH_COMPRESSION];if(e=t?"draco:"+t.bufferView+":"+t.indices+":"+ot(t.attributes):n.indices+":"+ot(n.attributes)+":"+n.mode,n.targets!==void 0)for(let a=0,A=n.targets.length;a<A;a++)e+=":"+ot(n.targets[a]);return e}function ot(n){let e="";const t=Object.keys(n).sort();for(let a=0,A=t.length;a<A;a++)e+=t[a]+":"+n[t[a]]+";";return e}function xt(n){switch(n){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.")}}const MA=new b.Matrix4;class TA{constructor(e={},t={}){this.json=e,this.extensions={},this.plugins={},this.options=t,this.cache=new Za,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 a=!1,A=-1,r=!1,i=-1;if(typeof navigator<"u"){const o=navigator.userAgent;a=/^((?!chrome|android).)*safari/i.test(o)===!0;const l=o.match(/Version\/(\d+)/);A=a&&l?parseInt(l[1],10):-1,r=o.indexOf("Firefox")>-1,i=r?o.match(/Firefox\/([0-9]+)\./)[1]:-1}typeof createImageBitmap>"u"||a&&A<17||r&&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(e){this.extensions=e}setPlugins(e){this.plugins=e}parse(e,t){const a=this,A=this.json,r=this.extensions;this.cache.removeAll(),this.nodeCache={},this._invokeAll(function(i){return i._markDefs&&i._markDefs()}),Promise.all(this._invokeAll(function(i){return i.beforeRoot&&i.beforeRoot()})).then(function(){return Promise.all([a.getDependencies("scene"),a.getDependencies("animation"),a.getDependencies("camera")])}).then(function(i){const o={scene:i[0][A.scene||0],scenes:i[0],animations:i[1],cameras:i[2],asset:A.asset,parser:a,userData:{}};return Le(r,o,A),Ce(o,A),Promise.all(a._invokeAll(function(l){return l.afterRoot&&l.afterRoot(o)})).then(function(){for(const l of o.scenes)l.updateMatrixWorld();e(o)})}).catch(t)}_markDefs(){const e=this.json.nodes||[],t=this.json.skins||[],a=this.json.meshes||[];for(let A=0,r=t.length;A<r;A++){const i=t[A].joints;for(let o=0,l=i.length;o<l;o++)e[i[o]].isBone=!0}for(let A=0,r=e.length;A<r;A++){const i=e[A];i.mesh!==void 0&&(this._addNodeRef(this.meshCache,i.mesh),i.skin!==void 0&&(a[i.mesh].isSkinnedMesh=!0)),i.camera!==void 0&&this._addNodeRef(this.cameraCache,i.camera)}}_addNodeRef(e,t){t!==void 0&&(e.refs[t]===void 0&&(e.refs[t]=e.uses[t]=0),e.refs[t]++)}_getNodeRef(e,t,a){if(e.refs[t]<=1)return a;const A=a.clone(),r=(i,o)=>{const l=this.associations.get(i);l!=null&&this.associations.set(o,l);for(const[h,g]of i.children.entries())r(g,o.children[h])};return r(a,A),A.name+="_instance_"+e.uses[t]++,A}_invokeOne(e){const t=Object.values(this.plugins);t.push(this);for(let a=0;a<t.length;a++){const A=e(t[a]);if(A)return A}return null}_invokeAll(e){const t=Object.values(this.plugins);t.unshift(this);const a=[];for(let A=0;A<t.length;A++){const r=e(t[A]);r&&a.push(r)}return a}getDependency(e,t){const a=e+":"+t;let A=this.cache.get(a);if(!A){switch(e){case"scene":A=this.loadScene(t);break;case"node":A=this._invokeOne(function(r){return r.loadNode&&r.loadNode(t)});break;case"mesh":A=this._invokeOne(function(r){return r.loadMesh&&r.loadMesh(t)});break;case"accessor":A=this.loadAccessor(t);break;case"bufferView":A=this._invokeOne(function(r){return r.loadBufferView&&r.loadBufferView(t)});break;case"buffer":A=this.loadBuffer(t);break;case"material":A=this._invokeOne(function(r){return r.loadMaterial&&r.loadMaterial(t)});break;case"texture":A=this._invokeOne(function(r){return r.loadTexture&&r.loadTexture(t)});break;case"skin":A=this.loadSkin(t);break;case"animation":A=this._invokeOne(function(r){return r.loadAnimation&&r.loadAnimation(t)});break;case"camera":A=this.loadCamera(t);break;default:if(A=this._invokeOne(function(r){return r!=this&&r.getDependency&&r.getDependency(e,t)}),!A)throw new Error("Unknown type: "+e)}this.cache.add(a,A)}return A}getDependencies(e){let t=this.cache.get(e);if(!t){const a=this,A=this.json[e+(e==="mesh"?"es":"s")]||[];t=Promise.all(A.map(function(r,i){return a.getDependency(e,i)})),this.cache.add(e,t)}return t}loadBuffer(e){const t=this.json.buffers[e],a=this.fileLoader;if(t.type&&t.type!=="arraybuffer")throw new Error("THREE.GLTFLoader: "+t.type+" buffer type is not supported.");if(t.uri===void 0&&e===0)return Promise.resolve(this.extensions[G.KHR_BINARY_GLTF].body);const A=this.options;return new Promise(function(r,i){a.load(b.LoaderUtils.resolveURL(t.uri,A.path),r,void 0,function(){i(new Error('THREE.GLTFLoader: Failed to load buffer "'+t.uri+'".'))})})}loadBufferView(e){const t=this.json.bufferViews[e];return this.getDependency("buffer",t.buffer).then(function(a){const A=t.byteLength||0,r=t.byteOffset||0;return a.slice(r,r+A)})}loadAccessor(e){const t=this,a=this.json,A=this.json.accessors[e];if(A.bufferView===void 0&&A.sparse===void 0){const i=nt[A.type],o=He[A.componentType],l=A.normalized===!0,h=new o(A.count*i);return Promise.resolve(new b.BufferAttribute(h,i,l))}const r=[];return A.bufferView!==void 0?r.push(this.getDependency("bufferView",A.bufferView)):r.push(null),A.sparse!==void 0&&(r.push(this.getDependency("bufferView",A.sparse.indices.bufferView)),r.push(this.getDependency("bufferView",A.sparse.values.bufferView))),Promise.all(r).then(function(i){const o=i[0],l=nt[A.type],h=He[A.componentType],g=h.BYTES_PER_ELEMENT,f=g*l,u=A.byteOffset||0,I=A.bufferView!==void 0?a.bufferViews[A.bufferView].byteStride:void 0,p=A.normalized===!0;let B,m;if(I&&I!==f){const E=Math.floor(u/I),Q="InterleavedBuffer:"+A.bufferView+":"+A.componentType+":"+E+":"+A.count;let k=t.cache.get(Q);k||(B=new h(o,E*I,A.count*I/g),k=new b.InterleavedBuffer(B,I/g),t.cache.add(Q,k)),m=new b.InterleavedBufferAttribute(k,l,u%I/g,p)}else B=o===null?new h(A.count*l):new h(o,u,A.count*l),m=new b.BufferAttribute(B,l,p);if(A.sparse!==void 0){const E=nt.SCALAR,Q=He[A.sparse.indices.componentType],k=A.sparse.indices.byteOffset||0,x=A.sparse.values.byteOffset||0,T=new Q(i[1],k,A.sparse.count*E),S=new h(i[2],x,A.sparse.count*l);o!==null&&(m=new b.BufferAttribute(m.array.slice(),m.itemSize,m.normalized)),m.normalized=!1;for(let F=0,D=T.length;F<D;F++){const M=T[F];if(m.setX(M,S[F*l]),l>=2&&m.setY(M,S[F*l+1]),l>=3&&m.setZ(M,S[F*l+2]),l>=4&&m.setW(M,S[F*l+3]),l>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}m.normalized=p}return m})}loadTexture(e){const t=this.json,a=this.options,A=t.textures[e].source,r=t.images[A];let i=this.textureLoader;if(r.uri){const o=a.manager.getHandler(r.uri);o!==null&&(i=o)}return this.loadTextureImage(e,A,i)}loadTextureImage(e,t,a){const A=this,r=this.json,i=r.textures[e],o=r.images[t],l=(o.uri||o.bufferView)+":"+i.sampler;if(this.textureCache[l])return this.textureCache[l];const h=this.loadImageSource(t,a).then(function(g){g.flipY=!1,g.name=i.name||o.name||"",g.name===""&&typeof o.uri=="string"&&o.uri.startsWith("data:image/")===!1&&(g.name=o.uri);const f=(r.samplers||{})[i.sampler]||{};return g.magFilter=_t[f.magFilter]||b.LinearFilter,g.minFilter=_t[f.minFilter]||b.LinearMipmapLinearFilter,g.wrapS=Pt[f.wrapS]||b.RepeatWrapping,g.wrapT=Pt[f.wrapT]||b.RepeatWrapping,g.generateMipmaps=!g.isCompressedTexture&&g.minFilter!==b.NearestFilter&&g.minFilter!==b.LinearFilter,A.associations.set(g,{textures:e}),g}).catch(function(){return null});return this.textureCache[l]=h,h}loadImageSource(e,t){const a=this,A=this.json,r=this.options;if(this.sourceCache[e]!==void 0)return this.sourceCache[e].then(f=>f.clone());const i=A.images[e],o=self.URL||self.webkitURL;let l=i.uri||"",h=!1;if(i.bufferView!==void 0)l=a.getDependency("bufferView",i.bufferView).then(function(f){h=!0;const u=new Blob([f],{type:i.mimeType});return l=o.createObjectURL(u),l});else if(i.uri===void 0)throw new Error("THREE.GLTFLoader: Image "+e+" is missing URI and bufferView");const g=Promise.resolve(l).then(function(f){return new Promise(function(u,I){let p=u;t.isImageBitmapLoader===!0&&(p=function(B){const m=new b.Texture(B);m.needsUpdate=!0,u(m)}),t.load(b.LoaderUtils.resolveURL(f,r.path),p,void 0,I)})}).then(function(f){var u;return h===!0&&o.revokeObjectURL(l),Ce(f,i),f.userData.mimeType=i.mimeType||((u=i.uri).search(/\.jpe?g($|\?)/i)>0||u.search(/^data\:image\/jpeg/)===0?"image/jpeg":u.search(/\.webp($|\?)/i)>0||u.search(/^data\:image\/webp/)===0?"image/webp":u.search(/\.ktx2($|\?)/i)>0||u.search(/^data\:image\/ktx2/)===0?"image/ktx2":"image/png"),f}).catch(function(f){throw console.error("THREE.GLTFLoader: Couldn't load texture",l),f});return this.sourceCache[e]=g,g}assignTexture(e,t,a,A){const r=this;return this.getDependency("texture",a.index).then(function(i){if(!i)return null;if(a.texCoord!==void 0&&a.texCoord>0&&((i=i.clone()).channel=a.texCoord),r.extensions[G.KHR_TEXTURE_TRANSFORM]){const o=a.extensions!==void 0?a.extensions[G.KHR_TEXTURE_TRANSFORM]:void 0;if(o){const l=r.associations.get(i);i=r.extensions[G.KHR_TEXTURE_TRANSFORM].extendTexture(i,o),r.associations.set(i,l)}}return A!==void 0&&(i.colorSpace=A),e[t]=i,i})}assignFinalMaterial(e){const t=e.geometry;let a=e.material;const A=t.attributes.tangent===void 0,r=t.attributes.color!==void 0,i=t.attributes.normal===void 0;if(e.isPoints){const o="PointsMaterial:"+a.uuid;let l=this.cache.get(o);l||(l=new b.PointsMaterial,b.Material.prototype.copy.call(l,a),l.color.copy(a.color),l.map=a.map,l.sizeAttenuation=!1,this.cache.add(o,l)),a=l}else if(e.isLine){const o="LineBasicMaterial:"+a.uuid;let l=this.cache.get(o);l||(l=new b.LineBasicMaterial,b.Material.prototype.copy.call(l,a),l.color.copy(a.color),l.map=a.map,this.cache.add(o,l)),a=l}if(A||r||i){let o="ClonedMaterial:"+a.uuid+":";A&&(o+="derivative-tangents:"),r&&(o+="vertex-colors:"),i&&(o+="flat-shading:");let l=this.cache.get(o);l||(l=a.clone(),r&&(l.vertexColors=!0),i&&(l.flatShading=!0),A&&(l.normalScale&&(l.normalScale.y*=-1),l.clearcoatNormalScale&&(l.clearcoatNormalScale.y*=-1)),this.cache.add(o,l),this.associations.set(l,this.associations.get(a))),a=l}e.material=a}getMaterialType(){return b.MeshStandardMaterial}loadMaterial(e){const t=this,a=this.json,A=this.extensions,r=a.materials[e];let i;const o={},l=[];if((r.extensions||{})[G.KHR_MATERIALS_UNLIT]){const g=A[G.KHR_MATERIALS_UNLIT];i=g.getMaterialType(),l.push(g.extendParams(o,r,t))}else{const g=r.pbrMetallicRoughness||{};if(o.color=new b.Color(1,1,1),o.opacity=1,Array.isArray(g.baseColorFactor)){const f=g.baseColorFactor;o.color.setRGB(f[0],f[1],f[2],b.LinearSRGBColorSpace),o.opacity=f[3]}g.baseColorTexture!==void 0&&l.push(t.assignTexture(o,"map",g.baseColorTexture,b.SRGBColorSpace)),o.metalness=g.metallicFactor!==void 0?g.metallicFactor:1,o.roughness=g.roughnessFactor!==void 0?g.roughnessFactor:1,g.metallicRoughnessTexture!==void 0&&(l.push(t.assignTexture(o,"metalnessMap",g.metallicRoughnessTexture)),l.push(t.assignTexture(o,"roughnessMap",g.metallicRoughnessTexture))),i=this._invokeOne(function(f){return f.getMaterialType&&f.getMaterialType(e)}),l.push(Promise.all(this._invokeAll(function(f){return f.extendMaterialParams&&f.extendMaterialParams(e,o)})))}r.doubleSided===!0&&(o.side=b.DoubleSide);const h=r.alphaMode||xA;if(h===DA?(o.transparent=!0,o.depthWrite=!1):(o.transparent=!1,h===kA&&(o.alphaTest=r.alphaCutoff!==void 0?r.alphaCutoff:.5)),r.normalTexture!==void 0&&i!==b.MeshBasicMaterial&&(l.push(t.assignTexture(o,"normalMap",r.normalTexture)),o.normalScale=new b.Vector2(1,1),r.normalTexture.scale!==void 0)){const g=r.normalTexture.scale;o.normalScale.set(g,g)}if(r.occlusionTexture!==void 0&&i!==b.MeshBasicMaterial&&(l.push(t.assignTexture(o,"aoMap",r.occlusionTexture)),r.occlusionTexture.strength!==void 0&&(o.aoMapIntensity=r.occlusionTexture.strength)),r.emissiveFactor!==void 0&&i!==b.MeshBasicMaterial){const g=r.emissiveFactor;o.emissive=new b.Color().setRGB(g[0],g[1],g[2],b.LinearSRGBColorSpace)}return r.emissiveTexture!==void 0&&i!==b.MeshBasicMaterial&&l.push(t.assignTexture(o,"emissiveMap",r.emissiveTexture,b.SRGBColorSpace)),Promise.all(l).then(function(){const g=new i(o);return r.name&&(g.name=r.name),Ce(g,r),t.associations.set(g,{materials:e}),r.extensions&&Le(A,g,r),g})}createUniqueName(e){const t=b.PropertyBinding.sanitizeNodeName(e||"");return t in this.nodeNamesUsed?t+"_"+ ++this.nodeNamesUsed[t]:(this.nodeNamesUsed[t]=0,t)}loadGeometries(e){const t=this,a=this.extensions,A=this.primitiveCache;function r(o){return a[G.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(o,t).then(function(l){return Ot(l,o,t)})}const i=[];for(let o=0,l=e.length;o<l;o++){const h=e[o],g=RA(h),f=A[g];if(f)i.push(f.promise);else{let u;u=h.extensions&&h.extensions[G.KHR_DRACO_MESH_COMPRESSION]?r(h):Ot(new b.BufferGeometry,h,t),A[g]={primitive:h,promise:u},i.push(u)}}return Promise.all(i)}loadMesh(e){const t=this,a=this.json,A=this.extensions,r=a.meshes[e],i=r.primitives,o=[];for(let h=0,g=i.length;h<g;h++){const f=i[h].material===void 0?((l=this.cache).DefaultMaterial===void 0&&(l.DefaultMaterial=new b.MeshStandardMaterial({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:b.FrontSide})),l.DefaultMaterial):this.getDependency("material",i[h].material);o.push(f)}var l;return o.push(t.loadGeometries(i)),Promise.all(o).then(function(h){const g=h.slice(0,h.length-1),f=h[h.length-1],u=[];for(let p=0,B=f.length;p<B;p++){const m=f[p],E=i[p];let Q;const k=g[p];if(E.mode===ne.TRIANGLES||E.mode===ne.TRIANGLE_STRIP||E.mode===ne.TRIANGLE_FAN||E.mode===void 0)Q=r.isSkinnedMesh===!0?new b.SkinnedMesh(m,k):new b.Mesh(m,k),Q.isSkinnedMesh===!0&&Q.normalizeSkinWeights(),E.mode===ne.TRIANGLE_STRIP?Q.geometry=Nt(Q.geometry,b.TriangleStripDrawMode):E.mode===ne.TRIANGLE_FAN&&(Q.geometry=Nt(Q.geometry,b.TriangleFanDrawMode));else if(E.mode===ne.LINES)Q=new b.LineSegments(m,k);else if(E.mode===ne.LINE_STRIP)Q=new b.Line(m,k);else if(E.mode===ne.LINE_LOOP)Q=new b.LineLoop(m,k);else{if(E.mode!==ne.POINTS)throw new Error("THREE.GLTFLoader: Primitive mode unsupported: "+E.mode);Q=new b.Points(m,k)}Object.keys(Q.geometry.morphAttributes).length>0&&jA(Q,r),Q.name=t.createUniqueName(r.name||"mesh_"+e),Ce(Q,r),E.extensions&&Le(A,Q,E),t.assignFinalMaterial(Q),u.push(Q)}for(let p=0,B=u.length;p<B;p++)t.associations.set(u[p],{meshes:e,primitives:p});if(u.length===1)return r.extensions&&Le(A,u[0],r),u[0];const I=new b.Group;r.extensions&&Le(A,I,r),t.associations.set(I,{meshes:e});for(let p=0,B=u.length;p<B;p++)I.add(u[p]);return I})}loadCamera(e){let t;const a=this.json.cameras[e],A=a[a.type];if(A)return a.type==="perspective"?t=new b.PerspectiveCamera(b.MathUtils.radToDeg(A.yfov),A.aspectRatio||1,A.znear||1,A.zfar||2e6):a.type==="orthographic"&&(t=new b.OrthographicCamera(-A.xmag,A.xmag,A.ymag,-A.ymag,A.znear,A.zfar)),a.name&&(t.name=this.createUniqueName(a.name)),Ce(t,a),Promise.resolve(t);console.warn("THREE.GLTFLoader: Missing camera parameters.")}loadSkin(e){const t=this.json.skins[e],a=[];for(let A=0,r=t.joints.length;A<r;A++)a.push(this._loadNodeShallow(t.joints[A]));return t.inverseBindMatrices!==void 0?a.push(this.getDependency("accessor",t.inverseBindMatrices)):a.push(null),Promise.all(a).then(function(A){const r=A.pop(),i=A,o=[],l=[];for(let h=0,g=i.length;h<g;h++){const f=i[h];if(f){o.push(f);const u=new b.Matrix4;r!==null&&u.fromArray(r.array,16*h),l.push(u)}else console.warn('THREE.GLTFLoader: Joint "%s" could not be found.',t.joints[h])}return new b.Skeleton(o,l)})}loadAnimation(e){const t=this.json,a=this,A=t.animations[e],r=A.name?A.name:"animation_"+e,i=[],o=[],l=[],h=[],g=[];for(let f=0,u=A.channels.length;f<u;f++){const I=A.channels[f],p=A.samplers[I.sampler],B=I.target,m=B.node,E=A.parameters!==void 0?A.parameters[p.input]:p.input,Q=A.parameters!==void 0?A.parameters[p.output]:p.output;B.node!==void 0&&(i.push(this.getDependency("node",m)),o.push(this.getDependency("accessor",E)),l.push(this.getDependency("accessor",Q)),h.push(p),g.push(B))}return Promise.all([Promise.all(i),Promise.all(o),Promise.all(l),Promise.all(h),Promise.all(g)]).then(function(f){const u=f[0],I=f[1],p=f[2],B=f[3],m=f[4],E=[];for(let Q=0,k=u.length;Q<k;Q++){const x=u[Q],T=I[Q],S=p[Q],F=B[Q],D=m[Q];if(x===void 0)continue;x.updateMatrix&&x.updateMatrix();const M=a._createAnimationTracks(x,T,S,F,D);if(M)for(let v=0;v<M.length;v++)E.push(M[v])}return new b.AnimationClip(r,void 0,E)})}createNodeMesh(e){const t=this.json,a=this,A=t.nodes[e];return A.mesh===void 0?null:a.getDependency("mesh",A.mesh).then(function(r){const i=a._getNodeRef(a.meshCache,A.mesh,r);return A.weights!==void 0&&i.traverse(function(o){if(o.isMesh)for(let l=0,h=A.weights.length;l<h;l++)o.morphTargetInfluences[l]=A.weights[l]}),i})}loadNode(e){const t=this,a=this.json.nodes[e],A=t._loadNodeShallow(e),r=[],i=a.children||[];for(let l=0,h=i.length;l<h;l++)r.push(t.getDependency("node",i[l]));const o=a.skin===void 0?Promise.resolve(null):t.getDependency("skin",a.skin);return Promise.all([A,Promise.all(r),o]).then(function(l){const h=l[0],g=l[1],f=l[2];f!==null&&h.traverse(function(u){u.isSkinnedMesh&&u.bind(f,MA)});for(let u=0,I=g.length;u<I;u++)h.add(g[u]);return h})}_loadNodeShallow(e){const t=this.json,a=this.extensions,A=this;if(this.nodeCache[e]!==void 0)return this.nodeCache[e];const r=t.nodes[e],i=r.name?A.createUniqueName(r.name):"",o=[],l=A._invokeOne(function(h){return h.createNodeMesh&&h.createNodeMesh(e)});return l&&o.push(l),r.camera!==void 0&&o.push(A.getDependency("camera",r.camera).then(function(h){return A._getNodeRef(A.cameraCache,r.camera,h)})),A._invokeAll(function(h){return h.createNodeAttachment&&h.createNodeAttachment(e)}).forEach(function(h){o.push(h)}),this.nodeCache[e]=Promise.all(o).then(function(h){let g;if(g=r.isBone===!0?new b.Bone:h.length>1?new b.Group:h.length===1?h[0]:new b.Object3D,g!==h[0])for(let f=0,u=h.length;f<u;f++)g.add(h[f]);if(r.name&&(g.userData.name=r.name,g.name=i),Ce(g,r),r.extensions&&Le(a,g,r),r.matrix!==void 0){const f=new b.Matrix4;f.fromArray(r.matrix),g.applyMatrix4(f)}else r.translation!==void 0&&g.position.fromArray(r.translation),r.rotation!==void 0&&g.quaternion.fromArray(r.rotation),r.scale!==void 0&&g.scale.fromArray(r.scale);return A.associations.has(g)||A.associations.set(g,{}),A.associations.get(g).nodes=e,g}),this.nodeCache[e]}loadScene(e){const t=this.extensions,a=this.json.scenes[e],A=this,r=new b.Group;a.name&&(r.name=A.createUniqueName(a.name)),Ce(r,a),a.extensions&&Le(t,r,a);const i=a.nodes||[],o=[];for(let l=0,h=i.length;l<h;l++)o.push(A.getDependency("node",i[l]));return Promise.all(o).then(function(l){for(let h=0,g=l.length;h<g;h++)r.add(l[h]);return A.associations=(h=>{const g=new Map;for(const[f,u]of A.associations)(f instanceof b.Material||f instanceof b.Texture)&&g.set(f,u);return h.traverse(f=>{const u=A.associations.get(f);u!=null&&g.set(f,u)}),g})(r),r})}_createAnimationTracks(e,t,a,A,r){const i=[],o=e.name?e.name:e.uuid,l=[];let h;switch(Re[r.path]===Re.weights?e.traverse(function(u){u.morphTargetInfluences&&l.push(u.name?u.name:u.uuid)}):l.push(o),Re[r.path]){case Re.weights:h=b.NumberKeyframeTrack;break;case Re.rotation:h=b.QuaternionKeyframeTrack;break;case Re.position:case Re.scale:h=b.VectorKeyframeTrack;break;default:a.itemSize===1?h=b.NumberKeyframeTrack:h=b.VectorKeyframeTrack}const g=A.interpolation!==void 0?wA[A.interpolation]:b.InterpolateLinear,f=this._getArrayFromAccessor(a);for(let u=0,I=l.length;u<I;u++){const p=new h(l[u]+"."+Re[r.path],t.array,f,g);A.interpolation==="CUBICSPLINE"&&this._createCubicSplineTrackInterpolant(p),i.push(p)}return i}_getArrayFromAccessor(e){let t=e.array;if(e.normalized){const a=xt(t.constructor),A=new Float32Array(t.length);for(let r=0,i=t.length;r<i;r++)A[r]=t[r]*a;t=A}return t}_createCubicSplineTrackInterpolant(e){e.createInterpolant=function(t){return new(this instanceof b.QuaternionKeyframeTrack?yA:ba)(this.times,this.values,this.getValueSize()/3,t)},e.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0}}function Ot(n,e,t){const a=e.attributes,A=[];function r(i,o){return t.getDependency("accessor",i).then(function(l){n.setAttribute(o,l)})}for(const i in a){const o=wt[i]||i.toLowerCase();o in n.attributes||A.push(r(a[i],o))}if(e.indices!==void 0&&!n.index){const i=t.getDependency("accessor",e.indices).then(function(o){n.setIndex(o)});A.push(i)}return b.ColorManagement.workingColorSpace!==b.LinearSRGBColorSpace&&"COLOR_0"in a&&console.warn(`THREE.GLTFLoader: Converting vertex colors from "srgb-linear" to "${b.ColorManagement.workingColorSpace}" not supported.`),Ce(n,e),function(i,o,l){const h=o.attributes,g=new b.Box3;if(h.POSITION===void 0)return;{const I=l.json.accessors[h.POSITION],p=I.min,B=I.max;if(p===void 0||B===void 0)return void console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");if(g.set(new b.Vector3(p[0],p[1],p[2]),new b.Vector3(B[0],B[1],B[2])),I.normalized){const m=xt(He[I.componentType]);g.min.multiplyScalar(m),g.max.multiplyScalar(m)}}const f=o.targets;if(f!==void 0){const I=new b.Vector3,p=new b.Vector3;for(let B=0,m=f.length;B<m;B++){const E=f[B];if(E.POSITION!==void 0){const Q=l.json.accessors[E.POSITION],k=Q.min,x=Q.max;if(k!==void 0&&x!==void 0){if(p.setX(Math.max(Math.abs(k[0]),Math.abs(x[0]))),p.setY(Math.max(Math.abs(k[1]),Math.abs(x[1]))),p.setZ(Math.max(Math.abs(k[2]),Math.abs(x[2]))),Q.normalized){const T=xt(He[Q.componentType]);p.multiplyScalar(T)}I.max(p)}else console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.")}}g.expandByVector(I)}i.boundingBox=g;const u=new b.Sphere;g.getCenter(u.center),u.radius=g.min.distanceTo(g.max)/2,i.boundingSphere=u}(n,e,t),Promise.all(A).then(function(){return e.targets!==void 0?function(i,o,l){let h=!1,g=!1,f=!1;for(let B=0,m=o.length;B<m;B++){const E=o[B];if(E.POSITION!==void 0&&(h=!0),E.NORMAL!==void 0&&(g=!0),E.COLOR_0!==void 0&&(f=!0),h&&g&&f)break}if(!h&&!g&&!f)return Promise.resolve(i);const u=[],I=[],p=[];for(let B=0,m=o.length;B<m;B++){const E=o[B];if(h){const Q=E.POSITION!==void 0?l.getDependency("accessor",E.POSITION):i.attributes.position;u.push(Q)}if(g){const Q=E.NORMAL!==void 0?l.getDependency("accessor",E.NORMAL):i.attributes.normal;I.push(Q)}if(f){const Q=E.COLOR_0!==void 0?l.getDependency("accessor",E.COLOR_0):i.attributes.color;p.push(Q)}}return Promise.all([Promise.all(u),Promise.all(I),Promise.all(p)]).then(function(B){const m=B[0],E=B[1],Q=B[2];return h&&(i.morphAttributes.position=m),g&&(i.morphAttributes.normal=E),f&&(i.morphAttributes.color=Q),i.morphTargetsRelative=!0,i})}(n,e.targets,t):n})}const ct=new WeakMap;class ga extends b.Loader{constructor(e){super(e),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(e){return this.decoderPath=e,this}setDecoderConfig(e){return this.decoderConfig=e,this}setWorkerLimit(e){return this.workerLimit=e,this}load(e,t,a,A){const r=new b.FileLoader(this.manager);r.setPath(this.path),r.setResponseType("arraybuffer"),r.setRequestHeader(this.requestHeader),r.setWithCredentials(this.withCredentials),r.load(e,i=>{this.parse(i,t,A)},a,A)}parse(e,t,a=()=>{}){this.decodeDracoFile(e,t,null,null,b.SRGBColorSpace,a).catch(a)}decodeDracoFile(e,t,a,A,r=b.LinearSRGBColorSpace,i=()=>{}){const o={attributeIDs:a||this.defaultAttributeIDs,attributeTypes:A||this.defaultAttributeTypes,useUniqueIDs:!!a,vertexColorSpace:r};return this.decodeGeometry(e,o).then(t).catch(i)}decodeGeometry(e,t){const a=JSON.stringify(t);if(ct.has(e)){const l=ct.get(e);if(l.key===a)return l.promise;if(e.byteLength===0)throw new Error("THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.")}let A;const r=this.workerNextTaskID++,i=e.byteLength,o=this._getWorker(r,i).then(l=>(A=l,new Promise((h,g)=>{A._callbacks[r]={resolve:h,reject:g},A.postMessage({type:"decode",id:r,taskConfig:t,buffer:e},[e])}))).then(l=>this._createGeometry(l.geometry));return o.catch(()=>!0).then(()=>{A&&r&&this._releaseTask(A,r)}),ct.set(e,{key:a,promise:o}),o}_createGeometry(e){const t=new b.BufferGeometry;e.index&&t.setIndex(new b.BufferAttribute(e.index.array,1));for(let a=0;a<e.attributes.length;a++){const A=e.attributes[a],r=A.name,i=A.array,o=A.itemSize,l=new b.BufferAttribute(i,o);r==="color"&&(this._assignVertexColorSpace(l,A.vertexColorSpace),l.normalized=!(i instanceof Float32Array)),t.setAttribute(r,l)}return t}_assignVertexColorSpace(e,t){if(t!==b.SRGBColorSpace)return;const a=new b.Color;for(let A=0,r=e.count;A<r;A++)a.fromBufferAttribute(e,A),b.ColorManagement.toWorkingColorSpace(a,b.SRGBColorSpace),e.setXYZ(A,a.r,a.g,a.b)}_loadLibrary(e,t){const a=new b.FileLoader(this.manager);return a.setPath(this.decoderPath),a.setResponseType(t),a.setWithCredentials(this.withCredentials),new Promise((A,r)=>{a.load(e,A,void 0,r)})}preload(){return this._initDecoder(),this}_initDecoder(){if(this.decoderPending)return this.decoderPending;const e=typeof WebAssembly!="object"||this.decoderConfig.type==="js",t=[];return e?t.push(this._loadLibrary("draco_decoder.js","text")):(t.push(this._loadLibrary("draco_wasm_wrapper.js","text")),t.push(this._loadLibrary("draco_decoder.wasm","arraybuffer"))),this.decoderPending=Promise.all(t).then(a=>{const A=a[0];e||(this.decoderConfig.wasmBinary=a[1]);const r=FA.toString(),i=["/* draco decoder */",A,"","/* worker */",r.substring(r.indexOf("{")+1,r.lastIndexOf("}"))].join(`
19
- `);this.workerSourceURL=URL.createObjectURL(new Blob([i]))}),this.decoderPending}_getWorker(e,t){return this._initDecoder().then(()=>{if(this.workerPool.length<this.workerLimit){const A=new Worker(this.workerSourceURL);A._callbacks={},A._taskCosts={},A._taskLoad=0,A.postMessage({type:"init",decoderConfig:this.decoderConfig}),A.onmessage=function(r){const i=r.data;switch(i.type){case"decode":A._callbacks[i.id].resolve(i);break;case"error":A._callbacks[i.id].reject(i);break;default:console.error('THREE.DRACOLoader: Unexpected message, "'+i.type+'"')}},this.workerPool.push(A)}else this.workerPool.sort(function(A,r){return A._taskLoad>r._taskLoad?-1:1});const a=this.workerPool[this.workerPool.length-1];return a._taskCosts[e]=t,a._taskLoad+=t,a})}_releaseTask(e,t){e._taskLoad-=e._taskCosts[t],delete e._callbacks[t],delete e._taskCosts[t]}debug(){console.log("Task load: ",this.workerPool.map(e=>e._taskLoad))}dispose(){for(let e=0;e<this.workerPool.length;++e)this.workerPool[e].terminate();return this.workerPool.length=0,this.workerSourceURL!==""&&URL.revokeObjectURL(this.workerSourceURL),this}}function FA(){let n,e;function t(a,A,r,i,o,l){const h=l.num_components(),g=r.num_points()*h,f=g*o.BYTES_PER_ELEMENT,u=function(B,m){switch(m){case Float32Array:return B.DT_FLOAT32;case Int8Array:return B.DT_INT8;case Int16Array:return B.DT_INT16;case Int32Array:return B.DT_INT32;case Uint8Array:return B.DT_UINT8;case Uint16Array:return B.DT_UINT16;case Uint32Array:return B.DT_UINT32}}(a,o),I=a._malloc(f);A.GetAttributeDataArrayForAllPoints(r,l,u,f,I);const p=new o(a.HEAPF32.buffer,I,g).slice();return a._free(I),{name:i,array:p,itemSize:h}}onmessage=function(a){const A=a.data;switch(A.type){case"init":n=A.decoderConfig,e=new Promise(function(o){n.onModuleLoaded=function(l){o({draco:l})},DracoDecoderModule(n)});break;case"decode":const r=A.buffer,i=A.taskConfig;e.then(o=>{const l=o.draco,h=new l.Decoder;try{const g=function(u,I,p,B){const m=B.attributeIDs,E=B.attributeTypes;let Q,k;const x=I.GetEncodedGeometryType(p);if(x===u.TRIANGULAR_MESH)Q=new u.Mesh,k=I.DecodeArrayToMesh(p,p.byteLength,Q);else{if(x!==u.POINT_CLOUD)throw new Error("THREE.DRACOLoader: Unexpected geometry type.");Q=new u.PointCloud,k=I.DecodeArrayToPointCloud(p,p.byteLength,Q)}if(!k.ok()||Q.ptr===0)throw new Error("THREE.DRACOLoader: Decoding failed: "+k.error_msg());const T={index:null,attributes:[]};for(const S in m){const F=self[E[S]];let D,M;if(B.useUniqueIDs)M=m[S],D=I.GetAttributeByUniqueId(Q,M);else{if(M=I.GetAttributeId(Q,u[m[S]]),M===-1)continue;D=I.GetAttribute(Q,M)}const v=t(u,I,Q,S,F,D);S==="color"&&(v.vertexColorSpace=B.vertexColorSpace),T.attributes.push(v)}return x===u.TRIANGULAR_MESH&&(T.index=function(S,F,D){const M=D.num_faces(),v=3*M,L=4*v,K=S._malloc(L);F.GetTrianglesUInt32Array(D,L,K);const te=new Uint32Array(S.HEAPF32.buffer,K,v).slice();return S._free(K),{array:te,itemSize:1}}(u,I,Q)),u.destroy(Q),T}(l,h,new Int8Array(r),i),f=g.attributes.map(u=>u.array.buffer);g.index&&f.push(g.index.array.buffer),self.postMessage({type:"decode",id:A.id,geometry:g},f)}catch(g){console.error(g),self.postMessage({type:"error",id:A.id,error:g.message})}finally{l.destroy(h)}})}}}class SA{constructor(e=4){this.pool=e,this.queue=[],this.workers=[],this.workersResolve=[],this.workerStatus=0}_initWorker(e){if(!this.workers[e]){const t=this.workerCreator();t.addEventListener("message",this._onMessage.bind(this,e)),this.workers[e]=t}}_getIdleWorker(){for(let e=0;e<this.pool;e++)if(!(this.workerStatus&1<<e))return e;return-1}_onMessage(e,t){const a=this.workersResolve[e];if(a&&a(t),this.queue.length){const{resolve:A,msg:r,transfer:i}=this.queue.shift();this.workersResolve[e]=A,this.workers[e].postMessage(r,i)}else this.workerStatus^=1<<e}setWorkerCreator(e){this.workerCreator=e}setWorkerLimit(e){this.pool=e}postMessage(e,t){return new Promise(a=>{const A=this._getIdleWorker();A!==-1?(this._initWorker(A),this.workerStatus|=1<<A,this.workersResolve[A]=a,this.workers[A].postMessage(e,t)):this.queue.push({resolve:a,msg:e,transfer:t})})}dispose(){this.workers.forEach(e=>e.terminate()),this.workersResolve.length=0,this.workers.length=0,this.queue.length=0,this.workerStatus=0}}const fa=9,ua=15,Ia=16,pa=22,Ba=37,ma=43,Ca=76,Ea=83,Qa=97,ya=100,wa=103,xa=109,ka=165,Da=166,Rt=1000066e3;class vA{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 ze{constructor(e,t,a,A){this._dataView=void 0,this._littleEndian=void 0,this._offset=void 0,this._dataView=new DataView(e.buffer,e.byteOffset+t,a),this._littleEndian=A,this._offset=0}_nextUint8(){const e=this._dataView.getUint8(this._offset);return this._offset+=1,e}_nextUint16(){const e=this._dataView.getUint16(this._offset,this._littleEndian);return this._offset+=2,e}_nextUint32(){const e=this._dataView.getUint32(this._offset,this._littleEndian);return this._offset+=4,e}_nextUint64(){const e=this._dataView.getUint32(this._offset,this._littleEndian)+4294967296*this._dataView.getUint32(this._offset+4,this._littleEndian);return this._offset+=8,e}_nextInt32(){const e=this._dataView.getInt32(this._offset,this._littleEndian);return this._offset+=4,e}_nextUint8Array(e){const t=new Uint8Array(this._dataView.buffer,this._dataView.byteOffset+this._offset,e);return this._offset+=e,t}_skip(e){return this._offset+=e,this}_scan(e,t){t===void 0&&(t=0);const a=this._offset;let A=0;for(;this._dataView.getUint8(this._offset)!==t&&A<e;)A++,this._offset++;return A<e&&this._offset++,new Uint8Array(this._dataView.buffer,this._dataView.byteOffset+a,A)}}const ee=[171,75,84,88,32,50,48,187,13,10,26,10];function Ht(n){return new TextDecoder().decode(n)}for(var ja={},LA={byteLength:function(n){var e=Jt(n),t=e[0],a=e[1];return 3*(t+a)/4-a},toByteArray:function(n){var e,t,a=Jt(n),A=a[0],r=a[1],i=new UA(function(h,g,f){return 3*(g+f)/4-f}(0,A,r)),o=0,l=r>0?A-4:A;for(t=0;t<l;t+=4)e=se[n.charCodeAt(t)]<<18|se[n.charCodeAt(t+1)]<<12|se[n.charCodeAt(t+2)]<<6|se[n.charCodeAt(t+3)],i[o++]=e>>16&255,i[o++]=e>>8&255,i[o++]=255&e;return r===2&&(e=se[n.charCodeAt(t)]<<2|se[n.charCodeAt(t+1)]>>4,i[o++]=255&e),r===1&&(e=se[n.charCodeAt(t)]<<10|se[n.charCodeAt(t+1)]<<4|se[n.charCodeAt(t+2)]>>2,i[o++]=e>>8&255,i[o++]=255&e),i},fromByteArray:function(n){for(var e,t=n.length,a=t%3,A=[],r=16383,i=0,o=t-a;i<o;i+=r)A.push(GA(n,i,i+r>o?o:i+r));return a===1?(e=n[t-1],A.push(ge[e>>2]+ge[e<<4&63]+"==")):a===2&&(e=(n[t-2]<<8)+n[t-1],A.push(ge[e>>10]+ge[e>>4&63]+ge[e<<2&63]+"=")),A.join("")}},ge=[],se=[],UA=typeof Uint8Array<"u"?Uint8Array:Array,qt="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Pe=0;Pe<64;++Pe)ge[Pe]=qt[Pe],se[qt.charCodeAt(Pe)]=Pe;function Jt(n){var e=n.length;if(e%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var t=n.indexOf("=");return t===-1&&(t=e),[t,t===e?0:4-t%4]}function GA(n,e,t){for(var a,A,r=[],i=e;i<t;i+=3)a=(n[i]<<16&16711680)+(n[i+1]<<8&65280)+(255&n[i+2]),r.push(ge[(A=a)>>18&63]+ge[A>>12&63]+ge[A>>6&63]+ge[63&A]);return r.join("")}se[45]=62,se[95]=63;var dt={};/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */let ht,me,kt;dt.read=function(n,e,t,a,A){var r,i,o=8*A-a-1,l=(1<<o)-1,h=l>>1,g=-7,f=t?A-1:0,u=t?-1:1,I=n[e+f];for(f+=u,r=I&(1<<-g)-1,I>>=-g,g+=o;g>0;r=256*r+n[e+f],f+=u,g-=8);for(i=r&(1<<-g)-1,r>>=-g,g+=a;g>0;i=256*i+n[e+f],f+=u,g-=8);if(r===0)r=1-h;else{if(r===l)return i?NaN:1/0*(I?-1:1);i+=Math.pow(2,a),r-=h}return(I?-1:1)*i*Math.pow(2,r-a)},dt.write=function(n,e,t,a,A,r){var i,o,l,h=8*r-A-1,g=(1<<h)-1,f=g>>1,u=A===23?Math.pow(2,-24)-Math.pow(2,-77):0,I=a?0:r-1,p=a?1:-1,B=e<0||e===0&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(o=isNaN(e)?1:0,i=g):(i=Math.floor(Math.log(e)/Math.LN2),e*(l=Math.pow(2,-i))<1&&(i--,l*=2),(e+=i+f>=1?u/l:u*Math.pow(2,1-f))*l>=2&&(i++,l/=2),i+f>=g?(o=0,i=g):i+f>=1?(o=(e*l-1)*Math.pow(2,A),i+=f):(o=e*Math.pow(2,f-1)*Math.pow(2,A),i=0));A>=8;n[t+I]=255&o,I+=p,o/=256,A-=8);for(i=i<<A|o,h+=A;h>0;n[t+I]=255&i,I+=p,i/=256,h-=8);n[t+I-p]|=128*B},function(n){const e=LA,t=dt,a=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;n.Buffer=i,n.SlowBuffer=function(s){return+s!=s&&(s=0),i.alloc(+s)},n.INSPECT_MAX_BYTES=50;const A=2147483647;function r(s){if(s>A)throw new RangeError('The value "'+s+'" is invalid for option "size"');const c=new Uint8Array(s);return Object.setPrototypeOf(c,i.prototype),c}function i(s,c,d){if(typeof s=="number"){if(typeof c=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return h(s)}return o(s,c,d)}function o(s,c,d){if(typeof s=="string")return function(w,j){if(typeof j=="string"&&j!==""||(j="utf8"),!i.isEncoding(j))throw new TypeError("Unknown encoding: "+j);const U=0|I(w,j);let N=r(U);const q=N.write(w,j);return q!==U&&(N=N.slice(0,q)),N}(s,c);if(ArrayBuffer.isView(s))return function(w){if(W(w,Uint8Array)){const j=new Uint8Array(w);return f(j.buffer,j.byteOffset,j.byteLength)}return g(w)}(s);if(s==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof s);if(W(s,ArrayBuffer)||s&&W(s.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(W(s,SharedArrayBuffer)||s&&W(s.buffer,SharedArrayBuffer)))return f(s,c,d);if(typeof s=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');const C=s.valueOf&&s.valueOf();if(C!=null&&C!==s)return i.from(C,c,d);const y=function(w){if(i.isBuffer(w)){const j=0|u(w.length),U=r(j);return U.length===0||w.copy(U,0,0,j),U}if(w.length!==void 0)return typeof w.length!="number"||Ke(w.length)?r(0):g(w);if(w.type==="Buffer"&&Array.isArray(w.data))return g(w.data)}(s);if(y)return y;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof s[Symbol.toPrimitive]=="function")return i.from(s[Symbol.toPrimitive]("string"),c,d);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof s)}function l(s){if(typeof s!="number")throw new TypeError('"size" argument must be of type number');if(s<0)throw new RangeError('The value "'+s+'" is invalid for option "size"')}function h(s){return l(s),r(s<0?0:0|u(s))}function g(s){const c=s.length<0?0:0|u(s.length),d=r(c);for(let C=0;C<c;C+=1)d[C]=255&s[C];return d}function f(s,c,d){if(c<0||s.byteLength<c)throw new RangeError('"offset" is outside of buffer bounds');if(s.byteLength<c+(d||0))throw new RangeError('"length" is outside of buffer bounds');let C;return C=c===void 0&&d===void 0?new Uint8Array(s):d===void 0?new Uint8Array(s,c):new Uint8Array(s,c,d),Object.setPrototypeOf(C,i.prototype),C}function u(s){if(s>=A)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+A.toString(16)+" bytes");return 0|s}function I(s,c){if(i.isBuffer(s))return s.length;if(ArrayBuffer.isView(s)||W(s,ArrayBuffer))return s.byteLength;if(typeof s!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof s);const d=s.length,C=arguments.length>2&&arguments[2]===!0;if(!C&&d===0)return 0;let y=!1;for(;;)switch(c){case"ascii":case"latin1":case"binary":return d;case"utf8":case"utf-8":return Z(s).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*d;case"hex":return d>>>1;case"base64":return ue(s).length;default:if(y)return C?-1:Z(s).length;c=(""+c).toLowerCase(),y=!0}}function p(s,c,d){let C=!1;if((c===void 0||c<0)&&(c=0),c>this.length||((d===void 0||d>this.length)&&(d=this.length),d<=0)||(d>>>=0)<=(c>>>=0))return"";for(s||(s="utf8");;)switch(s){case"hex":return K(this,c,d);case"utf8":case"utf-8":return D(this,c,d);case"ascii":return v(this,c,d);case"latin1":case"binary":return L(this,c,d);case"base64":return F(this,c,d);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return te(this,c,d);default:if(C)throw new TypeError("Unknown encoding: "+s);s=(s+"").toLowerCase(),C=!0}}function B(s,c,d){const C=s[c];s[c]=s[d],s[d]=C}function m(s,c,d,C,y){if(s.length===0)return-1;if(typeof d=="string"?(C=d,d=0):d>2147483647?d=2147483647:d<-2147483648&&(d=-2147483648),Ke(d=+d)&&(d=y?0:s.length-1),d<0&&(d=s.length+d),d>=s.length){if(y)return-1;d=s.length-1}else if(d<0){if(!y)return-1;d=0}if(typeof c=="string"&&(c=i.from(c,C)),i.isBuffer(c))return c.length===0?-1:E(s,c,d,C,y);if(typeof c=="number")return c&=255,typeof Uint8Array.prototype.indexOf=="function"?y?Uint8Array.prototype.indexOf.call(s,c,d):Uint8Array.prototype.lastIndexOf.call(s,c,d):E(s,[c],d,C,y);throw new TypeError("val must be string, number or Buffer")}function E(s,c,d,C,y){let w,j=1,U=s.length,N=c.length;if(C!==void 0&&((C=String(C).toLowerCase())==="ucs2"||C==="ucs-2"||C==="utf16le"||C==="utf-16le")){if(s.length<2||c.length<2)return-1;j=2,U/=2,N/=2,d/=2}function q(_,V){return j===1?_[V]:_.readUInt16BE(V*j)}if(y){let _=-1;for(w=d;w<U;w++)if(q(s,w)===q(c,_===-1?0:w-_)){if(_===-1&&(_=w),w-_+1===N)return _*j}else _!==-1&&(w-=w-_),_=-1}else for(d+N>U&&(d=U-N),w=d;w>=0;w--){let _=!0;for(let V=0;V<N;V++)if(q(s,w+V)!==q(c,V)){_=!1;break}if(_)return w}return-1}function Q(s,c,d,C){d=Number(d)||0;const y=s.length-d;C?(C=Number(C))>y&&(C=y):C=y;const w=c.length;let j;for(C>w/2&&(C=w/2),j=0;j<C;++j){const U=parseInt(c.substr(2*j,2),16);if(Ke(U))return j;s[d+j]=U}return j}function k(s,c,d,C){return ce(Z(c,s.length-d),s,d,C)}function x(s,c,d,C){return ce(function(y){const w=[];for(let j=0;j<y.length;++j)w.push(255&y.charCodeAt(j));return w}(c),s,d,C)}function T(s,c,d,C){return ce(ue(c),s,d,C)}function S(s,c,d,C){return ce(function(y,w){let j,U,N;const q=[];for(let _=0;_<y.length&&!((w-=2)<0);++_)j=y.charCodeAt(_),U=j>>8,N=j%256,q.push(N),q.push(U);return q}(c,s.length-d),s,d,C)}function F(s,c,d){return c===0&&d===s.length?e.fromByteArray(s):e.fromByteArray(s.slice(c,d))}function D(s,c,d){d=Math.min(s.length,d);const C=[];let y=c;for(;y<d;){const w=s[y];let j=null,U=w>239?4:w>223?3:w>191?2:1;if(y+U<=d){let N,q,_,V;switch(U){case 1:w<128&&(j=w);break;case 2:N=s[y+1],(192&N)==128&&(V=(31&w)<<6|63&N,V>127&&(j=V));break;case 3:N=s[y+1],q=s[y+2],(192&N)==128&&(192&q)==128&&(V=(15&w)<<12|(63&N)<<6|63&q,V>2047&&(V<55296||V>57343)&&(j=V));break;case 4:N=s[y+1],q=s[y+2],_=s[y+3],(192&N)==128&&(192&q)==128&&(192&_)==128&&(V=(15&w)<<18|(63&N)<<12|(63&q)<<6|63&_,V>65535&&V<1114112&&(j=V))}}j===null?(j=65533,U=1):j>65535&&(j-=65536,C.push(j>>>10&1023|55296),j=56320|1023&j),C.push(j),y+=U}return function(w){const j=w.length;if(j<=M)return String.fromCharCode.apply(String,w);let U="",N=0;for(;N<j;)U+=String.fromCharCode.apply(String,w.slice(N,N+=M));return U}(C)}n.kMaxLength=A,i.TYPED_ARRAY_SUPPORT=function(){try{const s=new Uint8Array(1),c={foo:function(){return 42}};return Object.setPrototypeOf(c,Uint8Array.prototype),Object.setPrototypeOf(s,c),s.foo()===42}catch{return!1}}(),i.TYPED_ARRAY_SUPPORT||typeof console>"u"||typeof console.error!="function"||console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."),Object.defineProperty(i.prototype,"parent",{enumerable:!0,get:function(){if(i.isBuffer(this))return this.buffer}}),Object.defineProperty(i.prototype,"offset",{enumerable:!0,get:function(){if(i.isBuffer(this))return this.byteOffset}}),i.poolSize=8192,i.from=function(s,c,d){return o(s,c,d)},Object.setPrototypeOf(i.prototype,Uint8Array.prototype),Object.setPrototypeOf(i,Uint8Array),i.alloc=function(s,c,d){return function(C,y,w){return l(C),C<=0?r(C):y!==void 0?typeof w=="string"?r(C).fill(y,w):r(C).fill(y):r(C)}(s,c,d)},i.allocUnsafe=function(s){return h(s)},i.allocUnsafeSlow=function(s){return h(s)},i.isBuffer=function(s){return s!=null&&s._isBuffer===!0&&s!==i.prototype},i.compare=function(s,c){if(W(s,Uint8Array)&&(s=i.from(s,s.offset,s.byteLength)),W(c,Uint8Array)&&(c=i.from(c,c.offset,c.byteLength)),!i.isBuffer(s)||!i.isBuffer(c))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(s===c)return 0;let d=s.length,C=c.length;for(let y=0,w=Math.min(d,C);y<w;++y)if(s[y]!==c[y]){d=s[y],C=c[y];break}return d<C?-1:C<d?1:0},i.isEncoding=function(s){switch(String(s).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},i.concat=function(s,c){if(!Array.isArray(s))throw new TypeError('"list" argument must be an Array of Buffers');if(s.length===0)return i.alloc(0);let d;if(c===void 0)for(c=0,d=0;d<s.length;++d)c+=s[d].length;const C=i.allocUnsafe(c);let y=0;for(d=0;d<s.length;++d){let w=s[d];if(W(w,Uint8Array))y+w.length>C.length?(i.isBuffer(w)||(w=i.from(w)),w.copy(C,y)):Uint8Array.prototype.set.call(C,w,y);else{if(!i.isBuffer(w))throw new TypeError('"list" argument must be an Array of Buffers');w.copy(C,y)}y+=w.length}return C},i.byteLength=I,i.prototype._isBuffer=!0,i.prototype.swap16=function(){const s=this.length;if(s%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let c=0;c<s;c+=2)B(this,c,c+1);return this},i.prototype.swap32=function(){const s=this.length;if(s%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(let c=0;c<s;c+=4)B(this,c,c+3),B(this,c+1,c+2);return this},i.prototype.swap64=function(){const s=this.length;if(s%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(let c=0;c<s;c+=8)B(this,c,c+7),B(this,c+1,c+6),B(this,c+2,c+5),B(this,c+3,c+4);return this},i.prototype.toString=function(){const s=this.length;return s===0?"":arguments.length===0?D(this,0,s):p.apply(this,arguments)},i.prototype.toLocaleString=i.prototype.toString,i.prototype.equals=function(s){if(!i.isBuffer(s))throw new TypeError("Argument must be a Buffer");return this===s||i.compare(this,s)===0},i.prototype.inspect=function(){let s="";const c=n.INSPECT_MAX_BYTES;return s=this.toString("hex",0,c).replace(/(.{2})/g,"$1 ").trim(),this.length>c&&(s+=" ... "),"<Buffer "+s+">"},a&&(i.prototype[a]=i.prototype.inspect),i.prototype.compare=function(s,c,d,C,y){if(W(s,Uint8Array)&&(s=i.from(s,s.offset,s.byteLength)),!i.isBuffer(s))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof s);if(c===void 0&&(c=0),d===void 0&&(d=s?s.length:0),C===void 0&&(C=0),y===void 0&&(y=this.length),c<0||d>s.length||C<0||y>this.length)throw new RangeError("out of range index");if(C>=y&&c>=d)return 0;if(C>=y)return-1;if(c>=d)return 1;if(this===s)return 0;let w=(y>>>=0)-(C>>>=0),j=(d>>>=0)-(c>>>=0);const U=Math.min(w,j),N=this.slice(C,y),q=s.slice(c,d);for(let _=0;_<U;++_)if(N[_]!==q[_]){w=N[_],j=q[_];break}return w<j?-1:j<w?1:0},i.prototype.includes=function(s,c,d){return this.indexOf(s,c,d)!==-1},i.prototype.indexOf=function(s,c,d){return m(this,s,c,d,!0)},i.prototype.lastIndexOf=function(s,c,d){return m(this,s,c,d,!1)},i.prototype.write=function(s,c,d,C){if(c===void 0)C="utf8",d=this.length,c=0;else if(d===void 0&&typeof c=="string")C=c,d=this.length,c=0;else{if(!isFinite(c))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");c>>>=0,isFinite(d)?(d>>>=0,C===void 0&&(C="utf8")):(C=d,d=void 0)}const y=this.length-c;if((d===void 0||d>y)&&(d=y),s.length>0&&(d<0||c<0)||c>this.length)throw new RangeError("Attempt to write outside buffer bounds");C||(C="utf8");let w=!1;for(;;)switch(C){case"hex":return Q(this,s,c,d);case"utf8":case"utf-8":return k(this,s,c,d);case"ascii":case"latin1":case"binary":return x(this,s,c,d);case"base64":return T(this,s,c,d);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return S(this,s,c,d);default:if(w)throw new TypeError("Unknown encoding: "+C);C=(""+C).toLowerCase(),w=!0}},i.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};const M=4096;function v(s,c,d){let C="";d=Math.min(s.length,d);for(let y=c;y<d;++y)C+=String.fromCharCode(127&s[y]);return C}function L(s,c,d){let C="";d=Math.min(s.length,d);for(let y=c;y<d;++y)C+=String.fromCharCode(s[y]);return C}function K(s,c,d){const C=s.length;(!c||c<0)&&(c=0),(!d||d<0||d>C)&&(d=C);let y="";for(let w=c;w<d;++w)y+=Ua[s[w]];return y}function te(s,c,d){const C=s.slice(c,d);let y="";for(let w=0;w<C.length-1;w+=2)y+=String.fromCharCode(C[w]+256*C[w+1]);return y}function H(s,c,d){if(s%1!=0||s<0)throw new RangeError("offset is not uint");if(s+c>d)throw new RangeError("Trying to access beyond buffer length")}function z(s,c,d,C,y,w){if(!i.isBuffer(s))throw new TypeError('"buffer" argument must be a Buffer instance');if(c>y||c<w)throw new RangeError('"value" argument is out of bounds');if(d+C>s.length)throw new RangeError("Index out of range")}function Fe(s,c,d,C,y){P(c,C,y,s,d,7);let w=Number(c&BigInt(4294967295));s[d++]=w,w>>=8,s[d++]=w,w>>=8,s[d++]=w,w>>=8,s[d++]=w;let j=Number(c>>BigInt(32)&BigInt(4294967295));return s[d++]=j,j>>=8,s[d++]=j,j>>=8,s[d++]=j,j>>=8,s[d++]=j,d}function xe(s,c,d,C,y){P(c,C,y,s,d,7);let w=Number(c&BigInt(4294967295));s[d+7]=w,w>>=8,s[d+6]=w,w>>=8,s[d+5]=w,w>>=8,s[d+4]=w;let j=Number(c>>BigInt(32)&BigInt(4294967295));return s[d+3]=j,j>>=8,s[d+2]=j,j>>=8,s[d+1]=j,j>>=8,s[d]=j,d+8}function ke(s,c,d,C,y,w){if(d+C>s.length)throw new RangeError("Index out of range");if(d<0)throw new RangeError("Index out of range")}function De(s,c,d,C,y){return c=+c,d>>>=0,y||ke(s,0,d,4),t.write(s,c,d,C,23,4),d+4}function Se(s,c,d,C,y){return c=+c,d>>>=0,y||ke(s,0,d,8),t.write(s,c,d,C,52,8),d+8}i.prototype.slice=function(s,c){const d=this.length;(s=~~s)<0?(s+=d)<0&&(s=0):s>d&&(s=d),(c=c===void 0?d:~~c)<0?(c+=d)<0&&(c=0):c>d&&(c=d),c<s&&(c=s);const C=this.subarray(s,c);return Object.setPrototypeOf(C,i.prototype),C},i.prototype.readUintLE=i.prototype.readUIntLE=function(s,c,d){s>>>=0,c>>>=0,d||H(s,c,this.length);let C=this[s],y=1,w=0;for(;++w<c&&(y*=256);)C+=this[s+w]*y;return C},i.prototype.readUintBE=i.prototype.readUIntBE=function(s,c,d){s>>>=0,c>>>=0,d||H(s,c,this.length);let C=this[s+--c],y=1;for(;c>0&&(y*=256);)C+=this[s+--c]*y;return C},i.prototype.readUint8=i.prototype.readUInt8=function(s,c){return s>>>=0,c||H(s,1,this.length),this[s]},i.prototype.readUint16LE=i.prototype.readUInt16LE=function(s,c){return s>>>=0,c||H(s,2,this.length),this[s]|this[s+1]<<8},i.prototype.readUint16BE=i.prototype.readUInt16BE=function(s,c){return s>>>=0,c||H(s,2,this.length),this[s]<<8|this[s+1]},i.prototype.readUint32LE=i.prototype.readUInt32LE=function(s,c){return s>>>=0,c||H(s,4,this.length),(this[s]|this[s+1]<<8|this[s+2]<<16)+16777216*this[s+3]},i.prototype.readUint32BE=i.prototype.readUInt32BE=function(s,c){return s>>>=0,c||H(s,4,this.length),16777216*this[s]+(this[s+1]<<16|this[s+2]<<8|this[s+3])},i.prototype.readBigUInt64LE=je(function(s){O(s>>>=0,"offset");const c=this[s],d=this[s+7];c!==void 0&&d!==void 0||Y(s,this.length-8);const C=c+256*this[++s]+65536*this[++s]+this[++s]*2**24,y=this[++s]+256*this[++s]+65536*this[++s]+d*2**24;return BigInt(C)+(BigInt(y)<<BigInt(32))}),i.prototype.readBigUInt64BE=je(function(s){O(s>>>=0,"offset");const c=this[s],d=this[s+7];c!==void 0&&d!==void 0||Y(s,this.length-8);const C=c*2**24+65536*this[++s]+256*this[++s]+this[++s],y=this[++s]*2**24+65536*this[++s]+256*this[++s]+d;return(BigInt(C)<<BigInt(32))+BigInt(y)}),i.prototype.readIntLE=function(s,c,d){s>>>=0,c>>>=0,d||H(s,c,this.length);let C=this[s],y=1,w=0;for(;++w<c&&(y*=256);)C+=this[s+w]*y;return y*=128,C>=y&&(C-=Math.pow(2,8*c)),C},i.prototype.readIntBE=function(s,c,d){s>>>=0,c>>>=0,d||H(s,c,this.length);let C=c,y=1,w=this[s+--C];for(;C>0&&(y*=256);)w+=this[s+--C]*y;return y*=128,w>=y&&(w-=Math.pow(2,8*c)),w},i.prototype.readInt8=function(s,c){return s>>>=0,c||H(s,1,this.length),128&this[s]?-1*(255-this[s]+1):this[s]},i.prototype.readInt16LE=function(s,c){s>>>=0,c||H(s,2,this.length);const d=this[s]|this[s+1]<<8;return 32768&d?4294901760|d:d},i.prototype.readInt16BE=function(s,c){s>>>=0,c||H(s,2,this.length);const d=this[s+1]|this[s]<<8;return 32768&d?4294901760|d:d},i.prototype.readInt32LE=function(s,c){return s>>>=0,c||H(s,4,this.length),this[s]|this[s+1]<<8|this[s+2]<<16|this[s+3]<<24},i.prototype.readInt32BE=function(s,c){return s>>>=0,c||H(s,4,this.length),this[s]<<24|this[s+1]<<16|this[s+2]<<8|this[s+3]},i.prototype.readBigInt64LE=je(function(s){O(s>>>=0,"offset");const c=this[s],d=this[s+7];c!==void 0&&d!==void 0||Y(s,this.length-8);const C=this[s+4]+256*this[s+5]+65536*this[s+6]+(d<<24);return(BigInt(C)<<BigInt(32))+BigInt(c+256*this[++s]+65536*this[++s]+this[++s]*2**24)}),i.prototype.readBigInt64BE=je(function(s){O(s>>>=0,"offset");const c=this[s],d=this[s+7];c!==void 0&&d!==void 0||Y(s,this.length-8);const C=(c<<24)+65536*this[++s]+256*this[++s]+this[++s];return(BigInt(C)<<BigInt(32))+BigInt(this[++s]*2**24+65536*this[++s]+256*this[++s]+d)}),i.prototype.readFloatLE=function(s,c){return s>>>=0,c||H(s,4,this.length),t.read(this,s,!0,23,4)},i.prototype.readFloatBE=function(s,c){return s>>>=0,c||H(s,4,this.length),t.read(this,s,!1,23,4)},i.prototype.readDoubleLE=function(s,c){return s>>>=0,c||H(s,8,this.length),t.read(this,s,!0,52,8)},i.prototype.readDoubleBE=function(s,c){return s>>>=0,c||H(s,8,this.length),t.read(this,s,!1,52,8)},i.prototype.writeUintLE=i.prototype.writeUIntLE=function(s,c,d,C){s=+s,c>>>=0,d>>>=0,!C&&z(this,s,c,d,Math.pow(2,8*d)-1,0);let y=1,w=0;for(this[c]=255&s;++w<d&&(y*=256);)this[c+w]=s/y&255;return c+d},i.prototype.writeUintBE=i.prototype.writeUIntBE=function(s,c,d,C){s=+s,c>>>=0,d>>>=0,!C&&z(this,s,c,d,Math.pow(2,8*d)-1,0);let y=d-1,w=1;for(this[c+y]=255&s;--y>=0&&(w*=256);)this[c+y]=s/w&255;return c+d},i.prototype.writeUint8=i.prototype.writeUInt8=function(s,c,d){return s=+s,c>>>=0,d||z(this,s,c,1,255,0),this[c]=255&s,c+1},i.prototype.writeUint16LE=i.prototype.writeUInt16LE=function(s,c,d){return s=+s,c>>>=0,d||z(this,s,c,2,65535,0),this[c]=255&s,this[c+1]=s>>>8,c+2},i.prototype.writeUint16BE=i.prototype.writeUInt16BE=function(s,c,d){return s=+s,c>>>=0,d||z(this,s,c,2,65535,0),this[c]=s>>>8,this[c+1]=255&s,c+2},i.prototype.writeUint32LE=i.prototype.writeUInt32LE=function(s,c,d){return s=+s,c>>>=0,d||z(this,s,c,4,4294967295,0),this[c+3]=s>>>24,this[c+2]=s>>>16,this[c+1]=s>>>8,this[c]=255&s,c+4},i.prototype.writeUint32BE=i.prototype.writeUInt32BE=function(s,c,d){return s=+s,c>>>=0,d||z(this,s,c,4,4294967295,0),this[c]=s>>>24,this[c+1]=s>>>16,this[c+2]=s>>>8,this[c+3]=255&s,c+4},i.prototype.writeBigUInt64LE=je(function(s,c=0){return Fe(this,s,c,BigInt(0),BigInt("0xffffffffffffffff"))}),i.prototype.writeBigUInt64BE=je(function(s,c=0){return xe(this,s,c,BigInt(0),BigInt("0xffffffffffffffff"))}),i.prototype.writeIntLE=function(s,c,d,C){if(s=+s,c>>>=0,!C){const U=Math.pow(2,8*d-1);z(this,s,c,d,U-1,-U)}let y=0,w=1,j=0;for(this[c]=255&s;++y<d&&(w*=256);)s<0&&j===0&&this[c+y-1]!==0&&(j=1),this[c+y]=(s/w|0)-j&255;return c+d},i.prototype.writeIntBE=function(s,c,d,C){if(s=+s,c>>>=0,!C){const U=Math.pow(2,8*d-1);z(this,s,c,d,U-1,-U)}let y=d-1,w=1,j=0;for(this[c+y]=255&s;--y>=0&&(w*=256);)s<0&&j===0&&this[c+y+1]!==0&&(j=1),this[c+y]=(s/w|0)-j&255;return c+d},i.prototype.writeInt8=function(s,c,d){return s=+s,c>>>=0,d||z(this,s,c,1,127,-128),s<0&&(s=255+s+1),this[c]=255&s,c+1},i.prototype.writeInt16LE=function(s,c,d){return s=+s,c>>>=0,d||z(this,s,c,2,32767,-32768),this[c]=255&s,this[c+1]=s>>>8,c+2},i.prototype.writeInt16BE=function(s,c,d){return s=+s,c>>>=0,d||z(this,s,c,2,32767,-32768),this[c]=s>>>8,this[c+1]=255&s,c+2},i.prototype.writeInt32LE=function(s,c,d){return s=+s,c>>>=0,d||z(this,s,c,4,2147483647,-2147483648),this[c]=255&s,this[c+1]=s>>>8,this[c+2]=s>>>16,this[c+3]=s>>>24,c+4},i.prototype.writeInt32BE=function(s,c,d){return s=+s,c>>>=0,d||z(this,s,c,4,2147483647,-2147483648),s<0&&(s=4294967295+s+1),this[c]=s>>>24,this[c+1]=s>>>16,this[c+2]=s>>>8,this[c+3]=255&s,c+4},i.prototype.writeBigInt64LE=je(function(s,c=0){return Fe(this,s,c,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))}),i.prototype.writeBigInt64BE=je(function(s,c=0){return xe(this,s,c,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))}),i.prototype.writeFloatLE=function(s,c,d){return De(this,s,c,!0,d)},i.prototype.writeFloatBE=function(s,c,d){return De(this,s,c,!1,d)},i.prototype.writeDoubleLE=function(s,c,d){return Se(this,s,c,!0,d)},i.prototype.writeDoubleBE=function(s,c,d){return Se(this,s,c,!1,d)},i.prototype.copy=function(s,c,d,C){if(!i.isBuffer(s))throw new TypeError("argument should be a Buffer");if(d||(d=0),C||C===0||(C=this.length),c>=s.length&&(c=s.length),c||(c=0),C>0&&C<d&&(C=d),C===d||s.length===0||this.length===0)return 0;if(c<0)throw new RangeError("targetStart out of bounds");if(d<0||d>=this.length)throw new RangeError("Index out of range");if(C<0)throw new RangeError("sourceEnd out of bounds");C>this.length&&(C=this.length),s.length-c<C-d&&(C=s.length-c+d);const y=C-d;return this===s&&typeof Uint8Array.prototype.copyWithin=="function"?this.copyWithin(c,d,C):Uint8Array.prototype.set.call(s,this.subarray(d,C),c),y},i.prototype.fill=function(s,c,d,C){if(typeof s=="string"){if(typeof c=="string"?(C=c,c=0,d=this.length):typeof d=="string"&&(C=d,d=this.length),C!==void 0&&typeof C!="string")throw new TypeError("encoding must be a string");if(typeof C=="string"&&!i.isEncoding(C))throw new TypeError("Unknown encoding: "+C);if(s.length===1){const w=s.charCodeAt(0);(C==="utf8"&&w<128||C==="latin1")&&(s=w)}}else typeof s=="number"?s&=255:typeof s=="boolean"&&(s=Number(s));if(c<0||this.length<c||this.length<d)throw new RangeError("Out of range index");if(d<=c)return this;let y;if(c>>>=0,d=d===void 0?this.length:d>>>0,s||(s=0),typeof s=="number")for(y=c;y<d;++y)this[y]=s;else{const w=i.isBuffer(s)?s:i.from(s,C),j=w.length;if(j===0)throw new TypeError('The value "'+s+'" is invalid for argument "value"');for(y=0;y<d-c;++y)this[y+c]=w[y%j]}return this};const oe={};function ae(s,c,d){oe[s]=class extends d{constructor(){super(),Object.defineProperty(this,"message",{value:c.apply(this,arguments),writable:!0,configurable:!0}),this.name=`${this.name} [${s}]`,this.stack,delete this.name}get code(){return s}set code(C){Object.defineProperty(this,"code",{configurable:!0,enumerable:!0,value:C,writable:!0})}toString(){return`${this.name} [${s}]: ${this.message}`}}}function fe(s){let c="",d=s.length;const C=s[0]==="-"?1:0;for(;d>=C+4;d-=3)c=`_${s.slice(d-3,d)}${c}`;return`${s.slice(0,d)}${c}`}function P(s,c,d,C,y,w){if(s>d||s<c){const j=typeof c=="bigint"?"n":"";let U;throw U=c===0||c===BigInt(0)?`>= 0${j} and < 2${j} ** ${8*(w+1)}${j}`:`>= -(2${j} ** ${8*(w+1)-1}${j}) and < 2 ** ${8*(w+1)-1}${j}`,new oe.ERR_OUT_OF_RANGE("value",U,s)}(function(j,U,N){O(U,"offset"),j[U]!==void 0&&j[U+N]!==void 0||Y(U,j.length-(N+1))})(C,y,w)}function O(s,c){if(typeof s!="number")throw new oe.ERR_INVALID_ARG_TYPE(c,"number",s)}function Y(s,c,d){throw Math.floor(s)!==s?(O(s,d),new oe.ERR_OUT_OF_RANGE("offset","an integer",s)):c<0?new oe.ERR_BUFFER_OUT_OF_BOUNDS:new oe.ERR_OUT_OF_RANGE("offset",`>= 0 and <= ${c}`,s)}ae("ERR_BUFFER_OUT_OF_BOUNDS",function(s){return s?`${s} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"},RangeError),ae("ERR_INVALID_ARG_TYPE",function(s,c){return`The "${s}" argument must be of type number. Received type ${typeof c}`},TypeError),ae("ERR_OUT_OF_RANGE",function(s,c,d){let C=`The value of "${s}" is out of range.`,y=d;return Number.isInteger(d)&&Math.abs(d)>2**32?y=fe(String(d)):typeof d=="bigint"&&(y=String(d),(d>BigInt(2)**BigInt(32)||d<-(BigInt(2)**BigInt(32)))&&(y=fe(y)),y+="n"),C+=` It must be ${c}. Received ${y}`,C},RangeError);const re=/[^+/0-9A-Za-z-_]/g;function Z(s,c){let d;c=c||1/0;const C=s.length;let y=null;const w=[];for(let j=0;j<C;++j){if(d=s.charCodeAt(j),d>55295&&d<57344){if(!y){if(d>56319){(c-=3)>-1&&w.push(239,191,189);continue}if(j+1===C){(c-=3)>-1&&w.push(239,191,189);continue}y=d;continue}if(d<56320){(c-=3)>-1&&w.push(239,191,189),y=d;continue}d=65536+(y-55296<<10|d-56320)}else y&&(c-=3)>-1&&w.push(239,191,189);if(y=null,d<128){if((c-=1)<0)break;w.push(d)}else if(d<2048){if((c-=2)<0)break;w.push(d>>6|192,63&d|128)}else if(d<65536){if((c-=3)<0)break;w.push(d>>12|224,d>>6&63|128,63&d|128)}else{if(!(d<1114112))throw new Error("Invalid code point");if((c-=4)<0)break;w.push(d>>18|240,d>>12&63|128,d>>6&63|128,63&d|128)}}return w}function ue(s){return e.toByteArray(function(c){if((c=(c=c.split("=")[0]).trim().replace(re,"")).length<2)return"";for(;c.length%4!=0;)c+="=";return c}(s))}function ce(s,c,d,C){let y;for(y=0;y<C&&!(y+d>=c.length||y>=s.length);++y)c[y+d]=s[y];return y}function W(s,c){return s instanceof c||s!=null&&s.constructor!=null&&s.constructor.name!=null&&s.constructor.name===c.name}function Ke(s){return s!=s}const Ua=function(){const s="0123456789abcdef",c=new Array(256);for(let d=0;d<16;++d){const C=16*d;for(let y=0;y<16;++y)c[C+y]=s[d]+s[y]}return c}();function je(s){return typeof BigInt>"u"?Ga:s}function Ga(){throw new Error("BigInt not supported")}}(ja);const lt={env:{emscripten_notify_memory_growth:function(n){kt=new Uint8Array(me.exports.memory.buffer)}}};class NA{init(){return ht||(ht=typeof fetch<"u"?fetch("data:application/wasm;base64,"+Kt).then(e=>e.arrayBuffer()).then(e=>WebAssembly.instantiate(e,lt)).then(this._init):WebAssembly.instantiate(ja.Buffer.from(Kt,"base64"),lt).then(this._init),ht)}_init(e){me=e.instance,lt.env.emscripten_notify_memory_growth(0)}decode(e,t=0){if(!me)throw new Error("ZSTDDecoder: Await .init() before decoding.");const a=e.byteLength,A=me.exports.malloc(a);kt.set(e,A),t=t||Number(me.exports.ZSTD_findDecompressedSize(A,a));const r=me.exports.malloc(t),i=me.exports.ZSTD_decompress(r,t,A,a),o=kt.slice(r,r+i);return me.exports.free(A),me.exports.free(r),o}}const Kt="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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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",bt=new WeakMap;let gt,ft=0;class ie extends b.Loader{constructor(e){super(e),this.transcoderPath="",this.transcoderBinary=null,this.transcoderPending=null,this.workerPool=new SA,this.workerSourceURL="",this.workerConfig=null,typeof MSC_TRANSCODER<"u"&&console.warn('THREE.KTX2Loader: Please update to latest "basis_transcoder". "msc_basis_transcoder" is no longer supported in three.js r125+.')}setTranscoderPath(e){return this.transcoderPath=e,this}setWorkerLimit(e){return this.workerPool.setWorkerLimit(e),this}async detectSupportAsync(e){return this.workerConfig={astcSupported:await e.hasFeatureAsync("texture-compression-astc"),astcHDRSupported:!1,etc1Supported:await e.hasFeatureAsync("texture-compression-etc1"),etc2Supported:await e.hasFeatureAsync("texture-compression-etc2"),dxtSupported:await e.hasFeatureAsync("texture-compression-bc"),bptcSupported:await e.hasFeatureAsync("texture-compression-bptc"),pvrtcSupported:await e.hasFeatureAsync("texture-compression-pvrtc")},this}detectSupport(e){return e.isWebGPURenderer===!0?this.workerConfig={astcSupported:e.hasFeature("texture-compression-astc"),astcHDRSupported:!1,etc1Supported:e.hasFeature("texture-compression-etc1"),etc2Supported:e.hasFeature("texture-compression-etc2"),dxtSupported:e.hasFeature("texture-compression-bc"),bptcSupported:e.hasFeature("texture-compression-bptc"),pvrtcSupported:e.hasFeature("texture-compression-pvrtc")}:this.workerConfig={astcSupported:e.extensions.has("WEBGL_compressed_texture_astc"),astcHDRSupported:e.extensions.has("WEBGL_compressed_texture_astc")&&e.extensions.get("WEBGL_compressed_texture_astc").getSupportedProfiles().includes("hdr"),etc1Supported:e.extensions.has("WEBGL_compressed_texture_etc1"),etc2Supported:e.extensions.has("WEBGL_compressed_texture_etc"),dxtSupported:e.extensions.has("WEBGL_compressed_texture_s3tc"),bptcSupported:e.extensions.has("EXT_texture_compression_bptc"),pvrtcSupported:e.extensions.has("WEBGL_compressed_texture_pvrtc")||e.extensions.has("WEBKIT_WEBGL_compressed_texture_pvrtc")},this}init(){if(!this.transcoderPending){const e=new b.FileLoader(this.manager);e.setPath(this.transcoderPath),e.setWithCredentials(this.withCredentials);const t=e.loadAsync("basis_transcoder.js"),a=new b.FileLoader(this.manager);a.setPath(this.transcoderPath),a.setResponseType("arraybuffer"),a.setWithCredentials(this.withCredentials);const A=a.loadAsync("basis_transcoder.wasm");this.transcoderPending=Promise.all([t,A]).then(([r,i])=>{const o=ie.BasisWorker.toString(),l=["/* constants */","let _EngineFormat = "+JSON.stringify(ie.EngineFormat),"let _EngineType = "+JSON.stringify(ie.EngineType),"let _TranscoderFormat = "+JSON.stringify(ie.TranscoderFormat),"let _BasisFormat = "+JSON.stringify(ie.BasisFormat),"/* basis_transcoder.js */",r,"/* worker */",o.substring(o.indexOf("{")+1,o.lastIndexOf("}"))].join(`
20
- `);this.workerSourceURL=URL.createObjectURL(new Blob([l])),this.transcoderBinary=i,this.workerPool.setWorkerCreator(()=>{const h=new Worker(this.workerSourceURL),g=this.transcoderBinary.slice(0);return h.postMessage({type:"init",config:this.workerConfig,transcoderBinary:g},[g]),h})}),ft>0&&console.warn("THREE.KTX2Loader: Multiple active KTX2 loaders may cause performance issues. Use a single KTX2Loader instance, or call .dispose() on old instances."),ft++}return this.transcoderPending}load(e,t,a,A){if(this.workerConfig===null)throw new Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");const r=new b.FileLoader(this.manager);r.setResponseType("arraybuffer"),r.setWithCredentials(this.withCredentials),r.load(e,i=>{this.parse(i,t,A)},a,A)}parse(e,t,a){if(this.workerConfig===null)throw new Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");if(bt.has(e))return bt.get(e).promise.then(t).catch(a);this._createTexture(e).then(A=>t?t(A):null).catch(a)}_createTextureFrom(e,t){const{type:a,error:A,data:{faces:r,width:i,height:o,format:l,type:h,dfdFlags:g}}=e;if(a==="error")return Promise.reject(A);let f;if(t.faceCount===6)f=new b.CompressedCubeTexture(r,l,h);else{const u=r[0].mipmaps;f=t.layerCount>1?new b.CompressedArrayTexture(u,i,o,t.layerCount,l,h):new b.CompressedTexture(u,i,o,l,h)}return f.minFilter=r[0].mipmaps.length===1?b.LinearFilter:b.LinearMipmapLinearFilter,f.magFilter=b.LinearFilter,f.generateMipmaps=!1,f.needsUpdate=!0,f.colorSpace=zt(t),f.premultiplyAlpha=!!(1&g),f}async _createTexture(e,t={}){const a=function(o){const l=new Uint8Array(o.buffer,o.byteOffset,ee.length);if(l[0]!==ee[0]||l[1]!==ee[1]||l[2]!==ee[2]||l[3]!==ee[3]||l[4]!==ee[4]||l[5]!==ee[5]||l[6]!==ee[6]||l[7]!==ee[7]||l[8]!==ee[8]||l[9]!==ee[9]||l[10]!==ee[10]||l[11]!==ee[11])throw new Error("Missing KTX 2.0 identifier.");const h=new vA,g=17*Uint32Array.BYTES_PER_ELEMENT,f=new ze(o,ee.length,g,!0);h.vkFormat=f._nextUint32(),h.typeSize=f._nextUint32(),h.pixelWidth=f._nextUint32(),h.pixelHeight=f._nextUint32(),h.pixelDepth=f._nextUint32(),h.layerCount=f._nextUint32(),h.faceCount=f._nextUint32();const u=f._nextUint32();h.supercompressionScheme=f._nextUint32();const I=f._nextUint32(),p=f._nextUint32(),B=f._nextUint32(),m=f._nextUint32(),E=f._nextUint64(),Q=f._nextUint64(),k=new ze(o,ee.length+g,3*u*8,!0);for(let P=0;P<u;P++)h.levels.push({levelData:new Uint8Array(o.buffer,o.byteOffset+k._nextUint64(),k._nextUint64()),uncompressedByteLength:k._nextUint64()});const x=new ze(o,I,p,!0),T={vendorId:x._skip(4)._nextUint16(),descriptorType:x._nextUint16(),versionNumber:x._nextUint16(),descriptorBlockSize:x._nextUint16(),colorModel:x._nextUint8(),colorPrimaries:x._nextUint8(),transferFunction:x._nextUint8(),flags:x._nextUint8(),texelBlockDimension:[x._nextUint8(),x._nextUint8(),x._nextUint8(),x._nextUint8()],bytesPlane:[x._nextUint8(),x._nextUint8(),x._nextUint8(),x._nextUint8(),x._nextUint8(),x._nextUint8(),x._nextUint8(),x._nextUint8()],samples:[]},S=(T.descriptorBlockSize/4-6)/4;for(let P=0;P<S;P++){const O={bitOffset:x._nextUint16(),bitLength:x._nextUint8(),channelType:x._nextUint8(),samplePosition:[x._nextUint8(),x._nextUint8(),x._nextUint8(),x._nextUint8()],sampleLower:-1/0,sampleUpper:1/0};64&O.channelType?(O.sampleLower=x._nextInt32(),O.sampleUpper=x._nextInt32()):(O.sampleLower=x._nextUint32(),O.sampleUpper=x._nextUint32()),T.samples[P]=O}h.dataFormatDescriptor.length=0,h.dataFormatDescriptor.push(T);const F=new ze(o,B,m,!0);for(;F._offset<m;){const P=F._nextUint32(),O=F._scan(P),Y=Ht(O);if(h.keyValue[Y]=F._nextUint8Array(P-O.byteLength-1),Y.match(/^ktx/i)){const re=Ht(h.keyValue[Y]);h.keyValue[Y]=re.substring(0,re.lastIndexOf("\0"))}F._skip(P%4?4-P%4:0)}if(Q<=0)return h;const D=new ze(o,E,Q,!0),M=D._nextUint16(),v=D._nextUint16(),L=D._nextUint32(),K=D._nextUint32(),te=D._nextUint32(),H=D._nextUint32(),z=[];for(let P=0;P<u;P++)z.push({imageFlags:D._nextUint32(),rgbSliceByteOffset:D._nextUint32(),rgbSliceByteLength:D._nextUint32(),alphaSliceByteOffset:D._nextUint32(),alphaSliceByteLength:D._nextUint32()});const Fe=E+D._offset,xe=Fe+L,ke=xe+K,De=ke+te,Se=new Uint8Array(o.buffer,o.byteOffset+Fe,L),oe=new Uint8Array(o.buffer,o.byteOffset+xe,K),ae=new Uint8Array(o.buffer,o.byteOffset+ke,te),fe=new Uint8Array(o.buffer,o.byteOffset+De,H);return h.globalData={endpointCount:M,selectorCount:v,imageDescs:z,endpointsData:Se,selectorsData:oe,tablesData:ae,extendedData:fe},h}(new Uint8Array(e)),A=a.vkFormat===Rt&&a.dataFormatDescriptor[0].colorModel===167;if(!(a.vkFormat===0||A&&!this.workerConfig.astcHDRSupported))return async function(o){const{vkFormat:l}=o;if(ut[l]===void 0)throw new Error("THREE.KTX2Loader: Unsupported vkFormat.");let h;o.supercompressionScheme===2&&(gt||(gt=new Promise(async u=>{const I=new NA;await I.init(),u(I)})),h=await gt);const g=[];for(let u=0;u<o.levels.length;u++){const I=Math.max(1,o.pixelWidth>>u),p=Math.max(1,o.pixelHeight>>u),B=o.pixelDepth?Math.max(1,o.pixelDepth>>u):0,m=o.levels[u];let E,Q;if(o.supercompressionScheme===0)E=m.levelData;else{if(o.supercompressionScheme!==2)throw new Error("THREE.KTX2Loader: Unsupported supercompressionScheme.");E=h.decode(m.levelData,m.uncompressedByteLength)}Q=It[l]===b.FloatType?new Float32Array(E.buffer,E.byteOffset,E.byteLength/Float32Array.BYTES_PER_ELEMENT):It[l]===b.HalfFloatType?new Uint16Array(E.buffer,E.byteOffset,E.byteLength/Uint16Array.BYTES_PER_ELEMENT):E,g.push({data:Q,width:I,height:p,depth:B})}let f;if(_A.has(ut[l]))f=o.pixelDepth===0?new b.DataTexture(g[0].data,o.pixelWidth,o.pixelHeight):new b.Data3DTexture(g[0].data,o.pixelWidth,o.pixelHeight,o.pixelDepth);else{if(o.pixelDepth>0)throw new Error("THREE.KTX2Loader: Unsupported pixelDepth.");f=new b.CompressedTexture(g,o.pixelWidth,o.pixelHeight),f.minFilter=g.length===1?b.LinearFilter:b.LinearMipmapLinearFilter,f.magFilter=b.LinearFilter}return f.mipmaps=g,f.type=It[l],f.format=ut[l],f.colorSpace=zt(o),f.needsUpdate=!0,Promise.resolve(f)}(a);const r=t,i=this.init().then(()=>this.workerPool.postMessage({type:"transcode",buffer:e,taskConfig:r},[e])).then(o=>this._createTextureFrom(o.data,a));return bt.set(e,{promise:i}),i}dispose(){return this.workerPool.dispose(),this.workerSourceURL&&URL.revokeObjectURL(this.workerSourceURL),ft--,this}}ie.BasisFormat={ETC1S:0,UASTC:1,UASTC_HDR:2},ie.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,BC6H:22,RGB_HALF:24,RGBA_HALF:25},ie.EngineFormat={RGBAFormat:b.RGBAFormat,RGBA_ASTC_4x4_Format:b.RGBA_ASTC_4x4_Format,RGB_BPTC_UNSIGNED_Format:b.RGB_BPTC_UNSIGNED_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,RGBA_S3TC_DXT1_Format:b.RGBA_S3TC_DXT1_Format},ie.EngineType={UnsignedByteType:b.UnsignedByteType,HalfFloatType:b.HalfFloatType,FloatType:b.FloatType},ie.BasisWorker=function(){let n,e,t;const a=_EngineFormat,A=_EngineType,r=_TranscoderFormat,i=_BasisFormat;self.addEventListener("message",function(f){const u=f.data;switch(u.type){case"init":n=u.config,I=u.transcoderBinary,e=new Promise(p=>{t={wasmBinary:I,onRuntimeInitialized:p},BASIS(t)}).then(()=>{t.initializeBasis(),t.KTX2File===void 0&&console.warn("THREE.KTX2Loader: Please update Basis Universal transcoder.")});break;case"transcode":e.then(()=>{try{const{faces:p,buffers:B,width:m,height:E,hasAlpha:Q,format:k,type:x,dfdFlags:T}=function(S){const F=new t.KTX2File(new Uint8Array(S));function D(){F.close(),F.delete()}if(!F.isValid())throw D(),new Error("THREE.KTX2Loader: Invalid or unsupported .ktx2 file");let M;if(F.isUASTC())M=i.UASTC;else if(F.isETC1S())M=i.ETC1S;else{if(!F.isHDR())throw new Error("THREE.KTX2Loader: Unknown Basis encoding");M=i.UASTC_HDR}const v=F.getWidth(),L=F.getHeight(),K=F.getLayers()||1,te=F.getLevels(),H=F.getFaces(),z=F.getHasAlpha(),Fe=F.getDFDFlags(),{transcoderFormat:xe,engineFormat:ke,engineType:De}=function(ae,fe,P,O){const Y=l[ae];for(let re=0;re<Y.length;re++){const Z=Y[re];if(!(Z.if&&!n[Z.if])&&Z.basisFormat.includes(ae)&&!(O&&Z.transcoderFormat.length<2)&&!(Z.needsPowerOfTwo&&(!h(fe)||!h(P))))return{transcoderFormat:Z.transcoderFormat[O?1:0],engineFormat:Z.engineFormat[O?1:0],engineType:Z.engineType[0]}}throw new Error("THREE.KTX2Loader: Failed to identify transcoding target.")}(M,v,L,z);if(!v||!L||!te)throw D(),new Error("THREE.KTX2Loader: Invalid texture");if(!F.startTranscoding())throw D(),new Error("THREE.KTX2Loader: .startTranscoding failed");const Se=[],oe=[];for(let ae=0;ae<H;ae++){const fe=[];for(let P=0;P<te;P++){const O=[];let Y,re;for(let ue=0;ue<K;ue++){const ce=F.getImageLevelInfo(P,ue,ae);ae!==0||P!==0||ue!==0||ce.origWidth%4==0&&ce.origHeight%4==0||console.warn("THREE.KTX2Loader: ETC1S and UASTC textures should use multiple-of-four dimensions."),te>1?(Y=ce.origWidth,re=ce.origHeight):(Y=ce.width,re=ce.height);let W=new Uint8Array(F.getImageTranscodedSizeInBytes(P,ue,0,xe));const Ke=F.transcodeImage(W,P,ue,ae,xe,0,-1,-1);if(De===A.HalfFloatType&&(W=new Uint16Array(W.buffer,W.byteOffset,W.byteLength/Uint16Array.BYTES_PER_ELEMENT)),!Ke)throw D(),new Error("THREE.KTX2Loader: .transcodeImage failed.");O.push(W)}const Z=g(O);fe.push({data:Z,width:Y,height:re}),oe.push(Z.buffer)}Se.push({mipmaps:fe,width:v,height:L,format:ke,type:De})}return D(),{faces:Se,buffers:oe,width:v,height:L,hasAlpha:z,dfdFlags:Fe,format:ke,type:De}}(u.buffer);self.postMessage({type:"transcode",id:u.id,data:{faces:p,width:m,height:E,hasAlpha:Q,format:k,type:x,dfdFlags:T}},B)}catch(p){console.error(p),self.postMessage({type:"error",id:u.id,error:p.message})}})}var I});const o=[{if:"astcSupported",basisFormat:[i.UASTC],transcoderFormat:[r.ASTC_4x4,r.ASTC_4x4],engineFormat:[a.RGBA_ASTC_4x4_Format,a.RGBA_ASTC_4x4_Format],engineType:[A.UnsignedByteType],priorityETC1S:1/0,priorityUASTC:1,needsPowerOfTwo:!1},{if:"bptcSupported",basisFormat:[i.ETC1S,i.UASTC],transcoderFormat:[r.BC7_M5,r.BC7_M5],engineFormat:[a.RGBA_BPTC_Format,a.RGBA_BPTC_Format],engineType:[A.UnsignedByteType],priorityETC1S:3,priorityUASTC:2,needsPowerOfTwo:!1},{if:"dxtSupported",basisFormat:[i.ETC1S,i.UASTC],transcoderFormat:[r.BC1,r.BC3],engineFormat:[a.RGBA_S3TC_DXT1_Format,a.RGBA_S3TC_DXT5_Format],engineType:[A.UnsignedByteType],priorityETC1S:4,priorityUASTC:5,needsPowerOfTwo:!1},{if:"etc2Supported",basisFormat:[i.ETC1S,i.UASTC],transcoderFormat:[r.ETC1,r.ETC2],engineFormat:[a.RGB_ETC2_Format,a.RGBA_ETC2_EAC_Format],engineType:[A.UnsignedByteType],priorityETC1S:1,priorityUASTC:3,needsPowerOfTwo:!1},{if:"etc1Supported",basisFormat:[i.ETC1S,i.UASTC],transcoderFormat:[r.ETC1],engineFormat:[a.RGB_ETC1_Format],engineType:[A.UnsignedByteType],priorityETC1S:2,priorityUASTC:4,needsPowerOfTwo:!1},{if:"pvrtcSupported",basisFormat:[i.ETC1S,i.UASTC],transcoderFormat:[r.PVRTC1_4_RGB,r.PVRTC1_4_RGBA],engineFormat:[a.RGB_PVRTC_4BPPV1_Format,a.RGBA_PVRTC_4BPPV1_Format],engineType:[A.UnsignedByteType],priorityETC1S:5,priorityUASTC:6,needsPowerOfTwo:!0},{if:"bptcSupported",basisFormat:[i.UASTC_HDR],transcoderFormat:[r.BC6H],engineFormat:[a.RGB_BPTC_UNSIGNED_Format],engineType:[A.HalfFloatType],priorityHDR:1,needsPowerOfTwo:!1},{basisFormat:[i.ETC1S,i.UASTC],transcoderFormat:[r.RGBA32,r.RGBA32],engineFormat:[a.RGBAFormat,a.RGBAFormat],engineType:[A.UnsignedByteType,A.UnsignedByteType],priorityETC1S:100,priorityUASTC:100,needsPowerOfTwo:!1},{basisFormat:[i.UASTC_HDR],transcoderFormat:[r.RGBA_HALF],engineFormat:[a.RGBAFormat],engineType:[A.HalfFloatType],priorityHDR:100,needsPowerOfTwo:!1}],l={[i.ETC1S]:o.filter(f=>f.basisFormat.includes(i.ETC1S)).sort((f,u)=>f.priorityUASTC-u.priorityUASTC),[i.UASTC]:o.filter(f=>f.basisFormat.includes(i.UASTC)).sort((f,u)=>f.priorityUASTC-u.priorityUASTC),[i.UASTC_HDR]:o.filter(f=>f.basisFormat.includes(i.UASTC_HDR)).sort((f,u)=>f.priorityHDR-u.priorityHDR)};function h(f){return f<=2||!(f&f-1)&&f!==0}function g(f){if(f.length===1)return f[0];let u=0;for(let B=0;B<f.length;B++)u+=f[B].byteLength;const I=new Uint8Array(u);let p=0;for(let B=0;B<f.length;B++){const m=f[B];I.set(m,p),p+=m.byteLength}return I}};const _A=new Set([b.RGBAFormat,b.RGFormat,b.RedFormat]),ut={[xa]:b.RGBAFormat,[Qa]:b.RGBAFormat,[Ba]:b.RGBAFormat,[ma]:b.RGBAFormat,[wa]:b.RGFormat,[Ea]:b.RGFormat,[Ia]:b.RGFormat,[pa]:b.RGFormat,[ya]:b.RedFormat,[Ca]:b.RedFormat,[ua]:b.RedFormat,[fa]:b.RedFormat,[Rt]:b.RGBA_ASTC_4x4_Format,[Da]:b.RGBA_ASTC_6x6_Format,[ka]:b.RGBA_ASTC_6x6_Format},It={[xa]:b.FloatType,[Qa]:b.HalfFloatType,[Ba]:b.UnsignedByteType,[ma]:b.UnsignedByteType,[wa]:b.FloatType,[Ea]:b.HalfFloatType,[Ia]:b.UnsignedByteType,[pa]:b.UnsignedByteType,[ya]:b.FloatType,[Ca]:b.HalfFloatType,[ua]:b.UnsignedByteType,[fa]:b.UnsignedByteType,[Rt]:b.HalfFloatType,[Da]:b.UnsignedByteType,[ka]:b.UnsignedByteType};function zt(n){const e=n.dataFormatDescriptor[0];return e.colorPrimaries===1?e.transferFunction===2?b.SRGBColorSpace:b.LinearSRGBColorSpace:e.colorPrimaries===10?e.transferFunction===2?"display-p3":"display-p3-linear":(e.colorPrimaries===0||console.warn(`THREE.KTX2Loader: Unsupported color primaries, "${e.colorPrimaries}"`),b.NoColorSpace)}async function Vt(n){const e=n.split("?")[0].split(".").pop(),t=await fetch(n);if(!t.ok)throw new Error(`Failed to fetch ${n}: ${t.statusText}`);if(e==="json"){const a=await t.json();return handleJSONSubtree(a,Yt(n))}if(e==="subtree")return async function(a,A){const r=new DataView(a),i=r.getBigUint64(8,!0),o=r.getBigUint64(16,!0),l=24,h=l+Number(i),g=h+(8-h%8)%8,f=g+Number(o),u=a.slice(l,h),I=new TextDecoder().decode(u).trim(),p=JSON.parse(I);if(!p.buffers)throw new Error("subtree has no buffers");const B=p.buffers.map(async E=>{if(E.uri){const Q=new URL(E.uri,A).href,k=await fetch(Q);if(!k.ok)throw new Error(`Failed to fetch binary file ${Q}: ${k.statusText}`);return new Uint8Array(await k.arrayBuffer())}return new Uint8Array(a.slice(g,f))}),m=await Promise.all(B);return function(E,Q){function k(D,M){if(!D)throw new Error("incomplete json subtree");if(D.constant){if(D.constant==0)return!1;if(D.constant==1)return!0}if(D.bitstream==null)throw new Error('json subtree "tileAvailability" does not specify a bitstream');if(!E.bufferViews||!E.bufferViews[D.bitstream])throw new Error('json subtree "bufferViews" does not specify a bitstream');const v=E.bufferViews[D.bitstream];return x(Q[v.buffer],v.byteOffset,M)}function x(D,M,v){const L=v%8;return D[M+Math.floor(v/8)]>>L&!0}function T(D){let M=0;return M=D.z==null?pt(D.x,D.y,D.level):mt(D.x,D.y,D.z,D.level),k(E.tileAvailability,M)}function S(D){let M=0;M=D.z==null?pt(D.x,D.y,D.level):mt(D.x,D.y,D.z,D.level);const v=[];return E.contentAvailability.forEach(L=>{v.push(k(L,M))}),v}function F(D){let M=0;return M=D.z==null?pt(D.x,D.y):mt(D.x,D.y,D.z),k(E.childSubtreeAvailability,M)}return{isTileAvailable:T,isContentAvailable:S,isChildSubtreeAvailable:F}}(p,m)}(await t.arrayBuffer(),Yt(n));throw new Error(`Unsupported file extension: ${e}`)}function Yt(n){const e=n.split("?")[0];return e.substring(0,e.lastIndexOf("/")+1)}function Wt(n){return n=1431655765&((n=858993459&((n=252645135&((n=16711935&((n&=65535)^n<<8))^n<<4))^n<<2))^n<<1)}function pt(n,e,t){let a=0;return t&&(a=(Math.pow(4,t)-1)/3),a+(Wt(n)|Wt(e)<<1)}function Bt(n){return n=153391689&((n=51130563&((n=50393103&((n=4278190335&((n&=1023)^n<<16))^n<<8))^n<<4))^n<<2)}function mt(n,e,t,a){let A=0;return a&&(A=(Math.pow(8,a)-1)/7),A+(Bt(n)|Bt(e)<<1|Bt(t)<<2)}const Ve=new Map;async function Mt(n,e){if(!n.root||!n.root.implicitTiling)return n;if(!n.root.content&&!n.root.contents)throw new Error("implicit tiling requires a Template URI");let t=!0;n.root.implicitTiling.subdivisionScheme&&(t=n.root.implicitTiling.subdivisionScheme.toUpperCase()==="QUADTREE");let a="";n.root.implicitTiling.subtrees&&(n.root.implicitTiling.subtrees.uri?a=n.root.implicitTiling.subtrees.uri:n.root.implicitTiling.subtrees.url&&(a=n.root.implicitTiling.subtrees.url));let A=[];n.root.content?n.root.content.uri?A.push(n.root.content.uri):n.root.content.url&&A.push(n.root.content.url):n.root.contents&&n.root.contents.forEach(I=>{I.uri?A.push(I.uri):I.url&&A.push(I.url)});const r=function(I){const p=I.split("?")[0];return p.substring(0,p.lastIndexOf("/")+1)}(e);let i;t&&(i=a.replace("{level}",0).replace("{x}",0).replace("{y}",0)),t||(i=a.replace("{level}",0).replace("{x}",0).replace("{y}",0).replace("{z}",0));const o={level:0,x:0,y:0},l={level:0,x:0,y:0};t||(o.z=0,l.z=0),Ve.set(i,await Vt(r+i));const h=Ve.get(i),g=[];h.isContentAvailable(l)&&A.forEach(I=>{let p;t&&(p=I.replace("{level}",o.level).replace("{x}",o.x).replace("{y}",o.y)),t||(p=I.replace("{level}",o.level).replace("{x}",o.x).replace("{y}",o.y).replace("{z}",o.z)),g.push({uri:p})});const f={geometricError:n.root.geometricError,boundingVolume:n.root.boundingVolume,refine:n.root.refine,globalAddress:o,localAddress:l,subtree:h,contents:g,getChildren:async()=>u(f)};return{root:f};async function u(I){const p=[];if(I.localAddress.level==n.root.implicitTiling.availableLevels-1)return p;if((I.localAddress.level+1)%n.root.implicitTiling.subtreeLevels==0){const B=Ze(I.localAddress),m=Ze(I.globalAddress),E=Xt(t,n.root.boundingVolume,m);for(let Q=0;Q<B.length;Q++){const k=B[Q],x=m[Q];I.subtree.isChildSubtreeAvailable(k)&&(t&&a.replace("{level}",x.level).replace("{x}",x.x).replace("{y}",x.y),t||a.replace("{level}",x.level).replace("{x}",x.x).replace("{y}",x.y).replace("{z}",x.z)),Ve.has(i)||Ve.set(i,await Vt(r+i));const T=Ve.get(i),S={level:0,x:0,y:0};t||(S.z=0);const F=[];T.isContentAvailable(S)&&A.forEach(M=>{let v;t&&(v=M.replace("{level}",x.level).replace("{x}",x.x).replace("{y}",x.y)),t||(v=M.replace("{level}",x.level).replace("{x}",x.x).replace("{y}",x.y).replace("{z}",x.z)),F.push({uri:v})});const D={geometricError:I.geometricError/2,boundingVolume:E[Q],refine:n.root.refine,globalAddress:x,localAddress:S,subtree:T,contents:F,getChildren:async()=>u(D)};p.push(D)}}else{const B=Ze(I.localAddress),m=Ze(I.globalAddress),E=Xt(t,n.root.boundingVolume,m);for(let Q=0;Q<B.length;Q++){const k=B[Q],x=m[Q];if(!I.subtree.isTileAvailable(k))continue;const T=[],S=I.subtree.isContentAvailable(k);for(let D=0;D<A.length;D++){if(!S[D])continue;const M=A[D];let v;t&&(v=M.replace("{level}",x.level).replace("{x}",x.x).replace("{y}",x.y)),t||(v=M.replace("{level}",x.level).replace("{x}",x.x).replace("{y}",x.y).replace("{z}",x.z)),T.push({uri:v})}const F={geometricError:I.geometricError/2,boundingVolume:E[Q],refine:n.root.refine,globalAddress:x,localAddress:k,subtree:I.subtree,contents:T,getChildren:async()=>u(F)};p.push(F)}}return p.length>0?p:void 0}}function Ze(n){const{level:e,x:t,y:a,z:A}=n,r=e+1;let i=[];return i=A===void 0?[{level:r,x:2*t,y:2*a},{level:r,x:2*t+1,y:2*a},{level:r,x:2*t,y:2*a+1},{level:r,x:2*t+1,y:2*a+1}]:[{level:r,x:2*t,y:2*a,z:2*A},{level:r,x:2*t+1,y:2*a,z:2*A},{level:r,x:2*t,y:2*a+1,z:2*A},{level:r,x:2*t+1,y:2*a+1,z:2*A},{level:r,x:2*t,y:2*a,z:2*A+1},{level:r,x:2*t+1,y:2*a,z:2*A+1},{level:r,x:2*t,y:2*a+1,z:2*A+1},{level:r,x:2*t+1,y:2*a+1,z:2*A+1}],i}function Xt(n,e,t){const a=[];for(let A=0;A<t.length;A++)a.push(PA(n,e,t[A]));return a}function PA(n,e,t){if(e.region)return function(a,A,r){const[i,o,l,h,g,f]=A,u=(l-i)/2**r.level,I=(h-o)/2**r.level,p=a?0:(f-g)/2**r.level,B=i+u*r.x,m=o+I*r.y,E=B+u,Q=m+I,k=a?g:g+p*r.z,x=a?f:k+p;return{region:[B,m,E,Q,k,x]}}(n,e.region,t);if(e.box)return function(a,A,r){const i=A.slice(0,3),o=[A.slice(3,6),A.slice(6,9),A.slice(9,12)],l=1/Math.pow(2,r.level),h=[l,l,a?1:l],g=o.map((I,p)=>I.map(B=>B*h[p])),f=[i[0]-o[0][0]-o[1][0]-o[2][0],i[1]-o[0][1]-o[1][1]-o[2][1],i[2]-o[0][2]-o[1][2]-o[2][2]];return{box:[f[0]+(2*r.x+1)*(g[0][0]+g[1][0]+g[2][0]),f[1]+(2*r.y+1)*(g[0][1]+g[1][1]+g[2][1]),a?i[2]:f[2]+(2*r.z+1)*(g[0][2]+g[1][2]+g[2][2])].concat(...g)}}(n,e.box,t);throw new Error("Unsupported bounding volume type")}(function(){var n,e=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!="object")return{supported:!1};var t=WebAssembly.instantiate(function(h){for(var g=new Uint8Array(h.length),f=0;f<h.length;++f){var u=h.charCodeAt(f);g[f]=u>96?u-97:u>64?u-39:u+4}var I=0;for(f=0;f<h.length;++f)g[I++]=g[f]<60?e[g[f]]:64*(g[f]-60)+g[++f];return g.buffer.slice(0,I)}("b9H79TebbbeJq9Geueu9Geub9Gbb9Gvuuuuueu9Gduueu9Gluuuueu9Gvuuuuub9Gouuuuuub9Gluuuub9GiuuueuiKLdilevlevlooroowwvwbDDbelve9Weiiviebeoweuec:W;kekr;RiOo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949c919M9MWVbe8F9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949c919M9MWV9c9V919U9KbdE9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949wWV79P9V9UbiY9TW79O9V9Wt9FW9U9J9V9KW69U9KW949c919M9MWVbl8E9TW79O9V9Wt9FW9U9J9V9KW69U9KW949c919M9MWV9c9V919U9Kbv8A9TW79O9V9Wt9FW9U9J9V9KW69U9KW949wWV79P9V9UboE9TW79O9V9Wt9FW9U9J9V9KW69U9KW949tWG91W9U9JWbra9TW79O9V9Wt9FW9U9J9V9KW69U9KW949tWG91W9U9JW9c9V919U9KbwL9TW79O9V9Wt9FW9U9J9V9KWS9P2tWV9p9JtbDK9TW79O9V9Wt9FW9U9J9V9KWS9P2tWV9r919HtbqL9TW79O9V9Wt9FW9U9J9V9KWS9P2tWVT949WbkE9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94J9H9J9OWbPa9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94J9H9J9OW9ttV9P9Wbsa9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94SWt9J9O9sW9T9H9WbzK9TW79O9V9Wt9F79W9Ht9P9H29t9VVt9sW9T9H9WbHl79IV9RbODwebcekdQXq:g9sLdbk;3keYu8Jjjjjbcjo9Rgv8Kjjjjbcbhodnalcefae0mbabcbRb:S:kjjbc:GeV86bbavcjdfcbcjdzNjjjb8AdnaiTmbavcjdfadalz:tjjjb8Akabaefhrabcefhwavalfcbcbcjdal9RalcFe0EzNjjjb8Aavavcjdfalz:tjjjbhDcj;abal9UhodndndndndnalTmbaoc;WFbGgecjdaecjd6Ehqcbhkdninakai9pmiaDcjlfcbcjdzNjjjb8Aaqaiak9Rakaqfai6Egxcsfgecl4cifcd4hmadakal2fhPdndndndndnaec9WGgsTmbcbhzcehHaPhOawhAxekdnaxTmbcbhAcehHaPhCinaDaAfRbbhXaDcjlfheaChoaxhQinaeaoRbbgLaX9RgXcetaX;acr4786bbaoalfhoaecefheaLhXaQcufgQmbkaraw9Ram6miawcbamzNjjjbgeTmiaCcefhCaeamfhwaAcefgAal6hHaAal9hmbxvkkaraw9Ram6mvawcbamzNjjjb8AceheinawgXamfhwalaegoSmldnaraw9Ram6mbaocefheawcbamzNjjjb8AaXmekkaoal6hHxekindnaxTmbaDazfRbbhXaDcjlfheaOhoaxhQinaeaoRbbgLaX9RgXcetaX;acr4786bbaoalfhoaecefheaLhXaQcufgQmbkkaraA9Ram6mearaAcbamzNjjjbgKamfgw9RcK6mdcbhYaDcjlfhAinaDcjlfaYfh8AcwhCczhLcehQindndnaQce9hmbcuhoa8ARbbmecbhodninaogecsSmeaecefhoaAaefcefRbbTmbkkcucbaecs6EhoxekaQcetc;:FFFeGhocuaQtcu7cFeGhXcbheinaoaXaAaefRbb9nfhoaecefgecz9hmbkkaoaLaoaL6geEhLaQaCaeEhCaQcetgQcw6mbkdndndndnaCcufPdiebkaKaYco4fgeaeRbbcdciaCclSEaYci4coGtV86bbaCcw9hmeawa8A8Pbb83bbawcwfa8Acwf8Pbb83bbawczfhwxdkaKaYco4fgeaeRbbceaYci4coGtV86bbkdncwaC9TgEmbinawcb86bbawcefhwxbkkcuaCtcu7h8Acbh3aAh5ina5heaEhQcbhoinaeRbbgLa8AcFeGgXaLaX6EaoaCtVhoaecefheaQcufgQmbkawao86bba5aEfh5awcefhwa3aEfg3cz6mbkcbheindnaAaefRbbgoaX6mbawao86bbawcefhwkaecefgecz9hmbkkdnaYczfgYas9pmbaAczfhAaraw9RcL0mekkaYas6meawTmeaOcefhOazcefgzal6hHawhAazalSmixbkkcbhwaHceGTmexikcbhwaHceGmdkaDaPaxcufal2falz:tjjjb8AaxakfhkawmbkcbhoxokcbhoxvkaiTmekcbhoaraw9Ralcaalca0E6mialc8F9nmexdkcbhoaecufca6mdkawcbcaal9RgezNjjjbaefhwkawaDcjdfalz:tjjjbalfab9Rhokavcjof8Kjjjjbaok9heeuaecaaeca0Eabcj;abae9Uc;WFbGgdcjdadcjd6Egdfcufad9Uae2adcl4cifcd4adV2fcefkmbcbabBd:S:kjjbk;rse3u8Jjjjjbc;ae9Rgl8Kjjjjbcbhvdnaici9UgocHfae0mbabcbyd:C:kjjbgrc;GeV86bbalc;abfcFecjezNjjjb8AalcUfgw9cu83ibalc8WfgD9cu83ibalcyfgq9cu83ibalcafgk9cu83ibalcKfgx9cu83ibalczfgm9cu83ibal9cu83iwal9cu83ibabaefc9WfhPabcefgsaofhednaiTmbcmcsarcb9kgzEhHcbhOcbhAcbhCcbhXcbhQindnaeaP9nmbcbhvxikaQcufhvadaCcdtfgoydbhLaocwfydbhKaoclfydbhYcbh8Adndninalc;abfavcsGcitfgoydlhEdndndnaoydbgoaL9hmbaEaYSmekdnaoaY9hmbaEaK9hmba8Acefh8AxekaoaK9hmeaEaL9hmea8Acdfh8Aka8Ac870mdaXcufhvada8AciGcx2goc:y1jjbfydbaCfcdtfydbhEadaocN1jjbfydbaCfcdtfydbhKadaoc:q1jjbfydbaCfcdtfydbhLcbhodnindnalavcsGcdtfydbaE9hmbaohYxdkcuhYavcufhvaocefgocz9hmbkkaEaOSgvaYce9iaYaH9oVgoGh3dndndndndncbcsavEaYaoEgvcs9hmbarce9imbaEaEaAaEcefaASgvEgAcefSmecmcsavEhvkasava8Acdtc;WeGV86bbavcs9hmeaEaA9Rgvcetavc8F917hvinaeavcFb0crtavcFbGV86bbaecefheavcje6hoavcr4hvaoTmbkaEhAxdkcPhvasa8AcdtcPV86bbaEhAkavTmbavaH9imekalaXcdtfaEBdbaXcefcsGhXkaOa3fhOalc;abfaQcitfgvaKBdlavaEBdbalc;abfaQcefcsGgvcitfgoaEBdlaoaLBdbavcefhoxikavcufhva8Aclfg8Ac;ab9hmbkkdnadceaKaOScetaYaOSEcx2gvc:q1jjbfydbaCfcdtfydbgLTadavcN1jjbfydbaCfcdtfydbg8AceSGadavc:y1jjbfydbaCfcdtfydbgYcdSGaOcb9hGazGg5ce9hmbaw9cu83ibaD9cu83ibaq9cu83ibak9cu83ibax9cu83ibam9cu83ibal9cu83iwal9cu83ibcbhOkcbhEaXcufgvhodnindnalaocsGcdtfydba8A9hmbaEhKxdkcuhKaocufhoaEcefgEcz9hmbkkcbhodnindnalavcsGcdtfydbaY9hmbaohExdkcuhEavcufhvaocefgocz9hmbkkaOaLaOSg8Efh3dndnaKcm0mbaKcefhKxekcbcsa8Aa3SgvEhKa3avfh3kdndnaEcm0mbaEcefhExekcbcsaYa3SgvEhEa3avfh3kc9:cua8EEh8FaEaKcltVhocbhvdndndninavcj1jjbfRbbaocFeGSmeavcefgvcz9hmbxdkka5aLaO9havcm0VVmbasavc;WeV86bbxekasa8F86bbaeao86bbaecefhekdna8EmbaLaA9Rgvcetavc8F917hvinaeavcFb0gocrtavcFbGV86bbavcr4hvaecefheaombkaLhAkdnaKcs9hmba8AaA9Rgvcetavc8F917hvinaeavcFb0gocrtavcFbGV86bbavcr4hvaecefheaombka8AhAkdnaEcs9hmbaYaA9Rgvcetavc8F917hvinaeavcFb0gocrtavcFbGV86bbavcr4hvaecefheaombkaYhAkalaXcdtfaLBdbaXcefcsGhvdndnaKPzbeeeeeeeeeeeeeebekalavcdtfa8ABdbaXcdfcsGhvkdndnaEPzbeeeeeeeeeeeeeebekalavcdtfaYBdbavcefcsGhvkalc;abfaQcitfgoaLBdlaoa8ABdbalc;abfaQcefcsGcitfgoa8ABdlaoaYBdbalc;abfaQcdfcsGcitfgoaYBdlaoaLBdbaQcifhoavhXa3hOkascefhsaocsGhQaCcifgCai6mbkkcbhvaeaP0mbcbhvinaeavfavcj1jjbfRbb86bbavcefgvcz9hmbkaeab9Ravfhvkalc;aef8KjjjjbavkZeeucbhddninadcefgdc8F0meceadtae6mbkkadcrfcFeGcr9Uci2cdfabci9U2cHfkmbcbabBd:C:kjjbk:ydewu8Jjjjjbcz9Rhlcbhvdnaicvfae0mbcbhvabcbRb:C:kjjbc;qeV86bbal9cb83iwabcefhoabaefc98fhrdnaiTmbcbhwcbhDindnaoar6mbcbskadaDcdtfydbgqalcwfawaqav9Rgvavc8F91gv7av9Rc507gwcdtfgkydb9Rgvc8E91c9:Gavcdt7awVhvinaoavcFb0gecrtavcFbGV86bbavcr4hvaocefhoaembkakaqBdbaqhvaDcefgDai9hmbkkcbhvaoar0mbaocbBbbaoab9RclfhvkavkBeeucbhddninadcefgdc8F0meceadtae6mbkkadcwfcFeGcr9Uab2cvfk:dvli99dui99ludnaeTmbcuadcetcuftcu7:Yhvdndncuaicuftcu7:YgoJbbbZMgr:lJbbb9p9DTmbar:Ohwxekcjjjj94hwkcbhicbhDinalclfIdbgrJbbbbJbbjZalIdbgq:lar:lMalcwfIdbgk:lMgr:varJbbbb9BEgrNhxaqarNhralcxfIdbhqdndnakJbbbb9GTmbaxhkxekJbbjZar:l:tgkak:maxJbbbb9GEhkJbbjZax:l:tgxax:marJbbbb9GEhrkdndnaqJbbj:;aqJbbj:;9GEgxJbbjZaxJbbjZ9FEavNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohmxekcjjjj94hmkdndnakJbbj:;akJbbj:;9GEgqJbbjZaqJbbjZ9FEaoNJbbbZJbbb:;akJbbbb9GEMgq:lJbbb9p9DTmbaq:OhPxekcjjjj94hPkdndnarJbbj:;arJbbj:;9GEgqJbbjZaqJbbjZ9FEaoNJbbbZJbbb:;arJbbbb9GEMgr:lJbbb9p9DTmbar:Ohsxekcjjjj94hskdndnadcl9hmbabaifgzas86bbazcifam86bbazcdfaw86bbazcefaP86bbxekabaDfgzas87ebazcofam87ebazclfaw87ebazcdfaP87ebkalczfhlaiclfhiaDcwfhDaecufgembkkk;klld99eud99eudnaeTmbdndncuaicuftcu7:YgvJbbbZMgo:lJbbb9p9DTmbao:Ohixekcjjjj94hikaic;8FiGhrinabcofcicdalclfIdb:lalIdb:l9EgialcwfIdb:lalaicdtfIdb:l9EEgialcxfIdb:lalaicdtfIdb:l9EEgiarV87ebdndnalaicefciGcdtfIdbJ;Zl:1ZNJbbj:;JbbjZalaicdtfIdbJbbbb9DEgoNgwJbbj:;awJbbj:;9GEgDJbbjZaDJbbjZ9FEavNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohqxekcjjjj94hqkabaq87ebdndnaoalaicdfciGcdtfIdbJ;Zl:1ZNNgwJbbj:;awJbbj:;9GEgDJbbjZaDJbbjZ9FEavNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohqxekcjjjj94hqkabcdfaq87ebdndnaoalaicufciGcdtfIdbJ;Zl:1ZNNgoJbbj:;aoJbbj:;9GEgwJbbjZawJbbjZ9FEavNJbbbZJbbb:;aoJbbbb9GEMgo:lJbbb9p9DTmbao:Ohixekcjjjj94hikabclfai87ebabcwfhbalczfhlaecufgembkkk:Hvdxue998Jjjjjbcjd9Rgo8Kjjjjbadcd4hrdndndndnavcd9hmbadcl6mearcearce0EhwaohDinaDc:CuBdbaDclfhDawcufgwmbkaeTmiadcl6mdarcearce0EhqarcdthkalhxcbhminaohDaxhwaqhPinaDaDydbgsawydbgzcL4cFeGc:cufcbazEgzasaz9kEBdbawclfhwaDclfhDaPcufgPmbkaxakfhxamcefgmae9hmbkkaeTmdxekaeTmekavcb9hadcl6gqVhHarcearce0Ehkarcdthrceai9Rhmcbhdindndndnavce9hmbaqmdc:CuhwalhDakhPinawaDydbgscL4cFeGc:cufcbasEgsawas9kEhwaDclfhDaPcufgPmbxdkkc:CuhwaHmbaohDalhPakhsinaDaPydbgzcL4cFeGgxc8Aaxc8A9kEc:cufcbazEBdbaPclfhPaDclfhDascufgsmbkkaqmbcbhDakhsinawhPdnavceSmbaoaDfydbhPkdndnalaDfIdbgOcjjj;8iamaPfgPcLt9R::NJbbbZJbbb:;aOJbbbb9GEMgO:lJbbb9p9DTmbaO:Ohzxekcjjjj94hzkabaDfazcFFFrGaPcKtVBdbaDclfhDascufgsmbkkabarfhbalarfhladcefgdae9hmbkkaocjdf8KjjjjbkFkdCui998Jjjjjbc:Gd9Rgv8Kjjjjbavc:4efcbc;KbzNjjjb8AcbhodnadTmbcbhoaiTmbdnabae9hmbavcuadcdtgoadcFFFFi0Ecbyd:K:kjjbHjjjjbbgeBd:4eavceBd:ydaeabaoz:tjjjb8Akavc:OefcwfcbBdbav9cb83i:Oeavc:Oefaeadaiavc:4efz:njjjbcuaicdtgraicFFFFi0Egwcbyd:K:kjjbHjjjjbbhoavc:4efavyd:ydgDcdtfaoBdbavaDcefgqBd:ydaoavyd:Oegkarz:tjjjbhxavc:4efaqcdtfadci9Ugmcbyd:K:kjjbHjjjjbbgoBdbavaDcdfgrBd:ydaocbamzNjjjbhPavc:4efarcdtfawcbyd:K:kjjbHjjjjbbgsBdbavaDcifgqBd:ydaxhoashrinaralIdbalaoydbgwcwawcw6Ecdtfc;ebfIdbMUdbaoclfhoarclfhraicufgimbkavc:4efaqcdtfcuamcdtadcFFFF970Ecbyd:K:kjjbHjjjjbbgqBdbavaDclfBd:yddnadci6mbamceamce0EhiaehoaqhrinarasaoydbcdtfIdbasaoclfydbcdtfIdbMasaocwfydbcdtfIdbMUdbaocxfhoarclfhraicufgimbkkavc;qbfhzavhoavyd:SehHavyd:WehOcbhwcbhrcbhAcehCinaohXcihQaearci2gLcdtfgocwfydbhdaoydbhDabaAcx2fgiclfaoclfydbgKBdbaiaDBdbaicwfadBdbaParfce86bbazadBdwazaKBdlazaDBdbaqarcdtfcbBdbdnawTmbcihQaXhiinazaQcdtfaiydbgoBdbaQaoaD9haoaK9hGaoad9hGfhQaiclfhiawcufgwmbkkaAcefhAaxaDcdtfgoaoydbcufBdbaxaKcdtfgoaoydbcufBdbaxadcdtfgoaoydbcufBdbcbhwinaOaHaeawaLfcdtfydbcdtgifydbcdtfgKhoakaifgDydbgdhidnadTmbdninaoydbarSmeaoclfhoaicufgiTmdxbkkaoadcdtaKfc98fydbBdbaDaDydbcufBdbkawcefgwci9hmbkdndndnaQTmbcuhrJbbbbhYcbhDavyd:SehKavyd:WehLindndnakazaDcdtfydbcdtgofydbgimbaDcefhDxekaDcs0hwasaofgdIdbh8AadalcbaDcefgDawEcdtfIdbalaxaofydbgwcwawcw6Ecdtfc;ebfIdbMgEUdbaEa8A:thEaicdthiaLaKaofydbcdtfhoinaqaoydbgwcdtfgdaEadIdbMg8AUdba8AaYaYa8A9DgdEhYawaradEhraoclfhoaic98fgimbkkaDaQ9hmbkarcu9hmekaCam9pmeindnaPaCfRbbmbaChrxdkamaCcefgC9hmbxdkkaQczaQcz6EhwazhoaXhzarcu9hmekkavyd:ydhokaocdtavc:4effc98fhrdninaoTmearydbcbyd:G:kjjbH:bjjjbbarc98fhraocufhoxbkkavc:Gdf8Kjjjjbk;UlevucuaicdtgvaicFFFFi0Egocbyd:K:kjjbHjjjjbbhralalyd9GgwcdtfarBdbalawcefBd9GabarBdbaocbyd:K:kjjbHjjjjbbhralalyd9GgocdtfarBdbalaocefBd9GabarBdlcuadcdtadcFFFFi0Ecbyd:K:kjjbHjjjjbbhralalyd9GgocdtfarBdbalaocefBd9GabarBdwabydbcbavzNjjjb8Aadci9UhwdnadTmbabydbhoaehladhrinaoalydbcdtfgvavydbcefBdbalclfhlarcufgrmbkkdnaiTmbabydbhlabydlhrcbhvaihoinaravBdbarclfhralydbavfhvalclfhlaocufgombkkdnadci6mbawceawce0EhDabydlhrabydwhvcbhlinaecwfydbhoaeclfydbhdaraeydbcdtfgwawydbgwcefBdbavawcdtfalBdbaradcdtfgdadydbgdcefBdbavadcdtfalBdbaraocdtfgoaoydbgocefBdbavaocdtfalBdbaecxfheaDalcefgl9hmbkkdnaiTmbabydlheabydbhlinaeaeydbalydb9RBdbalclfhlaeclfheaicufgimbkkkQbabaeadaic:01jjbz:mjjjbkQbabaeadaic:C:jjjbz:mjjjbk9DeeuabcFeaicdtzNjjjbhlcbhbdnadTmbindnalaeydbcdtfgiydbcu9hmbaiabBdbabcefhbkaeclfheadcufgdmbkkabk;:kivuo99lu8Jjjjjbcj;Hb9Rgl8Kjjjjbcbhvalc1;Gbfcbc;KbzNjjjb8AalcuadcdtadcFFFFi0Egocbyd:K:kjjbHjjjjbbgrBd19GalceBd;O9Galcwfcbyd:m:kjjbBdbalcb8Pd:e:kjjb83ibalc;W;Gbfcwfcbyd:y:kjjbBdbalcb8Pd:q:kjjb83i;W9Gaicd4hwdndnadmbJFFuFhDJFFuuhqJFFuuhkJFFuFhxJFFuuhmJFFuFhPxekawcdthsaehzincbhiinalaifgHazaifIdbgDaHIdbgxaxaD9EEUdbalc;W;GbfaifgHaDaHIdbgxaxaD9DEUdbaiclfgicx9hmbkazasfhzavcefgvad9hmbkalIdwhqalId;49GhDalIdlhkalId;09GhxalIdbhmalId;W9GhPkdndnadTmbJbbbbJbbjZaPam:tJbbbb:xgPaxak:tgxaxaP9DEgxaDaq:tgDaDax9DEgD:vaDJbbbb9BEhDawcdthsarhHadhzindndnaDaeIdbam:tNJb;au9eNJbbbZMgx:lJbbb9p9DTmbax:Ohixekcjjjj94hikaicztaicwtcj;GiGVaicsGVc:p;G:dKGcH2c;d;H:WKGcv2c;j:KM;jbGhvdndnaDaeclfIdbak:tNJb;au9eNJbbbZMgx:lJbbb9p9DTmbax:Ohixekcjjjj94hikaicztaicwtcj;GiGVaicsGVc:p;G:dKGcH2c;d;H:WKGcq2cM;j:KMeGavVhvdndnaDaecwfIdbaq:tNJb;au9eNJbbbZMgx:lJbbb9p9DTmbax:Ohixekcjjjj94hikaHavaicztaicwtcj;GiGVaicsGVc:p;G:dKGcH2c;d;H:WKGcC2c:KM;j:KdGVBdbaeasfheaHclfhHazcufgzmbkalcbcj;GbzNjjjbhiarhHadheinaiaHydbgzcFrGcx2fgvavydbcefBdbaiazcq4cFrGcx2fgvavydlcefBdlaiazcC4cFrGcx2fgzazydwcefBdwaHclfhHaecufgembxdkkalcbcj;GbzNjjjb8AkcbhHcbhzcbhecbhvinalaHfgiydbhsaiazBdbaicwfgwydbhOawavBdbaiclfgiydbhwaiaeBdbasazfhzaOavfhvawaefheaHcxfgHcj;Gb9hmbkcbhialaocbyd:K:kjjbHjjjjbbgzBd:m9GdnadTmbabhHinaHaiBdbaHclfhHadaicefgi9hmbkadTmbabhiadhHinalaraiydbgecdtfydbcFrGcx2fgvavydbgvcefBdbazavcdtfaeBdbaiclfhiaHcufgHmbkazhiadhHinalaraiydbgecdtfydbcq4cFrGcx2fgvavydlgvcefBdlabavcdtfaeBdbaiclfhiaHcufgHmbkabhiadhHinalaraiydbgecdtfydbcC4cFrGcx2fgvavydwgvcefBdwazavcdtfaeBdbaiclfhiaHcufgHmbkadTmbcbhiinabazydbcdtfaiBdbazclfhzadaicefgi9hmbkkclhidninaic98Smealc1;Gbfaifydbcbyd:G:kjjbH:bjjjbbaic98fhixbkkalcj;Hbf8Kjjjjbk9teiucbcbyd:O:kjjbgeabcifc98GfgbBd:O:kjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd:O:kjjbgeabcrfc94GfgbBd:O:kjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik9:eiuZbhedndncbyd:O:kjjbgdaecztgi9nmbcuheadai9RcFFifcz4nbcuSmekadhekcbabae9Rcifc98Gcbyd:O:kjjbfgdBd:O:kjjbdnadZbcztge9nmbadae9RcFFifcz4nb8Akkk:6ddbcjwk:Cdb4:h9w9N94:P:gW:j9O:ye9Pbbbbbbebbbdbbbebbbdbbbbbbbdbbbbbbbebbbbbbb:l29hZ;69:9kZ;N;76Z;rg97Z;z;o9xZ8J;B85Z;:;u9yZ;b;k9HZ:2;Z9DZ9e:l9mZ59A8KZ:r;T3Z:A:zYZ79OHZ;j4::8::Y:D9V8:bbbb9s:49:Z8R:hBZ9M9M;M8:L;z;o8:;8:PG89q;x:J878R:hQ8::M:B;e87bbbbbbjZbbjZbbjZ:E;V;N8::Y:DsZ9i;H;68:xd;R8:;h0838:;W:NoZbbbb:WV9O8:uf888:9i;H;68:9c9G;L89;n;m9m89;D8Ko8:bbbbf:8tZ9m836ZS:2AZL;zPZZ818EZ9e:lxZ;U98F8:819E;68:FFuuFFuuFFuuFFuFFFuFFFuFbc:Cqkzebbbebbbdbbb8WWbb"),{}).then(function(h){(n=h.instance).exports.__wasm_call_ctors(),n.exports.meshopt_encodeVertexVersion(0),n.exports.meshopt_encodeIndexVersion(1)});function a(h){if(!h)throw new Error("Assertion failed")}function A(h){return new Uint8Array(h.buffer,h.byteOffset,h.byteLength)}function r(h,g,f,u,I){var p=n.exports.sbrk,B=p(g),m=p(u*I),E=new Uint8Array(n.exports.memory.buffer);E.set(A(f),m);var Q=h(B,g,m,u,I),k=new Uint8Array(Q);return k.set(E.subarray(B,B+Q)),p(B-p(0)),k}function i(h){for(var g=0,f=0;f<h.length;++f)var u=h[f];return g}function o(h,g){if(a(g==2||g==4),g==4)return new Uint32Array(h.buffer,h.byteOffset,h.byteLength/4);var f=new Uint16Array(h.buffer,h.byteOffset,h.byteLength/2);return new Uint32Array(f)}function l(h,g,f,u,I,p,B){var m=n.exports.sbrk,E=m(f*u),Q=m(f*p),k=new Uint8Array(n.exports.memory.buffer);k.set(A(g),Q),h(E,f,u,I,Q,B);var x=new Uint8Array(f*u);return x.set(k.subarray(E,E+f*u)),m(E-m(0)),x}})();var Ra=function(){var n=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]),e=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!="object")return{supported:!1};var t,a=WebAssembly.validate(n)?"b9H79TebbbeKl9Gbb9Gvuuuuueu9Giuuub9Geueuikqbbebeedddilve9Weeeviebeoweuec:q;Aekr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbdY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVblE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtboK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbrL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbwl79IV9RbDq;b9tqlbzik9:evu8Jjjjjbcz9Rhbcbheincbhdcbhiinabcwfadfaicjuaead4ceGglE86bbaialfhiadcefgdcw9hmbkaec:q:yjjbfai86bbaecitc:q1jjbfab8Piw83ibaecefgecjd9hmbkk;e8JlHud97euo978Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Rad;8qbbcj;abad9UhoaicefhldnadTmbaoc;WFbGgocjdaocjd6EhwcbhDinaDae9pmeawaeaD9RaDawfae6Egqcsfgoc9WGgkci2hxakcethmaocl4cifcd4hPabaDad2fhscbhzdnincbhHalhOcbhAdninaraO9RaP6miavcj;cbfaAak2fhCaOaPfhlcbhidnakc;ab6mbaral9Rc;Gb6mbcbhoinaCaofhidndndndndnaOaoco4fRbbgXciGPlbedibkaipxbbbbbbbbbbbbbbbbpklbxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklbalczfhlkdndndndndnaXcd4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklzxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklzalczfhlkdndndndndnaXcl4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklaxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklaalczfhlkdndndndndnaXco4Plbedibkaipxbbbbbbbbbbbbbbbbpkl8WxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WalclfaYpQbfaXc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WalcwfaYpQbfaXc:q:yjjbfRbbfhlxekaialpbbbpkl8Walczfhlkaoc;abfhiaocjefak0meaihoaral9Rc;Fb0mbkkdndnaiak9pmbaici4hoinaral9RcK6mdaCaifhXdndndndndnaOaico4fRbbaocoG4ciGPlbedibkaXpxbbbbbbbbbbbbbbbbpklbxikaXalpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaXalpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaXalpbbbpklbalczfhlkaocdfhoaiczfgiak6mbkkalTmbaAcd0hHalhOaAcefgAclSmdxekkcbhlaHceGTmdkdnakTmbavcjdfazfhiavazfpbdbhYcbhXinaiavcj;cbfaXfgopblbgLcep9TaLpxeeeeeeeeeeeeeeeegQp9op9Hp9rgLaoakfpblbg8Acep9Ta8AaQp9op9Hp9rg8ApmbzeHdOiAlCvXoQrLgEaoamfpblbg3cep9Ta3aQp9op9Hp9rg3aoaxfpblbg5cep9Ta5aQp9op9Hp9rg5pmbzeHdOiAlCvXoQrLg8EpmbezHdiOAlvCXorQLgQaQpmbedibedibedibediaYp9UgYp9AdbbaiadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaEa8EpmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaLa8ApmwKDYq8AkEx3m5P8Es8FgLa3a5pmwKDYq8AkEx3m5P8Es8Fg8ApmbezHdiOAlvCXorQLgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaLa8ApmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfhiaXczfgXak6mbkkazclfgzad6mbkasavcjdfaqad2;8qbbavavcjdfaqcufad2fad;8qbbaqaDfhDc9:hoalmexikkc9:hoxekcbc99aral9Radcaadca0ESEhokavcj;kbf8Kjjjjbaokwbz:bjjjbk;tzeHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecje;8kbavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhodnaeTmbcmcsaDceSEhkcbhxcbhmcbhrcbhicbhlindnaoaq9nmbc9:hoxikdndnawRbbgDc;Ve0mbavc;abfalaDcu7gPcl4fcsGcitfgsydlhzasydbhHdnaDcsGgDak9pmbavaiaPfcsGcdtfydbaxaDEhsaDThDdndnadcd9hmbabarcetfgPaH87ebaPcdfaz87ebaPclfas87ebxekabarcdtfgPaHBdbaPclfazBdbaPcwfasBdbkaxaDfhxavc;abfalcitfgPasBdbaPazBdlavaicdtfasBdbavc;abfalcefcsGglcitfgPaHBdbaPasBdlaiaDfhialcefhlxdkdndnaDcsSmbamaDfaDc987fcefhmxekaocefhDao8SbbgscFeGhPdndnascu9mmbaDhoxekaocvfhoaPcFbGhPcrhsdninaD8SbbgOcFbGastaPVhPaOcu9kmeaDcefhDascrfgsc8J9hmbxdkkaDcefhokaPce4cbaPceG9R7amfhmkdndnadcd9hmbabarcetfgDaH87ebaDcdfaz87ebaDclfam87ebxekabarcdtfgDaHBdbaDclfazBdbaDcwfamBdbkavc;abfalcitfgDamBdbaDazBdlavaicdtfamBdbavc;abfalcefcsGglcitfgDaHBdbaDamBdlaicefhialcefhlxekdnaDcpe0mbaxcefgOavaiaqaDcsGfRbbgscl49RcsGcdtfydbascz6gPEhDavaias9RcsGcdtfydbaOaPfgzascsGgOEhsaOThOdndnadcd9hmbabarcetfgHax87ebaHcdfaD87ebaHclfas87ebxekabarcdtfgHaxBdbaHclfaDBdbaHcwfasBdbkavaicdtfaxBdbavc;abfalcitfgHaDBdbaHaxBdlavaicefgicsGcdtfaDBdbavc;abfalcefcsGcitfgHasBdbaHaDBdlavaiaPfcsGgicdtfasBdbavc;abfalcdfcsGglcitfgDaxBdbaDasBdlalcefhlaiaOfhiazaOfhxxekaxcbaoRbbgHEgAaDc;:eSgDfhzaHcsGhCaHcl4hXdndnaHcs0mbazcefhOxekazhOavaiaX9RcsGcdtfydbhzkdndnaCmbaOcefhxxekaOhxavaiaH9RcsGcdtfydbhOkdndnaDTmbaocefhDxekaocdfhDao8SbegPcFeGhsdnaPcu9kmbaocofhAascFbGhscrhodninaD8SbbgPcFbGaotasVhsaPcu9kmeaDcefhDaocrfgoc8J9hmbkaAhDxekaDcefhDkasce4cbasceG9R7amfgmhAkdndnaXcsSmbaDhsxekaDcefhsaD8SbbgocFeGhPdnaocu9kmbaDcvfhzaPcFbGhPcrhodninas8SbbgDcFbGaotaPVhPaDcu9kmeascefhsaocrfgoc8J9hmbkazhsxekascefhskaPce4cbaPceG9R7amfgmhzkdndnaCcsSmbashoxekascefhoas8SbbgDcFeGhPdnaDcu9kmbascvfhOaPcFbGhPcrhDdninao8SbbgscFbGaDtaPVhPascu9kmeaocefhoaDcrfgDc8J9hmbkaOhoxekaocefhokaPce4cbaPceG9R7amfgmhOkdndnadcd9hmbabarcetfgDaA87ebaDcdfaz87ebaDclfaO87ebxekabarcdtfgDaABdbaDclfazBdbaDcwfaOBdbkavc;abfalcitfgDazBdbaDaABdlavaicdtfaABdbavc;abfalcefcsGcitfgDaOBdbaDazBdlavaicefgicsGcdtfazBdbavc;abfalcdfcsGcitfgDaABdbaDaOBdlavaiaHcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhialcifhlkawcefhwalcsGhlaicsGhiarcifgrae6mbkkcbc99aoaqSEhokavc;aef8Kjjjjbaok:flevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaic8Etc8F91aicd47avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaic8Etc8F91aicd47avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:wPliuo97eue978Jjjjjbca9Rhiaec98Ghldndnadcl9hmbdnalTmbcbhvabhdinadadpbbbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpkbbadczfhdavclfgval6mbkkalae9pmeaipxbbbbbbbbbbbbbbbbgqpklbaiabalcdtfgdaeciGglcdtgv;8qbbdnalTmbaiaipblbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDaqp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpklbkadaiav;8qbbskdnalTmbcbhvabhdinadczfgxaxpbbbgopxbbbbbbFFbbbbbbFFgkp9oadpbbbgDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eaDaopmbediwDqkzHOAKY8AEgoczp:Sep;6egrp;Geaoczp:Reczp:Sep;6egwp;Gep;Kep;Legopxb;:FSb;:FSb;:FSb;:FSawaopxbbbbbbbbbbbbbbbbp:2egqawpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegwawp;Meaoaop;Mearaqaramp9op9rp;Kegoaop;Mep;Kep;Kep;Jep;Negrp;Mepxbbn0bbn0bbn0bbn0gqp;Keczp:Reawarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9op9qgwaoarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogopmwDKYqk8AExm35Ps8E8Fp9qpkbbadaDakp9oawaopmbezHdiOAlvCXorQLp9qpkbbadcafhdavclfgval6mbkkalae9pmbaiaeciGgvcitgdfcbcaad9R;8kbaiabalcitfglad;8qbbdnavTmbaiaipblzgopxbbbbbbFFbbbbbbFFgkp9oaipblbgDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eaDaopmbediwDqkzHOAKY8AEgoczp:Sep;6egrp;Geaoczp:Reczp:Sep;6egwp;Gep;Kep;Legopxb;:FSb;:FSb;:FSb;:FSawaopxbbbbbbbbbbbbbbbbp:2egqawpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegwawp;Meaoaop;Mearaqaramp9op9rp;Kegoaop;Mep;Kep;Kep;Jep;Negrp;Mepxbbn0bbn0bbn0bbn0gqp;Keczp:Reawarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9op9qgwaoarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogopmwDKYqk8AExm35Ps8E8Fp9qpklzaiaDakp9oawaopmbezHdiOAlvCXorQLp9qpklbkalaiad;8qbbkk;4wllue97euv978Jjjjjbc8W9Rhidnaec98GglTmbcbhvabhoinaiaopbbbgraoczfgwpbbbgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklbaopxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaqakp;Mearp;Keczp:ReaDakp;Mearp;Keamp9op9qgkpmbezHdiOAlvCXorQLgrp5baipblbpEb:T:j83ibaocwfarp5eaipblbpEe:T:j83ibawaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblbpEd:T:j83ibaocKfakp5eaipblbpEi:T:j83ibaocafhoavclfgval6mbkkdnalae9pmbaiaeciGgvcitgofcbcaao9R;8kbaiabalcitfgwao;8qbbdnavTmbaiaipblbgraipblzgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklaaipxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaqakp;Mearp;Keczp:ReaDakp;Mearp;Keamp9op9qgkpmbezHdiOAlvCXorQLgrp5baipblapEb:T:j83ibaiarp5eaipblapEe:T:j83iwaiaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblapEd:T:j83izaiakp5eaipblapEi:T:j83iKkawaiao;8qbbkk:Pddiue978Jjjjjbc;ab9Rhidnadcd4ae2glc98GgvTmbcbheabhdinadadpbbbgocwp:Recwp:Sep;6eaocep:SepxbbjFbbjFbbjFbbjFp9opxbbjZbbjZbbjZbbjZp:Uep;Mepkbbadczfhdaeclfgeav6mbkkdnaval9pmbaialciGgecdtgdVcbc;abad9R;8kbaiabavcdtfgvad;8qbbdnaeTmbaiaipblbgocwp:Recwp:Sep;6eaocep:SepxbbjFbbjFbbjFbbjFp9opxbbjZbbjZbbjZbbjZp:Uep;Mepklbkavaiad;8qbbkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikkkebcjwklz9Tbb":"b9H79Tebbbe8Fv9Gbb9Gvuuuuueu9Giuuub9Geueu9Giuuueuikqbeeedddillviebeoweuec:q;iekr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbeY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVbdE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbiL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtblK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbol79IV9Rbrq;d8Yqdbk:yzeHu8Jjjjjbcj;eb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Radz1jjjbhwcj;abad9UhlaicefhodnadTmbalc;WFbGglcjdalcjd6EhDcbhqinaqae9pmeaDaeaq9RaqaDfae6Egkcsfglcl4cifcd4hxdndndndnalc9WGgmTmbcbhPcehsawcjdfhzaohHinaraH9Rax6midnaraHaxfgo9RcK6mbczhlcbhOinalgic9WfgAawcj;cbffhldndndndndnaHaAco4fRbbaOcoG4ciGPlbedibkal9cb83ibalcwf9cb83ibxikalaoRblaoRbbgAco4gCaCciSgCE86bbawcj;cbfaifglcGfaoclfaCfgCRbbaAcl4ciGgXaXciSgXE86bbalcVfaCaXfgCRbbaAcd4ciGgXaXciSgXE86bbalc7faCaXfgCRbbaAciGgAaAciSgAE86bbalctfaCaAfgCRbbaoRbegAco4gXaXciSgXE86bbalc91faCaXfgCRbbaAcl4ciGgXaXciSgXE86bbalc4faCaXfgCRbbaAcd4ciGgXaXciSgXE86bbalc93faCaXfgCRbbaAciGgAaAciSgAE86bbalc94faCaAfgCRbbaoRbdgAco4gXaXciSgXE86bbalc95faCaXfgCRbbaAcl4ciGgXaXciSgXE86bbalc96faCaXfgCRbbaAcd4ciGgXaXciSgXE86bbalc97faCaXfgCRbbaAciGgAaAciSgAE86bbalc98faCaAfgARbbaoRbigoco4gCaCciSgCE86bbalc99faAaCfgARbbaocl4ciGgCaCciSgCE86bbalc9:faAaCfgARbbaocd4ciGgCaCciSgCE86bbalcufaAaCfglRbbaociGgoaociSgoE86bbalaofhoxdkalaoRbwaoRbbgAcl4gCaCcsSgCE86bbawcj;cbfaifglcGfaocwfaCfgCRbbaAcsGgAaAcsSgAE86bbalcVfaCaAfgARbbaoRbegCcl4gXaXcsSgXE86bbalc7faAaXfgARbbaCcsGgCaCcsSgCE86bbalctfaAaCfgARbbaoRbdgCcl4gXaXcsSgXE86bbalc91faAaXfgARbbaCcsGgCaCcsSgCE86bbalc4faAaCfgARbbaoRbigCcl4gXaXcsSgXE86bbalc93faAaXfgARbbaCcsGgCaCcsSgCE86bbalc94faAaCfgARbbaoRblgCcl4gXaXcsSgXE86bbalc95faAaXfgARbbaCcsGgCaCcsSgCE86bbalc96faAaCfgARbbaoRbvgCcl4gXaXcsSgXE86bbalc97faAaXfgARbbaCcsGgCaCcsSgCE86bbalc98faAaCfgARbbaoRbogCcl4gXaXcsSgXE86bbalc99faAaXfgARbbaCcsGgCaCcsSgCE86bbalc9:faAaCfgARbbaoRbrgocl4gCaCcsSgCE86bbalcufaAaCfglRbbaocsGgoaocsSgoE86bbalaofhoxekalao8Pbb83bbalcwfaocwf8Pbb83bbaoczfhokdnaiam9pmbaOcdfhOaiczfhlarao9RcL0mekkaiam6miaoTmidnakTmbawaPfRbbhOawcj;cbfhlazhiakhAinaialRbbgHce4cbaHceG9R7aOfgO86bbaiadfhialcefhlaAcufgAmbkkazcefhzaPcefgPad6hsaohHaPad9hmexvkkcbhoasceGmdxikaoaxad2fhXdnakTmbcbhmcehsawcjdfhCinarao9Rax6miaoTmdaoaxfhoawamfRbbhOawcj;cbfhlaChiakhAinaialRbbgHce4cbaHceG9R7aOfgO86bbaiadfhialcefhlaAcufgAmbkaCcefhCamcefgmad6hsamad9hmbkaXhoxikcbhlcehsinarao9Rax6mdaoTmeaoaxfhoalcefglad6hsadal9hmbkaXhoxdkcbhoasceGTmekc9:hoxikabaqad2fawcjdfakad2z1jjjb8Aawawcjdfakcufad2fadz1jjjb8Aakaqfhqaombkc9:hoxekcbc99arao9Radcaadca0ESEhokavcj;ebf8Kjjjjbaok;xzeHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecjez:jjjjb8AavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhodnaeTmbcmcsaDceSEhkcbhxcbhmcbhrcbhicbhlindnaoaq9nmbc9:hoxikdndnawRbbgDc;Ve0mbavc;abfalaDcu7gPcl4fcsGcitfgsydlhzasydbhHdnaDcsGgDak9pmbavaiaPfcsGcdtfydbaxaDEhsaDThDdndnadcd9hmbabarcetfgPaH87ebaPcdfaz87ebaPclfas87ebxekabarcdtfgPaHBdbaPclfazBdbaPcwfasBdbkaxaDfhxavc;abfalcitfgPasBdbaPazBdlavaicdtfasBdbavc;abfalcefcsGglcitfgPaHBdbaPasBdlaiaDfhialcefhlxdkdndnaDcsSmbamaDfaDc987fcefhmxekaocefhDao8SbbgscFeGhPdndnascu9mmbaDhoxekaocvfhoaPcFbGhPcrhsdninaD8SbbgOcFbGastaPVhPaOcu9kmeaDcefhDascrfgsc8J9hmbxdkkaDcefhokaPce4cbaPceG9R7amfhmkdndnadcd9hmbabarcetfgDaH87ebaDcdfaz87ebaDclfam87ebxekabarcdtfgDaHBdbaDclfazBdbaDcwfamBdbkavc;abfalcitfgDamBdbaDazBdlavaicdtfamBdbavc;abfalcefcsGglcitfgDaHBdbaDamBdlaicefhialcefhlxekdnaDcpe0mbaxcefgOavaiaqaDcsGfRbbgscl49RcsGcdtfydbascz6gPEhDavaias9RcsGcdtfydbaOaPfgzascsGgOEhsaOThOdndnadcd9hmbabarcetfgHax87ebaHcdfaD87ebaHclfas87ebxekabarcdtfgHaxBdbaHclfaDBdbaHcwfasBdbkavaicdtfaxBdbavc;abfalcitfgHaDBdbaHaxBdlavaicefgicsGcdtfaDBdbavc;abfalcefcsGcitfgHasBdbaHaDBdlavaiaPfcsGgicdtfasBdbavc;abfalcdfcsGglcitfgDaxBdbaDasBdlalcefhlaiaOfhiazaOfhxxekaxcbaoRbbgHEgAaDc;:eSgDfhzaHcsGhCaHcl4hXdndnaHcs0mbazcefhOxekazhOavaiaX9RcsGcdtfydbhzkdndnaCmbaOcefhxxekaOhxavaiaH9RcsGcdtfydbhOkdndnaDTmbaocefhDxekaocdfhDao8SbegPcFeGhsdnaPcu9kmbaocofhAascFbGhscrhodninaD8SbbgPcFbGaotasVhsaPcu9kmeaDcefhDaocrfgoc8J9hmbkaAhDxekaDcefhDkasce4cbasceG9R7amfgmhAkdndnaXcsSmbaDhsxekaDcefhsaD8SbbgocFeGhPdnaocu9kmbaDcvfhzaPcFbGhPcrhodninas8SbbgDcFbGaotaPVhPaDcu9kmeascefhsaocrfgoc8J9hmbkazhsxekascefhskaPce4cbaPceG9R7amfgmhzkdndnaCcsSmbashoxekascefhoas8SbbgDcFeGhPdnaDcu9kmbascvfhOaPcFbGhPcrhDdninao8SbbgscFbGaDtaPVhPascu9kmeaocefhoaDcrfgDc8J9hmbkaOhoxekaocefhokaPce4cbaPceG9R7amfgmhOkdndnadcd9hmbabarcetfgDaA87ebaDcdfaz87ebaDclfaO87ebxekabarcdtfgDaABdbaDclfazBdbaDcwfaOBdbkavc;abfalcitfgDazBdbaDaABdlavaicdtfaABdbavc;abfalcefcsGcitfgDaOBdbaDazBdlavaicefgicsGcdtfazBdbavc;abfalcdfcsGcitfgDaABdbaDaOBdlavaiaHcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhialcifhlkawcefhwalcsGhlaicsGhiarcifgrae6mbkkcbc99aoaqSEhokavc;aef8Kjjjjbaok:flevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaic8Etc8F91aicd47avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaic8Etc8F91aicd47avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:Lvoeue99dud99eud99dndnadcl9hmbaeTmeindndnabcdfgd8Sbb:Yab8Sbbgi:Ygl:l:tabcefgv8Sbbgo:Ygr:l:tgwJbb;:9cawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai86bbdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad86bbdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad86bbabclfhbaecufgembxdkkaeTmbindndnabclfgd8Ueb:Yab8Uebgi:Ygl:l:tabcdfgv8Uebgo:Ygr:l:tgwJb;:FSawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai87ebdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad87ebdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad87ebabcwfhbaecufgembkkk;siliui99iue99dnaeTmbcbhiabhlindndnJ;Zl81Zalcof8UebgvciV:Y:vgoal8Ueb:YNgrJb;:FSNJbbbZJbbb:;arJbbbb9GEMgw:lJbbb9p9DTmbaw:OhDxekcjjjj94hDkalclf8Uebhqalcdf8UebhkabaiavcefciGfcetfaD87ebdndnaoak:YNgwJb;:FSNJbbbZJbbb:;awJbbbb9GEMgx:lJbbb9p9DTmbax:Ohkxekcjjjj94hkkabaiavcdfciGfcetfak87ebdndnaoaq:YNgoJb;:FSNJbbbZJbbb:;aoJbbbb9GEMgx:lJbbb9p9DTmbax:Ohqxekcjjjj94hqkabaiavcufciGfcetfaq87ebdndnJbbjZararN:tawawN:taoaoN:tgrJbbbbarJbbbb9GE:rJb;:FSNJbbbZMgr:lJbbb9p9DTmbar:Ohqxekcjjjj94hqkabaiavciGfcetfaq87ebalcwfhlaiclfhiaecufgembkkk9mbdnadcd4ae2gdTmbinababydbgecwtcw91:Yaece91cjjj98Gcjjj;8if::NUdbabclfhbadcufgdmbkkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabkkkebcjwklz9Kbb",A=WebAssembly.instantiate(r(a),{}).then(function(I){(t=I.instance).exports.__wasm_call_ctors()});function r(I){for(var p=new Uint8Array(I.length),B=0;B<I.length;++B){var m=I.charCodeAt(B);p[B]=m>96?m-97:m>64?m-39:m+4}var E=0;for(B=0;B<I.length;++B)p[E++]=p[B]<60?e[p[B]]:64*(p[B]-60)+p[++B];return p.buffer.slice(0,E)}function i(I,p,B,m,E,Q,k){var x=I.exports.sbrk,T=m+3&-4,S=x(T*E),F=x(Q.length),D=new Uint8Array(I.exports.memory.buffer);D.set(Q,F);var M=p(S,m,E,F,Q.length);if(M==0&&k&&k(S,T,E),B.set(D.subarray(S,S+m*E)),x(S-x(0)),M!=0)throw new Error("Malformed buffer data: "+M)}var o={NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp"},l={ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"},h=[],g=0;function f(I){var p={object:new Worker(I),pending:0,requests:{}};return p.object.onmessage=function(B){var m=B.data;p.pending-=m.count,p.requests[m.id][m.action](m.value),delete p.requests[m.id]},p}function u(I){var p=I.data;if(!p.id)return self.close();self.ready.then(function(B){try{var m=new Uint8Array(p.count*p.size);i(B,B.exports[p.mode],m,p.count,p.size,p.source,B.exports[p.filter]),self.postMessage({id:p.id,count:p.count,action:"resolve",value:m},[m.buffer])}catch(E){self.postMessage({id:p.id,count:p.count,action:"reject",value:E})}})}return{ready:A,supported:!0,useWorkers:function(I){(function(p){for(var B="self.ready = WebAssembly.instantiate(new Uint8Array(["+new Uint8Array(r(a))+"]), {}).then(function(result) { result.instance.exports.__wasm_call_ctors(); return result.instance; });self.onmessage = "+u.name+";"+i.toString()+u.toString(),m=new Blob([B],{type:"text/javascript"}),E=URL.createObjectURL(m),Q=h.length;Q<p;++Q)h[Q]=f(E);for(Q=p;Q<h.length;++Q)h[Q].object.postMessage({});h.length=p,URL.revokeObjectURL(E)})(I)},decodeVertexBuffer:function(I,p,B,m,E){i(t,t.exports.meshopt_decodeVertexBuffer,I,p,B,m,t.exports[o[E]])},decodeIndexBuffer:function(I,p,B,m){i(t,t.exports.meshopt_decodeIndexBuffer,I,p,B,m)},decodeIndexSequence:function(I,p,B,m){i(t,t.exports.meshopt_decodeIndexSequence,I,p,B,m)},decodeGltfBuffer:function(I,p,B,m,E,Q){i(t,t.exports[l[E]],I,p,B,m,t.exports[o[Q]])},decodeGltfBufferAsync:function(I,p,B,m,E){return h.length>0?function(Q,k,x,T,S){for(var F=h[0],D=1;D<h.length;++D)h[D].pending<F.pending&&(F=h[D]);return new Promise(function(M,v){var L=new Uint8Array(x),K=++g;F.pending+=Q,F.requests[K]={resolve:M,reject:v},F.object.postMessage({id:K,count:Q,size:k,source:L,mode:T,filter:S},[L.buffer])})}(I,p,B,l[m],o[E]):A.then(function(){var Q=new Uint8Array(I*p);return i(t,t.exports[l[m]],Q,I,p,B,t.exports[o[E]]),Q})}}}();(function(){var n,e=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!="object")return{supported:!1};var t=WebAssembly.instantiate(function(o){for(var l=new Uint8Array(o.length),h=0;h<o.length;++h){var g=o.charCodeAt(h);l[h]=g>96?g-97:g>64?g-39:g+4}var f=0;for(h=0;h<o.length;++h)l[f++]=l[h]<60?e[l[h]]:64*(l[h]-60)+l[++h];return l.buffer.slice(0,f)}("b9H79Tebbbe9Ek9Geueu9Geub9Gbb9GPuuuuuuuuuuu99uueu9Gvuuuuub9Gluuuub9Gquuuuuuu99uueu9Gwuuuuuu99ueu9Giuuue999Gluuuueu9GiuuueuizsdilvoirwDbqqbeqlve9Weiiviebeoweuec:G;jekr:Tewo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bbz9TW79O9V9Wt9F79P9T9W29P9M95bl8E9TW79O9V9Wt9F79P9T9W29P9M959x9Pt9OcttV9P9I91tW7bvQ9TW79O9V9Wt9F79P9T9W29P9M959q9V9P9Ut7boX9TW79O9V9Wt9F79P9T9W29P9M959t9J9H2Wbra9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94SWt9J9O9sW9T9H9Wbwl79IV9RbDDwebcekdxmq::9Usdbk;i6iKuY99Ou8Jjjjjbc;W;ab9RgP8KjjjjbaPcwfcbc;Kbz:ljjjb8AaPcualcefgscdtascFFFFi0Ecbyd1:jjjbHjjjjbbgzBdwaPceBd9OaPazBdbaPcuadcitadcFFFFe0Ecbyd1:jjjbHjjjjbbgHBdxaPcdBd9OaPaHBdlaPaeadalcbz:cjjjbaPcualcdtgOalcFFFFi0EgAcbyd1:jjjbHjjjjbbgCBdzaPciBd9OaPaAcbyd1:jjjbHjjjjbbgXBdCaPclBd9Oalcd4alfhQcehLinaLgscethLasaQ6mbkcbhKaPcuascdtgLascFFFFi0Ecbyd1:jjjbHjjjjbbgQBdKaPcvBd9OaQcFeaLz:ljjjbhYdnalTmbavcd4h8AascufhEinaiaKa8A2cdtfg3ydlgscH4as7c:F:b:DD2a3ydbgscH4as7c;D;O:B8J27a3ydwgscH4as7c:3F;N8N27hQcbhsdndninaYaQaEGgQcdtfg5ydbgLcuSmeaiaLa8A2cdtfa3cxz:ojjjbTmdascefgsaQfhQasaE9nmbxdkka5aKBdbaKhLkaCaKcdtfaLBdbaKcefgKal9hmbkcbhsaXhLinaLasBdbaLclfhLalascefgs9hmbkcbhsaChLaXhQindnasaLydbgESmbaQaXaEcdtfgEydbBdbaEasBdbkaLclfhLaQclfhQalascefgs9hmbkkcbh8EaYcbyd:m:jjjbH:bjjjbbaPclBd9OaPalcbyd1:jjjbHjjjjbbgEBdKaPcvBd9OaPaAcbyd1:jjjbHjjjjbbgsBd3aPcoBd9OaPaAcbyd1:jjjbHjjjjbbgLBdaaPcrBd9OascFeaOz:ljjjbh8FaLcFeaOz:ljjjbhadnalTmbaHcwfhhindnaza8EgQcefg8Ecdtfydbg3azaQcdtgsfydbgLSmba3aL9RhOaHaLcitfhgaaasfh8Ja8FasfhKcbh8Aindndnaga8Acitfydbg5aQ9hmbaKaQBdba8JaQBdbxekdnaza5cdtg8KfgsclfydbgLasydbgsSmbaHascitg3fydbaQSmeaLas9Rh8Lascu7aLfhYaha3fhLcbhsinaYasSmeascefhsaLydbh3aLcwfhLa3aQ9hmbkasa8L6mekaaa8KfgsaQa5asydbcuSEBdbaKa5aQaKydbcuSEBdbka8Acefg8AaO9hmbkka8Eal9hmbkaChLaXhQaah3a8Fh8AcbhsindndnasaLydbg59hmbdnasaQydbg59hmba8Aydbh5dna3ydbgYcu9hmba5cu9hmbaEasfcb86bbxikaEasfhKdnasaYSmbasa5SmbaKce86bbxikaKcl86bbxdkdnasaXa5cdtgYfydb9hmbdna3ydbgKcuSmbasaKSmba8AydbgOcuSmbasaOSmbaaaYfydbggcuSmbaga5Smba8FaYfydbgYcuSmbaYa5SmbdnaCaKcdtfydbaCaYcdtfydb9hmbaCaOcdtfydbaCagcdtfydb9hmbaEasfcd86bbxlkaEasfcl86bbxikaEasfcl86bbxdkaEasfcl86bbxekaEasfaEa5fRbb86bbkaLclfhLaQclfhQa3clfh3a8Aclfh8Aalascefgs9hmbkaxceGTmbaEhsalhLindnasRbbce9hmbascl86bbkascefhsaLcufgLmbkkcualcx2alc;v:Q;v:Qe0Ecbyd1:jjjbHjjjjbbh8JaPcwfaPyd9Ogscdtfa8JBdbaPascefgOBd9Oa8Jaialavz:djjjbdndnaDmbcbhvxekcbh5aPcwfaOcdtfcuaDal2gLcdtaLcFFFFi0Ecbyd1:jjjbHjjjjbbgvBdbaPascdfgOBd9OalTmbarcd4cdthYaDcdthKavh8AinaohsawhLa8AhQaDh3inaQasIdbaLIdbNUdbasclfhsaLclfhLaQclfhQa3cufg3mbkaoaYfhoa8AaKfh8Aa5cefg5al9hmbkkaPcwfaOcdtfcualc8S2gsalc;D;O;f8U0EgQcbyd1:jjjbHjjjjbbgLBdbaPaOcefg3Bd9OaLcbasz:ljjjbh8EdndndnaDTmbaPcwfa3cdtfaQcbyd1:jjjbHjjjjbbgoBdbaPaOcdfgLBd9Oaocbasz:ljjjb8AaPcwfaLcdtfcuaDal2gscltgLascFFFFb0Ecbyd1:jjjbHjjjjbbgwBdbaPaOcifBd9OawcbaLz:ljjjb8AadmexdkcbhocbhwadTmekcbh8AaehLindna8JaLclfydbg5cx2fgsIdba8JaLydbgYcx2fgQIdbg8M:tg8Na8JaLcwfydbgKcx2fg3IdlaQIdlgy:tg8PNa3Idba8M:tgIasIdlay:tg8RN:tg8Sa8SNa8Ra3IdwaQIdwgR:tg8UNa8PasIdwaR:tg8RN:tg8Pa8PNa8RaINa8Ua8NN:tg8Na8NNMM:rgIJbbbb9ETmba8SaI:vh8Sa8NaI:vh8Na8PaI:vh8Pka8EaCaYcdtfydbc8S2fgsa8PaI:rgIa8PNNg8RasIdbMUdbasa8NaIa8NNg8VNg8UasIdlMUdlasa8SaIa8SNg8WNg8XasIdwMUdwasa8Va8PNg8VasIdxMUdxasa8Wa8PNg8YasIdzMUdzasa8Wa8NNg8WasIdCMUdCasa8PaIa8SaRNa8Pa8MNaya8NNMM:mgyNg8MNg8PasIdKMUdKasa8Na8MNg8NasId3MUd3asa8Sa8MNg8SasIdaMUdaasa8MayNg8MasId8KMUd8KasaIasIdyMUdya8EaCa5cdtfydbc8S2fgsa8RasIdbMUdbasa8UasIdlMUdlasa8XasIdwMUdwasa8VasIdxMUdxasa8YasIdzMUdzasa8WasIdCMUdCasa8PasIdKMUdKasa8NasId3MUd3asa8SasIdaMUdaasa8MasId8KMUd8KasaIasIdyMUdya8EaCaKcdtfydbc8S2fgsa8RasIdbMUdbasa8UasIdlMUdlasa8XasIdwMUdwasa8VasIdxMUdxasa8YasIdzMUdzasa8WasIdCMUdCasa8PasIdKMUdKasa8NasId3MUd3asa8SasIdaMUdaasa8MasId8KMUd8KasaIasIdyMUdyaLcxfhLa8Acifg8Aad6mbkcbh5aehYincbhLinaEaeaLc:G1jjbfydba5fcdtfydbgQfRbbhsdndnaEaYaLfydbg3fRbbg8Ac99fcFeGcpe0mbasceSmbascd9hmekdna8AcufcFeGce0mba8Fa3cdtfydbaQ9hmekdnascufcFeGce0mbaaaQcdtfydba39hmekdna8Acv2asfc:W1jjbfRbbTmbaCaQcdtfydbaCa3cdtfydb0mekJbbacJbbjZasceSEhIa8AceShOa8JaeaLc:K1jjbfydba5fcdtfydbcx2fhsdna8JaQcx2fg8AIdwa8Ja3cx2fgKIdwgy:tg8Pa8PNa8AIdbaKIdbgR:tg8Na8NNa8AIdlaKIdlg8R:tg8Sa8SNMM:rg8MJbbbb9ETmba8Pa8M:vh8Pa8Sa8M:vh8Sa8Na8M:vh8NkJbbacaIaOEh8WdnasIdway:tgIa8PaIa8PNasIdbaR:tg8Xa8NNa8SasIdla8R:tg8VNMMg8UN:tgIaINa8Xa8Na8UN:tg8Pa8PNa8Va8Sa8UN:tg8Na8NNMM:rg8SJbbbb9ETmbaIa8S:vhIa8Na8S:vh8Na8Pa8S:vh8Pka8EaCa3cdtfydbc8S2fgsa8Pa8Wa8MNg8Sa8PNNg8UasIdbMUdbasa8Na8Sa8NNg8WNg8XasIdlMUdlasaIa8SaINg8MNg8VasIdwMUdwasa8Wa8PNg8WasIdxMUdxasa8Ma8PNg8YasIdzMUdzasa8Ma8NNg8ZasIdCMUdCasa8Pa8SaIayNa8PaRNa8Ra8NNMM:mgyNg8MNg8PasIdKMUdKasa8Na8MNg8NasId3MUd3asaIa8MNgIasIdaMUdaasa8MayNg8MasId8KMUd8Kasa8SasIdyMUdya8EaCaQcdtfydbc8S2fgsa8UasIdbMUdbasa8XasIdlMUdlasa8VasIdwMUdwasa8WasIdxMUdxasa8YasIdzMUdzasa8ZasIdCMUdCasa8PasIdKMUdKasa8NasId3MUd3asaIasIdaMUdaasa8MasId8KMUd8Kasa8SasIdyMUdykaLclfgLcx9hmbkaYcxfhYa5cifg5ad6mbkaDTmbcbhYinJbbbbhRa8JaeaYcdtfgsclfydbgKcx2fgLIdwa8JasydbgOcx2fgQIdwg8V:tg8Na8NNaLIdbaQIdbg8Y:tgIaINaLIdlaQIdlg8Z:tg8Sa8SNMMg8Wa8Jascwfydbggcx2fgsIdwa8V:tg8MNa8Na8Na8MNaIasIdba8Y:tgyNa8SasIdla8Z:tg8RNMMg8PN:tJbbbbJbbjZa8Wa8Ma8MNayayNa8Ra8RNMMg8XNa8Pa8PN:tg8U:va8UJbbbb9BEg8UNh80a8Xa8NNa8Ma8PN:ta8UNh81a8Wa8RNa8Sa8PN:ta8UNhBa8Xa8SNa8Ra8PN:ta8UNh83a8WayNaIa8PN:ta8UNhUa8XaINaya8PN:ta8UNh85aIa8RNaya8SN:tg8Pa8PNa8Sa8MNa8Ra8NN:tg8Pa8PNa8NayNa8MaIN:tg8Pa8PNMM:r:rh8PavaOaD2cdtfhLavagaD2cdtfhQavaKaD2cdtfh3a8V:mh86a8Z:mh87a8Y:mh88cbh8AaDh5Jbbbbh8RJbbbbh8UJbbbbh8WJbbbbh8XJbbbbh8VJbbbbh8YJbbbbh8ZJbbbbh89Jbbbbh8:inaPc;Wbfa8Afgscwfa8Pa81a3IdbaLIdbg8M:tg8SNa80aQIdba8M:tgyNMg8NNUdbasclfa8Pa83a8SNaBayNMgINUdbasa8Pa85a8SNaUayNMg8SNUdbascxfa8Pa86a8NNa87aINa8Ma88a8SNMMMg8MNUdba8Pa8NaINNa8XMh8Xa8Pa8Na8SNNa8VMh8Va8PaIa8SNNa8YMh8Ya8Pa8Ma8MNNaRMhRa8Pa8Na8MNNa8RMh8Ra8PaIa8MNNa8UMh8Ua8Pa8Sa8MNNa8WMh8Wa8Pa8Na8NNNa8ZMh8Za8PaIaINNa89Mh89a8Pa8Sa8SNNa8:Mh8:aLclfhLa3clfh3aQclfhQa8Aczfh8Aa5cufg5mbkaoaCaOcdtfydbgLc8S2fgsa8:asIdbMUdbasa89asIdlMUdlasa8ZasIdwMUdwasa8YasIdxMUdxasa8VasIdzMUdzasa8XasIdCMUdCasa8WasIdKMUdKasa8UasId3MUd3asa8RasIdaMUdaasaRasId8KMUd8Kasa8PasIdyMUdyaoaCaKcdtfydbgKc8S2fgsa8:asIdbMUdbasa89asIdlMUdlasa8ZasIdwMUdwasa8YasIdxMUdxasa8VasIdzMUdzasa8XasIdCMUdCasa8WasIdKMUdKasa8UasId3MUd3asa8RasIdaMUdaasaRasId8KMUd8Kasa8PasIdyMUdyaoaCagcdtfydbgOc8S2fgsa8:asIdbMUdbasa89asIdlMUdlasa8ZasIdwMUdwasa8YasIdxMUdxasa8VasIdzMUdzasa8XasIdCMUdCasa8WasIdKMUdKasa8UasId3MUd3asa8RasIdaMUdaasaRasId8KMUd8Kasa8PasIdyMUdyawaLaD2cltfh5cbhLaDh3ina5aLfgsaPc;WbfaLfgQIdbasIdbMUdbasclfg8AaQclfIdba8AIdbMUdbascwfg8AaQcwfIdba8AIdbMUdbascxfgsaQcxfIdbasIdbMUdbaLczfhLa3cufg3mbkawaKaD2cltfh5cbhLaDh3ina5aLfgsaPc;WbfaLfgQIdbasIdbMUdbasclfg8AaQclfIdba8AIdbMUdbascwfg8AaQcwfIdba8AIdbMUdbascxfgsaQcxfIdbasIdbMUdbaLczfhLa3cufg3mbkawaOaD2cltfh5cbhLaDh3ina5aLfgsaPc;WbfaLfgQIdbasIdbMUdbasclfg8AaQclfIdba8AIdbMUdbascwfg8AaQcwfIdba8AIdbMUdbascxfgsaQcxfIdbasIdbMUdbaLczfhLa3cufg3mbkaYcifgYad6mbkkdnabaeSmbabaeadcdtz:kjjjb8AkaPydbhZcbhsdnalTmbaZclfhsaZydbh3aEhLalh8AcbhQincbasydbg5a39RaLRbbcpeGEaQfhQaLcefhLasclfhsa5h3a8Acufg8AmbkaQce4hskcuadas9Rcifgrcx2arc;v:Q;v:Qe0Ecbyd1:jjjbHjjjjbbh8LaPcwfaPyd9Ogscdtfa8LBdbaPascefgLBd9OaPcwfaLcdtfcuarcdtarcFFFFi0Ecbyd1:jjjbHjjjjbbgxBdbaPascdfgLBd9OaPcwfaLcdtfaAcbyd1:jjjbHjjjjbbgHBdbaPascifgLBd9OaPcwfaLcdtfalcbyd1:jjjbHjjjjbbgnBdbaPasclfBd9OJbbbbh8Ydnadaq9nmbdnarci6mbakakNh8VaDclthca8Lcwfh9cJbbbbh8YinaPabadghalaCz:cjjjbabhOcbhzcbhKincbhsindnaCaOasfydbgQcdtgYfydbg8AaCabasc;m1jjbfydbaKfcdtfydbgLcdtfydbg5SmbaEaLfRbbgecv2aEaQfRbbg3fc;G1jjbfRbbg8Ka3cv2aefggc;G1jjbfRbbgiVcFeGTmbdnagc:W1jjbfRbbTmba5a8A0mekdna3ae9hmba3cufcFeGce0mba8FaYfydbaL9hmeka8Lazcx2fg3aLaQaicFeGg8AEBdla3aQaLa8AEBdba3a8Aa8KGcb9hBdwazcefhzkasclfgscx9hmbkdnaKcifgKah9pmbaOcxfhOazcifar9nmekkdnazmbahhdxikcbheinJbbbbJbbjZa8EaCa8Laecx2fg3ydlg8Aa3ydbg5a3ydwgLEgKcdtfydbg8Kc8S2gifgsIdyg8P:va8PJbbbb9BEasIdwa8Ja5a8AaLEgYcx2fgLIdwg8SNasIdzaLIdbg8MNasIdaMg8Pa8PMMa8SNasIdlaLIdlgyNasIdCa8SNasId3Mg8Pa8PMMayNasIdba8MNasIdxayNasIdKMg8Pa8PMMa8MNasId8KMMM:lNh8WJbbbbJbbjZa8EaCa5cdtfydbgdc8S2gQfgsIdyg8P:va8PJbbbb9BEasIdwa8Ja8Acx2fgLIdwgINasIdzaLIdbgRNasIdaMg8Pa8PMMaINasIdlaLIdlg8RNasIdCaINasId3Mg8Pa8PMMa8RNasIdbaRNasIdxa8RNasIdKMg8Pa8PMMaRNasId8KMMM:lNh8Xa3cwfhOa3clfhgdnaDTmbaoaQfgQIdwaINaQIdzaRNaQIdaMg8Pa8PMMaINaQIdla8RNaQIdCaINaQId3Mg8Pa8PMMa8RNaQIdbaRNaQIdxa8RNaQIdKMg8Pa8PMMaRNaQId8KMMMh8Nava8AaD2cdtfhLawadaD2cltfhsaQIdyh8UaDhQinaLIdbg8PJbbb;aNascxfIdbaIascwfIdbNaRasIdbNa8RasclfIdbNMMMNa8Pa8PNa8UNa8NMMh8NaLclfhLasczfhsaQcufgQmbkaoaifgQIdwa8SNaQIdza8MNaQIdaMg8Pa8PMMa8SNaQIdlayNaQIdCa8SNaQId3Mg8Pa8PMMayNaQIdba8MNaQIdxayNaQIdKMg8Pa8PMMa8MNaQId8KMMMhIavaYaD2cdtfhLawa8KaD2cltfhsaQIdyhRaDhQinaLIdbg8PJbbb;aNascxfIdba8SascwfIdbNa8MasIdbNayasclfIdbNMMMNa8Pa8PNaRNaIMMhIaLclfhLasczfhsaQcufgQmbka8WaI:lMh8Wa8Xa8N:lMh8Xkaga8AaYa8Xa8W9FgsEBdba3a5aKasEBdbaOa8Xa8WasEUdbaecefgeaz9hmbkaPc;Wbfcbcj;abz:ljjjb8Aa9chsazhLinaPc;WbfasydbcO4c;8ZGfgQaQydbcefBdbascxfhsaLcufgLmbkcbhscbhLinaPc;WbfasfgQydbh3aQaLBdba3aLfhLasclfgscj;ab9hmbkcbhsa9chLinaPc;WbfaLydbcO4c;8ZGfgQaQydbgQcefBdbaxaQcdtfasBdbaLcxfhLazascefgs9hmbkahaq9RgQci9UhJdnalTmbcbhsaHhLinaLasBdbaLclfhLalascefgs9hmbkkcbh9eancbalz:ljjjbhTaQcO9UhSaJce4h9haPydlh9icbhicbhgdnina8Laxagcdtfydbcx2fgOIdwg8Na8V9EmeaiaJ9pmeJFFuuh8Pdna9haz9pmba8Laxa9hcdtfydbcx2fIdwJbb;aZNh8Pkdna8Na8P9ETmbaiaS0mdkdnaTaCaOydlg6cdtg9kfydbg3fg0RbbaTaCaOydbgKcdtg9mfydbg9nfg9oRbbVmbdnaZa9ncdtfgsclfydbgLasydbgsSmbaLas9Rh5a9iascitfhsa8Ja3cx2fgYcwfhdaYclfhAa8Ja9ncx2fg8Kcwfh9pa8Kclfh9qcbhLcehednindnaHasydbcdtfydbgQa3SmbaHasclfydbcdtfydbg8Aa3SmbaQa8ASmba8Ja8Acx2fg8AIdba8JaQcx2fgQIdbgI:tg8Pa9qIdbaQIdlg8S:tg8MNa8KIdbaI:tgya8AIdla8S:tg8NN:ta8PaAIdba8S:tgRNaYIdbaI:tg8Ra8NN:tNa8Na9pIdbaQIdwg8S:tg8UNa8Ma8AIdwa8S:tgIN:ta8NadIdba8S:tg8SNaRaIN:tNaIayNa8Ua8PN:taIa8RNa8Sa8PN:tNMMJbbbb9FmdkascwfhsaLcefgLa56hea5aL9hmbkkaeceGTmba9hcefh9hxeka8Ea3c8S2gQfgsa8Ea9nc8S2g8AfgLIdbasIdbMUdbasaLIdlasIdlMUdlasaLIdwasIdwMUdwasaLIdxasIdxMUdxasaLIdzasIdzMUdzasaLIdCasIdCMUdCasaLIdKasIdKMUdKasaLId3asId3MUd3asaLIdaasIdaMUdaasaLId8KasId8KMUd8KasaLIdyasIdyMUdydnaDTmbaoaQfgsaoa8AfgLIdbasIdbMUdbasaLIdlasIdlMUdlasaLIdwasIdwMUdwasaLIdxasIdxMUdxasaLIdzasIdzMUdzasaLIdCasIdCMUdCasaLIdKasIdKMUdKasaLId3asId3MUd3asaLIdaasIdaMUdaasaLId8KasId8KMUd8KasaLIdyasIdyMUdyaca9n2heaca32hYawhLaDh8AinaLaYfgsaLaefgQIdbasIdbMUdbasclfg5aQclfIdba5IdbMUdbascwfg5aQcwfIdba5IdbMUdbascxfgsaQcxfIdbasIdbMUdbaLczfhLa8Acufg8AmbkkaOcwfhLdndndndnaEaKfgQRbbc9:fPdebdkaKhsinaHascdtgsfa3BdbaXasfydbgsaK9hmbxikkaXa9kfydbhsaXa9mfydbhKaHa9mfa6Bdbash6kaHaKcdtfa6Bdbka9oce86bba0ce86bbaLIdbg8Pa8Ya8Ya8P9DEh8Ya9ecefh9ececdaQRbbceSEaifhikagcefggaz9hmbkkdna9embahhdxikdnalTmbcbhLa8FhsindnasydbgQcuSmbdnaLaHaQcdtg3fydbgQ9hmba8Fa3fydbhQkasaQBdbkasclfhsalaLcefgL9hmbkcbhLaahsindnasydbgQcuSmbdnaLaHaQcdtg3fydbgQ9hmbaaa3fydbhQkasaQBdbkasclfhsalaLcefgL9hmbkkcbhdabhscbh8AindnaHasydbcdtfydbgLaHasclfydbcdtfydbgQSmbaLaHascwfydbcdtfydbg3SmbaQa3Smbabadcdtfg5aLBdba5clfaQBdba5cwfa3Bdbadcifhdkascxfhsa8Acifg8Aah6mbkadaq9nmdxbkkaPabadalaCz:cjjjbkdnamTmbama8Y:rUdbkaPyd9OgscdtaPcwffc98fhCdninasTmeaCydbcbyd:m:jjjbH:bjjjbbaCc98fhCascufhsxbkkaPc;W;abf8Kjjjjbadk;:ieouabydlhvabydbclfcbaicdtz:ljjjbhoadci9UhrdnadTmbdnalTmbaehwadhDinaoalawydbcdtfydbcdtfgqaqydbcefBdbawclfhwaDcufgDmbxdkkaehwadhDinaoawydbcdtfgqaqydbcefBdbawclfhwaDcufgDmbkkdnaiTmbcbhDaohwinawydbhqawaDBdbawclfhwaqaDfhDaicufgimbkkdnadci6mbarcearce0EhdinaecwfydbhwaeclfydbhDaeydbhidnalTmbalawcdtfydbhwalaDcdtfydbhDalaicdtfydbhikavaoaicdtfgqydbcitfaDBdbavaqydbcitfawBdlaqaqydbcefBdbavaoaDcdtfgqydbcitfawBdbavaqydbcitfaiBdlaqaqydbcefBdbavaoawcdtfgwydbcitfaiBdbavawydbcitfaDBdlawawydbcefBdbaecxfheadcufgdmbkkabydbcbBdbk:Zldouv998Jjjjjbca9Rglczfcwfcbyd11jjbBdbalcb8Pdj1jjb83izalcwfcbydN1jjbBdbalcb8Pd:m1jjb83ibdnadTmbaicd4hvdnabTmbavcdthocbhraehwinabarcx2fgiaearav2cdtfgDIdbUdbaiaDIdlUdlaiaDIdwUdwcbhiinalczfaifgDawaifIdbgqaDIdbgkakaq9EEUdbalaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkawaofhwarcefgrad9hmbxdkkavcdthrcbhwincbhiinalczfaifgDaeaifIdbgqaDIdbgkakaq9EEUdbalaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkaearfheawcefgwad9hmbkkdnabTmbadTmbJbbbbJbbjZalIdbalIdzgk:tJbbbb:xgqalIdlalIdCgx:tgmamaq9DEgqalIdwalIdKgm:tgPaPaq9DEgq:vaqJbbbb9BEhqinabaqabIdbak:tNUdbabclfgiaqaiIdbax:tNUdbabcwfgiaqaiIdbam:tNUdbabcxfhbadcufgdmbkkk8KbabaeadaialavcbcbcbcbaoarawaDz:bjjjbk8KbabaeadaialavaoarawaDaqakaxamz:bjjjbk;lOowud99wue99iul998Jjjjjbc;Wb9Rgw8KjjjjbdndnarmbcbhDxekawcwfcbc;Kbz:ljjjb8Aawcuadcx2adc;v:Q;v:Qe0Ecbyd1:jjjbHjjjjbbgqBdwawceBd9Oaqaeadaiz:djjjbawcuadcdtadcFFFFi0Egkcbyd1:jjjbHjjjjbbgxBdxawcdBd9Oadcd4adfhmceheinaegicetheaiam6mbkcbhmawcuaicdtgPaicFFFFi0Ecbyd1:jjjbHjjjjbbgsBdzawciBd9Odndnar:Zgz:rJbbbZMgH:lJbbb9p9DTmbaH:Ohexekcjjjj94hekaicufhOc:bwhAcbhCcbhXadhQinaChLaeaAgKcufaeaK9iEamgDcefaeaD9kEhYdndnadTmbaYcuf:YhHaqhiaxheadhmindndnaiIdbaHNJbbbZMg8A:lJbbb9p9DTmba8A:OhAxekcjjjj94hAkaAcCthAdndnaiclfIdbaHNJbbbZMg8A:lJbbb9p9DTmba8A:OhCxekcjjjj94hCkaCcqtaAVhAdndnaicwfIdbaHNJbbbZMg8A:lJbbb9p9DTmba8A:OhCxekcjjjj94hCkaeaAaCVBdbaicxfhiaeclfheamcufgmmbkascFeaPz:ljjjbhEcbh3cbh5indnaEaxa5cdtfydbgAcm4aA7c:v;t;h;Ev2gics4ai7aOGgmcdtfgCydbgecuSmbaeaASmbcehiinaEamaifaOGgmcdtfgCydbgecuSmeaicefhiaeaA9hmbkkaCaABdba3aecuSfh3a5cefg5ad9hmbxdkkascFeaPz:ljjjb8Acbh3kaDaYa3ar0giEhmaLa3aiEhCdna3arSmbaYaKaiEgAam9Rcd9imbdndnaXcl0mbdnaQ:ZgHaL:Zg8A:taY:Yg8EaD:Y:tg8Fa8EaK:Y:tgaa3:Zghaz:tNNNaHaz:taaNa8Aah:tNa8Aaz:ta8FNahaH:tNM:va8EMJbbbZMgH:lJbbb9p9DTmbaH:Ohexdkcjjjj94hexekamaAfcd9Theka3aQaiEhQaXcefgXcs9hmekkdndnaCmbcihicbhDxekcbhiawakcbyd1:jjjbHjjjjbbg5BdCawclBd9OdndnadTmbamcuf:YhHaqhiaxheadhmindndnaiIdbaHNJbbbZMg8A:lJbbb9p9DTmba8A:OhAxekcjjjj94hAkaAcCthAdndnaiclfIdbaHNJbbbZMg8A:lJbbb9p9DTmba8A:OhCxekcjjjj94hCkaCcqtaAVhAdndnaicwfIdbaHNJbbbZMg8A:lJbbb9p9DTmba8A:OhCxekcjjjj94hCkaeaAaCVBdbaicxfhiaeclfheamcufgmmbkascFeaPz:ljjjbhEcbhDcbh3inaxa3cdtgYfydbgAcm4aA7c:v;t;h;Ev2gics4ai7hecbhidndninaEaeaOGgmcdtfgCydbgecuSmednaxaecdtgCfydbaASmbaicefgiamfheaiaO9nmekka5aCfydbhixekaCa3BdbaDhiaDcefhDka5aYfaiBdba3cefg3ad9hmbkcuaDc32giaDc;j:KM;jb0EhexekascFeaPz:ljjjb8AcbhDcbhekawaecbyd1:jjjbHjjjjbbgeBdKawcvBd9Oaecbaiz:ljjjbhOavcd4hxdnadTmbaxcdth3a5hmalhAaqheadhEinaOamydbc32fgiaeIdbaiIdbMUdbaiaeclfIdbaiIdlMUdlaiaecwfIdbaiIdwMUdwaiaAc;81jjbalEgCIdbaiIdxMUdxaiaCIdlaiIdzMUdzaiaCIdwaiIdCMUdCaiaiIdKJbbjZMUdKamclfhmaAa3fhAaecxfheaEcufgEmbkkdnaDTmbaOcxfhiaDheinaictfgmamIdbJbbbbJbbjZaicxfIdbgH:vaHJbbbb9BEgHNUdbaic94fgmaHamIdbNUdbaic98fgmaHamIdbNUdbaiaHaiIdbNUdbaiclfgmaHamIdbNUdbaicwfgmaHamIdbNUdbaic3fhiaecufgembkkcbhAawcuaDcdtgYaDcFFFFi0Egicbyd1:jjjbHjjjjbbgeBd3awcoBd9Oawaicbyd1:jjjbHjjjjbbgEBdaaecFeaYz:ljjjbh3dnadTmbaoaoNh8Aaxcdthxalheina8Aaec;81jjbalEgmIdwaOa5ydbgCc32fgiIdC:tgHaHNamIdbaiIdx:tgHaHNamIdlaiIdz:tgHaHNMMNaqcwfIdbaiIdw:tgHaHNaqIdbaiIdb:tgHaHNaqclfIdbaiIdl:tgHaHNMMMhHdndna3aCcdtgifgmydbcuSmbaEaifIdbaH9ETmekamaABdbaEaifaHUdbka5clfh5aeaxfheaqcxfhqadaAcefgA9hmbkkaba3aYz:kjjjb8AcrhikaicdthiinaiTmeaic98fgiawcwffydbcbyd:m:jjjbH:bjjjbbxbkkawc;Wbf8KjjjjbaDk:Qdidui99ducbhi8Jjjjjbca9Rglczfcwfcbyd11jjbBdbalcb8Pdj1jjb83izalcwfcbydN1jjbBdbalcb8Pd:m1jjb83ibdndnaembJbbjFhvJbbjFhoJbbjFhrxekadcd4cdthwincbhdinalczfadfgDabadfIdbgoaDIdbgrarao9EEUdbaladfgDaoaDIdbgrarao9DEUdbadclfgdcx9hmbkabawfhbaicefgiae9hmbkalIdwalIdK:thralIdlalIdC:thoalIdbalIdz:thvkavJbbbb:xgvaoaoav9DEgoararao9DEk9DeeuabcFeaicdtz:ljjjbhlcbhbdnadTmbindnalaeydbcdtfgiydbcu9hmbaiabBdbabcefhbkaeclfheadcufgdmbkkabk9teiucbcbyd:q:jjjbgeabcifc98GfgbBd:q:jjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd:q:jjjbgeabcrfc94GfgbBd:q:jjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik9:eiuZbhedndncbyd:q:jjjbgdaecztgi9nmbcuheadai9RcFFifcz4nbcuSmekadhekcbabae9Rcifc98Gcbyd:q:jjjbfgdBd:q:jjjbdnadZbcztge9nmbadae9RcFFifcz4nb8Akk6eiucbhidnadTmbdninabRbbglaeRbbgv9hmeaecefheabcefhbadcufgdmbxdkkalav9Rhikaikk:Iedbcjwk1eFFuuFFuuFFuuFFuFFFuFFFuFbbbbbbbbebbbdbbbbbbbebbbeeebeebebbeeebebbbbbebebbbbbebbbdbbbbbbbbbbbbbbbeeeeebebbbbbebbbbbeebbbbbbbbbbbbbbbbbbbbbc1Dkxebbbdbbb:G9Kbb"),{}).then(function(o){(n=o.instance).exports.__wasm_call_ctors()});function a(o){if(!o)throw new Error("Assertion failed")}function A(o){return new Uint8Array(o.buffer,o.byteOffset,o.byteLength)}function r(o,l,h,g,f,u,I,p){var B=n.exports.sbrk,m=B(4*p),E=B(h*g),Q=B(h*u),k=new Uint8Array(n.exports.memory.buffer);k.set(A(l),E),f&&k.set(A(f),Q);var x=o(m,E,h,g,Q,u,I,p);new Uint8Array(n.exports.memory.buffer);var T=new Uint32Array(x);return A(T).set(k.subarray(m,m+4*x)),B(m-B(0)),T}var i={LockBorder:1}})();let Ie=0;class Ma{constructor(e){if(this.renderer=e.renderer,this.zUpToYUpMatrix=new R.Matrix4,this.zUpToYUpMatrix.set(1,0,0,0,0,0,-1,0,0,1,0,0,0,0,0,1),this.maxCachedItems=100,this.proxy=e.proxy,e&&(this.meshCallback=e.meshCallback,this.pointsCallback=e.pointsCallback,e.maxCachedItems!=null&&(this.maxCachedItems=e.maxCachedItems)),this.gltfLoader=new ha,e&&e.dracoLoader)this.gltfLoader.setDRACOLoader(e.dracoLoader),this.hasDracoLoader=!0;else{const t=new ga;t.setDecoderPath("https://storage.googleapis.com/ogc-3d-tiles/draco/"),this.gltfLoader.setDRACOLoader(t),this.gltfLoader.hasDracoLoader=!0}if(e&&e.ktx2Loader)this.gltfLoader.setKTX2Loader(e.ktx2Loader),this.hasKTX2Loader=!0;else if(e&&e.renderer){const t=new ie;t.setTranscoderPath("https://storage.googleapis.com/ogc-3d-tiles/basis/").detectSupport(e.renderer),this.gltfLoader.setKTX2Loader(t),this.gltfLoader.hasKTX2Loader=!0}this.gltfLoader.setMeshoptDecoder(Ra),this.hasMeshOptDecoder=!0,this.b3dmDecoder=new ca(this.gltfLoader),this.splatsDecoder=new Xa(this.gltfLoader,this.renderer),this.cache=new na.LinkedHashMap,this.register={},this.ready=[],this.downloads=[],this.nextReady=[],this.nextDownloads=[]}update(){const e=this;Ie<8&&e._download(),e._loadBatch()}_scheduleDownload(e){this.downloads.unshift(e)}_download(){if(this.nextDownloads.length!=0||(this._getNextDownloads(),this.nextDownloads.length!=0))for(;this.nextDownloads.length>0;){const e=this.nextDownloads.shift();e&&e.shouldDoDownload()&&e.doDownload()}}_meshReceived(e,t,a,A,r,i,o){this.ready.unshift([e,t,a,A,r,i,o])}_loadBatch(){for(this.nextReady.length==0&&this._getNextReady();this.nextReady.length>0;){const e=this.nextReady.shift();if(!e)return;const t=e[0],a=e[1],A=e[2],r=t.get(A);r&&a[A]&&Object.keys(a[A]).forEach(i=>{const o=a[A][i];o&&(o(r),a[A][i]=null)}),this.nextReady.length==0&&this._getNextReady()}}_getNextDownloads(){let e=Number.POSITIVE_INFINITY,t=-1;for(let a=this.downloads.length-1;a>=0;a--)this.downloads[a].distanceFunction||this.nextDownloads.push(this.downloads.splice(a,1)[0]);if(!(this.nextDownloads.length>0)){for(let a=this.downloads.length-1;a>=0;a--){const A=this.downloads[a].distanceFunction();A<=e&&(e=A,t=a)}if(t>=0){const a=this.downloads.splice(t,1).pop();this.nextDownloads.push(a);const A=a.getSiblings();for(let r=this.downloads.length-1;r>=0;r--)A.map(i=>i.uuid).includes(this.downloads[r].uuid)&&this.nextDownloads.push(this.downloads.splice(r,1).pop())}}}_getNextReady(){let e=Number.POSITIVE_INFINITY,t=-1;for(let a=this.ready.length-1;a>=0;a--)this.ready[a][3]||this.nextReady.push(this.ready.splice(a,1)[0]);if(!(this.nextReady.length>0)){for(let a=this.ready.length-1;a>=0;a--){const A=this.ready[a][3]()*this.ready[a][5];A<=e&&(e=A,t=a)}if(t>=0){const a=this.ready.splice(t,1).pop();this.nextReady.push(a);const A=a[4]();for(let r=this.ready.length-1;r>=0;r--)A.map(i=>i.uuid).includes(this.ready[r][6])&&this.nextReady.push(this.ready.splice(r,1).pop())}}}get(e,t,a,A,r,i,o,l,h,g,f){const u=this,I=Zt(a),p=new AbortController;if(e.signal.addEventListener("abort",()=>{u.register[I]&&Object.keys(u.register[I]).length!=0||p.abort("user abort")}),!(a.includes(".b3dm")||a.includes(".json")||a.includes(".gltf")||a.includes(".glb")))return void console.error("the 3DTiles cache can only be used to load B3DM, gltf and json data");if(u.register[I]||(u.register[I]={}),u.register[I][t]&&console.error(" a tile should only be loaded once"),u.register[I][t]=A,u.cache.get(I))this._meshReceived(u.cache,u.register,I,r,i,o,t);else if(Object.keys(u.register[I]).length==1){let B;a.includes(".b3dm")?B=()=>{var m;m=u.proxy?()=>fetch(u.proxy,{method:"POST",body:a,signal:p.signal}):()=>fetch(a,{signal:p.signal}),Ie++,m().then(E=>{if(!E.ok)throw console.error("could not load tile with path : "+a),new Error(`couldn't load "${a}". Request failed with status ${E.status} : ${E.statusText}`);return E.arrayBuffer()}).then(E=>this.b3dmDecoder.parseB3DM(E,Q=>{u.meshCallback(Q,g)},l,h)).then(E=>{u.cache.put(I,E),u._checkSize(),this._meshReceived(u.cache,u.register,I,r,i,o,t)}).catch(E=>{}).finally(()=>{Ie--})}:a.includes(".glb")||a.includes(".gltf")?B=f?()=>{var m;m=u.proxy?()=>fetch(u.proxy,{method:"POST",body:a,signal:p.signal}):()=>fetch(a,{signal:p.signal}),Ie++,m().then(E=>{if(!E.ok)throw console.error("could not load tile with path : "+a),new Error(`couldn't load "${a}". Request failed with status ${E.status} : ${E.statusText}`);return E.arrayBuffer()}).then(E=>this.splatsDecoder.parseSplats(E,l,h,f)).then(E=>{u.cache.put(I,E),u._checkSize(),u._meshReceived(u.cache,u.register,I,r,i,o,t)}).catch(E=>{}).finally(()=>{Ie--})}:()=>{var m;m=u.proxy?()=>fetch(u.proxy,{method:"POST",body:a,signal:p.signal}):()=>fetch(a,{signal:p.signal}),Ie++,m().then(E=>{if(!E.ok)throw console.error("could not load tile with path : "+a),new Error(`couldn't load "${a}". Request failed with status ${E.status} : ${E.statusText}`);return E.arrayBuffer()}).then(async E=>{await async function(Q){return new Promise(k=>{const x=setInterval(()=>{Q.hasDracoLoader&&!Q.dracoLoader||Q.hasKTX2Loader&&!Q.ktx2Loader||(clearInterval(x),k())},10)})}(this.gltfLoader),this.gltfLoader.parse(E,null,Q=>{Q.scene.asset=Q.asset,l&&Q.scene.applyMatrix4(this.zUpToYUpMatrix),Q.scene.traverse(k=>{k.isMesh&&(h&&k.applyMatrix4(this.zUpToYUpMatrix),u.meshCallback&&u.meshCallback(k,g)),k.isPoints&&u.pointsCallback&&u.pointsCallback(k,g)}),u.cache.put(I,Q.scene),u._checkSize(),u._meshReceived(u.cache,u.register,I,r,i,o,t)})}).catch(E=>{E!=="user abort"&&E.code}).finally(()=>{Ie--})}:a.includes(".json")&&(B=()=>{var m;m=u.proxy?()=>fetch(u.proxy,{method:"POST",body:a,signal:p.signal}):()=>fetch(a,{signal:p.signal}),Ie++,m().then(E=>{if(!E.ok)throw console.error("could not load tile with path : "+a),new Error(`couldn't load "${a}". Request failed with status ${E.status} : ${E.statusText}`);return E.json()}).then(E=>Mt(E,a)).then(E=>{u.cache.put(I,E),u._checkSize(),u._meshReceived(u.cache,u.register,I)}).catch(E=>{}).finally(()=>{Ie--})}),this._scheduleDownload({shouldDoDownload:()=>!e.signal.aborted&&!!u.register[I]&&Object.keys(u.register[I]).length>0,doDownload:B,distanceFunction:r,getSiblings:i,level:o,uuid:t})}}clear(){const e=this.maxCachedItems;this.maxCachedItems=0,this._checkSize(),this.maxCachedItems=e}invalidate(e,t){const a=Zt(e);this.register[a]&&(delete this.register[a][t],this._checkSize())}_checkSize(){const e=this;let t=0;for(;e.cache.size()>e.maxCachedItems&&t<e.cache.size();){t++;const a=e.cache.head(),A=e.register[a.key];A&&(Object.keys(A).length>0?(e.cache.remove(a.key),e.cache.put(a.key,a.value)):(e.cache.remove(a.key),delete e.register[a.key],a.value.isSplatsBatch?a.value.remove():a.value.traverse(r=>{if(r.material)if(r.material.length)for(let i=0;i<r.material.length;++i)r.material[i].dispose();else r.material.dispose();r.geometry&&r.geometry.dispose()})))}}}function Zt(n){for(var e=n.split("/"),t=[],a=0,A=0;A<e.length;A++){var r=e[A];r!=="."&&r!==""&&r!==".."?t[a++]=r:r===".."&&a>0&&a--}if(a===0)return"/";var i="";for(A=0;A<a;A++)i+="/"+t[A];return i}var Ee,Qe,Ta={exports:{}},J=Ta.exports={};function Dt(){throw new Error("setTimeout has not been defined")}function jt(){throw new Error("clearTimeout has not been defined")}function Fa(n){if(Ee===setTimeout)return setTimeout(n,0);if((Ee===Dt||!Ee)&&setTimeout)return Ee=setTimeout,setTimeout(n,0);try{return Ee(n,0)}catch{try{return Ee.call(null,n,0)}catch{return Ee.call(this,n,0)}}}(function(){try{Ee=typeof setTimeout=="function"?setTimeout:Dt}catch{Ee=Dt}try{Qe=typeof clearTimeout=="function"?clearTimeout:jt}catch{Qe=jt}})();var _e,we=[],qe=!1,At=-1;function OA(){qe&&_e&&(qe=!1,_e.length?we=_e.concat(we):At=-1,we.length&&Sa())}function Sa(){if(!qe){var n=Fa(OA);qe=!0;for(var e=we.length;e;){for(_e=we,we=[];++At<e;)_e&&_e[At].run();At=-1,e=we.length}_e=null,qe=!1,function(t){if(Qe===clearTimeout)return clearTimeout(t);if((Qe===jt||!Qe)&&clearTimeout)return Qe=clearTimeout,clearTimeout(t);try{return Qe(t)}catch{try{return Qe.call(null,t)}catch{return Qe.call(this,t)}}}(n)}}function $t(n,e){this.fun=n,this.array=e}function pe(){}J.nextTick=function(n){var e=new Array(arguments.length-1);if(arguments.length>1)for(var t=1;t<arguments.length;t++)e[t-1]=arguments[t];we.push(new $t(n,e)),we.length!==1||qe||Fa(Sa)},$t.prototype.run=function(){this.fun.apply(null,this.array)},J.title="browser",J.browser=!0,J.env={},J.argv=[],J.version="",J.versions={},J.on=pe,J.addListener=pe,J.once=pe,J.off=pe,J.removeListener=pe,J.removeAllListeners=pe,J.emit=pe,J.prependListener=pe,J.prependOnceListener=pe,J.listeners=function(n){return[]},J.binding=function(n){throw new Error("process.binding is not supported")},J.cwd=function(){return"/"},J.chdir=function(n){throw new Error("process.chdir is not supported")},J.umask=function(){return 0};const HA=Oa(Ta.exports);function he(n){if(typeof n!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(n))}function ea(n,e){for(var t,a="",A=0,r=-1,i=0,o=0;o<=n.length;++o){if(o<n.length)t=n.charCodeAt(o);else{if(t===47)break;t=47}if(t===47){if(!(r===o-1||i===1))if(r!==o-1&&i===2){if(a.length<2||A!==2||a.charCodeAt(a.length-1)!==46||a.charCodeAt(a.length-2)!==46){if(a.length>2){var l=a.lastIndexOf("/");if(l!==a.length-1){l===-1?(a="",A=0):A=(a=a.slice(0,l)).length-1-a.lastIndexOf("/"),r=o,i=0;continue}}else if(a.length===2||a.length===1){a="",A=0,r=o,i=0;continue}}e&&(a.length>0?a+="/..":a="..",A=2)}else a.length>0?a+="/"+n.slice(r+1,o):a=n.slice(r+1,o),A=o-r-1;r=o,i=0}else t===46&&i!==-1?++i:i=-1}return a}var ta,Je={resolve:function(){for(var n,e="",t=!1,a=arguments.length-1;a>=-1&&!t;a--){var A;a>=0?A=arguments[a]:(n===void 0&&(n=HA.cwd()),A=n),he(A),A.length!==0&&(e=A+"/"+e,t=A.charCodeAt(0)===47)}return e=ea(e,!t),t?e.length>0?"/"+e:"/":e.length>0?e:"."},normalize:function(n){if(he(n),n.length===0)return".";var e=n.charCodeAt(0)===47,t=n.charCodeAt(n.length-1)===47;return(n=ea(n,!e)).length!==0||e||(n="."),n.length>0&&t&&(n+="/"),e?"/"+n:n},isAbsolute:function(n){return he(n),n.length>0&&n.charCodeAt(0)===47},join:function(){if(arguments.length===0)return".";for(var n,e=0;e<arguments.length;++e){var t=arguments[e];he(t),t.length>0&&(n===void 0?n=t:n+="/"+t)}return n===void 0?".":Je.normalize(n)},relative:function(n,e){if(he(n),he(e),n===e||(n=Je.resolve(n))===(e=Je.resolve(e)))return"";for(var t=1;t<n.length&&n.charCodeAt(t)===47;++t);for(var a=n.length,A=a-t,r=1;r<e.length&&e.charCodeAt(r)===47;++r);for(var i=e.length-r,o=A<i?A:i,l=-1,h=0;h<=o;++h){if(h===o){if(i>o){if(e.charCodeAt(r+h)===47)return e.slice(r+h+1);if(h===0)return e.slice(r+h)}else A>o&&(n.charCodeAt(t+h)===47?l=h:h===0&&(l=0));break}var g=n.charCodeAt(t+h);if(g!==e.charCodeAt(r+h))break;g===47&&(l=h)}var f="";for(h=t+l+1;h<=a;++h)h!==a&&n.charCodeAt(h)!==47||(f.length===0?f+="..":f+="/..");return f.length>0?f+e.slice(r+l):(r+=l,e.charCodeAt(r)===47&&++r,e.slice(r))},_makeLong:function(n){return n},dirname:function(n){if(he(n),n.length===0)return".";for(var e=n.charCodeAt(0),t=e===47,a=-1,A=!0,r=n.length-1;r>=1;--r)if((e=n.charCodeAt(r))===47){if(!A){a=r;break}}else A=!1;return a===-1?t?"/":".":t&&a===1?"//":n.slice(0,a)},basename:function(n,e){if(e!==void 0&&typeof e!="string")throw new TypeError('"ext" argument must be a string');he(n);var t,a=0,A=-1,r=!0;if(e!==void 0&&e.length>0&&e.length<=n.length){if(e.length===n.length&&e===n)return"";var i=e.length-1,o=-1;for(t=n.length-1;t>=0;--t){var l=n.charCodeAt(t);if(l===47){if(!r){a=t+1;break}}else o===-1&&(r=!1,o=t+1),i>=0&&(l===e.charCodeAt(i)?--i==-1&&(A=t):(i=-1,A=o))}return a===A?A=o:A===-1&&(A=n.length),n.slice(a,A)}for(t=n.length-1;t>=0;--t)if(n.charCodeAt(t)===47){if(!r){a=t+1;break}}else A===-1&&(r=!1,A=t+1);return A===-1?"":n.slice(a,A)},extname:function(n){he(n);for(var e=-1,t=0,a=-1,A=!0,r=0,i=n.length-1;i>=0;--i){var o=n.charCodeAt(i);if(o!==47)a===-1&&(A=!1,a=i+1),o===46?e===-1?e=i:r!==1&&(r=1):e!==-1&&(r=-1);else if(!A){t=i+1;break}}return e===-1||a===-1||r===0||r===1&&e===a-1&&e===t+1?"":n.slice(e,a)},format:function(n){if(n===null||typeof n!="object")throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof n);return function(e,t){var a=t.dir||t.root,A=t.base||(t.name||"")+(t.ext||"");return a?a===t.root?a+A:a+e+A:A}("/",n)},parse:function(n){he(n);var e={root:"",dir:"",base:"",ext:"",name:""};if(n.length===0)return e;var t,a=n.charCodeAt(0),A=a===47;A?(e.root="/",t=1):t=0;for(var r=-1,i=0,o=-1,l=!0,h=n.length-1,g=0;h>=t;--h)if((a=n.charCodeAt(h))!==47)o===-1&&(l=!1,o=h+1),a===46?r===-1?r=h:g!==1&&(g=1):r!==-1&&(g=-1);else if(!l){i=h+1;break}return r===-1||o===-1||g===0||g===1&&r===o-1&&r===i+1?o!==-1&&(e.base=e.name=i===0&&A?n.slice(1,o):n.slice(i,o)):(i===0&&A?(e.name=n.slice(1,r),e.base=n.slice(1,o)):(e.name=n.slice(i,r),e.base=n.slice(i,o)),e.ext=n.slice(r,o)),i>0?e.dir=n.slice(0,i-1):A&&(e.dir="/"),e},sep:"/",delimiter:":",win32:null,posix:null};Je.posix=Je,module.exports=Je;class qA{constructor(e){ve(this,"_toElementFn");if(e){const{toElementFn:t}=e;if(typeof t=="function")this._toElementFn=t;else if(t)throw new TypeError("toElementFn must be a function type")}}get toElementFn(){return this._toElementFn}*[Symbol.iterator](...e){yield*this._getIterator(...e)}*values(){for(const e of this)yield e}every(e,t){let a=0;for(const A of this)if(!e.call(t,A,a++,this))return!1;return!0}some(e,t){let a=0;for(const A of this)if(e.call(t,A,a++,this))return!0;return!1}forEach(e,t){let a=0;for(const A of this)e.call(t,A,a++,this)}find(e,t){let a=0;for(const A of this)if(e.call(t,A,a++,this))return A}has(e){for(const t of this)if(t===e)return!0;return!1}reduce(e,t){let a=t,A=0;for(const r of this)a=e(a,r,A++,this);return a}toVisual(){return[...this]}print(){console.log(this.toVisual())}}/**
8
+ */var Ot=class{constructor(n,e){if(this._data=[],this._comparator=function(t,a){return t>=a},n!=null){if(!Array.isArray(n))throw Error("Constructor expects data to be an array");this._data=n}if(e!=null){if(typeof e!="function")throw Error("Constructor expects comparator to be a function");this._comparator=e}}peek(){return this.size()<1?null:this._data[0]}pop(){if(this.size()<1)return null;const n=this._data[0];return this.swap(this.size()-1,0),this._data.pop(),this.heapifyDown(0),n}replaceTop(n){if(this.size()<1)return null;const e=this._data[0];return this._data[0]=n,this.heapifyDown(0),e}push(n){this._data.push(n),this.heapifyUp(this._data.length-1)}size(){return this._data.length}swap(n,e){const t=this._data[n];this._data[n]=this._data[e],this._data[e]=t}heapifyUp(n){if(n===0)return;const e=Math.floor((n-1)/2);this._comparator(this._data[n],this._data[e])||(this.swap(n,e),this.heapifyUp(e))}heapifyDown(n){const e=2*n+1,t=2*n+2;if(e>=this._data.length)return;const a=t<this._data.length&&!this._comparator(this._data[t],this._data[e])?t:e;this._comparator(this._data[n],this._data[a])&&(this.swap(n,a),this.heapifyDown(a))}};const Ya=$e(Ze({__proto__:null,default:ot(Ot)},[Ot]));var Ht=class{constructor(n,e){if(this._data=[],this._head=0,this._cap=null,n!=null){if(!Array.isArray(n))throw Error("Constructor expects data to be an array");this._data=n}if(e!=null){if(typeof e!="number")throw Error("Constructor expects capacity to be a number");this._cap=e}}enqueue(n){return!(this._cap!=null&&this.size()>=this._cap)&&(this._data.push(n),!0)}dequeue(){if(this.size()===0)return null;const n=this._data[this._head];return this._head+=1,2*this._head>=this._data.length&&(this._data=this._data.slice(this._head),this._head=0),n}peek(n=!1){return this.size()>0?n?this._data[this._data.length-1]:this._data[this._head]:null}size(){return this._data.length-this._head}updateCapacity(n){this._cap=n}reset(){this._data=[],this._head=0}forEach(n){for(let e=this._head;e<this._data.length;e+=1)n(this._data[e],e-this._head)}toArray(){return this._data.slice(this._head)}};const Wa=$e(Ze({__proto__:null,default:ot(Ht)},[Ht]));var qt=class{constructor(){this._data=new Map,this._link=new Map,this._head=void 0,this._tail=void 0}put(n,e,t=!1){this.has(n)?this._data.set(n,e):(this._data.set(n,e),this._link.set(n,{previous:void 0,next:void 0}),this._head==null?(this._head=n,this._tail=n):t?(this._link.get(this._head).previous=n,this._link.get(n).next=this._head,this._head=n):(this._link.get(this._tail).next=n,this._link.get(n).previous=this._tail,this._tail=n))}head(){return{key:this._head,value:this.get(this._head),next:()=>this.next(this._head),previous:()=>null}}tail(){return{key:this._tail,value:this.get(this._tail),next:()=>null,previous:()=>this.previous(this._tail)}}get(n){return this._data.get(n)}previousKey(n){const e=this._link.get(n);return e!=null?e.previous:void 0}previousValue(n){return this.get(this.previousKey(n))}previous(n){const e=this.previousKey(n);return{key:e,value:this.get(e),next:()=>this.next(e),previous:()=>this.previous(e)}}nextKey(n){const e=this._link.get(n);return e!=null?e.next:void 0}nextValue(n){return this.get(this.nextKey(n))}next(n){const e=this.nextKey(n);return{key:e,value:this.get(e),next:()=>this.next(e),previous:()=>this.previous(e)}}remove(n){const e=this._data.get(n);if(e!=null)if(this.size()===1)this.reset();else{if(n===this._head){const t=this._link.get(this._head);this._link.get(t.next).previous=null,this._head=t.next}else if(n===this._tail){const t=this._link.get(this._tail);this._link.get(t.previous).next=null,this._tail=t.previous}else{const t=this._link.get(n),a=this._link.get(t.previous),A=this._link.get(t.next);a.next=t.next,A.previous=t.previous}this._link.delete(n),this._data.delete(n)}return e}has(n){return this._data.has(n)}size(){return this._data.size}reset(){this._data.clear(),this._link.clear(),this._head=void 0,this._tail=void 0}keys(){return this._data.keys()}values(){return this._data.values()}entries(){return this._data.entries()}toArray(n="orderByInsert"){if(n!=="orderByInsert"){const e=[];let t=this._head;for(;t!=null;)e.push({key:t,value:this.get(t)}),t=this.nextKey(t);return e}return Array.from(this.keys()).map(e=>({key:e,value:this.get(e)}))}},ga={Heap:Ya,Queue:Wa,LinkedHashMap:$e(Ze({__proto__:null,default:ot(qt)},[qt]))};const Xa=new TextDecoder;class fa{constructor(e,t,a,A){this.buffer=e,this.binOffset=t+a,this.binLength=A;let r=null;if(a!==0)try{const i=new Uint8Array(e,t,a);r=JSON.parse(Xa.decode(i))}catch{r={}}else r={};this.header=r}getKeys(){return Object.keys(this.header)}getData(e,t,a=null,A=null){const r=this.header;if(!(e in r))return null;const i=r[e];if(i instanceof Object){if(Array.isArray(i))return i;{const{buffer:o,binOffset:l,binLength:h}=this,g=i.byteOffset||0,f=i.type||A,u=i.componentType||a;if("type"in i&&A&&i.type!==A)throw new Error("FeatureTable: Specified type does not match expected type.");let I,p;switch(f){case"SCALAR":I=1;break;case"VEC2":I=2;break;case"VEC3":I=3;break;case"VEC4":I=4;break;default:throw new Error(`FeatureTable : Feature type not provided for "${e}".`)}const B=l+g,m=t*I;switch(u){case"BYTE":p=new Int8Array(o,B,m);break;case"UNSIGNED_BYTE":p=new Uint8Array(o,B,m);break;case"SHORT":p=new Int16Array(o,B,m);break;case"UNSIGNED_SHORT":p=new Uint16Array(o,B,m);break;case"INT":p=new Int32Array(o,B,m);break;case"UNSIGNED_INT":p=new Uint32Array(o,B,m);break;case"FLOAT":p=new Float32Array(o,B,m);break;case"DOUBLE":p=new Float64Array(o,B,m);break;default:throw new Error(`FeatureTable : Feature component type not provided for "${e}".`)}if(B+m*p.BYTES_PER_ELEMENT>l+h)throw new Error("FeatureTable: Feature data read outside binary body length.");return p}}return i}}class Za extends fa{constructor(e,t,a,A,r){super(e,a,A,r),this.batchSize=t}getData(e,t=null,a=null){return super.getData(e,this.batchSize,t,a)}}function Jt(n){let e,t,a,A=-1,r=0;for(let h=0;h<n.length;++h){const g=n[h];if(e===void 0&&(e=g.array.constructor),e!==g.array.constructor)return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.array must be of consistent array types across matching attributes."),null;if(t===void 0&&(t=g.itemSize),t!==g.itemSize)return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.itemSize must be consistent across matching attributes."),null;if(a===void 0&&(a=g.normalized),a!==g.normalized)return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.normalized must be consistent across matching attributes."),null;if(A===-1&&(A=g.gpuType),A!==g.gpuType)return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.gpuType must be consistent across matching attributes."),null;r+=g.count*t}const i=new e(r),o=new b.BufferAttribute(i,t,a);let l=0;for(let h=0;h<n.length;++h){const g=n[h];if(g.isInterleavedBufferAttribute){const f=l/t;for(let u=0,I=g.count;u<I;u++)for(let p=0;p<t;p++){const B=g.getComponent(u,p);o.setComponent(u+f,p,B)}}else i.set(g.array,l);l+=g.count*t}return A!==void 0&&(o.gpuType=A),o}function Kt(n,e){if(e===b.TrianglesDrawMode)return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."),n;if(e===b.TriangleFanDrawMode||e===b.TriangleStripDrawMode){let t=n.getIndex();if(t===null){const i=[],o=n.getAttribute("position");if(o===void 0)return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),n;for(let l=0;l<o.count;l++)i.push(l);n.setIndex(i),t=n.getIndex()}const a=t.count-2,A=[];if(e===b.TriangleFanDrawMode)for(let i=1;i<=a;i++)A.push(t.getX(0)),A.push(t.getX(i)),A.push(t.getX(i+1));else for(let i=0;i<a;i++)i%2==0?(A.push(t.getX(i)),A.push(t.getX(i+1)),A.push(t.getX(i+2))):(A.push(t.getX(i+2)),A.push(t.getX(i+1)),A.push(t.getX(i)));A.length/3!==a&&console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");const r=n.clone();return r.setIndex(A),r.clearGroups(),r}return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:",e),n}class ua{constructor(e){ve(this,"checkLoaderInitialized",async()=>new Promise(e=>{const t=setInterval(()=>{this.gltfLoader.hasDracoLoader&&!this.gltfLoader.dracoLoader||this.gltfLoader.hasKTX2Loader&&!this.gltfLoader.ktx2Loader||(clearInterval(t),e())},10)}));this.gltfLoader=e,this.tempMatrix=new R.Matrix4,this.zUpToYUpMatrix=new R.Matrix4,this.zUpToYUpMatrix.set(1,0,0,0,0,0,-1,0,0,1,0,0,0,0,0,1)}parseB3DM(e,t,a,A){const r=this,i=new DataView(e),o=String.fromCharCode(i.getUint8(0))+String.fromCharCode(i.getUint8(1))+String.fromCharCode(i.getUint8(2))+String.fromCharCode(i.getUint8(3));console.assert(o==="b3dm");const l=i.getUint32(8,!0);console.assert(l===e.byteLength);const h=i.getUint32(12,!0),g=i.getUint32(16,!0),f=i.getUint32(20,!0),u=i.getUint32(24,!0),I=new fa(e,28,h,g),p=28+h+g;new Za(e,I.getData("BATCH_LENGTH"),p,f,u);const B=p+f+u,m=new Uint8Array(e,B,l-B).slice().buffer;return new Promise(async(E,Q)=>{await this.checkLoaderInitialized(),this.gltfLoader.parse(m,null,k=>{const x=I.getData("RTC_CENTER");x?(this.tempMatrix.makeTranslation(x[0],x[1],x[2]),k.scene.applyMatrix4(this.tempMatrix)):k.userData.gltfExtensions&&k.userData.gltfExtensions.CESIUM_RTC&&(this.tempMatrix.makeTranslation(k.userData.gltfExtensions.CESIUM_RTC.center[0],k.userData.gltfExtensions.CESIUM_RTC.center[1],k.userData.gltfExtensions.CESIUM_RTC.center[2]),k.scene.applyMatrix4(this.tempMatrix)),a&&k.scene.applyMatrix4(r.zUpToYUpMatrix),k.scene.asset=k.asset,k.scene.traverse(T=>{T.isMesh&&(A&&T.applyMatrix4(r.zUpToYUpMatrix),t&&t(T))}),E(k.scene)},k=>{console.error(k)})})}parseB3DMInstanced(e,t,a,A,r){return this.parseB3DM(e,t,A,r).then(i=>{let o,l=[],h=[];i.updateWorldMatrix(!1,!0),i.traverse(f=>{f.isMesh&&(f.geometry.applyMatrix4(f.matrixWorld),l.push(f.geometry),h.push(f.material))});let g=function(f){let u=new Set;return f.forEach(p=>{for(let B in p.attributes)u.add(B)}),f.forEach(p=>{u.forEach(B=>{if(!p.attributes[B]){const m=function(Q){switch(Q){case"position":case"normal":case"color":return 3;case"uv":case"uv2":return 2;default:throw new Error(`Unknown attribute ${Q}`)}}(B),E=new Float32Array(m*p.getAttribute("position").count).fill(0);p.setAttribute(B,new R.BufferAttribute(E,m))}})}),function(p,B=!1){const m=p[0].index!==null,E=new Set(Object.keys(p[0].attributes)),Q=new Set(Object.keys(p[0].morphAttributes)),k={},x={},T=p[0].morphTargetsRelative,F=new b.BufferGeometry;let S=0;for(let D=0;D<p.length;++D){const M=p[D];let v=0;if(m!==(M.index!==null))return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+D+". All geometries must have compatible attributes; make sure index attribute exists among all geometries, or in none of them."),null;for(const L in M.attributes){if(!E.has(L))return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+D+'. All geometries must have compatible attributes; make sure "'+L+'" attribute exists among all geometries, or in none of them.'),null;k[L]===void 0&&(k[L]=[]),k[L].push(M.attributes[L]),v++}if(v!==E.size)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+D+". Make sure all geometries have the same number of attributes."),null;if(T!==M.morphTargetsRelative)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+D+". .morphTargetsRelative must be consistent throughout all geometries."),null;for(const L in M.morphAttributes){if(!Q.has(L))return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+D+". .morphAttributes must be consistent throughout all geometries."),null;x[L]===void 0&&(x[L]=[]),x[L].push(M.morphAttributes[L])}if(B){let L;if(m)L=M.index.count;else{if(M.attributes.position===void 0)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+D+". The geometry must have either an index or a position attribute"),null;L=M.attributes.position.count}F.addGroup(S,L,D),S+=L}}if(m){let D=0;const M=[];for(let v=0;v<p.length;++v){const L=p[v].index;for(let K=0;K<L.count;++K)M.push(L.getX(K)+D);D+=p[v].attributes.position.count}F.setIndex(M)}for(const D in k){const M=Jt(k[D]);if(!M)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed while trying to merge the "+D+" attribute."),null;F.setAttribute(D,M)}for(const D in x){const M=x[D][0].length;if(M===0)break;F.morphAttributes=F.morphAttributes||{},F.morphAttributes[D]=[];for(let v=0;v<M;++v){const L=[];for(let te=0;te<x[D].length;++te)L.push(x[D][te][v]);const K=Jt(L);if(!K)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed while trying to merge the "+D+" morphAttribute."),null;F.morphAttributes[D].push(K)}}return F}(f,!0)}(l);return o=new R.InstancedMesh(g,h,a),o.baseMatrix=new R.Matrix4().identity(),o})}}var dt,$a=new Uint8Array(16);function eA(){if(!dt&&!(dt=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||typeof msCrypto<"u"&&typeof msCrypto.getRandomValues=="function"&&msCrypto.getRandomValues.bind(msCrypto)))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return dt($a)}const tA=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;for(var X=[],ht=0;ht<256;++ht)X.push((ht+256).toString(16).substr(1));function aA(n){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,t=(X[n[e+0]]+X[n[e+1]]+X[n[e+2]]+X[n[e+3]]+"-"+X[n[e+4]]+X[n[e+5]]+"-"+X[n[e+6]]+X[n[e+7]]+"-"+X[n[e+8]]+X[n[e+9]]+"-"+X[n[e+10]]+X[n[e+11]]+X[n[e+12]]+X[n[e+13]]+X[n[e+14]]+X[n[e+15]]).toLowerCase();if(!function(a){return typeof a=="string"&&tA.test(a)}(t))throw TypeError("Stringified UUID is invalid");return t}function Ia(n,e,t){var a=(n=n||{}).random||(n.rng||eA)();return a[6]=15&a[6]|64,a[8]=63&a[8]|128,aA(a)}class AA{constructor(e,t){ve(this,"checkLoaderInitialized",async()=>{const e=this;return new Promise(t=>{const a=setInterval(()=>{e.gltfLoader.hasDracoLoader&&!e.gltfLoader.dracoLoader||e.gltfLoader.hasKTX2Loader&&!e.gltfLoader.ktx2Loader||(clearInterval(a),t())},10)})});this.renderer=t,this.gltfLoader=e}parseSplats(e,t,a,A){const r=this;return new Promise(async(i,o)=>{await r.checkLoaderInitialized(),r.gltfLoader.parse(e,null,l=>{l.scene;const h=l.scene.children[0],g=h.geometry.attributes.position,f=h.geometry.attributes.color,u=h.geometry.attributes.cov_0,I=h.geometry.attributes.cov_1,p=A.addSplatsTile(g,f,u,I);l.scene.traverse(B=>{B.dispose&&B.dispose()}),i(p)},l=>{console.error(l)})})}}class pa extends b.Loader{constructor(e){super(e),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(t){return new oA(t)}),this.register(function(t){return new cA(t)}),this.register(function(t){return new pA(t)}),this.register(function(t){return new BA(t)}),this.register(function(t){return new mA(t)}),this.register(function(t){return new hA(t)}),this.register(function(t){return new lA(t)}),this.register(function(t){return new bA(t)}),this.register(function(t){return new gA(t)}),this.register(function(t){return new nA(t)}),this.register(function(t){return new fA(t)}),this.register(function(t){return new dA(t)}),this.register(function(t){return new IA(t)}),this.register(function(t){return new uA(t)}),this.register(function(t){return new rA(t)}),this.register(function(t){return new CA(t)}),this.register(function(t){return new EA(t)})}load(e,t,a,A){const r=this;let i;if(this.resourcePath!=="")i=this.resourcePath;else if(this.path!==""){const h=b.LoaderUtils.extractUrlBase(e);i=b.LoaderUtils.resolveURL(h,this.path)}else i=b.LoaderUtils.extractUrlBase(e);this.manager.itemStart(e);const o=function(h){A?A(h):console.error(h),r.manager.itemError(e),r.manager.itemEnd(e)},l=new b.FileLoader(this.manager);l.setPath(this.path),l.setResponseType("arraybuffer"),l.setRequestHeader(this.requestHeader),l.setWithCredentials(this.withCredentials),l.load(e,function(h){try{r.parse(h,i,function(g){t(g),r.manager.itemEnd(e)},o)}catch(g){o(g)}},a,o)}setDRACOLoader(e){return this.dracoLoader=e,this}setKTX2Loader(e){return this.ktx2Loader=e,this}setMeshoptDecoder(e){return this.meshoptDecoder=e,this}register(e){return this.pluginCallbacks.indexOf(e)===-1&&this.pluginCallbacks.push(e),this}unregister(e){return this.pluginCallbacks.indexOf(e)!==-1&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(e),1),this}parse(e,t,a,A){let r;const i={},o={},l=new TextDecoder;if(typeof e=="string")r=JSON.parse(e);else if(e instanceof ArrayBuffer)if(l.decode(new Uint8Array(e,0,4))===Ba){try{i[G.KHR_BINARY_GLTF]=new wA(e)}catch(g){return void(A&&A(g))}r=JSON.parse(i[G.KHR_BINARY_GLTF].content)}else r=JSON.parse(l.decode(e));else r=e;if(r.asset===void 0||r.asset.version[0]<2)return void(A&&A(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported.")));const h=new GA(r,{path:t||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});h.fileLoader.setRequestHeader(this.requestHeader);for(let g=0;g<this.pluginCallbacks.length;g++){const f=this.pluginCallbacks[g](h);f.name||console.error("THREE.GLTFLoader: Invalid plugin found: missing name"),o[f.name]=f,i[f.name]=!0}if(r.extensionsUsed)for(let g=0;g<r.extensionsUsed.length;++g){const f=r.extensionsUsed[g],u=r.extensionsRequired||[];switch(f){case G.KHR_MATERIALS_UNLIT:i[f]=new sA;break;case G.KHR_DRACO_MESH_COMPRESSION:i[f]=new xA(r,this.dracoLoader);break;case G.KHR_TEXTURE_TRANSFORM:i[f]=new kA;break;case G.KHR_MESH_QUANTIZATION:i[f]=new DA;break;default:u.indexOf(f)>=0&&o[f]===void 0&&console.warn('THREE.GLTFLoader: Unknown extension "'+f+'".')}}h.setExtensions(i),h.setPlugins(o),h.parse(a,A)}parseAsync(e,t){const a=this;return new Promise(function(A,r){a.parse(e,t,A,r)})}}function iA(){let n={};return{get:function(e){return n[e]},add:function(e,t){n[e]=t},remove:function(e){delete n[e]},removeAll:function(){n={}}}}const G={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_DISPERSION:"KHR_materials_dispersion",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 rA{constructor(e){this.parser=e,this.name=G.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){const e=this.parser,t=this.parser.json.nodes||[];for(let a=0,A=t.length;a<A;a++){const r=t[a];r.extensions&&r.extensions[this.name]&&r.extensions[this.name].light!==void 0&&e._addNodeRef(this.cache,r.extensions[this.name].light)}}_loadLight(e){const t=this.parser,a="light:"+e;let A=t.cache.get(a);if(A)return A;const r=t.json,i=((r.extensions&&r.extensions[this.name]||{}).lights||[])[e];let o;const l=new b.Color(16777215);i.color!==void 0&&l.setRGB(i.color[0],i.color[1],i.color[2],b.LinearSRGBColorSpace);const h=i.range!==void 0?i.range:0;switch(i.type){case"directional":o=new b.DirectionalLight(l),o.target.position.set(0,0,-1),o.add(o.target);break;case"point":o=new b.PointLight(l),o.distance=h;break;case"spot":o=new b.SpotLight(l),o.distance=h,i.spot=i.spot||{},i.spot.innerConeAngle=i.spot.innerConeAngle!==void 0?i.spot.innerConeAngle:0,i.spot.outerConeAngle=i.spot.outerConeAngle!==void 0?i.spot.outerConeAngle:Math.PI/4,o.angle=i.spot.outerConeAngle,o.penumbra=1-i.spot.innerConeAngle/i.spot.outerConeAngle,o.target.position.set(0,0,-1),o.add(o.target);break;default:throw new Error("THREE.GLTFLoader: Unexpected light type: "+i.type)}return o.position.set(0,0,0),o.decay=2,Ce(o,i),i.intensity!==void 0&&(o.intensity=i.intensity),o.name=t.createUniqueName(i.name||"light_"+e),A=Promise.resolve(o),t.cache.add(a,A),A}getDependency(e,t){if(e==="light")return this._loadLight(t)}createNodeAttachment(e){const t=this,a=this.parser,A=a.json.nodes[e],r=(A.extensions&&A.extensions[this.name]||{}).light;return r===void 0?null:this._loadLight(r).then(function(i){return a._getNodeRef(t.cache,r,i)})}}class sA{constructor(){this.name=G.KHR_MATERIALS_UNLIT}getMaterialType(){return b.MeshBasicMaterial}extendParams(e,t,a){const A=[];e.color=new b.Color(1,1,1),e.opacity=1;const r=t.pbrMetallicRoughness;if(r){if(Array.isArray(r.baseColorFactor)){const i=r.baseColorFactor;e.color.setRGB(i[0],i[1],i[2],b.LinearSRGBColorSpace),e.opacity=i[3]}r.baseColorTexture!==void 0&&A.push(a.assignTexture(e,"map",r.baseColorTexture,b.SRGBColorSpace))}return Promise.all(A)}}class nA{constructor(e){this.parser=e,this.name=G.KHR_MATERIALS_EMISSIVE_STRENGTH}extendMaterialParams(e,t){const a=this.parser.json.materials[e];if(!a.extensions||!a.extensions[this.name])return Promise.resolve();const A=a.extensions[this.name].emissiveStrength;return A!==void 0&&(t.emissiveIntensity=A),Promise.resolve()}}class oA{constructor(e){this.parser=e,this.name=G.KHR_MATERIALS_CLEARCOAT}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?b.MeshPhysicalMaterial:null}extendMaterialParams(e,t){const a=this.parser,A=a.json.materials[e];if(!A.extensions||!A.extensions[this.name])return Promise.resolve();const r=[],i=A.extensions[this.name];if(i.clearcoatFactor!==void 0&&(t.clearcoat=i.clearcoatFactor),i.clearcoatTexture!==void 0&&r.push(a.assignTexture(t,"clearcoatMap",i.clearcoatTexture)),i.clearcoatRoughnessFactor!==void 0&&(t.clearcoatRoughness=i.clearcoatRoughnessFactor),i.clearcoatRoughnessTexture!==void 0&&r.push(a.assignTexture(t,"clearcoatRoughnessMap",i.clearcoatRoughnessTexture)),i.clearcoatNormalTexture!==void 0&&(r.push(a.assignTexture(t,"clearcoatNormalMap",i.clearcoatNormalTexture)),i.clearcoatNormalTexture.scale!==void 0)){const o=i.clearcoatNormalTexture.scale;t.clearcoatNormalScale=new b.Vector2(o,o)}return Promise.all(r)}}class cA{constructor(e){this.parser=e,this.name=G.KHR_MATERIALS_DISPERSION}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?b.MeshPhysicalMaterial:null}extendMaterialParams(e,t){const a=this.parser.json.materials[e];if(!a.extensions||!a.extensions[this.name])return Promise.resolve();const A=a.extensions[this.name];return t.dispersion=A.dispersion!==void 0?A.dispersion:0,Promise.resolve()}}class dA{constructor(e){this.parser=e,this.name=G.KHR_MATERIALS_IRIDESCENCE}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?b.MeshPhysicalMaterial:null}extendMaterialParams(e,t){const a=this.parser,A=a.json.materials[e];if(!A.extensions||!A.extensions[this.name])return Promise.resolve();const r=[],i=A.extensions[this.name];return i.iridescenceFactor!==void 0&&(t.iridescence=i.iridescenceFactor),i.iridescenceTexture!==void 0&&r.push(a.assignTexture(t,"iridescenceMap",i.iridescenceTexture)),i.iridescenceIor!==void 0&&(t.iridescenceIOR=i.iridescenceIor),t.iridescenceThicknessRange===void 0&&(t.iridescenceThicknessRange=[100,400]),i.iridescenceThicknessMinimum!==void 0&&(t.iridescenceThicknessRange[0]=i.iridescenceThicknessMinimum),i.iridescenceThicknessMaximum!==void 0&&(t.iridescenceThicknessRange[1]=i.iridescenceThicknessMaximum),i.iridescenceThicknessTexture!==void 0&&r.push(a.assignTexture(t,"iridescenceThicknessMap",i.iridescenceThicknessTexture)),Promise.all(r)}}class hA{constructor(e){this.parser=e,this.name=G.KHR_MATERIALS_SHEEN}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?b.MeshPhysicalMaterial:null}extendMaterialParams(e,t){const a=this.parser,A=a.json.materials[e];if(!A.extensions||!A.extensions[this.name])return Promise.resolve();const r=[];t.sheenColor=new b.Color(0,0,0),t.sheenRoughness=0,t.sheen=1;const i=A.extensions[this.name];if(i.sheenColorFactor!==void 0){const o=i.sheenColorFactor;t.sheenColor.setRGB(o[0],o[1],o[2],b.LinearSRGBColorSpace)}return i.sheenRoughnessFactor!==void 0&&(t.sheenRoughness=i.sheenRoughnessFactor),i.sheenColorTexture!==void 0&&r.push(a.assignTexture(t,"sheenColorMap",i.sheenColorTexture,b.SRGBColorSpace)),i.sheenRoughnessTexture!==void 0&&r.push(a.assignTexture(t,"sheenRoughnessMap",i.sheenRoughnessTexture)),Promise.all(r)}}class lA{constructor(e){this.parser=e,this.name=G.KHR_MATERIALS_TRANSMISSION}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?b.MeshPhysicalMaterial:null}extendMaterialParams(e,t){const a=this.parser,A=a.json.materials[e];if(!A.extensions||!A.extensions[this.name])return Promise.resolve();const r=[],i=A.extensions[this.name];return i.transmissionFactor!==void 0&&(t.transmission=i.transmissionFactor),i.transmissionTexture!==void 0&&r.push(a.assignTexture(t,"transmissionMap",i.transmissionTexture)),Promise.all(r)}}class bA{constructor(e){this.parser=e,this.name=G.KHR_MATERIALS_VOLUME}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?b.MeshPhysicalMaterial:null}extendMaterialParams(e,t){const a=this.parser,A=a.json.materials[e];if(!A.extensions||!A.extensions[this.name])return Promise.resolve();const r=[],i=A.extensions[this.name];t.thickness=i.thicknessFactor!==void 0?i.thicknessFactor:0,i.thicknessTexture!==void 0&&r.push(a.assignTexture(t,"thicknessMap",i.thicknessTexture)),t.attenuationDistance=i.attenuationDistance||1/0;const o=i.attenuationColor||[1,1,1];return t.attenuationColor=new b.Color().setRGB(o[0],o[1],o[2],b.LinearSRGBColorSpace),Promise.all(r)}}class gA{constructor(e){this.parser=e,this.name=G.KHR_MATERIALS_IOR}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?b.MeshPhysicalMaterial:null}extendMaterialParams(e,t){const a=this.parser.json.materials[e];if(!a.extensions||!a.extensions[this.name])return Promise.resolve();const A=a.extensions[this.name];return t.ior=A.ior!==void 0?A.ior:1.5,Promise.resolve()}}class fA{constructor(e){this.parser=e,this.name=G.KHR_MATERIALS_SPECULAR}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?b.MeshPhysicalMaterial:null}extendMaterialParams(e,t){const a=this.parser,A=a.json.materials[e];if(!A.extensions||!A.extensions[this.name])return Promise.resolve();const r=[],i=A.extensions[this.name];t.specularIntensity=i.specularFactor!==void 0?i.specularFactor:1,i.specularTexture!==void 0&&r.push(a.assignTexture(t,"specularIntensityMap",i.specularTexture));const o=i.specularColorFactor||[1,1,1];return t.specularColor=new b.Color().setRGB(o[0],o[1],o[2],b.LinearSRGBColorSpace),i.specularColorTexture!==void 0&&r.push(a.assignTexture(t,"specularColorMap",i.specularColorTexture,b.SRGBColorSpace)),Promise.all(r)}}class uA{constructor(e){this.parser=e,this.name=G.EXT_MATERIALS_BUMP}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?b.MeshPhysicalMaterial:null}extendMaterialParams(e,t){const a=this.parser,A=a.json.materials[e];if(!A.extensions||!A.extensions[this.name])return Promise.resolve();const r=[],i=A.extensions[this.name];return t.bumpScale=i.bumpFactor!==void 0?i.bumpFactor:1,i.bumpTexture!==void 0&&r.push(a.assignTexture(t,"bumpMap",i.bumpTexture)),Promise.all(r)}}class IA{constructor(e){this.parser=e,this.name=G.KHR_MATERIALS_ANISOTROPY}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?b.MeshPhysicalMaterial:null}extendMaterialParams(e,t){const a=this.parser,A=a.json.materials[e];if(!A.extensions||!A.extensions[this.name])return Promise.resolve();const r=[],i=A.extensions[this.name];return i.anisotropyStrength!==void 0&&(t.anisotropy=i.anisotropyStrength),i.anisotropyRotation!==void 0&&(t.anisotropyRotation=i.anisotropyRotation),i.anisotropyTexture!==void 0&&r.push(a.assignTexture(t,"anisotropyMap",i.anisotropyTexture)),Promise.all(r)}}class pA{constructor(e){this.parser=e,this.name=G.KHR_TEXTURE_BASISU}loadTexture(e){const t=this.parser,a=t.json,A=a.textures[e];if(!A.extensions||!A.extensions[this.name])return null;const r=A.extensions[this.name],i=t.options.ktx2Loader;if(!i){if(a.extensionsRequired&&a.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return null}return t.loadTextureImage(e,r.source,i)}}class BA{constructor(e){this.parser=e,this.name=G.EXT_TEXTURE_WEBP,this.isSupported=null}loadTexture(e){const t=this.name,a=this.parser,A=a.json,r=A.textures[e];if(!r.extensions||!r.extensions[t])return null;const i=r.extensions[t],o=A.images[i.source];let l=a.textureLoader;if(o.uri){const h=a.options.manager.getHandler(o.uri);h!==null&&(l=h)}return this.detectSupport().then(function(h){if(h)return a.loadTextureImage(e,i.source,l);if(A.extensionsRequired&&A.extensionsRequired.indexOf(t)>=0)throw new Error("THREE.GLTFLoader: WebP required by asset but unsupported.");return a.loadTexture(e)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(e){const t=new Image;t.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA",t.onload=t.onerror=function(){e(t.height===1)}})),this.isSupported}}class mA{constructor(e){this.parser=e,this.name=G.EXT_TEXTURE_AVIF,this.isSupported=null}loadTexture(e){const t=this.name,a=this.parser,A=a.json,r=A.textures[e];if(!r.extensions||!r.extensions[t])return null;const i=r.extensions[t],o=A.images[i.source];let l=a.textureLoader;if(o.uri){const h=a.options.manager.getHandler(o.uri);h!==null&&(l=h)}return this.detectSupport().then(function(h){if(h)return a.loadTextureImage(e,i.source,l);if(A.extensionsRequired&&A.extensionsRequired.indexOf(t)>=0)throw new Error("THREE.GLTFLoader: AVIF required by asset but unsupported.");return a.loadTexture(e)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(e){const t=new Image;t.src="data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAABcAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQAMAAAAABNjb2xybmNseAACAAIABoAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAAB9tZGF0EgAKCBgABogQEDQgMgkQAAAAB8dSLfI=",t.onload=t.onerror=function(){e(t.height===1)}})),this.isSupported}}class CA{constructor(e){this.name=G.EXT_MESHOPT_COMPRESSION,this.parser=e}loadBufferView(e){const t=this.parser.json,a=t.bufferViews[e];if(a.extensions&&a.extensions[this.name]){const A=a.extensions[this.name],r=this.parser.getDependency("buffer",A.buffer),i=this.parser.options.meshoptDecoder;if(!i||!i.supported){if(t.extensionsRequired&&t.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return null}return r.then(function(o){const l=A.byteOffset||0,h=A.byteLength||0,g=A.count,f=A.byteStride,u=new Uint8Array(o,l,h);return i.decodeGltfBufferAsync?i.decodeGltfBufferAsync(g,f,u,A.mode,A.filter).then(function(I){return I.buffer}):i.ready.then(function(){const I=new ArrayBuffer(g*f);return i.decodeGltfBuffer(new Uint8Array(I),g,f,u,A.mode,A.filter),I})})}return null}}class EA{constructor(e){this.name=G.EXT_MESH_GPU_INSTANCING,this.parser=e}createNodeMesh(e){const t=this.parser.json,a=t.nodes[e];if(!a.extensions||!a.extensions[this.name]||a.mesh===void 0)return null;const A=t.meshes[a.mesh];for(const l of A.primitives)if(l.mode!==ne.TRIANGLES&&l.mode!==ne.TRIANGLE_STRIP&&l.mode!==ne.TRIANGLE_FAN&&l.mode!==void 0)return null;const r=a.extensions[this.name].attributes,i=[],o={};for(const l in r)i.push(this.parser.getDependency("accessor",r[l]).then(h=>(o[l]=h,o[l])));return i.length<1?null:(i.push(this.parser.createNodeMesh(e)),Promise.all(i).then(l=>{const h=l.pop(),g=h.isGroup?h.children:[h],f=l[0].count,u=[];for(const I of g){const p=new b.Matrix4,B=new b.Vector3,m=new b.Quaternion,E=new b.Vector3(1,1,1),Q=new b.InstancedMesh(I.geometry,I.material,f);for(let k=0;k<f;k++)o.TRANSLATION&&B.fromBufferAttribute(o.TRANSLATION,k),o.ROTATION&&m.fromBufferAttribute(o.ROTATION,k),o.SCALE&&E.fromBufferAttribute(o.SCALE,k),Q.setMatrixAt(k,p.compose(B,m,E));for(const k in o)if(k==="_COLOR_0"){const x=o[k];Q.instanceColor=new b.InstancedBufferAttribute(x.array,x.itemSize,x.normalized)}else k!=="TRANSLATION"&&k!=="ROTATION"&&k!=="SCALE"&&I.geometry.setAttribute(k,o[k]);b.Object3D.prototype.copy.call(Q,I),this.parser.assignFinalMaterial(Q),u.push(Q)}return h.isGroup?(h.clear(),h.add(...u),h):u[0]}))}}const Ba="glTF",QA=1313821514,yA=5130562;class wA{constructor(e){this.name=G.KHR_BINARY_GLTF,this.content=null,this.body=null;const t=new DataView(e,0,12),a=new TextDecoder;if(this.header={magic:a.decode(new Uint8Array(e.slice(0,4))),version:t.getUint32(4,!0),length:t.getUint32(8,!0)},this.header.magic!==Ba)throw new Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");if(this.header.version<2)throw new Error("THREE.GLTFLoader: Legacy binary file detected.");const A=this.header.length-12,r=new DataView(e,12);let i=0;for(;i<A;){const o=r.getUint32(i,!0);i+=4;const l=r.getUint32(i,!0);if(i+=4,l===QA){const h=new Uint8Array(e,12+i,o);this.content=a.decode(h)}else if(l===yA){const h=12+i;this.body=e.slice(h,h+o)}i+=o}if(this.content===null)throw new Error("THREE.GLTFLoader: JSON content not found.")}}class xA{constructor(e,t){if(!t)throw new Error("THREE.GLTFLoader: No DRACOLoader instance provided.");this.name=G.KHR_DRACO_MESH_COMPRESSION,this.json=e,this.dracoLoader=t,this.dracoLoader.preload()}decodePrimitive(e,t){const a=this.json,A=this.dracoLoader,r=e.extensions[this.name].bufferView,i=e.extensions[this.name].attributes,o={},l={},h={};for(const g in i){const f=jt[g]||g.toLowerCase();o[f]=i[g]}for(const g in e.attributes){const f=jt[g]||g.toLowerCase();if(i[g]!==void 0){const u=a.accessors[e.attributes[g]],I=He[u.componentType];h[f]=I.name,l[f]=u.normalized===!0}}return t.getDependency("bufferView",r).then(function(g){return new Promise(function(f,u){A.decodeDracoFile(g,function(I){for(const p in I.attributes){const B=I.attributes[p],m=l[p];m!==void 0&&(B.normalized=m)}f(I)},o,h,b.LinearSRGBColorSpace,u)})})}}class kA{constructor(){this.name=G.KHR_TEXTURE_TRANSFORM}extendTexture(e,t){return(t.texCoord!==void 0&&t.texCoord!==e.channel||t.offset!==void 0||t.rotation!==void 0||t.scale!==void 0)&&(e=e.clone(),t.texCoord!==void 0&&(e.channel=t.texCoord),t.offset!==void 0&&e.offset.fromArray(t.offset),t.rotation!==void 0&&(e.rotation=t.rotation),t.scale!==void 0&&e.repeat.fromArray(t.scale),e.needsUpdate=!0),e}}class DA{constructor(){this.name=G.KHR_MESH_QUANTIZATION}}class ma extends b.Interpolant{constructor(e,t,a,A){super(e,t,a,A)}copySampleValue_(e){const t=this.resultBuffer,a=this.sampleValues,A=this.valueSize,r=e*A*3+A;for(let i=0;i!==A;i++)t[i]=a[r+i];return t}interpolate_(e,t,a,A){const r=this.resultBuffer,i=this.sampleValues,o=this.valueSize,l=2*o,h=3*o,g=A-t,f=(a-t)/g,u=f*f,I=u*f,p=e*h,B=p-h,m=-2*I+3*u,E=I-u,Q=1-m,k=E-u+f;for(let x=0;x!==o;x++){const T=i[B+x+o],F=i[B+x+l]*g,S=i[p+x+o],D=i[p+x]*g;r[x]=Q*T+k*F+m*S+E*D}return r}}const jA=new b.Quaternion;class RA extends ma{interpolate_(e,t,a,A){const r=super.interpolate_(e,t,a,A);return jA.fromArray(r).normalize().toArray(r),r}}const ne={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},He={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},zt={9728:b.NearestFilter,9729:b.LinearFilter,9984:b.NearestMipmapNearestFilter,9985:b.LinearMipmapNearestFilter,9986:b.NearestMipmapLinearFilter,9987:b.LinearMipmapLinearFilter},Vt={33071:b.ClampToEdgeWrapping,33648:b.MirroredRepeatWrapping,10497:b.RepeatWrapping},lt={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},jt={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"},Re={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},MA={CUBICSPLINE:void 0,LINEAR:b.InterpolateLinear,STEP:b.InterpolateDiscrete},TA="OPAQUE",SA="MASK",FA="BLEND";function Le(n,e,t){for(const a in t.extensions)n[a]===void 0&&(e.userData.gltfExtensions=e.userData.gltfExtensions||{},e.userData.gltfExtensions[a]=t.extensions[a])}function Ce(n,e){e.extras!==void 0&&(typeof e.extras=="object"?Object.assign(n.userData,e.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+e.extras))}function vA(n,e){if(n.updateMorphTargets(),e.weights!==void 0)for(let t=0,a=e.weights.length;t<a;t++)n.morphTargetInfluences[t]=e.weights[t];if(e.extras&&Array.isArray(e.extras.targetNames)){const t=e.extras.targetNames;if(n.morphTargetInfluences.length===t.length){n.morphTargetDictionary={};for(let a=0,A=t.length;a<A;a++)n.morphTargetDictionary[t[a]]=a}else console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.")}}function LA(n){let e;const t=n.extensions&&n.extensions[G.KHR_DRACO_MESH_COMPRESSION];if(e=t?"draco:"+t.bufferView+":"+t.indices+":"+bt(t.attributes):n.indices+":"+bt(n.attributes)+":"+n.mode,n.targets!==void 0)for(let a=0,A=n.targets.length;a<A;a++)e+=":"+bt(n.targets[a]);return e}function bt(n){let e="";const t=Object.keys(n).sort();for(let a=0,A=t.length;a<A;a++)e+=t[a]+":"+n[t[a]]+";";return e}function Rt(n){switch(n){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.")}}const UA=new b.Matrix4;class GA{constructor(e={},t={}){this.json=e,this.extensions={},this.plugins={},this.options=t,this.cache=new iA,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 a=!1,A=-1,r=!1,i=-1;if(typeof navigator<"u"){const o=navigator.userAgent;a=/^((?!chrome|android).)*safari/i.test(o)===!0;const l=o.match(/Version\/(\d+)/);A=a&&l?parseInt(l[1],10):-1,r=o.indexOf("Firefox")>-1,i=r?o.match(/Firefox\/([0-9]+)\./)[1]:-1}typeof createImageBitmap>"u"||a&&A<17||r&&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(e){this.extensions=e}setPlugins(e){this.plugins=e}parse(e,t){const a=this,A=this.json,r=this.extensions;this.cache.removeAll(),this.nodeCache={},this._invokeAll(function(i){return i._markDefs&&i._markDefs()}),Promise.all(this._invokeAll(function(i){return i.beforeRoot&&i.beforeRoot()})).then(function(){return Promise.all([a.getDependencies("scene"),a.getDependencies("animation"),a.getDependencies("camera")])}).then(function(i){const o={scene:i[0][A.scene||0],scenes:i[0],animations:i[1],cameras:i[2],asset:A.asset,parser:a,userData:{}};return Le(r,o,A),Ce(o,A),Promise.all(a._invokeAll(function(l){return l.afterRoot&&l.afterRoot(o)})).then(function(){for(const l of o.scenes)l.updateMatrixWorld();e(o)})}).catch(t)}_markDefs(){const e=this.json.nodes||[],t=this.json.skins||[],a=this.json.meshes||[];for(let A=0,r=t.length;A<r;A++){const i=t[A].joints;for(let o=0,l=i.length;o<l;o++)e[i[o]].isBone=!0}for(let A=0,r=e.length;A<r;A++){const i=e[A];i.mesh!==void 0&&(this._addNodeRef(this.meshCache,i.mesh),i.skin!==void 0&&(a[i.mesh].isSkinnedMesh=!0)),i.camera!==void 0&&this._addNodeRef(this.cameraCache,i.camera)}}_addNodeRef(e,t){t!==void 0&&(e.refs[t]===void 0&&(e.refs[t]=e.uses[t]=0),e.refs[t]++)}_getNodeRef(e,t,a){if(e.refs[t]<=1)return a;const A=a.clone(),r=(i,o)=>{const l=this.associations.get(i);l!=null&&this.associations.set(o,l);for(const[h,g]of i.children.entries())r(g,o.children[h])};return r(a,A),A.name+="_instance_"+e.uses[t]++,A}_invokeOne(e){const t=Object.values(this.plugins);t.push(this);for(let a=0;a<t.length;a++){const A=e(t[a]);if(A)return A}return null}_invokeAll(e){const t=Object.values(this.plugins);t.unshift(this);const a=[];for(let A=0;A<t.length;A++){const r=e(t[A]);r&&a.push(r)}return a}getDependency(e,t){const a=e+":"+t;let A=this.cache.get(a);if(!A){switch(e){case"scene":A=this.loadScene(t);break;case"node":A=this._invokeOne(function(r){return r.loadNode&&r.loadNode(t)});break;case"mesh":A=this._invokeOne(function(r){return r.loadMesh&&r.loadMesh(t)});break;case"accessor":A=this.loadAccessor(t);break;case"bufferView":A=this._invokeOne(function(r){return r.loadBufferView&&r.loadBufferView(t)});break;case"buffer":A=this.loadBuffer(t);break;case"material":A=this._invokeOne(function(r){return r.loadMaterial&&r.loadMaterial(t)});break;case"texture":A=this._invokeOne(function(r){return r.loadTexture&&r.loadTexture(t)});break;case"skin":A=this.loadSkin(t);break;case"animation":A=this._invokeOne(function(r){return r.loadAnimation&&r.loadAnimation(t)});break;case"camera":A=this.loadCamera(t);break;default:if(A=this._invokeOne(function(r){return r!=this&&r.getDependency&&r.getDependency(e,t)}),!A)throw new Error("Unknown type: "+e)}this.cache.add(a,A)}return A}getDependencies(e){let t=this.cache.get(e);if(!t){const a=this,A=this.json[e+(e==="mesh"?"es":"s")]||[];t=Promise.all(A.map(function(r,i){return a.getDependency(e,i)})),this.cache.add(e,t)}return t}loadBuffer(e){const t=this.json.buffers[e],a=this.fileLoader;if(t.type&&t.type!=="arraybuffer")throw new Error("THREE.GLTFLoader: "+t.type+" buffer type is not supported.");if(t.uri===void 0&&e===0)return Promise.resolve(this.extensions[G.KHR_BINARY_GLTF].body);const A=this.options;return new Promise(function(r,i){a.load(b.LoaderUtils.resolveURL(t.uri,A.path),r,void 0,function(){i(new Error('THREE.GLTFLoader: Failed to load buffer "'+t.uri+'".'))})})}loadBufferView(e){const t=this.json.bufferViews[e];return this.getDependency("buffer",t.buffer).then(function(a){const A=t.byteLength||0,r=t.byteOffset||0;return a.slice(r,r+A)})}loadAccessor(e){const t=this,a=this.json,A=this.json.accessors[e];if(A.bufferView===void 0&&A.sparse===void 0){const i=lt[A.type],o=He[A.componentType],l=A.normalized===!0,h=new o(A.count*i);return Promise.resolve(new b.BufferAttribute(h,i,l))}const r=[];return A.bufferView!==void 0?r.push(this.getDependency("bufferView",A.bufferView)):r.push(null),A.sparse!==void 0&&(r.push(this.getDependency("bufferView",A.sparse.indices.bufferView)),r.push(this.getDependency("bufferView",A.sparse.values.bufferView))),Promise.all(r).then(function(i){const o=i[0],l=lt[A.type],h=He[A.componentType],g=h.BYTES_PER_ELEMENT,f=g*l,u=A.byteOffset||0,I=A.bufferView!==void 0?a.bufferViews[A.bufferView].byteStride:void 0,p=A.normalized===!0;let B,m;if(I&&I!==f){const E=Math.floor(u/I),Q="InterleavedBuffer:"+A.bufferView+":"+A.componentType+":"+E+":"+A.count;let k=t.cache.get(Q);k||(B=new h(o,E*I,A.count*I/g),k=new b.InterleavedBuffer(B,I/g),t.cache.add(Q,k)),m=new b.InterleavedBufferAttribute(k,l,u%I/g,p)}else B=o===null?new h(A.count*l):new h(o,u,A.count*l),m=new b.BufferAttribute(B,l,p);if(A.sparse!==void 0){const E=lt.SCALAR,Q=He[A.sparse.indices.componentType],k=A.sparse.indices.byteOffset||0,x=A.sparse.values.byteOffset||0,T=new Q(i[1],k,A.sparse.count*E),F=new h(i[2],x,A.sparse.count*l);o!==null&&(m=new b.BufferAttribute(m.array.slice(),m.itemSize,m.normalized)),m.normalized=!1;for(let S=0,D=T.length;S<D;S++){const M=T[S];if(m.setX(M,F[S*l]),l>=2&&m.setY(M,F[S*l+1]),l>=3&&m.setZ(M,F[S*l+2]),l>=4&&m.setW(M,F[S*l+3]),l>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}m.normalized=p}return m})}loadTexture(e){const t=this.json,a=this.options,A=t.textures[e].source,r=t.images[A];let i=this.textureLoader;if(r.uri){const o=a.manager.getHandler(r.uri);o!==null&&(i=o)}return this.loadTextureImage(e,A,i)}loadTextureImage(e,t,a){const A=this,r=this.json,i=r.textures[e],o=r.images[t],l=(o.uri||o.bufferView)+":"+i.sampler;if(this.textureCache[l])return this.textureCache[l];const h=this.loadImageSource(t,a).then(function(g){g.flipY=!1,g.name=i.name||o.name||"",g.name===""&&typeof o.uri=="string"&&o.uri.startsWith("data:image/")===!1&&(g.name=o.uri);const f=(r.samplers||{})[i.sampler]||{};return g.magFilter=zt[f.magFilter]||b.LinearFilter,g.minFilter=zt[f.minFilter]||b.LinearMipmapLinearFilter,g.wrapS=Vt[f.wrapS]||b.RepeatWrapping,g.wrapT=Vt[f.wrapT]||b.RepeatWrapping,g.generateMipmaps=!g.isCompressedTexture&&g.minFilter!==b.NearestFilter&&g.minFilter!==b.LinearFilter,A.associations.set(g,{textures:e}),g}).catch(function(){return null});return this.textureCache[l]=h,h}loadImageSource(e,t){const a=this,A=this.json,r=this.options;if(this.sourceCache[e]!==void 0)return this.sourceCache[e].then(f=>f.clone());const i=A.images[e],o=self.URL||self.webkitURL;let l=i.uri||"",h=!1;if(i.bufferView!==void 0)l=a.getDependency("bufferView",i.bufferView).then(function(f){h=!0;const u=new Blob([f],{type:i.mimeType});return l=o.createObjectURL(u),l});else if(i.uri===void 0)throw new Error("THREE.GLTFLoader: Image "+e+" is missing URI and bufferView");const g=Promise.resolve(l).then(function(f){return new Promise(function(u,I){let p=u;t.isImageBitmapLoader===!0&&(p=function(B){const m=new b.Texture(B);m.needsUpdate=!0,u(m)}),t.load(b.LoaderUtils.resolveURL(f,r.path),p,void 0,I)})}).then(function(f){var u;return h===!0&&o.revokeObjectURL(l),Ce(f,i),f.userData.mimeType=i.mimeType||((u=i.uri).search(/\.jpe?g($|\?)/i)>0||u.search(/^data\:image\/jpeg/)===0?"image/jpeg":u.search(/\.webp($|\?)/i)>0||u.search(/^data\:image\/webp/)===0?"image/webp":u.search(/\.ktx2($|\?)/i)>0||u.search(/^data\:image\/ktx2/)===0?"image/ktx2":"image/png"),f}).catch(function(f){throw console.error("THREE.GLTFLoader: Couldn't load texture",l),f});return this.sourceCache[e]=g,g}assignTexture(e,t,a,A){const r=this;return this.getDependency("texture",a.index).then(function(i){if(!i)return null;if(a.texCoord!==void 0&&a.texCoord>0&&((i=i.clone()).channel=a.texCoord),r.extensions[G.KHR_TEXTURE_TRANSFORM]){const o=a.extensions!==void 0?a.extensions[G.KHR_TEXTURE_TRANSFORM]:void 0;if(o){const l=r.associations.get(i);i=r.extensions[G.KHR_TEXTURE_TRANSFORM].extendTexture(i,o),r.associations.set(i,l)}}return A!==void 0&&(i.colorSpace=A),e[t]=i,i})}assignFinalMaterial(e){const t=e.geometry;let a=e.material;const A=t.attributes.tangent===void 0,r=t.attributes.color!==void 0,i=t.attributes.normal===void 0;if(e.isPoints){const o="PointsMaterial:"+a.uuid;let l=this.cache.get(o);l||(l=new b.PointsMaterial,b.Material.prototype.copy.call(l,a),l.color.copy(a.color),l.map=a.map,l.sizeAttenuation=!1,this.cache.add(o,l)),a=l}else if(e.isLine){const o="LineBasicMaterial:"+a.uuid;let l=this.cache.get(o);l||(l=new b.LineBasicMaterial,b.Material.prototype.copy.call(l,a),l.color.copy(a.color),l.map=a.map,this.cache.add(o,l)),a=l}if(A||r||i){let o="ClonedMaterial:"+a.uuid+":";A&&(o+="derivative-tangents:"),r&&(o+="vertex-colors:"),i&&(o+="flat-shading:");let l=this.cache.get(o);l||(l=a.clone(),r&&(l.vertexColors=!0),i&&(l.flatShading=!0),A&&(l.normalScale&&(l.normalScale.y*=-1),l.clearcoatNormalScale&&(l.clearcoatNormalScale.y*=-1)),this.cache.add(o,l),this.associations.set(l,this.associations.get(a))),a=l}e.material=a}getMaterialType(){return b.MeshStandardMaterial}loadMaterial(e){const t=this,a=this.json,A=this.extensions,r=a.materials[e];let i;const o={},l=[];if((r.extensions||{})[G.KHR_MATERIALS_UNLIT]){const g=A[G.KHR_MATERIALS_UNLIT];i=g.getMaterialType(),l.push(g.extendParams(o,r,t))}else{const g=r.pbrMetallicRoughness||{};if(o.color=new b.Color(1,1,1),o.opacity=1,Array.isArray(g.baseColorFactor)){const f=g.baseColorFactor;o.color.setRGB(f[0],f[1],f[2],b.LinearSRGBColorSpace),o.opacity=f[3]}g.baseColorTexture!==void 0&&l.push(t.assignTexture(o,"map",g.baseColorTexture,b.SRGBColorSpace)),o.metalness=g.metallicFactor!==void 0?g.metallicFactor:1,o.roughness=g.roughnessFactor!==void 0?g.roughnessFactor:1,g.metallicRoughnessTexture!==void 0&&(l.push(t.assignTexture(o,"metalnessMap",g.metallicRoughnessTexture)),l.push(t.assignTexture(o,"roughnessMap",g.metallicRoughnessTexture))),i=this._invokeOne(function(f){return f.getMaterialType&&f.getMaterialType(e)}),l.push(Promise.all(this._invokeAll(function(f){return f.extendMaterialParams&&f.extendMaterialParams(e,o)})))}r.doubleSided===!0&&(o.side=b.DoubleSide);const h=r.alphaMode||TA;if(h===FA?(o.transparent=!0,o.depthWrite=!1):(o.transparent=!1,h===SA&&(o.alphaTest=r.alphaCutoff!==void 0?r.alphaCutoff:.5)),r.normalTexture!==void 0&&i!==b.MeshBasicMaterial&&(l.push(t.assignTexture(o,"normalMap",r.normalTexture)),o.normalScale=new b.Vector2(1,1),r.normalTexture.scale!==void 0)){const g=r.normalTexture.scale;o.normalScale.set(g,g)}if(r.occlusionTexture!==void 0&&i!==b.MeshBasicMaterial&&(l.push(t.assignTexture(o,"aoMap",r.occlusionTexture)),r.occlusionTexture.strength!==void 0&&(o.aoMapIntensity=r.occlusionTexture.strength)),r.emissiveFactor!==void 0&&i!==b.MeshBasicMaterial){const g=r.emissiveFactor;o.emissive=new b.Color().setRGB(g[0],g[1],g[2],b.LinearSRGBColorSpace)}return r.emissiveTexture!==void 0&&i!==b.MeshBasicMaterial&&l.push(t.assignTexture(o,"emissiveMap",r.emissiveTexture,b.SRGBColorSpace)),Promise.all(l).then(function(){const g=new i(o);return r.name&&(g.name=r.name),Ce(g,r),t.associations.set(g,{materials:e}),r.extensions&&Le(A,g,r),g})}createUniqueName(e){const t=b.PropertyBinding.sanitizeNodeName(e||"");return t in this.nodeNamesUsed?t+"_"+ ++this.nodeNamesUsed[t]:(this.nodeNamesUsed[t]=0,t)}loadGeometries(e){const t=this,a=this.extensions,A=this.primitiveCache;function r(o){return a[G.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(o,t).then(function(l){return Yt(l,o,t)})}const i=[];for(let o=0,l=e.length;o<l;o++){const h=e[o],g=LA(h),f=A[g];if(f)i.push(f.promise);else{let u;u=h.extensions&&h.extensions[G.KHR_DRACO_MESH_COMPRESSION]?r(h):Yt(new b.BufferGeometry,h,t),A[g]={primitive:h,promise:u},i.push(u)}}return Promise.all(i)}loadMesh(e){const t=this,a=this.json,A=this.extensions,r=a.meshes[e],i=r.primitives,o=[];for(let h=0,g=i.length;h<g;h++){const f=i[h].material===void 0?((l=this.cache).DefaultMaterial===void 0&&(l.DefaultMaterial=new b.MeshStandardMaterial({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:b.FrontSide})),l.DefaultMaterial):this.getDependency("material",i[h].material);o.push(f)}var l;return o.push(t.loadGeometries(i)),Promise.all(o).then(function(h){const g=h.slice(0,h.length-1),f=h[h.length-1],u=[];for(let p=0,B=f.length;p<B;p++){const m=f[p],E=i[p];let Q;const k=g[p];if(E.mode===ne.TRIANGLES||E.mode===ne.TRIANGLE_STRIP||E.mode===ne.TRIANGLE_FAN||E.mode===void 0)Q=r.isSkinnedMesh===!0?new b.SkinnedMesh(m,k):new b.Mesh(m,k),Q.isSkinnedMesh===!0&&Q.normalizeSkinWeights(),E.mode===ne.TRIANGLE_STRIP?Q.geometry=Kt(Q.geometry,b.TriangleStripDrawMode):E.mode===ne.TRIANGLE_FAN&&(Q.geometry=Kt(Q.geometry,b.TriangleFanDrawMode));else if(E.mode===ne.LINES)Q=new b.LineSegments(m,k);else if(E.mode===ne.LINE_STRIP)Q=new b.Line(m,k);else if(E.mode===ne.LINE_LOOP)Q=new b.LineLoop(m,k);else{if(E.mode!==ne.POINTS)throw new Error("THREE.GLTFLoader: Primitive mode unsupported: "+E.mode);Q=new b.Points(m,k)}Object.keys(Q.geometry.morphAttributes).length>0&&vA(Q,r),Q.name=t.createUniqueName(r.name||"mesh_"+e),Ce(Q,r),E.extensions&&Le(A,Q,E),t.assignFinalMaterial(Q),u.push(Q)}for(let p=0,B=u.length;p<B;p++)t.associations.set(u[p],{meshes:e,primitives:p});if(u.length===1)return r.extensions&&Le(A,u[0],r),u[0];const I=new b.Group;r.extensions&&Le(A,I,r),t.associations.set(I,{meshes:e});for(let p=0,B=u.length;p<B;p++)I.add(u[p]);return I})}loadCamera(e){let t;const a=this.json.cameras[e],A=a[a.type];if(A)return a.type==="perspective"?t=new b.PerspectiveCamera(b.MathUtils.radToDeg(A.yfov),A.aspectRatio||1,A.znear||1,A.zfar||2e6):a.type==="orthographic"&&(t=new b.OrthographicCamera(-A.xmag,A.xmag,A.ymag,-A.ymag,A.znear,A.zfar)),a.name&&(t.name=this.createUniqueName(a.name)),Ce(t,a),Promise.resolve(t);console.warn("THREE.GLTFLoader: Missing camera parameters.")}loadSkin(e){const t=this.json.skins[e],a=[];for(let A=0,r=t.joints.length;A<r;A++)a.push(this._loadNodeShallow(t.joints[A]));return t.inverseBindMatrices!==void 0?a.push(this.getDependency("accessor",t.inverseBindMatrices)):a.push(null),Promise.all(a).then(function(A){const r=A.pop(),i=A,o=[],l=[];for(let h=0,g=i.length;h<g;h++){const f=i[h];if(f){o.push(f);const u=new b.Matrix4;r!==null&&u.fromArray(r.array,16*h),l.push(u)}else console.warn('THREE.GLTFLoader: Joint "%s" could not be found.',t.joints[h])}return new b.Skeleton(o,l)})}loadAnimation(e){const t=this.json,a=this,A=t.animations[e],r=A.name?A.name:"animation_"+e,i=[],o=[],l=[],h=[],g=[];for(let f=0,u=A.channels.length;f<u;f++){const I=A.channels[f],p=A.samplers[I.sampler],B=I.target,m=B.node,E=A.parameters!==void 0?A.parameters[p.input]:p.input,Q=A.parameters!==void 0?A.parameters[p.output]:p.output;B.node!==void 0&&(i.push(this.getDependency("node",m)),o.push(this.getDependency("accessor",E)),l.push(this.getDependency("accessor",Q)),h.push(p),g.push(B))}return Promise.all([Promise.all(i),Promise.all(o),Promise.all(l),Promise.all(h),Promise.all(g)]).then(function(f){const u=f[0],I=f[1],p=f[2],B=f[3],m=f[4],E=[];for(let Q=0,k=u.length;Q<k;Q++){const x=u[Q],T=I[Q],F=p[Q],S=B[Q],D=m[Q];if(x===void 0)continue;x.updateMatrix&&x.updateMatrix();const M=a._createAnimationTracks(x,T,F,S,D);if(M)for(let v=0;v<M.length;v++)E.push(M[v])}return new b.AnimationClip(r,void 0,E)})}createNodeMesh(e){const t=this.json,a=this,A=t.nodes[e];return A.mesh===void 0?null:a.getDependency("mesh",A.mesh).then(function(r){const i=a._getNodeRef(a.meshCache,A.mesh,r);return A.weights!==void 0&&i.traverse(function(o){if(o.isMesh)for(let l=0,h=A.weights.length;l<h;l++)o.morphTargetInfluences[l]=A.weights[l]}),i})}loadNode(e){const t=this,a=this.json.nodes[e],A=t._loadNodeShallow(e),r=[],i=a.children||[];for(let l=0,h=i.length;l<h;l++)r.push(t.getDependency("node",i[l]));const o=a.skin===void 0?Promise.resolve(null):t.getDependency("skin",a.skin);return Promise.all([A,Promise.all(r),o]).then(function(l){const h=l[0],g=l[1],f=l[2];f!==null&&h.traverse(function(u){u.isSkinnedMesh&&u.bind(f,UA)});for(let u=0,I=g.length;u<I;u++)h.add(g[u]);return h})}_loadNodeShallow(e){const t=this.json,a=this.extensions,A=this;if(this.nodeCache[e]!==void 0)return this.nodeCache[e];const r=t.nodes[e],i=r.name?A.createUniqueName(r.name):"",o=[],l=A._invokeOne(function(h){return h.createNodeMesh&&h.createNodeMesh(e)});return l&&o.push(l),r.camera!==void 0&&o.push(A.getDependency("camera",r.camera).then(function(h){return A._getNodeRef(A.cameraCache,r.camera,h)})),A._invokeAll(function(h){return h.createNodeAttachment&&h.createNodeAttachment(e)}).forEach(function(h){o.push(h)}),this.nodeCache[e]=Promise.all(o).then(function(h){let g;if(g=r.isBone===!0?new b.Bone:h.length>1?new b.Group:h.length===1?h[0]:new b.Object3D,g!==h[0])for(let f=0,u=h.length;f<u;f++)g.add(h[f]);if(r.name&&(g.userData.name=r.name,g.name=i),Ce(g,r),r.extensions&&Le(a,g,r),r.matrix!==void 0){const f=new b.Matrix4;f.fromArray(r.matrix),g.applyMatrix4(f)}else r.translation!==void 0&&g.position.fromArray(r.translation),r.rotation!==void 0&&g.quaternion.fromArray(r.rotation),r.scale!==void 0&&g.scale.fromArray(r.scale);return A.associations.has(g)||A.associations.set(g,{}),A.associations.get(g).nodes=e,g}),this.nodeCache[e]}loadScene(e){const t=this.extensions,a=this.json.scenes[e],A=this,r=new b.Group;a.name&&(r.name=A.createUniqueName(a.name)),Ce(r,a),a.extensions&&Le(t,r,a);const i=a.nodes||[],o=[];for(let l=0,h=i.length;l<h;l++)o.push(A.getDependency("node",i[l]));return Promise.all(o).then(function(l){for(let h=0,g=l.length;h<g;h++)r.add(l[h]);return A.associations=(h=>{const g=new Map;for(const[f,u]of A.associations)(f instanceof b.Material||f instanceof b.Texture)&&g.set(f,u);return h.traverse(f=>{const u=A.associations.get(f);u!=null&&g.set(f,u)}),g})(r),r})}_createAnimationTracks(e,t,a,A,r){const i=[],o=e.name?e.name:e.uuid,l=[];let h;switch(Re[r.path]===Re.weights?e.traverse(function(u){u.morphTargetInfluences&&l.push(u.name?u.name:u.uuid)}):l.push(o),Re[r.path]){case Re.weights:h=b.NumberKeyframeTrack;break;case Re.rotation:h=b.QuaternionKeyframeTrack;break;case Re.position:case Re.scale:h=b.VectorKeyframeTrack;break;default:a.itemSize===1?h=b.NumberKeyframeTrack:h=b.VectorKeyframeTrack}const g=A.interpolation!==void 0?MA[A.interpolation]:b.InterpolateLinear,f=this._getArrayFromAccessor(a);for(let u=0,I=l.length;u<I;u++){const p=new h(l[u]+"."+Re[r.path],t.array,f,g);A.interpolation==="CUBICSPLINE"&&this._createCubicSplineTrackInterpolant(p),i.push(p)}return i}_getArrayFromAccessor(e){let t=e.array;if(e.normalized){const a=Rt(t.constructor),A=new Float32Array(t.length);for(let r=0,i=t.length;r<i;r++)A[r]=t[r]*a;t=A}return t}_createCubicSplineTrackInterpolant(e){e.createInterpolant=function(t){return new(this instanceof b.QuaternionKeyframeTrack?RA:ma)(this.times,this.values,this.getValueSize()/3,t)},e.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0}}function Yt(n,e,t){const a=e.attributes,A=[];function r(i,o){return t.getDependency("accessor",i).then(function(l){n.setAttribute(o,l)})}for(const i in a){const o=jt[i]||i.toLowerCase();o in n.attributes||A.push(r(a[i],o))}if(e.indices!==void 0&&!n.index){const i=t.getDependency("accessor",e.indices).then(function(o){n.setIndex(o)});A.push(i)}return b.ColorManagement.workingColorSpace!==b.LinearSRGBColorSpace&&"COLOR_0"in a&&console.warn(`THREE.GLTFLoader: Converting vertex colors from "srgb-linear" to "${b.ColorManagement.workingColorSpace}" not supported.`),Ce(n,e),function(i,o,l){const h=o.attributes,g=new b.Box3;if(h.POSITION===void 0)return;{const I=l.json.accessors[h.POSITION],p=I.min,B=I.max;if(p===void 0||B===void 0)return void console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");if(g.set(new b.Vector3(p[0],p[1],p[2]),new b.Vector3(B[0],B[1],B[2])),I.normalized){const m=Rt(He[I.componentType]);g.min.multiplyScalar(m),g.max.multiplyScalar(m)}}const f=o.targets;if(f!==void 0){const I=new b.Vector3,p=new b.Vector3;for(let B=0,m=f.length;B<m;B++){const E=f[B];if(E.POSITION!==void 0){const Q=l.json.accessors[E.POSITION],k=Q.min,x=Q.max;if(k!==void 0&&x!==void 0){if(p.setX(Math.max(Math.abs(k[0]),Math.abs(x[0]))),p.setY(Math.max(Math.abs(k[1]),Math.abs(x[1]))),p.setZ(Math.max(Math.abs(k[2]),Math.abs(x[2]))),Q.normalized){const T=Rt(He[Q.componentType]);p.multiplyScalar(T)}I.max(p)}else console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.")}}g.expandByVector(I)}i.boundingBox=g;const u=new b.Sphere;g.getCenter(u.center),u.radius=g.min.distanceTo(g.max)/2,i.boundingSphere=u}(n,e,t),Promise.all(A).then(function(){return e.targets!==void 0?function(i,o,l){let h=!1,g=!1,f=!1;for(let B=0,m=o.length;B<m;B++){const E=o[B];if(E.POSITION!==void 0&&(h=!0),E.NORMAL!==void 0&&(g=!0),E.COLOR_0!==void 0&&(f=!0),h&&g&&f)break}if(!h&&!g&&!f)return Promise.resolve(i);const u=[],I=[],p=[];for(let B=0,m=o.length;B<m;B++){const E=o[B];if(h){const Q=E.POSITION!==void 0?l.getDependency("accessor",E.POSITION):i.attributes.position;u.push(Q)}if(g){const Q=E.NORMAL!==void 0?l.getDependency("accessor",E.NORMAL):i.attributes.normal;I.push(Q)}if(f){const Q=E.COLOR_0!==void 0?l.getDependency("accessor",E.COLOR_0):i.attributes.color;p.push(Q)}}return Promise.all([Promise.all(u),Promise.all(I),Promise.all(p)]).then(function(B){const m=B[0],E=B[1],Q=B[2];return h&&(i.morphAttributes.position=m),g&&(i.morphAttributes.normal=E),f&&(i.morphAttributes.color=Q),i.morphTargetsRelative=!0,i})}(n,e.targets,t):n})}const gt=new WeakMap;class Ca extends b.Loader{constructor(e){super(e),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(e){return this.decoderPath=e,this}setDecoderConfig(e){return this.decoderConfig=e,this}setWorkerLimit(e){return this.workerLimit=e,this}load(e,t,a,A){const r=new b.FileLoader(this.manager);r.setPath(this.path),r.setResponseType("arraybuffer"),r.setRequestHeader(this.requestHeader),r.setWithCredentials(this.withCredentials),r.load(e,i=>{this.parse(i,t,A)},a,A)}parse(e,t,a=()=>{}){this.decodeDracoFile(e,t,null,null,b.SRGBColorSpace,a).catch(a)}decodeDracoFile(e,t,a,A,r=b.LinearSRGBColorSpace,i=()=>{}){const o={attributeIDs:a||this.defaultAttributeIDs,attributeTypes:A||this.defaultAttributeTypes,useUniqueIDs:!!a,vertexColorSpace:r};return this.decodeGeometry(e,o).then(t).catch(i)}decodeGeometry(e,t){const a=JSON.stringify(t);if(gt.has(e)){const l=gt.get(e);if(l.key===a)return l.promise;if(e.byteLength===0)throw new Error("THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.")}let A;const r=this.workerNextTaskID++,i=e.byteLength,o=this._getWorker(r,i).then(l=>(A=l,new Promise((h,g)=>{A._callbacks[r]={resolve:h,reject:g},A.postMessage({type:"decode",id:r,taskConfig:t,buffer:e},[e])}))).then(l=>this._createGeometry(l.geometry));return o.catch(()=>!0).then(()=>{A&&r&&this._releaseTask(A,r)}),gt.set(e,{key:a,promise:o}),o}_createGeometry(e){const t=new b.BufferGeometry;e.index&&t.setIndex(new b.BufferAttribute(e.index.array,1));for(let a=0;a<e.attributes.length;a++){const A=e.attributes[a],r=A.name,i=A.array,o=A.itemSize,l=new b.BufferAttribute(i,o);r==="color"&&(this._assignVertexColorSpace(l,A.vertexColorSpace),l.normalized=!(i instanceof Float32Array)),t.setAttribute(r,l)}return t}_assignVertexColorSpace(e,t){if(t!==b.SRGBColorSpace)return;const a=new b.Color;for(let A=0,r=e.count;A<r;A++)a.fromBufferAttribute(e,A),b.ColorManagement.toWorkingColorSpace(a,b.SRGBColorSpace),e.setXYZ(A,a.r,a.g,a.b)}_loadLibrary(e,t){const a=new b.FileLoader(this.manager);return a.setPath(this.decoderPath),a.setResponseType(t),a.setWithCredentials(this.withCredentials),new Promise((A,r)=>{a.load(e,A,void 0,r)})}preload(){return this._initDecoder(),this}_initDecoder(){if(this.decoderPending)return this.decoderPending;const e=typeof WebAssembly!="object"||this.decoderConfig.type==="js",t=[];return e?t.push(this._loadLibrary("draco_decoder.js","text")):(t.push(this._loadLibrary("draco_wasm_wrapper.js","text")),t.push(this._loadLibrary("draco_decoder.wasm","arraybuffer"))),this.decoderPending=Promise.all(t).then(a=>{const A=a[0];e||(this.decoderConfig.wasmBinary=a[1]);const r=NA.toString(),i=["/* draco decoder */",A,"","/* worker */",r.substring(r.indexOf("{")+1,r.lastIndexOf("}"))].join(`
9
+ `);this.workerSourceURL=URL.createObjectURL(new Blob([i]))}),this.decoderPending}_getWorker(e,t){return this._initDecoder().then(()=>{if(this.workerPool.length<this.workerLimit){const A=new Worker(this.workerSourceURL);A._callbacks={},A._taskCosts={},A._taskLoad=0,A.postMessage({type:"init",decoderConfig:this.decoderConfig}),A.onmessage=function(r){const i=r.data;switch(i.type){case"decode":A._callbacks[i.id].resolve(i);break;case"error":A._callbacks[i.id].reject(i);break;default:console.error('THREE.DRACOLoader: Unexpected message, "'+i.type+'"')}},this.workerPool.push(A)}else this.workerPool.sort(function(A,r){return A._taskLoad>r._taskLoad?-1:1});const a=this.workerPool[this.workerPool.length-1];return a._taskCosts[e]=t,a._taskLoad+=t,a})}_releaseTask(e,t){e._taskLoad-=e._taskCosts[t],delete e._callbacks[t],delete e._taskCosts[t]}debug(){console.log("Task load: ",this.workerPool.map(e=>e._taskLoad))}dispose(){for(let e=0;e<this.workerPool.length;++e)this.workerPool[e].terminate();return this.workerPool.length=0,this.workerSourceURL!==""&&URL.revokeObjectURL(this.workerSourceURL),this}}function NA(){let n,e;function t(a,A,r,i,o,l){const h=l.num_components(),g=r.num_points()*h,f=g*o.BYTES_PER_ELEMENT,u=function(B,m){switch(m){case Float32Array:return B.DT_FLOAT32;case Int8Array:return B.DT_INT8;case Int16Array:return B.DT_INT16;case Int32Array:return B.DT_INT32;case Uint8Array:return B.DT_UINT8;case Uint16Array:return B.DT_UINT16;case Uint32Array:return B.DT_UINT32}}(a,o),I=a._malloc(f);A.GetAttributeDataArrayForAllPoints(r,l,u,f,I);const p=new o(a.HEAPF32.buffer,I,g).slice();return a._free(I),{name:i,array:p,itemSize:h}}onmessage=function(a){const A=a.data;switch(A.type){case"init":n=A.decoderConfig,e=new Promise(function(o){n.onModuleLoaded=function(l){o({draco:l})},DracoDecoderModule(n)});break;case"decode":const r=A.buffer,i=A.taskConfig;e.then(o=>{const l=o.draco,h=new l.Decoder;try{const g=function(u,I,p,B){const m=B.attributeIDs,E=B.attributeTypes;let Q,k;const x=I.GetEncodedGeometryType(p);if(x===u.TRIANGULAR_MESH)Q=new u.Mesh,k=I.DecodeArrayToMesh(p,p.byteLength,Q);else{if(x!==u.POINT_CLOUD)throw new Error("THREE.DRACOLoader: Unexpected geometry type.");Q=new u.PointCloud,k=I.DecodeArrayToPointCloud(p,p.byteLength,Q)}if(!k.ok()||Q.ptr===0)throw new Error("THREE.DRACOLoader: Decoding failed: "+k.error_msg());const T={index:null,attributes:[]};for(const F in m){const S=self[E[F]];let D,M;if(B.useUniqueIDs)M=m[F],D=I.GetAttributeByUniqueId(Q,M);else{if(M=I.GetAttributeId(Q,u[m[F]]),M===-1)continue;D=I.GetAttribute(Q,M)}const v=t(u,I,Q,F,S,D);F==="color"&&(v.vertexColorSpace=B.vertexColorSpace),T.attributes.push(v)}return x===u.TRIANGULAR_MESH&&(T.index=function(F,S,D){const M=D.num_faces(),v=3*M,L=4*v,K=F._malloc(L);S.GetTrianglesUInt32Array(D,L,K);const te=new Uint32Array(F.HEAPF32.buffer,K,v).slice();return F._free(K),{array:te,itemSize:1}}(u,I,Q)),u.destroy(Q),T}(l,h,new Int8Array(r),i),f=g.attributes.map(u=>u.array.buffer);g.index&&f.push(g.index.array.buffer),self.postMessage({type:"decode",id:A.id,geometry:g},f)}catch(g){console.error(g),self.postMessage({type:"error",id:A.id,error:g.message})}finally{l.destroy(h)}})}}}class _A{constructor(e=4){this.pool=e,this.queue=[],this.workers=[],this.workersResolve=[],this.workerStatus=0}_initWorker(e){if(!this.workers[e]){const t=this.workerCreator();t.addEventListener("message",this._onMessage.bind(this,e)),this.workers[e]=t}}_getIdleWorker(){for(let e=0;e<this.pool;e++)if(!(this.workerStatus&1<<e))return e;return-1}_onMessage(e,t){const a=this.workersResolve[e];if(a&&a(t),this.queue.length){const{resolve:A,msg:r,transfer:i}=this.queue.shift();this.workersResolve[e]=A,this.workers[e].postMessage(r,i)}else this.workerStatus^=1<<e}setWorkerCreator(e){this.workerCreator=e}setWorkerLimit(e){this.pool=e}postMessage(e,t){return new Promise(a=>{const A=this._getIdleWorker();A!==-1?(this._initWorker(A),this.workerStatus|=1<<A,this.workersResolve[A]=a,this.workers[A].postMessage(e,t)):this.queue.push({resolve:a,msg:e,transfer:t})})}dispose(){this.workers.forEach(e=>e.terminate()),this.workersResolve.length=0,this.workers.length=0,this.queue.length=0,this.workerStatus=0}}const Ea=9,Qa=15,ya=16,wa=22,xa=37,ka=43,Da=76,ja=83,Ra=97,Ma=100,Ta=103,Sa=109,Fa=165,va=166,Ft=1000066e3;class PA{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 ze{constructor(e,t,a,A){this._dataView=void 0,this._littleEndian=void 0,this._offset=void 0,this._dataView=new DataView(e.buffer,e.byteOffset+t,a),this._littleEndian=A,this._offset=0}_nextUint8(){const e=this._dataView.getUint8(this._offset);return this._offset+=1,e}_nextUint16(){const e=this._dataView.getUint16(this._offset,this._littleEndian);return this._offset+=2,e}_nextUint32(){const e=this._dataView.getUint32(this._offset,this._littleEndian);return this._offset+=4,e}_nextUint64(){const e=this._dataView.getUint32(this._offset,this._littleEndian)+4294967296*this._dataView.getUint32(this._offset+4,this._littleEndian);return this._offset+=8,e}_nextInt32(){const e=this._dataView.getInt32(this._offset,this._littleEndian);return this._offset+=4,e}_nextUint8Array(e){const t=new Uint8Array(this._dataView.buffer,this._dataView.byteOffset+this._offset,e);return this._offset+=e,t}_skip(e){return this._offset+=e,this}_scan(e,t){t===void 0&&(t=0);const a=this._offset;let A=0;for(;this._dataView.getUint8(this._offset)!==t&&A<e;)A++,this._offset++;return A<e&&this._offset++,new Uint8Array(this._dataView.buffer,this._dataView.byteOffset+a,A)}}const ee=[171,75,84,88,32,50,48,187,13,10,26,10];function Wt(n){return new TextDecoder().decode(n)}for(var La={},Ye={},OA=Ye.byteLength=function(n){var e=Zt(n),t=e[0],a=e[1];return 3*(t+a)/4-a},HA=Ye.toByteArray=function(n){var e,t,a=Zt(n),A=a[0],r=a[1],i=new JA(function(h,g,f){return 3*(g+f)/4-f}(0,A,r)),o=0,l=r>0?A-4:A;for(t=0;t<l;t+=4)e=se[n.charCodeAt(t)]<<18|se[n.charCodeAt(t+1)]<<12|se[n.charCodeAt(t+2)]<<6|se[n.charCodeAt(t+3)],i[o++]=e>>16&255,i[o++]=e>>8&255,i[o++]=255&e;return r===2&&(e=se[n.charCodeAt(t)]<<2|se[n.charCodeAt(t+1)]>>4,i[o++]=255&e),r===1&&(e=se[n.charCodeAt(t)]<<10|se[n.charCodeAt(t+1)]<<4|se[n.charCodeAt(t+2)]>>2,i[o++]=e>>8&255,i[o++]=255&e),i},qA=Ye.fromByteArray=function(n){for(var e,t=n.length,a=t%3,A=[],r=16383,i=0,o=t-a;i<o;i+=r)A.push(KA(n,i,i+r>o?o:i+r));return a===1?(e=n[t-1],A.push(ge[e>>2]+ge[e<<4&63]+"==")):a===2&&(e=(n[t-2]<<8)+n[t-1],A.push(ge[e>>10]+ge[e>>4&63]+ge[e<<2&63]+"=")),A.join("")},ge=[],se=[],JA=typeof Uint8Array<"u"?Uint8Array:Array,Xt="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Pe=0;Pe<64;++Pe)ge[Pe]=Xt[Pe],se[Xt.charCodeAt(Pe)]=Pe;function Zt(n){var e=n.length;if(e%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var t=n.indexOf("=");return t===-1&&(t=e),[t,t===e?0:4-t%4]}function KA(n,e,t){for(var a,A,r=[],i=e;i<t;i+=3)a=(n[i]<<16&16711680)+(n[i+1]<<8&65280)+(255&n[i+2]),r.push(ge[(A=a)>>18&63]+ge[A>>12&63]+ge[A>>6&63]+ge[63&A]);return r.join("")}se[45]=62,se[95]=63;const zA=$e(Ze({__proto__:null,byteLength:OA,default:Ye,fromByteArray:qA,toByteArray:HA},[Ye]));var nt={},VA=nt.read=function(n,e,t,a,A){var r,i,o=8*A-a-1,l=(1<<o)-1,h=l>>1,g=-7,f=t?A-1:0,u=t?-1:1,I=n[e+f];for(f+=u,r=I&(1<<-g)-1,I>>=-g,g+=o;g>0;r=256*r+n[e+f],f+=u,g-=8);for(i=r&(1<<-g)-1,r>>=-g,g+=a;g>0;i=256*i+n[e+f],f+=u,g-=8);if(r===0)r=1-h;else{if(r===l)return i?NaN:1/0*(I?-1:1);i+=Math.pow(2,a),r-=h}return(I?-1:1)*i*Math.pow(2,r-a)},YA=nt.write=function(n,e,t,a,A,r){var i,o,l,h=8*r-A-1,g=(1<<h)-1,f=g>>1,u=A===23?Math.pow(2,-24)-Math.pow(2,-77):0,I=a?0:r-1,p=a?1:-1,B=e<0||e===0&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(o=isNaN(e)?1:0,i=g):(i=Math.floor(Math.log(e)/Math.LN2),e*(l=Math.pow(2,-i))<1&&(i--,l*=2),(e+=i+f>=1?u/l:u*Math.pow(2,1-f))*l>=2&&(i++,l/=2),i+f>=g?(o=0,i=g):i+f>=1?(o=(e*l-1)*Math.pow(2,A),i+=f):(o=e*Math.pow(2,f-1)*Math.pow(2,A),i=0));A>=8;n[t+I]=255&o,I+=p,o/=256,A-=8);for(i=i<<A|o,h+=A;h>0;n[t+I]=255&i,I+=p,i/=256,h-=8);n[t+I-p]|=128*B};/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */const WA=$e(Ze({__proto__:null,default:nt,read:VA,write:YA},[nt]));let ft,me,Mt;/*!
10
+ * The buffer module from node.js, for the browser.
11
+ *
12
+ * @author Feross Aboukhadijeh <https://feross.org>
13
+ * @license MIT
14
+ */(function(n){const e=zA,t=WA,a=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;n.Buffer=i,n.SlowBuffer=function(s){return+s!=s&&(s=0),i.alloc(+s)},n.INSPECT_MAX_BYTES=50;const A=2147483647;function r(s){if(s>A)throw new RangeError('The value "'+s+'" is invalid for option "size"');const c=new Uint8Array(s);return Object.setPrototypeOf(c,i.prototype),c}function i(s,c,d){if(typeof s=="number"){if(typeof c=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return h(s)}return o(s,c,d)}function o(s,c,d){if(typeof s=="string")return function(w,j){if(typeof j=="string"&&j!==""||(j="utf8"),!i.isEncoding(j))throw new TypeError("Unknown encoding: "+j);const U=0|I(w,j);let N=r(U);const q=N.write(w,j);return q!==U&&(N=N.slice(0,q)),N}(s,c);if(ArrayBuffer.isView(s))return function(w){if(W(w,Uint8Array)){const j=new Uint8Array(w);return f(j.buffer,j.byteOffset,j.byteLength)}return g(w)}(s);if(s==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof s);if(W(s,ArrayBuffer)||s&&W(s.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(W(s,SharedArrayBuffer)||s&&W(s.buffer,SharedArrayBuffer)))return f(s,c,d);if(typeof s=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');const C=s.valueOf&&s.valueOf();if(C!=null&&C!==s)return i.from(C,c,d);const y=function(w){if(i.isBuffer(w)){const j=0|u(w.length),U=r(j);return U.length===0||w.copy(U,0,0,j),U}if(w.length!==void 0)return typeof w.length!="number"||Ke(w.length)?r(0):g(w);if(w.type==="Buffer"&&Array.isArray(w.data))return g(w.data)}(s);if(y)return y;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof s[Symbol.toPrimitive]=="function")return i.from(s[Symbol.toPrimitive]("string"),c,d);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof s)}function l(s){if(typeof s!="number")throw new TypeError('"size" argument must be of type number');if(s<0)throw new RangeError('The value "'+s+'" is invalid for option "size"')}function h(s){return l(s),r(s<0?0:0|u(s))}function g(s){const c=s.length<0?0:0|u(s.length),d=r(c);for(let C=0;C<c;C+=1)d[C]=255&s[C];return d}function f(s,c,d){if(c<0||s.byteLength<c)throw new RangeError('"offset" is outside of buffer bounds');if(s.byteLength<c+(d||0))throw new RangeError('"length" is outside of buffer bounds');let C;return C=c===void 0&&d===void 0?new Uint8Array(s):d===void 0?new Uint8Array(s,c):new Uint8Array(s,c,d),Object.setPrototypeOf(C,i.prototype),C}function u(s){if(s>=A)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+A.toString(16)+" bytes");return 0|s}function I(s,c){if(i.isBuffer(s))return s.length;if(ArrayBuffer.isView(s)||W(s,ArrayBuffer))return s.byteLength;if(typeof s!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof s);const d=s.length,C=arguments.length>2&&arguments[2]===!0;if(!C&&d===0)return 0;let y=!1;for(;;)switch(c){case"ascii":case"latin1":case"binary":return d;case"utf8":case"utf-8":return Z(s).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*d;case"hex":return d>>>1;case"base64":return ue(s).length;default:if(y)return C?-1:Z(s).length;c=(""+c).toLowerCase(),y=!0}}function p(s,c,d){let C=!1;if((c===void 0||c<0)&&(c=0),c>this.length||((d===void 0||d>this.length)&&(d=this.length),d<=0)||(d>>>=0)<=(c>>>=0))return"";for(s||(s="utf8");;)switch(s){case"hex":return K(this,c,d);case"utf8":case"utf-8":return D(this,c,d);case"ascii":return v(this,c,d);case"latin1":case"binary":return L(this,c,d);case"base64":return S(this,c,d);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return te(this,c,d);default:if(C)throw new TypeError("Unknown encoding: "+s);s=(s+"").toLowerCase(),C=!0}}function B(s,c,d){const C=s[c];s[c]=s[d],s[d]=C}function m(s,c,d,C,y){if(s.length===0)return-1;if(typeof d=="string"?(C=d,d=0):d>2147483647?d=2147483647:d<-2147483648&&(d=-2147483648),Ke(d=+d)&&(d=y?0:s.length-1),d<0&&(d=s.length+d),d>=s.length){if(y)return-1;d=s.length-1}else if(d<0){if(!y)return-1;d=0}if(typeof c=="string"&&(c=i.from(c,C)),i.isBuffer(c))return c.length===0?-1:E(s,c,d,C,y);if(typeof c=="number")return c&=255,typeof Uint8Array.prototype.indexOf=="function"?y?Uint8Array.prototype.indexOf.call(s,c,d):Uint8Array.prototype.lastIndexOf.call(s,c,d):E(s,[c],d,C,y);throw new TypeError("val must be string, number or Buffer")}function E(s,c,d,C,y){let w,j=1,U=s.length,N=c.length;if(C!==void 0&&((C=String(C).toLowerCase())==="ucs2"||C==="ucs-2"||C==="utf16le"||C==="utf-16le")){if(s.length<2||c.length<2)return-1;j=2,U/=2,N/=2,d/=2}function q(_,V){return j===1?_[V]:_.readUInt16BE(V*j)}if(y){let _=-1;for(w=d;w<U;w++)if(q(s,w)===q(c,_===-1?0:w-_)){if(_===-1&&(_=w),w-_+1===N)return _*j}else _!==-1&&(w-=w-_),_=-1}else for(d+N>U&&(d=U-N),w=d;w>=0;w--){let _=!0;for(let V=0;V<N;V++)if(q(s,w+V)!==q(c,V)){_=!1;break}if(_)return w}return-1}function Q(s,c,d,C){d=Number(d)||0;const y=s.length-d;C?(C=Number(C))>y&&(C=y):C=y;const w=c.length;let j;for(C>w/2&&(C=w/2),j=0;j<C;++j){const U=parseInt(c.substr(2*j,2),16);if(Ke(U))return j;s[d+j]=U}return j}function k(s,c,d,C){return ce(Z(c,s.length-d),s,d,C)}function x(s,c,d,C){return ce(function(y){const w=[];for(let j=0;j<y.length;++j)w.push(255&y.charCodeAt(j));return w}(c),s,d,C)}function T(s,c,d,C){return ce(ue(c),s,d,C)}function F(s,c,d,C){return ce(function(y,w){let j,U,N;const q=[];for(let _=0;_<y.length&&!((w-=2)<0);++_)j=y.charCodeAt(_),U=j>>8,N=j%256,q.push(N),q.push(U);return q}(c,s.length-d),s,d,C)}function S(s,c,d){return c===0&&d===s.length?e.fromByteArray(s):e.fromByteArray(s.slice(c,d))}function D(s,c,d){d=Math.min(s.length,d);const C=[];let y=c;for(;y<d;){const w=s[y];let j=null,U=w>239?4:w>223?3:w>191?2:1;if(y+U<=d){let N,q,_,V;switch(U){case 1:w<128&&(j=w);break;case 2:N=s[y+1],(192&N)==128&&(V=(31&w)<<6|63&N,V>127&&(j=V));break;case 3:N=s[y+1],q=s[y+2],(192&N)==128&&(192&q)==128&&(V=(15&w)<<12|(63&N)<<6|63&q,V>2047&&(V<55296||V>57343)&&(j=V));break;case 4:N=s[y+1],q=s[y+2],_=s[y+3],(192&N)==128&&(192&q)==128&&(192&_)==128&&(V=(15&w)<<18|(63&N)<<12|(63&q)<<6|63&_,V>65535&&V<1114112&&(j=V))}}j===null?(j=65533,U=1):j>65535&&(j-=65536,C.push(j>>>10&1023|55296),j=56320|1023&j),C.push(j),y+=U}return function(w){const j=w.length;if(j<=M)return String.fromCharCode.apply(String,w);let U="",N=0;for(;N<j;)U+=String.fromCharCode.apply(String,w.slice(N,N+=M));return U}(C)}n.kMaxLength=A,i.TYPED_ARRAY_SUPPORT=function(){try{const s=new Uint8Array(1),c={foo:function(){return 42}};return Object.setPrototypeOf(c,Uint8Array.prototype),Object.setPrototypeOf(s,c),s.foo()===42}catch{return!1}}(),i.TYPED_ARRAY_SUPPORT||typeof console>"u"||typeof console.error!="function"||console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."),Object.defineProperty(i.prototype,"parent",{enumerable:!0,get:function(){if(i.isBuffer(this))return this.buffer}}),Object.defineProperty(i.prototype,"offset",{enumerable:!0,get:function(){if(i.isBuffer(this))return this.byteOffset}}),i.poolSize=8192,i.from=function(s,c,d){return o(s,c,d)},Object.setPrototypeOf(i.prototype,Uint8Array.prototype),Object.setPrototypeOf(i,Uint8Array),i.alloc=function(s,c,d){return function(C,y,w){return l(C),C<=0?r(C):y!==void 0?typeof w=="string"?r(C).fill(y,w):r(C).fill(y):r(C)}(s,c,d)},i.allocUnsafe=function(s){return h(s)},i.allocUnsafeSlow=function(s){return h(s)},i.isBuffer=function(s){return s!=null&&s._isBuffer===!0&&s!==i.prototype},i.compare=function(s,c){if(W(s,Uint8Array)&&(s=i.from(s,s.offset,s.byteLength)),W(c,Uint8Array)&&(c=i.from(c,c.offset,c.byteLength)),!i.isBuffer(s)||!i.isBuffer(c))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(s===c)return 0;let d=s.length,C=c.length;for(let y=0,w=Math.min(d,C);y<w;++y)if(s[y]!==c[y]){d=s[y],C=c[y];break}return d<C?-1:C<d?1:0},i.isEncoding=function(s){switch(String(s).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},i.concat=function(s,c){if(!Array.isArray(s))throw new TypeError('"list" argument must be an Array of Buffers');if(s.length===0)return i.alloc(0);let d;if(c===void 0)for(c=0,d=0;d<s.length;++d)c+=s[d].length;const C=i.allocUnsafe(c);let y=0;for(d=0;d<s.length;++d){let w=s[d];if(W(w,Uint8Array))y+w.length>C.length?(i.isBuffer(w)||(w=i.from(w)),w.copy(C,y)):Uint8Array.prototype.set.call(C,w,y);else{if(!i.isBuffer(w))throw new TypeError('"list" argument must be an Array of Buffers');w.copy(C,y)}y+=w.length}return C},i.byteLength=I,i.prototype._isBuffer=!0,i.prototype.swap16=function(){const s=this.length;if(s%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let c=0;c<s;c+=2)B(this,c,c+1);return this},i.prototype.swap32=function(){const s=this.length;if(s%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(let c=0;c<s;c+=4)B(this,c,c+3),B(this,c+1,c+2);return this},i.prototype.swap64=function(){const s=this.length;if(s%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(let c=0;c<s;c+=8)B(this,c,c+7),B(this,c+1,c+6),B(this,c+2,c+5),B(this,c+3,c+4);return this},i.prototype.toString=function(){const s=this.length;return s===0?"":arguments.length===0?D(this,0,s):p.apply(this,arguments)},i.prototype.toLocaleString=i.prototype.toString,i.prototype.equals=function(s){if(!i.isBuffer(s))throw new TypeError("Argument must be a Buffer");return this===s||i.compare(this,s)===0},i.prototype.inspect=function(){let s="";const c=n.INSPECT_MAX_BYTES;return s=this.toString("hex",0,c).replace(/(.{2})/g,"$1 ").trim(),this.length>c&&(s+=" ... "),"<Buffer "+s+">"},a&&(i.prototype[a]=i.prototype.inspect),i.prototype.compare=function(s,c,d,C,y){if(W(s,Uint8Array)&&(s=i.from(s,s.offset,s.byteLength)),!i.isBuffer(s))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof s);if(c===void 0&&(c=0),d===void 0&&(d=s?s.length:0),C===void 0&&(C=0),y===void 0&&(y=this.length),c<0||d>s.length||C<0||y>this.length)throw new RangeError("out of range index");if(C>=y&&c>=d)return 0;if(C>=y)return-1;if(c>=d)return 1;if(this===s)return 0;let w=(y>>>=0)-(C>>>=0),j=(d>>>=0)-(c>>>=0);const U=Math.min(w,j),N=this.slice(C,y),q=s.slice(c,d);for(let _=0;_<U;++_)if(N[_]!==q[_]){w=N[_],j=q[_];break}return w<j?-1:j<w?1:0},i.prototype.includes=function(s,c,d){return this.indexOf(s,c,d)!==-1},i.prototype.indexOf=function(s,c,d){return m(this,s,c,d,!0)},i.prototype.lastIndexOf=function(s,c,d){return m(this,s,c,d,!1)},i.prototype.write=function(s,c,d,C){if(c===void 0)C="utf8",d=this.length,c=0;else if(d===void 0&&typeof c=="string")C=c,d=this.length,c=0;else{if(!isFinite(c))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");c>>>=0,isFinite(d)?(d>>>=0,C===void 0&&(C="utf8")):(C=d,d=void 0)}const y=this.length-c;if((d===void 0||d>y)&&(d=y),s.length>0&&(d<0||c<0)||c>this.length)throw new RangeError("Attempt to write outside buffer bounds");C||(C="utf8");let w=!1;for(;;)switch(C){case"hex":return Q(this,s,c,d);case"utf8":case"utf-8":return k(this,s,c,d);case"ascii":case"latin1":case"binary":return x(this,s,c,d);case"base64":return T(this,s,c,d);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return F(this,s,c,d);default:if(w)throw new TypeError("Unknown encoding: "+C);C=(""+C).toLowerCase(),w=!0}},i.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};const M=4096;function v(s,c,d){let C="";d=Math.min(s.length,d);for(let y=c;y<d;++y)C+=String.fromCharCode(127&s[y]);return C}function L(s,c,d){let C="";d=Math.min(s.length,d);for(let y=c;y<d;++y)C+=String.fromCharCode(s[y]);return C}function K(s,c,d){const C=s.length;(!c||c<0)&&(c=0),(!d||d<0||d>C)&&(d=C);let y="";for(let w=c;w<d;++w)y+=qa[s[w]];return y}function te(s,c,d){const C=s.slice(c,d);let y="";for(let w=0;w<C.length-1;w+=2)y+=String.fromCharCode(C[w]+256*C[w+1]);return y}function H(s,c,d){if(s%1!=0||s<0)throw new RangeError("offset is not uint");if(s+c>d)throw new RangeError("Trying to access beyond buffer length")}function z(s,c,d,C,y,w){if(!i.isBuffer(s))throw new TypeError('"buffer" argument must be a Buffer instance');if(c>y||c<w)throw new RangeError('"value" argument is out of bounds');if(d+C>s.length)throw new RangeError("Index out of range")}function Se(s,c,d,C,y){P(c,C,y,s,d,7);let w=Number(c&BigInt(4294967295));s[d++]=w,w>>=8,s[d++]=w,w>>=8,s[d++]=w,w>>=8,s[d++]=w;let j=Number(c>>BigInt(32)&BigInt(4294967295));return s[d++]=j,j>>=8,s[d++]=j,j>>=8,s[d++]=j,j>>=8,s[d++]=j,d}function xe(s,c,d,C,y){P(c,C,y,s,d,7);let w=Number(c&BigInt(4294967295));s[d+7]=w,w>>=8,s[d+6]=w,w>>=8,s[d+5]=w,w>>=8,s[d+4]=w;let j=Number(c>>BigInt(32)&BigInt(4294967295));return s[d+3]=j,j>>=8,s[d+2]=j,j>>=8,s[d+1]=j,j>>=8,s[d]=j,d+8}function ke(s,c,d,C,y,w){if(d+C>s.length)throw new RangeError("Index out of range");if(d<0)throw new RangeError("Index out of range")}function De(s,c,d,C,y){return c=+c,d>>>=0,y||ke(s,0,d,4),t.write(s,c,d,C,23,4),d+4}function Fe(s,c,d,C,y){return c=+c,d>>>=0,y||ke(s,0,d,8),t.write(s,c,d,C,52,8),d+8}i.prototype.slice=function(s,c){const d=this.length;(s=~~s)<0?(s+=d)<0&&(s=0):s>d&&(s=d),(c=c===void 0?d:~~c)<0?(c+=d)<0&&(c=0):c>d&&(c=d),c<s&&(c=s);const C=this.subarray(s,c);return Object.setPrototypeOf(C,i.prototype),C},i.prototype.readUintLE=i.prototype.readUIntLE=function(s,c,d){s>>>=0,c>>>=0,d||H(s,c,this.length);let C=this[s],y=1,w=0;for(;++w<c&&(y*=256);)C+=this[s+w]*y;return C},i.prototype.readUintBE=i.prototype.readUIntBE=function(s,c,d){s>>>=0,c>>>=0,d||H(s,c,this.length);let C=this[s+--c],y=1;for(;c>0&&(y*=256);)C+=this[s+--c]*y;return C},i.prototype.readUint8=i.prototype.readUInt8=function(s,c){return s>>>=0,c||H(s,1,this.length),this[s]},i.prototype.readUint16LE=i.prototype.readUInt16LE=function(s,c){return s>>>=0,c||H(s,2,this.length),this[s]|this[s+1]<<8},i.prototype.readUint16BE=i.prototype.readUInt16BE=function(s,c){return s>>>=0,c||H(s,2,this.length),this[s]<<8|this[s+1]},i.prototype.readUint32LE=i.prototype.readUInt32LE=function(s,c){return s>>>=0,c||H(s,4,this.length),(this[s]|this[s+1]<<8|this[s+2]<<16)+16777216*this[s+3]},i.prototype.readUint32BE=i.prototype.readUInt32BE=function(s,c){return s>>>=0,c||H(s,4,this.length),16777216*this[s]+(this[s+1]<<16|this[s+2]<<8|this[s+3])},i.prototype.readBigUInt64LE=je(function(s){O(s>>>=0,"offset");const c=this[s],d=this[s+7];c!==void 0&&d!==void 0||Y(s,this.length-8);const C=c+256*this[++s]+65536*this[++s]+this[++s]*2**24,y=this[++s]+256*this[++s]+65536*this[++s]+d*2**24;return BigInt(C)+(BigInt(y)<<BigInt(32))}),i.prototype.readBigUInt64BE=je(function(s){O(s>>>=0,"offset");const c=this[s],d=this[s+7];c!==void 0&&d!==void 0||Y(s,this.length-8);const C=c*2**24+65536*this[++s]+256*this[++s]+this[++s],y=this[++s]*2**24+65536*this[++s]+256*this[++s]+d;return(BigInt(C)<<BigInt(32))+BigInt(y)}),i.prototype.readIntLE=function(s,c,d){s>>>=0,c>>>=0,d||H(s,c,this.length);let C=this[s],y=1,w=0;for(;++w<c&&(y*=256);)C+=this[s+w]*y;return y*=128,C>=y&&(C-=Math.pow(2,8*c)),C},i.prototype.readIntBE=function(s,c,d){s>>>=0,c>>>=0,d||H(s,c,this.length);let C=c,y=1,w=this[s+--C];for(;C>0&&(y*=256);)w+=this[s+--C]*y;return y*=128,w>=y&&(w-=Math.pow(2,8*c)),w},i.prototype.readInt8=function(s,c){return s>>>=0,c||H(s,1,this.length),128&this[s]?-1*(255-this[s]+1):this[s]},i.prototype.readInt16LE=function(s,c){s>>>=0,c||H(s,2,this.length);const d=this[s]|this[s+1]<<8;return 32768&d?4294901760|d:d},i.prototype.readInt16BE=function(s,c){s>>>=0,c||H(s,2,this.length);const d=this[s+1]|this[s]<<8;return 32768&d?4294901760|d:d},i.prototype.readInt32LE=function(s,c){return s>>>=0,c||H(s,4,this.length),this[s]|this[s+1]<<8|this[s+2]<<16|this[s+3]<<24},i.prototype.readInt32BE=function(s,c){return s>>>=0,c||H(s,4,this.length),this[s]<<24|this[s+1]<<16|this[s+2]<<8|this[s+3]},i.prototype.readBigInt64LE=je(function(s){O(s>>>=0,"offset");const c=this[s],d=this[s+7];c!==void 0&&d!==void 0||Y(s,this.length-8);const C=this[s+4]+256*this[s+5]+65536*this[s+6]+(d<<24);return(BigInt(C)<<BigInt(32))+BigInt(c+256*this[++s]+65536*this[++s]+this[++s]*2**24)}),i.prototype.readBigInt64BE=je(function(s){O(s>>>=0,"offset");const c=this[s],d=this[s+7];c!==void 0&&d!==void 0||Y(s,this.length-8);const C=(c<<24)+65536*this[++s]+256*this[++s]+this[++s];return(BigInt(C)<<BigInt(32))+BigInt(this[++s]*2**24+65536*this[++s]+256*this[++s]+d)}),i.prototype.readFloatLE=function(s,c){return s>>>=0,c||H(s,4,this.length),t.read(this,s,!0,23,4)},i.prototype.readFloatBE=function(s,c){return s>>>=0,c||H(s,4,this.length),t.read(this,s,!1,23,4)},i.prototype.readDoubleLE=function(s,c){return s>>>=0,c||H(s,8,this.length),t.read(this,s,!0,52,8)},i.prototype.readDoubleBE=function(s,c){return s>>>=0,c||H(s,8,this.length),t.read(this,s,!1,52,8)},i.prototype.writeUintLE=i.prototype.writeUIntLE=function(s,c,d,C){s=+s,c>>>=0,d>>>=0,!C&&z(this,s,c,d,Math.pow(2,8*d)-1,0);let y=1,w=0;for(this[c]=255&s;++w<d&&(y*=256);)this[c+w]=s/y&255;return c+d},i.prototype.writeUintBE=i.prototype.writeUIntBE=function(s,c,d,C){s=+s,c>>>=0,d>>>=0,!C&&z(this,s,c,d,Math.pow(2,8*d)-1,0);let y=d-1,w=1;for(this[c+y]=255&s;--y>=0&&(w*=256);)this[c+y]=s/w&255;return c+d},i.prototype.writeUint8=i.prototype.writeUInt8=function(s,c,d){return s=+s,c>>>=0,d||z(this,s,c,1,255,0),this[c]=255&s,c+1},i.prototype.writeUint16LE=i.prototype.writeUInt16LE=function(s,c,d){return s=+s,c>>>=0,d||z(this,s,c,2,65535,0),this[c]=255&s,this[c+1]=s>>>8,c+2},i.prototype.writeUint16BE=i.prototype.writeUInt16BE=function(s,c,d){return s=+s,c>>>=0,d||z(this,s,c,2,65535,0),this[c]=s>>>8,this[c+1]=255&s,c+2},i.prototype.writeUint32LE=i.prototype.writeUInt32LE=function(s,c,d){return s=+s,c>>>=0,d||z(this,s,c,4,4294967295,0),this[c+3]=s>>>24,this[c+2]=s>>>16,this[c+1]=s>>>8,this[c]=255&s,c+4},i.prototype.writeUint32BE=i.prototype.writeUInt32BE=function(s,c,d){return s=+s,c>>>=0,d||z(this,s,c,4,4294967295,0),this[c]=s>>>24,this[c+1]=s>>>16,this[c+2]=s>>>8,this[c+3]=255&s,c+4},i.prototype.writeBigUInt64LE=je(function(s,c=0){return Se(this,s,c,BigInt(0),BigInt("0xffffffffffffffff"))}),i.prototype.writeBigUInt64BE=je(function(s,c=0){return xe(this,s,c,BigInt(0),BigInt("0xffffffffffffffff"))}),i.prototype.writeIntLE=function(s,c,d,C){if(s=+s,c>>>=0,!C){const U=Math.pow(2,8*d-1);z(this,s,c,d,U-1,-U)}let y=0,w=1,j=0;for(this[c]=255&s;++y<d&&(w*=256);)s<0&&j===0&&this[c+y-1]!==0&&(j=1),this[c+y]=(s/w|0)-j&255;return c+d},i.prototype.writeIntBE=function(s,c,d,C){if(s=+s,c>>>=0,!C){const U=Math.pow(2,8*d-1);z(this,s,c,d,U-1,-U)}let y=d-1,w=1,j=0;for(this[c+y]=255&s;--y>=0&&(w*=256);)s<0&&j===0&&this[c+y+1]!==0&&(j=1),this[c+y]=(s/w|0)-j&255;return c+d},i.prototype.writeInt8=function(s,c,d){return s=+s,c>>>=0,d||z(this,s,c,1,127,-128),s<0&&(s=255+s+1),this[c]=255&s,c+1},i.prototype.writeInt16LE=function(s,c,d){return s=+s,c>>>=0,d||z(this,s,c,2,32767,-32768),this[c]=255&s,this[c+1]=s>>>8,c+2},i.prototype.writeInt16BE=function(s,c,d){return s=+s,c>>>=0,d||z(this,s,c,2,32767,-32768),this[c]=s>>>8,this[c+1]=255&s,c+2},i.prototype.writeInt32LE=function(s,c,d){return s=+s,c>>>=0,d||z(this,s,c,4,2147483647,-2147483648),this[c]=255&s,this[c+1]=s>>>8,this[c+2]=s>>>16,this[c+3]=s>>>24,c+4},i.prototype.writeInt32BE=function(s,c,d){return s=+s,c>>>=0,d||z(this,s,c,4,2147483647,-2147483648),s<0&&(s=4294967295+s+1),this[c]=s>>>24,this[c+1]=s>>>16,this[c+2]=s>>>8,this[c+3]=255&s,c+4},i.prototype.writeBigInt64LE=je(function(s,c=0){return Se(this,s,c,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))}),i.prototype.writeBigInt64BE=je(function(s,c=0){return xe(this,s,c,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))}),i.prototype.writeFloatLE=function(s,c,d){return De(this,s,c,!0,d)},i.prototype.writeFloatBE=function(s,c,d){return De(this,s,c,!1,d)},i.prototype.writeDoubleLE=function(s,c,d){return Fe(this,s,c,!0,d)},i.prototype.writeDoubleBE=function(s,c,d){return Fe(this,s,c,!1,d)},i.prototype.copy=function(s,c,d,C){if(!i.isBuffer(s))throw new TypeError("argument should be a Buffer");if(d||(d=0),C||C===0||(C=this.length),c>=s.length&&(c=s.length),c||(c=0),C>0&&C<d&&(C=d),C===d||s.length===0||this.length===0)return 0;if(c<0)throw new RangeError("targetStart out of bounds");if(d<0||d>=this.length)throw new RangeError("Index out of range");if(C<0)throw new RangeError("sourceEnd out of bounds");C>this.length&&(C=this.length),s.length-c<C-d&&(C=s.length-c+d);const y=C-d;return this===s&&typeof Uint8Array.prototype.copyWithin=="function"?this.copyWithin(c,d,C):Uint8Array.prototype.set.call(s,this.subarray(d,C),c),y},i.prototype.fill=function(s,c,d,C){if(typeof s=="string"){if(typeof c=="string"?(C=c,c=0,d=this.length):typeof d=="string"&&(C=d,d=this.length),C!==void 0&&typeof C!="string")throw new TypeError("encoding must be a string");if(typeof C=="string"&&!i.isEncoding(C))throw new TypeError("Unknown encoding: "+C);if(s.length===1){const w=s.charCodeAt(0);(C==="utf8"&&w<128||C==="latin1")&&(s=w)}}else typeof s=="number"?s&=255:typeof s=="boolean"&&(s=Number(s));if(c<0||this.length<c||this.length<d)throw new RangeError("Out of range index");if(d<=c)return this;let y;if(c>>>=0,d=d===void 0?this.length:d>>>0,s||(s=0),typeof s=="number")for(y=c;y<d;++y)this[y]=s;else{const w=i.isBuffer(s)?s:i.from(s,C),j=w.length;if(j===0)throw new TypeError('The value "'+s+'" is invalid for argument "value"');for(y=0;y<d-c;++y)this[y+c]=w[y%j]}return this};const oe={};function ae(s,c,d){oe[s]=class extends d{constructor(){super(),Object.defineProperty(this,"message",{value:c.apply(this,arguments),writable:!0,configurable:!0}),this.name=`${this.name} [${s}]`,this.stack,delete this.name}get code(){return s}set code(C){Object.defineProperty(this,"code",{configurable:!0,enumerable:!0,value:C,writable:!0})}toString(){return`${this.name} [${s}]: ${this.message}`}}}function fe(s){let c="",d=s.length;const C=s[0]==="-"?1:0;for(;d>=C+4;d-=3)c=`_${s.slice(d-3,d)}${c}`;return`${s.slice(0,d)}${c}`}function P(s,c,d,C,y,w){if(s>d||s<c){const j=typeof c=="bigint"?"n":"";let U;throw U=c===0||c===BigInt(0)?`>= 0${j} and < 2${j} ** ${8*(w+1)}${j}`:`>= -(2${j} ** ${8*(w+1)-1}${j}) and < 2 ** ${8*(w+1)-1}${j}`,new oe.ERR_OUT_OF_RANGE("value",U,s)}(function(j,U,N){O(U,"offset"),j[U]!==void 0&&j[U+N]!==void 0||Y(U,j.length-(N+1))})(C,y,w)}function O(s,c){if(typeof s!="number")throw new oe.ERR_INVALID_ARG_TYPE(c,"number",s)}function Y(s,c,d){throw Math.floor(s)!==s?(O(s,d),new oe.ERR_OUT_OF_RANGE("offset","an integer",s)):c<0?new oe.ERR_BUFFER_OUT_OF_BOUNDS:new oe.ERR_OUT_OF_RANGE("offset",`>= 0 and <= ${c}`,s)}ae("ERR_BUFFER_OUT_OF_BOUNDS",function(s){return s?`${s} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"},RangeError),ae("ERR_INVALID_ARG_TYPE",function(s,c){return`The "${s}" argument must be of type number. Received type ${typeof c}`},TypeError),ae("ERR_OUT_OF_RANGE",function(s,c,d){let C=`The value of "${s}" is out of range.`,y=d;return Number.isInteger(d)&&Math.abs(d)>2**32?y=fe(String(d)):typeof d=="bigint"&&(y=String(d),(d>BigInt(2)**BigInt(32)||d<-(BigInt(2)**BigInt(32)))&&(y=fe(y)),y+="n"),C+=` It must be ${c}. Received ${y}`,C},RangeError);const re=/[^+/0-9A-Za-z-_]/g;function Z(s,c){let d;c=c||1/0;const C=s.length;let y=null;const w=[];for(let j=0;j<C;++j){if(d=s.charCodeAt(j),d>55295&&d<57344){if(!y){if(d>56319){(c-=3)>-1&&w.push(239,191,189);continue}if(j+1===C){(c-=3)>-1&&w.push(239,191,189);continue}y=d;continue}if(d<56320){(c-=3)>-1&&w.push(239,191,189),y=d;continue}d=65536+(y-55296<<10|d-56320)}else y&&(c-=3)>-1&&w.push(239,191,189);if(y=null,d<128){if((c-=1)<0)break;w.push(d)}else if(d<2048){if((c-=2)<0)break;w.push(d>>6|192,63&d|128)}else if(d<65536){if((c-=3)<0)break;w.push(d>>12|224,d>>6&63|128,63&d|128)}else{if(!(d<1114112))throw new Error("Invalid code point");if((c-=4)<0)break;w.push(d>>18|240,d>>12&63|128,d>>6&63|128,63&d|128)}}return w}function ue(s){return e.toByteArray(function(c){if((c=(c=c.split("=")[0]).trim().replace(re,"")).length<2)return"";for(;c.length%4!=0;)c+="=";return c}(s))}function ce(s,c,d,C){let y;for(y=0;y<C&&!(y+d>=c.length||y>=s.length);++y)c[y+d]=s[y];return y}function W(s,c){return s instanceof c||s!=null&&s.constructor!=null&&s.constructor.name!=null&&s.constructor.name===c.name}function Ke(s){return s!=s}const qa=function(){const s="0123456789abcdef",c=new Array(256);for(let d=0;d<16;++d){const C=16*d;for(let y=0;y<16;++y)c[C+y]=s[d]+s[y]}return c}();function je(s){return typeof BigInt>"u"?Ja:s}function Ja(){throw new Error("BigInt not supported")}})(La);const ut={env:{emscripten_notify_memory_growth:function(n){Mt=new Uint8Array(me.exports.memory.buffer)}}};class XA{init(){return ft||(ft=typeof fetch<"u"?fetch("data:application/wasm;base64,"+$t).then(e=>e.arrayBuffer()).then(e=>WebAssembly.instantiate(e,ut)).then(this._init):WebAssembly.instantiate(La.Buffer.from($t,"base64"),ut).then(this._init),ft)}_init(e){me=e.instance,ut.env.emscripten_notify_memory_growth(0)}decode(e,t=0){if(!me)throw new Error("ZSTDDecoder: Await .init() before decoding.");const a=e.byteLength,A=me.exports.malloc(a);Mt.set(e,A),t=t||Number(me.exports.ZSTD_findDecompressedSize(A,a));const r=me.exports.malloc(t),i=me.exports.ZSTD_decompress(r,t,A,a),o=Mt.slice(r,r+i);return me.exports.free(A),me.exports.free(r),o}}const $t="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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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",It=new WeakMap;let pt,Bt=0;class ie extends b.Loader{constructor(e){super(e),this.transcoderPath="",this.transcoderBinary=null,this.transcoderPending=null,this.workerPool=new _A,this.workerSourceURL="",this.workerConfig=null,typeof MSC_TRANSCODER<"u"&&console.warn('THREE.KTX2Loader: Please update to latest "basis_transcoder". "msc_basis_transcoder" is no longer supported in three.js r125+.')}setTranscoderPath(e){return this.transcoderPath=e,this}setWorkerLimit(e){return this.workerPool.setWorkerLimit(e),this}async detectSupportAsync(e){return this.workerConfig={astcSupported:await e.hasFeatureAsync("texture-compression-astc"),astcHDRSupported:!1,etc1Supported:await e.hasFeatureAsync("texture-compression-etc1"),etc2Supported:await e.hasFeatureAsync("texture-compression-etc2"),dxtSupported:await e.hasFeatureAsync("texture-compression-bc"),bptcSupported:await e.hasFeatureAsync("texture-compression-bptc"),pvrtcSupported:await e.hasFeatureAsync("texture-compression-pvrtc")},this}detectSupport(e){return e.isWebGPURenderer===!0?this.workerConfig={astcSupported:e.hasFeature("texture-compression-astc"),astcHDRSupported:!1,etc1Supported:e.hasFeature("texture-compression-etc1"),etc2Supported:e.hasFeature("texture-compression-etc2"),dxtSupported:e.hasFeature("texture-compression-bc"),bptcSupported:e.hasFeature("texture-compression-bptc"),pvrtcSupported:e.hasFeature("texture-compression-pvrtc")}:this.workerConfig={astcSupported:e.extensions.has("WEBGL_compressed_texture_astc"),astcHDRSupported:e.extensions.has("WEBGL_compressed_texture_astc")&&e.extensions.get("WEBGL_compressed_texture_astc").getSupportedProfiles().includes("hdr"),etc1Supported:e.extensions.has("WEBGL_compressed_texture_etc1"),etc2Supported:e.extensions.has("WEBGL_compressed_texture_etc"),dxtSupported:e.extensions.has("WEBGL_compressed_texture_s3tc"),bptcSupported:e.extensions.has("EXT_texture_compression_bptc"),pvrtcSupported:e.extensions.has("WEBGL_compressed_texture_pvrtc")||e.extensions.has("WEBKIT_WEBGL_compressed_texture_pvrtc")},this}init(){if(!this.transcoderPending){const e=new b.FileLoader(this.manager);e.setPath(this.transcoderPath),e.setWithCredentials(this.withCredentials);const t=e.loadAsync("basis_transcoder.js"),a=new b.FileLoader(this.manager);a.setPath(this.transcoderPath),a.setResponseType("arraybuffer"),a.setWithCredentials(this.withCredentials);const A=a.loadAsync("basis_transcoder.wasm");this.transcoderPending=Promise.all([t,A]).then(([r,i])=>{const o=ie.BasisWorker.toString(),l=["/* constants */","let _EngineFormat = "+JSON.stringify(ie.EngineFormat),"let _EngineType = "+JSON.stringify(ie.EngineType),"let _TranscoderFormat = "+JSON.stringify(ie.TranscoderFormat),"let _BasisFormat = "+JSON.stringify(ie.BasisFormat),"/* basis_transcoder.js */",r,"/* worker */",o.substring(o.indexOf("{")+1,o.lastIndexOf("}"))].join(`
15
+ `);this.workerSourceURL=URL.createObjectURL(new Blob([l])),this.transcoderBinary=i,this.workerPool.setWorkerCreator(()=>{const h=new Worker(this.workerSourceURL),g=this.transcoderBinary.slice(0);return h.postMessage({type:"init",config:this.workerConfig,transcoderBinary:g},[g]),h})}),Bt>0&&console.warn("THREE.KTX2Loader: Multiple active KTX2 loaders may cause performance issues. Use a single KTX2Loader instance, or call .dispose() on old instances."),Bt++}return this.transcoderPending}load(e,t,a,A){if(this.workerConfig===null)throw new Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");const r=new b.FileLoader(this.manager);r.setResponseType("arraybuffer"),r.setWithCredentials(this.withCredentials),r.load(e,i=>{this.parse(i,t,A)},a,A)}parse(e,t,a){if(this.workerConfig===null)throw new Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");if(It.has(e))return It.get(e).promise.then(t).catch(a);this._createTexture(e).then(A=>t?t(A):null).catch(a)}_createTextureFrom(e,t){const{type:a,error:A,data:{faces:r,width:i,height:o,format:l,type:h,dfdFlags:g}}=e;if(a==="error")return Promise.reject(A);let f;if(t.faceCount===6)f=new b.CompressedCubeTexture(r,l,h);else{const u=r[0].mipmaps;f=t.layerCount>1?new b.CompressedArrayTexture(u,i,o,t.layerCount,l,h):new b.CompressedTexture(u,i,o,l,h)}return f.minFilter=r[0].mipmaps.length===1?b.LinearFilter:b.LinearMipmapLinearFilter,f.magFilter=b.LinearFilter,f.generateMipmaps=!1,f.needsUpdate=!0,f.colorSpace=ea(t),f.premultiplyAlpha=!!(1&g),f}async _createTexture(e,t={}){const a=function(o){const l=new Uint8Array(o.buffer,o.byteOffset,ee.length);if(l[0]!==ee[0]||l[1]!==ee[1]||l[2]!==ee[2]||l[3]!==ee[3]||l[4]!==ee[4]||l[5]!==ee[5]||l[6]!==ee[6]||l[7]!==ee[7]||l[8]!==ee[8]||l[9]!==ee[9]||l[10]!==ee[10]||l[11]!==ee[11])throw new Error("Missing KTX 2.0 identifier.");const h=new PA,g=17*Uint32Array.BYTES_PER_ELEMENT,f=new ze(o,ee.length,g,!0);h.vkFormat=f._nextUint32(),h.typeSize=f._nextUint32(),h.pixelWidth=f._nextUint32(),h.pixelHeight=f._nextUint32(),h.pixelDepth=f._nextUint32(),h.layerCount=f._nextUint32(),h.faceCount=f._nextUint32();const u=f._nextUint32();h.supercompressionScheme=f._nextUint32();const I=f._nextUint32(),p=f._nextUint32(),B=f._nextUint32(),m=f._nextUint32(),E=f._nextUint64(),Q=f._nextUint64(),k=new ze(o,ee.length+g,3*u*8,!0);for(let P=0;P<u;P++)h.levels.push({levelData:new Uint8Array(o.buffer,o.byteOffset+k._nextUint64(),k._nextUint64()),uncompressedByteLength:k._nextUint64()});const x=new ze(o,I,p,!0),T={vendorId:x._skip(4)._nextUint16(),descriptorType:x._nextUint16(),versionNumber:x._nextUint16(),descriptorBlockSize:x._nextUint16(),colorModel:x._nextUint8(),colorPrimaries:x._nextUint8(),transferFunction:x._nextUint8(),flags:x._nextUint8(),texelBlockDimension:[x._nextUint8(),x._nextUint8(),x._nextUint8(),x._nextUint8()],bytesPlane:[x._nextUint8(),x._nextUint8(),x._nextUint8(),x._nextUint8(),x._nextUint8(),x._nextUint8(),x._nextUint8(),x._nextUint8()],samples:[]},F=(T.descriptorBlockSize/4-6)/4;for(let P=0;P<F;P++){const O={bitOffset:x._nextUint16(),bitLength:x._nextUint8(),channelType:x._nextUint8(),samplePosition:[x._nextUint8(),x._nextUint8(),x._nextUint8(),x._nextUint8()],sampleLower:-1/0,sampleUpper:1/0};64&O.channelType?(O.sampleLower=x._nextInt32(),O.sampleUpper=x._nextInt32()):(O.sampleLower=x._nextUint32(),O.sampleUpper=x._nextUint32()),T.samples[P]=O}h.dataFormatDescriptor.length=0,h.dataFormatDescriptor.push(T);const S=new ze(o,B,m,!0);for(;S._offset<m;){const P=S._nextUint32(),O=S._scan(P),Y=Wt(O);if(h.keyValue[Y]=S._nextUint8Array(P-O.byteLength-1),Y.match(/^ktx/i)){const re=Wt(h.keyValue[Y]);h.keyValue[Y]=re.substring(0,re.lastIndexOf("\0"))}S._skip(P%4?4-P%4:0)}if(Q<=0)return h;const D=new ze(o,E,Q,!0),M=D._nextUint16(),v=D._nextUint16(),L=D._nextUint32(),K=D._nextUint32(),te=D._nextUint32(),H=D._nextUint32(),z=[];for(let P=0;P<u;P++)z.push({imageFlags:D._nextUint32(),rgbSliceByteOffset:D._nextUint32(),rgbSliceByteLength:D._nextUint32(),alphaSliceByteOffset:D._nextUint32(),alphaSliceByteLength:D._nextUint32()});const Se=E+D._offset,xe=Se+L,ke=xe+K,De=ke+te,Fe=new Uint8Array(o.buffer,o.byteOffset+Se,L),oe=new Uint8Array(o.buffer,o.byteOffset+xe,K),ae=new Uint8Array(o.buffer,o.byteOffset+ke,te),fe=new Uint8Array(o.buffer,o.byteOffset+De,H);return h.globalData={endpointCount:M,selectorCount:v,imageDescs:z,endpointsData:Fe,selectorsData:oe,tablesData:ae,extendedData:fe},h}(new Uint8Array(e)),A=a.vkFormat===Ft&&a.dataFormatDescriptor[0].colorModel===167;if(!(a.vkFormat===0||A&&!this.workerConfig.astcHDRSupported))return async function(o){const{vkFormat:l}=o;if(mt[l]===void 0)throw new Error("THREE.KTX2Loader: Unsupported vkFormat.");let h;o.supercompressionScheme===2&&(pt||(pt=new Promise(async u=>{const I=new XA;await I.init(),u(I)})),h=await pt);const g=[];for(let u=0;u<o.levels.length;u++){const I=Math.max(1,o.pixelWidth>>u),p=Math.max(1,o.pixelHeight>>u),B=o.pixelDepth?Math.max(1,o.pixelDepth>>u):0,m=o.levels[u];let E,Q;if(o.supercompressionScheme===0)E=m.levelData;else{if(o.supercompressionScheme!==2)throw new Error("THREE.KTX2Loader: Unsupported supercompressionScheme.");E=h.decode(m.levelData,m.uncompressedByteLength)}Q=Ct[l]===b.FloatType?new Float32Array(E.buffer,E.byteOffset,E.byteLength/Float32Array.BYTES_PER_ELEMENT):Ct[l]===b.HalfFloatType?new Uint16Array(E.buffer,E.byteOffset,E.byteLength/Uint16Array.BYTES_PER_ELEMENT):E,g.push({data:Q,width:I,height:p,depth:B})}let f;if(ZA.has(mt[l]))f=o.pixelDepth===0?new b.DataTexture(g[0].data,o.pixelWidth,o.pixelHeight):new b.Data3DTexture(g[0].data,o.pixelWidth,o.pixelHeight,o.pixelDepth);else{if(o.pixelDepth>0)throw new Error("THREE.KTX2Loader: Unsupported pixelDepth.");f=new b.CompressedTexture(g,o.pixelWidth,o.pixelHeight)}return f.mipmaps=g,f.type=Ct[l],f.format=mt[l],f.colorSpace=ea(o),f.needsUpdate=!0,Promise.resolve(f)}(a);const r=t,i=this.init().then(()=>this.workerPool.postMessage({type:"transcode",buffer:e,taskConfig:r},[e])).then(o=>this._createTextureFrom(o.data,a));return It.set(e,{promise:i}),i}dispose(){return this.workerPool.dispose(),this.workerSourceURL&&URL.revokeObjectURL(this.workerSourceURL),Bt--,this}}ie.BasisFormat={ETC1S:0,UASTC:1,UASTC_HDR:2},ie.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,BC6H:22,RGB_HALF:24,RGBA_HALF:25},ie.EngineFormat={RGBAFormat:b.RGBAFormat,RGBA_ASTC_4x4_Format:b.RGBA_ASTC_4x4_Format,RGB_BPTC_UNSIGNED_Format:b.RGB_BPTC_UNSIGNED_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,RGBA_S3TC_DXT1_Format:b.RGBA_S3TC_DXT1_Format},ie.EngineType={UnsignedByteType:b.UnsignedByteType,HalfFloatType:b.HalfFloatType,FloatType:b.FloatType},ie.BasisWorker=function(){let n,e,t;const a=_EngineFormat,A=_EngineType,r=_TranscoderFormat,i=_BasisFormat;self.addEventListener("message",function(f){const u=f.data;switch(u.type){case"init":n=u.config,I=u.transcoderBinary,e=new Promise(p=>{t={wasmBinary:I,onRuntimeInitialized:p},BASIS(t)}).then(()=>{t.initializeBasis(),t.KTX2File===void 0&&console.warn("THREE.KTX2Loader: Please update Basis Universal transcoder.")});break;case"transcode":e.then(()=>{try{const{faces:p,buffers:B,width:m,height:E,hasAlpha:Q,format:k,type:x,dfdFlags:T}=function(F){const S=new t.KTX2File(new Uint8Array(F));function D(){S.close(),S.delete()}if(!S.isValid())throw D(),new Error("THREE.KTX2Loader: Invalid or unsupported .ktx2 file");let M;if(S.isUASTC())M=i.UASTC;else if(S.isETC1S())M=i.ETC1S;else{if(!S.isHDR())throw new Error("THREE.KTX2Loader: Unknown Basis encoding");M=i.UASTC_HDR}const v=S.getWidth(),L=S.getHeight(),K=S.getLayers()||1,te=S.getLevels(),H=S.getFaces(),z=S.getHasAlpha(),Se=S.getDFDFlags(),{transcoderFormat:xe,engineFormat:ke,engineType:De}=function(ae,fe,P,O){const Y=l[ae];for(let re=0;re<Y.length;re++){const Z=Y[re];if(!(Z.if&&!n[Z.if])&&Z.basisFormat.includes(ae)&&!(O&&Z.transcoderFormat.length<2)&&!(Z.needsPowerOfTwo&&(!h(fe)||!h(P))))return{transcoderFormat:Z.transcoderFormat[O?1:0],engineFormat:Z.engineFormat[O?1:0],engineType:Z.engineType[0]}}throw new Error("THREE.KTX2Loader: Failed to identify transcoding target.")}(M,v,L,z);if(!v||!L||!te)throw D(),new Error("THREE.KTX2Loader: Invalid texture");if(!S.startTranscoding())throw D(),new Error("THREE.KTX2Loader: .startTranscoding failed");const Fe=[],oe=[];for(let ae=0;ae<H;ae++){const fe=[];for(let P=0;P<te;P++){const O=[];let Y,re;for(let ue=0;ue<K;ue++){const ce=S.getImageLevelInfo(P,ue,ae);ae!==0||P!==0||ue!==0||ce.origWidth%4==0&&ce.origHeight%4==0||console.warn("THREE.KTX2Loader: ETC1S and UASTC textures should use multiple-of-four dimensions."),te>1?(Y=ce.origWidth,re=ce.origHeight):(Y=ce.width,re=ce.height);let W=new Uint8Array(S.getImageTranscodedSizeInBytes(P,ue,0,xe));const Ke=S.transcodeImage(W,P,ue,ae,xe,0,-1,-1);if(De===A.HalfFloatType&&(W=new Uint16Array(W.buffer,W.byteOffset,W.byteLength/Uint16Array.BYTES_PER_ELEMENT)),!Ke)throw D(),new Error("THREE.KTX2Loader: .transcodeImage failed.");O.push(W)}const Z=g(O);fe.push({data:Z,width:Y,height:re}),oe.push(Z.buffer)}Fe.push({mipmaps:fe,width:v,height:L,format:ke,type:De})}return D(),{faces:Fe,buffers:oe,width:v,height:L,hasAlpha:z,dfdFlags:Se,format:ke,type:De}}(u.buffer);self.postMessage({type:"transcode",id:u.id,data:{faces:p,width:m,height:E,hasAlpha:Q,format:k,type:x,dfdFlags:T}},B)}catch(p){console.error(p),self.postMessage({type:"error",id:u.id,error:p.message})}})}var I});const o=[{if:"astcSupported",basisFormat:[i.UASTC],transcoderFormat:[r.ASTC_4x4,r.ASTC_4x4],engineFormat:[a.RGBA_ASTC_4x4_Format,a.RGBA_ASTC_4x4_Format],engineType:[A.UnsignedByteType],priorityETC1S:1/0,priorityUASTC:1,needsPowerOfTwo:!1},{if:"bptcSupported",basisFormat:[i.ETC1S,i.UASTC],transcoderFormat:[r.BC7_M5,r.BC7_M5],engineFormat:[a.RGBA_BPTC_Format,a.RGBA_BPTC_Format],engineType:[A.UnsignedByteType],priorityETC1S:3,priorityUASTC:2,needsPowerOfTwo:!1},{if:"dxtSupported",basisFormat:[i.ETC1S,i.UASTC],transcoderFormat:[r.BC1,r.BC3],engineFormat:[a.RGBA_S3TC_DXT1_Format,a.RGBA_S3TC_DXT5_Format],engineType:[A.UnsignedByteType],priorityETC1S:4,priorityUASTC:5,needsPowerOfTwo:!1},{if:"etc2Supported",basisFormat:[i.ETC1S,i.UASTC],transcoderFormat:[r.ETC1,r.ETC2],engineFormat:[a.RGB_ETC2_Format,a.RGBA_ETC2_EAC_Format],engineType:[A.UnsignedByteType],priorityETC1S:1,priorityUASTC:3,needsPowerOfTwo:!1},{if:"etc1Supported",basisFormat:[i.ETC1S,i.UASTC],transcoderFormat:[r.ETC1],engineFormat:[a.RGB_ETC1_Format],engineType:[A.UnsignedByteType],priorityETC1S:2,priorityUASTC:4,needsPowerOfTwo:!1},{if:"pvrtcSupported",basisFormat:[i.ETC1S,i.UASTC],transcoderFormat:[r.PVRTC1_4_RGB,r.PVRTC1_4_RGBA],engineFormat:[a.RGB_PVRTC_4BPPV1_Format,a.RGBA_PVRTC_4BPPV1_Format],engineType:[A.UnsignedByteType],priorityETC1S:5,priorityUASTC:6,needsPowerOfTwo:!0},{if:"bptcSupported",basisFormat:[i.UASTC_HDR],transcoderFormat:[r.BC6H],engineFormat:[a.RGB_BPTC_UNSIGNED_Format],engineType:[A.HalfFloatType],priorityHDR:1,needsPowerOfTwo:!1},{basisFormat:[i.ETC1S,i.UASTC],transcoderFormat:[r.RGBA32,r.RGBA32],engineFormat:[a.RGBAFormat,a.RGBAFormat],engineType:[A.UnsignedByteType,A.UnsignedByteType],priorityETC1S:100,priorityUASTC:100,needsPowerOfTwo:!1},{basisFormat:[i.UASTC_HDR],transcoderFormat:[r.RGBA_HALF],engineFormat:[a.RGBAFormat],engineType:[A.HalfFloatType],priorityHDR:100,needsPowerOfTwo:!1}],l={[i.ETC1S]:o.filter(f=>f.basisFormat.includes(i.ETC1S)).sort((f,u)=>f.priorityUASTC-u.priorityUASTC),[i.UASTC]:o.filter(f=>f.basisFormat.includes(i.UASTC)).sort((f,u)=>f.priorityUASTC-u.priorityUASTC),[i.UASTC_HDR]:o.filter(f=>f.basisFormat.includes(i.UASTC_HDR)).sort((f,u)=>f.priorityHDR-u.priorityHDR)};function h(f){return f<=2||!(f&f-1)&&f!==0}function g(f){if(f.length===1)return f[0];let u=0;for(let B=0;B<f.length;B++)u+=f[B].byteLength;const I=new Uint8Array(u);let p=0;for(let B=0;B<f.length;B++){const m=f[B];I.set(m,p),p+=m.byteLength}return I}};const ZA=new Set([b.RGBAFormat,b.RGFormat,b.RedFormat]),mt={[Sa]:b.RGBAFormat,[Ra]:b.RGBAFormat,[xa]:b.RGBAFormat,[ka]:b.RGBAFormat,[Ta]:b.RGFormat,[ja]:b.RGFormat,[ya]:b.RGFormat,[wa]:b.RGFormat,[Ma]:b.RedFormat,[Da]:b.RedFormat,[Qa]:b.RedFormat,[Ea]:b.RedFormat,[Ft]:b.RGBA_ASTC_4x4_Format,[va]:b.RGBA_ASTC_6x6_Format,[Fa]:b.RGBA_ASTC_6x6_Format},Ct={[Sa]:b.FloatType,[Ra]:b.HalfFloatType,[xa]:b.UnsignedByteType,[ka]:b.UnsignedByteType,[Ta]:b.FloatType,[ja]:b.HalfFloatType,[ya]:b.UnsignedByteType,[wa]:b.UnsignedByteType,[Ma]:b.FloatType,[Da]:b.HalfFloatType,[Qa]:b.UnsignedByteType,[Ea]:b.UnsignedByteType,[Ft]:b.HalfFloatType,[va]:b.UnsignedByteType,[Fa]:b.UnsignedByteType};function ea(n){const e=n.dataFormatDescriptor[0];return e.colorPrimaries===1?e.transferFunction===2?b.SRGBColorSpace:b.LinearSRGBColorSpace:e.colorPrimaries===10?e.transferFunction===2?"display-p3":"display-p3-linear":(e.colorPrimaries===0||console.warn(`THREE.KTX2Loader: Unsupported color primaries, "${e.colorPrimaries}"`),b.NoColorSpace)}async function ta(n){const e=n.split("?")[0].split(".").pop(),t=await fetch(n);if(!t.ok)throw new Error(`Failed to fetch ${n}: ${t.statusText}`);if(e==="json"){const a=await t.json();return handleJSONSubtree(a,aa(n))}if(e==="subtree")return async function(a,A){const r=new DataView(a),i=r.getBigUint64(8,!0),o=r.getBigUint64(16,!0),l=24,h=l+Number(i),g=h+(8-h%8)%8,f=g+Number(o),u=a.slice(l,h),I=new TextDecoder().decode(u).trim(),p=JSON.parse(I);if(!p.buffers)throw new Error("subtree has no buffers");const B=p.buffers.map(async E=>{if(E.uri){const Q=new URL(E.uri,A).href,k=await fetch(Q);if(!k.ok)throw new Error(`Failed to fetch binary file ${Q}: ${k.statusText}`);return new Uint8Array(await k.arrayBuffer())}return new Uint8Array(a.slice(g,f))}),m=await Promise.all(B);return function(E,Q){function k(D,M){if(!D)throw new Error("incomplete json subtree");if(D.constant){if(D.constant==0)return!1;if(D.constant==1)return!0}if(D.bitstream==null)throw new Error('json subtree "tileAvailability" does not specify a bitstream');if(!E.bufferViews||!E.bufferViews[D.bitstream])throw new Error('json subtree "bufferViews" does not specify a bitstream');const v=E.bufferViews[D.bitstream];return x(Q[v.buffer],v.byteOffset,M)}function x(D,M,v){const L=v%8;return D[M+Math.floor(v/8)]>>L&!0}function T(D){let M=0;return M=D.z==null?Et(D.x,D.y,D.level):yt(D.x,D.y,D.z,D.level),k(E.tileAvailability,M)}function F(D){let M=0;M=D.z==null?Et(D.x,D.y,D.level):yt(D.x,D.y,D.z,D.level);const v=[];return E.contentAvailability.forEach(L=>{v.push(k(L,M))}),v}function S(D){let M=0;return M=D.z==null?Et(D.x,D.y):yt(D.x,D.y,D.z),k(E.childSubtreeAvailability,M)}return{isTileAvailable:T,isContentAvailable:F,isChildSubtreeAvailable:S}}(p,m)}(await t.arrayBuffer(),aa(n));throw new Error(`Unsupported file extension: ${e}`)}function aa(n){const e=n.split("?")[0];return e.substring(0,e.lastIndexOf("/")+1)}function Aa(n){return n=1431655765&((n=858993459&((n=252645135&((n=16711935&((n&=65535)^n<<8))^n<<4))^n<<2))^n<<1)}function Et(n,e,t){let a=0;return t&&(a=(Math.pow(4,t)-1)/3),a+(Aa(n)|Aa(e)<<1)}function Qt(n){return n=153391689&((n=51130563&((n=50393103&((n=4278190335&((n&=1023)^n<<16))^n<<8))^n<<4))^n<<2)}function yt(n,e,t,a){let A=0;return a&&(A=(Math.pow(8,a)-1)/7),A+(Qt(n)|Qt(e)<<1|Qt(t)<<2)}const Ve=new Map;async function vt(n,e){if(!n.root||!n.root.implicitTiling)return n;if(!n.root.content&&!n.root.contents)throw new Error("implicit tiling requires a Template URI");let t=!0;n.root.implicitTiling.subdivisionScheme&&(t=n.root.implicitTiling.subdivisionScheme.toUpperCase()==="QUADTREE");let a="";n.root.implicitTiling.subtrees&&(n.root.implicitTiling.subtrees.uri?a=n.root.implicitTiling.subtrees.uri:n.root.implicitTiling.subtrees.url&&(a=n.root.implicitTiling.subtrees.url));let A=[];n.root.content?n.root.content.uri?A.push(n.root.content.uri):n.root.content.url&&A.push(n.root.content.url):n.root.contents&&n.root.contents.forEach(I=>{I.uri?A.push(I.uri):I.url&&A.push(I.url)});const r=function(I){const p=I.split("?")[0];return p.substring(0,p.lastIndexOf("/")+1)}(e);let i;t&&(i=a.replace("{level}",0).replace("{x}",0).replace("{y}",0)),t||(i=a.replace("{level}",0).replace("{x}",0).replace("{y}",0).replace("{z}",0));const o={level:0,x:0,y:0},l={level:0,x:0,y:0};t||(o.z=0,l.z=0),Ve.set(i,await ta(r+i));const h=Ve.get(i),g=[];h.isContentAvailable(l)&&A.forEach(I=>{let p;t&&(p=I.replace("{level}",o.level).replace("{x}",o.x).replace("{y}",o.y)),t||(p=I.replace("{level}",o.level).replace("{x}",o.x).replace("{y}",o.y).replace("{z}",o.z)),g.push({uri:p})});const f={geometricError:n.root.geometricError,boundingVolume:n.root.boundingVolume,refine:n.root.refine,globalAddress:o,localAddress:l,subtree:h,contents:g,getChildren:async()=>u(f)};return{root:f};async function u(I){const p=[];if(I.localAddress.level==n.root.implicitTiling.availableLevels-1)return p;if((I.localAddress.level+1)%n.root.implicitTiling.subtreeLevels==0){const B=tt(I.localAddress),m=tt(I.globalAddress),E=ia(t,n.root.boundingVolume,m);for(let Q=0;Q<B.length;Q++){const k=B[Q],x=m[Q];I.subtree.isChildSubtreeAvailable(k)&&(t&&a.replace("{level}",x.level).replace("{x}",x.x).replace("{y}",x.y),t||a.replace("{level}",x.level).replace("{x}",x.x).replace("{y}",x.y).replace("{z}",x.z)),Ve.has(i)||Ve.set(i,await ta(r+i));const T=Ve.get(i),F={level:0,x:0,y:0};t||(F.z=0);const S=[];T.isContentAvailable(F)&&A.forEach(M=>{let v;t&&(v=M.replace("{level}",x.level).replace("{x}",x.x).replace("{y}",x.y)),t||(v=M.replace("{level}",x.level).replace("{x}",x.x).replace("{y}",x.y).replace("{z}",x.z)),S.push({uri:v})});const D={geometricError:I.geometricError/2,boundingVolume:E[Q],refine:n.root.refine,globalAddress:x,localAddress:F,subtree:T,contents:S,getChildren:async()=>u(D)};p.push(D)}}else{const B=tt(I.localAddress),m=tt(I.globalAddress),E=ia(t,n.root.boundingVolume,m);for(let Q=0;Q<B.length;Q++){const k=B[Q],x=m[Q];if(!I.subtree.isTileAvailable(k))continue;const T=[],F=I.subtree.isContentAvailable(k);for(let D=0;D<A.length;D++){if(!F[D])continue;const M=A[D];let v;t&&(v=M.replace("{level}",x.level).replace("{x}",x.x).replace("{y}",x.y)),t||(v=M.replace("{level}",x.level).replace("{x}",x.x).replace("{y}",x.y).replace("{z}",x.z)),T.push({uri:v})}const S={geometricError:I.geometricError/2,boundingVolume:E[Q],refine:n.root.refine,globalAddress:x,localAddress:k,subtree:I.subtree,contents:T,getChildren:async()=>u(S)};p.push(S)}}return p.length>0?p:void 0}}function tt(n){const{level:e,x:t,y:a,z:A}=n,r=e+1;let i=[];return i=A===void 0?[{level:r,x:2*t,y:2*a},{level:r,x:2*t+1,y:2*a},{level:r,x:2*t,y:2*a+1},{level:r,x:2*t+1,y:2*a+1}]:[{level:r,x:2*t,y:2*a,z:2*A},{level:r,x:2*t+1,y:2*a,z:2*A},{level:r,x:2*t,y:2*a+1,z:2*A},{level:r,x:2*t+1,y:2*a+1,z:2*A},{level:r,x:2*t,y:2*a,z:2*A+1},{level:r,x:2*t+1,y:2*a,z:2*A+1},{level:r,x:2*t,y:2*a+1,z:2*A+1},{level:r,x:2*t+1,y:2*a+1,z:2*A+1}],i}function ia(n,e,t){const a=[];for(let A=0;A<t.length;A++)a.push($A(n,e,t[A]));return a}function $A(n,e,t){if(e.region)return function(a,A,r){const[i,o,l,h,g,f]=A,u=(l-i)/2**r.level,I=(h-o)/2**r.level,p=a?0:(f-g)/2**r.level,B=i+u*r.x,m=o+I*r.y,E=B+u,Q=m+I,k=a?g:g+p*r.z,x=a?f:k+p;return{region:[B,m,E,Q,k,x]}}(n,e.region,t);if(e.box)return function(a,A,r){const i=A.slice(0,3),o=[A.slice(3,6),A.slice(6,9),A.slice(9,12)],l=1/Math.pow(2,r.level),h=[l,l,a?1:l],g=o.map((I,p)=>I.map(B=>B*h[p])),f=[i[0]-o[0][0]-o[1][0]-o[2][0],i[1]-o[0][1]-o[1][1]-o[2][1],i[2]-o[0][2]-o[1][2]-o[2][2]];return{box:[f[0]+(2*r.x+1)*(g[0][0]+g[1][0]+g[2][0]),f[1]+(2*r.y+1)*(g[0][1]+g[1][1]+g[2][1]),a?i[2]:f[2]+(2*r.z+1)*(g[0][2]+g[1][2]+g[2][2])].concat(...g)}}(n,e.box,t);throw new Error("Unsupported bounding volume type")}(function(){var n,e=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!="object")return{supported:!1};var t=WebAssembly.instantiate(function(h){for(var g=new Uint8Array(h.length),f=0;f<h.length;++f){var u=h.charCodeAt(f);g[f]=u>96?u-97:u>64?u-39:u+4}var I=0;for(f=0;f<h.length;++f)g[I++]=g[f]<60?e[g[f]]:64*(g[f]-60)+g[++f];return g.buffer.slice(0,I)}("b9H79TebbbeJq9Geueu9Geub9Gbb9Gvuuuuueu9Gduueu9Gluuuueu9Gvuuuuub9Gouuuuuub9Gluuuub9GiuuueuiKLdilevlevlooroowwvwbDDbelve9Weiiviebeoweuec:W;kekr;RiOo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949c919M9MWVbe8F9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949c919M9MWV9c9V919U9KbdE9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949wWV79P9V9UbiY9TW79O9V9Wt9FW9U9J9V9KW69U9KW949c919M9MWVbl8E9TW79O9V9Wt9FW9U9J9V9KW69U9KW949c919M9MWV9c9V919U9Kbv8A9TW79O9V9Wt9FW9U9J9V9KW69U9KW949wWV79P9V9UboE9TW79O9V9Wt9FW9U9J9V9KW69U9KW949tWG91W9U9JWbra9TW79O9V9Wt9FW9U9J9V9KW69U9KW949tWG91W9U9JW9c9V919U9KbwL9TW79O9V9Wt9FW9U9J9V9KWS9P2tWV9p9JtbDK9TW79O9V9Wt9FW9U9J9V9KWS9P2tWV9r919HtbqL9TW79O9V9Wt9FW9U9J9V9KWS9P2tWVT949WbkE9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94J9H9J9OWbPa9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94J9H9J9OW9ttV9P9Wbsa9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94SWt9J9O9sW9T9H9WbzK9TW79O9V9Wt9F79W9Ht9P9H29t9VVt9sW9T9H9WbHl79IV9RbODwebcekdQXq:g9sLdbk;3keYu8Jjjjjbcjo9Rgv8Kjjjjbcbhodnalcefae0mbabcbRb:S:kjjbc:GeV86bbavcjdfcbcjdzNjjjb8AdnaiTmbavcjdfadalz:tjjjb8Akabaefhrabcefhwavalfcbcbcjdal9RalcFe0EzNjjjb8Aavavcjdfalz:tjjjbhDcj;abal9UhodndndndndnalTmbaoc;WFbGgecjdaecjd6Ehqcbhkdninakai9pmiaDcjlfcbcjdzNjjjb8Aaqaiak9Rakaqfai6Egxcsfgecl4cifcd4hmadakal2fhPdndndndndnaec9WGgsTmbcbhzcehHaPhOawhAxekdnaxTmbcbhAcehHaPhCinaDaAfRbbhXaDcjlfheaChoaxhQinaeaoRbbgLaX9RgXcetaX;acr4786bbaoalfhoaecefheaLhXaQcufgQmbkaraw9Ram6miawcbamzNjjjbgeTmiaCcefhCaeamfhwaAcefgAal6hHaAal9hmbxvkkaraw9Ram6mvawcbamzNjjjb8AceheinawgXamfhwalaegoSmldnaraw9Ram6mbaocefheawcbamzNjjjb8AaXmekkaoal6hHxekindnaxTmbaDazfRbbhXaDcjlfheaOhoaxhQinaeaoRbbgLaX9RgXcetaX;acr4786bbaoalfhoaecefheaLhXaQcufgQmbkkaraA9Ram6mearaAcbamzNjjjbgKamfgw9RcK6mdcbhYaDcjlfhAinaDcjlfaYfh8AcwhCczhLcehQindndnaQce9hmbcuhoa8ARbbmecbhodninaogecsSmeaecefhoaAaefcefRbbTmbkkcucbaecs6EhoxekaQcetc;:FFFeGhocuaQtcu7cFeGhXcbheinaoaXaAaefRbb9nfhoaecefgecz9hmbkkaoaLaoaL6geEhLaQaCaeEhCaQcetgQcw6mbkdndndndnaCcufPdiebkaKaYco4fgeaeRbbcdciaCclSEaYci4coGtV86bbaCcw9hmeawa8A8Pbb83bbawcwfa8Acwf8Pbb83bbawczfhwxdkaKaYco4fgeaeRbbceaYci4coGtV86bbkdncwaC9TgEmbinawcb86bbawcefhwxbkkcuaCtcu7h8Acbh3aAh5ina5heaEhQcbhoinaeRbbgLa8AcFeGgXaLaX6EaoaCtVhoaecefheaQcufgQmbkawao86bba5aEfh5awcefhwa3aEfg3cz6mbkcbheindnaAaefRbbgoaX6mbawao86bbawcefhwkaecefgecz9hmbkkdnaYczfgYas9pmbaAczfhAaraw9RcL0mekkaYas6meawTmeaOcefhOazcefgzal6hHawhAazalSmixbkkcbhwaHceGTmexikcbhwaHceGmdkaDaPaxcufal2falz:tjjjb8AaxakfhkawmbkcbhoxokcbhoxvkaiTmekcbhoaraw9Ralcaalca0E6mialc8F9nmexdkcbhoaecufca6mdkawcbcaal9RgezNjjjbaefhwkawaDcjdfalz:tjjjbalfab9Rhokavcjof8Kjjjjbaok9heeuaecaaeca0Eabcj;abae9Uc;WFbGgdcjdadcjd6Egdfcufad9Uae2adcl4cifcd4adV2fcefkmbcbabBd:S:kjjbk;rse3u8Jjjjjbc;ae9Rgl8Kjjjjbcbhvdnaici9UgocHfae0mbabcbyd:C:kjjbgrc;GeV86bbalc;abfcFecjezNjjjb8AalcUfgw9cu83ibalc8WfgD9cu83ibalcyfgq9cu83ibalcafgk9cu83ibalcKfgx9cu83ibalczfgm9cu83ibal9cu83iwal9cu83ibabaefc9WfhPabcefgsaofhednaiTmbcmcsarcb9kgzEhHcbhOcbhAcbhCcbhXcbhQindnaeaP9nmbcbhvxikaQcufhvadaCcdtfgoydbhLaocwfydbhKaoclfydbhYcbh8Adndninalc;abfavcsGcitfgoydlhEdndndnaoydbgoaL9hmbaEaYSmekdnaoaY9hmbaEaK9hmba8Acefh8AxekaoaK9hmeaEaL9hmea8Acdfh8Aka8Ac870mdaXcufhvada8AciGcx2goc:y1jjbfydbaCfcdtfydbhEadaocN1jjbfydbaCfcdtfydbhKadaoc:q1jjbfydbaCfcdtfydbhLcbhodnindnalavcsGcdtfydbaE9hmbaohYxdkcuhYavcufhvaocefgocz9hmbkkaEaOSgvaYce9iaYaH9oVgoGh3dndndndndncbcsavEaYaoEgvcs9hmbarce9imbaEaEaAaEcefaASgvEgAcefSmecmcsavEhvkasava8Acdtc;WeGV86bbavcs9hmeaEaA9Rgvcetavc8F917hvinaeavcFb0crtavcFbGV86bbaecefheavcje6hoavcr4hvaoTmbkaEhAxdkcPhvasa8AcdtcPV86bbaEhAkavTmbavaH9imekalaXcdtfaEBdbaXcefcsGhXkaOa3fhOalc;abfaQcitfgvaKBdlavaEBdbalc;abfaQcefcsGgvcitfgoaEBdlaoaLBdbavcefhoxikavcufhva8Aclfg8Ac;ab9hmbkkdnadceaKaOScetaYaOSEcx2gvc:q1jjbfydbaCfcdtfydbgLTadavcN1jjbfydbaCfcdtfydbg8AceSGadavc:y1jjbfydbaCfcdtfydbgYcdSGaOcb9hGazGg5ce9hmbaw9cu83ibaD9cu83ibaq9cu83ibak9cu83ibax9cu83ibam9cu83ibal9cu83iwal9cu83ibcbhOkcbhEaXcufgvhodnindnalaocsGcdtfydba8A9hmbaEhKxdkcuhKaocufhoaEcefgEcz9hmbkkcbhodnindnalavcsGcdtfydbaY9hmbaohExdkcuhEavcufhvaocefgocz9hmbkkaOaLaOSg8Efh3dndnaKcm0mbaKcefhKxekcbcsa8Aa3SgvEhKa3avfh3kdndnaEcm0mbaEcefhExekcbcsaYa3SgvEhEa3avfh3kc9:cua8EEh8FaEaKcltVhocbhvdndndninavcj1jjbfRbbaocFeGSmeavcefgvcz9hmbxdkka5aLaO9havcm0VVmbasavc;WeV86bbxekasa8F86bbaeao86bbaecefhekdna8EmbaLaA9Rgvcetavc8F917hvinaeavcFb0gocrtavcFbGV86bbavcr4hvaecefheaombkaLhAkdnaKcs9hmba8AaA9Rgvcetavc8F917hvinaeavcFb0gocrtavcFbGV86bbavcr4hvaecefheaombka8AhAkdnaEcs9hmbaYaA9Rgvcetavc8F917hvinaeavcFb0gocrtavcFbGV86bbavcr4hvaecefheaombkaYhAkalaXcdtfaLBdbaXcefcsGhvdndnaKPzbeeeeeeeeeeeeeebekalavcdtfa8ABdbaXcdfcsGhvkdndnaEPzbeeeeeeeeeeeeeebekalavcdtfaYBdbavcefcsGhvkalc;abfaQcitfgoaLBdlaoa8ABdbalc;abfaQcefcsGcitfgoa8ABdlaoaYBdbalc;abfaQcdfcsGcitfgoaYBdlaoaLBdbaQcifhoavhXa3hOkascefhsaocsGhQaCcifgCai6mbkkcbhvaeaP0mbcbhvinaeavfavcj1jjbfRbb86bbavcefgvcz9hmbkaeab9Ravfhvkalc;aef8KjjjjbavkZeeucbhddninadcefgdc8F0meceadtae6mbkkadcrfcFeGcr9Uci2cdfabci9U2cHfkmbcbabBd:C:kjjbk:ydewu8Jjjjjbcz9Rhlcbhvdnaicvfae0mbcbhvabcbRb:C:kjjbc;qeV86bbal9cb83iwabcefhoabaefc98fhrdnaiTmbcbhwcbhDindnaoar6mbcbskadaDcdtfydbgqalcwfawaqav9Rgvavc8F91gv7av9Rc507gwcdtfgkydb9Rgvc8E91c9:Gavcdt7awVhvinaoavcFb0gecrtavcFbGV86bbavcr4hvaocefhoaembkakaqBdbaqhvaDcefgDai9hmbkkcbhvaoar0mbaocbBbbaoab9RclfhvkavkBeeucbhddninadcefgdc8F0meceadtae6mbkkadcwfcFeGcr9Uab2cvfk:dvli99dui99ludnaeTmbcuadcetcuftcu7:Yhvdndncuaicuftcu7:YgoJbbbZMgr:lJbbb9p9DTmbar:Ohwxekcjjjj94hwkcbhicbhDinalclfIdbgrJbbbbJbbjZalIdbgq:lar:lMalcwfIdbgk:lMgr:varJbbbb9BEgrNhxaqarNhralcxfIdbhqdndnakJbbbb9GTmbaxhkxekJbbjZar:l:tgkak:maxJbbbb9GEhkJbbjZax:l:tgxax:marJbbbb9GEhrkdndnaqJbbj:;aqJbbj:;9GEgxJbbjZaxJbbjZ9FEavNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohmxekcjjjj94hmkdndnakJbbj:;akJbbj:;9GEgqJbbjZaqJbbjZ9FEaoNJbbbZJbbb:;akJbbbb9GEMgq:lJbbb9p9DTmbaq:OhPxekcjjjj94hPkdndnarJbbj:;arJbbj:;9GEgqJbbjZaqJbbjZ9FEaoNJbbbZJbbb:;arJbbbb9GEMgr:lJbbb9p9DTmbar:Ohsxekcjjjj94hskdndnadcl9hmbabaifgzas86bbazcifam86bbazcdfaw86bbazcefaP86bbxekabaDfgzas87ebazcofam87ebazclfaw87ebazcdfaP87ebkalczfhlaiclfhiaDcwfhDaecufgembkkk;klld99eud99eudnaeTmbdndncuaicuftcu7:YgvJbbbZMgo:lJbbb9p9DTmbao:Ohixekcjjjj94hikaic;8FiGhrinabcofcicdalclfIdb:lalIdb:l9EgialcwfIdb:lalaicdtfIdb:l9EEgialcxfIdb:lalaicdtfIdb:l9EEgiarV87ebdndnalaicefciGcdtfIdbJ;Zl:1ZNJbbj:;JbbjZalaicdtfIdbJbbbb9DEgoNgwJbbj:;awJbbj:;9GEgDJbbjZaDJbbjZ9FEavNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohqxekcjjjj94hqkabaq87ebdndnaoalaicdfciGcdtfIdbJ;Zl:1ZNNgwJbbj:;awJbbj:;9GEgDJbbjZaDJbbjZ9FEavNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohqxekcjjjj94hqkabcdfaq87ebdndnaoalaicufciGcdtfIdbJ;Zl:1ZNNgoJbbj:;aoJbbj:;9GEgwJbbjZawJbbjZ9FEavNJbbbZJbbb:;aoJbbbb9GEMgo:lJbbb9p9DTmbao:Ohixekcjjjj94hikabclfai87ebabcwfhbalczfhlaecufgembkkk:Hvdxue998Jjjjjbcjd9Rgo8Kjjjjbadcd4hrdndndndnavcd9hmbadcl6mearcearce0EhwaohDinaDc:CuBdbaDclfhDawcufgwmbkaeTmiadcl6mdarcearce0EhqarcdthkalhxcbhminaohDaxhwaqhPinaDaDydbgsawydbgzcL4cFeGc:cufcbazEgzasaz9kEBdbawclfhwaDclfhDaPcufgPmbkaxakfhxamcefgmae9hmbkkaeTmdxekaeTmekavcb9hadcl6gqVhHarcearce0Ehkarcdthrceai9Rhmcbhdindndndnavce9hmbaqmdc:CuhwalhDakhPinawaDydbgscL4cFeGc:cufcbasEgsawas9kEhwaDclfhDaPcufgPmbxdkkc:CuhwaHmbaohDalhPakhsinaDaPydbgzcL4cFeGgxc8Aaxc8A9kEc:cufcbazEBdbaPclfhPaDclfhDascufgsmbkkaqmbcbhDakhsinawhPdnavceSmbaoaDfydbhPkdndnalaDfIdbgOcjjj;8iamaPfgPcLt9R::NJbbbZJbbb:;aOJbbbb9GEMgO:lJbbb9p9DTmbaO:Ohzxekcjjjj94hzkabaDfazcFFFrGaPcKtVBdbaDclfhDascufgsmbkkabarfhbalarfhladcefgdae9hmbkkaocjdf8KjjjjbkFkdCui998Jjjjjbc:Gd9Rgv8Kjjjjbavc:4efcbc;KbzNjjjb8AcbhodnadTmbcbhoaiTmbdnabae9hmbavcuadcdtgoadcFFFFi0Ecbyd:K:kjjbHjjjjbbgeBd:4eavceBd:ydaeabaoz:tjjjb8Akavc:OefcwfcbBdbav9cb83i:Oeavc:Oefaeadaiavc:4efz:njjjbcuaicdtgraicFFFFi0Egwcbyd:K:kjjbHjjjjbbhoavc:4efavyd:ydgDcdtfaoBdbavaDcefgqBd:ydaoavyd:Oegkarz:tjjjbhxavc:4efaqcdtfadci9Ugmcbyd:K:kjjbHjjjjbbgoBdbavaDcdfgrBd:ydaocbamzNjjjbhPavc:4efarcdtfawcbyd:K:kjjbHjjjjbbgsBdbavaDcifgqBd:ydaxhoashrinaralIdbalaoydbgwcwawcw6Ecdtfc;ebfIdbMUdbaoclfhoarclfhraicufgimbkavc:4efaqcdtfcuamcdtadcFFFF970Ecbyd:K:kjjbHjjjjbbgqBdbavaDclfBd:yddnadci6mbamceamce0EhiaehoaqhrinarasaoydbcdtfIdbasaoclfydbcdtfIdbMasaocwfydbcdtfIdbMUdbaocxfhoarclfhraicufgimbkkavc;qbfhzavhoavyd:SehHavyd:WehOcbhwcbhrcbhAcehCinaohXcihQaearci2gLcdtfgocwfydbhdaoydbhDabaAcx2fgiclfaoclfydbgKBdbaiaDBdbaicwfadBdbaParfce86bbazadBdwazaKBdlazaDBdbaqarcdtfcbBdbdnawTmbcihQaXhiinazaQcdtfaiydbgoBdbaQaoaD9haoaK9hGaoad9hGfhQaiclfhiawcufgwmbkkaAcefhAaxaDcdtfgoaoydbcufBdbaxaKcdtfgoaoydbcufBdbaxadcdtfgoaoydbcufBdbcbhwinaOaHaeawaLfcdtfydbcdtgifydbcdtfgKhoakaifgDydbgdhidnadTmbdninaoydbarSmeaoclfhoaicufgiTmdxbkkaoadcdtaKfc98fydbBdbaDaDydbcufBdbkawcefgwci9hmbkdndndnaQTmbcuhrJbbbbhYcbhDavyd:SehKavyd:WehLindndnakazaDcdtfydbcdtgofydbgimbaDcefhDxekaDcs0hwasaofgdIdbh8AadalcbaDcefgDawEcdtfIdbalaxaofydbgwcwawcw6Ecdtfc;ebfIdbMgEUdbaEa8A:thEaicdthiaLaKaofydbcdtfhoinaqaoydbgwcdtfgdaEadIdbMg8AUdba8AaYaYa8A9DgdEhYawaradEhraoclfhoaic98fgimbkkaDaQ9hmbkarcu9hmekaCam9pmeindnaPaCfRbbmbaChrxdkamaCcefgC9hmbxdkkaQczaQcz6EhwazhoaXhzarcu9hmekkavyd:ydhokaocdtavc:4effc98fhrdninaoTmearydbcbyd:G:kjjbH:bjjjbbarc98fhraocufhoxbkkavc:Gdf8Kjjjjbk;UlevucuaicdtgvaicFFFFi0Egocbyd:K:kjjbHjjjjbbhralalyd9GgwcdtfarBdbalawcefBd9GabarBdbaocbyd:K:kjjbHjjjjbbhralalyd9GgocdtfarBdbalaocefBd9GabarBdlcuadcdtadcFFFFi0Ecbyd:K:kjjbHjjjjbbhralalyd9GgocdtfarBdbalaocefBd9GabarBdwabydbcbavzNjjjb8Aadci9UhwdnadTmbabydbhoaehladhrinaoalydbcdtfgvavydbcefBdbalclfhlarcufgrmbkkdnaiTmbabydbhlabydlhrcbhvaihoinaravBdbarclfhralydbavfhvalclfhlaocufgombkkdnadci6mbawceawce0EhDabydlhrabydwhvcbhlinaecwfydbhoaeclfydbhdaraeydbcdtfgwawydbgwcefBdbavawcdtfalBdbaradcdtfgdadydbgdcefBdbavadcdtfalBdbaraocdtfgoaoydbgocefBdbavaocdtfalBdbaecxfheaDalcefgl9hmbkkdnaiTmbabydlheabydbhlinaeaeydbalydb9RBdbalclfhlaeclfheaicufgimbkkkQbabaeadaic:01jjbz:mjjjbkQbabaeadaic:C:jjjbz:mjjjbk9DeeuabcFeaicdtzNjjjbhlcbhbdnadTmbindnalaeydbcdtfgiydbcu9hmbaiabBdbabcefhbkaeclfheadcufgdmbkkabk;:kivuo99lu8Jjjjjbcj;Hb9Rgl8Kjjjjbcbhvalc1;Gbfcbc;KbzNjjjb8AalcuadcdtadcFFFFi0Egocbyd:K:kjjbHjjjjbbgrBd19GalceBd;O9Galcwfcbyd:m:kjjbBdbalcb8Pd:e:kjjb83ibalc;W;Gbfcwfcbyd:y:kjjbBdbalcb8Pd:q:kjjb83i;W9Gaicd4hwdndnadmbJFFuFhDJFFuuhqJFFuuhkJFFuFhxJFFuuhmJFFuFhPxekawcdthsaehzincbhiinalaifgHazaifIdbgDaHIdbgxaxaD9EEUdbalc;W;GbfaifgHaDaHIdbgxaxaD9DEUdbaiclfgicx9hmbkazasfhzavcefgvad9hmbkalIdwhqalId;49GhDalIdlhkalId;09GhxalIdbhmalId;W9GhPkdndnadTmbJbbbbJbbjZaPam:tJbbbb:xgPaxak:tgxaxaP9DEgxaDaq:tgDaDax9DEgD:vaDJbbbb9BEhDawcdthsarhHadhzindndnaDaeIdbam:tNJb;au9eNJbbbZMgx:lJbbb9p9DTmbax:Ohixekcjjjj94hikaicztaicwtcj;GiGVaicsGVc:p;G:dKGcH2c;d;H:WKGcv2c;j:KM;jbGhvdndnaDaeclfIdbak:tNJb;au9eNJbbbZMgx:lJbbb9p9DTmbax:Ohixekcjjjj94hikaicztaicwtcj;GiGVaicsGVc:p;G:dKGcH2c;d;H:WKGcq2cM;j:KMeGavVhvdndnaDaecwfIdbaq:tNJb;au9eNJbbbZMgx:lJbbb9p9DTmbax:Ohixekcjjjj94hikaHavaicztaicwtcj;GiGVaicsGVc:p;G:dKGcH2c;d;H:WKGcC2c:KM;j:KdGVBdbaeasfheaHclfhHazcufgzmbkalcbcj;GbzNjjjbhiarhHadheinaiaHydbgzcFrGcx2fgvavydbcefBdbaiazcq4cFrGcx2fgvavydlcefBdlaiazcC4cFrGcx2fgzazydwcefBdwaHclfhHaecufgembxdkkalcbcj;GbzNjjjb8AkcbhHcbhzcbhecbhvinalaHfgiydbhsaiazBdbaicwfgwydbhOawavBdbaiclfgiydbhwaiaeBdbasazfhzaOavfhvawaefheaHcxfgHcj;Gb9hmbkcbhialaocbyd:K:kjjbHjjjjbbgzBd:m9GdnadTmbabhHinaHaiBdbaHclfhHadaicefgi9hmbkadTmbabhiadhHinalaraiydbgecdtfydbcFrGcx2fgvavydbgvcefBdbazavcdtfaeBdbaiclfhiaHcufgHmbkazhiadhHinalaraiydbgecdtfydbcq4cFrGcx2fgvavydlgvcefBdlabavcdtfaeBdbaiclfhiaHcufgHmbkabhiadhHinalaraiydbgecdtfydbcC4cFrGcx2fgvavydwgvcefBdwazavcdtfaeBdbaiclfhiaHcufgHmbkadTmbcbhiinabazydbcdtfaiBdbazclfhzadaicefgi9hmbkkclhidninaic98Smealc1;Gbfaifydbcbyd:G:kjjbH:bjjjbbaic98fhixbkkalcj;Hbf8Kjjjjbk9teiucbcbyd:O:kjjbgeabcifc98GfgbBd:O:kjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd:O:kjjbgeabcrfc94GfgbBd:O:kjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik9:eiuZbhedndncbyd:O:kjjbgdaecztgi9nmbcuheadai9RcFFifcz4nbcuSmekadhekcbabae9Rcifc98Gcbyd:O:kjjbfgdBd:O:kjjbdnadZbcztge9nmbadae9RcFFifcz4nb8Akkk:6ddbcjwk:Cdb4:h9w9N94:P:gW:j9O:ye9Pbbbbbbebbbdbbbebbbdbbbbbbbdbbbbbbbebbbbbbb:l29hZ;69:9kZ;N;76Z;rg97Z;z;o9xZ8J;B85Z;:;u9yZ;b;k9HZ:2;Z9DZ9e:l9mZ59A8KZ:r;T3Z:A:zYZ79OHZ;j4::8::Y:D9V8:bbbb9s:49:Z8R:hBZ9M9M;M8:L;z;o8:;8:PG89q;x:J878R:hQ8::M:B;e87bbbbbbjZbbjZbbjZ:E;V;N8::Y:DsZ9i;H;68:xd;R8:;h0838:;W:NoZbbbb:WV9O8:uf888:9i;H;68:9c9G;L89;n;m9m89;D8Ko8:bbbbf:8tZ9m836ZS:2AZL;zPZZ818EZ9e:lxZ;U98F8:819E;68:FFuuFFuuFFuuFFuFFFuFFFuFbc:Cqkzebbbebbbdbbb8WWbb"),{}).then(function(h){(n=h.instance).exports.__wasm_call_ctors(),n.exports.meshopt_encodeVertexVersion(0),n.exports.meshopt_encodeIndexVersion(1)});function a(h){if(!h)throw new Error("Assertion failed")}function A(h){return new Uint8Array(h.buffer,h.byteOffset,h.byteLength)}function r(h,g,f,u,I){var p=n.exports.sbrk,B=p(g),m=p(u*I),E=new Uint8Array(n.exports.memory.buffer);E.set(A(f),m);var Q=h(B,g,m,u,I),k=new Uint8Array(Q);return k.set(E.subarray(B,B+Q)),p(B-p(0)),k}function i(h){for(var g=0,f=0;f<h.length;++f)var u=h[f];return g}function o(h,g){if(a(g==2||g==4),g==4)return new Uint32Array(h.buffer,h.byteOffset,h.byteLength/4);var f=new Uint16Array(h.buffer,h.byteOffset,h.byteLength/2);return new Uint32Array(f)}function l(h,g,f,u,I,p,B){var m=n.exports.sbrk,E=m(f*u),Q=m(f*p),k=new Uint8Array(n.exports.memory.buffer);k.set(A(g),Q),h(E,f,u,I,Q,B);var x=new Uint8Array(f*u);return x.set(k.subarray(E,E+f*u)),m(E-m(0)),x}})();var Ua=function(){var n=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]),e=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!="object")return{supported:!1};var t,a=WebAssembly.validate(n)?"b9H79TebbbeKl9Gbb9Gvuuuuueu9Giuuub9Geueuikqbbebeedddilve9Weeeviebeoweuec:q;Aekr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbdY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVblE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtboK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbrL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbwl79IV9RbDq;b9tqlbzik9:evu8Jjjjjbcz9Rhbcbheincbhdcbhiinabcwfadfaicjuaead4ceGglE86bbaialfhiadcefgdcw9hmbkaec:q:yjjbfai86bbaecitc:q1jjbfab8Piw83ibaecefgecjd9hmbkk;e8JlHud97euo978Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Rad;8qbbcj;abad9UhoaicefhldnadTmbaoc;WFbGgocjdaocjd6EhwcbhDinaDae9pmeawaeaD9RaDawfae6Egqcsfgoc9WGgkci2hxakcethmaocl4cifcd4hPabaDad2fhscbhzdnincbhHalhOcbhAdninaraO9RaP6miavcj;cbfaAak2fhCaOaPfhlcbhidnakc;ab6mbaral9Rc;Gb6mbcbhoinaCaofhidndndndndnaOaoco4fRbbgXciGPlbedibkaipxbbbbbbbbbbbbbbbbpklbxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklbalczfhlkdndndndndnaXcd4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklzxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklzalczfhlkdndndndndnaXcl4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklaxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklaalczfhlkdndndndndnaXco4Plbedibkaipxbbbbbbbbbbbbbbbbpkl8WxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WalclfaYpQbfaXc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WalcwfaYpQbfaXc:q:yjjbfRbbfhlxekaialpbbbpkl8Walczfhlkaoc;abfhiaocjefak0meaihoaral9Rc;Fb0mbkkdndnaiak9pmbaici4hoinaral9RcK6mdaCaifhXdndndndndnaOaico4fRbbaocoG4ciGPlbedibkaXpxbbbbbbbbbbbbbbbbpklbxikaXalpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaXalpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaXalpbbbpklbalczfhlkaocdfhoaiczfgiak6mbkkalTmbaAcd0hHalhOaAcefgAclSmdxekkcbhlaHceGTmdkdnakTmbavcjdfazfhiavazfpbdbhYcbhXinaiavcj;cbfaXfgopblbgLcep9TaLpxeeeeeeeeeeeeeeeegQp9op9Hp9rgLaoakfpblbg8Acep9Ta8AaQp9op9Hp9rg8ApmbzeHdOiAlCvXoQrLgEaoamfpblbg3cep9Ta3aQp9op9Hp9rg3aoaxfpblbg5cep9Ta5aQp9op9Hp9rg5pmbzeHdOiAlCvXoQrLg8EpmbezHdiOAlvCXorQLgQaQpmbedibedibedibediaYp9UgYp9AdbbaiadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaEa8EpmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaLa8ApmwKDYq8AkEx3m5P8Es8FgLa3a5pmwKDYq8AkEx3m5P8Es8Fg8ApmbezHdiOAlvCXorQLgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaLa8ApmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfhiaXczfgXak6mbkkazclfgzad6mbkasavcjdfaqad2;8qbbavavcjdfaqcufad2fad;8qbbaqaDfhDc9:hoalmexikkc9:hoxekcbc99aral9Radcaadca0ESEhokavcj;kbf8Kjjjjbaokwbz:bjjjbk;tzeHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecje;8kbavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhodnaeTmbcmcsaDceSEhkcbhxcbhmcbhrcbhicbhlindnaoaq9nmbc9:hoxikdndnawRbbgDc;Ve0mbavc;abfalaDcu7gPcl4fcsGcitfgsydlhzasydbhHdnaDcsGgDak9pmbavaiaPfcsGcdtfydbaxaDEhsaDThDdndnadcd9hmbabarcetfgPaH87ebaPcdfaz87ebaPclfas87ebxekabarcdtfgPaHBdbaPclfazBdbaPcwfasBdbkaxaDfhxavc;abfalcitfgPasBdbaPazBdlavaicdtfasBdbavc;abfalcefcsGglcitfgPaHBdbaPasBdlaiaDfhialcefhlxdkdndnaDcsSmbamaDfaDc987fcefhmxekaocefhDao8SbbgscFeGhPdndnascu9mmbaDhoxekaocvfhoaPcFbGhPcrhsdninaD8SbbgOcFbGastaPVhPaOcu9kmeaDcefhDascrfgsc8J9hmbxdkkaDcefhokaPce4cbaPceG9R7amfhmkdndnadcd9hmbabarcetfgDaH87ebaDcdfaz87ebaDclfam87ebxekabarcdtfgDaHBdbaDclfazBdbaDcwfamBdbkavc;abfalcitfgDamBdbaDazBdlavaicdtfamBdbavc;abfalcefcsGglcitfgDaHBdbaDamBdlaicefhialcefhlxekdnaDcpe0mbaxcefgOavaiaqaDcsGfRbbgscl49RcsGcdtfydbascz6gPEhDavaias9RcsGcdtfydbaOaPfgzascsGgOEhsaOThOdndnadcd9hmbabarcetfgHax87ebaHcdfaD87ebaHclfas87ebxekabarcdtfgHaxBdbaHclfaDBdbaHcwfasBdbkavaicdtfaxBdbavc;abfalcitfgHaDBdbaHaxBdlavaicefgicsGcdtfaDBdbavc;abfalcefcsGcitfgHasBdbaHaDBdlavaiaPfcsGgicdtfasBdbavc;abfalcdfcsGglcitfgDaxBdbaDasBdlalcefhlaiaOfhiazaOfhxxekaxcbaoRbbgHEgAaDc;:eSgDfhzaHcsGhCaHcl4hXdndnaHcs0mbazcefhOxekazhOavaiaX9RcsGcdtfydbhzkdndnaCmbaOcefhxxekaOhxavaiaH9RcsGcdtfydbhOkdndnaDTmbaocefhDxekaocdfhDao8SbegPcFeGhsdnaPcu9kmbaocofhAascFbGhscrhodninaD8SbbgPcFbGaotasVhsaPcu9kmeaDcefhDaocrfgoc8J9hmbkaAhDxekaDcefhDkasce4cbasceG9R7amfgmhAkdndnaXcsSmbaDhsxekaDcefhsaD8SbbgocFeGhPdnaocu9kmbaDcvfhzaPcFbGhPcrhodninas8SbbgDcFbGaotaPVhPaDcu9kmeascefhsaocrfgoc8J9hmbkazhsxekascefhskaPce4cbaPceG9R7amfgmhzkdndnaCcsSmbashoxekascefhoas8SbbgDcFeGhPdnaDcu9kmbascvfhOaPcFbGhPcrhDdninao8SbbgscFbGaDtaPVhPascu9kmeaocefhoaDcrfgDc8J9hmbkaOhoxekaocefhokaPce4cbaPceG9R7amfgmhOkdndnadcd9hmbabarcetfgDaA87ebaDcdfaz87ebaDclfaO87ebxekabarcdtfgDaABdbaDclfazBdbaDcwfaOBdbkavc;abfalcitfgDazBdbaDaABdlavaicdtfaABdbavc;abfalcefcsGcitfgDaOBdbaDazBdlavaicefgicsGcdtfazBdbavc;abfalcdfcsGcitfgDaABdbaDaOBdlavaiaHcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhialcifhlkawcefhwalcsGhlaicsGhiarcifgrae6mbkkcbc99aoaqSEhokavc;aef8Kjjjjbaok:flevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaic8Etc8F91aicd47avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaic8Etc8F91aicd47avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:wPliuo97eue978Jjjjjbca9Rhiaec98Ghldndnadcl9hmbdnalTmbcbhvabhdinadadpbbbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpkbbadczfhdavclfgval6mbkkalae9pmeaipxbbbbbbbbbbbbbbbbgqpklbaiabalcdtfgdaeciGglcdtgv;8qbbdnalTmbaiaipblbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDaqp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpklbkadaiav;8qbbskdnalTmbcbhvabhdinadczfgxaxpbbbgopxbbbbbbFFbbbbbbFFgkp9oadpbbbgDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eaDaopmbediwDqkzHOAKY8AEgoczp:Sep;6egrp;Geaoczp:Reczp:Sep;6egwp;Gep;Kep;Legopxb;:FSb;:FSb;:FSb;:FSawaopxbbbbbbbbbbbbbbbbp:2egqawpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegwawp;Meaoaop;Mearaqaramp9op9rp;Kegoaop;Mep;Kep;Kep;Jep;Negrp;Mepxbbn0bbn0bbn0bbn0gqp;Keczp:Reawarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9op9qgwaoarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogopmwDKYqk8AExm35Ps8E8Fp9qpkbbadaDakp9oawaopmbezHdiOAlvCXorQLp9qpkbbadcafhdavclfgval6mbkkalae9pmbaiaeciGgvcitgdfcbcaad9R;8kbaiabalcitfglad;8qbbdnavTmbaiaipblzgopxbbbbbbFFbbbbbbFFgkp9oaipblbgDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eaDaopmbediwDqkzHOAKY8AEgoczp:Sep;6egrp;Geaoczp:Reczp:Sep;6egwp;Gep;Kep;Legopxb;:FSb;:FSb;:FSb;:FSawaopxbbbbbbbbbbbbbbbbp:2egqawpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegwawp;Meaoaop;Mearaqaramp9op9rp;Kegoaop;Mep;Kep;Kep;Jep;Negrp;Mepxbbn0bbn0bbn0bbn0gqp;Keczp:Reawarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9op9qgwaoarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogopmwDKYqk8AExm35Ps8E8Fp9qpklzaiaDakp9oawaopmbezHdiOAlvCXorQLp9qpklbkalaiad;8qbbkk;4wllue97euv978Jjjjjbc8W9Rhidnaec98GglTmbcbhvabhoinaiaopbbbgraoczfgwpbbbgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklbaopxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaqakp;Mearp;Keczp:ReaDakp;Mearp;Keamp9op9qgkpmbezHdiOAlvCXorQLgrp5baipblbpEb:T:j83ibaocwfarp5eaipblbpEe:T:j83ibawaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblbpEd:T:j83ibaocKfakp5eaipblbpEi:T:j83ibaocafhoavclfgval6mbkkdnalae9pmbaiaeciGgvcitgofcbcaao9R;8kbaiabalcitfgwao;8qbbdnavTmbaiaipblbgraipblzgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklaaipxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaqakp;Mearp;Keczp:ReaDakp;Mearp;Keamp9op9qgkpmbezHdiOAlvCXorQLgrp5baipblapEb:T:j83ibaiarp5eaipblapEe:T:j83iwaiaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblapEd:T:j83izaiakp5eaipblapEi:T:j83iKkawaiao;8qbbkk:Pddiue978Jjjjjbc;ab9Rhidnadcd4ae2glc98GgvTmbcbheabhdinadadpbbbgocwp:Recwp:Sep;6eaocep:SepxbbjFbbjFbbjFbbjFp9opxbbjZbbjZbbjZbbjZp:Uep;Mepkbbadczfhdaeclfgeav6mbkkdnaval9pmbaialciGgecdtgdVcbc;abad9R;8kbaiabavcdtfgvad;8qbbdnaeTmbaiaipblbgocwp:Recwp:Sep;6eaocep:SepxbbjFbbjFbbjFbbjFp9opxbbjZbbjZbbjZbbjZp:Uep;Mepklbkavaiad;8qbbkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikkkebcjwklz9Tbb":"b9H79Tebbbe8Fv9Gbb9Gvuuuuueu9Giuuub9Geueu9Giuuueuikqbeeedddillviebeoweuec:q;iekr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbeY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVbdE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbiL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtblK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbol79IV9Rbrq;d8Yqdbk:yzeHu8Jjjjjbcj;eb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Radz1jjjbhwcj;abad9UhlaicefhodnadTmbalc;WFbGglcjdalcjd6EhDcbhqinaqae9pmeaDaeaq9RaqaDfae6Egkcsfglcl4cifcd4hxdndndndnalc9WGgmTmbcbhPcehsawcjdfhzaohHinaraH9Rax6midnaraHaxfgo9RcK6mbczhlcbhOinalgic9WfgAawcj;cbffhldndndndndnaHaAco4fRbbaOcoG4ciGPlbedibkal9cb83ibalcwf9cb83ibxikalaoRblaoRbbgAco4gCaCciSgCE86bbawcj;cbfaifglcGfaoclfaCfgCRbbaAcl4ciGgXaXciSgXE86bbalcVfaCaXfgCRbbaAcd4ciGgXaXciSgXE86bbalc7faCaXfgCRbbaAciGgAaAciSgAE86bbalctfaCaAfgCRbbaoRbegAco4gXaXciSgXE86bbalc91faCaXfgCRbbaAcl4ciGgXaXciSgXE86bbalc4faCaXfgCRbbaAcd4ciGgXaXciSgXE86bbalc93faCaXfgCRbbaAciGgAaAciSgAE86bbalc94faCaAfgCRbbaoRbdgAco4gXaXciSgXE86bbalc95faCaXfgCRbbaAcl4ciGgXaXciSgXE86bbalc96faCaXfgCRbbaAcd4ciGgXaXciSgXE86bbalc97faCaXfgCRbbaAciGgAaAciSgAE86bbalc98faCaAfgARbbaoRbigoco4gCaCciSgCE86bbalc99faAaCfgARbbaocl4ciGgCaCciSgCE86bbalc9:faAaCfgARbbaocd4ciGgCaCciSgCE86bbalcufaAaCfglRbbaociGgoaociSgoE86bbalaofhoxdkalaoRbwaoRbbgAcl4gCaCcsSgCE86bbawcj;cbfaifglcGfaocwfaCfgCRbbaAcsGgAaAcsSgAE86bbalcVfaCaAfgARbbaoRbegCcl4gXaXcsSgXE86bbalc7faAaXfgARbbaCcsGgCaCcsSgCE86bbalctfaAaCfgARbbaoRbdgCcl4gXaXcsSgXE86bbalc91faAaXfgARbbaCcsGgCaCcsSgCE86bbalc4faAaCfgARbbaoRbigCcl4gXaXcsSgXE86bbalc93faAaXfgARbbaCcsGgCaCcsSgCE86bbalc94faAaCfgARbbaoRblgCcl4gXaXcsSgXE86bbalc95faAaXfgARbbaCcsGgCaCcsSgCE86bbalc96faAaCfgARbbaoRbvgCcl4gXaXcsSgXE86bbalc97faAaXfgARbbaCcsGgCaCcsSgCE86bbalc98faAaCfgARbbaoRbogCcl4gXaXcsSgXE86bbalc99faAaXfgARbbaCcsGgCaCcsSgCE86bbalc9:faAaCfgARbbaoRbrgocl4gCaCcsSgCE86bbalcufaAaCfglRbbaocsGgoaocsSgoE86bbalaofhoxekalao8Pbb83bbalcwfaocwf8Pbb83bbaoczfhokdnaiam9pmbaOcdfhOaiczfhlarao9RcL0mekkaiam6miaoTmidnakTmbawaPfRbbhOawcj;cbfhlazhiakhAinaialRbbgHce4cbaHceG9R7aOfgO86bbaiadfhialcefhlaAcufgAmbkkazcefhzaPcefgPad6hsaohHaPad9hmexvkkcbhoasceGmdxikaoaxad2fhXdnakTmbcbhmcehsawcjdfhCinarao9Rax6miaoTmdaoaxfhoawamfRbbhOawcj;cbfhlaChiakhAinaialRbbgHce4cbaHceG9R7aOfgO86bbaiadfhialcefhlaAcufgAmbkaCcefhCamcefgmad6hsamad9hmbkaXhoxikcbhlcehsinarao9Rax6mdaoTmeaoaxfhoalcefglad6hsadal9hmbkaXhoxdkcbhoasceGTmekc9:hoxikabaqad2fawcjdfakad2z1jjjb8Aawawcjdfakcufad2fadz1jjjb8Aakaqfhqaombkc9:hoxekcbc99arao9Radcaadca0ESEhokavcj;ebf8Kjjjjbaok;xzeHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecjez:jjjjb8AavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhodnaeTmbcmcsaDceSEhkcbhxcbhmcbhrcbhicbhlindnaoaq9nmbc9:hoxikdndnawRbbgDc;Ve0mbavc;abfalaDcu7gPcl4fcsGcitfgsydlhzasydbhHdnaDcsGgDak9pmbavaiaPfcsGcdtfydbaxaDEhsaDThDdndnadcd9hmbabarcetfgPaH87ebaPcdfaz87ebaPclfas87ebxekabarcdtfgPaHBdbaPclfazBdbaPcwfasBdbkaxaDfhxavc;abfalcitfgPasBdbaPazBdlavaicdtfasBdbavc;abfalcefcsGglcitfgPaHBdbaPasBdlaiaDfhialcefhlxdkdndnaDcsSmbamaDfaDc987fcefhmxekaocefhDao8SbbgscFeGhPdndnascu9mmbaDhoxekaocvfhoaPcFbGhPcrhsdninaD8SbbgOcFbGastaPVhPaOcu9kmeaDcefhDascrfgsc8J9hmbxdkkaDcefhokaPce4cbaPceG9R7amfhmkdndnadcd9hmbabarcetfgDaH87ebaDcdfaz87ebaDclfam87ebxekabarcdtfgDaHBdbaDclfazBdbaDcwfamBdbkavc;abfalcitfgDamBdbaDazBdlavaicdtfamBdbavc;abfalcefcsGglcitfgDaHBdbaDamBdlaicefhialcefhlxekdnaDcpe0mbaxcefgOavaiaqaDcsGfRbbgscl49RcsGcdtfydbascz6gPEhDavaias9RcsGcdtfydbaOaPfgzascsGgOEhsaOThOdndnadcd9hmbabarcetfgHax87ebaHcdfaD87ebaHclfas87ebxekabarcdtfgHaxBdbaHclfaDBdbaHcwfasBdbkavaicdtfaxBdbavc;abfalcitfgHaDBdbaHaxBdlavaicefgicsGcdtfaDBdbavc;abfalcefcsGcitfgHasBdbaHaDBdlavaiaPfcsGgicdtfasBdbavc;abfalcdfcsGglcitfgDaxBdbaDasBdlalcefhlaiaOfhiazaOfhxxekaxcbaoRbbgHEgAaDc;:eSgDfhzaHcsGhCaHcl4hXdndnaHcs0mbazcefhOxekazhOavaiaX9RcsGcdtfydbhzkdndnaCmbaOcefhxxekaOhxavaiaH9RcsGcdtfydbhOkdndnaDTmbaocefhDxekaocdfhDao8SbegPcFeGhsdnaPcu9kmbaocofhAascFbGhscrhodninaD8SbbgPcFbGaotasVhsaPcu9kmeaDcefhDaocrfgoc8J9hmbkaAhDxekaDcefhDkasce4cbasceG9R7amfgmhAkdndnaXcsSmbaDhsxekaDcefhsaD8SbbgocFeGhPdnaocu9kmbaDcvfhzaPcFbGhPcrhodninas8SbbgDcFbGaotaPVhPaDcu9kmeascefhsaocrfgoc8J9hmbkazhsxekascefhskaPce4cbaPceG9R7amfgmhzkdndnaCcsSmbashoxekascefhoas8SbbgDcFeGhPdnaDcu9kmbascvfhOaPcFbGhPcrhDdninao8SbbgscFbGaDtaPVhPascu9kmeaocefhoaDcrfgDc8J9hmbkaOhoxekaocefhokaPce4cbaPceG9R7amfgmhOkdndnadcd9hmbabarcetfgDaA87ebaDcdfaz87ebaDclfaO87ebxekabarcdtfgDaABdbaDclfazBdbaDcwfaOBdbkavc;abfalcitfgDazBdbaDaABdlavaicdtfaABdbavc;abfalcefcsGcitfgDaOBdbaDazBdlavaicefgicsGcdtfazBdbavc;abfalcdfcsGcitfgDaABdbaDaOBdlavaiaHcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhialcifhlkawcefhwalcsGhlaicsGhiarcifgrae6mbkkcbc99aoaqSEhokavc;aef8Kjjjjbaok:flevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaic8Etc8F91aicd47avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaic8Etc8F91aicd47avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:Lvoeue99dud99eud99dndnadcl9hmbaeTmeindndnabcdfgd8Sbb:Yab8Sbbgi:Ygl:l:tabcefgv8Sbbgo:Ygr:l:tgwJbb;:9cawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai86bbdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad86bbdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad86bbabclfhbaecufgembxdkkaeTmbindndnabclfgd8Ueb:Yab8Uebgi:Ygl:l:tabcdfgv8Uebgo:Ygr:l:tgwJb;:FSawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai87ebdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad87ebdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad87ebabcwfhbaecufgembkkk;siliui99iue99dnaeTmbcbhiabhlindndnJ;Zl81Zalcof8UebgvciV:Y:vgoal8Ueb:YNgrJb;:FSNJbbbZJbbb:;arJbbbb9GEMgw:lJbbb9p9DTmbaw:OhDxekcjjjj94hDkalclf8Uebhqalcdf8UebhkabaiavcefciGfcetfaD87ebdndnaoak:YNgwJb;:FSNJbbbZJbbb:;awJbbbb9GEMgx:lJbbb9p9DTmbax:Ohkxekcjjjj94hkkabaiavcdfciGfcetfak87ebdndnaoaq:YNgoJb;:FSNJbbbZJbbb:;aoJbbbb9GEMgx:lJbbb9p9DTmbax:Ohqxekcjjjj94hqkabaiavcufciGfcetfaq87ebdndnJbbjZararN:tawawN:taoaoN:tgrJbbbbarJbbbb9GE:rJb;:FSNJbbbZMgr:lJbbb9p9DTmbar:Ohqxekcjjjj94hqkabaiavciGfcetfaq87ebalcwfhlaiclfhiaecufgembkkk9mbdnadcd4ae2gdTmbinababydbgecwtcw91:Yaece91cjjj98Gcjjj;8if::NUdbabclfhbadcufgdmbkkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabkkkebcjwklz9Kbb",A=WebAssembly.instantiate(r(a),{}).then(function(I){(t=I.instance).exports.__wasm_call_ctors()});function r(I){for(var p=new Uint8Array(I.length),B=0;B<I.length;++B){var m=I.charCodeAt(B);p[B]=m>96?m-97:m>64?m-39:m+4}var E=0;for(B=0;B<I.length;++B)p[E++]=p[B]<60?e[p[B]]:64*(p[B]-60)+p[++B];return p.buffer.slice(0,E)}function i(I,p,B,m,E,Q,k){var x=I.exports.sbrk,T=m+3&-4,F=x(T*E),S=x(Q.length),D=new Uint8Array(I.exports.memory.buffer);D.set(Q,S);var M=p(F,m,E,S,Q.length);if(M==0&&k&&k(F,T,E),B.set(D.subarray(F,F+m*E)),x(F-x(0)),M!=0)throw new Error("Malformed buffer data: "+M)}var o={NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp"},l={ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"},h=[],g=0;function f(I){var p={object:new Worker(I),pending:0,requests:{}};return p.object.onmessage=function(B){var m=B.data;p.pending-=m.count,p.requests[m.id][m.action](m.value),delete p.requests[m.id]},p}function u(I){var p=I.data;if(!p.id)return self.close();self.ready.then(function(B){try{var m=new Uint8Array(p.count*p.size);i(B,B.exports[p.mode],m,p.count,p.size,p.source,B.exports[p.filter]),self.postMessage({id:p.id,count:p.count,action:"resolve",value:m},[m.buffer])}catch(E){self.postMessage({id:p.id,count:p.count,action:"reject",value:E})}})}return{ready:A,supported:!0,useWorkers:function(I){(function(p){for(var B="self.ready = WebAssembly.instantiate(new Uint8Array(["+new Uint8Array(r(a))+"]), {}).then(function(result) { result.instance.exports.__wasm_call_ctors(); return result.instance; });self.onmessage = "+u.name+";"+i.toString()+u.toString(),m=new Blob([B],{type:"text/javascript"}),E=URL.createObjectURL(m),Q=h.length;Q<p;++Q)h[Q]=f(E);for(Q=p;Q<h.length;++Q)h[Q].object.postMessage({});h.length=p,URL.revokeObjectURL(E)})(I)},decodeVertexBuffer:function(I,p,B,m,E){i(t,t.exports.meshopt_decodeVertexBuffer,I,p,B,m,t.exports[o[E]])},decodeIndexBuffer:function(I,p,B,m){i(t,t.exports.meshopt_decodeIndexBuffer,I,p,B,m)},decodeIndexSequence:function(I,p,B,m){i(t,t.exports.meshopt_decodeIndexSequence,I,p,B,m)},decodeGltfBuffer:function(I,p,B,m,E,Q){i(t,t.exports[l[E]],I,p,B,m,t.exports[o[Q]])},decodeGltfBufferAsync:function(I,p,B,m,E){return h.length>0?function(Q,k,x,T,F){for(var S=h[0],D=1;D<h.length;++D)h[D].pending<S.pending&&(S=h[D]);return new Promise(function(M,v){var L=new Uint8Array(x),K=++g;S.pending+=Q,S.requests[K]={resolve:M,reject:v},S.object.postMessage({id:K,count:Q,size:k,source:L,mode:T,filter:F},[L.buffer])})}(I,p,B,l[m],o[E]):A.then(function(){var Q=new Uint8Array(I*p);return i(t,t.exports[l[m]],Q,I,p,B,t.exports[o[E]]),Q})}}}();(function(){var n,e=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!="object")return{supported:!1};var t=WebAssembly.instantiate(function(o){for(var l=new Uint8Array(o.length),h=0;h<o.length;++h){var g=o.charCodeAt(h);l[h]=g>96?g-97:g>64?g-39:g+4}var f=0;for(h=0;h<o.length;++h)l[f++]=l[h]<60?e[l[h]]:64*(l[h]-60)+l[++h];return l.buffer.slice(0,f)}("b9H79Tebbbe9Ek9Geueu9Geub9Gbb9GPuuuuuuuuuuu99uueu9Gvuuuuub9Gluuuub9Gquuuuuuu99uueu9Gwuuuuuu99ueu9Giuuue999Gluuuueu9GiuuueuizsdilvoirwDbqqbeqlve9Weiiviebeoweuec:G;jekr:Tewo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bbz9TW79O9V9Wt9F79P9T9W29P9M95bl8E9TW79O9V9Wt9F79P9T9W29P9M959x9Pt9OcttV9P9I91tW7bvQ9TW79O9V9Wt9F79P9T9W29P9M959q9V9P9Ut7boX9TW79O9V9Wt9F79P9T9W29P9M959t9J9H2Wbra9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94SWt9J9O9sW9T9H9Wbwl79IV9RbDDwebcekdxmq::9Usdbk;i6iKuY99Ou8Jjjjjbc;W;ab9RgP8KjjjjbaPcwfcbc;Kbz:ljjjb8AaPcualcefgscdtascFFFFi0Ecbyd1:jjjbHjjjjbbgzBdwaPceBd9OaPazBdbaPcuadcitadcFFFFe0Ecbyd1:jjjbHjjjjbbgHBdxaPcdBd9OaPaHBdlaPaeadalcbz:cjjjbaPcualcdtgOalcFFFFi0EgAcbyd1:jjjbHjjjjbbgCBdzaPciBd9OaPaAcbyd1:jjjbHjjjjbbgXBdCaPclBd9Oalcd4alfhQcehLinaLgscethLasaQ6mbkcbhKaPcuascdtgLascFFFFi0Ecbyd1:jjjbHjjjjbbgQBdKaPcvBd9OaQcFeaLz:ljjjbhYdnalTmbavcd4h8AascufhEinaiaKa8A2cdtfg3ydlgscH4as7c:F:b:DD2a3ydbgscH4as7c;D;O:B8J27a3ydwgscH4as7c:3F;N8N27hQcbhsdndninaYaQaEGgQcdtfg5ydbgLcuSmeaiaLa8A2cdtfa3cxz:ojjjbTmdascefgsaQfhQasaE9nmbxdkka5aKBdbaKhLkaCaKcdtfaLBdbaKcefgKal9hmbkcbhsaXhLinaLasBdbaLclfhLalascefgs9hmbkcbhsaChLaXhQindnasaLydbgESmbaQaXaEcdtfgEydbBdbaEasBdbkaLclfhLaQclfhQalascefgs9hmbkkcbh8EaYcbyd:m:jjjbH:bjjjbbaPclBd9OaPalcbyd1:jjjbHjjjjbbgEBdKaPcvBd9OaPaAcbyd1:jjjbHjjjjbbgsBd3aPcoBd9OaPaAcbyd1:jjjbHjjjjbbgLBdaaPcrBd9OascFeaOz:ljjjbh8FaLcFeaOz:ljjjbhadnalTmbaHcwfhhindnaza8EgQcefg8Ecdtfydbg3azaQcdtgsfydbgLSmba3aL9RhOaHaLcitfhgaaasfh8Ja8FasfhKcbh8Aindndnaga8Acitfydbg5aQ9hmbaKaQBdba8JaQBdbxekdnaza5cdtg8KfgsclfydbgLasydbgsSmbaHascitg3fydbaQSmeaLas9Rh8Lascu7aLfhYaha3fhLcbhsinaYasSmeascefhsaLydbh3aLcwfhLa3aQ9hmbkasa8L6mekaaa8KfgsaQa5asydbcuSEBdbaKa5aQaKydbcuSEBdbka8Acefg8AaO9hmbkka8Eal9hmbkaChLaXhQaah3a8Fh8AcbhsindndnasaLydbg59hmbdnasaQydbg59hmba8Aydbh5dna3ydbgYcu9hmba5cu9hmbaEasfcb86bbxikaEasfhKdnasaYSmbasa5SmbaKce86bbxikaKcl86bbxdkdnasaXa5cdtgYfydb9hmbdna3ydbgKcuSmbasaKSmba8AydbgOcuSmbasaOSmbaaaYfydbggcuSmbaga5Smba8FaYfydbgYcuSmbaYa5SmbdnaCaKcdtfydbaCaYcdtfydb9hmbaCaOcdtfydbaCagcdtfydb9hmbaEasfcd86bbxlkaEasfcl86bbxikaEasfcl86bbxdkaEasfcl86bbxekaEasfaEa5fRbb86bbkaLclfhLaQclfhQa3clfh3a8Aclfh8Aalascefgs9hmbkaxceGTmbaEhsalhLindnasRbbce9hmbascl86bbkascefhsaLcufgLmbkkcualcx2alc;v:Q;v:Qe0Ecbyd1:jjjbHjjjjbbh8JaPcwfaPyd9Ogscdtfa8JBdbaPascefgOBd9Oa8Jaialavz:djjjbdndnaDmbcbhvxekcbh5aPcwfaOcdtfcuaDal2gLcdtaLcFFFFi0Ecbyd1:jjjbHjjjjbbgvBdbaPascdfgOBd9OalTmbarcd4cdthYaDcdthKavh8AinaohsawhLa8AhQaDh3inaQasIdbaLIdbNUdbasclfhsaLclfhLaQclfhQa3cufg3mbkaoaYfhoa8AaKfh8Aa5cefg5al9hmbkkaPcwfaOcdtfcualc8S2gsalc;D;O;f8U0EgQcbyd1:jjjbHjjjjbbgLBdbaPaOcefg3Bd9OaLcbasz:ljjjbh8EdndndnaDTmbaPcwfa3cdtfaQcbyd1:jjjbHjjjjbbgoBdbaPaOcdfgLBd9Oaocbasz:ljjjb8AaPcwfaLcdtfcuaDal2gscltgLascFFFFb0Ecbyd1:jjjbHjjjjbbgwBdbaPaOcifBd9OawcbaLz:ljjjb8AadmexdkcbhocbhwadTmekcbh8AaehLindna8JaLclfydbg5cx2fgsIdba8JaLydbgYcx2fgQIdbg8M:tg8Na8JaLcwfydbgKcx2fg3IdlaQIdlgy:tg8PNa3Idba8M:tgIasIdlay:tg8RN:tg8Sa8SNa8Ra3IdwaQIdwgR:tg8UNa8PasIdwaR:tg8RN:tg8Pa8PNa8RaINa8Ua8NN:tg8Na8NNMM:rgIJbbbb9ETmba8SaI:vh8Sa8NaI:vh8Na8PaI:vh8Pka8EaCaYcdtfydbc8S2fgsa8PaI:rgIa8PNNg8RasIdbMUdbasa8NaIa8NNg8VNg8UasIdlMUdlasa8SaIa8SNg8WNg8XasIdwMUdwasa8Va8PNg8VasIdxMUdxasa8Wa8PNg8YasIdzMUdzasa8Wa8NNg8WasIdCMUdCasa8PaIa8SaRNa8Pa8MNaya8NNMM:mgyNg8MNg8PasIdKMUdKasa8Na8MNg8NasId3MUd3asa8Sa8MNg8SasIdaMUdaasa8MayNg8MasId8KMUd8KasaIasIdyMUdya8EaCa5cdtfydbc8S2fgsa8RasIdbMUdbasa8UasIdlMUdlasa8XasIdwMUdwasa8VasIdxMUdxasa8YasIdzMUdzasa8WasIdCMUdCasa8PasIdKMUdKasa8NasId3MUd3asa8SasIdaMUdaasa8MasId8KMUd8KasaIasIdyMUdya8EaCaKcdtfydbc8S2fgsa8RasIdbMUdbasa8UasIdlMUdlasa8XasIdwMUdwasa8VasIdxMUdxasa8YasIdzMUdzasa8WasIdCMUdCasa8PasIdKMUdKasa8NasId3MUd3asa8SasIdaMUdaasa8MasId8KMUd8KasaIasIdyMUdyaLcxfhLa8Acifg8Aad6mbkcbh5aehYincbhLinaEaeaLc:G1jjbfydba5fcdtfydbgQfRbbhsdndnaEaYaLfydbg3fRbbg8Ac99fcFeGcpe0mbasceSmbascd9hmekdna8AcufcFeGce0mba8Fa3cdtfydbaQ9hmekdnascufcFeGce0mbaaaQcdtfydba39hmekdna8Acv2asfc:W1jjbfRbbTmbaCaQcdtfydbaCa3cdtfydb0mekJbbacJbbjZasceSEhIa8AceShOa8JaeaLc:K1jjbfydba5fcdtfydbcx2fhsdna8JaQcx2fg8AIdwa8Ja3cx2fgKIdwgy:tg8Pa8PNa8AIdbaKIdbgR:tg8Na8NNa8AIdlaKIdlg8R:tg8Sa8SNMM:rg8MJbbbb9ETmba8Pa8M:vh8Pa8Sa8M:vh8Sa8Na8M:vh8NkJbbacaIaOEh8WdnasIdway:tgIa8PaIa8PNasIdbaR:tg8Xa8NNa8SasIdla8R:tg8VNMMg8UN:tgIaINa8Xa8Na8UN:tg8Pa8PNa8Va8Sa8UN:tg8Na8NNMM:rg8SJbbbb9ETmbaIa8S:vhIa8Na8S:vh8Na8Pa8S:vh8Pka8EaCa3cdtfydbc8S2fgsa8Pa8Wa8MNg8Sa8PNNg8UasIdbMUdbasa8Na8Sa8NNg8WNg8XasIdlMUdlasaIa8SaINg8MNg8VasIdwMUdwasa8Wa8PNg8WasIdxMUdxasa8Ma8PNg8YasIdzMUdzasa8Ma8NNg8ZasIdCMUdCasa8Pa8SaIayNa8PaRNa8Ra8NNMM:mgyNg8MNg8PasIdKMUdKasa8Na8MNg8NasId3MUd3asaIa8MNgIasIdaMUdaasa8MayNg8MasId8KMUd8Kasa8SasIdyMUdya8EaCaQcdtfydbc8S2fgsa8UasIdbMUdbasa8XasIdlMUdlasa8VasIdwMUdwasa8WasIdxMUdxasa8YasIdzMUdzasa8ZasIdCMUdCasa8PasIdKMUdKasa8NasId3MUd3asaIasIdaMUdaasa8MasId8KMUd8Kasa8SasIdyMUdykaLclfgLcx9hmbkaYcxfhYa5cifg5ad6mbkaDTmbcbhYinJbbbbhRa8JaeaYcdtfgsclfydbgKcx2fgLIdwa8JasydbgOcx2fgQIdwg8V:tg8Na8NNaLIdbaQIdbg8Y:tgIaINaLIdlaQIdlg8Z:tg8Sa8SNMMg8Wa8Jascwfydbggcx2fgsIdwa8V:tg8MNa8Na8Na8MNaIasIdba8Y:tgyNa8SasIdla8Z:tg8RNMMg8PN:tJbbbbJbbjZa8Wa8Ma8MNayayNa8Ra8RNMMg8XNa8Pa8PN:tg8U:va8UJbbbb9BEg8UNh80a8Xa8NNa8Ma8PN:ta8UNh81a8Wa8RNa8Sa8PN:ta8UNhBa8Xa8SNa8Ra8PN:ta8UNh83a8WayNaIa8PN:ta8UNhUa8XaINaya8PN:ta8UNh85aIa8RNaya8SN:tg8Pa8PNa8Sa8MNa8Ra8NN:tg8Pa8PNa8NayNa8MaIN:tg8Pa8PNMM:r:rh8PavaOaD2cdtfhLavagaD2cdtfhQavaKaD2cdtfh3a8V:mh86a8Z:mh87a8Y:mh88cbh8AaDh5Jbbbbh8RJbbbbh8UJbbbbh8WJbbbbh8XJbbbbh8VJbbbbh8YJbbbbh8ZJbbbbh89Jbbbbh8:inaPc;Wbfa8Afgscwfa8Pa81a3IdbaLIdbg8M:tg8SNa80aQIdba8M:tgyNMg8NNUdbasclfa8Pa83a8SNaBayNMgINUdbasa8Pa85a8SNaUayNMg8SNUdbascxfa8Pa86a8NNa87aINa8Ma88a8SNMMMg8MNUdba8Pa8NaINNa8XMh8Xa8Pa8Na8SNNa8VMh8Va8PaIa8SNNa8YMh8Ya8Pa8Ma8MNNaRMhRa8Pa8Na8MNNa8RMh8Ra8PaIa8MNNa8UMh8Ua8Pa8Sa8MNNa8WMh8Wa8Pa8Na8NNNa8ZMh8Za8PaIaINNa89Mh89a8Pa8Sa8SNNa8:Mh8:aLclfhLa3clfh3aQclfhQa8Aczfh8Aa5cufg5mbkaoaCaOcdtfydbgLc8S2fgsa8:asIdbMUdbasa89asIdlMUdlasa8ZasIdwMUdwasa8YasIdxMUdxasa8VasIdzMUdzasa8XasIdCMUdCasa8WasIdKMUdKasa8UasId3MUd3asa8RasIdaMUdaasaRasId8KMUd8Kasa8PasIdyMUdyaoaCaKcdtfydbgKc8S2fgsa8:asIdbMUdbasa89asIdlMUdlasa8ZasIdwMUdwasa8YasIdxMUdxasa8VasIdzMUdzasa8XasIdCMUdCasa8WasIdKMUdKasa8UasId3MUd3asa8RasIdaMUdaasaRasId8KMUd8Kasa8PasIdyMUdyaoaCagcdtfydbgOc8S2fgsa8:asIdbMUdbasa89asIdlMUdlasa8ZasIdwMUdwasa8YasIdxMUdxasa8VasIdzMUdzasa8XasIdCMUdCasa8WasIdKMUdKasa8UasId3MUd3asa8RasIdaMUdaasaRasId8KMUd8Kasa8PasIdyMUdyawaLaD2cltfh5cbhLaDh3ina5aLfgsaPc;WbfaLfgQIdbasIdbMUdbasclfg8AaQclfIdba8AIdbMUdbascwfg8AaQcwfIdba8AIdbMUdbascxfgsaQcxfIdbasIdbMUdbaLczfhLa3cufg3mbkawaKaD2cltfh5cbhLaDh3ina5aLfgsaPc;WbfaLfgQIdbasIdbMUdbasclfg8AaQclfIdba8AIdbMUdbascwfg8AaQcwfIdba8AIdbMUdbascxfgsaQcxfIdbasIdbMUdbaLczfhLa3cufg3mbkawaOaD2cltfh5cbhLaDh3ina5aLfgsaPc;WbfaLfgQIdbasIdbMUdbasclfg8AaQclfIdba8AIdbMUdbascwfg8AaQcwfIdba8AIdbMUdbascxfgsaQcxfIdbasIdbMUdbaLczfhLa3cufg3mbkaYcifgYad6mbkkdnabaeSmbabaeadcdtz:kjjjb8AkaPydbhZcbhsdnalTmbaZclfhsaZydbh3aEhLalh8AcbhQincbasydbg5a39RaLRbbcpeGEaQfhQaLcefhLasclfhsa5h3a8Acufg8AmbkaQce4hskcuadas9Rcifgrcx2arc;v:Q;v:Qe0Ecbyd1:jjjbHjjjjbbh8LaPcwfaPyd9Ogscdtfa8LBdbaPascefgLBd9OaPcwfaLcdtfcuarcdtarcFFFFi0Ecbyd1:jjjbHjjjjbbgxBdbaPascdfgLBd9OaPcwfaLcdtfaAcbyd1:jjjbHjjjjbbgHBdbaPascifgLBd9OaPcwfaLcdtfalcbyd1:jjjbHjjjjbbgnBdbaPasclfBd9OJbbbbh8Ydnadaq9nmbdnarci6mbakakNh8VaDclthca8Lcwfh9cJbbbbh8YinaPabadghalaCz:cjjjbabhOcbhzcbhKincbhsindnaCaOasfydbgQcdtgYfydbg8AaCabasc;m1jjbfydbaKfcdtfydbgLcdtfydbg5SmbaEaLfRbbgecv2aEaQfRbbg3fc;G1jjbfRbbg8Ka3cv2aefggc;G1jjbfRbbgiVcFeGTmbdnagc:W1jjbfRbbTmba5a8A0mekdna3ae9hmba3cufcFeGce0mba8FaYfydbaL9hmeka8Lazcx2fg3aLaQaicFeGg8AEBdla3aQaLa8AEBdba3a8Aa8KGcb9hBdwazcefhzkasclfgscx9hmbkdnaKcifgKah9pmbaOcxfhOazcifar9nmekkdnazmbahhdxikcbheinJbbbbJbbjZa8EaCa8Laecx2fg3ydlg8Aa3ydbg5a3ydwgLEgKcdtfydbg8Kc8S2gifgsIdyg8P:va8PJbbbb9BEasIdwa8Ja5a8AaLEgYcx2fgLIdwg8SNasIdzaLIdbg8MNasIdaMg8Pa8PMMa8SNasIdlaLIdlgyNasIdCa8SNasId3Mg8Pa8PMMayNasIdba8MNasIdxayNasIdKMg8Pa8PMMa8MNasId8KMMM:lNh8WJbbbbJbbjZa8EaCa5cdtfydbgdc8S2gQfgsIdyg8P:va8PJbbbb9BEasIdwa8Ja8Acx2fgLIdwgINasIdzaLIdbgRNasIdaMg8Pa8PMMaINasIdlaLIdlg8RNasIdCaINasId3Mg8Pa8PMMa8RNasIdbaRNasIdxa8RNasIdKMg8Pa8PMMaRNasId8KMMM:lNh8Xa3cwfhOa3clfhgdnaDTmbaoaQfgQIdwaINaQIdzaRNaQIdaMg8Pa8PMMaINaQIdla8RNaQIdCaINaQId3Mg8Pa8PMMa8RNaQIdbaRNaQIdxa8RNaQIdKMg8Pa8PMMaRNaQId8KMMMh8Nava8AaD2cdtfhLawadaD2cltfhsaQIdyh8UaDhQinaLIdbg8PJbbb;aNascxfIdbaIascwfIdbNaRasIdbNa8RasclfIdbNMMMNa8Pa8PNa8UNa8NMMh8NaLclfhLasczfhsaQcufgQmbkaoaifgQIdwa8SNaQIdza8MNaQIdaMg8Pa8PMMa8SNaQIdlayNaQIdCa8SNaQId3Mg8Pa8PMMayNaQIdba8MNaQIdxayNaQIdKMg8Pa8PMMa8MNaQId8KMMMhIavaYaD2cdtfhLawa8KaD2cltfhsaQIdyhRaDhQinaLIdbg8PJbbb;aNascxfIdba8SascwfIdbNa8MasIdbNayasclfIdbNMMMNa8Pa8PNaRNaIMMhIaLclfhLasczfhsaQcufgQmbka8WaI:lMh8Wa8Xa8N:lMh8Xkaga8AaYa8Xa8W9FgsEBdba3a5aKasEBdbaOa8Xa8WasEUdbaecefgeaz9hmbkaPc;Wbfcbcj;abz:ljjjb8Aa9chsazhLinaPc;WbfasydbcO4c;8ZGfgQaQydbcefBdbascxfhsaLcufgLmbkcbhscbhLinaPc;WbfasfgQydbh3aQaLBdba3aLfhLasclfgscj;ab9hmbkcbhsa9chLinaPc;WbfaLydbcO4c;8ZGfgQaQydbgQcefBdbaxaQcdtfasBdbaLcxfhLazascefgs9hmbkahaq9RgQci9UhJdnalTmbcbhsaHhLinaLasBdbaLclfhLalascefgs9hmbkkcbh9eancbalz:ljjjbhTaQcO9UhSaJce4h9haPydlh9icbhicbhgdnina8Laxagcdtfydbcx2fgOIdwg8Na8V9EmeaiaJ9pmeJFFuuh8Pdna9haz9pmba8Laxa9hcdtfydbcx2fIdwJbb;aZNh8Pkdna8Na8P9ETmbaiaS0mdkdnaTaCaOydlg6cdtg9kfydbg3fg0RbbaTaCaOydbgKcdtg9mfydbg9nfg9oRbbVmbdnaZa9ncdtfgsclfydbgLasydbgsSmbaLas9Rh5a9iascitfhsa8Ja3cx2fgYcwfhdaYclfhAa8Ja9ncx2fg8Kcwfh9pa8Kclfh9qcbhLcehednindnaHasydbcdtfydbgQa3SmbaHasclfydbcdtfydbg8Aa3SmbaQa8ASmba8Ja8Acx2fg8AIdba8JaQcx2fgQIdbgI:tg8Pa9qIdbaQIdlg8S:tg8MNa8KIdbaI:tgya8AIdla8S:tg8NN:ta8PaAIdba8S:tgRNaYIdbaI:tg8Ra8NN:tNa8Na9pIdbaQIdwg8S:tg8UNa8Ma8AIdwa8S:tgIN:ta8NadIdba8S:tg8SNaRaIN:tNaIayNa8Ua8PN:taIa8RNa8Sa8PN:tNMMJbbbb9FmdkascwfhsaLcefgLa56hea5aL9hmbkkaeceGTmba9hcefh9hxeka8Ea3c8S2gQfgsa8Ea9nc8S2g8AfgLIdbasIdbMUdbasaLIdlasIdlMUdlasaLIdwasIdwMUdwasaLIdxasIdxMUdxasaLIdzasIdzMUdzasaLIdCasIdCMUdCasaLIdKasIdKMUdKasaLId3asId3MUd3asaLIdaasIdaMUdaasaLId8KasId8KMUd8KasaLIdyasIdyMUdydnaDTmbaoaQfgsaoa8AfgLIdbasIdbMUdbasaLIdlasIdlMUdlasaLIdwasIdwMUdwasaLIdxasIdxMUdxasaLIdzasIdzMUdzasaLIdCasIdCMUdCasaLIdKasIdKMUdKasaLId3asId3MUd3asaLIdaasIdaMUdaasaLId8KasId8KMUd8KasaLIdyasIdyMUdyaca9n2heaca32hYawhLaDh8AinaLaYfgsaLaefgQIdbasIdbMUdbasclfg5aQclfIdba5IdbMUdbascwfg5aQcwfIdba5IdbMUdbascxfgsaQcxfIdbasIdbMUdbaLczfhLa8Acufg8AmbkkaOcwfhLdndndndnaEaKfgQRbbc9:fPdebdkaKhsinaHascdtgsfa3BdbaXasfydbgsaK9hmbxikkaXa9kfydbhsaXa9mfydbhKaHa9mfa6Bdbash6kaHaKcdtfa6Bdbka9oce86bba0ce86bbaLIdbg8Pa8Ya8Ya8P9DEh8Ya9ecefh9ececdaQRbbceSEaifhikagcefggaz9hmbkkdna9embahhdxikdnalTmbcbhLa8FhsindnasydbgQcuSmbdnaLaHaQcdtg3fydbgQ9hmba8Fa3fydbhQkasaQBdbkasclfhsalaLcefgL9hmbkcbhLaahsindnasydbgQcuSmbdnaLaHaQcdtg3fydbgQ9hmbaaa3fydbhQkasaQBdbkasclfhsalaLcefgL9hmbkkcbhdabhscbh8AindnaHasydbcdtfydbgLaHasclfydbcdtfydbgQSmbaLaHascwfydbcdtfydbg3SmbaQa3Smbabadcdtfg5aLBdba5clfaQBdba5cwfa3Bdbadcifhdkascxfhsa8Acifg8Aah6mbkadaq9nmdxbkkaPabadalaCz:cjjjbkdnamTmbama8Y:rUdbkaPyd9OgscdtaPcwffc98fhCdninasTmeaCydbcbyd:m:jjjbH:bjjjbbaCc98fhCascufhsxbkkaPc;W;abf8Kjjjjbadk;:ieouabydlhvabydbclfcbaicdtz:ljjjbhoadci9UhrdnadTmbdnalTmbaehwadhDinaoalawydbcdtfydbcdtfgqaqydbcefBdbawclfhwaDcufgDmbxdkkaehwadhDinaoawydbcdtfgqaqydbcefBdbawclfhwaDcufgDmbkkdnaiTmbcbhDaohwinawydbhqawaDBdbawclfhwaqaDfhDaicufgimbkkdnadci6mbarcearce0EhdinaecwfydbhwaeclfydbhDaeydbhidnalTmbalawcdtfydbhwalaDcdtfydbhDalaicdtfydbhikavaoaicdtfgqydbcitfaDBdbavaqydbcitfawBdlaqaqydbcefBdbavaoaDcdtfgqydbcitfawBdbavaqydbcitfaiBdlaqaqydbcefBdbavaoawcdtfgwydbcitfaiBdbavawydbcitfaDBdlawawydbcefBdbaecxfheadcufgdmbkkabydbcbBdbk:Zldouv998Jjjjjbca9Rglczfcwfcbyd11jjbBdbalcb8Pdj1jjb83izalcwfcbydN1jjbBdbalcb8Pd:m1jjb83ibdnadTmbaicd4hvdnabTmbavcdthocbhraehwinabarcx2fgiaearav2cdtfgDIdbUdbaiaDIdlUdlaiaDIdwUdwcbhiinalczfaifgDawaifIdbgqaDIdbgkakaq9EEUdbalaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkawaofhwarcefgrad9hmbxdkkavcdthrcbhwincbhiinalczfaifgDaeaifIdbgqaDIdbgkakaq9EEUdbalaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkaearfheawcefgwad9hmbkkdnabTmbadTmbJbbbbJbbjZalIdbalIdzgk:tJbbbb:xgqalIdlalIdCgx:tgmamaq9DEgqalIdwalIdKgm:tgPaPaq9DEgq:vaqJbbbb9BEhqinabaqabIdbak:tNUdbabclfgiaqaiIdbax:tNUdbabcwfgiaqaiIdbam:tNUdbabcxfhbadcufgdmbkkk8KbabaeadaialavcbcbcbcbaoarawaDz:bjjjbk8KbabaeadaialavaoarawaDaqakaxamz:bjjjbk;lOowud99wue99iul998Jjjjjbc;Wb9Rgw8KjjjjbdndnarmbcbhDxekawcwfcbc;Kbz:ljjjb8Aawcuadcx2adc;v:Q;v:Qe0Ecbyd1:jjjbHjjjjbbgqBdwawceBd9Oaqaeadaiz:djjjbawcuadcdtadcFFFFi0Egkcbyd1:jjjbHjjjjbbgxBdxawcdBd9Oadcd4adfhmceheinaegicetheaiam6mbkcbhmawcuaicdtgPaicFFFFi0Ecbyd1:jjjbHjjjjbbgsBdzawciBd9Odndnar:Zgz:rJbbbZMgH:lJbbb9p9DTmbaH:Ohexekcjjjj94hekaicufhOc:bwhAcbhCcbhXadhQinaChLaeaAgKcufaeaK9iEamgDcefaeaD9kEhYdndnadTmbaYcuf:YhHaqhiaxheadhmindndnaiIdbaHNJbbbZMg8A:lJbbb9p9DTmba8A:OhAxekcjjjj94hAkaAcCthAdndnaiclfIdbaHNJbbbZMg8A:lJbbb9p9DTmba8A:OhCxekcjjjj94hCkaCcqtaAVhAdndnaicwfIdbaHNJbbbZMg8A:lJbbb9p9DTmba8A:OhCxekcjjjj94hCkaeaAaCVBdbaicxfhiaeclfheamcufgmmbkascFeaPz:ljjjbhEcbh3cbh5indnaEaxa5cdtfydbgAcm4aA7c:v;t;h;Ev2gics4ai7aOGgmcdtfgCydbgecuSmbaeaASmbcehiinaEamaifaOGgmcdtfgCydbgecuSmeaicefhiaeaA9hmbkkaCaABdba3aecuSfh3a5cefg5ad9hmbxdkkascFeaPz:ljjjb8Acbh3kaDaYa3ar0giEhmaLa3aiEhCdna3arSmbaYaKaiEgAam9Rcd9imbdndnaXcl0mbdnaQ:ZgHaL:Zg8A:taY:Yg8EaD:Y:tg8Fa8EaK:Y:tgaa3:Zghaz:tNNNaHaz:taaNa8Aah:tNa8Aaz:ta8FNahaH:tNM:va8EMJbbbZMgH:lJbbb9p9DTmbaH:Ohexdkcjjjj94hexekamaAfcd9Theka3aQaiEhQaXcefgXcs9hmekkdndnaCmbcihicbhDxekcbhiawakcbyd1:jjjbHjjjjbbg5BdCawclBd9OdndnadTmbamcuf:YhHaqhiaxheadhmindndnaiIdbaHNJbbbZMg8A:lJbbb9p9DTmba8A:OhAxekcjjjj94hAkaAcCthAdndnaiclfIdbaHNJbbbZMg8A:lJbbb9p9DTmba8A:OhCxekcjjjj94hCkaCcqtaAVhAdndnaicwfIdbaHNJbbbZMg8A:lJbbb9p9DTmba8A:OhCxekcjjjj94hCkaeaAaCVBdbaicxfhiaeclfheamcufgmmbkascFeaPz:ljjjbhEcbhDcbh3inaxa3cdtgYfydbgAcm4aA7c:v;t;h;Ev2gics4ai7hecbhidndninaEaeaOGgmcdtfgCydbgecuSmednaxaecdtgCfydbaASmbaicefgiamfheaiaO9nmekka5aCfydbhixekaCa3BdbaDhiaDcefhDka5aYfaiBdba3cefg3ad9hmbkcuaDc32giaDc;j:KM;jb0EhexekascFeaPz:ljjjb8AcbhDcbhekawaecbyd1:jjjbHjjjjbbgeBdKawcvBd9Oaecbaiz:ljjjbhOavcd4hxdnadTmbaxcdth3a5hmalhAaqheadhEinaOamydbc32fgiaeIdbaiIdbMUdbaiaeclfIdbaiIdlMUdlaiaecwfIdbaiIdwMUdwaiaAc;81jjbalEgCIdbaiIdxMUdxaiaCIdlaiIdzMUdzaiaCIdwaiIdCMUdCaiaiIdKJbbjZMUdKamclfhmaAa3fhAaecxfheaEcufgEmbkkdnaDTmbaOcxfhiaDheinaictfgmamIdbJbbbbJbbjZaicxfIdbgH:vaHJbbbb9BEgHNUdbaic94fgmaHamIdbNUdbaic98fgmaHamIdbNUdbaiaHaiIdbNUdbaiclfgmaHamIdbNUdbaicwfgmaHamIdbNUdbaic3fhiaecufgembkkcbhAawcuaDcdtgYaDcFFFFi0Egicbyd1:jjjbHjjjjbbgeBd3awcoBd9Oawaicbyd1:jjjbHjjjjbbgEBdaaecFeaYz:ljjjbh3dnadTmbaoaoNh8Aaxcdthxalheina8Aaec;81jjbalEgmIdwaOa5ydbgCc32fgiIdC:tgHaHNamIdbaiIdx:tgHaHNamIdlaiIdz:tgHaHNMMNaqcwfIdbaiIdw:tgHaHNaqIdbaiIdb:tgHaHNaqclfIdbaiIdl:tgHaHNMMMhHdndna3aCcdtgifgmydbcuSmbaEaifIdbaH9ETmekamaABdbaEaifaHUdbka5clfh5aeaxfheaqcxfhqadaAcefgA9hmbkkaba3aYz:kjjjb8AcrhikaicdthiinaiTmeaic98fgiawcwffydbcbyd:m:jjjbH:bjjjbbxbkkawc;Wbf8KjjjjbaDk:Qdidui99ducbhi8Jjjjjbca9Rglczfcwfcbyd11jjbBdbalcb8Pdj1jjb83izalcwfcbydN1jjbBdbalcb8Pd:m1jjb83ibdndnaembJbbjFhvJbbjFhoJbbjFhrxekadcd4cdthwincbhdinalczfadfgDabadfIdbgoaDIdbgrarao9EEUdbaladfgDaoaDIdbgrarao9DEUdbadclfgdcx9hmbkabawfhbaicefgiae9hmbkalIdwalIdK:thralIdlalIdC:thoalIdbalIdz:thvkavJbbbb:xgvaoaoav9DEgoararao9DEk9DeeuabcFeaicdtz:ljjjbhlcbhbdnadTmbindnalaeydbcdtfgiydbcu9hmbaiabBdbabcefhbkaeclfheadcufgdmbkkabk9teiucbcbyd:q:jjjbgeabcifc98GfgbBd:q:jjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd:q:jjjbgeabcrfc94GfgbBd:q:jjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik9:eiuZbhedndncbyd:q:jjjbgdaecztgi9nmbcuheadai9RcFFifcz4nbcuSmekadhekcbabae9Rcifc98Gcbyd:q:jjjbfgdBd:q:jjjbdnadZbcztge9nmbadae9RcFFifcz4nb8Akk6eiucbhidnadTmbdninabRbbglaeRbbgv9hmeaecefheabcefhbadcufgdmbxdkkalav9Rhikaikk:Iedbcjwk1eFFuuFFuuFFuuFFuFFFuFFFuFbbbbbbbbebbbdbbbbbbbebbbeeebeebebbeeebebbbbbebebbbbbebbbdbbbbbbbbbbbbbbbeeeeebebbbbbebbbbbeebbbbbbbbbbbbbbbbbbbbbc1Dkxebbbdbbb:G9Kbb"),{}).then(function(o){(n=o.instance).exports.__wasm_call_ctors()});function a(o){if(!o)throw new Error("Assertion failed")}function A(o){return new Uint8Array(o.buffer,o.byteOffset,o.byteLength)}function r(o,l,h,g,f,u,I,p){var B=n.exports.sbrk,m=B(4*p),E=B(h*g),Q=B(h*u),k=new Uint8Array(n.exports.memory.buffer);k.set(A(l),E),f&&k.set(A(f),Q);var x=o(m,E,h,g,Q,u,I,p);new Uint8Array(n.exports.memory.buffer);var T=new Uint32Array(x);return A(T).set(k.subarray(m,m+4*x)),B(m-B(0)),T}var i={LockBorder:1}})();let Ie=0;class Ga{constructor(e){if(this.renderer=e.renderer,this.zUpToYUpMatrix=new R.Matrix4,this.zUpToYUpMatrix.set(1,0,0,0,0,0,-1,0,0,1,0,0,0,0,0,1),this.maxCachedItems=100,this.proxy=e.proxy,e&&(this.meshCallback=e.meshCallback,this.pointsCallback=e.pointsCallback,e.maxCachedItems!=null&&(this.maxCachedItems=e.maxCachedItems)),this.gltfLoader=new pa,e&&e.dracoLoader)this.gltfLoader.setDRACOLoader(e.dracoLoader),this.hasDracoLoader=!0;else{const t=new Ca;t.setDecoderPath("https://storage.googleapis.com/ogc-3d-tiles/draco/"),this.gltfLoader.setDRACOLoader(t),this.gltfLoader.hasDracoLoader=!0}if(e&&e.ktx2Loader)this.gltfLoader.setKTX2Loader(e.ktx2Loader),this.hasKTX2Loader=!0;else if(e&&e.renderer){const t=new ie;t.setTranscoderPath("https://storage.googleapis.com/ogc-3d-tiles/basis/").detectSupport(e.renderer),this.gltfLoader.setKTX2Loader(t),this.gltfLoader.hasKTX2Loader=!0}this.gltfLoader.setMeshoptDecoder(Ua),this.hasMeshOptDecoder=!0,this.b3dmDecoder=new ua(this.gltfLoader),this.splatsDecoder=new AA(this.gltfLoader,this.renderer),this.cache=new ga.LinkedHashMap,this.register={},this.ready=[],this.downloads=[],this.nextReady=[],this.nextDownloads=[]}update(){const e=this;Ie<8&&e._download(),e._loadBatch()}_scheduleDownload(e){this.downloads.unshift(e)}_download(){if(this.nextDownloads.length!=0||(this._getNextDownloads(),this.nextDownloads.length!=0))for(;this.nextDownloads.length>0;){const e=this.nextDownloads.shift();e&&e.shouldDoDownload()&&e.doDownload()}}_meshReceived(e,t,a,A,r,i,o){this.ready.unshift([e,t,a,A,r,i,o])}_loadBatch(){for(this.nextReady.length==0&&this._getNextReady();this.nextReady.length>0;){const e=this.nextReady.shift();if(!e)return;const t=e[0],a=e[1],A=e[2],r=t.get(A);r&&a[A]&&Object.keys(a[A]).forEach(i=>{const o=a[A][i];o&&(o(r),a[A][i]=null)}),this.nextReady.length==0&&this._getNextReady()}}_getNextDownloads(){let e=Number.POSITIVE_INFINITY,t=-1;for(let a=this.downloads.length-1;a>=0;a--)this.downloads[a].distanceFunction||this.nextDownloads.push(this.downloads.splice(a,1)[0]);if(!(this.nextDownloads.length>0)){for(let a=this.downloads.length-1;a>=0;a--){const A=this.downloads[a].distanceFunction();A<=e&&(e=A,t=a)}if(t>=0){const a=this.downloads.splice(t,1).pop();this.nextDownloads.push(a);const A=a.getSiblings();for(let r=this.downloads.length-1;r>=0;r--)A.map(i=>i.uuid).includes(this.downloads[r].uuid)&&this.nextDownloads.push(this.downloads.splice(r,1).pop())}}}_getNextReady(){let e=Number.POSITIVE_INFINITY,t=-1;for(let a=this.ready.length-1;a>=0;a--)this.ready[a][3]||this.nextReady.push(this.ready.splice(a,1)[0]);if(!(this.nextReady.length>0)){for(let a=this.ready.length-1;a>=0;a--){const A=this.ready[a][3]()*this.ready[a][5];A<=e&&(e=A,t=a)}if(t>=0){const a=this.ready.splice(t,1).pop();this.nextReady.push(a);const A=a[4]();for(let r=this.ready.length-1;r>=0;r--)A.map(i=>i.uuid).includes(this.ready[r][6])&&this.nextReady.push(this.ready.splice(r,1).pop())}}}get(e,t,a,A,r,i,o,l,h,g,f){const u=this,I=ra(a),p=new AbortController;if(e.signal.addEventListener("abort",()=>{u.register[I]&&Object.keys(u.register[I]).length!=0||p.abort("user abort")}),!(a.includes(".b3dm")||a.includes(".json")||a.includes(".gltf")||a.includes(".glb")))return void console.error("the 3DTiles cache can only be used to load B3DM, gltf and json data");if(u.register[I]||(u.register[I]={}),u.register[I][t]&&console.error(" a tile should only be loaded once"),u.register[I][t]=A,u.cache.get(I))this._meshReceived(u.cache,u.register,I,r,i,o,t);else if(Object.keys(u.register[I]).length==1){let B;a.includes(".b3dm")?B=()=>{var m;m=u.proxy?()=>fetch(u.proxy,{method:"POST",body:a,signal:p.signal}):()=>fetch(a,{signal:p.signal}),Ie++,m().then(E=>{if(!E.ok)throw console.error("could not load tile with path : "+a),new Error(`couldn't load "${a}". Request failed with status ${E.status} : ${E.statusText}`);return E.arrayBuffer()}).then(E=>this.b3dmDecoder.parseB3DM(E,Q=>{u.meshCallback(Q,g)},l,h)).then(E=>{u.cache.put(I,E),u._checkSize(),this._meshReceived(u.cache,u.register,I,r,i,o,t)}).catch(E=>{}).finally(()=>{Ie--})}:a.includes(".glb")||a.includes(".gltf")?B=f?()=>{var m;m=u.proxy?()=>fetch(u.proxy,{method:"POST",body:a,signal:p.signal}):()=>fetch(a,{signal:p.signal}),Ie++,m().then(E=>{if(!E.ok)throw console.error("could not load tile with path : "+a),new Error(`couldn't load "${a}". Request failed with status ${E.status} : ${E.statusText}`);return E.arrayBuffer()}).then(E=>this.splatsDecoder.parseSplats(E,l,h,f)).then(E=>{u.cache.put(I,E),u._checkSize(),u._meshReceived(u.cache,u.register,I,r,i,o,t)}).catch(E=>{}).finally(()=>{Ie--})}:()=>{var m;m=u.proxy?()=>fetch(u.proxy,{method:"POST",body:a,signal:p.signal}):()=>fetch(a,{signal:p.signal}),Ie++,m().then(E=>{if(!E.ok)throw console.error("could not load tile with path : "+a),new Error(`couldn't load "${a}". Request failed with status ${E.status} : ${E.statusText}`);return E.arrayBuffer()}).then(async E=>{await async function(Q){return new Promise(k=>{const x=setInterval(()=>{Q.hasDracoLoader&&!Q.dracoLoader||Q.hasKTX2Loader&&!Q.ktx2Loader||(clearInterval(x),k())},10)})}(this.gltfLoader),this.gltfLoader.parse(E,null,Q=>{Q.scene.asset=Q.asset,l&&Q.scene.applyMatrix4(this.zUpToYUpMatrix),Q.scene.traverse(k=>{k.isMesh&&(h&&k.applyMatrix4(this.zUpToYUpMatrix),u.meshCallback&&u.meshCallback(k,g)),k.isPoints&&u.pointsCallback&&u.pointsCallback(k,g)}),u.cache.put(I,Q.scene),u._checkSize(),u._meshReceived(u.cache,u.register,I,r,i,o,t)})}).catch(E=>{E!=="user abort"&&E.code}).finally(()=>{Ie--})}:a.includes(".json")&&(B=()=>{var m;m=u.proxy?()=>fetch(u.proxy,{method:"POST",body:a,signal:p.signal}):()=>fetch(a,{signal:p.signal}),Ie++,m().then(E=>{if(!E.ok)throw console.error("could not load tile with path : "+a),new Error(`couldn't load "${a}". Request failed with status ${E.status} : ${E.statusText}`);return E.json()}).then(E=>vt(E,a)).then(E=>{u.cache.put(I,E),u._checkSize(),u._meshReceived(u.cache,u.register,I)}).catch(E=>{}).finally(()=>{Ie--})}),this._scheduleDownload({shouldDoDownload:()=>!e.signal.aborted&&!!u.register[I]&&Object.keys(u.register[I]).length>0,doDownload:B,distanceFunction:r,getSiblings:i,level:o,uuid:t})}}clear(){const e=this.maxCachedItems;this.maxCachedItems=0,this._checkSize(),this.maxCachedItems=e}invalidate(e,t){const a=ra(e);this.register[a]&&(delete this.register[a][t],this._checkSize())}_checkSize(){const e=this;let t=0;for(;e.cache.size()>e.maxCachedItems&&t<e.cache.size();){t++;const a=e.cache.head(),A=e.register[a.key];A&&(Object.keys(A).length>0?(e.cache.remove(a.key),e.cache.put(a.key,a.value)):(e.cache.remove(a.key),delete e.register[a.key],a.value.isSplatsBatch?a.value.remove():a.value.traverse(r=>{if(r.material)if(r.material.length)for(let i=0;i<r.material.length;++i)r.material[i].dispose();else r.material.dispose();r.geometry&&r.geometry.dispose()})))}}}function ra(n){for(var e=n.split("/"),t=[],a=0,A=0;A<e.length;A++){var r=e[A];r!=="."&&r!==""&&r!==".."?t[a++]=r:r===".."&&a>0&&a--}if(a===0)return"/";var i="";for(A=0;A<a;A++)i+="/"+t[A];return i}var Ee,Qe,Na={exports:{}},J=Na.exports={};function Tt(){throw new Error("setTimeout has not been defined")}function St(){throw new Error("clearTimeout has not been defined")}function _a(n){if(Ee===setTimeout)return setTimeout(n,0);if((Ee===Tt||!Ee)&&setTimeout)return Ee=setTimeout,setTimeout(n,0);try{return Ee(n,0)}catch{try{return Ee.call(null,n,0)}catch{return Ee.call(this,n,0)}}}(function(){try{Ee=typeof setTimeout=="function"?setTimeout:Tt}catch{Ee=Tt}try{Qe=typeof clearTimeout=="function"?clearTimeout:St}catch{Qe=St}})();var _e,we=[],qe=!1,st=-1;function ei(){qe&&_e&&(qe=!1,_e.length?we=_e.concat(we):st=-1,we.length&&Pa())}function Pa(){if(!qe){var n=_a(ei);qe=!0;for(var e=we.length;e;){for(_e=we,we=[];++st<e;)_e&&_e[st].run();st=-1,e=we.length}_e=null,qe=!1,function(t){if(Qe===clearTimeout)return clearTimeout(t);if((Qe===St||!Qe)&&clearTimeout)return Qe=clearTimeout,clearTimeout(t);try{return Qe(t)}catch{try{return Qe.call(null,t)}catch{return Qe.call(this,t)}}}(n)}}function sa(n,e){this.fun=n,this.array=e}function pe(){}J.nextTick=function(n){var e=new Array(arguments.length-1);if(arguments.length>1)for(var t=1;t<arguments.length;t++)e[t-1]=arguments[t];we.push(new sa(n,e)),we.length!==1||qe||_a(Pa)},sa.prototype.run=function(){this.fun.apply(null,this.array)},J.title="browser",J.browser=!0,J.env={},J.argv=[],J.version="",J.versions={},J.on=pe,J.addListener=pe,J.once=pe,J.off=pe,J.removeListener=pe,J.removeAllListeners=pe,J.emit=pe,J.prependListener=pe,J.prependOnceListener=pe,J.listeners=function(n){return[]},J.binding=function(n){throw new Error("process.binding is not supported")},J.cwd=function(){return"/"},J.chdir=function(n){throw new Error("process.chdir is not supported")},J.umask=function(){return 0};const ti=ot(Na.exports);function he(n){if(typeof n!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(n))}function na(n,e){for(var t,a="",A=0,r=-1,i=0,o=0;o<=n.length;++o){if(o<n.length)t=n.charCodeAt(o);else{if(t===47)break;t=47}if(t===47){if(!(r===o-1||i===1))if(r!==o-1&&i===2){if(a.length<2||A!==2||a.charCodeAt(a.length-1)!==46||a.charCodeAt(a.length-2)!==46){if(a.length>2){var l=a.lastIndexOf("/");if(l!==a.length-1){l===-1?(a="",A=0):A=(a=a.slice(0,l)).length-1-a.lastIndexOf("/"),r=o,i=0;continue}}else if(a.length===2||a.length===1){a="",A=0,r=o,i=0;continue}}e&&(a.length>0?a+="/..":a="..",A=2)}else a.length>0?a+="/"+n.slice(r+1,o):a=n.slice(r+1,o),A=o-r-1;r=o,i=0}else t===46&&i!==-1?++i:i=-1}return a}var oa,Je={resolve:function(){for(var n,e="",t=!1,a=arguments.length-1;a>=-1&&!t;a--){var A;a>=0?A=arguments[a]:(n===void 0&&(n=ti.cwd()),A=n),he(A),A.length!==0&&(e=A+"/"+e,t=A.charCodeAt(0)===47)}return e=na(e,!t),t?e.length>0?"/"+e:"/":e.length>0?e:"."},normalize:function(n){if(he(n),n.length===0)return".";var e=n.charCodeAt(0)===47,t=n.charCodeAt(n.length-1)===47;return(n=na(n,!e)).length!==0||e||(n="."),n.length>0&&t&&(n+="/"),e?"/"+n:n},isAbsolute:function(n){return he(n),n.length>0&&n.charCodeAt(0)===47},join:function(){if(arguments.length===0)return".";for(var n,e=0;e<arguments.length;++e){var t=arguments[e];he(t),t.length>0&&(n===void 0?n=t:n+="/"+t)}return n===void 0?".":Je.normalize(n)},relative:function(n,e){if(he(n),he(e),n===e||(n=Je.resolve(n))===(e=Je.resolve(e)))return"";for(var t=1;t<n.length&&n.charCodeAt(t)===47;++t);for(var a=n.length,A=a-t,r=1;r<e.length&&e.charCodeAt(r)===47;++r);for(var i=e.length-r,o=A<i?A:i,l=-1,h=0;h<=o;++h){if(h===o){if(i>o){if(e.charCodeAt(r+h)===47)return e.slice(r+h+1);if(h===0)return e.slice(r+h)}else A>o&&(n.charCodeAt(t+h)===47?l=h:h===0&&(l=0));break}var g=n.charCodeAt(t+h);if(g!==e.charCodeAt(r+h))break;g===47&&(l=h)}var f="";for(h=t+l+1;h<=a;++h)h!==a&&n.charCodeAt(h)!==47||(f.length===0?f+="..":f+="/..");return f.length>0?f+e.slice(r+l):(r+=l,e.charCodeAt(r)===47&&++r,e.slice(r))},_makeLong:function(n){return n},dirname:function(n){if(he(n),n.length===0)return".";for(var e=n.charCodeAt(0),t=e===47,a=-1,A=!0,r=n.length-1;r>=1;--r)if((e=n.charCodeAt(r))===47){if(!A){a=r;break}}else A=!1;return a===-1?t?"/":".":t&&a===1?"//":n.slice(0,a)},basename:function(n,e){if(e!==void 0&&typeof e!="string")throw new TypeError('"ext" argument must be a string');he(n);var t,a=0,A=-1,r=!0;if(e!==void 0&&e.length>0&&e.length<=n.length){if(e.length===n.length&&e===n)return"";var i=e.length-1,o=-1;for(t=n.length-1;t>=0;--t){var l=n.charCodeAt(t);if(l===47){if(!r){a=t+1;break}}else o===-1&&(r=!1,o=t+1),i>=0&&(l===e.charCodeAt(i)?--i==-1&&(A=t):(i=-1,A=o))}return a===A?A=o:A===-1&&(A=n.length),n.slice(a,A)}for(t=n.length-1;t>=0;--t)if(n.charCodeAt(t)===47){if(!r){a=t+1;break}}else A===-1&&(r=!1,A=t+1);return A===-1?"":n.slice(a,A)},extname:function(n){he(n);for(var e=-1,t=0,a=-1,A=!0,r=0,i=n.length-1;i>=0;--i){var o=n.charCodeAt(i);if(o!==47)a===-1&&(A=!1,a=i+1),o===46?e===-1?e=i:r!==1&&(r=1):e!==-1&&(r=-1);else if(!A){t=i+1;break}}return e===-1||a===-1||r===0||r===1&&e===a-1&&e===t+1?"":n.slice(e,a)},format:function(n){if(n===null||typeof n!="object")throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof n);return function(e,t){var a=t.dir||t.root,A=t.base||(t.name||"")+(t.ext||"");return a?a===t.root?a+A:a+e+A:A}("/",n)},parse:function(n){he(n);var e={root:"",dir:"",base:"",ext:"",name:""};if(n.length===0)return e;var t,a=n.charCodeAt(0),A=a===47;A?(e.root="/",t=1):t=0;for(var r=-1,i=0,o=-1,l=!0,h=n.length-1,g=0;h>=t;--h)if((a=n.charCodeAt(h))!==47)o===-1&&(l=!1,o=h+1),a===46?r===-1?r=h:g!==1&&(g=1):r!==-1&&(g=-1);else if(!l){i=h+1;break}return r===-1||o===-1||g===0||g===1&&r===o-1&&r===i+1?o!==-1&&(e.base=e.name=i===0&&A?n.slice(1,o):n.slice(i,o)):(i===0&&A?(e.name=n.slice(1,r),e.base=n.slice(1,o)):(e.name=n.slice(i,r),e.base=n.slice(i,o)),e.ext=n.slice(r,o)),i>0?e.dir=n.slice(0,i-1):A&&(e.dir="/"),e},sep:"/",delimiter:":",win32:null,posix:null};Je.posix=Je,module.exports=Je;class ai{constructor(e){ve(this,"_toElementFn");if(e){const{toElementFn:t}=e;if(typeof t=="function")this._toElementFn=t;else if(t)throw new TypeError("toElementFn must be a function type")}}get toElementFn(){return this._toElementFn}*[Symbol.iterator](...e){yield*this._getIterator(...e)}*values(){for(const e of this)yield e}every(e,t){let a=0;for(const A of this)if(!e.call(t,A,a++,this))return!1;return!0}some(e,t){let a=0;for(const A of this)if(e.call(t,A,a++,this))return!0;return!1}forEach(e,t){let a=0;for(const A of this)e.call(t,A,a++,this)}find(e,t){let a=0;for(const A of this)if(e.call(t,A,a++,this))return A}has(e){for(const t of this)if(t===e)return!0;return!1}reduce(e,t){let a=t,A=0;for(const r of this)a=e(a,r,A++,this);return a}toVisual(){return[...this]}print(){console.log(this.toVisual())}}/**
21
16
  * data-structure-typed
22
17
  * @author Kirk Qi
23
18
  * @copyright Copyright (c) 2022 Kirk Qi <qilinaus@gmail.com>
24
19
  * @license MIT License
25
- */class Ne extends qA{constructor(t=[],a){super(a);ve(this,"_elements",[]);ve(this,"_DEFAULT_COMPARATOR",(t,a)=>{if(typeof t=="object"||typeof a=="object")throw TypeError("When comparing object types, a custom comparator must be defined in the constructor's options parameter.");return t>a?1:t<a?-1:0});ve(this,"_comparator",this._DEFAULT_COMPARATOR);if(a){const{comparator:A}=a;A&&(this._comparator=A)}if(t)for(const A of t)this.toElementFn?this.add(this.toElementFn(A)):this.add(A)}get elements(){return this._elements}get size(){return this.elements.length}get leaf(){return this.elements[this.size-1]??void 0}static heapify(t,a){return new Ne(t,a)}add(t){return this._elements.push(t),this._bubbleUp(this.elements.length-1)}poll(){if(this.elements.length===0)return;const t=this.elements[0],a=this.elements.pop();return this.elements.length&&(this.elements[0]=a,this._sinkDown(0,this.elements.length>>1)),t}peek(){return this.elements[0]}isEmpty(){return this.size===0}clear(){this._elements=[]}refill(t){return this._elements=t,this.fix()}has(t){return this.elements.includes(t)}delete(t){const a=this.elements.indexOf(t);return!(a<0)&&(a===0?this.poll():a===this.elements.length-1?this.elements.pop():(this.elements.splice(a,1,this.elements.pop()),this._bubbleUp(a),this._sinkDown(a,this.elements.length>>1)),!0)}dfs(t="PRE"){const a=[],A=r=>{const i=2*r+1,o=i+1;r<this.size&&(t==="IN"?(A(i),a.push(this.elements[r]),A(o)):t==="PRE"?(a.push(this.elements[r]),A(i),A(o)):t==="POST"&&(A(i),A(o),a.push(this.elements[r])))};return A(0),a}toArray(){return[...this.elements]}clone(){return new Ne(this,{comparator:this.comparator,toElementFn:this.toElementFn})}sort(){const t=[],a=new Ne(this,{comparator:this.comparator});for(;a.size!==0;){const A=a.poll();A!==void 0&&t.push(A)}return t}fix(){const t=[];for(let a=Math.floor(this.size/2);a>=0;a--)t.push(this._sinkDown(a,this.elements.length>>1));return t}filter(t,a){const A=new Ne([],{toElementFn:this.toElementFn,comparator:this.comparator});let r=0;for(const i of this)t.call(a,i,r,this)&&A.add(i),r++;return A}map(t,a,A,r){const i=new Ne([],{comparator:a,toElementFn:A});let o=0;for(const l of this)i.add(t.call(r,l,o,this)),o++;return i}get comparator(){return this._comparator}*_getIterator(){for(const t of this.elements)yield t}_bubbleUp(t){const a=this.elements[t];for(;t>0;){const A=t-1>>1,r=this.elements[A];if(this.comparator(r,a)<=0)break;this.elements[t]=r,t=A}return this.elements[t]=a,!0}_sinkDown(t,a){const A=this.elements[t];for(;t<a;){let r=t<<1|1;const i=r+1;let o=this.elements[r];if(i<this.elements.length&&this.comparator(o,this.elements[i])>0&&(r=i,o=this.elements[i]),this.comparator(o,A)>=0)break;this.elements[t]=o,t=r}return this.elements[t]=A,!0}}(function(n){n[n.VISIT=0]="VISIT",n[n.PROCESS=1]="PROCESS"})(ta||(ta={}));class Ye extends Ne{constructor(e=[],t){super(e,t)}clone(){return new Ye(this,{comparator:this.comparator,toElementFn:this.toElementFn})}filter(e,t){const a=new Ye([],{toElementFn:this.toElementFn,comparator:this.comparator});let A=0;for(const r of this)e.call(t,r,A,this)&&a.add(r),A++;return a}map(e,t,a,A){const r=new Ye([],{comparator:t,toElementFn:a});let i=0;for(const o of this)r.add(e.call(A,o,i,this)),i++;return r}}class We extends Ye{constructor(e=[],t){super(e,t)}clone(){return new We(this,{comparator:this.comparator,toElementFn:this.toElementFn})}filter(e,t){const a=new We([],{toElementFn:this.toElementFn,comparator:this.comparator});let A=0;for(const r of this)e.call(t,r,A,this)&&a.add(r),A++;return a}map(e,t,a,A){const r=new We([],{comparator:t,toElementFn:a});let i=0;for(const o of this)r.add(e.call(A,o,i,this)),i++;return r}}new b.Box3,new b.Vector3,new b.Vector3,new b.Vector3,new b.Vector3;const $e=new b.Vector3,JA=new b.Vector3,va=new b.Matrix3;va.set(1,0,0,0,0,1,0,-1,0);class KA extends b.Mesh{constructor(e){const a=Math.min(Math.ceil(8)*512,Math.pow(512,2));let A=1*Math.pow(512,2);A=Math.floor(A/a)*a;const r=new b.WebGL3DRenderTarget(512,512,1,{magFilter:b.NearestFilter,minFilter:b.NearestFilter,anisotropy:0,depthBuffer:!1,resolveDepthBuffer:!1});e.initRenderTarget(r);const i=new b.WebGL3DRenderTarget(512,512,1,{magFilter:b.NearestFilter,minFilter:b.NearestFilter,anisotropy:0,type:b.FloatType,depthBuffer:!1,resolveDepthBuffer:!1});i.texture.type=b.FloatType,e.initRenderTarget(i);const o=new b.WebGL3DRenderTarget(512,512,1,{magFilter:b.NearestFilter,minFilter:b.NearestFilter,anisotropy:0,type:b.FloatType,depthBuffer:!1,resolveDepthBuffer:!1});o.texture.type=b.FloatType,e.initRenderTarget(o);const l=new b.WebGL3DRenderTarget(512,512,1,{magFilter:b.NearestFilter,minFilter:b.NearestFilter,anisotropy:0,type:b.FloatType,depthBuffer:!1,resolveDepthBuffer:!1});l.texture.type=b.FloatType,e.initRenderTarget(l);const h=new b.ShaderMaterial({uniforms:{textureSize:{value:512},numSlices:{value:1},cov1Texture:{value:o.texture},cov2Texture:{value:l.texture},colorTexture:{value:r.texture},positionTexture:{value:i.texture},zUpToYUpMatrix3x3:{value:va},sizeMultiplier:{value:1},cropRadius:{value:Number.MAX_VALUE}},vertexShader:`
20
+ */class Ne extends ai{constructor(t=[],a){super(a);ve(this,"_elements",[]);ve(this,"_DEFAULT_COMPARATOR",(t,a)=>{if(typeof t=="object"||typeof a=="object")throw TypeError("When comparing object types, a custom comparator must be defined in the constructor's options parameter.");return t>a?1:t<a?-1:0});ve(this,"_comparator",this._DEFAULT_COMPARATOR);if(a){const{comparator:A}=a;A&&(this._comparator=A)}if(t)for(const A of t)this.toElementFn?this.add(this.toElementFn(A)):this.add(A)}get elements(){return this._elements}get size(){return this.elements.length}get leaf(){return this.elements[this.size-1]??void 0}static heapify(t,a){return new Ne(t,a)}add(t){return this._elements.push(t),this._bubbleUp(this.elements.length-1)}poll(){if(this.elements.length===0)return;const t=this.elements[0],a=this.elements.pop();return this.elements.length&&(this.elements[0]=a,this._sinkDown(0,this.elements.length>>1)),t}peek(){return this.elements[0]}isEmpty(){return this.size===0}clear(){this._elements=[]}refill(t){return this._elements=t,this.fix()}has(t){return this.elements.includes(t)}delete(t){const a=this.elements.indexOf(t);return!(a<0)&&(a===0?this.poll():a===this.elements.length-1?this.elements.pop():(this.elements.splice(a,1,this.elements.pop()),this._bubbleUp(a),this._sinkDown(a,this.elements.length>>1)),!0)}dfs(t="PRE"){const a=[],A=r=>{const i=2*r+1,o=i+1;r<this.size&&(t==="IN"?(A(i),a.push(this.elements[r]),A(o)):t==="PRE"?(a.push(this.elements[r]),A(i),A(o)):t==="POST"&&(A(i),A(o),a.push(this.elements[r])))};return A(0),a}toArray(){return[...this.elements]}clone(){return new Ne(this,{comparator:this.comparator,toElementFn:this.toElementFn})}sort(){const t=[],a=new Ne(this,{comparator:this.comparator});for(;a.size!==0;){const A=a.poll();A!==void 0&&t.push(A)}return t}fix(){const t=[];for(let a=Math.floor(this.size/2);a>=0;a--)t.push(this._sinkDown(a,this.elements.length>>1));return t}filter(t,a){const A=new Ne([],{toElementFn:this.toElementFn,comparator:this.comparator});let r=0;for(const i of this)t.call(a,i,r,this)&&A.add(i),r++;return A}map(t,a,A,r){const i=new Ne([],{comparator:a,toElementFn:A});let o=0;for(const l of this)i.add(t.call(r,l,o,this)),o++;return i}get comparator(){return this._comparator}*_getIterator(){for(const t of this.elements)yield t}_bubbleUp(t){const a=this.elements[t];for(;t>0;){const A=t-1>>1,r=this.elements[A];if(this.comparator(r,a)<=0)break;this.elements[t]=r,t=A}return this.elements[t]=a,!0}_sinkDown(t,a){const A=this.elements[t];for(;t<a;){let r=t<<1|1;const i=r+1;let o=this.elements[r];if(i<this.elements.length&&this.comparator(o,this.elements[i])>0&&(r=i,o=this.elements[i]),this.comparator(o,A)>=0)break;this.elements[t]=o,t=r}return this.elements[t]=A,!0}}(function(n){n[n.VISIT=0]="VISIT",n[n.PROCESS=1]="PROCESS"})(oa||(oa={}));class We extends Ne{constructor(e=[],t){super(e,t)}clone(){return new We(this,{comparator:this.comparator,toElementFn:this.toElementFn})}filter(e,t){const a=new We([],{toElementFn:this.toElementFn,comparator:this.comparator});let A=0;for(const r of this)e.call(t,r,A,this)&&a.add(r),A++;return a}map(e,t,a,A){const r=new We([],{comparator:t,toElementFn:a});let i=0;for(const o of this)r.add(e.call(A,o,i,this)),i++;return r}}class Xe extends We{constructor(e=[],t){super(e,t)}clone(){return new Xe(this,{comparator:this.comparator,toElementFn:this.toElementFn})}filter(e,t){const a=new Xe([],{toElementFn:this.toElementFn,comparator:this.comparator});let A=0;for(const r of this)e.call(t,r,A,this)&&a.add(r),A++;return a}map(e,t,a,A){const r=new Xe([],{comparator:t,toElementFn:a});let i=0;for(const o of this)r.add(e.call(A,o,i,this)),i++;return r}}new b.Box3,new b.Vector3,new b.Vector3,new b.Vector3,new b.Vector3;const at=new b.Vector3,Ai=new b.Vector3,Oa=new b.Matrix3;Oa.set(1,0,0,0,0,1,0,-1,0);class ii extends b.Mesh{constructor(e){const a=Math.min(Math.ceil(8)*512,Math.pow(512,2));let A=1*Math.pow(512,2);A=Math.floor(A/a)*a;const r=new b.WebGL3DRenderTarget(512,512,1,{magFilter:b.NearestFilter,minFilter:b.NearestFilter,anisotropy:0,depthBuffer:!1,resolveDepthBuffer:!1});e.initRenderTarget(r);const i=new b.WebGL3DRenderTarget(512,512,1,{magFilter:b.NearestFilter,minFilter:b.NearestFilter,anisotropy:0,type:b.FloatType,depthBuffer:!1,resolveDepthBuffer:!1});i.texture.type=b.FloatType,e.initRenderTarget(i);const o=new b.WebGL3DRenderTarget(512,512,1,{magFilter:b.NearestFilter,minFilter:b.NearestFilter,anisotropy:0,type:b.FloatType,depthBuffer:!1,resolveDepthBuffer:!1});o.texture.type=b.FloatType,e.initRenderTarget(o);const l=new b.WebGL3DRenderTarget(512,512,1,{magFilter:b.NearestFilter,minFilter:b.NearestFilter,anisotropy:0,type:b.FloatType,depthBuffer:!1,resolveDepthBuffer:!1});l.texture.type=b.FloatType,e.initRenderTarget(l);const h=new b.ShaderMaterial({uniforms:{textureSize:{value:512},numSlices:{value:1},cov1Texture:{value:o.texture},cov2Texture:{value:l.texture},colorTexture:{value:r.texture},positionTexture:{value:i.texture},zUpToYUpMatrix3x3:{value:Oa},sizeMultiplier:{value:1},cropRadius:{value:Number.MAX_VALUE}},vertexShader:`
26
21
  precision highp float;
27
22
  precision highp int;
28
23
 
@@ -181,7 +176,7 @@ void main() {
181
176
 
182
177
  gl_FragColor = vec4(pow(color.xyz,vec3(1.0/2.2)), color.w * pow(alpha, 1.8));
183
178
 
184
- }`,transparent:!0,side:b.FrontSide,depthTest:!0,depthWrite:!0,depthFunc:b.AlwaysDepth}),g=new b.InstancedBufferGeometry,f=new Float32Array([-.5,.5,0,.5,.5,0,-.5,-.5,0,.5,-.5,0]);g.setIndex([0,2,1,2,3,1]),g.setAttribute("position",new b.BufferAttribute(f,3));const u=new Uint32Array(A),I=new b.InstancedBufferAttribute(u,1,!1);I.needsUpdate=!0,I.setUsage(b.DynamicDrawUsage),g.setAttribute("order",I),g.instanceCount=0,super(g,h),this.orderAttribute=I,this.textureSize=512,this.numTextures=1,this.batchSize=a,this.maxSplats=A,this.colorRenderTarget=r,this.positionRenderTarget=i,this.cov1RenderTarget=o,this.cov2RenderTarget=l,this.renderer=e,this.sortID=0,this.freeAddresses=new We;for(let m=0;m<this.maxSplats;m+=a)this.freeAddresses.add(m);this.worker=new Worker(new URL(""+(typeof document>"u"?require("url").pathToFileURL(__dirname+"/assets/PointsManager.worker-5fpGpVvf.js").href:new URL("assets/PointsManager.worker-5fpGpVvf.js",document.currentScript&&document.currentScript.tagName.toUpperCase()==="SCRIPT"&&document.currentScript.src||document.baseURI).href),typeof document>"u"?require("url").pathToFileURL(__filename).href:it&&it.tagName.toUpperCase()==="SCRIPT"&&it.src||new URL("threedtiles.cjs.js",document.baseURI).href),{type:"module"}),this.sortListeners=[],this.worker.onmessage=m=>{const E=new Uint32Array(m.data.order);if(E.length>this.orderAttribute.count){const Q=new b.InstancedBufferGeometry,k=new Float32Array([-.5,.5,0,.5,.5,0,-.5,-.5,0,.5,-.5,0]),x=[0,2,1,2,3,1];Q.setIndex(x),Q.setAttribute("position",new b.BufferAttribute(k,3));const T=new Uint32Array(this.maxSplats),S=new b.InstancedBufferAttribute(T,1,!1);S.needsUpdate=!0,S.setUsage(b.DynamicDrawUsage),Q.setAttribute("order",S),Q.instanceCount=0,this.geometry.dispose(),this.geometry=Q,this.orderAttribute=S}this.orderAttribute.clearUpdateRanges(),this.orderAttribute.set(E),this.orderAttribute.addUpdateRange(0,E.length),this.orderAttribute.needsUpdate=!0,this.geometry.instanceCount=m.data.count,this.geometry.needsUpdate=!0;for(let Q=this.sortListeners.length-1;Q>=0;Q--)this.sortListeners[Q](m.data.id)&&this.sortListeners.splice(Q,1)},this.cameraPosition=new b.Vector3(0,0,0),this.rotateOnAxis(new b.Vector3(1,0,0),.5*Math.PI),this.frustumCulled=!1,this.copyMaterial2D=new b.ShaderMaterial({uniforms:{sourceTexture:{}},vertexShader:aa(),fragmentShader:`
179
+ }`,transparent:!0,side:b.FrontSide,depthTest:!0,depthWrite:!0,depthFunc:b.AlwaysDepth}),g=new b.InstancedBufferGeometry,f=new Float32Array([-.5,.5,0,.5,.5,0,-.5,-.5,0,.5,-.5,0]);g.setIndex([0,2,1,2,3,1]),g.setAttribute("position",new b.BufferAttribute(f,3));const u=new Uint32Array(A),I=new b.InstancedBufferAttribute(u,1,!1);I.needsUpdate=!0,I.setUsage(b.DynamicDrawUsage),g.setAttribute("order",I),g.instanceCount=0,super(g,h),this.orderAttribute=I,this.textureSize=512,this.numTextures=1,this.batchSize=a,this.maxSplats=A,this.colorRenderTarget=r,this.positionRenderTarget=i,this.cov1RenderTarget=o,this.cov2RenderTarget=l,this.renderer=e,this.sortID=0,this.freeAddresses=new Xe;for(let m=0;m<this.maxSplats;m+=a)this.freeAddresses.add(m);this.worker=new Worker(new URL(""+(typeof document>"u"?require("url").pathToFileURL(__dirname+"/assets/PointsManager.worker-5fpGpVvf.js").href:new URL("assets/PointsManager.worker-5fpGpVvf.js",document.currentScript&&document.currentScript.tagName.toUpperCase()==="SCRIPT"&&document.currentScript.src||document.baseURI).href),typeof document>"u"?require("url").pathToFileURL(__filename).href:ct&&ct.tagName.toUpperCase()==="SCRIPT"&&ct.src||new URL("threedtiles.cjs.js",document.baseURI).href),{type:"module"}),this.sortListeners=[],this.worker.onmessage=m=>{const E=new Uint32Array(m.data.order);if(E.length>this.orderAttribute.count){const Q=new b.InstancedBufferGeometry,k=new Float32Array([-.5,.5,0,.5,.5,0,-.5,-.5,0,.5,-.5,0]),x=[0,2,1,2,3,1];Q.setIndex(x),Q.setAttribute("position",new b.BufferAttribute(k,3));const T=new Uint32Array(this.maxSplats),F=new b.InstancedBufferAttribute(T,1,!1);F.needsUpdate=!0,F.setUsage(b.DynamicDrawUsage),Q.setAttribute("order",F),Q.instanceCount=0,this.geometry.dispose(),this.geometry=Q,this.orderAttribute=F}this.orderAttribute.clearUpdateRanges(),this.orderAttribute.set(E),this.orderAttribute.addUpdateRange(0,E.length),this.orderAttribute.needsUpdate=!0,this.geometry.instanceCount=m.data.count,this.geometry.needsUpdate=!0;for(let Q=this.sortListeners.length-1;Q>=0;Q--)this.sortListeners[Q](m.data.id)&&this.sortListeners.splice(Q,1)},this.cameraPosition=new b.Vector3(0,0,0),this.rotateOnAxis(new b.Vector3(1,0,0),.5*Math.PI),this.frustumCulled=!1,this.copyMaterial2D=new b.ShaderMaterial({uniforms:{sourceTexture:{}},vertexShader:ca(),fragmentShader:`
185
180
  precision highp float;
186
181
 
187
182
  uniform sampler2D sourceTexture;
@@ -190,7 +185,7 @@ in vec2 vUv;
190
185
 
191
186
  void main() {
192
187
  gl_FragColor = texture( sourceTexture, vUv );
193
- }`,transparent:!1,side:b.FrontSide,depthTest:!1,depthWrite:!1}),this.copyMaterial3D=new b.ShaderMaterial({uniforms:{sourceTexture:{},w:{value:0}},vertexShader:aa(),fragmentShader:`
188
+ }`,transparent:!1,side:b.FrontSide,depthTest:!1,depthWrite:!1}),this.copyMaterial3D=new b.ShaderMaterial({uniforms:{sourceTexture:{},w:{value:0}},vertexShader:ca(),fragmentShader:`
194
189
  precision highp float;
195
190
 
196
191
  uniform sampler3D sourceTexture;
@@ -200,12 +195,12 @@ in vec2 vUv;
200
195
 
201
196
  void main() {
202
197
  gl_FragColor = texture( sourceTexture, vec3(vUv, w) );
203
- }`,transparent:!1,side:b.FrontSide,depthTest:!1,depthWrite:!1}),this.copyCamera=new b.OrthographicCamera(-.5,.5,.5,-.5,.1,10),this.copyCamera.position.z=1,this.copyScene=new b.Scene;const p=new b.PlaneGeometry(1,1);this.copyQuad=new b.Mesh(p,this.copyMaterial2D),this.copyScene.add(this.copyQuad),this.copyScene.matrixAutoUpdate=!1,this.copyQuad.matrixAutoUpdate=!1;const B=this;document.addEventListener("keyup",function(m){m.key==="a"&&(B.growTextures(),console.log(B.positionRenderTarget.depth))})}dispose(){this.material.dispose(),this.copyMaterial2D.dispose(),this.copyMaterial3D.dispose(),this.cov1RenderTarget.dispose(),this.cov2RenderTarget.dispose(),this.positionRenderTarget.dispose(),this.colorRenderTarget.dispose(),this.worker.terminate(),this.worker=null,this.geometry.dispose()}copyTex2D(e,t,a,A){this.copyMaterial2D.uniforms.sourceTexture.value=e;const r=this.renderer.autoClear,i=this.renderer.getRenderTarget();this.renderer.autoClear=!1;const o=a[2]-a[0],l=a[3]-a[1];t.viewport.set(a[0],a[1],o,l),this.renderer.setRenderTarget(t,A),this.renderer.render(this.copyScene,this.copyCamera),this.renderer.setRenderTarget(i),this.renderer.autoClear=r}copyTex3D(e,t,a){this.copyMaterial3D.uniforms.sourceTexture.value=e;const A=this.renderer.autoClear,r=this.renderer.getRenderTarget();this.renderer.autoClear=!1,this.copyQuad.material=this.copyMaterial3D;for(let i=0;i<a;i++)this.renderer.setRenderTarget(t,i),this.copyMaterial3D.uniforms.w.value=(i+.5)/a,this.renderer.render(this.copyScene,this.copyCamera);this.copyQuad.material=this.copyMaterial2D,this.renderer.setRenderTarget(r),this.renderer.autoClear=A}setSplatsSizeMultiplier(e){this.material.uniforms.sizeMultiplier.value=e}setSplatsCropRadius(e){this.material.uniforms.cropRadius.value=e}sort(e){!e&&this.cameraPosition?this.worker.postMessage({method:"sort",xyz:[this.cameraPosition.x,this.cameraPosition.z,-this.cameraPosition.y],id:this.sortID++}):this.cameraPosition&&e.equals(this.cameraPosition)||(this.cameraPosition.copy(e),this.worker.postMessage({method:"sort",xyz:[this.cameraPosition.x,this.cameraPosition.z,-this.cameraPosition.y],id:this.sortID++}))}raycast(e,t){}addSplatsTile(e,t,a,A){const r=this;e.count;const i=e.data?e.data.array:e.array,o=e.data&&e.data.isInterleavedBuffer?e.data.stride:3,l=e.data&&e.data.isInterleavedBuffer?e.offset:0,h=Math.ceil(i.length/(this.batchSize*o)),g=[],f=[];let u=()=>{};const I=new Float32Array(i.length/o*3);for(let B=0;B<i.length/3;B++)I[3*B]=i[B*o+l],I[3*B+1]=i[B*o+l+1],I[3*B+2]=i[B*o+l+2];u=(B,m,E)=>{const Q=E*E;for(let k=0;k<I.length;k+=3){$e.set(I[k],-I[k+2],I[k+1]);const x=JA.copy($e).sub(B.origin).dot(B.direction);x>0&&B.distanceSqToPoint($e)<Q&&m.push({distance:x,point:$e.clone(),type:"splat"})}},h>this.freeAddresses.size&&this.growTextures();for(let B=0;B<h;B++){const m=this.freeAddresses.poll();isNaN(m)&&console.log("insuficient texture size to store splats info"),g.push(m),f.push(3*m);const E=B*this.batchSize;this.addSplatsBatch(E,m,e,t,a,A)}r.worker.postMessage({method:"addBatches",insertionIndexes:f,positions:i.buffer,offset:l,stride:o,batchSize:r.batchSize},[i.buffer]);let p=!1;return{hide:()=>{p==1&&(p=!1,r.worker.postMessage({method:"hideBatches",insertionIndexes:f,xyz:[r.cameraPosition.x,r.cameraPosition.z,-r.cameraPosition.y],id:r.sortID++}))},show:B=>{p==0&&(p=!0);const m=r.sortID;r.sortListeners.push(E=>E>=m&&(B(),!0)),r.worker.postMessage({method:"showBatches",insertionIndexes:f,xyz:[r.cameraPosition.x,r.cameraPosition.z,-r.cameraPosition.y],id:r.sortID++})},remove:()=>{u=void 0,r.worker.postMessage({method:"removeBatches",insertionIndexes:f,xyz:[r.cameraPosition.x,r.cameraPosition.z,-r.cameraPosition.y],id:r.sortID++}),g.forEach(B=>r.freeAddresses.add(B))},sort:this.sort,raycast:u,isSplatsBatch:!0}}addSplatsBatch(e,t,a,A,r,i){const o=new Float32Array(4*this.batchSize),l=new Uint8Array(4*this.batchSize),h=new Float32Array(4*this.batchSize),g=new Float32Array(4*this.batchSize);for(let Q=t;Q<t+this.batchSize;Q++){const k=Q-t,x=4*k,T=e+k;if(T>=a.count)break;o[x]=a.getX(T),o[x+1]=a.getY(T),o[x+2]=a.getZ(T),Math.floor(255*A.getX(T)),Math.floor(255*A.getY(T)),Math.floor(255*A.getZ(T)),Math.floor(255*A.getW(T)),l[x]=Math.floor(255*A.getX(T)),l[x+1]=Math.floor(255*A.getY(T)),l[x+2]=Math.floor(255*A.getZ(T)),l[x+3]=Math.floor(255*A.getW(T)),h[x]=r.getX(T),h[x+1]=r.getY(T),h[x+2]=r.getZ(T),g[x]=i.getX(T),g[x+1]=i.getY(T),g[x+2]=i.getZ(T)}const f=Math.floor(t/Math.pow(this.textureSize,2)),u=Math.ceil(this.batchSize/this.textureSize),I=[0,t/this.textureSize-f*this.textureSize,this.textureSize];I.push(I[1]+u);const p=new b.DataTexture(o,this.textureSize,u,b.RGBAFormat,b.FloatType);p.generateMipmaps=!1,p.magFilter=b.NearestFilter,p.minFilter=b.NearestFilter,p.anisotropy=0,p.needsUpdate=!0,this.renderer.initTexture(p),this.renderer.initRenderTarget(this.positionRenderTarget),this.copyTex2D(p,this.positionRenderTarget,I,f),p.dispose();const B=new b.DataTexture(l,this.textureSize,u,b.RGBAFormat,b.UnsignedByteType);B.generateMipmaps=!1,B.magFilter=b.NearestFilter,B.minFilter=b.NearestFilter,B.anisotropy=0,B.needsUpdate=!0,this.renderer.initTexture(B),this.copyTex2D(B,this.colorRenderTarget,I,f),B.dispose();const m=new b.DataTexture(h,this.textureSize,u,b.RGBAFormat,b.FloatType);m.generateMipmaps=!1,m.magFilter=b.NearestFilter,m.minFilter=b.NearestFilter,m.anisotropy=0,m.needsUpdate=!0,this.renderer.initTexture(m),this.copyTex2D(m,this.cov1RenderTarget,I,f),m.dispose();const E=new b.DataTexture(g,this.textureSize,u,b.RGBAFormat,b.FloatType);E.generateMipmaps=!1,E.magFilter=b.NearestFilter,E.minFilter=b.NearestFilter,E.anisotropy=0,E.needsUpdate=!0,this.renderer.initTexture(E),this.copyTex2D(E,this.cov2RenderTarget,I,f),E.dispose()}growTextures(){for(let i=this.maxSplats;i<this.maxSplats+this.textureSize*this.textureSize;i+=this.batchSize)this.freeAddresses.add(i);this.maxSplats+=this.textureSize*this.textureSize;const e=this.numTextures+1,t=new b.WebGL3DRenderTarget(this.textureSize,this.textureSize,e,{magFilter:b.NearestFilter,minFilter:b.NearestFilter,anisotropy:0,depthBuffer:!1,resolveDepthBuffer:!1});this.renderer.initRenderTarget(t),this.copyTex3D(this.colorRenderTarget.texture,t,this.numTextures),this.colorRenderTarget.dispose(),this.colorRenderTarget=t,this.material.uniforms.colorTexture.value=this.colorRenderTarget.texture;const a=new b.WebGL3DRenderTarget(this.textureSize,this.textureSize,e,{magFilter:b.NearestFilter,minFilter:b.NearestFilter,anisotropy:0,type:b.FloatType,depthBuffer:!1,resolveDepthBuffer:!1});a.texture.type=b.FloatType,this.renderer.initRenderTarget(a),this.copyTex3D(this.positionRenderTarget.texture,a,this.numTextures),this.positionRenderTarget.dispose(),this.positionRenderTarget=a,this.material.uniforms.positionTexture.value=this.positionRenderTarget.texture;const A=new b.WebGL3DRenderTarget(this.textureSize,this.textureSize,e,{magFilter:b.NearestFilter,minFilter:b.NearestFilter,anisotropy:0,type:b.FloatType,depthBuffer:!1,resolveDepthBuffer:!1});A.texture.type=b.FloatType,this.renderer.initRenderTarget(A),this.copyTex3D(this.cov1RenderTarget.texture,A,this.numTextures),this.cov1RenderTarget.dispose(),this.cov1RenderTarget=A,this.material.uniforms.cov1Texture.value=this.cov1RenderTarget.texture;const r=new b.WebGL3DRenderTarget(this.textureSize,this.textureSize,e,{magFilter:b.NearestFilter,minFilter:b.NearestFilter,anisotropy:0,type:b.FloatType,depthBuffer:!1,resolveDepthBuffer:!1});r.texture.type=b.FloatType,this.renderer.initRenderTarget(r),this.copyTex3D(this.cov2RenderTarget.texture,r,this.numTextures),this.cov2RenderTarget.dispose(),this.cov2RenderTarget=r,this.material.uniforms.cov2Texture.value=this.cov2RenderTarget.texture,this.numTextures=e,this.material.uniforms.numSlices.value=this.numTextures}}function aa(){return`
198
+ }`,transparent:!1,side:b.FrontSide,depthTest:!1,depthWrite:!1}),this.copyCamera=new b.OrthographicCamera(-.5,.5,.5,-.5,.1,10),this.copyCamera.position.z=1,this.copyScene=new b.Scene;const p=new b.PlaneGeometry(1,1);this.copyQuad=new b.Mesh(p,this.copyMaterial2D),this.copyScene.add(this.copyQuad),this.copyScene.matrixAutoUpdate=!1,this.copyQuad.matrixAutoUpdate=!1;const B=this;document.addEventListener("keyup",function(m){m.key==="a"&&(B.growTextures(),console.log(B.positionRenderTarget.depth))})}dispose(){this.material.dispose(),this.copyMaterial2D.dispose(),this.copyMaterial3D.dispose(),this.cov1RenderTarget.dispose(),this.cov2RenderTarget.dispose(),this.positionRenderTarget.dispose(),this.colorRenderTarget.dispose(),this.worker.terminate(),this.worker=null,this.geometry.dispose()}copyTex2D(e,t,a,A){this.copyMaterial2D.uniforms.sourceTexture.value=e;const r=this.renderer.autoClear,i=this.renderer.getRenderTarget();this.renderer.autoClear=!1;const o=a[2]-a[0],l=a[3]-a[1];t.viewport.set(a[0],a[1],o,l),this.renderer.setRenderTarget(t,A),this.renderer.render(this.copyScene,this.copyCamera),this.renderer.setRenderTarget(i),this.renderer.autoClear=r}copyTex3D(e,t,a){this.copyMaterial3D.uniforms.sourceTexture.value=e;const A=this.renderer.autoClear,r=this.renderer.getRenderTarget();this.renderer.autoClear=!1,this.copyQuad.material=this.copyMaterial3D;for(let i=0;i<a;i++)this.renderer.setRenderTarget(t,i),this.copyMaterial3D.uniforms.w.value=(i+.5)/a,this.renderer.render(this.copyScene,this.copyCamera);this.copyQuad.material=this.copyMaterial2D,this.renderer.setRenderTarget(r),this.renderer.autoClear=A}setSplatsSizeMultiplier(e){this.material.uniforms.sizeMultiplier.value=e}setSplatsCropRadius(e){this.material.uniforms.cropRadius.value=e}sort(e){!e&&this.cameraPosition?this.worker.postMessage({method:"sort",xyz:[this.cameraPosition.x,this.cameraPosition.z,-this.cameraPosition.y],id:this.sortID++}):this.cameraPosition&&e.equals(this.cameraPosition)||(this.cameraPosition.copy(e),this.worker.postMessage({method:"sort",xyz:[this.cameraPosition.x,this.cameraPosition.z,-this.cameraPosition.y],id:this.sortID++}))}raycast(e,t){}addSplatsTile(e,t,a,A){const r=this;e.count;const i=e.data?e.data.array:e.array,o=e.data&&e.data.isInterleavedBuffer?e.data.stride:3,l=e.data&&e.data.isInterleavedBuffer?e.offset:0,h=Math.ceil(i.length/(this.batchSize*o)),g=[],f=[];let u=()=>{};const I=new Float32Array(i.length/o*3);for(let B=0;B<i.length/3;B++)I[3*B]=i[B*o+l],I[3*B+1]=i[B*o+l+1],I[3*B+2]=i[B*o+l+2];u=(B,m,E)=>{const Q=E*E;for(let k=0;k<I.length;k+=3){at.set(I[k],-I[k+2],I[k+1]);const x=Ai.copy(at).sub(B.origin).dot(B.direction);x>0&&B.distanceSqToPoint(at)<Q&&m.push({distance:x,point:at.clone(),type:"splat"})}},h>this.freeAddresses.size&&this.growTextures();for(let B=0;B<h;B++){const m=this.freeAddresses.poll();isNaN(m)&&console.log("insuficient texture size to store splats info"),g.push(m),f.push(3*m);const E=B*this.batchSize;this.addSplatsBatch(E,m,e,t,a,A)}r.worker.postMessage({method:"addBatches",insertionIndexes:f,positions:i.buffer,offset:l,stride:o,batchSize:r.batchSize},[i.buffer]);let p=!1;return{hide:()=>{p==1&&(p=!1,r.worker.postMessage({method:"hideBatches",insertionIndexes:f,xyz:[r.cameraPosition.x,r.cameraPosition.z,-r.cameraPosition.y],id:r.sortID++}))},show:B=>{p==0&&(p=!0);const m=r.sortID;r.sortListeners.push(E=>E>=m&&(B(),!0)),r.worker.postMessage({method:"showBatches",insertionIndexes:f,xyz:[r.cameraPosition.x,r.cameraPosition.z,-r.cameraPosition.y],id:r.sortID++})},remove:()=>{u=void 0,r.worker.postMessage({method:"removeBatches",insertionIndexes:f,xyz:[r.cameraPosition.x,r.cameraPosition.z,-r.cameraPosition.y],id:r.sortID++}),g.forEach(B=>r.freeAddresses.add(B))},sort:this.sort,raycast:u,isSplatsBatch:!0}}addSplatsBatch(e,t,a,A,r,i){const o=new Float32Array(4*this.batchSize),l=new Uint8Array(4*this.batchSize),h=new Float32Array(4*this.batchSize),g=new Float32Array(4*this.batchSize);for(let Q=t;Q<t+this.batchSize;Q++){const k=Q-t,x=4*k,T=e+k;if(T>=a.count)break;o[x]=a.getX(T),o[x+1]=a.getY(T),o[x+2]=a.getZ(T),Math.floor(255*A.getX(T)),Math.floor(255*A.getY(T)),Math.floor(255*A.getZ(T)),Math.floor(255*A.getW(T)),l[x]=Math.floor(255*A.getX(T)),l[x+1]=Math.floor(255*A.getY(T)),l[x+2]=Math.floor(255*A.getZ(T)),l[x+3]=Math.floor(255*A.getW(T)),h[x]=r.getX(T),h[x+1]=r.getY(T),h[x+2]=r.getZ(T),g[x]=i.getX(T),g[x+1]=i.getY(T),g[x+2]=i.getZ(T)}const f=Math.floor(t/Math.pow(this.textureSize,2)),u=Math.ceil(this.batchSize/this.textureSize),I=[0,t/this.textureSize-f*this.textureSize,this.textureSize];I.push(I[1]+u);const p=new b.DataTexture(o,this.textureSize,u,b.RGBAFormat,b.FloatType);p.generateMipmaps=!1,p.magFilter=b.NearestFilter,p.minFilter=b.NearestFilter,p.anisotropy=0,p.needsUpdate=!0,this.renderer.initTexture(p),this.renderer.initRenderTarget(this.positionRenderTarget),this.copyTex2D(p,this.positionRenderTarget,I,f),p.dispose();const B=new b.DataTexture(l,this.textureSize,u,b.RGBAFormat,b.UnsignedByteType);B.generateMipmaps=!1,B.magFilter=b.NearestFilter,B.minFilter=b.NearestFilter,B.anisotropy=0,B.needsUpdate=!0,this.renderer.initTexture(B),this.copyTex2D(B,this.colorRenderTarget,I,f),B.dispose();const m=new b.DataTexture(h,this.textureSize,u,b.RGBAFormat,b.FloatType);m.generateMipmaps=!1,m.magFilter=b.NearestFilter,m.minFilter=b.NearestFilter,m.anisotropy=0,m.needsUpdate=!0,this.renderer.initTexture(m),this.copyTex2D(m,this.cov1RenderTarget,I,f),m.dispose();const E=new b.DataTexture(g,this.textureSize,u,b.RGBAFormat,b.FloatType);E.generateMipmaps=!1,E.magFilter=b.NearestFilter,E.minFilter=b.NearestFilter,E.anisotropy=0,E.needsUpdate=!0,this.renderer.initTexture(E),this.copyTex2D(E,this.cov2RenderTarget,I,f),E.dispose()}growTextures(){for(let i=this.maxSplats;i<this.maxSplats+this.textureSize*this.textureSize;i+=this.batchSize)this.freeAddresses.add(i);this.maxSplats+=this.textureSize*this.textureSize;const e=this.numTextures+1,t=new b.WebGL3DRenderTarget(this.textureSize,this.textureSize,e,{magFilter:b.NearestFilter,minFilter:b.NearestFilter,anisotropy:0,depthBuffer:!1,resolveDepthBuffer:!1});this.renderer.initRenderTarget(t),this.copyTex3D(this.colorRenderTarget.texture,t,this.numTextures),this.colorRenderTarget.dispose(),this.colorRenderTarget=t,this.material.uniforms.colorTexture.value=this.colorRenderTarget.texture;const a=new b.WebGL3DRenderTarget(this.textureSize,this.textureSize,e,{magFilter:b.NearestFilter,minFilter:b.NearestFilter,anisotropy:0,type:b.FloatType,depthBuffer:!1,resolveDepthBuffer:!1});a.texture.type=b.FloatType,this.renderer.initRenderTarget(a),this.copyTex3D(this.positionRenderTarget.texture,a,this.numTextures),this.positionRenderTarget.dispose(),this.positionRenderTarget=a,this.material.uniforms.positionTexture.value=this.positionRenderTarget.texture;const A=new b.WebGL3DRenderTarget(this.textureSize,this.textureSize,e,{magFilter:b.NearestFilter,minFilter:b.NearestFilter,anisotropy:0,type:b.FloatType,depthBuffer:!1,resolveDepthBuffer:!1});A.texture.type=b.FloatType,this.renderer.initRenderTarget(A),this.copyTex3D(this.cov1RenderTarget.texture,A,this.numTextures),this.cov1RenderTarget.dispose(),this.cov1RenderTarget=A,this.material.uniforms.cov1Texture.value=this.cov1RenderTarget.texture;const r=new b.WebGL3DRenderTarget(this.textureSize,this.textureSize,e,{magFilter:b.NearestFilter,minFilter:b.NearestFilter,anisotropy:0,type:b.FloatType,depthBuffer:!1,resolveDepthBuffer:!1});r.texture.type=b.FloatType,this.renderer.initRenderTarget(r),this.copyTex3D(this.cov2RenderTarget.texture,r,this.numTextures),this.cov2RenderTarget.dispose(),this.cov2RenderTarget=r,this.material.uniforms.cov2Texture.value=this.cov2RenderTarget.texture,this.numTextures=e,this.material.uniforms.numSlices.value=this.numTextures}}function ca(){return`
204
199
 
205
200
  out vec2 vUv;
206
201
 
207
202
  void main() {
208
203
  vUv = uv;
209
204
  gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
210
- }`}var le;const Be=new R.Sphere(new R.Vector3(0,0,0),1),Ue=new ye([0,0,0,1,0,0,0,1,0,0,0,1]);new R.Box3;const Me=new R.Vector3(0,0,0),Oe=new R.Vector3(0,0,0),zA=new R.Vector3(0,1,0),et=new R.Ray,tt=new R.Matrix4;new R.Matrix4,new R.Frustum;const Ct=new R.Vector3,at=[],Aa=new R.Quaternion,be={};function La(){var n=[];for(let e in be)be.hasOwnProperty(e)&&be[e]>0&&n.push(e);return n}class Tt extends R.Object3D{constructor(e){super();const t=this;if(t.splatsMesh=e.splatsMesh,this.contentURL=[],e.domWidth&&e.domHeight?this.rendererSize=new R.Vector2(e.domWidth,e.domHeight):this.rendererSize=new R.Vector2(1e3,1e3),this.loadingStrategy=e.loadingStrategy?e.loadingStrategy.toUpperCase():"INCREMENTAL",this.distanceBias=Math.max(1e-4,e.distanceBias?e.distanceBias:1),this.proxy=e.proxy,this.drawBoundingVolume=!!e.drawBoundingVolume&&e.drawBoundingVolume,this.displayErrors=e.displayErrors,this.displayCopyright=e.displayCopyright,e.queryParams&&(this.queryParams={...e.queryParams}),this.uuid=da(),e.tileLoader)this.tileLoader=e.tileLoader;else{const r={};r.meshCallback=e.meshCallback?e.meshCallback:(i,o)=>{i.material.wireframe=!1,i.material.side=R.DoubleSide},r.pointsCallback=e.pointsCallback?e.pointsCallback:(i,o)=>{i.material.size=Math.pow(o,.33),i.material.sizeAttenuation=!0},r.proxy=this.proxy,r.renderer=e.renderer,r.dracoLoader=e.dracoLoader,r.ktx2Loader=e.ktx2Loader,this.tileLoader=new Ma(r),this.update=i=>{this.update(i),this.tileLoader.update()}}if(this.displayCopyright=!!e.displayCopyright,this.geometricErrorMultiplier=e.geometricErrorMultiplier?e.geometricErrorMultiplier:1,this.splatsCropRadius=Number.MAX_VALUE,this.splatsSizeMultiplier=1,this.renderer=e.renderer,this.meshCallback=e.meshCallback,this.loadOutsideView=e.loadOutsideView,this.cameraOnLoad=e.cameraOnLoad,this.parentTile=e.parentTile,this.occlusionCullingService=e.occlusionCullingService,this.static=e.static,this.occlusionCullingService&&(this.color=new R.Color,this.color.setHex(16777215*Math.random()),this.colorID=R.MathUtils.clamp(255*t.color.r,0,255)<<16^R.MathUtils.clamp(255*t.color.g,0,255)<<8^R.MathUtils.clamp(255*t.color.b,0,255)),this.static&&(this.matrixAutoUpdate=!1,this.matrixWorldAutoUpdate=!1),this.childrenTiles=[],this.meshContent=[],this.tileContent,this.refine,this.rootPath,this.geometricError,this.boundingVolume,this.json,this.materialVisibility=!1,this.level=e.level?e.level:0,this.hasMeshContent=0,this.hasUnloadedJSONContent=0,this.centerModel=e.centerModel,this.abortController=new AbortController,this.onLoadCallback=e.onLoadCallback,e.json)t._setup(e);else if(e.url){var a=e.url;if(t.queryParams){var A="";for(let r in t.queryParams)t.queryParams.hasOwnProperty(r)&&(A+="&"+r+"="+t.queryParams[r]);a.includes("?")?a+=A:a+="?"+A.substring(1)}(t.proxy?()=>fetch(t.proxy,{method:"POST",body:a,signal:t.abortController.signal}):()=>fetch(a,{signal:t.abortController.signal}))().then(r=>{if(!r.ok)throw new Error(`couldn't load "${e.url}". Request failed with status ${r.status} : ${r.statusText}`);r.json().then(i=>Mt(i,a)).then(i=>{t._setup({rootPath:(void 0)(e.url),json:i})})}).catch(r=>{t.displayErrors&&ia(r)})}}setSplatsSizeMultiplier(e){this.splatsSizeMultiplier=e,this.splatsMesh&&this.splatsMesh.setSplatsSizeMultiplier(this.splatsSizeMultiplier)}setSplatsCropRadius(e){this.splatsCropRadius=e,this.splatsMesh&&this.splatsMesh.setSplatsCropRadius(this.splatsCropRadius)}updateMatrices(){this.updateMatrix(),this.static&&this.traverse(e=>{e.isObject3D&&(e.matrixWorldAutoUpdate=!0)}),this.updateMatrixWorld(!0),this.static&&this.traverse(e=>{e.isObject3D&&(e.matrixWorldAutoUpdate=!1)})}setCanvasSize(e,t){this.rendererSize.set(e,t)}async _setup(e){const t=this;if(e.json.extensionsRequired&&e.json.extensionsRequired.includes("JDULTRA_gaussian_splats")&&(t.splatsMesh=new KA(t.tileLoader.renderer),this.splatsMesh.setSplatsCropRadius(this.splatsCropRadius),this.splatsMesh.setSplatsSizeMultiplier(this.splatsSizeMultiplier),t.add(t.splatsMesh)),e.json.root?(t.json=e.json.root,t.json.refine||(t.json.refine=e.json.refine),t.json.geometricError||(t.json.geometricError=e.json.geometricError),t.json.transform||(t.json.transform=e.json.transform),t.json.boundingVolume||(t.json.boundingVolume=e.json.boundingVolume)):t.json=e.json,t.json.children||(t.json.getChildren?t.json.children=await t.json.getChildren():t.json.children=[]),t.rootPath=e.json.rootPath?e.json.rootPath:e.rootPath,t.json.refine?t.refine=t.json.refine:t.refine=e.parentRefine,t.json.geometricError?t.geometricError=t.json.geometricError:t.geometricError=e.parentGeometricError,t.json.transform){let A=new R.Matrix4;A.elements=t.json.transform,t.applyMatrix4(A)}if(t.json.boundingVolume)if(t.json.boundingVolume.box)t.boundingVolume=new ye(t.json.boundingVolume.box);else if(t.json.boundingVolume.region){const A=t.json.boundingVolume.region;t._transformWGS84ToCartesian(A[0],A[1],A[4],Me),t._transformWGS84ToCartesian(A[2],A[3],A[5],Oe),Me.lerp(Oe,.5),t.boundingVolume=new R.Sphere(new R.Vector3(Me.x,Me.y,Me.z),Me.distanceTo(Oe))}else if(t.json.boundingVolume.sphere){const A=t.json.boundingVolume.sphere;t.boundingVolume=new R.Sphere(new R.Vector3(A[0],A[1],A[2]),A[3])}else t.boundingVolume=e.parentBoundingVolume;else t.boundingVolume=e.parentBoundingVolume;function a(A){A.uri&&A.uri.includes("json")||A.url&&A.url.includes("json")?t.hasUnloadedJSONContent++:t.hasMeshContent++}if(t.json.content?(a(t.json.content),t.hasMeshContent==0&&(t.level=Math.max(0,t.parentTile?t.parentTile.level+.01:0)),t.loadingStrategy==="IMMEDIATE"?t._load(!0,!1):t._load()):t.json.contents&&(t.json.contents.forEach(A=>a(A)),t.hasMeshContent==0&&(t.level=Math.max(0,t.parentTile?t.parentTile.level+.01:0)),t.loadingStrategy==="IMMEDIATE"?t._load(!0,!1):t._load()),t.centerModel&&(Oe.copy(t.boundingVolume.center),this.json.boundingVolume.region&&(this._transformWGS84ToCartesian(.5*(this.json.boundingVolume.region[0]+this.json.boundingVolume.region[2]),.5*(this.json.boundingVolume.region[1]+this.json.boundingVolume.region[3]),.5*(this.json.boundingVolume.region[4]+this.json.boundingVolume.region[5]),Me),Aa.setFromUnitVectors(Me.normalize(),zA.normalize()),t.applyQuaternion(Aa)),Oe.applyMatrix4(t.matrix),t.position.sub(Oe),t.updateMatrices()),e.onLoadCallback&&t.onLoadCallback(t),t.isSetup=!0,t.level>0&&t.drawBoundingVolume&&(t.bbox&&console.log("double setup"),this.boundingVolume.aabb)){let A=this.boundingVolume.aabb.clone();A.applyMatrix4(this.matrixWorld),t.bbox=new R.Box3Helper(A,new R.Color(Math.random(),Math.random(),Math.random())),t.add(t.bbox),t.bbox.material.visible=!1}}_assembleURL(e,t){e.endsWith("/")||(e+="/");const a=new URL(e);let A=a.pathname.split("/").filter(i=>i!==""),r=t.split("/").filter(i=>i!=="");for(let i=1;i<=A.length&&!(i>=r.length);i++)if(A.slice(A.length-i,A.length).join("/")===r.slice(0,i).join("/")){for(let o=0;o<i;o++)A.pop();break}for(;r.length>0&&r[0]==="..";)A.pop(),r.shift();return`${a.protocol}//${a.host}/${[...A,...r].join("/")}`}_extractQueryParams(e,t){const a=new URL(e);for(let[A,r]of a.searchParams)t[A]=r;return a.search="",a.toString()}async _load(e=!0,t=!0){var a=this;if(!a.deleted){if(a.json.content)await A(a.json.content,null,e,t);else if(a.json.contents){let r=a.json.contents.map((i,o)=>A(i,o,e,t));Promise.all(r)}}async function A(r,i,o,l){let h;r.uri?h=r.uri:r.url&&(h=r.url);const g=/^(?:http|https|ftp|tcp|udp):\/\/\S+/;if(g.test(a.rootPath)?g.test(h)||(h=a._assembleURL(a.rootPath,h)):(void 0)(a.rootPath),h=a._extractQueryParams(h,a.queryParams),a.queryParams){var f="";for(let u in a.queryParams)a.queryParams.hasOwnProperty(u)&&(f+="&"+u+"="+a.queryParams[u]);h.includes("?")?h+=f:h+="?"+f.substring(1)}if(h)if(l&&(h.includes(".b3dm")||h.includes(".glb")||h.includes(".gltf"))){a.contentURL.push(h);try{a.tileLoader.get(a.abortController,a.uuid,h,u=>{a.deleted||(u.asset&&u.asset.copyright&&(u.asset.copyright.split(";").forEach(I=>{be[I]?be[I]++:be[I]=1}),a.displayCopyright&&Et()),a.meshContent.push(u),a.splatsMesh||(u.traverse(I=>{if((I.isMesh||I.isPoints)&&I.layers.disable(0),I.isMesh&&a.occlusionCullingService){const p=I.geometry.attributes.position,B=[];for(let m=0;m<p.count;m++)B.push(a.color.r,a.color.g,a.color.b);I.geometry.setAttribute("color",new R.Float32BufferAttribute(B,3))}}),a.add(u),a.updateMatrices()))},a.cameraOnLoad?()=>{let u=1;return(a.metric&&a.metric<0||a.deleted)&&(u=2),a.parentTile?a.parentTile._calculateDistanceToCamera(a.cameraOnLoad)*u*a.level:a._calculateDistanceToCamera(a.cameraOnLoad)*u*a.level}:()=>0,()=>a._getSiblings(),a.level,!a.json.boundingVolume.region,!!a.json.boundingVolume.region,a.geometricError,a.splatsMesh)}catch(u){a.displayErrors&&ia(u)}}else o&&h.includes(".json")&&(a.jsonRequested=h,a.tileLoader.get(a.abortController,a.uuid,h,async u=>{a.deleted||(u.rootPath=(void 0)(h),a.json.children.push(u),i==null?delete a.json.content:a.json.contents.splice(i,1),a.hasUnloadedJSONContent--)}))}}dispose(){const e=this;e.meshContent.forEach(t=>{t&&t.asset&&t.asset.copyright&&(t.asset.copyright.split(";").forEach(a=>{be[a]&&be[a]--}),e.displayCopyright&&Et())}),e.meshContent=[],e.bbox&&e.bbox.dispose(),e.childrenTiles.forEach(t=>t.dispose()),e.deleted=!0,e.splatsMesh&&(e.meshContent.forEach(t=>t.hide()),e.parentTile||e.splatsMesh.dispose()),e.contentURL&&(e.contentURL.forEach(t=>{e.tileLoader.invalidate(t,e.uuid)}),e.contentURL=[]),e.abortController&&e.abortController.abort("tile not needed"),this.parent=null,this.dispatchEvent({type:"removed"})}_disposeMeshContent(){const e=this;if(!e.deleted){e.deleted=!0,e.abortController&&(e.abortController.abort("tile not needed"),e.abortController=new AbortController);for(let t=e.meshContent.length-1;t>=0;t--){const a=e.meshContent[t];a&&a.asset&&a.asset.copyright&&(a.asset.copyright.split(";").forEach(A=>{be[A]&&be[A]--}),e.displayCopyright&&Et()),e.remove(a)}e.splatsMesh&&e.meshContent.forEach(t=>t.hide()),e.meshContent=[],e.contentURL.forEach(t=>{e.tileLoader.invalidate(t,e.uuid)}),e.contentURL=[]}}_disposeChildren(){var e=this;e.childrenTiles.forEach(t=>{t.dispose(),e.remove(t)}),e.childrenTiles=[]}raycast(e,t){if(this.splatsMesh){et.copy(e.ray),tt.copy(this.matrixWorld).invert(),et.applyMatrix4(tt);let a=!1;if(this.boundingVolume instanceof ye)a=this.boundingVolume.intersectsRay(et);else{if(!(this.boundingVolume instanceof R.Sphere))return!1;a=ray.intersectsSphere(this.boundingVolume)}return a&&this.materialVisibility&&this.splatsReady&&(at.length=0,this.meshContent.forEach(A=>{A.isSplatsBatch&&(A.raycast(et,at,e.params.Points.threshold),at.forEach(r=>{r.point.applyMatrix4(this.matrixWorld)}),t.push(...at))})),a}return super.raycast(e,t)}update(e){const t=new R.Frustum;t.setFromProjectionMatrix(new R.Matrix4().multiplyMatrices(e.projectionMatrix,e.matrixWorldInverse));let a=[0],A=[0],r=[0],i=[0];return this.refine=="REPLACE"?this.loadingStrategy==="IMMEDIATE"?(this._updateImmediate(e,t),this._statsImmediate(r,a,i,A)):(this._update(e,t),this._stats(r,a,i,A)):(this._update(e,t),this._stats(r,a,i,A)),a>0&&(i[0]/=a[0]),this.splatsMesh&&(Ct.copy(e.position),tt.copy(this.matrixWorld).invert(),Ct.applyMatrix4(tt),this.splatsMesh.sort(Ct)),{numTilesLoaded:a[0],numTilesRendered:A[0],maxLOD:r[0],percentageLoaded:i[0]}}_updateImmediate(e,t){this._computeMetricRecursive(e,t),this._updateNodeVisibilityImmediate(),this._expandTreeImmediate(e),this.shouldBeVisible=this.metric>0||!!this.loadOutsideView,this._shouldBeVisibleUpdateImmediate(),this._trimTreeImmediate(),this._loadMeshImmediate()}_statsImmediate(e,t,a,A){e[0]=Math.max(e[0],this.level),(this.shouldBeVisible||this.materialVisibility)&&(t[0]++,this.materialVisibility&&a[0]++),this.materialVisibility&&A[0]++,this.childrenTiles.forEach(r=>{r._statsImmediate(e,t,a,A)})}_stats(e,t,a,A){e[0]=Math.max(e[0],this.level),this.hasMeshContent&&(t[0]++,this.meshContent.length==this.hasMeshContent&&a[0]++,this.materialVisibility&&A[0]++),this.childrenTiles.forEach(r=>{r._stats(e,t,a,A)})}_trimTreeImmediate(){if(this.metric!=null)if(this.hasMeshContent&&this.shouldBeVisible&&this.materialVisibility){if(self.splatsMesh&&!self.splatsReady)return;this._disposeChildren()}else this.childrenTiles.forEach(e=>{e._trimTreeImmediate()})}_updateNodeVisibilityImmediate(e=!1){const t=this;if(t.hasMeshContent)if(t.shouldBeVisible)t.meshContent.length==t.hasMeshContent?t.materialVisibility?t.childrenTiles.forEach(a=>{a._updateNodeVisibilityImmediate(!0)}):(t._changeContentVisibility(!0),t.childrenTiles.forEach(a=>{a._updateNodeVisibilityImmediate(e)})):t.childrenTiles.forEach(a=>{a._updateNodeVisibilityImmediate(e)});else{if(!t.loadOutsideView&&t.metric<0)return t._changeContentVisibility(!1),t.meshContent.length>0&&t._disposeMeshContent(),void t.childrenTiles.forEach(a=>{a._updateNodeVisibilityImmediate(!0)});if(!t.materialVisibility||t.splatsMesh&&!t.splatsReady)t.childrenTiles.forEach(a=>{a._updateNodeVisibilityImmediate(e)});else if(e)t._changeContentVisibility(!1),t.meshContent.length>0&&t._disposeMeshContent(),t.childrenTiles.forEach(a=>{a._updateNodeVisibilityImmediate(e)});else{let a=!0;t.childrenTiles.every(A=>!!A._isReadyImmediate()||(a=!1,!1)),a&&t.childrenTiles.length>0?(t._changeContentVisibility(!1),t.meshContent.length>0&&t._disposeMeshContent(),t.childrenTiles.forEach(A=>{A._updateNodeVisibilityImmediate(e)})):t.childrenTiles.forEach(A=>{A._updateNodeVisibilityImmediate(!t.splatsMesh||t.splatsReady)})}}else t.childrenTiles.forEach(a=>{a._updateNodeVisibilityImmediate(e)})}_shouldBeVisibleUpdateImmediate(){const e=this;e.hasMeshContent?e.metric==null?e.shouldBeVisible=!1:e.metric<0?(e.shouldBeVisible=!!e.loadOutsideView,e.childrenTiles.forEach(t=>{t._setShouldNotBeVisibleRecursive()})):e.metric<e.geometricErrorMultiplier*e.geometricError?e.hasUnloadedJSONContent||(e.json&&e.json.children&&e.json.children.length>0?(e.shouldBeVisible=!1,e.childrenTiles.forEach(t=>{t.shouldBeVisible=!0,t._shouldBeVisibleUpdateImmediate()})):e.shouldBeVisible=!0):e.childrenTiles.forEach(t=>{t._setShouldNotBeVisibleRecursive()}):(e.childrenTiles.forEach(t=>{t.shouldBeVisible=!0,t._shouldBeVisibleUpdateImmediate()}),e.shouldBeVisible=!1)}_setShouldNotBeVisibleRecursive(){this.shouldBeVisible=!1,this.childrenTiles.forEach(e=>{e._setShouldNotBeVisibleRecursive()})}_loadMeshImmediate(){const e=this;e.hasMeshContent&&e.shouldBeVisible?e.meshContent.length<e.hasMeshContent&&e.contentURL.length==0&&(e.deleted=!1,e._load(!1,!0)):e.childrenTiles.forEach(t=>{t._loadMeshImmediate()})}_computeMetricRecursive(e,t){const a=this;a.metric=-1,a.isSetup&&(a.boundingVolume&&a.geometricError&&(a.metric=a._calculateUpdateMetric(e,t)),a.childrenTiles.forEach(A=>A._computeMetricRecursive(e,t)))}_expandTreeImmediate(e){const t=this;t.hasUnloadedJSONContent||(t.hasMeshContent?t.occlusionCullingService&&t.hasMeshContent&&!t.occlusionCullingService.hasID(t.colorID)||t.metric>=0&&t.metric<t.geometricErrorMultiplier*t.geometricError&&t.json&&t.json.children&&t.childrenTiles.length<t.json.children.length&&t._loadJsonChildren(e):t.json&&t.json.children&&t.childrenTiles.length<t.json.children.length&&t._loadJsonChildren(e)),t.childrenTiles.forEach(a=>a._expandTreeImmediate(e))}_update(e,t){const a=this;if(!a.isSetup)return;const A=a.materialVisibility;a.boundingVolume&&a.geometricError&&(a.metric=a._calculateUpdateMetric(e,t)),a.childrenTiles.forEach(r=>r._update(e,t)),function(r){if(a.hasMeshContent&&!(a.meshContent.length<a.hasMeshContent)){if(r<0)return a.inFrustum=!1,void a._changeContentVisibility(!!a.loadOutsideView);if(a.inFrustum=!0,a.childrenTiles.length==0)return void a._changeContentVisibility(!0);if(r>=a.geometricErrorMultiplier*a.geometricError)a._changeContentVisibility(!0);else if(r<a.geometricErrorMultiplier*a.geometricError&&a.refine=="REPLACE"){let i=!0;a.childrenTiles.every(o=>!!o._isReady()||(i=!1,!1)),i?a._changeContentVisibility(!1):a._changeContentVisibility(!0)}}}(a.metric),function(r){r<0&&a.hasMeshContent||a.occlusionCullingService&&a.hasMeshContent&&!a.occlusionCullingService.hasID(a.colorID)||(!a.hasMeshContent||r<=a.geometricErrorMultiplier*a.geometricError&&a.meshContent.length>0)&&a.json&&a.json.children&&a.childrenTiles.length!=a.json.children.length&&a._loadJsonChildren(e)}(a.metric),function(r,i){if(a.hasMeshContent){if(!a.inFrustum)return void a._disposeChildren();if(a.occlusionCullingService&&!i&&a.hasMeshContent&&a.meshContent.length>0&&a.materialVisibility&&a._areAllChildrenLoadedAndHidden())return a.splatsMesh&&this.materialVisibility&&!a.splatsReady?void 0:void a._disposeChildren();if(r>=a.geometricErrorMultiplier*a.geometricError){if(a.splatsMesh&&a.materialVisibility&&!a.splatsReady)return;a._disposeChildren()}}}(a.metric,A)}_loadJsonChildren(e){const t=this;for(let a=t.json.children.length-1;a>=0;a--)t.json.children[a].root||t.json.children[a].children||t.json.children[a].getChildren||t.json.children[a].content||t.json.children[a].contents||t.json.children.splice(a,1);t.json.children.forEach(a=>{let A=new Tt({parentTile:t,queryParams:t.queryParams,parentGeometricError:t.geometricError,parentBoundingVolume:t.boundingVolume,parentRefine:t.refine,json:a,rootPath:t.rootPath,geometricErrorMultiplier:t.geometricErrorMultiplier,loadOutsideView:t.loadOutsideView,level:Math.floor(t.level)+1,tileLoader:t.tileLoader,cameraOnLoad:e,occlusionCullingService:t.occlusionCullingService,renderer:t.renderer,static:t.static,centerModel:!1,displayErrors:t.displayErrors,displayCopyright:t.displayCopyright,distanceBias:t.distanceBias,loadingStrategy:t.loadingStrategy,drawBoundingVolume:t.drawBoundingVolume,splatsMesh:t.splatsMesh});t.childrenTiles.push(A),t.add(A)}),t.updateMatrices(!0)}_areAllChildrenLoadedAndHidden(){let e=!0;const t=this;return this.childrenTiles.every(a=>{if(a.hasMeshContent){if(a.childrenTiles.length>0)return e=!1,!1;if(!a.metric<0)return!0;if(a.materialVisibility&&(!t.splatsMesh||t.splatsReady)||t.occlusionCullingService.hasID(a.colorID))return e=!1,!1}else if(!a._areAllChildrenLoadedAndHidden())return e=!1,!1;return!0}),e}_isReady(){if(this.metric==null)return!1;if(this.metric<0)return!0;if(this.hasUnloadedJSONContent)return!1;if(!this.hasMeshContent&&this.json.children.length==0&&!this.hasUnloadedJSONContent)return!0;if(!this.hasMeshContent||this.meshContent.length==0||!this.materialVisibility||self.splatsMesh&&!self.splatsReady){if(this.children.length>0){var e=!0;return this.childrenTiles.every(t=>!!t._isReady()||(e=!1,!1)),e}return!1}return!this.hasMeshContent||(this.meshContent.length<this.hasMeshContent?(console.log("jkhkjh"),!1):!(!this.materialVisibility||this.splatsMesh&&!this.splatsReady))}_isReadyImmediate(){return!!(this.materialVisibility||!this.loadOutsideView&&this.metric<0)||!!this.splatsMesh&&!!this.splatsReady}_changeContentVisibility(e){const t=this;if(t.bbox&&(t.bbox.material.visible=e),t.splatsMesh)e!=t.materialVisibility&&(t.meshContent.forEach(a=>{e&&a.isSplatsBatch?(t.splatsReady=!0,a.show(()=>{t.materialVisibility&&(t.splatsReady=!0)})):a.hide()}),t.materialVisibility=e);else{if(t.hasMeshContent&&t.meshContent.length>0&&(e?t.meshContent.forEach(a=>{a.traverse(A=>{(A.isMesh||A.isPoints)&&A.layers.enable(0)})}):t.meshContent.forEach(a=>{a.traverse(A=>{(A.isMesh||A.isPoints)&&A.layers.disable(0)})})),t.materialVisibility==e)return;t.materialVisibility=e}}_calculateUpdateMetric(e,t){let a=0;if(this.boundingVolume instanceof ye){if(Ue.copy(this.boundingVolume),Ue.applyMatrix4(this.matrixWorld),!Ue.inFrustum(t))return-1;a=Math.max(0,Ue.distanceToPoint(e.position)-e.near)}else{if(!(this.boundingVolume instanceof R.Sphere))return console.error("unsupported shape"),-1;if(Be.copy(this.boundingVolume),Be.applyMatrix4(this.matrixWorld),!t.intersectsSphere(Be))return-1;a=Math.max(0,e.position.distanceTo(Be.center)-Be.radius-e.near)}if(a=Math.pow(a,this.distanceBias),a==0)return 0;const A=this.matrixWorld.getMaxScaleOnAxis();this.renderer&&this.renderer.getDrawingBufferSize(this.rendererSize);let r=this.rendererSize.y,i=e.fov;e.aspect<1&&(i*=e.aspect,r=this.rendererSize.x);let o=2*Math.tan(.5*i*.017453292519943295)*a;return 16*window.devicePixelRatio*o/(r*A)}_getSiblings(){const e=this,t=[];if(!e.parentTile)return t;let a=e.parentTile;for(;!a.hasMeshContent&&a.parentTile;)a=a.parentTile;return a.childrenTiles.forEach(A=>{if(A&&A!=e){for(;!A.hasMeshContent&&A.childrenTiles[0];)A=A.childrenTiles[0];t.push(A)}}),t}_calculateDistanceToCamera(e){return this.boundingVolume instanceof ye?(Ue.copy(this.boundingVolume),Ue.applyMatrix4(this.matrixWorld),Math.max(0,Ue.distanceToPoint(e.position))):this.boundingVolume instanceof R.Sphere?(Be.copy(this.boundingVolume),Be.applyMatrix4(this.matrixWorld),Math.max(0,e.position.distanceTo(Be.center)-Be.radius)):(console.error("unsupported shape"),-1)}setGeometricErrorMultiplier(e){this.geometricErrorMultiplier=e,this.splatsReady=!0,this.childrenTiles.forEach(t=>t.setGeometricErrorMultiplier(e))}setDistanceBias(e){this.distanceBias=e,this.childrenTiles.forEach(t=>t.setDistanceBias(e))}_transformWGS84ToCartesian(e,t,a,A){const r=6378137/Math.sqrt(1-.006694384442042*Math.pow(Math.sin(t),2)),i=Math.cos(t),o=Math.cos(e),l=Math.sin(t),h=r+a,g=h*i*o,f=h*i*Math.sin(e),u=(.993305615557957*r+a)*l;A.set(g,f,u)}}function ia(n){var e=document.createElement("div");e.textContent=n,e.style.position="fixed",e.style.top="10px",e.style.left="50%",e.style.transform="translateX(-50%)",e.style.padding="10px",e.style.backgroundColor="#ff8800",e.style.color="#ffffff",e.style.zIndex="9999",document.body.appendChild(e),setTimeout(function(){e.remove()},8e3)}function Et(){le||((le=document.createElement("div")).style.position="fixed",le.style.bottom="20px",le.style.left="20px",le.style.color="white",le.style.textShadow="2px 2px 0 #000, -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000",le.style.padding="10px",le.style.backgroundColor="rgba(0, 0, 0, 0.1)",document.body.appendChild(le));const n=La();let e="";n.forEach(t=>{e+=t+", "}),e=e.slice(0,-2),le.textContent=e}const Ae=new R.Sphere(new R.Vector3(0,0,0),1),Te=new R.Vector3(0,0,0),Qt=new R.Vector3(0,0,0),VA=new R.Vector3(0,1,0),yt=new R.Vector2,ra=new R.Quaternion,sa=new R.Matrix4;class Ft extends R.Object3D{constructor(e){super();const t=this;if(e.queryParams&&(this.queryParams={...e.queryParams}),this.uuid=da(),e.tileLoader?this.tileLoader=e.tileLoader:console.error("an instanced tileset must be provided an InstancedTilesetLoader"),this.master=e.master,this.loadOutsideView=e.loadOutsideView,this.cameraOnLoad=e.cameraOnLoad,this.parentTile=e.parentTile,this.distanceBias=Math.max(1e-4,e.distanceBias?e.distanceBias:1),this.childrenTiles=[],this.jsonChildren=[],this.meshContent=new Set,this.static=e.static,this.static&&(this.matrixAutoUpdate=!1,this.matrixWorldAutoUpdate=!1),this.tileContent,this.refinement,this.rootPath,this.geometricError,this.boundingVolume,this.json,this.materialVisibility=!1,this.inFrustum=!0,this.level=e.level?e.level:0,this.hasMeshContent=0,this.hasUnloadedJSONContent=0,this.centerModel=e.centerModel,this.deleted=!1,this.abortController=new AbortController,e.json)this.rootPath=e.json.rootPath?e.json.rootPath:e.rootPath,e.json.children&&(this.jsonChildren=e.json.children),t.setup(e);else if(e.url){this.loadJson=(r,i)=>{const o=(void 0)(i);t.setup({rootPath:o,json:r,onLoadCallback:e.onLoadCallback})};var a=e.url;if(t.queryParams){var A="";for(let r in t.queryParams)t.queryParams.hasOwnProperty(r)&&(A+="&"+r+"="+t.queryParams[r]);a.includes("?")?a+=A:a+="?"+A.substring(1)}t.tileLoader.get(t.abortController,a,t.uuid,t)}}async setup(e){const t=this;e.json.root?(t.json=e.json.root,!t.json.children&&t.json.getChildren&&(t.json.children=await t.json.getChildren()),t.jsonChildren=t.json.children,t.json.refinement||(t.json.refinement=e.json.refinement),t.json.geometricError||(t.json.geometricError=e.json.geometricError),t.json.transform||(t.json.transform=e.json.transform),t.json.boundingVolume||(t.json.boundingVolume=e.json.boundingVolume)):(t.json=e.json,!t.json.children&&t.json.getChildren&&(t.json.children=await t.json.getChildren(),t.jsonChildren=t.json.children)),t.rootPath=e.json.rootPath?e.json.rootPath:e.rootPath,t.json.refinement?t.refinement=t.json.refinement:t.refinement=e.parentRefinement,t.json.geometricError?t.geometricError=t.json.geometricError:t.geometricError=e.parentGeometricError;let a=new R.Matrix4;if(t.json.transform&&!t.centerModel&&(a.elements=t.json.transform),t.applyMatrix4(a),t.parentTile&&t.parentTile.matrix&&(t.matrix.premultiply(t.parentTile.matrix),t.matrix.decompose(t.position,t.quaternion,t.scale)),t.matrixWorldNeedsUpdate=!0,t.updateWorldMatrix(!0,!0),t.json.boundingVolume)if(t.json.boundingVolume.box)t.boundingVolume=new ye(t.json.boundingVolume.box);else if(t.json.boundingVolume.region){const r=t.json.boundingVolume.region;t.transformWGS84ToCartesian(r[0],r[1],r[4],Te),t.transformWGS84ToCartesian(r[2],r[3],r[5],Qt),Te.lerp(Qt,.5),t.boundingVolume=new R.Sphere(new R.Vector3(Te.x,Te.y,Te.z),Te.distanceTo(Qt))}else if(t.json.boundingVolume.sphere){const r=t.json.boundingVolume.sphere;t.boundingVolume=new R.Sphere(new R.Vector3(r[0],r[1],r[2]),r[3])}else t.boundingVolume=e.parentBoundingVolume;else t.boundingVolume=e.parentBoundingVolume;function A(r){r.uri&&r.uri.includes("json")||r.url&&r.url.includes("json")?t.hasUnloadedJSONContent++:t.hasMeshContent++}if(t.json.content?(A(t.json.content),t.load()):t.json.contents&&(t.json.contents.forEach(r=>A(r)),t.load()),t.centerModel){const r=new R.Sphere;t.boundingVolume instanceof ye?r.copy(t.boundingVolume.sphere):t.boundingVolume instanceof R.Sphere&&r.copy(t.boundingVolume),this.json.boundingVolume.region&&(t.transformWGS84ToCartesian(.5*(t.json.boundingVolume.region[0]+t.json.boundingVolume.region[2]),.5*(t.json.boundingVolume.region[1]+t.json.boundingVolume.region[3]),.5*(t.json.boundingVolume.region[4]+t.json.boundingVolume.region[5]),Te),ra.setFromUnitVectors(Te.normalize(),VA.normalize()),t.master.applyQuaternion(ra),t.master.updateWorldMatrix(!1,!1)),sa.makeTranslation(-r.center.x*t.scale.x,-r.center.y*t.scale.y,-r.center.z*t.scale.z),t.master.matrix.multiply(sa),t.master.matrix.decompose(t.master.position,t.master.quaternion,t.master.scale)}t.isSetup=!0,e.onLoadCallback&&e.onLoadCallback(t)}isAbsolutePathOrURL(e){const t=/^(?:http|https|ftp|tcp|udp):\/\/\S+/.test(e),a=e.startsWith("/")&&!e.startsWith("//");return t||a}assembleURL(e,t){e.endsWith("/")||(e+="/");const a=new URL(e);let A=a.pathname.split("/").filter(i=>i!==""),r=t.split("/").filter(i=>i!=="");for(let i=1;i<=A.length&&!(i>=r.length);i++)if(A.slice(A.length-i,A.length).join("/")===r.slice(0,i).join("/")){for(let o=0;o<i;o++)A.pop();break}for(;r.length>0&&r[0]==="..";)A.pop(),r.shift();return`${a.protocol}//${a.host}/${[...A,...r].join("/")}`}extractQueryParams(e,t){const a=new URL(e);for(let[A,r]of a.searchParams)t[A]=r;return a.search="",a.toString()}load(){var e=this;function t(a){let A;a.uri?A=a.uri:a.url&&(A=a.url);const r=/^(?:http|https|ftp|tcp|udp):\/\/\S+/;if(r.test(e.rootPath)?r.test(A)||(A=e.assembleURL(e.rootPath,A)):(void 0)(e.rootPath),A=e.extractQueryParams(A,e.queryParams),e.queryParams){var i="";for(let o in e.queryParams)e.queryParams.hasOwnProperty(o)&&(i+="&"+o+"="+e.queryParams[o]);A.includes("?")?A+=i:A+="?"+i.substring(1)}A&&(A.includes(".b3dm")||A.includes(".glb")||A.includes(".gltf")?(e.contentURL=A,e.tileLoader.get(e.abortController,A,e.uuid,e,e.cameraOnLoad?()=>e.calculateDistanceToCamera(e.cameraOnLoad):()=>0,()=>e.getSiblings(),e.level,!e.json.boundingVolume.region,!!e.json.boundingVolume.region,e.geometricError)):A.includes(".json")&&e.tileLoader.get(e.abortController,A,e.uuid,e))}e.deleted||(e.json.content?t(e.json.content):e.json.contents&&e.json.contents.forEach(a=>t(a)))}loadMesh(e){this.deleted||this.meshContent.add(e)}loadJson(e,t){this.deleted||(this.json.children&&(this.jsonChildren=this.json.children),e.rootPath=(void 0)(t),this.jsonChildren.push(e),this.hasUnloadedJSONContent--)}dispose(){const e=this;e.childrenTiles.forEach(t=>t.dispose()),e.deleted=!0,e.abortController&&e.abortController.abort(),this.parent=null,this.parentTile=null,this.dispatchEvent({type:"removed"})}disposeChildren(){this.childrenTiles.forEach(e=>e.dispose()),this.childrenTiles=[]}_update(e,t){const a=this;function A(r){if(a.hasMeshContent&&!(a.meshContent.size<a.hasMeshContent)){if(r<0)return a.inFrustum=!1,void a.changeContentVisibility(!!a.loadOutsideView);if(a.inFrustum=!0,a.childrenTiles.length!=0){if(r>=a.master.geometricErrorMultiplier*a.geometricError)a.changeContentVisibility(!0);else if(r<a.master.geometricErrorMultiplier*a.geometricError){let i=!0;a.childrenTiles.every(o=>!!o.isReady()||(i=!1,!1)),i&&a.changeContentVisibility(!1)}}else a.changeContentVisibility(!0)}}a.isSetup&&(a.materialVisibility,a.boundingVolume&&a.geometricError&&(a.metric=a.calculateUpdateMetric(e,t)),a.childrenTiles.forEach(r=>r._update(e,t)),A(a.metric),function(r){r<0&&a.hasMeshContent||(!a.hasMeshContent&&a.rootPath||r<a.master.geometricErrorMultiplier*a.geometricError&&a.meshContent.size>0)&&a.json&&a.jsonChildren&&a.childrenTiles.length!=a.jsonChildren.length&&a.jsonChildren.forEach(i=>{if(!(i.root||i.children||i.getChildren||i.content||i.contents))return;let o=new Ft({parentTile:a,queryParams:a.queryParams,parentGeometricError:a.geometricError,parentBoundingVolume:a.boundingVolume,parentRefinement:a.refinement,json:i,rootPath:a.rootPath,loadOutsideView:a.loadOutsideView,level:a.level+1,tileLoader:a.tileLoader,cameraOnLoad:e,master:a.master,centerModel:!1});a.childrenTiles.push(o)})}(a.metric),function(r){if(a.hasMeshContent){if(!a.inFrustum)return a.disposeChildren(),void A(r);r>=a.master.geometricErrorMultiplier*a.geometricError&&(a.disposeChildren(),A(r))}}(a.metric))}areAllChildrenLoadedAndHidden(){let e=!0;return this.childrenTiles.every(t=>{if(t.hasMeshContent){if(t.childrenTiles.length>0)return e=!1,!1;if(!t.inFrustum)return!0;if(!t.materialVisibility||t.meshesToDisplay!=t.meshesDisplayed)return e=!1,!1}else if(!t.areAllChildrenLoadedAndHidden())return e=!1,!1;return!0}),e}isReady(){if(!this.inFrustum)return!0;if(this.hasUnloadedJSONContent)return!1;if(!this.hasMeshContent||this.meshContent.size==0||!this.materialVisibility){if(this.childrenTiles.length>0){var e=!0;return this.childrenTiles.every(t=>!!t.isReady()||(e=!1,!1)),e}return!1}return!this.hasMeshContent||!(this.meshContent.size<this.hasMeshContent)&&!!this.materialVisibility}changeContentVisibility(e){this.materialVisibility=e}calculateUpdateMetric(e,t){if(this.boundingVolume instanceof ye){if(Ae.copy(this.boundingVolume.sphere),Ae.applyMatrix4(this.matrixWorld),!t.intersectsSphere(Ae))return-1}else{if(!(this.boundingVolume instanceof R.Sphere))return console.error("unsupported shape"),-1;if(Ae.copy(this.boundingVolume),Ae.applyMatrix4(this.matrixWorld),!t.intersectsSphere(Ae))return-1}let a=Math.max(0,e.position.distanceTo(Ae.center)-Ae.radius);if(a=Math.pow(a,this.distanceBias),a==0)return 0;const A=this.matrixWorld.getMaxScaleOnAxis();this.master._renderSize(yt);let r=yt.y,i=e.fov;e.aspect<1&&(i*=e.aspect,r=yt.x);let o=2*Math.tan(.5*i*.017453292519943295)*a;return 16*window.devicePixelRatio*o/(r*A)}getSiblings(){const e=this,t=[];if(!e.parentTile)return t;let a=e.parentTile;for(;!a.hasMeshContent&&a.parentTile;)a=a.parentTile;return a.childrenTiles.forEach(A=>{if(A&&A!=e){for(;!A.hasMeshContent&&A.childrenTiles[0];)A=A.childrenTiles[0];t.push(A)}}),t}calculateDistanceToCamera(e){return this.boundingVolume instanceof ye?(Ae.copy(this.boundingVolume.sphere),Ae.applyMatrix4(this.matrixWorld)):this.boundingVolume instanceof R.Sphere?(Ae.copy(this.boundingVolume),Ae.applyMatrix4(this.matrixWorld)):console.error("unsupported shape"),Math.max(0,e.position.distanceTo(Ae.center)-Ae.radius)}getWorldMatrix(){return this.matrixWorld}transformWGS84ToCartesian(e,t,a,A){const r=6378137/Math.sqrt(1-.006694384442042*Math.pow(Math.sin(t),2)),i=Math.cos(t),o=Math.cos(e),l=Math.sin(t),h=r+a,g=h*i*o,f=h*i*Math.sin(e),u=(.993305615557957*r+a)*l;A.set(g,f,u)}}class YA extends R.Object3D{constructor(e){super(),e.master=this,e.domWidth&&e.domHeight?this.rendererSize=new R.Vector2(e.domWidth,e.domHeight):this.rendererSize=new R.Vector2(1e3,1e3),this.renderer=e.renderer,this.distanceBias=Math.max(1e-4,e.distanceBias?e.distanceBias:1),this.geometricErrorMultiplier=e.geometricErrorMultiplier?e.geometricErrorMultiplier:1,this.tileset=new Ft(e),e.static&&(this.matrixAutoUpdate=!1),this.tileLoader=e.tileLoader}_renderSize(e){this.renderer?this.renderer.getDrawingBufferSize(e):e.copy(this.rendererSize)}setCanvasSize(e,t){this.rendererSize.set(e,t)}update(e,t){if(t)this.tileset._update(e,t);else{const a=new R.Frustum;a.setFromProjectionMatrix(new R.Matrix4().multiplyMatrices(e.projectionMatrix,e.matrixWorldInverse)),this.tileset._update(e,a)}}setGeometricErrorMultiplier(e){this.geometricErrorMultiplier=e||1}}class WA{constructor(e){const t=this;t.scene=e,t.instancedTiles=[],t.instancedMesh,t.reuseableMatrix=new R.Matrix4}addInstance(e){const t=this;e.added=!0,e.listOMesh=t.instancedTiles,t.instancedTiles.push(e),t.instancedMesh&&e.loadMesh(t.instancedMesh)}addToScene(){const e=this;e.instancedMesh.setMatrixAt(0,new R.Matrix4),e.instancedMesh.instanceMatrix.needsUpdate=!0,e.instancedMesh.count=1,e.scene.add(e.instancedMesh),e.instancedMesh.onAfterRender=()=>{delete e.instancedMesh.onAfterRender,e.instancedMesh.displayedOnce=!0}}setObject(e){const t=this;t.instancedMesh=e,t.instancedMesh.matrixAutoUpdate=!1,t.instancedMesh.matrixWorldAutoUpdate=!1,t.scene.children.includes(e)||this.addToScene();for(let a=0;a<t.instancedTiles.length;a++)t.instancedTiles[a].loadMesh(t.instancedMesh)}update(){const e=this;for(let t=e.instancedTiles.length-1;t>=0;t--)e.instancedTiles[t].deleted&&e.instancedTiles.splice(t,1);if(e.instancedMesh){e.instancedMesh.count=0,e.instancedMesh.instancedTiles=[];for(let t=0;t<e.instancedTiles.length;t++)e.instancedTiles[t].meshContent.add(e.instancedMesh),e.instancedTiles[t].materialVisibility&&(e.instancedMesh.count++,e.reuseableMatrix.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),e.reuseableMatrix.multiply(e.instancedTiles[t].matrixWorld),e.reuseableMatrix.multiply(e.instancedMesh.baseMatrix),e.instancedMesh.setMatrixAt(e.instancedMesh.count-1,e.reuseableMatrix),e.instancedMesh.instancedTiles.push(e.instancedTiles[t]));e.instancedMesh.instanceMatrix.needsUpdate=!0,e.instancedMesh.needsUpdate=!0,e.instancedMesh.computeBoundingSphere()}}getCount(){return this.instancedTiles.length}dispose(){const e=this;return!(e.instancedTiles.length>0)&&!!e.instancedMesh&&(e.scene.remove(e.instancedMesh),e.instancedMesh.traverse(t=>{if(t.dispose&&t.dispose(),t.material)if(t.material.length)for(let a=0;a<t.material.length;++a)t.material[a].dispose();else t.material.dispose();t.geometry&&t.geometry.dispose()}),e.instancedMesh.dispose(),!0)}}class XA{constructor(){const e=this;e.count=0,e.json,e.instancedTiles=[]}addInstance(e){this.instancedTiles.push(e),this.json&&e.loadJson(this.json,this.url)}setObject(e,t){const a=this;a.json=e,a.url=t;for(let A=0;A<a.instancedTiles.length;A++)a.instancedTiles[A].loadJson(a.json,a.url)}getCount(){return this.instancedTiles.length}update(){const e=this;for(let t=e.instancedTiles.length-1;t>=0;t--)e.instancedTiles[t].deleted&&e.instancedTiles.splice(t,1)}dispose(){return!(!this.json||this.instancedTiles.length!=0)}}let Ge=0;async function ZA(n){return new Promise(e=>{const t=setInterval(()=>{n.hasDracoLoader&&!n.dracoLoader||n.hasKTX2Loader&&!n.ktx2Loader||(clearInterval(t),e())},10)})}exports.InstancedOGC3DTile=YA,exports.InstancedTileLoader=class{constructor(n,e){if(this.zUpToYUpMatrix=new R.Matrix4,this.zUpToYUpMatrix.set(1,0,0,0,0,0,-1,0,0,1,0,0,0,0,0,1),this.maxCachedItems=100,this.maxInstances=1,this.proxy=e.proxy,e&&(this.meshCallback=e.meshCallback,this.pointsCallback=e.pointsCallback,e.maxCachedItems&&(this.maxCachedItems=e.maxCachedItems),e.maxInstances&&(this.maxInstances=e.maxInstances)),this.gltfLoader=new ha,e&&e.dracoLoader)this.gltfLoader.setDRACOLoader(e.dracoLoader),this.hasDracoLoader=!0;else{const t=new ga;t.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.4.3/"),this.gltfLoader.setDRACOLoader(t),this.gltfLoader.hasDracoLoader=!0}if(e&&e.ktx2Loader)this.gltfLoader.setKTX2Loader(e.ktx2Loader),this.hasKTX2Loader=!0;else if(e&&e.renderer){const t=new ie;t.setTranscoderPath("https://storage.googleapis.com/ogc-3d-tiles/basis/").detectSupport(e.renderer),this.gltfLoader.setKTX2Loader(t),this.gltfLoader.hasKTX2Loader=!0}this.gltfLoader.setMeshoptDecoder(Ra),this.hasMeshOptDecoder=!0,this.b3dmDecoder=new ca(this.gltfLoader),this.cache=new na.LinkedHashMap,this.scene=n,this.ready=[],this.downloads=[],this.nextReady=[],this.nextDownloads=[]}update(){const n=this;n._checkSize(),n.cache._data.forEach(e=>{e.update()}),Ge<8&&n._download(),n._loadBatch()}_download(){const n=this;if(n.nextDownloads.length!=0||(n._getNextDownloads(),n.nextDownloads.length!=0))for(;n.nextDownloads.length>0;){const t=n.nextDownloads.shift();if(t){if(t.path.includes(".b3dm")&&(e=n.proxy?()=>fetch(n.proxy,{method:"POST",body:t.path}):()=>fetch(t.path),Ge++,e().then(a=>{if(!a.ok)throw console.error("could not load tile with path : "+t.path),new Error(`couldn't load "${t.path}". Request failed with status ${a.status} : ${a.statusText}`);return a.arrayBuffer()}).then(a=>this.b3dmDecoder.parseB3DMInstanced(a,A=>{n.meshCallback(A,t.geometricError)},n.maxInstances,t.sceneZupToYup,t.meshZupToYup)).then(a=>{a.frustumCulled=!1,t.tile.setObject(a),n.ready.unshift(t)}).catch(a=>console.error(a)).finally(()=>{Ge--})),t.path.includes(".glb")||t.path.includes(".gltf"))e=n.proxy?()=>fetch(n.proxy,{method:"POST",body:t.path}):()=>fetch(t.path),Ge++,e().then(a=>{if(!a.ok)throw new Error("missing content");return a.arrayBuffer()}).then(async a=>{await ZA(this.gltfLoader),this.gltfLoader.parse(a,null,A=>{let r;A.scene.asset=A.asset,t.sceneZupToYup&&A.scene.applyMatrix4(this.zUpToYUpMatrix),A.scene.traverse(i=>{i.geometricError=t.geometricError,i.isMesh&&(t.meshZupToYup&&i.applyMatrix4(this.zUpToYUpMatrix),n.meshCallback&&n.meshCallback(i,i.geometricError)),i.isPoints&&console.error("instanced point cloud is not supported")}),A.scene.updateWorldMatrix(!1,!0),A.scene.traverse(i=>{i.isMesh&&(r=new R.InstancedMesh(i.geometry,i.material,n.maxInstances),r.baseMatrix=i.matrixWorld)}),n.ready.unshift(t),r?(r.frustumCulled=!1,t.tile.setObject(r)):A.scene.traverse(i=>{i.dispose&&i.dispose(),i.material&&i.material.dispose()})})},a=>{console.error("could not load tile : "+t.path)}).finally(()=>{Ge--});else if(t.path.includes(".json")){var e;e=n.proxy?()=>fetch(n.proxy,{method:"POST",body:t.path}):()=>fetch(t.path),Ge++,e().then(a=>{if(!a.ok)throw console.error("could not load tile with path : "+t.path),new Error(`couldn't load "${t.path}". Request failed with status ${a.status} : ${a.statusText}`);return a.json()}).then(a=>Mt(a,t.path)).then(a=>{t.tile.setObject(a,t.path),n.ready.unshift(t)}).catch(a=>console.error(a)).finally(()=>{Ge--})}}}}_loadBatch(){return this.nextReady.length==0&&(this._getNextReady(),this.nextReady.length==0)?0:this.nextReady.shift()?1:0}_getNextReady(){let n=Number.MAX_VALUE,e=-1;for(let t=this.ready.length-1;t>=0;t--)this.ready[t].distanceFunction||this.nextReady.push(this.ready.splice(t,1)[0]);if(!(this.nextReady.length>0)){for(let t=this.ready.length-1;t>=0;t--){const a=this.ready[t].distanceFunction()*this.ready[t].level;a<n&&(n=a,e=t)}if(e>=0){const t=this.ready.splice(e,1).pop();this.nextReady.push(t);const a=t.getSiblings();for(let A=this.ready.length-1;A>=0;A--)a.includes(this.ready[A].uuid)&&this.nextready.push(this.ready.splice(A,1).pop())}}}get(n,e,t,a,A,r,i,o,l,h){const g=this,f=function(I){for(var p=I.split("/"),B=[],m=0,E=0;E<p.length;E++){var Q=p[E];Q!=="."&&Q!==""&&Q!==".."?B[m++]=Q:Q===".."&&m>0&&m--}if(m===0)return"/";var k="";for(E=0;E<m;E++)k+="/"+B[E];return k}(e);if(!(e.includes(".b3dm")||e.includes(".json")||e.includes(".glb")||e.includes(".gltf")))return void console.error("the 3DTiles cache can only be used to load B3DM, gltf and json data");const u=g.cache.get(f);if(u)u.addInstance(a);else if(e.includes(".b3dm")||e.includes(".glb")||e.includes(".gltf")){const I=new WA(g.scene);I.addInstance(a),g.cache.put(f,I);const p=new AbortController;n.signal.addEventListener("abort",()=>{I.getCount()==0&&p.abort()}),this.downloads.push({abortController:p,tile:I,key:f,path:e,distanceFunction:A,getSiblings:r,level:i,uuid:t,sceneZupToYup:o,meshZupToYup:l,geometricError:h,shouldDoDownload:()=>!0})}else if(e.includes(".json")){const I=new XA;I.addInstance(a),g.cache.put(f,I);const p=new AbortController;n.signal.addEventListener("abort",()=>{I.getCount()==0&&p.abort()}),this.downloads.push({abortController:p,tile:I,key:f,path:e,distanceFunction:A,getSiblings:r,level:i,shouldDoDownload:()=>!0})}}_getNextDownloads(){let n=Number.MAX_VALUE,e=-1;for(let t=this.downloads.length-1;t>=0;t--){const a=this.downloads[t];a.shouldDoDownload()?a.distanceFunction||this.nextDownloads.push(this.downloads.splice(t,1)[0]):this.downloads.splice(t,1)}if(!(this.nextDownloads.length>0)){for(let t=this.downloads.length-1;t>=0;t--){const a=this.downloads[t],A=a.distanceFunction()*a.level;A<n&&(n=A,e=t)}if(e>=0){const t=this.downloads.splice(e,1).pop();this.nextDownloads.push(t);const a=t.getSiblings();for(let A=this.downloads.length-1;A>=0;A--)a.includes(this.downloads[A].uuid)&&this.nextDownloads.push(this.downloads.splice(A,1).pop())}}}_checkSize(){const n=this;let e=0;for(;n.cache.size()>n.maxCachedItems&&e<n.cache.size();){e++;const t=n.cache.head();n.cache.remove(t.key),t.value.dispose()||n.cache.put(t.key,t.value)}}},exports.OGC3DTile=Tt,exports.OcclusionCullingService=class{constructor(){this.cullMap=[],this.cullMaterial=new R.MeshBasicMaterial({vertexColors:!0}),this.cullMaterial.side=R.FrontSide,this.cullTarget=this._createCullTarget(),this.cullPixels=new Uint8Array(4*this.cullTarget.width*this.cullTarget.height)}setSide(n){this.cullMaterial.side=n}_createCullTarget(){const n=new R.WebGLRenderTarget(Math.floor(.05*window.innerWidth),Math.floor(.05*window.innerHeight));return n.texture.format=R.RGBAFormat,n.texture.colorSpace=R.LinearSRGBColorSpace,n.texture.minFilter=R.NearestFilter,n.texture.magFilter=R.NearestFilter,n.texture.generateMipmaps=!1,n.stencilBuffer=!1,n.depthBuffer=!0,n.depthTexture=new R.DepthTexture,n.depthTexture.format=R.DepthFormat,n.depthTexture.type=R.UnsignedShortType,n}update(n,e,t){let a=e.getRenderTarget(),A=n.overrideMaterial;n.overrideMaterial=this.cullMaterial,e.setRenderTarget(this.cullTarget),e.render(n,t),n.overrideMaterial=A,e.setRenderTarget(a),e.readRenderTargetPixels(this.cullTarget,0,0,this.cullTarget.width,this.cullTarget.height,this.cullPixels),this.cullMap=[];for(let r=0;r<this.cullPixels.length;r+=4){const i=R.MathUtils.clamp(this.cullPixels[r],0,255)<<16^R.MathUtils.clamp(this.cullPixels[r+1],0,255)<<8^R.MathUtils.clamp(this.cullPixels[r+2],0,255);this.cullMap[i]=!0}}hasID(n){return this.cullMap[n]}},exports.TileLoader=Ma,exports.getOGC3DTilesCopyrightInfo=La;
205
+ }`}var le;const Be=new R.Sphere(new R.Vector3(0,0,0),1),Ue=new ye([0,0,0,1,0,0,0,1,0,0,0,1]);new R.Box3;const Me=new R.Vector3(0,0,0),Oe=new R.Vector3(0,0,0),ri=new R.Vector3(0,1,0),At=new R.Ray,it=new R.Matrix4;new R.Matrix4,new R.Frustum;const wt=new R.Vector3,rt=[],da=new R.Quaternion,be={};function Ha(){var n=[];for(let e in be)be.hasOwnProperty(e)&&be[e]>0&&n.push(e);return n}class Lt extends R.Object3D{constructor(e){super();const t=this;if(t.splatsMesh=e.splatsMesh,this.contentURL=[],e.domWidth&&e.domHeight?this.rendererSize=new R.Vector2(e.domWidth,e.domHeight):this.rendererSize=new R.Vector2(1e3,1e3),this.loadingStrategy=e.loadingStrategy?e.loadingStrategy.toUpperCase():"INCREMENTAL",this.distanceBias=Math.max(1e-4,e.distanceBias?e.distanceBias:1),this.proxy=e.proxy,this.drawBoundingVolume=!!e.drawBoundingVolume&&e.drawBoundingVolume,this.displayErrors=e.displayErrors,this.displayCopyright=e.displayCopyright,e.queryParams&&(this.queryParams={...e.queryParams}),this.uuid=Ia(),e.tileLoader)this.tileLoader=e.tileLoader;else{const r={};r.meshCallback=e.meshCallback?e.meshCallback:(i,o)=>{i.material.wireframe=!1,i.material.side=R.DoubleSide},r.pointsCallback=e.pointsCallback?e.pointsCallback:(i,o)=>{i.material.size=Math.pow(o,.33),i.material.sizeAttenuation=!0},r.proxy=this.proxy,r.renderer=e.renderer,r.dracoLoader=e.dracoLoader,r.ktx2Loader=e.ktx2Loader,this.tileLoader=new Ga(r),this.update=i=>{this.update(i),this.tileLoader.update()}}if(this.displayCopyright=!!e.displayCopyright,this.geometricErrorMultiplier=e.geometricErrorMultiplier?e.geometricErrorMultiplier:1,this.splatsCropRadius=Number.MAX_VALUE,this.splatsSizeMultiplier=1,this.renderer=e.renderer,this.meshCallback=e.meshCallback,this.loadOutsideView=e.loadOutsideView,this.cameraOnLoad=e.cameraOnLoad,this.parentTile=e.parentTile,this.occlusionCullingService=e.occlusionCullingService,this.static=e.static,this.occlusionCullingService&&(this.color=new R.Color,this.color.setHex(16777215*Math.random()),this.colorID=R.MathUtils.clamp(255*t.color.r,0,255)<<16^R.MathUtils.clamp(255*t.color.g,0,255)<<8^R.MathUtils.clamp(255*t.color.b,0,255)),this.static&&(this.matrixAutoUpdate=!1,this.matrixWorldAutoUpdate=!1),this.childrenTiles=[],this.meshContent=[],this.tileContent,this.refine,this.rootPath,this.geometricError,this.boundingVolume,this.json,this.materialVisibility=!1,this.level=e.level?e.level:0,this.hasMeshContent=0,this.hasUnloadedJSONContent=0,this.centerModel=e.centerModel,this.abortController=new AbortController,this.onLoadCallback=e.onLoadCallback,e.json)t._setup(e);else if(e.url){var a=e.url;if(t.queryParams){var A="";for(let r in t.queryParams)t.queryParams.hasOwnProperty(r)&&(A+="&"+r+"="+t.queryParams[r]);a.includes("?")?a+=A:a+="?"+A.substring(1)}(t.proxy?()=>fetch(t.proxy,{method:"POST",body:a,signal:t.abortController.signal}):()=>fetch(a,{signal:t.abortController.signal}))().then(r=>{if(!r.ok)throw new Error(`couldn't load "${e.url}". Request failed with status ${r.status} : ${r.statusText}`);r.json().then(i=>vt(i,a)).then(i=>{t._setup({rootPath:(void 0)(e.url),json:i})})}).catch(r=>{t.displayErrors&&ha(r)})}}setSplatsSizeMultiplier(e){this.splatsSizeMultiplier=e,this.splatsMesh&&this.splatsMesh.setSplatsSizeMultiplier(this.splatsSizeMultiplier)}setSplatsCropRadius(e){this.splatsCropRadius=e,this.splatsMesh&&this.splatsMesh.setSplatsCropRadius(this.splatsCropRadius)}updateMatrices(){this.updateMatrix(),this.static&&this.traverse(e=>{e.isObject3D&&(e.matrixWorldAutoUpdate=!0)}),this.updateMatrixWorld(!0),this.static&&this.traverse(e=>{e.isObject3D&&(e.matrixWorldAutoUpdate=!1)})}setCanvasSize(e,t){this.rendererSize.set(e,t)}async _setup(e){const t=this;if(e.json.extensionsRequired&&e.json.extensionsRequired.includes("JDULTRA_gaussian_splats")&&(t.splatsMesh=new ii(t.tileLoader.renderer),this.splatsMesh.setSplatsCropRadius(this.splatsCropRadius),this.splatsMesh.setSplatsSizeMultiplier(this.splatsSizeMultiplier),t.add(t.splatsMesh)),e.json.root?(t.json=e.json.root,t.json.refine||(t.json.refine=e.json.refine),t.json.geometricError||(t.json.geometricError=e.json.geometricError),t.json.transform||(t.json.transform=e.json.transform),t.json.boundingVolume||(t.json.boundingVolume=e.json.boundingVolume)):t.json=e.json,t.json.children||(t.json.getChildren?t.json.children=await t.json.getChildren():t.json.children=[]),t.rootPath=e.json.rootPath?e.json.rootPath:e.rootPath,t.json.refine?t.refine=t.json.refine:t.refine=e.parentRefine,t.json.geometricError?t.geometricError=t.json.geometricError:t.geometricError=e.parentGeometricError,t.json.transform){let A=new R.Matrix4;A.elements=t.json.transform,t.applyMatrix4(A)}if(t.json.boundingVolume)if(t.json.boundingVolume.box)t.boundingVolume=new ye(t.json.boundingVolume.box);else if(t.json.boundingVolume.region){const A=t.json.boundingVolume.region;t._transformWGS84ToCartesian(A[0],A[1],A[4],Me),t._transformWGS84ToCartesian(A[2],A[3],A[5],Oe),Me.lerp(Oe,.5),t.boundingVolume=new R.Sphere(new R.Vector3(Me.x,Me.y,Me.z),Me.distanceTo(Oe))}else if(t.json.boundingVolume.sphere){const A=t.json.boundingVolume.sphere;t.boundingVolume=new R.Sphere(new R.Vector3(A[0],A[1],A[2]),A[3])}else t.boundingVolume=e.parentBoundingVolume;else t.boundingVolume=e.parentBoundingVolume;function a(A){A.uri&&A.uri.includes("json")||A.url&&A.url.includes("json")?t.hasUnloadedJSONContent++:t.hasMeshContent++}if(t.json.content?(a(t.json.content),t.hasMeshContent==0&&(t.level=Math.max(0,t.parentTile?t.parentTile.level+.01:0)),t.loadingStrategy==="IMMEDIATE"?t._load(!0,!1):t._load()):t.json.contents&&(t.json.contents.forEach(A=>a(A)),t.hasMeshContent==0&&(t.level=Math.max(0,t.parentTile?t.parentTile.level+.01:0)),t.loadingStrategy==="IMMEDIATE"?t._load(!0,!1):t._load()),t.centerModel&&(Oe.copy(t.boundingVolume.center),this.json.boundingVolume.region&&(this._transformWGS84ToCartesian(.5*(this.json.boundingVolume.region[0]+this.json.boundingVolume.region[2]),.5*(this.json.boundingVolume.region[1]+this.json.boundingVolume.region[3]),.5*(this.json.boundingVolume.region[4]+this.json.boundingVolume.region[5]),Me),da.setFromUnitVectors(Me.normalize(),ri.normalize()),t.applyQuaternion(da)),Oe.applyMatrix4(t.matrix),t.position.sub(Oe),t.updateMatrices()),e.onLoadCallback&&t.onLoadCallback(t),t.isSetup=!0,t.level>0&&t.drawBoundingVolume&&(t.bbox&&console.log("double setup"),this.boundingVolume.aabb)){let A=this.boundingVolume.aabb.clone();A.applyMatrix4(this.matrixWorld),t.bbox=new R.Box3Helper(A,new R.Color(Math.random(),Math.random(),Math.random())),t.add(t.bbox),t.bbox.material.visible=!1}}_assembleURL(e,t){e.endsWith("/")||(e+="/");const a=new URL(e);let A=a.pathname.split("/").filter(i=>i!==""),r=t.split("/").filter(i=>i!=="");for(let i=1;i<=A.length&&!(i>=r.length);i++)if(A.slice(A.length-i,A.length).join("/")===r.slice(0,i).join("/")){for(let o=0;o<i;o++)A.pop();break}for(;r.length>0&&r[0]==="..";)A.pop(),r.shift();return`${a.protocol}//${a.host}/${[...A,...r].join("/")}`}_extractQueryParams(e,t){const a=new URL(e);for(let[A,r]of a.searchParams)t[A]=r;return a.search="",a.toString()}async _load(e=!0,t=!0){var a=this;if(!a.deleted){if(a.json.content)await A(a.json.content,null,e,t);else if(a.json.contents){let r=a.json.contents.map((i,o)=>A(i,o,e,t));Promise.all(r)}}async function A(r,i,o,l){let h;r.uri?h=r.uri:r.url&&(h=r.url);const g=/^(?:http|https|ftp|tcp|udp):\/\/\S+/;if(g.test(a.rootPath)?g.test(h)||(h=a._assembleURL(a.rootPath,h)):(void 0)(a.rootPath),h=a._extractQueryParams(h,a.queryParams),a.queryParams){var f="";for(let u in a.queryParams)a.queryParams.hasOwnProperty(u)&&(f+="&"+u+"="+a.queryParams[u]);h.includes("?")?h+=f:h+="?"+f.substring(1)}if(h)if(l&&(h.includes(".b3dm")||h.includes(".glb")||h.includes(".gltf"))){a.contentURL.push(h);try{a.tileLoader.get(a.abortController,a.uuid,h,u=>{a.deleted||(u.asset&&u.asset.copyright&&(u.asset.copyright.split(";").forEach(I=>{be[I]?be[I]++:be[I]=1}),a.displayCopyright&&xt()),a.meshContent.push(u),a.splatsMesh||(u.traverse(I=>{if((I.isMesh||I.isPoints)&&I.layers.disable(0),I.isMesh&&a.occlusionCullingService){const p=I.geometry.attributes.position,B=[];for(let m=0;m<p.count;m++)B.push(a.color.r,a.color.g,a.color.b);I.geometry.setAttribute("color",new R.Float32BufferAttribute(B,3))}}),a.add(u),a.updateMatrices()))},a.cameraOnLoad?()=>{let u=1;return(a.metric&&a.metric<0||a.deleted)&&(u=2),a.parentTile?a.parentTile._calculateDistanceToCamera(a.cameraOnLoad)*u*a.level:a._calculateDistanceToCamera(a.cameraOnLoad)*u*a.level}:()=>0,()=>a._getSiblings(),a.level,!a.json.boundingVolume.region,!!a.json.boundingVolume.region,a.geometricError,a.splatsMesh)}catch(u){a.displayErrors&&ha(u)}}else o&&h.includes(".json")&&(a.jsonRequested=h,a.tileLoader.get(a.abortController,a.uuid,h,async u=>{a.deleted||(u.rootPath=(void 0)(h),a.json.children.push(u),i==null?delete a.json.content:a.json.contents.splice(i,1),a.hasUnloadedJSONContent--)}))}}dispose(){const e=this;e.meshContent.forEach(t=>{t&&t.asset&&t.asset.copyright&&(t.asset.copyright.split(";").forEach(a=>{be[a]&&be[a]--}),e.displayCopyright&&xt())}),e.meshContent=[],e.bbox&&e.bbox.dispose(),e.childrenTiles.forEach(t=>t.dispose()),e.deleted=!0,e.splatsMesh&&(e.meshContent.forEach(t=>t.hide()),e.parentTile||e.splatsMesh.dispose()),e.contentURL&&(e.contentURL.forEach(t=>{e.tileLoader.invalidate(t,e.uuid)}),e.contentURL=[]),e.abortController&&e.abortController.abort("tile not needed"),this.parent=null,this.dispatchEvent({type:"removed"})}_disposeMeshContent(){const e=this;if(!e.deleted){e.deleted=!0,e.abortController&&(e.abortController.abort("tile not needed"),e.abortController=new AbortController);for(let t=e.meshContent.length-1;t>=0;t--){const a=e.meshContent[t];a&&a.asset&&a.asset.copyright&&(a.asset.copyright.split(";").forEach(A=>{be[A]&&be[A]--}),e.displayCopyright&&xt()),e.remove(a)}e.splatsMesh&&e.meshContent.forEach(t=>t.hide()),e.meshContent=[],e.contentURL.forEach(t=>{e.tileLoader.invalidate(t,e.uuid)}),e.contentURL=[]}}_disposeChildren(){var e=this;e.childrenTiles.forEach(t=>{t.dispose(),e.remove(t)}),e.childrenTiles=[]}raycast(e,t){if(this.splatsMesh){At.copy(e.ray),it.copy(this.matrixWorld).invert(),At.applyMatrix4(it);let a=!1;if(this.boundingVolume instanceof ye)a=this.boundingVolume.intersectsRay(At);else{if(!(this.boundingVolume instanceof R.Sphere))return!1;a=ray.intersectsSphere(this.boundingVolume)}return a&&this.materialVisibility&&this.splatsReady&&(rt.length=0,this.meshContent.forEach(A=>{A.isSplatsBatch&&(A.raycast(At,rt,e.params.Points.threshold),rt.forEach(r=>{r.point.applyMatrix4(this.matrixWorld)}),t.push(...rt))})),a}return super.raycast(e,t)}update(e){const t=new R.Frustum;t.setFromProjectionMatrix(new R.Matrix4().multiplyMatrices(e.projectionMatrix,e.matrixWorldInverse));let a=[0],A=[0],r=[0],i=[0];return this.refine=="REPLACE"?this.loadingStrategy==="IMMEDIATE"?(this._updateImmediate(e,t),this._statsImmediate(r,a,i,A)):(this._update(e,t),this._stats(r,a,i,A)):(this._update(e,t),this._stats(r,a,i,A)),a>0&&(i[0]/=a[0]),this.splatsMesh&&(wt.copy(e.position),it.copy(this.matrixWorld).invert(),wt.applyMatrix4(it),this.splatsMesh.sort(wt)),{numTilesLoaded:a[0],numTilesRendered:A[0],maxLOD:r[0],percentageLoaded:i[0]}}_updateImmediate(e,t){this._computeMetricRecursive(e,t),this._updateNodeVisibilityImmediate(),this._expandTreeImmediate(e),this.shouldBeVisible=this.metric>0||!!this.loadOutsideView,this._shouldBeVisibleUpdateImmediate(),this._trimTreeImmediate(),this._loadMeshImmediate()}_statsImmediate(e,t,a,A){e[0]=Math.max(e[0],this.level),(this.shouldBeVisible||this.materialVisibility)&&(t[0]++,this.materialVisibility&&a[0]++),this.materialVisibility&&A[0]++,this.childrenTiles.forEach(r=>{r._statsImmediate(e,t,a,A)})}_stats(e,t,a,A){e[0]=Math.max(e[0],this.level),this.hasMeshContent&&(t[0]++,this.meshContent.length==this.hasMeshContent&&a[0]++,this.materialVisibility&&A[0]++),this.childrenTiles.forEach(r=>{r._stats(e,t,a,A)})}_trimTreeImmediate(){if(this.metric!=null)if(this.hasMeshContent&&this.shouldBeVisible&&this.materialVisibility){if(self.splatsMesh&&!self.splatsReady)return;this._disposeChildren()}else this.childrenTiles.forEach(e=>{e._trimTreeImmediate()})}_updateNodeVisibilityImmediate(e=!1){const t=this;if(t.hasMeshContent)if(t.shouldBeVisible)t.meshContent.length==t.hasMeshContent?t.materialVisibility?t.childrenTiles.forEach(a=>{a._updateNodeVisibilityImmediate(!0)}):(t._changeContentVisibility(!0),t.childrenTiles.forEach(a=>{a._updateNodeVisibilityImmediate(e)})):t.childrenTiles.forEach(a=>{a._updateNodeVisibilityImmediate(e)});else{if(!t.loadOutsideView&&t.metric<0)return t._changeContentVisibility(!1),t.meshContent.length>0&&t._disposeMeshContent(),void t.childrenTiles.forEach(a=>{a._updateNodeVisibilityImmediate(!0)});if(!t.materialVisibility||t.splatsMesh&&!t.splatsReady)t.childrenTiles.forEach(a=>{a._updateNodeVisibilityImmediate(e)});else if(e)t._changeContentVisibility(!1),t.meshContent.length>0&&t._disposeMeshContent(),t.childrenTiles.forEach(a=>{a._updateNodeVisibilityImmediate(e)});else{let a=!0;t.childrenTiles.every(A=>!!A._isReadyImmediate()||(a=!1,!1)),a&&t.childrenTiles.length>0?(t._changeContentVisibility(!1),t.meshContent.length>0&&t._disposeMeshContent(),t.childrenTiles.forEach(A=>{A._updateNodeVisibilityImmediate(e)})):t.childrenTiles.forEach(A=>{A._updateNodeVisibilityImmediate(!t.splatsMesh||t.splatsReady)})}}else t.childrenTiles.forEach(a=>{a._updateNodeVisibilityImmediate(e)})}_shouldBeVisibleUpdateImmediate(){const e=this;e.hasMeshContent?e.metric==null?e.shouldBeVisible=!1:e.metric<0?(e.shouldBeVisible=!!e.loadOutsideView,e.childrenTiles.forEach(t=>{t._setShouldNotBeVisibleRecursive()})):e.metric<e.geometricErrorMultiplier*e.geometricError?e.hasUnloadedJSONContent||(e.json&&e.json.children&&e.json.children.length>0?(e.shouldBeVisible=!1,e.childrenTiles.forEach(t=>{t.shouldBeVisible=!0,t._shouldBeVisibleUpdateImmediate()})):e.shouldBeVisible=!0):e.childrenTiles.forEach(t=>{t._setShouldNotBeVisibleRecursive()}):(e.childrenTiles.forEach(t=>{t.shouldBeVisible=!0,t._shouldBeVisibleUpdateImmediate()}),e.shouldBeVisible=!1)}_setShouldNotBeVisibleRecursive(){this.shouldBeVisible=!1,this.childrenTiles.forEach(e=>{e._setShouldNotBeVisibleRecursive()})}_loadMeshImmediate(){const e=this;e.hasMeshContent&&e.shouldBeVisible?e.meshContent.length<e.hasMeshContent&&e.contentURL.length==0&&(e.deleted=!1,e._load(!1,!0)):e.childrenTiles.forEach(t=>{t._loadMeshImmediate()})}_computeMetricRecursive(e,t){const a=this;a.metric=-1,a.isSetup&&(a.boundingVolume&&a.geometricError&&(a.metric=a._calculateUpdateMetric(e,t)),a.childrenTiles.forEach(A=>A._computeMetricRecursive(e,t)))}_expandTreeImmediate(e){const t=this;t.hasUnloadedJSONContent||(t.hasMeshContent?t.occlusionCullingService&&t.hasMeshContent&&!t.occlusionCullingService.hasID(t.colorID)||t.metric>=0&&t.metric<t.geometricErrorMultiplier*t.geometricError&&t.json&&t.json.children&&t.childrenTiles.length<t.json.children.length&&t._loadJsonChildren(e):t.json&&t.json.children&&t.childrenTiles.length<t.json.children.length&&t._loadJsonChildren(e)),t.childrenTiles.forEach(a=>a._expandTreeImmediate(e))}_update(e,t){const a=this;if(!a.isSetup)return;const A=a.materialVisibility;a.boundingVolume&&a.geometricError&&(a.metric=a._calculateUpdateMetric(e,t)),a.childrenTiles.forEach(r=>r._update(e,t)),function(r){if(a.hasMeshContent&&!(a.meshContent.length<a.hasMeshContent)){if(r<0)return a.inFrustum=!1,void a._changeContentVisibility(!!a.loadOutsideView);if(a.inFrustum=!0,a.childrenTiles.length==0)return void a._changeContentVisibility(!0);if(r>=a.geometricErrorMultiplier*a.geometricError)a._changeContentVisibility(!0);else if(r<a.geometricErrorMultiplier*a.geometricError&&a.refine=="REPLACE"){let i=!0;a.childrenTiles.every(o=>!!o._isReady()||(i=!1,!1)),i?a._changeContentVisibility(!1):a._changeContentVisibility(!0)}}}(a.metric),function(r){r<0&&a.hasMeshContent||a.occlusionCullingService&&a.hasMeshContent&&!a.occlusionCullingService.hasID(a.colorID)||(!a.hasMeshContent||r<=a.geometricErrorMultiplier*a.geometricError&&a.meshContent.length>0)&&a.json&&a.json.children&&a.childrenTiles.length!=a.json.children.length&&a._loadJsonChildren(e)}(a.metric),function(r,i){if(a.hasMeshContent){if(!a.inFrustum)return void a._disposeChildren();if(a.occlusionCullingService&&!i&&a.hasMeshContent&&a.meshContent.length>0&&a.materialVisibility&&a._areAllChildrenLoadedAndHidden())return a.splatsMesh&&this.materialVisibility&&!a.splatsReady?void 0:void a._disposeChildren();if(r>=a.geometricErrorMultiplier*a.geometricError){if(a.splatsMesh&&a.materialVisibility&&!a.splatsReady)return;a._disposeChildren()}}}(a.metric,A)}_loadJsonChildren(e){const t=this;for(let a=t.json.children.length-1;a>=0;a--)t.json.children[a].root||t.json.children[a].children||t.json.children[a].getChildren||t.json.children[a].content||t.json.children[a].contents||t.json.children.splice(a,1);t.json.children.forEach(a=>{let A=new Lt({parentTile:t,queryParams:t.queryParams,parentGeometricError:t.geometricError,parentBoundingVolume:t.boundingVolume,parentRefine:t.refine,json:a,rootPath:t.rootPath,geometricErrorMultiplier:t.geometricErrorMultiplier,loadOutsideView:t.loadOutsideView,level:Math.floor(t.level)+1,tileLoader:t.tileLoader,cameraOnLoad:e,occlusionCullingService:t.occlusionCullingService,renderer:t.renderer,static:t.static,centerModel:!1,displayErrors:t.displayErrors,displayCopyright:t.displayCopyright,distanceBias:t.distanceBias,loadingStrategy:t.loadingStrategy,drawBoundingVolume:t.drawBoundingVolume,splatsMesh:t.splatsMesh});t.childrenTiles.push(A),t.add(A)}),t.updateMatrices(!0)}_areAllChildrenLoadedAndHidden(){let e=!0;const t=this;return this.childrenTiles.every(a=>{if(a.hasMeshContent){if(a.childrenTiles.length>0)return e=!1,!1;if(!a.metric<0)return!0;if(a.materialVisibility&&(!t.splatsMesh||t.splatsReady)||t.occlusionCullingService.hasID(a.colorID))return e=!1,!1}else if(!a._areAllChildrenLoadedAndHidden())return e=!1,!1;return!0}),e}_isReady(){if(this.metric==null)return!1;if(this.metric<0)return!0;if(this.hasUnloadedJSONContent)return!1;if(!this.hasMeshContent&&this.json.children.length==0&&!this.hasUnloadedJSONContent)return!0;if(!this.hasMeshContent||this.meshContent.length==0||!this.materialVisibility||self.splatsMesh&&!self.splatsReady){if(this.children.length>0){var e=!0;return this.childrenTiles.every(t=>!!t._isReady()||(e=!1,!1)),e}return!1}return!this.hasMeshContent||(this.meshContent.length<this.hasMeshContent?(console.log("jkhkjh"),!1):!(!this.materialVisibility||this.splatsMesh&&!this.splatsReady))}_isReadyImmediate(){return!!(this.materialVisibility||!this.loadOutsideView&&this.metric<0)||!!this.splatsMesh&&!!this.splatsReady}_changeContentVisibility(e){const t=this;if(t.bbox&&(t.bbox.material.visible=e),t.splatsMesh)e!=t.materialVisibility&&(t.meshContent.forEach(a=>{e&&a.isSplatsBatch?(t.splatsReady=!0,a.show(()=>{t.materialVisibility&&(t.splatsReady=!0)})):a.hide()}),t.materialVisibility=e);else{if(t.hasMeshContent&&t.meshContent.length>0&&(e?t.meshContent.forEach(a=>{a.traverse(A=>{(A.isMesh||A.isPoints)&&A.layers.enable(0)})}):t.meshContent.forEach(a=>{a.traverse(A=>{(A.isMesh||A.isPoints)&&A.layers.disable(0)})})),t.materialVisibility==e)return;t.materialVisibility=e}}_calculateUpdateMetric(e,t){let a=0;if(this.boundingVolume instanceof ye){if(Ue.copy(this.boundingVolume),Ue.applyMatrix4(this.matrixWorld),!Ue.inFrustum(t))return-1;a=Math.max(0,Ue.distanceToPoint(e.position)-e.near)}else{if(!(this.boundingVolume instanceof R.Sphere))return console.error("unsupported shape"),-1;if(Be.copy(this.boundingVolume),Be.applyMatrix4(this.matrixWorld),!t.intersectsSphere(Be))return-1;a=Math.max(0,e.position.distanceTo(Be.center)-Be.radius-e.near)}if(a=Math.pow(a,this.distanceBias),a==0)return 0;const A=this.matrixWorld.getMaxScaleOnAxis();this.renderer&&this.renderer.getDrawingBufferSize(this.rendererSize);let r=this.rendererSize.y,i=e.fov;e.aspect<1&&(i*=e.aspect,r=this.rendererSize.x);let o=2*Math.tan(.5*i*.017453292519943295)*a;return 16*window.devicePixelRatio*o/(r*A)}_getSiblings(){const e=this,t=[];if(!e.parentTile)return t;let a=e.parentTile;for(;!a.hasMeshContent&&a.parentTile;)a=a.parentTile;return a.childrenTiles.forEach(A=>{if(A&&A!=e){for(;!A.hasMeshContent&&A.childrenTiles[0];)A=A.childrenTiles[0];t.push(A)}}),t}_calculateDistanceToCamera(e){return this.boundingVolume instanceof ye?(Ue.copy(this.boundingVolume),Ue.applyMatrix4(this.matrixWorld),Math.max(0,Ue.distanceToPoint(e.position))):this.boundingVolume instanceof R.Sphere?(Be.copy(this.boundingVolume),Be.applyMatrix4(this.matrixWorld),Math.max(0,e.position.distanceTo(Be.center)-Be.radius)):(console.error("unsupported shape"),-1)}setGeometricErrorMultiplier(e){this.geometricErrorMultiplier=e,this.splatsReady=!0,this.childrenTiles.forEach(t=>t.setGeometricErrorMultiplier(e))}setDistanceBias(e){this.distanceBias=e,this.childrenTiles.forEach(t=>t.setDistanceBias(e))}_transformWGS84ToCartesian(e,t,a,A){const r=6378137/Math.sqrt(1-.006694384442042*Math.pow(Math.sin(t),2)),i=Math.cos(t),o=Math.cos(e),l=Math.sin(t),h=r+a,g=h*i*o,f=h*i*Math.sin(e),u=(.993305615557957*r+a)*l;A.set(g,f,u)}}function ha(n){var e=document.createElement("div");e.textContent=n,e.style.position="fixed",e.style.top="10px",e.style.left="50%",e.style.transform="translateX(-50%)",e.style.padding="10px",e.style.backgroundColor="#ff8800",e.style.color="#ffffff",e.style.zIndex="9999",document.body.appendChild(e),setTimeout(function(){e.remove()},8e3)}function xt(){le||((le=document.createElement("div")).style.position="fixed",le.style.bottom="20px",le.style.left="20px",le.style.color="white",le.style.textShadow="2px 2px 0 #000, -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000",le.style.padding="10px",le.style.backgroundColor="rgba(0, 0, 0, 0.1)",document.body.appendChild(le));const n=Ha();let e="";n.forEach(t=>{e+=t+", "}),e=e.slice(0,-2),le.textContent=e}const Ae=new R.Sphere(new R.Vector3(0,0,0),1),Te=new R.Vector3(0,0,0),kt=new R.Vector3(0,0,0),si=new R.Vector3(0,1,0),Dt=new R.Vector2,la=new R.Quaternion,ba=new R.Matrix4;class Ut extends R.Object3D{constructor(e){super();const t=this;if(e.queryParams&&(this.queryParams={...e.queryParams}),this.uuid=Ia(),e.tileLoader?this.tileLoader=e.tileLoader:console.error("an instanced tileset must be provided an InstancedTilesetLoader"),this.master=e.master,this.loadOutsideView=e.loadOutsideView,this.cameraOnLoad=e.cameraOnLoad,this.parentTile=e.parentTile,this.distanceBias=Math.max(1e-4,e.distanceBias?e.distanceBias:1),this.childrenTiles=[],this.jsonChildren=[],this.meshContent=new Set,this.static=e.static,this.static&&(this.matrixAutoUpdate=!1,this.matrixWorldAutoUpdate=!1),this.tileContent,this.refinement,this.rootPath,this.geometricError,this.boundingVolume,this.json,this.materialVisibility=!1,this.inFrustum=!0,this.level=e.level?e.level:0,this.hasMeshContent=0,this.hasUnloadedJSONContent=0,this.centerModel=e.centerModel,this.deleted=!1,this.abortController=new AbortController,e.json)this.rootPath=e.json.rootPath?e.json.rootPath:e.rootPath,e.json.children&&(this.jsonChildren=e.json.children),t.setup(e);else if(e.url){this.loadJson=(r,i)=>{const o=(void 0)(i);t.setup({rootPath:o,json:r,onLoadCallback:e.onLoadCallback})};var a=e.url;if(t.queryParams){var A="";for(let r in t.queryParams)t.queryParams.hasOwnProperty(r)&&(A+="&"+r+"="+t.queryParams[r]);a.includes("?")?a+=A:a+="?"+A.substring(1)}t.tileLoader.get(t.abortController,a,t.uuid,t)}}async setup(e){const t=this;e.json.root?(t.json=e.json.root,!t.json.children&&t.json.getChildren&&(t.json.children=await t.json.getChildren()),t.jsonChildren=t.json.children,t.json.refinement||(t.json.refinement=e.json.refinement),t.json.geometricError||(t.json.geometricError=e.json.geometricError),t.json.transform||(t.json.transform=e.json.transform),t.json.boundingVolume||(t.json.boundingVolume=e.json.boundingVolume)):(t.json=e.json,!t.json.children&&t.json.getChildren&&(t.json.children=await t.json.getChildren(),t.jsonChildren=t.json.children)),t.rootPath=e.json.rootPath?e.json.rootPath:e.rootPath,t.json.refinement?t.refinement=t.json.refinement:t.refinement=e.parentRefinement,t.json.geometricError?t.geometricError=t.json.geometricError:t.geometricError=e.parentGeometricError;let a=new R.Matrix4;if(t.json.transform&&!t.centerModel&&(a.elements=t.json.transform),t.applyMatrix4(a),t.parentTile&&t.parentTile.matrix&&(t.matrix.premultiply(t.parentTile.matrix),t.matrix.decompose(t.position,t.quaternion,t.scale)),t.matrixWorldNeedsUpdate=!0,t.updateWorldMatrix(!0,!0),t.json.boundingVolume)if(t.json.boundingVolume.box)t.boundingVolume=new ye(t.json.boundingVolume.box);else if(t.json.boundingVolume.region){const r=t.json.boundingVolume.region;t.transformWGS84ToCartesian(r[0],r[1],r[4],Te),t.transformWGS84ToCartesian(r[2],r[3],r[5],kt),Te.lerp(kt,.5),t.boundingVolume=new R.Sphere(new R.Vector3(Te.x,Te.y,Te.z),Te.distanceTo(kt))}else if(t.json.boundingVolume.sphere){const r=t.json.boundingVolume.sphere;t.boundingVolume=new R.Sphere(new R.Vector3(r[0],r[1],r[2]),r[3])}else t.boundingVolume=e.parentBoundingVolume;else t.boundingVolume=e.parentBoundingVolume;function A(r){r.uri&&r.uri.includes("json")||r.url&&r.url.includes("json")?t.hasUnloadedJSONContent++:t.hasMeshContent++}if(t.json.content?(A(t.json.content),t.load()):t.json.contents&&(t.json.contents.forEach(r=>A(r)),t.load()),t.centerModel){const r=new R.Sphere;t.boundingVolume instanceof ye?r.copy(t.boundingVolume.sphere):t.boundingVolume instanceof R.Sphere&&r.copy(t.boundingVolume),this.json.boundingVolume.region&&(t.transformWGS84ToCartesian(.5*(t.json.boundingVolume.region[0]+t.json.boundingVolume.region[2]),.5*(t.json.boundingVolume.region[1]+t.json.boundingVolume.region[3]),.5*(t.json.boundingVolume.region[4]+t.json.boundingVolume.region[5]),Te),la.setFromUnitVectors(Te.normalize(),si.normalize()),t.master.applyQuaternion(la),t.master.updateWorldMatrix(!1,!1)),ba.makeTranslation(-r.center.x*t.scale.x,-r.center.y*t.scale.y,-r.center.z*t.scale.z),t.master.matrix.multiply(ba),t.master.matrix.decompose(t.master.position,t.master.quaternion,t.master.scale)}t.isSetup=!0,e.onLoadCallback&&e.onLoadCallback(t)}isAbsolutePathOrURL(e){const t=/^(?:http|https|ftp|tcp|udp):\/\/\S+/.test(e),a=e.startsWith("/")&&!e.startsWith("//");return t||a}assembleURL(e,t){e.endsWith("/")||(e+="/");const a=new URL(e);let A=a.pathname.split("/").filter(i=>i!==""),r=t.split("/").filter(i=>i!=="");for(let i=1;i<=A.length&&!(i>=r.length);i++)if(A.slice(A.length-i,A.length).join("/")===r.slice(0,i).join("/")){for(let o=0;o<i;o++)A.pop();break}for(;r.length>0&&r[0]==="..";)A.pop(),r.shift();return`${a.protocol}//${a.host}/${[...A,...r].join("/")}`}extractQueryParams(e,t){const a=new URL(e);for(let[A,r]of a.searchParams)t[A]=r;return a.search="",a.toString()}load(){var e=this;function t(a){let A;a.uri?A=a.uri:a.url&&(A=a.url);const r=/^(?:http|https|ftp|tcp|udp):\/\/\S+/;if(r.test(e.rootPath)?r.test(A)||(A=e.assembleURL(e.rootPath,A)):(void 0)(e.rootPath),A=e.extractQueryParams(A,e.queryParams),e.queryParams){var i="";for(let o in e.queryParams)e.queryParams.hasOwnProperty(o)&&(i+="&"+o+"="+e.queryParams[o]);A.includes("?")?A+=i:A+="?"+i.substring(1)}A&&(A.includes(".b3dm")||A.includes(".glb")||A.includes(".gltf")?(e.contentURL=A,e.tileLoader.get(e.abortController,A,e.uuid,e,e.cameraOnLoad?()=>e.calculateDistanceToCamera(e.cameraOnLoad):()=>0,()=>e.getSiblings(),e.level,!e.json.boundingVolume.region,!!e.json.boundingVolume.region,e.geometricError)):A.includes(".json")&&e.tileLoader.get(e.abortController,A,e.uuid,e))}e.deleted||(e.json.content?t(e.json.content):e.json.contents&&e.json.contents.forEach(a=>t(a)))}loadMesh(e){this.deleted||this.meshContent.add(e)}loadJson(e,t){this.deleted||(this.json.children&&(this.jsonChildren=this.json.children),e.rootPath=(void 0)(t),this.jsonChildren.push(e),this.hasUnloadedJSONContent--)}dispose(){const e=this;e.childrenTiles.forEach(t=>t.dispose()),e.deleted=!0,e.abortController&&e.abortController.abort(),this.parent=null,this.parentTile=null,this.dispatchEvent({type:"removed"})}disposeChildren(){this.childrenTiles.forEach(e=>e.dispose()),this.childrenTiles=[]}_update(e,t){const a=this;function A(r){if(a.hasMeshContent&&!(a.meshContent.size<a.hasMeshContent)){if(r<0)return a.inFrustum=!1,void a.changeContentVisibility(!!a.loadOutsideView);if(a.inFrustum=!0,a.childrenTiles.length!=0){if(r>=a.master.geometricErrorMultiplier*a.geometricError)a.changeContentVisibility(!0);else if(r<a.master.geometricErrorMultiplier*a.geometricError){let i=!0;a.childrenTiles.every(o=>!!o.isReady()||(i=!1,!1)),i&&a.changeContentVisibility(!1)}}else a.changeContentVisibility(!0)}}a.isSetup&&(a.materialVisibility,a.boundingVolume&&a.geometricError&&(a.metric=a.calculateUpdateMetric(e,t)),a.childrenTiles.forEach(r=>r._update(e,t)),A(a.metric),function(r){r<0&&a.hasMeshContent||(!a.hasMeshContent&&a.rootPath||r<a.master.geometricErrorMultiplier*a.geometricError&&a.meshContent.size>0)&&a.json&&a.jsonChildren&&a.childrenTiles.length!=a.jsonChildren.length&&a.jsonChildren.forEach(i=>{if(!(i.root||i.children||i.getChildren||i.content||i.contents))return;let o=new Ut({parentTile:a,queryParams:a.queryParams,parentGeometricError:a.geometricError,parentBoundingVolume:a.boundingVolume,parentRefinement:a.refinement,json:i,rootPath:a.rootPath,loadOutsideView:a.loadOutsideView,level:a.level+1,tileLoader:a.tileLoader,cameraOnLoad:e,master:a.master,centerModel:!1});a.childrenTiles.push(o)})}(a.metric),function(r){if(a.hasMeshContent){if(!a.inFrustum)return a.disposeChildren(),void A(r);r>=a.master.geometricErrorMultiplier*a.geometricError&&(a.disposeChildren(),A(r))}}(a.metric))}areAllChildrenLoadedAndHidden(){let e=!0;return this.childrenTiles.every(t=>{if(t.hasMeshContent){if(t.childrenTiles.length>0)return e=!1,!1;if(!t.inFrustum)return!0;if(!t.materialVisibility||t.meshesToDisplay!=t.meshesDisplayed)return e=!1,!1}else if(!t.areAllChildrenLoadedAndHidden())return e=!1,!1;return!0}),e}isReady(){if(!this.inFrustum)return!0;if(this.hasUnloadedJSONContent)return!1;if(!this.hasMeshContent||this.meshContent.size==0||!this.materialVisibility){if(this.childrenTiles.length>0){var e=!0;return this.childrenTiles.every(t=>!!t.isReady()||(e=!1,!1)),e}return!1}return!this.hasMeshContent||!(this.meshContent.size<this.hasMeshContent)&&!!this.materialVisibility}changeContentVisibility(e){this.materialVisibility=e}calculateUpdateMetric(e,t){if(this.boundingVolume instanceof ye){if(Ae.copy(this.boundingVolume.sphere),Ae.applyMatrix4(this.matrixWorld),!t.intersectsSphere(Ae))return-1}else{if(!(this.boundingVolume instanceof R.Sphere))return console.error("unsupported shape"),-1;if(Ae.copy(this.boundingVolume),Ae.applyMatrix4(this.matrixWorld),!t.intersectsSphere(Ae))return-1}let a=Math.max(0,e.position.distanceTo(Ae.center)-Ae.radius);if(a=Math.pow(a,this.distanceBias),a==0)return 0;const A=this.matrixWorld.getMaxScaleOnAxis();this.master._renderSize(Dt);let r=Dt.y,i=e.fov;e.aspect<1&&(i*=e.aspect,r=Dt.x);let o=2*Math.tan(.5*i*.017453292519943295)*a;return 16*window.devicePixelRatio*o/(r*A)}getSiblings(){const e=this,t=[];if(!e.parentTile)return t;let a=e.parentTile;for(;!a.hasMeshContent&&a.parentTile;)a=a.parentTile;return a.childrenTiles.forEach(A=>{if(A&&A!=e){for(;!A.hasMeshContent&&A.childrenTiles[0];)A=A.childrenTiles[0];t.push(A)}}),t}calculateDistanceToCamera(e){return this.boundingVolume instanceof ye?(Ae.copy(this.boundingVolume.sphere),Ae.applyMatrix4(this.matrixWorld)):this.boundingVolume instanceof R.Sphere?(Ae.copy(this.boundingVolume),Ae.applyMatrix4(this.matrixWorld)):console.error("unsupported shape"),Math.max(0,e.position.distanceTo(Ae.center)-Ae.radius)}getWorldMatrix(){return this.matrixWorld}transformWGS84ToCartesian(e,t,a,A){const r=6378137/Math.sqrt(1-.006694384442042*Math.pow(Math.sin(t),2)),i=Math.cos(t),o=Math.cos(e),l=Math.sin(t),h=r+a,g=h*i*o,f=h*i*Math.sin(e),u=(.993305615557957*r+a)*l;A.set(g,f,u)}}class ni extends R.Object3D{constructor(e){super(),e.master=this,e.domWidth&&e.domHeight?this.rendererSize=new R.Vector2(e.domWidth,e.domHeight):this.rendererSize=new R.Vector2(1e3,1e3),this.renderer=e.renderer,this.distanceBias=Math.max(1e-4,e.distanceBias?e.distanceBias:1),this.geometricErrorMultiplier=e.geometricErrorMultiplier?e.geometricErrorMultiplier:1,this.tileset=new Ut(e),e.static&&(this.matrixAutoUpdate=!1),this.tileLoader=e.tileLoader}_renderSize(e){this.renderer?this.renderer.getDrawingBufferSize(e):e.copy(this.rendererSize)}setCanvasSize(e,t){this.rendererSize.set(e,t)}update(e,t){if(t)this.tileset._update(e,t);else{const a=new R.Frustum;a.setFromProjectionMatrix(new R.Matrix4().multiplyMatrices(e.projectionMatrix,e.matrixWorldInverse)),this.tileset._update(e,a)}}setGeometricErrorMultiplier(e){this.geometricErrorMultiplier=e||1}}class oi{constructor(e){const t=this;t.scene=e,t.instancedTiles=[],t.instancedMesh,t.reuseableMatrix=new R.Matrix4}addInstance(e){const t=this;e.added=!0,e.listOMesh=t.instancedTiles,t.instancedTiles.push(e),t.instancedMesh&&e.loadMesh(t.instancedMesh)}addToScene(){const e=this;e.instancedMesh.setMatrixAt(0,new R.Matrix4),e.instancedMesh.instanceMatrix.needsUpdate=!0,e.instancedMesh.count=1,e.scene.add(e.instancedMesh),e.instancedMesh.onAfterRender=()=>{delete e.instancedMesh.onAfterRender,e.instancedMesh.displayedOnce=!0}}setObject(e){const t=this;t.instancedMesh=e,t.instancedMesh.matrixAutoUpdate=!1,t.instancedMesh.matrixWorldAutoUpdate=!1,t.scene.children.includes(e)||this.addToScene();for(let a=0;a<t.instancedTiles.length;a++)t.instancedTiles[a].loadMesh(t.instancedMesh)}update(){const e=this;for(let t=e.instancedTiles.length-1;t>=0;t--)e.instancedTiles[t].deleted&&e.instancedTiles.splice(t,1);if(e.instancedMesh){e.instancedMesh.count=0,e.instancedMesh.instancedTiles=[];for(let t=0;t<e.instancedTiles.length;t++)e.instancedTiles[t].meshContent.add(e.instancedMesh),e.instancedTiles[t].materialVisibility&&(e.instancedMesh.count++,e.reuseableMatrix.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),e.reuseableMatrix.multiply(e.instancedTiles[t].matrixWorld),e.reuseableMatrix.multiply(e.instancedMesh.baseMatrix),e.instancedMesh.setMatrixAt(e.instancedMesh.count-1,e.reuseableMatrix),e.instancedMesh.instancedTiles.push(e.instancedTiles[t]));e.instancedMesh.instanceMatrix.needsUpdate=!0,e.instancedMesh.needsUpdate=!0,e.instancedMesh.computeBoundingSphere()}}getCount(){return this.instancedTiles.length}dispose(){const e=this;return!(e.instancedTiles.length>0)&&!!e.instancedMesh&&(e.scene.remove(e.instancedMesh),e.instancedMesh.traverse(t=>{if(t.dispose&&t.dispose(),t.material)if(t.material.length)for(let a=0;a<t.material.length;++a)t.material[a].dispose();else t.material.dispose();t.geometry&&t.geometry.dispose()}),e.instancedMesh.dispose(),!0)}}class ci{constructor(){const e=this;e.count=0,e.json,e.instancedTiles=[]}addInstance(e){this.instancedTiles.push(e),this.json&&e.loadJson(this.json,this.url)}setObject(e,t){const a=this;a.json=e,a.url=t;for(let A=0;A<a.instancedTiles.length;A++)a.instancedTiles[A].loadJson(a.json,a.url)}getCount(){return this.instancedTiles.length}update(){const e=this;for(let t=e.instancedTiles.length-1;t>=0;t--)e.instancedTiles[t].deleted&&e.instancedTiles.splice(t,1)}dispose(){return!(!this.json||this.instancedTiles.length!=0)}}let Ge=0;async function di(n){return new Promise(e=>{const t=setInterval(()=>{n.hasDracoLoader&&!n.dracoLoader||n.hasKTX2Loader&&!n.ktx2Loader||(clearInterval(t),e())},10)})}exports.InstancedOGC3DTile=ni,exports.InstancedTileLoader=class{constructor(n,e){if(this.zUpToYUpMatrix=new R.Matrix4,this.zUpToYUpMatrix.set(1,0,0,0,0,0,-1,0,0,1,0,0,0,0,0,1),this.maxCachedItems=100,this.maxInstances=1,this.proxy=e.proxy,e&&(this.meshCallback=e.meshCallback,this.pointsCallback=e.pointsCallback,e.maxCachedItems&&(this.maxCachedItems=e.maxCachedItems),e.maxInstances&&(this.maxInstances=e.maxInstances)),this.gltfLoader=new pa,e&&e.dracoLoader)this.gltfLoader.setDRACOLoader(e.dracoLoader),this.hasDracoLoader=!0;else{const t=new Ca;t.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.4.3/"),this.gltfLoader.setDRACOLoader(t),this.gltfLoader.hasDracoLoader=!0}if(e&&e.ktx2Loader)this.gltfLoader.setKTX2Loader(e.ktx2Loader),this.hasKTX2Loader=!0;else if(e&&e.renderer){const t=new ie;t.setTranscoderPath("https://storage.googleapis.com/ogc-3d-tiles/basis/").detectSupport(e.renderer),this.gltfLoader.setKTX2Loader(t),this.gltfLoader.hasKTX2Loader=!0}this.gltfLoader.setMeshoptDecoder(Ua),this.hasMeshOptDecoder=!0,this.b3dmDecoder=new ua(this.gltfLoader),this.cache=new ga.LinkedHashMap,this.scene=n,this.ready=[],this.downloads=[],this.nextReady=[],this.nextDownloads=[]}update(){const n=this;n._checkSize(),n.cache._data.forEach(e=>{e.update()}),Ge<8&&n._download(),n._loadBatch()}_download(){const n=this;if(n.nextDownloads.length!=0||(n._getNextDownloads(),n.nextDownloads.length!=0))for(;n.nextDownloads.length>0;){const t=n.nextDownloads.shift();if(t){if(t.path.includes(".b3dm")&&(e=n.proxy?()=>fetch(n.proxy,{method:"POST",body:t.path}):()=>fetch(t.path),Ge++,e().then(a=>{if(!a.ok)throw console.error("could not load tile with path : "+t.path),new Error(`couldn't load "${t.path}". Request failed with status ${a.status} : ${a.statusText}`);return a.arrayBuffer()}).then(a=>this.b3dmDecoder.parseB3DMInstanced(a,A=>{n.meshCallback(A,t.geometricError)},n.maxInstances,t.sceneZupToYup,t.meshZupToYup)).then(a=>{a.frustumCulled=!1,t.tile.setObject(a),n.ready.unshift(t)}).catch(a=>console.error(a)).finally(()=>{Ge--})),t.path.includes(".glb")||t.path.includes(".gltf"))e=n.proxy?()=>fetch(n.proxy,{method:"POST",body:t.path}):()=>fetch(t.path),Ge++,e().then(a=>{if(!a.ok)throw new Error("missing content");return a.arrayBuffer()}).then(async a=>{await di(this.gltfLoader),this.gltfLoader.parse(a,null,A=>{let r;A.scene.asset=A.asset,t.sceneZupToYup&&A.scene.applyMatrix4(this.zUpToYUpMatrix),A.scene.traverse(i=>{i.geometricError=t.geometricError,i.isMesh&&(t.meshZupToYup&&i.applyMatrix4(this.zUpToYUpMatrix),n.meshCallback&&n.meshCallback(i,i.geometricError)),i.isPoints&&console.error("instanced point cloud is not supported")}),A.scene.updateWorldMatrix(!1,!0),A.scene.traverse(i=>{i.isMesh&&(r=new R.InstancedMesh(i.geometry,i.material,n.maxInstances),r.baseMatrix=i.matrixWorld)}),n.ready.unshift(t),r?(r.frustumCulled=!1,t.tile.setObject(r)):A.scene.traverse(i=>{i.dispose&&i.dispose(),i.material&&i.material.dispose()})})},a=>{console.error("could not load tile : "+t.path)}).finally(()=>{Ge--});else if(t.path.includes(".json")){var e;e=n.proxy?()=>fetch(n.proxy,{method:"POST",body:t.path}):()=>fetch(t.path),Ge++,e().then(a=>{if(!a.ok)throw console.error("could not load tile with path : "+t.path),new Error(`couldn't load "${t.path}". Request failed with status ${a.status} : ${a.statusText}`);return a.json()}).then(a=>vt(a,t.path)).then(a=>{t.tile.setObject(a,t.path),n.ready.unshift(t)}).catch(a=>console.error(a)).finally(()=>{Ge--})}}}}_loadBatch(){return this.nextReady.length==0&&(this._getNextReady(),this.nextReady.length==0)?0:this.nextReady.shift()?1:0}_getNextReady(){let n=Number.MAX_VALUE,e=-1;for(let t=this.ready.length-1;t>=0;t--)this.ready[t].distanceFunction||this.nextReady.push(this.ready.splice(t,1)[0]);if(!(this.nextReady.length>0)){for(let t=this.ready.length-1;t>=0;t--){const a=this.ready[t].distanceFunction()*this.ready[t].level;a<n&&(n=a,e=t)}if(e>=0){const t=this.ready.splice(e,1).pop();this.nextReady.push(t);const a=t.getSiblings();for(let A=this.ready.length-1;A>=0;A--)a.includes(this.ready[A].uuid)&&this.nextready.push(this.ready.splice(A,1).pop())}}}get(n,e,t,a,A,r,i,o,l,h){const g=this,f=function(I){for(var p=I.split("/"),B=[],m=0,E=0;E<p.length;E++){var Q=p[E];Q!=="."&&Q!==""&&Q!==".."?B[m++]=Q:Q===".."&&m>0&&m--}if(m===0)return"/";var k="";for(E=0;E<m;E++)k+="/"+B[E];return k}(e);if(!(e.includes(".b3dm")||e.includes(".json")||e.includes(".glb")||e.includes(".gltf")))return void console.error("the 3DTiles cache can only be used to load B3DM, gltf and json data");const u=g.cache.get(f);if(u)u.addInstance(a);else if(e.includes(".b3dm")||e.includes(".glb")||e.includes(".gltf")){const I=new oi(g.scene);I.addInstance(a),g.cache.put(f,I);const p=new AbortController;n.signal.addEventListener("abort",()=>{I.getCount()==0&&p.abort()}),this.downloads.push({abortController:p,tile:I,key:f,path:e,distanceFunction:A,getSiblings:r,level:i,uuid:t,sceneZupToYup:o,meshZupToYup:l,geometricError:h,shouldDoDownload:()=>!0})}else if(e.includes(".json")){const I=new ci;I.addInstance(a),g.cache.put(f,I);const p=new AbortController;n.signal.addEventListener("abort",()=>{I.getCount()==0&&p.abort()}),this.downloads.push({abortController:p,tile:I,key:f,path:e,distanceFunction:A,getSiblings:r,level:i,shouldDoDownload:()=>!0})}}_getNextDownloads(){let n=Number.MAX_VALUE,e=-1;for(let t=this.downloads.length-1;t>=0;t--){const a=this.downloads[t];a.shouldDoDownload()?a.distanceFunction||this.nextDownloads.push(this.downloads.splice(t,1)[0]):this.downloads.splice(t,1)}if(!(this.nextDownloads.length>0)){for(let t=this.downloads.length-1;t>=0;t--){const a=this.downloads[t],A=a.distanceFunction()*a.level;A<n&&(n=A,e=t)}if(e>=0){const t=this.downloads.splice(e,1).pop();this.nextDownloads.push(t);const a=t.getSiblings();for(let A=this.downloads.length-1;A>=0;A--)a.includes(this.downloads[A].uuid)&&this.nextDownloads.push(this.downloads.splice(A,1).pop())}}}_checkSize(){const n=this;let e=0;for(;n.cache.size()>n.maxCachedItems&&e<n.cache.size();){e++;const t=n.cache.head();n.cache.remove(t.key),t.value.dispose()||n.cache.put(t.key,t.value)}}},exports.OGC3DTile=Lt,exports.OcclusionCullingService=class{constructor(){this.cullMap=[],this.cullMaterial=new R.MeshBasicMaterial({vertexColors:!0}),this.cullMaterial.side=R.FrontSide,this.cullTarget=this._createCullTarget(),this.cullPixels=new Uint8Array(4*this.cullTarget.width*this.cullTarget.height)}setSide(n){this.cullMaterial.side=n}_createCullTarget(){const n=new R.WebGLRenderTarget(Math.floor(.05*window.innerWidth),Math.floor(.05*window.innerHeight));return n.texture.format=R.RGBAFormat,n.texture.colorSpace=R.LinearSRGBColorSpace,n.texture.minFilter=R.NearestFilter,n.texture.magFilter=R.NearestFilter,n.texture.generateMipmaps=!1,n.stencilBuffer=!1,n.depthBuffer=!0,n.depthTexture=new R.DepthTexture,n.depthTexture.format=R.DepthFormat,n.depthTexture.type=R.UnsignedShortType,n}update(n,e,t){let a=e.getRenderTarget(),A=n.overrideMaterial;n.overrideMaterial=this.cullMaterial,e.setRenderTarget(this.cullTarget),e.render(n,t),n.overrideMaterial=A,e.setRenderTarget(a),e.readRenderTargetPixels(this.cullTarget,0,0,this.cullTarget.width,this.cullTarget.height,this.cullPixels),this.cullMap=[];for(let r=0;r<this.cullPixels.length;r+=4){const i=R.MathUtils.clamp(this.cullPixels[r],0,255)<<16^R.MathUtils.clamp(this.cullPixels[r+1],0,255)<<8^R.MathUtils.clamp(this.cullPixels[r+2],0,255);this.cullMap[i]=!0}}hasID(n){return this.cullMap[n]}},exports.TileLoader=Ga,exports.getOGC3DTilesCopyrightInfo=Ha;
211
206
  //# sourceMappingURL=threedtiles.cjs.js.map