@needle-tools/engine 5.1.9 → 5.1.11

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.
Files changed (105) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/SKILL.md +64 -4
  3. package/components.needle.json +1 -1
  4. package/dist/{needle-engine.bundle-CHq9xqXv.min.js → needle-engine.bundle-d-dLyN3s.min.js} +137 -136
  5. package/dist/{needle-engine.bundle-DYPk7VZg.umd.cjs → needle-engine.bundle-n5YALNtc.umd.cjs} +140 -139
  6. package/dist/{needle-engine.bundle-XZ6cKssu.js → needle-engine.bundle-ue2Lw4bF.js} +5267 -5101
  7. package/dist/needle-engine.d.ts +138 -26
  8. package/dist/needle-engine.js +522 -518
  9. package/dist/needle-engine.min.js +1 -1
  10. package/dist/needle-engine.umd.cjs +1 -1
  11. package/dist/three-examples.js +727 -781
  12. package/dist/three-examples.min.js +12 -12
  13. package/dist/three-examples.umd.cjs +9 -9
  14. package/lib/engine/api.d.ts +1 -1
  15. package/lib/engine/api.js +1 -1
  16. package/lib/engine/api.js.map +1 -1
  17. package/lib/engine/engine_init.js +2 -2
  18. package/lib/engine/engine_init.js.map +1 -1
  19. package/lib/engine/engine_license.d.ts +7 -7
  20. package/lib/engine/engine_license.js +71 -71
  21. package/lib/engine/engine_license.js.map +1 -1
  22. package/lib/engine/engine_materialpropertyblock.d.ts +13 -4
  23. package/lib/engine/engine_materialpropertyblock.js +16 -5
  24. package/lib/engine/engine_materialpropertyblock.js.map +1 -1
  25. package/lib/engine/engine_math.d.ts +13 -0
  26. package/lib/engine/engine_math.js +17 -0
  27. package/lib/engine/engine_math.js.map +1 -1
  28. package/lib/engine/engine_networking_blob.js +3 -3
  29. package/lib/engine/engine_networking_blob.js.map +1 -1
  30. package/lib/engine/engine_utils_qrcode.js +2 -2
  31. package/lib/engine/engine_utils_qrcode.js.map +1 -1
  32. package/lib/engine/postprocessing/postprocessing.d.ts +18 -0
  33. package/lib/engine/postprocessing/postprocessing.js +31 -2
  34. package/lib/engine/postprocessing/postprocessing.js.map +1 -1
  35. package/lib/engine/webcomponents/needle menu/needle-menu-spatial.js +2 -2
  36. package/lib/engine/webcomponents/needle menu/needle-menu-spatial.js.map +1 -1
  37. package/lib/engine/webcomponents/needle menu/needle-menu.js +5 -5
  38. package/lib/engine/webcomponents/needle menu/needle-menu.js.map +1 -1
  39. package/lib/engine/webcomponents/needle-engine.js +2 -2
  40. package/lib/engine/webcomponents/needle-engine.js.map +1 -1
  41. package/lib/engine/webcomponents/needle-engine.loading.js +2 -2
  42. package/lib/engine/webcomponents/needle-engine.loading.js.map +1 -1
  43. package/lib/engine/xr/TempXRContext.js +2 -2
  44. package/lib/engine/xr/TempXRContext.js.map +1 -1
  45. package/lib/engine/xr/XRHandMeshModel.d.ts +31 -0
  46. package/lib/engine/xr/XRHandMeshModel.js +153 -0
  47. package/lib/engine/xr/XRHandMeshModel.js.map +1 -0
  48. package/lib/engine-components/DragControls.d.ts +0 -5
  49. package/lib/engine-components/DragControls.js +0 -8
  50. package/lib/engine-components/DragControls.js.map +1 -1
  51. package/lib/engine-components/ReflectionProbe.js +3 -3
  52. package/lib/engine-components/ReflectionProbe.js.map +1 -1
  53. package/lib/engine-components/RendererInstancing.d.ts +34 -3
  54. package/lib/engine-components/RendererInstancing.js +92 -11
  55. package/lib/engine-components/RendererInstancing.js.map +1 -1
  56. package/lib/engine-components/RendererLightmap.js +1 -1
  57. package/lib/engine-components/RendererLightmap.js.map +1 -1
  58. package/lib/engine-components/SyncedRoom.js +5 -0
  59. package/lib/engine-components/SyncedRoom.js.map +1 -1
  60. package/lib/engine-components/export/usdz/USDZExporter.js +4 -4
  61. package/lib/engine-components/export/usdz/USDZExporter.js.map +1 -1
  62. package/lib/engine-components/postprocessing/Effects/DepthOfField.js +10 -2
  63. package/lib/engine-components/postprocessing/Effects/DepthOfField.js.map +1 -1
  64. package/lib/engine-components/postprocessing/index.d.ts +4 -0
  65. package/lib/engine-components/postprocessing/index.js +7 -0
  66. package/lib/engine-components/postprocessing/index.js.map +1 -1
  67. package/lib/engine-components/splines/SplineWalker.js +9 -3
  68. package/lib/engine-components/splines/SplineWalker.js.map +1 -1
  69. package/lib/engine-components/utils/LookAt.d.ts +13 -4
  70. package/lib/engine-components/utils/LookAt.js +13 -4
  71. package/lib/engine-components/utils/LookAt.js.map +1 -1
  72. package/lib/engine-components/webxr/WebXR.js +1 -1
  73. package/lib/engine-components/webxr/WebXR.js.map +1 -1
  74. package/lib/engine-components/webxr/controllers/XRControllerModel.d.ts +1 -1
  75. package/lib/engine-components/webxr/controllers/XRControllerModel.js +12 -7
  76. package/lib/engine-components/webxr/controllers/XRControllerModel.js.map +1 -1
  77. package/package.json +2 -2
  78. package/plugins/common/license.js +4 -4
  79. package/plugins/vite/license.js +4 -4
  80. package/src/engine/api.ts +1 -1
  81. package/src/engine/engine_init.ts +2 -2
  82. package/src/engine/engine_license.ts +68 -68
  83. package/src/engine/engine_materialpropertyblock.ts +17 -5
  84. package/src/engine/engine_math.ts +17 -0
  85. package/src/engine/engine_networking_blob.ts +3 -3
  86. package/src/engine/engine_utils_qrcode.ts +2 -2
  87. package/src/engine/postprocessing/postprocessing.ts +32 -2
  88. package/src/engine/webcomponents/needle menu/needle-menu-spatial.ts +2 -2
  89. package/src/engine/webcomponents/needle menu/needle-menu.ts +5 -5
  90. package/src/engine/webcomponents/needle-engine.loading.ts +6 -6
  91. package/src/engine/webcomponents/needle-engine.ts +2 -2
  92. package/src/engine/xr/TempXRContext.ts +2 -2
  93. package/src/engine/xr/XRHandMeshModel.ts +179 -0
  94. package/src/engine-components/DragControls.ts +0 -7
  95. package/src/engine-components/ReflectionProbe.ts +3 -3
  96. package/src/engine-components/RendererInstancing.ts +92 -11
  97. package/src/engine-components/RendererLightmap.ts +1 -1
  98. package/src/engine-components/SyncedRoom.ts +5 -0
  99. package/src/engine-components/export/usdz/USDZExporter.ts +4 -4
  100. package/src/engine-components/postprocessing/Effects/DepthOfField.ts +10 -2
  101. package/src/engine-components/postprocessing/index.ts +7 -0
  102. package/src/engine-components/splines/SplineWalker.ts +9 -3
  103. package/src/engine-components/utils/LookAt.ts +13 -4
  104. package/src/engine-components/webxr/WebXR.ts +1 -1
  105. package/src/engine-components/webxr/controllers/XRControllerModel.ts +13 -7
@@ -1,11 +1,11 @@
1
- import{Mesh as K,SphereGeometry as Bi,Vector3 as N,MeshBasicMaterial as Qe,TrianglesDrawMode as ga,TriangleFanDrawMode as Ci,TriangleStripDrawMode as ks,BufferAttribute as LA,Float32BufferAttribute as FA,InstancedBufferAttribute as Ei,InterleavedBuffer as Ms,InterleavedBufferAttribute as Pe,BufferGeometry as oe,Loader as Re,LoaderUtils as ze,FileLoader as Be,MeshPhysicalMaterial as fe,Vector2 as UA,Color as DA,LinearSRGBColorSpace as WA,SRGBColorSpace as lA,SpotLight as Gs,PointLight as di,DirectionalLight as Ts,Matrix4 as hA,InstancedMesh as ca,Quaternion as SA,Object3D as me,TextureLoader as ui,ImageBitmapLoader as la,LinearMipmapLinearFilter as It,NearestMipmapLinearFilter as Ns,LinearMipmapNearestFilter as Ls,NearestMipmapNearestFilter as pi,LinearFilter as ne,NearestFilter as _t,RepeatWrapping as Ve,MirroredRepeatWrapping as Us,ClampToEdgeWrapping as Pt,PointsMaterial as Bt,Material as Ct,LineBasicMaterial as Fe,MeshStandardMaterial as Qi,DoubleSide as fi,PropertyBinding as ke,SkinnedMesh as _s,LineSegments as Ht,Line as Ce,LineLoop as ha,Points as qt,Group as Xe,PerspectiveCamera as Ot,MathUtils as bA,OrthographicCamera as Ps,Skeleton as Hs,AnimationClip as qs,Bone as mi,InterpolateDiscrete as Os,InterpolateLinear as bi,Texture as wi,VectorKeyframeTrack as yi,NumberKeyframeTrack as Di,QuaternionKeyframeTrack as Si,ColorManagement as ZA,FrontSide as Ks,Interpolant as Ia,Box3 as Kt,Sphere as vi,CompressedCubeTexture as Ba,CompressedArrayTexture as Ca,CompressedTexture as Et,NoColorSpace as Yt,RGBA_BPTC_Format as xi,RGBA_S3TC_DXT5_Format as Ri,RGBA_S3TC_DXT3_Format as Ys,RGB_S3TC_DXT1_Format as Js,RGBA_S3TC_DXT1_Format as Fi,RGBA_ASTC_6x6_Format as js,RGBA_ASTC_4x4_Format as Jt,RGBA_ETC2_EAC_Format as zs,RGB_ETC2_Format as Vs,RGBFormat as ki,RedFormat as it,RGFormat as dt,RGBAFormat as He,UnsignedByteType as Ee,HalfFloatType as $A,UnsignedInt101111Type as Xs,UnsignedInt5999Type as Ws,FloatType as de,DataTexture as Ea,Data3DTexture as da,RGB_PVRTC_4BPPV1_Format as ua,RGB_ETC1_Format as pa,RGBA_PVRTC_4BPPV1_Format as Qa,RGB_BPTC_UNSIGNED_Format as fa,NodeFrame as ma,ShaderLib as be,ExtrudeGeometry as ba,ShapePath as wa,DataTextureLoader as Zs,DataUtils as st,CylinderGeometry as Ae,BoxGeometry as jA,OctahedronGeometry as jt,TorusGeometry as ut,Euler as qe,Controls as $s,Raycaster as Mi,PlaneGeometry as Gi,MOUSE as ot,TOUCH as nt,Spherical as Ao,Ray as ya,Plane as Da,ShaderMaterial as eo,Uniform$1 as Sa,Scene as Ti,WebGLRenderer as va,CanvasTexture as to,REVISION as xa,Source as Ra,InstancedBufferGeometry as Fa,InstancedInterleavedBuffer as Ni,WireframeGeometry as ka,UniformsUtils as io,UniformsLib as zt,Vector4 as Me,Line3 as Ma,Matrix3 as so,Curve as Ga,MeshPhongMaterial as pt,MeshLambertMaterial as Ta,EquirectangularReflectionMapping as Na,AmbientLight as La,Uint16BufferAttribute as Ua,ShapeUtils as _a,DefaultLoadingManager as Pa}from"./three-core.min.js";class Ha extends K{constructor(A,e,i,t=128){if(e<=0||i<=0||t<=0)throw new Error("GroundedSkybox height, radius, and resolution must be positive.");const s=new Bi(i,2*t,t);s.scale(1,1,-1);const o=s.getAttribute("position"),a=new N;for(let r=0;r<o.count;++r)if(a.fromBufferAttribute(o,r),a.y<0){const l=-e*3/2,g=a.y<l?-e/a.y:1-a.y*a.y/(3*l*l);a.multiplyScalar(g),a.toArray(o.array,3*r)}o.needsUpdate=!0,super(s,new Qe({map:A,depthWrite:!1}))}}function qa(n,A,e=!0){if(!A||!A.isReady)throw new Error("BufferGeometryUtils: Initialized MikkTSpace library required.");if(!n.hasAttribute("position")||!n.hasAttribute("normal")||!n.hasAttribute("uv"))throw new Error('BufferGeometryUtils: Tangents require "position", "normal", and "uv" attributes.');function i(o){if(o.normalized||o.isInterleavedBufferAttribute){const a=new Float32Array(o.count*o.itemSize);for(let r=0,l=0;r<o.count;r++)a[l++]=o.getX(r),a[l++]=o.getY(r),o.itemSize>2&&(a[l++]=o.getZ(r));return a}return o.array instanceof Float32Array?o.array:new Float32Array(o.array)}const t=n.index?n.toNonIndexed():n,s=A.generateTangents(i(t.attributes.position),i(t.attributes.normal),i(t.attributes.uv));if(e)for(let o=3;o<s.length;o+=4)s[o]*=-1;return t.setAttribute("tangent",new LA(s,4)),n!==t&&n.copy(t),n}function Oa(n,A=!1){const e=n[0].index!==null,i=new Set(Object.keys(n[0].attributes)),t=new Set(Object.keys(n[0].morphAttributes)),s={},o={},a=n[0].morphTargetsRelative,r=new oe;let l=0;for(let g=0;g<n.length;++g){const c=n[g];let I=0;if(e!==(c.index!==null))return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+g+". All geometries must have compatible attributes; make sure index attribute exists among all geometries, or in none of them."),null;for(const B in c.attributes){if(!i.has(B))return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+g+'. All geometries must have compatible attributes; make sure "'+B+'" attribute exists among all geometries, or in none of them.'),null;s[B]===void 0&&(s[B]=[]),s[B].push(c.attributes[B]),I++}if(I!==i.size)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+g+". Make sure all geometries have the same number of attributes."),null;if(a!==c.morphTargetsRelative)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+g+". .morphTargetsRelative must be consistent throughout all geometries."),null;for(const B in c.morphAttributes){if(!t.has(B))return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+g+". .morphAttributes must be consistent throughout all geometries."),null;o[B]===void 0&&(o[B]=[]),o[B].push(c.morphAttributes[B])}if(A){let B;if(e)B=c.index.count;else if(c.attributes.position!==void 0)B=c.attributes.position.count;else return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+g+". The geometry must have either an index or a position attribute"),null;r.addGroup(l,B,g),l+=B}}if(e){let g=0;const c=[];for(let I=0;I<n.length;++I){const B=n[I].index;for(let C=0;C<B.count;++C)c.push(B.getX(C)+g);g+=n[I].attributes.position.count}r.setIndex(c)}for(const g in s){const c=Li(s[g]);if(!c)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed while trying to merge the "+g+" attribute."),null;r.setAttribute(g,c)}for(const g in o){const c=o[g][0].length;if(c===0)break;r.morphAttributes=r.morphAttributes||{},r.morphAttributes[g]=[];for(let I=0;I<c;++I){const B=[];for(let d=0;d<o[g].length;++d)B.push(o[g][d][I]);const C=Li(B);if(!C)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed while trying to merge the "+g+" morphAttribute."),null;r.morphAttributes[g].push(C)}}return r}function Li(n){let A,e,i,t=-1,s=0;for(let l=0;l<n.length;++l){const g=n[l];if(A===void 0&&(A=g.array.constructor),A!==g.array.constructor)return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.array must be of consistent array types across matching attributes."),null;if(e===void 0&&(e=g.itemSize),e!==g.itemSize)return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.itemSize must be consistent across matching attributes."),null;if(i===void 0&&(i=g.normalized),i!==g.normalized)return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.normalized must be consistent across matching attributes."),null;if(t===-1&&(t=g.gpuType),t!==g.gpuType)return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.gpuType must be consistent across matching attributes."),null;s+=g.count*e}const o=new A(s),a=new LA(o,e,i);let r=0;for(let l=0;l<n.length;++l){const g=n[l];if(g.isInterleavedBufferAttribute){const c=r/e;for(let I=0,B=g.count;I<B;I++)for(let C=0;C<e;C++){const d=g.getComponent(I,C);a.setComponent(I+c,C,d)}}else o.set(g.array,r);r+=g.count*e}return t!==void 0&&(a.gpuType=t),a}function Ka(n){return n.isInstancedInterleavedBufferAttribute||n.isInterleavedBufferAttribute?Vt(n):n.isInstancedBufferAttribute?new Ei().copy(n):new LA().copy(n)}function Ya(n){let A,e=0,i=0;for(let l=0,g=n.length;l<g;++l){const c=n[l];if(A===void 0&&(A=c.array.constructor),A!==c.array.constructor)return console.error("AttributeBuffers of different types cannot be interleaved"),null;e+=c.array.length,i+=c.itemSize}const t=new Ms(new A(e),i);let s=0;const o=[],a=["getX","getY","getZ","getW"],r=["setX","setY","setZ","setW"];for(let l=0,g=n.length;l<g;l++){const c=n[l],I=c.itemSize,B=c.count,C=new Pe(t,I,s,c.normalized);o.push(C),s+=I;for(let d=0;d<B;d++)for(let E=0;E<I;E++)C[r[E]](d,c[a[E]](d))}return o}function Vt(n){const A=n.data.array.constructor,e=n.count,i=n.itemSize,t=n.normalized,s=new A(e*i);let o;n.isInstancedInterleavedBufferAttribute?o=new Ei(s,i,t,n.meshPerAttribute):o=new LA(s,i,t);for(let a=0;a<e;a++)o.setX(a,n.getX(a)),i>=2&&o.setY(a,n.getY(a)),i>=3&&o.setZ(a,n.getZ(a)),i>=4&&o.setW(a,n.getW(a));return o}function Ja(n){const A=n.attributes,e=n.morphTargets,i=new Map;for(const t in A){const s=A[t];s.isInterleavedBufferAttribute&&(i.has(s)||i.set(s,Vt(s)),A[t]=i.get(s))}for(const t in e){const s=e[t];s.isInterleavedBufferAttribute&&(i.has(s)||i.set(s,Vt(s)),e[t]=i.get(s))}}function ja(n){let A=0;for(const i in n.attributes){const t=n.getAttribute(i);A+=t.count*t.itemSize*t.array.BYTES_PER_ELEMENT}const e=n.getIndex();return A+=e?e.count*e.itemSize*e.array.BYTES_PER_ELEMENT:0,A}function oo(n,A=1e-4){A=Math.max(A,Number.EPSILON);const e={},i=n.getIndex(),t=n.getAttribute("position"),s=i?i.count:t.count;let o=0;const a=Object.keys(n.attributes),r={},l={},g=[],c=["getX","getY","getZ","getW"],I=["setX","setY","setZ","setW"];for(let f=0,Q=a.length;f<Q;f++){const w=a[f],b=n.attributes[w];r[w]=new b.constructor(new b.array.constructor(b.count*b.itemSize),b.itemSize,b.normalized);const S=n.morphAttributes[w];S&&(l[w]||(l[w]=[]),S.forEach((x,D)=>{const F=new x.array.constructor(x.count*x.itemSize);l[w][D]=new x.constructor(F,x.itemSize,x.normalized)}))}const B=A*.5,C=Math.log10(1/A),d=Math.pow(10,C),E=B*d;for(let f=0;f<s;f++){const Q=i?i.getX(f):f;let w="";for(let b=0,S=a.length;b<S;b++){const x=a[b],D=n.getAttribute(x),F=D.itemSize;for(let P=0;P<F;P++)w+=`${~~(D[c[P]](Q)*d+E)},`}if(w in e)g.push(e[w]);else{for(let b=0,S=a.length;b<S;b++){const x=a[b],D=n.getAttribute(x),F=n.morphAttributes[x],P=D.itemSize,Y=r[x],O=l[x];for(let X=0;X<P;X++){const _=c[X],W=I[X];if(Y[W](o,D[_](Q)),F)for(let j=0,AA=F.length;j<AA;j++)O[j][W](o,F[j][_](Q))}}e[w]=o,g.push(o),o++}}const p=n.clone();for(const f in n.attributes){const Q=r[f];if(p.setAttribute(f,new Q.constructor(Q.array.slice(0,o*Q.itemSize),Q.itemSize,Q.normalized)),f in l)for(let w=0;w<l[f].length;w++){const b=l[f][w];p.morphAttributes[f][w]=new b.constructor(b.array.slice(0,o*b.itemSize),b.itemSize,b.normalized)}}return p.setIndex(g),p}function Ui(n,A){if(A===ga)return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."),n;if(A===Ci||A===ks){let e=n.getIndex();if(e===null){const o=[],a=n.getAttribute("position");if(a!==void 0){for(let r=0;r<a.count;r++)o.push(r);n.setIndex(o),e=n.getIndex()}else return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),n}const i=e.count-2,t=[];if(A===Ci)for(let o=1;o<=i;o++)t.push(e.getX(0)),t.push(e.getX(o)),t.push(e.getX(o+1));else for(let o=0;o<i;o++)o%2===0?(t.push(e.getX(o)),t.push(e.getX(o+1)),t.push(e.getX(o+2))):(t.push(e.getX(o+2)),t.push(e.getX(o+1)),t.push(e.getX(o)));t.length/3!==i&&console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");const s=n.clone();return s.setIndex(t),s.clearGroups(),s}else return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:",A),n}function za(n){const A=new N,e=new N,i=new N,t=new N,s=new N,o=new N,a=new N,r=new N,l=new N;function g(cA,yA,eA,sA,nA,CA,gA,uA){A.fromBufferAttribute(yA,nA),e.fromBufferAttribute(yA,CA),i.fromBufferAttribute(yA,gA);const Ie=cA.morphTargetInfluences;if(eA&&Ie){a.set(0,0,0),r.set(0,0,0),l.set(0,0,0);for(let ie=0,Ue=eA.length;ie<Ue;ie++){const pA=Ie[ie],vA=eA[ie];pA!==0&&(t.fromBufferAttribute(vA,nA),s.fromBufferAttribute(vA,CA),o.fromBufferAttribute(vA,gA),sA?(a.addScaledVector(t,pA),r.addScaledVector(s,pA),l.addScaledVector(o,pA)):(a.addScaledVector(t.sub(A),pA),r.addScaledVector(s.sub(e),pA),l.addScaledVector(o.sub(i),pA)))}A.add(a),e.add(r),i.add(l)}cA.isSkinnedMesh&&(cA.applyBoneTransform(nA,A),cA.applyBoneTransform(CA,e),cA.applyBoneTransform(gA,i)),uA[nA*3+0]=A.x,uA[nA*3+1]=A.y,uA[nA*3+2]=A.z,uA[CA*3+0]=e.x,uA[CA*3+1]=e.y,uA[CA*3+2]=e.z,uA[gA*3+0]=i.x,uA[gA*3+1]=i.y,uA[gA*3+2]=i.z}const c=n.geometry,I=n.material;let B,C,d;const E=c.index,p=c.attributes.position,f=c.morphAttributes.position,Q=c.morphTargetsRelative,w=c.attributes.normal,b=c.morphAttributes.position,S=c.groups,x=c.drawRange;let D,F,P,Y,O,X,_;const W=new Float32Array(p.count*p.itemSize),j=new Float32Array(w.count*w.itemSize);if(E!==null)if(Array.isArray(I))for(D=0,P=S.length;D<P;D++)for(O=S[D],X=Math.max(O.start,x.start),_=Math.min(O.start+O.count,x.start+x.count),F=X,Y=_;F<Y;F+=3)B=E.getX(F),C=E.getX(F+1),d=E.getX(F+2),g(n,p,f,Q,B,C,d,W),g(n,w,b,Q,B,C,d,j);else for(X=Math.max(0,x.start),_=Math.min(E.count,x.start+x.count),D=X,P=_;D<P;D+=3)B=E.getX(D),C=E.getX(D+1),d=E.getX(D+2),g(n,p,f,Q,B,C,d,W),g(n,w,b,Q,B,C,d,j);else if(Array.isArray(I))for(D=0,P=S.length;D<P;D++)for(O=S[D],X=Math.max(O.start,x.start),_=Math.min(O.start+O.count,x.start+x.count),F=X,Y=_;F<Y;F+=3)B=F,C=F+1,d=F+2,g(n,p,f,Q,B,C,d,W),g(n,w,b,Q,B,C,d,j);else for(X=Math.max(0,x.start),_=Math.min(p.count,x.start+x.count),D=X,P=_;D<P;D+=3)B=D,C=D+1,d=D+2,g(n,p,f,Q,B,C,d,W),g(n,w,b,Q,B,C,d,j);const AA=new FA(W,3),Z=new FA(j,3);return{positionAttribute:p,normalAttribute:w,morphedPositionAttribute:AA,morphedNormalAttribute:Z}}function Va(n){if(n.groups.length===0)return console.warn("THREE.BufferGeometryUtils.mergeGroups(): No groups are defined. Nothing to merge."),n;let A=n.groups;if(A=A.sort((o,a)=>o.materialIndex!==a.materialIndex?o.materialIndex-a.materialIndex:o.start-a.start),n.getIndex()===null){const o=n.getAttribute("position"),a=[];for(let r=0;r<o.count;r+=3)a.push(r,r+1,r+2);n.setIndex(a)}const e=n.getIndex(),i=[];for(let o=0;o<A.length;o++){const a=A[o],r=a.start,l=r+a.count;for(let g=r;g<l;g++)i.push(e.getX(g))}n.dispose(),n.setIndex(i);let t=0;for(let o=0;o<A.length;o++){const a=A[o];a.start=t,t+=a.count}let s=A[0];n.groups=[s];for(let o=1;o<A.length;o++){const a=A[o];s.materialIndex===a.materialIndex?s.count+=a.count:(s=a,n.groups.push(s))}return n}function Xa(n,A=Math.PI/3){const e=Math.cos(A),i=(1+1e-10)*100,t=[new N,new N,new N],s=new N,o=new N,a=new N,r=new N;function l(d){const E=~~(d.x*i),p=~~(d.y*i),f=~~(d.z*i);return`${E},${p},${f}`}const g=n.index?n.toNonIndexed():n,c=g.attributes.position,I={};for(let d=0,E=c.count/3;d<E;d++){const p=3*d,f=t[0].fromBufferAttribute(c,p+0),Q=t[1].fromBufferAttribute(c,p+1),w=t[2].fromBufferAttribute(c,p+2);s.subVectors(w,Q),o.subVectors(f,Q);const b=new N().crossVectors(s,o).normalize();for(let S=0;S<3;S++){const x=t[S],D=l(x);D in I||(I[D]=[]),I[D].push(b)}}const B=new Float32Array(c.count*3),C=new LA(B,3,!1);for(let d=0,E=c.count/3;d<E;d++){const p=3*d,f=t[0].fromBufferAttribute(c,p+0),Q=t[1].fromBufferAttribute(c,p+1),w=t[2].fromBufferAttribute(c,p+2);s.subVectors(w,Q),o.subVectors(f,Q),a.crossVectors(s,o).normalize();for(let b=0;b<3;b++){const S=t[b],x=l(S),D=I[x];r.set(0,0,0);for(let F=0,P=D.length;F<P;F++){const Y=D[F];a.dot(Y)>e&&r.add(Y)}r.normalize(),C.setXYZ(p+b,r.x,r.y,r.z)}}return g.setAttribute("normal",C),g}const Wa=Object.freeze(Object.defineProperty({__proto__:null,computeMikkTSpaceTangents:qa,computeMorphedAttributes:za,deepCloneAttribute:Ka,deinterleaveAttribute:Vt,deinterleaveGeometry:Ja,estimateBytesUsed:ja,interleaveAttributes:Ya,mergeAttributes:Li,mergeGeometries:Oa,mergeGroups:Va,mergeVertices:oo,toCreasedNormals:Xa,toTrianglesDrawMode:Ui},Symbol.toStringTag,{value:"Module"}));class _i extends Re{constructor(A){super(A),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(e){return new tr(e)}),this.register(function(e){return new ir(e)}),this.register(function(e){return new hr(e)}),this.register(function(e){return new Ir(e)}),this.register(function(e){return new Br(e)}),this.register(function(e){return new or(e)}),this.register(function(e){return new nr(e)}),this.register(function(e){return new ar(e)}),this.register(function(e){return new rr(e)}),this.register(function(e){return new er(e)}),this.register(function(e){return new gr(e)}),this.register(function(e){return new sr(e)}),this.register(function(e){return new lr(e)}),this.register(function(e){return new cr(e)}),this.register(function(e){return new $a(e)}),this.register(function(e){return new Cr(e)}),this.register(function(e){return new Er(e)})}load(A,e,i,t){const s=this;let o;if(this.resourcePath!=="")o=this.resourcePath;else if(this.path!==""){const l=ze.extractUrlBase(A);o=ze.resolveURL(l,this.path)}else o=ze.extractUrlBase(A);this.manager.itemStart(A);const a=function(l){t?t(l):console.error(l),s.manager.itemError(A),s.manager.itemEnd(A)},r=new Be(this.manager);r.setPath(this.path),r.setResponseType("arraybuffer"),r.setRequestHeader(this.requestHeader),r.setWithCredentials(this.withCredentials),r.load(A,function(l){try{s.parse(l,o,function(g){e(g),s.manager.itemEnd(A)},a)}catch(g){a(g)}},i,a)}setDRACOLoader(A){return this.dracoLoader=A,this}setKTX2Loader(A){return this.ktx2Loader=A,this}setMeshoptDecoder(A){return this.meshoptDecoder=A,this}register(A){return this.pluginCallbacks.indexOf(A)===-1&&this.pluginCallbacks.push(A),this}unregister(A){return this.pluginCallbacks.indexOf(A)!==-1&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(A),1),this}parse(A,e,i,t){let s,o;const a={},r={},l=new TextDecoder;if(typeof A=="string")try{s=JSON.parse(A)}catch(c){o=A,t&&t(c);return}else if(A instanceof ArrayBuffer)if(l.decode(new Uint8Array(A,0,4))===no){try{a[oA.KHR_BINARY_GLTF]=new dr(A)}catch(c){t&&t(c);return}try{s=JSON.parse(a[oA.KHR_BINARY_GLTF].content)}catch(c){o=a[oA.KHR_BINARY_GLTF].content,t&&t(c);return}}else try{s=JSON.parse(l.decode(A))}catch(c){o=l.decode(A),t&&t(c);return}else s=A;if(s.asset===void 0||s.asset.version[0]<2){t&&t(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported."));return}this.json=s,this.jsonErrorData=o;const g=new Rr(s,{path:e||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});g.fileLoader.setRequestHeader(this.requestHeader);for(let c=0;c<this.pluginCallbacks.length;c++){const I=this.pluginCallbacks[c](g);I.name||console.error("THREE.GLTFLoader: Invalid plugin found: missing name"),r[I.name]=I,a[I.name]=!0}if(s.extensionsUsed)for(let c=0;c<s.extensionsUsed.length;++c){const I=s.extensionsUsed[c],B=s.extensionsRequired||[];switch(I){case oA.KHR_MATERIALS_UNLIT:a[I]=new Ar;break;case oA.KHR_DRACO_MESH_COMPRESSION:a[I]=new ur(s,this.dracoLoader);break;case oA.KHR_TEXTURE_TRANSFORM:a[I]=new pr;break;case oA.KHR_MESH_QUANTIZATION:a[I]=new Qr;break;default:B.indexOf(I)>=0&&r[I]===void 0&&console.warn('THREE.GLTFLoader: Unknown extension "'+I+'".')}}g.setExtensions(a),g.setPlugins(r),g.parse(i,t)}parseAsync(A,e){const i=this;return new Promise(function(t,s){i.parse(A,e,t,s)})}}function Za(){let n={};return{get:function(A){return n[A]},add:function(A,e){n[A]=e},remove:function(A){delete n[A]},removeAll:function(){n={}}}}const oA={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(A){this.parser=A,this.name=oA.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){const A=this.parser,e=this.parser.json.nodes||[];for(let i=0,t=e.length;i<t;i++){const s=e[i];s.extensions&&s.extensions[this.name]&&s.extensions[this.name].light!==void 0&&A._addNodeRef(this.cache,s.extensions[this.name].light)}}_loadLight(A){const e=this.parser,i="light:"+A;let t=e.cache.get(i);if(t)return t;const s=e.json,o=((s.extensions&&s.extensions[this.name]||{}).lights||[])[A];let a;const r=new DA(16777215);o.color!==void 0&&r.setRGB(o.color[0],o.color[1],o.color[2],WA);const l=o.range!==void 0?o.range:0;switch(o.type){case"directional":a=new Ts(r),a.target.position.set(0,0,-1),a.add(a.target);break;case"point":a=new di(r),a.distance=l;break;case"spot":a=new Gs(r),a.distance=l,o.spot=o.spot||{},o.spot.innerConeAngle=o.spot.innerConeAngle!==void 0?o.spot.innerConeAngle:0,o.spot.outerConeAngle=o.spot.outerConeAngle!==void 0?o.spot.outerConeAngle:Math.PI/4,a.angle=o.spot.outerConeAngle,a.penumbra=1-o.spot.innerConeAngle/o.spot.outerConeAngle,a.target.position.set(0,0,-1),a.add(a.target);break;default:throw new Error("THREE.GLTFLoader: Unexpected light type: "+o.type)}return a.position.set(0,0,0),a.decay=2,Ge(a,o),o.intensity!==void 0&&(a.intensity=o.intensity),a.name=e.createUniqueName(o.name||"light_"+A),t=Promise.resolve(a),e.cache.add(i,t),t}getDependency(A,e){if(A==="light")return this._loadLight(e)}createNodeAttachment(A){const e=this,i=this.parser,t=i.json.nodes[A],s=(t.extensions&&t.extensions[this.name]||{}).light;return s===void 0?null:this._loadLight(s).then(function(o){return i._getNodeRef(e.cache,s,o)})}}let Ar=class{constructor(){this.name=oA.KHR_MATERIALS_UNLIT}getMaterialType(){return Qe}extendParams(n,A,e){const i=[];n.color=new DA(1,1,1),n.opacity=1;const t=A.pbrMetallicRoughness;if(t){if(Array.isArray(t.baseColorFactor)){const s=t.baseColorFactor;n.color.setRGB(s[0],s[1],s[2],WA),n.opacity=s[3]}t.baseColorTexture!==void 0&&i.push(e.assignTexture(n,"map",t.baseColorTexture,lA))}return Promise.all(i)}},er=class{constructor(n){this.parser=n,this.name=oA.KHR_MATERIALS_EMISSIVE_STRENGTH}extendMaterialParams(n,A){const e=this.parser.json.materials[n];if(!e.extensions||!e.extensions[this.name])return Promise.resolve();const i=e.extensions[this.name].emissiveStrength;return i!==void 0&&(A.emissiveIntensity=i),Promise.resolve()}},tr=class{constructor(n){this.parser=n,this.name=oA.KHR_MATERIALS_CLEARCOAT}getMaterialType(n){const A=this.parser.json.materials[n];return!A.extensions||!A.extensions[this.name]?null:fe}extendMaterialParams(n,A){const e=this.parser,i=e.json.materials[n];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const t=[],s=i.extensions[this.name];if(s.clearcoatFactor!==void 0&&(A.clearcoat=s.clearcoatFactor),s.clearcoatTexture!==void 0&&t.push(e.assignTexture(A,"clearcoatMap",s.clearcoatTexture)),s.clearcoatRoughnessFactor!==void 0&&(A.clearcoatRoughness=s.clearcoatRoughnessFactor),s.clearcoatRoughnessTexture!==void 0&&t.push(e.assignTexture(A,"clearcoatRoughnessMap",s.clearcoatRoughnessTexture)),s.clearcoatNormalTexture!==void 0&&(t.push(e.assignTexture(A,"clearcoatNormalMap",s.clearcoatNormalTexture)),s.clearcoatNormalTexture.scale!==void 0)){const o=s.clearcoatNormalTexture.scale;A.clearcoatNormalScale=new UA(o,o)}return Promise.all(t)}},ir=class{constructor(n){this.parser=n,this.name=oA.KHR_MATERIALS_DISPERSION}getMaterialType(n){const A=this.parser.json.materials[n];return!A.extensions||!A.extensions[this.name]?null:fe}extendMaterialParams(n,A){const e=this.parser.json.materials[n];if(!e.extensions||!e.extensions[this.name])return Promise.resolve();const i=e.extensions[this.name];return A.dispersion=i.dispersion!==void 0?i.dispersion:0,Promise.resolve()}},sr=class{constructor(n){this.parser=n,this.name=oA.KHR_MATERIALS_IRIDESCENCE}getMaterialType(n){const A=this.parser.json.materials[n];return!A.extensions||!A.extensions[this.name]?null:fe}extendMaterialParams(n,A){const e=this.parser,i=e.json.materials[n];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const t=[],s=i.extensions[this.name];return s.iridescenceFactor!==void 0&&(A.iridescence=s.iridescenceFactor),s.iridescenceTexture!==void 0&&t.push(e.assignTexture(A,"iridescenceMap",s.iridescenceTexture)),s.iridescenceIor!==void 0&&(A.iridescenceIOR=s.iridescenceIor),A.iridescenceThicknessRange===void 0&&(A.iridescenceThicknessRange=[100,400]),s.iridescenceThicknessMinimum!==void 0&&(A.iridescenceThicknessRange[0]=s.iridescenceThicknessMinimum),s.iridescenceThicknessMaximum!==void 0&&(A.iridescenceThicknessRange[1]=s.iridescenceThicknessMaximum),s.iridescenceThicknessTexture!==void 0&&t.push(e.assignTexture(A,"iridescenceThicknessMap",s.iridescenceThicknessTexture)),Promise.all(t)}},or=class{constructor(n){this.parser=n,this.name=oA.KHR_MATERIALS_SHEEN}getMaterialType(n){const A=this.parser.json.materials[n];return!A.extensions||!A.extensions[this.name]?null:fe}extendMaterialParams(n,A){const e=this.parser,i=e.json.materials[n];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const t=[];A.sheenColor=new DA(0,0,0),A.sheenRoughness=0,A.sheen=1;const s=i.extensions[this.name];if(s.sheenColorFactor!==void 0){const o=s.sheenColorFactor;A.sheenColor.setRGB(o[0],o[1],o[2],WA)}return s.sheenRoughnessFactor!==void 0&&(A.sheenRoughness=s.sheenRoughnessFactor),s.sheenColorTexture!==void 0&&t.push(e.assignTexture(A,"sheenColorMap",s.sheenColorTexture,lA)),s.sheenRoughnessTexture!==void 0&&t.push(e.assignTexture(A,"sheenRoughnessMap",s.sheenRoughnessTexture)),Promise.all(t)}},nr=class{constructor(n){this.parser=n,this.name=oA.KHR_MATERIALS_TRANSMISSION}getMaterialType(n){const A=this.parser.json.materials[n];return!A.extensions||!A.extensions[this.name]?null:fe}extendMaterialParams(n,A){const e=this.parser,i=e.json.materials[n];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const t=[],s=i.extensions[this.name];return s.transmissionFactor!==void 0&&(A.transmission=s.transmissionFactor),s.transmissionTexture!==void 0&&t.push(e.assignTexture(A,"transmissionMap",s.transmissionTexture)),Promise.all(t)}},ar=class{constructor(n){this.parser=n,this.name=oA.KHR_MATERIALS_VOLUME}getMaterialType(n){const A=this.parser.json.materials[n];return!A.extensions||!A.extensions[this.name]?null:fe}extendMaterialParams(n,A){const e=this.parser,i=e.json.materials[n];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const t=[],s=i.extensions[this.name];A.thickness=s.thicknessFactor!==void 0?s.thicknessFactor:0,s.thicknessTexture!==void 0&&t.push(e.assignTexture(A,"thicknessMap",s.thicknessTexture)),A.attenuationDistance=s.attenuationDistance||1/0;const o=s.attenuationColor||[1,1,1];return A.attenuationColor=new DA().setRGB(o[0],o[1],o[2],WA),Promise.all(t)}},rr=class{constructor(n){this.parser=n,this.name=oA.KHR_MATERIALS_IOR}getMaterialType(n){const A=this.parser.json.materials[n];return!A.extensions||!A.extensions[this.name]?null:fe}extendMaterialParams(n,A){const e=this.parser.json.materials[n];if(!e.extensions||!e.extensions[this.name])return Promise.resolve();const i=e.extensions[this.name];return A.ior=i.ior!==void 0?i.ior:1.5,Promise.resolve()}},gr=class{constructor(n){this.parser=n,this.name=oA.KHR_MATERIALS_SPECULAR}getMaterialType(n){const A=this.parser.json.materials[n];return!A.extensions||!A.extensions[this.name]?null:fe}extendMaterialParams(n,A){const e=this.parser,i=e.json.materials[n];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const t=[],s=i.extensions[this.name];A.specularIntensity=s.specularFactor!==void 0?s.specularFactor:1,s.specularTexture!==void 0&&t.push(e.assignTexture(A,"specularIntensityMap",s.specularTexture));const o=s.specularColorFactor||[1,1,1];return A.specularColor=new DA().setRGB(o[0],o[1],o[2],WA),s.specularColorTexture!==void 0&&t.push(e.assignTexture(A,"specularColorMap",s.specularColorTexture,lA)),Promise.all(t)}},cr=class{constructor(n){this.parser=n,this.name=oA.EXT_MATERIALS_BUMP}getMaterialType(n){const A=this.parser.json.materials[n];return!A.extensions||!A.extensions[this.name]?null:fe}extendMaterialParams(n,A){const e=this.parser,i=e.json.materials[n];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const t=[],s=i.extensions[this.name];return A.bumpScale=s.bumpFactor!==void 0?s.bumpFactor:1,s.bumpTexture!==void 0&&t.push(e.assignTexture(A,"bumpMap",s.bumpTexture)),Promise.all(t)}},lr=class{constructor(n){this.parser=n,this.name=oA.KHR_MATERIALS_ANISOTROPY}getMaterialType(n){const A=this.parser.json.materials[n];return!A.extensions||!A.extensions[this.name]?null:fe}extendMaterialParams(n,A){const e=this.parser,i=e.json.materials[n];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const t=[],s=i.extensions[this.name];return s.anisotropyStrength!==void 0&&(A.anisotropy=s.anisotropyStrength),s.anisotropyRotation!==void 0&&(A.anisotropyRotation=s.anisotropyRotation),s.anisotropyTexture!==void 0&&t.push(e.assignTexture(A,"anisotropyMap",s.anisotropyTexture)),Promise.all(t)}};class hr{constructor(A){this.parser=A,this.name=oA.KHR_TEXTURE_BASISU}loadTexture(A){const e=this.parser,i=e.json,t=i.textures[A];if(!t.extensions||!t.extensions[this.name])return null;const s=t.extensions[this.name],o=e.options.ktx2Loader;if(!o){if(i.extensionsRequired&&i.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return null}return e.loadTextureImage(A,s.source,o)}}class Ir{constructor(A){this.parser=A,this.name=oA.EXT_TEXTURE_WEBP,this.isSupported=null}loadTexture(A){const e=this.name,i=this.parser,t=i.json,s=t.textures[A];if(!s.extensions||!s.extensions[e])return null;const o=s.extensions[e],a=t.images[o.source];let r=i.textureLoader;if(a.uri){const l=i.options.manager.getHandler(a.uri);l!==null&&(r=l)}return this.detectSupport().then(function(l){if(l)return i.loadTextureImage(A,o.source,r);if(t.extensionsRequired&&t.extensionsRequired.indexOf(e)>=0)throw new Error("THREE.GLTFLoader: WebP required by asset but unsupported.");return i.loadTexture(A)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(A){const e=new Image;e.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA",e.onload=e.onerror=function(){A(e.height===1)}})),this.isSupported}}class Br{constructor(A){this.parser=A,this.name=oA.EXT_TEXTURE_AVIF,this.isSupported=null}loadTexture(A){const e=this.name,i=this.parser,t=i.json,s=t.textures[A];if(!s.extensions||!s.extensions[e])return null;const o=s.extensions[e],a=t.images[o.source];let r=i.textureLoader;if(a.uri){const l=i.options.manager.getHandler(a.uri);l!==null&&(r=l)}return this.detectSupport().then(function(l){if(l)return i.loadTextureImage(A,o.source,r);if(t.extensionsRequired&&t.extensionsRequired.indexOf(e)>=0)throw new Error("THREE.GLTFLoader: AVIF required by asset but unsupported.");return i.loadTexture(A)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(A){const e=new Image;e.src="data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAABcAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQAMAAAAABNjb2xybmNseAACAAIABoAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAAB9tZGF0EgAKCBgABogQEDQgMgkQAAAAB8dSLfI=",e.onload=e.onerror=function(){A(e.height===1)}})),this.isSupported}}class Cr{constructor(A){this.name=oA.EXT_MESHOPT_COMPRESSION,this.parser=A}loadBufferView(A){const e=this.parser.json,i=e.bufferViews[A];if(i.extensions&&i.extensions[this.name]){const t=i.extensions[this.name],s=this.parser.getDependency("buffer",t.buffer),o=this.parser.options.meshoptDecoder;if(!o||!o.supported){if(e.extensionsRequired&&e.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return null}return s.then(function(a){const r=t.byteOffset||0,l=t.byteLength||0,g=t.count,c=t.byteStride,I=new Uint8Array(a,r,l);return o.decodeGltfBufferAsync?o.decodeGltfBufferAsync(g,c,I,t.mode,t.filter).then(function(B){return B.buffer}):o.ready.then(function(){const B=new ArrayBuffer(g*c);return o.decodeGltfBuffer(new Uint8Array(B),g,c,I,t.mode,t.filter),B})})}else return null}}let Er=class{constructor(n){this.name=oA.EXT_MESH_GPU_INSTANCING,this.parser=n}createNodeMesh(n){const A=this.parser.json,e=A.nodes[n];if(!e.extensions||!e.extensions[this.name]||e.mesh===void 0)return null;const i=A.meshes[e.mesh];for(const a of i.primitives)if(a.mode!==ce.TRIANGLES&&a.mode!==ce.TRIANGLE_STRIP&&a.mode!==ce.TRIANGLE_FAN&&a.mode!==void 0)return null;const t=e.extensions[this.name].attributes,s=[],o={};for(const a in t)s.push(this.parser.getDependency("accessor",t[a]).then(r=>(o[a]=r,o[a])));return s.length<1?null:(s.push(this.parser.createNodeMesh(n)),Promise.all(s).then(a=>{const r=a.pop(),l=r.isGroup?r.children:[r],g=a[0].count,c=[];for(const I of l){const B=new hA,C=new N,d=new SA,E=new N(1,1,1),p=new ca(I.geometry,I.material,g);for(let f=0;f<g;f++)o.TRANSLATION&&C.fromBufferAttribute(o.TRANSLATION,f),o.ROTATION&&d.fromBufferAttribute(o.ROTATION,f),o.SCALE&&E.fromBufferAttribute(o.SCALE,f),p.setMatrixAt(f,B.compose(C,d,E));for(const f in o)if(f==="_COLOR_0"){const Q=o[f];p.instanceColor=new Ei(Q.array,Q.itemSize,Q.normalized)}else f!=="TRANSLATION"&&f!=="ROTATION"&&f!=="SCALE"&&I.geometry.setAttribute(f,o[f]);me.prototype.copy.call(p,I),this.parser.assignFinalMaterial(p),c.push(p)}return r.isGroup?(r.clear(),r.add(...c),r):c[0]}))}};const no="glTF",Qt=12,ao={JSON:1313821514,BIN:5130562};class dr{constructor(A){this.name=oA.KHR_BINARY_GLTF,this.content=null,this.body=null;const e=new DataView(A,0,Qt),i=new TextDecoder;if(this.header={magic:i.decode(new Uint8Array(A.slice(0,4))),version:e.getUint32(4,!0),length:e.getUint32(8,!0)},this.header.magic!==no)throw new Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");if(this.header.version<2)throw new Error("THREE.GLTFLoader: Legacy binary file detected.");const t=this.header.length-Qt,s=new DataView(A,Qt);let o=0;for(;o<t;){const a=s.getUint32(o,!0);o+=4;const r=s.getUint32(o,!0);if(o+=4,r===ao.JSON){const l=new Uint8Array(A,Qt+o,a);this.content=i.decode(l)}else if(r===ao.BIN){const l=Qt+o;this.body=A.slice(l,l+a)}o+=a}if(this.content===null)throw new Error("THREE.GLTFLoader: JSON content not found.")}}class ur{constructor(A,e){if(!e)throw new Error("THREE.GLTFLoader: No DRACOLoader instance provided.");this.name=oA.KHR_DRACO_MESH_COMPRESSION,this.json=A,this.dracoLoader=e,this.dracoLoader.preload()}decodePrimitive(A,e){const i=this.json,t=this.dracoLoader,s=A.extensions[this.name].bufferView,o=A.extensions[this.name].attributes,a={},r={},l={};for(const g in o){const c=Hi[g]||g.toLowerCase();a[c]=o[g]}for(const g in A.attributes){const c=Hi[g]||g.toLowerCase();if(o[g]!==void 0){const I=i.accessors[A.attributes[g]],B=at[I.componentType];l[c]=B.name,r[c]=I.normalized===!0}}return e.getDependency("bufferView",s).then(function(g){return new Promise(function(c,I){t.decodeDracoFile(g,function(B){for(const C in B.attributes){const d=B.attributes[C],E=r[C];E!==void 0&&(d.normalized=E)}c(B)},a,l,WA,I)})})}}class pr{constructor(){this.name=oA.KHR_TEXTURE_TRANSFORM}extendTexture(A,e){return(e.texCoord===void 0||e.texCoord===A.channel)&&e.offset===void 0&&e.rotation===void 0&&e.scale===void 0||(A=A.clone(),e.texCoord!==void 0&&(A.channel=e.texCoord),e.offset!==void 0&&A.offset.fromArray(e.offset),e.rotation!==void 0&&(A.rotation=e.rotation),e.scale!==void 0&&A.repeat.fromArray(e.scale),A.needsUpdate=!0),A}}class Qr{constructor(){this.name=oA.KHR_MESH_QUANTIZATION}}class ro extends Ia{constructor(A,e,i,t){super(A,e,i,t)}copySampleValue_(A){const e=this.resultBuffer,i=this.sampleValues,t=this.valueSize,s=A*t*3+t;for(let o=0;o!==t;o++)e[o]=i[s+o];return e}interpolate_(A,e,i,t){const s=this.resultBuffer,o=this.sampleValues,a=this.valueSize,r=a*2,l=a*3,g=t-e,c=(i-e)/g,I=c*c,B=I*c,C=A*l,d=C-l,E=-2*B+3*I,p=B-I,f=1-E,Q=p-I+c;for(let w=0;w!==a;w++){const b=o[d+w+a],S=o[d+w+r]*g,x=o[C+w+a],D=o[C+w]*g;s[w]=f*b+Q*S+E*x+p*D}return s}}const fr=new SA;class mr extends ro{interpolate_(A,e,i,t){const s=super.interpolate_(A,e,i,t);return fr.fromArray(s).normalize().toArray(s),s}}const ce={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6},at={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},go={9728:_t,9729:ne,9984:pi,9985:Ls,9986:Ns,9987:It},co={33071:Pt,33648:Us,10497:Ve},Pi={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},Hi={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"},Oe={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},br={CUBICSPLINE:void 0,LINEAR:bi,STEP:Os},qi={OPAQUE:"OPAQUE",MASK:"MASK",BLEND:"BLEND"};function wr(n){return n.DefaultMaterial===void 0&&(n.DefaultMaterial=new Qi({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:Ks})),n.DefaultMaterial}function We(n,A,e){for(const i in e.extensions)n[i]===void 0&&(A.userData.gltfExtensions=A.userData.gltfExtensions||{},A.userData.gltfExtensions[i]=e.extensions[i])}function Ge(n,A){A.extras!==void 0&&(typeof A.extras=="object"?Object.assign(n.userData,A.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+A.extras))}function yr(n,A,e){let i=!1,t=!1,s=!1;for(let l=0,g=A.length;l<g;l++){const c=A[l];if(c.POSITION!==void 0&&(i=!0),c.NORMAL!==void 0&&(t=!0),c.COLOR_0!==void 0&&(s=!0),i&&t&&s)break}if(!i&&!t&&!s)return Promise.resolve(n);const o=[],a=[],r=[];for(let l=0,g=A.length;l<g;l++){const c=A[l];if(i){const I=c.POSITION!==void 0?e.getDependency("accessor",c.POSITION):n.attributes.position;o.push(I)}if(t){const I=c.NORMAL!==void 0?e.getDependency("accessor",c.NORMAL):n.attributes.normal;a.push(I)}if(s){const I=c.COLOR_0!==void 0?e.getDependency("accessor",c.COLOR_0):n.attributes.color;r.push(I)}}return Promise.all([Promise.all(o),Promise.all(a),Promise.all(r)]).then(function(l){const g=l[0],c=l[1],I=l[2];return i&&(n.morphAttributes.position=g),t&&(n.morphAttributes.normal=c),s&&(n.morphAttributes.color=I),n.morphTargetsRelative=!0,n})}function Dr(n,A){if(n.updateMorphTargets(),A.weights!==void 0)for(let e=0,i=A.weights.length;e<i;e++)n.morphTargetInfluences[e]=A.weights[e];if(A.extras&&Array.isArray(A.extras.targetNames)){const e=A.extras.targetNames;if(n.morphTargetInfluences.length===e.length){n.morphTargetDictionary={};for(let i=0,t=e.length;i<t;i++)n.morphTargetDictionary[e[i]]=i}else console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.")}}function Sr(n){let A;const e=n.extensions&&n.extensions[oA.KHR_DRACO_MESH_COMPRESSION];if(e?A="draco:"+e.bufferView+":"+e.indices+":"+Oi(e.attributes):A=n.indices+":"+Oi(n.attributes)+":"+n.mode,n.targets!==void 0)for(let i=0,t=n.targets.length;i<t;i++)A+=":"+Oi(n.targets[i]);return A}function Oi(n){let A="";const e=Object.keys(n).sort();for(let i=0,t=e.length;i<t;i++)A+=e[i]+":"+n[e[i]]+";";return A}function Ki(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.")}}function vr(n){return n.search(/\.jpe?g($|\?)/i)>0||n.search(/^data\:image\/jpeg/)===0?"image/jpeg":n.search(/\.webp($|\?)/i)>0||n.search(/^data\:image\/webp/)===0?"image/webp":"image/png"}const xr=new hA;class Rr{constructor(A={},e={}){this.json=A,this.extensions={},this.plugins={},this.options=e,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 i=!1,t=-1,s=!1,o=-1;if(typeof navigator<"u"){const a=navigator.userAgent;i=/^((?!chrome|android).)*safari/i.test(a)===!0;const r=a.match(/Version\/(\d+)/);t=i&&r?parseInt(r[1],10):-1,s=a.indexOf("Firefox")>-1,o=s?a.match(/Firefox\/([0-9]+)\./)[1]:-1}typeof createImageBitmap>"u"||i&&t<17||s&&o<98?this.textureLoader=new ui(this.options.manager):this.textureLoader=new la(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new Be(this.options.manager),this.fileLoader.setResponseType("arraybuffer"),this.options.crossOrigin==="use-credentials"&&this.fileLoader.setWithCredentials(!0)}setExtensions(A){this.extensions=A}setPlugins(A){this.plugins=A}parse(A,e){const i=this,t=this.json,s=this.extensions;this.cache.removeAll(),this.nodeCache={},this._invokeAll(function(o){return o._markDefs&&o._markDefs()}),Promise.all(this._invokeAll(function(o){return o.beforeRoot&&o.beforeRoot()})).then(function(){return Promise.all([i.getDependencies("scene"),i.getDependencies("animation"),i.getDependencies("camera")])}).then(function(o){const a={scene:o[0][t.scene||0],scenes:o[0],animations:o[1],cameras:o[2],asset:t.asset,parser:i,userData:{}};return We(s,a,t),Ge(a,t),Promise.all(i._invokeAll(function(r){return r.afterRoot&&r.afterRoot(a)})).then(function(){for(const r of a.scenes)r.updateMatrixWorld();A(a)})}).catch(e)}_markDefs(){const A=this.json.nodes||[],e=this.json.skins||[],i=this.json.meshes||[];for(let t=0,s=e.length;t<s;t++){const o=e[t].joints;for(let a=0,r=o.length;a<r;a++)A[o[a]].isBone=!0}for(let t=0,s=A.length;t<s;t++){const o=A[t];o.mesh!==void 0&&(this._addNodeRef(this.meshCache,o.mesh),o.skin!==void 0&&(i[o.mesh].isSkinnedMesh=!0)),o.camera!==void 0&&this._addNodeRef(this.cameraCache,o.camera)}}_addNodeRef(A,e){e!==void 0&&(A.refs[e]===void 0&&(A.refs[e]=A.uses[e]=0),A.refs[e]++)}_getNodeRef(A,e,i){if(A.refs[e]<=1)return i;const t=i.clone(),s=(o,a)=>{const r=this.associations.get(o);r!=null&&this.associations.set(a,r);for(const[l,g]of o.children.entries())s(g,a.children[l])};return s(i,t),t.name+="_instance_"+A.uses[e]++,t}_invokeOne(A){const e=Object.values(this.plugins);e.push(this);for(let i=0;i<e.length;i++){const t=A(e[i]);if(t)return t}return null}_invokeAll(A){const e=Object.values(this.plugins);e.unshift(this);const i=[];for(let t=0;t<e.length;t++){const s=A(e[t]);s&&i.push(s)}return i}getDependency(A,e){const i=A+":"+e;let t=this.cache.get(i);if(!t){switch(A){case"scene":t=this.loadScene(e);break;case"node":t=this._invokeOne(function(s){return s.loadNode&&s.loadNode(e)});break;case"mesh":t=this._invokeOne(function(s){return s.loadMesh&&s.loadMesh(e)});break;case"accessor":t=this.loadAccessor(e);break;case"bufferView":t=this._invokeOne(function(s){return s.loadBufferView&&s.loadBufferView(e)});break;case"buffer":t=this.loadBuffer(e);break;case"material":t=this._invokeOne(function(s){return s.loadMaterial&&s.loadMaterial(e)});break;case"texture":t=this._invokeOne(function(s){return s.loadTexture&&s.loadTexture(e)});break;case"skin":t=this.loadSkin(e);break;case"animation":t=this._invokeOne(function(s){return s.loadAnimation&&s.loadAnimation(e)});break;case"camera":t=this.loadCamera(e);break;default:if(t=this._invokeOne(function(s){return s!=this&&s.getDependency&&s.getDependency(A,e)}),!t)throw new Error("Unknown type: "+A);break}this.cache.add(i,t)}return t}getDependencies(A){let e=this.cache.get(A);if(!e){const i=this,t=this.json[A+(A==="mesh"?"es":"s")]||[];e=Promise.all(t.map(function(s,o){return i.getDependency(A,o)})),this.cache.add(A,e)}return e}loadBuffer(A){const e=this.json.buffers[A],i=this.fileLoader;if(e.type&&e.type!=="arraybuffer")throw new Error("THREE.GLTFLoader: "+e.type+" buffer type is not supported.");if(e.uri===void 0&&A===0)return Promise.resolve(this.extensions[oA.KHR_BINARY_GLTF].body);const t=this.options;return new Promise(function(s,o){i.load(ze.resolveURL(e.uri,t.path),s,void 0,function(){o(new Error('THREE.GLTFLoader: Failed to load buffer "'+e.uri+'".'))})})}loadBufferView(A){const e=this.json.bufferViews[A];return this.getDependency("buffer",e.buffer).then(function(i){const t=e.byteLength||0,s=e.byteOffset||0;return i.slice(s,s+t)})}loadAccessor(A){const e=this,i=this.json,t=this.json.accessors[A];if(t.bufferView===void 0&&t.sparse===void 0){const o=Pi[t.type],a=at[t.componentType],r=t.normalized===!0,l=new a(t.count*o);return Promise.resolve(new LA(l,o,r))}const s=[];return t.bufferView!==void 0?s.push(this.getDependency("bufferView",t.bufferView)):s.push(null),t.sparse!==void 0&&(s.push(this.getDependency("bufferView",t.sparse.indices.bufferView)),s.push(this.getDependency("bufferView",t.sparse.values.bufferView))),Promise.all(s).then(function(o){const a=o[0],r=Pi[t.type],l=at[t.componentType],g=l.BYTES_PER_ELEMENT,c=g*r,I=t.byteOffset||0,B=t.bufferView!==void 0?i.bufferViews[t.bufferView].byteStride:void 0,C=t.normalized===!0;let d,E;if(B&&B!==c){const p=Math.floor(I/B),f="InterleavedBuffer:"+t.bufferView+":"+t.componentType+":"+p+":"+t.count;let Q=e.cache.get(f);Q||(d=new l(a,p*B,t.count*B/g),Q=new Ms(d,B/g),e.cache.add(f,Q)),E=new Pe(Q,r,I%B/g,C)}else a===null?d=new l(t.count*r):d=new l(a,I,t.count*r),E=new LA(d,r,C);if(t.sparse!==void 0){const p=Pi.SCALAR,f=at[t.sparse.indices.componentType],Q=t.sparse.indices.byteOffset||0,w=t.sparse.values.byteOffset||0,b=new f(o[1],Q,t.sparse.count*p),S=new l(o[2],w,t.sparse.count*r);a!==null&&(E=new LA(E.array.slice(),E.itemSize,E.normalized)),E.normalized=!1;for(let x=0,D=b.length;x<D;x++){const F=b[x];if(E.setX(F,S[x*r]),r>=2&&E.setY(F,S[x*r+1]),r>=3&&E.setZ(F,S[x*r+2]),r>=4&&E.setW(F,S[x*r+3]),r>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}E.normalized=C}return E})}loadTexture(A){const e=this.json,i=this.options,t=e.textures[A].source,s=e.images[t];let o=this.textureLoader;if(s.uri){const a=i.manager.getHandler(s.uri);a!==null&&(o=a)}return this.loadTextureImage(A,t,o)}loadTextureImage(A,e,i){const t=this,s=this.json,o=s.textures[A],a=s.images[e],r=(a.uri||a.bufferView)+":"+o.sampler;if(this.textureCache[r])return this.textureCache[r];const l=this.loadImageSource(e,i).then(function(g){g.flipY=!1,g.name=o.name||a.name||"",g.name===""&&typeof a.uri=="string"&&a.uri.startsWith("data:image/")===!1&&(g.name=a.uri);const c=(s.samplers||{})[o.sampler]||{};return g.magFilter=go[c.magFilter]||ne,g.minFilter=go[c.minFilter]||It,g.wrapS=co[c.wrapS]||Ve,g.wrapT=co[c.wrapT]||Ve,g.anisotropy=4,t.associations.set(g,{textures:A}),g}).catch(function(){return null});return this.textureCache[r]=l,l}loadImageSource(A,e){const i=this,t=this.json,s=this.options;if(this.sourceCache[A]!==void 0)return this.sourceCache[A].then(c=>c.clone());const o=t.images[A],a=self.URL||self.webkitURL;let r=o.uri||"",l=!1;if(o.bufferView!==void 0)r=i.getDependency("bufferView",o.bufferView).then(function(c){l=!0;const I=new Blob([c],{type:o.mimeType});return r=a.createObjectURL(I),r});else if(o.uri===void 0)throw new Error("THREE.GLTFLoader: Image "+A+" is missing URI and bufferView");const g=Promise.resolve(r).then(function(c){return new Promise(function(I,B){let C=I;e.isImageBitmapLoader===!0&&(C=function(d){const E=new wi(d);E.needsUpdate=!0,I(E)}),e.load(ze.resolveURL(c,s.path),C,void 0,B)})}).then(function(c){return l===!0&&a.revokeObjectURL(r),Ge(c,o),c.userData.mimeType=o.mimeType||vr(o.uri),c}).catch(function(c){throw console.error("THREE.GLTFLoader: Couldn't load texture",r),c});return this.sourceCache[A]=g,g}assignTexture(A,e,i,t){const s=this;return this.getDependency("texture",i.index).then(function(o){if(!o)return null;if(i.texCoord!==void 0&&i.texCoord>0&&(o=o.clone(),o.channel=i.texCoord),s.extensions[oA.KHR_TEXTURE_TRANSFORM]){const a=i.extensions!==void 0?i.extensions[oA.KHR_TEXTURE_TRANSFORM]:void 0;if(a){const r=s.associations.get(o);o=s.extensions[oA.KHR_TEXTURE_TRANSFORM].extendTexture(o,a),s.associations.set(o,r)}}return t!==void 0&&(o.colorSpace=t),A[e]=o,o})}assignFinalMaterial(A){const e=A.geometry;let i=A.material;const t=e.attributes.tangent===void 0,s=e.attributes.color!==void 0,o=e.attributes.normal===void 0;if(A.isPoints){const a="PointsMaterial:"+i.uuid;let r=this.cache.get(a);r||(r=new Bt,Ct.prototype.copy.call(r,i),r.color.copy(i.color),r.map=i.map,r.sizeAttenuation=!1,this.cache.add(a,r)),i=r}else if(A.isLine){const a="LineBasicMaterial:"+i.uuid;let r=this.cache.get(a);r||(r=new Fe,Ct.prototype.copy.call(r,i),r.color.copy(i.color),r.map=i.map,this.cache.add(a,r)),i=r}if(t||s||o){let a="ClonedMaterial:"+i.uuid+":";t&&(a+="derivative-tangents:"),s&&(a+="vertex-colors:"),o&&(a+="flat-shading:");let r=this.cache.get(a);r||(r=i.clone(),s&&(r.vertexColors=!0),o&&(r.flatShading=!0),t&&(r.normalScale&&(r.normalScale.y*=-1),r.clearcoatNormalScale&&(r.clearcoatNormalScale.y*=-1)),this.cache.add(a,r),this.associations.set(r,this.associations.get(i))),i=r}A.material=i}getMaterialType(){return Qi}loadMaterial(A){const e=this,i=this.json,t=this.extensions,s=i.materials[A];let o;const a={},r=s.extensions||{},l=[];if(r[oA.KHR_MATERIALS_UNLIT]){const c=t[oA.KHR_MATERIALS_UNLIT];o=c.getMaterialType(),l.push(c.extendParams(a,s,e))}else{const c=s.pbrMetallicRoughness||{};if(a.color=new DA(1,1,1),a.opacity=1,Array.isArray(c.baseColorFactor)){const I=c.baseColorFactor;a.color.setRGB(I[0],I[1],I[2],WA),a.opacity=I[3]}c.baseColorTexture!==void 0&&l.push(e.assignTexture(a,"map",c.baseColorTexture,lA)),a.metalness=c.metallicFactor!==void 0?c.metallicFactor:1,a.roughness=c.roughnessFactor!==void 0?c.roughnessFactor:1,c.metallicRoughnessTexture!==void 0&&(l.push(e.assignTexture(a,"metalnessMap",c.metallicRoughnessTexture)),l.push(e.assignTexture(a,"roughnessMap",c.metallicRoughnessTexture))),o=this._invokeOne(function(I){return I.getMaterialType&&I.getMaterialType(A)}),l.push(Promise.all(this._invokeAll(function(I){return I.extendMaterialParams&&I.extendMaterialParams(A,a)})))}s.doubleSided===!0&&(a.side=fi);const g=s.alphaMode||qi.OPAQUE;if(g===qi.BLEND?(a.transparent=!0,a.depthWrite=!1):(a.transparent=!1,g===qi.MASK&&(a.alphaTest=s.alphaCutoff!==void 0?s.alphaCutoff:.5)),s.normalTexture!==void 0&&o!==Qe&&(l.push(e.assignTexture(a,"normalMap",s.normalTexture)),a.normalScale=new UA(1,1),s.normalTexture.scale!==void 0)){const c=s.normalTexture.scale;a.normalScale.set(c,c)}if(s.occlusionTexture!==void 0&&o!==Qe&&(l.push(e.assignTexture(a,"aoMap",s.occlusionTexture)),s.occlusionTexture.strength!==void 0&&(a.aoMapIntensity=s.occlusionTexture.strength)),s.emissiveFactor!==void 0&&o!==Qe){const c=s.emissiveFactor;a.emissive=new DA().setRGB(c[0],c[1],c[2],WA)}return s.emissiveTexture!==void 0&&o!==Qe&&l.push(e.assignTexture(a,"emissiveMap",s.emissiveTexture,lA)),Promise.all(l).then(function(){const c=new o(a);return s.name&&(c.name=s.name),Ge(c,s),e.associations.set(c,{materials:A}),s.extensions&&We(t,c,s),c})}createUniqueName(A){const e=ke.sanitizeNodeName(A||"");return e in this.nodeNamesUsed?e+"_"+ ++this.nodeNamesUsed[e]:(this.nodeNamesUsed[e]=0,e)}loadGeometries(A){const e=this,i=this.extensions,t=this.primitiveCache;function s(a){return i[oA.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(a,e).then(function(r){return lo(r,a,e)})}const o=[];for(let a=0,r=A.length;a<r;a++){const l=A[a],g=Sr(l),c=t[g];if(c)o.push(c.promise);else{let I;l.extensions&&l.extensions[oA.KHR_DRACO_MESH_COMPRESSION]?I=s(l):I=lo(new oe,l,e),t[g]={primitive:l,promise:I},o.push(I)}}return Promise.all(o)}loadMesh(A){const e=this,i=this.json,t=this.extensions,s=i.meshes[A],o=s.primitives,a=[];for(let r=0,l=o.length;r<l;r++){const g=o[r].material===void 0?wr(this.cache):this.getDependency("material",o[r].material);a.push(g)}return a.push(e.loadGeometries(o)),Promise.all(a).then(function(r){const l=r.slice(0,r.length-1),g=r[r.length-1],c=[];for(let B=0,C=g.length;B<C;B++){const d=g[B],E=o[B];let p;const f=l[B];if(E.mode===ce.TRIANGLES||E.mode===ce.TRIANGLE_STRIP||E.mode===ce.TRIANGLE_FAN||E.mode===void 0)p=s.isSkinnedMesh===!0?new _s(d,f):new K(d,f),p.isSkinnedMesh===!0&&p.normalizeSkinWeights(),E.mode===ce.TRIANGLE_STRIP?p.geometry=Ui(p.geometry,ks):E.mode===ce.TRIANGLE_FAN&&(p.geometry=Ui(p.geometry,Ci));else if(E.mode===ce.LINES)p=new Ht(d,f);else if(E.mode===ce.LINE_STRIP)p=new Ce(d,f);else if(E.mode===ce.LINE_LOOP)p=new ha(d,f);else if(E.mode===ce.POINTS)p=new qt(d,f);else throw new Error("THREE.GLTFLoader: Primitive mode unsupported: "+E.mode);Object.keys(p.geometry.morphAttributes).length>0&&Dr(p,s),p.name=e.createUniqueName(s.name||"mesh_"+A),Ge(p,s),E.extensions&&We(t,p,E),e.assignFinalMaterial(p),c.push(p)}for(let B=0,C=c.length;B<C;B++)e.associations.set(c[B],{meshes:A,primitives:B});if(c.length===1)return s.extensions&&We(t,c[0],s),c[0];const I=new Xe;s.extensions&&We(t,I,s),e.associations.set(I,{meshes:A});for(let B=0,C=c.length;B<C;B++)I.add(c[B]);return I})}loadCamera(A){let e;const i=this.json.cameras[A],t=i[i.type];if(!t){console.warn("THREE.GLTFLoader: Missing camera parameters.");return}return i.type==="perspective"?e=new Ot(bA.radToDeg(t.yfov),t.aspectRatio||1,t.znear||1,t.zfar||2e6):i.type==="orthographic"&&(e=new Ps(-t.xmag,t.xmag,t.ymag,-t.ymag,t.znear,t.zfar)),i.name&&(e.name=this.createUniqueName(i.name)),Ge(e,i),Promise.resolve(e)}loadSkin(A){const e=this.json.skins[A],i=[];for(let t=0,s=e.joints.length;t<s;t++)i.push(this._loadNodeShallow(e.joints[t]));return e.inverseBindMatrices!==void 0?i.push(this.getDependency("accessor",e.inverseBindMatrices)):i.push(null),Promise.all(i).then(function(t){const s=t.pop(),o=t,a=[],r=[];for(let l=0,g=o.length;l<g;l++){const c=o[l];if(c){a.push(c);const I=new hA;s!==null&&I.fromArray(s.array,l*16),r.push(I)}else console.warn('THREE.GLTFLoader: Joint "%s" could not be found.',e.joints[l])}return new Hs(a,r)})}loadAnimation(A){const e=this.json,i=this,t=e.animations[A],s=t.name?t.name:"animation_"+A,o=[],a=[],r=[],l=[],g=[];let c=0,I=t.channels.length;for(c=0,I=t.channels.length;c<I;c++){const B=t.channels[c],C=t.samplers[B.sampler],d=B.target,E=d.node,p=t.parameters!==void 0?t.parameters[C.input]:C.input,f=t.parameters!==void 0?t.parameters[C.output]:C.output;d.node!==void 0&&(o.push(this.getDependency("node",E)),a.push(this.getDependency("accessor",p)),r.push(this.getDependency("accessor",f)),l.push(C),g.push(d))}return Promise.all([Promise.all(o),Promise.all(a),Promise.all(r),Promise.all(l),Promise.all(g)]).then(function(B){const C=B[0],d=B[1],E=B[2],p=B[3],f=B[4],Q=[];for(c=0,I=C.length;c<I;c++){const w=C[c],b=d[c],S=E[c],x=p[c],D=f[c];if(w===void 0)continue;w.updateMatrix&&w.updateMatrix();const F=i._createAnimationTracks(w,b,S,x,D);if(F)for(let P=0;P<F.length;P++)Q.push(F[P])}return new qs(s,void 0,Q)})}createNodeMesh(A){const e=this.json,i=this,t=e.nodes[A];return t.mesh===void 0?null:i.getDependency("mesh",t.mesh).then(function(s){const o=i._getNodeRef(i.meshCache,t.mesh,s);return t.weights!==void 0&&o.traverse(function(a){if(a.isMesh)for(let r=0,l=t.weights.length;r<l;r++)a.morphTargetInfluences[r]=t.weights[r]}),o})}loadNode(A){const e=this.json,i=this,t=e.nodes[A],s=i._loadNodeShallow(A),o=[],a=t.children||[];for(let l=0,g=a.length;l<g;l++)o.push(i.getDependency("node",a[l]));const r=t.skin===void 0?Promise.resolve(null):i.getDependency("skin",t.skin);return Promise.all([s,Promise.all(o),r]).then(function(l){const g=l[0],c=l[1],I=l[2];I!==null&&g.traverse(function(B){B.isSkinnedMesh&&B.bind(I,xr)});for(let B=0,C=c.length;B<C;B++)g.add(c[B]);return g})}_loadNodeShallow(A){const e=this.json,i=this.extensions,t=this;if(this.nodeCache[A]!==void 0)return this.nodeCache[A];const s=e.nodes[A],o=s.name?t.createUniqueName(s.name):"",a=[],r=t._invokeOne(function(l){return l.createNodeMesh&&l.createNodeMesh(A)});return r&&a.push(r),s.camera!==void 0&&a.push(t.getDependency("camera",s.camera).then(function(l){return t._getNodeRef(t.cameraCache,s.camera,l)})),t._invokeAll(function(l){return l.createNodeAttachment&&l.createNodeAttachment(A)}).forEach(function(l){a.push(l)}),this.nodeCache[A]=Promise.all(a).then(function(l){let g;if(s.isBone===!0?g=new mi:l.length>1?g=new Xe:l.length===1?g=l[0]:g=new me,g!==l[0])for(let c=0,I=l.length;c<I;c++)g.add(l[c]);if(s.name&&(g.userData.name=s.name,g.name=o),Ge(g,s),s.extensions&&We(i,g,s),s.matrix!==void 0){const c=new hA;c.fromArray(s.matrix),g.applyMatrix4(c)}else s.translation!==void 0&&g.position.fromArray(s.translation),s.rotation!==void 0&&g.quaternion.fromArray(s.rotation),s.scale!==void 0&&g.scale.fromArray(s.scale);return t.associations.has(g)||t.associations.set(g,{}),t.associations.get(g).nodes=A,g}),this.nodeCache[A]}loadScene(A){const e=this.extensions,i=this.json.scenes[A],t=this,s=new Xe;i.name&&(s.name=t.createUniqueName(i.name)),Ge(s,i),i.extensions&&We(e,s,i);const o=i.nodes||[],a=[];for(let r=0,l=o.length;r<l;r++)a.push(t.getDependency("node",o[r]));return Promise.all(a).then(function(r){for(let g=0,c=r.length;g<c;g++)s.add(r[g]);const l=g=>{const c=new Map;for(const[I,B]of t.associations)(I instanceof Ct||I instanceof wi)&&c.set(I,B);return g.traverse(I=>{const B=t.associations.get(I);B!=null&&c.set(I,B)}),c};return t.associations=l(s),s})}_createAnimationTracks(A,e,i,t,s){const o=[],a=A.name?A.name:A.uuid,r=[];Oe[s.path]===Oe.weights?A.traverse(function(I){I.morphTargetInfluences&&r.push(I.name?I.name:I.uuid)}):r.push(a);let l;switch(Oe[s.path]){case Oe.weights:l=Di;break;case Oe.rotation:l=Si;break;case Oe.position:case Oe.scale:l=yi;break;default:i.itemSize===1?l=Di:l=yi;break}const g=t.interpolation!==void 0?br[t.interpolation]:bi,c=this._getArrayFromAccessor(i);for(let I=0,B=r.length;I<B;I++){const C=new l(r[I]+"."+Oe[s.path],e.array,c,g);t.interpolation==="CUBICSPLINE"&&this._createCubicSplineTrackInterpolant(C),o.push(C)}return o}_getArrayFromAccessor(A){let e=A.array;if(A.normalized){const i=Ki(e.constructor),t=new Float32Array(e.length);for(let s=0,o=e.length;s<o;s++)t[s]=e[s]*i;e=t}return e}_createCubicSplineTrackInterpolant(A){A.createInterpolant=function(e){const i=this instanceof Si?mr:ro;return new i(this.times,this.values,this.getValueSize()/3,e)},A.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0}}function Fr(n,A,e){const i=A.attributes,t=new Kt;if(i.POSITION!==void 0){const a=e.json.accessors[i.POSITION],r=a.min,l=a.max;if(r!==void 0&&l!==void 0){if(t.set(new N(r[0],r[1],r[2]),new N(l[0],l[1],l[2])),a.normalized){const g=Ki(at[a.componentType]);t.min.multiplyScalar(g),t.max.multiplyScalar(g)}}else{console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");return}}else return;const s=A.targets;if(s!==void 0){const a=new N,r=new N;for(let l=0,g=s.length;l<g;l++){const c=s[l];if(c.POSITION!==void 0){const I=e.json.accessors[c.POSITION],B=I.min,C=I.max;if(B!==void 0&&C!==void 0){if(r.setX(Math.max(Math.abs(B[0]),Math.abs(C[0]))),r.setY(Math.max(Math.abs(B[1]),Math.abs(C[1]))),r.setZ(Math.max(Math.abs(B[2]),Math.abs(C[2]))),I.normalized){const d=Ki(at[I.componentType]);r.multiplyScalar(d)}a.max(r)}else console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.")}}t.expandByVector(a)}n.boundingBox=t;const o=new vi;t.getCenter(o.center),o.radius=t.min.distanceTo(t.max)/2,n.boundingSphere=o}function lo(n,A,e){const i=A.attributes,t=[];function s(o,a){return e.getDependency("accessor",o).then(function(r){n.setAttribute(a,r)})}for(const o in i){const a=Hi[o]||o.toLowerCase();a in n.attributes||t.push(s(i[o],a))}if(A.indices!==void 0&&!n.index){const o=e.getDependency("accessor",A.indices).then(function(a){n.setIndex(a)});t.push(o)}return ZA.workingColorSpace!==WA&&"COLOR_0"in i&&console.warn(`THREE.GLTFLoader: Converting vertex colors from "srgb-linear" to "${ZA.workingColorSpace}" not supported.`),Ge(n,A),Fr(n,A,e),Promise.all(t).then(function(){return A.targets!==void 0?yr(n,A.targets,e):n})}var kr=function(){var n="b9H79Tebbbe8Fv9Gbb9Gvuuuuueu9Giuuub9Geueu9Giuuueuikqbeeedddillviebeoweuec:q;iekr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbeY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVbdE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbiL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtblK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbol79IV9Rbrq:P8Yqdbk;3sezu8Jjjjjbcj;eb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Radz1jjjbhwcj;abad9UhoaicefhldnadTmbaoc;WFbGgocjdaocjd6EhDcbhqinaqae9pmeaDaeaq9RaqaDfae6Egkcsfgocl4cifcd4hxdndndndnaoc9WGgmTmbcbhPcehsawcjdfhzalhHinaraH9Rax6midnaraHaxfgl9RcK6mbczhoinawcj;cbfaogifgoc9WfhOdndndndndnaHaic9WfgAco4fRbbaAci4coG4ciGPlbedibkaO9cb83ibaOcwf9cb83ibxikaOalRblalRbbgAco4gCaCciSgCE86bbaocGfalclfaCfgORbbaAcl4ciGgCaCciSgCE86bbaocVfaOaCfgORbbaAcd4ciGgCaCciSgCE86bbaoc7faOaCfgORbbaAciGgAaAciSgAE86bbaoctfaOaAfgARbbalRbegOco4gCaCciSgCE86bbaoc91faAaCfgARbbaOcl4ciGgCaCciSgCE86bbaoc4faAaCfgARbbaOcd4ciGgCaCciSgCE86bbaoc93faAaCfgARbbaOciGgOaOciSgOE86bbaoc94faAaOfgARbbalRbdgOco4gCaCciSgCE86bbaoc95faAaCfgARbbaOcl4ciGgCaCciSgCE86bbaoc96faAaCfgARbbaOcd4ciGgCaCciSgCE86bbaoc97faAaCfgARbbaOciGgOaOciSgOE86bbaoc98faAaOfgORbbalRbiglco4gAaAciSgAE86bbaoc99faOaAfgORbbalcl4ciGgAaAciSgAE86bbaoc9:faOaAfgORbbalcd4ciGgAaAciSgAE86bbaocufaOaAfgoRbbalciGglalciSglE86bbaoalfhlxdkaOalRbwalRbbgAcl4gCaCcsSgCE86bbaocGfalcwfaCfgORbbaAcsGgAaAcsSgAE86bbaocVfaOaAfgORbbalRbegAcl4gCaCcsSgCE86bbaoc7faOaCfgORbbaAcsGgAaAcsSgAE86bbaoctfaOaAfgORbbalRbdgAcl4gCaCcsSgCE86bbaoc91faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc4faOaAfgORbbalRbigAcl4gCaCcsSgCE86bbaoc93faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc94faOaAfgORbbalRblgAcl4gCaCcsSgCE86bbaoc95faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc96faOaAfgORbbalRbvgAcl4gCaCcsSgCE86bbaoc97faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc98faOaAfgORbbalRbogAcl4gCaCcsSgCE86bbaoc99faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc9:faOaAfgORbbalRbrglcl4gAaAcsSgAE86bbaocufaOaAfgoRbbalcsGglalcsSglE86bbaoalfhlxekaOal8Pbb83bbaOcwfalcwf8Pbb83bbalczfhlkdnaiam9pmbaiczfhoaral9RcL0mekkaiam6mialTmidnakTmbawaPfRbbhOcbhoazhiinaiawcj;cbfaofRbbgAce4cbaAceG9R7aOfgO86bbaiadfhiaocefgoak9hmbkkazcefhzaPcefgPad6hsalhHaPad9hmexvkkcbhlasceGmdxikalaxad2fhCdnakTmbcbhHcehsawcjdfhminaral9Rax6mialTmdalaxfhlawaHfRbbhOcbhoamhiinaiawcj;cbfaofRbbgAce4cbaAceG9R7aOfgO86bbaiadfhiaocefgoak9hmbkamcefhmaHcefgHad6hsaHad9hmbkaChlxikcbhocehsinaral9Rax6mdalTmealaxfhlaocefgoad6hsadao9hmbkaChlxdkcbhlasceGTmekc9:hoxikabaqad2fawcjdfakad2z1jjjb8Aawawcjdfakcufad2fadz1jjjb8Aakaqfhqalmbkc9:hoxekcbc99aral9Radcaadca0ESEhokavcj;ebf8Kjjjjbaok;yzeHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecjez:jjjjb8AavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhodnaeTmbcmcsaDceSEhkcbhxcbhmcbhDcbhicbhlindnaoaq9nmbc9:hoxikdndnawRbbgrc;Ve0mbavc;abfalarcl4cu7fcsGcitfgPydlhsaPydbhzdnarcsGgPak9pmbavaiarcu7fcsGcdtfydbaxaPEhraPThPdndnadcd9hmbabaDcetfgHaz87ebaHcdfas87ebaHclfar87ebxekabaDcdtfgHazBdbaHclfasBdbaHcwfarBdbkaxaPfhxavc;abfalcitfgHarBdbaHasBdlavaicdtfarBdbavc;abfalcefcsGglcitfgHazBdbaHarBdlaiaPfhialcefhlxdkdndnaPcsSmbamaPfaPc987fcefhmxekaocefhrao8SbbgPcFeGhHdndnaPcu9mmbarhoxekaocvfhoaHcFbGhHcrhPdninar8SbbgOcFbGaPtaHVhHaOcu9kmearcefhraPcrfgPc8J9hmbxdkkarcefhokaHce4cbaHceG9R7amfhmkdndnadcd9hmbabaDcetfgraz87ebarcdfas87ebarclfam87ebxekabaDcdtfgrazBdbarclfasBdbarcwfamBdbkavc;abfalcitfgramBdbarasBdlavaicdtfamBdbavc;abfalcefcsGglcitfgrazBdbaramBdlaicefhialcefhlxekdnarcpe0mbaxcefgOavaiaqarcsGfRbbgPcl49RcsGcdtfydbaPcz6gHEhravaiaP9RcsGcdtfydbaOaHfgsaPcsGgOEhPaOThOdndnadcd9hmbabaDcetfgzax87ebazcdfar87ebazclfaP87ebxekabaDcdtfgzaxBdbazclfarBdbazcwfaPBdbkavaicdtfaxBdbavc;abfalcitfgzarBdbazaxBdlavaicefgicsGcdtfarBdbavc;abfalcefcsGcitfgzaPBdbazarBdlavaiaHfcsGgicdtfaPBdbavc;abfalcdfcsGglcitfgraxBdbaraPBdlalcefhlaiaOfhiasaOfhxxekaxcbaoRbbgzEgAarc;:eSgrfhsazcsGhCazcl4hXdndnazcs0mbascefhOxekashOavaiaX9RcsGcdtfydbhskdndnaCmbaOcefhxxekaOhxavaiaz9RcsGcdtfydbhOkdndnarTmbaocefhrxekaocdfhrao8SbegHcFeGhPdnaHcu9kmbaocofhAaPcFbGhPcrhodninar8SbbgHcFbGaotaPVhPaHcu9kmearcefhraocrfgoc8J9hmbkaAhrxekarcefhrkaPce4cbaPceG9R7amfgmhAkdndnaXcsSmbarhPxekarcefhPar8SbbgocFeGhHdnaocu9kmbarcvfhsaHcFbGhHcrhodninaP8SbbgrcFbGaotaHVhHarcu9kmeaPcefhPaocrfgoc8J9hmbkashPxekaPcefhPkaHce4cbaHceG9R7amfgmhskdndnaCcsSmbaPhoxekaPcefhoaP8SbbgrcFeGhHdnarcu9kmbaPcvfhOaHcFbGhHcrhrdninao8SbbgPcFbGartaHVhHaPcu9kmeaocefhoarcrfgrc8J9hmbkaOhoxekaocefhokaHce4cbaHceG9R7amfgmhOkdndnadcd9hmbabaDcetfgraA87ebarcdfas87ebarclfaO87ebxekabaDcdtfgraABdbarclfasBdbarcwfaOBdbkavc;abfalcitfgrasBdbaraABdlavaicdtfaABdbavc;abfalcefcsGcitfgraOBdbarasBdlavaicefgicsGcdtfasBdbavc;abfalcdfcsGcitfgraABdbaraOBdlavaiazcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhialcifhlkawcefhwalcsGhlaicsGhiaDcifgDae6mbkkcbc99aoaqSEhokavc;aef8Kjjjjbaok:llevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:Lvoeue99dud99eud99dndnadcl9hmbaeTmeindndnabcdfgd8Sbb:Yab8Sbbgi:Ygl:l:tabcefgv8Sbbgo:Ygr:l:tgwJbb;:9cawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai86bbdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad86bbdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad86bbabclfhbaecufgembxdkkaeTmbindndnabclfgd8Ueb:Yab8Uebgi:Ygl:l:tabcdfgv8Uebgo:Ygr:l:tgwJb;:FSawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai87ebdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad87ebdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad87ebabcwfhbaecufgembkkk;siliui99iue99dnaeTmbcbhiabhlindndnJ;Zl81Zalcof8UebgvciV:Y:vgoal8Ueb:YNgrJb;:FSNJbbbZJbbb:;arJbbbb9GEMgw:lJbbb9p9DTmbaw:OhDxekcjjjj94hDkalclf8Uebhqalcdf8UebhkabavcefciGaiVcetfaD87ebdndnaoak:YNgwJb;:FSNJbbbZJbbb:;awJbbbb9GEMgx:lJbbb9p9DTmbax:Ohkxekcjjjj94hkkabavcdfciGaiVcetfak87ebdndnaoaq:YNgoJb;:FSNJbbbZJbbb:;aoJbbbb9GEMgx:lJbbb9p9DTmbax:Ohqxekcjjjj94hqkabavcufciGaiVcetfaq87ebdndnJbbjZararN:tawawN:taoaoN:tgrJbbbbarJbbbb9GE:rJb;:FSNJbbbZMgr:lJbbb9p9DTmbar:Ohqxekcjjjj94hqkabavciGaiVcetfaq87ebalcwfhlaiclfhiaecufgembkkk9mbdnadcd4ae2geTmbinababydbgdcwtcw91:Yadce91cjjj;8ifcjjj98G::NUdbabclfhbaecufgembkkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaiczfhiaeczfheadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabkkkebcjwklz9Kbb",A="b9H79TebbbeKl9Gbb9Gvuuuuueu9Giuuub9Geueuikqbbebeedddilve9Weeeviebeoweuec:q;Aekr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbdY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVblE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtboK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbrL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbwl79IV9RbDq;t9tqlbzik9:evu8Jjjjjbcz9Rhbcbheincbhdcbhiinabcwfadfaicjuaead4ceGglE86bbaialfhiadcefgdcw9hmbkaec:q:yjjbfai86bbaecitc:q1jjbfab8Piw83ibaecefgecjd9hmbkk;h8JlHud97euo978Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Rad;8qbbcj;abad9UhoaicefhldnadTmbaoc;WFbGgocjdaocjd6EhwcbhDinaDae9pmeawaeaD9RaDawfae6Egqcsfgoc9WGgkci2hxakcethmaocl4cifcd4hPabaDad2fhscbhzdnincehHalhOcbhAdninaraO9RaP6miavcj;cbfaAak2fhCaOaPfhlcbhidnakc;ab6mbaral9Rc;Gb6mbcbhoinaCaofhidndndndndnaOaoco4fRbbgXciGPlbedibkaipxbbbbbbbbbbbbbbbbpklbxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklbalczfhlkdndndndndnaXcd4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklzxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklzalczfhlkdndndndndnaXcl4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklaxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklaalczfhlkdndndndndnaXco4Plbedibkaipxbbbbbbbbbbbbbbbbpkl8WxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WalclfaYpQbfaXc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WalcwfaYpQbfaXc:q:yjjbfRbbfhlxekaialpbbbpkl8Walczfhlkaoc;abfhiaocjefak0meaihoaral9Rc;Fb0mbkkdndnaiak9pmbaici4hoinaral9RcK6mdaCaifhXdndndndndnaOaico4fRbbaocoG4ciGPlbedibkaXpxbbbbbbbbbbbbbbbbpklbxikaXalpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaXalpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaXalpbbbpklbalczfhlkaocdfhoaiczfgiak6mbkkalTmbaAci6hHalhOaAcefgohAaoclSmdxekkcbhlaHceGmdkdnakTmbavcjdfazfhiavazfpbdbhYcbhXinaiavcj;cbfaXfgopblbgLcep9TaLpxeeeeeeeeeeeeeeeegQp9op9Hp9rgLaoakfpblbg8Acep9Ta8AaQp9op9Hp9rg8ApmbzeHdOiAlCvXoQrLgEaoamfpblbg3cep9Ta3aQp9op9Hp9rg3aoaxfpblbg5cep9Ta5aQp9op9Hp9rg5pmbzeHdOiAlCvXoQrLg8EpmbezHdiOAlvCXorQLgQaQpmbedibedibedibediaYp9UgYp9AdbbaiadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaEa8EpmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaLa8ApmwKDYq8AkEx3m5P8Es8FgLa3a5pmwKDYq8AkEx3m5P8Es8Fg8ApmbezHdiOAlvCXorQLgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaLa8ApmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfhiaXczfgXak6mbkkazclfgzad6mbkasavcjdfaqad2;8qbbavavcjdfaqcufad2fad;8qbbaqaDfhDc9:hoalmexikkc9:hoxekcbc99aral9Radcaadca0ESEhokavcj;kbf8Kjjjjbaokwbz:bjjjbk;uzeHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecje;8kbavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhodnaeTmbcmcsaDceSEhkcbhxcbhmcbhDcbhicbhlindnaoaq9nmbc9:hoxikdndnawRbbgrc;Ve0mbavc;abfalarcl4cu7fcsGcitfgPydlhsaPydbhzdnarcsGgPak9pmbavaiarcu7fcsGcdtfydbaxaPEhraPThPdndnadcd9hmbabaDcetfgHaz87ebaHcdfas87ebaHclfar87ebxekabaDcdtfgHazBdbaHclfasBdbaHcwfarBdbkaxaPfhxavc;abfalcitfgHarBdbaHasBdlavaicdtfarBdbavc;abfalcefcsGglcitfgHazBdbaHarBdlaiaPfhialcefhlxdkdndnaPcsSmbamaPfaPc987fcefhmxekaocefhrao8SbbgPcFeGhHdndnaPcu9mmbarhoxekaocvfhoaHcFbGhHcrhPdninar8SbbgOcFbGaPtaHVhHaOcu9kmearcefhraPcrfgPc8J9hmbxdkkarcefhokaHce4cbaHceG9R7amfhmkdndnadcd9hmbabaDcetfgraz87ebarcdfas87ebarclfam87ebxekabaDcdtfgrazBdbarclfasBdbarcwfamBdbkavc;abfalcitfgramBdbarasBdlavaicdtfamBdbavc;abfalcefcsGglcitfgrazBdbaramBdlaicefhialcefhlxekdnarcpe0mbaxcefgOavaiaqarcsGfRbbgPcl49RcsGcdtfydbaPcz6gHEhravaiaP9RcsGcdtfydbaOaHfgsaPcsGgOEhPaOThOdndnadcd9hmbabaDcetfgzax87ebazcdfar87ebazclfaP87ebxekabaDcdtfgzaxBdbazclfarBdbazcwfaPBdbkavaicdtfaxBdbavc;abfalcitfgzarBdbazaxBdlavaicefgicsGcdtfarBdbavc;abfalcefcsGcitfgzaPBdbazarBdlavaiaHfcsGgicdtfaPBdbavc;abfalcdfcsGglcitfgraxBdbaraPBdlalcefhlaiaOfhiasaOfhxxekaxcbaoRbbgzEgAarc;:eSgrfhsazcsGhCazcl4hXdndnazcs0mbascefhOxekashOavaiaX9RcsGcdtfydbhskdndnaCmbaOcefhxxekaOhxavaiaz9RcsGcdtfydbhOkdndnarTmbaocefhrxekaocdfhrao8SbegHcFeGhPdnaHcu9kmbaocofhAaPcFbGhPcrhodninar8SbbgHcFbGaotaPVhPaHcu9kmearcefhraocrfgoc8J9hmbkaAhrxekarcefhrkaPce4cbaPceG9R7amfgmhAkdndnaXcsSmbarhPxekarcefhPar8SbbgocFeGhHdnaocu9kmbarcvfhsaHcFbGhHcrhodninaP8SbbgrcFbGaotaHVhHarcu9kmeaPcefhPaocrfgoc8J9hmbkashPxekaPcefhPkaHce4cbaHceG9R7amfgmhskdndnaCcsSmbaPhoxekaPcefhoaP8SbbgrcFeGhHdnarcu9kmbaPcvfhOaHcFbGhHcrhrdninao8SbbgPcFbGartaHVhHaPcu9kmeaocefhoarcrfgrc8J9hmbkaOhoxekaocefhokaHce4cbaHceG9R7amfgmhOkdndnadcd9hmbabaDcetfgraA87ebarcdfas87ebarclfaO87ebxekabaDcdtfgraABdbarclfasBdbarcwfaOBdbkavc;abfalcitfgrasBdbaraABdlavaicdtfaABdbavc;abfalcefcsGcitfgraOBdbarasBdlavaicefgicsGcdtfasBdbavc;abfalcdfcsGcitfgraABdbaraOBdlavaiazcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhialcifhlkawcefhwalcsGhlaicsGhiaDcifgDae6mbkkcbc99aoaqSEhokavc;aef8Kjjjjbaok:llevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:EPliuo97eue978Jjjjjbca9Rhidndnadcl9hmbdnaec98GglTmbcbhvabhdinadadpbbbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpkbbadczfhdavclfgval6mbkkalae9pmeaiaeciGgvcdtgdVcbczad9R;8kbaiabalcdtfglad;8qbbdnavTmbaiaipblbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpklbkalaiad;8qbbskdnaec98GgxTmbcbhvabhdinadczfglalpbbbgopxbbbbbbFFbbbbbbFFgkp9oadpbbbgDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eaDaopmbediwDqkzHOAKY8AEgoczp:Sep;6egrp;Geaoczp:Reczp:Sep;6egwp;Gep;Kep;Legopxb;:FSb;:FSb;:FSb;:FSawaopxbbbbbbbbbbbbbbbbp:2egqawpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegwawp;Meaoaop;Mearaqaramp9op9rp;Kegoaop;Mep;Kep;Kep;Jep;Negrp;Mepxbbn0bbn0bbn0bbn0gqp;Keczp:Reawarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9op9qgwaoarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogopmwDKYqk8AExm35Ps8E8Fp9qpkbbadaDakp9oawaopmbezHdiOAlvCXorQLp9qpkbbadcafhdavclfgvax6mbkkaxae9pmbaiaeciGgvcitgdfcbcaad9R;8kbaiabaxcitfglad;8qbbdnavTmbaiaipblzgopxbbbbbbFFbbbbbbFFgkp9oaipblbgDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eaDaopmbediwDqkzHOAKY8AEgoczp:Sep;6egrp;Geaoczp:Reczp:Sep;6egwp;Gep;Kep;Legopxb;:FSb;:FSb;:FSb;:FSawaopxbbbbbbbbbbbbbbbbp:2egqawpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegwawp;Meaoaop;Mearaqaramp9op9rp;Kegoaop;Mep;Kep;Kep;Jep;Negrp;Mepxbbn0bbn0bbn0bbn0gqp;Keczp:Reawarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9op9qgwaoarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogopmwDKYqk8AExm35Ps8E8Fp9qpklzaiaDakp9oawaopmbezHdiOAlvCXorQLp9qpklbkalaiad;8qbbkk;4wllue97euv978Jjjjjbc8W9Rhidnaec98GglTmbcbhvabhoinaiaopbbbgraoczfgwpbbbgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklbaopxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaqakp;Mearp;Keczp:ReaDakp;Mearp;Keamp9op9qgkpmbezHdiOAlvCXorQLgrp5baipblbpEb:T:j83ibaocwfarp5eaipblbpEe:T:j83ibawaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblbpEd:T:j83ibaocKfakp5eaipblbpEi:T:j83ibaocafhoavclfgval6mbkkdnalae9pmbaiaeciGgvcitgofcbcaao9R;8kbaiabalcitfgwao;8qbbdnavTmbaiaipblbgraipblzgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklaaipxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaqakp;Mearp;Keczp:ReaDakp;Mearp;Keamp9op9qgkpmbezHdiOAlvCXorQLgrp5baipblapEb:T:j83ibaiarp5eaipblapEe:T:j83iwaiaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblapEd:T:j83izaiakp5eaipblapEi:T:j83iKkawaiao;8qbbkk:Pddiue978Jjjjjbc;ab9Rhidnadcd4ae2glc98GgvTmbcbhdabheinaeaepbbbgocwp:Recwp:Sep;6eaocep:SepxbbjZbbjZbbjZbbjZp:UepxbbjFbbjFbbjFbbjFp9op;Mepkbbaeczfheadclfgdav6mbkkdnaval9pmbaialciGgdcdtgeVcbc;abae9R;8kbaiabavcdtfgvae;8qbbdnadTmbaiaipblbgocwp:Recwp:Sep;6eaocep:SepxbbjZbbjZbbjZbbjZp:UepxbbjFbbjFbbjFbbjFp9op;Mepklbkavaiae;8qbbkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikkkebcjwklz9Tbb",e=new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,3,2,0,0,5,3,1,0,1,12,1,0,10,22,2,12,0,65,0,65,0,65,0,252,10,0,0,11,7,0,65,0,253,15,26,11]),i=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.validate(e)?A:n,s,o=WebAssembly.instantiate(a(t),{}).then(function(p){s=p.instance,s.exports.__wasm_call_ctors()});function a(p){for(var f=new Uint8Array(p.length),Q=0;Q<p.length;++Q){var w=p.charCodeAt(Q);f[Q]=w>96?w-97:w>64?w-39:w+4}for(var b=0,Q=0;Q<p.length;++Q)f[b++]=f[Q]<60?i[f[Q]]:(f[Q]-60)*64+f[++Q];return f.buffer.slice(0,b)}function r(p,f,Q,w,b,S){var x=s.exports.sbrk,D=Q+3&-4,F=x(D*w),P=x(b.length),Y=new Uint8Array(s.exports.memory.buffer);Y.set(b,P);var O=p(F,Q,w,P,b.length);if(O==0&&S&&S(F,D,w),f.set(Y.subarray(F,F+Q*w)),x(F-x(0)),O!=0)throw new Error("Malformed buffer data: "+O)}var l={NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp"},g={ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"},c=[],I=0;function B(p){var f={object:new Worker(p),pending:0,requests:{}};return f.object.onmessage=function(Q){var w=Q.data;f.pending-=w.count,f.requests[w.id][w.action](w.value),delete f.requests[w.id]},f}function C(p){for(var f="var instance; var ready = WebAssembly.instantiate(new Uint8Array(["+new Uint8Array(a(t))+"]), {}).then(function(result) { instance = result.instance; instance.exports.__wasm_call_ctors(); });self.onmessage = workerProcess;"+r.toString()+E.toString(),Q=new Blob([f],{type:"text/javascript"}),w=URL.createObjectURL(Q),b=0;b<p;++b)c[b]=B(w);URL.revokeObjectURL(w)}function d(p,f,Q,w,b){for(var S=c[0],x=1;x<c.length;++x)c[x].pending<S.pending&&(S=c[x]);return new Promise(function(D,F){var P=new Uint8Array(Q),Y=I++;S.pending+=p,S.requests[Y]={resolve:D,reject:F},S.object.postMessage({id:Y,count:p,size:f,source:P,mode:w,filter:b},[P.buffer])})}function E(p){o.then(function(){var f=p.data;try{var Q=new Uint8Array(f.count*f.size);r(s.exports[f.mode],Q,f.count,f.size,f.source,s.exports[f.filter]),self.postMessage({id:f.id,count:f.count,action:"resolve",value:Q},[Q.buffer])}catch(w){self.postMessage({id:f.id,count:f.count,action:"reject",value:w})}})}return{ready:o,supported:!0,useWorkers:function(p){C(p)},decodeVertexBuffer:function(p,f,Q,w,b){r(s.exports.meshopt_decodeVertexBuffer,p,f,Q,w,s.exports[l[b]])},decodeIndexBuffer:function(p,f,Q,w){r(s.exports.meshopt_decodeIndexBuffer,p,f,Q,w)},decodeIndexSequence:function(p,f,Q,w){r(s.exports.meshopt_decodeIndexSequence,p,f,Q,w)},decodeGltfBuffer:function(p,f,Q,w,b,S){r(s.exports[g[b]],p,f,Q,w,s.exports[l[S]])},decodeGltfBufferAsync:function(p,f,Q,w,b){return c.length>0?d(p,f,Q,g[w],l[b]):o.then(function(){var S=new Uint8Array(p*f);return r(s.exports[g[w]],S,p,f,Q,s.exports[l[b]]),S})}}}();const Yi=new WeakMap;class Mr extends Re{constructor(A){super(A),this.decoderPath="",this.decoderConfig={},this.decoderBinary=null,this.decoderPending=null,this.workerLimit=4,this.workerPool=[],this.workerNextTaskID=1,this.workerSourceURL="",this.defaultAttributeIDs={position:"POSITION",normal:"NORMAL",color:"COLOR",uv:"TEX_COORD"},this.defaultAttributeTypes={position:"Float32Array",normal:"Float32Array",color:"Float32Array",uv:"Float32Array"}}setDecoderPath(A){return this.decoderPath=A,this}setDecoderConfig(A){return this.decoderConfig=A,this}setWorkerLimit(A){return this.workerLimit=A,this}load(A,e,i,t){const s=new Be(this.manager);s.setPath(this.path),s.setResponseType("arraybuffer"),s.setRequestHeader(this.requestHeader),s.setWithCredentials(this.withCredentials),s.load(A,o=>{this.parse(o,e,t)},i,t)}parse(A,e,i=()=>{}){this.decodeDracoFile(A,e,null,null,lA,i).catch(i)}decodeDracoFile(A,e,i,t,s=WA,o=()=>{}){const a={attributeIDs:i||this.defaultAttributeIDs,attributeTypes:t||this.defaultAttributeTypes,useUniqueIDs:!!i,vertexColorSpace:s};return this.decodeGeometry(A,a).then(e).catch(o)}decodeGeometry(A,e){const i=JSON.stringify(e);if(Yi.has(A)){const r=Yi.get(A);if(r.key===i)return r.promise;if(A.byteLength===0)throw new Error("THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.")}let t;const s=this.workerNextTaskID++,o=A.byteLength,a=this._getWorker(s,o).then(r=>(t=r,new Promise((l,g)=>{t._callbacks[s]={resolve:l,reject:g},t.postMessage({type:"decode",id:s,taskConfig:e,buffer:A},[A])}))).then(r=>this._createGeometry(r.geometry));return a.catch(()=>!0).then(()=>{t&&s&&this._releaseTask(t,s)}),Yi.set(A,{key:i,promise:a}),a}_createGeometry(A){const e=new oe;A.index&&e.setIndex(new LA(A.index.array,1));for(let i=0;i<A.attributes.length;i++){const t=A.attributes[i],s=t.name,o=t.array,a=t.itemSize,r=new LA(o,a);s==="color"&&(this._assignVertexColorSpace(r,t.vertexColorSpace),r.normalized=!(o instanceof Float32Array)),e.setAttribute(s,r)}return e}_assignVertexColorSpace(A,e){if(e!==lA)return;const i=new DA;for(let t=0,s=A.count;t<s;t++)i.fromBufferAttribute(A,t),ZA.toWorkingColorSpace(i,lA),A.setXYZ(t,i.r,i.g,i.b)}_loadLibrary(A,e){const i=new Be(this.manager);return i.setPath(this.decoderPath),i.setResponseType(e),i.setWithCredentials(this.withCredentials),new Promise((t,s)=>{i.load(A,t,void 0,s)})}preload(){return this._initDecoder(),this}_initDecoder(){if(this.decoderPending)return this.decoderPending;const A=typeof WebAssembly!="object"||this.decoderConfig.type==="js",e=[];return A?e.push(this._loadLibrary("draco_decoder.js","text")):(e.push(this._loadLibrary("draco_wasm_wrapper.js","text")),e.push(this._loadLibrary("draco_decoder.wasm","arraybuffer"))),this.decoderPending=Promise.all(e).then(i=>{const t=i[0];A||(this.decoderConfig.wasmBinary=i[1]);const s=Gr.toString(),o=["/* draco decoder */",t,"","/* worker */",s.substring(s.indexOf("{")+1,s.lastIndexOf("}"))].join(`
2
- `);this.workerSourceURL=URL.createObjectURL(new Blob([o]))}),this.decoderPending}_getWorker(A,e){return this._initDecoder().then(()=>{if(this.workerPool.length<this.workerLimit){const t=new Worker(this.workerSourceURL);t._callbacks={},t._taskCosts={},t._taskLoad=0,t.postMessage({type:"init",decoderConfig:this.decoderConfig}),t.onmessage=function(s){const o=s.data;switch(o.type){case"decode":t._callbacks[o.id].resolve(o);break;case"error":t._callbacks[o.id].reject(o);break;default:console.error('THREE.DRACOLoader: Unexpected message, "'+o.type+'"')}},this.workerPool.push(t)}else this.workerPool.sort(function(t,s){return t._taskLoad>s._taskLoad?-1:1});const i=this.workerPool[this.workerPool.length-1];return i._taskCosts[A]=e,i._taskLoad+=e,i})}_releaseTask(A,e){A._taskLoad-=A._taskCosts[e],delete A._callbacks[e],delete A._taskCosts[e]}debug(){console.log("Task load: ",this.workerPool.map(A=>A._taskLoad))}dispose(){for(let A=0;A<this.workerPool.length;++A)this.workerPool[A].terminate();return this.workerPool.length=0,this.workerSourceURL!==""&&URL.revokeObjectURL(this.workerSourceURL),this}}function Gr(){let n,A;onmessage=function(o){const a=o.data;switch(a.type){case"init":n=a.decoderConfig,A=new Promise(function(g){n.onModuleLoaded=function(c){g({draco:c})},DracoDecoderModule(n)});break;case"decode":const r=a.buffer,l=a.taskConfig;A.then(g=>{const c=g.draco,I=new c.Decoder;try{const B=e(c,I,new Int8Array(r),l),C=B.attributes.map(d=>d.array.buffer);B.index&&C.push(B.index.array.buffer),self.postMessage({type:"decode",id:a.id,geometry:B},C)}catch(B){console.error(B),self.postMessage({type:"error",id:a.id,error:B.message})}finally{c.destroy(I)}});break}};function e(o,a,r,l){const g=l.attributeIDs,c=l.attributeTypes;let I,B;const C=a.GetEncodedGeometryType(r);if(C===o.TRIANGULAR_MESH)I=new o.Mesh,B=a.DecodeArrayToMesh(r,r.byteLength,I);else if(C===o.POINT_CLOUD)I=new o.PointCloud,B=a.DecodeArrayToPointCloud(r,r.byteLength,I);else throw new Error("THREE.DRACOLoader: Unexpected geometry type.");if(!B.ok()||I.ptr===0)throw new Error("THREE.DRACOLoader: Decoding failed: "+B.error_msg());const d={index:null,attributes:[]};for(const E in g){const p=self[c[E]];let f,Q;if(l.useUniqueIDs)Q=g[E],f=a.GetAttributeByUniqueId(I,Q);else{if(Q=a.GetAttributeId(I,o[g[E]]),Q===-1)continue;f=a.GetAttribute(I,Q)}const w=t(o,a,I,E,p,f);E==="color"&&(w.vertexColorSpace=l.vertexColorSpace),d.attributes.push(w)}return C===o.TRIANGULAR_MESH&&(d.index=i(o,a,I)),o.destroy(I),d}function i(o,a,r){const l=r.num_faces()*3,g=l*4,c=o._malloc(g);a.GetTrianglesUInt32Array(r,g,c);const I=new Uint32Array(o.HEAPF32.buffer,c,l).slice();return o._free(c),{array:I,itemSize:1}}function t(o,a,r,l,g,c){const I=c.num_components(),B=r.num_points()*I,C=B*g.BYTES_PER_ELEMENT,d=s(o,g),E=o._malloc(C);a.GetAttributeDataArrayForAllPoints(r,c,d,C,E);const p=new g(o.HEAPF32.buffer,E,B).slice();return o._free(E),{name:l,array:p,itemSize:I}}function s(o,a){switch(a){case Float32Array:return o.DT_FLOAT32;case Int8Array:return o.DT_INT8;case Int16Array:return o.DT_INT16;case Int32Array:return o.DT_INT32;case Uint8Array:return o.DT_UINT8;case Uint16Array:return o.DT_UINT16;case Uint32Array:return o.DT_UINT32}}}class Tr{constructor(A=4){this.pool=A,this.queue=[],this.workers=[],this.workersResolve=[],this.workerStatus=0}_initWorker(A){if(!this.workers[A]){const e=this.workerCreator();e.addEventListener("message",this._onMessage.bind(this,A)),this.workers[A]=e}}_getIdleWorker(){for(let A=0;A<this.pool;A++)if(!(this.workerStatus&1<<A))return A;return-1}_onMessage(A,e){const i=this.workersResolve[A];if(i&&i(e),this.queue.length){const{resolve:t,msg:s,transfer:o}=this.queue.shift();this.workersResolve[A]=t,this.workers[A].postMessage(s,o)}else this.workerStatus^=1<<A}setWorkerCreator(A){this.workerCreator=A}setWorkerLimit(A){this.pool=A}postMessage(A,e){return new Promise(i=>{const t=this._getIdleWorker();t!==-1?(this._initWorker(t),this.workerStatus|=1<<t,this.workersResolve[t]=i,this.workers[t].postMessage(A,e)):this.queue.push({resolve:i,msg:A,transfer:e})})}dispose(){this.workers.forEach(A=>A.terminate()),this.workersResolve.length=0,this.workers.length=0,this.queue.length=0,this.workerStatus=0}}const Nr=0,ho=2,Lr=1,Io=2,Ur=0,_r=1,Pr=10,Hr=0,Bo=9,Co=15,Eo=16,uo=22,po=37,Qo=43,fo=76,mo=83,bo=97,wo=100,yo=103,Do=109,So=122,vo=123,qr=131,Or=132,Kr=133,Yr=134,Jr=137,jr=138,zr=141,Vr=142,Xr=145,Wr=146,xo=148,Ro=152,Zr=157,$r=158,Fo=165,ko=166,Ji=1000066e3;class ft{constructor(A,e,i,t){this._dataView=void 0,this._littleEndian=void 0,this._offset=void 0,this._dataView=new DataView(A.buffer,A.byteOffset+e,i),this._littleEndian=t,this._offset=0}_nextUint8(){const A=this._dataView.getUint8(this._offset);return this._offset+=1,A}_nextUint16(){const A=this._dataView.getUint16(this._offset,this._littleEndian);return this._offset+=2,A}_nextUint32(){const A=this._dataView.getUint32(this._offset,this._littleEndian);return this._offset+=4,A}_nextUint64(){const A=this._dataView.getUint32(this._offset,this._littleEndian)+4294967296*this._dataView.getUint32(this._offset+4,this._littleEndian);return this._offset+=8,A}_nextInt32(){const A=this._dataView.getInt32(this._offset,this._littleEndian);return this._offset+=4,A}_nextUint8Array(A){const e=new Uint8Array(this._dataView.buffer,this._dataView.byteOffset+this._offset,A);return this._offset+=A,e}_skip(A){return this._offset+=A,this}_scan(A,e=0){const i=this._offset;let t=0;for(;this._dataView.getUint8(this._offset)!==e&&t<A;)t++,this._offset++;return t<A&&this._offset++,new Uint8Array(this._dataView.buffer,this._dataView.byteOffset+i,t)}}const zA=[171,75,84,88,32,50,48,187,13,10,26,10];function Mo(n){return new TextDecoder().decode(n)}function Ag(n){const A=new Uint8Array(n.buffer,n.byteOffset,zA.length);if(A[0]!==zA[0]||A[1]!==zA[1]||A[2]!==zA[2]||A[3]!==zA[3]||A[4]!==zA[4]||A[5]!==zA[5]||A[6]!==zA[6]||A[7]!==zA[7]||A[8]!==zA[8]||A[9]!==zA[9]||A[10]!==zA[10]||A[11]!==zA[11])throw new Error("Missing KTX 2.0 identifier.");const e={vkFormat:0,typeSize:1,pixelWidth:0,pixelHeight:0,pixelDepth:0,layerCount:0,faceCount:1,levelCount:0,supercompressionScheme:0,levels:[],dataFormatDescriptor:[{vendorId:0,descriptorType: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:[]}],keyValue:{},globalData:null},i=17*Uint32Array.BYTES_PER_ELEMENT,t=new ft(n,zA.length,i,!0);e.vkFormat=t._nextUint32(),e.typeSize=t._nextUint32(),e.pixelWidth=t._nextUint32(),e.pixelHeight=t._nextUint32(),e.pixelDepth=t._nextUint32(),e.layerCount=t._nextUint32(),e.faceCount=t._nextUint32(),e.levelCount=t._nextUint32(),e.supercompressionScheme=t._nextUint32();const s=t._nextUint32(),o=t._nextUint32(),a=t._nextUint32(),r=t._nextUint32(),l=t._nextUint64(),g=t._nextUint64(),c=3*Math.max(e.levelCount,1)*8,I=new ft(n,zA.length+i,c,!0);for(let eA=0,sA=Math.max(e.levelCount,1);eA<sA;eA++)e.levels.push({levelData:new Uint8Array(n.buffer,n.byteOffset+I._nextUint64(),I._nextUint64()),uncompressedByteLength:I._nextUint64()});const B=new ft(n,s,o,!0);B._skip(4);const C=B._nextUint16(),d=B._nextUint16(),E=B._nextUint16(),p=B._nextUint16(),f={vendorId:C,descriptorType:d,versionNumber:E,colorModel:B._nextUint8(),colorPrimaries:B._nextUint8(),transferFunction:B._nextUint8(),flags:B._nextUint8(),texelBlockDimension:[B._nextUint8(),B._nextUint8(),B._nextUint8(),B._nextUint8()],bytesPlane:[B._nextUint8(),B._nextUint8(),B._nextUint8(),B._nextUint8(),B._nextUint8(),B._nextUint8(),B._nextUint8(),B._nextUint8()],samples:[]},Q=(p/4-6)/4;for(let eA=0;eA<Q;eA++){const sA={bitOffset:B._nextUint16(),bitLength:B._nextUint8(),channelType:B._nextUint8(),samplePosition:[B._nextUint8(),B._nextUint8(),B._nextUint8(),B._nextUint8()],sampleLower:Number.NEGATIVE_INFINITY,sampleUpper:Number.POSITIVE_INFINITY};64&sA.channelType?(sA.sampleLower=B._nextInt32(),sA.sampleUpper=B._nextInt32()):(sA.sampleLower=B._nextUint32(),sA.sampleUpper=B._nextUint32()),f.samples[eA]=sA}e.dataFormatDescriptor.length=0,e.dataFormatDescriptor.push(f);const w=new ft(n,a,r,!0);for(;w._offset<r;){const eA=w._nextUint32(),sA=w._scan(eA),nA=Mo(sA);if(e.keyValue[nA]=w._nextUint8Array(eA-sA.byteLength-1),nA.match(/^ktx/i)){const CA=Mo(e.keyValue[nA]);e.keyValue[nA]=CA.substring(0,CA.lastIndexOf("\0"))}w._skip(eA%4?4-eA%4:0)}if(g<=0)return e;const b=new ft(n,l,g,!0),S=b._nextUint16(),x=b._nextUint16(),D=b._nextUint32(),F=b._nextUint32(),P=b._nextUint32(),Y=b._nextUint32(),O=[];for(let eA=0,sA=Math.max(e.levelCount,1);eA<sA;eA++)O.push({imageFlags:b._nextUint32(),rgbSliceByteOffset:b._nextUint32(),rgbSliceByteLength:b._nextUint32(),alphaSliceByteOffset:b._nextUint32(),alphaSliceByteLength:b._nextUint32()});const X=l+b._offset,_=X+D,W=_+F,j=W+P,AA=new Uint8Array(n.buffer,n.byteOffset+X,D),Z=new Uint8Array(n.buffer,n.byteOffset+_,F),cA=new Uint8Array(n.buffer,n.byteOffset+W,P),yA=new Uint8Array(n.buffer,n.byteOffset+j,Y);return e.globalData={endpointCount:S,selectorCount:x,imageDescs:O,endpointsData:AA,selectorsData:Z,tablesData:cA,extendedData:yA},e}let ji,Te,zi;const Vi={env:{emscripten_notify_memory_growth:function(n){zi=new Uint8Array(Te.exports.memory.buffer)}}};class eg{init(){return ji||(ji=typeof fetch<"u"?fetch("data:application/wasm;base64,"+Go).then(A=>A.arrayBuffer()).then(A=>WebAssembly.instantiate(A,Vi)).then(this._init):WebAssembly.instantiate(Buffer.from(Go,"base64"),Vi).then(this._init),ji)}_init(A){Te=A.instance,Vi.env.emscripten_notify_memory_growth(0)}decode(A,e=0){if(!Te)throw new Error("ZSTDDecoder: Await .init() before decoding.");const i=A.byteLength,t=Te.exports.malloc(i);zi.set(A,t),e=e||Number(Te.exports.ZSTD_findDecompressedSize(t,i));const s=Te.exports.malloc(e),o=Te.exports.ZSTD_decompress(s,e,t,i),a=zi.slice(s,s+o);return Te.exports.free(t),Te.exports.free(s),a}}const Go="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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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",tg="display-p3",ig="display-p3-linear",Xi=new WeakMap;let Wi=0,Zi;class he extends Re{constructor(A){super(A),this.transcoderPath="",this.transcoderBinary=null,this.transcoderPending=null,this.workerPool=new Tr,this.workerSourceURL="",this.workerConfig=null,typeof MSC_TRANSCODER<"u"&&console.warn('THREE.KTX2Loader: Please update to latest "basis_transcoder". "msc_basis_transcoder" is no longer supported in three.js r125+.')}setTranscoderPath(A){return this.transcoderPath=A,this}setWorkerLimit(A){return this.workerPool.setWorkerLimit(A),this}async detectSupportAsync(A){return this.workerConfig={astcSupported:await A.hasFeatureAsync("texture-compression-astc"),astcHDRSupported:!1,etc1Supported:await A.hasFeatureAsync("texture-compression-etc1"),etc2Supported:await A.hasFeatureAsync("texture-compression-etc2"),dxtSupported:await A.hasFeatureAsync("texture-compression-bc"),bptcSupported:await A.hasFeatureAsync("texture-compression-bptc"),pvrtcSupported:await A.hasFeatureAsync("texture-compression-pvrtc")},this}detectSupport(A){return A.isWebGPURenderer===!0?this.workerConfig={astcSupported:A.hasFeature("texture-compression-astc"),astcHDRSupported:!1,etc1Supported:A.hasFeature("texture-compression-etc1"),etc2Supported:A.hasFeature("texture-compression-etc2"),dxtSupported:A.hasFeature("texture-compression-bc"),bptcSupported:A.hasFeature("texture-compression-bptc"),pvrtcSupported:A.hasFeature("texture-compression-pvrtc")}:this.workerConfig={astcSupported:A.extensions.has("WEBGL_compressed_texture_astc"),astcHDRSupported:A.extensions.has("WEBGL_compressed_texture_astc")&&A.extensions.get("WEBGL_compressed_texture_astc").getSupportedProfiles().includes("hdr"),etc1Supported:A.extensions.has("WEBGL_compressed_texture_etc1"),etc2Supported:A.extensions.has("WEBGL_compressed_texture_etc"),dxtSupported:A.extensions.has("WEBGL_compressed_texture_s3tc"),bptcSupported:A.extensions.has("EXT_texture_compression_bptc"),pvrtcSupported:A.extensions.has("WEBGL_compressed_texture_pvrtc")||A.extensions.has("WEBKIT_WEBGL_compressed_texture_pvrtc")},this}init(){if(!this.transcoderPending){const A=new Be(this.manager);A.setPath(this.transcoderPath),A.setWithCredentials(this.withCredentials);const e=A.loadAsync("basis_transcoder.js"),i=new Be(this.manager);i.setPath(this.transcoderPath),i.setResponseType("arraybuffer"),i.setWithCredentials(this.withCredentials);const t=i.loadAsync("basis_transcoder.wasm");this.transcoderPending=Promise.all([e,t]).then(([s,o])=>{const a=he.BasisWorker.toString(),r=["/* constants */","let _EngineFormat = "+JSON.stringify(he.EngineFormat),"let _EngineType = "+JSON.stringify(he.EngineType),"let _TranscoderFormat = "+JSON.stringify(he.TranscoderFormat),"let _BasisFormat = "+JSON.stringify(he.BasisFormat),"/* basis_transcoder.js */",s,"/* worker */",a.substring(a.indexOf("{")+1,a.lastIndexOf("}"))].join(`
3
- `);this.workerSourceURL=URL.createObjectURL(new Blob([r])),this.transcoderBinary=o,this.workerPool.setWorkerCreator(()=>{const l=new Worker(this.workerSourceURL),g=this.transcoderBinary.slice(0);return l.postMessage({type:"init",config:this.workerConfig,transcoderBinary:g},[g]),l})}),Wi>0&&console.warn("THREE.KTX2Loader: Multiple active KTX2 loaders may cause performance issues. Use a single KTX2Loader instance, or call .dispose() on old instances."),Wi++}return this.transcoderPending}load(A,e,i,t){if(this.workerConfig===null)throw new Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");const s=new Be(this.manager);s.setPath(this.path),s.setCrossOrigin(this.crossOrigin),s.setWithCredentials(this.withCredentials),s.setResponseType("arraybuffer"),s.load(A,o=>{this.parse(o,e,t)},i,t)}parse(A,e,i){if(this.workerConfig===null)throw new Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");if(Xi.has(A))return Xi.get(A).promise.then(e).catch(i);this._createTexture(A).then(t=>e?e(t):null).catch(i)}_createTextureFrom(A,e){const{type:i,error:t,data:{faces:s,width:o,height:a,format:r,type:l,dfdFlags:g}}=A;if(i==="error")return Promise.reject(t);let c;if(e.faceCount===6)c=new Ba(s,r,l);else{const I=s[0].mipmaps;c=e.layerCount>1?new Ca(I,o,a,e.layerCount,r,l):new Et(I,o,a,r,l)}return c.minFilter=s[0].mipmaps.length===1?ne:It,c.magFilter=ne,c.generateMipmaps=!1,c.needsUpdate=!0,c.colorSpace=To(e),c.premultiplyAlpha=!!(g&Lr),c}async _createTexture(A,e={}){const i=Ag(new Uint8Array(A)),t=i.vkFormat===Ji&&i.dataFormatDescriptor[0].colorModel===167;if(!(i.vkFormat===Hr||t&&!this.workerConfig.astcHDRSupported))return og(i);const s=e,o=this.init().then(()=>this.workerPool.postMessage({type:"transcode",buffer:A,taskConfig:s},[A])).then(a=>this._createTextureFrom(a.data,i));return Xi.set(A,{promise:o}),o}dispose(){this.workerPool.dispose(),this.workerSourceURL&&URL.revokeObjectURL(this.workerSourceURL),Wi--}}he.BasisFormat={ETC1S:0,UASTC:1,UASTC_HDR:2},he.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},he.EngineFormat={RGBAFormat:He,RGBA_ASTC_4x4_Format:Jt,RGB_BPTC_UNSIGNED_Format:fa,RGBA_BPTC_Format:xi,RGBA_ETC2_EAC_Format:zs,RGBA_PVRTC_4BPPV1_Format:Qa,RGBA_S3TC_DXT5_Format:Ri,RGB_ETC1_Format:pa,RGB_ETC2_Format:Vs,RGB_PVRTC_4BPPV1_Format:ua,RGBA_S3TC_DXT1_Format:Fi},he.EngineType={UnsignedByteType:Ee,HalfFloatType:$A,FloatType:de},he.BasisWorker=function(){let n,A,e;const i=_EngineFormat,t=_EngineType,s=_TranscoderFormat,o=_BasisFormat;self.addEventListener("message",function(C){const d=C.data;switch(d.type){case"init":n=d.config,a(d.transcoderBinary);break;case"transcode":A.then(()=>{try{const{faces:E,buffers:p,width:f,height:Q,hasAlpha:w,format:b,type:S,dfdFlags:x}=r(d.buffer);self.postMessage({type:"transcode",id:d.id,data:{faces:E,width:f,height:Q,hasAlpha:w,format:b,type:S,dfdFlags:x}},p)}catch(E){console.error(E),self.postMessage({type:"error",id:d.id,error:E.message})}});break}});function a(C){A=new Promise(d=>{e={wasmBinary:C,onRuntimeInitialized:d},BASIS(e)}).then(()=>{e.initializeBasis(),e.KTX2File===void 0&&console.warn("THREE.KTX2Loader: Please update Basis Universal transcoder.")})}function r(C){const d=new e.KTX2File(new Uint8Array(C));function E(){d.close(),d.delete()}if(!d.isValid())throw E(),new Error("THREE.KTX2Loader: Invalid or unsupported .ktx2 file");let p;if(d.isUASTC())p=o.UASTC;else if(d.isETC1S())p=o.ETC1S;else if(d.isHDR())p=o.UASTC_HDR;else throw new Error("THREE.KTX2Loader: Unknown Basis encoding");const f=d.getWidth(),Q=d.getHeight(),w=d.getLayers()||1,b=d.getLevels(),S=d.getFaces(),x=d.getHasAlpha(),D=d.getDFDFlags(),{transcoderFormat:F,engineFormat:P,engineType:Y}=c(p,f,Q,x);if(!f||!Q||!b)throw E(),new Error("THREE.KTX2Loader: Invalid texture");if(!d.startTranscoding())throw E(),new Error("THREE.KTX2Loader: .startTranscoding failed");const O=[],X=[];for(let _=0;_<S;_++){const W=[];for(let j=0;j<b;j++){const AA=[];let Z,cA;for(let eA=0;eA<w;eA++){const sA=d.getImageLevelInfo(j,eA,_);_===0&&j===0&&eA===0&&(sA.origWidth%4!==0||sA.origHeight%4!==0)&&console.warn("THREE.KTX2Loader: ETC1S and UASTC textures should use multiple-of-four dimensions."),b>1?(Z=sA.origWidth,cA=sA.origHeight):(Z=sA.width,cA=sA.height);let nA=new Uint8Array(d.getImageTranscodedSizeInBytes(j,eA,0,F));const CA=d.transcodeImage(nA,j,eA,_,F,0,-1,-1);if(Y===t.HalfFloatType&&(nA=new Uint16Array(nA.buffer,nA.byteOffset,nA.byteLength/Uint16Array.BYTES_PER_ELEMENT)),!CA)throw E(),new Error("THREE.KTX2Loader: .transcodeImage failed.");AA.push(nA)}const yA=B(AA);W.push({data:yA,width:Z,height:cA}),X.push(yA.buffer)}O.push({mipmaps:W,width:f,height:Q,format:P,type:Y})}return E(),{faces:O,buffers:X,width:f,height:Q,hasAlpha:x,dfdFlags:D,format:P,type:Y}}const l=[{if:"astcSupported",basisFormat:[o.UASTC],transcoderFormat:[s.ASTC_4x4,s.ASTC_4x4],engineFormat:[i.RGBA_ASTC_4x4_Format,i.RGBA_ASTC_4x4_Format],engineType:[t.UnsignedByteType],priorityETC1S:1/0,priorityUASTC:1,needsPowerOfTwo:!1},{if:"bptcSupported",basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[s.BC7_M5,s.BC7_M5],engineFormat:[i.RGBA_BPTC_Format,i.RGBA_BPTC_Format],engineType:[t.UnsignedByteType],priorityETC1S:3,priorityUASTC:2,needsPowerOfTwo:!1},{if:"dxtSupported",basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[s.BC1,s.BC3],engineFormat:[i.RGBA_S3TC_DXT1_Format,i.RGBA_S3TC_DXT5_Format],engineType:[t.UnsignedByteType],priorityETC1S:4,priorityUASTC:5,needsPowerOfTwo:!1},{if:"etc2Supported",basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[s.ETC1,s.ETC2],engineFormat:[i.RGB_ETC2_Format,i.RGBA_ETC2_EAC_Format],engineType:[t.UnsignedByteType],priorityETC1S:1,priorityUASTC:3,needsPowerOfTwo:!1},{if:"etc1Supported",basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[s.ETC1],engineFormat:[i.RGB_ETC1_Format],engineType:[t.UnsignedByteType],priorityETC1S:2,priorityUASTC:4,needsPowerOfTwo:!1},{if:"pvrtcSupported",basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[s.PVRTC1_4_RGB,s.PVRTC1_4_RGBA],engineFormat:[i.RGB_PVRTC_4BPPV1_Format,i.RGBA_PVRTC_4BPPV1_Format],engineType:[t.UnsignedByteType],priorityETC1S:5,priorityUASTC:6,needsPowerOfTwo:!0},{if:"bptcSupported",basisFormat:[o.UASTC_HDR],transcoderFormat:[s.BC6H],engineFormat:[i.RGB_BPTC_UNSIGNED_Format],engineType:[t.HalfFloatType],priorityHDR:1,needsPowerOfTwo:!1},{basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[s.RGBA32,s.RGBA32],engineFormat:[i.RGBAFormat,i.RGBAFormat],engineType:[t.UnsignedByteType,t.UnsignedByteType],priorityETC1S:100,priorityUASTC:100,needsPowerOfTwo:!1},{basisFormat:[o.UASTC_HDR],transcoderFormat:[s.RGBA_HALF],engineFormat:[i.RGBAFormat],engineType:[t.HalfFloatType],priorityHDR:100,needsPowerOfTwo:!1}],g={[o.ETC1S]:l.filter(C=>C.basisFormat.includes(o.ETC1S)).sort((C,d)=>C.priorityUASTC-d.priorityUASTC),[o.UASTC]:l.filter(C=>C.basisFormat.includes(o.UASTC)).sort((C,d)=>C.priorityUASTC-d.priorityUASTC),[o.UASTC_HDR]:l.filter(C=>C.basisFormat.includes(o.UASTC_HDR)).sort((C,d)=>C.priorityHDR-d.priorityHDR)};function c(C,d,E,p){const f=g[C];for(let Q=0;Q<f.length;Q++){const w=f[Q];if(w.if&&!n[w.if]||!w.basisFormat.includes(C)||p&&w.transcoderFormat.length<2||w.needsPowerOfTwo&&!(I(d)&&I(E)))continue;const b=w.transcoderFormat[p?1:0],S=w.engineFormat[p?1:0],x=w.engineType[0];return{transcoderFormat:b,engineFormat:S,engineType:x}}throw new Error("THREE.KTX2Loader: Failed to identify transcoding target.")}function I(C){return C<=2?!0:(C&C-1)===0&&C!==0}function B(C){if(C.length===1)return C[0];let d=0;for(let f=0;f<C.length;f++){const Q=C[f];d+=Q.byteLength}const E=new Uint8Array(d);let p=0;for(let f=0;f<C.length;f++){const Q=C[f];E.set(Q,p),p+=Q.byteLength}return E}};const sg=new Set([He,ki,dt,it]),$i={[Do]:He,[bo]:He,[po]:He,[Qo]:He,[yo]:dt,[mo]:dt,[Eo]:dt,[uo]:dt,[wo]:it,[fo]:it,[Co]:it,[Bo]:it,[vo]:ki,[So]:ki,[xo]:Vs,[Ro]:zs,[Ji]:Jt,[$r]:Jt,[Zr]:Jt,[ko]:js,[Fo]:js,[Kr]:Fi,[Yr]:Fi,[qr]:Js,[Or]:Js,[jr]:Ys,[Jr]:Ys,[Vr]:Ri,[zr]:Ri,[Wr]:xi,[Xr]:xi},mt={[Do]:de,[bo]:$A,[po]:Ee,[Qo]:Ee,[yo]:de,[mo]:$A,[Eo]:Ee,[uo]:Ee,[wo]:de,[fo]:$A,[Co]:Ee,[Bo]:Ee,[vo]:Ws,[So]:Xs,[xo]:Ee,[Ro]:Ee,[Ji]:$A,[ko]:Ee,[Fo]:Ee};async function og(n){const{vkFormat:A}=n;if($i[A]===void 0)throw new Error("THREE.KTX2Loader: Unsupported vkFormat.");let e;n.supercompressionScheme===ho&&(Zi||(Zi=new Promise(async o=>{const a=new eg;await a.init(),o(a)})),e=await Zi);const i=[];for(let o=0;o<n.levels.length;o++){const a=Math.max(1,n.pixelWidth>>o),r=Math.max(1,n.pixelHeight>>o),l=n.pixelDepth?Math.max(1,n.pixelDepth>>o):0,g=n.levels[o];let c;if(n.supercompressionScheme===Nr)c=g.levelData;else if(n.supercompressionScheme===ho)c=e.decode(g.levelData,g.uncompressedByteLength);else throw new Error("THREE.KTX2Loader: Unsupported supercompressionScheme.");let I;mt[A]===de?I=new Float32Array(c.buffer,c.byteOffset,c.byteLength/Float32Array.BYTES_PER_ELEMENT):mt[A]===$A?I=new Uint16Array(c.buffer,c.byteOffset,c.byteLength/Uint16Array.BYTES_PER_ELEMENT):mt[A]===Ws||mt[A]===Xs?I=new Uint32Array(c.buffer,c.byteOffset,c.byteLength/Uint32Array.BYTES_PER_ELEMENT):I=c,i.push({data:I,width:a,height:r,depth:l})}const t=n.levelCount===0||i.length>1;let s;if(sg.has($i[A]))s=n.pixelDepth===0?new Ea(i[0].data,n.pixelWidth,n.pixelHeight):new da(i[0].data,n.pixelWidth,n.pixelHeight,n.pixelDepth),s.minFilter=t?pi:_t,s.magFilter=_t,s.generateMipmaps=n.levelCount===0;else{if(n.pixelDepth>0)throw new Error("THREE.KTX2Loader: Unsupported pixelDepth.");s=new Et(i,n.pixelWidth,n.pixelHeight),s.minFilter=t?It:ne,s.magFilter=ne}return s.mipmaps=i,s.type=mt[A],s.format=$i[A],s.colorSpace=To(n),s.needsUpdate=!0,Promise.resolve(s)}function To(n){const A=n.dataFormatDescriptor[0];return A.colorPrimaries===_r?A.transferFunction===Io?lA:WA:A.colorPrimaries===Pr?A.transferFunction===Io?tg:ig:A.colorPrimaries===Ur?Yt:(console.warn(`THREE.KTX2Loader: Unsupported color primaries, "${A.colorPrimaries}"`),Yt)}const No=new ma;No.camera=new Ot,be.basic,be.basic,be.points,be.standard,be.physical,be.phong;var bt=function(){var n=0,A=document.createElement("div");A.style.cssText="position:fixed;top:0;left:0;cursor:pointer;opacity:0.9;z-index:10000",A.addEventListener("click",function(g){g.preventDefault(),i(++n%A.children.length)},!1);function e(g){return A.appendChild(g.dom),g}function i(g){for(var c=0;c<A.children.length;c++)A.children[c].style.display=c===g?"block":"none";n=g}var t=(performance||Date).now(),s=t,o=0,a=e(new bt.Panel("FPS","#0ff","#002")),r=e(new bt.Panel("MS","#0f0","#020"));if(self.performance&&self.performance.memory)var l=e(new bt.Panel("MB","#f08","#201"));return i(0),{REVISION:16,dom:A,addPanel:e,showPanel:i,begin:function(){t=(performance||Date).now()},end:function(){o++;var g=(performance||Date).now();if(r.update(g-t,200),g>=s+1e3&&(a.update(o*1e3/(g-s),100),s=g,o=0,l)){var c=performance.memory;l.update(c.usedJSHeapSize/1048576,c.jsHeapSizeLimit/1048576)}return g},update:function(){t=this.end()},domElement:A,setMode:i}};bt.Panel=function(n,A,e){var i=1/0,t=0,s=Math.round,o=s(window.devicePixelRatio||1),a=80*o,r=48*o,l=3*o,g=2*o,c=3*o,I=15*o,B=74*o,C=30*o,d=document.createElement("canvas");d.width=a,d.height=r,d.style.cssText="width:80px;height:48px";var E=d.getContext("2d");return E.font="bold "+9*o+"px Helvetica,Arial,sans-serif",E.textBaseline="top",E.fillStyle=e,E.fillRect(0,0,a,r),E.fillStyle=A,E.fillText(n,l,g),E.fillRect(c,I,B,C),E.fillStyle=e,E.globalAlpha=.9,E.fillRect(c,I,B,C),{dom:d,update:function(p,f){i=Math.min(i,p),t=Math.max(t,p),E.fillStyle=e,E.globalAlpha=1,E.fillRect(0,0,a,I),E.fillStyle=A,E.fillText(s(p)+" "+n+" ("+s(i)+"-"+s(t)+")",l,g),E.drawImage(d,c+o,I,B-o,C,c,I,B-o,C),E.fillRect(c+B-o,I,o,C),E.fillStyle=e,E.globalAlpha=.9,E.fillRect(c+B-o,I,o,s((1-p/f)*C))}}};class ng extends ba{constructor(A,e={}){const i=e.font;if(i===void 0)super();else{const t=i.generateShapes(A,e.size);e.depth===void 0&&e.height!==void 0&&console.warn("THREE.TextGeometry: .height is now depreciated. Please use .depth instead"),e.depth=e.depth!==void 0?e.depth:e.height!==void 0?e.height:50,e.bevelThickness===void 0&&(e.bevelThickness=10),e.bevelSize===void 0&&(e.bevelSize=8),e.bevelEnabled===void 0&&(e.bevelEnabled=!1),super(t,e)}this.type="TextGeometry"}}class ag extends Re{constructor(A){super(A)}load(A,e,i,t){const s=this,o=new Be(this.manager);o.setPath(this.path),o.setRequestHeader(this.requestHeader),o.setWithCredentials(this.withCredentials),o.load(A,function(a){const r=s.parse(JSON.parse(a));e&&e(r)},i,t)}parse(A){return new Lo(A)}}class Lo{constructor(A){this.isFont=!0,this.type="Font",this.data=A}generateShapes(A,e=100){const i=[],t=rg(A,e,this.data);for(let s=0,o=t.length;s<o;s++)i.push(...t[s].toShapes());return i}}function rg(n,A,e){const i=Array.from(n),t=A/e.resolution,s=(e.boundingBox.yMax-e.boundingBox.yMin+e.underlineThickness)*t,o=[];let a=0,r=0;for(let l=0;l<i.length;l++){const g=i[l];if(g===`
4
- `)a=0,r-=s;else{const c=gg(g,t,a,r,e);a+=c.offsetX,o.push(c.path)}}return o}function gg(n,A,e,i,t){const s=t.glyphs[n]||t.glyphs["?"];if(!s){console.error('THREE.Font: character "'+n+'" does not exists in font family '+t.familyName+".");return}const o=new wa;let a,r,l,g,c,I,B,C;if(s.o){const d=s._cachedOutline||(s._cachedOutline=s.o.split(" "));for(let E=0,p=d.length;E<p;)switch(d[E++]){case"m":a=d[E++]*A+e,r=d[E++]*A+i,o.moveTo(a,r);break;case"l":a=d[E++]*A+e,r=d[E++]*A+i,o.lineTo(a,r);break;case"q":l=d[E++]*A+e,g=d[E++]*A+i,c=d[E++]*A+e,I=d[E++]*A+i,o.quadraticCurveTo(c,I,l,g);break;case"b":l=d[E++]*A+e,g=d[E++]*A+i,c=d[E++]*A+e,I=d[E++]*A+i,B=d[E++]*A+e,C=d[E++]*A+i,o.bezierCurveTo(c,I,B,C,l,g);break}}return{offsetX:s.ha*A,path:o}}var kA=Uint8Array,ae=Uint16Array,As=Int32Array,Xt=new kA([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),Wt=new kA([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),es=new kA([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Uo=function(n,A){for(var e=new ae(31),i=0;i<31;++i)e[i]=A+=1<<n[i-1];for(var t=new As(e[30]),i=1;i<30;++i)for(var s=e[i];s<e[i+1];++s)t[s]=s-e[i]<<5|i;return{b:e,r:t}},_o=Uo(Xt,2),Po=_o.b,ts=_o.r;Po[28]=258,ts[258]=28;for(var Ho=Uo(Wt,0),cg=Ho.b,qo=Ho.r,is=new ae(32768),fA=0;fA<32768;++fA){var Ke=(fA&43690)>>1|(fA&21845)<<1;Ke=(Ke&52428)>>2|(Ke&13107)<<2,Ke=(Ke&61680)>>4|(Ke&3855)<<4,is[fA]=((Ke&65280)>>8|(Ke&255)<<8)>>1}for(var we=function(n,A,e){for(var i=n.length,t=0,s=new ae(A);t<i;++t)n[t]&&++s[n[t]-1];var o=new ae(A);for(t=1;t<A;++t)o[t]=o[t-1]+s[t-1]<<1;var a;if(e){a=new ae(1<<A);var r=15-A;for(t=0;t<i;++t)if(n[t])for(var l=t<<4|n[t],g=A-n[t],c=o[n[t]-1]++<<g,I=c|(1<<g)-1;c<=I;++c)a[is[c]>>r]=l}else for(a=new ae(i),t=0;t<i;++t)n[t]&&(a[t]=is[o[n[t]-1]++]>>15-n[t]);return a},Ye=new kA(288),fA=0;fA<144;++fA)Ye[fA]=8;for(var fA=144;fA<256;++fA)Ye[fA]=9;for(var fA=256;fA<280;++fA)Ye[fA]=7;for(var fA=280;fA<288;++fA)Ye[fA]=8;for(var wt=new kA(32),fA=0;fA<32;++fA)wt[fA]=5;var lg=we(Ye,9,0),hg=we(Ye,9,1),Ig=we(wt,5,0),Bg=we(wt,5,1),ss=function(n){for(var A=n[0],e=1;e<n.length;++e)n[e]>A&&(A=n[e]);return A},ue=function(n,A,e){var i=A/8|0;return(n[i]|n[i+1]<<8)>>(A&7)&e},os=function(n,A){var e=A/8|0;return(n[e]|n[e+1]<<8|n[e+2]<<16)>>(A&7)},ns=function(n){return(n+7)/8|0},as=function(n,A,e){return(e==null||e>n.length)&&(e=n.length),new kA(n.subarray(A,e))},Cg=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],ee=function(n,A,e){var i=new Error(A||Cg[n]);if(i.code=n,Error.captureStackTrace&&Error.captureStackTrace(i,ee),!e)throw i;return i},Eg=function(n,A,e,i){var t=n.length,s=0;if(!t||A.f&&!A.l)return e||new kA(0);var o=!e,a=o||A.i!=2,r=A.i;o&&(e=new kA(t*3));var l=function(vA){var _e=e.length;if(vA>_e){var JA=new kA(Math.max(_e*2,vA));JA.set(e),e=JA}},g=A.f||0,c=A.p||0,I=A.b||0,B=A.l,C=A.d,d=A.m,E=A.n,p=t*8;do{if(!B){g=ue(n,c,1);var f=ue(n,c+1,3);if(c+=3,f)if(f==1)B=hg,C=Bg,d=9,E=5;else if(f==2){var Q=ue(n,c,31)+257,w=ue(n,c+10,15)+4,b=Q+ue(n,c+5,31)+1;c+=14;for(var S=new kA(b),x=new kA(19),D=0;D<w;++D)x[es[D]]=ue(n,c+D*3,7);c+=w*3;for(var F=ss(x),P=(1<<F)-1,Y=we(x,F,1),D=0;D<b;){var O=Y[ue(n,c,P)];c+=O&15;var X=O>>4;if(X<16)S[D++]=X;else{var _=0,W=0;for(X==16?(W=3+ue(n,c,3),c+=2,_=S[D-1]):X==17?(W=3+ue(n,c,7),c+=3):X==18&&(W=11+ue(n,c,127),c+=7);W--;)S[D++]=_}}var j=S.subarray(0,Q),AA=S.subarray(Q);d=ss(j),E=ss(AA),B=we(j,d,1),C=we(AA,E,1)}else ee(1);else{var X=ns(c)+4,Z=n[X-4]|n[X-3]<<8,cA=X+Z;if(cA>t){r&&ee(0);break}a&&l(I+Z),e.set(n.subarray(X,cA),I),A.b=I+=Z,A.p=c=cA*8,A.f=g;continue}if(c>p){r&&ee(0);break}}a&&l(I+131072);for(var yA=(1<<d)-1,eA=(1<<E)-1,sA=c;;sA=c){var _=B[os(n,c)&yA],nA=_>>4;if(c+=_&15,c>p){r&&ee(0);break}if(_||ee(2),nA<256)e[I++]=nA;else if(nA==256){sA=c,B=null;break}else{var CA=nA-254;if(nA>264){var D=nA-257,gA=Xt[D];CA=ue(n,c,(1<<gA)-1)+Po[D],c+=gA}var uA=C[os(n,c)&eA],Ie=uA>>4;uA||ee(3),c+=uA&15;var AA=cg[Ie];if(Ie>3){var gA=Wt[Ie];AA+=os(n,c)&(1<<gA)-1,c+=gA}if(c>p){r&&ee(0);break}a&&l(I+131072);var ie=I+CA;if(I<AA){var Ue=s-AA,pA=Math.min(AA,ie);for(Ue+I<0&&ee(3);I<pA;++I)e[I]=i[Ue+I]}for(;I<ie;++I)e[I]=e[I-AA]}}A.l=B,A.p=sA,A.b=I,A.f=g,B&&(g=1,A.m=d,A.d=C,A.n=E)}while(!g);return I!=e.length&&o?as(e,0,I):e.subarray(0,I)},Ne=function(n,A,e){e<<=A&7;var i=A/8|0;n[i]|=e,n[i+1]|=e>>8},yt=function(n,A,e){e<<=A&7;var i=A/8|0;n[i]|=e,n[i+1]|=e>>8,n[i+2]|=e>>16},rs=function(n,A){for(var e=[],i=0;i<n.length;++i)n[i]&&e.push({s:i,f:n[i]});var t=e.length,s=e.slice();if(!t)return{t:Jo,l:0};if(t==1){var o=new kA(e[0].s+1);return o[e[0].s]=1,{t:o,l:1}}e.sort(function(b,S){return b.f-S.f}),e.push({s:-1,f:25001});var a=e[0],r=e[1],l=0,g=1,c=2;for(e[0]={s:-1,f:a.f+r.f,l:a,r};g!=t-1;)a=e[e[l].f<e[c].f?l++:c++],r=e[l!=g&&e[l].f<e[c].f?l++:c++],e[g++]={s:-1,f:a.f+r.f,l:a,r};for(var I=s[0].s,i=1;i<t;++i)s[i].s>I&&(I=s[i].s);var B=new ae(I+1),C=gs(e[g-1],B,0);if(C>A){var i=0,d=0,E=C-A,p=1<<E;for(s.sort(function(S,x){return B[x.s]-B[S.s]||S.f-x.f});i<t;++i){var f=s[i].s;if(B[f]>A)d+=p-(1<<C-B[f]),B[f]=A;else break}for(d>>=E;d>0;){var Q=s[i].s;B[Q]<A?d-=1<<A-B[Q]++-1:++i}for(;i>=0&&d;--i){var w=s[i].s;B[w]==A&&(--B[w],++d)}C=A}return{t:new kA(B),l:C}},gs=function(n,A,e){return n.s==-1?Math.max(gs(n.l,A,e+1),gs(n.r,A,e+1)):A[n.s]=e},Oo=function(n){for(var A=n.length;A&&!n[--A];);for(var e=new ae(++A),i=0,t=n[0],s=1,o=function(r){e[i++]=r},a=1;a<=A;++a)if(n[a]==t&&a!=A)++s;else{if(!t&&s>2){for(;s>138;s-=138)o(32754);s>2&&(o(s>10?s-11<<5|28690:s-3<<5|12305),s=0)}else if(s>3){for(o(t),--s;s>6;s-=6)o(8304);s>2&&(o(s-3<<5|8208),s=0)}for(;s--;)o(t);s=1,t=n[a]}return{c:e.subarray(0,i),n:A}},Dt=function(n,A){for(var e=0,i=0;i<A.length;++i)e+=n[i]*A[i];return e},Ko=function(n,A,e){var i=e.length,t=ns(A+2);n[t]=i&255,n[t+1]=i>>8,n[t+2]=n[t]^255,n[t+3]=n[t+1]^255;for(var s=0;s<i;++s)n[t+s+4]=e[s];return(t+4+i)*8},Yo=function(n,A,e,i,t,s,o,a,r,l,g){Ne(A,g++,e),++t[256];for(var c=rs(t,15),I=c.t,B=c.l,C=rs(s,15),d=C.t,E=C.l,p=Oo(I),f=p.c,Q=p.n,w=Oo(d),b=w.c,S=w.n,x=new ae(19),D=0;D<f.length;++D)++x[f[D]&31];for(var D=0;D<b.length;++D)++x[b[D]&31];for(var F=rs(x,7),P=F.t,Y=F.l,O=19;O>4&&!P[es[O-1]];--O);var X=l+5<<3,_=Dt(t,Ye)+Dt(s,wt)+o,W=Dt(t,I)+Dt(s,d)+o+14+3*O+Dt(x,P)+2*x[16]+3*x[17]+7*x[18];if(r>=0&&X<=_&&X<=W)return Ko(A,g,n.subarray(r,r+l));var j,AA,Z,cA;if(Ne(A,g,1+(W<_)),g+=2,W<_){j=we(I,B,0),AA=I,Z=we(d,E,0),cA=d;var yA=we(P,Y,0);Ne(A,g,Q-257),Ne(A,g+5,S-1),Ne(A,g+10,O-4),g+=14;for(var D=0;D<O;++D)Ne(A,g+3*D,P[es[D]]);g+=3*O;for(var eA=[f,b],sA=0;sA<2;++sA)for(var nA=eA[sA],D=0;D<nA.length;++D){var CA=nA[D]&31;Ne(A,g,yA[CA]),g+=P[CA],CA>15&&(Ne(A,g,nA[D]>>5&127),g+=nA[D]>>12)}}else j=lg,AA=Ye,Z=Ig,cA=wt;for(var D=0;D<a;++D){var gA=i[D];if(gA>255){var CA=gA>>18&31;yt(A,g,j[CA+257]),g+=AA[CA+257],CA>7&&(Ne(A,g,gA>>23&31),g+=Xt[CA]);var uA=gA&31;yt(A,g,Z[uA]),g+=cA[uA],uA>3&&(yt(A,g,gA>>5&8191),g+=Wt[uA])}else yt(A,g,j[gA]),g+=AA[gA]}return yt(A,g,j[256]),g+AA[256]},dg=new As([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),Jo=new kA(0),ug=function(n,A,e,i,t,s){var o=s.z||n.length,a=new kA(i+o+5*(1+Math.ceil(o/7e3))+t),r=a.subarray(i,a.length-t),l=s.l,g=(s.r||0)&7;if(A){g&&(r[0]=s.r>>3);for(var c=dg[A-1],I=c>>13,B=c&8191,C=(1<<e)-1,d=s.p||new ae(32768),E=s.h||new ae(C+1),p=Math.ceil(e/3),f=2*p,Q=function(_A){return(n[_A]^n[_A+1]<<p^n[_A+2]<<f)&C},w=new As(25e3),b=new ae(288),S=new ae(32),x=0,D=0,F=s.i||0,P=0,Y=s.w||0,O=0;F+2<o;++F){var X=Q(F),_=F&32767,W=E[X];if(d[_]=W,E[X]=_,Y<=F){var j=o-F;if((x>7e3||P>24576)&&(j>423||!l)){g=Yo(n,r,0,w,b,S,D,P,O,F-O,g),P=x=D=0,O=F;for(var AA=0;AA<286;++AA)b[AA]=0;for(var AA=0;AA<30;++AA)S[AA]=0}var Z=2,cA=0,yA=B,eA=_-W&32767;if(j>2&&X==Q(F-eA))for(var sA=Math.min(I,j)-1,nA=Math.min(32767,F),CA=Math.min(258,j);eA<=nA&&--yA&&_!=W;){if(n[F+Z]==n[F+Z-eA]){for(var gA=0;gA<CA&&n[F+gA]==n[F+gA-eA];++gA);if(gA>Z){if(Z=gA,cA=eA,gA>sA)break;for(var uA=Math.min(eA,gA-2),Ie=0,AA=0;AA<uA;++AA){var ie=F-eA+AA&32767,Ue=d[ie],pA=ie-Ue&32767;pA>Ie&&(Ie=pA,W=ie)}}}_=W,W=d[_],eA+=_-W&32767}if(cA){w[P++]=268435456|ts[Z]<<18|qo[cA];var vA=ts[Z]&31,_e=qo[cA]&31;D+=Xt[vA]+Wt[_e],++b[257+vA],++S[_e],Y=F+Z,++x}else w[P++]=n[F],++b[n[F]]}}for(F=Math.max(F,Y);F<o;++F)w[P++]=n[F],++b[n[F]];g=Yo(n,r,l,w,b,S,D,P,O,F-O,g),l||(s.r=g&7|r[g/8|0]<<3,g-=7,s.h=E,s.p=d,s.i=F,s.w=Y)}else{for(var F=s.w||0;F<o+l;F+=65535){var JA=F+65535;JA>=o&&(r[g/8|0]=l,JA=o),g=Ko(r,g+1,n.subarray(F,JA))}s.i=o}return as(a,0,i+ns(g)+t)},pg=function(){for(var n=new Int32Array(256),A=0;A<256;++A){for(var e=A,i=9;--i;)e=(e&1&&-306674912)^e>>>1;n[A]=e}return n}(),Qg=function(){var n=-1;return{p:function(A){for(var e=n,i=0;i<A.length;++i)e=pg[e&255^A[i]]^e>>>8;n=e},d:function(){return~n}}},fg=function(n,A,e,i,t){if(!t&&(t={l:1},A.dictionary)){var s=A.dictionary.subarray(-32768),o=new kA(s.length+n.length);o.set(s),o.set(n,s.length),n=o,t.w=s.length}return ug(n,A.level==null?6:A.level,A.mem==null?t.l?Math.ceil(Math.max(8,Math.min(13,Math.log(n.length)))*1.5):20:12+A.mem,e,i,t)},jo=function(n,A){var e={};for(var i in n)e[i]=n[i];for(var i in A)e[i]=A[i];return e},PA=function(n,A,e){for(;e;++A)n[A]=e,e>>>=8},mg=function(n,A){return((n[0]&15)!=8||n[0]>>4>7||(n[0]<<8|n[1])%31)&&ee(6,"invalid zlib data"),(n[1]>>5&1)==1&&ee(6,"invalid zlib data: "+(n[1]&32?"need":"unexpected")+" dictionary"),(n[1]>>3&4)+2};function bg(n,A){return fg(n,A||{},0,0)}function St(n,A){return Eg(n.subarray(mg(n),-4),{i:2},A,A)}var zo=function(n,A,e,i){for(var t in n){var s=n[t],o=A+t,a=i;Array.isArray(s)&&(a=jo(i,s[1]),s=s[0]),s instanceof kA?e[o]=[s,a]:(e[o+="/"]=[new kA(0),a],zo(s,o,e,i))}},Vo=typeof TextEncoder<"u"&&new TextEncoder,wg=typeof TextDecoder<"u"&&new TextDecoder,yg=0;try{wg.decode(Jo,{stream:!0}),yg=1}catch{}function cs(n,A){var e;if(Vo)return Vo.encode(n);for(var i=n.length,t=new kA(n.length+(n.length>>1)),s=0,o=function(g){t[s++]=g},e=0;e<i;++e){if(s+5>t.length){var a=new kA(s+8+(i-e<<1));a.set(t),t=a}var r=n.charCodeAt(e);r<128||A?o(r):r<2048?(o(192|r>>6),o(128|r&63)):r>55295&&r<57344?(r=65536+(r&1047552)|n.charCodeAt(++e)&1023,o(240|r>>18),o(128|r>>12&63),o(128|r>>6&63),o(128|r&63)):(o(224|r>>12),o(128|r>>6&63),o(128|r&63))}return as(t,0,s)}var ls=function(n){var A=0;if(n)for(var e in n){var i=n[e].length;i>65535&&ee(9),A+=i+4}return A},Xo=function(n,A,e,i,t,s,o,a){var r=i.length,l=e.extra,g=a&&a.length,c=ls(l);PA(n,A,o!=null?33639248:67324752),A+=4,o!=null&&(n[A++]=20,n[A++]=e.os),n[A]=20,A+=2,n[A++]=e.flag<<1|(s<0&&8),n[A++]=t&&8,n[A++]=e.compression&255,n[A++]=e.compression>>8;var I=new Date(e.mtime==null?Date.now():e.mtime),B=I.getFullYear()-1980;if((B<0||B>119)&&ee(10),PA(n,A,B<<25|I.getMonth()+1<<21|I.getDate()<<16|I.getHours()<<11|I.getMinutes()<<5|I.getSeconds()>>1),A+=4,s!=-1&&(PA(n,A,e.crc),PA(n,A+4,s<0?-s-2:s),PA(n,A+8,e.size)),PA(n,A+12,r),PA(n,A+14,c),A+=16,o!=null&&(PA(n,A,g),PA(n,A+6,e.attrs),PA(n,A+10,o),A+=14),n.set(i,A),A+=r,c)for(var C in l){var d=l[C],E=d.length;PA(n,A,+C),PA(n,A+2,E),n.set(d,A+4),A+=4+E}return g&&(n.set(a,A),A+=g),A},Dg=function(n,A,e,i,t){PA(n,A,101010256),PA(n,A+8,e),PA(n,A+10,e),PA(n,A+12,i),PA(n,A+16,t)};function Sg(n,A){A||(A={});var e={},i=[];zo(n,"",e,A);var t=0,s=0;for(var o in e){var a=e[o],r=a[0],l=a[1],g=l.level==0?0:8,c=cs(o),I=c.length,B=l.comment,C=B&&cs(B),d=C&&C.length,E=ls(l.extra);I>65535&&ee(11);var p=g?bg(r,l):r,f=p.length,Q=Qg();Q.p(r),i.push(jo(l,{size:r.length,crc:Q.d(),c:p,f:c,m:C,u:I!=o.length||C&&B.length!=d,o:t,compression:g})),t+=30+I+E+f,s+=76+2*(I+E)+(d||0)+f}for(var w=new kA(s+22),b=t,S=s-t,x=0;x<i.length;++x){var c=i[x];Xo(w,c.o,c,c.f,c.u,c.c.length);var D=30+c.f.length+ls(c.extra);w.set(c.c,c.o+D),Xo(w,t,c,c.f,c.u,c.c.length,c.o,c.m),t+=16+D+(c.m?c.m.length:0)}return Dg(w,t,i.length,S,b),w}class vg extends Zs{constructor(A){super(A),this.type=$A}parse(A){const e=Math.pow(2.7182818,2.2);function i(h,u){let m=0;for(let R=0;R<65536;++R)(R==0||h[R>>3]&1<<(R&7))&&(u[m++]=R);const y=m-1;for(;m<65536;)u[m++]=0;return y}function t(h){for(let u=0;u<16384;u++)h[u]={},h[u].len=0,h[u].lit=0,h[u].p=null}const s={l:0,c:0,lc:0};function o(h,u,m,y,R){for(;m<h;)u=u<<8|_e(y,R),m+=8;m-=h,s.l=u>>m&(1<<h)-1,s.c=u,s.lc=m}const a=new Array(59);function r(h){for(let m=0;m<=58;++m)a[m]=0;for(let m=0;m<65537;++m)a[h[m]]+=1;let u=0;for(let m=58;m>0;--m){const y=u+a[m]>>1;a[m]=u,u=y}for(let m=0;m<65537;++m){const y=h[m];y>0&&(h[m]=y|a[y]++<<6)}}function l(h,u,m,y,R,v){const G=u;let L=0,T=0;for(;y<=R;y++){if(G.value-u.value>m)return!1;o(6,L,T,h,G);const M=s.l;if(L=s.c,T=s.lc,v[y]=M,M==63){if(G.value-u.value>m)throw new Error("Something wrong with hufUnpackEncTable");o(8,L,T,h,G);let k=s.l+6;if(L=s.c,T=s.lc,y+k>R+1)throw new Error("Something wrong with hufUnpackEncTable");for(;k--;)v[y++]=0;y--}else if(M>=59){let k=M-59+2;if(y+k>R+1)throw new Error("Something wrong with hufUnpackEncTable");for(;k--;)v[y++]=0;y--}}r(v)}function g(h){return h&63}function c(h){return h>>6}function I(h,u,m,y){for(;u<=m;u++){const R=c(h[u]),v=g(h[u]);if(R>>v)throw new Error("Invalid table entry");if(v>14){const G=y[R>>v-14];if(G.len)throw new Error("Invalid table entry");if(G.lit++,G.p){const L=G.p;G.p=new Array(G.lit);for(let T=0;T<G.lit-1;++T)G.p[T]=L[T]}else G.p=new Array(1);G.p[G.lit-1]=u}else if(v){let G=0;for(let L=1<<14-v;L>0;L--){const T=y[(R<<14-v)+G];if(T.len||T.p)throw new Error("Invalid table entry");T.len=v,T.lit=u,G++}}}return!0}const B={c:0,lc:0};function C(h,u,m,y){h=h<<8|_e(m,y),u+=8,B.c=h,B.lc=u}const d={c:0,lc:0};function E(h,u,m,y,R,v,G,L,T){if(h==u){y<8&&(C(m,y,R,v),m=B.c,y=B.lc),y-=8;let M=m>>y;if(M=new Uint8Array([M])[0],L.value+M>T)return!1;const k=G[L.value-1];for(;M-- >0;)G[L.value++]=k}else if(L.value<T)G[L.value++]=h;else return!1;d.c=m,d.lc=y}function p(h){return h&65535}function f(h){const u=p(h);return u>32767?u-65536:u}const Q={a:0,b:0};function w(h,u){const m=f(h),y=f(u),R=m+(y&1)+(y>>1),v=R,G=R-y;Q.a=v,Q.b=G}function b(h,u){const m=p(h),y=p(u),R=m-(y>>1)&65535,v=y+R-32768&65535;Q.a=v,Q.b=R}function S(h,u,m,y,R,v,G){const L=G<16384,T=m>R?R:m;let M=1,k,H;for(;M<=T;)M<<=1;for(M>>=1,k=M,M>>=1;M>=1;){H=0;const U=H+v*(R-k),z=v*M,$=v*k,q=y*M,V=y*k;let tA,mA,RA,se;for(;H<=U;H+=$){let QA=H;const rA=H+y*(m-k);for(;QA<=rA;QA+=V){const GA=QA+q,ge=QA+z,NA=ge+q;L?(w(h[QA+u],h[ge+u]),tA=Q.a,RA=Q.b,w(h[GA+u],h[NA+u]),mA=Q.a,se=Q.b,w(tA,mA),h[QA+u]=Q.a,h[GA+u]=Q.b,w(RA,se),h[ge+u]=Q.a,h[NA+u]=Q.b):(b(h[QA+u],h[ge+u]),tA=Q.a,RA=Q.b,b(h[GA+u],h[NA+u]),mA=Q.a,se=Q.b,b(tA,mA),h[QA+u]=Q.a,h[GA+u]=Q.b,b(RA,se),h[ge+u]=Q.a,h[NA+u]=Q.b)}if(m&M){const GA=QA+z;L?w(h[QA+u],h[GA+u]):b(h[QA+u],h[GA+u]),tA=Q.a,h[GA+u]=Q.b,h[QA+u]=tA}}if(R&M){let QA=H;const rA=H+y*(m-k);for(;QA<=rA;QA+=V){const GA=QA+q;L?w(h[QA+u],h[GA+u]):b(h[QA+u],h[GA+u]),tA=Q.a,h[GA+u]=Q.b,h[QA+u]=tA}}k=M,M>>=1}return H}function x(h,u,m,y,R,v,G,L,T){let M=0,k=0;const H=G,U=Math.trunc(y.value+(R+7)/8);for(;y.value<U;)for(C(M,k,m,y),M=B.c,k=B.lc;k>=14;){const $=M>>k-14&16383,q=u[$];if(q.len)k-=q.len,E(q.lit,v,M,k,m,y,L,T,H),M=d.c,k=d.lc;else{if(!q.p)throw new Error("hufDecode issues");let V;for(V=0;V<q.lit;V++){const tA=g(h[q.p[V]]);for(;k<tA&&y.value<U;)C(M,k,m,y),M=B.c,k=B.lc;if(k>=tA&&c(h[q.p[V]])==(M>>k-tA&(1<<tA)-1)){k-=tA,E(q.p[V],v,M,k,m,y,L,T,H),M=d.c,k=d.lc;break}}if(V==q.lit)throw new Error("hufDecode issues")}}const z=8-R&7;for(M>>=z,k-=z;k>0;){const $=u[M<<14-k&16383];if($.len)k-=$.len,E($.lit,v,M,k,m,y,L,T,H),M=d.c,k=d.lc;else throw new Error("hufDecode issues")}return!0}function D(h,u,m,y,R,v){const G={value:0},L=m.value,T=vA(u,m),M=vA(u,m);m.value+=4;const k=vA(u,m);if(m.value+=4,T<0||T>=65537||M<0||M>=65537)throw new Error("Something wrong with HUF_ENCSIZE");const H=new Array(65537),U=new Array(16384);t(U);const z=y-(m.value-L);if(l(h,m,z,T,M,H),k>8*(y-(m.value-L)))throw new Error("Something wrong with hufUncompress");I(H,T,M,U),x(H,U,h,m,k,M,v,R,G)}function F(h,u,m){for(let y=0;y<m;++y)u[y]=h[u[y]]}function P(h){for(let u=1;u<h.length;u++){const m=h[u-1]+h[u]-128;h[u]=m}}function Y(h,u){let m=0,y=Math.floor((h.length+1)/2),R=0;const v=h.length-1;for(;!(R>v||(u[R++]=h[m++],R>v));)u[R++]=h[y++]}function O(h){let u=h.byteLength;const m=new Array;let y=0;const R=new DataView(h);for(;u>0;){const v=R.getInt8(y++);if(v<0){const G=-v;u-=G+1;for(let L=0;L<G;L++)m.push(R.getUint8(y++))}else{const G=v;u-=2;const L=R.getUint8(y++);for(let T=0;T<G+1;T++)m.push(L)}}return m}function X(h,u,m,y,R,v){let G=new DataView(v.buffer);const L=m[h.idx[0]].width,T=m[h.idx[0]].height,M=3,k=Math.floor(L/8),H=Math.ceil(L/8),U=Math.ceil(T/8),z=L-(H-1)*8,$=T-(U-1)*8,q={value:0},V=new Array(M),tA=new Array(M),mA=new Array(M),RA=new Array(M),se=new Array(M);for(let rA=0;rA<M;++rA)se[rA]=u[h.idx[rA]],V[rA]=rA<1?0:V[rA-1]+H*U,tA[rA]=new Float32Array(64),mA[rA]=new Uint16Array(64),RA[rA]=new Uint16Array(H*64);for(let rA=0;rA<U;++rA){let GA=8;rA==U-1&&(GA=$);let ge=8;for(let BA=0;BA<H;++BA){BA==H-1&&(ge=z);for(let dA=0;dA<M;++dA)mA[dA].fill(0),mA[dA][0]=R[V[dA]++],_(q,y,mA[dA]),W(mA[dA],tA[dA]),j(tA[dA]);AA(tA);for(let dA=0;dA<M;++dA)Z(tA[dA],RA[dA],BA*64)}let NA=0;for(let BA=0;BA<M;++BA){const dA=m[h.idx[BA]].type;for(let xe=8*rA;xe<8*rA+GA;++xe){NA=se[BA][xe];for(let ht=0;ht<k;++ht){const pe=ht*64+(xe&7)*8;G.setUint16(NA+0*dA,RA[BA][pe+0],!0),G.setUint16(NA+2*dA,RA[BA][pe+1],!0),G.setUint16(NA+4*dA,RA[BA][pe+2],!0),G.setUint16(NA+6*dA,RA[BA][pe+3],!0),G.setUint16(NA+8*dA,RA[BA][pe+4],!0),G.setUint16(NA+10*dA,RA[BA][pe+5],!0),G.setUint16(NA+12*dA,RA[BA][pe+6],!0),G.setUint16(NA+14*dA,RA[BA][pe+7],!0),NA+=16*dA}}if(k!=H)for(let xe=8*rA;xe<8*rA+GA;++xe){const ht=se[BA][xe]+8*k*2*dA,pe=k*64+(xe&7)*8;for(let Ut=0;Ut<ge;++Ut)G.setUint16(ht+Ut*2*dA,RA[BA][pe+Ut],!0)}}}const QA=new Uint16Array(L);G=new DataView(v.buffer);for(let rA=0;rA<M;++rA){m[h.idx[rA]].decoded=!0;const GA=m[h.idx[rA]].type;if(m[rA].type==2)for(let ge=0;ge<T;++ge){const NA=se[rA][ge];for(let BA=0;BA<L;++BA)QA[BA]=G.getUint16(NA+BA*2*GA,!0);for(let BA=0;BA<L;++BA)G.setFloat32(NA+BA*2*GA,J(QA[BA]),!0)}}}function _(h,u,m){let y,R=1;for(;R<64;)y=u[h.value],y==65280?R=64:y>>8==255?R+=y&255:(m[R]=y,R++),h.value++}function W(h,u){u[0]=J(h[0]),u[1]=J(h[1]),u[2]=J(h[5]),u[3]=J(h[6]),u[4]=J(h[14]),u[5]=J(h[15]),u[6]=J(h[27]),u[7]=J(h[28]),u[8]=J(h[2]),u[9]=J(h[4]),u[10]=J(h[7]),u[11]=J(h[13]),u[12]=J(h[16]),u[13]=J(h[26]),u[14]=J(h[29]),u[15]=J(h[42]),u[16]=J(h[3]),u[17]=J(h[8]),u[18]=J(h[12]),u[19]=J(h[17]),u[20]=J(h[25]),u[21]=J(h[30]),u[22]=J(h[41]),u[23]=J(h[43]),u[24]=J(h[9]),u[25]=J(h[11]),u[26]=J(h[18]),u[27]=J(h[24]),u[28]=J(h[31]),u[29]=J(h[40]),u[30]=J(h[44]),u[31]=J(h[53]),u[32]=J(h[10]),u[33]=J(h[19]),u[34]=J(h[23]),u[35]=J(h[32]),u[36]=J(h[39]),u[37]=J(h[45]),u[38]=J(h[52]),u[39]=J(h[54]),u[40]=J(h[20]),u[41]=J(h[22]),u[42]=J(h[33]),u[43]=J(h[38]),u[44]=J(h[46]),u[45]=J(h[51]),u[46]=J(h[55]),u[47]=J(h[60]),u[48]=J(h[21]),u[49]=J(h[34]),u[50]=J(h[37]),u[51]=J(h[47]),u[52]=J(h[50]),u[53]=J(h[56]),u[54]=J(h[59]),u[55]=J(h[61]),u[56]=J(h[35]),u[57]=J(h[36]),u[58]=J(h[48]),u[59]=J(h[49]),u[60]=J(h[57]),u[61]=J(h[58]),u[62]=J(h[62]),u[63]=J(h[63])}function j(h){const u=.5*Math.cos(.7853975),m=.5*Math.cos(3.14159/16),y=.5*Math.cos(3.14159/8),R=.5*Math.cos(3*3.14159/16),v=.5*Math.cos(5*3.14159/16),G=.5*Math.cos(3*3.14159/8),L=.5*Math.cos(7*3.14159/16),T=new Array(4),M=new Array(4),k=new Array(4),H=new Array(4);for(let U=0;U<8;++U){const z=U*8;T[0]=y*h[z+2],T[1]=G*h[z+2],T[2]=y*h[z+6],T[3]=G*h[z+6],M[0]=m*h[z+1]+R*h[z+3]+v*h[z+5]+L*h[z+7],M[1]=R*h[z+1]-L*h[z+3]-m*h[z+5]-v*h[z+7],M[2]=v*h[z+1]-m*h[z+3]+L*h[z+5]+R*h[z+7],M[3]=L*h[z+1]-v*h[z+3]+R*h[z+5]-m*h[z+7],k[0]=u*(h[z+0]+h[z+4]),k[3]=u*(h[z+0]-h[z+4]),k[1]=T[0]+T[3],k[2]=T[1]-T[2],H[0]=k[0]+k[1],H[1]=k[3]+k[2],H[2]=k[3]-k[2],H[3]=k[0]-k[1],h[z+0]=H[0]+M[0],h[z+1]=H[1]+M[1],h[z+2]=H[2]+M[2],h[z+3]=H[3]+M[3],h[z+4]=H[3]-M[3],h[z+5]=H[2]-M[2],h[z+6]=H[1]-M[1],h[z+7]=H[0]-M[0]}for(let U=0;U<8;++U)T[0]=y*h[16+U],T[1]=G*h[16+U],T[2]=y*h[48+U],T[3]=G*h[48+U],M[0]=m*h[8+U]+R*h[24+U]+v*h[40+U]+L*h[56+U],M[1]=R*h[8+U]-L*h[24+U]-m*h[40+U]-v*h[56+U],M[2]=v*h[8+U]-m*h[24+U]+L*h[40+U]+R*h[56+U],M[3]=L*h[8+U]-v*h[24+U]+R*h[40+U]-m*h[56+U],k[0]=u*(h[U]+h[32+U]),k[3]=u*(h[U]-h[32+U]),k[1]=T[0]+T[3],k[2]=T[1]-T[2],H[0]=k[0]+k[1],H[1]=k[3]+k[2],H[2]=k[3]-k[2],H[3]=k[0]-k[1],h[0+U]=H[0]+M[0],h[8+U]=H[1]+M[1],h[16+U]=H[2]+M[2],h[24+U]=H[3]+M[3],h[32+U]=H[3]-M[3],h[40+U]=H[2]-M[2],h[48+U]=H[1]-M[1],h[56+U]=H[0]-M[0]}function AA(h){for(let u=0;u<64;++u){const m=h[0][u],y=h[1][u],R=h[2][u];h[0][u]=m+1.5747*R,h[1][u]=m-.1873*y-.4682*R,h[2][u]=m+1.8556*y}}function Z(h,u,m){for(let y=0;y<64;++y)u[m+y]=st.toHalfFloat(cA(h[y]))}function cA(h){return h<=1?Math.sign(h)*Math.pow(Math.abs(h),2.2):Math.sign(h)*Math.pow(e,Math.abs(h)-1)}function yA(h){return new DataView(h.array.buffer,h.offset.value,h.size)}function eA(h){const u=h.viewer.buffer.slice(h.offset.value,h.offset.value+h.size),m=new Uint8Array(O(u)),y=new Uint8Array(m.length);return P(m),Y(m,y),new DataView(y.buffer)}function sA(h){const u=h.array.slice(h.offset.value,h.offset.value+h.size),m=St(u),y=new Uint8Array(m.length);return P(m),Y(m,y),new DataView(y.buffer)}function nA(h){const u=h.viewer,m={value:h.offset.value},y=new Uint16Array(h.columns*h.lines*(h.inputChannels.length*h.type)),R=new Uint8Array(8192);let v=0;const G=new Array(h.inputChannels.length);for(let $=0,q=h.inputChannels.length;$<q;$++)G[$]={},G[$].start=v,G[$].end=G[$].start,G[$].nx=h.columns,G[$].ny=h.lines,G[$].size=h.type,v+=G[$].nx*G[$].ny*G[$].size;const L=lt(u,m),T=lt(u,m);if(T>=8192)throw new Error("Something is wrong with PIZ_COMPRESSION BITMAP_SIZE");if(L<=T)for(let $=0;$<T-L+1;$++)R[$+L]=JA(u,m);const M=new Uint16Array(65536),k=i(R,M),H=vA(u,m);D(h.array,u,m,H,y,v);for(let $=0;$<h.inputChannels.length;++$){const q=G[$];for(let V=0;V<G[$].size;++V)S(y,q.start+V,q.nx,q.size,q.ny,q.nx*q.size,k)}F(M,y,v);let U=0;const z=new Uint8Array(y.buffer.byteLength);for(let $=0;$<h.lines;$++)for(let q=0;q<h.inputChannels.length;q++){const V=G[q],tA=V.nx*V.size,mA=new Uint8Array(y.buffer,V.end*2,tA*2);z.set(mA,U),U+=tA*2,V.end+=tA}return new DataView(z.buffer)}function CA(h){const u=h.array.slice(h.offset.value,h.offset.value+h.size),m=St(u),y=h.inputChannels.length*h.lines*h.columns*h.totalBytes,R=new ArrayBuffer(y),v=new DataView(R);let G=0,L=0;const T=new Array(4);for(let M=0;M<h.lines;M++)for(let k=0;k<h.inputChannels.length;k++){let H=0;switch(h.inputChannels[k].pixelType){case 1:T[0]=G,T[1]=T[0]+h.columns,G=T[1]+h.columns;for(let U=0;U<h.columns;++U){const z=m[T[0]++]<<8|m[T[1]++];H+=z,v.setUint16(L,H,!0),L+=2}break;case 2:T[0]=G,T[1]=T[0]+h.columns,T[2]=T[1]+h.columns,G=T[2]+h.columns;for(let U=0;U<h.columns;++U){const z=m[T[0]++]<<24|m[T[1]++]<<16|m[T[2]++]<<8;H+=z,v.setUint32(L,H,!0),L+=4}break}}return v}function gA(h){const u=h.viewer,m={value:h.offset.value},y=new Uint8Array(h.columns*h.lines*(h.inputChannels.length*h.type*2)),R={version:_A(u,m),unknownUncompressedSize:_A(u,m),unknownCompressedSize:_A(u,m),acCompressedSize:_A(u,m),dcCompressedSize:_A(u,m),rleCompressedSize:_A(u,m),rleUncompressedSize:_A(u,m),rleRawSize:_A(u,m),totalAcUncompressedCount:_A(u,m),totalDcUncompressedCount:_A(u,m),acCompression:_A(u,m)};if(R.version<2)throw new Error("EXRLoader.parse: "+je.compression+" version "+R.version+" is unsupported");const v=new Array;let G=lt(u,m)-2;for(;G>0;){const q=uA(u.buffer,m),V=JA(u,m),tA=V>>2&3,mA=(V>>4)-1,RA=new Int8Array([mA])[0],se=JA(u,m);v.push({name:q,index:RA,type:se,compression:tA}),G-=q.length+3}const L=je.channels,T=new Array(h.inputChannels.length);for(let q=0;q<h.inputChannels.length;++q){const V=T[q]={},tA=L[q];V.name=tA.name,V.compression=0,V.decoded=!1,V.type=tA.pixelType,V.pLinear=tA.pLinear,V.width=h.columns,V.height=h.lines}const M={idx:new Array(3)};for(let q=0;q<h.inputChannels.length;++q){const V=T[q];for(let tA=0;tA<v.length;++tA){const mA=v[tA];V.name==mA.name&&(V.compression=mA.compression,mA.index>=0&&(M.idx[mA.index]=q),V.offset=q)}}let k,H,U;if(R.acCompressedSize>0)switch(R.acCompression){case 0:k=new Uint16Array(R.totalAcUncompressedCount),D(h.array,u,m,R.acCompressedSize,k,R.totalAcUncompressedCount);break;case 1:const q=h.array.slice(m.value,m.value+R.totalAcUncompressedCount),V=St(q);k=new Uint16Array(V.buffer),m.value+=R.totalAcUncompressedCount;break}if(R.dcCompressedSize>0){const q={array:h.array,offset:m,size:R.dcCompressedSize};H=new Uint16Array(sA(q).buffer),m.value+=R.dcCompressedSize}if(R.rleRawSize>0){const q=h.array.slice(m.value,m.value+R.rleCompressedSize),V=St(q);U=O(V.buffer),m.value+=R.rleCompressedSize}let z=0;const $=new Array(T.length);for(let q=0;q<$.length;++q)$[q]=new Array;for(let q=0;q<h.lines;++q)for(let V=0;V<T.length;++V)$[V].push(z),z+=T[V].width*h.type*2;X(M,$,T,k,H,y);for(let q=0;q<T.length;++q){const V=T[q];if(!V.decoded)switch(V.compression){case 2:let tA=0,mA=0;for(let RA=0;RA<h.lines;++RA){let se=$[q][tA];for(let QA=0;QA<V.width;++QA){for(let rA=0;rA<2*V.type;++rA)y[se++]=U[mA+rA*V.width*V.height];mA++}tA++}break;default:throw new Error("EXRLoader.parse: unsupported channel compression")}}return new DataView(y.buffer)}function uA(h,u){const m=new Uint8Array(h);let y=0;for(;m[u.value+y]!=0;)y+=1;const R=new TextDecoder().decode(m.slice(u.value,u.value+y));return u.value=u.value+y+1,R}function Ie(h,u,m){const y=new TextDecoder().decode(new Uint8Array(h).slice(u.value,u.value+m));return u.value=u.value+m,y}function ie(h,u){const m=pA(h,u),y=vA(h,u);return[m,y]}function Ue(h,u){const m=vA(h,u),y=vA(h,u);return[m,y]}function pA(h,u){const m=h.getInt32(u.value,!0);return u.value=u.value+4,m}function vA(h,u){const m=h.getUint32(u.value,!0);return u.value=u.value+4,m}function _e(h,u){const m=h[u.value];return u.value=u.value+1,m}function JA(h,u){const m=h.getUint8(u.value);return u.value=u.value+1,m}const _A=function(h,u){let m;return"getBigInt64"in DataView.prototype?m=Number(h.getBigInt64(u.value,!0)):m=h.getUint32(u.value+4,!0)+Number(h.getUint32(u.value,!0)<<32),u.value+=8,m};function KA(h,u){const m=h.getFloat32(u.value,!0);return u.value+=4,m}function Kn(h,u){return st.toHalfFloat(KA(h,u))}function J(h){const u=(h&31744)>>10,m=h&1023;return(h>>15?-1:1)*(u?u===31?m?NaN:1/0:Math.pow(2,u-15)*(1+m/1024):6103515625e-14*(m/1024))}function lt(h,u){const m=h.getUint16(u.value,!0);return u.value+=2,m}function Yn(h,u){return J(lt(h,u))}function Jn(h,u,m,y){const R=m.value,v=[];for(;m.value<R+y-1;){const G=uA(u,m),L=pA(h,m),T=JA(h,m);m.value+=3;const M=pA(h,m),k=pA(h,m);v.push({name:G,pixelType:L,pLinear:T,xSampling:M,ySampling:k})}return m.value+=1,v}function jn(h,u){const m=KA(h,u),y=KA(h,u),R=KA(h,u),v=KA(h,u),G=KA(h,u),L=KA(h,u),T=KA(h,u),M=KA(h,u);return{redX:m,redY:y,greenX:R,greenY:v,blueX:G,blueY:L,whiteX:T,whiteY:M}}function zn(h,u){const m=["NO_COMPRESSION","RLE_COMPRESSION","ZIPS_COMPRESSION","ZIP_COMPRESSION","PIZ_COMPRESSION","PXR24_COMPRESSION","B44_COMPRESSION","B44A_COMPRESSION","DWAA_COMPRESSION","DWAB_COMPRESSION"],y=JA(h,u);return m[y]}function Vn(h,u){const m=pA(h,u),y=pA(h,u),R=pA(h,u),v=pA(h,u);return{xMin:m,yMin:y,xMax:R,yMax:v}}function Xn(h,u){const m=["INCREASING_Y","DECREASING_Y","RANDOM_Y"],y=JA(h,u);return m[y]}function Wn(h,u){const m=["ENVMAP_LATLONG","ENVMAP_CUBE"],y=JA(h,u);return m[y]}function Zn(h,u){const m=["ONE_LEVEL","MIPMAP_LEVELS","RIPMAP_LEVELS"],y=["ROUND_DOWN","ROUND_UP"],R=vA(h,u),v=vA(h,u),G=JA(h,u);return{xSize:R,ySize:v,levelMode:m[G&15],roundingMode:y[G>>4]}}function $n(h,u){const m=KA(h,u),y=KA(h,u);return[m,y]}function Aa(h,u){const m=KA(h,u),y=KA(h,u),R=KA(h,u);return[m,y,R]}function ea(h,u,m,y,R){if(y==="string"||y==="stringvector"||y==="iccProfile")return Ie(u,m,R);if(y==="chlist")return Jn(h,u,m,R);if(y==="chromaticities")return jn(h,m);if(y==="compression")return zn(h,m);if(y==="box2i")return Vn(h,m);if(y==="envmap")return Wn(h,m);if(y==="tiledesc")return Zn(h,m);if(y==="lineOrder")return Xn(h,m);if(y==="float")return KA(h,m);if(y==="v2f")return $n(h,m);if(y==="v3f")return Aa(h,m);if(y==="int")return pA(h,m);if(y==="rational")return ie(h,m);if(y==="timecode")return Ue(h,m);if(y==="preview")return m.value+=R,"skipped";m.value+=R}function ta(h,u){const m=Math.log2(h);return u=="ROUND_DOWN"?Math.floor(m):Math.ceil(m)}function ia(h,u,m){let y=0;switch(h.levelMode){case"ONE_LEVEL":y=1;break;case"MIPMAP_LEVELS":y=ta(Math.max(u,m),h.roundingMode)+1;break;case"RIPMAP_LEVELS":throw new Error("THREE.EXRLoader: RIPMAP_LEVELS tiles currently unsupported.")}return y}function xs(h,u,m,y){const R=new Array(h);for(let v=0;v<h;v++){const G=1<<v;let L=u/G|0;y=="ROUND_UP"&&L*G<u&&(L+=1);const T=Math.max(L,1);R[v]=(T+m-1)/m|0}return R}function sa(){const h=this,u=h.offset,m={value:0};for(let y=0;y<h.tileCount;y++){const R=pA(h.viewer,u),v=pA(h.viewer,u);u.value+=8,h.size=vA(h.viewer,u);const G=R*h.blockWidth,L=v*h.blockHeight;h.columns=G+h.blockWidth>h.width?h.width-G:h.blockWidth,h.lines=L+h.blockHeight>h.height?h.height-L:h.blockHeight;const T=h.columns*h.totalBytes,M=h.size<h.lines*T?h.uncompress(h):yA(h);u.value+=h.size;for(let k=0;k<h.lines;k++){const H=k*h.columns*h.totalBytes;for(let U=0;U<h.inputChannels.length;U++){const z=je.channels[U].name,$=h.channelByteOffsets[z]*h.columns,q=h.decodeChannels[z];if(q===void 0)continue;m.value=H+$;const V=(h.height-(1+L+k))*h.outLineWidth;for(let tA=0;tA<h.columns;tA++){const mA=V+(tA+G)*h.outputChannels+q;h.byteArray[mA]=h.getter(M,m)}}}}}function oa(){const h=this,u=h.offset,m={value:0};for(let y=0;y<h.height/h.blockHeight;y++){const R=pA(h.viewer,u)-je.dataWindow.yMin;h.size=vA(h.viewer,u),h.lines=R+h.blockHeight>h.height?h.height-R:h.blockHeight;const v=h.columns*h.totalBytes,G=h.size<h.lines*v?h.uncompress(h):yA(h);u.value+=h.size;for(let L=0;L<h.blockHeight;L++){const T=y*h.blockHeight,M=L+h.scanOrder(T);if(M>=h.height)continue;const k=L*v,H=(h.height-1-M)*h.outLineWidth;for(let U=0;U<h.inputChannels.length;U++){const z=je.channels[U].name,$=h.channelByteOffsets[z]*h.columns,q=h.decodeChannels[z];if(q!==void 0){m.value=k+$;for(let V=0;V<h.columns;V++){const tA=H+V*h.outputChannels+q;h.byteArray[tA]=h.getter(G,m)}}}}}}function na(h,u,m){const y={};if(h.getUint32(0,!0)!=20000630)throw new Error("THREE.EXRLoader: Provided file doesn't appear to be in OpenEXR format.");y.version=h.getUint8(4);const R=h.getUint8(5);y.spec={singleTile:!!(R&2),longName:!!(R&4),deepFormat:!!(R&8),multiPart:!!(R&16)},m.value=8;let v=!0;for(;v;){const G=uA(u,m);if(G==0)v=!1;else{const L=uA(u,m),T=vA(h,m),M=ea(h,u,m,L,T);M===void 0?console.warn(`THREE.EXRLoader: Skipped unknown header attribute type '${L}'.`):y[G]=M}}if((R&-7)!=0)throw console.error("THREE.EXRHeader:",y),new Error("THREE.EXRLoader: Provided file is currently unsupported.");return y}function aa(h,u,m,y,R){const v={size:0,viewer:u,array:m,offset:y,width:h.dataWindow.xMax-h.dataWindow.xMin+1,height:h.dataWindow.yMax-h.dataWindow.yMin+1,inputChannels:h.channels,channelByteOffsets:{},scanOrder:null,totalBytes:null,columns:null,lines:null,type:null,uncompress:null,getter:null,format:null,colorSpace:WA};switch(h.compression){case"NO_COMPRESSION":v.blockHeight=1,v.uncompress=yA;break;case"RLE_COMPRESSION":v.blockHeight=1,v.uncompress=eA;break;case"ZIPS_COMPRESSION":v.blockHeight=1,v.uncompress=sA;break;case"ZIP_COMPRESSION":v.blockHeight=16,v.uncompress=sA;break;case"PIZ_COMPRESSION":v.blockHeight=32,v.uncompress=nA;break;case"PXR24_COMPRESSION":v.blockHeight=16,v.uncompress=CA;break;case"DWAA_COMPRESSION":v.blockHeight=32,v.uncompress=gA;break;case"DWAB_COMPRESSION":v.blockHeight=256,v.uncompress=gA;break;default:throw new Error("EXRLoader.parse: "+h.compression+" is unsupported")}const G={};for(const k of h.channels)switch(k.name){case"Y":case"R":case"G":case"B":case"A":G[k.name]=!0,v.type=k.pixelType}let L=!1;if(G.R&&G.G&&G.B)L=!G.A,v.outputChannels=4,v.decodeChannels={R:0,G:1,B:2,A:3};else if(G.Y)v.outputChannels=1,v.decodeChannels={Y:0};else throw new Error("EXRLoader.parse: file contains unsupported data channels.");if(v.type==1)switch(R){case de:v.getter=Yn;break;case $A:v.getter=lt;break}else if(v.type==2)switch(R){case de:v.getter=KA;break;case $A:v.getter=Kn}else throw new Error("EXRLoader.parse: unsupported pixelType "+v.type+" for "+h.compression+".");v.columns=v.width;const T=v.width*v.height*v.outputChannels;switch(R){case de:v.byteArray=new Float32Array(T),L&&v.byteArray.fill(1,0,T);break;case $A:v.byteArray=new Uint16Array(T),L&&v.byteArray.fill(15360,0,T);break;default:console.error("THREE.EXRLoader: unsupported type: ",R);break}let M=0;for(const k of h.channels)v.decodeChannels[k.name]!==void 0&&(v.channelByteOffsets[k.name]=M),M+=k.pixelType*2;if(v.totalBytes=M,v.outLineWidth=v.width*v.outputChannels,h.lineOrder==="INCREASING_Y"?v.scanOrder=k=>k:v.scanOrder=k=>v.height-1-k,v.outputChannels==4?(v.format=He,v.colorSpace=WA):(v.format=it,v.colorSpace=Yt),h.spec.singleTile){v.blockHeight=h.tiles.ySize,v.blockWidth=h.tiles.xSize;const k=ia(h.tiles,v.width,v.height),H=xs(k,v.width,h.tiles.xSize,h.tiles.roundingMode),U=xs(k,v.height,h.tiles.ySize,h.tiles.roundingMode);v.tileCount=H[0]*U[0];for(let z=0;z<k;z++)for(let $=0;$<U[z];$++)for(let q=0;q<H[z];q++)_A(u,y);v.decode=sa.bind(v)}else{v.blockWidth=v.width;const k=Math.ceil(v.height/v.blockHeight);for(let H=0;H<k;H++)_A(u,y);v.decode=oa.bind(v)}return v}const Rs={value:0},Fs=new DataView(A),ra=new Uint8Array(A),je=na(Fs,A,Rs),tt=aa(je,Fs,ra,Rs,this.type);return tt.decode(),{header:je,width:tt.width,height:tt.height,data:tt.byteArray,format:tt.format,colorSpace:tt.colorSpace,type:this.type}}setDataType(A){return this.type=A,this}load(A,e,i,t){function s(o,a){o.colorSpace=a.colorSpace,o.minFilter=ne,o.magFilter=ne,o.generateMipmaps=!1,o.flipY=!1,e&&e(o,a)}return super.load(A,s,i,t)}}class xg extends Zs{constructor(A){super(A),this.type=$A}parse(A){const e=function(E,p){switch(E){case 1:throw new Error("THREE.RGBELoader: Read Error: "+(p||""));case 2:throw new Error("THREE.RGBELoader: Write Error: "+(p||""));case 3:throw new Error("THREE.RGBELoader: Bad File Format: "+(p||""));default:case 4:throw new Error("THREE.RGBELoader: Memory Error: "+(p||""))}},i=function(E,p,f){p=p||1024;let Q=E.pos,w=-1,b=0,S="",x=String.fromCharCode.apply(null,new Uint16Array(E.subarray(Q,Q+128)));for(;0>(w=x.indexOf(`
5
- `))&&b<p&&Q<E.byteLength;)S+=x,b+=x.length,Q+=128,x+=String.fromCharCode.apply(null,new Uint16Array(E.subarray(Q,Q+128)));return-1<w?(E.pos+=b+w+1,S+x.slice(0,w)):!1},t=function(E){const p=/^#\?(\S+)/,f=/^\s*GAMMA\s*=\s*(\d+(\.\d+)?)\s*$/,Q=/^\s*EXPOSURE\s*=\s*(\d+(\.\d+)?)\s*$/,w=/^\s*FORMAT=(\S+)\s*$/,b=/^\s*\-Y\s+(\d+)\s+\+X\s+(\d+)\s*$/,S={valid:0,string:"",comments:"",programtype:"RGBE",format:"",gamma:1,exposure:1,width:0,height:0};let x,D;for((E.pos>=E.byteLength||!(x=i(E)))&&e(1,"no header found"),(D=x.match(p))||e(3,"bad initial token"),S.valid|=1,S.programtype=D[1],S.string+=x+`
6
- `;x=i(E),x!==!1;){if(S.string+=x+`
1
+ import{Mesh as K,SphereGeometry as Bi,Vector3 as N,MeshBasicMaterial as Qe,TrianglesDrawMode as ga,TriangleFanDrawMode as Ei,TriangleStripDrawMode as Fs,BufferAttribute as LA,Float32BufferAttribute as FA,InstancedBufferAttribute as Ci,InterleavedBuffer as Ms,InterleavedBufferAttribute as Pe,BufferGeometry as oe,Loader as Re,LoaderUtils as ze,FileLoader as Be,MeshPhysicalMaterial as fe,Vector2 as UA,Color as DA,LinearSRGBColorSpace as WA,SRGBColorSpace as lA,SpotLight as ks,PointLight as ui,DirectionalLight as Gs,Matrix4 as hA,InstancedMesh as ca,Quaternion as SA,Object3D as me,TextureLoader as di,ImageBitmapLoader as la,LinearMipmapLinearFilter as It,NearestMipmapLinearFilter as Ts,LinearMipmapNearestFilter as Ns,NearestMipmapNearestFilter as pi,LinearFilter as ne,NearestFilter as _t,RepeatWrapping as Ve,MirroredRepeatWrapping as Ls,ClampToEdgeWrapping as Pt,PointsMaterial as Bt,Material as Et,LineBasicMaterial as Fe,MeshStandardMaterial as Qi,DoubleSide as fi,PropertyBinding as Me,SkinnedMesh as Us,LineSegments as Ht,Line as Ee,LineLoop as ha,Points as qt,Group as Xe,PerspectiveCamera as Ot,MathUtils as bA,OrthographicCamera as _s,Skeleton as Ps,AnimationClip as Hs,Bone as mi,InterpolateDiscrete as qs,InterpolateLinear as bi,Texture as wi,VectorKeyframeTrack as yi,NumberKeyframeTrack as Di,QuaternionKeyframeTrack as Si,ColorManagement as ZA,FrontSide as Os,Interpolant as Ia,Box3 as Kt,Sphere as vi,CompressedCubeTexture as Ba,CompressedArrayTexture as Ea,CompressedTexture as Ct,NoColorSpace as Yt,RGBA_BPTC_Format as xi,RGBA_S3TC_DXT5_Format as Ri,RGBA_S3TC_DXT3_Format as Ks,RGB_S3TC_DXT1_Format as Ys,RGBA_S3TC_DXT1_Format as Fi,RGBA_ASTC_6x6_Format as Js,RGBA_ASTC_4x4_Format as Jt,RGBA_ETC2_EAC_Format as js,RGB_ETC2_Format as zs,RGBFormat as Mi,RedFormat as it,RGFormat as ut,RGBAFormat as He,UnsignedByteType as Ce,HalfFloatType as $A,UnsignedInt101111Type as Vs,UnsignedInt5999Type as Xs,FloatType as ue,DataTexture as Ca,Data3DTexture as ua,RGB_PVRTC_4BPPV1_Format as da,RGB_ETC1_Format as pa,RGBA_PVRTC_4BPPV1_Format as Qa,RGB_BPTC_UNSIGNED_Format as fa,NodeFrame as ma,ShaderLib as be,ExtrudeGeometry as ba,ShapePath as wa,DataTextureLoader as Ws,DataUtils as st,CylinderGeometry as Ae,BoxGeometry as jA,OctahedronGeometry as jt,TorusGeometry as dt,Euler as qe,Controls as Zs,Raycaster as ki,PlaneGeometry as Gi,MOUSE as ot,TOUCH as nt,Spherical as $s,Ray as ya,Plane as Da,ShaderMaterial as Ao,Uniform$1 as Sa,Scene as Ti,WebGLRenderer as va,CanvasTexture as eo,REVISION as xa,Source as Ra,InstancedBufferGeometry as Fa,InstancedInterleavedBuffer as Ni,WireframeGeometry as Ma,UniformsUtils as to,UniformsLib as zt,Vector4 as ke,Line3 as ka,Matrix3 as io,Curve as Ga,MeshPhongMaterial as pt,MeshLambertMaterial as Ta,EquirectangularReflectionMapping as Na,AmbientLight as La,Uint16BufferAttribute as Ua,ShapeUtils as _a,DefaultLoadingManager as Pa}from"./three-core.min.js";class Ha extends K{constructor(A,e,i,t=128){if(e<=0||i<=0||t<=0)throw new Error("GroundedSkybox height, radius, and resolution must be positive.");const s=new Bi(i,2*t,t);s.scale(1,1,-1);const o=s.getAttribute("position"),a=new N;for(let r=0;r<o.count;++r)if(a.fromBufferAttribute(o,r),a.y<0){const l=-e*3/2,g=a.y<l?-e/a.y:1-a.y*a.y/(3*l*l);a.multiplyScalar(g),a.toArray(o.array,3*r)}o.needsUpdate=!0,super(s,new Qe({map:A,depthWrite:!1}))}}function qa(n,A,e=!0){if(!A||!A.isReady)throw new Error("BufferGeometryUtils: Initialized MikkTSpace library required.");if(!n.hasAttribute("position")||!n.hasAttribute("normal")||!n.hasAttribute("uv"))throw new Error('BufferGeometryUtils: Tangents require "position", "normal", and "uv" attributes.');function i(o){if(o.normalized||o.isInterleavedBufferAttribute){const a=new Float32Array(o.count*o.itemSize);for(let r=0,l=0;r<o.count;r++)a[l++]=o.getX(r),a[l++]=o.getY(r),o.itemSize>2&&(a[l++]=o.getZ(r));return a}return o.array instanceof Float32Array?o.array:new Float32Array(o.array)}const t=n.index?n.toNonIndexed():n,s=A.generateTangents(i(t.attributes.position),i(t.attributes.normal),i(t.attributes.uv));if(e)for(let o=3;o<s.length;o+=4)s[o]*=-1;return t.setAttribute("tangent",new LA(s,4)),n!==t&&n.copy(t),n}function Oa(n,A=!1){const e=n[0].index!==null,i=new Set(Object.keys(n[0].attributes)),t=new Set(Object.keys(n[0].morphAttributes)),s={},o={},a=n[0].morphTargetsRelative,r=new oe;let l=0;for(let g=0;g<n.length;++g){const c=n[g];let I=0;if(e!==(c.index!==null))return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+g+". All geometries must have compatible attributes; make sure index attribute exists among all geometries, or in none of them."),null;for(const B in c.attributes){if(!i.has(B))return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+g+'. All geometries must have compatible attributes; make sure "'+B+'" attribute exists among all geometries, or in none of them.'),null;s[B]===void 0&&(s[B]=[]),s[B].push(c.attributes[B]),I++}if(I!==i.size)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+g+". Make sure all geometries have the same number of attributes."),null;if(a!==c.morphTargetsRelative)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+g+". .morphTargetsRelative must be consistent throughout all geometries."),null;for(const B in c.morphAttributes){if(!t.has(B))return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+g+". .morphAttributes must be consistent throughout all geometries."),null;o[B]===void 0&&(o[B]=[]),o[B].push(c.morphAttributes[B])}if(A){let B;if(e)B=c.index.count;else if(c.attributes.position!==void 0)B=c.attributes.position.count;else return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+g+". The geometry must have either an index or a position attribute"),null;r.addGroup(l,B,g),l+=B}}if(e){let g=0;const c=[];for(let I=0;I<n.length;++I){const B=n[I].index;for(let E=0;E<B.count;++E)c.push(B.getX(E)+g);g+=n[I].attributes.position.count}r.setIndex(c)}for(const g in s){const c=Li(s[g]);if(!c)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed while trying to merge the "+g+" attribute."),null;r.setAttribute(g,c)}for(const g in o){const c=o[g][0].length;if(c===0)break;r.morphAttributes=r.morphAttributes||{},r.morphAttributes[g]=[];for(let I=0;I<c;++I){const B=[];for(let u=0;u<o[g].length;++u)B.push(o[g][u][I]);const E=Li(B);if(!E)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed while trying to merge the "+g+" morphAttribute."),null;r.morphAttributes[g].push(E)}}return r}function Li(n){let A,e,i,t=-1,s=0;for(let l=0;l<n.length;++l){const g=n[l];if(A===void 0&&(A=g.array.constructor),A!==g.array.constructor)return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.array must be of consistent array types across matching attributes."),null;if(e===void 0&&(e=g.itemSize),e!==g.itemSize)return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.itemSize must be consistent across matching attributes."),null;if(i===void 0&&(i=g.normalized),i!==g.normalized)return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.normalized must be consistent across matching attributes."),null;if(t===-1&&(t=g.gpuType),t!==g.gpuType)return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.gpuType must be consistent across matching attributes."),null;s+=g.count*e}const o=new A(s),a=new LA(o,e,i);let r=0;for(let l=0;l<n.length;++l){const g=n[l];if(g.isInterleavedBufferAttribute){const c=r/e;for(let I=0,B=g.count;I<B;I++)for(let E=0;E<e;E++){const u=g.getComponent(I,E);a.setComponent(I+c,E,u)}}else o.set(g.array,r);r+=g.count*e}return t!==void 0&&(a.gpuType=t),a}function Ka(n){return n.isInstancedInterleavedBufferAttribute||n.isInterleavedBufferAttribute?Vt(n):n.isInstancedBufferAttribute?new Ci().copy(n):new LA().copy(n)}function Ya(n){let A,e=0,i=0;for(let l=0,g=n.length;l<g;++l){const c=n[l];if(A===void 0&&(A=c.array.constructor),A!==c.array.constructor)return console.error("AttributeBuffers of different types cannot be interleaved"),null;e+=c.array.length,i+=c.itemSize}const t=new Ms(new A(e),i);let s=0;const o=[],a=["getX","getY","getZ","getW"],r=["setX","setY","setZ","setW"];for(let l=0,g=n.length;l<g;l++){const c=n[l],I=c.itemSize,B=c.count,E=new Pe(t,I,s,c.normalized);o.push(E),s+=I;for(let u=0;u<B;u++)for(let C=0;C<I;C++)E[r[C]](u,c[a[C]](u))}return o}function Vt(n){const A=n.data.array.constructor,e=n.count,i=n.itemSize,t=n.normalized,s=new A(e*i);let o;n.isInstancedInterleavedBufferAttribute?o=new Ci(s,i,t,n.meshPerAttribute):o=new LA(s,i,t);for(let a=0;a<e;a++)o.setX(a,n.getX(a)),i>=2&&o.setY(a,n.getY(a)),i>=3&&o.setZ(a,n.getZ(a)),i>=4&&o.setW(a,n.getW(a));return o}function Ja(n){const A=n.attributes,e=n.morphTargets,i=new Map;for(const t in A){const s=A[t];s.isInterleavedBufferAttribute&&(i.has(s)||i.set(s,Vt(s)),A[t]=i.get(s))}for(const t in e){const s=e[t];s.isInterleavedBufferAttribute&&(i.has(s)||i.set(s,Vt(s)),e[t]=i.get(s))}}function ja(n){let A=0;for(const i in n.attributes){const t=n.getAttribute(i);A+=t.count*t.itemSize*t.array.BYTES_PER_ELEMENT}const e=n.getIndex();return A+=e?e.count*e.itemSize*e.array.BYTES_PER_ELEMENT:0,A}function so(n,A=1e-4){A=Math.max(A,Number.EPSILON);const e={},i=n.getIndex(),t=n.getAttribute("position"),s=i?i.count:t.count;let o=0;const a=Object.keys(n.attributes),r={},l={},g=[],c=["getX","getY","getZ","getW"],I=["setX","setY","setZ","setW"];for(let f=0,Q=a.length;f<Q;f++){const w=a[f],b=n.attributes[w];r[w]=new b.constructor(new b.array.constructor(b.count*b.itemSize),b.itemSize,b.normalized);const S=n.morphAttributes[w];S&&(l[w]||(l[w]=[]),S.forEach((x,D)=>{const F=new x.array.constructor(x.count*x.itemSize);l[w][D]=new x.constructor(F,x.itemSize,x.normalized)}))}const B=A*.5,E=Math.log10(1/A),u=Math.pow(10,E),C=B*u;for(let f=0;f<s;f++){const Q=i?i.getX(f):f;let w="";for(let b=0,S=a.length;b<S;b++){const x=a[b],D=n.getAttribute(x),F=D.itemSize;for(let P=0;P<F;P++)w+=`${~~(D[c[P]](Q)*u+C)},`}if(w in e)g.push(e[w]);else{for(let b=0,S=a.length;b<S;b++){const x=a[b],D=n.getAttribute(x),F=n.morphAttributes[x],P=D.itemSize,Y=r[x],O=l[x];for(let X=0;X<P;X++){const _=c[X],W=I[X];if(Y[W](o,D[_](Q)),F)for(let j=0,AA=F.length;j<AA;j++)O[j][W](o,F[j][_](Q))}}e[w]=o,g.push(o),o++}}const p=n.clone();for(const f in n.attributes){const Q=r[f];if(p.setAttribute(f,new Q.constructor(Q.array.slice(0,o*Q.itemSize),Q.itemSize,Q.normalized)),f in l)for(let w=0;w<l[f].length;w++){const b=l[f][w];p.morphAttributes[f][w]=new b.constructor(b.array.slice(0,o*b.itemSize),b.itemSize,b.normalized)}}return p.setIndex(g),p}function Ui(n,A){if(A===ga)return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."),n;if(A===Ei||A===Fs){let e=n.getIndex();if(e===null){const o=[],a=n.getAttribute("position");if(a!==void 0){for(let r=0;r<a.count;r++)o.push(r);n.setIndex(o),e=n.getIndex()}else return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),n}const i=e.count-2,t=[];if(A===Ei)for(let o=1;o<=i;o++)t.push(e.getX(0)),t.push(e.getX(o)),t.push(e.getX(o+1));else for(let o=0;o<i;o++)o%2===0?(t.push(e.getX(o)),t.push(e.getX(o+1)),t.push(e.getX(o+2))):(t.push(e.getX(o+2)),t.push(e.getX(o+1)),t.push(e.getX(o)));t.length/3!==i&&console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");const s=n.clone();return s.setIndex(t),s.clearGroups(),s}else return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:",A),n}function za(n){const A=new N,e=new N,i=new N,t=new N,s=new N,o=new N,a=new N,r=new N,l=new N;function g(cA,yA,eA,sA,nA,EA,gA,dA){A.fromBufferAttribute(yA,nA),e.fromBufferAttribute(yA,EA),i.fromBufferAttribute(yA,gA);const Ie=cA.morphTargetInfluences;if(eA&&Ie){a.set(0,0,0),r.set(0,0,0),l.set(0,0,0);for(let ie=0,Ue=eA.length;ie<Ue;ie++){const pA=Ie[ie],vA=eA[ie];pA!==0&&(t.fromBufferAttribute(vA,nA),s.fromBufferAttribute(vA,EA),o.fromBufferAttribute(vA,gA),sA?(a.addScaledVector(t,pA),r.addScaledVector(s,pA),l.addScaledVector(o,pA)):(a.addScaledVector(t.sub(A),pA),r.addScaledVector(s.sub(e),pA),l.addScaledVector(o.sub(i),pA)))}A.add(a),e.add(r),i.add(l)}cA.isSkinnedMesh&&(cA.applyBoneTransform(nA,A),cA.applyBoneTransform(EA,e),cA.applyBoneTransform(gA,i)),dA[nA*3+0]=A.x,dA[nA*3+1]=A.y,dA[nA*3+2]=A.z,dA[EA*3+0]=e.x,dA[EA*3+1]=e.y,dA[EA*3+2]=e.z,dA[gA*3+0]=i.x,dA[gA*3+1]=i.y,dA[gA*3+2]=i.z}const c=n.geometry,I=n.material;let B,E,u;const C=c.index,p=c.attributes.position,f=c.morphAttributes.position,Q=c.morphTargetsRelative,w=c.attributes.normal,b=c.morphAttributes.position,S=c.groups,x=c.drawRange;let D,F,P,Y,O,X,_;const W=new Float32Array(p.count*p.itemSize),j=new Float32Array(w.count*w.itemSize);if(C!==null)if(Array.isArray(I))for(D=0,P=S.length;D<P;D++)for(O=S[D],X=Math.max(O.start,x.start),_=Math.min(O.start+O.count,x.start+x.count),F=X,Y=_;F<Y;F+=3)B=C.getX(F),E=C.getX(F+1),u=C.getX(F+2),g(n,p,f,Q,B,E,u,W),g(n,w,b,Q,B,E,u,j);else for(X=Math.max(0,x.start),_=Math.min(C.count,x.start+x.count),D=X,P=_;D<P;D+=3)B=C.getX(D),E=C.getX(D+1),u=C.getX(D+2),g(n,p,f,Q,B,E,u,W),g(n,w,b,Q,B,E,u,j);else if(Array.isArray(I))for(D=0,P=S.length;D<P;D++)for(O=S[D],X=Math.max(O.start,x.start),_=Math.min(O.start+O.count,x.start+x.count),F=X,Y=_;F<Y;F+=3)B=F,E=F+1,u=F+2,g(n,p,f,Q,B,E,u,W),g(n,w,b,Q,B,E,u,j);else for(X=Math.max(0,x.start),_=Math.min(p.count,x.start+x.count),D=X,P=_;D<P;D+=3)B=D,E=D+1,u=D+2,g(n,p,f,Q,B,E,u,W),g(n,w,b,Q,B,E,u,j);const AA=new FA(W,3),Z=new FA(j,3);return{positionAttribute:p,normalAttribute:w,morphedPositionAttribute:AA,morphedNormalAttribute:Z}}function Va(n){if(n.groups.length===0)return console.warn("THREE.BufferGeometryUtils.mergeGroups(): No groups are defined. Nothing to merge."),n;let A=n.groups;if(A=A.sort((o,a)=>o.materialIndex!==a.materialIndex?o.materialIndex-a.materialIndex:o.start-a.start),n.getIndex()===null){const o=n.getAttribute("position"),a=[];for(let r=0;r<o.count;r+=3)a.push(r,r+1,r+2);n.setIndex(a)}const e=n.getIndex(),i=[];for(let o=0;o<A.length;o++){const a=A[o],r=a.start,l=r+a.count;for(let g=r;g<l;g++)i.push(e.getX(g))}n.dispose(),n.setIndex(i);let t=0;for(let o=0;o<A.length;o++){const a=A[o];a.start=t,t+=a.count}let s=A[0];n.groups=[s];for(let o=1;o<A.length;o++){const a=A[o];s.materialIndex===a.materialIndex?s.count+=a.count:(s=a,n.groups.push(s))}return n}function Xa(n,A=Math.PI/3){const e=Math.cos(A),i=(1+1e-10)*100,t=[new N,new N,new N],s=new N,o=new N,a=new N,r=new N;function l(u){const C=~~(u.x*i),p=~~(u.y*i),f=~~(u.z*i);return`${C},${p},${f}`}const g=n.index?n.toNonIndexed():n,c=g.attributes.position,I={};for(let u=0,C=c.count/3;u<C;u++){const p=3*u,f=t[0].fromBufferAttribute(c,p+0),Q=t[1].fromBufferAttribute(c,p+1),w=t[2].fromBufferAttribute(c,p+2);s.subVectors(w,Q),o.subVectors(f,Q);const b=new N().crossVectors(s,o).normalize();for(let S=0;S<3;S++){const x=t[S],D=l(x);D in I||(I[D]=[]),I[D].push(b)}}const B=new Float32Array(c.count*3),E=new LA(B,3,!1);for(let u=0,C=c.count/3;u<C;u++){const p=3*u,f=t[0].fromBufferAttribute(c,p+0),Q=t[1].fromBufferAttribute(c,p+1),w=t[2].fromBufferAttribute(c,p+2);s.subVectors(w,Q),o.subVectors(f,Q),a.crossVectors(s,o).normalize();for(let b=0;b<3;b++){const S=t[b],x=l(S),D=I[x];r.set(0,0,0);for(let F=0,P=D.length;F<P;F++){const Y=D[F];a.dot(Y)>e&&r.add(Y)}r.normalize(),E.setXYZ(p+b,r.x,r.y,r.z)}}return g.setAttribute("normal",E),g}const Wa=Object.freeze(Object.defineProperty({__proto__:null,computeMikkTSpaceTangents:qa,computeMorphedAttributes:za,deepCloneAttribute:Ka,deinterleaveAttribute:Vt,deinterleaveGeometry:Ja,estimateBytesUsed:ja,interleaveAttributes:Ya,mergeAttributes:Li,mergeGeometries:Oa,mergeGroups:Va,mergeVertices:so,toCreasedNormals:Xa,toTrianglesDrawMode:Ui},Symbol.toStringTag,{value:"Module"}));class oo extends Re{constructor(A){super(A),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(e){return new tr(e)}),this.register(function(e){return new ir(e)}),this.register(function(e){return new hr(e)}),this.register(function(e){return new Ir(e)}),this.register(function(e){return new Br(e)}),this.register(function(e){return new or(e)}),this.register(function(e){return new nr(e)}),this.register(function(e){return new ar(e)}),this.register(function(e){return new rr(e)}),this.register(function(e){return new er(e)}),this.register(function(e){return new gr(e)}),this.register(function(e){return new sr(e)}),this.register(function(e){return new lr(e)}),this.register(function(e){return new cr(e)}),this.register(function(e){return new $a(e)}),this.register(function(e){return new Er(e)}),this.register(function(e){return new Cr(e)})}load(A,e,i,t){const s=this;let o;if(this.resourcePath!=="")o=this.resourcePath;else if(this.path!==""){const l=ze.extractUrlBase(A);o=ze.resolveURL(l,this.path)}else o=ze.extractUrlBase(A);this.manager.itemStart(A);const a=function(l){t?t(l):console.error(l),s.manager.itemError(A),s.manager.itemEnd(A)},r=new Be(this.manager);r.setPath(this.path),r.setResponseType("arraybuffer"),r.setRequestHeader(this.requestHeader),r.setWithCredentials(this.withCredentials),r.load(A,function(l){try{s.parse(l,o,function(g){e(g),s.manager.itemEnd(A)},a)}catch(g){a(g)}},i,a)}setDRACOLoader(A){return this.dracoLoader=A,this}setKTX2Loader(A){return this.ktx2Loader=A,this}setMeshoptDecoder(A){return this.meshoptDecoder=A,this}register(A){return this.pluginCallbacks.indexOf(A)===-1&&this.pluginCallbacks.push(A),this}unregister(A){return this.pluginCallbacks.indexOf(A)!==-1&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(A),1),this}parse(A,e,i,t){let s,o;const a={},r={},l=new TextDecoder;if(typeof A=="string")try{s=JSON.parse(A)}catch(c){o=A,t&&t(c);return}else if(A instanceof ArrayBuffer)if(l.decode(new Uint8Array(A,0,4))===no){try{a[oA.KHR_BINARY_GLTF]=new ur(A)}catch(c){t&&t(c);return}try{s=JSON.parse(a[oA.KHR_BINARY_GLTF].content)}catch(c){o=a[oA.KHR_BINARY_GLTF].content,t&&t(c);return}}else try{s=JSON.parse(l.decode(A))}catch(c){o=l.decode(A),t&&t(c);return}else s=A;if(s.asset===void 0||s.asset.version[0]<2){t&&t(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported."));return}this.json=s,this.jsonErrorData=o;const g=new Rr(s,{path:e||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});g.fileLoader.setRequestHeader(this.requestHeader);for(let c=0;c<this.pluginCallbacks.length;c++){const I=this.pluginCallbacks[c](g);I.name||console.error("THREE.GLTFLoader: Invalid plugin found: missing name"),r[I.name]=I,a[I.name]=!0}if(s.extensionsUsed)for(let c=0;c<s.extensionsUsed.length;++c){const I=s.extensionsUsed[c],B=s.extensionsRequired||[];switch(I){case oA.KHR_MATERIALS_UNLIT:a[I]=new Ar;break;case oA.KHR_DRACO_MESH_COMPRESSION:a[I]=new dr(s,this.dracoLoader);break;case oA.KHR_TEXTURE_TRANSFORM:a[I]=new pr;break;case oA.KHR_MESH_QUANTIZATION:a[I]=new Qr;break;default:B.indexOf(I)>=0&&r[I]===void 0&&console.warn('THREE.GLTFLoader: Unknown extension "'+I+'".')}}g.setExtensions(a),g.setPlugins(r),g.parse(i,t)}parseAsync(A,e){const i=this;return new Promise(function(t,s){i.parse(A,e,t,s)})}}function Za(){let n={};return{get:function(A){return n[A]},add:function(A,e){n[A]=e},remove:function(A){delete n[A]},removeAll:function(){n={}}}}const oA={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(A){this.parser=A,this.name=oA.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){const A=this.parser,e=this.parser.json.nodes||[];for(let i=0,t=e.length;i<t;i++){const s=e[i];s.extensions&&s.extensions[this.name]&&s.extensions[this.name].light!==void 0&&A._addNodeRef(this.cache,s.extensions[this.name].light)}}_loadLight(A){const e=this.parser,i="light:"+A;let t=e.cache.get(i);if(t)return t;const s=e.json,o=((s.extensions&&s.extensions[this.name]||{}).lights||[])[A];let a;const r=new DA(16777215);o.color!==void 0&&r.setRGB(o.color[0],o.color[1],o.color[2],WA);const l=o.range!==void 0?o.range:0;switch(o.type){case"directional":a=new Gs(r),a.target.position.set(0,0,-1),a.add(a.target);break;case"point":a=new ui(r),a.distance=l;break;case"spot":a=new ks(r),a.distance=l,o.spot=o.spot||{},o.spot.innerConeAngle=o.spot.innerConeAngle!==void 0?o.spot.innerConeAngle:0,o.spot.outerConeAngle=o.spot.outerConeAngle!==void 0?o.spot.outerConeAngle:Math.PI/4,a.angle=o.spot.outerConeAngle,a.penumbra=1-o.spot.innerConeAngle/o.spot.outerConeAngle,a.target.position.set(0,0,-1),a.add(a.target);break;default:throw new Error("THREE.GLTFLoader: Unexpected light type: "+o.type)}return a.position.set(0,0,0),a.decay=2,Ge(a,o),o.intensity!==void 0&&(a.intensity=o.intensity),a.name=e.createUniqueName(o.name||"light_"+A),t=Promise.resolve(a),e.cache.add(i,t),t}getDependency(A,e){if(A==="light")return this._loadLight(e)}createNodeAttachment(A){const e=this,i=this.parser,t=i.json.nodes[A],s=(t.extensions&&t.extensions[this.name]||{}).light;return s===void 0?null:this._loadLight(s).then(function(o){return i._getNodeRef(e.cache,s,o)})}}let Ar=class{constructor(){this.name=oA.KHR_MATERIALS_UNLIT}getMaterialType(){return Qe}extendParams(n,A,e){const i=[];n.color=new DA(1,1,1),n.opacity=1;const t=A.pbrMetallicRoughness;if(t){if(Array.isArray(t.baseColorFactor)){const s=t.baseColorFactor;n.color.setRGB(s[0],s[1],s[2],WA),n.opacity=s[3]}t.baseColorTexture!==void 0&&i.push(e.assignTexture(n,"map",t.baseColorTexture,lA))}return Promise.all(i)}},er=class{constructor(n){this.parser=n,this.name=oA.KHR_MATERIALS_EMISSIVE_STRENGTH}extendMaterialParams(n,A){const e=this.parser.json.materials[n];if(!e.extensions||!e.extensions[this.name])return Promise.resolve();const i=e.extensions[this.name].emissiveStrength;return i!==void 0&&(A.emissiveIntensity=i),Promise.resolve()}},tr=class{constructor(n){this.parser=n,this.name=oA.KHR_MATERIALS_CLEARCOAT}getMaterialType(n){const A=this.parser.json.materials[n];return!A.extensions||!A.extensions[this.name]?null:fe}extendMaterialParams(n,A){const e=this.parser,i=e.json.materials[n];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const t=[],s=i.extensions[this.name];if(s.clearcoatFactor!==void 0&&(A.clearcoat=s.clearcoatFactor),s.clearcoatTexture!==void 0&&t.push(e.assignTexture(A,"clearcoatMap",s.clearcoatTexture)),s.clearcoatRoughnessFactor!==void 0&&(A.clearcoatRoughness=s.clearcoatRoughnessFactor),s.clearcoatRoughnessTexture!==void 0&&t.push(e.assignTexture(A,"clearcoatRoughnessMap",s.clearcoatRoughnessTexture)),s.clearcoatNormalTexture!==void 0&&(t.push(e.assignTexture(A,"clearcoatNormalMap",s.clearcoatNormalTexture)),s.clearcoatNormalTexture.scale!==void 0)){const o=s.clearcoatNormalTexture.scale;A.clearcoatNormalScale=new UA(o,o)}return Promise.all(t)}},ir=class{constructor(n){this.parser=n,this.name=oA.KHR_MATERIALS_DISPERSION}getMaterialType(n){const A=this.parser.json.materials[n];return!A.extensions||!A.extensions[this.name]?null:fe}extendMaterialParams(n,A){const e=this.parser.json.materials[n];if(!e.extensions||!e.extensions[this.name])return Promise.resolve();const i=e.extensions[this.name];return A.dispersion=i.dispersion!==void 0?i.dispersion:0,Promise.resolve()}},sr=class{constructor(n){this.parser=n,this.name=oA.KHR_MATERIALS_IRIDESCENCE}getMaterialType(n){const A=this.parser.json.materials[n];return!A.extensions||!A.extensions[this.name]?null:fe}extendMaterialParams(n,A){const e=this.parser,i=e.json.materials[n];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const t=[],s=i.extensions[this.name];return s.iridescenceFactor!==void 0&&(A.iridescence=s.iridescenceFactor),s.iridescenceTexture!==void 0&&t.push(e.assignTexture(A,"iridescenceMap",s.iridescenceTexture)),s.iridescenceIor!==void 0&&(A.iridescenceIOR=s.iridescenceIor),A.iridescenceThicknessRange===void 0&&(A.iridescenceThicknessRange=[100,400]),s.iridescenceThicknessMinimum!==void 0&&(A.iridescenceThicknessRange[0]=s.iridescenceThicknessMinimum),s.iridescenceThicknessMaximum!==void 0&&(A.iridescenceThicknessRange[1]=s.iridescenceThicknessMaximum),s.iridescenceThicknessTexture!==void 0&&t.push(e.assignTexture(A,"iridescenceThicknessMap",s.iridescenceThicknessTexture)),Promise.all(t)}},or=class{constructor(n){this.parser=n,this.name=oA.KHR_MATERIALS_SHEEN}getMaterialType(n){const A=this.parser.json.materials[n];return!A.extensions||!A.extensions[this.name]?null:fe}extendMaterialParams(n,A){const e=this.parser,i=e.json.materials[n];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const t=[];A.sheenColor=new DA(0,0,0),A.sheenRoughness=0,A.sheen=1;const s=i.extensions[this.name];if(s.sheenColorFactor!==void 0){const o=s.sheenColorFactor;A.sheenColor.setRGB(o[0],o[1],o[2],WA)}return s.sheenRoughnessFactor!==void 0&&(A.sheenRoughness=s.sheenRoughnessFactor),s.sheenColorTexture!==void 0&&t.push(e.assignTexture(A,"sheenColorMap",s.sheenColorTexture,lA)),s.sheenRoughnessTexture!==void 0&&t.push(e.assignTexture(A,"sheenRoughnessMap",s.sheenRoughnessTexture)),Promise.all(t)}},nr=class{constructor(n){this.parser=n,this.name=oA.KHR_MATERIALS_TRANSMISSION}getMaterialType(n){const A=this.parser.json.materials[n];return!A.extensions||!A.extensions[this.name]?null:fe}extendMaterialParams(n,A){const e=this.parser,i=e.json.materials[n];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const t=[],s=i.extensions[this.name];return s.transmissionFactor!==void 0&&(A.transmission=s.transmissionFactor),s.transmissionTexture!==void 0&&t.push(e.assignTexture(A,"transmissionMap",s.transmissionTexture)),Promise.all(t)}},ar=class{constructor(n){this.parser=n,this.name=oA.KHR_MATERIALS_VOLUME}getMaterialType(n){const A=this.parser.json.materials[n];return!A.extensions||!A.extensions[this.name]?null:fe}extendMaterialParams(n,A){const e=this.parser,i=e.json.materials[n];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const t=[],s=i.extensions[this.name];A.thickness=s.thicknessFactor!==void 0?s.thicknessFactor:0,s.thicknessTexture!==void 0&&t.push(e.assignTexture(A,"thicknessMap",s.thicknessTexture)),A.attenuationDistance=s.attenuationDistance||1/0;const o=s.attenuationColor||[1,1,1];return A.attenuationColor=new DA().setRGB(o[0],o[1],o[2],WA),Promise.all(t)}},rr=class{constructor(n){this.parser=n,this.name=oA.KHR_MATERIALS_IOR}getMaterialType(n){const A=this.parser.json.materials[n];return!A.extensions||!A.extensions[this.name]?null:fe}extendMaterialParams(n,A){const e=this.parser.json.materials[n];if(!e.extensions||!e.extensions[this.name])return Promise.resolve();const i=e.extensions[this.name];return A.ior=i.ior!==void 0?i.ior:1.5,Promise.resolve()}},gr=class{constructor(n){this.parser=n,this.name=oA.KHR_MATERIALS_SPECULAR}getMaterialType(n){const A=this.parser.json.materials[n];return!A.extensions||!A.extensions[this.name]?null:fe}extendMaterialParams(n,A){const e=this.parser,i=e.json.materials[n];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const t=[],s=i.extensions[this.name];A.specularIntensity=s.specularFactor!==void 0?s.specularFactor:1,s.specularTexture!==void 0&&t.push(e.assignTexture(A,"specularIntensityMap",s.specularTexture));const o=s.specularColorFactor||[1,1,1];return A.specularColor=new DA().setRGB(o[0],o[1],o[2],WA),s.specularColorTexture!==void 0&&t.push(e.assignTexture(A,"specularColorMap",s.specularColorTexture,lA)),Promise.all(t)}},cr=class{constructor(n){this.parser=n,this.name=oA.EXT_MATERIALS_BUMP}getMaterialType(n){const A=this.parser.json.materials[n];return!A.extensions||!A.extensions[this.name]?null:fe}extendMaterialParams(n,A){const e=this.parser,i=e.json.materials[n];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const t=[],s=i.extensions[this.name];return A.bumpScale=s.bumpFactor!==void 0?s.bumpFactor:1,s.bumpTexture!==void 0&&t.push(e.assignTexture(A,"bumpMap",s.bumpTexture)),Promise.all(t)}},lr=class{constructor(n){this.parser=n,this.name=oA.KHR_MATERIALS_ANISOTROPY}getMaterialType(n){const A=this.parser.json.materials[n];return!A.extensions||!A.extensions[this.name]?null:fe}extendMaterialParams(n,A){const e=this.parser,i=e.json.materials[n];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const t=[],s=i.extensions[this.name];return s.anisotropyStrength!==void 0&&(A.anisotropy=s.anisotropyStrength),s.anisotropyRotation!==void 0&&(A.anisotropyRotation=s.anisotropyRotation),s.anisotropyTexture!==void 0&&t.push(e.assignTexture(A,"anisotropyMap",s.anisotropyTexture)),Promise.all(t)}};class hr{constructor(A){this.parser=A,this.name=oA.KHR_TEXTURE_BASISU}loadTexture(A){const e=this.parser,i=e.json,t=i.textures[A];if(!t.extensions||!t.extensions[this.name])return null;const s=t.extensions[this.name],o=e.options.ktx2Loader;if(!o){if(i.extensionsRequired&&i.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return null}return e.loadTextureImage(A,s.source,o)}}class Ir{constructor(A){this.parser=A,this.name=oA.EXT_TEXTURE_WEBP,this.isSupported=null}loadTexture(A){const e=this.name,i=this.parser,t=i.json,s=t.textures[A];if(!s.extensions||!s.extensions[e])return null;const o=s.extensions[e],a=t.images[o.source];let r=i.textureLoader;if(a.uri){const l=i.options.manager.getHandler(a.uri);l!==null&&(r=l)}return this.detectSupport().then(function(l){if(l)return i.loadTextureImage(A,o.source,r);if(t.extensionsRequired&&t.extensionsRequired.indexOf(e)>=0)throw new Error("THREE.GLTFLoader: WebP required by asset but unsupported.");return i.loadTexture(A)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(A){const e=new Image;e.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA",e.onload=e.onerror=function(){A(e.height===1)}})),this.isSupported}}class Br{constructor(A){this.parser=A,this.name=oA.EXT_TEXTURE_AVIF,this.isSupported=null}loadTexture(A){const e=this.name,i=this.parser,t=i.json,s=t.textures[A];if(!s.extensions||!s.extensions[e])return null;const o=s.extensions[e],a=t.images[o.source];let r=i.textureLoader;if(a.uri){const l=i.options.manager.getHandler(a.uri);l!==null&&(r=l)}return this.detectSupport().then(function(l){if(l)return i.loadTextureImage(A,o.source,r);if(t.extensionsRequired&&t.extensionsRequired.indexOf(e)>=0)throw new Error("THREE.GLTFLoader: AVIF required by asset but unsupported.");return i.loadTexture(A)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(A){const e=new Image;e.src="data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAABcAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQAMAAAAABNjb2xybmNseAACAAIABoAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAAB9tZGF0EgAKCBgABogQEDQgMgkQAAAAB8dSLfI=",e.onload=e.onerror=function(){A(e.height===1)}})),this.isSupported}}class Er{constructor(A){this.name=oA.EXT_MESHOPT_COMPRESSION,this.parser=A}loadBufferView(A){const e=this.parser.json,i=e.bufferViews[A];if(i.extensions&&i.extensions[this.name]){const t=i.extensions[this.name],s=this.parser.getDependency("buffer",t.buffer),o=this.parser.options.meshoptDecoder;if(!o||!o.supported){if(e.extensionsRequired&&e.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return null}return s.then(function(a){const r=t.byteOffset||0,l=t.byteLength||0,g=t.count,c=t.byteStride,I=new Uint8Array(a,r,l);return o.decodeGltfBufferAsync?o.decodeGltfBufferAsync(g,c,I,t.mode,t.filter).then(function(B){return B.buffer}):o.ready.then(function(){const B=new ArrayBuffer(g*c);return o.decodeGltfBuffer(new Uint8Array(B),g,c,I,t.mode,t.filter),B})})}else return null}}let Cr=class{constructor(n){this.name=oA.EXT_MESH_GPU_INSTANCING,this.parser=n}createNodeMesh(n){const A=this.parser.json,e=A.nodes[n];if(!e.extensions||!e.extensions[this.name]||e.mesh===void 0)return null;const i=A.meshes[e.mesh];for(const a of i.primitives)if(a.mode!==ce.TRIANGLES&&a.mode!==ce.TRIANGLE_STRIP&&a.mode!==ce.TRIANGLE_FAN&&a.mode!==void 0)return null;const t=e.extensions[this.name].attributes,s=[],o={};for(const a in t)s.push(this.parser.getDependency("accessor",t[a]).then(r=>(o[a]=r,o[a])));return s.length<1?null:(s.push(this.parser.createNodeMesh(n)),Promise.all(s).then(a=>{const r=a.pop(),l=r.isGroup?r.children:[r],g=a[0].count,c=[];for(const I of l){const B=new hA,E=new N,u=new SA,C=new N(1,1,1),p=new ca(I.geometry,I.material,g);for(let f=0;f<g;f++)o.TRANSLATION&&E.fromBufferAttribute(o.TRANSLATION,f),o.ROTATION&&u.fromBufferAttribute(o.ROTATION,f),o.SCALE&&C.fromBufferAttribute(o.SCALE,f),p.setMatrixAt(f,B.compose(E,u,C));for(const f in o)if(f==="_COLOR_0"){const Q=o[f];p.instanceColor=new Ci(Q.array,Q.itemSize,Q.normalized)}else f!=="TRANSLATION"&&f!=="ROTATION"&&f!=="SCALE"&&I.geometry.setAttribute(f,o[f]);me.prototype.copy.call(p,I),this.parser.assignFinalMaterial(p),c.push(p)}return r.isGroup?(r.clear(),r.add(...c),r):c[0]}))}};const no="glTF",Qt=12,ao={JSON:1313821514,BIN:5130562};class ur{constructor(A){this.name=oA.KHR_BINARY_GLTF,this.content=null,this.body=null;const e=new DataView(A,0,Qt),i=new TextDecoder;if(this.header={magic:i.decode(new Uint8Array(A.slice(0,4))),version:e.getUint32(4,!0),length:e.getUint32(8,!0)},this.header.magic!==no)throw new Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");if(this.header.version<2)throw new Error("THREE.GLTFLoader: Legacy binary file detected.");const t=this.header.length-Qt,s=new DataView(A,Qt);let o=0;for(;o<t;){const a=s.getUint32(o,!0);o+=4;const r=s.getUint32(o,!0);if(o+=4,r===ao.JSON){const l=new Uint8Array(A,Qt+o,a);this.content=i.decode(l)}else if(r===ao.BIN){const l=Qt+o;this.body=A.slice(l,l+a)}o+=a}if(this.content===null)throw new Error("THREE.GLTFLoader: JSON content not found.")}}class dr{constructor(A,e){if(!e)throw new Error("THREE.GLTFLoader: No DRACOLoader instance provided.");this.name=oA.KHR_DRACO_MESH_COMPRESSION,this.json=A,this.dracoLoader=e,this.dracoLoader.preload()}decodePrimitive(A,e){const i=this.json,t=this.dracoLoader,s=A.extensions[this.name].bufferView,o=A.extensions[this.name].attributes,a={},r={},l={};for(const g in o){const c=Pi[g]||g.toLowerCase();a[c]=o[g]}for(const g in A.attributes){const c=Pi[g]||g.toLowerCase();if(o[g]!==void 0){const I=i.accessors[A.attributes[g]],B=at[I.componentType];l[c]=B.name,r[c]=I.normalized===!0}}return e.getDependency("bufferView",s).then(function(g){return new Promise(function(c,I){t.decodeDracoFile(g,function(B){for(const E in B.attributes){const u=B.attributes[E],C=r[E];C!==void 0&&(u.normalized=C)}c(B)},a,l,WA,I)})})}}class pr{constructor(){this.name=oA.KHR_TEXTURE_TRANSFORM}extendTexture(A,e){return(e.texCoord===void 0||e.texCoord===A.channel)&&e.offset===void 0&&e.rotation===void 0&&e.scale===void 0||(A=A.clone(),e.texCoord!==void 0&&(A.channel=e.texCoord),e.offset!==void 0&&A.offset.fromArray(e.offset),e.rotation!==void 0&&(A.rotation=e.rotation),e.scale!==void 0&&A.repeat.fromArray(e.scale),A.needsUpdate=!0),A}}class Qr{constructor(){this.name=oA.KHR_MESH_QUANTIZATION}}class ro extends Ia{constructor(A,e,i,t){super(A,e,i,t)}copySampleValue_(A){const e=this.resultBuffer,i=this.sampleValues,t=this.valueSize,s=A*t*3+t;for(let o=0;o!==t;o++)e[o]=i[s+o];return e}interpolate_(A,e,i,t){const s=this.resultBuffer,o=this.sampleValues,a=this.valueSize,r=a*2,l=a*3,g=t-e,c=(i-e)/g,I=c*c,B=I*c,E=A*l,u=E-l,C=-2*B+3*I,p=B-I,f=1-C,Q=p-I+c;for(let w=0;w!==a;w++){const b=o[u+w+a],S=o[u+w+r]*g,x=o[E+w+a],D=o[E+w]*g;s[w]=f*b+Q*S+C*x+p*D}return s}}const fr=new SA;class mr extends ro{interpolate_(A,e,i,t){const s=super.interpolate_(A,e,i,t);return fr.fromArray(s).normalize().toArray(s),s}}const ce={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6},at={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},go={9728:_t,9729:ne,9984:pi,9985:Ns,9986:Ts,9987:It},co={33071:Pt,33648:Ls,10497:Ve},_i={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},Pi={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"},Oe={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},br={CUBICSPLINE:void 0,LINEAR:bi,STEP:qs},Hi={OPAQUE:"OPAQUE",MASK:"MASK",BLEND:"BLEND"};function wr(n){return n.DefaultMaterial===void 0&&(n.DefaultMaterial=new Qi({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:Os})),n.DefaultMaterial}function We(n,A,e){for(const i in e.extensions)n[i]===void 0&&(A.userData.gltfExtensions=A.userData.gltfExtensions||{},A.userData.gltfExtensions[i]=e.extensions[i])}function Ge(n,A){A.extras!==void 0&&(typeof A.extras=="object"?Object.assign(n.userData,A.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+A.extras))}function yr(n,A,e){let i=!1,t=!1,s=!1;for(let l=0,g=A.length;l<g;l++){const c=A[l];if(c.POSITION!==void 0&&(i=!0),c.NORMAL!==void 0&&(t=!0),c.COLOR_0!==void 0&&(s=!0),i&&t&&s)break}if(!i&&!t&&!s)return Promise.resolve(n);const o=[],a=[],r=[];for(let l=0,g=A.length;l<g;l++){const c=A[l];if(i){const I=c.POSITION!==void 0?e.getDependency("accessor",c.POSITION):n.attributes.position;o.push(I)}if(t){const I=c.NORMAL!==void 0?e.getDependency("accessor",c.NORMAL):n.attributes.normal;a.push(I)}if(s){const I=c.COLOR_0!==void 0?e.getDependency("accessor",c.COLOR_0):n.attributes.color;r.push(I)}}return Promise.all([Promise.all(o),Promise.all(a),Promise.all(r)]).then(function(l){const g=l[0],c=l[1],I=l[2];return i&&(n.morphAttributes.position=g),t&&(n.morphAttributes.normal=c),s&&(n.morphAttributes.color=I),n.morphTargetsRelative=!0,n})}function Dr(n,A){if(n.updateMorphTargets(),A.weights!==void 0)for(let e=0,i=A.weights.length;e<i;e++)n.morphTargetInfluences[e]=A.weights[e];if(A.extras&&Array.isArray(A.extras.targetNames)){const e=A.extras.targetNames;if(n.morphTargetInfluences.length===e.length){n.morphTargetDictionary={};for(let i=0,t=e.length;i<t;i++)n.morphTargetDictionary[e[i]]=i}else console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.")}}function Sr(n){let A;const e=n.extensions&&n.extensions[oA.KHR_DRACO_MESH_COMPRESSION];if(e?A="draco:"+e.bufferView+":"+e.indices+":"+qi(e.attributes):A=n.indices+":"+qi(n.attributes)+":"+n.mode,n.targets!==void 0)for(let i=0,t=n.targets.length;i<t;i++)A+=":"+qi(n.targets[i]);return A}function qi(n){let A="";const e=Object.keys(n).sort();for(let i=0,t=e.length;i<t;i++)A+=e[i]+":"+n[e[i]]+";";return A}function Oi(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.")}}function vr(n){return n.search(/\.jpe?g($|\?)/i)>0||n.search(/^data\:image\/jpeg/)===0?"image/jpeg":n.search(/\.webp($|\?)/i)>0||n.search(/^data\:image\/webp/)===0?"image/webp":"image/png"}const xr=new hA;class Rr{constructor(A={},e={}){this.json=A,this.extensions={},this.plugins={},this.options=e,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 i=!1,t=-1,s=!1,o=-1;if(typeof navigator<"u"){const a=navigator.userAgent;i=/^((?!chrome|android).)*safari/i.test(a)===!0;const r=a.match(/Version\/(\d+)/);t=i&&r?parseInt(r[1],10):-1,s=a.indexOf("Firefox")>-1,o=s?a.match(/Firefox\/([0-9]+)\./)[1]:-1}typeof createImageBitmap>"u"||i&&t<17||s&&o<98?this.textureLoader=new di(this.options.manager):this.textureLoader=new la(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new Be(this.options.manager),this.fileLoader.setResponseType("arraybuffer"),this.options.crossOrigin==="use-credentials"&&this.fileLoader.setWithCredentials(!0)}setExtensions(A){this.extensions=A}setPlugins(A){this.plugins=A}parse(A,e){const i=this,t=this.json,s=this.extensions;this.cache.removeAll(),this.nodeCache={},this._invokeAll(function(o){return o._markDefs&&o._markDefs()}),Promise.all(this._invokeAll(function(o){return o.beforeRoot&&o.beforeRoot()})).then(function(){return Promise.all([i.getDependencies("scene"),i.getDependencies("animation"),i.getDependencies("camera")])}).then(function(o){const a={scene:o[0][t.scene||0],scenes:o[0],animations:o[1],cameras:o[2],asset:t.asset,parser:i,userData:{}};return We(s,a,t),Ge(a,t),Promise.all(i._invokeAll(function(r){return r.afterRoot&&r.afterRoot(a)})).then(function(){for(const r of a.scenes)r.updateMatrixWorld();A(a)})}).catch(e)}_markDefs(){const A=this.json.nodes||[],e=this.json.skins||[],i=this.json.meshes||[];for(let t=0,s=e.length;t<s;t++){const o=e[t].joints;for(let a=0,r=o.length;a<r;a++)A[o[a]].isBone=!0}for(let t=0,s=A.length;t<s;t++){const o=A[t];o.mesh!==void 0&&(this._addNodeRef(this.meshCache,o.mesh),o.skin!==void 0&&(i[o.mesh].isSkinnedMesh=!0)),o.camera!==void 0&&this._addNodeRef(this.cameraCache,o.camera)}}_addNodeRef(A,e){e!==void 0&&(A.refs[e]===void 0&&(A.refs[e]=A.uses[e]=0),A.refs[e]++)}_getNodeRef(A,e,i){if(A.refs[e]<=1)return i;const t=i.clone(),s=(o,a)=>{const r=this.associations.get(o);r!=null&&this.associations.set(a,r);for(const[l,g]of o.children.entries())s(g,a.children[l])};return s(i,t),t.name+="_instance_"+A.uses[e]++,t}_invokeOne(A){const e=Object.values(this.plugins);e.push(this);for(let i=0;i<e.length;i++){const t=A(e[i]);if(t)return t}return null}_invokeAll(A){const e=Object.values(this.plugins);e.unshift(this);const i=[];for(let t=0;t<e.length;t++){const s=A(e[t]);s&&i.push(s)}return i}getDependency(A,e){const i=A+":"+e;let t=this.cache.get(i);if(!t){switch(A){case"scene":t=this.loadScene(e);break;case"node":t=this._invokeOne(function(s){return s.loadNode&&s.loadNode(e)});break;case"mesh":t=this._invokeOne(function(s){return s.loadMesh&&s.loadMesh(e)});break;case"accessor":t=this.loadAccessor(e);break;case"bufferView":t=this._invokeOne(function(s){return s.loadBufferView&&s.loadBufferView(e)});break;case"buffer":t=this.loadBuffer(e);break;case"material":t=this._invokeOne(function(s){return s.loadMaterial&&s.loadMaterial(e)});break;case"texture":t=this._invokeOne(function(s){return s.loadTexture&&s.loadTexture(e)});break;case"skin":t=this.loadSkin(e);break;case"animation":t=this._invokeOne(function(s){return s.loadAnimation&&s.loadAnimation(e)});break;case"camera":t=this.loadCamera(e);break;default:if(t=this._invokeOne(function(s){return s!=this&&s.getDependency&&s.getDependency(A,e)}),!t)throw new Error("Unknown type: "+A);break}this.cache.add(i,t)}return t}getDependencies(A){let e=this.cache.get(A);if(!e){const i=this,t=this.json[A+(A==="mesh"?"es":"s")]||[];e=Promise.all(t.map(function(s,o){return i.getDependency(A,o)})),this.cache.add(A,e)}return e}loadBuffer(A){const e=this.json.buffers[A],i=this.fileLoader;if(e.type&&e.type!=="arraybuffer")throw new Error("THREE.GLTFLoader: "+e.type+" buffer type is not supported.");if(e.uri===void 0&&A===0)return Promise.resolve(this.extensions[oA.KHR_BINARY_GLTF].body);const t=this.options;return new Promise(function(s,o){i.load(ze.resolveURL(e.uri,t.path),s,void 0,function(){o(new Error('THREE.GLTFLoader: Failed to load buffer "'+e.uri+'".'))})})}loadBufferView(A){const e=this.json.bufferViews[A];return this.getDependency("buffer",e.buffer).then(function(i){const t=e.byteLength||0,s=e.byteOffset||0;return i.slice(s,s+t)})}loadAccessor(A){const e=this,i=this.json,t=this.json.accessors[A];if(t.bufferView===void 0&&t.sparse===void 0){const o=_i[t.type],a=at[t.componentType],r=t.normalized===!0,l=new a(t.count*o);return Promise.resolve(new LA(l,o,r))}const s=[];return t.bufferView!==void 0?s.push(this.getDependency("bufferView",t.bufferView)):s.push(null),t.sparse!==void 0&&(s.push(this.getDependency("bufferView",t.sparse.indices.bufferView)),s.push(this.getDependency("bufferView",t.sparse.values.bufferView))),Promise.all(s).then(function(o){const a=o[0],r=_i[t.type],l=at[t.componentType],g=l.BYTES_PER_ELEMENT,c=g*r,I=t.byteOffset||0,B=t.bufferView!==void 0?i.bufferViews[t.bufferView].byteStride:void 0,E=t.normalized===!0;let u,C;if(B&&B!==c){const p=Math.floor(I/B),f="InterleavedBuffer:"+t.bufferView+":"+t.componentType+":"+p+":"+t.count;let Q=e.cache.get(f);Q||(u=new l(a,p*B,t.count*B/g),Q=new Ms(u,B/g),e.cache.add(f,Q)),C=new Pe(Q,r,I%B/g,E)}else a===null?u=new l(t.count*r):u=new l(a,I,t.count*r),C=new LA(u,r,E);if(t.sparse!==void 0){const p=_i.SCALAR,f=at[t.sparse.indices.componentType],Q=t.sparse.indices.byteOffset||0,w=t.sparse.values.byteOffset||0,b=new f(o[1],Q,t.sparse.count*p),S=new l(o[2],w,t.sparse.count*r);a!==null&&(C=new LA(C.array.slice(),C.itemSize,C.normalized)),C.normalized=!1;for(let x=0,D=b.length;x<D;x++){const F=b[x];if(C.setX(F,S[x*r]),r>=2&&C.setY(F,S[x*r+1]),r>=3&&C.setZ(F,S[x*r+2]),r>=4&&C.setW(F,S[x*r+3]),r>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}C.normalized=E}return C})}loadTexture(A){const e=this.json,i=this.options,t=e.textures[A].source,s=e.images[t];let o=this.textureLoader;if(s.uri){const a=i.manager.getHandler(s.uri);a!==null&&(o=a)}return this.loadTextureImage(A,t,o)}loadTextureImage(A,e,i){const t=this,s=this.json,o=s.textures[A],a=s.images[e],r=(a.uri||a.bufferView)+":"+o.sampler;if(this.textureCache[r])return this.textureCache[r];const l=this.loadImageSource(e,i).then(function(g){g.flipY=!1,g.name=o.name||a.name||"",g.name===""&&typeof a.uri=="string"&&a.uri.startsWith("data:image/")===!1&&(g.name=a.uri);const c=(s.samplers||{})[o.sampler]||{};return g.magFilter=go[c.magFilter]||ne,g.minFilter=go[c.minFilter]||It,g.wrapS=co[c.wrapS]||Ve,g.wrapT=co[c.wrapT]||Ve,g.anisotropy=4,t.associations.set(g,{textures:A}),g}).catch(function(){return null});return this.textureCache[r]=l,l}loadImageSource(A,e){const i=this,t=this.json,s=this.options;if(this.sourceCache[A]!==void 0)return this.sourceCache[A].then(c=>c.clone());const o=t.images[A],a=self.URL||self.webkitURL;let r=o.uri||"",l=!1;if(o.bufferView!==void 0)r=i.getDependency("bufferView",o.bufferView).then(function(c){l=!0;const I=new Blob([c],{type:o.mimeType});return r=a.createObjectURL(I),r});else if(o.uri===void 0)throw new Error("THREE.GLTFLoader: Image "+A+" is missing URI and bufferView");const g=Promise.resolve(r).then(function(c){return new Promise(function(I,B){let E=I;e.isImageBitmapLoader===!0&&(E=function(u){const C=new wi(u);C.needsUpdate=!0,I(C)}),e.load(ze.resolveURL(c,s.path),E,void 0,B)})}).then(function(c){return l===!0&&a.revokeObjectURL(r),Ge(c,o),c.userData.mimeType=o.mimeType||vr(o.uri),c}).catch(function(c){throw console.error("THREE.GLTFLoader: Couldn't load texture",r),c});return this.sourceCache[A]=g,g}assignTexture(A,e,i,t){const s=this;return this.getDependency("texture",i.index).then(function(o){if(!o)return null;if(i.texCoord!==void 0&&i.texCoord>0&&(o=o.clone(),o.channel=i.texCoord),s.extensions[oA.KHR_TEXTURE_TRANSFORM]){const a=i.extensions!==void 0?i.extensions[oA.KHR_TEXTURE_TRANSFORM]:void 0;if(a){const r=s.associations.get(o);o=s.extensions[oA.KHR_TEXTURE_TRANSFORM].extendTexture(o,a),s.associations.set(o,r)}}return t!==void 0&&(o.colorSpace=t),A[e]=o,o})}assignFinalMaterial(A){const e=A.geometry;let i=A.material;const t=e.attributes.tangent===void 0,s=e.attributes.color!==void 0,o=e.attributes.normal===void 0;if(A.isPoints){const a="PointsMaterial:"+i.uuid;let r=this.cache.get(a);r||(r=new Bt,Et.prototype.copy.call(r,i),r.color.copy(i.color),r.map=i.map,r.sizeAttenuation=!1,this.cache.add(a,r)),i=r}else if(A.isLine){const a="LineBasicMaterial:"+i.uuid;let r=this.cache.get(a);r||(r=new Fe,Et.prototype.copy.call(r,i),r.color.copy(i.color),r.map=i.map,this.cache.add(a,r)),i=r}if(t||s||o){let a="ClonedMaterial:"+i.uuid+":";t&&(a+="derivative-tangents:"),s&&(a+="vertex-colors:"),o&&(a+="flat-shading:");let r=this.cache.get(a);r||(r=i.clone(),s&&(r.vertexColors=!0),o&&(r.flatShading=!0),t&&(r.normalScale&&(r.normalScale.y*=-1),r.clearcoatNormalScale&&(r.clearcoatNormalScale.y*=-1)),this.cache.add(a,r),this.associations.set(r,this.associations.get(i))),i=r}A.material=i}getMaterialType(){return Qi}loadMaterial(A){const e=this,i=this.json,t=this.extensions,s=i.materials[A];let o;const a={},r=s.extensions||{},l=[];if(r[oA.KHR_MATERIALS_UNLIT]){const c=t[oA.KHR_MATERIALS_UNLIT];o=c.getMaterialType(),l.push(c.extendParams(a,s,e))}else{const c=s.pbrMetallicRoughness||{};if(a.color=new DA(1,1,1),a.opacity=1,Array.isArray(c.baseColorFactor)){const I=c.baseColorFactor;a.color.setRGB(I[0],I[1],I[2],WA),a.opacity=I[3]}c.baseColorTexture!==void 0&&l.push(e.assignTexture(a,"map",c.baseColorTexture,lA)),a.metalness=c.metallicFactor!==void 0?c.metallicFactor:1,a.roughness=c.roughnessFactor!==void 0?c.roughnessFactor:1,c.metallicRoughnessTexture!==void 0&&(l.push(e.assignTexture(a,"metalnessMap",c.metallicRoughnessTexture)),l.push(e.assignTexture(a,"roughnessMap",c.metallicRoughnessTexture))),o=this._invokeOne(function(I){return I.getMaterialType&&I.getMaterialType(A)}),l.push(Promise.all(this._invokeAll(function(I){return I.extendMaterialParams&&I.extendMaterialParams(A,a)})))}s.doubleSided===!0&&(a.side=fi);const g=s.alphaMode||Hi.OPAQUE;if(g===Hi.BLEND?(a.transparent=!0,a.depthWrite=!1):(a.transparent=!1,g===Hi.MASK&&(a.alphaTest=s.alphaCutoff!==void 0?s.alphaCutoff:.5)),s.normalTexture!==void 0&&o!==Qe&&(l.push(e.assignTexture(a,"normalMap",s.normalTexture)),a.normalScale=new UA(1,1),s.normalTexture.scale!==void 0)){const c=s.normalTexture.scale;a.normalScale.set(c,c)}if(s.occlusionTexture!==void 0&&o!==Qe&&(l.push(e.assignTexture(a,"aoMap",s.occlusionTexture)),s.occlusionTexture.strength!==void 0&&(a.aoMapIntensity=s.occlusionTexture.strength)),s.emissiveFactor!==void 0&&o!==Qe){const c=s.emissiveFactor;a.emissive=new DA().setRGB(c[0],c[1],c[2],WA)}return s.emissiveTexture!==void 0&&o!==Qe&&l.push(e.assignTexture(a,"emissiveMap",s.emissiveTexture,lA)),Promise.all(l).then(function(){const c=new o(a);return s.name&&(c.name=s.name),Ge(c,s),e.associations.set(c,{materials:A}),s.extensions&&We(t,c,s),c})}createUniqueName(A){const e=Me.sanitizeNodeName(A||"");return e in this.nodeNamesUsed?e+"_"+ ++this.nodeNamesUsed[e]:(this.nodeNamesUsed[e]=0,e)}loadGeometries(A){const e=this,i=this.extensions,t=this.primitiveCache;function s(a){return i[oA.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(a,e).then(function(r){return lo(r,a,e)})}const o=[];for(let a=0,r=A.length;a<r;a++){const l=A[a],g=Sr(l),c=t[g];if(c)o.push(c.promise);else{let I;l.extensions&&l.extensions[oA.KHR_DRACO_MESH_COMPRESSION]?I=s(l):I=lo(new oe,l,e),t[g]={primitive:l,promise:I},o.push(I)}}return Promise.all(o)}loadMesh(A){const e=this,i=this.json,t=this.extensions,s=i.meshes[A],o=s.primitives,a=[];for(let r=0,l=o.length;r<l;r++){const g=o[r].material===void 0?wr(this.cache):this.getDependency("material",o[r].material);a.push(g)}return a.push(e.loadGeometries(o)),Promise.all(a).then(function(r){const l=r.slice(0,r.length-1),g=r[r.length-1],c=[];for(let B=0,E=g.length;B<E;B++){const u=g[B],C=o[B];let p;const f=l[B];if(C.mode===ce.TRIANGLES||C.mode===ce.TRIANGLE_STRIP||C.mode===ce.TRIANGLE_FAN||C.mode===void 0)p=s.isSkinnedMesh===!0?new Us(u,f):new K(u,f),p.isSkinnedMesh===!0&&p.normalizeSkinWeights(),C.mode===ce.TRIANGLE_STRIP?p.geometry=Ui(p.geometry,Fs):C.mode===ce.TRIANGLE_FAN&&(p.geometry=Ui(p.geometry,Ei));else if(C.mode===ce.LINES)p=new Ht(u,f);else if(C.mode===ce.LINE_STRIP)p=new Ee(u,f);else if(C.mode===ce.LINE_LOOP)p=new ha(u,f);else if(C.mode===ce.POINTS)p=new qt(u,f);else throw new Error("THREE.GLTFLoader: Primitive mode unsupported: "+C.mode);Object.keys(p.geometry.morphAttributes).length>0&&Dr(p,s),p.name=e.createUniqueName(s.name||"mesh_"+A),Ge(p,s),C.extensions&&We(t,p,C),e.assignFinalMaterial(p),c.push(p)}for(let B=0,E=c.length;B<E;B++)e.associations.set(c[B],{meshes:A,primitives:B});if(c.length===1)return s.extensions&&We(t,c[0],s),c[0];const I=new Xe;s.extensions&&We(t,I,s),e.associations.set(I,{meshes:A});for(let B=0,E=c.length;B<E;B++)I.add(c[B]);return I})}loadCamera(A){let e;const i=this.json.cameras[A],t=i[i.type];if(!t){console.warn("THREE.GLTFLoader: Missing camera parameters.");return}return i.type==="perspective"?e=new Ot(bA.radToDeg(t.yfov),t.aspectRatio||1,t.znear||1,t.zfar||2e6):i.type==="orthographic"&&(e=new _s(-t.xmag,t.xmag,t.ymag,-t.ymag,t.znear,t.zfar)),i.name&&(e.name=this.createUniqueName(i.name)),Ge(e,i),Promise.resolve(e)}loadSkin(A){const e=this.json.skins[A],i=[];for(let t=0,s=e.joints.length;t<s;t++)i.push(this._loadNodeShallow(e.joints[t]));return e.inverseBindMatrices!==void 0?i.push(this.getDependency("accessor",e.inverseBindMatrices)):i.push(null),Promise.all(i).then(function(t){const s=t.pop(),o=t,a=[],r=[];for(let l=0,g=o.length;l<g;l++){const c=o[l];if(c){a.push(c);const I=new hA;s!==null&&I.fromArray(s.array,l*16),r.push(I)}else console.warn('THREE.GLTFLoader: Joint "%s" could not be found.',e.joints[l])}return new Ps(a,r)})}loadAnimation(A){const e=this.json,i=this,t=e.animations[A],s=t.name?t.name:"animation_"+A,o=[],a=[],r=[],l=[],g=[];let c=0,I=t.channels.length;for(c=0,I=t.channels.length;c<I;c++){const B=t.channels[c],E=t.samplers[B.sampler],u=B.target,C=u.node,p=t.parameters!==void 0?t.parameters[E.input]:E.input,f=t.parameters!==void 0?t.parameters[E.output]:E.output;u.node!==void 0&&(o.push(this.getDependency("node",C)),a.push(this.getDependency("accessor",p)),r.push(this.getDependency("accessor",f)),l.push(E),g.push(u))}return Promise.all([Promise.all(o),Promise.all(a),Promise.all(r),Promise.all(l),Promise.all(g)]).then(function(B){const E=B[0],u=B[1],C=B[2],p=B[3],f=B[4],Q=[];for(c=0,I=E.length;c<I;c++){const w=E[c],b=u[c],S=C[c],x=p[c],D=f[c];if(w===void 0)continue;w.updateMatrix&&w.updateMatrix();const F=i._createAnimationTracks(w,b,S,x,D);if(F)for(let P=0;P<F.length;P++)Q.push(F[P])}return new Hs(s,void 0,Q)})}createNodeMesh(A){const e=this.json,i=this,t=e.nodes[A];return t.mesh===void 0?null:i.getDependency("mesh",t.mesh).then(function(s){const o=i._getNodeRef(i.meshCache,t.mesh,s);return t.weights!==void 0&&o.traverse(function(a){if(a.isMesh)for(let r=0,l=t.weights.length;r<l;r++)a.morphTargetInfluences[r]=t.weights[r]}),o})}loadNode(A){const e=this.json,i=this,t=e.nodes[A],s=i._loadNodeShallow(A),o=[],a=t.children||[];for(let l=0,g=a.length;l<g;l++)o.push(i.getDependency("node",a[l]));const r=t.skin===void 0?Promise.resolve(null):i.getDependency("skin",t.skin);return Promise.all([s,Promise.all(o),r]).then(function(l){const g=l[0],c=l[1],I=l[2];I!==null&&g.traverse(function(B){B.isSkinnedMesh&&B.bind(I,xr)});for(let B=0,E=c.length;B<E;B++)g.add(c[B]);return g})}_loadNodeShallow(A){const e=this.json,i=this.extensions,t=this;if(this.nodeCache[A]!==void 0)return this.nodeCache[A];const s=e.nodes[A],o=s.name?t.createUniqueName(s.name):"",a=[],r=t._invokeOne(function(l){return l.createNodeMesh&&l.createNodeMesh(A)});return r&&a.push(r),s.camera!==void 0&&a.push(t.getDependency("camera",s.camera).then(function(l){return t._getNodeRef(t.cameraCache,s.camera,l)})),t._invokeAll(function(l){return l.createNodeAttachment&&l.createNodeAttachment(A)}).forEach(function(l){a.push(l)}),this.nodeCache[A]=Promise.all(a).then(function(l){let g;if(s.isBone===!0?g=new mi:l.length>1?g=new Xe:l.length===1?g=l[0]:g=new me,g!==l[0])for(let c=0,I=l.length;c<I;c++)g.add(l[c]);if(s.name&&(g.userData.name=s.name,g.name=o),Ge(g,s),s.extensions&&We(i,g,s),s.matrix!==void 0){const c=new hA;c.fromArray(s.matrix),g.applyMatrix4(c)}else s.translation!==void 0&&g.position.fromArray(s.translation),s.rotation!==void 0&&g.quaternion.fromArray(s.rotation),s.scale!==void 0&&g.scale.fromArray(s.scale);return t.associations.has(g)||t.associations.set(g,{}),t.associations.get(g).nodes=A,g}),this.nodeCache[A]}loadScene(A){const e=this.extensions,i=this.json.scenes[A],t=this,s=new Xe;i.name&&(s.name=t.createUniqueName(i.name)),Ge(s,i),i.extensions&&We(e,s,i);const o=i.nodes||[],a=[];for(let r=0,l=o.length;r<l;r++)a.push(t.getDependency("node",o[r]));return Promise.all(a).then(function(r){for(let g=0,c=r.length;g<c;g++)s.add(r[g]);const l=g=>{const c=new Map;for(const[I,B]of t.associations)(I instanceof Et||I instanceof wi)&&c.set(I,B);return g.traverse(I=>{const B=t.associations.get(I);B!=null&&c.set(I,B)}),c};return t.associations=l(s),s})}_createAnimationTracks(A,e,i,t,s){const o=[],a=A.name?A.name:A.uuid,r=[];Oe[s.path]===Oe.weights?A.traverse(function(I){I.morphTargetInfluences&&r.push(I.name?I.name:I.uuid)}):r.push(a);let l;switch(Oe[s.path]){case Oe.weights:l=Di;break;case Oe.rotation:l=Si;break;case Oe.position:case Oe.scale:l=yi;break;default:i.itemSize===1?l=Di:l=yi;break}const g=t.interpolation!==void 0?br[t.interpolation]:bi,c=this._getArrayFromAccessor(i);for(let I=0,B=r.length;I<B;I++){const E=new l(r[I]+"."+Oe[s.path],e.array,c,g);t.interpolation==="CUBICSPLINE"&&this._createCubicSplineTrackInterpolant(E),o.push(E)}return o}_getArrayFromAccessor(A){let e=A.array;if(A.normalized){const i=Oi(e.constructor),t=new Float32Array(e.length);for(let s=0,o=e.length;s<o;s++)t[s]=e[s]*i;e=t}return e}_createCubicSplineTrackInterpolant(A){A.createInterpolant=function(e){const i=this instanceof Si?mr:ro;return new i(this.times,this.values,this.getValueSize()/3,e)},A.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0}}function Fr(n,A,e){const i=A.attributes,t=new Kt;if(i.POSITION!==void 0){const a=e.json.accessors[i.POSITION],r=a.min,l=a.max;if(r!==void 0&&l!==void 0){if(t.set(new N(r[0],r[1],r[2]),new N(l[0],l[1],l[2])),a.normalized){const g=Oi(at[a.componentType]);t.min.multiplyScalar(g),t.max.multiplyScalar(g)}}else{console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");return}}else return;const s=A.targets;if(s!==void 0){const a=new N,r=new N;for(let l=0,g=s.length;l<g;l++){const c=s[l];if(c.POSITION!==void 0){const I=e.json.accessors[c.POSITION],B=I.min,E=I.max;if(B!==void 0&&E!==void 0){if(r.setX(Math.max(Math.abs(B[0]),Math.abs(E[0]))),r.setY(Math.max(Math.abs(B[1]),Math.abs(E[1]))),r.setZ(Math.max(Math.abs(B[2]),Math.abs(E[2]))),I.normalized){const u=Oi(at[I.componentType]);r.multiplyScalar(u)}a.max(r)}else console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.")}}t.expandByVector(a)}n.boundingBox=t;const o=new vi;t.getCenter(o.center),o.radius=t.min.distanceTo(t.max)/2,n.boundingSphere=o}function lo(n,A,e){const i=A.attributes,t=[];function s(o,a){return e.getDependency("accessor",o).then(function(r){n.setAttribute(a,r)})}for(const o in i){const a=Pi[o]||o.toLowerCase();a in n.attributes||t.push(s(i[o],a))}if(A.indices!==void 0&&!n.index){const o=e.getDependency("accessor",A.indices).then(function(a){n.setIndex(a)});t.push(o)}return ZA.workingColorSpace!==WA&&"COLOR_0"in i&&console.warn(`THREE.GLTFLoader: Converting vertex colors from "srgb-linear" to "${ZA.workingColorSpace}" not supported.`),Ge(n,A),Fr(n,A,e),Promise.all(t).then(function(){return A.targets!==void 0?yr(n,A.targets,e):n})}var Mr=function(){var n="b9H79Tebbbe8Fv9Gbb9Gvuuuuueu9Giuuub9Geueu9Giuuueuikqbeeedddillviebeoweuec:q;iekr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbeY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVbdE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbiL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtblK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbol79IV9Rbrq:P8Yqdbk;3sezu8Jjjjjbcj;eb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Radz1jjjbhwcj;abad9UhoaicefhldnadTmbaoc;WFbGgocjdaocjd6EhDcbhqinaqae9pmeaDaeaq9RaqaDfae6Egkcsfgocl4cifcd4hxdndndndnaoc9WGgmTmbcbhPcehsawcjdfhzalhHinaraH9Rax6midnaraHaxfgl9RcK6mbczhoinawcj;cbfaogifgoc9WfhOdndndndndnaHaic9WfgAco4fRbbaAci4coG4ciGPlbedibkaO9cb83ibaOcwf9cb83ibxikaOalRblalRbbgAco4gCaCciSgCE86bbaocGfalclfaCfgORbbaAcl4ciGgCaCciSgCE86bbaocVfaOaCfgORbbaAcd4ciGgCaCciSgCE86bbaoc7faOaCfgORbbaAciGgAaAciSgAE86bbaoctfaOaAfgARbbalRbegOco4gCaCciSgCE86bbaoc91faAaCfgARbbaOcl4ciGgCaCciSgCE86bbaoc4faAaCfgARbbaOcd4ciGgCaCciSgCE86bbaoc93faAaCfgARbbaOciGgOaOciSgOE86bbaoc94faAaOfgARbbalRbdgOco4gCaCciSgCE86bbaoc95faAaCfgARbbaOcl4ciGgCaCciSgCE86bbaoc96faAaCfgARbbaOcd4ciGgCaCciSgCE86bbaoc97faAaCfgARbbaOciGgOaOciSgOE86bbaoc98faAaOfgORbbalRbiglco4gAaAciSgAE86bbaoc99faOaAfgORbbalcl4ciGgAaAciSgAE86bbaoc9:faOaAfgORbbalcd4ciGgAaAciSgAE86bbaocufaOaAfgoRbbalciGglalciSglE86bbaoalfhlxdkaOalRbwalRbbgAcl4gCaCcsSgCE86bbaocGfalcwfaCfgORbbaAcsGgAaAcsSgAE86bbaocVfaOaAfgORbbalRbegAcl4gCaCcsSgCE86bbaoc7faOaCfgORbbaAcsGgAaAcsSgAE86bbaoctfaOaAfgORbbalRbdgAcl4gCaCcsSgCE86bbaoc91faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc4faOaAfgORbbalRbigAcl4gCaCcsSgCE86bbaoc93faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc94faOaAfgORbbalRblgAcl4gCaCcsSgCE86bbaoc95faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc96faOaAfgORbbalRbvgAcl4gCaCcsSgCE86bbaoc97faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc98faOaAfgORbbalRbogAcl4gCaCcsSgCE86bbaoc99faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc9:faOaAfgORbbalRbrglcl4gAaAcsSgAE86bbaocufaOaAfgoRbbalcsGglalcsSglE86bbaoalfhlxekaOal8Pbb83bbaOcwfalcwf8Pbb83bbalczfhlkdnaiam9pmbaiczfhoaral9RcL0mekkaiam6mialTmidnakTmbawaPfRbbhOcbhoazhiinaiawcj;cbfaofRbbgAce4cbaAceG9R7aOfgO86bbaiadfhiaocefgoak9hmbkkazcefhzaPcefgPad6hsalhHaPad9hmexvkkcbhlasceGmdxikalaxad2fhCdnakTmbcbhHcehsawcjdfhminaral9Rax6mialTmdalaxfhlawaHfRbbhOcbhoamhiinaiawcj;cbfaofRbbgAce4cbaAceG9R7aOfgO86bbaiadfhiaocefgoak9hmbkamcefhmaHcefgHad6hsaHad9hmbkaChlxikcbhocehsinaral9Rax6mdalTmealaxfhlaocefgoad6hsadao9hmbkaChlxdkcbhlasceGTmekc9:hoxikabaqad2fawcjdfakad2z1jjjb8Aawawcjdfakcufad2fadz1jjjb8Aakaqfhqalmbkc9:hoxekcbc99aral9Radcaadca0ESEhokavcj;ebf8Kjjjjbaok;yzeHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecjez:jjjjb8AavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhodnaeTmbcmcsaDceSEhkcbhxcbhmcbhDcbhicbhlindnaoaq9nmbc9:hoxikdndnawRbbgrc;Ve0mbavc;abfalarcl4cu7fcsGcitfgPydlhsaPydbhzdnarcsGgPak9pmbavaiarcu7fcsGcdtfydbaxaPEhraPThPdndnadcd9hmbabaDcetfgHaz87ebaHcdfas87ebaHclfar87ebxekabaDcdtfgHazBdbaHclfasBdbaHcwfarBdbkaxaPfhxavc;abfalcitfgHarBdbaHasBdlavaicdtfarBdbavc;abfalcefcsGglcitfgHazBdbaHarBdlaiaPfhialcefhlxdkdndnaPcsSmbamaPfaPc987fcefhmxekaocefhrao8SbbgPcFeGhHdndnaPcu9mmbarhoxekaocvfhoaHcFbGhHcrhPdninar8SbbgOcFbGaPtaHVhHaOcu9kmearcefhraPcrfgPc8J9hmbxdkkarcefhokaHce4cbaHceG9R7amfhmkdndnadcd9hmbabaDcetfgraz87ebarcdfas87ebarclfam87ebxekabaDcdtfgrazBdbarclfasBdbarcwfamBdbkavc;abfalcitfgramBdbarasBdlavaicdtfamBdbavc;abfalcefcsGglcitfgrazBdbaramBdlaicefhialcefhlxekdnarcpe0mbaxcefgOavaiaqarcsGfRbbgPcl49RcsGcdtfydbaPcz6gHEhravaiaP9RcsGcdtfydbaOaHfgsaPcsGgOEhPaOThOdndnadcd9hmbabaDcetfgzax87ebazcdfar87ebazclfaP87ebxekabaDcdtfgzaxBdbazclfarBdbazcwfaPBdbkavaicdtfaxBdbavc;abfalcitfgzarBdbazaxBdlavaicefgicsGcdtfarBdbavc;abfalcefcsGcitfgzaPBdbazarBdlavaiaHfcsGgicdtfaPBdbavc;abfalcdfcsGglcitfgraxBdbaraPBdlalcefhlaiaOfhiasaOfhxxekaxcbaoRbbgzEgAarc;:eSgrfhsazcsGhCazcl4hXdndnazcs0mbascefhOxekashOavaiaX9RcsGcdtfydbhskdndnaCmbaOcefhxxekaOhxavaiaz9RcsGcdtfydbhOkdndnarTmbaocefhrxekaocdfhrao8SbegHcFeGhPdnaHcu9kmbaocofhAaPcFbGhPcrhodninar8SbbgHcFbGaotaPVhPaHcu9kmearcefhraocrfgoc8J9hmbkaAhrxekarcefhrkaPce4cbaPceG9R7amfgmhAkdndnaXcsSmbarhPxekarcefhPar8SbbgocFeGhHdnaocu9kmbarcvfhsaHcFbGhHcrhodninaP8SbbgrcFbGaotaHVhHarcu9kmeaPcefhPaocrfgoc8J9hmbkashPxekaPcefhPkaHce4cbaHceG9R7amfgmhskdndnaCcsSmbaPhoxekaPcefhoaP8SbbgrcFeGhHdnarcu9kmbaPcvfhOaHcFbGhHcrhrdninao8SbbgPcFbGartaHVhHaPcu9kmeaocefhoarcrfgrc8J9hmbkaOhoxekaocefhokaHce4cbaHceG9R7amfgmhOkdndnadcd9hmbabaDcetfgraA87ebarcdfas87ebarclfaO87ebxekabaDcdtfgraABdbarclfasBdbarcwfaOBdbkavc;abfalcitfgrasBdbaraABdlavaicdtfaABdbavc;abfalcefcsGcitfgraOBdbarasBdlavaicefgicsGcdtfasBdbavc;abfalcdfcsGcitfgraABdbaraOBdlavaiazcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhialcifhlkawcefhwalcsGhlaicsGhiaDcifgDae6mbkkcbc99aoaqSEhokavc;aef8Kjjjjbaok:llevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:Lvoeue99dud99eud99dndnadcl9hmbaeTmeindndnabcdfgd8Sbb:Yab8Sbbgi:Ygl:l:tabcefgv8Sbbgo:Ygr:l:tgwJbb;:9cawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai86bbdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad86bbdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad86bbabclfhbaecufgembxdkkaeTmbindndnabclfgd8Ueb:Yab8Uebgi:Ygl:l:tabcdfgv8Uebgo:Ygr:l:tgwJb;:FSawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai87ebdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad87ebdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad87ebabcwfhbaecufgembkkk;siliui99iue99dnaeTmbcbhiabhlindndnJ;Zl81Zalcof8UebgvciV:Y:vgoal8Ueb:YNgrJb;:FSNJbbbZJbbb:;arJbbbb9GEMgw:lJbbb9p9DTmbaw:OhDxekcjjjj94hDkalclf8Uebhqalcdf8UebhkabavcefciGaiVcetfaD87ebdndnaoak:YNgwJb;:FSNJbbbZJbbb:;awJbbbb9GEMgx:lJbbb9p9DTmbax:Ohkxekcjjjj94hkkabavcdfciGaiVcetfak87ebdndnaoaq:YNgoJb;:FSNJbbbZJbbb:;aoJbbbb9GEMgx:lJbbb9p9DTmbax:Ohqxekcjjjj94hqkabavcufciGaiVcetfaq87ebdndnJbbjZararN:tawawN:taoaoN:tgrJbbbbarJbbbb9GE:rJb;:FSNJbbbZMgr:lJbbb9p9DTmbar:Ohqxekcjjjj94hqkabavciGaiVcetfaq87ebalcwfhlaiclfhiaecufgembkkk9mbdnadcd4ae2geTmbinababydbgdcwtcw91:Yadce91cjjj;8ifcjjj98G::NUdbabclfhbaecufgembkkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaiczfhiaeczfheadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabkkkebcjwklz9Kbb",A="b9H79TebbbeKl9Gbb9Gvuuuuueu9Giuuub9Geueuikqbbebeedddilve9Weeeviebeoweuec:q;Aekr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbdY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVblE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtboK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbrL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbwl79IV9RbDq;t9tqlbzik9:evu8Jjjjjbcz9Rhbcbheincbhdcbhiinabcwfadfaicjuaead4ceGglE86bbaialfhiadcefgdcw9hmbkaec:q:yjjbfai86bbaecitc:q1jjbfab8Piw83ibaecefgecjd9hmbkk;h8JlHud97euo978Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Rad;8qbbcj;abad9UhoaicefhldnadTmbaoc;WFbGgocjdaocjd6EhwcbhDinaDae9pmeawaeaD9RaDawfae6Egqcsfgoc9WGgkci2hxakcethmaocl4cifcd4hPabaDad2fhscbhzdnincehHalhOcbhAdninaraO9RaP6miavcj;cbfaAak2fhCaOaPfhlcbhidnakc;ab6mbaral9Rc;Gb6mbcbhoinaCaofhidndndndndnaOaoco4fRbbgXciGPlbedibkaipxbbbbbbbbbbbbbbbbpklbxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklbalczfhlkdndndndndnaXcd4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklzxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklzalczfhlkdndndndndnaXcl4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklaxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklaalczfhlkdndndndndnaXco4Plbedibkaipxbbbbbbbbbbbbbbbbpkl8WxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WalclfaYpQbfaXc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WalcwfaYpQbfaXc:q:yjjbfRbbfhlxekaialpbbbpkl8Walczfhlkaoc;abfhiaocjefak0meaihoaral9Rc;Fb0mbkkdndnaiak9pmbaici4hoinaral9RcK6mdaCaifhXdndndndndnaOaico4fRbbaocoG4ciGPlbedibkaXpxbbbbbbbbbbbbbbbbpklbxikaXalpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaXalpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaXalpbbbpklbalczfhlkaocdfhoaiczfgiak6mbkkalTmbaAci6hHalhOaAcefgohAaoclSmdxekkcbhlaHceGmdkdnakTmbavcjdfazfhiavazfpbdbhYcbhXinaiavcj;cbfaXfgopblbgLcep9TaLpxeeeeeeeeeeeeeeeegQp9op9Hp9rgLaoakfpblbg8Acep9Ta8AaQp9op9Hp9rg8ApmbzeHdOiAlCvXoQrLgEaoamfpblbg3cep9Ta3aQp9op9Hp9rg3aoaxfpblbg5cep9Ta5aQp9op9Hp9rg5pmbzeHdOiAlCvXoQrLg8EpmbezHdiOAlvCXorQLgQaQpmbedibedibedibediaYp9UgYp9AdbbaiadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaEa8EpmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaLa8ApmwKDYq8AkEx3m5P8Es8FgLa3a5pmwKDYq8AkEx3m5P8Es8Fg8ApmbezHdiOAlvCXorQLgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaLa8ApmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfhiaXczfgXak6mbkkazclfgzad6mbkasavcjdfaqad2;8qbbavavcjdfaqcufad2fad;8qbbaqaDfhDc9:hoalmexikkc9:hoxekcbc99aral9Radcaadca0ESEhokavcj;kbf8Kjjjjbaokwbz:bjjjbk;uzeHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecje;8kbavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhodnaeTmbcmcsaDceSEhkcbhxcbhmcbhDcbhicbhlindnaoaq9nmbc9:hoxikdndnawRbbgrc;Ve0mbavc;abfalarcl4cu7fcsGcitfgPydlhsaPydbhzdnarcsGgPak9pmbavaiarcu7fcsGcdtfydbaxaPEhraPThPdndnadcd9hmbabaDcetfgHaz87ebaHcdfas87ebaHclfar87ebxekabaDcdtfgHazBdbaHclfasBdbaHcwfarBdbkaxaPfhxavc;abfalcitfgHarBdbaHasBdlavaicdtfarBdbavc;abfalcefcsGglcitfgHazBdbaHarBdlaiaPfhialcefhlxdkdndnaPcsSmbamaPfaPc987fcefhmxekaocefhrao8SbbgPcFeGhHdndnaPcu9mmbarhoxekaocvfhoaHcFbGhHcrhPdninar8SbbgOcFbGaPtaHVhHaOcu9kmearcefhraPcrfgPc8J9hmbxdkkarcefhokaHce4cbaHceG9R7amfhmkdndnadcd9hmbabaDcetfgraz87ebarcdfas87ebarclfam87ebxekabaDcdtfgrazBdbarclfasBdbarcwfamBdbkavc;abfalcitfgramBdbarasBdlavaicdtfamBdbavc;abfalcefcsGglcitfgrazBdbaramBdlaicefhialcefhlxekdnarcpe0mbaxcefgOavaiaqarcsGfRbbgPcl49RcsGcdtfydbaPcz6gHEhravaiaP9RcsGcdtfydbaOaHfgsaPcsGgOEhPaOThOdndnadcd9hmbabaDcetfgzax87ebazcdfar87ebazclfaP87ebxekabaDcdtfgzaxBdbazclfarBdbazcwfaPBdbkavaicdtfaxBdbavc;abfalcitfgzarBdbazaxBdlavaicefgicsGcdtfarBdbavc;abfalcefcsGcitfgzaPBdbazarBdlavaiaHfcsGgicdtfaPBdbavc;abfalcdfcsGglcitfgraxBdbaraPBdlalcefhlaiaOfhiasaOfhxxekaxcbaoRbbgzEgAarc;:eSgrfhsazcsGhCazcl4hXdndnazcs0mbascefhOxekashOavaiaX9RcsGcdtfydbhskdndnaCmbaOcefhxxekaOhxavaiaz9RcsGcdtfydbhOkdndnarTmbaocefhrxekaocdfhrao8SbegHcFeGhPdnaHcu9kmbaocofhAaPcFbGhPcrhodninar8SbbgHcFbGaotaPVhPaHcu9kmearcefhraocrfgoc8J9hmbkaAhrxekarcefhrkaPce4cbaPceG9R7amfgmhAkdndnaXcsSmbarhPxekarcefhPar8SbbgocFeGhHdnaocu9kmbarcvfhsaHcFbGhHcrhodninaP8SbbgrcFbGaotaHVhHarcu9kmeaPcefhPaocrfgoc8J9hmbkashPxekaPcefhPkaHce4cbaHceG9R7amfgmhskdndnaCcsSmbaPhoxekaPcefhoaP8SbbgrcFeGhHdnarcu9kmbaPcvfhOaHcFbGhHcrhrdninao8SbbgPcFbGartaHVhHaPcu9kmeaocefhoarcrfgrc8J9hmbkaOhoxekaocefhokaHce4cbaHceG9R7amfgmhOkdndnadcd9hmbabaDcetfgraA87ebarcdfas87ebarclfaO87ebxekabaDcdtfgraABdbarclfasBdbarcwfaOBdbkavc;abfalcitfgrasBdbaraABdlavaicdtfaABdbavc;abfalcefcsGcitfgraOBdbarasBdlavaicefgicsGcdtfasBdbavc;abfalcdfcsGcitfgraABdbaraOBdlavaiazcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhialcifhlkawcefhwalcsGhlaicsGhiaDcifgDae6mbkkcbc99aoaqSEhokavc;aef8Kjjjjbaok:llevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:EPliuo97eue978Jjjjjbca9Rhidndnadcl9hmbdnaec98GglTmbcbhvabhdinadadpbbbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpkbbadczfhdavclfgval6mbkkalae9pmeaiaeciGgvcdtgdVcbczad9R;8kbaiabalcdtfglad;8qbbdnavTmbaiaipblbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpklbkalaiad;8qbbskdnaec98GgxTmbcbhvabhdinadczfglalpbbbgopxbbbbbbFFbbbbbbFFgkp9oadpbbbgDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eaDaopmbediwDqkzHOAKY8AEgoczp:Sep;6egrp;Geaoczp:Reczp:Sep;6egwp;Gep;Kep;Legopxb;:FSb;:FSb;:FSb;:FSawaopxbbbbbbbbbbbbbbbbp:2egqawpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegwawp;Meaoaop;Mearaqaramp9op9rp;Kegoaop;Mep;Kep;Kep;Jep;Negrp;Mepxbbn0bbn0bbn0bbn0gqp;Keczp:Reawarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9op9qgwaoarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogopmwDKYqk8AExm35Ps8E8Fp9qpkbbadaDakp9oawaopmbezHdiOAlvCXorQLp9qpkbbadcafhdavclfgvax6mbkkaxae9pmbaiaeciGgvcitgdfcbcaad9R;8kbaiabaxcitfglad;8qbbdnavTmbaiaipblzgopxbbbbbbFFbbbbbbFFgkp9oaipblbgDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eaDaopmbediwDqkzHOAKY8AEgoczp:Sep;6egrp;Geaoczp:Reczp:Sep;6egwp;Gep;Kep;Legopxb;:FSb;:FSb;:FSb;:FSawaopxbbbbbbbbbbbbbbbbp:2egqawpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegwawp;Meaoaop;Mearaqaramp9op9rp;Kegoaop;Mep;Kep;Kep;Jep;Negrp;Mepxbbn0bbn0bbn0bbn0gqp;Keczp:Reawarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9op9qgwaoarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogopmwDKYqk8AExm35Ps8E8Fp9qpklzaiaDakp9oawaopmbezHdiOAlvCXorQLp9qpklbkalaiad;8qbbkk;4wllue97euv978Jjjjjbc8W9Rhidnaec98GglTmbcbhvabhoinaiaopbbbgraoczfgwpbbbgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklbaopxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaqakp;Mearp;Keczp:ReaDakp;Mearp;Keamp9op9qgkpmbezHdiOAlvCXorQLgrp5baipblbpEb:T:j83ibaocwfarp5eaipblbpEe:T:j83ibawaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblbpEd:T:j83ibaocKfakp5eaipblbpEi:T:j83ibaocafhoavclfgval6mbkkdnalae9pmbaiaeciGgvcitgofcbcaao9R;8kbaiabalcitfgwao;8qbbdnavTmbaiaipblbgraipblzgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklaaipxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaqakp;Mearp;Keczp:ReaDakp;Mearp;Keamp9op9qgkpmbezHdiOAlvCXorQLgrp5baipblapEb:T:j83ibaiarp5eaipblapEe:T:j83iwaiaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblapEd:T:j83izaiakp5eaipblapEi:T:j83iKkawaiao;8qbbkk:Pddiue978Jjjjjbc;ab9Rhidnadcd4ae2glc98GgvTmbcbhdabheinaeaepbbbgocwp:Recwp:Sep;6eaocep:SepxbbjZbbjZbbjZbbjZp:UepxbbjFbbjFbbjFbbjFp9op;Mepkbbaeczfheadclfgdav6mbkkdnaval9pmbaialciGgdcdtgeVcbc;abae9R;8kbaiabavcdtfgvae;8qbbdnadTmbaiaipblbgocwp:Recwp:Sep;6eaocep:SepxbbjZbbjZbbjZbbjZp:UepxbbjFbbjFbbjFbbjFp9op;Mepklbkavaiae;8qbbkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikkkebcjwklz9Tbb",e=new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,3,2,0,0,5,3,1,0,1,12,1,0,10,22,2,12,0,65,0,65,0,65,0,252,10,0,0,11,7,0,65,0,253,15,26,11]),i=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.validate(e)?A:n,s,o=WebAssembly.instantiate(a(t),{}).then(function(p){s=p.instance,s.exports.__wasm_call_ctors()});function a(p){for(var f=new Uint8Array(p.length),Q=0;Q<p.length;++Q){var w=p.charCodeAt(Q);f[Q]=w>96?w-97:w>64?w-39:w+4}for(var b=0,Q=0;Q<p.length;++Q)f[b++]=f[Q]<60?i[f[Q]]:(f[Q]-60)*64+f[++Q];return f.buffer.slice(0,b)}function r(p,f,Q,w,b,S){var x=s.exports.sbrk,D=Q+3&-4,F=x(D*w),P=x(b.length),Y=new Uint8Array(s.exports.memory.buffer);Y.set(b,P);var O=p(F,Q,w,P,b.length);if(O==0&&S&&S(F,D,w),f.set(Y.subarray(F,F+Q*w)),x(F-x(0)),O!=0)throw new Error("Malformed buffer data: "+O)}var l={NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp"},g={ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"},c=[],I=0;function B(p){var f={object:new Worker(p),pending:0,requests:{}};return f.object.onmessage=function(Q){var w=Q.data;f.pending-=w.count,f.requests[w.id][w.action](w.value),delete f.requests[w.id]},f}function E(p){for(var f="var instance; var ready = WebAssembly.instantiate(new Uint8Array(["+new Uint8Array(a(t))+"]), {}).then(function(result) { instance = result.instance; instance.exports.__wasm_call_ctors(); });self.onmessage = workerProcess;"+r.toString()+C.toString(),Q=new Blob([f],{type:"text/javascript"}),w=URL.createObjectURL(Q),b=0;b<p;++b)c[b]=B(w);URL.revokeObjectURL(w)}function u(p,f,Q,w,b){for(var S=c[0],x=1;x<c.length;++x)c[x].pending<S.pending&&(S=c[x]);return new Promise(function(D,F){var P=new Uint8Array(Q),Y=I++;S.pending+=p,S.requests[Y]={resolve:D,reject:F},S.object.postMessage({id:Y,count:p,size:f,source:P,mode:w,filter:b},[P.buffer])})}function C(p){o.then(function(){var f=p.data;try{var Q=new Uint8Array(f.count*f.size);r(s.exports[f.mode],Q,f.count,f.size,f.source,s.exports[f.filter]),self.postMessage({id:f.id,count:f.count,action:"resolve",value:Q},[Q.buffer])}catch(w){self.postMessage({id:f.id,count:f.count,action:"reject",value:w})}})}return{ready:o,supported:!0,useWorkers:function(p){E(p)},decodeVertexBuffer:function(p,f,Q,w,b){r(s.exports.meshopt_decodeVertexBuffer,p,f,Q,w,s.exports[l[b]])},decodeIndexBuffer:function(p,f,Q,w){r(s.exports.meshopt_decodeIndexBuffer,p,f,Q,w)},decodeIndexSequence:function(p,f,Q,w){r(s.exports.meshopt_decodeIndexSequence,p,f,Q,w)},decodeGltfBuffer:function(p,f,Q,w,b,S){r(s.exports[g[b]],p,f,Q,w,s.exports[l[S]])},decodeGltfBufferAsync:function(p,f,Q,w,b){return c.length>0?u(p,f,Q,g[w],l[b]):o.then(function(){var S=new Uint8Array(p*f);return r(s.exports[g[w]],S,p,f,Q,s.exports[l[b]]),S})}}}();const Ki=new WeakMap;class kr extends Re{constructor(A){super(A),this.decoderPath="",this.decoderConfig={},this.decoderBinary=null,this.decoderPending=null,this.workerLimit=4,this.workerPool=[],this.workerNextTaskID=1,this.workerSourceURL="",this.defaultAttributeIDs={position:"POSITION",normal:"NORMAL",color:"COLOR",uv:"TEX_COORD"},this.defaultAttributeTypes={position:"Float32Array",normal:"Float32Array",color:"Float32Array",uv:"Float32Array"}}setDecoderPath(A){return this.decoderPath=A,this}setDecoderConfig(A){return this.decoderConfig=A,this}setWorkerLimit(A){return this.workerLimit=A,this}load(A,e,i,t){const s=new Be(this.manager);s.setPath(this.path),s.setResponseType("arraybuffer"),s.setRequestHeader(this.requestHeader),s.setWithCredentials(this.withCredentials),s.load(A,o=>{this.parse(o,e,t)},i,t)}parse(A,e,i=()=>{}){this.decodeDracoFile(A,e,null,null,lA,i).catch(i)}decodeDracoFile(A,e,i,t,s=WA,o=()=>{}){const a={attributeIDs:i||this.defaultAttributeIDs,attributeTypes:t||this.defaultAttributeTypes,useUniqueIDs:!!i,vertexColorSpace:s};return this.decodeGeometry(A,a).then(e).catch(o)}decodeGeometry(A,e){const i=JSON.stringify(e);if(Ki.has(A)){const r=Ki.get(A);if(r.key===i)return r.promise;if(A.byteLength===0)throw new Error("THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.")}let t;const s=this.workerNextTaskID++,o=A.byteLength,a=this._getWorker(s,o).then(r=>(t=r,new Promise((l,g)=>{t._callbacks[s]={resolve:l,reject:g},t.postMessage({type:"decode",id:s,taskConfig:e,buffer:A},[A])}))).then(r=>this._createGeometry(r.geometry));return a.catch(()=>!0).then(()=>{t&&s&&this._releaseTask(t,s)}),Ki.set(A,{key:i,promise:a}),a}_createGeometry(A){const e=new oe;A.index&&e.setIndex(new LA(A.index.array,1));for(let i=0;i<A.attributes.length;i++){const t=A.attributes[i],s=t.name,o=t.array,a=t.itemSize,r=new LA(o,a);s==="color"&&(this._assignVertexColorSpace(r,t.vertexColorSpace),r.normalized=!(o instanceof Float32Array)),e.setAttribute(s,r)}return e}_assignVertexColorSpace(A,e){if(e!==lA)return;const i=new DA;for(let t=0,s=A.count;t<s;t++)i.fromBufferAttribute(A,t),ZA.toWorkingColorSpace(i,lA),A.setXYZ(t,i.r,i.g,i.b)}_loadLibrary(A,e){const i=new Be(this.manager);return i.setPath(this.decoderPath),i.setResponseType(e),i.setWithCredentials(this.withCredentials),new Promise((t,s)=>{i.load(A,t,void 0,s)})}preload(){return this._initDecoder(),this}_initDecoder(){if(this.decoderPending)return this.decoderPending;const A=typeof WebAssembly!="object"||this.decoderConfig.type==="js",e=[];return A?e.push(this._loadLibrary("draco_decoder.js","text")):(e.push(this._loadLibrary("draco_wasm_wrapper.js","text")),e.push(this._loadLibrary("draco_decoder.wasm","arraybuffer"))),this.decoderPending=Promise.all(e).then(i=>{const t=i[0];A||(this.decoderConfig.wasmBinary=i[1]);const s=Gr.toString(),o=["/* draco decoder */",t,"","/* worker */",s.substring(s.indexOf("{")+1,s.lastIndexOf("}"))].join(`
2
+ `);this.workerSourceURL=URL.createObjectURL(new Blob([o]))}),this.decoderPending}_getWorker(A,e){return this._initDecoder().then(()=>{if(this.workerPool.length<this.workerLimit){const t=new Worker(this.workerSourceURL);t._callbacks={},t._taskCosts={},t._taskLoad=0,t.postMessage({type:"init",decoderConfig:this.decoderConfig}),t.onmessage=function(s){const o=s.data;switch(o.type){case"decode":t._callbacks[o.id].resolve(o);break;case"error":t._callbacks[o.id].reject(o);break;default:console.error('THREE.DRACOLoader: Unexpected message, "'+o.type+'"')}},this.workerPool.push(t)}else this.workerPool.sort(function(t,s){return t._taskLoad>s._taskLoad?-1:1});const i=this.workerPool[this.workerPool.length-1];return i._taskCosts[A]=e,i._taskLoad+=e,i})}_releaseTask(A,e){A._taskLoad-=A._taskCosts[e],delete A._callbacks[e],delete A._taskCosts[e]}debug(){console.log("Task load: ",this.workerPool.map(A=>A._taskLoad))}dispose(){for(let A=0;A<this.workerPool.length;++A)this.workerPool[A].terminate();return this.workerPool.length=0,this.workerSourceURL!==""&&URL.revokeObjectURL(this.workerSourceURL),this}}function Gr(){let n,A;onmessage=function(o){const a=o.data;switch(a.type){case"init":n=a.decoderConfig,A=new Promise(function(g){n.onModuleLoaded=function(c){g({draco:c})},DracoDecoderModule(n)});break;case"decode":const r=a.buffer,l=a.taskConfig;A.then(g=>{const c=g.draco,I=new c.Decoder;try{const B=e(c,I,new Int8Array(r),l),E=B.attributes.map(u=>u.array.buffer);B.index&&E.push(B.index.array.buffer),self.postMessage({type:"decode",id:a.id,geometry:B},E)}catch(B){console.error(B),self.postMessage({type:"error",id:a.id,error:B.message})}finally{c.destroy(I)}});break}};function e(o,a,r,l){const g=l.attributeIDs,c=l.attributeTypes;let I,B;const E=a.GetEncodedGeometryType(r);if(E===o.TRIANGULAR_MESH)I=new o.Mesh,B=a.DecodeArrayToMesh(r,r.byteLength,I);else if(E===o.POINT_CLOUD)I=new o.PointCloud,B=a.DecodeArrayToPointCloud(r,r.byteLength,I);else throw new Error("THREE.DRACOLoader: Unexpected geometry type.");if(!B.ok()||I.ptr===0)throw new Error("THREE.DRACOLoader: Decoding failed: "+B.error_msg());const u={index:null,attributes:[]};for(const C in g){const p=self[c[C]];let f,Q;if(l.useUniqueIDs)Q=g[C],f=a.GetAttributeByUniqueId(I,Q);else{if(Q=a.GetAttributeId(I,o[g[C]]),Q===-1)continue;f=a.GetAttribute(I,Q)}const w=t(o,a,I,C,p,f);C==="color"&&(w.vertexColorSpace=l.vertexColorSpace),u.attributes.push(w)}return E===o.TRIANGULAR_MESH&&(u.index=i(o,a,I)),o.destroy(I),u}function i(o,a,r){const l=r.num_faces()*3,g=l*4,c=o._malloc(g);a.GetTrianglesUInt32Array(r,g,c);const I=new Uint32Array(o.HEAPF32.buffer,c,l).slice();return o._free(c),{array:I,itemSize:1}}function t(o,a,r,l,g,c){const I=c.num_components(),B=r.num_points()*I,E=B*g.BYTES_PER_ELEMENT,u=s(o,g),C=o._malloc(E);a.GetAttributeDataArrayForAllPoints(r,c,u,E,C);const p=new g(o.HEAPF32.buffer,C,B).slice();return o._free(C),{name:l,array:p,itemSize:I}}function s(o,a){switch(a){case Float32Array:return o.DT_FLOAT32;case Int8Array:return o.DT_INT8;case Int16Array:return o.DT_INT16;case Int32Array:return o.DT_INT32;case Uint8Array:return o.DT_UINT8;case Uint16Array:return o.DT_UINT16;case Uint32Array:return o.DT_UINT32}}}class Tr{constructor(A=4){this.pool=A,this.queue=[],this.workers=[],this.workersResolve=[],this.workerStatus=0}_initWorker(A){if(!this.workers[A]){const e=this.workerCreator();e.addEventListener("message",this._onMessage.bind(this,A)),this.workers[A]=e}}_getIdleWorker(){for(let A=0;A<this.pool;A++)if(!(this.workerStatus&1<<A))return A;return-1}_onMessage(A,e){const i=this.workersResolve[A];if(i&&i(e),this.queue.length){const{resolve:t,msg:s,transfer:o}=this.queue.shift();this.workersResolve[A]=t,this.workers[A].postMessage(s,o)}else this.workerStatus^=1<<A}setWorkerCreator(A){this.workerCreator=A}setWorkerLimit(A){this.pool=A}postMessage(A,e){return new Promise(i=>{const t=this._getIdleWorker();t!==-1?(this._initWorker(t),this.workerStatus|=1<<t,this.workersResolve[t]=i,this.workers[t].postMessage(A,e)):this.queue.push({resolve:i,msg:A,transfer:e})})}dispose(){this.workers.forEach(A=>A.terminate()),this.workersResolve.length=0,this.workers.length=0,this.queue.length=0,this.workerStatus=0}}const Nr=0,ho=2,Lr=1,Io=2,Ur=0,_r=1,Pr=10,Hr=0,Bo=9,Eo=15,Co=16,uo=22,po=37,Qo=43,fo=76,mo=83,bo=97,wo=100,yo=103,Do=109,So=122,vo=123,qr=131,Or=132,Kr=133,Yr=134,Jr=137,jr=138,zr=141,Vr=142,Xr=145,Wr=146,xo=148,Ro=152,Zr=157,$r=158,Fo=165,Mo=166,Yi=1000066e3;class ft{constructor(A,e,i,t){this._dataView=void 0,this._littleEndian=void 0,this._offset=void 0,this._dataView=new DataView(A.buffer,A.byteOffset+e,i),this._littleEndian=t,this._offset=0}_nextUint8(){const A=this._dataView.getUint8(this._offset);return this._offset+=1,A}_nextUint16(){const A=this._dataView.getUint16(this._offset,this._littleEndian);return this._offset+=2,A}_nextUint32(){const A=this._dataView.getUint32(this._offset,this._littleEndian);return this._offset+=4,A}_nextUint64(){const A=this._dataView.getUint32(this._offset,this._littleEndian)+4294967296*this._dataView.getUint32(this._offset+4,this._littleEndian);return this._offset+=8,A}_nextInt32(){const A=this._dataView.getInt32(this._offset,this._littleEndian);return this._offset+=4,A}_nextUint8Array(A){const e=new Uint8Array(this._dataView.buffer,this._dataView.byteOffset+this._offset,A);return this._offset+=A,e}_skip(A){return this._offset+=A,this}_scan(A,e=0){const i=this._offset;let t=0;for(;this._dataView.getUint8(this._offset)!==e&&t<A;)t++,this._offset++;return t<A&&this._offset++,new Uint8Array(this._dataView.buffer,this._dataView.byteOffset+i,t)}}const zA=[171,75,84,88,32,50,48,187,13,10,26,10];function ko(n){return new TextDecoder().decode(n)}function Ag(n){const A=new Uint8Array(n.buffer,n.byteOffset,zA.length);if(A[0]!==zA[0]||A[1]!==zA[1]||A[2]!==zA[2]||A[3]!==zA[3]||A[4]!==zA[4]||A[5]!==zA[5]||A[6]!==zA[6]||A[7]!==zA[7]||A[8]!==zA[8]||A[9]!==zA[9]||A[10]!==zA[10]||A[11]!==zA[11])throw new Error("Missing KTX 2.0 identifier.");const e={vkFormat:0,typeSize:1,pixelWidth:0,pixelHeight:0,pixelDepth:0,layerCount:0,faceCount:1,levelCount:0,supercompressionScheme:0,levels:[],dataFormatDescriptor:[{vendorId:0,descriptorType: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:[]}],keyValue:{},globalData:null},i=17*Uint32Array.BYTES_PER_ELEMENT,t=new ft(n,zA.length,i,!0);e.vkFormat=t._nextUint32(),e.typeSize=t._nextUint32(),e.pixelWidth=t._nextUint32(),e.pixelHeight=t._nextUint32(),e.pixelDepth=t._nextUint32(),e.layerCount=t._nextUint32(),e.faceCount=t._nextUint32(),e.levelCount=t._nextUint32(),e.supercompressionScheme=t._nextUint32();const s=t._nextUint32(),o=t._nextUint32(),a=t._nextUint32(),r=t._nextUint32(),l=t._nextUint64(),g=t._nextUint64(),c=3*Math.max(e.levelCount,1)*8,I=new ft(n,zA.length+i,c,!0);for(let eA=0,sA=Math.max(e.levelCount,1);eA<sA;eA++)e.levels.push({levelData:new Uint8Array(n.buffer,n.byteOffset+I._nextUint64(),I._nextUint64()),uncompressedByteLength:I._nextUint64()});const B=new ft(n,s,o,!0);B._skip(4);const E=B._nextUint16(),u=B._nextUint16(),C=B._nextUint16(),p=B._nextUint16(),f={vendorId:E,descriptorType:u,versionNumber:C,colorModel:B._nextUint8(),colorPrimaries:B._nextUint8(),transferFunction:B._nextUint8(),flags:B._nextUint8(),texelBlockDimension:[B._nextUint8(),B._nextUint8(),B._nextUint8(),B._nextUint8()],bytesPlane:[B._nextUint8(),B._nextUint8(),B._nextUint8(),B._nextUint8(),B._nextUint8(),B._nextUint8(),B._nextUint8(),B._nextUint8()],samples:[]},Q=(p/4-6)/4;for(let eA=0;eA<Q;eA++){const sA={bitOffset:B._nextUint16(),bitLength:B._nextUint8(),channelType:B._nextUint8(),samplePosition:[B._nextUint8(),B._nextUint8(),B._nextUint8(),B._nextUint8()],sampleLower:Number.NEGATIVE_INFINITY,sampleUpper:Number.POSITIVE_INFINITY};64&sA.channelType?(sA.sampleLower=B._nextInt32(),sA.sampleUpper=B._nextInt32()):(sA.sampleLower=B._nextUint32(),sA.sampleUpper=B._nextUint32()),f.samples[eA]=sA}e.dataFormatDescriptor.length=0,e.dataFormatDescriptor.push(f);const w=new ft(n,a,r,!0);for(;w._offset<r;){const eA=w._nextUint32(),sA=w._scan(eA),nA=ko(sA);if(e.keyValue[nA]=w._nextUint8Array(eA-sA.byteLength-1),nA.match(/^ktx/i)){const EA=ko(e.keyValue[nA]);e.keyValue[nA]=EA.substring(0,EA.lastIndexOf("\0"))}w._skip(eA%4?4-eA%4:0)}if(g<=0)return e;const b=new ft(n,l,g,!0),S=b._nextUint16(),x=b._nextUint16(),D=b._nextUint32(),F=b._nextUint32(),P=b._nextUint32(),Y=b._nextUint32(),O=[];for(let eA=0,sA=Math.max(e.levelCount,1);eA<sA;eA++)O.push({imageFlags:b._nextUint32(),rgbSliceByteOffset:b._nextUint32(),rgbSliceByteLength:b._nextUint32(),alphaSliceByteOffset:b._nextUint32(),alphaSliceByteLength:b._nextUint32()});const X=l+b._offset,_=X+D,W=_+F,j=W+P,AA=new Uint8Array(n.buffer,n.byteOffset+X,D),Z=new Uint8Array(n.buffer,n.byteOffset+_,F),cA=new Uint8Array(n.buffer,n.byteOffset+W,P),yA=new Uint8Array(n.buffer,n.byteOffset+j,Y);return e.globalData={endpointCount:S,selectorCount:x,imageDescs:O,endpointsData:AA,selectorsData:Z,tablesData:cA,extendedData:yA},e}let Ji,Te,ji;const zi={env:{emscripten_notify_memory_growth:function(n){ji=new Uint8Array(Te.exports.memory.buffer)}}};class eg{init(){return Ji||(Ji=typeof fetch<"u"?fetch("data:application/wasm;base64,"+Go).then(A=>A.arrayBuffer()).then(A=>WebAssembly.instantiate(A,zi)).then(this._init):WebAssembly.instantiate(Buffer.from(Go,"base64"),zi).then(this._init),Ji)}_init(A){Te=A.instance,zi.env.emscripten_notify_memory_growth(0)}decode(A,e=0){if(!Te)throw new Error("ZSTDDecoder: Await .init() before decoding.");const i=A.byteLength,t=Te.exports.malloc(i);ji.set(A,t),e=e||Number(Te.exports.ZSTD_findDecompressedSize(t,i));const s=Te.exports.malloc(e),o=Te.exports.ZSTD_decompress(s,e,t,i),a=ji.slice(s,s+o);return Te.exports.free(t),Te.exports.free(s),a}}const Go="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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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",tg="display-p3",ig="display-p3-linear",Vi=new WeakMap;let Xi=0,Wi;class he extends Re{constructor(A){super(A),this.transcoderPath="",this.transcoderBinary=null,this.transcoderPending=null,this.workerPool=new Tr,this.workerSourceURL="",this.workerConfig=null,typeof MSC_TRANSCODER<"u"&&console.warn('THREE.KTX2Loader: Please update to latest "basis_transcoder". "msc_basis_transcoder" is no longer supported in three.js r125+.')}setTranscoderPath(A){return this.transcoderPath=A,this}setWorkerLimit(A){return this.workerPool.setWorkerLimit(A),this}async detectSupportAsync(A){return this.workerConfig={astcSupported:await A.hasFeatureAsync("texture-compression-astc"),astcHDRSupported:!1,etc1Supported:await A.hasFeatureAsync("texture-compression-etc1"),etc2Supported:await A.hasFeatureAsync("texture-compression-etc2"),dxtSupported:await A.hasFeatureAsync("texture-compression-bc"),bptcSupported:await A.hasFeatureAsync("texture-compression-bptc"),pvrtcSupported:await A.hasFeatureAsync("texture-compression-pvrtc")},this}detectSupport(A){return A.isWebGPURenderer===!0?this.workerConfig={astcSupported:A.hasFeature("texture-compression-astc"),astcHDRSupported:!1,etc1Supported:A.hasFeature("texture-compression-etc1"),etc2Supported:A.hasFeature("texture-compression-etc2"),dxtSupported:A.hasFeature("texture-compression-bc"),bptcSupported:A.hasFeature("texture-compression-bptc"),pvrtcSupported:A.hasFeature("texture-compression-pvrtc")}:this.workerConfig={astcSupported:A.extensions.has("WEBGL_compressed_texture_astc"),astcHDRSupported:A.extensions.has("WEBGL_compressed_texture_astc")&&A.extensions.get("WEBGL_compressed_texture_astc").getSupportedProfiles().includes("hdr"),etc1Supported:A.extensions.has("WEBGL_compressed_texture_etc1"),etc2Supported:A.extensions.has("WEBGL_compressed_texture_etc"),dxtSupported:A.extensions.has("WEBGL_compressed_texture_s3tc"),bptcSupported:A.extensions.has("EXT_texture_compression_bptc"),pvrtcSupported:A.extensions.has("WEBGL_compressed_texture_pvrtc")||A.extensions.has("WEBKIT_WEBGL_compressed_texture_pvrtc")},this}init(){if(!this.transcoderPending){const A=new Be(this.manager);A.setPath(this.transcoderPath),A.setWithCredentials(this.withCredentials);const e=A.loadAsync("basis_transcoder.js"),i=new Be(this.manager);i.setPath(this.transcoderPath),i.setResponseType("arraybuffer"),i.setWithCredentials(this.withCredentials);const t=i.loadAsync("basis_transcoder.wasm");this.transcoderPending=Promise.all([e,t]).then(([s,o])=>{const a=he.BasisWorker.toString(),r=["/* constants */","let _EngineFormat = "+JSON.stringify(he.EngineFormat),"let _EngineType = "+JSON.stringify(he.EngineType),"let _TranscoderFormat = "+JSON.stringify(he.TranscoderFormat),"let _BasisFormat = "+JSON.stringify(he.BasisFormat),"/* basis_transcoder.js */",s,"/* worker */",a.substring(a.indexOf("{")+1,a.lastIndexOf("}"))].join(`
3
+ `);this.workerSourceURL=URL.createObjectURL(new Blob([r])),this.transcoderBinary=o,this.workerPool.setWorkerCreator(()=>{const l=new Worker(this.workerSourceURL),g=this.transcoderBinary.slice(0);return l.postMessage({type:"init",config:this.workerConfig,transcoderBinary:g},[g]),l})}),Xi>0&&console.warn("THREE.KTX2Loader: Multiple active KTX2 loaders may cause performance issues. Use a single KTX2Loader instance, or call .dispose() on old instances."),Xi++}return this.transcoderPending}load(A,e,i,t){if(this.workerConfig===null)throw new Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");const s=new Be(this.manager);s.setPath(this.path),s.setCrossOrigin(this.crossOrigin),s.setWithCredentials(this.withCredentials),s.setResponseType("arraybuffer"),s.load(A,o=>{this.parse(o,e,t)},i,t)}parse(A,e,i){if(this.workerConfig===null)throw new Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");if(Vi.has(A))return Vi.get(A).promise.then(e).catch(i);this._createTexture(A).then(t=>e?e(t):null).catch(i)}_createTextureFrom(A,e){const{type:i,error:t,data:{faces:s,width:o,height:a,format:r,type:l,dfdFlags:g}}=A;if(i==="error")return Promise.reject(t);let c;if(e.faceCount===6)c=new Ba(s,r,l);else{const I=s[0].mipmaps;c=e.layerCount>1?new Ea(I,o,a,e.layerCount,r,l):new Ct(I,o,a,r,l)}return c.minFilter=s[0].mipmaps.length===1?ne:It,c.magFilter=ne,c.generateMipmaps=!1,c.needsUpdate=!0,c.colorSpace=To(e),c.premultiplyAlpha=!!(g&Lr),c}async _createTexture(A,e={}){const i=Ag(new Uint8Array(A)),t=i.vkFormat===Yi&&i.dataFormatDescriptor[0].colorModel===167;if(!(i.vkFormat===Hr||t&&!this.workerConfig.astcHDRSupported))return og(i);const s=e,o=this.init().then(()=>this.workerPool.postMessage({type:"transcode",buffer:A,taskConfig:s},[A])).then(a=>this._createTextureFrom(a.data,i));return Vi.set(A,{promise:o}),o}dispose(){this.workerPool.dispose(),this.workerSourceURL&&URL.revokeObjectURL(this.workerSourceURL),Xi--}}he.BasisFormat={ETC1S:0,UASTC:1,UASTC_HDR:2},he.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},he.EngineFormat={RGBAFormat:He,RGBA_ASTC_4x4_Format:Jt,RGB_BPTC_UNSIGNED_Format:fa,RGBA_BPTC_Format:xi,RGBA_ETC2_EAC_Format:js,RGBA_PVRTC_4BPPV1_Format:Qa,RGBA_S3TC_DXT5_Format:Ri,RGB_ETC1_Format:pa,RGB_ETC2_Format:zs,RGB_PVRTC_4BPPV1_Format:da,RGBA_S3TC_DXT1_Format:Fi},he.EngineType={UnsignedByteType:Ce,HalfFloatType:$A,FloatType:ue},he.BasisWorker=function(){let n,A,e;const i=_EngineFormat,t=_EngineType,s=_TranscoderFormat,o=_BasisFormat;self.addEventListener("message",function(E){const u=E.data;switch(u.type){case"init":n=u.config,a(u.transcoderBinary);break;case"transcode":A.then(()=>{try{const{faces:C,buffers:p,width:f,height:Q,hasAlpha:w,format:b,type:S,dfdFlags:x}=r(u.buffer);self.postMessage({type:"transcode",id:u.id,data:{faces:C,width:f,height:Q,hasAlpha:w,format:b,type:S,dfdFlags:x}},p)}catch(C){console.error(C),self.postMessage({type:"error",id:u.id,error:C.message})}});break}});function a(E){A=new Promise(u=>{e={wasmBinary:E,onRuntimeInitialized:u},BASIS(e)}).then(()=>{e.initializeBasis(),e.KTX2File===void 0&&console.warn("THREE.KTX2Loader: Please update Basis Universal transcoder.")})}function r(E){const u=new e.KTX2File(new Uint8Array(E));function C(){u.close(),u.delete()}if(!u.isValid())throw C(),new Error("THREE.KTX2Loader: Invalid or unsupported .ktx2 file");let p;if(u.isUASTC())p=o.UASTC;else if(u.isETC1S())p=o.ETC1S;else if(u.isHDR())p=o.UASTC_HDR;else throw new Error("THREE.KTX2Loader: Unknown Basis encoding");const f=u.getWidth(),Q=u.getHeight(),w=u.getLayers()||1,b=u.getLevels(),S=u.getFaces(),x=u.getHasAlpha(),D=u.getDFDFlags(),{transcoderFormat:F,engineFormat:P,engineType:Y}=c(p,f,Q,x);if(!f||!Q||!b)throw C(),new Error("THREE.KTX2Loader: Invalid texture");if(!u.startTranscoding())throw C(),new Error("THREE.KTX2Loader: .startTranscoding failed");const O=[],X=[];for(let _=0;_<S;_++){const W=[];for(let j=0;j<b;j++){const AA=[];let Z,cA;for(let eA=0;eA<w;eA++){const sA=u.getImageLevelInfo(j,eA,_);_===0&&j===0&&eA===0&&(sA.origWidth%4!==0||sA.origHeight%4!==0)&&console.warn("THREE.KTX2Loader: ETC1S and UASTC textures should use multiple-of-four dimensions."),b>1?(Z=sA.origWidth,cA=sA.origHeight):(Z=sA.width,cA=sA.height);let nA=new Uint8Array(u.getImageTranscodedSizeInBytes(j,eA,0,F));const EA=u.transcodeImage(nA,j,eA,_,F,0,-1,-1);if(Y===t.HalfFloatType&&(nA=new Uint16Array(nA.buffer,nA.byteOffset,nA.byteLength/Uint16Array.BYTES_PER_ELEMENT)),!EA)throw C(),new Error("THREE.KTX2Loader: .transcodeImage failed.");AA.push(nA)}const yA=B(AA);W.push({data:yA,width:Z,height:cA}),X.push(yA.buffer)}O.push({mipmaps:W,width:f,height:Q,format:P,type:Y})}return C(),{faces:O,buffers:X,width:f,height:Q,hasAlpha:x,dfdFlags:D,format:P,type:Y}}const l=[{if:"astcSupported",basisFormat:[o.UASTC],transcoderFormat:[s.ASTC_4x4,s.ASTC_4x4],engineFormat:[i.RGBA_ASTC_4x4_Format,i.RGBA_ASTC_4x4_Format],engineType:[t.UnsignedByteType],priorityETC1S:1/0,priorityUASTC:1,needsPowerOfTwo:!1},{if:"bptcSupported",basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[s.BC7_M5,s.BC7_M5],engineFormat:[i.RGBA_BPTC_Format,i.RGBA_BPTC_Format],engineType:[t.UnsignedByteType],priorityETC1S:3,priorityUASTC:2,needsPowerOfTwo:!1},{if:"dxtSupported",basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[s.BC1,s.BC3],engineFormat:[i.RGBA_S3TC_DXT1_Format,i.RGBA_S3TC_DXT5_Format],engineType:[t.UnsignedByteType],priorityETC1S:4,priorityUASTC:5,needsPowerOfTwo:!1},{if:"etc2Supported",basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[s.ETC1,s.ETC2],engineFormat:[i.RGB_ETC2_Format,i.RGBA_ETC2_EAC_Format],engineType:[t.UnsignedByteType],priorityETC1S:1,priorityUASTC:3,needsPowerOfTwo:!1},{if:"etc1Supported",basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[s.ETC1],engineFormat:[i.RGB_ETC1_Format],engineType:[t.UnsignedByteType],priorityETC1S:2,priorityUASTC:4,needsPowerOfTwo:!1},{if:"pvrtcSupported",basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[s.PVRTC1_4_RGB,s.PVRTC1_4_RGBA],engineFormat:[i.RGB_PVRTC_4BPPV1_Format,i.RGBA_PVRTC_4BPPV1_Format],engineType:[t.UnsignedByteType],priorityETC1S:5,priorityUASTC:6,needsPowerOfTwo:!0},{if:"bptcSupported",basisFormat:[o.UASTC_HDR],transcoderFormat:[s.BC6H],engineFormat:[i.RGB_BPTC_UNSIGNED_Format],engineType:[t.HalfFloatType],priorityHDR:1,needsPowerOfTwo:!1},{basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[s.RGBA32,s.RGBA32],engineFormat:[i.RGBAFormat,i.RGBAFormat],engineType:[t.UnsignedByteType,t.UnsignedByteType],priorityETC1S:100,priorityUASTC:100,needsPowerOfTwo:!1},{basisFormat:[o.UASTC_HDR],transcoderFormat:[s.RGBA_HALF],engineFormat:[i.RGBAFormat],engineType:[t.HalfFloatType],priorityHDR:100,needsPowerOfTwo:!1}],g={[o.ETC1S]:l.filter(E=>E.basisFormat.includes(o.ETC1S)).sort((E,u)=>E.priorityUASTC-u.priorityUASTC),[o.UASTC]:l.filter(E=>E.basisFormat.includes(o.UASTC)).sort((E,u)=>E.priorityUASTC-u.priorityUASTC),[o.UASTC_HDR]:l.filter(E=>E.basisFormat.includes(o.UASTC_HDR)).sort((E,u)=>E.priorityHDR-u.priorityHDR)};function c(E,u,C,p){const f=g[E];for(let Q=0;Q<f.length;Q++){const w=f[Q];if(w.if&&!n[w.if]||!w.basisFormat.includes(E)||p&&w.transcoderFormat.length<2||w.needsPowerOfTwo&&!(I(u)&&I(C)))continue;const b=w.transcoderFormat[p?1:0],S=w.engineFormat[p?1:0],x=w.engineType[0];return{transcoderFormat:b,engineFormat:S,engineType:x}}throw new Error("THREE.KTX2Loader: Failed to identify transcoding target.")}function I(E){return E<=2?!0:(E&E-1)===0&&E!==0}function B(E){if(E.length===1)return E[0];let u=0;for(let f=0;f<E.length;f++){const Q=E[f];u+=Q.byteLength}const C=new Uint8Array(u);let p=0;for(let f=0;f<E.length;f++){const Q=E[f];C.set(Q,p),p+=Q.byteLength}return C}};const sg=new Set([He,Mi,ut,it]),Zi={[Do]:He,[bo]:He,[po]:He,[Qo]:He,[yo]:ut,[mo]:ut,[Co]:ut,[uo]:ut,[wo]:it,[fo]:it,[Eo]:it,[Bo]:it,[vo]:Mi,[So]:Mi,[xo]:zs,[Ro]:js,[Yi]:Jt,[$r]:Jt,[Zr]:Jt,[Mo]:Js,[Fo]:Js,[Kr]:Fi,[Yr]:Fi,[qr]:Ys,[Or]:Ys,[jr]:Ks,[Jr]:Ks,[Vr]:Ri,[zr]:Ri,[Wr]:xi,[Xr]:xi},mt={[Do]:ue,[bo]:$A,[po]:Ce,[Qo]:Ce,[yo]:ue,[mo]:$A,[Co]:Ce,[uo]:Ce,[wo]:ue,[fo]:$A,[Eo]:Ce,[Bo]:Ce,[vo]:Xs,[So]:Vs,[xo]:Ce,[Ro]:Ce,[Yi]:$A,[Mo]:Ce,[Fo]:Ce};async function og(n){const{vkFormat:A}=n;if(Zi[A]===void 0)throw new Error("THREE.KTX2Loader: Unsupported vkFormat.");let e;n.supercompressionScheme===ho&&(Wi||(Wi=new Promise(async o=>{const a=new eg;await a.init(),o(a)})),e=await Wi);const i=[];for(let o=0;o<n.levels.length;o++){const a=Math.max(1,n.pixelWidth>>o),r=Math.max(1,n.pixelHeight>>o),l=n.pixelDepth?Math.max(1,n.pixelDepth>>o):0,g=n.levels[o];let c;if(n.supercompressionScheme===Nr)c=g.levelData;else if(n.supercompressionScheme===ho)c=e.decode(g.levelData,g.uncompressedByteLength);else throw new Error("THREE.KTX2Loader: Unsupported supercompressionScheme.");let I;mt[A]===ue?I=new Float32Array(c.buffer,c.byteOffset,c.byteLength/Float32Array.BYTES_PER_ELEMENT):mt[A]===$A?I=new Uint16Array(c.buffer,c.byteOffset,c.byteLength/Uint16Array.BYTES_PER_ELEMENT):mt[A]===Xs||mt[A]===Vs?I=new Uint32Array(c.buffer,c.byteOffset,c.byteLength/Uint32Array.BYTES_PER_ELEMENT):I=c,i.push({data:I,width:a,height:r,depth:l})}const t=n.levelCount===0||i.length>1;let s;if(sg.has(Zi[A]))s=n.pixelDepth===0?new Ca(i[0].data,n.pixelWidth,n.pixelHeight):new ua(i[0].data,n.pixelWidth,n.pixelHeight,n.pixelDepth),s.minFilter=t?pi:_t,s.magFilter=_t,s.generateMipmaps=n.levelCount===0;else{if(n.pixelDepth>0)throw new Error("THREE.KTX2Loader: Unsupported pixelDepth.");s=new Ct(i,n.pixelWidth,n.pixelHeight),s.minFilter=t?It:ne,s.magFilter=ne}return s.mipmaps=i,s.type=mt[A],s.format=Zi[A],s.colorSpace=To(n),s.needsUpdate=!0,Promise.resolve(s)}function To(n){const A=n.dataFormatDescriptor[0];return A.colorPrimaries===_r?A.transferFunction===Io?lA:WA:A.colorPrimaries===Pr?A.transferFunction===Io?tg:ig:A.colorPrimaries===Ur?Yt:(console.warn(`THREE.KTX2Loader: Unsupported color primaries, "${A.colorPrimaries}"`),Yt)}const No=new ma;No.camera=new Ot,be.basic,be.basic,be.points,be.standard,be.physical,be.phong;var bt=function(){var n=0,A=document.createElement("div");A.style.cssText="position:fixed;top:0;left:0;cursor:pointer;opacity:0.9;z-index:10000",A.addEventListener("click",function(g){g.preventDefault(),i(++n%A.children.length)},!1);function e(g){return A.appendChild(g.dom),g}function i(g){for(var c=0;c<A.children.length;c++)A.children[c].style.display=c===g?"block":"none";n=g}var t=(performance||Date).now(),s=t,o=0,a=e(new bt.Panel("FPS","#0ff","#002")),r=e(new bt.Panel("MS","#0f0","#020"));if(self.performance&&self.performance.memory)var l=e(new bt.Panel("MB","#f08","#201"));return i(0),{REVISION:16,dom:A,addPanel:e,showPanel:i,begin:function(){t=(performance||Date).now()},end:function(){o++;var g=(performance||Date).now();if(r.update(g-t,200),g>=s+1e3&&(a.update(o*1e3/(g-s),100),s=g,o=0,l)){var c=performance.memory;l.update(c.usedJSHeapSize/1048576,c.jsHeapSizeLimit/1048576)}return g},update:function(){t=this.end()},domElement:A,setMode:i}};bt.Panel=function(n,A,e){var i=1/0,t=0,s=Math.round,o=s(window.devicePixelRatio||1),a=80*o,r=48*o,l=3*o,g=2*o,c=3*o,I=15*o,B=74*o,E=30*o,u=document.createElement("canvas");u.width=a,u.height=r,u.style.cssText="width:80px;height:48px";var C=u.getContext("2d");return C.font="bold "+9*o+"px Helvetica,Arial,sans-serif",C.textBaseline="top",C.fillStyle=e,C.fillRect(0,0,a,r),C.fillStyle=A,C.fillText(n,l,g),C.fillRect(c,I,B,E),C.fillStyle=e,C.globalAlpha=.9,C.fillRect(c,I,B,E),{dom:u,update:function(p,f){i=Math.min(i,p),t=Math.max(t,p),C.fillStyle=e,C.globalAlpha=1,C.fillRect(0,0,a,I),C.fillStyle=A,C.fillText(s(p)+" "+n+" ("+s(i)+"-"+s(t)+")",l,g),C.drawImage(u,c+o,I,B-o,E,c,I,B-o,E),C.fillRect(c+B-o,I,o,E),C.fillStyle=e,C.globalAlpha=.9,C.fillRect(c+B-o,I,o,s((1-p/f)*E))}}};class ng extends ba{constructor(A,e={}){const i=e.font;if(i===void 0)super();else{const t=i.generateShapes(A,e.size);e.depth===void 0&&e.height!==void 0&&console.warn("THREE.TextGeometry: .height is now depreciated. Please use .depth instead"),e.depth=e.depth!==void 0?e.depth:e.height!==void 0?e.height:50,e.bevelThickness===void 0&&(e.bevelThickness=10),e.bevelSize===void 0&&(e.bevelSize=8),e.bevelEnabled===void 0&&(e.bevelEnabled=!1),super(t,e)}this.type="TextGeometry"}}class ag extends Re{constructor(A){super(A)}load(A,e,i,t){const s=this,o=new Be(this.manager);o.setPath(this.path),o.setRequestHeader(this.requestHeader),o.setWithCredentials(this.withCredentials),o.load(A,function(a){const r=s.parse(JSON.parse(a));e&&e(r)},i,t)}parse(A){return new Lo(A)}}class Lo{constructor(A){this.isFont=!0,this.type="Font",this.data=A}generateShapes(A,e=100){const i=[],t=rg(A,e,this.data);for(let s=0,o=t.length;s<o;s++)i.push(...t[s].toShapes());return i}}function rg(n,A,e){const i=Array.from(n),t=A/e.resolution,s=(e.boundingBox.yMax-e.boundingBox.yMin+e.underlineThickness)*t,o=[];let a=0,r=0;for(let l=0;l<i.length;l++){const g=i[l];if(g===`
4
+ `)a=0,r-=s;else{const c=gg(g,t,a,r,e);a+=c.offsetX,o.push(c.path)}}return o}function gg(n,A,e,i,t){const s=t.glyphs[n]||t.glyphs["?"];if(!s){console.error('THREE.Font: character "'+n+'" does not exists in font family '+t.familyName+".");return}const o=new wa;let a,r,l,g,c,I,B,E;if(s.o){const u=s._cachedOutline||(s._cachedOutline=s.o.split(" "));for(let C=0,p=u.length;C<p;)switch(u[C++]){case"m":a=u[C++]*A+e,r=u[C++]*A+i,o.moveTo(a,r);break;case"l":a=u[C++]*A+e,r=u[C++]*A+i,o.lineTo(a,r);break;case"q":l=u[C++]*A+e,g=u[C++]*A+i,c=u[C++]*A+e,I=u[C++]*A+i,o.quadraticCurveTo(c,I,l,g);break;case"b":l=u[C++]*A+e,g=u[C++]*A+i,c=u[C++]*A+e,I=u[C++]*A+i,B=u[C++]*A+e,E=u[C++]*A+i,o.bezierCurveTo(c,I,B,E,l,g);break}}return{offsetX:s.ha*A,path:o}}var MA=Uint8Array,ae=Uint16Array,$i=Int32Array,Xt=new MA([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),Wt=new MA([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),As=new MA([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Uo=function(n,A){for(var e=new ae(31),i=0;i<31;++i)e[i]=A+=1<<n[i-1];for(var t=new $i(e[30]),i=1;i<30;++i)for(var s=e[i];s<e[i+1];++s)t[s]=s-e[i]<<5|i;return{b:e,r:t}},_o=Uo(Xt,2),Po=_o.b,es=_o.r;Po[28]=258,es[258]=28;for(var Ho=Uo(Wt,0),cg=Ho.b,qo=Ho.r,ts=new ae(32768),fA=0;fA<32768;++fA){var Ke=(fA&43690)>>1|(fA&21845)<<1;Ke=(Ke&52428)>>2|(Ke&13107)<<2,Ke=(Ke&61680)>>4|(Ke&3855)<<4,ts[fA]=((Ke&65280)>>8|(Ke&255)<<8)>>1}for(var we=function(n,A,e){for(var i=n.length,t=0,s=new ae(A);t<i;++t)n[t]&&++s[n[t]-1];var o=new ae(A);for(t=1;t<A;++t)o[t]=o[t-1]+s[t-1]<<1;var a;if(e){a=new ae(1<<A);var r=15-A;for(t=0;t<i;++t)if(n[t])for(var l=t<<4|n[t],g=A-n[t],c=o[n[t]-1]++<<g,I=c|(1<<g)-1;c<=I;++c)a[ts[c]>>r]=l}else for(a=new ae(i),t=0;t<i;++t)n[t]&&(a[t]=ts[o[n[t]-1]++]>>15-n[t]);return a},Ye=new MA(288),fA=0;fA<144;++fA)Ye[fA]=8;for(var fA=144;fA<256;++fA)Ye[fA]=9;for(var fA=256;fA<280;++fA)Ye[fA]=7;for(var fA=280;fA<288;++fA)Ye[fA]=8;for(var wt=new MA(32),fA=0;fA<32;++fA)wt[fA]=5;var lg=we(Ye,9,0),hg=we(Ye,9,1),Ig=we(wt,5,0),Bg=we(wt,5,1),is=function(n){for(var A=n[0],e=1;e<n.length;++e)n[e]>A&&(A=n[e]);return A},de=function(n,A,e){var i=A/8|0;return(n[i]|n[i+1]<<8)>>(A&7)&e},ss=function(n,A){var e=A/8|0;return(n[e]|n[e+1]<<8|n[e+2]<<16)>>(A&7)},os=function(n){return(n+7)/8|0},ns=function(n,A,e){return(e==null||e>n.length)&&(e=n.length),new MA(n.subarray(A,e))},Eg=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],ee=function(n,A,e){var i=new Error(A||Eg[n]);if(i.code=n,Error.captureStackTrace&&Error.captureStackTrace(i,ee),!e)throw i;return i},Cg=function(n,A,e,i){var t=n.length,s=0;if(!t||A.f&&!A.l)return e||new MA(0);var o=!e,a=o||A.i!=2,r=A.i;o&&(e=new MA(t*3));var l=function(vA){var _e=e.length;if(vA>_e){var JA=new MA(Math.max(_e*2,vA));JA.set(e),e=JA}},g=A.f||0,c=A.p||0,I=A.b||0,B=A.l,E=A.d,u=A.m,C=A.n,p=t*8;do{if(!B){g=de(n,c,1);var f=de(n,c+1,3);if(c+=3,f)if(f==1)B=hg,E=Bg,u=9,C=5;else if(f==2){var Q=de(n,c,31)+257,w=de(n,c+10,15)+4,b=Q+de(n,c+5,31)+1;c+=14;for(var S=new MA(b),x=new MA(19),D=0;D<w;++D)x[As[D]]=de(n,c+D*3,7);c+=w*3;for(var F=is(x),P=(1<<F)-1,Y=we(x,F,1),D=0;D<b;){var O=Y[de(n,c,P)];c+=O&15;var X=O>>4;if(X<16)S[D++]=X;else{var _=0,W=0;for(X==16?(W=3+de(n,c,3),c+=2,_=S[D-1]):X==17?(W=3+de(n,c,7),c+=3):X==18&&(W=11+de(n,c,127),c+=7);W--;)S[D++]=_}}var j=S.subarray(0,Q),AA=S.subarray(Q);u=is(j),C=is(AA),B=we(j,u,1),E=we(AA,C,1)}else ee(1);else{var X=os(c)+4,Z=n[X-4]|n[X-3]<<8,cA=X+Z;if(cA>t){r&&ee(0);break}a&&l(I+Z),e.set(n.subarray(X,cA),I),A.b=I+=Z,A.p=c=cA*8,A.f=g;continue}if(c>p){r&&ee(0);break}}a&&l(I+131072);for(var yA=(1<<u)-1,eA=(1<<C)-1,sA=c;;sA=c){var _=B[ss(n,c)&yA],nA=_>>4;if(c+=_&15,c>p){r&&ee(0);break}if(_||ee(2),nA<256)e[I++]=nA;else if(nA==256){sA=c,B=null;break}else{var EA=nA-254;if(nA>264){var D=nA-257,gA=Xt[D];EA=de(n,c,(1<<gA)-1)+Po[D],c+=gA}var dA=E[ss(n,c)&eA],Ie=dA>>4;dA||ee(3),c+=dA&15;var AA=cg[Ie];if(Ie>3){var gA=Wt[Ie];AA+=ss(n,c)&(1<<gA)-1,c+=gA}if(c>p){r&&ee(0);break}a&&l(I+131072);var ie=I+EA;if(I<AA){var Ue=s-AA,pA=Math.min(AA,ie);for(Ue+I<0&&ee(3);I<pA;++I)e[I]=i[Ue+I]}for(;I<ie;++I)e[I]=e[I-AA]}}A.l=B,A.p=sA,A.b=I,A.f=g,B&&(g=1,A.m=u,A.d=E,A.n=C)}while(!g);return I!=e.length&&o?ns(e,0,I):e.subarray(0,I)},Ne=function(n,A,e){e<<=A&7;var i=A/8|0;n[i]|=e,n[i+1]|=e>>8},yt=function(n,A,e){e<<=A&7;var i=A/8|0;n[i]|=e,n[i+1]|=e>>8,n[i+2]|=e>>16},as=function(n,A){for(var e=[],i=0;i<n.length;++i)n[i]&&e.push({s:i,f:n[i]});var t=e.length,s=e.slice();if(!t)return{t:Jo,l:0};if(t==1){var o=new MA(e[0].s+1);return o[e[0].s]=1,{t:o,l:1}}e.sort(function(b,S){return b.f-S.f}),e.push({s:-1,f:25001});var a=e[0],r=e[1],l=0,g=1,c=2;for(e[0]={s:-1,f:a.f+r.f,l:a,r};g!=t-1;)a=e[e[l].f<e[c].f?l++:c++],r=e[l!=g&&e[l].f<e[c].f?l++:c++],e[g++]={s:-1,f:a.f+r.f,l:a,r};for(var I=s[0].s,i=1;i<t;++i)s[i].s>I&&(I=s[i].s);var B=new ae(I+1),E=rs(e[g-1],B,0);if(E>A){var i=0,u=0,C=E-A,p=1<<C;for(s.sort(function(S,x){return B[x.s]-B[S.s]||S.f-x.f});i<t;++i){var f=s[i].s;if(B[f]>A)u+=p-(1<<E-B[f]),B[f]=A;else break}for(u>>=C;u>0;){var Q=s[i].s;B[Q]<A?u-=1<<A-B[Q]++-1:++i}for(;i>=0&&u;--i){var w=s[i].s;B[w]==A&&(--B[w],++u)}E=A}return{t:new MA(B),l:E}},rs=function(n,A,e){return n.s==-1?Math.max(rs(n.l,A,e+1),rs(n.r,A,e+1)):A[n.s]=e},Oo=function(n){for(var A=n.length;A&&!n[--A];);for(var e=new ae(++A),i=0,t=n[0],s=1,o=function(r){e[i++]=r},a=1;a<=A;++a)if(n[a]==t&&a!=A)++s;else{if(!t&&s>2){for(;s>138;s-=138)o(32754);s>2&&(o(s>10?s-11<<5|28690:s-3<<5|12305),s=0)}else if(s>3){for(o(t),--s;s>6;s-=6)o(8304);s>2&&(o(s-3<<5|8208),s=0)}for(;s--;)o(t);s=1,t=n[a]}return{c:e.subarray(0,i),n:A}},Dt=function(n,A){for(var e=0,i=0;i<A.length;++i)e+=n[i]*A[i];return e},Ko=function(n,A,e){var i=e.length,t=os(A+2);n[t]=i&255,n[t+1]=i>>8,n[t+2]=n[t]^255,n[t+3]=n[t+1]^255;for(var s=0;s<i;++s)n[t+s+4]=e[s];return(t+4+i)*8},Yo=function(n,A,e,i,t,s,o,a,r,l,g){Ne(A,g++,e),++t[256];for(var c=as(t,15),I=c.t,B=c.l,E=as(s,15),u=E.t,C=E.l,p=Oo(I),f=p.c,Q=p.n,w=Oo(u),b=w.c,S=w.n,x=new ae(19),D=0;D<f.length;++D)++x[f[D]&31];for(var D=0;D<b.length;++D)++x[b[D]&31];for(var F=as(x,7),P=F.t,Y=F.l,O=19;O>4&&!P[As[O-1]];--O);var X=l+5<<3,_=Dt(t,Ye)+Dt(s,wt)+o,W=Dt(t,I)+Dt(s,u)+o+14+3*O+Dt(x,P)+2*x[16]+3*x[17]+7*x[18];if(r>=0&&X<=_&&X<=W)return Ko(A,g,n.subarray(r,r+l));var j,AA,Z,cA;if(Ne(A,g,1+(W<_)),g+=2,W<_){j=we(I,B,0),AA=I,Z=we(u,C,0),cA=u;var yA=we(P,Y,0);Ne(A,g,Q-257),Ne(A,g+5,S-1),Ne(A,g+10,O-4),g+=14;for(var D=0;D<O;++D)Ne(A,g+3*D,P[As[D]]);g+=3*O;for(var eA=[f,b],sA=0;sA<2;++sA)for(var nA=eA[sA],D=0;D<nA.length;++D){var EA=nA[D]&31;Ne(A,g,yA[EA]),g+=P[EA],EA>15&&(Ne(A,g,nA[D]>>5&127),g+=nA[D]>>12)}}else j=lg,AA=Ye,Z=Ig,cA=wt;for(var D=0;D<a;++D){var gA=i[D];if(gA>255){var EA=gA>>18&31;yt(A,g,j[EA+257]),g+=AA[EA+257],EA>7&&(Ne(A,g,gA>>23&31),g+=Xt[EA]);var dA=gA&31;yt(A,g,Z[dA]),g+=cA[dA],dA>3&&(yt(A,g,gA>>5&8191),g+=Wt[dA])}else yt(A,g,j[gA]),g+=AA[gA]}return yt(A,g,j[256]),g+AA[256]},ug=new $i([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),Jo=new MA(0),dg=function(n,A,e,i,t,s){var o=s.z||n.length,a=new MA(i+o+5*(1+Math.ceil(o/7e3))+t),r=a.subarray(i,a.length-t),l=s.l,g=(s.r||0)&7;if(A){g&&(r[0]=s.r>>3);for(var c=ug[A-1],I=c>>13,B=c&8191,E=(1<<e)-1,u=s.p||new ae(32768),C=s.h||new ae(E+1),p=Math.ceil(e/3),f=2*p,Q=function(_A){return(n[_A]^n[_A+1]<<p^n[_A+2]<<f)&E},w=new $i(25e3),b=new ae(288),S=new ae(32),x=0,D=0,F=s.i||0,P=0,Y=s.w||0,O=0;F+2<o;++F){var X=Q(F),_=F&32767,W=C[X];if(u[_]=W,C[X]=_,Y<=F){var j=o-F;if((x>7e3||P>24576)&&(j>423||!l)){g=Yo(n,r,0,w,b,S,D,P,O,F-O,g),P=x=D=0,O=F;for(var AA=0;AA<286;++AA)b[AA]=0;for(var AA=0;AA<30;++AA)S[AA]=0}var Z=2,cA=0,yA=B,eA=_-W&32767;if(j>2&&X==Q(F-eA))for(var sA=Math.min(I,j)-1,nA=Math.min(32767,F),EA=Math.min(258,j);eA<=nA&&--yA&&_!=W;){if(n[F+Z]==n[F+Z-eA]){for(var gA=0;gA<EA&&n[F+gA]==n[F+gA-eA];++gA);if(gA>Z){if(Z=gA,cA=eA,gA>sA)break;for(var dA=Math.min(eA,gA-2),Ie=0,AA=0;AA<dA;++AA){var ie=F-eA+AA&32767,Ue=u[ie],pA=ie-Ue&32767;pA>Ie&&(Ie=pA,W=ie)}}}_=W,W=u[_],eA+=_-W&32767}if(cA){w[P++]=268435456|es[Z]<<18|qo[cA];var vA=es[Z]&31,_e=qo[cA]&31;D+=Xt[vA]+Wt[_e],++b[257+vA],++S[_e],Y=F+Z,++x}else w[P++]=n[F],++b[n[F]]}}for(F=Math.max(F,Y);F<o;++F)w[P++]=n[F],++b[n[F]];g=Yo(n,r,l,w,b,S,D,P,O,F-O,g),l||(s.r=g&7|r[g/8|0]<<3,g-=7,s.h=C,s.p=u,s.i=F,s.w=Y)}else{for(var F=s.w||0;F<o+l;F+=65535){var JA=F+65535;JA>=o&&(r[g/8|0]=l,JA=o),g=Ko(r,g+1,n.subarray(F,JA))}s.i=o}return ns(a,0,i+os(g)+t)},pg=function(){for(var n=new Int32Array(256),A=0;A<256;++A){for(var e=A,i=9;--i;)e=(e&1&&-306674912)^e>>>1;n[A]=e}return n}(),Qg=function(){var n=-1;return{p:function(A){for(var e=n,i=0;i<A.length;++i)e=pg[e&255^A[i]]^e>>>8;n=e},d:function(){return~n}}},fg=function(n,A,e,i,t){if(!t&&(t={l:1},A.dictionary)){var s=A.dictionary.subarray(-32768),o=new MA(s.length+n.length);o.set(s),o.set(n,s.length),n=o,t.w=s.length}return dg(n,A.level==null?6:A.level,A.mem==null?t.l?Math.ceil(Math.max(8,Math.min(13,Math.log(n.length)))*1.5):20:12+A.mem,e,i,t)},jo=function(n,A){var e={};for(var i in n)e[i]=n[i];for(var i in A)e[i]=A[i];return e},PA=function(n,A,e){for(;e;++A)n[A]=e,e>>>=8},mg=function(n,A){return((n[0]&15)!=8||n[0]>>4>7||(n[0]<<8|n[1])%31)&&ee(6,"invalid zlib data"),(n[1]>>5&1)==1&&ee(6,"invalid zlib data: "+(n[1]&32?"need":"unexpected")+" dictionary"),(n[1]>>3&4)+2};function bg(n,A){return fg(n,A||{},0,0)}function St(n,A){return Cg(n.subarray(mg(n),-4),{i:2},A,A)}var zo=function(n,A,e,i){for(var t in n){var s=n[t],o=A+t,a=i;Array.isArray(s)&&(a=jo(i,s[1]),s=s[0]),s instanceof MA?e[o]=[s,a]:(e[o+="/"]=[new MA(0),a],zo(s,o,e,i))}},Vo=typeof TextEncoder<"u"&&new TextEncoder,wg=typeof TextDecoder<"u"&&new TextDecoder,yg=0;try{wg.decode(Jo,{stream:!0}),yg=1}catch{}function gs(n,A){var e;if(Vo)return Vo.encode(n);for(var i=n.length,t=new MA(n.length+(n.length>>1)),s=0,o=function(g){t[s++]=g},e=0;e<i;++e){if(s+5>t.length){var a=new MA(s+8+(i-e<<1));a.set(t),t=a}var r=n.charCodeAt(e);r<128||A?o(r):r<2048?(o(192|r>>6),o(128|r&63)):r>55295&&r<57344?(r=65536+(r&1047552)|n.charCodeAt(++e)&1023,o(240|r>>18),o(128|r>>12&63),o(128|r>>6&63),o(128|r&63)):(o(224|r>>12),o(128|r>>6&63),o(128|r&63))}return ns(t,0,s)}var cs=function(n){var A=0;if(n)for(var e in n){var i=n[e].length;i>65535&&ee(9),A+=i+4}return A},Xo=function(n,A,e,i,t,s,o,a){var r=i.length,l=e.extra,g=a&&a.length,c=cs(l);PA(n,A,o!=null?33639248:67324752),A+=4,o!=null&&(n[A++]=20,n[A++]=e.os),n[A]=20,A+=2,n[A++]=e.flag<<1|(s<0&&8),n[A++]=t&&8,n[A++]=e.compression&255,n[A++]=e.compression>>8;var I=new Date(e.mtime==null?Date.now():e.mtime),B=I.getFullYear()-1980;if((B<0||B>119)&&ee(10),PA(n,A,B<<25|I.getMonth()+1<<21|I.getDate()<<16|I.getHours()<<11|I.getMinutes()<<5|I.getSeconds()>>1),A+=4,s!=-1&&(PA(n,A,e.crc),PA(n,A+4,s<0?-s-2:s),PA(n,A+8,e.size)),PA(n,A+12,r),PA(n,A+14,c),A+=16,o!=null&&(PA(n,A,g),PA(n,A+6,e.attrs),PA(n,A+10,o),A+=14),n.set(i,A),A+=r,c)for(var E in l){var u=l[E],C=u.length;PA(n,A,+E),PA(n,A+2,C),n.set(u,A+4),A+=4+C}return g&&(n.set(a,A),A+=g),A},Dg=function(n,A,e,i,t){PA(n,A,101010256),PA(n,A+8,e),PA(n,A+10,e),PA(n,A+12,i),PA(n,A+16,t)};function Sg(n,A){A||(A={});var e={},i=[];zo(n,"",e,A);var t=0,s=0;for(var o in e){var a=e[o],r=a[0],l=a[1],g=l.level==0?0:8,c=gs(o),I=c.length,B=l.comment,E=B&&gs(B),u=E&&E.length,C=cs(l.extra);I>65535&&ee(11);var p=g?bg(r,l):r,f=p.length,Q=Qg();Q.p(r),i.push(jo(l,{size:r.length,crc:Q.d(),c:p,f:c,m:E,u:I!=o.length||E&&B.length!=u,o:t,compression:g})),t+=30+I+C+f,s+=76+2*(I+C)+(u||0)+f}for(var w=new MA(s+22),b=t,S=s-t,x=0;x<i.length;++x){var c=i[x];Xo(w,c.o,c,c.f,c.u,c.c.length);var D=30+c.f.length+cs(c.extra);w.set(c.c,c.o+D),Xo(w,t,c,c.f,c.u,c.c.length,c.o,c.m),t+=16+D+(c.m?c.m.length:0)}return Dg(w,t,i.length,S,b),w}class vg extends Ws{constructor(A){super(A),this.type=$A}parse(A){const e=Math.pow(2.7182818,2.2);function i(h,d){let m=0;for(let R=0;R<65536;++R)(R==0||h[R>>3]&1<<(R&7))&&(d[m++]=R);const y=m-1;for(;m<65536;)d[m++]=0;return y}function t(h){for(let d=0;d<16384;d++)h[d]={},h[d].len=0,h[d].lit=0,h[d].p=null}const s={l:0,c:0,lc:0};function o(h,d,m,y,R){for(;m<h;)d=d<<8|_e(y,R),m+=8;m-=h,s.l=d>>m&(1<<h)-1,s.c=d,s.lc=m}const a=new Array(59);function r(h){for(let m=0;m<=58;++m)a[m]=0;for(let m=0;m<65537;++m)a[h[m]]+=1;let d=0;for(let m=58;m>0;--m){const y=d+a[m]>>1;a[m]=d,d=y}for(let m=0;m<65537;++m){const y=h[m];y>0&&(h[m]=y|a[y]++<<6)}}function l(h,d,m,y,R,v){const G=d;let L=0,T=0;for(;y<=R;y++){if(G.value-d.value>m)return!1;o(6,L,T,h,G);const k=s.l;if(L=s.c,T=s.lc,v[y]=k,k==63){if(G.value-d.value>m)throw new Error("Something wrong with hufUnpackEncTable");o(8,L,T,h,G);let M=s.l+6;if(L=s.c,T=s.lc,y+M>R+1)throw new Error("Something wrong with hufUnpackEncTable");for(;M--;)v[y++]=0;y--}else if(k>=59){let M=k-59+2;if(y+M>R+1)throw new Error("Something wrong with hufUnpackEncTable");for(;M--;)v[y++]=0;y--}}r(v)}function g(h){return h&63}function c(h){return h>>6}function I(h,d,m,y){for(;d<=m;d++){const R=c(h[d]),v=g(h[d]);if(R>>v)throw new Error("Invalid table entry");if(v>14){const G=y[R>>v-14];if(G.len)throw new Error("Invalid table entry");if(G.lit++,G.p){const L=G.p;G.p=new Array(G.lit);for(let T=0;T<G.lit-1;++T)G.p[T]=L[T]}else G.p=new Array(1);G.p[G.lit-1]=d}else if(v){let G=0;for(let L=1<<14-v;L>0;L--){const T=y[(R<<14-v)+G];if(T.len||T.p)throw new Error("Invalid table entry");T.len=v,T.lit=d,G++}}}return!0}const B={c:0,lc:0};function E(h,d,m,y){h=h<<8|_e(m,y),d+=8,B.c=h,B.lc=d}const u={c:0,lc:0};function C(h,d,m,y,R,v,G,L,T){if(h==d){y<8&&(E(m,y,R,v),m=B.c,y=B.lc),y-=8;let k=m>>y;if(k=new Uint8Array([k])[0],L.value+k>T)return!1;const M=G[L.value-1];for(;k-- >0;)G[L.value++]=M}else if(L.value<T)G[L.value++]=h;else return!1;u.c=m,u.lc=y}function p(h){return h&65535}function f(h){const d=p(h);return d>32767?d-65536:d}const Q={a:0,b:0};function w(h,d){const m=f(h),y=f(d),R=m+(y&1)+(y>>1),v=R,G=R-y;Q.a=v,Q.b=G}function b(h,d){const m=p(h),y=p(d),R=m-(y>>1)&65535,v=y+R-32768&65535;Q.a=v,Q.b=R}function S(h,d,m,y,R,v,G){const L=G<16384,T=m>R?R:m;let k=1,M,H;for(;k<=T;)k<<=1;for(k>>=1,M=k,k>>=1;k>=1;){H=0;const U=H+v*(R-M),z=v*k,$=v*M,q=y*k,V=y*M;let tA,mA,RA,se;for(;H<=U;H+=$){let QA=H;const rA=H+y*(m-M);for(;QA<=rA;QA+=V){const GA=QA+q,ge=QA+z,NA=ge+q;L?(w(h[QA+d],h[ge+d]),tA=Q.a,RA=Q.b,w(h[GA+d],h[NA+d]),mA=Q.a,se=Q.b,w(tA,mA),h[QA+d]=Q.a,h[GA+d]=Q.b,w(RA,se),h[ge+d]=Q.a,h[NA+d]=Q.b):(b(h[QA+d],h[ge+d]),tA=Q.a,RA=Q.b,b(h[GA+d],h[NA+d]),mA=Q.a,se=Q.b,b(tA,mA),h[QA+d]=Q.a,h[GA+d]=Q.b,b(RA,se),h[ge+d]=Q.a,h[NA+d]=Q.b)}if(m&k){const GA=QA+z;L?w(h[QA+d],h[GA+d]):b(h[QA+d],h[GA+d]),tA=Q.a,h[GA+d]=Q.b,h[QA+d]=tA}}if(R&k){let QA=H;const rA=H+y*(m-M);for(;QA<=rA;QA+=V){const GA=QA+q;L?w(h[QA+d],h[GA+d]):b(h[QA+d],h[GA+d]),tA=Q.a,h[GA+d]=Q.b,h[QA+d]=tA}}M=k,k>>=1}return H}function x(h,d,m,y,R,v,G,L,T){let k=0,M=0;const H=G,U=Math.trunc(y.value+(R+7)/8);for(;y.value<U;)for(E(k,M,m,y),k=B.c,M=B.lc;M>=14;){const $=k>>M-14&16383,q=d[$];if(q.len)M-=q.len,C(q.lit,v,k,M,m,y,L,T,H),k=u.c,M=u.lc;else{if(!q.p)throw new Error("hufDecode issues");let V;for(V=0;V<q.lit;V++){const tA=g(h[q.p[V]]);for(;M<tA&&y.value<U;)E(k,M,m,y),k=B.c,M=B.lc;if(M>=tA&&c(h[q.p[V]])==(k>>M-tA&(1<<tA)-1)){M-=tA,C(q.p[V],v,k,M,m,y,L,T,H),k=u.c,M=u.lc;break}}if(V==q.lit)throw new Error("hufDecode issues")}}const z=8-R&7;for(k>>=z,M-=z;M>0;){const $=d[k<<14-M&16383];if($.len)M-=$.len,C($.lit,v,k,M,m,y,L,T,H),k=u.c,M=u.lc;else throw new Error("hufDecode issues")}return!0}function D(h,d,m,y,R,v){const G={value:0},L=m.value,T=vA(d,m),k=vA(d,m);m.value+=4;const M=vA(d,m);if(m.value+=4,T<0||T>=65537||k<0||k>=65537)throw new Error("Something wrong with HUF_ENCSIZE");const H=new Array(65537),U=new Array(16384);t(U);const z=y-(m.value-L);if(l(h,m,z,T,k,H),M>8*(y-(m.value-L)))throw new Error("Something wrong with hufUncompress");I(H,T,k,U),x(H,U,h,m,M,k,v,R,G)}function F(h,d,m){for(let y=0;y<m;++y)d[y]=h[d[y]]}function P(h){for(let d=1;d<h.length;d++){const m=h[d-1]+h[d]-128;h[d]=m}}function Y(h,d){let m=0,y=Math.floor((h.length+1)/2),R=0;const v=h.length-1;for(;!(R>v||(d[R++]=h[m++],R>v));)d[R++]=h[y++]}function O(h){let d=h.byteLength;const m=new Array;let y=0;const R=new DataView(h);for(;d>0;){const v=R.getInt8(y++);if(v<0){const G=-v;d-=G+1;for(let L=0;L<G;L++)m.push(R.getUint8(y++))}else{const G=v;d-=2;const L=R.getUint8(y++);for(let T=0;T<G+1;T++)m.push(L)}}return m}function X(h,d,m,y,R,v){let G=new DataView(v.buffer);const L=m[h.idx[0]].width,T=m[h.idx[0]].height,k=3,M=Math.floor(L/8),H=Math.ceil(L/8),U=Math.ceil(T/8),z=L-(H-1)*8,$=T-(U-1)*8,q={value:0},V=new Array(k),tA=new Array(k),mA=new Array(k),RA=new Array(k),se=new Array(k);for(let rA=0;rA<k;++rA)se[rA]=d[h.idx[rA]],V[rA]=rA<1?0:V[rA-1]+H*U,tA[rA]=new Float32Array(64),mA[rA]=new Uint16Array(64),RA[rA]=new Uint16Array(H*64);for(let rA=0;rA<U;++rA){let GA=8;rA==U-1&&(GA=$);let ge=8;for(let BA=0;BA<H;++BA){BA==H-1&&(ge=z);for(let uA=0;uA<k;++uA)mA[uA].fill(0),mA[uA][0]=R[V[uA]++],_(q,y,mA[uA]),W(mA[uA],tA[uA]),j(tA[uA]);AA(tA);for(let uA=0;uA<k;++uA)Z(tA[uA],RA[uA],BA*64)}let NA=0;for(let BA=0;BA<k;++BA){const uA=m[h.idx[BA]].type;for(let xe=8*rA;xe<8*rA+GA;++xe){NA=se[BA][xe];for(let ht=0;ht<M;++ht){const pe=ht*64+(xe&7)*8;G.setUint16(NA+0*uA,RA[BA][pe+0],!0),G.setUint16(NA+2*uA,RA[BA][pe+1],!0),G.setUint16(NA+4*uA,RA[BA][pe+2],!0),G.setUint16(NA+6*uA,RA[BA][pe+3],!0),G.setUint16(NA+8*uA,RA[BA][pe+4],!0),G.setUint16(NA+10*uA,RA[BA][pe+5],!0),G.setUint16(NA+12*uA,RA[BA][pe+6],!0),G.setUint16(NA+14*uA,RA[BA][pe+7],!0),NA+=16*uA}}if(M!=H)for(let xe=8*rA;xe<8*rA+GA;++xe){const ht=se[BA][xe]+8*M*2*uA,pe=M*64+(xe&7)*8;for(let Ut=0;Ut<ge;++Ut)G.setUint16(ht+Ut*2*uA,RA[BA][pe+Ut],!0)}}}const QA=new Uint16Array(L);G=new DataView(v.buffer);for(let rA=0;rA<k;++rA){m[h.idx[rA]].decoded=!0;const GA=m[h.idx[rA]].type;if(m[rA].type==2)for(let ge=0;ge<T;++ge){const NA=se[rA][ge];for(let BA=0;BA<L;++BA)QA[BA]=G.getUint16(NA+BA*2*GA,!0);for(let BA=0;BA<L;++BA)G.setFloat32(NA+BA*2*GA,J(QA[BA]),!0)}}}function _(h,d,m){let y,R=1;for(;R<64;)y=d[h.value],y==65280?R=64:y>>8==255?R+=y&255:(m[R]=y,R++),h.value++}function W(h,d){d[0]=J(h[0]),d[1]=J(h[1]),d[2]=J(h[5]),d[3]=J(h[6]),d[4]=J(h[14]),d[5]=J(h[15]),d[6]=J(h[27]),d[7]=J(h[28]),d[8]=J(h[2]),d[9]=J(h[4]),d[10]=J(h[7]),d[11]=J(h[13]),d[12]=J(h[16]),d[13]=J(h[26]),d[14]=J(h[29]),d[15]=J(h[42]),d[16]=J(h[3]),d[17]=J(h[8]),d[18]=J(h[12]),d[19]=J(h[17]),d[20]=J(h[25]),d[21]=J(h[30]),d[22]=J(h[41]),d[23]=J(h[43]),d[24]=J(h[9]),d[25]=J(h[11]),d[26]=J(h[18]),d[27]=J(h[24]),d[28]=J(h[31]),d[29]=J(h[40]),d[30]=J(h[44]),d[31]=J(h[53]),d[32]=J(h[10]),d[33]=J(h[19]),d[34]=J(h[23]),d[35]=J(h[32]),d[36]=J(h[39]),d[37]=J(h[45]),d[38]=J(h[52]),d[39]=J(h[54]),d[40]=J(h[20]),d[41]=J(h[22]),d[42]=J(h[33]),d[43]=J(h[38]),d[44]=J(h[46]),d[45]=J(h[51]),d[46]=J(h[55]),d[47]=J(h[60]),d[48]=J(h[21]),d[49]=J(h[34]),d[50]=J(h[37]),d[51]=J(h[47]),d[52]=J(h[50]),d[53]=J(h[56]),d[54]=J(h[59]),d[55]=J(h[61]),d[56]=J(h[35]),d[57]=J(h[36]),d[58]=J(h[48]),d[59]=J(h[49]),d[60]=J(h[57]),d[61]=J(h[58]),d[62]=J(h[62]),d[63]=J(h[63])}function j(h){const d=.5*Math.cos(.7853975),m=.5*Math.cos(3.14159/16),y=.5*Math.cos(3.14159/8),R=.5*Math.cos(3*3.14159/16),v=.5*Math.cos(5*3.14159/16),G=.5*Math.cos(3*3.14159/8),L=.5*Math.cos(7*3.14159/16),T=new Array(4),k=new Array(4),M=new Array(4),H=new Array(4);for(let U=0;U<8;++U){const z=U*8;T[0]=y*h[z+2],T[1]=G*h[z+2],T[2]=y*h[z+6],T[3]=G*h[z+6],k[0]=m*h[z+1]+R*h[z+3]+v*h[z+5]+L*h[z+7],k[1]=R*h[z+1]-L*h[z+3]-m*h[z+5]-v*h[z+7],k[2]=v*h[z+1]-m*h[z+3]+L*h[z+5]+R*h[z+7],k[3]=L*h[z+1]-v*h[z+3]+R*h[z+5]-m*h[z+7],M[0]=d*(h[z+0]+h[z+4]),M[3]=d*(h[z+0]-h[z+4]),M[1]=T[0]+T[3],M[2]=T[1]-T[2],H[0]=M[0]+M[1],H[1]=M[3]+M[2],H[2]=M[3]-M[2],H[3]=M[0]-M[1],h[z+0]=H[0]+k[0],h[z+1]=H[1]+k[1],h[z+2]=H[2]+k[2],h[z+3]=H[3]+k[3],h[z+4]=H[3]-k[3],h[z+5]=H[2]-k[2],h[z+6]=H[1]-k[1],h[z+7]=H[0]-k[0]}for(let U=0;U<8;++U)T[0]=y*h[16+U],T[1]=G*h[16+U],T[2]=y*h[48+U],T[3]=G*h[48+U],k[0]=m*h[8+U]+R*h[24+U]+v*h[40+U]+L*h[56+U],k[1]=R*h[8+U]-L*h[24+U]-m*h[40+U]-v*h[56+U],k[2]=v*h[8+U]-m*h[24+U]+L*h[40+U]+R*h[56+U],k[3]=L*h[8+U]-v*h[24+U]+R*h[40+U]-m*h[56+U],M[0]=d*(h[U]+h[32+U]),M[3]=d*(h[U]-h[32+U]),M[1]=T[0]+T[3],M[2]=T[1]-T[2],H[0]=M[0]+M[1],H[1]=M[3]+M[2],H[2]=M[3]-M[2],H[3]=M[0]-M[1],h[0+U]=H[0]+k[0],h[8+U]=H[1]+k[1],h[16+U]=H[2]+k[2],h[24+U]=H[3]+k[3],h[32+U]=H[3]-k[3],h[40+U]=H[2]-k[2],h[48+U]=H[1]-k[1],h[56+U]=H[0]-k[0]}function AA(h){for(let d=0;d<64;++d){const m=h[0][d],y=h[1][d],R=h[2][d];h[0][d]=m+1.5747*R,h[1][d]=m-.1873*y-.4682*R,h[2][d]=m+1.8556*y}}function Z(h,d,m){for(let y=0;y<64;++y)d[m+y]=st.toHalfFloat(cA(h[y]))}function cA(h){return h<=1?Math.sign(h)*Math.pow(Math.abs(h),2.2):Math.sign(h)*Math.pow(e,Math.abs(h)-1)}function yA(h){return new DataView(h.array.buffer,h.offset.value,h.size)}function eA(h){const d=h.viewer.buffer.slice(h.offset.value,h.offset.value+h.size),m=new Uint8Array(O(d)),y=new Uint8Array(m.length);return P(m),Y(m,y),new DataView(y.buffer)}function sA(h){const d=h.array.slice(h.offset.value,h.offset.value+h.size),m=St(d),y=new Uint8Array(m.length);return P(m),Y(m,y),new DataView(y.buffer)}function nA(h){const d=h.viewer,m={value:h.offset.value},y=new Uint16Array(h.columns*h.lines*(h.inputChannels.length*h.type)),R=new Uint8Array(8192);let v=0;const G=new Array(h.inputChannels.length);for(let $=0,q=h.inputChannels.length;$<q;$++)G[$]={},G[$].start=v,G[$].end=G[$].start,G[$].nx=h.columns,G[$].ny=h.lines,G[$].size=h.type,v+=G[$].nx*G[$].ny*G[$].size;const L=lt(d,m),T=lt(d,m);if(T>=8192)throw new Error("Something is wrong with PIZ_COMPRESSION BITMAP_SIZE");if(L<=T)for(let $=0;$<T-L+1;$++)R[$+L]=JA(d,m);const k=new Uint16Array(65536),M=i(R,k),H=vA(d,m);D(h.array,d,m,H,y,v);for(let $=0;$<h.inputChannels.length;++$){const q=G[$];for(let V=0;V<G[$].size;++V)S(y,q.start+V,q.nx,q.size,q.ny,q.nx*q.size,M)}F(k,y,v);let U=0;const z=new Uint8Array(y.buffer.byteLength);for(let $=0;$<h.lines;$++)for(let q=0;q<h.inputChannels.length;q++){const V=G[q],tA=V.nx*V.size,mA=new Uint8Array(y.buffer,V.end*2,tA*2);z.set(mA,U),U+=tA*2,V.end+=tA}return new DataView(z.buffer)}function EA(h){const d=h.array.slice(h.offset.value,h.offset.value+h.size),m=St(d),y=h.inputChannels.length*h.lines*h.columns*h.totalBytes,R=new ArrayBuffer(y),v=new DataView(R);let G=0,L=0;const T=new Array(4);for(let k=0;k<h.lines;k++)for(let M=0;M<h.inputChannels.length;M++){let H=0;switch(h.inputChannels[M].pixelType){case 1:T[0]=G,T[1]=T[0]+h.columns,G=T[1]+h.columns;for(let U=0;U<h.columns;++U){const z=m[T[0]++]<<8|m[T[1]++];H+=z,v.setUint16(L,H,!0),L+=2}break;case 2:T[0]=G,T[1]=T[0]+h.columns,T[2]=T[1]+h.columns,G=T[2]+h.columns;for(let U=0;U<h.columns;++U){const z=m[T[0]++]<<24|m[T[1]++]<<16|m[T[2]++]<<8;H+=z,v.setUint32(L,H,!0),L+=4}break}}return v}function gA(h){const d=h.viewer,m={value:h.offset.value},y=new Uint8Array(h.columns*h.lines*(h.inputChannels.length*h.type*2)),R={version:_A(d,m),unknownUncompressedSize:_A(d,m),unknownCompressedSize:_A(d,m),acCompressedSize:_A(d,m),dcCompressedSize:_A(d,m),rleCompressedSize:_A(d,m),rleUncompressedSize:_A(d,m),rleRawSize:_A(d,m),totalAcUncompressedCount:_A(d,m),totalDcUncompressedCount:_A(d,m),acCompression:_A(d,m)};if(R.version<2)throw new Error("EXRLoader.parse: "+je.compression+" version "+R.version+" is unsupported");const v=new Array;let G=lt(d,m)-2;for(;G>0;){const q=dA(d.buffer,m),V=JA(d,m),tA=V>>2&3,mA=(V>>4)-1,RA=new Int8Array([mA])[0],se=JA(d,m);v.push({name:q,index:RA,type:se,compression:tA}),G-=q.length+3}const L=je.channels,T=new Array(h.inputChannels.length);for(let q=0;q<h.inputChannels.length;++q){const V=T[q]={},tA=L[q];V.name=tA.name,V.compression=0,V.decoded=!1,V.type=tA.pixelType,V.pLinear=tA.pLinear,V.width=h.columns,V.height=h.lines}const k={idx:new Array(3)};for(let q=0;q<h.inputChannels.length;++q){const V=T[q];for(let tA=0;tA<v.length;++tA){const mA=v[tA];V.name==mA.name&&(V.compression=mA.compression,mA.index>=0&&(k.idx[mA.index]=q),V.offset=q)}}let M,H,U;if(R.acCompressedSize>0)switch(R.acCompression){case 0:M=new Uint16Array(R.totalAcUncompressedCount),D(h.array,d,m,R.acCompressedSize,M,R.totalAcUncompressedCount);break;case 1:const q=h.array.slice(m.value,m.value+R.totalAcUncompressedCount),V=St(q);M=new Uint16Array(V.buffer),m.value+=R.totalAcUncompressedCount;break}if(R.dcCompressedSize>0){const q={array:h.array,offset:m,size:R.dcCompressedSize};H=new Uint16Array(sA(q).buffer),m.value+=R.dcCompressedSize}if(R.rleRawSize>0){const q=h.array.slice(m.value,m.value+R.rleCompressedSize),V=St(q);U=O(V.buffer),m.value+=R.rleCompressedSize}let z=0;const $=new Array(T.length);for(let q=0;q<$.length;++q)$[q]=new Array;for(let q=0;q<h.lines;++q)for(let V=0;V<T.length;++V)$[V].push(z),z+=T[V].width*h.type*2;X(k,$,T,M,H,y);for(let q=0;q<T.length;++q){const V=T[q];if(!V.decoded)switch(V.compression){case 2:let tA=0,mA=0;for(let RA=0;RA<h.lines;++RA){let se=$[q][tA];for(let QA=0;QA<V.width;++QA){for(let rA=0;rA<2*V.type;++rA)y[se++]=U[mA+rA*V.width*V.height];mA++}tA++}break;default:throw new Error("EXRLoader.parse: unsupported channel compression")}}return new DataView(y.buffer)}function dA(h,d){const m=new Uint8Array(h);let y=0;for(;m[d.value+y]!=0;)y+=1;const R=new TextDecoder().decode(m.slice(d.value,d.value+y));return d.value=d.value+y+1,R}function Ie(h,d,m){const y=new TextDecoder().decode(new Uint8Array(h).slice(d.value,d.value+m));return d.value=d.value+m,y}function ie(h,d){const m=pA(h,d),y=vA(h,d);return[m,y]}function Ue(h,d){const m=vA(h,d),y=vA(h,d);return[m,y]}function pA(h,d){const m=h.getInt32(d.value,!0);return d.value=d.value+4,m}function vA(h,d){const m=h.getUint32(d.value,!0);return d.value=d.value+4,m}function _e(h,d){const m=h[d.value];return d.value=d.value+1,m}function JA(h,d){const m=h.getUint8(d.value);return d.value=d.value+1,m}const _A=function(h,d){let m;return"getBigInt64"in DataView.prototype?m=Number(h.getBigInt64(d.value,!0)):m=h.getUint32(d.value+4,!0)+Number(h.getUint32(d.value,!0)<<32),d.value+=8,m};function KA(h,d){const m=h.getFloat32(d.value,!0);return d.value+=4,m}function Kn(h,d){return st.toHalfFloat(KA(h,d))}function J(h){const d=(h&31744)>>10,m=h&1023;return(h>>15?-1:1)*(d?d===31?m?NaN:1/0:Math.pow(2,d-15)*(1+m/1024):6103515625e-14*(m/1024))}function lt(h,d){const m=h.getUint16(d.value,!0);return d.value+=2,m}function Yn(h,d){return J(lt(h,d))}function Jn(h,d,m,y){const R=m.value,v=[];for(;m.value<R+y-1;){const G=dA(d,m),L=pA(h,m),T=JA(h,m);m.value+=3;const k=pA(h,m),M=pA(h,m);v.push({name:G,pixelType:L,pLinear:T,xSampling:k,ySampling:M})}return m.value+=1,v}function jn(h,d){const m=KA(h,d),y=KA(h,d),R=KA(h,d),v=KA(h,d),G=KA(h,d),L=KA(h,d),T=KA(h,d),k=KA(h,d);return{redX:m,redY:y,greenX:R,greenY:v,blueX:G,blueY:L,whiteX:T,whiteY:k}}function zn(h,d){const m=["NO_COMPRESSION","RLE_COMPRESSION","ZIPS_COMPRESSION","ZIP_COMPRESSION","PIZ_COMPRESSION","PXR24_COMPRESSION","B44_COMPRESSION","B44A_COMPRESSION","DWAA_COMPRESSION","DWAB_COMPRESSION"],y=JA(h,d);return m[y]}function Vn(h,d){const m=pA(h,d),y=pA(h,d),R=pA(h,d),v=pA(h,d);return{xMin:m,yMin:y,xMax:R,yMax:v}}function Xn(h,d){const m=["INCREASING_Y","DECREASING_Y","RANDOM_Y"],y=JA(h,d);return m[y]}function Wn(h,d){const m=["ENVMAP_LATLONG","ENVMAP_CUBE"],y=JA(h,d);return m[y]}function Zn(h,d){const m=["ONE_LEVEL","MIPMAP_LEVELS","RIPMAP_LEVELS"],y=["ROUND_DOWN","ROUND_UP"],R=vA(h,d),v=vA(h,d),G=JA(h,d);return{xSize:R,ySize:v,levelMode:m[G&15],roundingMode:y[G>>4]}}function $n(h,d){const m=KA(h,d),y=KA(h,d);return[m,y]}function Aa(h,d){const m=KA(h,d),y=KA(h,d),R=KA(h,d);return[m,y,R]}function ea(h,d,m,y,R){if(y==="string"||y==="stringvector"||y==="iccProfile")return Ie(d,m,R);if(y==="chlist")return Jn(h,d,m,R);if(y==="chromaticities")return jn(h,m);if(y==="compression")return zn(h,m);if(y==="box2i")return Vn(h,m);if(y==="envmap")return Wn(h,m);if(y==="tiledesc")return Zn(h,m);if(y==="lineOrder")return Xn(h,m);if(y==="float")return KA(h,m);if(y==="v2f")return $n(h,m);if(y==="v3f")return Aa(h,m);if(y==="int")return pA(h,m);if(y==="rational")return ie(h,m);if(y==="timecode")return Ue(h,m);if(y==="preview")return m.value+=R,"skipped";m.value+=R}function ta(h,d){const m=Math.log2(h);return d=="ROUND_DOWN"?Math.floor(m):Math.ceil(m)}function ia(h,d,m){let y=0;switch(h.levelMode){case"ONE_LEVEL":y=1;break;case"MIPMAP_LEVELS":y=ta(Math.max(d,m),h.roundingMode)+1;break;case"RIPMAP_LEVELS":throw new Error("THREE.EXRLoader: RIPMAP_LEVELS tiles currently unsupported.")}return y}function vs(h,d,m,y){const R=new Array(h);for(let v=0;v<h;v++){const G=1<<v;let L=d/G|0;y=="ROUND_UP"&&L*G<d&&(L+=1);const T=Math.max(L,1);R[v]=(T+m-1)/m|0}return R}function sa(){const h=this,d=h.offset,m={value:0};for(let y=0;y<h.tileCount;y++){const R=pA(h.viewer,d),v=pA(h.viewer,d);d.value+=8,h.size=vA(h.viewer,d);const G=R*h.blockWidth,L=v*h.blockHeight;h.columns=G+h.blockWidth>h.width?h.width-G:h.blockWidth,h.lines=L+h.blockHeight>h.height?h.height-L:h.blockHeight;const T=h.columns*h.totalBytes,k=h.size<h.lines*T?h.uncompress(h):yA(h);d.value+=h.size;for(let M=0;M<h.lines;M++){const H=M*h.columns*h.totalBytes;for(let U=0;U<h.inputChannels.length;U++){const z=je.channels[U].name,$=h.channelByteOffsets[z]*h.columns,q=h.decodeChannels[z];if(q===void 0)continue;m.value=H+$;const V=(h.height-(1+L+M))*h.outLineWidth;for(let tA=0;tA<h.columns;tA++){const mA=V+(tA+G)*h.outputChannels+q;h.byteArray[mA]=h.getter(k,m)}}}}}function oa(){const h=this,d=h.offset,m={value:0};for(let y=0;y<h.height/h.blockHeight;y++){const R=pA(h.viewer,d)-je.dataWindow.yMin;h.size=vA(h.viewer,d),h.lines=R+h.blockHeight>h.height?h.height-R:h.blockHeight;const v=h.columns*h.totalBytes,G=h.size<h.lines*v?h.uncompress(h):yA(h);d.value+=h.size;for(let L=0;L<h.blockHeight;L++){const T=y*h.blockHeight,k=L+h.scanOrder(T);if(k>=h.height)continue;const M=L*v,H=(h.height-1-k)*h.outLineWidth;for(let U=0;U<h.inputChannels.length;U++){const z=je.channels[U].name,$=h.channelByteOffsets[z]*h.columns,q=h.decodeChannels[z];if(q!==void 0){m.value=M+$;for(let V=0;V<h.columns;V++){const tA=H+V*h.outputChannels+q;h.byteArray[tA]=h.getter(G,m)}}}}}}function na(h,d,m){const y={};if(h.getUint32(0,!0)!=20000630)throw new Error("THREE.EXRLoader: Provided file doesn't appear to be in OpenEXR format.");y.version=h.getUint8(4);const R=h.getUint8(5);y.spec={singleTile:!!(R&2),longName:!!(R&4),deepFormat:!!(R&8),multiPart:!!(R&16)},m.value=8;let v=!0;for(;v;){const G=dA(d,m);if(G==0)v=!1;else{const L=dA(d,m),T=vA(h,m),k=ea(h,d,m,L,T);k===void 0?console.warn(`THREE.EXRLoader: Skipped unknown header attribute type '${L}'.`):y[G]=k}}if((R&-7)!=0)throw console.error("THREE.EXRHeader:",y),new Error("THREE.EXRLoader: Provided file is currently unsupported.");return y}function aa(h,d,m,y,R){const v={size:0,viewer:d,array:m,offset:y,width:h.dataWindow.xMax-h.dataWindow.xMin+1,height:h.dataWindow.yMax-h.dataWindow.yMin+1,inputChannels:h.channels,channelByteOffsets:{},scanOrder:null,totalBytes:null,columns:null,lines:null,type:null,uncompress:null,getter:null,format:null,colorSpace:WA};switch(h.compression){case"NO_COMPRESSION":v.blockHeight=1,v.uncompress=yA;break;case"RLE_COMPRESSION":v.blockHeight=1,v.uncompress=eA;break;case"ZIPS_COMPRESSION":v.blockHeight=1,v.uncompress=sA;break;case"ZIP_COMPRESSION":v.blockHeight=16,v.uncompress=sA;break;case"PIZ_COMPRESSION":v.blockHeight=32,v.uncompress=nA;break;case"PXR24_COMPRESSION":v.blockHeight=16,v.uncompress=EA;break;case"DWAA_COMPRESSION":v.blockHeight=32,v.uncompress=gA;break;case"DWAB_COMPRESSION":v.blockHeight=256,v.uncompress=gA;break;default:throw new Error("EXRLoader.parse: "+h.compression+" is unsupported")}const G={};for(const M of h.channels)switch(M.name){case"Y":case"R":case"G":case"B":case"A":G[M.name]=!0,v.type=M.pixelType}let L=!1;if(G.R&&G.G&&G.B)L=!G.A,v.outputChannels=4,v.decodeChannels={R:0,G:1,B:2,A:3};else if(G.Y)v.outputChannels=1,v.decodeChannels={Y:0};else throw new Error("EXRLoader.parse: file contains unsupported data channels.");if(v.type==1)switch(R){case ue:v.getter=Yn;break;case $A:v.getter=lt;break}else if(v.type==2)switch(R){case ue:v.getter=KA;break;case $A:v.getter=Kn}else throw new Error("EXRLoader.parse: unsupported pixelType "+v.type+" for "+h.compression+".");v.columns=v.width;const T=v.width*v.height*v.outputChannels;switch(R){case ue:v.byteArray=new Float32Array(T),L&&v.byteArray.fill(1,0,T);break;case $A:v.byteArray=new Uint16Array(T),L&&v.byteArray.fill(15360,0,T);break;default:console.error("THREE.EXRLoader: unsupported type: ",R);break}let k=0;for(const M of h.channels)v.decodeChannels[M.name]!==void 0&&(v.channelByteOffsets[M.name]=k),k+=M.pixelType*2;if(v.totalBytes=k,v.outLineWidth=v.width*v.outputChannels,h.lineOrder==="INCREASING_Y"?v.scanOrder=M=>M:v.scanOrder=M=>v.height-1-M,v.outputChannels==4?(v.format=He,v.colorSpace=WA):(v.format=it,v.colorSpace=Yt),h.spec.singleTile){v.blockHeight=h.tiles.ySize,v.blockWidth=h.tiles.xSize;const M=ia(h.tiles,v.width,v.height),H=vs(M,v.width,h.tiles.xSize,h.tiles.roundingMode),U=vs(M,v.height,h.tiles.ySize,h.tiles.roundingMode);v.tileCount=H[0]*U[0];for(let z=0;z<M;z++)for(let $=0;$<U[z];$++)for(let q=0;q<H[z];q++)_A(d,y);v.decode=sa.bind(v)}else{v.blockWidth=v.width;const M=Math.ceil(v.height/v.blockHeight);for(let H=0;H<M;H++)_A(d,y);v.decode=oa.bind(v)}return v}const xs={value:0},Rs=new DataView(A),ra=new Uint8Array(A),je=na(Rs,A,xs),tt=aa(je,Rs,ra,xs,this.type);return tt.decode(),{header:je,width:tt.width,height:tt.height,data:tt.byteArray,format:tt.format,colorSpace:tt.colorSpace,type:this.type}}setDataType(A){return this.type=A,this}load(A,e,i,t){function s(o,a){o.colorSpace=a.colorSpace,o.minFilter=ne,o.magFilter=ne,o.generateMipmaps=!1,o.flipY=!1,e&&e(o,a)}return super.load(A,s,i,t)}}class xg extends Ws{constructor(A){super(A),this.type=$A}parse(A){const e=function(C,p){switch(C){case 1:throw new Error("THREE.RGBELoader: Read Error: "+(p||""));case 2:throw new Error("THREE.RGBELoader: Write Error: "+(p||""));case 3:throw new Error("THREE.RGBELoader: Bad File Format: "+(p||""));default:case 4:throw new Error("THREE.RGBELoader: Memory Error: "+(p||""))}},i=function(C,p,f){p=p||1024;let Q=C.pos,w=-1,b=0,S="",x=String.fromCharCode.apply(null,new Uint16Array(C.subarray(Q,Q+128)));for(;0>(w=x.indexOf(`
5
+ `))&&b<p&&Q<C.byteLength;)S+=x,b+=x.length,Q+=128,x+=String.fromCharCode.apply(null,new Uint16Array(C.subarray(Q,Q+128)));return-1<w?(C.pos+=b+w+1,S+x.slice(0,w)):!1},t=function(C){const p=/^#\?(\S+)/,f=/^\s*GAMMA\s*=\s*(\d+(\.\d+)?)\s*$/,Q=/^\s*EXPOSURE\s*=\s*(\d+(\.\d+)?)\s*$/,w=/^\s*FORMAT=(\S+)\s*$/,b=/^\s*\-Y\s+(\d+)\s+\+X\s+(\d+)\s*$/,S={valid:0,string:"",comments:"",programtype:"RGBE",format:"",gamma:1,exposure:1,width:0,height:0};let x,D;for((C.pos>=C.byteLength||!(x=i(C)))&&e(1,"no header found"),(D=x.match(p))||e(3,"bad initial token"),S.valid|=1,S.programtype=D[1],S.string+=x+`
6
+ `;x=i(C),x!==!1;){if(S.string+=x+`
7
7
  `,x.charAt(0)==="#"){S.comments+=x+`
8
- `;continue}if((D=x.match(f))&&(S.gamma=parseFloat(D[1])),(D=x.match(Q))&&(S.exposure=parseFloat(D[1])),(D=x.match(w))&&(S.valid|=2,S.format=D[1]),(D=x.match(b))&&(S.valid|=4,S.height=parseInt(D[1],10),S.width=parseInt(D[2],10)),S.valid&2&&S.valid&4)break}return S.valid&2||e(3,"missing format specifier"),S.valid&4||e(3,"missing image size specifier"),S},s=function(E,p,f){const Q=p;if(Q<8||Q>32767||E[0]!==2||E[1]!==2||E[2]&128)return new Uint8Array(E);Q!==(E[2]<<8|E[3])&&e(3,"wrong scanline width");const w=new Uint8Array(4*p*f);w.length||e(4,"unable to allocate buffer space");let b=0,S=0;const x=4*Q,D=new Uint8Array(4),F=new Uint8Array(x);let P=f;for(;P>0&&S<E.byteLength;){S+4>E.byteLength&&e(1),D[0]=E[S++],D[1]=E[S++],D[2]=E[S++],D[3]=E[S++],(D[0]!=2||D[1]!=2||(D[2]<<8|D[3])!=Q)&&e(3,"bad rgbe scanline format");let Y=0,O;for(;Y<x&&S<E.byteLength;){O=E[S++];const _=O>128;if(_&&(O-=128),(O===0||Y+O>x)&&e(3,"bad scanline data"),_){const W=E[S++];for(let j=0;j<O;j++)F[Y++]=W}else F.set(E.subarray(S,S+O),Y),Y+=O,S+=O}const X=Q;for(let _=0;_<X;_++){let W=0;w[b]=F[_+W],W+=Q,w[b+1]=F[_+W],W+=Q,w[b+2]=F[_+W],W+=Q,w[b+3]=F[_+W],b+=4}P--}return w},o=function(E,p,f,Q){const w=E[p+3],b=Math.pow(2,w-128)/255;f[Q+0]=E[p+0]*b,f[Q+1]=E[p+1]*b,f[Q+2]=E[p+2]*b,f[Q+3]=1},a=function(E,p,f,Q){const w=E[p+3],b=Math.pow(2,w-128)/255;f[Q+0]=st.toHalfFloat(Math.min(E[p+0]*b,65504)),f[Q+1]=st.toHalfFloat(Math.min(E[p+1]*b,65504)),f[Q+2]=st.toHalfFloat(Math.min(E[p+2]*b,65504)),f[Q+3]=st.toHalfFloat(1)},r=new Uint8Array(A);r.pos=0;const l=t(r),g=l.width,c=l.height,I=s(r.subarray(r.pos),g,c);let B,C,d;switch(this.type){case de:d=I.length/4;const E=new Float32Array(d*4);for(let f=0;f<d;f++)o(I,f*4,E,f*4);B=E,C=de;break;case $A:d=I.length/4;const p=new Uint16Array(d*4);for(let f=0;f<d;f++)a(I,f*4,p,f*4);B=p,C=$A;break;default:throw new Error("THREE.RGBELoader: Unsupported type: "+this.type)}return{width:g,height:c,data:B,header:l.string,gamma:l.gamma,exposure:l.exposure,type:C}}setDataType(A){return this.type=A,this}load(A,e,i,t){function s(o,a){switch(o.type){case de:case $A:o.colorSpace=WA,o.minFilter=ne,o.magFilter=ne,o.generateMipmaps=!1,o.flipY=!0;break}e&&e(o,a)}return super.load(A,s,i,t)}}const Ze=new Mi,YA=new N,Je=new N,wA=new SA,Wo={X:new N(1,0,0),Y:new N(0,1,0),Z:new N(0,0,1)},hs={type:"change"},Zo={type:"mouseDown",mode:null},$o={type:"mouseUp",mode:null},An={type:"objectChange"};class Rg extends $s{constructor(A,e=null){super(void 0,e);const i=new Ng(this);this._root=i;const t=new on;this._gizmo=t,i.add(t);const s=new Lg;this._plane=s,i.add(s);const o=this;function a(Q,w){let b=w;Object.defineProperty(o,Q,{get:function(){return b!==void 0?b:w},set:function(S){b!==S&&(b=S,s[Q]=S,t[Q]=S,o.dispatchEvent({type:Q+"-changed",value:S}),o.dispatchEvent(hs))}}),o[Q]=w,s[Q]=w,t[Q]=w}a("camera",A),a("object",void 0),a("enabled",!0),a("axis",null),a("mode","translate"),a("translationSnap",null),a("rotationSnap",null),a("scaleSnap",null),a("space","world"),a("size",1),a("dragging",!1),a("showX",!0),a("showY",!0),a("showZ",!0);const r=new N,l=new N,g=new SA,c=new SA,I=new N,B=new SA,C=new N,d=new N,E=new N,p=0,f=new N;a("worldPosition",r),a("worldPositionStart",l),a("worldQuaternion",g),a("worldQuaternionStart",c),a("cameraPosition",I),a("cameraQuaternion",B),a("pointStart",C),a("pointEnd",d),a("rotationAxis",E),a("rotationAngle",p),a("eye",f),this._offset=new N,this._startNorm=new N,this._endNorm=new N,this._cameraScale=new N,this._parentPosition=new N,this._parentQuaternion=new SA,this._parentQuaternionInv=new SA,this._parentScale=new N,this._worldScaleStart=new N,this._worldQuaternionInv=new SA,this._worldScale=new N,this._positionStart=new N,this._quaternionStart=new SA,this._scaleStart=new N,this._getPointer=Fg.bind(this),this._onPointerDown=Mg.bind(this),this._onPointerHover=kg.bind(this),this._onPointerMove=Gg.bind(this),this._onPointerUp=Tg.bind(this),e!==null&&this.connect()}connect(){this.domElement.addEventListener("pointerdown",this._onPointerDown),this.domElement.addEventListener("pointermove",this._onPointerHover),this.domElement.addEventListener("pointerup",this._onPointerUp),this.domElement.style.touchAction="none"}disconnect(){this.domElement.removeEventListener("pointerdown",this._onPointerDown),this.domElement.removeEventListener("pointermove",this._onPointerHover),this.domElement.removeEventListener("pointermove",this._onPointerMove),this.domElement.removeEventListener("pointerup",this._onPointerUp),this.domElement.style.touchAction="auto"}getHelper(){return this._root}pointerHover(A){if(this.object===void 0||this.dragging===!0)return;A!==null&&Ze.setFromCamera(A,this.camera);const e=Is(this._gizmo.picker[this.mode],Ze);e?this.axis=e.object.name:this.axis=null}pointerDown(A){if(!(this.object===void 0||this.dragging===!0||A!=null&&A.button!==0)&&this.axis!==null){A!==null&&Ze.setFromCamera(A,this.camera);const e=Is(this._plane,Ze,!0);e&&(this.object.updateMatrixWorld(),this.object.parent.updateMatrixWorld(),this._positionStart.copy(this.object.position),this._quaternionStart.copy(this.object.quaternion),this._scaleStart.copy(this.object.scale),this.object.matrixWorld.decompose(this.worldPositionStart,this.worldQuaternionStart,this._worldScaleStart),this.pointStart.copy(e.point).sub(this.worldPositionStart)),this.dragging=!0,Zo.mode=this.mode,this.dispatchEvent(Zo)}}pointerMove(A){const e=this.axis,i=this.mode,t=this.object;let s=this.space;if(i==="scale"?s="local":(e==="E"||e==="XYZE"||e==="XYZ")&&(s="world"),t===void 0||e===null||this.dragging===!1||A!==null&&A.button!==-1)return;A!==null&&Ze.setFromCamera(A,this.camera);const o=Is(this._plane,Ze,!0);if(o){if(this.pointEnd.copy(o.point).sub(this.worldPositionStart),i==="translate")this._offset.copy(this.pointEnd).sub(this.pointStart),s==="local"&&e!=="XYZ"&&this._offset.applyQuaternion(this._worldQuaternionInv),e.indexOf("X")===-1&&(this._offset.x=0),e.indexOf("Y")===-1&&(this._offset.y=0),e.indexOf("Z")===-1&&(this._offset.z=0),s==="local"&&e!=="XYZ"?this._offset.applyQuaternion(this._quaternionStart).divide(this._parentScale):this._offset.applyQuaternion(this._parentQuaternionInv).divide(this._parentScale),t.position.copy(this._offset).add(this._positionStart),this.translationSnap&&(s==="local"&&(t.position.applyQuaternion(wA.copy(this._quaternionStart).invert()),e.search("X")!==-1&&(t.position.x=Math.round(t.position.x/this.translationSnap)*this.translationSnap),e.search("Y")!==-1&&(t.position.y=Math.round(t.position.y/this.translationSnap)*this.translationSnap),e.search("Z")!==-1&&(t.position.z=Math.round(t.position.z/this.translationSnap)*this.translationSnap),t.position.applyQuaternion(this._quaternionStart)),s==="world"&&(t.parent&&t.position.add(YA.setFromMatrixPosition(t.parent.matrixWorld)),e.search("X")!==-1&&(t.position.x=Math.round(t.position.x/this.translationSnap)*this.translationSnap),e.search("Y")!==-1&&(t.position.y=Math.round(t.position.y/this.translationSnap)*this.translationSnap),e.search("Z")!==-1&&(t.position.z=Math.round(t.position.z/this.translationSnap)*this.translationSnap),t.parent&&t.position.sub(YA.setFromMatrixPosition(t.parent.matrixWorld))));else if(i==="scale"){if(e.search("XYZ")!==-1){let a=this.pointEnd.length()/this.pointStart.length();this.pointEnd.dot(this.pointStart)<0&&(a*=-1),Je.set(a,a,a)}else YA.copy(this.pointStart),Je.copy(this.pointEnd),YA.applyQuaternion(this._worldQuaternionInv),Je.applyQuaternion(this._worldQuaternionInv),Je.divide(YA),e.search("X")===-1&&(Je.x=1),e.search("Y")===-1&&(Je.y=1),e.search("Z")===-1&&(Je.z=1);t.scale.copy(this._scaleStart).multiply(Je),this.scaleSnap&&(e.search("X")!==-1&&(t.scale.x=Math.round(t.scale.x/this.scaleSnap)*this.scaleSnap||this.scaleSnap),e.search("Y")!==-1&&(t.scale.y=Math.round(t.scale.y/this.scaleSnap)*this.scaleSnap||this.scaleSnap),e.search("Z")!==-1&&(t.scale.z=Math.round(t.scale.z/this.scaleSnap)*this.scaleSnap||this.scaleSnap))}else if(i==="rotate"){this._offset.copy(this.pointEnd).sub(this.pointStart);const a=20/this.worldPosition.distanceTo(YA.setFromMatrixPosition(this.camera.matrixWorld));let r=!1;e==="XYZE"?(this.rotationAxis.copy(this._offset).cross(this.eye).normalize(),this.rotationAngle=this._offset.dot(YA.copy(this.rotationAxis).cross(this.eye))*a):(e==="X"||e==="Y"||e==="Z")&&(this.rotationAxis.copy(Wo[e]),YA.copy(Wo[e]),s==="local"&&YA.applyQuaternion(this.worldQuaternion),YA.cross(this.eye),YA.length()===0?r=!0:this.rotationAngle=this._offset.dot(YA.normalize())*a),(e==="E"||r)&&(this.rotationAxis.copy(this.eye),this.rotationAngle=this.pointEnd.angleTo(this.pointStart),this._startNorm.copy(this.pointStart).normalize(),this._endNorm.copy(this.pointEnd).normalize(),this.rotationAngle*=this._endNorm.cross(this._startNorm).dot(this.eye)<0?1:-1),this.rotationSnap&&(this.rotationAngle=Math.round(this.rotationAngle/this.rotationSnap)*this.rotationSnap),s==="local"&&e!=="E"&&e!=="XYZE"?(t.quaternion.copy(this._quaternionStart),t.quaternion.multiply(wA.setFromAxisAngle(this.rotationAxis,this.rotationAngle)).normalize()):(this.rotationAxis.applyQuaternion(this._parentQuaternionInv),t.quaternion.copy(wA.setFromAxisAngle(this.rotationAxis,this.rotationAngle)),t.quaternion.multiply(this._quaternionStart).normalize())}this.dispatchEvent(hs),this.dispatchEvent(An)}}pointerUp(A){A!==null&&A.button!==0||(this.dragging&&this.axis!==null&&($o.mode=this.mode,this.dispatchEvent($o)),this.dragging=!1,this.axis=null)}dispose(){this.disconnect(),this.traverse(function(A){A.geometry&&A.geometry.dispose(),A.material&&A.material.dispose()})}attach(A){return this.object=A,this._root.visible=!0,this}detach(){return this.object=void 0,this.axis=null,this._root.visible=!1,this}reset(){this.enabled&&this.dragging&&(this.object.position.copy(this._positionStart),this.object.quaternion.copy(this._quaternionStart),this.object.scale.copy(this._scaleStart),this.dispatchEvent(hs),this.dispatchEvent(An),this.pointStart.copy(this.pointEnd))}getRaycaster(){return Ze}getMode(){return this.mode}setMode(A){this.mode=A}setTranslationSnap(A){this.translationSnap=A}setRotationSnap(A){this.rotationSnap=A}setScaleSnap(A){this.scaleSnap=A}setSize(A){this.size=A}setSpace(A){this.space=A}}function Fg(n){if(this.domElement.ownerDocument.pointerLockElement)return{x:0,y:0,button:n.button};{const A=this.domElement.getBoundingClientRect();return{x:(n.clientX-A.left)/A.width*2-1,y:-(n.clientY-A.top)/A.height*2+1,button:n.button}}}function kg(n){if(this.enabled)switch(n.pointerType){case"mouse":case"pen":this.pointerHover(this._getPointer(n));break}}function Mg(n){this.enabled&&(document.pointerLockElement||this.domElement.setPointerCapture(n.pointerId),this.domElement.addEventListener("pointermove",this._onPointerMove),this.pointerHover(this._getPointer(n)),this.pointerDown(this._getPointer(n)))}function Gg(n){this.enabled&&this.pointerMove(this._getPointer(n))}function Tg(n){this.enabled&&(this.domElement.releasePointerCapture(n.pointerId),this.domElement.removeEventListener("pointermove",this._onPointerMove),this.pointerUp(this._getPointer(n)))}function Is(n,A,e){const i=A.intersectObject(n,!0);for(let t=0;t<i.length;t++)if(i[t].object.visible||e)return i[t];return!1}const Zt=new qe,EA=new N(0,1,0),en=new N(0,0,0),tn=new hA,$t=new SA,Ai=new SA,ye=new N,sn=new hA,vt=new N(1,0,0),$e=new N(0,1,0),xt=new N(0,0,1),ei=new N,Rt=new N,Ft=new N;class Ng extends me{constructor(A){super(),this.isTransformControlsRoot=!0,this.controls=A,this.visible=!1}updateMatrixWorld(A){const e=this.controls;e.object!==void 0&&(e.object.updateMatrixWorld(),e.object.parent===null?console.error("TransformControls: The attached 3D object must be a part of the scene graph."):e.object.parent.matrixWorld.decompose(e._parentPosition,e._parentQuaternion,e._parentScale),e.object.matrixWorld.decompose(e.worldPosition,e.worldQuaternion,e._worldScale),e._parentQuaternionInv.copy(e._parentQuaternion).invert(),e._worldQuaternionInv.copy(e.worldQuaternion).invert()),e.camera.updateMatrixWorld(),e.camera.matrixWorld.decompose(e.cameraPosition,e.cameraQuaternion,e._cameraScale),e.camera.isOrthographicCamera?e.camera.getWorldDirection(e.eye).negate():e.eye.copy(e.cameraPosition).sub(e.worldPosition).normalize(),super.updateMatrixWorld(A)}}class on extends me{constructor(){super(),this.isTransformControlsGizmo=!0,this.type="TransformControlsGizmo";const A=new Qe({depthTest:!1,depthWrite:!1,fog:!1,toneMapped:!1,transparent:!0}),e=new Fe({depthTest:!1,depthWrite:!1,fog:!1,toneMapped:!1,transparent:!0}),i=A.clone();i.opacity=.15;const t=e.clone();t.opacity=.5;const s=A.clone();s.color.setHex(16711680);const o=A.clone();o.color.setHex(65280);const a=A.clone();a.color.setHex(255);const r=A.clone();r.color.setHex(16711680),r.opacity=.5;const l=A.clone();l.color.setHex(65280),l.opacity=.5;const g=A.clone();g.color.setHex(255),g.opacity=.5;const c=A.clone();c.opacity=.25;const I=A.clone();I.color.setHex(16776960),I.opacity=.25,A.clone().color.setHex(16776960);const B=A.clone();B.color.setHex(7895160);const C=new Ae(0,.04,.1,12);C.translate(0,.05,0);const d=new jA(.08,.08,.08);d.translate(0,.04,0);const E=new oe;E.setAttribute("position",new FA([0,0,0,1,0,0],3));const p=new Ae(.0075,.0075,.5,3);p.translate(0,.25,0);function f(_,W){const j=new ut(_,.0075,3,64,W*Math.PI*2);return j.rotateY(Math.PI/2),j.rotateX(Math.PI/2),j}function Q(){const _=new oe;return _.setAttribute("position",new FA([0,0,0,1,1,1],3)),_}const w={X:[[new K(C,s),[.5,0,0],[0,0,-Math.PI/2]],[new K(C,s),[-.5,0,0],[0,0,Math.PI/2]],[new K(p,s),[0,0,0],[0,0,-Math.PI/2]]],Y:[[new K(C,o),[0,.5,0]],[new K(C,o),[0,-.5,0],[Math.PI,0,0]],[new K(p,o)]],Z:[[new K(C,a),[0,0,.5],[Math.PI/2,0,0]],[new K(C,a),[0,0,-.5],[-Math.PI/2,0,0]],[new K(p,a),null,[Math.PI/2,0,0]]],XYZ:[[new K(new jt(.1,0),c.clone()),[0,0,0]]],XY:[[new K(new jA(.15,.15,.01),g.clone()),[.15,.15,0]]],YZ:[[new K(new jA(.15,.15,.01),r.clone()),[0,.15,.15],[0,Math.PI/2,0]]],XZ:[[new K(new jA(.15,.15,.01),l.clone()),[.15,0,.15],[-Math.PI/2,0,0]]]},b={X:[[new K(new Ae(.2,0,.6,4),i),[.3,0,0],[0,0,-Math.PI/2]],[new K(new Ae(.2,0,.6,4),i),[-.3,0,0],[0,0,Math.PI/2]]],Y:[[new K(new Ae(.2,0,.6,4),i),[0,.3,0]],[new K(new Ae(.2,0,.6,4),i),[0,-.3,0],[0,0,Math.PI]]],Z:[[new K(new Ae(.2,0,.6,4),i),[0,0,.3],[Math.PI/2,0,0]],[new K(new Ae(.2,0,.6,4),i),[0,0,-.3],[-Math.PI/2,0,0]]],XYZ:[[new K(new jt(.2,0),i)]],XY:[[new K(new jA(.2,.2,.01),i),[.15,.15,0]]],YZ:[[new K(new jA(.2,.2,.01),i),[0,.15,.15],[0,Math.PI/2,0]]],XZ:[[new K(new jA(.2,.2,.01),i),[.15,0,.15],[-Math.PI/2,0,0]]]},S={START:[[new K(new jt(.01,2),t),null,null,null,"helper"]],END:[[new K(new jt(.01,2),t),null,null,null,"helper"]],DELTA:[[new Ce(Q(),t),null,null,null,"helper"]],X:[[new Ce(E,t.clone()),[-1e3,0,0],null,[1e6,1,1],"helper"]],Y:[[new Ce(E,t.clone()),[0,-1e3,0],[0,0,Math.PI/2],[1e6,1,1],"helper"]],Z:[[new Ce(E,t.clone()),[0,0,-1e3],[0,-Math.PI/2,0],[1e6,1,1],"helper"]]},x={XYZE:[[new K(f(.5,1),B),null,[0,Math.PI/2,0]]],X:[[new K(f(.5,.5),s)]],Y:[[new K(f(.5,.5),o),null,[0,0,-Math.PI/2]]],Z:[[new K(f(.5,.5),a),null,[0,Math.PI/2,0]]],E:[[new K(f(.75,1),I),null,[0,Math.PI/2,0]]]},D={AXIS:[[new Ce(E,t.clone()),[-1e3,0,0],null,[1e6,1,1],"helper"]]},F={XYZE:[[new K(new Bi(.25,10,8),i)]],X:[[new K(new ut(.5,.1,4,24),i),[0,0,0],[0,-Math.PI/2,-Math.PI/2]]],Y:[[new K(new ut(.5,.1,4,24),i),[0,0,0],[Math.PI/2,0,0]]],Z:[[new K(new ut(.5,.1,4,24),i),[0,0,0],[0,0,-Math.PI/2]]],E:[[new K(new ut(.75,.1,2,24),i)]]},P={X:[[new K(d,s),[.5,0,0],[0,0,-Math.PI/2]],[new K(p,s),[0,0,0],[0,0,-Math.PI/2]],[new K(d,s),[-.5,0,0],[0,0,Math.PI/2]]],Y:[[new K(d,o),[0,.5,0]],[new K(p,o)],[new K(d,o),[0,-.5,0],[0,0,Math.PI]]],Z:[[new K(d,a),[0,0,.5],[Math.PI/2,0,0]],[new K(p,a),[0,0,0],[Math.PI/2,0,0]],[new K(d,a),[0,0,-.5],[-Math.PI/2,0,0]]],XY:[[new K(new jA(.15,.15,.01),g),[.15,.15,0]]],YZ:[[new K(new jA(.15,.15,.01),r),[0,.15,.15],[0,Math.PI/2,0]]],XZ:[[new K(new jA(.15,.15,.01),l),[.15,0,.15],[-Math.PI/2,0,0]]],XYZ:[[new K(new jA(.1,.1,.1),c.clone())]]},Y={X:[[new K(new Ae(.2,0,.6,4),i),[.3,0,0],[0,0,-Math.PI/2]],[new K(new Ae(.2,0,.6,4),i),[-.3,0,0],[0,0,Math.PI/2]]],Y:[[new K(new Ae(.2,0,.6,4),i),[0,.3,0]],[new K(new Ae(.2,0,.6,4),i),[0,-.3,0],[0,0,Math.PI]]],Z:[[new K(new Ae(.2,0,.6,4),i),[0,0,.3],[Math.PI/2,0,0]],[new K(new Ae(.2,0,.6,4),i),[0,0,-.3],[-Math.PI/2,0,0]]],XY:[[new K(new jA(.2,.2,.01),i),[.15,.15,0]]],YZ:[[new K(new jA(.2,.2,.01),i),[0,.15,.15],[0,Math.PI/2,0]]],XZ:[[new K(new jA(.2,.2,.01),i),[.15,0,.15],[-Math.PI/2,0,0]]],XYZ:[[new K(new jA(.2,.2,.2),i),[0,0,0]]]},O={X:[[new Ce(E,t.clone()),[-1e3,0,0],null,[1e6,1,1],"helper"]],Y:[[new Ce(E,t.clone()),[0,-1e3,0],[0,0,Math.PI/2],[1e6,1,1],"helper"]],Z:[[new Ce(E,t.clone()),[0,0,-1e3],[0,-Math.PI/2,0],[1e6,1,1],"helper"]]};function X(_){const W=new me;for(const j in _)for(let AA=_[j].length;AA--;){const Z=_[j][AA][0].clone(),cA=_[j][AA][1],yA=_[j][AA][2],eA=_[j][AA][3],sA=_[j][AA][4];Z.name=j,Z.tag=sA,cA&&Z.position.set(cA[0],cA[1],cA[2]),yA&&Z.rotation.set(yA[0],yA[1],yA[2]),eA&&Z.scale.set(eA[0],eA[1],eA[2]),Z.updateMatrix();const nA=Z.geometry.clone();nA.applyMatrix4(Z.matrix),Z.geometry=nA,Z.renderOrder=1/0,Z.position.set(0,0,0),Z.rotation.set(0,0,0),Z.scale.set(1,1,1),W.add(Z)}return W}this.gizmo={},this.picker={},this.helper={},this.add(this.gizmo.translate=X(w)),this.add(this.gizmo.rotate=X(x)),this.add(this.gizmo.scale=X(P)),this.add(this.picker.translate=X(b)),this.add(this.picker.rotate=X(F)),this.add(this.picker.scale=X(Y)),this.add(this.helper.translate=X(S)),this.add(this.helper.rotate=X(D)),this.add(this.helper.scale=X(O)),this.picker.translate.visible=!1,this.picker.rotate.visible=!1,this.picker.scale.visible=!1}updateMatrixWorld(A){const e=(this.mode==="scale"?"local":this.space)==="local"?this.worldQuaternion:Ai;this.gizmo.translate.visible=this.mode==="translate",this.gizmo.rotate.visible=this.mode==="rotate",this.gizmo.scale.visible=this.mode==="scale",this.helper.translate.visible=this.mode==="translate",this.helper.rotate.visible=this.mode==="rotate",this.helper.scale.visible=this.mode==="scale";let i=[];i=i.concat(this.picker[this.mode].children),i=i.concat(this.gizmo[this.mode].children),i=i.concat(this.helper[this.mode].children);for(let t=0;t<i.length;t++){const s=i[t];s.visible=!0,s.rotation.set(0,0,0),s.position.copy(this.worldPosition);let o;if(this.camera.isOrthographicCamera?o=(this.camera.top-this.camera.bottom)/this.camera.zoom:o=this.worldPosition.distanceTo(this.cameraPosition)*Math.min(1.9*Math.tan(Math.PI*this.camera.fov/360)/this.camera.zoom,7),s.scale.set(1,1,1).multiplyScalar(o*this.size/4),s.tag==="helper"){s.visible=!1,s.name==="AXIS"?(s.visible=!!this.axis,this.axis==="X"&&(wA.setFromEuler(Zt.set(0,0,0)),s.quaternion.copy(e).multiply(wA),Math.abs(EA.copy(vt).applyQuaternion(e).dot(this.eye))>.9&&(s.visible=!1)),this.axis==="Y"&&(wA.setFromEuler(Zt.set(0,0,Math.PI/2)),s.quaternion.copy(e).multiply(wA),Math.abs(EA.copy($e).applyQuaternion(e).dot(this.eye))>.9&&(s.visible=!1)),this.axis==="Z"&&(wA.setFromEuler(Zt.set(0,Math.PI/2,0)),s.quaternion.copy(e).multiply(wA),Math.abs(EA.copy(xt).applyQuaternion(e).dot(this.eye))>.9&&(s.visible=!1)),this.axis==="XYZE"&&(wA.setFromEuler(Zt.set(0,Math.PI/2,0)),EA.copy(this.rotationAxis),s.quaternion.setFromRotationMatrix(tn.lookAt(en,EA,$e)),s.quaternion.multiply(wA),s.visible=this.dragging),this.axis==="E"&&(s.visible=!1)):s.name==="START"?(s.position.copy(this.worldPositionStart),s.visible=this.dragging):s.name==="END"?(s.position.copy(this.worldPosition),s.visible=this.dragging):s.name==="DELTA"?(s.position.copy(this.worldPositionStart),s.quaternion.copy(this.worldQuaternionStart),YA.set(1e-10,1e-10,1e-10).add(this.worldPositionStart).sub(this.worldPosition).multiplyScalar(-1),YA.applyQuaternion(this.worldQuaternionStart.clone().invert()),s.scale.copy(YA),s.visible=this.dragging):(s.quaternion.copy(e),this.dragging?s.position.copy(this.worldPositionStart):s.position.copy(this.worldPosition),this.axis&&(s.visible=this.axis.search(s.name)!==-1));continue}s.quaternion.copy(e),this.mode==="translate"||this.mode==="scale"?(s.name==="X"&&Math.abs(EA.copy(vt).applyQuaternion(e).dot(this.eye))>.99&&(s.scale.set(1e-10,1e-10,1e-10),s.visible=!1),s.name==="Y"&&Math.abs(EA.copy($e).applyQuaternion(e).dot(this.eye))>.99&&(s.scale.set(1e-10,1e-10,1e-10),s.visible=!1),s.name==="Z"&&Math.abs(EA.copy(xt).applyQuaternion(e).dot(this.eye))>.99&&(s.scale.set(1e-10,1e-10,1e-10),s.visible=!1),s.name==="XY"&&Math.abs(EA.copy(xt).applyQuaternion(e).dot(this.eye))<.2&&(s.scale.set(1e-10,1e-10,1e-10),s.visible=!1),s.name==="YZ"&&Math.abs(EA.copy(vt).applyQuaternion(e).dot(this.eye))<.2&&(s.scale.set(1e-10,1e-10,1e-10),s.visible=!1),s.name==="XZ"&&Math.abs(EA.copy($e).applyQuaternion(e).dot(this.eye))<.2&&(s.scale.set(1e-10,1e-10,1e-10),s.visible=!1)):this.mode==="rotate"&&($t.copy(e),EA.copy(this.eye).applyQuaternion(wA.copy(e).invert()),s.name.search("E")!==-1&&s.quaternion.setFromRotationMatrix(tn.lookAt(this.eye,en,$e)),s.name==="X"&&(wA.setFromAxisAngle(vt,Math.atan2(-EA.y,EA.z)),wA.multiplyQuaternions($t,wA),s.quaternion.copy(wA)),s.name==="Y"&&(wA.setFromAxisAngle($e,Math.atan2(EA.x,EA.z)),wA.multiplyQuaternions($t,wA),s.quaternion.copy(wA)),s.name==="Z"&&(wA.setFromAxisAngle(xt,Math.atan2(EA.y,EA.x)),wA.multiplyQuaternions($t,wA),s.quaternion.copy(wA))),s.visible=s.visible&&(s.name.indexOf("X")===-1||this.showX),s.visible=s.visible&&(s.name.indexOf("Y")===-1||this.showY),s.visible=s.visible&&(s.name.indexOf("Z")===-1||this.showZ),s.visible=s.visible&&(s.name.indexOf("E")===-1||this.showX&&this.showY&&this.showZ),s.material._color=s.material._color||s.material.color.clone(),s.material._opacity=s.material._opacity||s.material.opacity,s.material.color.copy(s.material._color),s.material.opacity=s.material._opacity,this.enabled&&this.axis&&(s.name===this.axis||this.axis.split("").some(function(a){return s.name===a}))&&(s.material.color.setHex(16776960),s.material.opacity=1)}super.updateMatrixWorld(A)}}class Lg extends K{constructor(){super(new Gi(1e5,1e5,2,2),new Qe({visible:!1,wireframe:!0,side:fi,transparent:!0,opacity:.1,toneMapped:!1})),this.isTransformControlsPlane=!0,this.type="TransformControlsPlane"}updateMatrixWorld(A){let e=this.space;switch(this.position.copy(this.worldPosition),this.mode==="scale"&&(e="local"),ei.copy(vt).applyQuaternion(e==="local"?this.worldQuaternion:Ai),Rt.copy($e).applyQuaternion(e==="local"?this.worldQuaternion:Ai),Ft.copy(xt).applyQuaternion(e==="local"?this.worldQuaternion:Ai),EA.copy(Rt),this.mode){case"translate":case"scale":switch(this.axis){case"X":EA.copy(this.eye).cross(ei),ye.copy(ei).cross(EA);break;case"Y":EA.copy(this.eye).cross(Rt),ye.copy(Rt).cross(EA);break;case"Z":EA.copy(this.eye).cross(Ft),ye.copy(Ft).cross(EA);break;case"XY":ye.copy(Ft);break;case"YZ":ye.copy(ei);break;case"XZ":EA.copy(Ft),ye.copy(Rt);break;case"XYZ":case"E":ye.set(0,0,0);break}break;default:ye.set(0,0,0)}ye.length()===0?this.quaternion.copy(this.cameraQuaternion):(sn.lookAt(YA.set(0,0,0),ye,EA),this.quaternion.setFromRotationMatrix(sn)),super.updateMatrixWorld(A)}}const nn={type:"change"},Bs={type:"start"},an={type:"end"},Ug={type:"endMovement"},ti=new ya,rn=new Da,_g=Math.cos(70*bA.DEG2RAD),TA=new N;new N;const te=2*Math.PI,IA={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_PAN:4,TOUCH_DOLLY_PAN:5,TOUCH_DOLLY_ROTATE:6},At=1e-6;let Pg=class extends $s{constructor(n,A=null){super(n,A),this.state=IA.NONE,this.enabled=!0,this.target=new N,this.cursor=new N,this.minDistance=0,this.maxDistance=1/0,this.minZoom=0,this.maxZoom=1/0,this.minTargetRadius=0,this.maxTargetRadius=1/0,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.minAzimuthAngle=-1/0,this.maxAzimuthAngle=1/0,this.enableDamping=!1,this.dampingFactor=.05,this.enableZoom=!0,this.zoomSpeed=1,this.enableRotate=!0,this.rotateSpeed=1,this.enablePan=!0,this.panSpeed=1,this.screenSpacePanning=!0,this.keyPanSpeed=7,this.zoomToCursor=!1,this.autoRotate=!1,this.autoRotateSpeed=2,this.keys={LEFT:"ArrowLeft",UP:"ArrowUp",RIGHT:"ArrowRight",BOTTOM:"ArrowDown"},this.mouseButtons={LEFT:ot.ROTATE,MIDDLE:ot.DOLLY,RIGHT:ot.PAN},this.touches={ONE:nt.ROTATE,TWO:nt.DOLLY_PAN},this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object.zoom,this._domElementKeyEvents=null,this._lastPosition=new N,this._lastQuaternion=new SA,this._lastTargetPosition=new N,this._quat=new SA().setFromUnitVectors(n.up,new N(0,1,0)),this._quatInverse=this._quat.clone().invert(),this._spherical=new Ao,this._sphericalDelta=new Ao,this._scale=1,this._currentScale=1,this._panOffset=new N,this._rotateStart=new UA,this._rotateEnd=new UA,this._rotateDelta=new UA,this._panStart=new UA,this._panEnd=new UA,this._panDelta=new UA,this._dollyStart=new UA,this._dollyEnd=new UA,this._dollyDelta=new UA,this._dollyDirection=new N,this._mouse=new UA,this._performCursorZoom=!1,this._pointers=[],this._pointerPositions={},this._controlActive=!1,this._lastIsDamping=!1,this._isDamping=!1,this._onPointerMove=qg.bind(this),this._onPointerDown=Hg.bind(this),this._onPointerUp=Og.bind(this),this._onContextMenu=Xg.bind(this),this._onMouseWheel=Jg.bind(this),this._onKeyDown=jg.bind(this),this._onTouchStart=zg.bind(this),this._onTouchMove=Vg.bind(this),this._onMouseDown=Kg.bind(this),this._onMouseMove=Yg.bind(this),this._interceptControlDown=Wg.bind(this),this._interceptControlUp=Zg.bind(this),this.domElement!==null&&this.connect(),this.update()}connect(){this.domElement.addEventListener("pointerdown",this._onPointerDown),this.domElement.addEventListener("pointercancel",this._onPointerUp),this.domElement.addEventListener("contextmenu",this._onContextMenu),this.domElement.addEventListener("wheel",this._onMouseWheel,{passive:!1}),this.domElement.getRootNode().addEventListener("keydown",this._interceptControlDown,{passive:!0,capture:!0}),this.domElement.style.touchAction="none"}disconnect(){this.domElement.removeEventListener("pointerdown",this._onPointerDown),this.domElement.removeEventListener("pointermove",this._onPointerMove),this.domElement.removeEventListener("pointerup",this._onPointerUp),this.domElement.removeEventListener("pointercancel",this._onPointerUp),this.domElement.removeEventListener("wheel",this._onMouseWheel),this.domElement.removeEventListener("contextmenu",this._onContextMenu),this.stopListenToKeyEvents(),this.domElement.getRootNode().removeEventListener("keydown",this._interceptControlDown,{capture:!0}),this.domElement.style.touchAction="auto"}dispose(){this.disconnect()}getPolarAngle(){return this._spherical.phi}getAzimuthalAngle(){return this._spherical.theta}getDistance(){return this.object.position.distanceTo(this.target)}listenToKeyEvents(n){n.addEventListener("keydown",this._onKeyDown),this._domElementKeyEvents=n}stopListenToKeyEvents(){this._domElementKeyEvents!==null&&(this._domElementKeyEvents.removeEventListener("keydown",this._onKeyDown),this._domElementKeyEvents=null)}saveState(){this.target0.copy(this.target),this.position0.copy(this.object.position),this.zoom0=this.object.zoom}reset(){this.target.copy(this.target0),this.object.position.copy(this.position0),this.object.zoom=this.zoom0,this.object.updateProjectionMatrix(),this.dispatchEvent(nn),this.update(),this.state=IA.NONE,this._isDamping=!1}update(n=null){if(this.enableDamping&&n===null)return;const A=this.object.getWorldPosition(this.object.position);TA.copy(A).sub(this.target),TA.applyQuaternion(this._quat),this._spherical.setFromVector3(TA),this.autoRotate&&this.state===IA.NONE&&this._rotateLeft(this._getAutoRotationAngle(n)),this.enableDamping?(this._spherical.theta+=this._sphericalDelta.theta*this.dampingFactor,this._spherical.phi+=this._sphericalDelta.phi*this.dampingFactor):(this._spherical.theta+=this._sphericalDelta.theta,this._spherical.phi+=this._sphericalDelta.phi);let e=this.minAzimuthAngle,i=this.maxAzimuthAngle;isFinite(e)&&isFinite(i)&&(e<-Math.PI?e+=te:e>Math.PI&&(e-=te),i<-Math.PI?i+=te:i>Math.PI&&(i-=te),e<=i?this._spherical.theta=Math.max(e,Math.min(i,this._spherical.theta)):this._spherical.theta=this._spherical.theta>(e+i)/2?Math.max(e,this._spherical.theta):Math.min(i,this._spherical.theta)),this._spherical.phi=Math.max(this.minPolarAngle,Math.min(this.maxPolarAngle,this._spherical.phi)),this._spherical.makeSafe(),this.enableDamping===!0?this.target.addScaledVector(this._panOffset,this.dampingFactor):this.target.add(this._panOffset),this.target.sub(this.cursor),this.target.clampLength(this.minTargetRadius,this.maxTargetRadius),this.target.add(this.cursor);let t=!1;if(this.enableDamping?this._currentScale=bA.lerp(this._currentScale,this._scale,this.dampingFactor):this._currentScale=this._scale,this.zoomToCursor&&this._performCursorZoom||this.object.isOrthographicCamera)this._spherical.radius=this._clampDistance(this._spherical.radius);else{const s=this._spherical.radius;this._spherical.radius=this._clampDistance(this._spherical.radius*this._currentScale),t=Math.abs(s-this._spherical.radius)>At*100}if(TA.setFromSpherical(this._spherical),TA.applyQuaternion(this._quatInverse),A.copy(this.target).add(TA),this.object.parent?this.object.parent.worldToLocal(A):this.object.position.copy(A),this.object.lookAt(this.target),this.enableDamping===!0?(this._sphericalDelta.theta*=1-this.dampingFactor,this._sphericalDelta.phi*=1-this.dampingFactor,this._panOffset.multiplyScalar(1-this.dampingFactor)):(this._sphericalDelta.set(0,0,0),this._panOffset.set(0,0,0)),this.zoomToCursor&&this._performCursorZoom){let s=null;if(this.object.isPerspectiveCamera){const o=TA.length();s=this._clampDistance(o*this._currentScale);const a=o-s;this.object.position.addScaledVector(this._dollyDirection,a),this.object.updateMatrixWorld(),t=Math.abs(a)>At}else if(this.object.isOrthographicCamera){const o=new N(this._mouse.x,this._mouse.y,0);o.unproject(this.object);const a=this.object.zoom;this.object.zoom=Math.max(this.minZoom,Math.min(this.maxZoom,this.object.zoom/this._currentScale)),this.object.updateProjectionMatrix(),t=Math.abs(a-this.object.zoom)>At;const r=new N(this._mouse.x,this._mouse.y,0);r.unproject(this.object),this.object.position.sub(r).add(o),this.object.updateMatrixWorld(),s=TA.length()}else console.warn("WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled."),this.zoomToCursor=!1;s!==null&&(this.screenSpacePanning?this.target.set(0,0,-1).transformDirection(this.object.matrix).multiplyScalar(s).add(this.object.position):(ti.origin.copy(this.object.position),ti.direction.set(0,0,-1).transformDirection(this.object.matrix),Math.abs(this.object.up.dot(ti.direction))<_g?this.object.lookAt(this.target):(rn.setFromNormalAndCoplanarPoint(this.object.up,this.target),ti.intersectPlane(rn,this.target))))}else if(this.object.isOrthographicCamera){const s=this.object.zoom;this.object.zoom=Math.max(this.minZoom,Math.min(this.maxZoom,this.object.zoom/this._scale)),Math.abs(s-this.object.zoom)>At&&(this.object.updateProjectionMatrix(),t=!0)}return this._scale=1,t||this._lastPosition.distanceToSquared(this.object.position)>At||8*(1-this._lastQuaternion.dot(this.object.quaternion))>At||this._lastTargetPosition.distanceToSquared(this.target)>At?(this.dispatchEvent(nn),this._lastPosition.copy(this.object.position),this._lastQuaternion.copy(this.object.quaternion),this._lastTargetPosition.copy(this.target),this._lastIsDamping=!0,this._isDamping=!0,!0):(this._lastPosition.copy(this.object.position),this._lastQuaternion.copy(this.object.quaternion),this._lastTargetPosition.copy(this.target),this.state===IA.NONE&&(this._lastIsDamping=this._isDamping,this._isDamping=!1),this._lastIsDamping&&!this._isDamping&&this.state===IA.NONE&&(this._isDamping=!1,this._lastIsDamping=!1,this.dispatchEvent(Ug)),this._performCursorZoom=!1,!1)}_getAutoRotationAngle(n){return n!==null?te/60*this.autoRotateSpeed*n:te/60/60*this.autoRotateSpeed}_getZoomScale(n){const A=Math.abs(n*.01);return Math.pow(.95,this.zoomSpeed*A)}_rotateLeft(n){this._sphericalDelta.theta-=n}_rotateUp(n){this._sphericalDelta.phi-=n}_panLeft(n,A){TA.setFromMatrixColumn(A,0),TA.multiplyScalar(-n),this._panOffset.add(TA)}_panUp(n,A){this.screenSpacePanning===!0?TA.setFromMatrixColumn(A,1):(TA.setFromMatrixColumn(A,0),TA.crossVectors(this.object.up,TA)),TA.multiplyScalar(n),this._panOffset.add(TA)}_pan(n,A){const e=this.domElement;if(this.object.isPerspectiveCamera){this.object.getWorldPosition(TA).sub(this.target);let i=TA.length();i*=Math.tan(this.object.fov/2*Math.PI/180),this._panLeft(2*n*i/e.clientHeight,this.object.matrixWorld),this._panUp(2*A*i/e.clientHeight,this.object.matrixWorld)}else this.object.isOrthographicCamera?(this._panLeft(n*(this.object.right-this.object.left)/this.object.zoom/e.clientWidth,this.object.matrixWorld),this._panUp(A*(this.object.top-this.object.bottom)/this.object.zoom/e.clientHeight,this.object.matrixWorld)):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."),this.enablePan=!1)}_dollyOut(n){this.object.isPerspectiveCamera||this.object.isOrthographicCamera?this._scale/=n:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),this.enableZoom=!1)}_dollyIn(n){this.object.isPerspectiveCamera||this.object.isOrthographicCamera?this._scale*=n:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),this.enableZoom=!1)}_updateZoomParameters(n,A){if(!this.zoomToCursor)return;this._performCursorZoom=!0;const e=this.domElement.getBoundingClientRect(),i=n-e.left,t=A-e.top,s=e.width,o=e.height;this._mouse.x=i/s*2-1,this._mouse.y=-(t/o)*2+1,this._dollyDirection.set(this._mouse.x,this._mouse.y,1).unproject(this.object).sub(this.object.position).normalize()}_clampDistance(n){return Math.max(this.minDistance,Math.min(this.maxDistance,n))}_handleMouseDownRotate(n){this._rotateStart.set(n.clientX,n.clientY)}_handleMouseDownDolly(n){this._updateZoomParameters(n.clientX,n.clientX),this._dollyStart.set(n.clientX,n.clientY)}_handleMouseDownPan(n){this._panStart.set(n.clientX,n.clientY)}_handleMouseMoveRotate(n){this._rotateEnd.set(n.clientX,n.clientY),this._rotateDelta.subVectors(this._rotateEnd,this._rotateStart).multiplyScalar(this.rotateSpeed);const A=this.domElement;this._rotateLeft(te*this._rotateDelta.x/A.clientHeight),this._rotateUp(te*this._rotateDelta.y/A.clientHeight),this._rotateStart.copy(this._rotateEnd),this.update()}_handleMouseMoveDolly(n){this._dollyEnd.set(n.clientX,n.clientY),this._dollyDelta.subVectors(this._dollyEnd,this._dollyStart),this._dollyDelta.y>0?this._dollyOut(this._getZoomScale(this._dollyDelta.y)):this._dollyDelta.y<0&&this._dollyIn(this._getZoomScale(this._dollyDelta.y)),this._dollyStart.copy(this._dollyEnd),this.update()}_handleMouseMovePan(n){this._panEnd.set(n.clientX,n.clientY),this._panDelta.subVectors(this._panEnd,this._panStart).multiplyScalar(this.panSpeed),this._pan(this._panDelta.x,this._panDelta.y),this._panStart.copy(this._panEnd),this.update()}_handleMouseWheel(n){this._updateZoomParameters(n.clientX,n.clientY),n.deltaY<0?this._dollyIn(this._getZoomScale(n.deltaY)):n.deltaY>0&&this._dollyOut(this._getZoomScale(n.deltaY)),this.update()}_handleKeyDown(n){let A=!1;switch(n.code){case this.keys.UP:n.ctrlKey||n.metaKey||n.shiftKey?this._rotateUp(te*this.rotateSpeed/this.domElement.clientHeight):this._pan(0,this.keyPanSpeed),A=!0;break;case this.keys.BOTTOM:n.ctrlKey||n.metaKey||n.shiftKey?this._rotateUp(-te*this.rotateSpeed/this.domElement.clientHeight):this._pan(0,-this.keyPanSpeed),A=!0;break;case this.keys.LEFT:n.ctrlKey||n.metaKey||n.shiftKey?this._rotateLeft(te*this.rotateSpeed/this.domElement.clientHeight):this._pan(this.keyPanSpeed,0),A=!0;break;case this.keys.RIGHT:n.ctrlKey||n.metaKey||n.shiftKey?this._rotateLeft(-te*this.rotateSpeed/this.domElement.clientHeight):this._pan(-this.keyPanSpeed,0),A=!0;break}A&&(n.preventDefault(),this.update())}_handleTouchStartRotate(n){if(this._pointers.length===1)this._rotateStart.set(n.pageX,n.pageY);else{const A=this._getSecondPointerPosition(n),e=.5*(n.pageX+A.x),i=.5*(n.pageY+A.y);this._rotateStart.set(e,i)}}_handleTouchStartPan(n){if(this._pointers.length===1)this._panStart.set(n.pageX,n.pageY);else{const A=this._getSecondPointerPosition(n),e=.5*(n.pageX+A.x),i=.5*(n.pageY+A.y);this._panStart.set(e,i)}}_handleTouchStartDolly(n){const A=this._getSecondPointerPosition(n),e=n.pageX-A.x,i=n.pageY-A.y,t=Math.sqrt(e*e+i*i);this._dollyStart.set(0,t)}_handleTouchStartDollyPan(n){this.enableZoom&&this._handleTouchStartDolly(n),this.enablePan&&this._handleTouchStartPan(n)}_handleTouchStartDollyRotate(n){this.enableZoom&&this._handleTouchStartDolly(n),this.enableRotate&&this._handleTouchStartRotate(n)}_handleTouchMoveRotate(n){if(this._pointers.length==1)this._rotateEnd.set(n.pageX,n.pageY);else{const e=this._getSecondPointerPosition(n),i=.5*(n.pageX+e.x),t=.5*(n.pageY+e.y);this._rotateEnd.set(i,t)}this._rotateDelta.subVectors(this._rotateEnd,this._rotateStart).multiplyScalar(this.rotateSpeed);const A=this.domElement;this._rotateLeft(te*this._rotateDelta.x/A.clientHeight),this._rotateUp(te*this._rotateDelta.y/A.clientHeight),this._rotateStart.copy(this._rotateEnd)}_handleTouchMovePan(n){if(this._pointers.length===1)this._panEnd.set(n.pageX,n.pageY);else{const A=this._getSecondPointerPosition(n),e=.5*(n.pageX+A.x),i=.5*(n.pageY+A.y);this._panEnd.set(e,i)}this._panDelta.subVectors(this._panEnd,this._panStart).multiplyScalar(this.panSpeed),this._pan(this._panDelta.x,this._panDelta.y),this._panStart.copy(this._panEnd)}_handleTouchMoveDolly(n){const A=this._getSecondPointerPosition(n),e=n.pageX-A.x,i=n.pageY-A.y,t=Math.sqrt(e*e+i*i);this._dollyEnd.set(0,t),this._dollyDelta.set(0,Math.pow(this._dollyEnd.y/this._dollyStart.y,this.zoomSpeed)),this._dollyOut(this._dollyDelta.y),this._dollyStart.copy(this._dollyEnd);const s=(n.pageX+A.x)*.5,o=(n.pageY+A.y)*.5;this._updateZoomParameters(s,o)}_handleTouchMoveDollyPan(n){this.enableZoom&&this._handleTouchMoveDolly(n),this.enablePan&&this._handleTouchMovePan(n)}_handleTouchMoveDollyRotate(n){this.enableZoom&&this._handleTouchMoveDolly(n),this.enableRotate&&this._handleTouchMoveRotate(n)}_addPointer(n){this._pointers.push(n.pointerId)}_removePointer(n){delete this._pointerPositions[n.pointerId];for(let A=0;A<this._pointers.length;A++)if(this._pointers[A]==n.pointerId){this._pointers.splice(A,1);return}}_isTrackingPointer(n){for(let A=0;A<this._pointers.length;A++)if(this._pointers[A]==n.pointerId)return!0;return!1}_trackPointer(n){let A=this._pointerPositions[n.pointerId];A===void 0&&(A=new UA,this._pointerPositions[n.pointerId]=A),A.set(n.pageX,n.pageY)}_getSecondPointerPosition(n){const A=n.pointerId===this._pointers[0]?this._pointers[1]:this._pointers[0];return this._pointerPositions[A]}_customWheelEvent(n){const A=n.deltaMode,e={clientX:n.clientX,clientY:n.clientY,deltaY:n.deltaY};switch(A){case 1:e.deltaY*=16;break;case 2:e.deltaY*=100;break}return n.ctrlKey&&!this._controlActive&&(e.deltaY*=10),e}};function Hg(n){this.enabled!==!1&&(this._pointers.length===0&&(this.domElement.setPointerCapture(n.pointerId),this.domElement.addEventListener("pointermove",this._onPointerMove),window.addEventListener("pointerup",this._onPointerUp)),!this._isTrackingPointer(n)&&(this._addPointer(n),n.pointerType==="touch"?this._onTouchStart(n):this._onMouseDown(n)))}function qg(n){this.enabled!==!1&&(n.pointerType==="touch"?this._onTouchMove(n):this._onMouseMove(n))}function Og(n){switch(this._removePointer(n),this._pointers.length){case 0:this.domElement.releasePointerCapture(n.pointerId),this.domElement.removeEventListener("pointermove",this._onPointerMove),window.removeEventListener("pointerup",this._onPointerUp),this.dispatchEvent(an),this.state=IA.NONE;break;case 1:const A=this._pointers[0],e=this._pointerPositions[A];this._onTouchStart({pointerId:A,pageX:e.x,pageY:e.y});break}}function Kg(n){let A;switch(n.button){case 0:A=this.mouseButtons.LEFT;break;case 1:A=this.mouseButtons.MIDDLE;break;case 2:A=this.mouseButtons.RIGHT;break;default:A=-1}switch(A){case ot.DOLLY:if(this.enableZoom===!1)return;this._handleMouseDownDolly(n),this.state=IA.DOLLY;break;case ot.ROTATE:if(n.ctrlKey||n.metaKey||n.shiftKey){if(this.enablePan===!1)return;this._handleMouseDownPan(n),this.state=IA.PAN}else{if(this.enableRotate===!1)return;this._handleMouseDownRotate(n),this.state=IA.ROTATE}break;case ot.PAN:if(n.ctrlKey||n.metaKey||n.shiftKey){if(this.enableRotate===!1)return;this._handleMouseDownRotate(n),this.state=IA.ROTATE}else{if(this.enablePan===!1)return;this._handleMouseDownPan(n),this.state=IA.PAN}break;default:this.state=IA.NONE}this.state!==IA.NONE&&this.dispatchEvent(Bs)}function Yg(n){switch(this.state){case IA.ROTATE:if(this.enableRotate===!1)return;this._handleMouseMoveRotate(n);break;case IA.DOLLY:if(this.enableZoom===!1)return;this._handleMouseMoveDolly(n);break;case IA.PAN:if(this.enablePan===!1)return;this._handleMouseMovePan(n);break}}function Jg(n){this.enabled===!1||this.enableZoom===!1||this.state!==IA.NONE||(n.preventDefault(),this.dispatchEvent(Bs),this._handleMouseWheel(this._customWheelEvent(n)),this.dispatchEvent(an))}function jg(n){this.enabled===!1||this.enablePan===!1||this._handleKeyDown(n)}function zg(n){switch(this._trackPointer(n),this._pointers.length){case 1:switch(this.touches.ONE){case nt.ROTATE:if(this.enableRotate===!1)return;this._handleTouchStartRotate(n),this.state=IA.TOUCH_ROTATE;break;case nt.PAN:if(this.enablePan===!1)return;this._handleTouchStartPan(n),this.state=IA.TOUCH_PAN;break;default:this.state=IA.NONE}break;case 2:switch(this.touches.TWO){case nt.DOLLY_PAN:if(this.enableZoom===!1&&this.enablePan===!1)return;this._handleTouchStartDollyPan(n),this.state=IA.TOUCH_DOLLY_PAN;break;case nt.DOLLY_ROTATE:if(this.enableZoom===!1&&this.enableRotate===!1)return;this._handleTouchStartDollyRotate(n),this.state=IA.TOUCH_DOLLY_ROTATE;break;default:this.state=IA.NONE}break;default:this.state=IA.NONE}this.state!==IA.NONE&&this.dispatchEvent(Bs)}function Vg(n){switch(this._trackPointer(n),this.state){case IA.TOUCH_ROTATE:if(this.enableRotate===!1)return;this._handleTouchMoveRotate(n),this.update();break;case IA.TOUCH_PAN:if(this.enablePan===!1)return;this._handleTouchMovePan(n),this.update();break;case IA.TOUCH_DOLLY_PAN:if(this.enableZoom===!1&&this.enablePan===!1)return;this._handleTouchMoveDollyPan(n),this.update();break;case IA.TOUCH_DOLLY_ROTATE:if(this.enableZoom===!1&&this.enableRotate===!1)return;this._handleTouchMoveDollyRotate(n),this.update();break;default:this.state=IA.NONE}}function Xg(n){this.enabled!==!1&&n.preventDefault()}function Wg(n){n.key==="Control"&&(this._controlActive=!0,this.domElement.getRootNode().addEventListener("keyup",this._interceptControlUp,{passive:!0,capture:!0}))}function Zg(n){n.key==="Control"&&(this._controlActive=!1,this.domElement.getRootNode().removeEventListener("keyup",this._interceptControlUp,{passive:!0,capture:!0}))}class $g extends Ce{constructor(A,e=1,i=16,t=2){const s=new oe,o=i+t*2,a=new Float32Array((o*3+3)*3);s.setAttribute("position",new LA(a,3));const r=new Fe({color:65280}),l=new Fe({color:16776960});super(s,[l,r]),this.audio=A,this.range=e,this.divisionsInnerAngle=i,this.divisionsOuterAngle=t,this.type="PositionalAudioHelper",this.update()}update(){const A=this.audio,e=this.range,i=this.divisionsInnerAngle,t=this.divisionsOuterAngle,s=bA.degToRad(A.panner.coneInnerAngle),o=bA.degToRad(A.panner.coneOuterAngle),a=s/2,r=o/2;let l=0,g=0,c,I;const B=this.geometry,C=B.attributes.position;B.clearGroups();function d(E,p,f,Q){const w=(p-E)/f;for(C.setXYZ(l,0,0,0),g++,c=E;c<p;c+=w)I=l+g,C.setXYZ(I,Math.sin(c)*e,0,Math.cos(c)*e),C.setXYZ(I+1,Math.sin(Math.min(c+w,p))*e,0,Math.cos(Math.min(c+w,p))*e),C.setXYZ(I+2,0,0,0),g+=3;B.addGroup(l,g,Q),l+=g,g=0}d(-r,-a,t,0),d(-a,a,i,1),d(a,r,t,0),C.needsUpdate=!0,s===o&&(this.material[0].visible=!1)}dispose(){this.geometry.dispose(),this.material[0].dispose(),this.material[1].dispose()}}const Ac={name:"HorizontalBlurShader",uniforms:{tDiffuse:{value:null},h:{value:1/512}},vertexShader:`
8
+ `;continue}if((D=x.match(f))&&(S.gamma=parseFloat(D[1])),(D=x.match(Q))&&(S.exposure=parseFloat(D[1])),(D=x.match(w))&&(S.valid|=2,S.format=D[1]),(D=x.match(b))&&(S.valid|=4,S.height=parseInt(D[1],10),S.width=parseInt(D[2],10)),S.valid&2&&S.valid&4)break}return S.valid&2||e(3,"missing format specifier"),S.valid&4||e(3,"missing image size specifier"),S},s=function(C,p,f){const Q=p;if(Q<8||Q>32767||C[0]!==2||C[1]!==2||C[2]&128)return new Uint8Array(C);Q!==(C[2]<<8|C[3])&&e(3,"wrong scanline width");const w=new Uint8Array(4*p*f);w.length||e(4,"unable to allocate buffer space");let b=0,S=0;const x=4*Q,D=new Uint8Array(4),F=new Uint8Array(x);let P=f;for(;P>0&&S<C.byteLength;){S+4>C.byteLength&&e(1),D[0]=C[S++],D[1]=C[S++],D[2]=C[S++],D[3]=C[S++],(D[0]!=2||D[1]!=2||(D[2]<<8|D[3])!=Q)&&e(3,"bad rgbe scanline format");let Y=0,O;for(;Y<x&&S<C.byteLength;){O=C[S++];const _=O>128;if(_&&(O-=128),(O===0||Y+O>x)&&e(3,"bad scanline data"),_){const W=C[S++];for(let j=0;j<O;j++)F[Y++]=W}else F.set(C.subarray(S,S+O),Y),Y+=O,S+=O}const X=Q;for(let _=0;_<X;_++){let W=0;w[b]=F[_+W],W+=Q,w[b+1]=F[_+W],W+=Q,w[b+2]=F[_+W],W+=Q,w[b+3]=F[_+W],b+=4}P--}return w},o=function(C,p,f,Q){const w=C[p+3],b=Math.pow(2,w-128)/255;f[Q+0]=C[p+0]*b,f[Q+1]=C[p+1]*b,f[Q+2]=C[p+2]*b,f[Q+3]=1},a=function(C,p,f,Q){const w=C[p+3],b=Math.pow(2,w-128)/255;f[Q+0]=st.toHalfFloat(Math.min(C[p+0]*b,65504)),f[Q+1]=st.toHalfFloat(Math.min(C[p+1]*b,65504)),f[Q+2]=st.toHalfFloat(Math.min(C[p+2]*b,65504)),f[Q+3]=st.toHalfFloat(1)},r=new Uint8Array(A);r.pos=0;const l=t(r),g=l.width,c=l.height,I=s(r.subarray(r.pos),g,c);let B,E,u;switch(this.type){case ue:u=I.length/4;const C=new Float32Array(u*4);for(let f=0;f<u;f++)o(I,f*4,C,f*4);B=C,E=ue;break;case $A:u=I.length/4;const p=new Uint16Array(u*4);for(let f=0;f<u;f++)a(I,f*4,p,f*4);B=p,E=$A;break;default:throw new Error("THREE.RGBELoader: Unsupported type: "+this.type)}return{width:g,height:c,data:B,header:l.string,gamma:l.gamma,exposure:l.exposure,type:E}}setDataType(A){return this.type=A,this}load(A,e,i,t){function s(o,a){switch(o.type){case ue:case $A:o.colorSpace=WA,o.minFilter=ne,o.magFilter=ne,o.generateMipmaps=!1,o.flipY=!0;break}e&&e(o,a)}return super.load(A,s,i,t)}}const Ze=new ki,YA=new N,Je=new N,wA=new SA,Wo={X:new N(1,0,0),Y:new N(0,1,0),Z:new N(0,0,1)},ls={type:"change"},Zo={type:"mouseDown",mode:null},$o={type:"mouseUp",mode:null},An={type:"objectChange"};class Rg extends Zs{constructor(A,e=null){super(void 0,e);const i=new Ng(this);this._root=i;const t=new on;this._gizmo=t,i.add(t);const s=new Lg;this._plane=s,i.add(s);const o=this;function a(Q,w){let b=w;Object.defineProperty(o,Q,{get:function(){return b!==void 0?b:w},set:function(S){b!==S&&(b=S,s[Q]=S,t[Q]=S,o.dispatchEvent({type:Q+"-changed",value:S}),o.dispatchEvent(ls))}}),o[Q]=w,s[Q]=w,t[Q]=w}a("camera",A),a("object",void 0),a("enabled",!0),a("axis",null),a("mode","translate"),a("translationSnap",null),a("rotationSnap",null),a("scaleSnap",null),a("space","world"),a("size",1),a("dragging",!1),a("showX",!0),a("showY",!0),a("showZ",!0);const r=new N,l=new N,g=new SA,c=new SA,I=new N,B=new SA,E=new N,u=new N,C=new N,p=0,f=new N;a("worldPosition",r),a("worldPositionStart",l),a("worldQuaternion",g),a("worldQuaternionStart",c),a("cameraPosition",I),a("cameraQuaternion",B),a("pointStart",E),a("pointEnd",u),a("rotationAxis",C),a("rotationAngle",p),a("eye",f),this._offset=new N,this._startNorm=new N,this._endNorm=new N,this._cameraScale=new N,this._parentPosition=new N,this._parentQuaternion=new SA,this._parentQuaternionInv=new SA,this._parentScale=new N,this._worldScaleStart=new N,this._worldQuaternionInv=new SA,this._worldScale=new N,this._positionStart=new N,this._quaternionStart=new SA,this._scaleStart=new N,this._getPointer=Fg.bind(this),this._onPointerDown=kg.bind(this),this._onPointerHover=Mg.bind(this),this._onPointerMove=Gg.bind(this),this._onPointerUp=Tg.bind(this),e!==null&&this.connect()}connect(){this.domElement.addEventListener("pointerdown",this._onPointerDown),this.domElement.addEventListener("pointermove",this._onPointerHover),this.domElement.addEventListener("pointerup",this._onPointerUp),this.domElement.style.touchAction="none"}disconnect(){this.domElement.removeEventListener("pointerdown",this._onPointerDown),this.domElement.removeEventListener("pointermove",this._onPointerHover),this.domElement.removeEventListener("pointermove",this._onPointerMove),this.domElement.removeEventListener("pointerup",this._onPointerUp),this.domElement.style.touchAction="auto"}getHelper(){return this._root}pointerHover(A){if(this.object===void 0||this.dragging===!0)return;A!==null&&Ze.setFromCamera(A,this.camera);const e=hs(this._gizmo.picker[this.mode],Ze);e?this.axis=e.object.name:this.axis=null}pointerDown(A){if(!(this.object===void 0||this.dragging===!0||A!=null&&A.button!==0)&&this.axis!==null){A!==null&&Ze.setFromCamera(A,this.camera);const e=hs(this._plane,Ze,!0);e&&(this.object.updateMatrixWorld(),this.object.parent.updateMatrixWorld(),this._positionStart.copy(this.object.position),this._quaternionStart.copy(this.object.quaternion),this._scaleStart.copy(this.object.scale),this.object.matrixWorld.decompose(this.worldPositionStart,this.worldQuaternionStart,this._worldScaleStart),this.pointStart.copy(e.point).sub(this.worldPositionStart)),this.dragging=!0,Zo.mode=this.mode,this.dispatchEvent(Zo)}}pointerMove(A){const e=this.axis,i=this.mode,t=this.object;let s=this.space;if(i==="scale"?s="local":(e==="E"||e==="XYZE"||e==="XYZ")&&(s="world"),t===void 0||e===null||this.dragging===!1||A!==null&&A.button!==-1)return;A!==null&&Ze.setFromCamera(A,this.camera);const o=hs(this._plane,Ze,!0);if(o){if(this.pointEnd.copy(o.point).sub(this.worldPositionStart),i==="translate")this._offset.copy(this.pointEnd).sub(this.pointStart),s==="local"&&e!=="XYZ"&&this._offset.applyQuaternion(this._worldQuaternionInv),e.indexOf("X")===-1&&(this._offset.x=0),e.indexOf("Y")===-1&&(this._offset.y=0),e.indexOf("Z")===-1&&(this._offset.z=0),s==="local"&&e!=="XYZ"?this._offset.applyQuaternion(this._quaternionStart).divide(this._parentScale):this._offset.applyQuaternion(this._parentQuaternionInv).divide(this._parentScale),t.position.copy(this._offset).add(this._positionStart),this.translationSnap&&(s==="local"&&(t.position.applyQuaternion(wA.copy(this._quaternionStart).invert()),e.search("X")!==-1&&(t.position.x=Math.round(t.position.x/this.translationSnap)*this.translationSnap),e.search("Y")!==-1&&(t.position.y=Math.round(t.position.y/this.translationSnap)*this.translationSnap),e.search("Z")!==-1&&(t.position.z=Math.round(t.position.z/this.translationSnap)*this.translationSnap),t.position.applyQuaternion(this._quaternionStart)),s==="world"&&(t.parent&&t.position.add(YA.setFromMatrixPosition(t.parent.matrixWorld)),e.search("X")!==-1&&(t.position.x=Math.round(t.position.x/this.translationSnap)*this.translationSnap),e.search("Y")!==-1&&(t.position.y=Math.round(t.position.y/this.translationSnap)*this.translationSnap),e.search("Z")!==-1&&(t.position.z=Math.round(t.position.z/this.translationSnap)*this.translationSnap),t.parent&&t.position.sub(YA.setFromMatrixPosition(t.parent.matrixWorld))));else if(i==="scale"){if(e.search("XYZ")!==-1){let a=this.pointEnd.length()/this.pointStart.length();this.pointEnd.dot(this.pointStart)<0&&(a*=-1),Je.set(a,a,a)}else YA.copy(this.pointStart),Je.copy(this.pointEnd),YA.applyQuaternion(this._worldQuaternionInv),Je.applyQuaternion(this._worldQuaternionInv),Je.divide(YA),e.search("X")===-1&&(Je.x=1),e.search("Y")===-1&&(Je.y=1),e.search("Z")===-1&&(Je.z=1);t.scale.copy(this._scaleStart).multiply(Je),this.scaleSnap&&(e.search("X")!==-1&&(t.scale.x=Math.round(t.scale.x/this.scaleSnap)*this.scaleSnap||this.scaleSnap),e.search("Y")!==-1&&(t.scale.y=Math.round(t.scale.y/this.scaleSnap)*this.scaleSnap||this.scaleSnap),e.search("Z")!==-1&&(t.scale.z=Math.round(t.scale.z/this.scaleSnap)*this.scaleSnap||this.scaleSnap))}else if(i==="rotate"){this._offset.copy(this.pointEnd).sub(this.pointStart);const a=20/this.worldPosition.distanceTo(YA.setFromMatrixPosition(this.camera.matrixWorld));let r=!1;e==="XYZE"?(this.rotationAxis.copy(this._offset).cross(this.eye).normalize(),this.rotationAngle=this._offset.dot(YA.copy(this.rotationAxis).cross(this.eye))*a):(e==="X"||e==="Y"||e==="Z")&&(this.rotationAxis.copy(Wo[e]),YA.copy(Wo[e]),s==="local"&&YA.applyQuaternion(this.worldQuaternion),YA.cross(this.eye),YA.length()===0?r=!0:this.rotationAngle=this._offset.dot(YA.normalize())*a),(e==="E"||r)&&(this.rotationAxis.copy(this.eye),this.rotationAngle=this.pointEnd.angleTo(this.pointStart),this._startNorm.copy(this.pointStart).normalize(),this._endNorm.copy(this.pointEnd).normalize(),this.rotationAngle*=this._endNorm.cross(this._startNorm).dot(this.eye)<0?1:-1),this.rotationSnap&&(this.rotationAngle=Math.round(this.rotationAngle/this.rotationSnap)*this.rotationSnap),s==="local"&&e!=="E"&&e!=="XYZE"?(t.quaternion.copy(this._quaternionStart),t.quaternion.multiply(wA.setFromAxisAngle(this.rotationAxis,this.rotationAngle)).normalize()):(this.rotationAxis.applyQuaternion(this._parentQuaternionInv),t.quaternion.copy(wA.setFromAxisAngle(this.rotationAxis,this.rotationAngle)),t.quaternion.multiply(this._quaternionStart).normalize())}this.dispatchEvent(ls),this.dispatchEvent(An)}}pointerUp(A){A!==null&&A.button!==0||(this.dragging&&this.axis!==null&&($o.mode=this.mode,this.dispatchEvent($o)),this.dragging=!1,this.axis=null)}dispose(){this.disconnect(),this.traverse(function(A){A.geometry&&A.geometry.dispose(),A.material&&A.material.dispose()})}attach(A){return this.object=A,this._root.visible=!0,this}detach(){return this.object=void 0,this.axis=null,this._root.visible=!1,this}reset(){this.enabled&&this.dragging&&(this.object.position.copy(this._positionStart),this.object.quaternion.copy(this._quaternionStart),this.object.scale.copy(this._scaleStart),this.dispatchEvent(ls),this.dispatchEvent(An),this.pointStart.copy(this.pointEnd))}getRaycaster(){return Ze}getMode(){return this.mode}setMode(A){this.mode=A}setTranslationSnap(A){this.translationSnap=A}setRotationSnap(A){this.rotationSnap=A}setScaleSnap(A){this.scaleSnap=A}setSize(A){this.size=A}setSpace(A){this.space=A}}function Fg(n){if(this.domElement.ownerDocument.pointerLockElement)return{x:0,y:0,button:n.button};{const A=this.domElement.getBoundingClientRect();return{x:(n.clientX-A.left)/A.width*2-1,y:-(n.clientY-A.top)/A.height*2+1,button:n.button}}}function Mg(n){if(this.enabled)switch(n.pointerType){case"mouse":case"pen":this.pointerHover(this._getPointer(n));break}}function kg(n){this.enabled&&(document.pointerLockElement||this.domElement.setPointerCapture(n.pointerId),this.domElement.addEventListener("pointermove",this._onPointerMove),this.pointerHover(this._getPointer(n)),this.pointerDown(this._getPointer(n)))}function Gg(n){this.enabled&&this.pointerMove(this._getPointer(n))}function Tg(n){this.enabled&&(this.domElement.releasePointerCapture(n.pointerId),this.domElement.removeEventListener("pointermove",this._onPointerMove),this.pointerUp(this._getPointer(n)))}function hs(n,A,e){const i=A.intersectObject(n,!0);for(let t=0;t<i.length;t++)if(i[t].object.visible||e)return i[t];return!1}const Zt=new qe,CA=new N(0,1,0),en=new N(0,0,0),tn=new hA,$t=new SA,Ai=new SA,ye=new N,sn=new hA,vt=new N(1,0,0),$e=new N(0,1,0),xt=new N(0,0,1),ei=new N,Rt=new N,Ft=new N;class Ng extends me{constructor(A){super(),this.isTransformControlsRoot=!0,this.controls=A,this.visible=!1}updateMatrixWorld(A){const e=this.controls;e.object!==void 0&&(e.object.updateMatrixWorld(),e.object.parent===null?console.error("TransformControls: The attached 3D object must be a part of the scene graph."):e.object.parent.matrixWorld.decompose(e._parentPosition,e._parentQuaternion,e._parentScale),e.object.matrixWorld.decompose(e.worldPosition,e.worldQuaternion,e._worldScale),e._parentQuaternionInv.copy(e._parentQuaternion).invert(),e._worldQuaternionInv.copy(e.worldQuaternion).invert()),e.camera.updateMatrixWorld(),e.camera.matrixWorld.decompose(e.cameraPosition,e.cameraQuaternion,e._cameraScale),e.camera.isOrthographicCamera?e.camera.getWorldDirection(e.eye).negate():e.eye.copy(e.cameraPosition).sub(e.worldPosition).normalize(),super.updateMatrixWorld(A)}}class on extends me{constructor(){super(),this.isTransformControlsGizmo=!0,this.type="TransformControlsGizmo";const A=new Qe({depthTest:!1,depthWrite:!1,fog:!1,toneMapped:!1,transparent:!0}),e=new Fe({depthTest:!1,depthWrite:!1,fog:!1,toneMapped:!1,transparent:!0}),i=A.clone();i.opacity=.15;const t=e.clone();t.opacity=.5;const s=A.clone();s.color.setHex(16711680);const o=A.clone();o.color.setHex(65280);const a=A.clone();a.color.setHex(255);const r=A.clone();r.color.setHex(16711680),r.opacity=.5;const l=A.clone();l.color.setHex(65280),l.opacity=.5;const g=A.clone();g.color.setHex(255),g.opacity=.5;const c=A.clone();c.opacity=.25;const I=A.clone();I.color.setHex(16776960),I.opacity=.25,A.clone().color.setHex(16776960);const B=A.clone();B.color.setHex(7895160);const E=new Ae(0,.04,.1,12);E.translate(0,.05,0);const u=new jA(.08,.08,.08);u.translate(0,.04,0);const C=new oe;C.setAttribute("position",new FA([0,0,0,1,0,0],3));const p=new Ae(.0075,.0075,.5,3);p.translate(0,.25,0);function f(_,W){const j=new dt(_,.0075,3,64,W*Math.PI*2);return j.rotateY(Math.PI/2),j.rotateX(Math.PI/2),j}function Q(){const _=new oe;return _.setAttribute("position",new FA([0,0,0,1,1,1],3)),_}const w={X:[[new K(E,s),[.5,0,0],[0,0,-Math.PI/2]],[new K(E,s),[-.5,0,0],[0,0,Math.PI/2]],[new K(p,s),[0,0,0],[0,0,-Math.PI/2]]],Y:[[new K(E,o),[0,.5,0]],[new K(E,o),[0,-.5,0],[Math.PI,0,0]],[new K(p,o)]],Z:[[new K(E,a),[0,0,.5],[Math.PI/2,0,0]],[new K(E,a),[0,0,-.5],[-Math.PI/2,0,0]],[new K(p,a),null,[Math.PI/2,0,0]]],XYZ:[[new K(new jt(.1,0),c.clone()),[0,0,0]]],XY:[[new K(new jA(.15,.15,.01),g.clone()),[.15,.15,0]]],YZ:[[new K(new jA(.15,.15,.01),r.clone()),[0,.15,.15],[0,Math.PI/2,0]]],XZ:[[new K(new jA(.15,.15,.01),l.clone()),[.15,0,.15],[-Math.PI/2,0,0]]]},b={X:[[new K(new Ae(.2,0,.6,4),i),[.3,0,0],[0,0,-Math.PI/2]],[new K(new Ae(.2,0,.6,4),i),[-.3,0,0],[0,0,Math.PI/2]]],Y:[[new K(new Ae(.2,0,.6,4),i),[0,.3,0]],[new K(new Ae(.2,0,.6,4),i),[0,-.3,0],[0,0,Math.PI]]],Z:[[new K(new Ae(.2,0,.6,4),i),[0,0,.3],[Math.PI/2,0,0]],[new K(new Ae(.2,0,.6,4),i),[0,0,-.3],[-Math.PI/2,0,0]]],XYZ:[[new K(new jt(.2,0),i)]],XY:[[new K(new jA(.2,.2,.01),i),[.15,.15,0]]],YZ:[[new K(new jA(.2,.2,.01),i),[0,.15,.15],[0,Math.PI/2,0]]],XZ:[[new K(new jA(.2,.2,.01),i),[.15,0,.15],[-Math.PI/2,0,0]]]},S={START:[[new K(new jt(.01,2),t),null,null,null,"helper"]],END:[[new K(new jt(.01,2),t),null,null,null,"helper"]],DELTA:[[new Ee(Q(),t),null,null,null,"helper"]],X:[[new Ee(C,t.clone()),[-1e3,0,0],null,[1e6,1,1],"helper"]],Y:[[new Ee(C,t.clone()),[0,-1e3,0],[0,0,Math.PI/2],[1e6,1,1],"helper"]],Z:[[new Ee(C,t.clone()),[0,0,-1e3],[0,-Math.PI/2,0],[1e6,1,1],"helper"]]},x={XYZE:[[new K(f(.5,1),B),null,[0,Math.PI/2,0]]],X:[[new K(f(.5,.5),s)]],Y:[[new K(f(.5,.5),o),null,[0,0,-Math.PI/2]]],Z:[[new K(f(.5,.5),a),null,[0,Math.PI/2,0]]],E:[[new K(f(.75,1),I),null,[0,Math.PI/2,0]]]},D={AXIS:[[new Ee(C,t.clone()),[-1e3,0,0],null,[1e6,1,1],"helper"]]},F={XYZE:[[new K(new Bi(.25,10,8),i)]],X:[[new K(new dt(.5,.1,4,24),i),[0,0,0],[0,-Math.PI/2,-Math.PI/2]]],Y:[[new K(new dt(.5,.1,4,24),i),[0,0,0],[Math.PI/2,0,0]]],Z:[[new K(new dt(.5,.1,4,24),i),[0,0,0],[0,0,-Math.PI/2]]],E:[[new K(new dt(.75,.1,2,24),i)]]},P={X:[[new K(u,s),[.5,0,0],[0,0,-Math.PI/2]],[new K(p,s),[0,0,0],[0,0,-Math.PI/2]],[new K(u,s),[-.5,0,0],[0,0,Math.PI/2]]],Y:[[new K(u,o),[0,.5,0]],[new K(p,o)],[new K(u,o),[0,-.5,0],[0,0,Math.PI]]],Z:[[new K(u,a),[0,0,.5],[Math.PI/2,0,0]],[new K(p,a),[0,0,0],[Math.PI/2,0,0]],[new K(u,a),[0,0,-.5],[-Math.PI/2,0,0]]],XY:[[new K(new jA(.15,.15,.01),g),[.15,.15,0]]],YZ:[[new K(new jA(.15,.15,.01),r),[0,.15,.15],[0,Math.PI/2,0]]],XZ:[[new K(new jA(.15,.15,.01),l),[.15,0,.15],[-Math.PI/2,0,0]]],XYZ:[[new K(new jA(.1,.1,.1),c.clone())]]},Y={X:[[new K(new Ae(.2,0,.6,4),i),[.3,0,0],[0,0,-Math.PI/2]],[new K(new Ae(.2,0,.6,4),i),[-.3,0,0],[0,0,Math.PI/2]]],Y:[[new K(new Ae(.2,0,.6,4),i),[0,.3,0]],[new K(new Ae(.2,0,.6,4),i),[0,-.3,0],[0,0,Math.PI]]],Z:[[new K(new Ae(.2,0,.6,4),i),[0,0,.3],[Math.PI/2,0,0]],[new K(new Ae(.2,0,.6,4),i),[0,0,-.3],[-Math.PI/2,0,0]]],XY:[[new K(new jA(.2,.2,.01),i),[.15,.15,0]]],YZ:[[new K(new jA(.2,.2,.01),i),[0,.15,.15],[0,Math.PI/2,0]]],XZ:[[new K(new jA(.2,.2,.01),i),[.15,0,.15],[-Math.PI/2,0,0]]],XYZ:[[new K(new jA(.2,.2,.2),i),[0,0,0]]]},O={X:[[new Ee(C,t.clone()),[-1e3,0,0],null,[1e6,1,1],"helper"]],Y:[[new Ee(C,t.clone()),[0,-1e3,0],[0,0,Math.PI/2],[1e6,1,1],"helper"]],Z:[[new Ee(C,t.clone()),[0,0,-1e3],[0,-Math.PI/2,0],[1e6,1,1],"helper"]]};function X(_){const W=new me;for(const j in _)for(let AA=_[j].length;AA--;){const Z=_[j][AA][0].clone(),cA=_[j][AA][1],yA=_[j][AA][2],eA=_[j][AA][3],sA=_[j][AA][4];Z.name=j,Z.tag=sA,cA&&Z.position.set(cA[0],cA[1],cA[2]),yA&&Z.rotation.set(yA[0],yA[1],yA[2]),eA&&Z.scale.set(eA[0],eA[1],eA[2]),Z.updateMatrix();const nA=Z.geometry.clone();nA.applyMatrix4(Z.matrix),Z.geometry=nA,Z.renderOrder=1/0,Z.position.set(0,0,0),Z.rotation.set(0,0,0),Z.scale.set(1,1,1),W.add(Z)}return W}this.gizmo={},this.picker={},this.helper={},this.add(this.gizmo.translate=X(w)),this.add(this.gizmo.rotate=X(x)),this.add(this.gizmo.scale=X(P)),this.add(this.picker.translate=X(b)),this.add(this.picker.rotate=X(F)),this.add(this.picker.scale=X(Y)),this.add(this.helper.translate=X(S)),this.add(this.helper.rotate=X(D)),this.add(this.helper.scale=X(O)),this.picker.translate.visible=!1,this.picker.rotate.visible=!1,this.picker.scale.visible=!1}updateMatrixWorld(A){const e=(this.mode==="scale"?"local":this.space)==="local"?this.worldQuaternion:Ai;this.gizmo.translate.visible=this.mode==="translate",this.gizmo.rotate.visible=this.mode==="rotate",this.gizmo.scale.visible=this.mode==="scale",this.helper.translate.visible=this.mode==="translate",this.helper.rotate.visible=this.mode==="rotate",this.helper.scale.visible=this.mode==="scale";let i=[];i=i.concat(this.picker[this.mode].children),i=i.concat(this.gizmo[this.mode].children),i=i.concat(this.helper[this.mode].children);for(let t=0;t<i.length;t++){const s=i[t];s.visible=!0,s.rotation.set(0,0,0),s.position.copy(this.worldPosition);let o;if(this.camera.isOrthographicCamera?o=(this.camera.top-this.camera.bottom)/this.camera.zoom:o=this.worldPosition.distanceTo(this.cameraPosition)*Math.min(1.9*Math.tan(Math.PI*this.camera.fov/360)/this.camera.zoom,7),s.scale.set(1,1,1).multiplyScalar(o*this.size/4),s.tag==="helper"){s.visible=!1,s.name==="AXIS"?(s.visible=!!this.axis,this.axis==="X"&&(wA.setFromEuler(Zt.set(0,0,0)),s.quaternion.copy(e).multiply(wA),Math.abs(CA.copy(vt).applyQuaternion(e).dot(this.eye))>.9&&(s.visible=!1)),this.axis==="Y"&&(wA.setFromEuler(Zt.set(0,0,Math.PI/2)),s.quaternion.copy(e).multiply(wA),Math.abs(CA.copy($e).applyQuaternion(e).dot(this.eye))>.9&&(s.visible=!1)),this.axis==="Z"&&(wA.setFromEuler(Zt.set(0,Math.PI/2,0)),s.quaternion.copy(e).multiply(wA),Math.abs(CA.copy(xt).applyQuaternion(e).dot(this.eye))>.9&&(s.visible=!1)),this.axis==="XYZE"&&(wA.setFromEuler(Zt.set(0,Math.PI/2,0)),CA.copy(this.rotationAxis),s.quaternion.setFromRotationMatrix(tn.lookAt(en,CA,$e)),s.quaternion.multiply(wA),s.visible=this.dragging),this.axis==="E"&&(s.visible=!1)):s.name==="START"?(s.position.copy(this.worldPositionStart),s.visible=this.dragging):s.name==="END"?(s.position.copy(this.worldPosition),s.visible=this.dragging):s.name==="DELTA"?(s.position.copy(this.worldPositionStart),s.quaternion.copy(this.worldQuaternionStart),YA.set(1e-10,1e-10,1e-10).add(this.worldPositionStart).sub(this.worldPosition).multiplyScalar(-1),YA.applyQuaternion(this.worldQuaternionStart.clone().invert()),s.scale.copy(YA),s.visible=this.dragging):(s.quaternion.copy(e),this.dragging?s.position.copy(this.worldPositionStart):s.position.copy(this.worldPosition),this.axis&&(s.visible=this.axis.search(s.name)!==-1));continue}s.quaternion.copy(e),this.mode==="translate"||this.mode==="scale"?(s.name==="X"&&Math.abs(CA.copy(vt).applyQuaternion(e).dot(this.eye))>.99&&(s.scale.set(1e-10,1e-10,1e-10),s.visible=!1),s.name==="Y"&&Math.abs(CA.copy($e).applyQuaternion(e).dot(this.eye))>.99&&(s.scale.set(1e-10,1e-10,1e-10),s.visible=!1),s.name==="Z"&&Math.abs(CA.copy(xt).applyQuaternion(e).dot(this.eye))>.99&&(s.scale.set(1e-10,1e-10,1e-10),s.visible=!1),s.name==="XY"&&Math.abs(CA.copy(xt).applyQuaternion(e).dot(this.eye))<.2&&(s.scale.set(1e-10,1e-10,1e-10),s.visible=!1),s.name==="YZ"&&Math.abs(CA.copy(vt).applyQuaternion(e).dot(this.eye))<.2&&(s.scale.set(1e-10,1e-10,1e-10),s.visible=!1),s.name==="XZ"&&Math.abs(CA.copy($e).applyQuaternion(e).dot(this.eye))<.2&&(s.scale.set(1e-10,1e-10,1e-10),s.visible=!1)):this.mode==="rotate"&&($t.copy(e),CA.copy(this.eye).applyQuaternion(wA.copy(e).invert()),s.name.search("E")!==-1&&s.quaternion.setFromRotationMatrix(tn.lookAt(this.eye,en,$e)),s.name==="X"&&(wA.setFromAxisAngle(vt,Math.atan2(-CA.y,CA.z)),wA.multiplyQuaternions($t,wA),s.quaternion.copy(wA)),s.name==="Y"&&(wA.setFromAxisAngle($e,Math.atan2(CA.x,CA.z)),wA.multiplyQuaternions($t,wA),s.quaternion.copy(wA)),s.name==="Z"&&(wA.setFromAxisAngle(xt,Math.atan2(CA.y,CA.x)),wA.multiplyQuaternions($t,wA),s.quaternion.copy(wA))),s.visible=s.visible&&(s.name.indexOf("X")===-1||this.showX),s.visible=s.visible&&(s.name.indexOf("Y")===-1||this.showY),s.visible=s.visible&&(s.name.indexOf("Z")===-1||this.showZ),s.visible=s.visible&&(s.name.indexOf("E")===-1||this.showX&&this.showY&&this.showZ),s.material._color=s.material._color||s.material.color.clone(),s.material._opacity=s.material._opacity||s.material.opacity,s.material.color.copy(s.material._color),s.material.opacity=s.material._opacity,this.enabled&&this.axis&&(s.name===this.axis||this.axis.split("").some(function(a){return s.name===a}))&&(s.material.color.setHex(16776960),s.material.opacity=1)}super.updateMatrixWorld(A)}}class Lg extends K{constructor(){super(new Gi(1e5,1e5,2,2),new Qe({visible:!1,wireframe:!0,side:fi,transparent:!0,opacity:.1,toneMapped:!1})),this.isTransformControlsPlane=!0,this.type="TransformControlsPlane"}updateMatrixWorld(A){let e=this.space;switch(this.position.copy(this.worldPosition),this.mode==="scale"&&(e="local"),ei.copy(vt).applyQuaternion(e==="local"?this.worldQuaternion:Ai),Rt.copy($e).applyQuaternion(e==="local"?this.worldQuaternion:Ai),Ft.copy(xt).applyQuaternion(e==="local"?this.worldQuaternion:Ai),CA.copy(Rt),this.mode){case"translate":case"scale":switch(this.axis){case"X":CA.copy(this.eye).cross(ei),ye.copy(ei).cross(CA);break;case"Y":CA.copy(this.eye).cross(Rt),ye.copy(Rt).cross(CA);break;case"Z":CA.copy(this.eye).cross(Ft),ye.copy(Ft).cross(CA);break;case"XY":ye.copy(Ft);break;case"YZ":ye.copy(ei);break;case"XZ":CA.copy(Ft),ye.copy(Rt);break;case"XYZ":case"E":ye.set(0,0,0);break}break;default:ye.set(0,0,0)}ye.length()===0?this.quaternion.copy(this.cameraQuaternion):(sn.lookAt(YA.set(0,0,0),ye,CA),this.quaternion.setFromRotationMatrix(sn)),super.updateMatrixWorld(A)}}const nn={type:"change"},Is={type:"start"},an={type:"end"},Ug={type:"endMovement"},ti=new ya,rn=new Da,_g=Math.cos(70*bA.DEG2RAD),TA=new N;new N;const te=2*Math.PI,IA={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_PAN:4,TOUCH_DOLLY_PAN:5,TOUCH_DOLLY_ROTATE:6},At=1e-6;let Pg=class extends Zs{constructor(n,A=null){super(n,A),this.state=IA.NONE,this.enabled=!0,this.target=new N,this.cursor=new N,this.minDistance=0,this.maxDistance=1/0,this.minZoom=0,this.maxZoom=1/0,this.minTargetRadius=0,this.maxTargetRadius=1/0,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.minAzimuthAngle=-1/0,this.maxAzimuthAngle=1/0,this.enableDamping=!1,this.dampingFactor=.05,this.enableZoom=!0,this.zoomSpeed=1,this.enableRotate=!0,this.rotateSpeed=1,this.enablePan=!0,this.panSpeed=1,this.screenSpacePanning=!0,this.keyPanSpeed=7,this.zoomToCursor=!1,this.autoRotate=!1,this.autoRotateSpeed=2,this.keys={LEFT:"ArrowLeft",UP:"ArrowUp",RIGHT:"ArrowRight",BOTTOM:"ArrowDown"},this.mouseButtons={LEFT:ot.ROTATE,MIDDLE:ot.DOLLY,RIGHT:ot.PAN},this.touches={ONE:nt.ROTATE,TWO:nt.DOLLY_PAN},this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object.zoom,this._domElementKeyEvents=null,this._lastPosition=new N,this._lastQuaternion=new SA,this._lastTargetPosition=new N,this._quat=new SA().setFromUnitVectors(n.up,new N(0,1,0)),this._quatInverse=this._quat.clone().invert(),this._spherical=new $s,this._sphericalDelta=new $s,this._scale=1,this._currentScale=1,this._panOffset=new N,this._rotateStart=new UA,this._rotateEnd=new UA,this._rotateDelta=new UA,this._panStart=new UA,this._panEnd=new UA,this._panDelta=new UA,this._dollyStart=new UA,this._dollyEnd=new UA,this._dollyDelta=new UA,this._dollyDirection=new N,this._mouse=new UA,this._performCursorZoom=!1,this._pointers=[],this._pointerPositions={},this._controlActive=!1,this._lastIsDamping=!1,this._isDamping=!1,this._onPointerMove=qg.bind(this),this._onPointerDown=Hg.bind(this),this._onPointerUp=Og.bind(this),this._onContextMenu=Xg.bind(this),this._onMouseWheel=Jg.bind(this),this._onKeyDown=jg.bind(this),this._onTouchStart=zg.bind(this),this._onTouchMove=Vg.bind(this),this._onMouseDown=Kg.bind(this),this._onMouseMove=Yg.bind(this),this._interceptControlDown=Wg.bind(this),this._interceptControlUp=Zg.bind(this),this.domElement!==null&&this.connect(),this.update()}connect(){this.domElement.addEventListener("pointerdown",this._onPointerDown),this.domElement.addEventListener("pointercancel",this._onPointerUp),this.domElement.addEventListener("contextmenu",this._onContextMenu),this.domElement.addEventListener("wheel",this._onMouseWheel,{passive:!1}),this.domElement.getRootNode().addEventListener("keydown",this._interceptControlDown,{passive:!0,capture:!0}),this.domElement.style.touchAction="none"}disconnect(){this.domElement.removeEventListener("pointerdown",this._onPointerDown),this.domElement.removeEventListener("pointermove",this._onPointerMove),this.domElement.removeEventListener("pointerup",this._onPointerUp),this.domElement.removeEventListener("pointercancel",this._onPointerUp),this.domElement.removeEventListener("wheel",this._onMouseWheel),this.domElement.removeEventListener("contextmenu",this._onContextMenu),this.stopListenToKeyEvents(),this.domElement.getRootNode().removeEventListener("keydown",this._interceptControlDown,{capture:!0}),this.domElement.style.touchAction="auto"}dispose(){this.disconnect()}getPolarAngle(){return this._spherical.phi}getAzimuthalAngle(){return this._spherical.theta}getDistance(){return this.object.position.distanceTo(this.target)}listenToKeyEvents(n){n.addEventListener("keydown",this._onKeyDown),this._domElementKeyEvents=n}stopListenToKeyEvents(){this._domElementKeyEvents!==null&&(this._domElementKeyEvents.removeEventListener("keydown",this._onKeyDown),this._domElementKeyEvents=null)}saveState(){this.target0.copy(this.target),this.position0.copy(this.object.position),this.zoom0=this.object.zoom}reset(){this.target.copy(this.target0),this.object.position.copy(this.position0),this.object.zoom=this.zoom0,this.object.updateProjectionMatrix(),this.dispatchEvent(nn),this.update(),this.state=IA.NONE,this._isDamping=!1}update(n=null){if(this.enableDamping&&n===null)return;const A=this.object.getWorldPosition(this.object.position);TA.copy(A).sub(this.target),TA.applyQuaternion(this._quat),this._spherical.setFromVector3(TA),this.autoRotate&&this.state===IA.NONE&&this._rotateLeft(this._getAutoRotationAngle(n)),this.enableDamping?(this._spherical.theta+=this._sphericalDelta.theta*this.dampingFactor,this._spherical.phi+=this._sphericalDelta.phi*this.dampingFactor):(this._spherical.theta+=this._sphericalDelta.theta,this._spherical.phi+=this._sphericalDelta.phi);let e=this.minAzimuthAngle,i=this.maxAzimuthAngle;isFinite(e)&&isFinite(i)&&(e<-Math.PI?e+=te:e>Math.PI&&(e-=te),i<-Math.PI?i+=te:i>Math.PI&&(i-=te),e<=i?this._spherical.theta=Math.max(e,Math.min(i,this._spherical.theta)):this._spherical.theta=this._spherical.theta>(e+i)/2?Math.max(e,this._spherical.theta):Math.min(i,this._spherical.theta)),this._spherical.phi=Math.max(this.minPolarAngle,Math.min(this.maxPolarAngle,this._spherical.phi)),this._spherical.makeSafe(),this.enableDamping===!0?this.target.addScaledVector(this._panOffset,this.dampingFactor):this.target.add(this._panOffset),this.target.sub(this.cursor),this.target.clampLength(this.minTargetRadius,this.maxTargetRadius),this.target.add(this.cursor);let t=!1;if(this.enableDamping?this._currentScale=bA.lerp(this._currentScale,this._scale,this.dampingFactor):this._currentScale=this._scale,this.zoomToCursor&&this._performCursorZoom||this.object.isOrthographicCamera)this._spherical.radius=this._clampDistance(this._spherical.radius);else{const s=this._spherical.radius;this._spherical.radius=this._clampDistance(this._spherical.radius*this._currentScale),t=Math.abs(s-this._spherical.radius)>At*100}if(TA.setFromSpherical(this._spherical),TA.applyQuaternion(this._quatInverse),A.copy(this.target).add(TA),this.object.parent?this.object.parent.worldToLocal(A):this.object.position.copy(A),this.object.lookAt(this.target),this.enableDamping===!0?(this._sphericalDelta.theta*=1-this.dampingFactor,this._sphericalDelta.phi*=1-this.dampingFactor,this._panOffset.multiplyScalar(1-this.dampingFactor)):(this._sphericalDelta.set(0,0,0),this._panOffset.set(0,0,0)),this.zoomToCursor&&this._performCursorZoom){let s=null;if(this.object.isPerspectiveCamera){const o=TA.length();s=this._clampDistance(o*this._currentScale);const a=o-s;this.object.position.addScaledVector(this._dollyDirection,a),this.object.updateMatrixWorld(),t=Math.abs(a)>At}else if(this.object.isOrthographicCamera){const o=new N(this._mouse.x,this._mouse.y,0);o.unproject(this.object);const a=this.object.zoom;this.object.zoom=Math.max(this.minZoom,Math.min(this.maxZoom,this.object.zoom/this._currentScale)),this.object.updateProjectionMatrix(),t=Math.abs(a-this.object.zoom)>At;const r=new N(this._mouse.x,this._mouse.y,0);r.unproject(this.object),this.object.position.sub(r).add(o),this.object.updateMatrixWorld(),s=TA.length()}else console.warn("WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled."),this.zoomToCursor=!1;s!==null&&(this.screenSpacePanning?this.target.set(0,0,-1).transformDirection(this.object.matrix).multiplyScalar(s).add(this.object.position):(ti.origin.copy(this.object.position),ti.direction.set(0,0,-1).transformDirection(this.object.matrix),Math.abs(this.object.up.dot(ti.direction))<_g?this.object.lookAt(this.target):(rn.setFromNormalAndCoplanarPoint(this.object.up,this.target),ti.intersectPlane(rn,this.target))))}else if(this.object.isOrthographicCamera){const s=this.object.zoom;this.object.zoom=Math.max(this.minZoom,Math.min(this.maxZoom,this.object.zoom/this._scale)),Math.abs(s-this.object.zoom)>At&&(this.object.updateProjectionMatrix(),t=!0)}return this._scale=1,t||this._lastPosition.distanceToSquared(this.object.position)>At||8*(1-this._lastQuaternion.dot(this.object.quaternion))>At||this._lastTargetPosition.distanceToSquared(this.target)>At?(this.dispatchEvent(nn),this._lastPosition.copy(this.object.position),this._lastQuaternion.copy(this.object.quaternion),this._lastTargetPosition.copy(this.target),this._lastIsDamping=!0,this._isDamping=!0,!0):(this._lastPosition.copy(this.object.position),this._lastQuaternion.copy(this.object.quaternion),this._lastTargetPosition.copy(this.target),this.state===IA.NONE&&(this._lastIsDamping=this._isDamping,this._isDamping=!1),this._lastIsDamping&&!this._isDamping&&this.state===IA.NONE&&(this._isDamping=!1,this._lastIsDamping=!1,this.dispatchEvent(Ug)),this._performCursorZoom=!1,!1)}_getAutoRotationAngle(n){return n!==null?te/60*this.autoRotateSpeed*n:te/60/60*this.autoRotateSpeed}_getZoomScale(n){const A=Math.abs(n*.01);return Math.pow(.95,this.zoomSpeed*A)}_rotateLeft(n){this._sphericalDelta.theta-=n}_rotateUp(n){this._sphericalDelta.phi-=n}_panLeft(n,A){TA.setFromMatrixColumn(A,0),TA.multiplyScalar(-n),this._panOffset.add(TA)}_panUp(n,A){this.screenSpacePanning===!0?TA.setFromMatrixColumn(A,1):(TA.setFromMatrixColumn(A,0),TA.crossVectors(this.object.up,TA)),TA.multiplyScalar(n),this._panOffset.add(TA)}_pan(n,A){const e=this.domElement;if(this.object.isPerspectiveCamera){this.object.getWorldPosition(TA).sub(this.target);let i=TA.length();i*=Math.tan(this.object.fov/2*Math.PI/180),this._panLeft(2*n*i/e.clientHeight,this.object.matrixWorld),this._panUp(2*A*i/e.clientHeight,this.object.matrixWorld)}else this.object.isOrthographicCamera?(this._panLeft(n*(this.object.right-this.object.left)/this.object.zoom/e.clientWidth,this.object.matrixWorld),this._panUp(A*(this.object.top-this.object.bottom)/this.object.zoom/e.clientHeight,this.object.matrixWorld)):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."),this.enablePan=!1)}_dollyOut(n){this.object.isPerspectiveCamera||this.object.isOrthographicCamera?this._scale/=n:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),this.enableZoom=!1)}_dollyIn(n){this.object.isPerspectiveCamera||this.object.isOrthographicCamera?this._scale*=n:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),this.enableZoom=!1)}_updateZoomParameters(n,A){if(!this.zoomToCursor)return;this._performCursorZoom=!0;const e=this.domElement.getBoundingClientRect(),i=n-e.left,t=A-e.top,s=e.width,o=e.height;this._mouse.x=i/s*2-1,this._mouse.y=-(t/o)*2+1,this._dollyDirection.set(this._mouse.x,this._mouse.y,1).unproject(this.object).sub(this.object.position).normalize()}_clampDistance(n){return Math.max(this.minDistance,Math.min(this.maxDistance,n))}_handleMouseDownRotate(n){this._rotateStart.set(n.clientX,n.clientY)}_handleMouseDownDolly(n){this._updateZoomParameters(n.clientX,n.clientX),this._dollyStart.set(n.clientX,n.clientY)}_handleMouseDownPan(n){this._panStart.set(n.clientX,n.clientY)}_handleMouseMoveRotate(n){this._rotateEnd.set(n.clientX,n.clientY),this._rotateDelta.subVectors(this._rotateEnd,this._rotateStart).multiplyScalar(this.rotateSpeed);const A=this.domElement;this._rotateLeft(te*this._rotateDelta.x/A.clientHeight),this._rotateUp(te*this._rotateDelta.y/A.clientHeight),this._rotateStart.copy(this._rotateEnd),this.update()}_handleMouseMoveDolly(n){this._dollyEnd.set(n.clientX,n.clientY),this._dollyDelta.subVectors(this._dollyEnd,this._dollyStart),this._dollyDelta.y>0?this._dollyOut(this._getZoomScale(this._dollyDelta.y)):this._dollyDelta.y<0&&this._dollyIn(this._getZoomScale(this._dollyDelta.y)),this._dollyStart.copy(this._dollyEnd),this.update()}_handleMouseMovePan(n){this._panEnd.set(n.clientX,n.clientY),this._panDelta.subVectors(this._panEnd,this._panStart).multiplyScalar(this.panSpeed),this._pan(this._panDelta.x,this._panDelta.y),this._panStart.copy(this._panEnd),this.update()}_handleMouseWheel(n){this._updateZoomParameters(n.clientX,n.clientY),n.deltaY<0?this._dollyIn(this._getZoomScale(n.deltaY)):n.deltaY>0&&this._dollyOut(this._getZoomScale(n.deltaY)),this.update()}_handleKeyDown(n){let A=!1;switch(n.code){case this.keys.UP:n.ctrlKey||n.metaKey||n.shiftKey?this._rotateUp(te*this.rotateSpeed/this.domElement.clientHeight):this._pan(0,this.keyPanSpeed),A=!0;break;case this.keys.BOTTOM:n.ctrlKey||n.metaKey||n.shiftKey?this._rotateUp(-te*this.rotateSpeed/this.domElement.clientHeight):this._pan(0,-this.keyPanSpeed),A=!0;break;case this.keys.LEFT:n.ctrlKey||n.metaKey||n.shiftKey?this._rotateLeft(te*this.rotateSpeed/this.domElement.clientHeight):this._pan(this.keyPanSpeed,0),A=!0;break;case this.keys.RIGHT:n.ctrlKey||n.metaKey||n.shiftKey?this._rotateLeft(-te*this.rotateSpeed/this.domElement.clientHeight):this._pan(-this.keyPanSpeed,0),A=!0;break}A&&(n.preventDefault(),this.update())}_handleTouchStartRotate(n){if(this._pointers.length===1)this._rotateStart.set(n.pageX,n.pageY);else{const A=this._getSecondPointerPosition(n),e=.5*(n.pageX+A.x),i=.5*(n.pageY+A.y);this._rotateStart.set(e,i)}}_handleTouchStartPan(n){if(this._pointers.length===1)this._panStart.set(n.pageX,n.pageY);else{const A=this._getSecondPointerPosition(n),e=.5*(n.pageX+A.x),i=.5*(n.pageY+A.y);this._panStart.set(e,i)}}_handleTouchStartDolly(n){const A=this._getSecondPointerPosition(n),e=n.pageX-A.x,i=n.pageY-A.y,t=Math.sqrt(e*e+i*i);this._dollyStart.set(0,t)}_handleTouchStartDollyPan(n){this.enableZoom&&this._handleTouchStartDolly(n),this.enablePan&&this._handleTouchStartPan(n)}_handleTouchStartDollyRotate(n){this.enableZoom&&this._handleTouchStartDolly(n),this.enableRotate&&this._handleTouchStartRotate(n)}_handleTouchMoveRotate(n){if(this._pointers.length==1)this._rotateEnd.set(n.pageX,n.pageY);else{const e=this._getSecondPointerPosition(n),i=.5*(n.pageX+e.x),t=.5*(n.pageY+e.y);this._rotateEnd.set(i,t)}this._rotateDelta.subVectors(this._rotateEnd,this._rotateStart).multiplyScalar(this.rotateSpeed);const A=this.domElement;this._rotateLeft(te*this._rotateDelta.x/A.clientHeight),this._rotateUp(te*this._rotateDelta.y/A.clientHeight),this._rotateStart.copy(this._rotateEnd)}_handleTouchMovePan(n){if(this._pointers.length===1)this._panEnd.set(n.pageX,n.pageY);else{const A=this._getSecondPointerPosition(n),e=.5*(n.pageX+A.x),i=.5*(n.pageY+A.y);this._panEnd.set(e,i)}this._panDelta.subVectors(this._panEnd,this._panStart).multiplyScalar(this.panSpeed),this._pan(this._panDelta.x,this._panDelta.y),this._panStart.copy(this._panEnd)}_handleTouchMoveDolly(n){const A=this._getSecondPointerPosition(n),e=n.pageX-A.x,i=n.pageY-A.y,t=Math.sqrt(e*e+i*i);this._dollyEnd.set(0,t),this._dollyDelta.set(0,Math.pow(this._dollyEnd.y/this._dollyStart.y,this.zoomSpeed)),this._dollyOut(this._dollyDelta.y),this._dollyStart.copy(this._dollyEnd);const s=(n.pageX+A.x)*.5,o=(n.pageY+A.y)*.5;this._updateZoomParameters(s,o)}_handleTouchMoveDollyPan(n){this.enableZoom&&this._handleTouchMoveDolly(n),this.enablePan&&this._handleTouchMovePan(n)}_handleTouchMoveDollyRotate(n){this.enableZoom&&this._handleTouchMoveDolly(n),this.enableRotate&&this._handleTouchMoveRotate(n)}_addPointer(n){this._pointers.push(n.pointerId)}_removePointer(n){delete this._pointerPositions[n.pointerId];for(let A=0;A<this._pointers.length;A++)if(this._pointers[A]==n.pointerId){this._pointers.splice(A,1);return}}_isTrackingPointer(n){for(let A=0;A<this._pointers.length;A++)if(this._pointers[A]==n.pointerId)return!0;return!1}_trackPointer(n){let A=this._pointerPositions[n.pointerId];A===void 0&&(A=new UA,this._pointerPositions[n.pointerId]=A),A.set(n.pageX,n.pageY)}_getSecondPointerPosition(n){const A=n.pointerId===this._pointers[0]?this._pointers[1]:this._pointers[0];return this._pointerPositions[A]}_customWheelEvent(n){const A=n.deltaMode,e={clientX:n.clientX,clientY:n.clientY,deltaY:n.deltaY};switch(A){case 1:e.deltaY*=16;break;case 2:e.deltaY*=100;break}return n.ctrlKey&&!this._controlActive&&(e.deltaY*=10),e}};function Hg(n){this.enabled!==!1&&(this._pointers.length===0&&(this.domElement.setPointerCapture(n.pointerId),this.domElement.addEventListener("pointermove",this._onPointerMove),window.addEventListener("pointerup",this._onPointerUp)),!this._isTrackingPointer(n)&&(this._addPointer(n),n.pointerType==="touch"?this._onTouchStart(n):this._onMouseDown(n)))}function qg(n){this.enabled!==!1&&(n.pointerType==="touch"?this._onTouchMove(n):this._onMouseMove(n))}function Og(n){switch(this._removePointer(n),this._pointers.length){case 0:this.domElement.releasePointerCapture(n.pointerId),this.domElement.removeEventListener("pointermove",this._onPointerMove),window.removeEventListener("pointerup",this._onPointerUp),this.dispatchEvent(an),this.state=IA.NONE;break;case 1:const A=this._pointers[0],e=this._pointerPositions[A];this._onTouchStart({pointerId:A,pageX:e.x,pageY:e.y});break}}function Kg(n){let A;switch(n.button){case 0:A=this.mouseButtons.LEFT;break;case 1:A=this.mouseButtons.MIDDLE;break;case 2:A=this.mouseButtons.RIGHT;break;default:A=-1}switch(A){case ot.DOLLY:if(this.enableZoom===!1)return;this._handleMouseDownDolly(n),this.state=IA.DOLLY;break;case ot.ROTATE:if(n.ctrlKey||n.metaKey||n.shiftKey){if(this.enablePan===!1)return;this._handleMouseDownPan(n),this.state=IA.PAN}else{if(this.enableRotate===!1)return;this._handleMouseDownRotate(n),this.state=IA.ROTATE}break;case ot.PAN:if(n.ctrlKey||n.metaKey||n.shiftKey){if(this.enableRotate===!1)return;this._handleMouseDownRotate(n),this.state=IA.ROTATE}else{if(this.enablePan===!1)return;this._handleMouseDownPan(n),this.state=IA.PAN}break;default:this.state=IA.NONE}this.state!==IA.NONE&&this.dispatchEvent(Is)}function Yg(n){switch(this.state){case IA.ROTATE:if(this.enableRotate===!1)return;this._handleMouseMoveRotate(n);break;case IA.DOLLY:if(this.enableZoom===!1)return;this._handleMouseMoveDolly(n);break;case IA.PAN:if(this.enablePan===!1)return;this._handleMouseMovePan(n);break}}function Jg(n){this.enabled===!1||this.enableZoom===!1||this.state!==IA.NONE||(n.preventDefault(),this.dispatchEvent(Is),this._handleMouseWheel(this._customWheelEvent(n)),this.dispatchEvent(an))}function jg(n){this.enabled===!1||this.enablePan===!1||this._handleKeyDown(n)}function zg(n){switch(this._trackPointer(n),this._pointers.length){case 1:switch(this.touches.ONE){case nt.ROTATE:if(this.enableRotate===!1)return;this._handleTouchStartRotate(n),this.state=IA.TOUCH_ROTATE;break;case nt.PAN:if(this.enablePan===!1)return;this._handleTouchStartPan(n),this.state=IA.TOUCH_PAN;break;default:this.state=IA.NONE}break;case 2:switch(this.touches.TWO){case nt.DOLLY_PAN:if(this.enableZoom===!1&&this.enablePan===!1)return;this._handleTouchStartDollyPan(n),this.state=IA.TOUCH_DOLLY_PAN;break;case nt.DOLLY_ROTATE:if(this.enableZoom===!1&&this.enableRotate===!1)return;this._handleTouchStartDollyRotate(n),this.state=IA.TOUCH_DOLLY_ROTATE;break;default:this.state=IA.NONE}break;default:this.state=IA.NONE}this.state!==IA.NONE&&this.dispatchEvent(Is)}function Vg(n){switch(this._trackPointer(n),this.state){case IA.TOUCH_ROTATE:if(this.enableRotate===!1)return;this._handleTouchMoveRotate(n),this.update();break;case IA.TOUCH_PAN:if(this.enablePan===!1)return;this._handleTouchMovePan(n),this.update();break;case IA.TOUCH_DOLLY_PAN:if(this.enableZoom===!1&&this.enablePan===!1)return;this._handleTouchMoveDollyPan(n),this.update();break;case IA.TOUCH_DOLLY_ROTATE:if(this.enableZoom===!1&&this.enableRotate===!1)return;this._handleTouchMoveDollyRotate(n),this.update();break;default:this.state=IA.NONE}}function Xg(n){this.enabled!==!1&&n.preventDefault()}function Wg(n){n.key==="Control"&&(this._controlActive=!0,this.domElement.getRootNode().addEventListener("keyup",this._interceptControlUp,{passive:!0,capture:!0}))}function Zg(n){n.key==="Control"&&(this._controlActive=!1,this.domElement.getRootNode().removeEventListener("keyup",this._interceptControlUp,{passive:!0,capture:!0}))}class $g extends Ee{constructor(A,e=1,i=16,t=2){const s=new oe,o=i+t*2,a=new Float32Array((o*3+3)*3);s.setAttribute("position",new LA(a,3));const r=new Fe({color:65280}),l=new Fe({color:16776960});super(s,[l,r]),this.audio=A,this.range=e,this.divisionsInnerAngle=i,this.divisionsOuterAngle=t,this.type="PositionalAudioHelper",this.update()}update(){const A=this.audio,e=this.range,i=this.divisionsInnerAngle,t=this.divisionsOuterAngle,s=bA.degToRad(A.panner.coneInnerAngle),o=bA.degToRad(A.panner.coneOuterAngle),a=s/2,r=o/2;let l=0,g=0,c,I;const B=this.geometry,E=B.attributes.position;B.clearGroups();function u(C,p,f,Q){const w=(p-C)/f;for(E.setXYZ(l,0,0,0),g++,c=C;c<p;c+=w)I=l+g,E.setXYZ(I,Math.sin(c)*e,0,Math.cos(c)*e),E.setXYZ(I+1,Math.sin(Math.min(c+w,p))*e,0,Math.cos(Math.min(c+w,p))*e),E.setXYZ(I+2,0,0,0),g+=3;B.addGroup(l,g,Q),l+=g,g=0}u(-r,-a,t,0),u(-a,a,i,1),u(a,r,t,0),E.needsUpdate=!0,s===o&&(this.material[0].visible=!1)}dispose(){this.geometry.dispose(),this.material[0].dispose(),this.material[1].dispose()}}const Ac={name:"HorizontalBlurShader",uniforms:{tDiffuse:{value:null},h:{value:1/512}},vertexShader:`
9
9
 
10
10
  varying vec2 vUv;
11
11
 
@@ -69,7 +69,7 @@ import{Mesh as K,SphereGeometry as Bi,Vector3 as N,MeshBasicMaterial as Qe,Trian
69
69
 
70
70
  gl_FragColor = sum;
71
71
 
72
- }`};let kt,Cs,rt,ii;function Es(n,A=1/0,e=null){Cs||(Cs=new Gi(2,2,1,1)),rt||(rt=new eo({uniforms:{blitTexture:new Sa(n)},vertexShader:`
72
+ }`};let Mt,Bs,rt,ii;function Es(n,A=1/0,e=null){Bs||(Bs=new Gi(2,2,1,1)),rt||(rt=new Ao({uniforms:{blitTexture:new Sa(n)},vertexShader:`
73
73
  varying vec2 vUv;
74
74
  void main(){
75
75
  vUv = uv;
@@ -86,7 +86,7 @@ import{Mesh as K,SphereGeometry as Bi,Vector3 as N,MeshBasicMaterial as Qe,Trian
86
86
  #else
87
87
  gl_FragColor = texture2D( blitTexture, vUv);
88
88
  #endif
89
- }`})),rt.uniforms.blitTexture.value=n,rt.defines.IS_SRGB=n.colorSpace==lA,rt.needsUpdate=!0,ii||(ii=new K(Cs,rt),ii.frustumCulled=!1);const i=new Ot,t=new Ti;t.add(ii),e===null&&(e=kt=new va({antialias:!1}));const s=Math.min(n.image.width,A),o=Math.min(n.image.height,A);e.setSize(s,o),e.clear(),e.render(t,i);const a=document.createElement("canvas"),r=a.getContext("2d");a.width=s,a.height=o,r.drawImage(e.domElement,0,0,s,o);const l=new to(a);return l.minFilter=n.minFilter,l.magFilter=n.magFilter,l.wrapS=n.wrapS,l.wrapT=n.wrapT,l.colorSpace=n.colorSpace,l.name=n.name,kt&&(kt.forceContextLoss(),kt.dispose(),kt=null),l}const gn={POSITION:["byte","byte normalized","unsigned byte","unsigned byte normalized","short","short normalized","unsigned short","unsigned short normalized"],NORMAL:["byte normalized","short normalized"],TANGENT:["byte normalized","short normalized"],TEXCOORD:["byte","byte normalized","unsigned byte","short","short normalized","unsigned short"]};class ds{constructor(){this.pluginCallbacks=[],this.register(function(A){return new lc(A)}),this.register(function(A){return new hc(A)}),this.register(function(A){return new Ec(A)}),this.register(function(A){return new dc(A)}),this.register(function(A){return new uc(A)}),this.register(function(A){return new pc(A)}),this.register(function(A){return new Ic(A)}),this.register(function(A){return new Bc(A)}),this.register(function(A){return new Cc(A)}),this.register(function(A){return new Qc(A)}),this.register(function(A){return new fc(A)}),this.register(function(A){return new mc(A)}),this.register(function(A){return new bc(A)}),this.register(function(A){return new wc(A)})}register(A){return this.pluginCallbacks.indexOf(A)===-1&&this.pluginCallbacks.push(A),this}unregister(A){return this.pluginCallbacks.indexOf(A)!==-1&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(A),1),this}parse(A,e,i,t){const s=new cc,o=[];for(let a=0,r=this.pluginCallbacks.length;a<r;a++)o.push(this.pluginCallbacks[a](s));s.setPlugins(o),s.write(A,e,t).catch(i)}parseAsync(A,e){const i=this;return new Promise(function(t,s){i.parse(A,t,s,e)})}}const aA={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,BYTE:5120,UNSIGNED_BYTE:5121,SHORT:5122,UNSIGNED_SHORT:5123,INT:5124,UNSIGNED_INT:5125,FLOAT:5126,ARRAY_BUFFER:34962,ELEMENT_ARRAY_BUFFER:34963,NEAREST:9728,LINEAR:9729,NEAREST_MIPMAP_NEAREST:9984,LINEAR_MIPMAP_NEAREST:9985,NEAREST_MIPMAP_LINEAR:9986,LINEAR_MIPMAP_LINEAR:9987,CLAMP_TO_EDGE:33071,MIRRORED_REPEAT:33648,REPEAT:10497},us="KHR_mesh_quantization",re={};re[_t]=aA.NEAREST,re[pi]=aA.NEAREST_MIPMAP_NEAREST,re[Ns]=aA.NEAREST_MIPMAP_LINEAR,re[ne]=aA.LINEAR,re[Ls]=aA.LINEAR_MIPMAP_NEAREST,re[It]=aA.LINEAR_MIPMAP_LINEAR,re[Pt]=aA.CLAMP_TO_EDGE,re[Ve]=aA.REPEAT,re[Us]=aA.MIRRORED_REPEAT;const cn={scale:"scale",position:"translation",quaternion:"rotation",morphTargetInfluences:"weights"},tc=new DA,ln=12,ic=1179937895,sc=2,hn=8,oc=1313821514,nc=5130562;function Mt(n,A){return n.length===A.length&&n.every(function(e,i){return e===A[i]})}function ac(n){return new TextEncoder().encode(n).buffer}function rc(n){return Mt(n.elements,[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1])}function gc(n,A,e){const i={min:new Array(n.itemSize).fill(Number.POSITIVE_INFINITY),max:new Array(n.itemSize).fill(Number.NEGATIVE_INFINITY)};for(let t=A;t<A+e;t++)for(let s=0;s<n.itemSize;s++){let o;n.itemSize>4?o=n.array[t*n.itemSize+s]:(s===0?o=n.getX(t):s===1?o=n.getY(t):s===2?o=n.getZ(t):s===3&&(o=n.getW(t)),n.normalized===!0&&(o=bA.normalize(o,n.array))),i.min[s]=Math.min(i.min[s],o),i.max[s]=Math.max(i.max[s],o)}return i}function In(n){return Math.ceil(n/4)*4}function ps(n,A=0){const e=In(n.byteLength);if(e!==n.byteLength){const i=new Uint8Array(e);if(i.set(new Uint8Array(n)),A!==0)for(let t=n.byteLength;t<e;t++)i[t]=A;return i.buffer}return n}function Bn(){return typeof document>"u"&&typeof OffscreenCanvas<"u"?new OffscreenCanvas(1,1):document.createElement("canvas")}function Cn(n,A){if(n.toBlob!==void 0)return new Promise(i=>n.toBlob(i,A));let e;return A==="image/jpeg"?e=.92:A==="image/webp"&&(e=.8),n.convertToBlob({type:A,quality:e})}class cc{constructor(){this.plugins=[],this.options={},this.pending=[],this.buffers=[],this.byteOffset=0,this.buffers=[],this.nodeMap=new Map,this.skins=[],this.extensionsUsed={},this.extensionsRequired={},this.uids=new Map,this.uid=0,this.json={asset:{version:"2.0",generator:"THREE.GLTFExporter r"+xa}},this.cache={meshes:new Map,attributes:new Map,attributesNormalized:new Map,materials:new Map,textures:new Map,images:new Map}}setPlugins(A){this.plugins=A}async write(A,e,i={}){this.options=Object.assign({binary:!1,trs:!1,onlyVisible:!0,maxTextureSize:1/0,animations:[],includeCustomExtensions:!1},i),this.options.animations.length>0&&(this.options.trs=!0),this.processInput(A),await Promise.all(this.pending);const t=this,s=t.buffers,o=t.json;i=t.options;const a=t.extensionsUsed,r=t.extensionsRequired,l=new Blob(s,{type:"application/octet-stream"}),g=Object.keys(a),c=Object.keys(r);if(g.length>0&&(o.extensionsUsed=g),c.length>0&&(o.extensionsRequired=c),o.buffers&&o.buffers.length>0&&(o.buffers[0].byteLength=l.size),i.binary===!0){const I=new FileReader;I.readAsArrayBuffer(l),I.onloadend=function(){const B=ps(I.result),C=new DataView(new ArrayBuffer(hn));C.setUint32(0,B.byteLength,!0),C.setUint32(4,nc,!0);const d=ps(ac(JSON.stringify(o)),32),E=new DataView(new ArrayBuffer(hn));E.setUint32(0,d.byteLength,!0),E.setUint32(4,oc,!0);const p=new ArrayBuffer(ln),f=new DataView(p);f.setUint32(0,ic,!0),f.setUint32(4,sc,!0);const Q=ln+E.byteLength+d.byteLength+C.byteLength+B.byteLength;f.setUint32(8,Q,!0);const w=new Blob([p,E,d,C,B],{type:"application/octet-stream"}),b=new FileReader;b.readAsArrayBuffer(w),b.onloadend=function(){e(b.result)}}}else if(o.buffers&&o.buffers.length>0){const I=new FileReader;I.readAsDataURL(l),I.onloadend=function(){const B=I.result;o.buffers[0].uri=B,e(o)}}else e(o)}serializeUserData(A,e){if(Object.keys(A.userData).length===0)return;const i=this.options,t=this.extensionsUsed;try{const s=JSON.parse(JSON.stringify(A.userData));if(i.includeCustomExtensions&&s.gltfExtensions){e.extensions===void 0&&(e.extensions={});for(const o in s.gltfExtensions)e.extensions[o]=s.gltfExtensions[o],t[o]=!0;delete s.gltfExtensions}Object.keys(s).length>0&&(e.extras=s)}catch(s){console.warn("THREE.GLTFExporter: userData of '"+A.name+"' won't be serialized because of JSON.stringify error - "+s.message)}}getUID(A,e=!1){if(this.uids.has(A)===!1){const i=new Map;i.set(!0,this.uid++),i.set(!1,this.uid++),this.uids.set(A,i)}return this.uids.get(A).get(e)}isNormalizedNormalAttribute(A){if(this.cache.attributesNormalized.has(A))return!1;const e=new N;for(let i=0,t=A.count;i<t;i++)if(Math.abs(e.fromBufferAttribute(A,i).length()-1)>5e-4)return!1;return!0}createNormalizedNormalAttribute(A){const e=this.cache;if(e.attributesNormalized.has(A))return e.attributesNormalized.get(A);const i=A.clone(),t=new N;for(let s=0,o=i.count;s<o;s++)t.fromBufferAttribute(i,s),t.x===0&&t.y===0&&t.z===0?t.setX(1):t.normalize(),i.setXYZ(s,t.x,t.y,t.z);return e.attributesNormalized.set(A,i),i}applyTextureTransform(A,e){let i=!1;const t={};(e.offset.x!==0||e.offset.y!==0)&&(t.offset=e.offset.toArray(),i=!0),e.rotation!==0&&(t.rotation=e.rotation,i=!0),(e.repeat.x!==1||e.repeat.y!==1)&&(t.scale=e.repeat.toArray(),i=!0),i&&(A.extensions=A.extensions||{},A.extensions.KHR_texture_transform=t,this.extensionsUsed.KHR_texture_transform=!0)}buildMetalRoughTexture(A,e){if(A===e)return A;function i(I){return I.colorSpace===lA?function(B){return B<.04045?B*.0773993808:Math.pow(B*.9478672986+.0521327014,2.4)}:function(B){return B}}console.warn("THREE.GLTFExporter: Merged metalnessMap and roughnessMap textures."),A instanceof Et&&(A=Es(A)),e instanceof Et&&(e=Es(e));const t=A?A.image:null,s=e?e.image:null,o=Math.max(t?t.width:0,s?s.width:0),a=Math.max(t?t.height:0,s?s.height:0),r=Bn();r.width=o,r.height=a;const l=r.getContext("2d",{willReadFrequently:!0});l.fillStyle="#00ffff",l.fillRect(0,0,o,a);const g=l.getImageData(0,0,o,a);if(t){l.drawImage(t,0,0,o,a);const I=i(A),B=l.getImageData(0,0,o,a).data;for(let C=2;C<B.length;C+=4)g.data[C]=I(B[C]/256)*256}if(s){l.drawImage(s,0,0,o,a);const I=i(e),B=l.getImageData(0,0,o,a).data;for(let C=1;C<B.length;C+=4)g.data[C]=I(B[C]/256)*256}l.putImageData(g,0,0);const c=(A||e).clone();return c.source=new Ra(r),c.colorSpace=Yt,c.channel=(A||e).channel,A&&e&&A.channel!==e.channel&&console.warn("THREE.GLTFExporter: UV channels for metalnessMap and roughnessMap textures must match."),c}processBuffer(A){const e=this.json,i=this.buffers;return e.buffers||(e.buffers=[{byteLength:0}]),i.push(A),0}processBufferView(A,e,i,t,s){const o=this.json;o.bufferViews||(o.bufferViews=[]);let a;switch(e){case aA.BYTE:case aA.UNSIGNED_BYTE:a=1;break;case aA.SHORT:case aA.UNSIGNED_SHORT:a=2;break;default:a=4}let r=A.itemSize*a;s===aA.ARRAY_BUFFER&&(r=Math.ceil(r/4)*4);const l=In(t*r),g=new DataView(new ArrayBuffer(l));let c=0;for(let B=i;B<i+t;B++){for(let C=0;C<A.itemSize;C++){let d;A.itemSize>4?d=A.array[B*A.itemSize+C]:(C===0?d=A.getX(B):C===1?d=A.getY(B):C===2?d=A.getZ(B):C===3&&(d=A.getW(B)),A.normalized===!0&&(d=bA.normalize(d,A.array))),e===aA.FLOAT?g.setFloat32(c,d,!0):e===aA.INT?g.setInt32(c,d,!0):e===aA.UNSIGNED_INT?g.setUint32(c,d,!0):e===aA.SHORT?g.setInt16(c,d,!0):e===aA.UNSIGNED_SHORT?g.setUint16(c,d,!0):e===aA.BYTE?g.setInt8(c,d):e===aA.UNSIGNED_BYTE&&g.setUint8(c,d),c+=a}c%r!==0&&(c+=r-c%r)}const I={buffer:this.processBuffer(g.buffer),byteOffset:this.byteOffset,byteLength:l};return s!==void 0&&(I.target=s),s===aA.ARRAY_BUFFER&&(I.byteStride=r),this.byteOffset+=l,o.bufferViews.push(I),{id:o.bufferViews.length-1,byteLength:0}}processBufferViewImage(A){const e=this,i=e.json;return i.bufferViews||(i.bufferViews=[]),new Promise(function(t){const s=new FileReader;s.readAsArrayBuffer(A),s.onloadend=function(){const o=ps(s.result),a={buffer:e.processBuffer(o),byteOffset:e.byteOffset,byteLength:o.byteLength};e.byteOffset+=o.byteLength,t(i.bufferViews.push(a)-1)}})}processAccessor(A,e,i,t){const s=this.json,o={1:"SCALAR",2:"VEC2",3:"VEC3",4:"VEC4",9:"MAT3",16:"MAT4"};let a;if(A.array.constructor===Float32Array)a=aA.FLOAT;else if(A.array.constructor===Int32Array)a=aA.INT;else if(A.array.constructor===Uint32Array)a=aA.UNSIGNED_INT;else if(A.array.constructor===Int16Array)a=aA.SHORT;else if(A.array.constructor===Uint16Array)a=aA.UNSIGNED_SHORT;else if(A.array.constructor===Int8Array)a=aA.BYTE;else if(A.array.constructor===Uint8Array)a=aA.UNSIGNED_BYTE;else throw new Error("THREE.GLTFExporter: Unsupported bufferAttribute component type: "+A.array.constructor.name);if(i===void 0&&(i=0),(t===void 0||t===1/0)&&(t=A.count),t===0)return null;const r=gc(A,i,t);let l;e!==void 0&&(l=A===e.index?aA.ELEMENT_ARRAY_BUFFER:aA.ARRAY_BUFFER);const g=this.processBufferView(A,a,i,t,l),c={bufferView:g.id,byteOffset:g.byteOffset,componentType:a,count:t,max:r.max,min:r.min,type:o[A.itemSize]};return A.normalized===!0&&(c.normalized=!0),s.accessors||(s.accessors=[]),s.accessors.push(c)-1}processImage(A,e,i,t="image/png"){if(A!==null){const s=this,o=s.cache,a=s.json,r=s.options,l=s.pending;o.images.has(A)||o.images.set(A,{});const g=o.images.get(A),c=t+":flipY/"+i.toString();if(g[c]!==void 0)return g[c];a.images||(a.images=[]);const I={mimeType:t},B=Bn();B.width=Math.min(A.width,r.maxTextureSize),B.height=Math.min(A.height,r.maxTextureSize);const C=B.getContext("2d",{willReadFrequently:!0});if(i===!0&&(C.translate(0,B.height),C.scale(1,-1)),A.data!==void 0){e!==He&&console.error("GLTFExporter: Only RGBAFormat is supported.",e),(A.width>r.maxTextureSize||A.height>r.maxTextureSize)&&console.warn("GLTFExporter: Image size is bigger than maxTextureSize",A);const E=new Uint8ClampedArray(A.height*A.width*4);for(let p=0;p<E.length;p+=4)E[p+0]=A.data[p+0],E[p+1]=A.data[p+1],E[p+2]=A.data[p+2],E[p+3]=A.data[p+3];C.putImageData(new ImageData(E,A.width,A.height),0,0)}else if(typeof HTMLImageElement<"u"&&A instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&A instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&A instanceof ImageBitmap||typeof OffscreenCanvas<"u"&&A instanceof OffscreenCanvas)C.drawImage(A,0,0,B.width,B.height);else throw new Error("THREE.GLTFExporter: Invalid image type. Use HTMLImageElement, HTMLCanvasElement, ImageBitmap or OffscreenCanvas.");r.binary===!0?l.push(Cn(B,t).then(E=>s.processBufferViewImage(E)).then(E=>{I.bufferView=E})):B.toDataURL!==void 0?I.uri=B.toDataURL(t):l.push(Cn(B,t).then(E=>new FileReader().readAsDataURL(E)).then(E=>{I.uri=E}));const d=a.images.push(I)-1;return g[c]=d,d}else throw new Error("THREE.GLTFExporter: No valid image data found. Unable to process texture.")}processSampler(A){const e=this.json;e.samplers||(e.samplers=[]);const i={magFilter:re[A.magFilter],minFilter:re[A.minFilter],wrapS:re[A.wrapS],wrapT:re[A.wrapT]};return e.samplers.push(i)-1}processTexture(A){const e=this.options,i=this.cache,t=this.json;if(i.textures.has(A))return i.textures.get(A);const s={keep:!0,newTexture:null};if(this._invokeAll(function(l){l.beforeWriteTexture&&l.beforeWriteTexture(A,s)}),s.keep===!1)return null;s.newTexture!=null&&(A=s.newTexture),t.textures||(t.textures=[]),A instanceof Et&&(A=Es(A,e.maxTextureSize));let o=A.userData.mimeType;o==="image/webp"&&(o="image/png");const a={sampler:this.processSampler(A),source:this.processImage(A.image,A.format,A.flipY,o)};A.name&&(a.name=A.name),this._invokeAll(function(l){l.writeTexture&&l.writeTexture(A,a)});const r=t.textures.push(a)-1;return i.textures.set(A,r),r}processMaterial(A){const e=this.cache,i=this.json;if(e.materials.has(A))return e.materials.get(A);if(A.isShaderMaterial)return console.warn("GLTFExporter: THREE.ShaderMaterial not supported."),null;i.materials||(i.materials=[]);const t={pbrMetallicRoughness:{}};A.isMeshStandardMaterial!==!0&&A.isMeshBasicMaterial!==!0&&console.warn("GLTFExporter: Use MeshStandardMaterial or MeshBasicMaterial for best results.");const s=A.color.toArray().concat([A.opacity]);Mt(s,[1,1,1,1])||(t.pbrMetallicRoughness.baseColorFactor=s),A.isMeshStandardMaterial?(t.pbrMetallicRoughness.metallicFactor=A.metalness,t.pbrMetallicRoughness.roughnessFactor=A.roughness):(t.pbrMetallicRoughness.metallicFactor=.5,t.pbrMetallicRoughness.roughnessFactor=.5);const o=A.metalnessMap?.image?A.metalnessMap:void 0,a=A.roughnessMap?.image?A.roughnessMap:void 0;if(o||a){const l=this.buildMetalRoughTexture(o,a),g={index:this.processTexture(l),channel:l.channel};this.applyTextureTransform(g,l),t.pbrMetallicRoughness.metallicRoughnessTexture=g}if(A.map){const l={index:this.processTexture(A.map),texCoord:A.map.channel};this.applyTextureTransform(l,A.map),t.pbrMetallicRoughness.baseColorTexture=l}if(A.emissive){const l=A.emissive;if(Math.max(l.r,l.g,l.b)>0&&(t.emissiveFactor=A.emissive.toArray()),A.emissiveMap?.image){const g={index:this.processTexture(A.emissiveMap),texCoord:A.emissiveMap.channel};this.applyTextureTransform(g,A.emissiveMap),t.emissiveTexture=g}}if(A.normalMap?.image){const l={index:this.processTexture(A.normalMap),texCoord:A.normalMap.channel};A.normalScale&&A.normalScale.x!==1&&(l.scale=A.normalScale.x),this.applyTextureTransform(l,A.normalMap),t.normalTexture=l}if(A.aoMap?.image){const l={index:this.processTexture(A.aoMap),texCoord:A.aoMap.channel};A.aoMapIntensity!==1&&(l.strength=A.aoMapIntensity),this.applyTextureTransform(l,A.aoMap),t.occlusionTexture=l}A.transparent?t.alphaMode="BLEND":A.alphaTest>0&&(t.alphaMode="MASK",t.alphaCutoff=A.alphaTest),A.side===fi&&(t.doubleSided=!0),A.name!==""&&(t.name=A.name),this.serializeUserData(A,t),this._invokeAll(function(l){l.writeMaterial&&l.writeMaterial(A,t)});const r=i.materials.push(t)-1;return e.materials.set(A,r),r}processMesh(A){const e={keep:!0};if(this._invokeAll(function(b){b.beforeWriteMesh&&b.beforeWriteMesh(A,e)}),e.keep!=!0)return null;const i=this.cache,t=this.json,s=[A.geometry.uuid];if(Array.isArray(A.material))for(let b=0,S=A.material.length;b<S;b++)s.push(A.material[b].uuid);else s.push(A.material.uuid);const o=s.join(":");if(i.meshes.has(o))return i.meshes.get(o);const a=A.geometry;let r;A.isLineSegments?r=aA.LINES:A.isLineLoop?r=aA.LINE_LOOP:A.isLine?r=aA.LINE_STRIP:A.isPoints?r=aA.POINTS:r=A.material.wireframe?aA.LINES:aA.TRIANGLES;const l={},g={},c=[],I=[],B={uv:"TEXCOORD_0",uv1:"TEXCOORD_1",uv2:"TEXCOORD_2",uv3:"TEXCOORD_3",color:"COLOR_0",skinWeight:"WEIGHTS_0",skinIndex:"JOINTS_0"},C=a.getAttribute("normal");C!==void 0&&!this.isNormalizedNormalAttribute(C)&&(console.warn("THREE.GLTFExporter: Creating normalized normal attribute from the non-normalized one."),a.setAttribute("normal",this.createNormalizedNormalAttribute(C)));let d=null;for(let b in a.attributes){if(b.slice(0,5)==="morph")continue;const S=a.attributes[b];if(b=B[b]||b.toUpperCase(),/^(POSITION|NORMAL|TANGENT|TEXCOORD_\d+|COLOR_\d+|JOINTS_\d+|WEIGHTS_\d+)$/.test(b)||(b="_"+b),i.attributes.has(this.getUID(S))){g[b]=i.attributes.get(this.getUID(S));continue}d=null;const x=S.array;b==="JOINTS_0"&&!(x instanceof Uint16Array)&&!(x instanceof Uint8Array)&&(console.warn('GLTFExporter: Attribute "skinIndex" converted to type UNSIGNED_SHORT.'),d=new LA(new Uint16Array(x),S.itemSize,S.normalized));const D=this.processAccessor(d||S,a);D!==null&&(b.startsWith("_")||this.detectMeshQuantization(b,S),g[b]=D,i.attributes.set(this.getUID(S),D))}if(C!==void 0&&a.setAttribute("normal",C),Object.keys(g).length===0)return null;if(A.morphTargetInfluences!==void 0&&A.morphTargetInfluences.length>0){const b=[],S=[],x={};if(A.morphTargetDictionary!==void 0)for(const D in A.morphTargetDictionary)x[A.morphTargetDictionary[D]]=D;for(let D=0;D<A.morphTargetInfluences.length;++D){const F={};let P=!1;for(const Y in a.morphAttributes){if(Y!=="position"&&Y!=="normal"&&Y!=="color"){P||(console.warn("GLTFExporter: Only POSITION, NORMAL and COLOR morph are supported."),P=!0);continue}const O=a.morphAttributes[Y][D],X=Y.toUpperCase()+(Y==="color"?"_0":""),_=a.attributes[Y];if(i.attributes.has(this.getUID(O,!0))){F[X]=i.attributes.get(this.getUID(O,!0));continue}const W=O.clone();if(!a.morphTargetsRelative)for(let j=0,AA=O.count;j<AA;j++)for(let Z=0;Z<O.itemSize;Z++)Z===0&&W.setX(j,O.getX(j)-_.getX(j)),Z===1&&W.setY(j,O.getY(j)-_.getY(j)),Z===2&&W.setZ(j,O.getZ(j)-_.getZ(j)),Z===3&&W.setW(j,O.getW(j)-_.getW(j));F[X]=this.processAccessor(W,a),i.attributes.set(this.getUID(_,!0),F[X])}I.push(F),b.push(A.morphTargetInfluences[D]),A.morphTargetDictionary!==void 0&&S.push(x[D])}l.weights=b,S.length>0&&(l.extras={},l.extras.targetNames=S)}const E=Array.isArray(A.material);if(E&&a.groups.length===0)return null;let p=!1;if(E&&a.index===null){const b=[];for(let S=0,x=a.attributes.position.count;S<x;S++)b[S]=S;a.setIndex(b),p=!0}const f=E?A.material:[A.material],Q=E?a.groups:[{materialIndex:0,start:void 0,count:void 0}];for(let b=0,S=Q.length;b<S;b++){const x={mode:r,attributes:g};if(this.serializeUserData(a,x),I.length>0&&(x.targets=I),a.index!==null){let F=this.getUID(a.index);(Q[b].start!==void 0||Q[b].count!==void 0)&&(F+=":"+Q[b].start+":"+Q[b].count),i.attributes.has(F)?x.indices=i.attributes.get(F):(x.indices=this.processAccessor(a.index,a,Q[b].start,Q[b].count),i.attributes.set(F,x.indices)),x.indices===null&&delete x.indices}const D=this.processMaterial(f[Q[b].materialIndex]);D!==null&&(x.material=D),c.push(x)}p===!0&&a.setIndex(null),l.primitives=c,t.meshes||(t.meshes=[]),this._invokeAll(function(b){b.writeMesh&&b.writeMesh(A,l)});const w=t.meshes.push(l)-1;return i.meshes.set(o,w),w}detectMeshQuantization(A,e){if(this.extensionsUsed[us])return;let i;switch(e.array.constructor){case Int8Array:i="byte";break;case Uint8Array:i="unsigned byte";break;case Int16Array:i="short";break;case Uint16Array:i="unsigned short";break;default:return}e.normalized&&(i+=" normalized");const t=A.split("_",1)[0];gn[t]&&gn[t].includes(i)&&(this.extensionsUsed[us]=!0,this.extensionsRequired[us]=!0)}processCamera(A){const e=this.json;e.cameras||(e.cameras=[]);const i=A.isOrthographicCamera,t={type:i?"orthographic":"perspective"};return i?t.orthographic={xmag:A.right*2,ymag:A.top*2,zfar:A.far<=0?.001:A.far,znear:A.near<0?0:A.near}:t.perspective={aspectRatio:A.aspect,yfov:bA.degToRad(A.fov),zfar:A.far<=0?.001:A.far,znear:A.near<0?0:A.near},A.name!==""&&(t.name=A.type),e.cameras.push(t)-1}processAnimation(A,e){const i=this.json,t=this.nodeMap;i.animations||(i.animations=[]),A=ds.Utils.mergeMorphTargetTracks(A.clone(),e);const s=A.tracks,o=[],a=[];for(let r=0;r<s.length;++r){const l=s[r],g=ke.parseTrackName(l.name);let c=ke.findNode(e,g.nodeName);const I=cn[g.propertyName];if(g.objectName==="bones"&&(c.isSkinnedMesh===!0?c=c.skeleton.getBoneByName(g.objectIndex):c=void 0),!c||!I){console.warn('THREE.GLTFExporter: Could not export animation track "%s".',l.name);continue}const B=1;let C=l.values.length/l.times.length;I===cn.morphTargetInfluences&&(C/=c.morphTargetInfluences.length);let d;l.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline===!0?(d="CUBICSPLINE",C/=3):l.getInterpolation()===Os?d="STEP":d="LINEAR",a.push({input:this.processAccessor(new LA(l.times,B)),output:this.processAccessor(new LA(l.values,C)),interpolation:d}),o.push({sampler:a.length-1,target:{node:t.get(c),path:I}})}return i.animations.push({name:A.name||"clip_"+i.animations.length,samplers:a,channels:o}),i.animations.length-1}processSkin(A){const e=this.json,i=this.nodeMap,t=e.nodes[i.get(A)],s=A.skeleton;if(s===void 0)return null;const o=A.skeleton.bones[0];if(o===void 0)return null;const a=[],r=new Float32Array(s.bones.length*16),l=new hA;for(let g=0;g<s.bones.length;++g)a.push(i.get(s.bones[g])),l.copy(s.boneInverses[g]),l.multiply(A.bindMatrix).toArray(r,g*16);return e.skins===void 0&&(e.skins=[]),e.skins.push({inverseBindMatrices:this.processAccessor(new LA(r,16)),joints:a,skeleton:i.get(o)}),t.skin=e.skins.length-1}processNode(A){const e={keep:!0};if(this._invokeAll(function(r){r.beforeWriteNode&&r.beforeWriteNode(A,e)}),e.keep!=!0)return null;const i=this.json,t=this.options,s=this.nodeMap;i.nodes||(i.nodes=[]);const o={};if(t.trs){const r=A.quaternion.toArray(),l=A.position.toArray(),g=A.scale.toArray();Mt(r,[0,0,0,1])||(o.rotation=r),Mt(l,[0,0,0])||(o.translation=l),Mt(g,[1,1,1])||(o.scale=g)}else A.matrixAutoUpdate&&A.updateMatrix(),rc(A.matrix)===!1&&(o.matrix=A.matrix.elements);if(A.name!==""&&(o.name=String(A.name)),this.serializeUserData(A,o),A.isMesh||A.isLine||A.isPoints){const r=this.processMesh(A);r!==null&&(o.mesh=r)}else A.isCamera&&(o.camera=this.processCamera(A));if(A.isSkinnedMesh&&this.skins.push(A),A.children.length>0){const r=[];for(let l=0,g=A.children.length;l<g;l++){const c=A.children[l];if(c.visible||t.onlyVisible===!1){const I=this.processNode(c);I!==null&&r.push(I)}}r.length>0&&(o.children=r)}this._invokeAll(function(r){r.writeNode&&r.writeNode(A,o)});const a=i.nodes.push(o)-1;return s.set(A,a),a}processScene(A){const e=this.json,i=this.options;e.scenes||(e.scenes=[],e.scene=0);const t={};A.name!==""&&(t.name=A.name),e.scenes.push(t);const s=[];for(let o=0,a=A.children.length;o<a;o++){const r=A.children[o];if(r.visible||i.onlyVisible===!1){const l=this.processNode(r);l!==null&&s.push(l)}}s.length>0&&(t.nodes=s),this.serializeUserData(A,t)}processObjects(A){const e=new Ti;e.name="AuxScene";for(let i=0;i<A.length;i++)e.children.push(A[i]);this.processScene(e)}processInput(A){const e=this.options;A=A instanceof Array?A:[A],this._invokeAll(function(t){t.beforeParse&&t.beforeParse(A)});const i=[];for(let t=0;t<A.length;t++)A[t]instanceof Ti?this.processScene(A[t]):i.push(A[t]);i.length>0&&this.processObjects(i);for(let t=0;t<this.skins.length;++t)this.processSkin(this.skins[t]);for(let t=0;t<e.animations.length;++t)this.processAnimation(e.animations[t],A[0]);this._invokeAll(function(t){t.afterParse&&t.afterParse(A)})}_invokeAll(A){for(let e=0,i=this.plugins.length;e<i;e++)A(this.plugins[e])}}class lc{constructor(A){this.writer=A,this.name="KHR_lights_punctual"}writeNode(A,e){if(!A.isLight)return;if(!A.isDirectionalLight&&!A.isPointLight&&!A.isSpotLight){console.warn("THREE.GLTFExporter: Only directional, point, and spot lights are supported.",A);return}const i=this.writer,t=i.json,s=i.extensionsUsed,o={};A.name&&(o.name=A.name),o.color=A.color.toArray(),o.intensity=A.intensity,A.isDirectionalLight?o.type="directional":A.isPointLight?(o.type="point",A.distance>0&&(o.range=A.distance)):A.isSpotLight&&(o.type="spot",A.distance>0&&(o.range=A.distance),o.spot={},o.spot.innerConeAngle=(1-A.penumbra)*A.angle,o.spot.outerConeAngle=A.angle),A.decay!==void 0&&A.decay!==2&&console.warn("THREE.GLTFExporter: Light decay may be lost. glTF is physically-based, and expects light.decay=2."),A.target&&(A.target.parent!==A||A.target.position.x!==0||A.target.position.y!==0||A.target.position.z!==-1)&&console.warn("THREE.GLTFExporter: Light direction may be lost. For best results, make light.target a child of the light with position 0,0,-1."),s[this.name]||(t.extensions=t.extensions||{},t.extensions[this.name]={lights:[]},s[this.name]=!0);const a=t.extensions[this.name].lights;a.push(o),e.extensions=e.extensions||{},e.extensions[this.name]={light:a.length-1}}}class hc{constructor(A){this.writer=A,this.name="KHR_materials_unlit"}writeMaterial(A,e){if(!A.isMeshBasicMaterial)return;const i=this.writer.extensionsUsed;e.extensions=e.extensions||{},e.extensions[this.name]={},i[this.name]=!0,e.pbrMetallicRoughness.metallicFactor=0,e.pbrMetallicRoughness.roughnessFactor=.9}}class Ic{constructor(A){this.writer=A,this.name="KHR_materials_clearcoat"}writeMaterial(A,e){if(!A.isMeshPhysicalMaterial||A.clearcoat===0)return;const i=this.writer,t=i.extensionsUsed,s={};if(s.clearcoatFactor=A.clearcoat,A.clearcoatMap){const o={index:i.processTexture(A.clearcoatMap),texCoord:A.clearcoatMap.channel};i.applyTextureTransform(o,A.clearcoatMap),s.clearcoatTexture=o}if(s.clearcoatRoughnessFactor=A.clearcoatRoughness,A.clearcoatRoughnessMap){const o={index:i.processTexture(A.clearcoatRoughnessMap),texCoord:A.clearcoatRoughnessMap.channel};i.applyTextureTransform(o,A.clearcoatRoughnessMap),s.clearcoatRoughnessTexture=o}if(A.clearcoatNormalMap){const o={index:i.processTexture(A.clearcoatNormalMap),texCoord:A.clearcoatNormalMap.channel};A.clearcoatNormalScale.x!==1&&(o.scale=A.clearcoatNormalScale.x),i.applyTextureTransform(o,A.clearcoatNormalMap),s.clearcoatNormalTexture=o}e.extensions=e.extensions||{},e.extensions[this.name]=s,t[this.name]=!0}}class Bc{constructor(A){this.writer=A,this.name="KHR_materials_dispersion"}writeMaterial(A,e){if(!A.isMeshPhysicalMaterial||A.dispersion===0)return;const i=this.writer.extensionsUsed,t={};t.dispersion=A.dispersion,e.extensions=e.extensions||{},e.extensions[this.name]=t,i[this.name]=!0}}class Cc{constructor(A){this.writer=A,this.name="KHR_materials_iridescence"}writeMaterial(A,e){if(!A.isMeshPhysicalMaterial||A.iridescence===0)return;const i=this.writer,t=i.extensionsUsed,s={};if(s.iridescenceFactor=A.iridescence,A.iridescenceMap){const o={index:i.processTexture(A.iridescenceMap),texCoord:A.iridescenceMap.channel};i.applyTextureTransform(o,A.iridescenceMap),s.iridescenceTexture=o}if(s.iridescenceIor=A.iridescenceIOR,s.iridescenceThicknessMinimum=A.iridescenceThicknessRange[0],s.iridescenceThicknessMaximum=A.iridescenceThicknessRange[1],A.iridescenceThicknessMap){const o={index:i.processTexture(A.iridescenceThicknessMap),texCoord:A.iridescenceThicknessMap.channel};i.applyTextureTransform(o,A.iridescenceThicknessMap),s.iridescenceThicknessTexture=o}e.extensions=e.extensions||{},e.extensions[this.name]=s,t[this.name]=!0}}class Ec{constructor(A){this.writer=A,this.name="KHR_materials_transmission"}writeMaterial(A,e){if(!A.isMeshPhysicalMaterial||A.transmission===0)return;const i=this.writer,t=i.extensionsUsed,s={};if(s.transmissionFactor=A.transmission,A.transmissionMap){const o={index:i.processTexture(A.transmissionMap),texCoord:A.transmissionMap.channel};i.applyTextureTransform(o,A.transmissionMap),s.transmissionTexture=o}e.extensions=e.extensions||{},e.extensions[this.name]=s,t[this.name]=!0}}class dc{constructor(A){this.writer=A,this.name="KHR_materials_volume"}writeMaterial(A,e){if(!A.isMeshPhysicalMaterial||A.transmission===0)return;const i=this.writer,t=i.extensionsUsed,s={};if(s.thicknessFactor=A.thickness,A.thicknessMap){const o={index:i.processTexture(A.thicknessMap),texCoord:A.thicknessMap.channel};i.applyTextureTransform(o,A.thicknessMap),s.thicknessTexture=o}A.attenuationDistance!==1/0&&(s.attenuationDistance=A.attenuationDistance),s.attenuationColor=A.attenuationColor.toArray(),e.extensions=e.extensions||{},e.extensions[this.name]=s,t[this.name]=!0}}class uc{constructor(A){this.writer=A,this.name="KHR_materials_ior"}writeMaterial(A,e){if(!A.isMeshPhysicalMaterial||A.ior===1.5)return;const i=this.writer.extensionsUsed,t={};t.ior=A.ior,e.extensions=e.extensions||{},e.extensions[this.name]=t,i[this.name]=!0}}class pc{constructor(A){this.writer=A,this.name="KHR_materials_specular"}writeMaterial(A,e){if(!A.isMeshPhysicalMaterial||A.specularIntensity===1&&A.specularColor.equals(tc)&&!A.specularIntensityMap&&!A.specularColorMap)return;const i=this.writer,t=i.extensionsUsed,s={};if(A.specularIntensityMap){const o={index:i.processTexture(A.specularIntensityMap),texCoord:A.specularIntensityMap.channel};i.applyTextureTransform(o,A.specularIntensityMap),s.specularTexture=o}if(A.specularColorMap){const o={index:i.processTexture(A.specularColorMap),texCoord:A.specularColorMap.channel};i.applyTextureTransform(o,A.specularColorMap),s.specularColorTexture=o}s.specularFactor=A.specularIntensity,s.specularColorFactor=A.specularColor.toArray(),e.extensions=e.extensions||{},e.extensions[this.name]=s,t[this.name]=!0}}class Qc{constructor(A){this.writer=A,this.name="KHR_materials_sheen"}writeMaterial(A,e){if(!A.isMeshPhysicalMaterial||A.sheen==0)return;const i=this.writer,t=i.extensionsUsed,s={};if(A.sheenRoughnessMap){const o={index:i.processTexture(A.sheenRoughnessMap),texCoord:A.sheenRoughnessMap.channel};i.applyTextureTransform(o,A.sheenRoughnessMap),s.sheenRoughnessTexture=o}if(A.sheenColorMap){const o={index:i.processTexture(A.sheenColorMap),texCoord:A.sheenColorMap.channel};i.applyTextureTransform(o,A.sheenColorMap),s.sheenColorTexture=o}s.sheenRoughnessFactor=A.sheenRoughness,s.sheenColorFactor=A.sheenColor.toArray(),e.extensions=e.extensions||{},e.extensions[this.name]=s,t[this.name]=!0}}class fc{constructor(A){this.writer=A,this.name="KHR_materials_anisotropy"}writeMaterial(A,e){if(!A.isMeshPhysicalMaterial||A.anisotropy==0)return;const i=this.writer,t=i.extensionsUsed,s={};if(A.anisotropyMap){const o={index:i.processTexture(A.anisotropyMap)};i.applyTextureTransform(o,A.anisotropyMap),s.anisotropyTexture=o}s.anisotropyStrength=A.anisotropy,s.anisotropyRotation=A.anisotropyRotation,e.extensions=e.extensions||{},e.extensions[this.name]=s,t[this.name]=!0}}class mc{constructor(A){this.writer=A,this.name="KHR_materials_emissive_strength"}writeMaterial(A,e){if(!A.isMeshStandardMaterial||A.emissiveIntensity===1)return;const i=this.writer.extensionsUsed,t={};t.emissiveStrength=A.emissiveIntensity,e.extensions=e.extensions||{},e.extensions[this.name]=t,i[this.name]=!0}}class bc{constructor(A){this.writer=A,this.name="EXT_materials_bump"}writeMaterial(A,e){if(!A.isMeshStandardMaterial||A.bumpScale===1&&!A.bumpMap)return;const i=this.writer,t=i.extensionsUsed,s={};if(A.bumpMap){const o={index:i.processTexture(A.bumpMap),texCoord:A.bumpMap.channel};i.applyTextureTransform(o,A.bumpMap),s.bumpTexture=o}s.bumpFactor=A.bumpScale,e.extensions=e.extensions||{},e.extensions[this.name]=s,t[this.name]=!0}}class wc{constructor(A){this.writer=A,this.name="EXT_mesh_gpu_instancing"}writeNode(A,e){if(!A.isInstancedMesh)return;const i=this.writer,t=A,s=new Float32Array(t.count*3),o=new Float32Array(t.count*4),a=new Float32Array(t.count*3),r=new hA,l=new N,g=new SA,c=new N;for(let B=0;B<t.count;B++)t.getMatrixAt(B,r),r.decompose(l,g,c),l.toArray(s,B*3),g.toArray(o,B*4),c.toArray(a,B*3);const I={TRANSLATION:i.processAccessor(new LA(s,3)),ROTATION:i.processAccessor(new LA(o,4)),SCALE:i.processAccessor(new LA(a,3))};t.instanceColor&&(I._COLOR_0=i.processAccessor(t.instanceColor)),e.extensions=e.extensions||{},e.extensions[this.name]={attributes:I},i.extensionsUsed[this.name]=!0,i.extensionsRequired[this.name]=!0}}ds.Utils={insertKeyframe:function(n,A){const e=n.getValueSize(),i=new n.TimeBufferType(n.times.length+1),t=new n.ValueBufferType(n.values.length+e),s=n.createInterpolant(new n.ValueBufferType(e));let o;if(n.times.length===0){i[0]=A;for(let a=0;a<e;a++)t[a]=0;o=0}else if(A<n.times[0]){if(Math.abs(n.times[0]-A)<.001)return 0;i[0]=A,i.set(n.times,1),t.set(s.evaluate(A),0),t.set(n.values,e),o=0}else if(A>n.times[n.times.length-1]){if(Math.abs(n.times[n.times.length-1]-A)<.001)return n.times.length-1;i[i.length-1]=A,i.set(n.times,0),t.set(n.values,0),t.set(s.evaluate(A),n.values.length),o=i.length-1}else for(let a=0;a<n.times.length;a++){if(Math.abs(n.times[a]-A)<.001)return a;if(n.times[a]<A&&n.times[a+1]>A){i.set(n.times.slice(0,a+1),0),i[a+1]=A,i.set(n.times.slice(a+1),a+2),t.set(n.values.slice(0,(a+1)*e),0),t.set(s.evaluate(A),(a+1)*e),t.set(n.values.slice((a+1)*e),(a+2)*e),o=a+1;break}}return n.times=i,n.values=t,o},mergeMorphTargetTracks:function(n,A){const e=[],i={},t=n.tracks;for(let s=0;s<t.length;++s){let o=t[s];const a=ke.parseTrackName(o.name),r=ke.findNode(A,a.nodeName);if(a.propertyName!=="morphTargetInfluences"||a.propertyIndex===void 0){e.push(o);continue}if(o.createInterpolant!==o.InterpolantFactoryMethodDiscrete&&o.createInterpolant!==o.InterpolantFactoryMethodLinear){if(o.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline)throw new Error("THREE.GLTFExporter: Cannot merge tracks with glTF CUBICSPLINE interpolation.");console.warn("THREE.GLTFExporter: Morph target interpolation mode not yet supported. Using LINEAR instead."),o=o.clone(),o.setInterpolation(bi)}const l=r.morphTargetInfluences.length,g=r.morphTargetDictionary[a.propertyIndex];if(g===void 0)throw new Error("THREE.GLTFExporter: Morph target name not found: "+a.propertyIndex);let c;if(i[r.uuid]===void 0){c=o.clone();const B=new c.ValueBufferType(l*c.times.length);for(let C=0;C<c.times.length;C++)B[C*l+g]=c.values[C];c.name=(a.nodeName||"")+".morphTargetInfluences",c.values=B,i[r.uuid]=c,e.push(c);continue}const I=o.createInterpolant(new o.ValueBufferType(1));c=i[r.uuid];for(let B=0;B<c.times.length;B++)c.values[B*l+g]=I.evaluate(c.times[B]);for(let B=0;B<o.times.length;B++){const C=this.insertKeyframe(c,o.times[B]);c.values[C*l+g]=o.values[B]}}return n.tracks=e,n}};const xA={ComponentState:Object.freeze({DEFAULT:"default",TOUCHED:"touched",PRESSED:"pressed"}),ComponentProperty:Object.freeze({BUTTON:"button",X_AXIS:"xAxis",Y_AXIS:"yAxis",STATE:"state"}),ComponentType:Object.freeze({TRIGGER:"trigger",SQUEEZE:"squeeze",TOUCHPAD:"touchpad",THUMBSTICK:"thumbstick",BUTTON:"button"}),ButtonTouchThreshold:.05,AxisTouchThreshold:.1,VisualResponseProperty:Object.freeze({TRANSFORM:"transform",VISIBILITY:"visibility"})};async function En(n){const A=await fetch(n);if(A.ok)return A.json();throw new Error(A.statusText)}async function yc(n){if(!n)throw new Error("No basePath supplied");return await En(`${n}/profilesList.json`)}async function Dc(n,A,e=null,i=!0){if(!n)throw new Error("No xrInputSource supplied");if(!A)throw new Error("No basePath supplied");const t=await yc(A);let s;if(n.profiles.some(r=>{const l=t[r];return l&&(s={profileId:r,profilePath:`${A}/${l.path}`,deprecated:!!l.deprecated}),!!s}),!s){if(!e)throw new Error("No matching profile name found");const r=t[e];if(!r)throw new Error(`No matching profile name found and default profile "${e}" missing.`);s={profileId:e,profilePath:`${A}/${r.path}`,deprecated:!!r.deprecated}}const o=await En(s.profilePath);let a;if(i){let r;if(n.handedness==="any"?r=o.layouts[Object.keys(o.layouts)[0]]:r=o.layouts[n.handedness],!r)throw new Error(`No matching handedness, ${n.handedness}, in profile ${s.profileId}`);r.assetPath&&(a=s.profilePath.replace("profile.json",r.assetPath))}return{profile:o,assetPath:a}}const Sc={xAxis:0,yAxis:0,button:0,state:xA.ComponentState.DEFAULT};function vc(n=0,A=0){let e=n,i=A;if(Math.sqrt(n*n+A*A)>1){const t=Math.atan2(A,n);e=Math.cos(t),i=Math.sin(t)}return{normalizedXAxis:e*.5+.5,normalizedYAxis:i*.5+.5}}class xc{constructor(A){this.componentProperty=A.componentProperty,this.states=A.states,this.valueNodeName=A.valueNodeName,this.valueNodeProperty=A.valueNodeProperty,this.valueNodeProperty===xA.VisualResponseProperty.TRANSFORM&&(this.minNodeName=A.minNodeName,this.maxNodeName=A.maxNodeName),this.value=0,this.updateFromComponent(Sc)}updateFromComponent({xAxis:A,yAxis:e,button:i,state:t}){const{normalizedXAxis:s,normalizedYAxis:o}=vc(A,e);switch(this.componentProperty){case xA.ComponentProperty.X_AXIS:this.value=this.states.includes(t)?s:.5;break;case xA.ComponentProperty.Y_AXIS:this.value=this.states.includes(t)?o:.5;break;case xA.ComponentProperty.BUTTON:this.value=this.states.includes(t)?i:0;break;case xA.ComponentProperty.STATE:this.valueNodeProperty===xA.VisualResponseProperty.VISIBILITY?this.value=this.states.includes(t):this.value=this.states.includes(t)?1:0;break;default:throw new Error(`Unexpected visualResponse componentProperty ${this.componentProperty}`)}}}class Rc{constructor(A,e){if(!A||!e||!e.visualResponses||!e.gamepadIndices||Object.keys(e.gamepadIndices).length===0)throw new Error("Invalid arguments supplied");this.id=A,this.type=e.type,this.rootNodeName=e.rootNodeName,this.touchPointNodeName=e.touchPointNodeName,this.visualResponses={},Object.keys(e.visualResponses).forEach(i=>{const t=new xc(e.visualResponses[i]);this.visualResponses[i]=t}),this.gamepadIndices=Object.assign({},e.gamepadIndices),this.values={state:xA.ComponentState.DEFAULT,button:this.gamepadIndices.button!==void 0?0:void 0,xAxis:this.gamepadIndices.xAxis!==void 0?0:void 0,yAxis:this.gamepadIndices.yAxis!==void 0?0:void 0}}get data(){return{id:this.id,...this.values}}updateFromGamepad(A){if(this.values.state=xA.ComponentState.DEFAULT,this.gamepadIndices.button!==void 0&&A.buttons.length>this.gamepadIndices.button){const e=A.buttons[this.gamepadIndices.button];this.values.button=e.value,this.values.button=this.values.button<0?0:this.values.button,this.values.button=this.values.button>1?1:this.values.button,e.pressed||this.values.button===1?this.values.state=xA.ComponentState.PRESSED:(e.touched||this.values.button>xA.ButtonTouchThreshold)&&(this.values.state=xA.ComponentState.TOUCHED)}this.gamepadIndices.xAxis!==void 0&&A.axes.length>this.gamepadIndices.xAxis&&(this.values.xAxis=A.axes[this.gamepadIndices.xAxis],this.values.xAxis=this.values.xAxis<-1?-1:this.values.xAxis,this.values.xAxis=this.values.xAxis>1?1:this.values.xAxis,this.values.state===xA.ComponentState.DEFAULT&&Math.abs(this.values.xAxis)>xA.AxisTouchThreshold&&(this.values.state=xA.ComponentState.TOUCHED)),this.gamepadIndices.yAxis!==void 0&&A.axes.length>this.gamepadIndices.yAxis&&(this.values.yAxis=A.axes[this.gamepadIndices.yAxis],this.values.yAxis=this.values.yAxis<-1?-1:this.values.yAxis,this.values.yAxis=this.values.yAxis>1?1:this.values.yAxis,this.values.state===xA.ComponentState.DEFAULT&&Math.abs(this.values.yAxis)>xA.AxisTouchThreshold&&(this.values.state=xA.ComponentState.TOUCHED)),Object.values(this.visualResponses).forEach(e=>{e.updateFromComponent(this.values)})}}class Fc{constructor(A,e,i){if(!A)throw new Error("No xrInputSource supplied");if(!e)throw new Error("No profile supplied");this.xrInputSource=A,this.assetUrl=i,this.id=e.profileId,this.layoutDescription=e.layouts[A.handedness],this.components={},Object.keys(this.layoutDescription.components).forEach(t=>{const s=this.layoutDescription.components[t];this.components[t]=new Rc(t,s)}),this.updateFromGamepad()}get gripSpace(){return this.xrInputSource.gripSpace}get targetRaySpace(){return this.xrInputSource.targetRaySpace}get data(){const A=[];return Object.values(this.components).forEach(e=>{A.push(e.data)}),A}updateFromGamepad(){Object.values(this.components).forEach(A=>{A.updateFromGamepad(this.xrInputSource.gamepad)})}}const kc="https://cdn.jsdelivr.net/npm/@webxr-input-profiles/assets@1.0/dist/profiles",Mc="generic-trigger";class Gc extends me{constructor(){super(),this.motionController=null,this.envMap=null}setEnvironmentMap(A){return this.envMap==A?this:(this.envMap=A,this.traverse(e=>{e.isMesh&&(e.material.envMap=this.envMap,e.material.needsUpdate=!0)}),this)}updateMatrixWorld(A){super.updateMatrixWorld(A),this.motionController&&(this.motionController.updateFromGamepad(),Object.values(this.motionController.components).forEach(e=>{Object.values(e.visualResponses).forEach(i=>{const{valueNode:t,minNode:s,maxNode:o,value:a,valueNodeProperty:r}=i;t&&(r===xA.VisualResponseProperty.VISIBILITY?t.visible=a:r===xA.VisualResponseProperty.TRANSFORM&&(t.quaternion.slerpQuaternions(s.quaternion,o.quaternion,a),t.position.lerpVectors(s.position,o.position,a)))})}))}}function Tc(n,A){Object.values(n.components).forEach(e=>{const{type:i,touchPointNodeName:t,visualResponses:s}=e;if(i===xA.ComponentType.TOUCHPAD)if(e.touchPointNode=A.getObjectByName(t),e.touchPointNode){const o=new Bi(.001),a=new Qe({color:255}),r=new K(o,a);e.touchPointNode.add(r)}else console.warn(`Could not find touch dot, ${e.touchPointNodeName}, in touchpad component ${e.id}`);Object.values(s).forEach(o=>{const{valueNodeName:a,minNodeName:r,maxNodeName:l,valueNodeProperty:g}=o;if(g===xA.VisualResponseProperty.TRANSFORM){if(o.minNode=A.getObjectByName(r),o.maxNode=A.getObjectByName(l),!o.minNode){console.warn(`Could not find ${r} in the model`);return}if(!o.maxNode){console.warn(`Could not find ${l} in the model`);return}}o.valueNode=A.getObjectByName(a),o.valueNode||console.warn(`Could not find ${a} in the model`)})})}function dn(n,A){Tc(n.motionController,A),n.envMap&&A.traverse(e=>{e.isMesh&&(e.material.envMap=n.envMap,e.material.needsUpdate=!0)}),n.layers.mask!=0&&A.traverse(e=>{e.layers.mask=n.layers.mask}),n.add(A)}class Nc{constructor(A=null,e=null){this.gltfLoader=A,this.path=kc,this._assetCache={},this.onLoad=e,this.gltfLoader||(this.gltfLoader=new _i)}setPath(A){return this.path=A,this}createControllerModel(A){const e=new Gc;let i=null;return A.addEventListener("connected",t=>{const s=t.data;s.targetRayMode!=="tracked-pointer"||!s.gamepad||s.hand||Dc(s,this.path,Mc).then(({profile:o,assetPath:a})=>{e.motionController=new Fc(s,o,a);const r=this._assetCache[e.motionController.assetUrl];if(r)i=r.scene.clone(),dn(e,i),this.onLoad&&this.onLoad(i);else{if(!this.gltfLoader)throw new Error("GLTFLoader not set.");this.gltfLoader.setPath(""),this.gltfLoader.load(e.motionController.assetUrl,l=>{this._assetCache[e.motionController.assetUrl]=l,i=l.scene.clone(),dn(e,i),this.onLoad&&this.onLoad(i)},null,()=>{throw new Error(`Asset ${e.motionController.assetUrl} missing or malformed.`)})}}).catch(o=>{console.warn(o)})}),A.addEventListener("disconnected",()=>{e.motionController=null,e.remove(i),i=null}),e}}const Lc="https://cdn.jsdelivr.net/npm/@webxr-input-profiles/assets@1.0/dist/profiles/generic-hand/";class Uc{constructor(A,e,i,t,s=null,o=null){this.controller=e,this.handModel=A,this.bones=[],s===null&&(s=new _i,s.setPath(i||Lc)),s.load(`${t}.glb`,a=>{const r=a.scene.children[0];this.handModel.add(r),r.layers.mask=this.handModel.layers.mask;const l=r.getObjectByProperty("type","SkinnedMesh");l.frustumCulled=!1,l.castShadow=!0,l.receiveShadow=!0,["wrist","thumb-metacarpal","thumb-phalanx-proximal","thumb-phalanx-distal","thumb-tip","index-finger-metacarpal","index-finger-phalanx-proximal","index-finger-phalanx-intermediate","index-finger-phalanx-distal","index-finger-tip","middle-finger-metacarpal","middle-finger-phalanx-proximal","middle-finger-phalanx-intermediate","middle-finger-phalanx-distal","middle-finger-tip","ring-finger-metacarpal","ring-finger-phalanx-proximal","ring-finger-phalanx-intermediate","ring-finger-phalanx-distal","ring-finger-tip","pinky-finger-metacarpal","pinky-finger-phalanx-proximal","pinky-finger-phalanx-intermediate","pinky-finger-phalanx-distal","pinky-finger-tip"].forEach(g=>{const c=r.getObjectByName(g);c!==void 0?c.jointName=g:console.warn(`Couldn't find ${g} in ${t} hand mesh`),this.bones.push(c)}),o&&o(r)})}updateMesh(){const A=this.controller.joints;for(let e=0;e<this.bones.length;e++){const i=this.bones[e];if(i){const t=A[i.jointName];if(t.visible){const s=t.position;i.position.copy(s),i.quaternion.copy(t.quaternion)}}}}}const un=new Kt,si=new N;class pn extends Fa{constructor(){super(),this.isLineSegmentsGeometry=!0,this.type="LineSegmentsGeometry";const A=[-1,2,0,1,2,0,-1,1,0,1,1,0,-1,0,0,1,0,0,-1,-1,0,1,-1,0],e=[-1,2,1,2,-1,1,1,1,-1,-1,1,-1,-1,-2,1,-2],i=[0,2,1,2,3,1,2,4,3,4,5,3,4,6,5,6,7,5];this.setIndex(i),this.setAttribute("position",new FA(A,3)),this.setAttribute("uv",new FA(e,2))}applyMatrix4(A){const e=this.attributes.instanceStart,i=this.attributes.instanceEnd;return e!==void 0&&(e.applyMatrix4(A),i.applyMatrix4(A),e.needsUpdate=!0),this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this}setPositions(A){let e;A instanceof Float32Array?e=A:Array.isArray(A)&&(e=new Float32Array(A));const i=new Ni(e,6,1);return this.setAttribute("instanceStart",new Pe(i,3,0)),this.setAttribute("instanceEnd",new Pe(i,3,3)),this.computeBoundingBox(),this.computeBoundingSphere(),this}setColors(A){let e;A instanceof Float32Array?e=A:Array.isArray(A)&&(e=new Float32Array(A));const i=new Ni(e,6,1);return this.setAttribute("instanceColorStart",new Pe(i,3,0)),this.setAttribute("instanceColorEnd",new Pe(i,3,3)),this}fromWireframeGeometry(A){return this.setPositions(A.attributes.position.array),this}fromEdgesGeometry(A){return this.setPositions(A.attributes.position.array),this}fromMesh(A){return this.fromWireframeGeometry(new ka(A.geometry)),this}fromLineSegments(A){const e=A.geometry;return this.setPositions(e.attributes.position.array),this}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new Kt);const A=this.attributes.instanceStart,e=this.attributes.instanceEnd;A!==void 0&&e!==void 0&&(this.boundingBox.setFromBufferAttribute(A),un.setFromBufferAttribute(e),this.boundingBox.union(un))}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new vi),this.boundingBox===null&&this.computeBoundingBox();const A=this.attributes.instanceStart,e=this.attributes.instanceEnd;if(A!==void 0&&e!==void 0){const i=this.boundingSphere.center;this.boundingBox.getCenter(i);let t=0;for(let s=0,o=A.count;s<o;s++)si.fromBufferAttribute(A,s),t=Math.max(t,i.distanceToSquared(si)),si.fromBufferAttribute(e,s),t=Math.max(t,i.distanceToSquared(si));this.boundingSphere.radius=Math.sqrt(t),isNaN(this.boundingSphere.radius)&&console.error("THREE.LineSegmentsGeometry.computeBoundingSphere(): Computed radius is NaN. The instanced position data is likely to have NaN values.",this)}}toJSON(){}applyMatrix(A){return console.warn("THREE.LineSegmentsGeometry: applyMatrix() has been renamed to applyMatrix4()."),this.applyMatrix4(A)}}zt.line={worldUnits:{value:1},linewidth:{value:1},resolution:{value:new UA(1,1)},dashOffset:{value:0},dashScale:{value:1},dashSize:{value:1},gapSize:{value:1}},be.line={uniforms:io.merge([zt.common,zt.fog,zt.line]),vertexShader:`
89
+ }`})),rt.uniforms.blitTexture.value=n,rt.defines.IS_SRGB=n.colorSpace==lA,rt.needsUpdate=!0,ii||(ii=new K(Bs,rt),ii.frustumCulled=!1);const i=new Ot,t=new Ti;t.add(ii),e===null&&(e=Mt=new va({antialias:!1}));const s=Math.min(n.image.width,A),o=Math.min(n.image.height,A);e.setSize(s,o),e.clear(),e.render(t,i);const a=document.createElement("canvas"),r=a.getContext("2d");a.width=s,a.height=o,r.drawImage(e.domElement,0,0,s,o);const l=new eo(a);return l.minFilter=n.minFilter,l.magFilter=n.magFilter,l.wrapS=n.wrapS,l.wrapT=n.wrapT,l.colorSpace=n.colorSpace,l.name=n.name,Mt&&(Mt.forceContextLoss(),Mt.dispose(),Mt=null),l}const gn={POSITION:["byte","byte normalized","unsigned byte","unsigned byte normalized","short","short normalized","unsigned short","unsigned short normalized"],NORMAL:["byte normalized","short normalized"],TANGENT:["byte normalized","short normalized"],TEXCOORD:["byte","byte normalized","unsigned byte","short","short normalized","unsigned short"]};class Cs{constructor(){this.pluginCallbacks=[],this.register(function(A){return new lc(A)}),this.register(function(A){return new hc(A)}),this.register(function(A){return new Cc(A)}),this.register(function(A){return new uc(A)}),this.register(function(A){return new dc(A)}),this.register(function(A){return new pc(A)}),this.register(function(A){return new Ic(A)}),this.register(function(A){return new Bc(A)}),this.register(function(A){return new Ec(A)}),this.register(function(A){return new Qc(A)}),this.register(function(A){return new fc(A)}),this.register(function(A){return new mc(A)}),this.register(function(A){return new bc(A)}),this.register(function(A){return new wc(A)})}register(A){return this.pluginCallbacks.indexOf(A)===-1&&this.pluginCallbacks.push(A),this}unregister(A){return this.pluginCallbacks.indexOf(A)!==-1&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(A),1),this}parse(A,e,i,t){const s=new cc,o=[];for(let a=0,r=this.pluginCallbacks.length;a<r;a++)o.push(this.pluginCallbacks[a](s));s.setPlugins(o),s.write(A,e,t).catch(i)}parseAsync(A,e){const i=this;return new Promise(function(t,s){i.parse(A,t,s,e)})}}const aA={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,BYTE:5120,UNSIGNED_BYTE:5121,SHORT:5122,UNSIGNED_SHORT:5123,INT:5124,UNSIGNED_INT:5125,FLOAT:5126,ARRAY_BUFFER:34962,ELEMENT_ARRAY_BUFFER:34963,NEAREST:9728,LINEAR:9729,NEAREST_MIPMAP_NEAREST:9984,LINEAR_MIPMAP_NEAREST:9985,NEAREST_MIPMAP_LINEAR:9986,LINEAR_MIPMAP_LINEAR:9987,CLAMP_TO_EDGE:33071,MIRRORED_REPEAT:33648,REPEAT:10497},us="KHR_mesh_quantization",re={};re[_t]=aA.NEAREST,re[pi]=aA.NEAREST_MIPMAP_NEAREST,re[Ts]=aA.NEAREST_MIPMAP_LINEAR,re[ne]=aA.LINEAR,re[Ns]=aA.LINEAR_MIPMAP_NEAREST,re[It]=aA.LINEAR_MIPMAP_LINEAR,re[Pt]=aA.CLAMP_TO_EDGE,re[Ve]=aA.REPEAT,re[Ls]=aA.MIRRORED_REPEAT;const cn={scale:"scale",position:"translation",quaternion:"rotation",morphTargetInfluences:"weights"},tc=new DA,ln=12,ic=1179937895,sc=2,hn=8,oc=1313821514,nc=5130562;function kt(n,A){return n.length===A.length&&n.every(function(e,i){return e===A[i]})}function ac(n){return new TextEncoder().encode(n).buffer}function rc(n){return kt(n.elements,[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1])}function gc(n,A,e){const i={min:new Array(n.itemSize).fill(Number.POSITIVE_INFINITY),max:new Array(n.itemSize).fill(Number.NEGATIVE_INFINITY)};for(let t=A;t<A+e;t++)for(let s=0;s<n.itemSize;s++){let o;n.itemSize>4?o=n.array[t*n.itemSize+s]:(s===0?o=n.getX(t):s===1?o=n.getY(t):s===2?o=n.getZ(t):s===3&&(o=n.getW(t)),n.normalized===!0&&(o=bA.normalize(o,n.array))),i.min[s]=Math.min(i.min[s],o),i.max[s]=Math.max(i.max[s],o)}return i}function In(n){return Math.ceil(n/4)*4}function ds(n,A=0){const e=In(n.byteLength);if(e!==n.byteLength){const i=new Uint8Array(e);if(i.set(new Uint8Array(n)),A!==0)for(let t=n.byteLength;t<e;t++)i[t]=A;return i.buffer}return n}function Bn(){return typeof document>"u"&&typeof OffscreenCanvas<"u"?new OffscreenCanvas(1,1):document.createElement("canvas")}function En(n,A){if(n.toBlob!==void 0)return new Promise(i=>n.toBlob(i,A));let e;return A==="image/jpeg"?e=.92:A==="image/webp"&&(e=.8),n.convertToBlob({type:A,quality:e})}class cc{constructor(){this.plugins=[],this.options={},this.pending=[],this.buffers=[],this.byteOffset=0,this.buffers=[],this.nodeMap=new Map,this.skins=[],this.extensionsUsed={},this.extensionsRequired={},this.uids=new Map,this.uid=0,this.json={asset:{version:"2.0",generator:"THREE.GLTFExporter r"+xa}},this.cache={meshes:new Map,attributes:new Map,attributesNormalized:new Map,materials:new Map,textures:new Map,images:new Map}}setPlugins(A){this.plugins=A}async write(A,e,i={}){this.options=Object.assign({binary:!1,trs:!1,onlyVisible:!0,maxTextureSize:1/0,animations:[],includeCustomExtensions:!1},i),this.options.animations.length>0&&(this.options.trs=!0),this.processInput(A),await Promise.all(this.pending);const t=this,s=t.buffers,o=t.json;i=t.options;const a=t.extensionsUsed,r=t.extensionsRequired,l=new Blob(s,{type:"application/octet-stream"}),g=Object.keys(a),c=Object.keys(r);if(g.length>0&&(o.extensionsUsed=g),c.length>0&&(o.extensionsRequired=c),o.buffers&&o.buffers.length>0&&(o.buffers[0].byteLength=l.size),i.binary===!0){const I=new FileReader;I.readAsArrayBuffer(l),I.onloadend=function(){const B=ds(I.result),E=new DataView(new ArrayBuffer(hn));E.setUint32(0,B.byteLength,!0),E.setUint32(4,nc,!0);const u=ds(ac(JSON.stringify(o)),32),C=new DataView(new ArrayBuffer(hn));C.setUint32(0,u.byteLength,!0),C.setUint32(4,oc,!0);const p=new ArrayBuffer(ln),f=new DataView(p);f.setUint32(0,ic,!0),f.setUint32(4,sc,!0);const Q=ln+C.byteLength+u.byteLength+E.byteLength+B.byteLength;f.setUint32(8,Q,!0);const w=new Blob([p,C,u,E,B],{type:"application/octet-stream"}),b=new FileReader;b.readAsArrayBuffer(w),b.onloadend=function(){e(b.result)}}}else if(o.buffers&&o.buffers.length>0){const I=new FileReader;I.readAsDataURL(l),I.onloadend=function(){const B=I.result;o.buffers[0].uri=B,e(o)}}else e(o)}serializeUserData(A,e){if(Object.keys(A.userData).length===0)return;const i=this.options,t=this.extensionsUsed;try{const s=JSON.parse(JSON.stringify(A.userData));if(i.includeCustomExtensions&&s.gltfExtensions){e.extensions===void 0&&(e.extensions={});for(const o in s.gltfExtensions)e.extensions[o]=s.gltfExtensions[o],t[o]=!0;delete s.gltfExtensions}Object.keys(s).length>0&&(e.extras=s)}catch(s){console.warn("THREE.GLTFExporter: userData of '"+A.name+"' won't be serialized because of JSON.stringify error - "+s.message)}}getUID(A,e=!1){if(this.uids.has(A)===!1){const i=new Map;i.set(!0,this.uid++),i.set(!1,this.uid++),this.uids.set(A,i)}return this.uids.get(A).get(e)}isNormalizedNormalAttribute(A){if(this.cache.attributesNormalized.has(A))return!1;const e=new N;for(let i=0,t=A.count;i<t;i++)if(Math.abs(e.fromBufferAttribute(A,i).length()-1)>5e-4)return!1;return!0}createNormalizedNormalAttribute(A){const e=this.cache;if(e.attributesNormalized.has(A))return e.attributesNormalized.get(A);const i=A.clone(),t=new N;for(let s=0,o=i.count;s<o;s++)t.fromBufferAttribute(i,s),t.x===0&&t.y===0&&t.z===0?t.setX(1):t.normalize(),i.setXYZ(s,t.x,t.y,t.z);return e.attributesNormalized.set(A,i),i}applyTextureTransform(A,e){let i=!1;const t={};(e.offset.x!==0||e.offset.y!==0)&&(t.offset=e.offset.toArray(),i=!0),e.rotation!==0&&(t.rotation=e.rotation,i=!0),(e.repeat.x!==1||e.repeat.y!==1)&&(t.scale=e.repeat.toArray(),i=!0),i&&(A.extensions=A.extensions||{},A.extensions.KHR_texture_transform=t,this.extensionsUsed.KHR_texture_transform=!0)}buildMetalRoughTexture(A,e){if(A===e)return A;function i(I){return I.colorSpace===lA?function(B){return B<.04045?B*.0773993808:Math.pow(B*.9478672986+.0521327014,2.4)}:function(B){return B}}console.warn("THREE.GLTFExporter: Merged metalnessMap and roughnessMap textures."),A instanceof Ct&&(A=Es(A)),e instanceof Ct&&(e=Es(e));const t=A?A.image:null,s=e?e.image:null,o=Math.max(t?t.width:0,s?s.width:0),a=Math.max(t?t.height:0,s?s.height:0),r=Bn();r.width=o,r.height=a;const l=r.getContext("2d",{willReadFrequently:!0});l.fillStyle="#00ffff",l.fillRect(0,0,o,a);const g=l.getImageData(0,0,o,a);if(t){l.drawImage(t,0,0,o,a);const I=i(A),B=l.getImageData(0,0,o,a).data;for(let E=2;E<B.length;E+=4)g.data[E]=I(B[E]/256)*256}if(s){l.drawImage(s,0,0,o,a);const I=i(e),B=l.getImageData(0,0,o,a).data;for(let E=1;E<B.length;E+=4)g.data[E]=I(B[E]/256)*256}l.putImageData(g,0,0);const c=(A||e).clone();return c.source=new Ra(r),c.colorSpace=Yt,c.channel=(A||e).channel,A&&e&&A.channel!==e.channel&&console.warn("THREE.GLTFExporter: UV channels for metalnessMap and roughnessMap textures must match."),c}processBuffer(A){const e=this.json,i=this.buffers;return e.buffers||(e.buffers=[{byteLength:0}]),i.push(A),0}processBufferView(A,e,i,t,s){const o=this.json;o.bufferViews||(o.bufferViews=[]);let a;switch(e){case aA.BYTE:case aA.UNSIGNED_BYTE:a=1;break;case aA.SHORT:case aA.UNSIGNED_SHORT:a=2;break;default:a=4}let r=A.itemSize*a;s===aA.ARRAY_BUFFER&&(r=Math.ceil(r/4)*4);const l=In(t*r),g=new DataView(new ArrayBuffer(l));let c=0;for(let B=i;B<i+t;B++){for(let E=0;E<A.itemSize;E++){let u;A.itemSize>4?u=A.array[B*A.itemSize+E]:(E===0?u=A.getX(B):E===1?u=A.getY(B):E===2?u=A.getZ(B):E===3&&(u=A.getW(B)),A.normalized===!0&&(u=bA.normalize(u,A.array))),e===aA.FLOAT?g.setFloat32(c,u,!0):e===aA.INT?g.setInt32(c,u,!0):e===aA.UNSIGNED_INT?g.setUint32(c,u,!0):e===aA.SHORT?g.setInt16(c,u,!0):e===aA.UNSIGNED_SHORT?g.setUint16(c,u,!0):e===aA.BYTE?g.setInt8(c,u):e===aA.UNSIGNED_BYTE&&g.setUint8(c,u),c+=a}c%r!==0&&(c+=r-c%r)}const I={buffer:this.processBuffer(g.buffer),byteOffset:this.byteOffset,byteLength:l};return s!==void 0&&(I.target=s),s===aA.ARRAY_BUFFER&&(I.byteStride=r),this.byteOffset+=l,o.bufferViews.push(I),{id:o.bufferViews.length-1,byteLength:0}}processBufferViewImage(A){const e=this,i=e.json;return i.bufferViews||(i.bufferViews=[]),new Promise(function(t){const s=new FileReader;s.readAsArrayBuffer(A),s.onloadend=function(){const o=ds(s.result),a={buffer:e.processBuffer(o),byteOffset:e.byteOffset,byteLength:o.byteLength};e.byteOffset+=o.byteLength,t(i.bufferViews.push(a)-1)}})}processAccessor(A,e,i,t){const s=this.json,o={1:"SCALAR",2:"VEC2",3:"VEC3",4:"VEC4",9:"MAT3",16:"MAT4"};let a;if(A.array.constructor===Float32Array)a=aA.FLOAT;else if(A.array.constructor===Int32Array)a=aA.INT;else if(A.array.constructor===Uint32Array)a=aA.UNSIGNED_INT;else if(A.array.constructor===Int16Array)a=aA.SHORT;else if(A.array.constructor===Uint16Array)a=aA.UNSIGNED_SHORT;else if(A.array.constructor===Int8Array)a=aA.BYTE;else if(A.array.constructor===Uint8Array)a=aA.UNSIGNED_BYTE;else throw new Error("THREE.GLTFExporter: Unsupported bufferAttribute component type: "+A.array.constructor.name);if(i===void 0&&(i=0),(t===void 0||t===1/0)&&(t=A.count),t===0)return null;const r=gc(A,i,t);let l;e!==void 0&&(l=A===e.index?aA.ELEMENT_ARRAY_BUFFER:aA.ARRAY_BUFFER);const g=this.processBufferView(A,a,i,t,l),c={bufferView:g.id,byteOffset:g.byteOffset,componentType:a,count:t,max:r.max,min:r.min,type:o[A.itemSize]};return A.normalized===!0&&(c.normalized=!0),s.accessors||(s.accessors=[]),s.accessors.push(c)-1}processImage(A,e,i,t="image/png"){if(A!==null){const s=this,o=s.cache,a=s.json,r=s.options,l=s.pending;o.images.has(A)||o.images.set(A,{});const g=o.images.get(A),c=t+":flipY/"+i.toString();if(g[c]!==void 0)return g[c];a.images||(a.images=[]);const I={mimeType:t},B=Bn();B.width=Math.min(A.width,r.maxTextureSize),B.height=Math.min(A.height,r.maxTextureSize);const E=B.getContext("2d",{willReadFrequently:!0});if(i===!0&&(E.translate(0,B.height),E.scale(1,-1)),A.data!==void 0){e!==He&&console.error("GLTFExporter: Only RGBAFormat is supported.",e),(A.width>r.maxTextureSize||A.height>r.maxTextureSize)&&console.warn("GLTFExporter: Image size is bigger than maxTextureSize",A);const C=new Uint8ClampedArray(A.height*A.width*4);for(let p=0;p<C.length;p+=4)C[p+0]=A.data[p+0],C[p+1]=A.data[p+1],C[p+2]=A.data[p+2],C[p+3]=A.data[p+3];E.putImageData(new ImageData(C,A.width,A.height),0,0)}else if(typeof HTMLImageElement<"u"&&A instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&A instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&A instanceof ImageBitmap||typeof OffscreenCanvas<"u"&&A instanceof OffscreenCanvas)E.drawImage(A,0,0,B.width,B.height);else throw new Error("THREE.GLTFExporter: Invalid image type. Use HTMLImageElement, HTMLCanvasElement, ImageBitmap or OffscreenCanvas.");r.binary===!0?l.push(En(B,t).then(C=>s.processBufferViewImage(C)).then(C=>{I.bufferView=C})):B.toDataURL!==void 0?I.uri=B.toDataURL(t):l.push(En(B,t).then(C=>new FileReader().readAsDataURL(C)).then(C=>{I.uri=C}));const u=a.images.push(I)-1;return g[c]=u,u}else throw new Error("THREE.GLTFExporter: No valid image data found. Unable to process texture.")}processSampler(A){const e=this.json;e.samplers||(e.samplers=[]);const i={magFilter:re[A.magFilter],minFilter:re[A.minFilter],wrapS:re[A.wrapS],wrapT:re[A.wrapT]};return e.samplers.push(i)-1}processTexture(A){const e=this.options,i=this.cache,t=this.json;if(i.textures.has(A))return i.textures.get(A);const s={keep:!0,newTexture:null};if(this._invokeAll(function(l){l.beforeWriteTexture&&l.beforeWriteTexture(A,s)}),s.keep===!1)return null;s.newTexture!=null&&(A=s.newTexture),t.textures||(t.textures=[]),A instanceof Ct&&(A=Es(A,e.maxTextureSize));let o=A.userData.mimeType;o==="image/webp"&&(o="image/png");const a={sampler:this.processSampler(A),source:this.processImage(A.image,A.format,A.flipY,o)};A.name&&(a.name=A.name),this._invokeAll(function(l){l.writeTexture&&l.writeTexture(A,a)});const r=t.textures.push(a)-1;return i.textures.set(A,r),r}processMaterial(A){const e=this.cache,i=this.json;if(e.materials.has(A))return e.materials.get(A);if(A.isShaderMaterial)return console.warn("GLTFExporter: THREE.ShaderMaterial not supported."),null;i.materials||(i.materials=[]);const t={pbrMetallicRoughness:{}};A.isMeshStandardMaterial!==!0&&A.isMeshBasicMaterial!==!0&&console.warn("GLTFExporter: Use MeshStandardMaterial or MeshBasicMaterial for best results.");const s=A.color.toArray().concat([A.opacity]);kt(s,[1,1,1,1])||(t.pbrMetallicRoughness.baseColorFactor=s),A.isMeshStandardMaterial?(t.pbrMetallicRoughness.metallicFactor=A.metalness,t.pbrMetallicRoughness.roughnessFactor=A.roughness):(t.pbrMetallicRoughness.metallicFactor=.5,t.pbrMetallicRoughness.roughnessFactor=.5);const o=A.metalnessMap?.image?A.metalnessMap:void 0,a=A.roughnessMap?.image?A.roughnessMap:void 0;if(o||a){const l=this.buildMetalRoughTexture(o,a),g={index:this.processTexture(l),channel:l.channel};this.applyTextureTransform(g,l),t.pbrMetallicRoughness.metallicRoughnessTexture=g}if(A.map){const l={index:this.processTexture(A.map),texCoord:A.map.channel};this.applyTextureTransform(l,A.map),t.pbrMetallicRoughness.baseColorTexture=l}if(A.emissive){const l=A.emissive;if(Math.max(l.r,l.g,l.b)>0&&(t.emissiveFactor=A.emissive.toArray()),A.emissiveMap?.image){const g={index:this.processTexture(A.emissiveMap),texCoord:A.emissiveMap.channel};this.applyTextureTransform(g,A.emissiveMap),t.emissiveTexture=g}}if(A.normalMap?.image){const l={index:this.processTexture(A.normalMap),texCoord:A.normalMap.channel};A.normalScale&&A.normalScale.x!==1&&(l.scale=A.normalScale.x),this.applyTextureTransform(l,A.normalMap),t.normalTexture=l}if(A.aoMap?.image){const l={index:this.processTexture(A.aoMap),texCoord:A.aoMap.channel};A.aoMapIntensity!==1&&(l.strength=A.aoMapIntensity),this.applyTextureTransform(l,A.aoMap),t.occlusionTexture=l}A.transparent?t.alphaMode="BLEND":A.alphaTest>0&&(t.alphaMode="MASK",t.alphaCutoff=A.alphaTest),A.side===fi&&(t.doubleSided=!0),A.name!==""&&(t.name=A.name),this.serializeUserData(A,t),this._invokeAll(function(l){l.writeMaterial&&l.writeMaterial(A,t)});const r=i.materials.push(t)-1;return e.materials.set(A,r),r}processMesh(A){const e={keep:!0};if(this._invokeAll(function(b){b.beforeWriteMesh&&b.beforeWriteMesh(A,e)}),e.keep!=!0)return null;const i=this.cache,t=this.json,s=[A.geometry.uuid];if(Array.isArray(A.material))for(let b=0,S=A.material.length;b<S;b++)s.push(A.material[b].uuid);else s.push(A.material.uuid);const o=s.join(":");if(i.meshes.has(o))return i.meshes.get(o);const a=A.geometry;let r;A.isLineSegments?r=aA.LINES:A.isLineLoop?r=aA.LINE_LOOP:A.isLine?r=aA.LINE_STRIP:A.isPoints?r=aA.POINTS:r=A.material.wireframe?aA.LINES:aA.TRIANGLES;const l={},g={},c=[],I=[],B={uv:"TEXCOORD_0",uv1:"TEXCOORD_1",uv2:"TEXCOORD_2",uv3:"TEXCOORD_3",color:"COLOR_0",skinWeight:"WEIGHTS_0",skinIndex:"JOINTS_0"},E=a.getAttribute("normal");E!==void 0&&!this.isNormalizedNormalAttribute(E)&&(console.warn("THREE.GLTFExporter: Creating normalized normal attribute from the non-normalized one."),a.setAttribute("normal",this.createNormalizedNormalAttribute(E)));let u=null;for(let b in a.attributes){if(b.slice(0,5)==="morph")continue;const S=a.attributes[b];if(b=B[b]||b.toUpperCase(),/^(POSITION|NORMAL|TANGENT|TEXCOORD_\d+|COLOR_\d+|JOINTS_\d+|WEIGHTS_\d+)$/.test(b)||(b="_"+b),i.attributes.has(this.getUID(S))){g[b]=i.attributes.get(this.getUID(S));continue}u=null;const x=S.array;b==="JOINTS_0"&&!(x instanceof Uint16Array)&&!(x instanceof Uint8Array)&&(console.warn('GLTFExporter: Attribute "skinIndex" converted to type UNSIGNED_SHORT.'),u=new LA(new Uint16Array(x),S.itemSize,S.normalized));const D=this.processAccessor(u||S,a);D!==null&&(b.startsWith("_")||this.detectMeshQuantization(b,S),g[b]=D,i.attributes.set(this.getUID(S),D))}if(E!==void 0&&a.setAttribute("normal",E),Object.keys(g).length===0)return null;if(A.morphTargetInfluences!==void 0&&A.morphTargetInfluences.length>0){const b=[],S=[],x={};if(A.morphTargetDictionary!==void 0)for(const D in A.morphTargetDictionary)x[A.morphTargetDictionary[D]]=D;for(let D=0;D<A.morphTargetInfluences.length;++D){const F={};let P=!1;for(const Y in a.morphAttributes){if(Y!=="position"&&Y!=="normal"&&Y!=="color"){P||(console.warn("GLTFExporter: Only POSITION, NORMAL and COLOR morph are supported."),P=!0);continue}const O=a.morphAttributes[Y][D],X=Y.toUpperCase()+(Y==="color"?"_0":""),_=a.attributes[Y];if(i.attributes.has(this.getUID(O,!0))){F[X]=i.attributes.get(this.getUID(O,!0));continue}const W=O.clone();if(!a.morphTargetsRelative)for(let j=0,AA=O.count;j<AA;j++)for(let Z=0;Z<O.itemSize;Z++)Z===0&&W.setX(j,O.getX(j)-_.getX(j)),Z===1&&W.setY(j,O.getY(j)-_.getY(j)),Z===2&&W.setZ(j,O.getZ(j)-_.getZ(j)),Z===3&&W.setW(j,O.getW(j)-_.getW(j));F[X]=this.processAccessor(W,a),i.attributes.set(this.getUID(_,!0),F[X])}I.push(F),b.push(A.morphTargetInfluences[D]),A.morphTargetDictionary!==void 0&&S.push(x[D])}l.weights=b,S.length>0&&(l.extras={},l.extras.targetNames=S)}const C=Array.isArray(A.material);if(C&&a.groups.length===0)return null;let p=!1;if(C&&a.index===null){const b=[];for(let S=0,x=a.attributes.position.count;S<x;S++)b[S]=S;a.setIndex(b),p=!0}const f=C?A.material:[A.material],Q=C?a.groups:[{materialIndex:0,start:void 0,count:void 0}];for(let b=0,S=Q.length;b<S;b++){const x={mode:r,attributes:g};if(this.serializeUserData(a,x),I.length>0&&(x.targets=I),a.index!==null){let F=this.getUID(a.index);(Q[b].start!==void 0||Q[b].count!==void 0)&&(F+=":"+Q[b].start+":"+Q[b].count),i.attributes.has(F)?x.indices=i.attributes.get(F):(x.indices=this.processAccessor(a.index,a,Q[b].start,Q[b].count),i.attributes.set(F,x.indices)),x.indices===null&&delete x.indices}const D=this.processMaterial(f[Q[b].materialIndex]);D!==null&&(x.material=D),c.push(x)}p===!0&&a.setIndex(null),l.primitives=c,t.meshes||(t.meshes=[]),this._invokeAll(function(b){b.writeMesh&&b.writeMesh(A,l)});const w=t.meshes.push(l)-1;return i.meshes.set(o,w),w}detectMeshQuantization(A,e){if(this.extensionsUsed[us])return;let i;switch(e.array.constructor){case Int8Array:i="byte";break;case Uint8Array:i="unsigned byte";break;case Int16Array:i="short";break;case Uint16Array:i="unsigned short";break;default:return}e.normalized&&(i+=" normalized");const t=A.split("_",1)[0];gn[t]&&gn[t].includes(i)&&(this.extensionsUsed[us]=!0,this.extensionsRequired[us]=!0)}processCamera(A){const e=this.json;e.cameras||(e.cameras=[]);const i=A.isOrthographicCamera,t={type:i?"orthographic":"perspective"};return i?t.orthographic={xmag:A.right*2,ymag:A.top*2,zfar:A.far<=0?.001:A.far,znear:A.near<0?0:A.near}:t.perspective={aspectRatio:A.aspect,yfov:bA.degToRad(A.fov),zfar:A.far<=0?.001:A.far,znear:A.near<0?0:A.near},A.name!==""&&(t.name=A.type),e.cameras.push(t)-1}processAnimation(A,e){const i=this.json,t=this.nodeMap;i.animations||(i.animations=[]),A=Cs.Utils.mergeMorphTargetTracks(A.clone(),e);const s=A.tracks,o=[],a=[];for(let r=0;r<s.length;++r){const l=s[r],g=Me.parseTrackName(l.name);let c=Me.findNode(e,g.nodeName);const I=cn[g.propertyName];if(g.objectName==="bones"&&(c.isSkinnedMesh===!0?c=c.skeleton.getBoneByName(g.objectIndex):c=void 0),!c||!I){console.warn('THREE.GLTFExporter: Could not export animation track "%s".',l.name);continue}const B=1;let E=l.values.length/l.times.length;I===cn.morphTargetInfluences&&(E/=c.morphTargetInfluences.length);let u;l.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline===!0?(u="CUBICSPLINE",E/=3):l.getInterpolation()===qs?u="STEP":u="LINEAR",a.push({input:this.processAccessor(new LA(l.times,B)),output:this.processAccessor(new LA(l.values,E)),interpolation:u}),o.push({sampler:a.length-1,target:{node:t.get(c),path:I}})}return i.animations.push({name:A.name||"clip_"+i.animations.length,samplers:a,channels:o}),i.animations.length-1}processSkin(A){const e=this.json,i=this.nodeMap,t=e.nodes[i.get(A)],s=A.skeleton;if(s===void 0)return null;const o=A.skeleton.bones[0];if(o===void 0)return null;const a=[],r=new Float32Array(s.bones.length*16),l=new hA;for(let g=0;g<s.bones.length;++g)a.push(i.get(s.bones[g])),l.copy(s.boneInverses[g]),l.multiply(A.bindMatrix).toArray(r,g*16);return e.skins===void 0&&(e.skins=[]),e.skins.push({inverseBindMatrices:this.processAccessor(new LA(r,16)),joints:a,skeleton:i.get(o)}),t.skin=e.skins.length-1}processNode(A){const e={keep:!0};if(this._invokeAll(function(r){r.beforeWriteNode&&r.beforeWriteNode(A,e)}),e.keep!=!0)return null;const i=this.json,t=this.options,s=this.nodeMap;i.nodes||(i.nodes=[]);const o={};if(t.trs){const r=A.quaternion.toArray(),l=A.position.toArray(),g=A.scale.toArray();kt(r,[0,0,0,1])||(o.rotation=r),kt(l,[0,0,0])||(o.translation=l),kt(g,[1,1,1])||(o.scale=g)}else A.matrixAutoUpdate&&A.updateMatrix(),rc(A.matrix)===!1&&(o.matrix=A.matrix.elements);if(A.name!==""&&(o.name=String(A.name)),this.serializeUserData(A,o),A.isMesh||A.isLine||A.isPoints){const r=this.processMesh(A);r!==null&&(o.mesh=r)}else A.isCamera&&(o.camera=this.processCamera(A));if(A.isSkinnedMesh&&this.skins.push(A),A.children.length>0){const r=[];for(let l=0,g=A.children.length;l<g;l++){const c=A.children[l];if(c.visible||t.onlyVisible===!1){const I=this.processNode(c);I!==null&&r.push(I)}}r.length>0&&(o.children=r)}this._invokeAll(function(r){r.writeNode&&r.writeNode(A,o)});const a=i.nodes.push(o)-1;return s.set(A,a),a}processScene(A){const e=this.json,i=this.options;e.scenes||(e.scenes=[],e.scene=0);const t={};A.name!==""&&(t.name=A.name),e.scenes.push(t);const s=[];for(let o=0,a=A.children.length;o<a;o++){const r=A.children[o];if(r.visible||i.onlyVisible===!1){const l=this.processNode(r);l!==null&&s.push(l)}}s.length>0&&(t.nodes=s),this.serializeUserData(A,t)}processObjects(A){const e=new Ti;e.name="AuxScene";for(let i=0;i<A.length;i++)e.children.push(A[i]);this.processScene(e)}processInput(A){const e=this.options;A=A instanceof Array?A:[A],this._invokeAll(function(t){t.beforeParse&&t.beforeParse(A)});const i=[];for(let t=0;t<A.length;t++)A[t]instanceof Ti?this.processScene(A[t]):i.push(A[t]);i.length>0&&this.processObjects(i);for(let t=0;t<this.skins.length;++t)this.processSkin(this.skins[t]);for(let t=0;t<e.animations.length;++t)this.processAnimation(e.animations[t],A[0]);this._invokeAll(function(t){t.afterParse&&t.afterParse(A)})}_invokeAll(A){for(let e=0,i=this.plugins.length;e<i;e++)A(this.plugins[e])}}class lc{constructor(A){this.writer=A,this.name="KHR_lights_punctual"}writeNode(A,e){if(!A.isLight)return;if(!A.isDirectionalLight&&!A.isPointLight&&!A.isSpotLight){console.warn("THREE.GLTFExporter: Only directional, point, and spot lights are supported.",A);return}const i=this.writer,t=i.json,s=i.extensionsUsed,o={};A.name&&(o.name=A.name),o.color=A.color.toArray(),o.intensity=A.intensity,A.isDirectionalLight?o.type="directional":A.isPointLight?(o.type="point",A.distance>0&&(o.range=A.distance)):A.isSpotLight&&(o.type="spot",A.distance>0&&(o.range=A.distance),o.spot={},o.spot.innerConeAngle=(1-A.penumbra)*A.angle,o.spot.outerConeAngle=A.angle),A.decay!==void 0&&A.decay!==2&&console.warn("THREE.GLTFExporter: Light decay may be lost. glTF is physically-based, and expects light.decay=2."),A.target&&(A.target.parent!==A||A.target.position.x!==0||A.target.position.y!==0||A.target.position.z!==-1)&&console.warn("THREE.GLTFExporter: Light direction may be lost. For best results, make light.target a child of the light with position 0,0,-1."),s[this.name]||(t.extensions=t.extensions||{},t.extensions[this.name]={lights:[]},s[this.name]=!0);const a=t.extensions[this.name].lights;a.push(o),e.extensions=e.extensions||{},e.extensions[this.name]={light:a.length-1}}}class hc{constructor(A){this.writer=A,this.name="KHR_materials_unlit"}writeMaterial(A,e){if(!A.isMeshBasicMaterial)return;const i=this.writer.extensionsUsed;e.extensions=e.extensions||{},e.extensions[this.name]={},i[this.name]=!0,e.pbrMetallicRoughness.metallicFactor=0,e.pbrMetallicRoughness.roughnessFactor=.9}}class Ic{constructor(A){this.writer=A,this.name="KHR_materials_clearcoat"}writeMaterial(A,e){if(!A.isMeshPhysicalMaterial||A.clearcoat===0)return;const i=this.writer,t=i.extensionsUsed,s={};if(s.clearcoatFactor=A.clearcoat,A.clearcoatMap){const o={index:i.processTexture(A.clearcoatMap),texCoord:A.clearcoatMap.channel};i.applyTextureTransform(o,A.clearcoatMap),s.clearcoatTexture=o}if(s.clearcoatRoughnessFactor=A.clearcoatRoughness,A.clearcoatRoughnessMap){const o={index:i.processTexture(A.clearcoatRoughnessMap),texCoord:A.clearcoatRoughnessMap.channel};i.applyTextureTransform(o,A.clearcoatRoughnessMap),s.clearcoatRoughnessTexture=o}if(A.clearcoatNormalMap){const o={index:i.processTexture(A.clearcoatNormalMap),texCoord:A.clearcoatNormalMap.channel};A.clearcoatNormalScale.x!==1&&(o.scale=A.clearcoatNormalScale.x),i.applyTextureTransform(o,A.clearcoatNormalMap),s.clearcoatNormalTexture=o}e.extensions=e.extensions||{},e.extensions[this.name]=s,t[this.name]=!0}}class Bc{constructor(A){this.writer=A,this.name="KHR_materials_dispersion"}writeMaterial(A,e){if(!A.isMeshPhysicalMaterial||A.dispersion===0)return;const i=this.writer.extensionsUsed,t={};t.dispersion=A.dispersion,e.extensions=e.extensions||{},e.extensions[this.name]=t,i[this.name]=!0}}class Ec{constructor(A){this.writer=A,this.name="KHR_materials_iridescence"}writeMaterial(A,e){if(!A.isMeshPhysicalMaterial||A.iridescence===0)return;const i=this.writer,t=i.extensionsUsed,s={};if(s.iridescenceFactor=A.iridescence,A.iridescenceMap){const o={index:i.processTexture(A.iridescenceMap),texCoord:A.iridescenceMap.channel};i.applyTextureTransform(o,A.iridescenceMap),s.iridescenceTexture=o}if(s.iridescenceIor=A.iridescenceIOR,s.iridescenceThicknessMinimum=A.iridescenceThicknessRange[0],s.iridescenceThicknessMaximum=A.iridescenceThicknessRange[1],A.iridescenceThicknessMap){const o={index:i.processTexture(A.iridescenceThicknessMap),texCoord:A.iridescenceThicknessMap.channel};i.applyTextureTransform(o,A.iridescenceThicknessMap),s.iridescenceThicknessTexture=o}e.extensions=e.extensions||{},e.extensions[this.name]=s,t[this.name]=!0}}class Cc{constructor(A){this.writer=A,this.name="KHR_materials_transmission"}writeMaterial(A,e){if(!A.isMeshPhysicalMaterial||A.transmission===0)return;const i=this.writer,t=i.extensionsUsed,s={};if(s.transmissionFactor=A.transmission,A.transmissionMap){const o={index:i.processTexture(A.transmissionMap),texCoord:A.transmissionMap.channel};i.applyTextureTransform(o,A.transmissionMap),s.transmissionTexture=o}e.extensions=e.extensions||{},e.extensions[this.name]=s,t[this.name]=!0}}class uc{constructor(A){this.writer=A,this.name="KHR_materials_volume"}writeMaterial(A,e){if(!A.isMeshPhysicalMaterial||A.transmission===0)return;const i=this.writer,t=i.extensionsUsed,s={};if(s.thicknessFactor=A.thickness,A.thicknessMap){const o={index:i.processTexture(A.thicknessMap),texCoord:A.thicknessMap.channel};i.applyTextureTransform(o,A.thicknessMap),s.thicknessTexture=o}A.attenuationDistance!==1/0&&(s.attenuationDistance=A.attenuationDistance),s.attenuationColor=A.attenuationColor.toArray(),e.extensions=e.extensions||{},e.extensions[this.name]=s,t[this.name]=!0}}class dc{constructor(A){this.writer=A,this.name="KHR_materials_ior"}writeMaterial(A,e){if(!A.isMeshPhysicalMaterial||A.ior===1.5)return;const i=this.writer.extensionsUsed,t={};t.ior=A.ior,e.extensions=e.extensions||{},e.extensions[this.name]=t,i[this.name]=!0}}class pc{constructor(A){this.writer=A,this.name="KHR_materials_specular"}writeMaterial(A,e){if(!A.isMeshPhysicalMaterial||A.specularIntensity===1&&A.specularColor.equals(tc)&&!A.specularIntensityMap&&!A.specularColorMap)return;const i=this.writer,t=i.extensionsUsed,s={};if(A.specularIntensityMap){const o={index:i.processTexture(A.specularIntensityMap),texCoord:A.specularIntensityMap.channel};i.applyTextureTransform(o,A.specularIntensityMap),s.specularTexture=o}if(A.specularColorMap){const o={index:i.processTexture(A.specularColorMap),texCoord:A.specularColorMap.channel};i.applyTextureTransform(o,A.specularColorMap),s.specularColorTexture=o}s.specularFactor=A.specularIntensity,s.specularColorFactor=A.specularColor.toArray(),e.extensions=e.extensions||{},e.extensions[this.name]=s,t[this.name]=!0}}class Qc{constructor(A){this.writer=A,this.name="KHR_materials_sheen"}writeMaterial(A,e){if(!A.isMeshPhysicalMaterial||A.sheen==0)return;const i=this.writer,t=i.extensionsUsed,s={};if(A.sheenRoughnessMap){const o={index:i.processTexture(A.sheenRoughnessMap),texCoord:A.sheenRoughnessMap.channel};i.applyTextureTransform(o,A.sheenRoughnessMap),s.sheenRoughnessTexture=o}if(A.sheenColorMap){const o={index:i.processTexture(A.sheenColorMap),texCoord:A.sheenColorMap.channel};i.applyTextureTransform(o,A.sheenColorMap),s.sheenColorTexture=o}s.sheenRoughnessFactor=A.sheenRoughness,s.sheenColorFactor=A.sheenColor.toArray(),e.extensions=e.extensions||{},e.extensions[this.name]=s,t[this.name]=!0}}class fc{constructor(A){this.writer=A,this.name="KHR_materials_anisotropy"}writeMaterial(A,e){if(!A.isMeshPhysicalMaterial||A.anisotropy==0)return;const i=this.writer,t=i.extensionsUsed,s={};if(A.anisotropyMap){const o={index:i.processTexture(A.anisotropyMap)};i.applyTextureTransform(o,A.anisotropyMap),s.anisotropyTexture=o}s.anisotropyStrength=A.anisotropy,s.anisotropyRotation=A.anisotropyRotation,e.extensions=e.extensions||{},e.extensions[this.name]=s,t[this.name]=!0}}class mc{constructor(A){this.writer=A,this.name="KHR_materials_emissive_strength"}writeMaterial(A,e){if(!A.isMeshStandardMaterial||A.emissiveIntensity===1)return;const i=this.writer.extensionsUsed,t={};t.emissiveStrength=A.emissiveIntensity,e.extensions=e.extensions||{},e.extensions[this.name]=t,i[this.name]=!0}}class bc{constructor(A){this.writer=A,this.name="EXT_materials_bump"}writeMaterial(A,e){if(!A.isMeshStandardMaterial||A.bumpScale===1&&!A.bumpMap)return;const i=this.writer,t=i.extensionsUsed,s={};if(A.bumpMap){const o={index:i.processTexture(A.bumpMap),texCoord:A.bumpMap.channel};i.applyTextureTransform(o,A.bumpMap),s.bumpTexture=o}s.bumpFactor=A.bumpScale,e.extensions=e.extensions||{},e.extensions[this.name]=s,t[this.name]=!0}}class wc{constructor(A){this.writer=A,this.name="EXT_mesh_gpu_instancing"}writeNode(A,e){if(!A.isInstancedMesh)return;const i=this.writer,t=A,s=new Float32Array(t.count*3),o=new Float32Array(t.count*4),a=new Float32Array(t.count*3),r=new hA,l=new N,g=new SA,c=new N;for(let B=0;B<t.count;B++)t.getMatrixAt(B,r),r.decompose(l,g,c),l.toArray(s,B*3),g.toArray(o,B*4),c.toArray(a,B*3);const I={TRANSLATION:i.processAccessor(new LA(s,3)),ROTATION:i.processAccessor(new LA(o,4)),SCALE:i.processAccessor(new LA(a,3))};t.instanceColor&&(I._COLOR_0=i.processAccessor(t.instanceColor)),e.extensions=e.extensions||{},e.extensions[this.name]={attributes:I},i.extensionsUsed[this.name]=!0,i.extensionsRequired[this.name]=!0}}Cs.Utils={insertKeyframe:function(n,A){const e=n.getValueSize(),i=new n.TimeBufferType(n.times.length+1),t=new n.ValueBufferType(n.values.length+e),s=n.createInterpolant(new n.ValueBufferType(e));let o;if(n.times.length===0){i[0]=A;for(let a=0;a<e;a++)t[a]=0;o=0}else if(A<n.times[0]){if(Math.abs(n.times[0]-A)<.001)return 0;i[0]=A,i.set(n.times,1),t.set(s.evaluate(A),0),t.set(n.values,e),o=0}else if(A>n.times[n.times.length-1]){if(Math.abs(n.times[n.times.length-1]-A)<.001)return n.times.length-1;i[i.length-1]=A,i.set(n.times,0),t.set(n.values,0),t.set(s.evaluate(A),n.values.length),o=i.length-1}else for(let a=0;a<n.times.length;a++){if(Math.abs(n.times[a]-A)<.001)return a;if(n.times[a]<A&&n.times[a+1]>A){i.set(n.times.slice(0,a+1),0),i[a+1]=A,i.set(n.times.slice(a+1),a+2),t.set(n.values.slice(0,(a+1)*e),0),t.set(s.evaluate(A),(a+1)*e),t.set(n.values.slice((a+1)*e),(a+2)*e),o=a+1;break}}return n.times=i,n.values=t,o},mergeMorphTargetTracks:function(n,A){const e=[],i={},t=n.tracks;for(let s=0;s<t.length;++s){let o=t[s];const a=Me.parseTrackName(o.name),r=Me.findNode(A,a.nodeName);if(a.propertyName!=="morphTargetInfluences"||a.propertyIndex===void 0){e.push(o);continue}if(o.createInterpolant!==o.InterpolantFactoryMethodDiscrete&&o.createInterpolant!==o.InterpolantFactoryMethodLinear){if(o.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline)throw new Error("THREE.GLTFExporter: Cannot merge tracks with glTF CUBICSPLINE interpolation.");console.warn("THREE.GLTFExporter: Morph target interpolation mode not yet supported. Using LINEAR instead."),o=o.clone(),o.setInterpolation(bi)}const l=r.morphTargetInfluences.length,g=r.morphTargetDictionary[a.propertyIndex];if(g===void 0)throw new Error("THREE.GLTFExporter: Morph target name not found: "+a.propertyIndex);let c;if(i[r.uuid]===void 0){c=o.clone();const B=new c.ValueBufferType(l*c.times.length);for(let E=0;E<c.times.length;E++)B[E*l+g]=c.values[E];c.name=(a.nodeName||"")+".morphTargetInfluences",c.values=B,i[r.uuid]=c,e.push(c);continue}const I=o.createInterpolant(new o.ValueBufferType(1));c=i[r.uuid];for(let B=0;B<c.times.length;B++)c.values[B*l+g]=I.evaluate(c.times[B]);for(let B=0;B<o.times.length;B++){const E=this.insertKeyframe(c,o.times[B]);c.values[E*l+g]=o.values[B]}}return n.tracks=e,n}};const xA={ComponentState:Object.freeze({DEFAULT:"default",TOUCHED:"touched",PRESSED:"pressed"}),ComponentProperty:Object.freeze({BUTTON:"button",X_AXIS:"xAxis",Y_AXIS:"yAxis",STATE:"state"}),ComponentType:Object.freeze({TRIGGER:"trigger",SQUEEZE:"squeeze",TOUCHPAD:"touchpad",THUMBSTICK:"thumbstick",BUTTON:"button"}),ButtonTouchThreshold:.05,AxisTouchThreshold:.1,VisualResponseProperty:Object.freeze({TRANSFORM:"transform",VISIBILITY:"visibility"})};async function Cn(n){const A=await fetch(n);if(A.ok)return A.json();throw new Error(A.statusText)}async function yc(n){if(!n)throw new Error("No basePath supplied");return await Cn(`${n}/profilesList.json`)}async function Dc(n,A,e=null,i=!0){if(!n)throw new Error("No xrInputSource supplied");if(!A)throw new Error("No basePath supplied");const t=await yc(A);let s;if(n.profiles.some(r=>{const l=t[r];return l&&(s={profileId:r,profilePath:`${A}/${l.path}`,deprecated:!!l.deprecated}),!!s}),!s){if(!e)throw new Error("No matching profile name found");const r=t[e];if(!r)throw new Error(`No matching profile name found and default profile "${e}" missing.`);s={profileId:e,profilePath:`${A}/${r.path}`,deprecated:!!r.deprecated}}const o=await Cn(s.profilePath);let a;if(i){let r;if(n.handedness==="any"?r=o.layouts[Object.keys(o.layouts)[0]]:r=o.layouts[n.handedness],!r)throw new Error(`No matching handedness, ${n.handedness}, in profile ${s.profileId}`);r.assetPath&&(a=s.profilePath.replace("profile.json",r.assetPath))}return{profile:o,assetPath:a}}const Sc={xAxis:0,yAxis:0,button:0,state:xA.ComponentState.DEFAULT};function vc(n=0,A=0){let e=n,i=A;if(Math.sqrt(n*n+A*A)>1){const t=Math.atan2(A,n);e=Math.cos(t),i=Math.sin(t)}return{normalizedXAxis:e*.5+.5,normalizedYAxis:i*.5+.5}}class xc{constructor(A){this.componentProperty=A.componentProperty,this.states=A.states,this.valueNodeName=A.valueNodeName,this.valueNodeProperty=A.valueNodeProperty,this.valueNodeProperty===xA.VisualResponseProperty.TRANSFORM&&(this.minNodeName=A.minNodeName,this.maxNodeName=A.maxNodeName),this.value=0,this.updateFromComponent(Sc)}updateFromComponent({xAxis:A,yAxis:e,button:i,state:t}){const{normalizedXAxis:s,normalizedYAxis:o}=vc(A,e);switch(this.componentProperty){case xA.ComponentProperty.X_AXIS:this.value=this.states.includes(t)?s:.5;break;case xA.ComponentProperty.Y_AXIS:this.value=this.states.includes(t)?o:.5;break;case xA.ComponentProperty.BUTTON:this.value=this.states.includes(t)?i:0;break;case xA.ComponentProperty.STATE:this.valueNodeProperty===xA.VisualResponseProperty.VISIBILITY?this.value=this.states.includes(t):this.value=this.states.includes(t)?1:0;break;default:throw new Error(`Unexpected visualResponse componentProperty ${this.componentProperty}`)}}}class Rc{constructor(A,e){if(!A||!e||!e.visualResponses||!e.gamepadIndices||Object.keys(e.gamepadIndices).length===0)throw new Error("Invalid arguments supplied");this.id=A,this.type=e.type,this.rootNodeName=e.rootNodeName,this.touchPointNodeName=e.touchPointNodeName,this.visualResponses={},Object.keys(e.visualResponses).forEach(i=>{const t=new xc(e.visualResponses[i]);this.visualResponses[i]=t}),this.gamepadIndices=Object.assign({},e.gamepadIndices),this.values={state:xA.ComponentState.DEFAULT,button:this.gamepadIndices.button!==void 0?0:void 0,xAxis:this.gamepadIndices.xAxis!==void 0?0:void 0,yAxis:this.gamepadIndices.yAxis!==void 0?0:void 0}}get data(){return{id:this.id,...this.values}}updateFromGamepad(A){if(this.values.state=xA.ComponentState.DEFAULT,this.gamepadIndices.button!==void 0&&A.buttons.length>this.gamepadIndices.button){const e=A.buttons[this.gamepadIndices.button];this.values.button=e.value,this.values.button=this.values.button<0?0:this.values.button,this.values.button=this.values.button>1?1:this.values.button,e.pressed||this.values.button===1?this.values.state=xA.ComponentState.PRESSED:(e.touched||this.values.button>xA.ButtonTouchThreshold)&&(this.values.state=xA.ComponentState.TOUCHED)}this.gamepadIndices.xAxis!==void 0&&A.axes.length>this.gamepadIndices.xAxis&&(this.values.xAxis=A.axes[this.gamepadIndices.xAxis],this.values.xAxis=this.values.xAxis<-1?-1:this.values.xAxis,this.values.xAxis=this.values.xAxis>1?1:this.values.xAxis,this.values.state===xA.ComponentState.DEFAULT&&Math.abs(this.values.xAxis)>xA.AxisTouchThreshold&&(this.values.state=xA.ComponentState.TOUCHED)),this.gamepadIndices.yAxis!==void 0&&A.axes.length>this.gamepadIndices.yAxis&&(this.values.yAxis=A.axes[this.gamepadIndices.yAxis],this.values.yAxis=this.values.yAxis<-1?-1:this.values.yAxis,this.values.yAxis=this.values.yAxis>1?1:this.values.yAxis,this.values.state===xA.ComponentState.DEFAULT&&Math.abs(this.values.yAxis)>xA.AxisTouchThreshold&&(this.values.state=xA.ComponentState.TOUCHED)),Object.values(this.visualResponses).forEach(e=>{e.updateFromComponent(this.values)})}}class Fc{constructor(A,e,i){if(!A)throw new Error("No xrInputSource supplied");if(!e)throw new Error("No profile supplied");this.xrInputSource=A,this.assetUrl=i,this.id=e.profileId,this.layoutDescription=e.layouts[A.handedness],this.components={},Object.keys(this.layoutDescription.components).forEach(t=>{const s=this.layoutDescription.components[t];this.components[t]=new Rc(t,s)}),this.updateFromGamepad()}get gripSpace(){return this.xrInputSource.gripSpace}get targetRaySpace(){return this.xrInputSource.targetRaySpace}get data(){const A=[];return Object.values(this.components).forEach(e=>{A.push(e.data)}),A}updateFromGamepad(){Object.values(this.components).forEach(A=>{A.updateFromGamepad(this.xrInputSource.gamepad)})}}const Mc="https://cdn.jsdelivr.net/npm/@webxr-input-profiles/assets@1.0/dist/profiles",kc="generic-trigger";class Gc extends me{constructor(){super(),this.motionController=null,this.envMap=null}setEnvironmentMap(A){return this.envMap==A?this:(this.envMap=A,this.traverse(e=>{e.isMesh&&(e.material.envMap=this.envMap,e.material.needsUpdate=!0)}),this)}updateMatrixWorld(A){super.updateMatrixWorld(A),this.motionController&&(this.motionController.updateFromGamepad(),Object.values(this.motionController.components).forEach(e=>{Object.values(e.visualResponses).forEach(i=>{const{valueNode:t,minNode:s,maxNode:o,value:a,valueNodeProperty:r}=i;t&&(r===xA.VisualResponseProperty.VISIBILITY?t.visible=a:r===xA.VisualResponseProperty.TRANSFORM&&(t.quaternion.slerpQuaternions(s.quaternion,o.quaternion,a),t.position.lerpVectors(s.position,o.position,a)))})}))}}function Tc(n,A){Object.values(n.components).forEach(e=>{const{type:i,touchPointNodeName:t,visualResponses:s}=e;if(i===xA.ComponentType.TOUCHPAD)if(e.touchPointNode=A.getObjectByName(t),e.touchPointNode){const o=new Bi(.001),a=new Qe({color:255}),r=new K(o,a);e.touchPointNode.add(r)}else console.warn(`Could not find touch dot, ${e.touchPointNodeName}, in touchpad component ${e.id}`);Object.values(s).forEach(o=>{const{valueNodeName:a,minNodeName:r,maxNodeName:l,valueNodeProperty:g}=o;if(g===xA.VisualResponseProperty.TRANSFORM){if(o.minNode=A.getObjectByName(r),o.maxNode=A.getObjectByName(l),!o.minNode){console.warn(`Could not find ${r} in the model`);return}if(!o.maxNode){console.warn(`Could not find ${l} in the model`);return}}o.valueNode=A.getObjectByName(a),o.valueNode||console.warn(`Could not find ${a} in the model`)})})}function un(n,A){Tc(n.motionController,A),n.envMap&&A.traverse(e=>{e.isMesh&&(e.material.envMap=n.envMap,e.material.needsUpdate=!0)}),n.layers.mask!=0&&A.traverse(e=>{e.layers.mask=n.layers.mask}),n.add(A)}class Nc{constructor(A=null,e=null){this.gltfLoader=A,this.path=Mc,this._assetCache={},this.onLoad=e,this.gltfLoader||(this.gltfLoader=new oo)}setPath(A){return this.path=A,this}createControllerModel(A){const e=new Gc;let i=null;return A.addEventListener("connected",t=>{const s=t.data;s.targetRayMode!=="tracked-pointer"||!s.gamepad||s.hand||Dc(s,this.path,kc).then(({profile:o,assetPath:a})=>{e.motionController=new Fc(s,o,a);const r=this._assetCache[e.motionController.assetUrl];if(r)i=r.scene.clone(),un(e,i),this.onLoad&&this.onLoad(i);else{if(!this.gltfLoader)throw new Error("GLTFLoader not set.");this.gltfLoader.setPath(""),this.gltfLoader.load(e.motionController.assetUrl,l=>{this._assetCache[e.motionController.assetUrl]=l,i=l.scene.clone(),un(e,i),this.onLoad&&this.onLoad(i)},null,()=>{throw new Error(`Asset ${e.motionController.assetUrl} missing or malformed.`)})}}).catch(o=>{console.warn(o)})}),A.addEventListener("disconnected",()=>{e.motionController=null,e.remove(i),i=null}),e}}const dn=new Kt,si=new N;class pn extends Fa{constructor(){super(),this.isLineSegmentsGeometry=!0,this.type="LineSegmentsGeometry";const A=[-1,2,0,1,2,0,-1,1,0,1,1,0,-1,0,0,1,0,0,-1,-1,0,1,-1,0],e=[-1,2,1,2,-1,1,1,1,-1,-1,1,-1,-1,-2,1,-2],i=[0,2,1,2,3,1,2,4,3,4,5,3,4,6,5,6,7,5];this.setIndex(i),this.setAttribute("position",new FA(A,3)),this.setAttribute("uv",new FA(e,2))}applyMatrix4(A){const e=this.attributes.instanceStart,i=this.attributes.instanceEnd;return e!==void 0&&(e.applyMatrix4(A),i.applyMatrix4(A),e.needsUpdate=!0),this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this}setPositions(A){let e;A instanceof Float32Array?e=A:Array.isArray(A)&&(e=new Float32Array(A));const i=new Ni(e,6,1);return this.setAttribute("instanceStart",new Pe(i,3,0)),this.setAttribute("instanceEnd",new Pe(i,3,3)),this.computeBoundingBox(),this.computeBoundingSphere(),this}setColors(A){let e;A instanceof Float32Array?e=A:Array.isArray(A)&&(e=new Float32Array(A));const i=new Ni(e,6,1);return this.setAttribute("instanceColorStart",new Pe(i,3,0)),this.setAttribute("instanceColorEnd",new Pe(i,3,3)),this}fromWireframeGeometry(A){return this.setPositions(A.attributes.position.array),this}fromEdgesGeometry(A){return this.setPositions(A.attributes.position.array),this}fromMesh(A){return this.fromWireframeGeometry(new Ma(A.geometry)),this}fromLineSegments(A){const e=A.geometry;return this.setPositions(e.attributes.position.array),this}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new Kt);const A=this.attributes.instanceStart,e=this.attributes.instanceEnd;A!==void 0&&e!==void 0&&(this.boundingBox.setFromBufferAttribute(A),dn.setFromBufferAttribute(e),this.boundingBox.union(dn))}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new vi),this.boundingBox===null&&this.computeBoundingBox();const A=this.attributes.instanceStart,e=this.attributes.instanceEnd;if(A!==void 0&&e!==void 0){const i=this.boundingSphere.center;this.boundingBox.getCenter(i);let t=0;for(let s=0,o=A.count;s<o;s++)si.fromBufferAttribute(A,s),t=Math.max(t,i.distanceToSquared(si)),si.fromBufferAttribute(e,s),t=Math.max(t,i.distanceToSquared(si));this.boundingSphere.radius=Math.sqrt(t),isNaN(this.boundingSphere.radius)&&console.error("THREE.LineSegmentsGeometry.computeBoundingSphere(): Computed radius is NaN. The instanced position data is likely to have NaN values.",this)}}toJSON(){}applyMatrix(A){return console.warn("THREE.LineSegmentsGeometry: applyMatrix() has been renamed to applyMatrix4()."),this.applyMatrix4(A)}}zt.line={worldUnits:{value:1},linewidth:{value:1},resolution:{value:new UA(1,1)},dashOffset:{value:0},dashScale:{value:1},dashSize:{value:1},gapSize:{value:1}},be.line={uniforms:to.merge([zt.common,zt.fog,zt.line]),vertexShader:`
90
90
  #include <common>
91
91
  #include <color_pars_vertex>
92
92
  #include <fog_pars_vertex>
@@ -456,9 +456,9 @@ import{Mesh as K,SphereGeometry as Bi,Vector3 as N,MeshBasicMaterial as Qe,Trian
456
456
  #include <premultiplied_alpha_fragment>
457
457
 
458
458
  }
459
- `};class Qs extends eo{constructor(A){super({type:"LineMaterial",uniforms:io.clone(be.line.uniforms),vertexShader:be.line.vertexShader,fragmentShader:be.line.fragmentShader,clipping:!0}),this.isLineMaterial=!0,this.setValues(A)}get color(){return this.uniforms.diffuse.value}set color(A){this.uniforms.diffuse.value=A}get worldUnits(){return"WORLD_UNITS"in this.defines}set worldUnits(A){A===!0?this.defines.WORLD_UNITS="":delete this.defines.WORLD_UNITS}get linewidth(){return this.uniforms.linewidth.value}set linewidth(A){this.uniforms.linewidth&&(this.uniforms.linewidth.value=A)}get dashed(){return"USE_DASH"in this.defines}set dashed(A){A===!0!==this.dashed&&(this.needsUpdate=!0),A===!0?this.defines.USE_DASH="":delete this.defines.USE_DASH}get dashScale(){return this.uniforms.dashScale.value}set dashScale(A){this.uniforms.dashScale.value=A}get dashSize(){return this.uniforms.dashSize.value}set dashSize(A){this.uniforms.dashSize.value=A}get dashOffset(){return this.uniforms.dashOffset.value}set dashOffset(A){this.uniforms.dashOffset.value=A}get gapSize(){return this.uniforms.gapSize.value}set gapSize(A){this.uniforms.gapSize.value=A}get opacity(){return this.uniforms.opacity.value}set opacity(A){this.uniforms&&(this.uniforms.opacity.value=A)}get resolution(){return this.uniforms.resolution.value}set resolution(A){this.uniforms.resolution.value.copy(A)}get alphaToCoverage(){return"USE_ALPHA_TO_COVERAGE"in this.defines}set alphaToCoverage(A){this.defines&&(A===!0!==this.alphaToCoverage&&(this.needsUpdate=!0),A===!0?this.defines.USE_ALPHA_TO_COVERAGE="":delete this.defines.USE_ALPHA_TO_COVERAGE)}}const fs=new Me,Qn=new N,fn=new N,HA=new Me,qA=new Me,De=new Me,ms=new N,bs=new hA,OA=new Ma,mn=new N,oi=new Kt,ni=new vi,Se=new Me;let ve,et;function bn(n,A,e){return Se.set(0,0,-A,1).applyMatrix4(n.projectionMatrix),Se.multiplyScalar(1/Se.w),Se.x=et/e.width,Se.y=et/e.height,Se.applyMatrix4(n.projectionMatrixInverse),Se.multiplyScalar(1/Se.w),Math.abs(Math.max(Se.x,Se.y))}function _c(n,A){const e=n.matrixWorld,i=n.geometry,t=i.attributes.instanceStart,s=i.attributes.instanceEnd,o=Math.min(i.instanceCount,t.count);for(let a=0,r=o;a<r;a++){OA.start.fromBufferAttribute(t,a),OA.end.fromBufferAttribute(s,a),OA.applyMatrix4(e);const l=new N,g=new N;ve.distanceSqToSegment(OA.start,OA.end,g,l),g.distanceTo(l)<et*.5&&A.push({point:g,pointOnLine:l,distance:ve.origin.distanceTo(g),object:n,face:null,faceIndex:a,uv:null,uv1:null})}}function Pc(n,A,e){const i=A.projectionMatrix,t=n.material.resolution,s=n.matrixWorld,o=n.geometry,a=o.attributes.instanceStart,r=o.attributes.instanceEnd,l=Math.min(o.instanceCount,a.count),g=-A.near;ve.at(1,De),De.w=1,De.applyMatrix4(A.matrixWorldInverse),De.applyMatrix4(i),De.multiplyScalar(1/De.w),De.x*=t.x/2,De.y*=t.y/2,De.z=0,ms.copy(De),bs.multiplyMatrices(A.matrixWorldInverse,s);for(let c=0,I=l;c<I;c++){if(HA.fromBufferAttribute(a,c),qA.fromBufferAttribute(r,c),HA.w=1,qA.w=1,HA.applyMatrix4(bs),qA.applyMatrix4(bs),HA.z>g&&qA.z>g)continue;if(HA.z>g){const p=HA.z-qA.z,f=(HA.z-g)/p;HA.lerp(qA,f)}else if(qA.z>g){const p=qA.z-HA.z,f=(qA.z-g)/p;qA.lerp(HA,f)}HA.applyMatrix4(i),qA.applyMatrix4(i),HA.multiplyScalar(1/HA.w),qA.multiplyScalar(1/qA.w),HA.x*=t.x/2,HA.y*=t.y/2,qA.x*=t.x/2,qA.y*=t.y/2,OA.start.copy(HA),OA.start.z=0,OA.end.copy(qA),OA.end.z=0;const B=OA.closestPointToPointParameter(ms,!0);OA.at(B,mn);const C=bA.lerp(HA.z,qA.z,B),d=C>=-1&&C<=1,E=ms.distanceTo(mn)<et*.5;if(d&&E){OA.start.fromBufferAttribute(a,c),OA.end.fromBufferAttribute(r,c),OA.start.applyMatrix4(s),OA.end.applyMatrix4(s);const p=new N,f=new N;ve.distanceSqToSegment(OA.start,OA.end,f,p),e.push({point:f,pointOnLine:p,distance:ve.origin.distanceTo(f),object:n,face:null,faceIndex:c,uv:null,uv1:null})}}}class Hc extends K{constructor(A=new pn,e=new Qs({color:Math.random()*16777215})){super(A,e),this.isLineSegments2=!0,this.type="LineSegments2"}computeLineDistances(){const A=this.geometry,e=A.attributes.instanceStart,i=A.attributes.instanceEnd,t=new Float32Array(2*e.count);for(let o=0,a=0,r=e.count;o<r;o++,a+=2)Qn.fromBufferAttribute(e,o),fn.fromBufferAttribute(i,o),t[a]=a===0?0:t[a-1],t[a+1]=t[a]+Qn.distanceTo(fn);const s=new Ni(t,2,1);return A.setAttribute("instanceDistanceStart",new Pe(s,1,0)),A.setAttribute("instanceDistanceEnd",new Pe(s,1,1)),this}raycast(A,e){const i=this.material.worldUnits,t=A.camera;t===null&&!i&&console.error('LineSegments2: "Raycaster.camera" needs to be set in order to raycast against LineSegments2 while worldUnits is set to false.');const s=A.params.Line2!==void 0&&A.params.Line2.threshold||0;ve=A.ray;const o=this.matrixWorld,a=this.geometry,r=this.material;et=r.linewidth+s,a.boundingSphere===null&&a.computeBoundingSphere(),ni.copy(a.boundingSphere).applyMatrix4(o);let l;if(i)l=et*.5;else{const c=Math.max(t.near,ni.distanceToPoint(ve.origin));l=bn(t,c,r.resolution)}if(ni.radius+=l,ve.intersectsSphere(ni)===!1)return;a.boundingBox===null&&a.computeBoundingBox(),oi.copy(a.boundingBox).applyMatrix4(o);let g;if(i)g=et*.5;else{const c=Math.max(t.near,oi.distanceToPoint(ve.origin));g=bn(t,c,r.resolution)}oi.expandByScalar(g),ve.intersectsBox(oi)!==!1&&(i?_c(this,e):Pc(this,t,e))}onBeforeRender(A){const e=this.material.uniforms;e&&e.resolution&&(A.getViewport(fs),this.material.uniforms.resolution.value.set(fs.z,fs.w))}}class wn extends pn{constructor(){super(),this.isLineGeometry=!0,this.type="LineGeometry"}setPositions(A){const e=A.length-3,i=new Float32Array(2*e);for(let t=0;t<e;t+=3)i[2*t]=A[t],i[2*t+1]=A[t+1],i[2*t+2]=A[t+2],i[2*t+3]=A[t+3],i[2*t+4]=A[t+4],i[2*t+5]=A[t+5];return super.setPositions(i),this}setColors(A){const e=A.length-3,i=new Float32Array(2*e);for(let t=0;t<e;t+=3)i[2*t]=A[t],i[2*t+1]=A[t+1],i[2*t+2]=A[t+2],i[2*t+3]=A[t+3],i[2*t+4]=A[t+4],i[2*t+5]=A[t+5];return super.setColors(i),this}fromLine(A){const e=A.geometry;return this.setPositions(e.attributes.position.array),this}}class qc extends Hc{constructor(A=new wn,e=new Qs({color:Math.random()*16777215})){super(A,e),this.isLine2=!0,this.type="Line2"}}class Oc extends K{constructor(A){const e=new Kc(A),i=new Gi(e.image.width*.001,e.image.height*.001),t=new Qe({map:e,toneMapped:!1,transparent:!0});super(i,t);function s(o){t.map.dispatchDOMEvent(o)}this.addEventListener("mousedown",s),this.addEventListener("mousemove",s),this.addEventListener("mouseup",s),this.addEventListener("click",s),this.dispose=function(){i.dispose(),t.dispose(),t.map.dispose(),ws.delete(A),this.removeEventListener("mousedown",s),this.removeEventListener("mousemove",s),this.removeEventListener("mouseup",s),this.removeEventListener("click",s)}}}class Kc extends to{constructor(A){super(yn(A)),this.dom=A,this.anisotropy=16,this.colorSpace=lA,this.minFilter=ne,this.magFilter=ne;const e=new MutationObserver(()=>{this.scheduleUpdate||(this.scheduleUpdate=setTimeout(()=>this.update(),16))}),i={attributes:!0,childList:!0,subtree:!0,characterData:!0};e.observe(A,i),this.observer=e}dispatchDOMEvent(A){A.data&&Yc(this.dom,A.type,A.data.x,A.data.y)}update(){this.image=yn(this.dom),this.needsUpdate=!0,this.scheduleUpdate=null}dispose(){this.observer&&this.observer.disconnect(),this.scheduleUpdate=clearTimeout(this.scheduleUpdate),super.dispose()}}const ws=new WeakMap;function yn(n){const A=document.createRange(),e=new DA;function i(I){const B=[];let C=!1;function d(){if(C&&(C=!1,I.restore()),B.length===0)return;let E=-1/0,p=-1/0,f=1/0,Q=1/0;for(let w=0;w<B.length;w++){const b=B[w];E=Math.max(E,b.x),p=Math.max(p,b.y),f=Math.min(f,b.x+b.width),Q=Math.min(Q,b.y+b.height)}I.save(),I.beginPath(),I.rect(E,p,f-E,Q-p),I.clip(),C=!0}return{add:function(E){B.push(E),d()},remove:function(){B.pop(),d()}}}function t(I,B,C,d){d!==""&&(I.textTransform==="uppercase"&&(d=d.toUpperCase()),g.font=I.fontWeight+" "+I.fontSize+" "+I.fontFamily,g.textBaseline="top",g.fillStyle=I.color,g.fillText(d,B,C+parseFloat(I.fontSize)*.1))}function s(I,B,C,d,E){C<2*E&&(E=C/2),d<2*E&&(E=d/2),g.beginPath(),g.moveTo(I+E,B),g.arcTo(I+C,B,I+C,B+d,E),g.arcTo(I+C,B+d,I,B+d,E),g.arcTo(I,B+d,I,B,E),g.arcTo(I,B,I+C,B,E),g.closePath()}function o(I,B,C,d,E,p){const f=I[B+"Width"],Q=I[B+"Style"],w=I[B+"Color"];f!=="0px"&&Q!=="none"&&w!=="transparent"&&w!=="rgba(0, 0, 0, 0)"&&(g.strokeStyle=w,g.lineWidth=parseFloat(f),g.beginPath(),g.moveTo(C,d),g.lineTo(C+E,d+p),g.stroke())}function a(I,B){if(I.nodeType===Node.COMMENT_NODE||I.nodeName==="SCRIPT"||I.style&&I.style.display==="none")return;let C=0,d=0,E=0,p=0;if(I.nodeType===Node.TEXT_NODE){A.selectNode(I);const Q=A.getBoundingClientRect();C=Q.left-r.left-.5,d=Q.top-r.top-.5,E=Q.width,p=Q.height,t(B,C,d,I.nodeValue.trim())}else if(I instanceof HTMLCanvasElement){const Q=I.getBoundingClientRect();C=Q.left-r.left-.5,d=Q.top-r.top-.5,g.save();const w=window.devicePixelRatio;g.scale(1/w,1/w),g.drawImage(I,C,d),g.restore()}else if(I instanceof HTMLImageElement){const Q=I.getBoundingClientRect();C=Q.left-r.left-.5,d=Q.top-r.top-.5,E=Q.width,p=Q.height,g.drawImage(I,C,d,E,p)}else{const Q=I.getBoundingClientRect();C=Q.left-r.left-.5,d=Q.top-r.top-.5,E=Q.width,p=Q.height,B=window.getComputedStyle(I),s(C,d,E,p,parseFloat(B.borderRadius));const w=B.backgroundColor;w!=="transparent"&&w!=="rgba(0, 0, 0, 0)"&&(g.fillStyle=w,g.fill());const b=["borderTop","borderLeft","borderBottom","borderRight"];let S=!0,x=null;for(const D of b){if(x!==null&&(S=B[D+"Width"]===B[x+"Width"]&&B[D+"Color"]===B[x+"Color"]&&B[D+"Style"]===B[x+"Style"]),S===!1)break;x=D}if(S===!0){const D=parseFloat(B.borderTopWidth);B.borderTopWidth!=="0px"&&B.borderTopStyle!=="none"&&B.borderTopColor!=="transparent"&&B.borderTopColor!=="rgba(0, 0, 0, 0)"&&(g.strokeStyle=B.borderTopColor,g.lineWidth=D,g.stroke())}else o(B,"borderTop",C,d,E,0),o(B,"borderLeft",C,d,0,p),o(B,"borderBottom",C,d+p,E,0),o(B,"borderRight",C+E,d,0,p);if(I instanceof HTMLInputElement){let D=B.accentColor;(D===void 0||D==="auto")&&(D=B.color),e.set(D);const F=Math.sqrt(.299*e.r**2+.587*e.g**2+.114*e.b**2)<.5?"white":"#111111";if(I.type==="radio"&&(s(C,d,E,p,p),g.fillStyle="white",g.strokeStyle=D,g.lineWidth=1,g.fill(),g.stroke(),I.checked&&(s(C+2,d+2,E-4,p-4,p),g.fillStyle=D,g.strokeStyle=F,g.lineWidth=2,g.fill(),g.stroke())),I.type==="checkbox"&&(s(C,d,E,p,2),g.fillStyle=I.checked?D:"white",g.strokeStyle=I.checked?F:D,g.lineWidth=1,g.stroke(),g.fill(),I.checked)){const P=g.textAlign;g.textAlign="center";const Y={color:F,fontFamily:B.fontFamily,fontSize:p+"px",fontWeight:"bold"};t(Y,C+E/2,d,"\u2714"),g.textAlign=P}if(I.type==="range"){const[P,Y,O]=["min","max","value"].map(_=>parseFloat(I[_])),X=(O-P)/(Y-P)*(E-p);s(C,d+p/4,E,p/2,p/4),g.fillStyle=F,g.strokeStyle=D,g.lineWidth=1,g.fill(),g.stroke(),s(C,d+p/4,X+p/2,p/2,p/4),g.fillStyle=D,g.fill(),s(C+X,d,p,p,p/2),g.fillStyle=D,g.fill()}(I.type==="color"||I.type==="text"||I.type==="number")&&(c.add({x:C,y:d,width:E,height:p}),t(B,C+parseInt(B.paddingLeft),d+parseInt(B.paddingTop),I.value),c.remove())}}const f=B.overflow==="auto"||B.overflow==="hidden";f&&c.add({x:C,y:d,width:E,height:p});for(let Q=0;Q<I.childNodes.length;Q++)a(I.childNodes[Q],B);f&&c.remove()}const r=n.getBoundingClientRect();let l=ws.get(n);l===void 0&&(l=document.createElement("canvas"),l.width=r.width,l.height=r.height,ws.set(n,l));const g=l.getContext("2d"),c=new i(g);return g.clearRect(0,0,l.width,l.height),a(n),l}function Yc(n,A,e,i){const t={clientX:e*n.offsetWidth+n.offsetLeft,clientY:i*n.offsetHeight+n.offsetTop,view:n.ownerDocument.defaultView};window.dispatchEvent(new MouseEvent(A,t));const s=n.getBoundingClientRect();e=e*s.width+s.left,i=i*s.height+s.top;function o(a){if(a.nodeType!==Node.TEXT_NODE&&a.nodeType!==Node.COMMENT_NODE){const r=a.getBoundingClientRect();if(e>r.left&&e<r.right&&i>r.top&&i<r.bottom&&(a.dispatchEvent(new MouseEvent(A,t)),a instanceof HTMLInputElement&&a.type==="range"&&(A==="mousedown"||A==="click"))){const[l,g]=["min","max"].map(B=>parseFloat(a[B])),c=r.width,I=(e-r.x)/c;a.value=l+(g-l)*I,a.dispatchEvent(new InputEvent("input",{bubbles:!0}))}for(let l=0;l<a.childNodes.length;l++)o(a.childNodes[l])}}o(n)}const ai=new UA,gt={type:"",data:ai},Dn=new Mi;class Jc extends Xe{listenToPointerEvents(A,e){const i=this,t=new Mi,s=A.domElement;function o(a){a.stopPropagation();const r=A.domElement.getBoundingClientRect();ai.x=(a.clientX-r.left)/r.width*2-1,ai.y=-(a.clientY-r.top)/r.height*2+1,t.setFromCamera(ai,e);const l=t.intersectObjects(i.children,!1);if(l.length>0){const g=l[0],c=g.object,I=g.uv;gt.type=a.type,gt.data.set(I.x,1-I.y),c.dispatchEvent(gt)}}s.addEventListener("pointerdown",o),s.addEventListener("pointerup",o),s.addEventListener("pointermove",o),s.addEventListener("mousedown",o),s.addEventListener("mouseup",o),s.addEventListener("mousemove",o),s.addEventListener("click",o)}listenToXRControllerEvents(A){const e=this,i={move:"mousemove",select:"click",selectstart:"mousedown",selectend:"mouseup"};function t(s){const o=s.target;Dn.setFromXRController(o);const a=Dn.intersectObjects(e.children,!1);if(a.length>0){const r=a[0],l=r.object,g=r.uv;gt.type=i[s.type],gt.data.set(g.x,1-g.y),l.dispatchEvent(gt)}}A.addEventListener("move",t),A.addEventListener("select",t),A.addEventListener("selectstart",t),A.addEventListener("selectend",t)}}const Gt=new N,Tt=new N,Sn=new so;class jc extends Ht{constructor(A,e=1,i=16711680){const t=new oe,s=A.geometry.attributes.normal.count,o=new FA(s*2*3,3);t.setAttribute("position",o),super(t,new Fe({color:i,toneMapped:!1})),this.object=A,this.size=e,this.type="VertexNormalsHelper",this.matrixAutoUpdate=!1,this.update()}update(){this.object.updateMatrixWorld(!0),Sn.getNormalMatrix(this.object.matrixWorld);const A=this.object.matrixWorld,e=this.geometry.attributes.position,i=this.object.geometry;if(i){const t=i.attributes.position,s=i.attributes.normal;let o=0;for(let a=0,r=t.count;a<r;a++)Gt.fromBufferAttribute(t,a).applyMatrix4(A),Tt.fromBufferAttribute(s,a),Tt.applyMatrix3(Sn).normalize().multiplyScalar(this.size).add(Gt),e.setXYZ(o,Gt.x,Gt.y,Gt.z),o=o+1,e.setXYZ(o,Tt.x,Tt.y,Tt.z),o=o+1}e.needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}}function vn(n,A,e){const i=e.length-n-1;if(A>=e[i])return i-1;if(A<=e[n])return n;let t=n,s=i,o=Math.floor((t+s)/2);for(;A<e[o]||A>=e[o+1];)A<e[o]?s=o:t=o,o=Math.floor((t+s)/2);return o}function zc(n,A,e,i){const t=[],s=[],o=[];t[0]=1;for(let a=1;a<=e;++a){s[a]=A-i[n+1-a],o[a]=i[n+a]-A;let r=0;for(let l=0;l<a;++l){const g=o[l+1],c=s[a-l],I=t[l]/(g+c);t[l]=r+g*I,r=c*I}t[a]=r}return t}function Vc(n,A,e,i){const t=vn(n,i,A),s=zc(t,i,n,A),o=new Me(0,0,0,0);for(let a=0;a<=n;++a){const r=e[t-n+a],l=s[a],g=r.w*l;o.x+=r.x*g,o.y+=r.y*g,o.z+=r.z*g,o.w+=r.w*l}return o}function Xc(n,A,e,i,t){const s=[];for(let c=0;c<=e;++c)s[c]=0;const o=[];for(let c=0;c<=i;++c)o[c]=s.slice(0);const a=[];for(let c=0;c<=e;++c)a[c]=s.slice(0);a[0][0]=1;const r=s.slice(0),l=s.slice(0);for(let c=1;c<=e;++c){r[c]=A-t[n+1-c],l[c]=t[n+c]-A;let I=0;for(let B=0;B<c;++B){const C=l[B+1],d=r[c-B];a[c][B]=C+d;const E=a[B][c-1]/a[c][B];a[B][c]=I+C*E,I=d*E}a[c][c]=I}for(let c=0;c<=e;++c)o[0][c]=a[c][e];for(let c=0;c<=e;++c){let I=0,B=1;const C=[];for(let d=0;d<=e;++d)C[d]=s.slice(0);C[0][0]=1;for(let d=1;d<=i;++d){let E=0;const p=c-d,f=e-d;c>=d&&(C[B][0]=C[I][0]/a[f+1][p],E=C[B][0]*a[p][f]);const Q=p>=-1?1:-p,w=c-1<=f?d-1:e-c;for(let S=Q;S<=w;++S)C[B][S]=(C[I][S]-C[I][S-1])/a[f+1][p+S],E+=C[B][S]*a[p+S][f];c<=f&&(C[B][d]=-C[I][d-1]/a[f+1][c],E+=C[B][d]*a[c][f]),o[d][c]=E;const b=I;I=B,B=b}}let g=e;for(let c=1;c<=i;++c){for(let I=0;I<=e;++I)o[c][I]*=g;g*=e-c}return o}function Wc(n,A,e,i,t){const s=t<n?t:n,o=[],a=vn(n,i,A),r=Xc(a,i,n,s,A),l=[];for(let g=0;g<e.length;++g){const c=e[g].clone(),I=c.w;c.x*=I,c.y*=I,c.z*=I,l[g]=c}for(let g=0;g<=s;++g){const c=l[a-n].clone().multiplyScalar(r[g][0]);for(let I=1;I<=n;++I)c.add(l[a-n+I].clone().multiplyScalar(r[g][I]));o[g]=c}for(let g=s+1;g<=t+1;++g)o[g]=new Me(0,0,0);return o}function Zc(n,A){let e=1;for(let t=2;t<=n;++t)e*=t;let i=1;for(let t=2;t<=A;++t)i*=t;for(let t=2;t<=n-A;++t)i*=t;return e/i}function $c(n){const A=n.length,e=[],i=[];for(let s=0;s<A;++s){const o=n[s];e[s]=new N(o.x,o.y,o.z),i[s]=o.w}const t=[];for(let s=0;s<A;++s){const o=e[s].clone();for(let a=1;a<=s;++a)o.sub(t[s-a].clone().multiplyScalar(Zc(s,a)*i[a]));t[s]=o.divideScalar(i[0])}return t}function Al(n,A,e,i,t){const s=Wc(n,A,e,i,t);return $c(s)}class el extends Ga{constructor(A,e,i,t,s){super(),this.degree=A,this.knots=e,this.controlPoints=[],this.startKnot=t||0,this.endKnot=s||this.knots.length-1;for(let o=0;o<i.length;++o){const a=i[o];this.controlPoints[o]=new Me(a.x,a.y,a.z,a.w)}}getPoint(A,e=new N){const i=e,t=this.knots[this.startKnot]+A*(this.knots[this.endKnot]-this.knots[this.startKnot]),s=Vc(this.degree,this.knots,this.controlPoints,t);return s.w!==1&&s.divideScalar(s.w),i.set(s.x,s.y,s.z)}getTangent(A,e=new N){const i=e,t=this.knots[0]+A*(this.knots[this.knots.length-1]-this.knots[0]),s=Al(this.degree,this.knots,this.controlPoints,t,1);return i.copy(s[1]).normalize(),i}}let iA,MA,VA;class tl extends Re{constructor(A){super(A)}load(A,e,i,t){const s=this,o=s.path===""?ze.extractUrlBase(A):s.path,a=new Be(this.manager);a.setPath(s.path),a.setResponseType("arraybuffer"),a.setRequestHeader(s.requestHeader),a.setWithCredentials(s.withCredentials),a.load(A,function(r){try{e(s.parse(r,o))}catch(l){t?t(l):console.error(l),s.manager.itemError(A)}},i,t)}parse(A,e){if(rl(A))iA=new al().parse(A);else{const t=Mn(A);if(!gl(t))throw new Error("THREE.FBXLoader: Unknown format.");if(Fn(t)<7e3)throw new Error("THREE.FBXLoader: FBX version not supported, FileVersion: "+Fn(t));iA=new nl().parse(t)}const i=new ui(this.manager).setPath(this.resourcePath||e).setCrossOrigin(this.crossOrigin);return new il(i,this.manager).parse(iA)}getFbxTree(){return iA}}class il{constructor(A,e){this.textureLoader=A,this.manager=e}parse(){MA=this.parseConnections();const A=this.parseImages(),e=this.parseTextures(A),i=this.parseMaterials(e),t=this.parseDeformers(),s=new sl().parse(t);return this.parseScene(t,s,i),VA}parseConnections(){const A=new Map;return"Connections"in iA&&iA.Connections.connections.forEach(function(e){const i=e[0],t=e[1],s=e[2];A.has(i)||A.set(i,{parents:[],children:[]});const o={ID:t,relationship:s};A.get(i).parents.push(o),A.has(t)||A.set(t,{parents:[],children:[]});const a={ID:i,relationship:s};A.get(t).children.push(a)}),A}parseImages(){const A={},e={};if("Video"in iA.Objects){const i=iA.Objects.Video;for(const t in i){const s=i[t],o=parseInt(t);if(A[o]=s.RelativeFilename||s.Filename,"Content"in s){const a=s.Content instanceof ArrayBuffer&&s.Content.byteLength>0,r=typeof s.Content=="string"&&s.Content!=="";if(a||r){const l=this.parseImage(i[t]);e[s.RelativeFilename||s.Filename]=l}}}}for(const i in A){const t=A[i];e[t]!==void 0?A[i]=e[t]:A[i]=A[i].split("\\").pop()}return A}parseImage(A){const e=A.Content,i=A.RelativeFilename||A.Filename,t=i.slice(i.lastIndexOf(".")+1).toLowerCase();let s;switch(t){case"bmp":s="image/bmp";break;case"jpg":case"jpeg":s="image/jpeg";break;case"png":s="image/png";break;case"tif":s="image/tiff";break;case"tga":this.manager.getHandler(".tga")===null&&console.warn("FBXLoader: TGA loader not found, skipping ",i),s="image/tga";break;default:console.warn('FBXLoader: Image type "'+t+'" is not supported.');return}if(typeof e=="string")return"data:"+s+";base64,"+e;{const o=new Uint8Array(e);return window.URL.createObjectURL(new Blob([o],{type:s}))}}parseTextures(A){const e=new Map;if("Texture"in iA.Objects){const i=iA.Objects.Texture;for(const t in i){const s=this.parseTexture(i[t],A);e.set(parseInt(t),s)}}return e}parseTexture(A,e){const i=this.loadTexture(A,e);i.ID=A.id,i.name=A.attrName;const t=A.WrapModeU,s=A.WrapModeV,o=t!==void 0?t.value:0,a=s!==void 0?s.value:0;if(i.wrapS=o===0?Ve:Pt,i.wrapT=a===0?Ve:Pt,"Scaling"in A){const r=A.Scaling.value;i.repeat.x=r[0],i.repeat.y=r[1]}if("Translation"in A){const r=A.Translation.value;i.offset.x=r[0],i.offset.y=r[1]}return i}loadTexture(A,e){const i=new Set(["tga","tif","tiff","exr","dds","hdr","ktx2"]),t=A.FileName.split(".").pop().toLowerCase(),s=i.has(t)?this.manager.getHandler(`.${t}`):this.textureLoader;if(!s)return console.warn(`FBXLoader: ${t.toUpperCase()} loader not found, creating placeholder texture for`,A.RelativeFilename),new wi;const o=s.path;o||s.setPath(this.textureLoader.path);const a=MA.get(A.id).children;let r;a!==void 0&&a.length>0&&e[a[0].ID]!==void 0&&(r=e[a[0].ID],(r.indexOf("blob:")===0||r.indexOf("data:")===0)&&s.setPath(void 0));const l=s.load(r);return s.setPath(o),l}parseMaterials(A){const e=new Map;if("Material"in iA.Objects){const i=iA.Objects.Material;for(const t in i){const s=this.parseMaterial(i[t],A);s!==null&&e.set(parseInt(t),s)}}return e}parseMaterial(A,e){const i=A.id,t=A.attrName;let s=A.ShadingModel;if(typeof s=="object"&&(s=s.value),!MA.has(i))return null;const o=this.parseParameters(A,e,i);let a;switch(s.toLowerCase()){case"phong":a=new pt;break;case"lambert":a=new Ta;break;default:console.warn('THREE.FBXLoader: unknown material type "%s". Defaulting to MeshPhongMaterial.',s),a=new pt;break}return a.setValues(o),a.name=t,a}parseParameters(A,e,i){const t={};A.BumpFactor&&(t.bumpScale=A.BumpFactor.value),A.Diffuse?t.color=ZA.toWorkingColorSpace(new DA().fromArray(A.Diffuse.value),lA):A.DiffuseColor&&(A.DiffuseColor.type==="Color"||A.DiffuseColor.type==="ColorRGB")&&(t.color=ZA.toWorkingColorSpace(new DA().fromArray(A.DiffuseColor.value),lA)),A.DisplacementFactor&&(t.displacementScale=A.DisplacementFactor.value),A.Emissive?t.emissive=ZA.toWorkingColorSpace(new DA().fromArray(A.Emissive.value),lA):A.EmissiveColor&&(A.EmissiveColor.type==="Color"||A.EmissiveColor.type==="ColorRGB")&&(t.emissive=ZA.toWorkingColorSpace(new DA().fromArray(A.EmissiveColor.value),lA)),A.EmissiveFactor&&(t.emissiveIntensity=parseFloat(A.EmissiveFactor.value)),A.Opacity&&(t.opacity=parseFloat(A.Opacity.value)),t.opacity<1&&(t.transparent=!0),A.ReflectionFactor&&(t.reflectivity=A.ReflectionFactor.value),A.Shininess&&(t.shininess=A.Shininess.value),A.Specular?t.specular=ZA.toWorkingColorSpace(new DA().fromArray(A.Specular.value),lA):A.SpecularColor&&A.SpecularColor.type==="Color"&&(t.specular=ZA.toWorkingColorSpace(new DA().fromArray(A.SpecularColor.value),lA));const s=this;return MA.get(i).children.forEach(function(o){const a=o.relationship;switch(a){case"Bump":t.bumpMap=s.getTexture(e,o.ID);break;case"Maya|TEX_ao_map":t.aoMap=s.getTexture(e,o.ID);break;case"DiffuseColor":case"Maya|TEX_color_map":t.map=s.getTexture(e,o.ID),t.map!==void 0&&(t.map.colorSpace=lA);break;case"DisplacementColor":t.displacementMap=s.getTexture(e,o.ID);break;case"EmissiveColor":t.emissiveMap=s.getTexture(e,o.ID),t.emissiveMap!==void 0&&(t.emissiveMap.colorSpace=lA);break;case"NormalMap":case"Maya|TEX_normal_map":t.normalMap=s.getTexture(e,o.ID);break;case"ReflectionColor":t.envMap=s.getTexture(e,o.ID),t.envMap!==void 0&&(t.envMap.mapping=Na,t.envMap.colorSpace=lA);break;case"SpecularColor":t.specularMap=s.getTexture(e,o.ID),t.specularMap!==void 0&&(t.specularMap.colorSpace=lA);break;case"TransparentColor":case"TransparencyFactor":t.alphaMap=s.getTexture(e,o.ID),t.transparent=!0;break;default:console.warn("THREE.FBXLoader: %s map is not supported in three.js, skipping texture.",a);break}}),t}getTexture(A,e){return"LayeredTexture"in iA.Objects&&e in iA.Objects.LayeredTexture&&(console.warn("THREE.FBXLoader: layered textures are not supported in three.js. Discarding all but first layer."),e=MA.get(e).children[0].ID),A.get(e)}parseDeformers(){const A={},e={};if("Deformer"in iA.Objects){const i=iA.Objects.Deformer;for(const t in i){const s=i[t],o=MA.get(parseInt(t));if(s.attrType==="Skin"){const a=this.parseSkeleton(o,i);a.ID=t,o.parents.length>1&&console.warn("THREE.FBXLoader: skeleton attached to more than one geometry is not supported."),a.geometryID=o.parents[0].ID,A[t]=a}else if(s.attrType==="BlendShape"){const a={id:t};a.rawTargets=this.parseMorphTargets(o,i),a.id=t,o.parents.length>1&&console.warn("THREE.FBXLoader: morph target attached to more than one geometry is not supported."),e[t]=a}}}return{skeletons:A,morphTargets:e}}parseSkeleton(A,e){const i=[];return A.children.forEach(function(t){const s=e[t.ID];if(s.attrType!=="Cluster")return;const o={ID:t.ID,indices:[],weights:[],transformLink:new hA().fromArray(s.TransformLink.a)};"Indexes"in s&&(o.indices=s.Indexes.a,o.weights=s.Weights.a),i.push(o)}),{rawBones:i,bones:[]}}parseMorphTargets(A,e){const i=[];for(let t=0;t<A.children.length;t++){const s=A.children[t],o=e[s.ID],a={name:o.attrName,initialWeight:o.DeformPercent,id:o.id,fullWeights:o.FullWeights.a};if(o.attrType!=="BlendShapeChannel")return;a.geoID=MA.get(parseInt(s.ID)).children.filter(function(r){return r.relationship===void 0})[0].ID,i.push(a)}return i}parseScene(A,e,i){VA=new Xe;const t=this.parseModels(A.skeletons,e,i),s=iA.Objects.Model,o=this;t.forEach(function(r){const l=s[r.ID];o.setLookAtProperties(r,l),MA.get(r.ID)?.parents?.forEach(function(g){const c=t.get(g.ID);c!==void 0&&c.add(r)}),r.parent===null&&VA.add(r)}),this.bindSkeleton(A.skeletons,e,t),this.addGlobalSceneSettings(),VA.traverse(function(r){if(r.userData.transformData){r.parent&&(r.userData.transformData.parentMatrix=r.parent.matrix,r.userData.transformData.parentMatrixWorld=r.parent.matrixWorld);const l=kn(r.userData.transformData);r.applyMatrix4(l),r.updateWorldMatrix()}r.isSkinnedMesh&&(r.computeBoundingBox(),r.computeBoundingSphere(),r.boundingBox.expandByScalar(3),r.boundingSphere.radius*=3)});const a=new ol().parse();VA.children.length===1&&VA.children[0].isGroup&&(VA.children[0].animations=a,VA=VA.children[0]),VA.animations=a}parseModels(A,e,i){const t=new Map,s=iA.Objects.Model;for(const o in s){const a=parseInt(o),r=s[o],l=MA.get(a);let g=this.buildSkeleton(l,A,a,r.attrName);if(!g){switch(r.attrType){case"Camera":g=this.createCamera(l);break;case"Light":g=this.createLight(l);break;case"Mesh":g=this.createMesh(l,e,i);break;case"NurbsCurve":g=this.createCurve(l,e);break;case"LimbNode":case"Root":g=new mi;break;default:g=new Xe;break}g.name=r.attrName?ke.sanitizeNodeName(r.attrName):"",g.userData.originalName=r.attrName,g.ID=a}this.getTransformData(g,r),t.set(a,g)}return t}buildSkeleton(A,e,i,t){let s=null;return A?.parents.forEach(function(o){for(const a in e){const r=e[a];r.rawBones.forEach(function(l,g){if(l.ID===o.ID){const c=s;s=new mi,s.matrixWorld.copy(l.transformLink),s.name=t?ke.sanitizeNodeName(t):"",s.userData.originalName=t,s.ID=i,r.bones[g]=s,c!==null&&s.add(c)}})}}),s}createCamera(A){let e,i;if(A.children.forEach(function(t){const s=iA.Objects.NodeAttribute[t.ID];s!==void 0&&(i=s)}),i===void 0)e=new me;else{let t=0;i.CameraProjectionType!==void 0&&i.CameraProjectionType.value===1&&(t=1);let s=1;i.NearPlane!==void 0&&(s=i.NearPlane.value/1e3);let o=1e3;i.FarPlane!==void 0&&(o=i.FarPlane.value/1e3);let a=window.innerWidth,r=window.innerHeight;i.AspectWidth!==void 0&&i.AspectHeight!==void 0&&(a=i.AspectWidth.value,r=i.AspectHeight.value);const l=a/r;let g=45;i.FieldOfView!==void 0&&(g=i.FieldOfView.value);const c=i.FocalLength?i.FocalLength.value:null;switch(t){case 0:e=new Ot(g,l,s,o),c!==null&&e.setFocalLength(c);break;case 1:console.warn("THREE.FBXLoader: Orthographic cameras not supported yet."),e=new me;break;default:console.warn("THREE.FBXLoader: Unknown camera type "+t+"."),e=new me;break}}return e}createLight(A){let e,i;if(A.children.forEach(function(t){const s=iA.Objects.NodeAttribute[t.ID];s!==void 0&&(i=s)}),i===void 0)e=new me;else{let t;i.LightType===void 0?t=0:t=i.LightType.value;let s=16777215;i.Color!==void 0&&(s=ZA.toWorkingColorSpace(new DA().fromArray(i.Color.value),lA));let o=i.Intensity===void 0?1:i.Intensity.value/100;i.CastLightOnObject!==void 0&&i.CastLightOnObject.value===0&&(o=0);let a=0;i.FarAttenuationEnd!==void 0&&(i.EnableFarAttenuation!==void 0&&i.EnableFarAttenuation.value===0?a=0:a=i.FarAttenuationEnd.value);const r=1;switch(t){case 0:e=new di(s,o,a,r);break;case 1:e=new Ts(s,o);break;case 2:let l=Math.PI/3;i.InnerAngle!==void 0&&(l=bA.degToRad(i.InnerAngle.value));let g=0;i.OuterAngle!==void 0&&(g=bA.degToRad(i.OuterAngle.value),g=Math.max(g,1)),e=new Gs(s,o,a,l,g,r);break;default:console.warn("THREE.FBXLoader: Unknown light type "+i.LightType.value+", defaulting to a PointLight."),e=new di(s,o);break}i.CastShadows!==void 0&&i.CastShadows.value===1&&(e.castShadow=!0)}return e}createMesh(A,e,i){let t,s=null,o=null;const a=[];if(A.children.forEach(function(r){e.has(r.ID)&&(s=e.get(r.ID)),i.has(r.ID)&&a.push(i.get(r.ID))}),a.length>1?o=a:a.length>0?o=a[0]:(o=new pt({name:Re.DEFAULT_MATERIAL_NAME,color:13421772}),a.push(o)),"color"in s.attributes&&a.forEach(function(r){r.vertexColors=!0}),s.groups.length>0){let r=!1;for(let l=0,g=s.groups.length;l<g;l++){const c=s.groups[l];(c.materialIndex<0||c.materialIndex>=a.length)&&(c.materialIndex=a.length,r=!0)}if(r){const l=new Qi;a.push(l)}}return s.FBX_Deformer?(t=new _s(s,o),t.normalizeSkinWeights()):t=new K(s,o),t}createCurve(A,e){const i=A.children.reduce(function(s,o){return e.has(o.ID)&&(s=e.get(o.ID)),s},null),t=new Fe({name:Re.DEFAULT_MATERIAL_NAME,color:3342591,linewidth:1});return new Ce(i,t)}getTransformData(A,e){const i={};"InheritType"in e&&(i.inheritType=parseInt(e.InheritType.value)),"RotationOrder"in e?i.eulerOrder=Nt(e.RotationOrder.value):i.eulerOrder=Nt(0),"Lcl_Translation"in e&&(i.translation=e.Lcl_Translation.value),"PreRotation"in e&&(i.preRotation=e.PreRotation.value),"Lcl_Rotation"in e&&(i.rotation=e.Lcl_Rotation.value),"PostRotation"in e&&(i.postRotation=e.PostRotation.value),"Lcl_Scaling"in e&&(i.scale=e.Lcl_Scaling.value),"ScalingOffset"in e&&(i.scalingOffset=e.ScalingOffset.value),"ScalingPivot"in e&&(i.scalingPivot=e.ScalingPivot.value),"RotationOffset"in e&&(i.rotationOffset=e.RotationOffset.value),"RotationPivot"in e&&(i.rotationPivot=e.RotationPivot.value),A.userData.transformData=i}setLookAtProperties(A,e){"LookAtProperty"in e&&MA.get(A.ID).children.forEach(function(i){if(i.relationship==="LookAtProperty"){const t=iA.Objects.Model[i.ID];if("Lcl_Translation"in t){const s=t.Lcl_Translation.value;A.target!==void 0?(A.target.position.fromArray(s),VA.add(A.target)):A.lookAt(new N().fromArray(s))}}})}bindSkeleton(A,e,i){const t=this.parsePoseNodes();for(const s in A){const o=A[s];MA.get(parseInt(o.ID)).parents.forEach(function(a){if(e.has(a.ID)){const r=a.ID;MA.get(r).parents.forEach(function(l){i.has(l.ID)&&i.get(l.ID).bind(new Hs(o.bones),t[l.ID])})}})}}parsePoseNodes(){const A={};if("Pose"in iA.Objects){const e=iA.Objects.Pose;for(const i in e)if(e[i].attrType==="BindPose"&&e[i].NbPoseNodes>0){const t=e[i].PoseNode;Array.isArray(t)?t.forEach(function(s){A[s.Node]=new hA().fromArray(s.Matrix.a)}):A[t.Node]=new hA().fromArray(t.Matrix.a)}}return A}addGlobalSceneSettings(){if("GlobalSettings"in iA){if("AmbientColor"in iA.GlobalSettings){const A=iA.GlobalSettings.AmbientColor.value,e=A[0],i=A[1],t=A[2];if(e!==0||i!==0||t!==0){const s=new DA().setRGB(e,i,t,lA);VA.add(new La(s,1))}}"UnitScaleFactor"in iA.GlobalSettings&&(VA.userData.unitScaleFactor=iA.GlobalSettings.UnitScaleFactor.value)}}}class sl{constructor(){this.negativeMaterialIndices=!1}parse(A){const e=new Map;if("Geometry"in iA.Objects){const i=iA.Objects.Geometry;for(const t in i){const s=MA.get(parseInt(t)),o=this.parseGeometry(s,i[t],A);e.set(parseInt(t),o)}}return this.negativeMaterialIndices===!0&&console.warn("THREE.FBXLoader: The FBX file contains invalid (negative) material indices. The asset might not render as expected."),e}parseGeometry(A,e,i){switch(e.attrType){case"Mesh":return this.parseMeshGeometry(A,e,i);case"NurbsCurve":return this.parseNurbsGeometry(e)}}parseMeshGeometry(A,e,i){const t=i.skeletons,s=[],o=A.parents.map(function(c){return iA.Objects.Model[c.ID]});if(o.length===0)return;const a=A.children.reduce(function(c,I){return t[I.ID]!==void 0&&(c=t[I.ID]),c},null);A.children.forEach(function(c){i.morphTargets[c.ID]!==void 0&&s.push(i.morphTargets[c.ID])});const r=o[0],l={};"RotationOrder"in r&&(l.eulerOrder=Nt(r.RotationOrder.value)),"InheritType"in r&&(l.inheritType=parseInt(r.InheritType.value)),"GeometricTranslation"in r&&(l.translation=r.GeometricTranslation.value),"GeometricRotation"in r&&(l.rotation=r.GeometricRotation.value),"GeometricScaling"in r&&(l.scale=r.GeometricScaling.value);const g=kn(l);return this.genGeometry(e,a,s,g)}genGeometry(A,e,i,t){const s=new oe;A.attrName&&(s.name=A.attrName);const o=this.parseGeoNode(A,e),a=this.genBuffers(o),r=new FA(a.vertex,3);if(r.applyMatrix4(t),s.setAttribute("position",r),a.colors.length>0&&s.setAttribute("color",new FA(a.colors,3)),e&&(s.setAttribute("skinIndex",new Ua(a.weightsIndices,4)),s.setAttribute("skinWeight",new FA(a.vertexWeights,4)),s.FBX_Deformer=e),a.normal.length>0){const l=new so().getNormalMatrix(t),g=new FA(a.normal,3);g.applyNormalMatrix(l),s.setAttribute("normal",g)}if(a.uvs.forEach(function(l,g){const c=g===0?"uv":`uv${g}`;s.setAttribute(c,new FA(a.uvs[g],2))}),o.material&&o.material.mappingType!=="AllSame"){let l=a.materialIndex[0],g=0;if(a.materialIndex.forEach(function(c,I){c!==l&&(s.addGroup(g,I-g,l),l=c,g=I)}),s.groups.length>0){const c=s.groups[s.groups.length-1],I=c.start+c.count;I!==a.materialIndex.length&&s.addGroup(I,a.materialIndex.length-I,l)}s.groups.length===0&&s.addGroup(0,a.materialIndex.length,a.materialIndex[0])}return this.addMorphTargets(s,A,i,t),s}parseGeoNode(A,e){const i={};if(i.vertexPositions=A.Vertices!==void 0?A.Vertices.a:[],i.vertexIndices=A.PolygonVertexIndex!==void 0?A.PolygonVertexIndex.a:[],A.LayerElementColor&&(i.color=this.parseVertexColors(A.LayerElementColor[0])),A.LayerElementMaterial&&(i.material=this.parseMaterialIndices(A.LayerElementMaterial[0])),A.LayerElementNormal&&(i.normal=this.parseNormals(A.LayerElementNormal[0])),A.LayerElementUV){i.uv=[];let t=0;for(;A.LayerElementUV[t];)A.LayerElementUV[t].UV&&i.uv.push(this.parseUVs(A.LayerElementUV[t])),t++}return i.weightTable={},e!==null&&(i.skeleton=e,e.rawBones.forEach(function(t,s){t.indices.forEach(function(o,a){i.weightTable[o]===void 0&&(i.weightTable[o]=[]),i.weightTable[o].push({id:s,weight:t.weights[a]})})})),i}genBuffers(A){const e={vertex:[],normal:[],colors:[],uvs:[],materialIndex:[],vertexWeights:[],weightsIndices:[]};let i=0,t=0,s=!1,o=[],a=[],r=[],l=[],g=[],c=[];const I=this;return A.vertexIndices.forEach(function(B,C){let d,E=!1;B<0&&(B=B^-1,E=!0);let p=[],f=[];if(o.push(B*3,B*3+1,B*3+2),A.color){const Q=ri(C,i,B,A.color);r.push(Q[0],Q[1],Q[2])}if(A.skeleton){if(A.weightTable[B]!==void 0&&A.weightTable[B].forEach(function(Q){f.push(Q.weight),p.push(Q.id)}),f.length>4){s||(console.warn("THREE.FBXLoader: Vertex has more than 4 skinning weights assigned to vertex. Deleting additional weights."),s=!0);const Q=[0,0,0,0],w=[0,0,0,0];f.forEach(function(b,S){let x=b,D=p[S];w.forEach(function(F,P,Y){if(x>F){Y[P]=x,x=F;const O=Q[P];Q[P]=D,D=O}})}),p=Q,f=w}for(;f.length<4;)f.push(0),p.push(0);for(let Q=0;Q<4;++Q)g.push(f[Q]),c.push(p[Q])}if(A.normal){const Q=ri(C,i,B,A.normal);a.push(Q[0],Q[1],Q[2])}A.material&&A.material.mappingType!=="AllSame"&&(d=ri(C,i,B,A.material)[0],d<0&&(I.negativeMaterialIndices=!0,d=0)),A.uv&&A.uv.forEach(function(Q,w){const b=ri(C,i,B,Q);l[w]===void 0&&(l[w]=[]),l[w].push(b[0]),l[w].push(b[1])}),t++,E&&(I.genFace(e,A,o,d,a,r,l,g,c,t),i++,t=0,o=[],a=[],r=[],l=[],g=[],c=[])}),e}getNormalNewell(A){const e=new N(0,0,0);for(let i=0;i<A.length;i++){const t=A[i],s=A[(i+1)%A.length];e.x+=(t.y-s.y)*(t.z+s.z),e.y+=(t.z-s.z)*(t.x+s.x),e.z+=(t.x-s.x)*(t.y+s.y)}return e.normalize(),e}getNormalTangentAndBitangent(A){const e=this.getNormalNewell(A),i=(Math.abs(e.z)>.5?new N(0,1,0):new N(0,0,1)).cross(e).normalize(),t=e.clone().cross(i).normalize();return{normal:e,tangent:i,bitangent:t}}flattenVertex(A,e,i){return new UA(A.dot(e),A.dot(i))}genFace(A,e,i,t,s,o,a,r,l,g){let c;if(g>3){const I=[],B=e.baseVertexPositions||e.vertexPositions;for(let p=0;p<i.length;p+=3)I.push(new N(B[i[p]],B[i[p+1]],B[i[p+2]]));const{tangent:C,bitangent:d}=this.getNormalTangentAndBitangent(I),E=[];for(const p of I)E.push(this.flattenVertex(p,C,d));c=_a.triangulateShape(E,[])}else g===2?(console.warn("THREE.FBXLoader: Edge topology detected. This is currently not supported. The resulting mesh will not be correct."),c=[[0,1,2]]):c=[[0,1,2]];for(const[I,B,C]of c)A.vertex.push(e.vertexPositions[i[I*3]]),A.vertex.push(e.vertexPositions[i[I*3+1]]),A.vertex.push(e.vertexPositions[i[I*3+2]]),A.vertex.push(e.vertexPositions[i[B*3]]),A.vertex.push(e.vertexPositions[i[B*3+1]]),A.vertex.push(e.vertexPositions[i[B*3+2]]),A.vertex.push(e.vertexPositions[i[C*3]]),A.vertex.push(e.vertexPositions[i[C*3+1]]),A.vertex.push(e.vertexPositions[i[C*3+2]]),e.skeleton&&(A.vertexWeights.push(r[I*4]),A.vertexWeights.push(r[I*4+1]),A.vertexWeights.push(r[I*4+2]),A.vertexWeights.push(r[I*4+3]),A.vertexWeights.push(r[B*4]),A.vertexWeights.push(r[B*4+1]),A.vertexWeights.push(r[B*4+2]),A.vertexWeights.push(r[B*4+3]),A.vertexWeights.push(r[C*4]),A.vertexWeights.push(r[C*4+1]),A.vertexWeights.push(r[C*4+2]),A.vertexWeights.push(r[C*4+3]),A.weightsIndices.push(l[I*4]),A.weightsIndices.push(l[I*4+1]),A.weightsIndices.push(l[I*4+2]),A.weightsIndices.push(l[I*4+3]),A.weightsIndices.push(l[B*4]),A.weightsIndices.push(l[B*4+1]),A.weightsIndices.push(l[B*4+2]),A.weightsIndices.push(l[B*4+3]),A.weightsIndices.push(l[C*4]),A.weightsIndices.push(l[C*4+1]),A.weightsIndices.push(l[C*4+2]),A.weightsIndices.push(l[C*4+3])),e.color&&(A.colors.push(o[I*3]),A.colors.push(o[I*3+1]),A.colors.push(o[I*3+2]),A.colors.push(o[B*3]),A.colors.push(o[B*3+1]),A.colors.push(o[B*3+2]),A.colors.push(o[C*3]),A.colors.push(o[C*3+1]),A.colors.push(o[C*3+2])),e.material&&e.material.mappingType!=="AllSame"&&(A.materialIndex.push(t),A.materialIndex.push(t),A.materialIndex.push(t)),e.normal&&(A.normal.push(s[I*3]),A.normal.push(s[I*3+1]),A.normal.push(s[I*3+2]),A.normal.push(s[B*3]),A.normal.push(s[B*3+1]),A.normal.push(s[B*3+2]),A.normal.push(s[C*3]),A.normal.push(s[C*3+1]),A.normal.push(s[C*3+2])),e.uv&&e.uv.forEach(function(d,E){A.uvs[E]===void 0&&(A.uvs[E]=[]),A.uvs[E].push(a[E][I*2]),A.uvs[E].push(a[E][I*2+1]),A.uvs[E].push(a[E][B*2]),A.uvs[E].push(a[E][B*2+1]),A.uvs[E].push(a[E][C*2]),A.uvs[E].push(a[E][C*2+1])})}addMorphTargets(A,e,i,t){if(i.length===0)return;A.morphTargetsRelative=!0,A.morphAttributes.position=[];const s=this;i.forEach(function(o){o.rawTargets.forEach(function(a){const r=iA.Objects.Geometry[a.geoID];r!==void 0&&s.genMorphGeometry(A,e,r,t,a.name)})})}genMorphGeometry(A,e,i,t,s){const o=e.Vertices!==void 0?e.Vertices.a:[],a=e.PolygonVertexIndex!==void 0?e.PolygonVertexIndex.a:[],r=i.Vertices!==void 0?i.Vertices.a:[],l=i.Indexes!==void 0?i.Indexes.a:[],g=A.attributes.position.count*3,c=new Float32Array(g);for(let d=0;d<l.length;d++){const E=l[d]*3;c[E]=r[d*3],c[E+1]=r[d*3+1],c[E+2]=r[d*3+2]}const I={vertexIndices:a,vertexPositions:c,baseVertexPositions:o},B=this.genBuffers(I),C=new FA(B.vertex,3);C.name=s||i.attrName,C.applyMatrix4(t),A.morphAttributes.position.push(C)}parseNormals(A){const e=A.MappingInformationType,i=A.ReferenceInformationType,t=A.Normals.a;let s=[];return i==="IndexToDirect"&&("NormalIndex"in A?s=A.NormalIndex.a:"NormalsIndex"in A&&(s=A.NormalsIndex.a)),{dataSize:3,buffer:t,indices:s,mappingType:e,referenceType:i}}parseUVs(A){const e=A.MappingInformationType,i=A.ReferenceInformationType,t=A.UV.a;let s=[];return i==="IndexToDirect"&&(s=A.UVIndex.a),{dataSize:2,buffer:t,indices:s,mappingType:e,referenceType:i}}parseVertexColors(A){if(!A.Colors)return;const e=A.MappingInformationType,i=A.ReferenceInformationType,t=A.Colors.a;let s=[];i==="IndexToDirect"&&(s=A.ColorIndex.a);for(let o=0,a=new DA;o<t.length;o+=4)a.fromArray(t,o),ZA.toWorkingColorSpace(a,lA),a.toArray(t,o);return{dataSize:4,buffer:t,indices:s,mappingType:e,referenceType:i}}parseMaterialIndices(A){const e=A.MappingInformationType,i=A.ReferenceInformationType;if(e==="NoMappingInformation")return{dataSize:1,buffer:[0],indices:[0],mappingType:"AllSame",referenceType:i};const t=A.Materials.a,s=[];for(let o=0;o<t.length;++o)s.push(o);return{dataSize:1,buffer:t,indices:s,mappingType:e,referenceType:i}}parseNurbsGeometry(A){const e=parseInt(A.Order);if(isNaN(e))return console.error("THREE.FBXLoader: Invalid Order %s given for geometry ID: %s",A.Order,A.id),new oe;const i=e-1,t=A.KnotVector.a,s=[],o=A.Points.a;for(let g=0,c=o.length;g<c;g+=4)s.push(new Me().fromArray(o,g));let a,r;if(A.Form==="Closed")s.push(s[0]);else if(A.Form==="Periodic"){a=i,r=t.length-1-a;for(let g=0;g<i;++g)s.push(s[g])}const l=new el(i,t,s,a,r).getPoints(s.length*12);return new oe().setFromPoints(l)}}class ol{parse(){const A=[],e=this.parseClips();if(e!==void 0)for(const i in e){const t=e[i],s=this.addClip(t);A.push(s)}return A}parseClips(){if(iA.Objects.AnimationCurve===void 0)return;const A=this.parseAnimationCurveNodes();this.parseAnimationCurves(A);const e=this.parseAnimationLayers(A);return this.parseAnimStacks(e)}parseAnimationCurveNodes(){const A=iA.Objects.AnimationCurveNode,e=new Map;for(const i in A){const t=A[i];if(t.attrName.match(/S|R|T|DeformPercent/)!==null){const s={id:t.id,attr:t.attrName,curves:{}};e.set(s.id,s)}}return e}parseAnimationCurves(A){const e=iA.Objects.AnimationCurve;for(const i in e){const t={id:e[i].id,times:e[i].KeyTime.a.map(cl),values:e[i].KeyValueFloat.a},s=MA.get(t.id);if(s!==void 0){const o=s.parents[0].ID,a=s.parents[0].relationship;a.match(/X/)?A.get(o).curves.x=t:a.match(/Y/)?A.get(o).curves.y=t:a.match(/Z/)?A.get(o).curves.z=t:a.match(/DeformPercent/)&&A.has(o)&&(A.get(o).curves.morph=t)}}}parseAnimationLayers(A){const e=iA.Objects.AnimationLayer,i=new Map;for(const t in e){const s=[],o=MA.get(parseInt(t));o!==void 0&&(o.children.forEach(function(a,r){if(A.has(a.ID)){const l=A.get(a.ID);if(l.curves.x!==void 0||l.curves.y!==void 0||l.curves.z!==void 0){if(s[r]===void 0){const g=MA.get(a.ID).parents.filter(function(c){return c.relationship!==void 0})[0].ID;if(g!==void 0){const c=iA.Objects.Model[g.toString()];if(c===void 0){console.warn("THREE.FBXLoader: Encountered a unused curve.",a);return}const I={modelName:c.attrName?ke.sanitizeNodeName(c.attrName):"",ID:c.id,initialPosition:[0,0,0],initialRotation:[0,0,0],initialScale:[1,1,1]};VA.traverse(function(B){B.ID===c.id&&(I.transform=B.matrix,B.userData.transformData&&(I.eulerOrder=B.userData.transformData.eulerOrder))}),I.transform||(I.transform=new hA),"PreRotation"in c&&(I.preRotation=c.PreRotation.value),"PostRotation"in c&&(I.postRotation=c.PostRotation.value),s[r]=I}}s[r]&&(s[r][l.attr]=l)}else if(l.curves.morph!==void 0){if(s[r]===void 0){const g=MA.get(a.ID).parents.filter(function(E){return E.relationship!==void 0})[0].ID,c=MA.get(g).parents[0].ID,I=MA.get(c).parents[0].ID,B=MA.get(I).parents[0].ID,C=iA.Objects.Model[B],d={modelName:C.attrName?ke.sanitizeNodeName(C.attrName):"",morphName:iA.Objects.Deformer[g].attrName};s[r]=d}s[r][l.attr]=l}}}),i.set(parseInt(t),s))}return i}parseAnimStacks(A){const e=iA.Objects.AnimationStack,i={};for(const t in e){const s=MA.get(parseInt(t)).children;s.length>1&&console.warn("THREE.FBXLoader: Encountered an animation stack with multiple layers, this is currently not supported. Ignoring subsequent layers.");const o=A.get(s[0].ID);i[t]={name:e[t].attrName,layer:o}}return i}addClip(A){let e=[];const i=this;return A.layer.forEach(function(t){e=e.concat(i.generateTracks(t))}),new qs(A.name,-1,e)}generateTracks(A){const e=[];let i=new N,t=new N;if(A.transform&&A.transform.decompose(i,new SA,t),i=i.toArray(),t=t.toArray(),A.T!==void 0&&Object.keys(A.T.curves).length>0){const s=this.generateVectorTrack(A.modelName,A.T.curves,i,"position");s!==void 0&&e.push(s)}if(A.R!==void 0&&Object.keys(A.R.curves).length>0){const s=this.generateRotationTrack(A.modelName,A.R.curves,A.preRotation,A.postRotation,A.eulerOrder);s!==void 0&&e.push(s)}if(A.S!==void 0&&Object.keys(A.S.curves).length>0){const s=this.generateVectorTrack(A.modelName,A.S.curves,t,"scale");s!==void 0&&e.push(s)}if(A.DeformPercent!==void 0){const s=this.generateMorphTrack(A);s!==void 0&&e.push(s)}return e}generateVectorTrack(A,e,i,t){const s=this.getTimesForAllAxes(e),o=this.getKeyframeTrackValues(s,e,i);return new yi(A+"."+t,s,o)}generateRotationTrack(A,e,i,t,s){let o,a;if(e.x===void 0||e.y===void 0||e.z===void 0){console.warn("THREE.FBXLoader: Missing rotation curves "+(e.x===void 0?"x ":"")+(e.y===void 0?"y ":"")+(e.z===void 0?"z ":"")+" for animation of "+A+". This is currently not supported.");return}if(e.x!==void 0&&e.y!==void 0&&e.z!==void 0){const I=this.interpolateRotations(e.x,e.y,e.z,s);o=I[0],a=I[1]}const r=Nt(0);i!==void 0&&(i=i.map(bA.degToRad),i.push(r),i=new qe().fromArray(i),i=new SA().setFromEuler(i)),t!==void 0&&(t=t.map(bA.degToRad),t.push(r),t=new qe().fromArray(t),t=new SA().setFromEuler(t).invert());const l=new SA,g=new qe,c=[];if(!(!a||!o)){for(let I=0;I<a.length;I+=3)g.set(a[I],a[I+1],a[I+2],s),l.setFromEuler(g),i!==void 0&&l.premultiply(i),t!==void 0&&l.multiply(t),I>2&&new SA().fromArray(c,(I-3)/3*4).dot(l)<0&&l.set(-l.x,-l.y,-l.z,-l.w),l.toArray(c,I/3*4);return new Si(A+".quaternion",o,c)}}generateMorphTrack(A){const e=A.DeformPercent.curves.morph,i=e.values.map(function(s){return s/100}),t=VA.getObjectByName(A.modelName).morphTargetDictionary[A.morphName];return new Di(A.modelName+".morphTargetInfluences["+t+"]",e.times,i)}getTimesForAllAxes(A){let e=[];if(A.x!==void 0&&(e=e.concat(A.x.times)),A.y!==void 0&&(e=e.concat(A.y.times)),A.z!==void 0&&(e=e.concat(A.z.times)),e=e.sort(function(i,t){return i-t}),e.length>1){let i=1,t=e[0];for(let s=1;s<e.length;s++){const o=e[s];o!==t&&(e[i]=o,t=o,i++)}e=e.slice(0,i)}return e}getKeyframeTrackValues(A,e,i){const t=i,s=[];let o=-1,a=-1,r=-1;return A.forEach(function(l){if(e.x&&(o=e.x.times.indexOf(l)),e.y&&(a=e.y.times.indexOf(l)),e.z&&(r=e.z.times.indexOf(l)),o!==-1){const g=e.x.values[o];s.push(g),t[0]=g}else s.push(t[0]);if(a!==-1){const g=e.y.values[a];s.push(g),t[1]=g}else s.push(t[1]);if(r!==-1){const g=e.z.values[r];s.push(g),t[2]=g}else s.push(t[2])}),s}interpolateRotations(A,e,i,t){const s=[],o=[];s.push(A.times[0]),o.push(bA.degToRad(A.values[0])),o.push(bA.degToRad(e.values[0])),o.push(bA.degToRad(i.values[0]));for(let a=1;a<A.values.length;a++){const r=[A.values[a-1],e.values[a-1],i.values[a-1]];if(isNaN(r[0])||isNaN(r[1])||isNaN(r[2]))continue;const l=r.map(bA.degToRad),g=[A.values[a],e.values[a],i.values[a]];if(isNaN(g[0])||isNaN(g[1])||isNaN(g[2]))continue;const c=g.map(bA.degToRad),I=[g[0]-r[0],g[1]-r[1],g[2]-r[2]],B=[Math.abs(I[0]),Math.abs(I[1]),Math.abs(I[2])];if(B[0]>=180||B[1]>=180||B[2]>=180){const C=Math.max(...B)/180,d=new qe(...l,t),E=new qe(...c,t),p=new SA().setFromEuler(d),f=new SA().setFromEuler(E);p.dot(f)&&f.set(-f.x,-f.y,-f.z,-f.w);const Q=A.times[a-1],w=A.times[a]-Q,b=new SA,S=new qe;for(let x=0;x<1;x+=1/C)b.copy(p.clone().slerp(f.clone(),x)),s.push(Q+x*w),S.setFromQuaternion(b,t),o.push(S.x),o.push(S.y),o.push(S.z)}else s.push(A.times[a]),o.push(bA.degToRad(A.values[a])),o.push(bA.degToRad(e.values[a])),o.push(bA.degToRad(i.values[a]))}return[s,o]}}class nl{getPrevNode(){return this.nodeStack[this.currentIndent-2]}getCurrentNode(){return this.nodeStack[this.currentIndent-1]}getCurrentProp(){return this.currentProp}pushStack(A){this.nodeStack.push(A),this.currentIndent+=1}popStack(){this.nodeStack.pop(),this.currentIndent-=1}setCurrentProp(A,e){this.currentProp=A,this.currentPropName=e}parse(A){this.currentIndent=0,this.allNodes=new Rn,this.nodeStack=[],this.currentProp=[],this.currentPropName="";const e=this,i=A.split(/[\r\n]+/);return i.forEach(function(t,s){const o=t.match(/^[\s\t]*;/),a=t.match(/^[\s\t]*$/);if(o||a)return;const r=t.match("^\\t{"+e.currentIndent+"}(\\w+):(.*){",""),l=t.match("^\\t{"+e.currentIndent+"}(\\w+):[\\s\\t\\r\\n](.*)"),g=t.match("^\\t{"+(e.currentIndent-1)+"}}");r?e.parseNodeBegin(t,r):l?e.parseNodeProperty(t,l,i[++s]):g?e.popStack():t.match(/^[^\s\t}]/)&&e.parseNodePropertyContinued(t)}),this.allNodes}parseNodeBegin(A,e){const i=e[1].trim().replace(/^"/,"").replace(/"$/,""),t=e[2].split(",").map(function(r){return r.trim().replace(/^"/,"").replace(/"$/,"")}),s={name:i},o=this.parseNodeAttr(t),a=this.getCurrentNode();this.currentIndent===0?this.allNodes.add(i,s):i in a?(i==="PoseNode"?a.PoseNode.push(s):a[i].id!==void 0&&(a[i]={},a[i][a[i].id]=a[i]),o.id!==""&&(a[i][o.id]=s)):typeof o.id=="number"?(a[i]={},a[i][o.id]=s):i!=="Properties70"&&(i==="PoseNode"?a[i]=[s]:a[i]=s),typeof o.id=="number"&&(s.id=o.id),o.name!==""&&(s.attrName=o.name),o.type!==""&&(s.attrType=o.type),this.pushStack(s)}parseNodeAttr(A){let e=A[0];A[0]!==""&&(e=parseInt(A[0]),isNaN(e)&&(e=A[0]));let i="",t="";return A.length>1&&(i=A[1].replace(/^(\w+)::/,""),t=A[2]),{id:e,name:i,type:t}}parseNodeProperty(A,e,i){let t=e[1].replace(/^"/,"").replace(/"$/,"").trim(),s=e[2].replace(/^"/,"").replace(/"$/,"").trim();t==="Content"&&s===","&&(s=i.replace(/"/g,"").replace(/,$/,"").trim());const o=this.getCurrentNode();if(o.name==="Properties70"){this.parseNodeSpecialProperty(A,t,s);return}if(t==="C"){const a=s.split(",").slice(1),r=parseInt(a[0]),l=parseInt(a[1]);let g=s.split(",").slice(3);g=g.map(function(c){return c.trim().replace(/^"/,"")}),t="connections",s=[r,l],hl(s,g),o[t]===void 0&&(o[t]=[])}t==="Node"&&(o.id=s),t in o&&Array.isArray(o[t])?o[t].push(s):t!=="a"?o[t]=s:o.a=s,this.setCurrentProp(o,t),t==="a"&&s.slice(-1)!==","&&(o.a=Ds(s))}parseNodePropertyContinued(A){const e=this.getCurrentNode();e.a+=A,A.slice(-1)!==","&&(e.a=Ds(e.a))}parseNodeSpecialProperty(A,e,i){const t=i.split('",').map(function(g){return g.trim().replace(/^\"/,"").replace(/\s/,"_")}),s=t[0],o=t[1],a=t[2],r=t[3];let l=t[4];switch(o){case"int":case"enum":case"bool":case"ULongLong":case"double":case"Number":case"FieldOfView":l=parseFloat(l);break;case"Color":case"ColorRGB":case"Vector3D":case"Lcl_Translation":case"Lcl_Rotation":case"Lcl_Scaling":l=Ds(l);break}this.getPrevNode()[s]={type:o,type2:a,flag:r,value:l},this.setCurrentProp(this.getPrevNode(),s)}}class al{parse(A){const e=new xn(A);e.skip(23);const i=e.getUint32();if(i<6400)throw new Error("THREE.FBXLoader: FBX version not supported, FileVersion: "+i);const t=new Rn;for(;!this.endOfContent(e);){const s=this.parseNode(e,i);s!==null&&t.add(s.name,s)}return t}endOfContent(A){return A.size()%16===0?(A.getOffset()+160+16&-16)>=A.size():A.getOffset()+160+16>=A.size()}parseNode(A,e){const i={},t=e>=7500?A.getUint64():A.getUint32(),s=e>=7500?A.getUint64():A.getUint32();e>=7500?A.getUint64():A.getUint32();const o=A.getUint8(),a=A.getString(o);if(t===0)return null;const r=[];for(let I=0;I<s;I++)r.push(this.parseProperty(A));const l=r.length>0?r[0]:"",g=r.length>1?r[1]:"",c=r.length>2?r[2]:"";for(i.singleProperty=s===1&&A.getOffset()===t;t>A.getOffset();){const I=this.parseNode(A,e);I!==null&&this.parseSubNode(a,i,I)}return i.propertyList=r,typeof l=="number"&&(i.id=l),g!==""&&(i.attrName=g),c!==""&&(i.attrType=c),a!==""&&(i.name=a),i}parseSubNode(A,e,i){if(i.singleProperty===!0){const t=i.propertyList[0];Array.isArray(t)?(e[i.name]=i,i.a=t):e[i.name]=t}else if(A==="Connections"&&i.name==="C"){const t=[];i.propertyList.forEach(function(s,o){o!==0&&t.push(s)}),e.connections===void 0&&(e.connections=[]),e.connections.push(t)}else if(i.name==="Properties70")Object.keys(i).forEach(function(t){e[t]=i[t]});else if(A==="Properties70"&&i.name==="P"){let t=i.propertyList[0],s=i.propertyList[1];const o=i.propertyList[2],a=i.propertyList[3];let r;t.indexOf("Lcl ")===0&&(t=t.replace("Lcl ","Lcl_")),s.indexOf("Lcl ")===0&&(s=s.replace("Lcl ","Lcl_")),s==="Color"||s==="ColorRGB"||s==="Vector"||s==="Vector3D"||s.indexOf("Lcl_")===0?r=[i.propertyList[4],i.propertyList[5],i.propertyList[6]]:r=i.propertyList[4],e[t]={type:s,type2:o,flag:a,value:r}}else e[i.name]===void 0?typeof i.id=="number"?(e[i.name]={},e[i.name][i.id]=i):e[i.name]=i:i.name==="PoseNode"?(Array.isArray(e[i.name])||(e[i.name]=[e[i.name]]),e[i.name].push(i)):e[i.name][i.id]===void 0&&(e[i.name][i.id]=i)}parseProperty(A){const e=A.getString(1);let i;switch(e){case"C":return A.getBoolean();case"D":return A.getFloat64();case"F":return A.getFloat32();case"I":return A.getInt32();case"L":return A.getInt64();case"R":return i=A.getUint32(),A.getArrayBuffer(i);case"S":return i=A.getUint32(),A.getString(i);case"Y":return A.getInt16();case"b":case"c":case"d":case"f":case"i":case"l":const t=A.getUint32(),s=A.getUint32(),o=A.getUint32();if(s===0)switch(e){case"b":case"c":return A.getBooleanArray(t);case"d":return A.getFloat64Array(t);case"f":return A.getFloat32Array(t);case"i":return A.getInt32Array(t);case"l":return A.getInt64Array(t)}const a=St(new Uint8Array(A.getArrayBuffer(o))),r=new xn(a.buffer);switch(e){case"b":case"c":return r.getBooleanArray(t);case"d":return r.getFloat64Array(t);case"f":return r.getFloat32Array(t);case"i":return r.getInt32Array(t);case"l":return r.getInt64Array(t)}break;default:throw new Error("THREE.FBXLoader: Unknown property type "+e)}}}class xn{constructor(A,e){this.dv=new DataView(A),this.offset=0,this.littleEndian=e!==void 0?e:!0,this._textDecoder=new TextDecoder}getOffset(){return this.offset}size(){return this.dv.buffer.byteLength}skip(A){this.offset+=A}getBoolean(){return(this.getUint8()&1)===1}getBooleanArray(A){const e=[];for(let i=0;i<A;i++)e.push(this.getBoolean());return e}getUint8(){const A=this.dv.getUint8(this.offset);return this.offset+=1,A}getInt16(){const A=this.dv.getInt16(this.offset,this.littleEndian);return this.offset+=2,A}getInt32(){const A=this.dv.getInt32(this.offset,this.littleEndian);return this.offset+=4,A}getInt32Array(A){const e=[];for(let i=0;i<A;i++)e.push(this.getInt32());return e}getUint32(){const A=this.dv.getUint32(this.offset,this.littleEndian);return this.offset+=4,A}getInt64(){let A,e;return this.littleEndian?(A=this.getUint32(),e=this.getUint32()):(e=this.getUint32(),A=this.getUint32()),e&2147483648?(e=~e&4294967295,A=~A&4294967295,A===4294967295&&(e=e+1&4294967295),A=A+1&4294967295,-(e*4294967296+A)):e*4294967296+A}getInt64Array(A){const e=[];for(let i=0;i<A;i++)e.push(this.getInt64());return e}getUint64(){let A,e;return this.littleEndian?(A=this.getUint32(),e=this.getUint32()):(e=this.getUint32(),A=this.getUint32()),e*4294967296+A}getFloat32(){const A=this.dv.getFloat32(this.offset,this.littleEndian);return this.offset+=4,A}getFloat32Array(A){const e=[];for(let i=0;i<A;i++)e.push(this.getFloat32());return e}getFloat64(){const A=this.dv.getFloat64(this.offset,this.littleEndian);return this.offset+=8,A}getFloat64Array(A){const e=[];for(let i=0;i<A;i++)e.push(this.getFloat64());return e}getArrayBuffer(A){const e=this.dv.buffer.slice(this.offset,this.offset+A);return this.offset+=A,e}getString(A){const e=this.offset;let i=new Uint8Array(this.dv.buffer,e,A);this.skip(A);const t=i.indexOf(0);return t>=0&&(i=new Uint8Array(this.dv.buffer,e,t)),this._textDecoder.decode(i)}}class Rn{add(A,e){this[A]=e}}function rl(n){const A="Kaydara FBX Binary \0";return n.byteLength>=A.length&&A===Mn(n,0,A.length)}function gl(n){const A=["K","a","y","d","a","r","a","\\","F","B","X","\\","B","i","n","a","r","y","\\","\\"];let e=0;function i(t){const s=n[t-1];return n=n.slice(e+t),e++,s}for(let t=0;t<A.length;++t)if(i(1)===A[t])return!1;return!0}function Fn(n){const A=/FBXVersion: (\d+)/,e=n.match(A);if(e)return parseInt(e[1]);throw new Error("THREE.FBXLoader: Cannot find the version number for the file given.")}function cl(n){return n/46186158e3}const ll=[];function ri(n,A,e,i){let t;switch(i.mappingType){case"ByPolygonVertex":t=n;break;case"ByPolygon":t=A;break;case"ByVertice":t=e;break;case"AllSame":t=i.indices[0];break;default:console.warn("THREE.FBXLoader: unknown attribute mapping type "+i.mappingType)}i.referenceType==="IndexToDirect"&&(t=i.indices[t]);const s=t*i.dataSize,o=s+i.dataSize;return Il(ll,i.buffer,s,o)}const ys=new qe,ct=new N;function kn(n){const A=new hA,e=new hA,i=new hA,t=new hA,s=new hA,o=new hA,a=new hA,r=new hA,l=new hA,g=new hA,c=new hA,I=new hA,B=n.inheritType?n.inheritType:0;n.translation&&A.setPosition(ct.fromArray(n.translation));const C=Nt(0);if(n.preRotation){const Y=n.preRotation.map(bA.degToRad);Y.push(C),e.makeRotationFromEuler(ys.fromArray(Y))}if(n.rotation){const Y=n.rotation.map(bA.degToRad);Y.push(n.eulerOrder||C),i.makeRotationFromEuler(ys.fromArray(Y))}if(n.postRotation){const Y=n.postRotation.map(bA.degToRad);Y.push(C),t.makeRotationFromEuler(ys.fromArray(Y)),t.invert()}n.scale&&s.scale(ct.fromArray(n.scale)),n.scalingOffset&&a.setPosition(ct.fromArray(n.scalingOffset)),n.scalingPivot&&o.setPosition(ct.fromArray(n.scalingPivot)),n.rotationOffset&&r.setPosition(ct.fromArray(n.rotationOffset)),n.rotationPivot&&l.setPosition(ct.fromArray(n.rotationPivot)),n.parentMatrixWorld&&(c.copy(n.parentMatrix),g.copy(n.parentMatrixWorld));const d=e.clone().multiply(i).multiply(t),E=new hA;E.extractRotation(g);const p=new hA;p.copyPosition(g);const f=p.clone().invert().multiply(g),Q=E.clone().invert().multiply(f),w=s,b=new hA;if(B===0)b.copy(E).multiply(d).multiply(Q).multiply(w);else if(B===1)b.copy(E).multiply(Q).multiply(d).multiply(w);else{const Y=new hA().scale(new N().setFromMatrixScale(c)).clone().invert(),O=Q.clone().multiply(Y);b.copy(E).multiply(d).multiply(O).multiply(w)}const S=l.clone().invert(),x=o.clone().invert();let D=A.clone().multiply(r).multiply(l).multiply(e).multiply(i).multiply(t).multiply(S).multiply(a).multiply(o).multiply(s).multiply(x);const F=new hA().copyPosition(D),P=g.clone().multiply(F);return I.copyPosition(P),D=I.clone().multiply(b),D.premultiply(g.invert()),D}function Nt(n){n=n||0;const A=["ZYX","YZX","XZY","ZXY","YXZ","XYZ"];return n===6?(console.warn("THREE.FBXLoader: unsupported Euler Order: Spherical XYZ. Animations and rotations may be incorrect."),A[0]):A[n]}function Ds(n){return n.split(",").map(function(A){return parseFloat(A)})}function Mn(n,A,e){return A===void 0&&(A=0),e===void 0&&(e=n.byteLength),new TextDecoder().decode(new Uint8Array(n,A,e))}function hl(n,A){for(let e=0,i=n.length,t=A.length;e<t;e++,i++)n[i]=A[e]}function Il(n,A,e,i){for(let t=e,s=0;t<i;t++,s++)n[s]=A[t];return n}class Bl extends Re{constructor(A){super(A)}load(A,e,i,t){const s=this,o=this.path===""?ze.extractUrlBase(A):this.path,a=new Be(this.manager);a.setPath(this.path),a.setRequestHeader(this.requestHeader),a.setWithCredentials(this.withCredentials),a.load(A,function(r){try{e(s.parse(r,o))}catch(l){t?t(l):console.error(l),s.manager.itemError(A)}},i,t)}setMaterialOptions(A){return this.materialOptions=A,this}parse(A,e){const i=A.split(`
460
- `);let t={};const s=/\s+/,o={};for(let r=0;r<i.length;r++){let l=i[r];if(l=l.trim(),l.length===0||l.charAt(0)==="#")continue;const g=l.indexOf(" ");let c=g>=0?l.substring(0,g):l;c=c.toLowerCase();let I=g>=0?l.substring(g+1):"";if(I=I.trim(),c==="newmtl")t={name:I},o[I]=t;else if(c==="ka"||c==="kd"||c==="ks"||c==="ke"){const B=I.split(s,3);t[c]=[parseFloat(B[0]),parseFloat(B[1]),parseFloat(B[2])]}else t[c]=I}const a=new Cl(this.resourcePath||e,this.materialOptions);return a.setCrossOrigin(this.crossOrigin),a.setManager(this.manager),a.setMaterials(o),a}}class Cl{constructor(A="",e={}){this.baseUrl=A,this.options=e,this.materialsInfo={},this.materials={},this.materialsArray=[],this.nameLookup={},this.crossOrigin="anonymous",this.side=this.options.side!==void 0?this.options.side:Ks,this.wrap=this.options.wrap!==void 0?this.options.wrap:Ve}setCrossOrigin(A){return this.crossOrigin=A,this}setManager(A){this.manager=A}setMaterials(A){this.materialsInfo=this.convert(A),this.materials={},this.materialsArray=[],this.nameLookup={}}convert(A){if(!this.options)return A;const e={};for(const i in A){const t=A[i],s={};e[i]=s;for(const o in t){let a=!0,r=t[o];const l=o.toLowerCase();switch(l){case"kd":case"ka":case"ks":this.options&&this.options.normalizeRGB&&(r=[r[0]/255,r[1]/255,r[2]/255]),this.options&&this.options.ignoreZeroRGBs&&r[0]===0&&r[1]===0&&r[2]===0&&(a=!1);break}a&&(s[l]=r)}}return e}preload(){for(const A in this.materialsInfo)this.create(A)}getIndex(A){return this.nameLookup[A]}getAsArray(){let A=0;for(const e in this.materialsInfo)this.materialsArray[A]=this.create(e),this.nameLookup[e]=A,A++;return this.materialsArray}create(A){return this.materials[A]===void 0&&this.createMaterial_(A),this.materials[A]}createMaterial_(A){const e=this,i=this.materialsInfo[A],t={name:A,side:this.side};function s(a,r){return typeof r!="string"||r===""?"":/^https?:\/\//i.test(r)?r:a+r}function o(a,r){if(t[a])return;const l=e.getTextureParams(r,t),g=e.loadTexture(s(e.baseUrl,l.url));g.repeat.copy(l.scale),g.offset.copy(l.offset),g.wrapS=e.wrap,g.wrapT=e.wrap,(a==="map"||a==="emissiveMap")&&(g.colorSpace=lA),t[a]=g}for(const a in i){const r=i[a];let l;if(r!=="")switch(a.toLowerCase()){case"kd":t.color=ZA.toWorkingColorSpace(new DA().fromArray(r),lA);break;case"ks":t.specular=ZA.toWorkingColorSpace(new DA().fromArray(r),lA);break;case"ke":t.emissive=ZA.toWorkingColorSpace(new DA().fromArray(r),lA);break;case"map_kd":o("map",r);break;case"map_ks":o("specularMap",r);break;case"map_ke":o("emissiveMap",r);break;case"norm":o("normalMap",r);break;case"map_bump":case"bump":o("bumpMap",r);break;case"map_d":o("alphaMap",r),t.transparent=!0;break;case"ns":t.shininess=parseFloat(r);break;case"d":l=parseFloat(r),l<1&&(t.opacity=l,t.transparent=!0);break;case"tr":l=parseFloat(r),this.options&&this.options.invertTrProperty&&(l=1-l),l>0&&(t.opacity=1-l,t.transparent=!0);break}}return this.materials[A]=new pt(t),this.materials[A]}getTextureParams(A,e){const i={scale:new UA(1,1),offset:new UA(0,0)},t=A.split(/\s+/);let s;return s=t.indexOf("-bm"),s>=0&&(e.bumpScale=parseFloat(t[s+1]),t.splice(s,2)),s=t.indexOf("-s"),s>=0&&(i.scale.set(parseFloat(t[s+1]),parseFloat(t[s+2])),t.splice(s,4)),s=t.indexOf("-o"),s>=0&&(i.offset.set(parseFloat(t[s+1]),parseFloat(t[s+2])),t.splice(s,4)),i.url=t.join(" ").trim(),i}loadTexture(A,e,i,t,s){const o=this.manager!==void 0?this.manager:Pa;let a=o.getHandler(A);a===null&&(a=new ui(o)),a.setCrossOrigin&&a.setCrossOrigin(this.crossOrigin);const r=a.load(A,i,t,s);return e!==void 0&&(r.mapping=e),r}}const El=/^[og]\s*(.+)?/,dl=/^mtllib /,ul=/^usemtl /,pl=/^usemap /,Gn=/\s+/,Tn=new N,Ss=new N,Nn=new N,Ln=new N,le=new N,gi=new DA;function Ql(){const n={objects:[],object:{},vertices:[],normals:[],colors:[],uvs:[],materials:{},materialLibraries:[],startObject:function(A,e){if(this.object&&this.object.fromDeclaration===!1){this.object.name=A,this.object.fromDeclaration=e!==!1;return}const i=this.object&&typeof this.object.currentMaterial=="function"?this.object.currentMaterial():void 0;if(this.object&&typeof this.object._finalize=="function"&&this.object._finalize(!0),this.object={name:A||"",fromDeclaration:e!==!1,geometry:{vertices:[],normals:[],colors:[],uvs:[],hasUVIndices:!1},materials:[],smooth:!0,startMaterial:function(t,s){const o=this._finalize(!1);o&&(o.inherited||o.groupCount<=0)&&this.materials.splice(o.index,1);const a={index:this.materials.length,name:t||"",mtllib:Array.isArray(s)&&s.length>0?s[s.length-1]:"",smooth:o!==void 0?o.smooth:this.smooth,groupStart:o!==void 0?o.groupEnd:0,groupEnd:-1,groupCount:-1,inherited:!1,clone:function(r){const l={index:typeof r=="number"?r:this.index,name:this.name,mtllib:this.mtllib,smooth:this.smooth,groupStart:0,groupEnd:-1,groupCount:-1,inherited:!1};return l.clone=this.clone.bind(l),l}};return this.materials.push(a),a},currentMaterial:function(){if(this.materials.length>0)return this.materials[this.materials.length-1]},_finalize:function(t){const s=this.currentMaterial();if(s&&s.groupEnd===-1&&(s.groupEnd=this.geometry.vertices.length/3,s.groupCount=s.groupEnd-s.groupStart,s.inherited=!1),t&&this.materials.length>1)for(let o=this.materials.length-1;o>=0;o--)this.materials[o].groupCount<=0&&this.materials.splice(o,1);return t&&this.materials.length===0&&this.materials.push({name:"",smooth:this.smooth}),s}},i&&i.name&&typeof i.clone=="function"){const t=i.clone(0);t.inherited=!0,this.object.materials.push(t)}this.objects.push(this.object)},finalize:function(){this.object&&typeof this.object._finalize=="function"&&this.object._finalize(!0)},parseVertexIndex:function(A,e){const i=parseInt(A,10);return(i>=0?i-1:i+e/3)*3},parseNormalIndex:function(A,e){const i=parseInt(A,10);return(i>=0?i-1:i+e/3)*3},parseUVIndex:function(A,e){const i=parseInt(A,10);return(i>=0?i-1:i+e/2)*2},addVertex:function(A,e,i){const t=this.vertices,s=this.object.geometry.vertices;s.push(t[A+0],t[A+1],t[A+2]),s.push(t[e+0],t[e+1],t[e+2]),s.push(t[i+0],t[i+1],t[i+2])},addVertexPoint:function(A){const e=this.vertices;this.object.geometry.vertices.push(e[A+0],e[A+1],e[A+2])},addVertexLine:function(A){const e=this.vertices;this.object.geometry.vertices.push(e[A+0],e[A+1],e[A+2])},addNormal:function(A,e,i){const t=this.normals,s=this.object.geometry.normals;s.push(t[A+0],t[A+1],t[A+2]),s.push(t[e+0],t[e+1],t[e+2]),s.push(t[i+0],t[i+1],t[i+2])},addFaceNormal:function(A,e,i){const t=this.vertices,s=this.object.geometry.normals;Tn.fromArray(t,A),Ss.fromArray(t,e),Nn.fromArray(t,i),le.subVectors(Nn,Ss),Ln.subVectors(Tn,Ss),le.cross(Ln),le.normalize(),s.push(le.x,le.y,le.z),s.push(le.x,le.y,le.z),s.push(le.x,le.y,le.z)},addColor:function(A,e,i){const t=this.colors,s=this.object.geometry.colors;t[A]!==void 0&&s.push(t[A+0],t[A+1],t[A+2]),t[e]!==void 0&&s.push(t[e+0],t[e+1],t[e+2]),t[i]!==void 0&&s.push(t[i+0],t[i+1],t[i+2])},addUV:function(A,e,i){const t=this.uvs,s=this.object.geometry.uvs;s.push(t[A+0],t[A+1]),s.push(t[e+0],t[e+1]),s.push(t[i+0],t[i+1])},addDefaultUV:function(){const A=this.object.geometry.uvs;A.push(0,0),A.push(0,0),A.push(0,0)},addUVLine:function(A){const e=this.uvs;this.object.geometry.uvs.push(e[A+0],e[A+1])},addFace:function(A,e,i,t,s,o,a,r,l){const g=this.vertices.length;let c=this.parseVertexIndex(A,g),I=this.parseVertexIndex(e,g),B=this.parseVertexIndex(i,g);if(this.addVertex(c,I,B),this.addColor(c,I,B),a!==void 0&&a!==""){const C=this.normals.length;c=this.parseNormalIndex(a,C),I=this.parseNormalIndex(r,C),B=this.parseNormalIndex(l,C),this.addNormal(c,I,B)}else this.addFaceNormal(c,I,B);if(t!==void 0&&t!==""){const C=this.uvs.length;c=this.parseUVIndex(t,C),I=this.parseUVIndex(s,C),B=this.parseUVIndex(o,C),this.addUV(c,I,B),this.object.geometry.hasUVIndices=!0}else this.addDefaultUV()},addPointGeometry:function(A){this.object.geometry.type="Points";const e=this.vertices.length;for(let i=0,t=A.length;i<t;i++){const s=this.parseVertexIndex(A[i],e);this.addVertexPoint(s),this.addColor(s)}},addLineGeometry:function(A,e){this.object.geometry.type="Line";const i=this.vertices.length,t=this.uvs.length;for(let s=0,o=A.length;s<o;s++)this.addVertexLine(this.parseVertexIndex(A[s],i));for(let s=0,o=e.length;s<o;s++)this.addUVLine(this.parseUVIndex(e[s],t))}};return n.startObject("",!1),n}class fl extends Re{constructor(A){super(A),this.materials=null,this.materialsLoader=new Bl(A)}load(A,e,i,t){const s=this,o=new Be(this.manager);o.setPath(this.path),o.setRequestHeader(this.requestHeader),o.setWithCredentials(this.withCredentials),o.load(A,async function(a){try{const r=s.parse(a,!0);for(let l=0,g=r.materialLibraries.length;l<g;l++){const c=r.materialLibraries[l];if(!c||typeof c!="string"||c.trim()===""){console.warn("THREE.OBJLoader: Invalid or empty material library reference, skipping.");continue}const I=A.startsWith("blob:")?A+"/"+c:new URL(c,A);console.debug("Loading MTL file: "+I),await new Promise((B,C)=>{s.materialsLoader.load(I.toString(),d=>{s.setMaterials(d),B()},null,C)})}e(s.createObjects(r))}catch(r){t?t(r):console.error(r),s.manager.itemError(A)}},i,t)}setMTLLoader(A){return this.materialsLoader=A,this}setMaterials(A){return this.materials=A,this}parse(A,e=!1){const i=new Ql;A.indexOf(`\r
459
+ `};class ps extends Ao{constructor(A){super({type:"LineMaterial",uniforms:to.clone(be.line.uniforms),vertexShader:be.line.vertexShader,fragmentShader:be.line.fragmentShader,clipping:!0}),this.isLineMaterial=!0,this.setValues(A)}get color(){return this.uniforms.diffuse.value}set color(A){this.uniforms.diffuse.value=A}get worldUnits(){return"WORLD_UNITS"in this.defines}set worldUnits(A){A===!0?this.defines.WORLD_UNITS="":delete this.defines.WORLD_UNITS}get linewidth(){return this.uniforms.linewidth.value}set linewidth(A){this.uniforms.linewidth&&(this.uniforms.linewidth.value=A)}get dashed(){return"USE_DASH"in this.defines}set dashed(A){A===!0!==this.dashed&&(this.needsUpdate=!0),A===!0?this.defines.USE_DASH="":delete this.defines.USE_DASH}get dashScale(){return this.uniforms.dashScale.value}set dashScale(A){this.uniforms.dashScale.value=A}get dashSize(){return this.uniforms.dashSize.value}set dashSize(A){this.uniforms.dashSize.value=A}get dashOffset(){return this.uniforms.dashOffset.value}set dashOffset(A){this.uniforms.dashOffset.value=A}get gapSize(){return this.uniforms.gapSize.value}set gapSize(A){this.uniforms.gapSize.value=A}get opacity(){return this.uniforms.opacity.value}set opacity(A){this.uniforms&&(this.uniforms.opacity.value=A)}get resolution(){return this.uniforms.resolution.value}set resolution(A){this.uniforms.resolution.value.copy(A)}get alphaToCoverage(){return"USE_ALPHA_TO_COVERAGE"in this.defines}set alphaToCoverage(A){this.defines&&(A===!0!==this.alphaToCoverage&&(this.needsUpdate=!0),A===!0?this.defines.USE_ALPHA_TO_COVERAGE="":delete this.defines.USE_ALPHA_TO_COVERAGE)}}const Qs=new ke,Qn=new N,fn=new N,HA=new ke,qA=new ke,De=new ke,fs=new N,ms=new hA,OA=new ka,mn=new N,oi=new Kt,ni=new vi,Se=new ke;let ve,et;function bn(n,A,e){return Se.set(0,0,-A,1).applyMatrix4(n.projectionMatrix),Se.multiplyScalar(1/Se.w),Se.x=et/e.width,Se.y=et/e.height,Se.applyMatrix4(n.projectionMatrixInverse),Se.multiplyScalar(1/Se.w),Math.abs(Math.max(Se.x,Se.y))}function Lc(n,A){const e=n.matrixWorld,i=n.geometry,t=i.attributes.instanceStart,s=i.attributes.instanceEnd,o=Math.min(i.instanceCount,t.count);for(let a=0,r=o;a<r;a++){OA.start.fromBufferAttribute(t,a),OA.end.fromBufferAttribute(s,a),OA.applyMatrix4(e);const l=new N,g=new N;ve.distanceSqToSegment(OA.start,OA.end,g,l),g.distanceTo(l)<et*.5&&A.push({point:g,pointOnLine:l,distance:ve.origin.distanceTo(g),object:n,face:null,faceIndex:a,uv:null,uv1:null})}}function Uc(n,A,e){const i=A.projectionMatrix,t=n.material.resolution,s=n.matrixWorld,o=n.geometry,a=o.attributes.instanceStart,r=o.attributes.instanceEnd,l=Math.min(o.instanceCount,a.count),g=-A.near;ve.at(1,De),De.w=1,De.applyMatrix4(A.matrixWorldInverse),De.applyMatrix4(i),De.multiplyScalar(1/De.w),De.x*=t.x/2,De.y*=t.y/2,De.z=0,fs.copy(De),ms.multiplyMatrices(A.matrixWorldInverse,s);for(let c=0,I=l;c<I;c++){if(HA.fromBufferAttribute(a,c),qA.fromBufferAttribute(r,c),HA.w=1,qA.w=1,HA.applyMatrix4(ms),qA.applyMatrix4(ms),HA.z>g&&qA.z>g)continue;if(HA.z>g){const p=HA.z-qA.z,f=(HA.z-g)/p;HA.lerp(qA,f)}else if(qA.z>g){const p=qA.z-HA.z,f=(qA.z-g)/p;qA.lerp(HA,f)}HA.applyMatrix4(i),qA.applyMatrix4(i),HA.multiplyScalar(1/HA.w),qA.multiplyScalar(1/qA.w),HA.x*=t.x/2,HA.y*=t.y/2,qA.x*=t.x/2,qA.y*=t.y/2,OA.start.copy(HA),OA.start.z=0,OA.end.copy(qA),OA.end.z=0;const B=OA.closestPointToPointParameter(fs,!0);OA.at(B,mn);const E=bA.lerp(HA.z,qA.z,B),u=E>=-1&&E<=1,C=fs.distanceTo(mn)<et*.5;if(u&&C){OA.start.fromBufferAttribute(a,c),OA.end.fromBufferAttribute(r,c),OA.start.applyMatrix4(s),OA.end.applyMatrix4(s);const p=new N,f=new N;ve.distanceSqToSegment(OA.start,OA.end,f,p),e.push({point:f,pointOnLine:p,distance:ve.origin.distanceTo(f),object:n,face:null,faceIndex:c,uv:null,uv1:null})}}}class _c extends K{constructor(A=new pn,e=new ps({color:Math.random()*16777215})){super(A,e),this.isLineSegments2=!0,this.type="LineSegments2"}computeLineDistances(){const A=this.geometry,e=A.attributes.instanceStart,i=A.attributes.instanceEnd,t=new Float32Array(2*e.count);for(let o=0,a=0,r=e.count;o<r;o++,a+=2)Qn.fromBufferAttribute(e,o),fn.fromBufferAttribute(i,o),t[a]=a===0?0:t[a-1],t[a+1]=t[a]+Qn.distanceTo(fn);const s=new Ni(t,2,1);return A.setAttribute("instanceDistanceStart",new Pe(s,1,0)),A.setAttribute("instanceDistanceEnd",new Pe(s,1,1)),this}raycast(A,e){const i=this.material.worldUnits,t=A.camera;t===null&&!i&&console.error('LineSegments2: "Raycaster.camera" needs to be set in order to raycast against LineSegments2 while worldUnits is set to false.');const s=A.params.Line2!==void 0&&A.params.Line2.threshold||0;ve=A.ray;const o=this.matrixWorld,a=this.geometry,r=this.material;et=r.linewidth+s,a.boundingSphere===null&&a.computeBoundingSphere(),ni.copy(a.boundingSphere).applyMatrix4(o);let l;if(i)l=et*.5;else{const c=Math.max(t.near,ni.distanceToPoint(ve.origin));l=bn(t,c,r.resolution)}if(ni.radius+=l,ve.intersectsSphere(ni)===!1)return;a.boundingBox===null&&a.computeBoundingBox(),oi.copy(a.boundingBox).applyMatrix4(o);let g;if(i)g=et*.5;else{const c=Math.max(t.near,oi.distanceToPoint(ve.origin));g=bn(t,c,r.resolution)}oi.expandByScalar(g),ve.intersectsBox(oi)!==!1&&(i?Lc(this,e):Uc(this,t,e))}onBeforeRender(A){const e=this.material.uniforms;e&&e.resolution&&(A.getViewport(Qs),this.material.uniforms.resolution.value.set(Qs.z,Qs.w))}}class wn extends pn{constructor(){super(),this.isLineGeometry=!0,this.type="LineGeometry"}setPositions(A){const e=A.length-3,i=new Float32Array(2*e);for(let t=0;t<e;t+=3)i[2*t]=A[t],i[2*t+1]=A[t+1],i[2*t+2]=A[t+2],i[2*t+3]=A[t+3],i[2*t+4]=A[t+4],i[2*t+5]=A[t+5];return super.setPositions(i),this}setColors(A){const e=A.length-3,i=new Float32Array(2*e);for(let t=0;t<e;t+=3)i[2*t]=A[t],i[2*t+1]=A[t+1],i[2*t+2]=A[t+2],i[2*t+3]=A[t+3],i[2*t+4]=A[t+4],i[2*t+5]=A[t+5];return super.setColors(i),this}fromLine(A){const e=A.geometry;return this.setPositions(e.attributes.position.array),this}}class Pc extends _c{constructor(A=new wn,e=new ps({color:Math.random()*16777215})){super(A,e),this.isLine2=!0,this.type="Line2"}}class Hc extends K{constructor(A){const e=new qc(A),i=new Gi(e.image.width*.001,e.image.height*.001),t=new Qe({map:e,toneMapped:!1,transparent:!0});super(i,t);function s(o){t.map.dispatchDOMEvent(o)}this.addEventListener("mousedown",s),this.addEventListener("mousemove",s),this.addEventListener("mouseup",s),this.addEventListener("click",s),this.dispose=function(){i.dispose(),t.dispose(),t.map.dispose(),bs.delete(A),this.removeEventListener("mousedown",s),this.removeEventListener("mousemove",s),this.removeEventListener("mouseup",s),this.removeEventListener("click",s)}}}class qc extends eo{constructor(A){super(yn(A)),this.dom=A,this.anisotropy=16,this.colorSpace=lA,this.minFilter=ne,this.magFilter=ne;const e=new MutationObserver(()=>{this.scheduleUpdate||(this.scheduleUpdate=setTimeout(()=>this.update(),16))}),i={attributes:!0,childList:!0,subtree:!0,characterData:!0};e.observe(A,i),this.observer=e}dispatchDOMEvent(A){A.data&&Oc(this.dom,A.type,A.data.x,A.data.y)}update(){this.image=yn(this.dom),this.needsUpdate=!0,this.scheduleUpdate=null}dispose(){this.observer&&this.observer.disconnect(),this.scheduleUpdate=clearTimeout(this.scheduleUpdate),super.dispose()}}const bs=new WeakMap;function yn(n){const A=document.createRange(),e=new DA;function i(I){const B=[];let E=!1;function u(){if(E&&(E=!1,I.restore()),B.length===0)return;let C=-1/0,p=-1/0,f=1/0,Q=1/0;for(let w=0;w<B.length;w++){const b=B[w];C=Math.max(C,b.x),p=Math.max(p,b.y),f=Math.min(f,b.x+b.width),Q=Math.min(Q,b.y+b.height)}I.save(),I.beginPath(),I.rect(C,p,f-C,Q-p),I.clip(),E=!0}return{add:function(C){B.push(C),u()},remove:function(){B.pop(),u()}}}function t(I,B,E,u){u!==""&&(I.textTransform==="uppercase"&&(u=u.toUpperCase()),g.font=I.fontWeight+" "+I.fontSize+" "+I.fontFamily,g.textBaseline="top",g.fillStyle=I.color,g.fillText(u,B,E+parseFloat(I.fontSize)*.1))}function s(I,B,E,u,C){E<2*C&&(C=E/2),u<2*C&&(C=u/2),g.beginPath(),g.moveTo(I+C,B),g.arcTo(I+E,B,I+E,B+u,C),g.arcTo(I+E,B+u,I,B+u,C),g.arcTo(I,B+u,I,B,C),g.arcTo(I,B,I+E,B,C),g.closePath()}function o(I,B,E,u,C,p){const f=I[B+"Width"],Q=I[B+"Style"],w=I[B+"Color"];f!=="0px"&&Q!=="none"&&w!=="transparent"&&w!=="rgba(0, 0, 0, 0)"&&(g.strokeStyle=w,g.lineWidth=parseFloat(f),g.beginPath(),g.moveTo(E,u),g.lineTo(E+C,u+p),g.stroke())}function a(I,B){if(I.nodeType===Node.COMMENT_NODE||I.nodeName==="SCRIPT"||I.style&&I.style.display==="none")return;let E=0,u=0,C=0,p=0;if(I.nodeType===Node.TEXT_NODE){A.selectNode(I);const Q=A.getBoundingClientRect();E=Q.left-r.left-.5,u=Q.top-r.top-.5,C=Q.width,p=Q.height,t(B,E,u,I.nodeValue.trim())}else if(I instanceof HTMLCanvasElement){const Q=I.getBoundingClientRect();E=Q.left-r.left-.5,u=Q.top-r.top-.5,g.save();const w=window.devicePixelRatio;g.scale(1/w,1/w),g.drawImage(I,E,u),g.restore()}else if(I instanceof HTMLImageElement){const Q=I.getBoundingClientRect();E=Q.left-r.left-.5,u=Q.top-r.top-.5,C=Q.width,p=Q.height,g.drawImage(I,E,u,C,p)}else{const Q=I.getBoundingClientRect();E=Q.left-r.left-.5,u=Q.top-r.top-.5,C=Q.width,p=Q.height,B=window.getComputedStyle(I),s(E,u,C,p,parseFloat(B.borderRadius));const w=B.backgroundColor;w!=="transparent"&&w!=="rgba(0, 0, 0, 0)"&&(g.fillStyle=w,g.fill());const b=["borderTop","borderLeft","borderBottom","borderRight"];let S=!0,x=null;for(const D of b){if(x!==null&&(S=B[D+"Width"]===B[x+"Width"]&&B[D+"Color"]===B[x+"Color"]&&B[D+"Style"]===B[x+"Style"]),S===!1)break;x=D}if(S===!0){const D=parseFloat(B.borderTopWidth);B.borderTopWidth!=="0px"&&B.borderTopStyle!=="none"&&B.borderTopColor!=="transparent"&&B.borderTopColor!=="rgba(0, 0, 0, 0)"&&(g.strokeStyle=B.borderTopColor,g.lineWidth=D,g.stroke())}else o(B,"borderTop",E,u,C,0),o(B,"borderLeft",E,u,0,p),o(B,"borderBottom",E,u+p,C,0),o(B,"borderRight",E+C,u,0,p);if(I instanceof HTMLInputElement){let D=B.accentColor;(D===void 0||D==="auto")&&(D=B.color),e.set(D);const F=Math.sqrt(.299*e.r**2+.587*e.g**2+.114*e.b**2)<.5?"white":"#111111";if(I.type==="radio"&&(s(E,u,C,p,p),g.fillStyle="white",g.strokeStyle=D,g.lineWidth=1,g.fill(),g.stroke(),I.checked&&(s(E+2,u+2,C-4,p-4,p),g.fillStyle=D,g.strokeStyle=F,g.lineWidth=2,g.fill(),g.stroke())),I.type==="checkbox"&&(s(E,u,C,p,2),g.fillStyle=I.checked?D:"white",g.strokeStyle=I.checked?F:D,g.lineWidth=1,g.stroke(),g.fill(),I.checked)){const P=g.textAlign;g.textAlign="center";const Y={color:F,fontFamily:B.fontFamily,fontSize:p+"px",fontWeight:"bold"};t(Y,E+C/2,u,"\u2714"),g.textAlign=P}if(I.type==="range"){const[P,Y,O]=["min","max","value"].map(_=>parseFloat(I[_])),X=(O-P)/(Y-P)*(C-p);s(E,u+p/4,C,p/2,p/4),g.fillStyle=F,g.strokeStyle=D,g.lineWidth=1,g.fill(),g.stroke(),s(E,u+p/4,X+p/2,p/2,p/4),g.fillStyle=D,g.fill(),s(E+X,u,p,p,p/2),g.fillStyle=D,g.fill()}(I.type==="color"||I.type==="text"||I.type==="number")&&(c.add({x:E,y:u,width:C,height:p}),t(B,E+parseInt(B.paddingLeft),u+parseInt(B.paddingTop),I.value),c.remove())}}const f=B.overflow==="auto"||B.overflow==="hidden";f&&c.add({x:E,y:u,width:C,height:p});for(let Q=0;Q<I.childNodes.length;Q++)a(I.childNodes[Q],B);f&&c.remove()}const r=n.getBoundingClientRect();let l=bs.get(n);l===void 0&&(l=document.createElement("canvas"),l.width=r.width,l.height=r.height,bs.set(n,l));const g=l.getContext("2d"),c=new i(g);return g.clearRect(0,0,l.width,l.height),a(n),l}function Oc(n,A,e,i){const t={clientX:e*n.offsetWidth+n.offsetLeft,clientY:i*n.offsetHeight+n.offsetTop,view:n.ownerDocument.defaultView};window.dispatchEvent(new MouseEvent(A,t));const s=n.getBoundingClientRect();e=e*s.width+s.left,i=i*s.height+s.top;function o(a){if(a.nodeType!==Node.TEXT_NODE&&a.nodeType!==Node.COMMENT_NODE){const r=a.getBoundingClientRect();if(e>r.left&&e<r.right&&i>r.top&&i<r.bottom&&(a.dispatchEvent(new MouseEvent(A,t)),a instanceof HTMLInputElement&&a.type==="range"&&(A==="mousedown"||A==="click"))){const[l,g]=["min","max"].map(B=>parseFloat(a[B])),c=r.width,I=(e-r.x)/c;a.value=l+(g-l)*I,a.dispatchEvent(new InputEvent("input",{bubbles:!0}))}for(let l=0;l<a.childNodes.length;l++)o(a.childNodes[l])}}o(n)}const ai=new UA,gt={type:"",data:ai},Dn=new ki;class Kc extends Xe{listenToPointerEvents(A,e){const i=this,t=new ki,s=A.domElement;function o(a){a.stopPropagation();const r=A.domElement.getBoundingClientRect();ai.x=(a.clientX-r.left)/r.width*2-1,ai.y=-(a.clientY-r.top)/r.height*2+1,t.setFromCamera(ai,e);const l=t.intersectObjects(i.children,!1);if(l.length>0){const g=l[0],c=g.object,I=g.uv;gt.type=a.type,gt.data.set(I.x,1-I.y),c.dispatchEvent(gt)}}s.addEventListener("pointerdown",o),s.addEventListener("pointerup",o),s.addEventListener("pointermove",o),s.addEventListener("mousedown",o),s.addEventListener("mouseup",o),s.addEventListener("mousemove",o),s.addEventListener("click",o)}listenToXRControllerEvents(A){const e=this,i={move:"mousemove",select:"click",selectstart:"mousedown",selectend:"mouseup"};function t(s){const o=s.target;Dn.setFromXRController(o);const a=Dn.intersectObjects(e.children,!1);if(a.length>0){const r=a[0],l=r.object,g=r.uv;gt.type=i[s.type],gt.data.set(g.x,1-g.y),l.dispatchEvent(gt)}}A.addEventListener("move",t),A.addEventListener("select",t),A.addEventListener("selectstart",t),A.addEventListener("selectend",t)}}const Gt=new N,Tt=new N,Sn=new io;class Yc extends Ht{constructor(A,e=1,i=16711680){const t=new oe,s=A.geometry.attributes.normal.count,o=new FA(s*2*3,3);t.setAttribute("position",o),super(t,new Fe({color:i,toneMapped:!1})),this.object=A,this.size=e,this.type="VertexNormalsHelper",this.matrixAutoUpdate=!1,this.update()}update(){this.object.updateMatrixWorld(!0),Sn.getNormalMatrix(this.object.matrixWorld);const A=this.object.matrixWorld,e=this.geometry.attributes.position,i=this.object.geometry;if(i){const t=i.attributes.position,s=i.attributes.normal;let o=0;for(let a=0,r=t.count;a<r;a++)Gt.fromBufferAttribute(t,a).applyMatrix4(A),Tt.fromBufferAttribute(s,a),Tt.applyMatrix3(Sn).normalize().multiplyScalar(this.size).add(Gt),e.setXYZ(o,Gt.x,Gt.y,Gt.z),o=o+1,e.setXYZ(o,Tt.x,Tt.y,Tt.z),o=o+1}e.needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}}function vn(n,A,e){const i=e.length-n-1;if(A>=e[i])return i-1;if(A<=e[n])return n;let t=n,s=i,o=Math.floor((t+s)/2);for(;A<e[o]||A>=e[o+1];)A<e[o]?s=o:t=o,o=Math.floor((t+s)/2);return o}function Jc(n,A,e,i){const t=[],s=[],o=[];t[0]=1;for(let a=1;a<=e;++a){s[a]=A-i[n+1-a],o[a]=i[n+a]-A;let r=0;for(let l=0;l<a;++l){const g=o[l+1],c=s[a-l],I=t[l]/(g+c);t[l]=r+g*I,r=c*I}t[a]=r}return t}function jc(n,A,e,i){const t=vn(n,i,A),s=Jc(t,i,n,A),o=new ke(0,0,0,0);for(let a=0;a<=n;++a){const r=e[t-n+a],l=s[a],g=r.w*l;o.x+=r.x*g,o.y+=r.y*g,o.z+=r.z*g,o.w+=r.w*l}return o}function zc(n,A,e,i,t){const s=[];for(let c=0;c<=e;++c)s[c]=0;const o=[];for(let c=0;c<=i;++c)o[c]=s.slice(0);const a=[];for(let c=0;c<=e;++c)a[c]=s.slice(0);a[0][0]=1;const r=s.slice(0),l=s.slice(0);for(let c=1;c<=e;++c){r[c]=A-t[n+1-c],l[c]=t[n+c]-A;let I=0;for(let B=0;B<c;++B){const E=l[B+1],u=r[c-B];a[c][B]=E+u;const C=a[B][c-1]/a[c][B];a[B][c]=I+E*C,I=u*C}a[c][c]=I}for(let c=0;c<=e;++c)o[0][c]=a[c][e];for(let c=0;c<=e;++c){let I=0,B=1;const E=[];for(let u=0;u<=e;++u)E[u]=s.slice(0);E[0][0]=1;for(let u=1;u<=i;++u){let C=0;const p=c-u,f=e-u;c>=u&&(E[B][0]=E[I][0]/a[f+1][p],C=E[B][0]*a[p][f]);const Q=p>=-1?1:-p,w=c-1<=f?u-1:e-c;for(let S=Q;S<=w;++S)E[B][S]=(E[I][S]-E[I][S-1])/a[f+1][p+S],C+=E[B][S]*a[p+S][f];c<=f&&(E[B][u]=-E[I][u-1]/a[f+1][c],C+=E[B][u]*a[c][f]),o[u][c]=C;const b=I;I=B,B=b}}let g=e;for(let c=1;c<=i;++c){for(let I=0;I<=e;++I)o[c][I]*=g;g*=e-c}return o}function Vc(n,A,e,i,t){const s=t<n?t:n,o=[],a=vn(n,i,A),r=zc(a,i,n,s,A),l=[];for(let g=0;g<e.length;++g){const c=e[g].clone(),I=c.w;c.x*=I,c.y*=I,c.z*=I,l[g]=c}for(let g=0;g<=s;++g){const c=l[a-n].clone().multiplyScalar(r[g][0]);for(let I=1;I<=n;++I)c.add(l[a-n+I].clone().multiplyScalar(r[g][I]));o[g]=c}for(let g=s+1;g<=t+1;++g)o[g]=new ke(0,0,0);return o}function Xc(n,A){let e=1;for(let t=2;t<=n;++t)e*=t;let i=1;for(let t=2;t<=A;++t)i*=t;for(let t=2;t<=n-A;++t)i*=t;return e/i}function Wc(n){const A=n.length,e=[],i=[];for(let s=0;s<A;++s){const o=n[s];e[s]=new N(o.x,o.y,o.z),i[s]=o.w}const t=[];for(let s=0;s<A;++s){const o=e[s].clone();for(let a=1;a<=s;++a)o.sub(t[s-a].clone().multiplyScalar(Xc(s,a)*i[a]));t[s]=o.divideScalar(i[0])}return t}function Zc(n,A,e,i,t){const s=Vc(n,A,e,i,t);return Wc(s)}class $c extends Ga{constructor(A,e,i,t,s){super(),this.degree=A,this.knots=e,this.controlPoints=[],this.startKnot=t||0,this.endKnot=s||this.knots.length-1;for(let o=0;o<i.length;++o){const a=i[o];this.controlPoints[o]=new ke(a.x,a.y,a.z,a.w)}}getPoint(A,e=new N){const i=e,t=this.knots[this.startKnot]+A*(this.knots[this.endKnot]-this.knots[this.startKnot]),s=jc(this.degree,this.knots,this.controlPoints,t);return s.w!==1&&s.divideScalar(s.w),i.set(s.x,s.y,s.z)}getTangent(A,e=new N){const i=e,t=this.knots[0]+A*(this.knots[this.knots.length-1]-this.knots[0]),s=Zc(this.degree,this.knots,this.controlPoints,t,1);return i.copy(s[1]).normalize(),i}}let iA,kA,VA;class Al extends Re{constructor(A){super(A)}load(A,e,i,t){const s=this,o=s.path===""?ze.extractUrlBase(A):s.path,a=new Be(this.manager);a.setPath(s.path),a.setResponseType("arraybuffer"),a.setRequestHeader(s.requestHeader),a.setWithCredentials(s.withCredentials),a.load(A,function(r){try{e(s.parse(r,o))}catch(l){t?t(l):console.error(l),s.manager.itemError(A)}},i,t)}parse(A,e){if(nl(A))iA=new ol().parse(A);else{const t=kn(A);if(!al(t))throw new Error("THREE.FBXLoader: Unknown format.");if(Fn(t)<7e3)throw new Error("THREE.FBXLoader: FBX version not supported, FileVersion: "+Fn(t));iA=new sl().parse(t)}const i=new di(this.manager).setPath(this.resourcePath||e).setCrossOrigin(this.crossOrigin);return new el(i,this.manager).parse(iA)}getFbxTree(){return iA}}class el{constructor(A,e){this.textureLoader=A,this.manager=e}parse(){kA=this.parseConnections();const A=this.parseImages(),e=this.parseTextures(A),i=this.parseMaterials(e),t=this.parseDeformers(),s=new tl().parse(t);return this.parseScene(t,s,i),VA}parseConnections(){const A=new Map;return"Connections"in iA&&iA.Connections.connections.forEach(function(e){const i=e[0],t=e[1],s=e[2];A.has(i)||A.set(i,{parents:[],children:[]});const o={ID:t,relationship:s};A.get(i).parents.push(o),A.has(t)||A.set(t,{parents:[],children:[]});const a={ID:i,relationship:s};A.get(t).children.push(a)}),A}parseImages(){const A={},e={};if("Video"in iA.Objects){const i=iA.Objects.Video;for(const t in i){const s=i[t],o=parseInt(t);if(A[o]=s.RelativeFilename||s.Filename,"Content"in s){const a=s.Content instanceof ArrayBuffer&&s.Content.byteLength>0,r=typeof s.Content=="string"&&s.Content!=="";if(a||r){const l=this.parseImage(i[t]);e[s.RelativeFilename||s.Filename]=l}}}}for(const i in A){const t=A[i];e[t]!==void 0?A[i]=e[t]:A[i]=A[i].split("\\").pop()}return A}parseImage(A){const e=A.Content,i=A.RelativeFilename||A.Filename,t=i.slice(i.lastIndexOf(".")+1).toLowerCase();let s;switch(t){case"bmp":s="image/bmp";break;case"jpg":case"jpeg":s="image/jpeg";break;case"png":s="image/png";break;case"tif":s="image/tiff";break;case"tga":this.manager.getHandler(".tga")===null&&console.warn("FBXLoader: TGA loader not found, skipping ",i),s="image/tga";break;default:console.warn('FBXLoader: Image type "'+t+'" is not supported.');return}if(typeof e=="string")return"data:"+s+";base64,"+e;{const o=new Uint8Array(e);return window.URL.createObjectURL(new Blob([o],{type:s}))}}parseTextures(A){const e=new Map;if("Texture"in iA.Objects){const i=iA.Objects.Texture;for(const t in i){const s=this.parseTexture(i[t],A);e.set(parseInt(t),s)}}return e}parseTexture(A,e){const i=this.loadTexture(A,e);i.ID=A.id,i.name=A.attrName;const t=A.WrapModeU,s=A.WrapModeV,o=t!==void 0?t.value:0,a=s!==void 0?s.value:0;if(i.wrapS=o===0?Ve:Pt,i.wrapT=a===0?Ve:Pt,"Scaling"in A){const r=A.Scaling.value;i.repeat.x=r[0],i.repeat.y=r[1]}if("Translation"in A){const r=A.Translation.value;i.offset.x=r[0],i.offset.y=r[1]}return i}loadTexture(A,e){const i=new Set(["tga","tif","tiff","exr","dds","hdr","ktx2"]),t=A.FileName.split(".").pop().toLowerCase(),s=i.has(t)?this.manager.getHandler(`.${t}`):this.textureLoader;if(!s)return console.warn(`FBXLoader: ${t.toUpperCase()} loader not found, creating placeholder texture for`,A.RelativeFilename),new wi;const o=s.path;o||s.setPath(this.textureLoader.path);const a=kA.get(A.id).children;let r;a!==void 0&&a.length>0&&e[a[0].ID]!==void 0&&(r=e[a[0].ID],(r.indexOf("blob:")===0||r.indexOf("data:")===0)&&s.setPath(void 0));const l=s.load(r);return s.setPath(o),l}parseMaterials(A){const e=new Map;if("Material"in iA.Objects){const i=iA.Objects.Material;for(const t in i){const s=this.parseMaterial(i[t],A);s!==null&&e.set(parseInt(t),s)}}return e}parseMaterial(A,e){const i=A.id,t=A.attrName;let s=A.ShadingModel;if(typeof s=="object"&&(s=s.value),!kA.has(i))return null;const o=this.parseParameters(A,e,i);let a;switch(s.toLowerCase()){case"phong":a=new pt;break;case"lambert":a=new Ta;break;default:console.warn('THREE.FBXLoader: unknown material type "%s". Defaulting to MeshPhongMaterial.',s),a=new pt;break}return a.setValues(o),a.name=t,a}parseParameters(A,e,i){const t={};A.BumpFactor&&(t.bumpScale=A.BumpFactor.value),A.Diffuse?t.color=ZA.toWorkingColorSpace(new DA().fromArray(A.Diffuse.value),lA):A.DiffuseColor&&(A.DiffuseColor.type==="Color"||A.DiffuseColor.type==="ColorRGB")&&(t.color=ZA.toWorkingColorSpace(new DA().fromArray(A.DiffuseColor.value),lA)),A.DisplacementFactor&&(t.displacementScale=A.DisplacementFactor.value),A.Emissive?t.emissive=ZA.toWorkingColorSpace(new DA().fromArray(A.Emissive.value),lA):A.EmissiveColor&&(A.EmissiveColor.type==="Color"||A.EmissiveColor.type==="ColorRGB")&&(t.emissive=ZA.toWorkingColorSpace(new DA().fromArray(A.EmissiveColor.value),lA)),A.EmissiveFactor&&(t.emissiveIntensity=parseFloat(A.EmissiveFactor.value)),A.Opacity&&(t.opacity=parseFloat(A.Opacity.value)),t.opacity<1&&(t.transparent=!0),A.ReflectionFactor&&(t.reflectivity=A.ReflectionFactor.value),A.Shininess&&(t.shininess=A.Shininess.value),A.Specular?t.specular=ZA.toWorkingColorSpace(new DA().fromArray(A.Specular.value),lA):A.SpecularColor&&A.SpecularColor.type==="Color"&&(t.specular=ZA.toWorkingColorSpace(new DA().fromArray(A.SpecularColor.value),lA));const s=this;return kA.get(i).children.forEach(function(o){const a=o.relationship;switch(a){case"Bump":t.bumpMap=s.getTexture(e,o.ID);break;case"Maya|TEX_ao_map":t.aoMap=s.getTexture(e,o.ID);break;case"DiffuseColor":case"Maya|TEX_color_map":t.map=s.getTexture(e,o.ID),t.map!==void 0&&(t.map.colorSpace=lA);break;case"DisplacementColor":t.displacementMap=s.getTexture(e,o.ID);break;case"EmissiveColor":t.emissiveMap=s.getTexture(e,o.ID),t.emissiveMap!==void 0&&(t.emissiveMap.colorSpace=lA);break;case"NormalMap":case"Maya|TEX_normal_map":t.normalMap=s.getTexture(e,o.ID);break;case"ReflectionColor":t.envMap=s.getTexture(e,o.ID),t.envMap!==void 0&&(t.envMap.mapping=Na,t.envMap.colorSpace=lA);break;case"SpecularColor":t.specularMap=s.getTexture(e,o.ID),t.specularMap!==void 0&&(t.specularMap.colorSpace=lA);break;case"TransparentColor":case"TransparencyFactor":t.alphaMap=s.getTexture(e,o.ID),t.transparent=!0;break;default:console.warn("THREE.FBXLoader: %s map is not supported in three.js, skipping texture.",a);break}}),t}getTexture(A,e){return"LayeredTexture"in iA.Objects&&e in iA.Objects.LayeredTexture&&(console.warn("THREE.FBXLoader: layered textures are not supported in three.js. Discarding all but first layer."),e=kA.get(e).children[0].ID),A.get(e)}parseDeformers(){const A={},e={};if("Deformer"in iA.Objects){const i=iA.Objects.Deformer;for(const t in i){const s=i[t],o=kA.get(parseInt(t));if(s.attrType==="Skin"){const a=this.parseSkeleton(o,i);a.ID=t,o.parents.length>1&&console.warn("THREE.FBXLoader: skeleton attached to more than one geometry is not supported."),a.geometryID=o.parents[0].ID,A[t]=a}else if(s.attrType==="BlendShape"){const a={id:t};a.rawTargets=this.parseMorphTargets(o,i),a.id=t,o.parents.length>1&&console.warn("THREE.FBXLoader: morph target attached to more than one geometry is not supported."),e[t]=a}}}return{skeletons:A,morphTargets:e}}parseSkeleton(A,e){const i=[];return A.children.forEach(function(t){const s=e[t.ID];if(s.attrType!=="Cluster")return;const o={ID:t.ID,indices:[],weights:[],transformLink:new hA().fromArray(s.TransformLink.a)};"Indexes"in s&&(o.indices=s.Indexes.a,o.weights=s.Weights.a),i.push(o)}),{rawBones:i,bones:[]}}parseMorphTargets(A,e){const i=[];for(let t=0;t<A.children.length;t++){const s=A.children[t],o=e[s.ID],a={name:o.attrName,initialWeight:o.DeformPercent,id:o.id,fullWeights:o.FullWeights.a};if(o.attrType!=="BlendShapeChannel")return;a.geoID=kA.get(parseInt(s.ID)).children.filter(function(r){return r.relationship===void 0})[0].ID,i.push(a)}return i}parseScene(A,e,i){VA=new Xe;const t=this.parseModels(A.skeletons,e,i),s=iA.Objects.Model,o=this;t.forEach(function(r){const l=s[r.ID];o.setLookAtProperties(r,l),kA.get(r.ID)?.parents?.forEach(function(g){const c=t.get(g.ID);c!==void 0&&c.add(r)}),r.parent===null&&VA.add(r)}),this.bindSkeleton(A.skeletons,e,t),this.addGlobalSceneSettings(),VA.traverse(function(r){if(r.userData.transformData){r.parent&&(r.userData.transformData.parentMatrix=r.parent.matrix,r.userData.transformData.parentMatrixWorld=r.parent.matrixWorld);const l=Mn(r.userData.transformData);r.applyMatrix4(l),r.updateWorldMatrix()}r.isSkinnedMesh&&(r.computeBoundingBox(),r.computeBoundingSphere(),r.boundingBox.expandByScalar(3),r.boundingSphere.radius*=3)});const a=new il().parse();VA.children.length===1&&VA.children[0].isGroup&&(VA.children[0].animations=a,VA=VA.children[0]),VA.animations=a}parseModels(A,e,i){const t=new Map,s=iA.Objects.Model;for(const o in s){const a=parseInt(o),r=s[o],l=kA.get(a);let g=this.buildSkeleton(l,A,a,r.attrName);if(!g){switch(r.attrType){case"Camera":g=this.createCamera(l);break;case"Light":g=this.createLight(l);break;case"Mesh":g=this.createMesh(l,e,i);break;case"NurbsCurve":g=this.createCurve(l,e);break;case"LimbNode":case"Root":g=new mi;break;default:g=new Xe;break}g.name=r.attrName?Me.sanitizeNodeName(r.attrName):"",g.userData.originalName=r.attrName,g.ID=a}this.getTransformData(g,r),t.set(a,g)}return t}buildSkeleton(A,e,i,t){let s=null;return A?.parents.forEach(function(o){for(const a in e){const r=e[a];r.rawBones.forEach(function(l,g){if(l.ID===o.ID){const c=s;s=new mi,s.matrixWorld.copy(l.transformLink),s.name=t?Me.sanitizeNodeName(t):"",s.userData.originalName=t,s.ID=i,r.bones[g]=s,c!==null&&s.add(c)}})}}),s}createCamera(A){let e,i;if(A.children.forEach(function(t){const s=iA.Objects.NodeAttribute[t.ID];s!==void 0&&(i=s)}),i===void 0)e=new me;else{let t=0;i.CameraProjectionType!==void 0&&i.CameraProjectionType.value===1&&(t=1);let s=1;i.NearPlane!==void 0&&(s=i.NearPlane.value/1e3);let o=1e3;i.FarPlane!==void 0&&(o=i.FarPlane.value/1e3);let a=window.innerWidth,r=window.innerHeight;i.AspectWidth!==void 0&&i.AspectHeight!==void 0&&(a=i.AspectWidth.value,r=i.AspectHeight.value);const l=a/r;let g=45;i.FieldOfView!==void 0&&(g=i.FieldOfView.value);const c=i.FocalLength?i.FocalLength.value:null;switch(t){case 0:e=new Ot(g,l,s,o),c!==null&&e.setFocalLength(c);break;case 1:console.warn("THREE.FBXLoader: Orthographic cameras not supported yet."),e=new me;break;default:console.warn("THREE.FBXLoader: Unknown camera type "+t+"."),e=new me;break}}return e}createLight(A){let e,i;if(A.children.forEach(function(t){const s=iA.Objects.NodeAttribute[t.ID];s!==void 0&&(i=s)}),i===void 0)e=new me;else{let t;i.LightType===void 0?t=0:t=i.LightType.value;let s=16777215;i.Color!==void 0&&(s=ZA.toWorkingColorSpace(new DA().fromArray(i.Color.value),lA));let o=i.Intensity===void 0?1:i.Intensity.value/100;i.CastLightOnObject!==void 0&&i.CastLightOnObject.value===0&&(o=0);let a=0;i.FarAttenuationEnd!==void 0&&(i.EnableFarAttenuation!==void 0&&i.EnableFarAttenuation.value===0?a=0:a=i.FarAttenuationEnd.value);const r=1;switch(t){case 0:e=new ui(s,o,a,r);break;case 1:e=new Gs(s,o);break;case 2:let l=Math.PI/3;i.InnerAngle!==void 0&&(l=bA.degToRad(i.InnerAngle.value));let g=0;i.OuterAngle!==void 0&&(g=bA.degToRad(i.OuterAngle.value),g=Math.max(g,1)),e=new ks(s,o,a,l,g,r);break;default:console.warn("THREE.FBXLoader: Unknown light type "+i.LightType.value+", defaulting to a PointLight."),e=new ui(s,o);break}i.CastShadows!==void 0&&i.CastShadows.value===1&&(e.castShadow=!0)}return e}createMesh(A,e,i){let t,s=null,o=null;const a=[];if(A.children.forEach(function(r){e.has(r.ID)&&(s=e.get(r.ID)),i.has(r.ID)&&a.push(i.get(r.ID))}),a.length>1?o=a:a.length>0?o=a[0]:(o=new pt({name:Re.DEFAULT_MATERIAL_NAME,color:13421772}),a.push(o)),"color"in s.attributes&&a.forEach(function(r){r.vertexColors=!0}),s.groups.length>0){let r=!1;for(let l=0,g=s.groups.length;l<g;l++){const c=s.groups[l];(c.materialIndex<0||c.materialIndex>=a.length)&&(c.materialIndex=a.length,r=!0)}if(r){const l=new Qi;a.push(l)}}return s.FBX_Deformer?(t=new Us(s,o),t.normalizeSkinWeights()):t=new K(s,o),t}createCurve(A,e){const i=A.children.reduce(function(s,o){return e.has(o.ID)&&(s=e.get(o.ID)),s},null),t=new Fe({name:Re.DEFAULT_MATERIAL_NAME,color:3342591,linewidth:1});return new Ee(i,t)}getTransformData(A,e){const i={};"InheritType"in e&&(i.inheritType=parseInt(e.InheritType.value)),"RotationOrder"in e?i.eulerOrder=Nt(e.RotationOrder.value):i.eulerOrder=Nt(0),"Lcl_Translation"in e&&(i.translation=e.Lcl_Translation.value),"PreRotation"in e&&(i.preRotation=e.PreRotation.value),"Lcl_Rotation"in e&&(i.rotation=e.Lcl_Rotation.value),"PostRotation"in e&&(i.postRotation=e.PostRotation.value),"Lcl_Scaling"in e&&(i.scale=e.Lcl_Scaling.value),"ScalingOffset"in e&&(i.scalingOffset=e.ScalingOffset.value),"ScalingPivot"in e&&(i.scalingPivot=e.ScalingPivot.value),"RotationOffset"in e&&(i.rotationOffset=e.RotationOffset.value),"RotationPivot"in e&&(i.rotationPivot=e.RotationPivot.value),A.userData.transformData=i}setLookAtProperties(A,e){"LookAtProperty"in e&&kA.get(A.ID).children.forEach(function(i){if(i.relationship==="LookAtProperty"){const t=iA.Objects.Model[i.ID];if("Lcl_Translation"in t){const s=t.Lcl_Translation.value;A.target!==void 0?(A.target.position.fromArray(s),VA.add(A.target)):A.lookAt(new N().fromArray(s))}}})}bindSkeleton(A,e,i){const t=this.parsePoseNodes();for(const s in A){const o=A[s];kA.get(parseInt(o.ID)).parents.forEach(function(a){if(e.has(a.ID)){const r=a.ID;kA.get(r).parents.forEach(function(l){i.has(l.ID)&&i.get(l.ID).bind(new Ps(o.bones),t[l.ID])})}})}}parsePoseNodes(){const A={};if("Pose"in iA.Objects){const e=iA.Objects.Pose;for(const i in e)if(e[i].attrType==="BindPose"&&e[i].NbPoseNodes>0){const t=e[i].PoseNode;Array.isArray(t)?t.forEach(function(s){A[s.Node]=new hA().fromArray(s.Matrix.a)}):A[t.Node]=new hA().fromArray(t.Matrix.a)}}return A}addGlobalSceneSettings(){if("GlobalSettings"in iA){if("AmbientColor"in iA.GlobalSettings){const A=iA.GlobalSettings.AmbientColor.value,e=A[0],i=A[1],t=A[2];if(e!==0||i!==0||t!==0){const s=new DA().setRGB(e,i,t,lA);VA.add(new La(s,1))}}"UnitScaleFactor"in iA.GlobalSettings&&(VA.userData.unitScaleFactor=iA.GlobalSettings.UnitScaleFactor.value)}}}class tl{constructor(){this.negativeMaterialIndices=!1}parse(A){const e=new Map;if("Geometry"in iA.Objects){const i=iA.Objects.Geometry;for(const t in i){const s=kA.get(parseInt(t)),o=this.parseGeometry(s,i[t],A);e.set(parseInt(t),o)}}return this.negativeMaterialIndices===!0&&console.warn("THREE.FBXLoader: The FBX file contains invalid (negative) material indices. The asset might not render as expected."),e}parseGeometry(A,e,i){switch(e.attrType){case"Mesh":return this.parseMeshGeometry(A,e,i);case"NurbsCurve":return this.parseNurbsGeometry(e)}}parseMeshGeometry(A,e,i){const t=i.skeletons,s=[],o=A.parents.map(function(c){return iA.Objects.Model[c.ID]});if(o.length===0)return;const a=A.children.reduce(function(c,I){return t[I.ID]!==void 0&&(c=t[I.ID]),c},null);A.children.forEach(function(c){i.morphTargets[c.ID]!==void 0&&s.push(i.morphTargets[c.ID])});const r=o[0],l={};"RotationOrder"in r&&(l.eulerOrder=Nt(r.RotationOrder.value)),"InheritType"in r&&(l.inheritType=parseInt(r.InheritType.value)),"GeometricTranslation"in r&&(l.translation=r.GeometricTranslation.value),"GeometricRotation"in r&&(l.rotation=r.GeometricRotation.value),"GeometricScaling"in r&&(l.scale=r.GeometricScaling.value);const g=Mn(l);return this.genGeometry(e,a,s,g)}genGeometry(A,e,i,t){const s=new oe;A.attrName&&(s.name=A.attrName);const o=this.parseGeoNode(A,e),a=this.genBuffers(o),r=new FA(a.vertex,3);if(r.applyMatrix4(t),s.setAttribute("position",r),a.colors.length>0&&s.setAttribute("color",new FA(a.colors,3)),e&&(s.setAttribute("skinIndex",new Ua(a.weightsIndices,4)),s.setAttribute("skinWeight",new FA(a.vertexWeights,4)),s.FBX_Deformer=e),a.normal.length>0){const l=new io().getNormalMatrix(t),g=new FA(a.normal,3);g.applyNormalMatrix(l),s.setAttribute("normal",g)}if(a.uvs.forEach(function(l,g){const c=g===0?"uv":`uv${g}`;s.setAttribute(c,new FA(a.uvs[g],2))}),o.material&&o.material.mappingType!=="AllSame"){let l=a.materialIndex[0],g=0;if(a.materialIndex.forEach(function(c,I){c!==l&&(s.addGroup(g,I-g,l),l=c,g=I)}),s.groups.length>0){const c=s.groups[s.groups.length-1],I=c.start+c.count;I!==a.materialIndex.length&&s.addGroup(I,a.materialIndex.length-I,l)}s.groups.length===0&&s.addGroup(0,a.materialIndex.length,a.materialIndex[0])}return this.addMorphTargets(s,A,i,t),s}parseGeoNode(A,e){const i={};if(i.vertexPositions=A.Vertices!==void 0?A.Vertices.a:[],i.vertexIndices=A.PolygonVertexIndex!==void 0?A.PolygonVertexIndex.a:[],A.LayerElementColor&&(i.color=this.parseVertexColors(A.LayerElementColor[0])),A.LayerElementMaterial&&(i.material=this.parseMaterialIndices(A.LayerElementMaterial[0])),A.LayerElementNormal&&(i.normal=this.parseNormals(A.LayerElementNormal[0])),A.LayerElementUV){i.uv=[];let t=0;for(;A.LayerElementUV[t];)A.LayerElementUV[t].UV&&i.uv.push(this.parseUVs(A.LayerElementUV[t])),t++}return i.weightTable={},e!==null&&(i.skeleton=e,e.rawBones.forEach(function(t,s){t.indices.forEach(function(o,a){i.weightTable[o]===void 0&&(i.weightTable[o]=[]),i.weightTable[o].push({id:s,weight:t.weights[a]})})})),i}genBuffers(A){const e={vertex:[],normal:[],colors:[],uvs:[],materialIndex:[],vertexWeights:[],weightsIndices:[]};let i=0,t=0,s=!1,o=[],a=[],r=[],l=[],g=[],c=[];const I=this;return A.vertexIndices.forEach(function(B,E){let u,C=!1;B<0&&(B=B^-1,C=!0);let p=[],f=[];if(o.push(B*3,B*3+1,B*3+2),A.color){const Q=ri(E,i,B,A.color);r.push(Q[0],Q[1],Q[2])}if(A.skeleton){if(A.weightTable[B]!==void 0&&A.weightTable[B].forEach(function(Q){f.push(Q.weight),p.push(Q.id)}),f.length>4){s||(console.warn("THREE.FBXLoader: Vertex has more than 4 skinning weights assigned to vertex. Deleting additional weights."),s=!0);const Q=[0,0,0,0],w=[0,0,0,0];f.forEach(function(b,S){let x=b,D=p[S];w.forEach(function(F,P,Y){if(x>F){Y[P]=x,x=F;const O=Q[P];Q[P]=D,D=O}})}),p=Q,f=w}for(;f.length<4;)f.push(0),p.push(0);for(let Q=0;Q<4;++Q)g.push(f[Q]),c.push(p[Q])}if(A.normal){const Q=ri(E,i,B,A.normal);a.push(Q[0],Q[1],Q[2])}A.material&&A.material.mappingType!=="AllSame"&&(u=ri(E,i,B,A.material)[0],u<0&&(I.negativeMaterialIndices=!0,u=0)),A.uv&&A.uv.forEach(function(Q,w){const b=ri(E,i,B,Q);l[w]===void 0&&(l[w]=[]),l[w].push(b[0]),l[w].push(b[1])}),t++,C&&(I.genFace(e,A,o,u,a,r,l,g,c,t),i++,t=0,o=[],a=[],r=[],l=[],g=[],c=[])}),e}getNormalNewell(A){const e=new N(0,0,0);for(let i=0;i<A.length;i++){const t=A[i],s=A[(i+1)%A.length];e.x+=(t.y-s.y)*(t.z+s.z),e.y+=(t.z-s.z)*(t.x+s.x),e.z+=(t.x-s.x)*(t.y+s.y)}return e.normalize(),e}getNormalTangentAndBitangent(A){const e=this.getNormalNewell(A),i=(Math.abs(e.z)>.5?new N(0,1,0):new N(0,0,1)).cross(e).normalize(),t=e.clone().cross(i).normalize();return{normal:e,tangent:i,bitangent:t}}flattenVertex(A,e,i){return new UA(A.dot(e),A.dot(i))}genFace(A,e,i,t,s,o,a,r,l,g){let c;if(g>3){const I=[],B=e.baseVertexPositions||e.vertexPositions;for(let p=0;p<i.length;p+=3)I.push(new N(B[i[p]],B[i[p+1]],B[i[p+2]]));const{tangent:E,bitangent:u}=this.getNormalTangentAndBitangent(I),C=[];for(const p of I)C.push(this.flattenVertex(p,E,u));c=_a.triangulateShape(C,[])}else g===2?(console.warn("THREE.FBXLoader: Edge topology detected. This is currently not supported. The resulting mesh will not be correct."),c=[[0,1,2]]):c=[[0,1,2]];for(const[I,B,E]of c)A.vertex.push(e.vertexPositions[i[I*3]]),A.vertex.push(e.vertexPositions[i[I*3+1]]),A.vertex.push(e.vertexPositions[i[I*3+2]]),A.vertex.push(e.vertexPositions[i[B*3]]),A.vertex.push(e.vertexPositions[i[B*3+1]]),A.vertex.push(e.vertexPositions[i[B*3+2]]),A.vertex.push(e.vertexPositions[i[E*3]]),A.vertex.push(e.vertexPositions[i[E*3+1]]),A.vertex.push(e.vertexPositions[i[E*3+2]]),e.skeleton&&(A.vertexWeights.push(r[I*4]),A.vertexWeights.push(r[I*4+1]),A.vertexWeights.push(r[I*4+2]),A.vertexWeights.push(r[I*4+3]),A.vertexWeights.push(r[B*4]),A.vertexWeights.push(r[B*4+1]),A.vertexWeights.push(r[B*4+2]),A.vertexWeights.push(r[B*4+3]),A.vertexWeights.push(r[E*4]),A.vertexWeights.push(r[E*4+1]),A.vertexWeights.push(r[E*4+2]),A.vertexWeights.push(r[E*4+3]),A.weightsIndices.push(l[I*4]),A.weightsIndices.push(l[I*4+1]),A.weightsIndices.push(l[I*4+2]),A.weightsIndices.push(l[I*4+3]),A.weightsIndices.push(l[B*4]),A.weightsIndices.push(l[B*4+1]),A.weightsIndices.push(l[B*4+2]),A.weightsIndices.push(l[B*4+3]),A.weightsIndices.push(l[E*4]),A.weightsIndices.push(l[E*4+1]),A.weightsIndices.push(l[E*4+2]),A.weightsIndices.push(l[E*4+3])),e.color&&(A.colors.push(o[I*3]),A.colors.push(o[I*3+1]),A.colors.push(o[I*3+2]),A.colors.push(o[B*3]),A.colors.push(o[B*3+1]),A.colors.push(o[B*3+2]),A.colors.push(o[E*3]),A.colors.push(o[E*3+1]),A.colors.push(o[E*3+2])),e.material&&e.material.mappingType!=="AllSame"&&(A.materialIndex.push(t),A.materialIndex.push(t),A.materialIndex.push(t)),e.normal&&(A.normal.push(s[I*3]),A.normal.push(s[I*3+1]),A.normal.push(s[I*3+2]),A.normal.push(s[B*3]),A.normal.push(s[B*3+1]),A.normal.push(s[B*3+2]),A.normal.push(s[E*3]),A.normal.push(s[E*3+1]),A.normal.push(s[E*3+2])),e.uv&&e.uv.forEach(function(u,C){A.uvs[C]===void 0&&(A.uvs[C]=[]),A.uvs[C].push(a[C][I*2]),A.uvs[C].push(a[C][I*2+1]),A.uvs[C].push(a[C][B*2]),A.uvs[C].push(a[C][B*2+1]),A.uvs[C].push(a[C][E*2]),A.uvs[C].push(a[C][E*2+1])})}addMorphTargets(A,e,i,t){if(i.length===0)return;A.morphTargetsRelative=!0,A.morphAttributes.position=[];const s=this;i.forEach(function(o){o.rawTargets.forEach(function(a){const r=iA.Objects.Geometry[a.geoID];r!==void 0&&s.genMorphGeometry(A,e,r,t,a.name)})})}genMorphGeometry(A,e,i,t,s){const o=e.Vertices!==void 0?e.Vertices.a:[],a=e.PolygonVertexIndex!==void 0?e.PolygonVertexIndex.a:[],r=i.Vertices!==void 0?i.Vertices.a:[],l=i.Indexes!==void 0?i.Indexes.a:[],g=A.attributes.position.count*3,c=new Float32Array(g);for(let u=0;u<l.length;u++){const C=l[u]*3;c[C]=r[u*3],c[C+1]=r[u*3+1],c[C+2]=r[u*3+2]}const I={vertexIndices:a,vertexPositions:c,baseVertexPositions:o},B=this.genBuffers(I),E=new FA(B.vertex,3);E.name=s||i.attrName,E.applyMatrix4(t),A.morphAttributes.position.push(E)}parseNormals(A){const e=A.MappingInformationType,i=A.ReferenceInformationType,t=A.Normals.a;let s=[];return i==="IndexToDirect"&&("NormalIndex"in A?s=A.NormalIndex.a:"NormalsIndex"in A&&(s=A.NormalsIndex.a)),{dataSize:3,buffer:t,indices:s,mappingType:e,referenceType:i}}parseUVs(A){const e=A.MappingInformationType,i=A.ReferenceInformationType,t=A.UV.a;let s=[];return i==="IndexToDirect"&&(s=A.UVIndex.a),{dataSize:2,buffer:t,indices:s,mappingType:e,referenceType:i}}parseVertexColors(A){if(!A.Colors)return;const e=A.MappingInformationType,i=A.ReferenceInformationType,t=A.Colors.a;let s=[];i==="IndexToDirect"&&(s=A.ColorIndex.a);for(let o=0,a=new DA;o<t.length;o+=4)a.fromArray(t,o),ZA.toWorkingColorSpace(a,lA),a.toArray(t,o);return{dataSize:4,buffer:t,indices:s,mappingType:e,referenceType:i}}parseMaterialIndices(A){const e=A.MappingInformationType,i=A.ReferenceInformationType;if(e==="NoMappingInformation")return{dataSize:1,buffer:[0],indices:[0],mappingType:"AllSame",referenceType:i};const t=A.Materials.a,s=[];for(let o=0;o<t.length;++o)s.push(o);return{dataSize:1,buffer:t,indices:s,mappingType:e,referenceType:i}}parseNurbsGeometry(A){const e=parseInt(A.Order);if(isNaN(e))return console.error("THREE.FBXLoader: Invalid Order %s given for geometry ID: %s",A.Order,A.id),new oe;const i=e-1,t=A.KnotVector.a,s=[],o=A.Points.a;for(let g=0,c=o.length;g<c;g+=4)s.push(new ke().fromArray(o,g));let a,r;if(A.Form==="Closed")s.push(s[0]);else if(A.Form==="Periodic"){a=i,r=t.length-1-a;for(let g=0;g<i;++g)s.push(s[g])}const l=new $c(i,t,s,a,r).getPoints(s.length*12);return new oe().setFromPoints(l)}}class il{parse(){const A=[],e=this.parseClips();if(e!==void 0)for(const i in e){const t=e[i],s=this.addClip(t);A.push(s)}return A}parseClips(){if(iA.Objects.AnimationCurve===void 0)return;const A=this.parseAnimationCurveNodes();this.parseAnimationCurves(A);const e=this.parseAnimationLayers(A);return this.parseAnimStacks(e)}parseAnimationCurveNodes(){const A=iA.Objects.AnimationCurveNode,e=new Map;for(const i in A){const t=A[i];if(t.attrName.match(/S|R|T|DeformPercent/)!==null){const s={id:t.id,attr:t.attrName,curves:{}};e.set(s.id,s)}}return e}parseAnimationCurves(A){const e=iA.Objects.AnimationCurve;for(const i in e){const t={id:e[i].id,times:e[i].KeyTime.a.map(rl),values:e[i].KeyValueFloat.a},s=kA.get(t.id);if(s!==void 0){const o=s.parents[0].ID,a=s.parents[0].relationship;a.match(/X/)?A.get(o).curves.x=t:a.match(/Y/)?A.get(o).curves.y=t:a.match(/Z/)?A.get(o).curves.z=t:a.match(/DeformPercent/)&&A.has(o)&&(A.get(o).curves.morph=t)}}}parseAnimationLayers(A){const e=iA.Objects.AnimationLayer,i=new Map;for(const t in e){const s=[],o=kA.get(parseInt(t));o!==void 0&&(o.children.forEach(function(a,r){if(A.has(a.ID)){const l=A.get(a.ID);if(l.curves.x!==void 0||l.curves.y!==void 0||l.curves.z!==void 0){if(s[r]===void 0){const g=kA.get(a.ID).parents.filter(function(c){return c.relationship!==void 0})[0].ID;if(g!==void 0){const c=iA.Objects.Model[g.toString()];if(c===void 0){console.warn("THREE.FBXLoader: Encountered a unused curve.",a);return}const I={modelName:c.attrName?Me.sanitizeNodeName(c.attrName):"",ID:c.id,initialPosition:[0,0,0],initialRotation:[0,0,0],initialScale:[1,1,1]};VA.traverse(function(B){B.ID===c.id&&(I.transform=B.matrix,B.userData.transformData&&(I.eulerOrder=B.userData.transformData.eulerOrder))}),I.transform||(I.transform=new hA),"PreRotation"in c&&(I.preRotation=c.PreRotation.value),"PostRotation"in c&&(I.postRotation=c.PostRotation.value),s[r]=I}}s[r]&&(s[r][l.attr]=l)}else if(l.curves.morph!==void 0){if(s[r]===void 0){const g=kA.get(a.ID).parents.filter(function(C){return C.relationship!==void 0})[0].ID,c=kA.get(g).parents[0].ID,I=kA.get(c).parents[0].ID,B=kA.get(I).parents[0].ID,E=iA.Objects.Model[B],u={modelName:E.attrName?Me.sanitizeNodeName(E.attrName):"",morphName:iA.Objects.Deformer[g].attrName};s[r]=u}s[r][l.attr]=l}}}),i.set(parseInt(t),s))}return i}parseAnimStacks(A){const e=iA.Objects.AnimationStack,i={};for(const t in e){const s=kA.get(parseInt(t)).children;s.length>1&&console.warn("THREE.FBXLoader: Encountered an animation stack with multiple layers, this is currently not supported. Ignoring subsequent layers.");const o=A.get(s[0].ID);i[t]={name:e[t].attrName,layer:o}}return i}addClip(A){let e=[];const i=this;return A.layer.forEach(function(t){e=e.concat(i.generateTracks(t))}),new Hs(A.name,-1,e)}generateTracks(A){const e=[];let i=new N,t=new N;if(A.transform&&A.transform.decompose(i,new SA,t),i=i.toArray(),t=t.toArray(),A.T!==void 0&&Object.keys(A.T.curves).length>0){const s=this.generateVectorTrack(A.modelName,A.T.curves,i,"position");s!==void 0&&e.push(s)}if(A.R!==void 0&&Object.keys(A.R.curves).length>0){const s=this.generateRotationTrack(A.modelName,A.R.curves,A.preRotation,A.postRotation,A.eulerOrder);s!==void 0&&e.push(s)}if(A.S!==void 0&&Object.keys(A.S.curves).length>0){const s=this.generateVectorTrack(A.modelName,A.S.curves,t,"scale");s!==void 0&&e.push(s)}if(A.DeformPercent!==void 0){const s=this.generateMorphTrack(A);s!==void 0&&e.push(s)}return e}generateVectorTrack(A,e,i,t){const s=this.getTimesForAllAxes(e),o=this.getKeyframeTrackValues(s,e,i);return new yi(A+"."+t,s,o)}generateRotationTrack(A,e,i,t,s){let o,a;if(e.x===void 0||e.y===void 0||e.z===void 0){console.warn("THREE.FBXLoader: Missing rotation curves "+(e.x===void 0?"x ":"")+(e.y===void 0?"y ":"")+(e.z===void 0?"z ":"")+" for animation of "+A+". This is currently not supported.");return}if(e.x!==void 0&&e.y!==void 0&&e.z!==void 0){const I=this.interpolateRotations(e.x,e.y,e.z,s);o=I[0],a=I[1]}const r=Nt(0);i!==void 0&&(i=i.map(bA.degToRad),i.push(r),i=new qe().fromArray(i),i=new SA().setFromEuler(i)),t!==void 0&&(t=t.map(bA.degToRad),t.push(r),t=new qe().fromArray(t),t=new SA().setFromEuler(t).invert());const l=new SA,g=new qe,c=[];if(!(!a||!o)){for(let I=0;I<a.length;I+=3)g.set(a[I],a[I+1],a[I+2],s),l.setFromEuler(g),i!==void 0&&l.premultiply(i),t!==void 0&&l.multiply(t),I>2&&new SA().fromArray(c,(I-3)/3*4).dot(l)<0&&l.set(-l.x,-l.y,-l.z,-l.w),l.toArray(c,I/3*4);return new Si(A+".quaternion",o,c)}}generateMorphTrack(A){const e=A.DeformPercent.curves.morph,i=e.values.map(function(s){return s/100}),t=VA.getObjectByName(A.modelName).morphTargetDictionary[A.morphName];return new Di(A.modelName+".morphTargetInfluences["+t+"]",e.times,i)}getTimesForAllAxes(A){let e=[];if(A.x!==void 0&&(e=e.concat(A.x.times)),A.y!==void 0&&(e=e.concat(A.y.times)),A.z!==void 0&&(e=e.concat(A.z.times)),e=e.sort(function(i,t){return i-t}),e.length>1){let i=1,t=e[0];for(let s=1;s<e.length;s++){const o=e[s];o!==t&&(e[i]=o,t=o,i++)}e=e.slice(0,i)}return e}getKeyframeTrackValues(A,e,i){const t=i,s=[];let o=-1,a=-1,r=-1;return A.forEach(function(l){if(e.x&&(o=e.x.times.indexOf(l)),e.y&&(a=e.y.times.indexOf(l)),e.z&&(r=e.z.times.indexOf(l)),o!==-1){const g=e.x.values[o];s.push(g),t[0]=g}else s.push(t[0]);if(a!==-1){const g=e.y.values[a];s.push(g),t[1]=g}else s.push(t[1]);if(r!==-1){const g=e.z.values[r];s.push(g),t[2]=g}else s.push(t[2])}),s}interpolateRotations(A,e,i,t){const s=[],o=[];s.push(A.times[0]),o.push(bA.degToRad(A.values[0])),o.push(bA.degToRad(e.values[0])),o.push(bA.degToRad(i.values[0]));for(let a=1;a<A.values.length;a++){const r=[A.values[a-1],e.values[a-1],i.values[a-1]];if(isNaN(r[0])||isNaN(r[1])||isNaN(r[2]))continue;const l=r.map(bA.degToRad),g=[A.values[a],e.values[a],i.values[a]];if(isNaN(g[0])||isNaN(g[1])||isNaN(g[2]))continue;const c=g.map(bA.degToRad),I=[g[0]-r[0],g[1]-r[1],g[2]-r[2]],B=[Math.abs(I[0]),Math.abs(I[1]),Math.abs(I[2])];if(B[0]>=180||B[1]>=180||B[2]>=180){const E=Math.max(...B)/180,u=new qe(...l,t),C=new qe(...c,t),p=new SA().setFromEuler(u),f=new SA().setFromEuler(C);p.dot(f)&&f.set(-f.x,-f.y,-f.z,-f.w);const Q=A.times[a-1],w=A.times[a]-Q,b=new SA,S=new qe;for(let x=0;x<1;x+=1/E)b.copy(p.clone().slerp(f.clone(),x)),s.push(Q+x*w),S.setFromQuaternion(b,t),o.push(S.x),o.push(S.y),o.push(S.z)}else s.push(A.times[a]),o.push(bA.degToRad(A.values[a])),o.push(bA.degToRad(e.values[a])),o.push(bA.degToRad(i.values[a]))}return[s,o]}}class sl{getPrevNode(){return this.nodeStack[this.currentIndent-2]}getCurrentNode(){return this.nodeStack[this.currentIndent-1]}getCurrentProp(){return this.currentProp}pushStack(A){this.nodeStack.push(A),this.currentIndent+=1}popStack(){this.nodeStack.pop(),this.currentIndent-=1}setCurrentProp(A,e){this.currentProp=A,this.currentPropName=e}parse(A){this.currentIndent=0,this.allNodes=new Rn,this.nodeStack=[],this.currentProp=[],this.currentPropName="";const e=this,i=A.split(/[\r\n]+/);return i.forEach(function(t,s){const o=t.match(/^[\s\t]*;/),a=t.match(/^[\s\t]*$/);if(o||a)return;const r=t.match("^\\t{"+e.currentIndent+"}(\\w+):(.*){",""),l=t.match("^\\t{"+e.currentIndent+"}(\\w+):[\\s\\t\\r\\n](.*)"),g=t.match("^\\t{"+(e.currentIndent-1)+"}}");r?e.parseNodeBegin(t,r):l?e.parseNodeProperty(t,l,i[++s]):g?e.popStack():t.match(/^[^\s\t}]/)&&e.parseNodePropertyContinued(t)}),this.allNodes}parseNodeBegin(A,e){const i=e[1].trim().replace(/^"/,"").replace(/"$/,""),t=e[2].split(",").map(function(r){return r.trim().replace(/^"/,"").replace(/"$/,"")}),s={name:i},o=this.parseNodeAttr(t),a=this.getCurrentNode();this.currentIndent===0?this.allNodes.add(i,s):i in a?(i==="PoseNode"?a.PoseNode.push(s):a[i].id!==void 0&&(a[i]={},a[i][a[i].id]=a[i]),o.id!==""&&(a[i][o.id]=s)):typeof o.id=="number"?(a[i]={},a[i][o.id]=s):i!=="Properties70"&&(i==="PoseNode"?a[i]=[s]:a[i]=s),typeof o.id=="number"&&(s.id=o.id),o.name!==""&&(s.attrName=o.name),o.type!==""&&(s.attrType=o.type),this.pushStack(s)}parseNodeAttr(A){let e=A[0];A[0]!==""&&(e=parseInt(A[0]),isNaN(e)&&(e=A[0]));let i="",t="";return A.length>1&&(i=A[1].replace(/^(\w+)::/,""),t=A[2]),{id:e,name:i,type:t}}parseNodeProperty(A,e,i){let t=e[1].replace(/^"/,"").replace(/"$/,"").trim(),s=e[2].replace(/^"/,"").replace(/"$/,"").trim();t==="Content"&&s===","&&(s=i.replace(/"/g,"").replace(/,$/,"").trim());const o=this.getCurrentNode();if(o.name==="Properties70"){this.parseNodeSpecialProperty(A,t,s);return}if(t==="C"){const a=s.split(",").slice(1),r=parseInt(a[0]),l=parseInt(a[1]);let g=s.split(",").slice(3);g=g.map(function(c){return c.trim().replace(/^"/,"")}),t="connections",s=[r,l],cl(s,g),o[t]===void 0&&(o[t]=[])}t==="Node"&&(o.id=s),t in o&&Array.isArray(o[t])?o[t].push(s):t!=="a"?o[t]=s:o.a=s,this.setCurrentProp(o,t),t==="a"&&s.slice(-1)!==","&&(o.a=ys(s))}parseNodePropertyContinued(A){const e=this.getCurrentNode();e.a+=A,A.slice(-1)!==","&&(e.a=ys(e.a))}parseNodeSpecialProperty(A,e,i){const t=i.split('",').map(function(g){return g.trim().replace(/^\"/,"").replace(/\s/,"_")}),s=t[0],o=t[1],a=t[2],r=t[3];let l=t[4];switch(o){case"int":case"enum":case"bool":case"ULongLong":case"double":case"Number":case"FieldOfView":l=parseFloat(l);break;case"Color":case"ColorRGB":case"Vector3D":case"Lcl_Translation":case"Lcl_Rotation":case"Lcl_Scaling":l=ys(l);break}this.getPrevNode()[s]={type:o,type2:a,flag:r,value:l},this.setCurrentProp(this.getPrevNode(),s)}}class ol{parse(A){const e=new xn(A);e.skip(23);const i=e.getUint32();if(i<6400)throw new Error("THREE.FBXLoader: FBX version not supported, FileVersion: "+i);const t=new Rn;for(;!this.endOfContent(e);){const s=this.parseNode(e,i);s!==null&&t.add(s.name,s)}return t}endOfContent(A){return A.size()%16===0?(A.getOffset()+160+16&-16)>=A.size():A.getOffset()+160+16>=A.size()}parseNode(A,e){const i={},t=e>=7500?A.getUint64():A.getUint32(),s=e>=7500?A.getUint64():A.getUint32();e>=7500?A.getUint64():A.getUint32();const o=A.getUint8(),a=A.getString(o);if(t===0)return null;const r=[];for(let I=0;I<s;I++)r.push(this.parseProperty(A));const l=r.length>0?r[0]:"",g=r.length>1?r[1]:"",c=r.length>2?r[2]:"";for(i.singleProperty=s===1&&A.getOffset()===t;t>A.getOffset();){const I=this.parseNode(A,e);I!==null&&this.parseSubNode(a,i,I)}return i.propertyList=r,typeof l=="number"&&(i.id=l),g!==""&&(i.attrName=g),c!==""&&(i.attrType=c),a!==""&&(i.name=a),i}parseSubNode(A,e,i){if(i.singleProperty===!0){const t=i.propertyList[0];Array.isArray(t)?(e[i.name]=i,i.a=t):e[i.name]=t}else if(A==="Connections"&&i.name==="C"){const t=[];i.propertyList.forEach(function(s,o){o!==0&&t.push(s)}),e.connections===void 0&&(e.connections=[]),e.connections.push(t)}else if(i.name==="Properties70")Object.keys(i).forEach(function(t){e[t]=i[t]});else if(A==="Properties70"&&i.name==="P"){let t=i.propertyList[0],s=i.propertyList[1];const o=i.propertyList[2],a=i.propertyList[3];let r;t.indexOf("Lcl ")===0&&(t=t.replace("Lcl ","Lcl_")),s.indexOf("Lcl ")===0&&(s=s.replace("Lcl ","Lcl_")),s==="Color"||s==="ColorRGB"||s==="Vector"||s==="Vector3D"||s.indexOf("Lcl_")===0?r=[i.propertyList[4],i.propertyList[5],i.propertyList[6]]:r=i.propertyList[4],e[t]={type:s,type2:o,flag:a,value:r}}else e[i.name]===void 0?typeof i.id=="number"?(e[i.name]={},e[i.name][i.id]=i):e[i.name]=i:i.name==="PoseNode"?(Array.isArray(e[i.name])||(e[i.name]=[e[i.name]]),e[i.name].push(i)):e[i.name][i.id]===void 0&&(e[i.name][i.id]=i)}parseProperty(A){const e=A.getString(1);let i;switch(e){case"C":return A.getBoolean();case"D":return A.getFloat64();case"F":return A.getFloat32();case"I":return A.getInt32();case"L":return A.getInt64();case"R":return i=A.getUint32(),A.getArrayBuffer(i);case"S":return i=A.getUint32(),A.getString(i);case"Y":return A.getInt16();case"b":case"c":case"d":case"f":case"i":case"l":const t=A.getUint32(),s=A.getUint32(),o=A.getUint32();if(s===0)switch(e){case"b":case"c":return A.getBooleanArray(t);case"d":return A.getFloat64Array(t);case"f":return A.getFloat32Array(t);case"i":return A.getInt32Array(t);case"l":return A.getInt64Array(t)}const a=St(new Uint8Array(A.getArrayBuffer(o))),r=new xn(a.buffer);switch(e){case"b":case"c":return r.getBooleanArray(t);case"d":return r.getFloat64Array(t);case"f":return r.getFloat32Array(t);case"i":return r.getInt32Array(t);case"l":return r.getInt64Array(t)}break;default:throw new Error("THREE.FBXLoader: Unknown property type "+e)}}}class xn{constructor(A,e){this.dv=new DataView(A),this.offset=0,this.littleEndian=e!==void 0?e:!0,this._textDecoder=new TextDecoder}getOffset(){return this.offset}size(){return this.dv.buffer.byteLength}skip(A){this.offset+=A}getBoolean(){return(this.getUint8()&1)===1}getBooleanArray(A){const e=[];for(let i=0;i<A;i++)e.push(this.getBoolean());return e}getUint8(){const A=this.dv.getUint8(this.offset);return this.offset+=1,A}getInt16(){const A=this.dv.getInt16(this.offset,this.littleEndian);return this.offset+=2,A}getInt32(){const A=this.dv.getInt32(this.offset,this.littleEndian);return this.offset+=4,A}getInt32Array(A){const e=[];for(let i=0;i<A;i++)e.push(this.getInt32());return e}getUint32(){const A=this.dv.getUint32(this.offset,this.littleEndian);return this.offset+=4,A}getInt64(){let A,e;return this.littleEndian?(A=this.getUint32(),e=this.getUint32()):(e=this.getUint32(),A=this.getUint32()),e&2147483648?(e=~e&4294967295,A=~A&4294967295,A===4294967295&&(e=e+1&4294967295),A=A+1&4294967295,-(e*4294967296+A)):e*4294967296+A}getInt64Array(A){const e=[];for(let i=0;i<A;i++)e.push(this.getInt64());return e}getUint64(){let A,e;return this.littleEndian?(A=this.getUint32(),e=this.getUint32()):(e=this.getUint32(),A=this.getUint32()),e*4294967296+A}getFloat32(){const A=this.dv.getFloat32(this.offset,this.littleEndian);return this.offset+=4,A}getFloat32Array(A){const e=[];for(let i=0;i<A;i++)e.push(this.getFloat32());return e}getFloat64(){const A=this.dv.getFloat64(this.offset,this.littleEndian);return this.offset+=8,A}getFloat64Array(A){const e=[];for(let i=0;i<A;i++)e.push(this.getFloat64());return e}getArrayBuffer(A){const e=this.dv.buffer.slice(this.offset,this.offset+A);return this.offset+=A,e}getString(A){const e=this.offset;let i=new Uint8Array(this.dv.buffer,e,A);this.skip(A);const t=i.indexOf(0);return t>=0&&(i=new Uint8Array(this.dv.buffer,e,t)),this._textDecoder.decode(i)}}class Rn{add(A,e){this[A]=e}}function nl(n){const A="Kaydara FBX Binary \0";return n.byteLength>=A.length&&A===kn(n,0,A.length)}function al(n){const A=["K","a","y","d","a","r","a","\\","F","B","X","\\","B","i","n","a","r","y","\\","\\"];let e=0;function i(t){const s=n[t-1];return n=n.slice(e+t),e++,s}for(let t=0;t<A.length;++t)if(i(1)===A[t])return!1;return!0}function Fn(n){const A=/FBXVersion: (\d+)/,e=n.match(A);if(e)return parseInt(e[1]);throw new Error("THREE.FBXLoader: Cannot find the version number for the file given.")}function rl(n){return n/46186158e3}const gl=[];function ri(n,A,e,i){let t;switch(i.mappingType){case"ByPolygonVertex":t=n;break;case"ByPolygon":t=A;break;case"ByVertice":t=e;break;case"AllSame":t=i.indices[0];break;default:console.warn("THREE.FBXLoader: unknown attribute mapping type "+i.mappingType)}i.referenceType==="IndexToDirect"&&(t=i.indices[t]);const s=t*i.dataSize,o=s+i.dataSize;return ll(gl,i.buffer,s,o)}const ws=new qe,ct=new N;function Mn(n){const A=new hA,e=new hA,i=new hA,t=new hA,s=new hA,o=new hA,a=new hA,r=new hA,l=new hA,g=new hA,c=new hA,I=new hA,B=n.inheritType?n.inheritType:0;n.translation&&A.setPosition(ct.fromArray(n.translation));const E=Nt(0);if(n.preRotation){const Y=n.preRotation.map(bA.degToRad);Y.push(E),e.makeRotationFromEuler(ws.fromArray(Y))}if(n.rotation){const Y=n.rotation.map(bA.degToRad);Y.push(n.eulerOrder||E),i.makeRotationFromEuler(ws.fromArray(Y))}if(n.postRotation){const Y=n.postRotation.map(bA.degToRad);Y.push(E),t.makeRotationFromEuler(ws.fromArray(Y)),t.invert()}n.scale&&s.scale(ct.fromArray(n.scale)),n.scalingOffset&&a.setPosition(ct.fromArray(n.scalingOffset)),n.scalingPivot&&o.setPosition(ct.fromArray(n.scalingPivot)),n.rotationOffset&&r.setPosition(ct.fromArray(n.rotationOffset)),n.rotationPivot&&l.setPosition(ct.fromArray(n.rotationPivot)),n.parentMatrixWorld&&(c.copy(n.parentMatrix),g.copy(n.parentMatrixWorld));const u=e.clone().multiply(i).multiply(t),C=new hA;C.extractRotation(g);const p=new hA;p.copyPosition(g);const f=p.clone().invert().multiply(g),Q=C.clone().invert().multiply(f),w=s,b=new hA;if(B===0)b.copy(C).multiply(u).multiply(Q).multiply(w);else if(B===1)b.copy(C).multiply(Q).multiply(u).multiply(w);else{const Y=new hA().scale(new N().setFromMatrixScale(c)).clone().invert(),O=Q.clone().multiply(Y);b.copy(C).multiply(u).multiply(O).multiply(w)}const S=l.clone().invert(),x=o.clone().invert();let D=A.clone().multiply(r).multiply(l).multiply(e).multiply(i).multiply(t).multiply(S).multiply(a).multiply(o).multiply(s).multiply(x);const F=new hA().copyPosition(D),P=g.clone().multiply(F);return I.copyPosition(P),D=I.clone().multiply(b),D.premultiply(g.invert()),D}function Nt(n){n=n||0;const A=["ZYX","YZX","XZY","ZXY","YXZ","XYZ"];return n===6?(console.warn("THREE.FBXLoader: unsupported Euler Order: Spherical XYZ. Animations and rotations may be incorrect."),A[0]):A[n]}function ys(n){return n.split(",").map(function(A){return parseFloat(A)})}function kn(n,A,e){return A===void 0&&(A=0),e===void 0&&(e=n.byteLength),new TextDecoder().decode(new Uint8Array(n,A,e))}function cl(n,A){for(let e=0,i=n.length,t=A.length;e<t;e++,i++)n[i]=A[e]}function ll(n,A,e,i){for(let t=e,s=0;t<i;t++,s++)n[s]=A[t];return n}class hl extends Re{constructor(A){super(A)}load(A,e,i,t){const s=this,o=this.path===""?ze.extractUrlBase(A):this.path,a=new Be(this.manager);a.setPath(this.path),a.setRequestHeader(this.requestHeader),a.setWithCredentials(this.withCredentials),a.load(A,function(r){try{e(s.parse(r,o))}catch(l){t?t(l):console.error(l),s.manager.itemError(A)}},i,t)}setMaterialOptions(A){return this.materialOptions=A,this}parse(A,e){const i=A.split(`
460
+ `);let t={};const s=/\s+/,o={};for(let r=0;r<i.length;r++){let l=i[r];if(l=l.trim(),l.length===0||l.charAt(0)==="#")continue;const g=l.indexOf(" ");let c=g>=0?l.substring(0,g):l;c=c.toLowerCase();let I=g>=0?l.substring(g+1):"";if(I=I.trim(),c==="newmtl")t={name:I},o[I]=t;else if(c==="ka"||c==="kd"||c==="ks"||c==="ke"){const B=I.split(s,3);t[c]=[parseFloat(B[0]),parseFloat(B[1]),parseFloat(B[2])]}else t[c]=I}const a=new Il(this.resourcePath||e,this.materialOptions);return a.setCrossOrigin(this.crossOrigin),a.setManager(this.manager),a.setMaterials(o),a}}class Il{constructor(A="",e={}){this.baseUrl=A,this.options=e,this.materialsInfo={},this.materials={},this.materialsArray=[],this.nameLookup={},this.crossOrigin="anonymous",this.side=this.options.side!==void 0?this.options.side:Os,this.wrap=this.options.wrap!==void 0?this.options.wrap:Ve}setCrossOrigin(A){return this.crossOrigin=A,this}setManager(A){this.manager=A}setMaterials(A){this.materialsInfo=this.convert(A),this.materials={},this.materialsArray=[],this.nameLookup={}}convert(A){if(!this.options)return A;const e={};for(const i in A){const t=A[i],s={};e[i]=s;for(const o in t){let a=!0,r=t[o];const l=o.toLowerCase();switch(l){case"kd":case"ka":case"ks":this.options&&this.options.normalizeRGB&&(r=[r[0]/255,r[1]/255,r[2]/255]),this.options&&this.options.ignoreZeroRGBs&&r[0]===0&&r[1]===0&&r[2]===0&&(a=!1);break}a&&(s[l]=r)}}return e}preload(){for(const A in this.materialsInfo)this.create(A)}getIndex(A){return this.nameLookup[A]}getAsArray(){let A=0;for(const e in this.materialsInfo)this.materialsArray[A]=this.create(e),this.nameLookup[e]=A,A++;return this.materialsArray}create(A){return this.materials[A]===void 0&&this.createMaterial_(A),this.materials[A]}createMaterial_(A){const e=this,i=this.materialsInfo[A],t={name:A,side:this.side};function s(a,r){return typeof r!="string"||r===""?"":/^https?:\/\//i.test(r)?r:a+r}function o(a,r){if(t[a])return;const l=e.getTextureParams(r,t),g=e.loadTexture(s(e.baseUrl,l.url));g.repeat.copy(l.scale),g.offset.copy(l.offset),g.wrapS=e.wrap,g.wrapT=e.wrap,(a==="map"||a==="emissiveMap")&&(g.colorSpace=lA),t[a]=g}for(const a in i){const r=i[a];let l;if(r!=="")switch(a.toLowerCase()){case"kd":t.color=ZA.toWorkingColorSpace(new DA().fromArray(r),lA);break;case"ks":t.specular=ZA.toWorkingColorSpace(new DA().fromArray(r),lA);break;case"ke":t.emissive=ZA.toWorkingColorSpace(new DA().fromArray(r),lA);break;case"map_kd":o("map",r);break;case"map_ks":o("specularMap",r);break;case"map_ke":o("emissiveMap",r);break;case"norm":o("normalMap",r);break;case"map_bump":case"bump":o("bumpMap",r);break;case"map_d":o("alphaMap",r),t.transparent=!0;break;case"ns":t.shininess=parseFloat(r);break;case"d":l=parseFloat(r),l<1&&(t.opacity=l,t.transparent=!0);break;case"tr":l=parseFloat(r),this.options&&this.options.invertTrProperty&&(l=1-l),l>0&&(t.opacity=1-l,t.transparent=!0);break}}return this.materials[A]=new pt(t),this.materials[A]}getTextureParams(A,e){const i={scale:new UA(1,1),offset:new UA(0,0)},t=A.split(/\s+/);let s;return s=t.indexOf("-bm"),s>=0&&(e.bumpScale=parseFloat(t[s+1]),t.splice(s,2)),s=t.indexOf("-s"),s>=0&&(i.scale.set(parseFloat(t[s+1]),parseFloat(t[s+2])),t.splice(s,4)),s=t.indexOf("-o"),s>=0&&(i.offset.set(parseFloat(t[s+1]),parseFloat(t[s+2])),t.splice(s,4)),i.url=t.join(" ").trim(),i}loadTexture(A,e,i,t,s){const o=this.manager!==void 0?this.manager:Pa;let a=o.getHandler(A);a===null&&(a=new di(o)),a.setCrossOrigin&&a.setCrossOrigin(this.crossOrigin);const r=a.load(A,i,t,s);return e!==void 0&&(r.mapping=e),r}}const Bl=/^[og]\s*(.+)?/,El=/^mtllib /,Cl=/^usemtl /,ul=/^usemap /,Gn=/\s+/,Tn=new N,Ds=new N,Nn=new N,Ln=new N,le=new N,gi=new DA;function dl(){const n={objects:[],object:{},vertices:[],normals:[],colors:[],uvs:[],materials:{},materialLibraries:[],startObject:function(A,e){if(this.object&&this.object.fromDeclaration===!1){this.object.name=A,this.object.fromDeclaration=e!==!1;return}const i=this.object&&typeof this.object.currentMaterial=="function"?this.object.currentMaterial():void 0;if(this.object&&typeof this.object._finalize=="function"&&this.object._finalize(!0),this.object={name:A||"",fromDeclaration:e!==!1,geometry:{vertices:[],normals:[],colors:[],uvs:[],hasUVIndices:!1},materials:[],smooth:!0,startMaterial:function(t,s){const o=this._finalize(!1);o&&(o.inherited||o.groupCount<=0)&&this.materials.splice(o.index,1);const a={index:this.materials.length,name:t||"",mtllib:Array.isArray(s)&&s.length>0?s[s.length-1]:"",smooth:o!==void 0?o.smooth:this.smooth,groupStart:o!==void 0?o.groupEnd:0,groupEnd:-1,groupCount:-1,inherited:!1,clone:function(r){const l={index:typeof r=="number"?r:this.index,name:this.name,mtllib:this.mtllib,smooth:this.smooth,groupStart:0,groupEnd:-1,groupCount:-1,inherited:!1};return l.clone=this.clone.bind(l),l}};return this.materials.push(a),a},currentMaterial:function(){if(this.materials.length>0)return this.materials[this.materials.length-1]},_finalize:function(t){const s=this.currentMaterial();if(s&&s.groupEnd===-1&&(s.groupEnd=this.geometry.vertices.length/3,s.groupCount=s.groupEnd-s.groupStart,s.inherited=!1),t&&this.materials.length>1)for(let o=this.materials.length-1;o>=0;o--)this.materials[o].groupCount<=0&&this.materials.splice(o,1);return t&&this.materials.length===0&&this.materials.push({name:"",smooth:this.smooth}),s}},i&&i.name&&typeof i.clone=="function"){const t=i.clone(0);t.inherited=!0,this.object.materials.push(t)}this.objects.push(this.object)},finalize:function(){this.object&&typeof this.object._finalize=="function"&&this.object._finalize(!0)},parseVertexIndex:function(A,e){const i=parseInt(A,10);return(i>=0?i-1:i+e/3)*3},parseNormalIndex:function(A,e){const i=parseInt(A,10);return(i>=0?i-1:i+e/3)*3},parseUVIndex:function(A,e){const i=parseInt(A,10);return(i>=0?i-1:i+e/2)*2},addVertex:function(A,e,i){const t=this.vertices,s=this.object.geometry.vertices;s.push(t[A+0],t[A+1],t[A+2]),s.push(t[e+0],t[e+1],t[e+2]),s.push(t[i+0],t[i+1],t[i+2])},addVertexPoint:function(A){const e=this.vertices;this.object.geometry.vertices.push(e[A+0],e[A+1],e[A+2])},addVertexLine:function(A){const e=this.vertices;this.object.geometry.vertices.push(e[A+0],e[A+1],e[A+2])},addNormal:function(A,e,i){const t=this.normals,s=this.object.geometry.normals;s.push(t[A+0],t[A+1],t[A+2]),s.push(t[e+0],t[e+1],t[e+2]),s.push(t[i+0],t[i+1],t[i+2])},addFaceNormal:function(A,e,i){const t=this.vertices,s=this.object.geometry.normals;Tn.fromArray(t,A),Ds.fromArray(t,e),Nn.fromArray(t,i),le.subVectors(Nn,Ds),Ln.subVectors(Tn,Ds),le.cross(Ln),le.normalize(),s.push(le.x,le.y,le.z),s.push(le.x,le.y,le.z),s.push(le.x,le.y,le.z)},addColor:function(A,e,i){const t=this.colors,s=this.object.geometry.colors;t[A]!==void 0&&s.push(t[A+0],t[A+1],t[A+2]),t[e]!==void 0&&s.push(t[e+0],t[e+1],t[e+2]),t[i]!==void 0&&s.push(t[i+0],t[i+1],t[i+2])},addUV:function(A,e,i){const t=this.uvs,s=this.object.geometry.uvs;s.push(t[A+0],t[A+1]),s.push(t[e+0],t[e+1]),s.push(t[i+0],t[i+1])},addDefaultUV:function(){const A=this.object.geometry.uvs;A.push(0,0),A.push(0,0),A.push(0,0)},addUVLine:function(A){const e=this.uvs;this.object.geometry.uvs.push(e[A+0],e[A+1])},addFace:function(A,e,i,t,s,o,a,r,l){const g=this.vertices.length;let c=this.parseVertexIndex(A,g),I=this.parseVertexIndex(e,g),B=this.parseVertexIndex(i,g);if(this.addVertex(c,I,B),this.addColor(c,I,B),a!==void 0&&a!==""){const E=this.normals.length;c=this.parseNormalIndex(a,E),I=this.parseNormalIndex(r,E),B=this.parseNormalIndex(l,E),this.addNormal(c,I,B)}else this.addFaceNormal(c,I,B);if(t!==void 0&&t!==""){const E=this.uvs.length;c=this.parseUVIndex(t,E),I=this.parseUVIndex(s,E),B=this.parseUVIndex(o,E),this.addUV(c,I,B),this.object.geometry.hasUVIndices=!0}else this.addDefaultUV()},addPointGeometry:function(A){this.object.geometry.type="Points";const e=this.vertices.length;for(let i=0,t=A.length;i<t;i++){const s=this.parseVertexIndex(A[i],e);this.addVertexPoint(s),this.addColor(s)}},addLineGeometry:function(A,e){this.object.geometry.type="Line";const i=this.vertices.length,t=this.uvs.length;for(let s=0,o=A.length;s<o;s++)this.addVertexLine(this.parseVertexIndex(A[s],i));for(let s=0,o=e.length;s<o;s++)this.addUVLine(this.parseUVIndex(e[s],t))}};return n.startObject("",!1),n}class pl extends Re{constructor(A){super(A),this.materials=null,this.materialsLoader=new hl(A)}load(A,e,i,t){const s=this,o=new Be(this.manager);o.setPath(this.path),o.setRequestHeader(this.requestHeader),o.setWithCredentials(this.withCredentials),o.load(A,async function(a){try{const r=s.parse(a,!0);for(let l=0,g=r.materialLibraries.length;l<g;l++){const c=r.materialLibraries[l];if(!c||typeof c!="string"||c.trim()===""){console.warn("THREE.OBJLoader: Invalid or empty material library reference, skipping.");continue}const I=A.startsWith("blob:")?A+"/"+c:new URL(c,A);console.debug("Loading MTL file: "+I),await new Promise((B,E)=>{s.materialsLoader.load(I.toString(),u=>{s.setMaterials(u),B()},null,E)})}e(s.createObjects(r))}catch(r){t?t(r):console.error(r),s.manager.itemError(A)}},i,t)}setMTLLoader(A){return this.materialsLoader=A,this}setMaterials(A){return this.materials=A,this}parse(A,e=!1){const i=new dl;A.indexOf(`\r
461
461
  `)!==-1&&(A=A.replace(/\r\n/g,`
462
462
  `)),A.indexOf(`\\
463
463
  `)!==-1&&(A=A.replace(/\\\n/g,""));const t=A.split(`
464
- `);let s=[];for(let o=0,a=t.length;o<a;o++){const r=t[o].trimStart();if(r.length===0)continue;const l=r.charAt(0);if(l!=="#")if(l==="v"){const g=r.split(Gn);switch(g[0]){case"v":i.vertices.push(parseFloat(g[1]),parseFloat(g[2]),parseFloat(g[3])),g.length>=7?(gi.setRGB(parseFloat(g[4]),parseFloat(g[5]),parseFloat(g[6]),lA),i.colors.push(gi.r,gi.g,gi.b)):i.colors.push(void 0,void 0,void 0);break;case"vn":i.normals.push(parseFloat(g[1]),parseFloat(g[2]),parseFloat(g[3]));break;case"vt":i.uvs.push(parseFloat(g[1]),parseFloat(g[2]));break}}else if(l==="f"){const g=r.slice(1).trim().split(Gn),c=[];for(let B=0,C=g.length;B<C;B++){const d=g[B];if(d.length>0){const E=d.split("/");c.push(E)}}const I=c[0];for(let B=1,C=c.length-1;B<C;B++){const d=c[B],E=c[B+1];i.addFace(I[0],d[0],E[0],I[1],d[1],E[1],I[2],d[2],E[2])}}else if(l==="l"){const g=r.substring(1).trim().split(" ");let c=[];const I=[];if(r.indexOf("/")===-1)c=g;else for(let B=0,C=g.length;B<C;B++){const d=g[B].split("/");d[0]!==""&&c.push(d[0]),d[1]!==""&&I.push(d[1])}i.addLineGeometry(c,I)}else if(l==="p"){const g=r.slice(1).trim().split(" ");i.addPointGeometry(g)}else if((s=El.exec(r))!==null){const g=(" "+s[0].slice(1).trim()).slice(1);i.startObject(g)}else if(ul.test(r))i.object.startMaterial(r.substring(7).trim(),i.materialLibraries);else if(dl.test(r))i.materialLibraries.push(r.substring(7).trim());else if(pl.test(r))console.warn('THREE.OBJLoader: Rendering identifier "usemap" not supported. Textures must be defined in MTL files.');else if(l==="s"){if(s=r.split(" "),s.length>1){const c=s[1].trim().toLowerCase();i.object.smooth=c!=="0"&&c!=="off"}else i.object.smooth=!0;const g=i.object.currentMaterial();g&&(g.smooth=i.object.smooth)}else{if(r==="\0")continue;console.warn('THREE.OBJLoader: Unexpected line: "'+r+'"')}}return i.finalize(),e?i:this.createObjects(i)}createObjects(A){const e=new Xe;if(e.materialLibraries=[].concat(A.materialLibraries),!(A.objects.length===1&&A.objects[0].geometry.vertices.length===0))for(let i=0,t=A.objects.length;i<t;i++){const s=A.objects[i],o=s.geometry,a=s.materials,r=o.type==="Line",l=o.type==="Points";let g=!1;if(o.vertices.length===0)continue;const c=new oe;c.setAttribute("position",new FA(o.vertices,3)),o.normals.length>0&&c.setAttribute("normal",new FA(o.normals,3)),o.colors.length>0&&(g=!0,c.setAttribute("color",new FA(o.colors,3))),o.hasUVIndices===!0&&c.setAttribute("uv",new FA(o.uvs,2));const I=[];for(let C=0,d=a.length;C<d;C++){const E=a[C],p=E.name+"_"+E.smooth+"_"+g;let f=A.materials[p];if(this.materials!==null){if(f=this.materials.create(E.name),r&&f&&!(f instanceof Fe)){const Q=new Fe;Ct.prototype.copy.call(Q,f),Q.color.copy(f.color),f=Q}else if(l&&f&&!(f instanceof Bt)){const Q=new Bt({size:10,sizeAttenuation:!1});Ct.prototype.copy.call(Q,f),Q.color.copy(f.color),Q.map=f.map,f=Q}}f===void 0&&(r?f=new Fe:l?f=new Bt({size:1,sizeAttenuation:!1}):f=new pt,f.name=E.name,f.flatShading=!E.smooth,f.vertexColors=g,A.materials[p]=f),I.push(f)}let B;if(I.length>1){for(let C=0,d=a.length;C<d;C++){const E=a[C];c.addGroup(E.groupStart,E.groupCount,C)}r?B=new Ht(c,I):l?B=new qt(c,I):B=new K(c,I)}else r?B=new Ht(c,I[0]):l?B=new qt(c,I[0]):B=new K(c,I[0]);B.name=s.name,e.add(B)}else if(A.vertices.length>0){const i=new Bt({size:1,sizeAttenuation:!1}),t=new oe;t.setAttribute("position",new FA(A.vertices,3)),A.colors.length>0&&A.colors[0]!==void 0&&(t.setAttribute("color",new FA(A.colors,3)),i.vertexColors=!0);const s=new qt(t,i);e.add(s)}return e}}class ml{constructor(){this.isPass=!0,this.enabled=!0,this.needsSwap=!0,this.clear=!1,this.renderToScreen=!1}setSize(){}render(){console.error("THREE.Pass: .render() must be implemented in derived pass.")}dispose(){}}new Ps(-1,1,1,-1,0,1);class bl extends oe{constructor(){super(),this.setAttribute("position",new FA([-1,3,0,-1,-1,0,3,-1,0],3)),this.setAttribute("uv",new FA([0,2,0,0,2,0],2))}}new bl;const wl=typeof TextDecoder>"u"?(0,module.require)("util").TextDecoder:TextDecoder;let Un=new wl("utf-8",{ignoreBOM:!0,fatal:!0});Un.decode();let ci=null;function yl(){return(ci===null||ci.buffer!==XA.memory.buffer)&&(ci=new Uint8Array(XA.memory.buffer)),ci}function Dl(n,A){return Un.decode(yl().subarray(n,n+A))}const Le=new Array(32).fill(void 0);Le.push(void 0,null,!0,!1);let Lt=Le.length;function Sl(n){Lt===Le.length&&Le.push(Le.length+1);const A=Lt;return Lt=Le[A],Le[A]=n,A}function vl(n){return Le[n]}function xl(n){n<36||(Le[n]=Lt,Lt=n)}function Rl(n){const A=vl(n);return xl(n),A}let li=null;function _n(){return(li===null||li.buffer!==XA.memory.buffer)&&(li=new Float32Array(XA.memory.buffer)),li}let hi=0;function vs(n,A){const e=A(n.length*4);return _n().set(n,e/4),hi=n.length,e}let Ii=null;function Pn(){return(Ii===null||Ii.buffer!==XA.memory.buffer)&&(Ii=new Int32Array(XA.memory.buffer)),Ii}function Fl(n,A){return _n().subarray(n/4,n/4+A)}function kl(n,A,e){try{const I=XA.__wbindgen_add_to_stack_pointer(-16);var i=vs(n,XA.__wbindgen_malloc),t=hi,s=vs(A,XA.__wbindgen_malloc),o=hi,a=vs(e,XA.__wbindgen_malloc),r=hi;XA.generateTangents(I,i,t,s,o,a,r);var l=Pn()[I/4+0],g=Pn()[I/4+1],c=Fl(l,g).slice();return XA.__wbindgen_free(l,g*4),c}finally{XA.__wbindgen_add_to_stack_pointer(16)}}const Hn=function(n,A){var e=Dl(n,A);return Sl(e)},qn=function(n){throw Rl(n)},Ml="data:application/octet-stream;base64,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TQ0WIARBAnRqIgQgBCgCAEEBajYCACACQQRqIQIgA0F/aiIDDQALCyABQdgFaigCACABKALgBUUNFUEAIQJBADYCAEEBIQQDQCABQfgCaiABQdgFahBjIAEoAvwCIgMgBEF/aiIHTQ0UIAEoAvgCIAJqKAIAIQMgAUHwAmogAUHoBWoQYyABKAL0AiINIAdNDRMgASgC8AIgAmooAgAhByABQdgFaigCACENIAEoAuAFIhEgBE0NEiACIA1qQQRqIAMgB2o2AgAgAkEEaiECIARBAWoiBEGAEEcNAAsgCEEJTwRAQQAhBCABQZgGakEAQQRBCCAGGyALG2ohCCAFIQMDQCABQegCaiADKAIAEGEgAUGYBmogACABKALoAiABKALsAhAxIDAgLiAIKgIAEDwhAiABQeACaiABQdgFahBjIAEoAuQCIgYgAk0NEiABQcgFaigCACABKALQBSINIAJBAnQiBiABKALgAmooAgAiC00NESABQdgCaiABQfgFahBjIAEoAtwCIg0gAk0NECALQQJ0aiABKALYAiAGaigCAEECdGogBDYCACABQfgFaigCACELIAEoAoAGIgcgAk0NDyAGIAtqIgIgAigCAEEBajYCACADQQRqIQMgCiAEQQFqIgRHDQALCyABQdACaiABQegFahBjIAEoAtQCRQ0MIAEoAtACKAIAIQNBBCECQQEhBANAIAFByAJqIAFB6AVqEGMgASgCzAIiCiAETQ0MIAMgASgCyAIgAmooAgBJBEAgAUHAAmogAUHoBWoQYyABKALEAiIDIARNDQwgASgCwAIgAmooAgAhAwsgAkEEaiECIARBAWoiBEGAEEcNAAsgAUHgA2oiAkIANwIAIAJBCGpCADcCACABQaAGaiABQegDaikDADcDACABIAEpA+ADNwOYBiABQYgGaiABQZgGaiADEEEgASgCiAYhCiABKAKQBiELQQAhBgNAIAFBuAJqIAFB2AVqEGMgASgCvAIiAyAGTQ0KIAFByAVqKAIAIQIgASgC0AUiBCAGQQJ0IgggASgCuAJqKAIAIgNNDQkgAUGwAmogAUHoBWoQYyABKAK0AiIEIAZNDQggASgCsAIgCGooAgAiCEECTwRAIAIgA0ECdGohBEEAIQMgCiECA0AgAUGoAmogBSAEKAIAIgdBAnRqKAIAEGEgAUGYBmogACABKAKoAiABKAKsAhAxIAMgC0YNCSACIAEoApgGNgIAIAJBBGogASgCnAY2AgAgASgCoAYhDSACQQxqIAc2AgAgAkEIaiANNgIAIARBBGohBCACQRBqIQIgCCADQQFqIgNHDQALIAUgCiAAQQAgCEF/ahAECyAGQQFqIgZBgBBHDQALIBNBASATQQFLGyEFIA5BPGohAyABQYgGahBSIAFB+AVqKAIAGiABQfgFahBWIAFB6AVqKAIAGiABQegFahBWIAFB2AVqKAIAGiABQdgFahBWIAFByAVqKAIAGiABQcgFahBWQQAhAkEAIQRBACEGQQAhBwNAIAFBoAJqIAFBwANqEGMgASgCpAIiCiAETQ0GIAEoAqACIAJqKAIAIQogAUGYAmogAUHAA2oQYyABKAKcAiILIARBAWpNDQUgASgCmAIgAmpBBGooAgAhCyABQZACaiABQcADahBjIAEoApQCIgggBEECak0NBCABKAKQAiACakEIaigCACEIIAFBiAJqIAoQYSABQYgGaiAAIAEoAogCIAEoAowCEDEgAUGAAmogCxBhIAFB4ANqIAAgASgCgAIgASgChAIQMSABQfgBaiAIEGEgAUGYBmogACABKAL4ASABKAL8ARAxAkACQCABQYgGaiABQeADahALDQAgAUGIBmogAUGYBmoQCw0AIAFB4ANqIAFBmAZqEAtFDQELIAwgBk0NBCADIAMoAgBBAXI2AgAgB0EBaiEHCyACQQxqIQIgBEEDaiEEIANByABqIQMgBSAGQQFqIgZHDQALIA4gAUHAA2ooAgAgEyAHayIKIBMQECABQcADaigCACELAkACQCAKRQRAQX8hBgwBC0EAIQYDQCAOIAZByABsaiIDQn83AgAgA0EIakF/NgIAIANBDGpCADcCACADQRRqQQA2AgAgA0E8aiADQRhqIQIgAygCPCEEQQMhAwNAIAJCADcCACACQRhqQgA3AgAgAkEQakIANwIAIAJBCGpCADcCACAEQQRyIQQgA0F/aiIDDQALIAQ2AgAgBkEBaiIGIApHDQALIAFBpAZqIQYgAUHsA2ohDEEAIQUDQCABQfABaiALIAVBDGxqIgMoAgAQYSABQagFaiAAIAEoAvABIAEoAvQBEDEgAUHoAWogA0EEaiICKAIAEGEgAUG4BWogACABKALoASABKALsARAxIAFB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AkAgASgCRBAxIAEpA4gGISsgASgCkAYhFyABQThqIAIQYSABQYgGaiAAIAEoAjggASgCPBAxIAEoAogGIQIgASgCjAYhECABKAKQBiESIAFBMGogHRBhIAFBiAZqIAAgASgCMCABKAI0EDEgASkDiAYhLCABKAKQBiEdIAEgFzYCgAYgASArNwP4BSABIBI2ApAGIAEgEDYCjAYgASACNgKIBiABQcgFaiABQfgFaiABQYgGahAVIAEgHTYCgAYgASAsNwP4BSABIBI2ApAGIAEgEDYCjAYgASACNgKIBiABQdgFaiABQfgFaiABQYgGahAVIBYgAUHQBWoiECgCADYCACABIAEpA8gFNwP4BSABQbgFaiABQcgFahARITUgBCAYKAIANgIAIAEgASkDuAU3A4gGIAFBKGogAUGIBmogGRBoIAEoAigiAiABKAIsIhJHBEADQCACIDUgAioCAJQ4AgAgEiACQQRqIgJHDQALCyABQcgFaiABQfgFaiABQYgGahAVIAQgECgCADYCACABIAEpA8gFNwOIBiABQYgGahBRBEAgBCAQKAIANgIAIAEgASkDyAU3A4gGIAFByAVqIAFBiAZqECMLIBYgAUHgBWoiECgCADYCACABIAEpA9gFNwP4BSABQbgFaiABQdgFahARITUgBCAYKAIANgIAIAEgASkDuAU3A4gGIAFBIGogAUGIBmogGRBoIAEoAiAiAiABKAIkIhJHBEADQCACIDUgAioCAJQ4AgAgEiACQQRqIgJHDQALCyABQdgFaiABQfgFaiABQYgGahAVIAQgECgCADYCACABIAEpA9gFNwOIBiABQYgGahBRBEAgBCAQKAIANgIAIAEgASkD2AU3A4gGIAFB2AVqIAFBiAZqECMLQwAAgD8gAUHIBWogAUHYBWoQESI1QwAAgL+XIDVDAACAP14buxAOIA8qAjQhNSAPKgIwITcgFiADKAIANgIAIAEgASkDmAY3A/gFIAEgMjgCkAYgASAvOAKMBiABIDM4AogGIAFBGGogAUGIBmogGRBotiEvIAEoAhgiAiABKAIcIg9HBEADQCACIAIqAgAgL5Q4AgAgDyACQQRqIgJHDQALCyABQZgGaiABQfgFaiABQYgGahAWIBYgFUEIaiIPKAIANgIAIAEgFSkCADcD+AUgASAxOAKQBiABIDA4AowGIAEgNDgCiAYgAUEQaiABQYgGaiAZEGggASgCECICIAEoAhQiEEcEQANAIAIgAioCACAvlDgCACAQIAJBBGoiAkcNAAsLIAFB6AVqIAFB+AVqIAFBiAZqEBYgDyABQfAFaigCADYCACAVIAEpA+gFNwIAIAEgNyAvlCABKgKkBpI4AqQGIAEgNSAvlCABKgK0BpI4ArQGIC4gL5IhLgsgCSAHQQFqIgdHDQALDAQLIAkgD0HcgsAAED8ACyAFIAJB7ILAABA/AAsgDCACQfyCwAAQPwALIAwgB0GMg8AAED8ACyAEIAMoAgA2AgAgASABKQOYBjcDiAYgAUGIBmoQUQRAIAQgAygCADYCACABIAEpA5gGNwOIBiABQZgGaiABQYgGahAjCyAEIBVBCGoiAigCADYCACABIBUpAgA3A4gGIAFBiAZqEFEEQCAEIAIoAgA2AgAgASAVKQIANwOIBiABQfgFaiABQYgGahAjIAIgAUGABmooAgA2AgAgFSABKQP4BTcCAAsgLkMAAAAAXkEBc0UEQCABIAEqAqQGIC6VOAKkBiABIAEqArQGIC6VOAK0BgsgASgC4AQiAiAMTQ0DIAEoAtgEIAxBKGxqIAFBmAZqQSgQTiAMQQFqIQwLICAEQCAIKAJAIAggKGpBxABqLQAAaiICICJPDQICfyAUIAJBKGxqIgIoAiBBAUcEQCABKALgBCIEIAVNDQYgAiABKALYBCAFQShsakEoEDsaQQEMAQsgASgC4AQiBCAFTQ0GIAFBmAZqIAIgASgC2AQgBUEobGoQBSACIAFBmAZqQSgQTkECCyEFIAJBIGogBTYCACACICYtAAA6ACQgESgCABogERBWIB9BAWoiHyANKAIASA0BDAYLC0F/QQRBrIPAABA/AAsgAiAiQbyDwAAQPwALIAwgAkGcg8AAED8ACyAFIARBzIPAABA/AAsgBSAEQdyDwAAQPwALICNBAWoiIyAGRw0ACyABQfgEaigCABogAUH4BGoQViABQegEahBJIAFB6ARqEFIgAUHYBGoQVCABKALIBCEUIAEoAtADIQsLIAFBwANqKAIAIQUgCiATSARAIBtBAUghCSAKIQMDQCALIANByABsaiIELQA8QQJxRQRAIANBA2whDCAEQUBrIQhBACEGA0ACQCAJDQAgBSAGIAxqQQJ0aigCACEOQQAhAgNAAkAgAiAOIAUgAkECdGooAgAiB0ciDWohAiAHIA5GDQAgAiAbSA0BCwsgDQ0AIBQgCCgCACAEIAZqQcQAai0AAGpBKGxqIBQgCyACQQNuIg5ByABsaiIHKAJAIAcgAiAOQQNsa2pBxABqLQAAakEobGpBKBA7GgsgBkEBaiIGQQNHDQALCyADICVGIANBAWohA0UNAAsLIApBAU4EQCALQcQAaiEEQQAhBQNAAkAgCyAFQcgAbGoiAy0APEECcUUNACABQQA2AugDIAFCADcD4AMgAUEIaiADKAI4IgYCf0EBQQEgA0HFAGotAABBH3F0QQEgAy0AREEfcXRyQQEgA0HGAGotAABBH3F0ciICQQJxRQ0AGkECIAJBBHFFDQAaQQBBAyACQQhxGwsiDhBmEGEgAUGYBmogACABKAIIIAEoAgwQMSABQegDaiABQaAGaigCADYCACABIAEpA5gGNwPgAyADQUBrIQNBACECA0AgASAGIAIgBGotAAAiCRBmEGEgAUGYBmogACABKAIAIAEoAgQQMSABQZgGaiABQeADahALBEAgFCADKAIAIgMgDmpBKGxqIBQgAyAJakEobGpBKBA7GgwCCyACQQFqIgJBA0cNAAsLIARByABqIQQgBUEBaiIFIApHDQALCyABKALQBCEFQQAhBkEAIQkDQEEAIAUgCWsiAyADIAVLGyEKIBQgCUEobGohDkEAIQNBACEEA0AgBCAKRg0DIAMgDmoiAikCACErIAEgAkEIaigCADYC6AMgASArNwLgAyAAIAFB4ANqIAJBDGoqAgAgAkEcaioCACACQSRqLQAAEB8gBEEBaiEEIANBKGoiA0H4AEcNAAsgBCAJaiEJIAZBAWoiBiATRw0ACyABQcgEahBUIAFBuARqKAIAGiABQbgEahBWIAFBqARqEFIgAUHQA2oQUyABQcADaigCABogAUHAA2oQVkEBIQILIAFB4AZqJAAgAg8LIAQgCWogBUHMgsAAED8ACyAGIAxBvILAABA/AAsgBEECaiAIQayCwAAQPwALIARBAWogC0GcgsAAED8ACyAEIApBjILAABA/AAsgCyALQdyFwAAQPwALIAYgBEHMhcAAED8ACyADIARBvIXAABA/AAsgBiADQayFwAAQPwALIAQgA0GchcAAED8ACyAEIApBjIXAABA/AAtBAEEA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AiALIANBEGogAiABIANBIGoQLSADQRhqKAIAIQEgAygCFCECIAMoAhBBAUYNASAAIAI2AgAgACABQShuNgIECyADQTBqJAAPCyADQQhqIAIgARBoIAMoAgghASADKAIMDAELIAMgAkEAEGggAygCACEBIAMoAgQLIgAEQCABIAAQcAALEGsAC6cCAgN/AX4jAEEwayIDJAACfwJAAkAgACgCBCIEIAFrIAJJBEAgASACaiICIAFJDQJBBCEBAkAgBEEBdCIFIAIgBSACSxsiAkEEIAJBBEsbrUIMfiIGQiCIp0UEQCAGpyECDAELIAAoAgQhBEEAIQELAkAgBARAIAAoAgAhBSADQShqQQQ2AgAgAyAEQQxsNgIkIAMgBTYCIAwBCyADQQA2AiALIANBEGogAiABIANBIGoQLSADQRhqKAIAIQEgAygCFCECIAMoAhBBAUYNASAAIAI2AgAgACABQQxuNgIECyADQTBqJAAPCyADQQhqIAIgARBoIAMoAgghASADKAIMDAELIAMgAkEAEGggAygCACEBIAMoAgQLIgAEQCABIAAQcAALEGsAC6gCAQN/IwBBMGsiAyQAAn8CQAJAIAAoAgQiBCABayACSQRAIAEgAmoiAiABSQ0CQQQhAQJAIARBAXQiBSACIAUgAksbIgJBBCACQQRLGyICQf////8DcSACRgRAIAJBAnQhAgwBCyAAKAIEIQRBACEBCwJAIAQEQCAAKAIAIQUgA0EoakEENgIAIAMgBEECdDYCJCADIAU2AiAMAQsgA0EANgIgCyADQRBqIAIgASADQSBqEC0gA0EYaigCACEBIAMoAhQhAiADKAIQQQFGDQEgACACNgIAIAAgAUECdjYCBAsgA0EwaiQADwsgA0EIaiACIAEQaCADKAIIIQEgAygCDAwBCyADIAJBABBoIAMoAgAhASADKAIECyIABEAgASAAEHAACxBrAAuoAgEDfyMAQTBrIgMkAAJ/AkACQCAAKAIEIgQgAWsgAkkEQCABIAJqIgIgAUkNAkEEIQECQCAEQQF0IgUgAiAFIAJLGyICQQQgAkEESxsiAkH/////AHEgAkYEQCACQQR0IQIMAQsgACgCBCEEQQAhAQsCQCAEBEAgACgCACEFIANBKGpBBDYCACADIARBBHQ2AiQgAyAFNgIgDAELIANBADYCIAsgA0EQ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aiEDIAUoAggiBiAFKAIMIgdJBEAgByAGayEIA0AgAikCACEJIANBCGogAkEIaikCADcCACADIAk3AgAgA0EQaiEDIAhBf2oiCA0ACyAEIAdqIAZrIQQLIAAgAQR/IAIpAgAhCSADQQhqIAJBCGopAgA3AgAgAyAJNwIAIARBAWoFIAQLNgIIIAVBEGokAAuqAQMBfwN+An0jAEEgayICJAAgAkEYaiABKAIAEGEgACACKAIYIAIoAhwQPSEDIAJBEGogASgCBBBhIAAgAigCECACKAIUED0hBCACQQhqIAEoAggQYSAAIAIoAgggAigCDBA9IQUgAkEgaiQAIASnviADp74iBpMgBUIgiKe+IANCIIinviIHk5QgBEIgiKe+IAeTIAWnviAGk5STIgaMIAYgBkMAAAAAXRsLsQEBBX8jAEEQayIDJAACQCAAKAIEIgIgAU8EQAJAIAIEQCACQQJ0IQIgACgCACEEAkAgAUECdCIFRQRAQQQhBiACRQ0BIAQgAkEEEGoMAQsgBCACQQQgBRBiIgZFDQILIAAgBjYCACAAIAFB/////wNxNgIECyADQRBqJAAPCyADQQhqIAVBBBBoIAMoAgwiAEUNASADKAIIIAAQcAALQcWIwABBJEHsiMAAEEgACxBrAAu2AQEBfyMAQRBrIgMkAAJAIABFDQAgAyAANgIEIAFFDQACQCACQQRLDQAgAUEDakECdkF/aiIAQf8BSw0AIANBoJXAADYCCCADIABBAnRBpJXAAGoiACgCADYCDCADQQRqIANBDGogA0EIakGUicAAEBMgACADKAIMNgIADAELIANBoJXAACgCADYCDCADQQRqIANBDGpB/IjAAEH8iMAAEBNBoJXAACADKAIMNgIACyADQRBqJAALmQEBBn8jAEEQayIFJAAgACAAKAIIIAEQGCAAKAIAIAAoAgghAyAFQQhqQQEgARBoIANByABsaiEEIAUoAggiBiAFKAIMIgdJBEAgByAGayEIA0AgBCACQcgAEDtByABqIQQgCEF/aiIIDQALIAMgB2ogBmshAwsgACABBH8gBCACQcgAEDsaIANBAWoFIAMLNgIIIAVBEGokAAuVAQEGfyMAQRBrIgUkACAAIAAoAgggARAZIAAoAgAgACgCCCEDIAVBCGpBASABEGggA0EobGohBCAFKAIIIgYgBSgC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AWoiAiABIAJLG0GHgARqIgFBEHZAACICQX9GBEBBACEDQQEMAQsgAkEQdCIDQgA3AwAgA0EANgIIIAMgAyABQYCAfHFqQQJyNgIAQQALIQIgACADNgIEIAAgAjYCAAtvAQF/AkAgASAATwRAIAJFDQEgACEDA0AgAyABLQAAOgAAIAFBAWohASADQQFqIQMgAkF/aiICDQALDAELIAJFDQAgAUF/aiEBIABBf2ohAwNAIAIgA2ogASACai0AADoAACACQX9qIgINAAsLIAALbwECfwJ/IAIgAJMgASAAk5VDAAAARZQiAEMAAADPYCIDQQFzIABD////Tl9FckUEQCAAqAwBC0H/////B0GAgICAeCADGyIEIARBACAAQ////05fGyADGwsiA0EAIANBAEobIgNB/w8gA0H/D0gbC2YBAX8CQCAAQSBqKAIAIgMgAUEGbCACQQF0aiIBSwRAIAMgAUEBciICTQ0BIAAoAhgiACACQQJ0ajUCAEIghiAAIAFBAnRqNQIAhA8LIAEgA0HsgMAAED8ACyACIANB/IDAABA/AAtrAQJ/IwBBEGsiBiQAAkAgACABIAIgAyAEEAoiBQ0AIAZBCGogAyAAIAEgBCgCDBEFAEEAIQUgBigCCA0AIAYoAgwiBSACKAIANgIIIAIgBTYCACAAIAEgAiADIAQQCiEFCyAGQRBqJAAgBQtsAQF/IwBBMGsiAyQAIAMgATYCBCADIAA2AgAgA0EcakECNgIAIANBLGpBHTYCACADQgI3AgwgA0G0kMAANgIIIANBHTYCJCADIANBIGo2AhggAyADNgIoIAMgA0EEajYCICADQQhqIAIQWQALVAEBfyMAQSBrIgIkACACIAAoAgA2AgQgAkEYaiABQRBqKQIANwMAIAJBEGogAUEIaikCADcDACACIAEpAgA3AwggAkEEaiACQQhqEAggAkEgaiQAC1kCAX8BfiMAQSBrIgMkACADQQhqIAIQNyADKQMIIQQgAEEANgIIIAAgBDcCACADQRhqIAFBCGopAgA3AwAgAyABKQIANwMQIAAgAiADQRBqECcgA0EgaiQAC1kCAX8BfiMAQSBrIgMkACADQQhqIAIQNCADKQMIIQQgAEEANgIIIAAgBDcCACADQRhqIAFBCGooAgA2AgAgAyABKQIANwMQIAAgAiADQRBqECYgA0EgaiQAC1kCAX8BfiMAQSBrIgMkACADQQhqIAIQNyADKQMIIQQgAEEANgIIIAAgBDcCACADQRhqIAFBCGopAgA3AwAgAyABKQIANwMQIAAgAiADQRBqECAgA0EgaiQAC1QBAn8gASgCACECIAFBADYCAAJAIAIEQCABKAIEIQNBCEEEEGciAUUNASABIAM2AgQgASACNgIAIABByI3AADYCBCAAIAE2AgAPCwALQQhBBBBwAAtKAgF/AX4jAEHQAGsiAyQAIAMgAhA2IAMpAwAhBCAAQQA2AgggACAENwIAIANBCGogAUHIABBOIAAgAiADQQhqECsgA0HQAGokAAtHAgF/AX4jAEEwayIDJAAgAyACEDUgAykDACEEIABBADYCCCAAIAQ3AgAgA0EIaiABQSgQTiAAIAIgA0EIahAsIANBMGokAAtKAAJ/IAFBgIDEAEcEQEEBIAAoAhggASAAQRxqKAIAKAIQEQIADQEaCyACRQRAQQAPCyAAKAIYIAJBACAAQRxqKAIAKAIMEQQACwtHAQF/IwBBIGsiAyQAIANBFGpBADYCACADQfCPwAA2AhAgA0IBNwIEIAMgATYCHCADIAA2AhggAyADQRhqNgIAIAMgAhBZAAs8AQF/IAAoAggiAQRAIAFBBHQhASAAKAIAQQRqIQADQCAAKAIAGiAAEFYgAEEQaiEAIAFBcGoiAQ0ACwsLOAAgAEIANwIAIABBCGpBADYCACAAQSRqQQA6AAAgAEEcakIANwIAIABBFGpCADcCACAAQgA3AgwLRAECfyABKAIEIQIgASgCACEDQQhBBBBnIgFFBEBBCEEEEHAACyABIAI2AgQgASADNgIAIABBoI/AADYCBCAAIAE2AgALPQAgAEIANwIgIAAgASkCADcCACAAIAIpAgA3AhAgAEEIaiABQQhqKQIANwIAIABBGGogAkEIaikCADcCAAtbAQN/IwBBEGsiASQAIAAoAgwiAkUEQEGAjsAAQStByI7AABBIAAsgACgCCCIDRQRAQYCOwABBK0HYjsAAEEgACyABIAI2AgggASAANgIEIAEgAzYCACABEFgACysAIAIEQANAIAAgAS0AADoAACABQQFqIQEgAEEBaiEAIAJBf2oiAg0ACwsLKQEBfyADIAIQLiIEBEAgBCAAIAMgASABIANLGxBOIAAgASACECoLIAQLLAACQCAAQXxNBEAgAEUEQEEEIQAMAgsgACAAQX1JQQJ0EGciAA0BCwALIAALNwEBf0EBIQECQCAAKgIAi0MAAIAAXg0AIAAqAgSLQwAAgABeDQAgACoCCItDAACAAF4hAQsgAQsmAQF/AkAgACgCBCIBRQ0AIAAoAgAgAUEEdCIBRQ0AIAFBBBBqCwsnAQF/AkAgACgCBCIBRQ0AIAAoAgAgAUHIAGwiAUUNACABQQQQagsLJgEBfwJAIAAoAgQiAUUNACAAKAIAIAFBKGwiAUUNACABQQQQagsLJgEBfwJAIAAoAgQiAUUNACAAKAIAIAFBDGwiAUUNACABQQQQagsLJgEBfwJAIAAoAgQiAUUNACAAKAIAIAFBAnQiAUUNACABQQQQagsLLAEBfyMAQRBrIgEkACABQQhqIABBCGooAgA2AgAgASAAKQIANwMAIAEQWwALLAEBfyMAQRBrIgEkACABQQhqIABBCGooAgA2AgAgASAAKQIANwMAIAEQMwALNAEBfyMAQRBrIgIkACACIAE2AgwgAiAANgIIIAJB8I/AADYCBCACQfCPwAA2AgAgAhBNAAspAQF/IAEEQCAAIQIDQCACQQA6AAAgAkEBaiECIAFBf2oiAQ0ACwsgAAsrAQF/IwBBEGsiASQAIAEgACkCADcDCCABQQhqQbSNwABBACAAKAIIECUACycBAX8jAEEQayICJAAgAiABNgIIIAJBHTYCBCACIAA2AgAgAhBXAAsmAQF/AkAgACgCACIBRQ0AIABBBGooAgAiAEUNACABIABBARBqCwsmAQF/AkAgACgCBCIBRQ0AIABBCGooAgAiAEUNACABIABBARBqCwshACAAQQM2AgwgACABNgIEIAAgATYCACAAIAFBDGo2AggLHQAgASgCAEUEQAALIABByI3AADYCBCAAIAE2AgALFgAgACABQQNxNgIEIAAgAUECdjYCAAsMACAAIAEgAiADEE8LFgAgACABKAIINgIEIAAgASgCADYCAAsPACABBEAgACABQQQQagsLEgAgACgCACABIAEgAmoQIkEACw0AIAFBA3EgAEECdHILCAAgACABEC4LEAAgACACNgIEIAAgATYCAAsTACAAQaCPwAA2AgQgACABNgIACwoAIAAgASACECoLEQBBzI/AAEERQeCPwAAQSAALDgAgACgCABoDQAwACwALCwAgADUCACABEBQLCwAgACMAaiQAIwALCwAgAItDAACAAF4LGQAgACABQcSdwAAoAgAiAEEPIAAbEQEAAAsFAEGABAsEAEEBCwQAIAELBABBAAsNAEL0+Z7m7qOq+f4ACw0AQve47vqqzNXu5QALDABC6dCi28yi6rtGCwMAAQsDAAELC6QVAgBBgIDAAAvBCnNyYy9saWIucnMAAAAAEAAKAAAANgAAAA0AAAAAABAACgAAADcAAAANAAAAAAAQAAoAAAA4AAAADQAAAAAAEAAKAAAAPgAAAA0AAAAAABAACgAAAD8AAAANAAAAAAAQAAoAAABAAAAADQAAAAAAEAAKAAAARgAAAA0AAAAAABAACgAAAEcAAAANAAAARmFpbGVkIHRvIGdlbmVyYXRlIHRhbmdlbnRzLi9Vc2Vycy9kb25tY2N1cmR5Ly5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL21pa2t0c3BhY2UtMC4yLjAvc3JjL2dlbmVyYXRlZC5ycwCoABAAYwAAANcAAAASAAAAqAAQAGMAAADYAAAAEgAAAKgAEABjAAAA2QAAABIAAACoABAAYwAAAN4AAAANAAAAqAAQAGMAAAAjAQAAOAAAAKgAEABjAAAA/QEAABUAAACoABAAYwAAAA8CAABAAAAAqAAQAGMAAAAVAgAAEQAAAKgAEABjAAAAFgIAABEAAACoABAAYwAAABgCAAARAAAAqAAQAGMAAAAjAgAAGQAAAKgAEABjAAAAJAIAADIAAACoABAAYwAAACoCAAAcAAAAqAAQAGMAAAAmAgAANAAAAKgAEABjAAAAvQUAAAkAAACoABAAYwAAAMAFAAAFAAAAqAAQAGMAAADDBQAAHAAAAKgAEABjAAAAwwUAADMAAACoABAAYwAAAMMFAAAJAAAAqAAQAGMAAADTBQAAIwAAAKgAEABjAAAA0wUAABcAAACoABAAYwAAANQFAAAYAAAAqAAQAGMAAADVBQAACQAAAKgAEABjAAAA3AUAABEAAACoABAAYwAAAN8FAAAYAAAAqAAQAGMAAADgBQAAGQAAAKgAEABjAAAA6AUAAC0AAACoABAAYwAAAOgFAAAhAAAAqAAQAGMAAADpBQAAGAAAAKgAEABjAAAA8gUAABEAAACoABAAYwAAAKcGAAANAAAAqAAQAGMAAACuBgAAEQAAAKgAEABjAAAArwYAABEAAACoABAAYwAAALAGAAARAAAAqAAQAGMAAAD9BgAACQAAAE1hdHJpeCBzbGljaW5nIG91dCBvZiBib3VuZHMuL1VzZXJzL2Rvbm1jY3VyZHkvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvbmFsZ2VicmEtMC4xOS4wL3NyYy9iYXNlL21hdHJpeF9zbGljZS5ycwBZAxAAagAAAOMAAAAJAAAAL1VzZXJzL2Rvbm1jY3VyZHkvLnJ1c3R1cC90b29sY2hhaW5zL3N0YWJsZS14ODZfNjQtYXBwbGUtZGFyd2luL2xpYi9ydXN0bGliL3NyYy9ydXN0L2xpYnJhcnkvYWxsb2Mvc3JjL3Jhd192ZWMucnNUcmllZCB0byBzaHJpbmsgdG8gYSBsYXJnZXIgY2FwYWNpdHkAAADUAxAAcQAAAMUBAAAJAAAAAQAAAAAAAAABAAAAAgAAAAMAAAAEAAAABQAAAAQAAAAEAAAABgAAAAcAAAAIAAAACQAAAAAAAAABAAAAAgAAAAMAAAAEAAAAL1VzZXJzL2Rvbm1jY3VyZHkvLnJ1c3R1cC90b29sY2hhaW5zL3N0YWJsZS14ODZfNjQtYXBwbGUtZGFyd2luL2xpYi9ydXN0bGliL3NyYy9ydXN0L2xpYnJhcnkvY29yZS9zcmMvbnVtL21vZC5yc8QEEABwAAAAnQIAAAUAQdCKwAAL0AphdHRlbXB0IHRvIGNhbGN1bGF0ZSB0aGUgcmVtYWluZGVyIHdpdGggYSBkaXZpc29yIG9mIHplcm9NYXRyaXggc2xpY2luZyBvdXQgb2YgYm91bmRzLi9Vc2Vycy9kb25tY2N1cmR5Ly5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL25hbGdlYnJhLTAuMTkuMC9zcmMvYmFzZS9tYXRyaXhfc2xpY2UucnOmBRAAagAAAOMAAAAJAAAAL1VzZXJzL2Rvbm1jY3VyZHkvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvbWlra3RzcGFjZS0wLjIuMC9zcmMvZ2VuZXJhdGVkLnJzACAGEABjAAAA2wIAABkAAAAgBhAAYwAAANsCAAAyAAAAIAYQAGMAAAB+AwAACAAAAAoAAAAIAAAABAAAAAsAAAAMAAAADQAAAAgAAAAEAAAADgAAABAAAAAEAAAABAAAABEAAAASAAAAEwAAABAAAAAAAAAAAQAAABQAAABjYWxsZWQgYE9wdGlvbjo6dW53cmFwKClgIG9uIGEgYE5vbmVgIHZhbHVlbGlicmFyeS9zdGQvc3JjL3Bhbmlja2luZy5ycwArBxAAHAAAAO0BAAAfAAAAKwcQABwAAADuAQAAHgAAABUAAAAQAAAABAAAABYAAAAXAAAAEAAAAAgAAAAEAAAAGAAAABkAAAAaAAAADAAAAAQAAAAbAAAAEAAAAAgAAAAEAAAAHAAAAGxpYnJhcnkvYWxsb2Mvc3JjL3Jhd192ZWMucnNjYXBhY2l0eSBvdmVyZmxvdwAAALAHEAAcAAAAHgIAAAUAAAAfAAAAAAAAAAEAAAAgAAAAaW5kZXggb3V0IG9mIGJvdW5kczogdGhlIGxlbiBpcyAgYnV0IHRoZSBpbmRleCBpcyAAAAAIEAAgAAAAIAgQABIAAAAwMDAxMDIwMzA0MDUwNjA3MDgwOTEwMTExMjEzMTQxNTE2MTcxODE5MjAyMTIyMjMyNDI1MjYyNzI4MjkzMDMxMzIzMzM0MzUzNjM3MzgzOTQwNDE0MjQzNDQ0NTQ2NDc0ODQ5NTA1MTUyNTM1NDU1NTY1NzU4NTk2MDYxNjI2MzY0NjU2NjY3Njg2OTcwNzE3MjczNzQ3NTc2Nzc3ODc5ODA4MTgyODM4NDg1ODY4Nzg4ODk5MDkxOTI5Mzk0OTU5Njk3OTg5OWxpYnJhcnkvY29yZS9zcmMvZm10L21vZC5ycwAMCRAAGwAAAFUEAAARAAAADAkQABsAAABfBAAAJAAAAAMAAAAEAAAABAAAAAYAAACD+aIARE5uAPwpFQDRVycA3TT1AGLbwAA8mZUAQZBDAGNR/gC73qsAt2HFADpuJADSTUIASQbgAAnqLgAcktEA6x3+ACmxHADoPqcA9TWCAES7LgCc6YQAtCZwAEF+XwDWkTkAU4M5AJz0OQCLX4QAKPm9APgfOwDe/5cAD5gFABEv7wAKWosAbR9tAM9+NgAJyycARk+3AJ5mPwAt6l8Auid1AOXrxwA9e/EA9zkHAJJSigD7a+oAH7FfAAhdjQAwA1YAe/xGAPCrawAgvM8ANvSaAOOpHQBeYZEACBvmAIWZZQCgFF8AjUBoAIDY/wAnc00ABgYxAMpWFQDJqHMAe+JgAGuMwAAAAABA+yH5PwAAAAAtRHQ+AAAAgJhG+DwAAABgUcx4OwAAAICDG/A5AAAAQCAlejgAAACAIoLjNgAAAAAd82k1AHsJcHJvZHVjZXJzAghsYW5ndWFnZQEEUnVzdAAMcHJvY2Vzc2VkLWJ5AwVydXN0Yx0xLjQ5LjAgKGUxODg0YThlMyAyMDIwLTEyLTI5KQZ3YWxydXMGMC4xOC4wDHdhc20tYmluZGdlbhIwLjIuNzMgKDNjZWZlMmM4Mik=";let XA,On=!1;const Gl=fetch(Ml).then(n=>n.arrayBuffer()).then(n=>WebAssembly.instantiate(n,{"./mikktspace_module_bg.js":{__wbindgen_string_new:Hn,__wbindgen_rethrow:qn}})).then(n=>{XA=n.instance.exports,On=!0}),Tl=Object.freeze(Object.defineProperty({__proto__:null,__wbindgen_rethrow:qn,__wbindgen_string_new:Hn,generateTangents:kl,get isReady(){return On},ready:Gl,get wasm(){return XA}},Symbol.toStringTag,{value:"Module"}));export{Wa as BufferGeometryUtils,Mr as DRACOLoader,vg as EXRLoader,tl as FBXLoader,Lo as Font,ag as FontLoader,ds as GLTFExporter,_i as GLTFLoader,Ha as GroundedSkybox,Oc as HTMLMesh,Ac as HorizontalBlurShader,Jc as InteractiveGroup,he as KTX2Loader,qc as Line2,wn as LineGeometry,Qs as LineMaterial,kr as MeshoptDecoder,fl as OBJLoader,Pg as OrbitControls,ml as Pass,$g as PositionalAudioHelper,xg as RGBELoader,bt as Stats,ng as TextGeometry,Rg as TransformControls,on as TransformControlsGizmo,jc as VertexNormalsHelper,ec as VerticalBlurShader,Nc as XRControllerModelFactory,Uc as XRHandMeshModel,oo as mergeVertices,Tl as mikktspace_module,No as nodeFrame,cs as strToU8,Sg as zipSync};
464
+ `);let s=[];for(let o=0,a=t.length;o<a;o++){const r=t[o].trimStart();if(r.length===0)continue;const l=r.charAt(0);if(l!=="#")if(l==="v"){const g=r.split(Gn);switch(g[0]){case"v":i.vertices.push(parseFloat(g[1]),parseFloat(g[2]),parseFloat(g[3])),g.length>=7?(gi.setRGB(parseFloat(g[4]),parseFloat(g[5]),parseFloat(g[6]),lA),i.colors.push(gi.r,gi.g,gi.b)):i.colors.push(void 0,void 0,void 0);break;case"vn":i.normals.push(parseFloat(g[1]),parseFloat(g[2]),parseFloat(g[3]));break;case"vt":i.uvs.push(parseFloat(g[1]),parseFloat(g[2]));break}}else if(l==="f"){const g=r.slice(1).trim().split(Gn),c=[];for(let B=0,E=g.length;B<E;B++){const u=g[B];if(u.length>0){const C=u.split("/");c.push(C)}}const I=c[0];for(let B=1,E=c.length-1;B<E;B++){const u=c[B],C=c[B+1];i.addFace(I[0],u[0],C[0],I[1],u[1],C[1],I[2],u[2],C[2])}}else if(l==="l"){const g=r.substring(1).trim().split(" ");let c=[];const I=[];if(r.indexOf("/")===-1)c=g;else for(let B=0,E=g.length;B<E;B++){const u=g[B].split("/");u[0]!==""&&c.push(u[0]),u[1]!==""&&I.push(u[1])}i.addLineGeometry(c,I)}else if(l==="p"){const g=r.slice(1).trim().split(" ");i.addPointGeometry(g)}else if((s=Bl.exec(r))!==null){const g=(" "+s[0].slice(1).trim()).slice(1);i.startObject(g)}else if(Cl.test(r))i.object.startMaterial(r.substring(7).trim(),i.materialLibraries);else if(El.test(r))i.materialLibraries.push(r.substring(7).trim());else if(ul.test(r))console.warn('THREE.OBJLoader: Rendering identifier "usemap" not supported. Textures must be defined in MTL files.');else if(l==="s"){if(s=r.split(" "),s.length>1){const c=s[1].trim().toLowerCase();i.object.smooth=c!=="0"&&c!=="off"}else i.object.smooth=!0;const g=i.object.currentMaterial();g&&(g.smooth=i.object.smooth)}else{if(r==="\0")continue;console.warn('THREE.OBJLoader: Unexpected line: "'+r+'"')}}return i.finalize(),e?i:this.createObjects(i)}createObjects(A){const e=new Xe;if(e.materialLibraries=[].concat(A.materialLibraries),!(A.objects.length===1&&A.objects[0].geometry.vertices.length===0))for(let i=0,t=A.objects.length;i<t;i++){const s=A.objects[i],o=s.geometry,a=s.materials,r=o.type==="Line",l=o.type==="Points";let g=!1;if(o.vertices.length===0)continue;const c=new oe;c.setAttribute("position",new FA(o.vertices,3)),o.normals.length>0&&c.setAttribute("normal",new FA(o.normals,3)),o.colors.length>0&&(g=!0,c.setAttribute("color",new FA(o.colors,3))),o.hasUVIndices===!0&&c.setAttribute("uv",new FA(o.uvs,2));const I=[];for(let E=0,u=a.length;E<u;E++){const C=a[E],p=C.name+"_"+C.smooth+"_"+g;let f=A.materials[p];if(this.materials!==null){if(f=this.materials.create(C.name),r&&f&&!(f instanceof Fe)){const Q=new Fe;Et.prototype.copy.call(Q,f),Q.color.copy(f.color),f=Q}else if(l&&f&&!(f instanceof Bt)){const Q=new Bt({size:10,sizeAttenuation:!1});Et.prototype.copy.call(Q,f),Q.color.copy(f.color),Q.map=f.map,f=Q}}f===void 0&&(r?f=new Fe:l?f=new Bt({size:1,sizeAttenuation:!1}):f=new pt,f.name=C.name,f.flatShading=!C.smooth,f.vertexColors=g,A.materials[p]=f),I.push(f)}let B;if(I.length>1){for(let E=0,u=a.length;E<u;E++){const C=a[E];c.addGroup(C.groupStart,C.groupCount,E)}r?B=new Ht(c,I):l?B=new qt(c,I):B=new K(c,I)}else r?B=new Ht(c,I[0]):l?B=new qt(c,I[0]):B=new K(c,I[0]);B.name=s.name,e.add(B)}else if(A.vertices.length>0){const i=new Bt({size:1,sizeAttenuation:!1}),t=new oe;t.setAttribute("position",new FA(A.vertices,3)),A.colors.length>0&&A.colors[0]!==void 0&&(t.setAttribute("color",new FA(A.colors,3)),i.vertexColors=!0);const s=new qt(t,i);e.add(s)}return e}}class Ql{constructor(){this.isPass=!0,this.enabled=!0,this.needsSwap=!0,this.clear=!1,this.renderToScreen=!1}setSize(){}render(){console.error("THREE.Pass: .render() must be implemented in derived pass.")}dispose(){}}new _s(-1,1,1,-1,0,1);class fl extends oe{constructor(){super(),this.setAttribute("position",new FA([-1,3,0,-1,-1,0,3,-1,0],3)),this.setAttribute("uv",new FA([0,2,0,0,2,0],2))}}new fl;const ml=typeof TextDecoder>"u"?(0,module.require)("util").TextDecoder:TextDecoder;let Un=new ml("utf-8",{ignoreBOM:!0,fatal:!0});Un.decode();let ci=null;function bl(){return(ci===null||ci.buffer!==XA.memory.buffer)&&(ci=new Uint8Array(XA.memory.buffer)),ci}function wl(n,A){return Un.decode(bl().subarray(n,n+A))}const Le=new Array(32).fill(void 0);Le.push(void 0,null,!0,!1);let Lt=Le.length;function yl(n){Lt===Le.length&&Le.push(Le.length+1);const A=Lt;return Lt=Le[A],Le[A]=n,A}function Dl(n){return Le[n]}function Sl(n){n<36||(Le[n]=Lt,Lt=n)}function vl(n){const A=Dl(n);return Sl(n),A}let li=null;function _n(){return(li===null||li.buffer!==XA.memory.buffer)&&(li=new Float32Array(XA.memory.buffer)),li}let hi=0;function Ss(n,A){const e=A(n.length*4);return _n().set(n,e/4),hi=n.length,e}let Ii=null;function Pn(){return(Ii===null||Ii.buffer!==XA.memory.buffer)&&(Ii=new Int32Array(XA.memory.buffer)),Ii}function xl(n,A){return _n().subarray(n/4,n/4+A)}function Rl(n,A,e){try{const I=XA.__wbindgen_add_to_stack_pointer(-16);var i=Ss(n,XA.__wbindgen_malloc),t=hi,s=Ss(A,XA.__wbindgen_malloc),o=hi,a=Ss(e,XA.__wbindgen_malloc),r=hi;XA.generateTangents(I,i,t,s,o,a,r);var l=Pn()[I/4+0],g=Pn()[I/4+1],c=xl(l,g).slice();return XA.__wbindgen_free(l,g*4),c}finally{XA.__wbindgen_add_to_stack_pointer(16)}}const Hn=function(n,A){var e=wl(n,A);return yl(e)},qn=function(n){throw vl(n)},Fl="data:application/octet-stream;base64,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TQ0WIARBAnRqIgQgBCgCAEEBajYCACACQQRqIQIgA0F/aiIDDQALCyABQdgFaigCACABKALgBUUNFUEAIQJBADYCAEEBIQQDQCABQfgCaiABQdgFahBjIAEoAvwCIgMgBEF/aiIHTQ0UIAEoAvgCIAJqKAIAIQMgAUHwAmogAUHoBWoQYyABKAL0AiINIAdNDRMgASgC8AIgAmooAgAhByABQdgFaigCACENIAEoAuAFIhEgBE0NEiACIA1qQQRqIAMgB2o2AgAgAkEEaiECIARBAWoiBEGAEEcNAAsgCEEJTwRAQQAhBCABQZgGakEAQQRBCCAGGyALG2ohCCAFIQMDQCABQegCaiADKAIAEGEgAUGYBmogACABKALoAiABKALsAhAxIDAgLiAIKgIAEDwhAiABQeACaiABQdgFahBjIAEoAuQCIgYgAk0NEiABQcgFaigCACABKALQBSINIAJBAnQiBiABKALgAmooAgAiC00NESABQdgCaiABQfgFahBjIAEoAtwCIg0gAk0NECALQQJ0aiABKALYAiAGaigCAEECdGogBDYCACABQfgFaigCACELIAEoAoAGIgcgAk0NDyAGIAtqIgIgAigCAEEBajYCACADQQRqIQMgCiAEQQFqIgRHDQALCyABQdACaiABQegFahBjIAEoAtQCRQ0MIAEoAtACKAIAIQNBBCECQQEhBANAIAFByAJqIAFB6AVqEGMgASgCzAIiCiAETQ0MIAMgASgCyAIgAmooAgBJBEAgAUHAAmogAUHoBWoQYyABKALEAiIDIARNDQwgASgCwAIgAmooAgAhAwsgAkEEaiECIARBAWoiBEGAEEcNAAsgAUHgA2oiAkIANwIAIAJBCGpCADcCACABQaAGaiABQegDaikDADcDACABIAEpA+ADNwOYBiABQYgGaiABQZgGaiADEEEgASgCiAYhCiABKAKQBiELQQAhBgNAIAFBuAJqIAFB2AVqEGMgASgCvAIiAyAGTQ0KIAFByAVqKAIAIQIgASgC0AUiBCAGQQJ0IgggASgCuAJqKAIAIgNNDQkgAUGwAmogAUHoBWoQYyABKAK0AiIEIAZNDQggASgCsAIgCGooAgAiCEECTwRAIAIgA0ECdGohBEEAIQMgCiECA0AgAUGoAmogBSAEKAIAIgdBAnRqKAIAEGEgAUGYBmogACABKAKoAiABKAKsAhAxIAMgC0YNCSACIAEoApgGNgIAIAJBBGogASgCnAY2AgAgASgCoAYhDSACQQxqIAc2AgAgAkEIaiANNgIAIARBBGohBCACQRBqIQIgCCADQQFqIgNHDQALIAUgCiAAQQAgCEF/ahAECyAGQQFqIgZBgBBHDQALIBNBASATQQFLGyEFIA5BPGohAyABQYgGahBSIAFB+AVqKAIAGiABQfgFahBWIAFB6AVqKAIAGiABQegFahBWIAFB2AVqKAIAGiABQdgFahBWIAFByAVqKAIAGiABQcgFahBWQQAhAkEAIQRBACEGQQAhBwNAIAFBoAJqIAFBwANqEGMgASgCpAIiCiAETQ0GIAEoAqACIAJqKAIAIQogAUGYAmogAUHAA2oQYyABKAKcAiILIARBAWpNDQUgASgCmAIgAmpBBGooAgAhCyABQZACaiABQcADahBjIAEoApQCIgggBEECak0NBCABKAKQAiACakEIaigCACEIIAFBiAJqIAoQYSABQYgGaiAAIAEoAogCIAEoAowCEDEgAUGAAmogCxBhIAFB4ANqIAAgASgCgAIgASgChAIQMSABQfgBaiAIEGEgAUGYBmogACABKAL4ASABKAL8ARAxAkACQCABQYgGaiABQeADahALDQAgAUGIBmogAUGYBmoQCw0AIAFB4ANqIAFBmAZqEAtFDQELIAwgBk0NBCADIAMoAgBBAXI2AgAgB0EBaiEHCyACQQxqIQIgBEEDaiEEIANByABqIQMgBSAGQQFqIgZHDQALIA4gAUHAA2ooAgAgEyAHayIKIBMQECABQcADaigCACELAkACQCAKRQRAQX8hBgwBC0EAIQYDQCAOIAZByABsaiIDQn83AgAgA0EIakF/NgIAIANBDGpCADcCACADQRRqQQA2AgAgA0E8aiADQRhqIQIgAygCPCEEQQMhAwNAIAJCADcCACACQRhqQgA3AgAgAkEQakIANwIAIAJBCGpCADcCACAEQQRyIQQgA0F/aiIDDQALIAQ2AgAgBkEBaiIGIApHDQALIAFBpAZqIQYgAUHsA2ohDEEAIQUDQCABQfABaiALIAVBDGxqIgMoAgAQYSABQagFaiAAIAEoAvABIAEoAvQBEDEgAUHoAWogA0EEaiICKAIAEGEgAUG4BWogACABKALoASABKALsARAxIAFB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AkAgASgCRBAxIAEpA4gGISsgASgCkAYhFyABQThqIAIQYSABQYgGaiAAIAEoAjggASgCPBAxIAEoAogGIQIgASgCjAYhECABKAKQBiESIAFBMGogHRBhIAFBiAZqIAAgASgCMCABKAI0EDEgASkDiAYhLCABKAKQBiEdIAEgFzYCgAYgASArNwP4BSABIBI2ApAGIAEgEDYCjAYgASACNgKIBiABQcgFaiABQfgFaiABQYgGahAVIAEgHTYCgAYgASAsNwP4BSABIBI2ApAGIAEgEDYCjAYgASACNgKIBiABQdgFaiABQfgFaiABQYgGahAVIBYgAUHQBWoiECgCADYCACABIAEpA8gFNwP4BSABQbgFaiABQcgFahARITUgBCAYKAIANgIAIAEgASkDuAU3A4gGIAFBKGogAUGIBmogGRBoIAEoAigiAiABKAIsIhJHBEADQCACIDUgAioCAJQ4AgAgEiACQQRqIgJHDQALCyABQcgFaiABQfgFaiABQYgGahAVIAQgECgCADYCACABIAEpA8gFNwOIBiABQYgGahBRBEAgBCAQKAIANgIAIAEgASkDyAU3A4gGIAFByAVqIAFBiAZqECMLIBYgAUHgBWoiECgCADYCACABIAEpA9gFNwP4BSABQbgFaiABQdgFahARITUgBCAYKAIANgIAIAEgASkDuAU3A4gGIAFBIGogAUGIBmogGRBoIAEoAiAiAiABKAIkIhJHBEADQCACIDUgAioCAJQ4AgAgEiACQQRqIgJHDQALCyABQdgFaiABQfgFaiABQYgGahAVIAQgECgCADYCACABIAEpA9gFNwOIBiABQYgGahBRBEAgBCAQKAIANgIAIAEgASkD2AU3A4gGIAFB2AVqIAFBiAZqECMLQwAAgD8gAUHIBWogAUHYBWoQESI1QwAAgL+XIDVDAACAP14buxAOIA8qAjQhNSAPKgIwITcgFiADKAIANgIAIAEgASkDmAY3A/gFIAEgMjgCkAYgASAvOAKMBiABIDM4AogGIAFBGGogAUGIBmogGRBotiEvIAEoAhgiAiABKAIcIg9HBEADQCACIAIqAgAgL5Q4AgAgDyACQQRqIgJHDQALCyABQZgGaiABQfgFaiABQYgGahAWIBYgFUEIaiIPKAIANgIAIAEgFSkCADcD+AUgASAxOAKQBiABIDA4AowGIAEgNDgCiAYgAUEQaiABQYgGaiAZEGggASgCECICIAEoAhQiEEcEQANAIAIgAioCACAvlDgCACAQIAJBBGoiAkcNAAsLIAFB6AVqIAFB+AVqIAFBiAZqEBYgDyABQfAFaigCADYCACAVIAEpA+gFNwIAIAEgNyAvlCABKgKkBpI4AqQGIAEgNSAvlCABKgK0BpI4ArQGIC4gL5IhLgsgCSAHQQFqIgdHDQALDAQLIAkgD0HcgsAAED8ACyAFIAJB7ILAABA/AAsgDCACQfyCwAAQPwALIAwgB0GMg8AAED8ACyAEIAMoAgA2AgAgASABKQOYBjcDiAYgAUGIBmoQUQRAIAQgAygCADYCACABIAEpA5gGNwOIBiABQZgGaiABQYgGahAjCyAEIBVBCGoiAigCADYCACABIBUpAgA3A4gGIAFBiAZqEFEEQCAEIAIoAgA2AgAgASAVKQIANwOIBiABQfgFaiABQYgGahAjIAIgAUGABmooAgA2AgAgFSABKQP4BTcCAAsgLkMAAAAAXkEBc0UEQCABIAEqAqQGIC6VOAKkBiABIAEqArQGIC6VOAK0BgsgASgC4AQiAiAMTQ0DIAEoAtgEIAxBKGxqIAFBmAZqQSgQTiAMQQFqIQwLICAEQCAIKAJAIAggKGpBxABqLQAAaiICICJPDQICfyAUIAJBKGxqIgIoAiBBAUcEQCABKALgBCIEIAVNDQYgAiABKALYBCAFQShsakEoEDsaQQEMAQsgASgC4AQiBCAFTQ0GIAFBmAZqIAIgASgC2AQgBUEobGoQBSACIAFBmAZqQSgQTkECCyEFIAJBIGogBTYCACACICYtAAA6ACQgESgCABogERBWIB9BAWoiHyANKAIASA0BDAYLC0F/QQRBrIPAABA/AAsgAiAiQbyDwAAQPwALIAwgAkGcg8AAED8ACyAFIARBzIPAABA/AAsgBSAEQdyDwAAQPwALICNBAWoiIyAGRw0ACyABQfgEaigCABogAUH4BGoQViABQegEahBJIAFB6ARqEFIgAUHYBGoQVCABKALIBCEUIAEoAtADIQsLIAFBwANqKAIAIQUgCiATSARAIBtBAUghCSAKIQMDQCALIANByABsaiIELQA8QQJxRQRAIANBA2whDCAEQUBrIQhBACEGA0ACQCAJDQAgBSAGIAxqQQJ0aigCACEOQQAhAgNAAkAgAiAOIAUgAkECdGooAgAiB0ciDWohAiAHIA5GDQAgAiAbSA0BCwsgDQ0AIBQgCCgCACAEIAZqQcQAai0AAGpBKGxqIBQgCyACQQNuIg5ByABsaiIHKAJAIAcgAiAOQQNsa2pBxABqLQAAakEobGpBKBA7GgsgBkEBaiIGQQNHDQALCyADICVGIANBAWohA0UNAAsLIApBAU4EQCALQcQAaiEEQQAhBQNAAkAgCyAFQcgAbGoiAy0APEECcUUNACABQQA2AugDIAFCADcD4AMgAUEIaiADKAI4IgYCf0EBQQEgA0HFAGotAABBH3F0QQEgAy0AREEfcXRyQQEgA0HGAGotAABBH3F0ciICQQJxRQ0AGkECIAJBBHFFDQAaQQBBAyACQQhxGwsiDhBmEGEgAUGYBmogACABKAIIIAEoAgwQMSABQegDaiABQaAGaigCADYCACABIAEpA5gGNwPgAyADQUBrIQNBACECA0AgASAGIAIgBGotAAAiCRBmEGEgAUGYBmogACABKAIAIAEoAgQQMSABQZgGaiABQeADahALBEAgFCADKAIAIgMgDmpBKGxqIBQgAyAJakEobGpBKBA7GgwCCyACQQFqIgJBA0cNAAsLIARByABqIQQgBUEBaiIFIApHDQALCyABKALQBCEFQQAhBkEAIQkDQEEAIAUgCWsiAyADIAVLGyEKIBQgCUEobGohDkEAIQNBACEEA0AgBCAKRg0DIAMgDmoiAikCACErIAEgAkEIaigCADYC6AMgASArNwLgAyAAIAFB4ANqIAJBDGoqAgAgAkEcaioCACACQSRqLQAAEB8gBEEBaiEEIANBKGoiA0H4AEcNAAsgBCAJaiEJIAZBAWoiBiATRw0ACyABQcgEahBUIAFBuARqKAIAGiABQbgEahBWIAFBqARqEFIgAUHQA2oQUyABQcADaigCABogAUHAA2oQVkEBIQILIAFB4AZqJAAgAg8LIAQgCWogBUHMgsAAED8ACyAGIAxBvILAABA/AAsgBEECaiAIQayCwAAQPwALIARBAWogC0GcgsAAED8ACyAEIApBjILAABA/AAsgCyALQdyFwAAQPwALIAYgBEHMhcAAED8ACyADIARBvIXAABA/AAsgBiADQayFwAAQPwALIAQgA0GchcAAED8ACyAEIApBjIXAABA/AAtBAEEA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AiALIANBEGogAiABIANBIGoQLSADQRhqKAIAIQEgAygCFCECIAMoAhBBAUYNASAAIAI2AgAgACABQShuNgIECyADQTBqJAAPCyADQQhqIAIgARBoIAMoAgghASADKAIMDAELIAMgAkEAEGggAygCACEBIAMoAgQLIgAEQCABIAAQcAALEGsAC6cCAgN/AX4jAEEwayIDJAACfwJAAkAgACgCBCIEIAFrIAJJBEAgASACaiICIAFJDQJBBCEBAkAgBEEBdCIFIAIgBSACSxsiAkEEIAJBBEsbrUIMfiIGQiCIp0UEQCAGpyECDAELIAAoAgQhBEEAIQELAkAgBARAIAAoAgAhBSADQShqQQQ2AgAgAyAEQQxsNgIkIAMgBTYCIAwBCyADQQA2AiALIANBEGogAiABIANBIGoQLSADQRhqKAIAIQEgAygCFCECIAMoAhBBAUYNASAAIAI2AgAgACABQQxuNgIECyADQTBqJAAPCyADQQhqIAIgARBoIAMoAgghASADKAIMDAELIAMgAkEAEGggAygCACEBIAMoAgQLIgAEQCABIAAQcAALEGsAC6gCAQN/IwBBMGsiAyQAAn8CQAJAIAAoAgQiBCABayACSQRAIAEgAmoiAiABSQ0CQQQhAQJAIARBAXQiBSACIAUgAksbIgJBBCACQQRLGyICQf////8DcSACRgRAIAJBAnQhAgwBCyAAKAIEIQRBACEBCwJAIAQEQCAAKAIAIQUgA0EoakEENgIAIAMgBEECdDYCJCADIAU2AiAMAQsgA0EANgIgCyADQRBqIAIgASADQSBqEC0gA0EYaigCACEBIAMoAhQhAiADKAIQQQFGDQEgACACNgIAIAAgAUECdjYCBAsgA0EwaiQADwsgA0EIaiACIAEQaCADKAIIIQEgAygCDAwBCyADIAJBABBoIAMoAgAhASADKAIECyIABEAgASAAEHAACxBrAAuoAgEDfyMAQTBrIgMkAAJ/AkACQCAAKAIEIgQgAWsgAkkEQCABIAJqIgIgAUkNAkEEIQECQCAEQQF0IgUgAiAFIAJLGyICQQQgAkEESxsiAkH/////AHEgAkYEQCACQQR0IQIMAQsgACgCBCEEQQAhAQsCQCAEBEAgACgCACEFIANBKGpBBDYCACADIARBBHQ2AiQgAyAFNgIgDAELIANBADYCIAsgA0EQ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aiEDIAUoAggiBiAFKAIMIgdJBEAgByAGayEIA0AgAikCACEJIANBCGogAkEIaikCADcCACADIAk3AgAgA0EQaiEDIAhBf2oiCA0ACyAEIAdqIAZrIQQLIAAgAQR/IAIpAgAhCSADQQhqIAJBCGopAgA3AgAgAyAJNwIAIARBAWoFIAQLNgIIIAVBEGokAAuqAQMBfwN+An0jAEEgayICJAAgAkEYaiABKAIAEGEgACACKAIYIAIoAhwQPSEDIAJBEGogASgCBBBhIAAgAigCECACKAIUED0hBCACQQhqIAEoAggQYSAAIAIoAgggAigCDBA9IQUgAkEgaiQAIASnviADp74iBpMgBUIgiKe+IANCIIinviIHk5QgBEIgiKe+IAeTIAWnviAGk5STIgaMIAYgBkMAAAAAXRsLsQEBBX8jAEEQayIDJAACQCAAKAIEIgIgAU8EQAJAIAIEQCACQQJ0IQIgACgCACEEAkAgAUECdCIFRQRAQQQhBiACRQ0BIAQgAkEEEGoMAQsgBCACQQQgBRBiIgZFDQILIAAgBjYCACAAIAFB/////wNxNgIECyADQRBqJAAPCyADQQhqIAVBBBBoIAMoAgwiAEUNASADKAIIIAAQcAALQcWIwABBJEHsiMAAEEgACxBrAAu2AQEBfyMAQRBrIgMkAAJAIABFDQAgAyAANgIEIAFFDQACQCACQQRLDQAgAUEDakECdkF/aiIAQf8BSw0AIANBoJXAADYCCCADIABBAnRBpJXAAGoiACgCADYCDCADQQRqIANBDGogA0EIakGUicAAEBMgACADKAIMNgIADAELIANBoJXAACgCADYCDCADQQRqIANBDGpB/IjAAEH8iMAAEBNBoJXAACADKAIMNgIACyADQRBqJAALmQEBBn8jAEEQayIFJAAgACAAKAIIIAEQGCAAKAIAIAAoAgghAyAFQQhqQQEgARBoIANByABsaiEEIAUoAggiBiAFKAIMIgdJBEAgByAGayEIA0AgBCACQcgAEDtByABqIQQgCEF/aiIIDQALIAMgB2ogBmshAwsgACABBH8gBCACQcgAEDsaIANBAWoFIAMLNgIIIAVBEGokAAuVAQEGfyMAQRBrIgUkACAAIAAoAgggARAZIAAoAgAgACgCCCEDIAVBCGpBASABEGggA0EobGohBCAFKAIIIgYgBSgC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AWoiAiABIAJLG0GHgARqIgFBEHZAACICQX9GBEBBACEDQQEMAQsgAkEQdCIDQgA3AwAgA0EANgIIIAMgAyABQYCAfHFqQQJyNgIAQQALIQIgACADNgIEIAAgAjYCAAtvAQF/AkAgASAATwRAIAJFDQEgACEDA0AgAyABLQAAOgAAIAFBAWohASADQQFqIQMgAkF/aiICDQALDAELIAJFDQAgAUF/aiEBIABBf2ohAwNAIAIgA2ogASACai0AADoAACACQX9qIgINAAsLIAALbwECfwJ/IAIgAJMgASAAk5VDAAAARZQiAEMAAADPYCIDQQFzIABD////Tl9FckUEQCAAqAwBC0H/////B0GAgICAeCADGyIEIARBACAAQ////05fGyADGwsiA0EAIANBAEobIgNB/w8gA0H/D0gbC2YBAX8CQCAAQSBqKAIAIgMgAUEGbCACQQF0aiIBSwRAIAMgAUEBciICTQ0BIAAoAhgiACACQQJ0ajUCAEIghiAAIAFBAnRqNQIAhA8LIAEgA0HsgMAAED8ACyACIANB/IDAABA/AAtrAQJ/IwBBEGsiBiQAAkAgACABIAIgAyAEEAoiBQ0AIAZBCGogAyAAIAEgBCgCDBEFAEEAIQUgBigCCA0AIAYoAgwiBSACKAIANgIIIAIgBTYCACAAIAEgAiADIAQQCiEFCyAGQRBqJAAgBQtsAQF/IwBBMGsiAyQAIAMgATYCBCADIAA2AgAgA0EcakECNgIAIANBLGpBHTYCACADQgI3AgwgA0G0kMAANgIIIANBHTYCJCADIANBIGo2AhggAyADNgIoIAMgA0EEajYCICADQQhqIAIQWQALVAEBfyMAQSBrIgIkACACIAAoAgA2AgQgAkEYaiABQRBqKQIANwMAIAJBEGogAUEIaikCADcDACACIAEpAgA3AwggAkEEaiACQQhqEAggAkEgaiQAC1kCAX8BfiMAQSBrIgMkACADQQhqIAIQNyADKQMIIQQgAEEANgIIIAAgBDcCACADQRhqIAFBCGopAgA3AwAgAyABKQIANwMQIAAgAiADQRBqECcgA0EgaiQAC1kCAX8BfiMAQSBrIgMkACADQQhqIAIQNCADKQMIIQQgAEEANgIIIAAgBDcCACADQRhqIAFBCGooAgA2AgAgAyABKQIANwMQIAAgAiADQRBqECYgA0EgaiQAC1kCAX8BfiMAQSBrIgMkACADQQhqIAIQNyADKQMIIQQgAEEANgIIIAAgBDcCACADQRhqIAFBCGopAgA3AwAgAyABKQIANwMQIAAgAiADQRBqECAgA0EgaiQAC1QBAn8gASgCACECIAFBADYCAAJAIAIEQCABKAIEIQNBCEEEEGciAUUNASABIAM2AgQgASACNgIAIABByI3AADYCBCAAIAE2AgAPCwALQQhBBBBwAAtKAgF/AX4jAEHQAGsiAyQAIAMgAhA2IAMpAwAhBCAAQQA2AgggACAENwIAIANBCGogAUHIABBOIAAgAiADQQhqECsgA0HQAGokAAtHAgF/AX4jAEEwayIDJAAgAyACEDUgAykDACEEIABBADYCCCAAIAQ3AgAgA0EIaiABQSgQTiAAIAIgA0EIahAsIANBMGokAAtKAAJ/IAFBgIDEAEcEQEEBIAAoAhggASAAQRxqKAIAKAIQEQIADQEaCyACRQRAQQAPCyAAKAIYIAJBACAAQRxqKAIAKAIMEQQACwtHAQF/IwBBIGsiAyQAIANBFGpBADYCACADQfCPwAA2AhAgA0IBNwIEIAMgATYCHCADIAA2AhggAyADQRhqNgIAIAMgAhBZAAs8AQF/IAAoAggiAQRAIAFBBHQhASAAKAIAQQRqIQADQCAAKAIAGiAAEFYgAEEQaiEAIAFBcGoiAQ0ACwsLOAAgAEIANwIAIABBCGpBADYCACAAQSRqQQA6AAAgAEEcakIANwIAIABBFGpCADcCACAAQgA3AgwLRAECfyABKAIEIQIgASgCACEDQQhBBBBnIgFFBEBBCEEEEHAACyABIAI2AgQgASADNgIAIABBoI/AADYCBCAAIAE2AgALPQAgAEIANwIgIAAgASkCADcCACAAIAIpAgA3AhAgAEEIaiABQQhqKQIANwIAIABBGGogAkEIaikCADcCAAtbAQN/IwBBEGsiASQAIAAoAgwiAkUEQEGAjsAAQStByI7AABBIAAsgACgCCCIDRQRAQYCOwABBK0HYjsAAEEgACyABIAI2AgggASAANgIEIAEgAzYCACABEFgACysAIAIEQANAIAAgAS0AADoAACABQQFqIQEgAEEBaiEAIAJBf2oiAg0ACwsLKQEBfyADIAIQLiIEBEAgBCAAIAMgASABIANLGxBOIAAgASACECoLIAQLLAACQCAAQXxNBEAgAEUEQEEEIQAMAgsgACAAQX1JQQJ0EGciAA0BCwALIAALNwEBf0EBIQECQCAAKgIAi0MAAIAAXg0AIAAqAgSLQwAAgABeDQAgACoCCItDAACAAF4hAQsgAQsmAQF/AkAgACgCBCIBRQ0AIAAoAgAgAUEEdCIBRQ0AIAFBBBBqCwsnAQF/AkAgACgCBCIBRQ0AIAAoAgAgAUHIAGwiAUUNACABQQQQagsLJgEBfwJAIAAoAgQiAUUNACAAKAIAIAFBKGwiAUUNACABQQQQagsLJgEBfwJAIAAoAgQiAUUNACAAKAIAIAFBDGwiAUUNACABQQQQagsLJgEBfwJAIAAoAgQiAUUNACAAKAIAIAFBAnQiAUUNACABQQQQagsLLAEBfyMAQRBrIgEkACABQQhqIABBCGooAgA2AgAgASAAKQIANwMAIAEQWwALLAEBfyMAQRBrIgEkACABQQhqIABBCGooAgA2AgAgASAAKQIANwMAIAEQMwALNAEBfyMAQRBrIgIkACACIAE2AgwgAiAANgIIIAJB8I/AADYCBCACQfCPwAA2AgAgAhBNAAspAQF/IAEEQCAAIQIDQCACQQA6AAAgAkEBaiECIAFBf2oiAQ0ACwsgAAsrAQF/IwBBEGsiASQAIAEgACkCADcDCCABQQhqQbSNwABBACAAKAIIECUACycBAX8jAEEQayICJAAgAiABNgIIIAJBHTYCBCACIAA2AgAgAhBXAAsmAQF/AkAgACgCACIBRQ0AIABBBGooAgAiAEUNACABIABBARBqCwsmAQF/AkAgACgCBCIBRQ0AIABBCGooAgAiAEUNACABIABBARBqCwshACAAQQM2AgwgACABNgIEIAAgATYCACAAIAFBDGo2AggLHQAgASgCAEUEQAALIABByI3AADYCBCAAIAE2AgALFgAgACABQQNxNgIEIAAgAUECdjYCAAsMACAAIAEgAiADEE8LFgAgACABKAIINgIEIAAgASgCADYCAAsPACABBEAgACABQQQQagsLEgAgACgCACABIAEgAmoQIkEACw0AIAFBA3EgAEECdHILCAAgACABEC4LEAAgACACNgIEIAAgATYCAAsTACAAQaCPwAA2AgQgACABNgIACwoAIAAgASACECoLEQBBzI/AAEERQeCPwAAQSAALDgAgACgCABoDQAwACwALCwAgADUCACABEBQLCwAgACMAaiQAIwALCwAgAItDAACAAF4LGQAgACABQcSdwAAoAgAiAEEPIAAbEQEAAAsFAEGABAsEAEEBCwQAIAELBABBAAsNAEL0+Z7m7qOq+f4ACw0AQve47vqqzNXu5QALDABC6dCi28yi6rtGCwMAAQsDAAELC6QVAgBBgIDAAAvBCnNyYy9saWIucnMAAAAAEAAKAAAANgAAAA0AAAAAABAACgAAADcAAAANAAAAAAAQAAoAAAA4AAAADQAAAAAAEAAKAAAAPgAAAA0AAAAAABAACgAAAD8AAAANAAAAAAAQAAoAAABAAAAADQAAAAAAEAAKAAAARgAAAA0AAAAAABAACgAAAEcAAAANAAAARmFpbGVkIHRvIGdlbmVyYXRlIHRhbmdlbnRzLi9Vc2Vycy9kb25tY2N1cmR5Ly5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL21pa2t0c3BhY2UtMC4yLjAvc3JjL2dlbmVyYXRlZC5ycwCoABAAYwAAANcAAAASAAAAqAAQAGMAAADYAAAAEgAAAKgAEABjAAAA2QAAABIAAACoABAAYwAAAN4AAAANAAAAqAAQAGMAAAAjAQAAOAAAAKgAEABjAAAA/QEAABUAAACoABAAYwAAAA8CAABAAAAAqAAQAGMAAAAVAgAAEQAAAKgAEABjAAAAFgIAABEAAACoABAAYwAAABgCAAARAAAAqAAQAGMAAAAjAgAAGQAAAKgAEABjAAAAJAIAADIAAACoABAAYwAAACoCAAAcAAAAqAAQAGMAAAAmAgAANAAAAKgAEABjAAAAvQUAAAkAAACoABAAYwAAAMAFAAAFAAAAqAAQAGMAAADDBQAAHAAAAKgAEABjAAAAwwUAADMAAACoABAAYwAAAMMFAAAJAAAAqAAQAGMAAADTBQAAIwAAAKgAEABjAAAA0wUAABcAAACoABAAYwAAANQFAAAYAAAAqAAQAGMAAADVBQAACQAAAKgAEABjAAAA3AUAABEAAACoABAAYwAAAN8FAAAYAAAAqAAQAGMAAADgBQAAGQAAAKgAEABjAAAA6AUAAC0AAACoABAAYwAAAOgFAAAhAAAAqAAQAGMAAADpBQAAGAAAAKgAEABjAAAA8gUAABEAAACoABAAYwAAAKcGAAANAAAAqAAQAGMAAACuBgAAEQAAAKgAEABjAAAArwYAABEAAACoABAAYwAAALAGAAARAAAAqAAQAGMAAAD9BgAACQAAAE1hdHJpeCBzbGljaW5nIG91dCBvZiBib3VuZHMuL1VzZXJzL2Rvbm1jY3VyZHkvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvbmFsZ2VicmEtMC4xOS4wL3NyYy9iYXNlL21hdHJpeF9zbGljZS5ycwBZAxAAagAAAOMAAAAJAAAAL1VzZXJzL2Rvbm1jY3VyZHkvLnJ1c3R1cC90b29sY2hhaW5zL3N0YWJsZS14ODZfNjQtYXBwbGUtZGFyd2luL2xpYi9ydXN0bGliL3NyYy9ydXN0L2xpYnJhcnkvYWxsb2Mvc3JjL3Jhd192ZWMucnNUcmllZCB0byBzaHJpbmsgdG8gYSBsYXJnZXIgY2FwYWNpdHkAAADUAxAAcQAAAMUBAAAJAAAAAQAAAAAAAAABAAAAAgAAAAMAAAAEAAAABQAAAAQAAAAEAAAABgAAAAcAAAAIAAAACQAAAAAAAAABAAAAAgAAAAMAAAAEAAAAL1VzZXJzL2Rvbm1jY3VyZHkvLnJ1c3R1cC90b29sY2hhaW5zL3N0YWJsZS14ODZfNjQtYXBwbGUtZGFyd2luL2xpYi9ydXN0bGliL3NyYy9ydXN0L2xpYnJhcnkvY29yZS9zcmMvbnVtL21vZC5yc8QEEABwAAAAnQIAAAUAQdCKwAAL0AphdHRlbXB0IHRvIGNhbGN1bGF0ZSB0aGUgcmVtYWluZGVyIHdpdGggYSBkaXZpc29yIG9mIHplcm9NYXRyaXggc2xpY2luZyBvdXQgb2YgYm91bmRzLi9Vc2Vycy9kb25tY2N1cmR5Ly5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL25hbGdlYnJhLTAuMTkuMC9zcmMvYmFzZS9tYXRyaXhfc2xpY2UucnOmBRAAagAAAOMAAAAJAAAAL1VzZXJzL2Rvbm1jY3VyZHkvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvbWlra3RzcGFjZS0wLjIuMC9zcmMvZ2VuZXJhdGVkLnJzACAGEABjAAAA2wIAABkAAAAgBhAAYwAAANsCAAAyAAAAIAYQAGMAAAB+AwAACAAAAAoAAAAIAAAABAAAAAsAAAAMAAAADQAAAAgAAAAEAAAADgAAABAAAAAEAAAABAAAABEAAAASAAAAEwAAABAAAAAAAAAAAQAAABQAAABjYWxsZWQgYE9wdGlvbjo6dW53cmFwKClgIG9uIGEgYE5vbmVgIHZhbHVlbGlicmFyeS9zdGQvc3JjL3Bhbmlja2luZy5ycwArBxAAHAAAAO0BAAAfAAAAKwcQABwAAADuAQAAHgAAABUAAAAQAAAABAAAABYAAAAXAAAAEAAAAAgAAAAEAAAAGAAAABkAAAAaAAAADAAAAAQAAAAbAAAAEAAAAAgAAAAEAAAAHAAAAGxpYnJhcnkvYWxsb2Mvc3JjL3Jhd192ZWMucnNjYXBhY2l0eSBvdmVyZmxvdwAAALAHEAAcAAAAHgIAAAUAAAAfAAAAAAAAAAEAAAAgAAAAaW5kZXggb3V0IG9mIGJvdW5kczogdGhlIGxlbiBpcyAgYnV0IHRoZSBpbmRleCBpcyAAAAAIEAAgAAAAIAgQABIAAAAwMDAxMDIwMzA0MDUwNjA3MDgwOTEwMTExMjEzMTQxNTE2MTcxODE5MjAyMTIyMjMyNDI1MjYyNzI4MjkzMDMxMzIzMzM0MzUzNjM3MzgzOTQwNDE0MjQzNDQ0NTQ2NDc0ODQ5NTA1MTUyNTM1NDU1NTY1NzU4NTk2MDYxNjI2MzY0NjU2NjY3Njg2OTcwNzE3MjczNzQ3NTc2Nzc3ODc5ODA4MTgyODM4NDg1ODY4Nzg4ODk5MDkxOTI5Mzk0OTU5Njk3OTg5OWxpYnJhcnkvY29yZS9zcmMvZm10L21vZC5ycwAMCRAAGwAAAFUEAAARAAAADAkQABsAAABfBAAAJAAAAAMAAAAEAAAABAAAAAYAAACD+aIARE5uAPwpFQDRVycA3TT1AGLbwAA8mZUAQZBDAGNR/gC73qsAt2HFADpuJADSTUIASQbgAAnqLgAcktEA6x3+ACmxHADoPqcA9TWCAES7LgCc6YQAtCZwAEF+XwDWkTkAU4M5AJz0OQCLX4QAKPm9APgfOwDe/5cAD5gFABEv7wAKWosAbR9tAM9+NgAJyycARk+3AJ5mPwAt6l8Auid1AOXrxwA9e/EA9zkHAJJSigD7a+oAH7FfAAhdjQAwA1YAe/xGAPCrawAgvM8ANvSaAOOpHQBeYZEACBvmAIWZZQCgFF8AjUBoAIDY/wAnc00ABgYxAMpWFQDJqHMAe+JgAGuMwAAAAABA+yH5PwAAAAAtRHQ+AAAAgJhG+DwAAABgUcx4OwAAAICDG/A5AAAAQCAlejgAAACAIoLjNgAAAAAd82k1AHsJcHJvZHVjZXJzAghsYW5ndWFnZQEEUnVzdAAMcHJvY2Vzc2VkLWJ5AwVydXN0Yx0xLjQ5LjAgKGUxODg0YThlMyAyMDIwLTEyLTI5KQZ3YWxydXMGMC4xOC4wDHdhc20tYmluZGdlbhIwLjIuNzMgKDNjZWZlMmM4Mik=";let XA,On=!1;const Ml=fetch(Fl).then(n=>n.arrayBuffer()).then(n=>WebAssembly.instantiate(n,{"./mikktspace_module_bg.js":{__wbindgen_string_new:Hn,__wbindgen_rethrow:qn}})).then(n=>{XA=n.instance.exports,On=!0}),kl=Object.freeze(Object.defineProperty({__proto__:null,__wbindgen_rethrow:qn,__wbindgen_string_new:Hn,generateTangents:Rl,get isReady(){return On},ready:Ml,get wasm(){return XA}},Symbol.toStringTag,{value:"Module"}));export{Wa as BufferGeometryUtils,kr as DRACOLoader,vg as EXRLoader,Al as FBXLoader,Lo as Font,ag as FontLoader,Cs as GLTFExporter,oo as GLTFLoader,Ha as GroundedSkybox,Hc as HTMLMesh,Ac as HorizontalBlurShader,Kc as InteractiveGroup,he as KTX2Loader,Pc as Line2,wn as LineGeometry,ps as LineMaterial,Mr as MeshoptDecoder,pl as OBJLoader,Pg as OrbitControls,Ql as Pass,$g as PositionalAudioHelper,xg as RGBELoader,bt as Stats,ng as TextGeometry,Rg as TransformControls,on as TransformControlsGizmo,Yc as VertexNormalsHelper,ec as VerticalBlurShader,Nc as XRControllerModelFactory,so as mergeVertices,kl as mikktspace_module,No as nodeFrame,gs as strToU8,Sg as zipSync};