Files
doormilebuild/build/_next/static/chunks/0ovd-l8hud6qg.js
2026-06-04 15:19:49 +05:30

630 lines
198 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,1517,e=>{"use strict";let t,r,n,i;var a=e.i(43476),s=e.i(71645),o=e.i(75056),l=e.i(25234),c=e.i(28600),u=e.i(31067),d=e.i(90072);function h(e,t){if(t===d.TrianglesDrawMode)return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."),e;if(t!==d.TriangleFanDrawMode&&t!==d.TriangleStripDrawMode)return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:",t),e;{let r=e.getIndex();if(null===r){let t=[],n=e.getAttribute("position");if(void 0===n)return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),e;for(let e=0;e<n.count;e++)t.push(e);e.setIndex(t),r=e.getIndex()}let n=r.count-2,i=[];if(r)if(t===d.TriangleFanDrawMode)for(let e=1;e<=n;e++)i.push(r.getX(0)),i.push(r.getX(e)),i.push(r.getX(e+1));else for(let e=0;e<n;e++)e%2==0?(i.push(r.getX(e)),i.push(r.getX(e+1)),i.push(r.getX(e+2))):(i.push(r.getX(e+2)),i.push(r.getX(e+1)),i.push(r.getX(e)));i.length/3!==n&&console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");let a=e.clone();return a.setIndex(i),a.clearGroups(),a}}let f=s.forwardRef(function({args:[e=1,t=1,r=1]=[],radius:n=.05,steps:i=1,smoothness:a=4,bevelSegments:o=4,creaseAngle:l=.4,children:c,...d},h){return s.createElement("mesh",(0,u.default)({ref:h},d),s.createElement(A,{args:[e,t,r],radius:n,steps:i,smoothness:a,bevelSegments:o,creaseAngle:l}),c)}),A=s.forwardRef(function({args:[e=1,t=1,r=1]=[],radius:n=.05,steps:i=1,smoothness:a=4,bevelSegments:o=4,creaseAngle:l=.4,...c},h){let f=s.useMemo(()=>{let r,i;return r=new d.Shape,i=n-1e-5,r.absarc(1e-5,1e-5,1e-5,-Math.PI/2,-Math.PI,!0),r.absarc(1e-5,t-2*i,1e-5,Math.PI,Math.PI/2,!0),r.absarc(e-2*i,t-2*i,1e-5,Math.PI/2,0,!0),r.absarc(e-2*i,1e-5,1e-5,0,-Math.PI/2,!0),r},[e,t,n]),A=s.useMemo(()=>({depth:r-2*n,bevelEnabled:!0,bevelSegments:2*o,steps:i,bevelSize:n-1e-5,bevelThickness:n,curveSegments:a}),[r,n,a,o,i]),p=s.useRef(null);return s.useLayoutEffect(()=>{p.current&&(p.current.center(),function(e,t=Math.PI/3){let r=Math.cos(t),n=(1+1e-10)*100,i=[new d.Vector3,new d.Vector3,new d.Vector3],a=new d.Vector3,s=new d.Vector3,o=new d.Vector3,l=new d.Vector3;function c(e){let t=~~(e.x*n),r=~~(e.y*n),i=~~(e.z*n);return`${t},${r},${i}`}let u=e.index?e.toNonIndexed():e,h=u.attributes.position,f={};for(let e=0,t=h.count/3;e<t;e++){let t=3*e,r=i[0].fromBufferAttribute(h,t+0),n=i[1].fromBufferAttribute(h,t+1),o=i[2].fromBufferAttribute(h,t+2);a.subVectors(o,n),s.subVectors(r,n);let l=new d.Vector3().crossVectors(a,s).normalize();for(let e=0;e<3;e++){let t=c(i[e]);t in f||(f[t]=[]),f[t].push(l)}}let A=new Float32Array(3*h.count),p=new d.BufferAttribute(A,3,!1);for(let e=0,t=h.count/3;e<t;e++){let t=3*e,n=i[0].fromBufferAttribute(h,t+0),u=i[1].fromBufferAttribute(h,t+1),d=i[2].fromBufferAttribute(h,t+2);a.subVectors(d,u),s.subVectors(n,u),o.crossVectors(a,s).normalize();for(let e=0;e<3;e++){let n=f[c(i[e])];l.set(0,0,0);for(let e=0,t=n.length;e<t;e++){let t=n[e];o.dot(t)>r&&l.add(t)}l.normalize(),p.setXYZ(t+e,l.x,l.y,l.z)}}u.setAttribute("normal",p)}(p.current,l))},[f,A,l]),s.useImperativeHandle(h,()=>p.current),s.createElement("extrudeGeometry",(0,u.default)({ref:p,args:[f,A]},c))});var p=d,m=d;let B=new m.Box3,g=new m.Vector3;class C extends m.InstancedBufferGeometry{constructor(){super(),this.isLineSegmentsGeometry=!0,this.type="LineSegmentsGeometry",this.setIndex([0,2,1,2,3,1,2,4,3,4,5,3,4,6,5,6,7,5]),this.setAttribute("position",new m.Float32BufferAttribute([-1,2,0,1,2,0,-1,1,0,1,1,0,-1,0,0,1,0,0,-1,-1,0,1,-1,0],3)),this.setAttribute("uv",new m.Float32BufferAttribute([-1,2,1,2,-1,1,1,1,-1,-1,1,-1,-1,-2,1,-2],2))}applyMatrix4(e){let t=this.attributes.instanceStart,r=this.attributes.instanceEnd;return void 0!==t&&(t.applyMatrix4(e),r.applyMatrix4(e),t.needsUpdate=!0),null!==this.boundingBox&&this.computeBoundingBox(),null!==this.boundingSphere&&this.computeBoundingSphere(),this}setPositions(e){let t;e instanceof Float32Array?t=e:Array.isArray(e)&&(t=new Float32Array(e));let r=new m.InstancedInterleavedBuffer(t,6,1);return this.setAttribute("instanceStart",new m.InterleavedBufferAttribute(r,3,0)),this.setAttribute("instanceEnd",new m.InterleavedBufferAttribute(r,3,3)),this.computeBoundingBox(),this.computeBoundingSphere(),this}setColors(e,t=3){let r;e instanceof Float32Array?r=e:Array.isArray(e)&&(r=new Float32Array(e));let n=new m.InstancedInterleavedBuffer(r,2*t,1);return this.setAttribute("instanceColorStart",new m.InterleavedBufferAttribute(n,t,0)),this.setAttribute("instanceColorEnd",new m.InterleavedBufferAttribute(n,t,t)),this}fromWireframeGeometry(e){return this.setPositions(e.attributes.position.array),this}fromEdgesGeometry(e){return this.setPositions(e.attributes.position.array),this}fromMesh(e){return this.fromWireframeGeometry(new m.WireframeGeometry(e.geometry)),this}fromLineSegments(e){let t=e.geometry;return this.setPositions(t.attributes.position.array),this}computeBoundingBox(){null===this.boundingBox&&(this.boundingBox=new m.Box3);let e=this.attributes.instanceStart,t=this.attributes.instanceEnd;void 0!==e&&void 0!==t&&(this.boundingBox.setFromBufferAttribute(e),B.setFromBufferAttribute(t),this.boundingBox.union(B))}computeBoundingSphere(){null===this.boundingSphere&&(this.boundingSphere=new m.Sphere),null===this.boundingBox&&this.computeBoundingBox();let e=this.attributes.instanceStart,t=this.attributes.instanceEnd;if(void 0!==e&&void 0!==t){let r=this.boundingSphere.center;this.boundingBox.getCenter(r);let n=0;for(let i=0,a=e.count;i<a;i++)g.fromBufferAttribute(e,i),n=Math.max(n,r.distanceToSquared(g)),g.fromBufferAttribute(t,i),n=Math.max(n,r.distanceToSquared(g));this.boundingSphere.radius=Math.sqrt(n),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(e){return console.warn("THREE.LineSegmentsGeometry: applyMatrix() has been renamed to applyMatrix4()."),this.applyMatrix4(e)}}var v=d,y=e.i(8560);let M=parseInt(d.REVISION.replace(/\D+/g,""));class x extends v.ShaderMaterial{constructor(e){super({type:"LineMaterial",uniforms:v.UniformsUtils.clone(v.UniformsUtils.merge([y.UniformsLib.common,y.UniformsLib.fog,{worldUnits:{value:1},linewidth:{value:1},resolution:{value:new v.Vector2(1,1)},dashOffset:{value:0},dashScale:{value:1},dashSize:{value:1},gapSize:{value:1}}])),vertexShader:`
#include <common>
#include <fog_pars_vertex>
#include <logdepthbuf_pars_vertex>
#include <clipping_planes_pars_vertex>
uniform float linewidth;
uniform vec2 resolution;
attribute vec3 instanceStart;
attribute vec3 instanceEnd;
#ifdef USE_COLOR
#ifdef USE_LINE_COLOR_ALPHA
varying vec4 vLineColor;
attribute vec4 instanceColorStart;
attribute vec4 instanceColorEnd;
#else
varying vec3 vLineColor;
attribute vec3 instanceColorStart;
attribute vec3 instanceColorEnd;
#endif
#endif
#ifdef WORLD_UNITS
varying vec4 worldPos;
varying vec3 worldStart;
varying vec3 worldEnd;
#ifdef USE_DASH
varying vec2 vUv;
#endif
#else
varying vec2 vUv;
#endif
#ifdef USE_DASH
uniform float dashScale;
attribute float instanceDistanceStart;
attribute float instanceDistanceEnd;
varying float vLineDistance;
#endif
void trimSegment( const in vec4 start, inout vec4 end ) {
// trim end segment so it terminates between the camera plane and the near plane
// conservative estimate of the near plane
float a = projectionMatrix[ 2 ][ 2 ]; // 3nd entry in 3th column
float b = projectionMatrix[ 3 ][ 2 ]; // 3nd entry in 4th column
float nearEstimate = - 0.5 * b / a;
float alpha = ( nearEstimate - start.z ) / ( end.z - start.z );
end.xyz = mix( start.xyz, end.xyz, alpha );
}
void main() {
#ifdef USE_COLOR
vLineColor = ( position.y < 0.5 ) ? instanceColorStart : instanceColorEnd;
#endif
#ifdef USE_DASH
vLineDistance = ( position.y < 0.5 ) ? dashScale * instanceDistanceStart : dashScale * instanceDistanceEnd;
vUv = uv;
#endif
float aspect = resolution.x / resolution.y;
// camera space
vec4 start = modelViewMatrix * vec4( instanceStart, 1.0 );
vec4 end = modelViewMatrix * vec4( instanceEnd, 1.0 );
#ifdef WORLD_UNITS
worldStart = start.xyz;
worldEnd = end.xyz;
#else
vUv = uv;
#endif
// special case for perspective projection, and segments that terminate either in, or behind, the camera plane
// clearly the gpu firmware has a way of addressing this issue when projecting into ndc space
// but we need to perform ndc-space calculations in the shader, so we must address this issue directly
// perhaps there is a more elegant solution -- WestLangley
bool perspective = ( projectionMatrix[ 2 ][ 3 ] == - 1.0 ); // 4th entry in the 3rd column
if ( perspective ) {
if ( start.z < 0.0 && end.z >= 0.0 ) {
trimSegment( start, end );
} else if ( end.z < 0.0 && start.z >= 0.0 ) {
trimSegment( end, start );
}
}
// clip space
vec4 clipStart = projectionMatrix * start;
vec4 clipEnd = projectionMatrix * end;
// ndc space
vec3 ndcStart = clipStart.xyz / clipStart.w;
vec3 ndcEnd = clipEnd.xyz / clipEnd.w;
// direction
vec2 dir = ndcEnd.xy - ndcStart.xy;
// account for clip-space aspect ratio
dir.x *= aspect;
dir = normalize( dir );
#ifdef WORLD_UNITS
// get the offset direction as perpendicular to the view vector
vec3 worldDir = normalize( end.xyz - start.xyz );
vec3 offset;
if ( position.y < 0.5 ) {
offset = normalize( cross( start.xyz, worldDir ) );
} else {
offset = normalize( cross( end.xyz, worldDir ) );
}
// sign flip
if ( position.x < 0.0 ) offset *= - 1.0;
float forwardOffset = dot( worldDir, vec3( 0.0, 0.0, 1.0 ) );
// don't extend the line if we're rendering dashes because we
// won't be rendering the endcaps
#ifndef USE_DASH
// extend the line bounds to encompass endcaps
start.xyz += - worldDir * linewidth * 0.5;
end.xyz += worldDir * linewidth * 0.5;
// shift the position of the quad so it hugs the forward edge of the line
offset.xy -= dir * forwardOffset;
offset.z += 0.5;
#endif
// endcaps
if ( position.y > 1.0 || position.y < 0.0 ) {
offset.xy += dir * 2.0 * forwardOffset;
}
// adjust for linewidth
offset *= linewidth * 0.5;
// set the world position
worldPos = ( position.y < 0.5 ) ? start : end;
worldPos.xyz += offset;
// project the worldpos
vec4 clip = projectionMatrix * worldPos;
// shift the depth of the projected points so the line
// segments overlap neatly
vec3 clipPose = ( position.y < 0.5 ) ? ndcStart : ndcEnd;
clip.z = clipPose.z * clip.w;
#else
vec2 offset = vec2( dir.y, - dir.x );
// undo aspect ratio adjustment
dir.x /= aspect;
offset.x /= aspect;
// sign flip
if ( position.x < 0.0 ) offset *= - 1.0;
// endcaps
if ( position.y < 0.0 ) {
offset += - dir;
} else if ( position.y > 1.0 ) {
offset += dir;
}
// adjust for linewidth
offset *= linewidth;
// adjust for clip-space to screen-space conversion // maybe resolution should be based on viewport ...
offset /= resolution.y;
// select end
vec4 clip = ( position.y < 0.5 ) ? clipStart : clipEnd;
// back to clip space
offset *= clip.w;
clip.xy += offset;
#endif
gl_Position = clip;
vec4 mvPosition = ( position.y < 0.5 ) ? start : end; // this is an approximation
#include <logdepthbuf_vertex>
#include <clipping_planes_vertex>
#include <fog_vertex>
}
`,fragmentShader:`
uniform vec3 diffuse;
uniform float opacity;
uniform float linewidth;
#ifdef USE_DASH
uniform float dashOffset;
uniform float dashSize;
uniform float gapSize;
#endif
varying float vLineDistance;
#ifdef WORLD_UNITS
varying vec4 worldPos;
varying vec3 worldStart;
varying vec3 worldEnd;
#ifdef USE_DASH
varying vec2 vUv;
#endif
#else
varying vec2 vUv;
#endif
#include <common>
#include <fog_pars_fragment>
#include <logdepthbuf_pars_fragment>
#include <clipping_planes_pars_fragment>
#ifdef USE_COLOR
#ifdef USE_LINE_COLOR_ALPHA
varying vec4 vLineColor;
#else
varying vec3 vLineColor;
#endif
#endif
vec2 closestLineToLine(vec3 p1, vec3 p2, vec3 p3, vec3 p4) {
float mua;
float mub;
vec3 p13 = p1 - p3;
vec3 p43 = p4 - p3;
vec3 p21 = p2 - p1;
float d1343 = dot( p13, p43 );
float d4321 = dot( p43, p21 );
float d1321 = dot( p13, p21 );
float d4343 = dot( p43, p43 );
float d2121 = dot( p21, p21 );
float denom = d2121 * d4343 - d4321 * d4321;
float numer = d1343 * d4321 - d1321 * d4343;
mua = numer / denom;
mua = clamp( mua, 0.0, 1.0 );
mub = ( d1343 + d4321 * ( mua ) ) / d4343;
mub = clamp( mub, 0.0, 1.0 );
return vec2( mua, mub );
}
void main() {
#include <clipping_planes_fragment>
#ifdef USE_DASH
if ( vUv.y < - 1.0 || vUv.y > 1.0 ) discard; // discard endcaps
if ( mod( vLineDistance + dashOffset, dashSize + gapSize ) > dashSize ) discard; // todo - FIX
#endif
float alpha = opacity;
#ifdef WORLD_UNITS
// Find the closest points on the view ray and the line segment
vec3 rayEnd = normalize( worldPos.xyz ) * 1e5;
vec3 lineDir = worldEnd - worldStart;
vec2 params = closestLineToLine( worldStart, worldEnd, vec3( 0.0, 0.0, 0.0 ), rayEnd );
vec3 p1 = worldStart + lineDir * params.x;
vec3 p2 = rayEnd * params.y;
vec3 delta = p1 - p2;
float len = length( delta );
float norm = len / linewidth;
#ifndef USE_DASH
#ifdef USE_ALPHA_TO_COVERAGE
float dnorm = fwidth( norm );
alpha = 1.0 - smoothstep( 0.5 - dnorm, 0.5 + dnorm, norm );
#else
if ( norm > 0.5 ) {
discard;
}
#endif
#endif
#else
#ifdef USE_ALPHA_TO_COVERAGE
// artifacts appear on some hardware if a derivative is taken within a conditional
float a = vUv.x;
float b = ( vUv.y > 0.0 ) ? vUv.y - 1.0 : vUv.y + 1.0;
float len2 = a * a + b * b;
float dlen = fwidth( len2 );
if ( abs( vUv.y ) > 1.0 ) {
alpha = 1.0 - smoothstep( 1.0 - dlen, 1.0 + dlen, len2 );
}
#else
if ( abs( vUv.y ) > 1.0 ) {
float a = vUv.x;
float b = ( vUv.y > 0.0 ) ? vUv.y - 1.0 : vUv.y + 1.0;
float len2 = a * a + b * b;
if ( len2 > 1.0 ) discard;
}
#endif
#endif
vec4 diffuseColor = vec4( diffuse, alpha );
#ifdef USE_COLOR
#ifdef USE_LINE_COLOR_ALPHA
diffuseColor *= vLineColor;
#else
diffuseColor.rgb *= vLineColor;
#endif
#endif
#include <logdepthbuf_fragment>
gl_FragColor = diffuseColor;
#include <tonemapping_fragment>
#include <${M>=154?"colorspace_fragment":"encodings_fragment"}>
#include <fog_fragment>
#include <premultiplied_alpha_fragment>
}
`,clipping:!0}),this.isLineMaterial=!0,this.onBeforeCompile=function(){this.transparent?this.defines.USE_LINE_COLOR_ALPHA="1":delete this.defines.USE_LINE_COLOR_ALPHA},Object.defineProperties(this,{color:{enumerable:!0,get:function(){return this.uniforms.diffuse.value},set:function(e){this.uniforms.diffuse.value=e}},worldUnits:{enumerable:!0,get:function(){return"WORLD_UNITS"in this.defines},set:function(e){!0===e?this.defines.WORLD_UNITS="":delete this.defines.WORLD_UNITS}},linewidth:{enumerable:!0,get:function(){return this.uniforms.linewidth.value},set:function(e){this.uniforms.linewidth.value=e}},dashed:{enumerable:!0,get:function(){return"USE_DASH"in this.defines},set(e){!!e!="USE_DASH"in this.defines&&(this.needsUpdate=!0),!0===e?this.defines.USE_DASH="":delete this.defines.USE_DASH}},dashScale:{enumerable:!0,get:function(){return this.uniforms.dashScale.value},set:function(e){this.uniforms.dashScale.value=e}},dashSize:{enumerable:!0,get:function(){return this.uniforms.dashSize.value},set:function(e){this.uniforms.dashSize.value=e}},dashOffset:{enumerable:!0,get:function(){return this.uniforms.dashOffset.value},set:function(e){this.uniforms.dashOffset.value=e}},gapSize:{enumerable:!0,get:function(){return this.uniforms.gapSize.value},set:function(e){this.uniforms.gapSize.value=e}},opacity:{enumerable:!0,get:function(){return this.uniforms.opacity.value},set:function(e){this.uniforms.opacity.value=e}},resolution:{enumerable:!0,get:function(){return this.uniforms.resolution.value},set:function(e){this.uniforms.resolution.value.copy(e)}},alphaToCoverage:{enumerable:!0,get:function(){return"USE_ALPHA_TO_COVERAGE"in this.defines},set:function(e){!!e!="USE_ALPHA_TO_COVERAGE"in this.defines&&(this.needsUpdate=!0),!0===e?(this.defines.USE_ALPHA_TO_COVERAGE="",this.extensions.derivatives=!0):(delete this.defines.USE_ALPHA_TO_COVERAGE,this.extensions.derivatives=!1)}}}),this.setValues(e)}}let E=M>=125?"uv1":"uv2",F=new p.Vector4,b=new p.Vector3,w=new p.Vector3,I=new p.Vector4,R=new p.Vector4,G=new p.Vector4,D=new p.Vector3,T=new p.Matrix4,S=new p.Line3,H=new p.Vector3,L=new p.Box3,U=new p.Sphere,P=new p.Vector4;function _(e,t,n){return P.set(0,0,-t,1).applyMatrix4(e.projectionMatrix),P.multiplyScalar(1/P.w),P.x=r/n.width,P.y=r/n.height,P.applyMatrix4(e.projectionMatrixInverse),P.multiplyScalar(1/P.w),Math.abs(Math.max(P.x,P.y))}class J extends p.Mesh{constructor(e=new C,t=new x({color:0xffffff*Math.random()})){super(e,t),this.isLineSegments2=!0,this.type="LineSegments2"}computeLineDistances(){let e=this.geometry,t=e.attributes.instanceStart,r=e.attributes.instanceEnd,n=new Float32Array(2*t.count);for(let e=0,i=0,a=t.count;e<a;e++,i+=2)b.fromBufferAttribute(t,e),w.fromBufferAttribute(r,e),n[i]=0===i?0:n[i-1],n[i+1]=n[i]+b.distanceTo(w);let i=new p.InstancedInterleavedBuffer(n,2,1);return e.setAttribute("instanceDistanceStart",new p.InterleavedBufferAttribute(i,1,0)),e.setAttribute("instanceDistanceEnd",new p.InterleavedBufferAttribute(i,1,1)),this}raycast(e,n){let i,a,s=this.material.worldUnits,o=e.camera;null!==o||s||console.error('LineSegments2: "Raycaster.camera" needs to be set in order to raycast against LineSegments2 while worldUnits is set to false.');let l=void 0!==e.params.Line2&&e.params.Line2.threshold||0;t=e.ray;let c=this.matrixWorld,u=this.geometry,d=this.material;if(r=d.linewidth+l,null===u.boundingSphere&&u.computeBoundingSphere(),U.copy(u.boundingSphere).applyMatrix4(c),s)i=.5*r;else{let e=Math.max(o.near,U.distanceToPoint(t.origin));i=_(o,e,d.resolution)}if(U.radius+=i,!1!==t.intersectsSphere(U)){if(null===u.boundingBox&&u.computeBoundingBox(),L.copy(u.boundingBox).applyMatrix4(c),s)a=.5*r;else{let e=Math.max(o.near,L.distanceToPoint(t.origin));a=_(o,e,d.resolution)}L.expandByScalar(a),!1!==t.intersectsBox(L)&&(s?function(e,n){let i=e.matrixWorld,a=e.geometry,s=a.attributes.instanceStart,o=a.attributes.instanceEnd,l=Math.min(a.instanceCount,s.count);for(let a=0;a<l;a++){S.start.fromBufferAttribute(s,a),S.end.fromBufferAttribute(o,a),S.applyMatrix4(i);let l=new p.Vector3,c=new p.Vector3;t.distanceSqToSegment(S.start,S.end,c,l),c.distanceTo(l)<.5*r&&n.push({point:c,pointOnLine:l,distance:t.origin.distanceTo(c),object:e,face:null,faceIndex:a,uv:null,[E]:null})}}(this,n):function(e,n,i){let a=n.projectionMatrix,s=e.material.resolution,o=e.matrixWorld,l=e.geometry,c=l.attributes.instanceStart,u=l.attributes.instanceEnd,d=Math.min(l.instanceCount,c.count),h=-n.near;t.at(1,G),G.w=1,G.applyMatrix4(n.matrixWorldInverse),G.applyMatrix4(a),G.multiplyScalar(1/G.w),G.x*=s.x/2,G.y*=s.y/2,G.z=0,D.copy(G),T.multiplyMatrices(n.matrixWorldInverse,o);for(let n=0;n<d;n++){if(I.fromBufferAttribute(c,n),R.fromBufferAttribute(u,n),I.w=1,R.w=1,I.applyMatrix4(T),R.applyMatrix4(T),I.z>h&&R.z>h)continue;if(I.z>h){let e=I.z-R.z,t=(I.z-h)/e;I.lerp(R,t)}else if(R.z>h){let e=R.z-I.z,t=(R.z-h)/e;R.lerp(I,t)}I.applyMatrix4(a),R.applyMatrix4(a),I.multiplyScalar(1/I.w),R.multiplyScalar(1/R.w),I.x*=s.x/2,I.y*=s.y/2,R.x*=s.x/2,R.y*=s.y/2,S.start.copy(I),S.start.z=0,S.end.copy(R),S.end.z=0;let l=S.closestPointToPointParameter(D,!0);S.at(l,H);let d=p.MathUtils.lerp(I.z,R.z,l),f=d>=-1&&d<=1,A=D.distanceTo(H)<.5*r;if(f&&A){S.start.fromBufferAttribute(c,n),S.end.fromBufferAttribute(u,n),S.start.applyMatrix4(o),S.end.applyMatrix4(o);let r=new p.Vector3,a=new p.Vector3;t.distanceSqToSegment(S.start,S.end,a,r),i.push({point:a,pointOnLine:r,distance:t.origin.distanceTo(a),object:e,face:null,faceIndex:n,uv:null,[E]:null})}}}(this,o,n))}}onBeforeRender(e){let t=this.material.uniforms;t&&t.resolution&&(e.getViewport(F),this.material.uniforms.resolution.value.set(F.z,F.w))}}class O extends C{constructor(){super(),this.isLineGeometry=!0,this.type="LineGeometry"}setPositions(e){let t=e.length-3,r=new Float32Array(2*t);for(let n=0;n<t;n+=3)r[2*n]=e[n],r[2*n+1]=e[n+1],r[2*n+2]=e[n+2],r[2*n+3]=e[n+3],r[2*n+4]=e[n+4],r[2*n+5]=e[n+5];return super.setPositions(r),this}setColors(e,t=3){let r=e.length-t,n=new Float32Array(2*r);if(3===t)for(let i=0;i<r;i+=t)n[2*i]=e[i],n[2*i+1]=e[i+1],n[2*i+2]=e[i+2],n[2*i+3]=e[i+3],n[2*i+4]=e[i+4],n[2*i+5]=e[i+5];else for(let i=0;i<r;i+=t)n[2*i]=e[i],n[2*i+1]=e[i+1],n[2*i+2]=e[i+2],n[2*i+3]=e[i+3],n[2*i+4]=e[i+4],n[2*i+5]=e[i+5],n[2*i+6]=e[i+6],n[2*i+7]=e[i+7];return super.setColors(n,t),this}fromLine(e){let t=e.geometry;return this.setPositions(t.attributes.position.array),this}}class j extends J{constructor(e=new O,t=new x({color:0xffffff*Math.random()})){super(e,t),this.isLine2=!0,this.type="Line2"}}let k=s.forwardRef(function({points:e,color:t=0xffffff,vertexColors:r,linewidth:n,lineWidth:i,segments:a,dashed:o,...l},h){var f,A;let p=(0,c.useThree)(e=>e.size),m=s.useMemo(()=>a?new J:new j,[a]),[B]=s.useState(()=>new x),g=(null==r||null==(f=r[0])?void 0:f.length)===4?4:3,v=s.useMemo(()=>{let n=a?new C:new O,i=e.map(e=>{let t=Array.isArray(e);return e instanceof d.Vector3||e instanceof d.Vector4?[e.x,e.y,e.z]:e instanceof d.Vector2?[e.x,e.y,0]:t&&3===e.length?[e[0],e[1],e[2]]:t&&2===e.length?[e[0],e[1],0]:e});if(n.setPositions(i.flat()),r){t=0xffffff;let e=r.map(e=>e instanceof d.Color?e.toArray():e);n.setColors(e.flat(),g)}return n},[e,a,r,g]);return s.useLayoutEffect(()=>{m.computeLineDistances()},[e,m]),s.useLayoutEffect(()=>{o?B.defines.USE_DASH="":delete B.defines.USE_DASH,B.needsUpdate=!0},[o,B]),s.useEffect(()=>()=>{v.dispose(),B.dispose()},[v]),s.createElement("primitive",(0,u.default)({object:m,ref:h},l),s.createElement("primitive",{object:v,attach:"geometry"}),s.createElement("primitive",(0,u.default)({object:B,attach:"material",color:t,vertexColors:!!r,resolution:[p.width,p.height],linewidth:null!=(A=null!=n?n:i)?A:1,dashed:o,transparent:4===g},l)))});var N=d,K=e.i(67335);let Q=parseInt(d.REVISION.replace(/\D+/g,""));class X extends N.ShaderMaterial{constructor(){super({uniforms:{time:{value:0},pixelRatio:{value:1}},vertexShader:`
uniform float pixelRatio;
uniform float time;
attribute float size;
attribute float speed;
attribute float opacity;
attribute vec3 noise;
attribute vec3 color;
varying vec3 vColor;
varying float vOpacity;
void main() {
vec4 modelPosition = modelMatrix * vec4(position, 1.0);
modelPosition.y += sin(time * speed + modelPosition.x * noise.x * 100.0) * 0.2;
modelPosition.z += cos(time * speed + modelPosition.x * noise.y * 100.0) * 0.2;
modelPosition.x += cos(time * speed + modelPosition.x * noise.z * 100.0) * 0.2;
vec4 viewPosition = viewMatrix * modelPosition;
vec4 projectionPostion = projectionMatrix * viewPosition;
gl_Position = projectionPostion;
gl_PointSize = size * 25. * pixelRatio;
gl_PointSize *= (1.0 / - viewPosition.z);
vColor = color;
vOpacity = opacity;
}
`,fragmentShader:`
varying vec3 vColor;
varying float vOpacity;
void main() {
float distanceToCenter = distance(gl_PointCoord, vec2(0.5));
float strength = 0.05 / distanceToCenter - 0.1;
gl_FragColor = vec4(vColor, strength * vOpacity);
#include <tonemapping_fragment>
#include <${Q>=154?"colorspace_fragment":"encodings_fragment"}>
}
`})}get time(){return this.uniforms.time.value}set time(e){this.uniforms.time.value=e}get pixelRatio(){return this.uniforms.pixelRatio.value}set pixelRatio(e){this.uniforms.pixelRatio.value=e}}let Y=e=>e&&e.constructor===Float32Array,W=e=>e instanceof N.Vector2||e instanceof N.Vector3||e instanceof N.Vector4,z=e=>Array.isArray(e)?e:W(e)?e.toArray():[e,e,e];function V(e,t,r){return s.useMemo(()=>{if(void 0!==t)if(Y(t))return t;else{if(t instanceof N.Color){let r=Array.from({length:3*e},()=>[t.r,t.g,t.b]).flat();return Float32Array.from(r)}if(W(t)||Array.isArray(t)){let r=Array.from({length:3*e},()=>z(t)).flat();return Float32Array.from(r)}return Float32Array.from({length:e},()=>t)}return Float32Array.from({length:e},r)},[t])}let Z=s.forwardRef(({noise:e=1,count:t=100,speed:r=1,opacity:n=1,scale:i=1,size:a,color:o,children:d,...h},f)=>{s.useMemo(()=>(0,K.extend)({SparklesImplMaterial:X}),[]);let A=s.useRef(null),p=(0,c.useThree)(e=>e.viewport.dpr),m=z(i),B=s.useMemo(()=>Float32Array.from(Array.from({length:t},()=>m.map(N.MathUtils.randFloatSpread)).flat()),[t,...m]),g=V(t,a,Math.random),C=V(t,n),v=V(t,r),y=V(3*t,e),M=V(void 0===o?3*t:t,Y(o)?o:new N.Color(o),()=>1);return(0,l.useFrame)(e=>{A.current&&A.current.material&&(A.current.material.time=e.clock.elapsedTime)}),s.useImperativeHandle(f,()=>A.current,[]),s.createElement("points",(0,u.default)({key:`particle-${t}-${JSON.stringify(i)}`},h,{ref:A}),s.createElement("bufferGeometry",null,s.createElement("bufferAttribute",{attach:"attributes-position",args:[B,3]}),s.createElement("bufferAttribute",{attach:"attributes-size",args:[g,1]}),s.createElement("bufferAttribute",{attach:"attributes-opacity",args:[C,1]}),s.createElement("bufferAttribute",{attach:"attributes-speed",args:[v,1]}),s.createElement("bufferAttribute",{attach:"attributes-color",args:[M,3]}),s.createElement("bufferAttribute",{attach:"attributes-noise",args:[y,3]})),d||s.createElement("sparklesImplMaterial",{transparent:!0,pixelRatio:p,depthWrite:!1}))});var q=e.i(60099),$=d;function ee(e){if("u">typeof TextDecoder)return new TextDecoder().decode(e);let t="";for(let r=0,n=e.length;r<n;r++)t+=String.fromCharCode(e[r]);try{return decodeURIComponent(escape(t))}catch(e){return t}}let et="srgb",er="srgb-linear";class en extends $.Loader{constructor(e){super(e),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(e){return new ec(e)}),this.register(function(e){return new eu(e)}),this.register(function(e){return new eC(e)}),this.register(function(e){return new ev(e)}),this.register(function(e){return new ey(e)}),this.register(function(e){return new eh(e)}),this.register(function(e){return new ef(e)}),this.register(function(e){return new eA(e)}),this.register(function(e){return new ep(e)}),this.register(function(e){return new el(e)}),this.register(function(e){return new em(e)}),this.register(function(e){return new ed(e)}),this.register(function(e){return new eg(e)}),this.register(function(e){return new eB(e)}),this.register(function(e){return new es(e)}),this.register(function(e){return new eM(e)}),this.register(function(e){return new ex(e)})}load(e,t,r,n){let i,a=this;if(""!==this.resourcePath)i=this.resourcePath;else if(""!==this.path){let t=$.LoaderUtils.extractUrlBase(e);i=$.LoaderUtils.resolveURL(t,this.path)}else i=$.LoaderUtils.extractUrlBase(e);this.manager.itemStart(e);let s=function(t){n?n(t):console.error(t),a.manager.itemError(e),a.manager.itemEnd(e)},o=new $.FileLoader(this.manager);o.setPath(this.path),o.setResponseType("arraybuffer"),o.setRequestHeader(this.requestHeader),o.setWithCredentials(this.withCredentials),o.load(e,function(r){try{a.parse(r,i,function(r){t(r),a.manager.itemEnd(e)},s)}catch(e){s(e)}},r,s)}setDRACOLoader(e){return this.dracoLoader=e,this}setDDSLoader(){throw Error('THREE.GLTFLoader: "MSFT_texture_dds" no longer supported. Please update to "KHR_texture_basisu".')}setKTX2Loader(e){return this.ktx2Loader=e,this}setMeshoptDecoder(e){return this.meshoptDecoder=e,this}register(e){return -1===this.pluginCallbacks.indexOf(e)&&this.pluginCallbacks.push(e),this}unregister(e){return -1!==this.pluginCallbacks.indexOf(e)&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(e),1),this}parse(e,t,r,n){let i,a={},s={};if("string"==typeof e)i=JSON.parse(e);else if(e instanceof ArrayBuffer)if(ee(new Uint8Array(e.slice(0,4)))===eE){try{a[ea.KHR_BINARY_GLTF]=new eF(e)}catch(e){n&&n(e);return}i=JSON.parse(a[ea.KHR_BINARY_GLTF].content)}else i=JSON.parse(ee(new Uint8Array(e)));else i=e;if(void 0===i.asset||i.asset.version[0]<2){n&&n(Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported."));return}let o=new eQ(i,{path:t||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});o.fileLoader.setRequestHeader(this.requestHeader);for(let e=0;e<this.pluginCallbacks.length;e++){let t=this.pluginCallbacks[e](o);t.name||console.error("THREE.GLTFLoader: Invalid plugin found: missing name"),s[t.name]=t,a[t.name]=!0}if(i.extensionsUsed)for(let e=0;e<i.extensionsUsed.length;++e){let t=i.extensionsUsed[e],r=i.extensionsRequired||[];switch(t){case ea.KHR_MATERIALS_UNLIT:a[t]=new eo;break;case ea.KHR_DRACO_MESH_COMPRESSION:a[t]=new eb(i,this.dracoLoader);break;case ea.KHR_TEXTURE_TRANSFORM:a[t]=new ew;break;case ea.KHR_MESH_QUANTIZATION:a[t]=new eI;break;default:r.indexOf(t)>=0&&void 0===s[t]&&console.warn('THREE.GLTFLoader: Unknown extension "'+t+'".')}}o.setExtensions(a),o.setPlugins(s),o.parse(r,n)}parseAsync(e,t){let r=this;return new Promise(function(n,i){r.parse(e,t,n,i)})}}function ei(){let e={};return{get:function(t){return e[t]},add:function(t,r){e[t]=r},remove:function(t){delete e[t]},removeAll:function(){e={}}}}let ea={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 es{constructor(e){this.parser=e,this.name=ea.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){let e=this.parser,t=this.parser.json.nodes||[];for(let r=0,n=t.length;r<n;r++){let n=t[r];n.extensions&&n.extensions[this.name]&&void 0!==n.extensions[this.name].light&&e._addNodeRef(this.cache,n.extensions[this.name].light)}}_loadLight(e){let t,r=this.parser,n="light:"+e,i=r.cache.get(n);if(i)return i;let a=r.json,s=((a.extensions&&a.extensions[this.name]||{}).lights||[])[e],o=new $.Color(0xffffff);void 0!==s.color&&o.setRGB(s.color[0],s.color[1],s.color[2],er);let l=void 0!==s.range?s.range:0;switch(s.type){case"directional":(t=new $.DirectionalLight(o)).target.position.set(0,0,-1),t.add(t.target);break;case"point":(t=new $.PointLight(o)).distance=l;break;case"spot":(t=new $.SpotLight(o)).distance=l,s.spot=s.spot||{},s.spot.innerConeAngle=void 0!==s.spot.innerConeAngle?s.spot.innerConeAngle:0,s.spot.outerConeAngle=void 0!==s.spot.outerConeAngle?s.spot.outerConeAngle:Math.PI/4,t.angle=s.spot.outerConeAngle,t.penumbra=1-s.spot.innerConeAngle/s.spot.outerConeAngle,t.target.position.set(0,0,-1),t.add(t.target);break;default:throw Error("THREE.GLTFLoader: Unexpected light type: "+s.type)}return t.position.set(0,0,0),t.decay=2,ej(t,s),void 0!==s.intensity&&(t.intensity=s.intensity),t.name=r.createUniqueName(s.name||"light_"+e),i=Promise.resolve(t),r.cache.add(n,i),i}getDependency(e,t){if("light"===e)return this._loadLight(t)}createNodeAttachment(e){let t=this,r=this.parser,n=r.json.nodes[e],i=(n.extensions&&n.extensions[this.name]||{}).light;return void 0===i?null:this._loadLight(i).then(function(e){return r._getNodeRef(t.cache,i,e)})}}class eo{constructor(){this.name=ea.KHR_MATERIALS_UNLIT}getMaterialType(){return $.MeshBasicMaterial}extendParams(e,t,r){let n=[];e.color=new $.Color(1,1,1),e.opacity=1;let i=t.pbrMetallicRoughness;if(i){if(Array.isArray(i.baseColorFactor)){let t=i.baseColorFactor;e.color.setRGB(t[0],t[1],t[2],er),e.opacity=t[3]}void 0!==i.baseColorTexture&&n.push(r.assignTexture(e,"map",i.baseColorTexture,et))}return Promise.all(n)}}class el{constructor(e){this.parser=e,this.name=ea.KHR_MATERIALS_EMISSIVE_STRENGTH}extendMaterialParams(e,t){let r=this.parser.json.materials[e];if(!r.extensions||!r.extensions[this.name])return Promise.resolve();let n=r.extensions[this.name].emissiveStrength;return void 0!==n&&(t.emissiveIntensity=n),Promise.resolve()}}class ec{constructor(e){this.parser=e,this.name=ea.KHR_MATERIALS_CLEARCOAT}getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?$.MeshPhysicalMaterial:null}extendMaterialParams(e,t){let r=this.parser,n=r.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();let i=[],a=n.extensions[this.name];if(void 0!==a.clearcoatFactor&&(t.clearcoat=a.clearcoatFactor),void 0!==a.clearcoatTexture&&i.push(r.assignTexture(t,"clearcoatMap",a.clearcoatTexture)),void 0!==a.clearcoatRoughnessFactor&&(t.clearcoatRoughness=a.clearcoatRoughnessFactor),void 0!==a.clearcoatRoughnessTexture&&i.push(r.assignTexture(t,"clearcoatRoughnessMap",a.clearcoatRoughnessTexture)),void 0!==a.clearcoatNormalTexture&&(i.push(r.assignTexture(t,"clearcoatNormalMap",a.clearcoatNormalTexture)),void 0!==a.clearcoatNormalTexture.scale)){let e=a.clearcoatNormalTexture.scale;t.clearcoatNormalScale=new $.Vector2(e,e)}return Promise.all(i)}}class eu{constructor(e){this.parser=e,this.name=ea.KHR_MATERIALS_DISPERSION}getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?$.MeshPhysicalMaterial:null}extendMaterialParams(e,t){let r=this.parser.json.materials[e];if(!r.extensions||!r.extensions[this.name])return Promise.resolve();let n=r.extensions[this.name];return t.dispersion=void 0!==n.dispersion?n.dispersion:0,Promise.resolve()}}class ed{constructor(e){this.parser=e,this.name=ea.KHR_MATERIALS_IRIDESCENCE}getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?$.MeshPhysicalMaterial:null}extendMaterialParams(e,t){let r=this.parser,n=r.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();let i=[],a=n.extensions[this.name];return void 0!==a.iridescenceFactor&&(t.iridescence=a.iridescenceFactor),void 0!==a.iridescenceTexture&&i.push(r.assignTexture(t,"iridescenceMap",a.iridescenceTexture)),void 0!==a.iridescenceIor&&(t.iridescenceIOR=a.iridescenceIor),void 0===t.iridescenceThicknessRange&&(t.iridescenceThicknessRange=[100,400]),void 0!==a.iridescenceThicknessMinimum&&(t.iridescenceThicknessRange[0]=a.iridescenceThicknessMinimum),void 0!==a.iridescenceThicknessMaximum&&(t.iridescenceThicknessRange[1]=a.iridescenceThicknessMaximum),void 0!==a.iridescenceThicknessTexture&&i.push(r.assignTexture(t,"iridescenceThicknessMap",a.iridescenceThicknessTexture)),Promise.all(i)}}class eh{constructor(e){this.parser=e,this.name=ea.KHR_MATERIALS_SHEEN}getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?$.MeshPhysicalMaterial:null}extendMaterialParams(e,t){let r=this.parser,n=r.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();let i=[];t.sheenColor=new $.Color(0,0,0),t.sheenRoughness=0,t.sheen=1;let a=n.extensions[this.name];if(void 0!==a.sheenColorFactor){let e=a.sheenColorFactor;t.sheenColor.setRGB(e[0],e[1],e[2],er)}return void 0!==a.sheenRoughnessFactor&&(t.sheenRoughness=a.sheenRoughnessFactor),void 0!==a.sheenColorTexture&&i.push(r.assignTexture(t,"sheenColorMap",a.sheenColorTexture,et)),void 0!==a.sheenRoughnessTexture&&i.push(r.assignTexture(t,"sheenRoughnessMap",a.sheenRoughnessTexture)),Promise.all(i)}}class ef{constructor(e){this.parser=e,this.name=ea.KHR_MATERIALS_TRANSMISSION}getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?$.MeshPhysicalMaterial:null}extendMaterialParams(e,t){let r=this.parser,n=r.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();let i=[],a=n.extensions[this.name];return void 0!==a.transmissionFactor&&(t.transmission=a.transmissionFactor),void 0!==a.transmissionTexture&&i.push(r.assignTexture(t,"transmissionMap",a.transmissionTexture)),Promise.all(i)}}class eA{constructor(e){this.parser=e,this.name=ea.KHR_MATERIALS_VOLUME}getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?$.MeshPhysicalMaterial:null}extendMaterialParams(e,t){let r=this.parser,n=r.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();let i=[],a=n.extensions[this.name];t.thickness=void 0!==a.thicknessFactor?a.thicknessFactor:0,void 0!==a.thicknessTexture&&i.push(r.assignTexture(t,"thicknessMap",a.thicknessTexture)),t.attenuationDistance=a.attenuationDistance||1/0;let s=a.attenuationColor||[1,1,1];return t.attenuationColor=new $.Color().setRGB(s[0],s[1],s[2],er),Promise.all(i)}}class ep{constructor(e){this.parser=e,this.name=ea.KHR_MATERIALS_IOR}getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?$.MeshPhysicalMaterial:null}extendMaterialParams(e,t){let r=this.parser.json.materials[e];if(!r.extensions||!r.extensions[this.name])return Promise.resolve();let n=r.extensions[this.name];return t.ior=void 0!==n.ior?n.ior:1.5,Promise.resolve()}}class em{constructor(e){this.parser=e,this.name=ea.KHR_MATERIALS_SPECULAR}getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?$.MeshPhysicalMaterial:null}extendMaterialParams(e,t){let r=this.parser,n=r.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();let i=[],a=n.extensions[this.name];t.specularIntensity=void 0!==a.specularFactor?a.specularFactor:1,void 0!==a.specularTexture&&i.push(r.assignTexture(t,"specularIntensityMap",a.specularTexture));let s=a.specularColorFactor||[1,1,1];return t.specularColor=new $.Color().setRGB(s[0],s[1],s[2],er),void 0!==a.specularColorTexture&&i.push(r.assignTexture(t,"specularColorMap",a.specularColorTexture,et)),Promise.all(i)}}class eB{constructor(e){this.parser=e,this.name=ea.EXT_MATERIALS_BUMP}getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?$.MeshPhysicalMaterial:null}extendMaterialParams(e,t){let r=this.parser,n=r.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();let i=[],a=n.extensions[this.name];return t.bumpScale=void 0!==a.bumpFactor?a.bumpFactor:1,void 0!==a.bumpTexture&&i.push(r.assignTexture(t,"bumpMap",a.bumpTexture)),Promise.all(i)}}class eg{constructor(e){this.parser=e,this.name=ea.KHR_MATERIALS_ANISOTROPY}getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?$.MeshPhysicalMaterial:null}extendMaterialParams(e,t){let r=this.parser,n=r.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();let i=[],a=n.extensions[this.name];return void 0!==a.anisotropyStrength&&(t.anisotropy=a.anisotropyStrength),void 0!==a.anisotropyRotation&&(t.anisotropyRotation=a.anisotropyRotation),void 0!==a.anisotropyTexture&&i.push(r.assignTexture(t,"anisotropyMap",a.anisotropyTexture)),Promise.all(i)}}class eC{constructor(e){this.parser=e,this.name=ea.KHR_TEXTURE_BASISU}loadTexture(e){let t=this.parser,r=t.json,n=r.textures[e];if(!n.extensions||!n.extensions[this.name])return null;let i=n.extensions[this.name],a=t.options.ktx2Loader;if(!a)if(!(r.extensionsRequired&&r.extensionsRequired.indexOf(this.name)>=0))return null;else throw Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return t.loadTextureImage(e,i.source,a)}}class ev{constructor(e){this.parser=e,this.name=ea.EXT_TEXTURE_WEBP,this.isSupported=null}loadTexture(e){let t=this.name,r=this.parser,n=r.json,i=n.textures[e];if(!i.extensions||!i.extensions[t])return null;let a=i.extensions[t],s=n.images[a.source],o=r.textureLoader;if(s.uri){let e=r.options.manager.getHandler(s.uri);null!==e&&(o=e)}return this.detectSupport().then(function(i){if(i)return r.loadTextureImage(e,a.source,o);if(n.extensionsRequired&&n.extensionsRequired.indexOf(t)>=0)throw Error("THREE.GLTFLoader: WebP required by asset but unsupported.");return r.loadTexture(e)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(e){let t=new Image;t.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA",t.onload=t.onerror=function(){e(1===t.height)}})),this.isSupported}}class ey{constructor(e){this.parser=e,this.name=ea.EXT_TEXTURE_AVIF,this.isSupported=null}loadTexture(e){let t=this.name,r=this.parser,n=r.json,i=n.textures[e];if(!i.extensions||!i.extensions[t])return null;let a=i.extensions[t],s=n.images[a.source],o=r.textureLoader;if(s.uri){let e=r.options.manager.getHandler(s.uri);null!==e&&(o=e)}return this.detectSupport().then(function(i){if(i)return r.loadTextureImage(e,a.source,o);if(n.extensionsRequired&&n.extensionsRequired.indexOf(t)>=0)throw Error("THREE.GLTFLoader: AVIF required by asset but unsupported.");return r.loadTexture(e)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(e){let t=new Image;t.src="data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAABcAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQAMAAAAABNjb2xybmNseAACAAIABoAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAAB9tZGF0EgAKCBgABogQEDQgMgkQAAAAB8dSLfI=",t.onload=t.onerror=function(){e(1===t.height)}})),this.isSupported}}class eM{constructor(e){this.name=ea.EXT_MESHOPT_COMPRESSION,this.parser=e}loadBufferView(e){let t=this.parser.json,r=t.bufferViews[e];if(!r.extensions||!r.extensions[this.name])return null;{let e=r.extensions[this.name],n=this.parser.getDependency("buffer",e.buffer),i=this.parser.options.meshoptDecoder;if(!i||!i.supported)if(!(t.extensionsRequired&&t.extensionsRequired.indexOf(this.name)>=0))return null;else throw Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return n.then(function(t){let r=e.byteOffset||0,n=e.byteLength||0,a=e.count,s=e.byteStride,o=new Uint8Array(t,r,n);return i.decodeGltfBufferAsync?i.decodeGltfBufferAsync(a,s,o,e.mode,e.filter).then(function(e){return e.buffer}):i.ready.then(function(){let t=new ArrayBuffer(a*s);return i.decodeGltfBuffer(new Uint8Array(t),a,s,o,e.mode,e.filter),t})})}}}class ex{constructor(e){this.name=ea.EXT_MESH_GPU_INSTANCING,this.parser=e}createNodeMesh(e){let t=this.parser.json,r=t.nodes[e];if(!r.extensions||!r.extensions[this.name]||void 0===r.mesh)return null;for(let e of t.meshes[r.mesh].primitives)if(e.mode!==eT.TRIANGLES&&e.mode!==eT.TRIANGLE_STRIP&&e.mode!==eT.TRIANGLE_FAN&&void 0!==e.mode)return null;let n=r.extensions[this.name].attributes,i=[],a={};for(let e in n)i.push(this.parser.getDependency("accessor",n[e]).then(t=>(a[e]=t,a[e])));return i.length<1?null:(i.push(this.parser.createNodeMesh(e)),Promise.all(i).then(e=>{let t=e.pop(),r=t.isGroup?t.children:[t],n=e[0].count,i=[];for(let e of r){let t=new $.Matrix4,r=new $.Vector3,s=new $.Quaternion,o=new $.Vector3(1,1,1),l=new $.InstancedMesh(e.geometry,e.material,n);for(let e=0;e<n;e++)a.TRANSLATION&&r.fromBufferAttribute(a.TRANSLATION,e),a.ROTATION&&s.fromBufferAttribute(a.ROTATION,e),a.SCALE&&o.fromBufferAttribute(a.SCALE,e),l.setMatrixAt(e,t.compose(r,s,o));for(let t in a)if("_COLOR_0"===t){let e=a[t];l.instanceColor=new $.InstancedBufferAttribute(e.array,e.itemSize,e.normalized)}else"TRANSLATION"!==t&&"ROTATION"!==t&&"SCALE"!==t&&e.geometry.setAttribute(t,a[t]);$.Object3D.prototype.copy.call(l,e),this.parser.assignFinalMaterial(l),i.push(l)}return t.isGroup?(t.clear(),t.add(...i),t):i[0]}))}}let eE="glTF";class eF{constructor(e){this.name=ea.KHR_BINARY_GLTF,this.content=null,this.body=null;const t=new DataView(e,0,12);if(this.header={magic:ee(new Uint8Array(e.slice(0,4))),version:t.getUint32(4,!0),length:t.getUint32(8,!0)},this.header.magic!==eE)throw Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");if(this.header.version<2)throw Error("THREE.GLTFLoader: Legacy binary file detected.");const r=this.header.length-12,n=new DataView(e,12);let i=0;for(;i<r;){const t=n.getUint32(i,!0);i+=4;const r=n.getUint32(i,!0);if(i+=4,0x4e4f534a===r){const r=new Uint8Array(e,12+i,t);this.content=ee(r)}else if(5130562===r){const r=12+i;this.body=e.slice(r,r+t)}i+=t}if(null===this.content)throw Error("THREE.GLTFLoader: JSON content not found.")}}class eb{constructor(e,t){if(!t)throw Error("THREE.GLTFLoader: No DRACOLoader instance provided.");this.name=ea.KHR_DRACO_MESH_COMPRESSION,this.json=e,this.dracoLoader=t,this.dracoLoader.preload()}decodePrimitive(e,t){let r=this.json,n=this.dracoLoader,i=e.extensions[this.name].bufferView,a=e.extensions[this.name].attributes,s={},o={},l={};for(let e in a)s[eP[e]||e.toLowerCase()]=a[e];for(let t in e.attributes){let n=eP[t]||t.toLowerCase();if(void 0!==a[t]){let i=r.accessors[e.attributes[t]],a=eS[i.componentType];l[n]=a.name,o[n]=!0===i.normalized}}return t.getDependency("bufferView",i).then(function(e){return new Promise(function(t,r){n.decodeDracoFile(e,function(e){for(let t in e.attributes){let r=e.attributes[t],n=o[t];void 0!==n&&(r.normalized=n)}t(e)},s,l,er,r)})})}}class ew{constructor(){this.name=ea.KHR_TEXTURE_TRANSFORM}extendTexture(e,t){return(void 0===t.texCoord||t.texCoord===e.channel)&&void 0===t.offset&&void 0===t.rotation&&void 0===t.scale||(e=e.clone(),void 0!==t.texCoord&&(e.channel=t.texCoord),void 0!==t.offset&&e.offset.fromArray(t.offset),void 0!==t.rotation&&(e.rotation=t.rotation),void 0!==t.scale&&e.repeat.fromArray(t.scale),e.needsUpdate=!0),e}}class eI{constructor(){this.name=ea.KHR_MESH_QUANTIZATION}}class eR extends $.Interpolant{constructor(e,t,r,n){super(e,t,r,n)}copySampleValue_(e){let t=this.resultBuffer,r=this.sampleValues,n=this.valueSize,i=e*n*3+n;for(let e=0;e!==n;e++)t[e]=r[i+e];return t}interpolate_(e,t,r,n){let i=this.resultBuffer,a=this.sampleValues,s=this.valueSize,o=2*s,l=3*s,c=n-t,u=(r-t)/c,d=u*u,h=d*u,f=e*l,A=f-l,p=-2*h+3*d,m=h-d,B=1-p,g=m-d+u;for(let e=0;e!==s;e++){let t=a[A+e+s],r=a[A+e+o]*c,n=a[f+e+s],l=a[f+e]*c;i[e]=B*t+g*r+p*n+m*l}return i}}let eG=new $.Quaternion;class eD extends eR{interpolate_(e,t,r,n){let i=super.interpolate_(e,t,r,n);return eG.fromArray(i).normalize().toArray(i),i}}let eT={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6},eS={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},eH={9728:$.NearestFilter,9729:$.LinearFilter,9984:$.NearestMipmapNearestFilter,9985:$.LinearMipmapNearestFilter,9986:$.NearestMipmapLinearFilter,9987:$.LinearMipmapLinearFilter},eL={33071:$.ClampToEdgeWrapping,33648:$.MirroredRepeatWrapping,10497:$.RepeatWrapping},eU={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},eP={POSITION:"position",NORMAL:"normal",TANGENT:"tangent",...M>=152?{TEXCOORD_0:"uv",TEXCOORD_1:"uv1",TEXCOORD_2:"uv2",TEXCOORD_3:"uv3"}:{TEXCOORD_0:"uv",TEXCOORD_1:"uv2"},COLOR_0:"color",WEIGHTS_0:"skinWeight",JOINTS_0:"skinIndex"},e_={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},eJ={CUBICSPLINE:void 0,LINEAR:$.InterpolateLinear,STEP:$.InterpolateDiscrete};function eO(e,t,r){for(let n in r.extensions)void 0===e[n]&&(t.userData.gltfExtensions=t.userData.gltfExtensions||{},t.userData.gltfExtensions[n]=r.extensions[n])}function ej(e,t){void 0!==t.extras&&("object"==typeof t.extras?Object.assign(e.userData,t.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+t.extras))}function ek(e){let t="",r=Object.keys(e).sort();for(let n=0,i=r.length;n<i;n++)t+=r[n]+":"+e[r[n]]+";";return t}function eN(e){switch(e){case Int8Array:return 1/127;case Uint8Array:return 1/255;case Int16Array:return 1/32767;case Uint16Array:return 1/65535;default:throw Error("THREE.GLTFLoader: Unsupported normalized accessor component type.")}}let eK=new $.Matrix4;class eQ{constructor(e={},t={}){this.json=e,this.extensions={},this.plugins={},this.options=t,this.cache=new ei,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 r=!1,n=!1,i=-1;"u">typeof navigator&&void 0!==navigator.userAgent&&(r=!0===/^((?!chrome|android).)*safari/i.test(navigator.userAgent),i=(n=navigator.userAgent.indexOf("Firefox")>-1)?navigator.userAgent.match(/Firefox\/([0-9]+)\./)[1]:-1),"u"<typeof createImageBitmap||r||n&&i<98?this.textureLoader=new $.TextureLoader(this.options.manager):this.textureLoader=new $.ImageBitmapLoader(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new $.FileLoader(this.options.manager),this.fileLoader.setResponseType("arraybuffer"),"use-credentials"===this.options.crossOrigin&&this.fileLoader.setWithCredentials(!0)}setExtensions(e){this.extensions=e}setPlugins(e){this.plugins=e}parse(e,t){let r=this,n=this.json,i=this.extensions;this.cache.removeAll(),this.nodeCache={},this._invokeAll(function(e){return e._markDefs&&e._markDefs()}),Promise.all(this._invokeAll(function(e){return e.beforeRoot&&e.beforeRoot()})).then(function(){return Promise.all([r.getDependencies("scene"),r.getDependencies("animation"),r.getDependencies("camera")])}).then(function(t){let a={scene:t[0][n.scene||0],scenes:t[0],animations:t[1],cameras:t[2],asset:n.asset,parser:r,userData:{}};return eO(i,a,n),ej(a,n),Promise.all(r._invokeAll(function(e){return e.afterRoot&&e.afterRoot(a)})).then(function(){for(let e of a.scenes)e.updateMatrixWorld();e(a)})}).catch(t)}_markDefs(){let e=this.json.nodes||[],t=this.json.skins||[],r=this.json.meshes||[];for(let r=0,n=t.length;r<n;r++){let n=t[r].joints;for(let t=0,r=n.length;t<r;t++)e[n[t]].isBone=!0}for(let t=0,n=e.length;t<n;t++){let n=e[t];void 0!==n.mesh&&(this._addNodeRef(this.meshCache,n.mesh),void 0!==n.skin&&(r[n.mesh].isSkinnedMesh=!0)),void 0!==n.camera&&this._addNodeRef(this.cameraCache,n.camera)}}_addNodeRef(e,t){void 0!==t&&(void 0===e.refs[t]&&(e.refs[t]=e.uses[t]=0),e.refs[t]++)}_getNodeRef(e,t,r){if(e.refs[t]<=1)return r;let n=r.clone(),i=(e,t)=>{let r=this.associations.get(e);for(let[n,a]of(null!=r&&this.associations.set(t,r),e.children.entries()))i(a,t.children[n])};return i(r,n),n.name+="_instance_"+e.uses[t]++,n}_invokeOne(e){let t=Object.values(this.plugins);t.push(this);for(let r=0;r<t.length;r++){let n=e(t[r]);if(n)return n}return null}_invokeAll(e){let t=Object.values(this.plugins);t.unshift(this);let r=[];for(let n=0;n<t.length;n++){let i=e(t[n]);i&&r.push(i)}return r}getDependency(e,t){let r=e+":"+t,n=this.cache.get(r);if(!n){switch(e){case"scene":n=this.loadScene(t);break;case"node":n=this._invokeOne(function(e){return e.loadNode&&e.loadNode(t)});break;case"mesh":n=this._invokeOne(function(e){return e.loadMesh&&e.loadMesh(t)});break;case"accessor":n=this.loadAccessor(t);break;case"bufferView":n=this._invokeOne(function(e){return e.loadBufferView&&e.loadBufferView(t)});break;case"buffer":n=this.loadBuffer(t);break;case"material":n=this._invokeOne(function(e){return e.loadMaterial&&e.loadMaterial(t)});break;case"texture":n=this._invokeOne(function(e){return e.loadTexture&&e.loadTexture(t)});break;case"skin":n=this.loadSkin(t);break;case"animation":n=this._invokeOne(function(e){return e.loadAnimation&&e.loadAnimation(t)});break;case"camera":n=this.loadCamera(t);break;default:if(!(n=this._invokeOne(function(r){return r!=this&&r.getDependency&&r.getDependency(e,t)})))throw Error("Unknown type: "+e)}this.cache.add(r,n)}return n}getDependencies(e){let t=this.cache.get(e);if(!t){let r=this;t=Promise.all((this.json[e+("mesh"===e?"es":"s")]||[]).map(function(t,n){return r.getDependency(e,n)})),this.cache.add(e,t)}return t}loadBuffer(e){let t=this.json.buffers[e],r=this.fileLoader;if(t.type&&"arraybuffer"!==t.type)throw Error("THREE.GLTFLoader: "+t.type+" buffer type is not supported.");if(void 0===t.uri&&0===e)return Promise.resolve(this.extensions[ea.KHR_BINARY_GLTF].body);let n=this.options;return new Promise(function(e,i){r.load($.LoaderUtils.resolveURL(t.uri,n.path),e,void 0,function(){i(Error('THREE.GLTFLoader: Failed to load buffer "'+t.uri+'".'))})})}loadBufferView(e){let t=this.json.bufferViews[e];return this.getDependency("buffer",t.buffer).then(function(e){let r=t.byteLength||0,n=t.byteOffset||0;return e.slice(n,n+r)})}loadAccessor(e){let t=this,r=this.json,n=this.json.accessors[e];if(void 0===n.bufferView&&void 0===n.sparse){let e=eU[n.type],t=eS[n.componentType],r=!0===n.normalized,i=new t(n.count*e);return Promise.resolve(new $.BufferAttribute(i,e,r))}let i=[];return void 0!==n.bufferView?i.push(this.getDependency("bufferView",n.bufferView)):i.push(null),void 0!==n.sparse&&(i.push(this.getDependency("bufferView",n.sparse.indices.bufferView)),i.push(this.getDependency("bufferView",n.sparse.values.bufferView))),Promise.all(i).then(function(e){let i,a,s=e[0],o=eU[n.type],l=eS[n.componentType],c=l.BYTES_PER_ELEMENT,u=c*o,d=n.byteOffset||0,h=void 0!==n.bufferView?r.bufferViews[n.bufferView].byteStride:void 0,f=!0===n.normalized;if(h&&h!==u){let e=Math.floor(d/h),r="InterleavedBuffer:"+n.bufferView+":"+n.componentType+":"+e+":"+n.count,u=t.cache.get(r);u||(i=new l(s,e*h,n.count*h/c),u=new $.InterleavedBuffer(i,h/c),t.cache.add(r,u)),a=new $.InterleavedBufferAttribute(u,o,d%h/c,f)}else i=null===s?new l(n.count*o):new l(s,d,n.count*o),a=new $.BufferAttribute(i,o,f);if(void 0!==n.sparse){let t=eU.SCALAR,r=eS[n.sparse.indices.componentType],i=n.sparse.indices.byteOffset||0,c=n.sparse.values.byteOffset||0,u=new r(e[1],i,n.sparse.count*t),d=new l(e[2],c,n.sparse.count*o);null!==s&&(a=new $.BufferAttribute(a.array.slice(),a.itemSize,a.normalized));for(let e=0,t=u.length;e<t;e++){let t=u[e];if(a.setX(t,d[e*o]),o>=2&&a.setY(t,d[e*o+1]),o>=3&&a.setZ(t,d[e*o+2]),o>=4&&a.setW(t,d[e*o+3]),o>=5)throw Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}}return a})}loadTexture(e){let t=this.json,r=this.options,n=t.textures[e].source,i=t.images[n],a=this.textureLoader;if(i.uri){let e=r.manager.getHandler(i.uri);null!==e&&(a=e)}return this.loadTextureImage(e,n,a)}loadTextureImage(e,t,r){let n=this,i=this.json,a=i.textures[e],s=i.images[t],o=(s.uri||s.bufferView)+":"+a.sampler;if(this.textureCache[o])return this.textureCache[o];let l=this.loadImageSource(t,r).then(function(t){t.flipY=!1,t.name=a.name||s.name||"",""===t.name&&"string"==typeof s.uri&&!1===s.uri.startsWith("data:image/")&&(t.name=s.uri);let r=(i.samplers||{})[a.sampler]||{};return t.magFilter=eH[r.magFilter]||$.LinearFilter,t.minFilter=eH[r.minFilter]||$.LinearMipmapLinearFilter,t.wrapS=eL[r.wrapS]||$.RepeatWrapping,t.wrapT=eL[r.wrapT]||$.RepeatWrapping,n.associations.set(t,{textures:e}),t}).catch(function(){return null});return this.textureCache[o]=l,l}loadImageSource(e,t){let r=this.json,n=this.options;if(void 0!==this.sourceCache[e])return this.sourceCache[e].then(e=>e.clone());let i=r.images[e],a=self.URL||self.webkitURL,s=i.uri||"",o=!1;if(void 0!==i.bufferView)s=this.getDependency("bufferView",i.bufferView).then(function(e){o=!0;let t=new Blob([e],{type:i.mimeType});return s=a.createObjectURL(t)});else if(void 0===i.uri)throw Error("THREE.GLTFLoader: Image "+e+" is missing URI and bufferView");let l=Promise.resolve(s).then(function(e){return new Promise(function(r,i){let a=r;!0===t.isImageBitmapLoader&&(a=function(e){let t=new $.Texture(e);t.needsUpdate=!0,r(t)}),t.load($.LoaderUtils.resolveURL(e,n.path),a,void 0,i)})}).then(function(e){var t;return!0===o&&a.revokeObjectURL(s),ej(e,i),e.userData.mimeType=i.mimeType||((t=i.uri).search(/\.jpe?g($|\?)/i)>0||0===t.search(/^data\:image\/jpeg/)?"image/jpeg":t.search(/\.webp($|\?)/i)>0||0===t.search(/^data\:image\/webp/)?"image/webp":"image/png"),e}).catch(function(e){throw console.error("THREE.GLTFLoader: Couldn't load texture",s),e});return this.sourceCache[e]=l,l}assignTexture(e,t,r,n){let i=this;return this.getDependency("texture",r.index).then(function(a){if(!a)return null;if(void 0!==r.texCoord&&r.texCoord>0&&((a=a.clone()).channel=r.texCoord),i.extensions[ea.KHR_TEXTURE_TRANSFORM]){let e=void 0!==r.extensions?r.extensions[ea.KHR_TEXTURE_TRANSFORM]:void 0;if(e){let t=i.associations.get(a);a=i.extensions[ea.KHR_TEXTURE_TRANSFORM].extendTexture(a,e),i.associations.set(a,t)}}return void 0!==n&&("number"==typeof n&&(n=3001===n?et:er),"colorSpace"in a?a.colorSpace=n:a.encoding=n===et?3001:3e3),e[t]=a,a})}assignFinalMaterial(e){let t=e.geometry,r=e.material,n=void 0===t.attributes.tangent,i=void 0!==t.attributes.color,a=void 0===t.attributes.normal;if(e.isPoints){let e="PointsMaterial:"+r.uuid,t=this.cache.get(e);t||(t=new $.PointsMaterial,$.Material.prototype.copy.call(t,r),t.color.copy(r.color),t.map=r.map,t.sizeAttenuation=!1,this.cache.add(e,t)),r=t}else if(e.isLine){let e="LineBasicMaterial:"+r.uuid,t=this.cache.get(e);t||(t=new $.LineBasicMaterial,$.Material.prototype.copy.call(t,r),t.color.copy(r.color),t.map=r.map,this.cache.add(e,t)),r=t}if(n||i||a){let e="ClonedMaterial:"+r.uuid+":";n&&(e+="derivative-tangents:"),i&&(e+="vertex-colors:"),a&&(e+="flat-shading:");let t=this.cache.get(e);t||(t=r.clone(),i&&(t.vertexColors=!0),a&&(t.flatShading=!0),n&&(t.normalScale&&(t.normalScale.y*=-1),t.clearcoatNormalScale&&(t.clearcoatNormalScale.y*=-1)),this.cache.add(e,t),this.associations.set(t,this.associations.get(r))),r=t}e.material=r}getMaterialType(){return $.MeshStandardMaterial}loadMaterial(e){let t,r=this,n=this.json,i=this.extensions,a=n.materials[e],s={},o=a.extensions||{},l=[];if(o[ea.KHR_MATERIALS_UNLIT]){let e=i[ea.KHR_MATERIALS_UNLIT];t=e.getMaterialType(),l.push(e.extendParams(s,a,r))}else{let n=a.pbrMetallicRoughness||{};if(s.color=new $.Color(1,1,1),s.opacity=1,Array.isArray(n.baseColorFactor)){let e=n.baseColorFactor;s.color.setRGB(e[0],e[1],e[2],er),s.opacity=e[3]}void 0!==n.baseColorTexture&&l.push(r.assignTexture(s,"map",n.baseColorTexture,et)),s.metalness=void 0!==n.metallicFactor?n.metallicFactor:1,s.roughness=void 0!==n.roughnessFactor?n.roughnessFactor:1,void 0!==n.metallicRoughnessTexture&&(l.push(r.assignTexture(s,"metalnessMap",n.metallicRoughnessTexture)),l.push(r.assignTexture(s,"roughnessMap",n.metallicRoughnessTexture))),t=this._invokeOne(function(t){return t.getMaterialType&&t.getMaterialType(e)}),l.push(Promise.all(this._invokeAll(function(t){return t.extendMaterialParams&&t.extendMaterialParams(e,s)})))}!0===a.doubleSided&&(s.side=$.DoubleSide);let c=a.alphaMode||"OPAQUE";if("BLEND"===c?(s.transparent=!0,s.depthWrite=!1):(s.transparent=!1,"MASK"===c&&(s.alphaTest=void 0!==a.alphaCutoff?a.alphaCutoff:.5)),void 0!==a.normalTexture&&t!==$.MeshBasicMaterial&&(l.push(r.assignTexture(s,"normalMap",a.normalTexture)),s.normalScale=new $.Vector2(1,1),void 0!==a.normalTexture.scale)){let e=a.normalTexture.scale;s.normalScale.set(e,e)}if(void 0!==a.occlusionTexture&&t!==$.MeshBasicMaterial&&(l.push(r.assignTexture(s,"aoMap",a.occlusionTexture)),void 0!==a.occlusionTexture.strength&&(s.aoMapIntensity=a.occlusionTexture.strength)),void 0!==a.emissiveFactor&&t!==$.MeshBasicMaterial){let e=a.emissiveFactor;s.emissive=new $.Color().setRGB(e[0],e[1],e[2],er)}return void 0!==a.emissiveTexture&&t!==$.MeshBasicMaterial&&l.push(r.assignTexture(s,"emissiveMap",a.emissiveTexture,et)),Promise.all(l).then(function(){let n=new t(s);return a.name&&(n.name=a.name),ej(n,a),r.associations.set(n,{materials:e}),a.extensions&&eO(i,n,a),n})}createUniqueName(e){let t=$.PropertyBinding.sanitizeNodeName(e||"");return t in this.nodeNamesUsed?t+"_"+ ++this.nodeNamesUsed[t]:(this.nodeNamesUsed[t]=0,t)}loadGeometries(e){let t=this,r=this.extensions,n=this.primitiveCache,i=[];for(let a=0,s=e.length;a<s;a++){let s=e[a],o=function(e){let t,r=e.extensions&&e.extensions[ea.KHR_DRACO_MESH_COMPRESSION];if(t=r?"draco:"+r.bufferView+":"+r.indices+":"+ek(r.attributes):e.indices+":"+ek(e.attributes)+":"+e.mode,void 0!==e.targets)for(let r=0,n=e.targets.length;r<n;r++)t+=":"+ek(e.targets[r]);return t}(s),l=n[o];if(l)i.push(l.promise);else{let e;e=s.extensions&&s.extensions[ea.KHR_DRACO_MESH_COMPRESSION]?function(e){return r[ea.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(e,t).then(function(r){return eX(r,e,t)})}(s):eX(new $.BufferGeometry,s,t),n[o]={primitive:s,promise:e},i.push(e)}}return Promise.all(i)}loadMesh(e){let t=this,r=this.json,n=this.extensions,i=r.meshes[e],a=i.primitives,s=[];for(let e=0,t=a.length;e<t;e++){var o;let t=void 0===a[e].material?(void 0===(o=this.cache).DefaultMaterial&&(o.DefaultMaterial=new $.MeshStandardMaterial({color:0xffffff,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:$.FrontSide})),o.DefaultMaterial):this.getDependency("material",a[e].material);s.push(t)}return s.push(t.loadGeometries(a)),Promise.all(s).then(function(r){let s=r.slice(0,r.length-1),o=r[r.length-1],l=[];for(let r=0,c=o.length;r<c;r++){let c,u=o[r],d=a[r],f=s[r];if(d.mode===eT.TRIANGLES||d.mode===eT.TRIANGLE_STRIP||d.mode===eT.TRIANGLE_FAN||void 0===d.mode)!0===(c=!0===i.isSkinnedMesh?new $.SkinnedMesh(u,f):new $.Mesh(u,f)).isSkinnedMesh&&c.normalizeSkinWeights(),d.mode===eT.TRIANGLE_STRIP?c.geometry=h(c.geometry,$.TriangleStripDrawMode):d.mode===eT.TRIANGLE_FAN&&(c.geometry=h(c.geometry,$.TriangleFanDrawMode));else if(d.mode===eT.LINES)c=new $.LineSegments(u,f);else if(d.mode===eT.LINE_STRIP)c=new $.Line(u,f);else if(d.mode===eT.LINE_LOOP)c=new $.LineLoop(u,f);else if(d.mode===eT.POINTS)c=new $.Points(u,f);else throw Error("THREE.GLTFLoader: Primitive mode unsupported: "+d.mode);Object.keys(c.geometry.morphAttributes).length>0&&function(e,t){if(e.updateMorphTargets(),void 0!==t.weights)for(let r=0,n=t.weights.length;r<n;r++)e.morphTargetInfluences[r]=t.weights[r];if(t.extras&&Array.isArray(t.extras.targetNames)){let r=t.extras.targetNames;if(e.morphTargetInfluences.length===r.length){e.morphTargetDictionary={};for(let t=0,n=r.length;t<n;t++)e.morphTargetDictionary[r[t]]=t}else console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.")}}(c,i),c.name=t.createUniqueName(i.name||"mesh_"+e),ej(c,i),d.extensions&&eO(n,c,d),t.assignFinalMaterial(c),l.push(c)}for(let r=0,n=l.length;r<n;r++)t.associations.set(l[r],{meshes:e,primitives:r});if(1===l.length)return i.extensions&&eO(n,l[0],i),l[0];let c=new $.Group;i.extensions&&eO(n,c,i),t.associations.set(c,{meshes:e});for(let e=0,t=l.length;e<t;e++)c.add(l[e]);return c})}loadCamera(e){let t,r=this.json.cameras[e],n=r[r.type];return n?("perspective"===r.type?t=new $.PerspectiveCamera($.MathUtils.radToDeg(n.yfov),n.aspectRatio||1,n.znear||1,n.zfar||2e6):"orthographic"===r.type&&(t=new $.OrthographicCamera(-n.xmag,n.xmag,n.ymag,-n.ymag,n.znear,n.zfar)),r.name&&(t.name=this.createUniqueName(r.name)),ej(t,r),Promise.resolve(t)):void console.warn("THREE.GLTFLoader: Missing camera parameters.")}loadSkin(e){let t=this.json.skins[e],r=[];for(let e=0,n=t.joints.length;e<n;e++)r.push(this._loadNodeShallow(t.joints[e]));return void 0!==t.inverseBindMatrices?r.push(this.getDependency("accessor",t.inverseBindMatrices)):r.push(null),Promise.all(r).then(function(e){let r=e.pop(),n=[],i=[];for(let a=0,s=e.length;a<s;a++){let s=e[a];if(s){n.push(s);let e=new $.Matrix4;null!==r&&e.fromArray(r.array,16*a),i.push(e)}else console.warn('THREE.GLTFLoader: Joint "%s" could not be found.',t.joints[a])}return new $.Skeleton(n,i)})}loadAnimation(e){let t=this.json,r=this,n=t.animations[e],i=n.name?n.name:"animation_"+e,a=[],s=[],o=[],l=[],c=[];for(let e=0,t=n.channels.length;e<t;e++){let t=n.channels[e],r=n.samplers[t.sampler],i=t.target,u=i.node,d=void 0!==n.parameters?n.parameters[r.input]:r.input,h=void 0!==n.parameters?n.parameters[r.output]:r.output;void 0!==i.node&&(a.push(this.getDependency("node",u)),s.push(this.getDependency("accessor",d)),o.push(this.getDependency("accessor",h)),l.push(r),c.push(i))}return Promise.all([Promise.all(a),Promise.all(s),Promise.all(o),Promise.all(l),Promise.all(c)]).then(function(e){let t=e[0],n=e[1],a=e[2],s=e[3],o=e[4],l=[];for(let e=0,i=t.length;e<i;e++){let i=t[e],c=n[e],u=a[e],d=s[e],h=o[e];if(void 0===i)continue;i.updateMatrix&&i.updateMatrix();let f=r._createAnimationTracks(i,c,u,d,h);if(f)for(let e=0;e<f.length;e++)l.push(f[e])}return new $.AnimationClip(i,void 0,l)})}createNodeMesh(e){let t=this.json,r=this,n=t.nodes[e];return void 0===n.mesh?null:r.getDependency("mesh",n.mesh).then(function(e){let t=r._getNodeRef(r.meshCache,n.mesh,e);return void 0!==n.weights&&t.traverse(function(e){if(e.isMesh)for(let t=0,r=n.weights.length;t<r;t++)e.morphTargetInfluences[t]=n.weights[t]}),t})}loadNode(e){let t=this.json.nodes[e],r=this._loadNodeShallow(e),n=[],i=t.children||[];for(let e=0,t=i.length;e<t;e++)n.push(this.getDependency("node",i[e]));let a=void 0===t.skin?Promise.resolve(null):this.getDependency("skin",t.skin);return Promise.all([r,Promise.all(n),a]).then(function(e){let t=e[0],r=e[1],n=e[2];null!==n&&t.traverse(function(e){e.isSkinnedMesh&&e.bind(n,eK)});for(let e=0,n=r.length;e<n;e++)t.add(r[e]);return t})}_loadNodeShallow(e){let t=this.json,r=this.extensions,n=this;if(void 0!==this.nodeCache[e])return this.nodeCache[e];let i=t.nodes[e],a=i.name?n.createUniqueName(i.name):"",s=[],o=n._invokeOne(function(t){return t.createNodeMesh&&t.createNodeMesh(e)});return o&&s.push(o),void 0!==i.camera&&s.push(n.getDependency("camera",i.camera).then(function(e){return n._getNodeRef(n.cameraCache,i.camera,e)})),n._invokeAll(function(t){return t.createNodeAttachment&&t.createNodeAttachment(e)}).forEach(function(e){s.push(e)}),this.nodeCache[e]=Promise.all(s).then(function(t){let s;if((s=!0===i.isBone?new $.Bone:t.length>1?new $.Group:1===t.length?t[0]:new $.Object3D)!==t[0])for(let e=0,r=t.length;e<r;e++)s.add(t[e]);if(i.name&&(s.userData.name=i.name,s.name=a),ej(s,i),i.extensions&&eO(r,s,i),void 0!==i.matrix){let e=new $.Matrix4;e.fromArray(i.matrix),s.applyMatrix4(e)}else void 0!==i.translation&&s.position.fromArray(i.translation),void 0!==i.rotation&&s.quaternion.fromArray(i.rotation),void 0!==i.scale&&s.scale.fromArray(i.scale);return n.associations.has(s)||n.associations.set(s,{}),n.associations.get(s).nodes=e,s}),this.nodeCache[e]}loadScene(e){let t=this.extensions,r=this.json.scenes[e],n=this,i=new $.Group;r.name&&(i.name=n.createUniqueName(r.name)),ej(i,r),r.extensions&&eO(t,i,r);let a=r.nodes||[],s=[];for(let e=0,t=a.length;e<t;e++)s.push(n.getDependency("node",a[e]));return Promise.all(s).then(function(e){for(let t=0,r=e.length;t<r;t++)i.add(e[t]);return n.associations=(e=>{let t=new Map;for(let[e,r]of n.associations)(e instanceof $.Material||e instanceof $.Texture)&&t.set(e,r);return e.traverse(e=>{let r=n.associations.get(e);null!=r&&t.set(e,r)}),t})(i),i})}_createAnimationTracks(e,t,r,n,i){let a,s=[],o=e.name?e.name:e.uuid,l=[];switch(e_[i.path]===e_.weights?e.traverse(function(e){e.morphTargetInfluences&&l.push(e.name?e.name:e.uuid)}):l.push(o),e_[i.path]){case e_.weights:a=$.NumberKeyframeTrack;break;case e_.rotation:a=$.QuaternionKeyframeTrack;break;case e_.position:case e_.scale:a=$.VectorKeyframeTrack;break;default:a=1===r.itemSize?$.NumberKeyframeTrack:$.VectorKeyframeTrack}let c=void 0!==n.interpolation?eJ[n.interpolation]:$.InterpolateLinear,u=this._getArrayFromAccessor(r);for(let e=0,r=l.length;e<r;e++){let r=new a(l[e]+"."+e_[i.path],t.array,u,c);"CUBICSPLINE"===n.interpolation&&this._createCubicSplineTrackInterpolant(r),s.push(r)}return s}_getArrayFromAccessor(e){let t=e.array;if(e.normalized){let e=eN(t.constructor),r=new Float32Array(t.length);for(let n=0,i=t.length;n<i;n++)r[n]=t[n]*e;t=r}return t}_createCubicSplineTrackInterpolant(e){e.createInterpolant=function(e){return new(this instanceof $.QuaternionKeyframeTrack?eD:eR)(this.times,this.values,this.getValueSize()/3,e)},e.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0}}function eX(e,t,r){let n=t.attributes,i=[];for(let t in n){let a=eP[t]||t.toLowerCase();a in e.attributes||i.push(function(t,n){return r.getDependency("accessor",t).then(function(t){e.setAttribute(n,t)})}(n[t],a))}if(void 0!==t.indices&&!e.index){let n=r.getDependency("accessor",t.indices).then(function(t){e.setIndex(t)});i.push(n)}return ej(e,t),!function(e,t,r){let n=t.attributes,i=new $.Box3;if(void 0===n.POSITION)return;{let e=r.json.accessors[n.POSITION],t=e.min,a=e.max;if(void 0===t||void 0===a)return console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");if(i.set(new $.Vector3(t[0],t[1],t[2]),new $.Vector3(a[0],a[1],a[2])),e.normalized){let t=eN(eS[e.componentType]);i.min.multiplyScalar(t),i.max.multiplyScalar(t)}}let a=t.targets;if(void 0!==a){let e=new $.Vector3,t=new $.Vector3;for(let n=0,i=a.length;n<i;n++){let i=a[n];if(void 0!==i.POSITION){let n=r.json.accessors[i.POSITION],a=n.min,s=n.max;if(void 0!==a&&void 0!==s){if(t.setX(Math.max(Math.abs(a[0]),Math.abs(s[0]))),t.setY(Math.max(Math.abs(a[1]),Math.abs(s[1]))),t.setZ(Math.max(Math.abs(a[2]),Math.abs(s[2]))),n.normalized){let e=eN(eS[n.componentType]);t.multiplyScalar(e)}e.max(t)}else console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.")}}i.expandByVector(e)}e.boundingBox=i;let s=new $.Sphere;i.getCenter(s.center),s.radius=i.min.distanceTo(i.max)/2,e.boundingSphere=s}(e,t,r),Promise.all(i).then(function(){return void 0!==t.targets?function(e,t,r){let n=!1,i=!1,a=!1;for(let e=0,r=t.length;e<r;e++){let r=t[e];if(void 0!==r.POSITION&&(n=!0),void 0!==r.NORMAL&&(i=!0),void 0!==r.COLOR_0&&(a=!0),n&&i&&a)break}if(!n&&!i&&!a)return Promise.resolve(e);let s=[],o=[],l=[];for(let c=0,u=t.length;c<u;c++){let u=t[c];if(n){let t=void 0!==u.POSITION?r.getDependency("accessor",u.POSITION):e.attributes.position;s.push(t)}if(i){let t=void 0!==u.NORMAL?r.getDependency("accessor",u.NORMAL):e.attributes.normal;o.push(t)}if(a){let t=void 0!==u.COLOR_0?r.getDependency("accessor",u.COLOR_0):e.attributes.color;l.push(t)}}return Promise.all([Promise.all(s),Promise.all(o),Promise.all(l)]).then(function(t){let r=t[0],s=t[1],o=t[2];return n&&(e.morphAttributes.position=r),i&&(e.morphAttributes.normal=s),a&&(e.morphAttributes.color=o),e.morphTargetsRelative=!0,e})}(e,t.targets,r):e})}var eY=d;let eW=new WeakMap;class ez extends eY.Loader{constructor(e){super(e),this.decoderPath="",this.decoderConfig={},this.decoderBinary=null,this.decoderPending=null,this.workerLimit=4,this.workerPool=[],this.workerNextTaskID=1,this.workerSourceURL="",this.defaultAttributeIDs={position:"POSITION",normal:"NORMAL",color:"COLOR",uv:"TEX_COORD"},this.defaultAttributeTypes={position:"Float32Array",normal:"Float32Array",color:"Float32Array",uv:"Float32Array"}}setDecoderPath(e){return this.decoderPath=e,this}setDecoderConfig(e){return this.decoderConfig=e,this}setWorkerLimit(e){return this.workerLimit=e,this}load(e,t,r,n){let i=new eY.FileLoader(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),i.load(e,e=>{let r={attributeIDs:this.defaultAttributeIDs,attributeTypes:this.defaultAttributeTypes,useUniqueIDs:!1};this.decodeGeometry(e,r).then(t).catch(n)},r,n)}decodeDracoFile(e,t,r,n){let i={attributeIDs:r||this.defaultAttributeIDs,attributeTypes:n||this.defaultAttributeTypes,useUniqueIDs:!!r};this.decodeGeometry(e,i).then(t)}decodeGeometry(e,t){let r;for(let e in t.attributeTypes){let r=t.attributeTypes[e];void 0!==r.BYTES_PER_ELEMENT&&(t.attributeTypes[e]=r.name)}let n=JSON.stringify(t);if(eW.has(e)){let t=eW.get(e);if(t.key===n)return t.promise;if(0===e.byteLength)throw Error("THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.")}let i=this.workerNextTaskID++,a=e.byteLength,s=this._getWorker(i,a).then(n=>(r=n,new Promise((n,a)=>{r._callbacks[i]={resolve:n,reject:a},r.postMessage({type:"decode",id:i,taskConfig:t,buffer:e},[e])}))).then(e=>this._createGeometry(e.geometry));return s.catch(()=>!0).then(()=>{r&&i&&this._releaseTask(r,i)}),eW.set(e,{key:n,promise:s}),s}_createGeometry(e){let t=new eY.BufferGeometry;e.index&&t.setIndex(new eY.BufferAttribute(e.index.array,1));for(let r=0;r<e.attributes.length;r++){let n=e.attributes[r],i=n.name,a=n.array,s=n.itemSize;t.setAttribute(i,new eY.BufferAttribute(a,s))}return t}_loadLibrary(e,t){let r=new eY.FileLoader(this.manager);return r.setPath(this.decoderPath),r.setResponseType(t),r.setWithCredentials(this.withCredentials),new Promise((t,n)=>{r.load(e,t,void 0,n)})}preload(){return this._initDecoder(),this}_initDecoder(){if(this.decoderPending)return this.decoderPending;let e="object"!=typeof WebAssembly||"js"===this.decoderConfig.type,t=[];return e?t.push(this._loadLibrary("draco_decoder.js","text")):(t.push(this._loadLibrary("draco_wasm_wrapper.js","text")),t.push(this._loadLibrary("draco_decoder.wasm","arraybuffer"))),this.decoderPending=Promise.all(t).then(t=>{let r=t[0];e||(this.decoderConfig.wasmBinary=t[1]);let n=eV.toString(),i=["/* draco decoder */",r,"\n/* worker */",n.substring(n.indexOf("{")+1,n.lastIndexOf("}"))].join("\n");this.workerSourceURL=URL.createObjectURL(new Blob([i]))}),this.decoderPending}_getWorker(e,t){return this._initDecoder().then(()=>{if(this.workerPool.length<this.workerLimit){let e=new Worker(this.workerSourceURL);e._callbacks={},e._taskCosts={},e._taskLoad=0,e.postMessage({type:"init",decoderConfig:this.decoderConfig}),e.onmessage=function(t){let r=t.data;switch(r.type){case"decode":e._callbacks[r.id].resolve(r);break;case"error":e._callbacks[r.id].reject(r);break;default:console.error('THREE.DRACOLoader: Unexpected message, "'+r.type+'"')}},this.workerPool.push(e)}else this.workerPool.sort(function(e,t){return e._taskLoad>t._taskLoad?-1:1});let r=this.workerPool[this.workerPool.length-1];return r._taskCosts[e]=t,r._taskLoad+=t,r})}_releaseTask(e,t){e._taskLoad-=e._taskCosts[t],delete e._callbacks[t],delete e._taskCosts[t]}debug(){console.log("Task load: ",this.workerPool.map(e=>e._taskLoad))}dispose(){for(let e=0;e<this.workerPool.length;++e)this.workerPool[e].terminate();return this.workerPool.length=0,this}}function eV(){let e,t;onmessage=function(r){let n=r.data;switch(n.type){case"init":e=n.decoderConfig,t=new Promise(function(t){e.onModuleLoaded=function(e){t({draco:e})},DracoDecoderModule(e)});break;case"decode":let i=n.buffer,a=n.taskConfig;t.then(e=>{let t=e.draco,r=new t.Decoder,s=new t.DecoderBuffer;s.Init(new Int8Array(i),i.byteLength);try{let e=function(e,t,r,n){var i,a,s;let o,l,c,u,d,h,f=n.attributeIDs,A=n.attributeTypes,p=t.GetEncodedGeometryType(r);if(p===e.TRIANGULAR_MESH)d=new e.Mesh,h=t.DecodeBufferToMesh(r,d);else if(p===e.POINT_CLOUD)d=new e.PointCloud,h=t.DecodeBufferToPointCloud(r,d);else throw Error("THREE.DRACOLoader: Unexpected geometry type.");if(!h.ok()||0===d.ptr)throw Error("THREE.DRACOLoader: Decoding failed: "+h.error_msg());let m={index:null,attributes:[]};for(let r in f){let i,a,s=self[A[r]];if(n.useUniqueIDs)a=f[r],i=t.GetAttributeByUniqueId(d,a);else{if(-1===(a=t.GetAttributeId(d,e[f[r]])))continue;i=t.GetAttribute(d,a)}m.attributes.push(function(e,t,r,n,i,a){let s=a.num_components(),o=r.num_points()*s,l=o*i.BYTES_PER_ELEMENT,c=function(e,t){switch(t){case Float32Array:return e.DT_FLOAT32;case Int8Array:return e.DT_INT8;case Int16Array:return e.DT_INT16;case Int32Array:return e.DT_INT32;case Uint8Array:return e.DT_UINT8;case Uint16Array:return e.DT_UINT16;case Uint32Array:return e.DT_UINT32}}(e,i),u=e._malloc(l);t.GetAttributeDataArrayForAllPoints(r,a,c,l,u);let d=new i(e.HEAPF32.buffer,u,o).slice();return e._free(u),{name:n,array:d,itemSize:s}}(e,t,d,r,s,i))}return p===e.TRIANGULAR_MESH&&(i=e,a=t,s=d,o=3*s.num_faces(),l=4*o,c=i._malloc(l),a.GetTrianglesUInt32Array(s,l,c),u=new Uint32Array(i.HEAPF32.buffer,c,o).slice(),i._free(c),m.index={array:u,itemSize:1}),e.destroy(d),m}(t,r,s,a),i=e.attributes.map(e=>e.array.buffer);e.index&&i.push(e.index.array.buffer),self.postMessage({type:"decode",id:n.id,geometry:e},i)}catch(e){console.error(e),self.postMessage({type:"error",id:n.id,error:e.message})}finally{t.destroy(s),t.destroy(r)}})}}}var eZ=e.i(60602);let eq=function(e){let t=new Map,r=new Map,n=e.clone();return function e(t,r,n){n(t,r);for(let i=0;i<t.children.length;i++)e(t.children[i],r.children[i],n)}(e,n,function(e,n){t.set(n,e),r.set(e,n)}),n.traverse(function(e){if(!e.isSkinnedMesh)return;let n=t.get(e),i=n.skeleton.bones;e.skeleton=n.skeleton.clone(),e.bindMatrix.copy(n.bindMatrix),e.skeleton.bones=i.map(function(e){return r.get(e)}),e.bind(e.skeleton,e.bindMatrix)}),n},e$=s.forwardRef(({isChild:e=!1,object:t,children:r,deep:n,castShadow:i,receiveShadow:a,inject:o,keys:l,...c},h)=>{let f={keys:l,deep:n,inject:o,castShadow:i,receiveShadow:a};if(Array.isArray(t=s.useMemo(()=>{if(!1===e&&!Array.isArray(t)){let e=!1;if(t.traverse(t=>{t.isSkinnedMesh&&(e=!0)}),e)return eq(t)}return t},[t,e])))return s.createElement("group",(0,u.default)({},c,{ref:h}),t.map(e=>s.createElement(e$,(0,u.default)({key:e.uuid,object:e},f))),r);let{children:A,...p}=function(e,{keys:t=["near","far","color","distance","decay","penumbra","angle","intensity","skeleton","visible","castShadow","receiveShadow","morphTargetDictionary","morphTargetInfluences","name","geometry","material","position","rotation","scale","up","userData","bindMode","bindMatrix","bindMatrixInverse","skeleton"],deep:r,inject:n,castShadow:i,receiveShadow:a}){let o={};for(let r of t)o[r]=e[r];return r&&(o.geometry&&"materialsOnly"!==r&&(o.geometry=o.geometry.clone()),o.material&&"geometriesOnly"!==r&&(o.material=o.material.clone())),n&&(o="function"==typeof n?{...o,children:n(e)}:s.isValidElement(n)?{...o,children:n}:{...o,...n}),e instanceof d.Mesh&&(i&&(o.castShadow=!0),a&&(o.receiveShadow=!0)),o}(t,f),m=t.type[0].toLowerCase()+t.type.slice(1);return s.createElement(m,(0,u.default)({},p,c,{ref:h}),t.children.map(e=>"Bone"===e.type?s.createElement("primitive",(0,u.default)({key:e.uuid,object:e},f)):s.createElement(e$,(0,u.default)({key:e.uuid,object:e},f,{isChild:!0}))),r,A)}),e0=null,e1="https://www.gstatic.com/draco/versioned/decoders/1.5.5/";function e2(e=!0,t=!0,r){return i=>{r&&r(i),e&&(e0||(e0=new ez),e0.setDecoderPath("string"==typeof e?e:e1),i.setDRACOLoader(e0)),t&&i.setMeshoptDecoder((()=>{let e;if(n)return n;let t=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]),r=new Uint8Array([32,0,65,253,3,1,2,34,4,106,6,5,11,8,7,20,13,33,12,16,128,9,116,64,19,113,127,15,10,21,22,14,255,66,24,54,136,107,18,23,192,26,114,118,132,17,77,101,130,144,27,87,131,44,45,74,156,154,70,167]);if("object"!=typeof WebAssembly)return{supported:!1};let i="B9h9z9tFBBBF8fL9gBB9gLaaaaaFa9gEaaaB9gFaFa9gEaaaFaEMcBFFFGGGEIIILF9wFFFLEFBFKNFaFCx/IFMO/LFVK9tv9t9vq95GBt9f9f939h9z9t9f9j9h9s9s9f9jW9vq9zBBp9tv9z9o9v9wW9f9kv9j9v9kv9WvqWv94h919m9mvqBF8Z9tv9z9o9v9wW9f9kv9j9v9kv9J9u9kv94h919m9mvqBGy9tv9z9o9v9wW9f9kv9j9v9kv9J9u9kv949TvZ91v9u9jvBEn9tv9z9o9v9wW9f9kv9j9v9kv69p9sWvq9P9jWBIi9tv9z9o9v9wW9f9kv9j9v9kv69p9sWvq9R919hWBLn9tv9z9o9v9wW9f9kv9j9v9kv69p9sWvq9F949wBKI9z9iqlBOc+x8ycGBM/qQFTa8jUUUUBCU/EBlHL8kUUUUBC9+RKGXAGCFJAI9LQBCaRKAE2BBC+gF9HQBALAEAIJHOAGlAGTkUUUBRNCUoBAG9uC/wgBZHKCUGAKCUG9JyRVAECFJRICBRcGXEXAcAF9PQFAVAFAclAcAVJAF9JyRMGXGXAG9FQBAMCbJHKC9wZRSAKCIrCEJCGrRQANCUGJRfCBRbAIRTEXGXAOATlAQ9PQBCBRISEMATAQJRIGXAS9FQBCBRtCBREEXGXAOAIlCi9PQBCBRISLMANCU/CBJAEJRKGXGXGXGXGXATAECKrJ2BBAtCKZrCEZfIBFGEBMAKhB83EBAKCNJhB83EBSEMAKAI2BIAI2BBHmCKrHYAYCE6HYy86BBAKCFJAICIJAYJHY2BBAmCIrCEZHPAPCE6HPy86BBAKCGJAYAPJHY2BBAmCGrCEZHPAPCE6HPy86BBAKCEJAYAPJHY2BBAmCEZHmAmCE6Hmy86BBAKCIJAYAmJHY2BBAI2BFHmCKrHPAPCE6HPy86BBAKCLJAYAPJHY2BBAmCIrCEZHPAPCE6HPy86BBAKCKJAYAPJHY2BBAmCGrCEZHPAPCE6HPy86BBAKCOJAYAPJHY2BBAmCEZHmAmCE6Hmy86BBAKCNJAYAmJHY2BBAI2BGHmCKrHPAPCE6HPy86BBAKCVJAYAPJHY2BBAmCIrCEZHPAPCE6HPy86BBAKCcJAYAPJHY2BBAmCGrCEZHPAPCE6HPy86BBAKCMJAYAPJHY2BBAmCEZHmAmCE6Hmy86BBAKCSJAYAmJHm2BBAI2BEHICKrHYAYCE6HYy86BBAKCQJAmAYJHm2BBAICIrCEZHYAYCE6HYy86BBAKCfJAmAYJHm2BBAICGrCEZHYAYCE6HYy86BBAKCbJAmAYJHK2BBAICEZHIAICE6HIy86BBAKAIJRISGMAKAI2BNAI2BBHmCIrHYAYCb6HYy86BBAKCFJAICNJAYJHY2BBAmCbZHmAmCb6Hmy86BBAKCGJAYAmJHm2BBAI2BFHYCIrHPAPCb6HPy86BBAKCEJAmAPJHm2BBAYCbZHYAYCb6HYy86BBAKCIJAmAYJHm2BBAI2BGHYCIrHPAPCb6HPy86BBAKCLJAmAPJHm2BBAYCbZHYAYCb6HYy86BBAKCKJAmAYJHm2BBAI2BEHYCIrHPAPCb6HPy86BBAKCOJAmAPJHm2BBAYCbZHYAYCb6HYy86BBAKCNJAmAYJHm2BBAI2BIHYCIrHPAPCb6HPy86BBAKCVJAmAPJHm2BBAYCbZHYAYCb6HYy86BBAKCcJAmAYJHm2BBAI2BLHYCIrHPAPCb6HPy86BBAKCMJAmAPJHm2BBAYCbZHYAYCb6HYy86BBAKCSJAmAYJHm2BBAI2BKHYCIrHPAPCb6HPy86BBAKCQJAmAPJHm2BBAYCbZHYAYCb6HYy86BBAKCfJAmAYJHm2BBAI2BOHICIrHYAYCb6HYy86BBAKCbJAmAYJHK2BBAICbZHIAICb6HIy86BBAKAIJRISFMAKAI8pBB83BBAKCNJAICNJ8pBB83BBAICTJRIMAtCGJRtAECTJHEAS9JQBMMGXAIQBCBRISEMGXAM9FQBANAbJ2BBRtCBRKAfREEXAEANCU/CBJAKJ2BBHTCFrCBATCFZl9zAtJHt86BBAEAGJREAKCFJHKAM9HQBMMAfCFJRfAIRTAbCFJHbAG9HQBMMABAcAG9sJANCUGJAMAG9sTkUUUBpANANCUGJAMCaJAG9sJAGTkUUUBpMAMCBAIyAcJRcAIQBMC9+RKSFMCBC99AOAIlAGCAAGCA9Ly6yRKMALCU/EBJ8kUUUUBAKM+OmFTa8jUUUUBCoFlHL8kUUUUBC9+RKGXAFCE9uHOCtJAI9LQBCaRKAE2BBHNC/wFZC/gF9HQBANCbZHVCF9LQBALCoBJCgFCUFT+JUUUBpALC84Jha83EBALC8wJha83EBALC8oJha83EBALCAJha83EBALCiJha83EBALCTJha83EBALha83ENALha83EBAEAIJC9wJRcAECFJHNAOJRMGXAF9FQBCQCbAVCF6yRSABRECBRVCBRQCBRfCBRICBRKEXGXAMAcuQBC9+RKSEMGXGXAN2BBHOC/vF9LQBALCoBJAOCIrCa9zAKJCbZCEWJHb8oGIRTAb8oGBRtGXAOCbZHbAS9PQBALAOCa9zAIJCbZCGWJ8oGBAVAbyROAb9FRbGXGXAGCG9HQBABAt87FBABCIJAO87FBABCGJAT87FBSFMAEAtjGBAECNJAOjGBAECIJATjGBMAVAbJRVALCoBJAKCEWJHmAOjGBAmATjGIALAICGWJAOjGBALCoBJAKCFJCbZHKCEWJHTAtjGBATAOjGIAIAbJRIAKCFJRKSGMGXGXAbCb6QBAQAbJAbC989zJCFJRQSFMAM1BBHbCgFZROGXGXAbCa9MQBAMCFJRMSFMAM1BFHbCgBZCOWAOCgBZqROGXAbCa9MQBAMCGJRMSFMAM1BGHbCgBZCfWAOqROGXAbCa9MQBAMCEJRMSFMAM1BEHbCgBZCdWAOqROGXAbCa9MQBAMCIJRMSFMAM2BIC8cWAOqROAMCLJRMMAOCFrCBAOCFZl9zAQJRQMGXGXAGCG9HQBABAt87FBABCIJAQ87FBABCGJAT87FBSFMAEAtjGBAECNJAQjGBAECIJATjGBMALCoBJAKCEWJHOAQjGBAOATjGIALAICGWJAQjGBALCoBJAKCFJCbZHKCEWJHOAtjGBAOAQjGIAICFJRIAKCFJRKSFMGXAOCDF9LQBALAIAcAOCbZJ2BBHbCIrHTlCbZCGWJ8oGBAVCFJHtATyROALAIAblCbZCGWJ8oGBAtAT9FHmJHtAbCbZHTyRbAT9FRTGXGXAGCG9HQBABAV87FBABCIJAb87FBABCGJAO87FBSFMAEAVjGBAECNJAbjGBAECIJAOjGBMALAICGWJAVjGBALCoBJAKCEWJHYAOjGBAYAVjGIALAICFJHICbZCGWJAOjGBALCoBJAKCFJCbZCEWJHYAbjGBAYAOjGIALAIAmJCbZHICGWJAbjGBALCoBJAKCGJCbZHKCEWJHOAVjGBAOAbjGIAKCFJRKAIATJRIAtATJRVSFMAVCBAM2BBHYyHTAOC/+F6HPJROAYCbZRtGXGXAYCIrHmQBAOCFJRbSFMAORbALAIAmlCbZCGWJ8oGBROMGXGXAtQBAbCFJRVSFMAbRVALAIAYlCbZCGWJ8oGBRbMGXGXAP9FQBAMCFJRYSFMAM1BFHYCgFZRTGXGXAYCa9MQBAMCGJRYSFMAM1BGHYCgBZCOWATCgBZqRTGXAYCa9MQBAMCEJRYSFMAM1BEHYCgBZCfWATqRTGXAYCa9MQBAMCIJRYSFMAM1BIHYCgBZCdWATqRTGXAYCa9MQBAMCLJRYSFMAMCKJRYAM2BLC8cWATqRTMATCFrCBATCFZl9zAQJHQRTMGXGXAmCb6QBAYRPSFMAY1BBHMCgFZROGXGXAMCa9MQBAYCFJRPSFMAY1BFHMCgBZCOWAOCgBZqROGXAMCa9MQBAYCGJRPSFMAY1BGHMCgBZCfWAOqROGXAMCa9MQBAYCEJRPSFMAY1BEHMCgBZCdWAOqROGXAMCa9MQBAYCIJRPSFMAYCLJRPAY2BIC8cWAOqROMAOCFrCBAOCFZl9zAQJHQROMGXGXAtCb6QBAPRMSFMAP1BBHMCgFZRbGXGXAMCa9MQBAPCFJRMSFMAP1BFHMCgBZCOWAbCgBZqRbGXAMCa9MQBAPCGJRMSFMAP1BGHMCgBZCfWAbqRbGXAMCa9MQBAPCEJRMSFMAP1BEHMCgBZCdWAbqRbGXAMCa9MQBAPCIJRMSFMAPCLJRMAP2BIC8cWAbqRbMAbCFrCBAbCFZl9zAQJHQRbMGXGXAGCG9HQBABAT87FBABCIJAb87FBABCGJAO87FBSFMAEATjGBAECNJAbjGBAECIJAOjGBMALCoBJAKCEWJHYAOjGBAYATjGIALAICGWJATjGBALCoBJAKCFJCbZCEWJHYAbjGBAYAOjGIALAICFJHICbZCGWJAOjGBALCoBJAKCGJCbZCEWJHOATjGBAOAbjGIALAIAm9FAmCb6qJHICbZCGWJAbjGBAIAt9FAtCb6qJRIAKCEJRKMANCFJRNABCKJRBAECSJREAKCbZRKAICbZRIAfCEJHfAF9JQBMMCBC99AMAc6yRKMALCoFJ8kUUUUBAKM/tIFGa8jUUUUBCTlRLC9+RKGXAFCLJAI9LQBCaRKAE2BBC/+FZC/QF9HQBALhB83ENAECFJRKAEAIJC98JREGXAF9FQBGXAGCG6QBEXGXAKAE9JQBC9+bMAK1BBHGCgFZRIGXGXAGCa9MQBAKCFJRKSFMAK1BFHGCgBZCOWAICgBZqRIGXAGCa9MQBAKCGJRKSFMAK1BGHGCgBZCfWAIqRIGXAGCa9MQBAKCEJRKSFMAK1BEHGCgBZCdWAIqRIGXAGCa9MQBAKCIJRKSFMAK2BIC8cWAIqRIAKCLJRKMALCNJAICFZCGWqHGAICGrCBAICFrCFZl9zAG8oGBJHIjGBABAIjGBABCIJRBAFCaJHFQBSGMMEXGXAKAE9JQBC9+bMAK1BBHGCgFZRIGXGXAGCa9MQBAKCFJRKSFMAK1BFHGCgBZCOWAICgBZqRIGXAGCa9MQBAKCGJRKSFMAK1BGHGCgBZCfWAIqRIGXAGCa9MQBAKCEJRKSFMAK1BEHGCgBZCdWAIqRIGXAGCa9MQBAKCIJRKSFMAK2BIC8cWAIqRIAKCLJRKMABAICGrCBAICFrCFZl9zALCNJAICFZCGWqHI8oGBJHG87FBAIAGjGBABCGJRBAFCaJHFQBMMCBC99AKAE6yRKMAKM+lLKFaF99GaG99FaG99GXGXAGCI9HQBAF9FQFEXGXGX9DBBB8/9DBBB+/ABCGJHG1BB+yAB1BBHE+yHI+L+TABCFJHL1BBHK+yHO+L+THN9DBBBB9gHVyAN9DBB/+hANAN+U9DBBBBANAVyHcAc+MHMAECa3yAI+SHIAI+UAcAMAKCa3yAO+SHcAc+U+S+S+R+VHO+U+SHN+L9DBBB9P9d9FQBAN+oRESFMCUUUU94REMAGAE86BBGXGX9DBBB8/9DBBB+/Ac9DBBBB9gyAcAO+U+SHN+L9DBBB9P9d9FQBAN+oRGSFMCUUUU94RGMALAG86BBGXGX9DBBB8/9DBBB+/AI9DBBBB9gyAIAO+U+SHN+L9DBBB9P9d9FQBAN+oRGSFMCUUUU94RGMABAG86BBABCIJRBAFCaJHFQBSGMMAF9FQBEXGXGX9DBBB8/9DBBB+/ABCIJHG8uFB+yAB8uFBHE+yHI+L+TABCGJHL8uFBHK+yHO+L+THN9DBBBB9gHVyAN9DB/+g6ANAN+U9DBBBBANAVyHcAc+MHMAECa3yAI+SHIAI+UAcAMAKCa3yAO+SHcAc+U+S+S+R+VHO+U+SHN+L9DBBB9P9d9FQBAN+oRESFMCUUUU94REMAGAE87FBGXGX9DBBB8/9DBBB+/Ac9DBBBB9gyAcAO+U+SHN+L9DBBB9P9d9FQBAN+oRGSFMCUUUU94RGMALAG87FBGXGX9DBBB8/9DBBB+/AI9DBBBB9gyAIAO+U+SHN+L9DBBB9P9d9FQBAN+oRGSFMCUUUU94RGMABAG87FBABCNJRBAFCaJHFQBMMM/SEIEaE99EaF99GXAF9FQBCBREABRIEXGXGX9D/zI818/AICKJ8uFBHLCEq+y+VHKAI8uFB+y+UHO9DB/+g6+U9DBBB8/9DBBB+/AO9DBBBB9gy+SHN+L9DBBB9P9d9FQBAN+oRVSFMCUUUU94RVMAICIJ8uFBRcAICGJ8uFBRMABALCFJCEZAEqCFWJAV87FBGXGXAKAM+y+UHN9DB/+g6+U9DBBB8/9DBBB+/AN9DBBBB9gy+SHS+L9DBBB9P9d9FQBAS+oRMSFMCUUUU94RMMABALCGJCEZAEqCFWJAM87FBGXGXAKAc+y+UHK9DB/+g6+U9DBBB8/9DBBB+/AK9DBBBB9gy+SHS+L9DBBB9P9d9FQBAS+oRcSFMCUUUU94RcMABALCaJCEZAEqCFWJAc87FBGXGX9DBBU8/AOAO+U+TANAN+U+TAKAK+U+THO9DBBBBAO9DBBBB9gy+R9DB/+g6+U9DBBB8/+SHO+L9DBBB9P9d9FQBAO+oRcSFMCUUUU94RcMABALCEZAEqCFWJAc87FBAICNJRIAECIJREAFCaJHFQBMMM9JBGXAGCGrAF9sHF9FQBEXABAB8oGBHGCNWCN91+yAGCi91CnWCUUU/8EJ+++U84GBABCIJRBAFCaJHFQBMMM9TFEaCBCB8oGUkUUBHFABCEJC98ZJHBjGUkUUBGXGXAB8/BCTWHGuQBCaREABAGlCggEJCTrXBCa6QFMAFREMAEM/lFFFaGXGXAFABqCEZ9FQBABRESFMGXGXAGCT9PQBABRESFMABREEXAEAF8oGBjGBAECIJAFCIJ8oGBjGBAECNJAFCNJ8oGBjGBAECSJAFCSJ8oGBjGBAECTJREAFCTJRFAGC9wJHGCb9LQBMMAGCI9JQBEXAEAF8oGBjGBAFCIJRFAECIJREAGC98JHGCE9LQBMMGXAG9FQBEXAEAF2BB86BBAECFJREAFCFJRFAGCaJHGQBMMABMoFFGaGXGXABCEZ9FQBABRESFMAFCgFZC+BwsN9sRIGXGXAGCT9PQBABRESFMABREEXAEAIjGBAECSJAIjGBAECNJAIjGBAECIJAIjGBAECTJREAGC9wJHGCb9LQBMMAGCI9JQBEXAEAIjGBAECIJREAGC98JHGCE9LQBMMGXAG9FQBEXAEAF86BBAECFJREAGCaJHGQBMMABMMMFBCUNMIT9kBB";WebAssembly.validate(t)&&(i="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");let a=WebAssembly.instantiate(function(e){let t=new Uint8Array(e.length);for(let r=0;r<e.length;++r){let n=e.charCodeAt(r);t[r]=n>96?n-71:n>64?n-65:n>47?n+4:n>46?63:62}let n=0;for(let i=0;i<e.length;++i)t[n++]=t[i]<60?r[t[i]]:(t[i]-60)*64+t[++i];return t.buffer.slice(0,n)}(i),{}).then(t=>{(e=t.instance).exports.__wasm_call_ctors()});function s(t,r,n,i,a,s){let o=e.exports.sbrk,l=n+3&-4,c=o(l*i),u=o(a.length),d=new Uint8Array(e.exports.memory.buffer);d.set(a,u);let h=t(c,n,i,u,a.length);if(0===h&&s&&s(c,l,i),r.set(d.subarray(c,c+n*i)),o(c-o(0)),0!==h)throw Error(`Malformed buffer data: ${h}`)}let o={0:"",1:"meshopt_decodeFilterOct",2:"meshopt_decodeFilterQuat",3:"meshopt_decodeFilterExp",NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp"},l={0:"meshopt_decodeVertexBuffer",1:"meshopt_decodeIndexBuffer",2:"meshopt_decodeIndexSequence",ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"};return n={ready:a,supported:!0,decodeVertexBuffer(t,r,n,i,a){s(e.exports.meshopt_decodeVertexBuffer,t,r,n,i,e.exports[o[a]])},decodeIndexBuffer(t,r,n,i){s(e.exports.meshopt_decodeIndexBuffer,t,r,n,i)},decodeIndexSequence(t,r,n,i){s(e.exports.meshopt_decodeIndexSequence,t,r,n,i)},decodeGltfBuffer(t,r,n,i,a,c){s(e.exports[l[a]],t,r,n,i,e.exports[o[c]])}}})())}}let e9=(e,t,r,n)=>(0,eZ.useLoader)(en,e,e2(t,r,n));e9.preload=(e,t,r,n)=>eZ.useLoader.preload(en,e,e2(t,r,n)),e9.clear=e=>eZ.useLoader.clear(en,e),e9.setDecoderPath=e=>{e1=e};let e3={uniforms:{tDiffuse:{value:null},h:{value:1/512}},vertexShader:`
varying vec2 vUv;
void main() {
vUv = uv;
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
}
`,fragmentShader:`
uniform sampler2D tDiffuse;
uniform float h;
varying vec2 vUv;
void main() {
vec4 sum = vec4( 0.0 );
sum += texture2D( tDiffuse, vec2( vUv.x - 4.0 * h, vUv.y ) ) * 0.051;
sum += texture2D( tDiffuse, vec2( vUv.x - 3.0 * h, vUv.y ) ) * 0.0918;
sum += texture2D( tDiffuse, vec2( vUv.x - 2.0 * h, vUv.y ) ) * 0.12245;
sum += texture2D( tDiffuse, vec2( vUv.x - 1.0 * h, vUv.y ) ) * 0.1531;
sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y ) ) * 0.1633;
sum += texture2D( tDiffuse, vec2( vUv.x + 1.0 * h, vUv.y ) ) * 0.1531;
sum += texture2D( tDiffuse, vec2( vUv.x + 2.0 * h, vUv.y ) ) * 0.12245;
sum += texture2D( tDiffuse, vec2( vUv.x + 3.0 * h, vUv.y ) ) * 0.0918;
sum += texture2D( tDiffuse, vec2( vUv.x + 4.0 * h, vUv.y ) ) * 0.051;
gl_FragColor = sum;
}
`},e8={uniforms:{tDiffuse:{value:null},v:{value:1/512}},vertexShader:`
varying vec2 vUv;
void main() {
vUv = uv;
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
}
`,fragmentShader:`
uniform sampler2D tDiffuse;
uniform float v;
varying vec2 vUv;
void main() {
vec4 sum = vec4( 0.0 );
sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y - 4.0 * v ) ) * 0.051;
sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y - 3.0 * v ) ) * 0.0918;
sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y - 2.0 * v ) ) * 0.12245;
sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y - 1.0 * v ) ) * 0.1531;
sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y ) ) * 0.1633;
sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y + 1.0 * v ) ) * 0.1531;
sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y + 2.0 * v ) ) * 0.12245;
sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y + 3.0 * v ) ) * 0.0918;
sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y + 4.0 * v ) ) * 0.051;
gl_FragColor = sum;
}
`},e6=s.forwardRef(({scale:e=10,frames:t=1/0,opacity:r=1,width:n=1,height:i=1,blur:a=1,near:o=0,far:h=10,resolution:f=512,smooth:A=!0,color:p="#000000",depthWrite:m=!1,renderOrder:B,...g},C)=>{let v,y,M=s.useRef(null),x=(0,c.useThree)(e=>e.scene),E=(0,c.useThree)(e=>e.gl),F=s.useRef(null);n*=Array.isArray(e)?e[0]:e||1,i*=Array.isArray(e)?e[1]:e||1;let[b,w,I,R,G,D,T]=s.useMemo(()=>{let e=new d.WebGLRenderTarget(f,f),t=new d.WebGLRenderTarget(f,f);t.texture.generateMipmaps=e.texture.generateMipmaps=!1;let r=new d.PlaneGeometry(n,i).rotateX(Math.PI/2),a=new d.Mesh(r),s=new d.MeshDepthMaterial;s.depthTest=s.depthWrite=!1,s.onBeforeCompile=e=>{e.uniforms={...e.uniforms,ucolor:{value:new d.Color(p)}},e.fragmentShader=e.fragmentShader.replace("void main() {",`uniform vec3 ucolor;
void main() {
`),e.fragmentShader=e.fragmentShader.replace("vec4( vec3( 1.0 - fragCoordZ ), opacity );","vec4( ucolor * fragCoordZ * 2.0, ( 1.0 - fragCoordZ ) * 1.0 );")};let o=new d.ShaderMaterial(e3),l=new d.ShaderMaterial(e8);return l.depthTest=o.depthTest=!1,[e,r,s,a,o,l,t]},[f,n,i,e,p]),S=e=>{R.visible=!0,R.material=G,G.uniforms.tDiffuse.value=b.texture,G.uniforms.h.value=e/256,E.setRenderTarget(T),E.render(R,F.current),R.material=D,D.uniforms.tDiffuse.value=T.texture,D.uniforms.v.value=e/256,E.setRenderTarget(b),E.render(R,F.current),R.visible=!1},H=0;return(0,l.useFrame)(()=>{F.current&&(t===1/0||H<t)&&(H++,v=x.background,y=x.overrideMaterial,M.current.visible=!1,x.background=null,x.overrideMaterial=I,E.setRenderTarget(b),E.render(x,F.current),S(a),A&&S(.4*a),E.setRenderTarget(null),M.current.visible=!0,x.overrideMaterial=y,x.background=v)}),s.useImperativeHandle(C,()=>M.current,[]),s.createElement("group",(0,u.default)({"rotation-x":Math.PI/2},g,{ref:M}),s.createElement("mesh",{renderOrder:B,geometry:w,scale:[1,-1,1],rotation:[-Math.PI/2,0,0]},s.createElement("meshBasicMaterial",{transparent:!0,map:b.texture,opacity:r,depthWrite:m})),s.createElement("orthographicCamera",{ref:F,args:[-n/2,n/2,i/2,-i/2,o,h]}))});var e4=e.i(44208),e5=e.i(24205),e7=d;class te extends e7.Mesh{constructor(e,t){var r,n;const i=(e=>e&&e.isCubeTexture)(e),a=Math.floor(Math.log2((null!=(n=i?null==(r=e.image[0])?void 0:r.width:e.image.width)?n:1024)/4)),s=Math.pow(2,a),o=3*Math.max(s,112),l=`
varying vec3 vWorldPosition;
void main()
{
vec4 worldPosition = ( modelMatrix * vec4( position, 1.0 ) );
vWorldPosition = worldPosition.xyz;
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
}
`,c=[i?"#define ENVMAP_TYPE_CUBE":"",`#define CUBEUV_TEXEL_WIDTH ${1/o}`,`#define CUBEUV_TEXEL_HEIGHT ${1/(4*s)}`,`#define CUBEUV_MAX_MIP ${a}.0`].join("\n")+`
#define ENVMAP_TYPE_CUBE_UV
varying vec3 vWorldPosition;
uniform float radius;
uniform float height;
uniform float angle;
#ifdef ENVMAP_TYPE_CUBE
uniform samplerCube map;
#else
uniform sampler2D map;
#endif
// From: https://www.shadertoy.com/view/4tsBD7
float diskIntersectWithBackFaceCulling( vec3 ro, vec3 rd, vec3 c, vec3 n, float r )
{
float d = dot ( rd, n );
if( d > 0.0 ) { return 1e6; }
vec3 o = ro - c;
float t = - dot( n, o ) / d;
vec3 q = o + rd * t;
return ( dot( q, q ) < r * r ) ? t : 1e6;
}
// From: https://www.iquilezles.org/www/articles/intersectors/intersectors.htm
float sphereIntersect( vec3 ro, vec3 rd, vec3 ce, float ra )
{
vec3 oc = ro - ce;
float b = dot( oc, rd );
float c = dot( oc, oc ) - ra * ra;
float h = b * b - c;
if( h < 0.0 ) { return -1.0; }
h = sqrt( h );
return - b + h;
}
vec3 project()
{
vec3 p = normalize( vWorldPosition );
vec3 camPos = cameraPosition;
camPos.y -= height;
float intersection = sphereIntersect( camPos, p, vec3( 0.0 ), radius );
if( intersection > 0.0 ) {
vec3 h = vec3( 0.0, - height, 0.0 );
float intersection2 = diskIntersectWithBackFaceCulling( camPos, p, h, vec3( 0.0, 1.0, 0.0 ), radius );
p = ( camPos + min( intersection, intersection2 ) * p ) / radius;
} else {
p = vec3( 0.0, 1.0, 0.0 );
}
return p;
}
#include <common>
#include <cube_uv_reflection_fragment>
void main()
{
vec3 projectedWorldPosition = project();
#ifdef ENVMAP_TYPE_CUBE
vec3 outcolor = textureCube( map, projectedWorldPosition ).rgb;
#else
vec3 direction = normalize( projectedWorldPosition );
vec2 uv = equirectUv( direction );
vec3 outcolor = texture2D( map, uv ).rgb;
#endif
gl_FragColor = vec4( outcolor, 1.0 );
#include <tonemapping_fragment>
#include <${M>=154?"colorspace_fragment":"encodings_fragment"}>
}
`,u={map:{value:e},height:{value:(null==t?void 0:t.height)||15},radius:{value:(null==t?void 0:t.radius)||100}};super(new e7.IcosahedronGeometry(1,16),new e7.ShaderMaterial({uniforms:u,fragmentShader:c,vertexShader:l,side:e7.DoubleSide}))}set radius(e){this.material.uniforms.radius.value=e}get radius(){return this.material.uniforms.radius.value}set height(e){this.material.uniforms.height.value=e}get height(){return this.material.uniforms.height.value}}var tt=d;class tr extends tt.DataTextureLoader{constructor(e){super(e),this.type=tt.HalfFloatType}parse(e){let t,r,n,i=function(e,t){switch(e){case 1:throw Error("THREE.RGBELoader: Read Error: "+(t||""));case 2:throw Error("THREE.RGBELoader: Write Error: "+(t||""));case 3:throw Error("THREE.RGBELoader: Bad File Format: "+(t||""));default:throw Error("THREE.RGBELoader: Memory Error: "+(t||""))}},a=function(e,t,r){t=t||1024;let n=e.pos,i=-1,a=0,s="",o=String.fromCharCode.apply(null,new Uint16Array(e.subarray(n,n+128)));for(;0>(i=o.indexOf("\n"))&&a<t&&n<e.byteLength;)s+=o,a+=o.length,n+=128,o+=String.fromCharCode.apply(null,new Uint16Array(e.subarray(n,n+128)));return -1<i&&(!1!==r&&(e.pos+=a+i+1),s+o.slice(0,i))},s=new Uint8Array(e);s.pos=0;let o=function(e){let t,r,n=/^\s*GAMMA\s*=\s*(\d+(\.\d+)?)\s*$/,s=/^\s*EXPOSURE\s*=\s*(\d+(\.\d+)?)\s*$/,o=/^\s*FORMAT=(\S+)\s*$/,l=/^\s*\-Y\s+(\d+)\s+\+X\s+(\d+)\s*$/,c={valid:0,string:"",comments:"",programtype:"RGBE",format:"",gamma:1,exposure:1,width:0,height:0};for(!(e.pos>=e.byteLength)&&(t=a(e))||i(1,"no header found"),(r=t.match(/^#\?(\S+)/))||i(3,"bad initial token"),c.valid|=1,c.programtype=r[1],c.string+=t+"\n";!1!==(t=a(e));){if(c.string+=t+"\n","#"===t.charAt(0)){c.comments+=t+"\n";continue}if((r=t.match(n))&&(c.gamma=parseFloat(r[1])),(r=t.match(s))&&(c.exposure=parseFloat(r[1])),(r=t.match(o))&&(c.valid|=2,c.format=r[1]),(r=t.match(l))&&(c.valid|=4,c.height=parseInt(r[1],10),c.width=parseInt(r[2],10)),2&c.valid&&4&c.valid)break}return 2&c.valid||i(3,"missing format specifier"),4&c.valid||i(3,"missing image size specifier"),c}(s),l=o.width,c=o.height,u=function(e,t,r){if(t<8||t>32767||2!==e[0]||2!==e[1]||128&e[2])return new Uint8Array(e);t!==(e[2]<<8|e[3])&&i(3,"wrong scanline width");let n=new Uint8Array(4*t*r);n.length||i(4,"unable to allocate buffer space");let a=0,s=0,o=4*t,l=new Uint8Array(4),c=new Uint8Array(o),u=r;for(;u>0&&s<e.byteLength;){s+4>e.byteLength&&i(1),l[0]=e[s++],l[1]=e[s++],l[2]=e[s++],l[3]=e[s++],(2!=l[0]||2!=l[1]||(l[2]<<8|l[3])!=t)&&i(3,"bad rgbe scanline format");let r=0,d;for(;r<o&&s<e.byteLength;){let t=(d=e[s++])>128;if(t&&(d-=128),(0===d||r+d>o)&&i(3,"bad scanline data"),t){let t=e[s++];for(let e=0;e<d;e++)c[r++]=t}else c.set(e.subarray(s,s+d),r),r+=d,s+=d}for(let e=0;e<t;e++){let r=0;n[a]=c[e+r],r+=t,n[a+1]=c[e+r],r+=t,n[a+2]=c[e+r],r+=t,n[a+3]=c[e+r],a+=4}u--}return n}(s.subarray(s.pos),l,c);switch(this.type){case tt.FloatType:let d=new Float32Array(4*(n=u.length/4));for(let e=0;e<n;e++)!function(e,t,r,n){let i=Math.pow(2,e[t+3]-128)/255;r[n+0]=e[t+0]*i,r[n+1]=e[t+1]*i,r[n+2]=e[t+2]*i,r[n+3]=1}(u,4*e,d,4*e);t=d,r=tt.FloatType;break;case tt.HalfFloatType:let h=new Uint16Array(4*(n=u.length/4));for(let e=0;e<n;e++)!function(e,t,r,n){let i=Math.pow(2,e[t+3]-128)/255;r[n+0]=tt.DataUtils.toHalfFloat(Math.min(e[t+0]*i,65504)),r[n+1]=tt.DataUtils.toHalfFloat(Math.min(e[t+1]*i,65504)),r[n+2]=tt.DataUtils.toHalfFloat(Math.min(e[t+2]*i,65504)),r[n+3]=tt.DataUtils.toHalfFloat(1)}(u,4*e,h,4*e);t=h,r=tt.HalfFloatType;break;default:throw Error("THREE.RGBELoader: Unsupported type: "+this.type)}return{width:l,height:c,data:t,header:o.string,gamma:o.gamma,exposure:o.exposure,type:r}}setDataType(e){return this.type=e,this}load(e,t,r,n){return super.load(e,function(e,r){switch(e.type){case tt.FloatType:case tt.HalfFloatType:"colorSpace"in e?e.colorSpace="srgb-linear":e.encoding=3e3,e.minFilter=tt.LinearFilter,e.magFilter=tt.LinearFilter,e.generateMipmaps=!1,e.flipY=!0}t&&t(e,r)},r,n)}}var tn=d,ti={},ta=function(e,t,r,n,i){var a=new Worker(ti[t]||(ti[t]=URL.createObjectURL(new Blob([e],{type:"text/javascript"}))));return a.onerror=function(e){return i(e.error,null)},a.onmessage=function(e){return i(null,e.data)},a.postMessage(r,n),a},ts=Uint8Array,to=Uint16Array,tl=Uint32Array,tc=new ts([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]),tu=new ts([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]),td=new ts([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),th=function(e,t){for(var r=new to(31),n=0;n<31;++n)r[n]=t+=1<<e[n-1];for(var i=new tl(r[30]),n=1;n<30;++n)for(var a=r[n];a<r[n+1];++a)i[a]=a-r[n]<<5|n;return[r,i]},tf=th(tc,2),tA=tf[0],tp=tf[1];tA[28]=258,tp[258]=28;for(var tm=th(tu,0),tB=tm[0],tg=tm[1],tC=new to(32768),tv=0;tv<32768;++tv){var ty=(43690&tv)>>>1|(21845&tv)<<1;ty=(61680&(ty=(52428&ty)>>>2|(13107&ty)<<2))>>>4|(3855&ty)<<4,tC[tv]=((65280&ty)>>>8|(255&ty)<<8)>>>1}for(var tM=function(e,t,r){for(var n,i=e.length,a=0,s=new to(t);a<i;++a)++s[e[a]-1];var o=new to(t);for(a=0;a<t;++a)o[a]=o[a-1]+s[a-1]<<1;if(r){n=new to(1<<t);var l=15-t;for(a=0;a<i;++a)if(e[a])for(var c=a<<4|e[a],u=t-e[a],d=o[e[a]-1]++<<u,h=d|(1<<u)-1;d<=h;++d)n[tC[d]>>>l]=c}else for(a=0,n=new to(i);a<i;++a)e[a]&&(n[a]=tC[o[e[a]-1]++]>>>15-e[a]);return n},tx=new ts(288),tv=0;tv<144;++tv)tx[tv]=8;for(var tv=144;tv<256;++tv)tx[tv]=9;for(var tv=256;tv<280;++tv)tx[tv]=7;for(var tv=280;tv<288;++tv)tx[tv]=8;for(var tE=new ts(32),tv=0;tv<32;++tv)tE[tv]=5;var tF=tM(tx,9,0),tb=tM(tx,9,1),tw=tM(tE,5,0),tI=tM(tE,5,1),tR=function(e){for(var t=e[0],r=1;r<e.length;++r)e[r]>t&&(t=e[r]);return t},tG=function(e,t,r){var n=t/8|0;return(e[n]|e[n+1]<<8)>>(7&t)&r},tD=function(e,t){var r=t/8|0;return(e[r]|e[r+1]<<8|e[r+2]<<16)>>(7&t)},tT=function(e){return(e/8|0)+(7&e&&1)},tS=function(e,t,r){(null==t||t<0)&&(t=0),(null==r||r>e.length)&&(r=e.length);var n=new(e instanceof to?to:e instanceof tl?tl:ts)(r-t);return n.set(e.subarray(t,r)),n},tH=function(e,t,r){var n=e.length;if(!n||r&&!r.l&&n<5)return t||new ts(0);var i=!t||r,a=!r||r.i;r||(r={}),t||(t=new ts(3*n));var s=function(e){var r=t.length;if(e>r){var n=new ts(Math.max(2*r,e));n.set(t),t=n}},o=r.f||0,l=r.p||0,c=r.b||0,u=r.l,d=r.d,h=r.m,f=r.n,A=8*n;do{if(!u){r.f=o=tG(e,l,1);var p=tG(e,l+1,3);if(l+=3,p)if(1==p)u=tb,d=tI,h=9,f=5;else if(2==p){var m=tG(e,l,31)+257,B=tG(e,l+10,15)+4,g=m+tG(e,l+5,31)+1;l+=14;for(var C=new ts(g),v=new ts(19),y=0;y<B;++y)v[td[y]]=tG(e,l+3*y,7);l+=3*B;for(var M=tR(v),x=(1<<M)-1,E=tM(v,M,1),y=0;y<g;){var F=E[tG(e,l,x)];l+=15&F;var b=F>>>4;if(b<16)C[y++]=b;else{var w=0,I=0;for(16==b?(I=3+tG(e,l,3),l+=2,w=C[y-1]):17==b?(I=3+tG(e,l,7),l+=3):18==b&&(I=11+tG(e,l,127),l+=7);I--;)C[y++]=w}}var R=C.subarray(0,m),G=C.subarray(m);h=tR(R),f=tR(G),u=tM(R,h,1),d=tM(G,f,1)}else throw"invalid block type";else{var b=tT(l)+4,D=e[b-4]|e[b-3]<<8,T=b+D;if(T>n){if(a)throw"unexpected EOF";break}i&&s(c+D),t.set(e.subarray(b,T),c),r.b=c+=D,r.p=l=8*T;continue}if(l>A){if(a)throw"unexpected EOF";break}}i&&s(c+131072);for(var S=(1<<h)-1,H=(1<<f)-1,L=l;;L=l){var w=u[tD(e,l)&S],U=w>>>4;if((l+=15&w)>A){if(a)throw"unexpected EOF";break}if(!w)throw"invalid length/literal";if(U<256)t[c++]=U;else if(256==U){L=l,u=null;break}else{var P=U-254;if(U>264){var y=U-257,_=tc[y];P=tG(e,l,(1<<_)-1)+tA[y],l+=_}var J=d[tD(e,l)&H],O=J>>>4;if(!J)throw"invalid distance";l+=15&J;var G=tB[O];if(O>3){var _=tu[O];G+=tD(e,l)&(1<<_)-1,l+=_}if(l>A){if(a)throw"unexpected EOF";break}i&&s(c+131072);for(var j=c+P;c<j;c+=4)t[c]=t[c-G],t[c+1]=t[c+1-G],t[c+2]=t[c+2-G],t[c+3]=t[c+3-G];c=j}}r.l=u,r.p=L,r.b=c,u&&(o=1,r.m=h,r.d=d,r.n=f)}while(!o)return c==t.length?t:tS(t,0,c)},tL=function(e,t,r){r<<=7&t;var n=t/8|0;e[n]|=r,e[n+1]|=r>>>8},tU=function(e,t,r){r<<=7&t;var n=t/8|0;e[n]|=r,e[n+1]|=r>>>8,e[n+2]|=r>>>16},tP=function(e,t){for(var r=[],n=0;n<e.length;++n)e[n]&&r.push({s:n,f:e[n]});var i=r.length,a=r.slice();if(!i)return[tK,0];if(1==i){var s=new ts(r[0].s+1);return s[r[0].s]=1,[s,1]}r.sort(function(e,t){return e.f-t.f}),r.push({s:-1,f:25001});var o=r[0],l=r[1],c=0,u=1,d=2;for(r[0]={s:-1,f:o.f+l.f,l:o,r:l};u!=i-1;)o=r[r[c].f<r[d].f?c++:d++],l=r[c!=u&&r[c].f<r[d].f?c++:d++],r[u++]={s:-1,f:o.f+l.f,l:o,r:l};for(var h=a[0].s,n=1;n<i;++n)a[n].s>h&&(h=a[n].s);var f=new to(h+1),A=t_(r[u-1],f,0);if(A>t){var n=0,p=0,m=A-t,B=1<<m;for(a.sort(function(e,t){return f[t.s]-f[e.s]||e.f-t.f});n<i;++n){var g=a[n].s;if(f[g]>t)p+=B-(1<<A-f[g]),f[g]=t;else break}for(p>>>=m;p>0;){var C=a[n].s;f[C]<t?p-=1<<t-f[C]++-1:++n}for(;n>=0&&p;--n){var v=a[n].s;f[v]==t&&(--f[v],++p)}A=t}return[new ts(f),A]},t_=function(e,t,r){return -1==e.s?Math.max(t_(e.l,t,r+1),t_(e.r,t,r+1)):t[e.s]=r},tJ=function(e){for(var t=e.length;t&&!e[--t];);for(var r=new to(++t),n=0,i=e[0],a=1,s=function(e){r[n++]=e},o=1;o<=t;++o)if(e[o]==i&&o!=t)++a;else{if(!i&&a>2){for(;a>138;a-=138)s(32754);a>2&&(s(a>10?a-11<<5|28690:a-3<<5|12305),a=0)}else if(a>3){for(s(i),--a;a>6;a-=6)s(8304);a>2&&(s(a-3<<5|8208),a=0)}for(;a--;)s(i);a=1,i=e[o]}return[r.subarray(0,n),t]},tO=function(e,t){for(var r=0,n=0;n<t.length;++n)r+=e[n]*t[n];return r},tj=function(e,t,r){var n=r.length,i=tT(t+2);e[i]=255&n,e[i+1]=n>>>8,e[i+2]=255^e[i],e[i+3]=255^e[i+1];for(var a=0;a<n;++a)e[i+a+4]=r[a];return(i+4+n)*8},tk=function(e,t,r,n,i,a,s,o,l,c,u){tL(t,u++,r),++i[256];for(var d,h,f,A,p=tP(i,15),m=p[0],B=p[1],g=tP(a,15),C=g[0],v=g[1],y=tJ(m),M=y[0],x=y[1],E=tJ(C),F=E[0],b=E[1],w=new to(19),I=0;I<M.length;++I)w[31&M[I]]++;for(var I=0;I<F.length;++I)w[31&F[I]]++;for(var R=tP(w,7),G=R[0],D=R[1],T=19;T>4&&!G[td[T-1]];--T);var S=c+5<<3,H=tO(i,tx)+tO(a,tE)+s,L=tO(i,m)+tO(a,C)+s+14+3*T+tO(w,G)+(2*w[16]+3*w[17]+7*w[18]);if(S<=H&&S<=L)return tj(t,u,e.subarray(l,l+c));if(tL(t,u,1+(L<H)),u+=2,L<H){d=tM(m,B,0),h=m,f=tM(C,v,0),A=C;var U=tM(G,D,0);tL(t,u,x-257),tL(t,u+5,b-1),tL(t,u+10,T-4),u+=14;for(var I=0;I<T;++I)tL(t,u+3*I,G[td[I]]);u+=3*T;for(var P=[M,F],_=0;_<2;++_)for(var J=P[_],I=0;I<J.length;++I){var O=31&J[I];tL(t,u,U[O]),u+=G[O],O>15&&(tL(t,u,J[I]>>>5&127),u+=J[I]>>>12)}}else d=tF,h=tx,f=tw,A=tE;for(var I=0;I<o;++I)if(n[I]>255){var O=n[I]>>>18&31;tU(t,u,d[O+257]),u+=h[O+257],O>7&&(tL(t,u,n[I]>>>23&31),u+=tc[O]);var j=31&n[I];tU(t,u,f[j]),u+=A[j],j>3&&(tU(t,u,n[I]>>>5&8191),u+=tu[j])}else tU(t,u,d[n[I]]),u+=h[n[I]];return tU(t,u,d[256]),u+h[256]},tN=new tl([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),tK=new ts(0),tQ=function(e,t,r,n,i,a){var s=e.length,o=new ts(n+s+5*(1+Math.ceil(s/7e3))+i),l=o.subarray(n,o.length-i),c=0;if(!t||s<8)for(var u=0;u<=s;u+=65535){var d=u+65535;d<s?c=tj(l,c,e.subarray(u,d)):(l[u]=a,c=tj(l,c,e.subarray(u,s)))}else{for(var h=tN[t-1],f=h>>>13,A=8191&h,p=(1<<r)-1,m=new to(32768),B=new to(p+1),g=Math.ceil(r/3),C=2*g,v=function(t){return(e[t]^e[t+1]<<g^e[t+2]<<C)&p},y=new tl(25e3),M=new to(288),x=new to(32),E=0,F=0,u=0,b=0,w=0,I=0;u<s;++u){var R=v(u),G=32767&u,D=B[R];if(m[G]=D,B[R]=G,w<=u){var T=s-u;if((E>7e3||b>24576)&&T>423){c=tk(e,l,0,y,M,x,F,b,I,u-I,c),b=E=F=0,I=u;for(var S=0;S<286;++S)M[S]=0;for(var S=0;S<30;++S)x[S]=0}var H=2,L=0,U=A,P=G-D&32767;if(T>2&&R==v(u-P))for(var _=Math.min(f,T)-1,J=Math.min(32767,u),O=Math.min(258,T);P<=J&&--U&&G!=D;){if(e[u+H]==e[u+H-P]){for(var j=0;j<O&&e[u+j]==e[u+j-P];++j);if(j>H){if(H=j,L=P,j>_)break;for(var k=Math.min(P,j-2),N=0,S=0;S<k;++S){var K=u-P+S+32768&32767,Q=m[K],X=K-Q+32768&32767;X>N&&(N=X,D=K)}}}D=m[G=D],P+=G-D+32768&32767}if(L){y[b++]=0x10000000|tp[H]<<18|tg[L];var Y=31&tp[H],W=31&tg[L];F+=tc[Y]+tu[W],++M[257+Y],++x[W],w=u+H,++E}else y[b++]=e[u],++M[e[u]]}}c=tk(e,l,a,y,M,x,F,b,I,u-I,c),!a&&7&c&&(c=tj(l,c+1,tK))}return tS(o,0,n+tT(c)+i)},tX=function(){for(var e=new Int32Array(256),t=0;t<256;++t){for(var r=t,n=9;--n;)r=(1&r&&-0x12477ce0)^r>>>1;e[t]=r}return e}(),tY=function(){var e=-1;return{p:function(t){for(var r=e,n=0;n<t.length;++n)r=tX[255&r^t[n]]^r>>>8;e=r},d:function(){return~e}}},tW=function(){var e=1,t=0;return{p:function(r){for(var n=e,i=t,a=r.length,s=0;s!=a;){for(var o=Math.min(s+2655,a);s<o;++s)i+=n+=r[s];n=(65535&n)+15*(n>>16),i=(65535&i)+15*(i>>16)}e=n,t=i},d:function(){return e%=65521,t%=65521,(255&e)<<24|e>>>8<<16|(255&t)<<8|t>>>8}}},tz=function(e,t,r,n,i){return tQ(e,null==t.level?6:t.level,null==t.mem?Math.ceil(1.5*Math.max(8,Math.min(13,Math.log(e.length)))):12+t.mem,r,n,!i)},tV=function(e,t){var r={};for(var n in e)r[n]=e[n];for(var n in t)r[n]=t[n];return r},tZ=function(e,t,r){for(var n=e(),i=e.toString(),a=i.slice(i.indexOf("[")+1,i.lastIndexOf("]")).replace(/ /g,"").split(","),s=0;s<n.length;++s){var o=n[s],l=a[s];if("function"==typeof o){t+=";"+l+"=";var c=o.toString();if(o.prototype)if(-1!=c.indexOf("[native code]")){var u=c.indexOf(" ",8)+1;t+=c.slice(u,c.indexOf("(",u))}else for(var d in t+=c,o.prototype)t+=";"+l+".prototype."+d+"="+o.prototype[d].toString();else t+=c}else r[l]=o}return[t,r]},tq=[],t$=function(e){var t=[];for(var r in e)(e[r]instanceof ts||e[r]instanceof to||e[r]instanceof tl)&&t.push((e[r]=new e[r].constructor(e[r])).buffer);return t},t0=function(e,t,r,n){if(!tq[r]){for(var i,a="",s={},o=e.length-1,l=0;l<o;++l)a=(i=tZ(e[l],a,s))[0],s=i[1];tq[r]=tZ(e[o],a,s)}var c=tV({},tq[r][1]);return ta(tq[r][0]+";onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage="+t.toString()+"}",r,c,t$(c),n)},t1=function(){return[ts,to,tl,tc,tu,td,tA,tB,tb,tI,tC,tM,tR,tG,tD,tT,tS,tH,rp,t8,t6]},t2=function(){return[ts,to,tl,tc,tu,td,tp,tg,tF,tx,tw,tE,tC,tN,tK,tM,tL,tU,tP,t_,tJ,tO,tj,tk,tT,tS,tQ,tz,rh,t8]},t9=function(){return[ri,ra]},t3=function(){return[rl]},t8=function(e){return postMessage(e,[e.buffer])},t6=function(e){return e&&e.size&&new ts(e.size)},t4=function(e){return e.ondata=function(e,t){return postMessage([e,t],[e.buffer])},function(t){return e.push(t.data[0],t.data[1])}},t5=function(e,t,r,n,i){var a,s=t0(e,n,i,function(e,r){e?(s.terminate(),t.ondata.call(t,e)):(r[1]&&s.terminate(),t.ondata.call(t,e,r[0],r[1]))});s.postMessage(r),t.push=function(e,r){if(a)throw"stream finished";if(!t.ondata)throw"no stream handler";s.postMessage([e,a=r],[e.buffer])},t.terminate=function(){s.terminate()}},t7=function(e,t){return e[t]|e[t+1]<<8},re=function(e,t){return(e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24)>>>0},rt=function(e,t){return re(e,t)+0x100000000*re(e,t+4)},rr=function(e,t,r){for(;r;++t)e[t]=r,r>>>=8},rn=function(e,t){var r=t.filename;if(e[0]=31,e[1]=139,e[2]=8,e[8]=t.level<2?4:2*(9==t.level),e[9]=3,0!=t.mtime&&rr(e,4,Math.floor(new Date(t.mtime||Date.now())/1e3)),r){e[3]=8;for(var n=0;n<=r.length;++n)e[n+10]=r.charCodeAt(n)}},ri=function(e){if(31!=e[0]||139!=e[1]||8!=e[2])throw"invalid gzip data";var t=e[3],r=10;4&t&&(r+=e[10]|(e[11]<<8)+2);for(var n=(t>>3&1)+(t>>4&1);n>0;n-=!e[r++]);return r+(2&t)},ra=function(e){var t=e.length;return(e[t-4]|e[t-3]<<8|e[t-2]<<16|e[t-1]<<24)>>>0},rs=function(e){return 10+(e.filename&&e.filename.length+1||0)},ro=function(e,t){var r=t.level,n=0==r?0:r<6?1:9==r?3:2;e[0]=120,e[1]=n<<6|(n?32-2*n:1)},rl=function(e){if((15&e[0])!=8||e[0]>>>4>7||(e[0]<<8|e[1])%31)throw"invalid zlib data";if(32&e[1])throw"invalid zlib data: preset dictionaries not supported"};function rc(e,t){return t||"function"!=typeof e||(t=e,e={}),this.ondata=t,e}var ru=function(){function e(e,t){t||"function"!=typeof e||(t=e,e={}),this.ondata=t,this.o=e||{}}return e.prototype.p=function(e,t){this.ondata(tz(e,this.o,0,0,!t),t)},e.prototype.push=function(e,t){if(this.d)throw"stream finished";if(!this.ondata)throw"no stream handler";this.d=t,this.p(e,t||!1)},e}(),rd=function(e,t){t5([t2,function(){return[t4,ru]}],this,rc.call(this,e,t),function(e){onmessage=t4(new ru(e.data))},6)};function rh(e,t){return tz(e,t||{},0,0)}var rf=function(){function e(e){this.s={},this.p=new ts(0),this.ondata=e}return e.prototype.e=function(e){if(this.d)throw"stream finished";if(!this.ondata)throw"no stream handler";var t=this.p.length,r=new ts(t+e.length);r.set(this.p),r.set(e,t),this.p=r},e.prototype.c=function(e){this.d=this.s.i=e||!1;var t=this.s.b,r=tH(this.p,this.o,this.s);this.ondata(tS(r,t,this.s.b),this.d),this.o=tS(r,this.s.b-32768),this.s.b=this.o.length,this.p=tS(this.p,this.s.p/8|0),this.s.p&=7},e.prototype.push=function(e,t){this.e(e),this.c(t)},e}(),rA=function(e){this.ondata=e,t5([t1,function(){return[t4,rf]}],this,0,function(){onmessage=t4(new rf)},7)};function rp(e,t){return tH(e,t)}(function(){function e(e,t){this.c=tY(),this.l=0,this.v=1,ru.call(this,e,t)}e.prototype.push=function(e,t){ru.prototype.push.call(this,e,t)},e.prototype.p=function(e,t){this.c.p(e),this.l+=e.length;var r=tz(e,this.o,this.v&&rs(this.o),t&&8,!t);this.v&&(rn(r,this.o),this.v=0),t&&(rr(r,r.length-8,this.c.d()),rr(r,r.length-4,this.l)),this.ondata(r,t)}})();var rm=function(){function e(e){this.v=1,rf.call(this,e)}return e.prototype.push=function(e,t){if(rf.prototype.e.call(this,e),this.v){var r=this.p.length>3?ri(this.p):4;if(r>=this.p.length&&!t)return;this.p=this.p.subarray(r),this.v=0}if(t){if(this.p.length<8)throw"invalid gzip stream";this.p=this.p.subarray(0,-8)}rf.prototype.c.call(this,t)},e}(),rB=function(e){this.ondata=e,t5([t1,t9,function(){return[t4,rf,rm]}],this,0,function(){onmessage=t4(new rm)},9)},rg=(function(){function e(e,t){this.c=tW(),this.v=1,ru.call(this,e,t)}e.prototype.push=function(e,t){ru.prototype.push.call(this,e,t)},e.prototype.p=function(e,t){this.c.p(e);var r=tz(e,this.o,this.v&&2,t&&4,!t);this.v&&(ro(r,this.o),this.v=0),t&&rr(r,r.length-4,this.c.d()),this.ondata(r,t)}}(),function(){function e(e){this.v=1,rf.call(this,e)}return e.prototype.push=function(e,t){if(rf.prototype.e.call(this,e),this.v){if(this.p.length<2&&!t)return;this.p=this.p.subarray(2),this.v=0}if(t){if(this.p.length<4)throw"invalid zlib stream";this.p=this.p.subarray(0,-4)}rf.prototype.c.call(this,t)},e}()),rC=function(e){this.ondata=e,t5([t1,t3,function(){return[t4,rf,rg]}],this,0,function(){onmessage=t4(new rg)},11)};function rv(e,t){return tH((rl(e),e.subarray(2,-4)),t)}var ry=function(){function e(e){this.G=rm,this.I=rf,this.Z=rg,this.ondata=e}return e.prototype.push=function(e,t){if(!this.ondata)throw"no stream handler";if(this.s)this.s.push(e,t);else{if(this.p&&this.p.length){var r=new ts(this.p.length+e.length);r.set(this.p),r.set(e,this.p.length)}else this.p=e;if(this.p.length>2){var n=this,i=function(){n.ondata.apply(n,arguments)};this.s=31==this.p[0]&&139==this.p[1]&&8==this.p[2]?new this.G(i):(15&this.p[0])!=8||this.p[0]>>4>7||(this.p[0]<<8|this.p[1])%31?new this.I(i):new this.Z(i),this.s.push(this.p,t),this.p=null}}},e}();(function(e){this.G=rB,this.I=rA,this.Z=rC,this.ondata=e}).prototype.push=function(e,t){ry.prototype.push.call(this,e,t)};var rM="u">typeof TextEncoder&&new TextEncoder,rx="u">typeof TextDecoder&&new TextDecoder,rE=0;try{rx.decode(tK,{stream:!0}),rE=1}catch(e){}var rF=function(e){for(var t="",r=0;;){var n=e[r++],i=(n>127)+(n>223)+(n>239);if(r+i>e.length)return[t,tS(e,r-1)];i?3==i?t+=String.fromCharCode(55296|(n=((15&n)<<18|(63&e[r++])<<12|(63&e[r++])<<6|63&e[r++])-65536)>>10,56320|1023&n):1&i?t+=String.fromCharCode((31&n)<<6|63&e[r++]):t+=String.fromCharCode((15&n)<<12|(63&e[r++])<<6|63&e[r++]):t+=String.fromCharCode(n)}};function rb(e,t){if(t){for(var r=new ts(e.length),n=0;n<e.length;++n)r[n]=e.charCodeAt(n);return r}if(rM)return rM.encode(e);for(var i=e.length,a=new ts(e.length+(e.length>>1)),s=0,o=function(e){a[s++]=e},n=0;n<i;++n){if(s+5>a.length){var l=new ts(s+8+(i-n<<1));l.set(a),a=l}var c=e.charCodeAt(n);c<128||t?o(c):(c<2048?o(192|c>>6):(c>55295&&c<57344?(o(240|(c=65536+(1047552&c)|1023&e.charCodeAt(++n))>>18),o(128|c>>12&63)):o(224|c>>12),o(128|c>>6&63)),o(128|63&c))}return tS(a,0,s)}(function(e){this.ondata=e,rE?this.t=new TextDecoder:this.p=tK}).prototype.push=function(e,t){if(!this.ondata)throw"no callback";if(t=!!t,this.t){if(this.ondata(this.t.decode(e,{stream:!0}),t),t){if(this.t.decode().length)throw"invalid utf-8 data";this.t=null}return}if(!this.p)throw"stream finished";var r=new ts(this.p.length+e.length);r.set(this.p),r.set(e,this.p.length);var n=rF(r),i=n[0],a=n[1];if(t){if(a.length)throw"invalid utf-8 data";this.p=null}else this.p=a;this.ondata(i,t)},(function(e){this.ondata=e}).prototype.push=function(e,t){if(!this.ondata)throw"no callback";if(this.d)throw"stream finished";this.ondata(rb(e),this.d=t||!1)};var rw=function(e){return 1==e?3:e<6?2:+(9==e)},rI=function(e,t){for(;1!=t7(e,t);t+=4+t7(e,t+2));return[rt(e,t+12),rt(e,t+4),rt(e,t+20)]},rR=function(e){var t=0;if(e)for(var r in e){var n=e[r].length;if(n>65535)throw"extra field too long";t+=n+4}return t},rG=function(e,t,r,n,i,a,s,o){var l=n.length,c=r.extra,u=o&&o.length,d=rR(c);rr(e,t,null!=s?0x2014b50:0x4034b50),t+=4,null!=s&&(e[t++]=20,e[t++]=r.os),e[t]=20,t+=2,e[t++]=r.flag<<1|(null==a&&8),e[t++]=i&&8,e[t++]=255&r.compression,e[t++]=r.compression>>8;var h=new Date(null==r.mtime?Date.now():r.mtime),f=h.getFullYear()-1980;if(f<0||f>119)throw"date not in range 1980-2099";if(rr(e,t,f<<25|h.getMonth()+1<<21|h.getDate()<<16|h.getHours()<<11|h.getMinutes()<<5|h.getSeconds()>>>1),t+=4,null!=a&&(rr(e,t,r.crc),rr(e,t+4,a),rr(e,t+8,r.size)),rr(e,t+12,l),rr(e,t+14,d),t+=16,null!=s&&(rr(e,t,u),rr(e,t+6,r.attrs),rr(e,t+10,s),t+=14),e.set(n,t),t+=l,d)for(var A in c){var p=c[A],m=p.length;rr(e,t,+A),rr(e,t+2,m),e.set(p,t+4),t+=4+m}return u&&(e.set(o,t),t+=u),t},rD=function(e,t,r,n,i){rr(e,t,0x6054b50),rr(e,t+8,r),rr(e,t+10,r),rr(e,t+12,n),rr(e,t+16,i)},rT=function(){function e(e){this.filename=e,this.c=tY(),this.size=0,this.compression=0}return e.prototype.process=function(e,t){this.ondata(null,e,t)},e.prototype.push=function(e,t){if(!this.ondata)throw"no callback - add to ZIP archive before pushing";this.c.p(e),this.size+=e.length,t&&(this.crc=this.c.d()),this.process(e,t||!1)},e}();function rS(e,t){var r=this;t||(t={}),rT.call(this,e),this.d=new ru(t,function(e,t){r.ondata(null,e,t)}),this.compression=8,this.flag=rw(t.level)}function rH(e,t){var r=this;t||(t={}),rT.call(this,e),this.d=new rd(t,function(e,t,n){r.ondata(e,t,n)}),this.compression=8,this.flag=rw(t.level),this.terminate=this.d.terminate}function rL(e){this.ondata=e,this.u=[],this.d=1}rS.prototype.process=function(e,t){try{this.d.push(e,t)}catch(e){this.ondata(e,null,t)}},rS.prototype.push=function(e,t){rT.prototype.push.call(this,e,t)},rH.prototype.process=function(e,t){this.d.push(e,t)},rH.prototype.push=function(e,t){rT.prototype.push.call(this,e,t)},rL.prototype.add=function(e){var t=this;if(2&this.d)throw"stream finished";var r=rb(e.filename),n=r.length,i=e.comment,a=i&&rb(i),s=n!=e.filename.length||a&&i.length!=a.length,o=n+rR(e.extra)+30;if(n>65535)throw"filename too long";var l=new ts(o);rG(l,0,e,r,s);var c=[l],u=function(){for(var e=0,r=c;e<r.length;e++){var n=r[e];t.ondata(null,n,!1)}c=[]},d=this.d;this.d=0;var h=this.u.length,f=tV(e,{f:r,u:s,o:a,t:function(){e.terminate&&e.terminate()},r:function(){if(u(),d){var e=t.u[h+1];e?e.r():t.d=1}d=1}}),A=0;e.ondata=function(r,n,i){if(r)t.ondata(r,n,i),t.terminate();else if(A+=n.length,c.push(n),i){var a=new ts(16);rr(a,0,0x8074b50),rr(a,4,e.crc),rr(a,8,A),rr(a,12,e.size),c.push(a),f.c=A,f.b=o+A+16,f.crc=e.crc,f.size=e.size,d&&f.r(),d=1}else d&&u()},this.u.push(f)},rL.prototype.end=function(){var e=this;if(2&this.d){if(1&this.d)throw"stream finishing";throw"stream finished"}this.d?this.e():this.u.push({r:function(){1&e.d&&(e.u.splice(-1,1),e.e())},t:function(){}}),this.d=3},rL.prototype.e=function(){for(var e=0,t=0,r=0,n=0,i=this.u;n<i.length;n++){var a=i[n];r+=46+a.f.length+rR(a.extra)+(a.o?a.o.length:0)}for(var s=new ts(r+22),o=0,l=this.u;o<l.length;o++){var a=l[o];rG(s,e,a,a.f,a.u,a.c,t,a.o),e+=46+a.f.length+rR(a.extra)+(a.o?a.o.length:0),t+=a.b}rD(s,e,this.u.length,r,t),this.ondata(null,s,!0),this.d=2},rL.prototype.terminate=function(){for(var e=0,t=this.u;e<t.length;e++)t[e].t();this.d=2};var rU=function(){function e(){}return e.prototype.push=function(e,t){this.ondata(null,e,t)},e.compression=0,e}();function rP(){var e=this;this.i=new rf(function(t,r){e.ondata(null,t,r)})}function r_(e,t){var r=this;t<32e4?this.i=new rf(function(e,t){r.ondata(null,e,t)}):(this.i=new rA(function(e,t,n){r.ondata(e,t,n)}),this.terminate=this.i.terminate)}function rJ(e){this.onfile=e,this.k=[],this.o={0:rU},this.p=tK}rP.prototype.push=function(e,t){try{this.i.push(e,t)}catch(r){this.ondata(r,e,t)}},rP.compression=8,r_.prototype.push=function(e,t){this.i.terminate&&(e=tS(e,0)),this.i.push(e,t)},r_.compression=8,rJ.prototype.push=function(e,t){var r=this;if(!this.onfile)throw"no callback";if(!this.p)throw"stream finished";if(this.c>0){var n=Math.min(this.c,e.length),i=e.subarray(0,n);if(this.c-=n,this.d?this.d.push(i,!this.c):this.k[0].push(i),(e=e.subarray(n)).length)return this.push(e,t)}else{var a=0,s=0,o=void 0,l=void 0;this.p.length?e.length?((l=new ts(this.p.length+e.length)).set(this.p),l.set(e,this.p.length)):l=this.p:l=e;for(var c=l.length,u=this.c,d=u&&this.d,h=this;s<c-4&&"break"!==function(){var e=re(l,s);if(0x4034b50==e){a=1,o=s,h.d=null,h.c=0;var t=t7(l,s+6),n=t7(l,s+8),i=8&t,d=t7(l,s+26),f=t7(l,s+28);if(c>s+30+d+f){var A,p,m=[];h.k.unshift(m),a=2;var B=re(l,s+18),g=re(l,s+22),C=function(e,t){if(t){for(var r="",n=0;n<e.length;n+=16384)r+=String.fromCharCode.apply(null,e.subarray(n,n+16384));return r}if(rx)return rx.decode(e);var i=rF(e),a=i[0];if(i[1].length)throw"invalid utf-8 data";return a}(l.subarray(s+30,s+=30+d),!(2048&t));0xffffffff==B?(B=(A=i?[-2]:rI(l,s))[0],g=A[1]):i&&(B=-1),s+=f,h.c=B;var v={name:C,compression:n,start:function(){if(!v.ondata)throw"no callback";if(B){var e=r.o[n];if(!e)throw"unknown compression type "+n;(p=B<0?new e(C):new e(C,B,g)).ondata=function(e,t,r){v.ondata(e,t,r)};for(var t=0;t<m.length;t++){var i=m[t];p.push(i,!1)}r.k[0]==m&&r.c?r.d=p:p.push(tK,!0)}else v.ondata(null,tK,!0)},terminate:function(){p&&p.terminate&&p.terminate()}};B>=0&&(v.size=B,v.originalSize=g),h.onfile(v)}return"break"}if(u){if(0x8074b50==e)return o=s+=12+(-2==u&&8),a=3,h.c=0,"break";else if(0x2014b50==e)return o=s-=4,a=3,h.c=0,"break"}}();++s);if(this.p=tK,u<0){var f=a?l.subarray(0,o-12-(-2==u&&8)-(0x8074b50==re(l,o-16)&&4)):l.subarray(0,s);d?d.push(f,!!a):this.k[+(2==a)].push(f)}if(2&a)return this.push(l.subarray(s),t);this.p=l.subarray(s)}if(t){if(this.c)throw"invalid zip file";this.p=null}},rJ.prototype.register=function(e){this.o[e.compression]=e};let rO=M>=152;class rj extends tn.DataTextureLoader{constructor(e){super(e),this.type=tn.HalfFloatType}parse(e){let t={l:0,c:0,lc:0};function r(e,r,n,i,a){for(;n<e;)r=r<<8|F(i,a),n+=8;t.l=r>>(n-=e)&(1<<e)-1,t.c=r,t.lc=n}let n=Array(59),i={c:0,lc:0};function a(e,t,r,n){e=e<<8|F(r,n),t+=8,i.c=e,i.lc=t}let s={c:0,lc:0};function o(e,t,r,n,o,l,c,u,d,h){if(e==t){n<8&&(a(r,n,o,c),r=i.c,n=i.lc);var f=r>>(n-=8),f=new Uint8Array([f])[0];if(d.value+f>h)return!1;for(var A=u[d.value-1];f-- >0;)u[d.value++]=A}else{if(!(d.value<h))return!1;u[d.value++]=e}s.c=r,s.lc=n}function l(e){var t=65535&e;return t>32767?t-65536:t}let c={a:0,b:0};function u(e,t){var r=l(e),n=l(t),i=r+(1&n)+(n>>1),a=i-n;c.a=i,c.b=a}function d(e,t){var r=65535&t,n=(65535&e)-(r>>1)&65535;c.a=r+n-32768&65535,c.b=n}function h(e,l,c,u,d,h){var f=c.value,A=E(l,c),p=E(l,c);c.value+=4;var m=E(l,c);if(c.value+=4,A<0||A>=65537||p<0||p>=65537)throw"Something wrong with HUF_ENCSIZE";for(var B=Array(65537),g=Array(16384),C=0;C<16384;C++)g[C]={},g[C].len=0,g[C].lit=0,g[C].p=null;var v=u-(c.value-f);if(!function(e,i,a,s,o,l){for(var c=0,u=0;s<=o;s++){if(i.value-i.value>a)return!1;r(6,c,u,e,i);var d=t.l;if(c=t.c,u=t.lc,l[s]=d,63==d){if(i.value-i.value>a)throw"Something wrong with hufUnpackEncTable";r(8,c,u,e,i);var h=t.l+6;if(c=t.c,u=t.lc,s+h>o+1)throw"Something wrong with hufUnpackEncTable";for(;h--;)l[s++]=0;s--}else if(d>=59){var h=d-59+2;if(s+h>o+1)throw"Something wrong with hufUnpackEncTable";for(;h--;)l[s++]=0;s--}}!function(e){for(var t=0;t<=58;++t)n[t]=0;for(var t=0;t<65537;++t)n[e[t]]+=1;for(var r=0,t=58;t>0;--t){var i=r+n[t]>>1;n[t]=r,r=i}for(var t=0;t<65537;++t){var a=e[t];a>0&&(e[t]=a|n[a]++<<6)}}(l)}(e,c,v,A,p,B),m>8*(u-(c.value-f)))throw"Something wrong with hufUncompress";!function(e,t,r,n){for(;t<=r;t++){var i=e[t]>>6,a=63&e[t];if(i>>a)throw"Invalid table entry";if(a>14){var s=n[i>>a-14];if(s.len)throw"Invalid table entry";if(s.lit++,s.p){var o=s.p;s.p=Array(s.lit);for(var l=0;l<s.lit-1;++l)s.p[l]=o[l]}else s.p=[,];s.p[s.lit-1]=t}else if(a)for(var c=0,l=1<<14-a;l>0;l--){var s=n[(i<<14-a)+c];if(s.len||s.p)throw"Invalid table entry";s.len=a,s.lit=t,c++}}}(B,A,p,g),function(e,t,r,n,l,c,u,d,h,f){for(var A=0,p=0,m=Math.trunc(l.value+(c+7)/8);l.value<m;)for(a(A,p,r,l),A=i.c,p=i.lc;p>=14;){var B=t[A>>p-14&16383];if(B.len)p-=B.len,o(B.lit,u,A,p,r,n,l,h,f,d),A=s.c,p=s.lc;else{if(!B.p)throw"hufDecode issues";for(g=0;g<B.lit;g++){for(var g,C=63&e[B.p[g]];p<C&&l.value<m;)a(A,p,r,l),A=i.c,p=i.lc;if(p>=C&&e[B.p[g]]>>6==(A>>p-C&(1<<C)-1)){p-=C,o(B.p[g],u,A,p,r,n,l,h,f,d),A=s.c,p=s.lc;break}}if(g==B.lit)throw"hufDecode issues"}}var v=8-c&7;for(A>>=v,p-=v;p>0;){var B=t[A<<14-p&16383];if(B.len)p-=B.len,o(B.lit,u,A,p,r,n,l,h,f,d),A=s.c,p=s.lc;else throw"hufDecode issues"}}(B,g,e,l,c,m,p,h,d,{value:0})}function f(e){for(var t=1;t<e.length;t++){var r=e[t-1]+e[t]-128;e[t]=r}}function A(e,t){for(var r=0,n=Math.floor((e.length+1)/2),i=0,a=e.length-1;!(i>a)&&(t[i++]=e[r++],!(i>a));){;t[i++]=e[n++]}}function p(e){for(var t=e.byteLength,r=[],n=0,i=new DataView(e);t>0;){var a=i.getInt8(n++);if(a<0){var s=-a;t-=s+1;for(var o=0;o<s;o++)r.push(i.getUint8(n++))}else{var s=a;t-=2;for(var l=i.getUint8(n++),o=0;o<s+1;o++)r.push(l)}}return r}function m(e){return new DataView(e.array.buffer,e.offset.value,e.size)}function B(e){var t=new Uint8Array(p(e.viewer.buffer.slice(e.offset.value,e.offset.value+e.size))),r=new Uint8Array(t.length);return f(t),A(t,r),new DataView(r.buffer)}function g(e){var t=rv(e.array.slice(e.offset.value,e.offset.value+e.size)),r=new Uint8Array(t.length);return f(t),A(t,r),new DataView(r.buffer)}function C(e){for(var t=e.viewer,r={value:e.offset.value},n=new Uint16Array(e.width*e.scanlineBlockSize*(e.channels*e.type)),i=new Uint8Array(8192),a=0,s=Array(e.channels),o=0;o<e.channels;o++)s[o]={},s[o].start=a,s[o].end=s[o].start,s[o].nx=e.width,s[o].ny=e.lines,s[o].size=e.type,a+=s[o].nx*s[o].ny*s[o].size;var l=D(t,r),f=D(t,r);if(f>=8192)throw"Something is wrong with PIZ_COMPRESSION BITMAP_SIZE";if(l<=f)for(var o=0;o<f-l+1;o++)i[o+l]=b(t,r);var A=new Uint16Array(65536),p=function(e,t){for(var r=0,n=0;n<65536;++n)(0==n||e[n>>3]&1<<(7&n))&&(t[r++]=n);for(var i=r-1;r<65536;)t[r++]=0;return i}(i,A),m=E(t,r);h(e.array,t,r,m,n,a);for(var o=0;o<e.channels;++o)for(var B=s[o],g=0;g<s[o].size;++g)!function(e,t,r,n,i,a,s){for(var o=s<16384,l=r>i?i:r,h=1;h<=l;)h<<=1;for(h>>=1,f=h,h>>=1;h>=1;){for(var f,A,p,m,B,g=0,C=0+a*(i-f),v=a*h,y=a*f,M=n*h,x=n*f;g<=C;g+=y){for(var E=g,F=g+n*(r-f);E<=F;E+=x){var b=E+M,w=E+v,I=w+M;o?(u(e[E+t],e[w+t]),A=c.a,m=c.b,u(e[b+t],e[I+t]),p=c.a,B=c.b,u(A,p),e[E+t]=c.a,e[b+t]=c.b,u(m,B)):(d(e[E+t],e[w+t]),A=c.a,m=c.b,d(e[b+t],e[I+t]),p=c.a,B=c.b,d(A,p),e[E+t]=c.a,e[b+t]=c.b,d(m,B)),e[w+t]=c.a,e[I+t]=c.b}if(r&h){var w=E+v;o?u(e[E+t],e[w+t]):d(e[E+t],e[w+t]),A=c.a,e[w+t]=c.b,e[E+t]=A}}if(i&h)for(var E=g,F=g+n*(r-f);E<=F;E+=x){var b=E+M;o?u(e[E+t],e[b+t]):d(e[E+t],e[b+t]),A=c.a,e[b+t]=c.b,e[E+t]=A}f=h,h>>=1}}(n,B.start+g,B.nx,B.size,B.ny,B.nx*B.size,p);for(var C=a,v=0;v<C;++v)n[v]=A[n[v]];for(var y=0,M=new Uint8Array(n.buffer.byteLength),x=0;x<e.lines;x++)for(var F=0;F<e.channels;F++){var B=s[F],w=B.nx*B.size,I=new Uint8Array(n.buffer,2*B.end,2*w);M.set(I,y),y+=2*w,B.end+=w}return new DataView(M.buffer)}function v(e){var t=rv(e.array.slice(e.offset.value,e.offset.value+e.size));let r=e.lines*e.channels*e.width,n=1==e.type?new Uint16Array(r):new Uint32Array(r),i=0,a=0,s=[,,,,];for(let r=0;r<e.lines;r++)for(let r=0;r<e.channels;r++){let r=0;switch(e.type){case 1:s[0]=i,s[1]=s[0]+e.width,i=s[1]+e.width;for(let i=0;i<e.width;++i)r+=t[s[0]++]<<8|t[s[1]++],n[a]=r,a++;break;case 2:s[0]=i,s[1]=s[0]+e.width,s[2]=s[1]+e.width,i=s[2]+e.width;for(let i=0;i<e.width;++i)r+=t[s[0]++]<<24|t[s[1]++]<<16|t[s[2]++]<<8,n[a]=r,a++}}return new DataView(n.buffer)}function y(e){var t=e.viewer,r={value:e.offset.value},n=new Uint8Array(e.width*e.lines*(e.channels*e.type*2)),i={version:w(t,r),unknownUncompressedSize:w(t,r),unknownCompressedSize:w(t,r),acCompressedSize:w(t,r),dcCompressedSize:w(t,r),rleCompressedSize:w(t,r),rleUncompressedSize:w(t,r),rleRawSize:w(t,r),totalAcUncompressedCount:w(t,r),totalDcUncompressedCount:w(t,r),acCompression:w(t,r)};if(i.version<2)throw"EXRLoader.parse: "+U.compression+" version "+i.version+" is unsupported";for(var a=[],s=D(t,r)-2;s>0;){var o=M(t.buffer,r),l=b(t,r),c=l>>2&3,u=new Int8Array([(l>>4)-1])[0],d=b(t,r);a.push({name:o,index:u,type:d,compression:c}),s-=o.length+3}for(var f=U.channels,A=Array(e.channels),m=0;m<e.channels;++m){var B=A[m]={},C=f[m];B.name=C.name,B.compression=0,B.decoded=!1,B.type=C.pixelType,B.pLinear=C.pLinear,B.width=e.width,B.height=e.lines}for(var v={idx:[,,,]},y=0;y<e.channels;++y)for(var B=A[y],m=0;m<a.length;++m){var x=a[m];B.name==x.name&&(B.compression=x.compression,x.index>=0&&(v.idx[x.index]=y),B.offset=y)}if(i.acCompressedSize>0)switch(i.acCompression){case 0:var E=new Uint16Array(i.totalAcUncompressedCount);h(e.array,t,r,i.acCompressedSize,E,i.totalAcUncompressedCount);break;case 1:var F=e.array.slice(r.value,r.value+i.totalAcUncompressedCount),I=rv(F),E=new Uint16Array(I.buffer);r.value+=i.totalAcUncompressedCount}if(i.dcCompressedSize>0){var R=new Uint16Array(g({array:e.array,offset:r,size:i.dcCompressedSize}).buffer);r.value+=i.dcCompressedSize}if(i.rleRawSize>0){var F=e.array.slice(r.value,r.value+i.rleCompressedSize),I=rv(F),T=p(I.buffer);r.value+=i.rleCompressedSize}for(var S=0,H=Array(A.length),m=0;m<H.length;++m)H[m]=[];for(var L=0;L<e.lines;++L)for(var P=0;P<A.length;++P)H[P].push(S),S+=A[P].width*e.type*2;!function(e,t,r,n,i,a){var s=new DataView(a.buffer),o=r[e.idx[0]].width,l=r[e.idx[0]].height,c=Math.floor(o/8),u=Math.ceil(o/8),d=Math.ceil(l/8),h=o-(u-1)*8,f=l-(d-1)*8,A={value:0},p=[,,,],m=[,,,],B=[,,,],g=[,,,],C=[,,,];for(let r=0;r<3;++r)C[r]=t[e.idx[r]],p[r]=r<1?0:p[r-1]+u*d,m[r]=new Float32Array(64),B[r]=new Uint16Array(64),g[r]=new Uint16Array(64*u);for(let t=0;t<d;++t){var v,y,M=8;t==d-1&&(M=f);var x=8;for(let e=0;e<u;++e){e==u-1&&(x=h);for(let e=0;e<3;++e){B[e].fill(0),B[e][0]=i[p[e]++],function(e,t,r){for(var n,i=1;i<64;)65280==(n=t[e.value])?i=64:n>>8==255?i+=255&n:(r[i]=n,i++),e.value++}(A,n,B[e]),v=B[e],(y=m[e])[0]=G(v[0]),y[1]=G(v[1]),y[2]=G(v[5]),y[3]=G(v[6]),y[4]=G(v[14]),y[5]=G(v[15]),y[6]=G(v[27]),y[7]=G(v[28]),y[8]=G(v[2]),y[9]=G(v[4]),y[10]=G(v[7]),y[11]=G(v[13]),y[12]=G(v[16]),y[13]=G(v[26]),y[14]=G(v[29]),y[15]=G(v[42]),y[16]=G(v[3]),y[17]=G(v[8]),y[18]=G(v[12]),y[19]=G(v[17]),y[20]=G(v[25]),y[21]=G(v[30]),y[22]=G(v[41]),y[23]=G(v[43]),y[24]=G(v[9]),y[25]=G(v[11]),y[26]=G(v[18]),y[27]=G(v[24]),y[28]=G(v[31]),y[29]=G(v[40]),y[30]=G(v[44]),y[31]=G(v[53]),y[32]=G(v[10]),y[33]=G(v[19]),y[34]=G(v[23]),y[35]=G(v[32]),y[36]=G(v[39]),y[37]=G(v[45]),y[38]=G(v[52]),y[39]=G(v[54]),y[40]=G(v[20]),y[41]=G(v[22]),y[42]=G(v[33]),y[43]=G(v[38]),y[44]=G(v[46]),y[45]=G(v[51]),y[46]=G(v[55]),y[47]=G(v[60]),y[48]=G(v[21]),y[49]=G(v[34]),y[50]=G(v[37]),y[51]=G(v[47]),y[52]=G(v[50]),y[53]=G(v[56]),y[54]=G(v[59]),y[55]=G(v[61]),y[56]=G(v[35]),y[57]=G(v[36]),y[58]=G(v[48]),y[59]=G(v[49]),y[60]=G(v[57]),y[61]=G(v[58]),y[62]=G(v[62]),y[63]=G(v[63]),function(e){let t=.5*Math.cos(3.14159/16),r=.5*Math.cos(3.14159/8),n=.5*Math.cos(3*3.14159/16),i=.5*Math.cos(3*3.14159/8);for(var a=[,,,,],s=[,,,,],o=[,,,,],l=[,,,,],c=0;c<8;++c){var u=8*c;a[0]=r*e[u+2],a[1]=i*e[u+2],a[2]=r*e[u+6],a[3]=i*e[u+6],s[0]=t*e[u+1]+n*e[u+3]+.2777854612564676*e[u+5]+.09754573032714427*e[u+7],s[1]=n*e[u+1]-.09754573032714427*e[u+3]-t*e[u+5]-.2777854612564676*e[u+7],s[2]=.2777854612564676*e[u+1]-t*e[u+3]+.09754573032714427*e[u+5]+n*e[u+7],s[3]=.09754573032714427*e[u+1]-.2777854612564676*e[u+3]+n*e[u+5]-t*e[u+7],o[0]=.35355362513961314*(e[u+0]+e[u+4]),o[3]=.35355362513961314*(e[u+0]-e[u+4]),o[1]=a[0]+a[3],o[2]=a[1]-a[2],l[0]=o[0]+o[1],l[1]=o[3]+o[2],l[2]=o[3]-o[2],l[3]=o[0]-o[1],e[u+0]=l[0]+s[0],e[u+1]=l[1]+s[1],e[u+2]=l[2]+s[2],e[u+3]=l[3]+s[3],e[u+4]=l[3]-s[3],e[u+5]=l[2]-s[2],e[u+6]=l[1]-s[1],e[u+7]=l[0]-s[0]}for(var d=0;d<8;++d)a[0]=r*e[16+d],a[1]=i*e[16+d],a[2]=r*e[48+d],a[3]=i*e[48+d],s[0]=t*e[8+d]+n*e[24+d]+.2777854612564676*e[40+d]+.09754573032714427*e[56+d],s[1]=n*e[8+d]-.09754573032714427*e[24+d]-t*e[40+d]-.2777854612564676*e[56+d],s[2]=.2777854612564676*e[8+d]-t*e[24+d]+.09754573032714427*e[40+d]+n*e[56+d],s[3]=.09754573032714427*e[8+d]-.2777854612564676*e[24+d]+n*e[40+d]-t*e[56+d],o[0]=.35355362513961314*(e[d]+e[32+d]),o[3]=.35355362513961314*(e[d]-e[32+d]),o[1]=a[0]+a[3],o[2]=a[1]-a[2],l[0]=o[0]+o[1],l[1]=o[3]+o[2],l[2]=o[3]-o[2],l[3]=o[0]-o[1],e[0+d]=l[0]+s[0],e[8+d]=l[1]+s[1],e[16+d]=l[2]+s[2],e[24+d]=l[3]+s[3],e[32+d]=l[3]-s[3],e[40+d]=l[2]-s[2],e[48+d]=l[1]-s[1],e[56+d]=l[0]-s[0]}(m[e])}for(var E=m,F=0;F<64;++F){var b=E[0][F],w=E[1][F],I=E[2][F];E[0][F]=b+1.5747*I,E[1][F]=b-.1873*w-.4682*I,E[2][F]=b+1.8556*w}for(let t=0;t<3;++t)!function(e,t,r){for(var n,i=0;i<64;++i){t[r+i]=tn.DataUtils.toHalfFloat((n=e[i])<=1?Math.sign(n)*Math.pow(Math.abs(n),2.2):Math.sign(n)*Math.pow(9.025013291561939,Math.abs(n)-1))}}(m[t],g[t],64*e)}let a=0;for(let n=0;n<3;++n){let i=r[e.idx[n]].type;for(let e=8*t;e<8*t+M;++e){a=C[n][e];for(let t=0;t<c;++t){let r=64*t+(7&e)*8;s.setUint16(a+0*i,g[n][r+0],!0),s.setUint16(a+2*i,g[n][r+1],!0),s.setUint16(a+4*i,g[n][r+2],!0),s.setUint16(a+6*i,g[n][r+3],!0),s.setUint16(a+8*i,g[n][r+4],!0),s.setUint16(a+10*i,g[n][r+5],!0),s.setUint16(a+12*i,g[n][r+6],!0),s.setUint16(a+14*i,g[n][r+7],!0),a+=16*i}}if(c!=u)for(let e=8*t;e<8*t+M;++e){let t=C[n][e]+8*c*2*i,r=64*c+(7&e)*8;for(let e=0;e<x;++e)s.setUint16(t+2*e*i,g[n][r+e],!0)}}}for(var R=new Uint16Array(o),s=new DataView(a.buffer),D=0;D<3;++D){r[e.idx[D]].decoded=!0;var T=r[e.idx[D]].type;if(2==r[D].type)for(var S=0;S<l;++S){let e=C[D][S];for(var H=0;H<o;++H)R[H]=s.getUint16(e+2*H*T,!0);for(var H=0;H<o;++H)s.setFloat32(e+2*H*T,G(R[H]),!0)}}}(v,H,A,E,R,n);for(var m=0;m<A.length;++m){var B=A[m];if(!B.decoded)if(2===B.compression)for(var _=0,J=0,L=0;L<e.lines;++L){for(var O=H[m][_],j=0;j<B.width;++j){for(var k=0;k<2*B.type;++k)n[O++]=T[J+k*B.width*B.height];J++}_++}else throw"EXRLoader.parse: unsupported channel compression"}return new DataView(n.buffer)}function M(e,t){for(var r=new Uint8Array(e),n=0;0!=r[t.value+n];)n+=1;var i=new TextDecoder().decode(r.slice(t.value,t.value+n));return t.value=t.value+n+1,i}function x(e,t){var r=e.getInt32(t.value,!0);return t.value=t.value+4,r}function E(e,t){var r=e.getUint32(t.value,!0);return t.value=t.value+4,r}function F(e,t){var r=e[t.value];return t.value=t.value+1,r}function b(e,t){var r=e.getUint8(t.value);return t.value=t.value+1,r}let w=function(e,t){let r;return r="getBigInt64"in DataView.prototype?Number(e.getBigInt64(t.value,!0)):e.getUint32(t.value+4,!0)+Number(e.getUint32(t.value,!0)<<32),t.value+=8,r};function I(e,t){var r=e.getFloat32(t.value,!0);return t.value+=4,r}function R(e,t){return tn.DataUtils.toHalfFloat(I(e,t))}function G(e){var t=(31744&e)>>10,r=1023&e;return(e>>15?-1:1)*(t?31===t?r?NaN:1/0:Math.pow(2,t-15)*(1+r/1024):r/1024*6103515625e-14)}function D(e,t){var r=e.getUint16(t.value,!0);return t.value+=2,r}function T(e,t){return G(D(e,t))}let S=new DataView(e),H=new Uint8Array(e),L={value:0},U=function(e,t,r){let n={};if(0x1312f76!=e.getUint32(0,!0))throw"THREE.EXRLoader: provided file doesn't appear to be in OpenEXR format.";n.version=e.getUint8(4);let i=e.getUint8(5);n.spec={singleTile:!!(2&i),longName:!!(4&i),deepFormat:!!(8&i),multiPart:!!(16&i)},r.value=8;for(var a=!0;a;){var s=M(t,r);if(0==s)a=!1;else{var o=M(t,r),l=E(e,r),c=function(e,t,r,n,i){var a,s,o,l,c,u,d;if("string"===n||"stringvector"===n||"iccProfile"===n)return a=new TextDecoder().decode(new Uint8Array(t).slice(r.value,r.value+i)),r.value=r.value+i,a;if("chlist"===n)return function(e,t,r,n){for(var i=r.value,a=[];r.value<i+n-1;){var s=M(t,r),o=x(e,r),l=b(e,r);r.value+=3;var c=x(e,r),u=x(e,r);a.push({name:s,pixelType:o,pLinear:l,xSampling:c,ySampling:u})}return r.value+=1,a}(e,t,r,i);if("chromaticities"===n)return s=I(e,r),o=I(e,r),l=I(e,r),c=I(e,r),u=I(e,r),{redX:s,redY:o,greenX:l,greenY:c,blueX:u,blueY:I(e,r),whiteX:I(e,r),whiteY:I(e,r)};if("compression"===n)return["NO_COMPRESSION","RLE_COMPRESSION","ZIPS_COMPRESSION","ZIP_COMPRESSION","PIZ_COMPRESSION","PXR24_COMPRESSION","B44_COMPRESSION","B44A_COMPRESSION","DWAA_COMPRESSION","DWAB_COMPRESSION"][b(e,r)];if("box2i"===n)return d=E(e,r),{xMin:d,yMin:E(e,r),xMax:E(e,r),yMax:E(e,r)};else if("lineOrder"===n)return["INCREASING_Y"][b(e,r)];else if("float"===n)return I(e,r);else if("v2f"===n)return[I(e,r),I(e,r)];else if("v3f"===n)return[I(e,r),I(e,r),I(e,r)];else if("int"===n)return x(e,r);else if("rational"===n)return[x(e,r),E(e,r)];else if("timecode"===n)return[E(e,r),E(e,r)];else return"preview"===n?(r.value+=i,"skipped"):(r.value+=i,void 0)}(e,t,r,o,l);void 0===c?console.warn(`EXRLoader.parse: skipped unknown header attribute type '${o}'.`):n[s]=c}}if((-5&i)!=0)throw console.error("EXRHeader:",n),"THREE.EXRLoader: provided file is currently unsupported.";return n}(S,e,L),P=function(e,t,r,n,i){let a={size:0,viewer:t,array:r,offset:n,width:e.dataWindow.xMax-e.dataWindow.xMin+1,height:e.dataWindow.yMax-e.dataWindow.yMin+1,channels:e.channels.length,bytesPerLine:null,lines:null,inputSize:null,type:e.channels[0].pixelType,uncompress:null,getter:null,format:null,[rO?"colorSpace":"encoding"]:null};switch(e.compression){case"NO_COMPRESSION":a.lines=1,a.uncompress=m;break;case"RLE_COMPRESSION":a.lines=1,a.uncompress=B;break;case"ZIPS_COMPRESSION":a.lines=1,a.uncompress=g;break;case"ZIP_COMPRESSION":a.lines=16,a.uncompress=g;break;case"PIZ_COMPRESSION":a.lines=32,a.uncompress=C;break;case"PXR24_COMPRESSION":a.lines=16,a.uncompress=v;break;case"DWAA_COMPRESSION":a.lines=32,a.uncompress=y;break;case"DWAB_COMPRESSION":a.lines=256,a.uncompress=y;break;default:throw"EXRLoader.parse: "+e.compression+" is unsupported"}if(a.scanlineBlockSize=a.lines,1==a.type)switch(i){case tn.FloatType:a.getter=T,a.inputSize=2;break;case tn.HalfFloatType:a.getter=D,a.inputSize=2}else if(2==a.type)switch(i){case tn.FloatType:a.getter=I,a.inputSize=4;break;case tn.HalfFloatType:a.getter=R,a.inputSize=4}else throw"EXRLoader.parse: unsupported pixelType "+a.type+" for "+e.compression+".";a.blockCount=(e.dataWindow.yMax+1)/a.scanlineBlockSize;for(var s=0;s<a.blockCount;s++)w(t,n);a.outputChannels=3==a.channels?4:a.channels;let o=a.width*a.height*a.outputChannels;switch(i){case tn.FloatType:a.byteArray=new Float32Array(o),a.channels<a.outputChannels&&a.byteArray.fill(1,0,o);break;case tn.HalfFloatType:a.byteArray=new Uint16Array(o),a.channels<a.outputChannels&&a.byteArray.fill(15360,0,o);break;default:console.error("THREE.EXRLoader: unsupported type: ",i)}return a.bytesPerLine=a.width*a.inputSize*a.channels,4==a.outputChannels?a.format=tn.RGBAFormat:a.format=tn.RedFormat,rO?a.colorSpace="srgb-linear":a.encoding=3e3,a}(U,S,H,L,this.type),_={value:0},J={R:0,G:1,B:2,A:3,Y:0};for(let e=0;e<P.height/P.scanlineBlockSize;e++){let t=E(S,L);P.size=E(S,L),P.lines=t+P.scanlineBlockSize>P.height?P.height-t:P.scanlineBlockSize;let r=P.size<P.lines*P.bytesPerLine?P.uncompress(P):m(P);L.value+=P.size;for(let t=0;t<P.scanlineBlockSize;t++){let n=t+e*P.scanlineBlockSize;if(n>=P.height)break;for(let e=0;e<P.channels;e++){let i=J[U.channels[e].name];for(let a=0;a<P.width;a++){_.value=(t*(P.channels*P.width)+e*P.width+a)*P.inputSize;let s=(P.height-1-n)*(P.width*P.outputChannels)+a*P.outputChannels+i;P.byteArray[s]=P.getter(r,_)}}}}return{header:U,width:P.width,height:P.height,data:P.byteArray,format:P.format,[rO?"colorSpace":"encoding"]:P[rO?"colorSpace":"encoding"],type:this.type}}setDataType(e){return this.type=e,this}load(e,t,r,n){return super.load(e,function(e,r){rO?e.colorSpace=r.colorSpace:e.encoding=r.encoding,e.minFilter=tn.LinearFilter,e.magFilter=tn.LinearFilter,e.generateMipmaps=!1,e.flipY=!1,t&&t(e,r)},r,n)}}let rk=(e,t,r)=>{let n;switch(e){case d.UnsignedByteType:n=new Uint8ClampedArray(t*r*4);break;case d.HalfFloatType:n=new Uint16Array(t*r*4);break;case d.UnsignedIntType:n=new Uint32Array(t*r*4);break;case d.ByteType:n=new Int8Array(t*r*4);break;case d.ShortType:n=new Int16Array(t*r*4);break;case d.IntType:n=new Int32Array(t*r*4);break;case d.FloatType:n=new Float32Array(t*r*4);break;default:throw Error("Unsupported data type")}return n};class rN{_renderer;_rendererIsDisposable=!1;_material;_scene;_camera;_quad;_renderTarget;_width;_height;_type;_colorSpace;_supportsReadPixels=!0;constructor(e){this._width=e.width,this._height=e.height,this._type=e.type,this._colorSpace=e.colorSpace;const t={format:d.RGBAFormat,depthBuffer:!1,stencilBuffer:!1,type:this._type,colorSpace:this._colorSpace,anisotropy:e.renderTargetOptions?.anisotropy!==void 0?e.renderTargetOptions?.anisotropy:1,generateMipmaps:e.renderTargetOptions?.generateMipmaps!==void 0&&e.renderTargetOptions?.generateMipmaps,magFilter:e.renderTargetOptions?.magFilter!==void 0?e.renderTargetOptions?.magFilter:d.LinearFilter,minFilter:e.renderTargetOptions?.minFilter!==void 0?e.renderTargetOptions?.minFilter:d.LinearFilter,samples:e.renderTargetOptions?.samples!==void 0?e.renderTargetOptions?.samples:void 0,wrapS:e.renderTargetOptions?.wrapS!==void 0?e.renderTargetOptions?.wrapS:d.ClampToEdgeWrapping,wrapT:e.renderTargetOptions?.wrapT!==void 0?e.renderTargetOptions?.wrapT:d.ClampToEdgeWrapping};if(this._material=e.material,e.renderer?this._renderer=e.renderer:(this._renderer=rN.instantiateRenderer(),this._rendererIsDisposable=!0),this._scene=new d.Scene,this._camera=new d.OrthographicCamera,this._camera.position.set(0,0,10),this._camera.left=-.5,this._camera.right=.5,this._camera.top=.5,this._camera.bottom=-.5,this._camera.updateProjectionMatrix(),!((e,t,r,n)=>{if(void 0!==i)return i;let a=new d.WebGLRenderTarget(1,1,n);t.setRenderTarget(a);let s=new d.Mesh(new d.PlaneGeometry,new d.MeshBasicMaterial({color:0xffffff}));t.render(s,r),t.setRenderTarget(null);let o=rk(e,a.width,a.height);return t.readRenderTargetPixels(a,0,0,a.width,a.height,o),a.dispose(),s.geometry.dispose(),s.material.dispose(),i=0!==o[0]})(this._type,this._renderer,this._camera,t)){let e;this._type===d.HalfFloatType&&(e=this._renderer.extensions.has("EXT_color_buffer_float")?d.FloatType:void 0),void 0!==e?(console.warn(`This browser does not support reading pixels from ${this._type} RenderTargets, switching to ${d.FloatType}`),this._type=e):(this._supportsReadPixels=!1,console.warn("This browser dos not support toArray or toDataTexture, calls to those methods will result in an error thrown"))}this._quad=new d.Mesh(new d.PlaneGeometry,this._material),this._quad.geometry.computeBoundingBox(),this._scene.add(this._quad),this._renderTarget=new d.WebGLRenderTarget(this.width,this.height,t),this._renderTarget.texture.mapping=e.renderTargetOptions?.mapping!==void 0?e.renderTargetOptions?.mapping:d.UVMapping}static instantiateRenderer(){let e=new y.WebGLRenderer;return e.setSize(128,128),e}render=()=>{this._renderer.setRenderTarget(this._renderTarget);try{this._renderer.render(this._scene,this._camera)}catch(e){throw this._renderer.setRenderTarget(null),e}this._renderer.setRenderTarget(null)};toArray(){if(!this._supportsReadPixels)throw Error("Can't read pixels in this browser");let e=rk(this._type,this._width,this._height);return this._renderer.readRenderTargetPixels(this._renderTarget,0,0,this._width,this._height,e),e}toDataTexture(e){let t=new d.DataTexture(this.toArray(),this.width,this.height,d.RGBAFormat,this._type,e?.mapping||d.UVMapping,e?.wrapS||d.ClampToEdgeWrapping,e?.wrapT||d.ClampToEdgeWrapping,e?.magFilter||d.LinearFilter,e?.minFilter||d.LinearFilter,e?.anisotropy||1,d.LinearSRGBColorSpace);return t.generateMipmaps=e?.generateMipmaps!==void 0&&e?.generateMipmaps,t}disposeOnDemandRenderer(){this._renderer.setRenderTarget(null),this._rendererIsDisposable&&(this._renderer.dispose(),this._renderer.forceContextLoss())}dispose(e){this.disposeOnDemandRenderer(),e&&this.renderTarget.dispose(),this.material instanceof d.ShaderMaterial&&Object.values(this.material.uniforms).forEach(e=>{e.value instanceof d.Texture&&e.value.dispose()}),Object.values(this.material).forEach(e=>{e instanceof d.Texture&&e.dispose()}),this.material.dispose(),this._quad.geometry.dispose()}get width(){return this._width}set width(e){this._width=e,this._renderTarget.setSize(this._width,this._height)}get height(){return this._height}set height(e){this._height=e,this._renderTarget.setSize(this._width,this._height)}get renderer(){return this._renderer}get renderTarget(){return this._renderTarget}set renderTarget(e){this._renderTarget=e,this._width=e.width,this._height=e.height}get material(){return this._material}get type(){return this._type}get colorSpace(){return this._colorSpace}}var rK=d;class rQ extends Error{}class rX extends Error{}let rY=(e,t,r)=>{let n=RegExp(`${t}="([^"]*)"`,"i").exec(e);if(n)return n[1];let i=RegExp(`<${t}[^>]*>([\\s\\S]*?)</${t}>`,"i").exec(e);if(i){let e=i[1].match(/<rdf:li>([^<]*)<\/rdf:li>/g);return e&&3===e.length?e.map(e=>e.replace(/<\/?rdf:li>/g,"")):i[1].trim()}if(void 0!==r)return r;throw Error(`Can't find ${t} in gainmap metadata`)};class rW{options;constructor(e){this.options={debug:!!e&&void 0!==e.debug&&e.debug,extractFII:!e||void 0===e.extractFII||e.extractFII,extractNonFII:!e||void 0===e.extractNonFII||e.extractNonFII}}extract(e){return new Promise((t,r)=>{let n,i=this.options.debug,a=new DataView(e.buffer);if(65496!==a.getUint16(0))return void r(Error("Not a valid jpeg"));let s=a.byteLength,o=2,l=0;for(;o<s;){if(++l>250)return void r(Error(`Found no marker after ${l} loops 😵`));if(255!==a.getUint8(o))return void r(Error(`Not a valid marker at offset 0x${o.toString(16)}, found: 0x${a.getUint8(o).toString(16)}`));if(n=a.getUint8(o+1),i&&console.log(`Marker: ${n.toString(16)}`),226===n){i&&console.log("Found APP2 marker (0xffe2)");let e=o+4;if(0x4d504600===a.getUint32(e)){let n,i=e+4;if(18761===a.getUint16(i))n=!1;else{if(19789!==a.getUint16(i))return void r(Error("No valid endianness marker found in TIFF header"));n=!0}if(42!==a.getUint16(i+2,!n))return void r(Error("Not valid TIFF data! (no 0x002A marker)"));let s=a.getUint32(i+4,!n);if(s<8)return void r(Error("Not valid TIFF data! (First offset less than 8)"));let o=i+s,l=a.getUint16(o,!n),c=o+2,u=0;for(let e=c;e<c+12*l;e+=12)45057===a.getUint16(e,!n)&&(u=a.getUint32(e+8,!n));let d=o+2+12*l+4,h=[];for(let e=d;e<d+16*u;e+=16){let t={MPType:a.getUint32(e,!n),size:a.getUint32(e+4,!n),dataOffset:a.getUint32(e+8,!n),dependantImages:a.getUint32(e+12,!n),start:-1,end:-1,isFII:!1};t.dataOffset?(t.start=i+t.dataOffset,t.isFII=!1):(t.start=0,t.isFII=!0),t.end=t.start+t.size,h.push(t)}if(this.options.extractNonFII&&h.length){let e=new Blob([a]),r=[];for(let t of h){if(t.isFII&&!this.options.extractFII)continue;let n=e.slice(t.start,t.end+1,"image/jpeg");r.push(n)}t(r)}}}o+=2+a.getUint16(o+2)}})}}let rz=async e=>{let t=(e=>{let t,r=(t="u">typeof TextDecoder?new TextDecoder().decode(e):e.toString()).indexOf("<x:xmpmeta");for(;-1!==r;){let e=t.indexOf("x:xmpmeta>",r),n=t.slice(r,e+10);try{let e=rY(n,"hdrgm:GainMapMin","0"),t=rY(n,"hdrgm:GainMapMax"),r=rY(n,"hdrgm:Gamma","1"),i=rY(n,"hdrgm:OffsetSDR","0.015625"),a=rY(n,"hdrgm:OffsetHDR","0.015625"),s=/hdrgm:HDRCapacityMin="([^"]*)"/.exec(n),o=s?s[1]:"0",l=/hdrgm:HDRCapacityMax="([^"]*)"/.exec(n);if(!l)throw Error("Incomplete gainmap metadata");let c=l[1];return{gainMapMin:Array.isArray(e)?e.map(e=>parseFloat(e)):[parseFloat(e),parseFloat(e),parseFloat(e)],gainMapMax:Array.isArray(t)?t.map(e=>parseFloat(e)):[parseFloat(t),parseFloat(t),parseFloat(t)],gamma:Array.isArray(r)?r.map(e=>parseFloat(e)):[parseFloat(r),parseFloat(r),parseFloat(r)],offsetSdr:Array.isArray(i)?i.map(e=>parseFloat(e)):[parseFloat(i),parseFloat(i),parseFloat(i)],offsetHdr:Array.isArray(a)?a.map(e=>parseFloat(e)):[parseFloat(a),parseFloat(a),parseFloat(a)],hdrCapacityMin:parseFloat(o),hdrCapacityMax:parseFloat(c)}}catch(e){}r=t.indexOf("<x:xmpmeta",e)}})(e);if(!t)throw new rX("Gain map XMP metadata not found");let r=new rW({extractFII:!0,extractNonFII:!0}),n=await r.extract(e);if(2!==n.length)throw new rQ("Gain map recovery image not found");return{sdr:new Uint8Array(await n[0].arrayBuffer()),gainMap:new Uint8Array(await n[1].arrayBuffer()),metadata:t}},rV=e=>new Promise((t,r)=>{let n=document.createElement("img");n.onload=()=>{t(n)},n.onerror=e=>{r(e)},n.src=URL.createObjectURL(e)});class rZ extends rK.Loader{_renderer;_renderTargetOptions;_internalLoadingManager;_config;constructor(e,t){super(t),this._config=e,e.renderer&&(this._renderer=e.renderer),this._internalLoadingManager=new rK.LoadingManager}setRenderer(e){return this._renderer=e,this}setRenderTargetOptions(e){return this._renderTargetOptions=e,this}prepareQuadRenderer(){this._renderer||console.warn("WARNING: A Renderer was not passed to this Loader constructor or in setRenderer, the result of this Loader will need to be converted to a Data Texture with toDataTexture() before you can use it in your renderer.");let e=this._config.createMaterial({gainMapMax:[1,1,1],gainMapMin:[0,0,0],gamma:[1,1,1],offsetHdr:[1,1,1],offsetSdr:[1,1,1],hdrCapacityMax:1,hdrCapacityMin:0,maxDisplayBoost:1,gainMap:new rK.Texture,sdr:new rK.Texture});return this._config.createQuadRenderer({width:16,height:16,type:rK.HalfFloatType,colorSpace:rK.LinearSRGBColorSpace,material:e,renderer:this._renderer,renderTargetOptions:this._renderTargetOptions})}async processImages(e,t,r){let n,i,a=t?new Blob([t],{type:"image/jpeg"}):void 0,s=new Blob([e],{type:"image/jpeg"}),o=!1;if("u"<typeof createImageBitmap){let e=await Promise.all([a?rV(a):Promise.resolve(void 0),rV(s)]);i=e[0],n=e[1],o="flipY"===r}else{let e=await Promise.all([a?createImageBitmap(a,{imageOrientation:r||"flipY"}):Promise.resolve(void 0),createImageBitmap(s,{imageOrientation:r||"flipY"})]);i=e[0],n=e[1]}return{sdrImage:n,gainMapImage:i,needsFlip:o}}createTextures(e,t,r){let n=new rK.Texture(t||new ImageData(2,2),rK.UVMapping,rK.ClampToEdgeWrapping,rK.ClampToEdgeWrapping,rK.LinearFilter,rK.LinearMipMapLinearFilter,rK.RGBAFormat,rK.UnsignedByteType,1,rK.LinearSRGBColorSpace);n.flipY=r,n.needsUpdate=!0;let i=new rK.Texture(e,rK.UVMapping,rK.ClampToEdgeWrapping,rK.ClampToEdgeWrapping,rK.LinearFilter,rK.LinearMipMapLinearFilter,rK.RGBAFormat,rK.UnsignedByteType,1,rK.SRGBColorSpace);return i.flipY=r,i.needsUpdate=!0,{gainMap:n,sdr:i}}updateQuadRenderer(e,t,r,n,i){e.width=t.width,e.height=t.height,e.material.gainMap=r,e.material.sdr=n,e.material.gainMapMin=i.gainMapMin,e.material.gainMapMax=i.gainMapMax,e.material.offsetHdr=i.offsetHdr,e.material.offsetSdr=i.offsetSdr,e.material.gamma=i.gamma,e.material.hdrCapacityMin=i.hdrCapacityMin,e.material.hdrCapacityMax=i.hdrCapacityMax,e.material.maxDisplayBoost=Math.pow(2,i.hdrCapacityMax),e.material.needsUpdate=!0}}var rq=d;let r$=`
varying vec2 vUv;
void main() {
vUv = uv;
gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
}
`,r0=`
// min half float value
#define HALF_FLOAT_MIN vec3( -65504, -65504, -65504 )
// max half float value
#define HALF_FLOAT_MAX vec3( 65504, 65504, 65504 )
uniform sampler2D sdr;
uniform sampler2D gainMap;
uniform vec3 gamma;
uniform vec3 offsetHdr;
uniform vec3 offsetSdr;
uniform vec3 gainMapMin;
uniform vec3 gainMapMax;
uniform float weightFactor;
varying vec2 vUv;
void main() {
vec3 rgb = texture2D( sdr, vUv ).rgb;
vec3 recovery = texture2D( gainMap, vUv ).rgb;
vec3 logRecovery = pow( recovery, gamma );
vec3 logBoost = gainMapMin * ( 1.0 - logRecovery ) + gainMapMax * logRecovery;
vec3 hdrColor = (rgb + offsetSdr) * exp2( logBoost * weightFactor ) - offsetHdr;
vec3 clampedHdrColor = max( HALF_FLOAT_MIN, min( HALF_FLOAT_MAX, hdrColor ));
gl_FragColor = vec4( clampedHdrColor , 1.0 );
}
`;class r1 extends rq.ShaderMaterial{_maxDisplayBoost;_hdrCapacityMin;_hdrCapacityMax;constructor({gamma:e,offsetHdr:t,offsetSdr:r,gainMapMin:n,gainMapMax:i,maxDisplayBoost:a,hdrCapacityMin:s,hdrCapacityMax:o,sdr:l,gainMap:c}){super({name:"GainMapDecoderMaterial",vertexShader:r$,fragmentShader:r0,uniforms:{sdr:{value:l},gainMap:{value:c},gamma:{value:new rq.Vector3(1/e[0],1/e[1],1/e[2])},offsetHdr:{value:new rq.Vector3().fromArray(t)},offsetSdr:{value:new rq.Vector3().fromArray(r)},gainMapMin:{value:new rq.Vector3().fromArray(n)},gainMapMax:{value:new rq.Vector3().fromArray(i)},weightFactor:{value:(Math.log2(a)-s)/(o-s)}},blending:rq.NoBlending,depthTest:!1,depthWrite:!1}),this._maxDisplayBoost=a,this._hdrCapacityMin=s,this._hdrCapacityMax=o,this.needsUpdate=!0,this.uniformsNeedUpdate=!0}get sdr(){return this.uniforms.sdr.value}set sdr(e){this.uniforms.sdr.value=e}get gainMap(){return this.uniforms.gainMap.value}set gainMap(e){this.uniforms.gainMap.value=e}get offsetHdr(){return this.uniforms.offsetHdr.value.toArray()}set offsetHdr(e){this.uniforms.offsetHdr.value.fromArray(e)}get offsetSdr(){return this.uniforms.offsetSdr.value.toArray()}set offsetSdr(e){this.uniforms.offsetSdr.value.fromArray(e)}get gainMapMin(){return this.uniforms.gainMapMin.value.toArray()}set gainMapMin(e){this.uniforms.gainMapMin.value.fromArray(e)}get gainMapMax(){return this.uniforms.gainMapMax.value.toArray()}set gainMapMax(e){this.uniforms.gainMapMax.value.fromArray(e)}get gamma(){let e=this.uniforms.gamma.value;return[1/e.x,1/e.y,1/e.z]}set gamma(e){let t=this.uniforms.gamma.value;t.x=1/e[0],t.y=1/e[1],t.z=1/e[2]}get hdrCapacityMin(){return this._hdrCapacityMin}set hdrCapacityMin(e){this._hdrCapacityMin=e,this.calculateWeight()}get hdrCapacityMax(){return this._hdrCapacityMax}set hdrCapacityMax(e){this._hdrCapacityMax=e,this.calculateWeight()}get maxDisplayBoost(){return this._maxDisplayBoost}set maxDisplayBoost(e){this._maxDisplayBoost=Math.max(1,Math.min(65504,e)),this.calculateWeight()}calculateWeight(){let e=(Math.log2(this._maxDisplayBoost)-this._hdrCapacityMin)/(this._hdrCapacityMax-this._hdrCapacityMin);this.uniforms.weightFactor.value=Math.max(0,Math.min(1,e))}}y.WebGLRenderer;class r2 extends rZ{constructor(e,t){super({renderer:e,createMaterial:e=>new r1(e),createQuadRenderer:e=>new rN(e)},t)}async render(e,t,r,n){let{sdrImage:i,gainMapImage:a,needsFlip:s}=await this.processImages(r,n,"flipY"),{gainMap:o,sdr:l}=this.createTextures(i,a,s);this.updateQuadRenderer(e,i,o,l,t),e.render()}}class r9 extends r2{load([e,t,r],n,i,a){let s,o,l,c=this.prepareQuadRenderer(),u=async()=>{if(s&&o&&l){try{await this.render(c,l,s,o)}catch(n){this.manager.itemError(e),this.manager.itemError(t),this.manager.itemError(r),"function"==typeof a&&a(n),c.disposeOnDemandRenderer();return}"function"==typeof n&&n(c),this.manager.itemEnd(e),this.manager.itemEnd(t),this.manager.itemEnd(r),c.disposeOnDemandRenderer()}},d=!0,h=0,f=0,A=!0,p=0,m=0,B=!0,g=0,C=0,v=()=>{"function"==typeof i&&i(new ProgressEvent("progress",{lengthComputable:d&&A&&B,loaded:f+m+C,total:h+p+g}))};this.manager.itemStart(e),this.manager.itemStart(t),this.manager.itemStart(r);let y=new rq.FileLoader(this._internalLoadingManager);y.setResponseType("arraybuffer"),y.setRequestHeader(this.requestHeader),y.setPath(this.path),y.setWithCredentials(this.withCredentials),y.load(e,async e=>{if("string"==typeof e)throw Error("Invalid sdr buffer");s=e,await u()},e=>{d=e.lengthComputable,f=e.loaded,h=e.total,v()},t=>{this.manager.itemError(e),"function"==typeof a&&a(t)});let M=new rq.FileLoader(this._internalLoadingManager);M.setResponseType("arraybuffer"),M.setRequestHeader(this.requestHeader),M.setPath(this.path),M.setWithCredentials(this.withCredentials),M.load(t,async e=>{if("string"==typeof e)throw Error("Invalid gainmap buffer");o=e,await u()},e=>{A=e.lengthComputable,m=e.loaded,p=e.total,v()},e=>{this.manager.itemError(t),"function"==typeof a&&a(e)});let x=new rq.FileLoader(this._internalLoadingManager);return x.setRequestHeader(this.requestHeader),x.setPath(this.path),x.setWithCredentials(this.withCredentials),x.load(r,async e=>{if("string"!=typeof e)throw Error("Invalid metadata string");l=JSON.parse(e),await u()},e=>{B=e.lengthComputable,C=e.loaded,g=e.total,v()},e=>{this.manager.itemError(r),"function"==typeof a&&a(e)}),c}}class r3 extends r2{load(e,t,r,n){let i=this.prepareQuadRenderer(),a=new rq.FileLoader(this._internalLoadingManager);return a.setResponseType("arraybuffer"),a.setRequestHeader(this.requestHeader),a.setPath(this.path),a.setWithCredentials(this.withCredentials),this.manager.itemStart(e),a.load(e,async r=>{let a,s,o;if("string"==typeof r)throw Error("Invalid buffer, received [string], was expecting [ArrayBuffer]");let l=new Uint8Array(r);try{let e=await rz(l);a=e.sdr,s=e.gainMap,o=e.metadata}catch(t){if(t instanceof rX||t instanceof rQ)console.warn(`Failure to reconstruct an HDR image from ${e}: Gain map metadata not found in the file, HDRJPGLoader will render the SDR jpeg`),o={gainMapMin:[0,0,0],gainMapMax:[1,1,1],gamma:[1,1,1],hdrCapacityMin:0,hdrCapacityMax:1,offsetHdr:[0,0,0],offsetSdr:[0,0,0]},a=l;else throw t}try{await this.render(i,o,a.buffer,s?.buffer)}catch(t){this.manager.itemError(e),"function"==typeof n&&n(t),i.disposeOnDemandRenderer();return}"function"==typeof t&&t(i),this.manager.itemEnd(e),i.disposeOnDemandRenderer()},r,t=>{this.manager.itemError(e),"function"==typeof n&&n(t)}),i}}let r8={apartment:"lebombo_1k.hdr",city:"potsdamer_platz_1k.hdr",dawn:"kiara_1_dawn_1k.hdr",forest:"forest_slope_1k.hdr",lobby:"st_fagans_interior_1k.hdr",night:"dikhololo_night_1k.hdr",park:"rooitou_park_1k.hdr",studio:"studio_small_03_1k.hdr",sunset:"venice_sunset_1k.hdr",warehouse:"empty_warehouse_01_1k.hdr"},r6="https://raw.githack.com/pmndrs/drei-assets/456060a26bbeb8fdf79326f224b6d99b8bcce736/hdri/",r4=["/px.png","/nx.png","/py.png","/ny.png","/pz.png","/nz.png"];function r5({files:e=r4,path:t="",preset:r,colorSpace:n,extensions:i}={}){r&&(nt(r),e=r8[r],t=r6);let a=Array.isArray(e),{extension:o,isCubemap:l}=nr(e),u=nn(o);if(!u)throw Error("useEnvironment: Unrecognized file extension: "+e);let h=(0,c.useThree)(e=>e.gl);(0,s.useLayoutEffect)(()=>{("webp"===o||"jpg"===o||"jpeg"===o)&&h.domElement.addEventListener("webglcontextlost",function(){eZ.useLoader.clear(u,a?[e]:e)},{once:!0})},[e,h.domElement]);let f=(0,eZ.useLoader)(u,a?[e]:e,e=>{("webp"===o||"jpg"===o||"jpeg"===o)&&e.setRenderer(h),null==e.setPath||e.setPath(t),i&&i(e)}),A=a?f[0]:f;if("jpg"===o||"jpeg"===o||"webp"===o){var p;A=null==(p=A.renderTarget)?void 0:p.texture}return A.mapping=l?d.CubeReflectionMapping:d.EquirectangularReflectionMapping,A.colorSpace=null!=n?n:l?"srgb":"srgb-linear",A}let r7={files:r4,path:"",preset:void 0,extensions:void 0};r5.preload=e=>{let t={...r7,...e},{files:r,path:n=""}=t,{preset:i,extensions:a}=t;i&&(nt(i),r=r8[i],n=r6);let{extension:s}=nr(r);if("webp"===s||"jpg"===s||"jpeg"===s)throw Error("useEnvironment: Preloading gainmaps is not supported");let o=nn(s);if(!o)throw Error("useEnvironment: Unrecognized file extension: "+r);eZ.useLoader.preload(o,Array.isArray(r)?[r]:r,e=>{null==e.setPath||e.setPath(n),a&&a(e)})};let ne={files:r4,preset:void 0};function nt(e){if(!(e in r8))throw Error("Preset must be one of: "+Object.keys(r8).join(", "))}function nr(e){var t;let r=Array.isArray(e)&&6===e.length,n=Array.isArray(e)&&3===e.length&&e.some(e=>e.endsWith("json")),i=Array.isArray(e)?e[0]:e;return{extension:r?"cube":n?"webp":i.startsWith("data:application/exr")?"exr":i.startsWith("data:application/hdr")?"hdr":i.startsWith("data:image/jpeg")?"jpg":null==(t=i.split(".").pop())||null==(t=t.split("?"))||null==(t=t.shift())?void 0:t.toLowerCase(),isCubemap:r,isGainmap:n}}function nn(e){return"cube"===e?d.CubeTextureLoader:"hdr"===e?tr:"exr"===e?rj:"jpg"===e||"jpeg"===e?r3:"webp"===e?r9:null}function ni(e,t,r,n,i={}){var a,s,o,l,c;let u;i={backgroundBlurriness:0,backgroundIntensity:1,backgroundRotation:[0,0,0],environmentIntensity:1,environmentRotation:[0,0,0],...i};let d=(u=c=t||r).current&&u.current.isScene?c.current:c,h=d.background,f=d.environment,A={backgroundBlurriness:d.backgroundBlurriness,backgroundIntensity:d.backgroundIntensity,backgroundRotation:null!=(a=null==(s=d.backgroundRotation)||null==s.clone?void 0:s.clone())?a:[0,0,0],environmentIntensity:d.environmentIntensity,environmentRotation:null!=(o=null==(l=d.environmentRotation)||null==l.clone?void 0:l.clone())?o:[0,0,0]};return"only"!==e&&(d.environment=n),e&&(d.background=n),(0,e5.applyProps)(d,i),()=>{"only"!==e&&(d.environment=f),e&&(d.background=h),(0,e5.applyProps)(d,A)}}function na({scene:e,background:t=!1,map:r,...n}){let i=(0,c.useThree)(e=>e.scene);return s.useLayoutEffect(()=>{if(r)return ni(t,e,i,r,n)}),null}function ns({background:e=!1,scene:t,blur:r,backgroundBlurriness:n,backgroundIntensity:i,backgroundRotation:a,environmentIntensity:o,environmentRotation:l,...u}){let d=r5(u),h=(0,c.useThree)(e=>e.scene);return s.useLayoutEffect(()=>ni(e,t,h,d,{backgroundBlurriness:null!=r?r:n,backgroundIntensity:i,backgroundRotation:a,environmentIntensity:o,environmentRotation:l})),s.useEffect(()=>()=>{d.dispose()},[d]),null}function no({children:e,near:t=.1,far:r=1e3,resolution:n=256,frames:i=1,map:a,background:o=!1,blur:u,backgroundBlurriness:h,backgroundIntensity:f,backgroundRotation:A,environmentIntensity:p,environmentRotation:m,scene:B,files:g,path:C,preset:v,extensions:y}){let M=(0,c.useThree)(e=>e.gl),x=(0,c.useThree)(e=>e.scene),E=s.useRef(null),[F]=s.useState(()=>new d.Scene),b=s.useMemo(()=>{let e=new d.WebGLCubeRenderTarget(n);return e.texture.type=d.HalfFloatType,e},[n]);s.useEffect(()=>()=>{b.dispose()},[b]),s.useLayoutEffect(()=>{if(1===i){let e=M.autoClear;M.autoClear=!0,E.current.update(M,F),M.autoClear=e}return ni(o,B,x,b.texture,{backgroundBlurriness:null!=u?u:h,backgroundIntensity:f,backgroundRotation:A,environmentIntensity:p,environmentRotation:m})},[e,F,b.texture,B,x,o,i,M]);let w=1;return(0,l.useFrame)(()=>{if(i===1/0||w<i){let e=M.autoClear;M.autoClear=!0,E.current.update(M,F),M.autoClear=e,w++}}),s.createElement(s.Fragment,null,(0,e4.createPortal)(s.createElement(s.Fragment,null,e,s.createElement("cubeCamera",{ref:E,args:[t,r,b]}),g||v?s.createElement(ns,{background:!0,files:g,preset:v,path:C,extensions:y}):a?s.createElement(na,{background:!0,map:a,extensions:y}):null),F))}function nl(e){var t,r,n,i;let a=r5(e),o=e.map||a;s.useMemo(()=>(0,K.extend)({GroundProjectedEnvImpl:te}),[]),s.useEffect(()=>()=>{a.dispose()},[a]);let l=s.useMemo(()=>[o],[o]),c=null==(t=e.ground)?void 0:t.height,d=null==(r=e.ground)?void 0:r.radius,h=null!=(n=null==(i=e.ground)?void 0:i.scale)?n:1e3;return s.createElement(s.Fragment,null,s.createElement(na,(0,u.default)({},e,{map:o})),s.createElement("groundProjectedEnvImpl",{args:l,scale:h,height:c,radius:d}))}function nc(e){return e.ground?s.createElement(nl,e):e.map?s.createElement(na,e):e.children?s.createElement(no,e):s.createElement(ns,e)}r5.clear=e=>{let t={...ne,...e},{files:r}=t,{preset:n}=t;n&&(nt(n),r=r8[n]);let{extension:i}=nr(r),a=nn(i);if(!a)throw Error("useEnvironment: Unrecognized file extension: "+r);eZ.useLoader.clear(a,Array.isArray(r)?[r]:r)};let nu=s.forwardRef(({light:e,args:t,map:r,toneMapped:n=!1,color:i="white",form:a="rect",intensity:o=1,scale:l=1,target:c=[0,0,0],children:h,...f},A)=>{let p=s.useRef(null);return s.useImperativeHandle(A,()=>p.current,[]),s.useLayoutEffect(()=>{h||f.material||((0,e5.applyProps)(p.current.material,{color:i}),p.current.material.color.multiplyScalar(o))},[i,o,h,f.material]),s.useLayoutEffect(()=>{f.rotation||p.current.quaternion.identity(),c&&!f.rotation&&("boolean"==typeof c?p.current.lookAt(0,0,0):p.current.lookAt(Array.isArray(c)?new d.Vector3(...c):c))},[c,f.rotation]),l=Array.isArray(l)&&2===l.length?[l[0],l[1],1]:l,s.createElement("mesh",(0,u.default)({ref:p,scale:l},f),"circle"===a?s.createElement("ringGeometry",{args:t||[0,.5,64]}):"ring"===a?s.createElement("ringGeometry",{args:t||[.25,.5,64]}):"rect"===a||"plane"===a?s.createElement("planeGeometry",{args:t||[1,1]}):"box"===a?s.createElement("boxGeometry",{args:t||[1,1,1]}):s.createElement(a,{args:t}),h||s.createElement("meshBasicMaterial",{toneMapped:n,map:r,side:d.DoubleSide}),e&&s.createElement("pointLight",(0,u.default)({castShadow:!0},e)))});function nd({all:e,scene:t,camera:r}){let n=(0,c.useThree)(({gl:e})=>e),i=(0,c.useThree)(({camera:e})=>e),a=(0,c.useThree)(({scene:e})=>e);return s.useLayoutEffect(()=>{let s=[];e&&(t||a).traverse(e=>{!1===e.visible&&(s.push(e),e.visible=!0)}),n.compile(t||a,r||i);let o=new d.WebGLCubeRenderTarget(128);new d.CubeCamera(.01,1e5,o).update(n,t||a),o.dispose(),s.forEach(e=>e.visible=!1)},[]),null}var nh=e.i(79877),nf=e.i(33623),nA=e.i(48228);let np="#eef1f6",nm="#22C55E",nB="#8B5CF6",ng="#3B82F6",nC="#F59E0B",nv="#C01227";function ny(){let e=(0,c.useThree)(e=>e.gl),t=(0,s.useRef)(null),r=(0,s.useRef)({t:0,frames:0,mount:0,firstFrame:0,nav:0});return(0,s.useEffect)(()=>{let e=r.current;e.mount=performance.now();let n=performance.getEntriesByType("navigation")[0];e.nav=n?Math.round(n.loadEventEnd||n.domContentLoadedEventEnd):0;let i=document.createElement("div");return i.style.cssText="position:fixed;top:10px;left:10px;z-index:99999;font:11px/1.5 ui-monospace,monospace;background:rgba(0,0,0,.82);color:#39ff14;padding:8px 11px;border-radius:7px;white-space:pre;pointer-events:none",document.body.appendChild(i),t.current=i,()=>{i.remove()}},[]),(0,l.useFrame)((n,i)=>{let a=r.current;if(!a.firstFrame&&a.mount&&(a.firstFrame=performance.now()-a.mount),a.frames++,a.t+=i,a.t>=.5&&t.current){let r=e.info.render,n=e.info.memory;t.current.textContent=`FPS ${(a.frames/a.t).toFixed(0)}
draws ${r.calls}${r.calls<100?" ✓":" ⚠"}
triangles ${r.triangles.toLocaleString()}
geometries ${n.geometries}
textures ${n.textures}
programs ${e.info.programs?.length??0}
page load ${a.nav}ms
WF3 1st fr ${Math.round(a.firstFrame)}ms`,a.frames=0,a.t=0}}),null}function nM({progress:e,reduced:t,isMobile:r}){let n=(0,s.useRef)(new d.Vector3(...(0,nA.cameraFor)(0).look));return(0,l.useFrame)((i,a)=>{let s=(e.current??0)*(nA.N-1),{pos:o,look:l}=(0,nA.cameraFor)(s),c=i.clock.elapsedTime,u=+!!r,d=o[0]*(1-.25*u)+.22*Math.sin(.22*c),h=o[1]+1.1*u+.1*Math.sin(.3*c),f=o[2]+3*u,A=t?1:1-Math.pow(.0025,a),p=i.camera;p.position.x+=(d-p.position.x)*A,p.position.y+=(h-p.position.y)*A,p.position.z+=(f-p.position.z)*A,n.current.x+=(l[0]-n.current.x)*A,n.current.y+=(l[1]-n.current.y)*A,n.current.z+=(l[2]-n.current.z)*A,p.lookAt(n.current)}),null}function nx(e,t,r){let n=(0,s.useRef)([]);return(0,s.useEffect)(()=>{r||(n.current=[])},[r]),(0,l.useFrame)(()=>{if(!r)return;let i=(t.current??0)*(nA.N-1),a=d.MathUtils.clamp(1-(Math.abs(i-e)-.2)/.3,0,1);for(let e of n.current)e.style.opacity=String(a)}),e=>{e&&!n.current.includes(e)&&n.current.push(e)}}function nE({position:e,color:t,size:r=.1,pulse:n=!1}){let i=(0,s.useRef)(null);return(0,l.useFrame)(t=>{i.current&&i.current.scale.setScalar(1+.2*Math.sin(2*t.clock.elapsedTime+e[0]))}),(0,a.jsxs)("group",{position:e,children:[(0,a.jsxs)("mesh",{children:[(0,a.jsx)("sphereGeometry",{args:[r,16,16]}),(0,a.jsx)("meshStandardMaterial",{color:t,emissive:t,emissiveIntensity:1,toneMapped:!1})]}),n&&(0,a.jsxs)("mesh",{ref:i,rotation:[-Math.PI/2,0,0],position:[0,-(.6*r),0],children:[(0,a.jsx)("ringGeometry",{args:[1.5*r,1.8*r,24]}),(0,a.jsx)("meshBasicMaterial",{color:t,transparent:!0,opacity:.5,side:d.DoubleSide,toneMapped:!1})]})]})}function nF({curve:e,color:t,speed:r=.4,offset:n=0,size:i=.06}){let o=(0,s.useRef)(null);return(0,l.useFrame)(t=>{o.current&&o.current.position.copy(e.getPoint((t.clock.elapsedTime*r+n)%1))}),(0,a.jsxs)("mesh",{ref:o,children:[(0,a.jsx)("sphereGeometry",{args:[i,8,8]}),(0,a.jsx)("meshBasicMaterial",{color:t,toneMapped:!1})]})}function nb(e,t){return new d.LineCurve3(new d.Vector3(...e),new d.Vector3(...t))}let nw={bike:"/models/scooter.glb",auto:"/models/auto_rickshaw.glb",truck:"/models/truck.glb",van:"/models/van.glb"},nI={bike:{size:1,rotY:.72*Math.PI},auto:{size:.92,rotY:.72*Math.PI},truck:{size:1.2,rotY:.72*Math.PI},van:{size:1.02,rotY:.72*Math.PI}};function nR(e,t){let r=e.clone(!0),n=[];r.traverse(e=>{if(/wheel|tyre|tire|\brim\b/i.test(e.name)&&n.push(e),!e.isMesh)return;e.castShadow=!0,e.receiveShadow=!1;let t=e.material,r=e=>{"transmission"in e&&e.transmission>0&&(e.transmission=0,e.transparent=!1,e.opacity=1),"envMapIntensity"in e&&(e.envMapIntensity=.4),e.needsUpdate=!0};Array.isArray(t)?t.forEach(r):r(t)});let i=new d.Box3().setFromObject(r),a=new d.Vector3;i.getSize(a);let s=new d.Vector3;i.getCenter(s);let o=t/Math.max(a.x,a.y,a.z,1e-4);return r.scale.setScalar(o),r.position.set(-s.x*o,-i.min.y*o,-s.z*o),{root:r,wheels:n}}function nG({kind:e,awake:t=!0}){let r=nI[e],{scene:n}=e9(nw[e]),{root:i}=(0,s.useMemo)(()=>nR(n,r.size),[n,r]),o=(0,s.useRef)(null);return(0,l.useFrame)(r=>{let n=o.current;if(!n||!t)return;let i=r.clock.elapsedTime;switch(e){case"bike":n.position.y=.025*Math.abs(Math.sin(3*i)),n.rotation.z=.012*Math.sin(3*i);break;case"auto":n.rotation.z=.045*Math.sin(1.6*i),n.position.x=.02*Math.sin(1.6*i);break;case"truck":n.position.y=.012*Math.sin(+i),n.rotation.x=.006*Math.sin(.8*i);break;default:n.position.y=.05+.03*Math.sin(1.3*i)}}),(0,a.jsx)("group",{ref:o,rotation:[0,r.rotY,0],children:(0,a.jsx)("primitive",{object:i})})}function nD({route:e,reduced:t,i:r,progress:n,awake:i=!0}){let{scene:o}=e9(nw.truck),c=(0,s.useMemo)(()=>nR(o,.85),[o]),u=(0,s.useRef)([]);(0,s.useEffect)(()=>{u.current=c.wheels},[c]);let h=(0,s.useRef)(null),f=(0,s.useRef)(null),A=(0,s.useMemo)(()=>new d.Quaternion,[]),p=(0,s.useMemo)(()=>new d.Euler,[]),m=(0,s.useRef)(0);return(0,l.useFrame)((a,s)=>{let o=h.current;if(!o||!i)return;let l=(n.current??0)*(nA.N-1),c=d.MathUtils.clamp(l-(r-.5),0,1),B=e.getPointAt(c);o.position.set(B.x,.02,B.z);let g=e.getPointAt(Math.min(1,c+.02)),C=g.x-B.x,v=g.z-B.z;if(C*C+v*v>1e-7&&(p.set(0,Math.atan2(-v,C)+0,0),A.setFromEuler(p),o.quaternion.slerp(A,t?1:1-Math.pow(6e-4,s))),!t){let e=Math.abs(c-m.current),t=u.current;for(let r=0;r<t.length;r++)t[r].rotation.x+=60*e;f.current&&(f.current.position.y=.01*Math.sin(7*a.clock.elapsedTime))}m.current=c}),(0,a.jsxs)("group",{ref:h,children:[(0,a.jsx)("group",{ref:f,children:(0,a.jsx)("primitive",{object:c.root})}),(0,a.jsxs)("mesh",{position:[0,-.005,0],rotation:[-Math.PI/2,0,0],children:[(0,a.jsx)("ringGeometry",{args:[.22,.5,28]}),(0,a.jsx)("meshBasicMaterial",{color:ng,transparent:!0,opacity:.4,side:d.DoubleSide,toneMapped:!1})]})]})}Object.values(nw).forEach(e=>e9.preload(e));let nT=[{id:"A",veh:"EV Bike",icon:"🚲",x:-2,kind:"bike"},{id:"B",veh:"Auto",icon:"🛺",x:-.67,kind:"auto"},{id:"C",veh:"Cargo Truck",icon:"🚚",x:.67,kind:"truck"},{id:"D",veh:"EV Van",icon:"🚐",x:2,kind:"van"}];function nS({curve:e,offset:t}){let r=(0,s.useRef)(null),n=(0,s.useRef)(null);return(0,l.useFrame)(i=>{let a=(.3*i.clock.elapsedTime+t)%1;r.current&&(r.current.position.copy(e.getPoint(a)),r.current.rotation.y=6*a),n.current&&(n.current.opacity=a>.9?(1-a)*10:a<.08?12*a:1)}),(0,a.jsxs)("mesh",{ref:r,children:[(0,a.jsx)("boxGeometry",{args:[.16,.12,.16]}),(0,a.jsx)("meshStandardMaterial",{ref:n,color:"#ffffff",emissive:nm,emissiveIntensity:.6,transparent:!0,metalness:.1,roughness:.5,toneMapped:!1})]})}function nH({rider:e,register:t,awake:r,focused:n}){return(0,a.jsxs)("group",{position:[e.x,0,.1],children:[(0,a.jsxs)("mesh",{position:[0,.014,0],rotation:[-Math.PI/2,0,0],children:[(0,a.jsx)("ringGeometry",{args:[.52,.64,36]}),(0,a.jsx)("meshBasicMaterial",{color:nm,transparent:!0,opacity:.6,side:d.DoubleSide,toneMapped:!1})]}),(0,a.jsxs)("mesh",{position:[0,.008,0],rotation:[-Math.PI/2,0,0],children:[(0,a.jsx)("circleGeometry",{args:[.52,36]}),(0,a.jsx)("meshBasicMaterial",{color:nm,transparent:!0,opacity:.08,side:d.DoubleSide,toneMapped:!1})]}),(0,a.jsx)("group",{position:[0,.02,0],children:(0,a.jsx)(s.Suspense,{fallback:null,children:(0,a.jsx)(nG,{kind:e.kind,awake:r})})}),n&&(0,a.jsx)(q.Html,{center:!0,distanceFactor:9,position:[0,1.5,0],zIndexRange:[20,0],pointerEvents:"none",children:(0,a.jsxs)("div",{className:"dm-st3d-chip",ref:t,children:[(0,a.jsx)("span",{className:"dm-st3d-chip__ico",children:e.icon}),(0,a.jsxs)("span",{className:"dm-st3d-chip__txt",children:[(0,a.jsxs)("b",{children:["Rider ",e.id]}),e.veh]})]})})]})}let nL=[3.3,.45,-.7],nU=[0,.55,-1.4],nP=s.default.memo(function({i:e,progress:t,reduced:r,awake:n,focused:i}){let o=nx(e,t,n),c=(0,s.useRef)(null),u=(0,s.useRef)(null);(0,l.useFrame)((e,t)=>{if(n){if(c.current)if(r)c.current.textContent="59";else{let t=e.clock.elapsedTime%3.6;c.current.textContent=String(Math.min(59,Math.round(t/2.4*59)))}u.current&&!r&&(u.current.rotation.z+=.5*t)}});let h=(0,s.useMemo)(()=>nb(nL,nU),[]),f=(0,s.useMemo)(()=>nT.map(e=>nb(nU,[e.x,.12,.1])),[]);return(0,a.jsxs)("group",{position:(0,nA.districtPosition)(e),visible:n,children:[(0,a.jsx)(nE,{position:nL,color:nm,size:.12}),(0,a.jsx)(k,{points:h.getPoints(2),color:nm,lineWidth:1.8,transparent:!0,opacity:.5,toneMapped:!1}),n&&!r&&[0,.5].map(e=>(0,a.jsx)(nS,{curve:h,offset:e},e)),(0,a.jsxs)("group",{position:[0,0,-1.4],children:[(0,a.jsxs)("mesh",{position:[0,.02,0],rotation:[-Math.PI/2,0,0],children:[(0,a.jsx)("ringGeometry",{args:[.95,1.12,44]}),(0,a.jsx)("meshBasicMaterial",{color:nm,transparent:!0,opacity:.5,side:d.DoubleSide,toneMapped:!1})]}),(0,a.jsxs)("mesh",{position:[0,.1,0],children:[(0,a.jsx)("cylinderGeometry",{args:[.72,.86,.2,6]}),(0,a.jsx)("meshStandardMaterial",{color:"#102a1d",metalness:.4,roughness:.45,emissive:nm,emissiveIntensity:.12})]}),(0,a.jsxs)("mesh",{position:[0,.55,0],children:[(0,a.jsx)("icosahedronGeometry",{args:[.32,1]}),(0,a.jsx)("meshStandardMaterial",{color:nm,emissive:nm,emissiveIntensity:1.2,toneMapped:!1,flatShading:!0})]}),(0,a.jsxs)("mesh",{ref:u,position:[0,.55,0],rotation:[Math.PI/2.4,0,0],children:[(0,a.jsx)("torusGeometry",{args:[.5,.025,10,40]}),(0,a.jsx)("meshStandardMaterial",{color:nm,emissive:nm,emissiveIntensity:1,toneMapped:!1})]})]}),f.map((e,t)=>(0,a.jsxs)("group",{children:[(0,a.jsx)(k,{points:e.getPoints(2),color:nm,lineWidth:1.6,transparent:!0,opacity:.45,toneMapped:!1}),n&&!r&&(0,a.jsx)(nF,{curve:e,color:nm,speed:.55,offset:.22*t})]},t)),(0,a.jsx)(e6,{position:[0,.02,.1],scale:[7.5,2.6],resolution:512,blur:2.6,far:1.2,opacity:.4,frames:1,color:"#1e293b"}),nT.map(e=>(0,a.jsx)(nH,{rider:e,register:o,awake:n,focused:i},e.id)),i&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(q.Html,{center:!0,distanceFactor:9,position:[nL[0],nL[1]+.5,nL[2]],zIndexRange:[20,0],pointerEvents:"none",children:(0,a.jsx)("div",{className:"dm-st3d-tag",style:{"--tc":nm},ref:o,children:"📄 orders.csv"})}),(0,a.jsx)(q.Html,{center:!0,distanceFactor:9,position:[0,1.8,-1.4],zIndexRange:[20,0],pointerEvents:"none",children:(0,a.jsxs)("div",{className:"dm-st3d-count",ref:o,children:[(0,a.jsx)("span",{ref:c,children:"0"})," Orders"]})}),(0,a.jsx)(q.Html,{center:!0,distanceFactor:9,position:[0,1.32,-1.4],zIndexRange:[20,0],pointerEvents:"none",children:(0,a.jsx)("div",{className:"dm-st3d-tag",style:{"--tc":nm},ref:o,children:"🤖 AI Assignment Hub"})})]})]})}),n_=[{name:"EV Aware",unified:!0},{name:"Multi Trip",unified:!0},{name:"Time Aware",unified:!0},{name:"Balanced",unified:!1},{name:"Fuel Saver",unified:!1},{name:"Proximity",unified:!1}],nJ=[0,1.45,-2.7],nO=s.default.memo(function({i:e,progress:t,reduced:r,awake:n,focused:i}){let o=nx(e,t,n),c=(0,s.useRef)(null),u=(0,s.useRef)(null);(0,l.useFrame)((e,t)=>{!r&&n&&(c.current&&(c.current.rotation.z+=.6*t),u.current&&(u.current.rotation.y+=.4*t))});let h=(0,s.useMemo)(()=>n_.map((e,t)=>{let r=-.3+.18*Math.abs(t-2.5),n=[-3.4+1.36*t,.62,r];return{...e,end:n,curve:nb(nJ,n)}}),[]);return(0,a.jsxs)("group",{position:(0,nA.districtPosition)(e),visible:n,children:[(0,a.jsxs)("mesh",{position:[0,.06,-.6],children:[(0,a.jsx)("cylinderGeometry",{args:[5.4,5.6,.12,56]}),(0,a.jsx)("meshStandardMaterial",{color:"#161b30",metalness:.5,roughness:.42,emissive:nB,emissiveIntensity:.07})]}),(0,a.jsxs)("mesh",{position:[0,.13,-.6],rotation:[-Math.PI/2,0,0],children:[(0,a.jsx)("ringGeometry",{args:[5.2,5.42,64]}),(0,a.jsx)("meshBasicMaterial",{color:nB,transparent:!0,opacity:.4,side:d.DoubleSide,toneMapped:!1})]}),(0,a.jsxs)("mesh",{position:[0,.65,-2.7],children:[(0,a.jsx)("cylinderGeometry",{args:[.4,.62,1.2,24]}),(0,a.jsx)("meshStandardMaterial",{color:"#2a3350",metalness:.5,roughness:.4})]}),(0,a.jsxs)("mesh",{ref:u,position:nJ,children:[(0,a.jsx)("icosahedronGeometry",{args:[.6,1]}),(0,a.jsx)("meshStandardMaterial",{color:nB,emissive:nB,emissiveIntensity:1.3,toneMapped:!1,flatShading:!0})]}),(0,a.jsxs)("mesh",{ref:c,position:nJ,rotation:[Math.PI/2.4,0,0],children:[(0,a.jsx)("torusGeometry",{args:[.98,.03,10,44]}),(0,a.jsx)("meshStandardMaterial",{color:nB,emissive:nB,emissiveIntensity:1.1,toneMapped:!1})]}),i&&(0,a.jsx)(q.Html,{center:!0,distanceFactor:9,position:[0,2.5,-2.7],zIndexRange:[20,0],pointerEvents:"none",children:(0,a.jsx)("div",{className:"dm-st3d-tag",style:{"--tc":nB},ref:o,children:"🤖 AI Engine"})}),h.map((e,t)=>{let s=e.unified?nB:"#a99bd6";return(0,a.jsxs)("group",{children:[(0,a.jsx)(k,{points:e.curve.getPoints(2),color:s,lineWidth:e.unified?2.4:1.6,transparent:!0,opacity:e.unified?.7:.5,toneMapped:!1}),n&&!r&&(0,a.jsx)(nF,{curve:e.curve,color:s,speed:.5,offset:.16*t,size:e.unified?.075:.06}),(0,a.jsxs)("mesh",{position:[e.end[0],.135,e.end[2]],rotation:[-Math.PI/2,0,0],children:[(0,a.jsx)("ringGeometry",{args:[.34,.44,28]}),(0,a.jsx)("meshBasicMaterial",{color:s,transparent:!0,opacity:e.unified?.6:.4,side:d.DoubleSide,toneMapped:!1})]}),(0,a.jsx)(nE,{position:e.end,color:s,size:e.unified?.15:.11}),i&&(0,a.jsx)(q.Html,{center:!0,distanceFactor:9,position:[e.end[0],e.end[1]+.62,e.end[2]],zIndexRange:[20,0],pointerEvents:"none",children:(0,a.jsx)("div",{className:`dm-st3d-tag ${e.unified?"is-u":"is-muted"}`,style:{"--tc":e.unified?nB:"#94a3b8"},ref:o,children:e.name})})]},e.name)})]})}),nj=[-2.9,1.9],nk=[[-1.5,-2.6],[.1,-1],[1.7,-2.3],[2.7,.3],[.9,1.5],[-.6,.5]],nN=[{t:"Route Optimization",p:[-2.7,2.5,-.4]},{t:"Battery Validation",p:[2.6,2.9,-1.2]},{t:"SLA Validation",p:[-2.3,2,1.6]},{t:"Feasibility Check",p:[2.5,1.7,1.8]}],nK=["Route Node A",null,"Route Node B",null,"Route Node C","📦 Delivery"];function nQ({pos:e,i:t,progress:r}){let n=(0,s.useRef)(null),i=(0,s.useRef)(null);return(0,l.useFrame)(e=>{let a=(r.current??0)*(nA.N-1),s=d.MathUtils.clamp(a-(t-.5),0,1);if(n.current&&i.current)if(s>.85){let t=e.clock.elapsedTime%1.1/1.1;n.current.scale.setScalar(1+3*t),i.current.opacity=(1-t)*.6}else i.current.opacity=0}),(0,a.jsxs)("mesh",{ref:n,position:e,rotation:[-Math.PI/2,0,0],children:[(0,a.jsx)("ringGeometry",{args:[.2,.3,32]}),(0,a.jsx)("meshBasicMaterial",{ref:i,color:ng,transparent:!0,opacity:0,side:d.DoubleSide,toneMapped:!1})]})}function nX({pos:e,i:t,progress:r}){let n=(0,s.useRef)(null);return(0,l.useFrame)(()=>{let e=(r.current??0)*(nA.N-1),i=d.MathUtils.clamp(e-(t-.5),0,1);n.current&&(n.current.style.opacity=i>.9?"1":"0")}),(0,a.jsx)(q.Html,{center:!0,distanceFactor:9,position:e,zIndexRange:[20,0],pointerEvents:"none",children:(0,a.jsx)("div",{className:"dm-st3d-tag is-win",style:{"--tc":ng,opacity:0},ref:n,children:"✓ Delivered"})})}let nY=s.default.memo(function({i:e,progress:t,reduced:r,awake:n,focused:i}){let o=nx(e,t,n),l=(0,s.useMemo)(()=>{let e=[nj,...nk].map(([e,t])=>new d.Vector3(e,.12,t));return new d.CatmullRomCurve3(e,!1,"catmullrom",.2)},[]),c=(0,s.useMemo)(()=>l.getPoints(100),[l]),u=nk[nk.length-1];return(0,a.jsxs)("group",{position:(0,nA.districtPosition)(e),visible:n,children:[(0,a.jsx)(k,{points:c,color:ng,lineWidth:2.6,transparent:!0,opacity:.8,toneMapped:!1}),(0,a.jsx)(s.Suspense,{fallback:null,children:(0,a.jsx)(nD,{route:l,reduced:r,i:e,progress:t,awake:n})}),(0,a.jsxs)("group",{position:[nj[0],0,nj[1]],children:[(0,a.jsxs)("mesh",{position:[0,.02,0],rotation:[-Math.PI/2,0,0],children:[(0,a.jsx)("ringGeometry",{args:[.62,.74,36]}),(0,a.jsx)("meshBasicMaterial",{color:ng,transparent:!0,opacity:.5,side:d.DoubleSide,toneMapped:!1})]}),(0,a.jsxs)("mesh",{position:[0,.13,0],children:[(0,a.jsx)("cylinderGeometry",{args:[.5,.58,.26,6]}),(0,a.jsx)("meshStandardMaterial",{color:"#0f2036",emissive:ng,emissiveIntensity:.15,metalness:.4,roughness:.45})]}),(0,a.jsx)(nE,{position:[0,.52,0],color:ng,size:.14})]}),nk.map(([e,t],r)=>{let n=r===nk.length-1;return(0,a.jsxs)("group",{position:[e,0,t],children:[(0,a.jsxs)("mesh",{position:[0,.02,0],rotation:[-Math.PI/2,0,0],children:[(0,a.jsx)("ringGeometry",{args:[.16,.23,20]}),(0,a.jsx)("meshBasicMaterial",{color:ng,transparent:!0,opacity:.55,side:d.DoubleSide,toneMapped:!1})]}),(0,a.jsxs)("mesh",{position:[0,.3,0],children:[(0,a.jsx)("cylinderGeometry",{args:[.03,.03,.6,8]}),(0,a.jsx)("meshStandardMaterial",{color:ng,emissive:ng,emissiveIntensity:.4})]}),(0,a.jsx)(nE,{position:[0,.66,0],color:ng,size:n?.16:.12})]},r)}),n&&(0,a.jsx)(nQ,{pos:[u[0],.02,u[1]],i:e,progress:t}),i&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(q.Html,{center:!0,distanceFactor:9,position:[nj[0],1.05,nj[1]],zIndexRange:[20,0],pointerEvents:"none",children:(0,a.jsx)("div",{className:"dm-st3d-tag",style:{"--tc":ng},ref:o,children:"🏢 Dispatch Hub"})}),nk.map(([e,t],r)=>{let n=nK[r];return n?(0,a.jsx)(q.Html,{center:!0,distanceFactor:9,position:[e,1.06,t],zIndexRange:[20,0],pointerEvents:"none",children:(0,a.jsx)("div",{className:"dm-st3d-tag",style:{"--tc":ng},ref:o,children:n})},r):null}),(0,a.jsx)(nX,{pos:[u[0],1.42,u[1]],i:e,progress:t}),nN.map(e=>(0,a.jsx)(q.Html,{center:!0,distanceFactor:9,position:e.p,zIndexRange:[20,0],pointerEvents:"none",children:(0,a.jsxs)("div",{className:"dm-st3d-tag",style:{"--tc":ng},ref:o,children:["✓ ",e.t]})},e.t)),(0,a.jsx)(q.Html,{center:!0,distanceFactor:9,position:[0,3.2,-.4],zIndexRange:[20,0],pointerEvents:"none",children:(0,a.jsxs)("div",{className:"dm-st3d-score",style:{"--tc":ng},ref:o,children:["🗺️ Route optimized · ",(0,a.jsx)("b",{children:"18%"})," distance"]})})]})]})}),nW=[{n:"Fulfillment",v:88,a:-.66},{n:"SLA Compliance",v:95,a:-.22},{n:"Efficiency",v:92,a:.22},{n:"Battery",v:100,a:.66}],nz=s.default.memo(function({i:e,progress:t,awake:r,focused:n}){let i=nx(e,t,r),o=(0,s.useMemo)(()=>nW.map(e=>{let t=[3.6*Math.sin(e.a),1.5,-1.4+(1-Math.cos(e.a))*3.6];return{...e,p:t,rotY:-e.a}}),[]);return(0,a.jsxs)("group",{position:(0,nA.districtPosition)(e),visible:r,children:[(0,a.jsxs)("mesh",{position:[0,.45,1.4],rotation:[-.12,0,0],children:[(0,a.jsx)("boxGeometry",{args:[5.6,.18,1.5]}),(0,a.jsx)("meshStandardMaterial",{color:"#dfe4f1",metalness:.4,roughness:.4})]}),(0,a.jsxs)("mesh",{position:[0,.12,.9],children:[(0,a.jsx)("boxGeometry",{args:[5.2,.24,.6]}),(0,a.jsx)("meshStandardMaterial",{color:"#cdd5e6",metalness:.3,roughness:.5})]}),o.map(e=>(0,a.jsxs)("group",{position:e.p,rotation:[0,e.rotY,0],children:[(0,a.jsx)(f,{args:[1.7,1.15,.06],radius:.06,smoothness:2,children:(0,a.jsx)("meshStandardMaterial",{color:"#ffffff",emissive:nC,emissiveIntensity:.18,metalness:.1,roughness:.4,transparent:!0,opacity:.92})}),n&&(0,a.jsx)(q.Html,{center:!0,distanceFactor:8,position:[0,0,.05],zIndexRange:[20,0],pointerEvents:"none",children:(0,a.jsxs)("div",{className:"dm-st3d-kpi",style:{"--tc":nC},ref:i,children:[(0,a.jsx)("span",{className:"dm-st3d-kpi__n",children:e.n}),(0,a.jsxs)("span",{className:"dm-st3d-kpi__v",children:[e.v,(0,a.jsx)("i",{children:"%"})]}),(0,a.jsx)("span",{className:"dm-st3d-kpi__bar",children:(0,a.jsx)("i",{style:{width:`${e.v}%`}})})]})})]},e.n)),n&&(0,a.jsx)(q.Html,{center:!0,distanceFactor:9,position:[0,3.1,-.4],zIndexRange:[20,0],pointerEvents:"none",children:(0,a.jsxs)("div",{className:"dm-st3d-score",style:{"--tc":nC},ref:i,children:["Performance Grade ",(0,a.jsx)("b",{children:"A"})," · 4.5 / 5"]})})]})}),nV=[{n:"EV Aware",v:88,x:-2.4,win:!0},{n:"Multi Trip",v:79,x:-.8,win:!1},{n:"Balanced",v:71,x:.8,win:!1},{n:"Proximity",v:64,x:2.4,win:!1}];function nZ({p:e,register:t,focused:r}){let n=.6+e.v/100*2.2,i=e.win?nv:"#94a3b8";return(0,a.jsxs)("group",{position:[e.x,0,-.6],children:[(0,a.jsxs)("mesh",{position:[0,n/2+.1,0],children:[(0,a.jsx)("boxGeometry",{args:[1,n,1]}),(0,a.jsx)("meshStandardMaterial",{color:i,emissive:i,emissiveIntensity:e.win?.7:.15,metalness:.2,roughness:.4,transparent:!0,opacity:e.win?.96:.7,toneMapped:!1})]}),r&&(0,a.jsx)(q.Html,{center:!0,distanceFactor:9,position:[0,n+.45,0],zIndexRange:[20,0],pointerEvents:"none",children:(0,a.jsxs)("div",{className:`dm-st3d-tag ${e.win?"is-win":"is-muted"}`,style:{"--tc":i},ref:t,children:[(0,a.jsxs)("b",{children:[e.v,"%"]})," ",e.n]})})]})}let nq=s.default.memo(function({i:e,progress:t,reduced:r,isMobile:n,awake:i,focused:o}){let c=nx(e,t,i),u=(0,s.useRef)(null);return(0,l.useFrame)(e=>{u.current&&!r&&i&&(u.current.position.y=.6+.88*2.2+.95+.08*Math.sin(1.4*e.clock.elapsedTime),u.current.rotation.y+=.01)}),(0,a.jsxs)("group",{position:(0,nA.districtPosition)(e),visible:i,children:[(0,a.jsxs)("mesh",{position:[0,.05,-.6],children:[(0,a.jsx)("cylinderGeometry",{args:[4.3,4.5,.12,48]}),(0,a.jsx)("meshStandardMaterial",{color:"#1d1622",metalness:.5,roughness:.42,emissive:nv,emissiveIntensity:.06})]}),(0,a.jsxs)("mesh",{position:[0,.12,-.6],rotation:[-Math.PI/2,0,0],children:[(0,a.jsx)("ringGeometry",{args:[4.1,4.32,56]}),(0,a.jsx)("meshBasicMaterial",{color:nv,transparent:!0,opacity:.35,side:d.DoubleSide,toneMapped:!1})]}),(0,a.jsxs)("mesh",{position:[-2.4,.14,-.6],children:[(0,a.jsx)("cylinderGeometry",{args:[.85,.9,.14,28]}),(0,a.jsx)("meshStandardMaterial",{color:nv,emissive:nv,emissiveIntensity:.9,toneMapped:!1})]}),nV.map(e=>(0,a.jsx)(nZ,{p:e,register:c,focused:o},e.n)),(0,a.jsxs)("mesh",{position:[-2.4,3,-.6],children:[(0,a.jsx)("coneGeometry",{args:[1,2.6,28,1,!0]}),(0,a.jsx)("meshBasicMaterial",{color:nv,transparent:!0,opacity:.07,side:d.DoubleSide,toneMapped:!1})]}),(0,a.jsxs)("group",{ref:u,position:[-2.4,3.5,-.6],children:[(0,a.jsxs)("mesh",{position:[0,.18,0],children:[(0,a.jsx)("sphereGeometry",{args:[.26,24,12,0,2*Math.PI,0,Math.PI/1.7]}),(0,a.jsx)("meshStandardMaterial",{color:"#FFD45A",emissive:"#FFB020",emissiveIntensity:1.2,metalness:.6,roughness:.25,toneMapped:!1})]}),(0,a.jsxs)("mesh",{position:[0,-.06,0],children:[(0,a.jsx)("cylinderGeometry",{args:[.05,.05,.24,10]}),(0,a.jsx)("meshStandardMaterial",{color:"#FFD45A",emissive:"#FFB020",emissiveIntensity:1,toneMapped:!1})]}),(0,a.jsxs)("mesh",{position:[0,-.22,0],children:[(0,a.jsx)("cylinderGeometry",{args:[.18,.22,.1,16]}),(0,a.jsx)("meshStandardMaterial",{color:"#FFD45A",emissive:"#FFB020",emissiveIntensity:1,toneMapped:!1})]})]}),i&&!r&&(0,a.jsx)(Z,{count:n?12:16,scale:[5,4,4],position:[-2.4,2.6,-.6],size:3.2,speed:.5,opacity:.9,color:"#ff9aa9"}),o&&(0,a.jsx)(q.Html,{center:!0,distanceFactor:9,position:[.7,3,-.6],zIndexRange:[20,0],pointerEvents:"none",children:(0,a.jsxs)("div",{className:"dm-st3d-winner3d",ref:c,children:[(0,a.jsx)("span",{className:"dm-st3d-winner3d__top",children:"🏆 Best Strategy"}),(0,a.jsx)("span",{className:"dm-st3d-winner3d__name",children:"EV Aware"}),(0,a.jsxs)("span",{className:"dm-st3d-winner3d__row",children:[(0,a.jsx)("b",{children:"88%"})," Performance Score"]}),(0,a.jsxs)("span",{className:"dm-st3d-winner3d__row",children:[(0,a.jsx)("b",{children:"52/59"})," Orders Fulfilled"]})]})})]})});function n$(){let e=(0,s.useMemo)(()=>{let e=[];for(let t=0;t<nA.N;t++){let[r,,n]=(0,nA.districtPosition)(t);e.push(new d.Vector3(r,.07,n))}return new d.CatmullRomCurve3(e,!1,"catmullrom",.3)},[]),t=(0,s.useMemo)(()=>e.getPoints(110),[e]);return(0,a.jsxs)("group",{children:[(0,a.jsx)(k,{points:t,color:"#9aa6c4",lineWidth:2,transparent:!0,opacity:.5,toneMapped:!1}),[0,.33,.66].map(t=>(0,a.jsx)(nF,{curve:e,color:"#c7cee0",speed:.06,offset:t,size:.09},t))]})}function n0(){let e=-(13*(nA.N-1))/2,t=(0,s.useMemo)(()=>{let e=new d.CanvasTexture(function(){let e=document.createElement("canvas");e.width=e.height=256;let t=e.getContext("2d");t.fillStyle="#e7ebf3",t.fillRect(0,0,256,256),t.strokeStyle="#d3dae8",t.lineWidth=1.5;for(let e=0;e<=8;e++){let r=e/8*256+.5;t.beginPath(),t.moveTo(r,0),t.lineTo(r,256),t.stroke(),t.beginPath(),t.moveTo(0,r),t.lineTo(256,r),t.stroke()}return t.strokeStyle="#c0cadd",t.lineWidth=3,t.strokeRect(0,0,256,256),e}());return e.wrapS=e.wrapT=d.RepeatWrapping,e.repeat.set(52,52),e.colorSpace=d.SRGBColorSpace,e.anisotropy=4,e},[]);return(0,a.jsxs)("mesh",{rotation:[-Math.PI/2,0,0],position:[0,-.02,e],children:[(0,a.jsx)("planeGeometry",{args:[120,(nA.N+3)*13]}),(0,a.jsx)("meshStandardMaterial",{map:t,color:"#ffffff",metalness:.05,roughness:.92})]})}function n1({progress:e,reduced:t,isMobile:r,stage:n,active:i,perf:o}){let l=e=>1>=Math.abs(e-n),[c,u]=(0,s.useState)(!1);(0,s.useEffect)(()=>{i&&u(!0)},[i]);let d=c&&!t&&!r;return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("color",{attach:"background",args:[np]}),(0,a.jsx)("fog",{attach:"fog",args:[np,12,40]}),(0,a.jsx)("ambientLight",{intensity:.55}),(0,a.jsx)("hemisphereLight",{args:["#ffffff","#dfe4ee",.5]}),(0,a.jsx)("directionalLight",{position:[6,12,8],intensity:.7}),(0,a.jsx)("directionalLight",{position:[-7,5,4],intensity:.22,color:"#cdd6ff"}),(0,a.jsxs)(nc,{resolution:64,frames:1,children:[(0,a.jsx)(nu,{intensity:.5,position:[0,6,-3],scale:[12,6,1]}),(0,a.jsx)(nu,{intensity:.3,position:[-6,3,4],scale:[6,6,1],color:"#dfe6ff"}),(0,a.jsx)(nu,{intensity:.3,position:[6,2,2],scale:[5,5,1],color:"#ffffff"})]}),(0,a.jsx)(nM,{progress:e,reduced:t,isMobile:r}),(0,a.jsx)(n0,{}),(0,a.jsx)(n$,{}),(0,a.jsx)(nP,{i:0,progress:e,reduced:t,awake:l(0),focused:0===n}),(0,a.jsx)(nO,{i:1,progress:e,reduced:t,awake:l(1),focused:1===n}),(0,a.jsx)(nY,{i:2,progress:e,reduced:t,awake:l(2),focused:2===n}),(0,a.jsx)(nz,{i:3,progress:e,awake:l(3),focused:3===n}),(0,a.jsx)(nq,{i:4,progress:e,reduced:t,isMobile:r,awake:l(4),focused:4===n}),d&&(0,a.jsx)(Z,{count:16,scale:[18,7,13*nA.N],position:[0,3,-(13*(nA.N-1))/2],size:2,speed:.22,opacity:.35,color:"#9aa6c4"}),d&&(0,a.jsx)(nh.EffectComposer,{multisampling:0,children:(0,a.jsx)(nh.Bloom,{mipmapBlur:!0,intensity:.7,luminanceThreshold:.74,luminanceSmoothing:.06,radius:.68,kernelSize:nf.KernelSize.SMALL})}),(0,a.jsx)(nd,{all:!0}),o&&(0,a.jsx)(ny,{})]})}e.s(["default",0,function({progress:e,reduced:t=!1,isMobile:r=!1,active:n=!0,stage:i=0}){let s=new URLSearchParams(window.location.search).has("perf");return(0,a.jsx)(o.Canvas,{dpr:[1,r?1:1.25],camera:{position:[0,4,8.2],fov:50,near:.1,far:120},gl:{antialias:!1,powerPreference:"high-performance",alpha:!1},frameloop:n?"always":"never",children:(0,a.jsx)(n1,{progress:e,reduced:t,isMobile:r,stage:i,active:n,perf:s})})}],1517)},20927,e=>{e.n(e.i(1517))}]);